From xen-devel-bounces@lists.xensource.com Wed Feb 01 06:29:13 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Feb 2012 06:29:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RsTgR-0004Dl-PE; Wed, 01 Feb 2012 06:28:43 +0000
Received: from mail182.messagelabs.com ([85.158.139.83])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <aware.why@gmail.com>) id 1RsTgP-0004Dg-OL
	for xen-devel@lists.xensource.com; Wed, 01 Feb 2012 06:28:42 +0000
X-Env-Sender: aware.why@gmail.com
X-Msg-Ref: server-3.tower-182.messagelabs.com!1328077710!13220028!1
X-Originating-IP: [209.85.216.171]
X-SpamReason: No, hits=0.9 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_30_40, HTML_MESSAGE, ML_RADAR_SPEW_LINKS_14, RCVD_BY_IP,
	spamassassin: 
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10465 invoked from network); 1 Feb 2012 06:28:32 -0000
Received: from mail-qy0-f171.google.com (HELO mail-qy0-f171.google.com)
	(209.85.216.171)
	by server-3.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	1 Feb 2012 06:28:32 -0000
Received: by qcsp15 with SMTP id p15so3473091qcs.30
	for <xen-devel@lists.xensource.com>;
	Tue, 31 Jan 2012 22:28:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:content-type; bh=8CTOwH0dkjgYtIdUEYzCpxP+IAFnckfVwJjQM4ku4f8=;
	b=E4ueHTjGdOpjcupWRv9dc9qz6YpzZUki07vepOdR/Exl8v4+AX3392BoqoFespA0IK
	qa5nC5BtYa40PK7zl7aOw5LsVBqevD9GMBcfLBqUyePHO5BtCcT9XF9arwOblVKVvx+K
	GCSiYbi6mpWKeIbHEh2CiRD4llXMUoCIAz6E8=
MIME-Version: 1.0
Received: by 10.224.179.137 with SMTP id bq9mr30929997qab.53.1328077709692;
	Tue, 31 Jan 2012 22:28:29 -0800 (PST)
Received: by 10.229.239.149 with HTTP; Tue, 31 Jan 2012 22:28:29 -0800 (PST)
In-Reply-To: <mailman.2163.1328075559.1471.xen-devel@lists.xensource.com>
References: <mailman.2163.1328075559.1471.xen-devel@lists.xensource.com>
Date: Wed, 1 Feb 2012 14:28:29 +0800
Message-ID: <CA+ePHTCggCq4tQbCtt6LUgFU-7NSVDHk+JQMRwO=ykbxGuLK6A@mail.gmail.com>
From: =?UTF-8?B?6ams56OK?= <aware.why@gmail.com>
To: xen-devel@lists.xensource.com
Subject: Re: [Xen-devel] Xen-devel Digest, Vol 84, Issue 4
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============3167636507460871122=="
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

--===============3167636507460871122==
Content-Type: multipart/alternative; boundary=20cf30363f4b1ecd2e04b7e1308d

--20cf30363f4b1ecd2e04b7e1308d
Content-Type: text/plain; charset=ISO-8859-1

On Wed, Feb 1, 2012 at 1:52 PM, <xen-devel-request@lists.xensource.com>wrote:

> Send Xen-devel mailing list submissions to
>        xen-devel@lists.xensource.com
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://lists.xensource.com/mailman/listinfo/xen-devel
> or, via email, send a message with subject or body 'help' to
>        xen-devel-request@lists.xensource.com
>
> You can reach the person managing the list at
>        xen-devel-owner@lists.xensource.com
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Xen-devel digest..."
>
> Today's Topics:
>
>   1. [PATCH 0 of 2 V2] libxl - Remus support (rshriram@cs.ubc.ca)
>   2. [PATCH 1 of 2 V2] libxl: Remus -  suspend/postflush/commit
>      callbacks (rshriram@cs.ubc.ca)
>   3. [PATCH 2 of 2 V2] libxl: Remus - xl remus command
>      (rshriram@cs.ubc.ca)
>   4. [linux test] 11749: regressions - FAIL (xen.org)
>
>
> ---------- Forwarded message ----------
> From: rshriram@cs.ubc.ca
> To: xen-devel@lists.xensource.com
> Cc: brendan@cs.ubc.ca, ian.jackson@eu.citrix.com, ian.campbell@citrix.com
> Date: Tue, 31 Jan 2012 20:44:11 -0800
> Subject: [Xen-devel] [PATCH 0 of 2 V2] libxl - Remus support
> This patch series introduces a basic framework to
> incorporate Remus into the libxl toolstack. The only functionality
> currently implemented is memory checkpointing.
>
> These patches depend on Version 2 of
> "libxl: refactor suspend/resume code" patch series.
>
> Changes since previous version:
>  * Move libxl_domain_remus_start into the save_callbacks implementation
> patch
>  * return proper error codes instead of -1.
>  * Add documentation to docs/man/xl.pod.1
>
> Shriram
>
> test for replying to the sender. Sorry for any trouble with you.
>
>
>
> ---------- Forwarded message ----------
> From: rshriram@cs.ubc.ca
> To: xen-devel@lists.xensource.com
> Cc: brendan@cs.ubc.ca, ian.jackson@eu.citrix.com, ian.campbell@citrix.com
> Date: Tue, 31 Jan 2012 20:44:12 -0800
> Subject: [Xen-devel] [PATCH 1 of 2 V2] libxl: Remus -
> suspend/postflush/commit callbacks
> # HG changeset patch
> # User Shriram Rajagopalan <rshriram@cs.ubc.ca>
> # Date 1328070814 28800
> # Node ID 2aa138177f5ef6aa44e6136dd1913441c99aa4b5
> # Parent  545f88c2bc73b063a5d0e7adbd95baed4d93790f
> libxl: Remus - suspend/postflush/commit callbacks
>
>  * Add libxl callback functions for Remus checkpoint suspend, postflush
>   (aka resume) and checkpoint commit callbacks.
>  * suspend callback is a stub that just bounces off
>   libxl__domain_suspend_common_callback - which suspends the domain and
>   saves the devices model state to a file.
>  * resume callback currently just resumes the domain (and the device
> model).
>  * commit callback just writes out the saved device model state to the
>   network and sleeps for the checkpoint interval.
>  * Introduce a new public API, libxl_domain_remus_start (currently a stub)
>   that sets up the network and disk buffer and initiates continuous
>   checkpointing.
>
>  * Future patches will augument these callbacks/functions with more
> functionalities
>   like issuing network buffer plug/unplug commands, disk checkpoint
> commands, etc.
>
> Signed-off-by: Shriram Rajagopalan <rshriram@cs.ubc.ca>
>
> diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c       Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/libxl.c       Tue Jan 31 20:33:34 2012 -0800
> @@ -480,6 +480,41 @@ libxl_vminfo * libxl_list_vm(libxl_ctx *
>     return ptr;
>  }
>
> +/* TODO: Explicit Checkpoint acknowledgements via recv_fd. */
> +int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info
> *info,
> +                             uint32_t domid, int send_fd, int recv_fd)
> +{
> +    GC_INIT(ctx);
> +    libxl_domain_type type = libxl__domain_type(gc, domid);
> +    int rc = 0;
> +
> +    if (info == NULL) {
> +        LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
> +                   "No remus_info structure supplied for domain %d",
> domid);
> +        rc = ERROR_INVAL;
> +        goto remus_fail;
> +    }
> +
> +    /* TBD: Remus setup - i.e. attach qdisc, enable disk buffering, etc */
> +
> +    /* Point of no return */
> +    rc = libxl__domain_suspend_common(gc, domid, send_fd, type, /* live
> */ 1,
> +                                      /* debug */ 0, info);
> +
> +    /*
> +     * With Remus, if we reach this point, it means either
> +     * backup died or some network error occurred preventing us
> +     * from sending checkpoints.
> +     */
> +
> +    /* TBD: Remus cleanup - i.e. detach qdisc, release other
> +     * resources.
> +     */
> + remus_fail:
> +    GC_FREE;
> +    return rc;
> +}
> +
>  int libxl_domain_suspend(libxl_ctx *ctx, libxl_domain_suspend_info *info,
>                          uint32_t domid, int fd)
>  {
> @@ -489,7 +524,9 @@ int libxl_domain_suspend(libxl_ctx *ctx,
>     int debug = info != NULL && info->flags & XL_SUSPEND_DEBUG;
>     int rc = 0;
>
> -    rc = libxl__domain_suspend_common(gc, domid, fd, type, live, debug);
> +    rc = libxl__domain_suspend_common(gc, domid, fd, type, live, debug,
> +                                      /* No Remus */ NULL);
> +
>     if (!rc && type == LIBXL_DOMAIN_TYPE_HVM)
>         rc = libxl__domain_save_device_model(gc, domid, fd);
>     GC_FREE;
> diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl.h
> --- a/tools/libxl/libxl.h       Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/libxl.h       Tue Jan 31 20:33:34 2012 -0800
> @@ -266,6 +266,8 @@ typedef int (*libxl_console_ready)(libxl
>  int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config
> *d_config, libxl_console_ready cb, void *priv, uint32_t *domid);
>  int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config
> *d_config, libxl_console_ready cb, void *priv, uint32_t *domid, int
> restore_fd);
>  void libxl_domain_config_dispose(libxl_domain_config *d_config);
> +int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info
> *info,
> +                             uint32_t domid, int send_fd, int recv_fd);
>  int libxl_domain_suspend(libxl_ctx *ctx, libxl_domain_suspend_info *info,
>                           uint32_t domid, int fd);
>  int libxl_domain_resume(libxl_ctx *ctx, uint32_t domid, int
> suspend_cancel);
> diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl_dom.c
> --- a/tools/libxl/libxl_dom.c   Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/libxl_dom.c   Tue Jan 31 20:33:34 2012 -0800
> @@ -404,6 +404,8 @@ struct suspendinfo {
>     int hvm;
>     unsigned int flags;
>     int guest_responded;
> +    int save_fd; /* Migration stream fd (for Remus) */
> +    int interval; /* checkpoint interval (for Remus) */
>  };
>
>  static int libxl__domain_suspend_common_switch_qemu_logdirty(int domid,
> unsigned int enable, void *data)
> @@ -609,9 +611,43 @@ static int libxl__domain_suspend_common_
>     return 1;
>  }
>
> +static int libxl__remus_domain_suspend_callback(void *data)
> +{
> +    /* TODO: Issue disk and network checkpoint reqs. */
> +    return libxl__domain_suspend_common_callback(data);
> +}
> +
> +static int libxl__remus_domain_resume_callback(void *data)
> +{
> +    struct suspendinfo *si = data;
> +    libxl_ctx *ctx = libxl__gc_owner(si->gc);
> +
> +    /* Resumes the domain and the device model */
> +    if (libxl_domain_resume(ctx, si->domid, /* Fast Suspend */1))
> +        return 0;
> +
> +    /* TODO: Deal with disk. Start a new network output buffer */
> +    return 1;
> +}
> +
> +static int libxl__remus_domain_checkpoint_callback(void *data)
> +{
> +    struct suspendinfo *si = data;
> +
> +    /* This would go into tailbuf. */
> +    if (si->hvm &&
> +        libxl__domain_save_device_model(si->gc, si->domid, si->save_fd))
> +        return 0;
> +
> +    /* TODO: Wait for disk and memory ack, release network buffer */
> +    usleep(si->interval * 1000);
> +    return 1;
> +}
> +
>  int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, int fd,
>                                  libxl_domain_type type,
> -                                 int live, int debug)
> +                                 int live, int debug,
> +                                 const libxl_domain_remus_info *r_info)
>  {
>     libxl_ctx *ctx = libxl__gc_owner(gc);
>     int flags;
> @@ -642,10 +678,20 @@ int libxl__domain_suspend_common(libxl__
>         return ERROR_INVAL;
>     }
>
> +    memset(&si, 0, sizeof(si));
>     flags = (live) ? XCFLAGS_LIVE : 0
>           | (debug) ? XCFLAGS_DEBUG : 0
>           | (hvm) ? XCFLAGS_HVM : 0;
>
> +    if (r_info != NULL) {
> +        si.interval = r_info->interval;
> +        if (r_info->compression)
> +            flags |= XCFLAGS_CHECKPOINT_COMPRESS;
> +        si.save_fd = fd;
> +    }
> +    else
> +        si.save_fd = -1;
> +
>     si.domid = domid;
>     si.flags = flags;
>     si.hvm = hvm;
> @@ -669,7 +715,27 @@ int libxl__domain_suspend_common(libxl__
>     }
>
>     memset(&callbacks, 0, sizeof(callbacks));
> -    callbacks.suspend = libxl__domain_suspend_common_callback;
> +    if (r_info != NULL) {
> +        /* save_callbacks:
> +         * suspend - called after expiration of checkpoint interval,
> +         *           to *suspend* the domain.
> +         *
> +         * postcopy - called after the domain's dirty pages have been
> +         *            copied into an output buffer. We *resume* the domain
> +         *            & the device model, return to the caller. Caller
> then
> +         *            flushes the output buffer, while the domain
> continues to run.
> +         *
> +         * checkpoint - called after the memory checkpoint has been
> flushed out
> +         *              into the network. Send the saved device state,
> *wait*
> +         *              for checkpoint ack and *release* the network
> buffer (TBD).
> +         *              Then *sleep* for the checkpoint interval.
> +         */
> +        callbacks.suspend = libxl__remus_domain_suspend_callback;
> +        callbacks.postcopy = libxl__remus_domain_resume_callback;
> +        callbacks.checkpoint = libxl__remus_domain_checkpoint_callback;
> +    } else
> +        callbacks.suspend = libxl__domain_suspend_common_callback;
> +
>     callbacks.switch_qemu_logdirty =
> libxl__domain_suspend_common_switch_qemu_logdirty;
>     callbacks.data = &si;
>
> diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl_internal.h
> --- a/tools/libxl/libxl_internal.h      Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/libxl_internal.h      Tue Jan 31 20:33:34 2012 -0800
> @@ -275,7 +275,8 @@ _hidden int libxl__domain_restore_common
>                                          int fd);
>  _hidden int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid,
> int fd,
>                                          libxl_domain_type type,
> -                                         int live, int debug);
> +                                         int live, int debug,
> +                                         const libxl_domain_remus_info
> *r_info);
>  _hidden const char *libxl__device_model_savefile(libxl__gc *gc, uint32_t
> domid);
>  _hidden int libxl__domain_suspend_device_model(libxl__gc *gc, uint32_t
> domid);
>  _hidden int libxl__domain_resume_device_model(libxl__gc *gc, uint32_t
> domid);
> diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl_types.idl
> --- a/tools/libxl/libxl_types.idl       Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/libxl_types.idl       Tue Jan 31 20:33:34 2012 -0800
> @@ -397,3 +397,9 @@ libxl_sched_sedf = Struct("sched_sedf",
>     ("extratime", integer),
>     ("weight", integer),
>     ], dispose_fn=None)
> +
> +libxl_domain_remus_info = Struct("domain_remus_info",[
> +    ("interval",     integer),
> +    ("blackhole",    bool),
> +    ("compression",  bool),
> +    ])
>
>
>
>
> ---------- Forwarded message ----------
> From: rshriram@cs.ubc.ca
> To: xen-devel@lists.xensource.com
> Cc: brendan@cs.ubc.ca, ian.jackson@eu.citrix.com, ian.campbell@citrix.com
> Date: Tue, 31 Jan 2012 20:44:13 -0800
> Subject: [Xen-devel] [PATCH 2 of 2 V2] libxl: Remus - xl remus command
> # HG changeset patch
> # User Shriram Rajagopalan <rshriram@cs.ubc.ca>
> # Date 1328070814 28800
> # Node ID cf47997255f4a895ce6a9f0f3cd7fc3eaa0b42ba
> # Parent  2aa138177f5ef6aa44e6136dd1913441c99aa4b5
> libxl: Remus - xl remus command
>
> xl remus acts as a frontend to enable remus for a given domain.
>  * At the moment, only memory checkpointing and blackhole replication is
>   supported. Support for disk checkpointing and network buffering will
>   be added in future.
>  * Replication is done over ssh connection currently (like live migration
>   with xl). Future versions will have an option to use simple tcp socket
>   based replication channel (for both Remus & live migration).
>
> Signed-off-by: Shriram Rajagopalan <rshriram@cs.ubc.ca>
>
> diff -r 2aa138177f5e -r cf47997255f4 docs/man/xl.pod.1
> --- a/docs/man/xl.pod.1 Tue Jan 31 20:33:34 2012 -0800
> +++ b/docs/man/xl.pod.1 Tue Jan 31 20:33:34 2012 -0800
> @@ -348,6 +348,39 @@ Send <config> instead of config file fro
>
>  =back
>
> +=item B<remus> [I<OPTIONS>] I<domain-id> I<host>
> +
> +Enable Remus HA for domain. By default B<xl> relies on ssh as a transport
> mechanism
> +between the two hosts.
> +
> +B<OPTIONS>
> +
> +=over 4
> +
> +=item B<-i> I<MS>
> +
> +Checkpoint domain memory every MS milliseconds (default 200ms).
> +
> +=item B<-b>
> +
> +Replicate memory checkpoints to /dev/null (blackhole).
> +
> +=item B<-u>
> +
> +Disable memory checkpoint compression.
> +
> +=item B<-s> I<sshcommand>
> +
> +Use <sshcommand> instead of ssh.  String will be passed to sh. If empty,
> run
> +<host> instead of ssh <host> xl migrate-receive -r [-e].
> +
> +=item B<-e>
> +
> +On the new host, do not wait in the background (on <host>) for the death
> of the
> +domain. See the corresponding option of the I<create> subcommand.
> +
> +=back
> +
>  =item B<pause> I<domain-id>
>
>  Pause a domain.  When in a paused state the domain will still consume
> diff -r 2aa138177f5e -r cf47997255f4 tools/libxl/xl.h
> --- a/tools/libxl/xl.h  Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/xl.h  Tue Jan 31 20:33:34 2012 -0800
> @@ -94,6 +94,7 @@ int main_cpupoolnumasplit(int argc, char
>  int main_getenforce(int argc, char **argv);
>  int main_setenforce(int argc, char **argv);
>  int main_loadpolicy(int argc, char **argv);
> +int main_remus(int argc, char **argv);
>
>  void help(const char *command);
>
> diff -r 2aa138177f5e -r cf47997255f4 tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c  Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/xl_cmdimpl.c  Tue Jan 31 20:33:34 2012 -0800
> @@ -2828,7 +2828,7 @@ static void core_dump_domain(const char
>  }
>
>  static void migrate_receive(int debug, int daemonize, int monitor,
> -                            int send_fd, int recv_fd)
> +                            int send_fd, int recv_fd, int remus)
>  {
>     int rc, rc2;
>     char rc_buf;
> @@ -2863,6 +2863,41 @@ static void migrate_receive(int debug, i
>         exit(-rc);
>     }
>
> +    if (remus) {
> +        /* If we are here, it means that the sender (primary) has crashed.
> +         * TODO: Split-Brain Check.
> +         */
> +        fprintf(stderr, "migration target: Remus Failover for domain
> %u\n",
> +                domid);
> +
> +        /*
> +         * If domain renaming fails, lets just continue (as we need the
> domain
> +         * to be up & dom names may not matter much, as long as its
> reachable
> +         * over network).
> +         *
> +         * If domain unpausing fails, destroy domain ? Or is it better to
> have
> +         * a consistent copy of the domain (memory, cpu state, disk)
> +         * on atleast one physical host ? Right now, lets just leave the
> domain
> +         * as is and let the Administrator decide (or troubleshoot).
> +         */
> +        if (migration_domname) {
> +            rc = libxl_domain_rename(ctx, domid, migration_domname,
> +                                     common_domname);
> +            if (rc)
> +                fprintf(stderr, "migration target (Remus): "
> +                        "Failed to rename domain from %s to %s:%d\n",
> +                        migration_domname, common_domname, rc);
> +        }
> +
> +        rc = libxl_domain_unpause(ctx, domid);
> +        if (rc)
> +            fprintf(stderr, "migration target (Remus): "
> +                    "Failed to unpause domain %s (id: %u):%d\n",
> +                    common_domname, domid, rc);
> +
> +        exit(rc ? -ERROR_FAIL: 0);
> +    }
> +
>     fprintf(stderr, "migration target: Transfer complete,"
>             " requesting permission to start domain.\n");
>
> @@ -2989,10 +3024,10 @@ int main_restore(int argc, char **argv)
>
>  int main_migrate_receive(int argc, char **argv)
>  {
> -    int debug = 0, daemonize = 1, monitor = 1;
> +    int debug = 0, daemonize = 1, monitor = 1, remus = 0;
>     int opt;
>
> -    while ((opt = def_getopt(argc, argv, "Fed", "migrate-receive", 0)) !=
> -1) {
> +    while ((opt = def_getopt(argc, argv, "Fedr", "migrate-receive", 0))
> != -1) {
>         switch (opt) {
>         case 0: case 2:
>             return opt;
> @@ -3006,6 +3041,9 @@ int main_migrate_receive(int argc, char
>         case 'd':
>             debug = 1;
>             break;
> +        case 'r':
> +            remus = 1;
> +            break;
>         }
>     }
>
> @@ -3014,7 +3052,8 @@ int main_migrate_receive(int argc, char
>         return 2;
>     }
>     migrate_receive(debug, daemonize, monitor,
> -                    STDOUT_FILENO, STDIN_FILENO);
> +                    STDOUT_FILENO, STDIN_FILENO,
> +                    remus);
>
>     return 0;
>  }
> @@ -5951,6 +5990,106 @@ done:
>     return ret;
>  }
>
> +int main_remus(int argc, char **argv)
> +{
> +    int opt, rc, daemonize = 1;
> +    const char *ssh_command = "ssh";
> +    char *host = NULL, *rune = NULL, *domain = NULL;
> +    libxl_domain_remus_info r_info;
> +    int send_fd = -1, recv_fd = -1;
> +    pid_t child = -1;
> +    uint8_t *config_data;
> +    int config_len;
> +
> +    memset(&r_info, 0, sizeof(libxl_domain_remus_info));
> +    /* Defaults */
> +    r_info.interval = 200;
> +    r_info.blackhole = 0;
> +    r_info.compression = 1;
> +
> +    while ((opt = def_getopt(argc, argv, "bui:s:e", "remus", 2)) != -1) {
> +        switch (opt) {
> +        case 0: case 2:
> +            return opt;
> +
> +        case 'i':
> +           r_info.interval = atoi(optarg);
> +            break;
> +        case 'b':
> +            r_info.blackhole = 1;
> +            break;
> +        case 'u':
> +           r_info.compression = 0;
> +            break;
> +        case 's':
> +            ssh_command = optarg;
> +            break;
> +        case 'e':
> +            daemonize = 0;
> +            break;
> +        }
> +    }
> +
> +    domain = argv[optind];
> +    host = argv[optind + 1];
> +
> +    if (r_info.blackhole) {
> +        find_domain(domain);
> +        send_fd = open("/dev/null", O_RDWR, 0644);
> +        if (send_fd < 0) {
> +            perror("failed to open /dev/null");
> +            exit(-1);
> +        }
> +    } else {
> +
> +        /*
> +         * TODO: change this to plain TCP socket based channel
> +         * instead of SSH. For both live-migration and Remus.
> +         */
> +        if (!ssh_command[0]) {
> +            rune = host;
> +        } else {
> +            if (asprintf(&rune, "exec %s %s xl migrate-receive -r %s",
> +                         ssh_command, host,
> +                         daemonize ? "" : " -e") < 0)
> +                return 1;
> +        }
> +
> +        save_domain_core_begin(domain, NULL, &config_data, &config_len);
> +
> +        if (!config_len) {
> +            fprintf(stderr, "No config file stored for running domain and
> "
> +                    "none supplied - cannot start remus.\n");
> +            exit(1);
> +        }
> +
> +        child = create_migration_child(rune, &send_fd, &recv_fd);
> +
> +        migrate_do_preamble(send_fd, recv_fd, child, config_data,
> config_len,
> +                            rune);
> +    }
> +
> +    /* Point of no return */
> +    rc = libxl_domain_remus_start(ctx, &r_info, domid, send_fd, recv_fd);
> +
> +    /* If we are here, it means backup has failed/domain suspend failed.
> +     * Try to resume the domain and exit gracefully.
> +     * TODO: Split-Brain check.
> +     */
> +    fprintf(stderr, "remus sender: libxl_domain_suspend failed"
> +            " (rc=%d)\n", rc);
> +
> +    if (rc == ERROR_GUEST_TIMEDOUT)
> +        fprintf(stderr, "Failed to suspend domain at primary.\n");
> +    else {
> +        fprintf(stderr, "Remus: Backup failed? resuming domain at
> primary.\n");
> +        libxl_domain_resume(ctx, domid, 1);
> +    }
> +
> +    close(send_fd);
> +    return -ERROR_FAIL;
> +}
> +
>  /*
>  * Local variables:
>  * mode: C
> diff -r 2aa138177f5e -r cf47997255f4 tools/libxl/xl_cmdtable.c
> --- a/tools/libxl/xl_cmdtable.c Tue Jan 31 20:33:34 2012 -0800
> +++ b/tools/libxl/xl_cmdtable.c Tue Jan 31 20:33:34 2012 -0800
> @@ -412,6 +412,20 @@ struct cmd_spec cmd_table[] = {
>       "Loads a new policy int the Flask Xen security module",
>       "<policy file>",
>     },
> +    { "remus",
> +      &main_remus, 0,
> +      "Enable Remus HA for domain",
> +      "[options] <Domain> [<host>]",
> +      "-i MS                   Checkpoint domain memory every MS
> milliseconds (def. 200ms).\n"
> +      "-b                      Replicate memory checkpoints to /dev/null
> (blackhole)\n"
> +      "-u                      Disable memory checkpoint compression.\n"
> +      "-s <sshcommand>         Use <sshcommand> instead of ssh.  String
> will be passed\n"
> +      "                        to sh. If empty, run <host> instead of \n"
> +      "                        ssh <host> xl migrate-receive -r [-e]\n"
> +      "-e                      Do not wait in the background (on <host>)
> for the death\n"
> +      "                        of the domain."
> +
> +    },
>  };
>
>  int cmdtable_len = sizeof(cmd_table)/sizeof(struct cmd_spec);
>
>
>
>
> ---------- Forwarded message ----------
> From: xen.org <ian.jackson@eu.citrix.com>
> To: xen-devel@lists.xensource.com
> Cc: ian.jackson@eu.citrix.com
> Date: Wed, 1 Feb 2012 05:52:30 +0000
> Subject: [Xen-devel] [linux test] 11749: regressions - FAIL
> flight 11749 linux real [real]
> http://www.chiark.greenend.org.uk/~xensrcts/logs/11749/
>
> Regressions :-(
>
> Tests which did not succeed and are blocking,
> including tests which could not be run:
>  test-amd64-i386-xl-credit2    7 debian-install            fail REGR. vs.
> 10764
>
> Regressions which are regarded as allowable (not blocking):
>  test-i386-i386-win           14 guest-start.2            fail blocked in
> 10764
>
> Tests which did not succeed, but are not blocking:
>  test-amd64-i386-rhel6hvm-amd 11 leak-check/check             fail   never
> pass
>  test-amd64-i386-rhel6hvm-intel 11 leak-check/check             fail never
> pass
>  test-amd64-i386-xl-win-vcpus1 13 guest-stop                   fail  never
> pass
>  test-amd64-i386-win          16 leak-check/check             fail   never
> pass
>  test-amd64-i386-xl-win7-amd64 13 guest-stop                   fail  never
> pass
>  test-amd64-i386-win-vcpus1   16 leak-check/check             fail   never
> pass
>  test-i386-i386-xl-winxpsp3   13 guest-stop                   fail   never
> pass
>  test-amd64-i386-xl-winxpsp3-vcpus1 13 guest-stop               fail never
> pass
>  test-amd64-amd64-xl-winxpsp3 13 guest-stop                   fail   never
> pass
>  test-amd64-amd64-xl-win      13 guest-stop                   fail   never
> pass
>  test-amd64-i386-xend-winxpsp3 16 leak-check/check             fail  never
> pass
>  test-amd64-amd64-win         16 leak-check/check             fail   never
> pass
>  test-amd64-amd64-xl-pcipt-intel  9 guest-start                 fail never
> pass
>  test-amd64-amd64-xl-win7-amd64 13 guest-stop                   fail never
> pass
>  test-i386-i386-xl-win        13 guest-stop                   fail   never
> pass
>
> version targeted for testing:
>  linux                1aaf53ee291d9e71d6ec05c0ebdb2854fea175ad
> baseline version:
>  linux                8664c694e49d4d095706524a27b1fc734b9881ce
>
> ------------------------------------------------------------
> People who touched revisions under test:
> ------------------------------------------------------------
>
> jobs:
>  build-amd64                                                  pass
>  build-i386                                                   pass
>  build-amd64-pvops                                            pass
>  build-i386-pvops                                             pass
>  test-amd64-amd64-xl                                          pass
>  test-amd64-i386-xl                                           pass
>  test-i386-i386-xl                                            pass
>  test-amd64-i386-rhel6hvm-amd                                 fail
>  test-amd64-amd64-xl-win7-amd64                               fail
>  test-amd64-i386-xl-win7-amd64                                fail
>  test-amd64-i386-xl-credit2                                   fail
>  test-amd64-amd64-xl-pcipt-intel                              fail
>  test-amd64-i386-rhel6hvm-intel                               fail
>  test-amd64-i386-xl-multivcpu                                 pass
>  test-amd64-amd64-pair                                        pass
>  test-amd64-i386-pair                                         pass
>  test-i386-i386-pair                                          pass
>  test-amd64-amd64-xl-sedf-pin                                 pass
>  test-amd64-amd64-pv                                          pass
>  test-amd64-i386-pv                                           pass
>  test-i386-i386-pv                                            pass
>  test-amd64-amd64-xl-sedf                                     pass
>  test-amd64-i386-win-vcpus1                                   fail
>  test-amd64-i386-xl-win-vcpus1                                fail
>  test-amd64-i386-xl-winxpsp3-vcpus1                           fail
>  test-amd64-amd64-win                                         fail
>  test-amd64-i386-win                                          fail
>  test-i386-i386-win                                           fail
>  test-amd64-amd64-xl-win                                      fail
>  test-i386-i386-xl-win                                        fail
>  test-amd64-i386-xend-winxpsp3                                fail
>  test-amd64-amd64-xl-winxpsp3                                 fail
>  test-i386-i386-xl-winxpsp3                                   fail
>
>
> ------------------------------------------------------------
> sg-report-flight on woking.cam.xci-test.com
> logs: /home/xc_osstest/logs
> images: /home/xc_osstest/images
>
> Logs, config files, etc. are available at
>    http://www.chiark.greenend.org.uk/~xensrcts/logs
>
> Test harness code can be found at
>    http://xenbits.xensource.com/gitweb?p=osstest.git;a=summary
>
>
> Not pushing.
>
> ------------------------------------------------------------
> commit 1aaf53ee291d9e71d6ec05c0ebdb2854fea175ad
> Merge: 8664c69... b16a92f...
> Author: Jeremy Fitzhardinge <jeremy@goop.org>
> Date:   Thu Jan 26 13:19:51 2012 -0800
>
>    Merge commit 'v2.6.32.55' into xen/next-2.6.32
>
>    * commit 'v2.6.32.55': (28 commits)
>      Linux 2.6.32.55
>      kprobes: initialize before using a hlist
>      score: fix off-by-one index into syscall table
>      sym53c8xx: Fix NULL pointer dereference in slave_destroy
>      ALSA: HDA: Fix internal microphone on Dell Studio 16 XPS 1645
>      kernel.h: add printk_ratelimited and pr_<level>_rl
>      block: add and use scsi_blk_cmd_ioctl
>      USB: Fix 'bad dma' problem on WDM device disconnect
>      fix cputime overflow in uptime_proc_show
>      USB: cdc-wdm: fix misuse of logical operation in place of bitop
>      nfsd: Fix oops when parsing a 0 length export
>      svcrpc: destroy server sockets all at once
>      svcrpc: fix double-free on shutdown of nfsd after changing pool mode
>      V4L/DVB: v4l2-ioctl: integer overflow in video_usercopy()
>      i2c: Fix error value returned by several bus drivers
>      UBI: fix nameless volumes handling
>      x86: Fix mmap random address range
>      PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that breaks USB
>      ima: free duplicate measurement memory
>      xen/xenbus: Reject replies with payload > XENSTORE_PAYLOAD_MAX.
>      ...
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
>

--20cf30363f4b1ecd2e04b7e1308d
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<br><br><div class=3D"gmail_quote">On Wed, Feb 1, 2012 at 1:52 PM,  <span d=
ir=3D"ltr">&lt;<a href=3D"mailto:xen-devel-request@lists.xensource.com">xen=
-devel-request@lists.xensource.com</a>&gt;</span> wrote:<br><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pa=
dding-left:1ex">
Send Xen-devel mailing list submissions to<br>
 =A0 =A0 =A0 =A0<a href=3D"mailto:xen-devel@lists.xensource.com">xen-devel@=
lists.xensource.com</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
 =A0 =A0 =A0 =A0<a href=3D"http://lists.xensource.com/mailman/listinfo/xen-=
devel" target=3D"_blank">http://lists.xensource.com/mailman/listinfo/xen-de=
vel</a><br>
or, via email, send a message with subject or body &#39;help&#39; to<br>
 =A0 =A0 =A0 =A0<a href=3D"mailto:xen-devel-request@lists.xensource.com">xe=
n-devel-request@lists.xensource.com</a><br>
<br>
You can reach the person managing the list at<br>
 =A0 =A0 =A0 =A0<a href=3D"mailto:xen-devel-owner@lists.xensource.com">xen-=
devel-owner@lists.xensource.com</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of Xen-devel digest...&quot;<br>
<br>Today&#39;s Topics:<br>
<br>
 =A0 1. [PATCH 0 of 2 V2] libxl - Remus support (<a href=3D"mailto:rshriram=
@cs.ubc.ca">rshriram@cs.ubc.ca</a>)<br>
 =A0 2. [PATCH 1 of 2 V2] libxl: Remus - =A0suspend/postflush/commit<br>
 =A0 =A0 =A0callbacks (<a href=3D"mailto:rshriram@cs.ubc.ca">rshriram@cs.ub=
c.ca</a>)<br>
 =A0 3. [PATCH 2 of 2 V2] libxl: Remus - xl remus command<br>
 =A0 =A0 =A0(<a href=3D"mailto:rshriram@cs.ubc.ca">rshriram@cs.ubc.ca</a>)<=
br>
 =A0 4. [linux test] 11749: regressions - FAIL (<a href=3D"http://xen.org" =
target=3D"_blank">xen.org</a>)<br>
<br><br>---------- Forwarded message ----------<br>From:=A0<a href=3D"mailt=
o:rshriram@cs.ubc.ca">rshriram@cs.ubc.ca</a><br>To:=A0<a href=3D"mailto:xen=
-devel@lists.xensource.com">xen-devel@lists.xensource.com</a><br>Cc:=A0<a h=
ref=3D"mailto:brendan@cs.ubc.ca">brendan@cs.ubc.ca</a>, <a href=3D"mailto:i=
an.jackson@eu.citrix.com">ian.jackson@eu.citrix.com</a>, <a href=3D"mailto:=
ian.campbell@citrix.com">ian.campbell@citrix.com</a><br>
Date:=A0Tue, 31 Jan 2012 20:44:11 -0800<br>Subject:=A0[Xen-devel] [PATCH 0 =
of 2 V2] libxl - Remus support<br>This patch series introduces a basic fram=
ework to<br>
incorporate Remus into the libxl toolstack. The only functionality<br>
currently implemented is memory checkpointing.<br>
<br>
These patches depend on Version 2 of<br>
&quot;libxl: refactor suspend/resume code&quot; patch series.<br>
<br>
Changes since previous version:<br>
=A0* Move libxl_domain_remus_start into the save_callbacks implementation p=
atch<br>
=A0* return proper error codes instead of -1.<br>
=A0* Add documentation to docs/man/xl.pod.1<br>
<br>
Shriram<br>
<br>
test for replying to the sender. Sorry for any trouble with you.<br>
<br>
<br><br>---------- Forwarded message ----------<br>From:=A0<a href=3D"mailt=
o:rshriram@cs.ubc.ca">rshriram@cs.ubc.ca</a><br>To:=A0<a href=3D"mailto:xen=
-devel@lists.xensource.com">xen-devel@lists.xensource.com</a><br>Cc:=A0<a h=
ref=3D"mailto:brendan@cs.ubc.ca">brendan@cs.ubc.ca</a>, <a href=3D"mailto:i=
an.jackson@eu.citrix.com">ian.jackson@eu.citrix.com</a>, <a href=3D"mailto:=
ian.campbell@citrix.com">ian.campbell@citrix.com</a><br>
Date:=A0Tue, 31 Jan 2012 20:44:12 -0800<br>Subject:=A0[Xen-devel] [PATCH 1 =
of 2 V2] libxl: Remus - suspend/postflush/commit callbacks<br># HG changese=
t patch<br>
# User Shriram Rajagopalan &lt;<a href=3D"mailto:rshriram@cs.ubc.ca">rshrir=
am@cs.ubc.ca</a>&gt;<br>
# Date 1328070814 28800<br>
# Node ID 2aa138177f5ef6aa44e6136dd1913441c99aa4b5<br>
# Parent =A0545f88c2bc73b063a5d0e7adbd95baed4d93790f<br>
libxl: Remus - suspend/postflush/commit callbacks<br>
<br>
=A0* Add libxl callback functions for Remus checkpoint suspend, postflush<b=
r>
 =A0 (aka resume) and checkpoint commit callbacks.<br>
=A0* suspend callback is a stub that just bounces off<br>
 =A0 libxl__domain_suspend_common_callback - which suspends the domain and<=
br>
 =A0 saves the devices model state to a file.<br>
=A0* resume callback currently just resumes the domain (and the device mode=
l).<br>
=A0* commit callback just writes out the saved device model state to the<br=
>
 =A0 network and sleeps for the checkpoint interval.<br>
=A0* Introduce a new public API, libxl_domain_remus_start (currently a stub=
)<br>
 =A0 that sets up the network and disk buffer and initiates continuous<br>
 =A0 checkpointing.<br>
<br>
=A0* Future patches will augument these callbacks/functions with more funct=
ionalities<br>
 =A0 like issuing network buffer plug/unplug commands, disk checkpoint comm=
ands, etc.<br>
<br>
Signed-off-by: Shriram Rajagopalan &lt;<a href=3D"mailto:rshriram@cs.ubc.ca=
">rshriram@cs.ubc.ca</a>&gt;<br>
<br>
diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl.c<br>
--- a/tools/libxl/libxl.c =A0 =A0 =A0 Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/tools/libxl/libxl.c =A0 =A0 =A0 Tue Jan 31 20:33:34 2012 -0800<br>
@@ -480,6 +480,41 @@ libxl_vminfo * libxl_list_vm(libxl_ctx *<br>
 =A0 =A0 return ptr;<br>
=A0}<br>
<br>
+/* TODO: Explicit Checkpoint acknowledgements via recv_fd. */<br>
+int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info=
,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 uint32_t domid, i=
nt send_fd, int recv_fd)<br>
+{<br>
+ =A0 =A0GC_INIT(ctx);<br>
+ =A0 =A0libxl_domain_type type =3D libxl__domain_type(gc, domid);<br>
+ =A0 =A0int rc =3D 0;<br>
+<br>
+ =A0 =A0if (info =3D=3D NULL) {<br>
+ =A0 =A0 =A0 =A0LIBXL__LOG(ctx, LIBXL__LOG_ERROR,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 &quot;No remus_info structure supplie=
d for domain %d&quot;, domid);<br>
+ =A0 =A0 =A0 =A0rc =3D ERROR_INVAL;<br>
+ =A0 =A0 =A0 =A0goto remus_fail;<br>
+ =A0 =A0}<br>
+<br>
+ =A0 =A0/* TBD: Remus setup - i.e. attach qdisc, enable disk buffering, et=
c */<br>
+<br>
+ =A0 =A0/* Point of no return */<br>
+ =A0 =A0rc =3D libxl__domain_suspend_common(gc, domid, send_fd, type, /* l=
ive */ 1,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0/* debug */ 0, info);<br>
+<br>
+ =A0 =A0/*<br>
+ =A0 =A0 * With Remus, if we reach this point, it means either<br>
+ =A0 =A0 * backup died or some network error occurred preventing us<br>
+ =A0 =A0 * from sending checkpoints.<br>
+ =A0 =A0 */<br>
+<br>
+ =A0 =A0/* TBD: Remus cleanup - i.e. detach qdisc, release other<br>
+ =A0 =A0 * resources.<br>
+ =A0 =A0 */<br>
+ remus_fail:<br>
+ =A0 =A0GC_FREE;<br>
+ =A0 =A0return rc;<br>
+}<br>
+<br>
=A0int libxl_domain_suspend(libxl_ctx *ctx, libxl_domain_suspend_info *info=
,<br>
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0uint32_t domid, int fd)=
<br>
=A0{<br>
@@ -489,7 +524,9 @@ int libxl_domain_suspend(libxl_ctx *ctx,<br>
 =A0 =A0 int debug =3D info !=3D NULL &amp;&amp; info-&gt;flags &amp; XL_SU=
SPEND_DEBUG;<br>
 =A0 =A0 int rc =3D 0;<br>
<br>
- =A0 =A0rc =3D libxl__domain_suspend_common(gc, domid, fd, type, live, deb=
ug);<br>
+ =A0 =A0rc =3D libxl__domain_suspend_common(gc, domid, fd, type, live, deb=
ug,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0/* No Remus */ NULL);<br>
+<br>
 =A0 =A0 if (!rc &amp;&amp; type =3D=3D LIBXL_DOMAIN_TYPE_HVM)<br>
 =A0 =A0 =A0 =A0 rc =3D libxl__domain_save_device_model(gc, domid, fd);<br>
 =A0 =A0 GC_FREE;<br>
diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl.h<br>
--- a/tools/libxl/libxl.h =A0 =A0 =A0 Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/tools/libxl/libxl.h =A0 =A0 =A0 Tue Jan 31 20:33:34 2012 -0800<br>
@@ -266,6 +266,8 @@ typedef int (*libxl_console_ready)(libxl<br>
=A0int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_confi=
g, libxl_console_ready cb, void *priv, uint32_t *domid);<br>
=A0int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_c=
onfig, libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd)=
;<br>
=A0void libxl_domain_config_dispose(libxl_domain_config *d_config);<br>
+int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info=
,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 uint32_t domid, i=
nt send_fd, int recv_fd);<br>
=A0int libxl_domain_suspend(libxl_ctx *ctx, libxl_domain_suspend_info *info=
,<br>
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 uint32_t domid, int fd=
);<br>
=A0int libxl_domain_resume(libxl_ctx *ctx, uint32_t domid, int suspend_canc=
el);<br>
diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl_dom.c<br>
--- a/tools/libxl/libxl_dom.c =A0 Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/tools/libxl/libxl_dom.c =A0 Tue Jan 31 20:33:34 2012 -0800<br>
@@ -404,6 +404,8 @@ struct suspendinfo {<br>
 =A0 =A0 int hvm;<br>
 =A0 =A0 unsigned int flags;<br>
 =A0 =A0 int guest_responded;<br>
+ =A0 =A0int save_fd; /* Migration stream fd (for Remus) */<br>
+ =A0 =A0int interval; /* checkpoint interval (for Remus) */<br>
=A0};<br>
<br>
=A0static int libxl__domain_suspend_common_switch_qemu_logdirty(int domid, =
unsigned int enable, void *data)<br>
@@ -609,9 +611,43 @@ static int libxl__domain_suspend_common_<br>
 =A0 =A0 return 1;<br>
=A0}<br>
<br>
+static int libxl__remus_domain_suspend_callback(void *data)<br>
+{<br>
+ =A0 =A0/* TODO: Issue disk and network checkpoint reqs. */<br>
+ =A0 =A0return libxl__domain_suspend_common_callback(data);<br>
+}<br>
+<br>
+static int libxl__remus_domain_resume_callback(void *data)<br>
+{<br>
+ =A0 =A0struct suspendinfo *si =3D data;<br>
+ =A0 =A0libxl_ctx *ctx =3D libxl__gc_owner(si-&gt;gc);<br>
+<br>
+ =A0 =A0/* Resumes the domain and the device model */<br>
+ =A0 =A0if (libxl_domain_resume(ctx, si-&gt;domid, /* Fast Suspend */1))<b=
r>
+ =A0 =A0 =A0 =A0return 0;<br>
+<br>
+ =A0 =A0/* TODO: Deal with disk. Start a new network output buffer */<br>
+ =A0 =A0return 1;<br>
+}<br>
+<br>
+static int libxl__remus_domain_checkpoint_callback(void *data)<br>
+{<br>
+ =A0 =A0struct suspendinfo *si =3D data;<br>
+<br>
+ =A0 =A0/* This would go into tailbuf. */<br>
+ =A0 =A0if (si-&gt;hvm &amp;&amp;<br>
+ =A0 =A0 =A0 =A0libxl__domain_save_device_model(si-&gt;gc, si-&gt;domid, s=
i-&gt;save_fd))<br>
+ =A0 =A0 =A0 =A0return 0;<br>
+<br>
+ =A0 =A0/* TODO: Wait for disk and memory ack, release network buffer */<b=
r>
+ =A0 =A0usleep(si-&gt;interval * 1000);<br>
+ =A0 =A0return 1;<br>
+}<br>
+<br>
=A0int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, int fd,<=
br>
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0libxl_d=
omain_type type,<br>
- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 int live,=
 int debug)<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 int live,=
 int debug,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 const lib=
xl_domain_remus_info *r_info)<br>
=A0{<br>
 =A0 =A0 libxl_ctx *ctx =3D libxl__gc_owner(gc);<br>
 =A0 =A0 int flags;<br>
@@ -642,10 +678,20 @@ int libxl__domain_suspend_common(libxl__<br>
 =A0 =A0 =A0 =A0 return ERROR_INVAL;<br>
 =A0 =A0 }<br>
<br>
+ =A0 =A0memset(&amp;si, 0, sizeof(si));<br>
 =A0 =A0 flags =3D (live) ? XCFLAGS_LIVE : 0<br>
 =A0 =A0 =A0 =A0 =A0 | (debug) ? XCFLAGS_DEBUG : 0<br>
 =A0 =A0 =A0 =A0 =A0 | (hvm) ? XCFLAGS_HVM : 0;<br>
<br>
+ =A0 =A0if (r_info !=3D NULL) {<br>
+ =A0 =A0 =A0 =A0si.interval =3D r_info-&gt;interval;<br>
+ =A0 =A0 =A0 =A0if (r_info-&gt;compression)<br>
+ =A0 =A0 =A0 =A0 =A0 =A0flags |=3D XCFLAGS_CHECKPOINT_COMPRESS;<br>
+ =A0 =A0 =A0 =A0si.save_fd =3D fd;<br>
+ =A0 =A0}<br>
+ =A0 =A0else<br>
+ =A0 =A0 =A0 =A0si.save_fd =3D -1;<br>
+<br>
 =A0 =A0 si.domid =3D domid;<br>
 =A0 =A0 si.flags =3D flags;<br>
 =A0 =A0 si.hvm =3D hvm;<br>
@@ -669,7 +715,27 @@ int libxl__domain_suspend_common(libxl__<br>
 =A0 =A0 }<br>
<br>
 =A0 =A0 memset(&amp;callbacks, 0, sizeof(callbacks));<br>
- =A0 =A0callbacks.suspend =3D libxl__domain_suspend_common_callback;<br>
+ =A0 =A0if (r_info !=3D NULL) {<br>
+ =A0 =A0 =A0 =A0/* save_callbacks:<br>
+ =A0 =A0 =A0 =A0 * suspend - called after expiration of checkpoint interva=
l,<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 to *suspend* the domain.<br>
+ =A0 =A0 =A0 =A0 *<br>
+ =A0 =A0 =A0 =A0 * postcopy - called after the domain&#39;s dirty pages ha=
ve been<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 =A0copied into an output buffer. We=
 *resume* the domain<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 =A0&amp; the device model, return t=
o the caller. Caller then<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 =A0flushes the output buffer, while=
 the domain continues to run.<br>
+ =A0 =A0 =A0 =A0 *<br>
+ =A0 =A0 =A0 =A0 * checkpoint - called after the memory checkpoint has bee=
n flushed out<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 =A0 =A0into the network. Send the s=
aved device state, *wait*<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 =A0 =A0for checkpoint ack and *rele=
ase* the network buffer (TBD).<br>
+ =A0 =A0 =A0 =A0 * =A0 =A0 =A0 =A0 =A0 =A0 =A0Then *sleep* for the checkpo=
int interval.<br>
+ =A0 =A0 =A0 =A0 */<br>
+ =A0 =A0 =A0 =A0callbacks.suspend =3D libxl__remus_domain_suspend_callback=
;<br>
+ =A0 =A0 =A0 =A0callbacks.postcopy =3D libxl__remus_domain_resume_callback=
;<br>
+ =A0 =A0 =A0 =A0callbacks.checkpoint =3D libxl__remus_domain_checkpoint_ca=
llback;<br>
+ =A0 =A0} else<br>
+ =A0 =A0 =A0 =A0callbacks.suspend =3D libxl__domain_suspend_common_callbac=
k;<br>
+<br>
 =A0 =A0 callbacks.switch_qemu_logdirty =3D libxl__domain_suspend_common_sw=
itch_qemu_logdirty;<br>
 =A0 =A0 callbacks.data =3D &amp;si;<br>
<br>
diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl_internal.h<br>
--- a/tools/libxl/libxl_internal.h =A0 =A0 =A0Tue Jan 31 20:33:34 2012 -080=
0<br>
+++ b/tools/libxl/libxl_internal.h =A0 =A0 =A0Tue Jan 31 20:33:34 2012 -080=
0<br>
@@ -275,7 +275,8 @@ _hidden int libxl__domain_restore_common<br>
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0int fd);<br>
=A0_hidden int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, =
int fd,<br>
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0libxl_domain_type type,<br>
- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 int live, int debug);<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 int live, int debug,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 const libxl_domain_remus_info *r_info);<br>
=A0_hidden const char *libxl__device_model_savefile(libxl__gc *gc, uint32_t=
 domid);<br>
=A0_hidden int libxl__domain_suspend_device_model(libxl__gc *gc, uint32_t d=
omid);<br>
=A0_hidden int libxl__domain_resume_device_model(libxl__gc *gc, uint32_t do=
mid);<br>
diff -r 545f88c2bc73 -r 2aa138177f5e tools/libxl/libxl_types.idl<br>
--- a/tools/libxl/libxl_types.idl =A0 =A0 =A0 Tue Jan 31 20:33:34 2012 -080=
0<br>
+++ b/tools/libxl/libxl_types.idl =A0 =A0 =A0 Tue Jan 31 20:33:34 2012 -080=
0<br>
@@ -397,3 +397,9 @@ libxl_sched_sedf =3D Struct(&quot;sched_sedf&quot;,<br>
 =A0 =A0 (&quot;extratime&quot;, integer),<br>
 =A0 =A0 (&quot;weight&quot;, integer),<br>
 =A0 =A0 ], dispose_fn=3DNone)<br>
+<br>
+libxl_domain_remus_info =3D Struct(&quot;domain_remus_info&quot;,[<br>
+ =A0 =A0(&quot;interval&quot;, =A0 =A0 integer),<br>
+ =A0 =A0(&quot;blackhole&quot;, =A0 =A0bool),<br>
+ =A0 =A0(&quot;compression&quot;, =A0bool),<br>
+ =A0 =A0])<br>
<br>
<br>
<br><br>---------- Forwarded message ----------<br>From:=A0<a href=3D"mailt=
o:rshriram@cs.ubc.ca">rshriram@cs.ubc.ca</a><br>To:=A0<a href=3D"mailto:xen=
-devel@lists.xensource.com">xen-devel@lists.xensource.com</a><br>Cc:=A0<a h=
ref=3D"mailto:brendan@cs.ubc.ca">brendan@cs.ubc.ca</a>, <a href=3D"mailto:i=
an.jackson@eu.citrix.com">ian.jackson@eu.citrix.com</a>, <a href=3D"mailto:=
ian.campbell@citrix.com">ian.campbell@citrix.com</a><br>
Date:=A0Tue, 31 Jan 2012 20:44:13 -0800<br>Subject:=A0[Xen-devel] [PATCH 2 =
of 2 V2] libxl: Remus - xl remus command<br># HG changeset patch<br>
# User Shriram Rajagopalan &lt;<a href=3D"mailto:rshriram@cs.ubc.ca">rshrir=
am@cs.ubc.ca</a>&gt;<br>
# Date 1328070814 28800<br>
# Node ID cf47997255f4a895ce6a9f0f3cd7fc3eaa0b42ba<br>
# Parent =A02aa138177f5ef6aa44e6136dd1913441c99aa4b5<br>
libxl: Remus - xl remus command<br>
<br>
xl remus acts as a frontend to enable remus for a given domain.<br>
=A0* At the moment, only memory checkpointing and blackhole replication is<=
br>
 =A0 supported. Support for disk checkpointing and network buffering will<b=
r>
 =A0 be added in future.<br>
=A0* Replication is done over ssh connection currently (like live migration=
<br>
 =A0 with xl). Future versions will have an option to use simple tcp socket=
<br>
 =A0 based replication channel (for both Remus &amp; live migration).<br>
<br>
Signed-off-by: Shriram Rajagopalan &lt;<a href=3D"mailto:rshriram@cs.ubc.ca=
">rshriram@cs.ubc.ca</a>&gt;<br>
<br>
diff -r 2aa138177f5e -r cf47997255f4 docs/man/xl.pod.1<br>
--- a/docs/man/xl.pod.1 Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/docs/man/xl.pod.1 Tue Jan 31 20:33:34 2012 -0800<br>
@@ -348,6 +348,39 @@ Send &lt;config&gt; instead of config file fro<br>
<br>
=A0=3Dback<br>
<br>
+=3Ditem B&lt;remus&gt; [I&lt;OPTIONS&gt;] I&lt;domain-id&gt; I&lt;host&gt;=
<br>
+<br>
+Enable Remus HA for domain. By default B&lt;xl&gt; relies on ssh as a tran=
sport mechanism<br>
+between the two hosts.<br>
+<br>
+B&lt;OPTIONS&gt;<br>
+<br>
+=3Dover 4<br>
+<br>
+=3Ditem B&lt;-i&gt; I&lt;MS&gt;<br>
+<br>
+Checkpoint domain memory every MS milliseconds (default 200ms).<br>
+<br>
+=3Ditem B&lt;-b&gt;<br>
+<br>
+Replicate memory checkpoints to /dev/null (blackhole).<br>
+<br>
+=3Ditem B&lt;-u&gt;<br>
+<br>
+Disable memory checkpoint compression.<br>
+<br>
+=3Ditem B&lt;-s&gt; I&lt;sshcommand&gt;<br>
+<br>
+Use &lt;sshcommand&gt; instead of ssh. =A0String will be passed to sh. If =
empty, run<br>
+&lt;host&gt; instead of ssh &lt;host&gt; xl migrate-receive -r [-e].<br>
+<br>
+=3Ditem B&lt;-e&gt;<br>
+<br>
+On the new host, do not wait in the background (on &lt;host&gt;) for the d=
eath of the<br>
+domain. See the corresponding option of the I&lt;create&gt; subcommand.<br=
>
+<br>
+=3Dback<br>
+<br>
=A0=3Ditem B&lt;pause&gt; I&lt;domain-id&gt;<br>
<br>
=A0Pause a domain. =A0When in a paused state the domain will still consume<=
br>
diff -r 2aa138177f5e -r cf47997255f4 tools/libxl/xl.h<br>
--- a/tools/libxl/xl.h =A0Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/tools/libxl/xl.h =A0Tue Jan 31 20:33:34 2012 -0800<br>
@@ -94,6 +94,7 @@ int main_cpupoolnumasplit(int argc, char<br>
=A0int main_getenforce(int argc, char **argv);<br>
=A0int main_setenforce(int argc, char **argv);<br>
=A0int main_loadpolicy(int argc, char **argv);<br>
+int main_remus(int argc, char **argv);<br>
<br>
=A0void help(const char *command);<br>
<br>
diff -r 2aa138177f5e -r cf47997255f4 tools/libxl/xl_cmdimpl.c<br>
--- a/tools/libxl/xl_cmdimpl.c =A0Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/tools/libxl/xl_cmdimpl.c =A0Tue Jan 31 20:33:34 2012 -0800<br>
@@ -2828,7 +2828,7 @@ static void core_dump_domain(const char<br>
=A0}<br>
<br>
=A0static void migrate_receive(int debug, int daemonize, int monitor,<br>
- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0int send_fd, int r=
ecv_fd)<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0int send_fd, int r=
ecv_fd, int remus)<br>
=A0{<br>
 =A0 =A0 int rc, rc2;<br>
 =A0 =A0 char rc_buf;<br>
@@ -2863,6 +2863,41 @@ static void migrate_receive(int debug, i<br>
 =A0 =A0 =A0 =A0 exit(-rc);<br>
 =A0 =A0 }<br>
<br>
+ =A0 =A0if (remus) {<br>
+ =A0 =A0 =A0 =A0/* If we are here, it means that the sender (primary) has =
crashed.<br>
+ =A0 =A0 =A0 =A0 * TODO: Split-Brain Check.<br>
+ =A0 =A0 =A0 =A0 */<br>
+ =A0 =A0 =A0 =A0fprintf(stderr, &quot;migration target: Remus Failover for=
 domain %u\n&quot;,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0domid);<br>
+<br>
+ =A0 =A0 =A0 =A0/*<br>
+ =A0 =A0 =A0 =A0 * If domain renaming fails, lets just continue (as we nee=
d the domain<br>
+ =A0 =A0 =A0 =A0 * to be up &amp; dom names may not matter much, as long a=
s its reachable<br>
+ =A0 =A0 =A0 =A0 * over network).<br>
+ =A0 =A0 =A0 =A0 *<br>
+ =A0 =A0 =A0 =A0 * If domain unpausing fails, destroy domain ? Or is it be=
tter to have<br>
+ =A0 =A0 =A0 =A0 * a consistent copy of the domain (memory, cpu state, dis=
k)<br>
+ =A0 =A0 =A0 =A0 * on atleast one physical host ? Right now, lets just lea=
ve the domain<br>
+ =A0 =A0 =A0 =A0 * as is and let the Administrator decide (or troubleshoot=
).<br>
+ =A0 =A0 =A0 =A0 */<br>
+ =A0 =A0 =A0 =A0if (migration_domname) {<br>
+ =A0 =A0 =A0 =A0 =A0 =A0rc =3D libxl_domain_rename(ctx, domid, migration_d=
omname,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 c=
ommon_domname);<br>
+ =A0 =A0 =A0 =A0 =A0 =A0if (rc)<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, &quot;migration target (Re=
mus): &quot;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;Failed to rename dom=
ain from %s to %s:%d\n&quot;,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0migration_domname, common_=
domname, rc);<br>
+ =A0 =A0 =A0 =A0}<br>
+<br>
+ =A0 =A0 =A0 =A0rc =3D libxl_domain_unpause(ctx, domid);<br>
+ =A0 =A0 =A0 =A0if (rc)<br>
+ =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, &quot;migration target (Remus): &q=
uot;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;Failed to unpause domain %s =
(id: %u):%d\n&quot;,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0common_domname, domid, rc);<br>
+<br>
+ =A0 =A0 =A0 =A0exit(rc ? -ERROR_FAIL: 0);<br>
+ =A0 =A0}<br>
+<br>
 =A0 =A0 fprintf(stderr, &quot;migration target: Transfer complete,&quot;<b=
r>
 =A0 =A0 =A0 =A0 =A0 =A0 &quot; requesting permission to start domain.\n&qu=
ot;);<br>
<br>
@@ -2989,10 +3024,10 @@ int main_restore(int argc, char **argv)<br>
<br>
=A0int main_migrate_receive(int argc, char **argv)<br>
=A0{<br>
- =A0 =A0int debug =3D 0, daemonize =3D 1, monitor =3D 1;<br>
+ =A0 =A0int debug =3D 0, daemonize =3D 1, monitor =3D 1, remus =3D 0;<br>
 =A0 =A0 int opt;<br>
<br>
- =A0 =A0while ((opt =3D def_getopt(argc, argv, &quot;Fed&quot;, &quot;migr=
ate-receive&quot;, 0)) !=3D -1) {<br>
+ =A0 =A0while ((opt =3D def_getopt(argc, argv, &quot;Fedr&quot;, &quot;mig=
rate-receive&quot;, 0)) !=3D -1) {<br>
 =A0 =A0 =A0 =A0 switch (opt) {<br>
 =A0 =A0 =A0 =A0 case 0: case 2:<br>
 =A0 =A0 =A0 =A0 =A0 =A0 return opt;<br>
@@ -3006,6 +3041,9 @@ int main_migrate_receive(int argc, char<br>
 =A0 =A0 =A0 =A0 case &#39;d&#39;:<br>
 =A0 =A0 =A0 =A0 =A0 =A0 debug =3D 1;<br>
 =A0 =A0 =A0 =A0 =A0 =A0 break;<br>
+ =A0 =A0 =A0 =A0case &#39;r&#39;:<br>
+ =A0 =A0 =A0 =A0 =A0 =A0remus =3D 1;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0break;<br>
 =A0 =A0 =A0 =A0 }<br>
 =A0 =A0 }<br>
<br>
@@ -3014,7 +3052,8 @@ int main_migrate_receive(int argc, char<br>
 =A0 =A0 =A0 =A0 return 2;<br>
 =A0 =A0 }<br>
 =A0 =A0 migrate_receive(debug, daemonize, monitor,<br>
- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0STDOUT_FILENO, STDIN_FILENO);<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0STDOUT_FILENO, STDIN_FILENO,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0remus);<br>
<br>
 =A0 =A0 return 0;<br>
=A0}<br>
@@ -5951,6 +5990,106 @@ done:<br>
 =A0 =A0 return ret;<br>
=A0}<br>
<br>
+int main_remus(int argc, char **argv)<br>
+{<br>
+ =A0 =A0int opt, rc, daemonize =3D 1;<br>
+ =A0 =A0const char *ssh_command =3D &quot;ssh&quot;;<br>
+ =A0 =A0char *host =3D NULL, *rune =3D NULL, *domain =3D NULL;<br>
+ =A0 =A0libxl_domain_remus_info r_info;<br>
+ =A0 =A0int send_fd =3D -1, recv_fd =3D -1;<br>
+ =A0 =A0pid_t child =3D -1;<br>
+ =A0 =A0uint8_t *config_data;<br>
+ =A0 =A0int config_len;<br>
+<br>
+ =A0 =A0memset(&amp;r_info, 0, sizeof(libxl_domain_remus_info));<br>
+ =A0 =A0/* Defaults */<br>
+ =A0 =A0r_info.interval =3D 200;<br>
+ =A0 =A0r_info.blackhole =3D 0;<br>
+ =A0 =A0r_info.compression =3D 1;<br>
+<br>
+ =A0 =A0while ((opt =3D def_getopt(argc, argv, &quot;bui:s:e&quot;, &quot;=
remus&quot;, 2)) !=3D -1) {<br>
+ =A0 =A0 =A0 =A0switch (opt) {<br>
+ =A0 =A0 =A0 =A0case 0: case 2:<br>
+ =A0 =A0 =A0 =A0 =A0 =A0return opt;<br>
+<br>
+ =A0 =A0 =A0 =A0case &#39;i&#39;:<br>
+ =A0 =A0 =A0 =A0 =A0 r_info.interval =3D atoi(optarg);<br>
+ =A0 =A0 =A0 =A0 =A0 =A0break;<br>
+ =A0 =A0 =A0 =A0case &#39;b&#39;:<br>
+ =A0 =A0 =A0 =A0 =A0 =A0r_info.blackhole =3D 1;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0break;<br>
+ =A0 =A0 =A0 =A0case &#39;u&#39;:<br>
+ =A0 =A0 =A0 =A0 =A0 r_info.compression =3D 0;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0break;<br>
+ =A0 =A0 =A0 =A0case &#39;s&#39;:<br>
+ =A0 =A0 =A0 =A0 =A0 =A0ssh_command =3D optarg;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0break;<br>
+ =A0 =A0 =A0 =A0case &#39;e&#39;:<br>
+ =A0 =A0 =A0 =A0 =A0 =A0daemonize =3D 0;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0break;<br>
+ =A0 =A0 =A0 =A0}<br>
+ =A0 =A0}<br>
+<br>
+ =A0 =A0domain =3D argv[optind];<br>
+ =A0 =A0host =3D argv[optind + 1];<br>
+<br>
+ =A0 =A0if (r_info.blackhole) {<br>
+ =A0 =A0 =A0 =A0find_domain(domain);<br>
+ =A0 =A0 =A0 =A0send_fd =3D open(&quot;/dev/null&quot;, O_RDWR, 0644);<br>
+ =A0 =A0 =A0 =A0if (send_fd &lt; 0) {<br>
+ =A0 =A0 =A0 =A0 =A0 =A0perror(&quot;failed to open /dev/null&quot;);<br>
+ =A0 =A0 =A0 =A0 =A0 =A0exit(-1);<br>
+ =A0 =A0 =A0 =A0}<br>
+ =A0 =A0} else {<br>
+<br>
+ =A0 =A0 =A0 =A0/*<br>
+ =A0 =A0 =A0 =A0 * TODO: change this to plain TCP socket based channel<br>
+ =A0 =A0 =A0 =A0 * instead of SSH. For both live-migration and Remus.<br>
+ =A0 =A0 =A0 =A0 */<br>
+ =A0 =A0 =A0 =A0if (!ssh_command[0]) {<br>
+ =A0 =A0 =A0 =A0 =A0 =A0rune =3D host;<br>
+ =A0 =A0 =A0 =A0} else {<br>
+ =A0 =A0 =A0 =A0 =A0 =A0if (asprintf(&amp;rune, &quot;exec %s %s xl migrat=
e-receive -r %s&quot;,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ssh_command, host,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 daemonize ? &quot;&quot; =
: &quot; -e&quot;) &lt; 0)<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return 1;<br>
+ =A0 =A0 =A0 =A0}<br>
+<br>
+ =A0 =A0 =A0 =A0save_domain_core_begin(domain, NULL, &amp;config_data, &am=
p;config_len);<br>
+<br>
+ =A0 =A0 =A0 =A0if (!config_len) {<br>
+ =A0 =A0 =A0 =A0 =A0 =A0fprintf(stderr, &quot;No config file stored for ru=
nning domain and &quot;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&quot;none supplied - cannot start=
 remus.\n&quot;);<br>
+ =A0 =A0 =A0 =A0 =A0 =A0exit(1);<br>
+ =A0 =A0 =A0 =A0}<br>
+<br>
+ =A0 =A0 =A0 =A0child =3D create_migration_child(rune, &amp;send_fd, &amp;=
recv_fd);<br>
+<br>
+ =A0 =A0 =A0 =A0migrate_do_preamble(send_fd, recv_fd, child, config_data, =
config_len,<br>
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0rune);<br>
+ =A0 =A0}<br>
+<br>
+ =A0 =A0/* Point of no return */<br>
+ =A0 =A0rc =3D libxl_domain_remus_start(ctx, &amp;r_info, domid, send_fd, =
recv_fd);<br>
+<br>
+ =A0 =A0/* If we are here, it means backup has failed/domain suspend faile=
d.<br>
+ =A0 =A0 * Try to resume the domain and exit gracefully.<br>
+ =A0 =A0 * TODO: Split-Brain check.<br>
+ =A0 =A0 */<br>
+ =A0 =A0fprintf(stderr, &quot;remus sender: libxl_domain_suspend failed&qu=
ot;<br>
+ =A0 =A0 =A0 =A0 =A0 =A0&quot; (rc=3D%d)\n&quot;, rc);<br>
+<br>
+ =A0 =A0if (rc =3D=3D ERROR_GUEST_TIMEDOUT)<br>
+ =A0 =A0 =A0 =A0fprintf(stderr, &quot;Failed to suspend domain at primary.=
\n&quot;);<br>
+ =A0 =A0else {<br>
+ =A0 =A0 =A0 =A0fprintf(stderr, &quot;Remus: Backup failed? resuming domai=
n at primary.\n&quot;);<br>
+ =A0 =A0 =A0 =A0libxl_domain_resume(ctx, domid, 1);<br>
+ =A0 =A0}<br>
+<br>
+ =A0 =A0close(send_fd);<br>
+ =A0 =A0return -ERROR_FAIL;<br>
+}<br>
+<br>
=A0/*<br>
 =A0* Local variables:<br>
 =A0* mode: C<br>
diff -r 2aa138177f5e -r cf47997255f4 tools/libxl/xl_cmdtable.c<br>
--- a/tools/libxl/xl_cmdtable.c Tue Jan 31 20:33:34 2012 -0800<br>
+++ b/tools/libxl/xl_cmdtable.c Tue Jan 31 20:33:34 2012 -0800<br>
@@ -412,6 +412,20 @@ struct cmd_spec cmd_table[] =3D {<br>
 =A0 =A0 =A0 &quot;Loads a new policy int the Flask Xen security module&quo=
t;,<br>
 =A0 =A0 =A0 &quot;&lt;policy file&gt;&quot;,<br>
 =A0 =A0 },<br>
+ =A0 =A0{ &quot;remus&quot;,<br>
+ =A0 =A0 =A0&amp;main_remus, 0,<br>
+ =A0 =A0 =A0&quot;Enable Remus HA for domain&quot;,<br>
+ =A0 =A0 =A0&quot;[options] &lt;Domain&gt; [&lt;host&gt;]&quot;,<br>
+ =A0 =A0 =A0&quot;-i MS =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Checkpoint dom=
ain memory every MS milliseconds (def. 200ms).\n&quot;<br>
+ =A0 =A0 =A0&quot;-b =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Replicate =
memory checkpoints to /dev/null (blackhole)\n&quot;<br>
+ =A0 =A0 =A0&quot;-u =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Disable me=
mory checkpoint compression.\n&quot;<br>
+ =A0 =A0 =A0&quot;-s &lt;sshcommand&gt; =A0 =A0 =A0 =A0 Use &lt;sshcommand=
&gt; instead of ssh. =A0String will be passed\n&quot;<br>
+ =A0 =A0 =A0&quot; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0to sh. I=
f empty, run &lt;host&gt; instead of \n&quot;<br>
+ =A0 =A0 =A0&quot; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ssh &lt;=
host&gt; xl migrate-receive -r [-e]\n&quot;<br>
+ =A0 =A0 =A0&quot;-e =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Do not wai=
t in the background (on &lt;host&gt;) for the death\n&quot;<br>
+ =A0 =A0 =A0&quot; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0of the d=
omain.&quot;<br>
+<br>
+ =A0 =A0},<br>
=A0};<br>
<br>
=A0int cmdtable_len =3D sizeof(cmd_table)/sizeof(struct cmd_spec);<br>
<br>
<br>
<br><br>---------- Forwarded message ----------<br>From:=A0<a href=3D"http:=
//xen.org">xen.org</a> &lt;<a href=3D"mailto:ian.jackson@eu.citrix.com">ian=
.jackson@eu.citrix.com</a>&gt;<br>To:=A0<a href=3D"mailto:xen-devel@lists.x=
ensource.com">xen-devel@lists.xensource.com</a><br>
Cc:=A0<a href=3D"mailto:ian.jackson@eu.citrix.com">ian.jackson@eu.citrix.co=
m</a><br>Date:=A0Wed, 1 Feb 2012 05:52:30 +0000<br>Subject:=A0[Xen-devel] [=
linux test] 11749: regressions - FAIL<br>flight 11749 linux real [real]<br>
<a href=3D"http://www.chiark.greenend.org.uk/~xensrcts/logs/11749/" target=
=3D"_blank">http://www.chiark.greenend.org.uk/~xensrcts/logs/11749/</a><br>
<br>
Regressions :-(<br>
<br>
Tests which did not succeed and are blocking,<br>
including tests which could not be run:<br>
=A0test-amd64-i386-xl-credit2 =A0 =A07 debian-install =A0 =A0 =A0 =A0 =A0 =
=A0fail REGR. vs. 10764<br>
<br>
Regressions which are regarded as allowable (not blocking):<br>
=A0test-i386-i386-win =A0 =A0 =A0 =A0 =A0 14 guest-start.2 =A0 =A0 =A0 =A0 =
=A0 =A0fail blocked in 10764<br>
<br>
Tests which did not succeed, but are not blocking:<br>
=A0test-amd64-i386-rhel6hvm-amd 11 leak-check/check =A0 =A0 =A0 =A0 =A0 =A0=
 fail =A0 never pass<br>
=A0test-amd64-i386-rhel6hvm-intel 11 leak-check/check =A0 =A0 =A0 =A0 =A0 =
=A0 fail never pass<br>
=A0test-amd64-i386-xl-win-vcpus1 13 guest-stop =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 fail =A0never pass<br>
=A0test-amd64-i386-win =A0 =A0 =A0 =A0 =A016 leak-check/check =A0 =A0 =A0 =
=A0 =A0 =A0 fail =A0 never pass<br>
=A0test-amd64-i386-xl-win7-amd64 13 guest-stop =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 fail =A0never pass<br>
=A0test-amd64-i386-win-vcpus1 =A0 16 leak-check/check =A0 =A0 =A0 =A0 =A0 =
=A0 fail =A0 never pass<br>
=A0test-i386-i386-xl-winxpsp3 =A0 13 guest-stop =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 fail =A0 never pass<br>
=A0test-amd64-i386-xl-winxpsp3-vcpus1 13 guest-stop =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 fail never pass<br>
=A0test-amd64-amd64-xl-winxpsp3 13 guest-stop =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 fail =A0 never pass<br>
=A0test-amd64-amd64-xl-win =A0 =A0 =A013 guest-stop =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 fail =A0 never pass<br>
=A0test-amd64-i386-xend-winxpsp3 16 leak-check/check =A0 =A0 =A0 =A0 =A0 =
=A0 fail =A0never pass<br>
=A0test-amd64-amd64-win =A0 =A0 =A0 =A0 16 leak-check/check =A0 =A0 =A0 =A0=
 =A0 =A0 fail =A0 never pass<br>
=A0test-amd64-amd64-xl-pcipt-intel =A09 guest-start =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 fail never pass<br>
=A0test-amd64-amd64-xl-win7-amd64 13 guest-stop =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 fail never pass<br>
=A0test-i386-i386-xl-win =A0 =A0 =A0 =A013 guest-stop =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 fail =A0 never pass<br>
<br>
version targeted for testing:<br>
=A0linux =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A01aaf53ee291d9e71d6ec05c0ebdb2854fea=
175ad<br>
baseline version:<br>
=A0linux =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A08664c694e49d4d095706524a27b1fc734b9=
881ce<br>
<br>
------------------------------------------------------------<br>
People who touched revisions under test:<br>
------------------------------------------------------------<br>
<br>
jobs:<br>
=A0build-amd64 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0build-i386 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0build-amd64-pvops =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0build-i386-pvops =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-amd64-amd64-xl =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0test-amd64-i386-xl =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-i386-i386-xl =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0test-amd64-i386-rhel6hvm-amd =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-amd64-xl-win7-amd64 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-i386-xl-win7-amd64 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0fail<br>
=A0test-amd64-i386-xl-credit2 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-amd64-xl-pcipt-intel =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0fail<br>
=A0test-amd64-i386-rhel6hvm-intel =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-i386-xl-multivcpu =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-amd64-amd64-pair =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0test-amd64-i386-pair =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-i386-i386-pair =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0test-amd64-amd64-xl-sedf-pin =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-amd64-amd64-pv =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0test-amd64-i386-pv =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-i386-i386-pv =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0pass<br>
=A0test-amd64-amd64-xl-sedf =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 pass<br>
=A0test-amd64-i386-win-vcpus1 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-i386-xl-win-vcpus1 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0fail<br>
=A0test-amd64-i386-xl-winxpsp3-vcpus1 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-amd64-win =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-i386-win =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fail<br>
=A0test-i386-i386-win =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-amd64-amd64-xl-win =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0fail<br>
=A0test-i386-i386-xl-win =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0fail<br>
=A0test-amd64-i386-xend-winxpsp3 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0fail<br>
=A0test-amd64-amd64-xl-winxpsp3 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 fail<br>
=A0test-i386-i386-xl-winxpsp3 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 fail<br>
<br>
<br>
------------------------------------------------------------<br>
sg-report-flight on <a href=3D"http://woking.cam.xci-test.com" target=3D"_b=
lank">woking.cam.xci-test.com</a><br>
logs: /home/xc_osstest/logs<br>
images: /home/xc_osstest/images<br>
<br>
Logs, config files, etc. are available at<br>
 =A0 =A0<a href=3D"http://www.chiark.greenend.org.uk/~xensrcts/logs" target=
=3D"_blank">http://www.chiark.greenend.org.uk/~xensrcts/logs</a><br>
<br>
Test harness code can be found at<br>
 =A0 =A0<a href=3D"http://xenbits.xensource.com/gitweb?p=3Dosstest.git;a=3D=
summary" target=3D"_blank">http://xenbits.xensource.com/gitweb?p=3Dosstest.=
git;a=3Dsummary</a><br>
<br>
<br>
Not pushing.<br>
<br>
------------------------------------------------------------<br>
commit 1aaf53ee291d9e71d6ec05c0ebdb2854fea175ad<br>
Merge: 8664c69... b16a92f...<br>
Author: Jeremy Fitzhardinge &lt;<a href=3D"mailto:jeremy@goop.org">jeremy@g=
oop.org</a>&gt;<br>
Date: =A0 Thu Jan 26 13:19:51 2012 -0800<br>
<br>
 =A0 =A0Merge commit &#39;v2.6.32.55&#39; into xen/next-2.6.32<br>
<br>
 =A0 =A0* commit &#39;v2.6.32.55&#39;: (28 commits)<br>
 =A0 =A0 =A0Linux 2.6.32.55<br>
 =A0 =A0 =A0kprobes: initialize before using a hlist<br>
 =A0 =A0 =A0score: fix off-by-one index into syscall table<br>
 =A0 =A0 =A0sym53c8xx: Fix NULL pointer dereference in slave_destroy<br>
 =A0 =A0 =A0ALSA: HDA: Fix internal microphone on Dell Studio 16 XPS 1645<b=
r>
 =A0 =A0 =A0kernel.h: add printk_ratelimited and pr_&lt;level&gt;_rl<br>
 =A0 =A0 =A0block: add and use scsi_blk_cmd_ioctl<br>
 =A0 =A0 =A0USB: Fix &#39;bad dma&#39; problem on WDM device disconnect<br>
 =A0 =A0 =A0fix cputime overflow in uptime_proc_show<br>
 =A0 =A0 =A0USB: cdc-wdm: fix misuse of logical operation in place of bitop=
<br>
 =A0 =A0 =A0nfsd: Fix oops when parsing a 0 length export<br>
 =A0 =A0 =A0svcrpc: destroy server sockets all at once<br>
 =A0 =A0 =A0svcrpc: fix double-free on shutdown of nfsd after changing pool=
 mode<br>
 =A0 =A0 =A0V4L/DVB: v4l2-ioctl: integer overflow in video_usercopy()<br>
 =A0 =A0 =A0i2c: Fix error value returned by several bus drivers<br>
 =A0 =A0 =A0UBI: fix nameless volumes handling<br>
 =A0 =A0 =A0x86: Fix mmap random address range<br>
 =A0 =A0 =A0PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that breaks U=
SB<br>
 =A0 =A0 =A0ima: free duplicate measurement memory<br>
 =A0 =A0 =A0xen/xenbus: Reject replies with payload &gt; XENSTORE_PAYLOAD_M=
AX.<br>
 =A0 =A0 =A0...<br>
<br>
<br>
<br>_______________________________________________<br>
Xen-devel mailing list<br>
<a href=3D"mailto:Xen-devel@lists.xensource.com">Xen-devel@lists.xensource.=
com</a><br>
<a href=3D"http://lists.xensource.com/xen-devel" target=3D"_blank">http://l=
ists.xensource.com/xen-devel</a><br>
<br></blockquote></div><br>

--20cf30363f4b1ecd2e04b7e1308d--


--===============3167636507460871122==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

--===============3167636507460871122==--


From xen-devel-bounces@lists.xensource.com Wed Feb 01 10:12:56 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Feb 2012 10:12:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RsXBJ-00027d-Jg; Wed, 01 Feb 2012 10:12:49 +0000
Received: from mail174.messagelabs.com ([85.158.138.51])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <al@ohosting.org.ua>)
	id 1RoKZu-0007yO-7Z; Fri, 20 Jan 2012 19:56:51 +0000
X-Env-Sender: al@ohosting.org.ua
X-Msg-Ref: server-7.tower-174.messagelabs.com!1327089402!5826427!1
X-Originating-IP: [195.248.169.244]
X-SpamReason: No, hits=1.0 required=7.0 tests=FORGED_MUA_OUTLOOK
X-StarScan-Version: 6.4.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4534 invoked from network); 20 Jan 2012 19:56:43 -0000
Received: from ohosting.org.ua (HELO c2.ohosting.org.ua) (195.248.169.244)
	by server-7.tower-174.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 20 Jan 2012 19:56:43 -0000
Received: from nobody (ns4.o.dp.ua [195.248.169.251]) (authenticated bits=0)
	by c2.ohosting.org.ua (8.14.5/8.14.5) with ESMTP id q0KJtob5008865;
	Fri, 20 Jan 2012 21:55:51 +0200
Message-ID: <3B8433EAEDA04EADB4361C946BA29688@nobody>
From: "Likarpenkov Alexander" <al@ohosting.org.ua>
To: "John Sherwood" <jrs@vt.edu>, "chris" <tknchris@gmail.com>
References: <CAFoWEVPfusbuE42T9KzZohsP_V_r1y9t_rEM3f8ee6kMxsiAmg@mail.gmail.com><20120120154745.GV12984@reaktio.net><CAFoWEVN20pqy-79k9st2-fnD-1JjOzoKTwXmMUJ+fwvKPFUGHQ@mail.gmail.com><3B7B9131A63345CCB34B508E3E4F3507@nobody><CAKnNFz_DUQQ5FjGB83_p-uFefSu63T3jVh6Gu-hE5xD978qj4A@mail.gmail.com>
	<CAH5ygH1Q=Eh8Ma3erT52r65VceGjQKgiLxbRSwa_rr6COS8p6A@mail.gmail.com>
Date: Fri, 20 Jan 2012 21:56:22 +0200
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_05D4_01CCD7BE.591C80A0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.3790.4657
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4913
FL-Build: Fidolook 2002 (SL) 6.0.2800.94 - 5/4/2005 11:39:16
X-Mailman-Approved-At: Wed, 01 Feb 2012 10:12:42 +0000
Cc: Sandi Romih <romihs.forums@gmail.com>, xen-devel@lists.xensource.com,
	xen-users@lists.xensource.com
Subject: Re: [Xen-devel] [Xen-users]  VGA passthough still not working
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

This is a multi-part message in MIME format.

------=_NextPart_000_05D4_01CCD7BE.591C80A0
Content-Type: text/plain;
	format=flowed;
	charset="UTF-8";
	reply-type=original
Content-Transfer-Encoding: 8bit

This whole garbage works for me. I have 9 months of sitting in windows mode 
pci passthru (see attach). Also on the past 15 virtual machines that are 
involved in hosting this system, two PCIe graphics card, 2 mice and 2 
keyboards, which are divided between two different autonomous operating mode 
HVM. I'd like to see the login screen from the start, but you can not run on 
gfx_passthru different operating systems and versions of xen

 JS> Most people run Xen for headless virtual machines, and VGA passthrough
 JS> requires VT-d support in both the CPU and motherboard.  VGA passthrough
 JS> is also somewhat dependent on the card you're using it with, so it's a
 JS> hard thing to test.  If you want it to get more love, then you're the
 JS> best situated person to do it :)

 JS> However, on the topic of Sandi's issue:
 JS> If your monitor goes black, that's a GOOD sign - it's indicative that
 JS> the dom0 is relinquishing control of the graphics card, so at least
 JS> that's working.  In my experience using graphics passthrough, this
 JS> problem is related to your card not being fully supported; essentially,
 JS> Xen can't pass your card through to the VM during boot.  If you leave
 JS> the `gfx_passthru` option *disabled*, you'll have the emulated cirrus
 JS> card (by default) and it will at least boot successfully.  Here's some
 JS> step by step suggestions/instructions:

 JS>    - disable gfx_passthru in config (delete the option or set it to 0)
 JS>    - enable VNC, listening on all interfaces
 JS>    - start the VM - your screen should still go black
 JS>    - From another machine (what with your screen being black), connect
 JS> in
 JS>    via VNC and fire up the device manager in XP.  I don't have any XP
 JS> boxes
 JS>    left, but in Windows 7, you should see a device in an error state
 JS> under
 JS>    'Display adapters'.
 JS>    - Check its PCI slot under 'details' - "Location Paths" should help.
 JS>    Compare that to `xm pci-list [domain name]` to see if it matches up
 JS> with
 JS>    the graphics card.
 JS>    - Install the driver for that device
 JS>    - Reboot.  You won't see the BIOS on the monitor, but it should use
 JS> it
 JS>    once Windows takes over.

 JS> If something in there doesn't work, hopefully I can help you debug - I
 JS> went through a lot of this a while back.

 JS> On Fri, Jan 20, 2012 at 2:24 PM, chris <tknchris@gmail.com> wrote:

 ??>> I'm really surprised this doesnt get more attention. For as long as
 ??>> I've been on this list, this feature has been mentioned so many times
 ??>> I would think that getting this working would be a huge feature that
 ??>> would make the product even better. I have only seen the occasional
 ??>> success with experimental patches etc, despite this being talked about
 ??>> for years.
 ??>>
 ??>> On Fri, Jan 20, 2012 at 1:53 PM, Likarpenkov Alexander
 ??>> <al@ohosting.org.ua
 ??>>> wrote:
 ??>>
 ??>>> Please make a manual
 ??>>> or let's together make
 ??>>>
 ??>>> В пятницу, двадцатого января 2012 года, в 18:49:20 Вы писали:
 ??>>>
 SR>>>> Pasi,
 ??>>>
 SR>>>> I have that enabled in my BIOS, VT-d for the chipset and VT-x for
 SR>>>> the CPU.
 ??>>>
 SR>>>> Have you managed to pass your gpu through to the domU?
 ??>>>
 SR>>>> Regards
 ??>>>
 SR>>>> Sandi
 SR>>>> On Jan 20, 2012 4:47 PM, "Pasi Kärkkäinen" <pasik@iki.fi> wrote:
 ??>>>
 ??>>>>> On Fri, Jan 20, 2012 at 02:05:43PM +0100, Sandi Romih wrote:
 ??>>>>>>    Hello,
 ??>>>>>>    I have spent a lot of time trying to get gfx passthru working
 ??>>>>>> on my
 ??>>>>> system
 ??>>>>>>    without success.
 ??>>>>>>    I looked onto my hardware capabilities again to make sure that
 ??>>>>>> it does   support VT-d and I am not too sure that it does fully.
 ??>>>>>> My hardware is as follows:   - Supermicro X8DTH-6F motherboard 
(5520
 ??>>> chipset
 ??>>>>>> which supports VT-d)   - single Xeon X5650 CPU (which is listed as
 ??>>>>>> supporting VT-x, no
 ??>>>>> mention of
 ??>>>>>>    VT-d at [1]ark.intel.com)
 ??>>>>>>    Now, according to the [2]VTdHowTo, the motherboard BIOS,
 ??>>>>>> chipset AND
 ??>>>>> CPU
 ??>>>>>>    need to support VT-d.
 ??>>>>>>    What confuses me is, why is the 55x0 chipset listed there if
 ??>>>>>> none of
 ??>>>>> the
 ??>>>>>>    CPU's supported, that I know of, dont have the VT-d feature
 ??>>>>>> option,
 ??>>>>> only
 ??>>>>>>    VT-x.
 ??>>>>>>

------=_NextPart_000_05D4_01CCD7BE.591C80A0
Content-Type: image/jpeg;
	name="01.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="01.jpg"

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAJPAzADASIA
AhEBAxEB/8QAHgABAAICAwEBAQAAAAAAAAAAAAcIBgkDBAUBAgr/xAAcAQEAAwEBAQEBAAAAAAAA
AAAAAQIDBgQFBwj/2gAMAwEAAhADEAAAAZ7wD9R9+k8ln8iZ5E3z95K/eL4z57ydx4J7x7vHFHFG
UucUZeHpvMX5iT1rYZ50404tc5E6sZ+IxlbFMfjb6fmzvyINjnpvgWx/NSuH1Y2246jmVteOpJNt
lSf2W0VM+6Z2z+1L/aLY/am/pFslT/qbYfanfpW16qH0teqiRa/7U/6m16qH0tcqmRa5VIm1qqn2
FqlVPqLV/aqC1X6qp9hapVX6Wq+1UStWqp+oWpVU+otUqqiLVKq/S1KqwtX+qp/U2v8A3U/khbHn
qXz46W07tRO5ne3XbqX6OW1s+5Vf1cdLR9utHq+Xa40r0S7PL9Rejnh2t3g9d3+3RPPMNLXYvW2J
vmdTdPj15e7+a/0BsO8SM6p/V5S/Hk0Cnr7PP+36flyd+nfhfifv2O/F8Y5Mv4vJ6It9TO+OWB+1
73DtjzxhnvBvEYd/MehXKs01ZH0fS8XE8/4dfPhUazr4vs8dSsNut+eh+PSRdrj9GVKeO7HKikX7
u2TST7doUl/V2k1pN+rr/qIpP9uwKULsfYilS6qFKl1vqKU/brfZilS6pNK/1dP9FK11EKWLpilv
26P0pcukKW/bokUtXSIpcuj9hS77dAUwXQ+wpf8AbnimC6Apeuh9RS77dAUvXQFL/tzxTHmuN9op
zy3B+JqX3LXqzWD0rLdjz7V39yde/jvF+UZt3fkfUwb0817vk2j/AL2ddnP0R/5ss8nn9kP92Vv1
8foIq+Sv+qXhr05Tj37Hw/f2g6r7/Y+vB8mq14/wvt7EO/XfM9vLwZjVPwsNrCZvTvEFtg2T1ImL
15e54WLQj5tLbZFrXlO2N7MLxvAp2kzGq/xPlTYpmWsO821JV+RStaV/kUiV0UISuigSuij7aJXR
WVlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlR
FYlRFYlRFYlRFYlNFisyoisiVUVCVEVpmU0WFZTRYmZT+xWJTRYiJURWmZURWJURWJU1qXXox7vm
eJf6g12Po+TIf1Asw+Xf2OOPo7+P9ixfH+sY1pkvHh+NfC0k7AMTwT7FZnzSqvpWi2H48bpwyLlw
L1TJmFU46XwX/wATiHD/AJPtm/ng/o+C1vv3DEkXj3ftC7k/RplbneS/A5xwOcjgc44HOOBzjgc4
4HOOBzjgc44HOOBzjgc44HOOBzjgc44HOOBzjgc44HOOBzjgc44HOOBz/DhcxPC5hwuYcLmHC5hw
uYcLmHC5hwuYcLmHC5hwuYcNGb2UX9vzPOtrUzZJ6Pna+bQzF+pyqbFGwzp8l2WJ9GRel684k5pI
8z8a+/E/RmiMf1/4Mj1ykPPfG/HpZbiHpnFfXyP1YpFutzbzHPWfOqdKdhMW+Z6vUif2uxze3j5H
KHse69OZIn376I8t6hHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHl
vUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvU+y8p6q0eU9UeU9UeU9UeU9UeU9UeU9UeU9UeU9UeU9
UeU9UeU9UeVQTYhrx+l8nDNnWse+Hl28OVtRu2230Mk7VfeXlvdP32onRvW4/wCa/Q/Gl6/xEEF0
XT/VA8uvNzVeMApW4yqnp3pZhSnu3vcn8YhC9Jsz8r91lZQxeO7QZ7YOjq0NsINx/wASPLZ2S4/Y
rfn6Zx54FyLTCVvsEX8IBWKVvXVYoV1WKFdlihXVYoV1WKFdVihXVYoV1WKFdVihXVYoV1WKFdVi
hXVYoV1WKFdVihXVYoV1WKFdVihXX7YlEV28KzFbTF0a+jE5yrzI01kBgEvJ8BYwVzWMFc1jBXNY
wVzWMFc1jBXNYwVzWMFc6v7LNbv3/iR/fCjG4vauvq/sXSrzX24v9GsE8eXWSIe8LMPZTM/zXDux
Nnu/WXNFpK7cOdWaTDC+OXAI6yjIyYx9nNUMQxeV0I96kmrRW+RMJzdP3JMm/Kutj1b4fjTFhVca
/wD12yv8d+v3wvRJswVn5lbKfus/QrNqflRMPvN7FYsyhNaklxbR6wiQAAAAAAAAAAAAAAOjWOzl
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
JPB0OGOIanPuRTklGPv/ACNtVfbAVHvE0ZZTuW5vJfLTWY4rIP4hKSbZyt5VTpO1mW46x7H9IuB0
6uSnSuf9evXoTaTvahXza2kaTqrY/NrfTRUi1+Wcgfrj5OZ+8CQAAAAAAAAOjXywdfCyIAAAAAAA
AAAFRbdUm+98Oj27nSVu1+tzD78+8V+hhIAAAAAAAACvuZ4ZmZJ4Px85CMFwyZsC3x5a+2W0KbRv
OwbKaj+fS23TpNiekXO/EBetrWdueu8j0j3OWOf3eJp8bE4arayPoRblkTmki05xCL3VwrrwkpKE
/ayrqzM4+jQXj8vp2JNcHZimxbG9Yd0KxJci6vs/20vhj+s+6lKTTktKYli+x70tY2YXyuHI2sfr
RttBfn9VxBIHRr5YOvhZEAAAAAAAAAADVHtc09dlw+I7stKG6+3jffn3iv0QJAAAAAAAAAV9zPDM
zJPABwYzkeDmcVPsXpv0btuDCIizvYzj1ffmabN+zrSnVa6n7pRidNdgag+J3pskVnsxfzBnqAAA
AAAAAAAAAAB0a+WDr4WRAAAAAAAAAPh9A09bhdSfZ8LHu63Srt7v5cwYd4/E/okko5EjI5EjI5Ej
I5/BJKM+YkZHIkZHIkZHIkZG3dM8Yp+yJc1j6QSTQAfj5yDjoxetLqYnm6GB8EhjxcSkdE4TyZkt
HlYNJyGH5gIBIAAAAAAAAAAAAAHRr5YOvhZEAAAAAAAAAACil66i/f8AhUR2T6z9hn1+X5/S8eOe
J/RZlQCun5ALRPyARP2BR99zehNsEcBPyAWifkAifkAiefTrlImafIK9rmo55FgeSyekc/SRUdCR
UdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCR
UdCRUdCRUdCRUdDN6+SHFRaNHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkWo06QB9v4
1VdmWtHZN9Lnuw67jv0HsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647Drjs
OuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOx1vvUPT
dcdh1x2HXHYdcdh1x2HXHYdcdh1x87Pmds7DrjsOuOw647Drj8wjMkM/b+JTy7Wmnu9p+Qbifmn9
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
3t71ZdW+z9iQ/NhfhwqHFVpyRKqKXEZiyHfA2uioxvcWe0wprj0tdlclvyUnoy3ZIT2LUOS29wdo
zkRK7mPJkqdpxbnNgb0LvkJuKjqSZFLHZBnyEOidCoNVo/6BT8acmmESLVl41ZeNWXjVl41ZeNWX
jVl41ZeNWXjVl41ZeNWXjVl41ZeNWXjVl41ZeNWXjVl41ZeNWXjVl41ZeJJTjIkFvB7qF2HGFxmF
936IiHgp4gVqqxokkaUSEtniv/zEjFyIsVxwmvJcYK0OYdmJI8R57hpLsYqxezGWu2Nm5zSpUxSN
N+xIfmwvw70eEh6xClakZCWdNDcrR41q5MxphfvUbfiKBtAJxuhKalkBQKnqyDtRFEmM25JV4hFr
y9nQJJY4qMesikJIdYjfG/HxrS0x1iRRhj/oFPxsh/o9TxQdtxQ+3QZYiyCbcnLmCohU6zxxa3Ka
uzm3SW+SKzJ0jyQ4rE7pks9uZHCdLkx12Tza3ti1YpRdUdUdUdUdUdUdUdUdUOv+pGNt81TrU6si
QU4yJPbyvQ4CtKVCk9Kl9FKp0lbsSud2m2rgpWMsWmzmvRXzSHFJo/MW96COVOrnKH3Icea01sxi
F7NKMgxqNR4p+aLkyPILBRqKfWQ9z/GQ/Nhfh3o43IqIqcLqTyaWR1nh2c3iUNTUvNVNTHKXyRGF
S6KqTKzuE2WnSeNpXRTJY8kSNGTYS6RpI+M6lz5LeNKUp/RqfjZKrwdnZub3tBSNMOnbcZakK46x
rgdGWU809GhUraxaN1RpIyxIr1UPjK215iBrk93xNgMususLs6tB1aDqjqjqjqjqjqjqjqjqh8t5
pBycjzT1kBBx1jSkNQIvdmRp7V6I3pmRBVrZNoydLE2zHkxZUcLgr5EpE+Rd/e5fbA5OfBJNjF5c
1rrjSUGNDtApeapc8VP5h0Lih8bWfjIfmwvw70frDTEDagVJkL8xEyZ6QYQjiJxaEBjc1RtpmEcJ
LxrKDY0844NVlERx6epSTCJWQ81xhK6s0Ki50eXf0ir40nSJ3CX7NjY2bGxWGxzhtCODaEdGzo8K
Q6ODZ0cFIfHKjZsbtFIhHKjZscGzY4NmxsbNjY2bGxs2NjZsbGzY2NmxsbNjY2bGxs2NhzL535UX
yO1PWoraJDJkl77Y/EMFrm4JWVsj0jbpIR6KZAzJWZY/NqFb+1Ifmwvw70V23GJ6UpcOArbQX/pa
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
1UIjlTUrrME7kyEau/AW0aeR8EzXJu8F7Ufpo5yM7ieEb3F2ELdGwmCS7qKo1WzrC4KC3OGAYfpw
ZOMyGYqNZItYU3Ec5Zm6bF1sDK5gwNqFTylnW7xZyjCKJ96RFUgMriekZA4ZQGSM5qDVJbCRzo1r
FiKLGDyOhMKBLQAoYW4rSZxjncdGBlxwFPUcl7hSd0d2s/pXDWJCN+BjWwWVfMriigWpEWPIrywu
KhQzGslcqkDrAQhEHVNCo06vjRkav279m17epE0xaWms7ZBOYQbmujgpi+X5hzJWj8bg8PjujkSL
e4iscjd1cTjQZJfRRbw1mqkvh5Bk1JZW3Nu3hXJPpIA0TgKo7nsnUuNzmxcKQwmrsqi+Irbikp7I
AG7Aknr57jIQcf8ArxBuceLLC8kklg5McLpkDWBzh5nyIOlRBkVLPbKsv7Vw21dJYqg0soxbmgtI
5t7RShyhSHJBuxEDTxOcjon6a8RPtk7qd1F06+rq28In8qfJt4RP5U+Tbwifyp8m3hG/zfJt4RP5
U+Tbwifyp8m3hE/lT5NvCJ/KnybeET+VPk28I3+VNvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM
9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35
dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM
9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35
dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM
9+35dvCM9+35dvCM9+35dvCM9+35dvCM9835dvCM9835dvCM9+35dvCM9+35dvCs9+ny7eFZ79Pl
28Iz37fl28Iz37fl28Iz3zfl28Iz3zfl28Iz3zfl28Iz3zfl28Iz3zfl28Kz37fl28JH75vy7eEj
9835dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dsqei672SsXVPcDg
W2N+6J6/yYP2RF2RP+imqd1NeveTX2W91PZ1TqVF69s3ibWY2zKco9HiQXaiDc0g+Um2jgxbG25J
5zIWilCMJjRZdBnvTuRLxDyxyRJZUyunyEIVt7e0PPCh4UNixURN9QRNs6c4h0RFoNMMOZFJFAkB
A3Cmk2Br3CxBcBHyPGgt7bIRmySyPe58d1chiGGTPfK9ZpJoY5XdScTcbwnr1Jruu06u6qIqoia6
9sq9TV7qO0VNF69jjiMjsautZRxY+CLURY6ZMoZLpJ7eaw9EVDcPG5lWgQoosu/HySOY/WZEhqT/
ANor4p+PU+J3LrG4OBKiSpMOkZZATRUlmwyS4EOSaxrWRAMkOCGV57ht8fYCCR1byVb2Qr7LYJxS
TOenr70XJmvi5LoceCvNCKu4xl3iD+MyPmupjIwUZQFehuNaLBL/AA+gNEIsnS2slyCGENZW8JNW
GmPhK0QUgiqgKu2yEFxo0uKIDdIIs41CbXS4njlBAPAsiSpPRGXcj3rCkMMfKQQWUIoUj17T65hb
Cipv7fJ1Lp7Pt93azqZ10ZYBEirL9tCssbkiI1RN5HCv3Zmub26LGjmJvIibYYywMrZ7auys7J8m
KHWdIJjLUPIYDlqm8ss/1uRcipEyVImRBMfC3itYiLyKQgOt6gEGCgyGfMsutGkm09sBZi81jt2E
4HFxz5wI3ldEGzoyJ8kEbeDuMZETIUMTWjAykCsR06kSZDZQ14d5aOhem7HHK2sSVpT3vJnMubZi
qibyzdxNsjpRXDxkW9FbVkMhLnxjNkPAnFapD2Ne9kGsvpzmscqR7yoi7YiZRUWMUxdTcRz2ZwFO
FWllgzUFvXEMhlBrY3Ezc0aLOyOVN2cHiGucwmFjViqJIQeaBfjkI187M81tOaGocpqbaVkmNWwM
4mPRlCgOmQavMLgUlGQ7w4qtcPK9BKUOlq+ydnd9MbEST09Ob0nfU8IC1vINEDjdDOksdsy0nkdW
QR1fJpG9srV7ndXTTq6l9hf4X3+rbuJt3E27ibdxNu4m3cTbuJt3E27ibex/6DZJ7oo/0BwLbHNz
cV65G5E4rpGs68J7IaLq6KEiTqTVU3Ynaroi7qauTdXkOvc/4ew/6HUvRPUqa7yO+1VNdF2Vd8Lr
Vq68wfvMkXiauRUpk60aqs31aqORyIrU06+pQE77uEWn26o537leyqIqa67vWidqqt27tfvewvFP
RV9pFXof+dNPu69zbvq/q6/D2P2r3N1b+1HbaK1vV7Tu71daddev8HflPXd69er9p0+20Xt99NOr
7u3azBq17O6pNi/WOZqu116IRi7ybu7pG1WNdojtdHbd2u03lXddKfupruoxiftNqjGoi9S7znPV
HbyaabKmtcujdNFnstGP3Wo7c1qFezq3tztlRurOpyM0dLOWVVDDx6LNMQadBEki67ivmmq2Rqr0
c72WNdK5XNbvORqaeizC0+4uSxNdr7KKx4jXpp9xHfxd3bVMswvX2P8ACaL+f6zVdP4Wia6a6aL1
7NICNpjhnLweYEsDCYHSpvIkUZDKuZJFcjm7yzL22/6WiPY12yN/a/t10RiTWPf68NNN+qc5i6Kq
byS6Ivbbj07RV1eDvPVNfrqxTVNU3Vdv1LHO7+RXLGxWbyOmc1m8vCTV9cmvV6qN0cqoxW7n7Vb7
0Xef1ozq3Pa13UdvV6Kjl3V49h3ze2bu/tR23Uiv7ip2vWiprsm9ICjdNHKpNj3ujNdeJTvb/wAG
1eprXapo1zEXbr6OT+HoSboxydrqqTVu8zdbr1pL1r9oveLqvI99IurCLSRm8qosujZKldZNxGSP
lFjj31dJv9pvKsbbO5xqtWZquiafdco+RE6l3Y5gmyp173fsZ1N19nTb12YX8ZYvmmzIosoxCV73
IiRw5Ak0q+3uRRhOe9yN1XRE9jtnNbq5Ota/q77Qox25r4NFRtWq+mIkioqIrO06nLr1d8B7P/DW
Psdf/mjZnWDo/uLxz+v2+ror2O7227tpvV/wg7XvWL3Eql9lyp/9XX73fAf56x80bd8B/nrHzRt3
wH+esfNG3fAf5+wT/XU7d9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV
/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/
AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8A
CTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJ
O81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7
zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvN
W3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81b
d9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt3
1f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV
/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bZJv8
Pe9EjfBPe9mnoDwPdVHSRQPXVuirrE3RdW9em8uOfcyKRfe4N2RV/wCzZSC+tV9KhgYms5Uzt90c
UTPa3I3qTN4IPhkSTO5QQoqExcgfyszCpFFjHrTpGMDdHA9m9OyHhyQxv5mPmu13uBvcJvE3WtLr
5UIGc7d4m6rNF1/gO7fvFbJ3vevbtIAWRO0qNGb7Iqq3L3VfFxdNQQCutrXMX7u83ubWLpd51Ahc
cIbpgCq8oMVgISkHqKdDAcQMhamxFJGLxRuVcRuSic0QG16bjo5OGsckb2vZLFJ1ceJ7dd6Jr+1V
2ie3p7G1Gq9arTVSqq91X9GBI5yr7O8qOd9ze+51uUcOadXStHYQke9DBK/iaPnb37UYrGLpu9fE
b1p7LYSohZSYZXRGTQzaacNdXokCwJxzURHxcmBKb9ct4PH+22xsVyawlZHFBPF9rM2GhuCG76ez
6cPHIiew5qd3TaZjauTSCWeNU5PI5eocjg6s5KiJr9Xx+nI10z1+0Rd7R6Ro2hJm1VFdu1uQ6M0K
FH697GU19VMk/wCi13/lBVJPaNEkA5f+5kcsTdUTiFZPYQlP9pvHjHHR24jfBaLvI7RLSaFyxyxV
pskbm9W69sJb43J7KKx26vU5F7XqVPYfxUuIYN6xiSV11aRRSrXEcsWsbJsmgi6nr6UiQtR/EXd0
4XXXEV9mdNxLGKtLCks5joWQwUtwa1zInGGKm9JG1Efuu1cO/wBlNUx3q7lmS1f+UjMcvVXe9hd5
zGu7nUqeztkU8Ej4JoaG5ljmhfJDLFIyvJVj2SRPjka5qoi9q5PaXq1TYF1naZuadYkSRjMqr+zZ
JFE+clHGTyIbGr4IkTR8LPTFTq6tsvBSxMsRq/o+OGcs8uxZxEPyAOWeGQ0gl0fFQMZ/pb9FbHpq
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
hWOefdvW9b/Csc8+7et63+FY55929b1v8Kxzz7t63rf4Vjnn3ZP8HblFX25seT/o9o29kenEd6Un
3fu7et6401TuzUDepVk1k3lutzhdo3hu7s/ETh67et63+FY55929b1v8Kxzz7t63rf4Vjnn3b1vW
/wAKxzz7t63rf4Vjnn3b1vW/wrHPPu3ret/hWOefdvW9cfCsb8+7JMwclqLJPE9HI30p0EksT/v9
vC/bwE3822nBn61062I3RftGOavbxyyew2Tq9pdsqenVrh4Kafc5nK9sT9zVH+bBf3zI/AS/kO2w
L8Y5N+jp/wBkZF+OQ/0NxHbFPd9jP9hyLaxkx4QA68YJJ0YLYlLAJKeiokbCZI2Mc3r10gR6QEuT
lZbapiXphKpLkkku0dGTNYklsZHPKWXYGkzO4ETI4I2rK93DhiiZDBHpDBHHC1saXSey61g00crf
3DqU9jT2Nu4vvl+XbuL75fl27i++X5du4vvl+XbuL75fl27i++X5du4vvl+XYwYKQ4ad5FLuS15M
4hDWRXAs0m6QLJFO3WNSEcrZEVWvVNdETSMqYy4eMlr2QCViItzZB+DKVX9GM4D5HQ8EceF7a+Lc
4QOquDZC5VXbuL75fl27i++X5du4vvl+XbuL75fl27i++X5du4vvl+XbuL75fl2d1L1f8tfl2c7+
HY3a9fX+7Ryf6pHfy/cTRv3dqL0UyoVYOAA+un7yHTQImkL7Hf7+eH7aV6LNJ3ZXvVV2yn3Ig/2j
Mv8A9Df5Pv7Yn7mqP82C/vmR+Al/IdtgX4xyb9HT/sjIvxyH+huI7Y6WRJwoBM1oS55dySTchFrM
lnlduRMfI7SON3Uxqr97u7L+3WuqOautfeL1P6n92sXvk7V38Jvar1dW3jn7vi67/hOf/wCa/wCE
9y/x+1psQQPkkULCJUnkZLRX5W5K2CIdHfW3L/8AAwRM013e13tN5XKvrqE+LWTf3u3rqE+LWTf3
u3rqE+LWTf3u3rqE+LWTf3u3rqE+LWTf3u3rqE+LWTf3u3rqE+LWTf3u3VlYqd6vrbyf7VdW/wDC
+wu2noug7mnreyj2tP8Ay3sp3f4Xs67euoT4tZN/e7euoT4tZN/e7euoT4tZN/e7euoT4tZN/e7e
uoT4tZN/e7euoT4tZN/e7euoT4tZN/e7eukTr/8AZrJv73ZgzryOZWSTyukStvI96QmZxEy6dGad
vM9z9E6m67rURqIm3jdOr/m67817eN06/wDm660+9p0X3vtN71PYTbIuRtQXcxjYgMCkyvA4pjyM
i3Iv2wiE8F0iNqqd3mF3td1ulLVkXFQ4isqasAl0VrW8J0g4McLnQK4vVycSNO7/ABbeN6vyrV/O
9vG1X5Xp/n+3jar8r0/z/bxtV+V6f5/t42q/K9P8/wBvG1X5Xp/n+3jar8r0/wA/28bVflen+f7e
NqvyvT/P9vG1X5Xp/n+3jar8r0/z/bxtV+V6f5/t42q/K9P8/wBvG1X5Xp/n+3jar8r0/wA/28bV
flen+f7eNqvyvT/P9vG1X5Xp/n+3jar8r0/z/bxtV+V6f5/t42q/K9P8/wBvG1X5Xp/n+3jar8r0
/wA/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+3jar8r0/z/bxtV+V6f5/t42q/K9P8/wBvG1X5Xp/n
+3jar8r0/wA/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+3jar8r0/z/bxtV+V6f5/t42q/K9P8/wBv
G1X5Xp/n+3jar8r0/wA/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+3jar8r0/z/bxtV+V6f5/t42q/
K9P8/wBvG1X5Xp/n+3jar8r0/wA/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+0rEt6rV8b2Jrb1Gmr
mqia/X/c2xi0huqNRaYm7ILVbiuY9UNrJgB2QNeQnEe6UjiL1tjbDFIqv31ijl8bVflen+f7eNqv
yvT/AD/bxtV+V6f5/t42q/K9P8/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+3jar8r0/z/AG8bVfle
n+f7eNqvyvT/AD/bxtV+V6f5/t42q/K9P8/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+3jar8r0/z/
AG8bVflen+f7eNqvyvT/AD/bxtV+V6f5/t42q/K9P8/28bVflen+f7eNqvyvT/P9vG1X5Xp/n+2Q
yjTwkwrdjNbMPNHPC5Y8RxOOTclic+N+5IxzHbrl0c1U7qbUCp1aX0vc9xWa7eFk9+75dvCye/d8
u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28
LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZP
fu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793
y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xb
wsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk
9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3
fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75d
vCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7Qemy9b+vt3dfpBK9fX7aIv30RfY28LJ793y
7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbw
snv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xaf02Xqf1du7q9IGXq6/bVV++qr7O3
hZPfu+Xbwsnv3fLt4WT37vl28LJ793y7eFk9+75dvCye/d8u3hZPfu+Xbwsnv3fLt4WT37vl2mVJ
ZUVIpFRUkdqi7q/d2ybX2bwbX4n4jtQ/j+X9C81/9CR/wn/4cr7BI/Cf/hxf8VN+Ck/IXbJfx4L+
h2I7V1hM0p4gFzxSnDAmWE8MXoUzANXoDWwkHy6llixKvJ/b6beEvPiZm3mHbwl58TM28w7d/efE
zN/MO3fXfxMzbzDt3958TM28w7d/efEzNvMO3f3nxMzbzFt3138TM28w7d9d/EzNvMO3fXvxMzfz
Dt3b34l5t5h2/dz4mZt5h2/dz4mZt5h2/d74mZv5h2768+KGY/R7bvr34oZh9Htu7efE/Mfo9t3b
z4n5j9Htu7efFDMPo9t+7vxQzD6P7fu78UMw+j+37u/FDMPo/t3b34oZh9H9u7e/FDMPo/t3b34o
Zh9H9v3c+J+YfR/b93vihmH0e2/d74oZh9Htv3e+KGYfR7b93vihmH0e2/d74oZh9H9v3e+KGYfR
/b93vihmP0f2/d74oZj9H9u5ffE/MPo/t3L74oZh9H9u5ffE/MPo/t3L74n5h9H9u5ffFDMPo/t+
7nxPzL6P7dy8+KOZfR/buXfxRzL6P7fu98UMw+j+37vfFDMfo9t+73xQzH6Pbfu98UMx+j237vfE
/MPo9t+73xQzH6Pbd29+KGYfR/bu3vxQzD6P7fu78UMw+j+37u/FDMPo/t+7vxQzD6P7d28+J+Y/
R7bu3nxPzH6Pbd9e/FDMPo9t3158UMx+j237vfEzN/MO37vfEzN/MO37u/EzN/MO37ufEzNvMO37
ufEzNvMO37u/EzN/MO37u/EzN/MO37ufEzNvMO37ufEzNvMO3fXvxMzbzFt3178TM28xbd9efEzN
vMO3pkl6z7+GZt9F9vVF58SM9+jO3h7z4k559GtmOQi87STf9Y2edzRU09bPtKqe1oq+3t6ovfiX
m/0W28Pe/EvNvovt4W/+JWbfRfbwl/8AErNvovt4TIPiVm30X28LdfEzNvMW3hbv4mZr5i28JefE
zNvMW3f3nxMzbzFt1OvPiZm3mLbvrz4mZt5h27t78TM38w7d9e/FDMPo9t3bz4n5j9Htu7efFDMP
o9t3b34n5j9Htpnft520u/6z8w7miJp63vaaifeRPaTb93PifmH0e27t58UMw+j23bPvE/8AczNv
MO3hLz4mZv8ARzbwt58TM3+jm3avvF/9zM2+ju3apeL/AO5+Zf8Abj+3e3nxQzHzBt3t58UMx8wb
SMRt3q5jmpriOY6auaqf+YNroxsZMY5tvHMLzYZYE0sMON43Xvl5Q+AYuNnNhFRNWWCPicJXs3o3
Nc7iZABbiG8ThPfjw1ZY1phHd4sY9nbUZVQ7Xr6PY+xC16+d27uZeQMe+mG3e5j5DoPpht3uY+Q6
D6Ybd7mXkOh+mG3e5l5DoPpht4PMfIVB9MNvB5j5DoPpht3mY+Q6D6YbeAzHyJj/ANMdvAZj5Ex/
6YbeAzHyJj/0x28DmXkWg+mO3qfMPImP/THb1PmHkTH/AKY7eAzHyLQfTDbwGY+RaD6Ybep8x8i0
H0x29S5l5HoPpjt6lzLyPQfTHb1LmPkeg+mO3qTMPI9B9MNvUeYeR8f+mG3qPMfI+P8A0x29R5j5
Hx/6Y7eo8x8j4/8ATHb1FmfknG/pdt6kzLyRQfTHb1FmfknG/pdt6izPyTjf0t28X5n5Lxr6XbeL
8y8lY19LtvF2ZeSsb+lu3i/MvJeN/S3bxfmfkrG/pdt4uzLyXjX0u28XZl5Lxr6XbeL8z8l439Lt
vF+Z+S8b+l23i7MvJeNfS7bxfmfkvG/pdt4uzLyXjf0t28XZl5Lxv6W7eocy8k439LdvUOZ+Sca+
lu3qLM/JON/S3b1FmnknG/pbt6kzHyPQfTHb1HmPkeg+mO3qTMfI+P8A0x29R5j5HoPpjt6jzDyP
j/0w29S5j5HoPpjt6lzHyPQfTDb1LmPkag+mO3qfMfIuP/TDbwGY+RaD6YbeAzHyLQfTHb1PmHkT
H/pjt6nzDyJj/wBMdvAZj5EoPpjt6nzDyJj/ANMdvU+YeRMf+mO3gMx8iUH0x28BmPkSg+mO3gMy
8i0H0x28BmHkSg+mG3gMx8iY/wDTHbwOZeRaD6Y7dUeYp/8AYdB9MdpI3F5nG5jtx2mLUK6L9z/D
3bVT8z+96FKHT9PdvVuY/FWh+nu3qzMdPcpQfTzZdwjMl3f/AGYx9P8A8+7eqcy+LFF9PNl9OzFd
3/2Yofp5t2i5o7/3dx1P/wA9bd9mOnucoPpztvb2afF7Hvpzt1+jNV9z2O/TnZd30adr7ePY99Od
u+zPyBj/ANL9v/HHyDQ/TDbTczHX8RUH0w28FmPkSg+mO3gcy8i0P0x28BmPkWg+mO3qfMfImP8A
0x29S5j5GoPpjt6lzHyNQfTHb1LmXkeg+mW3UPmPkSg+mO3e5in/ANh0H0w27mZ/F/Hvptt/45/F
/HvpttuxwZnM/vt3oPHWdSd3rdmmmyN6IzNdP+bcaT/84Lt4nzPydjX0v28T5n5Oxr6XbeJ8y8nY
19L9uFitDaLZS7zGFZElWICA5U9LK5autbeayWNy73JucBG/TtitPS3f/8QAKxABAAICAQIDCAMB
AQAAAAAAAQARITFBEFFhcYEgMEBQkdHw8aGxweFg/9oACAEBAAE/IWaLld1VkU9MpGWogqm3KhkX
Kq3PwbBH/WEZUtUiGQBgUGl90lXLpctSpkwASoNet1jQTAY60fV+1mzfrHsJoXzaSNf6Ye1WrVhL
kBAo0SVKmnz5wQPPnz58+bM0aNGjTps2NPiVpQkSJEiRIkSJEkU6DX5y9LJlUKrcrw2be+l95N+/
T7yb30pt36UGrkE7g2Ofhgl3wgZdQL/67NDbK8xk47cjL9IMCvQlrQAMnlL1VkxFQJvG4ut2ydv7
b9AYljAzraxpQQJRTNj6MyAFSg3m5ufaPbkBuMXzO6EVhAjn/dNxImTeE0/qTZVGdwukSXozemOR
BqV0awu2DMJhFCuHVRptJbdgsp7jPYVfJYE1W+rk+VMFqg6JJHgJxy1dvJCy2Tcwc7rdkohYOm4M
Y8ZjAp1BMM7AoiUECiiG1j1lXi7HSKOA0qg1qaCMjVq/wGMMj0yBEB1Fp44m/GqWVs2ufjgbioHB
Wy4BGkjYpiEph9B8MLnhculb2RGFObGIVCEFGcDEFUsdrqtw4ipBqWtuT58tkqEN3nixH26KVoMV
LZAD/s4ig2qGqxXlXQr2ngH8exR2PpKOx9J4D6HsV0CUdKlSpR1plMplSpUp6K6V4SvCU9FEo9tU
p6KZT1K6j4wihwfSDF7v16FHLPFgfj0QS3l+scxJguxPEZpz6UQqslQBmHAq3johCgRExNGdeDnm
KquBKFEcXuttFFhRfO/MFEs8KbICqo0tbTg7mEN25O7T6ryxvLaKuFQQ1gcL8ph4ZXOWV4CX3OjA
qBeBQrC7HI09OfCg9NluLZ/m7VHMNk6iBWUEXJiLOWx2mw17bijG75U1GLxaC5YVTNIkL58FxhJX
ezKLXNiF6gG9TR2UTwLCFh31dTk7Ou2i8yzCUGNmveBEY6NPeyYlLEaQVlyDhLMdjwUzZlLZ6JIQ
LuCm0hcF5ZetvJ15n2Azq2JNY73pwgpiUibyYKm7XaLNtvUt6F0lWd5HWZtQCXF0E95bguQTOgzh
QFCLC8hbOu6gK17U1Q28EBiCwAHi/MgpscUvE1uyn5+/dqlSvcUyutSutMr2lMplMplSpR1r2BUq
VKJUo6NcfxLe79ZrqeJKNMoniv1YHeB36c9rRFFoeRVyn88dwqjpsAPDkzPvuY+cnn6Y5nJ32pTG
PaW1m5873RMDlBMDmJg9zHNtCCrwC5fLzEqWrVnXP6H+oDB0QlCr8HywE0+c7/adstsMTJE21IQX
C965acO2woGrreLwqamGFKuLWP8APDm4NrgBoZVgvRgxKOHGv0QehPxVcIDHmMCmAVR2UrG7Di8n
nmbzEqN9VvhTmoWtT7XA/wCeq7ortqurx2/sD3cuYtlZVt5XZ4v+JKiip4w+D/HsKIAlpAq7FmNv
Zm23U5DC5IqUXQw3I2Y8AbAbLs5NlacW3uXblpbM9zl4muI4wgVJtTyLErTz0t22fwHPjuVeK883
oHh+hLPJed3v8X+ReImq4wK1oc/rDkjyi3aX9fdBon23IGRYsX+ll+on+on+o68uX+sh+kl+kh+k
h+ul+ml+nl+rj+jj+ql+oh+ij+uj+uj+uj+uj+q940g0880082/+/pPdtttvOeaCBBH6zqEEfuZf
vumTqj0SXZgjf/D7xup7f9IkWrFXdgt+Z01ve+v/ALzaKV3bX585filguWheHDOMGMdGQUgB7TX4
P3iI06zZyVpU8huEJ7HSk7VYzxv6L8ZmgdwA4A0waFkQAryfUcXWLQEkq4x82dsGpYSRonCtUuwu
lhZnI2XavfDFa2VuCMUytRcFCxhuKjLd7TinT04cAwwFaVSaLxBp7tqqZsmdx7lBW7wCWSSbol35
kkLoTfYXg/njcxlHaCP7calNwK525bS4NiMoYMDQcwOLJUAjQjcmqgPrqymf85r/AGVLZSEGih2B
aXINhlyJmhecDB5mWXa9khzV/IFutEBRxsCJoJx6d4LjDnk3znHj7BjwY/ee0GDFixY/7Rn1o/v5
qYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDHz4YMIkVm3+BBj58+fDkCN
kMGDBgwYMCCAZLHtpvJN9Lqs8/ZIFMDJAW49K84UGOC8yWpmFFtNCrxoucD0o6h4Ky9a+TS1occF
6LbSlgUulOAYpWEABCTUWcs9IcklLdX/AEB97LWBCYslPhcpWkfSSVJ68S8sjBGmdLlC+1bHpyhi
NOsc7C0FwpZdO4u/XuGRyAkrAhdNSO5XksT6kRgpix/aml6sZKp6NJbfc3M+T8K/7Ayu4Eb07G4R
UL500pno+8bDDwvzgEXDU+kJ1VFQDBOWn0VRJNmjYsy5HqOaJ+Ff9n4V/wBn4V/2fhX/AGfhX/Z+
Ff8AZ+Ff9n4V/wBn4V/2G9eg/wC/+HdXCaizX4otBTLDHfGpn200mjVsnAQFRHIIaqd0KhGkEmnV
6ZBSeCUy28mJNpKd15PFopZ2bRbg1Id3mRIhMjpZtEeIEZpvuYrag1LoWGD+rYViJVKQjU7Z3cmt
gBYBXurZACyITug2XCRgIu5ufhsMC1tKTKxSd09Ft62QWMSiJoF3ixlfUJQKTQ4SghLTbCYLMvff
oNiwWMqRnaLMpAQjYFyKuNFKYQG3EJROAga5KEy5gFzCyx1QRLZIVcf0IAXwwHWVa8wsQ9uQFwVF
D2VzALGCa4KJeZXZE3YlPKszAvBLxAed6vGiEhsFOXINaF9UdEqeHGbKRBV2ivoPtcEtptyrwNNb
S71RmpU2Joavyo2WP6OtPYcOHCvP1/5Qn/hnbt27du3bt27du3bt27du3bt27du3bt27du3bt27d
u3bt27du3bt27du3bt27du3bt27du3bt27du3bt3VVBBuYLBoo1wqIi/VMv7j9G4w+oip3IoZEqv
DP8ADKWhxIRSsBHBWh4gwgfUwcypDFqcFraaPFIyu/LvW+MmOWJ/zJsBITMIg837CHUcGYtW3KAq
ibE3xoi2NBBKmoHjMnnhIK0KP4dqQpbFjN7BWJsXzaWH21DFjDIdQlK216xphY1Wpp/ZWNj3Uwqd
/Ppoqjei5luM9ccoXCFymjemRS5mdhyKh6aggTDZloj6mDLVU2Bh+IGi84GNvkaJcgVtf0TMzVLm
+MWb+ZOWXKziU+4uNRu4tu9lwWA8Zsa1kedIQ8wgpLqHeBS0KY3YEYkFbXawD3rhPxzMyfdyanm3
SVY0wjYPlIWllPDuPyE/IT8hPI+ktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbt0C
0FzITZbBps744IO7sRfG4QAx2cotkFm6kcueM9w4WWgeEv0ITDgBU2VOeNRj1MhCoFcGupBylcyZ
7n8P0iOiQ4a10tGuDYIKeRo3A3b1NxDEbBLb1eKLXjsc75uHGLl3Euos+70CoivrC+opsTWzAHo1
UrBvQVubJNVSNCr83fFHxTGbm45W36WQiM7Sh+kA+xE5simAG33wH1/jioAJsU7txwRIjPXYQgN8
wYxAgx60K1hi1Hbqa41lMmJlJ0tcMrDKgb4v677h1ImCxe5Iqdz8zQIyK4Mdqh1l6FyxY/1YmyjS
RrdxfhLIfPtTEcO1N51AqiKkhfyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyz
yzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyyn7vvKfu+8p+77yn7vvKfu+8p+77yn7vv
Kfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p
+77yn7vvKfu+8AMwYN/Uggcihu7WhWgeJo46EIcOHJmM5z5tq0OvwG5DQA4oFPLMAjgEyO2K5W7s
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
skR5RV0Kb7kTAADdoh3cNQ9Y3vA9aA1BKBIxnumkDYNogkKPdqqtPtCmaqEqDZjgyHOQEoCZQdfw
l+2wREuCshdKk8IBI4duwEKTMGIjs+OIisZlWHL5zBA7K9S6U4HbOeSg+qSMOdhxrR9Qe5+/v/XO
44VAaIr5xCp8V/mQCII8iCPqOn65tW/m2+pt9VyJCe9aNgP1AD4A4DBgvrY2pQeHI8Rzxs9bYuME
IEVBA1rFWAiXRsgWjamzoiyDT9imWg4qVwIjT4zMJEjJKM0ql4EIgrR5xcY4Ff7uZGDkB8NRuqmE
SXgMxzcNG5DIblbe0ViSULNcnMEkWAcopdcVXBCIQlFwgYcwTROXZGoLQAjA5GQR4wCzLo2gqAmm
xiAl9BV0zzgOY1lFgQKkkiya8I3CeoQQUiRIEZRmNMt/mZ30zfYdY0ICCEhGwSAdCom0cf536NQU
T1Gfd/3/AL/oh0GEHruyp/3gxKgAFINE4Orq37pJLEXkKMZHPDfV1xnxjDYusGwFzKpOFxNwFhjw
wIx5Xb8d4Us7/cuI1QBMArBX6Z8H3/0Hf2+zf34ypwp05eO38aZrklSWyXi79cSKIn1EgCJZeAiC
mzXRLbtRPt6rIAQAoAAVODqQ5RVVf7hPpol4sY9kx6elPe/4P/0xNDNCCAQOB6k29ch2PYyHY9jI
dj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2
PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9
jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYwkCH/Tfxj8
TiMISqF0g10C5wSBN3vu9v284aPB8nj9vOEB7fxeD8DDV4/k8H4FCni+D1fLn2jq/wBvX/eDT4Pk
fBfRw0+D5HwX0cNHh+R8fntnT7XFvR9L9sNXh6/jr7euGjw/J4fb1w1eP4PI93DV4/g8i+rnd6f5
n2v2+nU269T6Pb5q/HvjH7dtfZ/k8X7dtGnx/J4v27a0cWu50O3z734px6Pb5q/b/m8T2c+3fF4n
s4ap0/g8j3chvsvze59++/sXX0/6s0+H5L4c2+TpL7uNHs4aPD8j4PZzi8PP+7439e2HtPyPj89s
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
/9k=

------=_NextPart_000_05D4_01CCD7BE.591C80A0
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

------=_NextPart_000_05D4_01CCD7BE.591C80A0--



From xen-devel-bounces@lists.xensource.com Wed Feb 01 10:12:56 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Feb 2012 10:12:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RsXBJ-00027d-Jg; Wed, 01 Feb 2012 10:12:49 +0000
Received: from mail174.messagelabs.com ([85.158.138.51])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <al@ohosting.org.ua>)
	id 1RoKZu-0007yO-7Z; Fri, 20 Jan 2012 19:56:51 +0000
X-Env-Sender: al@ohosting.org.ua
X-Msg-Ref: server-7.tower-174.messagelabs.com!1327089402!5826427!1
X-Originating-IP: [195.248.169.244]
X-SpamReason: No, hits=1.0 required=7.0 tests=FORGED_MUA_OUTLOOK
X-StarScan-Version: 6.4.3; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4534 invoked from network); 20 Jan 2012 19:56:43 -0000
Received: from ohosting.org.ua (HELO c2.ohosting.org.ua) (195.248.169.244)
	by server-7.tower-174.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 20 Jan 2012 19:56:43 -0000
Received: from nobody (ns4.o.dp.ua [195.248.169.251]) (authenticated bits=0)
	by c2.ohosting.org.ua (8.14.5/8.14.5) with ESMTP id q0KJtob5008865;
	Fri, 20 Jan 2012 21:55:51 +0200
Message-ID: <3B8433EAEDA04EADB4361C946BA29688@nobody>
From: "Likarpenkov Alexander" <al@ohosting.org.ua>
To: "John Sherwood" <jrs@vt.edu>, "chris" <tknchris@gmail.com>
References: <CAFoWEVPfusbuE42T9KzZohsP_V_r1y9t_rEM3f8ee6kMxsiAmg@mail.gmail.com><20120120154745.GV12984@reaktio.net><CAFoWEVN20pqy-79k9st2-fnD-1JjOzoKTwXmMUJ+fwvKPFUGHQ@mail.gmail.com><3B7B9131A63345CCB34B508E3E4F3507@nobody><CAKnNFz_DUQQ5FjGB83_p-uFefSu63T3jVh6Gu-hE5xD978qj4A@mail.gmail.com>
	<CAH5ygH1Q=Eh8Ma3erT52r65VceGjQKgiLxbRSwa_rr6COS8p6A@mail.gmail.com>
Date: Fri, 20 Jan 2012 21:56:22 +0200
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_05D4_01CCD7BE.591C80A0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.3790.4657
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4913
FL-Build: Fidolook 2002 (SL) 6.0.2800.94 - 5/4/2005 11:39:16
X-Mailman-Approved-At: Wed, 01 Feb 2012 10:12:42 +0000
Cc: Sandi Romih <romihs.forums@gmail.com>, xen-devel@lists.xensource.com,
	xen-users@lists.xensource.com
Subject: Re: [Xen-devel] [Xen-users]  VGA passthough still not working
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

This is a multi-part message in MIME format.

------=_NextPart_000_05D4_01CCD7BE.591C80A0
Content-Type: text/plain;
	format=flowed;
	charset="UTF-8";
	reply-type=original
Content-Transfer-Encoding: 8bit

This whole garbage works for me. I have 9 months of sitting in windows mode 
pci passthru (see attach). Also on the past 15 virtual machines that are 
involved in hosting this system, two PCIe graphics card, 2 mice and 2 
keyboards, which are divided between two different autonomous operating mode 
HVM. I'd like to see the login screen from the start, but you can not run on 
gfx_passthru different operating systems and versions of xen

 JS> Most people run Xen for headless virtual machines, and VGA passthrough
 JS> requires VT-d support in both the CPU and motherboard.  VGA passthrough
 JS> is also somewhat dependent on the card you're using it with, so it's a
 JS> hard thing to test.  If you want it to get more love, then you're the
 JS> best situated person to do it :)

 JS> However, on the topic of Sandi's issue:
 JS> If your monitor goes black, that's a GOOD sign - it's indicative that
 JS> the dom0 is relinquishing control of the graphics card, so at least
 JS> that's working.  In my experience using graphics passthrough, this
 JS> problem is related to your card not being fully supported; essentially,
 JS> Xen can't pass your card through to the VM during boot.  If you leave
 JS> the `gfx_passthru` option *disabled*, you'll have the emulated cirrus
 JS> card (by default) and it will at least boot successfully.  Here's some
 JS> step by step suggestions/instructions:

 JS>    - disable gfx_passthru in config (delete the option or set it to 0)
 JS>    - enable VNC, listening on all interfaces
 JS>    - start the VM - your screen should still go black
 JS>    - From another machine (what with your screen being black), connect
 JS> in
 JS>    via VNC and fire up the device manager in XP.  I don't have any XP
 JS> boxes
 JS>    left, but in Windows 7, you should see a device in an error state
 JS> under
 JS>    'Display adapters'.
 JS>    - Check its PCI slot under 'details' - "Location Paths" should help.
 JS>    Compare that to `xm pci-list [domain name]` to see if it matches up
 JS> with
 JS>    the graphics card.
 JS>    - Install the driver for that device
 JS>    - Reboot.  You won't see the BIOS on the monitor, but it should use
 JS> it
 JS>    once Windows takes over.

 JS> If something in there doesn't work, hopefully I can help you debug - I
 JS> went through a lot of this a while back.

 JS> On Fri, Jan 20, 2012 at 2:24 PM, chris <tknchris@gmail.com> wrote:

 ??>> I'm really surprised this doesnt get more attention. For as long as
 ??>> I've been on this list, this feature has been mentioned so many times
 ??>> I would think that getting this working would be a huge feature that
 ??>> would make the product even better. I have only seen the occasional
 ??>> success with experimental patches etc, despite this being talked about
 ??>> for years.
 ??>>
 ??>> On Fri, Jan 20, 2012 at 1:53 PM, Likarpenkov Alexander
 ??>> <al@ohosting.org.ua
 ??>>> wrote:
 ??>>
 ??>>> Please make a manual
 ??>>> or let's together make
 ??>>>
 ??>>> В пятницу, двадцатого января 2012 года, в 18:49:20 Вы писали:
 ??>>>
 SR>>>> Pasi,
 ??>>>
 SR>>>> I have that enabled in my BIOS, VT-d for the chipset and VT-x for
 SR>>>> the CPU.
 ??>>>
 SR>>>> Have you managed to pass your gpu through to the domU?
 ??>>>
 SR>>>> Regards
 ??>>>
 SR>>>> Sandi
 SR>>>> On Jan 20, 2012 4:47 PM, "Pasi Kärkkäinen" <pasik@iki.fi> wrote:
 ??>>>
 ??>>>>> On Fri, Jan 20, 2012 at 02:05:43PM +0100, Sandi Romih wrote:
 ??>>>>>>    Hello,
 ??>>>>>>    I have spent a lot of time trying to get gfx passthru working
 ??>>>>>> on my
 ??>>>>> system
 ??>>>>>>    without success.
 ??>>>>>>    I looked onto my hardware capabilities again to make sure that
 ??>>>>>> it does   support VT-d and I am not too sure that it does fully.
 ??>>>>>> My hardware is as follows:   - Supermicro X8DTH-6F motherboard 
(5520
 ??>>> chipset
 ??>>>>>> which supports VT-d)   - single Xeon X5650 CPU (which is listed as
 ??>>>>>> supporting VT-x, no
 ??>>>>> mention of
 ??>>>>>>    VT-d at [1]ark.intel.com)
 ??>>>>>>    Now, according to the [2]VTdHowTo, the motherboard BIOS,
 ??>>>>>> chipset AND
 ??>>>>> CPU
 ??>>>>>>    need to support VT-d.
 ??>>>>>>    What confuses me is, why is the 55x0 chipset listed there if
 ??>>>>>> none of
 ??>>>>> the
 ??>>>>>>    CPU's supported, that I know of, dont have the VT-d feature
 ??>>>>>> option,
 ??>>>>> only
 ??>>>>>>    VT-x.
 ??>>>>>>

------=_NextPart_000_05D4_01CCD7BE.591C80A0
Content-Type: image/jpeg;
	name="01.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="01.jpg"

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAJPAzADASIA
AhEBAxEB/8QAHgABAAICAwEBAQAAAAAAAAAAAAcIBgkDBAUBAgr/xAAcAQEAAwEBAQEBAAAAAAAA
AAAAAQIDBgQFBwj/2gAMAwEAAhADEAAAAZ7wD9R9+k8ln8iZ5E3z95K/eL4z57ydx4J7x7vHFHFG
UucUZeHpvMX5iT1rYZ50404tc5E6sZ+IxlbFMfjb6fmzvyINjnpvgWx/NSuH1Y2246jmVteOpJNt
lSf2W0VM+6Z2z+1L/aLY/am/pFslT/qbYfanfpW16qH0teqiRa/7U/6m16qH0tcqmRa5VIm1qqn2
FqlVPqLV/aqC1X6qp9hapVX6Wq+1UStWqp+oWpVU+otUqqiLVKq/S1KqwtX+qp/U2v8A3U/khbHn
qXz46W07tRO5ne3XbqX6OW1s+5Vf1cdLR9utHq+Xa40r0S7PL9Rejnh2t3g9d3+3RPPMNLXYvW2J
vmdTdPj15e7+a/0BsO8SM6p/V5S/Hk0Cnr7PP+36flyd+nfhfifv2O/F8Y5Mv4vJ6It9TO+OWB+1
73DtjzxhnvBvEYd/MehXKs01ZH0fS8XE8/4dfPhUazr4vs8dSsNut+eh+PSRdrj9GVKeO7HKikX7
u2TST7doUl/V2k1pN+rr/qIpP9uwKULsfYilS6qFKl1vqKU/brfZilS6pNK/1dP9FK11EKWLpilv
26P0pcukKW/bokUtXSIpcuj9hS77dAUwXQ+wpf8AbnimC6Apeuh9RS77dAUvXQFL/tzxTHmuN9op
zy3B+JqX3LXqzWD0rLdjz7V39yde/jvF+UZt3fkfUwb0817vk2j/AL2ddnP0R/5ss8nn9kP92Vv1
8foIq+Sv+qXhr05Tj37Hw/f2g6r7/Y+vB8mq14/wvt7EO/XfM9vLwZjVPwsNrCZvTvEFtg2T1ImL
15e54WLQj5tLbZFrXlO2N7MLxvAp2kzGq/xPlTYpmWsO821JV+RStaV/kUiV0UISuigSuij7aJXR
WVlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlRFYlR
FYlRFYlRFYlRFYlNFisyoisiVUVCVEVpmU0WFZTRYmZT+xWJTRYiJURWmZURWJURWJU1qXXox7vm
eJf6g12Po+TIf1Asw+Xf2OOPo7+P9ixfH+sY1pkvHh+NfC0k7AMTwT7FZnzSqvpWi2H48bpwyLlw
L1TJmFU46XwX/wATiHD/AJPtm/ng/o+C1vv3DEkXj3ftC7k/RplbneS/A5xwOcjgc44HOOBzjgc4
4HOOBzjgc44HOOBzjgc44HOOBzjgc44HOOBzjgc44HOOBzjgc44HOOBz/DhcxPC5hwuYcLmHC5hw
uYcLmHC5hwuYcLmHC5hwuYcNGb2UX9vzPOtrUzZJ6Pna+bQzF+pyqbFGwzp8l2WJ9GRel684k5pI
8z8a+/E/RmiMf1/4Mj1ykPPfG/HpZbiHpnFfXyP1YpFutzbzHPWfOqdKdhMW+Z6vUif2uxze3j5H
KHse69OZIn376I8t6hHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHl
vUHlvUHlvUHlvUHlvUHlvUHlvUHlvUHlvU+y8p6q0eU9UeU9UeU9UeU9UeU9UeU9UeU9UeU9UeU9
UeU9UeU9UeVQTYhrx+l8nDNnWse+Hl28OVtRu2230Mk7VfeXlvdP32onRvW4/wCa/Q/Gl6/xEEF0
XT/VA8uvNzVeMApW4yqnp3pZhSnu3vcn8YhC9Jsz8r91lZQxeO7QZ7YOjq0NsINx/wASPLZ2S4/Y
rfn6Zx54FyLTCVvsEX8IBWKVvXVYoV1WKFdlihXVYoV1WKFdVihXVYoV1WKFdVihXVYoV1WKFdVi
hXVYoV1WKFdVihXVYoV1WKFdVihXX7YlEV28KzFbTF0a+jE5yrzI01kBgEvJ8BYwVzWMFc1jBXNY
wVzWMFc1jBXNYwVzWMFc6v7LNbv3/iR/fCjG4vauvq/sXSrzX24v9GsE8eXWSIe8LMPZTM/zXDux
Nnu/WXNFpK7cOdWaTDC+OXAI6yjIyYx9nNUMQxeV0I96kmrRW+RMJzdP3JMm/Kutj1b4fjTFhVca
/wD12yv8d+v3wvRJswVn5lbKfus/QrNqflRMPvN7FYsyhNaklxbR6wiQAAAAAAAAAAAAAAOjWOzl
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
JPB0OGOIanPuRTklGPv/ACNtVfbAVHvE0ZZTuW5vJfLTWY4rIP4hKSbZyt5VTpO1mW46x7H9IuB0
6uSnSuf9evXoTaTvahXza2kaTqrY/NrfTRUi1+Wcgfrj5OZ+8CQAAAAAAAAOjXywdfCyIAAAAAAA
AAAFRbdUm+98Oj27nSVu1+tzD78+8V+hhIAAAAAAAACvuZ4ZmZJ4Px85CMFwyZsC3x5a+2W0KbRv
OwbKaj+fS23TpNiekXO/EBetrWdueu8j0j3OWOf3eJp8bE4arayPoRblkTmki05xCL3VwrrwkpKE
/ayrqzM4+jQXj8vp2JNcHZimxbG9Yd0KxJci6vs/20vhj+s+6lKTTktKYli+x70tY2YXyuHI2sfr
RttBfn9VxBIHRr5YOvhZEAAAAAAAAAADVHtc09dlw+I7stKG6+3jffn3iv0QJAAAAAAAAAV9zPDM
zJPABwYzkeDmcVPsXpv0btuDCIizvYzj1ffmabN+zrSnVa6n7pRidNdgag+J3pskVnsxfzBnqAAA
AAAAAAAAAAB0a+WDr4WRAAAAAAAAAPh9A09bhdSfZ8LHu63Srt7v5cwYd4/E/okko5EjI5EjI5Ej
I5/BJKM+YkZHIkZHIkZHIkZG3dM8Yp+yJc1j6QSTQAfj5yDjoxetLqYnm6GB8EhjxcSkdE4TyZkt
HlYNJyGH5gIBIAAAAAAAAAAAAAHRr5YOvhZEAAAAAAAAAACil66i/f8AhUR2T6z9hn1+X5/S8eOe
J/RZlQCun5ALRPyARP2BR99zehNsEcBPyAWifkAifkAiefTrlImafIK9rmo55FgeSyekc/SRUdCR
UdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCRUdCR
UdCRUdCRUdCRUdDN6+SHFRaNHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkVHQkWo06QB9v4
1VdmWtHZN9Lnuw67jv0HsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647Drjs
OuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOw647DrjsOuOx1vvUPT
dcdh1x2HXHYdcdh1x2HXHYdcdh1x87Pmds7DrjsOuOw647Drj8wjMkM/b+JTy7Wmnu9p+Qbifmn9
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
3t71ZdW+z9iQ/NhfhwqHFVpyRKqKXEZiyHfA2uioxvcWe0wprj0tdlclvyUnoy3ZIT2LUOS29wdo
zkRK7mPJkqdpxbnNgb0LvkJuKjqSZFLHZBnyEOidCoNVo/6BT8acmmESLVl41ZeNWXjVl41ZeNWX
jVl41ZeNWXjVl41ZeNWXjVl41ZeNWXjVl41ZeNWXjVl41ZeNWXjVl41ZeJJTjIkFvB7qF2HGFxmF
936IiHgp4gVqqxokkaUSEtniv/zEjFyIsVxwmvJcYK0OYdmJI8R57hpLsYqxezGWu2Nm5zSpUxSN
N+xIfmwvw70eEh6xClakZCWdNDcrR41q5MxphfvUbfiKBtAJxuhKalkBQKnqyDtRFEmM25JV4hFr
y9nQJJY4qMesikJIdYjfG/HxrS0x1iRRhj/oFPxsh/o9TxQdtxQ+3QZYiyCbcnLmCohU6zxxa3Ka
uzm3SW+SKzJ0jyQ4rE7pks9uZHCdLkx12Tza3ti1YpRdUdUdUdUdUdUdUdUdUOv+pGNt81TrU6si
QU4yJPbyvQ4CtKVCk9Kl9FKp0lbsSud2m2rgpWMsWmzmvRXzSHFJo/MW96COVOrnKH3Icea01sxi
F7NKMgxqNR4p+aLkyPILBRqKfWQ9z/GQ/Nhfh3o43IqIqcLqTyaWR1nh2c3iUNTUvNVNTHKXyRGF
S6KqTKzuE2WnSeNpXRTJY8kSNGTYS6RpI+M6lz5LeNKUp/RqfjZKrwdnZub3tBSNMOnbcZakK46x
rgdGWU809GhUraxaN1RpIyxIr1UPjK215iBrk93xNgMususLs6tB1aDqjqjqjqjqjqjqjqjqh8t5
pBycjzT1kBBx1jSkNQIvdmRp7V6I3pmRBVrZNoydLE2zHkxZUcLgr5EpE+Rd/e5fbA5OfBJNjF5c
1rrjSUGNDtApeapc8VP5h0Lih8bWfjIfmwvw70frDTEDagVJkL8xEyZ6QYQjiJxaEBjc1RtpmEcJ
LxrKDY0844NVlERx6epSTCJWQ81xhK6s0Ki50eXf0ir40nSJ3CX7NjY2bGxWGxzhtCODaEdGzo8K
Q6ODZ0cFIfHKjZsbtFIhHKjZscGzY4NmxsbNjY2bGxs2NjZsbGzY2NmxsbNjY2bGxs2NhzL535UX
yO1PWoraJDJkl77Y/EMFrm4JWVsj0jbpIR6KZAzJWZY/NqFb+1Ifmwvw70V23GJ6UpcOArbQX/pa
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
1UIjlTUrrME7kyEau/AW0aeR8EzXJu8F7Ufpo5yM7ieEb3F2ELdGwmCS7qKo1WzrC4KC3OGAYfpw
ZOMyGYqNZItYU3Ec5Zm6bF1sDK5gwNqFTylnW7xZyjCKJ96RFUgMriekZA4ZQGSM5qDVJbCRzo1r
FiKLGDyOhMKBLQAoYW4rSZxjncdGBlxwFPUcl7hSd0d2s/pXDWJCN+BjWwWVfMriigWpEWPIrywu
KhQzGslcqkDrAQhEHVNCo06vjRkav279m17epE0xaWms7ZBOYQbmujgpi+X5hzJWj8bg8PjujkSL
e4iscjd1cTjQZJfRRbw1mqkvh5Bk1JZW3Nu3hXJPpIA0TgKo7nsnUuNzmxcKQwmrsqi+Irbikp7I
AG7Aknr57jIQcf8ArxBuceLLC8kklg5McLpkDWBzh5nyIOlRBkVLPbKsv7Vw21dJYqg0soxbmgtI
5t7RShyhSHJBuxEDTxOcjon6a8RPtk7qd1F06+rq28In8qfJt4RP5U+Tbwifyp8m3hG/zfJt4RP5
U+Tbwifyp8m3hE/lT5NvCJ/KnybeET+VPk28I3+VNvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM
9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35
dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM
9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35
dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM
9+35dvCM9+35dvCM9+35dvCM9+35dvCM9835dvCM9835dvCM9+35dvCM9+35dvCs9+ny7eFZ79Pl
28Iz37fl28Iz37fl28Iz3zfl28Iz3zfl28Iz3zfl28Iz3zfl28Iz3zfl28Kz37fl28JH75vy7eEj
9835dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dvCM9+35dsqei672SsXVPcDg
W2N+6J6/yYP2RF2RP+imqd1NeveTX2W91PZ1TqVF69s3ibWY2zKco9HiQXaiDc0g+Um2jgxbG25J
5zIWilCMJjRZdBnvTuRLxDyxyRJZUyunyEIVt7e0PPCh4UNixURN9QRNs6c4h0RFoNMMOZFJFAkB
A3Cmk2Br3CxBcBHyPGgt7bIRmySyPe58d1chiGGTPfK9ZpJoY5XdScTcbwnr1Jruu06u6qIqoia6
9sq9TV7qO0VNF69jjiMjsautZRxY+CLURY6ZMoZLpJ7eaw9EVDcPG5lWgQoosu/HySOY/WZEhqT/
ANor4p+PU+J3LrG4OBKiSpMOkZZATRUlmwyS4EOSaxrWRAMkOCGV57ht8fYCCR1byVb2Qr7LYJxS
TOenr70XJmvi5LoceCvNCKu4xl3iD+MyPmupjIwUZQFehuNaLBL/AA+gNEIsnS2slyCGENZW8JNW
GmPhK0QUgiqgKu2yEFxo0uKIDdIIs41CbXS4njlBAPAsiSpPRGXcj3rCkMMfKQQWUIoUj17T65hb
Cipv7fJ1Lp7Pt93azqZ10ZYBEirL9tCssbkiI1RN5HCv3Zmub26LGjmJvIibYYywMrZ7auys7J8m
KHWdIJjLUPIYDlqm8ss/1uRcipEyVImRBMfC3itYiLyKQgOt6gEGCgyGfMsutGkm09sBZi81jt2E
4HFxz5wI3ldEGzoyJ8kEbeDuMZETIUMTWjAykCsR06kSZDZQ14d5aOhem7HHK2sSVpT3vJnMubZi
qibyzdxNsjpRXDxkW9FbVkMhLnxjNkPAnFapD2Ne9kGsvpzmscqR7yoi7YiZRUWMUxdTcRz2ZwFO
FWllgzUFvXEMhlBrY3Ezc0aLOyOVN2cHiGucwmFjViqJIQeaBfjkI187M81tOaGocpqbaVkmNWwM
4mPRlCgOmQavMLgUlGQ7w4qtcPK9BKUOlq+ydnd9MbEST09Ob0nfU8IC1vINEDjdDOksdsy0nkdW
QR1fJpG9srV7ndXTTq6l9hf4X3+rbuJt3E27ibdxNu4m3cTbuJt3E27ibex/6DZJ7oo/0BwLbHNz
cV65G5E4rpGs68J7IaLq6KEiTqTVU3Ynaroi7qauTdXkOvc/4ew/6HUvRPUqa7yO+1VNdF2Vd8Lr
Vq68wfvMkXiauRUpk60aqs31aqORyIrU06+pQE77uEWn26o537leyqIqa67vWidqqt27tfvewvFP
RV9pFXof+dNPu69zbvq/q6/D2P2r3N1b+1HbaK1vV7Tu71daddev8HflPXd69er9p0+20Xt99NOr
7u3azBq17O6pNi/WOZqu116IRi7ybu7pG1WNdojtdHbd2u03lXddKfupruoxiftNqjGoi9S7znPV
HbyaabKmtcujdNFnstGP3Wo7c1qFezq3tztlRurOpyM0dLOWVVDDx6LNMQadBEki67ivmmq2Rqr0
c72WNdK5XNbvORqaeizC0+4uSxNdr7KKx4jXpp9xHfxd3bVMswvX2P8ACaL+f6zVdP4Wia6a6aL1
7NICNpjhnLweYEsDCYHSpvIkUZDKuZJFcjm7yzL22/6WiPY12yN/a/t10RiTWPf68NNN+qc5i6Kq
byS6Ivbbj07RV1eDvPVNfrqxTVNU3Vdv1LHO7+RXLGxWbyOmc1m8vCTV9cmvV6qN0cqoxW7n7Vb7
0Xef1ozq3Pa13UdvV6Kjl3V49h3ze2bu/tR23Uiv7ip2vWiprsm9ICjdNHKpNj3ujNdeJTvb/wAG
1eprXapo1zEXbr6OT+HoSboxydrqqTVu8zdbr1pL1r9oveLqvI99IurCLSRm8qosujZKldZNxGSP
lFjj31dJv9pvKsbbO5xqtWZquiafdco+RE6l3Y5gmyp173fsZ1N19nTb12YX8ZYvmmzIosoxCV73
IiRw5Ak0q+3uRRhOe9yN1XRE9jtnNbq5Ota/q77Qox25r4NFRtWq+mIkioqIrO06nLr1d8B7P/DW
Psdf/mjZnWDo/uLxz+v2+ror2O7227tpvV/wg7XvWL3Eql9lyp/9XX73fAf56x80bd8B/nrHzRt3
wH+esfNG3fAf5+wT/XU7d9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV
/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/
AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8A
CTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJ
O81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7
zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvN
W3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81b
d9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt3
1f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV
/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bd9X/AAk7zVt31f8ACTvNW3fV/wAJO81bZJv8
Pe9EjfBPe9mnoDwPdVHSRQPXVuirrE3RdW9em8uOfcyKRfe4N2RV/wCzZSC+tV9KhgYms5Uzt90c
UTPa3I3qTN4IPhkSTO5QQoqExcgfyszCpFFjHrTpGMDdHA9m9OyHhyQxv5mPmu13uBvcJvE3WtLr
5UIGc7d4m6rNF1/gO7fvFbJ3vevbtIAWRO0qNGb7Iqq3L3VfFxdNQQCutrXMX7u83ubWLpd51Ahc
cIbpgCq8oMVgISkHqKdDAcQMhamxFJGLxRuVcRuSic0QG16bjo5OGsckb2vZLFJ1ceJ7dd6Jr+1V
2ie3p7G1Gq9arTVSqq91X9GBI5yr7O8qOd9ze+51uUcOadXStHYQke9DBK/iaPnb37UYrGLpu9fE
b1p7LYSohZSYZXRGTQzaacNdXokCwJxzURHxcmBKb9ct4PH+22xsVyawlZHFBPF9rM2GhuCG76ez
6cPHIiew5qd3TaZjauTSCWeNU5PI5eocjg6s5KiJr9Xx+nI10z1+0Rd7R6Ro2hJm1VFdu1uQ6M0K
FH697GU19VMk/wCi13/lBVJPaNEkA5f+5kcsTdUTiFZPYQlP9pvHjHHR24jfBaLvI7RLSaFyxyxV
pskbm9W69sJb43J7KKx26vU5F7XqVPYfxUuIYN6xiSV11aRRSrXEcsWsbJsmgi6nr6UiQtR/EXd0
4XXXEV9mdNxLGKtLCks5joWQwUtwa1zInGGKm9JG1Efuu1cO/wBlNUx3q7lmS1f+UjMcvVXe9hd5
zGu7nUqeztkU8Ej4JoaG5ljmhfJDLFIyvJVj2SRPjka5qoi9q5PaXq1TYF1naZuadYkSRjMqr+zZ
JFE+clHGTyIbGr4IkTR8LPTFTq6tsvBSxMsRq/o+OGcs8uxZxEPyAOWeGQ0gl0fFQMZ/pb9FbHpq
5F2zIoiNSXjH04YzN2eRdyWmqHqzhQDmTv4hhayfWQc2iu07bbXouTyZkn0X25EqilhgIfNAjiw7
KBJmt5/VU5mnHhbvMEhkYriWKiHjORfrew5KvlldvyPwjBZHSORu85Zh7t0iKu73qviY7+Hqiavc
ndg5pzmKWRAHBw41kXmSZIoo+99hskzNV2zUS+jlgpaCSblLasqZJGOY0nhxNMIV+hDnjfXG7FEi
wroxd/TXadYiuch0a+OZWRN3kcQZH3GI7TRYN3qf16fxbdxNu4m3cTbuf+g2Se6Nn6A4Htjif+0E
36CdkbZDht55o4zoGwLI/dkhc6PiRMTe0innkaOpLIkY0qRgsBCSMePcCEKPOg8Q03LSI88gDfL5
cQvWMZ9BI6N2pHD4sqK/Vju27Z2vJTyoRM+ff1j9PVqcsNV9+nCXu1vE7v2+vdVdrCygcE+EyeAl
I1McLMiclXA7npVdYaemgOm//wAmnerptJSwRsQsJyNIY2eaUeCNww8sRz53B1kjBB5CHRcNj0Je
VAsILoyo5zgRwI3ukZC1zOK5EbK+Rz+IrmxpoyKLf60hjayBO4kaJ1bUP4iql/j6NF2eAKVAEM4t
HmTujlnNVGwhPTlWaRp3zGr9co/2fYc7UwCHiJFDXlRpxV65JJIHvd1728ur5HP7uiSLvpo7RdsP
RP8A6VfxL/g5kqt19riq1kKfdemnXsE54kfC6eG4siibsPFTsh8rPvFuoOshw/1qoq5Ai8Dt0q0d
2+11FYY/URV8EYa1bmVle6OVn11zLlk3OI4p2sCrE9+4zqc2NIJYzjl1Tu0/YmVf+XvZTeTSLD/6
qOONdVXt+1Z19uut11Kv7VHL1dap9bFdoiez/r2kaS0gONxxKsn46RQdtYWhMW7DBk9dIzVpDVkV
u7xuWISbfbyHBrGqrnuiPEGVJJY5n8WCqziaRXbttdT6KhLId58rnemN0XtGpHjn3bghP4nY3kGu
2WKqIm7jN9J1u3dGRVpWrpZHeltdL7DWomnsImxbOkR6qR9HbxDkToVxmTOMe9GVzh4WOHs5InuR
pLu0TXVmipqmUo1q8KEPHo2aNe/VXOyd0nE4aSbisdorlm3l1kTX2Nsua5iSQvyzEmSsdE2WN7Wi
4ak2897o4lYqPb2yp1bz9F7XqyCIqhqEpxkg6PndUgsXi8gK6ZkG61rphlI471km33tV2416Ma1E
x2dBWo/gULknQJGq90mH2056uMbV16dUywtl3r+54b2N4/R6p11i9XXgmDK3TXVd0bINGLr3NP5d
q+SGGaXgkNk0Hhnn03D66drk5QUztkZA7tu793Y6GopOZGv532RwfEvhy6+xOj49jGKWOLYOMZKZ
27IipK2EZvpIrIYfS9ljg4kbo0bFOHLFNHKHPxzCp4p+PLM5J1JLnc+NvDgZHwnAxrXSBzTfvf3P
59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5
/Pt3P59u5/Pt3P59u5/Pt3P59u5/Pt3P59u5/Ptkif8AtGz9AcC2xlsbmse7JHNRz0VzU1wjshou
qJ19aap99dvVY3c09QS69xU116T139HPbv8Af7r5G66PeivcwkRj5Hb8j2Vz2Pkf/Ckc2yR0jvuv
VV0RE7ibLvFiu1/hASOX2V7q2ar3VVfvrt1lir1ouq18irq1EanWtlr3Gp1dzXr7qqu0krJQGSzL
C6aRlYrHyqOiNg4jm2KK/gsa2KPe13IWMhb6UxrU9VjdzT1BL3PKfV9/u7QCjkDRwDQRDQM5Kd25
BDG2KJm8+0c927Gxrd57nOXTVzlXVdnSTR08sj+t75KRj3O7Vre2Vxy69qxqdfte3rt24GPv7vfY
9A7vm7i66mdfa9XXsgs50UToCYDBZxxdCRDBt5IZW8Q5Rn7qPeixyMfG9HKkjHJssr8pIfKrlesr
8dwx0u86TjK7iux9XovG9N6neE7fvuvb1zzfe9DmF6d3XXT0P6a7yq7Xu7znO7rnKr2vsksZ5ZQJ
pSChGKRvVcqTgtY2sMBDhhglTeQeGJkD9XpJG9sj0VzXFCOa5Ho5q18mjkka5j0X9s+tFa9yfc16
tNE28W453Ud62xu61ERF9V9Xep/J17cYQelFm0VOMPRxwS9sjmqvEjOa/f3XuTf3t/Ry9fXsNLIQ
M54kykDryU6cOZwxAiv0S0RHfW5U8e69HN7fe032sc2UYiYGceaOSKaCasdJDLFLG6KRkkT7JWPa
+N7mqjkVOvXu9e2iY5hyJ1dSYhXI3RqaIitQjTTTup3F9nXabokKhq+Z05jo7H4QuY3d7Tj8sbHx
tN9+nE3tN5diDY7maumMZAw1g1UDNEW4ZsbYXcC6isoIXsbFEm/BHE93DZvKqtTb10Tqm6rdFx3D
FTdcmitRFx/RE09rZHtyg5vselUeLhvWPhOh0hNrqkcsXdie5jFGniWNF9LVuycrIJDuiggtRoRG
iC1rSGBRIjrVURIWlTpvd/Jv+muerWbvqsX4BJ7Wn/nP2ttOaE01VdOj5NNXLqq6dJe3t6rF+Ay+
cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+
cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+
cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+
cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+
cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+
cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+Ay+cNvVYvwGXzht6rF+ASe
c9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASe
c9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASe
c9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASec9vVYvwCTznt6rF+ASe
c9vVYvwCTzntkzZHNe9uTK1XNTdaumC4KiaIvX1Jom2I8tPILLLnVKLx4WwPkZEZR5mJPuITFNDv
PgmkjRXxO3d7ebo5EVJSpclyBWxbjFa2PFt9XkSMHi7+iZE1ySysVu+9keunEVWdSyT1OV3dpDE9
sck1aT2PS42Pdq9rHrCyTdlkiTiNaui8FzXbm9rs4gfIchiRJlg3CWYsjt/hxztTSCimRUVsjUXR
+qMVzu6muztMmvPa8FjerVRzk+1x6Zq9aPY/Xd3Fj03NXKu3rmvfZ/4HHOrTT/2dd3ete6n3G93T
1zXv+axv6O7eua9/zWN/Rzb1zXvteCxvX+L/AAeam9/B11TXuppsv+Et93NU9JxtE01XTT9oHb29
3VXXRE3E0a7e19dF/wB3XTh45pr970P6beue/wD83jn0f29c9/8A5vHPo/sv+E9/ovdThY5u+99D
2n823rmvv81jf0e29c19/msb+j23rmvv81jf0e29c19/msb+j23rmvv81jf0e29c19/msb+j23rm
vv8ANY39Htl0yS8TVd7qgxpOv4vdX8W3rnv/APN459H9vXJeJ1buiQY0iafeTHdNshH6TLN5PHhL
MWUyKtSWAmZ18x+nJABxPZ+14zkbNFJo5Hde65W7VNt6NQh+lK0Gw4HoUHl4HOixE8Hi9LxcTh8T
c3+HHv6b243XRPX2F8UB/PW3r6B+KA/nrbjOzgR6cYeLcZiIKPe6aeOJjGrPkMEaLI97Y9XP6kcq
p19aRjtzUdjpJXDb/oapCGsJbDKS6NyCZKS9HJGzRu8xGaRu3nbyt3vX0Bpqv/igP1oqN3f3a06u
2+/rsmmcBL16dWIjdWvVvaLcdsje6rUcxdOtFdpw3+vkHRU1RPQdC1zfY7beukVUcqKrF4bOpF1T
ubJpnIWvsJ6EB+v7i/tz/wDFH16dv7CtVc6B0XXrTEhtVTcc527+27tHN3e03UI101dG5uqpp6OA
07vdxCHuo9yaddsxN3TTcf8A8NormtYjV19fQPxQH89bevoH4oD+etvX0D8UB/PW3r6B+KA/nrb1
9A/FAfz1t6+gfigP5629fYXxPH89bevsL4nj+etvX2F8Tx/PW3r7C+J4/nrb19hfE8fz1t6+wvie
P5629fYXxPH89bevsL4nj+etvX2F8Tx/PW3r7C+J4/nrb19hfE8fz1t6+wvieP5629fYXxPH89be
vsL4nj+etvX2F8Tx/PW3r7C+J4/nrb19hfE8fz1t6+wvieP5629fYXxPH89bevsL4nj+etvX2F8T
x/PW3r7C+J4/nrb19hfE8fz1t6+wvieP5629fYXxPH89bevsL4nj+etvX2F8Tx/PW3r7C+J4/nrb
19hfE8fz1t6+wvieP5629fYXxPH89bevsL4nj+etvX2F8Tx/PW3r7C+J8Hnrbiz5uNLDF6ZLFFig
0EskTO2kjjmfaENhe9qK1kroJ2xuVHLDIibi49VY8cLXz25drA+U0fmYEYEC85uqbj5UXSB7G7ns
ydui6IrfXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkfN9vXZjXk
kj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkf
N9vXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt67Ma8kkfN9vXZjXkkj5vt
67Ma8kkfN9vXZjXkkj5vtkm890jun4VfI/d35Hu7H2AOfI7caxiOe5VcqMYxiKujGNbo1ML/AMoe
Nfc/czLthClPNZWAMDJOrBBVKlslfMbHE2OLVruIwpgc7ZIl9LWD03QVSdsiDArpx+LJWzLWEWdB
FrM6MudOWLhuH1hSPHe5jeVLJlgjjGinZHIum00hm9GSpcL5277XvbM2tquPE58Tp43MYSyUd7ol
VjmRr1aqrtsgucoEqrbKajK78Uie3aIVZYsKHblRY9BX8SQuTHQiKCKrOgUSQTpJCX25TnkGubEG
a70P9AWma5DhY9NGGb6JA/Q/JcjJcF2zraUQ/jOopjZaqCjHcPW2A7+lZnDPlIxFOLhAJGaYrYZI
IqUt6YynWn6J4ohUS34r7VbXpoF6cKaokpN0sTS9fGhjUsa30IVkIfYpo+yVYttBrc95EhMl70nW
CcocBywPCqWJBaKywIDk3m9F2rCY5hcmmQUCFajK8Aog4yYykc4bLvQfz3NKyeNHkQPyGwGBlgdF
FBOLBzkcyRFybO+uAMou7/sp5VitQrKhWJXuFtcnJNRo95n1UGfA9aVQ6apkyXG5AIpWQo62kFig
KFpLkGopGhYjU3t+HKG4i1mPsbPJqpIQ5q/JbGqrB5OiA7Lc5nIXCskmrVKLkkbYC9krLTHyrSF3
NZQ20Uab6pYQ4FjVjjMsTdUajyyVsqJjV1eVYXFQPHurrvZ6KLI0rNr/AD2sm5R9ay/YXbWGBUuR
3ggsZuW4SEMFWQNN5Oc3Iw4B68GIaKMsqQceWS6qx8UEiq+xTSdkezHPEs7B5pJLsg5+mAnCuhIA
4J4qZHB2T+k+Sf2rxLWMlJhKisAFgOxcyzjobGZ1XCMQBdSYsVk3JwW0mYc5ZFMHYDK8cXBejWwF
vjdkCGDSwbA3VizFLSut+xzl/ZEEqqZh49mBFRxU84FQVYT2Z0BzVbYzQG3MdZXtkJgkSKrGQZ6T
Y/EdTUlcdk2Ug1FbZ2QAsVe+rOxm9t5i4azHOyHmTiZK4iqglikmv69lyOTybR6lf20Zj81y3GZa
2wzHJcCNEqq21hsFssdhyVyXwZhVyTBEHYTY65nQEoBE4UZLXdPmuYrFkyx+M1Y1fauxZ2NzmRgx
gRrf5VVUslcSRUZzkVnavjBs3ydJT0WJPFLCehNI98ygjUNGt7j4R9L2UYsfsTAKC7irb0E7seE5
OFx6v0YpNDDAwggcqvns7CIg+GstIpx0CeCThlUS1HgRhZNknDcmsUtrSLRBVfEavaPUZL0ywHRd
XRGBjlR6SDNezCLECMR5stRhdQJJYcTo8Qi/Pq6SI89sMkMsoYDz0LnHjnGeU2HlmliLLzMT8anl
xmbIX5kFicGTRVtlDjcHPY0/KEmNoH3s5rbGOCLouOpZlCc4UXXl86Kwnk20lcMtXdvFkxaPM3QY
/wBHhjsye/ZShFDH2Gfxk1ql7prgq4KmzclJREQ+UOAqCZc3/wClnP8A1l9lbbEt1ev0OUPV1au/
aoZdEVV0b3NXKqO7RHI1N5UVHDiDsuMklHcXBV8SVsA4rEV7ybCaKDejicrUHEiiR5JDpOKrWjxT
Tx783NSNSJ0ruWBNLXdZNBE5y8kOSxqrzLJIo3rG5YIyCl1DENIEaHj09AGKx4TyD7KUO2m50c1h
MgTAQMmqYt+OKMdXK6za9z51idCP6VJJUCW8VbEa+WrD49MsMgxjuQswmmSQsMIkhnJJsoIlTins
ewd0/GRXNibVWMzIJKiaY4SwXVyTsnbT2B9U0Wdzki3jzgIqmOKWJ7pS7EZkbt9Wo5ILWlxsk2oP
xEDJRTBJzawfIbHsiiY21QoJid+FBwhTbwXmpZCRXmUM+9Mxk3NZdKwSmnMxYuootY41ggt7fIsn
6Cr7sVtjegjQ0tYzfAsBzLiLn8tCu8dW+poMffaWGO4/KDj9Dd24eXmTFXlTIVFyuPkY40Mgejxr
OL2NiEdMThlDz5a57JEgsGP6lp5sAtoaYOPMCBsTy20vRmRqZh1Zxh7VBILeReYY3IJh1poqqKRH
2lSSeXMLHBE5Hd7ommnaorU6kRNN1V1amu9utRN3Tr7q9f70EfgJfyHbYL+Mcj/MBu1UHQX1ZjWQ
ZHbIEDc2zq5Aq8UIaaxsSZulmSArvxwRV7OMx2s58KRJxlj2wCcevtsiyLNqZx49JRtqkKTo0ZOn
SiCLeypKgQYI5rhfTTopZp3sjFHl0k4fZMoeibLHAcTwaC9gv4A8eubWrMIFNIU6evIydK6whdwo
oa2viY5ziopnWc4ossb2sjnHyCxCrH43V5Hl0YFWPS1dzkEA6jQWUPSzD0lc8gdx609dZ19a8yKK
Utu6/cYLLUZMAFJkV/isd2WLUurZLvHByCjhWQhXRly5skAyuEmSo4UzpI4VdHPvxsS+qa6wDq5F
YghB5OPT83q1VkRsdFe3Ugcw3atJEtW15sL3tY4bVH7n2Dkv4/g/6vcA2wr/ACg4593r6Ky/TZCa
g0QZiVD65d+3sgSIpJlsGyERNAHm3pYYyYpYklRUWSLRerXeqi5SqhsIJVY+bl7y6lmcOLbdIEPa
wirdE+Qtn1twXqg/LwQd67eXZF013k7jtW9atTqVFbqmq66+ldSKq6IurXCnn0mOH5EHAwgOwsKq
tLuRR4Z5uFIMTNDzsTBpOM1ixPR0Msi66OfJvEZOHTUPTRzHwE5CGCAtobCxY4eFPbwwtMnYxo0Y
6wyzSNjaNHD1NiRFA5arrxuihZAK1YBB4ejgZ+X4wYO5EnKiz8oIko8HDjk5eDeavBj3W3RlLQli
A0VBT0tUTRAyj0ctDYXR45lXxo3xAyMS4SKLk44Vj4Ldx7dxGpDc2GNUB9wM2Jg9qbUV5VkOweVZ
x2QHTjvJiZBM5ZYWxytSJ67zERdrWEnFsdIhvZoSbyKekrZo7kgdyPHntWSDObYTQPaj4ZS0lfG5
EcxUXZjKalqalsQsYEbayuDAbGDDOQTCGxBYYkaLESYWRGO3SJk5RErWI+eRzinrXAq44oU41yiD
7xZoKDNCLKXh6kFBoGGgs8u9KOgoyRObwIt0iK2x2is4izILEuOwqQDYyrAUdggpxDCR5GzGDCxx
jQEyI6aEeNkMb2xta1Jh20lQ0cisZSzwNrQ0hnp4+Y4dTNEkO5JWM5srcBeiit5kjSJONJvJfJjt
El41kUbbroiv6VayCLgQMSx5fnEZDB6TE1JtI4vS26M6tjMpOkxbmJg7ESAPFMNjxMWR9yYMXbWd
26S6viLu3L6PAgQx0wbI4oyt4eV5auiToXE8aqN0th6dF0VWBodFAQLGanKixaFximFjMJ8M2Aoi
Fr0jmka6Hcq65vL2BFuPuhDJwLUzmebs4dI/S7ArnTOYNZoTNzZPEkdx5d404fEsZgOs5mEWJkND
VRFWBERsVnFOaQwVJSpo7GGGwZLO972GxRFNVJ2NehMdlQUthGYYNYlsOqgS2FWAcMQ4ZxLZ4JEn
MFgghgGJkR00EMMUcT2sjaiVJj5SByqU7nQ5xnRI5UkglFLDnSeGeOUI4WZ8JMe4kielzjTDlQQT
x2EVZhmKV0VuM8K1jAx2oEZZhya8QSwYOHG00Z+87fgJSSJ28uretdnYy3Gcfbjb+t+Ptpq5KRyq
QherqpBuQX66RCeuD1QiTeETe2rJfQljPFpR4xKeToGr4lSLDJxoRqx/K7wA8U3pscIqxRsk7drU
d17ZZEIPANE7FICXRjxMhjcQYdmJhk6sja1qzFlzzlEy6b85E0s8qukkc5cT9zVF+axduk7bFcbt
LH0n9sLCkrDTV5b1PqUSNJOvA/4HV/pX2mm1gEzdV5gRIjeKruH9cwvi7dUbI5G9v22jf+zaU4sb
EZoYAIR442DFyTwBV8ppjo4GR1czlWVxb9IoIZHO3mx7jo2NjQC0khxCKMIyilc0Hm4yYoqq3Lty
NxzaXcIKKlOKayV/Ly8CRGy9suqJDYhjmjxTCkpGXDEVGk4UsBgk6xkMcnHFLijIHlVqPgmhYQx7
Jo2OQtkrcdm58wc45jujpecsK6QeQIwpiorpzg+UBdDPNE6UZwgiRztcLBpy7aKm5Na0qqbA2sC5
ZaizVsh9a2NIuF0ce5jHGh7nLlq2NZ2SbjdoUo8coqdBub5ZKqpBr0H59R3HcBBIIeDzqhh85w93
meUGSffSCLdGMfhGIvLAjGhAKdjdO4gGEFrWhRBzKGsgsQiNag0cDmMhaiJGjUTb/b7nybfx/vQR
+Al/Idtg8xE0UELLHIt+WaRsUbd6iLa3ee9UamrlRqar1uVE7q7U2ZFX0MlhQVljW1ga2lb0ZB0q
6PnT+Dw+ZU+SGNovE5tIUH1by++vE2CnpM1tKWxrLTILCsswrfGZCABMml5i0oIxbCmNqZ6NSd0o
aA2tKLFIYkkJzVV+9fHk5eWPLlOKsxLImB2eNMitQ4YiooD5ePVESDWcHNvcx9fIGE5WRNmBkias
bpGNycqGoNLorK6xyO4oeh76yx6MeME6zWSufaskkQQRxo9ZaVwBkgzHzBq58yygPHysyGWtzW6z
0SZLige9l3eRSREMVstbJC8Afib4kDollR7W8wQSzeY7IbAHIYT7LKDYDrg40nGg3TzDROjj3Asd
raKph1dJORPMyvQosoiacsid7kVvjer+Hi/3u3jer+Hi/wB7t43q/h4v97t43q/h4v8Ae7eN6v4e
L/e7eN6v4eL/AHu3jer+Hi/3u3jer+Hi/wB7t43q/h4v97t43q/h4v8Ae7eN6v4eL/e7eN6v4eL/
AHu3jer+Hi/3u3jer+Hi/wB7t43q/h4v97t43q/h4v8Ae7eN6v4eL/e7ZN+P4P8Aq8wDbCf8oeN/
mvLtvZ7umvX1J/Ki/cRU71V1VN3e2oq+3M4Z+RWQdVVhMaspMhBpMYscz2RqvCgZNIyJxC+l772M
h9lNtOvXq1737ZN1etWq3X+C3Ttno1OpirtHAVOkh9e+Yo6ye6b6yrccuI6+6nFVd8pz74mt3liR
+5HHMXBE2M5LM2zIZvxuJHushjnSNGaROLty7IdGK1kUEnEEOFmXg7sTeJwF9NieiVTumL3GMU5W
1luclx+qprUitPHeJ0f0vDcVN/yeNKJ0pPY20dK0cGeECQ+7ra+SWSRzuEWQVHkUOMvjEGEkfKXI
BBdushmx2JUUtMuPzsyJdw2Q1lQkyNhfYsQFMHPpMPuiKzLshStYTKXhUriq59DaWrCKxR834UBE
kgbZWNse3hECshyxGWkgA0mRVW/MTNjYWRFkvEMx2aUyXFh5iLcIOnS/9EcU0bRDUhKtqerqSHD/
AFvZTxEBzlWUk2H5wxKisHyKwa4CkjePihSErBk7mS5CxyhO5IxH1KIuWQKNNx8di3ddr2+oMltK
AujoLm8GkrBseLisJA6ucsWE5l/R3SKJxImuXkeRIc1zk5jvd2iqp/Rb2Q8iuRDLSGAeDEB7Xo8N
gSnkyvT0FY7CCFMeELCxXdIkSmRtijM3J5IYCa2myW+G9D42U2s1UECxcfoi5Co4S7Ua2s6s2SZV
r7PWrphra3b0cTqBvOFQjJhiIT8gZPl9LQ4jV1fQAZEjT8EqMkfEwu8ssfAfxJHnksQ2zcbK6Vow
ccqNZCxjnMdE5zWuWKTcV8aqmqsesT5I1czvXcOR7NU7V7m6Kv8AiMq9xtf/AFuWbYn7mqL81i/V
UhsMk7uMJCyCJUSSR5JMAjGsV6oxF1kb1vcyPq1leyPfciEDSJKziK1NGyQSR8OXdlifHKiSRPYs
e6+KVjHbzHIvD39yOMlRSSwyZ6+vKiHnjEm4Nuy645O9LU2azOjZVcOMUbk5mKWsskzdyONJCaa1
uMwByaSxlN6RthbSCgnjnCmSOlYg9dICNy9tJ9bayNVjBl3FciObWtlYrZ214bJN/XeSRsMaOY9d
xdPTle1dFfonbNTRdUL6QJidjl8t3HikboI4HCvxE3o05JSGRcSZ19oXbwcwq8IICVR2saj02KyN
MdyVaLmKmGnsmj0jm5Ey6txKcAioDZfvsuWkmLhJ4tuFS8cGWOYXfVetRZMdyWIcSemAvrLgUs4O
N299EBMFWWii305REkEdnWyWJtCJdUgUVhFLPcxNGO5aCsbUZGGMVkN/iwuQli1cdLLfUK2yFAb7
bOaw0lipzC68zozo4hjIRpD2WDpgW49VAB5JcTWGNU+QE2Vh6EQSwq+zjJYMZeAxWtXI6cl4kjiE
x6lJBgmciJwYpR4VtKenzE/HRa7C6K3BgHrccNry7iwt8oEdLaLZUdhYTgblUC0gastKmV0blYOW
ITLx9sRbkCcvc39DU3FhDEZRV41dHYTOD5qMO8vgriyGlJHOliDxwXJbccQdqkBrLMKw2WxbHfiv
lq8yKlZXj0kt3Sx4a0ka8IfDYlzVLi68+JgcCblkCtiSFzMctcs8my1FfU3FtEEwVt1fDrSRVFMQ
WEljDCbIVbBkFyuBlEKkSgCuGjxnCcwsKyLpZk16FloD0e4WKCzw+Wa1jtLWCmEkjjZlK9AbxhQi
PizZcVJjYSzfgSSMmOAcmcAqrmmibJJXnPBkMDc7uwEPrTLAB0rO45RDiof4Ezk/eEj8BL+Q7bDJ
Ynvje2xv9HxuVjk1piWro5qoqaoqovX3F029XGfCZv7zb1cZ8Jm/vNvVxnwmb+829XGfCZv7zb1c
Z8Jm/vNvVxnwmb+829XGfCZv7zb1cZ8Jm/vNvVxnwmb+829XGfCZv7zb1cZ8Jm/vNvVxnwmb+829
XGfCZv7zb1cZ8Jm/vNvVxnwmb+829XGfCZv7zb1cZ8Jm/vNvVxnwmb+829XGfCZv7zb1cZ8Jm/vN
vVxnwmb+829XGfCZv7zb1cZ8Jm/vNsm90An/AFfYJrthX+UXHPzVl+3c1XXq7qJr3etzUdup/Mve
r3dNoc2PusmKsIbGus4AZDq3oyGSrIjMChj/AGpYcwGEyEefl4zUjfw0Y9j4nPa5um6qq/d0+1VV
RV0RdO27XXVWtVdNddG7ypeEDVxzCg6rNkinlDIZASZZZM+0peTKIjQM9SAuG97Rp5mQJGyCVIOH
HEkrJg5gI22JHIwEwTCyctKkBE7+DPLPO1HnTH7rpZF0TdbFuQcJjWQtybIKIVw5Qp0FN0PuWQxG
76UV0tT2xEMjWo+NpNTJW2GkjnRnRyNh0KvUqy6QSoohMapIiCxCFPkhfPxL2GGEixSKKGvlgqwZ
rNo9zLHIelmFEnLSSqT6JchdcyZMLlL8hbDiYh0tmNVk07tQq7FxaCWIurNOHLkIqJTyGkb0hquh
gWLJK5mS5ONj+UR5Ch2NxyUMtbDLk8RDbMoEo3Hyb8aVxBU9hDB0w6vHLfusCUTeGW+45Fi30RYd
BhBvClGbwqofpjcIF3xH7lgvTRW9LLxhvSx9BE3ZOLY40TIQwGzpy6SeWB0bS2CmBPBkkhfJFLC0
hIpFcxz4JI0k0V0Tm9rtUGCXd5jtrSCF1wdxSOqXGOrT2iIaARDd1FzWTQkSV4BHE6PQuCcSNwhI
7XzsmgirrXIaEXoEXF7UWpMCVuQUITyXwA2xNpXWdhHKnP2SOtacypupOkSnPsnSIM8fIwYbi4qR
MqLGIuRghsXNGIHFogceZWNGyHG7seIBwleNM7di5xC2q+IyOHSBBw4EckAsEI0KOe+RyRQRtijR
0kiue9yMamr3uc9y9blVV/xOVe42v/rcs2xP3NUX5rF+qsI0kcM7Sq8mKSWN80bXBWAxiK6GOYd8
qekdcTZouL4PiM3t5CBXt5uM10jz3Fqwnn3EMSOZxG8xkL2SRtji3GxMZuM4TYkjjaiEMmxXplkE
rCOSjq2GDEzykzyOIbFPRWEHNNmsTSZZBtwiWQgmR8iq+RykwHYue1XRkPgM6Flq4B41Sqa4CIGv
xwODSZ0DZOM7XqEaxu61NNlarphXkjq3iRbjSh1lYrdYeaic1srfteJBuovWrVXq2oJqbH6yossd
mDmHu66rq4LwxBhpQjILWxiCQk6O1CImHP4kqyTOmWffSZqO29D3T+QkY/CVREVFMQ6jUehjx+4E
ua0KrIioI7SURsteMIrbiws5BhIEYPJErUk2JsktbsUKysK65uMbgnBWiubOqaI0KwNZNVvuopkZ
W1zSRKq6DBMStDZYhlwzFsIrlQmyc6qzC3zIdzphuI6yu+nWPDmkaNv9HRpflxCQwqhTNwJ0pEjW
zsmw6JtvcT1mERAx09PNBjnJqXWjkCQWMx0ePRXcJLopt6eCvsw62RYWxcpwJJ4yJr6LJcnpX2FK
JRWAlNJUDjn1gZNiVFHISfSGXVYS51uW3nKKxqj4lVksZMc8EEkQlhQ3FziLxqgGilGoOg5AbKnq
pZH14RwOQUd1CjK3mSoRyQmimNiOIbzHpmiZm+SWwb6Oa+avs2tljdEAOSDyNg+p3hFQaWxjSGaw
dO2fn5xRuMj2wxo2S3AvbwCAyMPpqihdTEU94SCElXCeeljRlWY5MoEIgsr6WxqYSIq0R00cj+I6
Sahrc4zAWm5ZoNZXvhwqwiowGTI9oIEtrhp5ZYzRUWsa2/IunIA7cR/MNjJZV4/XcRQqoSMQd03A
SRzWd17mCwCiRb7lc7gBiihQIvBDFGGZFCz94CPwEv5DtsQX/nK7/Msq/wCvZzRyDBpCLrGA3SgF
mAl8A3JKgUiKEqvlgNhWeCaSFyjTRzKyRzWu69shGjluL2shr8ZNrQjj7K4OFsr60JpIw+fliuL6
cI6dsJToXxWRwCxTdGwncZKiB81xSz1GlbZmw8VLKHnZKudrOWEjuqmjseIXDJG6KV9UvMzxnijC
RuC4s9gHHSuW+Iva2ojryL8yWvfYS4oNkhr0LmEIiqa8CuZLGQ0MTd4kKGcrMXYvRA6f0OzWRqBg
mW7ah19ZMFacZOIkVaWBiRoZxEXJlyPdcuxYZ3pAzH8eM9wuKlgGToEBWZHa2oMcszRbGtFIx4Uo
kiBruFOoIJRpw0b2rOwxixQq1H6bJaMtd3GYMdyqEMac9RqU2ahIpHF25U8MJDGbs5xIMc6ilSQQ
1k8o8L0NRksHDxr9sp8kbjqCzm2tcGrZ8eIvR7NstzjFVbtHRkP13xaNrohd4oOKx7WN8dolJC85
heQDWFNzlsURGmNGThWc1atRj1jIaBHPExjbayhoa+NSRGmSjSudG8qYSgYVSgW1FSGHEXDK8tDb
uelj40AKgFMcAClyPC98xkZk5ruDEHwdSI8gfDjh81dSwZIsZyMuh+cMxuIvmoXkOxsrHwhSi68o
eslivbcp26kZYzCnyQgjEWIwwJMyOfIIMY81ImudI6BEnlEC337iMSZEYunXupr/AIqCkgh57Foe
KJa5KO50u4e58aRlVsESO56nB3ZYzJo96Y/jKVVNlgBgbeQFCzwkikwxkDEjyMmgIgmYkkM8E0au
jlhljc18cjHOY9jkc1VRUXbJ/dAH/wBX2C7YR/lGxz81Zfsu3/ev+rufUh48kcPHm5aHf7XekdG+
RImP7kfawuemujV4eidsrdupNdfufd3W6ovXu69eqdWiK9PunAh2BVfVVps1e3kSXV5hxYToobGe
c1GPKjGGJmVgMQc46kLFJPvajs0ks6uysylgmMGkr7OwMPFsUryyBi2aHOJKDmeosswswpMLeNK2
DcWMhW7Q2lDAIfOcIMZXQWRk1UOSwmCKaJphY1faziK6B/EesdYbu7u5wUT02O7ucsrsZxKjpD7i
qns/RfOazm6S2lqDJy1sMYx0IOvfMO5wpanyvejmNeNEru1qTZMsxqMO+lWGiLfe1bRrqZJEhWKp
ncUkVjKkrmxKwN0zuI5Gabyomz4SHh1lg+/yykr62axgeZaNxK3KrDDAoHtHmmThwRmExQRTIAyd
jJZnppK+3pq2lr5anHrAarvDyb94t5AUXVDWsJIWOpTTjlVTojhY0MKv64iZzLBwoBDRIedsXV1l
TXllT2+P1VvUBXYSm1TrzIK+h4tjDBzc4SiuNfPwiR4lmcO4ffiVyyxy5GzKsbdj0MvAmvm3lYtN
FNxWQcGW0QrkWS8aRkPDdOjuK9kem85E2mvHXNGU+eis7zHQFvABn5RHX1zrFI6WXemU1k8fC0IB
gNRjJ45dyRrmo5xEtlXD8B9cOc2Q8ZOQOtWBvABKc57OCUZz4SCQSpHKVzYvBjdzEW8Xb5FY0+KC
D5RkOMRTXV0EGOURRW9hWNdGSdyMfGNZXyFoG3iPhbvsSSZIllWWkguKqa5HiWeepisBJLOGBGCS
LNKAyVSo4kjPBesj4kYjDBHa6EQ7/wCxyr3G1/8AW5ZtifuaovzWL9WdLHgKFKzlyGFMbINIwpeW
4M8T0cyWKZZUjfG9rmPR2jk21aqrr27Xp1tcj9d3T2F0aiewuv3d5db2SpmFKyGor+knVW8vE5fr
dErtIJOGwnWKN0r0cyLiN3U3la/Yu0fCDVyDmTiqK+fml4XLwlRS8VRR49dZZYN3dVy8vr/CVYiy
HsV6yGpIrWt3eHAWVEmnXG3tI4f+UqoiqrV612EsQaCvbh56NkDtiL+Rl4QDPHrX2sWO9BuDhrLH
egLBUrIIrV1bPHOVTimcSuhuYIMmx0l9EkvTcUF3XyLSIJxWm9KxNl1rIxWjvcbzbkQbcnSeNGxO
4jv8McWajbJKVV6fqUjjttV/apdDEj6ST/hK/faajFY1I990ayRU5GQUkFoTNygtVNbhQ2UpKxwz
IMIFJI0madRJoCUgga6bhFDybiwzjybPOIvqUYFhRgbjyLIKMNpNah0lgE4uSeMfmgWV1ipYqSrO
A0Od5UTWQzbtblyZDTVdPaLDEk1xb1APKHSjoR0UbJz7horaKFzVkr2kkTM1b1JFpIs9NDbVstwP
ChJNOw4Z1oOPww5OYIrkl5yCPSwDc58w0SfXYqrok0Ky9xNfb9n2kXXu6oiqiL3U9jb+X2V9n/bq
9pOpNE/eMj8BL+Q7bE19qwuvzY5n5Kqn/ftLW2Uckwc0g8r2RElBycUQiIseSMkKYcqF8REEUrXR
TMXeYnXpqim1jw3kjWL+KdKaaedYlzokTYiJ7gwqe2kJGbBAgRKm8cFB4EDkg4MW6CNPGaayttI7
oF1ncXNqQPZRRLBGQ0uyPKLVqRLucu+Zwyo2PehXhR7p3MCO4ljYCWxJMBZwhqWQIw4gxwh4hMJl
eSwcWKN0lfOM6XWd03EeUU6YUh3S0ZYgkYLDxciyEKxnDilWaIewsQ7SA61jimc+SNLMgvhvkkVm
iyP3h7CeBJChRzRYHOV/DaPYuFeZGo29y0iTPCGd6bC9WKxeGrOJLvi161kfJBVJlGONxSUiZWHo
OhkLkSb02UjlBt8ybiG6xNchCO1XaOWEcl88Vo26Qoy0tbAx9pHWSU0Zc5h5pJRL4qyV4cTSZZY4
4lTcY1zWuRWTgkbr5LZ8rRrO4FcU28IaVaClckeM80AmdjXNrCXSAD6IwQeBnVsNKPX14QTT8fNs
LFL29UsmPH3DTjrLjIwKUSGTKGPRNuCbSWxir3rDqsCLC6zV0BrYrmI6GyBgursaqJZZRujOVace
xiqo5CN5ZXzRBxzIVoY16FtbMjY2drGzTdYirupoit6k7ncVdfb9n9h3du7t3du7t3du7t3du7tl
H3MgD/6vsF2wP/KTj35my39hW8ENp+7ZLxB5PBKyWtsh2yS69SRwzTRSvXu6M9L9N3NhhpilLfFC
xqzvXVV3nvVI2SKu9JBGjmxicVZJuG1UnlfI/Xa3rzXSxRWZpxo8zHPYhoViYQejhH7zHcyCQaSG
WDvIRo2Agb62ika5RqBpx1wfMr4oJbCzmcQUQUydGwBkToJCnNNjkJPeDHCMOk8aLxp43bVFa6VJ
XV9ZVhSTRq5GyqENBAsrVXVeE/hKqq/tpI9dV3W7X1PUnhwWtjl19eMWGysKdhFPb5iRbkVTrqvD
KsaIommlfWpa1YspYE73zhIyeNk0dIlT0SDcj3WQlF3qZlkR8tdTZDksV0ZVuEvMat0zdSBmbhRV
6TTWPOQtJr7MCYl5EF7avnrLETKLnIjTkmKJ5ykEJvra3p4qVejN2aAplknTVVPKLCPYpJYhnmb7
4JKe0QHG6walOjliy4GzsUy8ml5aVSsZmq0pIROjzTJ1bOs+SmiI2OOyiqWWTR1Fh7HtgHijqypK
xWMGzbZ2BDr+tosnrbM2W7pJscjHrjrGtBe8iGG1u4C7QmZJZ4oHrPtcWIEwWsufVWY19azIMixb
nIB8IFxE8cq/xqBLajPdJzJw5ldHZNmbDAMZGsRZDYLmspqvD4GZRgkuJ2EN1k2S30lCVGbkJ0BY
V1YY/PZ5NAdPfOIKSybTEAmwMKiksURsCXAdb6G31GQX+A5EcedaWcFkDNiT8ZjNAFq4KIkYuMsb
G45BTZbcRzJyXwyhbjEnUA+BwNjKJe9kkiWqZmmY4PHPV5zkDboWVMhxQOWyYYGwUcc6qnry6wxC
Jl5hHhjTS5OVLCAPFdk4/IGMGWXYPEFp8So6HkyDjRBSCuAVXFctPIjnzjyMJmSEmeaCP9jlXuNr
/wCtyzbE/c1RfmsX6qNiHUt3P1UijNSNXTRQWYk86JxvSU3YYpHrxVa1UarOJCrkmYUPKQ+Kaeed
8fLenNqlmjRY4gnFjzrMkHazI81j4pJXKqwQwP5CHJ8bU93MmVZSTkOlFiIgFNirnDMgfGG7RofN
PZA6UaZeDEMsqykKRLJ0RXZJkDHGqkjCiLerUcmd6Kx0KImFNnYusU+icGKHce766SRIWvbXzq2S
RimPekblk0jJLIJZHqvBdI5Wz8PfY2LV+iaaJsBjLo8dMxmmjiArshda2UF/0UPFuAjFUPQigONg
a2KvNPhylkdjHA6zSvr5yejI2Y8SzGhkx/seZHguPWIRZ0ht70yAPXQnXgk1MK2ggVAITD6oSwyN
s5hLnpZK2vjmNy+IKKkgiuexTX9j+tY6OWPljAvRJEx5DogH8KpYy0rWQuiilfEwOV6wPZG1q9kO
qHGx1wsuXYHJd5AZOQl5GzHsawm0ihrwei54LN8srJoBySLqubWFFFEJAQ5WitqIkTHFxyp7IOQZ
q2wWysn3hsOQD5NM8HotKdgUU4Z2SS/XKW5HPDAjyvjFfGkcmCQTx05JWGVFrjkgQmeZrig9rVWE
FP8Atv6IMcphLQCw36eNplETX2lYZGTNK81JxmPdkxEsAY8dyTRTBQDlFHSih1eK0lJyRJhgsM0/
LHV5qjO407XCzRTuYOQQQ1/7yEfgJf6t22DCFx8UeY/JOJHvPZvcOmMezto3Memjo2L1OTXTr1RV
18X/AOmHfOdvF/8Aph3znbxd/ph3znbXo9V7n/yo9UX/AKKNJV3s93rT2dNk/a3ur1qhh66denVo
R1/f0RGp1u28Xf6Wd8528Xf6Wd8528Xex/8APD/nK/6l28X6/wD+4avV7C6cynffxt6va26q3qai
f/Kjl7xqtb1ISuumuvcVd/R/hER23i/X7xhy++9PajFT2u7/AB7eL/8ATDvnO3i7/TDvnO3i/wD0
w75zt4u/0w75zt4u/wBMP+dbeLv9MP8AnW3i7/TD/nW3i7/TD/nW3i7/AEw/51t4u/0w/wCdbeLv
9MP+dbeLv9MP+dbZX7og/wDq9wTbAP8AKRQfmTJPlX+Vfb/Yfxovd07nWn+r5erbuJ95fY+9p7Wi
afdTXZMPfj1ddKo8hknSxTEGjWKCObrHdWWiucrZ4/TXNanbLq7eXt7QwDEMZDlDCmLMWrsOXnfB
BDxtHLFi8Cybyxuiaxz9N6NdO51HWx8vLAVYRVgfLuTzJAGBApRcm5Cx0j44xopN1kQ7nq7tYmbz
kary6yO4aO1URHW+PX+OOlSSOKVkkEGQVlXOXE9HbyEjRSwd1vERy6L9R2RPsIJaRB4y+kw96wFe
JKrUYVE8BpPGG7dr1niR8TItZnubExz0ZXTPKkOePCVyoVbZWUrRpz4a2MiVteIVwIVLnajpJtxk
cERZkitDBMng/wAVlXuNr/63LNsT9zVF+axfqyxslfA+ViwtnjZFI+F03pTZWxzskhfw3PR+7NHJ
GqIu8xydW3WnVppuu7b20X29e65rtdfY+p3E9r+L2vvbez3fac5e77Sda/c/g/a9xE2DEqzjEksh
ZDapLHH7+ijuBGbj5JaWS6qq6K5bBDJE561ryOHCqzu34o5HsGPjaS2EmJk7GFBEhGIyRN50cgBs
UJor03UV0E0fEVquZua7mwNxWT83W2QY5YRKREDrPBMzeZNwiEjmYxzHNdGj2NezVy+ztXwly8OW
4P6LrmtjIck5ygG2EcCSsifHGiiV5cyzybkEfC3HO4j2I6EBzSONMPMQ1zQDXDcIVw7XNkNZDykc
68dqxiSTJPK3irHFJGPOqKunVprq3rVFRFVe5pvJpuo1GtcuquTTd1TZ+iNarlVXK1NOtO1Rz3Ij
014TYut6d79xNG/J1p/E7RN7X737yEfgJf6t22A//wB/k/5jsP2BbayyMpjSLnDgIbMCaWAoNp2X
0gEkkb4XNeqJCTIjo+9ka5zXIqO2xMesOJqrSovsRIzuOuJcyaM30ZV+JOxeZ0fpzhrqzW5Nfq76
5q6JyT74ti1kgj/Q/CzFj8ktMTAukuuLbyWdTMePISZjrq2GMOqJKqLAYQht8XYrqDPPVsaS/g4s
c3CuNbZbXF3ddUhGZPfNhpAIKnjlHzYzgdvYjFEHWjRAY2UpFTLAjDSLsOSSOvkhOJs24s7InVVQ
NYW8zKienlu3tjmIleSkSC2FcCphzIpkH3HgSb0jJUazarEpCgcyvPRKXgwJTbyJKizmqRzbWGzO
yIcW0SOB+NDsPJmDDtiVOnbW8GUp/GZmsF7V07aCk7F8GSzgVOW2cBsZemVOMlr7eLEqqxY8h1Wl
ck3GFkqowx7cZshZZIoJaCY0wrHcfsMdpL2ynv5+l4bC4FpDEWuq+hzIrYStgyCqcaYXeAHTPU5I
hp5gfrgMcrGR4ac7LcowoWzjvY5bMi3xnpz65bj76+BsFZZ9BzRwulvHHjkyMa8SSudFcTTlGiVd
YXBOyOanFtiz7Wq40LSIxsjCsaLHTqO23H6rVzAzaQJESwwiMhFZ/iMRxqkrbDKqTKsQpoT8TDVi
kcwt/lLX3tO4iWEQGwBEh4thKXOLVmVYrmXJQcYYVvUbZb9zIQ/+rzBNux9/lLovzFkn7CrWcgkW
LpN+9KJvKQjkqLV0KQsRkqSzcw2LgDuhnQmfhDtHnlljifC+zjjiM3d2aOLrZvJIqI5qo6RNZIuE
58THSthndLFHMYjWLsURKx8g8VcQTM2NV3nMhqKt71iY8cyLiJFG/hqgz2qqK1Zt3mUgyiSUYaEq
OjjdOwZnMjpC9t7MNvFD1EsTTOI4jpEYhlesT0hZuD7sgsOahhwEEEk4jkYwo4kT5yZZ5qcqCCMe
OJszpJ3SPa2NjWue9epI3dzauyCqM7I2XE48bG20p73FLDGz7OuswErng19azFcVGsW1thyVuw9a
61IGhGLgYfHATJrjwhmT5QJXj0NaXFa1WO9kXMhyctluTS8jYZHheRVjRxmtlrI6wTM6u6xptU1w
gIo7RrGAmusSTM8fJa9kvPaO2Fkusmhrh8GJbmfRT4QISYBqsWKWGonpsjHYPYwOnDgCtkCUIWML
ErEO+H41LNR34WQtyFCYTJQGh2MQSZF6Z0aze+sVqVWi751Yqt312trwsC8AyeXIex7jSMHjMjsp
qPE8kpw7c6JB1Uhaa1JKym1SVdYyKEzmCnKNI5rMwaTkWUV92+fLmVFc3G+yE2imDifKViDxMpZk
RXY0GhQeCqc/kqCsvSHoZU2zySCbLngJ54r+vrMtMgypwxsZsHoYBo22ELMeK10bWSXKR4jMZUv4
bipJ8mXhybpS7WTLC+zt2TGkYlFe1kWM9kiqkBLTOKWO9MqcltL+8xScaOuktGyMwEempiaeRTZA
GACRxCjhwuIfELBEPG4sso8pzIWIxriDjpiTTJ1RNZSSyJyZ36yTSySOc5f2WVe42v8A63LNsT9z
VF+axfqyrLM8eDm6rmJ45XQPhG6VC5mVJmPYsW5BxHb+9omnWj07RSXSRJKTE4hlaprlCkOZGxED
ksmsgmdWuJdurI1g80zIk5mUSEiR1bBZ1kMQIslSSg5EkpBUnE40MZgr43NrF0dICSM98fLSRsJ5
qFpL4xoZzefONC4DVd1P51+/w4JiZG7o9BG5u6PBPKx8ksce/G2N7+3RFisomK1srzoOHo1fTATC
ApPtu46QZXw+mIqtkaqommqdiikipb+vNwrkz78i3o7jH4q8gPG7Cq6MFMuKsB1nIefZMgl6EGsA
21ENgtiYCrwYLPsbOtfRra2M+NUQ1oAWnZBqoKIxo1lJYXd0cPLJh94TPJwIzccyslt6E2OMkU8m
aYSvdVhZUFdh20GN1kNYPwruLHBsdigjSGF0EoAoI+VsLdOlqy6ggv3uc5AF6G9KTHpDBc6ntwOy
TdlW0pkF47DhMbipswHxgyqklauKiwqATXw71M9T3GzTj3svNTMgfhQnSmaiWdjgWSmX1jbWWSTq
BlsfoQdROtIyZ5FHdDIGa2MFWRRWI0dpvQEPPNdMPkLGZNjsN5k1XDdVMFdlNpa45jNVWmiovQ2K
21BksricuSA8ybF7ESzdUkjykqZVA2IcmFJKdmOUb9eME7j1XZWwuuqWwvt5Ol7B1k4mjuJHtWGt
Ip87PJyH0kQ2I84ktoRWvd1RdF7qd3tk3u63R3UrV7umqaaK1v7xkfgJfyHbYF+Mcm/R89f9f7Dk
rMfmBuarzeHxp4PrmrPGswJeIPLFJ6QcIPPu7+5Jw+HK2SJz2OteLUwft5aVV1aujfPA82ypH10t
YRLJBLG/QaSqCfy7HNGmVk3MQy84Zx5L0cCdh8hRdgka2txJVwWVhEsB9qFQyHvowLY2OSdpdqDX
D2JHOWDpSXOsTlIoqtK8oIfGIOVoZqi7vqSzrBVHaJKKNdU9mDccsTBHC00d5z4TnDjSmMnmGgfH
TEywSTkUHG6KmIMNIlHfOG4CYiR8xD3FlyCPkicYapBXp0z+NxJpXPsJDQJePZlVxxJQlna1xjD6
mHlgDwDa40UqqPhF+tVNq5gyphNRSJZYFWPbUoe0Ic7H5cWIfNkuTSPsKOWM6Lk7Z7rhXXD4ksz3
im2imHhzkyEiFQk7sqR3UtdMpjHgzPjba3EdYaVVoxK0+0o4z2UtvZAcIflLO0rzLAdQwFiJaoAS
wDNbXq1A76yyYbdNPa6G7t22rbA1r0KR/p6XlpoMqqJBzSqPBEsUHDJbXNsHvMlbMSTb3d3kJ8qx
xsiij6RyCxsz2jQsZ6QGwhokD3zSRQsknmdJ/iJspSvH9EE9ONQPtXIrykphDS7GKvhc9ytHHcab
MSSg7YlNkYJzjp0ABQfbMV9rJAv+rvBNux5/lLovzHkeyfe+q3iMY/cVXM32o7dcrHxKrde4qxyS
Rqqd1j3t7jlTbe9tdFdr99URdV7mvUidfW7qTRXbR3JMxgRsTJmzTQqJLARFJDDAvNCXFfZVzkjh
HYzRBmaom+96uai7TV4t4jUKZJFIOELgo7pmyMSJ/UHjjCNXtRI1WN8b+23mq2TtttG9enerrpr1
dW45qL3ETr0Y72u9121TudevWirvO0cqO0c7Tu9SL16e0mm9/jsq9xtf/W5ZtifuaovzWL9WRYYY
p52tV48UzuHG4hib8COlRr1i9NRvpiNVW91E2buNRE3dEa1ftE004bO46JN7q7m43RI29vtPLdZf
Z43Z2kAiyQCHAQwGclFwGvihODK0kZE6OKRYtzXtN5N5Ndo2lZBlZo+iEsUxuOkDuZJDJpKxZqVz
euFZY95mj9yR6a9arsHVBLNywbHRxOIk407uJI6Rz5JV757pHudq5PZ0T2tnb3XvNVN3Xe345d/T
Vr9xHtb6aqMc1/ad4vW5ru+3m9bk69U79etF6l0Xuads3dTTXd79VX7XVdXP71F3lcqOkcm6jUVX
dTm6NYiN0RrUTT+CvsdWi9TuvTT+F7SovXqvXptpupp7Xse33Pvpr9/r210610TrXvtPYVfZ0T2/
u/wnbOZ1ap2+idT0SRXbr+p28m9uyM10RXbjuvq21Tu9Wq91V+/7f3110277XRvsdze0arvtE03U
Vqt7ddd96K3tE/eMj8BL+Q7bAvxjk36On/ZGZe6as/nwHAUX+bq+9tgMVSdEW4fskUTpeHvdWtVl
rOve+81P4k9rb+L5Pq1zQViSUmw4CpP1RSMSvPJ4KyIx6wOmkHjihn3XcKd0bnQks3hJ4DYmyRsn
Te4MyN3o3t6pGbzd5kiNei7kkT3xTInFhklhdG7bkJMdYYTYGWDA7EmYMcdxA5crnc2esMhtaNy/
pUZrUc1kw0cSM3iHKtHdzJaRFvODEZFZSCzzoOy+hGkdCSwAKWYYhsUM8M7GsY6IlUci6s0uq1lr
JRy2NYUBDcQvWOesmNidBGXG9pAjt6KR0b2xsKHWVzUjSViu3tsXxqixrFMPyen7JFUtgPURukxG
ea27H2WSC30QgUNSXPIgUbuPUEMqz0eJDWyWa10lbfSKUFBUF5TUTZ466CHpVlqi6vBLeeoMuI57
TOsb6ABmmQHiNUzKbSJxytCqbRgc8u2dWQwlLNX49Y4pQ1AHKyrYS2WWh4lNEfYWJmQVNVydZNfk
ahv6KZYog8Ut3RthmMnpaWzDx/GLwwfJ7YsvIAo+WMp8ffUIyMOoos4vYa0kvplOYLly24StgrZj
n1pCHRih4dByYFlzQfYvi5A+T9rDuNlWMt5QyXlDfrEne4M8nIFekPc7lJvBOxvCcboux52PjbYP
J76dgQpl/jUENLNUQqOEGBD2OpZ7GxW4hLLKe2FoMAUycCw4rZoC8sHGrBrO77HfYsGg5yeaajCK
yLN8nqI7GWZnKkGVI7zkOha14clgOkMDShFI5mLNIAoai+yi97J9HjSE1ocKVjSI+xvUnvljprnM
KKPmpIqtQ0qSc2GdCVM5YzzpYIwSyqyOkoxberwIPISqQsdHH2N8cblFYIEOULls1LVikS04Fhw5
bS2QeOSerktHumS2B455o5tiMaYBYcvjtni3KGCybsgMtPbWt2THMMita4mOzKCORWlgyvEmhe79
jlXuNr/63LNsT9zVF+axfqlXN2UgYArdXydfGertUSESNipNOXKm82CAfeIkd4Fjn6JtkN2VVvqx
6jIDa8cVnGONcDDUVFrFPLHBFxHHyRWrmSCgMnRHNbAM6d/pk9LJj1S6xkEYWLLLKXXU7x5GzBMk
4UFyaFO6Ml6SuZLG7hrFDDPC9w5MJBFRS5EMODwKtBynkZHjUm5uVZbBX8sLclTyPmkc1kLY91zp
HN3tWbzV5sR7ZoJHTthlY5s8UqRSywNmY+FZWSQzLHxY+Gq+lOY5Wp16dhM7Hga6uyG9Ga26bXQj
DyZFQuxmwmtTMigDfH0rGOfHVFMsjWEKFZOGhSRkpnBnwGeQajx3GL7G8fkiQTHLAwQq5OBImfSC
GA3zIMRhDghFQAi2qbCvOg3RxzWEcARDp7pcbkFzHsSZzejjU4loCdTSVNQJEkpRFicVEZEbNaMb
M3l61acyUUCEi7ajrCalo6NlbPSETsxWU4ynjZFVZG/EScggG6R9G0R9u6BsdXOTWgYlEHKITIPH
lHSsHAdrHEDALW0wMd/HHxCZxcxJe9p1NHNFK6NsFK0d3NtdC+WdxosjCYYxZ2EZGqgD2OMg47nF
1SFdHQ085ZOFEiCFjcy3Lrw6wBQyUkQmyIxXGI0WBpley0BWRyZafY2mPWF4uFdj8Krkx+oImAJs
L7J8lGqAW0RuVQTvLsTC4xIS5ckCBJG5W3IkqwWE8PGKqP0LUdtar2RIbQu2ryi4xJsHva6ug4VR
V5PMO2cyMiVh9czLT2A78Zg9wXy7gyr/ADcmcGenD7DdJmC4tELYpxp9cqm+srMi3ZHHzJYbp1t3
4wjSKWWvBaPGTXkFk4/CfVUlUbkuUg1Nba2NUK4CSrMxm9uZSIajHOyVlTiJAyKmBYiZsjAZZDl8
FoITo+cW9qMlUIAoZZyqylgoDxpUpW2RAgVt6JlvrWnvYzoGQSSDCBVFhVTS8GyBi34Fk/eAj8BL
+Q7bAvxjk36On/ZGWssjGDPnyQCWJrtV4nB7HuC6p9zVXN/kRdsb932LL/GtXl+v8vs+3t/F8n1Y
Yy2ufHDPx9xHPa2TWCcZ8UqNVOLBLCRLFNC/eimje6ORjmOVNmo1qJp1RxtRreprdN1repvUxuie
0xNE6tprR8lMxZpy4ITypLCROhjyZip64yjcOwUnVZ1Ys7bESRurXpNHLEO6IMeHJqRA4ThbFocV
XyzEHDmGdGOGq5BIrY/rWVrpyXGvbLI//g2tjbKKXFCaEYO6GeCaNk4xY0rVZLHMxUdDNARFI6OW
B6Oinhe9jmujc9qih1OO0VYIEY6yCFr6kAIYSxfDKM+wFgGgjiHOeNPMO8uJrJ3QSyQrIsb3NWFl
li2O2DBizDx2m0laU2A6xkWawNhbOM9Iiz5nOlMJZpMVIqvne9y67WI0lTWPHuG7lsO8AV0NozlI
wNyxiWLcNbyMMIW6S2ROUijH8CxrEGq2YZijKwI/pUOubjtQ0ASz3dzpEYRA+XgP3E3ecijaRu9X
E02gqkq65KsXlOVrUCG5AbkJoiAeAHw+Xh5IiCGcThxt5eaGKWHcfG1UjDyKjp78SKZCYhbqsCtB
oiGsfG2eOA6GeJkzWSSMSVrUejHvai6OXUthlPVlsPr2VJzSa8SdptVEs7oqwtssTkIr43EkqwOb
fHYpE6tjTiv3iKNMUxpKQtw7i6dKKrSrKcI2FgriK/leUmcMwYZg6yROWFo8LY91ImbstbBjWPw1
09clRPXxU1dGFNUpKTOlXKKwdIJK5JjTJkCexRklLJk4e9PKroaylrK+nrR+Jy9fVhj14MHFkfNL
wRBI4oIuJNJJLJuRpvyPe92rnKv7LKvcbX/1uWbYn7mqL81i/VlhvKwS3ro/rmUMysbcRuWFrnNd
HXrAS8khO5BHAPMTI9yRwM4j2qiBUlVW0wGqzMBqghQA2yyO1lk5cKGIdJZH98/V6vVu+i99twUn
IHRzu3cO5m8rVa9qtVJoSI1b2+9puJ1sZ2263dU0miyKOtGZLUMRpIdtFPCXUjb0LxZwTAQTB3uJ
HfMWOO9rZeaAmekwpUW1TQklxkNpwmV6lO9KjnYOqtile2RXaSSM0fMu+/WV7062tZukvx+mxeie
Zw+ddThVtcpPCVz4nEyCQDune1XOcizbz9VV29tX2tfjuNsPpxEraqxGqK9C6kBIJVjCriooGziB
NiNla0ISSGFrCpkaxqSvRYKRtNQlTyUotLeWTaAASfJIBxVDk6XbwnvPilhkfG+MqSeJzJ5Y1Tde
5u0l6LRY9Fk6w8ETISKEMw+CVkHAEdKS3lT5Rx2tiZwGWIqugjaNHPD2itngnJiMsLA461tjRx+Q
iMs7CXiFzDDNJKkFEiTgiBQSllFQCDDtKNLmak6mWgWOUQdnY8XpCxFqQRzj+Pos/OlxQNIKSbRO
Ik8j0eiIjtU2KrQ8PxYauNhQYyvgx+qiCLHZJJPGOSMwRIJYYyZHEMZLHJGyVz3tZvPVdqB81Lj7
6GirbwaLG5MerpamSa7MpS+cbA+LkI5RXUy7iRh8ZXFum4zFT0wOzkpqt9nXCSAV9g8AV5wIMrdy
UQQt0SzjDSscrZYIXsjkau69qpsnQuJ41UbpbD06LoqsDQ6KAgWM1OVFi0LjFMLGYT4ZsBRELXpH
NI11gXS0NLUF20vMWpNXVggEWc6PmkSawmEgikNlSQieTiEukfvzzO13pHqv7wEfgJfyHbYF+Mcm
/R0/7IuPxzH+gfY92xr3f4n+bMu/YCucPOQhBKwK0du/KxrRSi5Jki76ZI4hXqsUesz08EySTdjf
GQPKyeCZrZIpYn70cjHdbXNc1dFav8m1vVxEpVEgRVL6uXmja8ycqwMhhiNrihpYO0Fl9JfEjpEm
WIgd8b0k0aHhl6kBNwDNW18NzzUjumZCSGxwkM3p1dITDxOERv8AGV6rxnPc+eXa3uq6bl7GtwM6
yBJVkcywmC0EhQ83DIZLDLuTRserJo5I36aSMe3VNqOeYGxubO8mEr6ypqWA9IWdhKDNYTMhdYm1
dWMyAIM06ec6wCGZCO9jZFnfBBLXpX0GSWV5YTW8HoUGhph7wF+PkRiXjj5rO7r8fhhrSpxR1IZe
ywHPMFdVSHxSpJtVYQaMULb3cKSAudY4vN27gTD+HNUjZFPk0UbWgFQLYuoOhlKjSFtk7iRufiOU
Kf8At7Zr2PeeO5UL0/pzJaGvtPrbl+Tj5oQ0mL0kePg8TfH4UjI3tv47FSCqUHF8MIDrBUqoJpLr
IsnyGk1adaE1gkPMqPXQq6ztha+BIt9HxSSP4tRUXw5lZa2QQdgXXmWeIClUohxbwoHlsIyiJLeX
jQE8QTD3ZMaxg6uUf64CQp7R8Zyct78pPw6sa12KhJd3dXNbxWENZLb5RWwcMboeaRrj5QXGcwPD
XxlltNGDdkFkJK4aJ4zJ4VtMYqXDqU5I28Y7JcgoqNu5K5sKt6WV8srmtFaRrtDYB0eU24K4hV52
YXWh1aw1eNWbrBvOm87chOkmB6NncUDXNPOljVJa0ewjiKcOQFjoN054WRYTVH5NCHWTUQc17fY/
zFTJzhS2Es5NFaN3jBKcmvDU6CN1mLYpw4qbFaqzIoVsKy7v7G6BEBsLaCuoZaodQqcKxDsxHnHF
W42/ORVWbIw4CYIROdLFJFxuqhKyjNTLojJmMtiaIDHTRIcbuBQbZ2RgWMeJoBLS9IxQEcvTQSl8
iQo4DjJRxSSbaeiycGq9DlvldLYFi1XAyilpYGllkU7BrkgkWWQSUcoQTJIKAsiAhj2Q+lF8ua0s
O5nUGsxW1laCHEXJIPl99Nj1bEPAwrmCCojYHSFwRxK7l1ZynOEO5fZkM2M5PDfSX8WNsxed2LC2
zz56p92M6M0rKIcYmgJrmLKOsGQyTTSo4NkCmxTDx5O5zHROdhda5YpNxXxqsmVqrHrE+SNXM713
DkezVO1e5uirifuaovzWL9W2iWLjJJWns4XB5ji74srOHwOj7fj76LucHoqz4mu50ebry0nc9v8A
n01/l0TX2/qXTuFucazikV3C4fHVKapg4qv6PC5lUbGkHGUm30SJB+kI+XSpq8ikaRKIsIBErSop
XxyjcAWeXjskRyOa+Lc397Xr0VHdqrtb0DJzuk14ocwpNnYkES7qceCeNhExHE3FRWSab/V7HVpp
xoHM4ZckRIse/qqiuqKaVHMRXK98caEwtc/r0WRm8ur01AFxlzUKCEsctuouXYSpeP0KwcxURNkR
3AKu5zEhGnj3Z0QUjhPRW6pgxuP59f1dVl18LVuGqwsJLBbXy4zfXLDq+e4xK3N5gmSuFVZJjSRe
BLKkQ0e+xzOyIBY3h9uNSXdSBVRmi0g/JjzYtT28yI6oqKx07pCrOVu8Us+7DCOyPcVJXTAGFZBe
ZNB6CumspCvKKlxx9TdEyDupG4zIlFinSVTbxQZBFz881tT71bA5t6O7itIcfT1lxaGrftxkejqy
sVtTTbN1W26XlbaqyczEVGiquMYQVLk0MQ3LTiTrGfwhJWn5YpMljZ5VnodaBPPiuPmD1GOZEUE2
EibIrrG6fi1w614ajssSLQ+VeMPDYJEWTF9Z1d9Y00M1ILY5SEPXrR1RWRDgF1Y5kZFoPezcQa1q
ZiSKyksAgWWEKnEj8EzlR6lKPJBRy8hvcUFvixqxlKRkGPraKZXxrHby2vp0FQYQGa6rbXTI1BXG
R2LZgorGlsunialMPx+zDFo8QyHJnQ2BVzkoppBEmM0dqWMkw4QMcbDpIx3cB6is4nMqtACPll9j
wdlYdl6V0wVFQBWrw8XyuqrMfDKByvFrCUHkwDZIp4Zq4SzfIic+9Z2O2MhsTYoL6vs7/HCLkEFk
cM89PZlVsdyHXlPKhjlIgiiKUeZSBIT1lj4U4saRvix+rtskyUc+8ySapymjrMKXK7PG8WDoorOI
OO2FqMHWZmS2hYMdtNWtHKp6yaIIUm2KALmkymoyM0nG6C57HdB0WUBSRvySDLIcfWztbpW1MNiB
bwNykVwotXLSgDnVc8JIE8UskEeKEW1s+yB7IWKXWUjVzxaqGHGZK46meIBWzABDFkCy1mQRwmrb
l2hfPAMlhmGjmmg2vasTNVfZ1+ZYfUU/Y2SHGZOl6C1p8eJvj+ElT6LUSvisLi4W2ZbNrg0reGTE
4ZkkSyipkl3ZcDLeyAPcY5ZY/V1tCHh+P2FtXhWGO3bcdqi7exBPTHgC4x7/ACDc6Rn6SGEdukj0
XZHJyWYoW8Mx0qfDUrqXoIOhyexBBHHAMFrHZHJdVotiMU80i9LrzzoS421oohIzAfsgj8BL+Q7b
Avxjk36On/ZFx+OY/wBA+x7tjP8AlBxb83Zb+wB5UlBJBjFndNw0ke2N4Job+C13pfH0L3onSo6N
jk33xyonCewUVm5DHvr1uc975JHukmmlkeqvlnmle+WaaRzpJZXue9VcqrtZmDy0x0M0iziOIcRB
cQNaXEa2EOXgPhiJjjjfWjTvLYzl3sXeDRjeEGMDUZQ4U06JbNp7LkINrZIomGS8wsYkcbA9JHh7
s/EmZFFC9SXPRjrLGZuMNW2dOXRyKI5jJ4AjA3gu5Z80c8bZYoJPSXSxTMRyNV8ciatUMQ3NMtNO
qbEezob2WPD4LWiIgCJrXNCYBiIdOXAUAYWITFdVNqj4yHOZw5mQyRVbq6/yOpu6yW2mXKA5KSe7
sXX8zSrxtnHa0dlRTw2ZsIpjoI6WCIGUIOOpZXiwNH2TIFvMhd+3MORSVHFp21U97FQJja2U3Dpm
Wj3y1jWtcJ0olbFM1swoQ6ppsNgvGsVqg6wStGMQpsNvD0esTwT4jBoYGR2AhEEBcMzB2xIRE1XQ
Oj3o1utctyYi6v2ADH5OVDiJFt0dW8blamEF+KeheOvRCj+IxcddPM6wLllndM6OSKpfjmR5Ljc1
ZSh4+RLV+huRl1W15JBgcdkDa45Z1kDxiDbB0D6MGm5eI+cSBIgoxBxrLGoru6r624t762tUhHxe
wcf6IjjbE+tmiyDG7kNK9CTXqPwhIzomxQIpz1SR0lAPBZ29JNjJLCaewq5AJTB1bWF0z439OV1y
HO2auNIgfLMI8pqv40BEM3pm1hUtMuXD2WDC9j+eSQoV5DaYTpjhlMlcD40d02VxCJWyjvVkC8oi
tl4s03T2ThgFn49bnUYZdW2qNt8ZlrH19jNx6gixjkkip68Y0UWxHrSo4EncCh313tXmMsbSjual
SOjLylkCbYCRGtjYeKsNoDaVJoZ0cMKTiWdYbAksAxkDITxBCoKo5hdoaZWR5UjyDZAVW0JzKyCt
bw6wiEAEGQiUwFj4I66GvBgZLNGwPc4SRSVxVnfXNQyjscZqKi1Ir1Cx6htY2QGV9Y8CsAOI3hIR
gojb0y5shxR0igNjSc1SrBQL7J8kvLF/Y/rHFWpeOiziUuL5mLc8ULo2nogYiAhSLEhZHxSzlLFE
m6QSqJLb1BGU5JNJkZak5JbECYWYffRchFWR15op2Hk0MAA4Y47IIqulr5Wvh46zuImKknyEOBHJ
ALg1SNCjnvkckUC5VFGjpJFc97kY1NXvc57l63KqrrtifuaovzWL9W1j4fF4laczhcLmOJvCypw+
B0fb8bf13eF0VZ8TXc6PN15aT6lpMQCNJI2yhfDNMFFv9qBQTpJHM+sEdJul1wUiStKtd0ivFTpC
OQGKsqWsbVhQpG3cjUaBgr42cEQbhskGSKRkfL14A6sa5GrACHEqcMaFrOax6Ah8qWdWsoNLYkSk
OCSWZhfamkVb5WbsrOJGyzhVU9MRR+Hx4rQjNRLQcPotIatbGRr3PJU/jlvextgesUzgn1Qzn/Ws
RXIrwh0lHL0Mvsjx+pyY0oQACFuRVVXcD1YgClPZBVRmBSOEaROYQQYvEe+eZzNXJHFFGzEKyIix
UXCbFLClR8oyu0jr7WqFBJVBGpICGBbSDjMibBOjRg+IRKrJuPk9qy0tDpcqsB7Isc7ovlgZhgIK
yKOu5GsBIbCgIgkCocQfIvLMk4vGkIkmq8f5y6jCrMXsMPdJEUIwizo7ESMZ8FovIrDO8eWGA8SS
KAfgFxuTRwZRwhUz1yvLVu5LwTIY8n4uPNtxbESnTH0QcWPHGY7yc1PvhEAz0Mwr0lknSNhfDIjr
3VWS5XVW1adkpsWQDE0hVrOzLbDpS8BNjt6GypywiD2DERcapUoZ4Y6jlR+ncaU6S+yJRTyqiyvq
VJaZlTkdxSwBQB2tojKVtjBO9tZWKYHSWFRTncjEwmskglLiJrdwixXovMbnNx96Ubt7W86c5seb
QRN6vj9EBnLxM4ZLeGNxC5dyXjG5K2QjnjqetpJYldHyjRas20OHkjYkSTIQ+W2IbM50743RshRk
UbmvdIGdU5PlFAeEdmBzC6z0MkSSeja2HubgWWO8xq5F5aMsWFAVjgjKhhbuSkzucr9isPrjLWkB
LGJHfYVhbHXSOOmeRYGdIWcFks1hYzTESGnFREETykzzq/juSRtcz0a5cywpUIHproaDCAT6urLE
gDLpBha/DBaJ9WQwUSXhl0xJIxAgswRQzoI92tUUq4Hqq9KF8mPIUPNUWh2MNYlDaWbywyLiWwAW
ER7pB7YWGweCE60gO4DdlsYDrU7gCl11KJYyhSCY3VHmx2BlXT8qAISokxMAnXak2hUEAQggxMIk
XBXILMeQh8+SWAtkc2Z0boopw6ivpo2iNZFG9kSi1sD3pNJO9Z3Sua9sasiYJy5dpBMDldvlsBcc
wqEc3emnmW1bIqhrFLTGNsiRJBHxLMkCQStKQ8Yc2MRq3OQEY9XWTbirw6cit9DtdYxEqaLLC6Gq
hyAkYE5zzK+qs746nBm5fla+KKuq4wvsgj8BL+Q7bAvxjk36On/ZFx+Oxv58FwHXbGvd/if5ty79
hFzEzIePJwYVeqNSSfhyTcNHr2rO0hk7/u6d3Xu6a9emvc0X+faebiHR1IdjNXyQVE6wWZCBQcW5
tSCBIjDoKmi13TI6wWYrT66V7mog2zN446KececyvAsL9cjq8jCF1mJbVnnthLisUCHks2RDzEIL
Wy80ZG5JGjDWuVjxc7FW4+XkEQqysHUuAYCU9IuM5sjI+JExNHaLovd6trgLKgKjGp6epq8imMGy
B1tSrQWnSTGmyWR9Pjbwphpqg6MuIwKMeKHly4iyWPfCwO3nzLF4ak9Z1Bspr+njANaPKyAnkzVK
5UtBiZIhZnDSyJHNK0eT64VNg8vubjFsbqbMyWGscXldY9HR+EGFtJ5owxQL/l3cQ6lDIs0Fc1qN
Oejl2aJYZJQglPF6RjHLtq4aeSu5UsznmRykpIoPArrOdTOHw0Frj5vBBzkMV3ozxRGNseiHPXIK
fcbaexWOVDe1sndWgnWR/wD06bNxx97TtyB8XMMonWQDLngcHjcXoxSeclj3WvfxYoeDuNeu/oxV
2nEpciorYoWIckkOrtq6xIHGKa10BE8QZMs0QxDHxyQSyxxo9j2ytc9q8PY62jy7F5KmsnYNY2Tb
+ocACRJI2No5ZrDXjikb0sTOGU6FVlc1qdrKjohzgioCgjIISAyxZYSRiRio+IMRBPA+aGaKRNOE
RFLIKQiosMj95P2eWe40H+0ZWm2J+5qj/Ngv1bOLd4nErzmcJYUnSXUaZOFwXA2STcTveCtbZLK3
ea0A3Xhu+pcP3N3iWEUmvA4fFRKesTiLLyITZndqkCTqXaMRsLR+fY+B9bX3NrTythshBZZhFl1S
JZmQTPaydzO9ZvNRVXX2NF1RV2uI763mEOryYEhbXDv4SjkNni9OgkMnIfPGWxEVsTmpuJqvUq7E
PInmncwrRrp2vSVIuTFkRVif6dFvPe5yQyKsiby+xomy4zT1NafKABXW95IddyVRDKyzLNEgfQhd
DHttTI+j5nkxGm1AcM04AaHzKSTOAfcMyqgEr6u1IqDiT7ukhghngLLDHmdNHYzQwjXHIyl0zyJo
3lhOQlGaaxND6QynHAEPjDmCQy6rB1MisuP0Y8Xikx8y2y5UrkHQb7DeXn5aSTl5N+IZ5dZPdTk0
EcVDJaiC2zwbq9ApZbRgTlkJnCr+ccQ+QaGSMh0EgvGGVFIZahMyegUyjhILuw23Fa8ulEF3UmJt
hUn44AsOvEJlL5dB95Elc32DbuK+x+xe2tvD6YKK+rI1yKagHmlOAqpI5ClInimi5KZsLZpYSt5j
4maJriUMgqLDlRcwDSuM7dDLSmNuRY9OV0mQmKvIgYqrCvG4aIjnLuKwWjph7GysbW/Eo4Cbbo8G
epxcuCuu8htbCOtsZawCCymQEeIeutCCHyATo3gGTrXx2lljcUmRzm9HC41V3XPRHEqRPucnbzVg
L3wurBprZXT1Q08cMb4ZR2SNVdnZVKUjKNlR068xUVUbW8pz3H3Wbzl+t+23G7zlXtWoq7SWGSY5
U4xjnRpNo2ymypCrCvhh4MrI8jrpaSvr6qTknzEFSA312GFILNDIU5nDIfWisy7GHk3MksNQO2+q
nT2ssBMgU8VbEhXEOkhMilElYM2V0ZMckD0SVjmp0KNkVETdbhb+iILcCWzVoE8whruQjIcVuiFD
kDFLwtByIJoZd2SN7U6YDPxyC6ixsfIrHHzMmFj6DiKCQ2Lp0yIWcurr9xzXSWc9RutgXmGjPTRi
11Obe0Yl1bQpNXVEtsEywsGaOVZK4SWWIs6FOHLpLAOqKkbl0TdciEy0F5T3kYc6ilyU9mFZsFKR
N5RiXhTTNgnRqoqwyK2REXXd2u8eQGQeOtSTo6zdOx8V06vlhEv0ghRjXQdC2JIoMqukl40sjlRI
+Ho4XHQLKmsW8hkxd0cJdhTJj0+MyUzJwrSCHi8tM9trI+bm5xHiIG/fik31WFLqDLcZmp1nnFS2
ivqqSsUkUWU4kdD2FKKs44UExk8XF4kQsMpEjWxRucmN0EeQ1BJeWV5djSTjW1TMIZAMQMLC2GRD
uIRLZzzysqkEhIaa6usmtejxHNW14eV43J0ERCJd7l7Vu6HKIJcGONa6FL0eROYxwsMJfCklJa6B
jVlRW7DnAkjmhGQREiGCTRkilDTsSSEgciFz4p4Jo3NfFLG5zJGKjmuVF1+xCPwEv5DtsC/GOTfo
6f8AZFx+Oxv0FwLbF/8AKBi/5uy39hXJEClgsdivEgk3eW0dV2MaSEcTeTgpLNH2yJv726mvsbQC
zkSFyRs65XLvJq7TSGCR+szoI+42Ql8s7k76Re41YLudwQinZCUG6ZHJVWomSvQssQhW6DIQNY+E
aU13MovFk310dtXA1mU9LD19vk1lQ4zynMGsdktdY1qAE2STTltCrSbexIUg2KWaRJt2eZ7YoEZa
YiHPEhZOHFY6JLLvpA2d9G+qhllRvbcDiKkjvZ02s6Wkkljtz56CwnsbfIMosiT5sdPAsBq6W+Kt
p8iBq5nBSDwOrzxm1zipzQB4yppJJKG4IAArkrQ8tjNhTM8pzk6YnIvQtCCZDf5TVAmSekUJURcM
mjBI+UaEkyFEJt2PJa6PG7i0w7F7DFzq6zsT62nnW06GWW0Csoqe1mjKFIo+VSB9PxDR7GVJZq7d
3XX1UOTUSqd2JR8DrpFQgRkNg1cjcQ9QoRzlBpHuuRGpEPPYEMjGbC1vCY1Fy1oMNLA2/wCxSFgN
Y1zFjaMcL6ItWyowFEjrP2zru0j9MXlJdQPS2bVN0caIVWU9vDYiSuyfImKMEmKl1E1TFiMIDMeI
MfeGlWiZSWXLb7siDcs2BkI7MUonl19c6t7G+V4TcGVizvlQ/I4cf+vK57xK/nYebrCyCHErXSES
zQOl4j3v2oYTK7G6qzxe9BsRa2jzfKa+vshoaezpiYmXtRQUN5jBDYbOaauUCGzbw4Whn8cWWeJQ
a94EIEsDZHTDQXtpkjUlnmeRK/py5HFuLV0sq70k9jDBJJvbju1amv7LLPcYD/aMq2xP3NUf5sF+
rZxbu/xADm8PhcXiq4abtOCoVikvE18CtbZOkTVGAGd4v1CCITCYOanaTNDEys3JZWQ1o6RySPr3
EPXgVqxcR875EYcW3f8ASKtQZ6azszjQTh5BCoSGCRsKY8QaDe41XFXExOVwxRirCRH6YeYxEZEy
rhCzKHsd4sS+0tavhxLzltX2y7wBYZBtHLYT3Ex9jWvkGK6LHKAJJ1lihm6T5UYzHx74bo22jxVj
LMV1k48wjknVQAFvfNcKMlfc2CNNd0e+QswdixNLIUlpIwYMIddjUcYc4JQOXE2dgNlWLkxnxT2E
1OAPRFwE8QeJkSQeiOrhPiV4h7SRFc2QuoGkrOSkzi+yHcFy/JMdLuaW8sLy1YGTaU1GtpQT1NhY
1kkgtUUTFdsCfDPaVoxBMEtpVzLQyFHdh2t7HQpC81IyC2FTI0kn3yhnl9D62wCpq9bD6yk+ttYx
9rQcWPFSK64yjAspLtzyLCG+GKxWbF4zK+CFlVYQHJOPRSzVdmTZAOGfZT18tUsK9JuygmzOqyH2
WMdkSgCNIyXJi45WZWo7KL/BkivWhxIStCEirrTodLAs1sfNlylFOkkdkAlENic8GSYBFhhLrog8
aWllr+m1BlCYJUHRnV8q3SqoyrVyVzxYbAZbJ2grX19YQHBfBJW2FMYY2Va+O9pJ4jwFL3U4zwZy
w1EsWRq+fo2eVEbq7tsTIoVqrGwxyjOx06rviiQAcgBtlqFspp7QYG3eDYdIU4Zr5W1FpETC8+ok
jRDh7IGgFbeQ4dX0xmX30AOFRU5LQbjKLYiUauDTJMSLrXVFJSmG1w5MdRXEkSFvVoYUMaMfc4Db
W0pgZMd/U1lu10XSbKS147gXFRwA1wMJ9bzbxo4AR2AIOILwWxMco8NqdbA4RX3D+x5lmEx3dSXY
TE5LPfDAjgmXMU+PCkUYADgpSI65lplai9JEQQEScFSDKWEUoD0P1kWHugFdkmRUsFWXj15FZWj/
AEPU4K1WUpZiigwALflRw0kwjZQwt6aeR80yB48HRVPZc7IeSPtISCFyI6xjt8lpWBSV61CCQxq0
mPjXCXkpEteMyq6MYx3Msx+iEkoBi6zsWZxhB0kTiYR57jKR6XgFMdHWpJKBz4BhZ80sTCuLM2do
hE0ku5dPHDx+2pMn6NJsyjbiwrrmtnBoBaN9cKJFj9kNbVbuj4ShnTWdRII+wsU5ebRjprMI9a6K
OFI4cTomXx2Rh0wQwDIoQ5ckNxuiuShXlp1MPCtDAR27sdkXE6EQPEDkzi2tTqYox9uDYRY6JUTx
ZHEQuUur5qjFArySWSyIba18VpZExPIEHQtySI0mGmaPNh1KTimBZPhlFcVc1hOYWTYdCdD3BYpN
HDBWtR1VJOZXMnuWiFzvnhKskldEzGpJgaUyzuey5WXVfWWeXZRlAyS13Y5ug2NscsyOqJu3z8xV
8yIa2pIbXfWqDhOQVGuxu5/aF07Sc+kyIIewNEGrY86t6y1c7H5m0b1tJKro7gq04Wk6VImlsHzA
Oeo2zcfJGqZng+hgMa9IzzN7yOyq6HLqO7IjXD7yvJpsWU8Cp4jhKU8wVp+4GxYwHcWH7EI/AS/k
O2wL8Y5N+jp/2Rb/AI6G/QXAtsX/AMoGMfm7Lf2Hc9jT76e0vtp9/aaRU1SNkz91VVdepV7i+x9z
ue1so5rkIjV28sM0AkkT3bu7rFDMMQq9X8LXrVXd1ddl6MhEr1kBUl3J42KKI+fkUs+jHlQywIpq
iytJ31i5bWNerusU62sbAgeuqgyDrCfhMekIgUcks8qxtr+JLpHFJvNj9jVUTXTUkOvsrSI8YeKw
fW3FIfj1i6vnc1sFkPW39RXGE1vGjcKtrFE8FpSStWZmkbXa8zNq1EdqqCtVrH6K1U3gWdc26qzN
7jd2T2Ws0lE4thxhhxyXTOAkQJ45MksDGw2a1/JFP4kCqSG0hXxRcM0hg0M8C7eqp+91d2gitTvO
rwCvYnfemPZw0Ri6p3Natbi3eEl3aDUFassKOaTZlxzyQBLu1rkhbNGPJK4mfSCNI39bdXb1JTWF
04ayySckSmBWDfebKIJx52RcOuckKQjs5giYjSBivaxPDwMampcrepVTeQRqdr2z27ij7zkiYm+2
SJUic7RHatTTbqNmT/hdEaIi7uu8rtxIddxXKu87g8R2q6uVF029WTLp6W7qG0113V1VoL96Vkna
6elM3F31Tq129VkfxMF1av8AB9ScNkvXH1SSKnW7q7XXZjuPJI3fYitmjjaqpI9IW7jWQxP1135N
NVXRE9hyfscs9xgP9oyrbE/c1R/mwX6pQTlRjSx5xnqscEzUaRFJEsnAIjlHIRVkTWEiOWF/ckjc
mu91fUtTQholhq5GsSKaKZ6lLK7hCcQqGZsVfxn99xB59ztf4KaDWcDVbETGrkY/RdzhvfE9ujer
VHxuTX7mnsaIyKOUmWMwGW0Dbd4tkVbDdABxtmllpYsgqAG5By8M7CJIaZLCZkE6TNajiYnvDtUk
EArSas23CnDrpN2SoBqork0yGAMRz2CLVwRSyP3E3noEF1nyCC7TiV5BsZ448Jzq24o7rH7N9fPM
6GGxGrr8CtPJreJviLZwQyANJYrVma5r2vmKJOcscNrNS8EUGxsSz7hrUdNXVQAQpdhekjxukUke
mEskEcIZFK9nRR/BrJJen3TXDbFwYMGGZgfd8KqlHYe4yjBo5rmtjG5wLrsq8fXnB3dfEVXCW9Ud
DY1x0aTDFCv4o8jXOka9EmdonayMWB8CsSeCdvLktRusTeggzLDnnn2dZBIRj2RCVZllSumbbCV9
6XUjUdlMK4QtZYgrCaWbgEvh1bCqolRFYSSEvPkrISnVF0ygJthuM51WJlMlf6GirOCYaRnJBWRJ
kBgpgyRSFClIyz6FMYUtJbHUtnvRFQKHaV8jojo90qGDf4MvFiUiDeGn7dIS13HNRLnH7COyrnkG
jMMijmYySUEiQOdG8Xd4sbJ4pNZo/SZl9Mh77XYiiYRraCV4dqQLwpk4YB5Bogk/GWPl3cUiuMj4
TJXTM4O9JGxkkTnlwxtKa8KZsEyzgmixPe+CIhFEnJgigsIdyZrXEgSEjsnSUV8rSYJ4o/s8j8BL
+Q7bAvxjk36On/ZFx+Oxv0FwLbF/8oGMfm7Lf2Jf3B5/6lV/17E1rS8gr4mW6hyE0lUbrPIwewkY
CllAcOQxhMVfOS+YBIZY3NZG2RrXbqq4AnKyBCn8mwe7FvDoOc6EKg47Sra2sbRJuQFLk5dCkG9L
mZwtI4t3I5gxpyCbjCLaUcQNsxE0j7OjnnjgGXlo1cruaSFqe2qbvbabR2+IV1uDY43gmS1lcXcV
h9CQTk1uHVvrK0SnyKvBOOQd1ah7CnwR0XNrW8Gc14dhyXoiGscyyV9XYgqZjB2O9kWkPnjsx31x
w47M8yHKCbkmOz5CxK6ILkDAbUlRBsghuCmFXQ0ZeRn8HEsQnszB5bAl7piMoyOTsgvxpZ2ycO7i
x6eSOlEH3LEYdtKOECPFDWsIxaDGbHPa7E9b3pQsyq7Lt/kLLb606MfZACZFQ9ktlUiJe8B8xRVK
xV0NrZta1Yex5Wl8/YRS3Tel7CEEqvmYNPg+WhraTjrC59E9508XLtsUgYFYSRwypwkazbDsnvKU
ltvUZWlBwoYmqyKto8Wy2E+8jejkUUTKb1zUi53k2zV8WOqqdTdskdE/OAm2k3Y+miFYPn45VGe7
OETIq+vPy4+8sLSWuqpkZcG1IVZis8MTuUqWbztckx2D0YyU/o1D6MupjOyNkdnVVK4kGeUTA7Hr
6pzG/rX38JNVozIUCqrI7Us0qvhihYhWRF9kIexF7Esc9MVSdOBwR5SMBZsvyMr6Je+Fpj4EqC2T
ZQ/o14iv6DJltFlIVpNhcZCEFCRjzqMUfGM6vaQ+nkrUjshzLKgvWYcE99v02OdPlmNTXAq7pApU
IKVjB8f6Ynu57k2CmOuVv7A4+ybaPdXwyRvQ2edBWMjgjTgipBDvb7+Hvyyuf+wyz3GA/wBoyrbE
/c1R/mwX6q8WR0EXOVKTSRufGrYOlA1nRskatkZvQordWK1U7qaLtPJLGyQhssnR/N6AzGDqqcm+
zibG9K2SVHJxGsifO1mhCgRTOWrbYVxhVNUPALQdZDrJU5prxh7CPlGtBlIZM0M0PnGzhuYwiTlI
l1cKWXeTiXNEWHPM2RJ4jbiWWudHDPZR86GBRos6tYGUY3jPFaisSLqjc1iguHR7WtcfA7fbE10h
EFiWMURuQNZGxJyoyCWxxtbExJt2NjWNa1vYnpGUmRAk4dytjkhd5jt5jnIOhx6xqXVocl7VgrdF
WpVm4cp9XzIMdbGfLZmDTT1iGdkeqWps0jxPBcnwnDUaPPJNdC2rTrdr6Xdi3ymurosWpUQfjqlh
WEQt0dGqLV5XX0l1CLiuLWVRG66qLTG5bjI8hJx8Wox4QG7BBtCYlLBHetigQ9TGUYByhhhXSEFb
hd3OJZZADTU13SX5VXXlWtpFbZEbQkyZMlVXwzGHoadWmwW/RYJViP0kNMwSOpjs5R8Fyl1PljqZ
tJnNe6aHCssMPiJLKxFwqz0QVKZfVrZujjd3pKuDR/BavbaMXYOWCasoILDJckvLOlt6aa4NhBub
0i2grgDKvJQAaQ2IOafnnuGvIEs5nIxNwdEJGtbOO8samXsk568ekfWMcuMWlzd3bKLMBWgVolpL
XE15ZgRr7k60BFjvQ7wYkauFkmbjXY4bj97BkFPYYsJakS0liPQCi43fVlgXkY2STjTUZ8ZsVfEd
WiAWJ1wws4bpIQeUW0cFa9F1pwqZxleZ0dyVwVEkpAn5jfXdbmMSTSCaftBYXUcVizt3ny43FwXp
FIi5kBj4ZFfaD23ZI9DQnKRxPj3sgvZaRtdAakIXBdvjzVu/Gte+J0aOifGrtsjJxWHsqDiG03Yo
r4bK+jzKDIN5nZBOfk0IhuQM6fbGLWFzTWTHuUIcaeeUVraeSNVyS4Agy+5rsayaoGrqF5l7avvc
bNwegrCWgKfOW+xkByBzbWeyfzk6EiXXGm5gw+VceEMyfKBK8ehrS4rWqx3si5kOTlstyaXkbDI8
LyKsaOM1stZHWCZnV3WNNqmuEBFHaNYwE5cOQmTWUXHnJ9EN16PaoBXkWp6w0dfjmVsbj7W1gyNj
jvMKe6usxWQyFCgOeNzn2aR+Al/IdtgX4xyb9HT/ALIuPx0N+guBbYv/AJQMX/N+WfVknme2OKFj
pJZHLo1jGJvOc5faRE12ZPJxhQ5ZUhjOKUWMdznLpGrkQp5MLZOrtpx4uGnXPwkRdHCDWdeVJKx6
LCMaPNKrN3R6oyORzupvdXTq7uzrOa7t2T8yQVE2PleGPKTxUkdEj4XKi7s0rWOcrnRtkc2NWtXT
aGX0R37Xjv4kSscC1Gybjo+Ju8puOk3HyM33NV27LM3XSaTeBroSGyQ14o4cMk0DnTLGPDHA1ZHM
IjbvPZG3iIxkcarruxtau7sqLNEqOTR2o8q7yK5HqjtTOtFVqbyL1Oam4urO126p4va8BLppoiKm
nOaLvbrd/wDhqxjn6uY1UbpLA3c03N0Z7dxU7j26F9q9O5xE0form72jnIvhofZ0+t5ere3N/T68
6uJw2cXTwu6nE3ttUmhRddd5BpEd3NF7ZC97R/fSt13ZX6ySI56q5eqWHuaep5e4mmieq+43dajE
7jGtY1mjWtRF1lgVV6nOUaRXPTRybsj1L3pGdsvaPVzd7R2m8iKiJzDNGuRzU4U+61yK5UVqc7o3
v17nsaN71rUSKW5cWYyLc3gelcjHqDEjJ5xrbSkEvoKe3Zx+tY7QExj2aQvasKJHt4WHutd1jyL2
zdE3k1L6nuaiNkenbSsa1kiuaiJs18kyP3Xb3VG9HOXVru3kknmVU3mNX2000aqIq6/sMq9xoH9d
li7Yn7mqL81i/VmbHBCRJw3LDATIsQ8szE3oWTSpCSsUayNZvStGndGmr2wyKm47udzufcT2v+in
sN7iL1omxVn0ndATHcHmoQpwlElfCMgbZeXOrzWslcIiDTPi3ONB6TLvx9rtY1cheaW8dSVCKS17
sOkDaRNVCktSKI8GLVEAsY43O4DW6vlYmvWqiwVEZkQIhNtXoywfG8xCa+4PBPWaSCSWJ6uPHJcx
7JFR0atdo3XdTueyq/xr3V27mn3upV0XXrX2evXu+2vtrt3P519tF/j7nV7X8a7a6deipr166O3d
evu9e43+RNv+9fb1/wBfd9vrRepdkfu9siK1HeyiKqOciL7COVrVeid/ut3td1Nu5/Ov+33fv9fd
27mmiaJp1aJ3OrTufxbf96/7fKuq+yu3UmnsaaroiaNTRqa6NTRqaI1EROte6q6/vCR+Al/IdtgX
4xyb9HT/ALIuPx0N+guBbYv/AJQMX/N+WfUx7D6qCK2tLHIKKqun8VWjUo1vYiA7rnRovGtVYW0i
MPqbBAiTFuZxhYiLVOZYI5YY2wyyO3WOJUiJBB3ORkqohhPCE6opF9O6mPXtVqiIALoazrDYDIgi
qvKYAJN2QRybx4sb6ncH4csivjAt+bdO+SKJ0sAJAVQXfWo0EEEp8jK9ZrVXHySU9jC2ISA2lrWN
dE2Zxbnuk30hFlRInI/faFfmVWP5dV41VXJVrhmSOGaMQJKgs7sgq3GwlgQ31VEASKA6wGhGnhsS
xumqRr5p5uyHdQWtfYVUmR4NU4uFaV1xC2jbl1VhUFaWfNPkZa8hWjXbCbeugHAmtbVhhiWFZz/B
FHxts+JT3i52Jic97HT2yUyiHYbYZUk3QKZFIWNaALAPBOC/IyYyYHxz8YLnmIHkTlBDtMYDx3Ob
elM5CKieUZg5AQZ4qFLluQWBobDZSwzLErEsaiicOwqvS1Fla5ckDP8AQnkJ9ZRYMdXkUIhFcPz2
bZIbQx88NbZRIPyoLIxSoGzX1VHZs7eayp4TEkB4uX1XRNuwsiLhpDXiIUI1WvGM5GtyfMhwd5r1
gcP6I7B7njuJVYGkMGh/xmVe42v/AK3LNsT9zVF+axfq74j44yHmVg8b5Y+LG3m7IQVyvjRzFc3c
mdqiPY7+C5rtFQsmSGWN9fISObGPHKcizBprPyCixyPsWr3I2DROJ4uokg8ZscozDgQhpJJKyflj
pi+FXRjzbsb0RrLKavUlkjJonwzRyNgIjkbMPJNCrXPtzai85ESyLENIFAyHBhFRjMdGrmuUa0ns
TENUoQKdFZNIJJXd61J5XcOqbaE85YTz5AeUTvwyLNLZZDbWKve8aOIZ0qoUnGUVjRVl3+W9J3F2
orL0GYZROsZ+xS5L6hI41/fo7OcakdLkEfoVplglcu7O5vTN3rO9/pvapNIEZIuO+h+0zfIsIHo4
xD2ZKHJQvux1tZrZbWUI1ZH0MxpFQzHwXBVpjJelZ1CcpguS2DcQJW67GuVZnWgVYlu11UdjAQc2
lmTNbTtsa06ctsZEcMVQRUkqytaXau1P2J6WXFjxA6zE8rsJqUS0jbWYzf2BwFlDLMTaEMLIqYRl
uRrljBWWteDYRJjwcywP2ybNnjhlBAw39pQDwrMLzlLUxTIFOaVIpOnSjhJbBpUIzGQVpYycrJLD
JJNlNlKbiNxkHoV7EwME9eDZC0yQ5Hnt1XfXNe66sDWPhHtJZYJ2WqtLYgxfLQse4XbIH3MGND1F
dk9ZT5Xe1tORVzTlHYHR2QV6WjrWwduOtntomQzOPIiCLqIebVoE85NVR1eLClnJj9VlV2JGNXpI
gF5b2I41Xv3WeY1PVT1gFfwLC4Fr8tZJZzOd0IDFGOMdQYvj81RXH3Yd1Zrb3teXbAxQUi1rJK8a
rCtqGYyxLW0ZO1eloGChhFzLCV1NZfyDvxrofE8ixbGLCqJBsenL0nIB6GZ51ZYMuUFqU3shhjq6
yemupLCUCaJbGBS2uEFcr8VgqrfOs0wGvibUW89iGRRsyl9TelkeiAcYuFX0DILGlhGDfM1zjBro
ZZkBF7E9YTa01nJkWK2mQWtmbU3E9k6vpfQxwwmOkyaRSrguO2LiItyJeCszhy0q9BpQzbSe2fjk
9bnPYozfJK0KnFPHs8diEpopGiWZZNrYQXrOHaxBlWMAGPNHsoUjQKRDGtGyiLHa5lhcZHnuJUIf
FiCJjHc7sVUVm6Tk7DI8QENmljrHCjiy5LUb0k/FjlJlhZXmFVkdJRi29XgQeQlUhY6OPsb443KK
wQIcoXLZqWrFIlpwLDhy2lsg8ck9XJaPdMlsDxzzRzbEY0wCw5fHbPFuUMFk3ZAZae2tbsmOYZFa
1xMdmUEcitLBleJNC932WR+Al/IdtgX4xyb9HT/si4/HQ36C4Hti/u/xj83Zb9Tp30L4703x+a6Y
6EreleZ/+cdIctzfH/8AXcXif8rYytDligLmcJKNKRxOA2cI0c+PjLE170ZvDJ1ond0Tr10VU5fE
uprtHdJ3e52yIjF3OhU7zrd2pC+xvIrdo8jOmrY4eMWTMOKYQdI8omK0ZGjHOq62KCFvThCq2RJy
HqkXpzo2JsFNlNNjlstfI51fLf1tYfyc0m46RwTrCKTlpJlHY5ywKxzuAxV14bd2xJdXY0efbV3R
ttO4OqKMsqjqYoFhLuSTm12qtaopLpButG7nc2ABraGmrwaomQ2sDCqgRBa42Vs8chYA48EcQhUk
ZZbHzjsjlewohrnKk0m9Z2dTQ45X31nGVzFwlCEpBRBTe3ls3jckZYxySIxxUTzonlNbuLPGukjc
gdZQYsY3IQw6menx/DxcYxSGmD56Tk24++xvePKcVaWM9oQSfKwxJYIeViYP6b0fj9NVUQHFfPyV
PXiVgnHkRqSTcsFDDDxZEYxHybm+5Gt1VdE/xuVe42v/AK3LNsT9zVF+axfqzsKQlYG8Kd6BpO4l
VFmjJj4KCteSr+LEzwDVl/gaL1pDAPE2GFkSNjhYzhxxMYjdxrW8NnD6ndbXaPbu9rEvbKhRc+RY
+HJaIG/o+9qQbF7SGBxjMnDWezryoHTjhxceFqKj0HRURESVXcWpyOtrokjp1RIK6zCcOZUtIbBI
PGBcrHGxyywyK5+9JG107GOSKWZslNjshLS+hw2gJO2PhpMyFVbHIrF3la58e6+RN9zUlfI1vao1
Egqkq65KsXleVreSG5AbkJYyAeAHwuXh5IiCGcThxt5eaGKSHcfG1UJyIehpYchMgUcy+iqwY7gi
Dhxt4RFkyBpxEWg47OC+dW7sUSdyJmlligI9SLa2+Iuxa0ygWjGEsrPerJK2M2w4CIUfwOM2RrJi
3NbqqNcxOrYugxWGhxdtw7hZAUDjYrZLSCcZBrOdkYhdbFFdFwucg9hYJapE/rmEIb1shrYoI4wR
hIgoRUYnBhHgiaO0dGv63QcJEjia5ju0jVXyO327PFrMTxquGeoqvHBoqsSB6gmrYhK6KAWONyh2
DnHi6t+tzFUqLcnXf2PiKqKsmK1lgItIyABJo7KcZg8Y0x7JInNMlHjEFjgkISR8TBh2xq1IY0aH
LkGO0V7LXue8CS5qK+zkBdIsbnuEeaPO4Zz3RRK9YVYrlijVe8bo0HIqSovgY5mksDuq0O0FYSxr
42ENHOhnibMyOWVjZUbvtZI9qLo92oV5Jj1HJdVsDRa64fUgOtABWNlY0YKwcOpYsDWTzMbDBKyN
GzStRukjtYdyrrm8vYEW4+6EMnAtTOZ5uzh0j9LsCudM5g1mhM3Nk8SR3Hl3mSVVBS1kkbzpY319
UCE9klm4d9lIxw0EatfYPEEec9O2LcKO6dZFhj3bh4mM48K/IklbkDh6Wthdetn43GbcLGM1bNJu
YI4qG8ZJOPNva8V+pwJ9BSHBWkg8tmGZVAki2MocY8Ikpw80D4i5BYRBYh3kNkdDGMOyNWthjRst
bBjWPw109clRPXxU1dGFNUpKTOlXKKwdIJK5JjTJkCexRklLJk4e9PKroaylrK+nrR+Jy9fVhj14
MHFkfNLwRBI4oIuJNJJLJuRpvyPe92rnKv2YR+Al/IdtgX4xyb9HT/si4/HQ36C4HtjPu/xj83Zb
sv1e5smvt69f3O2069erte51dz29rKaYG2tjFsrcAaERkoTIRArWWKDeOnt8eqNzhFiK9SDWzPiG
e5nEl11E4IctPILKktlDZF8Y4eBVmZCoL25KVVWsk/KkEOFAkPNGRwrCIY0k7e3vEneNfh4IdaNm
UeHiwXA1BKYsyCEwPHc6ItvE4Ew7h+03ZmpFvbPbd5Td31NYYNk+QuskqsUjyWkscbGriyXVSg1g
GOlBECHScjBa1p6ssh4+PYlAkoyPsgxY+FbNNxHFbMyTI5VxpwIVw3G23VfDLWyWz7hxDoyIJmPk
xtaYh0czGEyxsVFkLEHMcHC2GKC6laI2uu5kh+vJ6jhEvJlFFKbIM8ogIMUmVqvrHmiaEbcSzIhL
zwiCogpyJBR4o7KfMB2TY9aPBEjHiUICSY2Gz4A8ScPHLWVGuSNZHdjB2XvnMts0qaNH2sZWJhJN
Z2MoYL5OgpLqtuym82bBIT6HMeshwoJeJNwY2P3R6lKPJBRy8hvcUFvixqxlKRkGPraKZXxrHby2
vp0FQYQGa6rbXTI1BXGR2LZgosngYHZdIYvPXCkVgpWMXZh5lvZkUtaCE7HMjuQhzybQflHA3ZdO
UDxYiLKIMPfIZZGXVbc0pVZfhYzNU3E2M1hMlubTQXzYY7M3JIcYZBFWTOlecXfjAzPhdAEQVNMG
wppwdPklqHHjQ2XWRdUPTmiVFFIbbV5pRRcd3ypb6ommM5kekmtpzoU5mhjuR4yZYMgNu627x9KA
OmseDcNph32lfkRhFdRm188V1OAPDYHDSDO6cMp5Kt3pt3HWDo+ZlW+joshyA22TIODWUU+JWkkL
safVdIsnthcqfjK/W9wGWPILfEwTNVwfFZbLFXSpV19Ee7GC8LxzKq+9elXEqdOPtnamQuvVsGQP
QOKvhHjpucgtBrFxm7XPBLl+rlXuNr/63LNsT9zVF+axfqqQkMhDuOJCyGJUbJI8kuEZjWK5Ws13
pUX0xzYur01zYt9ycwO9Jo1c9qNRksb2uhWRro5YpWpJHI1zeG9s7GPR6Kq7rlZEzsmnMe5JKLog
rGH8WZrBprPGgq21LlEGdumyDROfwHbk88DppGAwxyEq9/Cnu6oKVXS6xFW1I6aFZkThJPGlHEhH
LsKGkXl3LzEFcby6q02vdsFNZOYp6xPZPJHuvhdIyeRnEjkY2KCeJ0aRvinhRIputze6ibYmW2XJ
fRPYzYPCfbFYBkQlPO6xv6US3etoRjo2NwwnhklQRkizuHikmZyi8fgIoCJCenSWXXOFQOfGHutt
KPp5pk07kM3EBdLjpkUEkSuKWeYKOQKLjLu1bq7DM4JdfVklxj8KBUA63YAnLJbSiuLyWEeJ1U42
HipYyV3SjZopaFLUeQchcOnkiJUHOYKuelMebi4r0S7nEHGGlqj8jDyE2SCaxEQ51LR3A9ek2pb/
AK2IeyOpZSZIOOTkN5io16WLXspiL3HnWzjK+HctXWTkmgqDngHNqujZmwcrIf0jAQAPkc1nY3J2
OA47hs49EFX0xCx2mUZPYY42YVWCC2xDd8UV/DmtJmq6cuIaCchBBVogAMSvGmk5muK39Wf6F47O
t/wVIyKJo8jcySrmILHcFZiljmWAPRrDRZmttlDHmyOqR8xE2MhZEYVIIZjsry5MVHmJtwRahL1+
RwSNQQyOIy2payqIdCnK2UzCApyZg3U2U02P1GHwZByczMIY24mtCLiIeayIfcWBgor4qxnQgwxN
IfAXzTsqhgCURz5LCqCszzOnm40JRV5eL2x9lbvrWXKQgWdPklhiksTKtZjCCZMkhHCYIVEbIOTG
kLqiovhzKy1sgg7AuvMs8QFKpRDi3hQPLYRlESW8vGgJ4gmHuyY1jB1co/1wEhWI47V5PbYyHZUu
XWR01MJjZJRM9RPjEQLHOyOhv4Y4WJaFq9B4IZJFczek0YibAszWSIvIOl8ppHKCRj+PD2jMTsng
E3MLssyKlq4OPE8B8lbFazGvNJnjrRCRRZpIIpgYbKZxV8Ljw8EcInNPlOrYbseyY2QrhJWrj5DL
/iyPQhK9HI4PnU5LbGh6ityrKy7OiqbsuXhYuIdWVVo98AVpkbpLKgp45i5BzHclQMLIXkinj1yQ
tj38gqeNM9+OwX0hM8R2NyuImxqOSS2EhqGX65KK6DgFJGdcUdXTT8q+WG0ePMJMSPYy1R1PzKK+
MOxIpSiFhXrhISfH7e8q5ISY1bNA6CxlVY3NV7WO7X7LI/AS/kO2wL8Y5N+jp/2Rc/jof9BcD2xj
3f4x+bct2X6ntf7feXbq/l9r+bTb2Pfez7GvU1dHL7Wvtaaa7XA7KrNCQ+nbhzXBrYclKMh8Dq1w
kTaskWNkccUus8Gk00UzopZpYXva7HePRZmyAe7riHvsOkJAh0hsRXvle11MxsLVHbKyR7XRJI1d
JHKnct6Et00Ql3WH1Rko72NnjGsBZAyHwPmimZxWRSuWN00D2I7RdOpE2uA7m7v8gKtcdsMUbcWa
0kVhV0NnEkZYNVFT0lXTCvlekZMxa1chhroQI7GYwasAgGNKtbq8LjIxq2xUMThY1AynrbsGECw6
POGx2G5mkkjiWZsNxaWtc0qRSOR34heXKEqyTWVU7mSC00iidHVD1R3NrVNiDiJHjPnepRAshU4U
RCudXjBMkljfihEHPTEYfRyUFXMQS3WYV0SQREWEcEMA5RwkDzogp+DG0VlraJFEnNu3auAW9ycU
SurMWqiA4iKbh3A+HWUtrROsppaOQ1j4C5pVnZVFVYpbJHNJHk7uwMXMWTmV+XXmZxazwIr7O/S9
aaPK5grHcgxMhN5ZkSxFR8MZXmSqyTjWEI52b5FNHUY9U1A4huKCW9ULi1k6xx5tA+cLHaRpNUXL
zHHvJieejgSGydYIqwzXNlkZuUUd6dmkWUUljLYY0TllU6vx8PGIyLHowGywxZ7QKGwQiqECPpYa
2wigZDGXDrBestLq9tCsjxBuGWliStLAXLWtlu5WlRx1tKBXw2KdPFR8RgKCbkAuoXEbPIQfMSTa
wzm02PU7JxCYYJq92LWpl3SWoD+VcsdoJZl8zvT8wDLy8EUoLoeYjnqreyyK+yCzpxLwEYu1Zj47
ni3z6iQmOeGhoKUV3Luph+UeyCOROMTzDidYeBTl1drdMbU4yBijxJn1Uw1tW1TzZa2SyV1TzbDA
5rAuVslUVWRTLIjSoJ42MY36uVe42v8A63LNsT9zVF+axfqrCNJHDO0qvJikljfNGx4VgMYiuhjm
HfKnpHXE2aLi+D4jN7eQkSRnNsOWV5ymK0rn3kMSOdSdY2wyRzQo2B0fCZE6Jqw8LhMRu0WQMI5R
OM0gytaFFOKXMiuVz3Rq+NsSv4k75XsT015BbnskmMme82zbWyrDj81HCPz9KLIcZFCep910POwi
d1vwJnvkhO4b4ZYuDGJ0nZrO4WuitoJhSEfZPaMZ2s41bPanTUo0sb99w/BqJAUaLLwZxU9KJFhl
RWbVOGcyf0bTehvlZ3PG5yR2NWVdaCNn+tFH3JZ66Bk6LF6bHNNFut9LXYe2ZeZFygGRHZUFjnGq
UpB721CsBLCVdKTp10cy2xh3BJt5YhiSuIHGPBGyFMT5ac+dcOx83G6tSJB1UgI/ofmZDuCBEryk
ZSBsZJBwIlV5DJ4ZXrErK0Ya9yUcauq8XqJhRyKZzLYXEDyDcfWwlnpJjhkGKIJ3x6gkAIofitOg
J312r92exclXmdzm4+8+JUW1t+m2Fiv3g+utgTIC+Vij4ZKvjhchDmRvSU67Kt7pHHiYuKtdEtTE
DBHiWRJktU6BOiOkWufYPLiIWewljkGNngdGrUG5cmzhtLmrsiMmrcpjNCfVrKMfXY63GFGgiPrL
AeQOen5iAqEqCdWyFzvHkgcvVkVfFkmTD0GTpfIbjrH0U1WPNlMZDLMoIkuhmyIaSQgucyKBLlQR
yplawRA9+Da9QqSw4d/iIuGGMZLDG2KrEmtyI5RU5RHRnPW8nQh8nFHlbAIx4zuHPxCHSZLlE13L
dh5DBlD5KBtzX2gVVHRskBghx+LH2Dy07JK4kKeiIDngJJc6DjvbMwS5GzHK666jqxKe1sw24o6T
IwgSZyw+mATcWMqI5xpizuGTS11PMjDSIlesfBbDT3I2R3+N2dKLahDlUbMelWYW5dWvMhJiyKgv
x17eqFWJ8EUErPTPTFR+iUfQdre4sdj7LSEO3pyK8uwIgvJYyrqK09EtZkAVo60sIB7Mss4OY9bC
FCYy43ST8WLKpSrAu1ZSRUz1IcGgs741VFuZBRgh42XUsLpBJCRuAOgcjxohIo10ShWhyDI6SSlp
q7Hp5Q3UJDsgqKmZ04Al5Ha0FiOrhnzG8MuphqTWssC2ISjVhSG0fTZflVRX2hNqf0IM3FS62vs7
l8hBthXPt8XsrSKRbGaa0jDnsiKphk0idHqG7lNnVYRBJaTHn2ZRZcVYPMSbYkOJJmcLS11RUj7z
3d4BWCRvVFnlZIVKQRN9lEfgJfyHbYF+Mcm/R0/7Iufx0P8AoLge2Me7/Gfzdlu38e0w0czHTjqj
SIU7+FXRxTN1Z3yo6OaNeImrOtE6nLpt2q932fY09n2Uci6aomi932u7tJYCm506FBJZOWQ/GG0X
HQV7WydUXTbYmF7s+jyNO03ZPSN6N3dc7RPZ69VYqqnc4jk10060fIvV3ZEftTY/RVNdZ21sFa2U
TLy7noAOTpnAxEMjMgpL8t9irrCCaER9XCNKNAbO+xicO2EoSjKuKcPIDR3GDUBlpXw3M8PCknkl
jr+YQieEdkBCzywRSs4Y00yP0i7YqOlyGht1BibOUyttq8/lYJ4mkQykcnO9g0T4n6xPmVkU8b2K
0jv0S1tLC5xoakrlDk6XZkIsosYZwIJo5FoRNEGLXc0h8LgE45MZQMghfMIpbIW0rpMpxyNuSK1M
dV95WNS+V74o2JSq4lOlFfJPAxqA8fefNE1OuRuthVVl5T2NnUO3LWuBswiz6x6uczcsA4JpCAnb
7HM3SY413mub3UXa2BZk2PuNoYJir0NtzXOKpRR+ucm2HQni10ECKizTGMhjj+3cm1oaFkuPmB0b
pW3ZYtzXEDU7oGufO20niJdFXuhYx7pULdEsbWOc/RGrtkbKt4ZVfR2IIItsBYw2IdvEbRVd1zY8
o7OC2Ni2SiaRzlNeo6y8Vu/wo7vHkBkHirUk6Os3TsfDdLXywiX6QQoxroOhbAkUGZXSS8aWRyok
XD0cdyWVY2X0YAy1suVvKyfo+skhQmOxO4RTuUAeOqTsMn4Y7oVSVJFYuuxllSn1OSurr6goLEar
uQ5nAF3d9XUisNeLzqikCc8pKiTxskm4Cw6w7/FZNa5FeYvShRWp1Vzr8jEWsScUwkaMWawOiq4o
bXQd6HVe694JkZIaTlcus75K4nKccgsYq99tJXzXlZEayriGcbJZPFeU2doDA2OKeY5iDtGa6dZE
iRXbUdpQnU89Zc1xxqsmuhOnBJwuj3TBuqQ2nDyOCYezpp3SsT6mWQGN0JCHI+Ei0rsrxo+tDJhD
LsQr2rKBFMJkiiHFILgKfBASRLPBHDBJI2WWSaJjGudIxFbkK5jiyUDyeSZeLkFSlO4zr+tG2fN8
kpPau9ISbi9qva9S7Mlie2SORrXxyMcj2PY9N5r2Obq1zXNVFa5FVFRdU2yr3G1/9blm2J+5qi/N
Yv1Z0seAoUrOXIYUxsg0jCl5bgzxPRzJYpllSN8b2uY9HaOTbVF3kXRyOTra5r17XRfZ0aia/wAu
vWuqQmFQpKj2LwXSRN0du78eqyyRMR6drKzfdqmrXonU1zdFJii9niSFgkNYiN033pAdJLu6d1W9
tqu87q3l2eRXcE2SSKZwjHlbgxE2km7DIZEwtkUXEXdkcwcp8MTHK0ad0TY9gJafCqcxxGG1GYlj
pms8ZKQ3B12IPXUquxRQrOycNSKu6ZYUY8Zs8gjzox2MtJ60PGaOsPrS8XxvKSbC4vi6owYTITLI
TlI6wTHLrmihOi1dOpRVUM6Z6jsmdKGS6PnRK2S6sZyh6+tp4SGjEWRT3PdJGwmRsu40UOIo+Zdy
VeAJN2uq67VeR47T0d/SWPQG4QdlJlERv5LYAVlU8cYbFL2GQOSSxGkmnkMDkT0xjBZNdH0s1xUD
PsDZZH3AtTYvMHpakJiSXN82wMrKqYsOognFnIjkqRZZOaVkXtOpg4YGlk29hyzY1l4MQ4UI8xtl
YzP1kRYBxodIk3F+uCQ4HK1SGrtfUENe5rq1hCVBxBf1vfy1j4wrtjWwDEEBMqLYkauKWSIx8jZe
ajjXccjr+rtsZx6pHxsqMKwNAyw65e8wunr7cZogxOH0EM0DRbCNhc05g80Du0ZDMjnSNze+SmkY
uJ1dhdhCTGNRb+ihgsSKe1iKaK7lBrp1XYRw6RHpC2Hi70mu442I/EaZl4I/CyGBD5eYRVk02bXL
sfBOjtnYdAUw0K1jkYbWzUrGcs3mRj51ckOyWGQ3NTRArKyDnbixErA+PIjlZChJssEKyvRj1ZHv
b7ka5Ub1LsDSTZHQw3VnCwitqJbevjtLAeVJFjnBAcQhRcMiQyqyWCKRjkikVqruO0KAdlmNIeEM
eYYCt7VoYKJVvnisySBlK40A9fKKTGdNKxsYkg87CHRuikRtHdB5FTjw5BuR1wptvUxHONc8OJ9W
6CI6dq2kE9iAMQFBLNLEQYLCvbkQo/Lzqi3pMhscMqbWytKWtuwZTR5KwYqZQ7BozjJ6x8swsgyu
IFV0UiP9Ke6NWbZTNdzV+OVuLn1AM9paWwwwMnS9DS3MUkpBbBIA9JbhgDGPmk48kbZGua6dIGCN
flGOsceA21BR13WtU2rcMUY2yERSfrgBwgJpTTId8dRgyp0k4Q8rmMsqK2rbqukdIyM+pOFsQpHx
O3JWMKDlmgc6N6KyRqPVWOTddov2UR+Al/IdtgX4xyb9HT/si5/HQ/6C4HtjHu/xn83Zbsq+11r/
ACex/HsVJHG4GOOygK6URzebIhbUAwqGInbJLA+WN/GQxJoUcxXJGsrIlZ2yKmvtb3a69xF3Ud1/
wnd6i/xbGOjFGQgh0kM07YGNke2UcpGRkFsFmdEIQW+GEhycBY2ScRJt6NsUnDFPKNHnr1nsldDE
xqTv48zIHpA0wdBoiZiXjq2WvnIc2VsxxzoWRWiVVfR4ldQzRTvbNkVlY1ZGPnqxsdZdU0lfS2kz
zx5HzzDyDF48bARHGodqx+/LBLay8LJBSTcdspbIzOMyx0uK0pKGrqJjZsTq687FsjLc6qjtYzLB
6TyzzygyMQcCBW4TRBm1gR9LTLiWSkQKUkNhi9nGL6IY65XDI/pBxII5QEs0MTB98lInRcy7esLu
p6ElmHzanyqlpTyDAqwkcDCw8TnrrEoasPdXPEe4uypSBq09o8sAacro98sI+Sk11Wb0hjlXS3dD
H2Sc6xcMCarsrA5JBTsdpmR5WCQ20mY8K+o65IpBY5IXI00qJt6pPI12LkSzz1NGJfGZF+2BtmYc
fbcWyx2nMpOd47Xy0UNleVUM8snRygMifz2UF2J9YRJZYz2RcerziMnyYxkseWOGbRN9DU1c2gxQ
apDEHBsUo2nk2iwssCpySlkR9gTVdARt9DnY6BAryuYjAJssDyWwvmiWLBwnpDUkwTDADFQxlzh+
mSpWyMHjgIzq1sR8dHs8puIbkICqMOIrxpocbqapIjjp6mvnnfIbXvkINirmumik4/KxyuUduH2S
ZtaW51GUXNb11lDjotMTFkMRDsp5GWoxQK8kfLZTttQIrSzJiknEHQtySI0mGG5MDx6tqKPsLZkP
VLVTkT2VvJklLCUTPajS1AMFU2FwT5Z4BbG36VPnQ+WUN0HBkcUSPi1LKoXY3rKsGnLMnCfUYdlI
+STFmTPoq6QUmcXfFrKWEcwStcxWdLTsMfKODfVTMdt7IK+7I5CVVraWNXXrWZxkHTQ5sFoPQ3M4
l0BGMMHNF0ROPPAZYQsOY1rJJ6zIjygZamrvILYJPRRkn1iD6GCqianHxGOvHxmYplqcYc3KC55b
ckQhwXDDgZDDHRY7Zl0oDafsf5tgTja4w+ydOy/Gx4WstkGIqqpGLu1ZUljWqQ5IN6CEewNSWSWA
+a8DxGsNJhwOqbW1Zx9pWE1WKZYPkR0xxheP1UrpCYOZDrahKyUYPRyS2c7D38llFnQR1PSlnlQ2
Q48cuSWOPTUEzcLrsaJsZGwYrkgFoVLOKQ2Wosq8uqOCmZKVJzEbIYx4ypmklMghYSQ2NIWzztja
k0zYUVyRNlk3npGiqjEXd1XTbKvcbX/1uWbYn7mqL81i/VRsQ6lu5+qkUZqRq6aKCzEnnRON6Sm7
DFI9eKrWqjVZxIVckzCx5CnwzTykuj5VzJEq1IjThxAOPhnSdYNWzNcdHLC+ZyuUaKBeQgvTgqwy
6FtJhjIix7SoCIFVQoB5at8JE1WiwjtDH4UiTayRrA+bjkoVO6eismzAcBad0g8NssVukNmFMhb2
yxX4kBnLtfI/SCFa9Ho1sxjZOC19RYDiitKsaqawgCkJkiGeSapRjRpCYxzCGR78zI5iI4jJWxrx
WxzStWJ1S4YbDZi2YDQYcaWXfXUvRxlBYXs7bEQCDFopchF4NmMTPUuuKDiERT1kRkESJZTUJweN
4Zl9fSYrjOOin5YdyV3VmUlncGF3VdFFiF6PxzIbEaZ7xj6viTwbvCiijjdJRGQ5GZjtZQjWBLZK
dKMqynvT0jGhfJHkWPXlawUerkOY10cMBSvsur0tibJiHSsNk6syioOq7OwnRs0lDU5hX5DFGfyl
aMNEaGLCTWsGAggChYICjGMbJKjj7EjKbKkrPQ8mOAA0cGPEuIFOdITfutPRFit2yNTZ4QYYuj+B
G6EKLiIrvSnMnuFFPtcfxgbGKEp8yyRWUjIIZyrqeVkLSY33Kx0Qdkit9KJqTZB9BpBpCMRsPRpb
W5tOYTLcVljDjcFMXDkEcy5VyclVi9fcTq6xIZZhx2lgQyacGJxLHvZBJH2S56swEU7LyRZaEt8j
9K7h4rS0HMEbwJEPHHIDInDjWCeAhEHYUyRjpUU4Gny8+3FsOx7fYEouUdCCQhizV6x49MM/FsVr
HzpXmb0MqnoRPCEcbLA+Sb0iZavEhhp7ky4w+wtT8oyjJDZiIMYtq61SBLmygyi1dA3o9w1dW6Q1
4anElRMhe6aMnHcox6CmsjqUS6rJKi+sjKgJ4930dI+wEswqa/mGshJKuIZrVqpGFAnGxqQMqN4t
/C2PHHUeW5DjGTWdkQaet7SkUA1FC+urK9KZwlq1zsehfW2pFvUPrX2E8y1ZShtiMpZUdUMmA7Km
XZyZNEsySzVmQw5WNBEx/JNdJZIPc1sBccqsg4IskTC5mQwJLgHTHQjW4RjOTYzxq4802YttkmOR
V1oOhVNX8nPJBVHc8LxJuT4sMcBtgyWZ0TcbM9Cwrcf7HuT4NjtkCZYykXj72vGr4bC7hlpRvQ+O
jQYCzq4EjJFIOIWZpjUBa0440ckKSduZUGTggsyLJMZ50avwMTDjRCMix2BtxRlJLzZwRVfFYskj
ihGLh4RhLILp5FLSugs8AExZtE/MMlsN4xl3k9qfERmRlMmQoGf0yJIts0SSyiKbMrRPrUaWVsGU
mxGWXNmPj4JnSaB17pl5AB1stNj0ts8YdGo48mnELl13SnGzxyWBX2SR+Al/IdtgX4xyb9HT/si5
/HQ/6C4FtjH+UDF/zflm3+3tJt8mqKncXRFTrROpNUTqX2dutEXXVOvr6nd1Ov7VfZb3PubO3Mfp
Gb7VY/dqgUV7HJuua9eBq9HNVUdva7yL167PfHBDG+REbI6ONjHSNSWadGvc1EVzeMQRLuu1TiET
v7ssiuXVO73fu/f9tPY07m72ve9Wy9Xd17mqd91rp7Sr7Kp19SfwU0X7qImmq6dWv2ve+zprpqqI
iL1Nbp1f7f7f6tE9hP8AH5V7ja/+tyzbE/c1RfmsX6ssbJXwPlYsLZ42RSPhdN6U2Vsc7JIX8Nz0
fuzRyRqiLvMcnVtr1om71oq6r1fy6qiqrV1160TZriihxUXqa4ieOFXe320rm+wiqunbLp7OmmzX
TE0RMqaMar5gJ5URzeDub2/KrWPR7oH/AGrmyOj7Zr9X8OGNkTd9z91jN1m86RZZnbrW7qLJI5z1
cvW98j5OtdVWkSvN570Q1fS9YsQNj6bWdW4cWjhX9GjvaugslosCGztkig1fC9EVd5NVRrdVVN3e
01Tq010dvd7vJ7G4ib6qs9Ckzltha0O5JEc1/EaDYkHiCzq/RIVSUmrOh3d/qWHqRsax7dTk/gp1
9S993U3lar1eq72jmK/RVc5dxNNH6Kru17b21TTdarnOTttOtnbo/rR6Kiu2sbWxnUWuqxCrA8rc
e7lxAoJSSpVhZxSHcGCFZd2OJ7pGvTSJ+rtop2arFJE2WNUY9naydsxNx7GSJusVvfMjd3dWds5E
/wD06onV3F/6TfY6+rq9pNP3jI/AS/kO2wL8Y5N+jp/2Rc/jof8AQXAtsX/yg4v+b8s2X/b2vsfK
vcbX/wBblm2J+5qi/NYv1ZVlmePBzdVzE8croHwjdKhczKkzHsWLcg4jt/e0TTrR6dopD5YUmnhc
S0BxivFmMiiZ9aTHxRQTSAyEu3OJEyCSZsX1zILATItbDOwnBMwyRr0e4MrGQQLYCAZO1Y2RCrSn
MiJVY4SHOYxOBMQUMMdHywVlJ19iDsoK1FdpxsQo0iRnpjN93DyGHqSDcYrY428JmqhwiMGrAacB
54RYJLoZdQbJqOOGG5gno8Y1EJl4hEIvAgnXmZOPIkvWrJUehNUNWWMuS5DgjC8duyQnOsq7IK3H
uXHxLIWlMhjCbUkcObGJy4QKol5RlVbIPeLJYZA7KulsrvmU59c4/H7eg7IWPlFjXYfRBIoknZHy
e8ltDWW8tPYI6rsJawTo54NZFHPcTSTn81J2RC7aXscUrKw/Fm5JLAVnzrzL7GNk51SySCEQMs+J
8AV9P6DYQpmx2QzWCi8I9pT84bk3TGHrij6aTJPQX6HYwaGXIelHDpFhMu8ezLozIsk4+QyQuFbS
s5iaja/Pyq2PMguLiXZLESqjDz9wwd2FyQ+LmVdpaWx9PYF2qRS2lND2P6WpeDAdMHIRbTDslW4p
nN7JdhGT2OCIsVjqScpuWWGVHtvPRFBlChvKjILmZLURwh5W+WihBWaCiiGngmjbJG+LJrKEitik
UomPOKSlxmGCuqYoauIExHYFfzkytmIdYV0kV0E6UgR45I6zSjfxa+13y9XUvs9X7yEfgJfyHbYF
+Mcm/R0/7Iufx0P+guBbYx/lAxf835Zsv+3sJ9j5V7ja/wDrcs2xP3NUX5rF+rIsMMU87Wq8eKZ3
DjcQxN+BHSo16xemo30xGqre6ibNRqNRNzRqI7TtU004aJ3Y03tGr1biaIxqI9dmPlcu/PMgwsKP
jSYouVsj4hh+O9kSzP3Huaj13Eaxyu7RvVAFFHZhSEhUR4rrAceCIsfJGlup3w8MwmRriWhT6iyJ
CSK9iMKY18jdV07q+3/C6kTf+6vUiaex/NvJ1dbfaXRm+q/avVNOGq7nbObr18PX0t1cQewidamd
pYcSWFhCHzTNFilNBHJiBtJRXoycXpKExAC2NKC4BKcVOrte71IqonX3epF0T/sXVU63LroiaJ7S
dSbdxPZT7yO75E9pF0TVE01Xr7uyaaJ1oia977TW6K5qdbtGsT2HuTROvb2P+3Rd3Tq9je3Xa/eT
q9pXb3U1uq9smmujXSarI1qI2JqpInpvXq9NE3NlT2urudxepev+J3sIvt73sfvGR+Al/IdtgX4x
yb9HT/si6/HQ/wCguBbYv/lBxb835Z9kZT7j63+uyzbE/czQ/moT6uormRzSE147JJfBs5o8cWV3
auY/qinfvaPY/d7aFyParkLIfBNEoEhERscMU5npw7Ekl5JYI5HnNVjkWNg8CkpM1QpxIbJs4A+P
9GxzPsJM1qWQw8MgQjhhEEofNDxI4ZeEozJIuNHvDzwE70MxEErJX4oRTBvBBteyHQ22QSyzyy7j
UlngEb6ZJIzgJMc6V0nU9VjdxHK3REVurutq9bep+vX1NfvN1f1brVXuaLvqu9tj/Y7hJmaVmtNU
G0Jg73snHorwGQnNpITYV9LLp5Q7qYAlr2pzV5jUPVvv2pGV1VSOIi7GHYnhFt5ItZUlyPJLXGh1
uTYZI5Z8dpZpOlIQ2Oge79uUaWM8jjx4zjVdFU5Dk93Bf2UplfQCDBqFTLWsQYSgv+ydQP4yrawS
EmNy058EQ08raaWGdZa2ldWDMGyq6JGGGpH1omQPkKSvLtLEFu/luG1icoGEUQ8+XI4x+EJOweMw
mUePaW5q4MXGjquxVR9kayGLr7ezccWYuRqbSAEV9uPEHFPFSfWZz0tJA5UlaolzG504p40BVELS
1Gd9jGkkryI5lyM0067wy+Q6CxjtBQRY1isox2VT6khToICyks2QSIIlBjuOk0VaTa1N9cPtL8Ey
0BbBSLTRNEgAAtaOR807rZs8pnSCRV4okrnBE8w10HZCtJrAAekM7A0Vx0FENYlJHMaLmcaTV9u6
2HCe5Sxnz9KMotD6tQBY4BJBXkz3YtiFQWViDQ4GfQ9FwTijiNzK9JxlArN1xeCwWXRBAcRPP9IY
qJcNXhTsx5FUmLEaG4raiiMtW5SdayWFYx05FXj5eNcs+urqTOchCq5zoLooJ3M5Hc8CceOzWFY/
2qlyMClmxQUHGcDEzcl98NZklG/X2QQFVsXJWYLBIJoqqDdtlYYtbO7R9XaoaxArk4SOgFpMcvcS
oDqGxDsH5JaT5MLj5Tpw7SK0HErJIlyOEcCuloLR9kRXEM5wTnG8kHj+LCYZROsbnsuOnIJpLAgW
NcQywMAcro6uuapSjrjn5ZLid5sHEMndZM8C6vMyjJy5aEmik7BNPlkuG2NRY2FW8wkXLHzDPdJk
DA5Yp7AKRthO6pbLZU3I1jmjTBLYEXBA8WMMxvG8nwPHiAVr7Nbc4bLhMT48gpzLeICtkqiMhdKO
19bYRnjsaI9te8dTC6BVlxXoLIM/yHDI6po9guRAQ44NkaTmSn9K8mUSWXRxTyitphW1IpcQ75rK
SRpTOyFQ15OPAV1R2NTri26YiLmsLWO8gv66IerlgsAoKpBOjH6mki3TTTCxwWiB7ikymY9jVAJL
TY/0NUHnFDVk6RkWWOBWkdsUTJnlLbDBiPsR/wBrQ8OuOlIQiGD3YpBLkq4zm1FGUHXEYIFfA24M
x6BZna5nT1p1bAvMxjsKxWPjFpJukPbYE0xkMyRjyRk5vmipTOoMUTMR4cYYAb6IZi8TkLH4x+QL
b8kGyxeC8toLcZlkHryxJefnXXfW0sKIKtjQwYqa+XHBbiAbHJKossg6HEcX7KmQWNu0cyESLmQM
iQ2YY9Jx8blQSVzxCo5oyIyRoCGERRviinZNE2Rs0cUjpJI45Ecj2Rve97GqjXOcqa/YxH4CX8h2
2BfjHJv0dP8Asi5/HQ/6C4Fti3+UDFv7Bln2RlHuQrf67LNsS9zND+ahPqyxloQo3pc0nKtJfOii
yISzhIFHIUjlfEiOdEnE3e0j9Mc3ZkUcLIoomsSOJjGtijbo1UbExGt3ERya94x3ETe073apsxTa
6Cxo1LdDDa68hO09kMcnHVO2bInLM4crUfIzr00Ry7zq+3nw+or1Zw5C6+4MtzWMciIkrB5qqkjD
kVUfwZX2BbYpODw01V+82Rjo5o3dbHsVr2L91rmqrV7qpqn3l69dhGi1wIzQBnBgtHFghaEI9YVc
KI2NjUGHc4Ydyww7kauhiVW6sbpIM2kqWjzVrKWaBK4ThTU8fM7lVNHwd2WtbzhmgL0cMnNk+len
y70FBLh2LyUQpDjBqR9DVupxzHpIjjIatRVBiLVJp05lkCTohBKI/wCuJt8eqtKKosqsRYnCVthX
CGgjLA1Yx+XEJikHh5eNyxjpHG1II9GRbjUREkGSip2jzVsdLNA2tDbDLTw8bhVMkSQox9bFzE6x
guRRmLNKrYkWR2sVmbjNAbYwDwBwHlU9eQZAGLNzIwkJUw75ohRyE48A8b2wxT+msYj+22YLf0VR
eCxTsKjGuK0OzgjJYxY2kMiNhmY2dsarGkqN3+Gqs3t1dNmFn4/SGlRgkVcZJlUASRHWmQqOXXMm
mgfI0EqBzoCRGuQeeFVjkjcxVTYpCqmsJQ+vZUnJOALMhlVHx1jrCkkidzFexSidwKXfGbzE+kfp
0m9A2jxyhpmi83yzaqor65B+kOW5/gIIPCkXO8kHzfD3eZ5Qbjb/AAIt2XKboGputKikr68K0pwz
uizaWxurBlsGUXxuCVJ0vwmcEeGWDlt9CH8XciFyEmhpSL8GPghXk9WDLcBw6SpwhbKSBxo8ehE6
bkUzW6TS9Xpj9WEj1VdARG6xfGRCCNFMx9uQwu2eyVkSPa60KiiJsXI5FNIjZMTxJGNcgvExjHpO
SrZ6YLfpa13KU5UToCqkXeGXgVpML3wzgxbos0T3RyROa5U2IY6prHMMJCMLa4AVWlF1qCpXFEIs
WkxICAhIFPJvSCoGLwHM5eLcgzE2XF2NCNJsR4qPDWVF9YGPrp6gF+T5NLd2ct7HWVxhjB4oa6qR
SZICNWsGaO4Yi9x2iupw4yIRJ7apAsZhYjGcMuIaQweZ8EZUfaEMiVrZ2drIjk6tgrszGqAu6rWw
srrcmnrp7OvYO5zx2BHyjuKFbA973wtglYkTnuczRXLsQP0RV8uZYNti4OQF4JVq2eEptmRHwtye
waUMOS0yRHEJPBDMknEiY5J8ibQUjcgKg5Ym9bVApcEDcOOHl57NIOdlg4UMMXCkmczhxRs3d1jU
R4KYBhKBSExmyB+hWi5V5kUcsURbx+Q4TiY4p5oo51bxWRzSsa5GyORdE6kTqRE7iJ9jEfgJfyHb
YF+Mcm/R0/7Iufx0P+guB7Yr/lAxb+wZZ9kZR7kK3+uyzbEvczQ/moT6vNNgcTpMFAkEe7xXyGHj
CM3FkcyNNx06Sbjnx8dzGtWaBrVcrJhXNfF3i7iP3o5Y95kg8sLo4pB5YZdGSRTpFJE5ksc7IHxu
btTF1dqbWyJBO2WME0oXmGObAuqyDyx8aNnEc9nsIknW1j95raqe0R0tnBCUOYU8o5pEkkE0rWTS
SsIasj+CsWjn7ztWNfrvojtonMcquSey7ZeveVLIxn8SNVE6vtWojU6k02SSzLGKzkiCogqiZRoW
DWRGWxRy0FryoMUEXRwbpTmGNhha6QfHrOVNXQTu2xie2r73J7ZcJp8ry2wpxaKKKoAOimRtodCR
Y0rZlNkAs5YK7Hg7E3hV5G5XtdKBGSSAlRkJAgNxQUthfjC1vQYheTDVBFK7fJtR7MoU110GOsgF
WW8SZHqYg40oZJFJjwlXe3FXYE5/FZXRzMXFJBKxjJhKhWjtht65qUlY6eVu/PVkWhtaVQyQTWVl
0srSbaemyMaq9D1rlNLZTi1XL5TTU8DSiJ6OEW6LOheSLNAaGPfi0pMoUzJeDpAa+AWigxzIojJa
0e3NUiTF4201bYEnQVhllAmRvsHJYNr5ZRm1oVg8ZkjGWcYxbJxoP+3ua9Xd/wBkTXu9zT95SPwE
v5DtsC/GOTfo6f8AZF3+OYP0FwPbFf8AKBi39gyz7Iyj3IVv9dlm2Je5mh/NQn1eCLNHBOhAJEcs
0TpomuDPGLbvRNlgV/bQppHxo+N1xq9nVIwoV8TS2mOn6QUlI5+kFnbwiOa9LZFK2SJEHdBwmwRx
MaMyJI42ptGbc1ql8vziijBx28ekx7uMfI9lHYAcR5cqcWaaeKaVZXSS7+/I/WMBMTtKwRZUZDMy
XNiRfTFckkhLJ7Sv4KJ2iq5eMxP/ACzutjGBrLxla6eRXqzl0e4sqctUSJXPWPt51YiK/VdEa9ds
Wnh5uUjEKKSir55J42ceF8SDxFmxDMjhmKCglPSvkWNrAYbqzSBkfNy7V4AF3ktUINjYOIWkAZNW
1choAOOgYFtNLVEvEdHGbYQJYY2+kt0jsX6HMfCI4e6YspsMd/e47kRbYXDRRQFYu2haBEIzlPSw
/wDB4B00UyyzKrp3wTxelNhrrIQ+4DKAtMtsXta6pliLhzW3hucgqi+PUEo2vnLHGcM4FQbeKGJj
FsdZJ1ebVT3WSHVkuNW2KVAZs9duY7TXcUQ5QlU6KtGKKlaMIFBEXks9yZBEMyEYmOIo6IjH7Ymz
sHQY26OarpOXoErojYopBmmMPWhfkg0zmTMZIwO6HDnjHhZKI5vE39f4S73X1Lovc1TcZpup2qap
rutTeVV1/eUj8BL+Q7bAvxjk36On/ZF7+OYP0GwPbFf8oGL/ANgyz7Iyj3IVv9dlm2Je5mh/NQn1
ZukuCoMrEGJaUxsoskRb0FWGZjtWuZOs6ROSVro1a9Wqmjn7bzetFXXeRdWu169Wu+2TRdP4tPY2
a+yLjr2EuHEhOJaa4eMywZYcr6grrORNyOtNnkdPCPBrGPAhCvI3UlEyuyCjGuJylxJKW2yGRSRY
CRY2j3TLCXhNnew4JVlrk4Tl5tsQ8aQptWkzycSaUASad+jWRvfKKyaSVN1sW5Er3ORN+FrtNNIm
dsrhsq6DeIathjQRdDLZtdIHDk9rVD15zTYQ3oWK4C3GOiUcZWzTo+rk4KxTkQXr7DIqNC8Yqp7a
2pYrarW9jgj5dY4kq5Th5WEGSkhhVzZ1hiLOsA42uaso7SGWol9TkAO5NEKisgZB2uOkjiCjdJHO
6ON5MskcUDVeq8WThIu/vJs8m6yKjpx2F9HPntbaur4efQfm+Q4xpUEDTnCfXLBnycVIFSd0fCaq
7WZS2NSXaC4/ZX9fQdLixWdvCDXn2kLRRkWcqeAweuMfGRCHNw4ByZUZM6F+5LAIaJOaJGCtiBCV
FMVXLYDMMFYbE300ZZhVWeBk8ET541SSLdY5NLM2uybHTg6VXLdki3dZNFUtjbIqrZzRkviCdpC/
e56URYmxvV/g3MXJTTrrH66goreurBckIvgY6i1Szoqy6gmiMnWANi62LhYmxFltLQbmo5GJNy8I
vP5RjoPPMAkB5y7rRucjtOP0ZILxiWcwyx5UnkHRb6F8vPy6ycKTdy2qivayInCpVZfKRZ1bIxoY
gxSizl3TXyQgV8hK19gUZGK0WyFLEk0WHedWFQ5Xjco13K+CmIjvKx8FvNGXDXyRVkrSljPlYeQO
E+MV0rmlzwjKiTSMYpMtBeU95GHOopclPZhWbBSkTeUYl4U0zYJ0aqKsMitkRF13f3gI/AS/kO2w
L8Y5N+jp/wBkXv44h/QbBNsW93+Mfm/I/lX+Vfb+yMo9yFb/AF2WbYl7maH81CfV0iHUtzS6yXlU
3frhIbMWZYu39L3VZG/ffN6VGzefIsbN+aIqBxjoZSpDJYuVRkrKnmGqkcVe0yGXi8tIiTNYWyWN
5Ms/pDRuELEsF/ZntCFMHJknH1HKHlhKs1ChbOLQWkLY41toR4eINx3QjQEzSSzOUhzhrx1jM8WG
eQYMog6xkeLJDQIpkhgVZVxsjg4I8LBpIWzo6cmaVu65itiSBsaQ8JOWa3tGbqtThcNiJ6WxrFRG
q1EWJvat3U2wKvCOrYrigjxGsyaRyTuDu6PH76svJIopWQrPHZhGASTUsr9IYeftht8NpyGi5iEr
Aihb1M7lqb+fOMzRAZsyHs3owrsfSxEYjxIZbaUQi2AOZKRwulFAYZJJCgi20tVWCn48yuyUCvPM
suJb08NsPjZgBk9XWcwwbpmW3IkLEgljOqaqFjZIUmIXH8kFjxu5yYWLKunwrE+0r66cnKDq20nN
q7UWivDuLTPph6cIQmmc4ypk9KNAkF5cm/rhSKiSSw7Eg2AATK0kWMa4hXKJCfS4RyeToeYuwmjM
GcWWNGC+N8cz4t+QigfOCUIO5ZKq5a+WW0sJSlWc6W9HaMNBORAau446EuR1sO5in8oXFM8i3NtS
KYy6LCwzRTsoyfIRLi1xPJCL8iY5LasjixqqvXyrDFUY5Xy1+PLIQ8AWwY9rGZCU1cfBlyPMhb6z
paPKclxqIqshxQSnUZ2WU1HDejFx3AkFrI8EMbpiGHlTJxIiih1IwsEPEzjmdhLFsQtLGzKsGxVw
ptrl4hJlUjqeyIto2rCyV1QdJVNsHQiqRaQuh1dnFSKTW8hfHYhfVJ0txchWLrHFBcYH6Js21YEB
AAlh6HN70Q1Ny+yCeWko9WsorXSUdsXV1YSVweaxGhvzXKc4JLMyRuMRDFpkGUVAtmu+NSlDGMe1
EEidAgvNJPO2IsG7cIOBFKNBjlKHeF5PHSVQwcUPKpkFlj+O2psbpkesMNkPYEhxtRiWpEL4hgvs
Zfvff/mTrX+LZPY6u4vdT+Tq/wAQR+Al/IdtgX4xyb9HT/si7/HQv6EYRti/u/xj835F9kZR7kK3
+uyzbEvczQ/moT6r445njvkjkjYRHwnSQvfG9rZI4545IZHRKvG3Z2SRKsTd6KRN5NtO72yff3m6
dar7KordOrqRERqaImm0TCa2vL5mF8r0mqY7OeaQUuugEhZDzAyv35S2ozVzt1WN03dpZh8fpIJG
DiP4kFAPWmM5icwacYmNeYf6VMCrlRJ93uJu9okj44o2pHG3ca1GppG1G9q2NG9SNRUTRnX1O3EV
FRUY5KuE6WSZbCSsiKdU3EVHNYsV0fRoWTuC9DBFhHIyWGcYO5KL5saYNg3PI4WCvj6QglfZ2xNC
GoyuK37cWI2Q0GZwzZOTnFbWGsnjIdHyssD4ZuG+LcY1V/5GjevRXLuKrvZ3kZqnU3tPtnP3kRY+
1RVbortGIzuaOVvWr93r7TgKnU1WbuqJ1JVjmzbkt1Y9E1rN18jZT0CNsHDb0LZOEzl64zfWTtPS
1iVd3dbtp/Cbqu8i6qztEkV28re417d9Xa/aJuqsem0AToyOKTCRNG5gpDxIuWfBA9k1lFAoQpO+
TE2AeUhpRCoS8OKeIIlYV7Xd7ZerTT+PqVWrr32rfZXrRH7yfvIR+Al/IdtgX4xyb9HT/sP+P/s/
1ex9/wDY3n45g/QfBfl2xf3f4x+b8h+yMo9yFb/XZZtiXuZofzUJ9Uu0rqWzyI9vCgEqaoIs+eQg
hzmxTSwgQzlMDicm8XKkTvS03YUdO5sUl/YZZAe23IyKzmqhLwQijagHRdVyo0Qz67mQq5LFh8bJ
OWIl3FlKRpqyNV1LzbIon786o2ORSE3GZNjPLyORYod1ywLHMS1iS8rL6RCWVFvEkYccE0xzcrep
dhydpdhSU8JLpy5ZGMhlgx6OOkeTFHJHcw2xl2YW8EeIJA2TTRTzvTm3Osq+UgZEYk0tXYF1amQN
c9N1CVGeVCm9Ixm8ib66IjsW7HLcfuochp7DFB7IroWyHx8SHHLytszcoHyY0aSis22A9a44EIC4
ssgfNZxwWI8JcNy6srKaGDOR3DdmrIrC2ImNzLeZQHBZ84M+tvT57KBsdhX2AkJ9zQmMPlfZs5u2
DyKVDB6KsnsswCowrvsi1xNjHU9kTI7zdgv3twaWy9B2Q49mtkBJRtNhjuVfZVZD2hPs4CJChDos
tt7szIil3qGCo5+O+q6mYWXDsZJsjAcXJk5GCae6aW6WNOYOrSYya1OXJQ9TaCUkbP57gDsj3pds
p0F9Jhg2PsqMtHxScN+7NiscCgkU0XOUTZLGIqYlcnZ0jMkER9mfd5YRlVZCNdWmMz472Qq8Yyzq
bbi2YolpdZDb4lcC2YT7GsgrsGrwKsmY4Cwhr4ejxGihWVT0vFaXeJ9ku5jDPlLdXU12euLphNOY
IW5ABzK0ONYGjzjRxNN6eIiZI+wN41b6EJ+yUENJk4Hoznvqvss2eRDAOqStVArXW+O5ZPXtuejO
cb2PTwR4ouI5IJgI7EWbCONYZpliSVwoLknpuyzhNfUwwy3b5Ly0SykMobidw/KgkU+eGPyF3Ki2
cNmaUbAIV+8RH4CX8h22BfjHJv0dP+w1XuInfa9Se3rr/N/+37G6T/nmH9B8E2xb3f4x+bsi+yMo
9yFb/XZZtiXuZofzUJ9UydsXHWAMmVIdJ3JKrIZHpHuDCmkPWRWIzdGCNI7bSISZ6tik1VO2Ry9f
UvcXROvVdd1O1Rzu201Rd3VzdhobC2vgBhPTIoKUgIFeM1s/pvNpWz2a6pIm+K0zkXcAeTknTxJK
iDMuci4VM9wAPMy1c5PLE19dIVwLIjHR7IRxL9GkOp7WaF8kO+8xp3NCicOGHhggiP0HiTX0qJmq
tbvPajpZNFVXvf271c57t573rwHjTb8Uw0cicxUTOhlJJZBDxYILKWdiKS9v/B9q5iORNWouyov3
W+yiL7C/93d6vZ02REbr33Wiqu77Kqqo3tV3lZoiORyo5ztNItlVE0XXr7qds1V9tGrprqqLppIj
t9NWv62t3U0bpomnU1E0VN32t1UardNN1Wt000Tb+VOpVTTXq6tF6l9pU609ju7dqnsata1HInad
s7V6elsRUREbv7jEXXeVzXK3Zf8ApOXuK3rcu8vauVXJ1rr1r91O1VE+y0+8n3P5l60/j/xJH4CX
8h22BfjHJv0dP+w+5+wT7+11+OYP0GwPbF/d/jH5vyH7Iyj3IVv9dlm2Je5mh/NQn1bFjY1kc8Ap
EYkSy76tglcjOG0GydNvabvBirrGZ+ujACdeGqeymiadz2vudXve19hvVt3qKu45E16+vRdNe1VU
RdNOrVV7m4umqWaOYT9c2MUjJIQSpo5E5OhCRVmgqIYX+mzoySZxdpwoYiHy2UMIJIVNaugiMa9K
WwnR0tcaKqKyuiJa1UJDjejlQqPVqt3mSxyQOYk0UsbVWu5QU0N1oYaYYNPNHwn5NKgHNrA8cidj
uhz55Ufw1grQrEqE2Nw6s2YKY8CacgJ9kGbWRyw19iNG4Rk8wyEyESbiKdXkCS8V8ZtdZBkIrZOI
yOFB5ioILGqaL2QpBB96EDAefWLpcibjsWvnGnsDoWktbPI2pmyGyUORKmJWn41j+OiuxXGLCqpL
FYxqhrxhzKYKxSxaS7NwbAAQOCyF5WuFwS3gOgCkZBbjKW7onD1yFmPIHm2Im5CBFShnRT1hNZNS
MmgnMMtjIbQU8e1UmCYQMXo9zWCzPPjePYmZQgrsZ6FxbKcNoXgTCWUt7aw5WPjSPfGZDYoLVzDk
XU0tXI6qtYrncStWOvmglNk7IWRzQ4vNjtIBngMeK2VEYeeUTiiWImt3YyXUASiWUwMhDqZMeSRt
cXE3pORyrK7EgaRaUCxye1GphzLUUgmoq0bTWFvJu1Yh9XMdLJFVvBBr47UDdlnSVxMiDLASDR4t
WV9xe5Bl3Zes5iRoK+yAe2kzGVk8NcJb5tgjJGFS2jZ+O2+LJBFHX9q7BskpQceMG19cFksloISQ
C+OUqAbDJ6uOzKPk5c18cpA5fM4lzbSUElumRnNEUKVgz8TqaOHFMXiiwfGsosoFojSQyBbcgwTo
nF6wS9p21Q9c2tkSU6ci1jHebXw9HuTedJaMdj0cWGCXOS0KHNjqWzBlY+bMAycg9ubFWpUh04j9
6rfgVPybTYJEtTBxkJseRFd2ToRIrGrDjbXf7jrqsZgTJ78ggJLbmbbk+YFxq21PSSxdHzg8sPF6
IAXBTQ44222U4Fk9r2QJ4mRNIs70W7x7hl3UkSqs54FrYX9aK8iR8w0KlAxtiihdFF9h91U+9p7H
3VRU6/5dk06k9hPa/i9j/EkfgJfyHbYF+Mcm/R0/7HTT2F/hK3209jXXu9xer2e6ibXX46g/QbA9
sX93+Mfm/IfsjKPchW/12WbYl7maH81CfVs4kajnSVxjGMVnE4jnjytSLhchaOl33bqcOOtsZHdx
AiVVsMvdT7Zf82u6/e9hPY7m4uvfNaurduMWQOOPq1vGKkjhgRX97q6WRjV39d1re7vbIPFb1khK
u3OAywCknc/uNbw0ndLvK12qN3VerdEXXvHGCjRQkSEjvH4BRkwLHxz6Mn3jIArJ0PDGkn3N0Erj
SNhjV8OqzbHzXZGK2JxYxYTHDvOGFbCYwuSVJYeQIke9C7E9u9AQPI4eTtXxJI4dohBrKyNBcejp
2cgSS/VY21rd9GFixzbixgNYiTzESaQR7z9N1sZ8i1wKvtI2Q2T1Eg3rGGNkkccRy7n13GxksrGM
n32tbLK1qIkj9a+znxfHZbKoiHHqbCSlrXnVY4mvKQ1xbhlnCiF1Xl4xnxsg1Xho3avcPW1461Qj
6+rdCGNC6sAnSBswYD0i+tRp+TASQUfhRycmLxGuSCJrbvKzq+rs7ewtYbCsMJpxukKLgUVRRuir
7CdJi4uIlVzDpxZBmu5hWtZozfebbzYzj8ttZCSV9jaSU1c6xPBmgYNKEYco/MlCyDMYO8eeV8To
GthVqxojdn1NxUVltVSLFv1lmAKfXv4Dmvg3gyopR3cF7GOh1j9Lcxqs0VqbR052KY0bUQlSHQ1Z
dFVkV0RsqyrKZGDMK8ZhUizzrIQ2JJXrNKrnrxH6xEjVleOSPXx1EBEAQ0U8NVC5HxVkUscbXx18
T2o+MJjkGY5Ec2NFTapiNxfHS4qDRaKMqkrZ46RWrCrVqWSjObW7qjjqnJpDosEOng2aPyVmOULM
jkarZMgbUV7bt7VhQZWvtUH55zVGa0dUWfTgokXeJu/UsTaynq6424mQm2LBrxBCrQhu/ukWM48U
cpszeJJpKS6R6cR+i9suv2aR+Al/IdtgX4xyb9HT/si7/HI/6DYHti3+UDFv7BlXyJ/IntfZGUe5
Ct/rss2xL3M0P5qE+qpCD80iyBiqOzc4kymmwBNT0xWRqjOZV/Ce9iTL2izQN33OScdySxu3muVq
SK+OVF3Jh5o5I45R5ope0lhnSKSFWSMnZA6JWotjIXaDgPoW8zwTZnCR2rrBjK0iBJFmZDvixFM1
GZDGiKk7omk7zkPgAvchMvCI5uhI3X9gaU6whakwb2OI1eyEE9opKpv8JGxsl034YlZUDRuJe2Ou
FckhL5yJ3q6BsjnuWZ0suqK7XhapFBqkEKMijjYwS3ts79FtczATMkzl7h8bkZg9rXvDkhD4uKVF
ZwukYpbncqLOY+yk6JY8VGMllV581rjeW05YPQT21BgdVLaFi5Lbx0NWaN0Xc2Vc5JbOdYZwyChb
AF8T+aAjjbG92ZSX+I3NQDj9zUVgLXz4ewuWa3BoXQ1xZHo1KqksJDrlJGGKWLTRhvDgnL6UdOGx
1pEHNVWxy11aEHZ8nLKBaXtmHS1vO9HGWIUvBLsYJpmjGFRPjie1H67yJdV4uWWlEDiRgFHzNfX4
2Ta31o6nrLQywt1sqWzBhCVLMYeIKqrKeRSI7ElpnKvEgFyaGuysjFw8UKFpoGAVVCWlvbOqK24L
PvFuQbORtarbEQUICqJqDUjQkmewl5kTkcYkMdHBjd5hOLzWVdHBE2OryTJDciiCsYi54GWDxDSq
cWjEHJkRs01rWSMHbI+VzsxGnLifi0VPSG4uIwaFj2xdKZDSn2MpPDQmfpU2mlJEa6Z47K3knRsb
NIQ582ttZQYkPcn17CZaqqjwE0Wqx3fsa1MicE+/TNIMjdMyNyGw4zLBWHVMPHuwDxm0+SBMdTWF
mZgDpRnpCW8OHIckx8SxAepIyMe7k7AkN0yjRSsVeLE2CZrFZi1eT2Qf9zuosaXMDCbPTFfrqxqn
Y6lYLrlNTaxy9qec/ka9sBpmm6yTtE07F1jNluSYmbmRtVV39EDV4co9fLJid3cFyCMv8St7QU15
1ZCkkJppUY8b5h+WZIiPZf43YGy2SBg0t3WmkwhwEqHbOsgZg5UAFDFmUQ2mmmbOyCOThHxQzN9J
ZNP9i+wnd09lfv6r3PvaKn+rZN7TX2dPb+/1a/yJ/wBn+II/AS/kO2wL8Y5N+jp/2J/Gvsaf7ff9
nu/sLv8AHI/6DYHti3u/xf8AsGSf/wDX8v3fsjKPchW/12WbYl7maH81CfV4Is0cE6EAkRyzROmi
a4M8Ytu9E2WBX9tCmkfGj43XGr2dUjCBHxtKYY4jpBSUinWwUhvCJUxViZFLG6JGQOgbEyBkbEFb
Fwo2t2JEGbEHzbTE4kQ6MRCC1nnlJ4bOGr5ZJ5pynybyLLO98rnLI9yqRYGxyRRi0ggY29DYxske
dJDMRuvLKK9NBZXMhcsT2cTmfTUVVVz+rdVuiIjd5ER6O71NN1Ea5+9rp3FXRO5tDg7+ObTx0D8b
kWeZIyiQJROTIWUgOKPhyEQLvq+Lhq5ZOtNdpmW17kN+YSRjcnSlo+nabAFit4PfV1bDHX09cCgj
jotTp5Q5bawjle0uwn4AaD5GZX5Lf00mUuBmsIQo8ZMgjIEGCr+eFHvMbt3pIZWAD1pkJjyAUh4j
4A4Z9CNh8Op5+XStFFWlLJRjVisaomK1rjp4ggxgo2RWgwpU7Aw4RI274AYwjJI9G3wN9eYbZnhi
xXcGOz0xYFjPBHA0d5EWQ0FqMswTWuAita0SusCglHjnm4QwcY0xwGQ5Ljb7EUcK8jpCgUddxCxc
vBxybWqsj68toaSivtseKprmeGMN8h75a6skEsBOGWMGfi9JiMAYc7YWV1Zjk1sVTTVkjouYGsq6
S1Wcc2SaRRig68gdYyonSOW0A5iNyY9UYvEKsrZBIayiJsiQuHvRcypG9aTxTTSkypNHFC7cSbjS
zWdSTkGVNxW2NLsiMRGNrBKiM8wtbOUgWwHp48rHYlw5bdgTMj6OaWqw8mtb9YbJjVlkN8S9CK4v
0Q7tBFec1U24tyDPuQ0MdCroiQx41atFwpYGaSxvlc+Zae4scgvL+0pQ7wEYy0bQwOmGvpamYhhM
NFRUwjlGWnGaG6EeByNkn5lSXOjdFQlEyEMkx246bCSB0bWSldGWdVwykkilV4/L2pD92J0MnGZC
7i7jXxyZHf2CipLZtrKuuiFllmSKjpkNmEcU+YcdWnkn21nMRDEkg0EKixRzTSNmmk+ziPwEv5Dt
sC/GOTfo6f8AYemnt/e9ju+zquv7G7/HI/6DYHtivu+xf+wZL9kZR7kK3+uyzbEvczQ/moT6s3SX
BUGViDEtKY2UWSIt6CrDMx2rXMnWdInJK10aterVTRz9lXqc1zX9aLq16PRq9S/bJpomv3NE2yuk
DzK8x0EIAGxjYJYH8vrHWUKSQRiD2Iu4s0h7nq5iJvdsm93U2muWdkjIT5KyQadg5EhywSStKih1
liKuCoZB+I9ZnxKMSsiR8Dg7r2wz092Sg/MWFeOXMwXRsG/LFvPij1Im4fDk7TWaeSVqtek0Ik3E
GhqJ8gpqvGwMixQ3LaWwEyXpiLo6qcB0nHb81S0fRcocVsGQ10SWtfweZWYwdwzYiK18uXYsxLgi
YSp38hqWttixC4gixa1ziG88QIY7k5oYHPdES5sBCMkfowGmOvKcW6sW8YCqLswBrQyPV6I8YKYz
mSdyNkjJphmTI9zHOY3htdAlxMuV4xw8deg+QSre1axUkkk6iNZbOcYjaxZZ2SQLEa6F7iG8NOKr
WqtSLBk9C4u/G5ulHZcVryboWZU4ZtYxJHONjekb0gmH3xnPasWjtxOHawi5LjpRFGk77+AW5q53
VCDNl5pbiKMzWv4bRSGyc/I3gOhn33OjHkelcDDlOOSm26kpVCQ3dYpNnypJQs/R4zS1IObGUMVC
5A2zrERDNG/cfEqN/j+7/wBv+ydzup+8hH4CX8h22BfjHJv0dP8AsP8Al/1p+xu/xzB+g2B7Yr7v
sX/sGSfZGUe5Ct/rss2xL3M0P5qE+rpEOpbml1kvKpu/XCQ2Ysyxdv6XuqyN+++b0qNm8+RY2b80
RI7zHQyFuNli5XhvZUKR2sUFewyGVZeCqPIRC45onFcVOAwZWDR5cYWlkdGQCExrhYRpJmq+tpzG
RNSN4TOCOOzgxb7XPfHCyUmaV6yyoZjwQFlXmHObwzLYMYSta+MxhDEPJU97WMmjjngh4jZHvJdA
n1nC0yV+J7/bOXHqtWrI+R75GuCHdC57pZSJHtdEsbuI9Y3bit0FDboLFYY+x/NZVZYCdiU9pY3d
7cAxPIqihFjr47gw2OmrpSpUnLBqIQhZ+EiyQP5UbhWDaiHGiw8iweqwi1juijB2UUVbJbNQ2qrx
qs2G8HlZfTukp5isfbzVaFG2z3CHrX2sgUVXZ0WRS1ZRdrY3R1dk9ZIBShUiiDgMorAa0iVldBYi
pPbVCxlWFnFOOibjp21c1NVWhdSHWBUtw/srdkOBJErLQQoI4WqJo7sDC5IuSEOlgoefAknjfVvF
hpCn8GgPmMrkLSurhs1vIL1ZS7hg0Nk/otMYdiAtMk0ZNj9Z5LWl4ufO1VmOA5SCOmITGTPQsPHS
4BlWDY7Z1xNi6fIOm61oMZ15BLWMShHRAoSzKsObK5J7B7iojOFXuYdQ2NOytp64evrQMjNbekvW
yra6A/dpW4rNjc1VwYZJ4lguwryisWx7zZIZBBIwJXbyaKr1X7unVu7y7rdVRm63raipojFV+7xH
/vGR+Al/IdtgX4xyb9HT/sNf2N1+OYP0GwPbFfd9i/8AYMl+yMo9yFb/AF2WbYl7maH81CfVljjm
cM58ErGERtjfNBLIm5HLEyZko8ixarJw54pY3PbFvxPbqm3c01XX7vW3Tu+2neJ7TUREXZZZRxu6
k75XxR+EiUdzXq9Wqr5GIINJH9sxQhlRW8GJWNgErxIgogyHQScokb3OFlqGRSQekxLDE1sQ6Ma1
EVFEGVF+t4EjequRrGM33K5yIjU3ZO2c5Xrw49WJq90SsajXq7farljniqJTSWwxxypORTXlaCcL
NIrGG0x9nWB115Wru/W59NPYBkRSjyqSkMzJ5W6rqrm66J3u9uMeqpor0Y3e9lXzN7Zu5Iu85Faj
UTTttF7ZrlV70d36dsiSOa97na+mKjHOc5znbx1tYS8uBUhkHmFbjpUiGGjkmlduRte6RI40erGR
enM00Ru7J2zHM645GNciq1zOuZEVF4Lk4jFlbI5XpJuyN+2RN5XbJLOwh7JJhR90QA+wn4xE8cUb
nDgQSzjwwvXeeXI1IhGI4siYeCGWRasc2XhTXVktVWNSOVeMdyhlmkOsUXpSPHrSZeI6NjHcNvW5
VR7v+5U06kVE69P9SadzTq/YEEVpHMRC2FjVTu4U0W4fUmzV9hBpPHE53LmDzQ8ViOhl3OJDJJE5
r1/ZQAyFDsNKiInGDfPG0omARYGlTQDq5JZohnEjIRJG1zIVIgSRW8Vm9sQDYH8uULDRzzxcqbLu
RZJcSUNK7fgGkjdzltFILoxznD7vHKSAZUmX/G9z/b/t2626+2qNVE7mqroq66O7iI3f0Xuqu3e9
XV19trqrtO93e5/ytfu9zr27n7H/ALtiPwMv5C7YF+Mcm/R0/wCw16lTvva0Xtvvqv8Aq7q9Xtfs
Lr8cwfoNge2K+77F/wCwZJ9kZR7kK3+uyzbEvczQ/moT6r1nmcNBzdWwghkj4HQjyWgaTv5liscN
uxovp2+jGd2Tdb27Z3zxcQlriEr+b3gXmtYxijSWDIhJ1A4r0fG9Yx3S8ujSlAiImWvGo7ATFmW4
1dzRRc4JznEwRww3kTGtgc2FJJpRSg52jIyZsRMk0DSTWwRFSM1RGsjqj9GtTdam4VSMRqtVN5sk
bXLFMj+24zJPY3dnaxPm7RyK1mm8rXdTmNRVa3tvtmyOa2TdajeI9qIlvR4izOPQXXBY1HDHY0F1
Q5JRV3TwQuQY9ihlmDXX900bEWmzVpsI1rdCGRsZU3M5stYJEBbAJn8mGhdkAMuIayCy20yqSgdi
tkDYpJV2POZvYU/oqNELHgtRiiUkGLngAioYqkiSlZazZ9WVBJ3ZfNnbGVk+PkKIuXVJGJwlEjS1
9mAjq+TmaEdSg2qKOQE5hA7iA9mC5GP2S57UvsQCjUg1ILkKsIy+YO1iyWHKY6uCIOc4mNKhOXy2
JlbwFJ6EGnsHELsUBDMTuCsWiPWKOwrpxiUDgaVCPOkIznTD8wjObAciDktlG4kZYRLWPKJ9Eotp
QWGG4gkY0lkL05MFmePrluV8sM3Q2rtq2GLlj3N9Ipo8hicQCIcURtj0hA2ez3Ff2Rbom3cYLfJg
41FFTZWNjMtc1UnxccJo5FWLEVSNlso5nkOyXiGzxol3IdcZrNfTRVPoqp4cX7IYJQ8MeUB+iorF
7+4vbjGibDoJ9uwAXsaDU6lNliKqQWli1sIuRSDplMuP9JNdi0OYPvOnnQNrROkGquW/4TsBkt+a
aD6IHcynpzhkbULXK7J1hkzwBtq/scExCoF2QhisfOJzjTKK6tsM0trs2y6NpXtjtbKlHqcVMAiQ
mGnYLzG1xUTydkYjCg+yFXcWeuNzC5yd2MF4UIU6OuuRJjM1Pp4czkjYZJSmE2A0fNBumbWQmwx5
ayqFvBMgktOyQZQR3I7YbyWUu8uiaUmWOxYkMhRTJBp4JTEWCd8jJCFex71XMgseTsmHVqYjgiNE
yaXskSXVSVb5Jfh3N6NW84DnxChjQoYQJUEgk2jK94VOZBW8GaHD6u9tM+hqmQ9lBLAuAjLsWJMg
jyCm9CHSJJdmZkwS8k6YimSzvpruQWGUUs4od1oLPSWFcTl5OU5B2KcqmuGXhVgQENmwg+Puxxei
7RW0eN2ayz2MMQo4tWOcjJnnwEPglnbbIXdZBaPkcFNENkuLdkbHZq4p4r2kRtI7I1/ktjZNleyL
mG1FmtOHLE5w0EbjHSTWat/3SfR1vUKZ5x25s1vLNvh25f6AUKRMX3uikteiF7H3184PknAqtioi
rUhVhXZIGw8zsiwMhfYnZfX5I3G/QVcdLsPPuHR5kDRT5IjIRJ7wgc+Ep0ctVOLB0GQmD2N7HnhL
Kg/so44Ee8zNjFaNHloT8NdeKFO9kwBtTDPxLq9jWvuRRQHXJxqj17m9jt2VzdlSerOoLE3LVqD+
yCZk8eZSC0kdPEfHjk0mU19bGHFdt5ISMajSySIi6iceRFPMktrW3BtnJi/YSjMIUNSJZTKzsnnW
NnGRNXxOClsK2ufEZdcoroRmq8pVQVzJV7I8xF1mEN4tf2RIaemAxXsjSAlBqEe/EJKTJR8gM7HY
xcYzaqYJ1Rj9Vk77BktcZNLYzGvMxIeOXN76KUAGKcQs7slxV9LLL0ubZ31jeteRhWQOIllaPJje
RyDE1bIQ2Uj2x8jTu+xCPwEv5DtsC/GOTfo6f9kXf46E/nwfB9f5dsV932L/ANgyT7Iyj3IVv9dl
m2Je5mh/NQn1XcOKGaZGq8eOeThxunZ28S67kmj2zJCrH7m9GvbMd3U21RqJ3NN3vdE73d007XRe
rRETtndXbO1RzlZHGzr3nOaxrEZ2yrq5NNEYju4rdETutZq+OxsajiiHyMlaQHIkcMBCESxOmNHg
0WVElkDj3/BLxIXb0Eb3zb2mqbqo72ftOtNUXtUbovbOXV+6iaabz26d1qu1emiP1Xqc9dxN7d7Z
247VnUjVika5ypDptp1aaIiKzeYitVjetrepY+vqa1HO3Wonb72qJ/3qn3PY7nUvV7XVp3E27nc9
nuL3UXTVOvRVam8ncd9tqmywiCDiwrKQQ6IWJg8TiC5XkFTujhRjHTkTySTzTORZJJpJJXOWR7nK
miaaaImnVoidaImncTqTq7iomi9W3W1F60X+Pvv4u2RHf9JEd3UT9jMPIsrY54pIXuHInEnRkrFY
5YShZISRpURfS5x5Yp4n6SRSMe1rkOkqoTVJs5IZbA+1uLnILUvlouALHPbZBYWdk8YWPeQUTmuV
GWWd8ELHkTuk+ziPwEv5DtsC/GOTfo6f9kXX3LofX4iYOu2K+77GP7Bkn2RlHuQrf67LNsS9zND+
ahPq7wj2RzSE147ZJU1jYhVgMNKq6K13VHK5XaPa/dTWFUe1VQwqSGWB9fJOw1kUU5ib4rGPn5Pl
4JJDvSnt4UY8fNrPqHOIPYQlAwY/QEFTYniFjPJCTkjxpElLNgIdGoEc0rGsDTiQOZHKrN2dqsNH
InFmFndj9hSUxLiBRGpAcHm1Nj7LB8k0icqUDZMkfavdCsb1KZH3k7IuL6T2rDLUHoI58M3MivMF
LfXsR7mucpkK8pKiRNjIfK1UYjd3iRvWNGr6G6htBj+WMk7HxJeb1UJMnozpCs1qqTpO/aLZUtiL
fFGPiIuOkDr0S1rCbAEa5fNYHNqrl7JcYWrxXIMTxi0ryK6xgt743IBMfJJsKszpp49JEi5FE2rr
Ca2/U+QCaB1tC4jfDsShn0jrAzNcgxbEakLHJrUkyPGrTIITpz5rDOsVrnK+qqOfkIfYUwoMYhKs
6TIsQwRXZBWehEGSo7GNZnlsHZNIN6XNtGWccdbUTgXccdaJCXTys5ybpvm5DhAWNHcnPyFVFZQj
k49SGUtfeFxRVSyItpTA201vzZ+bVNkBXjR2bVgFgxC96QgBWUe045rwq5cZpSaWsgrqauv7Ai3r
ibYq2HsrOxr0Dpxw7ulaJySVU6lWJLj0bKdXM6P3Uc4gUyV2PdAWOaZFhg9JDAW3IQnY667Hmtyr
d9nIGZ29DIYbTR0IPRYBzpZrqZKzfsJyiS8drJsp7FGV5ZVT09XeDHUBmPh00hcSlSZGnNyHC28s
laaHyS0J8cG/0+yB8hFo0yTH7UXEuxiLm1ssNVaBG3Zk/oojjCDfLf2MdRAnQ4UhBhLbqXtTN2D6
7idXl0ORF47azRmdifIYLHGwDquCGG17ItUKgJYR1xfOeu8A+cGyYfC0+Hjt6OHURZJ2Y7h1RHZW
17m3Zjsd+YWtPRIKPNJ2OFhCs81wKGSSd9oyWQiO7nnDgGerag1ksk4OYJV1dJG/HSsbrmVDq+a2
tR57amxi6uCyJWZTTV9o2ihs7RsdYBKJNcKwZBT4pIOFaVlnz0FkpYyPeaNU2FFDPK1zo5lbTWpB
dlVq2Vj43gnEzFDva6OZ++i/Z5H4CX8h22BfjHJv0dP+w/fJ/wDEmmnVp233/wCPX9jd9Wul4Hr8
ScFRf5urbFfd9i/9hyT7Iyj3IVv9dlm2Je5mh/NQn1ZYy0IUb0uaTlWkvnRRZEJZwkCjkKRyviRH
OiTibvaR+mObs2KKJsMbGtbHFGiMjjbup1RMajNxOtde0Y5Xarp3uxNPbioUGUxGvRV7eJ2jkYRD
IvWydv8A5Rq8Tudaps65yG4nykyvjdWY3zyySMpqjVNxm5I/hqWmr2uk3XKkaRqx/EV+38qa9zq+
5ovUnya7H14OI4yEDbK1bUISirBhLNW7+6tgNCKyExWcSThqQyRY+I/c3d92tfbJjVClrUjRg1Vm
lPXpYVoUbZmxhgG8vzIgrGzzo0eCRkScaXRvpj9Vr7HHqU8B5rrF4JlWCSG+wkfJM49400D4XGOm
lllUpzFm4sj5N/ecqqAAM3FK6rGAmrkdNhcFrkgIZXaHj4xdy3YImOtMAVQE3ag3gPe2ZNWo2OMK
5Lx2iNtqxsEdXbE1QJFnXRDayCsCsJYXlipA+WSSHgSQ8N8jnonEc6R4RF3Q09xPWTKRWzWlaHYS
186rGqzAyFwyuEk3oYX78Cxu34o5Nd+NqpPkUFBTQ5AVGkJN7DWBRXBELWRRpDPZshQ2WFI4II+E
+dzOHFGzd3WNRBoI6WqZAECRVhwtrxEiErCmQRE1ozOFuwV5EQosUwUSNGkiGHidGrIImtbHUUlR
VxsDjr2R11aGExoEUxJMQLWjQxtQOMgwyeMZE4LJiiZWsR88qulravGMera6cyCwnAApa0MKY8aS
CYY6UUcaOCQweYUaWAl7FmikHgex7XRRq3o62xjHrOv56e05Gwpa00PpMp80hNjyxI0kPPESEkST
l7nMSvnmdJI50r1UmrKxrHyawxQ3F1xFNXTAFOr4BxgHEiSDuHnUEYMQcNZY3KNAKPFDuMgja0cE
EYcIIOCIYQMSGMYUUaBiRwjjjwtZFBBDG1rIoo2tZGxEa1qImn2eR+Al/IdtgX4xyb9HT/sNE+//
AD//ALfsb52n7th/oXgu2K+77GP7Dkf2RlHuQrf67LNsS9zND+ahPq802BxOkwUCQR7vFfIYeMIz
cWRzI03HTpJuOfHx3Ma1ZoGtVyxzCyMdFrwnNaj96OVqObJDLC6KOUeUeWPhyxTpE+FUljIjhkj3
UyitChLri62kkshr3iCuDaXGOs/CiY6VksskMb4yEe+B4z2rHG9vE40TTn5JfHTWIxs6cZ3JxokD
AWObE1vAbFJulQmu1SJyrqjN5U7VI3M8M2SzZEj99zNRzjIoUkVIlldFo2FjnQsdI7vm6rvKsaZX
c5ARfkkY/XXuOWdVQ18GK210YoMBFMQJW1ElpiBttJ0ODbtsMt5p/R0MNlzTLGYgWkCpbmzMMsLo
AdBpceFjkZj84I1sfEtxe1cpIgJBcg5MYcRVhFKEa9wXLQsmkNvsupjKTczK6xWrgmMxYGO1kBtb
ceKBtjYZW2mGMrwKmfpgq1t6etmPHIZTOsGzAxkc2NUZDaDMxkfKrAusFqTQK2ilNtACyii2XfKm
urpqY16i1E9kRZjyRy4/FcRrI9h1a6pu6YwEMCz4VzBXxtMqbZTGV1qJKBZ2UTByZK4pnKGSD2Yz
+0LCgVrkbildVBXQNUZnB2PF3pgdZHTXfRdDkstlWB8yQ+5FeJcVbI0MKrqqKwUAp1QXYAvbNJwa
zjzteVXQDkxm44TFJDcWcNNWnkiVt9ZXVKLLZnVQjochqKi31s4ZuikYLZsA1OJu60AEHNZp5ZRK
3oIyDD5KWO7s3Sbk167o8o2avr0FQaIuUe1WYQhjaoiSK+yShvMdiMsh6ypCuzcNrybaUgaU1ksZ
M2WJTVULRYCJZPRJa0hDXQqLwFMlGHnqwKGttLLn6ca7KMgLxhRKYMok8Fima5GhVi1p1aUI8vGR
b+u4qRqw18U0crv3hI/AS/kO2wL8Y5N+jp/2H/L/AK19n9jkLv8AnoP9CsM+T+bbFfd9jH9hyT7I
yj3IVv8AXZZtiXuZofzUJ9XgizRwToQCRHLNE6aJrgzxi270TZYFf20KaR8aPjdcavZ1SMKDdGwp
pik8+pTYyefeSzhTqYzcjjnY+NiQOHbGyFsLOVbGkMabXAh1PGzHixp3rK1lco5xli8B9g14KuIk
esr4ipSJSA1SWQqVyzOkXq3fQDSw1L1VjpB6nDGFwPc5V5uRXhv32bqNXgsg4ybzkVN125s0CB0q
QMQhiLvcN2sznyTTb0MEbYHbz5XM4TWxI5/adxm7dT8bJs+yC6qVxcKe3IxgBtGC98pDCt6vFxmF
gI9igxxpiJaZJIogigpO+FETGqGS4tmU9FyKkBQD49LFelV5Ap0R1gXZ01lZiEPMEfO8ihOqT2zl
yztmimbHLERwb/IgJUycvL6goSSnYRjlvZyWC2aVLyKWZhQlu20PjPByJLsXdIVjI4omwMjvI7C4
urKfIsRbhdlYzdDwFSV8b72aMqFlZUAAQHt9EBrVk5NoXpIe4G2VJpJpr+N5Li56Ksx57HOhcPyd
QZaGQSNRozJ+ZWe1LbK9ZeXfEkHDgY9HueNZNvskUMDILPKQsf5mt6HDtbiG3ZYvY1lU23mHKlub
EiIU2zKgCIerK+IWBVhWwxr0RZCVjhNdPV11EW6hkFx0Jz15ZlOdHRQ3crKmPcFr+nLO24cY8O8j
3RRvSrFJYUUHV49fYxy0ssSMsq7JG1aWs1nJFDHPPYELVxyc4PKI7iEEyPY+VzHxghG5nmBptPZj
2tDkEzsXZdUhA4c1dwx3C4uPWWEBIJRgpjb+suHkxlzOkkWVIZIscsrjKMgu3YzNzgQ54eHRRz2S
RlxJZTk1mJ11oOQsJfBkhqrCtryIR4oiQpo5C2lfvCR+Al/IdtgX4xyb9HT/ALIyJf8AnoP9DMP2
xT3fYx/Ycj+yMo9yFb/XZZtiXuZofzUJ9WWAiGMgeeKSEiGWNJYpoZWqySKWF7XMljkYrmPY5qor
HOaqaOVNpuBPDOsEzopuDKyXgENY1zopN1V4cyRyscsb+3ayRn2qt2ntTxR+NLTRaF8jzZb7Gxgh
HgcixDTkNVxpEGnDVETiKjWoiJsDWhjzPU0Sxihhs6rIHDETwNYTBo64DfExzKwU+fixK3f4aNc5
2myu6KqO45PUoC76MZIjW6tF0b/C9O1RFbpp2y69j63XFquH0eFihywvYGqVSk0dpeo5XxiyvORE
rXCvFRjEchCS85DLBFAXbvpTMEty6urfZmcW0o4xx4XjslEIvDxYrB1YAUx6P6SUIjhxpxmjksYv
HbOi4zuuNStZNG6qcP0pMSgMdaKSiqiHvsJIw2N4CSPK9JYGx08LEtFSxwl3Q5EA97I2ak4dOVNP
IGOyxk4snITkmM4MLC3QEvKicImhy8tE4Qeww0kt9ay3eJATRTFLUPGiLit5B0c8ro1BZIC0M3JY
ZBCGTRSLAjHrjMtGNimRB5Fki42lhWE1EwY5kdJbWzkQoRpjZCNayNrYNYpmRFQSq9qq3STG6XEa
CzeCBWXNtIeYNVEdH2J5gLJaWviobFLGeBoM0hfPG0AOq18S2jEmIWCyrHm4YlnUDS2NuCpNBz1a
DE2OWQ6zGaqTBiwwzQOeSVFFHHE+FXyOa5kkhxiz4D0ECBCbJbMtKeTg6nHV5DzouVaGEBEUE8WE
91nLxzojg3jjSAqs2OV1VWY9bV+R1OQWo13XrWlB7lERTDKyBRx5oS2kPtXIs0ZTEgcK5m5Ksi8K
2CbguOz0VLkmOYyXZNPZ05IZkgtLMPOFjyYu8UkcWW8HaUi5DERy0BRUcL1jaPJFusxp3MHkVUG6
yqXjWgnM81WxaJ6YeNyZfMBs1Ih5UniRt4Eu6RLRPxS6jEnUYqSpWnsWDEom8o5Dg+M2GdGqirFI
rXoi67u1vCw3DHy4+x8l9E0ijdJSRx7/ABH27EdvVrI+HJvuMSFG7j95U3V0ju22WEOpZpJ4YrdC
6FauWYaKecmKM9H8q+QeAUmadjZVdFEPPI9GsikVuPUTCMVIKygAuxppx5MflELhGIGGibFIk/En
lspp5WViCwkNMWvsWtejhXNXpSa5wGKs5poPSMlhjrAedeM0xgfNulQfmnhvYU0ficVwz2zozhOR
2xgMeLVB8YoWEGxlM5KNhDMzyufGW7iNrp0RoLYUsGyJI9DUfy6INpzC2FY8zDWWVQHJYW1e6eja
dWARMjllOsBFdxwg44poZJCSWRwsZLG9z0a9qqAFBZYROZa8fowSEugkJseWmnHJ5CBj1lM5cgUm
Cfl2ycKYeeJ+6+KRG2kEfawDWLYx4k7yGN9XWEujjT7VnHnmejE7Vu+qNRE6tu5p1/7L/t7GncXq
T7FI/AS/kO2wL8Y5N+jp/wBkZF+OQ/0NxDbFfd9jH9hyP7Iyj3IVv9dlm2Je5mh/NQn1TBMLIqw7
2dGxRmW0hEMAw82rCZh5RgbN0Z0bOsVZQJ4Ff3zV07W6qrmyGks7i+Ot3GVhE5ywKZWVQDZVKtq6
JTC98J5bnzBcrxXRDNh4LVi2mqwnSlmrXVxY8MiRcZ81eYJZDApwIYh3R8OHlOO3SVzmCue9Xve5
0NjKESMFjU1vCbLOzdRlpwZKzo5d1HohgzbFHzNarUVFVm7udWy9apvI7Vkjt1HKr95GOVXxMiau
67f425G9XQwwSRq+few+mslo0x7BCDCKwyuLtHW12g1edTVTDqwupgDqXxg2Tzp+DeXCqXExsLEj
lVq0VPDNSxH1vY1zTCzpBXEMgIsskGrEYUydR2zvAkJrpyyXSok7iSnywwzu03ENeSKlFujXnKRK
+Qj0cQViUancPg8FavoeNHw7so0rDoIyFkYXNLuw0codc94TsaHHuJs0zG8Sxp6HJ6i4Ka7Gbavk
qsf52vruI4WnfYCqd9Z6QjK9q5JPjZdbj4lyBYycZl0RbJZ5M6ugCrrWenOxxqUTo+FI2eSruThj
ESGwsACzt5+wViRIDAqZ2Lls0PooyTJiFBjwsvF1g6byAdlpZTKZPHMjn7kMLImDQsRsb1fXDhg4
+yIUitLrsqIOsYMlxmdhUM1nLU18VNM2VJw4OXWFl5VxWaTyA2MUldE+AzLhEiDMju4c3fT3R2dZ
qihy5eLYcNhOESAF4vHwn2TxJLKvKWSQBGGNglNWVsliXRGAhqTi+HUEcLLGwp5ZYqK6tTLgJtpX
AEFUkFhWWHJB2tbHNYhyLJLBCNJHDPtj5hcoG5WJ2QXEwxWlvbz7+X3tVbBNbZXEHPWbx4wp4zzr
CWMmedWTIyTiv4V1ewV2KjraX2P2omZoWWmZ0oNTW0wZ1SENHRM3oLXo0sKZEyiARQbQhSQi28UI
gAbh49Jj1bneQ5k0l9pY9LHR5AJke/Wy1qUnJhqMXfuj5htsZzAsPF4UEq8FTa+4kHGBa6Eegqg7
onIkpKyEOOHl2X1hRUNmW3io50EdjAcQIxrWpZzwujHEiwyWHG2x49Lj89FYx2VhK3IHY5diW0Lc
irHUUSU62zQIkspg7DIFYWUSU2IhI2xTV97aw0Apno6DyuxrASSjwh4KzEzsdDUY4iqAksrZxMgh
zyp66rZCxjIIt94Ec5lNYj9DTjh23ZHUodTjBOXqc2yQW7FnCRlUSyc0KMRIyK6TkhnzTvWOy3Y9
6XAZKqHG7O0xTF7LGjq6wPOrKqbpbomYmyBsR6S0ISZhFSjHwzVEfPDmzK8gV8e7PCIMbWPigo+x
tVtc7mBU42H5mTkdmsY0cBLRhJBJ0gqoUnmc17WjkOijZzLswDSIEyO7ZnUlRdF5zmTOTIzAeyVs
ZGDOCNxeJYJrKQIizCJbPMKzn0C52SSF1KfTNr6yviBrAMgMjuinyWgFZAckFUmLTY/PWMbDOQjh
bkO8qrKJkkjJmEiQoCRcL7dpH+ZadNnf9L2/+9dPvdXXqunX9jEfgJfyHbYF+Mcm/R0/7IyCJy92
6D/QvDV/+LbFPd9jH9hyP7Iyj3IVv9dlm2Je5mh/NQn1etNf+z7qe0vtL3U9jb/vX/b2P+32V23u
GU1O7w4bK0hiTraujIIC2xMTtW6MijTTdTRi7qbtyg4xQ8c1xzipBYWg8UxE1dXyTFaRKJHPLLO+
VZSePaySPTclsd+Ho+vRPr9NU08dXKa9ruaer+tVav31VrXa7zGql42CRjY6tVZHBMbkE0s7ErBL
B6yyx5MOxnpsqjsVIkXjRvdpquq662EmrHd7c3Cte1GtXRV6QWNsUrdO0kejJGbjXbzU3WnYxFNd
pcVwEVmTA+fLhYUrSJ+HARFYz8CrJY8kaQeNg582iDSJpuwzRtHaQVMNObOo4jZLu2jUo7hSF8tB
F0m1xBSwDzE8rCrp5YR5ZERY4HuSwtj5rGKurASjTpUtL6XgiV46ykSLCMbI+TgRRSP3I497XwLU
kVyvnlPsLdnLQVx5SCTZdYztbb2EdXVOeNWzGTc3YWL2QhByRONJZG9IoHxhEOhHQUm6jnnNJrEG
PdmFTYDWMAsFrJXHB2zQT6s0oCQSxDHPigWzF5cgFZoeXlUYS6NuYJyInFLy0uY2MIYbZYoZLK3I
rObGo6zjzoj7S5lBA30IcpS8uS6NuPzFXkVlIk3AWR2aMrS5hg3WBAYN47SkPsYQo5SZawOwnsGR
QEOcMnLzbhckSZy+YCUOIytbjvZW6dHaewmQIqTHui+nUrSeSLjitejujHTjyjc3zDeFtSQCXVjz
eRFmhVNeSTmAFnNPXvsYzOPVnqNYV8EM1TYjqXYjCCvJFeNHM6dWRuXHUnv5bFkjIJ3j+jYqpDKk
G5uIGwyAZJaCusJRnRTRV59mObIwoLcgXng+NHBSl5C+ScFbMPpGHPaFllXNkhikOqZb6KtitxYn
kDNnnrHlRwc0KszmITAsj8anNv47OI8Kqme5md9Dw2diJAcBXzZHw/Q7CaYMSM4YWS0bNNJPCOxi
kSsiVaV5N+QdHLBCYtamb24NVMSjHwxXttVNMqqCR8MkRO7dGgK0SWIx2gsjJXWF0Gbaw1dSVZB2
RlsXllBGHNTucy046Xslc9sID45YySt3lY5IZ2LNvQSoxr2OPcxyI5rm3ly5rmuTVHNVLDRUVOtF
TqVNqsc0ixhlurDoqtb0rkMnMn8kZYcDWIt7YfrOvLm4s6xQ+lcPicV8bHnxEm3Tya2zGpiAQJMz
tbKSzLrIbqEMCsq+csLWTomdtjN0WMYwYRhExLomClLDBEWZk7FmqhbyV7AOyNPBWVRk5Q0Rt+SO
JKPjkbJwTIy0v5a2QBRCOeYOkMitqgny8st3Y9HVqaFFONsXhGWKsfOjZ3bzg68qXmC5WxqkKR8X
fdCx1sAGRxSqQuEO0i4c7eWKKBFtIYuJLG2ObfCOGmRw75YmcThK5skb42QBK0rjEQzzxvYCbII1
gzoWyJPYRwOAFmcs7OAMSTEQU1JnixTMGIWL6tsCKRxSqMqEK0i4U7OVJIAFtIY9+SNkc2+CaLPv
juljbxOG5yTMkjaBlCH/ALRWfRPIncqb6f04YLX1f1ty/OR80WaNF6cPHweJvkcKNkj27CxklDjy
HEcoEyeeOJ5hXBmJ5YVsjmqQRy45E/Bi3pODBNLu7kT1SMq2JdC2edoog44pdjY2BTmvkQSsqq2A
uztC+FHLOoteISQg8M5CxpDDK9jDwebSF7ns4Z9dY1B0L43broyqy3FBsg5O49IyxIXvifHMxqxS
xvdsWOOUPPOBKyA6GGeOSUOeWCIqOEuNjlePLILPASyOZGPdBNFM1FjkY5doK0M/jGkzZFBDDyps
e/LilhBV37eJKMyJvIHkwQauejSt/ihKRC18jf2ZH4CX8h22BfjHJv0dP+yLvdXTW6G/QfBfl2xT
3fYx/Yci+yMo9yFb/XZZtiXuZofzUJ+x1+57Wq+xqncVev2k6/uO9iz5ccZ8MtiO+SWWZ4r3ahUU
CuYkVKrS0Qbm1bM46wVZxBwHnwMfNHSsQsYOLeiVzuWOlK3ZOAM5Gt4oQb3NUhbCJH8HiOiFglWF
HTyxC5UGUMEkvTtpLJvhCzSuEsT3mDS+njOkn4opAUbHavSPfdwZHMY2V2KCmsfGYLjNJCXEvfsK
GqhmERSOd2qLxGub6Y5iap3faydtLFlQck1J2MAGW9VWXAqJGJ2QzSMgQG5lAjqXvDprTiFMScuH
kZZpJuJDAcIocZ6Z+dj2NdlQIqvngt85srEehsOx4nMksKDPnvrYCDKyVHQtZDyavmrMRCoquSyg
n7JsFqflExxdT2SK4HG4MP7IBVTY1koJ6Yr0TeOuzuxxDIgTapwnRlBXX0x/HBsJJC5DFJzapgbY
9ME5P2KDgpAA1LshqNpWFxMPHiKHJjbDX2Nblhs3OBEDCuiKnPa6JZI3m0x0JxeRz9kjCzIskIH4
SZTF0zSlhWA/JhMr4iaTF6SapuR68MAUNtWVZMDFGt2caflxcpiR+KQwU7cZo7K3q8vtkuJDn4nm
/R8JMQFA149V9cGE4wkol3kcDchjBltB1hjuqnKQgcOlJkqoIsCzQ4S2v1qpoS7yO8EoJ6jo2vBK
sKulgjLWe0NIJI3e1qWE9kHJaoLK8mc6iqBaOwyTF7GhyewvIpbrg0cdJJSY6nobqX2VeSyyhxsT
tz7eQyxt3CyOB7EOPRA5LZJjN4GdZGVOJ5RfwtGZi+S1RNiYZS1FgM0kq2PifMO+bnF5tS3Qctvz
NamKD5Swm5uhfRjVF45aLhpgXRTYpcnEyYivbVg3AoY1eO0arvXpYyQcidj7rNz7APDWEw5aYlPh
JdZbejDFSMcixAuWSndDUYuRNQ430xDYvDlbYTvTKJ4oasBVugWzrFa500w2OuxGfM8SunhOoC+k
72WhxzFSxX12Qy20YUNWy4rR4TmQ0RhD3BGCMsRZJVUezxi2o8lceTlF9Z19lW45dW9RdCZHdm2g
ZMl5XjG1dTMIwttafFkR9U4VwXHaiVcghD+yhVMrchgMsbTspTVwUwV/jdka6wt7e1plGjIiqz5x
bFhAfaN3hDo5Za4tsrHFi7CxCJ2WGV6YMEzAG1f+6HGWzNENtksUyzmdC2ObL6H0E/3S9MYSu5nh
fWnPbYNdThnWTsZyivtbyGkAntDeBNRXVGWUHWiNccbGMXbxEywADEmcpHK+ASVzNzbJMtsw86pG
W+cD2mIWlJit6ZlFS+tw+uxvpQnGWUdrZQB2nJ24vJ5BjkwcgcsEhw0EpIEiEl3QuYiW9/2LaWs6
Jo8NKOoMqtG3WXKyjyoptPa+hcc4UuvfbDNyvF56uC2KimuokHQmDBrpaw0lmM5RX2twBRAzWpcA
k1FdUc7wq4NJDTogCLeGaSGvgLMUOGV44sys3dnWgsWX0tLl/ZVEnJQRt5jVxJitZ2N56SUi1Yxo
NzRgWF1WMZDzjK46Lery4HiGygzMr6RlhlwTBYOzAAFamk3aq19fllOuAF3JssrJLTUCJyAz2E8k
txVc8nGJiJMkkGyOJuU45De5LWw3FPCDlllaY/i9dWWAjXNoMVtscylXm5SsZ1hPjJwtrPUSgOJ5
urDJEee8rJ88QOv7GIUdVdxUnZArm9NT2WZBkmPwwg2XIbi7AqnVrOSsij70pG19q6Z1k6tsYqwO
lqs8pSWx5cRXW0U3ZoyOzNsa90EFRBIFNb4/kdWl6+aY4BeyG43H6dK9wSA3IpcJknZEKPEKg6Su
6EkeUgaSBhiMwTFxiJRlcxjJmRmwEDSLDqyMiGWBd2SJzEwtsmQ5wRMMR2OZScKnp8WaMJGNlOPz
FDTRD4aPlMUFTDHIVI6a55iFgiyHkSwsnR+ssufw5K3LskddSTNySXBG4L+23Qa10M7X4PPPyHod
5WKijflbrXmOlE3OmlTEyLMTskni412QBFOyBpfZnFsbkYrFLWEi6ZiFrK3I6GKK1krhJ46qM+lF
YSbyR8IBd0HDjGWvrLO2qK6tv6WxZTV5dxY1Ul3PSTiW8dOAk9geOnRUteX0WAdYDtOjn4PIMOli
xg8gfsjjYNKLkSGtxqszqmyJ98x1WyhksK3G4BM4ErFGS/SJpQgtc8tostnGrH1UslvPYHZ3DbU/
YgqLCojqbS0BaRnI8+VzIhENC+Kuur1sUdVBaVLUMrjlniQkEtnRskXZJWvjz0O7yDJux5YwlAk5
s8OSlLIwaHIpa4lZZ6OAgWRlyMQPA5tjWUg8gnBHx+COJp4UEnZE6WFucUgwOUY3LjsSXE4BaZty
7IznTE4uaUszcmW3nzOYjKCW8o6qfKQ+nVxRVDV2MFzFB/8AxFyU5EwLo4Y7K3yurLxp6ymxsCb0
okXM1bintGNijdM1ZBmSOTHQFyDsgmAmZpWvvY3UnZawo+trnYlk3OwkXGYZLe3U4BNjFVsIkqLu
GmAsGDOBQYwyKeTT2vbVVX+Vetfvr1/siPwEv5DtsC/GOTfo6f8AZF1+OYP0GwPbFPd9jH9hyL7I
yj3IVv8AXZZtiXuZofzUJ+x1+57Wq+xqncVev2k6/uO9i3fu6cSwjdv7m4kqdEVLN/eQQZJ9OHw0
mUm1c1GcHpBixurgNU7uns9z/ZEb3O57Ps67BZDZU5xJOFrYrNNDFSKES0qphmd0pEZIliXEANOw
kPlmbrCO2V0iorE6/wCfrXr69F9jq1VOrVumibe0qJoip36b2q9XV/yE6mqu/wDbNVGpt17qdS9S
Lp9u3iIrdxHyLvSel6M1esiJ2rpGuXRzGL17+icNNXtekjVax2qK9pCtVHK7eZMrHIqb67IZIKM4
to0gkZLoWvJaK97JJxuLosqwSzMidMOx/DmljbxHPVWtaKXOGPMVXum5EqaFkhIayx8AhRSHs4sH
Hi1inWF6ceNXRyK9jnN26v3kI/AS/kO2wL8Y5N+jp/2RdfjmD9BsD2xT3fYx/Ysi+yMo9yFb/XZZ
tiXuZofzUJ+x7XTXddp9/RVTXtVVE7X2NVX+AumqWbVjJ+ubGGRksIJUzJPrKgBRXEQVEMUnpszY
3zOMtOFDDO+SyhhBJCpo2RMLRVj4/wBc1x4vaJEG96LzI0LuKrLCHdiViP4rSIXNSUeZkWVCuuDo
29O3IjmtZTsiYNAQRWjNZHNVcdyNABFgkl4vp/DXiOker3uxqxOe6Q6woak4x72RxveUYDASQ50c
LY4o1WWR/aRxsjZ3rGNaiJtkUhpIw0K9jWgnXmJoI9Ra/IMtfYk7ksrU5UBhg3PTujWGDnBeM/SR
GrgeZ3dVU5JWVuH4OBODaOamRYQXzMb4sjxiV8JcbrM7pISU4QR1FYmOrRH11lZmLW1S1tvJQUVW
2x7LfZIBFyOoni9Ft2VJJmzIqnIAJqWu4dCPChZD+DdXhI5gNM7o4IdCDAsjdNQUZ0EPY8xdCMjL
czp/AhiMky6IjLMdiZXkTTS0kcr7o6Ma3pJ3RhDuiU2REY2/kBmx19HiuRYvjh9cYKU+/vJcgFx6
dbMW2Ht4wapq+iODowGWjtOkWV0yMKDjJiUaIiCfF4Ky2zDJsGrquWrs5r2sOo+nB4ro0tmQQD20
PHopLAyhgrKeWGqKRzb3fEdKTZm5BaR3B5nYyuSudQcuCd0MuNkOjafKbaW0x56LvqTYcUdpKuRW
hQaLvdiRt9Q4xW17cugdCTUZba3hkk6YPlfCjlAMwrHoYonx8R8krbKZ8b2sjbDK2RZYxoS4quOX
L+wt2RMjtooGEMkFNq6ipijjDbIZK6ATiWxkc7SUJl34YmtmYscqSTUF3LQGNixfHsiBIoID4WhD
W0lgKysPkMMNZYyN6P4olxA2qbZRoQ/oUBImo/7PI/AS/kO2wL8Y5N+jp/2RdyIn7sj/AKEYMn/w
7Yp7vsZ/sORfZGV/cw0Bf5CMr02xP3NUf5sF/Y9aa/cXufybdz5f5f5vvdW3s/yr7H8f3f8AV7Sa
Vl813L1RchkuXhMMlHkOkjBhhqpK2Jgcscb5Z416Xc4gZZIvToF5x8kjooIGJHDBGyGKNvesjjaj
GMT7jWoiJ97YXp+gprzkZFmC6XrArLkpnbu9MJzkM3LSu3GayQ7j13Gar2rdArs/HaM26rUibXW5
dSATZgNgkklgaEfNA8oVIZZpZIkglYkckj3s0c5V2LvK/GqEC6P46nXANQAJaGKTIkpDirAeCMsh
00qJLK+WVznydu5Vd17EEPCFfOWNGEXO6CN0xQULyZIQyJVbvzCRPNMdGNIroY1LJ3WJx5d6ssWY
vjzLCkFiApTm01chlODA2VsIVWSg/GrxImzzNjGEfDCxJpd1icR+pGRD0NLBkBcXALvYqsKO5Jg3
YmcEizbAhs0W6PA3hyTuZuwxJppGzQypCoqYSqsXFvsKwWsCHrznnt3DnmBxQNHJcaztC3TRvUhv
azb6bBrMGLMtfMhNeso8UnIkNglFbOHvMXlpkGInHSWHcekE8sWvDke1TyBsRxgee1YdHaTQ0NVF
LZR2enSUZ8jBWvMZYbreeaQsiF6Jx0k02JjoaSopGGkKWYyorQ61pZTk0cSS0OGFJyHJ1LNLvSKn
Urv3gI/AS/kO2wL8Y5N+jp/2RkG8mulyJ/PhmHfJtivu9xn+w5Ft4Cb+bbTgEdxHd6ido/cfEvX7
L4nq5yfavjczq2njGqbIxRpGRTcJ9TBuOcNGT/8AL7QT7SZm3ret/hWOefdvW9b/AArHPPu3ret/
hWOefdvW9b/Csc8+7et63+FY55929b1v8Kxzz7t63rf4Vjnn3ZP8HblFX25seT/o9o29kenEd6Un
3fu7et6401TuzUDepVk1k3lutzhdo3hu7s/ETh67et63+FY55929b1v8Kxzz7t63rf4Vjnn3b1vW
/wAKxzz7t63rf4Vjnn3b1vW/wrHPPu3ret/hWOefdvW9cfCsb8+7JMwclqLJPE9HI30p0EksT/v9
vC/bwE3822nBn61062I3RftGOavbxyyew2Tq9pdsqenVrh4Kafc5nK9sT9zVH+bBf3zI/AS/kO2w
L8Y5N+jp/wBkZF+OQ/0NxHbFPd9jP9hyLaxkx4QA68YJJ0YLYlLAJKeiokbCZI2Mc3r10gR6QEuT
lZbapiXphKpLkkku0dGTNYklsZHPKWXYGkzO4ETI4I2rK93DhiiZDBHpDBHHC1saXSey61g00crf
3DqU9jT2Nu4vvl+XbuL75fl27i++X5du4vvl+XbuL75fl27i++X5du4vvl+XYwYKQ4ad5FLuS15M
4hDWRXAs0m6QLJFO3WNSEcrZEVWvVNdETSMqYy4eMlr2QCViItzZB+DKVX9GM4D5HQ8EceF7a+Lc
4QOquDZC5VXbuL75fl27i++X5du4vvl+XbuL75fl27i++X5du4vvl+XbuL75fl2d1L1f8tfl2c7+
HY3a9fX+7Ryf6pHfy/cTRv3dqL0UyoVYOAA+un7yHTQImkL7Hf7+eH7aV6LNJ3ZXvVV2yn3Ig/2j
Mv8A9Df5Pv7Yn7mqP82C/vmR+Al/IdtgX4xyb9HT/sjIvxyH+huI7Y6WRJwoBM1oS55dySTchFrM
lnlduRMfI7SON3Uxqr97u7L+3WuqOautfeL1P6n92sXvk7V38Jvar1dW3jn7vi67/hOf/wCa/wCE
9y/x+1psQQPkkULCJUnkZLRX5W5K2CIdHfW3L/8AAwRM013e13tN5XKvrqE+LWTf3u3rqE+LWTf3
u3rqE+LWTf3u3rqE+LWTf3u3rqE+LWTf3u3rqE+LWTf3u3rqE+LWTf3u3VlYqd6vrbyf7VdW/wDC
+wu2noug7mnreyj2tP8Ay3sp3f4Xs67euoT4tZN/e7euoT4tZN/e7euoT4tZN/e7euoT4tZN/e7e
uoT4tZN/e7euoT4tZN/e7euoT4tZN/e7eukTr/8AZrJv73ZgzryOZWSTyukStvI96QmZxEy6dGad
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
S71RmpU2Joavyo2WP6OtPYcOHCvP1/5Qn/hnbt27du3bt27du3bt27du3bt27du3bt27du3bt27d
u3bt27du3bt27du3bt27du3bt27du3bt27du3bt3VVBBuYLBoo1wqIi/VMv7j9G4w+oip3IoZEqv
DP8ADKWhxIRSsBHBWh4gwgfUwcypDFqcFraaPFIyu/LvW+MmOWJ/zJsBITMIg837CHUcGYtW3KAq
ibE3xoi2NBBKmoHjMnnhIK0KP4dqQpbFjN7BWJsXzaWH21DFjDIdQlK216xphY1Wpp/ZWNj3Uwqd
/Ppoqjei5luM9ccoXCFymjemRS5mdhyKh6aggTDZloj6mDLVU2Bh+IGi84GNvkaJcgVtf0TMzVLm
+MWb+ZOWXKziU+4uNRu4tu9lwWA8Zsa1kedIQ8wgpLqHeBS0KY3YEYkFbXawD3rhPxzMyfdyanm3
SVY0wjYPlIWllPDuPyE/IT8hPI+ktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbtLdpbt0C
0FzITZbBps744IO7sRfG4QAx2cotkFm6kcueM9w4WWgeEv0ITDgBU2VOeNRj1MhCoFcGupBylcyZ
7n8P0iOiQ4a10tGuDYIKeRo3A3b1NxDEbBLb1eKLXjsc75uHGLl3Euos+70CoivrC+opsTWzAHo1
UrBvQVubJNVSNCr83fFHxTGbm45W36WQiM7Sh+kA+xE5simAG33wH1/jioAJsU7txwRIjPXYQgN8
wYxAgx60K1hi1Hbqa41lMmJlJ0tcMrDKgb4v677h1ImCxe5Iqdz8zQIyK4Mdqh1l6FyxY/1YmyjS
RrdxfhLIfPtTEcO1N51AqiKkhfyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyz
yzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyyn7vvKfu+8p+77yn7vvKfu+8p+77yn7vv
Kfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p+77yn7vvKfu+8p
+77yn7vvKfu+8AMwYN/Uggcihu7WhWgeJo46EIcOHJmM5z5tq0OvwG5DQA4oFPLMAjgEyO2K5W7s
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
skR5RV0Kb7kTAADdoh3cNQ9Y3vA9aA1BKBIxnumkDYNogkKPdqqtPtCmaqEqDZjgyHOQEoCZQdfw
l+2wREuCshdKk8IBI4duwEKTMGIjs+OIisZlWHL5zBA7K9S6U4HbOeSg+qSMOdhxrR9Qe5+/v/XO
44VAaIr5xCp8V/mQCII8iCPqOn65tW/m2+pt9VyJCe9aNgP1AD4A4DBgvrY2pQeHI8Rzxs9bYuME
IEVBA1rFWAiXRsgWjamzoiyDT9imWg4qVwIjT4zMJEjJKM0ql4EIgrR5xcY4Ff7uZGDkB8NRuqmE
SXgMxzcNG5DIblbe0ViSULNcnMEkWAcopdcVXBCIQlFwgYcwTROXZGoLQAjA5GQR4wCzLo2gqAmm
xiAl9BV0zzgOY1lFgQKkkiya8I3CeoQQUiRIEZRmNMt/mZ30zfYdY0ICCEhGwSAdCom0cf536NQU
T1Gfd/3/AL/oh0GEHruyp/3gxKgAFINE4Orq37pJLEXkKMZHPDfV1xnxjDYusGwFzKpOFxNwFhjw
wIx5Xb8d4Us7/cuI1QBMArBX6Z8H3/0Hf2+zf34ypwp05eO38aZrklSWyXi79cSKIn1EgCJZeAiC
mzXRLbtRPt6rIAQAoAAVODqQ5RVVf7hPpol4sY9kx6elPe/4P/0xNDNCCAQOB6k29ch2PYyHY9jI
dj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2
PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9
jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYyHY9jIdj2Mh2PYwkCH/Tfxj8
TiMISqF0g10C5wSBN3vu9v284aPB8nj9vOEB7fxeD8DDV4/k8H4FCni+D1fLn2jq/wBvX/eDT4Pk
fBfRw0+D5HwX0cNHh+R8fntnT7XFvR9L9sNXh6/jr7euGjw/J4fb1w1eP4PI93DV4/g8i+rnd6f5
n2v2+nU269T6Pb5q/HvjH7dtfZ/k8X7dtGnx/J4v27a0cWu50O3z734px6Pb5q/b/m8T2c+3fF4n
s4ap0/g8j3chvsvze59++/sXX0/6s0+H5L4c2+TpL7uNHs4aPD8j4PZzi8PP+7439e2HtPyPj89s
4vDz/u+N/Xth7Vz8ji+jgkNTDrfCezgQrUOtyD3P16TfXGy9f4nx/PjOI19LBddpTjZeS4eMJ0Pj
H39c0a6Xs/6Oe55mPQMvm+58nQ0BKrqyu3Zd+3R1kK7DvdrdvX3z7V8T8j4g860/S8H384PPF0/y
k19uvUDZ3y+MNbPBqe1/gAfOIq1CkgC7ASy7wyqAuB44EhaDwvGf/8QAKhEBAAEDBAEDBAMBAQEA
AAAAAREAITFBUWHwkXGBoRDB0fFAseEwIFD/2gAIAQIBAT8QI5fMtoZgAqEZUBp/YhBihCbMZL2Y
vM5pGS+MYyt+fxzT0BMZP2L4nVviv9AGj19wmVe80nMxmdj/AF5z4uPQ4hZJx5GYmrRRFw7ohtfr
880pAYb7MhM+hnzrNaZmkSOqcbNt7oNJ2S2bfR7tb/NfF6dF343v8Xp0Xfje/wAXp0Xfje/xenRd
+N7iYpaETI6Xe/Nalnf/ANPHjx48fee+v0x9575+K69t9ny713Tblt288t/nv1fe+37j22j987xW
qj/hw76tG642dOr78tdn237vzUfs5Ecc31/2/wAFoaG+7nf3/wBttDaPU3p/E3Ijd/bWu07fb/e9
OiXbX76t/wCfT7nyU37Tno363dk4w4+/54abtr2Ufs+eKSnR0jt/PrQ77kSF8iS+bXjNSOhXmDJk
hNkvPFrpThSnaLtEAMMQMt70ZNELpygi6BT7rKFr5gwGJLY4TRlwsLwwFJN4zvGaM7hhFgLBUGJJ
0VpoEHZeEBRFGLJNT1kQWZAQTZjMZLaHMxN3bn19Y5oKIeMF5Dt/XNFubUa+jQ7HxdZtF3vxnRvx
pxMuWu41JhllmLqScQpLXVdtgMzfOb3nMVclMt4ZHG4/bViTThsiSXUF+2dahiESJHXgHET6e8Vs
UHi699ivivi+6/vsV8V8X3X99ivivi+6/vsV+HDhqnfjOJrbKeG6GddzM6NS+uJLhofFjPNba40G
3q1NJmu1x25Ff5o9o+Z3BvnMA0vi6nmlog/XfH3muXYp0V9htvyKNfR1489zG9dnh9x52rs8PvK7
PD7yv0PH7zzX6Hj9560tH95t1ynFa0v6aANeyTtaML6DR6R8NcdwIacc2+K7X3c812zb8fPNfB/D
956zzW3oacY/rHtvXQdvw+K7Lt+HxxUvZx+HxxXL+/tzfT4ruu3PZ5ZbuHiaPc3u/PsWAjEBJLpm
vYVDMTXBbY22Fr/J7qDL1GjDh7R8NT5IiasCvqASwii8NNy0iGUxe9q23ZbRZQkQJEWfY46euLaC
FgEJ2tjNYhnIFQ+AsXo2unckIFgZZ60ISMEzIcsbKAFBvEEQO0fB8xekIJoc3ZjYMhjllEEqwCiD
fQZ4gcrl1gilBbhDwAK6IRm+4DFw2UxeZITKEN7WM41ckWDgLAJCwNtCIvBF0mmIlE5AEJZdtjT0
oSyDDK6TMmGQ9ctKSPhYADlYblkbxeP0HvXrb9B7162+G0ax9/bx8No1j7+3jWBASkkhJJySkkM4
i7HJo0OPw+WuTRocfh8tcmjQ4/D5a5NGhx+Hy1yaNDj8Plrk0aHH4fLXJo0OPw+WuTRocfh8tcmj
Q4/D5a5NGhx+Hy1yaNDj8Plrk0aHH4fLXJo0OPw+WuTRocfh8tcmjQ4/D5a5NGhx+Hy1yaNDj8Pl
rk0aHH4fLXJo0OPw+WuTRocfh8tcmjQ4/D5a5NGhx+Hy1yaNDj8Plrhae10964WntdPeuFp7XT3r
iNPi/D5a4NvY6e9A+xofd01yaNDj8PlrmdNGnT3rk0aHH4fLXJo0OPw+WuTRocfh8tL2HpCDMiMi
wjwpqzKCX1k6wTrkG92EA6JaLIrXCG7EKFmwqbemLN0JIYmS4C9uERVMBZEJVthJkTfapdeBkWkX
qKeUYsEUeQICBkbNR0zjBUlMiJuIw66i3osQwkFpCVzATF3ITdbwtRLBwIkrbaRULYYCn/SbGTY7
fIoi2+KoYWYnnhmIKgnGM0GAg4WWxuNTNruhYMLAh7AAIlbTg9lGOeBSs3X+LgYaA24NHb8m1oFy
UhIknGJZbQTEkEHwHxfeeX2+A+L7zy+3wHxfeeX2+A+L7zy+3wHxfeeX2+A+L7zy+3wHxfeeX2+A
+L7zy+3wHxfeeX2+A+L7zy+3wHxfeeX2+A+L7zy+3wHxfeeX2+A+L7zy+3wHxfeeX2+A+L7zy+3w
HxfeeX2+A+L7zy+3wHxfeeX2+A+L7zy+3wHxfeeX25L3NnTqX2671+XiOu9fl4jrvX5eI671+XiO
u9fl4jrvX5eI671+XiOu9fl4jrvX5eI671+XiOu9fl4jrvX5eIWRIYULcJ5gS6kLbEKjk23kQTYQ
SEMRcYavHWIMewkyaiJQLVZQlJAkK2Gl8Smml1WEQwDZGHHHNJtMlT/oiQBgEsU5U7jTdqAEFJbz
EGH2rfGoEUCwWMzneJZuvAi9oDmfDSGoBSwGVIzvpzNMSE4bwiuLBCAoRpZyVcoAZaVYYgAUGeqB
5AjIyYAIwQysGAQQREtDIEl4aRs2nKpMYq47rvXeetu9d562713nrbvXeetu9d562713nrbvXeet
u9d562713nrbvXeetu9d562713nrbvXeetu9d562713nrbvXeetu9d562713nrbvXeetu9d56271
3nrbvXeetu9d562mIhEYMl9zc0mNYmuX2c8Fcvs54K5fZzwVy+zngrl9nPBXL7OeCuX2c8Fcvs54
K5fZzwVy+zngrl9nPBXL7OeCpaNXTEhdfZ7NC1GeGVEuwvHmona6QmCXbADFKPB0OZgjQNL8LTA0
BYAxcmI1WmYGS8wR/wC5JZIAXFSVuSQ8BvaOTAokFYMyKDyIggYSGzoyj0n5ifC14wnCRABmDMN5
PcVDGVO0RmKcrXrJSdYGRb9RjUkxRaIDhFwcDHE1HnGbfwjUkAwwbheCYpFAlWCCF0GzPiloFC8R
CzIgPzvxQxQzbkEDLDN3e16MTG8FLAiTLayYl0GlMrc0l0fXXQi5p/EQcg+tQbHgpKpYxgJcOC3U
EApDgIo8ZKkj2nCGQy6TMYToKGhkGx4Kg2PBUGx4Kg2PBUGx4Kg2PBUGx4Kg2PBSQSiUGEAFMKCg
5BQy0QoEHYSXjmc3vFt7tS0M0TUpMpmxCbMc03bTChQKyJabrMAJpPZSWsrGmbxoTQNOQca6wyUC
HqCakNBWyrBnlGZgooZXLYTzZzj1fLIvfZaI+GhDPTVLhcXUskDBmSARwOFD4Z3NxBZrsUdQAGCx
BUMillO8dKXF5TJk5pykdgFHAQAAQAAAwAsAWAsFRZqG9IADYRJMSrIzBumZm1RFNNtRBxhZCCBB
JK4ikVcSiQyCQKescAoFFZkokZF0hMBUucRi2YMJYmAmZiu/1+f7pAjZGEJGuiJJEKCGLACmDQTI
JP8AB8mlCGlFEAguikhdCnU6DhnWEfk1UqtucIGCQ0gKAqLsyxUKRICuUoa3f/v69bd/+/r1t3/7
+vW3f/v69bd/+/r1t3/7+vW3f/v69bd/+/r1tK8b4ETqsRG6c15YvJgdzhtSAw0NoMVpi4gvkqQH
vkrDwAEYgqPoKkboGSaEJDK0NKPQI3fuQBMxQtRCmBKhRCQYl7aNDAkaz4hLKDF/EFJECiwMCCQP
WN1WgwywKFlCTkrVK4bFnR2C7EJdEv0gfTB9IbRA1bHBOSGSHQna9KQfoLQIEMBFAsBsRoEyGsCC
FC3GHNAythIiAKGSybgFIRUmkCwUgySJxcGSLgyIIYmCxaxxiI86qsGVAjZWEIGuqpJUIyE0dGHm
4oEiPD+Ao8BcXgiDaQFZEte4iBDMCgwkJunCMgR0INCWRl0kpQrpIaSlkLe5xbcAZXENlKnTnbI+
lIKaEyQjSoWRUlQgAhK4ADn0LskFxpHpv41nLBseCtgf1+K7T/tdp/2i10k0wSKEZFJARlo0+yzJ
IKTQSBOivq5pK6q5G76zf6IAk4Sy2QQyYtqujR2oF/wuoAIQIuzZ9SC+q+MB7UTJBYHQSJ2JCvwh
ERgW3IrGhRlDuCIkSSiaQtyYNVCXGZwnZCQyD71c5DEtcyoUuFH6YPpAIsMfCJ8lHROMnASMoGJJ
ZtIyVLIKjlZKYSWTOrEgMILYCHa0CaW+VV01YCiZM3kFpiUt0hIsRm/b49f4apnEEDCiEeS9Lsqt
iV2CIJZWgigRjW9I6b2zosFKiE3CYxoMTHtaIl95F2yAErpzvzUIOoBKkAkrDeNVG9DiDBEqD4iE
S0BgCS0UjD7bYj0be3FGuTMGY9D/AOFq1b+rxAM05kTCGlqxmZvPN/b6SXMAIssFneh1DuBlrRLE
2IjWEZBUDLvo3yQ1AhYFMxHnkk9hazQB0ZLxamcSZqZvMoOeyBMJxqAtaCNGnAhD/wCBORImD6Qj
AIlbwZEBUi10k1pefwLSArjhURJvCys3LUhGNEk3n1bVcGR5LXgLkblszDdKUqAiChCY0AACA4BU
GUGTEk3JEbXDj+LLvUsRLG0sb/3UvTDIpxIJDSEmjVwZTISySgOSTgtLRIgQoFVUUVUKjdUORlWn
IPUr/fof+WkCm3S+aZllAgqcLoxKtf6AgwQ5EeEz7U8rAwQIkggkN0iJtdowk7CbyqScCBKSypQc
06JteBdfuAIKJ7JyksrA0RSvlkGyaYuNNCkhhQPbwpwXSaBQrAQmYaf9RRdeM4PpCgrAMgBCyyJE
8M4oK8uz4LwDAUyUKSbgdAy6IWAQ5WZoJdFBslDNoQTD1JzTkTgzDKxLMJ0jX3JwNPaJDCLt5mkB
WgxdAES4BN1QArhEkwEn+bUvryALN4i5ENkmARhAhBCEIGwcnzc3gnB9EERBHIkj6jUa2NpgoeEE
dDXsXsD1Kg9ZINRcpKKjMc6xL8SGMefAERXKRYhgzADvaWClQQEsmCjW3bikBOaFD1DEh94Oe9pq
kxAEYSWREEOVpTQmrN3DppuOoTNztcxGiSVExVK7ofpIJCCORJPDQUYohBR2iWcTFYsFWd5iyfaG
ItnGDg9BFMisyZAiR0lUcJ8yiAozgDbZEoIx+lO5y01mEMAyWo6IFXAX9SY1EExUkxDURLcCJPQM
qcg1FjtWyJUHFYBODG015MEE0CCJCeXCVL/+T9eGNokmiTQ73vQCMi7bfP8AB4+l2wDxEaZ5tFTs
SEB0hAJgV0CtopgBKsJAcKAYCY4FAm+FgFgIDCLkrTKSsmSXGiS+oVLKy3s2G65JLocRBIygUSjC
RYkByLEHGQnhZTUlUEgnGcbfVVyzgvsEB7Fjj6hTMIISyQiw6W1/S/SJgUPm+oJZIEIAJQd5bDmB
gaR6tHLQIQhA5SwZYCnJZQFCRXdRJqUyICNiEgFSWZWEQTkCybXEuc5W/S1OhUQKYPHfiCEJdapX
OTpYIdQp9gUaKEsDhRhjKRtQVWntITLisxLUaFyal07ICs66HSCQhbFkLN8/rum2QoVOsCiIAFCh
MP4pGYn6/wAhtEyWEyYnnWlVvciUKEJJidG0yUDQ7ICThSbvQWRlsQxGF4D7WWwgmKiERAAEDAEE
WAF7AaSU7U2mhsYLuhxOT3oACxBYI5m1rqvrelQCkLa7Z1+/4rV9D+3/AM8xAuEgBNcWqBGIowuY
ukLgQIZQIQGUAF0ADn0SwmUCGNOauWcCqHJFei2rB2KSRAV2FLop4R2cJYu/0kIjA08JWlUXysnD
B5SylkUc26LthuubxJi+4NjNP81XqyPt8XMZja2gACo4JK5yKA7Ut/TE4EH1DlofxFWol8rEsyMg
XBFBCabmWBIyMClDYy2+lxZBYYTJOYcmDG1ZVbrl1fVzRIgTmFJ9Y+pBIIve6i+7d5+rZB0XJRCi
ohtLdmL4vRlihED4GcaRhzqS4Jcs5E5/CVFqM1tjE2rdZy9FovXsiyTyjKbqUQDWAYjvhzrZJNAT
MA8ZoTkIUqqO1LSbJiRxJRCSmd4966xlV8DFCKQ134i96VMnlH8ufpj8kc3MQesSxtLQoyMJcTI7
0SYiyTuJIJBq0EkVEMemALgKAoq4FUkNjtTSCAYzE3aCiRNhKEArsDBauJCrguZXbTGRSTu2iZID
VzEBYY6hQC5iTMtG4ZVyiRkRIkEFVMaVxtsMLo4kwAH0wfSAlPWrP2LMBAm121pbsxMMUlwrcDKQ
VkJ+XlIzYKSIYdsIskIMFENAWsFZLEDkykDUyHDkJFwskGgtevCaKpHEWYHNcAVIglPFwgZpFXIo
d6N9LDik8YgtGu7jPKkpB8HxTJOG7WVmGdEtllfyh/wPwtBKGJYnETRgsudV2z5c8GlKhmbCMzMl
B4RnEd3QEpfCmtLcmbYc4v8ARbyuZilIogfUuZAkBUwfAJyNy2YWMHozY01FB6WQ1dzazlEqJ8Ym
lQMsFk7BCUaiwzerUruWlGw7DYwRCspg+kClxh3KjUsgEkIggjhnSjB2N6hIJCCkYRJSS8lIJg5l
SToSSUOFQ4ChCKJItjiRzi3ophaSfRoBIYLwUFQbWoo/YKjB3WYNgUgoPJGEVzSTN4tfRiVMF0pQ
EViocJwCwkVtKEYC0D1aQLmtxxhMWoKiMMIAKRRkGWWABRH+UPULvAf3QlAlLxiagqJEBpLGwkOR
e6lCjIomEYT3KS+O4VIO2JFEnWEiEJZdKJtIqmC23tHmzhQHwCEXNUa0NkJwYnUtggORmYgAIGVN
cIMyZucLGC1H1nD00RwaE4jxrE3RLZQpVni0+LnwfSISlha9yL8Q8UMoBHkABdwES7RTTBMEoGcm
YSTecwwykJG6JLMQc4gtbbj6ZtmdN6kWZoWksB2+ttsXWR4iVKLdaEWpLRCJ0S3bI2mnUTCJrAYX
+jFFKVGCCxBf5ilMceWKoQERByiGpupP/lP6Pz+j+/0lxNtv+WD6QBIbin9lS0jOTEAbTayCWbsC
NINLQlQBAW8WNy1NKECkBKoXX2vv8KiENhbgNBrBBhFGZpRECe5hspCMWhWFoIRFI3AsIxHGoRG3
85TaLGJa2ImbHjivEi4mePWCd4Nj/oq5ZwX2CA9ixx9YqWxQRiRAkwmG8selJBlvWDRaYKyOZp6I
QEYCGzDbRz4oShBAFy0xKwDMXRYVZpi+gCRRMpF2pgbUHHuKkNI3xGx0bM1LCfBAlDS8gNgWyBb2
cl5K0SgGIOFUtlljPbZMrxGJJmmmPYZMQhXFRG1LhlHdSiyg42lq3op1N05U7UyvOAjiLGfx4xXs
SeUCwySiRR/72pTm5b3IERgQkKuMI69E9Y4MsyWkbQiGQB6KklXLKTlg2EkHJNbFlSAdQWyQOIAI
2sY4/wC0m55/g2f6R8+SnMReP4FqXD2RrZJQhRXtOCEkEuQAtIxBuFi9QSCQdIAkG8KSrEI0E0gm
CeQBDKQUlAWbEhMKhmolZvlVzLMqt6kSYkktuD9pSoWINx4j1BnN90g1LOLGER6hwf8AOpC2IlsT
iXExeJ2okCzAYZJ1hlknDLP075x/0GdIvEfSTQRsSRlkfwNoAbDRBMpkQgSxAqCyYamqHAYixY15
q8QAgSdWgJRFWuRa1ahYGFF3kgyULCpRNdIUjYBHskjSpsICGZPTDQT/ADNXIDCJY8A+30EkBgIA
uhEEOMg5P4FpAulAMohTUVGr4NBC4QgYBb/Otx+bNVoiwVM6C9KoAMkEhgMSEIgIwTA1I2pr1hEJ
gswKczMRUsiLw8gq4jEdcrJKHhUvfpUmnxEDAoLdriv+aqW0O/EyUDbsb/y5kF0bFCYi5eUunNBB
Bgsf9iCxvKwt9NPGn2+hGUGHJBhHG+ogjkSS/wDAtCgbJOU4xNSgoaEhOECKBbMstSSLKorjsQCJ
yVjkJm3oizgQBgAsFIZAGFkgSEElVXe83sXxt8ZoBoABNjDHTrVwQgDbRAUPfCBIwIhOoFQALCsB
LDy4ACBgAD/iwIEACK1gY+IbyVIguBbCkmXJr/2uROCwQxQiVdtY0+v0bPE13R9tsQaf94rN4cJC
N1okYbmqM0hSAcQWyvVi9ibxSJDoAmXflBSRKgLV+9MqUqIlzLi2VqPABb0DHAg4pESB0aES2SZR
JwjJD4FESeizBAGxJvmiZcRYtknh/wCe73yf99UFCksgLFVQbTLcTT6bZpNvJxJuKa/wOREC0AWY
ASu65+HfSgkqt27Ou/4+kgVBoSDscCrGbbS1CwAOhjvpba31hhxZno43AeZUSC/QugvYF1tky2My
yEQJVFNcMXMGwYTAw/8AtQRChIFYtAwYvrFACKYQS8xCiF+OcIrqSYYuJ4krR0Ez7QNvftq9b9HH
JQjj/lCCISYxbfAErfGt7/QDAka3FCSawlNkHJ/AZCTCACQSBHnk5C9R4JCAdLGid11qEZCCt1RT
fZFm4A4KKFtlmIJBFVyssq6spcVATlWd7ys3dS+SnWRc1V5GBZ5Tc3IAtbwghWncFWMTGCcVbWrd
pavzd7O+ogyQFKisrphyNkLYDFEUOxBhA+mICVgSrvPIBKmedK4hLRqiWRekTMAkEaB/63DWNdtf
H/cvcubl9Y/u3r9Iy8TBZGWjkXAyIwv0RmCMQR/2g2PFQ2FAi04g22bmukxQESKaJbxeUZks8RRM
wWxiypfSDONXF6zBbWXf/Km/ShAL54MBmXA6IiAHtxhFVHslX67xmS5vD+UamBINdzApTm935+hK
RYZ3azD2/s/vWB6H9f8AaAN+xNPwoZiRZKo6oQ0WYIoChgCnD0JxsAEiSmFabXECmFMtiwSXWg2i
YGG1whEkmRWSCzBhCwFpkJVB4tI8UAA6MbiCVCBgs0Zn/p2v1CJQlgliVwG67f8AcUIOWBWRh0vf
+qEcI+jNS/fzj9jmlc+b33+3/sNmZzc0zb7WpnVfKIEENIa0IhghTiFR8WAhnIV7uEqlmIckIEJA
QK0CJofAiSbEiScsTJKpFmiQXkkYojCXUggSJFDVDNJBFJiacaxYmUgNATpS6D1IJS60nWG6CKKV
zrEwAucnjXqJQwRZ35c9qjo0IAfwgIKbdyHWQM5yBdAzRkVUkhjP+3/jnyohF2JW30Udxsf9RREU
TCWT0ahRTaAxABDSIpjKVJm6toVJiRbXDZoeDIUAoGmQsrhlb5afE+EGRsLRLItNyDRcWIoLIIVQ
WNdKJNw2Nh8zlwqa0Irl3Is1AsgMAES1VliAfim0pRqJhaC4QeOpBIM2INXlikjfJEgDrLJMNrhl
AoWmpjCmbVRJIEyeKCo9aGOkM3kIHWysWwqIVmrbKWAfaCCrt/3YjRqyZaqwOKdPkGKu9K65yIgc
M7c8i9xQqCSZCgd8KcpC5tYhBjURay95AmQ7EsY0khjklj0l9f8AuR6VCTMWZ5/FOX37Hdq+I/o/
7mYnbS21nfV4ncEBYJcoZsPkA9ANKdAUGyogZJJgRLLewiFXesynmGHe2DS15qMLMcjwZD+HtUgj
CYoQcDIAhck0S0K0CZA5rG/mUsxIDeWlgD1miTReNdW+E5gljZXf+Aoo5EvcuRMNpDDkQTH0S1Ui
JSRERSFEURsi1YiYYCBscZuioi0jmwDszuV3BBVSqaV8oABYqFREKsSrcysKM4GawgAH8xVS8Rh9
9XJvei0k4ehHMIufoFcDiJJzP+dmus/HP97NdZ+Of72aAsAzgj+hvQVwOIknM/52a6z8c/3s11n4
5/vZrrPxz/ezQFgGZgjaND/P/kOEpNRKsgzeQgDuBY2LFS7vnux4qXd7+jxUu739Hipd3v6PFS7v
f0eKl3e/o8VLu9/R4qXd7+jxUu739Hipd3v6PFS7vf0eKl3e/o8VLu9/R4qXd7+jxUu739Hipd3v
6PFS7vf0eKl3e/o8VLu9/R4qXd7+jxUu739Hipd3v6PFS7vf0eKl3e/o8VLu9/R4qXd7+jxUu739
Hipd3v6PFS7vf0eKl3e/o8VLu9/R4qXd7+jxUu739Hipd3v6PFS7vf0eKl3e/o8VLu9/R4qXd7+j
xUu739Hipd3v6PFS7vf0eKl3e/o8VLu9/R4qXd7+jxUu739Hipd3v6PFS7vf0eKl3e/o8VLu9/R4
qQT6+NHx/lEwtCZcKAXAssxPN620LQ5C32399yk/yXw4vz7wWxR3d+xXw3V1DsRg4MffP2cE/AfB
xx8MaUa+jgGI4du3nuelj55rDDYsxOzFsc49YWLJayu++2q2OOa/cutuxXxPxfb2Couhg0GpP+Fd
22/HxxXcdvw8cVth+Q+2P0UeM0duO3sxtX+TvnPjxOld220v/FtqvWzd0Pjg1aI5kx0hseCu592P
Ff5W6cuPE6Vis4x/aqLfBq7Y+OatYMXGpx/p7c1/kiOgfPseM2bbnB7+5XxPhH47eTwPRO3YK+F6
Dj8YKOifDj+4wVwX+XD+x2KJgknT0+UaeHas/eLjw6KkR62aZp1ej0dvEd9ndjYT07eieNrRHut0
Nd/aH/RiNuB2agt/mRqcTX0r9PNuG3Gu5TPIMRodseOf7mM2o1PyY/2xT6XE/wCRxpvR6bGvT/Hz
xTYFrQWC6ZHradoo/p/Z7xn0o6tp0IrzghAKQbo1IR68W/N9/So5DqYAREAuBJY9Mn//xAArEAEA
AgEBBgUFAQEBAAAAAAABABEhMRBBUWFx8IGRobHRIEBQwfEw4WD/2gAIAQEAAT8Qyh8bR7B6yMoW
qIIxq0VFBTarle9YK3bTdCLibrPdDJsAf8ddq1IkefMCBpqdU9j3e+dyj0HB9Jpjbs6vgPL/ALWl
P1X2HYzTX6/p7+1au8P1PcmtbsaC+hNcGayH694ml+L8btPHSvGXwwe3l/j1JUY8uXLoX7Mpjf8A
hbLfH3Z3VsthNJbsnt0nE8m/b6NOkuP+85N/4fufH6oMGDBglGSep9V06dOnQ256/wDVsq8q6/rW
2n3s0eMXUutvl/zOP5B+/wDnNmzZs2bNmzZo+/4V6w4RTSfT239oJvOnse24ncuS/tNePpocc/1N
fHp8/GvN4Yntb/cuJ6zWvAsrxedfKaLzkPfW3TQb0Xv43CaGtdH7uaHei8cs9Z7IfmetXNLPTU83
E+eO1eeWqgtG2/VruVYNOgGsL4g0TYLCsMvQTIv7oYQu+KXZ1ktRGzW3khaEMO8dbIJlLVWb7Dem
oXXB2XvV8nzrXY9rueACpfdcU1sJhFr/ACpA2QaGwiTUhQlY1Q/w6Hl55qFi4lOiBeBq8pMpGYtp
wQjutMyjI4JHjrLJnMiqVC4CNBwInDKN0tDlSPrDIIpTma3XAtWiBQ+xgP2SQqBlPLSmD1v6ASUM
F0S5bd0I2/zwEWegzyeVSDBsi3lfr5M5KWihlDo7c94NGXZGLXQIIlvEBSiQxUbrErJQE4pGFmHE
ZhoB3Ed6qtaigFkLueAfuHBM7Kl8T2jNlXJbl2U6xHWgAEPlGGr4o8NMM+mtiWqpcW2pDnFciZII
pjHJQPCc1fHpz5d5pbVPWn3n8n5S3i+bso4HkT+Y+J/MfE7E/UANDx37AtqAObx+OEo4HlLMunvO
V6vzsE6ebHErXnv+IHfn2lG79++0TQnK9T5gm6uuIE1z1+P7Bbj9EtenfWdLzlt6e/xAHXjKHUuV
fhf6g91PInhePxctvT3+J1nvlU5Xq/MANCvoBdJzP9/fpFCmtcCcr2lt6e/xOlOkd8rnV6f9nV6Q
O9vl3/yAGhXe/j47HN44em/9OIlnHiV/HvfDRH0B7E4I3bit3LnxrOuJxV4vnX/niHfjw8PPnN2B
5KZ8Kr+cWZNW7N6ePt4TIy+b/vjx57+IOmN/jfXhyhNFOi+fzxrfvVUsYMp87vHDwiogl3sYFQz6
OZFerBkQbZsNpQ2enWua7/iVRkoehgYy87rrEEAWVpVw9RkNOqsgojHXCIrEO9KMy1GfUFWo2S8A
DhTLWNgb2qKCyOd502dpNaC1Wxc3BPPvx1qQad6ynkmaA2WFyDojpShnBVfsGcStdbXwpeqLUac7
lgG4YAMH8H3UsssaOECPydxeh3dq6CvohUmVilKAY1cU+wAgc9pgATk6Rk9cAaTgHgy8wG1oHDly
hKMVer9oxcKst++YCAOZAmToTiaNOYq4GZG4axg1mSCiwgUJVFH0ls3vLVhDYBuHtoGj+OlgGHiI
WoR7vZTxdA/vheqBmgghxWZLUOCITJUEmJawwHvpCI5AXKRW2VzLJSBOqyrolCjEAiMOWBNcz0Vk
AzAlNc0e+HVym7m9+zqeueHH/kU1p60+8W8XzdtvF83ZRwPIlHA8jYC6TmfSANL8YJ5HF7/5zleL
ADBsBfnhNPoG3V17uBNcu0brjrr5fyB4W+fpKdKb4Vss3Qe9DvvfOr0/7ADTaC6E5XqTkPlNxT3z
0nSl+JA78+ko3fv32U8HyYJ5dSW3P6+Z1ekpvf18yvF9PiV4vp8SvPvwnK9X5leHvOV6vzKa0141
AdFO3L2n9x8wDQB0x7QU0U6Ke0DvTvLvrOuIvF5vy/vfzoLWHRThw66Q9Cmdz09cvZErrdlz+ljz
78N3qG//AJ3y2SVPsTBbgeWFsQ1gSr8pAixGAMbqud691x9sM38Y0MPWXTTfKQXEVtuBVYy3pg1n
Ml2zutZwOdOXcQN1/LqNSCTuPRcFMTtaEVWk8bj9h4jUGmA9Dm/e4Onq5/LHl+42QY3vx4czR39J
QVEpaGLpAGrIo3iDpUxrQCIJzCCHiz+dUlIViREIGtQh0gOBw3rAaBMcqrUPGMqkqAQoaK+gsPpk
NMQrJSCqxscjFhuWAEQOI0zCbhU7xiojpBBTA0XdM7sFUaGpwNx7nuauLFhWBSkVguJgzGuZRBRA
IdSKl3hzvoECmtJJzUVXPJyirGdID1ENF6tYMZnicrW5t9pgYg7KEO7rxlTNjUYuVQQQXZZYrOQe
guA+nlbMtRtwJMjUwxFvQ0F4nccOMLAO1Ad9Vy76rIQEyYoJ3ou3ON67CINkmdDkDcPBSMqtqO9S
q+P+jdzmNS6jp06rLTerIcP6fE+uHBtrV68Le9UivQYDeJ2cHvtpEgZ07f8AdAdOrl+qLFixas3q
+B7+MA08mf8APn/Ln/Ln/Pn/AD5/y5l+auRef58eb+H6mA6Rf8qf8qf8qZv38BsTfyZfzY/zY/w4
/wAPYgf4cf4f0Ju4ONEPSvtJpC6B7QBo92Ch6vEDryHsKm9k8fYx3Yd3pN0i7yPwnW13ZXp4uGL8
8kt3ys8ilQtpi7uuU1A9dW4Z5/W+U1ab8j5d7w84rvOZbua3xL53AA4IuItMXJQlIDjsPj+ndk17
w63w0eEc3Pf0+26BOt19LdmPQeJQvTR4f8hvvDgCxebu17QP1RoZKBP4r+2c4m8b7oA5h1XYIERQ
yi0hDeLXS1umUM2HtE44nD8s77FJVysFMJ2XksukVXYJcVg/kKJp5tZFpXjhrJk39yAElzxQgRAE
V3wsLxE7aCgSIVWO7b86cozUxIdq4M5Z+Da5rmNDJ258yXtMMiCgNGjYQqEF8KE3Sq0w+I2YH/CU
9xXWhrqjCpdvElXi1FWGzJ1sqgKzDTzV4Nq8tMRPzEOfdETPwgECjo8KtSfBgLPyuAGyRWbvgV0Q
UoglOWWonPcBtJOJo3pVzT/HpJ6N+nU2bN9mLmjOWFuM3T+U4cOHDhw4cOHDhw4cOHDhw4cOHDhw
4cOHDhw4cOHDhw4cOHDhw4cOHCdO4cC5d9Yie8Xat9AnTp12sdbqs1mqwWap/iGXDhw4cOHAoxsQ
XipAAiKCCZIwEF7SwZ4W0vNOaaptJU4STPQEQssOoLdJ66XJGERyALy10lSObwZK30fUSRr8xhgI
UDq5CWLJe9aybod1cknLhIjIk5eGtZCngscp7B8B0w1CpCzSt5BO345SuMcUIIk4hVbMFBauGClL
qqoWFiFH4yBsPP0VZqv+6O23abc6Je9UcmwyM29J60zvbzFCaqz/AK5MitMfSwbFyQtjXKb9/Xh8
7tgq15tmOgDI23svbFgHiZIYt6kOA4IimXu/Gps/65s/65s/65s/65s/65s/65s/65s/65s/65WG
LXKDo6NvbT/w4ilNAFs5jSD7na7SlgihwVLQfpRinalF9qF9aSLWFYBCFOJadZZutOFgBL3v9UsB
DUqpvHozFUOpQIBYy/GnRppMAIZtj6HSrd3H98bgKkYIN0KKTrXRKezHwy+rMXkangMgvICVpS5P
INw1nKP0HPMSRoFdOH6lzoW2w5HjEdXQFFZhWOBQFDIv2a1oOK4ungxQTOPE5x1lOvQnjCVUPigq
jBWq0kmxvJ5iSYDQXf8ABHUjQQu9yJKzYUAhRSEgvFYMAS3YQ688rUBeDPhMLUSGwIkYGg5atk7I
oMMokOPi4xZdKlcYaVanggjgXGCoVqISgJy4tWgBioLrK3LK4c2RB1I+hd+/f5B8CzjJXXFpbgtQ
/wDDDx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx
48ePHjx48lYuN9nmV4onTKKsIALT043A7zg1TkFh1HAV9yc82ydbvEUYjzFIHIagCVXuZcosoa/K
OGVFq4GizKGiuW0Jbwo7SkIfc09z/rqBgb1o+exBW/kxGnGftMnlwKTWsxWon4sF+PUE8skLhRBS
Fhs5A0YSYLeKitmoxWZIJKxdTwZhlBYGRQxOvDLqVz0mK8kSovOEgeCHm0X9HdqHDDiQgx7wPYej
zRE9ustCAZwGwAZKqpfTY56bP6LSnIr+ITPY0dBQtqPJ+kBoFBQA8/L5YFhacEkNekfItccvrL36
uAqYfTRwscr1XS4OtR1dJ95VwkAZmW+jRFXHbpG0YouG+rkWGJjBqvC0E7X/ADO1/wAztf8AMvuF
4lU6NTl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8T
l+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl
+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8Tl+j8TmpzU5qc
1OanNTmpzU5qc1OanNTmpzU5qc1OanNTmpzU5qc1OanNTmpzUNBwKbbpOt299L0zC1AMTzSTjPKk
oZh+bN9XSCK1LlFMXQdqlZXcPrbOxPNfmEsUNG1OEasVvw2j7Z/qxMUM0B5cheCy0IO/FdESaeUe
AoxSDobagczEdxB9WBlq27G72aMXXNgKUpwKs3qOQHCBN1sIwMAKjUlHoN/KlHNQML5SpFac60Aw
0bFVFi7iift2UKU76nZjlWxdAZGFJEC2r1SWs9TO9gEUJWFTOKoUsALHR7FptqeaALBHpfIZ1soy
g8bBFZPYCS4xnctk6YCDrONUZSl1zCDBALpJVbZLUEeKreBj1swpiQKthRYLIu/UcJJfzU7K28ar
o7H4oATsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdl
TsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqdlTsqcxBzEHMQcxBzEHMQcxBzEHMQcxBz
EHMQcxBzEHMQcxBzEHMQcxBzEHMQcxBzEHMQcxBzEFLAoSjmZXrvzDJ6/Nwmd/O4mUUBS2GbC7Mp
S8k/G5BgcULG07l4YmrFnZOxU9A82uhTY5CjZ7aWUdf0EiNVklUeB3gGXYQjacWPoqzvUiJVPru4
CaQgdMUJou0gIU067cq9MQSJBbLlXpVKGD6vBKaVQBUMgIJFmpHM1NB8X89+NUgW0NpQAph4iBeQ
KACNCIVtJhgmCgZR84AinODFHT8Qe8E8Jus3AagZHBwKbwvLwWisdYxrwh4dPWZLeTLQFKpL/URI
E2dwHhc4JTBIaqkAQvvJ8OVwuEymGcF7AtDvRAQlFSuDAB4gvW6tUZj6CXEqnAUc/wD4tXbt27du
3bt27du3bt27du3bt27du3bt27du3bt27du3bt27du3bt27du5s2bNmzZs2bNmzZs2bNmzZs2bNm
zZswXlVxneBKa31oxcxsqbv25EAURY28voiSTCBQ8/cVm2hRUNcAkxHHIAufx6DXHIOUIjNVgOFY
jADQqpFoHANT8u8bv05wXyeM+C8vWNoICwAg1ku8eltwJVeDqFqUFiKSEwH59+Io7ehInEnugEHg
H+G/fv379+8QZaeQKxzNmEvKQfoNBzJwazBXV43IEsPi6vjDg27qoa3v2HZ71OChCzlSSVQ88/uQ
s0iG0kKs8cwFUWCNEamt2YKP3QIdqY4D+qKZFkMQFIWsrbCa21sAskYZhDu1R1KmpwhFOOTOdaUm
/ViKCN27du3F0J14Tojv1r8HIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSOwZODrX7mL/VC2
Zuwa8j/fuCClSpUqVKlSpUqVKlSpUqVKlSpUqULYwIklxj5axAFESugQUNIi3DbVGWP6wWn8K7Nb
nLY4IGsc8G3hGSqXxX3Y5ex5fYlCug1xjsVFIollGNHZOINBjeJuYHqI2W0FqNsT+iCiU9xL4wPj
lm/0yEcPSZqHYrIo6ggnhfkyprgZJMMerxWCbOv5P7l41ZqeRz2c7jRuUAgWolsNnrjN0pAqD46M
ocS0KM4clB1zdKBUYngIsZjtvFCAsdlf4PQFJgPAZhcZAdxqIVgJtkMdUsLymQHhNdWWZIZapyFh
aOlcxyIYNs2KabLpyMijKEKbhL8qVAYhGDMYEG3QaOCIxe9mrxjsJM2VbJ6KOkH31kW0soNZ37gx
WjaJhoB2EBWTE0qMvYrzPnhJWPOYhNSR1I80WORtiQ9faEbXuVEGxL/DQgAVFFdqPK4YQbTjGpxj
U4xqcY1OMYBpfinuv4Xl2ADFrf6jTaZuDmDa+XFvMIh2DXTY0mVauiergUlxjYdZ8cfAYvpzJru9
8jTS6UMyh/a+y+y5OID58cQWqsjlFipFQAgk0MdWIqK7BUozrb2FZGpvKUgC+dJoNMGiKK+QYxW9
5LhAqyXr7mzMT2fzYwRARyY84FL17CwhxyVJ2ysXC10BSWlpbnA8JA8875q0IvnmICsA73/sMjRK
HKXdptjMnPGhXXiYPpWG6GnvauBX94pWOyWQB4MDGw7GwvNjoxZKXeVjJdFgfobLk1BuXyNo15nh
uG+yJqfc23MkNccxFkTkyohqPz9jrvUCLNCOCfE9X1s9h4+coaZ3GymLZLfFNs8F00PU4vHlwGAK
UciLAaBQREb00ju2TsO+Fqp1UNVpbQX4krPBXF9EZc8nXFQAC6FMYA+hNMgg2BofaE3AtmmSwLL8
E33JVuww/wAmkmBgpZRKJYKYAiJXyFmPZVoMRDTV3foEIjRxlWtCVXiqTOHpWAxw9M11id9dd5pu
5Z/uzPRXLX3/AA3LrEBQt2W7yi0RpfcxE23DmldYR/QRnNTmbC17+KuQl6QiAXcrHKl2UvCF9pFW
DgnK/wCzCalAc0OvfvvGbNmzZs2bNmzZs2bNmzZkSyGVkK07KM5cmZnsCdwlooI02I6ZY6hat8rX
SAuOFpOdM+WuQyiZCMsVhwzHR+7eMSy5aPlY1eTlcWLhoI5Yh2ipOWOE1WNNtz1ZM4xThI/c9o60
o+6L+NqvS+KoLFOUztmfSQak0w29aSakTGSzhtC+gIypDSL89X+R40YihLMJPLo3C9B0BmSoH0yO
D4VzueaXyqPxZ/oiBIakuqHNegB4YziEKCuE2u3iM0JLPfQFI6YOWCJH9qZiHzq42BE+2p4bhEAy
PQFRpVImOmJRaR9wJ4FiEqLKLoyZxnl594eu6V/Rr2xgRMjyWjI+RTTtyVKxknQXXQloOB0OTcrP
K2TTb9LeVTW5z43Uhbx3Ag0lUTKAsHVnqSHUGLWizrmLMXGvjYplBW8wv/BV5dVohn7aATRz7ccO
HDhw4cOHDhw4cOHDhw4cOHDh1wQUNOSjCLVEzWF90qyVpv2LIHgNJo3y9iwV3hjEos7CriUeQoUa
upNTjw10Q1lQEFdEj2FhUuBK/wBRqtqoFuXRbgDBQRCKXIBQwLRHbSaAoATWgC5RLGR0t4sk+sSX
N3r3SM7Z25vpmxZiX2FIx/dutSjDjQu+dRWKFd/KODBZslRpU9NoKOKVIRrMmxWLlyYI84KB/o0x
Akg6y5UX49J9kHyEwVw9+siEmOnHxB2YyvviBXl9PJMsCKLGLwMrlpKmPIGpBtKYA4U4MqU7CV6D
UGrAEGVm5ivSgyFbheJLegAmjeeoJPASxwewWik0odHXRNOhEPsAcJC91D5Ei1oiTnXRC2qLHw1k
xXAHBMEjhlmC8JNkH0jkxOmBnD5+B+vy1JbKmaoHXFDumhOjRjOjYusAgGmtmdCEsveJlBHZfVTZ
9bk1qPdI88VNbKLmvT6fHxNBuSOQc/tdlB7tIj9ZpbMvuzyKsBS6foCoxikr4S217Y4pA9VlvZTy
5lUzotsYDashps5BLn/NRkh1NuwB2eDYuy1hS2Tu3O7c7tzu3O7c7tzu3O7c7txbYHr2aEojL4/u
DI7AY/3TxeEsKLyHBvR133y3xsALYKL0r4p4/tZBY0q6CaDRBRsRhGAUVyqwbCGoCwEFEgwE4BOR
ES1TUAAiAQ/HHCsc2pEiVsQaq0rCypcsksIeMkgX4hZopLqVZfb/AKfvTLZq9rTv1uWg0xVoV5uZ
genFZAdpVBMJ9eTFNwalCFf8EZavSW5cSFhuUGVgoY/im3zFWjlRJ3qNShbEZDp8EGx07Cq0QDKK
ScNTd9ORFQ/4X+6KSwhLJtzaAtCX+UiBJv32K7FUrLRqu1Y0qb3pUA7CmeAU9X+VbtI5bjd92/VN
saz5H0AQDnLgHIQ4gIASYa7O+fEfRNTzVbbCjNlToGarhZq2NhOkifm+JG0ORGq6i5ALr7txJIX7
jjQxkbhYV53QeQhCQxESiaklZdFWijnCwQQgKSm3cBWDDA/B2jmEQeYxKnhIBq10iZzpjDQGCVAJ
k4ivpCQgYAkV0ZPhW8iY6srBCiJib7ZpLWSRhcsk+9t6W4LoS6ECF3cHJvoDxuoryqtZkKQtDYjS
gm/OPktKItOsM4UjtYMmNsxqGeMnTpgjY3vMLDcGfwZNuCZuC2qyIG5g5ny+E5ny+E4LvdgM9ax1
nd/U7v6nd/U7v6nd/U7v6nd/U7v6iUKzLrm68v3W+KEWb4JLIFDE2DQWVJnvoXyPXdXnsQasumzq
b5eOKfLoKnatQBJcKYb7y/4AHC14NbyUyvpLED6AY61yXK1VoNnB9JlkDmW2VXZUIEcSEzr6uKHo
KW/GJAJTT9kpL9Krb4BvYiF1jtz27o8D8DoMvlaWEyk4jsfEcf5HhQHTGTVQGHYCYPn+Vwe4JAwU
sydnGHUYxp+3+TnWGgGIEkdSQz3Vgk/p/A6asPBq9+cEk5P2ZAKZU5QrFjDDCoKHVpHRxXWQCzAE
keEwlCOzwEAwwY/hQcAz73XlR6YFlSp7CgWdim4zdNxRdFllAP8Ab6P52TCjQBX2bwUreaWrPGt6
5srPJkou99VfLX9fhRlYxiaKVt8L3CsWHX4UVBiyQtxa0XbiKJLnLdNf1PmobYiXQlwkClcjIQht
RKDYxGpqiKyKsjhwgPTONT1rpRwJXCRWWdg4aFhitMswKrqepUUAIMjKVHU4hbrogLIeKY3rM4o5
JuyDLllSdXSZyzSajeWmjj07LHOe3dPPR89Hz0fPR89Hz0fPR89HUhRVQXLcjVqmjTzl4FYIBVCW
qipbhcyrt+ZiqgUzQFVDA3hIG5Rv6hl4ZUXZm/H4EYbf1OQNgM3LRCfg6ZEFnBdbbynky3wVtnLl
OihT96PYFAoAVEAAtVcAGVcBAwjks7lKOZa555NTLN/uEq2TECTwIFLVdoRG/EyaIrEDBZ40wURr
cEapyxSBkbwG6tFmoJsQbwBNirHWZRchDQyoLkNVF6GAA01Mg1qwYoC0EV2VasWpz7nxiNkyyvyz
HF0Kbrw39OQhhuxoSD6UYKQj4O0AL3pqDJ0DWg0ydSqYqEUOYTqiOr0Rz0xaAdgqH8OM2Cw5PtA7
OmIkSOZwoiQkdxXqvsIopWXPbbloyuWHqBVE36ulGWaoK5NdRA6zLB8bLxT6wGgIxZ9XNOxvnrZk
IIO/p85ttU4ImVNYC93+hCE9Nke2xgGgWK3sLwUpm033VxkbGTxNPDjdR0QKoBaCCQGhBBwdC40I
0QONG+XQo5bTsxMq668nIAptmqwSsMKa8WO/0iMXRB6a6MqzlnZJxksmod4W/QCvVXrj6Mphj7Zn
pKhXgw5IMeOdUv8AjOnGaZ1uq58vjuvIvs0TDKDNdqKcJGee2y+ry7jVr1/pNsjb1i/1BXmAUcAo
IV3rn273enurcTgEDJAkRhFlbU00tI5Ch7W9AMWToQYJhh19ewIOYyTBbziJK3OJ/TQQe/de23CH
G68WUVzkHIqGgTE8fptdyOJTuE+q2sxYGj5twvSi4vj0epbelW3Zfyhr7GdKH8qWrKOfXONgSdxm
To2skWiVazJSR/CT6ZnCArNBa6nPFr65yw2tYVRxRTAxqEMzdPvaqZ+0l2XttsLgernUEi2ZmFqZ
JxObS0BrUYYgb5McteCio+Q5xQs9JA+Zj4Cc5T0bB2U8z98nkok6zaPlUERrRDe110hnAP8AnJCm
rxhpgRwCU1KmAgKCEyHUS3lSq1ljqXAQVDygXWdeM9Q2qaUbI62djIgsyiwExBoo34q2aqbBVsUM
HdDj1ewty1qvwUtOyjugDADuOOTaQqhjoRNRbCA+zqiBI5KfW8R+SzJIUoW1Q8zFS20QgpsCv/vD
tOIi7V/tg1OUVr3OsmBM8sr8BG8XcbtEdWNF8IwgYGKjwn2vUUthFm6lGwtkz4J07z4eh8RsUsZc
VnREgWXDexXdwCovDzncXxqTNWCiwSUysOjvWp8LpCM2KTdWDppAMqIaYc4IANg4a1W2ZT855YhJ
IAIclAyadkkoN5Jy0TuCg3GNBYlMZFw74712gIvoWcxUZ3FrjwxQTLixeOG/hnKEI/kK/wDSwHtC
/wAirREwDyPW4e1aojbI3TsXRSC1Sud6ZxDqs9NheJFQFo5fYVKRNBO+t4HU1s/iqFqTzfs17jGQ
6oE8PWkN/wCAiJpDauEoin3oXD/0w7P12aWJaz2+xFb+oIQkJ3CZAECVZm2PeXrJZYngTBNLoUpV
McIbZCadBEmmAgyn0AH1nv2UiFlJ+D3kdhx9YTy8YK+GjXfRZnzW/ZvU8hRNwsSZgwyxGIgRaKmn
taiYRbnaB2mvWfCUTfLQq6998e11ecWD5iQilsEEXkH6gc+Rdx8oVBJOyvC/y5lwPC7Fx1imsI3Q
KUBjVlfmp5YnASGRmOi4BbJwMVS2Actws0gwKgY8Ro/wbXCClVJeAk5yC+XnCps2EmJzti+/gEBP
gnO9ZA6dW2ifqAPoZzbI/ph6CDxMimYUegz0E9pO/wCcw2E7U4fpULd/u0lmJ8GeFIfyzL+Kf5TD
ODURn/RgtyLTYr+ldXRsdTZUEsfUop95L0ddoDapimsjkpbd1YyqXtTeZZnBP+WdZAkv+bP+jnzo
skKVhOEP8GySkjJCUWG2H0WcXDZG9GPGOqbAyq2Hy6wzl4I93tUEW/yYHcEFINT+cHtSXUBRuVQS
QEO5MztoV3ACd7qw5lN6Zo3m0CCHgbxYDK4GhGZduzCjns/DqdEZzYDTfU/IA+vQiIGe9rN7wrvK
xkuiwMbLhg1zYFETShPzTeWIl9FpN6ITUSbFNkusQmiZPBkcvXKFmS7EcwMFBQ26YxS1uM67dU9V
vmjpNCdkV2LQYKqhoReNC5iYQG2aTgtOXBRYPkFArU6DRD9uXq4DdkdaGdr6fgVc4iWdwpkVs7nc
c+n7fFcY4OI0mVMjurIEZrYl8U8zG2gfKFz1+Xu66WbZbZxlvgSrgRjm6vEpsVhIZ5dVXq0Wcq0S
DDMh4BTC/mnfSBidbFxA3FaaYYj199wQlMvbtRioAuKzlaqeRw8TUt8moVrYCUYdAG9f/QNwuWaX
yqPxZ9CJESiug26GlioScKmPhJgOxq2xcDoWaVbwTc8FHiKOGEh3TTzLpjokkLWBFoL3aEUrUiGx
edwYw4wQoQlZothEiUCFmT0VR99sKZ9nclLbe4+8py5O4tTR7keg2bmrqvU+Qd56ZtarSrkHMQMX
fomwAqp9dVWWYXj2raJ8gUBkc1Gf8hGiAQzJJw4rawqBkTDM6hcx/bhOA5YD8nfM4r9JIqAIgYOG
maFIJm5z0X542vhy8Z71ptL5uPUIwDcn6GFeUzpz97VVdKd2xH8m+6ZOW5rliq+eJ5hC8ioNAoUf
QgYdy9OFeqzxmq8hihr/AGCAZDZ0n9JAE7NIw0d6xWfVbeb0gFTZ3oAdm7BVEbdqkloz9VLdxPDt
2EGX7VlJA8zQEugI6K0SyYH5PNzTaqMaKSxFDtEIWGyuH4yxshu7EWFLVDJ0XgBra4ySwRDZcvYj
KJfqT83cwvFOuovqCQYwvGjyERjUuLjSeiWi23I2LN0ZWffintwDJVmGpgEZWuLzF+Zm8ZUWSc2L
swR5wUD62kJajoIRCAg+3lIotWUKykRgba1pAdiS+0BX8eotg2OZ9q3bePE33hvrOGjKNlWEmm7g
ZFrw7A6B4CM9LeuAmMs0nhCbz+VRfefSAoD1CcATKqDHYoxZ1DT1v0EpRoVSlF1HAYBmvcQmuive
b0aJmHT1yxMpcPIjc43QOuRnMYppE/JKpTX5Yw0o4gBU72aRyZEf6OTJgFD4x7+agGF9jjWqXBkf
piSwMgUsrozysf1Lhnn8li8sRGBgASjFI4JnQE3SicZg3IdcyF7wNvoT8E4XzpLA0ZSRas5Joh0M
1gFqjMGHRBB3lDC/imcUR6AUZUNrpled4qBSL3Ik8BS93W3oRgKUv0SyMm/LE+MUEGSCmfMVOY0f
Lw71EErFwr1UrCrWTfIUEKHgEArnQsEbQiWvRuazf4zc+m07X4AvAJA62yAdXRIFWCEjTe59IZDo
fTvgXrSlhihrOXd22giaN3tg8jHvtC6m0zQDpb02qqhwIkz3Uek7u3BBBcHU66xHMAqLuadJubLA
zFWwp84VTuHLICpjny6t9j21BNeEqQaQpwNzQlq0zDGF/NJFoKiYbt2bFUa8Z7BB7yffpMhv66GS
fL9GqA7SyW3CgZ9iNsk99ZMgXV0/aaWgULuMsfssGzUj4n5nLaDyOJ1wN3EZL3NFXnRWtUdVi2xP
1YTGeTJcHpUXY7jpT9KCxA1WJCCBlvCOhaalgwGgc5QlVVwMtLaVs6gotEv0gSxLxxn3gdyvn2NA
3dMyS2yPuqiJTjyV3G/Ho7JbL/oIyNw01k5yxG8wBKACjPEMhdC4fRUoptlld8xixGyGqsUFtltM
8Npa3gRhyLwY1LtXEobwtWg1YzobnokQA0Sa9nUdbTJv0M4zATQ5LocVBH4mWYL0MOV7OPYuC4pD
LRQiLNr28hptLvQNOzXAcq2Pwy8/WX/NBBi5h15dnnyboEjjea9DkTeodrt/zftXX+yaDoe3+ObU
tMIlwdl0GJNoND7WP5UEklcIL8ToZgI9zHSLgzTCNwP5Yfsg8SO9txH4uizCzyQDWxxhta12hOEm
GdDZPTxD8ExorldjLHCMiHjcIZURqX5JU15b2QKd/wAs6SM2m1VoDqOPk8pHkUo2GrdjjZyTdJB3
iJah6bpMqzzccwS42DYwodkhtt3vx0h4vfedny7TdG8cf2XKYWoPwvGKOaBnjcazYO/TgEMgBttn
CJ5McZVvGwBKaXp/mEP0WyzMmJ5s8LK0VmdQQv3QaDoMRpOqQB8SlIbImk+t2eOdvx0ucsRG0HlE
NAmppWRT2IZB4htdOYVaWqwwEsi1eY+LbALYqgysIQp4ip6RvPfE5M7QaLkW1ISKZrRZ/wDKu9Kg
DXZvOuXednwD7EMkYcaB1qCmhION2yNqlH6Ot8sEhGqhthLSZYrnWtsjGqICLpK1mq1kiV9+WYLH
XHidDKs6bGhECWH1kmKJSKli4UglLoppNcGzSCvzFY4pBuJkKxX141KhET/HNqGnNg4JYZ/SRIMv
Gjw1OukdHowqc5DqntNnJkI529XTPUGVUQNgZ69dijYbYLsCG+gt6Q3YQeITJ9CUh3x8cBMd512Y
VC8ZbVoc2UG6JwrEqVH9XjkSt6f9L5BdOWrq3sCqLYktB5ddqwCy4kdrdQUHEtrop0Df6VLVj81S
G3IW4HzWVImFM/3ilbPLERtL4udkb0HQ9voVjSltIJgrUAEKaDSiVCMg2oYyArBvR+AVmi6k7Q49
kJrH2dMITYuRgIbuw6G6YtKZGN+UxVGM5NUaQPUVzCVzVK+oc8NIpe9gZHPEvTo/iDwM1SRFxsrD
LODf8yARib+C7CEznPRrdd9mppB92K629dg/Zxminiv8lPglgAQ6ula8D/jPNqI1IAJzmNpF5l58
2BwEEh/AOAC3x1xb+F8AT9PgHA3NT54gBHuvBzJhbwZB1jKUr675W2SFUc7v2JayAwRbXuOU0kFZ
koFUz8JH7MLf7jKR8bjucSrjJXKYiQXjto9IKaDhehqp2yVzm6FsklNSzACxCAN1GVumRzEXbEoR
yHq9DmjPRqF1bMekQUk02YSbDMYckGPHOqX/ACrW8ox+TD3B/L+WIjYDyyOkYWAMIO7gs02DwYti
fhn1IlC0Q9VJkQABKmU2zdEnIRsIipTWBS+yFtMZILcjn2SiKNroV/mahcoJiMohFneW+wa/vxNY
AnWMCyGZD+TNqEIYwotUQVGVVNm+2nTy7Wo4eWCwbhJGguLJr1RgQQMCwqMZjlfarQ9vsCPIoxhR
xvulhhUuAr6PI7KWWT2Z/GNF6/RGtD2UPl42ixPk++wn6TBusDjWwxm0vGVVUUKILt/uB83PttHV
lSaysX1BeSpcGCO5VyAqAIYWoCq8xhwGou2lClc3XTm1Ko+6NTWWOJEfFHj66MW8K1xlFVXaCxUY
qAozIgNUAaGgZFOjic6uWMVYYn1bjY2tDFgXo4pU82NqYTIrDmBRIEWAKEkSm3kUSmqmN5BEcoxC
UJnszCKEZslBMAixJhqnfET11AXXVVEFdVo4/NpLPcsRNE2z8Stkc2iWE3jhMF2HzQfEwGrWJi8K
IcIan7w2byuGHPQ+i7r5UL7Us63KkvrQ7rpsjdUYJaU4FKKky0LSnsd60tFsg11l7PCnEQRHAj+x
X/mIYxx1kiBLfbqaW6UBlHFTy3FdrsEUUjIhQNnw299aNRKj8rW9nlN1DrUOg8aUXBjnWR2/Plsn
JM9BGmTHTKpzOFKBKqxef9/IJ7FUjM9LfKG2GcQovn9GhluQBHyZ5ZhBC/rllKfvozIU/POqxynX
PYWBBSfUh1g3iBHnc5bKA1KdANUS7QaK6iQBw+I7FdY8y8aVagWv56W4t7bnY07JGzRBFmliWs9v
sRW/qCEJCdwmQHLESyi9ai+8PKYAUShYjN9Qxo1TZHCt0gwGK4Dmz2XHaf5DQxMo6vCcLYtOJ3hl
gh+JItm1yBWLg0h+AJMIqGX9eutkngLoQfWw07ads0SDso31a+SPGjHrlE/rWQcKWB6Adm0/E+UJ
OLTduCchSSb1Hj+xkCTP+TgxWm9xiuRTU4gTmsewJ7UntInXDIJENfhR9lRg5DYcnJJFu0tgdJP2
QHH48wi9CksBUCVRZTdPjYScIwyUpKMgKIGljEJ1I+cQ7BOUk9YH0UsrRknYNRgJPj6zDa003v34
YYjobShRwCnLvWtnDWmeJc/EF9gOCAUHwlpqDcvkbRkccAYxfl0JteoZG3L7vhRNm/p/MdEz1thl
NZHJS27qxlUvam8yzOCfy2dfLFLodAFYFBwK0nqHtsAoWtTNJvENVolhYEUgQ0UVLQUDWEQAAUBz
DVAlwoQNSspko5bsc6iPN3rvizYmeqJ3ESz6k7VwbYl8vu19K9Vd4lhTmn/QEt+2M/o4OB5OFHZ+
efQmeyvaq8nUMsGwGhwNq0/FlGZ9Mjmoz/kI0QCW4TSXgd9q8usNRrOPlAeztG+KR+J/880yS3NI
xLJZPkqVKvPSF5xHFjsgGwNHi5VH+AZAkpwt1zCogEg+Vxscc3c4SyhlN6YWvgbAzb92sWmnksBY
CSaihMnFj0peySNUscwh0QScmCzYY7Z828fi2h1AWkZ6v18g6ZczNcfM1NhoxyP1SGcqwLaU+CKd
Z9fHKkyPW/oKucTfVqIv++3I/dS+6Oq6mOo4CxfLuGMpkLY6o9fl7uulm2WnPF6CyVDwkwpg5gP3
OoEi9HvCA5O9HniN/wCjDCkCzAy2AIILDv6Q8jfiSuF3FzPyiX8RIa+WKoRqmwa68AVlcDEfUPbY
IjoBW3V0gtBctgtlXFrJTgFAqESgAkRQ6igTBSqtWC6qAlDCBZQfpALU6w7qmDKGqgIVxAdbrHHE
16E0+n+FBlKmkCbsIjhEd1uCqAI0YhvRSCcWh04fs14nUsShdaanySLVzlypqg/P4q9n8oQgdG6i
FwpUYyJfTqJsj+VMyQEeNEFFoZ3B5i9n5kFoxyH9J8KVHMYV0vn/AIq1/vq6w3TrEQJXYiv0LLsg
+AmQIoyVJcdVhMWVWAY5m3BDsA2Kb1OIr9zGfAb3xS1wBAPT+0UyxKiV7UyVlJFZX7g9ZlMIV1vp
ziUz2jqoLhkAh2OEmE4aoCfjGwCydt4XztuXbMSqTESCVJen/bR/MvXVqLYKK6JYUpda5/laZJpt
6KRS3HyVIEBOqEqyzdaygtfw+F5qupWIrkonb1siqM31OCE01BHGuJhsI1uwkh+//s5MsWQLEpmG
jw0YPun1PyqaEjliLgKQOCBufaINMiveFE3ONwsBEDzL0EIdMQrUUF/AEqp7dLIAFhQNROPLioWG
IguWSvaRSxqiYJ4bI1Dq16rZRVdEGaCWRSOwfbZPUm/gl2TAMEdLjuALyiQQkINOmLFWkdk+AiXX
j5rPRTjkV6Fh12AC9QyY0jNWnNuMN1akXIujenDsFmjJSdnDrqCaZRGIi/Tb+q8YvJKJFMj9yqtA
SvDIx/QoYb/H7k4plOACNZ9WRuBcWGrbofgI/wDU8XmjVSXFLpVh5Ukj+a/nL0Q8T0fQQJN++xXY
qlZaNTKTE+8ILZ1MSFSw1KU2UcUFOnlMJZHV1CUGgAoG2Av0psjm0zJc5X+T+zmNZBfXjG1+Gxpw
6tegdpSqV9STQolxsx9AOlchnfQccZ+cmIBT4UtEFSEUKiVsZ2yAMGx4Oz2ePQoW8q/MT3dAr0ue
ER2BfKFbmUeDCocoQgHyF59B+HYIGIqOngOKOBYswiMnF8IEKpnAls6b1VOR83ARF6rzRcMcFCq/
XZUWssFgQp30ApgHKs9LvcOS+/kuWIF1F61GzrWmGVNyDATaoG0IQVHTBL6BCg7EMhKewVQfroQW
ZXXFXWNCSabHfy97tHyIjJ/D3SFe/IEevWwQ46gZZu6e4yucEpFXSLTBtZD4beLll71c0bGGlC12
RupPYRz1P4ZiGpNM47RcIrpXIgWWL+v7kCmGwaueoS2MRrtYLtHRR2qjWyV2QnDEFQXSnKfXCibp
7eYELd0D9y+n+tLbEsYpOe3G/TpPKdnUGgy5LVcdvACuAyb5X6MIi2iRRXIHoQYxMBj1I/TECSOp
IZ7qwSf0/sf8n2Up0+wfZPkuIDJnn1adqm/JuZ0AlGkc/WppLqKf8IXPUMxjPKE0bqgZOFHZ8G1D
i7yMlW1MEhti2tqcRB9FVt68JWr6Oycss9Ffu3KOQHO+i6ZZ2xoDtBcJO6FzSelv1piTOl053ogP
MbGF2ibce/RRzi9dX5wfwj4YYhOj10JuM2CsVUbKFPMKZ8IMDCTneu7LGImKnuTjvDHhoA7vGJty
YoutAZSJ2lAQ+2SXthAC/kxfi+BR5Ysgcmi5ksLF+ACeIpxzZmAbM2JyfMYDOM8iqu2sL1EBniGV
wRFILcBqgYy5yQAiuMjmzm/1ObcikWxgaaQDIBlamJcNnIF84ylAPNdItpgTvvYmr0uslR1VxZut
PRggStRTDIKc4n2eCBJ4EClqu0IjfidMIE1RCtQcBALQ3YzBcCDIOqi0zPEMyjHyItAGx+Mj2mRb
I+b6qVO5SdjD6AhgnVQFhCtPHijRhNs8LFAfJgahcI5Y9DbMBsJdbpTUaergNbPihTGQ1L5cKC/F
K1dpCIopFpVJEgoC41SCAoaVgAg1FW1bRct8mOhP865Yo2BF69F9bWeodkg6zle8AN5+3IEiMIsr
ammlpHIaWZGi5+yGn9rM0ExAgfnyMnUpEI1GMSakpBRVIBwbbakZR0yWyO8C0Q8wRvD1Ece3ArCx
rE33/wDpKsBCSwwiUAMG4OkUgm3yBCZ3X2dLeMJsivrpXOUZ2TMJtRfcAriZaAFOE7RC5ASoLhWP
T85yxMVC6qC9SEoAU5QAcieQqdFff7sgSOSn1vEfksySMVv7B4tOJerDxxW7AQgD0fInSYhpkjFf
zwiqAvCDFamqJCAswSAtqJmRElV+Ti3qjOM+Pn+EQwEkhs0mMGff0nRwqAIHBhEzEFAkBWpYBcDb
0gWLeU8VJAAV+zlEtFRB0Y1giAxHu1ZpVxaBFF+1orfRgKUZUXUtyuxEDH83yxZi5CschyHEBxGS
eKO81iiFKtyttG84wDHDjf2+Y7leY45WYsybkiKWqrQZU0Ayq/8ANqm6WBfaA7VGwIzf1pdJdYru
UhKSLdTMpy/PMbWEiqyXzFlQraIhh+oS3ATaobts09ugtbHFdcNGYeSv23rNWfI8Jk4vA86Bl++O
Y1eHoNghv72pts+vLG1G4lZcAqpn/wD6KnW0kH0IsE7rD/bNEKvW7+36LJ0GQXS9kcLlFT4wVPuW
NWVLvszY+Uc9BUsdiFYSZfyn/WB9gp758Jy1M67Rlir924mG1hkdhUQ1yRgo4ofN0NWPOxQK7JWQ
ozSbQZVtKl3i1pXlKHKIe7SJMsfEhBsqwrmBwvI/kMUnLWAg/Ol2bvLyxIaU2opfGqEFAFZQBXWe
L1+88y6DMYWHX5GyeYPtkwEzUOop8o0mb2+pKapLD1H8QlygI+q8eOcBNqweoPUSbC8ra+WO4b1G
w/aAYEhCWACMjPN9K0Vi6Pobw6EiIN5lkn27KuEYWEJ5QJ0KQUBT31IHgV/AM7F5k1Fsd2yUpqvV
yFmhukQtjKDKMoi09xGkW/ysAaQtcvqgw2vYNRhYufxK3o7pu87HY71antpwPyWTrZV/CpN0rxG/
A14nto2ocI5ZZWOyIG1Lw5iU51bLyM0I8V+k/Py1LYxEDFjcxsv3XjdfJPh82lQM4NkobhFA/PsC
/wCAiHgcAAAAD8fyxX0DMWrXP7adK+9BeZd7CHiQac0Mv3pyy7WjuYd4JssRrUaVBqu2XKwwOcAL
LQ4BAtW6QogpTQmnkYR/ETssGpLEBwkJWbZsoZoqU48yAZV9d4mTWLsjZBlC/wCSJ7OyfoogfDtf
m6pkFwXQXDSIhAlWWKNghGkAKLrGregHsef53liqMC9AW1qNW0UFteVICgOh96eZciNDWVmpXQlX
5Fa/ayxt7/cio6l+2QMJnJGe90jT39wbOolywwYf0n7CJFMst/b5MArqSj9snJxWbCVfQuvt4pUM
lbSATGSgPlytRswfh5Q8MAs7e6HelQGs7NzoUKaU/vDNJZARp+C5Yk6Z40w95PnQbtHd94+ZeLWD
5OdOKauzjBs8j2aYHi1SkDIGTjvs1j+6UpRJIgC2xpmkIXV4kkrlkW1vrvn3B6VqeCzCFyjfWy6X
AuNPMATsFqEpAOdumYfWBhI5MjoAzYCUKhsXHnR370okEq8PdBvHmmRJ2A/OWvnMwYUi/BPSYgkM
2kltYYtToXPA8tjTcnwGtQhJPnQtNSwYDQOc+2YgASpoAFVdwGV3EwDp+B5YmIl1KFMeFF3d7uAB
jBhGE4IuO5Xi/d+ZaImis32StnhhLiOvROiwjZ7A0zRnCIsxva0RjoB7ufklegqInBe2+YgMslXa
bEO0vCc80dPWUVlPqOMdB5RR2EZbT7xG5dqJlma+h2raa7wwDDP5aBQ+5L2+IfERMtAWz76oneFa
wGbUsn3vqXXXYUhqCcnp7ZHcIaHphdluvItQfoZrEeDyo5hKHj7elhMwvIWKlCxRABRSglsCgiLP
S5Ii724spGyi318n4l7/ANPtrL6+TL6+T8S74+Inv9vSxAtgHIChRVg2Yznr9ObMKiYURa1Cw4BN
gpnVRu+ZaGN/T0v7vzLQ+5On1SWowlrCUHAXD9qdQUIDLWUFMqpe0VPsq27tIQ0k0qQNjbS4G3Fn
LVdnvCh0ZmhRzbrjrmWptvpkFINwhLrCJWhAif00sJdYVZKK7AVdPwXC7i00HI+M84F6etoZgSYo
6EqVGAlaigKgFKUyn+YKTtHLEpIURtSqb7xQcmoun02lKoRAvaZFrpsxVlbVbWhb95+ZaE3FCd6H
NvwJJ4obxARp0HoWdU1juzaCNjoKufBBS3OI3hnNFcSQsGsWw23Ry+Vs0zUyVlqOP4y+ylBZNfEx
b+a9/wBlO3tX7eb/ADqnK2KaLw2z4PbJGLpGzSXFr25LlVRe0YrNfLMxGCjg8H+8j7oRYfHTlB2t
8IliJrYiVx+95YrBMJIDgSKUDRZjVtsxnXBzaWjwF6DAXKsqpkgoOaEC9JhRjgfeHmW+X5pxQ+C3
g9qLu4wNuFWAqSjMSoX4mXtD0UKBYEOl5bbFOQWk68HSHi/DBFiAWart0bZbcsjKuAsd8tWUTMak
oFdw2sipOeSMcpw6iRHkdNZgCoMYZgDQgDSmiyIFGKVVDWV29YdNS09IVfzpU4jVJhRaq1xTZ+6K
TAHCAtDIVrwTCC63RIIfecsQcAX1YlTOK1dES9/0ISQKFqBZO3FiWoC1CFdcbxbjz4SxUXr0X1/v
PMtfP03IRfJ5VsQAzhY1sSvigBslcA0Ro0eNfU5pDC1Xfpr070edD0GeXN8cNAlaTekM8Xiyfkcx
Luk4/mn0AftynUdlnQldX7BawC5g5YSVoY+FBcWbTrCefKyX4QChtDtAXahLMqCnvYyyfjq7Nuc3
dwVjgCYFlHX2d4X3NHb8aBPkQvk6623Gc9UQHFLNPThZBQLJeqAhw4xYPzOM7+0qaBc+lpksLAKN
RoLKOVLKIAHQxAOAoDoGCqNfveWKx0b210HlLHEURESn76KLr/MtsPohNDQTzfeWLAgobQbIe5TK
JCyc0RMAFA5BijTAla00TRDEM/b2OFUgDRgJQ0InPqBQHsBdQYbGaDNK1W/JxqUSZYjalZJontl8
7M23UC0f8vsnSJEriNb6fzbf0jYN8gpyxOngxsIUpiAtGNjzal7fn/8A0lhP12xLeT7elB0Lpk0P
txFWpyqTli6kv5jgCumzjzk7Dm0WfwT/AGgouDrpwa8d/vG1pFMJh3XS7mm+YhCjRgbsqq1vSuek
EQREQRGxHIiYRNH7vliKtZcTvWpvZHLoVw739dqgWoBquA8ZkTkKhzMg4ApKFKJpfBCTeC4p+78y
02dDNAGFv9BxrrdGGiGqY+bhnTUJHCQ0aAwactKeLSvGv0fziOIlNLYUM7JBgpzONiRtrc4DIIkT
3o187sWZQsWroyBymbcT/R6x0dEc+VLeLVh/Rskc7rh8p/BkjWv4oo/+LDlKhxGoMIpExwlX3qiT
vz7Ezj8pI16o45w9sPTTbThuTH2YPW1f3knGBt0mInDj8fI+1wlKLDS8Gsuv/YygNCpaOugoASkh
jbSCmGAvVlt11ripsYYFAFApbbQAXgrZfXyZfXyd/fhvl907Frj5L7R8fQ0f5c9PtMQpDHKkbqmk
xdUlN2403TUNpqo7qWtSLW0o21UalRKrS3QaMVgsgtoMXBiDFAxRjyRMTS8+9/MuRGhrKzUroTj5
9LB6IZgaobhVLj4cPJQ/cTXWyTxct6J1RLT5MCeIF59kL3jPVyqtAhIAhFTOcPO8stknDq8A8T+J
2MqOvomi27fJZ2WcRdISLOSdKzUIVr6o3Pe1gxDwtJQF1QLTEb3Gp7yOrYn0GUNV0Yzd5D9Cgg5a
bf5kJmMYxfLGJnYR/PMZtLvUjH5QadOOJFTGGHp5YjOwSEAwSgWQqUIvqrhm5f3j5l4tYPk504pq
7PHus0g90MYs0mw/VMWBNmlocIE9jnl0sqQhW297II/Un2NBU/r0pEZPHPOxJbgQUqLFq4oGo8MN
Kp1nEvLcmeLL7XC/wg5yQhUH9IG5Bsz3L794zHY6qGUy5/CcLeNGYw5wkgBVCimAsC+5s4nmTXT7
3liZWV9LukNVuQa8yvpQiC6iG6uFLN+H7z8y0RNFZvslbPDCiy8AEr2I4JLhopRZk1lZehZsUQbN
cDzGmIgQvZCjjTBoTDZKOItwKZ/8aXQUeBDy9PrRZ450DnUvhVXYLnN/+z3srYUIFb/58RNgTujd
AoDM35YugaJ/zZlxeFV1wnImkJD5fui8rrVcUrvr9MMAcPveWK4EUSlDmR0thxZsWWPoydlWLR45
oypN975X7+88yxZ2XNSmaA8gZhTBVPpB/rmAgJbTkYfjSS7ZEEZStjB3koJv2U5F9BjLiIJsyJTj
nATTri0g96HYCAmEUM0C10QBDvQgXIRl+KfGpAaYcdh5tU+tSBpBRJBAoaHtmnIya4DVM4hiUkEO
iw2is2SxvrTx/wDdFDn6NAAMw8n2qk5DfQpoC2oQMUfm9ULQpd5F7I/qZS2tdoqhwAoULAwQcfzr
AdiZbUOU2sEAqxSA7QNPMCBtwaDIaiIWnQFQpjhgddK9e9dOZeujXBTde2/lvxLe4Op29SX3lt9V
e8vw7HOKhqleJx9cGvZn7PETZhuM51FBkWQZ9KtKAvBBCjwJ3xIUsxfo/eHmWtXGJHkVDnEOken2
2blqbT4UStCAUANt144qFGx7TPrDqwZw8KR2s3hrNg43iRvz09GY/W9Oe6jk7bpXYLmYkeIqr8OK
9DpdW8d8YHI5Uq0djgDGq5JyIRVOfpo0Nsx+QV+cK0unMtLQxfrP9Zhb8rbbU45jxCZML1ec7T8T
NQq9kdPPL/dt+59QqqBEEGkiBmv3XQgaJ5uxPbDHvuM6e+EZz1y+x9hAejsLfmYy5dtji8olp/aN
3qkKWrtehxMUg10pgpFxcrOgvg4dptguq+NlkudrHnwIg5eA/F+PlEVj9VaErXm6wYAb/eMjeWKw
imWzQxWcAzVA26CVWav3g+ZZzkYVq3Gc5CSMT2CShp0TEsFRYWjKXqNBlcMksj7+CXOmanFpqQQi
KME8Hvh3MZhHCFpRVsvCFGbm2xl4/fmEQtoSTa8DlsBoC2GqejCXF+YPjUX2wZRYtkyz0qE+obpo
aLua0F7qsUZOoJ3NgxfCSJxkwC0AwZqoYLLpYfoU2oBBNl54OZTFGrJR/wCzL7Ir6+T8bLv+J7yn
DsHDvXSWc/J+PovunvvmS+ul6Pd8tZZrnho+1X46S92fJ96r7XliyVYvARfLXcy+vk/EUOPgnsQb
0vxE9wl9ccnt8I5KOjAmWsGoCGRTKV8ftxdV/ZoekFB3rn7rzLCkasnhEiUhU6ZYvD+8QaUVVeKs
D/d4HjFjS07k+5zNDGk5K8mutdnuTFUBqgx/s/bSpRW4BI+O7AYY6DH26rEEHEmZXzIdU7W4+CXY
rhy05PnM65pS+qWE5ZUPcvcpbmpf1IMe2HPWMdSJPMSnR06q/phtlApstsSskCczu6UPm5flfLKr
N0Fw2JSaafWxUHMKlQfhEZBad5YjRgWlqMAJiXG5UD6FfgQaLIIhijWSkTXDAlqYvHb4axWO9/3X
mXQZjCw6/I2TzCzvGSttkEElZlB30vlJSm64jrHKPLMawqeI9iIU202wVYjgUwRSLeH51yqIbYgB
OLCWlKYY2UNAcjI+m8MeCcdLLwwIN9LFPaWE7Moe544ZBJN3y3iNXGosSDvJUpgrlUihaQAlvv5h
HHs8o3QKisqrR8rQwG18PbEXlQn6WX8ERAaO0+dy7UQxpf8AQRkbhprJzlixBEbCw6QyCaMjFaPo
LBJLJ4snq4JwlGOrp9/xvYaePufuvMu9hDxINOaGX7qhcBpM+QxoKm3pZYN40Oygyo89wpsM5cK9
1lQPoLBIoZK4T6xiGfAYmfosOr3NFOQuZHnVtqLDZkgA0ne+1CfU1h0tMhmCn8imHhvXFQSVGUxw
lYUUqH/i35El6bZsNOw+BOKp6pAA3HHxIsi8+w3yCv5ZilbnnliZFby2FWp23EtZRgfSpg4QLHQu
oq8I2u6nEbs4/b7v3fmXIjQ1lZqV0JBWuDpNEZxuqzUGBPoyb5iHMOApegUJE2MJeKNe+yC75myP
9kpxDngcCblC1YW5O2W4eLUkLm2nrBdTXpyPi9aHuIQdFC/cv918NGyvlm35E3P+vAzrN/5qShJP
URDv95KlIVn3WdZ1ITyr4S4R8VEpO2W4dP4vMOGprwn9A+YPomawNeGuvKWcTz2WGrUs4ks4nnLO
J5n23LFlxyuvO9O/OKGqHWZKpfCy4I5GzibCUGbR8O+PB+9zRZrf6Fer975l7brnzIdjBjUK2/hD
HfycYiehG90argselQrlAQVQeqBbJrgYM6EIzZtEI7AZEuKPWc6cjB2nHWaKVJ4ULF3y0FATnwqz
osUSDAp4A2+htyNtMDvsbqwbN7D6IyZUcdv8eIiOOxVmoZ1a0eRL+NVOBiuVHljtHJCJKWF7bmJT
ghNuFfkSAn/CsFcBmLE2Kcpw2VyS4qGMcbz8dsrPhRe3C01ytEKtUh5HwEyk+kZG6sajCRdnFkVi
MhcOEGypyJRYTzTvJrViiDIwQ5kIdw2TPFY0SbdjNeK8QFwpLfQDoR0C1MEt/wAeROWIF2L8bQ/R
5yp9/o6Xf9+78y7iCe0lBFTms7G5HT8d84MQkDp5V/7JuUYzKn8+SRgL038NQc95kbhF7BadwRUz
f0t0yBVtDEyj5S2xXSslq/1Ruzg6+s5ZIhU4n8BzRmbpxijJ5+0lSa+wMMSpSrnq3wCacz9f9iag
MBcx6MCB4uyaochdB1EwHJST+rXGIKWdhBXsv2pDmQBaoLvZ/ofYc92bbxhCvRjSQY4SfttiSBlQ
NoEidkDWqy9uRsVG1uHMCSMyU+iLoC+xLvuUtKMrgx9mHxQtYk4PwbAi95DAEHkkOV2N7Hc4xubb
V0hkZS0JNptqNMgCuaf48fLFRL8AXY67q86UNXf2+ndTQ9H2mg6Ht915ligA8t2OqEdSlSqltrAI
vJihtSmAooySQtmvAYZbTGiljKrWq+TRkFJSA/MvGWhdx1QpmXediJPgwBImfCgL59KY+kESLO1X
cROcjwy2AucOh747XUnHTYO4XFb55FQeLsJ6e5H5ioBUmXCqUKyYXWki5tHvSXo9i69H4Kkvg4EF
coDrObSgjCVAIzx53zSSX7wSf2Ntn1Iy+wfYpJcXyVlh+awtkz6aO89aWZKzG429u5/O/wCZHDdk
Ezo912lGbXaBgu8t8eJnlMvNtvme9hgudHSel9qFBwMOrctUszKA3FGilzbXMDxSfUjW81RT7NGL
6nZuIbrugVRkMynSZUyK6sgBmtiQr8rMicKOmDkbzGD/AFBiaktaoDj+uCXD8LUJNsjk7yZbBDA0
PSAT8tdw65YmxgEFDfNJbet4azqHJxqOh6PtNB0Pb7zzLTIslhBzHCBVqMkw6Lr32XPUYcmr5JY6
c1yHbq6nQB6SDpRwCnbCAZGp9YBBeGhhVPtJB72DI21+cKq79uMseEwHgQjAXO+CkOWjAIMkzcmP
Hmbf2GRbJpYoRJa+xkY4t1PXV4YWtLc3Z/a97MqlS8T4SlKUdFH4HBELv8Jf9FnJS462j9aF+4D0
LCftDReJ5ni0o5+P9n6IN2aZVcg3gJUlflNAqrXKLBZ9jt/lP4Yk0oVFLSERgksSXI0AedB7Yfzx
qhFfxTIyQqpwDltidpUvbdmJYz3rp+NqNSNJ4QSroLtlTW1H/insme0wlKPFMsZlavTikqyRc1bQ
hoqCjbY5KD++c/thcL9nK6BBY2CQkch7Yof9HQI9iNST3OmPpDcUZuAM7wK13uzOO3sQoN30XdIV
e2k7lnvhw4LHIPSRLxS6pYnCEbg2BLCa40lxIZ6qNKRCC94ajShX77liaU4iDJ/E+Spoej7TQdD2
+88y0yLJYQcxwgVajJUVJZA7nLI0WiOpSKaBQ2ywQMqoGNu2fpVbOyWo5WEEAy5NQwjIo8O5BXIW
JIKrNIkaCm20SX4IM4NwKmCgGxNUR01neCFzuhQheRcQnY6eciEKqhkloBQAvzQsAPzvLE0NLW5P
Xjo9GGh0PvPMsKVo2wlynAHWFFMAYAQ6xAkPbjJihPmmyd4ThefUBcokHbhi3BSWS4YsKRqrxcrr
4c49ge1TCKsIMAgw5B7Gu2a28r4yO8qltP8AT/bKZ0XmEWrIyxCPQ78ngIRdTCfo2menBC/mCs9I
7bKGqvmF8uWpyUPvVtj8eiFN6Am0VweWIBaBdgiWAs3ghqBHI/RZ/dUaprrBngN8iIZhF3YSnr7f
syHQ+3zXK7ydDDQUiN2FBhD1AQ1wettwA1zq25+l0x6hUtFgkSIOLtoHWB1GUYqVmoMpiUABwh9p
ouIF2uihYAGhIC0rFiIHL4oExoG6YguFEu89k0m1vS6m2ixM0p37uqFDFXGMfNZDUTRTekikLXu6
UkOiQk7lNC9KADsD7Y4UBiGIQi4g4hOQTErKXxA2t4NqU8V7E560lrRjtJjc/m+/gmu8oPynLEFc
dVyrq3vvGcGgYKAPodaDFBcnjXTym51Dm4uSBAaRUapTtz9Ukbo2WyFOI7Zq/Z7RZpCf4VixYsWL
FjTiBKAE6luNSpSiPU8ATrtHgUGv8LFixYsWLBGkQEPNq7BqOBEQDHa3ClImqLuhmQhOLN4IAq0s
utaNuGv/ABurliAglkPnKjpMOidGoYmChAEEWKMlsD0HJA9htgxwOH0GQyrcfWuXLly5cuGoS1Fv
UuQTT6UcHMzgKTxIs/WuXLly5cuFi1GA6XROtukwBBnAIKEIFqwGi2iqw0NF+IWeFTBaT7yYzzQz
g8xQCigBr6U/8cbq5YkKFuNFQN0c3cSNwvdyvDAgBRDcKG+s1tyg5Bhk3mfRwnzzhVl/g8CBAgQI
EC/bsQZNBKVGylooAb0Ycog3CoGGoCPrAgQIECBArJaHW8S54VA2nPI7aUCyqMBLU314NXxuU8QB
4og4xrqeZUKUebgZG2SogXGh9UFEjWw/Jgfx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePH
jx48ePHjx48ePHjxE4AstB4NYwVFCDX4W3Z/cIJg6/Hjx48ePHjx48ePHjx48ePHjx48aH/clu8l
D/BnptsviYKwERMGrf8A4gePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx48ePHjx
48ePHjx48ePHjx48ePHjx48ePHjx49W4cZnoJicTBWfsQ8ePHjx48ePHjx48ePHi/DjM9LMTgYKz
/kHjx48ePHjx4B3AYzwcIABESPNbsuDFBVFVVVZY8mpRfX1/8T6v9j+j/wCeaaUNRMA/l3dvBAh2
ExX4Ob9fX7qbEeokRfJk0SXLlMknAPCBu3bhAgQT2/x7detdv8e3XrXb/Ht1612/x7detcrv9+vW
tv7w52xx79etdx8e/XrXbHHv1612xx79etdz9/nrW0qZu5f0+FChS/L/ALu3XrX2gQI3btwACckT
JrTlzatOXOvWFouK3sjw95lOgd6+7Yq7zlwav1LLnQEdBUHbqyNDA/jAuf8AREs+2qw/DxXnOwgc
/M2V9Hm/B5bh76/RdQRdH5rh403HfNDV8BrwocTp4xUHOT53j9NL+qN08R6OLYyqYQqgaNuHUNgF
3+pVL5p5xHXFso00kUAa7TJoUebTbOifM2gQIv7Q0DYRFQlkTCt4dmVrfbYSKzUELp1VxQ1QoENd
r9/jpewQv7G4fs+XP/C3mejTIwK3XrG48e1ef3J4hpCAHYj3JAAAFrFa/cDiJ/ibSgIF+ruNU8cr
yr2Jq/c+avNOHHY7FVPpz+B5+mzl3J217cdh99e3HcXbXtx9lQ3Hd0kR0DNdOs8eJ8OBMnhemey4
B3+uu0+YAIFris5dUH3xEStAwatSzRS53ppMRH8WeodMQUrta8Mvm6518GWBLKbSODd0vc45Rwfw
bXS7tvI6wIovAKqvGK54/wDJycXKZod5cXm5pSY6/TrzOeNC7gXNZb+NtP3pNzHF0929ryxpKZ5q
TvunHf6aUa5x/wBNdTW9+7PAVCrgGelc78e0Vzg5tkzuvi5mvHTnciweq/PXpGauuK9891nWlcGd
d3c/prHVfXcziu75R2vWJx48no8c64nV+P6+uksKaEpMCcOTTGnLGe0O2nZnUVrT2I89ZSAF0Brn
eBuzwKqLWZvEyt+eORpU1wmvXLZCnMvAfThUryU0P0bxpjOBquLSp85rRxvKP32eAiL9lrYojNel
/9k=

------=_NextPart_000_05D4_01CCD7BE.591C80A0
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

------=_NextPart_000_05D4_01CCD7BE.591C80A0--



From xen-devel-bounces@lists.xensource.com Wed Feb 01 10:13:16 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Feb 2012 10:13:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RsXBj-0002ft-LQ; Wed, 01 Feb 2012 10:13:15 +0000
Received: from mail27.messagelabs.com ([193.109.254.147])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1RpzUe-0007wi-1h
	for xen-devel@lists.xensource.com; Wed, 25 Jan 2012 09:50:17 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-11.tower-27.messagelabs.com!1327484989!50156705!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22977 invoked from network); 25 Jan 2012 09:49:49 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-11.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Jan 2012 09:49:49 -0000
Received: by wibhm2 with SMTP id hm2so4744738wib.30
	for <xen-devel@lists.xensource.com>;
	Wed, 25 Jan 2012 01:50:11 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:content-transfer-encoding:subject
	:x-mercurial-node:message-id:user-agent:date:from:to;
	bh=51A2ebY6gr7L9rWQgJMuwZUXP9WRAxeMHeavbb4doaE=;
	b=SxPMmZqPOyO54bYXFKJTsyQkS5sIIofzAt7v9v4iOIue8Px8GSNXI4M9H3uFqJn7W1
	0dczbYU+iFxbBdnkqUhDL8rcswWfVXy0nNBqWZoIxjPDEw89X2BkuQnBAB6I3jggsdCe
	ZOVbqtrXPh0cQlOCYDpG9XEBz/fuXXY4/7ntM=
Received: by 10.180.83.104 with SMTP id p8mr9929061wiy.4.1327485010923;
	Wed, 25 Jan 2012 01:50:10 -0800 (PST)
Received: from debian.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id di5sm61824275wib.3.2012.01.25.01.50.07
	(version=TLSv1/SSLv3 cipher=OTHER);
	Wed, 25 Jan 2012 01:50:08 -0800 (PST)
MIME-Version: 1.0
X-Mercurial-Node: 6fde017c419e70925f15eb00e8266107011e21cb
Message-Id: <6fde017c419e70925f15.1326761318@debian.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Tue, 17 Jan 2012 01:48:38 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xensource.com
X-Mailman-Approved-At: Wed, 01 Feb 2012 10:12:42 +0000
Subject: [Xen-devel] [PATCH v4] build: add autoconf to replace custom checks
	in tools/check
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI2MjE5MTgxIC0zNjAwCiMgTm9kZSBJRCA2ZmRlMDE3YzQx
OWU3MDkyNWYxNWViMDBlODI2NjEwNzAxMWUyMWNiCiMgUGFyZW50ICA1YjI2NzZhYzEzMjE4OTUx
Njk4YzQ5ZmEwMzUwZjJhYzQ4MjIwZjNkCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwKY29uZmlnL1Rvb2xzLm1rIGFuZCB0b29scy9jb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMg
aW5jbHVkZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRp
b25zIHByZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBh
c3NpbmcKcGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBl
eGVjdXRpbmcgY29uZmlndXJlCnNjcmlwdC4KCnRvb2xzL2NvbmZpZy5oIGlzIHN0aWxsIG5vdCB1
c2VkIGFueXdoZXJlLCBhbmQgaXMgYXV0b21hdGljYWxseQpjcmVhdGVkIGJ5IGF1dG9oZWFkZXIs
IGFsdG91Z2ggdGhpcyBtaWdoIGNoYW5nZSB3aGVuIHdlIHN0YXJ0IHRvCmluY2x1ZGUgdGhpcyBm
aWxlLgoKSnVzdCBhIGZpcnN0IHJlbGVhc2UsIGFuZCBzaW5jZSBpdCdzIG15IGZpcnN0IGF1dG9j
b25mIHNjcmlwdCBJIGd1ZXNzCnRoZXJlIHdpbGwgYmUgbWFueSB0aGluZ3MgdG8gcG9saXNoIGhl
cmUuLi4gUGxlYXNlIHJldmlldyBhbmQgY29tbWVudC4KCkNoYW5nZXMgc2luY2UgdjM6CgogKiBD
b3BpZWQgY29uZmlnLnN1YiBhbmQgY29uZmlnLmd1ZXNzIGZyb20gYXV0b21ha2UgdmVyc2lvbiAx
LjExLjEKICAgcHJlc2VudCBpbiBEZWJpYW4gc3RhYmxlICg2LjAuMykuCgpDaGFuZ2VzIHNpbmNl
IHYyOgoKICogQ2hhbmdlZCBvcmRlciBvZiBjb25maWcvVG9vbHMubWsgaW5jbHVkZS4KCiAqIEFk
ZGVkICItZSIgdG8gYXV0b2dlbi5zaCBzaGViYW5nLgoKICogQWRkZWQgbmVjZXNzYXJ5IGZpbGVz
IChjb25maWcuKikgYW5kIG91dHB1dCBmcm9tIEF1dG9oZWFkZXIgYW5kCiAgIEF1dG9jb25mLgoK
ICogUmVtb3ZlZCBBdXRvY29uZiBmcm9tIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgdXBkYXRlZCBS
RUFETUUuCgpDaGFuZ2VzIHNpbmNlIHYxOgoKICogTW92ZWQgYXV0b2NvbmYgc3R1ZmYgaW5zaWRl
IHRvb2xzIGZvbGRlci4KCiAqIEFkZCBNYWtlZmlsZSBydWxlcyBmb3IgY2xlYW5pbmcuCgogKiBS
ZW1vdmVkIEF1dG9tYWtlIGRlcGVuZGVuY3kuCgogKiBDcmVhdGUgYXV0b2dlbi5zaCB0byBhdXRv
bWF0aWNhbGx5IGNyZWF0ZSBjb25maWd1cmUgc2NyaXB0IHdoZW4KICAgYnVpbGRpbmcgZnJvbSBz
b3VyY2UgcmVwb3NpdG9yeS4KCiAqIENhY2hlZCB2YWx1ZXMgb2Ygb3B0aW9ucyBwYXNzZWQgZnJv
bSBjb21tYW5kIGxpbmUuCgogKiBBZGQgbmVjZXNzYXJ5IGlnbm9yZXMgdG8gLmhnaWdub3JlLgoK
ICogQWRkZWQgQXV0b2NvbmYgdG8gdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzLgoKICogQ2hhbmdl
ZCBoeXBlbiB0byB1bmRlcnNjb3JlIGluIFhNTDIgYW5kIENVUkwgdmFyaWFibGUgbmFtZXMuCgog
KiBBZGRlZCBzY3JpcHQgdG8gZ2V0IHZlcnNpb24gZnJvbSB4ZW4vTWFrZWZpbGUuCgogKiBTZXQg
T2NhbWwgdG9vbHMgdG8gb3B0aW9uYWwuCgogKiBBZGRlZCBwcm9jZWRlbmNlIG9mIG00L29jYW1s
Lm00LgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAZW50ZWwudXBj
LmVkdT4KCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSAuaGdpZ25vcmUKLS0t
IGEvLmhnaWdub3JlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi8uaGdpZ25v
cmUJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0zMDgsNiArMzA4LDEyIEBACiBe
dG9vbHMvb2NhbWwvbGlicy94bC94ZW5saWdodFwubWwkCiBedG9vbHMvb2NhbWwvbGlicy94bC94
ZW5saWdodFwubWxpJAogXnRvb2xzL29jYW1sL3hlbnN0b3JlZC9veGVuc3RvcmVkJAorXnRvb2xz
L2F1dG9tNHRlXC5jYWNoZSQKK150b29scy9jb25maWdcLmgkCitedG9vbHMvY29uZmlnXC5sb2ck
CitedG9vbHMvY29uZmlnXC5zdGF0dXMkCitedG9vbHMvY29uZmlnXC5jYWNoZSQKK15jb25maWcv
VG9vbHNcLm1rJAogXnhlbi9cLmJhbm5lci4qJAogXnhlbi9CTE9HJAogXnhlbi9TeXN0ZW0ubWFw
JApkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgQ29uZmlnLm1rCi0tLSBhL0Nv
bmZpZy5tawlNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIGIvQ29uZmlnLm1rCVR1
ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtNzAsOSArNzAsNiBAQCBFWFRSQV9JTkNM
VURFUyArPSAkKEVYVFJBX1BSRUZJWCkvaW5jbHVkCiBFWFRSQV9MSUIgKz0gJChFWFRSQV9QUkVG
SVgpLyQoTElCTEVBRkRJUikKIGVuZGlmCiAKLUJJU09OCT89IGJpc29uCi1GTEVYCT89IGZsZXgK
LQogUFlUSE9OICAgICAgPz0gcHl0aG9uCiBQWVRIT05fUFJFRklYX0FSRyA/PSAtLXByZWZpeD0i
JChQUkVGSVgpIgogIyBUaGUgYWJvdmUgcmVxdWlyZXMgdGhhdCBQUkVGSVggY29udGFpbnMgKm5v
IHNwYWNlcyouIFRoaXMgdmFyaWFibGUgaXMgaGVyZQpAQCAtMTc1LDIyICsxNzIsOSBAQCBDRkxB
R1MgKz0gJChmb3JlYWNoIGksICQoUFJFUEVORF9JTkNMVURFCiBBUFBFTkRfTERGTEFHUyArPSAk
KGZvcmVhY2ggaSwgJChBUFBFTkRfTElCKSwgLUwkKGkpKQogQVBQRU5EX0NGTEFHUyArPSAkKGZv
cmVhY2ggaSwgJChBUFBFTkRfSU5DTFVERVMpLCAtSSQoaSkpCiAKLUNIRUNLX0xJQiA9ICQoRVhU
UkFfTElCKSAkKFBSRVBFTkRfTElCKSAkKEFQUEVORF9MSUIpCi1DSEVDS19JTkNMVURFUyA9ICQo
RVhUUkFfSU5DTFVERVMpICQoUFJFUEVORF9JTkNMVURFUykgJChBUFBFTkRfSU5DTFVERVMpCi0K
IEVNQkVEREVEX0VYVFJBX0NGTEFHUyA6PSAtbm9waWUgLWZuby1zdGFjay1wcm90ZWN0b3IgLWZu
by1zdGFjay1wcm90ZWN0b3ItYWxsCiBFTUJFRERFRF9FWFRSQV9DRkxBR1MgKz0gLWZuby1leGNl
cHRpb25zCiAKLSMgRW5hYmxlIFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNr
KS4KLVhTTV9FTkFCTEUgPz0gbgotRkxBU0tfRU5BQkxFID89ICQoWFNNX0VOQUJMRSkKLQotIyBE
b3dubG9hZCBHSVQgcmVwb3NpdG9yaWVzIHZpYSBIVFRQIG9yIEdJVCdzIG93biBwcm90b2NvbD8K
LSMgR0lUJ3MgcHJvdG9jb2wgaXMgZmFzdGVyIGFuZCBtb3JlIHJvYnVzdCwgd2hlbiBpdCB3b3Jr
cyBhdCBhbGwgKGZpcmV3YWxscwotIyBtYXkgYmxvY2sgaXQpLiBXZSBtYWtlIGl0IHRoZSBkZWZh
dWx0LCBidXQgaWYgeW91ciBHSVQgcmVwb3NpdG9yeSBkb3dubG9hZHMKLSMgZmFpbCBvciBoYW5n
LCBwbGVhc2Ugc3BlY2lmeSBHSVRfSFRUUD15IGluIHlvdXIgZW52aXJvbm1lbnQuCi1HSVRfSFRU
UCA/PSBuCi0KIFhFTl9FWFRGSUxFU19VUkw9aHR0cDovL3hlbmJpdHMueGVuc291cmNlLmNvbS94
ZW4tZXh0ZmlsZXMKICMgQWxsIHRoZSBmaWxlcyBhdCB0aGF0IGxvY2F0aW9uIHdlcmUgZG93bmxv
YWRlZCBmcm9tIGVsc2V3aGVyZSBvbgogIyB0aGUgaW50ZXJuZXQuICBUaGUgb3JpZ2luYWwgZG93
bmxvYWQgVVJMIGlzIHByZXNlcnZlZCBhcyBhIGNvbW1lbnQKQEAgLTIyMiwxNyArMjA2LDMgQEAg
UUVNVV9UQUcgPz0gYmIzNmQ2MzJlNGNhYmY0Nzg4MmFkZmYwN2E0NQogIyBOb3RlIHRoYXQgdXNp
bmcgU2VhQklPUyByZXF1aXJlcyB0aGUgdXNlIHRoZSB1cHN0cmVhbSBxZW11IGFzIHRoZQogIyBk
ZXZpY2UgbW9kZWwuCiBTRUFCSU9TX0RJUiA/PSAKLQotIyBPcHRpb25hbCBjb21wb25lbnRzCi1Y
RU5TVEFUX1hFTlRPUCAgICAgPz0geQotVlRQTV9UT09MUyAgICAgICAgID89IG4KLUxJQlhFTkFQ
SV9CSU5ESU5HUyA/PSBuCi1QWVRIT05fVE9PTFMgICAgICAgPz0geQotT0NBTUxfVE9PTFMgICAg
ICAgID89IHkKLUNPTkZJR19NSU5JVEVSTSAgICA/PSBuCi1DT05GSUdfTE9NT1VOVCAgICAgPz0g
bgotQ09ORklHX1NZU1RFTV9MSUJBSU8gPz0geQotCi1pZmVxICgkKE9DQU1MX1RPT0xTKSx5KQot
T0NBTUxfVE9PTFMgOj0gJChzaGVsbCBvY2FtbG9wdCAtdiA+IC9kZXYvbnVsbCAyPiYxICYmIGVj
aG8gInkiIHx8IGVjaG8gIm4iKQotZW5kaWYKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAx
N2M0MTllIE1ha2VmaWxlCi0tLSBhL01ha2VmaWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiAr
MDEwMAorKysgYi9NYWtlZmlsZQlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTQw
LDExICs0MCw5IEBAIGRpc3Q6IERFU1RESVI9JChESVNURElSKS9pbnN0YWxsCiBkaXN0OiBkaXN0
LXhlbiBkaXN0LWtlcm5lbHMgZGlzdC10b29scyBkaXN0LXN0dWJkb20gZGlzdC1kb2NzIGRpc3Qt
bWlzYwogCiBkaXN0LW1pc2M6Ci0JJChJTlNUQUxMX0RJUikgJChESVNURElSKS9jaGVjawogCSQo
SU5TVEFMTF9EQVRBKSAuL0NPUFlJTkcgJChESVNURElSKQogCSQoSU5TVEFMTF9EQVRBKSAuL1JF
QURNRSAkKERJU1RESVIpCiAJJChJTlNUQUxMX1BST0cpIC4vaW5zdGFsbC5zaCAkKERJU1RESVIp
Ci0JJChJTlNUQUxMX1BST0cpIHRvb2xzL2NoZWNrL2NoayB0b29scy9jaGVjay9jaGVja18qIHRv
b2xzL2NoZWNrL2Z1bmNzLnNoICQoRElTVERJUikvY2hlY2sKIGRpc3QtJTogREVTVERJUj0kKERJ
U1RESVIpL2luc3RhbGwKIGRpc3QtJTogaW5zdGFsbC0lCiAJQDogIyBkbyBub3RoaW5nCmRpZmYg
LXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSBSRUFETUUKLS0tIGEvUkVBRE1FCU1vbiBK
YW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi9SRUFETUUJVHVlIEphbiAxMCAxOToxMzow
MSAyMDEyICswMTAwCkBAIC04Nyw5ICs4NywxMyBAQCAyLiBjZCB0byB4ZW4tdW5zdGFibGUgKG9y
IHdoYXRldmVyIHlvdSBzCiAzLiBGb3IgdGhlIHZlcnkgZmlyc3QgYnVpbGQsIG9yIGlmIHlvdSB3
YW50IHRvIGRlc3Ryb3kgYnVpbGQgdHJlZXMsCiAgICBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CiAKKyAgICAjIC4vY29uZmlndXJlCiAgICAgIyBtYWtlIHdvcmxkCiAgICAgIyBtYWtlIGlu
c3RhbGwKIAorICAgSWYgeW91IHdhbnQsIHlvdSBjYW4gcnVuIC4vY29uZmlndXJlIC0taGVscCB0
byBzZWUgdGhlIGxpc3Qgb2YKKyAgIG9wdGlvbnMgYXZhaWxhYmxlIG9wdGlvbnMgd2hlbiBidWls
ZGluZyBhbmQgaW5zdGFsbGluZyBYZW4uCisKICAgIFRoaXMgd2lsbCBjcmVhdGUgYW5kIGluc3Rh
bGwgb250byB0aGUgbG9jYWwgbWFjaGluZS4gSXQgd2lsbCBidWlsZAogICAgdGhlIHhlbiBiaW5h
cnkgKHhlbi5neiksIHRoZSB0b29scyBhbmQgdGhlIGRvY3VtZW50YXRpb24uCiAKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIGF1dG9nZW4uc2gKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYXV0b2dlbi5zaAlUdWUgSmFuIDEwIDE5
OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSw5IEBACisjIS9iaW4vc2ggLWUKK3JtIC1yZiBj
b25maWd1cmUKK2NkIHRvb2xzCithdXRvaGVhZGVyCithdXRvY29uZgorY2QgLi4KK2VjaG8gIiMh
L2Jpbi9zaCAtZSIgPj4gY29uZmlndXJlCitlY2hvICJjZCB0b29scyAmJiAuL2NvbmZpZ3VyZSBc
JEAiID4+IGNvbmZpZ3VyZQorY2htb2QgK3ggY29uZmlndXJlCmRpZmYgLXIgNWIyNjc2YWMxMzIx
IC1yIDZmZGUwMTdjNDE5ZSBjb25maWcvVG9vbHMubWsuaW4KLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvY29uZmlnL1Rvb2xzLm1rLmluCVR1ZSBKYW4g
MTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDUwIEBACisjIFByZWZpeCBhbmQgaW5z
dGFsbCBmb2xkZXIKK1BSRUZJWCAgICAgICAgICAgICAgOj0gQHByZWZpeEAKK0xJQkxFQUZESVJf
eDg2XzY0ICAgOj0gQExJQl9QQVRIQAorCisjIEEgZGVidWcgYnVpbGQgb2YgdG9vbHM/CitkZWJ1
ZyAgICAgICAgICAgICAgIDo9IEBkZWJ1Z0AKKworIyBUb29scyBwYXRoCitCSVNPTiAgICAgICAg
ICAgICAgIDo9IEBCSVNPTkAKK0ZMRVggICAgICAgICAgICAgICAgOj0gQEZMRVhACitQWVRIT04g
ICAgICAgICAgICAgIDo9IEBQWVRIT05ACitQWVRIT05fUEFUSCAgICAgICAgIDo9IEBQWVRIT05Q
QVRIQAorUEVSTCAgICAgICAgICAgICAgICA6PSBAUEVSTEAKK0JSQ1RMICAgICAgICAgICAgICAg
Oj0gQEJSQ1RMQAorSVAgICAgICAgICAgICAgICAgICA6PSBASVBACitDVVJMX0NPTkZJRyAgICAg
ICAgIDo9IEBDVVJMQAorWE1MMl9DT05GSUcgICAgICAgICA6PSBAWE1MQAorQkFTSCAgICAgICAg
ICAgICAgICA6PSBAQkFTSEAKK1hHRVRUVEVYVCAgICAgICAgICAgOj0gQFhHRVRURVhUQAorCisj
IEV4dHJhIGZvbGRlciBmb3IgbGlicy9pbmNsdWRlcworUFJFUEVORF9JTkNMVURFUyAgICA6PSBA
UFJFUEVORF9JTkNMVURFU0AKK1BSRVBFTkRfTElCICAgICAgICAgOj0gQFBSRVBFTkRfTElCQAor
QVBQRU5EX0lOQ0xVREVTICAgICA6PSBAQVBQRU5EX0lOQ0xVREVTQAorQVBQRU5EX0xJQiAgICAg
ICAgICA6PSBAQVBQRU5EX0xJQkAKKworIyBFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVsZSAoYnkg
ZGVmYXVsdCwgRmxhc2spLgorWFNNX0VOQUJMRSAgICAgICAgICA6PSBAeHNtQAorRkxBU0tfRU5B
QkxFICAgICAgICA6PSBAeHNtQAorCisjIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhU
VFAgb3IgR0lUJ3Mgb3duIHByb3RvY29sPworIyBHSVQncyBwcm90b2NvbCBpcyBmYXN0ZXIgYW5k
IG1vcmUgcm9idXN0LCB3aGVuIGl0IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCisjIG1heSBibG9j
ayBpdCkuIFdlIG1ha2UgaXQgdGhlIGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCByZXBvc2l0b3J5
IGRvd25sb2FkcworIyBmYWlsIG9yIGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9IVFRQPXkgaW4g
eW91ciBlbnZpcm9ubWVudC4KK0dJVF9IVFRQICAgICAgICAgICAgOj0gQGdpdGh0dHBACisKKyMg
T3B0aW9uYWwgY29tcG9uZW50cworWEVOU1RBVF9YRU5UT1AgICAgICA6PSBAbW9uaXRvcnNACitW
VFBNX1RPT0xTICAgICAgICAgIDo9IEB2dHBtQAorTElCWEVOQVBJX0JJTkRJTkdTICA6PSBAeGFw
aUAKK1BZVEhPTl9UT09MUyAgICAgICAgOj0gQHB5dGhvbnRvb2xzQAorT0NBTUxfVE9PTFMgICAg
ICAgICA6PSBAb2NhbWx0b29sc0AKK0NPTkZJR19NSU5JVEVSTSAgICAgOj0gQG1pbml0ZXJtQAor
Q09ORklHX0xPTU9VTlQgICAgICA6PSBAbG9tb3VudEAKKworI1N5c3RlbSBvcHRpb25zCitDT05G
SUdfU1lTVEVNX0xJQkFJTzo9IEBzeXN0ZW1fYWlvQAorQ09ORklHX0xJQklDT05WICAgICA6PSBA
bGliaWNvbnZACitDT05GSUdfR0NSWVBUICAgICAgIDo9IEBsaWJnY3J5cHRACitDT05GSUdfRVhU
MkZTICAgICAgIDo9IEBsaWJleHQyZnNACmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdj
NDE5ZSBjb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIvY29uZmlndXJlCVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCww
ICsxLDIgQEAKKyMhL2Jpbi9zaCAtZQorY2QgdG9vbHMgJiYgLi9jb25maWd1cmUgJEAKZGlmZiAt
ciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL01ha2VmaWxlCi0tLSBhL3Rvb2xz
L01ha2VmaWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29scy9NYWtl
ZmlsZQlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTYsNyArNiw2IEBAIFNVQkRJ
UlMtbGliYWlvIDo9IGxpYmFpbwogZW5kaWYKIAogU1VCRElSUy15IDo9Ci1TVUJESVJTLXkgKz0g
Y2hlY2sKIFNVQkRJUlMteSArPSBpbmNsdWRlCiBTVUJESVJTLXkgKz0gbGlieGMKIFNVQkRJUlMt
eSArPSBmbGFzawpAQCAtNzYsNiArNzUsOCBAQCBjbGVhbjogc3ViZGlycy1jbGVhbgogLlBIT05Z
OiBkaXN0Y2xlYW4KIGRpc3RjbGVhbjogc3ViZGlycy1kaXN0Y2xlYW4KIAlybSAtcmYgaW9lbXUt
ZGlyIGlvZW11LXJlbW90ZQorCXJtIC1yZiAuLi9jb25maWcvVG9vbHMubWsgY29uZmlnLmggY29u
ZmlnLmxvZyBjb25maWcuc3RhdHVzIFwKKyAgICAgICAgICAgICAgIGNvbmZpZy5jYWNoZSBhdXRv
bTR0ZS5jYWNoZQogCiBpZm5lcSAoJChYRU5fQ09NUElMRV9BUkNIKSwkKFhFTl9UQVJHRVRfQVJD
SCkpCiBJT0VNVV9DT05GSUdVUkVfQ1JPU1MgPz0gLS1jcHU9JChYRU5fVEFSR0VUX0FSQ0gpIFwK
ZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL1J1bGVzLm1rCi0tLSBh
L3Rvb2xzL1J1bGVzLm1rCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29s
cy9SdWxlcy5tawlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTQsNiArNCw3IEBA
CiBhbGw6CiAKIGluY2x1ZGUgJChYRU5fUk9PVCkvQ29uZmlnLm1rCitpbmNsdWRlICQoWEVOX1JP
T1QpL2NvbmZpZy9Ub29scy5tawogCiBleHBvcnQgX0lOU1RBTEwgOj0gJChJTlNUQUxMKQogSU5T
VEFMTCA9ICQoWEVOX1JPT1QpL3Rvb2xzL2Nyb3NzLWluc3RhbGwKQEAgLTgwLDggKzgxLDYgQEAg
Y2hlY2stJChDT05GSUdfWDg2KSA9ICQoY2FsbCBjYy12ZXItY2hlYwogICAgICAgICAgICAgICAg
ICAgICAgICAgIlhlbiByZXF1aXJlcyBhdCBsZWFzdCBnY2MtMy40IikKICQoZXZhbCAkKGNoZWNr
LXkpKQogCi1fUFlUSE9OX1BBVEggOj0gJChzaGVsbCB3aGljaCAkKFBZVEhPTikpCi1QWVRIT05f
UEFUSCA/PSAkKF9QWVRIT05fUEFUSCkKIElOU1RBTExfUFlUSE9OX1BST0cgPSBcCiAJJChYRU5f
Uk9PVCkvdG9vbHMvcHl0aG9uL2luc3RhbGwtd3JhcCAiJChQWVRIT05fUEFUSCkiICQoSU5TVEFM
TF9QUk9HKQogCkBAIC0xMDksMyArMTA4LDcgQEAgc3ViZGlyLWFsbC0lIHN1YmRpci1jbGVhbi0l
IHN1YmRpci1pbnN0YQogCiBzdWJkaXItZGlzdGNsZWFuLSU6IC5waG9ueQogCSQoTUFLRSkgLUMg
JCogY2xlYW4KKworJChYRU5fUk9PVCkvY29uZmlnL1Rvb2xzLm1rOgorCUBlY2hvICJZb3UgaGF2
ZSB0byBydW4gLi9jb25maWd1cmUgYmVmb3JlIGJ1aWxkaW5nIG9yIGluc3RhbGxpbmcgdGhlIHRv
b2xzIgorCUBleGl0IDEKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xz
L2Jsa3RhcC9kcml2ZXJzL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2Jsa3RhcC9kcml2ZXJzL01ha2Vm
aWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29scy9ibGt0YXAvZHJp
dmVycy9NYWtlZmlsZQlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTEzLDcgKzEz
LDcgQEAgQ0ZMQUdTICAgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpCiBDRkxBR1MgICArPSAtSSAk
KE1FTVNIUl9ESVIpCiBDRkxBR1MgICArPSAtRF9HTlVfU09VUkNFCiAKLWlmZXEgKCQoc2hlbGwg
LiAuL2NoZWNrX2djcnlwdCAkKENDKSkseWVzKQoraWZlcSAoJENPTkZJR19HQ1JZUFQseSkKIENG
TEFHUyArPSAtRFVTRV9HQ1JZUFQKIENSWVBUX0xJQiA6PSAtbGdjcnlwdAogZWxzZQpkaWZmIC1y
IDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvYmxrdGFwL2RyaXZlcnMvY2hlY2tf
Z2NyeXB0Ci0tLSBhL3Rvb2xzL2Jsa3RhcC9kcml2ZXJzL2NoZWNrX2djcnlwdAlNb24gSmFuIDA5
IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKQEAgLTEsMTQgKzAsMCBAQAotIyEvYmluL3NoCi0KLWNhdCA+IC5nY3J5cHQuYyA8
PCBFT0YKLSNpbmNsdWRlIDxnY3J5cHQuaD4KLWludCBtYWluKHZvaWQpIHsgcmV0dXJuIDA7IH0K
LUVPRgotCi1pZiAkMSAtbyAuZ2NyeXB0IC5nY3J5cHQuYyAtbGdjcnlwdCAyPi9kZXYvbnVsbCA7
IHRoZW4KLSAgZWNobyAieWVzIgotZWxzZQotICBlY2hvICJubyIKLWZpCi0KLXJtIC1mIC5nY3J5
cHQqCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9NYWtl
ZmlsZQotLS0gYS90b29scy9jaGVjay9NYWtlZmlsZQlNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIg
KzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MjYgKzAsMCBAQAotWEVOX1JPT1QgPSAkKENVUkRJUikvLi4vLi4KLWluY2x1ZGUgJChYRU5fUk9P
VCkvdG9vbHMvUnVsZXMubWsKLQotIyBFeHBvcnQgdGhlIG5lY2Vzc2FyeSBlbnZpcm9ubWVudCB2
YXJpYWJsZXMgZm9yIHRoZSB0ZXN0cwotZXhwb3J0IFBZVEhPTgotZXhwb3J0IExJQlhFTkFQSV9C
SU5ESU5HUwotZXhwb3J0IENIRUNLX0lOQ0xVREVTCi1leHBvcnQgQ0hFQ0tfTElCCi1leHBvcnQg
Q09ORklHX1NZU1RFTV9MSUJBSU8KLQotLlBIT05ZOiBhbGwgaW5zdGFsbAotYWxsIGluc3RhbGw6
IGNoZWNrLWJ1aWxkCi0KLSMgQ2hlY2sgdGhpcyBtYWNoaW5lIGlzIE9LIGZvciBidWlsZGluZyBv
bi4KLS5QSE9OWTogY2hlY2stYnVpbGQKLWNoZWNrLWJ1aWxkOgotCS4vY2hrIGJ1aWxkCi0KLSMg
Q2hlY2sgdGhpcyBtYWNoaW5lIGlzIE9LIGZvciBpbnN0YWxsaW5nIG9uLgotLlBIT05ZOiBjaGVj
ay1pbnN0YWxsCi1jaGVjay1pbnN0YWxsOgotCS4vY2hrIGluc3RhbGwKLQotLlBIT05ZOiBjbGVh
bgotY2xlYW46Ci0JLi9jaGsgY2xlYW4KZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0
MTllIHRvb2xzL2NoZWNrL1JFQURNRQotLS0gYS90b29scy9jaGVjay9SRUFETUUJTW9uIEphbiAw
OSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDIwICswLDAgQEAKLUNoZWNrcyBmb3IgdGhlIHN1aXRhYmlsaXR5IG9m
IGEgbWFjaGluZSBmb3IgWGVuIGJ1aWxkIG9yIGluc3RhbGwuCi1UbyBjaGVjayBmb3IgYnVpbGQg
c3VpdGFiaWxpdHkgdXNlCi0KLSAgICAgICAgLi9jaGsgYnVpbGQKLQotVG8gY2hlY2sgZm9yIGlu
c3RhbGwgc3VpdGFiaWxpdHkgdXNlCi0KLSAgICAgICAgLi9jaGsgaW5zdGFsbAotCi1UaGUgY2hr
IHNjcmlwdCB3aWxsIHJ1biBjaGVja3MgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHByaW50Ci10aGUg
b25lcyB0aGF0IGZhaWxlZC4gSXQgcHJpbnRzIG5vdGhpbmcgaWYgY2hlY2tzIHN1Y2NlZWQuCi1U
aGUgY2hrIHNjcmlwdCBleGl0cyB3aXRoIDAgb24gc3VjY2VzcyBhbmQgMSBvbiBmYWlsdXJlLgot
Ci1UaGUgY2hrIHNjcmlwdCBydW5zIGV4ZWN1dGFibGUgZmlsZXMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2hvc2UKLW5hbWVzIGJlZ2luIHdpdGggJ2NoZWNrXycuIEZpbGVzIGNvbnRhaW5pbmcgQ0hFQ0st
QlVJTEQKLWFyZSBydW4gZm9yIHRoZSBidWlsZCBjaGVjaywgYW5kIGZpbGVzIGNvbnRhaW5pbmcg
Q0hFQ0stSU5TVEFMTAotYXJlIHJ1biBmb3IgdGhlIGluc3RhbGwgY2hlY2suCi0KLURldGFpbGVk
IG91dHB1dCBmcm9tIHRoZSBjaGVjayBzY3JpcHRzIGlzIGluIC5jaGtidWlsZCBmb3IgYnVpbGQK
LWFuZCAuY2hraW5zdGFsbCBmb3IgaW5zdGFsbC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9jaGVja19i
cmN0bAotLS0gYS90b29scy9jaGVjay9jaGVja19icmN0bAlNb24gSmFuIDA5IDE2OjAxOjQ0IDIw
MTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg
LTEsMTMgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNo
Ci0KLWNhc2UgJE9TIGluCi1PcGVuQlNEfE5ldEJTRHxGcmVlQlNEKQotCWhhc19vcl9mYWlsIGJy
Y29uZmlnIDs7Ci1MaW51eCkKLQloYXNfb3JfZmFpbCBicmN0bCA7OwotKikKLQlmYWlsICJ1bmtu
b3duIE9TIiA7OwotZXNhYwpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9v
bHMvY2hlY2svY2hlY2tfY3J5cHRvX2xpYgotLS0gYS90b29scy9jaGVjay9jaGVja19jcnlwdG9f
bGliCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hF
Q0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAkT1MgaW4KLUZy
ZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwIDs7Ci1lc2FjCi0KLWhhc19saWIgbGliY3J5
cHRvLnNvIHx8IGZhaWwgIm1pc3NpbmcgbGliY3J5cHRvLnNvIgpkaWZmIC1yIDViMjY3NmFjMTMy
MSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfY3VybAotLS0gYS90b29scy9jaGVj
ay9jaGVja19jdXJsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMyArMCwwIEBACi0jIS9iaW4v
c2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotaWYgWyAi
JExJQlhFTkFQSV9CSU5ESU5HUyIgIT0gInkiIF07IHRoZW4KLQllY2hvIC1uICJ1bnVzZWQsICIK
LQlleGl0IDAKLWZpCi0KLWhhc19vcl9mYWlsIGN1cmwtY29uZmlnCi1jdXJsX2xpYnM9YGN1cmwt
Y29uZmlnIC0tbGlic2AgfHwgZmFpbCAiY3VybC1jb25maWcgLS1saWJzIGZhaWxlZCIKLXRlc3Rf
bGluayAkY3VybF9saWJzIHx8IGZhaWwgImRlcGVuZGVuY3kgbGlicmFyaWVzIGZvciBjdXJsIGFy
ZSBtaXNzaW5nIgpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hl
Y2svY2hlY2tfaXByb3V0ZQotLS0gYS90b29scy9jaGVjay9jaGVja19pcHJvdXRlCU1vbiBKYW4g
MDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwxNSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAot
Ci0uIC4vZnVuY3Muc2gKLQotUEFUSD0vc2JpbjokUEFUSAotCi1jYXNlICRPUyBpbgotT3BlbkJT
RHxOZXRCU0R8RnJlZUJTRCkKLQloYXNfb3JfZmFpbCBpZmNvbmZpZyA7OwotTGludXgpCi0JaGFz
X29yX2ZhaWwgaXAgOzsKLSopCi0JZmFpbCAidW5rbm93biBPUyIgOzsKLWVzYWMKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19kZXZl
bAotLS0gYS90b29scy9jaGVjay9jaGVja19saWJhaW9fZGV2ZWwJTW9uIEphbiAwOSAxNjowMTo0
NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CkBAIC0xLDExICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Mu
c2gKLQotaWYgWyBYJHtDT05GSUdfU1lTVEVNX0xJQkFJT30gIT0gWCJ5IiBdIDsgdGhlbgotICAg
IGV4aXQgMAotZmkKLWlmICEgaGFzX2hlYWRlciBsaWJhaW8uaCA7IHRoZW4KLSAgICBmYWlsICJj
YW4ndCBmaW5kIGxpYmFpbyBoZWFkZXJzLCBpbnN0YWxsIGxpYmFpbyBkZXZlbCBwYWNrYWdlIG9y
IHNldCBDT05GSUdfU1lTVEVNX0xJQkFJTz1uIgotZmkKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIg
NmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19saWIKLS0tIGEvdG9vbHMvY2hl
Y2svY2hlY2tfbGliYWlvX2xpYglNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOSArMCwwIEBACi0j
IS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQot
aWYgWyBYJHtDT05GSUdfU1lTVEVNX0xJQkFJT30gIT0gWCJ5IiBdIDsgdGhlbgotICAgIGV4aXQg
MAotZmkKLWhhc19saWIgbGliYWlvLnNvIHx8IGZhaWwgImNhbid0IGZpbmQgbGliYWlvIgpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfb3BlbnNz
bF9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja19vcGVuc3NsX2RldmVsCU1vbiBKYW4gMDkg
MTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4v
ZnVuY3Muc2gKLQotaGFzX2hlYWRlciBvcGVuc3NsL21kNS5oIHx8IGZhaWwgIm1pc3Npbmcgb3Bl
bnNzbCBoZWFkZXJzIgpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMv
Y2hlY2svY2hlY2tfcHl0aG9uCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbglNb24gSmFu
IDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKQEAgLTEsMTMgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENI
RUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIHRlc3QgLXogJHtQWVRIT059OyB0aGVu
Ci0gIFBZVEhPTj1weXRob24KLWZpCi0KLSR7UFlUSE9OfSAtYyAnCi1pbXBvcnQgc3lzCi1zeXMu
ZXhpdChzeXMudmVyc2lvbl9pbmZvWzBdIDwgMiBvciBzeXMudmVyc2lvbl9pbmZvWzFdIDwgMykK
LScgfHwgZmFpbCAibmVlZCBweXRob24gdmVyc2lvbiA+PSAyLjMiCmRpZmYgLXIgNWIyNjc2YWMx
MzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9jaGVja19weXRob25fZGV2ZWwKLS0tIGEv
dG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX2RldmVsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiAr
MDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwx
NyArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWlm
IHRlc3QgLXogJHtQWVRIT059OyB0aGVuCi0gIFBZVEhPTj1weXRob24KLWZpCi1oYXNfb3JfZmFp
bCAke1BZVEhPTn0KLQotJHtQWVRIT059IC1jICcKLWltcG9ydCBvcy5wYXRoLCBzeXMKLWZvciBw
IGluIHN5cy5wYXRoOgotCWlmIG9zLnBhdGguZXhpc3RzKHAgKyAiL2NvbmZpZy9NYWtlZmlsZSIp
OgotCQlzeXMuZXhpdCgwKQotc3lzLmV4aXQoMSkKLScgfHwgZmFpbCAiY2FuJ3QgZmluZCBweXRo
b24gZGV2ZWwgZmlsZXMiCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29s
cy9jaGVjay9jaGVja19weXRob25feG1sCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl94
bWwJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEyICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVD
Sy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgot
ICBQWVRIT049cHl0aG9uCi1maQotaGFzX29yX2ZhaWwgJHtQWVRIT059Ci0KLSR7UFlUSE9OfSAt
YyAnaW1wb3J0IHhtbC5kb20ubWluaWRvbScgMj4vZGV2L251bGwgfHwgXAotZmFpbCAiY2FuJ3Qg
aW1wb3J0IHhtbC5kb20ubWluaWRvbSIKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0
MTllIHRvb2xzL2NoZWNrL2NoZWNrX3VkZXYKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfdWRldglN
b24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMjIgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlO
U1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWNhc2UgJE9TIGluCi1PcGVuQlNEfE5ldEJTRHxGcmVl
QlNEKQotCWhhc19vcl9mYWlsIHZuY29uZmlnCi0JOzsKLUxpbnV4KQotCWhhcyAvc2Jpbi91ZGV2
YWRtICYmIFwKLQkJdWRldnZlcj1gL3NiaW4vdWRldmFkbSBpbmZvIC1WIHwgYXdrICd7cHJpbnQg
JE5GfSdgCi0JWyAteiAiJHVkZXZ2ZXIiIF0gJiYgaGFzX29yX2ZhaWwgdWRldmluZm8gJiYgXAot
CQl1ZGV2dmVyPWB1ZGV2aW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAotCVsgIiR1ZGV2dmVy
IiAtZ2UgNTkgXSAyPi9kZXYvbnVsbCB8fCBcCi0JCWhhcyBob3RwbHVnIHx8IFwKLQkJZmFpbCAi
dWRldiBpcyB0b28gb2xkLCB1cGdyYWRlIHRvIHZlcnNpb24gNTkgb3IgbGF0ZXIiCi0JOzsKLSop
Ci0JZmFpbCAidW5rbm93biBPUyIKLQk7OwotZXNhYwpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2
ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfdXVpZF9kZXZlbAotLS0gYS90b29scy9jaGVj
ay9jaGVja191dWlkX2RldmVsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw3ICswLDAgQEAKLSMh
L2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX2hlYWRlciB1dWlk
LmggfHwgXAotaGFzX2hlYWRlciB1dWlkL3V1aWQuaCB8fCBmYWlsICJtaXNzaW5nIHV1aWQgaGVh
ZGVycyAocGFja2FnZSB1dWlkLWRldikiCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdj
NDE5ZSB0b29scy9jaGVjay9jaGVja194MTFfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tf
eDExX2RldmVsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw5ICswLDAgQEAKLSMhL2Jpbi9zaAot
IyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX2hlYWRlciBYMTEva2V5c3ltZGVm
LmggfHwgXAotaGFzX2hlYWRlciAvdXNyL1gxMVI2L2luY2x1ZGUvWDExL2tleXN5bWRlZi5oIHx8
IFwKLWhhc19oZWFkZXIgL3Vzci9YMTFSNy9pbmNsdWRlL1gxMS9rZXlzeW1kZWYuaCB8fCBcCi13
YXJuaW5nICJjYW4ndCBmaW5kIFgxMSBoZWFkZXJzIgpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2
ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfeGdldHRleHQKLS0tIGEvdG9vbHMvY2hlY2sv
Y2hlY2tfeGdldHRleHQJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEvYmlu
L3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfb3JfZmFpbCB4Z2V0dGV4
dApkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tf
eG1sMgotLS0gYS90b29scy9jaGVjay9jaGVja194bWwyCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAx
MiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSwxNCArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0u
IC4vZnVuY3Muc2gKLQotaWYgWyAhICIkTElCWEVOQVBJX0JJTkRJTkdTIiA9ICJ5IiBdCi10aGVu
Ci0gICAgZWNobyAtbiAidW51c2VkLCAiCi0gICAgZXhpdCAwCi1maQotCi1oYXNfb3JfZmFpbCB4
bWwyLWNvbmZpZwoteG1sMl9saWJzPWB4bWwyLWNvbmZpZyAtLWxpYnNgIHx8IGZhaWwgInhtbDIt
Y29uZmlnIC0tbGlicyBmYWlsZWQiCi10ZXN0X2xpbmsgJHhtbDJfbGlicyB8fCBmYWlsICJkZXBl
bmRlbmN5IGxpYnJhcmllcyBmb3IgeG1sMiBhcmUgbWlzc2luZyIKZGlmZiAtciA1YjI2NzZhYzEz
MjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX3lhamxfZGV2ZWwKLS0tIGEvdG9v
bHMvY2hlY2svY2hlY2tfeWFqbF9kZXZlbAlNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAK
KysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOCArMCww
IEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFk
ZXIgeWFqbC95YWpsX3BhcnNlLmggfHwgZmFpbCAiY2FuJ3QgZmluZCB5YWpsL3lhamxfcGFyc2Uu
aCIKLWhhc19oZWFkZXIgeWFqbC95YWpsX2dlbi5oIHx8IGZhaWwgImNhbid0IGZpbmQgeWFqbC95
YWpsX2dlbi5oIgotaGFzX2xpYiBsaWJ5YWpsLnNvIHx8IGZhaWwgImNhbid0IGZpbmQgbGlieWFq
bC5zbyIKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2No
ZWNrX3lhamxfbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3lhamxfbGliCU1vbiBKYW4gMDkg
MTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1J
TlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfbGliIGxpYnlhamwuc28uMSB8fCBmYWlsICJj
YW4ndCBmaW5kIGxpYnlhamwuc28uMSB2ZXJzaW9uIDEiCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1y
IDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9jaGVja196bGliX2RldmVsCi0tLSBhL3Rvb2xzL2No
ZWNrL2NoZWNrX3psaWJfZGV2ZWwJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAot
IyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHps
aWIuaCB8fCBmYWlsICJjYW4ndCBmaW5kIHpsaWIgaGVhZGVycyIKZGlmZiAtciA1YjI2NzZhYzEz
MjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX3psaWJfbGliCi0tLSBhL3Rvb2xz
L2NoZWNrL2NoZWNrX3psaWJfbGliCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBA
Ci0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gK
LQotY2FzZSAkT1MgaW4KLUZyZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwCi0JOzsKLWVz
YWMKLQotaGFzX2xpYiBsaWJ6LnNvIHx8IGZhaWwgImNhbid0IGZpbmQgemxpYiIKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoawotLS0gYS90b29scy9j
aGVjay9jaGsJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYzICswLDAgQEAKLSMhL2Jpbi9zaAot
Ci1mdW5jX3VzYWdlICgpCi17Ci0gICAgZWNobyAiVXNhZ2U6IgotICAgIGVjaG8gIgkkMCBbYnVp
bGR8aW5zdGFsbHxjbGVhbl0iCi0gICAgZWNobwotICAgIGVjaG8gIkNoZWNrIHN1aXRhYmlsaXR5
IGZvciBYZW4gYnVpbGQgb3IgaW5zdGFsbC4iCi0gICAgZWNobyAiRXhpdCB3aXRoIDAgaWYgT0ss
IDEgaWYgbm90LiIKLSAgICBlY2hvCi0gICAgZWNobyAiQ2FsbGluZyB3aXRoICdjbGVhbicgcmVt
b3ZlcyBnZW5lcmF0ZWQgZmlsZXMuIgotICAgIGV4aXQgMQotfQotCi1QQVRIPSRQQVRIOi9zYmlu
Oi91c3Ivc2JpbgotT1M9YHVuYW1lIC1zYAotZXhwb3J0IFBBVEggT1MKLQotaWYgWyAiJE9TIiA9
ICJTdW5PUyIgXTsgdGhlbgotCWV4aXQgMAotZmkKLQotY2FzZSAkMSBpbgotICAgIGJ1aWxkKQot
ICAgICAgICBjaGVjaz0iQ0hFQ0stQlVJTEQiCi0gICAgICAgIDs7Ci0gICAgaW5zdGFsbCkKLSAg
ICAgICAgY2hlY2s9IkNIRUNLLUlOU1RBTEwiCi0gICAgICAgIDs7Ci0gICAgY2xlYW4pCi0gICAg
ICAgIGV4aXQgMAotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGZ1bmNfdXNhZ2UKLSAgICAg
ICAgOzsKLWVzYWMKLQotZmFpbGVkPTAKLQotZWNobyAiWGVuICR7Y2hlY2t9ICIgYGRhdGVgCi1m
b3IgZiBpbiBjaGVja18qIDsgZG8KLSAgICBjYXNlICRmIGluCi0gICAgICAgICp+KQotICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICA7
OwotICAgIGVzYWMKLSAgICBpZiAhIFsgLXggJGYgXSA7IHRoZW4KLSAgICAgICAgY29udGludWUK
LSAgICBmaQotICAgIGlmICEgZ3JlcCAtRnEgIiRjaGVjayIgJGYgOyB0aGVuCi0gICAgICAgIGNv
bnRpbnVlCi0gICAgZmkKLSAgICBlY2hvIC1uICJDaGVja2luZyAkZjogIgotICAgIGlmIC4vJGYg
Mj4mMSA7IHRoZW4KLSAgICAgICAgZWNobyBPSwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkPTEK
LSAgICBmaQotZG9uZQotCi1leGl0ICR7ZmFpbGVkfQpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2
ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svZnVuY3Muc2gKLS0tIGEvdG9vbHMvY2hlY2svZnVuY3Mu
c2gJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEwNiArMCwwIEBACi0jIGhhcyBpcyB0aGUgc2Ft
ZSBhcyB3aGljaCwgZXhjZXB0IGl0IGhhbmRsZXMgY3Jvc3MgZW52aXJvbm1lbnRzCi1oYXMoKSB7
Ci0JaWYgWyAteiAiJENST1NTX0NPTVBJTEUiIF07IHRoZW4KLQkJY29tbWFuZCB3aGljaCAiJEAi
Ci0JCXJldHVybiAkPwotCWZpCi0KLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBz
dWJzaGVsbCB0byBwcmV2ZW50IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBJRlMKLQkoCi0JSUZTPToK
LQlmb3IgcCBpbiAkUEFUSDsgZG8KLQkJaWYgWyAteCAiJENST1NTX1NZU19ST09ULyRwLyQxIiBd
OyB0aGVuCi0JCQllY2hvICIkQ1JPU1NfU1lTX1JPT1QvJHAvJDEiCi0JCQlyZXR1cm4gMAotCQlm
aQotCWRvbmUKLQlyZXR1cm4gMQotCSkKLX0KLQotaGFzX29yX2ZhaWwoKSB7Ci0JaGFzICIkMSIg
Pi9kZXYvbnVsbCB8fCBmYWlsICJjYW4ndCBmaW5kICQxIgotfQotCi1oYXNfaGVhZGVyKCkgewot
CWNoZWNrX3N5c19yb290IHx8IHJldHVybiAxCi0KLQljYXNlICQxIGluCi0JCS8qKSA7OwotCQkq
KQotCQlpZiBbIC1yICIkQ1JPU1NfU1lTX1JPT1QvdXNyL2luY2x1ZGUvJDEiIF07IHRoZW4KLQkJ
CXJldHVybiAwCi0JCWZpCi0JCWZvciBwYXRoIGluICR7Q0hFQ0tfSU5DTFVERVN9OyBkbwotCQkJ
aWYgWyAtciAiJENST1NTX1NZU19ST09UJHtwYXRofS8kMSIgXTsgdGhlbgotCQkJCXJldHVybiAw
Ci0JCQlmaQotCQlkb25lCi0JCTs7Ci0JZXNhYwotCi0JcmV0dXJuIDEKLX0KLQotaGFzX2xpYigp
IHsKLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50
IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBlbnZpcm9ubWVudAotCSgKLQlQQVRIPS9zYmluOiRQQVRI
ICAgICAgICAjIGZvciBsZGNvbmZpZwotCUxJQlJBUklFUz0iJENIRUNLX0xJQiAvdXNyL2xpYiIK
LQotCSMgVGhpcyByZWxhdGl2ZWx5IGNvbW1vbiBpbiBhIHN5cy1yb290OyBsaWJzIGFyZSBpbnN0
YWxsZWQgYnV0Ci0JIyBsZGNvbmZpZyBoYXNuJ3QgcnVuIHRoZXJlLCBzbyBsZGNvbmZpZyAtcCB3
b24ndCB3b3JrLgotCWlmIFsgIiRPUyIgPSBMaW51eCAtYSAhIC1mICIkQ1JPU1NfU1lTX1JPT1Qv
ZXRjL2xkLnNvLmNhY2hlIiBdOyB0aGVuCi0JICAgIGVjaG8gIlBsZWFzZSBydW4gbGRjb25maWcg
LXIgXCIkQ1JPU1NfU1lTX1JPT1RcIiB0byBnZW5lcmF0ZSBsZC5zby5jYWNoZSIKLQkgICAgIyBm
YWxsIHRocm91Z2g7IGxkY29uZmlnIHRlc3QgYmVsb3cgc2hvdWxkIGZhaWwKLQlmaQotCWlmIFsg
IiR7T1N9IiA9ICJMaW51eCIgXTsgdGhlbgotCQlsZGNvbmZpZyAtcCAke0NST1NTX1NZU19ST09U
Ky1yICIkQ1JPU1NfU1lTX1JPT1QifSB8IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkK
LQlpZiBbICIke09TfSIgPSAiTmV0QlNEIiBdOyB0aGVuCi0JCWxzIC0xICR7TElCUkFSSUVTfSB8
IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlyZXR1cm4gMQotCSkKLX0KLQotdGVz
dF9saW5rKCkgewotCSMgc3Vic2hlbGwgdG8gdHJhcCByZW1vdmFsIG9mIHRtcGZpbGUKLQkoCi0J
dW5zZXQgdG1wZmlsZQotCXRyYXAgJ3JtIC1mICIkdG1wZmlsZSI7IGV4aXQnIDAgMSAyIDE1Ci0J
dG1wZmlsZT1gbWt0ZW1wYCB8fCByZXR1cm4gMQotCWxkICIkQCIgLW8gIiR0bXBmaWxlIiA+L2Rl
di9udWxsIDI+JjEKLQlyZXR1cm4gJD8KLQkpCi19Ci0KLSMgdGhpcyBmdW5jdGlvbiBpcyB1c2Vk
IGNvbW1vbmx5IGFib3ZlCi1jaGVja19zeXNfcm9vdCgpIHsKLQlbIC16ICIkQ1JPU1NfQ09NUElM
RSIgXSAmJiByZXR1cm4gMAotCWlmIFsgLXogIiRDUk9TU19TWVNfUk9PVCIgXTsgdGhlbgotCQll
Y2hvICJwbGVhc2Ugc2V0IENST1NTX1NZU19ST09UIGluIHRoZSBlbnZpcm9ubWVudCIKLQkJcmV0
dXJuIDEKLQlmaQotCWlmIFsgISAtZCAiJENST1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8g
Im5vIHN5cy1yb290IGZvdW5kIGF0ICRDUk9TU19TWVNfUk9PVCIKLQkJcmV0dXJuIDEKLQlmaQot
fQotCi13YXJuaW5nKCkgewotCWVjaG8KLQllY2hvICIgKioqIGBiYXNlbmFtZSAiJDAiYCBGQUlM
RUQkeyorOiAkKn0iCi19Ci0KLWZhaWwoKSB7Ci0JZWNobwotCWVjaG8gIiAqKiogYGJhc2VuYW1l
ICIkMCJgIEZBSUxFRCR7Kis6ICQqfSIKLQlleGl0IDEKLX0KZGlmZiAtciA1YjI2NzZhYzEzMjEg
LXIgNmZkZTAxN2M0MTllIHRvb2xzL2NvbmZpZy5ndWVzcwotLS0gL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9jb25maWcuZ3Vlc3MJVHVlIEphbiAx
MCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTUwMiBAQAorIyEgL2Jpbi9zaAorIyBB
dHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgorIyAgIENvcHlyaWdodCAo
QykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAy
MDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3RpbWVzdGFtcD0n
MjAwOS0xMi0zMCcKKworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQorIyAwMjExMC0xMzAxLCBVU0EuCisjCisjIEFz
IGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBp
ZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBj
b250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwg
eW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0
aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworCisjIE9yaWdpbmFs
bHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4gIFBsZWFzZSBzZW5kIHBhdGNoZXMgKGNvbnRleHQK
KyMgZGlmZiBmb3JtYXQpIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBhbmQgaW5jbHVkZSBh
IENoYW5nZUxvZworIyBlbnRyeS4KKyMKKyMgVGhpcyBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3Mg
YSBjYW5vbmljYWwgc3lzdGVtIG5hbWUgc2ltaWxhciB0bworIyBjb25maWcuc3ViLiAgSWYgaXQg
c3VjY2VlZHMsIGl0IHByaW50cyB0aGUgc3lzdGVtIG5hbWUgb24gc3Rkb3V0LCBhbmQKKyMgZXhp
dHMgd2l0aCAwLiAgT3RoZXJ3aXNlLCBpdCBleGl0cyB3aXRoIDEuCisjCisjIFlvdSBjYW4gZ2V0
IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNh
dmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmln
Lmd1ZXNzO2hiPUhFQUQKKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3Vz
YWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5h
bWUgb2YgdGhlIHN5c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6Cisg
IC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10
aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0Cisg
IC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1Jl
cG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3Zl
cnNpb249IlwKK0dOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3Jp
dHRlbiBieSBQZXIgQm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5
NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZQorU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBj
b3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCito
ZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJz
ZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisg
ICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1w
IiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24i
IDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdl
IjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAg
IHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBi
cmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhl
bHAiID4mMgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVz
YWMKK2RvbmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkg
YXJndW1lbnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1
CisKKyMgQ0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUg
dGhhdCB0aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24g
aXMgZGlzY291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNy
ZWF0ZWQgYW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBk
ZWFsIHdpdGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZP
Ul9CVUlMRCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9T
VF9DQycgaWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1w
IGRpcmVjdG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0
X2NjX2Zvcl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+
L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAw
IDsKK3RyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rl
di9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1g
KHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAg
JiYgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIk
UkFORE9NIiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2Rp
ciAkdG1wKSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtk
aXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3Rv
cnkiID4mMiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBk
aXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15
IDsKK3RtcGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2Fz
ZSAkQ0NfRk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4g
JGR1bW15LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAt
byAkZHVtbXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9S
X0JVSUxEPSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZP
Ul9CVUlMRCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsK
KwlmaQorCTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JV
SUxEPSRIT1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlz
IG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJT
RCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRl
c3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRI
Oi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkg
Mj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVu
YW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNU
RU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5B
TUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtu
b3duCisKKyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBh
cmUgbm90IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RF
TX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6
KikKKwkjIE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1h
dGNoIG9uZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwcGxlczogKi0qLW5ldGJzZGVsZiosICotKi1u
ZXRic2Rhb3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRh
cmdldHMgdGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3Vs
ZCBzZWxlY3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBi
b3RoIGZvcndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20g
Zm9yIHNlbGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBO
ZXRCU0QgZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0
aW9uIG9mIHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3Rs
PSJzeXNjdGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmlu
LyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYv
bnVsbCB8fCBlY2hvIHVua25vd24pYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4K
KwkgICAgYXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OworCSAgICBhcm0qKSBtYWNoaW5l
PWFybS11bmtub3duIDs7CisJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CisJICAg
IHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKwkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUt
dW5rbm93biA7OworCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3du
IDs7CisJZXNhYworCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3Jt
YXQsIGlmIGl0IGhhcyBzd2l0Y2hlZAorCSMgdG8gRUxGIHJlY2VudGx5LCBvciB3aWxsIGluIHRo
ZSBmdXR1cmUuCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm0qfGkz
ODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAor
CQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJ
fCBncmVwIC1xIF9fRUxGX18KKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2Fu
IGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBS
ZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQor
CQkgICAgb3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJICAgICAgICBvcz1uZXRi
c2QKKwkJOzsKKwllc2FjCisJIyBUaGUgT1MgcmVsZWFzZQorCSMgRGViaWFuIEdOVS9OZXRCU0Qg
bWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCisJIyB0aHVzLCBuZWVkIGEg
ZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZAorCSMga2VybmVsIHZl
cnNpb24gaW5mb3JtYXRpb24sIHNvIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEKKwkjIHN1aXRh
YmxlIHRhZywgaW4gdGhlIHN0eWxlIG9mIGxpbnV4LWdudS4KKwljYXNlICIke1VOQU1FX1ZFUlNJ
T059IiBpbgorCSAgICBEZWJpYW4qKQorCQlyZWxlYXNlPSctZ251JworCQk7OworCSAgICAqKQor
CQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stX10uKi9cLi8nYAor
CQk7OworCWVzYWMKKwkjIFNpbmNlIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFU
SU5HX1NZU1RFTToKKwkjIGNvbnRhaW5zIHJlZHVuZGFudCBpbmZvcm1hdGlvbiwgdGhlIHNob3J0
ZXIgZm9ybToKKwkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVz
ZWQuCisJZWNobyAiJHttYWNoaW5lfS0ke29zfSR7cmVsZWFzZX0iCisJZXhpdCA7OworICAgICo6
T3BlbkJTRDoqOiopCisJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL09wZW5CU0Qu
Ly8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tb3BlbmJzZCR7VU5BTUVf
UkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpla2tvQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFD
SElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNv
bGlkQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5B
TUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dl
cnBjLXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk1pckJT
RDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxF
QVNFfQorCWV4aXQgOzsKKyAgICBhbHBoYTpPU0YxOio6KikKKwljYXNlICRVTkFNRV9SRUxFQVNF
IGluCisJKjQuMCkKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7
cHJpbnQgJDN9J2AKKwkJOzsKKwkqNS4qKQorCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9z
YmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJOzsKKwllc2FjCisJIyBBY2NvcmRp
bmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKwkj
IE9TRi8xIGFuZCBUcnU2NCBzeXN0ZW1zIHByb2R1Y2VkIHNpbmNlIDE5OTUuICBJIGhvcGUgdGhh
dAorCSMgY292ZXJzIG1vc3Qgc3lzdGVtcyBydW5uaW5nIHRvZGF5LiAgVGhpcyBjb2RlIHBpcGVz
IHRoZSBDUFUKKwkjIHR5cGVzIHRocm91Z2ggaGVhZCAtbiAxLCBzbyB3ZSBvbmx5IGRldGVjdCB0
aGUgdHlwZSBvZiBDUFUgMC4KKwlBTFBIQV9DUFVfVFlQRT1gL3Vzci9zYmluL3BzcmluZm8gLXYg
fCBzZWQgLW4gLWUgJ3MvXiAgVGhlIGFscGhhIFwoLipcKSBwcm9jZXNzb3IuKiQvXDEvcCcgfCBo
ZWFkIC1uIDFgCisJY2FzZSAiJEFMUEhBX0NQVV9UWVBFIiBpbgorCSAgICAiRVY0ICgyMTA2NCki
KQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkVWNC41ICgyMTA2NCkiKQorCQlV
TkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVO
QU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY1ICgyMTE2NCkiKQorCQlVTkFNRV9NQUNI
SU5FPSJhbHBoYWV2NSIgOzsKKwkgICAgIkVWNS42ICgyMTE2NEEpIikKKwkJVU5BTUVfTUFDSElO
RT0iYWxwaGFldjU2IiA7OworCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElO
RT0iYWxwaGFwY2E1NiIgOzsKKwkgICAgIkVWNS43ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJ
TkU9ImFscGhhcGNhNTciIDs7CisJICAgICJFVjYgKDIxMjY0KSIpCisJCVVOQU1FX01BQ0hJTkU9
ImFscGhhZXY2IiA7OworCSAgICAiRVY2LjcgKDIxMjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJh
bHBoYWV2NjciIDs7CisJICAgICJFVjYuOENCICgyMTI2NEMpIikKKwkJVU5BTUVfTUFDSElORT0i
YWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhBTCAoMjEyNjRCKSIpCisJCVVOQU1FX01BQ0hJTkU9
ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44Q1ggKDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5F
PSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOUEgKDIxMjY0L0VWNjlBKSIpCisJCVVOQU1FX01B
Q0hJTkU9ImFscGhhZXY2OSIgOzsKKwkgICAgIkVWNyAoMjEzNjQpIikKKwkJVU5BTUVfTUFDSElO
RT0iYWxwaGFldjciIDs7CisJICAgICJFVjcuOSAoMjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9
ImFscGhhZXY3OSIgOzsKKwllc2FjCisJIyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVy
c2lvbi4KKwkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgdmVyc2lvbi4KKwkjIEEgVG4u
biB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVzdCB2ZXJzaW9uLgorCSMgQSBYbi5uIHZl
cnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgorCSMgMS4yIHVz
ZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVj
aG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCWV4aXQg
OzsKKyAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJ
bnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIFNob3Vs
ZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGlu
c3RlYWQKKwkjIG9mIHRoZSBzcGVjaWZpYyBBbHBoYSBtb2RlbD8KKwllY2hvIGFscGhhLXBjLWlu
dGVyaXgKKwlleGl0IDs7CisgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorCWVjaG8gYWxwaGEt
ZGVjLXdpbm50My41CisJZXhpdCA7OworICAgIEFtaWdhKjpVTklYX1N5c3RlbV9WOjQuMDoqKQor
CWVjaG8gbTY4ay11bmtub3duLXN5c3Y0CisJZXhpdCA7OworICAgICo6W0FhXW1pZ2FbT29dW1Nz
XToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYW1pZ2FvcworCWV4aXQgOzsK
KyAgICAqOltNbV1vcnBoW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtu
b3duLW1vcnBob3MKKwlleGl0IDs7CisgICAgKjpPUy8zOTA6KjoqKQorCWVjaG8gaTM3MC1pYm0t
b3BlbmVkaXRpb24KKwlleGl0IDs7CisgICAgKjp6L1ZNOio6KikKKwllY2hvIHMzOTAtaWJtLXp2
bW9lCisJZXhpdCA7OworICAgICo6T1M0MDA6KjoqKQorICAgICAgICBlY2hvIHBvd2VycGMtaWJt
LW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5b
MDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgIGFybTpyaXNjb3M6KjoqfGFybTpSSVNDT1M6KjoqKQorCWVjaG8gYXJtLXVua25vd24t
cmlzY29zCisJZXhpdCA7OworICAgIFNSMj8wMTpISS1VWC9NUFA6KjoqIHwgU1I4MDAwOkhJLVVY
L01QUDoqOiopCisJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAorCWV4aXQgOzsKKyAgICBQ
eXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNNUF9EQy1PU3gqOio6KikK
KwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQg
TUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgIiA9
IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMKKwllbHNlCisJCWVjaG8g
cHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCA7OworICAgIE5JTEUqOio6KjpkY29zeCkK
KwllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0CisJZXhpdCA7OworICAgIERSUz82MDAwOnVuaXg6
NC4wOjYqKQorCWVjaG8gc3BhcmMtaWNsLW54NgorCWV4aXQgOzsKKyAgICBEUlM/NjAwMDpVTklY
X1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2FzZSBgL3Vzci9iaW4vdW5h
bWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKKwllc2Fj
IDs7CisgICAgczM5MHg6U3VuT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tc29s
YXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7
CisgICAgc3VuNEg6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAk
e1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6
U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLXN1bi1zb2xh
cmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsK
KyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hv
IGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGk4NnBjOlN1
bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQK
KwlTVU5fQVJDSD0iaTM4NiIKKwkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBp
cyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUgdGhhdCB0aGUgU3VuIGNj
IGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCisJIyBUaGlzIHRl
c3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdu
b19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCSAgICBpZiAoZWNobyAnI2lmZGVmIF9fYW1kNjQn
OyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkoQ0NPUFRTPSAkQ0Nf
Rk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElTXzY0QklUX0FSQ0ggPi9k
ZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPSJ4ODZfNjQiCisJICAgIGZpCisJZmkKKwll
Y2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg
J3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjYqOiopCisJIyBBY2NvcmRp
bmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUK
KwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1bk9TNiB3aWxsIGJlIGxp
a2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNvbGFyaXMgdGhhbiBTdW5P
UzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAt
ZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6KjoqKQorCWNhc2UgImAv
dXNyL2Jpbi9hcmNoIC1rYCIgaW4KKwkgICAgU2VyaWVzKnxTNCopCisJCVVOQU1FX1JFTEVBU0U9
YHVuYW1lIC12YAorCQk7OworCWVzYWMKKwkjIEphcGFuZXNlIExhbmd1YWdlIHZlcnNpb25zIGhh
dmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIGA0LjEuMy1KTCcuCisJZWNobyBzcGFyYy1zdW4tc3Vu
b3NgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vJ2AKKwlleGl0IDs7CisgICAg
c3VuMyo6U3VuT1M6KjoqKQorCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJ
ZXhpdCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9l
dGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAorCXRl
c3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxFQVNFPTMKKwljYXNlICJg
L2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVf
UkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1zdW4tc3Vub3Mke1VOQU1F
X1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgOzsKKyAgICBhdXNocDpTdW5PUzoqOiopCisJ
ZWNobyBzcGFyYy1hdXNwZXgtc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICMg
VGhlIHNpdHVhdGlvbiBmb3IgTWlOVCBpcyBhIGxpdHRsZSBjb25mdXNpbmcuICBUaGUgbWFjaGlu
ZSBuYW1lCisgICAgIyBjYW4gYmUgdmlydHVhbGx5IGV2ZXJ5dGhpbmcgKGV2ZXJ5dGhpbmcgd2hp
Y2ggaXMgbm90CisgICAgIyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQg
aGF2ZSBhIHByb2Nlc3NvcgorICAgICMgPiBtNjgwMDApLiAgVGhlIHN5c3RlbSBuYW1lIHJhbmdl
cyBmcm9tICJNaU5UIiBvdmVyICJGcmVlTWlOVCIKKyAgICAjIHRvIHRoZSBsb3dlcmNhc2UgdmVy
c2lvbiAibWludCIgKG9yICJmcmVlbWludCIpLiAgRmluYWxseQorICAgICMgdGhlIHN5c3RlbSBu
YW1lICJUT1MiIGRlbm90ZXMgYSBzeXN0ZW0gd2hpY2ggaXMgYWN0dWFsbHkgbm90CisgICAgIyBN
aU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hv
dWxkCisgICAgIyBiZSBubyBwcm9ibGVtLgorICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRh
cmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02
OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXRhcmkqOipNaU5U
Oio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4
ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBleGl0IDs7CisgICAgKmZhbGNv
bio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCisg
ICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAg
ICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiop
CisgICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBl
eGl0IDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMq
OipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0K
KyAgICAgICAgZXhpdCA7OworICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6
KjoqKQorICAgICAgICBlY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorICAg
ICAgICBleGl0IDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGstYXBwbGUtbWFj
aHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcG93ZXJwYzptYWNodGVuOio6KikK
KwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7Cisg
ICAgUklTQyo6TWFjaDoqOiopCisJZWNobyBtaXBzLWRlYy1tYWNoX2JzZDQuMworCWV4aXQgOzsK
KyAgICBSSVNDKjpVTFRSSVg6KjoqKQorCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxF
QVNFfQorCWV4aXQgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4LWRlYy11bHRy
aXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIDIwMjA6Q0xJWDoqOiogfCAyNDMwOkNM
SVg6KjoqKQorCWVjaG8gY2xpcHBlci1pbnRlcmdyYXBoLWNsaXgke1VOQU1FX1JFTEVBU0V9CisJ
ZXhpdCA7OworICAgIG1pcHM6KjoqOlVNSVBTIHwgbWlwczoqOio6UklTQ29zKQorCWV2YWwgJHNl
dF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworI2lmZGVmIF9f
Y3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIGZvciBwcmludGYoKSBwcm90b3R5cGUg
Ki8KKwlpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworI2Vsc2UKKwlpbnQgbWFp
biAoYXJnYywgYXJndikgaW50IGFyZ2M7IGNoYXIgKmFyZ3ZbXTsgeworI2VuZGlmCisJI2lmIGRl
ZmluZWQgKGhvc3RfbWlwcykgJiYgZGVmaW5lZCAoTUlQU0VCKQorCSNpZiBkZWZpbmVkIChTWVNU
WVBFX1NZU1YpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzeXN2XG4iLCBhcmd2WzFd
KTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1ZSNCkKKwkgIHBy
aW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N2cjRcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkj
ZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0MykgfHwgZGVmaW5lZChTWVNUWVBFX0JT
RCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc2JzZFxuIiwgYXJndlsxXSk7IGV4aXQg
KDApOworCSNlbmRpZgorCSNlbmRpZgorCSAgZXhpdCAoLTEpOworCX0KK0VPRgorCSRDQ19GT1Jf
QlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmCisJICBkdW1teWFyZz1gZWNobyAiJHtVTkFNRV9S
RUxFQVNFfSIgfCBzZWQgLW4gJ3MvXChbMC05XSpcKS4qL1wxL3AnYCAmJgorCSAgU1lTVEVNX05B
TUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisJICAgIHsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhp
dDsgfQorCWVjaG8gbWlwcy1taXBzLXJpc2NvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7Cisg
ICAgTW90b3JvbGE6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1tb3Rvcm9sYS1wb3dl
cm1heAorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hvIHBvd2VycGMt
aGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6KjoqOlBvd2VyTUFYX09T
IHwgU3luZXJneTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1h
eAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOlBvd2VyX1VOSVg6KjoqKQorCWVjaG8gcG93ZXJw
Yy1oYXJyaXMtcG93ZXJ1bml4CisJZXhpdCA7OworICAgIG04OGs6Q1gvVVg6Nyo6KikKKwllY2hv
IG04OGstaGFycmlzLWN4dXg3CisJZXhpdCA7OworICAgIG04OGs6Kjo0KjpSNCopCisJZWNobyBt
ODhrLW1vdG9yb2xhLXN5c3Y0CisJZXhpdCA7OworICAgIG04OGs6KjozKjpSMyopCisJZWNobyBt
ODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIEFWaWlPTjpkZ3V4Oio6KikKKyAgICAg
ICAgIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKyAgICAgICAg
VU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNT
T1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgor
CSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8
IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhl
bgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hv
IG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVj
aG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisgCWV4aXQgOzsKKyAgICBNODgq
OkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorCWVjaG8gbTg4ay1kb2xwaGluLXN5
c3YzCisJZXhpdCA7OworICAgIE04OCo6KjpSMyo6KikKKwkjIERlbHRhIDg4ayBzeXN0ZW0gcnVu
bmluZyBTVlIzCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIFhEODgq
Oio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVj
aG8gbTg4ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDs7CisgICAgVGVrNDNbMC05XVswLTldOlVU
ZWs6KjoqKSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKKwllY2hv
IG02OGstdGVrdHJvbml4LWJzZAorCWV4aXQgOzsKKyAgICAqOklSSVgqOio6KikKKwllY2hvIG1p
cHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCisJZXhp
dCA7OworICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIu
MS4xIGlzIFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgIyB1bmFtZSAtbSBnaXZl
cyBhbiA4IGhleC1jb2RlIENQVSBpZAorCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhh
dDogZWNobyAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICBpKjg2OkFJWDoqOiopCisJ
ZWNobyBpMzg2LWlibS1haXgKKwlleGl0IDs7CisgICAgaWE2NDpBSVg6KjoqKQorCWlmIFsgLXgg
L3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAor
CWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAq
OkFJWDoyOjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVs
bCAyPiYxOyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8
PCBFT0YgPiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigp
CisJCQl7CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93
ZXJwYy1pYm0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJaWYgJENDX0ZP
Ul9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKwkJdGhl
bgorCQkJZWNobyAiJFNZU1RFTV9OQU1FIgorCQllbHNlCisJCQllY2hvIHJzNjAwMC1pYm0tYWl4
My4yLjUKKwkJZmkKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2
L251bGwgMj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVj
aG8gcnM2MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOls0NTZdKQor
CUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxl
IHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVs
ICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJ
Qk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXgg
L3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAor
CWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQor
CWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6
KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDs7CisgICAgaWJtcnQ6NC40QlNEOip8
cm9tcC1pYm06QlNEOiopCisJZWNobyByb21wLWlibS1ic2Q0LjQKKwlleGl0IDs7CisgICAgaWJt
cnQ6KkJTRDoqfHJvbXAtaWJtOkJTRDoqKSAgICAgICAgICAgICMgY292ZXJzIFJUL1BDIEJTRCBh
bmQKKwllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1l
IGFkZGVkIHRvCisJZXhpdCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXBvcnQ6
IHJvbXAtaWJtIEJTRCA0LjMKKyAgICAqOkJPU1g6KjoqKQorCWVjaG8gcnM2MDAwLWJ1bGwtYm9z
eAorCWV4aXQgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5
c3YzCisJZXhpdCA7OworICAgIDkwMDAvWzM0XT8/OjQuM2JzZDoxLio6KikKKwllY2hvIG02OGst
aHAtYnNkCisJZXhpdCA7OworICAgIGhwMzAwOjQuNEJTRDoqOiogfCA5MDAwL1szNF0/Pzo0LjNi
c2Q6Mi4qOiopCisJZWNobyBtNjhrLWhwLWJzZDQuNAorCWV4aXQgOzsKKyAgICA5MDAwL1szNDY3
OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg
J3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAw
MC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkg
ICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlm
IFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vz
ci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAg
ICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4v
ZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBp
bgorICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVf
UEFfUklTQzFfMAorICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIg
OzsgIyBDUFVfUEFfUklTQzFfMQorICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAg
ICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBI
UF9BUkNIPSJocHBhMi4wbiIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FS
Q0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVY
IDEwLjIwCisgICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgICAg
ICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBl
dmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8
IEVPRiA+JGR1bW15LmMKKworICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQorICAg
ICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICAgICNpbmNsdWRlIDx1
bmlzdGQuaD4KKworICAgICAgICAgICAgICBpbnQgbWFpbiAoKQorICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKyAgICAgICAgICAgICAg
ICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKyAgICAgICAgICAgICAg
I2VuZGlmCisgICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZF
UlNJT04pOworCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKKyAgICAgICAgICAgICAg
CXsKKyAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7
IGJyZWFrOworICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGEx
LjEiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgorICAgICAg
ICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisgICAgICAgICAgICAgIAkgICAg
c3dpdGNoIChiaXRzKQorICAgICAgICAgICAgICAJCXsKKyAgICAgICAgICAgICAgCQljYXNlIDY0
OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisgICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0
cyAoImhwcGEyLjBuIik7IGJyZWFrOworICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJo
cHBhMi4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJCX0gYnJlYWs7CisgICAgICAgICAgICAg
ICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisgICAgICAgICAgICAgIAkg
ICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgICNlbmRpZgorICAgICAg
ICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAg
IAl9CisgICAgICAgICAgICAgICAgICBleGl0ICgwKTsKKyAgICAgICAgICAgICAgfQorRU9GCisJ
CSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVs
bCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FS
Q0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0K
Kwl0aGVuCisJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKworCSAgICAjIGhwcGEyLjB3LWhw
LWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZworCSAg
ICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJuZWwgYW5k
IGEgY29tcGlsZXIKKwkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05VIGFuZCBIUCB1
c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKKwkgICAgIworCSAgICAjICQgQ0NfRk9SX0JVSUxE
PWNjIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTIuMHctaHAtaHB1eDExLjIzCisJICAg
ICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4g
aHBwYTY0LWhwLWhwdXgxMS4yMworCisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAk
Q0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCAtcSBfX0xQNjRfXworCSAg
ICB0aGVuCisJCUhQX0FSQ0g9ImhwcGEyLjB3IgorCSAgICBlbHNlCisJCUhQX0FSQ0g9ImhwcGE2
NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KKwll
eGl0IDs7CisgICAgaWE2NDpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxF
QVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJZWNobyBpYTY0LWhwLWhwdXgke0hQVVhf
UkVWfQorCWV4aXQgOzsKKyAgICAzMDUwKjpISS1VWDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9i
dWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2luY2x1ZGUgPHVuaXN0ZC5o
PgorCWludAorCW1haW4gKCkKKwl7CisJICBsb25nIGNwdSA9IHN5c2NvbmYgKF9TQ19DUFVfVkVS
U0lPTik7CisJICAvKiBUaGUgb3JkZXIgbWF0dGVycywgYmVjYXVzZSBDUFVfSVNfSFBfTUM2OEsg
ZXJyb25lb3VzbHkgcmV0dXJucworCSAgICAgdHJ1ZSBmb3IgQ1BVX1BBX1JJU0MxXzAuICBDUFVf
SVNfUEFfUklTQyByZXR1cm5zIGNvcnJlY3QKKwkgICAgIHJlc3VsdHMsIGhvd2V2ZXIuICAqLwor
CSAgaWYgKENQVV9JU19QQV9SSVNDIChjcHUpKQorCSAgICB7CisJICAgICAgc3dpdGNoIChjcHUp
CisJCXsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMC1oaXRhY2hpLWhp
dXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEt
aGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MyXzA6IHB1dHMg
KCJocHBhMi4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBkZWZhdWx0OiBwdXRzICgi
aHBwYS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgZWxzZSBpZiAo
Q1BVX0lTX0hQX01DNjhLIChjcHUpKQorCSAgICBwdXRzICgibTY4ay1oaXRhY2hpLWhpdXh3ZTIi
KTsKKwkgIGVsc2UgcHV0cyAoInVua25vd24taGl0YWNoaS1oaXV4d2UyIik7CisJICBleGl0ICgw
KTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1f
TkFNRT1gJGR1bW15YCAmJgorCQl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hv
IHVua25vd24taGl0YWNoaS1oaXV4d2UyCisJZXhpdCA7OworICAgIDkwMDAvNz8/OjQuM2JzZDoq
OiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtYnNkCisJZXhp
dCA7OworICAgIDkwMDAvOD8/OjQuM2JzZDoqOiopCisJZWNobyBocHBhMS4wLWhwLWJzZAorCWV4
aXQgOzsKKyAgICAqOT8/KjpNUEUvaVg6KjoqIHwgKjMwMDAqOk1QRS9pWDoqOiopCisJZWNobyBo
cHBhMS4wLWhwLW1wZWl4CisJZXhpdCA7OworICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06
T1NGMToqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1vc2YKKwlleGl0IDs7CisgICAgaHA4Pz86T1NG
MToqOiopCisJZWNobyBocHBhMS4wLWhwLW9zZgorCWV4aXQgOzsKKyAgICBpKjg2Ok9TRjE6Kjoq
KQorCWlmIFsgLXggL3Vzci9zYmluL3N5c3ZlcnNpb24gXSA7IHRoZW4KKwkgICAgZWNobyAke1VO
QU1FX01BQ0hJTkV9LXVua25vd24tb3NmMW1rCisJZWxzZQorCSAgICBlY2hvICR7VU5BTUVfTUFD
SElORX0tdW5rbm93bi1vc2YxCisJZmkKKwlleGl0IDs7CisgICAgcGFyaXNjKjpMaXRlcyo6Kjoq
KQorCWVjaG8gaHBwYTEuMS1ocC1saXRlcworCWV4aXQgOzsKKyAgICBDMSo6Q29udmV4T1M6Kjoq
IHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQorCWVjaG8gYzEtY29udmV4LWJzZAorICAgICAgICBl
eGl0IDs7CisgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKKwlp
ZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwll
bHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisgICAgICAgIGV4aXQgOzsKKyAgICBDMzQqOkNv
bnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisJZWNobyBjMzQtY29udmV4LWJz
ZAorICAgICAgICBleGl0IDs7CisgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4
T1M6QzM4KjoqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCA7OworICAgIEM0
KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCisJZWNobyBjNC1jb252ZXgt
YnNkCisgICAgICAgIGV4aXQgOzsKKyAgICBDUkFZKlktTVA6KjoqOiopCisJZWNobyB5bXAtY3Jh
eS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0
IDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5
LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwp
L1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7
OworICAgIENSQVkqVFM6KjoqOiopCisJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVB
U0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUM0U6Kjoq
OiopCisJZWNobyBhbHBoYWV2NS1jcmF5LXVuaWNvc21rJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAt
ZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqU1YxOio6KjoqKQorCWVjaG8g
c3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8n
CisJZXhpdCA7OworICAgICo6VU5JQ09TL21wOio6KikKKwllY2hvIGNyYXludi1jcmF5LXVuaWNv
c21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7Owor
ICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQor
CUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVon
ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisgICAgICAgIEZVSklUU1VfU1lTPWB1bmFt
ZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKyAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8g
JHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKyAgICAgICAgZWNobyAiJHtGVUpJ
VFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKyAgICAgICAg
ZXhpdCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKyAgICAgICAgRlVKSVRTVV9T
WVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorICAgICAgICBGVUpJVFNVX1JF
TD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
JyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAg
ICBlY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhp
dCA7OworICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwg
RW1iZWRkZWQvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9S
RUxFQVNFfQorCWV4aXQgOzsKKyAgICBzcGFyYyo6QlNEL09TOio6KikKKwllY2hvIHNwYXJjLXVu
a25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpCU0QvT1M6KjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhp
dCA7OworICAgICo6RnJlZUJTRDoqOiopCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJICAg
IHBjOTgpCisJCWVjaG8gaTM4Ni11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9
fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJICAgIGFtZDY0KQorCQllY2hvIHg4Nl82NC11bmtu
b3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7
CisJICAgICopCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWZyZWVic2RgZWNobyAk
e1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJZXNhYworCWV4aXQgOzsK
KyAgICBpKjpDWUdXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorCWV4
aXQgOzsKKyAgICAqOk1JTkdXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMy
CisJZXhpdCA7OworICAgIGkqOndpbmRvd3MzMio6KikKKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRl
cyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KKyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3
MzIKKwlleGl0IDs7CisgICAgaSo6UFcqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3
MzIKKwlleGl0IDs7CisgICAgKjpJbnRlcml4KjoqKQorICAgIAljYXNlICR7VU5BTUVfTUFDSElO
RX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0K
KwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJ
ZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJ
ICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJ
CWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2Oldp
bmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElO
RX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2luZG93c19OVDoqKQorCWVjaG8geDg2XzY0
LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93
c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUg
Z2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0y
LjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFz
ZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBj
LWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElO
RX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpDWUdXSU4qOio6KiB8IHg4Nl82NDpDWUdX
SU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpD
WUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAg
cHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hv
ICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICAqOkdO
VToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8gYGVjaG8gJHtVTkFNRV9NQUNISU5FfXxz
ZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi1nbnVgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNl
ZCAtZSAncywvLiokLCwnYAorCWV4aXQgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5
c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0t
dW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdb
QS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydg
LWdudQorCWV4aXQgOzsKKyAgICBpKjg2Ok1pbml4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElO
RX0tcGMtbWluaXgKKwlleGl0IDs7CisgICAgYWxwaGE6TGludXg6KjoqKQorCWNhc2UgYHNlZCAt
biAnL15jcHUgbW9kZWwvcy9eLio6IFwoLipcKS9cMS9wJyA8IC9wcm9jL2NwdWluZm9gIGluCisJ
ICBFVjUpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7OworCSAgRVY1NikgIFVOQU1FX01BQ0hJ
TkU9YWxwaGFldjU2IDs7CisJICBQQ0E1NikgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJ
ICBQQ0E1NykgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBFVjYpICAgVU5BTUVfTUFD
SElORT1hbHBoYWV2NiA7OworCSAgRVY2NykgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CisJ
ICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKyAgICAgICAgZXNhYworCW9iamR1
bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQorCWlmIHRlc3Qg
IiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAk
e1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorCWV4aXQgOzsKKyAgICBh
cm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9F
QUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEg
X19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1s
aW51eC1nbnUKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4
LWdudWVhYmkKKwlmaQorCWV4aXQgOzsKKyAgICBhdnIzMio6TGludXg6KjoqKQorCWVjaG8gJHtV
TkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4
Oio6KikKKwllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3Jpc3YzMjpM
aW51eDoqOiopCisJZWNobyBjcmlzdjMyLWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGZy
djpMaW51eDoqOiopCisgICAgCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJZXhpdCA7Owor
ICAgIGkqODY6TGludXg6KjoqKQorCUxJQkM9Z251CisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAor
CXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJ
QkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15
LmMgMj4vZGV2L251bGwgfCBncmVwICdeTElCQydgCisJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1w
Yy1saW51eC0ke0xJQkN9IgorCWV4aXQgOzsKKyAgICBpYTY0OkxpbnV4Oio6KikKKwllY2hvICR7
VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTMycio6TGlu
dXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQg
OzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1s
aW51eC1nbnUKKwlleGl0IDs7CisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6Kjoq
KQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXku
YworCSN1bmRlZiBDUFUKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1F
X01BQ0hJTkV9ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VM
KSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT0ke1VOQU1FX01B
Q0hJTkV9ZWwKKwkjZWxzZQorCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19N
SVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCisJQ1BVPSR7VU5B
TUVfTUFDSElORX0KKwkjZWxzZQorCUNQVT0KKwkjZW5kaWYKKwkjZW5kaWYKK0VPRgorCWV2YWwg
YCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKKwl0
ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251Ijsg
ZXhpdDsgfQorCTs7CisgICAgb3IzMjpMaW51eDoqOiopCisJZWNobyBvcjMyLXVua25vd24tbGlu
dXgtZ251CisJZXhpdCA7OworICAgIHBhZHJlOkxpbnV4Oio6KikKKwllY2hvIHNwYXJjLXVua25v
d24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpM
aW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAg
cGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVs
CisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwg
Y3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdu
dSA7OworCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAg
ICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBw
YzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQg
OzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LWdudQor
CWV4aXQgOzsKKyAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKwllY2hvICR7
VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZXhpdCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikK
KyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7Owor
ICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgt
Z251CisJZXhpdCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB2
YXg6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CisJZXhp
dCA7OworICAgIHg4Nl82NDpMaW51eDoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1n
bnUKKwlleGl0IDs7CisgICAgeHRlbnNhKjpMaW51eDoqOiopCisgICAgCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkRZTklYL3B0eDo0
KjoqKQorCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHgg
aW4gdGhlcmUuCisJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUg
bm9kZW5hbWUgaW4gYm90aAorCSMgc3lzbmFtZSBhbmQgbm9kZW5hbWUuCisJZWNobyBpMzg2LXNl
cXVlbnQtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKKyAgICAg
ICAgIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24g
dmVyc2lvbgorICAgICAgICAjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCisgICAg
ICAgICMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0
Y2ggdGhpcywKKwkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCisgICAgICAgICMgVXNl
IHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6
T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBV
bml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5B
TUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgOzsKKyAgICBpKjg2OlhUUy0zMDA6KjpTVE9Q
KQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKwlleGl0IDs7CisgICAgaSo4
NjphdGhlb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWF0aGVvcworCWV4
aXQgOzsKKyAgICBpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMt
c3lsbGFibGUKKwlleGl0IDs7CisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzoz
LlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCisJZWNobyBpMzg2LXVua25vd24tbHlu
eG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpKjg2OipET1M6KjoqKQorCWVjaG8g
JHtVTkFNRV9NQUNISU5FfS1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIGkqODY6Kjo0Lio6
KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFT
RX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsu
aCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11
bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBj
LXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgOzsKKyAgICBpKjg2Oio6NTpbNjc4XSopCisg
ICAgCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCWNhc2UgYC9i
aW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAgIFVOQU1F
X01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYg
OzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwllc2FjCisJ
ZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0ke1VOQU1F
X1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6KjozLjI6KikKKwlp
ZiB0ZXN0IC1mIC91c3Ivb3B0aW9ucy9jYi5uYW1lOyB0aGVuCisJCVVOQU1FX1JFTD1gc2VkIC1u
ICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKKwkJZWNobyAke1VOQU1F
X01BQ0hJTkV9LXBjLWlzYyRVTkFNRV9SRUwKKwllbGlmIC9iaW4vdW5hbWUgLVggMj4vZGV2L251
bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfUkVMPWAoL2Jpbi91bmFtZSAtWHxncmVwIFJl
bGVhc2V8c2VkIC1lICdzLy4qPSAvLycpYAorCQkoL2Jpbi91bmFtZSAtWHxncmVwIGk4MDQ4NiA+
L2Rldi9udWxsKSAmJiBVTkFNRV9NQUNISU5FPWk0ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAn
Xk1hY2hpbmUuKlBlbnRpdW0nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTU4
NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudCAqSUknID4vZGV2L251bGwp
IFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFj
aGluZS4qUGVudGl1bSBQcm8nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4
NgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2NvJFVOQU1FX1JFTAorCWVsc2UKKwkJZWNo
byAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3YzMgorCWZpCisJZXhpdCA7OworICAgIHBjOio6Kjoq
KQorCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgorICAgICAgICAjIHVuYW1lIC1tIHBy
aW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAor
ICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2
LgorCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0
IGNvbmZpZy5zdWIKKwkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIg
Y29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKKwkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KKwll
Y2hvIGk1ODYtcGMtbXNkb3NkamdwcAorICAgICAgICBleGl0IDs7CisgICAgSW50ZWw6TWFjaDoz
KjoqKQorCWVjaG8gaTM4Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQor
CWVjaG8gaTg2MC1pbnRlbC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYw
LVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYv
bnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVB
U0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1T
VlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11
bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwll
eGl0IDs7CisgICAgbWluaSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02
ODAxMC1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMu
NTFtKQorCWVjaG8gbTY4ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQt
TklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIz
Vls1Njc4XSo6KikKKwl0ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5
c3YnOyBleGl0OyB9IDs7CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6
My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6
NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDoz
LjAgfCBTSEcyOio6NC4wOjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVz
dCAtciAvZXRjLy5yZWxpZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwo
WzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rl
di9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2
NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4v
Z3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7
T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQu
MDoqKQorICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9u
dWxsIFwKKyAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAg
ICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIg
L2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChb
MC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2
L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lz
djQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmlu
L2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQu
MyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dy
ZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7
T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6
My4wKjoqKQorCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0
IDs7CisgICAgbWM2ODAzMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCWVjaG8gbTY4ay1hdGFyaS1z
eXN2NAorCWV4aXQgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKKwllY2hvIHNwYXJjLXVu
a25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICByczYwMDA6THlueE9T
OjIuKjoqKQorCWVjaG8gcnM2MDAwLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4
aXQgOzsKKyAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2VyUEM6THlueE9TOjMuWzAxXSo6
KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1seW54
b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCisJ
ZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSTSo6UmVs
aWFudFVOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICBSTSo6
U0lOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlNJTklY
LSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVO
QU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJCWVjaG8gJHtVTkFNRV9NQUNI
SU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25pLXN5c3YKKwlmaQorCWV4aXQg
OzsKKyAgICBQRU5USVVNOio6NC4wKjoqKSAjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAw
JyBTVlI0L01QIGVmZm9ydAorICAgICAgICAgICAgICAgICAgICAgICMgc2F5cyA8UmljaGFyZC5N
LkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKyAgICAgICAgZWNobyBpNTg2LXVuaXN5cy1zeXN2
NAorICAgICAgICBleGl0IDs7CisgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCisJIyBGcm9t
IEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorCSMgSG93IGFib3V0IGRpZmZl
cmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQorCWVjaG8gaHBw
YTEuMS1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNl
YW5mQHN3ZGMuc3RyYXR1cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7
CisgICAgaSo4NjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVj
aG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICAqOlZPUzoqOiop
CisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyBocHBhMS4xLXN0cmF0dXMt
dm9zCisJZXhpdCA7OworICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgk
e1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG5ld3MqOk5FV1MtT1M6Nio6KikKKwllY2hv
IG1pcHMtc29ueS1uZXdzb3M2CisJZXhpdCA7OworICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6Kjoq
IHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQorCWlmIFsgLWQgL3Vz
ci9uZWMgXTsgdGhlbgorCSAgICAgICAgZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNF
fQorCWVsc2UKKwkgICAgICAgIGVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9
CisJZmkKKyAgICAgICAgZXhpdCA7OworICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmlu
ZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYmUtYmVv
cworCWV4aXQgOzsKKyAgICBCZU1hYzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gTWFjIG9y
IE1hYyBjbG9uZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWFwcGxlLWJlb3MKKwlleGl0IDs7
CisgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJs
ZS4KKwllY2hvIGk1ODYtcGMtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBI
YWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1
CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g0LW5lYy1zdXBlcnV4
JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hv
IHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNjpTVVBF
Ui1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3LW5lYy1zdXBlcnV4JHtVTkFNRV9S
RUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVYOio6KikKKwllY2hvIHN4OC1uZWMt
c3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtOFI6U1VQRVItVVg6Kjoq
KQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAg
UG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtcmhhcHNvZHkke1VOQU1F
X1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6KjoqKQorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpE
YXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NP
Uj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgIGkzODYpCisJCWV2YWwg
JHNldF9jY19mb3JfYnVpbGQKKwkJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVy
X2ZvdW5kJyBdOyB0aGVuCisJCSAgaWYgKGVjaG8gJyNpZmRlZiBfX0xQNjRfXyc7IGVjaG8gSVNf
NjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCSAgICAgIChDQ09QVFM9ICRDQ19GT1Jf
QlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+
L2Rldi9udWxsCisJCSAgdGhlbgorCQkgICAgICBVTkFNRV9QUk9DRVNTT1I9Ing4Nl82NCIKKwkJ
ICBmaQorCQlmaSA7OworCSAgICB1bmtub3duKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7Owor
CWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBsZS1kYXJ3aW4ke1VOQU1FX1JFTEVB
U0V9CisJZXhpdCA7OworICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoq
KQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NP
UiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5F
PXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1x
bngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UU5YOio6NCopCisJZWNobyBpMzg2
LXBjLXFueAorCWV4aXQgOzsKKyAgICBOU0UtPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBu
c2UtdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNSLT86Tk9OU1RP
UF9LRVJORUw6KjoqKQorCWVjaG8gbnNyLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhp
dCA7OworICAgICo6Tm9uU3RvcC1VWDoqOiopCisJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgK
KwlleGl0IDs7CisgICAgQlMyMDAwOlBPU0lYKjoqOiopCisJZWNobyBiczIwMDAtc2llbWVucy1z
eXN2CisJZXhpdCA7OworICAgIERTLyo6VU5JWF9TeXN0ZW1fVjoqOiopCisJZWNobyAke1VOQU1F
X01BQ0hJTkV9LSR7VU5BTUVfU1lTVEVNfS0ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAg
ICo6UGxhbjk6KjoqKQorCSMgInVuYW1lIC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRj
cHV0eXBlIGluc3RlYWQuIDM4NgorCSMgaXMgY29udmVydGVkIHRvIGkzODYgZm9yIGNvbnNpc3Rl
bmN5IHdpdGggb3RoZXIgeDg2CisJIyBvcGVyYXRpbmcgc3lzdGVtcy4KKwlpZiB0ZXN0ICIkY3B1
dHlwZSIgPSAiMzg2IjsgdGhlbgorCSAgICBVTkFNRV9NQUNISU5FPWkzODYKKwllbHNlCisJICAg
IFVOQU1FX01BQ0hJTkU9IiRjcHV0eXBlIgorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu
a25vd24tcGxhbjkKKwlleGl0IDs7CisgICAgKjpUT1BTLTEwOio6KikKKwllY2hvIHBkcDEwLXVu
a25vd24tdG9wczEwCisJZXhpdCA7OworICAgICo6VEVORVg6KjoqKQorCWVjaG8gcGRwMTAtdW5r
bm93bi10ZW5leAorCWV4aXQgOzsKKyAgICBLUzEwOlRPUFMtMjA6KjoqIHwgS0wxMDpUT1BTLTIw
Oio6KiB8IFRZUEU0OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtZGVjLXRvcHMyMAorCWV4aXQg
OzsKKyAgICBYS0wtMTpUT1BTLTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRw
MTAteGtsLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAt
dW5rbm93bi10b3BzMjAKKwlleGl0IDs7CisgICAgKjpJVFM6KjoqKQorCWVjaG8gcGRwMTAtdW5r
bm93bi1pdHMKKwlleGl0IDs7CisgICAgU0VJOio6KjpTRUlVWCkKKyAgICAgICAgZWNobyBtaXBz
LXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEcmFnb25GbHk6Kjoq
KQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVf
UkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKKwlleGl0IDs7CisgICAgKjoqVk1TOio6KikK
KyAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VO
QU1FX01BQ0hJTkV9IiBpbgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7Owor
CSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1k
ZWMtdm1zIDsgZXhpdCA7OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkz
ODYtcGMteGVuaXgKKwlleGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1F
X01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4q
JC8vJworCWV4aXQgOzsKKyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5F
fS1wYy1yZG9zCisJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01B
Q0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFu
ZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVf
TUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9O
fSIgMT4mMgorCitldmFsICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisj
aWZkZWYgX1NFUVVFTlRfCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMv
dXRzbmFtZS5oPgorI2VuZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBk
ZWZpbmVkIChNSVBTRUIpCisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3Mi
LiAgUGVyaGFwcyBCRkQgc2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4g
ICovCisgIHByaW50ZiAoIm1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5j
bHVkZSA8c3lzL3BhcmFtLmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNp
ZmRlZiBORVdTT1M0CisgICAgICAgICAgIjQiCisjZWxzZQorCSAgIiIKKyNlbmRpZgorICAgICAg
ICAgKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19hcm0pICYm
IGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKKyAgcHJpbnRmICgiYXJtLWFj
b3JuLXJpc2NpeFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChocDMwMCkg
JiYgIWRlZmluZWQgKGhwdXgpCisgIHByaW50ZiAoIm02OGstaHAtYnNkXG4iKTsgZXhpdCAoMCk7
CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE5lWFQpCisjaWYgIWRlZmluZWQgKF9fQVJDSElURUNU
VVJFX18pCisjZGVmaW5lIF9fQVJDSElURUNUVVJFX18gIm02OGsiCisjZW5kaWYKKyAgaW50IHZl
cnNpb247CisgIHZlcnNpb249YChob3N0aW5mbyB8IHNlZCAtbiAncy8uKk5lWFQgTWFjaCBcKFsw
LTldKlwpLiovXDEvcCcpIDI+L2Rldi9udWxsYDsKKyAgaWYgKHZlcnNpb24gPCA0KQorICAgIHBy
aW50ZiAoIiVzLW5leHQtbmV4dHN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7
CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy1uZXh0LW9wZW5zdGVwJWRcbiIsIF9fQVJDSElURUNU
VVJFX18sIHZlcnNpb24pOworICBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTVVM
VElNQVgpIHx8IGRlZmluZWQgKG4xNikKKyNpZiBkZWZpbmVkIChVTUFYVikKKyAgcHJpbnRmICgi
bnMzMmstZW5jb3JlLXN5c3ZcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaWYgZGVmaW5lZCAoQ01V
KQorICBwcmludGYgKCJuczMyay1lbmNvcmUtbWFjaFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyAg
cHJpbnRmICgibnMzMmstZW5jb3JlLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYK
KyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX18zODZCU0RfXykKKyAgcHJpbnRmICgiaTM4Ni1wYy1i
c2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoc2VxdWVudCkKKyNpZiBk
ZWZpbmVkIChpMzg2KQorICBwcmludGYgKCJpMzg2LXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgw
KTsKKyNlbmRpZgorI2lmIGRlZmluZWQgKG5zMzIwMDApCisgIHByaW50ZiAoIm5zMzJrLXNlcXVl
bnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChf
U0VRVUVOVF8pCisgICAgc3RydWN0IHV0c25hbWUgdW47CisKKyAgICB1bmFtZSgmdW4pOworCisg
ICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYyIiwgMikgPT0gMCkgeworCXByaW50ZiAoImkz
ODYtc2VxdWVudC1wdHgyXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIGlmIChzdHJuY21wKHVu
LnZlcnNpb24sICJWMSIsIDIpID09IDApIHsgLyogWFhYIGlzIFYxIGNvcnJlY3Q/ICovCisJcHJp
bnRmICgiaTM4Ni1zZXF1ZW50LXB0eDFcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgcHJpbnRm
ICgiaTM4Ni1zZXF1ZW50LXB0eFxuIik7IGV4aXQgKDApOworCisjZW5kaWYKKworI2lmIGRlZmlu
ZWQgKHZheCkKKyMgaWYgIWRlZmluZWQgKHVsdHJpeCkKKyMgIGluY2x1ZGUgPHN5cy9wYXJhbS5o
PgorIyAgaWYgZGVmaW5lZCAoQlNEKQorIyAgIGlmIEJTRCA9PSA0MworICAgICAgcHJpbnRmICgi
dmF4LWRlYy1ic2Q0LjNcbiIpOyBleGl0ICgwKTsKKyMgICBlbHNlCisjICAgIGlmIEJTRCA9PSAx
OTkwMDYKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zcmVub1xuIik7IGV4aXQgKDApOwor
IyAgICBlbHNlCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAg
ICBlbmRpZgorIyAgIGVuZGlmCisjICBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIp
OyBleGl0ICgwKTsKKyMgIGVuZGlmCisjIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLXVsdHJp
eFxuIik7IGV4aXQgKDApOworIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChhbGxpYW50
KSAmJiBkZWZpbmVkIChpODYwKQorICBwcmludGYgKCJpODYwLWFsbGlhbnQtYnNkXG4iKTsgZXhp
dCAoMCk7CisjZW5kaWYKKworICBleGl0ICgxKTsKK30KK0VPRgorCiskQ0NfRk9SX0JVSUxEIC1v
ICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgor
CXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCisjIEFwb2xsb3MgcHV0IHRoZSBzeXN0
ZW0gdHlwZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBl
Y2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorCisjIENvbnZleCB2ZXJzaW9u
cyB0aGF0IHByZWRhdGUgdW5hbWUgY2FuIHVzZSBnZXRzeXNpbmZvKDEpCisKK2lmIFsgLXggL3Vz
ci9jb252ZXgvZ2V0c3lzaW5mbyBdCit0aGVuCisgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVf
dHlwZWAgaW4KKyAgICBjMSopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMy
KikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1i
c2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIGMzNCopCisJ
ZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMzgqKQorCWVjaG8gYzM4LWNvbnZl
eC1ic2QKKwlleGl0IDs7CisgICAgYzQqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsK
KyAgICBlc2FjCitmaQorCitjYXQgPiYyIDw8RU9GCiskMDogdW5hYmxlIHRvIGd1ZXNzIHN5c3Rl
bSB0eXBlCisKK1RoaXMgc2NyaXB0LCBsYXN0IG1vZGlmaWVkICR0aW1lc3RhbXAsIGhhcyBmYWls
ZWQgdG8gcmVjb2duaXplCit0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLiBJdCBp
cyBhZHZpc2VkIHRoYXQgeW91Citkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24g
b2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KKworICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5v
cmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhF
QUQKK2FuZAorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5n
aXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKK0lmIHRoZSB2ZXJzaW9uIHlv
dSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQorc2VuZCB0aGUgZm9sbG93
aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKK3BlcnRpbmVu
dCB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4gaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgbmVl
ZGVkCitpbmZvcm1hdGlvbiB0byBoYW5kbGUgeW91ciBzeXN0ZW0uCisKK2NvbmZpZy5ndWVzcyB0
aW1lc3RhbXAgPSAkdGltZXN0YW1wCisKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251
bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8
fCBlY2hvIHVua25vd25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVj
aG8gdW5rbm93bmAKK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1
bmtub3duYAorCisvdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rl
di9udWxsYAorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxs
YAorCitob3N0aW5mbyAgICAgICAgICAgICAgID0gYChob3N0aW5mbykgMj4vZGV2L251bGxgCisv
YmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAKKy91
c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsYAor
L2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbGAKKy91c3Iv
YmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsYAorL3Vz
ci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251
bGxgCisKK1VOQU1FX01BQ0hJTkUgPSAke1VOQU1FX01BQ0hJTkV9CitVTkFNRV9SRUxFQVNFID0g
JHtVTkFNRV9SRUxFQVNFfQorVU5BTUVfU1lTVEVNICA9ICR7VU5BTUVfU1lTVEVNfQorVU5BTUVf
VkVSU0lPTiA9ICR7VU5BTUVfVkVSU0lPTn0KK0VPRgorCitleGl0IDEKKworIyBMb2NhbCB2YXJp
YWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkK
KyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDog
IiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC1yIDVi
MjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY29uZmlnLmguaW4KLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvY29uZmlnLmguaW4J
VHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsNDY4IEBACisvKiBjb25m
aWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8K
KworLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3Ig
Q3JheS0yIGFuZCBDcmF5LVlNUAorICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJl
ZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCisgICAqLworI3VuZGVm
IENSQVlfU1RBQ0tTRUdfRU5ECisKKy8qIERlZmluZSB0byAxIGlmIHVzaW5nIGBhbGxvY2EuYycu
ICovCisjdW5kZWYgQ19BTExPQ0EKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBh
bGFybScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9BTEFSTQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSBgYWxsb2NhJywgYXMgYSBmdW5jdGlvbiBvciBtYWNyby4gKi8KKyN1bmRlZiBI
QVZFX0FMTE9DQQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBp
dCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuCisgICAqLworI3VuZGVmIEhBVkVfQUxM
T0NBX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhcnBhL2luZXQuaD4gaGVh
ZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9BUlBBX0lORVRfSAorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYGF0ZXhpdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9BVEVYSVQK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiemVybycgZnVuY3Rpb24uICovCisj
dW5kZWYgSEFWRV9CWkVSTworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2Nr
X2dldHRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGR1cDInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfRFVQMgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRl
ciBmaWxlLiAqLworI3VuZGVmIEhBVkVfRkNOVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYGZkYXRhc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GREFUQVNZTkMK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmb3JrJyBmdW5jdGlvbi4gKi8KKyN1
bmRlZiBIQVZFX0ZPUksKKworLyogRGVmaW5lIHRvIDEgaWYgZnNlZWtvIChhbmQgcHJlc3VtYWJs
eSBmdGVsbG8pIGV4aXN0cyBhbmQgaXMgZGVjbGFyZWQuICovCisjdW5kZWYgSEFWRV9GU0VFS08K
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdHJ1bmNhdGUnIGZ1bmN0aW9uLiAq
LworI3VuZGVmIEhBVkVfRlRSVU5DQVRFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgZ2V0Y3dkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVENXRAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhvc3RieW5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfR0VUSE9TVEJZTkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdl
dGhvc3RuYW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1ROQU1FCisKKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAqLworI3Vu
ZGVmIEhBVkVfR0VUUEFHRVNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBn
ZXR0aW1lb2ZkYXknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaW5ldF9udG9hJyBmdW5jdGlvbi4gKi8KKyN1
bmRlZiBIQVZFX0lORVRfTlRPQQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlu
dHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGlzYXNjaWknIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfSVNBU0NJSQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNyeXB0bycg
bGlicmFyeSAoLWxjcnlwdG8pLiAqLworI3VuZGVmIEhBVkVfTElCQ1JZUFRPCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGliaW50bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRl
ZiBIQVZFX0xJQklOVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJ0JyBs
aWJyYXJ5ICgtbHJ0KS4gKi8KKyN1bmRlZiBIQVZFX0xJQlJUCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgdXVpZCcgbGlicmFyeSAoLWx1dWlkKS4gKi8KKyN1bmRlZiBIQVZFX0xJ
QlVVSUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB5YWpsJyBsaWJyYXJ5ICgt
bHlhamwpLiAqLworI3VuZGVmIEhBVkVfTElCWUFKTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYHonIGxpYnJhcnkgKC1seikuICovCisjdW5kZWYgSEFWRV9MSUJaCisKKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAqLworI3Vu
ZGVmIEhBVkVfTElNSVRTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2Nh
bHRpbWVfcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0NBTFRJTUVfUgorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBHTlUgbGliYyBjb21wYXRpYmxlIGBtYWxsb2Mn
IGZ1bmN0aW9uLCBhbmQKKyAgIHRvIDAgb3RoZXJ3aXNlLiAqLworI3VuZGVmIEhBVkVfTUFMTE9D
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWFsbG9jLmg+IGhlYWRlciBmaWxl
LiAqLworI3VuZGVmIEhBVkVfTUFMTE9DX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBtZW1jaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNQ0hSCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFW
RV9NRU1NT1ZFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhl
YWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTUVNT1JZX0gKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBtZW1zZXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNU0VUCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtkaXInIGZ1bmN0aW9uLiAqLworI3Vu
ZGVmIEhBVkVfTUtESVIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2ZpZm8n
IGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUtGSUZPCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIGEgd29ya2luZyBgbW1hcCcgc3lzdGVtIGNhbGwuICovCisjdW5kZWYgSEFWRV9NTUFQ
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXVubWFwJyBmdW5jdGlvbi4gKi8K
KyN1bmRlZiBIQVZFX01VTk1BUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5l
dGRiLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUREJfSAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5k
ZWYgSEFWRV9ORVRJTkVUX0lOX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBw
YXRoY29uZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QQVRIQ09ORgorCisvKiBEZWZpbmUg
dG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgcHRyZGlmZl90Jy4gKi8KKyN1bmRlZiBI
QVZFX1BUUkRJRkZfVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBHTlUg
bGliYyBjb21wYXRpYmxlIGByZWFsbG9jJyBmdW5jdGlvbiwKKyAgIGFuZCB0byAwIG90aGVyd2lz
ZS4gKi8KKyN1bmRlZiBIQVZFX1JFQUxMT0MKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUFMUEFUSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2NvbXAnIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfUkVHQ09NUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJtZGlyJyBm
dW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JNRElSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFTEVDVAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGVudicgZnVuY3Rpb24uICovCisjdW5kZWYg
SEFWRV9TRVRFTlYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1
bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU09DS0VUCisKKy8qIERlZmluZSB0byAxIGlmIHN0ZGJv
b2wuaCBjb25mb3JtcyB0byBDOTkuICovCisjdW5kZWYgSEFWRV9TVERCT09MX0gKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRkZWYuaD4gaGVhZGVyIGZpbGUuICovCisjdW5k
ZWYgSEFWRV9TVERERUZfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGlu
dC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURElOVF9ICisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhB
VkVfU1RETElCX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJjYXNlY21w
JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkNBU0VDTVAKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBzdHJjaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSQ0hS
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyY3NwbicgZnVuY3Rpb24uICov
CisjdW5kZWYgSEFWRV9TVFJDU1BOCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
c3RyZHVwJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkRVUAorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmVycm9yJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NU
UkVSUk9SCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFk
ZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklO
R19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RybmR1cCcgZnVuY3Rpb24u
ICovCisjdW5kZWYgSEFWRV9TVFJORFVQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgc3RycGJyaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJQQlJLCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RycmNocicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFW
RV9TVFJSQ0hSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3Ryc3BuJyBmdW5j
dGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlNQTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYHN0cnN0cicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJTVFIKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b2wnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfU1RSVE9MCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bCcgZnVu
Y3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJUT1VMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSVE9VTEwKKwor
LyogRGVmaW5lIHRvIDEgaWYgYHN0X2Jsa3NpemUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3Rh
dCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFCisKKy8qIERlZmluZSB0
byAxIGlmIGBzdF9ibG9ja3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCisjdW5k
ZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHN0X3Jk
ZXYnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1Rf
U1RBVF9TVF9SREVWCisKKy8qIERlZmluZSB0byAxIGlmIHlvdXIgYHN0cnVjdCBzdGF0JyBoYXMg
YHN0X2Jsb2NrcycuIERlcHJlY2F0ZWQsIHVzZQorICAgYEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxP
Q0tTJyBpbnN0ZWFkLiAqLworI3VuZGVmIEhBVkVfU1RfQkxPQ0tTCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8c3lzbG9nLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
U1lTTE9HX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZmlsZS5oPiBo
ZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19GSUxFX0gKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIDxzeXMvaW9jdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFW
RV9TWVNfSU9DVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tb3Vu
dC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19NT1VOVF9ICisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLworI3Vu
ZGVmIEhBVkVfU1lTX1BBUkFNX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxz
eXMvc29ja2V0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXR2ZnMuaD4gaGVhZGVyIGZp
bGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1RBVFZGU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNf
U1RBVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVh
ZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfVElNRV9ICisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
U1lTX1RZUEVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx0ZXJtaW9zLmg+
IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfVEVSTUlPU19ICisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgdHpzZXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVFpTRVQK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCisj
dW5kZWYgSEFWRV9VTkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0
ZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1VOSVNURF9ICisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgdmZvcmsnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVkZP
UksKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2Zm9yay5oPiBoZWFkZXIgZmls
ZS4gKi8KKyN1bmRlZiBIQVZFX1ZGT1JLX0gKKworLyogRGVmaW5lIHRvIDEgaWYgYGZvcmsnIHdv
cmtzLiAqLworI3VuZGVmIEhBVkVfV09SS0lOR19GT1JLCisKKy8qIERlZmluZSB0byAxIGlmIGB2
Zm9yaycgd29ya3MuICovCisjdW5kZWYgSEFWRV9XT1JLSU5HX1ZGT1JLCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8eWFqbC95YWpsX3ZlcnNpb24uaD4gaGVhZGVyIGZpbGUuICov
CisjdW5kZWYgSEFWRV9ZQUpMX1lBSkxfVkVSU0lPTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHRo
ZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBfQm9vbCcuICovCisjdW5kZWYgSEFWRV9fQk9PTAorCisv
KiBEZWZpbmUgdG8gMSBpZiBgbHN0YXQnIGRlcmVmZXJlbmNlcyBhIHN5bWxpbmsgc3BlY2lmaWVk
IHdpdGggYSB0cmFpbGluZworICAgc2xhc2guICovCisjdW5kZWYgTFNUQVRfRk9MTE9XU19TTEFT
SEVEX1NZTUxJTksKKworLyogRGVmaW5lIHRvIDEgaWYgYG1ham9yJywgYG1pbm9yJywgYW5kIGBt
YWtlZGV2JyBhcmUgZGVjbGFyZWQgaW4gPG1rZGV2Lmg+LgorICAgKi8KKyN1bmRlZiBNQUpPUl9J
Tl9NS0RFVgorCisvKiBEZWZpbmUgdG8gMSBpZiBgbWFqb3InLCBgbWlub3InLCBhbmQgYG1ha2Vk
ZXYnIGFyZSBkZWNsYXJlZCBpbgorICAgPHN5c21hY3Jvcy5oPi4gKi8KKyN1bmRlZiBNQUpPUl9J
Tl9TWVNNQUNST1MKKworLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRz
IGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCisjdW5kZWYgUEFDS0FHRV9CVUdS
RVBPUlQKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwor
I3VuZGVmIFBBQ0tBR0VfTkFNRQorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVy
c2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9TVFJJTkcKKworLyogRGVm
aW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI3Vu
ZGVmIFBBQ0tBR0VfVEFSTkFNRQorCisvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhp
cyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVVJMCisKKy8qIERlZmluZSB0byB0aGUgdmVy
c2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisKKy8qIElm
IHVzaW5nIHRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGFsbG9jYSwgZGVmaW5lIGlmIHlvdSBrbm93
IHRoZQorICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVy
d2lzZSBpdCB3aWxsIGJlCisgICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVudGltZS4KKwlT
VEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCisJU1RB
Q0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCisJU1RBQ0tf
RElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24gKi8KKyN1bmRlZiBT
VEFDS19ESVJFQ1RJT04KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBo
ZWFkZXIgZmlsZXMuICovCisjdW5kZWYgU1REQ19IRUFERVJTCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAq
LworI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQorCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBB
SVggMywgSW50ZXJpeC4gICovCisjaWZuZGVmIF9BTExfU09VUkNFCisjIHVuZGVmIF9BTExfU09V
UkNFCisjZW5kaWYKKy8qIEVuYWJsZSBHTlUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgaGF2
ZSB0aGVtLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgdW5kZWYgX0dOVV9TT1VSQ0UKKyNl
bmRpZgorLyogRW5hYmxlIHRocmVhZGluZyBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lm
bmRlZiBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MKKyMgdW5kZWYgX1BPU0lYX1BUSFJFQURfU0VN
QU5USUNTCisjZW5kaWYKKy8qIEVuYWJsZSBleHRlbnNpb25zIG9uIEhQIE5vblN0b3AuICAqLwor
I2lmbmRlZiBfVEFOREVNX1NPVVJDRQorIyB1bmRlZiBfVEFOREVNX1NPVVJDRQorI2VuZGlmCisv
KiBFbmFibGUgZ2VuZXJhbCBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lmbmRlZiBfX0VY
VEVOU0lPTlNfXworIyB1bmRlZiBfX0VYVEVOU0lPTlNfXworI2VuZGlmCisKKworLyogRGVmaW5l
IHRvIDEgdG8gbWFrZSBmc2Vla28gdmlzaWJsZSBvbiBzb21lIGhvc3RzIChlLmcuIGdsaWJjIDIu
MikuICovCisjdW5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKworLyogRGVmaW5lIHRvIDEgaWYgb24g
TUlOSVguICovCisjdW5kZWYgX01JTklYCisKKy8qIERlZmluZSB0byAyIGlmIHRoZSBzeXN0ZW0g
ZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdCB3aXRoCisgICB0aGlzIGRl
ZmluZWQuICovCisjdW5kZWYgX1BPU0lYXzFfU09VUkNFCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBuZWVkIHRvIGluIG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAq
LworI3VuZGVmIF9QT1NJWF9TT1VSQ0UKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNv
IHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+
LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93
ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8K
KyN1bmRlZiBfVUlOVDMyX1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1
aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8
c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRo
ZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRl
ZiBfVUlOVDY0X1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50OF90
IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhv
cmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCisgICAj
ZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLworI3VuZGVmIF9VSU5U
OF9UCisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5l
LiAqLworI3VuZGVmIGdpZF90CisKKy8qIERlZmluZSB0byBgX19pbmxpbmVfXycgb3IgYF9faW5s
aW5lJyBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlcgorICAgY2FsbHMgaXQsIG9yIHRvIG5v
dGhpbmcgaWYgJ2lubGluZScgaXMgbm90IHN1cHBvcnRlZCB1bmRlciBhbnkgbmFtZS4gICovCisj
aWZuZGVmIF9fY3BsdXNwbHVzCisjdW5kZWYgaW5saW5lCisjZW5kaWYKKworLyogRGVmaW5lIHRv
IHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJp
dHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRv
IG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50MTZfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5
cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgor
ICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRl
ZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQzMl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBh
IHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCisgICBzdWNo
IGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0
LiAqLworI3VuZGVmIGludDY0X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVk
IGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDggYml0cyBpZiBzdWNoCisgICBhIHR5cGUg
ZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1
bmRlZiBpbnQ4X3QKKworLyogRGVmaW5lIHRvIHJwbF9tYWxsb2MgaWYgdGhlIHJlcGxhY2VtZW50
IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLiAqLworI3VuZGVmIG1hbGxvYworCisvKiBEZWZpbmUg
dG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgbW9k
ZV90CisKKy8qIERlZmluZSB0byBgbG9uZyBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3Qg
ZGVmaW5lLiAqLworI3VuZGVmIG9mZl90CisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5
cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBwaWRfdAorCisvKiBEZWZpbmUgdG8g
cnBsX3JlYWxsb2MgaWYgdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLiAq
LworI3VuZGVmIHJlYWxsb2MKKworLyogRGVmaW5lIHRvIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBD
OTkgJ3Jlc3RyaWN0JyBrZXl3b3JkLCBvciB0bworICAgbm90aGluZyBpZiB0aGlzIGlzIG5vdCBz
dXBwb3J0ZWQuICBEbyBub3QgZGVmaW5lIGlmIHJlc3RyaWN0IGlzCisgICBzdXBwb3J0ZWQgZGly
ZWN0bHkuICAqLworI3VuZGVmIHJlc3RyaWN0CisvKiBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBTdW4g
QysrOiBpdCBkb2VzIG5vdCBzdXBwb3J0IF9SZXN0cmljdCBvcgorICAgX19yZXN0cmljdF9fLCBl
dmVuIHRob3VnaCB0aGUgY29ycmVzcG9uZGluZyBTdW4gQyBjb21waWxlciBlbmRzIHVwIHdpdGgK
KyAgICIjZGVmaW5lIHJlc3RyaWN0IF9SZXN0cmljdCIgb3IgIiNkZWZpbmUgcmVzdHJpY3QgX19y
ZXN0cmljdF9fIiBpbiB0aGUKKyAgIHByZXZpb3VzIGxpbmUuICBQZXJoYXBzIHNvbWUgZnV0dXJl
IHZlcnNpb24gb2YgU3VuIEMrKyB3aWxsIHdvcmsgd2l0aAorICAgcmVzdHJpY3Q7IGlmIHNvLCBo
b3BlZnVsbHkgaXQgZGVmaW5lcyBfX1JFU1RSSUNUIGxpa2UgU3VuIEMgZG9lcy4gICovCisjaWYg
ZGVmaW5lZCBfX1NVTlBST19DQyAmJiAhZGVmaW5lZCBfX1JFU1RSSUNUCisjIGRlZmluZSBfUmVz
dHJpY3QKKyMgZGVmaW5lIF9fcmVzdHJpY3RfXworI2VuZGlmCisKKy8qIERlZmluZSB0byBgdW5z
aWduZWQgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBz
aXplX3QKKworLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVm
aW5lLiAqLworI3VuZGVmIHNzaXplX3QKKworLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlw
ZXMuaD4gZG9lc24ndCBkZWZpbmUuICovCisjdW5kZWYgdWlkX3QKKworLyogRGVmaW5lIHRvIHRo
ZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJp
dHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRv
IG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDE2X3QKKworLyogRGVmaW5lIHRvIHRoZSB0
eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJpdHMg
aWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5v
dCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDMyX3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBl
IG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDY0IGJpdHMgaWYK
KyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBk
ZWZpbmUgaXQuICovCisjdW5kZWYgdWludDY0X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9m
IGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDggYml0cyBpZgorICAg
c3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmlu
ZSBpdC4gKi8KKyN1bmRlZiB1aW50OF90CisKKy8qIERlZmluZSBhcyBgZm9yaycgaWYgYHZmb3Jr
JyBkb2VzIG5vdCB3b3JrLiAqLworI3VuZGVmIHZmb3JrCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1y
IDZmZGUwMTdjNDE5ZSB0b29scy9jb25maWcuc3ViCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2NvbmZpZy5zdWIJVHVlIEphbiAxMCAxOTox
MzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTcxNCBAQAorIyEgL2Jpbi9zaAorIyBDb25maWd1
cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCisjICAgQ29weXJpZ2h0IChDKSAx
OTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAs
IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDEw
LTAxLTIyJworCisjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdO
VSBzb2Z0d2FyZS4KKyMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3Vn
Z2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQorIyBjYW4gaGFuZGxlIHRoYXQgbWFjaGluZS4g
IEl0IGRvZXMgbm90IGltcGx5IEFMTCBHTlUgc29mdHdhcmUgY2FuLgorIworIyBUaGlzIGZpbGUg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QQorIyAwMjExMC0xMzAxLCBVU0EuCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZp
bGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24g
c2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisj
IHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9m
IHRoYXQgcHJvZ3JhbS4KKworCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRj
aGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorIyBkaWZmIGFuZCBhIHByb3Blcmx5IGZv
cm1hdHRlZCBHTlUgQ2hhbmdlTG9nIGVudHJ5LgorIworIyBDb25maWd1cmF0aW9uIHN1YnJvdXRp
bmUgdG8gdmFsaWRhdGUgYW5kIGNhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gdHlwZS4KKyMg
U3VwcGx5IHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiB0eXBlIGFzIGFuIGFyZ3VtZW50Lgor
IyBJZiBpdCBpcyBpbnZhbGlkLCB3ZSBwcmludCBhbiBlcnJvciBtZXNzYWdlIG9uIHN0ZGVyciBh
bmQgZXhpdCB3aXRoIGNvZGUgMS4KKyMgT3RoZXJ3aXNlLCB3ZSBwcmludCB0aGUgY2Fub25pY2Fs
IGNvbmZpZyB0eXBlIG9uIHN0ZG91dCBhbmQgc3VjY2VlZC4KKworIyBZb3UgY2FuIGdldCB0aGUg
bGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKKyMgaHR0cDovL2dpdC5zYXZhbm5h
aC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7
aGI9SEVBRAorCisjIFRoaXMgZmlsZSBpcyBzdXBwb3NlZCB0byBiZSB0aGUgc2FtZSBmb3IgYWxs
IEdOVSBwYWNrYWdlcworIyBhbmQgcmVjb2duaXplIGFsbCB0aGUgQ1BVIHR5cGVzLCBzeXN0ZW0g
dHlwZXMgYW5kIGFsaWFzZXMKKyMgdGhhdCBhcmUgbWVhbmluZ2Z1bCB3aXRoICphbnkqIEdOVSBz
b2Z0d2FyZS4KKyMgRWFjaCBwYWNrYWdlIGlzIHJlc3BvbnNpYmxlIGZvciByZXBvcnRpbmcgd2hp
Y2ggdmFsaWQgY29uZmlndXJhdGlvbnMKKyMgaXQgZG9lcyBub3Qgc3VwcG9ydC4gIFRoZSB1c2Vy
IHNob3VsZCBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoCisjIGEgZmFpbHVyZSB0byBzdXBwb3J0IGEg
dmFsaWQgY29uZmlndXJhdGlvbiBmcm9tIGEgbWVhbmluZ2xlc3MKKyMgY29uZmlndXJhdGlvbi4K
KworIyBUaGUgZ29hbCBvZiB0aGlzIGZpbGUgaXMgdG8gbWFwIGFsbCB0aGUgdmFyaW91cyB2YXJp
YXRpb25zIG9mIGEgZ2l2ZW4KKyMgbWFjaGluZSBzcGVjaWZpY2F0aW9uIGludG8gYSBzaW5nbGUg
c3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJB
VElOR19TWVNURU0KKyMgb3IgaW4gc29tZSBjYXNlcywgdGhlIG5ld2VyIGZvdXItcGFydCBmb3Jt
OgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KKyMgSXQg
aXMgd3JvbmcgdG8gZWNobyBhbnkgb3RoZXIgdHlwZSBvZiBzcGVjaWZpY2F0aW9uLgorCittZT1g
ZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BU
SU9OXSBDUFUtTUZSLU9QU1lTCisgICAgICAgJDAgW09QVElPTl0gQUxJQVMKKworQ2Fub25pY2Fs
aXplIGEgY29uZmlndXJhdGlvbiBuYW1lLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhl
bHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1w
ICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZl
cnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdz
IGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwK
K0dOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQorCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMs
IDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUKK1NvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNv
dXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KK3dhcnJhbnR5OyBub3Qg
ZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiIKKworaGVscD0iCitUcnkgXGAkbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4i
CisKKyMgUGFyc2UgY29tbWFuZCBsaW5lCit3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgY2Fz
ZSAkMSBpbgorICAgIC0tdGltZS1zdGFtcCB8IC0tdGltZSogfCAtdCApCisgICAgICAgZWNobyAi
JHRpbWVzdGFtcCIgOyBleGl0IDs7CisgICAgLS12ZXJzaW9uIHwgLXYgKQorICAgICAgIGVjaG8g
IiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQorICAgICAgIGVj
aG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAgICAtLSApICAgICAjIFN0b3Agb3B0aW9uIHByb2Nlc3Np
bmcKKyAgICAgICBzaGlmdDsgYnJlYWsgOzsKKyAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQu
CisgICAgICAgYnJlYWsgOzsKKyAgICAtKiApCisgICAgICAgZWNobyAiJG1lOiBpbnZhbGlkIG9w
dGlvbiAkMSRoZWxwIgorICAgICAgIGV4aXQgMSA7OworCisgICAgKmxvY2FsKikKKyAgICAgICAj
IEZpcnN0IHBhc3MgdGhyb3VnaCBhbnkgbG9jYWwgbWFjaGluZSB0eXBlcy4KKyAgICAgICBlY2hv
ICQxCisgICAgICAgZXhpdCA7OworCisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYwor
ZG9uZQorCitjYXNlICQjIGluCisgMCkgZWNobyAiJG1lOiBtaXNzaW5nIGFyZ3VtZW50JGhlbHAi
ID4mMgorICAgIGV4aXQgMTs7CisgMSkgOzsKKyAqKSBlY2hvICIkbWU6IHRvbyBtYW55IGFyZ3Vt
ZW50cyRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworZXNhYworCisjIFNlcGFyYXRlIHdoYXQgdGhl
IHVzZXIgZ2F2ZSBpbnRvIENQVS1DT01QQU5ZIGFuZCBPUyBvciBLRVJORUwtT1MgKGlmIGFueSku
CisjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmlu
YXRpb25zLgorbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0q
XCkkL1wyLydgCitjYXNlICRtYXliZV9vcyBpbgorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBs
aW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBsaW51eC11Y2xpYmMqIHwgXAorICB1Y2xp
bnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdu
dSogfCBuZXRic2QqLWdudSogfCBcCisgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKKyAgc3Rvcm0t
Y2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgIG9zPS0kbWF5YmVfb3MKKyAgICBi
YXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9c
MS8nYAorICAgIDs7CisgICopCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy8t
W14tXSokLy8nYAorICAgIGlmIFsgJGJhc2ljX21hY2hpbmUgIT0gJDEgXQorICAgIHRoZW4gb3M9
YGVjaG8gJDEgfCBzZWQgJ3MvLiotLy0vJ2AKKyAgICBlbHNlIG9zPTsgZmkKKyAgICA7OworZXNh
YworCisjIyMgTGV0J3MgcmVjb2duaXplIGNvbW1vbiBtYWNoaW5lcyBhcyBub3QgYmVpbmcgb3Bl
cmF0aW5nIHN5c3RlbXMgc28KKyMjIyB0aGF0IHRoaW5ncyBsaWtlIGNvbmZpZy5zdWIgZGVjc3Rh
dGlvbi0zMTAwIHdvcmsuICBXZSBhbHNvCisjIyMgcmVjb2duaXplIHNvbWUgbWFudWZhY3R1cmVy
cyBhcyBub3QgYmVpbmcgb3BlcmF0aW5nIHN5c3RlbXMsIHNvIHdlCisjIyMgY2FuIHByb3ZpZGUg
ZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyBiZWxvdy4KK2Nhc2UgJG9zIGluCisJLXN1bipvcyop
CisJCSMgUHJldmVudCBmb2xsb3dpbmcgY2xhdXNlIGZyb20gaGFuZGxpbmcgdGhpcyBpbnZhbGlk
IGlucHV0LgorCQk7OworCS1kZWMqIHwgLW1pcHMqIHwgLXNlcXVlbnQqIHwgLWVuY29yZSogfCAt
cGM1MzIqIHwgLXNnaSogfCAtc29ueSogfCBcCisJLWF0dCogfCAtNzMwMCogfCAtMzMwMCogfCAt
ZGVsdGEqIHwgLW1vdG9yb2xhKiB8IC1zdW5bMjM0XSogfCBcCisJLXVuaWNvbSogfCAtaWJtKiB8
IC1uZXh0IHwgLWhwIHwgLWlzaSogfCAtYXBvbGxvIHwgLWFsdG9zKiB8IFwKKwktY29udmVyZ2Vu
dCogfCAtbmNyKiB8IC1uZXdzIHwgLTMyKiB8IC0zNjAwKiB8IC0zMTAwKiB8IC1oaXRhY2hpKiB8
XAorCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwgLWNyZHMgfCAtb21yb24qIHwgLWRnIHwg
LXVsdHJhIHwgLXR0aSogfCBcCisJLWhhcnJpcyB8IC1kb2xwaGluIHwgLWhpZ2hsZXZlbCB8IC1n
b3VsZCB8IC1jYm0gfCAtbnMgfCAtbWFzc2NvbXAgfCBcCisJLWFwcGxlIHwgLWF4aXMgfCAta251
dGggfCAtY3JheSB8IC1taWNyb2JsYXplKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7
OworICAgICAgICAtYmx1ZWdlbmUqKQorCSAgICAgICAgb3M9LWNuaworCQk7OworCS1zaW0gfCAt
Y2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0k
MQorCQk7OworCS1zY291dCkKKwkJOzsKKwktd3JzKQorCQlvcz0tdnh3b3JrcworCQliYXNpY19t
YWNoaW5lPSQxCisJCTs7CisJLWNob3J1c29zKikKKwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21h
Y2hpbmU9JDEKKwkJOzsKKyAJLWNob3J1c3JkYikKKyAJCW9zPS1jaG9ydXNyZGIKKwkJYmFzaWNf
bWFjaGluZT0kMQorIAkJOzsKKwktaGl1eCopCisJCW9zPS1oaXV4d2UyCisJCTs7CisJLXNjbzYp
CisJCW9zPS1zY281djYKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0u
Ki84Ni1wYy8nYAorCQk7OworCS1zY281KQorCQlvcz0tc2NvMy4ydjUKKwkJYmFzaWNfbWFjaGlu
ZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY280KQorCQlv
cz0tc2NvMy4ydjQKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84
Ni1wYy8nYAorCQk7OworCS1zY28zLjIuWzQtOV0qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUg
J3Mvc2NvMy4yLi9zY28zLjJ2LydgCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUg
J3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4ydls0LTldKikKKwkJIyBEb24ndCBmb3Jn
ZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNo
byAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281djYqKQorCQkjIERv
bid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNo
aW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbyopCisJ
CW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4q
Lzg2LXBjLydgCisJCTs7CisJLXVkayopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQg
LWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktaXNjKQorCQlvcz0taXNjMi4yCisJCWJhc2lj
X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktY2xp
eCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1pbnRlcmdyYXBoCisJCTs7CisJLWlzYyopCisJ
CWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsK
KwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1g
ZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3Nu
dCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsK
KwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFz
aWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2Rl
IGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFz
aWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBj
b21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUg
c3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFs
cGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1
WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhh
NjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFy
bSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2
ciB8IGF2cjMyIFwKKwl8IGJmaW4gXAorCXwgYzR4IHwgY2xpcHBlciBcCisJfCBkMTB2IHwgZDMw
diB8IGRseCB8IGRzcDE2eHggXAorCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAorCXwgaDgzMDAgfCBo
ODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0
IFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJ
fCBsbTMyIFwKKwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsg
XAorCXwgbWF4cSB8IG1iIHwgbWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXAorCXwg
bWlwcyB8IG1pcHNiZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAor
CXwgbWlwczY0IHwgbWlwczY0ZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwg
XAorCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlw
czY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0dnI0MTAw
IHwgbWlwczY0dnI0MTAwZWwgXAorCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAor
CXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXAorCXwgbWlwczY0dnI1OTAwIHwgbWlw
czY0dnI1OTAwZWwgXAorCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorCXwgbWlwc2lzYTMy
cjIgfCBtaXBzaXNhMzJyMmVsIFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1p
cHNpc2E2NHIyIHwgbWlwc2lzYTY0cjJlbCBcCisJfCBtaXBzaXNhNjRzYjEgfCBtaXBzaXNhNjRz
YjFlbCBcCisJfCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAorCXwgbWlwc3R4
MzkgfCBtaXBzdHgzOWVsIFwKKwl8IG1uMTAyMDAgfCBtbjEwMzAwIFwKKwl8IG1veGllIFwKKwl8
IG10IFwKKwl8IG1zcDQzMCBcCisJfCBuaW9zIHwgbmlvczIgXAorCXwgbnMxNmsgfCBuczMyayBc
CisJfCBvcjMyIFwKKwl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCisJfCBwb3dlcnBjIHwg
cG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgfCBwcGNiZSBcCisJfCBweXJhbWlk
IFwKKwl8IHJ4IFwKKwl8IHNjb3JlIFwKKwl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hb
MjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIz
NF1sZSB8IHNoM2VsZSBcCisJfCBzaDY0IHwgc2g2NGxlIFwKKwl8IHNwYXJjIHwgc3BhcmM2NCB8
IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwK
Kwl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCisJfCBzcHUgfCBz
dHJvbmdhcm0gXAorCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKKwl8
IHViaWNvbTMyIFwKKwl8IHY4NTAgfCB2ODUwZSBcCisJfCB3ZTMyayBcCisJfCB4ODYgfCB4YzE2
eCB8IHhzY2FsZSB8IHhzY2FsZWVbYmxdIHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4ayB8
IHo4MCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJbTY4
MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgcGljb2NoaXApCisJCSMgTW90b3JvbGEg
NjhIQzExLzEyLgorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9
LW5vbmUKKwkJOzsKKwltODgxMTAgfCBtNjgwWzEyMzQ2XTAgfCBtNjgzPzIgfCBtNjgzNjAgfCBt
NTIwMCB8IHY3MCB8IHc2NSB8IHo4aykKKwkJOzsKKwltczEpCisJCWJhc2ljX21hY2hpbmU9bXQt
dW5rbm93bgorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKKwkj
IGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKKwkjICgyKSB0
aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCisJaSo4
NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtcGMKKwkgIDs7CisJ
IyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29yZC4KKwkqLSotKikKKwkJ
ZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hp
bmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworCSMgUmVjb2duaXplIHRo
ZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgwLSogXAorCXwgYTI5ay0q
IFwKKwl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1Ni0qIHwgYWxwaGFldjZb
NzhdLSogXAorCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8IGFscGhhNjRldjU2LSog
fCBhbHBoYTY0ZXY2Wzc4XS0qIFwKKwl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3
XS0qIHwgYXJjLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwg
YXJtdiotKiBcCisJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmZpbi0qIHwgYnMyMDAwLSogXAor
CXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBjNTV4LSog
fCBjNngtKiBcCisJfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAorCXwgZDEwdi0q
IHwgZDMwdi0qIHwgZGx4LSogXAorCXwgZWx4c2ktKiBcCisJfCBmMzBbMDFdLSogfCBmNzAwLSog
fCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCisJfCBoODMwMC0qIHwgaDg1MDAt
KiBcCisJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0q
IHwgaHBwYTY0LSogXAorCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKKwl8
IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxtMzItKiBcCisJfCBtMzJjLSogfCBtMzJyLSogfCBt
MzJybGUtKiBcCisJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4
Mz8yLSogfCBtNjhrLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0q
IHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCisJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNl
Yi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCisJfCBtaXBzMTYtKiBcCisJfCBtaXBzNjQtKiB8
IG1pcHM2NGVsLSogXAorCXwgbWlwczY0b2N0ZW9uLSogfCBtaXBzNjRvY3Rlb25lbC0qIFwKKwl8
IG1pcHM2NG9yaW9uLSogfCBtaXBzNjRvcmlvbmVsLSogXAorCXwgbWlwczY0cjU5MDAtKiB8IG1p
cHM2NHI1OTAwZWwtKiBcCisJfCBtaXBzNjR2ci0qIHwgbWlwczY0dnJlbC0qIFwKKwl8IG1pcHM2
NHZyNDEwMC0qIHwgbWlwczY0dnI0MTAwZWwtKiBcCisJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2
NHZyNDMwMGVsLSogXAorCXwgbWlwczY0dnI1MDAwLSogfCBtaXBzNjR2cjUwMDBlbC0qIFwKKwl8
IG1pcHM2NHZyNTkwMC0qIHwgbWlwczY0dnI1OTAwZWwtKiBcCisJfCBtaXBzaXNhMzItKiB8IG1p
cHNpc2EzMmVsLSogXAorCXwgbWlwc2lzYTMycjItKiB8IG1pcHNpc2EzMnIyZWwtKiBcCisJfCBt
aXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAorCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2
NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRzYjEtKiB8IG1pcHNpc2E2NHNiMWVsLSogXAorCXwgbWlw
c2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCisJfCBtaXBzdHgzOS0qIHwgbWlw
c3R4MzllbC0qIFwKKwl8IG1taXgtKiBcCisJfCBtdC0qIFwKKwl8IG1zcDQzMC0qIFwKKwl8IG5p
b3MtKiB8IG5pb3MyLSogXAorCXwgbm9uZS0qIHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBc
CisJfCBvcmlvbi0qIFwKKwl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4t
KiB8IHBvd2VyLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0q
IHwgcG93ZXJwY2xlLSogfCBwcGNiZS0qIFwKKwl8IHB5cmFtaWQtKiBcCisJfCByb21wLSogfCBy
czYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsy
NF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAorCXwg
c2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCisJ
fCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2
eC0qIHwgc3BhcmNsZXQtKiBcCisJfCBzcGFyY2xpdGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFy
Y3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBz
eD8tKiBcCisJfCB0YWhvZS0qIHwgdGh1bWItKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRp
YzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlLSogfCB0aWxl
Z3gtKiBcCisJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCisJfCB2ODUwLSogfCB2ODUwZS0q
IHwgdmF4LSogXAorCXwgd2UzMmstKiBcCisJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8
IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKwl8IHhzdG9ybXkxNi0qIHwg
eHRlbnNhKi0qIFwKKwl8IHltcC0qIFwKKwl8IHo4ay0qIHwgejgwLSopCisJCTs7CisJIyBSZWNv
Z25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9i
IG1hdGNoLgorCXh0ZW5zYSopCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93
bgorCQk7OworCSMgUmVjb2duaXplIHRoZSB2YXJpb3VzIG1hY2hpbmUgbmFtZXMgYW5kIGFsaWFz
ZXMgd2hpY2ggc3RhbmQKKwkjIGZvciBhIENQVSB0eXBlIGFuZCBhIGNvbXBhbnkgYW5kIHNvbWV0
aW1lcyBldmVuIGFuIE9TLgorCTM4NmJzZCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24K
KwkJb3M9LWJzZAorCQk7OworCTNiMSB8IDczMDAgfCA3MzAwLWF0dCB8IGF0dC03MzAwIHwgcGM3
MzAwIHwgc2FmYXJpIHwgdW5peHBjKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1hdHQKKwkJOzsK
KwkzYiopCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJYTI5a2hpZikKKwkJYmFz
aWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisgICAgCWFiYWN1cykKKwkJYmFz
aWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNo
aW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJ
YmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJ
YmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9
YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZf
NjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFz
aWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNf
bWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQor
CQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykK
KwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWln
YXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQK
KwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lz
dgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9z
PS1ic2QKKwkJOzsKKwlhcm9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWFyb3MK
KwkJOzsKKwlhdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQlvcz0tYXV4CisJCTs7
CisJYmFsYW5jZSkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50CisJCW9zPS1keW5peAor
CQk7OworCWJsYWNrZmluKQorCQliYXNpY19tYWNoaW5lPWJmaW4tdW5rbm93bgorCQlvcz0tbGlu
dXgKKwkJOzsKKwlibGFja2Zpbi0qKQorCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2lj
X21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJYmx1ZWdl
bmUqKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1jbmsKKwkJOzsKKwljOTAp
CisJCWJhc2ljX21hY2hpbmU9YzkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworICAgICAgICBj
ZWdjYykKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tY2VnY2MKKwkJOzsKKwlj
b252ZXgtYzEpCisJCWJhc2ljX21hY2hpbmU9YzEtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwlj
b252ZXgtYzIpCisJCWJhc2ljX21hY2hpbmU9YzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwlj
b252ZXgtYzMyKQorCQliYXNpY19tYWNoaW5lPWMzMi1jb252ZXgKKwkJb3M9LWJzZAorCQk7Owor
CWNvbnZleC1jMzQpCisJCWJhc2ljX21hY2hpbmU9YzM0LWNvbnZleAorCQlvcz0tYnNkCisJCTs7
CisJY29udmV4LWMzOCkKKwkJYmFzaWNfbWFjaGluZT1jMzgtY29udmV4CisJCW9zPS1ic2QKKwkJ
OzsKKwljcmF5IHwgajkwKQorCQliYXNpY19tYWNoaW5lPWo5MC1jcmF5CisJCW9zPS11bmljb3MK
KwkJOzsKKwljcmF5bnYpCisJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKKwkJb3M9LXVuaWNv
c21wCisJCTs7CisJY3IxNikKKwkJYmFzaWNfbWFjaGluZT1jcjE2LXVua25vd24KKwkJb3M9LWVs
ZgorCQk7OworCWNyZHMgfCB1bm9zKQorCQliYXNpY19tYWNoaW5lPW02OGstY3JkcworCQk7Owor
CWNyaXN2MzIgfCBjcmlzdjMyLSogfCBldHJheGZzKikKKwkJYmFzaWNfbWFjaGluZT1jcmlzdjMy
LWF4aXMKKwkJOzsKKwljcmlzIHwgY3Jpcy0qIHwgZXRyYXgqKQorCQliYXNpY19tYWNoaW5lPWNy
aXMtYXhpcworCQk7OworCWNyeCkKKwkJYmFzaWNfbWFjaGluZT1jcngtdW5rbm93bgorCQlvcz0t
ZWxmCisJCTs7CisJZGEzMCB8IGRhMzAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKwkJ
OzsKKwlkZWNzdGF0aW9uIHwgZGVjc3RhdGlvbi0zMTAwIHwgcG1heCB8IHBtYXgtKiB8IHBtaW4g
fCBkZWMzMTAwIHwgZGVjc3RhdG4pCisJCWJhc2ljX21hY2hpbmU9bWlwcy1kZWMKKwkJOzsKKwlk
ZWNzeXN0ZW0xMCogfCBkZWMxMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10
b3BzMTAKKwkJOzsKKwlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCisJCWJhc2ljX21hY2hpbmU9cGRw
MTAtZGVjCisJCW9zPS10b3BzMjAKKwkJOzsKKwlkZWx0YSB8IDMzMDAgfCBtb3Rvcm9sYS0zMzAw
IHwgbW90b3JvbGEtZGVsdGEgXAorCSAgICAgIHwgMzMwMC1tb3Rvcm9sYSB8IGRlbHRhLW1vdG9y
b2xhKQorCQliYXNpY19tYWNoaW5lPW02OGstbW90b3JvbGEKKwkJOzsKKwlkZWx0YTg4KQorCQli
YXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKwkJb3M9LXN5c3YzCisJCTs7CisJZGljb3MpCisJ
CWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKKwlkamdwcCkKKwkJYmFz
aWNfbWFjaGluZT1pNTg2LXBjCisJCW9zPS1tc2Rvc2RqZ3BwCisJCTs7CisJZHB4MjAgfCBkcHgy
MC0qKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCisJCW9zPS1ib3N4CisJCTs7CisJZHB4
MiogfCBkcHgyKi1idWxsKQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlvcz0tc3lzdjMK
KwkJOzsKKwllYm1vbjI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tZWJtb24K
KwkJOzsKKwllbHhzaSkKKwkJYmFzaWNfbWFjaGluZT1lbHhzaS1lbHhzaQorCQlvcz0tYnNkCisJ
CTs7CisJZW5jb3JlIHwgdW1heCB8IG1tYXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstZW5jb3Jl
CisJCTs7CisJZXMxODAwIHwgT1NFNjhrIHwgb3NlNjhrIHwgb3NlIHwgT1NFKQorCQliYXNpY19t
YWNoaW5lPW02OGstZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCWZ4MjgwMCkKKwkJYmFzaWNf
bWFjaGluZT1pODYwLWFsbGlhbnQKKwkJOzsKKwlnZW5peCkKKwkJYmFzaWNfbWFjaGluZT1uczMy
ay1ucworCQk7OworCWdtaWNybykKKwkJYmFzaWNfbWFjaGluZT10cm9uLWdtaWNybworCQlvcz0t
c3lzdgorCQk7OworCWdvMzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tZ28zMgor
CQk7OworCWgzMDUwciogfCBoaXV4KikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkK
KwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwloODMwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1o
aXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloODMwMHhyYXkpCisJCWJhc2ljX21hY2hpbmU9aDgz
MDAtaGl0YWNoaQorCQlvcz0teHJheQorCQk7OworCWg4NTAwaG1zKQorCQliYXNpY19tYWNoaW5l
PWg4NTAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWhhcnJpcykKKwkJYmFzaWNfbWFjaGlu
ZT1tODhrLWhhcnJpcworCQlvcz0tc3lzdjMKKwkJOzsKKwlocDMwMC0qKQorCQliYXNpY19tYWNo
aW5lPW02OGstaHAKKwkJOzsKKwlocDMwMGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJ
CW9zPS1ic2QKKwkJOzsKKwlocDMwMGhwdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlv
cz0taHB1eAorCQk7OworCWhwM2s5WzAtOV1bMC05XSB8IGhwOVswLTldWzAtOV0pCisJCWJhc2lj
X21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWsyWzAtOV1bMC05XSB8IGhwOWszMVswLTld
KQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1ocAorCQk7OworCWhwOWszWzItOV1bMC05XSkKKwkJ
YmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHA5azZbMC05XVswLTldIHwgaHA2WzAtOV1b
MC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azdbMC03OV1bMC05
XSB8IGhwN1swLTc5XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlo
cDlrNzhbMC05XSB8IGhwNzhbMC05XSkKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJ
YmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbNjddMSB8IGhwOFs2N10xIHwg
aHA5azgwWzI0XSB8IGhwODBbMjRdIHwgaHA5azhbNzhdOSB8IGhwOFs3OF05IHwgaHA5azg5MyB8
IGhwODkzKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhw
cGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzEzNjc5XSB8IGhwOFswLTldWzEzNjc5XSkKKwkJ
YmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVswLTldIHwgaHA4WzAt
OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHBwYS1uZXh0KQor
CQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJaHBwYW9zZikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4x
LWhwCisJCW9zPS1vc2YKKwkJOzsKKwlocHBybykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhw
CisJCW9zPS1wcm9lbGYKKwkJOzsKKwlpMzcwLWlibSogfCBpYm0qKQorCQliYXNpY19tYWNoaW5l
PWkzNzAtaWJtCisJCTs7CisjIEknbSBub3Qgc3VyZSB3aGF0ICJTeXN2MzIiIG1lYW5zLiAgU2hv
dWxkIHRoaXMgYmUgc3lzdjMuMj8KKwlpKjg2djMyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQx
IHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3YzMgorCQk7OworCWkqODZ2NCop
CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlv
cz0tc3lzdjQKKwkJOzsKKwlpKjg2dikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAt
ZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2CisJCTs7CisJaSo4NnNvbDIpCisJCWJhc2lj
X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc29sYXJp
czIKKwkJOzsKKwlpMzg2bWFjaCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LW1hY2gKKwkJb3M9LW1h
Y2gKKwkJOzsKKwlpMzg2LXZzdGEgfCB2c3RhKQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93
bgorCQlvcz0tdnN0YQorCQk7OworCWlyaXMgfCBpcmlzNGQpCisJCWJhc2ljX21hY2hpbmU9bWlw
cy1zZ2kKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1pcml4KikKKwkJCTs7CisJCSAgICAqKQorCQkJ
b3M9LWlyaXg0CisJCQk7OworCQllc2FjCisJCTs7CisJaXNpNjggfCBpc2kpCisJCWJhc2ljX21h
Y2hpbmU9bTY4ay1pc2kKKwkJb3M9LXN5c3YKKwkJOzsKKwltNjhrbm9tbXUpCisJCWJhc2ljX21h
Y2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCW02OGtub21tdS0qKQorCQli
YXNpY19tYWNoaW5lPW02OGstYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8v
J2AKKwkJb3M9LWxpbnV4CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4
ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlw
cworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVr
CisJCW9zPS1zeXN2CisJCTs7CisgICAgICAgIG1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9
bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKKwltaW5ndzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYt
cGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwltaW5ndzMyY2UpCisJCWJhc2ljX21hY2hpbmU9YXJt
LXVua25vd24KKwkJb3M9LW1pbmd3MzJjZQorCQk7OworCW1pbmlmcmFtZSkKKwkJYmFzaWNfbWFj
aGluZT1tNjgwMDAtY29udmVyZ2VudAorCQk7OworCSptaW50IHwgLW1pbnRbMC05XSogfCAqTWlO
VCB8ICpNaU5UWzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQK
KwkJOzsKKwltaXBzMyotKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8
IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AKKwkJOzsKKwltaXBzMyopCisJCWJhc2ljX21hY2hp
bmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgLXVua25v
d24KKwkJOzsKKwltb25pdG9yKQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1j
b2ZmCisJCTs7CisJbW9ycGhvcykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJ
b3M9LW1vcnBob3MKKwkJOzsKKwltc2RvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9z
PS1tc2RvcworCQk7OworCW1zMS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNo
aW5lIHwgc2VkIC1lICdzL21zMS0vbXQtLydgCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5l
PWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwluY3IzMDAwKQorCQliYXNpY19tYWNoaW5lPWk0
ODYtbmNyCisJCW9zPS1zeXN2NAorCQk7OworCW5ldGJzZDM4NikKKwkJYmFzaWNfbWFjaGluZT1p
Mzg2LXVua25vd24KKwkJb3M9LW5ldGJzZAorCQk7OworCW5ldHdpbmRlcikKKwkJYmFzaWNfbWFj
aGluZT1hcm12NGwtcmViZWwKKwkJb3M9LWxpbnV4CisJCTs7CisJbmV3cyB8IG5ld3M3MDAgfCBu
ZXdzODAwIHwgbmV3czkwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXNvbnkKKwkJb3M9LW5ld3Nv
cworCQk7OworCW5ld3MxMDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255CisJCW9zPS1u
ZXdzb3MKKwkJOzsKKwluZXdzLTM2MDAgfCByaXNjLW5ld3MpCisJCWJhc2ljX21hY2hpbmU9bWlw
cy1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZWN2NzApCisJCWJhc2ljX21hY2hpbmU9djcw
LW5lYworCQlvcz0tc3lzdgorCQk7OworCW5leHQgfCBtKi1uZXh0ICkKKwkJYmFzaWNfbWFjaGlu
ZT1tNjhrLW5leHQKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1uZXh0c3RlcCogKQorCQkJOzsKKwkJ
ICAgIC1uczIqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAyCisJCQk7OworCQkgICAgKikKKwkJICAg
ICAgb3M9LW5leHRzdGVwMworCQkJOzsKKwkJZXNhYworCQk7OworCW5oMzAwMCkKKwkJYmFzaWNf
bWFjaGluZT1tNjhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5oWzQ1XTAwMCkKKwkJYmFz
aWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5pbmR5OTYwKQorCQli
YXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW5pbmR5CisJCTs7CisJbW9uOTYwKQorCQli
YXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW1vbjk2MAorCQk7OworCW5vbnN0b3B1eCkK
KwkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQorCQlvcz0tbm9uc3RvcHV4CisJCTs7CisJbnAx
KQorCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorCQk7OworCW5zci10YW5kZW0pCisJCWJhc2lj
X21hY2hpbmU9bnNyLXRhbmRlbQorCQk7OworCW9wNTBuLSogfCBvcDYwYy0qKQorCQliYXNpY19t
YWNoaW5lPWhwcGExLjEtb2tpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlvcGVucmlzYyB8IG9wZW5y
aXNjLSopCisJCWJhc2ljX21hY2hpbmU9b3IzMi11bmtub3duCisJCTs7CisJb3M0MDApCisJCWJh
c2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LW9zNDAwCisJCTs7CisJT1NFNjgwMDAgfCBv
c2U2ODAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7
OworCW9zNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstbm9uZQorCQlvcz0tb3M2OGsKKwkJOzsK
KwlwYS1oaXRhY2hpKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1
eHdlMgorCQk7OworCXBhcmFnb24pCisJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorCQlvcz0t
b3NmCisJCTs7CisJcGFyaXNjKQorCQliYXNpY19tYWNoaW5lPWhwcGEtdW5rbm93bgorCQlvcz0t
bGludXgKKwkJOzsKKwlwYXJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhLWBlY2hvICRiYXNp
Y19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCXBiZCkK
KwkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKKwkJOzsKKwlwYmIpCisJCWJhc2ljX21hY2hpbmU9
bTY4ay10dGkKKwkJOzsKKwlwYzUzMiB8IHBjNTMyLSopCisJCWJhc2ljX21hY2hpbmU9bnMzMmst
cGM1MzIKKwkJOzsKKwlwYzk4KQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJOzsKKwlwYzk4
LSopCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9e
W14tXSotLy8nYAorCQk7OworCXBlbnRpdW0gfCBwNSB8IGs1IHwgazYgfCBuZXhnZW4gfCB2aWFj
MykKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCTs7CisJcGVudGl1bXBybyB8IHA2IHwgNng4
NiB8IGF0aGxvbiB8IGF0aGxvbl8qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlw
ZW50aXVtaWkgfCBwZW50aXVtMiB8IHBlbnRpdW1paWkgfCBwZW50aXVtMykKKwkJYmFzaWNfbWFj
aGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bTQpCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1wYwor
CQk7OworCXBlbnRpdW0tKiB8IHA1LSogfCBrNS0qIHwgazYtKiB8IG5leGdlbi0qIHwgdmlhYzMt
KikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15b
Xi1dKi0vLydgCisJCTs7CisJcGVudGl1bXByby0qIHwgcDYtKiB8IDZ4ODYtKiB8IGF0aGxvbi0q
KQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlte
LV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtaWktKiB8IHBlbnRpdW0yLSogfCBwZW50aXVtaWlpLSog
fCBwZW50aXVtMy0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUg
fCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtNC0qKQorCQliYXNpY19tYWNoaW5l
PWk3ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlw
bikKKwkJYmFzaWNfbWFjaGluZT1wbi1nb3VsZAorCQk7OworCXBvd2VyKQliYXNpY19tYWNoaW5l
PXBvd2VyLWlibQorCQk7OworCXBwYykJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJ
OzsKKwlwcGMtKikJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwg
c2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxl
IHwgcG93ZXJwYy1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KKwkJ
OzsKKwlwcGNsZS0qIHwgcG93ZXJwY2xpdHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNs
ZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0
KQliYXNpY19tYWNoaW5lPXBvd2VycGM2NC11bmtub3duCisJCTs7CisJcHBjNjQtKikgYmFzaWNf
bWFjaGluZT1wb3dlcnBjNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8v
J2AKKwkJOzsKKwlwcGM2NGxlIHwgcG93ZXJwYzY0bGl0dGxlIHwgcHBjNjQtbGUgfCBwb3dlcnBj
NjQtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLXVua25vd24KKwkJOzsKKwlw
cGM2NGxlLSogfCBwb3dlcnBjNjRsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRs
ZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBzMikK
KwkJYmFzaWNfbWFjaGluZT1pMzg2LWlibQorCQk7OworCXB3MzIpCisJCWJhc2ljX21hY2hpbmU9
aTU4Ni11bmtub3duCisJCW9zPS1wdzMyCisJCTs7CisJcmRvcykKKwkJYmFzaWNfbWFjaGluZT1p
Mzg2LXBjCisJCW9zPS1yZG9zCisJCTs7CisJcm9tNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGst
cm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJcm1bNDZdMDApCisJCWJhc2ljX21hY2hpbmU9bWlw
cy1zaWVtZW5zCisJCTs7CisJcnRwYyB8IHJ0cGMtKikKKwkJYmFzaWNfbWFjaGluZT1yb21wLWli
bQorCQk7OworCXMzOTAgfCBzMzkwLSopCisJCWJhc2ljX21hY2hpbmU9czM5MC1pYm0KKwkJOzsK
KwlzMzkweCB8IHMzOTB4LSopCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCTs7CisJc2Ey
OTIwMCkKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJc2IxKQor
CQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMS11bmtub3duCisJCTs7CisJc2IxZWwpCisJCWJh
c2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxZWwtdW5rbm93bgorCQk7OworCXNkZSkKKwkJYmFzaWNf
bWFjaGluZT1taXBzaXNhMzItc2RlCisJCW9zPS1lbGYKKwkJOzsKKwlzZWkpCisJCWJhc2ljX21h
Y2hpbmU9bWlwcy1zZWkKKwkJb3M9LXNlaXV4CisJCTs7CisJc2VxdWVudCkKKwkJYmFzaWNfbWFj
aGluZT1pMzg2LXNlcXVlbnQKKwkJOzsKKwlzaCkKKwkJYmFzaWNfbWFjaGluZT1zaC1oaXRhY2hp
CisJCW9zPS1obXMKKwkJOzsKKwlzaDVlbCkKKwkJYmFzaWNfbWFjaGluZT1zaDVsZS11bmtub3du
CisJCTs7CisJc2g2NCkKKwkJYmFzaWNfbWFjaGluZT1zaDY0LXVua25vd24KKwkJOzsKKwlzcGFy
Y2xpdGUtd3JzIHwgc2ltc28td3JzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjbGl0ZS13cnMKKwkJ
b3M9LXZ4d29ya3MKKwkJOzsKKwlzcHM3KQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlv
cz0tc3lzdjIKKwkJOzsKKwlzcHVyKQorCQliYXNpY19tYWNoaW5lPXNwdXItdW5rbm93bgorCQk7
OworCXN0MjAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXRhbmRlbQorCQk7OworCXN0cmF0dXMp
CisJCWJhc2ljX21hY2hpbmU9aTg2MC1zdHJhdHVzCisJCW9zPS1zeXN2NAorCQk7OworCXN1bjIp
CisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJvczMpCisJCWJhc2ljX21h
Y2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuMm9zNCkKKwkJYmFzaWNf
bWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW4zb3MzKQorCQliYXNp
Y19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4zb3M0KQorCQliYXNp
Y19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40b3MzKQorCQliYXNp
Y19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuNG9zNCkKKwkJYmFz
aWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRzb2wyKQorCQli
YXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlzdW4zIHwgc3Vu
My0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3VuNCkKKwkJYmFzaWNfbWFj
aGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwgcm9hZHJ1bm5lcikKKwkJ
YmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFzaWNfbWFjaGluZT1zdjEt
Y3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJhc2ljX21hY2hpbmU9aTM4
Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFzaWNfbWFjaGluZT1hbHBo
YWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJhc2ljX21hY2hpbmU9dDkw
LWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpYzU0eCB8IGM1NHgqKQorCQliYXNpY19tYWNo
aW5lPXRpYzU0eC11bmtub3duCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTV4IHwgYzU1eCopCisJ
CWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eCB8
IGM2eCopCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQlvcz0tY29mZgorCQk7Owor
ICAgICAgICAjIFRoaXMgbXVzdCBiZSBtYXRjaGVkIGJlZm9yZSB0aWxlKi4KKyAgICAgICAgdGls
ZWd4KikKKwkJYmFzaWNfbWFjaGluZT10aWxlZ3gtdW5rbm93bgorCQlvcz0tbGludXgtZ251CisJ
CTs7CisJdGlsZSopCisJCWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCisJCW9zPS1saW51eC1n
bnUKKwkJOzsKKwl0eDM5KQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5LXVua25vd24KKwkJOzsK
Kwl0eDM5ZWwpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzllbC11bmtub3duCisJCTs7CisJdG9h
ZDEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTAteGtsCisJCW9zPS10b3BzMjAKKwkJOzsKKwl0b3dl
ciB8IHRvd2VyLTMyKQorCQliYXNpY19tYWNoaW5lPW02OGstbmNyCisJCTs7CisJdHBmKQorCQli
YXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQlvcz0tdHBmCisJCTs7CisJdWRpMjlrKQorCQliYXNp
Y19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwl1bHRyYTMpCisJCWJhc2ljX21h
Y2hpbmU9YTI5ay1ueXUKKwkJb3M9LXN5bTEKKwkJOzsKKwl2ODEwIHwgbmVjdjgxMCkKKwkJYmFz
aWNfbWFjaGluZT12ODEwLW5lYworCQlvcz0tbm9uZQorCQk7OworCXZheHYpCisJCWJhc2ljX21h
Y2hpbmU9dmF4LWRlYworCQlvcz0tc3lzdgorCQk7OworCXZtcykKKwkJYmFzaWNfbWFjaGluZT12
YXgtZGVjCisJCW9zPS12bXMKKwkJOzsKKwl2cHAqfHZ4fHZ4LSopCisJCWJhc2ljX21hY2hpbmU9
ZjMwMS1mdWppdHN1CisJCTs7CisJdnh3b3Jrczk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLXdy
cworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3M2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhr
LXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3MyOWspCisJCWJhc2ljX21hY2hpbmU9
YTI5ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl3NjUqKQorCQliYXNpY19tYWNoaW5lPXc2
NS13ZGMKKwkJb3M9LW5vbmUKKwkJOzsKKwl3ODlrLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEu
MS13aW5ib25kCisJCW9zPS1wcm9lbGYKKwkJOzsKKwl4Ym94KQorCQliYXNpY19tYWNoaW5lPWk2
ODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwl4cHMgfCB4cHMxMDApCisJCWJhc2ljX21hY2hp
bmU9eHBzMTAwLWhvbmV5d2VsbAorCQk7OworCXltcCkKKwkJYmFzaWNfbWFjaGluZT15bXAtY3Jh
eQorCQlvcz0tdW5pY29zCisJCTs7CisJejhrLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16OGst
dW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJejgwLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16
ODAtdW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJbm9uZSkKKwkJYmFzaWNfbWFjaGluZT1ub25l
LW5vbmUKKwkJb3M9LW5vbmUKKwkJOzsKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBt
YW51ZmFjdHVyZXIgb2YgY2VydGFpbiBDUFUgdHlwZXMuICBJdCBpcyBpbgorIyBzb21lIGNhc2Vz
IHRoZSBvbmx5IG1hbnVmYWN0dXJlciwgaW4gb3RoZXJzLCBpdCBpcyB0aGUgbW9zdCBwb3B1bGFy
LgorCXc4OWspCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS13aW5ib25kCisJCTs7CisJb3A1MG4p
CisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlvcDYwYykKKwkJYmFzaWNfbWFj
aGluZT1ocHBhMS4xLW9raQorCQk7OworCXJvbXApCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0K
KwkJOzsKKwltbWl4KQorCQliYXNpY19tYWNoaW5lPW1taXgta251dGgKKwkJOzsKKwlyczYwMDAp
CisJCWJhc2ljX21hY2hpbmU9cnM2MDAwLWlibQorCQk7OworCXZheCkKKwkJYmFzaWNfbWFjaGlu
ZT12YXgtZGVjCisJCTs7CisJcGRwMTApCisJCSMgdGhlcmUgYXJlIG1hbnkgY2xvbmVzLCBzbyBE
RUMgaXMgbm90IGEgc2FmZSBiZXQKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC11bmtub3duCisJCTs7
CisJcGRwMTEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTEtZGVjCisJCTs7CisJd2UzMmspCisJCWJh
c2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRd
YWViIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQorCQliYXNpY19tYWNoaW5l
PXNoLXVua25vd24KKwkJOzsKKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIg
fCBzcGFyY3Y5dikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwljeWRyYSkKKwkJ
YmFzaWNfbWFjaGluZT1jeWRyYS1jeWRyb21lCisJCTs7CisJb3Jpb24pCisJCWJhc2ljX21hY2hp
bmU9b3Jpb24taGlnaGxldmVsCisJCTs7CisJb3Jpb24xMDUpCisJCWJhc2ljX21hY2hpbmU9Y2xp
cHBlci1oaWdobGV2ZWwKKwkJOzsKKwltYWMgfCBtcHcgfCBtYWMtbXB3KQorCQliYXNpY19tYWNo
aW5lPW02OGstYXBwbGUKKwkJOzsKKwlwbWFjIHwgcG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9
cG93ZXJwYy1hcHBsZQorCQk7OworCSotdW5rbm93bikKKwkJIyBNYWtlIHN1cmUgdG8gbWF0Y2gg
YW4gYWxyZWFkeS1jYW5vbmljYWxpemVkIG1hY2hpbmUgbmFtZS4KKwkJOzsKKwkqKQorCQllY2hv
IEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IG1hY2hpbmUgXGAkYmFzaWNfbWFjaGluZVwn
IG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7Citlc2FjCisKKyMgSGVyZSB3ZSBj
YW5vbmljYWxpemUgY2VydGFpbiBhbGlhc2VzIGZvciBtYW51ZmFjdHVyZXJzLgorY2FzZSAkYmFz
aWNfbWFjaGluZSBpbgorCSotZGlnaXRhbCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2lj
X21hY2hpbmUgfCBzZWQgJ3MvZGlnaXRhbC4qL2RlYy8nYAorCQk7OworCSotY29tbW9kb3JlKikK
KwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9jb21tb2RvcmUu
Ki9jYm0vJ2AKKwkJOzsKKwkqKQorCQk7OworZXNhYworCisjIERlY29kZSBtYW51ZmFjdHVyZXIt
c3BlY2lmaWMgYWxpYXNlcyBmb3IgY2VydGFpbiBvcGVyYXRpbmcgc3lzdGVtcy4KKworaWYgWyB4
IiRvcyIgIT0geCIiIF0KK3RoZW4KK2Nhc2UgJG9zIGluCisgICAgICAgICMgRmlyc3QgbWF0Y2gg
c29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCisgICAgICAgICMgdGhhdCBtaWdodCBnZXQgY29uZnVz
ZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0
ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisgICAgICAgIC1hdXJvcmF1eCkKKwkg
ICAgICAgIG9zPS1hdXJvcmF1eAorCQk7OworCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQorCQlv
cz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCisJCTs7CisJLXNvbGFy
aXMpCisJCW9zPS1zb2xhcmlzMgorCQk7OworCS1zdnI0KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJ
LXVuaXh3YXJlKikKKwkJb3M9LXN5c3Y0LjJ1dworCQk7OworCS1nbnUvbGludXgqKQorCQlvcz1g
ZWNobyAkb3MgfCBzZWQgLWUgJ3N8Z251L2xpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCSMgRmly
c3QgYWNjZXB0IHRoZSBiYXNpYyBzeXN0ZW0gdHlwZXMuCisJIyBUaGUgcG9ydGFibGUgc3lzdGVt
cyBjb21lcyBmaXJzdC4KKwkjIEVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gQSAqLCB0byBt
YXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQg
Y29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KKwktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1p
bml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCisJICAgICAgfCAtKnZtcyogfCAt
c2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1sz
NF0qXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCog
fCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJp
cyogXAorCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29z
KiB8IC11bmljb3MqIHwgLWFvZiogXAorCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAorCSAgICAg
IHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZz
KiBcCisJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1y
dHUqIHwgLXhlbml4KiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8
IC1taXJic2QqIHwgLW5ldGJzZCogXAorCSAgICAgIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBc
CisJICAgICAgfCAtZWtrb2JzZCogfCAta2ZyZWVic2QqIHwgLWZyZWVic2QqIHwgLXJpc2NpeCog
fCAtbHlueG9zKiBcCisJICAgICAgfCAtYm9zeCogfCAtbmV4dHN0ZXAqIHwgLWN4dXgqIHwgLWFv
dXQqIHwgLWVsZiogfCAtb2FiaSogXAorCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYq
IHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKKwkgICAgICB8IC11ZGkqIHwgLWVhYmkq
IHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKKwkgICAgICB8IC1jaG9ydXNv
cyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwg
LXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMy
KiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAg
ICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAorCSAgICAgIHwgLWludGVy
aXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBc
CisJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9u
c3RvcHV4KiBcCisJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwg
LXRvcHMyMCogfCAtaXRzKiBcCisJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAt
dWNsaW51eCogfCAtbnVjbGV1cyogXAorCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwg
LXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorCSAgICAgIHwgLXBvd2VybWF4KiB8
IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisJICAgICAgfCAt
c2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqKQor
CSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2
ZXJzaW9uIG51bWJlci4KKwkJOzsKKwktcW54KikKKwkJY2FzZSAkYmFzaWNfbWFjaGluZSBpbgor
CQkgICAgeDg2LSogfCBpKjg2LSopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1udG8kb3MKKwkJ
CTs7CisJCWVzYWMKKwkJOzsKKwktbnRvLXFueCopCisJCTs7CisJLW50byopCisJCW9zPWBlY2hv
ICRvcyB8IHNlZCAtZSAnc3xudG98bnRvLXFueHwnYAorCQk7OworCS1zaW0gfCAtZXMxODAwKiB8
IC1obXMqIHwgLXhyYXkgfCAtb3M2OGsqIHwgLW5vbmUqIHwgLXY4OHIqIFwKKwkgICAgICB8IC13
aW5kb3dzKiB8IC1vc3ggfCAtYWJ1ZyB8IC1uZXR3YXJlKiB8IC1vczkqIHwgLWJlb3MqIHwgLWhh
aWt1KiBcCisJICAgICAgfCAtbWFjb3MqIHwgLW1wdyogfCAtbWFnaWMqIHwgLW1taXh3YXJlKiB8
IC1tb245NjAqIHwgLWxuZXdzKikKKwkJOzsKKwktbWFjKikKKwkJb3M9YGVjaG8gJG9zIHwgc2Vk
IC1lICdzfG1hY3xtYWNvc3wnYAorCQk7OworCS1saW51eC1kaWV0bGliYykKKwkJb3M9LWxpbnV4
LWRpZXRsaWJjCisJCTs7CisJLWxpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGxp
bnV4fGxpbnV4LWdudXwnYAorCQk7OworCS1zdW5vczUqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQg
LWUgJ3N8c3Vub3M1fHNvbGFyaXMyfCdgCisJCTs7CisJLXN1bm9zNiopCisJCW9zPWBlY2hvICRv
cyB8IHNlZCAtZSAnc3xzdW5vczZ8c29sYXJpczN8J2AKKwkJOzsKKwktb3BlbmVkKikKKwkJb3M9
LW9wZW5lZGl0aW9uCisJCTs7CisgICAgICAgIC1vczQwMCopCisJCW9zPS1vczQwMAorCQk7Owor
CS13aW5jZSopCisJCW9zPS13aW5jZQorCQk7OworCS1vc2Zyb3NlKikKKwkJb3M9LW9zZnJvc2UK
KwkJOzsKKwktb3NmKikKKwkJb3M9LW9zZgorCQk7OworCS11dGVrKikKKwkJb3M9LWJzZAorCQk7
OworCS1keW5peCopCisJCW9zPS1ic2QKKwkJOzsKKwktYWNpcyopCisJCW9zPS1hb3MKKwkJOzsK
KwktYXRoZW9zKikKKwkJb3M9LWF0aGVvcworCQk7OworCS1zeWxsYWJsZSopCisJCW9zPS1zeWxs
YWJsZQorCQk7OworCS0zODZic2QpCisJCW9zPS1ic2QKKwkJOzsKKwktY3RpeCogfCAtdXRzKikK
KwkJb3M9LXN5c3YKKwkJOzsKKwktbm92YSopCisJCW9zPS1ydG1rLW5vdmEKKwkJOzsKKwktbnMy
ICkKKwkJb3M9LW5leHRzdGVwMgorCQk7OworCS1uc2sqKQorCQlvcz0tbnNrCisJCTs7CisJIyBQ
cmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIgb2Ygc2luaXg1LgorCS1zaW5peDUuKikKKwkJb3M9
YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNpbml4fHN5c3Z8J2AKKwkJOzsKKwktc2luaXgqKQorCQlv
cz0tc3lzdjQKKwkJOzsKKyAgICAgICAgLXRwZiopCisJCW9zPS10cGYKKwkJOzsKKwktdHJpdG9u
KikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJCW9zPS1zeXN2MworCQk7OworCS1zdnI0
KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN5c3Zy
NCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBhZnRlciAtc3lzdnI0Lgor
CS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9zZQorCQk7OworCS1lczE4MDAqKQorCQlv
cz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVuaXgKKwkJOzsKKwktKm1pbnQgfCAtbWlu
dFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQlvcz0tbWludAorCQk7OworCS1hcm9z
KikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJCW9zPS1rYW9zCisJCTs7CisJLXp2bW9l
KQorCQlvcz0tenZtb2UKKwkJOzsKKwktZGljb3MqKQorCQlvcz0tZGljb3MKKwkJOzsKKyAgICAg
ICAgLW5hY2wqKQorCSAgICAgICAgOzsKKwktbm9uZSkKKwkJOzsKKwkqKQorCQkjIEdldCByaWQg
b2YgdGhlIGAtJyBhdCB0aGUgYmVnaW5uaW5nIG9mICRvcy4KKwkJb3M9YGVjaG8gJG9zIHwgc2Vk
ICdzL1teLV0qLS8vJ2AKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBzeXN0
ZW0gXGAkb3NcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworZWxz
ZQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQg
Y29tZSB3aXRoIHZhcmlvdXMgbWFjaGluZXMuCisjIFRoZSB2YWx1ZSBzaG91bGQgYmUgd2hhdCB0
aGUgdmVuZG9yIGN1cnJlbnRseSBzaGlwcyBvdXQgdGhlIGRvb3Igd2l0aCB0aGVpcgorIyBtYWNo
aW5lIG9yIHB1dCBhbm90aGVyIHdheSwgdGhlIG1vc3QgcG9wdWxhciBvcyBwcm92aWRlZCB3aXRo
IHRoZSBtYWNoaW5lLgorCisjIE5vdGUgdGhhdCBpZiB5b3UncmUgZ29pbmcgdG8gdHJ5IHRvIG1h
dGNoICItTUFOVUZBQ1RVUkVSIiBoZXJlIChzYXksCisjICItc3VuIiksIHRoZW4geW91IGhhdmUg
dG8gdGVsbCB0aGUgY2FzZSBzdGF0ZW1lbnQgdXAgdG93YXJkcyB0aGUgdG9wCisjIHRoYXQgTUFO
VUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZyBzeXN0ZW0uICBPdGhlcndpc2UsIGNvZGUgYWJv
dmUKKyMgd2lsbCBzaWduYWwgYW4gZXJyb3Igc2F5aW5nIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0
IGFuIG9wZXJhdGluZworIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2lu
dC4KKworY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorICAgICAgICBzY29yZS0qKQorCQlvcz0tZWxm
CisJCTs7CisgICAgICAgIHNwdS0qKQorCQlvcz0tZWxmCisJCTs7CisJKi1hY29ybikKKwkJb3M9
LXJpc2NpeDEuMgorCQk7OworCWFybSotcmViZWwpCisJCW9zPS1saW51eAorCQk7OworCWFybSot
c2VtaSkKKwkJb3M9LWFvdXQKKwkJOzsKKyAgICAgICAgYzR4LSogfCB0aWM0eC0qKQorICAgICAg
ICAJb3M9LWNvZmYKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50
cnkuCisJcGRwMTAtKikKKwkJb3M9LXRvcHMyMAorCQk7OworCXBkcDExLSopCisJCW9zPS1ub25l
CisJCTs7CisJKi1kZWMgfCB2YXgtKikKKwkJb3M9LXVsdHJpeDQuMgorCQk7OworCW02OCotYXBv
bGxvKQorCQlvcz0tZG9tYWluCisJCTs7CisJaTM4Ni1zdW4pCisJCW9zPS1zdW5vczQuMC4yCisJ
CTs7CisJbTY4MDAwLXN1bikKKwkJb3M9LXN1bm9zMworCQkjIFRoaXMgYWxzbyBleGlzdHMgaW4g
dGhlIGNvbmZpZ3VyZSBwcm9ncmFtLCBidXQgd2FzIG5vdCB0aGUKKwkJIyBkZWZhdWx0LgorCQkj
IG9zPS1zdW5vczQKKwkJOzsKKwltNjgqLWNpc2NvKQorCQlvcz0tYW91dAorCQk7OworICAgICAg
ICBtZXAtKikKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLWNpc2NvKQorCQlvcz0tZWxmCisJCTs7
CisJbWlwcyotKikKKwkJb3M9LWVsZgorCQk7OworCW9yMzItKikKKwkJb3M9LWNvZmYKKwkJOzsK
KwkqLXR0aSkJIyBtdXN0IGJlIGJlZm9yZSBzcGFyYyBlbnRyeSBvciB3ZSBnZXQgdGhlIHdyb25n
IG9zLgorCQlvcz0tc3lzdjMKKwkJOzsKKwlzcGFyYy0qIHwgKi1zdW4pCisJCW9zPS1zdW5vczQu
MS4xCisJCTs7CisJKi1iZSkKKwkJb3M9LWJlb3MKKwkJOzsKKwkqLWhhaWt1KQorCQlvcz0taGFp
a3UKKwkJOzsKKwkqLWlibSkKKwkJb3M9LWFpeAorCQk7OworICAgIAkqLWtudXRoKQorCQlvcz0t
bW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkK
KwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkK
KwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0q
IHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQor
CQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJ
CW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNj
dXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkq
LW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJ
OzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7
CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJ
CTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJz
ZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4
CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlv
cz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhw
dgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNv
ZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9
LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdl
IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwg
YnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFj
dHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93
bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7
CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCopCisJ
CQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsK
KwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5k
b3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJ
CS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9y
PWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdl
bml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2
ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJ
CQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5k
b3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJ
dmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7Owor
CQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3Mq
KQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0q
TWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikK
KwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNo
byAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMK
KworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMg
ZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0
YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0t
JTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLXIgNWIyNjc2YWMxMzIx
IC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvY29uZmlndXJlCVR1ZSBKYW4gMTAgMTk6
MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDEwMTUzIEBACisjISAvYmluL3NoCisjIEd1ZXNz
IHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmls
ZXMuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42Ny4KKyMKKyMKKyMgQ29weXJpZ2h0
IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAx
LAorIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgorIworIworIyBUaGlzIGNvbmZpZ3Vy
ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgor
IyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2Rp
ZnkgaXQuCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTTRzaCBJbml0aWFsaXphdGlv
bi4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgQmUgbW9yZSBCb3VybmUgY29t
cGF0aWJsZQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAoraWYgdGVz
dCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYx
OyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAgIyBQcmUtNC4yIHZlcnNpb25z
IG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCisgICMgaXMgY29u
dHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCisgIGFsaWFzIC1nICck
ezErIiRAIn0nPSciJEAiJworICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZWxzZQorICBjYXNlIGAo
c2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygKKyAgKnBvc2l4KikgOgorICAgIHNldCAtbyBwb3Np
eCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorCisKK2FzX25sPScKKycKK2V4cG9y
dCBhc19ubAorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3Iv
YmluL3ByaW50Zi4KK2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFwnCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFz
X2VjaG8KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRh
c19lY2hvCisjIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJp
bnRmIHByb2dyYW0gb24gU29sYXJpcywKKyMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3Ig
YmFzaCBvciB6c2guCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcCisg
ICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9k
ZXYvbnVsbDsgdGhlbgorICBhc19lY2hvPSdwcmludCAtciAtLScKKyAgYXNfZWNob19uPSdwcmlu
dCAtcm4gLS0nCitlbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNo
byIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50ZiAlc1xuJworICBhc19lY2hv
X249J3ByaW50ZiAlcycKK2Vsc2UKKyAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAk
YXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuCisgICAgYXNfZWNo
b19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicKKyAgICBhc19lY2hvX249
Jy91c3IvdWNiL2VjaG8gLW4nCisgIGVsc2UKKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAi
WCQxIiA6ICJYXFwoLipcXCkiJworICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCisgICAgICBhcmc9
JDE7CisgICAgICBjYXNlICRhcmcgaW4gIygKKyAgICAgICoiJGFzX25sIiopCisJZXhwciAiWCRh
cmciIDogIlhcXCguKlxcKSRhc19ubCI7CisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxc
XCguKlxcKSJgOzsKKyAgICAgIGVzYWM7CisgICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwp
IiB8IHRyIC1kICIkYXNfbmwiCisgICAgJworICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQorICAg
IGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCisgIGZpCisgIGV4cG9y
dCBhc19lY2hvX2JvZHkKKyAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJwor
ZmkKKworIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJB
VE9SK3NldH0iICE9IHNldDsgdGhlbgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmlu
Oy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKKyAgICAo
UEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8
fAorICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCisgIH0KK2ZpCisKKworIyBJRlMKKyMgV2UgbmVl
ZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90
aW5nIGlzCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0
IHNwYWNlLXRhYi4KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5z
ZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAorIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8g
ZW1wdHkgdmFsdWUuKQorSUZTPSIgIiIJJGFzX25sIgorCisjIEZpbmQgd2hvIHdlIGFyZS4gIExv
b2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorY2Fz
ZSAkMCBpbiAjKCgKKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OworICAqKSBhc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ
RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgdGVz
dCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCisgICAgIDs7Citlc2FjCisjIFdlIGRpZCBub3QgZmluZCBv
dXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCisjIGlu
IHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KK2lmIHRlc3Qg
IngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KKyAgYXNfbXlzZWxmPSQwCitmaQoraWYgdGVzdCAhIC1m
ICIkYXNfbXlzZWxmIjsgdGhlbgorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5v
dCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgorICBl
eGl0IDEKK2ZpCisKKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdo
aWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90
IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIKKyMgc3VwcHJlc3NlcyBh
bnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKKyMgdHJp
Z2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCitmb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBN
QUlMIE1BSUxQQVRICitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAorICAm
JiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAk
YXNfdmFyIHx8IDoKK2RvbmUKK1BTMT0nJCAnCitQUzI9Jz4gJworUFM0PScrICcKKworIyBOTFMg
bnVpc2FuY2VzLgorTENfQUxMPUMKK2V4cG9ydCBMQ19BTEwKK0xBTkdVQUdFPUMKK2V4cG9ydCBM
QU5HVUFHRQorCisjIENEUEFUSC4KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1
bnNldCBDRFBBVEgKKworaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhlbgorICBhc19i
b3VybmVfY29tcGF0aWJsZT0iaWYgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cIiAmJiAo
ZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxM
Q01EPToKKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiBc
JHsxK1wiXCRAXCJ9LCB3aGljaAorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2Fi
bGUgdGhpcyBmZWF0dXJlLgorICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCisg
IHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVs
bFxgIGluICMoCisgICpwb3NpeCopIDoKKyAgICBzZXQgLW8gcG9zaXggOzsgIygKKyAgKikgOgor
ICAgICA7OworZXNhYworZmkKKyIKKyAgYXNfcmVxdWlyZWQ9ImFzX2ZuX3JldHVybiAoKSB7IChl
eGl0IFwkMSk7IH0KK2FzX2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQorYXNfZm5f
ZmFpbHVyZSAoKSB7IGFzX2ZuX3JldHVybiAxOyB9Cithc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJl
dHVybiAwOyB9Cithc19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9CisKK2V4aXRjb2Rl
PTAKK2FzX2ZuX3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFp
bGVkLjsgfQorYXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVy
ZSBzdWNjZWVkZWQuOyB9Cithc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8g
YXNfZm5fcmV0X3N1Y2Nlc3MgZmFpbGVkLjsgfQorYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0
Y29kZT0xOyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KK2lmICggc2V0IHg7
IGFzX2ZuX3JldF9zdWNjZXNzIHkgJiYgdGVzdCB4ID0gXCJcJDFcIiApOyB0aGVuIDoKKworZWxz
ZQorICBleGl0Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3ZXJlIG5vdCBzYXZl
ZC4KK2ZpCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxIgorICBhc19zdWdnZXN0ZWQ9
IiAgYXNfbGluZW5vXzE9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3Vn
Z2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18xYT1cJExJTkVOTworICBhc19saW5lbm9f
Mj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1
Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCisgIGV2YWwgJ3Rlc3QgXCJ4XCRhc19saW5l
bm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmCisgIHRl
c3QgXCJ4XGBleHByIFwkYXNfbGluZW5vXzEnXCRhc19ydW4nICsgMVxgXCIgPSBcInhcJGFzX2xp
bmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEKK3Rlc3QgXCQoKCAxICsgMSApKSA9IDIgfHwg
ZXhpdCAxIgorICBpZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikgMj4vZGV2L251bGw7IHRoZW4gOgor
ICBhc19oYXZlX3JlcXVpcmVkPXllcworZWxzZQorICBhc19oYXZlX3JlcXVpcmVkPW5vCitmaQor
ICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMgJiYgKGV2YWwgIiRhc19zdWdnZXN0
ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisKK2Vsc2UKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorYXNfZm91bmQ9ZmFsc2UKK2ZvciBhc19kaXIgaW4gL2JpbiRQQVRI
X1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2
ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgYXNfZm91bmQ9OgorICBj
YXNlICRhc19kaXIgaW4gIygKKwkgLyopCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2gg
c2g1OyBkbworCSAgICAgIyBUcnkgb25seSBzaGVsbHMgdGhhdCBleGlzdCwgdG8gc2F2ZSBzZXZl
cmFsIGZvcmtzLgorCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQorCSAgICAgaWYgeyB0
ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmCisJCSAg
ICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1aXJlZCIgfCBhc19y
dW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIENPTkZJR19TSEVMTD0k
YXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKKwkJICAgaWYgeyAkYXNfZWNobyAiJGFzX2Jv
dXJuZV9jb21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9
IDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgYnJlYWsgMgorZmkKK2ZpCisJICAgZG9uZTs7CisgICAg
ICAgZXNhYworICBhc19mb3VuZD1mYWxzZQorZG9uZQorJGFzX2ZvdW5kIHx8IHsgaWYgeyB0ZXN0
IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRTSEVMTC5leGUiOyB9ICYmCisJICAgICAgeyAkYXNf
ZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRT
SEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgorICBDT05GSUdfU0hFTEw9JFNIRUxMIGFzX2hh
dmVfcmVxdWlyZWQ9eWVzCitmaTsgfQorSUZTPSRhc19zYXZlX0lGUworCisKKyAgICAgIGlmIHRl
c3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoKKyAgIyBXZSBjYW5ub3QgeWV0IGFzc3Vt
ZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKKwkjIG5ldXRyYWxpemF0
aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbworCSMgd29y
a3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMu
CisJQkFTSF9FTlY9L2Rldi9udWxsCisJRU5WPS9kZXYvbnVsbAorCSh1bnNldCBCQVNIX0VOVikg
Pi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgorCWV4cG9ydCBDT05GSUdfU0hF
TEwKKwlleGVjICIkQ09ORklHX1NIRUxMIiAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CitmaQorCisg
ICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4bm87IHRoZW4gOgorICAkYXNfZWNobyAi
JDA6IFRoaXMgc2NyaXB0IHJlcXVpcmVzIGEgc2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiCisg
ICRhc19lY2hvICIkMDogdGhlIHNoZWxscyB0aGF0IEkgZm91bmQgb24geW91ciBzeXN0ZW0uIgor
ICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9OK3NldH0gPSB4c2V0IDsgdGhlbgorICAgICRhc19lY2hv
ICIkMDogSW4gcGFydGljdWxhciwgenNoICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxk
IgorICAgICRhc19lY2hvICIkMDogYmUgdXBncmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiIK
KyAgZWxzZQorICAgICRhc19lY2hvICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5v
cmcgYWJvdXQgeW91ciBzeXN0ZW0sCiskMDogaW5jbHVkaW5nIGFueSBlcnJvciBwb3NzaWJseSBv
dXRwdXQgYmVmb3JlIHRoaXMKKyQwOiBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hl
bGwsIG9yIG1hbnVhbGx5IHJ1bgorJDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlm
IHlvdSBkbyBoYXZlIG9uZS4iCisgIGZpCisgIGV4aXQgMQorZmkKK2ZpCitmaQorU0hFTEw9JHtD
T05GSUdfU0hFTEwtL2Jpbi9zaH0KK2V4cG9ydCBTSEVMTAorIyBVbnNldCBtb3JlIHZhcmlhYmxl
cyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9vbHMuCitDTElD
T0xPUl9GT1JDRT0gR1JFUF9PUFRJT05TPQordW5zZXQgQ0xJQ09MT1JfRk9SQ0UgR1JFUF9PUFRJ
T05TCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTTRzaCBTaGVsbCBGdW5jdGlv
bnMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMgYXNfZm5fdW5zZXQgVkFSCisj
IC0tLS0tLS0tLS0tLS0tLQorIyBQb3J0YWJseSB1bnNldCBWQVIuCithc19mbl91bnNldCAoKQor
eworICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9Cit9Cithc191bnNldD1hc19mbl91bnNldAorCisj
IGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNl
dCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KK2FzX2ZuX3NldF9zdGF0dXMgKCkKK3sK
KyAgcmV0dXJuICQxCit9ICMgYXNfZm5fc2V0X3N0YXR1cworCisjIGFzX2ZuX2V4aXQgU1RBVFVT
CisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVTLCBldmVu
IGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4KK2FzX2ZuX2V4aXQgKCkKK3sKKyAg
c2V0ICtlCisgIGFzX2ZuX3NldF9zdGF0dXMgJDEKKyAgZXhpdCAkMQorfSAjIGFzX2ZuX2V4aXQK
KworIyBhc19mbl9ta2Rpcl9wCisjIC0tLS0tLS0tLS0tLS0KKyMgQ3JlYXRlICIkYXNfZGlyIiBh
cyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgorYXNfZm5fbWtk
aXJfcCAoKQoreworCisgIGNhc2UgJGFzX2RpciBpbiAjKAorICAtKikgYXNfZGlyPS4vJGFzX2Rp
cjs7CisgIGVzYWMKKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7
CisgICAgYXNfZGlycz0KKyAgICB3aGlsZSA6OyBkbworICAgICAgY2FzZSAkYXNfZGlyIGluICMo
CisgICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxc
XFxcXFwnJy9nImA7OyAjJygKKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7CisgICAgICBlc2Fj
CisgICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgorICAgICAgYXNfZGlyPWAkYXNf
ZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9d
XCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwg
XAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoL1wp
JyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhc19kaXIiIHwKKyAgICBzZWQgJy9e
WFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAg
fQorCSAgL15YXChcL1wvXClbXi9dLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAg
L15YXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cKS4q
L3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorICAgICAgdGVz
dCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKKyAgICBkb25lCisgICAgdGVzdCAteiAiJGFzX2RpcnMi
IHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgorICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFz
X2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgorCisKK30gIyBh
c19mbl9ta2Rpcl9wCisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBBcHBlbmQgdGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVm
aW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBUYWtlCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwg
b3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXIKKyMg
cmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3Ro
IHByZXNlbnQgaW4gbmFpdmUKKyMgaW1wbGVtZW50YXRpb25zLgoraWYgKGV2YWwgImFzX3Zhcj0x
OyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOgor
ICBldmFsICdhc19mbl9hcHBlbmQgKCkKKyAgeworICAgIGV2YWwgJDErPVwkMgorICB9JworZWxz
ZQorICBhc19mbl9hcHBlbmQgKCkKKyAgeworICAgIGV2YWwgJDE9XCQkMVwkMgorICB9CitmaSAj
IGFzX2ZuX2FwcGVuZAorCisjIGFzX2ZuX2FyaXRoIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0t
LS0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9y
ZSB0aGUgcmVzdWx0IGluIHRoZQorIyBnbG9iYWwgJGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Yg
c2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUgYXJndW1lbnRzCisjIG11c3QgYmUgcG9y
dGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSAp
KSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpCisgIHsK
KyAgICBhc192YWw9JCgoICQqICkpCisgIH0nCitlbHNlCisgIGFzX2ZuX2FyaXRoICgpCisgIHsK
KyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYAorICB9CitmaSAjIGFzX2Zu
X2FyaXRoCisKKworIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT3V0cHV0ICJgYmFz
ZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQg
YXJlCisjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVu
Y2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAx
IGlmIHRoYXQgd2FzIDAuCithc19mbl9lcnJvciAoKQoreworICBhc19zdGF0dXM9JDE7IHRlc3Qg
JGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7IHRoZW4KKyAg
ICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19z
dGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CisgIGZpCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9y
OiAkMiIgPiYyCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cworfSAjIGFzX2ZuX2Vycm9yCisKK2lm
IGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmCisgICB0ZXN0ICJYYGV4cHIgMDAw
MDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhlbgorICBhc19leHByPWV4cHIKK2Vsc2UKKyAg
YXNfZXhwcj1mYWxzZQorZmkKKworaWYgKGJhc2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAm
JiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgvIjsgdGhlbgorICBhc19iYXNlbmFt
ZT1iYXNlbmFtZQorZWxzZQorICBhc19iYXNlbmFtZT1mYWxzZQorZmkKKworaWYgKGFzX2Rpcj1g
ZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0
aGVuCisgIGFzX2Rpcm5hbWU9ZGlybmFtZQorZWxzZQorICBhc19kaXJuYW1lPWZhbHNlCitmaQor
Cithc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIgfHwKKyRhc19leHByIFgvIiQwIiA6ICcuKi9c
KFteL11bXi9dKlwpLyokJyBcfCBcCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJDAi
IDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWC8iJDAiIHwKKyAgICBz
ZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0K
KwkgIC9eWFwvXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwv
XChcL1wpLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisK
KyMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KK2FzX2NyX2xldHRlcnM9
J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JworYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVonCithc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRF
UlMKK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJz
JGFzX2NyX2RpZ2l0cworCisKKyAgYXNfbGluZW5vXzE9JExJTkVOTyBhc19saW5lbm9fMWE9JExJ
TkVOTworICBhc19saW5lbm9fMj0kTElORU5PIGFzX2xpbmVub18yYT0kTElORU5PCisgIGV2YWwg
J3Rlc3QgIngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4n
IiAmJgorICB0ZXN0ICJ4YGV4cHIgJGFzX2xpbmVub18xJyRhc19ydW4nICsgMWAiID0gIngkYXNf
bGluZW5vXzInJGFzX3J1biciJyB8fCB7CisgICMgQmxhbWUgTGVlIEUuIE1jTWFob24gKDE5MzEt
MTk4OSkgZm9yIHNlZCdzIHN5bnRheC4gIDotKQorICBzZWQgLW4gJworICAgIHAKKyAgICAvWyRd
TElORU5PLz0KKyAgJyA8JGFzX215c2VsZiB8CisgICAgc2VkICcKKyAgICAgIHMvWyRdTElORU5P
LiovJi0vCisgICAgICB0IGxpbmVubworICAgICAgYgorICAgICAgOmxpbmVubworICAgICAgTgor
ICAgICAgOmxvb3AKKyAgICAgIHMvWyRdTElORU5PXChbXickYXNfY3JfYWxudW0nX10uKlxuXClc
KC4qXCkvXDJcMVwyLworICAgICAgdCBsb29wCisgICAgICBzLy1cbi4qLy8KKyAgICAnID4kYXNf
bWUubGluZW5vICYmCisgIGNobW9kICt4ICIkYXNfbWUubGluZW5vIiB8fAorICAgIHsgJGFzX2Vj
aG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0
aCBhIFBPU0lYIHNoZWxsIiA+JjI7IGFzX2ZuX2V4aXQgMTsgfQorCisgICMgRG9uJ3QgdHJ5IHRv
IGV4ZWMgYXMgaXQgY2hhbmdlcyAkWzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zCisg
ICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBm
aW5kIHRoZQorICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkg
c2Vuc2l0aXZlIHRvIHRoaXMpLgorICAuICIuLyRhc19tZS5saW5lbm8iCisgICMgRXhpdCBzdGF0
dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLgorICBleGl0Cit9CisKK0VDSE9fQz0gRUNI
T19OPSBFQ0hPX1Q9CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAorLW4qKQorICBjYXNlIGBl
Y2hvICd4eVxjJ2AgaW4KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRh
YiBjaGFyYWN0ZXIuCisgIHh5KSAgRUNIT19DPSdcYyc7OworICAqKSAgIGVjaG8gYGVjaG8ga3No
ODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCisgICAgICAgRUNIT19UPScJJzs7CisgIGVz
YWM7OworKikKKyAgRUNIT19OPSctbic7OworZXNhYworCitybSAtZiBjb25mJCQgY29uZiQkLmV4
ZSBjb25mJCQuZmlsZQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuCisgIHJtIC1mIGNvbmYk
JC5kaXIvY29uZiQkLmZpbGUKK2Vsc2UKKyAgcm0gLWYgY29uZiQkLmRpcgorICBta2RpciBjb25m
JCQuZGlyIDI+L2Rldi9udWxsCitmaQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVs
bDsgdGhlbgorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4K
KyAgICBhc19sbl9zPSdsbiAtcycKKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFz
OgorICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBk
aXInIGZhaWwuCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4gLXMn
IGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBo
YXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4KKyAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQu
ZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8CisgICAgICBhc19sbl9z
PSdjcCAtcCcKKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4K
KyAgICBhc19sbl9zPWxuCisgIGVsc2UKKyAgICBhc19sbl9zPSdjcCAtcCcKKyAgZmkKK2Vsc2UK
KyAgYXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRp
ci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQorcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAor
CitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX21rZGlyX3A9J21rZGlyIC1w
ICIkYXNfZGlyIicKK2Vsc2UKKyAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKKyAgYXNfbWtk
aXJfcD1mYWxzZQorZmkKKworaWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBh
c190ZXN0X3g9J3Rlc3QgLXgnCitlbHNlCisgIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsg
dGhlbgorICAgIGFzX2xzX0xfb3B0aW9uPUwKKyAgZWxzZQorICAgIGFzX2xzX0xfb3B0aW9uPQor
ICBmaQorICBhc190ZXN0X3g9JworICAgIGV2YWwgc2ggLWMgJ1wnJworICAgICAgaWYgdGVzdCAt
ZCAiJDEiOyB0aGVuCisJdGVzdCAtZCAiJDEvLiI7CisgICAgICBlbHNlCisJY2FzZSAkMSBpbiAj
KAorCS0qKXNldCAiLi8kMSI7OworCWVzYWM7CisJY2FzZSBgbHMgLWxkJyRhc19sc19MX29wdGlv
bicgIiQxIiAyPi9kZXYvbnVsbGAgaW4gIygoCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztm
aQorICAgICdcJycgc2gKKyAgJworZmkKK2FzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94CisKKyMg
U2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KK2Fz
X3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVb
Xl8kYXNfY3JfYWxudW1dJV8lZyciCisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5n
IG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBw
JTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKKworCit0ZXN0IC1uICIkREpESVIiIHx8IGV4ZWMg
NzwmMCA8L2Rldi9udWxsCitleGVjIDY+JjEKKworIyBOYW1lIG9mIHRoZSBob3N0LgorIyBob3N0
bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgb2xkIEdOVS9MaW51eCkgcmV0dXJucyBhIGJv
Z3VzIGV4aXQgc3RhdHVzLAorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCithY19ob3N0bmFtZT1g
KGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKworIworIyBJbml0
aWFsaXphdGlvbnMuCisjCithY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsCithY19jbGVhbl9m
aWxlcz0KK2FjX2NvbmZpZ19saWJvYmpfZGlyPS4KK0xJQk9CSlM9Citjcm9zc19jb21waWxpbmc9
bm8KK3N1YmRpcnM9CitNRkxBR1M9CitNQUtFRkxBR1M9CisKKyMgSWRlbnRpdHkgb2YgdGhpcyBw
YWNrYWdlLgorUEFDS0FHRV9OQU1FPQorUEFDS0FHRV9UQVJOQU1FPQorUEFDS0FHRV9WRVJTSU9O
PQorUEFDS0FHRV9TVFJJTkc9CitQQUNLQUdFX0JVR1JFUE9SVD0KK1BBQ0tBR0VfVVJMPQorCith
Y191bmlxdWVfZmlsZT0iWGVuIEh5cGVydmlzb3IiCithY191bmlxdWVfZmlsZT0ibGlieGwvbGli
eGwuYyIKK2FjX2RlZmF1bHRfcHJlZml4PS91c3IKKyMgRmFjdG9yaW5nIGRlZmF1bHQgaGVhZGVy
cyBmb3IgbW9zdCB0ZXN0cy4KK2FjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKKyNpbmNsdWRlIDxzdGRp
by5oPgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
ZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNl
bmRpZgorI2lmZGVmIFNURENfSEVBREVSUworIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVk
ZSA8c3RkZGVmLmg+CisjZWxzZQorIyBpZmRlZiBIQVZFX1NURExJQl9ICisjICBpbmNsdWRlIDxz
dGRsaWIuaD4KKyMgZW5kaWYKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1RSSU5HX0gKKyMgaWYgIWRl
ZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllfSAorIyAgaW5jbHVkZSA8
bWVtb3J5Lmg+CisjIGVuZGlmCisjIGluY2x1ZGUgPHN0cmluZy5oPgorI2VuZGlmCisjaWZkZWYg
SEFWRV9TVFJJTkdTX0gKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaWZkZWYgSEFW
RV9JTlRUWVBFU19ICisjIGluY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZF
X1NURElOVF9ICisjIGluY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklT
VERfSAorIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZiIKKworYWNfaGVhZGVyX2xpc3Q9Cith
Y19mdW5jX2xpc3Q9CithY19zdWJzdF92YXJzPSdMVExJQk9CSlMKK1BPV19MSUIKK0xJQk9CSlMK
K0FMTE9DQQorbGliaWNvbnYKK2xpYmdjcnlwdAorbGliZXh0MmZzCitzeXN0ZW1fYWlvCitMSUJf
UEFUSAorVk5DT05GSUcKK0hPVFBMVUcKK1VERVZJTkZPCitVREVWQURNCitQWVRIT05QQVRICitP
Q0FNTEJVSUxECitPQ0FNTERPQworT0NBTUxNS0xJQgorT0NBTUxNS1RPUAorT0NBTUxERVAKK09D
QU1MCitPQ0FNTE9QVERPVE9QVAorT0NBTUxDRE9UT1BUCitPQ0FNTEJFU1QKK09DQU1MT1BUCitP
Q0FNTExJQgorT0NBTUxWRVJTSU9OCitPQ0FNTEMKK0lOU1RBTExfREFUQQorSU5TVEFMTF9TQ1JJ
UFQKK0lOU1RBTExfUFJPR1JBTQorU0VUX01BS0UKK0xOX1MKK1NFRAorWEdFVFRFWFQKK0JBU0gK
K1hNTAorQ1VSTAorRkxFWAorQklTT04KK0lQCitCUkNUTAorUEVSTAorUFlUSE9OCitBUFBFTkRf
TElCCitBUFBFTkRfSU5DTFVERVMKK1BSRVBFTkRfTElCCitQUkVQRU5EX0lOQ0xVREVTCitkZWJ1
ZworbG9tb3VudAorbWluaXRlcm0KK29jYW1sdG9vbHMKK3B5dGhvbnRvb2xzCit4YXBpCit2dHBt
Cittb25pdG9ycworZ2l0aHR0cAoreHNtCitob3N0X29zCitob3N0X3ZlbmRvcgoraG9zdF9jcHUK
K2hvc3QKK2J1aWxkX29zCitidWlsZF92ZW5kb3IKK2J1aWxkX2NwdQorYnVpbGQKK0VHUkVQCitH
UkVQCitDUFAKK09CSkVYVAorRVhFRVhUCithY19jdF9DQworQ1BQRkxBR1MKK0xERkxBR1MKK0NG
TEFHUworQ0MKK3RhcmdldF9hbGlhcworaG9zdF9hbGlhcworYnVpbGRfYWxpYXMKK0xJQlMKK0VD
SE9fVAorRUNIT19OCitFQ0hPX0MKK0RFRlMKK21hbmRpcgorbG9jYWxlZGlyCitsaWJkaXIKK3Bz
ZGlyCitwZGZkaXIKK2R2aWRpcgoraHRtbGRpcgoraW5mb2RpcgorZG9jZGlyCitvbGRpbmNsdWRl
ZGlyCitpbmNsdWRlZGlyCitsb2NhbHN0YXRlZGlyCitzaGFyZWRzdGF0ZWRpcgorc3lzY29uZmRp
cgorZGF0YWRpcgorZGF0YXJvb3RkaXIKK2xpYmV4ZWNkaXIKK3NiaW5kaXIKK2JpbmRpcgorcHJv
Z3JhbV90cmFuc2Zvcm1fbmFtZQorcHJlZml4CitleGVjX3ByZWZpeAorUEFDS0FHRV9VUkwKK1BB
Q0tBR0VfQlVHUkVQT1JUCitQQUNLQUdFX1NUUklORworUEFDS0FHRV9WRVJTSU9OCitQQUNLQUdF
X1RBUk5BTUUKK1BBQ0tBR0VfTkFNRQorUEFUSF9TRVBBUkFUT1IKK1NIRUxMJworYWNfc3Vic3Rf
ZmlsZXM9JycKK2FjX3VzZXJfb3B0cz0nCitlbmFibGVfb3B0aW9uX2NoZWNraW5nCitlbmFibGVf
eHNtCitlbmFibGVfZ2l0aHR0cAorZW5hYmxlX21vbml0b3JzCitlbmFibGVfdnRwbQorZW5hYmxl
X3hhcGkKK2VuYWJsZV9weXRob250b29scworZW5hYmxlX29jYW1sdG9vbHMKK2VuYWJsZV9taW5p
dGVybQorZW5hYmxlX2xvbW91bnQKK2VuYWJsZV9kZWJ1ZworJworICAgICAgYWNfcHJlY2lvdXNf
dmFycz0nYnVpbGRfYWxpYXMKK2hvc3RfYWxpYXMKK3RhcmdldF9hbGlhcworQ0MKK0NGTEFHUwor
TERGTEFHUworTElCUworQ1BQRkxBR1MKK0NQUAorUFJFUEVORF9JTkNMVURFUworUFJFUEVORF9M
SUIKK0FQUEVORF9JTkNMVURFUworQVBQRU5EX0xJQgorUFlUSE9OCitQRVJMCitCUkNUTAorSVAK
K0JJU09OCitGTEVYCitDVVJMCitYTUwKK0JBU0gKK1hHRVRURVhUJworCisKKyMgSW5pdGlhbGl6
ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9ucy4KK2FjX2luaXRfaGVscD0KK2FjX2luaXRf
dmVyc2lvbj1mYWxzZQorYWNfdW5yZWNvZ25pemVkX29wdHM9CithY191bnJlY29nbml6ZWRfc2Vw
PQorIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdp
dGgKKyMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KK2NhY2hlX2ZpbGU9L2Rldi9udWxs
CitleGVjX3ByZWZpeD1OT05FCitub19jcmVhdGU9Citub19yZWN1cnNpb249CitwcmVmaXg9Tk9O
RQorcHJvZ3JhbV9wcmVmaXg9Tk9ORQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQorcHJvZ3JhbV90cmFu
c2Zvcm1fbmFtZT1zLHgseCwKK3NpbGVudD0KK3NpdGU9CitzcmNkaXI9Cit2ZXJib3NlPQoreF9p
bmNsdWRlcz1OT05FCit4X2xpYnJhcmllcz1OT05FCisKKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9y
eSBvcHRpb25zLgorIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFr
ZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCisjIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0
IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAorIyBieSBkZWZhdWx0IHdp
bGwgYWN0dWFsbHkgY2hhbmdlLgorIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1
c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KKyMgKFRoZSBsaXN0IGZvbGxvd3Mg
dGhlIHNhbWUgb3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzLikKK2JpbmRpcj0nJHtl
eGVjX3ByZWZpeH0vYmluJworc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKK2xpYmV4ZWNk
aXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJl
JworZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCitzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwor
c2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0v
dmFyJworaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCitvbGRpbmNsdWRlZGlyPScvdXNy
L2luY2x1ZGUnCitkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0V9JworaW5mb2Rp
cj0nJHtkYXRhcm9vdGRpcn0vaW5mbycKK2h0bWxkaXI9JyR7ZG9jZGlyfScKK2R2aWRpcj0nJHtk
b2NkaXJ9JworcGRmZGlyPScke2RvY2Rpcn0nCitwc2Rpcj0nJHtkb2NkaXJ9JworbGliZGlyPSck
e2V4ZWNfcHJlZml4fS9saWInCitsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScKK21h
bmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJworCithY19wcmV2PQorYWNfZGFzaGRhc2g9Citmb3Ig
YWNfb3B0aW9uCitkbworICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1l
bnQsIGFzc2lnbiBpdC4KKyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgICAgZXZhbCAk
YWNfcHJldj1cJGFjX29wdGlvbgorICAgIGFjX3ByZXY9CisgICAgY29udGludWUKKyAgZmkKKwor
ICBjYXNlICRhY19vcHRpb24gaW4KKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlv
biIgOiAnW149XSo9XCguKlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7OworICAqKSAgICBh
Y19vcHRhcmc9eWVzIDs7CisgIGVzYWMKKworICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251
cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgorCisgIGNhc2Ug
JGFjX2Rhc2hkYXNoJGFjX29wdGlvbiBpbgorICAtLSkKKyAgICBhY19kYXNoZGFzaD15ZXMgOzsK
KworICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJp
KQorICAgIGFjX3ByZXY9YmluZGlyIDs7CisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJp
bmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSogfCAtLWJpPSopCisgICAgYmluZGlyPSRhY19vcHRh
cmcgOzsKKworICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQorICAg
IGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsKKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9
KiB8IC0tYnVpPSogfCAtLWJ1PSopCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OworCisg
IC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwK
KyAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0t
Y2EgfCAtLWMpCisgICAgYWNfcHJldj1jYWNoZV9maWxlIDs7CisgIC1jYWNoZS1maWxlPSogfCAt
LWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAorICB8IC0tY2Fj
aGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0t
Y2E9KiB8IC0tYz0qKQorICAgIGNhY2hlX2ZpbGU9JGFjX29wdGFyZyA7OworCisgIC0tY29uZmln
LWNhY2hlIHwgLUMpCisgICAgY2FjaGVfZmlsZT1jb25maWcuY2FjaGUgOzsKKworICAtZGF0YWRp
ciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCkKKyAgICBhY19wcmV2PWRhdGFkaXIg
OzsKKyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikK
KyAgICBkYXRhZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290
ZGlyIHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwKKyAgfCAtLWRh
dGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpCisgICAgYWNfcHJldj1kYXRhcm9vdGRpciA7Owor
ICAtZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1k
YXRhcm9vdGQ9KiBcCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAtLWRhdGFybz0q
IHwgLS1kYXRhcj0qKQorICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGlzYWJs
ZS0qIHwgLS1kaXNhYmxlLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDog
J3gtKmRpc2FibGUtXCguKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFs
aWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlte
LSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJp
bnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRh
Y191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAn
cy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFi
bGVfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIk
YWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZGlzYWJsZS0kYWNfdXNl
cm9wdF9vcmlnIgorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OworICAgIGVzYWMKKyAgICBl
dmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1ubyA7OworCisgIC1kb2NkaXIgfCAtLWRvY2RpciB8IC0t
ZG9jZGkgfCAtLWRvYyB8IC0tZG8pCisgICAgYWNfcHJldj1kb2NkaXIgOzsKKyAgLWRvY2Rpcj0q
IHwgLS1kb2NkaXI9KiB8IC0tZG9jZGk9KiB8IC0tZG9jPSogfCAtLWRvPSopCisgICAgZG9jZGly
PSRhY19vcHRhcmcgOzsKKworICAtZHZpZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlk
IHwgLS1kdmkgfCAtLWR2KQorICAgIGFjX3ByZXY9ZHZpZGlyIDs7CisgIC1kdmlkaXI9KiB8IC0t
ZHZpZGlyPSogfCAtLWR2aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZpPSogfCAtLWR2PSopCisgICAg
ZHZpZGlyPSRhY19vcHRhcmcgOzsKKworICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQorICAgIGFj
X3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKKyAg
ICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMu
CisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2
L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFj
X3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9w
dD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2Ug
JGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQiCisiKikgOzsK
KyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNf
dW5yZWNvZ25pemVkX3NlcC0tZW5hYmxlLSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2du
aXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PVwk
YWNfb3B0YXJnIDs7CisKKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1w
cmVmaXggfCAtLWV4ZWMtcHJlZmkgXAorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0t
ZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4
KQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsKKyAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNf
cHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCisgIHwgLS1leGVj
LXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhl
Yy09KiBcCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorICAgIGV4ZWNfcHJlZml4
PSRhY19vcHRhcmcgOzsKKworICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQorICAgICMgT2Jz
b2xldGU7IHVzZSAtLXdpdGgtZ2FzLgorICAgIHdpdGhfZ2FzPXllcyA7OworCisgIC1oZWxwIHwg
LS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKKyAg
LWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIqKQorICAgIGFj
X2luaXRfaGVscD1yZWN1cnNpdmUgOzsKKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1z
KiB8IC0taGU9cyogfCAtaHMqKQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7OworCisgIC1ob3N0
IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQorICAgIGFjX3ByZXY9aG9zdF9hbGlhcyA7OworICAt
aG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQorICAgIGhvc3RfYWxpYXM9JGFj
X29wdGFyZyA7OworCisgIC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1odG1sZGkgfCAtLWh0bWxk
IHwgLS1odG1sIHwgLS1odG0gfCAtLWh0KQorICAgIGFjX3ByZXY9aHRtbGRpciA7OworICAtaHRt
bGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0bWxkaT0qIHwgLS1odG1sZD0qIHwgLS1odG1sPSog
fCAtLWh0bT0qIFwKKyAgfCAtLWh0PSopCisgICAgaHRtbGRpcj0kYWNfb3B0YXJnIDs7CisKKyAg
LWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAt
LWluY2x1ZGUgXAorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQorICAg
IGFjX3ByZXY9aW5jbHVkZWRpciA7OworICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSog
fCAtLWluY2x1ZGVkaT0qIHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAorICB8IC0taW5j
bHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCisgICAgaW5jbHVkZWRpcj0k
YWNfb3B0YXJnIDs7CisKKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5m
b2QgfCAtLWluZm8gfCAtLWluZikKKyAgICBhY19wcmV2PWluZm9kaXIgOzsKKyAgLWluZm9kaXI9
KiB8IC0taW5mb2Rpcj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1p
bmY9KikKKyAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZGlyIHwgLS1saWJkaXIg
fCAtLWxpYmRpIHwgLS1saWJkKQorICAgIGFjX3ByZXY9bGliZGlyIDs7CisgIC1saWJkaXI9KiB8
IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikKKyAgICBsaWJkaXI9JGFjX29wdGFy
ZyA7OworCisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxp
YmV4ZWNkIHwgLS1saWJleGVjIFwKKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCisg
ICAgYWNfcHJldj1saWJleGVjZGlyIDs7CisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9
KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCisgIHwgLS1s
aWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFy
ZyA7OworCisgIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkgfCAtLWxvY2Fs
ZWQgfCAtLWxvY2FsZSkKKyAgICBhY19wcmV2PWxvY2FsZWRpciA7OworICAtbG9jYWxlZGlyPSog
fCAtLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAtLWxvY2FsZT0q
KQorICAgIGxvY2FsZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxvY2Fsc3RhdGVkaXIgfCAtLWxv
Y2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXAorICB8IC0tbG9j
YWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCB8IC0tbG9jYWxz
KQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7OworICAtbG9jYWxzdGF0ZWRpcj0qIHwgLS1s
b2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRlZD0qIFwKKyAg
fCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSogfCAtLWxvY2Fs
c3Q9KiB8IC0tbG9jYWxzPSopCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAg
LW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0t
bSkKKyAgICBhY19wcmV2PW1hbmRpciA7OworICAtbWFuZGlyPSogfCAtLW1hbmRpcj0qIHwgLS1t
YW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCisgICAgbWFuZGly
PSRhY19vcHRhcmcgOzsKKworICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorICAgICMgT2Jzb2xldGU7
IHVzZSAtLXdpdGhvdXQtZnAuCisgICAgd2l0aF9mcD1ubyA7OworCisgIC1uby1jcmVhdGUgfCAt
LW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCisgIHwgLS1u
by1jciB8IC0tbm8tYyB8IC1uKQorICAgIG5vX2NyZWF0ZT15ZXMgOzsKKworICAtbm8tcmVjdXJz
aW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwKKyAg
fCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8t
cmUgfCAtLW5vLXIpCisgICAgbm9fcmVjdXJzaW9uPXllcyA7OworCisgIC1vbGRpbmNsdWRlZGly
IHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwKKyAg
fCAtLW9sZGluY2x1ZGUgfCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGluY2wgfCAt
LW9sZGluYyBcCisgIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0tbykKKyAg
ICBhY19wcmV2PW9sZGluY2x1ZGVkaXIgOzsKKyAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5j
bHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCisgIHwgLS1v
bGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSog
fCAtLW9sZGluYz0qIFwKKyAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9s
PSogfCAtLW89KikKKyAgICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKKworICAtcHJlZml4
IHwgLS1wcmVmaXggfCAtLXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQorICAg
IGFjX3ByZXY9cHJlZml4IDs7CisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSog
fCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtLXA9KikKKyAgICBwcmVmaXg9JGFjX29w
dGFyZyA7OworCisgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dy
YW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcCisgIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3Jh
bS1wciB8IC0tcHJvZ3JhbS1wKQorICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKKyAgLXBy
b2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBc
CisgIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0q
IHwgLS1wcm9ncmFtLXA9KikKKyAgICBwcm9ncmFtX3ByZWZpeD0kYWNfb3B0YXJnIDs7CisKKyAg
LXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaSB8IC0t
cHJvZ3JhbS1zdWZmIFwKKyAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9n
cmFtLXMpCisgICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7OworICAtcHJvZ3JhbS1zdWZmaXg9
KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKKyAgfCAtLXByb2dy
YW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAtLXByb2dyYW0t
cz0qKQorICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS10cmFu
c2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSBcCisgIHwgLS1wcm9ncmFtLXRy
YW5zZm9ybS1uYW0gfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hIFwKKyAgfCAtLXByb2dyYW0tdHJh
bnNmb3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9y
bSB8IC0tcHJvZ3JhbS10cmFuc2ZvciBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAtLXByb2dy
YW0tdHJhbnNmIFwKKyAgfCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBcCisgIHwg
LS1wcm9nci10cmEgfCAtLXByb2dyYW0tdHIgfCAtLXByb2dyYW0tdCkKKyAgICBhY19wcmV2PXBy
b2dyYW1fdHJhbnNmb3JtX25hbWUgOzsKKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiB8IC0t
cHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbT0q
IHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49
KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm09KiB8
IC0tcHJvZ3JhbS10cmFuc2Zvcj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9n
cmFtLXRyYW5zZj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSog
XAorICB8IC0tcHJvZ3ItdHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0tcHJvZ3JhbS10PSopCisg
ICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7CisKKyAgLXBkZmRpciB8IC0t
cGRmZGlyIHwgLS1wZGZkaSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1wZCkKKyAgICBhY19wcmV2PXBk
ZmRpciA7OworICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1wZGZkPSog
fCAtLXBkZj0qIHwgLS1wZD0qKQorICAgIHBkZmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXBzZGly
IHwgLS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1wcykKKyAgICBhY19wcmV2PXBzZGlyIDs7
CisgIC1wc2Rpcj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQor
ICAgIHBzZGlyPSRhY19vcHRhcmcgOzsKKworICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1
aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2ls
ZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICBzaWxlbnQ9eWVzIDs7CisKKyAgLXNiaW5kaXIgfCAt
LXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCisg
ICAgYWNfcHJldj1zYmluZGlyIDs7CisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2Jp
bmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCisgIHwgLS1zYmk9KiB8IC0tc2I9KikKKyAg
ICBzYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0
YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKKyAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVk
c3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0YSBcCisgIHwgLS1zaGFyZWRzdCB8IC0t
c2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcCisgIHwgLS1zaGEgfCAtLXNo
KQorICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsKKyAgLXNoYXJlZHN0YXRlZGlyPSogfCAt
LXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcCisgIHwgLS1zaGFyZWRzdGF0
ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBc
CisgIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0q
IHwgLS1zaGFyPSogXAorICB8IC0tc2hhPSogfCAtLXNoPSopCisgICAgc2hhcmVkc3RhdGVkaXI9
JGFjX29wdGFyZyA7OworCisgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCisgICAgYWNfcHJldj1z
aXRlIDs7CisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCisgICAgc2l0ZT0kYWNfb3B0
YXJnIDs7CisKKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3Jj
IHwgLS1zcikKKyAgICBhY19wcmV2PXNyY2RpciA7OworICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0q
IHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQorICAgIHNyY2Rpcj0k
YWNfb3B0YXJnIDs7CisKKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZk
aSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXAorICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0t
c3lzYyB8IC0tc3lzIHwgLS1zeSkKKyAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKKyAgLXN5c2Nv
bmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8
IC0tc3lzY29uZj0qIFwKKyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAt
LXN5cz0qIHwgLS1zeT0qKQorICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OworCisgIC10YXJn
ZXQgfCAtLXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpCisg
ICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0t
dGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQorICAgIHRhcmdl
dF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0t
dmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKKyAgICB2ZXJib3NlPXllcyA7OworCisgIC12ZXJz
aW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCisgICAg
YWNfaW5pdF92ZXJzaW9uPTogOzsKKworICAtd2l0aC0qIHwgLS13aXRoLSopCisgICAgYWNfdXNl
cm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKKyAgICAjIFJl
amVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAg
ZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwg
JiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJv
cHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFz
X2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3Vz
ZXJfb3B0cyBpbgorICAgICAgKiIKKyJ3aXRoXyRhY191c2Vyb3B0IgorIiopIDs7CisgICAgICAq
KSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2du
aXplZF9zZXAtLXdpdGgtJGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0n
LCAnOzsKKyAgICBlc2FjCisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7
CisKKyAgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qKQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngk
YWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCisgICAgIyBSZWplY3QgbmFtZXMgdGhh
dCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIgIngkYWNfdXNl
cm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICBhc19m
bl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgIGFjX3Vz
ZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNl
cm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4KKyAg
ICAgICoiCisid2l0aF8kYWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNfdW5yZWNvZ25p
emVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRo
b3V0LSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAg
ZXNhYworICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7OworCisgIC0teCkKKyAgICAjIE9i
c29sZXRlOyB1c2UgLS13aXRoLXguCisgICAgd2l0aF94PXllcyA7OworCisgIC14LWluY2x1ZGVz
IHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwK
KyAgfCAtLXgtaW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKKyAgICBhY19wcmV2PXhf
aW5jbHVkZXMgOzsKKyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1
ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKKyAgfCAtLXgtaW5jbD0qIHwgLS14
LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0qKQorICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7
OworCisgIC14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUgfCAtLXgt
bGlicmFyaSBcCisgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxp
YiB8IC0teC1saSB8IC0teC1sKQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsKKyAgLXgtbGli
cmFyaWVzPSogfCAtLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0teC1saWJyYXJp
PSogXAorICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1s
aWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7
CisKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRp
b24nCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgorICAgIDs7CisKKyAg
Kj0qKQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFtePV0qXCk9J2AK
KyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFt
ZXMuCisgICAgY2FzZSAkYWNfZW52dmFyIGluICMoCisgICAgICAnJyB8IFswLTldKiB8ICpbIV8k
YXNfY3JfYWxudW1dKiApCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YXJpYWJsZSBu
YW1lOiBcYCRhY19lbnZ2YXInIiA7OworICAgIGVzYWMKKyAgICBldmFsICRhY19lbnZ2YXI9XCRh
Y19vcHRhcmcKKyAgICBleHBvcnQgJGFjX2VudnZhciA7OworCisgICopCisgICAgIyBGSVhNRTog
c2hvdWxkIGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLgorICAgICRhc19lY2hvICIkYXNfbWU6
IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgor
ICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVs
bCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6
ICRhY19vcHRpb24iID4mMgorICAgIDogJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3Rf
YWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KKyAgICA7OworCisg
IGVzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgIGFjX29wdGlvbj0t
LWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKKyAgYXNfZm5fZXJyb3IgJD8gIm1pc3Np
bmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY191bnJlY29n
bml6ZWRfb3B0cyI7IHRoZW4KKyAgY2FzZSAkZW5hYmxlX29wdGlvbl9jaGVja2luZyBpbgorICAg
IG5vKSA7OworICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6
ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKKyAgICAqKSAgICAgJGFzX2VjaG8gIiRhc19tZTog
V0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYy
IDs7CisgIGVzYWMKK2ZpCisKKyMgQ2hlY2sgYWxsIGRpcmVjdG9yeSBhcmd1bWVudHMgZm9yIGNv
bnNpc3RlbmN5LgorZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5k
aXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCisJCWRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRz
dGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAorCQlvbGRpbmNsdWRlZGlyIGRvY2Rp
ciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCisJCWxpYmRpciBsb2NhbGVk
aXIgbWFuZGlyCitkbworICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgIyBSZW1vdmUgdHJhaWxp
bmcgc2xhc2hlcy4KKyAgY2FzZSAkYWNfdmFsIGluCisgICAgKi8gKQorICAgICAgYWNfdmFsPWBl
eHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFjX3ZhbCIgOiAnWFwoLipcKSdg
CisgICAgICBldmFsICRhY192YXI9XCRhY192YWw7OworICBlc2FjCisgICMgQmUgc3VyZSB0byBo
YXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4KKyAgY2FzZSAkYWNfdmFsIGluCisgICAgW1xc
LyRdKiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsKKyAgICBOT05FIHwgJycgKSBjYXNlICRhY192
YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7CisgIGVzYWMKKyAgYXNfZm5fZXJyb3Ig
JD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRh
Y192YWwiCitkb25lCisKKyMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhl
IG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKKyMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVu
dCBvZiAtLWhvc3QgZXRjLgorIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgorYnVpbGQ9JGJ1
aWxkX2FsaWFzCitob3N0PSRob3N0X2FsaWFzCit0YXJnZXQ9JHRhcmdldF9hbGlhcworCisjIEZJ
WE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCitpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRo
ZW4KKyAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCisgICAgY3Jvc3NfY29tcGls
aW5nPW1heWJlCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaWYgeW91IHdhbnRlZCB0
byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KKyAgICBJZiBhIGNyb3Nz
IGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUgdXNl
ZCIgPiYyCisgIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRo
ZW4KKyAgICBjcm9zc19jb21waWxpbmc9eWVzCisgIGZpCitmaQorCithY190b29sX3ByZWZpeD0K
K3Rlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0KKwor
dGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbAorCisKK2FjX3B3ZD1gcHdk
YCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJgorYWNfbHNfZGk9YGxzIC1kaSAuYCAmJgorYWNfcHdk
X2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJ3
b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKK3Rlc3QgIlgkYWNfbHNfZGki
ID0gIlgkYWNfcHdkX2xzX2RpIiB8fAorICBhc19mbl9lcnJvciAkPyAicHdkIGRvZXMgbm90IHJl
cG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5IgorCisKKyMgRmluZCB0aGUgc291cmNlIGZp
bGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KK2lmIHRlc3QgLXogIiRzcmNkaXIi
OyB0aGVuCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCisgICMgVHJ5IHRoZSBkaXJlY3Rvcnkg
Y29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKyAgYWNf
Y29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYiIHx8CiskYXNfZXhwciBYIiRhc19t
eXNlbGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX215c2Vs
ZiIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcgXHwg
XAorCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2Vj
aG8gWCIkYXNfbXlzZWxmIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpc
LyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sK
KwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wx
LworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJ
ICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgc3JjZGlyPSRhY19jb25mZGlyCisgIGlmIHRlc3QgISAt
ciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCisgICAgc3JjZGlyPS4uCisgIGZpCitl
bHNlCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KK2ZpCitpZiB0ZXN0ICEgLXIgIiRzcmNkaXIv
JGFjX3VuaXF1ZV9maWxlIjsgdGhlbgorICB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5
ZXMgJiYgc3JjZGlyPSIkYWNfY29uZmRpciBvciAuLiIKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKK2ZpCithY19tc2c9
InNvdXJjZXMgYXJlIGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsi
CithY19hYnNfY29uZmRpcj1gKAorCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlx
dWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCisJcHdkKWAKKyMgV2hlbiBidWls
ZGluZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCitpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIiID0g
IiRhY19wd2QiOyB0aGVuCisgIHNyY2Rpcj0uCitmaQorIyBSZW1vdmUgdW5uZWNlc3NhcnkgdHJh
aWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4KKyMgRG91YmxlIHNsYXNoZXMgaW4gZmlsZSBuYW1l
cyBpbiBvYmplY3QgZmlsZSBkZWJ1Z2dpbmcgaW5mbworIyBtZXNzIHVwIE0teCBnZGIgaW4gRW1h
Y3MuCitjYXNlICRzcmNkaXIgaW4KKyovKSBzcmNkaXI9YGV4cHIgIlgkc3JjZGlyIiA6ICdYXCgu
KlteL11cKScgXHwgIlgkc3JjZGlyIiA6ICdYXCguKlwpJ2A7OworZXNhYworZm9yIGFjX3ZhciBp
biAkYWNfcHJlY2lvdXNfdmFyczsgZG8KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3NldD1cJHsk
e2FjX3Zhcn0rc2V0fQorICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0K
KyAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0fQorICBldmFs
IGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0KK2RvbmUKKworIworIyBSZXBv
cnQgdGhlIC0taGVscCBtZXNzYWdlLgorIworaWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9u
ZyI7IHRoZW4KKyAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBt
YWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCisgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25n
IHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KKyAgY2F0IDw8X0FDRU9GCitcYGNv
bmZpZ3VyZScgY29uZmlndXJlcyB0aGlzIHBhY2thZ2UgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBv
ZiBzeXN0ZW1zLgorCitVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KKworVG8g
YXNzaWduIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZS5nLiwgQ0MsIENGTEFHUy4uLiksIHNwZWNp
ZnkgdGhlbSBhcworVkFSPVZBTFVFLiAgU2VlIGJlbG93IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29t
ZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxlcy4KKworRGVmYXVsdHMgZm9yIHRoZSBvcHRpb25zIGFy
ZSBzcGVjaWZpZWQgaW4gYnJhY2tldHMuCisKK0NvbmZpZ3VyYXRpb246CisgIC1oLCAtLWhlbHAg
ICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0CisgICAgICAtLWhlbHA9c2hv
cnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UKKyAgICAg
IC0taGVscD1yZWN1cnNpdmUgICAgZGlzcGxheSB0aGUgc2hvcnQgaGVscCBvZiBhbGwgdGhlIGlu
Y2x1ZGVkIHBhY2thZ2VzCisgIC1WLCAtLXZlcnNpb24gICAgICAgICAgIGRpc3BsYXkgdmVyc2lv
biBpbmZvcm1hdGlvbiBhbmQgZXhpdAorICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3Qg
cHJpbnQgXGBjaGVja2luZyAuLi4nIG1lc3NhZ2VzCisgICAgICAtLWNhY2hlLWZpbGU9RklMRSAg
IGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KKyAgLUMsIC0tY29uZmlnLWNh
Y2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKKyAgLW4sIC0t
bm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKKyAgICAgIC0tc3Jj
ZGlyPURJUiAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3Ig
XGAuLiddCisKK0luc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKyAgLS1wcmVmaXg9UFJFRklYICAg
ICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4gUFJFRklYCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdCisgIC0tZXhlYy1w
cmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBF
UFJFRklYCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVhdCisKK0J5IGRlZmF1bHQs
IFxgbWFrZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwgYWxsIHRoZSBmaWxlcyBpbgorXGAkYWNfZGVm
YXVsdF9wcmVmaXgvYmluJywgXGAkYWNfZGVmYXVsdF9wcmVmaXgvbGliJyBldGMuICBZb3UgY2Fu
IHNwZWNpZnkKK2FuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0
X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCitmb3IgaW5zdGFuY2UgXGAtLXByZWZpeD1cJEhP
TUUnLgorCitGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4KKworRmlu
ZSB0dW5pbmcgb2YgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKyAgLS1iaW5kaXI9RElS
ICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dCisgIC0tc2JpbmRpcj1E
SVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBbRVBSRUZJWC9zYmluXQorICAt
LWxpYmV4ZWNkaXI9RElSICAgICAgICBwcm9ncmFtIGV4ZWN1dGFibGVzIFtFUFJFRklYL2xpYmV4
ZWNdCisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBk
YXRhIFtQUkVGSVgvZXRjXQorICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFy
Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQorICAtLWxvY2Fsc3RhdGVk
aXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCisg
IC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9s
aWJdCisgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5j
bHVkZV0KKyAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1n
Y2MgWy91c3IvaW5jbHVkZV0KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFy
Y2guLWluZGVwZW5kZW50IGRhdGEgcm9vdCBbUFJFRklYL3NoYXJlXQorICAtLWRhdGFkaXI9RElS
ICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW0RBVEFS
T09URElSXQorICAtLWluZm9kaXI9RElSICAgICAgICAgICBpbmZvIGRvY3VtZW50YXRpb24gW0RB
VEFST09URElSL2luZm9dCisgIC0tbG9jYWxlZGlyPURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRl
bnQgZGF0YSBbREFUQVJPT1RESVIvbG9jYWxlXQorICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBt
YW4gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvbWFuXQorICAtLWRvY2Rpcj1ESVIgICAgICAg
ICAgICBkb2N1bWVudGF0aW9uIHJvb3QgW0RBVEFST09URElSL2RvYy9QQUNLQUdFXQorICAtLWh0
bWxkaXI9RElSICAgICAgICAgICBodG1sIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1kdmlk
aXI9RElSICAgICAgICAgICAgZHZpIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1wZGZkaXI9
RElSICAgICAgICAgICAgcGRmIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1wc2Rpcj1ESVIg
ICAgICAgICAgICAgcHMgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorX0FDRU9GCisKKyAgY2F0IDw8
XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBm
b3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3Nz
LWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQorX0FDRU9G
CitmaQorCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgorCisgIGNhdCA8PFxfQUNF
T0YKKworT3B0aW9uYWwgRmVhdHVyZXM6CisgIC0tZGlzYWJsZS1vcHRpb24tY2hlY2tpbmcgIGln
bm9yZSB1bnJlY29nbml6ZWQgLS1lbmFibGUvLS13aXRoIG9wdGlvbnMKKyAgLS1kaXNhYmxlLUZF
QVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAtLWVuYWJsZS1GRUFU
VVJFPW5vKQorICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15
ZXNdCisgIC0tZW5hYmxlLXhzbSAgICAgICAgICAgIEVuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxl
IChieSBkZWZhdWx0LCBGbGFzaykKKyAgLS1lbmFibGUtZ2l0aHR0cCAgICAgICAgRG93bmxvYWQg
R0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUAorICAtLWRpc2FibGUtbW9uaXRvcnMgICAgICBEaXNh
YmxlIHhlbnN0YXQgYW5kIHhlbnRvcCBtb25pdG9yaW5nIHRvb2xzCisgIC0tZW5hYmxlLXZ0cG0g
ICAgICAgICAgIEVuYWJsZSBWaXJ0dWFsIFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlCisgIC0tZW5h
YmxlLXhhcGkgICAgICAgICAgIEVuYWJsZSBYZW4gQVBJIEJpbmRpbmdzCisgIC0tZGlzYWJsZS1w
eXRob250b29scyAgIERpc2FibGUgUHl0aG9uIHRvb2xzCisgIC0tZGlzYWJsZS1vY2FtbHRvb2xz
ICAgIERpc2FibGUgT2NhbWwgdG9vbHMKKyAgLS1lbmFibGUtbWluaXRlcm0gICAgICAgRW5hYmxl
IG1pbml0ZXJtCisgIC0tZW5hYmxlLWxvbW91bnQgICAgICAgIEVuYWJsZSBsb21vdW50CisgIC0t
ZGlzYWJsZS1kZWJ1ZyAgICAgICAgIERpc2FibGUgZGVidWcgYnVpbGQgb2YgWGVuIGFuZCB0b29s
cworCitTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgQ0MgICAgICAg
ICAgQyBjb21waWxlciBjb21tYW5kCisgIENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKKyAg
TERGTEFHUyAgICAgbGlua2VyIGZsYWdzLCBlLmcuIC1MPGxpYiBkaXI+IGlmIHlvdSBoYXZlIGxp
YnJhcmllcyBpbiBhCisgICAgICAgICAgICAgIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8bGliIGRp
cj4KKyAgTElCUyAgICAgICAgbGlicmFyaWVzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciwgZS5nLiAt
bDxsaWJyYXJ5PgorICBDUFBGTEFHUyAgICAoT2JqZWN0aXZlKSBDL0MrKyBwcmVwcm9jZXNzb3Ig
ZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmCisgICAgICAgICAgICAgIHlvdSBoYXZlIGhl
YWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgorICBDUFAgICAg
ICAgICBDIHByZXByb2Nlc3NvcgorICBQUkVQRU5EX0lOQ0xVREVTCisgICAgICAgICAgICAgIExp
c3Qgb2YgaW5jbHVkZSBmb2xkZXJzIHRvIHByZXBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKQor
ICBQUkVQRU5EX0xJQiBMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBwcmVwZW5kIHRvIExERkxB
R1MgKHdpdGhvdXQgLUwpCisgIEFQUEVORF9JTkNMVURFUworICAgICAgICAgICAgICBMaXN0IG9m
IGluY2x1ZGUgZm9sZGVycyB0byBhcHBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKQorICBBUFBF
TkRfTElCICBMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBhcHBlbmQgdG8gTERGTEFHUyAod2l0
aG91dCAtTCkKKyAgUFlUSE9OICAgICAgUGF0aCB0byB0aGUgUHl0aG9uIHBhcnNlcgorICBQRVJM
ICAgICAgICBQYXRoIHRvIFBlcmwgcGFyc2VyCisgIEJSQ1RMICAgICAgIFBhdGggdG8gYnJjdGwg
dG9vbAorICBJUCAgICAgICAgICBQYXRoIHRvIGlwIHRvb2wKKyAgQklTT04gICAgICAgUGF0aCB0
byBCaXNvbiBwYXJzZXIgZ2VuZXJhdG9yCisgIEZMRVggICAgICAgIFBhdGggdG8gRmxleCBsZXhp
Y2FsIGFuYWx5c2VyIGdlbmVyYXRvcgorICBDVVJMICAgICAgICBQYXRoIHRvIGN1cmwtY29uZmln
IHRvb2wKKyAgWE1MICAgICAgICAgUGF0aCB0byB4bWwyLWNvbmZpZyB0b29sCisgIEJBU0ggICAg
ICAgIFBhdGggdG8gYmFzaCBzaGVsbAorICBYR0VUVEVYVCAgICBQYXRoIHRvIHhnZXR0dGV4dCB0
b29sCisKK1VzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBi
eSBgY29uZmlndXJlJyBvciB0byBoZWxwCitpdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3Jh
bXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2NhdGlvbnMuCisKK1JlcG9ydCBidWdzIHRvIHRo
ZSBwYWNrYWdlIHByb3ZpZGVyLgorX0FDRU9GCithY19zdGF0dXM9JD8KK2ZpCisKK2lmIHRlc3Qg
IiRhY19pbml0X2hlbHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4KKyAgIyBJZiB0aGVyZSBhcmUgc3Vi
ZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4KKyAgZm9yIGFjX2RpciBpbiA6ICRh
Y19zdWJkaXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUKKyAgICB0
ZXN0IC1kICIkYWNfZGlyIiB8fAorICAgICAgeyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBwd2Rg
ICYmIHNyY2Rpcj0uICYmIHRlc3QgLWQgIiRhY19kaXIiOyB9IHx8CisgICAgICBjb250aW51ZQor
ICAgIGFjX2J1aWxkZGlyPS4KKworY2FzZSAiJGFjX2RpciIgaW4KKy4pIGFjX2Rpcl9zdWZmaXg9
IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OworKikKKyAgYWNf
ZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AKKyAg
IyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgorICBhY190b3Bf
YnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10q
fC8uLnxnO3N8L3x8J2AKKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbgorICAiIikgYWNf
dG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CisgICopICBhY190b3Bf
YnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7OworICBlc2FjIDs7Citlc2FjCith
Y19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QKK2FjX2Fic19idWlsZGRpcj0kYWNfcHdkJGFjX2Rp
cl9zdWZmaXgKKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CithY190b3BfYnVpbGRkaXI9
JGFjX3RvcF9idWlsZF9wcmVmaXgKKworY2FzZSAkc3JjZGlyIGluCisgIC4pICAjIFdlIGFyZSBi
dWlsZGluZyBpbiBwbGFjZS4KKyAgICBhY19zcmNkaXI9LgorICAgIGFjX3RvcF9zcmNkaXI9JGFj
X3RvcF9idWlsZGRpcl9zdWIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7CisgIFtc
XC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KKyAgICBhY19zcmNkaXI9JHNyY2Rp
ciRhY19kaXJfc3VmZml4OworICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpcgorICAgIGFjX2Fic190
b3Bfc3JjZGlyPSRzcmNkaXIgOzsKKyAgKikgIyBSZWxhdGl2ZSBuYW1lLgorICAgIGFjX3NyY2Rp
cj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAorICAgIGFjX3RvcF9z
cmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9
JGFjX3B3ZC8kc3JjZGlyIDs7Citlc2FjCithY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2Rp
ciRhY19kaXJfc3VmZml4CisKKyAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0dXM9JD87IGNv
bnRpbnVlOyB9CisgICAgIyBDaGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmUuCisgICAgaWYgdGVz
dCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IjsgdGhlbgorICAgICAgZWNobyAmJgorICAg
ICAgJFNIRUxMICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiIC0taGVscD1yZWN1cnNpdmUKKyAg
ICBlbGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlIjsgdGhlbgorICAgICAgZWNobyAm
JgorICAgICAgJFNIRUxMICIkYWNfc3JjZGlyL2NvbmZpZ3VyZSIgLS1oZWxwPXJlY3Vyc2l2ZQor
ICAgIGVsc2UKKyAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRp
b24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYyCisgICAgZmkgfHwgYWNfc3RhdHVzPSQ/
CisgICAgY2QgIiRhY19wd2QiIHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVhazsgfQorICBkb25lCitm
aQorCit0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKK2lmICRhY19p
bml0X3ZlcnNpb247IHRoZW4KKyAgY2F0IDw8XF9BQ0VPRgorY29uZmlndXJlCitnZW5lcmF0ZWQg
YnkgR05VIEF1dG9jb25mIDIuNjcKKworQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLgorVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u
IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KK19BQ0VPRgorICBleGl0CitmaQor
CisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEF1dG9jb25mIGluaXRpYWxpemF0
aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgYWNfZm5fY190cnlf
Y29tcGlsZSBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIGNv
bXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVk
LgorYWNfZm5fY190cnlfY29tcGlsZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQx
In0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHJt
IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGUiCitj
YXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRh
Y190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2Vj
aG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNf
ZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25m
dGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVu
CisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQg
Y29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAg
ZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0
YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16ICIkYWNf
Y193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAgIH0gJiYg
dGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0OyB0aGVuIDoKKyAgYWNfcmV0dmFsPTAKK2Vsc2UK
KyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3MvXi98
IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwlhY19yZXR2YWw9MQorZmkKKyAgZXZhbCAkYXNf
bGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5v
PTsgdW5zZXQgYXNfbGluZW5vO30KKyAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCisKK30g
IyBhY19mbl9jX3RyeV9jb21waWxlCisKKyMgYWNfZm5fY190cnlfY3BwIExJTkVOTworIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyeSB0byBwcmVwcm9jZXNzIGNvbmZ0ZXN0LiRhY19leHQs
IGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KK2FjX2ZuX2NfdHJ5X2NwcCAoKQor
eworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVu
b19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIGlmIHsgeyBhY190cnk9IiRhY19jcHAgY29uZnRl
c3QuJGFjX2V4dCIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBh
Y190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYwor
ZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5
X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2Nw
cCBjb25mdGVzdC4kYWNfZXh0IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlm
IHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qu
ZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNv
bmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9
IDA7IH0gPiBjb25mdGVzdC5pICYmIHsKKwkgdGVzdCAteiAiJGFjX2NfcHJlcHJvY193YXJuX2Zs
YWckYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAg
IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK
KworICAgIGFjX3JldHZhbD0xCitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngk
YXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQor
ICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NwcAorCisj
IGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgTElORU5PIEhFQURFUiBWQVIgSU5DTFVERVMK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMsIGdpdmluZyBhIHdhcm5pbmcgaWYgaXQg
Y2Fubm90IGJlIGNvbXBpbGVkIHVzaW5nCisjIHRoZSBpbmNsdWRlIGZpbGVzIGluIElOQ0xVREVT
IGFuZCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIKKyMgYWNjb3JkaW5nbHkuCithY19m
bl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0i
JDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAg
aWYgZXZhbCAidGVzdCBcIlwkeyQzK3NldH1cIiIgPSBzZXQ7IHRoZW4gOgorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgInRlc3QgXCJcJHsk
MytzZXR9XCIiID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Zp
CitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7
IH0KK2Vsc2UKKyAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Cit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyAkMiB1c2FiaWxpdHkuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0
CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcworZWxzZQorICBhY19oZWFkZXJfY29t
cGlsZXI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVy
X2NvbXBpbGVyIiA+JjY7IH0KKworIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Cit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHByZXNlbmNlIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIgPiY2OyB9CitjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRo
ZW4gOgorICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKK2Vsc2UKKyAgYWNfaGVhZGVyX3ByZXByb2M9
bm8KK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Cit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRl
cl9wcmVwcm9jIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVyX3ByZXByb2MiID4mNjsgfQorCisj
IFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9jb21waWxlcjok
YWNfaGVhZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gIygoCisgIHllczpu
bzogKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO
RzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nl
c3NvciEiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRo
ZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9CisgICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2Vl
ZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBX
QVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30K
KyAgICA7OworICBubzp5ZXM6KiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUg
Y29tcGlsZWQiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFk
ZXJzPyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBt
aXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBzZWUgdGhlIEF1dG9jb25mIGRv
Y3VtZW50YXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHNlZSB0aGUg
QXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0
IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQy
OiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6
IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQorJGFzX2VjaG8gIiRh
c19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQi
ID4mMjt9CisgICAgOzsKK2VzYWMKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQy
Li4uICIgPiY2OyB9CitpZiBldmFsICJ0ZXN0IFwiXCR7JDMrc2V0fVwiIiA9IHNldDsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPVwkYWNfaGVh
ZGVyX2NvbXBpbGVyIgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2Vj
aG8gIiRhY19yZXMiID4mNjsgfQorZmkKKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4
JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30K
KworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKKworIyBhY19mbl9jX3RyeV9ydW4g
TElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIGxpbmsgY29uZnRlc3Qu
JGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLiBBc3N1bWVzCisjIHRo
YXQgZXhlY3V0YWJsZXMgKmNhbiogYmUgcnVuLgorYWNfZm5fY190cnlfcnVuICgpCit7CisgIGFz
X2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNr
PSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRh
Y190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Owor
ICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFj
X3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorICBhY19zdGF0dXM9
JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0
YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRl
c3QkYWNfZXhlZXh0JworICB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8
ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7
Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFs
ICIkYWNfdHJ5IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1
cyA9IDA7IH07IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFz
X21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKKyAgICAgICAk
YXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycg
Y29uZnRlc3QuJGFjX2V4dCA+JjUKKworICAgICAgIGFjX3JldHZhbD0kYWNfc3RhdHVzCitmaQor
ICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwg
JGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp
bmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAor
Cit9ICMgYWNfZm5fY190cnlfcnVuCisKKyMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSBM
SU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0
cyBhbmQgY2FuIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBpbmNsdWRlIGZpbGVzIGluCisjIElOQ0xV
REVTLCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9j
X2NoZWNrX2hlYWRlcl9jb21waWxlICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEi
fSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsICJ0ZXN0
IFwiXCR7JDMrc2V0fVwiIiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDM9eWVzIgorZWxz
ZQorICBldmFsICIkMz1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVz
IiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNr
OyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNf
bGluZW5vO30KKworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUKKworIyBhY19mbl9j
X3RyeV9saW5rIExJTkVOTworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gbGlu
ayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCith
Y19mbl9jX3RyeV9saW5rICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19s
aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgcm0gLWYgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFj
X2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5
X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwg
YWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hv
XCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikg
Mj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJy
OyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAg
ICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5l
cnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0g
JGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16
ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAg
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgeworCSB0ZXN0ICIkY3Jvc3NfY29t
cGlsaW5nIiA9IHllcyB8fAorCSAkYXNfdGVzdF94IGNvbmZ0ZXN0JGFjX2V4ZWV4dAorICAgICAg
IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK
KworCWFjX3JldHZhbD0xCitmaQorICAjIERlbGV0ZSB0aGUgSVBBL0lQTyAoSW50ZXIgUHJvY2Vk
dXJhbCBBbmFseXNpcy9PcHRpbWl6YXRpb24pIGluZm9ybWF0aW9uCisgICMgY3JlYXRlZCBieSB0
aGUgUEdJIGNvbXBpbGVyIChjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vKSwgYXMgaXQgd291bGQK
KyAgIyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFsc28gZGVsZXRlIGEg
ZGlyZWN0b3J5IHRoYXQgaXMKKyAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAg
V2UgZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgorICBybSAtcmYgY29uZnRl
c3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwgJGFzX2xpbmVub19zdGFj
azsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFz
X2xpbmVubzt9CisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190
cnlfbGluaworCisjIGFjX2ZuX2NfY2hlY2tfZnVuYyBMSU5FTk8gRlVOQyBWQVIKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIEZVTkMgZXhpc3Rz
LCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkKK2FjX2ZuX2NfY2hl
Y2tfZnVuYyAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0
YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCAidGVzdCBcIlwkeyQzK3NldH1c
IiIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRl
ZnMuaC4gICovCisvKiBEZWZpbmUgJDIgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2Ug
PGxpbWl0cy5oPiBkZWNsYXJlcyAkMi4KKyAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxpbWl0
cy5oPiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLworI2RlZmluZSAkMiBpbm5vY3VvdXNfJDIK
KworLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5
IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJDIgKCk7
IGJlbG93LgorICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18g
aXMgZGVmaW5lZCwgc2luY2UKKyAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFu
ZGluZyBjb21waWxlcnMuICAqLworCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRz
Lmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCisjdW5kZWYgJDIKKwor
LyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3Iu
CisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg
YSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBz
dGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgor
Y2hhciAkMiAoKTsKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rp
b25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4g
IFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGlu
ZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmlu
ZWQgX19zdHViXyQyIHx8IGRlZmluZWQgX19zdHViX19fJDIKK2Nob2tlIG1lCisjZW5kaWYKKwor
aW50CittYWluICgpCit7CityZXR1cm4gJDIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNF
T0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDM9eWVz
IgorZWxzZQorICBldmFsICIkMz1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4
dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMi
ID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNr
IiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorCit9ICMgYWNfZm5fY19j
aGVja19mdW5jCisKKyMgYWNfZm5fY19jaGVja190eXBlIExJTkVOTyBUWVBFIFZBUiBJTkNMVURF
UworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3Rz
IHdoZXRoZXIgVFlQRSBleGlzdHMgYWZ0ZXIgaGF2aW5nIGluY2x1ZGVkIElOQ0xVREVTLCBzZXR0
aW5nIGNhY2hlCisjIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfdHlw
ZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFz
X2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNr
aW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCAidGVzdCBcIlwkeyQzK3NldH1cIiIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIk
Mz1ubyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog
ZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoJDIp
KQorCSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190
cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWlu
ICgpCit7CitpZiAoc2l6ZW9mICgoJDIpKSkKKwkgICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJu
IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoK
KworZWxzZQorICBldmFsICIkMz15ZXMiCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVz
dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19y
ZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwg
JGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp
bmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisKK30gIyBhY19mbl9jX2NoZWNrX3R5cGUKKworIyBh
Y19mbl9jX2ZpbmRfaW50WF90IExJTkVOTyBCSVRTIFZBUgorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBGaW5kcyBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB3aWR0
aCBCSVRTLCBzZXR0aW5nIGNhY2hlIHZhcmlhYmxlIFZBUgorIyBhY2NvcmRpbmdseS4KK2FjX2Zu
X2NfZmluZF9pbnRYX3QgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xp
bmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpbnQkMl90IiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpbnQkMl90Li4uICIgPiY2OyB9CitpZiBldmFsICJ0
ZXN0IFwiXCR7JDMrc2V0fVwiIiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPW5vIgorICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAt
IG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKKyAgICAgIyB0
aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KKyAgICAgZm9yIGFjX3R5cGUg
aW4gaW50JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKKwkgJ2xvbmcgbG9uZyBpbnQnICdzaG9ydCBp
bnQnICdzaWduZWQgY2hhcic7IGRvCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+
Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2Rl
ZmF1bHQKKwkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7Citz
dGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAoKCgoKCRhY190
eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKK3Rlc3RfYXJyYXkgWzBdID0gMAor
CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRM
SU5FTk8iOyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKKwkgICAg
ICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7CitzdGF0aWMgaW50
IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikg
PDwgTikgLSAxKSAqIDIgKyAxKQorCQkgPCAoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwg
TikgPDwgTikgLSAxKSAqIDIgKyAyKSldOwordGVzdF9hcnJheSBbMF0gPSAwCisKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo
ZW4gOgorCitlbHNlCisgIGNhc2UgJGFjX3R5cGUgaW4gIygKKyAgaW50JDJfdCkgOgorICAgIGV2
YWwgIiQzPXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2Vz
YWMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4
Im5vIjsgdGhlbiA6CisKK2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRvbmUKK2ZpCitldmFsIGFj
X3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZh
bCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNf
bGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKworfSAjIGFjX2ZuX2NfZmluZF9pbnRYX3QKKwor
IyBhY19mbl9jX2NoZWNrX21lbWJlciBMSU5FTk8gQUdHUiBNRU1CRVIgVkFSIElOQ0xVREVTCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
VHJpZXMgdG8gZmluZCBpZiB0aGUgZmllbGQgTUVNQkVSIGV4aXN0cyBpbiB0eXBlIEFHR1IsIGFm
dGVyIGluY2x1ZGluZworIyBJTkNMVURFUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIgYWNj
b3JkaW5nbHkuCithY19mbl9jX2NoZWNrX21lbWJlciAoKQoreworICBhc19saW5lbm89JHthc19s
aW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0
YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yICQyLiQzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4kMy4uLiAiID4mNjsg
fQoraWYgZXZhbCAidGVzdCBcIlwkeyQ0K3NldH1cIiIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQoraW50CittYWluICgp
Cit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChhY19hZ2dyLiQzKQorcmV0dXJuIDA7CisgIDsK
KyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgZXZhbCAiJDQ9eWVzIgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQoraW50Citt
YWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChzaXplb2YgYWNfYWdnci4kMykKK3Jl
dHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21w
aWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQ0PXllcyIKK2Vsc2UKKyAgZXZhbCAiJDQ9
bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m
dGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkNAorCSAgICAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1
CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVz
dCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVu
bzt9CisKK30gIyBhY19mbl9jX2NoZWNrX21lbWJlcgorCisjIGFjX2ZuX2NfZmluZF91aW50WF90
IExJTkVOTyBCSVRTIFZBUgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgRmluZHMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGlu
ZyBjYWNoZSB2YXJpYWJsZSBWQVIKKyMgYWNjb3JkaW5nbHkuCithY19mbl9jX2ZpbmRfdWludFhf
dCAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFz
X2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpbnQkMl90IiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciB1aW50JDJfdC4uLiAiID4mNjsgfQoraWYgZXZhbCAidGVzdCBcIlwkeyQz
K3NldH1cIiIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBldmFsICIkMz1ubyIKKyAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVj
ayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCisgICAgICMgdGhhbiBoYWxmIG9m
IHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCisgICAgIGZvciBhY190eXBlIGluIHVpbnQkMl90
ICd1bnNpZ25lZCBpbnQnICd1bnNpZ25lZCBsb25nIGludCcgXAorCSAndW5zaWduZWQgbG9uZyBs
b25nIGludCcgJ3Vuc2lnbmVkIHNob3J0IGludCcgJ3Vuc2lnbmVkIGNoYXInOyBkbworICAgICAg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkKK3sKK3N0YXRp
YyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgoJGFjX3R5cGUpIC0xID4+ICgkMiAvIDIgLSAx
KSkgPj4gKCQyIC8gMiAtIDEpID09IDMpXTsKK3Rlc3RfYXJyYXkgWzBdID0gMAorCisgIDsKKyAg
cmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0
aGVuIDoKKyAgY2FzZSAkYWNfdHlwZSBpbiAjKAorICB1aW50JDJfdCkgOgorICAgIGV2YWwgIiQz
PXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2VzYWMKK2Zp
CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKKyAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6CisK
K2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRvbmUKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAg
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf
cmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0
YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQg
YXNfbGluZW5vO30KKworfSAjIGFjX2ZuX2NfZmluZF91aW50WF90CitjYXQgPmNvbmZpZy5sb2cg
PDxfQUNFT0YKK1RoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29t
cGlsZXJzIHdoaWxlCitydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25m
aWd1cmUgbWFrZXMgYSBtaXN0YWtlLgorCitJdCB3YXMgY3JlYXRlZCBieSAkYXNfbWUsIHdoaWNo
IHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY3LiAgSW52b2NhdGlvbiBjb21tYW5k
IGxpbmUgd2FzCisKKyAgJCAkMCAkQAorCitfQUNFT0YKK2V4ZWMgNT4+Y29uZmlnLmxvZworewor
Y2F0IDw8X0FTVU5BTUUKKyMjIC0tLS0tLS0tLSAjIworIyMgUGxhdGZvcm0uICMjCisjIyAtLS0t
LS0tLS0gIyMKKworaG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVs
bCB8IHNlZCAxcWAKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1
bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25v
d25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAK
K3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorCisv
dXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsIHx8IGVj
aG8gdW5rbm93bmAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYv
bnVsbCAgICAgfHwgZWNobyB1bmtub3duYAorCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgv
YmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNy
L2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAg
ICB8fCBlY2hvIHVua25vd25gCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZl
eC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9ob3N0
aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8fCBlY2hv
IHVua25vd25gCisvYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rl
di9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9vc2xldmVsICAgICAg
ID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25g
CisvYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAg
ICAgICAgICB8fCBlY2hvIHVua25vd25gCisKK19BU1VOQU1FCisKK2FzX3NhdmVfSUZTPSRJRlM7
IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNf
c2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAkYXNfZWNobyAi
UEFUSDogJGFzX2RpciIKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCit9ID4mNQorCitjYXQg
PiY1IDw8X0FDRU9GCisKKworIyMgLS0tLS0tLS0tLS0gIyMKKyMjIENvcmUgdGVzdHMuICMjCisj
IyAtLS0tLS0tLS0tLSAjIworCitfQUNFT0YKKworCisjIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29t
bWFuZCBsaW5lLgorIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNv
IHRoZXkgZG8gbm90IHBpbGUgdXAuCisjIFN0cmlwIG91dCAtLXNpbGVudCBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8gcmVjb3JkIGl0IGZvciBmdXR1cmUgcnVucy4KKyMgQWxzbyBxdW90ZSBhbnkg
YXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KKyMgTWFrZSB0d28gcGFzc2Vz
IHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgorYWNf
Y29uZmlndXJlX2FyZ3M9CithY19jb25maWd1cmVfYXJnczA9CithY19jb25maWd1cmVfYXJnczE9
CithY19tdXN0X2tlZXBfbmV4dD1mYWxzZQorZm9yIGFjX3Bhc3MgaW4gMSAyCitkbworICBmb3Ig
YWNfYXJnCisgIGRvCisgICAgY2FzZSAkYWNfYXJnIGluCisgICAgLW5vLWNyZWF0ZSB8IC0tbm8t
YyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51ZSA7OworICAgIC1xIHwg
LXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgICAgfCAt
c2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCisgICAgICBjb250
aW51ZSA7OworICAgICpcJyopCisgICAgICBhY19hcmc9YCRhc19lY2hvICIkYWNfYXJnIiB8IHNl
ZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgIGVzYWMKKyAgICBjYXNlICRhY19wYXNzIGlu
CisgICAgMSkgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMCAiICckYWNfYXJnJyIgOzsK
KyAgICAyKQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMSAiICckYWNfYXJn
JyIKKyAgICAgIGlmIHRlc3QgJGFjX211c3Rfa2VlcF9uZXh0ID0gdHJ1ZTsgdGhlbgorCWFjX211
c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4KKyAgICAgIGVs
c2UKKwljYXNlICRhY19hcmcgaW4KKwkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlz
YWJsZS0qIHwgLS1kaXNhYmxlLSogXAorCSAgfCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdh
cyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXAorCSAgfCAtcSB8IC1xdWlldCB8IC0tcSogfCAtc2ls
ZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXAorCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAt
d2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCisJICAgIGNhc2UgIiRhY19jb25maWd1cmVf
YXJnczAgIiBpbgorCSAgICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioiICckYWNfYXJnJyAiKiAp
IGNvbnRpbnVlIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgIC0qICkgYWNfbXVzdF9rZWVwX25l
eHQ9dHJ1ZSA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmln
dXJlX2FyZ3MgIiAnJGFjX2FyZyciCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorZG9uZQor
eyBhY19jb25maWd1cmVfYXJnczA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7fQoreyBhY19j
b25maWd1cmVfYXJnczE9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczE7fQorCisjIFdoZW4gaW50
ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRl
CisjIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1
b3RlcyBpbiB0aGVyZQorIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCisjIFdB
Uk5JTkc6IFVzZSAnXCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhlIHdpdGhpbiB0aGUgdHJh
cC4KKyMgV0FSTklORzogRG8gbm90IHN0YXJ0IHRoZSB0cmFwIGNvZGUgd2l0aCBhIG5ld2xpbmUs
IGR1ZSB0byBhIEZyZWVCU0QgNC4wIGJ1Zy4KK3RyYXAgJ2V4aXRfc3RhdHVzPSQ/CisgICMgU2F2
ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVi
dWdnaW5nLgorICB7CisgICAgZWNobworCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0t
LS0gIyMKKyMjIENhY2hlIHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMiCisg
ICAgZWNobworICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlz
aGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCisoCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+
JjEgfCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcn
YDsgZG8KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICBjYXNlICRhY192YWwgaW4gIygK
KyAgICAqJHthc19ubH0qKQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoCisgICAgICAqX2N2Xyop
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2FjaGUg
dmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQorJGFzX2VjaG8gIiRhc19t
ZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4m
Mjt9IDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgIF8gfCBJ
RlMgfCBhc19ubCkgOzsgIygKKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRh
Y192YXI9IDs7ICMoCisgICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7
OworICAgICAgZXNhYyA7OworICAgIGVzYWMKKyAgZG9uZQorICAoc2V0KSAyPiYxIHwKKyAgICBj
YXNlICRhc19ubGAoYWNfc3BhY2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFgIGluICMoCisgICAgKiR7
YXNfbmx9YWNfc3BhY2U9XCAqKQorICAgICAgc2VkIC1uIFwKKwkicy8nXCcnLydcJydcXFxcJ1wn
JydcJycvZzsKKwkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxc
KT1cXCguKlxcKS9cXDE9J1wnJ1xcMidcJycvcCIKKyAgICAgIDs7ICMoCisgICAgKikKKyAgICAg
IHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCisgICAg
ICA7OworICAgIGVzYWMgfAorICAgIHNvcnQKKykKKyAgICBlY2hvCisKKyAgICAkYXNfZWNobyAi
IyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE91dHB1dCB2YXJpYWJsZXMuICMjCisjIyAtLS0t
LS0tLS0tLS0tLS0tLSAjIyIKKyAgICBlY2hvCisgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3Rf
dmFycworICAgIGRvCisgICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICAgIGNhc2UgJGFj
X3ZhbCBpbgorICAgICAgKlwnXCcnKikgYWNfdmFsPWAkYXNfZWNobyAiJGFjX3ZhbCIgfCBzZWQg
InMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7OworICAgICAgZXNhYworICAgICAgJGFz
X2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIgorICAgIGRvbmUgfCBzb3J0CisgICAgZWNo
bworCisgICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgorICAgICAgJGFzX2Vj
aG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMK
KyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCisgICAgICBlY2hvCisgICAgICBmb3IgYWNfdmFy
IGluICRhY19zdWJzdF9maWxlcworICAgICAgZG8KKwlldmFsIGFjX3ZhbD1cJCRhY192YXIKKwlj
YXNlICRhY192YWwgaW4KKwkqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNl
ZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7CisJZXNhYworCSRhc19lY2hvICIk
YWNfdmFyPSdcJyckYWNfdmFsJ1wnJyIKKyAgICAgIGRvbmUgfCBzb3J0CisgICAgICBlY2hvCisg
ICAgZmkKKworICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgorICAgICAgJGFzX2VjaG8g
IiMjIC0tLS0tLS0tLS0tICMjCisjIyBjb25mZGVmcy5oLiAjIworIyMgLS0tLS0tLS0tLS0gIyMi
CisgICAgICBlY2hvCisgICAgICBjYXQgY29uZmRlZnMuaAorICAgICAgZWNobworICAgIGZpCisg
ICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1
Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIgorICAgICRhc19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRf
c3RhdHVzIgorICB9ID4mNQorICBybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYK
KyAgICBybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVz
ICYmCisgICAgZXhpdCAkZXhpdF9zdGF0dXMKKycgMAorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMg
MTU7IGRvCisgIHRyYXAgJ2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IGFzX2ZuX2V4aXQgMScgJGFj
X3NpZ25hbAorZG9uZQorYWNfc2lnbmFsPTAKKworIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21t
YW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KK3JtIC1mIC1yIGNv
bmZ0ZXN0KiBjb25mZGVmcy5oCisKKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZk
ZWZzLmgKKworIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuCisKK2NhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIgor
X0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9UQVJO
QU1FICIkUEFDS0FHRV9UQVJOQU1FIgorX0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKKyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIgorX0FDRU9GCisK
K2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIiRQQUNL
QUdFX1NUUklORyIKK19BQ0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5l
IFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiCitfQUNFT0YKKworY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1VSTCAiJFBBQ0tBR0VfVVJMIgor
X0FDRU9GCisKKworIyBMZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3QgYW4gYWx0ZXJuYXRlIGNhY2hl
IGZpbGUgaWYgaXQgd2FudHMgdG8uCisjIFByZWZlciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZp
bGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLgorYWNfc2l0ZV9maWxlMT1OT05FCith
Y19zaXRlX2ZpbGUyPU5PTkUKK2lmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KKyAgIyBX
ZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0ZS4KKyAgY2FzZSAkQ09O
RklHX1NJVEUgaW4gIygoCisgICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsK
KyAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFOzsKKyAgICAqKSAgIGFjX3NpdGVf
ZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICBlc2FjCitlbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4
Tk9ORTsgdGhlbgorICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUKKyAg
YWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQorZWxzZQorICBhY19zaXRlX2Zp
bGUxPSRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQorICBhY19zaXRlX2ZpbGUy
PSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUKK2ZpCitmb3IgYWNfc2l0ZV9maWxl
IGluICIkYWNfc2l0ZV9maWxlMSIgIiRhY19zaXRlX2ZpbGUyIgorZG8KKyAgdGVzdCAieCRhY19z
aXRlX2ZpbGUiID0geE5PTkUgJiYgY29udGludWUKKyAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRh
Y19zaXRlX2ZpbGUiICYmIHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0aGVuCisgICAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRh
Y19zaXRlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAk
YWNfc2l0ZV9maWxlIiA+JjY7fQorICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4m
NQorICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwKKyAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2Vj
aG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8g
ImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUKK1NlZSBcYGNvbmZpZy5s
b2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsgfQorICBmaQorZG9uZQorCitpZiB0
ZXN0IC1yICIkY2FjaGVfZmlsZSI7IHRoZW4KKyAgIyBTb21lIHZlcnNpb25zIG9mIGJhc2ggd2ls
bCBmYWlsIHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwgZmlsZXMKKyAgIyBhY3R1YWxseSks
IHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuICBESkdQUCBlbXVsYXRlcyBpdCBhcyBhIHJlZ3VsYXIg
ZmlsZS4KKyAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRjYWNoZV9maWxlIiAmJiB0ZXN0IC1mICIk
Y2FjaGVfZmlsZSI7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTog
bG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAgICBjYXNlICRjYWNoZV9maWxlIGlu
CisgICAgICBbXFwvXSogfCA/OltcXC9dKiApIC4gIiRjYWNoZV9maWxlIjs7CisgICAgICAqKSAg
ICAgICAgICAgICAgICAgICAgICAuICIuLyRjYWNoZV9maWxlIjs7CisgICAgZXNhYworICBmaQor
ZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5n
IGNhY2hlICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hl
ICRjYWNoZV9maWxlIiA+JjY7fQorICA+JGNhY2hlX2ZpbGUKK2ZpCisKK2FzX2ZuX2FwcGVuZCBh
Y19oZWFkZXJfbGlzdCAiIHN5cy90aW1lLmgiCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3Qg
IiB1bmlzdGQuaCIKK2FzX2ZuX2FwcGVuZCBhY19mdW5jX2xpc3QgIiBhbGFybSIKK2FzX2ZuX2Fw
cGVuZCBhY19oZWFkZXJfbGlzdCAiIHN0ZGxpYi5oIgorYXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9s
aXN0ICIgc3lzL3BhcmFtLmgiCisjIENoZWNrIHRoYXQgdGhlIHByZWNpb3VzIHZhcmlhYmxlcyBz
YXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCisjIHZhbHVlLgorYWNfY2FjaGVf
Y29ycnVwdGVkPWZhbHNlCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91c192YXJzOyBkbworICBl
dmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAorICBldmFsIGFjX25ld19z
ZXQ9XCRhY19lbnZfJHthY192YXJ9X3NldAorICBldmFsIGFjX29sZF92YWw9XCRhY19jdl9lbnZf
JHthY192YXJ9X3ZhbHVlCisgIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vudl8ke2FjX3Zhcn1fdmFs
dWUKKyAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbgorICAgIHNldCwpCisgICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXIn
IHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwn
IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CisgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7
OworICAgICxzZXQpCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4m
NQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIG5vdCBzZXQgaW4gdGhl
IHByZXZpb3VzIHJ1biIgPiYyO30KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7CisgICAg
LCk7OworICAgICopCisgICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192
YWwiOyB0aGVuCisJIyBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGRvIG5vdCBsZWFkIHRvIGZh
aWx1cmUuCisJYWNfb2xkX3ZhbF93PWBlY2hvIHggJGFjX29sZF92YWxgCisJYWNfbmV3X3ZhbF93
PWBlY2hvIHggJGFjX25ld192YWxgCisJaWYgdGVzdCAiJGFjX29sZF92YWxfdyIgIT0gIiRhY19u
ZXdfdmFsX3ciOyB0aGVuCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46
IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNp
bmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQorCSAgYWNfY2FjaGVfY29ycnVwdGVkPToKKwll
bHNlCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHdhcm5pbmc6
IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2
aW91cyBydW46IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRl
c3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7
fQorCSAgZXZhbCAkYWNfdmFyPVwkYWNfb2xkX3ZhbAorCWZpCisJeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgXGAkYWNfb2xkX3ZhbCciID4m
Mjt9CisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGN1cnJlbnQg
dmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICAgY3VycmVudCB2
YWx1ZTogXGAkYWNfbmV3X3ZhbCciID4mMjt9CisgICAgICBmaTs7CisgIGVzYWMKKyAgIyBQYXNz
IHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLgorICBpZiB0ZXN0ICIkYWNfbmV3
X3NldCIgPSBzZXQ7IHRoZW4KKyAgICBjYXNlICRhY19uZXdfdmFsIGluCisgICAgKlwnKikgYWNf
YXJnPSRhY192YXI9YCRhc19lY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQgInMvJy8nXFxcXFxcXFwn
Jy9nImAgOzsKKyAgICAqKSBhY19hcmc9JGFjX3Zhcj0kYWNfbmV3X3ZhbCA7OworICAgIGVzYWMK
KyAgICBjYXNlICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIgaW4KKyAgICAgICoiICckYWNfYXJnJyAi
KikgOzsgIyBBdm9pZCBkdXBzLiAgVXNlIG9mIHF1b3RlcyBlbnN1cmVzIGFjY3VyYWN5LgorICAg
ICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIiA7OworICAg
IGVzYWMKKyAgZmkKK2RvbmUKK2lmICRhY19jYWNoZV9jb3JydXB0ZWQ7IHRoZW4KKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoi
ID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBjaGFuZ2VzIGlu
IHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQorJGFzX2VjaG8g
IiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNl
IHRoZSBidWlsZCIgPiYyO30KKyAgYXNfZm5fZXJyb3IgJD8gInJ1biBcYG1ha2UgZGlzdGNsZWFu
JyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1Citm
aQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE1haW4gYm9keSBvZiBzY3JpcHQuICMj
CisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRD
UFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4k
YWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAk
Q1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxl
cl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCithY19jb25maWdfZmlsZXM9IiRhY19j
b25maWdfZmlsZXMgLi4vY29uZmlnL1Rvb2xzLm1rIgorCithY19jb25maWdfaGVhZGVycz0iJGFj
X2NvbmZpZ19oZWFkZXJzIGNvbmZpZy5oIgorCisKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGlu
IC4gIiRzcmNkaXIiLy47IGRvCisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRo
ZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rp
ci9pbnN0YWxsLXNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0
YWxsLnNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9
IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIk
YWNfZGlyL3NodG9vbCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0
YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQor
ZG9uZQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJj
YW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gLiBcIiRzcmNk
aXJcIi8uIiAiJExJTkVOTyIgNQorZmkKKworIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVu
ZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0
aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCisjIFRoZXkgY2FuIGNhdXNlIHNl
cmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3Rv
cnkKKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KK2FjX2Nv
bmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRv
bid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25m
aWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlndXJlPSIkU0hF
TEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgor
CisKKworIyBDaGVjayBpZiBDRkxBR1MsIExERkxBR1MsIExJQlMsIENQUEZMQUdTIG9yIENQUCBp
cyBzZXQgYW5kIHByaW50IGEgd2FybmluZworCitpZiB0ZXN0IC1uICIkQ0MkQ0ZMQUdTJExERkxB
R1MkTElCUyRDUFBGTEFHUyRDUFAiOyB0aGVuIDoKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogU2V0dGluZyBDQywgQ0ZMQUdTLCBMREZMQUdT
LCBMSUJTLCBDUFBGTEFHUyBvciBDUFAgaXMgbm90IFwKK3JlY29tbWVuZGVkLCB1c2UgUFJFUEVO
RF9JTkNMVURFUywgUFJFUEVORF9MSUIsIFwKK0FQUEVORF9JTkNMVURFUyBhbmQgQVBQRU5EX0xJ
QiBpbnN0ZWFkIHdoZW4gcG9zc2libGUuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6
IFNldHRpbmcgQ0MsIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIG5v
dCBcCityZWNvbW1lbmRlZCwgdXNlIFBSRVBFTkRfSU5DTFVERVMsIFBSRVBFTkRfTElCLCBcCitB
UFBFTkRfSU5DTFVERVMgYW5kIEFQUEVORF9MSUIgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLiIgPiYy
O30KKworZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxl
PSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5r
PSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNv
bmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBp
bGVyX2dudQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3Qg
dGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Z2NjIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsg
YWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk
Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0Mi
OyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl
IHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3Ig
YXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19k
aXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl
X2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo
ZW4KKyAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNf
c2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsg
dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+
JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgorICBh
Y19jdF9DQz0kQ0MKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBj
YW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0k
MgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3Rf
Q0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVz
ZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf
U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg
IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn
ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCisgICAgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9
JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lm
IHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0ND
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3Qg
IngkYWNfY3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9z
c19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl
Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
dXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQor
YWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitlbHNl
CisgIENDPSIkYWNfY3ZfcHJvZ19DQyIKK2ZpCisKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAg
ICAgICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgIyBFeHRyYWN0
IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBh
Y193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7
IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBh
c19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2Rp
ciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf
ZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhl
bgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCisgICAgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRo
ZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRD
QyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisKKyAgZmkKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFj
dCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0
aCBhcmdzLgorc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJv
Z19DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl
bHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfcHJvZ19yZWplY3RlZD1u
bworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAk
UEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k
aXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z
OyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh
c190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgaWYg
dGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVu
CisgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKKyAgICAgICBjb250aW51ZQorICAgICBmaQor
ICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJy
ZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitpZiB0ZXN0ICRh
Y19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCisgICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUg
cGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KKyAgc2V0IGR1bW15ICRhY19jdl9w
cm9nX0NDCisgIHNoaWZ0CisgIGlmIHRlc3QgJCMgIT0gMDsgdGhlbgorICAgICMgV2UgY2hvc2Ug
YSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgorICAgICMgSG93ZXZlciwg
aXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KKyAg
ICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxs
IGZpbGUgbmFtZS4KKyAgICBzaGlmdAorICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dv
cmQkezErJyAnfSRAIgorICBmaQorZmkKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRl
c3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisg
IGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gY2wu
ZXhlCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVm
aXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQg
ZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHth
Y19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIk
Q0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9
JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZT
PSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBh
Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRl
c3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJGFj
X3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9
JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJEND
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICB0ZXN0
IC1uICIkQ0MiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisg
IGFjX2N0X0NDPSRDQworICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKK2RvCisgICMgRXh0cmFjdCB0
aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUg
d2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7
YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNf
Y3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBh
c19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2Rp
ciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf
ZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhl
bgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lG
UworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIk
YWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DQyIgPiY2OyB9Citl
bHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu
byIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRhY19jdF9D
QyIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAg
ICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5l
ZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FS
TklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVm
aXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNh
YworICAgIENDPSRhY19jdF9DQworICBmaQorZmkKKworZmkKKworCit0ZXN0IC16ICIkQ0MiICYm
IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAk
YWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjI7fQorYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBc
JFBBVEgKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsg
fQorCisjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCiskYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxl
ciB2ZXJzaW9uIiA+JjUKK3NldCBYICRhY19jb21waWxlCithY19jb21waWxlcj0kMgorZm9yIGFj
X29wdGlvbiBpbiAtLXZlcnNpb24gLXYgLVYgLXF2ZXJzaW9uOyBkbworICB7IHsgYWNfdHJ5PSIk
YWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiog
fCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0k
YWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUK
KyAgKGV2YWwgIiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIpIDI+Y29uZnRlc3QuZXJyCisg
IGFjX3N0YXR1cz0kPworICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIHNlZCAn
MTBhXAorLi4uIHJlc3Qgb2Ygc3RkZXJyIG91dHB1dCBkZWxldGVkIC4uLgorICAgICAgICAgMTBx
JyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1Cisg
IGZpCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFj
X3N0YXR1cyA9IDA7IH0KK2RvbmUKKworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKwor
ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCithY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVh
bl9maWxlcworYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxlcyBhLm91dCBhLm91dC5kU1lN
IGEuZXhlIGIub3V0IgorIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgd2l0aG91dCAtbyBm
aXJzdCwgZGlzcmVnYXJkIGEub3V0LgorIyBJdCB3aWxsIGhlbHAgdXMgZGlhZ25vc2UgYnJva2Vu
IGNvbXBpbGVycywgYW5kIGZpbmRpbmcgb3V0IGFuIGludHVpdGlvbgorIyBvZiBleGVleHQuCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg
dGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0
aGUgQyBjb21waWxlciB3b3Jrcy4uLiAiID4mNjsgfQorYWNfbGlua19kZWZhdWx0PWAkYXNfZWNo
byAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRlc3RbXiBdKi8vJ2AKKworIyBUaGUgcG9z
c2libGUgb3V0cHV0IGZpbGVzOgorYWNfZmlsZXM9ImEub3V0IGNvbmZ0ZXN0LmV4ZSBjb25mdGVz
dCBhLmV4ZSBhX291dC5leGUgYi5vdXQgY29uZnRlc3QuKiIKKworYWNfcm1maWxlcz0KK2ZvciBh
Y19maWxlIGluICRhY19maWxlcworZG8KKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4
dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJn
IHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkgOzsKKyAgICAqICkgYWNf
cm1maWxlcz0iJGFjX3JtZmlsZXMgJGFjX2ZpbGUiOzsKKyAgZXNhYworZG9uZQorcm0gLWYgJGFj
X3JtZmlsZXMKKworaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmtfZGVmYXVsdCIKK2Nhc2UgIigoJGFj
X3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Cisg
ICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNf
dHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmtfZGVmYXVsdCIpIDI+JjUKKyAgYWNf
c3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9
ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAgIyBB
dXRvY29uZi0yLjEzIGNvdWxkIHNldCB0aGUgYWNfY3ZfZXhlZXh0IHZhcmlhYmxlIHRvIGBubycu
CisjIFNvIGlnbm9yZSBhIHZhbHVlIG9mIGBubycsIG90aGVyd2lzZSB0aGlzIHdvdWxkIGxlYWQg
dG8gYEVYRUVYVCA9IG5vJworIyBpbiBhIE1ha2VmaWxlLiAgV2Ugc2hvdWxkIG5vdCBvdmVycmlk
ZSBhY19jdl9leGVleHQgaWYgaXQgd2FzIGNhY2hlZCwKKyMgc28gdGhhdCB0aGUgdXNlciBjYW4g
c2hvcnQtY2lyY3VpdCB0aGlzIHRlc3QgZm9yIGNvbXBpbGVycyB1bmtub3duIHRvCisjIEF1dG9j
b25mLgorZm9yIGFjX2ZpbGUgaW4gJGFjX2ZpbGVzICcnCitkbworICB0ZXN0IC1mICIkYWNfZmls
ZSIgfHwgY29udGludWUKKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNv
ZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAg
fCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkKKwk7OworICAgIFthYl0ub3V0ICkKKwkj
IFdlIGZvdW5kIHRoZSBkZWZhdWx0IGV4ZWN1dGFibGUsIGJ1dCBleGVleHQ9JycgaXMgbW9zdAor
CSMgY2VydGFpbmx5IHJpZ2h0LgorCWJyZWFrOzsKKyAgICAqLiogKQorCWlmIHRlc3QgIiR7YWNf
Y3ZfZXhlZXh0K3NldH0iID0gc2V0ICYmIHRlc3QgIiRhY19jdl9leGVleHQiICE9IG5vOworCXRo
ZW4gOjsgZWxzZQorCSAgIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChc
Li4qXCknYAorCWZpCisJIyBXZSBzZXQgYWNfY3ZfZXhlZXh0IGhlcmUgYmVjYXVzZSB0aGUgbGF0
ZXIgdGVzdCBmb3IgaXQgaXMgbm90CisJIyBzYWZlOiBjcm9zcyBjb21waWxlcnMgbWF5IG5vdCBh
ZGQgdGhlIHN1ZmZpeCBpZiBnaXZlbiBhbiBgLW8nCisJIyBhcmd1bWVudCwgc28gd2UgbWF5IG5l
ZWQgdG8ga25vdyBpdCBhdCB0aGF0IHBvaW50IGFscmVhZHkuCisJIyBFdmVuIGlmIHRoaXMgc2Vj
dGlvbiBsb29rcyBjcnVmdHk6IGl0IGhhcyB0aGUgYWR2YW50YWdlIG9mCisJIyBhY3R1YWxseSB3
b3JraW5nLgorCWJyZWFrOzsKKyAgICAqICkKKwlicmVhazs7CisgIGVzYWMKK2RvbmUKK3Rlc3Qg
IiRhY19jdl9leGVleHQiID0gbm8gJiYgYWNfY3ZfZXhlZXh0PQorCitlbHNlCisgIGFjX2ZpbGU9
JycKK2ZpCitpZiB0ZXN0IC16ICIkYWNfZmlsZSI7IHRoZW4gOgorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+
JjY7IH0KKyRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdz
L14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCit7IHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIk
YXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJDIGNv
bXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBt
b3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4m
NjsgfQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4uLiAi
ID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYWNfZmlsZSIgPiY2OyB9CithY19leGVleHQ9JGFj
X2N2X2V4ZWV4dAorCitybSAtZiAtciBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGNvbmZ0ZXN0JGFj
X2N2X2V4ZWV4dCBiLm91dAorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZp
eCBvZiBleGVjdXRhYmxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9m
IGV4ZWN1dGFibGVzLi4uICIgPiY2OyB9CitpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2Ug
IigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3Ry
eTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0i
XCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hv
ICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CisgIGFjX3N0
YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAk
YWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6CisgICMgSWYg
Ym90aCBgY29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBv
YnNlcnZhYmxlKQorIyBjYXRjaCBgY29uZnRlc3QuZXhlJy4gIEZvciBpbnN0YW5jZSB3aXRoIEN5
Z3dpbiwgYGxzIGNvbmZ0ZXN0JyB3aWxsCisjIHdvcmsgcHJvcGVybHkgKGkuZS4sIHJlZmVyIHRv
IGBjb25mdGVzdC5leGUnKSwgd2hpbGUgaXQgd29uJ3Qgd2l0aAorIyBgcm0nLgorZm9yIGFjX2Zp
bGUgaW4gY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCisgIHRlc3QgLWYgIiRh
Y19maWxlIiB8fCBjb250aW51ZQorICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwg
Ki54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAq
Lm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKSA7OworICAgICouKiApIGFjX2N2
X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAorCSAgYnJlYWs7Owor
ICAgICogKSBicmVhazs7CisgIGVzYWMKK2RvbmUKK2Vsc2UKKyAgeyB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAk
PyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBh
bmQgbGluaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDUg
OyB9CitmaQorcm0gLWYgY29uZnRlc3QgY29uZnRlc3QkYWNfY3ZfZXhlZXh0Cit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1
CiskYXNfZWNobyAiJGFjX2N2X2V4ZWV4dCIgPiY2OyB9CisKK3JtIC1mIGNvbmZ0ZXN0LiRhY19l
eHQKK0VYRUVYVD0kYWNfY3ZfZXhlZXh0CithY19leGVleHQ9JEVYRUVYVAorY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor
I2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK0ZJTEUgKmYgPSBmb3BlbiAoImNv
bmZ0ZXN0Lm91dCIsICJ3Iik7CisgcmV0dXJuIGZlcnJvciAoZikgfHwgZmNsb3NlIChmKSAhPSAw
OworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xl
YW5fZmlsZXMgY29uZnRlc3Qub3V0IgorIyBDaGVjayB0aGF0IHRoZSBjb21waWxlciBwcm9kdWNl
cyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIKKyMgdGhlIGNvbXBpbGVy
IGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5n
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGlu
Zy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCisg
IHsgeyBhY190cnk9IiRhY19saW5rIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxg
KiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3Ry
eTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChl
dmFsICIkYWNfbGluayIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19z
dGF0dXMgPSAwOyB9CisgIGlmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCcKKyAg
eyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNo
bz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190
cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIK
KyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX3RyeSIpIDI+JjUK
KyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9OyB0aGVu
CisgICAgY3Jvc3NfY29tcGlsaW5nPW5vCisgIGVsc2UKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29t
cGlsaW5nIiA9IG1heWJlOyB0aGVuCisJY3Jvc3NfY29tcGlsaW5nPXllcworICAgIGVsc2UKKwl7
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFj
X3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYy
O30KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCitJZiB5
b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KK1NlZSBcYGNvbmZpZy5s
b2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsgfQorICAgIGZpCisgIGZpCitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjcm9zc19j
b21waWxpbmciID4mNQorJGFzX2VjaG8gIiRjcm9zc19jb21waWxpbmciID4mNjsgfQorCitybSAt
ZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCBjb25mdGVzdC5vdXQKK2Fj
X2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzLi4uICIg
PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X29iamV4dCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWlu
ICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QubyBj
b25mdGVzdC5vYmoKK2lmIHsgeyBhY190cnk9IiRhY19jb21waWxlIgorY2FzZSAiKCgkYWNfdHJ5
IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikg
YWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlf
ZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY29tcGlsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/
CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0
dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAgZm9yIGFjX2ZpbGUg
aW4gY29uZnRlc3QubyBjb25mdGVzdC5vYmogY29uZnRlc3QuKjsgZG8KKyAgdGVzdCAtZiAiJGFj
X2ZpbGUiIHx8IGNvbnRpbnVlOworICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwg
Ki54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAq
Lm1hcCB8ICouaW5mIHwgKi5kU1lNICkgOzsKKyAgICAqKSBhY19jdl9vYmpleHQ9YGV4cHIgIiRh
Y19maWxlIiA6ICcuKlwuXCguKlwpJ2AKKyAgICAgICBicmVhazs7CisgIGVzYWMKK2RvbmUKK2Vs
c2UKKyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3Mv
Xi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKK3sgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRh
c19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlCitTZWUgXGBj
b25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNSA7IH0KK2ZpCitybSAtZiBj
b25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1Cisk
YXNfZWNobyAiJGFjX2N2X29iamV4dCIgPiY2OyB9CitPQkpFWFQ9JGFjX2N2X29iamV4dAorYWNf
b2JqZXh0PSRPQkpFWFQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxl
ci4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9jX2NvbXBpbGVyX2dudStzZXR9IiA9IHNl
dDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25m
ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KKworaW50CittYWluICgpCit7CisjaWZuZGVmIF9fR05VQ19fCisgICAgICAgY2hva2UgbWUK
KyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY29tcGlsZXJfZ251PXllcworZWxzZQorICBh
Y19jb21waWxlcl9nbnU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2FjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21w
aWxlcl9nbnUKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX2Nv
bXBpbGVyX2dudSIgPiY2OyB9CitpZiB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4K
KyAgR0NDPXllcworZWxzZQorICBHQ0M9CitmaQorYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0
fQorYWNfc2F2ZV9DRkxBR1M9JENGTEFHUworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KK2lmIHRlc3Qg
IiR7YWNfY3ZfcHJvZ19jY19nK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfc2F2ZV9jX3dlcnJvcl9mbGFnPSRhY19jX3dlcnJvcl9m
bGFnCisgICBhY19jX3dlcnJvcl9mbGFnPXllcworICAgYWNfY3ZfcHJvZ19jY19nPW5vCisgICBD
RkxBR1M9Ii1nIgorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4
dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2N2X3Byb2dfY2NfZz15ZXMKK2Vsc2UKKyAgQ0ZMQUdTPSIiCisgICAgICBjYXQg
Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMu
aC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YK
K2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBhY19j
X3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcKKwkgQ0ZMQUdTPSItZyIKKwkgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9G
CitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Byb2df
Y2NfZz15ZXMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj
b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9
JGFjX3NhdmVfY193ZXJyb3JfZmxhZworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfcHJvZ19jY19nIiA+JjY7IH0KK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRo
ZW4KKyAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUworZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cg
PSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1n
IC1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0iLWciCisgIGZpCitlbHNlCisgIGlmIHRlc3QgIiRH
Q0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9Cisg
IGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OS4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9wcm9nX2NjX2M4OStzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2N2X3Byb2dfY2NfYzg5PW5vCithY19zYXZlX0ND
PSRDQworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy8qIE1vc3Qg
b2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25m
LnNoLiAgKi8KK3N0cnVjdCBidWYgeyBpbnQgeDsgfTsKK0ZJTEUgKiAoKnJjc29wZW4pIChzdHJ1
Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7CitzdGF0aWMgY2hhciAqZSAocCwgaSkKKyAg
ICAgY2hhciAqKnA7CisgICAgIGludCBpOworeworICByZXR1cm4gcFtpXTsKK30KK3N0YXRpYyBj
aGFyICpmIChjaGFyICogKCpnKSAoY2hhciAqKiwgaW50KSwgY2hhciAqKnAsIC4uLikKK3sKKyAg
Y2hhciAqczsKKyAgdmFfbGlzdCB2OworICB2YV9zdGFydCAodixwKTsKKyAgcyA9IGcgKHAsIHZh
X2FyZyAodixpbnQpKTsKKyAgdmFfZW5kICh2KTsKKyAgcmV0dXJuIHM7Cit9CisKKy8qIE9TRiA0
LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQg
aGFzCisgICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4
IGNoYXJhY3RlciBjb25zdGFudHMuCisgICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVu
Zm9ydHVuYXRlbHksIGluc3RlYWQgYXJlIHNpbGVudGx5IHRyZWF0ZWQKKyAgIGFzICd4Jy4gIFRo
ZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJvciwgdW50aWwgLXN0ZCBpcyBhZGRlZCB0byBnZXQK
KyAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVz
IG91dCB0cnVlLCBmb3IgYW4KKyAgIGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdzIG5lY2Vzc2Fy
eSB0byB3cml0ZSAnXHgwMCc9PTAgdG8gZ2V0IHNvbWV0aGluZworICAgdGhhdCdzIHRydWUgb25s
eSB3aXRoIC1zdGQuICAqLworaW50IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0x
XTsKKworLyogSUJNIEMgNiBmb3IgQUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQsIGJ1dCBp
dCByZXBsYWNlcyBtYWNybyBwYXJhbWV0ZXJzCisgICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFj
dGVyIGNvbnN0YW50cy4gICovCisjZGVmaW5lIEZPTyh4KSAneCcKK2ludCB4bGM2X2NjX2FycmF5
W0ZPTyhhKSA9PSAneCcgPyAxIDogLTFdOworCitpbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsK
K3N0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9Oworc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91
YmxlIGEpO307CitpbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3Qg
YnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKK2ludCBhcmdjOworY2hhciAq
KmFyZ3Y7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBd
ICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKKyAgOworICByZXR1cm4gMDsKK30KK19B
Q0VPRgorZm9yIGFjX2FyZyBpbiAnJyAtcWxhbmdsdmw9ZXh0Yzg5IC1xbGFuZ2x2bD1hbnNpIC1z
dGQgXAorCS1BZSAiLUFhIC1EX0hQVVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJT05TX18iCitk
bworICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKKyAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAi
JExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCitmaQorcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAorICB0ZXN0ICJ4JGFjX2N2X3By
b2dfY2NfYzg5IiAhPSAieG5vIiAmJiBicmVhaworZG9uZQorcm0gLWYgY29uZnRlc3QuJGFjX2V4
dAorQ0M9JGFjX3NhdmVfQ0MKKworZmkKKyMgQUNfQ0FDSEVfVkFMCitjYXNlICJ4JGFjX2N2X3By
b2dfY2NfYzg5IiBpbgorICB4KQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1CiskYXNfZWNobyAibm9uZSBuZWVkZWQi
ID4mNjsgfSA7OworICB4bm8pCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IHVuc3VwcG9ydGVkIiA+JjUKKyRhc19lY2hvICJ1bnN1cHBvcnRlZCIg
PiY2OyB9IDs7CisgICopCisgICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19jODkiCisgICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9n
X2NjX2M4OSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjY7IH0gOzsKK2Vz
YWMKK2lmIHRlc3QgIngkYWNfY3ZfcHJvZ19jY19jODkiICE9IHhubzsgdGhlbiA6CisKK2ZpCisK
K2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRD
RkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNf
ZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKwor
CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAk
Q0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBj
b25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFj
X2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Cit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBy
dW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBy
dW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICIgPiY2OyB9CisjIE9uIFN1bnMsIHNvbWV0aW1lcyAk
Q1BQIG5hbWVzIGEgZGlyZWN0b3J5LgoraWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQ
UCI7IHRoZW4KKyAgQ1BQPQorZmkKK2lmIHRlc3QgLXogIiRDUFAiOyB0aGVuCisgIGlmIHRlc3Qg
IiR7YWNfY3ZfcHJvZ19DUFArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgorZWxzZQorICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRz
IHRvIGJlIGV4cGFuZGVkCisgICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRp
b25hbC1jcHAiICIvbGliL2NwcCIKKyAgICBkbworICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQor
Zm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhlYWRl
ciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCisgICMgd2l0
aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIFByZWZlciA8bGltaXRzLmg+IHRv
IDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKKyAgIyA8bGltaXRzLmg+
IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCisgICMgT24gdGhlIE5lWFQs
IGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCisgICMg
bm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhp
cyBjYXNlLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisv
KiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRz
Lmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCQkgICAgIFN5bnRheCBl
cnJvcgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxz
ZQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1m
IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworICAjIE9LLCB3b3Jr
cyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwor
ICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8YWNf
bm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhl
biA6CisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCitjb250aW51ZQorZWxz
ZQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19vaz06CiticmVhaworZmkKK3Jt
IC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBC
ZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2Fz
IHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0
CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CisgIGJyZWFrCitmaQorCisgICAgZG9uZQorICAg
IGFjX2N2X3Byb2dfQ1BQPSRDUFAKKworZmkKKyAgQ1BQPSRhY19jdl9wcm9nX0NQUAorZWxzZQor
ICBhY19jdl9wcm9nX0NQUD0kQ1BQCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRDUFAiID4mNQorJGFzX2VjaG8gIiRDUFAiID4mNjsgfQorYWNf
cHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitk
bworICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3Vy
aW5nIGdsaWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIFBy
ZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2lu
Y2UKKyAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMu
CisgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGls
ZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlz
IGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19TVERDX18K
KyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRp
ZgorCQkgICAgIFN5bnRheCBlcnJvcgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5F
Tk8iOyB0aGVuIDoKKworZWxzZQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitj
b250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19l
eHQKKworICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9u
ZXhpc3RlbnQgaGVhZGVycworICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4g
ICovCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf
Y3BwICIkTElORU5PIjsgdGhlbiA6CisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5w
dXQuCitjb250aW51ZQorZWxzZQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19v
az06CiticmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRh
Y19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdz
IGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfZXh0CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CisKK2Vsc2UKKyAg
eyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRh
Y19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4m
Mjt9Cithc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5
IGNoZWNrCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNSA7
IH0KK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0n
JENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0n
JENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25m
dGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxl
cl9nbnUKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIgPiY1CiskYXNfZWNo
b19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4g
IiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9HUkVQK3NldH0iID0gc2V0OyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAteiAiJEdSRVAi
OyB0aGVuCisgIGFjX3BhdGhfR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUg
dXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRIJFBBVEhf
U0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGdyZXAgZ2dyZXA7IGRv
CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv
CisgICAgICBhY19wYXRoX0dSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAg
ICB7IHRlc3QgLWYgIiRhY19wYXRoX0dSRVAiICYmICRhc190ZXN0X3ggIiRhY19wYXRoX0dSRVAi
OyB9IHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9HUkVQIGFuZCBzZWxlY3Qg
aXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9HUkVQCitjYXNl
IGAiJGFjX3BhdGhfR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0
aF9HUkVQPSIkYWNfcGF0aF9HUkVQIiBhY19wYXRoX0dSRVBfZm91bmQ9Ojs7CisqKQorICBhY19j
b3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6
CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRt
cCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0
LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJ0dSRVAnID4+ICJjb25mdGVzdC5ubCIK
KyAgICAiJGFjX3BhdGhfR1JFUCIgLWUgJ0dSRVAkJyAtZSAnLShjYW5ub3QgbWF0Y2gpLScgPCAi
Y29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRp
ZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsK
KyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBp
ZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0dSRVBfbWF4LTB9OyB0aGVuCisgICAgICAj
IEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBv
bmUKKyAgICAgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIKKyAgICAgIGFjX3BhdGhf
R1JFUF9tYXg9JGFjX2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1
dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJy
ZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5s
IGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX0dSRVBfZm91bmQgJiYgYnJl
YWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRl
c3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFj
Y2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3Iv
eHBnNC9iaW4iICIkTElORU5PIiA1CisgIGZpCitlbHNlCisgIGFjX2N2X3BhdGhfR1JFUD0kR1JF
UAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3ZfcGF0aF9HUkVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9HUkVQIiA+
JjY7IH0KKyBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgorCisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciBlZ3JlcC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wYXRoX0VH
UkVQK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgaWYgZWNobyBhIHwgJEdSRVAgLUUgJyhhfGIpJyA+L2Rldi9udWxsIDI+JjEKKyAgIHRo
ZW4gYWNfY3ZfcGF0aF9FR1JFUD0iJEdSRVAgLUUiCisgICBlbHNlCisgICAgIGlmIHRlc3QgLXog
IiRFR1JFUCI7IHRoZW4KKyAgYWNfcGF0aF9FR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhy
b3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAor
ICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ
QVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUwor
ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGVncmVw
OyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z
OyBkbworICAgICAgYWNfcGF0aF9FR1JFUD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIK
KyAgICAgIHsgdGVzdCAtZiAiJGFjX3BhdGhfRUdSRVAiICYmICRhc190ZXN0X3ggIiRhY19wYXRo
X0VHUkVQIjsgfSB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfRUdSRVAgYW5k
IHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0VH
UkVQCitjYXNlIGAiJGFjX3BhdGhfRUdSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisg
IGFjX2N2X3BhdGhfRUdSRVA9IiRhY19wYXRoX0VHUkVQIiBhY19wYXRoX0VHUkVQX2ZvdW5kPTo7
OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5p
biIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIg
PiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAg
IGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdFR1JFUCcgPj4g
ImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9FR1JFUCIgJ0VHUkVQJCcgPCAiY29uZnRlc3Qu
bmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0
ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19m
bl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRh
Y19jb3VudCAtZ3QgJHthY19wYXRoX0VHUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9u
ZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAg
ICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIKKyAgICAgIGFjX3BhdGhfRUdSRVBf
bWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2Vl
bXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhawor
ICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25m
dGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9FR1JFUF9mb3VuZCAmJiBicmVhayAz
CisgICAgZG9uZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYgdGVzdCAt
eiAiJGFjX2N2X3BhdGhfRUdSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2Vw
dGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hw
ZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0VHUkVQPSRFR1JF
UAorZmkKKworICAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVAiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRo
X0VHUkVQIiA+JjY7IH0KKyBFR1JFUD0iJGFjX2N2X3BhdGhfRUdSRVAiCisKKworeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRl
ciBmaWxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxl
cy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsg
dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2N2X2hlYWRlcl9zdGRjPXllcworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1u
bworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl
c3QuJGFjX2V4dAorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAj
IFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFO
U0kuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworX0FDRU9GCitpZiAoZXZh
bCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgICRFR1JFUCAibWVtY2hyIiA+
L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitm
aQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0g
eWVzOyB0aGVuCisgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwg
Y29udHJhcnkgdG8gQU5TSS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitf
QUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVH
UkVQICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRl
cl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hl
YWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9u
LUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKyAgaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICA6CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNs
dWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmICgoJyAnICYgMHgwRkYpID09
IDB4MDIwKQorIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQor
IyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMp
KQorI2Vsc2UKKyMgZGVmaW5lIElTTE9XRVIoYykgXAorCQkgICAoKCdhJyA8PSAoYykgJiYgKGMp
IDw9ICdpJykgXAorCQkgICAgIHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKKwkJICAg
ICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElT
TE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjZW5kaWYKKworI2RlZmluZSBYT1IoZSwg
ZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKK2ludAorbWFpbiAoKQoreworICBp
bnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgIGlmIChYT1IgKGlzbG93ZXIg
KGkpLCBJU0xPV0VSIChpKSkKKwl8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKKyAgICAg
IHJldHVybiAyOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIk
TElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAt
ZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFj
X2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4k
YWNfZXh0CitmaQorCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9o
ZWFkZXJfc3RkYyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhl
bgorCiskYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mZGVmcy5oCisKK2Zp
CisKKyMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50dHlwZXMuaCBhcmUgY29uZmxpY3Rp
bmcuCitmb3IgYWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3Ry
aW5nLmggbWVtb3J5Lmggc3RyaW5ncy5oIFwKKwkJICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0
ZC5oCitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVh
ZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8i
ICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0CisiCitp
ZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNh
dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFk
ZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCisKKyAgYWNfZm5f
Y19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm1pbml4L2NvbmZpZy5oIiAiYWNfY3Zf
aGVhZGVyX21pbml4X2NvbmZpZ19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4
JGFjX2N2X2hlYWRlcl9taW5peF9jb25maWdfaCIgPSB4IiJ5ZXM7IHRoZW4gOgorICBNSU5JWD15
ZXMKK2Vsc2UKKyAgTUlOSVg9CitmaQorCisKKyAgaWYgdGVzdCAiJE1JTklYIiA9IHllczsgdGhl
bgorCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfU09VUkNFIDEiID4+Y29uZmRlZnMuaAorCisK
KyRhc19lY2hvICIjZGVmaW5lIF9QT1NJWF8xX1NPVVJDRSAyIiA+PmNvbmZkZWZzLmgKKworCisk
YXNfZWNobyAiI2RlZmluZSBfTUlOSVggMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKKworCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBp
dCBpcyBzYWZlIHRvIGRlZmluZSBfX0VYVEVOU0lPTlNfXyIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyB3aGV0aGVyIGl0IGlzIHNhZmUgdG8gZGVmaW5lIF9fRVhURU5TSU9OU19fLi4uICIgPiY2
OyB9CitpZiB0ZXN0ICIke2FjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fK3NldH0i
ID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworCisjCSAgZGVmaW5lIF9fRVhURU5TSU9OU19fIDEKKwkgICRhY19pbmNsdWRlc19k
ZWZhdWx0CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitp
ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3NhZmVfdG9f
ZGVmaW5lX19fZXh0ZW5zaW9uc19fPXllcworZWxzZQorICBhY19jdl9zYWZlX3RvX2RlZmluZV9f
X2V4dGVuc2lvbnNfXz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25z
X18iID4mNQorJGFzX2VjaG8gIiRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIg
PiY2OyB9CisgIHRlc3QgJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fID0geWVz
ICYmCisgICAgJGFzX2VjaG8gIiNkZWZpbmUgX19FWFRFTlNJT05TX18gMSIgPj5jb25mZGVmcy5o
CisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX0FMTF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKyAg
JGFzX2VjaG8gIiNkZWZpbmUgX0dOVV9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2Vj
aG8gIiNkZWZpbmUgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEiID4+Y29uZmRlZnMuaAorCisg
ICRhc19lY2hvICIjZGVmaW5lIF9UQU5ERU1fU09VUkNFIDEiID4+Y29uZmRlZnMuaAorCisKKyMg
TWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29u
ZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVt
IHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+
JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxp
YXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNI
RUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIg
PSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11
c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4
X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIk
U0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJ
TkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0K
K2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZh
bGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDUgOzsKK2VzYWMKK2J1aWxk
PSRhY19jdl9idWlsZAorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworc2V0IHggJGFjX2N2X2J1
aWxkCitzaGlmdAorYnVpbGRfY3B1PSQxCitidWlsZF92ZW5kb3I9JDIKK3NoaWZ0OyBzaGlmdAor
IyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUg
JCosCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6CitidWlsZF9vcz0kKgorSUZTPSRhY19zYXZl
X0lGUworY2FzZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIg
fCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9o
b3N0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KKyAgYWNfY3ZfaG9zdD0kYWNf
Y3ZfYnVpbGQKK2Vsc2UKKyAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcu
c3ViIiAkaG9zdF9hbGlhc2AgfHwKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhf
ZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorZmkKKworZmkK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf
aG9zdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQorY2FzZSAkYWNfY3ZfaG9z
dCBpbgorKi0qLSopIDs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5v
bmljYWwgaG9zdCIgIiRMSU5FTk8iIDUgOzsKK2VzYWMKK2hvc3Q9JGFjX2N2X2hvc3QKK2FjX3Nh
dmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4ICRhY19jdl9ob3N0CitzaGlmdAoraG9zdF9jcHU9
JDEKK2hvc3RfdmVuZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBj
aGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorIyBleGNlcHQgd2l0aCBvbGQg
c2hlbGxzOgoraG9zdF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkaG9zdF9vcyBpbiAq
XCAqKSBob3N0X29zPWBlY2hvICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKwor
CisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKKworCisKKworCisKKworCisKKworCisKKworCisKKwor
CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisK
KworIyBFbmFibGUvZGlzYWJsZSBvcHRpb25zCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUteHNt
IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3hzbStzZXR9IiA9IHNldDsgdGhlbiA6Cisg
IGVuYWJsZXZhbD0kZW5hYmxlX3hzbTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfeHNtIiA9
ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl94c209InkiCisKK2VsaWYgdGVzdCAieCRlbmFi
bGVfeHNtIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3hzbT0ibiIKKworZWxpZiB0ZXN0
IC16ICRheF9jdl94c207IHRoZW4gOgorCisgICAgYXhfY3ZfeHNtPSJuIgorCitmaQoreHNtPSRh
eF9jdl94c20KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdpdGh0dHAgd2FzIGdpdmVuLgor
aWYgdGVzdCAiJHtlbmFibGVfZ2l0aHR0cCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZh
bD0kZW5hYmxlX2dpdGh0dHA7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX2dpdGh0dHAiID0g
Inh5ZXMiOyB0aGVuIDoKKworICAgIGF4X2N2X2dpdGh0dHA9InkiCisKK2VsaWYgdGVzdCAieCRl
bmFibGVfZ2l0aHR0cCIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9naXRodHRwPSJuIgor
CitlbGlmIHRlc3QgLXogJGF4X2N2X2dpdGh0dHA7IHRoZW4gOgorCisgICAgYXhfY3ZfZ2l0aHR0
cD0ibiIKKworZmkKK2dpdGh0dHA9JGF4X2N2X2dpdGh0dHAKKworIyBDaGVjayB3aGV0aGVyIC0t
ZW5hYmxlLW1vbml0b3JzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX21vbml0b3JzK3Nl
dH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfbW9uaXRvcnM7CitmaQorCisK
K2lmIHRlc3QgIngkZW5hYmxlX21vbml0b3JzIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2
X21vbml0b3JzPSJuIgorCitlbGlmIHRlc3QgIngkZW5hYmxlX21vbml0b3JzIiA9ICJ4eWVzIjsg
dGhlbiA6CisKKyAgICBheF9jdl9tb25pdG9ycz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9t
b25pdG9yczsgdGhlbiA6CisKKyAgICBheF9jdl9tb25pdG9ycz0ieSIKKworZmkKK21vbml0b3Jz
PSRheF9jdl9tb25pdG9ycworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdnRwbSB3YXMgZ2l2
ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV92dHBtK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxl
dmFsPSRlbmFibGVfdnRwbTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfdnRwbSIgPSAieHll
cyI7IHRoZW4gOgorCisgICAgYXhfY3ZfdnRwbT0ieSIKKworZWxpZiB0ZXN0ICJ4JGVuYWJsZV92
dHBtIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3Z0cG09Im4iCisKK2VsaWYgdGVzdCAt
eiAkYXhfY3ZfdnRwbTsgdGhlbiA6CisKKyAgICBheF9jdl92dHBtPSJuIgorCitmaQordnRwbT0k
YXhfY3ZfdnRwbQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUteGFwaSB3YXMgZ2l2ZW4uCitp
ZiB0ZXN0ICIke2VuYWJsZV94YXBpK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRl
bmFibGVfeGFwaTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfeGFwaSIgPSAieHllcyI7IHRo
ZW4gOgorCisgICAgYXhfY3ZfeGFwaT0ieSIKKworZWxpZiB0ZXN0ICJ4JGVuYWJsZV94YXBpIiA9
ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3hhcGk9Im4iCisKK2VsaWYgdGVzdCAteiAkYXhf
Y3ZfeGFwaTsgdGhlbiA6CisKKyAgICBheF9jdl94YXBpPSJuIgorCitmaQoreGFwaT0kYXhfY3Zf
eGFwaQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcHl0aG9udG9vbHMgd2FzIGdpdmVuLgor
aWYgdGVzdCAiJHtlbmFibGVfcHl0aG9udG9vbHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFi
bGV2YWw9JGVuYWJsZV9weXRob250b29sczsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfcHl0
aG9udG9vbHMiID0gInhubyI7IHRoZW4gOgorCisgICAgYXhfY3ZfcHl0aG9udG9vbHM9Im4iCisK
K2VsaWYgdGVzdCAieCRlbmFibGVfcHl0aG9udG9vbHMiID0gInh5ZXMiOyB0aGVuIDoKKworICAg
IGF4X2N2X3B5dGhvbnRvb2xzPSJ5IgorCitlbGlmIHRlc3QgLXogJGF4X2N2X3B5dGhvbnRvb2xz
OyB0aGVuIDoKKworICAgIGF4X2N2X3B5dGhvbnRvb2xzPSJ5IgorCitmaQorcHl0aG9udG9vbHM9
JGF4X2N2X3B5dGhvbnRvb2xzCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1vY2FtbHRvb2xz
IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX29jYW1sdG9vbHMrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9vY2FtbHRvb2xzOworZmkKKworCitpZiB0ZXN0ICJ4
JGVuYWJsZV9vY2FtbHRvb2xzIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X29jYW1sdG9v
bHM9Im4iCisKK2VsaWYgdGVzdCAieCRlbmFibGVfb2NhbWx0b29scyIgPSAieHllcyI7IHRoZW4g
OgorCisgICAgYXhfY3Zfb2NhbWx0b29scz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9vY2Ft
bHRvb2xzOyB0aGVuIDoKKworICAgIGF4X2N2X29jYW1sdG9vbHM9InkiCisKK2ZpCitvY2FtbHRv
b2xzPSRheF9jdl9vY2FtbHRvb2xzCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1taW5pdGVy
bSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9taW5pdGVybStzZXR9IiA9IHNldDsgdGhl
biA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX21pbml0ZXJtOworZmkKKworCitpZiB0ZXN0ICJ4JGVu
YWJsZV9taW5pdGVybSIgPSAieHllcyI7IHRoZW4gOgorCisgICAgYXhfY3ZfbWluaXRlcm09Inki
CisKK2VsaWYgdGVzdCAieCRlbmFibGVfbWluaXRlcm0iID0gInhubyI7IHRoZW4gOgorCisgICAg
YXhfY3ZfbWluaXRlcm09Im4iCisKK2VsaWYgdGVzdCAteiAkYXhfY3ZfbWluaXRlcm07IHRoZW4g
OgorCisgICAgYXhfY3ZfbWluaXRlcm09Im4iCisKK2ZpCittaW5pdGVybT0kYXhfY3ZfbWluaXRl
cm0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxvbW91bnQgd2FzIGdpdmVuLgoraWYgdGVz
dCAiJHtlbmFibGVfbG9tb3VudCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5h
YmxlX2xvbW91bnQ7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX2xvbW91bnQiID0gInh5ZXMi
OyB0aGVuIDoKKworICAgIGF4X2N2X2xvbW91bnQ9InkiCisKK2VsaWYgdGVzdCAieCRlbmFibGVf
bG9tb3VudCIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9sb21vdW50PSJuIgorCitlbGlm
IHRlc3QgLXogJGF4X2N2X2xvbW91bnQ7IHRoZW4gOgorCisgICAgYXhfY3ZfbG9tb3VudD0ibiIK
KworZmkKK2xvbW91bnQ9JGF4X2N2X2xvbW91bnQKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl
LWRlYnVnIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2RlYnVnK3NldH0iID0gc2V0OyB0
aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZGVidWc7CitmaQorCisKK2lmIHRlc3QgIngkZW5h
YmxlX2RlYnVnIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X2RlYnVnPSJuIgorCitlbGlm
IHRlc3QgIngkZW5hYmxlX2RlYnVnIiA9ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl9kZWJ1
Zz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9kZWJ1ZzsgdGhlbiA6CisKKyAgICBheF9jdl9k
ZWJ1Zz0ieSIKKworZmkKK2RlYnVnPSRheF9jdl9kZWJ1ZworCisKKworCisKKworCitmb3IgY2Zs
YWcgaW4gJFBSRVBFTkRfSU5DTFVERVMKK2RvCisgICAgUFJFUEVORF9DRkxBR1MrPSIgLUkkY2Zs
YWciCitkb25lCitmb3IgbGRmbGFnIGluICRQUkVQRU5EX0xJQgorZG8KKyAgICBQUkVQRU5EX0xE
RkxBR1MrPSIgLUwkbGRmbGFnIgorZG9uZQorZm9yIGNmbGFnIGluICRBUFBFTkRfSU5DTFVERVMK
K2RvCisgICAgQVBQRU5EX0NGTEFHUys9IiAtSSRjZmxhZyIKK2RvbmUKK2ZvciBsZGZsYWcgaW4g
JEFQUEVORF9MSUIKK2RvCisgICAgQVBQRU5EX0xERkxBR1MrPSIgLUwkbGRmbGFnIgorZG9uZQor
Q0ZMQUdTPSIkUFJFUEVORF9DRkxBR1MgJENGTEFHUyAkQVBQRU5EX0NGTEFHUyIKK0xERkxBR1M9
IiRQUkVQRU5EX0xERkxBR1MgJExERkxBR1MgJEFQUEVORF9MREZMQUdTIgorCisKKworCisKKwor
CisKKworCisKKworIyBDaGVja3MgZm9yIHByb2dyYW1zLgoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVu
Y2F0ZSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9l
cyBub3QgdHJ1bmNhdGUgb3V0cHV0Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhf
U0VEK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgICAgICAgICAgIGFjX3NjcmlwdD1zL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhL2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYi8KKyAgICAgZm9yIGFjX2kg
aW4gMSAyIDMgNCA1IDYgNzsgZG8KKyAgICAgICBhY19zY3JpcHQ9IiRhY19zY3JpcHQkYXNfbmwk
YWNfc2NyaXB0IgorICAgICBkb25lCisgICAgIGVjaG8gIiRhY19zY3JpcHQiIDI+L2Rldi9udWxs
IHwgc2VkIDk5cSA+Y29uZnRlc3Quc2VkCisgICAgIHsgYWNfc2NyaXB0PTsgdW5zZXQgYWNfc2Ny
aXB0O30KKyAgICAgaWYgdGVzdCAteiAiJFNFRCI7IHRoZW4KKyAgYWNfcGF0aF9TRURfZm91bmQ9
ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNo
IG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP
UgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIHNlZCBnc2VkOyBkbwor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICAgICAgYWNfcGF0aF9TRUQ9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICB7
IHRlc3QgLWYgIiRhY19wYXRoX1NFRCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfU0VEIjsgfSB8
fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYg
aXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNf
cGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIk
YWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAk
YXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAg
IGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYg
ImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0
ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhf
U0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9k
ZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+
L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYm
IGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NF
RF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVw
IGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRo
X1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAq
KDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRh
Y19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25m
dGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3Bh
dGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRh
c19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNf
Zm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIg
IiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf
cGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIk
YWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCithY19leHQ9YworYWNfY3Bw
PSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBj
b25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQg
JENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCith
Y19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CitpZiB0ZXN0IC1uICIkYWNfdG9v
bF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29s
X3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0
IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf
Y3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJEND
IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJ
RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0k
YXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNf
ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0
IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly
LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNf
dG9vbF9wcmVmaXh9Z2NjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19j
dl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2
OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAt
eiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCisgIGFjX2N0X0NDPSRDQworICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJj
aGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19h
Y19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19j
dF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UK
K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBB
VEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg
ZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNf
dGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2
X3Byb2dfYWNfY3RfQ0M9ImdjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVh
ayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19j
dF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0
X0NDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g
Im5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCisgICAg
Q0M9IiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQg
aW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J
Tkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1
CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4
ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMK
KyAgICBDQz0kYWNfY3RfQ0MKKyAgZmkKK2Vsc2UKKyAgQ0M9IiRhY19jdl9wcm9nX0NDIgorZmkK
KworaWYgdGVzdCAteiAiJENDIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29s
X3ByZWZpeCI7IHRoZW4KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9v
bF9wcmVmaXh9Y2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0
IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19j
dl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0Mi
ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJHthY190
b29sX3ByZWZpeH1jYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisg
IGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3Zf
cHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsg
fQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICBmaQorZmkKK2lmIHRl
c3QgLXogIiRDQyI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgY2M7IGFjX3dv
cmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAi
ID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKKyAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhl
bgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0
LgorZWxzZQorICBhY19wcm9nX3JlamVjdGVkPW5vCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB
VEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZT
CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu
ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KKyAgICAgICBhY19wcm9nX3JlamVjdGVkPXll
cworICAgICAgIGNvbnRpbnVlCisgICAgIGZpCisgICAgYWNfY3ZfcHJvZ19DQz0iY2MiCisgICAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJ
RlM9JGFzX3NhdmVfSUZTCisKK2lmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4K
KyAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIg
dXNlIGl0LgorICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKKyAgc2hpZnQKKyAgaWYgdGVzdCAk
IyAhPSAwOyB0aGVuCisgICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRo
ZSBib2d1cyBvbmUuCisgICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNv
IHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgorICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1
c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgorICAgIHNoaWZ0CisgICAg
YWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9JEAiCisgIGZpCitmaQorZmkK
K2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19l
Y2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKwor
ZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4
IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJv
ZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193
b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
Q0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg
dGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitm
b3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRh
c19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh
YmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07
IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lG
Uz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAi
JENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g
Im5vIiA+JjY7IH0KK2ZpCisKKworICAgIHRlc3QgLW4gIiRDQyIgJiYgYnJlYWsKKyAgZG9uZQor
ZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgIGZvciBhY19wcm9n
IGluIGNsLmV4ZQorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIs
IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3By
b2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNf
d29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0g
c2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0Mi
ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0i
JGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91
bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQor
ZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2
X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1Cisk
YXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9
CitmaQorCisKKyAgdGVzdCAtbiAiJGFjX2N0X0NDIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRl
c3QgIngkYWNfY3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRj
cm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7
fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitm
aQorCitmaQorCisKK3Rlc3QgLXogIiRDQyIgJiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAibm8gYWNj
ZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAorU2VlIFxgY29uZmlnLmxvZycgZm9y
IG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDUgOyB9CisKKyMgUHJvdmlkZSBzb21lIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBjb21waWxlci4KKyRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQorc2V0IFggJGFjX2Nv
bXBpbGUKK2FjX2NvbXBpbGVyPSQyCitmb3IgYWNfb3B0aW9uIGluIC0tdmVyc2lvbiAtdiAtViAt
cXZlcnNpb247IGRvCisgIHsgeyBhY190cnk9IiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIK
K2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1c
JGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlf
ZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRh
c19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2NvbXBpbGVyICRhY19v
cHRpb24gPiY1IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMg
Y29uZnRlc3QuZXJyOyB0aGVuCisgICAgc2VkICcxMGFcCisuLi4gcmVzdCBvZiBzdGRlcnIgb3V0
cHV0IGRlbGV0ZWQgLi4uCisgICAgICAgICAxMHEnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIx
CisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QuZXIxIGNv
bmZ0ZXN0LmVycgorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8g
PSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorZG9uZQorCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2Ug
YXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3
aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQor
eworI2lmbmRlZiBfX0dOVUNfXworICAgICAgIGNob2tlIG1lCisjZW5kaWYKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2NvbXBpbGVyX2dudT15ZXMKK2Vsc2UKKyAgYWNfY29tcGlsZXJfZ251PW5vCitm
aQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k
YWNfZXh0CithY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251CisKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29t
cGlsZXJfZ251IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNjsgfQor
aWYgdGVzdCAkYWNfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuCisgIEdDQz15ZXMKK2Vsc2UKKyAg
R0NDPQorZmkKK2FjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0KK2FjX3NhdmVfQ0ZMQUdTPSRD
RkxBR1MKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
d2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy
ICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytz
ZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZworICAgYWNfY193ZXJyb3Jf
ZmxhZz15ZXMKKyAgIGFjX2N2X3Byb2dfY2NfZz1ubworICAgQ0ZMQUdTPSItZyIKKyAgIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgor
aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2Nj
X2c9eWVzCitlbHNlCisgIENGTEFHUz0iIgorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP
RiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4g
KCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21w
aWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2
ZV9jX3dlcnJvcl9mbGFnCisJIENGTEFHUz0iLWciCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWlu
ICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29t
cGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2c9eWVzCitmaQorcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citm
aQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k
YWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj
b25mdGVzdC4kYWNfZXh0CisgICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2Zs
YWcKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX2N2X3Byb2dfY2NfZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfZyIgPiY2OyB9
CitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCisgIENGTEFHUz0kYWNfc2F2
ZV9DRkxBR1MKK2VsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuCisgIGlmIHRl
c3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItZyAtTzIiCisgIGVsc2UKKyAgICBD
RkxBR1M9Ii1nIgorICBmaQorZWxzZQorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAg
IENGTEFHUz0iLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPQorICBmaQorZmkKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8g
YWNjZXB0IElTTyBDODkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24g
dG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19j
ODkrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBhY19jdl9wcm9nX2NjX2M4OT1ubworYWNfc2F2ZV9DQz0kQ0MKK2NhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp
bmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVz
dHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCitzdHJ1Y3QgYnVm
IHsgaW50IHg7IH07CitGSUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3Rh
dCAqLCBpbnQpOworc3RhdGljIGNoYXIgKmUgKHAsIGkpCisgICAgIGNoYXIgKipwOworICAgICBp
bnQgaTsKK3sKKyAgcmV0dXJuIHBbaV07Cit9CitzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykg
KGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCit7CisgIGNoYXIgKnM7CisgIHZhX2xpc3Qg
djsKKyAgdmFfc3RhcnQgKHYscCk7CisgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CisgIHZh
X2VuZCAodik7CisgIHJldHVybiBzOworfQorCisvKiBPU0YgNC4wIENvbXBhcSBjYyBpcyBzb21l
IHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcworICAgZnVuY3Rpb24gcHJv
dG90eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFyYWN0ZXIgY29uc3RhbnRz
LgorICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFk
IGFyZSBzaWxlbnRseSB0cmVhdGVkCisgICBhcyAneCcuICBUaGUgZm9sbG93aW5nIGluZHVjZXMg
YW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CisgICBwcm9wZXIgQU5TSSBtb2Rl
LiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCisg
ICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0w
IHRvIGdldCBzb21ldGhpbmcKKyAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkLiAgKi8KK2lu
dCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CisKKy8qIElCTSBDIDYgZm9y
IEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVwbGFjZXMgbWFjcm8gcGFy
YW1ldGVycworICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMuICAqLwor
I2RlZmluZSBGT08oeCkgJ3gnCitpbnQgeGxjNl9jY19hcnJheVtGT08oYSkgPT0gJ3gnID8gMSA6
IC0xXTsKKworaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7CitzdHJ1Y3QgczEge2ludCAoKmYp
IChpbnQgYSk7fTsKK3N0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9OworaW50IHBhaXJu
YW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAq
LCBpbnQpLCBpbnQsIGludCk7CitpbnQgYXJnYzsKK2NoYXIgKiphcmd2OworaW50CittYWluICgp
Cit7CityZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEp
ICE9IGFyZ3ZbMV07CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2ZvciBhY19hcmcgaW4g
JycgLXFsYW5nbHZsPWV4dGM4OSAtcWxhbmdsdmw9YW5zaSAtc3RkIFwKKwktQWUgIi1BYSAtRF9I
UFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgorZG8KKyAgQ0M9IiRhY19zYXZlX0ND
ICRhY19hcmciCisgIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
YWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv
bmZ0ZXN0LiRhY19vYmpleHQKKyAgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0gInhubyIg
JiYgYnJlYWsKK2RvbmUKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQKK0NDPSRhY19zYXZlX0NDCisK
K2ZpCisjIEFDX0NBQ0hFX1ZBTAorY2FzZSAieCRhY19jdl9wcm9nX2NjX2M4OSIgaW4KKyAgeCkK
KyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9u
ZSBuZWVkZWQiID4mNQorJGFzX2VjaG8gIm5vbmUgbmVlZGVkIiA+JjY7IH0gOzsKKyAgeG5vKQor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1bnN1
cHBvcnRlZCIgPiY1CiskYXNfZWNobyAidW5zdXBwb3J0ZWQiID4mNjsgfSA7OworICAqKQorICAg
IENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19jODkiID4mNQorJGFzX2Vj
aG8gIiRhY19jdl9wcm9nX2NjX2M4OSIgPiY2OyB9IDs7Citlc2FjCitpZiB0ZXN0ICJ4JGFjX2N2
X3Byb2dfY2NfYzg5IiAhPSB4bm87IHRoZW4gOgorCitmaQorCithY19leHQ9YworYWNfY3BwPSck
Q1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25m
dGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENG
TEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19j
b21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBsbiAtcyB3b3JrcyIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICIgPiY2OyB9CitMTl9T
PSRhc19sbl9zCitpZiB0ZXN0ICIkTE5fUyIgPSAibG4gLXMiOyB0aGVuCisgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8g
InllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubywgdXNpbmcgJExOX1MiID4mNQorJGFzX2VjaG8gIm5vLCB1c2luZyAk
TE5fUyIgPiY2OyB9CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQorJGFz
X2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAi
ID4mNjsgfQorc2V0IHggJHtNQUtFLW1ha2V9CithY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2Vk
ICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKK2lmIGV2YWwgInRlc3QgXCJcJHthY19j
dl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQrc2V0fVwiIiA9IHNldDsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNF
T0YKK1NIRUxMID0gL2Jpbi9zaAorYWxsOgorCUBlY2hvICdAQEAlJSU9JChNQUtFKT1AQEAlJSUn
CitfQUNFT0YKKyMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcg
Li4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KK2Nhc2UgYCR7TUFLRS1tYWtlfSAtZiBjb25m
dGVzdC5tYWtlIDI+L2Rldi9udWxsYCBpbgorICAqQEBAJSUlPT8qPUBAQCUlJSopCisgICAgZXZh
bCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9eWVzOzsKKyAgKikKKyAgICBldmFsIGFj
X2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD1ubzs7Citlc2FjCitybSAtZiBjb25mdGVzdC5t
YWtlCitmaQoraWYgZXZhbCB0ZXN0IFwkYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0ID0g
eWVzOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisgIFNFVF9NQUtFPQorZWxzZQor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m
NQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyAgU0VUX01BS0U9Ik1BS0U9JHtNQUtFLW1ha2V9Igor
ZmkKKworIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dy
YW0gKGZhc3RlciksCisjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0
IGF2b2lkIHRoZSBicm9rZW4gb3IKKyMgaW5jb21wYXRpYmxlIHZlcnNpb25zOgorIyBTeXNWIC9l
dGMvaW5zdGFsbCwgL3Vzci9zYmluL2luc3RhbGwKKyMgU3VuT1MgL3Vzci9ldGMvaW5zdGFsbAor
IyBJUklYIC9zYmluL2luc3RhbGwKKyMgQUlYIC9iaW4vaW5zdGFsbAorIyBBbWlnYU9TIC9DL2lu
c3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2NzCisjIEFJWCA0
IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRob3V0IGEgLWcgZmxh
ZworIyBBRlMgL3Vzci9hZnN3cy9iaW4vaW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlz
dGVudCBhcmdzCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRo
ZSBub25leGlzdGVudCBncm91cCAic3RhZmYiCisjIE9TLzIncyBzeXN0ZW0gaW5zdGFsbCwgd2hp
Y2ggaGFzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgc2VtYW50aWMKKyMgLi9pbnN0YWxsLCB3aGlj
aCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgor
IyBSZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxlIGZp
bGVzLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwuLi4gIiA+JjY7IH0KK2lmIHRlc3QgLXogIiRJTlNU
QUxMIjsgdGhlbgoraWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIyBBY2Nv
dW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMu
CitjYXNlICRhc19kaXIvIGluICMoKAorICAuLyB8IC4vLyB8IC9bY0NdLyogfCBcCisgIC9ldGMv
KiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8q
IHwgXAorICA/OltcXC9db3MyW1xcL11pbnN0YWxsW1xcL10qIHwgPzpbXFwvXU9TMltcXC9dSU5T
VEFMTFtcXC9dKiB8IFwKKyAgL3Vzci91Y2IvKiApIDs7CisgICopCisgICAgIyBPU0YxIGFuZCBT
Q08gT0RUIDMuMCBoYXZlIHRoZWlyIG93biBuYW1lcyBmb3IgaW5zdGFsbC4KKyAgICAjIERvbid0
IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QK
KyAgICAjIGJ5IGRlZmF1bHQuCisgICAgZm9yIGFjX3Byb2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBp
bnN0YWxsOyBkbworICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4
dGVuc2lvbnM7IGRvCisJaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0
IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgor
CSAgaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBkc3Btc2cgIiRhc19k
aXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAjIEFJ
WCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCisJ
ICAgIDoKKwkgIGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBwd3Bs
dXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgor
CSAgICAjIHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMt
LWRvbid0IHVzZS4KKwkgICAgOgorCSAgZWxzZQorCSAgICBybSAtcmYgY29uZnRlc3Qub25lIGNv
bmZ0ZXN0LnR3byBjb25mdGVzdC5kaXIKKwkgICAgZWNobyBvbmUgPiBjb25mdGVzdC5vbmUKKwkg
ICAgZWNobyB0d28gPiBjb25mdGVzdC50d28KKwkgICAgbWtkaXIgY29uZnRlc3QuZGlyCisJICAg
IGlmICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAtYyBjb25mdGVzdC5vbmUgY29uZnRl
c3QudHdvICJgcHdkYC9jb25mdGVzdC5kaXIiICYmCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5v
bmUgJiYgdGVzdCAtcyBjb25mdGVzdC50d28gJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRp
ci9jb25mdGVzdC5vbmUgJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9jb25mdGVzdC50
d28KKwkgICAgdGhlbgorCSAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFzX2Rpci8kYWNfcHJv
ZyRhY19leGVjX2V4dCAtYyIKKwkgICAgICBicmVhayAzCisJICAgIGZpCisJICBmaQorCWZpCisg
ICAgICBkb25lCisgICAgZG9uZQorICAgIDs7Citlc2FjCisKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCitybSAtcmYgY29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byBjb25mdGVzdC5kaXIKKwor
ZmkKKyAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KKyAg
ICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKKyAgZWxzZQorICAgICMgQXMgYSBsYXN0IHJl
c29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlwdC4gIERvbid0IGNhY2hlIGEKKyAgICAjIHZh
bHVlIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3
aWxsCisgICAgIyBicmVhayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBk
aXJlY3RvcnkgaXMKKyAgICAjIHJlbW92ZWQsIG9yIGlmIHRoZSB2YWx1ZSBpcyBhIHJlbGF0aXZl
IG5hbWUuCisgICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAorICBmaQorZmkKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1CiskYXNf
ZWNobyAiJElOU1RBTEwiID4mNjsgfQorCisjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNo
IG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uCisjIEl0IHRoaW5rcyB0aGUgZmlyc3Qg
Y2xvc2UgYnJhY2UgZW5kcyB0aGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLgordGVzdCAteiAiJElO
U1RBTExfUFJPR1JBTSIgJiYgSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9JworCit0ZXN0IC16
ICIkSU5TVEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JworCit0ZXN0
IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0Jwor
CisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBlcmwiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHBlcmw7IGFjX3dvcmQ9JDIKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9wYXRoX1BFUkwrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRQRVJMIGluCisgIFtcXC9dKiB8ID86W1xcL10q
KQorICBhY19jdl9wYXRoX1BFUkw9IiRQRVJMIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ
QVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lG
UworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBp
biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9QRVJMPSIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19j
dl9wYXRoX1BFUkwiICYmIGFjX2N2X3BhdGhfUEVSTD0ibm8iCisgIDs7Citlc2FjCitmaQorUEVS
TD0kYWNfY3ZfcGF0aF9QRVJMCitpZiB0ZXN0IC1uICIkUEVSTCI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQRVJMIiA+JjUKKyRhc19l
Y2hvICIkUEVSTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKwor
CitpZiB0ZXN0IHgiJHtQRVJMfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9lcnJvciAkPyAi
VW5hYmxlIHRvIGZpbmQgcGVybCwgcGxlYXNlIGluc3RhbGwgcGVybCIgIiRMSU5FTk8iIDUKK2Zp
CisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImJyY3RsIiwgc28gaXQgY2FuIGJlIGEgcHJv
Z3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBicmN0bDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0
ZXN0ICIke2FjX2N2X3BhdGhfQlJDVEwrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRCUkNUTCBpbgorICBbXFwvXSogfCA/Oltc
XC9dKikKKyAgYWNfY3ZfcGF0aF9CUkNUTD0iJEJSQ1RMIiAjIExldCB0aGUgdXNlciBvdmVycmlk
ZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsg
SUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19z
YXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYg
IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9CUkNUTD0iJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16
ICIkYWNfY3ZfcGF0aF9CUkNUTCIgJiYgYWNfY3ZfcGF0aF9CUkNUTD0ibm8iCisgIDs7Citlc2Fj
CitmaQorQlJDVEw9JGFjX2N2X3BhdGhfQlJDVEwKK2lmIHRlc3QgLW4gIiRCUkNUTCI7IHRoZW4K
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCUkNU
TCIgPiY1CiskYXNfZWNobyAiJEJSQ1RMIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIg
PiY2OyB9CitmaQorCisKK2lmIHRlc3QgeCIke0JSQ1RMfSIgPT0geCJubyIKK3RoZW4KKyAgICBh
c19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgYnJjdGwsIHBsZWFzZSBpbnN0YWxsIGJyY3Rs
IiAiJExJTkVOTyIgNQorZmkKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaXAiLCBzbyBp
dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGlwOyBhY193b3Jk
PSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+
JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9JUCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJElQIGluCisgIFtcXC9dKiB8
ID86W1xcL10qKQorICBhY19jdl9wYXRoX0lQPSIkSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRl
IHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0lQPSIkYXNfZGlyLyRh
Y193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFr
IDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRh
Y19jdl9wYXRoX0lQIiAmJiBhY19jdl9wYXRoX0lQPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitJUD0k
YWNfY3ZfcGF0aF9JUAoraWYgdGVzdCAtbiAiJElQIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJElQIiA+JjUKKyRhc19lY2hvICIkSVAi
ID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4
IiR7SVB9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmlu
ZCBpcCwgcGxlYXNlIGluc3RhbGwgaXAiICIkTElORU5PIiA1CitmaQorIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICJiaXNvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgYmlzb247IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wYXRo
X0JJU09OK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
K2Vsc2UKKyAgY2FzZSAkQklTT04gaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3Bh
dGhfQklTT049IiRCSVNPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBh
IHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQklTT049IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9u
ZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQklT
T04iICYmIGFjX2N2X3BhdGhfQklTT049Im5vIgorICA7OworZXNhYworZmkKK0JJU09OPSRhY19j
dl9wYXRoX0JJU09OCitpZiB0ZXN0IC1uICIkQklTT04iOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQklTT04iID4mNQorJGFzX2VjaG8g
IiRCSVNPTiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitp
ZiB0ZXN0IHgiJHtCSVNPTn0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVu
YWJsZSB0byBmaW5kIGJpc29uLCBwbGVhc2UgaW5zdGFsbCBiaXNvbiIgIiRMSU5FTk8iIDUKK2Zp
CisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImZsZXgiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGZsZXg7IGFjX3dvcmQ9JDIKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9wYXRoX0ZMRVgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRGTEVYIGluCisgIFtcXC9dKiB8ID86W1xcL10q
KQorICBhY19jdl9wYXRoX0ZMRVg9IiRGTEVYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ
QVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lG
UworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBp
biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9GTEVYPSIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19j
dl9wYXRoX0ZMRVgiICYmIGFjX2N2X3BhdGhfRkxFWD0ibm8iCisgIDs7Citlc2FjCitmaQorRkxF
WD0kYWNfY3ZfcGF0aF9GTEVYCitpZiB0ZXN0IC1uICIkRkxFWCI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRGTEVYIiA+JjUKKyRhc19l
Y2hvICIkRkxFWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKwor
CitpZiB0ZXN0IHgiJHtGTEVYfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9lcnJvciAkPyAi
VW5hYmxlIHRvIGZpbmQgZmxleCwgcGxlYXNlIGluc3RhbGwgZmxleCIgIiRMSU5FTk8iIDUKK2Zp
CitpZiB0ZXN0ICJ4JHhhcGkiID0gInh5IjsgdGhlbiA6CisKKyAgICAjIEV4dHJhY3QgdGhlIGZp
cnN0IHdvcmQgb2YgImN1cmwtY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp
dGggYXJncy4KK3NldCBkdW1teSBjdXJsLWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIk
e2FjX2N2X3BhdGhfQ1VSTCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJENVUkwgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisg
IGFjX2N2X3BhdGhfQ1VSTD0iJENVUkwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0
IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf
U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg
IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn
ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0NVUkw9IiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBm
aQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Bh
dGhfQ1VSTCIgJiYgYWNfY3ZfcGF0aF9DVVJMPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitDVVJMPSRh
Y19jdl9wYXRoX0NVUkwKK2lmIHRlc3QgLW4gIiRDVVJMIjsgdGhlbgorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENVUkwiID4mNQorJGFzX2VjaG8g
IiRDVVJMIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lm
IHRlc3QgeCIke0NVUkx9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFi
bGUgdG8gZmluZCBjdXJsLWNvbmZpZywgcGxlYXNlIGluc3RhbGwgY3VybC1jb25maWciICIkTElO
RU5PIiA1CitmaQorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieG1sMi1jb25maWci
LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHhtbDIt
Y29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9YTUwrc2V0fSIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRY
TUwgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfWE1MPSIkWE1MIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAg
YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFU
SAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9
LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk
bworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190
ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3Zf
cGF0aF9YTUw9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVf
SUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfWE1MIiAmJiBhY19jdl9wYXRoX1hNTD0ibm8i
CisgIDs7Citlc2FjCitmaQorWE1MPSRhY19jdl9wYXRoX1hNTAoraWYgdGVzdCAtbiAiJFhNTCI7
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRYTUwiID4mNQorJGFzX2VjaG8gIiRYTUwiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5v
IiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4IiR7WE1MfSIgPT0geCJubyIKK3RoZW4KKyAgICBh
c19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgeG1sMi1jb25maWcsIHBsZWFzZSBpbnN0YWxs
IHhtbDItY29uZmlnIiAiJExJTkVOTyIgNQorZmkKKworZmkKK2lmIHRlc3QgIngkb2NhbWx0b29s
cyIgPSAieHkiOyB0aGVuIDoKKworICAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxjCisgIGlmIHRl
c3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk
IG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2FtbGM7IGFjX3dvcmQ9
JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m
NjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX09DQU1MQytzZXR9IiA9IHNldDsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTEMi
OyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxDPSIkT0NBTUxDIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxDPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1s
YyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisg
IGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitPQ0FNTEM9JGFjX2N2X3Byb2dfT0NB
TUxDCitpZiB0ZXN0IC1uICIkT0NBTUxDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9DQU1MQyIgPiY1CiskYXNfZWNobyAiJE9DQU1M
QyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYg
dGVzdCAteiAiJGFjX2N2X3Byb2dfT0NBTUxDIjsgdGhlbgorICBhY19jdF9PQ0FNTEM9JE9DQU1M
QworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sYyIsIHNvIGl0IGNhbiBiZSBh
IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxjOyBhY193b3JkPSQyCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf
d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0K
K2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEMrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3Rf
T0NBTUxDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1MQz0iJGFjX2N0X09DQU1MQyIg
IyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZT
OyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFz
X3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4
ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAt
ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X09DQU1M
Qz0ib2NhbWxjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv
dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkK
K2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1MQz0k
YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEMKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEMiOyB0aGVu
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf
Y3RfT0NBTUxDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NBTUxDIiA+JjY7IH0KK2Vsc2UKKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK
KyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxDIiA9
IHg7IHRoZW4KKyAgICBPQ0FNTEM9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGls
aW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdp
dGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNy
b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xf
d2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MQz0kYWNfY3RfT0NBTUxDCisgIGZpCitlbHNl
CisgIE9DQU1MQz0iJGFjX2N2X3Byb2dfT0NBTUxDIgorZmkKKworCisgIGlmIHRlc3QgIiRPQ0FN
TEMiICE9ICJubyI7IHRoZW4KKyAgICAgT0NBTUxWRVJTSU9OPWAkT0NBTUxDIC12IHwgc2VkIC1u
IC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCdgCisgICAgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBPQ2FtbCB2ZXJzaW9uIGlzICRPQ0FNTFZF
UlNJT04iID4mNQorJGFzX2VjaG8gIk9DYW1sIHZlcnNpb24gaXMgJE9DQU1MVkVSU0lPTiIgPiY2
OyB9CisgICAgICMgSWYgT0NBTUxMSUIgaXMgc2V0LCB1c2UgaXQKKyAgICAgaWYgdGVzdCAiJE9D
QU1MTElCIiA9ICIiOyB0aGVuCisgICAgICAgIE9DQU1MTElCPWAkT0NBTUxDIC13aGVyZSAyPi9k
ZXYvbnVsbCB8fCAkT0NBTUxDIC12fHRhaWwgLTF8Y3V0IC1kICcgJyAtZiA0YAorICAgICBlbHNl
CisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBPQ0FNTExJQiBwcmV2aW91c2x5IHNldDsgcHJlc2VydmluZyBpdC4iID4mNQorJGFzX2VjaG8g
Ik9DQU1MTElCIHByZXZpb3VzbHkgc2V0OyBwcmVzZXJ2aW5nIGl0LiIgPiY2OyB9CisgICAgIGZp
CisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBP
Q2FtbCBsaWJyYXJ5IHBhdGggaXMgJE9DQU1MTElCIiA+JjUKKyRhc19lY2hvICJPQ2FtbCBsaWJy
YXJ5IHBhdGggaXMgJE9DQU1MTElCIiA+JjY7IH0KKworCisKKworICAgICAjIGNoZWNraW5nIGZv
ciBvY2FtbG9wdAorICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbG9wdCIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29s
X3ByZWZpeH1vY2FtbG9wdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0NB
TUxPUFQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor
ZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxP
UFQ9IiRPQ0FNTE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCith
c19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRI
CitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0u
CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv
CisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rl
c3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9w
cm9nX09DQU1MT1BUPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0IgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCitmaQorZmkKK09DQU1MT1BUPSRhY19jdl9wcm9nX09DQU1MT1BUCitpZiB0ZXN0IC1u
ICIkT0NBTUxPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkT0NBTUxPUFQiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE9QVCIgPiY2OyB9
CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAi
JGFjX2N2X3Byb2dfT0NBTUxPUFQiOyB0aGVuCisgIGFjX2N0X09DQU1MT1BUPSRPQ0FNTE9QVAor
ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sb3B0Iiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbG9wdDsgYWNfd29yZD0kMgor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj
X3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9
CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFQrc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNf
Y3RfT0NBTUxPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFQ9IiRhY19jdF9P
Q0FNTE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbwor
ICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAg
Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlm
IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2Fj
X2N0X09DQU1MT1BUPSJvY2FtbG9wdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCith
Y19jdF9PQ0FNTE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVAoraWYgdGVzdCAtbiAiJGFj
X2N0X09DQU1MT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MT1BUIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NB
TUxPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYg
dGVzdCAieCRhY19jdF9PQ0FNTE9QVCIgPSB4OyB0aGVuCisgICAgT0NBTUxPUFQ9Im5vIgorICBl
bHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hv
ICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv
c3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1M
T1BUPSRhY19jdF9PQ0FNTE9QVAorICBmaQorZWxzZQorICBPQ0FNTE9QVD0iJGFjX2N2X3Byb2df
T0NBTUxPUFQiCitmaQorCisgICAgIE9DQU1MQkVTVD1ieXRlCisgICAgIGlmIHRlc3QgIiRPQ0FN
TE9QVCIgPSAibm8iOyB0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiBDYW5ub3QgZmluZCBvY2FtbG9wdDsgYnl0ZWNvZGUgY29tcGlsYXRpb24g
b25seS4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ2Fubm90IGZpbmQgb2NhbWxv
cHQ7IGJ5dGVjb2RlIGNvbXBpbGF0aW9uIG9ubHkuIiA+JjI7fQorICAgICBlbHNlCisJVE1QVkVS
U0lPTj1gJE9DQU1MT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8
cCcgYAorCWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJ
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB2ZXJz
aW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdCBkaXNjYXJkZWQuIiA+JjUKKyRhc19l
Y2hvICJ2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdCBkaXNjYXJkZWQuIiA+
JjY7IH0KKwkgICAgT0NBTUxPUFQ9bm8KKwllbHNlCisJICAgIE9DQU1MQkVTVD1vcHQKKwlmaQor
ICAgICBmaQorCisKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbGMub3B0CisgICAgIGlmIHRl
c3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk
IG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sYy5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjLm9wdDsg
YWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk
Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0NBTUxDRE9UT1BUK3NldH0iID0g
c2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAtbiAiJE9DQU1MQ0RPVE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQ9IiRP
Q0FNTENET1RPUFQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAor
ZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0
X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJv
Z19PQ0FNTENET1RPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjLm9wdCIKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNf
c2F2ZV9JRlMKKworZmkKK2ZpCitPQ0FNTENET1RPUFQ9JGFjX2N2X3Byb2dfT0NBTUxDRE9UT1BU
CitpZiB0ZXN0IC1uICIkT0NBTUxDRE9UT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9DQU1MQ0RPVE9QVCIgPiY1CiskYXNfZWNo
byAiJE9DQU1MQ0RPVE9QVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQor
ZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfT0NBTUxDRE9UT1BUIjsgdGhlbgor
ICBhY19jdF9PQ0FNTENET1RPUFQ9JE9DQU1MQ0RPVE9QVAorICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgIm9jYW1sYy5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh
cmdzLgorc2V0IGR1bW15IG9jYW1sYy5vcHQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19j
dl9wcm9nX2FjX2N0X09DQU1MQ0RPVE9QVCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTENET1RP
UFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxDRE9UT1BUPSIkYWNfY3RfT0NBTUxD
RE9UT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNf
Y3RfT0NBTUxDRE9UT1BUPSJvY2FtbGMub3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQor
ICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQor
ZmkKK2FjX2N0X09DQU1MQ0RPVE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTENET1RPUFQKK2lm
IHRlc3QgLW4gIiRhY19jdF9PQ0FNTENET1RPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxDRE9UT1BUIiA+JjUK
KyRhc19lY2hvICIkYWNfY3RfT0NBTUxDRE9UT1BUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hv
ICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxDRE9UT1BUIiA9IHg7
IHRoZW4KKyAgICBPQ0FNTENET1RPUFQ9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29t
cGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk
IHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5n
IGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rv
b2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MQ0RPVE9QVD0kYWNfY3RfT0NBTUxDRE9U
T1BUCisgIGZpCitlbHNlCisgIE9DQU1MQ0RPVE9QVD0iJGFjX2N2X3Byb2dfT0NBTUxDRE9UT1BU
IgorZmkKKworICAgICBpZiB0ZXN0ICIkT0NBTUxDRE9UT1BUIiAhPSAibm8iOyB0aGVuCisJVE1Q
VkVSU0lPTj1gJE9DQU1MQ0RPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4q
XCkkfFwxfHAnIGAKKwlpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsg
dGhlbgorCSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogdmVyc2lvbnMgZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxjLm9wdCBkaXNjYXJkZWQuIiA+
JjUKKyRhc19lY2hvICJ2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbGMub3B0IGRp
c2NhcmRlZC4iID4mNjsgfQorCWVsc2UKKwkgICAgT0NBTUxDPSRPQ0FNTENET1RPUFQKKwlmaQor
ICAgICBmaQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0Lm9wdAorICAgICBpZiB0ZXN0
ICIkT0NBTUxPUFQiICE9ICJubyIgOyB0aGVuCisJaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4
IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9
b2NhbWxvcHQub3B0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3Nl
dCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0Lm9wdDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0
ZXN0ICIke2FjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxPUFRE
T1RPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQ9IiRPQ0FNTE9QVERPVE9Q
VCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFj
X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVz
dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1MT1BU
RE9UT1BUPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0Lm9wdCIKKyAgICAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9J
RlMKKworZmkKK2ZpCitPQ0FNTE9QVERPVE9QVD0kYWNfY3ZfcHJvZ19PQ0FNTE9QVERPVE9QVAor
aWYgdGVzdCAtbiAiJE9DQU1MT1BURE9UT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9DQU1MT1BURE9UT1BUIiA+JjUKKyRhc19l
Y2hvICIkT0NBTUxPUFRET1RPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX09DQU1MT1BURE9UT1BUIjsg
dGhlbgorICBhY19jdF9PQ0FNTE9QVERPVE9QVD0kT0NBTUxPUFRET1RPUFQKKyAgIyBFeHRyYWN0
IHRoZSBmaXJzdCB3b3JkIG9mICJvY2FtbG9wdC5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sb3B0Lm9wdDsgYWNfd29yZD0kMgoreyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dv
cmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Citp
ZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFRET1RPUFQrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
YWNfY3RfT0NBTUxPUFRET1RPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFRE
T1RPUFQ9IiRhY19jdF9PQ0FNTE9QVERPVE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl
IHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3Ig
YXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19k
aXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl
X2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo
ZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X09DQU1MT1BURE9UT1BUPSJvY2FtbG9wdC5vcHQiCisg
ICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25l
CitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfT0NBTUxPUFRET1RPUFQ9JGFjX2N2
X3Byb2dfYWNfY3RfT0NBTUxPUFRET1RPUFQKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE9QVERP
VE9QVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdF9PQ0FNTE9QVERPVE9QVCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09DQU1M
T1BURE9UT1BUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisg
IGlmIHRlc3QgIngkYWNfY3RfT0NBTUxPUFRET1RPUFQiID0geDsgdGhlbgorICAgIE9DQU1MT1BU
RE9UT1BUPSJubyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93
YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxl
dCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsK
K2VzYWMKKyAgICBPQ0FNTE9QVERPVE9QVD0kYWNfY3RfT0NBTUxPUFRET1RPUFQKKyAgZmkKK2Vs
c2UKKyAgT0NBTUxPUFRET1RPUFQ9IiRhY19jdl9wcm9nX09DQU1MT1BURE9UT1BUIgorZmkKKwor
CWlmIHRlc3QgIiRPQ0FNTE9QVERPVE9QVCIgIT0gIm5vIjsgdGhlbgorCSAgIFRNUFZFUlNJT049
YCRPQ0FNTE9QVERPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwx
fHAnIGAKKwkgICBpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsgdGhl
bgorCSAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiB2ZXJzaW9uIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0Lm9wdCBkaXNjYXJkZWQuIiA+
JjUKKyRhc19lY2hvICJ2ZXJzaW9uIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0Lm9wdCBk
aXNjYXJkZWQuIiA+JjY7IH0KKwkgICBlbHNlCisJICAgICAgT0NBTUxPUFQ9JE9DQU1MT1BURE9U
T1BUCisJICAgZmkKKyAgICAgICAgZmkKKyAgICAgZmkKKworCisgIGZpCisKKworCisgICMgY2hl
Y2tpbmcgZm9yIG9jYW1sIHRvcGxldmVsCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7
IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9j
YW1sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAk
e2FjX3Rvb2xfcHJlZml4fW9jYW1sOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJv
Z19PQ0FNTCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTD0i
JE9DQU1MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NB
TUw9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWwiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Cisg
ICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitm
aQorT0NBTUw9JGFjX2N2X3Byb2dfT0NBTUwKK2lmIHRlc3QgLW4gIiRPQ0FNTCI7IHRoZW4KKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FNTCIg
PiY1CiskYXNfZWNobyAiJE9DQU1MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTCI7IHRoZW4KKyAg
YWNfY3RfT0NBTUw9JE9DQU1MCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWwi
LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1s
OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dv
cmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTCtzZXR9IiA9
IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRl
c3QgLW4gIiRhY19jdF9PQ0FNTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTD0iJGFj
X2N0X09DQU1MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3Nh
dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2Rv
CisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAg
ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAg
aWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94
ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2df
YWNfY3RfT0NBTUw9Im9jYW1sIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFr
IDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0
X09DQU1MPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MCitpZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUwi
OyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkYWNfY3RfT0NBTUwiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTCIgPiY2OyB9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1M
IiA9IHg7IHRoZW4KKyAgICBPQ0FNTD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21w
aWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg
d2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9v
bF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUw9JGFjX2N0X09DQU1MCisgIGZpCitlbHNl
CisgIE9DQU1MPSIkYWNfY3ZfcHJvZ19PQ0FNTCIKK2ZpCisKKworICAjIGNoZWNraW5nIGZvciBv
Y2FtbGRlcAorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFj
dCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbGRlcCIsIHNvIGl0IGNh
biBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZp
eH1vY2FtbGRlcDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0NBTUxERVAr
c2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQor
ICBpZiB0ZXN0IC1uICIkT0NBTUxERVAiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxERVA9IiRP
Q0FNTERFUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbwor
ICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAg
Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlm
IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09D
QU1MREVQPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZGVwIgorICAgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
ID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUwor
CitmaQorZmkKK09DQU1MREVQPSRhY19jdl9wcm9nX09DQU1MREVQCitpZiB0ZXN0IC1uICIkT0NB
TUxERVAiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkT0NBTUxERVAiID4mNQorJGFzX2VjaG8gIiRPQ0FNTERFUCIgPiY2OyB9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2
X3Byb2dfT0NBTUxERVAiOyB0aGVuCisgIGFjX2N0X09DQU1MREVQPSRPQ0FNTERFUAorICAjIEV4
dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sZGVwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbGRlcDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0
ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfT0NB
TUxERVAiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVA9IiRhY19jdF9PQ0FNTERF
UCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFj
X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVz
dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X09D
QU1MREVQPSJvY2FtbGRlcCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAy
CisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9P
Q0FNTERFUD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERFUAoraWYgdGVzdCAtbiAiJGFjX2N0X09D
QU1MREVQIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX2N0X09DQU1MREVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NBTUxERVAi
ID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAi
eCRhY19jdF9PQ0FNTERFUCIgPSB4OyB0aGVuCisgICAgT0NBTUxERVA9Im5vIgorICBlbHNlCisg
ICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3Mg
dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNf
bWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJp
cGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MREVQPSRh
Y19jdF9PQ0FNTERFUAorICBmaQorZWxzZQorICBPQ0FNTERFUD0iJGFjX2N2X3Byb2dfT0NBTUxE
RVAiCitmaQorCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxta3RvcAorICBpZiB0ZXN0IC1uICIk
YWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHth
Y190b29sX3ByZWZpeH1vY2FtbG1rdG9wIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp
dGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sbWt0b3A7IGFjX3dvcmQ9
JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m
NjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX09DQU1MTUtUT1Arc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NB
TUxNS1RPUCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTE1LVE9QPSIkT0NBTUxNS1RPUCIgIyBM
ZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1MTUtUT1A9IiR7
YWNfdG9vbF9wcmVmaXh9b2NhbWxta3RvcCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2Zp
CitPQ0FNTE1LVE9QPSRhY19jdl9wcm9nX09DQU1MTUtUT1AKK2lmIHRlc3QgLW4gIiRPQ0FNTE1L
VE9QIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJE9DQU1MTUtUT1AiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE1LVE9QIiA+JjY7IH0KK2Vs
c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNf
Y3ZfcHJvZ19PQ0FNTE1LVE9QIjsgdGhlbgorICBhY19jdF9PQ0FNTE1LVE9QPSRPQ0FNTE1LVE9Q
CisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxta3RvcCIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxta3RvcDsgYWNfd29y
ZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg
PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUCtzZXR9IiA9IHNl
dDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3Qg
LW4gIiRhY19jdF9PQ0FNTE1LVE9QIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1MTUtU
T1A9IiRhY19jdF9PQ0FNTE1LVE9QIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K
K2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIg
aW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg
YXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z
aW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm
JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAg
IGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUD0ib2NhbWxta3RvcCIKKyAgICAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2
ZV9JRlMKKworZmkKK2ZpCithY19jdF9PQ0FNTE1LVE9QPSRhY19jdl9wcm9nX2FjX2N0X09DQU1M
TUtUT1AKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE1LVE9QIjsgdGhlbgorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MTUtUT1Ai
ID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTE1LVE9QIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19l
Y2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxNS1RPUCIgPSB4
OyB0aGVuCisgICAgT0NBTUxNS1RPUD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21w
aWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg
d2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9v
bF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxNS1RPUD0kYWNfY3RfT0NBTUxNS1RPUAor
ICBmaQorZWxzZQorICBPQ0FNTE1LVE9QPSIkYWNfY3ZfcHJvZ19PQ0FNTE1LVE9QIgorZmkKKwor
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sbWtsaWIKKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJl
Zml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVm
aXh9b2NhbWxta2xpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitz
ZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2FtbG1rbGliOyBhY193b3JkPSQyCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfcHJvZ19PQ0FNTE1LTElCK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE9DQU1MTUtMSUIiOyB0
aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxNS0xJQj0iJE9DQU1MTUtMSUIiICMgTGV0IHRoZSB1c2Vy
IG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF
UEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0
ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAk
YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19PQ0FNTE1LTElCPSIke2FjX3Rvb2xfcHJl
Zml4fW9jYW1sbWtsaWIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgor
ICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorT0NBTUxNS0xJ
Qj0kYWNfY3ZfcHJvZ19PQ0FNTE1LTElCCitpZiB0ZXN0IC1uICIkT0NBTUxNS0xJQiI7IHRoZW4K
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FN
TE1LTElCIiA+JjUKKyRhc19lY2hvICIkT0NBTUxNS0xJQiIgPiY2OyB9CitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf
ZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfT0NB
TUxNS0xJQiI7IHRoZW4KKyAgYWNfY3RfT0NBTUxNS0xJQj0kT0NBTUxNS0xJQgorICAjIEV4dHJh
Y3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sbWtsaWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sbWtsaWI7IGFjX3dvcmQ9JDIKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYg
dGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X09DQU1MTUtMSUIrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3Rf
T0NBTUxNS0xJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LTElCPSIkYWNfY3Rf
T0NBTUxNS0xJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9n
X2FjX2N0X09DQU1MTUtMSUI9Im9jYW1sbWtsaWIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1
CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2Zp
CitmaQorYWNfY3RfT0NBTUxNS0xJQj0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LTElCCitpZiB0
ZXN0IC1uICIkYWNfY3RfT0NBTUxNS0xJQiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTE1LTElCIiA+JjUKKyRhc19l
Y2hvICIkYWNfY3RfT0NBTUxNS0xJQiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4m
NjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1MTUtMSUIiID0geDsgdGhlbgorICAg
IE9DQU1MTUtMSUI9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190
b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0
cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xz
IG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXll
cyA7OworZXNhYworICAgIE9DQU1MTUtMSUI9JGFjX2N0X09DQU1MTUtMSUIKKyAgZmkKK2Vsc2UK
KyAgT0NBTUxNS0xJQj0iJGFjX2N2X3Byb2dfT0NBTUxNS0xJQiIKK2ZpCisKKworICAjIGNoZWNr
aW5nIGZvciBvY2FtbGRvYworICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisg
ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbGRvYyIs
IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190
b29sX3ByZWZpeH1vY2FtbGRvYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2df
T0NBTUxET0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxET0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NB
TUxET0M9IiRPQ0FNTERPQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNl
Cithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ
QVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp
cj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7
IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz
X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19j
dl9wcm9nX09DQU1MRE9DPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZG9jIgorICAgICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf
ZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19z
YXZlX0lGUworCitmaQorZmkKK09DQU1MRE9DPSRhY19jdl9wcm9nX09DQU1MRE9DCitpZiB0ZXN0
IC1uICIkT0NBTUxET0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkT0NBTUxET0MiID4mNQorJGFzX2VjaG8gIiRPQ0FNTERPQyIgPiY2
OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAt
eiAiJGFjX2N2X3Byb2dfT0NBTUxET0MiOyB0aGVuCisgIGFjX2N0X09DQU1MRE9DPSRPQ0FNTERP
QworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sZG9jIiwgc28gaXQgY2FuIGJl
IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbGRvYzsgYWNfd29yZD0k
MgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxET0Mrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
YWNfY3RfT0NBTUxET0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxET0M9IiRhY19j
dF9PQ0FNTERPQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9n
X2FjX2N0X09DQU1MRE9DPSJvY2FtbGRvYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2Zp
CithY19jdF9PQ0FNTERPQz0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERPQworaWYgdGVzdCAtbiAi
JGFjX2N0X09DQU1MRE9DIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MRE9DIiA+JjUKKyRhc19lY2hvICIkYWNfY3Rf
T0NBTUxET0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAg
aWYgdGVzdCAieCRhY19jdF9PQ0FNTERPQyIgPSB4OyB0aGVuCisgICAgT0NBTUxET0M9Im5vIgor
ICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVz
OikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNp
bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19l
Y2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRo
IGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9D
QU1MRE9DPSRhY19jdF9PQ0FNTERPQworICBmaQorZWxzZQorICBPQ0FNTERPQz0iJGFjX2N2X3By
b2dfT0NBTUxET0MiCitmaQorCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxidWlsZAorICBpZiB0
ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29y
ZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbGJ1aWxkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sYnVpbGQ7
IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y
ZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX09DQU1MQlVJTEQrc2V0fSIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0
IC1uICIkT0NBTUxCVUlMRCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTEJVSUxEPSIkT0NBTUxC
VUlMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ
RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9y
IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsg
dGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1M
QlVJTEQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxidWlsZCIKKyAgICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMK
KworZmkKK2ZpCitPQ0FNTEJVSUxEPSRhY19jdl9wcm9nX09DQU1MQlVJTEQKK2lmIHRlc3QgLW4g
IiRPQ0FNTEJVSUxEIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJE9DQU1MQlVJTEQiID4mNQorJGFzX2VjaG8gIiRPQ0FNTEJVSUxEIiA+
JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0
IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTEJVSUxEIjsgdGhlbgorICBhY19jdF9PQ0FNTEJVSUxEPSRP
Q0FNTEJVSUxECisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxidWlsZCIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxidWls
ZDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193
b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRCtz
ZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEJVSUxEIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0
X09DQU1MQlVJTEQ9IiRhY19jdF9PQ0FNTEJVSUxEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0
aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2Zv
ciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFz
X2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi
bGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsg
dGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRD0ib2NhbWxidWlsZCIKKyAgICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lG
Uz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9PQ0FNTEJVSUxEPSRhY19jdl9wcm9nX2Fj
X2N0X09DQU1MQlVJTEQKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEJVSUxEIjsgdGhlbgorICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09D
QU1MQlVJTEQiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTEJVSUxEIiA+JjY7IH0KK2Vsc2UK
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+
JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxC
VUlMRCIgPSB4OyB0aGVuCisgICAgT0NBTUxCVUlMRD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRj
cm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7
fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxCVUlMRD0kYWNfY3RfT0NB
TUxCVUlMRAorICBmaQorZWxzZQorICBPQ0FNTEJVSUxEPSIkYWNfY3ZfcHJvZ19PQ0FNTEJVSUxE
IgorZmkKKworCisgICAgaWYgdGVzdCAieCRPQ0FNTEMiID0gInhubyI7IHRoZW4gOgorCisgICAg
ICAgIGlmIHRlc3QgIngkZW5hYmxlX29jYW1sdG9vbHMiID0gInh5ZXMiOyB0aGVuIDoKKworICAg
ICAgICAgICAgYXNfZm5fZXJyb3IgJD8gIk9jYW1sIHRvb2xzIGVuYWJsZWQsIGJ1dCB1bmFibGUg
dG8gZmluZCBPY2FtbCIgIiRMSU5FTk8iIDUKK2ZpCisgICAgICAgIG9jYW1sdG9vbHM9Im4iCisK
K2ZpCisKK2ZpCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImJhc2giLCBzbyBpdCBjYW4g
YmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGJhc2g7IGFjX3dvcmQ9JDIK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh
Y193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg
fQoraWYgdGVzdCAiJHthY19jdl9wYXRoX0JBU0grc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRCQVNIIGluCisgIFtcXC9dKiB8
ID86W1xcL10qKQorICBhY19jdl9wYXRoX0JBU0g9IiRCQVNIIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9CQVNIPSIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAg
IGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3Qg
LXogIiRhY19jdl9wYXRoX0JBU0giICYmIGFjX2N2X3BhdGhfQkFTSD0ibm8iCisgIDs7Citlc2Fj
CitmaQorQkFTSD0kYWNfY3ZfcGF0aF9CQVNICitpZiB0ZXN0IC1uICIkQkFTSCI7IHRoZW4KKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCQVNIIiA+
JjUKKyRhc19lY2hvICIkQkFTSCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsg
fQorZmkKKworCitpZiB0ZXN0IHgiJHtCQVNIfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9l
cnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgYmFzaCwgcGxlYXNlIGluc3RhbGwgYmFzaCIgIiRMSU5F
Tk8iIDUKK2ZpCitpZiB0ZXN0ICJ4JHB5dGhvbnRvb2xzIiA9ICJ4eSI7IHRoZW4gOgorCisgICAg
aWYgZWNobyAiJFBZVEhPTiIgfCBncmVwIC1xICJeLyI7IHRoZW4gOgorCisgICAgICAgIFBZVEhP
TlBBVEg9JFBZVEhPTgorICAgICAgICBQWVRIT049YGJhc2VuYW1lICRQWVRIT05QQVRIYAorCitl
bGlmIHRlc3QgLXogIiRQWVRIT04iOyB0aGVuIDoKKyAgUFlUSE9OPSJweXRob24iCitlbHNlCisg
IGFzX2ZuX2Vycm9yICQ/ICJQWVRIT04gc3BlY2lmaWVkLCBidXQgaXMgbm90IGFuIGFic29sdXRl
IHBhdGgiICIkTElORU5PIiA1CitmaQorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi
JFBZVEhPTiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVt
bXkgJFBZVEhPTjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfUFlUSE9OUEFU
SCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGNhc2UgJFBZVEhPTlBBVEggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3Bh
dGhfUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0
ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB
VEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZT
CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu
ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1BZVEhPTlBBVEg9IiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAi
JGFjX2N2X3BhdGhfUFlUSE9OUEFUSCIgJiYgYWNfY3ZfcGF0aF9QWVRIT05QQVRIPSJubyIKKyAg
OzsKK2VzYWMKK2ZpCitQWVRIT05QQVRIPSRhY19jdl9wYXRoX1BZVEhPTlBBVEgKK2lmIHRlc3Qg
LW4gIiRQWVRIT05QQVRIIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJFBZVEhPTlBBVEgiID4mNQorJGFzX2VjaG8gIiRQWVRIT05QQVRI
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3Qg
eCIke1BZVEhPTlBBVEh9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFi
bGUgdG8gZmluZCAkUFlUSE9OLCBwbGVhc2UgaW5zdGFsbCAkUFlUSE9OIiAiJExJTkVOTyIgNQor
ZmkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBweXRob24gdmVyc2lvbiA+PSAyLjMgIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBweXRob24gdmVyc2lvbiA+PSAyLjMgLi4uICIgPiY2OyB9CitgJFBZVEhPTiAtYyAnaW1wb3J0
IHN5czsgZXhpdChldmFsKCJzeXMudmVyc2lvbl9pbmZvIDwgKDIsIDMpIikpJ2AKK2lmIHRlc3Qg
IiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBweXRob25fdmVyc2lvbj1gJFBZVEhPTiAtViAyPiYxYAor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICAgIGFzX2ZuX2Vycm9yICQ/ICIkcHl0aG9uX3Zl
cnNpb24gaXMgdG9vIG9sZCwgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9uIGlzIDIuMyIgIiRMSU5F
Tk8iIDUKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKyAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBweXRob24geG1s
LmRvbS5taW5pZG9tIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24geG1sLmRv
bS5taW5pZG9tLi4uICIgPiY2OyB9CitgJFBZVEhPTiAtYyAnaW1wb3J0IHhtbC5kb20ubWluaWRv
bSdgCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9
CisgICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kIHhtbC5kb20ubWluaWRvbSBtb2R1
bGUiICIkTElORU5PIiA1CitlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCisg
ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
cHl0aG9uIGRldmVsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24gZGV2ZWwu
Li4gIiA+JjY7IH0KKworYCRQWVRIT04gLWMgJworaW1wb3J0IG9zLnBhdGgsIHN5cworZm9yIHAg
aW4gc3lzLnBhdGg6CisgICAgaWYgb3MucGF0aC5leGlzdHMocCArICIvY29uZmlnL01ha2VmaWxl
Iik6CisgICAgICAgIHN5cy5leGl0KDApCitzeXMuZXhpdCgxKQorJyA+IC9kZXYvbnVsbCAyPiYx
YAorCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9
CisgICAgYXNfZm5fZXJyb3IgJD8gIlB5dGhvbiBkZXZlbCBwYWNrYWdlIG5vdCBmb3VuZCIgIiRM
SU5FTk8iIDUKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworZmkKKyMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieGdldHRleHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHhnZXR0ZXh0OyBhY193b3JkPSQyCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y
ZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lm
IHRlc3QgIiR7YWNfY3ZfcGF0aF9YR0VUVEVYVCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFhHRVRURVhUIGluCisgIFtcXC9d
KiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1hHRVRURVhUPSIkWEdFVFRFWFQiICMgTGV0IHRo
ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRo
X1hHRVRURVhUPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1hHRVRURVhUIiAmJiBhY19jdl9wYXRoX1hH
RVRURVhUPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitYR0VUVEVYVD0kYWNfY3ZfcGF0aF9YR0VUVEVY
VAoraWYgdGVzdCAtbiAiJFhHRVRURVhUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFhHRVRURVhUIiA+JjUKKyRhc19lY2hvICIkWEdF
VFRFWFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYg
dGVzdCB4IiR7WEdFVFRFWFR9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJV
bmFibGUgdG8gZmluZCB4Z2V0dGV4dCwgcGxlYXNlIGluc3RhbGwgeGdldHRleHQiICIkTElORU5P
IiA1CitmaQoraWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxpbnV4LWdudSIKK3RoZW4KKyAgICAj
IEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInVkZXZhZG0iLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHVkZXZhZG07IGFjX3dvcmQ9JDIKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYg
dGVzdCAiJHthY19jdl9wYXRoX1VERVZBRE0rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRVREVWQURNIGluCisgIFtcXC9dKiB8
ID86W1xcL10qKQorICBhY19jdl9wYXRoX1VERVZBRE09IiRVREVWQURNIiAjIExldCB0aGUgdXNl
ciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9J
RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAg
SUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZv
ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7
IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9VREVW
QURNPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
ID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUwor
CisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1VERVZBRE0iICYmIGFjX2N2X3BhdGhfVURFVkFETT0i
bm8iCisgIDs7Citlc2FjCitmaQorVURFVkFETT0kYWNfY3ZfcGF0aF9VREVWQURNCitpZiB0ZXN0
IC1uICIkVURFVkFETSI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRVREVWQURNIiA+JjUKKyRhc19lY2hvICIkVURFVkFETSIgPiY2OyB9
CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCB4IiR7
VURFVkFETX0iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgInVkZXZpbmZvIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSB1ZGV2aW5mbzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Bh
dGhfVURFVklORk8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBjYXNlICRVREVWSU5GTyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAg
YWNfY3ZfcGF0aF9VREVWSU5GTz0iJFVERVZJTkZPIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0
aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZl
X0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4
dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9VREVWSU5GTz0iJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16
ICIkYWNfY3ZfcGF0aF9VREVWSU5GTyIgJiYgYWNfY3ZfcGF0aF9VREVWSU5GTz0ibm8iCisgIDs7
Citlc2FjCitmaQorVURFVklORk89JGFjX2N2X3BhdGhfVURFVklORk8KK2lmIHRlc3QgLW4gIiRV
REVWSU5GTyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRVREVWSU5GTyIgPiY1CiskYXNfZWNobyAiJFVERVZJTkZPIiA+JjY7IH0KK2Vs
c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICAgICAgaWYgdGVzdCB4IiR7
VURFVklORk99IiA9PSB4Im5vIgorICAgICAgICB0aGVuCisgICAgICAgICAgICBhc19mbl9lcnJv
ciAkPyAiVW5hYmxlIHRvIGZpbmQgdWRldmFkbSBvciB1ZGV2aW5mbywgcGxlYXNlIGluc3RhbGwg
dWRldiIgIiRMSU5FTk8iIDUKKyAgICAgICAgZmkKKyAgICAgICAgdWRldnZlcj1gJHtVREVWSU5G
T30gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKKyAgICBlbHNlCisgICAgICAgIHVkZXZ2ZXI9YCR7
VURFVkFETX0gaW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGZpCisgICAgaWYgdGVz
dCAke3VkZXZ2ZXJ9IC1sdCA1OQorICAgIHRoZW4KKyAgICAgICAgIyBFeHRyYWN0IHRoZSBmaXJz
dCB3b3JkIG9mICJob3RwbHVnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSBob3RwbHVnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0
aF9IT1RQTFVHK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgY2FzZSAkSE9UUExVRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNf
Y3ZfcGF0aF9IT1RQTFVHPSIkSE9UUExVRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRl
c3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFU
SF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMK
KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4g
JycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGly
LyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfSE9UUExVRz0iJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAy
CisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNf
Y3ZfcGF0aF9IT1RQTFVHIiAmJiBhY19jdl9wYXRoX0hPVFBMVUc9Im5vIgorICA7OworZXNhYwor
ZmkKK0hPVFBMVUc9JGFjX2N2X3BhdGhfSE9UUExVRworaWYgdGVzdCAtbiAiJEhPVFBMVUciOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
SE9UUExVRyIgPiY1CiskYXNfZWNobyAiJEhPVFBMVUciID4mNjsgfQorZWxzZQorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2Vj
aG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICAgICAgICBpZiB0ZXN0IHgiJHtIT1RQTFVHfSIgPT0g
eCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgYXNfZm5fZXJyb3IgJD8gInVkZXYgaXMg
dG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9uIDU5IG9yIGxhdGVyIiAiJExJTkVOTyIgNQorICAg
ICAgICBmaQorICAgIGZpCitlbHNlCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ2
bmNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVt
bXkgdm5jb25maWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wYXRoX1ZOQ09ORklH
K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgY2FzZSAkVk5DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhf
Vk5DT05GSUc9IiRWTkNPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0
aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB
UkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVz
dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj
X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfVk5DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBm
aQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Bh
dGhfVk5DT05GSUciICYmIGFjX2N2X3BhdGhfVk5DT05GSUc9Im5vIgorICA7OworZXNhYworZmkK
K1ZOQ09ORklHPSRhY19jdl9wYXRoX1ZOQ09ORklHCitpZiB0ZXN0IC1uICIkVk5DT05GSUciOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
Vk5DT05GSUciID4mNQorJGFzX2VjaG8gIiRWTkNPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf
ZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCB4IiR7Vk5DT05GSUd9IiA9PSB4
Im5vIgorICAgIHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIk5vdCBhIExpbnV4IHN5c3Rl
bSBhbmQgdW5hYmxlIHRvIGZpbmQgdm5kIiAiJExJTkVOTyIgNQorICAgIGZpCitmaQorCisKKyMg
Q2hlY2sgbGlicmFyeSBwYXRoCitpZiB0ZXN0IC1kICIkcHJlZml4L2xpYjY0IjsgdGhlbiA6CisK
KyAgICBMSUJfUEFUSD0ibGliNjQiCisKK2Vsc2UKKworICAgIExJQl9QQVRIPSJsaWIiCisKK2Zp
CisKKworIyBDaGVja3MgZm9yIGxpYnJhcmllcy4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlvX3NldHVwIGluIC1sYWlvIiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciBpb19zZXR1cCBpbiAtbGFpby4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9saWJfYWlvX2lvX3NldHVwK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElC
UworTElCUz0iLWxhaW8gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0ND
IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1
c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBh
bmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGlvX3NldHVwICgpOwor
aW50CittYWluICgpCit7CityZXR1cm4gaW9fc2V0dXAgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9
CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zf
bGliX2Fpb19pb19zZXR1cD15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2Fpb19pb19zZXR1cD1ubwor
ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2
ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRhY19jdl9saWJfYWlvX2lvX3NldHVwIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2Fp
b19pb19zZXR1cCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9haW9faW9fc2V0dXAiID0g
eCIieWVzOyB0aGVuIDoKKyAgc3lzdGVtX2Fpbz0ieSIKK2Vsc2UKKyAgc3lzdGVtX2Fpbz0ibiIK
K2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgTUQ1IGluIC1sY3J5cHRvIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBNRDUg
aW4gLWxjcnlwdG8uLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2NyeXB0b19NRDUr
c2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQor
ICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGNyeXB0byAgJExJQlMiCitj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRl
ZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2
b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJl
dHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90
b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiCisjZW5kaWYKK2NoYXIgTUQ1ICgpOworaW50CittYWluICgpCit7CityZXR1cm4gTUQ1ICgp
OworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElO
RU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9jcnlwdG9fTUQ1PXllcworZWxzZQorICBhY19jdl9s
aWJfY3J5cHRvX01ENT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJT
PSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfY3J5cHRvX01ENSIgPiY1CiskYXNfZWNo
byAiJGFjX2N2X2xpYl9jcnlwdG9fTUQ1IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2Ny
eXB0b19NRDUiID0geCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor
I2RlZmluZSBIQVZFX0xJQkNSWVBUTyAxCitfQUNFT0YKKworICBMSUJTPSItbGNyeXB0byAkTElC
UyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZpbmQgbGliY3J5cHRvIiAi
JExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBmb3IgZXh0MmZzX29wZW4yIGluIC1sZXh0MmZzIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciBleHQyZnNfb3BlbjIgaW4gLWxleHQyZnMuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9M
SUJTPSRMSUJTCitMSUJTPSItbGV4dDJmcyAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJy
aWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNl
IGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisg
ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw
bHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgZXh0
MmZzX29wZW4yICgpOworaW50CittYWluICgpCit7CityZXR1cm4gZXh0MmZzX29wZW4yICgpOwor
ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P
IjsgdGhlbiA6CisgIGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yPXllcworZWxzZQorICBh
Y19jdl9saWJfZXh0MmZzX2V4dDJmc19vcGVuMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVz
dC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZXh0MmZzX2V4
dDJmc19vcGVuMiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4y
IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIiID0geCIi
eWVzOyB0aGVuIDoKKyAgbGliZXh0MmZzPSJ5IgorZWxzZQorICBsaWJleHQyZnM9Im4iCitmaQor
CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
IGdjcnlfbWRfaGFzaF9idWZmZXIgaW4gLWxnY3J5cHQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yIGdjcnlfbWRfaGFzaF9idWZmZXIgaW4gLWxnY3J5cHQuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfbGliX2djcnlwdF9nY3J5X21kX2hhc2hfYnVmZmVyK3NldH0iID0gc2V0OyB0
aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGli
X3NhdmVfTElCUz0kTElCUworTElCUz0iLWxnY3J5cHQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisv
KiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4K
KyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh
IEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0
aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitj
aGFyIGdjcnlfbWRfaGFzaF9idWZmZXIgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBnY3J5
X21kX2hhc2hfYnVmZmVyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19m
bl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9t
ZF9oYXNoX2J1ZmZlcj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2djcnlwdF9nY3J5X21kX2hhc2hf
YnVmZmVyPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlciIgPiY1
CiskYXNfZWNobyAiJGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlciIgPiY2OyB9
CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlciIgPSB4IiJ5
ZXM7IHRoZW4gOgorICBsaWJnY3J5cHQ9InkiCitlbHNlCisgIGxpYmdjcnlwdD0ibiIKK2ZpCisK
KworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
cHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBwdGhyZWFkX2NyZWF0ZSBpbiAtbHB0aHJlYWQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf
Y3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRM
SUJTCitMSUJTPSItbHB0aHJlYWQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+
Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBh
bnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFy
IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVp
bHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAg
Ki8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHB0aHJlYWRf
Y3JlYXRlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gcHRocmVhZF9jcmVhdGUgKCk7Cisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGU9eWVzCitlbHNlCisg
IGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlPW5vCitmaQorcm0gLWYgY29yZSBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv
bmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9wdGhy
ZWFkX3B0aHJlYWRfY3JlYXRlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3B0aHJlYWRfcHRo
cmVhZF9jcmVhdGUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFk
X2NyZWF0ZSIgPSB4IiJ5ZXM7IHRoZW4gOgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJDb3Vs
ZCBub3QgZmluZCBsaWJwdGhyZWFkIiAiJExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfZ2V0dGltZSBpbiAt
bHJ0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBjbG9ja19nZXR0aW1lIGluIC1scnQu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUrc2V0fSIg
PSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19j
aGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy
b3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg
b2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs
ZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRp
ZgorY2hhciBjbG9ja19nZXR0aW1lICgpOworaW50CittYWluICgpCit7CityZXR1cm4gY2xvY2tf
Z2V0dGltZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf
bGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT15ZXMK
K2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWU9bm8KK2ZpCitybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQg
Y29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3J0
X2Nsb2NrX2dldHRpbWUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGlt
ZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA9IHgiInll
czsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJS
VCAxCitfQUNFT0YKKworICBMSUJTPSItbHJ0ICRMSUJTIgorCitmaQorCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1dWlkX2NsZWFyIGluIC1s
dXVpZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdXVpZF9jbGVhciBpbiAtbHV1aWQu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcitzZXR9IiA9
IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sdXVpZCAgJExJQlMiCitjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy
cm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBl
IG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291
bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5k
aWYKK2NoYXIgdXVpZF9jbGVhciAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHV1aWRfY2xl
YXIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsg
IiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcj15ZXMKK2Vsc2UK
KyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVz
dC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdXVpZF91dWlk
X2NsZWFyIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhciIgPiY2OyB9
CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIiID0geCIieWVzOyB0aGVuIDoK
KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlVVSUQgMQorX0FD
RU9GCisKKyAgTElCUz0iLWx1dWlkICRMSUJTIgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJD
b3VsZCBub3QgZmluZCBsaWJ1dWlkIiAiJExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeWFqbF9hbGxvYyBpbiAtbHlh
amwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHlhamxfYWxsb2MgaW4gLWx5YWpsLi4u
ICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2xpYl95YWpsX3lhamxfYWxsb2Mrc2V0fSIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVj
a19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHlhamwgICRMSUJTIgorY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor
CisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv
ci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxk
IHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlm
CitjaGFyIHlhamxfYWxsb2MgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiB5YWpsX2FsbG9j
ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2M9eWVzCitlbHNlCisg
IGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2M9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu
JGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3lhamxfeWFqbF9h
bGxvYyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2MiID4mNjsgfQor
aWYgdGVzdCAieCRhY19jdl9saWJfeWFqbF95YWpsX2FsbG9jIiA9IHgiInllczsgdGhlbiA6Cisg
IGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJZQUpMIDEKK19BQ0VP
RgorCisgIExJQlM9Ii1seWFqbCAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291
bGQgbm90IGZpbmQgeWFqbCIgIiRMSU5FTk8iIDUKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmxhdGVDb3B5IGluIC1seiIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmbGF0ZUNvcHkgaW4gLWx6Li4uICIgPiY2OyB9
CitpZiB0ZXN0ICIke2FjX2N2X2xpYl96X2RlZmxhdGVDb3B5K3NldH0iID0gc2V0OyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVf
TElCUz0kTElCUworTElCUz0iLWx6ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUg
YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hh
ciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1
aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g
ICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBkZWZsYXRl
Q29weSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGRlZmxhdGVDb3B5ICgpOworICA7Cisg
IHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5PXllcworZWxzZQorICBhY19jdl9saWJfel9k
ZWZsYXRlQ29weT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRh
Y19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfel9kZWZsYXRlQ29weSIgPiY1CiskYXNfZWNo
byAiJGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGli
X3pfZGVmbGF0ZUNvcHkiID0geCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgorI2RlZmluZSBIQVZFX0xJQlogMQorX0FDRU9GCisKKyAgTElCUz0iLWx6ICRMSUJTIgor
CitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCB6bGliIiAiJExJTkVOTyIg
NQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgbGliaWNvbnZfb3BlbiBpbiAtbGljb252IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBsaWJpY29udl9vcGVuIGluIC1saWNvbnYuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf
Y3ZfbGliX2ljb252X2xpYmljb252X29wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJT
CitMSUJTPSItbGljb252ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdD
QyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4g
YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBsaWJpY29udl9vcGVu
ICgpOworaW50CittYWluICgpCit7CityZXR1cm4gbGliaWNvbnZfb3BlbiAoKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3Blbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGli
X2ljb252X2xpYmljb252X29wZW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4
dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2ljb252X2xpYmljb252X29w
ZW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3BlbiIgPiY2OyB9
CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9pY29udl9saWJpY29udl9vcGVuIiA9IHgiInllczsgdGhl
biA6CisgIGxpYmljb252PSJ5IgorZWxzZQorICBsaWJpY29udj0ibiIKK2ZpCisKKworCisjIEF1
dG9zY2FuIHN0dWZmIChleGNlcHQgZm9yIHlhamwveWFqbF92ZXJzaW9uLmggY2hlY2spCisjIENo
ZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgorIyBUaGUgVWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxs
b2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkgd29ya3MKKyMgZm9yIGNvbnN0YW50IGFyZ3Vt
ZW50cy4gIFVzZWxlc3MhCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciB3b3JraW5nIGFsbG9jYS5oLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3dvcmtp
bmdfYWxsb2NhX2grc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8YWxsb2NhLmg+CitpbnQKK21haW4g
KCkKK3sKK2NoYXIgKnAgPSAoY2hhciAqKSBhbGxvY2EgKDIgKiBzaXplb2YgKGludCkpOworCQkJ
ICBpZiAocCkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2Zu
X2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfd29ya2luZ19hbGxvY2FfaD15
ZXMKK2Vsc2UKKyAgYWNfY3Zfd29ya2luZ19hbGxvY2FfaD1ubworZmkKK3JtIC1mIGNvcmUgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj
b25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRhY19jdl93b3JraW5nX2FsbG9jYV9oIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3Zfd29ya2luZ19hbGxvY2FfaCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl93b3JraW5nX2FsbG9j
YV9oID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQUxMT0NBX0ggMSIgPj5j
b25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yIGFsbG9jYSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYWxs
b2NhLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzK3NldH0i
ID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworI2lmZGVmIF9fR05VQ19fCisjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9j
YQorI2Vsc2UKKyMgaWZkZWYgX01TQ19WRVIKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgorIyAgZGVm
aW5lIGFsbG9jYSBfYWxsb2NhCisjIGVsc2UKKyMgIGlmZGVmIEhBVkVfQUxMT0NBX0gKKyMgICBp
bmNsdWRlIDxhbGxvY2EuaD4KKyMgIGVsc2UKKyMgICBpZmRlZiBfQUlYCisgI3ByYWdtYSBhbGxv
Y2EKKyMgICBlbHNlCisjICAgIGlmbmRlZiBhbGxvY2EgLyogcHJlZGVmaW5lZCBieSBIUCBjYyAr
T2xpYmNhbGxzICovCitjaGFyICphbGxvY2EgKCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMg
IGVuZGlmCisjIGVuZGlmCisjZW5kaWYKKworaW50CittYWluICgpCit7CitjaGFyICpwID0gKGNo
YXIgKikgYWxsb2NhICgxKTsKKwkJCQkgICAgaWYgKHApIHJldHVybiAwOworICA7CisgIHJldHVy
biAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Cisg
IGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzPXllcworZWxzZQorICBhY19jdl9mdW5jX2FsbG9jYV93
b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg
XAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX2FsbG9j
YV93b3JrcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA+JjY7IH0K
KworaWYgdGVzdCAkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MgPSB5ZXM7IHRoZW4KKworJGFzX2Vj
aG8gIiNkZWZpbmUgSEFWRV9BTExPQ0EgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgIyBUaGUg
U1ZSMyBsaWJQVyBhbmQgU1ZSNCBsaWJ1Y2IgYm90aCBjb250YWluIGluY29tcGF0aWJsZSBmdW5j
dGlvbnMKKyMgdGhhdCBjYXVzZSB0cm91YmxlLiAgU29tZSB2ZXJzaW9ucyBkbyBub3QgZXZlbiBj
b250YWluIGFsbG9jYSBvcgorIyBjb250YWluIGEgYnVnZ3kgdmVyc2lvbi4gIElmIHlvdSBzdGls
bCB3YW50IHRvIHVzZSB0aGVpciBhbGxvY2EsCisjIHVzZSBhciB0byBleHRyYWN0IGFsbG9jYS5v
IGZyb20gdGhlbSBpbnN0ZWFkIG9mIGNvbXBpbGluZyBhbGxvY2EuYy4KKworQUxMT0NBPVwke0xJ
Qk9CSkRJUn1hbGxvY2EuJGFjX29iamV4dAorCiskYXNfZWNobyAiI2RlZmluZSBDX0FMTE9DQSAx
IiA+PmNvbmZkZWZzLmgKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcyIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3Mu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zfb3NfY3JheStzZXR9IiA9IHNldDsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZiBk
ZWZpbmVkIENSQVkgJiYgISBkZWZpbmVkIENSQVkyCit3ZWJlY3JheQorI2Vsc2UKK3dlbm90YmVj
cmF5CisjZW5kaWYKKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0
IikgMj4mNSB8CisgICRFR1JFUCAid2ViZWNyYXkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Cisg
IGFjX2N2X29zX2NyYXk9eWVzCitlbHNlCisgIGFjX2N2X29zX2NyYXk9bm8KK2ZpCitybSAtZiBj
b25mdGVzdCoKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3Zfb3NfY3JheSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X29zX2NyYXkiID4m
NjsgfQoraWYgdGVzdCAkYWNfY3Zfb3NfY3JheSA9IHllczsgdGhlbgorICBmb3IgYWNfZnVuYyBp
biBfZ2V0YjY3IEdFVEI2NyBnZXRiNjc7IGRvCisgICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNf
Y3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F
Tk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3Zh
ciJcIiA9IHgieWVzIjsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZp
bmUgQ1JBWV9TVEFDS1NFR19FTkQgJGFjX2Z1bmMKK19BQ0VPRgorCisgICAgYnJlYWsKK2ZpCisK
KyAgZG9uZQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EuLi4gIiA+JjY7IH0KK2lmIHRlc3Qg
IiR7YWNfY3ZfY19zdGFja19kaXJlY3Rpb24rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9
IHllczsgdGhlbiA6CisgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTAKK2Vsc2UKKyAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorZmluZF9zdGFja19kaXJlY3Rpb24gKCkK
K3sKKyAgc3RhdGljIGNoYXIgKmFkZHIgPSAwOworICBhdXRvIGNoYXIgZHVtbXk7CisgIGlmIChh
ZGRyID09IDApCisgICAgeworICAgICAgYWRkciA9ICZkdW1teTsKKyAgICAgIHJldHVybiBmaW5k
X3N0YWNrX2RpcmVjdGlvbiAoKTsKKyAgICB9CisgIGVsc2UKKyAgICByZXR1cm4gKCZkdW1teSA+
IGFkZHIpID8gMSA6IC0xOworfQorCitpbnQKK21haW4gKCkKK3sKKyAgcmV0dXJuIGZpbmRfc3Rh
Y2tfZGlyZWN0aW9uICgpIDwgMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElO
RU5PIjsgdGhlbiA6CisgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTEKK2Vsc2UKKyAgYWNfY3Zf
Y19zdGFja19kaXJlY3Rpb249LTEKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0
LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19v
YmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX3N0YWNrX2Rp
cmVjdGlvbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uIiA+JjY7IH0K
K2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU1RBQ0tfRElSRUNUSU9OICRhY19j
dl9jX3N0YWNrX2RpcmVjdGlvbgorX0FDRU9GCisKKworZmkKKworZm9yIGFjX2hlYWRlciBpbiAg
XAorICAgICAgICAgICAgICAgIGFycGEvaW5ldC5oIGZjbnRsLmggaW50dHlwZXMuaCBsaWJpbnRs
LmggbGltaXRzLmggbWFsbG9jLmggXAorICAgICAgICAgICAgICAgIG5ldGRiLmggbmV0aW5ldC9p
bi5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGxpYi5oIHN0cmluZy5oIFwKKyAgICAgICAgICAgICAg
ICBzdHJpbmdzLmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBzeXMvbW91bnQuaCBzeXMvcGFyYW0u
aCBcCisgICAgICAgICAgICAgICAgc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3RpbWUu
aCBzeXNsb2cuaCB0ZXJtaW9zLmggXAorICAgICAgICAgICAgICAgIHVuaXN0ZC5oIHlhamwveWFq
bF92ZXJzaW9uLmggXAorCitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hl
YWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdy
ZWwgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19k
ZWZhdWx0IgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRo
ZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFW
RV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKwor
IyBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVy
aXN0aWNzLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3Igc3RkYm9vbC5oIHRoYXQgY29uZm9ybXMgdG8gQzk5IiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIGZvciBzdGRib29sLmggdGhhdCBjb25mb3JtcyB0byBDOTkuLi4gIiA+JjY7IH0KK2lm
IHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUg
PHN0ZGJvb2wuaD4KKyNpZm5kZWYgYm9vbAorICJlcnJvcjogYm9vbCBpcyBub3QgZGVmaW5lZCIK
KyNlbmRpZgorI2lmbmRlZiBmYWxzZQorICJlcnJvcjogZmFsc2UgaXMgbm90IGRlZmluZWQiCisj
ZW5kaWYKKyNpZiBmYWxzZQorICJlcnJvcjogZmFsc2UgaXMgbm90IDAiCisjZW5kaWYKKyNpZm5k
ZWYgdHJ1ZQorICJlcnJvcjogdHJ1ZSBpcyBub3QgZGVmaW5lZCIKKyNlbmRpZgorI2lmIHRydWUg
IT0gMQorICJlcnJvcjogdHJ1ZSBpcyBub3QgMSIKKyNlbmRpZgorI2lmbmRlZiBfX2Jvb2xfdHJ1
ZV9mYWxzZV9hcmVfZGVmaW5lZAorICJlcnJvcjogX19ib29sX3RydWVfZmFsc2VfYXJlX2RlZmlu
ZWQgaXMgbm90IGRlZmluZWQiCisjZW5kaWYKKworCXN0cnVjdCBzIHsgX0Jvb2wgczogMTsgX0Jv
b2wgdDsgfSBzOworCisJY2hhciBhW3RydWUgPT0gMSA/IDEgOiAtMV07CisJY2hhciBiW2ZhbHNl
ID09IDAgPyAxIDogLTFdOworCWNoYXIgY1tfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCA9
PSAxID8gMSA6IC0xXTsKKwljaGFyIGRbKGJvb2wpIDAuNSA9PSB0cnVlID8gMSA6IC0xXTsKKwli
b29sIGUgPSAmczsKKwljaGFyIGZbKF9Cb29sKSAwLjAgPT0gZmFsc2UgPyAxIDogLTFdOworCWNo
YXIgZ1t0cnVlXTsKKwljaGFyIGhbc2l6ZW9mIChfQm9vbCldOworCWNoYXIgaVtzaXplb2Ygcy50
XTsKKwllbnVtIHsgaiA9IGZhbHNlLCBrID0gdHJ1ZSwgbCA9IGZhbHNlICogdHJ1ZSwgbSA9IHRy
dWUgKiAyNTYgfTsKKwkvKiBUaGUgZm9sbG93aW5nIGZhaWxzIGZvcgorCSAgIEhQIGFDKysvQU5T
SSBDIEIzOTEwQiBBLjA1LjU1IFtEZWMgMDQgMjAwM10uICovCisJX0Jvb2wgblttXTsKKwljaGFy
IG9bc2l6ZW9mIG4gPT0gbSAqIHNpemVvZiBuWzBdID8gMSA6IC0xXTsKKwljaGFyIHBbLTEgLSAo
X0Jvb2wpIDAgPCAwICYmIC0xIC0gKGJvb2wpIDAgPCAwID8gMSA6IC0xXTsKKyMJaWYgZGVmaW5l
ZCBfX3hsY19fIHx8IGRlZmluZWQgX19HTlVDX18KKwkgLyogQ2F0Y2ggYSBidWcgaW4gSUJNIEFJ
WCB4bGMgY29tcGlsZXIgdmVyc2lvbiA2LjAuMC4wCisJICAgIHJlcG9ydGVkIGJ5IEphbWVzIExl
bWxleSBvbiAyMDA1LTEwLTA1OyBzZWUKKwkgICAgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2
ZS9odG1sL2J1Zy1jb3JldXRpbHMvMjAwNS0xMC9tc2cwMDA4Ni5odG1sCisJICAgIFRoaXMgdGVz
dCBpcyBub3QgcXVpdGUgcmlnaHQsIHNpbmNlIHhsYyBpcyBhbGxvd2VkIHRvCisJICAgIHJlamVj
dCB0aGlzIHByb2dyYW0sIGFzIHRoZSBpbml0aWFsaXplciBmb3IgeGxjYnVnIGlzCisJICAgIG5v
dCBvbmUgb2YgdGhlIGZvcm1zIHRoYXQgQyByZXF1aXJlcyBzdXBwb3J0IGZvci4KKwkgICAgSG93
ZXZlciwgZG9pbmcgdGhlIHRlc3QgcmlnaHQgd291bGQgcmVxdWlyZSBhIHJ1bnRpbWUKKwkgICAg
dGVzdCwgYW5kIHRoYXQgd291bGQgbWFrZSBjcm9zcy1jb21waWxhdGlvbiBoYXJkZXIuCisJICAg
IExldCB1cyBob3BlIHRoYXQgSUJNIGZpeGVzIHRoZSB4bGMgYnVnLCBhbmQgYWxzbyBhZGRzCisJ
ICAgIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiBjb25zdGFudCBleHByZXNzaW9uLiAgSW4gdGhl
CisJICAgIG1lYW50aW1lLCB0aGlzIHRlc3Qgd2lsbCByZWplY3QgeGxjLCB3aGljaCBpcyBPSywg
c2luY2UKKwkgICAgb3VyIHN0ZGJvb2wuaCBzdWJzdGl0dXRlIHNob3VsZCBzdWZmaWNlLiAgV2Ug
YWxzbyB0ZXN0CisJICAgIHRoaXMgd2l0aCBHQ0MsIHdoZXJlIGl0IHNob3VsZCB3b3JrLCB0byBk
ZXRlY3QgbW9yZQorCSAgICBxdWlja2x5IHdoZXRoZXIgc29tZW9uZSBtZXNzZXMgdXAgdGhlIHRl
c3QgaW4gdGhlCisJICAgIGZ1dHVyZS4gICovCisJIGNoYXIgZGlnc1tdID0gIjAxMjM0NTY3ODki
OworCSBpbnQgeGxjYnVnID0gMSAvICgmKGRpZ3MgKyA1KVstMiArIChib29sKSAxXSA9PSAmZGln
c1s0XSA/IDEgOiAtMSk7CisjCWVuZGlmCisJLyogQ2F0Y2ggYSBidWcgaW4gYW4gSFAtVVggQyBj
b21waWxlci4gIFNlZQorCSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDAz
LTEyL21zZzAyMzAzLmh0bWwKKwkgICBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwv
YnVnLWNvcmV1dGlscy8yMDA1LTExL21zZzAwMTYxLmh0bWwKKwkgKi8KKwlfQm9vbCBxID0gdHJ1
ZTsKKwlfQm9vbCAqcHEgPSAmcTsKKworaW50CittYWluICgpCit7CisKKwkqcHEgfD0gcTsKKwkq
cHEgfD0gISBxOworCS8qIFJlZmVyIHRvIGV2ZXJ5IGRlY2xhcmVkIHZhbHVlLCB0byBhdm9pZCBj
b21waWxlciBvcHRpbWl6YXRpb25zLiAgKi8KKwlyZXR1cm4gKCFhICsgIWIgKyAhYyArICFkICsg
IWUgKyAhZiArICFnICsgIWggKyAhaSArICEhaiArICFrICsgISFsCisJCSsgIW0gKyAhbiArICFv
ICsgIXAgKyAhcSArICFwcSk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNf
Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfc3RkYm9v
bF9oPXllcworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYm9vbF9oPW5vCitmaQorcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9o
ZWFkZXJfc3RkYm9vbF9oIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCIg
PiY2OyB9CithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJfQm9vbCIgImFjX2N2X3R5cGVf
X0Jvb2wiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9fQm9v
bCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5l
IEhBVkVfX0JPT0wgMQorX0FDRU9GCisKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0
ZGJvb2xfaCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1NUREJPT0xfSCAx
IiA+PmNvbmZkZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5cGVzLmgiID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yIHVpZF90IGluIHN5cy90eXBlcy5oLi4uICIgPiY2OyB9CitpZiB0ZXN0
ICIke2FjX2N2X3R5cGVfdWlkX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAor
ICAkRUdSRVAgInVpZF90IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBhY19jdl90eXBlX3Vp
ZF90PXllcworZWxzZQorICBhY19jdl90eXBlX3VpZF90PW5vCitmaQorcm0gLWYgY29uZnRlc3Qq
CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX2N2X3R5cGVfdWlkX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl90eXBlX3VpZF90IiA+JjY7
IH0KK2lmIHRlc3QgJGFjX2N2X3R5cGVfdWlkX3QgPSBubzsgdGhlbgorCiskYXNfZWNobyAiI2Rl
ZmluZSB1aWRfdCBpbnQiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIGdpZF90
IGludCIgPj5jb25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CiskYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2NfaW5saW5lK3NldH0i
ID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNf
Y3ZfY19pbmxpbmU9bm8KK2ZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGluZTsg
ZG8KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cwordHlwZWRlZiBpbnQgZm9vX3Q7
CitzdGF0aWMgJGFjX2t3IGZvb190IHN0YXRpY19mb28gKCkge3JldHVybiAwOyB9CiskYWNfa3cg
Zm9vX3QgZm9vICgpIHtyZXR1cm4gMDsgfQorI2VuZGlmCisKK19BQ0VPRgoraWYgYWNfZm5fY190
cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX2lubGluZT0kYWNfa3cKK2Zp
CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKKyAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyAmJiBicmVhaworZG9uZQorCitm
aQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j
dl9jX2lubGluZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfaW5saW5lIiA+JjY7IH0KKworY2Fz
ZSAkYWNfY3ZfY19pbmxpbmUgaW4KKyAgaW5saW5lIHwgeWVzKSA7OworICAqKQorICAgIGNhc2Ug
JGFjX2N2X2NfaW5saW5lIGluCisgICAgICBubykgYWNfdmFsPTs7CisgICAgICAqKSBhY192YWw9
JGFjX2N2X2NfaW5saW5lOzsKKyAgICBlc2FjCisgICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP
RgorI2lmbmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBpbmxpbmUgJGFjX3ZhbAorI2VuZGlmCitf
QUNFT0YKKyAgICA7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiMTYi
ICJhY19jdl9jX2ludDE2X3QiCitjYXNlICRhY19jdl9jX2ludDE2X3QgaW4gIygKKyAgbm98eWVz
KSA7OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDE2
X3QgJGFjX2N2X2NfaW50MTZfdAorX0FDRU9GCis7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50
WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX2ludDMyX3QiCitjYXNlICRhY19jdl9jX2ludDMy
X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FD
RU9GCisjZGVmaW5lIGludDMyX3QgJGFjX2N2X2NfaW50MzJfdAorX0FDRU9GCis7OworZXNhYwor
CithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3QiCitj
YXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCitjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRfdAor
X0FDRU9GCis7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiOCIgImFj
X2N2X2NfaW50OF90IgorY2FzZSAkYWNfY3ZfY19pbnQ4X3QgaW4gIygKKyAgbm98eWVzKSA7OyAj
KAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDhfdCAkYWNf
Y3ZfY19pbnQ4X3QKK19BQ0VPRgorOzsKK2VzYWMKKworYWNfZm5fY19jaGVja190eXBlICIkTElO
RU5PIiAibW9kZV90IiAiYWNfY3ZfdHlwZV9tb2RlX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK
K2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9tb2RlX3QiID0geCIieWVzOyB0aGVuIDoKKworZWxzZQor
CitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIG1vZGVfdCBpbnQKK19BQ0VPRgor
CitmaQorCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJvZmZfdCIgImFjX2N2X3R5cGVf
b2ZmX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9vZmZf
dCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YK
KyNkZWZpbmUgb2ZmX3QgbG9uZyBpbnQKK19BQ0VPRgorCitmaQorCithY19mbl9jX2NoZWNrX3R5
cGUgIiRMSU5FTk8iICJwaWRfdCIgImFjX2N2X3R5cGVfcGlkX3QiICIkYWNfaW5jbHVkZXNfZGVm
YXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9waWRfdCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitl
bHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgcGlkX3QgaW50CitfQUNF
T0YKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19j
dl9jX3Jlc3RyaWN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgYWNfY3ZfY19yZXN0cmljdD1ubworICAgIyBUaGUgb3JkZXIgaGVyZSBj
YXRlcnMgdG8gdGhlIGZhY3QgdGhhdCBDKysgZG9lcyBub3QgcmVxdWlyZSByZXN0cmljdC4KKyAg
IGZvciBhY19rdyBpbiBfX3Jlc3RyaWN0IF9fcmVzdHJpY3RfXyBfUmVzdHJpY3QgcmVzdHJpY3Q7
IGRvCisgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KK3R5cGVkZWYgaW50ICogaW50X3B0cjsKKwlpbnQgZm9vIChp
bnRfcHRyICRhY19rdyBpcCkgeworCXJldHVybiBpcFswXTsKKyAgICAgICB9CitpbnQKK21haW4g
KCkKK3sKK2ludCBzWzFdOworCWludCAqICRhY19rdyB0ID0gczsKKwl0WzBdID0gMDsKKwlyZXR1
cm4gZm9vKHQpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY19yZXN0cmljdD0kYWNfa3cKK2ZpCity
bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19l
eHQKKyAgICAgdGVzdCAiJGFjX2N2X2NfcmVzdHJpY3QiICE9IG5vICYmIGJyZWFrCisgICBkb25l
CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX2N2X2NfcmVzdHJpY3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX3Jlc3RyaWN0IiA+JjY7
IH0KKworIGNhc2UgJGFjX2N2X2NfcmVzdHJpY3QgaW4KKyAgIHJlc3RyaWN0KSA7OworICAgbm8p
ICRhc19lY2hvICIjZGVmaW5lIHJlc3RyaWN0IC8qKi8iID4+Y29uZmRlZnMuaAorIDs7CisgICAq
KSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSByZXN0cmljdCAkYWNfY3ZfY19y
ZXN0cmljdAorX0FDRU9GCisgOzsKKyBlc2FjCisKK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVO
TyIgInNpemVfdCIgImFjX2N2X3R5cGVfc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitp
ZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHgiInllczsgdGhlbiA6CisKK2Vsc2UKKwor
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBzaXplX3QgdW5zaWduZWQgaW50Citf
QUNFT0YKKworZmkKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFj
X2N2X3R5cGVfc3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19j
dl90eXBlX3NzaXplX3QiID0geCIieWVzOyB0aGVuIDoKKworZWxzZQorCitjYXQgPj5jb25mZGVm
cy5oIDw8X0FDRU9GCisjZGVmaW5lIHNzaXplX3QgaW50CitfQUNFT0YKKworZmkKKworYWNfZm5f
Y19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0X2Jsa3NpemUiICJhY19j
dl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxrc2l6ZSIgIiRhY19pbmNsdWRlc19kZWZhdWx0Igor
aWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxrc2l6ZSIgPSB4IiJ5ZXM7
IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNU
X1NUQVRfU1RfQkxLU0laRSAxCitfQUNFT0YKKworCitmaQorCithY19mbl9jX2NoZWNrX21lbWJl
ciAiJExJTkVOTyIgInN0cnVjdCBzdGF0IiAic3RfYmxvY2tzIiAiYWNfY3ZfbWVtYmVyX3N0cnVj
dF9zdGF0X3N0X2Jsb2NrcyIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19j
dl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxvY2tzIiA9IHgiInllczsgdGhlbiA6CisKK2NhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1Mg
MQorX0FDRU9GCisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TVF9CTE9DS1MgMSIgPj5jb25m
ZGVmcy5oCisKK2Vsc2UKKyAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgZmlsZWJsb2Nrcy4k
YWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgZmlsZWJsb2Nrcy4kYWNf
b2JqZXh0IgorIDs7Citlc2FjCisKK2ZpCisKKworYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5F
Tk8iICJzdHJ1Y3Qgc3RhdCIgInN0X3JkZXYiICJhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3Rf
cmRldiIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3Ry
dWN0X3N0YXRfc3RfcmRldiIgPSB4IiJ5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfUkRFViAxCitfQUNFT0YKKworCitm
aQorCithY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjE2IiAiYWNfY3ZfY191aW50MTZf
dCIKK2Nhc2UgJGFjX2N2X2NfdWludDE2X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQor
CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgdWludDE2X3QgJGFjX2N2X2Nf
dWludDE2X3QKK19BQ0VPRgorOzsKKyAgZXNhYworCithY19mbl9jX2ZpbmRfdWludFhfdCAiJExJ
TkVOTyIgIjMyIiAiYWNfY3ZfY191aW50MzJfdCIKK2Nhc2UgJGFjX2N2X2NfdWludDMyX3QgaW4g
IygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCiskYXNfZWNobyAiI2RlZmluZSBfVUlOVDMyX1Qg
MSIgPj5jb25mZGVmcy5oCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSB1
aW50MzJfdCAkYWNfY3ZfY191aW50MzJfdAorX0FDRU9GCis7OworICBlc2FjCisKK2FjX2ZuX2Nf
ZmluZF91aW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX3VpbnQ2NF90IgorY2FzZSAkYWNf
Y3ZfY191aW50NjRfdCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisgICopCisKKyRhc19lY2hvICIj
ZGVmaW5lIF9VSU5UNjRfVCAxIiA+PmNvbmZkZWZzLmgKKworCitjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIHVpbnQ2NF90ICRhY19jdl9jX3VpbnQ2NF90CitfQUNFT0YKKzs7Cisg
IGVzYWMKKworYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICI4IiAiYWNfY3ZfY191aW50
OF90IgorY2FzZSAkYWNfY3ZfY191aW50OF90IGluICMoCisgIG5vfHllcykgOzsgIygKKyAgKikK
KworJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQ4X1QgMSIgPj5jb25mZGVmcy5oCisKKworY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSB1aW50OF90ICRhY19jdl9jX3VpbnQ4X3QKK19B
Q0VPRgorOzsKKyAgZXNhYworCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJwdHJkaWZm
X3QiICJhY19jdl90eXBlX3B0cmRpZmZfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVz
dCAieCRhY19jdl90eXBlX3B0cmRpZmZfdCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25m
ZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfUFRSRElGRl9UIDEKK19BQ0VPRgorCisKK2Zp
CisKKworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZXJyb3JfYXRfbGluZSIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgZXJyb3JfYXRfbGluZS4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9saWJfZXJyb3JfYXRfbGluZStzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxlcnJv
ci5oPgoraW50CittYWluICgpCit7CitlcnJvcl9hdF9saW5lICgwLCAwLCAiIiwgMCwgImFuIGVy
cm9yIG9jY3VycmVkIik7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2Nf
dHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmU9eWVz
CitlbHNlCisgIGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lPW5vCitmaQorcm0gLWYgY29yZSBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv
bmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfbGliX2Vycm9yX2F0X2xpbmUiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfbGliX2Vycm9yX2F0
X2xpbmUgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBlcnJvci4kYWNf
b2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgZXJyb3IuJGFjX29iamV4dCIK
KyA7OworZXNhYworCitmaQorCitmb3IgYWNfaGVhZGVyIGluIHZmb3JrLmgKK2RvIDoKKyAgYWNf
Zm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInZmb3JrLmgiICJhY19jdl9oZWFk
ZXJfdmZvcmtfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFk
ZXJfdmZvcmtfaCIgPSB4IiJ5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CisjZGVmaW5lIEhBVkVfVkZPUktfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitmb3IgYWNf
ZnVuYyBpbiBmb3JrIHZmb3JrCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1
bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi
JGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIg
PSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAk
YXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2Rv
bmUKKworaWYgdGVzdCAieCRhY19jdl9mdW5jX2ZvcmsiID0geHllczsgdGhlbgorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIGZv
cmsiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgZm9yay4uLiAiID4mNjsg
fQoraWYgdGVzdCAiJHthY19jdl9mdW5jX2Zvcmtfd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29t
cGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz1jcm9zcworZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CisK
KwkgIC8qIEJ5IFJ1ZWRpZ2VyIEt1aGxtYW5uLiAqLworCSAgcmV0dXJuIGZvcmsgKCkgPCAwOwor
CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVO
TyI7IHRoZW4gOgorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9eWVzCitlbHNlCisgIGFjX2N2X2Z1
bmNfZm9ya193b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBn
bW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfZm9ya193b3Jr
cyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPiY2OyB9CisKK2Vsc2UK
KyAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPSRhY19jdl9mdW5jX2ZvcmsKK2ZpCitpZiB0ZXN0ICJ4
JGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPSB4Y3Jvc3M7IHRoZW4KKyAgY2FzZSAkaG9zdCBpbgor
ICAgICotKi1hbWlnYW9zKiB8ICotKi1tc2Rvc2RqZ3BwKikKKyAgICAgICMgT3ZlcnJpZGUsIGFz
IHRoZXNlIHN5c3RlbXMgaGF2ZSBvbmx5IGEgZHVtbXkgZm9yaygpIHN0dWIKKyAgICAgIGFjX2N2
X2Z1bmNfZm9ya193b3Jrcz1ubworICAgICAgOzsKKyAgICAqKQorICAgICAgYWNfY3ZfZnVuY19m
b3JrX3dvcmtzPXllcworICAgICAgOzsKKyAgZXNhYworICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHJlc3VsdCAkYWNfY3ZfZnVuY19mb3JrX3dvcmtz
IGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfZm9ya193b3JrcyBndWVzc2VkIGJlY2F1
c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mMjt9CitmaQorYWNfY3ZfZnVuY192Zm9ya193b3Jr
cz0kYWNfY3ZfZnVuY192Zm9yaworaWYgdGVzdCAieCRhY19jdl9mdW5jX3Zmb3JrIiA9IHh5ZXM7
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3Igd29ya2luZyB2Zm9yayIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2lu
ZyB2Zm9yay4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX3Zmb3JrX3dvcmtzK3Nl
dH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3Zm
b3JrX3dvcmtzPWNyb3NzCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy8qIFRoYW5rcyB0byBQYXVsIEVn
Z2VydCBmb3IgdGhpcyB0ZXN0LiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaW5jbHVkZSA8
c3lzL3dhaXQuaD4KKyNpZmRlZiBIQVZFX1ZGT1JLX0gKKyMgaW5jbHVkZSA8dmZvcmsuaD4KKyNl
bmRpZgorLyogT24gc29tZSBzcGFyYyBzeXN0ZW1zLCBjaGFuZ2VzIGJ5IHRoZSBjaGlsZCB0byBs
b2NhbCBhbmQgaW5jb21pbmcKKyAgIGFyZ3VtZW50IHJlZ2lzdGVycyBhcmUgcHJvcGFnYXRlZCBi
YWNrIHRvIHRoZSBwYXJlbnQuICBUaGUgY29tcGlsZXIKKyAgIGlzIHRvbGQgYWJvdXQgdGhpcyB3
aXRoICNpbmNsdWRlIDx2Zm9yay5oPiwgYnV0IHNvbWUgY29tcGlsZXJzCisgICAoZS5nLiBnY2Mg
LU8pIGRvbid0IGdyb2sgPHZmb3JrLmg+LiAgVGVzdCBmb3IgdGhpcyBieSB1c2luZyBhCisgICBz
dGF0aWMgdmFyaWFibGUgd2hvc2UgYWRkcmVzcyBpcyBwdXQgaW50byBhIHJlZ2lzdGVyIHRoYXQg
aXMKKyAgIGNsb2JiZXJlZCBieSB0aGUgdmZvcmsuICAqLworc3RhdGljIHZvaWQKKyNpZmRlZiBf
X2NwbHVzcGx1cworc3BhcmNfYWRkcmVzc190ZXN0IChpbnQgYXJnKQorIyBlbHNlCitzcGFyY19h
ZGRyZXNzX3Rlc3QgKGFyZykgaW50IGFyZzsKKyNlbmRpZgoreworICBzdGF0aWMgcGlkX3QgY2hp
bGQ7CisgIGlmICghY2hpbGQpIHsKKyAgICBjaGlsZCA9IHZmb3JrICgpOworICAgIGlmIChjaGls
ZCA8IDApIHsKKyAgICAgIHBlcnJvciAoInZmb3JrIik7CisgICAgICBfZXhpdCgyKTsKKyAgICB9
CisgICAgaWYgKCFjaGlsZCkgeworICAgICAgYXJnID0gZ2V0cGlkKCk7CisgICAgICB3cml0ZSgt
MSwgIiIsIDApOworICAgICAgX2V4aXQgKGFyZyk7CisgICAgfQorICB9Cit9CisKK2ludAorbWFp
biAoKQoreworICBwaWRfdCBwYXJlbnQgPSBnZXRwaWQgKCk7CisgIHBpZF90IGNoaWxkOworCisg
IHNwYXJjX2FkZHJlc3NfdGVzdCAoMCk7CisKKyAgY2hpbGQgPSB2Zm9yayAoKTsKKworICBpZiAo
Y2hpbGQgPT0gMCkgeworICAgIC8qIEhlcmUgaXMgYW5vdGhlciB0ZXN0IGZvciBzcGFyYyB2Zm9y
ayByZWdpc3RlciBwcm9ibGVtcy4gIFRoaXMKKyAgICAgICB0ZXN0IHVzZXMgbG90cyBvZiBsb2Nh
bCB2YXJpYWJsZXMsIGF0IGxlYXN0IGFzIG1hbnkgbG9jYWwKKyAgICAgICB2YXJpYWJsZXMgYXMg
bWFpbiBoYXMgYWxsb2NhdGVkIHNvIGZhciBpbmNsdWRpbmcgY29tcGlsZXIKKyAgICAgICB0ZW1w
b3Jhcmllcy4gIDQgbG9jYWxzIGFyZSBlbm91Z2ggZm9yIGdjYyAxLjQwLjMgb24gYSBTb2xhcmlz
CisgICAgICAgNC4xLjMgc3BhcmMsIGJ1dCB3ZSB1c2UgOCB0byBiZSBzYWZlLiAgQSBidWdneSBj
b21waWxlciBzaG91bGQKKyAgICAgICByZXVzZSB0aGUgcmVnaXN0ZXIgb2YgcGFyZW50IGZvciBv
bmUgb2YgdGhlIGxvY2FsIHZhcmlhYmxlcywKKyAgICAgICBzaW5jZSBpdCB3aWxsIHRoaW5rIHRo
YXQgcGFyZW50IGNhbid0IHBvc3NpYmx5IGJlIHVzZWQgYW55IG1vcmUKKyAgICAgICBpbiB0aGlz
IHJvdXRpbmUuICBBc3NpZ25pbmcgdG8gdGhlIGxvY2FsIHZhcmlhYmxlIHdpbGwgdGh1cworICAg
ICAgIG11bmdlIHBhcmVudCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuICAqLworICAgIHBpZF90Cisg
ICAgICBwID0gZ2V0cGlkKCksIHAxID0gZ2V0cGlkKCksIHAyID0gZ2V0cGlkKCksIHAzID0gZ2V0
cGlkKCksCisgICAgICBwNCA9IGdldHBpZCgpLCBwNSA9IGdldHBpZCgpLCBwNiA9IGdldHBpZCgp
LCBwNyA9IGdldHBpZCgpOworICAgIC8qIENvbnZpbmNlIHRoZSBjb21waWxlciB0aGF0IHAuLnA3
IGFyZSBsaXZlOyBvdGhlcndpc2UsIGl0IG1pZ2h0CisgICAgICAgdXNlIHRoZSBzYW1lIGhhcmR3
YXJlIHJlZ2lzdGVyIGZvciBhbGwgOCBsb2NhbCB2YXJpYWJsZXMuICAqLworICAgIGlmIChwICE9
IHAxIHx8IHAgIT0gcDIgfHwgcCAhPSBwMyB8fCBwICE9IHA0CisJfHwgcCAhPSBwNSB8fCBwICE9
IHA2IHx8IHAgIT0gcDcpCisgICAgICBfZXhpdCgxKTsKKworICAgIC8qIE9uIHNvbWUgc3lzdGVt
cyAoZS5nLiBJUklYIDMuMyksIHZmb3JrIGRvZXNuJ3Qgc2VwYXJhdGUgcGFyZW50CisgICAgICAg
ZnJvbSBjaGlsZCBmaWxlIGRlc2NyaXB0b3JzLiAgSWYgdGhlIGNoaWxkIGNsb3NlcyBhIGRlc2Ny
aXB0b3IKKyAgICAgICBiZWZvcmUgaXQgZXhlY3Mgb3IgZXhpdHMsIHRoaXMgbXVuZ2VzIHRoZSBw
YXJlbnQncyBkZXNjcmlwdG9yCisgICAgICAgYXMgd2VsbC4gIFRlc3QgZm9yIHRoaXMgYnkgY2xv
c2luZyBzdGRvdXQgaW4gdGhlIGNoaWxkLiAgKi8KKyAgICBfZXhpdChjbG9zZShmaWxlbm8oc3Rk
b3V0KSkgIT0gMCk7CisgIH0gZWxzZSB7CisgICAgaW50IHN0YXR1czsKKyAgICBzdHJ1Y3Qgc3Rh
dCBzdDsKKworICAgIHdoaWxlICh3YWl0KCZzdGF0dXMpICE9IGNoaWxkKQorICAgICAgOworICAg
IHJldHVybiAoCisJIC8qIFdhcyB0aGVyZSBzb21lIHByb2JsZW0gd2l0aCB2Zm9ya2luZz8gICov
CisJIGNoaWxkIDwgMAorCisJIC8qIERpZCB0aGUgY2hpbGQgZmFpbD8gIChUaGlzIHNob3VsZG4n
dCBoYXBwZW4uKSAgKi8KKwkgfHwgc3RhdHVzCisKKwkgLyogRGlkIHRoZSB2Zm9yay9jb21waWxl
ciBidWcgb2NjdXI/ICAqLworCSB8fCBwYXJlbnQgIT0gZ2V0cGlkKCkKKworCSAvKiBEaWQgdGhl
IGZpbGUgZGVzY3JpcHRvciBidWcgb2NjdXI/ICAqLworCSB8fCBmc3RhdChmaWxlbm8oc3Rkb3V0
KSwgJnN0KSAhPSAwCisJICk7CisgIH0KK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9eWVzCitlbHNlCisgIGFj
X2N2X2Z1bmNfdmZvcmtfd29ya3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0
ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX3Zm
b3JrX3dvcmtzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY2OyB9
CisKK2ZpOworaWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geGNyb3NzOyB0aGVu
CisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1
bmNfdmZvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjUK
KyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHJlc3VsdCAkYWNfY3ZfZnVuY192Zm9ya193b3Jr
cyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mMjt9CitmaQorCitpZiB0
ZXN0ICJ4JGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MiID0geHllczsgdGhlbgorCiskYXNfZWNobyAi
I2RlZmluZSBIQVZFX1dPUktJTkdfVkZPUksgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKworJGFz
X2VjaG8gIiNkZWZpbmUgdmZvcmsgZm9yayIgPj5jb25mZGVmcy5oCisKK2ZpCitpZiB0ZXN0ICJ4
JGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5l
IEhBVkVfV09SS0lOR19GT1JLIDEiID4+Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfTEFSR0VGSUxFX1NPVVJD
RSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBfTEFSR0VGSUxFX1NPVVJDRSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIg
PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlK3NldH0iID0gc2V0
OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgd2hpbGUgOjsg
ZG8KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAvKiBmb3Igb2ZmX3QgKi8K
KyAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK2ludCAoKmZwKSAoRklM
RSAqLCBvZmZfdCwgaW50KSA9IGZzZWVrbzsKKyAgICAgcmV0dXJuIGZzZWVrbyAoc3RkaW4sIDAs
IDApICYmIGZwIChzdGRpbiwgMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm
IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3lzX2xhcmdlZmls
ZV9zb3VyY2U9bm87IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu
JGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk
ZWZzLmguICAqLworI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxCisjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+IC8qIGZvciBvZmZfdCAqLworICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFp
biAoKQoreworaW50ICgqZnApIChGSUxFICosIG9mZl90LCBpbnQpID0gZnNlZWtvOworICAgICBy
ZXR1cm4gZnNlZWtvIChzdGRpbiwgMCwgMCkgJiYgZnAgKHN0ZGluLCAwLCAwKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT0xOyBicmVhaworZmkKK3JtIC1mIGNvcmUg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4
dCBjb25mdGVzdC4kYWNfZXh0CisgIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPXVua25vd24K
KyAgYnJlYWsKK2RvbmUKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjUKKyRhc19lY2hvICIk
YWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiID4mNjsgfQorY2FzZSAkYWNfY3Zfc3lzX2xhcmdl
ZmlsZV9zb3VyY2UgaW4gIygKKyAgbm8gfCB1bmtub3duKSA7OworICAqKQorY2F0ID4+Y29uZmRl
ZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAkYWNfY3Zfc3lzX2xhcmdl
ZmlsZV9zb3VyY2UKK19BQ0VPRgorOzsKK2VzYWMKK3JtIC1yZiBjb25mdGVzdCoKKworIyBXZSB1
c2VkIHRvIHRyeSBkZWZpbmluZyBfWE9QRU5fU09VUkNFPTUwMCB0b28sIHRvIHdvcmsgYXJvdW5k
IGEgYnVnCisjIGluIGdsaWJjIDIuMS4zLCBidXQgdGhhdCBicmVha3MgdG9vIG1hbnkgb3RoZXIg
dGhpbmdzLgorIyBJZiB5b3Ugd2FudCBmc2Vla28gYW5kIGZ0ZWxsbyB3aXRoIGdsaWJjLCB1cGdy
YWRlIHRvIGEgZml4ZWQgZ2xpYmMuCitpZiB0ZXN0ICRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJj
ZSAhPSB1bmtub3duOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfRlNFRUtPIDEiID4+
Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMgdHJhaWxpbmcgc2xh
c2giID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBsc3RhdCBjb3JyZWN0bHkgaGFu
ZGxlcyB0cmFpbGluZyBzbGFzaC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX2xz
dGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBybSAtZiBjb25mdGVzdC5zeW0gY29u
ZnRlc3QuZmlsZQorZWNobyA+Y29uZnRlc3QuZmlsZQoraWYgdGVzdCAiJGFzX2xuX3MiID0gImxu
IC1zIiAmJiBsbiAtcyBjb25mdGVzdC5maWxlIGNvbmZ0ZXN0LnN5bTsgdGhlbgorICBpZiB0ZXN0
ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbHN0YXRfZGVy
ZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ubworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5j
bHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitzdHJ1Y3Qgc3RhdCBzYnVmOworICAgICAv
KiBMaW51eCB3aWxsIGRlcmVmZXJlbmNlIHRoZSBzeW1saW5rIGFuZCBmYWlsLCBhcyByZXF1aXJl
ZCBieSBQT1NJWC4KKwlUaGF0IGlzIGJldHRlciBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBtZWFucyB3
ZSB3aWxsIG5vdAorCWhhdmUgdG8gY29tcGlsZSBhbmQgdXNlIHRoZSBsc3RhdCB3cmFwcGVyLiAg
Ki8KKyAgICAgcmV0dXJuIGxzdGF0ICgiY29uZnRlc3Quc3ltLyIsICZzYnVmKSA9PSAwOworICA7
CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0
aGVuIDoKKyAgYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXll
cworZWxzZQorICBhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9
bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0
IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVh
bSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitlbHNlCisgICMgSWYgdGhlIGBsbiAtcycgY29tbWFu
ZCBmYWlsZWQsIHRoZW4gd2UgcHJvYmFibHkgZG9uJ3QgZXZlbgorICAjIGhhdmUgYW4gbHN0YXQg
ZnVuY3Rpb24uCisgIGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGlu
az1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LnN5bSBjb25mdGVzdC5maWxlCisKK2ZpCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbHN0
YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1
bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPiY2OyB9CisKK3Rlc3QgJGFj
X2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IHllcyAmJgorCitj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIExTVEFUX0ZPTExPV1NfU0xBU0hFRF9T
WU1MSU5LIDEKK19BQ0VPRgorCisKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVy
ZW5jZXNfc2xhc2hlZF9zeW1saW5rIiA9IHhubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBp
bgorICAqIiBsc3RhdC4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMg
bHN0YXQuJGFjX29iamV4dCIKKyA7OworZXNhYworCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgc3lzL3R5cGVzLmggZGVmaW5l
cyBtYWtlZGV2IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc3lzL3R5cGVzLmgg
ZGVmaW5lcyBtYWtlZGV2Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNf
dHlwZXNfaF9tYWtlZGV2K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50
CittYWluICgpCit7CityZXR1cm4gbWFrZWRldigwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30K
K19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9o
ZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldj15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N5c190
eXBlc19oX21ha2VkZXY9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitm
aQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j
dl9oZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hlYWRl
cl9zeXNfdHlwZXNfaF9tYWtlZGV2IiA+JjY7IH0KKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5
c190eXBlc19oX21ha2VkZXYgPSBubzsgdGhlbgorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3Jl
bCAiJExJTkVOTyIgInN5cy9ta2Rldi5oIiAiYWNfY3ZfaGVhZGVyX3N5c19ta2Rldl9oIiAiJGFj
X2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbWtkZXZfaCIg
PSB4IiJ5ZXM7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBNQUpPUl9JTl9NS0RFViAxIiA+
PmNvbmZkZWZzLmgKKworZmkKKworCisKKyAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19ta2Rl
dl9oID0gbm87IHRoZW4KKyAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5P
IiAic3lzL3N5c21hY3Jvcy5oIiAiYWNfY3ZfaGVhZGVyX3N5c19zeXNtYWNyb3NfaCIgIiRhY19p
bmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX3N5c21hY3Jvc19o
IiA9IHgiInllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIE1BSk9SX0lOX1NZU01BQ1JP
UyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworCisgIGZpCitmaQorCitmb3IgYWNfaGVhZGVyIGlu
IHN0ZGxpYi5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8i
ICJzdGRsaWIuaCIgImFjX2N2X2hlYWRlcl9zdGRsaWJfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0
IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkbGliX2giID0geCIieWVzOyB0aGVuIDoKKyAg
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NURExJQl9IIDEKK19BQ0VP
RgorCitmaQorCitkb25lCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNvbXBhdGlibGUgbWFsbG9jIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIGZvciBHTlUgbGliYyBjb21wYXRpYmxlIG1hbGxvYy4uLiAiID4mNjsgfQor
aWYgdGVzdCAiJHthY19jdl9mdW5jX21hbGxvY18wX25vbm51bGwrc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3Nf
Y29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD1u
bworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisv
KiBlbmQgY29uZmRlZnMuaC4gICovCisjaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5l
ZCBIQVZFX1NURExJQl9ICisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2Vsc2UKK2NoYXIgKm1hbGxv
YyAoKTsKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3JldHVybiAhIG1hbGxvYyAoMCk7Cisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7
IHRoZW4gOgorICBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVzCitlbHNlCisgIGFjX2N2
X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29u
ZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNf
bWFsbG9jXzBfbm9ubnVsbCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9u
bnVsbCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGwgPSB5ZXM7
IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX01BTExPQyAxIiA+PmNvbmZkZWZzLmgK
KworZWxzZQorICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01BTExPQyAwIiA+PmNvbmZkZWZzLmgK
KworICAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgbWFsbG9jLiRhY19vYmpleHQgIiogKSA7
OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBtYWxsb2MuJGFjX29iamV4dCIKKyA7OworZXNhYwor
CisKKyRhc19lY2hvICIjZGVmaW5lIG1hbGxvYyBycGxfbWFsbG9jIiA+PmNvbmZkZWZzLmgKKwor
ZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBi
b3RoIGJlIGluY2x1ZGVkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl90aW1l
K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNv
bmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy90aW1l
Lmg+CisjaW5jbHVkZSA8dGltZS5oPgorCitpbnQKK21haW4gKCkKK3sKK2lmICgoc3RydWN0IHRt
ICopIDApCityZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5f
Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfdGltZT15ZXMK
K2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3RpbWU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl90aW1lIiA+
JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3RpbWUiID4mNjsgfQoraWYgdGVzdCAkYWNfY3Zf
aGVhZGVyX3RpbWUgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVElNRV9XSVRIX1NZ
U19USU1FIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKKworCisgIGZvciBhY19oZWFkZXIgaW4g
JGFjX2hlYWRlcl9saXN0CitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hl
YWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBp
bGUgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19k
ZWZhdWx0CisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsg
dGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJI
QVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKwor
CisKKworCisKKworCisgIGZvciBhY19mdW5jIGluICRhY19mdW5jX2xpc3QKK2RvIDoKKyAgYXNf
YWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19m
bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFs
IHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190
cl9jcHBgIDEKK19BQ0VPRgorCitmaQorZG9uZQorCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWt0aW1lIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIG1rdGltZS4uLiAiID4mNjsgfQoraWYg
dGVzdCAiJHthY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lK3NldH0iID0gc2V0OyB0aGVuIDoKKyAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBp
bGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPW5vCitlbHNl
CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKy8qIFRlc3QgcHJvZ3JhbSBmcm9tIFBhdWwgRWdnZXJ0IGFuZCBUb255
IExlbmVpcy4gICovCisjaWZkZWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90
aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1lTX1RJTUVf
SAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgor
IyBlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworI2lmZGVmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYK
KworI2lmbmRlZiBIQVZFX0FMQVJNCisjIGRlZmluZSBhbGFybShYKSAvKiBlbXB0eSAqLworI2Vu
ZGlmCisKKy8qIFdvcmsgYXJvdW5kIHJlZGVmaW5pdGlvbiB0byBycGxfcHV0ZW52IGJ5IG90aGVy
IGNvbmZpZyB0ZXN0cy4gICovCisjdW5kZWYgcHV0ZW52CisKK3N0YXRpYyB0aW1lX3QgdGltZV90
X21heDsKK3N0YXRpYyB0aW1lX3QgdGltZV90X21pbjsKKworLyogVmFsdWVzIHdlJ2xsIHVzZSB0
byBzZXQgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFy
ICp0el9zdHJpbmdzW10gPSB7CisgIChjb25zdCBjaGFyICopIDAsICJUWj1HTVQwIiwgIlRaPUpT
VC05IiwKKyAgIlRaPUVTVCszRURUKzIsTTEwLjEuMC8wMDowMDowMCxNMi4zLjAvMDA6MDA6MDAi
Cit9OworI2RlZmluZSBOX1NUUklOR1MgKHNpemVvZiAodHpfc3RyaW5ncykgLyBzaXplb2YgKHR6
X3N0cmluZ3NbMF0pKQorCisvKiBSZXR1cm4gMCBpZiBta3RpbWUgZmFpbHMgdG8gY29udmVydCBh
IGRhdGUgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcC4KKyAgIEJhc2VkIG9uIGEgcHJvYmxlbSBy
ZXBvcnQgZnJvbSBBbmRyZWFzIEphZWdlci4gICovCitzdGF0aWMgaW50CitzcHJpbmdfZm9yd2Fy
ZF9nYXAgKCkKK3sKKyAgLyogZ2xpYmMgKHVwIHRvIGFib3V0IDE5OTgtMTAtMDcpIGZhaWxlZCB0
aGlzIHRlc3QuICovCisgIHN0cnVjdCB0bSB0bTsKKworICAvKiBVc2UgdGhlIHBvcnRhYmxlIFBP
U0lYLjEgc3BlY2lmaWNhdGlvbiAiVFo9UFNUOFBEVCxNNC4xLjAsTTEwLjUuMCIKKyAgICAgaW5z
dGVhZCBvZiAiVFo9QW1lcmljYS9WYW5jb3V2ZXIiIGluIG9yZGVyIHRvIGRldGVjdCB0aGUgYnVn
IGV2ZW4KKyAgICAgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlIE9sc29uIGV4dGVu
c2lvbiwgb3IgZG9uJ3QgaGF2ZSB0aGUKKyAgICAgZnVsbCB6b25laW5mbyB0YWJsZXMgaW5zdGFs
bGVkLiAgKi8KKyAgcHV0ZW52ICgoY2hhciopICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4wIik7
CisKKyAgdG0udG1feWVhciA9IDk4OworICB0bS50bV9tb24gPSAzOworICB0bS50bV9tZGF5ID0g
NTsKKyAgdG0udG1faG91ciA9IDI7CisgIHRtLnRtX21pbiA9IDA7CisgIHRtLnRtX3NlYyA9IDA7
CisgIHRtLnRtX2lzZHN0ID0gLTE7CisgIHJldHVybiBta3RpbWUgKCZ0bSkgIT0gKHRpbWVfdCkg
LTE7Cit9CisKK3N0YXRpYyBpbnQKK21rdGltZV90ZXN0MSAodGltZV90IG5vdykKK3sKKyAgc3Ry
dWN0IHRtICpsdDsKKyAgcmV0dXJuICEgKGx0ID0gbG9jYWx0aW1lICgmbm93KSkgfHwgbWt0aW1l
IChsdCkgPT0gbm93OworfQorCitzdGF0aWMgaW50Citta3RpbWVfdGVzdCAodGltZV90IG5vdykK
K3sKKyAgcmV0dXJuIChta3RpbWVfdGVzdDEgKG5vdykKKwkgICYmIG1rdGltZV90ZXN0MSAoKHRp
bWVfdCkgKHRpbWVfdF9tYXggLSBub3cpKQorCSAgJiYgbWt0aW1lX3Rlc3QxICgodGltZV90KSAo
dGltZV90X21pbiArIG5vdykpKTsKK30KKworc3RhdGljIGludAoraXJpeF82XzRfYnVnICgpCit7
CisgIC8qIEJhc2VkIG9uIGNvZGUgZnJvbSBBcmllbCBGYWlnb24uICAqLworICBzdHJ1Y3QgdG0g
dG07CisgIHRtLnRtX3llYXIgPSA5NjsKKyAgdG0udG1fbW9uID0gMzsKKyAgdG0udG1fbWRheSA9
IDA7CisgIHRtLnRtX2hvdXIgPSAwOworICB0bS50bV9taW4gPSAwOworICB0bS50bV9zZWMgPSAw
OworICB0bS50bV9pc2RzdCA9IC0xOworICBta3RpbWUgKCZ0bSk7CisgIHJldHVybiB0bS50bV9t
b24gPT0gMiAmJiB0bS50bV9tZGF5ID09IDMxOworfQorCitzdGF0aWMgaW50CitiaWd0aW1lX3Rl
c3QgKGludCBqKQoreworICBzdHJ1Y3QgdG0gdG07CisgIHRpbWVfdCBub3c7CisgIHRtLnRtX3ll
YXIgPSB0bS50bV9tb24gPSB0bS50bV9tZGF5ID0gdG0udG1faG91ciA9IHRtLnRtX21pbiA9IHRt
LnRtX3NlYyA9IGo7CisgIG5vdyA9IG1rdGltZSAoJnRtKTsKKyAgaWYgKG5vdyAhPSAodGltZV90
KSAtMSkKKyAgICB7CisgICAgICBzdHJ1Y3QgdG0gKmx0ID0gbG9jYWx0aW1lICgmbm93KTsKKyAg
ICAgIGlmICghIChsdAorCSAgICAgJiYgbHQtPnRtX3llYXIgPT0gdG0udG1feWVhcgorCSAgICAg
JiYgbHQtPnRtX21vbiA9PSB0bS50bV9tb24KKwkgICAgICYmIGx0LT50bV9tZGF5ID09IHRtLnRt
X21kYXkKKwkgICAgICYmIGx0LT50bV9ob3VyID09IHRtLnRtX2hvdXIKKwkgICAgICYmIGx0LT50
bV9taW4gPT0gdG0udG1fbWluCisJICAgICAmJiBsdC0+dG1fc2VjID09IHRtLnRtX3NlYworCSAg
ICAgJiYgbHQtPnRtX3lkYXkgPT0gdG0udG1feWRheQorCSAgICAgJiYgbHQtPnRtX3dkYXkgPT0g
dG0udG1fd2RheQorCSAgICAgJiYgKChsdC0+dG1faXNkc3QgPCAwID8gLTEgOiAwIDwgbHQtPnRt
X2lzZHN0KQorCQkgID09ICh0bS50bV9pc2RzdCA8IDAgPyAtMSA6IDAgPCB0bS50bV9pc2RzdCkp
KSkKKwlyZXR1cm4gMDsKKyAgICB9CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit5ZWFy
XzIwNTBfdGVzdCAoKQoreworICAvKiBUaGUgY29ycmVjdCBhbnN3ZXIgZm9yIDIwNTAtMDItMDEg
MDA6MDA6MDAgaW4gUGFjaWZpYyB0aW1lLAorICAgICBpZ25vcmluZyBsZWFwIHNlY29uZHMuICAq
LworICB1bnNpZ25lZCBsb25nIGludCBhbnN3ZXIgPSAyNTI3MzE1MjAwVUw7CisKKyAgc3RydWN0
IHRtIHRtOworICB0aW1lX3QgdDsKKyAgdG0udG1feWVhciA9IDIwNTAgLSAxOTAwOworICB0bS50
bV9tb24gPSAyIC0gMTsKKyAgdG0udG1fbWRheSA9IDE7CisgIHRtLnRtX2hvdXIgPSB0bS50bV9t
aW4gPSB0bS50bV9zZWMgPSAwOworICB0bS50bV9pc2RzdCA9IC0xOworCisgIC8qIFVzZSB0aGUg
cG9ydGFibGUgUE9TSVguMSBzcGVjaWZpY2F0aW9uICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4w
IgorICAgICBpbnN0ZWFkIG9mICJUWj1BbWVyaWNhL1ZhbmNvdXZlciIgaW4gb3JkZXIgdG8gZGV0
ZWN0IHRoZSBidWcgZXZlbgorICAgICBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUg
T2xzb24gZXh0ZW5zaW9uLCBvciBkb24ndCBoYXZlIHRoZQorICAgICBmdWxsIHpvbmVpbmZvIHRh
YmxlcyBpbnN0YWxsZWQuICAqLworICBwdXRlbnYgKChjaGFyKikgIlRaPVBTVDhQRFQsTTQuMS4w
LE0xMC41LjAiKTsKKworICB0ID0gbWt0aW1lICgmdG0pOworCisgIC8qIENoZWNrIHRoYXQgdGhl
IHJlc3VsdCBpcyBlaXRoZXIgYSBmYWlsdXJlLCBvciBjbG9zZSBlbm91Z2gKKyAgICAgdG8gdGhl
IGNvcnJlY3QgYW5zd2VyIHRoYXQgd2UgY2FuIGFzc3VtZSB0aGUgZGlzY3JlcGFuY3kgaXMKKyAg
ICAgZHVlIHRvIGxlYXAgc2Vjb25kcy4gICovCisgIHJldHVybiAodCA9PSAodGltZV90KSAtMQor
CSAgfHwgKDAgPCB0ICYmIGFuc3dlciAtIDEyMCA8PSB0ICYmIHQgPD0gYW5zd2VyICsgMTIwKSk7
Cit9CisKK2ludAorbWFpbiAoKQoreworICB0aW1lX3QgdCwgZGVsdGE7CisgIGludCBpLCBqOwor
CisgIC8qIFRoaXMgdGVzdCBtYWtlcyBzb21lIGJ1Z2d5IG1rdGltZSBpbXBsZW1lbnRhdGlvbnMg
bG9vcC4KKyAgICAgR2l2ZSB1cCBhZnRlciA2MCBzZWNvbmRzOyBhIG1rdGltZSBzbG93ZXIgdGhh
biB0aGF0CisgICAgIGlzbid0IHdvcnRoIHVzaW5nIGFueXdheS4gICovCisgIGFsYXJtICg2MCk7
CisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICB0ID0gKHRpbWVfdF9tYXggPDwgMSkgKyAxOwor
ICAgICAgaWYgKHQgPD0gdGltZV90X21heCkKKwlicmVhazsKKyAgICAgIHRpbWVfdF9tYXggPSB0
OworICAgIH0KKyAgdGltZV90X21pbiA9IC0gKCh0aW1lX3QpIH4gKHRpbWVfdCkgMCA9PSAodGlt
ZV90KSAtMSkgLSB0aW1lX3RfbWF4OworCisgIGRlbHRhID0gdGltZV90X21heCAvIDk5NzsgLyog
YSBzdWl0YWJsZSBwcmltZSBudW1iZXIgKi8KKyAgZm9yIChpID0gMDsgaSA8IE5fU1RSSU5HUzsg
aSsrKQorICAgIHsKKyAgICAgIGlmICh0el9zdHJpbmdzW2ldKQorCXB1dGVudiAoKGNoYXIqKSB0
el9zdHJpbmdzW2ldKTsKKworICAgICAgZm9yICh0ID0gMDsgdCA8PSB0aW1lX3RfbWF4IC0gZGVs
dGE7IHQgKz0gZGVsdGEpCisJaWYgKCEgbWt0aW1lX3Rlc3QgKHQpKQorCSAgcmV0dXJuIDE7Cisg
ICAgICBpZiAoISAobWt0aW1lX3Rlc3QgKCh0aW1lX3QpIDEpCisJICAgICAmJiBta3RpbWVfdGVz
dCAoKHRpbWVfdCkgKDYwICogNjApKQorCSAgICAgJiYgbWt0aW1lX3Rlc3QgKCh0aW1lX3QpICg2
MCAqIDYwICogMjQpKSkpCisJcmV0dXJuIDE7CisKKyAgICAgIGZvciAoaiA9IDE7IDsgaiA8PD0g
MSkKKwlpZiAoISBiaWd0aW1lX3Rlc3QgKGopKQorCSAgcmV0dXJuIDE7CisJZWxzZSBpZiAoSU5U
X01BWCAvIDIgPCBqKQorCSAgYnJlYWs7CisgICAgICBpZiAoISBiaWd0aW1lX3Rlc3QgKElOVF9N
QVgpKQorCXJldHVybiAxOworICAgIH0KKyAgcmV0dXJuICEgKGlyaXhfNl80X2J1ZyAoKSAmJiBz
cHJpbmdfZm9yd2FyZF9nYXAgKCkgJiYgeWVhcl8yMDUwX3Rlc3QgKCkpOworfQorX0FDRU9GCitp
ZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY193b3JraW5n
X21rdGltZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY193b3JraW5nX21rdGltZT1ubworZmkKK3Jt
IC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3Qk
YWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0
LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X2Z1bmNfd29ya2luZ19ta3RpbWUiID4mNQorJGFzX2VjaG8gIiRh
Y19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2Z1bmNfd29y
a2luZ19ta3RpbWUgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBta3Rp
bWUuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIG1rdGltZS4kYWNf
b2JqZXh0IgorIDs7Citlc2FjCisKK2ZpCisKKworCisKKworCitmb3IgYWNfZnVuYyBpbiBnZXRw
YWdlc2l6ZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRwYWdlc2l6
ZSIgImFjX2N2X2Z1bmNfZ2V0cGFnZXNpemUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0cGFn
ZXNpemUiID0geCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2Rl
ZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKK19BQ0VPRgorCitmaQorZG9uZQorCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcC4uLiAiID4mNjsgfQor
aWYgdGVzdCAiJHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkK3NldH0iID0gc2V0OyB0aGVu
IDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVk
PW5vCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisvKiBtYWxsb2Mg
bWlnaHQgaGF2ZSBiZWVuIHJlbmFtZWQgYXMgcnBsX21hbGxvYy4gKi8KKyN1bmRlZiBtYWxsb2MK
KworLyogVGhhbmtzIHRvIE1pa2UgSGFlcnRlbCBhbmQgSmltIEF2ZXJhIGZvciB0aGlzIHRlc3Qu
CisgICBIZXJlIGlzIGEgbWF0cml4IG9mIG1tYXAgcG9zc2liaWxpdGllczoKKwltbWFwIHByaXZh
dGUgbm90IGZpeGVkCisJbW1hcCBwcml2YXRlIGZpeGVkIGF0IHNvbWV3aGVyZSBjdXJyZW50bHkg
dW5tYXBwZWQKKwltbWFwIHByaXZhdGUgZml4ZWQgYXQgc29tZXdoZXJlIGFscmVhZHkgbWFwcGVk
CisJbW1hcCBzaGFyZWQgbm90IGZpeGVkCisJbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJl
IGN1cnJlbnRseSB1bm1hcHBlZAorCW1tYXAgc2hhcmVkIGZpeGVkIGF0IHNvbWV3aGVyZSBhbHJl
YWR5IG1hcHBlZAorICAgRm9yIHByaXZhdGUgbWFwcGluZ3MsIHdlIHNob3VsZCB2ZXJpZnkgdGhh
dCBjaGFuZ2VzIGNhbm5vdCBiZSByZWFkKCkKKyAgIGJhY2sgZnJvbSB0aGUgZmlsZSwgbm9yIG1t
YXAncyBiYWNrIGZyb20gdGhlIGZpbGUgYXQgYSBkaWZmZXJlbnQKKyAgIGFkZHJlc3MuICAoVGhl
cmUgaGF2ZSBiZWVuIHN5c3RlbXMgd2hlcmUgcHJpdmF0ZSB3YXMgbm90IGNvcnJlY3RseQorICAg
aW1wbGVtZW50ZWQgbGlrZSB0aGUgaW5mYW1vdXMgaTM4NiBzdnI0LjAsIGFuZCBzeXN0ZW1zIHdo
ZXJlIHRoZQorICAgVk0gcGFnZSBjYWNoZSB3YXMgbm90IGNvaGVyZW50IHdpdGggdGhlIGZpbGUg
c3lzdGVtIGJ1ZmZlciBjYWNoZQorICAgbGlrZSBlYXJseSB2ZXJzaW9ucyBvZiBGcmVlQlNEIGFu
ZCBwb3NzaWJseSBjb250ZW1wb3JhcnkgTmV0QlNELikKKyAgIEZvciBzaGFyZWQgbWFwcGluZ3Ms
IHdlIHNob3VsZCBjb252ZXJzZWx5IHZlcmlmeSB0aGF0IGNoYW5nZXMgZ2V0CisgICBwcm9wYWdh
dGVkIGJhY2sgdG8gYWxsIHRoZSBwbGFjZXMgdGhleSdyZSBzdXBwb3NlZCB0byBiZS4KKworICAg
R3JlcCB3YW50cyBwcml2YXRlIGZpeGVkIGFscmVhZHkgbWFwcGVkLgorICAgVGhlIG1haW4gdGhp
bmdzIGdyZXAgbmVlZHMgdG8ga25vdyBhYm91dCBtbWFwIGFyZToKKyAgICogZG9lcyBpdCBleGlz
dCBhbmQgaXMgaXQgc2FmZSB0byB3cml0ZSBpbnRvIHRoZSBtbWFwJ2QgYXJlYQorICAgKiBob3cg
dG8gdXNlIGl0IChCU0QgdmFyaWFudHMpICAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxzeXMvbW1hbi5oPgorCisjaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmICFkZWZpbmVk
IEhBVkVfU1RETElCX0gKK2NoYXIgKm1hbGxvYyAoKTsKKyNlbmRpZgorCisvKiBUaGlzIG1lc3Mg
d2FzIGNvcGllZCBmcm9tIHRoZSBHTlUgZ2V0cGFnZXNpemUuaC4gICovCisjaWZuZGVmIEhBVkVf
R0VUUEFHRVNJWkUKKyMgaWZkZWYgX1NDX1BBR0VTSVpFCisjICBkZWZpbmUgZ2V0cGFnZXNpemUo
KSBzeXNjb25mKF9TQ19QQUdFU0laRSkKKyMgZWxzZSAvKiBubyBfU0NfUEFHRVNJWkUgKi8KKyMg
IGlmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyMgICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyMgICBp
ZmRlZiBFWEVDX1BBR0VTSVpFCisjICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIEVYRUNfUEFHRVNJ
WkUKKyMgICBlbHNlIC8qIG5vIEVYRUNfUEFHRVNJWkUgKi8KKyMgICAgaWZkZWYgTkJQRworIyAg
ICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgTkJQRyAqIENMU0laRQorIyAgICAgaWZuZGVmIENMU0la
RQorIyAgICAgIGRlZmluZSBDTFNJWkUgMQorIyAgICAgZW5kaWYgLyogbm8gQ0xTSVpFICovCisj
ICAgIGVsc2UgLyogbm8gTkJQRyAqLworIyAgICAgaWZkZWYgTkJQQworIyAgICAgIGRlZmluZSBn
ZXRwYWdlc2l6ZSgpIE5CUEMKKyMgICAgIGVsc2UgLyogbm8gTkJQQyAqLworIyAgICAgIGlmZGVm
IFBBR0VTSVpFCisjICAgICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIFBBR0VTSVpFCisjICAgICAg
ZW5kaWYgLyogUEFHRVNJWkUgKi8KKyMgICAgIGVuZGlmIC8qIG5vIE5CUEMgKi8KKyMgICAgZW5k
aWYgLyogbm8gTkJQRyAqLworIyAgIGVuZGlmIC8qIG5vIEVYRUNfUEFHRVNJWkUgKi8KKyMgIGVs
c2UgLyogbm8gSEFWRV9TWVNfUEFSQU1fSCAqLworIyAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIDgx
OTIJLyogcHVudCB0b3RhbGx5ICovCisjICBlbmRpZiAvKiBubyBIQVZFX1NZU19QQVJBTV9IICov
CisjIGVuZGlmIC8qIG5vIF9TQ19QQUdFU0laRSAqLworCisjZW5kaWYgLyogbm8gSEFWRV9HRVRQ
QUdFU0laRSAqLworCitpbnQKK21haW4gKCkKK3sKKyAgY2hhciAqZGF0YSwgKmRhdGEyLCAqZGF0
YTM7CisgIGNvbnN0IGNoYXIgKmNkYXRhMjsKKyAgaW50IGksIHBhZ2VzaXplOworICBpbnQgZmQs
IGZkMjsKKworICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOworCisgIC8qIEZpcnN0LCBtYWtl
IGEgZmlsZSB3aXRoIHNvbWUga25vd24gZ2FyYmFnZSBpbiBpdC4gKi8KKyAgZGF0YSA9IChjaGFy
ICopIG1hbGxvYyAocGFnZXNpemUpOworICBpZiAoIWRhdGEpCisgICAgcmV0dXJuIDE7CisgIGZv
ciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgICooZGF0YSArIGkpID0gcmFuZCAoKTsK
KyAgdW1hc2sgKDApOworICBmZCA9IGNyZWF0ICgiY29uZnRlc3QubW1hcCIsIDA2MDApOworICBp
ZiAoZmQgPCAwKQorICAgIHJldHVybiAyOworICBpZiAod3JpdGUgKGZkLCBkYXRhLCBwYWdlc2l6
ZSkgIT0gcGFnZXNpemUpCisgICAgcmV0dXJuIDM7CisgIGNsb3NlIChmZCk7CisKKyAgLyogTmV4
dCwgY2hlY2sgdGhhdCB0aGUgdGFpbCBvZiBhIHBhZ2UgaXMgemVyby1maWxsZWQuICBGaWxlIG11
c3QgaGF2ZQorICAgICBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSB3ZSByaXNrIFNJR0JVUyBm
b3IgZW50aXJlIHBhZ2UuICAqLworICBmZDIgPSBvcGVuICgiY29uZnRlc3QudHh0IiwgT19SRFdS
IHwgT19DUkVBVCB8IE9fVFJVTkMsIDA2MDApOworICBpZiAoZmQyIDwgMCkKKyAgICByZXR1cm4g
NDsKKyAgY2RhdGEyID0gIiI7CisgIGlmICh3cml0ZSAoZmQyLCBjZGF0YTIsIDEpICE9IDEpCisg
ICAgcmV0dXJuIDU7CisgIGRhdGEyID0gKGNoYXIgKikgbW1hcCAoMCwgcGFnZXNpemUsIFBST1Rf
UkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkMiwgMEwpOworICBpZiAoZGF0YTIgPT0g
TUFQX0ZBSUxFRCkKKyAgICByZXR1cm4gNjsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyAr
K2kpCisgICAgaWYgKCooZGF0YTIgKyBpKSkKKyAgICAgIHJldHVybiA3OworICBjbG9zZSAoZmQy
KTsKKyAgaWYgKG11bm1hcCAoZGF0YTIsIHBhZ2VzaXplKSkKKyAgICByZXR1cm4gODsKKworICAv
KiBOZXh0LCB0cnkgdG8gbW1hcCB0aGUgZmlsZSBhdCBhIGZpeGVkIGFkZHJlc3Mgd2hpY2ggYWxy
ZWFkeSBoYXMKKyAgICAgc29tZXRoaW5nIGVsc2UgYWxsb2NhdGVkIGF0IGl0LiAgSWYgd2UgY2Fu
LCBhbHNvIG1ha2Ugc3VyZSB0aGF0CisgICAgIHdlIHNlZSB0aGUgc2FtZSBnYXJiYWdlLiAgKi8K
KyAgZmQgPSBvcGVuICgiY29uZnRlc3QubW1hcCIsIE9fUkRXUik7CisgIGlmIChmZCA8IDApCisg
ICAgcmV0dXJuIDk7CisgIGlmIChkYXRhMiAhPSBtbWFwIChkYXRhMiwgcGFnZXNpemUsIFBST1Rf
UkVBRCB8IFBST1RfV1JJVEUsCisJCSAgICAgTUFQX1BSSVZBVEUgfCBNQVBfRklYRUQsIGZkLCAw
TCkpCisgICAgcmV0dXJuIDEwOworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAg
ICBpZiAoKihkYXRhICsgaSkgIT0gKihkYXRhMiArIGkpKQorICAgICAgcmV0dXJuIDExOworCisg
IC8qIEZpbmFsbHksIG1ha2Ugc3VyZSB0aGF0IGNoYW5nZXMgdG8gdGhlIG1hcHBlZCBhcmVhIGRv
IG5vdAorICAgICBwZXJjb2xhdGUgYmFjayB0byB0aGUgZmlsZSBhcyBzZWVuIGJ5IHJlYWQoKS4g
IChUaGlzIGlzIGEgYnVnIG9uCisgICAgIHNvbWUgdmFyaWFudHMgb2YgaTM4NiBzdnI0LjAuKSAg
Ki8KKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgKihkYXRhMiArIGkpID0g
KihkYXRhMiArIGkpICsgMTsKKyAgZGF0YTMgPSAoY2hhciAqKSBtYWxsb2MgKHBhZ2VzaXplKTsK
KyAgaWYgKCFkYXRhMykKKyAgICByZXR1cm4gMTI7CisgIGlmIChyZWFkIChmZCwgZGF0YTMsIHBh
Z2VzaXplKSAhPSBwYWdlc2l6ZSkKKyAgICByZXR1cm4gMTM7CisgIGZvciAoaSA9IDA7IGkgPCBw
YWdlc2l6ZTsgKytpKQorICAgIGlmICgqKGRhdGEgKyBpKSAhPSAqKGRhdGEzICsgaSkpCisgICAg
ICByZXR1cm4gMTQ7CisgIGNsb3NlIChmZCk7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBh
Y19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVk
X21hcHBlZD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubworZmkK
K3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl
c3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0
ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4mNQorJGFzX2Vj
aG8gIiRhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2
X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUg
SEFWRV9NTUFQIDEiID4+Y29uZmRlZnMuaAorCitmaQorcm0gLWYgY29uZnRlc3QubW1hcCBjb25m
dGVzdC50eHQKKworZm9yIGFjX2hlYWRlciBpbiBzdGRsaWIuaAorZG8gOgorICBhY19mbl9jX2No
ZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic3RkbGliLmgiICJhY19jdl9oZWFkZXJfc3Rk
bGliX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0
ZGxpYl9oIiA9IHgiInllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNk
ZWZpbmUgSEFWRV9TVERMSUJfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbGliYyBjb21w
YXRpYmxlIHJlYWxsb2MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNv
bXBhdGlibGUgcmVhbGxvYy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX3JlYWxs
b2NfMF9ub25udWxsK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgor
ICBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPW5vCitlbHNlCisgIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp
ZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIEhBVkVfU1RETElCX0gKKyMgaW5jbHVk
ZSA8c3RkbGliLmg+CisjZWxzZQorY2hhciAqcmVhbGxvYyAoKTsKKyNlbmRpZgorCitpbnQKK21h
aW4gKCkKK3sKK3JldHVybiAhIHJlYWxsb2MgKDAsIDApOworICA7CisgIHJldHVybiAwOworfQor
X0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVu
Y19yZWFsbG9jXzBfbm9ubnVsbD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9u
bnVsbD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBi
Yi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz
dC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGwi
ID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsIiA+JjY7IH0KK2lm
IHRlc3QgJGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGwgPSB5ZXM7IHRoZW4gOgorCiskYXNf
ZWNobyAiI2RlZmluZSBIQVZFX1JFQUxMT0MgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgJGFz
X2VjaG8gIiNkZWZpbmUgSEFWRV9SRUFMTE9DIDAiID4+Y29uZmRlZnMuaAorCisgICBjYXNlICIg
JExJQk9CSlMgIiBpbgorICAqIiByZWFsbG9jLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJP
QkpTPSIkTElCT0JKUyByZWFsbG9jLiRhY19vYmpleHQiCisgOzsKK2VzYWMKKworCiskYXNfZWNo
byAiI2RlZmluZSByZWFsbG9jIHJwbF9yZWFsbG9jIiA+PmNvbmZkZWZzLmgKKworZmkKKworCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3Jr
aW5nIHN0cm5sZW4iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3Rybmxl
bi4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZytzZXR9
IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlm
IHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19zdHJu
bGVuX3dvcmtpbmc9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQK
K2ludAorbWFpbiAoKQoreworCisjZGVmaW5lIFMgImZvb2JhciIKKyNkZWZpbmUgU19MRU4gKHNp
emVvZiBTIC0gMSkKKworICAvKiBBdCBsZWFzdCBvbmUgaW1wbGVtZW50YXRpb24gaXMgYnVnZ3k6
IHRoYXQgb2YgQUlYIDQuMyB3b3VsZAorICAgICBnaXZlIHN0cm5sZW4gKFMsIDEpID09IDMuICAq
LworCisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU19MRU4gKyAxOyArK2kpCisgICAgewor
ICAgICAgaW50IGV4cGVjdGVkID0gaSA8PSBTX0xFTiA/IGkgOiBTX0xFTjsKKyAgICAgIGlmIChz
dHJubGVuIChTLCBpKSAhPSBleHBlY3RlZCkKKwlyZXR1cm4gMTsKKyAgICB9CisgIHJldHVybiAw
OworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJ
TkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZz15ZXMKK2Vsc2UKKyAg
YWNfY3ZfZnVuY19zdHJubGVuX3dvcmtpbmc9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9m
dW5jX3N0cm5sZW5fd29ya2luZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfc3Rybmxlbl93
b3JraW5nIiA+JjY7IH0KK3Rlc3QgJGFjX2N2X2Z1bmNfc3Rybmxlbl93b3JraW5nID0gbm8gJiYg
Y2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgc3Rybmxlbi4kYWNfb2JqZXh0ICIqICkgOzsKKyAg
KikgTElCT0JKUz0iJExJQk9CSlMgc3Rybmxlbi4kYWNfb2JqZXh0IgorIDs7Citlc2FjCisKKwor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29y
a2luZyBzdHJ0b2QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3RydG9k
Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfc3RydG9kK3NldH0iID0gc2V0OyB0
aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3N0cnRvZD1ubworZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisKKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaWZuZGVmIHN0cnRvZAor
ZG91YmxlIHN0cnRvZCAoKTsKKyNlbmRpZgoraW50CittYWluKCkKK3sKKyAgeworICAgIC8qIFNv
bWUgdmVyc2lvbnMgb2YgTGludXggc3RydG9kIG1pcy1wYXJzZSBzdHJpbmdzIHdpdGggbGVhZGlu
ZyAnKycuICAqLworICAgIGNoYXIgKnN0cmluZyA9ICIgKzY5IjsKKyAgICBjaGFyICp0ZXJtOwor
ICAgIGRvdWJsZSB2YWx1ZTsKKyAgICB2YWx1ZSA9IHN0cnRvZCAoc3RyaW5nLCAmdGVybSk7Cisg
ICAgaWYgKHZhbHVlICE9IDY5IHx8IHRlcm0gIT0gKHN0cmluZyArIDQpKQorICAgICAgcmV0dXJu
IDE7CisgIH0KKworICB7CisgICAgLyogVW5kZXIgU29sYXJpcyAyLjQsIHN0cnRvZCByZXR1cm5z
IHRoZSB3cm9uZyB2YWx1ZSBmb3IgdGhlCisgICAgICAgdGVybWluYXRpbmcgY2hhcmFjdGVyIHVu
ZGVyIHNvbWUgY29uZGl0aW9ucy4gICovCisgICAgY2hhciAqc3RyaW5nID0gIk5hTiI7CisgICAg
Y2hhciAqdGVybTsKKyAgICBzdHJ0b2QgKHN0cmluZywgJnRlcm0pOworICAgIGlmICh0ZXJtICE9
IHN0cmluZyAmJiAqKHRlcm0gLSAxKSA9PSAwKQorICAgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0
dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6
CisgIGFjX2N2X2Z1bmNfc3RydG9kPXllcworZWxzZQorICBhY19jdl9mdW5jX3N0cnRvZD1ubwor
ZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29u
ZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv
bmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfc3RydG9kIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfZnVuY19zdHJ0b2QiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19zdHJ0b2QgPSBubzsg
dGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBzdHJ0b2QuJGFjX29iamV4dCAiKiAp
IDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cnRvZC4kYWNfb2JqZXh0IgorIDs7Citlc2Fj
CisKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInBvdyIgImFjX2N2X2Z1bmNfcG93Igor
aWYgdGVzdCAieCRhY19jdl9mdW5jX3BvdyIgPSB4IiJ5ZXM7IHRoZW4gOgorCitmaQorCitpZiB0
ZXN0ICRhY19jdl9mdW5jX3BvdyA9IG5vOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHBvdyBpbiAtbG0iID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yIHBvdyBpbiAtbG0uLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zf
bGliX21fcG93K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxtICAkTElC
UyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUg
dG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0
aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50
IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIKKyNlbmRpZgorY2hhciBwb3cgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBw
b3cgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsg
IiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX21fcG93PXllcworZWxzZQorICBhY19jdl9s
aWJfbV9wb3c9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNf
Y2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX21fcG93IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zf
bGliX21fcG93IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX21fcG93IiA9IHgiInllczsg
dGhlbiA6CisgIFBPV19MSUI9LWxtCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGZpbmQgbGlicmFyeSBjb250YWluaW5nIGRl
ZmluaXRpb24gb2YgcG93IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBm
aW5kIGxpYnJhcnkgY29udGFpbmluZyBkZWZpbml0aW9uIG9mIHBvdyIgPiYyO30KK2ZpCisKK2Zp
CisKK2ZpCisKK2ZvciBhY19mdW5jIGluICBcCisgICAgICAgICAgICAgICAgYWxhcm0gYXRleGl0
IGJ6ZXJvIGNsb2NrX2dldHRpbWUgZHVwMiBmZGF0YXN5bmMgZnRydW5jYXRlIFwKKyAgICAgICAg
ICAgICAgICBnZXRjd2QgZ2V0aG9zdGJ5bmFtZSBnZXRob3N0bmFtZSBnZXRwYWdlc2l6ZSBnZXR0
aW1lb2ZkYXkgXAorICAgICAgICAgICAgICAgIGluZXRfbnRvYSBpc2FzY2lpIGxvY2FsdGltZV9y
IG1lbWNociBtZW1tb3ZlIG1lbXNldCBta2RpciBcCisgICAgICAgICAgICAgICAgbWtmaWZvIG11
bm1hcCBwYXRoY29uZiByZWFscGF0aCByZWdjb21wIHJtZGlyIHNlbGVjdCBzZXRlbnYgXAorICAg
ICAgICAgICAgICAgIHNvY2tldCBzdHJjYXNlY21wIHN0cmNociBzdHJjc3BuIHN0cmR1cCBzdHJl
cnJvciBzdHJuZHVwIFwKKyAgICAgICAgICAgICAgICBzdHJwYnJrIHN0cnJjaHIgc3Ryc3BuIHN0
cnN0ciBzdHJ0b2wgc3RydG91bCBzdHJ0b3VsbCB0enNldCBcCisgICAgICAgICAgICAgICAgdW5h
bWUgXAorCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMi
IHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIk
YXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRo
ZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFW
RV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2RvbmUKKworCitjYXQg
PmNvbmZjYWNoZSA8PFxfQUNFT0YKKyMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQg
Y2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQorIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0
ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlCisjIHNjcmlwdHMgYW5k
IGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgor
IyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1
bHRzIHlvdSBkb24ndAorIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQu
CisjCisjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmls
ZSBpZiB5b3UgZ2l2ZSBpdAorIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1
cmUuCisjCisjIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBi
ZSBvdmVycmlkZGVuIHdoZW4KKyMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVyICp1bnNldCogYGFj
X2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKKyMgZm9sbG93aW5nIHZhbHVlcy4KKworX0FD
RU9GCisKKyMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxl
cyBuZXdsaW5lcyBpbiB2YWx1ZXMsCisjIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQgdGhh
dCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgorIyBTbywgd2Uga2lsbCB2YXJp
YWJsZXMgY29udGFpbmluZyBuZXdsaW5lcy4KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3Rk
ZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LAorIyBhbmQgc2V0cyB0aGUgaGln
aCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KKygK
KyAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16
QS1aMC05X10qXCk9LiovXDEvcCdgOyBkbworICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAg
IGNhc2UgJGFjX3ZhbCBpbiAjKAorICAgICoke2FzX25sfSopCisgICAgICBjYXNlICRhY192YXIg
aW4gIygKKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNv
bnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKKyAgICAgIGVzYWMKKyAgICAgIGNhc2UgJGFjX3Zh
ciBpbiAjKAorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAorICAgICAgQkFTSF9BUkdWIHwg
QkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKyAgICAgICopIHsgZXZhbCAkYWNfdmFy
PTsgdW5zZXQgJGFjX3Zhcjt9IDs7CisgICAgICBlc2FjIDs7CisgICAgZXNhYworICBkb25lCisK
KyAgKHNldCkgMj4mMSB8CisgICAgY2FzZSAkYXNfbmxgKGFjX3NwYWNlPScgJzsgc2V0KSAyPiYx
YCBpbiAjKAorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikKKyAgICAgICMgYHNldCcgZG9lcyBu
b3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUKKyAgICAgICMg
c3Vic3RpdHV0aW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwu
CisgICAgICBzZWQgLW4gXAorCSJzLycvJ1xcXFwnJy9nOworCSAgcy9eXFwoW18kYXNfY3JfYWxu
dW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXFwyJy9wIgorICAgICAg
OzsgIygKKyAgICAqKQorICAgICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFzIHJlcXVpcmVk
IGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KKyAgICAgIHNlZCAtbiAiL15bXyRhc19j
cl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCisgICAgICA7OworICAgIGVzYWMgfAor
ICAgIHNvcnQKKykgfAorICBzZWQgJworICAgICAvXmFjX2N2X2Vudl8vYiBlbmQKKyAgICAgdCBj
bGVhcgorICAgICA6Y2xlYXIKKyAgICAgcy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAi
JHtcMStzZXR9IiA9IHNldCB8fCAmLworICAgICB0IGVuZAorICAgICBzL15cKFtePV0qXCk9XCgu
KlwpJC9cMT0ke1wxPVwyfS8KKyAgICAgOmVuZCcgPj5jb25mY2FjaGUKK2lmIGRpZmYgIiRjYWNo
ZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKKyAgaWYgdGVz
dCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9k
ZXYvbnVsbCIgJiYKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogdXBk
YXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgICAgY2F0IGNvbmZjYWNoZSA+JGNhY2hl
X2ZpbGUKKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2Vj
aG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4m
Njt9CisgIGZpCitmaQorcm0gLWYgY29uZmNhY2hlCisKK3Rlc3QgIngkcHJlZml4IiA9IHhOT05F
ICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKKyMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJl
Zml4LgordGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVm
aXh9JworCitERUZTPS1ESEFWRV9DT05GSUdfSAorCithY19saWJvYmpzPQorYWNfbHRsaWJvYmpz
PQorVT0KK2ZvciBhY19pIGluIDogJExJQk9CSlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBj
b250aW51ZQorICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBp
bnN0YWxsZWQuCisgIGFjX3NjcmlwdD0ncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJwor
ICBhY19pPWAkYXNfZWNobyAiJGFjX2kiIHwgc2VkICIkYWNfc2NyaXB0ImAKKyAgIyAyLiBQcmVw
ZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUgor
ICAjICAgIHdpbGwgYmUgc2V0IHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgTElCT0JKUyBvYmplY3Rz
IGFyZSBidWlsdC4KKyAgYXNfZm5fYXBwZW5kIGFjX2xpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFj
X2lcJFUuJGFjX29iamV4dCIKKyAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9C
SkRJUn0kYWNfaSInJFUubG8nCitkb25lCitMSUJPQkpTPSRhY19saWJvYmpzCisKK0xUTElCT0JK
Uz0kYWNfbHRsaWJvYmpzCisKKworCis6ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9
CithY193cml0ZV9mYWlsPTAKK2FjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCith
Y19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY2O30KK2Fz
X3dyaXRlX2ZhaWw9MAorY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9m
YWlsPTEKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgorIyBSdW4gdGhpcyBmaWxl
IHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisjIENvbXBpbGVyIG91dHB1
dCBwcm9kdWNlZCBieSBjb25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nCisjIGNvbmZpZ3Vy
ZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCisKK2RlYnVnPWZhbHNlCithY19jc19y
ZWNoZWNrPWZhbHNlCithY19jc19zaWxlbnQ9ZmFsc2UKKworU0hFTEw9XCR7Q09ORklHX1NIRUxM
LSRTSEVMTH0KK2V4cG9ydCBTSEVMTAorX0FTRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxf
QVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
TTRzaCBJbml0aWFsaXphdGlvbi4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMg
QmUgbW9yZSBCb3VybmUgY29tcGF0aWJsZQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMg
Zm9yIE1LUyBzaAoraWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBz
aCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAg
IyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0s
IHdoaWNoCisgICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1
cmUuCisgIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJworICBzZXRvcHQgTk9fR0xPQl9TVUJT
VAorZWxzZQorICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygKKyAgKnBvc2l4Kikg
OgorICAgIHNldCAtbyBwb3NpeCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorCisK
K2FzX25sPScKKycKK2V4cG9ydCBhc19ubAorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNo
ZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4KK2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8k
YXNfZWNobyRhc19lY2hvJGFzX2VjaG8KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hv
JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCisjIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92
ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywKKyMgYnV0IHdpdGhvdXQg
d2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9O
JFpTSF9WRVJTSU9OIiBcCisgICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9
ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19lY2hvPSdwcmludCAtciAtLScK
KyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nCitlbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNf
ZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50
ZiAlc1xuJworICBhc19lY2hvX249J3ByaW50ZiAlcycKK2Vsc2UKKyAgaWYgdGVzdCAiWGAoL3Vz
ci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8i
OyB0aGVuCisgICAgYXNfZWNob19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25s
IicKKyAgICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4nCisgIGVsc2UKKyAgICBhc19lY2hv
X2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCkiJworICAgIGFzX2VjaG9fbl9ib2R5
PSdldmFsCisgICAgICBhcmc9JDE7CisgICAgICBjYXNlICRhcmcgaW4gIygKKyAgICAgICoiJGFz
X25sIiopCisJZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7CisJYXJnPWBleHByICJY
JGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsKKyAgICAgIGVzYWM7CisgICAgICBleHByICJY
JGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiCisgICAgJworICAgIGV4cG9ydCBh
c19lY2hvX25fYm9keQorICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2Vj
aG8nCisgIGZpCisgIGV4cG9ydCBhc19lY2hvX2JvZHkKKyAgYXNfZWNobz0nc2ggLWMgJGFzX2Vj
aG9fYm9keSBhc19lY2hvJworZmkKKworIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0
ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICBQQVRIX1NFUEFSQVRP
Uj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVs
bCAyPiYxICYmIHsKKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDop
ID4vZGV2L251bGwgMj4mMSB8fAorICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCisgIH0KK2ZpCisK
KworIyBJRlMKKyMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5
IHRoYXQgb3JkZXIuICBRdW90aW5nIGlzCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9t
IGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBj
YWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAorIyBzcGxpdHRpbmcg
Ynkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQorSUZTPSIgIiIJJGFzX25sIgorCisjIEZp
bmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rv
cnkgc2VwYXJhdG9yLgorY2FzZSAkMCBpbiAjKCgKKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7
OworICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGly
IGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYm
IGFzX2Rpcj0uCisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIv
JDAgJiYgYnJlYWsKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgICAgIDs7Citlc2FjCisj
IFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMg
YHNoIENPTU1BTkQnCisjIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0
aGUgcGF0aC4KK2lmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KKyAgYXNfbXlzZWxmPSQw
CitmaQoraWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgorICAkYXNfZWNobyAiJGFzX215
c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBm
aWxlIG5hbWUiID4mMgorICBleGl0IDEKK2ZpCisKKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2Ug
ZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KKyMgcHJlLTMuMCBVV0lO
IGtzaCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQg
MSIKKyMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4g
ICcoKCcgY291bGQKKyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCitmb3IgYXNfdmFy
IGluIEJBU0hfRU5WIEVOViBNQUlMIE1BSUxQQVRICitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIr
c2V0fSA9IHhzZXQgXAorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251
bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKK2RvbmUKK1BTMT0nJCAnCitQUzI9Jz4gJwor
UFM0PScrICcKKworIyBOTFMgbnVpc2FuY2VzLgorTENfQUxMPUMKK2V4cG9ydCBMQ19BTEwKK0xB
TkdVQUdFPUMKK2V4cG9ydCBMQU5HVUFHRQorCisjIENEUEFUSC4KKyh1bnNldCBDRFBBVEgpID4v
ZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKKworCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBF
UlJPUiBbTElORU5PIExPR19GRF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJy
LiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKKyMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBl
cnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQorIyBzY3Jp
cHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KK2FzX2ZuX2Vycm9yICgpCit7
CisgIGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCisg
IGlmIHRlc3QgIiQ0IjsgdGhlbgorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19s
aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKKyAgZmkKKyAg
JGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKKyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVz
Cit9ICMgYXNfZm5fZXJyb3IKKworCisjIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4K
K2FzX2ZuX3NldF9zdGF0dXMgKCkKK3sKKyAgcmV0dXJuICQxCit9ICMgYXNfZm5fc2V0X3N0YXR1
cworCisjIGFzX2ZuX2V4aXQgU1RBVFVTCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIEV4aXQgdGhl
IHNoZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4
dC4KK2FzX2ZuX2V4aXQgKCkKK3sKKyAgc2V0ICtlCisgIGFzX2ZuX3NldF9zdGF0dXMgJDEKKyAg
ZXhpdCAkMQorfSAjIGFzX2ZuX2V4aXQKKworIyBhc19mbl91bnNldCBWQVIKKyMgLS0tLS0tLS0t
LS0tLS0tCisjIFBvcnRhYmx5IHVuc2V0IFZBUi4KK2FzX2ZuX3Vuc2V0ICgpCit7CisgIHsgZXZh
bCAkMT07IHVuc2V0ICQxO30KK30KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0CisjIGFzX2ZuX2FwcGVu
ZCBWQVIgVkFMVUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBcHBlbmQgdGhlIHRleHQg
aW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBU
YWtlCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFt
b3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXIKKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBv
ZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKKyMgaW1wbGVt
ZW50YXRpb25zLgoraWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFy
ID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOgorICBldmFsICdhc19mbl9hcHBlbmQgKCkKKyAg
eworICAgIGV2YWwgJDErPVwkMgorICB9JworZWxzZQorICBhc19mbl9hcHBlbmQgKCkKKyAgewor
ICAgIGV2YWwgJDE9XCQkMVwkMgorICB9CitmaSAjIGFzX2ZuX2FwcGVuZAorCisjIGFzX2ZuX2Fy
aXRoIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2
YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZQorIyBnbG9i
YWwgJGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtz
LiBUaGUgYXJndW1lbnRzCisjIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHBy
LgoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6
CisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpCisgIHsKKyAgICBhc192YWw9JCgoICQqICkpCisgIH0n
CitlbHNlCisgIGFzX2ZuX2FyaXRoICgpCisgIHsKKyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0
ZXN0ICQ/IC1lcSAxYAorICB9CitmaSAjIGFzX2ZuX2FyaXRoCisKKworaWYgZXhwciBhIDogJ1wo
YVwpJyA+L2Rldi9udWxsIDI+JjEgJiYKKyAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4u
XCknYCIgPSBYMDAxOyB0aGVuCisgIGFzX2V4cHI9ZXhwcgorZWxzZQorICBhc19leHByPWZhbHNl
CitmaQorCitpZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFz
ZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCitl
bHNlCisgIGFzX2Jhc2VuYW1lPWZhbHNlCitmaQorCitpZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9g
ICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfZGly
bmFtZT1kaXJuYW1lCitlbHNlCisgIGFzX2Rpcm5hbWU9ZmFsc2UKK2ZpCisKK2FzX21lPWAkYXNf
YmFzZW5hbWUgLS0gIiQwIiB8fAorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkv
KiQnIFx8IFwKKwkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkMCIgOiAnWFwoL1wpJyBc
fCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYLyIkMCIgfAorICAgIHNlZCAnL14uKlwvXChb
Xi9dW14vXSpcKVwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXC9cKFwv
XC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXC9cKFwvXCkuKi97CisJ
ICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKworIyBBdm9pZCBkZXBl
bmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXonCithc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WicKK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUworYXNfY3JfZGln
aXRzPScwMTIzNDU2Nzg5JworYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRz
CisKK0VDSE9fQz0gRUNIT19OPSBFQ0hPX1Q9CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAor
LW4qKQorICBjYXNlIGBlY2hvICd4eVxjJ2AgaW4KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hP
X1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuCisgIHh5KSAgRUNIT19DPSdcYyc7OworICAqKSAg
IGVjaG8gYGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCisgICAgICAgRUNI
T19UPScJJzs7CisgIGVzYWM7OworKikKKyAgRUNIT19OPSctbic7OworZXNhYworCitybSAtZiBj
b25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVu
CisgIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUKK2Vsc2UKKyAgcm0gLWYgY29uZiQkLmRp
cgorICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCitmaQoraWYgKGVjaG8gPmNvbmYkJC5m
aWxlKSAyPi9kZXYvbnVsbDsgdGhlbgorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4v
ZGV2L251bGw7IHRoZW4KKyAgICBhc19sbl9zPSdsbiAtcycKKyAgICAjIC4uLiBidXQgdGhlcmUg
YXJlIHR3byBnb3RjaGFzOgorICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXIn
IGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5
bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCisgICAgIyBJbiBi
b3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4KKyAgICBsbiAtcyBjb25m
JCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8
CisgICAgICBhc19sbl9zPSdjcCAtcCcKKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4v
ZGV2L251bGw7IHRoZW4KKyAgICBhc19sbl9zPWxuCisgIGVsc2UKKyAgICBhc19sbl9zPSdjcCAt
cCcKKyAgZmkKK2Vsc2UKKyAgYXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYk
JC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQorcm1kaXIgY29uZiQkLmRp
ciAyPi9kZXYvbnVsbAorCisKKyMgYXNfZm5fbWtkaXJfcAorIyAtLS0tLS0tLS0tLS0tCisjIENy
ZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vz
c2FyeS4KK2FzX2ZuX21rZGlyX3AgKCkKK3sKKworICBjYXNlICRhc19kaXIgaW4gIygKKyAgLSop
IGFzX2Rpcj0uLyRhc19kaXI7OworICBlc2FjCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwg
JGFzX21rZGlyX3AgfHwgeworICAgIGFzX2RpcnM9CisgICAgd2hpbGUgOjsgZG8KKyAgICAgIGNh
c2UgJGFzX2RpciBpbiAjKAorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIi
IHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCisgICAgICAqKSBhc19xZGlyPSRhc19k
aXI7OworICAgICAgZXNhYworICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKKyAg
ICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19kaXIiIHx8CiskYXNfZXhwciBYIiRhc19k
aXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX2RpciIgOiAn
WFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRh
c19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWCIkYXNfZGly
IiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8v
XDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJ
ICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9
CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4v
OyBxJ2AKKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCisgICAgZG9uZQorICAgIHRl
c3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKKyAgfSB8fCB0ZXN0IC1k
ICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFz
X2RpciIKKworCit9ICMgYXNfZm5fbWtkaXJfcAoraWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsg
dGhlbgorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRlc3QgLWQg
Li8tcCAmJiBybWRpciAuLy1wCisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKK2lmIHRlc3QgLXgg
LyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdGVzdF94PSd0ZXN0IC14JworZWxzZQorICBp
ZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBhc19sc19MX29wdGlvbj1MCisg
IGVsc2UKKyAgICBhc19sc19MX29wdGlvbj0KKyAgZmkKKyAgYXNfdGVzdF94PScKKyAgICBldmFs
IHNoIC1jICdcJycKKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorCXRlc3QgLWQgIiQxLy4i
OworICAgICAgZWxzZQorCWNhc2UgJDEgaW4gIygKKwktKilzZXQgIi4vJDEiOzsKKwllc2FjOwor
CWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKAor
CT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkKKyAgICAnXCcnIHNoCisgICcKK2ZpCithc19l
eGVjdXRhYmxlX3A9JGFzX3Rlc3RfeAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmlu
ZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3Jf
bGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisjIFNl
ZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4K
K2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisK
KworZXhlYyA2PiYxCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwor
IyMgTWFpbiBib2R5IG9mICRDT05GSUdfU1RBVFVTIHNjcmlwdC4gIyMKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCitfQVNFT0YKK3Rlc3QgJGFzX3dyaXRlX2ZhaWwg
PSAwICYmIGNobW9kICt4ICRDT05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorCitjYXQg
Pj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIFNhdmUgdGhl
IGxvZyBtZXNzYWdlLCB0byBrZWVwICQwIGFuZCBzbyBvbiBtZWFuaW5nZnVsLCBhbmQgdG8KKyMg
cmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBv
ZiB0aGVpcgorIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KK2FjX2xvZz0iCitUaGlz
IGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05V
IEF1dG9jb25mIDIuNjcuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKworICBDT05GSUdf
RklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCisgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVB
REVSUworICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklHX0xJTktTCisgIENPTkZJR19DT01NQU5E
UyA9ICRDT05GSUdfQ09NTUFORFMKKyAgJCAkMCAkQAorCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1l
IC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKyIKKworX0FDRU9GCisKK2Nhc2UgJGFjX2NvbmZp
Z19maWxlcyBpbiAqIgorIiopIHNldCB4ICRhY19jb25maWdfZmlsZXM7IHNoaWZ0OyBhY19jb25m
aWdfZmlsZXM9JCo7OworZXNhYworCitjYXNlICRhY19jb25maWdfaGVhZGVycyBpbiAqIgorIiop
IHNldCB4ICRhY19jb25maWdfaGVhZGVyczsgc2hpZnQ7IGFjX2NvbmZpZ19oZWFkZXJzPSQqOzsK
K2VzYWMKKworCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWls
PTEKKyMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4KK2NvbmZpZ19maWxl
cz0iJGFjX2NvbmZpZ19maWxlcyIKK2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMi
CisKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVf
ZmFpbD0xCithY19jc191c2FnZT0iXAorXGAkYXNfbWUnIGluc3RhbnRpYXRlcyBmaWxlcyBhbmQg
b3RoZXIgY29uZmlndXJhdGlvbiBhY3Rpb25zCitmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8g
dGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUgZmlsZXMKK2FuZCBhY3Rpb25z
IGFyZSBzcGVjaWZpZWQgYXMgVEFHcywgYWxsIGFyZSBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdC4K
KworVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtUQUddLi4uCisKKyAgLWgsIC0taGVscCAgICAgICBw
cmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNp
b24gbnVtYmVyIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdzLCB0aGVuIGV4aXQKKyAgICAgIC0t
Y29uZmlnICAgICBwcmludCBjb25maWd1cmF0aW9uLCB0aGVuIGV4aXQKKyAgLXEsIC0tcXVpZXQs
IC0tc2lsZW50CisgICAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IHByb2dyZXNzIG1lc3Nh
Z2VzCisgIC1kLCAtLWRlYnVnICAgICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcworICAg
ICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2Ft
ZSBjb25kaXRpb25zCisgICAgICAtLWZpbGU9RklMRVs6VEVNUExBVEVdCisgICAgICAgICAgICAg
ICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFCisgICAgICAtLWhl
YWRlcj1GSUxFWzpURU1QTEFURV0KKyAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUg
Y29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQorCitDb25maWd1cmF0aW9uIGZpbGVzOgorJGNvbmZp
Z19maWxlcworCitDb25maWd1cmF0aW9uIGhlYWRlcnM6CiskY29uZmlnX2hlYWRlcnMKKworUmVw
b3J0IGJ1Z3MgdG8gdGhlIHBhY2thZ2UgcHJvdmlkZXIuIgorCitfQUNFT0YKK2NhdCA+PiRDT05G
SUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfY3NfY29uZmlnPSJgJGFz
X2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xc
XFwmL2cnYCIKK2FjX2NzX3ZlcnNpb249IlxcCitjb25maWcuc3RhdHVzCitjb25maWd1cmVkIGJ5
ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjcsCisgIHdpdGggb3B0aW9ucyBcXCJc
JGFjX2NzX2NvbmZpZ1xcIgorCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u
IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisKK2FjX3B3ZD0nJGFjX3B3ZCcK
K3NyY2Rpcj0nJHNyY2RpcicKK0lOU1RBTEw9JyRJTlNUQUxMJwordGVzdCAtbiAiXCRBV0siIHx8
IEFXSz1hd2sKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNf
d3JpdGVfZmFpbD0xCisjIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRvZXMg
bm90IHNwZWNpZnkgYW55IGZpbGUuCithY19uZWVkX2RlZmF1bHRzPToKK3doaWxlIHRlc3QgJCMg
IT0gMAorZG8KKyAgY2FzZSAkMSBpbgorICAtLSo9PyopCisgICAgYWNfb3B0aW9uPWBleHByICJY
JDEiIDogJ1hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0q
PVwoLipcKSdgCisgICAgYWNfc2hpZnQ9OgorICAgIDs7CisgIC0tKj0pCisgICAgYWNfb3B0aW9u
PWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9CisgICAgYWNfc2hp
ZnQ9OgorICAgIDs7CisgICopCisgICAgYWNfb3B0aW9uPSQxCisgICAgYWNfb3B0YXJnPSQyCisg
ICAgYWNfc2hpZnQ9c2hpZnQKKyAgICA7OworICBlc2FjCisKKyAgY2FzZSAkYWNfb3B0aW9uIGlu
CisgICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuCisgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwg
LS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQorICAgIGFj
X2NzX3JlY2hlY2s9OiA7OworICAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZl
cnMgfCAtLXZlciB8IC0tdmUgfCAtLXYgfCAtViApCisgICAgJGFzX2VjaG8gIiRhY19jc192ZXJz
aW9uIjsgZXhpdCA7OworICAtLWNvbmZpZyB8IC0tY29uZmkgfCAtLWNvbmYgfCAtLWNvbiB8IC0t
Y28gfCAtLWMgKQorICAgICRhc19lY2hvICIkYWNfY3NfY29uZmlnIjsgZXhpdCA7OworICAtLWRl
YnVnIHwgLS1kZWJ1IHwgLS1kZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQorICAgIGRlYnVnPTogOzsK
KyAgLS1maWxlIHwgLS1maWwgfCAtLWZpIHwgLS1mICkKKyAgICAkYWNfc2hpZnQKKyAgICBjYXNl
ICRhY19vcHRhcmcgaW4KKyAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJn
IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgICcnKSBhc19mbl9lcnJvciAkPyAi
bWlzc2luZyBmaWxlIGFyZ3VtZW50IiA7OworICAgIGVzYWMKKyAgICBhc19mbl9hcHBlbmQgQ09O
RklHX0ZJTEVTICIgJyRhY19vcHRhcmcnIgorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Owor
ICAtLWhlYWRlciB8IC0taGVhZGUgfCAtLWhlYWQgfCAtLWhlYSApCisgICAgJGFjX3NoaWZ0Cisg
ICAgY2FzZSAkYWNfb3B0YXJnIGluCisgICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFj
X29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKKyAgICBlc2FjCisgICAgYXNf
Zm5fYXBwZW5kIENPTkZJR19IRUFERVJTICIgJyRhY19vcHRhcmcnIgorICAgIGFjX25lZWRfZGVm
YXVsdHM9ZmFsc2U7OworICAtLWhlIHwgLS1oKQorICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhl
bHAgYW5kIC0taGVhZGVyCisgICAgYXNfZm5fZXJyb3IgJD8gImFtYmlndW91cyBvcHRpb246IFxg
JDEnCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiI7OworICAtLWhlbHAg
fCAtLWhlbCB8IC1oICkKKyAgICAkYXNfZWNobyAiJGFjX2NzX3VzYWdlIjsgZXhpdCA7OworICAt
cSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8
IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAt
LXMpCisgICAgYWNfY3Nfc2lsZW50PTogOzsKKworICAjIFRoaXMgaXMgYW4gZXJyb3IuCisgIC0q
KSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkMScKK1RyeSBcYCQwIC0t
aGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA7OworCisgICopIGFzX2ZuX2FwcGVuZCBhY19j
b25maWdfdGFyZ2V0cyAiICQxIgorICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlIDs7CisKKyAg
ZXNhYworICBzaGlmdAorZG9uZQorCithY19jb25maWd1cmVfZXh0cmFfYXJncz0KKworaWYgJGFj
X2NzX3NpbGVudDsgdGhlbgorICBleGVjIDY+L2Rldi9udWxsCisgIGFjX2NvbmZpZ3VyZV9leHRy
YV9hcmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCitmaQorCitfQUNFT0YK
K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQoraWYgXCRh
Y19jc19yZWNoZWNrOyB0aGVuCisgIHNldCBYICckU0hFTEwnICckMCcgJGFjX2NvbmZpZ3VyZV9h
cmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24K
KyAgc2hpZnQKKyAgXCRhc19lY2hvICJydW5uaW5nIENPTkZJR19TSEVMTD0kU0hFTEwgXCQqIiA+
JjYKKyAgQ09ORklHX1NIRUxMPSckU0hFTEwnCisgIGV4cG9ydCBDT05GSUdfU0hFTEwKKyAgZXhl
YyAiXCRAIgorZmkKKworX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwg
YWNfd3JpdGVfZmFpbD0xCitleGVjIDU+PmNvbmZpZy5sb2cKK3sKKyAgZWNobworICBzZWQgJ2g7
cy8uLy0vZztzL14uLi4vIyMgLztzLy4uLiQvICMjLztwO3g7cDt4JyA8PF9BU0JPWAorIyMgUnVu
bmluZyAkYXNfbWUuICMjCitfQVNCT1gKKyAgJGFzX2VjaG8gIiRhY19sb2ciCit9ID4mNQorCitf
QUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQor
X0FDRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWls
PTEKKworIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCitmb3IgYWNfY29uZmlnX3RhcmdldCBpbiAk
YWNfY29uZmlnX3RhcmdldHMKK2RvCisgIGNhc2UgJGFjX2NvbmZpZ190YXJnZXQgaW4KKyAgICAi
Li4vY29uZmlnL1Rvb2xzLm1rIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC4uL2NvbmZp
Zy9Ub29scy5tayIgOzsKKyAgICAiY29uZmlnLmgiKSBDT05GSUdfSEVBREVSUz0iJENPTkZJR19I
RUFERVJTIGNvbmZpZy5oIiA7OworCisgICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3Vt
ZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDUgOzsKKyAgZXNhYworZG9uZQor
CisKKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRo
ZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKKyMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1
c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90LgorIyBXZSB1c2UgdGhlIGxvbmcgZm9y
bSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQorIyBi
aXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KK2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCisg
IHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmln
X2ZpbGVzCisgIHRlc3QgIiR7Q09ORklHX0hFQURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hF
QURFUlM9JGNvbmZpZ19oZWFkZXJzCitmaQorCisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5
IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUKKyMgc2ltcGx5IGJl
Y2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIGFnYWluc3QgaGF2aW5nIGl0IGhlcmUsIGFuZCBpbiBh
ZGRpdGlvbiwKKyMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0
aW1lcyBjYXVzZSBwcm9ibGVtcy4KKyMgSG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVn
Z2luZy4KKyMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBk
aXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZDoKKyMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBi
ZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgorJGRlYnVnIHx8Cit7
CisgIHRtcD0KKyAgdHJhcCAnZXhpdF9zdGF0dXM9JD8KKyAgeyB0ZXN0IC16ICIkdG1wIiB8fCB0
ZXN0ICEgLWQgIiR0bXAiIHx8IHJtIC1mciAiJHRtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMK
KycgMAorICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQorfQorIyBDcmVhdGUgYSAoc2Vj
dXJlKSB0bXAgZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuCisKK3sKKyAgdG1wPWAodW1hc2sgMDc3
ICYmIG1rdGVtcCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmCisgIHRlc3QgLW4g
IiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCit9ICB8fAoreworICB0bXA9Li9jb25mJCQtJFJBTkRP
TQorICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikKK30gfHwgYXNfZm5fZXJyb3IgJD8gImNh
bm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1CisKKyMg
U2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2VjdGlvbi4KKyMgTm8gbmVlZCB0
byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCisjIFRoaXMgaGFw
cGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oJy4KK2lmIHRl
c3QgLW4gIiRDT05GSUdfRklMRVMiOyB0aGVuCisKKworYWNfY3I9YGVjaG8gWCB8IHRyIFggJ1ww
MTUnYAorIyBPbiBjeWd3aW4sIGJhc2ggY2FuIGVhdCBcciBpbnNpZGUgYGAgaWYgdGhlIHVzZXIg
cmVxdWVzdGVkIGlnbmNyLgorIyBCdXQgd2Uga25vdyBvZiBubyBvdGhlciBzaGVsbCB3aGVyZSBh
Y19jciB3b3VsZCBiZSBlbXB0eSBhdCB0aGlzCisjIHBvaW50LCBzbyB3ZSBjYW4gdXNlIGEgYmFz
aGlzbSBhcyBhIGZhbGxiYWNrLgoraWYgdGVzdCAieCRhY19jciIgPSB4OyB0aGVuCisgIGV2YWwg
YWNfY3I9XCRcJ1xcclwnCitmaQorYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJh
XHJiIiB9JyA8L2Rldi9udWxsIDI+L2Rldi9udWxsYAoraWYgdGVzdCAiJGFjX2NzX2F3a19jciIg
PSAiYSR7YWNfY3J9YiI7IHRoZW4KKyAgYWNfY3NfYXdrX2NyPSdcXHInCitlbHNlCisgIGFjX2Nz
X2F3a19jcj0kYWNfY3IKK2ZpCisKK2VjaG8gJ0JFR0lOIHsnID4iJHRtcC9zdWJzMS5hd2siICYm
CitfQUNFT0YKKworCit7CisgIGVjaG8gImNhdCA+Y29uZiQkc3Vicy5hd2sgPDxfQUNFT0YiICYm
CisgIGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IHNlZCAncy8uKi8mISQmJGFjX2RlbGltLycgJiYK
KyAgZWNobyAiX0FDRU9GIgorfSA+Y29uZiQkc3Vicy5zaCB8fAorICBhc19mbl9lcnJvciAkPyAi
Y291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CithY19kZWxpbV9udW09
YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYAorYWNfZGVsaW09JyUhXyEjICcK
K2ZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSA6OyBkbwor
ICAuIC4vY29uZiQkc3Vicy5zaCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFr
ZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKworICBhY19kZWxpbV9uPWBzZWQgLW4gInMv
LiokYWNfZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYAorICBpZiB0ZXN0
ICRhY19kZWxpbV9uID0gJGFjX2RlbGltX251bTsgdGhlbgorICAgIGJyZWFrCisgIGVsaWYgJGFj
X2xhc3RfdHJ5OyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05G
SUdfU1RBVFVTIiAiJExJTkVOTyIgNQorICBlbHNlCisgICAgYWNfZGVsaW09IiRhY19kZWxpbSEk
YWNfZGVsaW0gXyRhY19kZWxpbSEhICIKKyAgZmkKK2RvbmUKK3JtIC1mIGNvbmYkJHN1YnMuc2gK
KworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitjYXQg
Pj4iXCR0bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCitfQUNFT0YKK3NlZCAtbiAnCitoCitz
L14vU1siLzsgcy8hLiovIl09LworcAorZworcy9eW14hXSohLy8KKzpyZXBsCit0IHJlcGwKK3Mv
JyIkYWNfZGVsaW0iJyQvLwordCBkZWxpbQorOm5sCitoCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8K
K3QgbW9yZTEKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcbiJcXC8KK3AKK24KK2IgcmVw
bAorOm1vcmUxCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwvCitwCitnCitzLy5cezE0
OFx9Ly8KK3QgbmwKKzpkZWxpbQoraAorcy9cKC5cezE0OFx9XCkuLiovXDEvCit0IG1vcmUyCitz
L1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iLworcAorYgorOm1vcmUyCitzL1siXFxdL1xcJi9n
OyBzL14vIi87IHMvJC8iXFwvCitwCitnCitzLy5cezE0OFx9Ly8KK3QgZGVsaW0KKycgPGNvbmYk
JHN1YnMuYXdrIHwgc2VkICcKKy9eW14iIl0veworICBOCisgIHMvXG4vLworfQorJyA+PiRDT05G
SUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorcm0gLWYgY29uZiQkc3Vicy5hd2sKK2NhdCA+
PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorX0FDQVdLCitjYXQg
Pj4iXCR0bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJgorICBmb3IgKGtleSBpbiBTKSBTX2lzX3Nl
dFtrZXldID0gMQorICBGUyA9ICIHIgorCit9Cit7CisgIGxpbmUgPSAkIDAKKyAgbmZpZWxkcyA9
IHNwbGl0KGxpbmUsIGZpZWxkLCAiQCIpCisgIHN1YnN0ZWQgPSAwCisgIGxlbiA9IGxlbmd0aChm
aWVsZFsxXSkKKyAgZm9yIChpID0gMjsgaSA8IG5maWVsZHM7IGkrKykgeworICAgIGtleSA9IGZp
ZWxkW2ldCisgICAga2V5bGVuID0gbGVuZ3RoKGtleSkKKyAgICBpZiAoU19pc19zZXRba2V5XSkg
eworICAgICAgdmFsdWUgPSBTW2tleV0KKyAgICAgIGxpbmUgPSBzdWJzdHIobGluZSwgMSwgbGVu
KSAiIiB2YWx1ZSAiIiBzdWJzdHIobGluZSwgbGVuICsga2V5bGVuICsgMykKKyAgICAgIGxlbiAr
PSBsZW5ndGgodmFsdWUpICsgbGVuZ3RoKGZpZWxkWysraV0pCisgICAgICBzdWJzdGVkID0gMQor
ICAgIH0gZWxzZQorICAgICAgbGVuICs9IDEgKyBrZXlsZW4KKyAgfQorCisgIHByaW50IGxpbmUK
K30KKworX0FDQVdLCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh
Y193cml0ZV9mYWlsPTEKK2lmIHNlZCAicy8kYWNfY3IvLyIgPCAvZGV2L251bGwgPiAvZGV2L251
bGwgMj4mMTsgdGhlbgorICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19j
ci9nIgorZWxzZQorICBjYXQKK2ZpIDwgIiR0bXAvc3ViczEuYXdrIiA+ICIkdG1wL3N1YnMuYXdr
IiBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZpbGVzIG1h
Y2hpbmVyeSIgIiRMSU5FTk8iIDUKK19BQ0VPRgorCisjIFZQQVRIIG1heSBjYXVzZSB0cm91Ymxl
IHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlIHNvbGUgJChzcmNkaXIpLAorIyAke3NyY2Rp
cn0gYW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJp
cCBsZWFkaW5nIGFuZAorIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9s
ZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKKyMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVt
cHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KK2lmIHRlc3QgIngkc3JjZGlyIiA9
IHguOyB0aGVuCisgIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj1bCSBdKi97CitoCitzLy8v
CitzL14vOi8KK3MvWwkgXSokLzovCitzLzpcJChzcmNkaXIpOi86L2cKK3MvOlwke3NyY2Rpcn06
LzovZworcy86QHNyY2RpckA6LzovZworcy9eOiovLworcy86KiQvLworeAorcy9cKD1bCSBdKlwp
LiovXDEvCitHCitzL1xuLy8KK3MvXltePV0qPVsJIF0qJC8vCit9JworZmkKKworY2F0ID4+JENP
TkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorZmkgIyB0ZXN0IC1uICIk
Q09ORklHX0ZJTEVTIgorCisjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0hFQURFUlMg
c2VjdGlvbi4KKyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05G
SUdfSEVBREVSUy4KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5z
dGF0dXMgTWFrZWZpbGUnLgoraWYgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIjsgdGhlbgorY2F0
ID4iJHRtcC9kZWZpbmVzLmF3ayIgPDxcX0FDQVdLIHx8CitCRUdJTiB7CitfQUNFT0YKKworIyBU
cmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIGFuIGF3ayBzY3JpcHQgYGRlZmluZXMuYXdrJywgZW1i
ZWRkZWQgYXMKKyMgaGVyZS1kb2N1bWVudCBpbiBjb25maWcuc3RhdHVzLCB0aGF0IHN1YnN0aXR1
dGVzIHRoZSBwcm9wZXIgdmFsdWVzIGludG8KKyMgY29uZmlnLmguaW4gdG8gcHJvZHVjZSBjb25m
aWcuaC4KKworIyBDcmVhdGUgYSBkZWxpbWl0ZXIgc3RyaW5nIHRoYXQgZG9lcyBub3QgZXhpc3Qg
aW4gY29uZmRlZnMuaCwgdG8gZWFzZQorIyBoYW5kbGluZyBvZiBsb25nIGxpbmVzLgorYWNfZGVs
aW09JyUhXyEjICcKK2ZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSA6OyBkbworICBhY190
PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAiJGFjX3Qi
OyB0aGVuCisgICAgYnJlYWsKKyAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KKyAgICBhc19mbl9l
cnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIgNQorICBl
bHNlCisgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKKyAg
ZmkKK2RvbmUKKworIyBGb3IgdGhlIGF3ayBzY3JpcHQsIEQgaXMgYW4gYXJyYXkgb2YgbWFjcm8g
dmFsdWVzIGtleWVkIGJ5IG5hbWUsCisjIGxpa2V3aXNlIFAgY29udGFpbnMgbWFjcm8gcGFyYW1l
dGVycyBpZiBhbnkuICBQcmVzZXJ2ZSBiYWNrc2xhc2gKKyMgbmV3bGluZSBzZXF1ZW5jZXMuCisK
K2FjX3dvcmRfcmU9W18kYXNfY3JfTGV0dGVyc11bXyRhc19jcl9hbG51bV0qCitzZWQgLW4gJwor
cy8uXHsxNDhcfS8mJyIkYWNfZGVsaW0iJy9nCit0IHJzZXQKKzpyc2V0CitzL15bCSBdKiNbCSBd
KmRlZmluZVsJIF1bCSBdKi8gLwordCBkZWYKK2QKKzpkZWYKK3MvXFwkLy8KK3QgYnNubAorcy9b
IlxcXS9cXCYvZworcy9eIFwoJyIkYWNfd29yZF9yZSInXClcKChbXigpXSopXClbCSBdKlwoLipc
KS9QWyJcMSJdPSJcMiJcCitEWyJcMSJdPSIgXDMiL3AKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wp
WwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyIi9wCitkCis6YnNubAorcy9bIlxcXS9cXCYvZworcy9e
IFwoJyIkYWNfd29yZF9yZSInXClcKChbXigpXSopXClbCSBdKlwoLipcKS9QWyJcMSJdPSJcMiJc
CitEWyJcMSJdPSIgXDNcXFxcXFxuIlxcL3AKK3QgY29udAorcy9eIFwoJyIkYWNfd29yZF9yZSIn
XClbCSBdKlwoLipcKS9EWyJcMSJdPSIgXDJcXFxcXFxuIlxcL3AKK3QgY29udAorZAorOmNvbnQK
K24KK3MvLlx7MTQ4XH0vJiciJGFjX2RlbGltIicvZwordCBjbGVhcgorOmNsZWFyCitzL1xcJC8v
Cit0IGJzbmxjCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iL3AKK2QKKzpic25sYworcy9b
IlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxcXFxcbiJcXC9wCitiIGNvbnQKKycgPGNvbmZkZWZz
LmggfCBzZWQgJworcy8nIiRhY19kZWxpbSInLyJcXFwKKyIvZycgPj4kQ09ORklHX1NUQVRVUyB8
fCBhY193cml0ZV9mYWlsPTEKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNf
d3JpdGVfZmFpbD0xCisgIGZvciAoa2V5IGluIEQpIERfaXNfc2V0W2tleV0gPSAxCisgIEZTID0g
IgciCit9CisvXltcdCBdKiNbXHQgXSooZGVmaW5lfHVuZGVmKVtcdCBdKyRhY193b3JkX3JlKFtc
dCAoXXxcJCkvIHsKKyAgbGluZSA9IFwkIDAKKyAgc3BsaXQobGluZSwgYXJnLCAiICIpCisgIGlm
IChhcmdbMV0gPT0gIiMiKSB7CisgICAgZGVmdW5kZWYgPSBhcmdbMl0KKyAgICBtYWMxID0gYXJn
WzNdCisgIH0gZWxzZSB7CisgICAgZGVmdW5kZWYgPSBzdWJzdHIoYXJnWzFdLCAyKQorICAgIG1h
YzEgPSBhcmdbMl0KKyAgfQorICBzcGxpdChtYWMxLCBtYWMyLCAiKCIpICMpCisgIG1hY3JvID0g
bWFjMlsxXQorICBwcmVmaXggPSBzdWJzdHIobGluZSwgMSwgaW5kZXgobGluZSwgZGVmdW5kZWYp
IC0gMSkKKyAgaWYgKERfaXNfc2V0W21hY3JvXSkgeworICAgICMgUHJlc2VydmUgdGhlIHdoaXRl
IHNwYWNlIHN1cnJvdW5kaW5nIHRoZSAiIyIuCisgICAgcHJpbnQgcHJlZml4ICJkZWZpbmUiLCBt
YWNybyBQW21hY3JvXSBEW21hY3JvXQorICAgIG5leHQKKyAgfSBlbHNlIHsKKyAgICAjIFJlcGxh
Y2UgI3VuZGVmIHdpdGggY29tbWVudHMuICBUaGlzIGlzIG5lY2Vzc2FyeSwgZm9yIGV4YW1wbGUs
CisgICAgIyBpbiB0aGUgY2FzZSBvZiBfUE9TSVhfU09VUkNFLCB3aGljaCBpcyBwcmVkZWZpbmVk
IGFuZCByZXF1aXJlZAorICAgICMgb24gc29tZSBzeXN0ZW1zIHdoZXJlIGNvbmZpZ3VyZSB3aWxs
IG5vdCBkZWNpZGUgdG8gZGVmaW5lIGl0LgorICAgIGlmIChkZWZ1bmRlZiA9PSAidW5kZWYiKSB7
CisgICAgICBwcmludCAiLyoiLCBwcmVmaXggZGVmdW5kZWYsIG1hY3JvLCAiKi8iCisgICAgICBu
ZXh0CisgICAgfQorICB9Cit9Cit7IHByaW50IH0KK19BQ0FXSworX0FDRU9GCitjYXQgPj4kQ09O
RklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisgIGFzX2ZuX2Vycm9yICQ/
ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQor
ZmkgIyB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiCisKKworZXZhbCBzZXQgWCAiICA6RiAkQ09O
RklHX0ZJTEVTICA6SCAkQ09ORklHX0hFQURFUlMgICAgIgorc2hpZnQKK2ZvciBhY190YWcKK2Rv
CisgIGNhc2UgJGFjX3RhZyBpbgorICA6W0ZITENdKSBhY19tb2RlPSRhY190YWc7IGNvbnRpbnVl
OzsKKyAgZXNhYworICBjYXNlICRhY19tb2RlJGFjX3RhZyBpbgorICA6W0ZITF0qOiopOzsKKyAg
OkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJ
TkVOTyIgNSA7OworICA6W0ZIXS0pIGFjX3RhZz0tOi07OworICA6W0ZIXSopIGFjX3RhZz0kYWNf
dGFnOiRhY190YWcuaW47OworICBlc2FjCisgIGFjX3NhdmVfSUZTPSRJRlMKKyAgSUZTPToKKyAg
c2V0IHggJGFjX3RhZworICBJRlM9JGFjX3NhdmVfSUZTCisgIHNoaWZ0CisgIGFjX2ZpbGU9JDEK
KyAgc2hpZnQKKworICBjYXNlICRhY19tb2RlIGluCisgIDpMKSBhY19zb3VyY2U9JDE7OworICA6
W0ZIXSkKKyAgICBhY19maWxlX2lucHV0cz0KKyAgICBmb3IgYWNfZgorICAgIGRvCisgICAgICBj
YXNlICRhY19mIGluCisgICAgICAtKSBhY19mPSIkdG1wL3N0ZGluIjs7CisgICAgICAqKSAjIExv
b2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3Vy
Y2UgdHJlZQorCSAjIChpZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRl
IHBhdGggY2Fubm90IGJlIERPUy1zdHlsZSwKKwkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250
YWluIGA6Jy4KKwkgdGVzdCAtZiAiJGFjX2YiIHx8CisJICAgY2FzZSAkYWNfZiBpbgorCSAgIFtc
XC8kXSopIGZhbHNlOzsKKwkgICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIk
c3JjZGlyLyRhY19mIjs7CisJICAgZXNhYyB8fAorCSAgIGFzX2ZuX2Vycm9yIDEgImNhbm5vdCBm
aW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNSA7OworICAgICAgZXNhYworICAg
ICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkICJzLycv
J1xcXFxcXFxcJycvZyJgOzsgZXNhYworICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRz
ICIgJyRhY19mJyIKKyAgICBkb25lCisKKyAgICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMg
YGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAorICAgICMgdXNlICRh
c19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgICAjICAgIC8qIGNv
bmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICAgIGNvbmZpZ3VyZV9p
bnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8XlteOl0q
L3x8O3N8OlteOl0qL3wsIHxnJworCWAnIGJ5IGNvbmZpZ3VyZS4nCisgICAgaWYgdGVzdCB4IiRh
Y19maWxlIiAhPSB4LTsgdGhlbgorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICRj
b25maWd1cmVfaW5wdXQiCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5n
ICRhY19maWxlIiA+JjY7fQorICAgIGZpCisgICAgIyBOZXV0cmFsaXplIHNwZWNpYWwgY2hhcmFj
dGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFjZW1lbnQgc3RyaW5ncy4KKyAgICBjYXNl
ICRjb25maWd1cmVfaW5wdXQgaW4gIygKKyAgICAqXCYqIHwgKlx8KiB8ICpcXCogKQorICAgICAg
IGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3VyZV9pbnB1dCIgfAorICAgICAg
IHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAorICAgICopIGFjX3NlZF9jb25mX2lucHV0
PSRjb25maWd1cmVfaW5wdXQ7OworICAgIGVzYWMKKworICAgIGNhc2UgJGFjX3RhZyBpbgorICAg
ICo6LToqIHwgKjotKSBjYXQgPiIkdG1wL3N0ZGluIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAk
PyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgIDs7CisgICAgZXNhYwor
ICAgIDs7CisgIGVzYWMKKworICBhY19kaXI9YCRhc19kaXJuYW1lIC0tICIkYWNfZmlsZSIgfHwK
KyRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBc
CisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hc
KC8vXCkkJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8
fAorJGFzX2VjaG8gWCIkYWNfZmlsZSIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14v
XVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKVte
L10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKSQveworCSAg
ICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wpLioveworCSAgICBzLy9cMS8KKwkg
ICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgIGFzX2Rpcj0iJGFjX2RpciI7IGFzX2ZuX21r
ZGlyX3AKKyAgYWNfYnVpbGRkaXI9LgorCitjYXNlICIkYWNfZGlyIiBpbgorLikgYWNfZGlyX3N1
ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CisqKQor
ICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwn
YAorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCisgIGFj
X3RvcF9idWlsZGRpcl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3N8L1te
XFwvXSp8Ly4ufGc7c3wvfHwnYAorICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluCisgICIi
KSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKyAgKikgIGFj
X3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7CisgIGVzYWMgOzsKK2Vz
YWMKK2FjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZAorYWNfYWJzX2J1aWxkZGlyPSRhY19wd2Qk
YWNfZGlyX3N1ZmZpeAorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToKK2FjX3RvcF9idWls
ZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeAorCitjYXNlICRzcmNkaXIgaW4KKyAgLikgICMgV2Ug
YXJlIGJ1aWxkaW5nIGluIHBsYWNlLgorICAgIGFjX3NyY2Rpcj0uCisgICAgYWNfdG9wX3NyY2Rp
cj0kYWNfdG9wX2J1aWxkZGlyX3N1YgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QgOzsK
KyAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLgorICAgIGFjX3NyY2Rpcj0k
c3JjZGlyJGFjX2Rpcl9zdWZmaXg7CisgICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyCisgICAgYWNf
YWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7OworICAqKSAjIFJlbGF0aXZlIG5hbWUuCisgICAgYWNf
c3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19kaXJfc3VmZml4CisgICAgYWNf
dG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIKKyAgICBhY19hYnNfdG9wX3Ny
Y2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsKK2VzYWMKK2FjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bf
c3JjZGlyJGFjX2Rpcl9zdWZmaXgKKworCisgIGNhc2UgJGFjX21vZGUgaW4KKyAgOkYpCisgICMK
KyAgIyBDT05GSUdfRklMRQorICAjCisKKyAgY2FzZSAkSU5TVEFMTCBpbgorICBbXFwvJF0qIHwg
PzpbXFwvXSogKSBhY19JTlNUQUxMPSRJTlNUQUxMIDs7CisgICopIGFjX0lOU1RBTEw9JGFjX3Rv
cF9idWlsZF9wcmVmaXgkSU5TVEFMTCA7OworICBlc2FjCitfQUNFT0YKKworY2F0ID4+JENPTkZJ
R19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorIyBJZiB0aGUgdGVtcGxhdGUg
ZG9lcyBub3Qga25vdyBhYm91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0LgorIyBGSVhNRTogVGhp
cyBoYWNrIHNob3VsZCBiZSByZW1vdmVkIGEgZmV3IHllYXJzIGFmdGVyIDIuNjAuCithY19kYXRh
cm9vdGRpcl9oYWNrPTsgYWNfZGF0YXJvb3RkaXJfc2Vlbj0KK2FjX3NlZF9kYXRhcm9vdD0nCisv
ZGF0YXJvb3RkaXIvIHsKKyAgcAorICBxCit9CisvQGRhdGFkaXJAL3AKKy9AZG9jZGlyQC9wCisv
QGluZm9kaXJAL3AKKy9AbG9jYWxlZGlyQC9wCisvQG1hbmRpckAvcCcKK2Nhc2UgYGV2YWwgInNl
ZCAtbiBcIlwkYWNfc2VkX2RhdGFyb290XCIgJGFjX2ZpbGVfaW5wdXRzImAgaW4KKypkYXRhcm9v
dGRpciopIGFjX2RhdGFyb290ZGlyX3NlZW49eWVzOzsKKypAZGF0YWRpckAqfCpAZG9jZGlyQCp8
KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJAKnwqQG1hbmRpckAqKQorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0
byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiY1CiskYXNfZWNobyAiJGFzX21l
OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290
ZGlyIHNldHRpbmciID4mMjt9CitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9G
IHx8IGFjX3dyaXRlX2ZhaWw9MQorICBhY19kYXRhcm9vdGRpcl9oYWNrPScKKyAgcyZAZGF0YWRp
ckAmJGRhdGFkaXImZworICBzJkBkb2NkaXJAJiRkb2NkaXImZworICBzJkBpbmZvZGlyQCYkaW5m
b2RpciZnCisgIHMmQGxvY2FsZWRpckAmJGxvY2FsZWRpciZnCisgIHMmQG1hbmRpckAmJG1hbmRp
ciZnCisgIHMmXFxcJHtkYXRhcm9vdGRpcn0mJGRhdGFyb290ZGlyJmcnIDs7Citlc2FjCitfQUNF
T0YKKworIyBOZXV0cmFsaXplIFZQQVRIIHdoZW4gYCRzcmNkaXInID0gYC4nLgorIyBTaGVsbCBj
b2RlIGluIGNvbmZpZ3VyZS5hYyBtaWdodCBzZXQgZXh0cmFzdWIuCisjIEZJWE1FOiBkbyB3ZSBy
ZWFsbHkgd2FudCB0byBtYWludGFpbiB0aGlzIGZlYXR1cmU/CitjYXQgPj4kQ09ORklHX1NUQVRV
UyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2FjX3NlZF9leHRyYT0iJGFjX3Zwc3ViCisk
ZXh0cmFzdWIKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy
aXRlX2ZhaWw9MQorOnQKKy9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWIKK3N8QGNvbmZpZ3Vy
ZV9pbnB1dEB8JGFjX3NlZF9jb25mX2lucHV0fDt0IHQKK3MmQHRvcF9idWlsZGRpckAmJGFjX3Rv
cF9idWlsZGRpcl9zdWImO3QgdAorcyZAdG9wX2J1aWxkX3ByZWZpeEAmJGFjX3RvcF9idWlsZF9w
cmVmaXgmO3QgdAorcyZAc3JjZGlyQCYkYWNfc3JjZGlyJjt0IHQKK3MmQGFic19zcmNkaXJAJiRh
Y19hYnNfc3JjZGlyJjt0IHQKK3MmQHRvcF9zcmNkaXJAJiRhY190b3Bfc3JjZGlyJjt0IHQKK3Mm
QGFic190b3Bfc3JjZGlyQCYkYWNfYWJzX3RvcF9zcmNkaXImO3QgdAorcyZAYnVpbGRkaXJAJiRh
Y19idWlsZGRpciY7dCB0CitzJkBhYnNfYnVpbGRkaXJAJiRhY19hYnNfYnVpbGRkaXImO3QgdAor
cyZAYWJzX3RvcF9idWlsZGRpckAmJGFjX2Fic190b3BfYnVpbGRkaXImO3QgdAorcyZASU5TVEFM
TEAmJGFjX0lOU1RBTEwmO3QgdAorJGFjX2RhdGFyb290ZGlyX2hhY2sKKyIKK2V2YWwgc2VkIFwi
XCRhY19zZWRfZXh0cmFcIiAiJGFjX2ZpbGVfaW5wdXRzIiB8ICRBV0sgLWYgIiR0bXAvc3Vicy5h
d2siID4kdG1wL291dCBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRh
Y19maWxlIiAiJExJTkVOTyIgNQorCit0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19k
YXRhcm9vdGRpcl9zZWVuIiAmJgorICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9
L3AnICIkdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJgorICB7IGFjX291dD1gc2Vk
IC1uICcvXlsJIF0qZGF0YXJvb3RkaXJbCSBdKjoqPS9wJyAiJHRtcC9vdXQiYDsgdGVzdCAteiAi
JGFjX291dCI7IH0gJiYKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUg
XGBkYXRhcm9vdGRpcicKK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtl
IHN1cmUgaXQgaXMgZGVmaW5lZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNf
ZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicK
K3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVm
aW5lZCIgPiYyO30KKworICBybSAtZiAiJHRtcC9zdGRpbiIKKyAgY2FzZSAkYWNfZmlsZSBpbgor
ICAtKSBjYXQgIiR0bXAvb3V0IiAmJiBybSAtZiAiJHRtcC9vdXQiOzsKKyAgKikgcm0gLWYgIiRh
Y19maWxlIiAmJiBtdiAiJHRtcC9vdXQiICIkYWNfZmlsZSI7OworICBlc2FjIFwKKyAgfHwgYXNf
Zm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgOzsK
KyAgOkgpCisgICMKKyAgIyBDT05GSUdfSEVBREVSCisgICMKKyAgaWYgdGVzdCB4IiRhY19maWxl
IiAhPSB4LTsgdGhlbgorICAgIHsKKyAgICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0
ICAqLyIgXAorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJHRtcC9kZWZpbmVzLmF3ayInICIkYWNf
ZmlsZV9pbnB1dHMiCisgICAgfSA+IiR0bXAvY29uZmlnLmgiIFwKKyAgICAgIHx8IGFzX2ZuX2Vy
cm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgIGlmIGRp
ZmYgIiRhY19maWxlIiAiJHRtcC9jb25maWcuaCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY19maWxlIGlzIHVu
Y2hhbmdlZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4m
Njt9CisgICAgZWxzZQorICAgICAgcm0gLWYgIiRhY19maWxlIgorICAgICAgbXYgIiR0bXAvY29u
ZmlnLmgiICIkYWNfZmlsZSIgXAorCXx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRl
ICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgIGZpCisgIGVsc2UKKyAgICAkYXNfZWNobyAiLyog
JGNvbmZpZ3VyZV9pbnB1dCAgKi8iIFwKKyAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiR0bXAvZGVm
aW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAi
Y291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQorICBmaQorIDs7CisKKworICBlc2FjCisK
K2RvbmUgIyBmb3IgYWNfdGFnCisKKworYXNfZm5fZXhpdCAwCitfQUNFT0YKK2FjX2NsZWFuX2Zp
bGVzPSRhY19jbGVhbl9maWxlc19zYXZlCisKK3Rlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8Cisg
IGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAi
JExJTkVOTyIgNQorCisKKyMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5k
IHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KKyMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24g
cmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgorIyBVbmZvcnR1bmF0ZWx5LCBv
biBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4KKyMgYnkg
Y29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVzIHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdG8gaXQ7
IGl0cworIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRv
IC9kZXYvbnVsbCwKKyMgZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4g
YmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKKyMgYXBwZW5kZWQgdG8gYnkgY29uZmlnLnN0YXR1
cy4gIFdoZW4gY29taW5nIGJhY2sgdG8gY29uZmlndXJlLCB3ZQorIyBuZWVkIHRvIG1ha2UgdGhl
IEZEIGF2YWlsYWJsZSBhZ2Fpbi4KK2lmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgor
ICBhY19jc19zdWNjZXNzPToKKyAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQorICB0ZXN0ICIkc2ls
ZW50IiA9IHllcyAmJgorICAgIGFjX2NvbmZpZ19zdGF0dXNfYXJncz0iJGFjX2NvbmZpZ19zdGF0
dXNfYXJncyAtLXF1aWV0IgorICBleGVjIDU+L2Rldi9udWxsCisgICRTSEVMTCAkQ09ORklHX1NU
QVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKKyAgZXhl
YyA1Pj5jb25maWcubG9nCisgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJv
bSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFp
bCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgorICAkYWNfY3Nfc3VjY2VzcyB8fCBh
c19mbl9leGl0IDEKK2ZpCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRl
c3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25z
OiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
dW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30KK2ZpCisK
ZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NvbmZpZ3VyZS5hYwot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9j
b25maWd1cmUuYWMJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTg5
IEBACisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0g
QXV0b2NvbmYgLSotCisjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVj
ZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCisKK0FDX1BSRVJFUShbMi42N10pCitBQ19JTklUKFtYZW4g
SHlwZXJ2aXNvcl0sIG00X2VzeXNjbWQoWy4uL3ZlcnNpb24uc2ggLi4veGVuL01ha2VmaWxlXSks
CisgICAgW3hlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tXSkKK0FDX0NPTkZJR19TUkNESVIo
W2xpYnhsL2xpYnhsLmNdKQorQUNfQ09ORklHX0ZJTEVTKFsuLi9jb25maWcvVG9vbHMubWtdKQor
QUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKK0FDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkK
K0FDX0NPTkZJR19BVVhfRElSKFsuXSkKKworIyBDaGVjayBpZiBDRkxBR1MsIExERkxBR1MsIExJ
QlMsIENQUEZMQUdTIG9yIENQUCBpcyBzZXQgYW5kIHByaW50IGEgd2FybmluZworCitBU19JRihb
dGVzdCAtbiAiJENDJENGTEFHUyRMREZMQUdTJExJQlMkQ1BQRkxBR1MkQ1BQIl0sIFsKKyAgICBB
Q19NU0dfV0FSTigKK1tTZXR0aW5nIENDLCBDRkxBR1MsIExERkxBR1MsIExJQlMsIENQUEZMQUdT
IG9yIENQUCBpcyBub3QgXAorcmVjb21tZW5kZWQsIHVzZSBQUkVQRU5EX0lOQ0xVREVTLCBQUkVQ
RU5EX0xJQiwgXAorQVBQRU5EX0lOQ0xVREVTIGFuZCBBUFBFTkRfTElCIGluc3RlYWQgd2hlbiBw
b3NzaWJsZS5dKQorXSkKKworQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCitBQ19DQU5PTklDQUxf
SE9TVAorCisjIE00IE1hY3JvIGluY2x1ZGVzCittNF9pbmNsdWRlKFttNC9lbmFibGVfZmVhdHVy
ZS5tNF0pCittNF9pbmNsdWRlKFttNC9kaXNhYmxlX2ZlYXR1cmUubTRdKQorbTRfaW5jbHVkZShb
bTQvcGF0aF9vcl9mYWlsLm00XSkKK200X2luY2x1ZGUoW200L3B5dGhvbl94bWwubTRdKQorbTRf
aW5jbHVkZShbbTQvcHl0aG9uX3ZlcnNpb24ubTRdKQorbTRfaW5jbHVkZShbbTQvcHl0aG9uX2Rl
dmVsLm00XSkKK200X2luY2x1ZGUoW200L3VkZXYubTRdKQorbTRfaW5jbHVkZShbbTQvb2NhbWwu
bTRdKQorbTRfaW5jbHVkZShbbTQvZGVmYXVsdF9saWIubTRdKQorbTRfaW5jbHVkZShbbTQvc2V0
X2NmbGFnc19sZGZsYWdzLm00XSkKKworIyBFbmFibGUvZGlzYWJsZSBvcHRpb25zCitBWF9BUkdf
RU5BQkxFX0FORF9FWFBPUlQoW3hzbV0sCisgICAgW0VuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxl
IChieSBkZWZhdWx0LCBGbGFzayldKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFtnaXRodHRw
XSwgW0Rvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhUVFBdKQorQVhfQVJHX0RJU0FCTEVf
QU5EX0VYUE9SVChbbW9uaXRvcnNdLAorICAgIFtEaXNhYmxlIHhlbnN0YXQgYW5kIHhlbnRvcCBt
b25pdG9yaW5nIHRvb2xzXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbdnRwbV0sIFtFbmFi
bGUgVmlydHVhbCBUcnVzdGVkIFBsYXRmb3JtIE1vZHVsZV0pCitBWF9BUkdfRU5BQkxFX0FORF9F
WFBPUlQoW3hhcGldLCBbRW5hYmxlIFhlbiBBUEkgQmluZGluZ3NdKQorQVhfQVJHX0RJU0FCTEVf
QU5EX0VYUE9SVChbcHl0aG9udG9vbHNdLCBbRGlzYWJsZSBQeXRob24gdG9vbHNdKQorQVhfQVJH
X0RJU0FCTEVfQU5EX0VYUE9SVChbb2NhbWx0b29sc10sIFtEaXNhYmxlIE9jYW1sIHRvb2xzXSkK
K0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbbWluaXRlcm1dLCBbRW5hYmxlIG1pbml0ZXJtXSkK
K0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbbG9tb3VudF0sIFtFbmFibGUgbG9tb3VudF0pCitB
WF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtkZWJ1Z10sIFtEaXNhYmxlIGRlYnVnIGJ1aWxkIG9m
IFhlbiBhbmQgdG9vbHNdKQorCitBQ19BUkdfVkFSKFtQUkVQRU5EX0lOQ0xVREVTXSwKKyAgICBb
TGlzdCBvZiBpbmNsdWRlIGZvbGRlcnMgdG8gcHJlcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkp
XSkKK0FDX0FSR19WQVIoW1BSRVBFTkRfTElCXSwKKyAgICBbTGlzdCBvZiBsaWJyYXJ5IGZvbGRl
cnMgdG8gcHJlcGVuZCB0byBMREZMQUdTICh3aXRob3V0IC1MKV0pCitBQ19BUkdfVkFSKFtBUFBF
TkRfSU5DTFVERVNdLAorICAgIFtMaXN0IG9mIGluY2x1ZGUgZm9sZGVycyB0byBhcHBlbmQgdG8g
Q0ZMQUdTICh3aXRob3V0IC1JKV0pCitBQ19BUkdfVkFSKFtBUFBFTkRfTElCXSwKKyAgICBbTGlz
dCBvZiBsaWJyYXJ5IGZvbGRlcnMgdG8gYXBwZW5kIHRvIExERkxBR1MgKHdpdGhvdXQgLUwpXSkK
KworQVhfU0VUX0ZMQUdTCisKK0FDX0FSR19WQVIoW1BZVEhPTl0sIFtQYXRoIHRvIHRoZSBQeXRo
b24gcGFyc2VyXSkKK0FDX0FSR19WQVIoW1BFUkxdLCBbUGF0aCB0byBQZXJsIHBhcnNlcl0pCitB
Q19BUkdfVkFSKFtCUkNUTF0sIFtQYXRoIHRvIGJyY3RsIHRvb2xdKQorQUNfQVJHX1ZBUihbSVBd
LCBbUGF0aCB0byBpcCB0b29sXSkKK0FDX0FSR19WQVIoW0JJU09OXSwgW1BhdGggdG8gQmlzb24g
cGFyc2VyIGdlbmVyYXRvcl0pCitBQ19BUkdfVkFSKFtGTEVYXSwgW1BhdGggdG8gRmxleCBsZXhp
Y2FsIGFuYWx5c2VyIGdlbmVyYXRvcl0pCitBQ19BUkdfVkFSKFtDVVJMXSwgW1BhdGggdG8gY3Vy
bC1jb25maWcgdG9vbF0pCitBQ19BUkdfVkFSKFtYTUxdLCBbUGF0aCB0byB4bWwyLWNvbmZpZyB0
b29sXSkKK0FDX0FSR19WQVIoW0JBU0hdLCBbUGF0aCB0byBiYXNoIHNoZWxsXSkKK0FDX0FSR19W
QVIoW1hHRVRURVhUXSwgW1BhdGggdG8geGdldHR0ZXh0IHRvb2xdKQorCisjIENoZWNrcyBmb3Ig
cHJvZ3JhbXMuCitBQ19QUk9HX1NFRAorQUNfUFJPR19DQworQUNfUFJPR19MTl9TCitBQ19QUk9H
X01BS0VfU0VUCitBQ19QUk9HX0lOU1RBTEwKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtQRVJMXSwg
W3BlcmxdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0JSQ1RMXSwgW2JyY3RsXSkKK0FYX1BBVEhf
UFJPR19PUl9GQUlMKFtJUF0sIFtpcF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQklTT05dLCBb
Ymlzb25dKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0ZMRVhdLCBbZmxleF0pCitBU19JRihbdGVz
dCAieCR4YXBpIiA9ICJ4eSJdLCBbCisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0NVUkxdLCBb
Y3VybC1jb25maWddKQorICAgIEFYX1BBVEhfUFJPR19PUl9GQUlMKFtYTUxdLCBbeG1sMi1jb25m
aWddKQorXSkKK0FTX0lGKFt0ZXN0ICJ4JG9jYW1sdG9vbHMiID0gInh5Il0sIFsKKyAgICBBQ19Q
Uk9HX09DQU1MCisgICAgQVNfSUYoW3Rlc3QgIngkT0NBTUxDIiA9ICJ4bm8iXSwgWworICAgICAg
ICBBU19JRihbdGVzdCAieCRlbmFibGVfb2NhbWx0b29scyIgPSAieHllcyJdLCBbCisgICAgICAg
ICAgICBBQ19NU0dfRVJST1IoW09jYW1sIHRvb2xzIGVuYWJsZWQsIGJ1dCB1bmFibGUgdG8gZmlu
ZCBPY2FtbF0pXSkKKyAgICAgICAgb2NhbWx0b29scz0ibiIKKyAgICBdKQorXSkKK0FYX1BBVEhf
UFJPR19PUl9GQUlMKFtCQVNIXSwgW2Jhc2hdKQorQVNfSUYoW3Rlc3QgIngkcHl0aG9udG9vbHMi
ID0gInh5Il0sIFsKKyAgICBBU19JRihbZWNobyAiJFBZVEhPTiIgfCBncmVwIC1xICJeLyJdLCBb
CisgICAgICAgIFBZVEhPTlBBVEg9JFBZVEhPTgorICAgICAgICBQWVRIT049YGJhc2VuYW1lICRQ
WVRIT05QQVRIYAorICAgIF0sW3Rlc3QgLXogIiRQWVRIT04iXSwgW1BZVEhPTj0icHl0aG9uIl0s
CisgICAgW0FDX01TR19FUlJPUihbUFlUSE9OIHNwZWNpZmllZCwgYnV0IGlzIG5vdCBhbiBhYnNv
bHV0ZSBwYXRoXSldKQorICAgIEFYX1BBVEhfUFJPR19PUl9GQUlMKFtQWVRIT05QQVRIXSwgWyRQ
WVRIT05dKQorICAgIEFYX0NIRUNLX1BZVEhPTl9WRVJTSU9OKFsyXSwgWzNdKQorICAgIEFYX0NI
RUNLX1BZVEhPTl9YTUwoKQorICAgIEFYX0NIRUNLX1BZVEhPTl9ERVZFTCgpCitdKQorQVhfUEFU
SF9QUk9HX09SX0ZBSUwoW1hHRVRURVhUXSwgW3hnZXR0ZXh0XSkKK0FYX0NIRUNLX1VERVYoWzU5
XSkKKworIyBDaGVjayBsaWJyYXJ5IHBhdGgKK0FYX0RFRkFVTFRfTElCCisKKyMgQ2hlY2tzIGZv
ciBsaWJyYXJpZXMuCitBQ19DSEVDS19MSUIoW2Fpb10sIFtpb19zZXR1cF0sIFtzeXN0ZW1fYWlv
PSJ5Il0sIFtzeXN0ZW1fYWlvPSJuIl0pCitBQ19TVUJTVChzeXN0ZW1fYWlvKQorQUNfQ0hFQ0tf
TElCKFtjcnlwdG9dLCBbTUQ1XSwgW10sIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxp
YmNyeXB0b10pXSkKK0FDX0NIRUNLX0xJQihbZXh0MmZzXSwgW2V4dDJmc19vcGVuMl0sIFtsaWJl
eHQyZnM9InkiXSwgW2xpYmV4dDJmcz0ibiJdKQorQUNfU1VCU1QobGliZXh0MmZzKQorQUNfQ0hF
Q0tfTElCKFtnY3J5cHRdLCBbZ2NyeV9tZF9oYXNoX2J1ZmZlcl0sIFtsaWJnY3J5cHQ9InkiXSwg
W2xpYmdjcnlwdD0ibiJdKQorQUNfU1VCU1QobGliZ2NyeXB0KQorQUNfQ0hFQ0tfTElCKFtwdGhy
ZWFkXSwgW3B0aHJlYWRfY3JlYXRlXSwgW10gLAorICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5v
dCBmaW5kIGxpYnB0aHJlYWRdKV0pCitBQ19DSEVDS19MSUIoW3J0XSwgW2Nsb2NrX2dldHRpbWVd
KQorQUNfQ0hFQ0tfTElCKFt1dWlkXSwgW3V1aWRfY2xlYXJdLCBbXSwKKyAgICBbQUNfTVNHX0VS
Uk9SKFtDb3VsZCBub3QgZmluZCBsaWJ1dWlkXSldKQorQUNfQ0hFQ0tfTElCKFt5YWpsXSwgW3lh
amxfYWxsb2NdLCBbXSwKKyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB5YWpsXSld
KQorQUNfQ0hFQ0tfTElCKFt6XSwgW2RlZmxhdGVDb3B5XSwgW10sIFtBQ19NU0dfRVJST1IoW0Nv
dWxkIG5vdCBmaW5kIHpsaWJdKV0pCitBQ19DSEVDS19MSUIoW2ljb252XSwgW2xpYmljb252X29w
ZW5dLCBbbGliaWNvbnY9InkiXSwgW2xpYmljb252PSJuIl0pCitBQ19TVUJTVChsaWJpY29udikK
KworIyBBdXRvc2NhbiBzdHVmZiAoZXhjZXB0IGZvciB5YWpsL3lhamxfdmVyc2lvbi5oIGNoZWNr
KQorIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KK0FDX0ZVTkNfQUxMT0NBCitBQ19DSEVDS19I
RUFERVJTKFsgXAorICAgICAgICAgICAgICAgIGFycGEvaW5ldC5oIGZjbnRsLmggaW50dHlwZXMu
aCBsaWJpbnRsLmggbGltaXRzLmggbWFsbG9jLmggXAorICAgICAgICAgICAgICAgIG5ldGRiLmgg
bmV0aW5ldC9pbi5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGxpYi5oIHN0cmluZy5oIFwKKyAgICAg
ICAgICAgICAgICBzdHJpbmdzLmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBzeXMvbW91bnQuaCBz
eXMvcGFyYW0uaCBcCisgICAgICAgICAgICAgICAgc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmgg
c3lzL3RpbWUuaCBzeXNsb2cuaCB0ZXJtaW9zLmggXAorICAgICAgICAgICAgICAgIHVuaXN0ZC5o
IHlhamwveWFqbF92ZXJzaW9uLmggXAorICAgICAgICAgICAgICAgIF0pCisKKyMgQ2hlY2tzIGZv
ciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KK0FD
X0hFQURFUl9TVERCT09MCitBQ19UWVBFX1VJRF9UCitBQ19DX0lOTElORQorQUNfVFlQRV9JTlQx
Nl9UCitBQ19UWVBFX0lOVDMyX1QKK0FDX1RZUEVfSU5UNjRfVAorQUNfVFlQRV9JTlQ4X1QKK0FD
X1RZUEVfTU9ERV9UCitBQ19UWVBFX09GRl9UCitBQ19UWVBFX1BJRF9UCitBQ19DX1JFU1RSSUNU
CitBQ19UWVBFX1NJWkVfVAorQUNfVFlQRV9TU0laRV9UCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1
Y3Qgc3RhdC5zdF9ibGtzaXplXSkKK0FDX1NUUlVDVF9TVF9CTE9DS1MKK0FDX0NIRUNLX01FTUJF
UlMoW3N0cnVjdCBzdGF0LnN0X3JkZXZdKQorQUNfVFlQRV9VSU5UMTZfVAorQUNfVFlQRV9VSU5U
MzJfVAorQUNfVFlQRV9VSU5UNjRfVAorQUNfVFlQRV9VSU5UOF9UCitBQ19DSEVDS19UWVBFUyhb
cHRyZGlmZl90XSkKKworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgorQUNfRlVOQ19F
UlJPUl9BVF9MSU5FCitBQ19GVU5DX0ZPUksKK0FDX0ZVTkNfRlNFRUtPCitBQ19GVU5DX0xTVEFU
X0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LCitBQ19IRUFERVJfTUFKT1IKK0FDX0ZVTkNfTUFMTE9D
CitBQ19GVU5DX01LVElNRQorQUNfRlVOQ19NTUFQCitBQ19GVU5DX1JFQUxMT0MKK0FDX0ZVTkNf
U1RSTkxFTgorQUNfRlVOQ19TVFJUT0QKK0FDX0NIRUNLX0ZVTkNTKFsgXAorICAgICAgICAgICAg
ICAgIGFsYXJtIGF0ZXhpdCBiemVybyBjbG9ja19nZXR0aW1lIGR1cDIgZmRhdGFzeW5jIGZ0cnVu
Y2F0ZSBcCisgICAgICAgICAgICAgICAgZ2V0Y3dkIGdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUg
Z2V0cGFnZXNpemUgZ2V0dGltZW9mZGF5IFwKKyAgICAgICAgICAgICAgICBpbmV0X250b2EgaXNh
c2NpaSBsb2NhbHRpbWVfciBtZW1jaHIgbWVtbW92ZSBtZW1zZXQgbWtkaXIgXAorICAgICAgICAg
ICAgICAgIG1rZmlmbyBtdW5tYXAgcGF0aGNvbmYgcmVhbHBhdGggcmVnY29tcCBybWRpciBzZWxl
Y3Qgc2V0ZW52IFwKKyAgICAgICAgICAgICAgICBzb2NrZXQgc3RyY2FzZWNtcCBzdHJjaHIgc3Ry
Y3NwbiBzdHJkdXAgc3RyZXJyb3Igc3RybmR1cCBcCisgICAgICAgICAgICAgICAgc3RycGJyayBz
dHJyY2hyIHN0cnNwbiBzdHJzdHIgc3RydG9sIHN0cnRvdWwgc3RydG91bGwgdHpzZXQgXAorICAg
ICAgICAgICAgICAgIHVuYW1lIFwKKyAgICAgICAgICAgICAgICBdKQorCitBQ19PVVRQVVQoKQpk
aWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvZGVidWdnZXIvZ2Ric3gv
eGcvTWFrZWZpbGUKLS0tIGEvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcvTWFrZWZpbGUJTW9uIEph
biAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyBiL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01h
a2VmaWxlCVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMjEsNyArMjEsNiBAQCB4
Z19hbGwuYTogJChYR19PQkpTKSBNYWtlZmlsZSAkKFhHX0hEUlMpCiAjCSQoQ0MpIC1tMzIgLWMg
LW8gJEAgJF4KIAogeGVuLWhlYWRlcnM6Ci0JJChNQUtFKSAtQyAuLi8uLi8uLi9jaGVjayAKIAkk
KE1BS0UpIC1DIC4uLy4uLy4uL2luY2x1ZGUKIAogIyB4Z19tYWluLm86IHhnX21haW4uYyBNYWtl
ZmlsZSAkKFhHX0hEUlMpCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29s
cy9pbnN0YWxsLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3Rvb2xzL2luc3RhbGwuc2gJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBA
IC0wLDAgKzEsMSBAQAorLi4vaW5zdGFsbC5zaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2xpYmZzaW1hZ2UvTWFr
ZWZpbGUKLS0tIGEvdG9vbHMvbGliZnNpbWFnZS9NYWtlZmlsZQlNb24gSmFuIDA5IDE2OjAxOjQ0
IDIwMTIgKzAxMDAKKysrIGIvdG9vbHMvbGliZnNpbWFnZS9NYWtlZmlsZQlUdWUgSmFuIDEwIDE5
OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTIsNyArMiwxMSBAQCBYRU5fUk9PVCA9ICQoQ1VSRElSKS8u
Li8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiBTVUJESVJTLXkgPSBj
b21tb24gdWZzIHJlaXNlcmZzIGlzbzk2NjAgZmF0IHpmcyB4ZnMKLVNVQkRJUlMteSArPSAkKHNo
ZWxsIGVudiBDQz0iJChDQykiIC4vY2hlY2stbGliZXh0MmZzKQoraWZlcSAoJChDT05GSUdfRVhU
MkZTKSwgeSkKKyAgICBTVUJESVJTLXkgKz0gZXh0MmZzLWxpYgorZWxzZQorICAgIFNVQkRJUlMt
eSArPSBleHQyZnMKK2VuZGlmCiAKIC5QSE9OWTogYWxsIGNsZWFuIGluc3RhbGwKIGFsbCBjbGVh
biBpbnN0YWxsOiAlOiBzdWJkaXJzLSUKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0
MTllIHRvb2xzL2xpYmZzaW1hZ2UvY2hlY2stbGliZXh0MmZzCi0tLSBhL3Rvb2xzL2xpYmZzaW1h
Z2UvY2hlY2stbGliZXh0MmZzCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMSArMCwwIEBACi0j
IS9iaW4vc2gKLQotY2F0ID5leHQyLXRlc3QuYyA8PEVPRgotI2luY2x1ZGUgPGV4dDJmcy9leHQy
ZnMuaD4KLQotaW50IG1haW4oKQotewotCWV4dDJmc19vcGVuMjsKLX0KLUVPRgotCi0ke0NDLWdj
Y30gLW8gZXh0Mi10ZXN0IGV4dDItdGVzdC5jIC1sZXh0MmZzID4vZGV2L251bGwgMj4mMQotaWYg
WyAkPyA9IDAgXTsgdGhlbgotCWVjaG8gZXh0MmZzLWxpYgotZWxzZQotCWVjaG8gZXh0MmZzCi1m
aQotCi1ybSAtZiBleHQyLXRlc3QgZXh0Mi10ZXN0LmMKLQotZXhpdCAwCmRpZmYgLXIgNWIyNjc2
YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9saWJ4ZW4vTWFrZWZpbGUKLS0tIGEvdG9vbHMv
bGlieGVuL01ha2VmaWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29s
cy9saWJ4ZW4vTWFrZWZpbGUJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0yMiwx
MiArMjIsMTIgQEAgTUFKT1IgPSAxLjAKIE1JTk9SID0gMAogCiBDRkxBR1MgKz0gLUlpbmNsdWRl
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICQoc2hlbGwgeG1sMi1jb25maWcgLS1j
ZmxhZ3MpIFwKLSAgICAgICAgICAkKHNoZWxsIGN1cmwtY29uZmlnIC0tY2ZsYWdzKSBcCisgICAg
ICAgICAgJChzaGVsbCAkKFhNTDJfQ09ORklHKSAtLWNmbGFncykgXAorICAgICAgICAgICQoc2hl
bGwgJChDVVJMX0NPTkZJRykgLS1jZmxhZ3MpIFwKICAgICAgICAgICAtZlBJQwogCi1MREZMQUdT
ICs9ICQoc2hlbGwgeG1sMi1jb25maWcgLS1saWJzKSBcCi0gICAgICAgICAgICQoc2hlbGwgY3Vy
bC1jb25maWcgLS1saWJzKQorTERGTEFHUyArPSAkKHNoZWxsICQoWE1MMl9DT05GSUcpIC0tbGli
cykgXAorICAgICAgICAgICAkKHNoZWxsICQoQ1VSTF9DT05GSUcpIC0tbGlicykKIAogTElCWEVO
QVBJX0hEUlMgPSAkKHdpbGRjYXJkIGluY2x1ZGUveGVuL2FwaS8qLmgpIGluY2x1ZGUveGVuL2Fw
aS94ZW5fYWxsLmgKIExJQlhFTkFQSV9PQkpTID0gJChwYXRzdWJzdCAlLmMsICUubywgJCh3aWxk
Y2FyZCBzcmMvKi5jKSkKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xz
L200L2RlZmF1bHRfbGliLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3Rvb2xzL200L2RlZmF1bHRfbGliLm00CVR1ZSBKYW4gMTAgMTk6MTM6MDEg
MjAxMiArMDEwMApAQCAtMCwwICsxLDggQEAKK0FDX0RFRlVOKFtBWF9ERUZBVUxUX0xJQl0sCitb
QVNfSUYoW3Rlc3QgLWQgIiRwcmVmaXgvbGliNjQiXSwgWworICAgIExJQl9QQVRIPSJsaWI2NCIK
K10sWworICAgIExJQl9QQVRIPSJsaWIiCitdKQorQUNfU1VCU1QoTElCX1BBVEgpXSkKKwpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvZGlzYWJsZV9mZWF0dXJl
Lm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rv
b2xzL200L2Rpc2FibGVfZmVhdHVyZS5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAK
QEAgLTAsMCArMSwxMyBAQAorQUNfREVGVU4oW0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlRdLAor
W0FDX0FSR19FTkFCTEUoWyQxXSwKKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLSQxXSwg
WyQyXSkpCisKK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieG5vIl0sIFsKKyAgICBheF9j
dl8kMT0ibiIKK10sIFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieHllcyJdLCBbCisgICAgYXhfY3Zf
JDE9InkiCitdLCBbdGVzdCAteiAkYXhfY3ZfJDFdLCBbCisgICAgYXhfY3ZfJDE9InkiCitdKQor
JDE9JGF4X2N2XyQxCitBQ19TVUJTVCgkMSldKQpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRl
MDE3YzQxOWUgdG9vbHMvbTQvZW5hYmxlX2ZlYXR1cmUubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvZW5hYmxlX2ZlYXR1cmUubTQJ
VHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVO
KFtBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlRdLAorW0FDX0FSR19FTkFCTEUoWyQxXSwKKyAgICBB
U19IRUxQX1NUUklORyhbLS1lbmFibGUtJDFdLCBbJDJdKSkKKworQVNfSUYoW3Rlc3QgIngkZW5h
YmxlXyQxIiA9ICJ4eWVzIl0sIFsKKyAgICBheF9jdl8kMT0ieSIKK10sIFt0ZXN0ICJ4JGVuYWJs
ZV8kMSIgPSAieG5vIl0sIFsKKyAgICBheF9jdl8kMT0ibiIKK10sIFt0ZXN0IC16ICRheF9jdl8k
MV0sIFsKKyAgICBheF9jdl8kMT0ibiIKK10pCiskMT0kYXhfY3ZfJDEKK0FDX1NVQlNUKCQxKV0p
CmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9tNC9vY2FtbC5tNAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9t
NC9vY2FtbC5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSwyNDEg
QEAKK2RubCBhdXRvY29uZiBtYWNyb3MgZm9yIE9DYW1sCitkbmwgZnJvbSBodHRwOi8vZm9yZ2Uu
b2NhbWxjb3JlLm9yZy8KK2RubAorZG5sIENvcHlyaWdodCDCqSAyMDA5ICAgICAgUmljaGFyZCBX
Lk0uIEpvbmVzCitkbmwgQ29weXJpZ2h0IMKpIDIwMDkgICAgICBTdGVmYW5vIFphY2NoaXJvbGkK
K2RubCBDb3B5cmlnaHQgwqkgMjAwMC0yMDA1IE9saXZpZXIgQW5kcmlldQorZG5sIENvcHlyaWdo
dCDCqSAyMDAwLTIwMDUgSmVhbi1DaHJpc3RvcGhlIEZpbGxpw6J0cmUKK2RubCBDb3B5cmlnaHQg
wqkgMjAwMC0yMDA1IEdlb3JnZXMgTWFyaWFubworZG5sCitkbmwgRm9yIGRvY3VtZW50YXRpb24s
IHBsZWFzZSByZWFkIHRoZSBvY2FtbC5tNCBtYW4gcGFnZS4KKworQUNfREVGVU4oW0FDX1BST0df
T0NBTUxdLAorW2RubAorICAjIGNoZWNraW5nIGZvciBvY2FtbGMKKyAgQUNfQ0hFQ0tfVE9PTChb
T0NBTUxDXSxbb2NhbWxjXSxbbm9dKQorCisgIGlmIHRlc3QgIiRPQ0FNTEMiICE9ICJubyI7IHRo
ZW4KKyAgICAgT0NBTUxWRVJTSU9OPWAkT0NBTUxDIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lv
biogKlwoLipcKSR8XDF8cCdgCisgICAgIEFDX01TR19SRVNVTFQoW09DYW1sIHZlcnNpb24gaXMg
JE9DQU1MVkVSU0lPTl0pCisgICAgICMgSWYgT0NBTUxMSUIgaXMgc2V0LCB1c2UgaXQKKyAgICAg
aWYgdGVzdCAiJE9DQU1MTElCIiA9ICIiOyB0aGVuCisgICAgICAgIE9DQU1MTElCPWAkT0NBTUxD
IC13aGVyZSAyPi9kZXYvbnVsbCB8fCAkT0NBTUxDIC12fHRhaWwgLTF8Y3V0IC1kICcgJyAtZiA0
YAorICAgICBlbHNlCisgICAgICAgIEFDX01TR19SRVNVTFQoW09DQU1MTElCIHByZXZpb3VzbHkg
c2V0OyBwcmVzZXJ2aW5nIGl0Ll0pCisgICAgIGZpCisgICAgIEFDX01TR19SRVNVTFQoW09DYW1s
IGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUJdKQorCisgICAgIEFDX1NVQlNUKFtPQ0FNTFZFUlNJ
T05dKQorICAgICBBQ19TVUJTVChbT0NBTUxMSUJdKQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9j
YW1sb3B0CisgICAgIEFDX0NIRUNLX1RPT0woW09DQU1MT1BUXSxbb2NhbWxvcHRdLFtub10pCisg
ICAgIE9DQU1MQkVTVD1ieXRlCisgICAgIGlmIHRlc3QgIiRPQ0FNTE9QVCIgPSAibm8iOyB0aGVu
CisJQUNfTVNHX1dBUk4oW0Nhbm5vdCBmaW5kIG9jYW1sb3B0OyBieXRlY29kZSBjb21waWxhdGlv
biBvbmx5Ll0pCisgICAgIGVsc2UKKwlUTVBWRVJTSU9OPWAkT0NBTUxPUFQgLXYgfCBzZWQgLW4g
LWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJyBgCisJaWYgdGVzdCAiJFRNUFZFUlNJT04i
ICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRoZW4KKwkgICAgQUNfTVNHX1JFU1VMVChbdmVyc2lvbnMg
ZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxvcHQgZGlzY2FyZGVkLl0pCisJICAgIE9DQU1MT1BU
PW5vCisJZWxzZQorCSAgICBPQ0FNTEJFU1Q9b3B0CisJZmkKKyAgICAgZmkKKworICAgICBBQ19T
VUJTVChbT0NBTUxCRVNUXSkKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbGMub3B0CisgICAg
IEFDX0NIRUNLX1RPT0woW09DQU1MQ0RPVE9QVF0sW29jYW1sYy5vcHRdLFtub10pCisgICAgIGlm
IHRlc3QgIiRPQ0FNTENET1RPUFQiICE9ICJubyI7IHRoZW4KKwlUTVBWRVJTSU9OPWAkT0NBTUxD
RE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCWlm
IHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgIEFDX01T
R19SRVNVTFQoW3ZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sYy5vcHQgZGlzY2Fy
ZGVkLl0pCisJZWxzZQorCSAgICBPQ0FNTEM9JE9DQU1MQ0RPVE9QVAorCWZpCisgICAgIGZpCisK
KyAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxvcHQub3B0CisgICAgIGlmIHRlc3QgIiRPQ0FNTE9Q
VCIgIT0gIm5vIiA7IHRoZW4KKwlBQ19DSEVDS19UT09MKFtPQ0FNTE9QVERPVE9QVF0sW29jYW1s
b3B0Lm9wdF0sW25vXSkKKwlpZiB0ZXN0ICIkT0NBTUxPUFRET1RPUFQiICE9ICJubyI7IHRoZW4K
KwkgICBUTVBWRVJTSU9OPWAkT0NBTUxPUFRET1RPUFQgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJz
aW9uKiAqXCguKlwpJHxcMXxwJyBgCisJICAgaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NB
TUxWRVJTSU9OIiA7IHRoZW4KKwkgICAgICBBQ19NU0dfUkVTVUxUKFt2ZXJzaW9uIGRpZmZlcnMg
ZnJvbSBvY2FtbGM7IG9jYW1sb3B0Lm9wdCBkaXNjYXJkZWQuXSkKKwkgICBlbHNlCisJICAgICAg
T0NBTUxPUFQ9JE9DQU1MT1BURE9UT1BUCisJICAgZmkKKyAgICAgICAgZmkKKyAgICAgZmkKKwor
ICAgICBBQ19TVUJTVChbT0NBTUxPUFRdKQorICBmaQorCisgIEFDX1NVQlNUKFtPQ0FNTENdKQor
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sIHRvcGxldmVsCisgIEFDX0NIRUNLX1RPT0woW09DQU1M
XSxbb2NhbWxdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxkZXAKKyAgQUNfQ0hFQ0tf
VE9PTChbT0NBTUxERVBdLFtvY2FtbGRlcF0sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2Ft
bG1rdG9wCisgIEFDX0NIRUNLX1RPT0woW09DQU1MTUtUT1BdLFtvY2FtbG1rdG9wXSxbbm9dKQor
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sbWtsaWIKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxNS0xJ
Ql0sW29jYW1sbWtsaWJdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxkb2MKKyAgQUNf
Q0hFQ0tfVE9PTChbT0NBTUxET0NdLFtvY2FtbGRvY10sW25vXSkKKworICAjIGNoZWNraW5nIGZv
ciBvY2FtbGJ1aWxkCisgIEFDX0NIRUNLX1RPT0woW09DQU1MQlVJTERdLFtvY2FtbGJ1aWxkXSxb
bm9dKQorXSkKKworCitBQ19ERUZVTihbQUNfUFJPR19PQ0FNTExFWF0sCitbZG5sCisgICMgY2hl
Y2tpbmcgZm9yIG9jYW1sbGV4CisgIEFDX0NIRUNLX1RPT0woW09DQU1MTEVYXSxbb2NhbWxsZXhd
LFtub10pCisgIGlmIHRlc3QgIiRPQ0FNTExFWCIgIT0gIm5vIjsgdGhlbgorICAgIEFDX0NIRUNL
X1RPT0woW09DQU1MTEVYRE9UT1BUXSxbb2NhbWxsZXgub3B0XSxbbm9dKQorICAgIGlmIHRlc3Qg
IiRPQ0FNTExFWERPVE9QVCIgIT0gIm5vIjsgdGhlbgorCU9DQU1MTEVYPSRPQ0FNTExFWERPVE9Q
VAorICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFtPQ0FNTExFWF0pCitdKQorCitBQ19ERUZVTihb
QUNfUFJPR19PQ0FNTFlBQ0NdLAorW2RubAorICBBQ19DSEVDS19UT09MKFtPQ0FNTFlBQ0NdLFtv
Y2FtbHlhY2NdLFtub10pCisgIEFDX1NVQlNUKFtPQ0FNTFlBQ0NdKQorXSkKKworCitBQ19ERUZV
TihbQUNfUFJPR19DQU1MUDRdLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlk
bmwKKworICAjIGNoZWNraW5nIGZvciBjYW1scDQKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0XSxb
Y2FtbHA0XSxbbm9dKQorICBpZiB0ZXN0ICIkQ0FNTFA0IiAhPSAibm8iOyB0aGVuCisgICAgIFRN
UFZFUlNJT049YCRDQU1MUDQgLXYgMj4mMXwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiAqXCguKlwp
JHxcMXxwJ2AKKyAgICAgaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7
IHRoZW4KKwlBQ19NU0dfUkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjXSkKKyAg
ICAgICAgQ0FNTFA0PW5vCisgICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFtDQU1MUDRdKQorCisg
ICMgY2hlY2tpbmcgZm9yIGNvbXBhbmlvbiB0b29scworICBBQ19DSEVDS19UT09MKFtDQU1MUDRC
T09UXSxbY2FtbHA0Ym9vdF0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0T10sW2NhbWxw
NG9dLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9GXSxbY2FtbHA0b2ZdLFtub10pCisg
IEFDX0NIRUNLX1RPT0woW0NBTUxQNE9PRl0sW2NhbWxwNG9vZl0sW25vXSkKKyAgQUNfQ0hFQ0tf
VE9PTChbQ0FNTFA0T1JGXSxbY2FtbHA0b3JmXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1M
UDRQUk9GXSxbY2FtbHA0cHJvZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0Ul0sW2Nh
bWxwNHJdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNFJGXSxbY2FtbHA0cmZdLFtub10p
CisgIEFDX1NVQlNUKFtDQU1MUDRCT09UXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9dKQorICBBQ19T
VUJTVChbQ0FNTFA0T0ZdKQorICBBQ19TVUJTVChbQ0FNTFA0T09GXSkKKyAgQUNfU1VCU1QoW0NB
TUxQNE9SRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRQUk9GXSkKKyAgQUNfU1VCU1QoW0NBTUxQNFJd
KQorICBBQ19TVUJTVChbQ0FNTFA0UkZdKQorXSkKKworCitBQ19ERUZVTihbQUNfUFJPR19GSU5E
TElCXSwKK1tkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisKKyAgIyBjaGVj
a2luZyBmb3Igb2NhbWxmaW5kCisgIEFDX0NIRUNLX1RPT0woW09DQU1MRklORF0sW29jYW1sZmlu
ZF0sW25vXSkKKyAgQUNfU1VCU1QoW09DQU1MRklORF0pCitdKQorCisKK2RubCBUaGFua3MgdG8g
SmltIE1leWVyaW5nIGZvciB3b3JraW5nIHRoaXMgbmV4dCBiaXQgb3V0IGZvciB1cy4KK2RubCBY
WFggV2Ugc2hvdWxkIGRlZmluZSBBU19UUl9TSCBpZiBpdCdzIG5vdCBkZWZpbmVkIGFscmVhZHkK
K2RubCAoZWcuIGZvciBvbGQgYXV0b2NvbmYpLgorQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX1BL
R10sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfRklORExJQl0pZG5sCisKKyAgQUNfTVNH
X0NIRUNLSU5HKFtmb3IgT0NhbWwgZmluZGxpYiBwYWNrYWdlICQxXSkKKworICB1bnNldCBmb3Vu
ZAorICB1bnNldCBwa2cKKyAgZm91bmQ9bm8KKyAgZm9yIHBrZyBpbiAkMSAkMiA7IGRvCisgICAg
aWYgJE9DQU1MRklORCBxdWVyeSAkcGtnID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAg
ICAgIEFDX01TR19SRVNVTFQoW2ZvdW5kXSkKKyAgICAgIEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFd
KT0kcGtnCisgICAgICBmb3VuZD15ZXMKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBp
ZiB0ZXN0ICIkZm91bmQiID0gIm5vIiA7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91
bmRdKQorICAgIEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFdKT1ubworICBmaQorCisgIEFDX1NVQlNU
KEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFdKSkKK10pCisKKworQUNfREVGVU4oW0FDX0NIRUNLX09D
QU1MX01PRFVMRV0sCitbZG5sCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9DYW1sIG1vZHVsZSAk
Ml0pCisKKyAgY2F0ID4gY29uZnRlc3QubWwgPDxFT0YKK29wZW4gJDMKK0VPRgorICB1bnNldCBm
b3VuZAorICBmb3IgJDEgaW4gJCQxICQ0IDsgZG8KKyAgICBpZiAkT0NBTUxDIC1jIC1JICIkJDEi
IGNvbmZ0ZXN0Lm1sID4mNSAyPiY1IDsgdGhlbgorICAgICAgZm91bmQ9eWVzCisgICAgICBicmVh
aworICAgIGZpCisgIGRvbmUKKworICBpZiB0ZXN0ICIkZm91bmQiIDsgdGhlbgorICAgIEFDX01T
R19SRVNVTFQoWyQkMV0pCisgIGVsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91bmRdKQor
ICAgICQxPW5vCisgIGZpCisgIEFDX1NVQlNUKFskMV0pCitdKQorCisKK2RubCBYWFggQ3Jvc3Mt
Y29tcGlsaW5nCitBQ19ERUZVTihbQUNfQ0hFQ0tfT0NBTUxfV09SRF9TSVpFXSwKK1tkbmwKKyAg
QUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9D
YW1sIGNvbXBpbGVyIHdvcmQgc2l6ZV0pCisgIGNhdCA+IGNvbmZ0ZXN0Lm1sIDw8RU9GCisgIHBy
aW50X2VuZGxpbmUgKHN0cmluZ19vZl9pbnQgU3lzLndvcmRfc2l6ZSkKKyAgRU9GCisgIE9DQU1M
X1dPUkRfU0laRT1gJE9DQU1MIGNvbmZ0ZXN0Lm1sYAorICBBQ19NU0dfUkVTVUxUKFskT0NBTUxf
V09SRF9TSVpFXSkKKyAgQUNfU1VCU1QoW09DQU1MX1dPUkRfU0laRV0pCitdKQorCitBQ19ERUZV
TihbQUNfQ0hFQ0tfT0NBTUxfT1NfVFlQRV0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0df
T0NBTUxdKWRubAorICBBQ19NU0dfQ0hFQ0tJTkcoW09DYW1sIFN5cy5vc190eXBlXSkKKworICBj
YXQgPiBjb25mdGVzdC5tbCA8PEVPRgorICBwcmludF9zdHJpbmcoU3lzLm9zX3R5cGUpOzsKK0VP
RgorCisgIE9DQU1MX09TX1RZUEU9YCRPQ0FNTCBjb25mdGVzdC5tbGAKKyAgQUNfTVNHX1JFU1VM
VChbJE9DQU1MX09TX1RZUEVdKQorICBBQ19TVUJTVChbT0NBTUxfT1NfVFlQRV0pCitdKQpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvcGF0aF9vcl9mYWlsLm00
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xz
L200L3BhdGhfb3JfZmFpbC5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTAs
MCArMSw2IEBACitBQ19ERUZVTihbQVhfUEFUSF9QUk9HX09SX0ZBSUxdLAorW0FDX1BBVEhfUFJP
RyhbJDFdLCBbJDJdLCBbbm9dKQoraWYgdGVzdCB4IiR7JDF9IiA9PSB4Im5vIiAKK3RoZW4KKyAg
ICBBQ19NU0dfRVJST1IoW1VuYWJsZSB0byBmaW5kICQyLCBwbGVhc2UgaW5zdGFsbCAkMl0pCitm
aV0pCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9tNC9weXRob25f
ZGV2ZWwubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIvdG9vbHMvbTQvcHl0aG9uX2RldmVsLm00CVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEw
MApAQCAtMCwwICsxLDE4IEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX0RFVkVMXSwKK1tB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gZGV2ZWxdKQorCitgJFBZVEhPTiAtYyAnCitpbXBv
cnQgb3MucGF0aCwgc3lzCitmb3IgcCBpbiBzeXMucGF0aDoKKyAgICBpZiBvcy5wYXRoLmV4aXN0
cyhwICsgIi9jb25maWcvTWFrZWZpbGUiKToKKyAgICAgICAgc3lzLmV4aXQoMCkKK3N5cy5leGl0
KDEpCisnID4gL2Rldi9udWxsIDI+JjFgCisKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAg
ICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNHX0VSUk9SKFtQeXRob24gZGV2ZWwgcGFj
a2FnZSBub3QgZm91bmRdKQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRp
ZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9tNC9weXRob25fdmVyc2lv
bi5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90
b29scy9tNC9weXRob25fdmVyc2lvbi5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAK
QEAgLTAsMCArMSwxMiBAQAorQUNfREVGVU4oW0FYX0NIRUNLX1BZVEhPTl9WRVJTSU9OXSwKK1tB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gdmVyc2lvbiA+PSAkMS4kMiBdKQorYCRQWVRIT04g
LWMgJ2ltcG9ydCBzeXM7IGV4aXQoZXZhbCgic3lzLnZlcnNpb25faW5mbyA8ICgkMSwgJDIpIikp
J2AKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBweXRob25fdmVyc2lvbj1gJFBZVEhP
TiAtViAyPiYxYAorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfRVJST1IoCisg
ICAgICAgIFskcHl0aG9uX3ZlcnNpb24gaXMgdG9vIG9sZCwgbWluaW11bSByZXF1aXJlZCB2ZXJz
aW9uIGlzICQxLiQyXSkKK2Vsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvcHl0aG9uX3htbC5tNAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9t
NC9weXRob25feG1sLm00CVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsx
LDEwIEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX1hNTF0sCitbQUNfTVNHX0NIRUNLSU5H
KFtmb3IgcHl0aG9uIHhtbC5kb20ubWluaWRvbV0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHhtbC5k
b20ubWluaWRvbSdgCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgQUNfTVNHX1JFU1VM
VChbbm9dKQorICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGZpbmQgeG1sLmRvbS5taW5pZG9t
IG1vZHVsZV0pCitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL200L3NldF9jZmxhZ3NfbGRmbGFncy5t
NAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29s
cy9tNC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTQJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAw
CkBAIC0wLDAgKzEsMjAgQEAKK0FDX0RFRlVOKFtBWF9TRVRfRkxBR1NdLAorW2ZvciBjZmxhZyBp
biAkUFJFUEVORF9JTkNMVURFUworZG8KKyAgICBQUkVQRU5EX0NGTEFHUys9IiAtSSRjZmxhZyIK
K2RvbmUKK2ZvciBsZGZsYWcgaW4gJFBSRVBFTkRfTElCCitkbworICAgIFBSRVBFTkRfTERGTEFH
Uys9IiAtTCRsZGZsYWciCitkb25lCitmb3IgY2ZsYWcgaW4gJEFQUEVORF9JTkNMVURFUworZG8K
KyAgICBBUFBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBpbiAkQVBQ
RU5EX0xJQgorZG8KKyAgICBBUFBFTkRfTERGTEFHUys9IiAtTCRsZGZsYWciCitkb25lCitDRkxB
R1M9IiRQUkVQRU5EX0NGTEFHUyAkQ0ZMQUdTICRBUFBFTkRfQ0ZMQUdTIgorTERGTEFHUz0iJFBS
RVBFTkRfTERGTEFHUyAkTERGTEFHUyAkQVBQRU5EX0xERkxBR1MiXSkKKwpkaWZmIC1yIDViMjY3
NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvdWRldi5tNAotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC91ZGV2Lm00CVR1ZSBK
YW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDMyIEBACitBQ19ERUZVTihbQVhf
Q0hFQ0tfVURFVl0sCitbaWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxpbnV4LWdudSIKK3RoZW4K
KyAgICBBQ19QQVRIX1BST0coW1VERVZBRE1dLCBbdWRldmFkbV0sIFtub10pCisgICAgaWYgdGVz
dCB4IiR7VURFVkFETX0iID09IHgibm8iIAorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9H
KFtVREVWSU5GT10sIFt1ZGV2aW5mb10sIFtub10pCisgICAgICAgIGlmIHRlc3QgeCIke1VERVZJ
TkZPfSIgPT0geCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKAor
ICAgICAgICAgICAgICAgIFtVbmFibGUgdG8gZmluZCB1ZGV2YWRtIG9yIHVkZXZpbmZvLCBwbGVh
c2UgaW5zdGFsbCB1ZGV2XSkKKyAgICAgICAgZmkKKyAgICAgICAgdWRldnZlcj1gJHtVREVWSU5G
T30gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKKyAgICBlbHNlCisgICAgICAgIHVkZXZ2ZXI9YCR7
VURFVkFETX0gaW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGZpCisgICAgaWYgdGVz
dCAke3VkZXZ2ZXJ9IC1sdCA1OQorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9HKFtIT1RQ
TFVHXSwgW2hvdHBsdWddLCBbbm9dKQorICAgICAgICBpZiB0ZXN0IHgiJHtIT1RQTFVHfSIgPT0g
eCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFt1ZGV2IGlzIHRv
byBvbGQsIHVwZ3JhZGUgdG8gdmVyc2lvbiA1OSBvciBsYXRlcl0pCisgICAgICAgIGZpCisgICAg
ZmkKK2Vsc2UKKyAgICBBQ19QQVRIX1BST0coW1ZOQ09ORklHXSwgW3ZuY29uZmlnXSwgW25vXSkK
KyAgICBpZiB0ZXN0IHgiJHtWTkNPTkZJR30iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICBB
Q19NU0dfRVJST1IoW05vdCBhIExpbnV4IHN5c3RlbSBhbmQgdW5hYmxlIHRvIGZpbmQgdm5kXSkK
KyAgICBmaQorZmkKK10pCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB2ZXJz
aW9uLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3ZlcnNpb24uc2gJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsNCBA
QAorIyEvYmluL3NoCitNQUpPUj1gZ3JlcCAiZXhwb3J0IFhFTl9WRVJTSU9OIiAkMSB8IHNlZCAn
cy8uKj0vL2cnIHwgdHIgLXMgIiAiYAorTUlOT1I9YGdyZXAgImV4cG9ydCBYRU5fU1VCVkVSU0lP
TiIgJDEgfCBzZWQgJ3MvLio9Ly9nJyB8IHRyIC1zICIgImAKK3ByaW50ZiAiJWQuJWQiICRNQUpP
UiAkTUlOT1IKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbQpodHRw
Oi8vbGlzdHMueGVuc291cmNlLmNvbS94ZW4tZGV2ZWwK

From xen-devel-bounces@lists.xensource.com Wed Feb 01 10:13:16 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Feb 2012 10:13:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RsXBj-0002ft-LQ; Wed, 01 Feb 2012 10:13:15 +0000
Received: from mail27.messagelabs.com ([193.109.254.147])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1RpzUe-0007wi-1h
	for xen-devel@lists.xensource.com; Wed, 25 Jan 2012 09:50:17 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-11.tower-27.messagelabs.com!1327484989!50156705!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 22977 invoked from network); 25 Jan 2012 09:49:49 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-11.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	25 Jan 2012 09:49:49 -0000
Received: by wibhm2 with SMTP id hm2so4744738wib.30
	for <xen-devel@lists.xensource.com>;
	Wed, 25 Jan 2012 01:50:11 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:content-transfer-encoding:subject
	:x-mercurial-node:message-id:user-agent:date:from:to;
	bh=51A2ebY6gr7L9rWQgJMuwZUXP9WRAxeMHeavbb4doaE=;
	b=SxPMmZqPOyO54bYXFKJTsyQkS5sIIofzAt7v9v4iOIue8Px8GSNXI4M9H3uFqJn7W1
	0dczbYU+iFxbBdnkqUhDL8rcswWfVXy0nNBqWZoIxjPDEw89X2BkuQnBAB6I3jggsdCe
	ZOVbqtrXPh0cQlOCYDpG9XEBz/fuXXY4/7ntM=
Received: by 10.180.83.104 with SMTP id p8mr9929061wiy.4.1327485010923;
	Wed, 25 Jan 2012 01:50:10 -0800 (PST)
Received: from debian.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id di5sm61824275wib.3.2012.01.25.01.50.07
	(version=TLSv1/SSLv3 cipher=OTHER);
	Wed, 25 Jan 2012 01:50:08 -0800 (PST)
MIME-Version: 1.0
X-Mercurial-Node: 6fde017c419e70925f15eb00e8266107011e21cb
Message-Id: <6fde017c419e70925f15.1326761318@debian.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Tue, 17 Jan 2012 01:48:38 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xensource.com
X-Mailman-Approved-At: Wed, 01 Feb 2012 10:12:42 +0000
Subject: [Xen-devel] [PATCH v4] build: add autoconf to replace custom checks
	in tools/check
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI2MjE5MTgxIC0zNjAwCiMgTm9kZSBJRCA2ZmRlMDE3YzQx
OWU3MDkyNWYxNWViMDBlODI2NjEwNzAxMWUyMWNiCiMgUGFyZW50ICA1YjI2NzZhYzEzMjE4OTUx
Njk4YzQ5ZmEwMzUwZjJhYzQ4MjIwZjNkCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwKY29uZmlnL1Rvb2xzLm1rIGFuZCB0b29scy9jb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMg
aW5jbHVkZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRp
b25zIHByZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBh
c3NpbmcKcGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBl
eGVjdXRpbmcgY29uZmlndXJlCnNjcmlwdC4KCnRvb2xzL2NvbmZpZy5oIGlzIHN0aWxsIG5vdCB1
c2VkIGFueXdoZXJlLCBhbmQgaXMgYXV0b21hdGljYWxseQpjcmVhdGVkIGJ5IGF1dG9oZWFkZXIs
IGFsdG91Z2ggdGhpcyBtaWdoIGNoYW5nZSB3aGVuIHdlIHN0YXJ0IHRvCmluY2x1ZGUgdGhpcyBm
aWxlLgoKSnVzdCBhIGZpcnN0IHJlbGVhc2UsIGFuZCBzaW5jZSBpdCdzIG15IGZpcnN0IGF1dG9j
b25mIHNjcmlwdCBJIGd1ZXNzCnRoZXJlIHdpbGwgYmUgbWFueSB0aGluZ3MgdG8gcG9saXNoIGhl
cmUuLi4gUGxlYXNlIHJldmlldyBhbmQgY29tbWVudC4KCkNoYW5nZXMgc2luY2UgdjM6CgogKiBD
b3BpZWQgY29uZmlnLnN1YiBhbmQgY29uZmlnLmd1ZXNzIGZyb20gYXV0b21ha2UgdmVyc2lvbiAx
LjExLjEKICAgcHJlc2VudCBpbiBEZWJpYW4gc3RhYmxlICg2LjAuMykuCgpDaGFuZ2VzIHNpbmNl
IHYyOgoKICogQ2hhbmdlZCBvcmRlciBvZiBjb25maWcvVG9vbHMubWsgaW5jbHVkZS4KCiAqIEFk
ZGVkICItZSIgdG8gYXV0b2dlbi5zaCBzaGViYW5nLgoKICogQWRkZWQgbmVjZXNzYXJ5IGZpbGVz
IChjb25maWcuKikgYW5kIG91dHB1dCBmcm9tIEF1dG9oZWFkZXIgYW5kCiAgIEF1dG9jb25mLgoK
ICogUmVtb3ZlZCBBdXRvY29uZiBmcm9tIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgdXBkYXRlZCBS
RUFETUUuCgpDaGFuZ2VzIHNpbmNlIHYxOgoKICogTW92ZWQgYXV0b2NvbmYgc3R1ZmYgaW5zaWRl
IHRvb2xzIGZvbGRlci4KCiAqIEFkZCBNYWtlZmlsZSBydWxlcyBmb3IgY2xlYW5pbmcuCgogKiBS
ZW1vdmVkIEF1dG9tYWtlIGRlcGVuZGVuY3kuCgogKiBDcmVhdGUgYXV0b2dlbi5zaCB0byBhdXRv
bWF0aWNhbGx5IGNyZWF0ZSBjb25maWd1cmUgc2NyaXB0IHdoZW4KICAgYnVpbGRpbmcgZnJvbSBz
b3VyY2UgcmVwb3NpdG9yeS4KCiAqIENhY2hlZCB2YWx1ZXMgb2Ygb3B0aW9ucyBwYXNzZWQgZnJv
bSBjb21tYW5kIGxpbmUuCgogKiBBZGQgbmVjZXNzYXJ5IGlnbm9yZXMgdG8gLmhnaWdub3JlLgoK
ICogQWRkZWQgQXV0b2NvbmYgdG8gdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzLgoKICogQ2hhbmdl
ZCBoeXBlbiB0byB1bmRlcnNjb3JlIGluIFhNTDIgYW5kIENVUkwgdmFyaWFibGUgbmFtZXMuCgog
KiBBZGRlZCBzY3JpcHQgdG8gZ2V0IHZlcnNpb24gZnJvbSB4ZW4vTWFrZWZpbGUuCgogKiBTZXQg
T2NhbWwgdG9vbHMgdG8gb3B0aW9uYWwuCgogKiBBZGRlZCBwcm9jZWRlbmNlIG9mIG00L29jYW1s
Lm00LgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAZW50ZWwudXBj
LmVkdT4KCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSAuaGdpZ25vcmUKLS0t
IGEvLmhnaWdub3JlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi8uaGdpZ25v
cmUJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0zMDgsNiArMzA4LDEyIEBACiBe
dG9vbHMvb2NhbWwvbGlicy94bC94ZW5saWdodFwubWwkCiBedG9vbHMvb2NhbWwvbGlicy94bC94
ZW5saWdodFwubWxpJAogXnRvb2xzL29jYW1sL3hlbnN0b3JlZC9veGVuc3RvcmVkJAorXnRvb2xz
L2F1dG9tNHRlXC5jYWNoZSQKK150b29scy9jb25maWdcLmgkCitedG9vbHMvY29uZmlnXC5sb2ck
CitedG9vbHMvY29uZmlnXC5zdGF0dXMkCitedG9vbHMvY29uZmlnXC5jYWNoZSQKK15jb25maWcv
VG9vbHNcLm1rJAogXnhlbi9cLmJhbm5lci4qJAogXnhlbi9CTE9HJAogXnhlbi9TeXN0ZW0ubWFw
JApkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgQ29uZmlnLm1rCi0tLSBhL0Nv
bmZpZy5tawlNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIGIvQ29uZmlnLm1rCVR1
ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtNzAsOSArNzAsNiBAQCBFWFRSQV9JTkNM
VURFUyArPSAkKEVYVFJBX1BSRUZJWCkvaW5jbHVkCiBFWFRSQV9MSUIgKz0gJChFWFRSQV9QUkVG
SVgpLyQoTElCTEVBRkRJUikKIGVuZGlmCiAKLUJJU09OCT89IGJpc29uCi1GTEVYCT89IGZsZXgK
LQogUFlUSE9OICAgICAgPz0gcHl0aG9uCiBQWVRIT05fUFJFRklYX0FSRyA/PSAtLXByZWZpeD0i
JChQUkVGSVgpIgogIyBUaGUgYWJvdmUgcmVxdWlyZXMgdGhhdCBQUkVGSVggY29udGFpbnMgKm5v
IHNwYWNlcyouIFRoaXMgdmFyaWFibGUgaXMgaGVyZQpAQCAtMTc1LDIyICsxNzIsOSBAQCBDRkxB
R1MgKz0gJChmb3JlYWNoIGksICQoUFJFUEVORF9JTkNMVURFCiBBUFBFTkRfTERGTEFHUyArPSAk
KGZvcmVhY2ggaSwgJChBUFBFTkRfTElCKSwgLUwkKGkpKQogQVBQRU5EX0NGTEFHUyArPSAkKGZv
cmVhY2ggaSwgJChBUFBFTkRfSU5DTFVERVMpLCAtSSQoaSkpCiAKLUNIRUNLX0xJQiA9ICQoRVhU
UkFfTElCKSAkKFBSRVBFTkRfTElCKSAkKEFQUEVORF9MSUIpCi1DSEVDS19JTkNMVURFUyA9ICQo
RVhUUkFfSU5DTFVERVMpICQoUFJFUEVORF9JTkNMVURFUykgJChBUFBFTkRfSU5DTFVERVMpCi0K
IEVNQkVEREVEX0VYVFJBX0NGTEFHUyA6PSAtbm9waWUgLWZuby1zdGFjay1wcm90ZWN0b3IgLWZu
by1zdGFjay1wcm90ZWN0b3ItYWxsCiBFTUJFRERFRF9FWFRSQV9DRkxBR1MgKz0gLWZuby1leGNl
cHRpb25zCiAKLSMgRW5hYmxlIFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNr
KS4KLVhTTV9FTkFCTEUgPz0gbgotRkxBU0tfRU5BQkxFID89ICQoWFNNX0VOQUJMRSkKLQotIyBE
b3dubG9hZCBHSVQgcmVwb3NpdG9yaWVzIHZpYSBIVFRQIG9yIEdJVCdzIG93biBwcm90b2NvbD8K
LSMgR0lUJ3MgcHJvdG9jb2wgaXMgZmFzdGVyIGFuZCBtb3JlIHJvYnVzdCwgd2hlbiBpdCB3b3Jr
cyBhdCBhbGwgKGZpcmV3YWxscwotIyBtYXkgYmxvY2sgaXQpLiBXZSBtYWtlIGl0IHRoZSBkZWZh
dWx0LCBidXQgaWYgeW91ciBHSVQgcmVwb3NpdG9yeSBkb3dubG9hZHMKLSMgZmFpbCBvciBoYW5n
LCBwbGVhc2Ugc3BlY2lmeSBHSVRfSFRUUD15IGluIHlvdXIgZW52aXJvbm1lbnQuCi1HSVRfSFRU
UCA/PSBuCi0KIFhFTl9FWFRGSUxFU19VUkw9aHR0cDovL3hlbmJpdHMueGVuc291cmNlLmNvbS94
ZW4tZXh0ZmlsZXMKICMgQWxsIHRoZSBmaWxlcyBhdCB0aGF0IGxvY2F0aW9uIHdlcmUgZG93bmxv
YWRlZCBmcm9tIGVsc2V3aGVyZSBvbgogIyB0aGUgaW50ZXJuZXQuICBUaGUgb3JpZ2luYWwgZG93
bmxvYWQgVVJMIGlzIHByZXNlcnZlZCBhcyBhIGNvbW1lbnQKQEAgLTIyMiwxNyArMjA2LDMgQEAg
UUVNVV9UQUcgPz0gYmIzNmQ2MzJlNGNhYmY0Nzg4MmFkZmYwN2E0NQogIyBOb3RlIHRoYXQgdXNp
bmcgU2VhQklPUyByZXF1aXJlcyB0aGUgdXNlIHRoZSB1cHN0cmVhbSBxZW11IGFzIHRoZQogIyBk
ZXZpY2UgbW9kZWwuCiBTRUFCSU9TX0RJUiA/PSAKLQotIyBPcHRpb25hbCBjb21wb25lbnRzCi1Y
RU5TVEFUX1hFTlRPUCAgICAgPz0geQotVlRQTV9UT09MUyAgICAgICAgID89IG4KLUxJQlhFTkFQ
SV9CSU5ESU5HUyA/PSBuCi1QWVRIT05fVE9PTFMgICAgICAgPz0geQotT0NBTUxfVE9PTFMgICAg
ICAgID89IHkKLUNPTkZJR19NSU5JVEVSTSAgICA/PSBuCi1DT05GSUdfTE9NT1VOVCAgICAgPz0g
bgotQ09ORklHX1NZU1RFTV9MSUJBSU8gPz0geQotCi1pZmVxICgkKE9DQU1MX1RPT0xTKSx5KQot
T0NBTUxfVE9PTFMgOj0gJChzaGVsbCBvY2FtbG9wdCAtdiA+IC9kZXYvbnVsbCAyPiYxICYmIGVj
aG8gInkiIHx8IGVjaG8gIm4iKQotZW5kaWYKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAx
N2M0MTllIE1ha2VmaWxlCi0tLSBhL01ha2VmaWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiAr
MDEwMAorKysgYi9NYWtlZmlsZQlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTQw
LDExICs0MCw5IEBAIGRpc3Q6IERFU1RESVI9JChESVNURElSKS9pbnN0YWxsCiBkaXN0OiBkaXN0
LXhlbiBkaXN0LWtlcm5lbHMgZGlzdC10b29scyBkaXN0LXN0dWJkb20gZGlzdC1kb2NzIGRpc3Qt
bWlzYwogCiBkaXN0LW1pc2M6Ci0JJChJTlNUQUxMX0RJUikgJChESVNURElSKS9jaGVjawogCSQo
SU5TVEFMTF9EQVRBKSAuL0NPUFlJTkcgJChESVNURElSKQogCSQoSU5TVEFMTF9EQVRBKSAuL1JF
QURNRSAkKERJU1RESVIpCiAJJChJTlNUQUxMX1BST0cpIC4vaW5zdGFsbC5zaCAkKERJU1RESVIp
Ci0JJChJTlNUQUxMX1BST0cpIHRvb2xzL2NoZWNrL2NoayB0b29scy9jaGVjay9jaGVja18qIHRv
b2xzL2NoZWNrL2Z1bmNzLnNoICQoRElTVERJUikvY2hlY2sKIGRpc3QtJTogREVTVERJUj0kKERJ
U1RESVIpL2luc3RhbGwKIGRpc3QtJTogaW5zdGFsbC0lCiAJQDogIyBkbyBub3RoaW5nCmRpZmYg
LXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSBSRUFETUUKLS0tIGEvUkVBRE1FCU1vbiBK
YW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi9SRUFETUUJVHVlIEphbiAxMCAxOToxMzow
MSAyMDEyICswMTAwCkBAIC04Nyw5ICs4NywxMyBAQCAyLiBjZCB0byB4ZW4tdW5zdGFibGUgKG9y
IHdoYXRldmVyIHlvdSBzCiAzLiBGb3IgdGhlIHZlcnkgZmlyc3QgYnVpbGQsIG9yIGlmIHlvdSB3
YW50IHRvIGRlc3Ryb3kgYnVpbGQgdHJlZXMsCiAgICBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CiAKKyAgICAjIC4vY29uZmlndXJlCiAgICAgIyBtYWtlIHdvcmxkCiAgICAgIyBtYWtlIGlu
c3RhbGwKIAorICAgSWYgeW91IHdhbnQsIHlvdSBjYW4gcnVuIC4vY29uZmlndXJlIC0taGVscCB0
byBzZWUgdGhlIGxpc3Qgb2YKKyAgIG9wdGlvbnMgYXZhaWxhYmxlIG9wdGlvbnMgd2hlbiBidWls
ZGluZyBhbmQgaW5zdGFsbGluZyBYZW4uCisKICAgIFRoaXMgd2lsbCBjcmVhdGUgYW5kIGluc3Rh
bGwgb250byB0aGUgbG9jYWwgbWFjaGluZS4gSXQgd2lsbCBidWlsZAogICAgdGhlIHhlbiBiaW5h
cnkgKHhlbi5neiksIHRoZSB0b29scyBhbmQgdGhlIGRvY3VtZW50YXRpb24uCiAKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIGF1dG9nZW4uc2gKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYXV0b2dlbi5zaAlUdWUgSmFuIDEwIDE5
OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSw5IEBACisjIS9iaW4vc2ggLWUKK3JtIC1yZiBj
b25maWd1cmUKK2NkIHRvb2xzCithdXRvaGVhZGVyCithdXRvY29uZgorY2QgLi4KK2VjaG8gIiMh
L2Jpbi9zaCAtZSIgPj4gY29uZmlndXJlCitlY2hvICJjZCB0b29scyAmJiAuL2NvbmZpZ3VyZSBc
JEAiID4+IGNvbmZpZ3VyZQorY2htb2QgK3ggY29uZmlndXJlCmRpZmYgLXIgNWIyNjc2YWMxMzIx
IC1yIDZmZGUwMTdjNDE5ZSBjb25maWcvVG9vbHMubWsuaW4KLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvY29uZmlnL1Rvb2xzLm1rLmluCVR1ZSBKYW4g
MTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDUwIEBACisjIFByZWZpeCBhbmQgaW5z
dGFsbCBmb2xkZXIKK1BSRUZJWCAgICAgICAgICAgICAgOj0gQHByZWZpeEAKK0xJQkxFQUZESVJf
eDg2XzY0ICAgOj0gQExJQl9QQVRIQAorCisjIEEgZGVidWcgYnVpbGQgb2YgdG9vbHM/CitkZWJ1
ZyAgICAgICAgICAgICAgIDo9IEBkZWJ1Z0AKKworIyBUb29scyBwYXRoCitCSVNPTiAgICAgICAg
ICAgICAgIDo9IEBCSVNPTkAKK0ZMRVggICAgICAgICAgICAgICAgOj0gQEZMRVhACitQWVRIT04g
ICAgICAgICAgICAgIDo9IEBQWVRIT05ACitQWVRIT05fUEFUSCAgICAgICAgIDo9IEBQWVRIT05Q
QVRIQAorUEVSTCAgICAgICAgICAgICAgICA6PSBAUEVSTEAKK0JSQ1RMICAgICAgICAgICAgICAg
Oj0gQEJSQ1RMQAorSVAgICAgICAgICAgICAgICAgICA6PSBASVBACitDVVJMX0NPTkZJRyAgICAg
ICAgIDo9IEBDVVJMQAorWE1MMl9DT05GSUcgICAgICAgICA6PSBAWE1MQAorQkFTSCAgICAgICAg
ICAgICAgICA6PSBAQkFTSEAKK1hHRVRUVEVYVCAgICAgICAgICAgOj0gQFhHRVRURVhUQAorCisj
IEV4dHJhIGZvbGRlciBmb3IgbGlicy9pbmNsdWRlcworUFJFUEVORF9JTkNMVURFUyAgICA6PSBA
UFJFUEVORF9JTkNMVURFU0AKK1BSRVBFTkRfTElCICAgICAgICAgOj0gQFBSRVBFTkRfTElCQAor
QVBQRU5EX0lOQ0xVREVTICAgICA6PSBAQVBQRU5EX0lOQ0xVREVTQAorQVBQRU5EX0xJQiAgICAg
ICAgICA6PSBAQVBQRU5EX0xJQkAKKworIyBFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVsZSAoYnkg
ZGVmYXVsdCwgRmxhc2spLgorWFNNX0VOQUJMRSAgICAgICAgICA6PSBAeHNtQAorRkxBU0tfRU5B
QkxFICAgICAgICA6PSBAeHNtQAorCisjIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhU
VFAgb3IgR0lUJ3Mgb3duIHByb3RvY29sPworIyBHSVQncyBwcm90b2NvbCBpcyBmYXN0ZXIgYW5k
IG1vcmUgcm9idXN0LCB3aGVuIGl0IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCisjIG1heSBibG9j
ayBpdCkuIFdlIG1ha2UgaXQgdGhlIGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCByZXBvc2l0b3J5
IGRvd25sb2FkcworIyBmYWlsIG9yIGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9IVFRQPXkgaW4g
eW91ciBlbnZpcm9ubWVudC4KK0dJVF9IVFRQICAgICAgICAgICAgOj0gQGdpdGh0dHBACisKKyMg
T3B0aW9uYWwgY29tcG9uZW50cworWEVOU1RBVF9YRU5UT1AgICAgICA6PSBAbW9uaXRvcnNACitW
VFBNX1RPT0xTICAgICAgICAgIDo9IEB2dHBtQAorTElCWEVOQVBJX0JJTkRJTkdTICA6PSBAeGFw
aUAKK1BZVEhPTl9UT09MUyAgICAgICAgOj0gQHB5dGhvbnRvb2xzQAorT0NBTUxfVE9PTFMgICAg
ICAgICA6PSBAb2NhbWx0b29sc0AKK0NPTkZJR19NSU5JVEVSTSAgICAgOj0gQG1pbml0ZXJtQAor
Q09ORklHX0xPTU9VTlQgICAgICA6PSBAbG9tb3VudEAKKworI1N5c3RlbSBvcHRpb25zCitDT05G
SUdfU1lTVEVNX0xJQkFJTzo9IEBzeXN0ZW1fYWlvQAorQ09ORklHX0xJQklDT05WICAgICA6PSBA
bGliaWNvbnZACitDT05GSUdfR0NSWVBUICAgICAgIDo9IEBsaWJnY3J5cHRACitDT05GSUdfRVhU
MkZTICAgICAgIDo9IEBsaWJleHQyZnNACmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdj
NDE5ZSBjb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIvY29uZmlndXJlCVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCww
ICsxLDIgQEAKKyMhL2Jpbi9zaCAtZQorY2QgdG9vbHMgJiYgLi9jb25maWd1cmUgJEAKZGlmZiAt
ciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL01ha2VmaWxlCi0tLSBhL3Rvb2xz
L01ha2VmaWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29scy9NYWtl
ZmlsZQlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTYsNyArNiw2IEBAIFNVQkRJ
UlMtbGliYWlvIDo9IGxpYmFpbwogZW5kaWYKIAogU1VCRElSUy15IDo9Ci1TVUJESVJTLXkgKz0g
Y2hlY2sKIFNVQkRJUlMteSArPSBpbmNsdWRlCiBTVUJESVJTLXkgKz0gbGlieGMKIFNVQkRJUlMt
eSArPSBmbGFzawpAQCAtNzYsNiArNzUsOCBAQCBjbGVhbjogc3ViZGlycy1jbGVhbgogLlBIT05Z
OiBkaXN0Y2xlYW4KIGRpc3RjbGVhbjogc3ViZGlycy1kaXN0Y2xlYW4KIAlybSAtcmYgaW9lbXUt
ZGlyIGlvZW11LXJlbW90ZQorCXJtIC1yZiAuLi9jb25maWcvVG9vbHMubWsgY29uZmlnLmggY29u
ZmlnLmxvZyBjb25maWcuc3RhdHVzIFwKKyAgICAgICAgICAgICAgIGNvbmZpZy5jYWNoZSBhdXRv
bTR0ZS5jYWNoZQogCiBpZm5lcSAoJChYRU5fQ09NUElMRV9BUkNIKSwkKFhFTl9UQVJHRVRfQVJD
SCkpCiBJT0VNVV9DT05GSUdVUkVfQ1JPU1MgPz0gLS1jcHU9JChYRU5fVEFSR0VUX0FSQ0gpIFwK
ZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL1J1bGVzLm1rCi0tLSBh
L3Rvb2xzL1J1bGVzLm1rCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29s
cy9SdWxlcy5tawlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTQsNiArNCw3IEBA
CiBhbGw6CiAKIGluY2x1ZGUgJChYRU5fUk9PVCkvQ29uZmlnLm1rCitpbmNsdWRlICQoWEVOX1JP
T1QpL2NvbmZpZy9Ub29scy5tawogCiBleHBvcnQgX0lOU1RBTEwgOj0gJChJTlNUQUxMKQogSU5T
VEFMTCA9ICQoWEVOX1JPT1QpL3Rvb2xzL2Nyb3NzLWluc3RhbGwKQEAgLTgwLDggKzgxLDYgQEAg
Y2hlY2stJChDT05GSUdfWDg2KSA9ICQoY2FsbCBjYy12ZXItY2hlYwogICAgICAgICAgICAgICAg
ICAgICAgICAgIlhlbiByZXF1aXJlcyBhdCBsZWFzdCBnY2MtMy40IikKICQoZXZhbCAkKGNoZWNr
LXkpKQogCi1fUFlUSE9OX1BBVEggOj0gJChzaGVsbCB3aGljaCAkKFBZVEhPTikpCi1QWVRIT05f
UEFUSCA/PSAkKF9QWVRIT05fUEFUSCkKIElOU1RBTExfUFlUSE9OX1BST0cgPSBcCiAJJChYRU5f
Uk9PVCkvdG9vbHMvcHl0aG9uL2luc3RhbGwtd3JhcCAiJChQWVRIT05fUEFUSCkiICQoSU5TVEFM
TF9QUk9HKQogCkBAIC0xMDksMyArMTA4LDcgQEAgc3ViZGlyLWFsbC0lIHN1YmRpci1jbGVhbi0l
IHN1YmRpci1pbnN0YQogCiBzdWJkaXItZGlzdGNsZWFuLSU6IC5waG9ueQogCSQoTUFLRSkgLUMg
JCogY2xlYW4KKworJChYRU5fUk9PVCkvY29uZmlnL1Rvb2xzLm1rOgorCUBlY2hvICJZb3UgaGF2
ZSB0byBydW4gLi9jb25maWd1cmUgYmVmb3JlIGJ1aWxkaW5nIG9yIGluc3RhbGxpbmcgdGhlIHRv
b2xzIgorCUBleGl0IDEKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xz
L2Jsa3RhcC9kcml2ZXJzL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2Jsa3RhcC9kcml2ZXJzL01ha2Vm
aWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29scy9ibGt0YXAvZHJp
dmVycy9NYWtlZmlsZQlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTEzLDcgKzEz
LDcgQEAgQ0ZMQUdTICAgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpCiBDRkxBR1MgICArPSAtSSAk
KE1FTVNIUl9ESVIpCiBDRkxBR1MgICArPSAtRF9HTlVfU09VUkNFCiAKLWlmZXEgKCQoc2hlbGwg
LiAuL2NoZWNrX2djcnlwdCAkKENDKSkseWVzKQoraWZlcSAoJENPTkZJR19HQ1JZUFQseSkKIENG
TEFHUyArPSAtRFVTRV9HQ1JZUFQKIENSWVBUX0xJQiA6PSAtbGdjcnlwdAogZWxzZQpkaWZmIC1y
IDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvYmxrdGFwL2RyaXZlcnMvY2hlY2tf
Z2NyeXB0Ci0tLSBhL3Rvb2xzL2Jsa3RhcC9kcml2ZXJzL2NoZWNrX2djcnlwdAlNb24gSmFuIDA5
IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKQEAgLTEsMTQgKzAsMCBAQAotIyEvYmluL3NoCi0KLWNhdCA+IC5nY3J5cHQuYyA8
PCBFT0YKLSNpbmNsdWRlIDxnY3J5cHQuaD4KLWludCBtYWluKHZvaWQpIHsgcmV0dXJuIDA7IH0K
LUVPRgotCi1pZiAkMSAtbyAuZ2NyeXB0IC5nY3J5cHQuYyAtbGdjcnlwdCAyPi9kZXYvbnVsbCA7
IHRoZW4KLSAgZWNobyAieWVzIgotZWxzZQotICBlY2hvICJubyIKLWZpCi0KLXJtIC1mIC5nY3J5
cHQqCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9NYWtl
ZmlsZQotLS0gYS90b29scy9jaGVjay9NYWtlZmlsZQlNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIg
KzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MjYgKzAsMCBAQAotWEVOX1JPT1QgPSAkKENVUkRJUikvLi4vLi4KLWluY2x1ZGUgJChYRU5fUk9P
VCkvdG9vbHMvUnVsZXMubWsKLQotIyBFeHBvcnQgdGhlIG5lY2Vzc2FyeSBlbnZpcm9ubWVudCB2
YXJpYWJsZXMgZm9yIHRoZSB0ZXN0cwotZXhwb3J0IFBZVEhPTgotZXhwb3J0IExJQlhFTkFQSV9C
SU5ESU5HUwotZXhwb3J0IENIRUNLX0lOQ0xVREVTCi1leHBvcnQgQ0hFQ0tfTElCCi1leHBvcnQg
Q09ORklHX1NZU1RFTV9MSUJBSU8KLQotLlBIT05ZOiBhbGwgaW5zdGFsbAotYWxsIGluc3RhbGw6
IGNoZWNrLWJ1aWxkCi0KLSMgQ2hlY2sgdGhpcyBtYWNoaW5lIGlzIE9LIGZvciBidWlsZGluZyBv
bi4KLS5QSE9OWTogY2hlY2stYnVpbGQKLWNoZWNrLWJ1aWxkOgotCS4vY2hrIGJ1aWxkCi0KLSMg
Q2hlY2sgdGhpcyBtYWNoaW5lIGlzIE9LIGZvciBpbnN0YWxsaW5nIG9uLgotLlBIT05ZOiBjaGVj
ay1pbnN0YWxsCi1jaGVjay1pbnN0YWxsOgotCS4vY2hrIGluc3RhbGwKLQotLlBIT05ZOiBjbGVh
bgotY2xlYW46Ci0JLi9jaGsgY2xlYW4KZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0
MTllIHRvb2xzL2NoZWNrL1JFQURNRQotLS0gYS90b29scy9jaGVjay9SRUFETUUJTW9uIEphbiAw
OSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDIwICswLDAgQEAKLUNoZWNrcyBmb3IgdGhlIHN1aXRhYmlsaXR5IG9m
IGEgbWFjaGluZSBmb3IgWGVuIGJ1aWxkIG9yIGluc3RhbGwuCi1UbyBjaGVjayBmb3IgYnVpbGQg
c3VpdGFiaWxpdHkgdXNlCi0KLSAgICAgICAgLi9jaGsgYnVpbGQKLQotVG8gY2hlY2sgZm9yIGlu
c3RhbGwgc3VpdGFiaWxpdHkgdXNlCi0KLSAgICAgICAgLi9jaGsgaW5zdGFsbAotCi1UaGUgY2hr
IHNjcmlwdCB3aWxsIHJ1biBjaGVja3MgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHByaW50Ci10aGUg
b25lcyB0aGF0IGZhaWxlZC4gSXQgcHJpbnRzIG5vdGhpbmcgaWYgY2hlY2tzIHN1Y2NlZWQuCi1U
aGUgY2hrIHNjcmlwdCBleGl0cyB3aXRoIDAgb24gc3VjY2VzcyBhbmQgMSBvbiBmYWlsdXJlLgot
Ci1UaGUgY2hrIHNjcmlwdCBydW5zIGV4ZWN1dGFibGUgZmlsZXMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2hvc2UKLW5hbWVzIGJlZ2luIHdpdGggJ2NoZWNrXycuIEZpbGVzIGNvbnRhaW5pbmcgQ0hFQ0st
QlVJTEQKLWFyZSBydW4gZm9yIHRoZSBidWlsZCBjaGVjaywgYW5kIGZpbGVzIGNvbnRhaW5pbmcg
Q0hFQ0stSU5TVEFMTAotYXJlIHJ1biBmb3IgdGhlIGluc3RhbGwgY2hlY2suCi0KLURldGFpbGVk
IG91dHB1dCBmcm9tIHRoZSBjaGVjayBzY3JpcHRzIGlzIGluIC5jaGtidWlsZCBmb3IgYnVpbGQK
LWFuZCAuY2hraW5zdGFsbCBmb3IgaW5zdGFsbC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9jaGVja19i
cmN0bAotLS0gYS90b29scy9jaGVjay9jaGVja19icmN0bAlNb24gSmFuIDA5IDE2OjAxOjQ0IDIw
MTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg
LTEsMTMgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNo
Ci0KLWNhc2UgJE9TIGluCi1PcGVuQlNEfE5ldEJTRHxGcmVlQlNEKQotCWhhc19vcl9mYWlsIGJy
Y29uZmlnIDs7Ci1MaW51eCkKLQloYXNfb3JfZmFpbCBicmN0bCA7OwotKikKLQlmYWlsICJ1bmtu
b3duIE9TIiA7OwotZXNhYwpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9v
bHMvY2hlY2svY2hlY2tfY3J5cHRvX2xpYgotLS0gYS90b29scy9jaGVjay9jaGVja19jcnlwdG9f
bGliCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hF
Q0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAkT1MgaW4KLUZy
ZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwIDs7Ci1lc2FjCi0KLWhhc19saWIgbGliY3J5
cHRvLnNvIHx8IGZhaWwgIm1pc3NpbmcgbGliY3J5cHRvLnNvIgpkaWZmIC1yIDViMjY3NmFjMTMy
MSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfY3VybAotLS0gYS90b29scy9jaGVj
ay9jaGVja19jdXJsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMyArMCwwIEBACi0jIS9iaW4v
c2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotaWYgWyAi
JExJQlhFTkFQSV9CSU5ESU5HUyIgIT0gInkiIF07IHRoZW4KLQllY2hvIC1uICJ1bnVzZWQsICIK
LQlleGl0IDAKLWZpCi0KLWhhc19vcl9mYWlsIGN1cmwtY29uZmlnCi1jdXJsX2xpYnM9YGN1cmwt
Y29uZmlnIC0tbGlic2AgfHwgZmFpbCAiY3VybC1jb25maWcgLS1saWJzIGZhaWxlZCIKLXRlc3Rf
bGluayAkY3VybF9saWJzIHx8IGZhaWwgImRlcGVuZGVuY3kgbGlicmFyaWVzIGZvciBjdXJsIGFy
ZSBtaXNzaW5nIgpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hl
Y2svY2hlY2tfaXByb3V0ZQotLS0gYS90b29scy9jaGVjay9jaGVja19pcHJvdXRlCU1vbiBKYW4g
MDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwxNSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAot
Ci0uIC4vZnVuY3Muc2gKLQotUEFUSD0vc2JpbjokUEFUSAotCi1jYXNlICRPUyBpbgotT3BlbkJT
RHxOZXRCU0R8RnJlZUJTRCkKLQloYXNfb3JfZmFpbCBpZmNvbmZpZyA7OwotTGludXgpCi0JaGFz
X29yX2ZhaWwgaXAgOzsKLSopCi0JZmFpbCAidW5rbm93biBPUyIgOzsKLWVzYWMKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19kZXZl
bAotLS0gYS90b29scy9jaGVjay9jaGVja19saWJhaW9fZGV2ZWwJTW9uIEphbiAwOSAxNjowMTo0
NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CkBAIC0xLDExICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Mu
c2gKLQotaWYgWyBYJHtDT05GSUdfU1lTVEVNX0xJQkFJT30gIT0gWCJ5IiBdIDsgdGhlbgotICAg
IGV4aXQgMAotZmkKLWlmICEgaGFzX2hlYWRlciBsaWJhaW8uaCA7IHRoZW4KLSAgICBmYWlsICJj
YW4ndCBmaW5kIGxpYmFpbyBoZWFkZXJzLCBpbnN0YWxsIGxpYmFpbyBkZXZlbCBwYWNrYWdlIG9y
IHNldCBDT05GSUdfU1lTVEVNX0xJQkFJTz1uIgotZmkKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIg
NmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19saWIKLS0tIGEvdG9vbHMvY2hl
Y2svY2hlY2tfbGliYWlvX2xpYglNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOSArMCwwIEBACi0j
IS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQot
aWYgWyBYJHtDT05GSUdfU1lTVEVNX0xJQkFJT30gIT0gWCJ5IiBdIDsgdGhlbgotICAgIGV4aXQg
MAotZmkKLWhhc19saWIgbGliYWlvLnNvIHx8IGZhaWwgImNhbid0IGZpbmQgbGliYWlvIgpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfb3BlbnNz
bF9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja19vcGVuc3NsX2RldmVsCU1vbiBKYW4gMDkg
MTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4v
ZnVuY3Muc2gKLQotaGFzX2hlYWRlciBvcGVuc3NsL21kNS5oIHx8IGZhaWwgIm1pc3Npbmcgb3Bl
bnNzbCBoZWFkZXJzIgpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMv
Y2hlY2svY2hlY2tfcHl0aG9uCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbglNb24gSmFu
IDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKQEAgLTEsMTMgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENI
RUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIHRlc3QgLXogJHtQWVRIT059OyB0aGVu
Ci0gIFBZVEhPTj1weXRob24KLWZpCi0KLSR7UFlUSE9OfSAtYyAnCi1pbXBvcnQgc3lzCi1zeXMu
ZXhpdChzeXMudmVyc2lvbl9pbmZvWzBdIDwgMiBvciBzeXMudmVyc2lvbl9pbmZvWzFdIDwgMykK
LScgfHwgZmFpbCAibmVlZCBweXRob24gdmVyc2lvbiA+PSAyLjMiCmRpZmYgLXIgNWIyNjc2YWMx
MzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9jaGVja19weXRob25fZGV2ZWwKLS0tIGEv
dG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX2RldmVsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiAr
MDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwx
NyArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWlm
IHRlc3QgLXogJHtQWVRIT059OyB0aGVuCi0gIFBZVEhPTj1weXRob24KLWZpCi1oYXNfb3JfZmFp
bCAke1BZVEhPTn0KLQotJHtQWVRIT059IC1jICcKLWltcG9ydCBvcy5wYXRoLCBzeXMKLWZvciBw
IGluIHN5cy5wYXRoOgotCWlmIG9zLnBhdGguZXhpc3RzKHAgKyAiL2NvbmZpZy9NYWtlZmlsZSIp
OgotCQlzeXMuZXhpdCgwKQotc3lzLmV4aXQoMSkKLScgfHwgZmFpbCAiY2FuJ3QgZmluZCBweXRo
b24gZGV2ZWwgZmlsZXMiCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29s
cy9jaGVjay9jaGVja19weXRob25feG1sCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl94
bWwJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEyICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVD
Sy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgot
ICBQWVRIT049cHl0aG9uCi1maQotaGFzX29yX2ZhaWwgJHtQWVRIT059Ci0KLSR7UFlUSE9OfSAt
YyAnaW1wb3J0IHhtbC5kb20ubWluaWRvbScgMj4vZGV2L251bGwgfHwgXAotZmFpbCAiY2FuJ3Qg
aW1wb3J0IHhtbC5kb20ubWluaWRvbSIKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0
MTllIHRvb2xzL2NoZWNrL2NoZWNrX3VkZXYKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfdWRldglN
b24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMjIgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlO
U1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWNhc2UgJE9TIGluCi1PcGVuQlNEfE5ldEJTRHxGcmVl
QlNEKQotCWhhc19vcl9mYWlsIHZuY29uZmlnCi0JOzsKLUxpbnV4KQotCWhhcyAvc2Jpbi91ZGV2
YWRtICYmIFwKLQkJdWRldnZlcj1gL3NiaW4vdWRldmFkbSBpbmZvIC1WIHwgYXdrICd7cHJpbnQg
JE5GfSdgCi0JWyAteiAiJHVkZXZ2ZXIiIF0gJiYgaGFzX29yX2ZhaWwgdWRldmluZm8gJiYgXAot
CQl1ZGV2dmVyPWB1ZGV2aW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAotCVsgIiR1ZGV2dmVy
IiAtZ2UgNTkgXSAyPi9kZXYvbnVsbCB8fCBcCi0JCWhhcyBob3RwbHVnIHx8IFwKLQkJZmFpbCAi
dWRldiBpcyB0b28gb2xkLCB1cGdyYWRlIHRvIHZlcnNpb24gNTkgb3IgbGF0ZXIiCi0JOzsKLSop
Ci0JZmFpbCAidW5rbm93biBPUyIKLQk7OwotZXNhYwpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2
ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfdXVpZF9kZXZlbAotLS0gYS90b29scy9jaGVj
ay9jaGVja191dWlkX2RldmVsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw3ICswLDAgQEAKLSMh
L2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX2hlYWRlciB1dWlk
LmggfHwgXAotaGFzX2hlYWRlciB1dWlkL3V1aWQuaCB8fCBmYWlsICJtaXNzaW5nIHV1aWQgaGVh
ZGVycyAocGFja2FnZSB1dWlkLWRldikiCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdj
NDE5ZSB0b29scy9jaGVjay9jaGVja194MTFfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tf
eDExX2RldmVsCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw5ICswLDAgQEAKLSMhL2Jpbi9zaAot
IyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX2hlYWRlciBYMTEva2V5c3ltZGVm
LmggfHwgXAotaGFzX2hlYWRlciAvdXNyL1gxMVI2L2luY2x1ZGUvWDExL2tleXN5bWRlZi5oIHx8
IFwKLWhhc19oZWFkZXIgL3Vzci9YMTFSNy9pbmNsdWRlL1gxMS9rZXlzeW1kZWYuaCB8fCBcCi13
YXJuaW5nICJjYW4ndCBmaW5kIFgxMSBoZWFkZXJzIgpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2
ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tfeGdldHRleHQKLS0tIGEvdG9vbHMvY2hlY2sv
Y2hlY2tfeGdldHRleHQJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEvYmlu
L3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfb3JfZmFpbCB4Z2V0dGV4
dApkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svY2hlY2tf
eG1sMgotLS0gYS90b29scy9jaGVjay9jaGVja194bWwyCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAx
MiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSwxNCArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0u
IC4vZnVuY3Muc2gKLQotaWYgWyAhICIkTElCWEVOQVBJX0JJTkRJTkdTIiA9ICJ5IiBdCi10aGVu
Ci0gICAgZWNobyAtbiAidW51c2VkLCAiCi0gICAgZXhpdCAwCi1maQotCi1oYXNfb3JfZmFpbCB4
bWwyLWNvbmZpZwoteG1sMl9saWJzPWB4bWwyLWNvbmZpZyAtLWxpYnNgIHx8IGZhaWwgInhtbDIt
Y29uZmlnIC0tbGlicyBmYWlsZWQiCi10ZXN0X2xpbmsgJHhtbDJfbGlicyB8fCBmYWlsICJkZXBl
bmRlbmN5IGxpYnJhcmllcyBmb3IgeG1sMiBhcmUgbWlzc2luZyIKZGlmZiAtciA1YjI2NzZhYzEz
MjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX3lhamxfZGV2ZWwKLS0tIGEvdG9v
bHMvY2hlY2svY2hlY2tfeWFqbF9kZXZlbAlNb24gSmFuIDA5IDE2OjAxOjQ0IDIwMTIgKzAxMDAK
KysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOCArMCww
IEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFk
ZXIgeWFqbC95YWpsX3BhcnNlLmggfHwgZmFpbCAiY2FuJ3QgZmluZCB5YWpsL3lhamxfcGFyc2Uu
aCIKLWhhc19oZWFkZXIgeWFqbC95YWpsX2dlbi5oIHx8IGZhaWwgImNhbid0IGZpbmQgeWFqbC95
YWpsX2dlbi5oIgotaGFzX2xpYiBsaWJ5YWpsLnNvIHx8IGZhaWwgImNhbid0IGZpbmQgbGlieWFq
bC5zbyIKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2No
ZWNrX3lhamxfbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3lhamxfbGliCU1vbiBKYW4gMDkg
MTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1J
TlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfbGliIGxpYnlhamwuc28uMSB8fCBmYWlsICJj
YW4ndCBmaW5kIGxpYnlhamwuc28uMSB2ZXJzaW9uIDEiCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1y
IDZmZGUwMTdjNDE5ZSB0b29scy9jaGVjay9jaGVja196bGliX2RldmVsCi0tLSBhL3Rvb2xzL2No
ZWNrL2NoZWNrX3psaWJfZGV2ZWwJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAot
IyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHps
aWIuaCB8fCBmYWlsICJjYW4ndCBmaW5kIHpsaWIgaGVhZGVycyIKZGlmZiAtciA1YjI2NzZhYzEz
MjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoZWNrX3psaWJfbGliCi0tLSBhL3Rvb2xz
L2NoZWNrL2NoZWNrX3psaWJfbGliCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBA
Ci0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gK
LQotY2FzZSAkT1MgaW4KLUZyZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwCi0JOzsKLWVz
YWMKLQotaGFzX2xpYiBsaWJ6LnNvIHx8IGZhaWwgImNhbid0IGZpbmQgemxpYiIKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NoZWNrL2NoawotLS0gYS90b29scy9j
aGVjay9jaGsJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYzICswLDAgQEAKLSMhL2Jpbi9zaAot
Ci1mdW5jX3VzYWdlICgpCi17Ci0gICAgZWNobyAiVXNhZ2U6IgotICAgIGVjaG8gIgkkMCBbYnVp
bGR8aW5zdGFsbHxjbGVhbl0iCi0gICAgZWNobwotICAgIGVjaG8gIkNoZWNrIHN1aXRhYmlsaXR5
IGZvciBYZW4gYnVpbGQgb3IgaW5zdGFsbC4iCi0gICAgZWNobyAiRXhpdCB3aXRoIDAgaWYgT0ss
IDEgaWYgbm90LiIKLSAgICBlY2hvCi0gICAgZWNobyAiQ2FsbGluZyB3aXRoICdjbGVhbicgcmVt
b3ZlcyBnZW5lcmF0ZWQgZmlsZXMuIgotICAgIGV4aXQgMQotfQotCi1QQVRIPSRQQVRIOi9zYmlu
Oi91c3Ivc2JpbgotT1M9YHVuYW1lIC1zYAotZXhwb3J0IFBBVEggT1MKLQotaWYgWyAiJE9TIiA9
ICJTdW5PUyIgXTsgdGhlbgotCWV4aXQgMAotZmkKLQotY2FzZSAkMSBpbgotICAgIGJ1aWxkKQot
ICAgICAgICBjaGVjaz0iQ0hFQ0stQlVJTEQiCi0gICAgICAgIDs7Ci0gICAgaW5zdGFsbCkKLSAg
ICAgICAgY2hlY2s9IkNIRUNLLUlOU1RBTEwiCi0gICAgICAgIDs7Ci0gICAgY2xlYW4pCi0gICAg
ICAgIGV4aXQgMAotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGZ1bmNfdXNhZ2UKLSAgICAg
ICAgOzsKLWVzYWMKLQotZmFpbGVkPTAKLQotZWNobyAiWGVuICR7Y2hlY2t9ICIgYGRhdGVgCi1m
b3IgZiBpbiBjaGVja18qIDsgZG8KLSAgICBjYXNlICRmIGluCi0gICAgICAgICp+KQotICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICA7
OwotICAgIGVzYWMKLSAgICBpZiAhIFsgLXggJGYgXSA7IHRoZW4KLSAgICAgICAgY29udGludWUK
LSAgICBmaQotICAgIGlmICEgZ3JlcCAtRnEgIiRjaGVjayIgJGYgOyB0aGVuCi0gICAgICAgIGNv
bnRpbnVlCi0gICAgZmkKLSAgICBlY2hvIC1uICJDaGVja2luZyAkZjogIgotICAgIGlmIC4vJGYg
Mj4mMSA7IHRoZW4KLSAgICAgICAgZWNobyBPSwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkPTEK
LSAgICBmaQotZG9uZQotCi1leGl0ICR7ZmFpbGVkfQpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2
ZmRlMDE3YzQxOWUgdG9vbHMvY2hlY2svZnVuY3Muc2gKLS0tIGEvdG9vbHMvY2hlY2svZnVuY3Mu
c2gJTW9uIEphbiAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEwNiArMCwwIEBACi0jIGhhcyBpcyB0aGUgc2Ft
ZSBhcyB3aGljaCwgZXhjZXB0IGl0IGhhbmRsZXMgY3Jvc3MgZW52aXJvbm1lbnRzCi1oYXMoKSB7
Ci0JaWYgWyAteiAiJENST1NTX0NPTVBJTEUiIF07IHRoZW4KLQkJY29tbWFuZCB3aGljaCAiJEAi
Ci0JCXJldHVybiAkPwotCWZpCi0KLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBz
dWJzaGVsbCB0byBwcmV2ZW50IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBJRlMKLQkoCi0JSUZTPToK
LQlmb3IgcCBpbiAkUEFUSDsgZG8KLQkJaWYgWyAteCAiJENST1NTX1NZU19ST09ULyRwLyQxIiBd
OyB0aGVuCi0JCQllY2hvICIkQ1JPU1NfU1lTX1JPT1QvJHAvJDEiCi0JCQlyZXR1cm4gMAotCQlm
aQotCWRvbmUKLQlyZXR1cm4gMQotCSkKLX0KLQotaGFzX29yX2ZhaWwoKSB7Ci0JaGFzICIkMSIg
Pi9kZXYvbnVsbCB8fCBmYWlsICJjYW4ndCBmaW5kICQxIgotfQotCi1oYXNfaGVhZGVyKCkgewot
CWNoZWNrX3N5c19yb290IHx8IHJldHVybiAxCi0KLQljYXNlICQxIGluCi0JCS8qKSA7OwotCQkq
KQotCQlpZiBbIC1yICIkQ1JPU1NfU1lTX1JPT1QvdXNyL2luY2x1ZGUvJDEiIF07IHRoZW4KLQkJ
CXJldHVybiAwCi0JCWZpCi0JCWZvciBwYXRoIGluICR7Q0hFQ0tfSU5DTFVERVN9OyBkbwotCQkJ
aWYgWyAtciAiJENST1NTX1NZU19ST09UJHtwYXRofS8kMSIgXTsgdGhlbgotCQkJCXJldHVybiAw
Ci0JCQlmaQotCQlkb25lCi0JCTs7Ci0JZXNhYwotCi0JcmV0dXJuIDEKLX0KLQotaGFzX2xpYigp
IHsKLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50
IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBlbnZpcm9ubWVudAotCSgKLQlQQVRIPS9zYmluOiRQQVRI
ICAgICAgICAjIGZvciBsZGNvbmZpZwotCUxJQlJBUklFUz0iJENIRUNLX0xJQiAvdXNyL2xpYiIK
LQotCSMgVGhpcyByZWxhdGl2ZWx5IGNvbW1vbiBpbiBhIHN5cy1yb290OyBsaWJzIGFyZSBpbnN0
YWxsZWQgYnV0Ci0JIyBsZGNvbmZpZyBoYXNuJ3QgcnVuIHRoZXJlLCBzbyBsZGNvbmZpZyAtcCB3
b24ndCB3b3JrLgotCWlmIFsgIiRPUyIgPSBMaW51eCAtYSAhIC1mICIkQ1JPU1NfU1lTX1JPT1Qv
ZXRjL2xkLnNvLmNhY2hlIiBdOyB0aGVuCi0JICAgIGVjaG8gIlBsZWFzZSBydW4gbGRjb25maWcg
LXIgXCIkQ1JPU1NfU1lTX1JPT1RcIiB0byBnZW5lcmF0ZSBsZC5zby5jYWNoZSIKLQkgICAgIyBm
YWxsIHRocm91Z2g7IGxkY29uZmlnIHRlc3QgYmVsb3cgc2hvdWxkIGZhaWwKLQlmaQotCWlmIFsg
IiR7T1N9IiA9ICJMaW51eCIgXTsgdGhlbgotCQlsZGNvbmZpZyAtcCAke0NST1NTX1NZU19ST09U
Ky1yICIkQ1JPU1NfU1lTX1JPT1QifSB8IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkK
LQlpZiBbICIke09TfSIgPSAiTmV0QlNEIiBdOyB0aGVuCi0JCWxzIC0xICR7TElCUkFSSUVTfSB8
IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlyZXR1cm4gMQotCSkKLX0KLQotdGVz
dF9saW5rKCkgewotCSMgc3Vic2hlbGwgdG8gdHJhcCByZW1vdmFsIG9mIHRtcGZpbGUKLQkoCi0J
dW5zZXQgdG1wZmlsZQotCXRyYXAgJ3JtIC1mICIkdG1wZmlsZSI7IGV4aXQnIDAgMSAyIDE1Ci0J
dG1wZmlsZT1gbWt0ZW1wYCB8fCByZXR1cm4gMQotCWxkICIkQCIgLW8gIiR0bXBmaWxlIiA+L2Rl
di9udWxsIDI+JjEKLQlyZXR1cm4gJD8KLQkpCi19Ci0KLSMgdGhpcyBmdW5jdGlvbiBpcyB1c2Vk
IGNvbW1vbmx5IGFib3ZlCi1jaGVja19zeXNfcm9vdCgpIHsKLQlbIC16ICIkQ1JPU1NfQ09NUElM
RSIgXSAmJiByZXR1cm4gMAotCWlmIFsgLXogIiRDUk9TU19TWVNfUk9PVCIgXTsgdGhlbgotCQll
Y2hvICJwbGVhc2Ugc2V0IENST1NTX1NZU19ST09UIGluIHRoZSBlbnZpcm9ubWVudCIKLQkJcmV0
dXJuIDEKLQlmaQotCWlmIFsgISAtZCAiJENST1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8g
Im5vIHN5cy1yb290IGZvdW5kIGF0ICRDUk9TU19TWVNfUk9PVCIKLQkJcmV0dXJuIDEKLQlmaQot
fQotCi13YXJuaW5nKCkgewotCWVjaG8KLQllY2hvICIgKioqIGBiYXNlbmFtZSAiJDAiYCBGQUlM
RUQkeyorOiAkKn0iCi19Ci0KLWZhaWwoKSB7Ci0JZWNobwotCWVjaG8gIiAqKiogYGJhc2VuYW1l
ICIkMCJgIEZBSUxFRCR7Kis6ICQqfSIKLQlleGl0IDEKLX0KZGlmZiAtciA1YjI2NzZhYzEzMjEg
LXIgNmZkZTAxN2M0MTllIHRvb2xzL2NvbmZpZy5ndWVzcwotLS0gL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9jb25maWcuZ3Vlc3MJVHVlIEphbiAx
MCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTUwMiBAQAorIyEgL2Jpbi9zaAorIyBB
dHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgorIyAgIENvcHlyaWdodCAo
QykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAy
MDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3RpbWVzdGFtcD0n
MjAwOS0xMi0zMCcKKworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQorIyAwMjExMC0xMzAxLCBVU0EuCisjCisjIEFz
IGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBp
ZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBj
b250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwg
eW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0
aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworCisjIE9yaWdpbmFs
bHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4gIFBsZWFzZSBzZW5kIHBhdGNoZXMgKGNvbnRleHQK
KyMgZGlmZiBmb3JtYXQpIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBhbmQgaW5jbHVkZSBh
IENoYW5nZUxvZworIyBlbnRyeS4KKyMKKyMgVGhpcyBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3Mg
YSBjYW5vbmljYWwgc3lzdGVtIG5hbWUgc2ltaWxhciB0bworIyBjb25maWcuc3ViLiAgSWYgaXQg
c3VjY2VlZHMsIGl0IHByaW50cyB0aGUgc3lzdGVtIG5hbWUgb24gc3Rkb3V0LCBhbmQKKyMgZXhp
dHMgd2l0aCAwLiAgT3RoZXJ3aXNlLCBpdCBleGl0cyB3aXRoIDEuCisjCisjIFlvdSBjYW4gZ2V0
IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNh
dmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmln
Lmd1ZXNzO2hiPUhFQUQKKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3Vz
YWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5h
bWUgb2YgdGhlIHN5c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6Cisg
IC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10
aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0Cisg
IC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1Jl
cG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3Zl
cnNpb249IlwKK0dOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3Jp
dHRlbiBieSBQZXIgQm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5
NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZQorU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBj
b3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCito
ZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJz
ZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisg
ICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1w
IiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24i
IDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdl
IjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAg
IHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBi
cmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhl
bHAiID4mMgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVz
YWMKK2RvbmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkg
YXJndW1lbnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1
CisKKyMgQ0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUg
dGhhdCB0aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24g
aXMgZGlzY291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNy
ZWF0ZWQgYW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBk
ZWFsIHdpdGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZP
Ul9CVUlMRCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9T
VF9DQycgaWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1w
IGRpcmVjdG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0
X2NjX2Zvcl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+
L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAw
IDsKK3RyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rl
di9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1g
KHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAg
JiYgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIk
UkFORE9NIiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2Rp
ciAkdG1wKSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtk
aXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3Rv
cnkiID4mMiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBk
aXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15
IDsKK3RtcGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2Fz
ZSAkQ0NfRk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4g
JGR1bW15LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAt
byAkZHVtbXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9S
X0JVSUxEPSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZP
Ul9CVUlMRCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsK
KwlmaQorCTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JV
SUxEPSRIT1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlz
IG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJT
RCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRl
c3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRI
Oi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkg
Mj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVu
YW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNU
RU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5B
TUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtu
b3duCisKKyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBh
cmUgbm90IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RF
TX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6
KikKKwkjIE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1h
dGNoIG9uZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwcGxlczogKi0qLW5ldGJzZGVsZiosICotKi1u
ZXRic2Rhb3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRh
cmdldHMgdGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3Vs
ZCBzZWxlY3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBi
b3RoIGZvcndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20g
Zm9yIHNlbGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBO
ZXRCU0QgZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0
aW9uIG9mIHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3Rs
PSJzeXNjdGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmlu
LyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYv
bnVsbCB8fCBlY2hvIHVua25vd24pYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4K
KwkgICAgYXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OworCSAgICBhcm0qKSBtYWNoaW5l
PWFybS11bmtub3duIDs7CisJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CisJICAg
IHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKwkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUt
dW5rbm93biA7OworCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3du
IDs7CisJZXNhYworCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3Jt
YXQsIGlmIGl0IGhhcyBzd2l0Y2hlZAorCSMgdG8gRUxGIHJlY2VudGx5LCBvciB3aWxsIGluIHRo
ZSBmdXR1cmUuCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm0qfGkz
ODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAor
CQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJ
fCBncmVwIC1xIF9fRUxGX18KKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2Fu
IGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBS
ZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQor
CQkgICAgb3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJICAgICAgICBvcz1uZXRi
c2QKKwkJOzsKKwllc2FjCisJIyBUaGUgT1MgcmVsZWFzZQorCSMgRGViaWFuIEdOVS9OZXRCU0Qg
bWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCisJIyB0aHVzLCBuZWVkIGEg
ZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZAorCSMga2VybmVsIHZl
cnNpb24gaW5mb3JtYXRpb24sIHNvIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEKKwkjIHN1aXRh
YmxlIHRhZywgaW4gdGhlIHN0eWxlIG9mIGxpbnV4LWdudS4KKwljYXNlICIke1VOQU1FX1ZFUlNJ
T059IiBpbgorCSAgICBEZWJpYW4qKQorCQlyZWxlYXNlPSctZ251JworCQk7OworCSAgICAqKQor
CQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stX10uKi9cLi8nYAor
CQk7OworCWVzYWMKKwkjIFNpbmNlIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFU
SU5HX1NZU1RFTToKKwkjIGNvbnRhaW5zIHJlZHVuZGFudCBpbmZvcm1hdGlvbiwgdGhlIHNob3J0
ZXIgZm9ybToKKwkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVz
ZWQuCisJZWNobyAiJHttYWNoaW5lfS0ke29zfSR7cmVsZWFzZX0iCisJZXhpdCA7OworICAgICo6
T3BlbkJTRDoqOiopCisJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL09wZW5CU0Qu
Ly8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tb3BlbmJzZCR7VU5BTUVf
UkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpla2tvQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFD
SElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNv
bGlkQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5B
TUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dl
cnBjLXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk1pckJT
RDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxF
QVNFfQorCWV4aXQgOzsKKyAgICBhbHBoYTpPU0YxOio6KikKKwljYXNlICRVTkFNRV9SRUxFQVNF
IGluCisJKjQuMCkKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7
cHJpbnQgJDN9J2AKKwkJOzsKKwkqNS4qKQorCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9z
YmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJOzsKKwllc2FjCisJIyBBY2NvcmRp
bmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKwkj
IE9TRi8xIGFuZCBUcnU2NCBzeXN0ZW1zIHByb2R1Y2VkIHNpbmNlIDE5OTUuICBJIGhvcGUgdGhh
dAorCSMgY292ZXJzIG1vc3Qgc3lzdGVtcyBydW5uaW5nIHRvZGF5LiAgVGhpcyBjb2RlIHBpcGVz
IHRoZSBDUFUKKwkjIHR5cGVzIHRocm91Z2ggaGVhZCAtbiAxLCBzbyB3ZSBvbmx5IGRldGVjdCB0
aGUgdHlwZSBvZiBDUFUgMC4KKwlBTFBIQV9DUFVfVFlQRT1gL3Vzci9zYmluL3BzcmluZm8gLXYg
fCBzZWQgLW4gLWUgJ3MvXiAgVGhlIGFscGhhIFwoLipcKSBwcm9jZXNzb3IuKiQvXDEvcCcgfCBo
ZWFkIC1uIDFgCisJY2FzZSAiJEFMUEhBX0NQVV9UWVBFIiBpbgorCSAgICAiRVY0ICgyMTA2NCki
KQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkVWNC41ICgyMTA2NCkiKQorCQlV
TkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVO
QU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY1ICgyMTE2NCkiKQorCQlVTkFNRV9NQUNI
SU5FPSJhbHBoYWV2NSIgOzsKKwkgICAgIkVWNS42ICgyMTE2NEEpIikKKwkJVU5BTUVfTUFDSElO
RT0iYWxwaGFldjU2IiA7OworCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElO
RT0iYWxwaGFwY2E1NiIgOzsKKwkgICAgIkVWNS43ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJ
TkU9ImFscGhhcGNhNTciIDs7CisJICAgICJFVjYgKDIxMjY0KSIpCisJCVVOQU1FX01BQ0hJTkU9
ImFscGhhZXY2IiA7OworCSAgICAiRVY2LjcgKDIxMjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJh
bHBoYWV2NjciIDs7CisJICAgICJFVjYuOENCICgyMTI2NEMpIikKKwkJVU5BTUVfTUFDSElORT0i
YWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhBTCAoMjEyNjRCKSIpCisJCVVOQU1FX01BQ0hJTkU9
ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44Q1ggKDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5F
PSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOUEgKDIxMjY0L0VWNjlBKSIpCisJCVVOQU1FX01B
Q0hJTkU9ImFscGhhZXY2OSIgOzsKKwkgICAgIkVWNyAoMjEzNjQpIikKKwkJVU5BTUVfTUFDSElO
RT0iYWxwaGFldjciIDs7CisJICAgICJFVjcuOSAoMjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9
ImFscGhhZXY3OSIgOzsKKwllc2FjCisJIyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVy
c2lvbi4KKwkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgdmVyc2lvbi4KKwkjIEEgVG4u
biB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVzdCB2ZXJzaW9uLgorCSMgQSBYbi5uIHZl
cnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgorCSMgMS4yIHVz
ZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVj
aG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCWV4aXQg
OzsKKyAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJ
bnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIFNob3Vs
ZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGlu
c3RlYWQKKwkjIG9mIHRoZSBzcGVjaWZpYyBBbHBoYSBtb2RlbD8KKwllY2hvIGFscGhhLXBjLWlu
dGVyaXgKKwlleGl0IDs7CisgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorCWVjaG8gYWxwaGEt
ZGVjLXdpbm50My41CisJZXhpdCA7OworICAgIEFtaWdhKjpVTklYX1N5c3RlbV9WOjQuMDoqKQor
CWVjaG8gbTY4ay11bmtub3duLXN5c3Y0CisJZXhpdCA7OworICAgICo6W0FhXW1pZ2FbT29dW1Nz
XToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYW1pZ2FvcworCWV4aXQgOzsK
KyAgICAqOltNbV1vcnBoW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtu
b3duLW1vcnBob3MKKwlleGl0IDs7CisgICAgKjpPUy8zOTA6KjoqKQorCWVjaG8gaTM3MC1pYm0t
b3BlbmVkaXRpb24KKwlleGl0IDs7CisgICAgKjp6L1ZNOio6KikKKwllY2hvIHMzOTAtaWJtLXp2
bW9lCisJZXhpdCA7OworICAgICo6T1M0MDA6KjoqKQorICAgICAgICBlY2hvIHBvd2VycGMtaWJt
LW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5b
MDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgIGFybTpyaXNjb3M6KjoqfGFybTpSSVNDT1M6KjoqKQorCWVjaG8gYXJtLXVua25vd24t
cmlzY29zCisJZXhpdCA7OworICAgIFNSMj8wMTpISS1VWC9NUFA6KjoqIHwgU1I4MDAwOkhJLVVY
L01QUDoqOiopCisJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAorCWV4aXQgOzsKKyAgICBQ
eXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNNUF9EQy1PU3gqOio6KikK
KwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQg
TUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgIiA9
IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMKKwllbHNlCisJCWVjaG8g
cHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCA7OworICAgIE5JTEUqOio6KjpkY29zeCkK
KwllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0CisJZXhpdCA7OworICAgIERSUz82MDAwOnVuaXg6
NC4wOjYqKQorCWVjaG8gc3BhcmMtaWNsLW54NgorCWV4aXQgOzsKKyAgICBEUlM/NjAwMDpVTklY
X1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2FzZSBgL3Vzci9iaW4vdW5h
bWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKKwllc2Fj
IDs7CisgICAgczM5MHg6U3VuT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tc29s
YXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7
CisgICAgc3VuNEg6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAk
e1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6
U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLXN1bi1zb2xh
cmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsK
KyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hv
IGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGk4NnBjOlN1
bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQK
KwlTVU5fQVJDSD0iaTM4NiIKKwkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBp
cyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUgdGhhdCB0aGUgU3VuIGNj
IGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCisJIyBUaGlzIHRl
c3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdu
b19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCSAgICBpZiAoZWNobyAnI2lmZGVmIF9fYW1kNjQn
OyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkoQ0NPUFRTPSAkQ0Nf
Rk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElTXzY0QklUX0FSQ0ggPi9k
ZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPSJ4ODZfNjQiCisJICAgIGZpCisJZmkKKwll
Y2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg
J3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjYqOiopCisJIyBBY2NvcmRp
bmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUK
KwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1bk9TNiB3aWxsIGJlIGxp
a2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNvbGFyaXMgdGhhbiBTdW5P
UzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAt
ZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6KjoqKQorCWNhc2UgImAv
dXNyL2Jpbi9hcmNoIC1rYCIgaW4KKwkgICAgU2VyaWVzKnxTNCopCisJCVVOQU1FX1JFTEVBU0U9
YHVuYW1lIC12YAorCQk7OworCWVzYWMKKwkjIEphcGFuZXNlIExhbmd1YWdlIHZlcnNpb25zIGhh
dmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIGA0LjEuMy1KTCcuCisJZWNobyBzcGFyYy1zdW4tc3Vu
b3NgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vJ2AKKwlleGl0IDs7CisgICAg
c3VuMyo6U3VuT1M6KjoqKQorCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJ
ZXhpdCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9l
dGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAorCXRl
c3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxFQVNFPTMKKwljYXNlICJg
L2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVf
UkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1zdW4tc3Vub3Mke1VOQU1F
X1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgOzsKKyAgICBhdXNocDpTdW5PUzoqOiopCisJ
ZWNobyBzcGFyYy1hdXNwZXgtc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICMg
VGhlIHNpdHVhdGlvbiBmb3IgTWlOVCBpcyBhIGxpdHRsZSBjb25mdXNpbmcuICBUaGUgbWFjaGlu
ZSBuYW1lCisgICAgIyBjYW4gYmUgdmlydHVhbGx5IGV2ZXJ5dGhpbmcgKGV2ZXJ5dGhpbmcgd2hp
Y2ggaXMgbm90CisgICAgIyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQg
aGF2ZSBhIHByb2Nlc3NvcgorICAgICMgPiBtNjgwMDApLiAgVGhlIHN5c3RlbSBuYW1lIHJhbmdl
cyBmcm9tICJNaU5UIiBvdmVyICJGcmVlTWlOVCIKKyAgICAjIHRvIHRoZSBsb3dlcmNhc2UgdmVy
c2lvbiAibWludCIgKG9yICJmcmVlbWludCIpLiAgRmluYWxseQorICAgICMgdGhlIHN5c3RlbSBu
YW1lICJUT1MiIGRlbm90ZXMgYSBzeXN0ZW0gd2hpY2ggaXMgYWN0dWFsbHkgbm90CisgICAgIyBN
aU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hv
dWxkCisgICAgIyBiZSBubyBwcm9ibGVtLgorICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRh
cmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02
OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXRhcmkqOipNaU5U
Oio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4
ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBleGl0IDs7CisgICAgKmZhbGNv
bio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCisg
ICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAg
ICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiop
CisgICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBl
eGl0IDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMq
OipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0K
KyAgICAgICAgZXhpdCA7OworICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6
KjoqKQorICAgICAgICBlY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorICAg
ICAgICBleGl0IDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGstYXBwbGUtbWFj
aHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcG93ZXJwYzptYWNodGVuOio6KikK
KwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7Cisg
ICAgUklTQyo6TWFjaDoqOiopCisJZWNobyBtaXBzLWRlYy1tYWNoX2JzZDQuMworCWV4aXQgOzsK
KyAgICBSSVNDKjpVTFRSSVg6KjoqKQorCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxF
QVNFfQorCWV4aXQgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4LWRlYy11bHRy
aXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIDIwMjA6Q0xJWDoqOiogfCAyNDMwOkNM
SVg6KjoqKQorCWVjaG8gY2xpcHBlci1pbnRlcmdyYXBoLWNsaXgke1VOQU1FX1JFTEVBU0V9CisJ
ZXhpdCA7OworICAgIG1pcHM6KjoqOlVNSVBTIHwgbWlwczoqOio6UklTQ29zKQorCWV2YWwgJHNl
dF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworI2lmZGVmIF9f
Y3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIGZvciBwcmludGYoKSBwcm90b3R5cGUg
Ki8KKwlpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworI2Vsc2UKKwlpbnQgbWFp
biAoYXJnYywgYXJndikgaW50IGFyZ2M7IGNoYXIgKmFyZ3ZbXTsgeworI2VuZGlmCisJI2lmIGRl
ZmluZWQgKGhvc3RfbWlwcykgJiYgZGVmaW5lZCAoTUlQU0VCKQorCSNpZiBkZWZpbmVkIChTWVNU
WVBFX1NZU1YpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzeXN2XG4iLCBhcmd2WzFd
KTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1ZSNCkKKwkgIHBy
aW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N2cjRcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkj
ZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0MykgfHwgZGVmaW5lZChTWVNUWVBFX0JT
RCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc2JzZFxuIiwgYXJndlsxXSk7IGV4aXQg
KDApOworCSNlbmRpZgorCSNlbmRpZgorCSAgZXhpdCAoLTEpOworCX0KK0VPRgorCSRDQ19GT1Jf
QlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmCisJICBkdW1teWFyZz1gZWNobyAiJHtVTkFNRV9S
RUxFQVNFfSIgfCBzZWQgLW4gJ3MvXChbMC05XSpcKS4qL1wxL3AnYCAmJgorCSAgU1lTVEVNX05B
TUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisJICAgIHsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhp
dDsgfQorCWVjaG8gbWlwcy1taXBzLXJpc2NvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7Cisg
ICAgTW90b3JvbGE6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1tb3Rvcm9sYS1wb3dl
cm1heAorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hvIHBvd2VycGMt
aGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6KjoqOlBvd2VyTUFYX09T
IHwgU3luZXJneTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1h
eAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOlBvd2VyX1VOSVg6KjoqKQorCWVjaG8gcG93ZXJw
Yy1oYXJyaXMtcG93ZXJ1bml4CisJZXhpdCA7OworICAgIG04OGs6Q1gvVVg6Nyo6KikKKwllY2hv
IG04OGstaGFycmlzLWN4dXg3CisJZXhpdCA7OworICAgIG04OGs6Kjo0KjpSNCopCisJZWNobyBt
ODhrLW1vdG9yb2xhLXN5c3Y0CisJZXhpdCA7OworICAgIG04OGs6KjozKjpSMyopCisJZWNobyBt
ODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIEFWaWlPTjpkZ3V4Oio6KikKKyAgICAg
ICAgIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKyAgICAgICAg
VU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNT
T1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgor
CSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8
IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhl
bgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hv
IG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVj
aG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisgCWV4aXQgOzsKKyAgICBNODgq
OkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorCWVjaG8gbTg4ay1kb2xwaGluLXN5
c3YzCisJZXhpdCA7OworICAgIE04OCo6KjpSMyo6KikKKwkjIERlbHRhIDg4ayBzeXN0ZW0gcnVu
bmluZyBTVlIzCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIFhEODgq
Oio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVj
aG8gbTg4ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDs7CisgICAgVGVrNDNbMC05XVswLTldOlVU
ZWs6KjoqKSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKKwllY2hv
IG02OGstdGVrdHJvbml4LWJzZAorCWV4aXQgOzsKKyAgICAqOklSSVgqOio6KikKKwllY2hvIG1p
cHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCisJZXhp
dCA7OworICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIu
MS4xIGlzIFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgIyB1bmFtZSAtbSBnaXZl
cyBhbiA4IGhleC1jb2RlIENQVSBpZAorCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhh
dDogZWNobyAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICBpKjg2OkFJWDoqOiopCisJ
ZWNobyBpMzg2LWlibS1haXgKKwlleGl0IDs7CisgICAgaWE2NDpBSVg6KjoqKQorCWlmIFsgLXgg
L3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAor
CWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAq
OkFJWDoyOjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVs
bCAyPiYxOyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8
PCBFT0YgPiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigp
CisJCQl7CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93
ZXJwYy1pYm0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJaWYgJENDX0ZP
Ul9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKwkJdGhl
bgorCQkJZWNobyAiJFNZU1RFTV9OQU1FIgorCQllbHNlCisJCQllY2hvIHJzNjAwMC1pYm0tYWl4
My4yLjUKKwkJZmkKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2
L251bGwgMj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVj
aG8gcnM2MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOls0NTZdKQor
CUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxl
IHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVs
ICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJ
Qk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXgg
L3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAor
CWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQor
CWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6
KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDs7CisgICAgaWJtcnQ6NC40QlNEOip8
cm9tcC1pYm06QlNEOiopCisJZWNobyByb21wLWlibS1ic2Q0LjQKKwlleGl0IDs7CisgICAgaWJt
cnQ6KkJTRDoqfHJvbXAtaWJtOkJTRDoqKSAgICAgICAgICAgICMgY292ZXJzIFJUL1BDIEJTRCBh
bmQKKwllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1l
IGFkZGVkIHRvCisJZXhpdCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXBvcnQ6
IHJvbXAtaWJtIEJTRCA0LjMKKyAgICAqOkJPU1g6KjoqKQorCWVjaG8gcnM2MDAwLWJ1bGwtYm9z
eAorCWV4aXQgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5
c3YzCisJZXhpdCA7OworICAgIDkwMDAvWzM0XT8/OjQuM2JzZDoxLio6KikKKwllY2hvIG02OGst
aHAtYnNkCisJZXhpdCA7OworICAgIGhwMzAwOjQuNEJTRDoqOiogfCA5MDAwL1szNF0/Pzo0LjNi
c2Q6Mi4qOiopCisJZWNobyBtNjhrLWhwLWJzZDQuNAorCWV4aXQgOzsKKyAgICA5MDAwL1szNDY3
OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg
J3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAw
MC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkg
ICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlm
IFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vz
ci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAg
ICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4v
ZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBp
bgorICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVf
UEFfUklTQzFfMAorICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIg
OzsgIyBDUFVfUEFfUklTQzFfMQorICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAg
ICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBI
UF9BUkNIPSJocHBhMi4wbiIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FS
Q0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVY
IDEwLjIwCisgICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgICAg
ICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBl
dmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8
IEVPRiA+JGR1bW15LmMKKworICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQorICAg
ICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICAgICNpbmNsdWRlIDx1
bmlzdGQuaD4KKworICAgICAgICAgICAgICBpbnQgbWFpbiAoKQorICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKyAgICAgICAgICAgICAg
ICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKyAgICAgICAgICAgICAg
I2VuZGlmCisgICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZF
UlNJT04pOworCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKKyAgICAgICAgICAgICAg
CXsKKyAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7
IGJyZWFrOworICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGEx
LjEiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgorICAgICAg
ICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisgICAgICAgICAgICAgIAkgICAg
c3dpdGNoIChiaXRzKQorICAgICAgICAgICAgICAJCXsKKyAgICAgICAgICAgICAgCQljYXNlIDY0
OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisgICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0
cyAoImhwcGEyLjBuIik7IGJyZWFrOworICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJo
cHBhMi4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJCX0gYnJlYWs7CisgICAgICAgICAgICAg
ICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisgICAgICAgICAgICAgIAkg
ICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgICNlbmRpZgorICAgICAg
ICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAg
IAl9CisgICAgICAgICAgICAgICAgICBleGl0ICgwKTsKKyAgICAgICAgICAgICAgfQorRU9GCisJ
CSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVs
bCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FS
Q0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0K
Kwl0aGVuCisJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKworCSAgICAjIGhwcGEyLjB3LWhw
LWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZworCSAg
ICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJuZWwgYW5k
IGEgY29tcGlsZXIKKwkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05VIGFuZCBIUCB1
c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKKwkgICAgIworCSAgICAjICQgQ0NfRk9SX0JVSUxE
PWNjIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTIuMHctaHAtaHB1eDExLjIzCisJICAg
ICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4g
aHBwYTY0LWhwLWhwdXgxMS4yMworCisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAk
Q0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCAtcSBfX0xQNjRfXworCSAg
ICB0aGVuCisJCUhQX0FSQ0g9ImhwcGEyLjB3IgorCSAgICBlbHNlCisJCUhQX0FSQ0g9ImhwcGE2
NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KKwll
eGl0IDs7CisgICAgaWE2NDpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxF
QVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJZWNobyBpYTY0LWhwLWhwdXgke0hQVVhf
UkVWfQorCWV4aXQgOzsKKyAgICAzMDUwKjpISS1VWDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9i
dWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2luY2x1ZGUgPHVuaXN0ZC5o
PgorCWludAorCW1haW4gKCkKKwl7CisJICBsb25nIGNwdSA9IHN5c2NvbmYgKF9TQ19DUFVfVkVS
U0lPTik7CisJICAvKiBUaGUgb3JkZXIgbWF0dGVycywgYmVjYXVzZSBDUFVfSVNfSFBfTUM2OEsg
ZXJyb25lb3VzbHkgcmV0dXJucworCSAgICAgdHJ1ZSBmb3IgQ1BVX1BBX1JJU0MxXzAuICBDUFVf
SVNfUEFfUklTQyByZXR1cm5zIGNvcnJlY3QKKwkgICAgIHJlc3VsdHMsIGhvd2V2ZXIuICAqLwor
CSAgaWYgKENQVV9JU19QQV9SSVNDIChjcHUpKQorCSAgICB7CisJICAgICAgc3dpdGNoIChjcHUp
CisJCXsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMC1oaXRhY2hpLWhp
dXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEt
aGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MyXzA6IHB1dHMg
KCJocHBhMi4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBkZWZhdWx0OiBwdXRzICgi
aHBwYS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgZWxzZSBpZiAo
Q1BVX0lTX0hQX01DNjhLIChjcHUpKQorCSAgICBwdXRzICgibTY4ay1oaXRhY2hpLWhpdXh3ZTIi
KTsKKwkgIGVsc2UgcHV0cyAoInVua25vd24taGl0YWNoaS1oaXV4d2UyIik7CisJICBleGl0ICgw
KTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1f
TkFNRT1gJGR1bW15YCAmJgorCQl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hv
IHVua25vd24taGl0YWNoaS1oaXV4d2UyCisJZXhpdCA7OworICAgIDkwMDAvNz8/OjQuM2JzZDoq
OiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtYnNkCisJZXhp
dCA7OworICAgIDkwMDAvOD8/OjQuM2JzZDoqOiopCisJZWNobyBocHBhMS4wLWhwLWJzZAorCWV4
aXQgOzsKKyAgICAqOT8/KjpNUEUvaVg6KjoqIHwgKjMwMDAqOk1QRS9pWDoqOiopCisJZWNobyBo
cHBhMS4wLWhwLW1wZWl4CisJZXhpdCA7OworICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06
T1NGMToqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1vc2YKKwlleGl0IDs7CisgICAgaHA4Pz86T1NG
MToqOiopCisJZWNobyBocHBhMS4wLWhwLW9zZgorCWV4aXQgOzsKKyAgICBpKjg2Ok9TRjE6Kjoq
KQorCWlmIFsgLXggL3Vzci9zYmluL3N5c3ZlcnNpb24gXSA7IHRoZW4KKwkgICAgZWNobyAke1VO
QU1FX01BQ0hJTkV9LXVua25vd24tb3NmMW1rCisJZWxzZQorCSAgICBlY2hvICR7VU5BTUVfTUFD
SElORX0tdW5rbm93bi1vc2YxCisJZmkKKwlleGl0IDs7CisgICAgcGFyaXNjKjpMaXRlcyo6Kjoq
KQorCWVjaG8gaHBwYTEuMS1ocC1saXRlcworCWV4aXQgOzsKKyAgICBDMSo6Q29udmV4T1M6Kjoq
IHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQorCWVjaG8gYzEtY29udmV4LWJzZAorICAgICAgICBl
eGl0IDs7CisgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKKwlp
ZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwll
bHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisgICAgICAgIGV4aXQgOzsKKyAgICBDMzQqOkNv
bnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisJZWNobyBjMzQtY29udmV4LWJz
ZAorICAgICAgICBleGl0IDs7CisgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4
T1M6QzM4KjoqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCA7OworICAgIEM0
KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCisJZWNobyBjNC1jb252ZXgt
YnNkCisgICAgICAgIGV4aXQgOzsKKyAgICBDUkFZKlktTVA6KjoqOiopCisJZWNobyB5bXAtY3Jh
eS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0
IDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5
LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwp
L1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7
OworICAgIENSQVkqVFM6KjoqOiopCisJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVB
U0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUM0U6Kjoq
OiopCisJZWNobyBhbHBoYWV2NS1jcmF5LXVuaWNvc21rJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAt
ZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqU1YxOio6KjoqKQorCWVjaG8g
c3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8n
CisJZXhpdCA7OworICAgICo6VU5JQ09TL21wOio6KikKKwllY2hvIGNyYXludi1jcmF5LXVuaWNv
c21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7Owor
ICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQor
CUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVon
ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisgICAgICAgIEZVSklUU1VfU1lTPWB1bmFt
ZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKyAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8g
JHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKyAgICAgICAgZWNobyAiJHtGVUpJ
VFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKyAgICAgICAg
ZXhpdCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKyAgICAgICAgRlVKSVRTVV9T
WVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorICAgICAgICBGVUpJVFNVX1JF
TD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
JyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAg
ICBlY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhp
dCA7OworICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwg
RW1iZWRkZWQvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9S
RUxFQVNFfQorCWV4aXQgOzsKKyAgICBzcGFyYyo6QlNEL09TOio6KikKKwllY2hvIHNwYXJjLXVu
a25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpCU0QvT1M6KjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhp
dCA7OworICAgICo6RnJlZUJTRDoqOiopCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJICAg
IHBjOTgpCisJCWVjaG8gaTM4Ni11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9
fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJICAgIGFtZDY0KQorCQllY2hvIHg4Nl82NC11bmtu
b3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7
CisJICAgICopCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWZyZWVic2RgZWNobyAk
e1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJZXNhYworCWV4aXQgOzsK
KyAgICBpKjpDWUdXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorCWV4
aXQgOzsKKyAgICAqOk1JTkdXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMy
CisJZXhpdCA7OworICAgIGkqOndpbmRvd3MzMio6KikKKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRl
cyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KKyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3
MzIKKwlleGl0IDs7CisgICAgaSo6UFcqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3
MzIKKwlleGl0IDs7CisgICAgKjpJbnRlcml4KjoqKQorICAgIAljYXNlICR7VU5BTUVfTUFDSElO
RX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0K
KwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJ
ZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJ
ICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJ
CWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2Oldp
bmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElO
RX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2luZG93c19OVDoqKQorCWVjaG8geDg2XzY0
LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93
c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUg
Z2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0y
LjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFz
ZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBj
LWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElO
RX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpDWUdXSU4qOio6KiB8IHg4Nl82NDpDWUdX
SU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpD
WUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAg
cHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hv
ICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICAqOkdO
VToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8gYGVjaG8gJHtVTkFNRV9NQUNISU5FfXxz
ZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi1nbnVgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNl
ZCAtZSAncywvLiokLCwnYAorCWV4aXQgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5
c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0t
dW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdb
QS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydg
LWdudQorCWV4aXQgOzsKKyAgICBpKjg2Ok1pbml4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElO
RX0tcGMtbWluaXgKKwlleGl0IDs7CisgICAgYWxwaGE6TGludXg6KjoqKQorCWNhc2UgYHNlZCAt
biAnL15jcHUgbW9kZWwvcy9eLio6IFwoLipcKS9cMS9wJyA8IC9wcm9jL2NwdWluZm9gIGluCisJ
ICBFVjUpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7OworCSAgRVY1NikgIFVOQU1FX01BQ0hJ
TkU9YWxwaGFldjU2IDs7CisJICBQQ0E1NikgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJ
ICBQQ0E1NykgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBFVjYpICAgVU5BTUVfTUFD
SElORT1hbHBoYWV2NiA7OworCSAgRVY2NykgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CisJ
ICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKyAgICAgICAgZXNhYworCW9iamR1
bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQorCWlmIHRlc3Qg
IiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAk
e1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorCWV4aXQgOzsKKyAgICBh
cm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9F
QUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEg
X19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1s
aW51eC1nbnUKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4
LWdudWVhYmkKKwlmaQorCWV4aXQgOzsKKyAgICBhdnIzMio6TGludXg6KjoqKQorCWVjaG8gJHtV
TkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4
Oio6KikKKwllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3Jpc3YzMjpM
aW51eDoqOiopCisJZWNobyBjcmlzdjMyLWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGZy
djpMaW51eDoqOiopCisgICAgCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJZXhpdCA7Owor
ICAgIGkqODY6TGludXg6KjoqKQorCUxJQkM9Z251CisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAor
CXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJ
QkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15
LmMgMj4vZGV2L251bGwgfCBncmVwICdeTElCQydgCisJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1w
Yy1saW51eC0ke0xJQkN9IgorCWV4aXQgOzsKKyAgICBpYTY0OkxpbnV4Oio6KikKKwllY2hvICR7
VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTMycio6TGlu
dXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQg
OzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1s
aW51eC1nbnUKKwlleGl0IDs7CisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6Kjoq
KQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXku
YworCSN1bmRlZiBDUFUKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1F
X01BQ0hJTkV9ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VM
KSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT0ke1VOQU1FX01B
Q0hJTkV9ZWwKKwkjZWxzZQorCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19N
SVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCisJQ1BVPSR7VU5B
TUVfTUFDSElORX0KKwkjZWxzZQorCUNQVT0KKwkjZW5kaWYKKwkjZW5kaWYKK0VPRgorCWV2YWwg
YCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKKwl0
ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251Ijsg
ZXhpdDsgfQorCTs7CisgICAgb3IzMjpMaW51eDoqOiopCisJZWNobyBvcjMyLXVua25vd24tbGlu
dXgtZ251CisJZXhpdCA7OworICAgIHBhZHJlOkxpbnV4Oio6KikKKwllY2hvIHNwYXJjLXVua25v
d24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpM
aW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAg
cGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVs
CisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwg
Y3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdu
dSA7OworCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAg
ICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBw
YzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQg
OzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LWdudQor
CWV4aXQgOzsKKyAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKwllY2hvICR7
VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZXhpdCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikK
KyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7Owor
ICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgt
Z251CisJZXhpdCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB2
YXg6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CisJZXhp
dCA7OworICAgIHg4Nl82NDpMaW51eDoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1n
bnUKKwlleGl0IDs7CisgICAgeHRlbnNhKjpMaW51eDoqOiopCisgICAgCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkRZTklYL3B0eDo0
KjoqKQorCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHgg
aW4gdGhlcmUuCisJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUg
bm9kZW5hbWUgaW4gYm90aAorCSMgc3lzbmFtZSBhbmQgbm9kZW5hbWUuCisJZWNobyBpMzg2LXNl
cXVlbnQtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKKyAgICAg
ICAgIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24g
dmVyc2lvbgorICAgICAgICAjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCisgICAg
ICAgICMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0
Y2ggdGhpcywKKwkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCisgICAgICAgICMgVXNl
IHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6
T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBV
bml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5B
TUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgOzsKKyAgICBpKjg2OlhUUy0zMDA6KjpTVE9Q
KQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKwlleGl0IDs7CisgICAgaSo4
NjphdGhlb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWF0aGVvcworCWV4
aXQgOzsKKyAgICBpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMt
c3lsbGFibGUKKwlleGl0IDs7CisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzoz
LlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCisJZWNobyBpMzg2LXVua25vd24tbHlu
eG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpKjg2OipET1M6KjoqKQorCWVjaG8g
JHtVTkFNRV9NQUNISU5FfS1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIGkqODY6Kjo0Lio6
KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFT
RX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsu
aCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11
bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBj
LXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgOzsKKyAgICBpKjg2Oio6NTpbNjc4XSopCisg
ICAgCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCWNhc2UgYC9i
aW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAgIFVOQU1F
X01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYg
OzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwllc2FjCisJ
ZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0ke1VOQU1F
X1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6KjozLjI6KikKKwlp
ZiB0ZXN0IC1mIC91c3Ivb3B0aW9ucy9jYi5uYW1lOyB0aGVuCisJCVVOQU1FX1JFTD1gc2VkIC1u
ICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKKwkJZWNobyAke1VOQU1F
X01BQ0hJTkV9LXBjLWlzYyRVTkFNRV9SRUwKKwllbGlmIC9iaW4vdW5hbWUgLVggMj4vZGV2L251
bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfUkVMPWAoL2Jpbi91bmFtZSAtWHxncmVwIFJl
bGVhc2V8c2VkIC1lICdzLy4qPSAvLycpYAorCQkoL2Jpbi91bmFtZSAtWHxncmVwIGk4MDQ4NiA+
L2Rldi9udWxsKSAmJiBVTkFNRV9NQUNISU5FPWk0ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAn
Xk1hY2hpbmUuKlBlbnRpdW0nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTU4
NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudCAqSUknID4vZGV2L251bGwp
IFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFj
aGluZS4qUGVudGl1bSBQcm8nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4
NgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2NvJFVOQU1FX1JFTAorCWVsc2UKKwkJZWNo
byAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3YzMgorCWZpCisJZXhpdCA7OworICAgIHBjOio6Kjoq
KQorCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgorICAgICAgICAjIHVuYW1lIC1tIHBy
aW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAor
ICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2
LgorCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0
IGNvbmZpZy5zdWIKKwkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIg
Y29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKKwkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KKwll
Y2hvIGk1ODYtcGMtbXNkb3NkamdwcAorICAgICAgICBleGl0IDs7CisgICAgSW50ZWw6TWFjaDoz
KjoqKQorCWVjaG8gaTM4Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQor
CWVjaG8gaTg2MC1pbnRlbC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYw
LVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYv
bnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVB
U0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1T
VlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11
bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwll
eGl0IDs7CisgICAgbWluaSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02
ODAxMC1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMu
NTFtKQorCWVjaG8gbTY4ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQt
TklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIz
Vls1Njc4XSo6KikKKwl0ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5
c3YnOyBleGl0OyB9IDs7CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6
My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6
NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDoz
LjAgfCBTSEcyOio6NC4wOjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVz
dCAtciAvZXRjLy5yZWxpZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwo
WzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rl
di9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2
NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4v
Z3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7
T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQu
MDoqKQorICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9u
dWxsIFwKKyAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAg
ICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIg
L2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChb
MC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2
L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lz
djQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmlu
L2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQu
MyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dy
ZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7
T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6
My4wKjoqKQorCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0
IDs7CisgICAgbWM2ODAzMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCWVjaG8gbTY4ay1hdGFyaS1z
eXN2NAorCWV4aXQgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKKwllY2hvIHNwYXJjLXVu
a25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICByczYwMDA6THlueE9T
OjIuKjoqKQorCWVjaG8gcnM2MDAwLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4
aXQgOzsKKyAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2VyUEM6THlueE9TOjMuWzAxXSo6
KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1seW54
b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCisJ
ZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSTSo6UmVs
aWFudFVOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICBSTSo6
U0lOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlNJTklY
LSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVO
QU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJCWVjaG8gJHtVTkFNRV9NQUNI
SU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25pLXN5c3YKKwlmaQorCWV4aXQg
OzsKKyAgICBQRU5USVVNOio6NC4wKjoqKSAjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAw
JyBTVlI0L01QIGVmZm9ydAorICAgICAgICAgICAgICAgICAgICAgICMgc2F5cyA8UmljaGFyZC5N
LkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKyAgICAgICAgZWNobyBpNTg2LXVuaXN5cy1zeXN2
NAorICAgICAgICBleGl0IDs7CisgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCisJIyBGcm9t
IEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorCSMgSG93IGFib3V0IGRpZmZl
cmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQorCWVjaG8gaHBw
YTEuMS1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNl
YW5mQHN3ZGMuc3RyYXR1cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7
CisgICAgaSo4NjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVj
aG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICAqOlZPUzoqOiop
CisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyBocHBhMS4xLXN0cmF0dXMt
dm9zCisJZXhpdCA7OworICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgk
e1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG5ld3MqOk5FV1MtT1M6Nio6KikKKwllY2hv
IG1pcHMtc29ueS1uZXdzb3M2CisJZXhpdCA7OworICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6Kjoq
IHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQorCWlmIFsgLWQgL3Vz
ci9uZWMgXTsgdGhlbgorCSAgICAgICAgZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNF
fQorCWVsc2UKKwkgICAgICAgIGVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9
CisJZmkKKyAgICAgICAgZXhpdCA7OworICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmlu
ZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYmUtYmVv
cworCWV4aXQgOzsKKyAgICBCZU1hYzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gTWFjIG9y
IE1hYyBjbG9uZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWFwcGxlLWJlb3MKKwlleGl0IDs7
CisgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJs
ZS4KKwllY2hvIGk1ODYtcGMtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBI
YWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1
CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g0LW5lYy1zdXBlcnV4
JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hv
IHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNjpTVVBF
Ui1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3LW5lYy1zdXBlcnV4JHtVTkFNRV9S
RUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVYOio6KikKKwllY2hvIHN4OC1uZWMt
c3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtOFI6U1VQRVItVVg6Kjoq
KQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAg
UG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtcmhhcHNvZHkke1VOQU1F
X1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6KjoqKQorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpE
YXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NP
Uj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgIGkzODYpCisJCWV2YWwg
JHNldF9jY19mb3JfYnVpbGQKKwkJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVy
X2ZvdW5kJyBdOyB0aGVuCisJCSAgaWYgKGVjaG8gJyNpZmRlZiBfX0xQNjRfXyc7IGVjaG8gSVNf
NjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCSAgICAgIChDQ09QVFM9ICRDQ19GT1Jf
QlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+
L2Rldi9udWxsCisJCSAgdGhlbgorCQkgICAgICBVTkFNRV9QUk9DRVNTT1I9Ing4Nl82NCIKKwkJ
ICBmaQorCQlmaSA7OworCSAgICB1bmtub3duKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7Owor
CWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBsZS1kYXJ3aW4ke1VOQU1FX1JFTEVB
U0V9CisJZXhpdCA7OworICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoq
KQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NP
UiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5F
PXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1x
bngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UU5YOio6NCopCisJZWNobyBpMzg2
LXBjLXFueAorCWV4aXQgOzsKKyAgICBOU0UtPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBu
c2UtdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNSLT86Tk9OU1RP
UF9LRVJORUw6KjoqKQorCWVjaG8gbnNyLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhp
dCA7OworICAgICo6Tm9uU3RvcC1VWDoqOiopCisJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgK
KwlleGl0IDs7CisgICAgQlMyMDAwOlBPU0lYKjoqOiopCisJZWNobyBiczIwMDAtc2llbWVucy1z
eXN2CisJZXhpdCA7OworICAgIERTLyo6VU5JWF9TeXN0ZW1fVjoqOiopCisJZWNobyAke1VOQU1F
X01BQ0hJTkV9LSR7VU5BTUVfU1lTVEVNfS0ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAg
ICo6UGxhbjk6KjoqKQorCSMgInVuYW1lIC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRj
cHV0eXBlIGluc3RlYWQuIDM4NgorCSMgaXMgY29udmVydGVkIHRvIGkzODYgZm9yIGNvbnNpc3Rl
bmN5IHdpdGggb3RoZXIgeDg2CisJIyBvcGVyYXRpbmcgc3lzdGVtcy4KKwlpZiB0ZXN0ICIkY3B1
dHlwZSIgPSAiMzg2IjsgdGhlbgorCSAgICBVTkFNRV9NQUNISU5FPWkzODYKKwllbHNlCisJICAg
IFVOQU1FX01BQ0hJTkU9IiRjcHV0eXBlIgorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu
a25vd24tcGxhbjkKKwlleGl0IDs7CisgICAgKjpUT1BTLTEwOio6KikKKwllY2hvIHBkcDEwLXVu
a25vd24tdG9wczEwCisJZXhpdCA7OworICAgICo6VEVORVg6KjoqKQorCWVjaG8gcGRwMTAtdW5r
bm93bi10ZW5leAorCWV4aXQgOzsKKyAgICBLUzEwOlRPUFMtMjA6KjoqIHwgS0wxMDpUT1BTLTIw
Oio6KiB8IFRZUEU0OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtZGVjLXRvcHMyMAorCWV4aXQg
OzsKKyAgICBYS0wtMTpUT1BTLTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRw
MTAteGtsLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAt
dW5rbm93bi10b3BzMjAKKwlleGl0IDs7CisgICAgKjpJVFM6KjoqKQorCWVjaG8gcGRwMTAtdW5r
bm93bi1pdHMKKwlleGl0IDs7CisgICAgU0VJOio6KjpTRUlVWCkKKyAgICAgICAgZWNobyBtaXBz
LXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEcmFnb25GbHk6Kjoq
KQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVf
UkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKKwlleGl0IDs7CisgICAgKjoqVk1TOio6KikK
KyAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VO
QU1FX01BQ0hJTkV9IiBpbgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7Owor
CSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1k
ZWMtdm1zIDsgZXhpdCA7OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkz
ODYtcGMteGVuaXgKKwlleGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1F
X01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4q
JC8vJworCWV4aXQgOzsKKyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5F
fS1wYy1yZG9zCisJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01B
Q0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFu
ZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVf
TUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9O
fSIgMT4mMgorCitldmFsICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisj
aWZkZWYgX1NFUVVFTlRfCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMv
dXRzbmFtZS5oPgorI2VuZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBk
ZWZpbmVkIChNSVBTRUIpCisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3Mi
LiAgUGVyaGFwcyBCRkQgc2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4g
ICovCisgIHByaW50ZiAoIm1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5j
bHVkZSA8c3lzL3BhcmFtLmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNp
ZmRlZiBORVdTT1M0CisgICAgICAgICAgIjQiCisjZWxzZQorCSAgIiIKKyNlbmRpZgorICAgICAg
ICAgKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19hcm0pICYm
IGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKKyAgcHJpbnRmICgiYXJtLWFj
b3JuLXJpc2NpeFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChocDMwMCkg
JiYgIWRlZmluZWQgKGhwdXgpCisgIHByaW50ZiAoIm02OGstaHAtYnNkXG4iKTsgZXhpdCAoMCk7
CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE5lWFQpCisjaWYgIWRlZmluZWQgKF9fQVJDSElURUNU
VVJFX18pCisjZGVmaW5lIF9fQVJDSElURUNUVVJFX18gIm02OGsiCisjZW5kaWYKKyAgaW50IHZl
cnNpb247CisgIHZlcnNpb249YChob3N0aW5mbyB8IHNlZCAtbiAncy8uKk5lWFQgTWFjaCBcKFsw
LTldKlwpLiovXDEvcCcpIDI+L2Rldi9udWxsYDsKKyAgaWYgKHZlcnNpb24gPCA0KQorICAgIHBy
aW50ZiAoIiVzLW5leHQtbmV4dHN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7
CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy1uZXh0LW9wZW5zdGVwJWRcbiIsIF9fQVJDSElURUNU
VVJFX18sIHZlcnNpb24pOworICBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTVVM
VElNQVgpIHx8IGRlZmluZWQgKG4xNikKKyNpZiBkZWZpbmVkIChVTUFYVikKKyAgcHJpbnRmICgi
bnMzMmstZW5jb3JlLXN5c3ZcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaWYgZGVmaW5lZCAoQ01V
KQorICBwcmludGYgKCJuczMyay1lbmNvcmUtbWFjaFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyAg
cHJpbnRmICgibnMzMmstZW5jb3JlLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYK
KyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX18zODZCU0RfXykKKyAgcHJpbnRmICgiaTM4Ni1wYy1i
c2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoc2VxdWVudCkKKyNpZiBk
ZWZpbmVkIChpMzg2KQorICBwcmludGYgKCJpMzg2LXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgw
KTsKKyNlbmRpZgorI2lmIGRlZmluZWQgKG5zMzIwMDApCisgIHByaW50ZiAoIm5zMzJrLXNlcXVl
bnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChf
U0VRVUVOVF8pCisgICAgc3RydWN0IHV0c25hbWUgdW47CisKKyAgICB1bmFtZSgmdW4pOworCisg
ICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYyIiwgMikgPT0gMCkgeworCXByaW50ZiAoImkz
ODYtc2VxdWVudC1wdHgyXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIGlmIChzdHJuY21wKHVu
LnZlcnNpb24sICJWMSIsIDIpID09IDApIHsgLyogWFhYIGlzIFYxIGNvcnJlY3Q/ICovCisJcHJp
bnRmICgiaTM4Ni1zZXF1ZW50LXB0eDFcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgcHJpbnRm
ICgiaTM4Ni1zZXF1ZW50LXB0eFxuIik7IGV4aXQgKDApOworCisjZW5kaWYKKworI2lmIGRlZmlu
ZWQgKHZheCkKKyMgaWYgIWRlZmluZWQgKHVsdHJpeCkKKyMgIGluY2x1ZGUgPHN5cy9wYXJhbS5o
PgorIyAgaWYgZGVmaW5lZCAoQlNEKQorIyAgIGlmIEJTRCA9PSA0MworICAgICAgcHJpbnRmICgi
dmF4LWRlYy1ic2Q0LjNcbiIpOyBleGl0ICgwKTsKKyMgICBlbHNlCisjICAgIGlmIEJTRCA9PSAx
OTkwMDYKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zcmVub1xuIik7IGV4aXQgKDApOwor
IyAgICBlbHNlCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAg
ICBlbmRpZgorIyAgIGVuZGlmCisjICBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIp
OyBleGl0ICgwKTsKKyMgIGVuZGlmCisjIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLXVsdHJp
eFxuIik7IGV4aXQgKDApOworIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChhbGxpYW50
KSAmJiBkZWZpbmVkIChpODYwKQorICBwcmludGYgKCJpODYwLWFsbGlhbnQtYnNkXG4iKTsgZXhp
dCAoMCk7CisjZW5kaWYKKworICBleGl0ICgxKTsKK30KK0VPRgorCiskQ0NfRk9SX0JVSUxEIC1v
ICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgor
CXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCisjIEFwb2xsb3MgcHV0IHRoZSBzeXN0
ZW0gdHlwZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBl
Y2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorCisjIENvbnZleCB2ZXJzaW9u
cyB0aGF0IHByZWRhdGUgdW5hbWUgY2FuIHVzZSBnZXRzeXNpbmZvKDEpCisKK2lmIFsgLXggL3Vz
ci9jb252ZXgvZ2V0c3lzaW5mbyBdCit0aGVuCisgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVf
dHlwZWAgaW4KKyAgICBjMSopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMy
KikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1i
c2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIGMzNCopCisJ
ZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMzgqKQorCWVjaG8gYzM4LWNvbnZl
eC1ic2QKKwlleGl0IDs7CisgICAgYzQqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsK
KyAgICBlc2FjCitmaQorCitjYXQgPiYyIDw8RU9GCiskMDogdW5hYmxlIHRvIGd1ZXNzIHN5c3Rl
bSB0eXBlCisKK1RoaXMgc2NyaXB0LCBsYXN0IG1vZGlmaWVkICR0aW1lc3RhbXAsIGhhcyBmYWls
ZWQgdG8gcmVjb2duaXplCit0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLiBJdCBp
cyBhZHZpc2VkIHRoYXQgeW91Citkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24g
b2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KKworICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5v
cmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhF
QUQKK2FuZAorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5n
aXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKK0lmIHRoZSB2ZXJzaW9uIHlv
dSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQorc2VuZCB0aGUgZm9sbG93
aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKK3BlcnRpbmVu
dCB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4gaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgbmVl
ZGVkCitpbmZvcm1hdGlvbiB0byBoYW5kbGUgeW91ciBzeXN0ZW0uCisKK2NvbmZpZy5ndWVzcyB0
aW1lc3RhbXAgPSAkdGltZXN0YW1wCisKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251
bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8
fCBlY2hvIHVua25vd25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVj
aG8gdW5rbm93bmAKK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1
bmtub3duYAorCisvdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rl
di9udWxsYAorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxs
YAorCitob3N0aW5mbyAgICAgICAgICAgICAgID0gYChob3N0aW5mbykgMj4vZGV2L251bGxgCisv
YmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAKKy91
c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsYAor
L2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbGAKKy91c3Iv
YmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsYAorL3Vz
ci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251
bGxgCisKK1VOQU1FX01BQ0hJTkUgPSAke1VOQU1FX01BQ0hJTkV9CitVTkFNRV9SRUxFQVNFID0g
JHtVTkFNRV9SRUxFQVNFfQorVU5BTUVfU1lTVEVNICA9ICR7VU5BTUVfU1lTVEVNfQorVU5BTUVf
VkVSU0lPTiA9ICR7VU5BTUVfVkVSU0lPTn0KK0VPRgorCitleGl0IDEKKworIyBMb2NhbCB2YXJp
YWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkK
KyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDog
IiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC1yIDVi
MjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvY29uZmlnLmguaW4KLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvY29uZmlnLmguaW4J
VHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsNDY4IEBACisvKiBjb25m
aWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8K
KworLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3Ig
Q3JheS0yIGFuZCBDcmF5LVlNUAorICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJl
ZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCisgICAqLworI3VuZGVm
IENSQVlfU1RBQ0tTRUdfRU5ECisKKy8qIERlZmluZSB0byAxIGlmIHVzaW5nIGBhbGxvY2EuYycu
ICovCisjdW5kZWYgQ19BTExPQ0EKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBh
bGFybScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9BTEFSTQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSBgYWxsb2NhJywgYXMgYSBmdW5jdGlvbiBvciBtYWNyby4gKi8KKyN1bmRlZiBI
QVZFX0FMTE9DQQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBp
dCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuCisgICAqLworI3VuZGVmIEhBVkVfQUxM
T0NBX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhcnBhL2luZXQuaD4gaGVh
ZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9BUlBBX0lORVRfSAorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYGF0ZXhpdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9BVEVYSVQK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiemVybycgZnVuY3Rpb24uICovCisj
dW5kZWYgSEFWRV9CWkVSTworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2Nr
X2dldHRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGR1cDInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfRFVQMgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRl
ciBmaWxlLiAqLworI3VuZGVmIEhBVkVfRkNOVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYGZkYXRhc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GREFUQVNZTkMK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmb3JrJyBmdW5jdGlvbi4gKi8KKyN1
bmRlZiBIQVZFX0ZPUksKKworLyogRGVmaW5lIHRvIDEgaWYgZnNlZWtvIChhbmQgcHJlc3VtYWJs
eSBmdGVsbG8pIGV4aXN0cyBhbmQgaXMgZGVjbGFyZWQuICovCisjdW5kZWYgSEFWRV9GU0VFS08K
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdHJ1bmNhdGUnIGZ1bmN0aW9uLiAq
LworI3VuZGVmIEhBVkVfRlRSVU5DQVRFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgZ2V0Y3dkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVENXRAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhvc3RieW5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfR0VUSE9TVEJZTkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdl
dGhvc3RuYW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1ROQU1FCisKKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAqLworI3Vu
ZGVmIEhBVkVfR0VUUEFHRVNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBn
ZXR0aW1lb2ZkYXknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaW5ldF9udG9hJyBmdW5jdGlvbi4gKi8KKyN1
bmRlZiBIQVZFX0lORVRfTlRPQQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlu
dHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGlzYXNjaWknIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfSVNBU0NJSQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNyeXB0bycg
bGlicmFyeSAoLWxjcnlwdG8pLiAqLworI3VuZGVmIEhBVkVfTElCQ1JZUFRPCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGliaW50bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRl
ZiBIQVZFX0xJQklOVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJ0JyBs
aWJyYXJ5ICgtbHJ0KS4gKi8KKyN1bmRlZiBIQVZFX0xJQlJUCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgdXVpZCcgbGlicmFyeSAoLWx1dWlkKS4gKi8KKyN1bmRlZiBIQVZFX0xJ
QlVVSUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB5YWpsJyBsaWJyYXJ5ICgt
bHlhamwpLiAqLworI3VuZGVmIEhBVkVfTElCWUFKTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYHonIGxpYnJhcnkgKC1seikuICovCisjdW5kZWYgSEFWRV9MSUJaCisKKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAqLworI3Vu
ZGVmIEhBVkVfTElNSVRTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2Nh
bHRpbWVfcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0NBTFRJTUVfUgorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBHTlUgbGliYyBjb21wYXRpYmxlIGBtYWxsb2Mn
IGZ1bmN0aW9uLCBhbmQKKyAgIHRvIDAgb3RoZXJ3aXNlLiAqLworI3VuZGVmIEhBVkVfTUFMTE9D
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWFsbG9jLmg+IGhlYWRlciBmaWxl
LiAqLworI3VuZGVmIEhBVkVfTUFMTE9DX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBtZW1jaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNQ0hSCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFW
RV9NRU1NT1ZFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhl
YWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTUVNT1JZX0gKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBtZW1zZXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNU0VUCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtkaXInIGZ1bmN0aW9uLiAqLworI3Vu
ZGVmIEhBVkVfTUtESVIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2ZpZm8n
IGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUtGSUZPCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIGEgd29ya2luZyBgbW1hcCcgc3lzdGVtIGNhbGwuICovCisjdW5kZWYgSEFWRV9NTUFQ
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXVubWFwJyBmdW5jdGlvbi4gKi8K
KyN1bmRlZiBIQVZFX01VTk1BUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5l
dGRiLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUREJfSAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5k
ZWYgSEFWRV9ORVRJTkVUX0lOX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBw
YXRoY29uZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QQVRIQ09ORgorCisvKiBEZWZpbmUg
dG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgcHRyZGlmZl90Jy4gKi8KKyN1bmRlZiBI
QVZFX1BUUkRJRkZfVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBHTlUg
bGliYyBjb21wYXRpYmxlIGByZWFsbG9jJyBmdW5jdGlvbiwKKyAgIGFuZCB0byAwIG90aGVyd2lz
ZS4gKi8KKyN1bmRlZiBIQVZFX1JFQUxMT0MKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUFMUEFUSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2NvbXAnIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfUkVHQ09NUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJtZGlyJyBm
dW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JNRElSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFTEVDVAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGVudicgZnVuY3Rpb24uICovCisjdW5kZWYg
SEFWRV9TRVRFTlYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGZ1
bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU09DS0VUCisKKy8qIERlZmluZSB0byAxIGlmIHN0ZGJv
b2wuaCBjb25mb3JtcyB0byBDOTkuICovCisjdW5kZWYgSEFWRV9TVERCT09MX0gKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRkZWYuaD4gaGVhZGVyIGZpbGUuICovCisjdW5k
ZWYgSEFWRV9TVERERUZfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGlu
dC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURElOVF9ICisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhB
VkVfU1RETElCX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJjYXNlY21w
JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkNBU0VDTVAKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBzdHJjaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSQ0hS
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyY3NwbicgZnVuY3Rpb24uICov
CisjdW5kZWYgSEFWRV9TVFJDU1BOCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
c3RyZHVwJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkRVUAorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmVycm9yJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NU
UkVSUk9SCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFk
ZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklO
R19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RybmR1cCcgZnVuY3Rpb24u
ICovCisjdW5kZWYgSEFWRV9TVFJORFVQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgc3RycGJyaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJQQlJLCisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RycmNocicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFW
RV9TVFJSQ0hSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3Ryc3BuJyBmdW5j
dGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlNQTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYHN0cnN0cicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJTVFIKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b2wnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfU1RSVE9MCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bCcgZnVu
Y3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJUT1VMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSVE9VTEwKKwor
LyogRGVmaW5lIHRvIDEgaWYgYHN0X2Jsa3NpemUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3Rh
dCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFCisKKy8qIERlZmluZSB0
byAxIGlmIGBzdF9ibG9ja3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCisjdW5k
ZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHN0X3Jk
ZXYnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1Rf
U1RBVF9TVF9SREVWCisKKy8qIERlZmluZSB0byAxIGlmIHlvdXIgYHN0cnVjdCBzdGF0JyBoYXMg
YHN0X2Jsb2NrcycuIERlcHJlY2F0ZWQsIHVzZQorICAgYEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxP
Q0tTJyBpbnN0ZWFkLiAqLworI3VuZGVmIEhBVkVfU1RfQkxPQ0tTCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8c3lzbG9nLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
U1lTTE9HX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZmlsZS5oPiBo
ZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19GSUxFX0gKKworLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIDxzeXMvaW9jdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFW
RV9TWVNfSU9DVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tb3Vu
dC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19NT1VOVF9ICisKKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLworI3Vu
ZGVmIEhBVkVfU1lTX1BBUkFNX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxz
eXMvc29ja2V0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXR2ZnMuaD4gaGVhZGVyIGZp
bGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1RBVFZGU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNf
U1RBVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVh
ZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfVElNRV9ICisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
U1lTX1RZUEVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx0ZXJtaW9zLmg+
IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfVEVSTUlPU19ICisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgdHpzZXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVFpTRVQK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCisj
dW5kZWYgSEFWRV9VTkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0
ZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1VOSVNURF9ICisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgdmZvcmsnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVkZP
UksKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2Zm9yay5oPiBoZWFkZXIgZmls
ZS4gKi8KKyN1bmRlZiBIQVZFX1ZGT1JLX0gKKworLyogRGVmaW5lIHRvIDEgaWYgYGZvcmsnIHdv
cmtzLiAqLworI3VuZGVmIEhBVkVfV09SS0lOR19GT1JLCisKKy8qIERlZmluZSB0byAxIGlmIGB2
Zm9yaycgd29ya3MuICovCisjdW5kZWYgSEFWRV9XT1JLSU5HX1ZGT1JLCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8eWFqbC95YWpsX3ZlcnNpb24uaD4gaGVhZGVyIGZpbGUuICov
CisjdW5kZWYgSEFWRV9ZQUpMX1lBSkxfVkVSU0lPTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHRo
ZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBfQm9vbCcuICovCisjdW5kZWYgSEFWRV9fQk9PTAorCisv
KiBEZWZpbmUgdG8gMSBpZiBgbHN0YXQnIGRlcmVmZXJlbmNlcyBhIHN5bWxpbmsgc3BlY2lmaWVk
IHdpdGggYSB0cmFpbGluZworICAgc2xhc2guICovCisjdW5kZWYgTFNUQVRfRk9MTE9XU19TTEFT
SEVEX1NZTUxJTksKKworLyogRGVmaW5lIHRvIDEgaWYgYG1ham9yJywgYG1pbm9yJywgYW5kIGBt
YWtlZGV2JyBhcmUgZGVjbGFyZWQgaW4gPG1rZGV2Lmg+LgorICAgKi8KKyN1bmRlZiBNQUpPUl9J
Tl9NS0RFVgorCisvKiBEZWZpbmUgdG8gMSBpZiBgbWFqb3InLCBgbWlub3InLCBhbmQgYG1ha2Vk
ZXYnIGFyZSBkZWNsYXJlZCBpbgorICAgPHN5c21hY3Jvcy5oPi4gKi8KKyN1bmRlZiBNQUpPUl9J
Tl9TWVNNQUNST1MKKworLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRz
IGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCisjdW5kZWYgUEFDS0FHRV9CVUdS
RVBPUlQKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwor
I3VuZGVmIFBBQ0tBR0VfTkFNRQorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVy
c2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9TVFJJTkcKKworLyogRGVm
aW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI3Vu
ZGVmIFBBQ0tBR0VfVEFSTkFNRQorCisvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhp
cyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVVJMCisKKy8qIERlZmluZSB0byB0aGUgdmVy
c2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisKKy8qIElm
IHVzaW5nIHRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGFsbG9jYSwgZGVmaW5lIGlmIHlvdSBrbm93
IHRoZQorICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVy
d2lzZSBpdCB3aWxsIGJlCisgICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVudGltZS4KKwlT
VEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCisJU1RB
Q0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCisJU1RBQ0tf
RElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24gKi8KKyN1bmRlZiBT
VEFDS19ESVJFQ1RJT04KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBo
ZWFkZXIgZmlsZXMuICovCisjdW5kZWYgU1REQ19IRUFERVJTCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAq
LworI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQorCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBB
SVggMywgSW50ZXJpeC4gICovCisjaWZuZGVmIF9BTExfU09VUkNFCisjIHVuZGVmIF9BTExfU09V
UkNFCisjZW5kaWYKKy8qIEVuYWJsZSBHTlUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgaGF2
ZSB0aGVtLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgdW5kZWYgX0dOVV9TT1VSQ0UKKyNl
bmRpZgorLyogRW5hYmxlIHRocmVhZGluZyBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lm
bmRlZiBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MKKyMgdW5kZWYgX1BPU0lYX1BUSFJFQURfU0VN
QU5USUNTCisjZW5kaWYKKy8qIEVuYWJsZSBleHRlbnNpb25zIG9uIEhQIE5vblN0b3AuICAqLwor
I2lmbmRlZiBfVEFOREVNX1NPVVJDRQorIyB1bmRlZiBfVEFOREVNX1NPVVJDRQorI2VuZGlmCisv
KiBFbmFibGUgZ2VuZXJhbCBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lmbmRlZiBfX0VY
VEVOU0lPTlNfXworIyB1bmRlZiBfX0VYVEVOU0lPTlNfXworI2VuZGlmCisKKworLyogRGVmaW5l
IHRvIDEgdG8gbWFrZSBmc2Vla28gdmlzaWJsZSBvbiBzb21lIGhvc3RzIChlLmcuIGdsaWJjIDIu
MikuICovCisjdW5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKworLyogRGVmaW5lIHRvIDEgaWYgb24g
TUlOSVguICovCisjdW5kZWYgX01JTklYCisKKy8qIERlZmluZSB0byAyIGlmIHRoZSBzeXN0ZW0g
ZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdCB3aXRoCisgICB0aGlzIGRl
ZmluZWQuICovCisjdW5kZWYgX1BPU0lYXzFfU09VUkNFCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBuZWVkIHRvIGluIG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAq
LworI3VuZGVmIF9QT1NJWF9TT1VSQ0UKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNv
IHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+
LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93
ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8K
KyN1bmRlZiBfVUlOVDMyX1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1
aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8
c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRo
ZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRl
ZiBfVUlOVDY0X1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50OF90
IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhv
cmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCisgICAj
ZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLworI3VuZGVmIF9VSU5U
OF9UCisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5l
LiAqLworI3VuZGVmIGdpZF90CisKKy8qIERlZmluZSB0byBgX19pbmxpbmVfXycgb3IgYF9faW5s
aW5lJyBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlcgorICAgY2FsbHMgaXQsIG9yIHRvIG5v
dGhpbmcgaWYgJ2lubGluZScgaXMgbm90IHN1cHBvcnRlZCB1bmRlciBhbnkgbmFtZS4gICovCisj
aWZuZGVmIF9fY3BsdXNwbHVzCisjdW5kZWYgaW5saW5lCisjZW5kaWYKKworLyogRGVmaW5lIHRv
IHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJp
dHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRv
IG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50MTZfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5
cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgor
ICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRl
ZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQzMl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBh
IHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCisgICBzdWNo
IGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0
LiAqLworI3VuZGVmIGludDY0X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVk
IGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDggYml0cyBpZiBzdWNoCisgICBhIHR5cGUg
ZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1
bmRlZiBpbnQ4X3QKKworLyogRGVmaW5lIHRvIHJwbF9tYWxsb2MgaWYgdGhlIHJlcGxhY2VtZW50
IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLiAqLworI3VuZGVmIG1hbGxvYworCisvKiBEZWZpbmUg
dG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgbW9k
ZV90CisKKy8qIERlZmluZSB0byBgbG9uZyBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3Qg
ZGVmaW5lLiAqLworI3VuZGVmIG9mZl90CisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5
cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBwaWRfdAorCisvKiBEZWZpbmUgdG8g
cnBsX3JlYWxsb2MgaWYgdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLiAq
LworI3VuZGVmIHJlYWxsb2MKKworLyogRGVmaW5lIHRvIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBD
OTkgJ3Jlc3RyaWN0JyBrZXl3b3JkLCBvciB0bworICAgbm90aGluZyBpZiB0aGlzIGlzIG5vdCBz
dXBwb3J0ZWQuICBEbyBub3QgZGVmaW5lIGlmIHJlc3RyaWN0IGlzCisgICBzdXBwb3J0ZWQgZGly
ZWN0bHkuICAqLworI3VuZGVmIHJlc3RyaWN0CisvKiBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBTdW4g
QysrOiBpdCBkb2VzIG5vdCBzdXBwb3J0IF9SZXN0cmljdCBvcgorICAgX19yZXN0cmljdF9fLCBl
dmVuIHRob3VnaCB0aGUgY29ycmVzcG9uZGluZyBTdW4gQyBjb21waWxlciBlbmRzIHVwIHdpdGgK
KyAgICIjZGVmaW5lIHJlc3RyaWN0IF9SZXN0cmljdCIgb3IgIiNkZWZpbmUgcmVzdHJpY3QgX19y
ZXN0cmljdF9fIiBpbiB0aGUKKyAgIHByZXZpb3VzIGxpbmUuICBQZXJoYXBzIHNvbWUgZnV0dXJl
IHZlcnNpb24gb2YgU3VuIEMrKyB3aWxsIHdvcmsgd2l0aAorICAgcmVzdHJpY3Q7IGlmIHNvLCBo
b3BlZnVsbHkgaXQgZGVmaW5lcyBfX1JFU1RSSUNUIGxpa2UgU3VuIEMgZG9lcy4gICovCisjaWYg
ZGVmaW5lZCBfX1NVTlBST19DQyAmJiAhZGVmaW5lZCBfX1JFU1RSSUNUCisjIGRlZmluZSBfUmVz
dHJpY3QKKyMgZGVmaW5lIF9fcmVzdHJpY3RfXworI2VuZGlmCisKKy8qIERlZmluZSB0byBgdW5z
aWduZWQgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBz
aXplX3QKKworLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVm
aW5lLiAqLworI3VuZGVmIHNzaXplX3QKKworLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlw
ZXMuaD4gZG9lc24ndCBkZWZpbmUuICovCisjdW5kZWYgdWlkX3QKKworLyogRGVmaW5lIHRvIHRo
ZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJp
dHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRv
IG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDE2X3QKKworLyogRGVmaW5lIHRvIHRoZSB0
eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJpdHMg
aWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5v
dCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDMyX3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBl
IG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDY0IGJpdHMgaWYK
KyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBk
ZWZpbmUgaXQuICovCisjdW5kZWYgdWludDY0X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9m
IGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDggYml0cyBpZgorICAg
c3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmlu
ZSBpdC4gKi8KKyN1bmRlZiB1aW50OF90CisKKy8qIERlZmluZSBhcyBgZm9yaycgaWYgYHZmb3Jr
JyBkb2VzIG5vdCB3b3JrLiAqLworI3VuZGVmIHZmb3JrCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1y
IDZmZGUwMTdjNDE5ZSB0b29scy9jb25maWcuc3ViCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2NvbmZpZy5zdWIJVHVlIEphbiAxMCAxOTox
MzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTcxNCBAQAorIyEgL2Jpbi9zaAorIyBDb25maWd1
cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCisjICAgQ29weXJpZ2h0IChDKSAx
OTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAs
IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDEw
LTAxLTIyJworCisjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdO
VSBzb2Z0d2FyZS4KKyMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3Vn
Z2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQorIyBjYW4gaGFuZGxlIHRoYXQgbWFjaGluZS4g
IEl0IGRvZXMgbm90IGltcGx5IEFMTCBHTlUgc29mdHdhcmUgY2FuLgorIworIyBUaGlzIGZpbGUg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QQorIyAwMjExMC0xMzAxLCBVU0EuCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZp
bGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24g
c2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisj
IHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9m
IHRoYXQgcHJvZ3JhbS4KKworCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRj
aGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorIyBkaWZmIGFuZCBhIHByb3Blcmx5IGZv
cm1hdHRlZCBHTlUgQ2hhbmdlTG9nIGVudHJ5LgorIworIyBDb25maWd1cmF0aW9uIHN1YnJvdXRp
bmUgdG8gdmFsaWRhdGUgYW5kIGNhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gdHlwZS4KKyMg
U3VwcGx5IHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiB0eXBlIGFzIGFuIGFyZ3VtZW50Lgor
IyBJZiBpdCBpcyBpbnZhbGlkLCB3ZSBwcmludCBhbiBlcnJvciBtZXNzYWdlIG9uIHN0ZGVyciBh
bmQgZXhpdCB3aXRoIGNvZGUgMS4KKyMgT3RoZXJ3aXNlLCB3ZSBwcmludCB0aGUgY2Fub25pY2Fs
IGNvbmZpZyB0eXBlIG9uIHN0ZG91dCBhbmQgc3VjY2VlZC4KKworIyBZb3UgY2FuIGdldCB0aGUg
bGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKKyMgaHR0cDovL2dpdC5zYXZhbm5h
aC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7
aGI9SEVBRAorCisjIFRoaXMgZmlsZSBpcyBzdXBwb3NlZCB0byBiZSB0aGUgc2FtZSBmb3IgYWxs
IEdOVSBwYWNrYWdlcworIyBhbmQgcmVjb2duaXplIGFsbCB0aGUgQ1BVIHR5cGVzLCBzeXN0ZW0g
dHlwZXMgYW5kIGFsaWFzZXMKKyMgdGhhdCBhcmUgbWVhbmluZ2Z1bCB3aXRoICphbnkqIEdOVSBz
b2Z0d2FyZS4KKyMgRWFjaCBwYWNrYWdlIGlzIHJlc3BvbnNpYmxlIGZvciByZXBvcnRpbmcgd2hp
Y2ggdmFsaWQgY29uZmlndXJhdGlvbnMKKyMgaXQgZG9lcyBub3Qgc3VwcG9ydC4gIFRoZSB1c2Vy
IHNob3VsZCBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoCisjIGEgZmFpbHVyZSB0byBzdXBwb3J0IGEg
dmFsaWQgY29uZmlndXJhdGlvbiBmcm9tIGEgbWVhbmluZ2xlc3MKKyMgY29uZmlndXJhdGlvbi4K
KworIyBUaGUgZ29hbCBvZiB0aGlzIGZpbGUgaXMgdG8gbWFwIGFsbCB0aGUgdmFyaW91cyB2YXJp
YXRpb25zIG9mIGEgZ2l2ZW4KKyMgbWFjaGluZSBzcGVjaWZpY2F0aW9uIGludG8gYSBzaW5nbGUg
c3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJB
VElOR19TWVNURU0KKyMgb3IgaW4gc29tZSBjYXNlcywgdGhlIG5ld2VyIGZvdXItcGFydCBmb3Jt
OgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KKyMgSXQg
aXMgd3JvbmcgdG8gZWNobyBhbnkgb3RoZXIgdHlwZSBvZiBzcGVjaWZpY2F0aW9uLgorCittZT1g
ZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BU
SU9OXSBDUFUtTUZSLU9QU1lTCisgICAgICAgJDAgW09QVElPTl0gQUxJQVMKKworQ2Fub25pY2Fs
aXplIGEgY29uZmlndXJhdGlvbiBuYW1lLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhl
bHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1w
ICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZl
cnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdz
IGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwK
K0dOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQorCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMs
IDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUKK1NvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNv
dXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KK3dhcnJhbnR5OyBub3Qg
ZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiIKKworaGVscD0iCitUcnkgXGAkbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4i
CisKKyMgUGFyc2UgY29tbWFuZCBsaW5lCit3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgY2Fz
ZSAkMSBpbgorICAgIC0tdGltZS1zdGFtcCB8IC0tdGltZSogfCAtdCApCisgICAgICAgZWNobyAi
JHRpbWVzdGFtcCIgOyBleGl0IDs7CisgICAgLS12ZXJzaW9uIHwgLXYgKQorICAgICAgIGVjaG8g
IiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQorICAgICAgIGVj
aG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAgICAtLSApICAgICAjIFN0b3Agb3B0aW9uIHByb2Nlc3Np
bmcKKyAgICAgICBzaGlmdDsgYnJlYWsgOzsKKyAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQu
CisgICAgICAgYnJlYWsgOzsKKyAgICAtKiApCisgICAgICAgZWNobyAiJG1lOiBpbnZhbGlkIG9w
dGlvbiAkMSRoZWxwIgorICAgICAgIGV4aXQgMSA7OworCisgICAgKmxvY2FsKikKKyAgICAgICAj
IEZpcnN0IHBhc3MgdGhyb3VnaCBhbnkgbG9jYWwgbWFjaGluZSB0eXBlcy4KKyAgICAgICBlY2hv
ICQxCisgICAgICAgZXhpdCA7OworCisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYwor
ZG9uZQorCitjYXNlICQjIGluCisgMCkgZWNobyAiJG1lOiBtaXNzaW5nIGFyZ3VtZW50JGhlbHAi
ID4mMgorICAgIGV4aXQgMTs7CisgMSkgOzsKKyAqKSBlY2hvICIkbWU6IHRvbyBtYW55IGFyZ3Vt
ZW50cyRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworZXNhYworCisjIFNlcGFyYXRlIHdoYXQgdGhl
IHVzZXIgZ2F2ZSBpbnRvIENQVS1DT01QQU5ZIGFuZCBPUyBvciBLRVJORUwtT1MgKGlmIGFueSku
CisjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmlu
YXRpb25zLgorbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0q
XCkkL1wyLydgCitjYXNlICRtYXliZV9vcyBpbgorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBs
aW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBsaW51eC11Y2xpYmMqIHwgXAorICB1Y2xp
bnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdu
dSogfCBuZXRic2QqLWdudSogfCBcCisgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKKyAgc3Rvcm0t
Y2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgIG9zPS0kbWF5YmVfb3MKKyAgICBi
YXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9c
MS8nYAorICAgIDs7CisgICopCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy8t
W14tXSokLy8nYAorICAgIGlmIFsgJGJhc2ljX21hY2hpbmUgIT0gJDEgXQorICAgIHRoZW4gb3M9
YGVjaG8gJDEgfCBzZWQgJ3MvLiotLy0vJ2AKKyAgICBlbHNlIG9zPTsgZmkKKyAgICA7OworZXNh
YworCisjIyMgTGV0J3MgcmVjb2duaXplIGNvbW1vbiBtYWNoaW5lcyBhcyBub3QgYmVpbmcgb3Bl
cmF0aW5nIHN5c3RlbXMgc28KKyMjIyB0aGF0IHRoaW5ncyBsaWtlIGNvbmZpZy5zdWIgZGVjc3Rh
dGlvbi0zMTAwIHdvcmsuICBXZSBhbHNvCisjIyMgcmVjb2duaXplIHNvbWUgbWFudWZhY3R1cmVy
cyBhcyBub3QgYmVpbmcgb3BlcmF0aW5nIHN5c3RlbXMsIHNvIHdlCisjIyMgY2FuIHByb3ZpZGUg
ZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyBiZWxvdy4KK2Nhc2UgJG9zIGluCisJLXN1bipvcyop
CisJCSMgUHJldmVudCBmb2xsb3dpbmcgY2xhdXNlIGZyb20gaGFuZGxpbmcgdGhpcyBpbnZhbGlk
IGlucHV0LgorCQk7OworCS1kZWMqIHwgLW1pcHMqIHwgLXNlcXVlbnQqIHwgLWVuY29yZSogfCAt
cGM1MzIqIHwgLXNnaSogfCAtc29ueSogfCBcCisJLWF0dCogfCAtNzMwMCogfCAtMzMwMCogfCAt
ZGVsdGEqIHwgLW1vdG9yb2xhKiB8IC1zdW5bMjM0XSogfCBcCisJLXVuaWNvbSogfCAtaWJtKiB8
IC1uZXh0IHwgLWhwIHwgLWlzaSogfCAtYXBvbGxvIHwgLWFsdG9zKiB8IFwKKwktY29udmVyZ2Vu
dCogfCAtbmNyKiB8IC1uZXdzIHwgLTMyKiB8IC0zNjAwKiB8IC0zMTAwKiB8IC1oaXRhY2hpKiB8
XAorCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwgLWNyZHMgfCAtb21yb24qIHwgLWRnIHwg
LXVsdHJhIHwgLXR0aSogfCBcCisJLWhhcnJpcyB8IC1kb2xwaGluIHwgLWhpZ2hsZXZlbCB8IC1n
b3VsZCB8IC1jYm0gfCAtbnMgfCAtbWFzc2NvbXAgfCBcCisJLWFwcGxlIHwgLWF4aXMgfCAta251
dGggfCAtY3JheSB8IC1taWNyb2JsYXplKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7
OworICAgICAgICAtYmx1ZWdlbmUqKQorCSAgICAgICAgb3M9LWNuaworCQk7OworCS1zaW0gfCAt
Y2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0k
MQorCQk7OworCS1zY291dCkKKwkJOzsKKwktd3JzKQorCQlvcz0tdnh3b3JrcworCQliYXNpY19t
YWNoaW5lPSQxCisJCTs7CisJLWNob3J1c29zKikKKwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21h
Y2hpbmU9JDEKKwkJOzsKKyAJLWNob3J1c3JkYikKKyAJCW9zPS1jaG9ydXNyZGIKKwkJYmFzaWNf
bWFjaGluZT0kMQorIAkJOzsKKwktaGl1eCopCisJCW9zPS1oaXV4d2UyCisJCTs7CisJLXNjbzYp
CisJCW9zPS1zY281djYKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0u
Ki84Ni1wYy8nYAorCQk7OworCS1zY281KQorCQlvcz0tc2NvMy4ydjUKKwkJYmFzaWNfbWFjaGlu
ZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY280KQorCQlv
cz0tc2NvMy4ydjQKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84
Ni1wYy8nYAorCQk7OworCS1zY28zLjIuWzQtOV0qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUg
J3Mvc2NvMy4yLi9zY28zLjJ2LydgCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUg
J3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4ydls0LTldKikKKwkJIyBEb24ndCBmb3Jn
ZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNo
byAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281djYqKQorCQkjIERv
bid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNo
aW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbyopCisJ
CW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4q
Lzg2LXBjLydgCisJCTs7CisJLXVkayopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQg
LWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktaXNjKQorCQlvcz0taXNjMi4yCisJCWJhc2lj
X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktY2xp
eCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1pbnRlcmdyYXBoCisJCTs7CisJLWlzYyopCisJ
CWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsK
KwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1g
ZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3Nu
dCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsK
KwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFz
aWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2Rl
IGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFz
aWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBj
b21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUg
c3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFs
cGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1
WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhh
NjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFy
bSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2
ciB8IGF2cjMyIFwKKwl8IGJmaW4gXAorCXwgYzR4IHwgY2xpcHBlciBcCisJfCBkMTB2IHwgZDMw
diB8IGRseCB8IGRzcDE2eHggXAorCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAorCXwgaDgzMDAgfCBo
ODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0
IFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJ
fCBsbTMyIFwKKwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsg
XAorCXwgbWF4cSB8IG1iIHwgbWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXAorCXwg
bWlwcyB8IG1pcHNiZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAor
CXwgbWlwczY0IHwgbWlwczY0ZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwg
XAorCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlw
czY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0dnI0MTAw
IHwgbWlwczY0dnI0MTAwZWwgXAorCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAor
CXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXAorCXwgbWlwczY0dnI1OTAwIHwgbWlw
czY0dnI1OTAwZWwgXAorCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorCXwgbWlwc2lzYTMy
cjIgfCBtaXBzaXNhMzJyMmVsIFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1p
cHNpc2E2NHIyIHwgbWlwc2lzYTY0cjJlbCBcCisJfCBtaXBzaXNhNjRzYjEgfCBtaXBzaXNhNjRz
YjFlbCBcCisJfCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAorCXwgbWlwc3R4
MzkgfCBtaXBzdHgzOWVsIFwKKwl8IG1uMTAyMDAgfCBtbjEwMzAwIFwKKwl8IG1veGllIFwKKwl8
IG10IFwKKwl8IG1zcDQzMCBcCisJfCBuaW9zIHwgbmlvczIgXAorCXwgbnMxNmsgfCBuczMyayBc
CisJfCBvcjMyIFwKKwl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCisJfCBwb3dlcnBjIHwg
cG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgfCBwcGNiZSBcCisJfCBweXJhbWlk
IFwKKwl8IHJ4IFwKKwl8IHNjb3JlIFwKKwl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hb
MjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIz
NF1sZSB8IHNoM2VsZSBcCisJfCBzaDY0IHwgc2g2NGxlIFwKKwl8IHNwYXJjIHwgc3BhcmM2NCB8
IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwK
Kwl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCisJfCBzcHUgfCBz
dHJvbmdhcm0gXAorCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKKwl8
IHViaWNvbTMyIFwKKwl8IHY4NTAgfCB2ODUwZSBcCisJfCB3ZTMyayBcCisJfCB4ODYgfCB4YzE2
eCB8IHhzY2FsZSB8IHhzY2FsZWVbYmxdIHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4ayB8
IHo4MCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJbTY4
MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgcGljb2NoaXApCisJCSMgTW90b3JvbGEg
NjhIQzExLzEyLgorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9
LW5vbmUKKwkJOzsKKwltODgxMTAgfCBtNjgwWzEyMzQ2XTAgfCBtNjgzPzIgfCBtNjgzNjAgfCBt
NTIwMCB8IHY3MCB8IHc2NSB8IHo4aykKKwkJOzsKKwltczEpCisJCWJhc2ljX21hY2hpbmU9bXQt
dW5rbm93bgorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKKwkj
IGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKKwkjICgyKSB0
aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCisJaSo4
NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtcGMKKwkgIDs7CisJ
IyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29yZC4KKwkqLSotKikKKwkJ
ZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hp
bmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworCSMgUmVjb2duaXplIHRo
ZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgwLSogXAorCXwgYTI5ay0q
IFwKKwl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1Ni0qIHwgYWxwaGFldjZb
NzhdLSogXAorCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8IGFscGhhNjRldjU2LSog
fCBhbHBoYTY0ZXY2Wzc4XS0qIFwKKwl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3
XS0qIHwgYXJjLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwg
YXJtdiotKiBcCisJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmZpbi0qIHwgYnMyMDAwLSogXAor
CXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBjNTV4LSog
fCBjNngtKiBcCisJfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAorCXwgZDEwdi0q
IHwgZDMwdi0qIHwgZGx4LSogXAorCXwgZWx4c2ktKiBcCisJfCBmMzBbMDFdLSogfCBmNzAwLSog
fCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCisJfCBoODMwMC0qIHwgaDg1MDAt
KiBcCisJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0q
IHwgaHBwYTY0LSogXAorCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKKwl8
IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxtMzItKiBcCisJfCBtMzJjLSogfCBtMzJyLSogfCBt
MzJybGUtKiBcCisJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4
Mz8yLSogfCBtNjhrLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0q
IHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCisJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNl
Yi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCisJfCBtaXBzMTYtKiBcCisJfCBtaXBzNjQtKiB8
IG1pcHM2NGVsLSogXAorCXwgbWlwczY0b2N0ZW9uLSogfCBtaXBzNjRvY3Rlb25lbC0qIFwKKwl8
IG1pcHM2NG9yaW9uLSogfCBtaXBzNjRvcmlvbmVsLSogXAorCXwgbWlwczY0cjU5MDAtKiB8IG1p
cHM2NHI1OTAwZWwtKiBcCisJfCBtaXBzNjR2ci0qIHwgbWlwczY0dnJlbC0qIFwKKwl8IG1pcHM2
NHZyNDEwMC0qIHwgbWlwczY0dnI0MTAwZWwtKiBcCisJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2
NHZyNDMwMGVsLSogXAorCXwgbWlwczY0dnI1MDAwLSogfCBtaXBzNjR2cjUwMDBlbC0qIFwKKwl8
IG1pcHM2NHZyNTkwMC0qIHwgbWlwczY0dnI1OTAwZWwtKiBcCisJfCBtaXBzaXNhMzItKiB8IG1p
cHNpc2EzMmVsLSogXAorCXwgbWlwc2lzYTMycjItKiB8IG1pcHNpc2EzMnIyZWwtKiBcCisJfCBt
aXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAorCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2
NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRzYjEtKiB8IG1pcHNpc2E2NHNiMWVsLSogXAorCXwgbWlw
c2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCisJfCBtaXBzdHgzOS0qIHwgbWlw
c3R4MzllbC0qIFwKKwl8IG1taXgtKiBcCisJfCBtdC0qIFwKKwl8IG1zcDQzMC0qIFwKKwl8IG5p
b3MtKiB8IG5pb3MyLSogXAorCXwgbm9uZS0qIHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBc
CisJfCBvcmlvbi0qIFwKKwl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4t
KiB8IHBvd2VyLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0q
IHwgcG93ZXJwY2xlLSogfCBwcGNiZS0qIFwKKwl8IHB5cmFtaWQtKiBcCisJfCByb21wLSogfCBy
czYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsy
NF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAorCXwg
c2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCisJ
fCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2
eC0qIHwgc3BhcmNsZXQtKiBcCisJfCBzcGFyY2xpdGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFy
Y3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBz
eD8tKiBcCisJfCB0YWhvZS0qIHwgdGh1bWItKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRp
YzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlLSogfCB0aWxl
Z3gtKiBcCisJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCisJfCB2ODUwLSogfCB2ODUwZS0q
IHwgdmF4LSogXAorCXwgd2UzMmstKiBcCisJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8
IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKwl8IHhzdG9ybXkxNi0qIHwg
eHRlbnNhKi0qIFwKKwl8IHltcC0qIFwKKwl8IHo4ay0qIHwgejgwLSopCisJCTs7CisJIyBSZWNv
Z25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9i
IG1hdGNoLgorCXh0ZW5zYSopCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93
bgorCQk7OworCSMgUmVjb2duaXplIHRoZSB2YXJpb3VzIG1hY2hpbmUgbmFtZXMgYW5kIGFsaWFz
ZXMgd2hpY2ggc3RhbmQKKwkjIGZvciBhIENQVSB0eXBlIGFuZCBhIGNvbXBhbnkgYW5kIHNvbWV0
aW1lcyBldmVuIGFuIE9TLgorCTM4NmJzZCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24K
KwkJb3M9LWJzZAorCQk7OworCTNiMSB8IDczMDAgfCA3MzAwLWF0dCB8IGF0dC03MzAwIHwgcGM3
MzAwIHwgc2FmYXJpIHwgdW5peHBjKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1hdHQKKwkJOzsK
KwkzYiopCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJYTI5a2hpZikKKwkJYmFz
aWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisgICAgCWFiYWN1cykKKwkJYmFz
aWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNo
aW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJ
YmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJ
YmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9
YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZf
NjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFz
aWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNf
bWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQor
CQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykK
KwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWln
YXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQK
KwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lz
dgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9z
PS1ic2QKKwkJOzsKKwlhcm9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWFyb3MK
KwkJOzsKKwlhdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQlvcz0tYXV4CisJCTs7
CisJYmFsYW5jZSkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50CisJCW9zPS1keW5peAor
CQk7OworCWJsYWNrZmluKQorCQliYXNpY19tYWNoaW5lPWJmaW4tdW5rbm93bgorCQlvcz0tbGlu
dXgKKwkJOzsKKwlibGFja2Zpbi0qKQorCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2lj
X21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJYmx1ZWdl
bmUqKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1jbmsKKwkJOzsKKwljOTAp
CisJCWJhc2ljX21hY2hpbmU9YzkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworICAgICAgICBj
ZWdjYykKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tY2VnY2MKKwkJOzsKKwlj
b252ZXgtYzEpCisJCWJhc2ljX21hY2hpbmU9YzEtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwlj
b252ZXgtYzIpCisJCWJhc2ljX21hY2hpbmU9YzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwlj
b252ZXgtYzMyKQorCQliYXNpY19tYWNoaW5lPWMzMi1jb252ZXgKKwkJb3M9LWJzZAorCQk7Owor
CWNvbnZleC1jMzQpCisJCWJhc2ljX21hY2hpbmU9YzM0LWNvbnZleAorCQlvcz0tYnNkCisJCTs7
CisJY29udmV4LWMzOCkKKwkJYmFzaWNfbWFjaGluZT1jMzgtY29udmV4CisJCW9zPS1ic2QKKwkJ
OzsKKwljcmF5IHwgajkwKQorCQliYXNpY19tYWNoaW5lPWo5MC1jcmF5CisJCW9zPS11bmljb3MK
KwkJOzsKKwljcmF5bnYpCisJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKKwkJb3M9LXVuaWNv
c21wCisJCTs7CisJY3IxNikKKwkJYmFzaWNfbWFjaGluZT1jcjE2LXVua25vd24KKwkJb3M9LWVs
ZgorCQk7OworCWNyZHMgfCB1bm9zKQorCQliYXNpY19tYWNoaW5lPW02OGstY3JkcworCQk7Owor
CWNyaXN2MzIgfCBjcmlzdjMyLSogfCBldHJheGZzKikKKwkJYmFzaWNfbWFjaGluZT1jcmlzdjMy
LWF4aXMKKwkJOzsKKwljcmlzIHwgY3Jpcy0qIHwgZXRyYXgqKQorCQliYXNpY19tYWNoaW5lPWNy
aXMtYXhpcworCQk7OworCWNyeCkKKwkJYmFzaWNfbWFjaGluZT1jcngtdW5rbm93bgorCQlvcz0t
ZWxmCisJCTs7CisJZGEzMCB8IGRhMzAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKwkJ
OzsKKwlkZWNzdGF0aW9uIHwgZGVjc3RhdGlvbi0zMTAwIHwgcG1heCB8IHBtYXgtKiB8IHBtaW4g
fCBkZWMzMTAwIHwgZGVjc3RhdG4pCisJCWJhc2ljX21hY2hpbmU9bWlwcy1kZWMKKwkJOzsKKwlk
ZWNzeXN0ZW0xMCogfCBkZWMxMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10
b3BzMTAKKwkJOzsKKwlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCisJCWJhc2ljX21hY2hpbmU9cGRw
MTAtZGVjCisJCW9zPS10b3BzMjAKKwkJOzsKKwlkZWx0YSB8IDMzMDAgfCBtb3Rvcm9sYS0zMzAw
IHwgbW90b3JvbGEtZGVsdGEgXAorCSAgICAgIHwgMzMwMC1tb3Rvcm9sYSB8IGRlbHRhLW1vdG9y
b2xhKQorCQliYXNpY19tYWNoaW5lPW02OGstbW90b3JvbGEKKwkJOzsKKwlkZWx0YTg4KQorCQli
YXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKwkJb3M9LXN5c3YzCisJCTs7CisJZGljb3MpCisJ
CWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKKwlkamdwcCkKKwkJYmFz
aWNfbWFjaGluZT1pNTg2LXBjCisJCW9zPS1tc2Rvc2RqZ3BwCisJCTs7CisJZHB4MjAgfCBkcHgy
MC0qKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCisJCW9zPS1ib3N4CisJCTs7CisJZHB4
MiogfCBkcHgyKi1idWxsKQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlvcz0tc3lzdjMK
KwkJOzsKKwllYm1vbjI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tZWJtb24K
KwkJOzsKKwllbHhzaSkKKwkJYmFzaWNfbWFjaGluZT1lbHhzaS1lbHhzaQorCQlvcz0tYnNkCisJ
CTs7CisJZW5jb3JlIHwgdW1heCB8IG1tYXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstZW5jb3Jl
CisJCTs7CisJZXMxODAwIHwgT1NFNjhrIHwgb3NlNjhrIHwgb3NlIHwgT1NFKQorCQliYXNpY19t
YWNoaW5lPW02OGstZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCWZ4MjgwMCkKKwkJYmFzaWNf
bWFjaGluZT1pODYwLWFsbGlhbnQKKwkJOzsKKwlnZW5peCkKKwkJYmFzaWNfbWFjaGluZT1uczMy
ay1ucworCQk7OworCWdtaWNybykKKwkJYmFzaWNfbWFjaGluZT10cm9uLWdtaWNybworCQlvcz0t
c3lzdgorCQk7OworCWdvMzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tZ28zMgor
CQk7OworCWgzMDUwciogfCBoaXV4KikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkK
KwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwloODMwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1o
aXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloODMwMHhyYXkpCisJCWJhc2ljX21hY2hpbmU9aDgz
MDAtaGl0YWNoaQorCQlvcz0teHJheQorCQk7OworCWg4NTAwaG1zKQorCQliYXNpY19tYWNoaW5l
PWg4NTAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWhhcnJpcykKKwkJYmFzaWNfbWFjaGlu
ZT1tODhrLWhhcnJpcworCQlvcz0tc3lzdjMKKwkJOzsKKwlocDMwMC0qKQorCQliYXNpY19tYWNo
aW5lPW02OGstaHAKKwkJOzsKKwlocDMwMGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJ
CW9zPS1ic2QKKwkJOzsKKwlocDMwMGhwdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlv
cz0taHB1eAorCQk7OworCWhwM2s5WzAtOV1bMC05XSB8IGhwOVswLTldWzAtOV0pCisJCWJhc2lj
X21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWsyWzAtOV1bMC05XSB8IGhwOWszMVswLTld
KQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1ocAorCQk7OworCWhwOWszWzItOV1bMC05XSkKKwkJ
YmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHA5azZbMC05XVswLTldIHwgaHA2WzAtOV1b
MC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azdbMC03OV1bMC05
XSB8IGhwN1swLTc5XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlo
cDlrNzhbMC05XSB8IGhwNzhbMC05XSkKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJ
YmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbNjddMSB8IGhwOFs2N10xIHwg
aHA5azgwWzI0XSB8IGhwODBbMjRdIHwgaHA5azhbNzhdOSB8IGhwOFs3OF05IHwgaHA5azg5MyB8
IGhwODkzKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhw
cGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzEzNjc5XSB8IGhwOFswLTldWzEzNjc5XSkKKwkJ
YmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVswLTldIHwgaHA4WzAt
OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHBwYS1uZXh0KQor
CQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJaHBwYW9zZikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4x
LWhwCisJCW9zPS1vc2YKKwkJOzsKKwlocHBybykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhw
CisJCW9zPS1wcm9lbGYKKwkJOzsKKwlpMzcwLWlibSogfCBpYm0qKQorCQliYXNpY19tYWNoaW5l
PWkzNzAtaWJtCisJCTs7CisjIEknbSBub3Qgc3VyZSB3aGF0ICJTeXN2MzIiIG1lYW5zLiAgU2hv
dWxkIHRoaXMgYmUgc3lzdjMuMj8KKwlpKjg2djMyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQx
IHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3YzMgorCQk7OworCWkqODZ2NCop
CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlv
cz0tc3lzdjQKKwkJOzsKKwlpKjg2dikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAt
ZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2CisJCTs7CisJaSo4NnNvbDIpCisJCWJhc2lj
X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc29sYXJp
czIKKwkJOzsKKwlpMzg2bWFjaCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LW1hY2gKKwkJb3M9LW1h
Y2gKKwkJOzsKKwlpMzg2LXZzdGEgfCB2c3RhKQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93
bgorCQlvcz0tdnN0YQorCQk7OworCWlyaXMgfCBpcmlzNGQpCisJCWJhc2ljX21hY2hpbmU9bWlw
cy1zZ2kKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1pcml4KikKKwkJCTs7CisJCSAgICAqKQorCQkJ
b3M9LWlyaXg0CisJCQk7OworCQllc2FjCisJCTs7CisJaXNpNjggfCBpc2kpCisJCWJhc2ljX21h
Y2hpbmU9bTY4ay1pc2kKKwkJb3M9LXN5c3YKKwkJOzsKKwltNjhrbm9tbXUpCisJCWJhc2ljX21h
Y2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCW02OGtub21tdS0qKQorCQli
YXNpY19tYWNoaW5lPW02OGstYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8v
J2AKKwkJb3M9LWxpbnV4CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4
ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlw
cworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVr
CisJCW9zPS1zeXN2CisJCTs7CisgICAgICAgIG1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9
bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKKwltaW5ndzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYt
cGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwltaW5ndzMyY2UpCisJCWJhc2ljX21hY2hpbmU9YXJt
LXVua25vd24KKwkJb3M9LW1pbmd3MzJjZQorCQk7OworCW1pbmlmcmFtZSkKKwkJYmFzaWNfbWFj
aGluZT1tNjgwMDAtY29udmVyZ2VudAorCQk7OworCSptaW50IHwgLW1pbnRbMC05XSogfCAqTWlO
VCB8ICpNaU5UWzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQK
KwkJOzsKKwltaXBzMyotKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8
IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AKKwkJOzsKKwltaXBzMyopCisJCWJhc2ljX21hY2hp
bmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgLXVua25v
d24KKwkJOzsKKwltb25pdG9yKQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1j
b2ZmCisJCTs7CisJbW9ycGhvcykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJ
b3M9LW1vcnBob3MKKwkJOzsKKwltc2RvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9z
PS1tc2RvcworCQk7OworCW1zMS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNo
aW5lIHwgc2VkIC1lICdzL21zMS0vbXQtLydgCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5l
PWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwluY3IzMDAwKQorCQliYXNpY19tYWNoaW5lPWk0
ODYtbmNyCisJCW9zPS1zeXN2NAorCQk7OworCW5ldGJzZDM4NikKKwkJYmFzaWNfbWFjaGluZT1p
Mzg2LXVua25vd24KKwkJb3M9LW5ldGJzZAorCQk7OworCW5ldHdpbmRlcikKKwkJYmFzaWNfbWFj
aGluZT1hcm12NGwtcmViZWwKKwkJb3M9LWxpbnV4CisJCTs7CisJbmV3cyB8IG5ld3M3MDAgfCBu
ZXdzODAwIHwgbmV3czkwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXNvbnkKKwkJb3M9LW5ld3Nv
cworCQk7OworCW5ld3MxMDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255CisJCW9zPS1u
ZXdzb3MKKwkJOzsKKwluZXdzLTM2MDAgfCByaXNjLW5ld3MpCisJCWJhc2ljX21hY2hpbmU9bWlw
cy1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZWN2NzApCisJCWJhc2ljX21hY2hpbmU9djcw
LW5lYworCQlvcz0tc3lzdgorCQk7OworCW5leHQgfCBtKi1uZXh0ICkKKwkJYmFzaWNfbWFjaGlu
ZT1tNjhrLW5leHQKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1uZXh0c3RlcCogKQorCQkJOzsKKwkJ
ICAgIC1uczIqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAyCisJCQk7OworCQkgICAgKikKKwkJICAg
ICAgb3M9LW5leHRzdGVwMworCQkJOzsKKwkJZXNhYworCQk7OworCW5oMzAwMCkKKwkJYmFzaWNf
bWFjaGluZT1tNjhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5oWzQ1XTAwMCkKKwkJYmFz
aWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5pbmR5OTYwKQorCQli
YXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW5pbmR5CisJCTs7CisJbW9uOTYwKQorCQli
YXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW1vbjk2MAorCQk7OworCW5vbnN0b3B1eCkK
KwkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQorCQlvcz0tbm9uc3RvcHV4CisJCTs7CisJbnAx
KQorCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorCQk7OworCW5zci10YW5kZW0pCisJCWJhc2lj
X21hY2hpbmU9bnNyLXRhbmRlbQorCQk7OworCW9wNTBuLSogfCBvcDYwYy0qKQorCQliYXNpY19t
YWNoaW5lPWhwcGExLjEtb2tpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlvcGVucmlzYyB8IG9wZW5y
aXNjLSopCisJCWJhc2ljX21hY2hpbmU9b3IzMi11bmtub3duCisJCTs7CisJb3M0MDApCisJCWJh
c2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LW9zNDAwCisJCTs7CisJT1NFNjgwMDAgfCBv
c2U2ODAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7
OworCW9zNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstbm9uZQorCQlvcz0tb3M2OGsKKwkJOzsK
KwlwYS1oaXRhY2hpKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1
eHdlMgorCQk7OworCXBhcmFnb24pCisJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorCQlvcz0t
b3NmCisJCTs7CisJcGFyaXNjKQorCQliYXNpY19tYWNoaW5lPWhwcGEtdW5rbm93bgorCQlvcz0t
bGludXgKKwkJOzsKKwlwYXJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhLWBlY2hvICRiYXNp
Y19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCXBiZCkK
KwkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKKwkJOzsKKwlwYmIpCisJCWJhc2ljX21hY2hpbmU9
bTY4ay10dGkKKwkJOzsKKwlwYzUzMiB8IHBjNTMyLSopCisJCWJhc2ljX21hY2hpbmU9bnMzMmst
cGM1MzIKKwkJOzsKKwlwYzk4KQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJOzsKKwlwYzk4
LSopCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9e
W14tXSotLy8nYAorCQk7OworCXBlbnRpdW0gfCBwNSB8IGs1IHwgazYgfCBuZXhnZW4gfCB2aWFj
MykKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCTs7CisJcGVudGl1bXBybyB8IHA2IHwgNng4
NiB8IGF0aGxvbiB8IGF0aGxvbl8qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlw
ZW50aXVtaWkgfCBwZW50aXVtMiB8IHBlbnRpdW1paWkgfCBwZW50aXVtMykKKwkJYmFzaWNfbWFj
aGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bTQpCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1wYwor
CQk7OworCXBlbnRpdW0tKiB8IHA1LSogfCBrNS0qIHwgazYtKiB8IG5leGdlbi0qIHwgdmlhYzMt
KikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15b
Xi1dKi0vLydgCisJCTs7CisJcGVudGl1bXByby0qIHwgcDYtKiB8IDZ4ODYtKiB8IGF0aGxvbi0q
KQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlte
LV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtaWktKiB8IHBlbnRpdW0yLSogfCBwZW50aXVtaWlpLSog
fCBwZW50aXVtMy0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUg
fCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtNC0qKQorCQliYXNpY19tYWNoaW5l
PWk3ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlw
bikKKwkJYmFzaWNfbWFjaGluZT1wbi1nb3VsZAorCQk7OworCXBvd2VyKQliYXNpY19tYWNoaW5l
PXBvd2VyLWlibQorCQk7OworCXBwYykJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJ
OzsKKwlwcGMtKikJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwg
c2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxl
IHwgcG93ZXJwYy1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KKwkJ
OzsKKwlwcGNsZS0qIHwgcG93ZXJwY2xpdHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNs
ZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0
KQliYXNpY19tYWNoaW5lPXBvd2VycGM2NC11bmtub3duCisJCTs7CisJcHBjNjQtKikgYmFzaWNf
bWFjaGluZT1wb3dlcnBjNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8v
J2AKKwkJOzsKKwlwcGM2NGxlIHwgcG93ZXJwYzY0bGl0dGxlIHwgcHBjNjQtbGUgfCBwb3dlcnBj
NjQtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLXVua25vd24KKwkJOzsKKwlw
cGM2NGxlLSogfCBwb3dlcnBjNjRsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRs
ZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBzMikK
KwkJYmFzaWNfbWFjaGluZT1pMzg2LWlibQorCQk7OworCXB3MzIpCisJCWJhc2ljX21hY2hpbmU9
aTU4Ni11bmtub3duCisJCW9zPS1wdzMyCisJCTs7CisJcmRvcykKKwkJYmFzaWNfbWFjaGluZT1p
Mzg2LXBjCisJCW9zPS1yZG9zCisJCTs7CisJcm9tNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGst
cm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJcm1bNDZdMDApCisJCWJhc2ljX21hY2hpbmU9bWlw
cy1zaWVtZW5zCisJCTs7CisJcnRwYyB8IHJ0cGMtKikKKwkJYmFzaWNfbWFjaGluZT1yb21wLWli
bQorCQk7OworCXMzOTAgfCBzMzkwLSopCisJCWJhc2ljX21hY2hpbmU9czM5MC1pYm0KKwkJOzsK
KwlzMzkweCB8IHMzOTB4LSopCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCTs7CisJc2Ey
OTIwMCkKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJc2IxKQor
CQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMS11bmtub3duCisJCTs7CisJc2IxZWwpCisJCWJh
c2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxZWwtdW5rbm93bgorCQk7OworCXNkZSkKKwkJYmFzaWNf
bWFjaGluZT1taXBzaXNhMzItc2RlCisJCW9zPS1lbGYKKwkJOzsKKwlzZWkpCisJCWJhc2ljX21h
Y2hpbmU9bWlwcy1zZWkKKwkJb3M9LXNlaXV4CisJCTs7CisJc2VxdWVudCkKKwkJYmFzaWNfbWFj
aGluZT1pMzg2LXNlcXVlbnQKKwkJOzsKKwlzaCkKKwkJYmFzaWNfbWFjaGluZT1zaC1oaXRhY2hp
CisJCW9zPS1obXMKKwkJOzsKKwlzaDVlbCkKKwkJYmFzaWNfbWFjaGluZT1zaDVsZS11bmtub3du
CisJCTs7CisJc2g2NCkKKwkJYmFzaWNfbWFjaGluZT1zaDY0LXVua25vd24KKwkJOzsKKwlzcGFy
Y2xpdGUtd3JzIHwgc2ltc28td3JzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjbGl0ZS13cnMKKwkJ
b3M9LXZ4d29ya3MKKwkJOzsKKwlzcHM3KQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlv
cz0tc3lzdjIKKwkJOzsKKwlzcHVyKQorCQliYXNpY19tYWNoaW5lPXNwdXItdW5rbm93bgorCQk7
OworCXN0MjAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXRhbmRlbQorCQk7OworCXN0cmF0dXMp
CisJCWJhc2ljX21hY2hpbmU9aTg2MC1zdHJhdHVzCisJCW9zPS1zeXN2NAorCQk7OworCXN1bjIp
CisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJvczMpCisJCWJhc2ljX21h
Y2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuMm9zNCkKKwkJYmFzaWNf
bWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW4zb3MzKQorCQliYXNp
Y19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4zb3M0KQorCQliYXNp
Y19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40b3MzKQorCQliYXNp
Y19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuNG9zNCkKKwkJYmFz
aWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRzb2wyKQorCQli
YXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlzdW4zIHwgc3Vu
My0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3VuNCkKKwkJYmFzaWNfbWFj
aGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwgcm9hZHJ1bm5lcikKKwkJ
YmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFzaWNfbWFjaGluZT1zdjEt
Y3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJhc2ljX21hY2hpbmU9aTM4
Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFzaWNfbWFjaGluZT1hbHBo
YWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJhc2ljX21hY2hpbmU9dDkw
LWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpYzU0eCB8IGM1NHgqKQorCQliYXNpY19tYWNo
aW5lPXRpYzU0eC11bmtub3duCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTV4IHwgYzU1eCopCisJ
CWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eCB8
IGM2eCopCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQlvcz0tY29mZgorCQk7Owor
ICAgICAgICAjIFRoaXMgbXVzdCBiZSBtYXRjaGVkIGJlZm9yZSB0aWxlKi4KKyAgICAgICAgdGls
ZWd4KikKKwkJYmFzaWNfbWFjaGluZT10aWxlZ3gtdW5rbm93bgorCQlvcz0tbGludXgtZ251CisJ
CTs7CisJdGlsZSopCisJCWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCisJCW9zPS1saW51eC1n
bnUKKwkJOzsKKwl0eDM5KQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5LXVua25vd24KKwkJOzsK
Kwl0eDM5ZWwpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzllbC11bmtub3duCisJCTs7CisJdG9h
ZDEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTAteGtsCisJCW9zPS10b3BzMjAKKwkJOzsKKwl0b3dl
ciB8IHRvd2VyLTMyKQorCQliYXNpY19tYWNoaW5lPW02OGstbmNyCisJCTs7CisJdHBmKQorCQli
YXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQlvcz0tdHBmCisJCTs7CisJdWRpMjlrKQorCQliYXNp
Y19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwl1bHRyYTMpCisJCWJhc2ljX21h
Y2hpbmU9YTI5ay1ueXUKKwkJb3M9LXN5bTEKKwkJOzsKKwl2ODEwIHwgbmVjdjgxMCkKKwkJYmFz
aWNfbWFjaGluZT12ODEwLW5lYworCQlvcz0tbm9uZQorCQk7OworCXZheHYpCisJCWJhc2ljX21h
Y2hpbmU9dmF4LWRlYworCQlvcz0tc3lzdgorCQk7OworCXZtcykKKwkJYmFzaWNfbWFjaGluZT12
YXgtZGVjCisJCW9zPS12bXMKKwkJOzsKKwl2cHAqfHZ4fHZ4LSopCisJCWJhc2ljX21hY2hpbmU9
ZjMwMS1mdWppdHN1CisJCTs7CisJdnh3b3Jrczk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLXdy
cworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3M2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhr
LXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3MyOWspCisJCWJhc2ljX21hY2hpbmU9
YTI5ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl3NjUqKQorCQliYXNpY19tYWNoaW5lPXc2
NS13ZGMKKwkJb3M9LW5vbmUKKwkJOzsKKwl3ODlrLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEu
MS13aW5ib25kCisJCW9zPS1wcm9lbGYKKwkJOzsKKwl4Ym94KQorCQliYXNpY19tYWNoaW5lPWk2
ODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwl4cHMgfCB4cHMxMDApCisJCWJhc2ljX21hY2hp
bmU9eHBzMTAwLWhvbmV5d2VsbAorCQk7OworCXltcCkKKwkJYmFzaWNfbWFjaGluZT15bXAtY3Jh
eQorCQlvcz0tdW5pY29zCisJCTs7CisJejhrLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16OGst
dW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJejgwLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16
ODAtdW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJbm9uZSkKKwkJYmFzaWNfbWFjaGluZT1ub25l
LW5vbmUKKwkJb3M9LW5vbmUKKwkJOzsKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBt
YW51ZmFjdHVyZXIgb2YgY2VydGFpbiBDUFUgdHlwZXMuICBJdCBpcyBpbgorIyBzb21lIGNhc2Vz
IHRoZSBvbmx5IG1hbnVmYWN0dXJlciwgaW4gb3RoZXJzLCBpdCBpcyB0aGUgbW9zdCBwb3B1bGFy
LgorCXc4OWspCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS13aW5ib25kCisJCTs7CisJb3A1MG4p
CisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlvcDYwYykKKwkJYmFzaWNfbWFj
aGluZT1ocHBhMS4xLW9raQorCQk7OworCXJvbXApCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0K
KwkJOzsKKwltbWl4KQorCQliYXNpY19tYWNoaW5lPW1taXgta251dGgKKwkJOzsKKwlyczYwMDAp
CisJCWJhc2ljX21hY2hpbmU9cnM2MDAwLWlibQorCQk7OworCXZheCkKKwkJYmFzaWNfbWFjaGlu
ZT12YXgtZGVjCisJCTs7CisJcGRwMTApCisJCSMgdGhlcmUgYXJlIG1hbnkgY2xvbmVzLCBzbyBE
RUMgaXMgbm90IGEgc2FmZSBiZXQKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC11bmtub3duCisJCTs7
CisJcGRwMTEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTEtZGVjCisJCTs7CisJd2UzMmspCisJCWJh
c2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRd
YWViIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQorCQliYXNpY19tYWNoaW5l
PXNoLXVua25vd24KKwkJOzsKKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIg
fCBzcGFyY3Y5dikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwljeWRyYSkKKwkJ
YmFzaWNfbWFjaGluZT1jeWRyYS1jeWRyb21lCisJCTs7CisJb3Jpb24pCisJCWJhc2ljX21hY2hp
bmU9b3Jpb24taGlnaGxldmVsCisJCTs7CisJb3Jpb24xMDUpCisJCWJhc2ljX21hY2hpbmU9Y2xp
cHBlci1oaWdobGV2ZWwKKwkJOzsKKwltYWMgfCBtcHcgfCBtYWMtbXB3KQorCQliYXNpY19tYWNo
aW5lPW02OGstYXBwbGUKKwkJOzsKKwlwbWFjIHwgcG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9
cG93ZXJwYy1hcHBsZQorCQk7OworCSotdW5rbm93bikKKwkJIyBNYWtlIHN1cmUgdG8gbWF0Y2gg
YW4gYWxyZWFkeS1jYW5vbmljYWxpemVkIG1hY2hpbmUgbmFtZS4KKwkJOzsKKwkqKQorCQllY2hv
IEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IG1hY2hpbmUgXGAkYmFzaWNfbWFjaGluZVwn
IG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7Citlc2FjCisKKyMgSGVyZSB3ZSBj
YW5vbmljYWxpemUgY2VydGFpbiBhbGlhc2VzIGZvciBtYW51ZmFjdHVyZXJzLgorY2FzZSAkYmFz
aWNfbWFjaGluZSBpbgorCSotZGlnaXRhbCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2lj
X21hY2hpbmUgfCBzZWQgJ3MvZGlnaXRhbC4qL2RlYy8nYAorCQk7OworCSotY29tbW9kb3JlKikK
KwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9jb21tb2RvcmUu
Ki9jYm0vJ2AKKwkJOzsKKwkqKQorCQk7OworZXNhYworCisjIERlY29kZSBtYW51ZmFjdHVyZXIt
c3BlY2lmaWMgYWxpYXNlcyBmb3IgY2VydGFpbiBvcGVyYXRpbmcgc3lzdGVtcy4KKworaWYgWyB4
IiRvcyIgIT0geCIiIF0KK3RoZW4KK2Nhc2UgJG9zIGluCisgICAgICAgICMgRmlyc3QgbWF0Y2gg
c29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCisgICAgICAgICMgdGhhdCBtaWdodCBnZXQgY29uZnVz
ZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0
ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisgICAgICAgIC1hdXJvcmF1eCkKKwkg
ICAgICAgIG9zPS1hdXJvcmF1eAorCQk7OworCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQorCQlv
cz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCisJCTs7CisJLXNvbGFy
aXMpCisJCW9zPS1zb2xhcmlzMgorCQk7OworCS1zdnI0KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJ
LXVuaXh3YXJlKikKKwkJb3M9LXN5c3Y0LjJ1dworCQk7OworCS1nbnUvbGludXgqKQorCQlvcz1g
ZWNobyAkb3MgfCBzZWQgLWUgJ3N8Z251L2xpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCSMgRmly
c3QgYWNjZXB0IHRoZSBiYXNpYyBzeXN0ZW0gdHlwZXMuCisJIyBUaGUgcG9ydGFibGUgc3lzdGVt
cyBjb21lcyBmaXJzdC4KKwkjIEVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gQSAqLCB0byBt
YXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQg
Y29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KKwktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1p
bml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCisJICAgICAgfCAtKnZtcyogfCAt
c2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1sz
NF0qXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCog
fCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJp
cyogXAorCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29z
KiB8IC11bmljb3MqIHwgLWFvZiogXAorCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAorCSAgICAg
IHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZz
KiBcCisJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1y
dHUqIHwgLXhlbml4KiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8
IC1taXJic2QqIHwgLW5ldGJzZCogXAorCSAgICAgIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBc
CisJICAgICAgfCAtZWtrb2JzZCogfCAta2ZyZWVic2QqIHwgLWZyZWVic2QqIHwgLXJpc2NpeCog
fCAtbHlueG9zKiBcCisJICAgICAgfCAtYm9zeCogfCAtbmV4dHN0ZXAqIHwgLWN4dXgqIHwgLWFv
dXQqIHwgLWVsZiogfCAtb2FiaSogXAorCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYq
IHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKKwkgICAgICB8IC11ZGkqIHwgLWVhYmkq
IHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKKwkgICAgICB8IC1jaG9ydXNv
cyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwg
LXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMy
KiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAg
ICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAorCSAgICAgIHwgLWludGVy
aXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBc
CisJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9u
c3RvcHV4KiBcCisJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwg
LXRvcHMyMCogfCAtaXRzKiBcCisJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAt
dWNsaW51eCogfCAtbnVjbGV1cyogXAorCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwg
LXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorCSAgICAgIHwgLXBvd2VybWF4KiB8
IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisJICAgICAgfCAt
c2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqKQor
CSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2
ZXJzaW9uIG51bWJlci4KKwkJOzsKKwktcW54KikKKwkJY2FzZSAkYmFzaWNfbWFjaGluZSBpbgor
CQkgICAgeDg2LSogfCBpKjg2LSopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1udG8kb3MKKwkJ
CTs7CisJCWVzYWMKKwkJOzsKKwktbnRvLXFueCopCisJCTs7CisJLW50byopCisJCW9zPWBlY2hv
ICRvcyB8IHNlZCAtZSAnc3xudG98bnRvLXFueHwnYAorCQk7OworCS1zaW0gfCAtZXMxODAwKiB8
IC1obXMqIHwgLXhyYXkgfCAtb3M2OGsqIHwgLW5vbmUqIHwgLXY4OHIqIFwKKwkgICAgICB8IC13
aW5kb3dzKiB8IC1vc3ggfCAtYWJ1ZyB8IC1uZXR3YXJlKiB8IC1vczkqIHwgLWJlb3MqIHwgLWhh
aWt1KiBcCisJICAgICAgfCAtbWFjb3MqIHwgLW1wdyogfCAtbWFnaWMqIHwgLW1taXh3YXJlKiB8
IC1tb245NjAqIHwgLWxuZXdzKikKKwkJOzsKKwktbWFjKikKKwkJb3M9YGVjaG8gJG9zIHwgc2Vk
IC1lICdzfG1hY3xtYWNvc3wnYAorCQk7OworCS1saW51eC1kaWV0bGliYykKKwkJb3M9LWxpbnV4
LWRpZXRsaWJjCisJCTs7CisJLWxpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGxp
bnV4fGxpbnV4LWdudXwnYAorCQk7OworCS1zdW5vczUqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQg
LWUgJ3N8c3Vub3M1fHNvbGFyaXMyfCdgCisJCTs7CisJLXN1bm9zNiopCisJCW9zPWBlY2hvICRv
cyB8IHNlZCAtZSAnc3xzdW5vczZ8c29sYXJpczN8J2AKKwkJOzsKKwktb3BlbmVkKikKKwkJb3M9
LW9wZW5lZGl0aW9uCisJCTs7CisgICAgICAgIC1vczQwMCopCisJCW9zPS1vczQwMAorCQk7Owor
CS13aW5jZSopCisJCW9zPS13aW5jZQorCQk7OworCS1vc2Zyb3NlKikKKwkJb3M9LW9zZnJvc2UK
KwkJOzsKKwktb3NmKikKKwkJb3M9LW9zZgorCQk7OworCS11dGVrKikKKwkJb3M9LWJzZAorCQk7
OworCS1keW5peCopCisJCW9zPS1ic2QKKwkJOzsKKwktYWNpcyopCisJCW9zPS1hb3MKKwkJOzsK
KwktYXRoZW9zKikKKwkJb3M9LWF0aGVvcworCQk7OworCS1zeWxsYWJsZSopCisJCW9zPS1zeWxs
YWJsZQorCQk7OworCS0zODZic2QpCisJCW9zPS1ic2QKKwkJOzsKKwktY3RpeCogfCAtdXRzKikK
KwkJb3M9LXN5c3YKKwkJOzsKKwktbm92YSopCisJCW9zPS1ydG1rLW5vdmEKKwkJOzsKKwktbnMy
ICkKKwkJb3M9LW5leHRzdGVwMgorCQk7OworCS1uc2sqKQorCQlvcz0tbnNrCisJCTs7CisJIyBQ
cmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIgb2Ygc2luaXg1LgorCS1zaW5peDUuKikKKwkJb3M9
YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNpbml4fHN5c3Z8J2AKKwkJOzsKKwktc2luaXgqKQorCQlv
cz0tc3lzdjQKKwkJOzsKKyAgICAgICAgLXRwZiopCisJCW9zPS10cGYKKwkJOzsKKwktdHJpdG9u
KikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJCW9zPS1zeXN2MworCQk7OworCS1zdnI0
KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN5c3Zy
NCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBhZnRlciAtc3lzdnI0Lgor
CS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9zZQorCQk7OworCS1lczE4MDAqKQorCQlv
cz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVuaXgKKwkJOzsKKwktKm1pbnQgfCAtbWlu
dFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQlvcz0tbWludAorCQk7OworCS1hcm9z
KikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJCW9zPS1rYW9zCisJCTs7CisJLXp2bW9l
KQorCQlvcz0tenZtb2UKKwkJOzsKKwktZGljb3MqKQorCQlvcz0tZGljb3MKKwkJOzsKKyAgICAg
ICAgLW5hY2wqKQorCSAgICAgICAgOzsKKwktbm9uZSkKKwkJOzsKKwkqKQorCQkjIEdldCByaWQg
b2YgdGhlIGAtJyBhdCB0aGUgYmVnaW5uaW5nIG9mICRvcy4KKwkJb3M9YGVjaG8gJG9zIHwgc2Vk
ICdzL1teLV0qLS8vJ2AKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBzeXN0
ZW0gXGAkb3NcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworZWxz
ZQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQg
Y29tZSB3aXRoIHZhcmlvdXMgbWFjaGluZXMuCisjIFRoZSB2YWx1ZSBzaG91bGQgYmUgd2hhdCB0
aGUgdmVuZG9yIGN1cnJlbnRseSBzaGlwcyBvdXQgdGhlIGRvb3Igd2l0aCB0aGVpcgorIyBtYWNo
aW5lIG9yIHB1dCBhbm90aGVyIHdheSwgdGhlIG1vc3QgcG9wdWxhciBvcyBwcm92aWRlZCB3aXRo
IHRoZSBtYWNoaW5lLgorCisjIE5vdGUgdGhhdCBpZiB5b3UncmUgZ29pbmcgdG8gdHJ5IHRvIG1h
dGNoICItTUFOVUZBQ1RVUkVSIiBoZXJlIChzYXksCisjICItc3VuIiksIHRoZW4geW91IGhhdmUg
dG8gdGVsbCB0aGUgY2FzZSBzdGF0ZW1lbnQgdXAgdG93YXJkcyB0aGUgdG9wCisjIHRoYXQgTUFO
VUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZyBzeXN0ZW0uICBPdGhlcndpc2UsIGNvZGUgYWJv
dmUKKyMgd2lsbCBzaWduYWwgYW4gZXJyb3Igc2F5aW5nIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0
IGFuIG9wZXJhdGluZworIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2lu
dC4KKworY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorICAgICAgICBzY29yZS0qKQorCQlvcz0tZWxm
CisJCTs7CisgICAgICAgIHNwdS0qKQorCQlvcz0tZWxmCisJCTs7CisJKi1hY29ybikKKwkJb3M9
LXJpc2NpeDEuMgorCQk7OworCWFybSotcmViZWwpCisJCW9zPS1saW51eAorCQk7OworCWFybSot
c2VtaSkKKwkJb3M9LWFvdXQKKwkJOzsKKyAgICAgICAgYzR4LSogfCB0aWM0eC0qKQorICAgICAg
ICAJb3M9LWNvZmYKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50
cnkuCisJcGRwMTAtKikKKwkJb3M9LXRvcHMyMAorCQk7OworCXBkcDExLSopCisJCW9zPS1ub25l
CisJCTs7CisJKi1kZWMgfCB2YXgtKikKKwkJb3M9LXVsdHJpeDQuMgorCQk7OworCW02OCotYXBv
bGxvKQorCQlvcz0tZG9tYWluCisJCTs7CisJaTM4Ni1zdW4pCisJCW9zPS1zdW5vczQuMC4yCisJ
CTs7CisJbTY4MDAwLXN1bikKKwkJb3M9LXN1bm9zMworCQkjIFRoaXMgYWxzbyBleGlzdHMgaW4g
dGhlIGNvbmZpZ3VyZSBwcm9ncmFtLCBidXQgd2FzIG5vdCB0aGUKKwkJIyBkZWZhdWx0LgorCQkj
IG9zPS1zdW5vczQKKwkJOzsKKwltNjgqLWNpc2NvKQorCQlvcz0tYW91dAorCQk7OworICAgICAg
ICBtZXAtKikKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLWNpc2NvKQorCQlvcz0tZWxmCisJCTs7
CisJbWlwcyotKikKKwkJb3M9LWVsZgorCQk7OworCW9yMzItKikKKwkJb3M9LWNvZmYKKwkJOzsK
KwkqLXR0aSkJIyBtdXN0IGJlIGJlZm9yZSBzcGFyYyBlbnRyeSBvciB3ZSBnZXQgdGhlIHdyb25n
IG9zLgorCQlvcz0tc3lzdjMKKwkJOzsKKwlzcGFyYy0qIHwgKi1zdW4pCisJCW9zPS1zdW5vczQu
MS4xCisJCTs7CisJKi1iZSkKKwkJb3M9LWJlb3MKKwkJOzsKKwkqLWhhaWt1KQorCQlvcz0taGFp
a3UKKwkJOzsKKwkqLWlibSkKKwkJb3M9LWFpeAorCQk7OworICAgIAkqLWtudXRoKQorCQlvcz0t
bW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkK
KwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkK
KwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0q
IHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQor
CQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJ
CW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNj
dXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkq
LW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJ
OzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7
CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJ
CTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJz
ZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4
CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlv
cz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhw
dgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNv
ZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9
LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdl
IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwg
YnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFj
dHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93
bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7
CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCopCisJ
CQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsK
KwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5k
b3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJ
CS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9y
PWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdl
bml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2
ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJ
CQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5k
b3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJ
dmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7Owor
CQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3Mq
KQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0q
TWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikK
KwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNo
byAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMK
KworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMg
ZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0
YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0t
JTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLXIgNWIyNjc2YWMxMzIx
IC1yIDZmZGUwMTdjNDE5ZSB0b29scy9jb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvY29uZmlndXJlCVR1ZSBKYW4gMTAgMTk6
MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDEwMTUzIEBACisjISAvYmluL3NoCisjIEd1ZXNz
IHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmls
ZXMuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42Ny4KKyMKKyMKKyMgQ29weXJpZ2h0
IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAx
LAorIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgorIworIworIyBUaGlzIGNvbmZpZ3Vy
ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgor
IyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2Rp
ZnkgaXQuCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTTRzaCBJbml0aWFsaXphdGlv
bi4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgQmUgbW9yZSBCb3VybmUgY29t
cGF0aWJsZQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAoraWYgdGVz
dCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYx
OyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAgIyBQcmUtNC4yIHZlcnNpb25z
IG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCisgICMgaXMgY29u
dHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCisgIGFsaWFzIC1nICck
ezErIiRAIn0nPSciJEAiJworICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZWxzZQorICBjYXNlIGAo
c2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygKKyAgKnBvc2l4KikgOgorICAgIHNldCAtbyBwb3Np
eCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorCisKK2FzX25sPScKKycKK2V4cG9y
dCBhc19ubAorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3Iv
YmluL3ByaW50Zi4KK2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFwnCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFz
X2VjaG8KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRh
c19lY2hvCisjIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJp
bnRmIHByb2dyYW0gb24gU29sYXJpcywKKyMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3Ig
YmFzaCBvciB6c2guCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcCisg
ICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9k
ZXYvbnVsbDsgdGhlbgorICBhc19lY2hvPSdwcmludCAtciAtLScKKyAgYXNfZWNob19uPSdwcmlu
dCAtcm4gLS0nCitlbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNo
byIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50ZiAlc1xuJworICBhc19lY2hv
X249J3ByaW50ZiAlcycKK2Vsc2UKKyAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAk
YXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuCisgICAgYXNfZWNo
b19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicKKyAgICBhc19lY2hvX249
Jy91c3IvdWNiL2VjaG8gLW4nCisgIGVsc2UKKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAi
WCQxIiA6ICJYXFwoLipcXCkiJworICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCisgICAgICBhcmc9
JDE7CisgICAgICBjYXNlICRhcmcgaW4gIygKKyAgICAgICoiJGFzX25sIiopCisJZXhwciAiWCRh
cmciIDogIlhcXCguKlxcKSRhc19ubCI7CisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxc
XCguKlxcKSJgOzsKKyAgICAgIGVzYWM7CisgICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwp
IiB8IHRyIC1kICIkYXNfbmwiCisgICAgJworICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQorICAg
IGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCisgIGZpCisgIGV4cG9y
dCBhc19lY2hvX2JvZHkKKyAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJwor
ZmkKKworIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJB
VE9SK3NldH0iICE9IHNldDsgdGhlbgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmlu
Oy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKKyAgICAo
UEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8
fAorICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCisgIH0KK2ZpCisKKworIyBJRlMKKyMgV2UgbmVl
ZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90
aW5nIGlzCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0
IHNwYWNlLXRhYi4KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5z
ZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAorIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8g
ZW1wdHkgdmFsdWUuKQorSUZTPSIgIiIJJGFzX25sIgorCisjIEZpbmQgd2hvIHdlIGFyZS4gIExv
b2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorY2Fz
ZSAkMCBpbiAjKCgKKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OworICAqKSBhc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ
RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgdGVz
dCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCisgICAgIDs7Citlc2FjCisjIFdlIGRpZCBub3QgZmluZCBv
dXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCisjIGlu
IHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KK2lmIHRlc3Qg
IngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KKyAgYXNfbXlzZWxmPSQwCitmaQoraWYgdGVzdCAhIC1m
ICIkYXNfbXlzZWxmIjsgdGhlbgorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5v
dCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgorICBl
eGl0IDEKK2ZpCisKKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdo
aWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90
IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIKKyMgc3VwcHJlc3NlcyBh
bnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKKyMgdHJp
Z2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCitmb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBN
QUlMIE1BSUxQQVRICitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAorICAm
JiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAk
YXNfdmFyIHx8IDoKK2RvbmUKK1BTMT0nJCAnCitQUzI9Jz4gJworUFM0PScrICcKKworIyBOTFMg
bnVpc2FuY2VzLgorTENfQUxMPUMKK2V4cG9ydCBMQ19BTEwKK0xBTkdVQUdFPUMKK2V4cG9ydCBM
QU5HVUFHRQorCisjIENEUEFUSC4KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1
bnNldCBDRFBBVEgKKworaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhlbgorICBhc19i
b3VybmVfY29tcGF0aWJsZT0iaWYgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cIiAmJiAo
ZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxM
Q01EPToKKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiBc
JHsxK1wiXCRAXCJ9LCB3aGljaAorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2Fi
bGUgdGhpcyBmZWF0dXJlLgorICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCisg
IHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVs
bFxgIGluICMoCisgICpwb3NpeCopIDoKKyAgICBzZXQgLW8gcG9zaXggOzsgIygKKyAgKikgOgor
ICAgICA7OworZXNhYworZmkKKyIKKyAgYXNfcmVxdWlyZWQ9ImFzX2ZuX3JldHVybiAoKSB7IChl
eGl0IFwkMSk7IH0KK2FzX2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQorYXNfZm5f
ZmFpbHVyZSAoKSB7IGFzX2ZuX3JldHVybiAxOyB9Cithc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJl
dHVybiAwOyB9Cithc19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9CisKK2V4aXRjb2Rl
PTAKK2FzX2ZuX3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFp
bGVkLjsgfQorYXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVy
ZSBzdWNjZWVkZWQuOyB9Cithc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8g
YXNfZm5fcmV0X3N1Y2Nlc3MgZmFpbGVkLjsgfQorYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0
Y29kZT0xOyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KK2lmICggc2V0IHg7
IGFzX2ZuX3JldF9zdWNjZXNzIHkgJiYgdGVzdCB4ID0gXCJcJDFcIiApOyB0aGVuIDoKKworZWxz
ZQorICBleGl0Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3ZXJlIG5vdCBzYXZl
ZC4KK2ZpCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxIgorICBhc19zdWdnZXN0ZWQ9
IiAgYXNfbGluZW5vXzE9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3Vn
Z2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18xYT1cJExJTkVOTworICBhc19saW5lbm9f
Mj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1
Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCisgIGV2YWwgJ3Rlc3QgXCJ4XCRhc19saW5l
bm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmCisgIHRl
c3QgXCJ4XGBleHByIFwkYXNfbGluZW5vXzEnXCRhc19ydW4nICsgMVxgXCIgPSBcInhcJGFzX2xp
bmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEKK3Rlc3QgXCQoKCAxICsgMSApKSA9IDIgfHwg
ZXhpdCAxIgorICBpZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikgMj4vZGV2L251bGw7IHRoZW4gOgor
ICBhc19oYXZlX3JlcXVpcmVkPXllcworZWxzZQorICBhc19oYXZlX3JlcXVpcmVkPW5vCitmaQor
ICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMgJiYgKGV2YWwgIiRhc19zdWdnZXN0
ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisKK2Vsc2UKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorYXNfZm91bmQ9ZmFsc2UKK2ZvciBhc19kaXIgaW4gL2JpbiRQQVRI
X1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2
ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgYXNfZm91bmQ9OgorICBj
YXNlICRhc19kaXIgaW4gIygKKwkgLyopCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2gg
c2g1OyBkbworCSAgICAgIyBUcnkgb25seSBzaGVsbHMgdGhhdCBleGlzdCwgdG8gc2F2ZSBzZXZl
cmFsIGZvcmtzLgorCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQorCSAgICAgaWYgeyB0
ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmCisJCSAg
ICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1aXJlZCIgfCBhc19y
dW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIENPTkZJR19TSEVMTD0k
YXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKKwkJICAgaWYgeyAkYXNfZWNobyAiJGFzX2Jv
dXJuZV9jb21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9
IDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgYnJlYWsgMgorZmkKK2ZpCisJICAgZG9uZTs7CisgICAg
ICAgZXNhYworICBhc19mb3VuZD1mYWxzZQorZG9uZQorJGFzX2ZvdW5kIHx8IHsgaWYgeyB0ZXN0
IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRTSEVMTC5leGUiOyB9ICYmCisJICAgICAgeyAkYXNf
ZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRT
SEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgorICBDT05GSUdfU0hFTEw9JFNIRUxMIGFzX2hh
dmVfcmVxdWlyZWQ9eWVzCitmaTsgfQorSUZTPSRhc19zYXZlX0lGUworCisKKyAgICAgIGlmIHRl
c3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoKKyAgIyBXZSBjYW5ub3QgeWV0IGFzc3Vt
ZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKKwkjIG5ldXRyYWxpemF0
aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbworCSMgd29y
a3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMu
CisJQkFTSF9FTlY9L2Rldi9udWxsCisJRU5WPS9kZXYvbnVsbAorCSh1bnNldCBCQVNIX0VOVikg
Pi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgorCWV4cG9ydCBDT05GSUdfU0hF
TEwKKwlleGVjICIkQ09ORklHX1NIRUxMIiAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CitmaQorCisg
ICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4bm87IHRoZW4gOgorICAkYXNfZWNobyAi
JDA6IFRoaXMgc2NyaXB0IHJlcXVpcmVzIGEgc2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiCisg
ICRhc19lY2hvICIkMDogdGhlIHNoZWxscyB0aGF0IEkgZm91bmQgb24geW91ciBzeXN0ZW0uIgor
ICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9OK3NldH0gPSB4c2V0IDsgdGhlbgorICAgICRhc19lY2hv
ICIkMDogSW4gcGFydGljdWxhciwgenNoICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxk
IgorICAgICRhc19lY2hvICIkMDogYmUgdXBncmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiIK
KyAgZWxzZQorICAgICRhc19lY2hvICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5v
cmcgYWJvdXQgeW91ciBzeXN0ZW0sCiskMDogaW5jbHVkaW5nIGFueSBlcnJvciBwb3NzaWJseSBv
dXRwdXQgYmVmb3JlIHRoaXMKKyQwOiBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hl
bGwsIG9yIG1hbnVhbGx5IHJ1bgorJDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlm
IHlvdSBkbyBoYXZlIG9uZS4iCisgIGZpCisgIGV4aXQgMQorZmkKK2ZpCitmaQorU0hFTEw9JHtD
T05GSUdfU0hFTEwtL2Jpbi9zaH0KK2V4cG9ydCBTSEVMTAorIyBVbnNldCBtb3JlIHZhcmlhYmxl
cyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9vbHMuCitDTElD
T0xPUl9GT1JDRT0gR1JFUF9PUFRJT05TPQordW5zZXQgQ0xJQ09MT1JfRk9SQ0UgR1JFUF9PUFRJ
T05TCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTTRzaCBTaGVsbCBGdW5jdGlv
bnMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMgYXNfZm5fdW5zZXQgVkFSCisj
IC0tLS0tLS0tLS0tLS0tLQorIyBQb3J0YWJseSB1bnNldCBWQVIuCithc19mbl91bnNldCAoKQor
eworICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9Cit9Cithc191bnNldD1hc19mbl91bnNldAorCisj
IGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNl
dCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KK2FzX2ZuX3NldF9zdGF0dXMgKCkKK3sK
KyAgcmV0dXJuICQxCit9ICMgYXNfZm5fc2V0X3N0YXR1cworCisjIGFzX2ZuX2V4aXQgU1RBVFVT
CisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVTLCBldmVu
IGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4KK2FzX2ZuX2V4aXQgKCkKK3sKKyAg
c2V0ICtlCisgIGFzX2ZuX3NldF9zdGF0dXMgJDEKKyAgZXhpdCAkMQorfSAjIGFzX2ZuX2V4aXQK
KworIyBhc19mbl9ta2Rpcl9wCisjIC0tLS0tLS0tLS0tLS0KKyMgQ3JlYXRlICIkYXNfZGlyIiBh
cyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgorYXNfZm5fbWtk
aXJfcCAoKQoreworCisgIGNhc2UgJGFzX2RpciBpbiAjKAorICAtKikgYXNfZGlyPS4vJGFzX2Rp
cjs7CisgIGVzYWMKKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7
CisgICAgYXNfZGlycz0KKyAgICB3aGlsZSA6OyBkbworICAgICAgY2FzZSAkYXNfZGlyIGluICMo
CisgICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxc
XFxcXFwnJy9nImA7OyAjJygKKyAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7CisgICAgICBlc2Fj
CisgICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgorICAgICAgYXNfZGlyPWAkYXNf
ZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9d
XCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwg
XAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoL1wp
JyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhc19kaXIiIHwKKyAgICBzZWQgJy9e
WFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAg
fQorCSAgL15YXChcL1wvXClbXi9dLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAg
L15YXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cKS4q
L3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorICAgICAgdGVz
dCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKKyAgICBkb25lCisgICAgdGVzdCAteiAiJGFzX2RpcnMi
IHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgorICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFz
X2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgorCisKK30gIyBh
c19mbl9ta2Rpcl9wCisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBBcHBlbmQgdGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVm
aW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBUYWtlCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwg
b3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXIKKyMg
cmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3Ro
IHByZXNlbnQgaW4gbmFpdmUKKyMgaW1wbGVtZW50YXRpb25zLgoraWYgKGV2YWwgImFzX3Zhcj0x
OyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOgor
ICBldmFsICdhc19mbl9hcHBlbmQgKCkKKyAgeworICAgIGV2YWwgJDErPVwkMgorICB9JworZWxz
ZQorICBhc19mbl9hcHBlbmQgKCkKKyAgeworICAgIGV2YWwgJDE9XCQkMVwkMgorICB9CitmaSAj
IGFzX2ZuX2FwcGVuZAorCisjIGFzX2ZuX2FyaXRoIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0t
LS0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9y
ZSB0aGUgcmVzdWx0IGluIHRoZQorIyBnbG9iYWwgJGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Yg
c2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUgYXJndW1lbnRzCisjIG11c3QgYmUgcG9y
dGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSAp
KSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpCisgIHsK
KyAgICBhc192YWw9JCgoICQqICkpCisgIH0nCitlbHNlCisgIGFzX2ZuX2FyaXRoICgpCisgIHsK
KyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYAorICB9CitmaSAjIGFzX2Zu
X2FyaXRoCisKKworIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT3V0cHV0ICJgYmFz
ZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQg
YXJlCisjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVu
Y2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAx
IGlmIHRoYXQgd2FzIDAuCithc19mbl9lcnJvciAoKQoreworICBhc19zdGF0dXM9JDE7IHRlc3Qg
JGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7IHRoZW4KKyAg
ICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19z
dGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CisgIGZpCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9y
OiAkMiIgPiYyCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cworfSAjIGFzX2ZuX2Vycm9yCisKK2lm
IGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmCisgICB0ZXN0ICJYYGV4cHIgMDAw
MDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhlbgorICBhc19leHByPWV4cHIKK2Vsc2UKKyAg
YXNfZXhwcj1mYWxzZQorZmkKKworaWYgKGJhc2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAm
JiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgvIjsgdGhlbgorICBhc19iYXNlbmFt
ZT1iYXNlbmFtZQorZWxzZQorICBhc19iYXNlbmFtZT1mYWxzZQorZmkKKworaWYgKGFzX2Rpcj1g
ZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0
aGVuCisgIGFzX2Rpcm5hbWU9ZGlybmFtZQorZWxzZQorICBhc19kaXJuYW1lPWZhbHNlCitmaQor
Cithc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIgfHwKKyRhc19leHByIFgvIiQwIiA6ICcuKi9c
KFteL11bXi9dKlwpLyokJyBcfCBcCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJDAi
IDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWC8iJDAiIHwKKyAgICBz
ZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0K
KwkgIC9eWFwvXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwv
XChcL1wpLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisK
KyMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KK2FzX2NyX2xldHRlcnM9
J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JworYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVonCithc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRF
UlMKK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJz
JGFzX2NyX2RpZ2l0cworCisKKyAgYXNfbGluZW5vXzE9JExJTkVOTyBhc19saW5lbm9fMWE9JExJ
TkVOTworICBhc19saW5lbm9fMj0kTElORU5PIGFzX2xpbmVub18yYT0kTElORU5PCisgIGV2YWwg
J3Rlc3QgIngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4n
IiAmJgorICB0ZXN0ICJ4YGV4cHIgJGFzX2xpbmVub18xJyRhc19ydW4nICsgMWAiID0gIngkYXNf
bGluZW5vXzInJGFzX3J1biciJyB8fCB7CisgICMgQmxhbWUgTGVlIEUuIE1jTWFob24gKDE5MzEt
MTk4OSkgZm9yIHNlZCdzIHN5bnRheC4gIDotKQorICBzZWQgLW4gJworICAgIHAKKyAgICAvWyRd
TElORU5PLz0KKyAgJyA8JGFzX215c2VsZiB8CisgICAgc2VkICcKKyAgICAgIHMvWyRdTElORU5P
LiovJi0vCisgICAgICB0IGxpbmVubworICAgICAgYgorICAgICAgOmxpbmVubworICAgICAgTgor
ICAgICAgOmxvb3AKKyAgICAgIHMvWyRdTElORU5PXChbXickYXNfY3JfYWxudW0nX10uKlxuXClc
KC4qXCkvXDJcMVwyLworICAgICAgdCBsb29wCisgICAgICBzLy1cbi4qLy8KKyAgICAnID4kYXNf
bWUubGluZW5vICYmCisgIGNobW9kICt4ICIkYXNfbWUubGluZW5vIiB8fAorICAgIHsgJGFzX2Vj
aG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0
aCBhIFBPU0lYIHNoZWxsIiA+JjI7IGFzX2ZuX2V4aXQgMTsgfQorCisgICMgRG9uJ3QgdHJ5IHRv
IGV4ZWMgYXMgaXQgY2hhbmdlcyAkWzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zCisg
ICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBm
aW5kIHRoZQorICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkg
c2Vuc2l0aXZlIHRvIHRoaXMpLgorICAuICIuLyRhc19tZS5saW5lbm8iCisgICMgRXhpdCBzdGF0
dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLgorICBleGl0Cit9CisKK0VDSE9fQz0gRUNI
T19OPSBFQ0hPX1Q9CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAorLW4qKQorICBjYXNlIGBl
Y2hvICd4eVxjJ2AgaW4KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRh
YiBjaGFyYWN0ZXIuCisgIHh5KSAgRUNIT19DPSdcYyc7OworICAqKSAgIGVjaG8gYGVjaG8ga3No
ODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCisgICAgICAgRUNIT19UPScJJzs7CisgIGVz
YWM7OworKikKKyAgRUNIT19OPSctbic7OworZXNhYworCitybSAtZiBjb25mJCQgY29uZiQkLmV4
ZSBjb25mJCQuZmlsZQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuCisgIHJtIC1mIGNvbmYk
JC5kaXIvY29uZiQkLmZpbGUKK2Vsc2UKKyAgcm0gLWYgY29uZiQkLmRpcgorICBta2RpciBjb25m
JCQuZGlyIDI+L2Rldi9udWxsCitmaQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVs
bDsgdGhlbgorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4K
KyAgICBhc19sbl9zPSdsbiAtcycKKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFz
OgorICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBk
aXInIGZhaWwuCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4gLXMn
IGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBo
YXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4KKyAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQu
ZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8CisgICAgICBhc19sbl9z
PSdjcCAtcCcKKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4K
KyAgICBhc19sbl9zPWxuCisgIGVsc2UKKyAgICBhc19sbl9zPSdjcCAtcCcKKyAgZmkKK2Vsc2UK
KyAgYXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRp
ci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQorcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAor
CitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX21rZGlyX3A9J21rZGlyIC1w
ICIkYXNfZGlyIicKK2Vsc2UKKyAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKKyAgYXNfbWtk
aXJfcD1mYWxzZQorZmkKKworaWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBh
c190ZXN0X3g9J3Rlc3QgLXgnCitlbHNlCisgIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsg
dGhlbgorICAgIGFzX2xzX0xfb3B0aW9uPUwKKyAgZWxzZQorICAgIGFzX2xzX0xfb3B0aW9uPQor
ICBmaQorICBhc190ZXN0X3g9JworICAgIGV2YWwgc2ggLWMgJ1wnJworICAgICAgaWYgdGVzdCAt
ZCAiJDEiOyB0aGVuCisJdGVzdCAtZCAiJDEvLiI7CisgICAgICBlbHNlCisJY2FzZSAkMSBpbiAj
KAorCS0qKXNldCAiLi8kMSI7OworCWVzYWM7CisJY2FzZSBgbHMgLWxkJyRhc19sc19MX29wdGlv
bicgIiQxIiAyPi9kZXYvbnVsbGAgaW4gIygoCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztm
aQorICAgICdcJycgc2gKKyAgJworZmkKK2FzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94CisKKyMg
U2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KK2Fz
X3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVb
Xl8kYXNfY3JfYWxudW1dJV8lZyciCisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5n
IG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBw
JTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKKworCit0ZXN0IC1uICIkREpESVIiIHx8IGV4ZWMg
NzwmMCA8L2Rldi9udWxsCitleGVjIDY+JjEKKworIyBOYW1lIG9mIHRoZSBob3N0LgorIyBob3N0
bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgb2xkIEdOVS9MaW51eCkgcmV0dXJucyBhIGJv
Z3VzIGV4aXQgc3RhdHVzLAorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCithY19ob3N0bmFtZT1g
KGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKworIworIyBJbml0
aWFsaXphdGlvbnMuCisjCithY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsCithY19jbGVhbl9m
aWxlcz0KK2FjX2NvbmZpZ19saWJvYmpfZGlyPS4KK0xJQk9CSlM9Citjcm9zc19jb21waWxpbmc9
bm8KK3N1YmRpcnM9CitNRkxBR1M9CitNQUtFRkxBR1M9CisKKyMgSWRlbnRpdHkgb2YgdGhpcyBw
YWNrYWdlLgorUEFDS0FHRV9OQU1FPQorUEFDS0FHRV9UQVJOQU1FPQorUEFDS0FHRV9WRVJTSU9O
PQorUEFDS0FHRV9TVFJJTkc9CitQQUNLQUdFX0JVR1JFUE9SVD0KK1BBQ0tBR0VfVVJMPQorCith
Y191bmlxdWVfZmlsZT0iWGVuIEh5cGVydmlzb3IiCithY191bmlxdWVfZmlsZT0ibGlieGwvbGli
eGwuYyIKK2FjX2RlZmF1bHRfcHJlZml4PS91c3IKKyMgRmFjdG9yaW5nIGRlZmF1bHQgaGVhZGVy
cyBmb3IgbW9zdCB0ZXN0cy4KK2FjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKKyNpbmNsdWRlIDxzdGRp
by5oPgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
ZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNl
bmRpZgorI2lmZGVmIFNURENfSEVBREVSUworIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVk
ZSA8c3RkZGVmLmg+CisjZWxzZQorIyBpZmRlZiBIQVZFX1NURExJQl9ICisjICBpbmNsdWRlIDxz
dGRsaWIuaD4KKyMgZW5kaWYKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1RSSU5HX0gKKyMgaWYgIWRl
ZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllfSAorIyAgaW5jbHVkZSA8
bWVtb3J5Lmg+CisjIGVuZGlmCisjIGluY2x1ZGUgPHN0cmluZy5oPgorI2VuZGlmCisjaWZkZWYg
SEFWRV9TVFJJTkdTX0gKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaWZkZWYgSEFW
RV9JTlRUWVBFU19ICisjIGluY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZF
X1NURElOVF9ICisjIGluY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklT
VERfSAorIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZiIKKworYWNfaGVhZGVyX2xpc3Q9Cith
Y19mdW5jX2xpc3Q9CithY19zdWJzdF92YXJzPSdMVExJQk9CSlMKK1BPV19MSUIKK0xJQk9CSlMK
K0FMTE9DQQorbGliaWNvbnYKK2xpYmdjcnlwdAorbGliZXh0MmZzCitzeXN0ZW1fYWlvCitMSUJf
UEFUSAorVk5DT05GSUcKK0hPVFBMVUcKK1VERVZJTkZPCitVREVWQURNCitQWVRIT05QQVRICitP
Q0FNTEJVSUxECitPQ0FNTERPQworT0NBTUxNS0xJQgorT0NBTUxNS1RPUAorT0NBTUxERVAKK09D
QU1MCitPQ0FNTE9QVERPVE9QVAorT0NBTUxDRE9UT1BUCitPQ0FNTEJFU1QKK09DQU1MT1BUCitP
Q0FNTExJQgorT0NBTUxWRVJTSU9OCitPQ0FNTEMKK0lOU1RBTExfREFUQQorSU5TVEFMTF9TQ1JJ
UFQKK0lOU1RBTExfUFJPR1JBTQorU0VUX01BS0UKK0xOX1MKK1NFRAorWEdFVFRFWFQKK0JBU0gK
K1hNTAorQ1VSTAorRkxFWAorQklTT04KK0lQCitCUkNUTAorUEVSTAorUFlUSE9OCitBUFBFTkRf
TElCCitBUFBFTkRfSU5DTFVERVMKK1BSRVBFTkRfTElCCitQUkVQRU5EX0lOQ0xVREVTCitkZWJ1
ZworbG9tb3VudAorbWluaXRlcm0KK29jYW1sdG9vbHMKK3B5dGhvbnRvb2xzCit4YXBpCit2dHBt
Cittb25pdG9ycworZ2l0aHR0cAoreHNtCitob3N0X29zCitob3N0X3ZlbmRvcgoraG9zdF9jcHUK
K2hvc3QKK2J1aWxkX29zCitidWlsZF92ZW5kb3IKK2J1aWxkX2NwdQorYnVpbGQKK0VHUkVQCitH
UkVQCitDUFAKK09CSkVYVAorRVhFRVhUCithY19jdF9DQworQ1BQRkxBR1MKK0xERkxBR1MKK0NG
TEFHUworQ0MKK3RhcmdldF9hbGlhcworaG9zdF9hbGlhcworYnVpbGRfYWxpYXMKK0xJQlMKK0VD
SE9fVAorRUNIT19OCitFQ0hPX0MKK0RFRlMKK21hbmRpcgorbG9jYWxlZGlyCitsaWJkaXIKK3Bz
ZGlyCitwZGZkaXIKK2R2aWRpcgoraHRtbGRpcgoraW5mb2RpcgorZG9jZGlyCitvbGRpbmNsdWRl
ZGlyCitpbmNsdWRlZGlyCitsb2NhbHN0YXRlZGlyCitzaGFyZWRzdGF0ZWRpcgorc3lzY29uZmRp
cgorZGF0YWRpcgorZGF0YXJvb3RkaXIKK2xpYmV4ZWNkaXIKK3NiaW5kaXIKK2JpbmRpcgorcHJv
Z3JhbV90cmFuc2Zvcm1fbmFtZQorcHJlZml4CitleGVjX3ByZWZpeAorUEFDS0FHRV9VUkwKK1BB
Q0tBR0VfQlVHUkVQT1JUCitQQUNLQUdFX1NUUklORworUEFDS0FHRV9WRVJTSU9OCitQQUNLQUdF
X1RBUk5BTUUKK1BBQ0tBR0VfTkFNRQorUEFUSF9TRVBBUkFUT1IKK1NIRUxMJworYWNfc3Vic3Rf
ZmlsZXM9JycKK2FjX3VzZXJfb3B0cz0nCitlbmFibGVfb3B0aW9uX2NoZWNraW5nCitlbmFibGVf
eHNtCitlbmFibGVfZ2l0aHR0cAorZW5hYmxlX21vbml0b3JzCitlbmFibGVfdnRwbQorZW5hYmxl
X3hhcGkKK2VuYWJsZV9weXRob250b29scworZW5hYmxlX29jYW1sdG9vbHMKK2VuYWJsZV9taW5p
dGVybQorZW5hYmxlX2xvbW91bnQKK2VuYWJsZV9kZWJ1ZworJworICAgICAgYWNfcHJlY2lvdXNf
dmFycz0nYnVpbGRfYWxpYXMKK2hvc3RfYWxpYXMKK3RhcmdldF9hbGlhcworQ0MKK0NGTEFHUwor
TERGTEFHUworTElCUworQ1BQRkxBR1MKK0NQUAorUFJFUEVORF9JTkNMVURFUworUFJFUEVORF9M
SUIKK0FQUEVORF9JTkNMVURFUworQVBQRU5EX0xJQgorUFlUSE9OCitQRVJMCitCUkNUTAorSVAK
K0JJU09OCitGTEVYCitDVVJMCitYTUwKK0JBU0gKK1hHRVRURVhUJworCisKKyMgSW5pdGlhbGl6
ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9ucy4KK2FjX2luaXRfaGVscD0KK2FjX2luaXRf
dmVyc2lvbj1mYWxzZQorYWNfdW5yZWNvZ25pemVkX29wdHM9CithY191bnJlY29nbml6ZWRfc2Vw
PQorIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdp
dGgKKyMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KK2NhY2hlX2ZpbGU9L2Rldi9udWxs
CitleGVjX3ByZWZpeD1OT05FCitub19jcmVhdGU9Citub19yZWN1cnNpb249CitwcmVmaXg9Tk9O
RQorcHJvZ3JhbV9wcmVmaXg9Tk9ORQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQorcHJvZ3JhbV90cmFu
c2Zvcm1fbmFtZT1zLHgseCwKK3NpbGVudD0KK3NpdGU9CitzcmNkaXI9Cit2ZXJib3NlPQoreF9p
bmNsdWRlcz1OT05FCit4X2xpYnJhcmllcz1OT05FCisKKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9y
eSBvcHRpb25zLgorIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFr
ZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCisjIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0
IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAorIyBieSBkZWZhdWx0IHdp
bGwgYWN0dWFsbHkgY2hhbmdlLgorIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1
c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KKyMgKFRoZSBsaXN0IGZvbGxvd3Mg
dGhlIHNhbWUgb3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzLikKK2JpbmRpcj0nJHtl
eGVjX3ByZWZpeH0vYmluJworc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKK2xpYmV4ZWNk
aXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJl
JworZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCitzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwor
c2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0v
dmFyJworaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCitvbGRpbmNsdWRlZGlyPScvdXNy
L2luY2x1ZGUnCitkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0V9JworaW5mb2Rp
cj0nJHtkYXRhcm9vdGRpcn0vaW5mbycKK2h0bWxkaXI9JyR7ZG9jZGlyfScKK2R2aWRpcj0nJHtk
b2NkaXJ9JworcGRmZGlyPScke2RvY2Rpcn0nCitwc2Rpcj0nJHtkb2NkaXJ9JworbGliZGlyPSck
e2V4ZWNfcHJlZml4fS9saWInCitsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScKK21h
bmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJworCithY19wcmV2PQorYWNfZGFzaGRhc2g9Citmb3Ig
YWNfb3B0aW9uCitkbworICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1l
bnQsIGFzc2lnbiBpdC4KKyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgICAgZXZhbCAk
YWNfcHJldj1cJGFjX29wdGlvbgorICAgIGFjX3ByZXY9CisgICAgY29udGludWUKKyAgZmkKKwor
ICBjYXNlICRhY19vcHRpb24gaW4KKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlv
biIgOiAnW149XSo9XCguKlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7OworICAqKSAgICBh
Y19vcHRhcmc9eWVzIDs7CisgIGVzYWMKKworICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251
cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgorCisgIGNhc2Ug
JGFjX2Rhc2hkYXNoJGFjX29wdGlvbiBpbgorICAtLSkKKyAgICBhY19kYXNoZGFzaD15ZXMgOzsK
KworICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJp
KQorICAgIGFjX3ByZXY9YmluZGlyIDs7CisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJp
bmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSogfCAtLWJpPSopCisgICAgYmluZGlyPSRhY19vcHRh
cmcgOzsKKworICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQorICAg
IGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsKKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9
KiB8IC0tYnVpPSogfCAtLWJ1PSopCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OworCisg
IC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwK
KyAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0t
Y2EgfCAtLWMpCisgICAgYWNfcHJldj1jYWNoZV9maWxlIDs7CisgIC1jYWNoZS1maWxlPSogfCAt
LWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAorICB8IC0tY2Fj
aGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0t
Y2E9KiB8IC0tYz0qKQorICAgIGNhY2hlX2ZpbGU9JGFjX29wdGFyZyA7OworCisgIC0tY29uZmln
LWNhY2hlIHwgLUMpCisgICAgY2FjaGVfZmlsZT1jb25maWcuY2FjaGUgOzsKKworICAtZGF0YWRp
ciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCkKKyAgICBhY19wcmV2PWRhdGFkaXIg
OzsKKyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikK
KyAgICBkYXRhZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290
ZGlyIHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwKKyAgfCAtLWRh
dGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpCisgICAgYWNfcHJldj1kYXRhcm9vdGRpciA7Owor
ICAtZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1k
YXRhcm9vdGQ9KiBcCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAtLWRhdGFybz0q
IHwgLS1kYXRhcj0qKQorICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGlzYWJs
ZS0qIHwgLS1kaXNhYmxlLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDog
J3gtKmRpc2FibGUtXCguKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFs
aWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlte
LSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJp
bnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRh
Y191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAn
cy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFi
bGVfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIk
YWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZGlzYWJsZS0kYWNfdXNl
cm9wdF9vcmlnIgorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OworICAgIGVzYWMKKyAgICBl
dmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1ubyA7OworCisgIC1kb2NkaXIgfCAtLWRvY2RpciB8IC0t
ZG9jZGkgfCAtLWRvYyB8IC0tZG8pCisgICAgYWNfcHJldj1kb2NkaXIgOzsKKyAgLWRvY2Rpcj0q
IHwgLS1kb2NkaXI9KiB8IC0tZG9jZGk9KiB8IC0tZG9jPSogfCAtLWRvPSopCisgICAgZG9jZGly
PSRhY19vcHRhcmcgOzsKKworICAtZHZpZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlk
IHwgLS1kdmkgfCAtLWR2KQorICAgIGFjX3ByZXY9ZHZpZGlyIDs7CisgIC1kdmlkaXI9KiB8IC0t
ZHZpZGlyPSogfCAtLWR2aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZpPSogfCAtLWR2PSopCisgICAg
ZHZpZGlyPSRhY19vcHRhcmcgOzsKKworICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQorICAgIGFj
X3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKKyAg
ICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMu
CisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2
L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFj
X3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9w
dD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2Ug
JGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQiCisiKikgOzsK
KyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNf
dW5yZWNvZ25pemVkX3NlcC0tZW5hYmxlLSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2du
aXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PVwk
YWNfb3B0YXJnIDs7CisKKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1w
cmVmaXggfCAtLWV4ZWMtcHJlZmkgXAorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0t
ZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4
KQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsKKyAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNf
cHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCisgIHwgLS1leGVj
LXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhl
Yy09KiBcCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorICAgIGV4ZWNfcHJlZml4
PSRhY19vcHRhcmcgOzsKKworICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQorICAgICMgT2Jz
b2xldGU7IHVzZSAtLXdpdGgtZ2FzLgorICAgIHdpdGhfZ2FzPXllcyA7OworCisgIC1oZWxwIHwg
LS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKKyAg
LWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIqKQorICAgIGFj
X2luaXRfaGVscD1yZWN1cnNpdmUgOzsKKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1z
KiB8IC0taGU9cyogfCAtaHMqKQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7OworCisgIC1ob3N0
IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQorICAgIGFjX3ByZXY9aG9zdF9hbGlhcyA7OworICAt
aG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQorICAgIGhvc3RfYWxpYXM9JGFj
X29wdGFyZyA7OworCisgIC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1odG1sZGkgfCAtLWh0bWxk
IHwgLS1odG1sIHwgLS1odG0gfCAtLWh0KQorICAgIGFjX3ByZXY9aHRtbGRpciA7OworICAtaHRt
bGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0bWxkaT0qIHwgLS1odG1sZD0qIHwgLS1odG1sPSog
fCAtLWh0bT0qIFwKKyAgfCAtLWh0PSopCisgICAgaHRtbGRpcj0kYWNfb3B0YXJnIDs7CisKKyAg
LWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAt
LWluY2x1ZGUgXAorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQorICAg
IGFjX3ByZXY9aW5jbHVkZWRpciA7OworICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSog
fCAtLWluY2x1ZGVkaT0qIHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAorICB8IC0taW5j
bHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCisgICAgaW5jbHVkZWRpcj0k
YWNfb3B0YXJnIDs7CisKKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5m
b2QgfCAtLWluZm8gfCAtLWluZikKKyAgICBhY19wcmV2PWluZm9kaXIgOzsKKyAgLWluZm9kaXI9
KiB8IC0taW5mb2Rpcj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1p
bmY9KikKKyAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZGlyIHwgLS1saWJkaXIg
fCAtLWxpYmRpIHwgLS1saWJkKQorICAgIGFjX3ByZXY9bGliZGlyIDs7CisgIC1saWJkaXI9KiB8
IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikKKyAgICBsaWJkaXI9JGFjX29wdGFy
ZyA7OworCisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxp
YmV4ZWNkIHwgLS1saWJleGVjIFwKKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCisg
ICAgYWNfcHJldj1saWJleGVjZGlyIDs7CisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9
KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCisgIHwgLS1s
aWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFy
ZyA7OworCisgIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkgfCAtLWxvY2Fs
ZWQgfCAtLWxvY2FsZSkKKyAgICBhY19wcmV2PWxvY2FsZWRpciA7OworICAtbG9jYWxlZGlyPSog
fCAtLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAtLWxvY2FsZT0q
KQorICAgIGxvY2FsZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxvY2Fsc3RhdGVkaXIgfCAtLWxv
Y2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXAorICB8IC0tbG9j
YWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCB8IC0tbG9jYWxz
KQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7OworICAtbG9jYWxzdGF0ZWRpcj0qIHwgLS1s
b2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRlZD0qIFwKKyAg
fCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSogfCAtLWxvY2Fs
c3Q9KiB8IC0tbG9jYWxzPSopCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAg
LW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0t
bSkKKyAgICBhY19wcmV2PW1hbmRpciA7OworICAtbWFuZGlyPSogfCAtLW1hbmRpcj0qIHwgLS1t
YW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCisgICAgbWFuZGly
PSRhY19vcHRhcmcgOzsKKworICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorICAgICMgT2Jzb2xldGU7
IHVzZSAtLXdpdGhvdXQtZnAuCisgICAgd2l0aF9mcD1ubyA7OworCisgIC1uby1jcmVhdGUgfCAt
LW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCisgIHwgLS1u
by1jciB8IC0tbm8tYyB8IC1uKQorICAgIG5vX2NyZWF0ZT15ZXMgOzsKKworICAtbm8tcmVjdXJz
aW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwKKyAg
fCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8t
cmUgfCAtLW5vLXIpCisgICAgbm9fcmVjdXJzaW9uPXllcyA7OworCisgIC1vbGRpbmNsdWRlZGly
IHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwKKyAg
fCAtLW9sZGluY2x1ZGUgfCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGluY2wgfCAt
LW9sZGluYyBcCisgIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0tbykKKyAg
ICBhY19wcmV2PW9sZGluY2x1ZGVkaXIgOzsKKyAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5j
bHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCisgIHwgLS1v
bGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSog
fCAtLW9sZGluYz0qIFwKKyAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9s
PSogfCAtLW89KikKKyAgICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKKworICAtcHJlZml4
IHwgLS1wcmVmaXggfCAtLXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQorICAg
IGFjX3ByZXY9cHJlZml4IDs7CisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSog
fCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtLXA9KikKKyAgICBwcmVmaXg9JGFjX29w
dGFyZyA7OworCisgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dy
YW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcCisgIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3Jh
bS1wciB8IC0tcHJvZ3JhbS1wKQorICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKKyAgLXBy
b2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBc
CisgIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0q
IHwgLS1wcm9ncmFtLXA9KikKKyAgICBwcm9ncmFtX3ByZWZpeD0kYWNfb3B0YXJnIDs7CisKKyAg
LXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaSB8IC0t
cHJvZ3JhbS1zdWZmIFwKKyAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9n
cmFtLXMpCisgICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7OworICAtcHJvZ3JhbS1zdWZmaXg9
KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKKyAgfCAtLXByb2dy
YW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAtLXByb2dyYW0t
cz0qKQorICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS10cmFu
c2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSBcCisgIHwgLS1wcm9ncmFtLXRy
YW5zZm9ybS1uYW0gfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hIFwKKyAgfCAtLXByb2dyYW0tdHJh
bnNmb3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9y
bSB8IC0tcHJvZ3JhbS10cmFuc2ZvciBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAtLXByb2dy
YW0tdHJhbnNmIFwKKyAgfCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBcCisgIHwg
LS1wcm9nci10cmEgfCAtLXByb2dyYW0tdHIgfCAtLXByb2dyYW0tdCkKKyAgICBhY19wcmV2PXBy
b2dyYW1fdHJhbnNmb3JtX25hbWUgOzsKKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiB8IC0t
cHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbT0q
IHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49
KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm09KiB8
IC0tcHJvZ3JhbS10cmFuc2Zvcj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9n
cmFtLXRyYW5zZj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSog
XAorICB8IC0tcHJvZ3ItdHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0tcHJvZ3JhbS10PSopCisg
ICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7CisKKyAgLXBkZmRpciB8IC0t
cGRmZGlyIHwgLS1wZGZkaSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1wZCkKKyAgICBhY19wcmV2PXBk
ZmRpciA7OworICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1wZGZkPSog
fCAtLXBkZj0qIHwgLS1wZD0qKQorICAgIHBkZmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXBzZGly
IHwgLS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1wcykKKyAgICBhY19wcmV2PXBzZGlyIDs7
CisgIC1wc2Rpcj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQor
ICAgIHBzZGlyPSRhY19vcHRhcmcgOzsKKworICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1
aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2ls
ZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICBzaWxlbnQ9eWVzIDs7CisKKyAgLXNiaW5kaXIgfCAt
LXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCisg
ICAgYWNfcHJldj1zYmluZGlyIDs7CisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2Jp
bmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCisgIHwgLS1zYmk9KiB8IC0tc2I9KikKKyAg
ICBzYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0
YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKKyAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVk
c3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0YSBcCisgIHwgLS1zaGFyZWRzdCB8IC0t
c2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcCisgIHwgLS1zaGEgfCAtLXNo
KQorICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsKKyAgLXNoYXJlZHN0YXRlZGlyPSogfCAt
LXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcCisgIHwgLS1zaGFyZWRzdGF0
ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBc
CisgIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0q
IHwgLS1zaGFyPSogXAorICB8IC0tc2hhPSogfCAtLXNoPSopCisgICAgc2hhcmVkc3RhdGVkaXI9
JGFjX29wdGFyZyA7OworCisgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCisgICAgYWNfcHJldj1z
aXRlIDs7CisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCisgICAgc2l0ZT0kYWNfb3B0
YXJnIDs7CisKKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3Jj
IHwgLS1zcikKKyAgICBhY19wcmV2PXNyY2RpciA7OworICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0q
IHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQorICAgIHNyY2Rpcj0k
YWNfb3B0YXJnIDs7CisKKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZk
aSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXAorICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0t
c3lzYyB8IC0tc3lzIHwgLS1zeSkKKyAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKKyAgLXN5c2Nv
bmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8
IC0tc3lzY29uZj0qIFwKKyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAt
LXN5cz0qIHwgLS1zeT0qKQorICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OworCisgIC10YXJn
ZXQgfCAtLXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpCisg
ICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0t
dGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQorICAgIHRhcmdl
dF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0t
dmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKKyAgICB2ZXJib3NlPXllcyA7OworCisgIC12ZXJz
aW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCisgICAg
YWNfaW5pdF92ZXJzaW9uPTogOzsKKworICAtd2l0aC0qIHwgLS13aXRoLSopCisgICAgYWNfdXNl
cm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKKyAgICAjIFJl
amVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAg
ZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwg
JiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJv
cHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFz
X2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3Vz
ZXJfb3B0cyBpbgorICAgICAgKiIKKyJ3aXRoXyRhY191c2Vyb3B0IgorIiopIDs7CisgICAgICAq
KSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2du
aXplZF9zZXAtLXdpdGgtJGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0n
LCAnOzsKKyAgICBlc2FjCisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7
CisKKyAgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qKQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngk
YWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCisgICAgIyBSZWplY3QgbmFtZXMgdGhh
dCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIgIngkYWNfdXNl
cm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICBhc19m
bl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgIGFjX3Vz
ZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNl
cm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4KKyAg
ICAgICoiCisid2l0aF8kYWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNfdW5yZWNvZ25p
emVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRo
b3V0LSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAg
ZXNhYworICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7OworCisgIC0teCkKKyAgICAjIE9i
c29sZXRlOyB1c2UgLS13aXRoLXguCisgICAgd2l0aF94PXllcyA7OworCisgIC14LWluY2x1ZGVz
IHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwK
KyAgfCAtLXgtaW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKKyAgICBhY19wcmV2PXhf
aW5jbHVkZXMgOzsKKyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1
ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKKyAgfCAtLXgtaW5jbD0qIHwgLS14
LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0qKQorICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7
OworCisgIC14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUgfCAtLXgt
bGlicmFyaSBcCisgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxp
YiB8IC0teC1saSB8IC0teC1sKQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsKKyAgLXgtbGli
cmFyaWVzPSogfCAtLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0teC1saWJyYXJp
PSogXAorICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1s
aWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7
CisKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRp
b24nCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgorICAgIDs7CisKKyAg
Kj0qKQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFtePV0qXCk9J2AK
KyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFt
ZXMuCisgICAgY2FzZSAkYWNfZW52dmFyIGluICMoCisgICAgICAnJyB8IFswLTldKiB8ICpbIV8k
YXNfY3JfYWxudW1dKiApCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YXJpYWJsZSBu
YW1lOiBcYCRhY19lbnZ2YXInIiA7OworICAgIGVzYWMKKyAgICBldmFsICRhY19lbnZ2YXI9XCRh
Y19vcHRhcmcKKyAgICBleHBvcnQgJGFjX2VudnZhciA7OworCisgICopCisgICAgIyBGSVhNRTog
c2hvdWxkIGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLgorICAgICRhc19lY2hvICIkYXNfbWU6
IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgor
ICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVs
bCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6
ICRhY19vcHRpb24iID4mMgorICAgIDogJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3Rf
YWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KKyAgICA7OworCisg
IGVzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgIGFjX29wdGlvbj0t
LWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKKyAgYXNfZm5fZXJyb3IgJD8gIm1pc3Np
bmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY191bnJlY29n
bml6ZWRfb3B0cyI7IHRoZW4KKyAgY2FzZSAkZW5hYmxlX29wdGlvbl9jaGVja2luZyBpbgorICAg
IG5vKSA7OworICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6
ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKKyAgICAqKSAgICAgJGFzX2VjaG8gIiRhc19tZTog
V0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYy
IDs7CisgIGVzYWMKK2ZpCisKKyMgQ2hlY2sgYWxsIGRpcmVjdG9yeSBhcmd1bWVudHMgZm9yIGNv
bnNpc3RlbmN5LgorZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5k
aXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCisJCWRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRz
dGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAorCQlvbGRpbmNsdWRlZGlyIGRvY2Rp
ciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCisJCWxpYmRpciBsb2NhbGVk
aXIgbWFuZGlyCitkbworICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgIyBSZW1vdmUgdHJhaWxp
bmcgc2xhc2hlcy4KKyAgY2FzZSAkYWNfdmFsIGluCisgICAgKi8gKQorICAgICAgYWNfdmFsPWBl
eHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFjX3ZhbCIgOiAnWFwoLipcKSdg
CisgICAgICBldmFsICRhY192YXI9XCRhY192YWw7OworICBlc2FjCisgICMgQmUgc3VyZSB0byBo
YXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4KKyAgY2FzZSAkYWNfdmFsIGluCisgICAgW1xc
LyRdKiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsKKyAgICBOT05FIHwgJycgKSBjYXNlICRhY192
YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7CisgIGVzYWMKKyAgYXNfZm5fZXJyb3Ig
JD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRh
Y192YWwiCitkb25lCisKKyMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhl
IG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKKyMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVu
dCBvZiAtLWhvc3QgZXRjLgorIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgorYnVpbGQ9JGJ1
aWxkX2FsaWFzCitob3N0PSRob3N0X2FsaWFzCit0YXJnZXQ9JHRhcmdldF9hbGlhcworCisjIEZJ
WE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCitpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRo
ZW4KKyAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCisgICAgY3Jvc3NfY29tcGls
aW5nPW1heWJlCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaWYgeW91IHdhbnRlZCB0
byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KKyAgICBJZiBhIGNyb3Nz
IGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUgdXNl
ZCIgPiYyCisgIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRo
ZW4KKyAgICBjcm9zc19jb21waWxpbmc9eWVzCisgIGZpCitmaQorCithY190b29sX3ByZWZpeD0K
K3Rlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0KKwor
dGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbAorCisKK2FjX3B3ZD1gcHdk
YCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJgorYWNfbHNfZGk9YGxzIC1kaSAuYCAmJgorYWNfcHdk
X2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJ3
b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKK3Rlc3QgIlgkYWNfbHNfZGki
ID0gIlgkYWNfcHdkX2xzX2RpIiB8fAorICBhc19mbl9lcnJvciAkPyAicHdkIGRvZXMgbm90IHJl
cG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5IgorCisKKyMgRmluZCB0aGUgc291cmNlIGZp
bGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KK2lmIHRlc3QgLXogIiRzcmNkaXIi
OyB0aGVuCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCisgICMgVHJ5IHRoZSBkaXJlY3Rvcnkg
Y29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKyAgYWNf
Y29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYiIHx8CiskYXNfZXhwciBYIiRhc19t
eXNlbGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX215c2Vs
ZiIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcgXHwg
XAorCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2Vj
aG8gWCIkYXNfbXlzZWxmIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpc
LyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sK
KwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wx
LworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJ
ICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgc3JjZGlyPSRhY19jb25mZGlyCisgIGlmIHRlc3QgISAt
ciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCisgICAgc3JjZGlyPS4uCisgIGZpCitl
bHNlCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KK2ZpCitpZiB0ZXN0ICEgLXIgIiRzcmNkaXIv
JGFjX3VuaXF1ZV9maWxlIjsgdGhlbgorICB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5
ZXMgJiYgc3JjZGlyPSIkYWNfY29uZmRpciBvciAuLiIKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKK2ZpCithY19tc2c9
InNvdXJjZXMgYXJlIGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsi
CithY19hYnNfY29uZmRpcj1gKAorCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlx
dWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCisJcHdkKWAKKyMgV2hlbiBidWls
ZGluZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCitpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIiID0g
IiRhY19wd2QiOyB0aGVuCisgIHNyY2Rpcj0uCitmaQorIyBSZW1vdmUgdW5uZWNlc3NhcnkgdHJh
aWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4KKyMgRG91YmxlIHNsYXNoZXMgaW4gZmlsZSBuYW1l
cyBpbiBvYmplY3QgZmlsZSBkZWJ1Z2dpbmcgaW5mbworIyBtZXNzIHVwIE0teCBnZGIgaW4gRW1h
Y3MuCitjYXNlICRzcmNkaXIgaW4KKyovKSBzcmNkaXI9YGV4cHIgIlgkc3JjZGlyIiA6ICdYXCgu
KlteL11cKScgXHwgIlgkc3JjZGlyIiA6ICdYXCguKlwpJ2A7OworZXNhYworZm9yIGFjX3ZhciBp
biAkYWNfcHJlY2lvdXNfdmFyczsgZG8KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3NldD1cJHsk
e2FjX3Zhcn0rc2V0fQorICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0K
KyAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0fQorICBldmFs
IGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0KK2RvbmUKKworIworIyBSZXBv
cnQgdGhlIC0taGVscCBtZXNzYWdlLgorIworaWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9u
ZyI7IHRoZW4KKyAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBt
YWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCisgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25n
IHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KKyAgY2F0IDw8X0FDRU9GCitcYGNv
bmZpZ3VyZScgY29uZmlndXJlcyB0aGlzIHBhY2thZ2UgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBv
ZiBzeXN0ZW1zLgorCitVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KKworVG8g
YXNzaWduIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZS5nLiwgQ0MsIENGTEFHUy4uLiksIHNwZWNp
ZnkgdGhlbSBhcworVkFSPVZBTFVFLiAgU2VlIGJlbG93IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29t
ZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxlcy4KKworRGVmYXVsdHMgZm9yIHRoZSBvcHRpb25zIGFy
ZSBzcGVjaWZpZWQgaW4gYnJhY2tldHMuCisKK0NvbmZpZ3VyYXRpb246CisgIC1oLCAtLWhlbHAg
ICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0CisgICAgICAtLWhlbHA9c2hv
cnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UKKyAgICAg
IC0taGVscD1yZWN1cnNpdmUgICAgZGlzcGxheSB0aGUgc2hvcnQgaGVscCBvZiBhbGwgdGhlIGlu
Y2x1ZGVkIHBhY2thZ2VzCisgIC1WLCAtLXZlcnNpb24gICAgICAgICAgIGRpc3BsYXkgdmVyc2lv
biBpbmZvcm1hdGlvbiBhbmQgZXhpdAorICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3Qg
cHJpbnQgXGBjaGVja2luZyAuLi4nIG1lc3NhZ2VzCisgICAgICAtLWNhY2hlLWZpbGU9RklMRSAg
IGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KKyAgLUMsIC0tY29uZmlnLWNh
Y2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKKyAgLW4sIC0t
bm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKKyAgICAgIC0tc3Jj
ZGlyPURJUiAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3Ig
XGAuLiddCisKK0luc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKyAgLS1wcmVmaXg9UFJFRklYICAg
ICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4gUFJFRklYCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdCisgIC0tZXhlYy1w
cmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBF
UFJFRklYCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVhdCisKK0J5IGRlZmF1bHQs
IFxgbWFrZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwgYWxsIHRoZSBmaWxlcyBpbgorXGAkYWNfZGVm
YXVsdF9wcmVmaXgvYmluJywgXGAkYWNfZGVmYXVsdF9wcmVmaXgvbGliJyBldGMuICBZb3UgY2Fu
IHNwZWNpZnkKK2FuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0
X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCitmb3IgaW5zdGFuY2UgXGAtLXByZWZpeD1cJEhP
TUUnLgorCitGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4KKworRmlu
ZSB0dW5pbmcgb2YgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKyAgLS1iaW5kaXI9RElS
ICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dCisgIC0tc2JpbmRpcj1E
SVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBbRVBSRUZJWC9zYmluXQorICAt
LWxpYmV4ZWNkaXI9RElSICAgICAgICBwcm9ncmFtIGV4ZWN1dGFibGVzIFtFUFJFRklYL2xpYmV4
ZWNdCisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBk
YXRhIFtQUkVGSVgvZXRjXQorICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFy
Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQorICAtLWxvY2Fsc3RhdGVk
aXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCisg
IC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9s
aWJdCisgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5j
bHVkZV0KKyAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1n
Y2MgWy91c3IvaW5jbHVkZV0KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFy
Y2guLWluZGVwZW5kZW50IGRhdGEgcm9vdCBbUFJFRklYL3NoYXJlXQorICAtLWRhdGFkaXI9RElS
ICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW0RBVEFS
T09URElSXQorICAtLWluZm9kaXI9RElSICAgICAgICAgICBpbmZvIGRvY3VtZW50YXRpb24gW0RB
VEFST09URElSL2luZm9dCisgIC0tbG9jYWxlZGlyPURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRl
bnQgZGF0YSBbREFUQVJPT1RESVIvbG9jYWxlXQorICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBt
YW4gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvbWFuXQorICAtLWRvY2Rpcj1ESVIgICAgICAg
ICAgICBkb2N1bWVudGF0aW9uIHJvb3QgW0RBVEFST09URElSL2RvYy9QQUNLQUdFXQorICAtLWh0
bWxkaXI9RElSICAgICAgICAgICBodG1sIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1kdmlk
aXI9RElSICAgICAgICAgICAgZHZpIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1wZGZkaXI9
RElSICAgICAgICAgICAgcGRmIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1wc2Rpcj1ESVIg
ICAgICAgICAgICAgcHMgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorX0FDRU9GCisKKyAgY2F0IDw8
XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBm
b3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3Nz
LWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQorX0FDRU9G
CitmaQorCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgorCisgIGNhdCA8PFxfQUNF
T0YKKworT3B0aW9uYWwgRmVhdHVyZXM6CisgIC0tZGlzYWJsZS1vcHRpb24tY2hlY2tpbmcgIGln
bm9yZSB1bnJlY29nbml6ZWQgLS1lbmFibGUvLS13aXRoIG9wdGlvbnMKKyAgLS1kaXNhYmxlLUZF
QVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAtLWVuYWJsZS1GRUFU
VVJFPW5vKQorICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15
ZXNdCisgIC0tZW5hYmxlLXhzbSAgICAgICAgICAgIEVuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxl
IChieSBkZWZhdWx0LCBGbGFzaykKKyAgLS1lbmFibGUtZ2l0aHR0cCAgICAgICAgRG93bmxvYWQg
R0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUAorICAtLWRpc2FibGUtbW9uaXRvcnMgICAgICBEaXNh
YmxlIHhlbnN0YXQgYW5kIHhlbnRvcCBtb25pdG9yaW5nIHRvb2xzCisgIC0tZW5hYmxlLXZ0cG0g
ICAgICAgICAgIEVuYWJsZSBWaXJ0dWFsIFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlCisgIC0tZW5h
YmxlLXhhcGkgICAgICAgICAgIEVuYWJsZSBYZW4gQVBJIEJpbmRpbmdzCisgIC0tZGlzYWJsZS1w
eXRob250b29scyAgIERpc2FibGUgUHl0aG9uIHRvb2xzCisgIC0tZGlzYWJsZS1vY2FtbHRvb2xz
ICAgIERpc2FibGUgT2NhbWwgdG9vbHMKKyAgLS1lbmFibGUtbWluaXRlcm0gICAgICAgRW5hYmxl
IG1pbml0ZXJtCisgIC0tZW5hYmxlLWxvbW91bnQgICAgICAgIEVuYWJsZSBsb21vdW50CisgIC0t
ZGlzYWJsZS1kZWJ1ZyAgICAgICAgIERpc2FibGUgZGVidWcgYnVpbGQgb2YgWGVuIGFuZCB0b29s
cworCitTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgQ0MgICAgICAg
ICAgQyBjb21waWxlciBjb21tYW5kCisgIENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKKyAg
TERGTEFHUyAgICAgbGlua2VyIGZsYWdzLCBlLmcuIC1MPGxpYiBkaXI+IGlmIHlvdSBoYXZlIGxp
YnJhcmllcyBpbiBhCisgICAgICAgICAgICAgIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8bGliIGRp
cj4KKyAgTElCUyAgICAgICAgbGlicmFyaWVzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciwgZS5nLiAt
bDxsaWJyYXJ5PgorICBDUFBGTEFHUyAgICAoT2JqZWN0aXZlKSBDL0MrKyBwcmVwcm9jZXNzb3Ig
ZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmCisgICAgICAgICAgICAgIHlvdSBoYXZlIGhl
YWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgorICBDUFAgICAg
ICAgICBDIHByZXByb2Nlc3NvcgorICBQUkVQRU5EX0lOQ0xVREVTCisgICAgICAgICAgICAgIExp
c3Qgb2YgaW5jbHVkZSBmb2xkZXJzIHRvIHByZXBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKQor
ICBQUkVQRU5EX0xJQiBMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBwcmVwZW5kIHRvIExERkxB
R1MgKHdpdGhvdXQgLUwpCisgIEFQUEVORF9JTkNMVURFUworICAgICAgICAgICAgICBMaXN0IG9m
IGluY2x1ZGUgZm9sZGVycyB0byBhcHBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKQorICBBUFBF
TkRfTElCICBMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBhcHBlbmQgdG8gTERGTEFHUyAod2l0
aG91dCAtTCkKKyAgUFlUSE9OICAgICAgUGF0aCB0byB0aGUgUHl0aG9uIHBhcnNlcgorICBQRVJM
ICAgICAgICBQYXRoIHRvIFBlcmwgcGFyc2VyCisgIEJSQ1RMICAgICAgIFBhdGggdG8gYnJjdGwg
dG9vbAorICBJUCAgICAgICAgICBQYXRoIHRvIGlwIHRvb2wKKyAgQklTT04gICAgICAgUGF0aCB0
byBCaXNvbiBwYXJzZXIgZ2VuZXJhdG9yCisgIEZMRVggICAgICAgIFBhdGggdG8gRmxleCBsZXhp
Y2FsIGFuYWx5c2VyIGdlbmVyYXRvcgorICBDVVJMICAgICAgICBQYXRoIHRvIGN1cmwtY29uZmln
IHRvb2wKKyAgWE1MICAgICAgICAgUGF0aCB0byB4bWwyLWNvbmZpZyB0b29sCisgIEJBU0ggICAg
ICAgIFBhdGggdG8gYmFzaCBzaGVsbAorICBYR0VUVEVYVCAgICBQYXRoIHRvIHhnZXR0dGV4dCB0
b29sCisKK1VzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBi
eSBgY29uZmlndXJlJyBvciB0byBoZWxwCitpdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3Jh
bXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2NhdGlvbnMuCisKK1JlcG9ydCBidWdzIHRvIHRo
ZSBwYWNrYWdlIHByb3ZpZGVyLgorX0FDRU9GCithY19zdGF0dXM9JD8KK2ZpCisKK2lmIHRlc3Qg
IiRhY19pbml0X2hlbHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4KKyAgIyBJZiB0aGVyZSBhcmUgc3Vi
ZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4KKyAgZm9yIGFjX2RpciBpbiA6ICRh
Y19zdWJkaXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUKKyAgICB0
ZXN0IC1kICIkYWNfZGlyIiB8fAorICAgICAgeyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBwd2Rg
ICYmIHNyY2Rpcj0uICYmIHRlc3QgLWQgIiRhY19kaXIiOyB9IHx8CisgICAgICBjb250aW51ZQor
ICAgIGFjX2J1aWxkZGlyPS4KKworY2FzZSAiJGFjX2RpciIgaW4KKy4pIGFjX2Rpcl9zdWZmaXg9
IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OworKikKKyAgYWNf
ZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AKKyAg
IyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgorICBhY190b3Bf
YnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10q
fC8uLnxnO3N8L3x8J2AKKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbgorICAiIikgYWNf
dG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CisgICopICBhY190b3Bf
YnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7OworICBlc2FjIDs7Citlc2FjCith
Y19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QKK2FjX2Fic19idWlsZGRpcj0kYWNfcHdkJGFjX2Rp
cl9zdWZmaXgKKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CithY190b3BfYnVpbGRkaXI9
JGFjX3RvcF9idWlsZF9wcmVmaXgKKworY2FzZSAkc3JjZGlyIGluCisgIC4pICAjIFdlIGFyZSBi
dWlsZGluZyBpbiBwbGFjZS4KKyAgICBhY19zcmNkaXI9LgorICAgIGFjX3RvcF9zcmNkaXI9JGFj
X3RvcF9idWlsZGRpcl9zdWIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7CisgIFtc
XC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KKyAgICBhY19zcmNkaXI9JHNyY2Rp
ciRhY19kaXJfc3VmZml4OworICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpcgorICAgIGFjX2Fic190
b3Bfc3JjZGlyPSRzcmNkaXIgOzsKKyAgKikgIyBSZWxhdGl2ZSBuYW1lLgorICAgIGFjX3NyY2Rp
cj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAorICAgIGFjX3RvcF9z
cmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9
JGFjX3B3ZC8kc3JjZGlyIDs7Citlc2FjCithY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2Rp
ciRhY19kaXJfc3VmZml4CisKKyAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0dXM9JD87IGNv
bnRpbnVlOyB9CisgICAgIyBDaGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmUuCisgICAgaWYgdGVz
dCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IjsgdGhlbgorICAgICAgZWNobyAmJgorICAg
ICAgJFNIRUxMICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiIC0taGVscD1yZWN1cnNpdmUKKyAg
ICBlbGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlIjsgdGhlbgorICAgICAgZWNobyAm
JgorICAgICAgJFNIRUxMICIkYWNfc3JjZGlyL2NvbmZpZ3VyZSIgLS1oZWxwPXJlY3Vyc2l2ZQor
ICAgIGVsc2UKKyAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRp
b24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYyCisgICAgZmkgfHwgYWNfc3RhdHVzPSQ/
CisgICAgY2QgIiRhY19wd2QiIHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVhazsgfQorICBkb25lCitm
aQorCit0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKK2lmICRhY19p
bml0X3ZlcnNpb247IHRoZW4KKyAgY2F0IDw8XF9BQ0VPRgorY29uZmlndXJlCitnZW5lcmF0ZWQg
YnkgR05VIEF1dG9jb25mIDIuNjcKKworQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLgorVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u
IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KK19BQ0VPRgorICBleGl0CitmaQor
CisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEF1dG9jb25mIGluaXRpYWxpemF0
aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgYWNfZm5fY190cnlf
Y29tcGlsZSBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIGNv
bXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVk
LgorYWNfZm5fY190cnlfY29tcGlsZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQx
In0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHJt
IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGUiCitj
YXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRh
Y190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2Vj
aG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNf
ZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25m
dGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVu
CisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQg
Y29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAg
ZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0
YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16ICIkYWNf
Y193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAgIH0gJiYg
dGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0OyB0aGVuIDoKKyAgYWNfcmV0dmFsPTAKK2Vsc2UK
KyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3MvXi98
IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwlhY19yZXR2YWw9MQorZmkKKyAgZXZhbCAkYXNf
bGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5v
PTsgdW5zZXQgYXNfbGluZW5vO30KKyAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCisKK30g
IyBhY19mbl9jX3RyeV9jb21waWxlCisKKyMgYWNfZm5fY190cnlfY3BwIExJTkVOTworIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyeSB0byBwcmVwcm9jZXNzIGNvbmZ0ZXN0LiRhY19leHQs
IGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KK2FjX2ZuX2NfdHJ5X2NwcCAoKQor
eworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVu
b19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIGlmIHsgeyBhY190cnk9IiRhY19jcHAgY29uZnRl
c3QuJGFjX2V4dCIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBh
Y190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYwor
ZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5
X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2Nw
cCBjb25mdGVzdC4kYWNfZXh0IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlm
IHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qu
ZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNv
bmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9
IDA7IH0gPiBjb25mdGVzdC5pICYmIHsKKwkgdGVzdCAteiAiJGFjX2NfcHJlcHJvY193YXJuX2Zs
YWckYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAg
IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK
KworICAgIGFjX3JldHZhbD0xCitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngk
YXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQor
ICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NwcAorCisj
IGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgTElORU5PIEhFQURFUiBWQVIgSU5DTFVERVMK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMsIGdpdmluZyBhIHdhcm5pbmcgaWYgaXQg
Y2Fubm90IGJlIGNvbXBpbGVkIHVzaW5nCisjIHRoZSBpbmNsdWRlIGZpbGVzIGluIElOQ0xVREVT
IGFuZCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIKKyMgYWNjb3JkaW5nbHkuCithY19m
bl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0i
JDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAg
aWYgZXZhbCAidGVzdCBcIlwkeyQzK3NldH1cIiIgPSBzZXQ7IHRoZW4gOgorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgInRlc3QgXCJcJHsk
MytzZXR9XCIiID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Zp
CitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7
IH0KK2Vsc2UKKyAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Cit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyAkMiB1c2FiaWxpdHkuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0
CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcworZWxzZQorICBhY19oZWFkZXJfY29t
cGlsZXI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVy
X2NvbXBpbGVyIiA+JjY7IH0KKworIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Cit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHByZXNlbmNlIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIgPiY2OyB9CitjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRo
ZW4gOgorICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKK2Vsc2UKKyAgYWNfaGVhZGVyX3ByZXByb2M9
bm8KK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Cit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRl
cl9wcmVwcm9jIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVyX3ByZXByb2MiID4mNjsgfQorCisj
IFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9jb21waWxlcjok
YWNfaGVhZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gIygoCisgIHllczpu
bzogKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO
RzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nl
c3NvciEiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRo
ZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9CisgICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2Vl
ZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBX
QVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30K
KyAgICA7OworICBubzp5ZXM6KiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUg
Y29tcGlsZWQiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFk
ZXJzPyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBt
aXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBzZWUgdGhlIEF1dG9jb25mIGRv
Y3VtZW50YXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHNlZSB0aGUg
QXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0
IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQy
OiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6
IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQorJGFzX2VjaG8gIiRh
c19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQi
ID4mMjt9CisgICAgOzsKK2VzYWMKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQy
Li4uICIgPiY2OyB9CitpZiBldmFsICJ0ZXN0IFwiXCR7JDMrc2V0fVwiIiA9IHNldDsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPVwkYWNfaGVh
ZGVyX2NvbXBpbGVyIgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2Vj
aG8gIiRhY19yZXMiID4mNjsgfQorZmkKKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4
JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30K
KworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKKworIyBhY19mbl9jX3RyeV9ydW4g
TElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIGxpbmsgY29uZnRlc3Qu
JGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLiBBc3N1bWVzCisjIHRo
YXQgZXhlY3V0YWJsZXMgKmNhbiogYmUgcnVuLgorYWNfZm5fY190cnlfcnVuICgpCit7CisgIGFz
X2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNr
PSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRh
Y190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Owor
ICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFj
X3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorICBhY19zdGF0dXM9
JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0
YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRl
c3QkYWNfZXhlZXh0JworICB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8
ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7
Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFs
ICIkYWNfdHJ5IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1
cyA9IDA7IH07IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFz
X21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKKyAgICAgICAk
YXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycg
Y29uZnRlc3QuJGFjX2V4dCA+JjUKKworICAgICAgIGFjX3JldHZhbD0kYWNfc3RhdHVzCitmaQor
ICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwg
JGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp
bmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAor
Cit9ICMgYWNfZm5fY190cnlfcnVuCisKKyMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSBM
SU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0
cyBhbmQgY2FuIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBpbmNsdWRlIGZpbGVzIGluCisjIElOQ0xV
REVTLCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9j
X2NoZWNrX2hlYWRlcl9jb21waWxlICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEi
fSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsICJ0ZXN0
IFwiXCR7JDMrc2V0fVwiIiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDM9eWVzIgorZWxz
ZQorICBldmFsICIkMz1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVz
IiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNr
OyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNf
bGluZW5vO30KKworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUKKworIyBhY19mbl9j
X3RyeV9saW5rIExJTkVOTworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gbGlu
ayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCith
Y19mbl9jX3RyeV9saW5rICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19s
aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgcm0gLWYgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFj
X2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5
X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwg
YWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hv
XCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikg
Mj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJy
OyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAg
ICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5l
cnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0g
JGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16
ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAg
IH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgeworCSB0ZXN0ICIkY3Jvc3NfY29t
cGlsaW5nIiA9IHllcyB8fAorCSAkYXNfdGVzdF94IGNvbmZ0ZXN0JGFjX2V4ZWV4dAorICAgICAg
IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK
KworCWFjX3JldHZhbD0xCitmaQorICAjIERlbGV0ZSB0aGUgSVBBL0lQTyAoSW50ZXIgUHJvY2Vk
dXJhbCBBbmFseXNpcy9PcHRpbWl6YXRpb24pIGluZm9ybWF0aW9uCisgICMgY3JlYXRlZCBieSB0
aGUgUEdJIGNvbXBpbGVyIChjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vKSwgYXMgaXQgd291bGQK
KyAgIyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFsc28gZGVsZXRlIGEg
ZGlyZWN0b3J5IHRoYXQgaXMKKyAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAg
V2UgZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgorICBybSAtcmYgY29uZnRl
c3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwgJGFzX2xpbmVub19zdGFj
azsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFz
X2xpbmVubzt9CisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190
cnlfbGluaworCisjIGFjX2ZuX2NfY2hlY2tfZnVuYyBMSU5FTk8gRlVOQyBWQVIKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIEZVTkMgZXhpc3Rz
LCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkKK2FjX2ZuX2NfY2hl
Y2tfZnVuYyAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0
YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCAidGVzdCBcIlwkeyQzK3NldH1c
IiIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRl
ZnMuaC4gICovCisvKiBEZWZpbmUgJDIgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2Ug
PGxpbWl0cy5oPiBkZWNsYXJlcyAkMi4KKyAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxpbWl0
cy5oPiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLworI2RlZmluZSAkMiBpbm5vY3VvdXNfJDIK
KworLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5
IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJDIgKCk7
IGJlbG93LgorICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18g
aXMgZGVmaW5lZCwgc2luY2UKKyAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFu
ZGluZyBjb21waWxlcnMuICAqLworCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRz
Lmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCisjdW5kZWYgJDIKKwor
LyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3Iu
CisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg
YSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBz
dGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgor
Y2hhciAkMiAoKTsKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rp
b25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4g
IFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGlu
ZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmlu
ZWQgX19zdHViXyQyIHx8IGRlZmluZWQgX19zdHViX19fJDIKK2Nob2tlIG1lCisjZW5kaWYKKwor
aW50CittYWluICgpCit7CityZXR1cm4gJDIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNF
T0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDM9eWVz
IgorZWxzZQorICBldmFsICIkMz1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4
dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMi
ID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNr
IiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorCit9ICMgYWNfZm5fY19j
aGVja19mdW5jCisKKyMgYWNfZm5fY19jaGVja190eXBlIExJTkVOTyBUWVBFIFZBUiBJTkNMVURF
UworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3Rz
IHdoZXRoZXIgVFlQRSBleGlzdHMgYWZ0ZXIgaGF2aW5nIGluY2x1ZGVkIElOQ0xVREVTLCBzZXR0
aW5nIGNhY2hlCisjIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfdHlw
ZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFz
X2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNr
aW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCAidGVzdCBcIlwkeyQzK3NldH1cIiIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIk
Mz1ubyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog
ZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoJDIp
KQorCSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190
cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWlu
ICgpCit7CitpZiAoc2l6ZW9mICgoJDIpKSkKKwkgICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJu
IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoK
KworZWxzZQorICBldmFsICIkMz15ZXMiCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVz
dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19y
ZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwg
JGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp
bmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisKK30gIyBhY19mbl9jX2NoZWNrX3R5cGUKKworIyBh
Y19mbl9jX2ZpbmRfaW50WF90IExJTkVOTyBCSVRTIFZBUgorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBGaW5kcyBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB3aWR0
aCBCSVRTLCBzZXR0aW5nIGNhY2hlIHZhcmlhYmxlIFZBUgorIyBhY2NvcmRpbmdseS4KK2FjX2Zu
X2NfZmluZF9pbnRYX3QgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xp
bmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpbnQkMl90IiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpbnQkMl90Li4uICIgPiY2OyB9CitpZiBldmFsICJ0
ZXN0IFwiXCR7JDMrc2V0fVwiIiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPW5vIgorICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAt
IG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKKyAgICAgIyB0
aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KKyAgICAgZm9yIGFjX3R5cGUg
aW4gaW50JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKKwkgJ2xvbmcgbG9uZyBpbnQnICdzaG9ydCBp
bnQnICdzaWduZWQgY2hhcic7IGRvCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+
Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2Rl
ZmF1bHQKKwkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7Citz
dGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAoKCgoKCRhY190
eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKK3Rlc3RfYXJyYXkgWzBdID0gMAor
CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRM
SU5FTk8iOyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKKwkgICAg
ICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7CitzdGF0aWMgaW50
IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikg
PDwgTikgLSAxKSAqIDIgKyAxKQorCQkgPCAoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwg
TikgPDwgTikgLSAxKSAqIDIgKyAyKSldOwordGVzdF9hcnJheSBbMF0gPSAwCisKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo
ZW4gOgorCitlbHNlCisgIGNhc2UgJGFjX3R5cGUgaW4gIygKKyAgaW50JDJfdCkgOgorICAgIGV2
YWwgIiQzPXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2Vz
YWMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4
Im5vIjsgdGhlbiA6CisKK2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRvbmUKK2ZpCitldmFsIGFj
X3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZh
bCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNf
bGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKworfSAjIGFjX2ZuX2NfZmluZF9pbnRYX3QKKwor
IyBhY19mbl9jX2NoZWNrX21lbWJlciBMSU5FTk8gQUdHUiBNRU1CRVIgVkFSIElOQ0xVREVTCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
VHJpZXMgdG8gZmluZCBpZiB0aGUgZmllbGQgTUVNQkVSIGV4aXN0cyBpbiB0eXBlIEFHR1IsIGFm
dGVyIGluY2x1ZGluZworIyBJTkNMVURFUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIgYWNj
b3JkaW5nbHkuCithY19mbl9jX2NoZWNrX21lbWJlciAoKQoreworICBhc19saW5lbm89JHthc19s
aW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0
YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yICQyLiQzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4kMy4uLiAiID4mNjsg
fQoraWYgZXZhbCAidGVzdCBcIlwkeyQ0K3NldH1cIiIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQoraW50CittYWluICgp
Cit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChhY19hZ2dyLiQzKQorcmV0dXJuIDA7CisgIDsK
KyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgZXZhbCAiJDQ9eWVzIgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQoraW50Citt
YWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChzaXplb2YgYWNfYWdnci4kMykKK3Jl
dHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21w
aWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQ0PXllcyIKK2Vsc2UKKyAgZXZhbCAiJDQ9
bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m
dGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkNAorCSAgICAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1
CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVz
dCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVu
bzt9CisKK30gIyBhY19mbl9jX2NoZWNrX21lbWJlcgorCisjIGFjX2ZuX2NfZmluZF91aW50WF90
IExJTkVOTyBCSVRTIFZBUgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgRmluZHMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGlu
ZyBjYWNoZSB2YXJpYWJsZSBWQVIKKyMgYWNjb3JkaW5nbHkuCithY19mbl9jX2ZpbmRfdWludFhf
dCAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFz
X2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpbnQkMl90IiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciB1aW50JDJfdC4uLiAiID4mNjsgfQoraWYgZXZhbCAidGVzdCBcIlwkeyQz
K3NldH1cIiIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBldmFsICIkMz1ubyIKKyAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVj
ayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCisgICAgICMgdGhhbiBoYWxmIG9m
IHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCisgICAgIGZvciBhY190eXBlIGluIHVpbnQkMl90
ICd1bnNpZ25lZCBpbnQnICd1bnNpZ25lZCBsb25nIGludCcgXAorCSAndW5zaWduZWQgbG9uZyBs
b25nIGludCcgJ3Vuc2lnbmVkIHNob3J0IGludCcgJ3Vuc2lnbmVkIGNoYXInOyBkbworICAgICAg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkKK3sKK3N0YXRp
YyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgoJGFjX3R5cGUpIC0xID4+ICgkMiAvIDIgLSAx
KSkgPj4gKCQyIC8gMiAtIDEpID09IDMpXTsKK3Rlc3RfYXJyYXkgWzBdID0gMAorCisgIDsKKyAg
cmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0
aGVuIDoKKyAgY2FzZSAkYWNfdHlwZSBpbiAjKAorICB1aW50JDJfdCkgOgorICAgIGV2YWwgIiQz
PXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2VzYWMKK2Zp
CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKKyAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6CisK
K2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRvbmUKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAg
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf
cmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0
YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQg
YXNfbGluZW5vO30KKworfSAjIGFjX2ZuX2NfZmluZF91aW50WF90CitjYXQgPmNvbmZpZy5sb2cg
PDxfQUNFT0YKK1RoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29t
cGlsZXJzIHdoaWxlCitydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25m
aWd1cmUgbWFrZXMgYSBtaXN0YWtlLgorCitJdCB3YXMgY3JlYXRlZCBieSAkYXNfbWUsIHdoaWNo
IHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY3LiAgSW52b2NhdGlvbiBjb21tYW5k
IGxpbmUgd2FzCisKKyAgJCAkMCAkQAorCitfQUNFT0YKK2V4ZWMgNT4+Y29uZmlnLmxvZworewor
Y2F0IDw8X0FTVU5BTUUKKyMjIC0tLS0tLS0tLSAjIworIyMgUGxhdGZvcm0uICMjCisjIyAtLS0t
LS0tLS0gIyMKKworaG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVs
bCB8IHNlZCAxcWAKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1
bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25v
d25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAK
K3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorCisv
dXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsIHx8IGVj
aG8gdW5rbm93bmAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYv
bnVsbCAgICAgfHwgZWNobyB1bmtub3duYAorCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgv
YmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNy
L2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAg
ICB8fCBlY2hvIHVua25vd25gCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZl
eC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9ob3N0
aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8fCBlY2hv
IHVua25vd25gCisvYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rl
di9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCisvdXNyL2Jpbi9vc2xldmVsICAgICAg
ID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25g
CisvYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAg
ICAgICAgICB8fCBlY2hvIHVua25vd25gCisKK19BU1VOQU1FCisKK2FzX3NhdmVfSUZTPSRJRlM7
IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNf
c2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAkYXNfZWNobyAi
UEFUSDogJGFzX2RpciIKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCit9ID4mNQorCitjYXQg
PiY1IDw8X0FDRU9GCisKKworIyMgLS0tLS0tLS0tLS0gIyMKKyMjIENvcmUgdGVzdHMuICMjCisj
IyAtLS0tLS0tLS0tLSAjIworCitfQUNFT0YKKworCisjIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29t
bWFuZCBsaW5lLgorIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNv
IHRoZXkgZG8gbm90IHBpbGUgdXAuCisjIFN0cmlwIG91dCAtLXNpbGVudCBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8gcmVjb3JkIGl0IGZvciBmdXR1cmUgcnVucy4KKyMgQWxzbyBxdW90ZSBhbnkg
YXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KKyMgTWFrZSB0d28gcGFzc2Vz
IHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgorYWNf
Y29uZmlndXJlX2FyZ3M9CithY19jb25maWd1cmVfYXJnczA9CithY19jb25maWd1cmVfYXJnczE9
CithY19tdXN0X2tlZXBfbmV4dD1mYWxzZQorZm9yIGFjX3Bhc3MgaW4gMSAyCitkbworICBmb3Ig
YWNfYXJnCisgIGRvCisgICAgY2FzZSAkYWNfYXJnIGluCisgICAgLW5vLWNyZWF0ZSB8IC0tbm8t
YyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51ZSA7OworICAgIC1xIHwg
LXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgICAgfCAt
c2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCisgICAgICBjb250
aW51ZSA7OworICAgICpcJyopCisgICAgICBhY19hcmc9YCRhc19lY2hvICIkYWNfYXJnIiB8IHNl
ZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgIGVzYWMKKyAgICBjYXNlICRhY19wYXNzIGlu
CisgICAgMSkgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMCAiICckYWNfYXJnJyIgOzsK
KyAgICAyKQorICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMSAiICckYWNfYXJn
JyIKKyAgICAgIGlmIHRlc3QgJGFjX211c3Rfa2VlcF9uZXh0ID0gdHJ1ZTsgdGhlbgorCWFjX211
c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4KKyAgICAgIGVs
c2UKKwljYXNlICRhY19hcmcgaW4KKwkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlz
YWJsZS0qIHwgLS1kaXNhYmxlLSogXAorCSAgfCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdh
cyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXAorCSAgfCAtcSB8IC1xdWlldCB8IC0tcSogfCAtc2ls
ZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXAorCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAt
d2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCisJICAgIGNhc2UgIiRhY19jb25maWd1cmVf
YXJnczAgIiBpbgorCSAgICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioiICckYWNfYXJnJyAiKiAp
IGNvbnRpbnVlIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgIC0qICkgYWNfbXVzdF9rZWVwX25l
eHQ9dHJ1ZSA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmln
dXJlX2FyZ3MgIiAnJGFjX2FyZyciCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorZG9uZQor
eyBhY19jb25maWd1cmVfYXJnczA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7fQoreyBhY19j
b25maWd1cmVfYXJnczE9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczE7fQorCisjIFdoZW4gaW50
ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRl
CisjIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1
b3RlcyBpbiB0aGVyZQorIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCisjIFdB
Uk5JTkc6IFVzZSAnXCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhlIHdpdGhpbiB0aGUgdHJh
cC4KKyMgV0FSTklORzogRG8gbm90IHN0YXJ0IHRoZSB0cmFwIGNvZGUgd2l0aCBhIG5ld2xpbmUs
IGR1ZSB0byBhIEZyZWVCU0QgNC4wIGJ1Zy4KK3RyYXAgJ2V4aXRfc3RhdHVzPSQ/CisgICMgU2F2
ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVi
dWdnaW5nLgorICB7CisgICAgZWNobworCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0t
LS0gIyMKKyMjIENhY2hlIHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMiCisg
ICAgZWNobworICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlz
aGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCisoCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+
JjEgfCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcn
YDsgZG8KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICBjYXNlICRhY192YWwgaW4gIygK
KyAgICAqJHthc19ubH0qKQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoCisgICAgICAqX2N2Xyop
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2FjaGUg
dmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQorJGFzX2VjaG8gIiRhc19t
ZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4m
Mjt9IDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgIF8gfCBJ
RlMgfCBhc19ubCkgOzsgIygKKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRh
Y192YXI9IDs7ICMoCisgICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7
OworICAgICAgZXNhYyA7OworICAgIGVzYWMKKyAgZG9uZQorICAoc2V0KSAyPiYxIHwKKyAgICBj
YXNlICRhc19ubGAoYWNfc3BhY2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFgIGluICMoCisgICAgKiR7
YXNfbmx9YWNfc3BhY2U9XCAqKQorICAgICAgc2VkIC1uIFwKKwkicy8nXCcnLydcJydcXFxcJ1wn
JydcJycvZzsKKwkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxc
KT1cXCguKlxcKS9cXDE9J1wnJ1xcMidcJycvcCIKKyAgICAgIDs7ICMoCisgICAgKikKKyAgICAg
IHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCisgICAg
ICA7OworICAgIGVzYWMgfAorICAgIHNvcnQKKykKKyAgICBlY2hvCisKKyAgICAkYXNfZWNobyAi
IyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE91dHB1dCB2YXJpYWJsZXMuICMjCisjIyAtLS0t
LS0tLS0tLS0tLS0tLSAjIyIKKyAgICBlY2hvCisgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3Rf
dmFycworICAgIGRvCisgICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICAgIGNhc2UgJGFj
X3ZhbCBpbgorICAgICAgKlwnXCcnKikgYWNfdmFsPWAkYXNfZWNobyAiJGFjX3ZhbCIgfCBzZWQg
InMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7OworICAgICAgZXNhYworICAgICAgJGFz
X2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIgorICAgIGRvbmUgfCBzb3J0CisgICAgZWNo
bworCisgICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgorICAgICAgJGFzX2Vj
aG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMK
KyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCisgICAgICBlY2hvCisgICAgICBmb3IgYWNfdmFy
IGluICRhY19zdWJzdF9maWxlcworICAgICAgZG8KKwlldmFsIGFjX3ZhbD1cJCRhY192YXIKKwlj
YXNlICRhY192YWwgaW4KKwkqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNl
ZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7CisJZXNhYworCSRhc19lY2hvICIk
YWNfdmFyPSdcJyckYWNfdmFsJ1wnJyIKKyAgICAgIGRvbmUgfCBzb3J0CisgICAgICBlY2hvCisg
ICAgZmkKKworICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgorICAgICAgJGFzX2VjaG8g
IiMjIC0tLS0tLS0tLS0tICMjCisjIyBjb25mZGVmcy5oLiAjIworIyMgLS0tLS0tLS0tLS0gIyMi
CisgICAgICBlY2hvCisgICAgICBjYXQgY29uZmRlZnMuaAorICAgICAgZWNobworICAgIGZpCisg
ICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1
Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIgorICAgICRhc19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRf
c3RhdHVzIgorICB9ID4mNQorICBybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYK
KyAgICBybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVz
ICYmCisgICAgZXhpdCAkZXhpdF9zdGF0dXMKKycgMAorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMg
MTU7IGRvCisgIHRyYXAgJ2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IGFzX2ZuX2V4aXQgMScgJGFj
X3NpZ25hbAorZG9uZQorYWNfc2lnbmFsPTAKKworIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21t
YW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KK3JtIC1mIC1yIGNv
bmZ0ZXN0KiBjb25mZGVmcy5oCisKKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZk
ZWZzLmgKKworIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuCisKK2NhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIgor
X0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9UQVJO
QU1FICIkUEFDS0FHRV9UQVJOQU1FIgorX0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKKyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIgorX0FDRU9GCisK
K2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIiRQQUNL
QUdFX1NUUklORyIKK19BQ0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5l
IFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiCitfQUNFT0YKKworY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1VSTCAiJFBBQ0tBR0VfVVJMIgor
X0FDRU9GCisKKworIyBMZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3QgYW4gYWx0ZXJuYXRlIGNhY2hl
IGZpbGUgaWYgaXQgd2FudHMgdG8uCisjIFByZWZlciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZp
bGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLgorYWNfc2l0ZV9maWxlMT1OT05FCith
Y19zaXRlX2ZpbGUyPU5PTkUKK2lmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KKyAgIyBX
ZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0ZS4KKyAgY2FzZSAkQ09O
RklHX1NJVEUgaW4gIygoCisgICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsK
KyAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFOzsKKyAgICAqKSAgIGFjX3NpdGVf
ZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICBlc2FjCitlbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4
Tk9ORTsgdGhlbgorICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUKKyAg
YWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQorZWxzZQorICBhY19zaXRlX2Zp
bGUxPSRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQorICBhY19zaXRlX2ZpbGUy
PSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUKK2ZpCitmb3IgYWNfc2l0ZV9maWxl
IGluICIkYWNfc2l0ZV9maWxlMSIgIiRhY19zaXRlX2ZpbGUyIgorZG8KKyAgdGVzdCAieCRhY19z
aXRlX2ZpbGUiID0geE5PTkUgJiYgY29udGludWUKKyAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRh
Y19zaXRlX2ZpbGUiICYmIHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0aGVuCisgICAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRh
Y19zaXRlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAk
YWNfc2l0ZV9maWxlIiA+JjY7fQorICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4m
NQorICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwKKyAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2Vj
aG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8g
ImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUKK1NlZSBcYGNvbmZpZy5s
b2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsgfQorICBmaQorZG9uZQorCitpZiB0
ZXN0IC1yICIkY2FjaGVfZmlsZSI7IHRoZW4KKyAgIyBTb21lIHZlcnNpb25zIG9mIGJhc2ggd2ls
bCBmYWlsIHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwgZmlsZXMKKyAgIyBhY3R1YWxseSks
IHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuICBESkdQUCBlbXVsYXRlcyBpdCBhcyBhIHJlZ3VsYXIg
ZmlsZS4KKyAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRjYWNoZV9maWxlIiAmJiB0ZXN0IC1mICIk
Y2FjaGVfZmlsZSI7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTog
bG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAgICBjYXNlICRjYWNoZV9maWxlIGlu
CisgICAgICBbXFwvXSogfCA/OltcXC9dKiApIC4gIiRjYWNoZV9maWxlIjs7CisgICAgICAqKSAg
ICAgICAgICAgICAgICAgICAgICAuICIuLyRjYWNoZV9maWxlIjs7CisgICAgZXNhYworICBmaQor
ZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5n
IGNhY2hlICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hl
ICRjYWNoZV9maWxlIiA+JjY7fQorICA+JGNhY2hlX2ZpbGUKK2ZpCisKK2FzX2ZuX2FwcGVuZCBh
Y19oZWFkZXJfbGlzdCAiIHN5cy90aW1lLmgiCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3Qg
IiB1bmlzdGQuaCIKK2FzX2ZuX2FwcGVuZCBhY19mdW5jX2xpc3QgIiBhbGFybSIKK2FzX2ZuX2Fw
cGVuZCBhY19oZWFkZXJfbGlzdCAiIHN0ZGxpYi5oIgorYXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9s
aXN0ICIgc3lzL3BhcmFtLmgiCisjIENoZWNrIHRoYXQgdGhlIHByZWNpb3VzIHZhcmlhYmxlcyBz
YXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCisjIHZhbHVlLgorYWNfY2FjaGVf
Y29ycnVwdGVkPWZhbHNlCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91c192YXJzOyBkbworICBl
dmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAorICBldmFsIGFjX25ld19z
ZXQ9XCRhY19lbnZfJHthY192YXJ9X3NldAorICBldmFsIGFjX29sZF92YWw9XCRhY19jdl9lbnZf
JHthY192YXJ9X3ZhbHVlCisgIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vudl8ke2FjX3Zhcn1fdmFs
dWUKKyAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbgorICAgIHNldCwpCisgICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXIn
IHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwn
IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CisgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7
OworICAgICxzZXQpCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4m
NQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIG5vdCBzZXQgaW4gdGhl
IHByZXZpb3VzIHJ1biIgPiYyO30KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7CisgICAg
LCk7OworICAgICopCisgICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192
YWwiOyB0aGVuCisJIyBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGRvIG5vdCBsZWFkIHRvIGZh
aWx1cmUuCisJYWNfb2xkX3ZhbF93PWBlY2hvIHggJGFjX29sZF92YWxgCisJYWNfbmV3X3ZhbF93
PWBlY2hvIHggJGFjX25ld192YWxgCisJaWYgdGVzdCAiJGFjX29sZF92YWxfdyIgIT0gIiRhY19u
ZXdfdmFsX3ciOyB0aGVuCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46
IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNp
bmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQorCSAgYWNfY2FjaGVfY29ycnVwdGVkPToKKwll
bHNlCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHdhcm5pbmc6
IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2
aW91cyBydW46IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRl
c3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7
fQorCSAgZXZhbCAkYWNfdmFyPVwkYWNfb2xkX3ZhbAorCWZpCisJeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgXGAkYWNfb2xkX3ZhbCciID4m
Mjt9CisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGN1cnJlbnQg
dmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICAgY3VycmVudCB2
YWx1ZTogXGAkYWNfbmV3X3ZhbCciID4mMjt9CisgICAgICBmaTs7CisgIGVzYWMKKyAgIyBQYXNz
IHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLgorICBpZiB0ZXN0ICIkYWNfbmV3
X3NldCIgPSBzZXQ7IHRoZW4KKyAgICBjYXNlICRhY19uZXdfdmFsIGluCisgICAgKlwnKikgYWNf
YXJnPSRhY192YXI9YCRhc19lY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQgInMvJy8nXFxcXFxcXFwn
Jy9nImAgOzsKKyAgICAqKSBhY19hcmc9JGFjX3Zhcj0kYWNfbmV3X3ZhbCA7OworICAgIGVzYWMK
KyAgICBjYXNlICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIgaW4KKyAgICAgICoiICckYWNfYXJnJyAi
KikgOzsgIyBBdm9pZCBkdXBzLiAgVXNlIG9mIHF1b3RlcyBlbnN1cmVzIGFjY3VyYWN5LgorICAg
ICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIiA7OworICAg
IGVzYWMKKyAgZmkKK2RvbmUKK2lmICRhY19jYWNoZV9jb3JydXB0ZWQ7IHRoZW4KKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoi
ID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBjaGFuZ2VzIGlu
IHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQorJGFzX2VjaG8g
IiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNl
IHRoZSBidWlsZCIgPiYyO30KKyAgYXNfZm5fZXJyb3IgJD8gInJ1biBcYG1ha2UgZGlzdGNsZWFu
JyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1Citm
aQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE1haW4gYm9keSBvZiBzY3JpcHQuICMj
CisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRD
UFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4k
YWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAk
Q1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxl
cl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCithY19jb25maWdfZmlsZXM9IiRhY19j
b25maWdfZmlsZXMgLi4vY29uZmlnL1Rvb2xzLm1rIgorCithY19jb25maWdfaGVhZGVycz0iJGFj
X2NvbmZpZ19oZWFkZXJzIGNvbmZpZy5oIgorCisKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGlu
IC4gIiRzcmNkaXIiLy47IGRvCisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRo
ZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rp
ci9pbnN0YWxsLXNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0
YWxsLnNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9
IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIk
YWNfZGlyL3NodG9vbCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0
YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQor
ZG9uZQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJj
YW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gLiBcIiRzcmNk
aXJcIi8uIiAiJExJTkVOTyIgNQorZmkKKworIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVu
ZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0
aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCisjIFRoZXkgY2FuIGNhdXNlIHNl
cmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3Rv
cnkKKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KK2FjX2Nv
bmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRv
bid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25m
aWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlndXJlPSIkU0hF
TEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgor
CisKKworIyBDaGVjayBpZiBDRkxBR1MsIExERkxBR1MsIExJQlMsIENQUEZMQUdTIG9yIENQUCBp
cyBzZXQgYW5kIHByaW50IGEgd2FybmluZworCitpZiB0ZXN0IC1uICIkQ0MkQ0ZMQUdTJExERkxB
R1MkTElCUyRDUFBGTEFHUyRDUFAiOyB0aGVuIDoKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogU2V0dGluZyBDQywgQ0ZMQUdTLCBMREZMQUdT
LCBMSUJTLCBDUFBGTEFHUyBvciBDUFAgaXMgbm90IFwKK3JlY29tbWVuZGVkLCB1c2UgUFJFUEVO
RF9JTkNMVURFUywgUFJFUEVORF9MSUIsIFwKK0FQUEVORF9JTkNMVURFUyBhbmQgQVBQRU5EX0xJ
QiBpbnN0ZWFkIHdoZW4gcG9zc2libGUuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6
IFNldHRpbmcgQ0MsIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIG5v
dCBcCityZWNvbW1lbmRlZCwgdXNlIFBSRVBFTkRfSU5DTFVERVMsIFBSRVBFTkRfTElCLCBcCitB
UFBFTkRfSU5DTFVERVMgYW5kIEFQUEVORF9MSUIgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLiIgPiYy
O30KKworZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxl
PSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5r
PSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNv
bmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBp
bGVyX2dudQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3Qg
dGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Z2NjIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsg
YWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk
Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0Mi
OyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl
IHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3Ig
YXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19k
aXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl
X2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo
ZW4KKyAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNf
c2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsg
dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+
JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgorICBh
Y19jdF9DQz0kQ0MKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBj
YW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0k
MgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3Rf
Q0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVz
ZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf
U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg
IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn
ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCisgICAgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9
JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lm
IHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0ND
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3Qg
IngkYWNfY3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9z
c19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl
Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
dXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQor
YWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitlbHNl
CisgIENDPSIkYWNfY3ZfcHJvZ19DQyIKK2ZpCisKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAg
ICAgICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgIyBFeHRyYWN0
IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBh
Y193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7
IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBh
c19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2Rp
ciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf
ZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhl
bgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCisgICAgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRo
ZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRD
QyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisKKyAgZmkKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFj
dCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0
aCBhcmdzLgorc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJv
Z19DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl
bHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfcHJvZ19yZWplY3RlZD1u
bworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAk
UEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k
aXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z
OyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh
c190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgaWYg
dGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVu
CisgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKKyAgICAgICBjb250aW51ZQorICAgICBmaQor
ICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJy
ZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitpZiB0ZXN0ICRh
Y19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCisgICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUg
cGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KKyAgc2V0IGR1bW15ICRhY19jdl9w
cm9nX0NDCisgIHNoaWZ0CisgIGlmIHRlc3QgJCMgIT0gMDsgdGhlbgorICAgICMgV2UgY2hvc2Ug
YSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgorICAgICMgSG93ZXZlciwg
aXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KKyAg
ICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxs
IGZpbGUgbmFtZS4KKyAgICBzaGlmdAorICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dv
cmQkezErJyAnfSRAIgorICBmaQorZmkKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRl
c3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisg
IGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gY2wu
ZXhlCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVm
aXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQg
ZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHth
Y19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIk
Q0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9
JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZT
PSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBh
Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRl
c3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJGFj
X3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9
JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJEND
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICB0ZXN0
IC1uICIkQ0MiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisg
IGFjX2N0X0NDPSRDQworICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKK2RvCisgICMgRXh0cmFjdCB0
aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUg
d2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7
YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNf
Y3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBh
c19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2Rp
ciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf
ZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhl
bgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lG
UworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIk
YWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DQyIgPiY2OyB9Citl
bHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu
byIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRhY19jdF9D
QyIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAg
ICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5l
ZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FS
TklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVm
aXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNh
YworICAgIENDPSRhY19jdF9DQworICBmaQorZmkKKworZmkKKworCit0ZXN0IC16ICIkQ0MiICYm
IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAk
YWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjI7fQorYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBc
JFBBVEgKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsg
fQorCisjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCiskYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxl
ciB2ZXJzaW9uIiA+JjUKK3NldCBYICRhY19jb21waWxlCithY19jb21waWxlcj0kMgorZm9yIGFj
X29wdGlvbiBpbiAtLXZlcnNpb24gLXYgLVYgLXF2ZXJzaW9uOyBkbworICB7IHsgYWNfdHJ5PSIk
YWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiog
fCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0k
YWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUK
KyAgKGV2YWwgIiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIpIDI+Y29uZnRlc3QuZXJyCisg
IGFjX3N0YXR1cz0kPworICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIHNlZCAn
MTBhXAorLi4uIHJlc3Qgb2Ygc3RkZXJyIG91dHB1dCBkZWxldGVkIC4uLgorICAgICAgICAgMTBx
JyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1Cisg
IGZpCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFj
X3N0YXR1cyA9IDA7IH0KK2RvbmUKKworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKwor
ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCithY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVh
bl9maWxlcworYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxlcyBhLm91dCBhLm91dC5kU1lN
IGEuZXhlIGIub3V0IgorIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgd2l0aG91dCAtbyBm
aXJzdCwgZGlzcmVnYXJkIGEub3V0LgorIyBJdCB3aWxsIGhlbHAgdXMgZGlhZ25vc2UgYnJva2Vu
IGNvbXBpbGVycywgYW5kIGZpbmRpbmcgb3V0IGFuIGludHVpdGlvbgorIyBvZiBleGVleHQuCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg
dGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0
aGUgQyBjb21waWxlciB3b3Jrcy4uLiAiID4mNjsgfQorYWNfbGlua19kZWZhdWx0PWAkYXNfZWNo
byAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRlc3RbXiBdKi8vJ2AKKworIyBUaGUgcG9z
c2libGUgb3V0cHV0IGZpbGVzOgorYWNfZmlsZXM9ImEub3V0IGNvbmZ0ZXN0LmV4ZSBjb25mdGVz
dCBhLmV4ZSBhX291dC5leGUgYi5vdXQgY29uZnRlc3QuKiIKKworYWNfcm1maWxlcz0KK2ZvciBh
Y19maWxlIGluICRhY19maWxlcworZG8KKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4
dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJn
IHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkgOzsKKyAgICAqICkgYWNf
cm1maWxlcz0iJGFjX3JtZmlsZXMgJGFjX2ZpbGUiOzsKKyAgZXNhYworZG9uZQorcm0gLWYgJGFj
X3JtZmlsZXMKKworaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmtfZGVmYXVsdCIKK2Nhc2UgIigoJGFj
X3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Cisg
ICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNf
dHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmtfZGVmYXVsdCIpIDI+JjUKKyAgYWNf
c3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9
ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAgIyBB
dXRvY29uZi0yLjEzIGNvdWxkIHNldCB0aGUgYWNfY3ZfZXhlZXh0IHZhcmlhYmxlIHRvIGBubycu
CisjIFNvIGlnbm9yZSBhIHZhbHVlIG9mIGBubycsIG90aGVyd2lzZSB0aGlzIHdvdWxkIGxlYWQg
dG8gYEVYRUVYVCA9IG5vJworIyBpbiBhIE1ha2VmaWxlLiAgV2Ugc2hvdWxkIG5vdCBvdmVycmlk
ZSBhY19jdl9leGVleHQgaWYgaXQgd2FzIGNhY2hlZCwKKyMgc28gdGhhdCB0aGUgdXNlciBjYW4g
c2hvcnQtY2lyY3VpdCB0aGlzIHRlc3QgZm9yIGNvbXBpbGVycyB1bmtub3duIHRvCisjIEF1dG9j
b25mLgorZm9yIGFjX2ZpbGUgaW4gJGFjX2ZpbGVzICcnCitkbworICB0ZXN0IC1mICIkYWNfZmls
ZSIgfHwgY29udGludWUKKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNv
ZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAg
fCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkKKwk7OworICAgIFthYl0ub3V0ICkKKwkj
IFdlIGZvdW5kIHRoZSBkZWZhdWx0IGV4ZWN1dGFibGUsIGJ1dCBleGVleHQ9JycgaXMgbW9zdAor
CSMgY2VydGFpbmx5IHJpZ2h0LgorCWJyZWFrOzsKKyAgICAqLiogKQorCWlmIHRlc3QgIiR7YWNf
Y3ZfZXhlZXh0K3NldH0iID0gc2V0ICYmIHRlc3QgIiRhY19jdl9leGVleHQiICE9IG5vOworCXRo
ZW4gOjsgZWxzZQorCSAgIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChc
Li4qXCknYAorCWZpCisJIyBXZSBzZXQgYWNfY3ZfZXhlZXh0IGhlcmUgYmVjYXVzZSB0aGUgbGF0
ZXIgdGVzdCBmb3IgaXQgaXMgbm90CisJIyBzYWZlOiBjcm9zcyBjb21waWxlcnMgbWF5IG5vdCBh
ZGQgdGhlIHN1ZmZpeCBpZiBnaXZlbiBhbiBgLW8nCisJIyBhcmd1bWVudCwgc28gd2UgbWF5IG5l
ZWQgdG8ga25vdyBpdCBhdCB0aGF0IHBvaW50IGFscmVhZHkuCisJIyBFdmVuIGlmIHRoaXMgc2Vj
dGlvbiBsb29rcyBjcnVmdHk6IGl0IGhhcyB0aGUgYWR2YW50YWdlIG9mCisJIyBhY3R1YWxseSB3
b3JraW5nLgorCWJyZWFrOzsKKyAgICAqICkKKwlicmVhazs7CisgIGVzYWMKK2RvbmUKK3Rlc3Qg
IiRhY19jdl9leGVleHQiID0gbm8gJiYgYWNfY3ZfZXhlZXh0PQorCitlbHNlCisgIGFjX2ZpbGU9
JycKK2ZpCitpZiB0ZXN0IC16ICIkYWNfZmlsZSI7IHRoZW4gOgorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+
JjY7IH0KKyRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdz
L14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCit7IHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIk
YXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJDIGNv
bXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBt
b3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4m
NjsgfQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4uLiAi
ID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYWNfZmlsZSIgPiY2OyB9CithY19leGVleHQ9JGFj
X2N2X2V4ZWV4dAorCitybSAtZiAtciBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGNvbmZ0ZXN0JGFj
X2N2X2V4ZWV4dCBiLm91dAorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZp
eCBvZiBleGVjdXRhYmxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9m
IGV4ZWN1dGFibGVzLi4uICIgPiY2OyB9CitpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2Ug
IigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3Ry
eTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0i
XCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hv
ICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CisgIGFjX3N0
YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAk
YWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6CisgICMgSWYg
Ym90aCBgY29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBv
YnNlcnZhYmxlKQorIyBjYXRjaCBgY29uZnRlc3QuZXhlJy4gIEZvciBpbnN0YW5jZSB3aXRoIEN5
Z3dpbiwgYGxzIGNvbmZ0ZXN0JyB3aWxsCisjIHdvcmsgcHJvcGVybHkgKGkuZS4sIHJlZmVyIHRv
IGBjb25mdGVzdC5leGUnKSwgd2hpbGUgaXQgd29uJ3Qgd2l0aAorIyBgcm0nLgorZm9yIGFjX2Zp
bGUgaW4gY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCisgIHRlc3QgLWYgIiRh
Y19maWxlIiB8fCBjb250aW51ZQorICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwg
Ki54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAq
Lm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKSA7OworICAgICouKiApIGFjX2N2
X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAorCSAgYnJlYWs7Owor
ICAgICogKSBicmVhazs7CisgIGVzYWMKK2RvbmUKK2Vsc2UKKyAgeyB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAk
PyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBh
bmQgbGluaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDUg
OyB9CitmaQorcm0gLWYgY29uZnRlc3QgY29uZnRlc3QkYWNfY3ZfZXhlZXh0Cit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1
CiskYXNfZWNobyAiJGFjX2N2X2V4ZWV4dCIgPiY2OyB9CisKK3JtIC1mIGNvbmZ0ZXN0LiRhY19l
eHQKK0VYRUVYVD0kYWNfY3ZfZXhlZXh0CithY19leGVleHQ9JEVYRUVYVAorY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor
I2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK0ZJTEUgKmYgPSBmb3BlbiAoImNv
bmZ0ZXN0Lm91dCIsICJ3Iik7CisgcmV0dXJuIGZlcnJvciAoZikgfHwgZmNsb3NlIChmKSAhPSAw
OworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xl
YW5fZmlsZXMgY29uZnRlc3Qub3V0IgorIyBDaGVjayB0aGF0IHRoZSBjb21waWxlciBwcm9kdWNl
cyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIKKyMgdGhlIGNvbXBpbGVy
IGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5n
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGlu
Zy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCisg
IHsgeyBhY190cnk9IiRhY19saW5rIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxg
KiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3Ry
eTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChl
dmFsICIkYWNfbGluayIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19z
dGF0dXMgPSAwOyB9CisgIGlmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCcKKyAg
eyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNo
bz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190
cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIK
KyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX3RyeSIpIDI+JjUK
KyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9OyB0aGVu
CisgICAgY3Jvc3NfY29tcGlsaW5nPW5vCisgIGVsc2UKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29t
cGlsaW5nIiA9IG1heWJlOyB0aGVuCisJY3Jvc3NfY29tcGlsaW5nPXllcworICAgIGVsc2UKKwl7
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFj
X3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYy
O30KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCitJZiB5
b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KK1NlZSBcYGNvbmZpZy5s
b2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1IDsgfQorICAgIGZpCisgIGZpCitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjcm9zc19j
b21waWxpbmciID4mNQorJGFzX2VjaG8gIiRjcm9zc19jb21waWxpbmciID4mNjsgfQorCitybSAt
ZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCBjb25mdGVzdC5vdXQKK2Fj
X2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzLi4uICIg
PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X29iamV4dCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWlu
ICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QubyBj
b25mdGVzdC5vYmoKK2lmIHsgeyBhY190cnk9IiRhY19jb21waWxlIgorY2FzZSAiKCgkYWNfdHJ5
IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikg
YWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlf
ZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY29tcGlsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/
CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0
dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAgZm9yIGFjX2ZpbGUg
aW4gY29uZnRlc3QubyBjb25mdGVzdC5vYmogY29uZnRlc3QuKjsgZG8KKyAgdGVzdCAtZiAiJGFj
X2ZpbGUiIHx8IGNvbnRpbnVlOworICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwg
Ki54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAq
Lm1hcCB8ICouaW5mIHwgKi5kU1lNICkgOzsKKyAgICAqKSBhY19jdl9vYmpleHQ9YGV4cHIgIiRh
Y19maWxlIiA6ICcuKlwuXCguKlwpJ2AKKyAgICAgICBicmVhazs7CisgIGVzYWMKK2RvbmUKK2Vs
c2UKKyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3Mv
Xi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKK3sgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRh
c19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlCitTZWUgXGBj
b25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNSA7IH0KK2ZpCitybSAtZiBj
b25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1Cisk
YXNfZWNobyAiJGFjX2N2X29iamV4dCIgPiY2OyB9CitPQkpFWFQ9JGFjX2N2X29iamV4dAorYWNf
b2JqZXh0PSRPQkpFWFQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxl
ci4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9jX2NvbXBpbGVyX2dudStzZXR9IiA9IHNl
dDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25m
ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KKworaW50CittYWluICgpCit7CisjaWZuZGVmIF9fR05VQ19fCisgICAgICAgY2hva2UgbWUK
KyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY29tcGlsZXJfZ251PXllcworZWxzZQorICBh
Y19jb21waWxlcl9nbnU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2FjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21w
aWxlcl9nbnUKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX2Nv
bXBpbGVyX2dudSIgPiY2OyB9CitpZiB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4K
KyAgR0NDPXllcworZWxzZQorICBHQ0M9CitmaQorYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0
fQorYWNfc2F2ZV9DRkxBR1M9JENGTEFHUworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KK2lmIHRlc3Qg
IiR7YWNfY3ZfcHJvZ19jY19nK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfc2F2ZV9jX3dlcnJvcl9mbGFnPSRhY19jX3dlcnJvcl9m
bGFnCisgICBhY19jX3dlcnJvcl9mbGFnPXllcworICAgYWNfY3ZfcHJvZ19jY19nPW5vCisgICBD
RkxBR1M9Ii1nIgorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4
dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2N2X3Byb2dfY2NfZz15ZXMKK2Vsc2UKKyAgQ0ZMQUdTPSIiCisgICAgICBjYXQg
Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMu
aC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YK
K2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBhY19j
X3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcKKwkgQ0ZMQUdTPSItZyIKKwkgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9G
CitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Byb2df
Y2NfZz15ZXMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj
b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9
JGFjX3NhdmVfY193ZXJyb3JfZmxhZworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfcHJvZ19jY19nIiA+JjY7IH0KK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRo
ZW4KKyAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUworZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cg
PSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1n
IC1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0iLWciCisgIGZpCitlbHNlCisgIGlmIHRlc3QgIiRH
Q0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9Cisg
IGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OS4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9wcm9nX2NjX2M4OStzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2N2X3Byb2dfY2NfYzg5PW5vCithY19zYXZlX0ND
PSRDQworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy8qIE1vc3Qg
b2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25m
LnNoLiAgKi8KK3N0cnVjdCBidWYgeyBpbnQgeDsgfTsKK0ZJTEUgKiAoKnJjc29wZW4pIChzdHJ1
Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7CitzdGF0aWMgY2hhciAqZSAocCwgaSkKKyAg
ICAgY2hhciAqKnA7CisgICAgIGludCBpOworeworICByZXR1cm4gcFtpXTsKK30KK3N0YXRpYyBj
aGFyICpmIChjaGFyICogKCpnKSAoY2hhciAqKiwgaW50KSwgY2hhciAqKnAsIC4uLikKK3sKKyAg
Y2hhciAqczsKKyAgdmFfbGlzdCB2OworICB2YV9zdGFydCAodixwKTsKKyAgcyA9IGcgKHAsIHZh
X2FyZyAodixpbnQpKTsKKyAgdmFfZW5kICh2KTsKKyAgcmV0dXJuIHM7Cit9CisKKy8qIE9TRiA0
LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQg
aGFzCisgICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4
IGNoYXJhY3RlciBjb25zdGFudHMuCisgICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVu
Zm9ydHVuYXRlbHksIGluc3RlYWQgYXJlIHNpbGVudGx5IHRyZWF0ZWQKKyAgIGFzICd4Jy4gIFRo
ZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJvciwgdW50aWwgLXN0ZCBpcyBhZGRlZCB0byBnZXQK
KyAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVz
IG91dCB0cnVlLCBmb3IgYW4KKyAgIGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdzIG5lY2Vzc2Fy
eSB0byB3cml0ZSAnXHgwMCc9PTAgdG8gZ2V0IHNvbWV0aGluZworICAgdGhhdCdzIHRydWUgb25s
eSB3aXRoIC1zdGQuICAqLworaW50IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0x
XTsKKworLyogSUJNIEMgNiBmb3IgQUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQsIGJ1dCBp
dCByZXBsYWNlcyBtYWNybyBwYXJhbWV0ZXJzCisgICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFj
dGVyIGNvbnN0YW50cy4gICovCisjZGVmaW5lIEZPTyh4KSAneCcKK2ludCB4bGM2X2NjX2FycmF5
W0ZPTyhhKSA9PSAneCcgPyAxIDogLTFdOworCitpbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsK
K3N0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9Oworc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91
YmxlIGEpO307CitpbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3Qg
YnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKK2ludCBhcmdjOworY2hhciAq
KmFyZ3Y7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBd
ICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKKyAgOworICByZXR1cm4gMDsKK30KK19B
Q0VPRgorZm9yIGFjX2FyZyBpbiAnJyAtcWxhbmdsdmw9ZXh0Yzg5IC1xbGFuZ2x2bD1hbnNpIC1z
dGQgXAorCS1BZSAiLUFhIC1EX0hQVVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJT05TX18iCitk
bworICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKKyAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAi
JExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCitmaQorcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAorICB0ZXN0ICJ4JGFjX2N2X3By
b2dfY2NfYzg5IiAhPSAieG5vIiAmJiBicmVhaworZG9uZQorcm0gLWYgY29uZnRlc3QuJGFjX2V4
dAorQ0M9JGFjX3NhdmVfQ0MKKworZmkKKyMgQUNfQ0FDSEVfVkFMCitjYXNlICJ4JGFjX2N2X3By
b2dfY2NfYzg5IiBpbgorICB4KQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1CiskYXNfZWNobyAibm9uZSBuZWVkZWQi
ID4mNjsgfSA7OworICB4bm8pCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IHVuc3VwcG9ydGVkIiA+JjUKKyRhc19lY2hvICJ1bnN1cHBvcnRlZCIg
PiY2OyB9IDs7CisgICopCisgICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19jODkiCisgICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9n
X2NjX2M4OSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjY7IH0gOzsKK2Vz
YWMKK2lmIHRlc3QgIngkYWNfY3ZfcHJvZ19jY19jODkiICE9IHhubzsgdGhlbiA6CisKK2ZpCisK
K2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRD
RkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNf
ZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKwor
CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAk
Q0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBj
b25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFj
X2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Cit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBy
dW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBy
dW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICIgPiY2OyB9CisjIE9uIFN1bnMsIHNvbWV0aW1lcyAk
Q1BQIG5hbWVzIGEgZGlyZWN0b3J5LgoraWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQ
UCI7IHRoZW4KKyAgQ1BQPQorZmkKK2lmIHRlc3QgLXogIiRDUFAiOyB0aGVuCisgIGlmIHRlc3Qg
IiR7YWNfY3ZfcHJvZ19DUFArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgorZWxzZQorICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRz
IHRvIGJlIGV4cGFuZGVkCisgICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRp
b25hbC1jcHAiICIvbGliL2NwcCIKKyAgICBkbworICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQor
Zm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhlYWRl
ciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCisgICMgd2l0
aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIFByZWZlciA8bGltaXRzLmg+IHRv
IDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKKyAgIyA8bGltaXRzLmg+
IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCisgICMgT24gdGhlIE5lWFQs
IGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCisgICMg
bm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhp
cyBjYXNlLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisv
KiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRz
Lmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCQkgICAgIFN5bnRheCBl
cnJvcgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxz
ZQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1m
IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworICAjIE9LLCB3b3Jr
cyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwor
ICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8YWNf
bm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhl
biA6CisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCitjb250aW51ZQorZWxz
ZQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19vaz06CiticmVhaworZmkKK3Jt
IC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBC
ZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2Fz
IHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0
CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CisgIGJyZWFrCitmaQorCisgICAgZG9uZQorICAg
IGFjX2N2X3Byb2dfQ1BQPSRDUFAKKworZmkKKyAgQ1BQPSRhY19jdl9wcm9nX0NQUAorZWxzZQor
ICBhY19jdl9wcm9nX0NQUD0kQ1BQCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRDUFAiID4mNQorJGFzX2VjaG8gIiRDUFAiID4mNjsgfQorYWNf
cHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitk
bworICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3Vy
aW5nIGdsaWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIFBy
ZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2lu
Y2UKKyAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMu
CisgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGls
ZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlz
IGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19TVERDX18K
KyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRp
ZgorCQkgICAgIFN5bnRheCBlcnJvcgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5F
Tk8iOyB0aGVuIDoKKworZWxzZQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitj
b250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19l
eHQKKworICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9u
ZXhpc3RlbnQgaGVhZGVycworICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4g
ICovCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf
Y3BwICIkTElORU5PIjsgdGhlbiA6CisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5w
dXQuCitjb250aW51ZQorZWxzZQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19v
az06CiticmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRh
Y19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdz
IGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfZXh0CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CisKK2Vsc2UKKyAg
eyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRh
Y19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4m
Mjt9Cithc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5
IGNoZWNrCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNSA7
IH0KK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0n
JENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0n
JENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25m
dGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxl
cl9nbnUKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIgPiY1CiskYXNfZWNo
b19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4g
IiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9HUkVQK3NldH0iID0gc2V0OyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAteiAiJEdSRVAi
OyB0aGVuCisgIGFjX3BhdGhfR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUg
dXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRIJFBBVEhf
U0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGdyZXAgZ2dyZXA7IGRv
CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv
CisgICAgICBhY19wYXRoX0dSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAg
ICB7IHRlc3QgLWYgIiRhY19wYXRoX0dSRVAiICYmICRhc190ZXN0X3ggIiRhY19wYXRoX0dSRVAi
OyB9IHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9HUkVQIGFuZCBzZWxlY3Qg
aXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9HUkVQCitjYXNl
IGAiJGFjX3BhdGhfR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0
aF9HUkVQPSIkYWNfcGF0aF9HUkVQIiBhY19wYXRoX0dSRVBfZm91bmQ9Ojs7CisqKQorICBhY19j
b3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6
CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRt
cCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0
LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJ0dSRVAnID4+ICJjb25mdGVzdC5ubCIK
KyAgICAiJGFjX3BhdGhfR1JFUCIgLWUgJ0dSRVAkJyAtZSAnLShjYW5ub3QgbWF0Y2gpLScgPCAi
Y29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRp
ZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsK
KyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBp
ZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0dSRVBfbWF4LTB9OyB0aGVuCisgICAgICAj
IEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBv
bmUKKyAgICAgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIKKyAgICAgIGFjX3BhdGhf
R1JFUF9tYXg9JGFjX2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1
dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJy
ZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5s
IGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX0dSRVBfZm91bmQgJiYgYnJl
YWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRl
c3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFj
Y2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3Iv
eHBnNC9iaW4iICIkTElORU5PIiA1CisgIGZpCitlbHNlCisgIGFjX2N2X3BhdGhfR1JFUD0kR1JF
UAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3ZfcGF0aF9HUkVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9HUkVQIiA+
JjY7IH0KKyBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgorCisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciBlZ3JlcC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wYXRoX0VH
UkVQK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgaWYgZWNobyBhIHwgJEdSRVAgLUUgJyhhfGIpJyA+L2Rldi9udWxsIDI+JjEKKyAgIHRo
ZW4gYWNfY3ZfcGF0aF9FR1JFUD0iJEdSRVAgLUUiCisgICBlbHNlCisgICAgIGlmIHRlc3QgLXog
IiRFR1JFUCI7IHRoZW4KKyAgYWNfcGF0aF9FR1JFUF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhy
b3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAor
ICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ
QVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbgorZG8KKyAgSUZTPSRhc19zYXZlX0lGUwor
ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIGVncmVw
OyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z
OyBkbworICAgICAgYWNfcGF0aF9FR1JFUD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIK
KyAgICAgIHsgdGVzdCAtZiAiJGFjX3BhdGhfRUdSRVAiICYmICRhc190ZXN0X3ggIiRhY19wYXRo
X0VHUkVQIjsgfSB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfRUdSRVAgYW5k
IHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0VH
UkVQCitjYXNlIGAiJGFjX3BhdGhfRUdSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisg
IGFjX2N2X3BhdGhfRUdSRVA9IiRhY19wYXRoX0VHUkVQIiBhY19wYXRoX0VHUkVQX2ZvdW5kPTo7
OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5p
biIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIg
PiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAg
IGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdFR1JFUCcgPj4g
ImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9FR1JFUCIgJ0VHUkVQJCcgPCAiY29uZnRlc3Qu
bmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0
ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19m
bl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRh
Y19jb3VudCAtZ3QgJHthY19wYXRoX0VHUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9u
ZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAg
ICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIKKyAgICAgIGFjX3BhdGhfRUdSRVBf
bWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2Vl
bXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhawor
ICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25m
dGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9FR1JFUF9mb3VuZCAmJiBicmVhayAz
CisgICAgZG9uZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYgdGVzdCAt
eiAiJGFjX2N2X3BhdGhfRUdSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2Vw
dGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hw
ZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0VHUkVQPSRFR1JF
UAorZmkKKworICAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVAiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRo
X0VHUkVQIiA+JjY7IH0KKyBFR1JFUD0iJGFjX2N2X3BhdGhfRUdSRVAiCisKKworeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRl
ciBmaWxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxl
cy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsg
dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2N2X2hlYWRlcl9zdGRjPXllcworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1u
bworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl
c3QuJGFjX2V4dAorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAj
IFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFO
U0kuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworX0FDRU9GCitpZiAoZXZh
bCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgICRFR1JFUCAibWVtY2hyIiA+
L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitm
aQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0g
eWVzOyB0aGVuCisgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwg
Y29udHJhcnkgdG8gQU5TSS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitf
QUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVH
UkVQICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRl
cl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hl
YWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9u
LUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKyAgaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICA6CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNs
dWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmICgoJyAnICYgMHgwRkYpID09
IDB4MDIwKQorIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQor
IyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMp
KQorI2Vsc2UKKyMgZGVmaW5lIElTTE9XRVIoYykgXAorCQkgICAoKCdhJyA8PSAoYykgJiYgKGMp
IDw9ICdpJykgXAorCQkgICAgIHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKKwkJICAg
ICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElT
TE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjZW5kaWYKKworI2RlZmluZSBYT1IoZSwg
ZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKK2ludAorbWFpbiAoKQoreworICBp
bnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgIGlmIChYT1IgKGlzbG93ZXIg
KGkpLCBJU0xPV0VSIChpKSkKKwl8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKKyAgICAg
IHJldHVybiAyOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIk
TElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAt
ZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFj
X2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4k
YWNfZXh0CitmaQorCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9o
ZWFkZXJfc3RkYyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhl
bgorCiskYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mZGVmcy5oCisKK2Zp
CisKKyMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50dHlwZXMuaCBhcmUgY29uZmxpY3Rp
bmcuCitmb3IgYWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3Ry
aW5nLmggbWVtb3J5Lmggc3RyaW5ncy5oIFwKKwkJICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0
ZC5oCitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVh
ZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8i
ICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0CisiCitp
ZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNh
dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFk
ZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCisKKyAgYWNfZm5f
Y19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm1pbml4L2NvbmZpZy5oIiAiYWNfY3Zf
aGVhZGVyX21pbml4X2NvbmZpZ19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4
JGFjX2N2X2hlYWRlcl9taW5peF9jb25maWdfaCIgPSB4IiJ5ZXM7IHRoZW4gOgorICBNSU5JWD15
ZXMKK2Vsc2UKKyAgTUlOSVg9CitmaQorCisKKyAgaWYgdGVzdCAiJE1JTklYIiA9IHllczsgdGhl
bgorCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfU09VUkNFIDEiID4+Y29uZmRlZnMuaAorCisK
KyRhc19lY2hvICIjZGVmaW5lIF9QT1NJWF8xX1NPVVJDRSAyIiA+PmNvbmZkZWZzLmgKKworCisk
YXNfZWNobyAiI2RlZmluZSBfTUlOSVggMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKKworCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBp
dCBpcyBzYWZlIHRvIGRlZmluZSBfX0VYVEVOU0lPTlNfXyIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyB3aGV0aGVyIGl0IGlzIHNhZmUgdG8gZGVmaW5lIF9fRVhURU5TSU9OU19fLi4uICIgPiY2
OyB9CitpZiB0ZXN0ICIke2FjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fK3NldH0i
ID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworCisjCSAgZGVmaW5lIF9fRVhURU5TSU9OU19fIDEKKwkgICRhY19pbmNsdWRlc19k
ZWZhdWx0CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitp
ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3NhZmVfdG9f
ZGVmaW5lX19fZXh0ZW5zaW9uc19fPXllcworZWxzZQorICBhY19jdl9zYWZlX3RvX2RlZmluZV9f
X2V4dGVuc2lvbnNfXz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25z
X18iID4mNQorJGFzX2VjaG8gIiRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIg
PiY2OyB9CisgIHRlc3QgJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fID0geWVz
ICYmCisgICAgJGFzX2VjaG8gIiNkZWZpbmUgX19FWFRFTlNJT05TX18gMSIgPj5jb25mZGVmcy5o
CisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX0FMTF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKyAg
JGFzX2VjaG8gIiNkZWZpbmUgX0dOVV9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2Vj
aG8gIiNkZWZpbmUgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEiID4+Y29uZmRlZnMuaAorCisg
ICRhc19lY2hvICIjZGVmaW5lIF9UQU5ERU1fU09VUkNFIDEiID4+Y29uZmRlZnMuaAorCisKKyMg
TWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29u
ZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVt
IHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+
JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxp
YXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNI
RUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIg
PSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11
c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4
X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIk
U0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJ
TkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0K
K2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZh
bGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDUgOzsKK2VzYWMKK2J1aWxk
PSRhY19jdl9idWlsZAorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworc2V0IHggJGFjX2N2X2J1
aWxkCitzaGlmdAorYnVpbGRfY3B1PSQxCitidWlsZF92ZW5kb3I9JDIKK3NoaWZ0OyBzaGlmdAor
IyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUg
JCosCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6CitidWlsZF9vcz0kKgorSUZTPSRhY19zYXZl
X0lGUworY2FzZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIg
fCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9o
b3N0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KKyAgYWNfY3ZfaG9zdD0kYWNf
Y3ZfYnVpbGQKK2Vsc2UKKyAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcu
c3ViIiAkaG9zdF9hbGlhc2AgfHwKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhf
ZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorZmkKKworZmkK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf
aG9zdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQorY2FzZSAkYWNfY3ZfaG9z
dCBpbgorKi0qLSopIDs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5v
bmljYWwgaG9zdCIgIiRMSU5FTk8iIDUgOzsKK2VzYWMKK2hvc3Q9JGFjX2N2X2hvc3QKK2FjX3Nh
dmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4ICRhY19jdl9ob3N0CitzaGlmdAoraG9zdF9jcHU9
JDEKK2hvc3RfdmVuZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBj
aGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorIyBleGNlcHQgd2l0aCBvbGQg
c2hlbGxzOgoraG9zdF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkaG9zdF9vcyBpbiAq
XCAqKSBob3N0X29zPWBlY2hvICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKwor
CisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKKworCisKKworCisKKworCisKKworCisKKworCisKKwor
CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisK
KworIyBFbmFibGUvZGlzYWJsZSBvcHRpb25zCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUteHNt
IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3hzbStzZXR9IiA9IHNldDsgdGhlbiA6Cisg
IGVuYWJsZXZhbD0kZW5hYmxlX3hzbTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfeHNtIiA9
ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl94c209InkiCisKK2VsaWYgdGVzdCAieCRlbmFi
bGVfeHNtIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3hzbT0ibiIKKworZWxpZiB0ZXN0
IC16ICRheF9jdl94c207IHRoZW4gOgorCisgICAgYXhfY3ZfeHNtPSJuIgorCitmaQoreHNtPSRh
eF9jdl94c20KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdpdGh0dHAgd2FzIGdpdmVuLgor
aWYgdGVzdCAiJHtlbmFibGVfZ2l0aHR0cCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZh
bD0kZW5hYmxlX2dpdGh0dHA7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX2dpdGh0dHAiID0g
Inh5ZXMiOyB0aGVuIDoKKworICAgIGF4X2N2X2dpdGh0dHA9InkiCisKK2VsaWYgdGVzdCAieCRl
bmFibGVfZ2l0aHR0cCIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9naXRodHRwPSJuIgor
CitlbGlmIHRlc3QgLXogJGF4X2N2X2dpdGh0dHA7IHRoZW4gOgorCisgICAgYXhfY3ZfZ2l0aHR0
cD0ibiIKKworZmkKK2dpdGh0dHA9JGF4X2N2X2dpdGh0dHAKKworIyBDaGVjayB3aGV0aGVyIC0t
ZW5hYmxlLW1vbml0b3JzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX21vbml0b3JzK3Nl
dH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfbW9uaXRvcnM7CitmaQorCisK
K2lmIHRlc3QgIngkZW5hYmxlX21vbml0b3JzIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2
X21vbml0b3JzPSJuIgorCitlbGlmIHRlc3QgIngkZW5hYmxlX21vbml0b3JzIiA9ICJ4eWVzIjsg
dGhlbiA6CisKKyAgICBheF9jdl9tb25pdG9ycz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9t
b25pdG9yczsgdGhlbiA6CisKKyAgICBheF9jdl9tb25pdG9ycz0ieSIKKworZmkKK21vbml0b3Jz
PSRheF9jdl9tb25pdG9ycworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdnRwbSB3YXMgZ2l2
ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV92dHBtK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxl
dmFsPSRlbmFibGVfdnRwbTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfdnRwbSIgPSAieHll
cyI7IHRoZW4gOgorCisgICAgYXhfY3ZfdnRwbT0ieSIKKworZWxpZiB0ZXN0ICJ4JGVuYWJsZV92
dHBtIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3Z0cG09Im4iCisKK2VsaWYgdGVzdCAt
eiAkYXhfY3ZfdnRwbTsgdGhlbiA6CisKKyAgICBheF9jdl92dHBtPSJuIgorCitmaQordnRwbT0k
YXhfY3ZfdnRwbQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUteGFwaSB3YXMgZ2l2ZW4uCitp
ZiB0ZXN0ICIke2VuYWJsZV94YXBpK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRl
bmFibGVfeGFwaTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfeGFwaSIgPSAieHllcyI7IHRo
ZW4gOgorCisgICAgYXhfY3ZfeGFwaT0ieSIKKworZWxpZiB0ZXN0ICJ4JGVuYWJsZV94YXBpIiA9
ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3hhcGk9Im4iCisKK2VsaWYgdGVzdCAteiAkYXhf
Y3ZfeGFwaTsgdGhlbiA6CisKKyAgICBheF9jdl94YXBpPSJuIgorCitmaQoreGFwaT0kYXhfY3Zf
eGFwaQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcHl0aG9udG9vbHMgd2FzIGdpdmVuLgor
aWYgdGVzdCAiJHtlbmFibGVfcHl0aG9udG9vbHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFi
bGV2YWw9JGVuYWJsZV9weXRob250b29sczsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfcHl0
aG9udG9vbHMiID0gInhubyI7IHRoZW4gOgorCisgICAgYXhfY3ZfcHl0aG9udG9vbHM9Im4iCisK
K2VsaWYgdGVzdCAieCRlbmFibGVfcHl0aG9udG9vbHMiID0gInh5ZXMiOyB0aGVuIDoKKworICAg
IGF4X2N2X3B5dGhvbnRvb2xzPSJ5IgorCitlbGlmIHRlc3QgLXogJGF4X2N2X3B5dGhvbnRvb2xz
OyB0aGVuIDoKKworICAgIGF4X2N2X3B5dGhvbnRvb2xzPSJ5IgorCitmaQorcHl0aG9udG9vbHM9
JGF4X2N2X3B5dGhvbnRvb2xzCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1vY2FtbHRvb2xz
IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX29jYW1sdG9vbHMrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9vY2FtbHRvb2xzOworZmkKKworCitpZiB0ZXN0ICJ4
JGVuYWJsZV9vY2FtbHRvb2xzIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X29jYW1sdG9v
bHM9Im4iCisKK2VsaWYgdGVzdCAieCRlbmFibGVfb2NhbWx0b29scyIgPSAieHllcyI7IHRoZW4g
OgorCisgICAgYXhfY3Zfb2NhbWx0b29scz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9vY2Ft
bHRvb2xzOyB0aGVuIDoKKworICAgIGF4X2N2X29jYW1sdG9vbHM9InkiCisKK2ZpCitvY2FtbHRv
b2xzPSRheF9jdl9vY2FtbHRvb2xzCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1taW5pdGVy
bSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9taW5pdGVybStzZXR9IiA9IHNldDsgdGhl
biA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX21pbml0ZXJtOworZmkKKworCitpZiB0ZXN0ICJ4JGVu
YWJsZV9taW5pdGVybSIgPSAieHllcyI7IHRoZW4gOgorCisgICAgYXhfY3ZfbWluaXRlcm09Inki
CisKK2VsaWYgdGVzdCAieCRlbmFibGVfbWluaXRlcm0iID0gInhubyI7IHRoZW4gOgorCisgICAg
YXhfY3ZfbWluaXRlcm09Im4iCisKK2VsaWYgdGVzdCAteiAkYXhfY3ZfbWluaXRlcm07IHRoZW4g
OgorCisgICAgYXhfY3ZfbWluaXRlcm09Im4iCisKK2ZpCittaW5pdGVybT0kYXhfY3ZfbWluaXRl
cm0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxvbW91bnQgd2FzIGdpdmVuLgoraWYgdGVz
dCAiJHtlbmFibGVfbG9tb3VudCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5h
YmxlX2xvbW91bnQ7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX2xvbW91bnQiID0gInh5ZXMi
OyB0aGVuIDoKKworICAgIGF4X2N2X2xvbW91bnQ9InkiCisKK2VsaWYgdGVzdCAieCRlbmFibGVf
bG9tb3VudCIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9sb21vdW50PSJuIgorCitlbGlm
IHRlc3QgLXogJGF4X2N2X2xvbW91bnQ7IHRoZW4gOgorCisgICAgYXhfY3ZfbG9tb3VudD0ibiIK
KworZmkKK2xvbW91bnQ9JGF4X2N2X2xvbW91bnQKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl
LWRlYnVnIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2RlYnVnK3NldH0iID0gc2V0OyB0
aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZGVidWc7CitmaQorCisKK2lmIHRlc3QgIngkZW5h
YmxlX2RlYnVnIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X2RlYnVnPSJuIgorCitlbGlm
IHRlc3QgIngkZW5hYmxlX2RlYnVnIiA9ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl9kZWJ1
Zz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9kZWJ1ZzsgdGhlbiA6CisKKyAgICBheF9jdl9k
ZWJ1Zz0ieSIKKworZmkKK2RlYnVnPSRheF9jdl9kZWJ1ZworCisKKworCisKKworCitmb3IgY2Zs
YWcgaW4gJFBSRVBFTkRfSU5DTFVERVMKK2RvCisgICAgUFJFUEVORF9DRkxBR1MrPSIgLUkkY2Zs
YWciCitkb25lCitmb3IgbGRmbGFnIGluICRQUkVQRU5EX0xJQgorZG8KKyAgICBQUkVQRU5EX0xE
RkxBR1MrPSIgLUwkbGRmbGFnIgorZG9uZQorZm9yIGNmbGFnIGluICRBUFBFTkRfSU5DTFVERVMK
K2RvCisgICAgQVBQRU5EX0NGTEFHUys9IiAtSSRjZmxhZyIKK2RvbmUKK2ZvciBsZGZsYWcgaW4g
JEFQUEVORF9MSUIKK2RvCisgICAgQVBQRU5EX0xERkxBR1MrPSIgLUwkbGRmbGFnIgorZG9uZQor
Q0ZMQUdTPSIkUFJFUEVORF9DRkxBR1MgJENGTEFHUyAkQVBQRU5EX0NGTEFHUyIKK0xERkxBR1M9
IiRQUkVQRU5EX0xERkxBR1MgJExERkxBR1MgJEFQUEVORF9MREZMQUdTIgorCisKKworCisKKwor
CisKKworCisKKworIyBDaGVja3MgZm9yIHByb2dyYW1zLgoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVu
Y2F0ZSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9l
cyBub3QgdHJ1bmNhdGUgb3V0cHV0Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhf
U0VEK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgICAgICAgICAgIGFjX3NjcmlwdD1zL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhL2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYi8KKyAgICAgZm9yIGFjX2kg
aW4gMSAyIDMgNCA1IDYgNzsgZG8KKyAgICAgICBhY19zY3JpcHQ9IiRhY19zY3JpcHQkYXNfbmwk
YWNfc2NyaXB0IgorICAgICBkb25lCisgICAgIGVjaG8gIiRhY19zY3JpcHQiIDI+L2Rldi9udWxs
IHwgc2VkIDk5cSA+Y29uZnRlc3Quc2VkCisgICAgIHsgYWNfc2NyaXB0PTsgdW5zZXQgYWNfc2Ny
aXB0O30KKyAgICAgaWYgdGVzdCAteiAiJFNFRCI7IHRoZW4KKyAgYWNfcGF0aF9TRURfZm91bmQ9
ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNo
IG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP
UgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19wcm9nIGluIHNlZCBnc2VkOyBkbwor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICAgICAgYWNfcGF0aF9TRUQ9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICB7
IHRlc3QgLWYgIiRhY19wYXRoX1NFRCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfU0VEIjsgfSB8
fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYg
aXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNf
cGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIk
YWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAk
YXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAg
IGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYg
ImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0
ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhf
U0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9k
ZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+
L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYm
IGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NF
RF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVw
IGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRo
X1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAq
KDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRh
Y19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25m
dGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3Bh
dGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRh
c19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNf
Zm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIg
IiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf
cGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIk
YWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCithY19leHQ9YworYWNfY3Bw
PSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBj
b25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQg
JENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCith
Y19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CitpZiB0ZXN0IC1uICIkYWNfdG9v
bF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29s
X3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0
IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf
Y3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJEND
IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJ
RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0k
YXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNf
ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0
IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly
LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNf
dG9vbF9wcmVmaXh9Z2NjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19j
dl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2
OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAt
eiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCisgIGFjX2N0X0NDPSRDQworICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJj
aGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19h
Y19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19j
dF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UK
K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBB
VEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg
ZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNf
dGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2
X3Byb2dfYWNfY3RfQ0M9ImdjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVh
ayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19j
dF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0
X0NDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g
Im5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCisgICAg
Q0M9IiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQg
aW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J
Tkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1
CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4
ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMK
KyAgICBDQz0kYWNfY3RfQ0MKKyAgZmkKK2Vsc2UKKyAgQ0M9IiRhY19jdl9wcm9nX0NDIgorZmkK
KworaWYgdGVzdCAteiAiJENDIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29s
X3ByZWZpeCI7IHRoZW4KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9v
bF9wcmVmaXh9Y2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0
IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19j
dl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0Mi
ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJHthY190
b29sX3ByZWZpeH1jYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisg
IGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3Zf
cHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsg
fQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICBmaQorZmkKK2lmIHRl
c3QgLXogIiRDQyI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgY2M7IGFjX3dv
cmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAi
ID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKKyAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhl
bgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0
LgorZWxzZQorICBhY19wcm9nX3JlamVjdGVkPW5vCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB
VEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZT
CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu
ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KKyAgICAgICBhY19wcm9nX3JlamVjdGVkPXll
cworICAgICAgIGNvbnRpbnVlCisgICAgIGZpCisgICAgYWNfY3ZfcHJvZ19DQz0iY2MiCisgICAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJ
RlM9JGFzX3NhdmVfSUZTCisKK2lmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4K
KyAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIg
dXNlIGl0LgorICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKKyAgc2hpZnQKKyAgaWYgdGVzdCAk
IyAhPSAwOyB0aGVuCisgICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRo
ZSBib2d1cyBvbmUuCisgICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNv
IHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgorICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1
c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgorICAgIHNoaWZ0CisgICAg
YWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9JEAiCisgIGZpCitmaQorZmkK
K2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19l
Y2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKwor
ZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4
IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJv
ZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193
b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
Q0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg
dGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitm
b3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRh
c19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh
YmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07
IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lG
Uz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAi
JENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g
Im5vIiA+JjY7IH0KK2ZpCisKKworICAgIHRlc3QgLW4gIiRDQyIgJiYgYnJlYWsKKyAgZG9uZQor
ZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgIGZvciBhY19wcm9n
IGluIGNsLmV4ZQorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIs
IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3By
b2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNf
d29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0g
c2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0Mi
ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0i
JGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91
bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQor
ZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2
X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1Cisk
YXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9
CitmaQorCisKKyAgdGVzdCAtbiAiJGFjX2N0X0NDIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRl
c3QgIngkYWNfY3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRj
cm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7
fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitm
aQorCitmaQorCisKK3Rlc3QgLXogIiRDQyIgJiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAibm8gYWNj
ZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAorU2VlIFxgY29uZmlnLmxvZycgZm9y
IG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDUgOyB9CisKKyMgUHJvdmlkZSBzb21lIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBjb21waWxlci4KKyRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQorc2V0IFggJGFjX2Nv
bXBpbGUKK2FjX2NvbXBpbGVyPSQyCitmb3IgYWNfb3B0aW9uIGluIC0tdmVyc2lvbiAtdiAtViAt
cXZlcnNpb247IGRvCisgIHsgeyBhY190cnk9IiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIK
K2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1c
JGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlf
ZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRh
c19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2NvbXBpbGVyICRhY19v
cHRpb24gPiY1IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMg
Y29uZnRlc3QuZXJyOyB0aGVuCisgICAgc2VkICcxMGFcCisuLi4gcmVzdCBvZiBzdGRlcnIgb3V0
cHV0IGRlbGV0ZWQgLi4uCisgICAgICAgICAxMHEnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIx
CisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QuZXIxIGNv
bmZ0ZXN0LmVycgorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8g
PSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorZG9uZQorCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2Ug
YXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3
aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQor
eworI2lmbmRlZiBfX0dOVUNfXworICAgICAgIGNob2tlIG1lCisjZW5kaWYKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2NvbXBpbGVyX2dudT15ZXMKK2Vsc2UKKyAgYWNfY29tcGlsZXJfZ251PW5vCitm
aQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k
YWNfZXh0CithY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251CisKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29t
cGlsZXJfZ251IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNjsgfQor
aWYgdGVzdCAkYWNfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuCisgIEdDQz15ZXMKK2Vsc2UKKyAg
R0NDPQorZmkKK2FjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0KK2FjX3NhdmVfQ0ZMQUdTPSRD
RkxBR1MKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
d2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy
ICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytz
ZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZworICAgYWNfY193ZXJyb3Jf
ZmxhZz15ZXMKKyAgIGFjX2N2X3Byb2dfY2NfZz1ubworICAgQ0ZMQUdTPSItZyIKKyAgIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgor
aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2Nj
X2c9eWVzCitlbHNlCisgIENGTEFHUz0iIgorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP
RiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4g
KCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21w
aWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2
ZV9jX3dlcnJvcl9mbGFnCisJIENGTEFHUz0iLWciCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWlu
ICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29t
cGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2c9eWVzCitmaQorcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citm
aQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k
YWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj
b25mdGVzdC4kYWNfZXh0CisgICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2Zs
YWcKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX2N2X3Byb2dfY2NfZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfZyIgPiY2OyB9
CitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCisgIENGTEFHUz0kYWNfc2F2
ZV9DRkxBR1MKK2VsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuCisgIGlmIHRl
c3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItZyAtTzIiCisgIGVsc2UKKyAgICBD
RkxBR1M9Ii1nIgorICBmaQorZWxzZQorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAg
IENGTEFHUz0iLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPQorICBmaQorZmkKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8g
YWNjZXB0IElTTyBDODkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24g
dG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19j
ODkrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBhY19jdl9wcm9nX2NjX2M4OT1ubworYWNfc2F2ZV9DQz0kQ0MKK2NhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp
bmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVz
dHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCitzdHJ1Y3QgYnVm
IHsgaW50IHg7IH07CitGSUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3Rh
dCAqLCBpbnQpOworc3RhdGljIGNoYXIgKmUgKHAsIGkpCisgICAgIGNoYXIgKipwOworICAgICBp
bnQgaTsKK3sKKyAgcmV0dXJuIHBbaV07Cit9CitzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykg
KGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCit7CisgIGNoYXIgKnM7CisgIHZhX2xpc3Qg
djsKKyAgdmFfc3RhcnQgKHYscCk7CisgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CisgIHZh
X2VuZCAodik7CisgIHJldHVybiBzOworfQorCisvKiBPU0YgNC4wIENvbXBhcSBjYyBpcyBzb21l
IHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcworICAgZnVuY3Rpb24gcHJv
dG90eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFyYWN0ZXIgY29uc3RhbnRz
LgorICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFk
IGFyZSBzaWxlbnRseSB0cmVhdGVkCisgICBhcyAneCcuICBUaGUgZm9sbG93aW5nIGluZHVjZXMg
YW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CisgICBwcm9wZXIgQU5TSSBtb2Rl
LiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCisg
ICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0w
IHRvIGdldCBzb21ldGhpbmcKKyAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkLiAgKi8KK2lu
dCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CisKKy8qIElCTSBDIDYgZm9y
IEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVwbGFjZXMgbWFjcm8gcGFy
YW1ldGVycworICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMuICAqLwor
I2RlZmluZSBGT08oeCkgJ3gnCitpbnQgeGxjNl9jY19hcnJheVtGT08oYSkgPT0gJ3gnID8gMSA6
IC0xXTsKKworaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7CitzdHJ1Y3QgczEge2ludCAoKmYp
IChpbnQgYSk7fTsKK3N0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9OworaW50IHBhaXJu
YW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAq
LCBpbnQpLCBpbnQsIGludCk7CitpbnQgYXJnYzsKK2NoYXIgKiphcmd2OworaW50CittYWluICgp
Cit7CityZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEp
ICE9IGFyZ3ZbMV07CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2ZvciBhY19hcmcgaW4g
JycgLXFsYW5nbHZsPWV4dGM4OSAtcWxhbmdsdmw9YW5zaSAtc3RkIFwKKwktQWUgIi1BYSAtRF9I
UFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgorZG8KKyAgQ0M9IiRhY19zYXZlX0ND
ICRhY19hcmciCisgIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
YWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv
bmZ0ZXN0LiRhY19vYmpleHQKKyAgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0gInhubyIg
JiYgYnJlYWsKK2RvbmUKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQKK0NDPSRhY19zYXZlX0NDCisK
K2ZpCisjIEFDX0NBQ0hFX1ZBTAorY2FzZSAieCRhY19jdl9wcm9nX2NjX2M4OSIgaW4KKyAgeCkK
KyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9u
ZSBuZWVkZWQiID4mNQorJGFzX2VjaG8gIm5vbmUgbmVlZGVkIiA+JjY7IH0gOzsKKyAgeG5vKQor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1bnN1
cHBvcnRlZCIgPiY1CiskYXNfZWNobyAidW5zdXBwb3J0ZWQiID4mNjsgfSA7OworICAqKQorICAg
IENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19jODkiID4mNQorJGFzX2Vj
aG8gIiRhY19jdl9wcm9nX2NjX2M4OSIgPiY2OyB9IDs7Citlc2FjCitpZiB0ZXN0ICJ4JGFjX2N2
X3Byb2dfY2NfYzg5IiAhPSB4bm87IHRoZW4gOgorCitmaQorCithY19leHQ9YworYWNfY3BwPSck
Q1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25m
dGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENG
TEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19j
b21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBsbiAtcyB3b3JrcyIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICIgPiY2OyB9CitMTl9T
PSRhc19sbl9zCitpZiB0ZXN0ICIkTE5fUyIgPSAibG4gLXMiOyB0aGVuCisgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8g
InllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubywgdXNpbmcgJExOX1MiID4mNQorJGFzX2VjaG8gIm5vLCB1c2luZyAk
TE5fUyIgPiY2OyB9CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQorJGFz
X2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAi
ID4mNjsgfQorc2V0IHggJHtNQUtFLW1ha2V9CithY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2Vk
ICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKK2lmIGV2YWwgInRlc3QgXCJcJHthY19j
dl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQrc2V0fVwiIiA9IHNldDsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNF
T0YKK1NIRUxMID0gL2Jpbi9zaAorYWxsOgorCUBlY2hvICdAQEAlJSU9JChNQUtFKT1AQEAlJSUn
CitfQUNFT0YKKyMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcg
Li4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KK2Nhc2UgYCR7TUFLRS1tYWtlfSAtZiBjb25m
dGVzdC5tYWtlIDI+L2Rldi9udWxsYCBpbgorICAqQEBAJSUlPT8qPUBAQCUlJSopCisgICAgZXZh
bCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9eWVzOzsKKyAgKikKKyAgICBldmFsIGFj
X2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD1ubzs7Citlc2FjCitybSAtZiBjb25mdGVzdC5t
YWtlCitmaQoraWYgZXZhbCB0ZXN0IFwkYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0ID0g
eWVzOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisgIFNFVF9NQUtFPQorZWxzZQor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m
NQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyAgU0VUX01BS0U9Ik1BS0U9JHtNQUtFLW1ha2V9Igor
ZmkKKworIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dy
YW0gKGZhc3RlciksCisjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0
IGF2b2lkIHRoZSBicm9rZW4gb3IKKyMgaW5jb21wYXRpYmxlIHZlcnNpb25zOgorIyBTeXNWIC9l
dGMvaW5zdGFsbCwgL3Vzci9zYmluL2luc3RhbGwKKyMgU3VuT1MgL3Vzci9ldGMvaW5zdGFsbAor
IyBJUklYIC9zYmluL2luc3RhbGwKKyMgQUlYIC9iaW4vaW5zdGFsbAorIyBBbWlnYU9TIC9DL2lu
c3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2NzCisjIEFJWCA0
IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRob3V0IGEgLWcgZmxh
ZworIyBBRlMgL3Vzci9hZnN3cy9iaW4vaW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlz
dGVudCBhcmdzCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRo
ZSBub25leGlzdGVudCBncm91cCAic3RhZmYiCisjIE9TLzIncyBzeXN0ZW0gaW5zdGFsbCwgd2hp
Y2ggaGFzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgc2VtYW50aWMKKyMgLi9pbnN0YWxsLCB3aGlj
aCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgor
IyBSZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxlIGZp
bGVzLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwuLi4gIiA+JjY7IH0KK2lmIHRlc3QgLXogIiRJTlNU
QUxMIjsgdGhlbgoraWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIyBBY2Nv
dW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMu
CitjYXNlICRhc19kaXIvIGluICMoKAorICAuLyB8IC4vLyB8IC9bY0NdLyogfCBcCisgIC9ldGMv
KiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8q
IHwgXAorICA/OltcXC9db3MyW1xcL11pbnN0YWxsW1xcL10qIHwgPzpbXFwvXU9TMltcXC9dSU5T
VEFMTFtcXC9dKiB8IFwKKyAgL3Vzci91Y2IvKiApIDs7CisgICopCisgICAgIyBPU0YxIGFuZCBT
Q08gT0RUIDMuMCBoYXZlIHRoZWlyIG93biBuYW1lcyBmb3IgaW5zdGFsbC4KKyAgICAjIERvbid0
IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QK
KyAgICAjIGJ5IGRlZmF1bHQuCisgICAgZm9yIGFjX3Byb2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBp
bnN0YWxsOyBkbworICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4
dGVuc2lvbnM7IGRvCisJaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0
IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgor
CSAgaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBkc3Btc2cgIiRhc19k
aXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAjIEFJ
WCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCisJ
ICAgIDoKKwkgIGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBwd3Bs
dXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgor
CSAgICAjIHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMt
LWRvbid0IHVzZS4KKwkgICAgOgorCSAgZWxzZQorCSAgICBybSAtcmYgY29uZnRlc3Qub25lIGNv
bmZ0ZXN0LnR3byBjb25mdGVzdC5kaXIKKwkgICAgZWNobyBvbmUgPiBjb25mdGVzdC5vbmUKKwkg
ICAgZWNobyB0d28gPiBjb25mdGVzdC50d28KKwkgICAgbWtkaXIgY29uZnRlc3QuZGlyCisJICAg
IGlmICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAtYyBjb25mdGVzdC5vbmUgY29uZnRl
c3QudHdvICJgcHdkYC9jb25mdGVzdC5kaXIiICYmCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5v
bmUgJiYgdGVzdCAtcyBjb25mdGVzdC50d28gJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRp
ci9jb25mdGVzdC5vbmUgJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9jb25mdGVzdC50
d28KKwkgICAgdGhlbgorCSAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFzX2Rpci8kYWNfcHJv
ZyRhY19leGVjX2V4dCAtYyIKKwkgICAgICBicmVhayAzCisJICAgIGZpCisJICBmaQorCWZpCisg
ICAgICBkb25lCisgICAgZG9uZQorICAgIDs7Citlc2FjCisKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCitybSAtcmYgY29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byBjb25mdGVzdC5kaXIKKwor
ZmkKKyAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KKyAg
ICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKKyAgZWxzZQorICAgICMgQXMgYSBsYXN0IHJl
c29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlwdC4gIERvbid0IGNhY2hlIGEKKyAgICAjIHZh
bHVlIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3
aWxsCisgICAgIyBicmVhayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBk
aXJlY3RvcnkgaXMKKyAgICAjIHJlbW92ZWQsIG9yIGlmIHRoZSB2YWx1ZSBpcyBhIHJlbGF0aXZl
IG5hbWUuCisgICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAorICBmaQorZmkKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1CiskYXNf
ZWNobyAiJElOU1RBTEwiID4mNjsgfQorCisjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNo
IG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uCisjIEl0IHRoaW5rcyB0aGUgZmlyc3Qg
Y2xvc2UgYnJhY2UgZW5kcyB0aGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLgordGVzdCAteiAiJElO
U1RBTExfUFJPR1JBTSIgJiYgSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9JworCit0ZXN0IC16
ICIkSU5TVEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JworCit0ZXN0
IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0Jwor
CisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBlcmwiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHBlcmw7IGFjX3dvcmQ9JDIKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9wYXRoX1BFUkwrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRQRVJMIGluCisgIFtcXC9dKiB8ID86W1xcL10q
KQorICBhY19jdl9wYXRoX1BFUkw9IiRQRVJMIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ
QVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lG
UworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBp
biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9QRVJMPSIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19j
dl9wYXRoX1BFUkwiICYmIGFjX2N2X3BhdGhfUEVSTD0ibm8iCisgIDs7Citlc2FjCitmaQorUEVS
TD0kYWNfY3ZfcGF0aF9QRVJMCitpZiB0ZXN0IC1uICIkUEVSTCI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQRVJMIiA+JjUKKyRhc19l
Y2hvICIkUEVSTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKwor
CitpZiB0ZXN0IHgiJHtQRVJMfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9lcnJvciAkPyAi
VW5hYmxlIHRvIGZpbmQgcGVybCwgcGxlYXNlIGluc3RhbGwgcGVybCIgIiRMSU5FTk8iIDUKK2Zp
CisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImJyY3RsIiwgc28gaXQgY2FuIGJlIGEgcHJv
Z3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBicmN0bDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0
ZXN0ICIke2FjX2N2X3BhdGhfQlJDVEwrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRCUkNUTCBpbgorICBbXFwvXSogfCA/Oltc
XC9dKikKKyAgYWNfY3ZfcGF0aF9CUkNUTD0iJEJSQ1RMIiAjIExldCB0aGUgdXNlciBvdmVycmlk
ZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsg
SUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19z
YXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYg
IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9CUkNUTD0iJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16
ICIkYWNfY3ZfcGF0aF9CUkNUTCIgJiYgYWNfY3ZfcGF0aF9CUkNUTD0ibm8iCisgIDs7Citlc2Fj
CitmaQorQlJDVEw9JGFjX2N2X3BhdGhfQlJDVEwKK2lmIHRlc3QgLW4gIiRCUkNUTCI7IHRoZW4K
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCUkNU
TCIgPiY1CiskYXNfZWNobyAiJEJSQ1RMIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIg
PiY2OyB9CitmaQorCisKK2lmIHRlc3QgeCIke0JSQ1RMfSIgPT0geCJubyIKK3RoZW4KKyAgICBh
c19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgYnJjdGwsIHBsZWFzZSBpbnN0YWxsIGJyY3Rs
IiAiJExJTkVOTyIgNQorZmkKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaXAiLCBzbyBp
dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGlwOyBhY193b3Jk
PSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+
JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9JUCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJElQIGluCisgIFtcXC9dKiB8
ID86W1xcL10qKQorICBhY19jdl9wYXRoX0lQPSIkSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRl
IHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0lQPSIkYXNfZGlyLyRh
Y193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFr
IDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRh
Y19jdl9wYXRoX0lQIiAmJiBhY19jdl9wYXRoX0lQPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitJUD0k
YWNfY3ZfcGF0aF9JUAoraWYgdGVzdCAtbiAiJElQIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJElQIiA+JjUKKyRhc19lY2hvICIkSVAi
ID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4
IiR7SVB9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmlu
ZCBpcCwgcGxlYXNlIGluc3RhbGwgaXAiICIkTElORU5PIiA1CitmaQorIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICJiaXNvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgYmlzb247IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wYXRo
X0JJU09OK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
K2Vsc2UKKyAgY2FzZSAkQklTT04gaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3Bh
dGhfQklTT049IiRCSVNPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBh
IHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQklTT049IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9u
ZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQklT
T04iICYmIGFjX2N2X3BhdGhfQklTT049Im5vIgorICA7OworZXNhYworZmkKK0JJU09OPSRhY19j
dl9wYXRoX0JJU09OCitpZiB0ZXN0IC1uICIkQklTT04iOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQklTT04iID4mNQorJGFzX2VjaG8g
IiRCSVNPTiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitp
ZiB0ZXN0IHgiJHtCSVNPTn0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVu
YWJsZSB0byBmaW5kIGJpc29uLCBwbGVhc2UgaW5zdGFsbCBiaXNvbiIgIiRMSU5FTk8iIDUKK2Zp
CisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImZsZXgiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGZsZXg7IGFjX3dvcmQ9JDIKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9wYXRoX0ZMRVgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRGTEVYIGluCisgIFtcXC9dKiB8ID86W1xcL10q
KQorICBhY19jdl9wYXRoX0ZMRVg9IiRGTEVYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ
QVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lG
UworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBp
biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9GTEVYPSIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19j
dl9wYXRoX0ZMRVgiICYmIGFjX2N2X3BhdGhfRkxFWD0ibm8iCisgIDs7Citlc2FjCitmaQorRkxF
WD0kYWNfY3ZfcGF0aF9GTEVYCitpZiB0ZXN0IC1uICIkRkxFWCI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRGTEVYIiA+JjUKKyRhc19l
Y2hvICIkRkxFWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKwor
CitpZiB0ZXN0IHgiJHtGTEVYfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9lcnJvciAkPyAi
VW5hYmxlIHRvIGZpbmQgZmxleCwgcGxlYXNlIGluc3RhbGwgZmxleCIgIiRMSU5FTk8iIDUKK2Zp
CitpZiB0ZXN0ICJ4JHhhcGkiID0gInh5IjsgdGhlbiA6CisKKyAgICAjIEV4dHJhY3QgdGhlIGZp
cnN0IHdvcmQgb2YgImN1cmwtY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp
dGggYXJncy4KK3NldCBkdW1teSBjdXJsLWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIk
e2FjX2N2X3BhdGhfQ1VSTCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJENVUkwgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisg
IGFjX2N2X3BhdGhfQ1VSTD0iJENVUkwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0
IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf
U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg
IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn
ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0NVUkw9IiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBm
aQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Bh
dGhfQ1VSTCIgJiYgYWNfY3ZfcGF0aF9DVVJMPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitDVVJMPSRh
Y19jdl9wYXRoX0NVUkwKK2lmIHRlc3QgLW4gIiRDVVJMIjsgdGhlbgorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENVUkwiID4mNQorJGFzX2VjaG8g
IiRDVVJMIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lm
IHRlc3QgeCIke0NVUkx9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFi
bGUgdG8gZmluZCBjdXJsLWNvbmZpZywgcGxlYXNlIGluc3RhbGwgY3VybC1jb25maWciICIkTElO
RU5PIiA1CitmaQorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieG1sMi1jb25maWci
LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHhtbDIt
Y29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9YTUwrc2V0fSIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRY
TUwgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfWE1MPSIkWE1MIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAg
YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFU
SAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9
LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk
bworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190
ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3Zf
cGF0aF9YTUw9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVf
SUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfWE1MIiAmJiBhY19jdl9wYXRoX1hNTD0ibm8i
CisgIDs7Citlc2FjCitmaQorWE1MPSRhY19jdl9wYXRoX1hNTAoraWYgdGVzdCAtbiAiJFhNTCI7
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRYTUwiID4mNQorJGFzX2VjaG8gIiRYTUwiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5v
IiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4IiR7WE1MfSIgPT0geCJubyIKK3RoZW4KKyAgICBh
c19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgeG1sMi1jb25maWcsIHBsZWFzZSBpbnN0YWxs
IHhtbDItY29uZmlnIiAiJExJTkVOTyIgNQorZmkKKworZmkKK2lmIHRlc3QgIngkb2NhbWx0b29s
cyIgPSAieHkiOyB0aGVuIDoKKworICAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxjCisgIGlmIHRl
c3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk
IG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2FtbGM7IGFjX3dvcmQ9
JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m
NjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX09DQU1MQytzZXR9IiA9IHNldDsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTEMi
OyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxDPSIkT0NBTUxDIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxDPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1s
YyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisg
IGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitPQ0FNTEM9JGFjX2N2X3Byb2dfT0NB
TUxDCitpZiB0ZXN0IC1uICIkT0NBTUxDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9DQU1MQyIgPiY1CiskYXNfZWNobyAiJE9DQU1M
QyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYg
dGVzdCAteiAiJGFjX2N2X3Byb2dfT0NBTUxDIjsgdGhlbgorICBhY19jdF9PQ0FNTEM9JE9DQU1M
QworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sYyIsIHNvIGl0IGNhbiBiZSBh
IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxjOyBhY193b3JkPSQyCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf
d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0K
K2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEMrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3Rf
T0NBTUxDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1MQz0iJGFjX2N0X09DQU1MQyIg
IyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZT
OyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFz
X3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4
ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAt
ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X09DQU1M
Qz0ib2NhbWxjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv
dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkK
K2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1MQz0k
YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEMKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEMiOyB0aGVu
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf
Y3RfT0NBTUxDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NBTUxDIiA+JjY7IH0KK2Vsc2UKKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK
KyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxDIiA9
IHg7IHRoZW4KKyAgICBPQ0FNTEM9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGls
aW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdp
dGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNy
b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xf
d2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MQz0kYWNfY3RfT0NBTUxDCisgIGZpCitlbHNl
CisgIE9DQU1MQz0iJGFjX2N2X3Byb2dfT0NBTUxDIgorZmkKKworCisgIGlmIHRlc3QgIiRPQ0FN
TEMiICE9ICJubyI7IHRoZW4KKyAgICAgT0NBTUxWRVJTSU9OPWAkT0NBTUxDIC12IHwgc2VkIC1u
IC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCdgCisgICAgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBPQ2FtbCB2ZXJzaW9uIGlzICRPQ0FNTFZF
UlNJT04iID4mNQorJGFzX2VjaG8gIk9DYW1sIHZlcnNpb24gaXMgJE9DQU1MVkVSU0lPTiIgPiY2
OyB9CisgICAgICMgSWYgT0NBTUxMSUIgaXMgc2V0LCB1c2UgaXQKKyAgICAgaWYgdGVzdCAiJE9D
QU1MTElCIiA9ICIiOyB0aGVuCisgICAgICAgIE9DQU1MTElCPWAkT0NBTUxDIC13aGVyZSAyPi9k
ZXYvbnVsbCB8fCAkT0NBTUxDIC12fHRhaWwgLTF8Y3V0IC1kICcgJyAtZiA0YAorICAgICBlbHNl
CisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBPQ0FNTExJQiBwcmV2aW91c2x5IHNldDsgcHJlc2VydmluZyBpdC4iID4mNQorJGFzX2VjaG8g
Ik9DQU1MTElCIHByZXZpb3VzbHkgc2V0OyBwcmVzZXJ2aW5nIGl0LiIgPiY2OyB9CisgICAgIGZp
CisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBP
Q2FtbCBsaWJyYXJ5IHBhdGggaXMgJE9DQU1MTElCIiA+JjUKKyRhc19lY2hvICJPQ2FtbCBsaWJy
YXJ5IHBhdGggaXMgJE9DQU1MTElCIiA+JjY7IH0KKworCisKKworICAgICAjIGNoZWNraW5nIGZv
ciBvY2FtbG9wdAorICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbG9wdCIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29s
X3ByZWZpeH1vY2FtbG9wdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0NB
TUxPUFQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor
ZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxP
UFQ9IiRPQ0FNTE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCith
c19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRI
CitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0u
CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv
CisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rl
c3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9w
cm9nX09DQU1MT1BUPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0IgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCitmaQorZmkKK09DQU1MT1BUPSRhY19jdl9wcm9nX09DQU1MT1BUCitpZiB0ZXN0IC1u
ICIkT0NBTUxPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkT0NBTUxPUFQiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE9QVCIgPiY2OyB9
CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAi
JGFjX2N2X3Byb2dfT0NBTUxPUFQiOyB0aGVuCisgIGFjX2N0X09DQU1MT1BUPSRPQ0FNTE9QVAor
ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sb3B0Iiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbG9wdDsgYWNfd29yZD0kMgor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj
X3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9
CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFQrc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNf
Y3RfT0NBTUxPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFQ9IiRhY19jdF9P
Q0FNTE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbwor
ICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAg
Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlm
IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2Fj
X2N0X09DQU1MT1BUPSJvY2FtbG9wdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCith
Y19jdF9PQ0FNTE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVAoraWYgdGVzdCAtbiAiJGFj
X2N0X09DQU1MT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MT1BUIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NB
TUxPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYg
dGVzdCAieCRhY19jdF9PQ0FNTE9QVCIgPSB4OyB0aGVuCisgICAgT0NBTUxPUFQ9Im5vIgorICBl
bHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hv
ICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv
c3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1M
T1BUPSRhY19jdF9PQ0FNTE9QVAorICBmaQorZWxzZQorICBPQ0FNTE9QVD0iJGFjX2N2X3Byb2df
T0NBTUxPUFQiCitmaQorCisgICAgIE9DQU1MQkVTVD1ieXRlCisgICAgIGlmIHRlc3QgIiRPQ0FN
TE9QVCIgPSAibm8iOyB0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiBDYW5ub3QgZmluZCBvY2FtbG9wdDsgYnl0ZWNvZGUgY29tcGlsYXRpb24g
b25seS4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ2Fubm90IGZpbmQgb2NhbWxv
cHQ7IGJ5dGVjb2RlIGNvbXBpbGF0aW9uIG9ubHkuIiA+JjI7fQorICAgICBlbHNlCisJVE1QVkVS
U0lPTj1gJE9DQU1MT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8
cCcgYAorCWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJ
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB2ZXJz
aW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdCBkaXNjYXJkZWQuIiA+JjUKKyRhc19l
Y2hvICJ2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdCBkaXNjYXJkZWQuIiA+
JjY7IH0KKwkgICAgT0NBTUxPUFQ9bm8KKwllbHNlCisJICAgIE9DQU1MQkVTVD1vcHQKKwlmaQor
ICAgICBmaQorCisKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbGMub3B0CisgICAgIGlmIHRl
c3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk
IG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sYy5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjLm9wdDsg
YWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk
Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0NBTUxDRE9UT1BUK3NldH0iID0g
c2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAtbiAiJE9DQU1MQ0RPVE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQ9IiRP
Q0FNTENET1RPUFQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAor
ZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0
X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJv
Z19PQ0FNTENET1RPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjLm9wdCIKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNf
c2F2ZV9JRlMKKworZmkKK2ZpCitPQ0FNTENET1RPUFQ9JGFjX2N2X3Byb2dfT0NBTUxDRE9UT1BU
CitpZiB0ZXN0IC1uICIkT0NBTUxDRE9UT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9DQU1MQ0RPVE9QVCIgPiY1CiskYXNfZWNo
byAiJE9DQU1MQ0RPVE9QVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQor
ZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfT0NBTUxDRE9UT1BUIjsgdGhlbgor
ICBhY19jdF9PQ0FNTENET1RPUFQ9JE9DQU1MQ0RPVE9QVAorICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgIm9jYW1sYy5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh
cmdzLgorc2V0IGR1bW15IG9jYW1sYy5vcHQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19j
dl9wcm9nX2FjX2N0X09DQU1MQ0RPVE9QVCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTENET1RP
UFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxDRE9UT1BUPSIkYWNfY3RfT0NBTUxD
RE9UT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNf
Y3RfT0NBTUxDRE9UT1BUPSJvY2FtbGMub3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQor
ICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQor
ZmkKK2FjX2N0X09DQU1MQ0RPVE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTENET1RPUFQKK2lm
IHRlc3QgLW4gIiRhY19jdF9PQ0FNTENET1RPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxDRE9UT1BUIiA+JjUK
KyRhc19lY2hvICIkYWNfY3RfT0NBTUxDRE9UT1BUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hv
ICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxDRE9UT1BUIiA9IHg7
IHRoZW4KKyAgICBPQ0FNTENET1RPUFQ9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29t
cGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk
IHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5n
IGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rv
b2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MQ0RPVE9QVD0kYWNfY3RfT0NBTUxDRE9U
T1BUCisgIGZpCitlbHNlCisgIE9DQU1MQ0RPVE9QVD0iJGFjX2N2X3Byb2dfT0NBTUxDRE9UT1BU
IgorZmkKKworICAgICBpZiB0ZXN0ICIkT0NBTUxDRE9UT1BUIiAhPSAibm8iOyB0aGVuCisJVE1Q
VkVSU0lPTj1gJE9DQU1MQ0RPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4q
XCkkfFwxfHAnIGAKKwlpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsg
dGhlbgorCSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogdmVyc2lvbnMgZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxjLm9wdCBkaXNjYXJkZWQuIiA+
JjUKKyRhc19lY2hvICJ2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbGMub3B0IGRp
c2NhcmRlZC4iID4mNjsgfQorCWVsc2UKKwkgICAgT0NBTUxDPSRPQ0FNTENET1RPUFQKKwlmaQor
ICAgICBmaQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0Lm9wdAorICAgICBpZiB0ZXN0
ICIkT0NBTUxPUFQiICE9ICJubyIgOyB0aGVuCisJaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4
IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9
b2NhbWxvcHQub3B0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3Nl
dCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0Lm9wdDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0
ZXN0ICIke2FjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxPUFRE
T1RPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQ9IiRPQ0FNTE9QVERPVE9Q
VCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFj
X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVz
dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1MT1BU
RE9UT1BUPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0Lm9wdCIKKyAgICAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9J
RlMKKworZmkKK2ZpCitPQ0FNTE9QVERPVE9QVD0kYWNfY3ZfcHJvZ19PQ0FNTE9QVERPVE9QVAor
aWYgdGVzdCAtbiAiJE9DQU1MT1BURE9UT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9DQU1MT1BURE9UT1BUIiA+JjUKKyRhc19l
Y2hvICIkT0NBTUxPUFRET1RPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX09DQU1MT1BURE9UT1BUIjsg
dGhlbgorICBhY19jdF9PQ0FNTE9QVERPVE9QVD0kT0NBTUxPUFRET1RPUFQKKyAgIyBFeHRyYWN0
IHRoZSBmaXJzdCB3b3JkIG9mICJvY2FtbG9wdC5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sb3B0Lm9wdDsgYWNfd29yZD0kMgoreyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dv
cmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Citp
ZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFRET1RPUFQrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
YWNfY3RfT0NBTUxPUFRET1RPUFQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFRE
T1RPUFQ9IiRhY19jdF9PQ0FNTE9QVERPVE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl
IHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3Ig
YXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19k
aXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl
X2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo
ZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X09DQU1MT1BURE9UT1BUPSJvY2FtbG9wdC5vcHQiCisg
ICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25l
CitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfT0NBTUxPUFRET1RPUFQ9JGFjX2N2
X3Byb2dfYWNfY3RfT0NBTUxPUFRET1RPUFQKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE9QVERP
VE9QVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdF9PQ0FNTE9QVERPVE9QVCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09DQU1M
T1BURE9UT1BUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisg
IGlmIHRlc3QgIngkYWNfY3RfT0NBTUxPUFRET1RPUFQiID0geDsgdGhlbgorICAgIE9DQU1MT1BU
RE9UT1BUPSJubyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93
YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxl
dCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsK
K2VzYWMKKyAgICBPQ0FNTE9QVERPVE9QVD0kYWNfY3RfT0NBTUxPUFRET1RPUFQKKyAgZmkKK2Vs
c2UKKyAgT0NBTUxPUFRET1RPUFQ9IiRhY19jdl9wcm9nX09DQU1MT1BURE9UT1BUIgorZmkKKwor
CWlmIHRlc3QgIiRPQ0FNTE9QVERPVE9QVCIgIT0gIm5vIjsgdGhlbgorCSAgIFRNUFZFUlNJT049
YCRPQ0FNTE9QVERPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwx
fHAnIGAKKwkgICBpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsgdGhl
bgorCSAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiB2ZXJzaW9uIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0Lm9wdCBkaXNjYXJkZWQuIiA+
JjUKKyRhc19lY2hvICJ2ZXJzaW9uIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0Lm9wdCBk
aXNjYXJkZWQuIiA+JjY7IH0KKwkgICBlbHNlCisJICAgICAgT0NBTUxPUFQ9JE9DQU1MT1BURE9U
T1BUCisJICAgZmkKKyAgICAgICAgZmkKKyAgICAgZmkKKworCisgIGZpCisKKworCisgICMgY2hl
Y2tpbmcgZm9yIG9jYW1sIHRvcGxldmVsCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7
IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9j
YW1sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAk
e2FjX3Rvb2xfcHJlZml4fW9jYW1sOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJv
Z19PQ0FNTCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTD0i
JE9DQU1MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NB
TUw9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWwiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Cisg
ICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitm
aQorT0NBTUw9JGFjX2N2X3Byb2dfT0NBTUwKK2lmIHRlc3QgLW4gIiRPQ0FNTCI7IHRoZW4KKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FNTCIg
PiY1CiskYXNfZWNobyAiJE9DQU1MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTCI7IHRoZW4KKyAg
YWNfY3RfT0NBTUw9JE9DQU1MCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWwi
LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1s
OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dv
cmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTCtzZXR9IiA9
IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRl
c3QgLW4gIiRhY19jdF9PQ0FNTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTD0iJGFj
X2N0X09DQU1MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3Nh
dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2Rv
CisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAg
ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAg
aWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94
ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2df
YWNfY3RfT0NBTUw9Im9jYW1sIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFr
IDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0
X09DQU1MPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MCitpZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUwi
OyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkYWNfY3RfT0NBTUwiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTCIgPiY2OyB9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1M
IiA9IHg7IHRoZW4KKyAgICBPQ0FNTD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21w
aWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg
d2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9v
bF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUw9JGFjX2N0X09DQU1MCisgIGZpCitlbHNl
CisgIE9DQU1MPSIkYWNfY3ZfcHJvZ19PQ0FNTCIKK2ZpCisKKworICAjIGNoZWNraW5nIGZvciBv
Y2FtbGRlcAorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFj
dCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbGRlcCIsIHNvIGl0IGNh
biBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZp
eH1vY2FtbGRlcDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0NBTUxERVAr
c2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQor
ICBpZiB0ZXN0IC1uICIkT0NBTUxERVAiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxERVA9IiRP
Q0FNTERFUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbwor
ICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAg
Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlm
IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09D
QU1MREVQPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZGVwIgorICAgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
ID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUwor
CitmaQorZmkKK09DQU1MREVQPSRhY19jdl9wcm9nX09DQU1MREVQCitpZiB0ZXN0IC1uICIkT0NB
TUxERVAiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkT0NBTUxERVAiID4mNQorJGFzX2VjaG8gIiRPQ0FNTERFUCIgPiY2OyB9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2
X3Byb2dfT0NBTUxERVAiOyB0aGVuCisgIGFjX2N0X09DQU1MREVQPSRPQ0FNTERFUAorICAjIEV4
dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sZGVwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbGRlcDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0
ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfT0NB
TUxERVAiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVA9IiRhY19jdF9PQ0FNTERF
UCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFj
X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVz
dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X09D
QU1MREVQPSJvY2FtbGRlcCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAy
CisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9P
Q0FNTERFUD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERFUAoraWYgdGVzdCAtbiAiJGFjX2N0X09D
QU1MREVQIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX2N0X09DQU1MREVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NBTUxERVAi
ID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAi
eCRhY19jdF9PQ0FNTERFUCIgPSB4OyB0aGVuCisgICAgT0NBTUxERVA9Im5vIgorICBlbHNlCisg
ICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3Mg
dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNf
bWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJp
cGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MREVQPSRh
Y19jdF9PQ0FNTERFUAorICBmaQorZWxzZQorICBPQ0FNTERFUD0iJGFjX2N2X3Byb2dfT0NBTUxE
RVAiCitmaQorCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxta3RvcAorICBpZiB0ZXN0IC1uICIk
YWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHth
Y190b29sX3ByZWZpeH1vY2FtbG1rdG9wIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp
dGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sbWt0b3A7IGFjX3dvcmQ9
JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m
NjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX09DQU1MTUtUT1Arc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NB
TUxNS1RPUCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTE1LVE9QPSIkT0NBTUxNS1RPUCIgIyBM
ZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1MTUtUT1A9IiR7
YWNfdG9vbF9wcmVmaXh9b2NhbWxta3RvcCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2Zp
CitPQ0FNTE1LVE9QPSRhY19jdl9wcm9nX09DQU1MTUtUT1AKK2lmIHRlc3QgLW4gIiRPQ0FNTE1L
VE9QIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJE9DQU1MTUtUT1AiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE1LVE9QIiA+JjY7IH0KK2Vs
c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNf
Y3ZfcHJvZ19PQ0FNTE1LVE9QIjsgdGhlbgorICBhY19jdF9PQ0FNTE1LVE9QPSRPQ0FNTE1LVE9Q
CisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxta3RvcCIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxta3RvcDsgYWNfd29y
ZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg
PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUCtzZXR9IiA9IHNl
dDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3Qg
LW4gIiRhY19jdF9PQ0FNTE1LVE9QIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1MTUtU
T1A9IiRhY19jdF9PQ0FNTE1LVE9QIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K
K2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIg
aW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg
YXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z
aW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm
JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAg
IGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUD0ib2NhbWxta3RvcCIKKyAgICAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2
ZV9JRlMKKworZmkKK2ZpCithY19jdF9PQ0FNTE1LVE9QPSRhY19jdl9wcm9nX2FjX2N0X09DQU1M
TUtUT1AKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE1LVE9QIjsgdGhlbgorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MTUtUT1Ai
ID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTE1LVE9QIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19l
Y2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxNS1RPUCIgPSB4
OyB0aGVuCisgICAgT0NBTUxNS1RPUD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21w
aWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg
d2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9v
bF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxNS1RPUD0kYWNfY3RfT0NBTUxNS1RPUAor
ICBmaQorZWxzZQorICBPQ0FNTE1LVE9QPSIkYWNfY3ZfcHJvZ19PQ0FNTE1LVE9QIgorZmkKKwor
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sbWtsaWIKKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJl
Zml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVm
aXh9b2NhbWxta2xpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitz
ZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2FtbG1rbGliOyBhY193b3JkPSQyCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfcHJvZ19PQ0FNTE1LTElCK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE9DQU1MTUtMSUIiOyB0
aGVuCisgIGFjX2N2X3Byb2dfT0NBTUxNS0xJQj0iJE9DQU1MTUtMSUIiICMgTGV0IHRoZSB1c2Vy
IG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF
UEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0
ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAk
YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19PQ0FNTE1LTElCPSIke2FjX3Rvb2xfcHJl
Zml4fW9jYW1sbWtsaWIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgor
ICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorT0NBTUxNS0xJ
Qj0kYWNfY3ZfcHJvZ19PQ0FNTE1LTElCCitpZiB0ZXN0IC1uICIkT0NBTUxNS0xJQiI7IHRoZW4K
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FN
TE1LTElCIiA+JjUKKyRhc19lY2hvICIkT0NBTUxNS0xJQiIgPiY2OyB9CitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf
ZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfT0NB
TUxNS0xJQiI7IHRoZW4KKyAgYWNfY3RfT0NBTUxNS0xJQj0kT0NBTUxNS0xJQgorICAjIEV4dHJh
Y3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sbWtsaWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sbWtsaWI7IGFjX3dvcmQ9JDIKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYg
dGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X09DQU1MTUtMSUIrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3Rf
T0NBTUxNS0xJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LTElCPSIkYWNfY3Rf
T0NBTUxNS0xJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9n
X2FjX2N0X09DQU1MTUtMSUI9Im9jYW1sbWtsaWIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1
CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2Zp
CitmaQorYWNfY3RfT0NBTUxNS0xJQj0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LTElCCitpZiB0
ZXN0IC1uICIkYWNfY3RfT0NBTUxNS0xJQiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTE1LTElCIiA+JjUKKyRhc19l
Y2hvICIkYWNfY3RfT0NBTUxNS0xJQiIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4m
NjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1MTUtMSUIiID0geDsgdGhlbgorICAg
IE9DQU1MTUtMSUI9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190
b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0
cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xz
IG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXll
cyA7OworZXNhYworICAgIE9DQU1MTUtMSUI9JGFjX2N0X09DQU1MTUtMSUIKKyAgZmkKK2Vsc2UK
KyAgT0NBTUxNS0xJQj0iJGFjX2N2X3Byb2dfT0NBTUxNS0xJQiIKK2ZpCisKKworICAjIGNoZWNr
aW5nIGZvciBvY2FtbGRvYworICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisg
ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbGRvYyIs
IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190
b29sX3ByZWZpeH1vY2FtbGRvYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2df
T0NBTUxET0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxET0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfT0NB
TUxET0M9IiRPQ0FNTERPQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNl
Cithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ
QVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp
cj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7
IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz
X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19j
dl9wcm9nX09DQU1MRE9DPSIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZG9jIgorICAgICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf
ZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19z
YXZlX0lGUworCitmaQorZmkKK09DQU1MRE9DPSRhY19jdl9wcm9nX09DQU1MRE9DCitpZiB0ZXN0
IC1uICIkT0NBTUxET0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkT0NBTUxET0MiID4mNQorJGFzX2VjaG8gIiRPQ0FNTERPQyIgPiY2
OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAt
eiAiJGFjX2N2X3Byb2dfT0NBTUxET0MiOyB0aGVuCisgIGFjX2N0X09DQU1MRE9DPSRPQ0FNTERP
QworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sZG9jIiwgc28gaXQgY2FuIGJl
IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbGRvYzsgYWNfd29yZD0k
MgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxET0Mrc2V0fSIgPSBzZXQ7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
YWNfY3RfT0NBTUxET0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxET0M9IiRhY19j
dF9PQ0FNTERPQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9n
X2FjX2N0X09DQU1MRE9DPSJvY2FtbGRvYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2Zp
CithY19jdF9PQ0FNTERPQz0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERPQworaWYgdGVzdCAtbiAi
JGFjX2N0X09DQU1MRE9DIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MRE9DIiA+JjUKKyRhc19lY2hvICIkYWNfY3Rf
T0NBTUxET0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAg
aWYgdGVzdCAieCRhY19jdF9PQ0FNTERPQyIgPSB4OyB0aGVuCisgICAgT0NBTUxET0M9Im5vIgor
ICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVz
OikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNp
bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19l
Y2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRo
IGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9D
QU1MRE9DPSRhY19jdF9PQ0FNTERPQworICBmaQorZWxzZQorICBPQ0FNTERPQz0iJGFjX2N2X3By
b2dfT0NBTUxET0MiCitmaQorCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxidWlsZAorICBpZiB0
ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29y
ZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbGJ1aWxkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sYnVpbGQ7
IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y
ZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wcm9nX09DQU1MQlVJTEQrc2V0fSIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0
IC1uICIkT0NBTUxCVUlMRCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTEJVSUxEPSIkT0NBTUxC
VUlMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ
RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9y
IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsg
dGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1M
QlVJTEQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxidWlsZCIKKyAgICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMK
KworZmkKK2ZpCitPQ0FNTEJVSUxEPSRhY19jdl9wcm9nX09DQU1MQlVJTEQKK2lmIHRlc3QgLW4g
IiRPQ0FNTEJVSUxEIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJE9DQU1MQlVJTEQiID4mNQorJGFzX2VjaG8gIiRPQ0FNTEJVSUxEIiA+
JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0
IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTEJVSUxEIjsgdGhlbgorICBhY19jdF9PQ0FNTEJVSUxEPSRP
Q0FNTEJVSUxECisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxidWlsZCIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxidWls
ZDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193
b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRCtz
ZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEJVSUxEIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0
X09DQU1MQlVJTEQ9IiRhY19jdF9PQ0FNTEJVSUxEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0
aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2Zv
ciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFz
X2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi
bGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsg
dGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRD0ib2NhbWxidWlsZCIKKyAgICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lG
Uz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9PQ0FNTEJVSUxEPSRhY19jdl9wcm9nX2Fj
X2N0X09DQU1MQlVJTEQKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEJVSUxEIjsgdGhlbgorICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09D
QU1MQlVJTEQiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTEJVSUxEIiA+JjY7IH0KK2Vsc2UK
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+
JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxC
VUlMRCIgPSB4OyB0aGVuCisgICAgT0NBTUxCVUlMRD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRj
cm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7
fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxCVUlMRD0kYWNfY3RfT0NB
TUxCVUlMRAorICBmaQorZWxzZQorICBPQ0FNTEJVSUxEPSIkYWNfY3ZfcHJvZ19PQ0FNTEJVSUxE
IgorZmkKKworCisgICAgaWYgdGVzdCAieCRPQ0FNTEMiID0gInhubyI7IHRoZW4gOgorCisgICAg
ICAgIGlmIHRlc3QgIngkZW5hYmxlX29jYW1sdG9vbHMiID0gInh5ZXMiOyB0aGVuIDoKKworICAg
ICAgICAgICAgYXNfZm5fZXJyb3IgJD8gIk9jYW1sIHRvb2xzIGVuYWJsZWQsIGJ1dCB1bmFibGUg
dG8gZmluZCBPY2FtbCIgIiRMSU5FTk8iIDUKK2ZpCisgICAgICAgIG9jYW1sdG9vbHM9Im4iCisK
K2ZpCisKK2ZpCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImJhc2giLCBzbyBpdCBjYW4g
YmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGJhc2g7IGFjX3dvcmQ9JDIK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh
Y193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg
fQoraWYgdGVzdCAiJHthY19jdl9wYXRoX0JBU0grc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRCQVNIIGluCisgIFtcXC9dKiB8
ID86W1xcL10qKQorICBhY19jdl9wYXRoX0JBU0g9IiRCQVNIIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9CQVNIPSIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAg
IGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3Qg
LXogIiRhY19jdl9wYXRoX0JBU0giICYmIGFjX2N2X3BhdGhfQkFTSD0ibm8iCisgIDs7Citlc2Fj
CitmaQorQkFTSD0kYWNfY3ZfcGF0aF9CQVNICitpZiB0ZXN0IC1uICIkQkFTSCI7IHRoZW4KKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCQVNIIiA+
JjUKKyRhc19lY2hvICIkQkFTSCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsg
fQorZmkKKworCitpZiB0ZXN0IHgiJHtCQVNIfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9l
cnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgYmFzaCwgcGxlYXNlIGluc3RhbGwgYmFzaCIgIiRMSU5F
Tk8iIDUKK2ZpCitpZiB0ZXN0ICJ4JHB5dGhvbnRvb2xzIiA9ICJ4eSI7IHRoZW4gOgorCisgICAg
aWYgZWNobyAiJFBZVEhPTiIgfCBncmVwIC1xICJeLyI7IHRoZW4gOgorCisgICAgICAgIFBZVEhP
TlBBVEg9JFBZVEhPTgorICAgICAgICBQWVRIT049YGJhc2VuYW1lICRQWVRIT05QQVRIYAorCitl
bGlmIHRlc3QgLXogIiRQWVRIT04iOyB0aGVuIDoKKyAgUFlUSE9OPSJweXRob24iCitlbHNlCisg
IGFzX2ZuX2Vycm9yICQ/ICJQWVRIT04gc3BlY2lmaWVkLCBidXQgaXMgbm90IGFuIGFic29sdXRl
IHBhdGgiICIkTElORU5PIiA1CitmaQorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi
JFBZVEhPTiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVt
bXkgJFBZVEhPTjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfUFlUSE9OUEFU
SCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGNhc2UgJFBZVEhPTlBBVEggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3Bh
dGhfUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0
ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB
VEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZT
CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu
ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1BZVEhPTlBBVEg9IiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAi
JGFjX2N2X3BhdGhfUFlUSE9OUEFUSCIgJiYgYWNfY3ZfcGF0aF9QWVRIT05QQVRIPSJubyIKKyAg
OzsKK2VzYWMKK2ZpCitQWVRIT05QQVRIPSRhY19jdl9wYXRoX1BZVEhPTlBBVEgKK2lmIHRlc3Qg
LW4gIiRQWVRIT05QQVRIIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJFBZVEhPTlBBVEgiID4mNQorJGFzX2VjaG8gIiRQWVRIT05QQVRI
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3Qg
eCIke1BZVEhPTlBBVEh9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFi
bGUgdG8gZmluZCAkUFlUSE9OLCBwbGVhc2UgaW5zdGFsbCAkUFlUSE9OIiAiJExJTkVOTyIgNQor
ZmkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBweXRob24gdmVyc2lvbiA+PSAyLjMgIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBweXRob24gdmVyc2lvbiA+PSAyLjMgLi4uICIgPiY2OyB9CitgJFBZVEhPTiAtYyAnaW1wb3J0
IHN5czsgZXhpdChldmFsKCJzeXMudmVyc2lvbl9pbmZvIDwgKDIsIDMpIikpJ2AKK2lmIHRlc3Qg
IiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBweXRob25fdmVyc2lvbj1gJFBZVEhPTiAtViAyPiYxYAor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICAgIGFzX2ZuX2Vycm9yICQ/ICIkcHl0aG9uX3Zl
cnNpb24gaXMgdG9vIG9sZCwgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9uIGlzIDIuMyIgIiRMSU5F
Tk8iIDUKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKyAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBweXRob24geG1s
LmRvbS5taW5pZG9tIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24geG1sLmRv
bS5taW5pZG9tLi4uICIgPiY2OyB9CitgJFBZVEhPTiAtYyAnaW1wb3J0IHhtbC5kb20ubWluaWRv
bSdgCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9
CisgICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kIHhtbC5kb20ubWluaWRvbSBtb2R1
bGUiICIkTElORU5PIiA1CitlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCisg
ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
cHl0aG9uIGRldmVsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24gZGV2ZWwu
Li4gIiA+JjY7IH0KKworYCRQWVRIT04gLWMgJworaW1wb3J0IG9zLnBhdGgsIHN5cworZm9yIHAg
aW4gc3lzLnBhdGg6CisgICAgaWYgb3MucGF0aC5leGlzdHMocCArICIvY29uZmlnL01ha2VmaWxl
Iik6CisgICAgICAgIHN5cy5leGl0KDApCitzeXMuZXhpdCgxKQorJyA+IC9kZXYvbnVsbCAyPiYx
YAorCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9
CisgICAgYXNfZm5fZXJyb3IgJD8gIlB5dGhvbiBkZXZlbCBwYWNrYWdlIG5vdCBmb3VuZCIgIiRM
SU5FTk8iIDUKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworZmkKKyMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieGdldHRleHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHhnZXR0ZXh0OyBhY193b3JkPSQyCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y
ZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lm
IHRlc3QgIiR7YWNfY3ZfcGF0aF9YR0VUVEVYVCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFhHRVRURVhUIGluCisgIFtcXC9d
KiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1hHRVRURVhUPSIkWEdFVFRFWFQiICMgTGV0IHRo
ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRo
X1hHRVRURVhUPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1hHRVRURVhUIiAmJiBhY19jdl9wYXRoX1hH
RVRURVhUPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitYR0VUVEVYVD0kYWNfY3ZfcGF0aF9YR0VUVEVY
VAoraWYgdGVzdCAtbiAiJFhHRVRURVhUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFhHRVRURVhUIiA+JjUKKyRhc19lY2hvICIkWEdF
VFRFWFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYg
dGVzdCB4IiR7WEdFVFRFWFR9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJV
bmFibGUgdG8gZmluZCB4Z2V0dGV4dCwgcGxlYXNlIGluc3RhbGwgeGdldHRleHQiICIkTElORU5P
IiA1CitmaQoraWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxpbnV4LWdudSIKK3RoZW4KKyAgICAj
IEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInVkZXZhZG0iLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHVkZXZhZG07IGFjX3dvcmQ9JDIKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYg
dGVzdCAiJHthY19jdl9wYXRoX1VERVZBRE0rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRVREVWQURNIGluCisgIFtcXC9dKiB8
ID86W1xcL10qKQorICBhY19jdl9wYXRoX1VERVZBRE09IiRVREVWQURNIiAjIExldCB0aGUgdXNl
ciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9J
RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAg
SUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZv
ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7
IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9VREVW
QURNPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
ID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUwor
CisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1VERVZBRE0iICYmIGFjX2N2X3BhdGhfVURFVkFETT0i
bm8iCisgIDs7Citlc2FjCitmaQorVURFVkFETT0kYWNfY3ZfcGF0aF9VREVWQURNCitpZiB0ZXN0
IC1uICIkVURFVkFETSI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRVREVWQURNIiA+JjUKKyRhc19lY2hvICIkVURFVkFETSIgPiY2OyB9
CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCB4IiR7
VURFVkFETX0iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgInVkZXZpbmZvIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSB1ZGV2aW5mbzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3Bh
dGhfVURFVklORk8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBjYXNlICRVREVWSU5GTyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAg
YWNfY3ZfcGF0aF9VREVWSU5GTz0iJFVERVZJTkZPIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0
aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZl
X0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4
dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9VREVWSU5GTz0iJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16
ICIkYWNfY3ZfcGF0aF9VREVWSU5GTyIgJiYgYWNfY3ZfcGF0aF9VREVWSU5GTz0ibm8iCisgIDs7
Citlc2FjCitmaQorVURFVklORk89JGFjX2N2X3BhdGhfVURFVklORk8KK2lmIHRlc3QgLW4gIiRV
REVWSU5GTyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRVREVWSU5GTyIgPiY1CiskYXNfZWNobyAiJFVERVZJTkZPIiA+JjY7IH0KK2Vs
c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICAgICAgaWYgdGVzdCB4IiR7
VURFVklORk99IiA9PSB4Im5vIgorICAgICAgICB0aGVuCisgICAgICAgICAgICBhc19mbl9lcnJv
ciAkPyAiVW5hYmxlIHRvIGZpbmQgdWRldmFkbSBvciB1ZGV2aW5mbywgcGxlYXNlIGluc3RhbGwg
dWRldiIgIiRMSU5FTk8iIDUKKyAgICAgICAgZmkKKyAgICAgICAgdWRldnZlcj1gJHtVREVWSU5G
T30gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKKyAgICBlbHNlCisgICAgICAgIHVkZXZ2ZXI9YCR7
VURFVkFETX0gaW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGZpCisgICAgaWYgdGVz
dCAke3VkZXZ2ZXJ9IC1sdCA1OQorICAgIHRoZW4KKyAgICAgICAgIyBFeHRyYWN0IHRoZSBmaXJz
dCB3b3JkIG9mICJob3RwbHVnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSBob3RwbHVnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0
aF9IT1RQTFVHK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgY2FzZSAkSE9UUExVRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNf
Y3ZfcGF0aF9IT1RQTFVHPSIkSE9UUExVRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRl
c3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFU
SF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMK
KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4g
JycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGly
LyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfSE9UUExVRz0iJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAy
CisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNf
Y3ZfcGF0aF9IT1RQTFVHIiAmJiBhY19jdl9wYXRoX0hPVFBMVUc9Im5vIgorICA7OworZXNhYwor
ZmkKK0hPVFBMVUc9JGFjX2N2X3BhdGhfSE9UUExVRworaWYgdGVzdCAtbiAiJEhPVFBMVUciOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
SE9UUExVRyIgPiY1CiskYXNfZWNobyAiJEhPVFBMVUciID4mNjsgfQorZWxzZQorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2Vj
aG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICAgICAgICBpZiB0ZXN0IHgiJHtIT1RQTFVHfSIgPT0g
eCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgYXNfZm5fZXJyb3IgJD8gInVkZXYgaXMg
dG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9uIDU5IG9yIGxhdGVyIiAiJExJTkVOTyIgNQorICAg
ICAgICBmaQorICAgIGZpCitlbHNlCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ2
bmNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVt
bXkgdm5jb25maWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9wYXRoX1ZOQ09ORklH
K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgY2FzZSAkVk5DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhf
Vk5DT05GSUc9IiRWTkNPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0
aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB
UkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVz
dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj
X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfVk5DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBm
aQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Bh
dGhfVk5DT05GSUciICYmIGFjX2N2X3BhdGhfVk5DT05GSUc9Im5vIgorICA7OworZXNhYworZmkK
K1ZOQ09ORklHPSRhY19jdl9wYXRoX1ZOQ09ORklHCitpZiB0ZXN0IC1uICIkVk5DT05GSUciOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
Vk5DT05GSUciID4mNQorJGFzX2VjaG8gIiRWTkNPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf
ZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCB4IiR7Vk5DT05GSUd9IiA9PSB4
Im5vIgorICAgIHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIk5vdCBhIExpbnV4IHN5c3Rl
bSBhbmQgdW5hYmxlIHRvIGZpbmQgdm5kIiAiJExJTkVOTyIgNQorICAgIGZpCitmaQorCisKKyMg
Q2hlY2sgbGlicmFyeSBwYXRoCitpZiB0ZXN0IC1kICIkcHJlZml4L2xpYjY0IjsgdGhlbiA6CisK
KyAgICBMSUJfUEFUSD0ibGliNjQiCisKK2Vsc2UKKworICAgIExJQl9QQVRIPSJsaWIiCisKK2Zp
CisKKworIyBDaGVja3MgZm9yIGxpYnJhcmllcy4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlvX3NldHVwIGluIC1sYWlvIiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciBpb19zZXR1cCBpbiAtbGFpby4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9saWJfYWlvX2lvX3NldHVwK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElC
UworTElCUz0iLWxhaW8gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0ND
IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1
c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBh
bmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGlvX3NldHVwICgpOwor
aW50CittYWluICgpCit7CityZXR1cm4gaW9fc2V0dXAgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9
CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zf
bGliX2Fpb19pb19zZXR1cD15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2Fpb19pb19zZXR1cD1ubwor
ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2
ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRhY19jdl9saWJfYWlvX2lvX3NldHVwIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2Fp
b19pb19zZXR1cCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9haW9faW9fc2V0dXAiID0g
eCIieWVzOyB0aGVuIDoKKyAgc3lzdGVtX2Fpbz0ieSIKK2Vsc2UKKyAgc3lzdGVtX2Fpbz0ibiIK
K2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgTUQ1IGluIC1sY3J5cHRvIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBNRDUg
aW4gLWxjcnlwdG8uLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2NyeXB0b19NRDUr
c2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQor
ICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGNyeXB0byAgJExJQlMiCitj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRl
ZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2
b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJl
dHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90
b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiCisjZW5kaWYKK2NoYXIgTUQ1ICgpOworaW50CittYWluICgpCit7CityZXR1cm4gTUQ1ICgp
OworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElO
RU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9jcnlwdG9fTUQ1PXllcworZWxzZQorICBhY19jdl9s
aWJfY3J5cHRvX01ENT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJT
PSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfY3J5cHRvX01ENSIgPiY1CiskYXNfZWNo
byAiJGFjX2N2X2xpYl9jcnlwdG9fTUQ1IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2Ny
eXB0b19NRDUiID0geCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor
I2RlZmluZSBIQVZFX0xJQkNSWVBUTyAxCitfQUNFT0YKKworICBMSUJTPSItbGNyeXB0byAkTElC
UyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZpbmQgbGliY3J5cHRvIiAi
JExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBmb3IgZXh0MmZzX29wZW4yIGluIC1sZXh0MmZzIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciBleHQyZnNfb3BlbjIgaW4gLWxleHQyZnMuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9M
SUJTPSRMSUJTCitMSUJTPSItbGV4dDJmcyAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJy
aWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNl
IGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisg
ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw
bHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgZXh0
MmZzX29wZW4yICgpOworaW50CittYWluICgpCit7CityZXR1cm4gZXh0MmZzX29wZW4yICgpOwor
ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P
IjsgdGhlbiA6CisgIGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yPXllcworZWxzZQorICBh
Y19jdl9saWJfZXh0MmZzX2V4dDJmc19vcGVuMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVz
dC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZXh0MmZzX2V4
dDJmc19vcGVuMiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4y
IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIiID0geCIi
eWVzOyB0aGVuIDoKKyAgbGliZXh0MmZzPSJ5IgorZWxzZQorICBsaWJleHQyZnM9Im4iCitmaQor
CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
IGdjcnlfbWRfaGFzaF9idWZmZXIgaW4gLWxnY3J5cHQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yIGdjcnlfbWRfaGFzaF9idWZmZXIgaW4gLWxnY3J5cHQuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiR7YWNfY3ZfbGliX2djcnlwdF9nY3J5X21kX2hhc2hfYnVmZmVyK3NldH0iID0gc2V0OyB0
aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGli
X3NhdmVfTElCUz0kTElCUworTElCUz0iLWxnY3J5cHQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisv
KiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4K
KyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh
IEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0
aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitj
aGFyIGdjcnlfbWRfaGFzaF9idWZmZXIgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBnY3J5
X21kX2hhc2hfYnVmZmVyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19m
bl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9t
ZF9oYXNoX2J1ZmZlcj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2djcnlwdF9nY3J5X21kX2hhc2hf
YnVmZmVyPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlciIgPiY1
CiskYXNfZWNobyAiJGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlciIgPiY2OyB9
CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlciIgPSB4IiJ5
ZXM7IHRoZW4gOgorICBsaWJnY3J5cHQ9InkiCitlbHNlCisgIGxpYmdjcnlwdD0ibiIKK2ZpCisK
KworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
cHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBwdGhyZWFkX2NyZWF0ZSBpbiAtbHB0aHJlYWQuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf
Y3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRM
SUJTCitMSUJTPSItbHB0aHJlYWQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+
Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBh
bnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFy
IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVp
bHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAg
Ki8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHB0aHJlYWRf
Y3JlYXRlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gcHRocmVhZF9jcmVhdGUgKCk7Cisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGU9eWVzCitlbHNlCisg
IGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlPW5vCitmaQorcm0gLWYgY29yZSBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv
bmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9wdGhy
ZWFkX3B0aHJlYWRfY3JlYXRlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3B0aHJlYWRfcHRo
cmVhZF9jcmVhdGUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFk
X2NyZWF0ZSIgPSB4IiJ5ZXM7IHRoZW4gOgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJDb3Vs
ZCBub3QgZmluZCBsaWJwdGhyZWFkIiAiJExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfZ2V0dGltZSBpbiAt
bHJ0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBjbG9ja19nZXR0aW1lIGluIC1scnQu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUrc2V0fSIg
PSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19j
aGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy
b3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg
b2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs
ZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRp
ZgorY2hhciBjbG9ja19nZXR0aW1lICgpOworaW50CittYWluICgpCit7CityZXR1cm4gY2xvY2tf
Z2V0dGltZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf
bGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT15ZXMK
K2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWU9bm8KK2ZpCitybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQg
Y29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3J0
X2Nsb2NrX2dldHRpbWUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGlt
ZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA9IHgiInll
czsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJS
VCAxCitfQUNFT0YKKworICBMSUJTPSItbHJ0ICRMSUJTIgorCitmaQorCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1dWlkX2NsZWFyIGluIC1s
dXVpZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdXVpZF9jbGVhciBpbiAtbHV1aWQu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcitzZXR9IiA9
IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sdXVpZCAgJExJQlMiCitjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy
cm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBl
IG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291
bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5k
aWYKK2NoYXIgdXVpZF9jbGVhciAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHV1aWRfY2xl
YXIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsg
IiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcj15ZXMKK2Vsc2UK
KyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVz
dC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdXVpZF91dWlk
X2NsZWFyIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhciIgPiY2OyB9
CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIiID0geCIieWVzOyB0aGVuIDoK
KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlVVSUQgMQorX0FD
RU9GCisKKyAgTElCUz0iLWx1dWlkICRMSUJTIgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJD
b3VsZCBub3QgZmluZCBsaWJ1dWlkIiAiJExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeWFqbF9hbGxvYyBpbiAtbHlh
amwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHlhamxfYWxsb2MgaW4gLWx5YWpsLi4u
ICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2xpYl95YWpsX3lhamxfYWxsb2Mrc2V0fSIgPSBz
ZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVj
a19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHlhamwgICRMSUJTIgorY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor
CisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv
ci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxk
IHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlm
CitjaGFyIHlhamxfYWxsb2MgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiB5YWpsX2FsbG9j
ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2M9eWVzCitlbHNlCisg
IGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2M9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu
JGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3lhamxfeWFqbF9h
bGxvYyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2MiID4mNjsgfQor
aWYgdGVzdCAieCRhY19jdl9saWJfeWFqbF95YWpsX2FsbG9jIiA9IHgiInllczsgdGhlbiA6Cisg
IGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJZQUpMIDEKK19BQ0VP
RgorCisgIExJQlM9Ii1seWFqbCAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291
bGQgbm90IGZpbmQgeWFqbCIgIiRMSU5FTk8iIDUKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmxhdGVDb3B5IGluIC1seiIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmbGF0ZUNvcHkgaW4gLWx6Li4uICIgPiY2OyB9
CitpZiB0ZXN0ICIke2FjX2N2X2xpYl96X2RlZmxhdGVDb3B5K3NldH0iID0gc2V0OyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVf
TElCUz0kTElCUworTElCUz0iLWx6ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUg
YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hh
ciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1
aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g
ICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBkZWZsYXRl
Q29weSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGRlZmxhdGVDb3B5ICgpOworICA7Cisg
IHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5PXllcworZWxzZQorICBhY19jdl9saWJfel9k
ZWZsYXRlQ29weT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRh
Y19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfel9kZWZsYXRlQ29weSIgPiY1CiskYXNfZWNo
byAiJGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGli
X3pfZGVmbGF0ZUNvcHkiID0geCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgorI2RlZmluZSBIQVZFX0xJQlogMQorX0FDRU9GCisKKyAgTElCUz0iLWx6ICRMSUJTIgor
CitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCB6bGliIiAiJExJTkVOTyIg
NQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgbGliaWNvbnZfb3BlbiBpbiAtbGljb252IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBsaWJpY29udl9vcGVuIGluIC1saWNvbnYuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf
Y3ZfbGliX2ljb252X2xpYmljb252X29wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJT
CitMSUJTPSItbGljb252ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdD
QyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4g
YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBsaWJpY29udl9vcGVu
ICgpOworaW50CittYWluICgpCit7CityZXR1cm4gbGliaWNvbnZfb3BlbiAoKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3Blbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGli
X2ljb252X2xpYmljb252X29wZW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4
dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2ljb252X2xpYmljb252X29w
ZW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3BlbiIgPiY2OyB9
CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9pY29udl9saWJpY29udl9vcGVuIiA9IHgiInllczsgdGhl
biA6CisgIGxpYmljb252PSJ5IgorZWxzZQorICBsaWJpY29udj0ibiIKK2ZpCisKKworCisjIEF1
dG9zY2FuIHN0dWZmIChleGNlcHQgZm9yIHlhamwveWFqbF92ZXJzaW9uLmggY2hlY2spCisjIENo
ZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgorIyBUaGUgVWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxs
b2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkgd29ya3MKKyMgZm9yIGNvbnN0YW50IGFyZ3Vt
ZW50cy4gIFVzZWxlc3MhCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciB3b3JraW5nIGFsbG9jYS5oLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3dvcmtp
bmdfYWxsb2NhX2grc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8YWxsb2NhLmg+CitpbnQKK21haW4g
KCkKK3sKK2NoYXIgKnAgPSAoY2hhciAqKSBhbGxvY2EgKDIgKiBzaXplb2YgKGludCkpOworCQkJ
ICBpZiAocCkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2Zu
X2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfd29ya2luZ19hbGxvY2FfaD15
ZXMKK2Vsc2UKKyAgYWNfY3Zfd29ya2luZ19hbGxvY2FfaD1ubworZmkKK3JtIC1mIGNvcmUgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj
b25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRhY19jdl93b3JraW5nX2FsbG9jYV9oIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3Zfd29ya2luZ19hbGxvY2FfaCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl93b3JraW5nX2FsbG9j
YV9oID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQUxMT0NBX0ggMSIgPj5j
b25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yIGFsbG9jYSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYWxs
b2NhLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzK3NldH0i
ID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworI2lmZGVmIF9fR05VQ19fCisjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9j
YQorI2Vsc2UKKyMgaWZkZWYgX01TQ19WRVIKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgorIyAgZGVm
aW5lIGFsbG9jYSBfYWxsb2NhCisjIGVsc2UKKyMgIGlmZGVmIEhBVkVfQUxMT0NBX0gKKyMgICBp
bmNsdWRlIDxhbGxvY2EuaD4KKyMgIGVsc2UKKyMgICBpZmRlZiBfQUlYCisgI3ByYWdtYSBhbGxv
Y2EKKyMgICBlbHNlCisjICAgIGlmbmRlZiBhbGxvY2EgLyogcHJlZGVmaW5lZCBieSBIUCBjYyAr
T2xpYmNhbGxzICovCitjaGFyICphbGxvY2EgKCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMg
IGVuZGlmCisjIGVuZGlmCisjZW5kaWYKKworaW50CittYWluICgpCit7CitjaGFyICpwID0gKGNo
YXIgKikgYWxsb2NhICgxKTsKKwkJCQkgICAgaWYgKHApIHJldHVybiAwOworICA7CisgIHJldHVy
biAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Cisg
IGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzPXllcworZWxzZQorICBhY19jdl9mdW5jX2FsbG9jYV93
b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg
XAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX2FsbG9j
YV93b3JrcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA+JjY7IH0K
KworaWYgdGVzdCAkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MgPSB5ZXM7IHRoZW4KKworJGFzX2Vj
aG8gIiNkZWZpbmUgSEFWRV9BTExPQ0EgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgIyBUaGUg
U1ZSMyBsaWJQVyBhbmQgU1ZSNCBsaWJ1Y2IgYm90aCBjb250YWluIGluY29tcGF0aWJsZSBmdW5j
dGlvbnMKKyMgdGhhdCBjYXVzZSB0cm91YmxlLiAgU29tZSB2ZXJzaW9ucyBkbyBub3QgZXZlbiBj
b250YWluIGFsbG9jYSBvcgorIyBjb250YWluIGEgYnVnZ3kgdmVyc2lvbi4gIElmIHlvdSBzdGls
bCB3YW50IHRvIHVzZSB0aGVpciBhbGxvY2EsCisjIHVzZSBhciB0byBleHRyYWN0IGFsbG9jYS5v
IGZyb20gdGhlbSBpbnN0ZWFkIG9mIGNvbXBpbGluZyBhbGxvY2EuYy4KKworQUxMT0NBPVwke0xJ
Qk9CSkRJUn1hbGxvY2EuJGFjX29iamV4dAorCiskYXNfZWNobyAiI2RlZmluZSBDX0FMTE9DQSAx
IiA+PmNvbmZkZWZzLmgKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcyIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3Mu
Li4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zfb3NfY3JheStzZXR9IiA9IHNldDsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZiBk
ZWZpbmVkIENSQVkgJiYgISBkZWZpbmVkIENSQVkyCit3ZWJlY3JheQorI2Vsc2UKK3dlbm90YmVj
cmF5CisjZW5kaWYKKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0
IikgMj4mNSB8CisgICRFR1JFUCAid2ViZWNyYXkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Cisg
IGFjX2N2X29zX2NyYXk9eWVzCitlbHNlCisgIGFjX2N2X29zX2NyYXk9bm8KK2ZpCitybSAtZiBj
b25mdGVzdCoKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3Zfb3NfY3JheSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X29zX2NyYXkiID4m
NjsgfQoraWYgdGVzdCAkYWNfY3Zfb3NfY3JheSA9IHllczsgdGhlbgorICBmb3IgYWNfZnVuYyBp
biBfZ2V0YjY3IEdFVEI2NyBnZXRiNjc7IGRvCisgICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNf
Y3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F
Tk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3Zh
ciJcIiA9IHgieWVzIjsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZp
bmUgQ1JBWV9TVEFDS1NFR19FTkQgJGFjX2Z1bmMKK19BQ0VPRgorCisgICAgYnJlYWsKK2ZpCisK
KyAgZG9uZQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EuLi4gIiA+JjY7IH0KK2lmIHRlc3Qg
IiR7YWNfY3ZfY19zdGFja19kaXJlY3Rpb24rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9
IHllczsgdGhlbiA6CisgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTAKK2Vsc2UKKyAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorZmluZF9zdGFja19kaXJlY3Rpb24gKCkK
K3sKKyAgc3RhdGljIGNoYXIgKmFkZHIgPSAwOworICBhdXRvIGNoYXIgZHVtbXk7CisgIGlmIChh
ZGRyID09IDApCisgICAgeworICAgICAgYWRkciA9ICZkdW1teTsKKyAgICAgIHJldHVybiBmaW5k
X3N0YWNrX2RpcmVjdGlvbiAoKTsKKyAgICB9CisgIGVsc2UKKyAgICByZXR1cm4gKCZkdW1teSA+
IGFkZHIpID8gMSA6IC0xOworfQorCitpbnQKK21haW4gKCkKK3sKKyAgcmV0dXJuIGZpbmRfc3Rh
Y2tfZGlyZWN0aW9uICgpIDwgMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElO
RU5PIjsgdGhlbiA6CisgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTEKK2Vsc2UKKyAgYWNfY3Zf
Y19zdGFja19kaXJlY3Rpb249LTEKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0
LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19v
YmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX3N0YWNrX2Rp
cmVjdGlvbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uIiA+JjY7IH0K
K2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU1RBQ0tfRElSRUNUSU9OICRhY19j
dl9jX3N0YWNrX2RpcmVjdGlvbgorX0FDRU9GCisKKworZmkKKworZm9yIGFjX2hlYWRlciBpbiAg
XAorICAgICAgICAgICAgICAgIGFycGEvaW5ldC5oIGZjbnRsLmggaW50dHlwZXMuaCBsaWJpbnRs
LmggbGltaXRzLmggbWFsbG9jLmggXAorICAgICAgICAgICAgICAgIG5ldGRiLmggbmV0aW5ldC9p
bi5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGxpYi5oIHN0cmluZy5oIFwKKyAgICAgICAgICAgICAg
ICBzdHJpbmdzLmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBzeXMvbW91bnQuaCBzeXMvcGFyYW0u
aCBcCisgICAgICAgICAgICAgICAgc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3RpbWUu
aCBzeXNsb2cuaCB0ZXJtaW9zLmggXAorICAgICAgICAgICAgICAgIHVuaXN0ZC5oIHlhamwveWFq
bF92ZXJzaW9uLmggXAorCitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hl
YWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdy
ZWwgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19k
ZWZhdWx0IgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRo
ZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFW
RV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKwor
IyBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVy
aXN0aWNzLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3Igc3RkYm9vbC5oIHRoYXQgY29uZm9ybXMgdG8gQzk5IiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIGZvciBzdGRib29sLmggdGhhdCBjb25mb3JtcyB0byBDOTkuLi4gIiA+JjY7IH0KK2lm
IHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUg
PHN0ZGJvb2wuaD4KKyNpZm5kZWYgYm9vbAorICJlcnJvcjogYm9vbCBpcyBub3QgZGVmaW5lZCIK
KyNlbmRpZgorI2lmbmRlZiBmYWxzZQorICJlcnJvcjogZmFsc2UgaXMgbm90IGRlZmluZWQiCisj
ZW5kaWYKKyNpZiBmYWxzZQorICJlcnJvcjogZmFsc2UgaXMgbm90IDAiCisjZW5kaWYKKyNpZm5k
ZWYgdHJ1ZQorICJlcnJvcjogdHJ1ZSBpcyBub3QgZGVmaW5lZCIKKyNlbmRpZgorI2lmIHRydWUg
IT0gMQorICJlcnJvcjogdHJ1ZSBpcyBub3QgMSIKKyNlbmRpZgorI2lmbmRlZiBfX2Jvb2xfdHJ1
ZV9mYWxzZV9hcmVfZGVmaW5lZAorICJlcnJvcjogX19ib29sX3RydWVfZmFsc2VfYXJlX2RlZmlu
ZWQgaXMgbm90IGRlZmluZWQiCisjZW5kaWYKKworCXN0cnVjdCBzIHsgX0Jvb2wgczogMTsgX0Jv
b2wgdDsgfSBzOworCisJY2hhciBhW3RydWUgPT0gMSA/IDEgOiAtMV07CisJY2hhciBiW2ZhbHNl
ID09IDAgPyAxIDogLTFdOworCWNoYXIgY1tfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCA9
PSAxID8gMSA6IC0xXTsKKwljaGFyIGRbKGJvb2wpIDAuNSA9PSB0cnVlID8gMSA6IC0xXTsKKwli
b29sIGUgPSAmczsKKwljaGFyIGZbKF9Cb29sKSAwLjAgPT0gZmFsc2UgPyAxIDogLTFdOworCWNo
YXIgZ1t0cnVlXTsKKwljaGFyIGhbc2l6ZW9mIChfQm9vbCldOworCWNoYXIgaVtzaXplb2Ygcy50
XTsKKwllbnVtIHsgaiA9IGZhbHNlLCBrID0gdHJ1ZSwgbCA9IGZhbHNlICogdHJ1ZSwgbSA9IHRy
dWUgKiAyNTYgfTsKKwkvKiBUaGUgZm9sbG93aW5nIGZhaWxzIGZvcgorCSAgIEhQIGFDKysvQU5T
SSBDIEIzOTEwQiBBLjA1LjU1IFtEZWMgMDQgMjAwM10uICovCisJX0Jvb2wgblttXTsKKwljaGFy
IG9bc2l6ZW9mIG4gPT0gbSAqIHNpemVvZiBuWzBdID8gMSA6IC0xXTsKKwljaGFyIHBbLTEgLSAo
X0Jvb2wpIDAgPCAwICYmIC0xIC0gKGJvb2wpIDAgPCAwID8gMSA6IC0xXTsKKyMJaWYgZGVmaW5l
ZCBfX3hsY19fIHx8IGRlZmluZWQgX19HTlVDX18KKwkgLyogQ2F0Y2ggYSBidWcgaW4gSUJNIEFJ
WCB4bGMgY29tcGlsZXIgdmVyc2lvbiA2LjAuMC4wCisJICAgIHJlcG9ydGVkIGJ5IEphbWVzIExl
bWxleSBvbiAyMDA1LTEwLTA1OyBzZWUKKwkgICAgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2
ZS9odG1sL2J1Zy1jb3JldXRpbHMvMjAwNS0xMC9tc2cwMDA4Ni5odG1sCisJICAgIFRoaXMgdGVz
dCBpcyBub3QgcXVpdGUgcmlnaHQsIHNpbmNlIHhsYyBpcyBhbGxvd2VkIHRvCisJICAgIHJlamVj
dCB0aGlzIHByb2dyYW0sIGFzIHRoZSBpbml0aWFsaXplciBmb3IgeGxjYnVnIGlzCisJICAgIG5v
dCBvbmUgb2YgdGhlIGZvcm1zIHRoYXQgQyByZXF1aXJlcyBzdXBwb3J0IGZvci4KKwkgICAgSG93
ZXZlciwgZG9pbmcgdGhlIHRlc3QgcmlnaHQgd291bGQgcmVxdWlyZSBhIHJ1bnRpbWUKKwkgICAg
dGVzdCwgYW5kIHRoYXQgd291bGQgbWFrZSBjcm9zcy1jb21waWxhdGlvbiBoYXJkZXIuCisJICAg
IExldCB1cyBob3BlIHRoYXQgSUJNIGZpeGVzIHRoZSB4bGMgYnVnLCBhbmQgYWxzbyBhZGRzCisJ
ICAgIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiBjb25zdGFudCBleHByZXNzaW9uLiAgSW4gdGhl
CisJICAgIG1lYW50aW1lLCB0aGlzIHRlc3Qgd2lsbCByZWplY3QgeGxjLCB3aGljaCBpcyBPSywg
c2luY2UKKwkgICAgb3VyIHN0ZGJvb2wuaCBzdWJzdGl0dXRlIHNob3VsZCBzdWZmaWNlLiAgV2Ug
YWxzbyB0ZXN0CisJICAgIHRoaXMgd2l0aCBHQ0MsIHdoZXJlIGl0IHNob3VsZCB3b3JrLCB0byBk
ZXRlY3QgbW9yZQorCSAgICBxdWlja2x5IHdoZXRoZXIgc29tZW9uZSBtZXNzZXMgdXAgdGhlIHRl
c3QgaW4gdGhlCisJICAgIGZ1dHVyZS4gICovCisJIGNoYXIgZGlnc1tdID0gIjAxMjM0NTY3ODki
OworCSBpbnQgeGxjYnVnID0gMSAvICgmKGRpZ3MgKyA1KVstMiArIChib29sKSAxXSA9PSAmZGln
c1s0XSA/IDEgOiAtMSk7CisjCWVuZGlmCisJLyogQ2F0Y2ggYSBidWcgaW4gYW4gSFAtVVggQyBj
b21waWxlci4gIFNlZQorCSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDAz
LTEyL21zZzAyMzAzLmh0bWwKKwkgICBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwv
YnVnLWNvcmV1dGlscy8yMDA1LTExL21zZzAwMTYxLmh0bWwKKwkgKi8KKwlfQm9vbCBxID0gdHJ1
ZTsKKwlfQm9vbCAqcHEgPSAmcTsKKworaW50CittYWluICgpCit7CisKKwkqcHEgfD0gcTsKKwkq
cHEgfD0gISBxOworCS8qIFJlZmVyIHRvIGV2ZXJ5IGRlY2xhcmVkIHZhbHVlLCB0byBhdm9pZCBj
b21waWxlciBvcHRpbWl6YXRpb25zLiAgKi8KKwlyZXR1cm4gKCFhICsgIWIgKyAhYyArICFkICsg
IWUgKyAhZiArICFnICsgIWggKyAhaSArICEhaiArICFrICsgISFsCisJCSsgIW0gKyAhbiArICFv
ICsgIXAgKyAhcSArICFwcSk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNf
Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfc3RkYm9v
bF9oPXllcworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYm9vbF9oPW5vCitmaQorcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9o
ZWFkZXJfc3RkYm9vbF9oIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCIg
PiY2OyB9CithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJfQm9vbCIgImFjX2N2X3R5cGVf
X0Jvb2wiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9fQm9v
bCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5l
IEhBVkVfX0JPT0wgMQorX0FDRU9GCisKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0
ZGJvb2xfaCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1NUREJPT0xfSCAx
IiA+PmNvbmZkZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5cGVzLmgiID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yIHVpZF90IGluIHN5cy90eXBlcy5oLi4uICIgPiY2OyB9CitpZiB0ZXN0
ICIke2FjX2N2X3R5cGVfdWlkX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAor
ICAkRUdSRVAgInVpZF90IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBhY19jdl90eXBlX3Vp
ZF90PXllcworZWxzZQorICBhY19jdl90eXBlX3VpZF90PW5vCitmaQorcm0gLWYgY29uZnRlc3Qq
CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX2N2X3R5cGVfdWlkX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl90eXBlX3VpZF90IiA+JjY7
IH0KK2lmIHRlc3QgJGFjX2N2X3R5cGVfdWlkX3QgPSBubzsgdGhlbgorCiskYXNfZWNobyAiI2Rl
ZmluZSB1aWRfdCBpbnQiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIGdpZF90
IGludCIgPj5jb25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CiskYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2NfaW5saW5lK3NldH0i
ID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNf
Y3ZfY19pbmxpbmU9bm8KK2ZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGluZTsg
ZG8KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cwordHlwZWRlZiBpbnQgZm9vX3Q7
CitzdGF0aWMgJGFjX2t3IGZvb190IHN0YXRpY19mb28gKCkge3JldHVybiAwOyB9CiskYWNfa3cg
Zm9vX3QgZm9vICgpIHtyZXR1cm4gMDsgfQorI2VuZGlmCisKK19BQ0VPRgoraWYgYWNfZm5fY190
cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX2lubGluZT0kYWNfa3cKK2Zp
CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKKyAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyAmJiBicmVhaworZG9uZQorCitm
aQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j
dl9jX2lubGluZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfaW5saW5lIiA+JjY7IH0KKworY2Fz
ZSAkYWNfY3ZfY19pbmxpbmUgaW4KKyAgaW5saW5lIHwgeWVzKSA7OworICAqKQorICAgIGNhc2Ug
JGFjX2N2X2NfaW5saW5lIGluCisgICAgICBubykgYWNfdmFsPTs7CisgICAgICAqKSBhY192YWw9
JGFjX2N2X2NfaW5saW5lOzsKKyAgICBlc2FjCisgICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP
RgorI2lmbmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBpbmxpbmUgJGFjX3ZhbAorI2VuZGlmCitf
QUNFT0YKKyAgICA7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiMTYi
ICJhY19jdl9jX2ludDE2X3QiCitjYXNlICRhY19jdl9jX2ludDE2X3QgaW4gIygKKyAgbm98eWVz
KSA7OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDE2
X3QgJGFjX2N2X2NfaW50MTZfdAorX0FDRU9GCis7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50
WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX2ludDMyX3QiCitjYXNlICRhY19jdl9jX2ludDMy
X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FD
RU9GCisjZGVmaW5lIGludDMyX3QgJGFjX2N2X2NfaW50MzJfdAorX0FDRU9GCis7OworZXNhYwor
CithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3QiCitj
YXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCitjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRfdAor
X0FDRU9GCis7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiOCIgImFj
X2N2X2NfaW50OF90IgorY2FzZSAkYWNfY3ZfY19pbnQ4X3QgaW4gIygKKyAgbm98eWVzKSA7OyAj
KAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDhfdCAkYWNf
Y3ZfY19pbnQ4X3QKK19BQ0VPRgorOzsKK2VzYWMKKworYWNfZm5fY19jaGVja190eXBlICIkTElO
RU5PIiAibW9kZV90IiAiYWNfY3ZfdHlwZV9tb2RlX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK
K2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9tb2RlX3QiID0geCIieWVzOyB0aGVuIDoKKworZWxzZQor
CitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIG1vZGVfdCBpbnQKK19BQ0VPRgor
CitmaQorCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJvZmZfdCIgImFjX2N2X3R5cGVf
b2ZmX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9vZmZf
dCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YK
KyNkZWZpbmUgb2ZmX3QgbG9uZyBpbnQKK19BQ0VPRgorCitmaQorCithY19mbl9jX2NoZWNrX3R5
cGUgIiRMSU5FTk8iICJwaWRfdCIgImFjX2N2X3R5cGVfcGlkX3QiICIkYWNfaW5jbHVkZXNfZGVm
YXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9waWRfdCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitl
bHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgcGlkX3QgaW50CitfQUNF
T0YKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19j
dl9jX3Jlc3RyaWN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgYWNfY3ZfY19yZXN0cmljdD1ubworICAgIyBUaGUgb3JkZXIgaGVyZSBj
YXRlcnMgdG8gdGhlIGZhY3QgdGhhdCBDKysgZG9lcyBub3QgcmVxdWlyZSByZXN0cmljdC4KKyAg
IGZvciBhY19rdyBpbiBfX3Jlc3RyaWN0IF9fcmVzdHJpY3RfXyBfUmVzdHJpY3QgcmVzdHJpY3Q7
IGRvCisgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KK3R5cGVkZWYgaW50ICogaW50X3B0cjsKKwlpbnQgZm9vIChp
bnRfcHRyICRhY19rdyBpcCkgeworCXJldHVybiBpcFswXTsKKyAgICAgICB9CitpbnQKK21haW4g
KCkKK3sKK2ludCBzWzFdOworCWludCAqICRhY19rdyB0ID0gczsKKwl0WzBdID0gMDsKKwlyZXR1
cm4gZm9vKHQpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY19yZXN0cmljdD0kYWNfa3cKK2ZpCity
bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19l
eHQKKyAgICAgdGVzdCAiJGFjX2N2X2NfcmVzdHJpY3QiICE9IG5vICYmIGJyZWFrCisgICBkb25l
CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX2N2X2NfcmVzdHJpY3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX3Jlc3RyaWN0IiA+JjY7
IH0KKworIGNhc2UgJGFjX2N2X2NfcmVzdHJpY3QgaW4KKyAgIHJlc3RyaWN0KSA7OworICAgbm8p
ICRhc19lY2hvICIjZGVmaW5lIHJlc3RyaWN0IC8qKi8iID4+Y29uZmRlZnMuaAorIDs7CisgICAq
KSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSByZXN0cmljdCAkYWNfY3ZfY19y
ZXN0cmljdAorX0FDRU9GCisgOzsKKyBlc2FjCisKK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVO
TyIgInNpemVfdCIgImFjX2N2X3R5cGVfc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitp
ZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHgiInllczsgdGhlbiA6CisKK2Vsc2UKKwor
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBzaXplX3QgdW5zaWduZWQgaW50Citf
QUNFT0YKKworZmkKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFj
X2N2X3R5cGVfc3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19j
dl90eXBlX3NzaXplX3QiID0geCIieWVzOyB0aGVuIDoKKworZWxzZQorCitjYXQgPj5jb25mZGVm
cy5oIDw8X0FDRU9GCisjZGVmaW5lIHNzaXplX3QgaW50CitfQUNFT0YKKworZmkKKworYWNfZm5f
Y19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0X2Jsa3NpemUiICJhY19j
dl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxrc2l6ZSIgIiRhY19pbmNsdWRlc19kZWZhdWx0Igor
aWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxrc2l6ZSIgPSB4IiJ5ZXM7
IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNU
X1NUQVRfU1RfQkxLU0laRSAxCitfQUNFT0YKKworCitmaQorCithY19mbl9jX2NoZWNrX21lbWJl
ciAiJExJTkVOTyIgInN0cnVjdCBzdGF0IiAic3RfYmxvY2tzIiAiYWNfY3ZfbWVtYmVyX3N0cnVj
dF9zdGF0X3N0X2Jsb2NrcyIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19j
dl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxvY2tzIiA9IHgiInllczsgdGhlbiA6CisKK2NhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1Mg
MQorX0FDRU9GCisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TVF9CTE9DS1MgMSIgPj5jb25m
ZGVmcy5oCisKK2Vsc2UKKyAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgZmlsZWJsb2Nrcy4k
YWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgZmlsZWJsb2Nrcy4kYWNf
b2JqZXh0IgorIDs7Citlc2FjCisKK2ZpCisKKworYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5F
Tk8iICJzdHJ1Y3Qgc3RhdCIgInN0X3JkZXYiICJhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3Rf
cmRldiIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3Ry
dWN0X3N0YXRfc3RfcmRldiIgPSB4IiJ5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfUkRFViAxCitfQUNFT0YKKworCitm
aQorCithY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjE2IiAiYWNfY3ZfY191aW50MTZf
dCIKK2Nhc2UgJGFjX2N2X2NfdWludDE2X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQor
CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgdWludDE2X3QgJGFjX2N2X2Nf
dWludDE2X3QKK19BQ0VPRgorOzsKKyAgZXNhYworCithY19mbl9jX2ZpbmRfdWludFhfdCAiJExJ
TkVOTyIgIjMyIiAiYWNfY3ZfY191aW50MzJfdCIKK2Nhc2UgJGFjX2N2X2NfdWludDMyX3QgaW4g
IygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCiskYXNfZWNobyAiI2RlZmluZSBfVUlOVDMyX1Qg
MSIgPj5jb25mZGVmcy5oCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSB1
aW50MzJfdCAkYWNfY3ZfY191aW50MzJfdAorX0FDRU9GCis7OworICBlc2FjCisKK2FjX2ZuX2Nf
ZmluZF91aW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX3VpbnQ2NF90IgorY2FzZSAkYWNf
Y3ZfY191aW50NjRfdCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisgICopCisKKyRhc19lY2hvICIj
ZGVmaW5lIF9VSU5UNjRfVCAxIiA+PmNvbmZkZWZzLmgKKworCitjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIHVpbnQ2NF90ICRhY19jdl9jX3VpbnQ2NF90CitfQUNFT0YKKzs7Cisg
IGVzYWMKKworYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICI4IiAiYWNfY3ZfY191aW50
OF90IgorY2FzZSAkYWNfY3ZfY191aW50OF90IGluICMoCisgIG5vfHllcykgOzsgIygKKyAgKikK
KworJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQ4X1QgMSIgPj5jb25mZGVmcy5oCisKKworY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSB1aW50OF90ICRhY19jdl9jX3VpbnQ4X3QKK19B
Q0VPRgorOzsKKyAgZXNhYworCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJwdHJkaWZm
X3QiICJhY19jdl90eXBlX3B0cmRpZmZfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVz
dCAieCRhY19jdl90eXBlX3B0cmRpZmZfdCIgPSB4IiJ5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25m
ZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfUFRSRElGRl9UIDEKK19BQ0VPRgorCisKK2Zp
CisKKworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZXJyb3JfYXRfbGluZSIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgZXJyb3JfYXRfbGluZS4uLiAiID4mNjsgfQoraWYgdGVz
dCAiJHthY19jdl9saWJfZXJyb3JfYXRfbGluZStzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxlcnJv
ci5oPgoraW50CittYWluICgpCit7CitlcnJvcl9hdF9saW5lICgwLCAwLCAiIiwgMCwgImFuIGVy
cm9yIG9jY3VycmVkIik7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2Nf
dHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmU9eWVz
CitlbHNlCisgIGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lPW5vCitmaQorcm0gLWYgY29yZSBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv
bmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfbGliX2Vycm9yX2F0X2xpbmUiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfbGliX2Vycm9yX2F0
X2xpbmUgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBlcnJvci4kYWNf
b2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgZXJyb3IuJGFjX29iamV4dCIK
KyA7OworZXNhYworCitmaQorCitmb3IgYWNfaGVhZGVyIGluIHZmb3JrLmgKK2RvIDoKKyAgYWNf
Zm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInZmb3JrLmgiICJhY19jdl9oZWFk
ZXJfdmZvcmtfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFk
ZXJfdmZvcmtfaCIgPSB4IiJ5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CisjZGVmaW5lIEhBVkVfVkZPUktfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitmb3IgYWNf
ZnVuYyBpbiBmb3JrIHZmb3JrCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1
bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi
JGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIg
PSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAk
YXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2Rv
bmUKKworaWYgdGVzdCAieCRhY19jdl9mdW5jX2ZvcmsiID0geHllczsgdGhlbgorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIGZv
cmsiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgZm9yay4uLiAiID4mNjsg
fQoraWYgdGVzdCAiJHthY19jdl9mdW5jX2Zvcmtfd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29t
cGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz1jcm9zcworZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CisK
KwkgIC8qIEJ5IFJ1ZWRpZ2VyIEt1aGxtYW5uLiAqLworCSAgcmV0dXJuIGZvcmsgKCkgPCAwOwor
CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVO
TyI7IHRoZW4gOgorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9eWVzCitlbHNlCisgIGFjX2N2X2Z1
bmNfZm9ya193b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBn
bW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfZm9ya193b3Jr
cyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPiY2OyB9CisKK2Vsc2UK
KyAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPSRhY19jdl9mdW5jX2ZvcmsKK2ZpCitpZiB0ZXN0ICJ4
JGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPSB4Y3Jvc3M7IHRoZW4KKyAgY2FzZSAkaG9zdCBpbgor
ICAgICotKi1hbWlnYW9zKiB8ICotKi1tc2Rvc2RqZ3BwKikKKyAgICAgICMgT3ZlcnJpZGUsIGFz
IHRoZXNlIHN5c3RlbXMgaGF2ZSBvbmx5IGEgZHVtbXkgZm9yaygpIHN0dWIKKyAgICAgIGFjX2N2
X2Z1bmNfZm9ya193b3Jrcz1ubworICAgICAgOzsKKyAgICAqKQorICAgICAgYWNfY3ZfZnVuY19m
b3JrX3dvcmtzPXllcworICAgICAgOzsKKyAgZXNhYworICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHJlc3VsdCAkYWNfY3ZfZnVuY19mb3JrX3dvcmtz
IGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfZm9ya193b3JrcyBndWVzc2VkIGJlY2F1
c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mMjt9CitmaQorYWNfY3ZfZnVuY192Zm9ya193b3Jr
cz0kYWNfY3ZfZnVuY192Zm9yaworaWYgdGVzdCAieCRhY19jdl9mdW5jX3Zmb3JrIiA9IHh5ZXM7
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3Igd29ya2luZyB2Zm9yayIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2lu
ZyB2Zm9yay4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX3Zmb3JrX3dvcmtzK3Nl
dH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3Zm
b3JrX3dvcmtzPWNyb3NzCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy8qIFRoYW5rcyB0byBQYXVsIEVn
Z2VydCBmb3IgdGhpcyB0ZXN0LiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaW5jbHVkZSA8
c3lzL3dhaXQuaD4KKyNpZmRlZiBIQVZFX1ZGT1JLX0gKKyMgaW5jbHVkZSA8dmZvcmsuaD4KKyNl
bmRpZgorLyogT24gc29tZSBzcGFyYyBzeXN0ZW1zLCBjaGFuZ2VzIGJ5IHRoZSBjaGlsZCB0byBs
b2NhbCBhbmQgaW5jb21pbmcKKyAgIGFyZ3VtZW50IHJlZ2lzdGVycyBhcmUgcHJvcGFnYXRlZCBi
YWNrIHRvIHRoZSBwYXJlbnQuICBUaGUgY29tcGlsZXIKKyAgIGlzIHRvbGQgYWJvdXQgdGhpcyB3
aXRoICNpbmNsdWRlIDx2Zm9yay5oPiwgYnV0IHNvbWUgY29tcGlsZXJzCisgICAoZS5nLiBnY2Mg
LU8pIGRvbid0IGdyb2sgPHZmb3JrLmg+LiAgVGVzdCBmb3IgdGhpcyBieSB1c2luZyBhCisgICBz
dGF0aWMgdmFyaWFibGUgd2hvc2UgYWRkcmVzcyBpcyBwdXQgaW50byBhIHJlZ2lzdGVyIHRoYXQg
aXMKKyAgIGNsb2JiZXJlZCBieSB0aGUgdmZvcmsuICAqLworc3RhdGljIHZvaWQKKyNpZmRlZiBf
X2NwbHVzcGx1cworc3BhcmNfYWRkcmVzc190ZXN0IChpbnQgYXJnKQorIyBlbHNlCitzcGFyY19h
ZGRyZXNzX3Rlc3QgKGFyZykgaW50IGFyZzsKKyNlbmRpZgoreworICBzdGF0aWMgcGlkX3QgY2hp
bGQ7CisgIGlmICghY2hpbGQpIHsKKyAgICBjaGlsZCA9IHZmb3JrICgpOworICAgIGlmIChjaGls
ZCA8IDApIHsKKyAgICAgIHBlcnJvciAoInZmb3JrIik7CisgICAgICBfZXhpdCgyKTsKKyAgICB9
CisgICAgaWYgKCFjaGlsZCkgeworICAgICAgYXJnID0gZ2V0cGlkKCk7CisgICAgICB3cml0ZSgt
MSwgIiIsIDApOworICAgICAgX2V4aXQgKGFyZyk7CisgICAgfQorICB9Cit9CisKK2ludAorbWFp
biAoKQoreworICBwaWRfdCBwYXJlbnQgPSBnZXRwaWQgKCk7CisgIHBpZF90IGNoaWxkOworCisg
IHNwYXJjX2FkZHJlc3NfdGVzdCAoMCk7CisKKyAgY2hpbGQgPSB2Zm9yayAoKTsKKworICBpZiAo
Y2hpbGQgPT0gMCkgeworICAgIC8qIEhlcmUgaXMgYW5vdGhlciB0ZXN0IGZvciBzcGFyYyB2Zm9y
ayByZWdpc3RlciBwcm9ibGVtcy4gIFRoaXMKKyAgICAgICB0ZXN0IHVzZXMgbG90cyBvZiBsb2Nh
bCB2YXJpYWJsZXMsIGF0IGxlYXN0IGFzIG1hbnkgbG9jYWwKKyAgICAgICB2YXJpYWJsZXMgYXMg
bWFpbiBoYXMgYWxsb2NhdGVkIHNvIGZhciBpbmNsdWRpbmcgY29tcGlsZXIKKyAgICAgICB0ZW1w
b3Jhcmllcy4gIDQgbG9jYWxzIGFyZSBlbm91Z2ggZm9yIGdjYyAxLjQwLjMgb24gYSBTb2xhcmlz
CisgICAgICAgNC4xLjMgc3BhcmMsIGJ1dCB3ZSB1c2UgOCB0byBiZSBzYWZlLiAgQSBidWdneSBj
b21waWxlciBzaG91bGQKKyAgICAgICByZXVzZSB0aGUgcmVnaXN0ZXIgb2YgcGFyZW50IGZvciBv
bmUgb2YgdGhlIGxvY2FsIHZhcmlhYmxlcywKKyAgICAgICBzaW5jZSBpdCB3aWxsIHRoaW5rIHRo
YXQgcGFyZW50IGNhbid0IHBvc3NpYmx5IGJlIHVzZWQgYW55IG1vcmUKKyAgICAgICBpbiB0aGlz
IHJvdXRpbmUuICBBc3NpZ25pbmcgdG8gdGhlIGxvY2FsIHZhcmlhYmxlIHdpbGwgdGh1cworICAg
ICAgIG11bmdlIHBhcmVudCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuICAqLworICAgIHBpZF90Cisg
ICAgICBwID0gZ2V0cGlkKCksIHAxID0gZ2V0cGlkKCksIHAyID0gZ2V0cGlkKCksIHAzID0gZ2V0
cGlkKCksCisgICAgICBwNCA9IGdldHBpZCgpLCBwNSA9IGdldHBpZCgpLCBwNiA9IGdldHBpZCgp
LCBwNyA9IGdldHBpZCgpOworICAgIC8qIENvbnZpbmNlIHRoZSBjb21waWxlciB0aGF0IHAuLnA3
IGFyZSBsaXZlOyBvdGhlcndpc2UsIGl0IG1pZ2h0CisgICAgICAgdXNlIHRoZSBzYW1lIGhhcmR3
YXJlIHJlZ2lzdGVyIGZvciBhbGwgOCBsb2NhbCB2YXJpYWJsZXMuICAqLworICAgIGlmIChwICE9
IHAxIHx8IHAgIT0gcDIgfHwgcCAhPSBwMyB8fCBwICE9IHA0CisJfHwgcCAhPSBwNSB8fCBwICE9
IHA2IHx8IHAgIT0gcDcpCisgICAgICBfZXhpdCgxKTsKKworICAgIC8qIE9uIHNvbWUgc3lzdGVt
cyAoZS5nLiBJUklYIDMuMyksIHZmb3JrIGRvZXNuJ3Qgc2VwYXJhdGUgcGFyZW50CisgICAgICAg
ZnJvbSBjaGlsZCBmaWxlIGRlc2NyaXB0b3JzLiAgSWYgdGhlIGNoaWxkIGNsb3NlcyBhIGRlc2Ny
aXB0b3IKKyAgICAgICBiZWZvcmUgaXQgZXhlY3Mgb3IgZXhpdHMsIHRoaXMgbXVuZ2VzIHRoZSBw
YXJlbnQncyBkZXNjcmlwdG9yCisgICAgICAgYXMgd2VsbC4gIFRlc3QgZm9yIHRoaXMgYnkgY2xv
c2luZyBzdGRvdXQgaW4gdGhlIGNoaWxkLiAgKi8KKyAgICBfZXhpdChjbG9zZShmaWxlbm8oc3Rk
b3V0KSkgIT0gMCk7CisgIH0gZWxzZSB7CisgICAgaW50IHN0YXR1czsKKyAgICBzdHJ1Y3Qgc3Rh
dCBzdDsKKworICAgIHdoaWxlICh3YWl0KCZzdGF0dXMpICE9IGNoaWxkKQorICAgICAgOworICAg
IHJldHVybiAoCisJIC8qIFdhcyB0aGVyZSBzb21lIHByb2JsZW0gd2l0aCB2Zm9ya2luZz8gICov
CisJIGNoaWxkIDwgMAorCisJIC8qIERpZCB0aGUgY2hpbGQgZmFpbD8gIChUaGlzIHNob3VsZG4n
dCBoYXBwZW4uKSAgKi8KKwkgfHwgc3RhdHVzCisKKwkgLyogRGlkIHRoZSB2Zm9yay9jb21waWxl
ciBidWcgb2NjdXI/ICAqLworCSB8fCBwYXJlbnQgIT0gZ2V0cGlkKCkKKworCSAvKiBEaWQgdGhl
IGZpbGUgZGVzY3JpcHRvciBidWcgb2NjdXI/ICAqLworCSB8fCBmc3RhdChmaWxlbm8oc3Rkb3V0
KSwgJnN0KSAhPSAwCisJICk7CisgIH0KK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9eWVzCitlbHNlCisgIGFj
X2N2X2Z1bmNfdmZvcmtfd29ya3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0
ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX3Zm
b3JrX3dvcmtzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY2OyB9
CisKK2ZpOworaWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geGNyb3NzOyB0aGVu
CisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1
bmNfdmZvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjUK
KyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHJlc3VsdCAkYWNfY3ZfZnVuY192Zm9ya193b3Jr
cyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mMjt9CitmaQorCitpZiB0
ZXN0ICJ4JGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MiID0geHllczsgdGhlbgorCiskYXNfZWNobyAi
I2RlZmluZSBIQVZFX1dPUktJTkdfVkZPUksgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKworJGFz
X2VjaG8gIiNkZWZpbmUgdmZvcmsgZm9yayIgPj5jb25mZGVmcy5oCisKK2ZpCitpZiB0ZXN0ICJ4
JGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5l
IEhBVkVfV09SS0lOR19GT1JLIDEiID4+Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfTEFSR0VGSUxFX1NPVVJD
RSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBfTEFSR0VGSUxFX1NPVVJDRSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIg
PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlK3NldH0iID0gc2V0
OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgd2hpbGUgOjsg
ZG8KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAvKiBmb3Igb2ZmX3QgKi8K
KyAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK2ludCAoKmZwKSAoRklM
RSAqLCBvZmZfdCwgaW50KSA9IGZzZWVrbzsKKyAgICAgcmV0dXJuIGZzZWVrbyAoc3RkaW4sIDAs
IDApICYmIGZwIChzdGRpbiwgMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm
IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3lzX2xhcmdlZmls
ZV9zb3VyY2U9bm87IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu
JGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk
ZWZzLmguICAqLworI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxCisjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+IC8qIGZvciBvZmZfdCAqLworICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFp
biAoKQoreworaW50ICgqZnApIChGSUxFICosIG9mZl90LCBpbnQpID0gZnNlZWtvOworICAgICBy
ZXR1cm4gZnNlZWtvIChzdGRpbiwgMCwgMCkgJiYgZnAgKHN0ZGluLCAwLCAwKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT0xOyBicmVhaworZmkKK3JtIC1mIGNvcmUg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4
dCBjb25mdGVzdC4kYWNfZXh0CisgIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPXVua25vd24K
KyAgYnJlYWsKK2RvbmUKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjUKKyRhc19lY2hvICIk
YWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiID4mNjsgfQorY2FzZSAkYWNfY3Zfc3lzX2xhcmdl
ZmlsZV9zb3VyY2UgaW4gIygKKyAgbm8gfCB1bmtub3duKSA7OworICAqKQorY2F0ID4+Y29uZmRl
ZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAkYWNfY3Zfc3lzX2xhcmdl
ZmlsZV9zb3VyY2UKK19BQ0VPRgorOzsKK2VzYWMKK3JtIC1yZiBjb25mdGVzdCoKKworIyBXZSB1
c2VkIHRvIHRyeSBkZWZpbmluZyBfWE9QRU5fU09VUkNFPTUwMCB0b28sIHRvIHdvcmsgYXJvdW5k
IGEgYnVnCisjIGluIGdsaWJjIDIuMS4zLCBidXQgdGhhdCBicmVha3MgdG9vIG1hbnkgb3RoZXIg
dGhpbmdzLgorIyBJZiB5b3Ugd2FudCBmc2Vla28gYW5kIGZ0ZWxsbyB3aXRoIGdsaWJjLCB1cGdy
YWRlIHRvIGEgZml4ZWQgZ2xpYmMuCitpZiB0ZXN0ICRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJj
ZSAhPSB1bmtub3duOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfRlNFRUtPIDEiID4+
Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMgdHJhaWxpbmcgc2xh
c2giID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBsc3RhdCBjb3JyZWN0bHkgaGFu
ZGxlcyB0cmFpbGluZyBzbGFzaC4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX2xz
dGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBybSAtZiBjb25mdGVzdC5zeW0gY29u
ZnRlc3QuZmlsZQorZWNobyA+Y29uZnRlc3QuZmlsZQoraWYgdGVzdCAiJGFzX2xuX3MiID0gImxu
IC1zIiAmJiBsbiAtcyBjb25mdGVzdC5maWxlIGNvbmZ0ZXN0LnN5bTsgdGhlbgorICBpZiB0ZXN0
ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbHN0YXRfZGVy
ZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ubworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5j
bHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitzdHJ1Y3Qgc3RhdCBzYnVmOworICAgICAv
KiBMaW51eCB3aWxsIGRlcmVmZXJlbmNlIHRoZSBzeW1saW5rIGFuZCBmYWlsLCBhcyByZXF1aXJl
ZCBieSBQT1NJWC4KKwlUaGF0IGlzIGJldHRlciBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBtZWFucyB3
ZSB3aWxsIG5vdAorCWhhdmUgdG8gY29tcGlsZSBhbmQgdXNlIHRoZSBsc3RhdCB3cmFwcGVyLiAg
Ki8KKyAgICAgcmV0dXJuIGxzdGF0ICgiY29uZnRlc3Quc3ltLyIsICZzYnVmKSA9PSAwOworICA7
CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0
aGVuIDoKKyAgYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXll
cworZWxzZQorICBhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9
bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0
IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVh
bSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitlbHNlCisgICMgSWYgdGhlIGBsbiAtcycgY29tbWFu
ZCBmYWlsZWQsIHRoZW4gd2UgcHJvYmFibHkgZG9uJ3QgZXZlbgorICAjIGhhdmUgYW4gbHN0YXQg
ZnVuY3Rpb24uCisgIGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGlu
az1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LnN5bSBjb25mdGVzdC5maWxlCisKK2ZpCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbHN0
YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1
bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPiY2OyB9CisKK3Rlc3QgJGFj
X2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IHllcyAmJgorCitj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIExTVEFUX0ZPTExPV1NfU0xBU0hFRF9T
WU1MSU5LIDEKK19BQ0VPRgorCisKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVy
ZW5jZXNfc2xhc2hlZF9zeW1saW5rIiA9IHhubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBp
bgorICAqIiBsc3RhdC4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMg
bHN0YXQuJGFjX29iamV4dCIKKyA7OworZXNhYworCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgc3lzL3R5cGVzLmggZGVmaW5l
cyBtYWtlZGV2IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc3lzL3R5cGVzLmgg
ZGVmaW5lcyBtYWtlZGV2Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNf
dHlwZXNfaF9tYWtlZGV2K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50
CittYWluICgpCit7CityZXR1cm4gbWFrZWRldigwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30K
K19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9o
ZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldj15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N5c190
eXBlc19oX21ha2VkZXY9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitm
aQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j
dl9oZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hlYWRl
cl9zeXNfdHlwZXNfaF9tYWtlZGV2IiA+JjY7IH0KKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5
c190eXBlc19oX21ha2VkZXYgPSBubzsgdGhlbgorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3Jl
bCAiJExJTkVOTyIgInN5cy9ta2Rldi5oIiAiYWNfY3ZfaGVhZGVyX3N5c19ta2Rldl9oIiAiJGFj
X2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbWtkZXZfaCIg
PSB4IiJ5ZXM7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBNQUpPUl9JTl9NS0RFViAxIiA+
PmNvbmZkZWZzLmgKKworZmkKKworCisKKyAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19ta2Rl
dl9oID0gbm87IHRoZW4KKyAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5P
IiAic3lzL3N5c21hY3Jvcy5oIiAiYWNfY3ZfaGVhZGVyX3N5c19zeXNtYWNyb3NfaCIgIiRhY19p
bmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX3N5c21hY3Jvc19o
IiA9IHgiInllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIE1BSk9SX0lOX1NZU01BQ1JP
UyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworCisgIGZpCitmaQorCitmb3IgYWNfaGVhZGVyIGlu
IHN0ZGxpYi5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8i
ICJzdGRsaWIuaCIgImFjX2N2X2hlYWRlcl9zdGRsaWJfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0
IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkbGliX2giID0geCIieWVzOyB0aGVuIDoKKyAg
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NURExJQl9IIDEKK19BQ0VP
RgorCitmaQorCitkb25lCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNvbXBhdGlibGUgbWFsbG9jIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIGZvciBHTlUgbGliYyBjb21wYXRpYmxlIG1hbGxvYy4uLiAiID4mNjsgfQor
aWYgdGVzdCAiJHthY19jdl9mdW5jX21hbGxvY18wX25vbm51bGwrc2V0fSIgPSBzZXQ7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3Nf
Y29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD1u
bworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisv
KiBlbmQgY29uZmRlZnMuaC4gICovCisjaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5l
ZCBIQVZFX1NURExJQl9ICisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2Vsc2UKK2NoYXIgKm1hbGxv
YyAoKTsKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3JldHVybiAhIG1hbGxvYyAoMCk7Cisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7
IHRoZW4gOgorICBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVzCitlbHNlCisgIGFjX2N2
X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29u
ZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNf
bWFsbG9jXzBfbm9ubnVsbCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9u
bnVsbCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGwgPSB5ZXM7
IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX01BTExPQyAxIiA+PmNvbmZkZWZzLmgK
KworZWxzZQorICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01BTExPQyAwIiA+PmNvbmZkZWZzLmgK
KworICAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgbWFsbG9jLiRhY19vYmpleHQgIiogKSA7
OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBtYWxsb2MuJGFjX29iamV4dCIKKyA7OworZXNhYwor
CisKKyRhc19lY2hvICIjZGVmaW5lIG1hbGxvYyBycGxfbWFsbG9jIiA+PmNvbmZkZWZzLmgKKwor
ZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBi
b3RoIGJlIGluY2x1ZGVkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl90aW1l
K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNv
bmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy90aW1l
Lmg+CisjaW5jbHVkZSA8dGltZS5oPgorCitpbnQKK21haW4gKCkKK3sKK2lmICgoc3RydWN0IHRt
ICopIDApCityZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5f
Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfdGltZT15ZXMK
K2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3RpbWU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl90aW1lIiA+
JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3RpbWUiID4mNjsgfQoraWYgdGVzdCAkYWNfY3Zf
aGVhZGVyX3RpbWUgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVElNRV9XSVRIX1NZ
U19USU1FIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKKworCisgIGZvciBhY19oZWFkZXIgaW4g
JGFjX2hlYWRlcl9saXN0CitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hl
YWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBp
bGUgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19k
ZWZhdWx0CisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsg
dGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJI
QVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKwor
CisKKworCisKKworCisgIGZvciBhY19mdW5jIGluICRhY19mdW5jX2xpc3QKK2RvIDoKKyAgYXNf
YWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19m
bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFs
IHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190
cl9jcHBgIDEKK19BQ0VPRgorCitmaQorZG9uZQorCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWt0aW1lIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIG1rdGltZS4uLiAiID4mNjsgfQoraWYg
dGVzdCAiJHthY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lK3NldH0iID0gc2V0OyB0aGVuIDoKKyAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBp
bGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPW5vCitlbHNl
CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKy8qIFRlc3QgcHJvZ3JhbSBmcm9tIFBhdWwgRWdnZXJ0IGFuZCBUb255
IExlbmVpcy4gICovCisjaWZkZWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90
aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1lTX1RJTUVf
SAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgor
IyBlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworI2lmZGVmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYK
KworI2lmbmRlZiBIQVZFX0FMQVJNCisjIGRlZmluZSBhbGFybShYKSAvKiBlbXB0eSAqLworI2Vu
ZGlmCisKKy8qIFdvcmsgYXJvdW5kIHJlZGVmaW5pdGlvbiB0byBycGxfcHV0ZW52IGJ5IG90aGVy
IGNvbmZpZyB0ZXN0cy4gICovCisjdW5kZWYgcHV0ZW52CisKK3N0YXRpYyB0aW1lX3QgdGltZV90
X21heDsKK3N0YXRpYyB0aW1lX3QgdGltZV90X21pbjsKKworLyogVmFsdWVzIHdlJ2xsIHVzZSB0
byBzZXQgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFy
ICp0el9zdHJpbmdzW10gPSB7CisgIChjb25zdCBjaGFyICopIDAsICJUWj1HTVQwIiwgIlRaPUpT
VC05IiwKKyAgIlRaPUVTVCszRURUKzIsTTEwLjEuMC8wMDowMDowMCxNMi4zLjAvMDA6MDA6MDAi
Cit9OworI2RlZmluZSBOX1NUUklOR1MgKHNpemVvZiAodHpfc3RyaW5ncykgLyBzaXplb2YgKHR6
X3N0cmluZ3NbMF0pKQorCisvKiBSZXR1cm4gMCBpZiBta3RpbWUgZmFpbHMgdG8gY29udmVydCBh
IGRhdGUgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcC4KKyAgIEJhc2VkIG9uIGEgcHJvYmxlbSBy
ZXBvcnQgZnJvbSBBbmRyZWFzIEphZWdlci4gICovCitzdGF0aWMgaW50CitzcHJpbmdfZm9yd2Fy
ZF9nYXAgKCkKK3sKKyAgLyogZ2xpYmMgKHVwIHRvIGFib3V0IDE5OTgtMTAtMDcpIGZhaWxlZCB0
aGlzIHRlc3QuICovCisgIHN0cnVjdCB0bSB0bTsKKworICAvKiBVc2UgdGhlIHBvcnRhYmxlIFBP
U0lYLjEgc3BlY2lmaWNhdGlvbiAiVFo9UFNUOFBEVCxNNC4xLjAsTTEwLjUuMCIKKyAgICAgaW5z
dGVhZCBvZiAiVFo9QW1lcmljYS9WYW5jb3V2ZXIiIGluIG9yZGVyIHRvIGRldGVjdCB0aGUgYnVn
IGV2ZW4KKyAgICAgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlIE9sc29uIGV4dGVu
c2lvbiwgb3IgZG9uJ3QgaGF2ZSB0aGUKKyAgICAgZnVsbCB6b25laW5mbyB0YWJsZXMgaW5zdGFs
bGVkLiAgKi8KKyAgcHV0ZW52ICgoY2hhciopICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4wIik7
CisKKyAgdG0udG1feWVhciA9IDk4OworICB0bS50bV9tb24gPSAzOworICB0bS50bV9tZGF5ID0g
NTsKKyAgdG0udG1faG91ciA9IDI7CisgIHRtLnRtX21pbiA9IDA7CisgIHRtLnRtX3NlYyA9IDA7
CisgIHRtLnRtX2lzZHN0ID0gLTE7CisgIHJldHVybiBta3RpbWUgKCZ0bSkgIT0gKHRpbWVfdCkg
LTE7Cit9CisKK3N0YXRpYyBpbnQKK21rdGltZV90ZXN0MSAodGltZV90IG5vdykKK3sKKyAgc3Ry
dWN0IHRtICpsdDsKKyAgcmV0dXJuICEgKGx0ID0gbG9jYWx0aW1lICgmbm93KSkgfHwgbWt0aW1l
IChsdCkgPT0gbm93OworfQorCitzdGF0aWMgaW50Citta3RpbWVfdGVzdCAodGltZV90IG5vdykK
K3sKKyAgcmV0dXJuIChta3RpbWVfdGVzdDEgKG5vdykKKwkgICYmIG1rdGltZV90ZXN0MSAoKHRp
bWVfdCkgKHRpbWVfdF9tYXggLSBub3cpKQorCSAgJiYgbWt0aW1lX3Rlc3QxICgodGltZV90KSAo
dGltZV90X21pbiArIG5vdykpKTsKK30KKworc3RhdGljIGludAoraXJpeF82XzRfYnVnICgpCit7
CisgIC8qIEJhc2VkIG9uIGNvZGUgZnJvbSBBcmllbCBGYWlnb24uICAqLworICBzdHJ1Y3QgdG0g
dG07CisgIHRtLnRtX3llYXIgPSA5NjsKKyAgdG0udG1fbW9uID0gMzsKKyAgdG0udG1fbWRheSA9
IDA7CisgIHRtLnRtX2hvdXIgPSAwOworICB0bS50bV9taW4gPSAwOworICB0bS50bV9zZWMgPSAw
OworICB0bS50bV9pc2RzdCA9IC0xOworICBta3RpbWUgKCZ0bSk7CisgIHJldHVybiB0bS50bV9t
b24gPT0gMiAmJiB0bS50bV9tZGF5ID09IDMxOworfQorCitzdGF0aWMgaW50CitiaWd0aW1lX3Rl
c3QgKGludCBqKQoreworICBzdHJ1Y3QgdG0gdG07CisgIHRpbWVfdCBub3c7CisgIHRtLnRtX3ll
YXIgPSB0bS50bV9tb24gPSB0bS50bV9tZGF5ID0gdG0udG1faG91ciA9IHRtLnRtX21pbiA9IHRt
LnRtX3NlYyA9IGo7CisgIG5vdyA9IG1rdGltZSAoJnRtKTsKKyAgaWYgKG5vdyAhPSAodGltZV90
KSAtMSkKKyAgICB7CisgICAgICBzdHJ1Y3QgdG0gKmx0ID0gbG9jYWx0aW1lICgmbm93KTsKKyAg
ICAgIGlmICghIChsdAorCSAgICAgJiYgbHQtPnRtX3llYXIgPT0gdG0udG1feWVhcgorCSAgICAg
JiYgbHQtPnRtX21vbiA9PSB0bS50bV9tb24KKwkgICAgICYmIGx0LT50bV9tZGF5ID09IHRtLnRt
X21kYXkKKwkgICAgICYmIGx0LT50bV9ob3VyID09IHRtLnRtX2hvdXIKKwkgICAgICYmIGx0LT50
bV9taW4gPT0gdG0udG1fbWluCisJICAgICAmJiBsdC0+dG1fc2VjID09IHRtLnRtX3NlYworCSAg
ICAgJiYgbHQtPnRtX3lkYXkgPT0gdG0udG1feWRheQorCSAgICAgJiYgbHQtPnRtX3dkYXkgPT0g
dG0udG1fd2RheQorCSAgICAgJiYgKChsdC0+dG1faXNkc3QgPCAwID8gLTEgOiAwIDwgbHQtPnRt
X2lzZHN0KQorCQkgID09ICh0bS50bV9pc2RzdCA8IDAgPyAtMSA6IDAgPCB0bS50bV9pc2RzdCkp
KSkKKwlyZXR1cm4gMDsKKyAgICB9CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit5ZWFy
XzIwNTBfdGVzdCAoKQoreworICAvKiBUaGUgY29ycmVjdCBhbnN3ZXIgZm9yIDIwNTAtMDItMDEg
MDA6MDA6MDAgaW4gUGFjaWZpYyB0aW1lLAorICAgICBpZ25vcmluZyBsZWFwIHNlY29uZHMuICAq
LworICB1bnNpZ25lZCBsb25nIGludCBhbnN3ZXIgPSAyNTI3MzE1MjAwVUw7CisKKyAgc3RydWN0
IHRtIHRtOworICB0aW1lX3QgdDsKKyAgdG0udG1feWVhciA9IDIwNTAgLSAxOTAwOworICB0bS50
bV9tb24gPSAyIC0gMTsKKyAgdG0udG1fbWRheSA9IDE7CisgIHRtLnRtX2hvdXIgPSB0bS50bV9t
aW4gPSB0bS50bV9zZWMgPSAwOworICB0bS50bV9pc2RzdCA9IC0xOworCisgIC8qIFVzZSB0aGUg
cG9ydGFibGUgUE9TSVguMSBzcGVjaWZpY2F0aW9uICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4w
IgorICAgICBpbnN0ZWFkIG9mICJUWj1BbWVyaWNhL1ZhbmNvdXZlciIgaW4gb3JkZXIgdG8gZGV0
ZWN0IHRoZSBidWcgZXZlbgorICAgICBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUg
T2xzb24gZXh0ZW5zaW9uLCBvciBkb24ndCBoYXZlIHRoZQorICAgICBmdWxsIHpvbmVpbmZvIHRh
YmxlcyBpbnN0YWxsZWQuICAqLworICBwdXRlbnYgKChjaGFyKikgIlRaPVBTVDhQRFQsTTQuMS4w
LE0xMC41LjAiKTsKKworICB0ID0gbWt0aW1lICgmdG0pOworCisgIC8qIENoZWNrIHRoYXQgdGhl
IHJlc3VsdCBpcyBlaXRoZXIgYSBmYWlsdXJlLCBvciBjbG9zZSBlbm91Z2gKKyAgICAgdG8gdGhl
IGNvcnJlY3QgYW5zd2VyIHRoYXQgd2UgY2FuIGFzc3VtZSB0aGUgZGlzY3JlcGFuY3kgaXMKKyAg
ICAgZHVlIHRvIGxlYXAgc2Vjb25kcy4gICovCisgIHJldHVybiAodCA9PSAodGltZV90KSAtMQor
CSAgfHwgKDAgPCB0ICYmIGFuc3dlciAtIDEyMCA8PSB0ICYmIHQgPD0gYW5zd2VyICsgMTIwKSk7
Cit9CisKK2ludAorbWFpbiAoKQoreworICB0aW1lX3QgdCwgZGVsdGE7CisgIGludCBpLCBqOwor
CisgIC8qIFRoaXMgdGVzdCBtYWtlcyBzb21lIGJ1Z2d5IG1rdGltZSBpbXBsZW1lbnRhdGlvbnMg
bG9vcC4KKyAgICAgR2l2ZSB1cCBhZnRlciA2MCBzZWNvbmRzOyBhIG1rdGltZSBzbG93ZXIgdGhh
biB0aGF0CisgICAgIGlzbid0IHdvcnRoIHVzaW5nIGFueXdheS4gICovCisgIGFsYXJtICg2MCk7
CisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICB0ID0gKHRpbWVfdF9tYXggPDwgMSkgKyAxOwor
ICAgICAgaWYgKHQgPD0gdGltZV90X21heCkKKwlicmVhazsKKyAgICAgIHRpbWVfdF9tYXggPSB0
OworICAgIH0KKyAgdGltZV90X21pbiA9IC0gKCh0aW1lX3QpIH4gKHRpbWVfdCkgMCA9PSAodGlt
ZV90KSAtMSkgLSB0aW1lX3RfbWF4OworCisgIGRlbHRhID0gdGltZV90X21heCAvIDk5NzsgLyog
YSBzdWl0YWJsZSBwcmltZSBudW1iZXIgKi8KKyAgZm9yIChpID0gMDsgaSA8IE5fU1RSSU5HUzsg
aSsrKQorICAgIHsKKyAgICAgIGlmICh0el9zdHJpbmdzW2ldKQorCXB1dGVudiAoKGNoYXIqKSB0
el9zdHJpbmdzW2ldKTsKKworICAgICAgZm9yICh0ID0gMDsgdCA8PSB0aW1lX3RfbWF4IC0gZGVs
dGE7IHQgKz0gZGVsdGEpCisJaWYgKCEgbWt0aW1lX3Rlc3QgKHQpKQorCSAgcmV0dXJuIDE7Cisg
ICAgICBpZiAoISAobWt0aW1lX3Rlc3QgKCh0aW1lX3QpIDEpCisJICAgICAmJiBta3RpbWVfdGVz
dCAoKHRpbWVfdCkgKDYwICogNjApKQorCSAgICAgJiYgbWt0aW1lX3Rlc3QgKCh0aW1lX3QpICg2
MCAqIDYwICogMjQpKSkpCisJcmV0dXJuIDE7CisKKyAgICAgIGZvciAoaiA9IDE7IDsgaiA8PD0g
MSkKKwlpZiAoISBiaWd0aW1lX3Rlc3QgKGopKQorCSAgcmV0dXJuIDE7CisJZWxzZSBpZiAoSU5U
X01BWCAvIDIgPCBqKQorCSAgYnJlYWs7CisgICAgICBpZiAoISBiaWd0aW1lX3Rlc3QgKElOVF9N
QVgpKQorCXJldHVybiAxOworICAgIH0KKyAgcmV0dXJuICEgKGlyaXhfNl80X2J1ZyAoKSAmJiBz
cHJpbmdfZm9yd2FyZF9nYXAgKCkgJiYgeWVhcl8yMDUwX3Rlc3QgKCkpOworfQorX0FDRU9GCitp
ZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY193b3JraW5n
X21rdGltZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY193b3JraW5nX21rdGltZT1ubworZmkKK3Jt
IC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3Qk
YWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0
LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X2Z1bmNfd29ya2luZ19ta3RpbWUiID4mNQorJGFzX2VjaG8gIiRh
Y19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2Z1bmNfd29y
a2luZ19ta3RpbWUgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBta3Rp
bWUuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIG1rdGltZS4kYWNf
b2JqZXh0IgorIDs7Citlc2FjCisKK2ZpCisKKworCisKKworCitmb3IgYWNfZnVuYyBpbiBnZXRw
YWdlc2l6ZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRwYWdlc2l6
ZSIgImFjX2N2X2Z1bmNfZ2V0cGFnZXNpemUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0cGFn
ZXNpemUiID0geCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2Rl
ZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKK19BQ0VPRgorCitmaQorZG9uZQorCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcC4uLiAiID4mNjsgfQor
aWYgdGVzdCAiJHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkK3NldH0iID0gc2V0OyB0aGVu
IDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVk
PW5vCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisvKiBtYWxsb2Mg
bWlnaHQgaGF2ZSBiZWVuIHJlbmFtZWQgYXMgcnBsX21hbGxvYy4gKi8KKyN1bmRlZiBtYWxsb2MK
KworLyogVGhhbmtzIHRvIE1pa2UgSGFlcnRlbCBhbmQgSmltIEF2ZXJhIGZvciB0aGlzIHRlc3Qu
CisgICBIZXJlIGlzIGEgbWF0cml4IG9mIG1tYXAgcG9zc2liaWxpdGllczoKKwltbWFwIHByaXZh
dGUgbm90IGZpeGVkCisJbW1hcCBwcml2YXRlIGZpeGVkIGF0IHNvbWV3aGVyZSBjdXJyZW50bHkg
dW5tYXBwZWQKKwltbWFwIHByaXZhdGUgZml4ZWQgYXQgc29tZXdoZXJlIGFscmVhZHkgbWFwcGVk
CisJbW1hcCBzaGFyZWQgbm90IGZpeGVkCisJbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJl
IGN1cnJlbnRseSB1bm1hcHBlZAorCW1tYXAgc2hhcmVkIGZpeGVkIGF0IHNvbWV3aGVyZSBhbHJl
YWR5IG1hcHBlZAorICAgRm9yIHByaXZhdGUgbWFwcGluZ3MsIHdlIHNob3VsZCB2ZXJpZnkgdGhh
dCBjaGFuZ2VzIGNhbm5vdCBiZSByZWFkKCkKKyAgIGJhY2sgZnJvbSB0aGUgZmlsZSwgbm9yIG1t
YXAncyBiYWNrIGZyb20gdGhlIGZpbGUgYXQgYSBkaWZmZXJlbnQKKyAgIGFkZHJlc3MuICAoVGhl
cmUgaGF2ZSBiZWVuIHN5c3RlbXMgd2hlcmUgcHJpdmF0ZSB3YXMgbm90IGNvcnJlY3RseQorICAg
aW1wbGVtZW50ZWQgbGlrZSB0aGUgaW5mYW1vdXMgaTM4NiBzdnI0LjAsIGFuZCBzeXN0ZW1zIHdo
ZXJlIHRoZQorICAgVk0gcGFnZSBjYWNoZSB3YXMgbm90IGNvaGVyZW50IHdpdGggdGhlIGZpbGUg
c3lzdGVtIGJ1ZmZlciBjYWNoZQorICAgbGlrZSBlYXJseSB2ZXJzaW9ucyBvZiBGcmVlQlNEIGFu
ZCBwb3NzaWJseSBjb250ZW1wb3JhcnkgTmV0QlNELikKKyAgIEZvciBzaGFyZWQgbWFwcGluZ3Ms
IHdlIHNob3VsZCBjb252ZXJzZWx5IHZlcmlmeSB0aGF0IGNoYW5nZXMgZ2V0CisgICBwcm9wYWdh
dGVkIGJhY2sgdG8gYWxsIHRoZSBwbGFjZXMgdGhleSdyZSBzdXBwb3NlZCB0byBiZS4KKworICAg
R3JlcCB3YW50cyBwcml2YXRlIGZpeGVkIGFscmVhZHkgbWFwcGVkLgorICAgVGhlIG1haW4gdGhp
bmdzIGdyZXAgbmVlZHMgdG8ga25vdyBhYm91dCBtbWFwIGFyZToKKyAgICogZG9lcyBpdCBleGlz
dCBhbmQgaXMgaXQgc2FmZSB0byB3cml0ZSBpbnRvIHRoZSBtbWFwJ2QgYXJlYQorICAgKiBob3cg
dG8gdXNlIGl0IChCU0QgdmFyaWFudHMpICAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxzeXMvbW1hbi5oPgorCisjaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmICFkZWZpbmVk
IEhBVkVfU1RETElCX0gKK2NoYXIgKm1hbGxvYyAoKTsKKyNlbmRpZgorCisvKiBUaGlzIG1lc3Mg
d2FzIGNvcGllZCBmcm9tIHRoZSBHTlUgZ2V0cGFnZXNpemUuaC4gICovCisjaWZuZGVmIEhBVkVf
R0VUUEFHRVNJWkUKKyMgaWZkZWYgX1NDX1BBR0VTSVpFCisjICBkZWZpbmUgZ2V0cGFnZXNpemUo
KSBzeXNjb25mKF9TQ19QQUdFU0laRSkKKyMgZWxzZSAvKiBubyBfU0NfUEFHRVNJWkUgKi8KKyMg
IGlmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyMgICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyMgICBp
ZmRlZiBFWEVDX1BBR0VTSVpFCisjICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIEVYRUNfUEFHRVNJ
WkUKKyMgICBlbHNlIC8qIG5vIEVYRUNfUEFHRVNJWkUgKi8KKyMgICAgaWZkZWYgTkJQRworIyAg
ICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgTkJQRyAqIENMU0laRQorIyAgICAgaWZuZGVmIENMU0la
RQorIyAgICAgIGRlZmluZSBDTFNJWkUgMQorIyAgICAgZW5kaWYgLyogbm8gQ0xTSVpFICovCisj
ICAgIGVsc2UgLyogbm8gTkJQRyAqLworIyAgICAgaWZkZWYgTkJQQworIyAgICAgIGRlZmluZSBn
ZXRwYWdlc2l6ZSgpIE5CUEMKKyMgICAgIGVsc2UgLyogbm8gTkJQQyAqLworIyAgICAgIGlmZGVm
IFBBR0VTSVpFCisjICAgICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIFBBR0VTSVpFCisjICAgICAg
ZW5kaWYgLyogUEFHRVNJWkUgKi8KKyMgICAgIGVuZGlmIC8qIG5vIE5CUEMgKi8KKyMgICAgZW5k
aWYgLyogbm8gTkJQRyAqLworIyAgIGVuZGlmIC8qIG5vIEVYRUNfUEFHRVNJWkUgKi8KKyMgIGVs
c2UgLyogbm8gSEFWRV9TWVNfUEFSQU1fSCAqLworIyAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIDgx
OTIJLyogcHVudCB0b3RhbGx5ICovCisjICBlbmRpZiAvKiBubyBIQVZFX1NZU19QQVJBTV9IICov
CisjIGVuZGlmIC8qIG5vIF9TQ19QQUdFU0laRSAqLworCisjZW5kaWYgLyogbm8gSEFWRV9HRVRQ
QUdFU0laRSAqLworCitpbnQKK21haW4gKCkKK3sKKyAgY2hhciAqZGF0YSwgKmRhdGEyLCAqZGF0
YTM7CisgIGNvbnN0IGNoYXIgKmNkYXRhMjsKKyAgaW50IGksIHBhZ2VzaXplOworICBpbnQgZmQs
IGZkMjsKKworICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOworCisgIC8qIEZpcnN0LCBtYWtl
IGEgZmlsZSB3aXRoIHNvbWUga25vd24gZ2FyYmFnZSBpbiBpdC4gKi8KKyAgZGF0YSA9IChjaGFy
ICopIG1hbGxvYyAocGFnZXNpemUpOworICBpZiAoIWRhdGEpCisgICAgcmV0dXJuIDE7CisgIGZv
ciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgICooZGF0YSArIGkpID0gcmFuZCAoKTsK
KyAgdW1hc2sgKDApOworICBmZCA9IGNyZWF0ICgiY29uZnRlc3QubW1hcCIsIDA2MDApOworICBp
ZiAoZmQgPCAwKQorICAgIHJldHVybiAyOworICBpZiAod3JpdGUgKGZkLCBkYXRhLCBwYWdlc2l6
ZSkgIT0gcGFnZXNpemUpCisgICAgcmV0dXJuIDM7CisgIGNsb3NlIChmZCk7CisKKyAgLyogTmV4
dCwgY2hlY2sgdGhhdCB0aGUgdGFpbCBvZiBhIHBhZ2UgaXMgemVyby1maWxsZWQuICBGaWxlIG11
c3QgaGF2ZQorICAgICBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSB3ZSByaXNrIFNJR0JVUyBm
b3IgZW50aXJlIHBhZ2UuICAqLworICBmZDIgPSBvcGVuICgiY29uZnRlc3QudHh0IiwgT19SRFdS
IHwgT19DUkVBVCB8IE9fVFJVTkMsIDA2MDApOworICBpZiAoZmQyIDwgMCkKKyAgICByZXR1cm4g
NDsKKyAgY2RhdGEyID0gIiI7CisgIGlmICh3cml0ZSAoZmQyLCBjZGF0YTIsIDEpICE9IDEpCisg
ICAgcmV0dXJuIDU7CisgIGRhdGEyID0gKGNoYXIgKikgbW1hcCAoMCwgcGFnZXNpemUsIFBST1Rf
UkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkMiwgMEwpOworICBpZiAoZGF0YTIgPT0g
TUFQX0ZBSUxFRCkKKyAgICByZXR1cm4gNjsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyAr
K2kpCisgICAgaWYgKCooZGF0YTIgKyBpKSkKKyAgICAgIHJldHVybiA3OworICBjbG9zZSAoZmQy
KTsKKyAgaWYgKG11bm1hcCAoZGF0YTIsIHBhZ2VzaXplKSkKKyAgICByZXR1cm4gODsKKworICAv
KiBOZXh0LCB0cnkgdG8gbW1hcCB0aGUgZmlsZSBhdCBhIGZpeGVkIGFkZHJlc3Mgd2hpY2ggYWxy
ZWFkeSBoYXMKKyAgICAgc29tZXRoaW5nIGVsc2UgYWxsb2NhdGVkIGF0IGl0LiAgSWYgd2UgY2Fu
LCBhbHNvIG1ha2Ugc3VyZSB0aGF0CisgICAgIHdlIHNlZSB0aGUgc2FtZSBnYXJiYWdlLiAgKi8K
KyAgZmQgPSBvcGVuICgiY29uZnRlc3QubW1hcCIsIE9fUkRXUik7CisgIGlmIChmZCA8IDApCisg
ICAgcmV0dXJuIDk7CisgIGlmIChkYXRhMiAhPSBtbWFwIChkYXRhMiwgcGFnZXNpemUsIFBST1Rf
UkVBRCB8IFBST1RfV1JJVEUsCisJCSAgICAgTUFQX1BSSVZBVEUgfCBNQVBfRklYRUQsIGZkLCAw
TCkpCisgICAgcmV0dXJuIDEwOworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAg
ICBpZiAoKihkYXRhICsgaSkgIT0gKihkYXRhMiArIGkpKQorICAgICAgcmV0dXJuIDExOworCisg
IC8qIEZpbmFsbHksIG1ha2Ugc3VyZSB0aGF0IGNoYW5nZXMgdG8gdGhlIG1hcHBlZCBhcmVhIGRv
IG5vdAorICAgICBwZXJjb2xhdGUgYmFjayB0byB0aGUgZmlsZSBhcyBzZWVuIGJ5IHJlYWQoKS4g
IChUaGlzIGlzIGEgYnVnIG9uCisgICAgIHNvbWUgdmFyaWFudHMgb2YgaTM4NiBzdnI0LjAuKSAg
Ki8KKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgKihkYXRhMiArIGkpID0g
KihkYXRhMiArIGkpICsgMTsKKyAgZGF0YTMgPSAoY2hhciAqKSBtYWxsb2MgKHBhZ2VzaXplKTsK
KyAgaWYgKCFkYXRhMykKKyAgICByZXR1cm4gMTI7CisgIGlmIChyZWFkIChmZCwgZGF0YTMsIHBh
Z2VzaXplKSAhPSBwYWdlc2l6ZSkKKyAgICByZXR1cm4gMTM7CisgIGZvciAoaSA9IDA7IGkgPCBw
YWdlc2l6ZTsgKytpKQorICAgIGlmICgqKGRhdGEgKyBpKSAhPSAqKGRhdGEzICsgaSkpCisgICAg
ICByZXR1cm4gMTQ7CisgIGNsb3NlIChmZCk7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBh
Y19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVk
X21hcHBlZD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubworZmkK
K3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl
c3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0
ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4mNQorJGFzX2Vj
aG8gIiRhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2
X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUg
SEFWRV9NTUFQIDEiID4+Y29uZmRlZnMuaAorCitmaQorcm0gLWYgY29uZnRlc3QubW1hcCBjb25m
dGVzdC50eHQKKworZm9yIGFjX2hlYWRlciBpbiBzdGRsaWIuaAorZG8gOgorICBhY19mbl9jX2No
ZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic3RkbGliLmgiICJhY19jdl9oZWFkZXJfc3Rk
bGliX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0
ZGxpYl9oIiA9IHgiInllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNk
ZWZpbmUgSEFWRV9TVERMSUJfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbGliYyBjb21w
YXRpYmxlIHJlYWxsb2MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNv
bXBhdGlibGUgcmVhbGxvYy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX3JlYWxs
b2NfMF9ub25udWxsK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgor
ICBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPW5vCitlbHNlCisgIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp
ZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIEhBVkVfU1RETElCX0gKKyMgaW5jbHVk
ZSA8c3RkbGliLmg+CisjZWxzZQorY2hhciAqcmVhbGxvYyAoKTsKKyNlbmRpZgorCitpbnQKK21h
aW4gKCkKK3sKK3JldHVybiAhIHJlYWxsb2MgKDAsIDApOworICA7CisgIHJldHVybiAwOworfQor
X0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVu
Y19yZWFsbG9jXzBfbm9ubnVsbD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9u
bnVsbD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBi
Yi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz
dC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGwi
ID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsIiA+JjY7IH0KK2lm
IHRlc3QgJGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGwgPSB5ZXM7IHRoZW4gOgorCiskYXNf
ZWNobyAiI2RlZmluZSBIQVZFX1JFQUxMT0MgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgJGFz
X2VjaG8gIiNkZWZpbmUgSEFWRV9SRUFMTE9DIDAiID4+Y29uZmRlZnMuaAorCisgICBjYXNlICIg
JExJQk9CSlMgIiBpbgorICAqIiByZWFsbG9jLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJP
QkpTPSIkTElCT0JKUyByZWFsbG9jLiRhY19vYmpleHQiCisgOzsKK2VzYWMKKworCiskYXNfZWNo
byAiI2RlZmluZSByZWFsbG9jIHJwbF9yZWFsbG9jIiA+PmNvbmZkZWZzLmgKKworZmkKKworCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3Jr
aW5nIHN0cm5sZW4iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3Rybmxl
bi4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZytzZXR9
IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlm
IHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19zdHJu
bGVuX3dvcmtpbmc9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQK
K2ludAorbWFpbiAoKQoreworCisjZGVmaW5lIFMgImZvb2JhciIKKyNkZWZpbmUgU19MRU4gKHNp
emVvZiBTIC0gMSkKKworICAvKiBBdCBsZWFzdCBvbmUgaW1wbGVtZW50YXRpb24gaXMgYnVnZ3k6
IHRoYXQgb2YgQUlYIDQuMyB3b3VsZAorICAgICBnaXZlIHN0cm5sZW4gKFMsIDEpID09IDMuICAq
LworCisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU19MRU4gKyAxOyArK2kpCisgICAgewor
ICAgICAgaW50IGV4cGVjdGVkID0gaSA8PSBTX0xFTiA/IGkgOiBTX0xFTjsKKyAgICAgIGlmIChz
dHJubGVuIChTLCBpKSAhPSBleHBlY3RlZCkKKwlyZXR1cm4gMTsKKyAgICB9CisgIHJldHVybiAw
OworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJ
TkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZz15ZXMKK2Vsc2UKKyAg
YWNfY3ZfZnVuY19zdHJubGVuX3dvcmtpbmc9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9m
dW5jX3N0cm5sZW5fd29ya2luZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfc3Rybmxlbl93
b3JraW5nIiA+JjY7IH0KK3Rlc3QgJGFjX2N2X2Z1bmNfc3Rybmxlbl93b3JraW5nID0gbm8gJiYg
Y2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgc3Rybmxlbi4kYWNfb2JqZXh0ICIqICkgOzsKKyAg
KikgTElCT0JKUz0iJExJQk9CSlMgc3Rybmxlbi4kYWNfb2JqZXh0IgorIDs7Citlc2FjCisKKwor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29y
a2luZyBzdHJ0b2QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3RydG9k
Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfc3RydG9kK3NldH0iID0gc2V0OyB0
aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3N0cnRvZD1ubworZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisKKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaWZuZGVmIHN0cnRvZAor
ZG91YmxlIHN0cnRvZCAoKTsKKyNlbmRpZgoraW50CittYWluKCkKK3sKKyAgeworICAgIC8qIFNv
bWUgdmVyc2lvbnMgb2YgTGludXggc3RydG9kIG1pcy1wYXJzZSBzdHJpbmdzIHdpdGggbGVhZGlu
ZyAnKycuICAqLworICAgIGNoYXIgKnN0cmluZyA9ICIgKzY5IjsKKyAgICBjaGFyICp0ZXJtOwor
ICAgIGRvdWJsZSB2YWx1ZTsKKyAgICB2YWx1ZSA9IHN0cnRvZCAoc3RyaW5nLCAmdGVybSk7Cisg
ICAgaWYgKHZhbHVlICE9IDY5IHx8IHRlcm0gIT0gKHN0cmluZyArIDQpKQorICAgICAgcmV0dXJu
IDE7CisgIH0KKworICB7CisgICAgLyogVW5kZXIgU29sYXJpcyAyLjQsIHN0cnRvZCByZXR1cm5z
IHRoZSB3cm9uZyB2YWx1ZSBmb3IgdGhlCisgICAgICAgdGVybWluYXRpbmcgY2hhcmFjdGVyIHVu
ZGVyIHNvbWUgY29uZGl0aW9ucy4gICovCisgICAgY2hhciAqc3RyaW5nID0gIk5hTiI7CisgICAg
Y2hhciAqdGVybTsKKyAgICBzdHJ0b2QgKHN0cmluZywgJnRlcm0pOworICAgIGlmICh0ZXJtICE9
IHN0cmluZyAmJiAqKHRlcm0gLSAxKSA9PSAwKQorICAgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0
dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6
CisgIGFjX2N2X2Z1bmNfc3RydG9kPXllcworZWxzZQorICBhY19jdl9mdW5jX3N0cnRvZD1ubwor
ZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29u
ZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv
bmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfc3RydG9kIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfZnVuY19zdHJ0b2QiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19zdHJ0b2QgPSBubzsg
dGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBzdHJ0b2QuJGFjX29iamV4dCAiKiAp
IDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cnRvZC4kYWNfb2JqZXh0IgorIDs7Citlc2Fj
CisKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInBvdyIgImFjX2N2X2Z1bmNfcG93Igor
aWYgdGVzdCAieCRhY19jdl9mdW5jX3BvdyIgPSB4IiJ5ZXM7IHRoZW4gOgorCitmaQorCitpZiB0
ZXN0ICRhY19jdl9mdW5jX3BvdyA9IG5vOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHBvdyBpbiAtbG0iID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yIHBvdyBpbiAtbG0uLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zf
bGliX21fcG93K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxtICAkTElC
UyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUg
dG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0
aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50
IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIKKyNlbmRpZgorY2hhciBwb3cgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBw
b3cgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsg
IiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX21fcG93PXllcworZWxzZQorICBhY19jdl9s
aWJfbV9wb3c9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNf
Y2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX21fcG93IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zf
bGliX21fcG93IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX21fcG93IiA9IHgiInllczsg
dGhlbiA6CisgIFBPV19MSUI9LWxtCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGZpbmQgbGlicmFyeSBjb250YWluaW5nIGRl
ZmluaXRpb24gb2YgcG93IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBm
aW5kIGxpYnJhcnkgY29udGFpbmluZyBkZWZpbml0aW9uIG9mIHBvdyIgPiYyO30KK2ZpCisKK2Zp
CisKK2ZpCisKK2ZvciBhY19mdW5jIGluICBcCisgICAgICAgICAgICAgICAgYWxhcm0gYXRleGl0
IGJ6ZXJvIGNsb2NrX2dldHRpbWUgZHVwMiBmZGF0YXN5bmMgZnRydW5jYXRlIFwKKyAgICAgICAg
ICAgICAgICBnZXRjd2QgZ2V0aG9zdGJ5bmFtZSBnZXRob3N0bmFtZSBnZXRwYWdlc2l6ZSBnZXR0
aW1lb2ZkYXkgXAorICAgICAgICAgICAgICAgIGluZXRfbnRvYSBpc2FzY2lpIGxvY2FsdGltZV9y
IG1lbWNociBtZW1tb3ZlIG1lbXNldCBta2RpciBcCisgICAgICAgICAgICAgICAgbWtmaWZvIG11
bm1hcCBwYXRoY29uZiByZWFscGF0aCByZWdjb21wIHJtZGlyIHNlbGVjdCBzZXRlbnYgXAorICAg
ICAgICAgICAgICAgIHNvY2tldCBzdHJjYXNlY21wIHN0cmNociBzdHJjc3BuIHN0cmR1cCBzdHJl
cnJvciBzdHJuZHVwIFwKKyAgICAgICAgICAgICAgICBzdHJwYnJrIHN0cnJjaHIgc3Ryc3BuIHN0
cnN0ciBzdHJ0b2wgc3RydG91bCBzdHJ0b3VsbCB0enNldCBcCisgICAgICAgICAgICAgICAgdW5h
bWUgXAorCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMi
IHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIk
YXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRo
ZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFW
RV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2RvbmUKKworCitjYXQg
PmNvbmZjYWNoZSA8PFxfQUNFT0YKKyMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQg
Y2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQorIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0
ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlCisjIHNjcmlwdHMgYW5k
IGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgor
IyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1
bHRzIHlvdSBkb24ndAorIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQu
CisjCisjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmls
ZSBpZiB5b3UgZ2l2ZSBpdAorIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1
cmUuCisjCisjIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBi
ZSBvdmVycmlkZGVuIHdoZW4KKyMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVyICp1bnNldCogYGFj
X2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKKyMgZm9sbG93aW5nIHZhbHVlcy4KKworX0FD
RU9GCisKKyMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxl
cyBuZXdsaW5lcyBpbiB2YWx1ZXMsCisjIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQgdGhh
dCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgorIyBTbywgd2Uga2lsbCB2YXJp
YWJsZXMgY29udGFpbmluZyBuZXdsaW5lcy4KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3Rk
ZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LAorIyBhbmQgc2V0cyB0aGUgaGln
aCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KKygK
KyAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16
QS1aMC05X10qXCk9LiovXDEvcCdgOyBkbworICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAg
IGNhc2UgJGFjX3ZhbCBpbiAjKAorICAgICoke2FzX25sfSopCisgICAgICBjYXNlICRhY192YXIg
aW4gIygKKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNv
bnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKKyAgICAgIGVzYWMKKyAgICAgIGNhc2UgJGFjX3Zh
ciBpbiAjKAorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAorICAgICAgQkFTSF9BUkdWIHwg
QkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKyAgICAgICopIHsgZXZhbCAkYWNfdmFy
PTsgdW5zZXQgJGFjX3Zhcjt9IDs7CisgICAgICBlc2FjIDs7CisgICAgZXNhYworICBkb25lCisK
KyAgKHNldCkgMj4mMSB8CisgICAgY2FzZSAkYXNfbmxgKGFjX3NwYWNlPScgJzsgc2V0KSAyPiYx
YCBpbiAjKAorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikKKyAgICAgICMgYHNldCcgZG9lcyBu
b3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUKKyAgICAgICMg
c3Vic3RpdHV0aW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwu
CisgICAgICBzZWQgLW4gXAorCSJzLycvJ1xcXFwnJy9nOworCSAgcy9eXFwoW18kYXNfY3JfYWxu
dW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXFwyJy9wIgorICAgICAg
OzsgIygKKyAgICAqKQorICAgICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFzIHJlcXVpcmVk
IGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KKyAgICAgIHNlZCAtbiAiL15bXyRhc19j
cl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCisgICAgICA7OworICAgIGVzYWMgfAor
ICAgIHNvcnQKKykgfAorICBzZWQgJworICAgICAvXmFjX2N2X2Vudl8vYiBlbmQKKyAgICAgdCBj
bGVhcgorICAgICA6Y2xlYXIKKyAgICAgcy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAi
JHtcMStzZXR9IiA9IHNldCB8fCAmLworICAgICB0IGVuZAorICAgICBzL15cKFtePV0qXCk9XCgu
KlwpJC9cMT0ke1wxPVwyfS8KKyAgICAgOmVuZCcgPj5jb25mY2FjaGUKK2lmIGRpZmYgIiRjYWNo
ZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKKyAgaWYgdGVz
dCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9k
ZXYvbnVsbCIgJiYKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogdXBk
YXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgICAgY2F0IGNvbmZjYWNoZSA+JGNhY2hl
X2ZpbGUKKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorJGFzX2Vj
aG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4m
Njt9CisgIGZpCitmaQorcm0gLWYgY29uZmNhY2hlCisKK3Rlc3QgIngkcHJlZml4IiA9IHhOT05F
ICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKKyMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJl
Zml4LgordGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVm
aXh9JworCitERUZTPS1ESEFWRV9DT05GSUdfSAorCithY19saWJvYmpzPQorYWNfbHRsaWJvYmpz
PQorVT0KK2ZvciBhY19pIGluIDogJExJQk9CSlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBj
b250aW51ZQorICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBp
bnN0YWxsZWQuCisgIGFjX3NjcmlwdD0ncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJwor
ICBhY19pPWAkYXNfZWNobyAiJGFjX2kiIHwgc2VkICIkYWNfc2NyaXB0ImAKKyAgIyAyLiBQcmVw
ZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUgor
ICAjICAgIHdpbGwgYmUgc2V0IHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgTElCT0JKUyBvYmplY3Rz
IGFyZSBidWlsdC4KKyAgYXNfZm5fYXBwZW5kIGFjX2xpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFj
X2lcJFUuJGFjX29iamV4dCIKKyAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9C
SkRJUn0kYWNfaSInJFUubG8nCitkb25lCitMSUJPQkpTPSRhY19saWJvYmpzCisKK0xUTElCT0JK
Uz0kYWNfbHRsaWJvYmpzCisKKworCis6ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9
CithY193cml0ZV9mYWlsPTAKK2FjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCith
Y19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY2O30KK2Fz
X3dyaXRlX2ZhaWw9MAorY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9m
YWlsPTEKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgorIyBSdW4gdGhpcyBmaWxl
IHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisjIENvbXBpbGVyIG91dHB1
dCBwcm9kdWNlZCBieSBjb25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nCisjIGNvbmZpZ3Vy
ZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCisKK2RlYnVnPWZhbHNlCithY19jc19y
ZWNoZWNrPWZhbHNlCithY19jc19zaWxlbnQ9ZmFsc2UKKworU0hFTEw9XCR7Q09ORklHX1NIRUxM
LSRTSEVMTH0KK2V4cG9ydCBTSEVMTAorX0FTRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxf
QVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
TTRzaCBJbml0aWFsaXphdGlvbi4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMg
QmUgbW9yZSBCb3VybmUgY29tcGF0aWJsZQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMg
Zm9yIE1LUyBzaAoraWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBz
aCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAg
IyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0s
IHdoaWNoCisgICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1
cmUuCisgIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJworICBzZXRvcHQgTk9fR0xPQl9TVUJT
VAorZWxzZQorICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygKKyAgKnBvc2l4Kikg
OgorICAgIHNldCAtbyBwb3NpeCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorCisK
K2FzX25sPScKKycKK2V4cG9ydCBhc19ubAorIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNo
ZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4KK2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8k
YXNfZWNobyRhc19lY2hvJGFzX2VjaG8KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hv
JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCisjIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92
ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywKKyMgYnV0IHdpdGhvdXQg
d2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9O
JFpTSF9WRVJTSU9OIiBcCisgICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9
ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19lY2hvPSdwcmludCAtciAtLScK
KyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nCitlbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNf
ZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50
ZiAlc1xuJworICBhc19lY2hvX249J3ByaW50ZiAlcycKK2Vsc2UKKyAgaWYgdGVzdCAiWGAoL3Vz
ci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8i
OyB0aGVuCisgICAgYXNfZWNob19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25s
IicKKyAgICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4nCisgIGVsc2UKKyAgICBhc19lY2hv
X2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCkiJworICAgIGFzX2VjaG9fbl9ib2R5
PSdldmFsCisgICAgICBhcmc9JDE7CisgICAgICBjYXNlICRhcmcgaW4gIygKKyAgICAgICoiJGFz
X25sIiopCisJZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7CisJYXJnPWBleHByICJY
JGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsKKyAgICAgIGVzYWM7CisgICAgICBleHByICJY
JGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiCisgICAgJworICAgIGV4cG9ydCBh
c19lY2hvX25fYm9keQorICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2Vj
aG8nCisgIGZpCisgIGV4cG9ydCBhc19lY2hvX2JvZHkKKyAgYXNfZWNobz0nc2ggLWMgJGFzX2Vj
aG9fYm9keSBhc19lY2hvJworZmkKKworIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0
ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICBQQVRIX1NFUEFSQVRP
Uj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVs
bCAyPiYxICYmIHsKKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDop
ID4vZGV2L251bGwgMj4mMSB8fAorICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCisgIH0KK2ZpCisK
KworIyBJRlMKKyMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5
IHRoYXQgb3JkZXIuICBRdW90aW5nIGlzCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9t
IGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4KKyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBj
YWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAorIyBzcGxpdHRpbmcg
Ynkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQorSUZTPSIgIiIJJGFzX25sIgorCisjIEZp
bmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rv
cnkgc2VwYXJhdG9yLgorY2FzZSAkMCBpbiAjKCgKKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7
OworICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGly
IGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYm
IGFzX2Rpcj0uCisgICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIv
JDAgJiYgYnJlYWsKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgICAgIDs7Citlc2FjCisj
IFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMg
YHNoIENPTU1BTkQnCisjIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0
aGUgcGF0aC4KK2lmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KKyAgYXNfbXlzZWxmPSQw
CitmaQoraWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgorICAkYXNfZWNobyAiJGFzX215
c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBm
aWxlIG5hbWUiID4mMgorICBleGl0IDEKK2ZpCisKKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2Ug
ZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KKyMgcHJlLTMuMCBVV0lO
IGtzaCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQg
MSIKKyMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4g
ICcoKCcgY291bGQKKyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCitmb3IgYXNfdmFy
IGluIEJBU0hfRU5WIEVOViBNQUlMIE1BSUxQQVRICitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIr
c2V0fSA9IHhzZXQgXAorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251
bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKK2RvbmUKK1BTMT0nJCAnCitQUzI9Jz4gJwor
UFM0PScrICcKKworIyBOTFMgbnVpc2FuY2VzLgorTENfQUxMPUMKK2V4cG9ydCBMQ19BTEwKK0xB
TkdVQUdFPUMKK2V4cG9ydCBMQU5HVUFHRQorCisjIENEUEFUSC4KKyh1bnNldCBDRFBBVEgpID4v
ZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKKworCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBF
UlJPUiBbTElORU5PIExPR19GRF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJy
LiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKKyMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBl
cnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQorIyBzY3Jp
cHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KK2FzX2ZuX2Vycm9yICgpCit7
CisgIGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCisg
IGlmIHRlc3QgIiQ0IjsgdGhlbgorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19s
aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKKyAgZmkKKyAg
JGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKKyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVz
Cit9ICMgYXNfZm5fZXJyb3IKKworCisjIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4K
K2FzX2ZuX3NldF9zdGF0dXMgKCkKK3sKKyAgcmV0dXJuICQxCit9ICMgYXNfZm5fc2V0X3N0YXR1
cworCisjIGFzX2ZuX2V4aXQgU1RBVFVTCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIEV4aXQgdGhl
IHNoZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4
dC4KK2FzX2ZuX2V4aXQgKCkKK3sKKyAgc2V0ICtlCisgIGFzX2ZuX3NldF9zdGF0dXMgJDEKKyAg
ZXhpdCAkMQorfSAjIGFzX2ZuX2V4aXQKKworIyBhc19mbl91bnNldCBWQVIKKyMgLS0tLS0tLS0t
LS0tLS0tCisjIFBvcnRhYmx5IHVuc2V0IFZBUi4KK2FzX2ZuX3Vuc2V0ICgpCit7CisgIHsgZXZh
bCAkMT07IHVuc2V0ICQxO30KK30KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0CisjIGFzX2ZuX2FwcGVu
ZCBWQVIgVkFMVUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBcHBlbmQgdGhlIHRleHQg
aW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBU
YWtlCisjIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFt
b3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXIKKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBv
ZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKKyMgaW1wbGVt
ZW50YXRpb25zLgoraWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFy
ID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOgorICBldmFsICdhc19mbl9hcHBlbmQgKCkKKyAg
eworICAgIGV2YWwgJDErPVwkMgorICB9JworZWxzZQorICBhc19mbl9hcHBlbmQgKCkKKyAgewor
ICAgIGV2YWwgJDE9XCQkMVwkMgorICB9CitmaSAjIGFzX2ZuX2FwcGVuZAorCisjIGFzX2ZuX2Fy
aXRoIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2
YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZQorIyBnbG9i
YWwgJGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtz
LiBUaGUgYXJndW1lbnRzCisjIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHBy
LgoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6
CisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpCisgIHsKKyAgICBhc192YWw9JCgoICQqICkpCisgIH0n
CitlbHNlCisgIGFzX2ZuX2FyaXRoICgpCisgIHsKKyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0
ZXN0ICQ/IC1lcSAxYAorICB9CitmaSAjIGFzX2ZuX2FyaXRoCisKKworaWYgZXhwciBhIDogJ1wo
YVwpJyA+L2Rldi9udWxsIDI+JjEgJiYKKyAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4u
XCknYCIgPSBYMDAxOyB0aGVuCisgIGFzX2V4cHI9ZXhwcgorZWxzZQorICBhc19leHByPWZhbHNl
CitmaQorCitpZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFz
ZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCitl
bHNlCisgIGFzX2Jhc2VuYW1lPWZhbHNlCitmaQorCitpZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9g
ICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfZGly
bmFtZT1kaXJuYW1lCitlbHNlCisgIGFzX2Rpcm5hbWU9ZmFsc2UKK2ZpCisKK2FzX21lPWAkYXNf
YmFzZW5hbWUgLS0gIiQwIiB8fAorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkv
KiQnIFx8IFwKKwkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkMCIgOiAnWFwoL1wpJyBc
fCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYLyIkMCIgfAorICAgIHNlZCAnL14uKlwvXChb
Xi9dW14vXSpcKVwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXC9cKFwv
XC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXC9cKFwvXCkuKi97CisJ
ICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKworIyBBdm9pZCBkZXBl
bmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXonCithc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WicKK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUworYXNfY3JfZGln
aXRzPScwMTIzNDU2Nzg5JworYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRz
CisKK0VDSE9fQz0gRUNIT19OPSBFQ0hPX1Q9CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAor
LW4qKQorICBjYXNlIGBlY2hvICd4eVxjJ2AgaW4KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hP
X1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuCisgIHh5KSAgRUNIT19DPSdcYyc7OworICAqKSAg
IGVjaG8gYGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCisgICAgICAgRUNI
T19UPScJJzs7CisgIGVzYWM7OworKikKKyAgRUNIT19OPSctbic7OworZXNhYworCitybSAtZiBj
b25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVu
CisgIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUKK2Vsc2UKKyAgcm0gLWYgY29uZiQkLmRp
cgorICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCitmaQoraWYgKGVjaG8gPmNvbmYkJC5m
aWxlKSAyPi9kZXYvbnVsbDsgdGhlbgorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4v
ZGV2L251bGw7IHRoZW4KKyAgICBhc19sbl9zPSdsbiAtcycKKyAgICAjIC4uLiBidXQgdGhlcmUg
YXJlIHR3byBnb3RjaGFzOgorICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXIn
IGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5
bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCisgICAgIyBJbiBi
b3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4KKyAgICBsbiAtcyBjb25m
JCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8
CisgICAgICBhc19sbl9zPSdjcCAtcCcKKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4v
ZGV2L251bGw7IHRoZW4KKyAgICBhc19sbl9zPWxuCisgIGVsc2UKKyAgICBhc19sbl9zPSdjcCAt
cCcKKyAgZmkKK2Vsc2UKKyAgYXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYk
JC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQorcm1kaXIgY29uZiQkLmRp
ciAyPi9kZXYvbnVsbAorCisKKyMgYXNfZm5fbWtkaXJfcAorIyAtLS0tLS0tLS0tLS0tCisjIENy
ZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vz
c2FyeS4KK2FzX2ZuX21rZGlyX3AgKCkKK3sKKworICBjYXNlICRhc19kaXIgaW4gIygKKyAgLSop
IGFzX2Rpcj0uLyRhc19kaXI7OworICBlc2FjCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwg
JGFzX21rZGlyX3AgfHwgeworICAgIGFzX2RpcnM9CisgICAgd2hpbGUgOjsgZG8KKyAgICAgIGNh
c2UgJGFzX2RpciBpbiAjKAorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIi
IHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCisgICAgICAqKSBhc19xZGlyPSRhc19k
aXI7OworICAgICAgZXNhYworICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKKyAg
ICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19kaXIiIHx8CiskYXNfZXhwciBYIiRhc19k
aXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX2RpciIgOiAn
WFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRh
c19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWCIkYXNfZGly
IiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8v
XDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJ
ICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9
CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4v
OyBxJ2AKKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCisgICAgZG9uZQorICAgIHRl
c3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKKyAgfSB8fCB0ZXN0IC1k
ICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFz
X2RpciIKKworCit9ICMgYXNfZm5fbWtkaXJfcAoraWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsg
dGhlbgorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRlc3QgLWQg
Li8tcCAmJiBybWRpciAuLy1wCisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKK2lmIHRlc3QgLXgg
LyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdGVzdF94PSd0ZXN0IC14JworZWxzZQorICBp
ZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBhc19sc19MX29wdGlvbj1MCisg
IGVsc2UKKyAgICBhc19sc19MX29wdGlvbj0KKyAgZmkKKyAgYXNfdGVzdF94PScKKyAgICBldmFs
IHNoIC1jICdcJycKKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorCXRlc3QgLWQgIiQxLy4i
OworICAgICAgZWxzZQorCWNhc2UgJDEgaW4gIygKKwktKilzZXQgIi4vJDEiOzsKKwllc2FjOwor
CWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKAor
CT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkKKyAgICAnXCcnIHNoCisgICcKK2ZpCithc19l
eGVjdXRhYmxlX3A9JGFzX3Rlc3RfeAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmlu
ZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3Jf
bGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisjIFNl
ZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4K
K2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisK
KworZXhlYyA2PiYxCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwor
IyMgTWFpbiBib2R5IG9mICRDT05GSUdfU1RBVFVTIHNjcmlwdC4gIyMKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCitfQVNFT0YKK3Rlc3QgJGFzX3dyaXRlX2ZhaWwg
PSAwICYmIGNobW9kICt4ICRDT05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorCitjYXQg
Pj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIFNhdmUgdGhl
IGxvZyBtZXNzYWdlLCB0byBrZWVwICQwIGFuZCBzbyBvbiBtZWFuaW5nZnVsLCBhbmQgdG8KKyMg
cmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBv
ZiB0aGVpcgorIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KK2FjX2xvZz0iCitUaGlz
IGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05V
IEF1dG9jb25mIDIuNjcuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKworICBDT05GSUdf
RklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCisgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVB
REVSUworICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklHX0xJTktTCisgIENPTkZJR19DT01NQU5E
UyA9ICRDT05GSUdfQ09NTUFORFMKKyAgJCAkMCAkQAorCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1l
IC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKyIKKworX0FDRU9GCisKK2Nhc2UgJGFjX2NvbmZp
Z19maWxlcyBpbiAqIgorIiopIHNldCB4ICRhY19jb25maWdfZmlsZXM7IHNoaWZ0OyBhY19jb25m
aWdfZmlsZXM9JCo7OworZXNhYworCitjYXNlICRhY19jb25maWdfaGVhZGVycyBpbiAqIgorIiop
IHNldCB4ICRhY19jb25maWdfaGVhZGVyczsgc2hpZnQ7IGFjX2NvbmZpZ19oZWFkZXJzPSQqOzsK
K2VzYWMKKworCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWls
PTEKKyMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4KK2NvbmZpZ19maWxl
cz0iJGFjX2NvbmZpZ19maWxlcyIKK2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMi
CisKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVf
ZmFpbD0xCithY19jc191c2FnZT0iXAorXGAkYXNfbWUnIGluc3RhbnRpYXRlcyBmaWxlcyBhbmQg
b3RoZXIgY29uZmlndXJhdGlvbiBhY3Rpb25zCitmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8g
dGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUgZmlsZXMKK2FuZCBhY3Rpb25z
IGFyZSBzcGVjaWZpZWQgYXMgVEFHcywgYWxsIGFyZSBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdC4K
KworVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtUQUddLi4uCisKKyAgLWgsIC0taGVscCAgICAgICBw
cmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNp
b24gbnVtYmVyIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdzLCB0aGVuIGV4aXQKKyAgICAgIC0t
Y29uZmlnICAgICBwcmludCBjb25maWd1cmF0aW9uLCB0aGVuIGV4aXQKKyAgLXEsIC0tcXVpZXQs
IC0tc2lsZW50CisgICAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IHByb2dyZXNzIG1lc3Nh
Z2VzCisgIC1kLCAtLWRlYnVnICAgICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcworICAg
ICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2Ft
ZSBjb25kaXRpb25zCisgICAgICAtLWZpbGU9RklMRVs6VEVNUExBVEVdCisgICAgICAgICAgICAg
ICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFCisgICAgICAtLWhl
YWRlcj1GSUxFWzpURU1QTEFURV0KKyAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUg
Y29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQorCitDb25maWd1cmF0aW9uIGZpbGVzOgorJGNvbmZp
Z19maWxlcworCitDb25maWd1cmF0aW9uIGhlYWRlcnM6CiskY29uZmlnX2hlYWRlcnMKKworUmVw
b3J0IGJ1Z3MgdG8gdGhlIHBhY2thZ2UgcHJvdmlkZXIuIgorCitfQUNFT0YKK2NhdCA+PiRDT05G
SUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfY3NfY29uZmlnPSJgJGFz
X2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xc
XFwmL2cnYCIKK2FjX2NzX3ZlcnNpb249IlxcCitjb25maWcuc3RhdHVzCitjb25maWd1cmVkIGJ5
ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjcsCisgIHdpdGggb3B0aW9ucyBcXCJc
JGFjX2NzX2NvbmZpZ1xcIgorCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u
IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisKK2FjX3B3ZD0nJGFjX3B3ZCcK
K3NyY2Rpcj0nJHNyY2RpcicKK0lOU1RBTEw9JyRJTlNUQUxMJwordGVzdCAtbiAiXCRBV0siIHx8
IEFXSz1hd2sKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNf
d3JpdGVfZmFpbD0xCisjIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRvZXMg
bm90IHNwZWNpZnkgYW55IGZpbGUuCithY19uZWVkX2RlZmF1bHRzPToKK3doaWxlIHRlc3QgJCMg
IT0gMAorZG8KKyAgY2FzZSAkMSBpbgorICAtLSo9PyopCisgICAgYWNfb3B0aW9uPWBleHByICJY
JDEiIDogJ1hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0q
PVwoLipcKSdgCisgICAgYWNfc2hpZnQ9OgorICAgIDs7CisgIC0tKj0pCisgICAgYWNfb3B0aW9u
PWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9CisgICAgYWNfc2hp
ZnQ9OgorICAgIDs7CisgICopCisgICAgYWNfb3B0aW9uPSQxCisgICAgYWNfb3B0YXJnPSQyCisg
ICAgYWNfc2hpZnQ9c2hpZnQKKyAgICA7OworICBlc2FjCisKKyAgY2FzZSAkYWNfb3B0aW9uIGlu
CisgICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuCisgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwg
LS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQorICAgIGFj
X2NzX3JlY2hlY2s9OiA7OworICAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZl
cnMgfCAtLXZlciB8IC0tdmUgfCAtLXYgfCAtViApCisgICAgJGFzX2VjaG8gIiRhY19jc192ZXJz
aW9uIjsgZXhpdCA7OworICAtLWNvbmZpZyB8IC0tY29uZmkgfCAtLWNvbmYgfCAtLWNvbiB8IC0t
Y28gfCAtLWMgKQorICAgICRhc19lY2hvICIkYWNfY3NfY29uZmlnIjsgZXhpdCA7OworICAtLWRl
YnVnIHwgLS1kZWJ1IHwgLS1kZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQorICAgIGRlYnVnPTogOzsK
KyAgLS1maWxlIHwgLS1maWwgfCAtLWZpIHwgLS1mICkKKyAgICAkYWNfc2hpZnQKKyAgICBjYXNl
ICRhY19vcHRhcmcgaW4KKyAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJn
IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgICcnKSBhc19mbl9lcnJvciAkPyAi
bWlzc2luZyBmaWxlIGFyZ3VtZW50IiA7OworICAgIGVzYWMKKyAgICBhc19mbl9hcHBlbmQgQ09O
RklHX0ZJTEVTICIgJyRhY19vcHRhcmcnIgorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Owor
ICAtLWhlYWRlciB8IC0taGVhZGUgfCAtLWhlYWQgfCAtLWhlYSApCisgICAgJGFjX3NoaWZ0Cisg
ICAgY2FzZSAkYWNfb3B0YXJnIGluCisgICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFj
X29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKKyAgICBlc2FjCisgICAgYXNf
Zm5fYXBwZW5kIENPTkZJR19IRUFERVJTICIgJyRhY19vcHRhcmcnIgorICAgIGFjX25lZWRfZGVm
YXVsdHM9ZmFsc2U7OworICAtLWhlIHwgLS1oKQorICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhl
bHAgYW5kIC0taGVhZGVyCisgICAgYXNfZm5fZXJyb3IgJD8gImFtYmlndW91cyBvcHRpb246IFxg
JDEnCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiI7OworICAtLWhlbHAg
fCAtLWhlbCB8IC1oICkKKyAgICAkYXNfZWNobyAiJGFjX2NzX3VzYWdlIjsgZXhpdCA7OworICAt
cSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8
IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAt
LXMpCisgICAgYWNfY3Nfc2lsZW50PTogOzsKKworICAjIFRoaXMgaXMgYW4gZXJyb3IuCisgIC0q
KSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkMScKK1RyeSBcYCQwIC0t
aGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA7OworCisgICopIGFzX2ZuX2FwcGVuZCBhY19j
b25maWdfdGFyZ2V0cyAiICQxIgorICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlIDs7CisKKyAg
ZXNhYworICBzaGlmdAorZG9uZQorCithY19jb25maWd1cmVfZXh0cmFfYXJncz0KKworaWYgJGFj
X2NzX3NpbGVudDsgdGhlbgorICBleGVjIDY+L2Rldi9udWxsCisgIGFjX2NvbmZpZ3VyZV9leHRy
YV9hcmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCitmaQorCitfQUNFT0YK
K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQoraWYgXCRh
Y19jc19yZWNoZWNrOyB0aGVuCisgIHNldCBYICckU0hFTEwnICckMCcgJGFjX2NvbmZpZ3VyZV9h
cmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24K
KyAgc2hpZnQKKyAgXCRhc19lY2hvICJydW5uaW5nIENPTkZJR19TSEVMTD0kU0hFTEwgXCQqIiA+
JjYKKyAgQ09ORklHX1NIRUxMPSckU0hFTEwnCisgIGV4cG9ydCBDT05GSUdfU0hFTEwKKyAgZXhl
YyAiXCRAIgorZmkKKworX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwg
YWNfd3JpdGVfZmFpbD0xCitleGVjIDU+PmNvbmZpZy5sb2cKK3sKKyAgZWNobworICBzZWQgJ2g7
cy8uLy0vZztzL14uLi4vIyMgLztzLy4uLiQvICMjLztwO3g7cDt4JyA8PF9BU0JPWAorIyMgUnVu
bmluZyAkYXNfbWUuICMjCitfQVNCT1gKKyAgJGFzX2VjaG8gIiRhY19sb2ciCit9ID4mNQorCitf
QUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQor
X0FDRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWls
PTEKKworIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCitmb3IgYWNfY29uZmlnX3RhcmdldCBpbiAk
YWNfY29uZmlnX3RhcmdldHMKK2RvCisgIGNhc2UgJGFjX2NvbmZpZ190YXJnZXQgaW4KKyAgICAi
Li4vY29uZmlnL1Rvb2xzLm1rIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC4uL2NvbmZp
Zy9Ub29scy5tayIgOzsKKyAgICAiY29uZmlnLmgiKSBDT05GSUdfSEVBREVSUz0iJENPTkZJR19I
RUFERVJTIGNvbmZpZy5oIiA7OworCisgICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3Vt
ZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDUgOzsKKyAgZXNhYworZG9uZQor
CisKKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRo
ZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKKyMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1
c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90LgorIyBXZSB1c2UgdGhlIGxvbmcgZm9y
bSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQorIyBi
aXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KK2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCisg
IHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmln
X2ZpbGVzCisgIHRlc3QgIiR7Q09ORklHX0hFQURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hF
QURFUlM9JGNvbmZpZ19oZWFkZXJzCitmaQorCisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5
IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUKKyMgc2ltcGx5IGJl
Y2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIGFnYWluc3QgaGF2aW5nIGl0IGhlcmUsIGFuZCBpbiBh
ZGRpdGlvbiwKKyMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0
aW1lcyBjYXVzZSBwcm9ibGVtcy4KKyMgSG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVn
Z2luZy4KKyMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBk
aXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZDoKKyMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBi
ZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgorJGRlYnVnIHx8Cit7
CisgIHRtcD0KKyAgdHJhcCAnZXhpdF9zdGF0dXM9JD8KKyAgeyB0ZXN0IC16ICIkdG1wIiB8fCB0
ZXN0ICEgLWQgIiR0bXAiIHx8IHJtIC1mciAiJHRtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMK
KycgMAorICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQorfQorIyBDcmVhdGUgYSAoc2Vj
dXJlKSB0bXAgZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuCisKK3sKKyAgdG1wPWAodW1hc2sgMDc3
ICYmIG1rdGVtcCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmCisgIHRlc3QgLW4g
IiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCit9ICB8fAoreworICB0bXA9Li9jb25mJCQtJFJBTkRP
TQorICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikKK30gfHwgYXNfZm5fZXJyb3IgJD8gImNh
bm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1CisKKyMg
U2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2VjdGlvbi4KKyMgTm8gbmVlZCB0
byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCisjIFRoaXMgaGFw
cGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oJy4KK2lmIHRl
c3QgLW4gIiRDT05GSUdfRklMRVMiOyB0aGVuCisKKworYWNfY3I9YGVjaG8gWCB8IHRyIFggJ1ww
MTUnYAorIyBPbiBjeWd3aW4sIGJhc2ggY2FuIGVhdCBcciBpbnNpZGUgYGAgaWYgdGhlIHVzZXIg
cmVxdWVzdGVkIGlnbmNyLgorIyBCdXQgd2Uga25vdyBvZiBubyBvdGhlciBzaGVsbCB3aGVyZSBh
Y19jciB3b3VsZCBiZSBlbXB0eSBhdCB0aGlzCisjIHBvaW50LCBzbyB3ZSBjYW4gdXNlIGEgYmFz
aGlzbSBhcyBhIGZhbGxiYWNrLgoraWYgdGVzdCAieCRhY19jciIgPSB4OyB0aGVuCisgIGV2YWwg
YWNfY3I9XCRcJ1xcclwnCitmaQorYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJh
XHJiIiB9JyA8L2Rldi9udWxsIDI+L2Rldi9udWxsYAoraWYgdGVzdCAiJGFjX2NzX2F3a19jciIg
PSAiYSR7YWNfY3J9YiI7IHRoZW4KKyAgYWNfY3NfYXdrX2NyPSdcXHInCitlbHNlCisgIGFjX2Nz
X2F3a19jcj0kYWNfY3IKK2ZpCisKK2VjaG8gJ0JFR0lOIHsnID4iJHRtcC9zdWJzMS5hd2siICYm
CitfQUNFT0YKKworCit7CisgIGVjaG8gImNhdCA+Y29uZiQkc3Vicy5hd2sgPDxfQUNFT0YiICYm
CisgIGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IHNlZCAncy8uKi8mISQmJGFjX2RlbGltLycgJiYK
KyAgZWNobyAiX0FDRU9GIgorfSA+Y29uZiQkc3Vicy5zaCB8fAorICBhc19mbl9lcnJvciAkPyAi
Y291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CithY19kZWxpbV9udW09
YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYAorYWNfZGVsaW09JyUhXyEjICcK
K2ZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSA6OyBkbwor
ICAuIC4vY29uZiQkc3Vicy5zaCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFr
ZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKworICBhY19kZWxpbV9uPWBzZWQgLW4gInMv
LiokYWNfZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYAorICBpZiB0ZXN0
ICRhY19kZWxpbV9uID0gJGFjX2RlbGltX251bTsgdGhlbgorICAgIGJyZWFrCisgIGVsaWYgJGFj
X2xhc3RfdHJ5OyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05G
SUdfU1RBVFVTIiAiJExJTkVOTyIgNQorICBlbHNlCisgICAgYWNfZGVsaW09IiRhY19kZWxpbSEk
YWNfZGVsaW0gXyRhY19kZWxpbSEhICIKKyAgZmkKK2RvbmUKK3JtIC1mIGNvbmYkJHN1YnMuc2gK
KworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitjYXQg
Pj4iXCR0bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCitfQUNFT0YKK3NlZCAtbiAnCitoCitz
L14vU1siLzsgcy8hLiovIl09LworcAorZworcy9eW14hXSohLy8KKzpyZXBsCit0IHJlcGwKK3Mv
JyIkYWNfZGVsaW0iJyQvLwordCBkZWxpbQorOm5sCitoCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8K
K3QgbW9yZTEKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcbiJcXC8KK3AKK24KK2IgcmVw
bAorOm1vcmUxCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwvCitwCitnCitzLy5cezE0
OFx9Ly8KK3QgbmwKKzpkZWxpbQoraAorcy9cKC5cezE0OFx9XCkuLiovXDEvCit0IG1vcmUyCitz
L1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iLworcAorYgorOm1vcmUyCitzL1siXFxdL1xcJi9n
OyBzL14vIi87IHMvJC8iXFwvCitwCitnCitzLy5cezE0OFx9Ly8KK3QgZGVsaW0KKycgPGNvbmYk
JHN1YnMuYXdrIHwgc2VkICcKKy9eW14iIl0veworICBOCisgIHMvXG4vLworfQorJyA+PiRDT05G
SUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorcm0gLWYgY29uZiQkc3Vicy5hd2sKK2NhdCA+
PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorX0FDQVdLCitjYXQg
Pj4iXCR0bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJgorICBmb3IgKGtleSBpbiBTKSBTX2lzX3Nl
dFtrZXldID0gMQorICBGUyA9ICIHIgorCit9Cit7CisgIGxpbmUgPSAkIDAKKyAgbmZpZWxkcyA9
IHNwbGl0KGxpbmUsIGZpZWxkLCAiQCIpCisgIHN1YnN0ZWQgPSAwCisgIGxlbiA9IGxlbmd0aChm
aWVsZFsxXSkKKyAgZm9yIChpID0gMjsgaSA8IG5maWVsZHM7IGkrKykgeworICAgIGtleSA9IGZp
ZWxkW2ldCisgICAga2V5bGVuID0gbGVuZ3RoKGtleSkKKyAgICBpZiAoU19pc19zZXRba2V5XSkg
eworICAgICAgdmFsdWUgPSBTW2tleV0KKyAgICAgIGxpbmUgPSBzdWJzdHIobGluZSwgMSwgbGVu
KSAiIiB2YWx1ZSAiIiBzdWJzdHIobGluZSwgbGVuICsga2V5bGVuICsgMykKKyAgICAgIGxlbiAr
PSBsZW5ndGgodmFsdWUpICsgbGVuZ3RoKGZpZWxkWysraV0pCisgICAgICBzdWJzdGVkID0gMQor
ICAgIH0gZWxzZQorICAgICAgbGVuICs9IDEgKyBrZXlsZW4KKyAgfQorCisgIHByaW50IGxpbmUK
K30KKworX0FDQVdLCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh
Y193cml0ZV9mYWlsPTEKK2lmIHNlZCAicy8kYWNfY3IvLyIgPCAvZGV2L251bGwgPiAvZGV2L251
bGwgMj4mMTsgdGhlbgorICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19j
ci9nIgorZWxzZQorICBjYXQKK2ZpIDwgIiR0bXAvc3ViczEuYXdrIiA+ICIkdG1wL3N1YnMuYXdr
IiBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZpbGVzIG1h
Y2hpbmVyeSIgIiRMSU5FTk8iIDUKK19BQ0VPRgorCisjIFZQQVRIIG1heSBjYXVzZSB0cm91Ymxl
IHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlIHNvbGUgJChzcmNkaXIpLAorIyAke3NyY2Rp
cn0gYW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJp
cCBsZWFkaW5nIGFuZAorIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9s
ZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKKyMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVt
cHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KK2lmIHRlc3QgIngkc3JjZGlyIiA9
IHguOyB0aGVuCisgIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj1bCSBdKi97CitoCitzLy8v
CitzL14vOi8KK3MvWwkgXSokLzovCitzLzpcJChzcmNkaXIpOi86L2cKK3MvOlwke3NyY2Rpcn06
LzovZworcy86QHNyY2RpckA6LzovZworcy9eOiovLworcy86KiQvLworeAorcy9cKD1bCSBdKlwp
LiovXDEvCitHCitzL1xuLy8KK3MvXltePV0qPVsJIF0qJC8vCit9JworZmkKKworY2F0ID4+JENP
TkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorZmkgIyB0ZXN0IC1uICIk
Q09ORklHX0ZJTEVTIgorCisjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0hFQURFUlMg
c2VjdGlvbi4KKyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05G
SUdfSEVBREVSUy4KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5z
dGF0dXMgTWFrZWZpbGUnLgoraWYgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIjsgdGhlbgorY2F0
ID4iJHRtcC9kZWZpbmVzLmF3ayIgPDxcX0FDQVdLIHx8CitCRUdJTiB7CitfQUNFT0YKKworIyBU
cmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIGFuIGF3ayBzY3JpcHQgYGRlZmluZXMuYXdrJywgZW1i
ZWRkZWQgYXMKKyMgaGVyZS1kb2N1bWVudCBpbiBjb25maWcuc3RhdHVzLCB0aGF0IHN1YnN0aXR1
dGVzIHRoZSBwcm9wZXIgdmFsdWVzIGludG8KKyMgY29uZmlnLmguaW4gdG8gcHJvZHVjZSBjb25m
aWcuaC4KKworIyBDcmVhdGUgYSBkZWxpbWl0ZXIgc3RyaW5nIHRoYXQgZG9lcyBub3QgZXhpc3Qg
aW4gY29uZmRlZnMuaCwgdG8gZWFzZQorIyBoYW5kbGluZyBvZiBsb25nIGxpbmVzLgorYWNfZGVs
aW09JyUhXyEjICcKK2ZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSA6OyBkbworICBhY190
PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAiJGFjX3Qi
OyB0aGVuCisgICAgYnJlYWsKKyAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KKyAgICBhc19mbl9l
cnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIgNQorICBl
bHNlCisgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKKyAg
ZmkKK2RvbmUKKworIyBGb3IgdGhlIGF3ayBzY3JpcHQsIEQgaXMgYW4gYXJyYXkgb2YgbWFjcm8g
dmFsdWVzIGtleWVkIGJ5IG5hbWUsCisjIGxpa2V3aXNlIFAgY29udGFpbnMgbWFjcm8gcGFyYW1l
dGVycyBpZiBhbnkuICBQcmVzZXJ2ZSBiYWNrc2xhc2gKKyMgbmV3bGluZSBzZXF1ZW5jZXMuCisK
K2FjX3dvcmRfcmU9W18kYXNfY3JfTGV0dGVyc11bXyRhc19jcl9hbG51bV0qCitzZWQgLW4gJwor
cy8uXHsxNDhcfS8mJyIkYWNfZGVsaW0iJy9nCit0IHJzZXQKKzpyc2V0CitzL15bCSBdKiNbCSBd
KmRlZmluZVsJIF1bCSBdKi8gLwordCBkZWYKK2QKKzpkZWYKK3MvXFwkLy8KK3QgYnNubAorcy9b
IlxcXS9cXCYvZworcy9eIFwoJyIkYWNfd29yZF9yZSInXClcKChbXigpXSopXClbCSBdKlwoLipc
KS9QWyJcMSJdPSJcMiJcCitEWyJcMSJdPSIgXDMiL3AKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wp
WwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyIi9wCitkCis6YnNubAorcy9bIlxcXS9cXCYvZworcy9e
IFwoJyIkYWNfd29yZF9yZSInXClcKChbXigpXSopXClbCSBdKlwoLipcKS9QWyJcMSJdPSJcMiJc
CitEWyJcMSJdPSIgXDNcXFxcXFxuIlxcL3AKK3QgY29udAorcy9eIFwoJyIkYWNfd29yZF9yZSIn
XClbCSBdKlwoLipcKS9EWyJcMSJdPSIgXDJcXFxcXFxuIlxcL3AKK3QgY29udAorZAorOmNvbnQK
K24KK3MvLlx7MTQ4XH0vJiciJGFjX2RlbGltIicvZwordCBjbGVhcgorOmNsZWFyCitzL1xcJC8v
Cit0IGJzbmxjCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iL3AKK2QKKzpic25sYworcy9b
IlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxcXFxcbiJcXC9wCitiIGNvbnQKKycgPGNvbmZkZWZz
LmggfCBzZWQgJworcy8nIiRhY19kZWxpbSInLyJcXFwKKyIvZycgPj4kQ09ORklHX1NUQVRVUyB8
fCBhY193cml0ZV9mYWlsPTEKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNf
d3JpdGVfZmFpbD0xCisgIGZvciAoa2V5IGluIEQpIERfaXNfc2V0W2tleV0gPSAxCisgIEZTID0g
IgciCit9CisvXltcdCBdKiNbXHQgXSooZGVmaW5lfHVuZGVmKVtcdCBdKyRhY193b3JkX3JlKFtc
dCAoXXxcJCkvIHsKKyAgbGluZSA9IFwkIDAKKyAgc3BsaXQobGluZSwgYXJnLCAiICIpCisgIGlm
IChhcmdbMV0gPT0gIiMiKSB7CisgICAgZGVmdW5kZWYgPSBhcmdbMl0KKyAgICBtYWMxID0gYXJn
WzNdCisgIH0gZWxzZSB7CisgICAgZGVmdW5kZWYgPSBzdWJzdHIoYXJnWzFdLCAyKQorICAgIG1h
YzEgPSBhcmdbMl0KKyAgfQorICBzcGxpdChtYWMxLCBtYWMyLCAiKCIpICMpCisgIG1hY3JvID0g
bWFjMlsxXQorICBwcmVmaXggPSBzdWJzdHIobGluZSwgMSwgaW5kZXgobGluZSwgZGVmdW5kZWYp
IC0gMSkKKyAgaWYgKERfaXNfc2V0W21hY3JvXSkgeworICAgICMgUHJlc2VydmUgdGhlIHdoaXRl
IHNwYWNlIHN1cnJvdW5kaW5nIHRoZSAiIyIuCisgICAgcHJpbnQgcHJlZml4ICJkZWZpbmUiLCBt
YWNybyBQW21hY3JvXSBEW21hY3JvXQorICAgIG5leHQKKyAgfSBlbHNlIHsKKyAgICAjIFJlcGxh
Y2UgI3VuZGVmIHdpdGggY29tbWVudHMuICBUaGlzIGlzIG5lY2Vzc2FyeSwgZm9yIGV4YW1wbGUs
CisgICAgIyBpbiB0aGUgY2FzZSBvZiBfUE9TSVhfU09VUkNFLCB3aGljaCBpcyBwcmVkZWZpbmVk
IGFuZCByZXF1aXJlZAorICAgICMgb24gc29tZSBzeXN0ZW1zIHdoZXJlIGNvbmZpZ3VyZSB3aWxs
IG5vdCBkZWNpZGUgdG8gZGVmaW5lIGl0LgorICAgIGlmIChkZWZ1bmRlZiA9PSAidW5kZWYiKSB7
CisgICAgICBwcmludCAiLyoiLCBwcmVmaXggZGVmdW5kZWYsIG1hY3JvLCAiKi8iCisgICAgICBu
ZXh0CisgICAgfQorICB9Cit9Cit7IHByaW50IH0KK19BQ0FXSworX0FDRU9GCitjYXQgPj4kQ09O
RklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisgIGFzX2ZuX2Vycm9yICQ/
ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQor
ZmkgIyB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiCisKKworZXZhbCBzZXQgWCAiICA6RiAkQ09O
RklHX0ZJTEVTICA6SCAkQ09ORklHX0hFQURFUlMgICAgIgorc2hpZnQKK2ZvciBhY190YWcKK2Rv
CisgIGNhc2UgJGFjX3RhZyBpbgorICA6W0ZITENdKSBhY19tb2RlPSRhY190YWc7IGNvbnRpbnVl
OzsKKyAgZXNhYworICBjYXNlICRhY19tb2RlJGFjX3RhZyBpbgorICA6W0ZITF0qOiopOzsKKyAg
OkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJ
TkVOTyIgNSA7OworICA6W0ZIXS0pIGFjX3RhZz0tOi07OworICA6W0ZIXSopIGFjX3RhZz0kYWNf
dGFnOiRhY190YWcuaW47OworICBlc2FjCisgIGFjX3NhdmVfSUZTPSRJRlMKKyAgSUZTPToKKyAg
c2V0IHggJGFjX3RhZworICBJRlM9JGFjX3NhdmVfSUZTCisgIHNoaWZ0CisgIGFjX2ZpbGU9JDEK
KyAgc2hpZnQKKworICBjYXNlICRhY19tb2RlIGluCisgIDpMKSBhY19zb3VyY2U9JDE7OworICA6
W0ZIXSkKKyAgICBhY19maWxlX2lucHV0cz0KKyAgICBmb3IgYWNfZgorICAgIGRvCisgICAgICBj
YXNlICRhY19mIGluCisgICAgICAtKSBhY19mPSIkdG1wL3N0ZGluIjs7CisgICAgICAqKSAjIExv
b2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3Vy
Y2UgdHJlZQorCSAjIChpZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRl
IHBhdGggY2Fubm90IGJlIERPUy1zdHlsZSwKKwkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250
YWluIGA6Jy4KKwkgdGVzdCAtZiAiJGFjX2YiIHx8CisJICAgY2FzZSAkYWNfZiBpbgorCSAgIFtc
XC8kXSopIGZhbHNlOzsKKwkgICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIk
c3JjZGlyLyRhY19mIjs7CisJICAgZXNhYyB8fAorCSAgIGFzX2ZuX2Vycm9yIDEgImNhbm5vdCBm
aW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNSA7OworICAgICAgZXNhYworICAg
ICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkICJzLycv
J1xcXFxcXFxcJycvZyJgOzsgZXNhYworICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRz
ICIgJyRhY19mJyIKKyAgICBkb25lCisKKyAgICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMg
YGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAorICAgICMgdXNlICRh
c19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgICAjICAgIC8qIGNv
bmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICAgIGNvbmZpZ3VyZV9p
bnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8XlteOl0q
L3x8O3N8OlteOl0qL3wsIHxnJworCWAnIGJ5IGNvbmZpZ3VyZS4nCisgICAgaWYgdGVzdCB4IiRh
Y19maWxlIiAhPSB4LTsgdGhlbgorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICRj
b25maWd1cmVfaW5wdXQiCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5n
ICRhY19maWxlIiA+JjY7fQorICAgIGZpCisgICAgIyBOZXV0cmFsaXplIHNwZWNpYWwgY2hhcmFj
dGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFjZW1lbnQgc3RyaW5ncy4KKyAgICBjYXNl
ICRjb25maWd1cmVfaW5wdXQgaW4gIygKKyAgICAqXCYqIHwgKlx8KiB8ICpcXCogKQorICAgICAg
IGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3VyZV9pbnB1dCIgfAorICAgICAg
IHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAorICAgICopIGFjX3NlZF9jb25mX2lucHV0
PSRjb25maWd1cmVfaW5wdXQ7OworICAgIGVzYWMKKworICAgIGNhc2UgJGFjX3RhZyBpbgorICAg
ICo6LToqIHwgKjotKSBjYXQgPiIkdG1wL3N0ZGluIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAk
PyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgIDs7CisgICAgZXNhYwor
ICAgIDs7CisgIGVzYWMKKworICBhY19kaXI9YCRhc19kaXJuYW1lIC0tICIkYWNfZmlsZSIgfHwK
KyRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBc
CisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hc
KC8vXCkkJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8
fAorJGFzX2VjaG8gWCIkYWNfZmlsZSIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14v
XVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKVte
L10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKSQveworCSAg
ICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wpLioveworCSAgICBzLy9cMS8KKwkg
ICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgIGFzX2Rpcj0iJGFjX2RpciI7IGFzX2ZuX21r
ZGlyX3AKKyAgYWNfYnVpbGRkaXI9LgorCitjYXNlICIkYWNfZGlyIiBpbgorLikgYWNfZGlyX3N1
ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CisqKQor
ICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwn
YAorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCisgIGFj
X3RvcF9idWlsZGRpcl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3N8L1te
XFwvXSp8Ly4ufGc7c3wvfHwnYAorICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluCisgICIi
KSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKyAgKikgIGFj
X3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7CisgIGVzYWMgOzsKK2Vz
YWMKK2FjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZAorYWNfYWJzX2J1aWxkZGlyPSRhY19wd2Qk
YWNfZGlyX3N1ZmZpeAorIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToKK2FjX3RvcF9idWls
ZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeAorCitjYXNlICRzcmNkaXIgaW4KKyAgLikgICMgV2Ug
YXJlIGJ1aWxkaW5nIGluIHBsYWNlLgorICAgIGFjX3NyY2Rpcj0uCisgICAgYWNfdG9wX3NyY2Rp
cj0kYWNfdG9wX2J1aWxkZGlyX3N1YgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QgOzsK
KyAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLgorICAgIGFjX3NyY2Rpcj0k
c3JjZGlyJGFjX2Rpcl9zdWZmaXg7CisgICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyCisgICAgYWNf
YWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7OworICAqKSAjIFJlbGF0aXZlIG5hbWUuCisgICAgYWNf
c3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19kaXJfc3VmZml4CisgICAgYWNf
dG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIKKyAgICBhY19hYnNfdG9wX3Ny
Y2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsKK2VzYWMKK2FjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bf
c3JjZGlyJGFjX2Rpcl9zdWZmaXgKKworCisgIGNhc2UgJGFjX21vZGUgaW4KKyAgOkYpCisgICMK
KyAgIyBDT05GSUdfRklMRQorICAjCisKKyAgY2FzZSAkSU5TVEFMTCBpbgorICBbXFwvJF0qIHwg
PzpbXFwvXSogKSBhY19JTlNUQUxMPSRJTlNUQUxMIDs7CisgICopIGFjX0lOU1RBTEw9JGFjX3Rv
cF9idWlsZF9wcmVmaXgkSU5TVEFMTCA7OworICBlc2FjCitfQUNFT0YKKworY2F0ID4+JENPTkZJ
R19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorIyBJZiB0aGUgdGVtcGxhdGUg
ZG9lcyBub3Qga25vdyBhYm91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0LgorIyBGSVhNRTogVGhp
cyBoYWNrIHNob3VsZCBiZSByZW1vdmVkIGEgZmV3IHllYXJzIGFmdGVyIDIuNjAuCithY19kYXRh
cm9vdGRpcl9oYWNrPTsgYWNfZGF0YXJvb3RkaXJfc2Vlbj0KK2FjX3NlZF9kYXRhcm9vdD0nCisv
ZGF0YXJvb3RkaXIvIHsKKyAgcAorICBxCit9CisvQGRhdGFkaXJAL3AKKy9AZG9jZGlyQC9wCisv
QGluZm9kaXJAL3AKKy9AbG9jYWxlZGlyQC9wCisvQG1hbmRpckAvcCcKK2Nhc2UgYGV2YWwgInNl
ZCAtbiBcIlwkYWNfc2VkX2RhdGFyb290XCIgJGFjX2ZpbGVfaW5wdXRzImAgaW4KKypkYXRhcm9v
dGRpciopIGFjX2RhdGFyb290ZGlyX3NlZW49eWVzOzsKKypAZGF0YWRpckAqfCpAZG9jZGlyQCp8
KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJAKnwqQG1hbmRpckAqKQorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0
byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiY1CiskYXNfZWNobyAiJGFzX21l
OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290
ZGlyIHNldHRpbmciID4mMjt9CitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9G
IHx8IGFjX3dyaXRlX2ZhaWw9MQorICBhY19kYXRhcm9vdGRpcl9oYWNrPScKKyAgcyZAZGF0YWRp
ckAmJGRhdGFkaXImZworICBzJkBkb2NkaXJAJiRkb2NkaXImZworICBzJkBpbmZvZGlyQCYkaW5m
b2RpciZnCisgIHMmQGxvY2FsZWRpckAmJGxvY2FsZWRpciZnCisgIHMmQG1hbmRpckAmJG1hbmRp
ciZnCisgIHMmXFxcJHtkYXRhcm9vdGRpcn0mJGRhdGFyb290ZGlyJmcnIDs7Citlc2FjCitfQUNF
T0YKKworIyBOZXV0cmFsaXplIFZQQVRIIHdoZW4gYCRzcmNkaXInID0gYC4nLgorIyBTaGVsbCBj
b2RlIGluIGNvbmZpZ3VyZS5hYyBtaWdodCBzZXQgZXh0cmFzdWIuCisjIEZJWE1FOiBkbyB3ZSBy
ZWFsbHkgd2FudCB0byBtYWludGFpbiB0aGlzIGZlYXR1cmU/CitjYXQgPj4kQ09ORklHX1NUQVRV
UyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2FjX3NlZF9leHRyYT0iJGFjX3Zwc3ViCisk
ZXh0cmFzdWIKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy
aXRlX2ZhaWw9MQorOnQKKy9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWIKK3N8QGNvbmZpZ3Vy
ZV9pbnB1dEB8JGFjX3NlZF9jb25mX2lucHV0fDt0IHQKK3MmQHRvcF9idWlsZGRpckAmJGFjX3Rv
cF9idWlsZGRpcl9zdWImO3QgdAorcyZAdG9wX2J1aWxkX3ByZWZpeEAmJGFjX3RvcF9idWlsZF9w
cmVmaXgmO3QgdAorcyZAc3JjZGlyQCYkYWNfc3JjZGlyJjt0IHQKK3MmQGFic19zcmNkaXJAJiRh
Y19hYnNfc3JjZGlyJjt0IHQKK3MmQHRvcF9zcmNkaXJAJiRhY190b3Bfc3JjZGlyJjt0IHQKK3Mm
QGFic190b3Bfc3JjZGlyQCYkYWNfYWJzX3RvcF9zcmNkaXImO3QgdAorcyZAYnVpbGRkaXJAJiRh
Y19idWlsZGRpciY7dCB0CitzJkBhYnNfYnVpbGRkaXJAJiRhY19hYnNfYnVpbGRkaXImO3QgdAor
cyZAYWJzX3RvcF9idWlsZGRpckAmJGFjX2Fic190b3BfYnVpbGRkaXImO3QgdAorcyZASU5TVEFM
TEAmJGFjX0lOU1RBTEwmO3QgdAorJGFjX2RhdGFyb290ZGlyX2hhY2sKKyIKK2V2YWwgc2VkIFwi
XCRhY19zZWRfZXh0cmFcIiAiJGFjX2ZpbGVfaW5wdXRzIiB8ICRBV0sgLWYgIiR0bXAvc3Vicy5h
d2siID4kdG1wL291dCBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRh
Y19maWxlIiAiJExJTkVOTyIgNQorCit0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19k
YXRhcm9vdGRpcl9zZWVuIiAmJgorICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9
L3AnICIkdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJgorICB7IGFjX291dD1gc2Vk
IC1uICcvXlsJIF0qZGF0YXJvb3RkaXJbCSBdKjoqPS9wJyAiJHRtcC9vdXQiYDsgdGVzdCAteiAi
JGFjX291dCI7IH0gJiYKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUg
XGBkYXRhcm9vdGRpcicKK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtl
IHN1cmUgaXQgaXMgZGVmaW5lZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNf
ZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicK
K3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVm
aW5lZCIgPiYyO30KKworICBybSAtZiAiJHRtcC9zdGRpbiIKKyAgY2FzZSAkYWNfZmlsZSBpbgor
ICAtKSBjYXQgIiR0bXAvb3V0IiAmJiBybSAtZiAiJHRtcC9vdXQiOzsKKyAgKikgcm0gLWYgIiRh
Y19maWxlIiAmJiBtdiAiJHRtcC9vdXQiICIkYWNfZmlsZSI7OworICBlc2FjIFwKKyAgfHwgYXNf
Zm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgOzsK
KyAgOkgpCisgICMKKyAgIyBDT05GSUdfSEVBREVSCisgICMKKyAgaWYgdGVzdCB4IiRhY19maWxl
IiAhPSB4LTsgdGhlbgorICAgIHsKKyAgICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0
ICAqLyIgXAorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJHRtcC9kZWZpbmVzLmF3ayInICIkYWNf
ZmlsZV9pbnB1dHMiCisgICAgfSA+IiR0bXAvY29uZmlnLmgiIFwKKyAgICAgIHx8IGFzX2ZuX2Vy
cm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgIGlmIGRp
ZmYgIiRhY19maWxlIiAiJHRtcC9jb25maWcuaCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY19maWxlIGlzIHVu
Y2hhbmdlZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4m
Njt9CisgICAgZWxzZQorICAgICAgcm0gLWYgIiRhY19maWxlIgorICAgICAgbXYgIiR0bXAvY29u
ZmlnLmgiICIkYWNfZmlsZSIgXAorCXx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRl
ICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgIGZpCisgIGVsc2UKKyAgICAkYXNfZWNobyAiLyog
JGNvbmZpZ3VyZV9pbnB1dCAgKi8iIFwKKyAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiR0bXAvZGVm
aW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAi
Y291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQorICBmaQorIDs7CisKKworICBlc2FjCisK
K2RvbmUgIyBmb3IgYWNfdGFnCisKKworYXNfZm5fZXhpdCAwCitfQUNFT0YKK2FjX2NsZWFuX2Zp
bGVzPSRhY19jbGVhbl9maWxlc19zYXZlCisKK3Rlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8Cisg
IGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAi
JExJTkVOTyIgNQorCisKKyMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5k
IHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KKyMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24g
cmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgorIyBVbmZvcnR1bmF0ZWx5LCBv
biBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4KKyMgYnkg
Y29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVzIHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdG8gaXQ7
IGl0cworIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRv
IC9kZXYvbnVsbCwKKyMgZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4g
YmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKKyMgYXBwZW5kZWQgdG8gYnkgY29uZmlnLnN0YXR1
cy4gIFdoZW4gY29taW5nIGJhY2sgdG8gY29uZmlndXJlLCB3ZQorIyBuZWVkIHRvIG1ha2UgdGhl
IEZEIGF2YWlsYWJsZSBhZ2Fpbi4KK2lmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgor
ICBhY19jc19zdWNjZXNzPToKKyAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQorICB0ZXN0ICIkc2ls
ZW50IiA9IHllcyAmJgorICAgIGFjX2NvbmZpZ19zdGF0dXNfYXJncz0iJGFjX2NvbmZpZ19zdGF0
dXNfYXJncyAtLXF1aWV0IgorICBleGVjIDU+L2Rldi9udWxsCisgICRTSEVMTCAkQ09ORklHX1NU
QVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKKyAgZXhl
YyA1Pj5jb25maWcubG9nCisgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJv
bSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFp
bCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgorICAkYWNfY3Nfc3VjY2VzcyB8fCBh
c19mbl9leGl0IDEKK2ZpCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRl
c3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25z
OiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
dW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30KK2ZpCisK
ZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2NvbmZpZ3VyZS5hYwot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9j
b25maWd1cmUuYWMJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTg5
IEBACisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0g
QXV0b2NvbmYgLSotCisjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVj
ZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCisKK0FDX1BSRVJFUShbMi42N10pCitBQ19JTklUKFtYZW4g
SHlwZXJ2aXNvcl0sIG00X2VzeXNjbWQoWy4uL3ZlcnNpb24uc2ggLi4veGVuL01ha2VmaWxlXSks
CisgICAgW3hlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tXSkKK0FDX0NPTkZJR19TUkNESVIo
W2xpYnhsL2xpYnhsLmNdKQorQUNfQ09ORklHX0ZJTEVTKFsuLi9jb25maWcvVG9vbHMubWtdKQor
QUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKK0FDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkK
K0FDX0NPTkZJR19BVVhfRElSKFsuXSkKKworIyBDaGVjayBpZiBDRkxBR1MsIExERkxBR1MsIExJ
QlMsIENQUEZMQUdTIG9yIENQUCBpcyBzZXQgYW5kIHByaW50IGEgd2FybmluZworCitBU19JRihb
dGVzdCAtbiAiJENDJENGTEFHUyRMREZMQUdTJExJQlMkQ1BQRkxBR1MkQ1BQIl0sIFsKKyAgICBB
Q19NU0dfV0FSTigKK1tTZXR0aW5nIENDLCBDRkxBR1MsIExERkxBR1MsIExJQlMsIENQUEZMQUdT
IG9yIENQUCBpcyBub3QgXAorcmVjb21tZW5kZWQsIHVzZSBQUkVQRU5EX0lOQ0xVREVTLCBQUkVQ
RU5EX0xJQiwgXAorQVBQRU5EX0lOQ0xVREVTIGFuZCBBUFBFTkRfTElCIGluc3RlYWQgd2hlbiBw
b3NzaWJsZS5dKQorXSkKKworQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCitBQ19DQU5PTklDQUxf
SE9TVAorCisjIE00IE1hY3JvIGluY2x1ZGVzCittNF9pbmNsdWRlKFttNC9lbmFibGVfZmVhdHVy
ZS5tNF0pCittNF9pbmNsdWRlKFttNC9kaXNhYmxlX2ZlYXR1cmUubTRdKQorbTRfaW5jbHVkZShb
bTQvcGF0aF9vcl9mYWlsLm00XSkKK200X2luY2x1ZGUoW200L3B5dGhvbl94bWwubTRdKQorbTRf
aW5jbHVkZShbbTQvcHl0aG9uX3ZlcnNpb24ubTRdKQorbTRfaW5jbHVkZShbbTQvcHl0aG9uX2Rl
dmVsLm00XSkKK200X2luY2x1ZGUoW200L3VkZXYubTRdKQorbTRfaW5jbHVkZShbbTQvb2NhbWwu
bTRdKQorbTRfaW5jbHVkZShbbTQvZGVmYXVsdF9saWIubTRdKQorbTRfaW5jbHVkZShbbTQvc2V0
X2NmbGFnc19sZGZsYWdzLm00XSkKKworIyBFbmFibGUvZGlzYWJsZSBvcHRpb25zCitBWF9BUkdf
RU5BQkxFX0FORF9FWFBPUlQoW3hzbV0sCisgICAgW0VuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxl
IChieSBkZWZhdWx0LCBGbGFzayldKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFtnaXRodHRw
XSwgW0Rvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhUVFBdKQorQVhfQVJHX0RJU0FCTEVf
QU5EX0VYUE9SVChbbW9uaXRvcnNdLAorICAgIFtEaXNhYmxlIHhlbnN0YXQgYW5kIHhlbnRvcCBt
b25pdG9yaW5nIHRvb2xzXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbdnRwbV0sIFtFbmFi
bGUgVmlydHVhbCBUcnVzdGVkIFBsYXRmb3JtIE1vZHVsZV0pCitBWF9BUkdfRU5BQkxFX0FORF9F
WFBPUlQoW3hhcGldLCBbRW5hYmxlIFhlbiBBUEkgQmluZGluZ3NdKQorQVhfQVJHX0RJU0FCTEVf
QU5EX0VYUE9SVChbcHl0aG9udG9vbHNdLCBbRGlzYWJsZSBQeXRob24gdG9vbHNdKQorQVhfQVJH
X0RJU0FCTEVfQU5EX0VYUE9SVChbb2NhbWx0b29sc10sIFtEaXNhYmxlIE9jYW1sIHRvb2xzXSkK
K0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbbWluaXRlcm1dLCBbRW5hYmxlIG1pbml0ZXJtXSkK
K0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbbG9tb3VudF0sIFtFbmFibGUgbG9tb3VudF0pCitB
WF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtkZWJ1Z10sIFtEaXNhYmxlIGRlYnVnIGJ1aWxkIG9m
IFhlbiBhbmQgdG9vbHNdKQorCitBQ19BUkdfVkFSKFtQUkVQRU5EX0lOQ0xVREVTXSwKKyAgICBb
TGlzdCBvZiBpbmNsdWRlIGZvbGRlcnMgdG8gcHJlcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkp
XSkKK0FDX0FSR19WQVIoW1BSRVBFTkRfTElCXSwKKyAgICBbTGlzdCBvZiBsaWJyYXJ5IGZvbGRl
cnMgdG8gcHJlcGVuZCB0byBMREZMQUdTICh3aXRob3V0IC1MKV0pCitBQ19BUkdfVkFSKFtBUFBF
TkRfSU5DTFVERVNdLAorICAgIFtMaXN0IG9mIGluY2x1ZGUgZm9sZGVycyB0byBhcHBlbmQgdG8g
Q0ZMQUdTICh3aXRob3V0IC1JKV0pCitBQ19BUkdfVkFSKFtBUFBFTkRfTElCXSwKKyAgICBbTGlz
dCBvZiBsaWJyYXJ5IGZvbGRlcnMgdG8gYXBwZW5kIHRvIExERkxBR1MgKHdpdGhvdXQgLUwpXSkK
KworQVhfU0VUX0ZMQUdTCisKK0FDX0FSR19WQVIoW1BZVEhPTl0sIFtQYXRoIHRvIHRoZSBQeXRo
b24gcGFyc2VyXSkKK0FDX0FSR19WQVIoW1BFUkxdLCBbUGF0aCB0byBQZXJsIHBhcnNlcl0pCitB
Q19BUkdfVkFSKFtCUkNUTF0sIFtQYXRoIHRvIGJyY3RsIHRvb2xdKQorQUNfQVJHX1ZBUihbSVBd
LCBbUGF0aCB0byBpcCB0b29sXSkKK0FDX0FSR19WQVIoW0JJU09OXSwgW1BhdGggdG8gQmlzb24g
cGFyc2VyIGdlbmVyYXRvcl0pCitBQ19BUkdfVkFSKFtGTEVYXSwgW1BhdGggdG8gRmxleCBsZXhp
Y2FsIGFuYWx5c2VyIGdlbmVyYXRvcl0pCitBQ19BUkdfVkFSKFtDVVJMXSwgW1BhdGggdG8gY3Vy
bC1jb25maWcgdG9vbF0pCitBQ19BUkdfVkFSKFtYTUxdLCBbUGF0aCB0byB4bWwyLWNvbmZpZyB0
b29sXSkKK0FDX0FSR19WQVIoW0JBU0hdLCBbUGF0aCB0byBiYXNoIHNoZWxsXSkKK0FDX0FSR19W
QVIoW1hHRVRURVhUXSwgW1BhdGggdG8geGdldHR0ZXh0IHRvb2xdKQorCisjIENoZWNrcyBmb3Ig
cHJvZ3JhbXMuCitBQ19QUk9HX1NFRAorQUNfUFJPR19DQworQUNfUFJPR19MTl9TCitBQ19QUk9H
X01BS0VfU0VUCitBQ19QUk9HX0lOU1RBTEwKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtQRVJMXSwg
W3BlcmxdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0JSQ1RMXSwgW2JyY3RsXSkKK0FYX1BBVEhf
UFJPR19PUl9GQUlMKFtJUF0sIFtpcF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQklTT05dLCBb
Ymlzb25dKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0ZMRVhdLCBbZmxleF0pCitBU19JRihbdGVz
dCAieCR4YXBpIiA9ICJ4eSJdLCBbCisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0NVUkxdLCBb
Y3VybC1jb25maWddKQorICAgIEFYX1BBVEhfUFJPR19PUl9GQUlMKFtYTUxdLCBbeG1sMi1jb25m
aWddKQorXSkKK0FTX0lGKFt0ZXN0ICJ4JG9jYW1sdG9vbHMiID0gInh5Il0sIFsKKyAgICBBQ19Q
Uk9HX09DQU1MCisgICAgQVNfSUYoW3Rlc3QgIngkT0NBTUxDIiA9ICJ4bm8iXSwgWworICAgICAg
ICBBU19JRihbdGVzdCAieCRlbmFibGVfb2NhbWx0b29scyIgPSAieHllcyJdLCBbCisgICAgICAg
ICAgICBBQ19NU0dfRVJST1IoW09jYW1sIHRvb2xzIGVuYWJsZWQsIGJ1dCB1bmFibGUgdG8gZmlu
ZCBPY2FtbF0pXSkKKyAgICAgICAgb2NhbWx0b29scz0ibiIKKyAgICBdKQorXSkKK0FYX1BBVEhf
UFJPR19PUl9GQUlMKFtCQVNIXSwgW2Jhc2hdKQorQVNfSUYoW3Rlc3QgIngkcHl0aG9udG9vbHMi
ID0gInh5Il0sIFsKKyAgICBBU19JRihbZWNobyAiJFBZVEhPTiIgfCBncmVwIC1xICJeLyJdLCBb
CisgICAgICAgIFBZVEhPTlBBVEg9JFBZVEhPTgorICAgICAgICBQWVRIT049YGJhc2VuYW1lICRQ
WVRIT05QQVRIYAorICAgIF0sW3Rlc3QgLXogIiRQWVRIT04iXSwgW1BZVEhPTj0icHl0aG9uIl0s
CisgICAgW0FDX01TR19FUlJPUihbUFlUSE9OIHNwZWNpZmllZCwgYnV0IGlzIG5vdCBhbiBhYnNv
bHV0ZSBwYXRoXSldKQorICAgIEFYX1BBVEhfUFJPR19PUl9GQUlMKFtQWVRIT05QQVRIXSwgWyRQ
WVRIT05dKQorICAgIEFYX0NIRUNLX1BZVEhPTl9WRVJTSU9OKFsyXSwgWzNdKQorICAgIEFYX0NI
RUNLX1BZVEhPTl9YTUwoKQorICAgIEFYX0NIRUNLX1BZVEhPTl9ERVZFTCgpCitdKQorQVhfUEFU
SF9QUk9HX09SX0ZBSUwoW1hHRVRURVhUXSwgW3hnZXR0ZXh0XSkKK0FYX0NIRUNLX1VERVYoWzU5
XSkKKworIyBDaGVjayBsaWJyYXJ5IHBhdGgKK0FYX0RFRkFVTFRfTElCCisKKyMgQ2hlY2tzIGZv
ciBsaWJyYXJpZXMuCitBQ19DSEVDS19MSUIoW2Fpb10sIFtpb19zZXR1cF0sIFtzeXN0ZW1fYWlv
PSJ5Il0sIFtzeXN0ZW1fYWlvPSJuIl0pCitBQ19TVUJTVChzeXN0ZW1fYWlvKQorQUNfQ0hFQ0tf
TElCKFtjcnlwdG9dLCBbTUQ1XSwgW10sIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxp
YmNyeXB0b10pXSkKK0FDX0NIRUNLX0xJQihbZXh0MmZzXSwgW2V4dDJmc19vcGVuMl0sIFtsaWJl
eHQyZnM9InkiXSwgW2xpYmV4dDJmcz0ibiJdKQorQUNfU1VCU1QobGliZXh0MmZzKQorQUNfQ0hF
Q0tfTElCKFtnY3J5cHRdLCBbZ2NyeV9tZF9oYXNoX2J1ZmZlcl0sIFtsaWJnY3J5cHQ9InkiXSwg
W2xpYmdjcnlwdD0ibiJdKQorQUNfU1VCU1QobGliZ2NyeXB0KQorQUNfQ0hFQ0tfTElCKFtwdGhy
ZWFkXSwgW3B0aHJlYWRfY3JlYXRlXSwgW10gLAorICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5v
dCBmaW5kIGxpYnB0aHJlYWRdKV0pCitBQ19DSEVDS19MSUIoW3J0XSwgW2Nsb2NrX2dldHRpbWVd
KQorQUNfQ0hFQ0tfTElCKFt1dWlkXSwgW3V1aWRfY2xlYXJdLCBbXSwKKyAgICBbQUNfTVNHX0VS
Uk9SKFtDb3VsZCBub3QgZmluZCBsaWJ1dWlkXSldKQorQUNfQ0hFQ0tfTElCKFt5YWpsXSwgW3lh
amxfYWxsb2NdLCBbXSwKKyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB5YWpsXSld
KQorQUNfQ0hFQ0tfTElCKFt6XSwgW2RlZmxhdGVDb3B5XSwgW10sIFtBQ19NU0dfRVJST1IoW0Nv
dWxkIG5vdCBmaW5kIHpsaWJdKV0pCitBQ19DSEVDS19MSUIoW2ljb252XSwgW2xpYmljb252X29w
ZW5dLCBbbGliaWNvbnY9InkiXSwgW2xpYmljb252PSJuIl0pCitBQ19TVUJTVChsaWJpY29udikK
KworIyBBdXRvc2NhbiBzdHVmZiAoZXhjZXB0IGZvciB5YWpsL3lhamxfdmVyc2lvbi5oIGNoZWNr
KQorIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KK0FDX0ZVTkNfQUxMT0NBCitBQ19DSEVDS19I
RUFERVJTKFsgXAorICAgICAgICAgICAgICAgIGFycGEvaW5ldC5oIGZjbnRsLmggaW50dHlwZXMu
aCBsaWJpbnRsLmggbGltaXRzLmggbWFsbG9jLmggXAorICAgICAgICAgICAgICAgIG5ldGRiLmgg
bmV0aW5ldC9pbi5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGxpYi5oIHN0cmluZy5oIFwKKyAgICAg
ICAgICAgICAgICBzdHJpbmdzLmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBzeXMvbW91bnQuaCBz
eXMvcGFyYW0uaCBcCisgICAgICAgICAgICAgICAgc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmgg
c3lzL3RpbWUuaCBzeXNsb2cuaCB0ZXJtaW9zLmggXAorICAgICAgICAgICAgICAgIHVuaXN0ZC5o
IHlhamwveWFqbF92ZXJzaW9uLmggXAorICAgICAgICAgICAgICAgIF0pCisKKyMgQ2hlY2tzIGZv
ciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KK0FD
X0hFQURFUl9TVERCT09MCitBQ19UWVBFX1VJRF9UCitBQ19DX0lOTElORQorQUNfVFlQRV9JTlQx
Nl9UCitBQ19UWVBFX0lOVDMyX1QKK0FDX1RZUEVfSU5UNjRfVAorQUNfVFlQRV9JTlQ4X1QKK0FD
X1RZUEVfTU9ERV9UCitBQ19UWVBFX09GRl9UCitBQ19UWVBFX1BJRF9UCitBQ19DX1JFU1RSSUNU
CitBQ19UWVBFX1NJWkVfVAorQUNfVFlQRV9TU0laRV9UCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1
Y3Qgc3RhdC5zdF9ibGtzaXplXSkKK0FDX1NUUlVDVF9TVF9CTE9DS1MKK0FDX0NIRUNLX01FTUJF
UlMoW3N0cnVjdCBzdGF0LnN0X3JkZXZdKQorQUNfVFlQRV9VSU5UMTZfVAorQUNfVFlQRV9VSU5U
MzJfVAorQUNfVFlQRV9VSU5UNjRfVAorQUNfVFlQRV9VSU5UOF9UCitBQ19DSEVDS19UWVBFUyhb
cHRyZGlmZl90XSkKKworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgorQUNfRlVOQ19F
UlJPUl9BVF9MSU5FCitBQ19GVU5DX0ZPUksKK0FDX0ZVTkNfRlNFRUtPCitBQ19GVU5DX0xTVEFU
X0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LCitBQ19IRUFERVJfTUFKT1IKK0FDX0ZVTkNfTUFMTE9D
CitBQ19GVU5DX01LVElNRQorQUNfRlVOQ19NTUFQCitBQ19GVU5DX1JFQUxMT0MKK0FDX0ZVTkNf
U1RSTkxFTgorQUNfRlVOQ19TVFJUT0QKK0FDX0NIRUNLX0ZVTkNTKFsgXAorICAgICAgICAgICAg
ICAgIGFsYXJtIGF0ZXhpdCBiemVybyBjbG9ja19nZXR0aW1lIGR1cDIgZmRhdGFzeW5jIGZ0cnVu
Y2F0ZSBcCisgICAgICAgICAgICAgICAgZ2V0Y3dkIGdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUg
Z2V0cGFnZXNpemUgZ2V0dGltZW9mZGF5IFwKKyAgICAgICAgICAgICAgICBpbmV0X250b2EgaXNh
c2NpaSBsb2NhbHRpbWVfciBtZW1jaHIgbWVtbW92ZSBtZW1zZXQgbWtkaXIgXAorICAgICAgICAg
ICAgICAgIG1rZmlmbyBtdW5tYXAgcGF0aGNvbmYgcmVhbHBhdGggcmVnY29tcCBybWRpciBzZWxl
Y3Qgc2V0ZW52IFwKKyAgICAgICAgICAgICAgICBzb2NrZXQgc3RyY2FzZWNtcCBzdHJjaHIgc3Ry
Y3NwbiBzdHJkdXAgc3RyZXJyb3Igc3RybmR1cCBcCisgICAgICAgICAgICAgICAgc3RycGJyayBz
dHJyY2hyIHN0cnNwbiBzdHJzdHIgc3RydG9sIHN0cnRvdWwgc3RydG91bGwgdHpzZXQgXAorICAg
ICAgICAgICAgICAgIHVuYW1lIFwKKyAgICAgICAgICAgICAgICBdKQorCitBQ19PVVRQVVQoKQpk
aWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvZGVidWdnZXIvZ2Ric3gv
eGcvTWFrZWZpbGUKLS0tIGEvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcvTWFrZWZpbGUJTW9uIEph
biAwOSAxNjowMTo0NCAyMDEyICswMTAwCisrKyBiL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01h
a2VmaWxlCVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMjEsNyArMjEsNiBAQCB4
Z19hbGwuYTogJChYR19PQkpTKSBNYWtlZmlsZSAkKFhHX0hEUlMpCiAjCSQoQ0MpIC1tMzIgLWMg
LW8gJEAgJF4KIAogeGVuLWhlYWRlcnM6Ci0JJChNQUtFKSAtQyAuLi8uLi8uLi9jaGVjayAKIAkk
KE1BS0UpIC1DIC4uLy4uLy4uL2luY2x1ZGUKIAogIyB4Z19tYWluLm86IHhnX21haW4uYyBNYWtl
ZmlsZSAkKFhHX0hEUlMpCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29s
cy9pbnN0YWxsLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3Rvb2xzL2luc3RhbGwuc2gJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBA
IC0wLDAgKzEsMSBAQAorLi4vaW5zdGFsbC5zaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL2xpYmZzaW1hZ2UvTWFr
ZWZpbGUKLS0tIGEvdG9vbHMvbGliZnNpbWFnZS9NYWtlZmlsZQlNb24gSmFuIDA5IDE2OjAxOjQ0
IDIwMTIgKzAxMDAKKysrIGIvdG9vbHMvbGliZnNpbWFnZS9NYWtlZmlsZQlUdWUgSmFuIDEwIDE5
OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTIsNyArMiwxMSBAQCBYRU5fUk9PVCA9ICQoQ1VSRElSKS8u
Li8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiBTVUJESVJTLXkgPSBj
b21tb24gdWZzIHJlaXNlcmZzIGlzbzk2NjAgZmF0IHpmcyB4ZnMKLVNVQkRJUlMteSArPSAkKHNo
ZWxsIGVudiBDQz0iJChDQykiIC4vY2hlY2stbGliZXh0MmZzKQoraWZlcSAoJChDT05GSUdfRVhU
MkZTKSwgeSkKKyAgICBTVUJESVJTLXkgKz0gZXh0MmZzLWxpYgorZWxzZQorICAgIFNVQkRJUlMt
eSArPSBleHQyZnMKK2VuZGlmCiAKIC5QSE9OWTogYWxsIGNsZWFuIGluc3RhbGwKIGFsbCBjbGVh
biBpbnN0YWxsOiAlOiBzdWJkaXJzLSUKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0
MTllIHRvb2xzL2xpYmZzaW1hZ2UvY2hlY2stbGliZXh0MmZzCi0tLSBhL3Rvb2xzL2xpYmZzaW1h
Z2UvY2hlY2stbGliZXh0MmZzCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMSArMCwwIEBACi0j
IS9iaW4vc2gKLQotY2F0ID5leHQyLXRlc3QuYyA8PEVPRgotI2luY2x1ZGUgPGV4dDJmcy9leHQy
ZnMuaD4KLQotaW50IG1haW4oKQotewotCWV4dDJmc19vcGVuMjsKLX0KLUVPRgotCi0ke0NDLWdj
Y30gLW8gZXh0Mi10ZXN0IGV4dDItdGVzdC5jIC1sZXh0MmZzID4vZGV2L251bGwgMj4mMQotaWYg
WyAkPyA9IDAgXTsgdGhlbgotCWVjaG8gZXh0MmZzLWxpYgotZWxzZQotCWVjaG8gZXh0MmZzCi1m
aQotCi1ybSAtZiBleHQyLXRlc3QgZXh0Mi10ZXN0LmMKLQotZXhpdCAwCmRpZmYgLXIgNWIyNjc2
YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9saWJ4ZW4vTWFrZWZpbGUKLS0tIGEvdG9vbHMv
bGlieGVuL01ha2VmaWxlCU1vbiBKYW4gMDkgMTY6MDE6NDQgMjAxMiArMDEwMAorKysgYi90b29s
cy9saWJ4ZW4vTWFrZWZpbGUJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0yMiwx
MiArMjIsMTIgQEAgTUFKT1IgPSAxLjAKIE1JTk9SID0gMAogCiBDRkxBR1MgKz0gLUlpbmNsdWRl
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICQoc2hlbGwgeG1sMi1jb25maWcgLS1j
ZmxhZ3MpIFwKLSAgICAgICAgICAkKHNoZWxsIGN1cmwtY29uZmlnIC0tY2ZsYWdzKSBcCisgICAg
ICAgICAgJChzaGVsbCAkKFhNTDJfQ09ORklHKSAtLWNmbGFncykgXAorICAgICAgICAgICQoc2hl
bGwgJChDVVJMX0NPTkZJRykgLS1jZmxhZ3MpIFwKICAgICAgICAgICAtZlBJQwogCi1MREZMQUdT
ICs9ICQoc2hlbGwgeG1sMi1jb25maWcgLS1saWJzKSBcCi0gICAgICAgICAgICQoc2hlbGwgY3Vy
bC1jb25maWcgLS1saWJzKQorTERGTEFHUyArPSAkKHNoZWxsICQoWE1MMl9DT05GSUcpIC0tbGli
cykgXAorICAgICAgICAgICAkKHNoZWxsICQoQ1VSTF9DT05GSUcpIC0tbGlicykKIAogTElCWEVO
QVBJX0hEUlMgPSAkKHdpbGRjYXJkIGluY2x1ZGUveGVuL2FwaS8qLmgpIGluY2x1ZGUveGVuL2Fw
aS94ZW5fYWxsLmgKIExJQlhFTkFQSV9PQkpTID0gJChwYXRzdWJzdCAlLmMsICUubywgJCh3aWxk
Y2FyZCBzcmMvKi5jKSkKZGlmZiAtciA1YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xz
L200L2RlZmF1bHRfbGliLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3Rvb2xzL200L2RlZmF1bHRfbGliLm00CVR1ZSBKYW4gMTAgMTk6MTM6MDEg
MjAxMiArMDEwMApAQCAtMCwwICsxLDggQEAKK0FDX0RFRlVOKFtBWF9ERUZBVUxUX0xJQl0sCitb
QVNfSUYoW3Rlc3QgLWQgIiRwcmVmaXgvbGliNjQiXSwgWworICAgIExJQl9QQVRIPSJsaWI2NCIK
K10sWworICAgIExJQl9QQVRIPSJsaWIiCitdKQorQUNfU1VCU1QoTElCX1BBVEgpXSkKKwpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvZGlzYWJsZV9mZWF0dXJl
Lm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rv
b2xzL200L2Rpc2FibGVfZmVhdHVyZS5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAK
QEAgLTAsMCArMSwxMyBAQAorQUNfREVGVU4oW0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlRdLAor
W0FDX0FSR19FTkFCTEUoWyQxXSwKKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLSQxXSwg
WyQyXSkpCisKK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieG5vIl0sIFsKKyAgICBheF9j
dl8kMT0ibiIKK10sIFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieHllcyJdLCBbCisgICAgYXhfY3Zf
JDE9InkiCitdLCBbdGVzdCAteiAkYXhfY3ZfJDFdLCBbCisgICAgYXhfY3ZfJDE9InkiCitdKQor
JDE9JGF4X2N2XyQxCitBQ19TVUJTVCgkMSldKQpkaWZmIC1yIDViMjY3NmFjMTMyMSAtciA2ZmRl
MDE3YzQxOWUgdG9vbHMvbTQvZW5hYmxlX2ZlYXR1cmUubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvZW5hYmxlX2ZlYXR1cmUubTQJ
VHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVO
KFtBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlRdLAorW0FDX0FSR19FTkFCTEUoWyQxXSwKKyAgICBB
U19IRUxQX1NUUklORyhbLS1lbmFibGUtJDFdLCBbJDJdKSkKKworQVNfSUYoW3Rlc3QgIngkZW5h
YmxlXyQxIiA9ICJ4eWVzIl0sIFsKKyAgICBheF9jdl8kMT0ieSIKK10sIFt0ZXN0ICJ4JGVuYWJs
ZV8kMSIgPSAieG5vIl0sIFsKKyAgICBheF9jdl8kMT0ibiIKK10sIFt0ZXN0IC16ICRheF9jdl8k
MV0sIFsKKyAgICBheF9jdl8kMT0ibiIKK10pCiskMT0kYXhfY3ZfJDEKK0FDX1NVQlNUKCQxKV0p
CmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9tNC9vY2FtbC5tNAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9t
NC9vY2FtbC5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSwyNDEg
QEAKK2RubCBhdXRvY29uZiBtYWNyb3MgZm9yIE9DYW1sCitkbmwgZnJvbSBodHRwOi8vZm9yZ2Uu
b2NhbWxjb3JlLm9yZy8KK2RubAorZG5sIENvcHlyaWdodCDCqSAyMDA5ICAgICAgUmljaGFyZCBX
Lk0uIEpvbmVzCitkbmwgQ29weXJpZ2h0IMKpIDIwMDkgICAgICBTdGVmYW5vIFphY2NoaXJvbGkK
K2RubCBDb3B5cmlnaHQgwqkgMjAwMC0yMDA1IE9saXZpZXIgQW5kcmlldQorZG5sIENvcHlyaWdo
dCDCqSAyMDAwLTIwMDUgSmVhbi1DaHJpc3RvcGhlIEZpbGxpw6J0cmUKK2RubCBDb3B5cmlnaHQg
wqkgMjAwMC0yMDA1IEdlb3JnZXMgTWFyaWFubworZG5sCitkbmwgRm9yIGRvY3VtZW50YXRpb24s
IHBsZWFzZSByZWFkIHRoZSBvY2FtbC5tNCBtYW4gcGFnZS4KKworQUNfREVGVU4oW0FDX1BST0df
T0NBTUxdLAorW2RubAorICAjIGNoZWNraW5nIGZvciBvY2FtbGMKKyAgQUNfQ0hFQ0tfVE9PTChb
T0NBTUxDXSxbb2NhbWxjXSxbbm9dKQorCisgIGlmIHRlc3QgIiRPQ0FNTEMiICE9ICJubyI7IHRo
ZW4KKyAgICAgT0NBTUxWRVJTSU9OPWAkT0NBTUxDIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lv
biogKlwoLipcKSR8XDF8cCdgCisgICAgIEFDX01TR19SRVNVTFQoW09DYW1sIHZlcnNpb24gaXMg
JE9DQU1MVkVSU0lPTl0pCisgICAgICMgSWYgT0NBTUxMSUIgaXMgc2V0LCB1c2UgaXQKKyAgICAg
aWYgdGVzdCAiJE9DQU1MTElCIiA9ICIiOyB0aGVuCisgICAgICAgIE9DQU1MTElCPWAkT0NBTUxD
IC13aGVyZSAyPi9kZXYvbnVsbCB8fCAkT0NBTUxDIC12fHRhaWwgLTF8Y3V0IC1kICcgJyAtZiA0
YAorICAgICBlbHNlCisgICAgICAgIEFDX01TR19SRVNVTFQoW09DQU1MTElCIHByZXZpb3VzbHkg
c2V0OyBwcmVzZXJ2aW5nIGl0Ll0pCisgICAgIGZpCisgICAgIEFDX01TR19SRVNVTFQoW09DYW1s
IGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUJdKQorCisgICAgIEFDX1NVQlNUKFtPQ0FNTFZFUlNJ
T05dKQorICAgICBBQ19TVUJTVChbT0NBTUxMSUJdKQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9j
YW1sb3B0CisgICAgIEFDX0NIRUNLX1RPT0woW09DQU1MT1BUXSxbb2NhbWxvcHRdLFtub10pCisg
ICAgIE9DQU1MQkVTVD1ieXRlCisgICAgIGlmIHRlc3QgIiRPQ0FNTE9QVCIgPSAibm8iOyB0aGVu
CisJQUNfTVNHX1dBUk4oW0Nhbm5vdCBmaW5kIG9jYW1sb3B0OyBieXRlY29kZSBjb21waWxhdGlv
biBvbmx5Ll0pCisgICAgIGVsc2UKKwlUTVBWRVJTSU9OPWAkT0NBTUxPUFQgLXYgfCBzZWQgLW4g
LWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJyBgCisJaWYgdGVzdCAiJFRNUFZFUlNJT04i
ICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRoZW4KKwkgICAgQUNfTVNHX1JFU1VMVChbdmVyc2lvbnMg
ZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxvcHQgZGlzY2FyZGVkLl0pCisJICAgIE9DQU1MT1BU
PW5vCisJZWxzZQorCSAgICBPQ0FNTEJFU1Q9b3B0CisJZmkKKyAgICAgZmkKKworICAgICBBQ19T
VUJTVChbT0NBTUxCRVNUXSkKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbGMub3B0CisgICAg
IEFDX0NIRUNLX1RPT0woW09DQU1MQ0RPVE9QVF0sW29jYW1sYy5vcHRdLFtub10pCisgICAgIGlm
IHRlc3QgIiRPQ0FNTENET1RPUFQiICE9ICJubyI7IHRoZW4KKwlUTVBWRVJTSU9OPWAkT0NBTUxD
RE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCWlm
IHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgIEFDX01T
R19SRVNVTFQoW3ZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sYy5vcHQgZGlzY2Fy
ZGVkLl0pCisJZWxzZQorCSAgICBPQ0FNTEM9JE9DQU1MQ0RPVE9QVAorCWZpCisgICAgIGZpCisK
KyAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxvcHQub3B0CisgICAgIGlmIHRlc3QgIiRPQ0FNTE9Q
VCIgIT0gIm5vIiA7IHRoZW4KKwlBQ19DSEVDS19UT09MKFtPQ0FNTE9QVERPVE9QVF0sW29jYW1s
b3B0Lm9wdF0sW25vXSkKKwlpZiB0ZXN0ICIkT0NBTUxPUFRET1RPUFQiICE9ICJubyI7IHRoZW4K
KwkgICBUTVBWRVJTSU9OPWAkT0NBTUxPUFRET1RPUFQgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJz
aW9uKiAqXCguKlwpJHxcMXxwJyBgCisJICAgaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NB
TUxWRVJTSU9OIiA7IHRoZW4KKwkgICAgICBBQ19NU0dfUkVTVUxUKFt2ZXJzaW9uIGRpZmZlcnMg
ZnJvbSBvY2FtbGM7IG9jYW1sb3B0Lm9wdCBkaXNjYXJkZWQuXSkKKwkgICBlbHNlCisJICAgICAg
T0NBTUxPUFQ9JE9DQU1MT1BURE9UT1BUCisJICAgZmkKKyAgICAgICAgZmkKKyAgICAgZmkKKwor
ICAgICBBQ19TVUJTVChbT0NBTUxPUFRdKQorICBmaQorCisgIEFDX1NVQlNUKFtPQ0FNTENdKQor
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sIHRvcGxldmVsCisgIEFDX0NIRUNLX1RPT0woW09DQU1M
XSxbb2NhbWxdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxkZXAKKyAgQUNfQ0hFQ0tf
VE9PTChbT0NBTUxERVBdLFtvY2FtbGRlcF0sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2Ft
bG1rdG9wCisgIEFDX0NIRUNLX1RPT0woW09DQU1MTUtUT1BdLFtvY2FtbG1rdG9wXSxbbm9dKQor
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sbWtsaWIKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxNS0xJ
Ql0sW29jYW1sbWtsaWJdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxkb2MKKyAgQUNf
Q0hFQ0tfVE9PTChbT0NBTUxET0NdLFtvY2FtbGRvY10sW25vXSkKKworICAjIGNoZWNraW5nIGZv
ciBvY2FtbGJ1aWxkCisgIEFDX0NIRUNLX1RPT0woW09DQU1MQlVJTERdLFtvY2FtbGJ1aWxkXSxb
bm9dKQorXSkKKworCitBQ19ERUZVTihbQUNfUFJPR19PQ0FNTExFWF0sCitbZG5sCisgICMgY2hl
Y2tpbmcgZm9yIG9jYW1sbGV4CisgIEFDX0NIRUNLX1RPT0woW09DQU1MTEVYXSxbb2NhbWxsZXhd
LFtub10pCisgIGlmIHRlc3QgIiRPQ0FNTExFWCIgIT0gIm5vIjsgdGhlbgorICAgIEFDX0NIRUNL
X1RPT0woW09DQU1MTEVYRE9UT1BUXSxbb2NhbWxsZXgub3B0XSxbbm9dKQorICAgIGlmIHRlc3Qg
IiRPQ0FNTExFWERPVE9QVCIgIT0gIm5vIjsgdGhlbgorCU9DQU1MTEVYPSRPQ0FNTExFWERPVE9Q
VAorICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFtPQ0FNTExFWF0pCitdKQorCitBQ19ERUZVTihb
QUNfUFJPR19PQ0FNTFlBQ0NdLAorW2RubAorICBBQ19DSEVDS19UT09MKFtPQ0FNTFlBQ0NdLFtv
Y2FtbHlhY2NdLFtub10pCisgIEFDX1NVQlNUKFtPQ0FNTFlBQ0NdKQorXSkKKworCitBQ19ERUZV
TihbQUNfUFJPR19DQU1MUDRdLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlk
bmwKKworICAjIGNoZWNraW5nIGZvciBjYW1scDQKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0XSxb
Y2FtbHA0XSxbbm9dKQorICBpZiB0ZXN0ICIkQ0FNTFA0IiAhPSAibm8iOyB0aGVuCisgICAgIFRN
UFZFUlNJT049YCRDQU1MUDQgLXYgMj4mMXwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiAqXCguKlwp
JHxcMXxwJ2AKKyAgICAgaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7
IHRoZW4KKwlBQ19NU0dfUkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjXSkKKyAg
ICAgICAgQ0FNTFA0PW5vCisgICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFtDQU1MUDRdKQorCisg
ICMgY2hlY2tpbmcgZm9yIGNvbXBhbmlvbiB0b29scworICBBQ19DSEVDS19UT09MKFtDQU1MUDRC
T09UXSxbY2FtbHA0Ym9vdF0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0T10sW2NhbWxw
NG9dLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9GXSxbY2FtbHA0b2ZdLFtub10pCisg
IEFDX0NIRUNLX1RPT0woW0NBTUxQNE9PRl0sW2NhbWxwNG9vZl0sW25vXSkKKyAgQUNfQ0hFQ0tf
VE9PTChbQ0FNTFA0T1JGXSxbY2FtbHA0b3JmXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1M
UDRQUk9GXSxbY2FtbHA0cHJvZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0Ul0sW2Nh
bWxwNHJdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNFJGXSxbY2FtbHA0cmZdLFtub10p
CisgIEFDX1NVQlNUKFtDQU1MUDRCT09UXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9dKQorICBBQ19T
VUJTVChbQ0FNTFA0T0ZdKQorICBBQ19TVUJTVChbQ0FNTFA0T09GXSkKKyAgQUNfU1VCU1QoW0NB
TUxQNE9SRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRQUk9GXSkKKyAgQUNfU1VCU1QoW0NBTUxQNFJd
KQorICBBQ19TVUJTVChbQ0FNTFA0UkZdKQorXSkKKworCitBQ19ERUZVTihbQUNfUFJPR19GSU5E
TElCXSwKK1tkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisKKyAgIyBjaGVj
a2luZyBmb3Igb2NhbWxmaW5kCisgIEFDX0NIRUNLX1RPT0woW09DQU1MRklORF0sW29jYW1sZmlu
ZF0sW25vXSkKKyAgQUNfU1VCU1QoW09DQU1MRklORF0pCitdKQorCisKK2RubCBUaGFua3MgdG8g
SmltIE1leWVyaW5nIGZvciB3b3JraW5nIHRoaXMgbmV4dCBiaXQgb3V0IGZvciB1cy4KK2RubCBY
WFggV2Ugc2hvdWxkIGRlZmluZSBBU19UUl9TSCBpZiBpdCdzIG5vdCBkZWZpbmVkIGFscmVhZHkK
K2RubCAoZWcuIGZvciBvbGQgYXV0b2NvbmYpLgorQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX1BL
R10sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfRklORExJQl0pZG5sCisKKyAgQUNfTVNH
X0NIRUNLSU5HKFtmb3IgT0NhbWwgZmluZGxpYiBwYWNrYWdlICQxXSkKKworICB1bnNldCBmb3Vu
ZAorICB1bnNldCBwa2cKKyAgZm91bmQ9bm8KKyAgZm9yIHBrZyBpbiAkMSAkMiA7IGRvCisgICAg
aWYgJE9DQU1MRklORCBxdWVyeSAkcGtnID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAg
ICAgIEFDX01TR19SRVNVTFQoW2ZvdW5kXSkKKyAgICAgIEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFd
KT0kcGtnCisgICAgICBmb3VuZD15ZXMKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBp
ZiB0ZXN0ICIkZm91bmQiID0gIm5vIiA7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91
bmRdKQorICAgIEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFdKT1ubworICBmaQorCisgIEFDX1NVQlNU
KEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFdKSkKK10pCisKKworQUNfREVGVU4oW0FDX0NIRUNLX09D
QU1MX01PRFVMRV0sCitbZG5sCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9DYW1sIG1vZHVsZSAk
Ml0pCisKKyAgY2F0ID4gY29uZnRlc3QubWwgPDxFT0YKK29wZW4gJDMKK0VPRgorICB1bnNldCBm
b3VuZAorICBmb3IgJDEgaW4gJCQxICQ0IDsgZG8KKyAgICBpZiAkT0NBTUxDIC1jIC1JICIkJDEi
IGNvbmZ0ZXN0Lm1sID4mNSAyPiY1IDsgdGhlbgorICAgICAgZm91bmQ9eWVzCisgICAgICBicmVh
aworICAgIGZpCisgIGRvbmUKKworICBpZiB0ZXN0ICIkZm91bmQiIDsgdGhlbgorICAgIEFDX01T
R19SRVNVTFQoWyQkMV0pCisgIGVsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91bmRdKQor
ICAgICQxPW5vCisgIGZpCisgIEFDX1NVQlNUKFskMV0pCitdKQorCisKK2RubCBYWFggQ3Jvc3Mt
Y29tcGlsaW5nCitBQ19ERUZVTihbQUNfQ0hFQ0tfT0NBTUxfV09SRF9TSVpFXSwKK1tkbmwKKyAg
QUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9D
YW1sIGNvbXBpbGVyIHdvcmQgc2l6ZV0pCisgIGNhdCA+IGNvbmZ0ZXN0Lm1sIDw8RU9GCisgIHBy
aW50X2VuZGxpbmUgKHN0cmluZ19vZl9pbnQgU3lzLndvcmRfc2l6ZSkKKyAgRU9GCisgIE9DQU1M
X1dPUkRfU0laRT1gJE9DQU1MIGNvbmZ0ZXN0Lm1sYAorICBBQ19NU0dfUkVTVUxUKFskT0NBTUxf
V09SRF9TSVpFXSkKKyAgQUNfU1VCU1QoW09DQU1MX1dPUkRfU0laRV0pCitdKQorCitBQ19ERUZV
TihbQUNfQ0hFQ0tfT0NBTUxfT1NfVFlQRV0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0df
T0NBTUxdKWRubAorICBBQ19NU0dfQ0hFQ0tJTkcoW09DYW1sIFN5cy5vc190eXBlXSkKKworICBj
YXQgPiBjb25mdGVzdC5tbCA8PEVPRgorICBwcmludF9zdHJpbmcoU3lzLm9zX3R5cGUpOzsKK0VP
RgorCisgIE9DQU1MX09TX1RZUEU9YCRPQ0FNTCBjb25mdGVzdC5tbGAKKyAgQUNfTVNHX1JFU1VM
VChbJE9DQU1MX09TX1RZUEVdKQorICBBQ19TVUJTVChbT0NBTUxfT1NfVFlQRV0pCitdKQpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvcGF0aF9vcl9mYWlsLm00
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xz
L200L3BhdGhfb3JfZmFpbC5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAKQEAgLTAs
MCArMSw2IEBACitBQ19ERUZVTihbQVhfUEFUSF9QUk9HX09SX0ZBSUxdLAorW0FDX1BBVEhfUFJP
RyhbJDFdLCBbJDJdLCBbbm9dKQoraWYgdGVzdCB4IiR7JDF9IiA9PSB4Im5vIiAKK3RoZW4KKyAg
ICBBQ19NU0dfRVJST1IoW1VuYWJsZSB0byBmaW5kICQyLCBwbGVhc2UgaW5zdGFsbCAkMl0pCitm
aV0pCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9tNC9weXRob25f
ZGV2ZWwubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIvdG9vbHMvbTQvcHl0aG9uX2RldmVsLm00CVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEw
MApAQCAtMCwwICsxLDE4IEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX0RFVkVMXSwKK1tB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gZGV2ZWxdKQorCitgJFBZVEhPTiAtYyAnCitpbXBv
cnQgb3MucGF0aCwgc3lzCitmb3IgcCBpbiBzeXMucGF0aDoKKyAgICBpZiBvcy5wYXRoLmV4aXN0
cyhwICsgIi9jb25maWcvTWFrZWZpbGUiKToKKyAgICAgICAgc3lzLmV4aXQoMCkKK3N5cy5leGl0
KDEpCisnID4gL2Rldi9udWxsIDI+JjFgCisKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAg
ICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNHX0VSUk9SKFtQeXRob24gZGV2ZWwgcGFj
a2FnZSBub3QgZm91bmRdKQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRp
ZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB0b29scy9tNC9weXRob25fdmVyc2lv
bi5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90
b29scy9tNC9weXRob25fdmVyc2lvbi5tNAlUdWUgSmFuIDEwIDE5OjEzOjAxIDIwMTIgKzAxMDAK
QEAgLTAsMCArMSwxMiBAQAorQUNfREVGVU4oW0FYX0NIRUNLX1BZVEhPTl9WRVJTSU9OXSwKK1tB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gdmVyc2lvbiA+PSAkMS4kMiBdKQorYCRQWVRIT04g
LWMgJ2ltcG9ydCBzeXM7IGV4aXQoZXZhbCgic3lzLnZlcnNpb25faW5mbyA8ICgkMSwgJDIpIikp
J2AKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBweXRob25fdmVyc2lvbj1gJFBZVEhP
TiAtViAyPiYxYAorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfRVJST1IoCisg
ICAgICAgIFskcHl0aG9uX3ZlcnNpb24gaXMgdG9vIG9sZCwgbWluaW11bSByZXF1aXJlZCB2ZXJz
aW9uIGlzICQxLiQyXSkKK2Vsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZm
IC1yIDViMjY3NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvcHl0aG9uX3htbC5tNAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9t
NC9weXRob25feG1sLm00CVR1ZSBKYW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsx
LDEwIEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX1hNTF0sCitbQUNfTVNHX0NIRUNLSU5H
KFtmb3IgcHl0aG9uIHhtbC5kb20ubWluaWRvbV0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHhtbC5k
b20ubWluaWRvbSdgCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgQUNfTVNHX1JFU1VM
VChbbm9dKQorICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGZpbmQgeG1sLmRvbS5taW5pZG9t
IG1vZHVsZV0pCitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciA1
YjI2NzZhYzEzMjEgLXIgNmZkZTAxN2M0MTllIHRvb2xzL200L3NldF9jZmxhZ3NfbGRmbGFncy5t
NAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29s
cy9tNC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTQJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAw
CkBAIC0wLDAgKzEsMjAgQEAKK0FDX0RFRlVOKFtBWF9TRVRfRkxBR1NdLAorW2ZvciBjZmxhZyBp
biAkUFJFUEVORF9JTkNMVURFUworZG8KKyAgICBQUkVQRU5EX0NGTEFHUys9IiAtSSRjZmxhZyIK
K2RvbmUKK2ZvciBsZGZsYWcgaW4gJFBSRVBFTkRfTElCCitkbworICAgIFBSRVBFTkRfTERGTEFH
Uys9IiAtTCRsZGZsYWciCitkb25lCitmb3IgY2ZsYWcgaW4gJEFQUEVORF9JTkNMVURFUworZG8K
KyAgICBBUFBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBpbiAkQVBQ
RU5EX0xJQgorZG8KKyAgICBBUFBFTkRfTERGTEFHUys9IiAtTCRsZGZsYWciCitkb25lCitDRkxB
R1M9IiRQUkVQRU5EX0NGTEFHUyAkQ0ZMQUdTICRBUFBFTkRfQ0ZMQUdTIgorTERGTEFHUz0iJFBS
RVBFTkRfTERGTEFHUyAkTERGTEFHUyAkQVBQRU5EX0xERkxBR1MiXSkKKwpkaWZmIC1yIDViMjY3
NmFjMTMyMSAtciA2ZmRlMDE3YzQxOWUgdG9vbHMvbTQvdWRldi5tNAotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC91ZGV2Lm00CVR1ZSBK
YW4gMTAgMTk6MTM6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDMyIEBACitBQ19ERUZVTihbQVhf
Q0hFQ0tfVURFVl0sCitbaWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxpbnV4LWdudSIKK3RoZW4K
KyAgICBBQ19QQVRIX1BST0coW1VERVZBRE1dLCBbdWRldmFkbV0sIFtub10pCisgICAgaWYgdGVz
dCB4IiR7VURFVkFETX0iID09IHgibm8iIAorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9H
KFtVREVWSU5GT10sIFt1ZGV2aW5mb10sIFtub10pCisgICAgICAgIGlmIHRlc3QgeCIke1VERVZJ
TkZPfSIgPT0geCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKAor
ICAgICAgICAgICAgICAgIFtVbmFibGUgdG8gZmluZCB1ZGV2YWRtIG9yIHVkZXZpbmZvLCBwbGVh
c2UgaW5zdGFsbCB1ZGV2XSkKKyAgICAgICAgZmkKKyAgICAgICAgdWRldnZlcj1gJHtVREVWSU5G
T30gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKKyAgICBlbHNlCisgICAgICAgIHVkZXZ2ZXI9YCR7
VURFVkFETX0gaW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGZpCisgICAgaWYgdGVz
dCAke3VkZXZ2ZXJ9IC1sdCA1OQorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9HKFtIT1RQ
TFVHXSwgW2hvdHBsdWddLCBbbm9dKQorICAgICAgICBpZiB0ZXN0IHgiJHtIT1RQTFVHfSIgPT0g
eCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFt1ZGV2IGlzIHRv
byBvbGQsIHVwZ3JhZGUgdG8gdmVyc2lvbiA1OSBvciBsYXRlcl0pCisgICAgICAgIGZpCisgICAg
ZmkKK2Vsc2UKKyAgICBBQ19QQVRIX1BST0coW1ZOQ09ORklHXSwgW3ZuY29uZmlnXSwgW25vXSkK
KyAgICBpZiB0ZXN0IHgiJHtWTkNPTkZJR30iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICBB
Q19NU0dfRVJST1IoW05vdCBhIExpbnV4IHN5c3RlbSBhbmQgdW5hYmxlIHRvIGZpbmQgdm5kXSkK
KyAgICBmaQorZmkKK10pCmRpZmYgLXIgNWIyNjc2YWMxMzIxIC1yIDZmZGUwMTdjNDE5ZSB2ZXJz
aW9uLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3ZlcnNpb24uc2gJVHVlIEphbiAxMCAxOToxMzowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsNCBA
QAorIyEvYmluL3NoCitNQUpPUj1gZ3JlcCAiZXhwb3J0IFhFTl9WRVJTSU9OIiAkMSB8IHNlZCAn
cy8uKj0vL2cnIHwgdHIgLXMgIiAiYAorTUlOT1I9YGdyZXAgImV4cG9ydCBYRU5fU1VCVkVSU0lP
TiIgJDEgfCBzZWQgJ3MvLio9Ly9nJyB8IHRyIC1zICIgImAKK3ByaW50ZiAiJWQuJWQiICRNQUpP
UiAkTUlOT1IKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbQpodHRw
Oi8vbGlzdHMueGVuc291cmNlLmNvbS94ZW4tZGV2ZWwK

From xen-devel-bounces@lists.xensource.com Wed Feb 01 10:13:26 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Feb 2012 10:13:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RsXBt-0002ml-NT; Wed, 01 Feb 2012 10:13:25 +0000
Received: from mail21.messagelabs.com ([85.158.143.35])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Leonid.Kalev@ca.com>) id 1RqSo9-00005z-Sn
	for xen-devel@lists.xensource.com; Thu, 26 Jan 2012 17:08:22 +0000
X-Env-Sender: Leonid.Kalev@ca.com
X-Msg-Ref: server-16.tower-21.messagelabs.com!1327597690!3791187!1
X-Originating-IP: [74.125.149.149]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27268 invoked from network); 26 Jan 2012 17:08:12 -0000
Received: from na3sys009aog123.obsmtp.com (HELO na3sys009aog123.obsmtp.com)
	(74.125.149.149)
	by server-16.tower-21.messagelabs.com with DHE-RSA-AES256-SHA encrypted
	SMTP; 26 Jan 2012 17:08:12 -0000
Received: from USILMS190.ca.com ([141.202.246.44]) (using TLSv1) by
	na3sys009aob123.postini.com ([74.125.148.12]) with SMTP
	ID DSNKTyGIeZ7PlfGkFgzMmEeWOzhch6wByKnX@postini.com;
	Thu, 26 Jan 2012 09:08:12 PST
Received: from USILMS174.ca.com (141.202.6.24) by USILMS190.ca.com
	(141.202.246.44) with Microsoft SMTP Server (TLS) id 14.1.355.2;
	Thu, 26 Jan 2012 12:08:08 -0500
Received: from USILMS111A.ca.com ([169.254.3.121]) by usilms174.ca.com
	([141.202.6.24]) with mapi id 14.01.0355.002;
	Thu, 26 Jan 2012 12:08:08 -0500
From: "Kalev, Leonid" <Leonid.Kalev@ca.com>
To: xen-devel <xen-devel@lists.xensource.com>
Thread-Topic: Help needed debugging "EPT Misconfiguration" exception on
	Intel CPU
Thread-Index: AQHM3E0SU3wUxrG6pEq0yWH/vYcRvQ==
Date: Thu, 26 Jan 2012 17:08:07 +0000
Message-ID: <4F218876.8090606@ca.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
user-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.24)
	Gecko/20111108 Lightning/1.0b2 Thunderbird/3.1.16
x-originating-ip: [81.218.169.161]
Content-Type: multipart/mixed; boundary="_002_4F2188768090606cacom_"
MIME-Version: 1.0
X-Mailman-Approved-At: Wed, 01 Feb 2012 10:12:42 +0000
Subject: [Xen-devel] Help needed debugging "EPT Misconfiguration" exception
	on Intel CPU
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

--_002_4F2188768090606cacom_
Content-Type: text/plain; charset="utf-8"
Content-ID: <677AA049BF78EE438FE88BCBCBB47015@ca.com>
Content-Transfer-Encoding: base64

KG5vdGUsIHBsZWFzZSBzZW5kIGEgY29weSBvZiByZXBsaWVzIHRvIG15IGUtbWFpbCwgSSBhbSBu
b3Qgc3Vic2NyaWJlZCB0byB0aGUgDQp4ZW4tZGV2ZWwgbGlzdCkNCg0KQmVmb3JlIEkgZ2V0IGlu
dG8gZGV0YWlscyBhYm91dCB0aGUgcHJvYmxlbTogSSB0cmllZCB0byBpZGVudGlmeSB0aGUgQ1BV
IGFzIHByZWNpc2VseSANCmFzIHBvc3NpYmxlIChpbiBjYXNlIHRoZXJlIGFyZSBrbm93biBwcm9i
bGVtcyB3aXRoIHRoZSBzcGVjaWZpYyBtb2RlbCksIGJ1dCB3aGF0IEkgDQpmb3VuZCBpbiB0aGUg
Q1BVIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIChhcyByZXBvcnRlZCBieSB0aGUgJ2NwdWlk
JyBpbnN0cnVjdGlvbikgDQpzZWVtcyBzdHJhbmdlOiB1bmxpa2UgbW9zdCBJbnRlbCBDUFVzIHRo
YXQgcmVwb3J0IGEgc2Vuc2libGUgbW9kZWwgbmFtZSwgd2hpY2ggDQpnZW5lcmFsbHkgbWF0Y2hl
cyB0aGUgY29tbWVyY2lhbCBuYW1lIG9mIHRoZSBDUFUsIChlLmcuICJJbnRlbChSKSBDb3JlKFRN
KSBpNSBDUFUiKSwgDQpvbiB0aGUgc2VydmVyIHdoZXJlIEkgY2F1Z2h0IHRoZSBFUFQgZXhjZXB0
aW9uLCB0aGUgQ1BVIG1vZGVsIHN0cmluZyByZWFkczoNCiJHZW51aW5lIEludGVsKFIpIENQVSAg
ICAgICAgICAgQCAwMDAwIEAgMi40MEdIeiINCg0KVGhpcyBkb2VzIG5vdCBsb29rIGxpa2UgYW55
IENQVSB0aGF0IEludGVsIHNlbGxzLiBUaGUgZmFtaWx5LCBtb2RlbCBhbmQgc3RlcHBpbmcgDQpu
dW1iZXJzIGFyZSA2IDI2IGFuZCAyLCByZXNwZWN0aXZlbHkuIEkgZGlkIG5vdCBmaW5kIGFueSBy
ZWZlcmVuY2UgdG8gdGhpcyBwYXJ0aWN1bGFyIA0KY29tYmluYXRpb24gb2YgbW9kZWwgSUQgbnVt
YmVycywgZXhjZXB0IGluIGp1c3Qgb25lIG9yIHR3byBmb3J1bSBwb3N0cyBvbiB0aGUgV2ViLCAN
CnJlZmVycmluZyB0byB0aGUgc2FtZSBub24tZGVzY3JpcHQgbW9kZWwgc3RyaW5nIHF1b3RlZCBh
Ym92ZS4gT25lIG9mIHRoZSBwb3N0cyBldmVuIA0Kc3VnZ2VzdGVkIHRoYXQgdGhpcyBtaWdodCBi
ZSBhIG5vbi1wcm9kdWN0aW9uIENQVSBjaGlwOiANCmh0dHA6Ly93d3cuc3Bpbmljcy5uZXQvbGlz
dHMva3ZtL21zZzU4MjU4Lmh0bWwNCg0KTm93LCB0byB0aGUgcHJvYmxlbSBpdHNlbGY6DQphdHRl
bXB0aW5nIHRvIHN0YXJ0IGEgaGFyZHdhcmUtYXNzaXN0ZWQgdmlydHVhbCBtYWNoaW5lIChIVk0p
IG9uIFhFTiA0LjEuMSBjYXVzZXMgdGhlIA0KZ3Vlc3QgVk0gdG8gY3Jhc2ggaW5zdGFudGx5IG9u
IHN0YXJ0dXAuIFRoZSBjcmFzaCBpcyBjYXVzZWQgYnkgYSBWTSBleGl0IHRoYXQgaXMgbm90IA0K
aGFuZGxlZCBieSBYRU4gKGFuZCB3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCBpbiBhbnkgd2F5IG90
aGVyIHRoYW4gZGVzdHJveWluZyB0aGUgDQpndWVzdCBWTSk6IHRoZSBWTSBleGl0IHJlYXNvbiBp
cyA0OSAoMHgzMSksIHdoaWNoIGlzICJFUFQgTWlzY29uZmlndXJhdGlvbiIuDQoNCkFjY29yZGlu
ZyB0byB0aGUgSW50ZWwgU29mdHdhcmUgRGV2ZWxvcGVyIE1hbnVhbCAoVm9sIDNCLCBDaGFwdGVy
IDI1IC0gVk1YIFNVUFBPUlQgDQpGT1IgQUREUkVTUyBUUkFOU0xBVElPTiksIHRoaXMgVk0gZXhp
dCBtZWFucyB0aGF0IGFuIGludmFsaWQgdmFsdWUgd2FzIGZvdW5kIGluIHRoZSANCmV4dGVuZGVk
IHBhZ2UgdGFibGVzLiBTdXNwZWN0aW5nIGEgc29mdHdhcmUgcHJvYmxlbSwgSSBtb2RpZmllZCB0
aGUgWEVOIGh5cGVydmlzb3IgdG8gDQpwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMg
Zm9sbG93czoNCi0gcmVhZCBhbmQgZGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIEVQVFAgVk0gY29u
dHJvbCBmaWVsZA0KLSByZWFkIGFuZCBkaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgIkd1ZXN0LXBo
eXNpY2FsIGFkZHJlc3MiIGNvbnRyb2wgZmllbGQgKEdQQSkNCi0gdXNlIHRoZSBndWVzdC1waHlz
aWNhbCBhZGRyZXNzIHZhbHVlIHRvIHRyYXZlcnNlIHRoZSBFUFQgc3RydWN0dXJlcyBhbmQgZGlz
cGxheQ0KICAgIGFsbCA0IGxldmVscyBvZiBwYWdlIHRhYmxlIGVudHJpZXMgdGhhdCBwZXJ0YWlu
IHRvIHRoZSBHUEEgcmVwb3J0ZWQgYnkgdGhlIENQVS4NCg0KSSB3YXMgbm90IGFibGUgdG8gZmlu
ZCBhbnkgZXJyb3IgaW4gdGhlIEVQVFAgdmFsdWUsIG5vciBpbiB0aGUgRVBUIHRhYmxlIGVudHJp
ZXMsIA0KdGhleSBhbGwgc2VlbSB0byBiZSB2YWxpZC4gQmVsb3csIEkgYW0gaW5jbHVkaW5nOg0K
LSB0aGUgZGVidWcgaW5mb3JtYXRpb24gZGlzcGxheWVkIGJ5IFhFTiAod2l0aCB0aGUgYWRkaXRp
b25hbCBpbnN0cnVtZW50YXRpb24NCiAgICB0aGF0IEkgYWRkZWQpLCB3aXRoIHNvbWUgYml0LWZp
ZWxkIGFuYWx5c2lzIHRoYXQgSSBkaWQgbWFudWFsbHkgKHNob3dpbmcgbm8NCiAgICBwcm9ibGVt
cyBpbiB0aGUgRVBUIGVudHJpZXMpDQotIHRoZSBDUFUgaW5mb3JtYXRpb24gKHhtIGluZm8gYW5k
IC9wcm9jL2NwdWluZm8pDQotIG1lbW9yeSBtYXAgZnJvbSBCSU9TDQoNCkFsc28sIHRoZSBkZXRh
aWxlZCBETUkgaW5mbyBmcm9tIEJJT1MgaXMgYXR0YWNoZWQgYXMgYSB0ZXh0IGZpbGUgKGl0IGRv
ZXNuJ3Qgc2hvdyANCmFueXRoaW5nIGRpZmZlcmVudCBhYm91dCB0aGUgQ1BVLCB0aG91Z2gpLg0K
DQo9PT09PT09PT09PT09IFhFTiBjb25zb2xlIGxvZywgd2l0aCBjb21tZW50cyBmcm9tIG1lID09
PT09PT09PT09PT09PT09PT09PT09PT09DQooWEVOKSBFUFQgTWlzY29uZmlndXJhdGlvbiwgZ3Bh
PTAwMDAwMDAwZmVmZmUwMDANCihYRU4pIGRvbWFpbi0+Li4uLT5lcHRwICAgPSAweDQzMWIzZDAx
ZQ0KKFhFTikgdm1yZWFkKEVQVF9QT0lOVEVSKSA9IDB4NDMxYjNkMDFlDQoNCiAgICBFUFRQIGJp
dHM6DQogICAgMC0yICAgPSA2OyBtZW0gdHlwZSAoMCA9IFVDLCA2PVdCLCBhbGwgb3RoZXIgPSBp
bnZhbGlkKQ0KICAgIDUtMyAgID0gMyAoc2hvdWxkIGJlID0gMyAod2FsayBsZW5ndGggLSAxKSkN
CiAgICA2LTExICA9IDAgcmVzZXJ2ZWQNCiAgICAxMi0zOSA9IDB4NDMxYjNkOyBhZGRyIG9mIEVQ
VCBQTUw0DQogICAgNDAtNjQgPSAwIDsgcmVzZXJ2ZWQgKDQwIGlzIHRoZSBhZGRyIHN6IG9mIHRo
ZSBDUFUgaGVyZSwgbWF5IHZhcnkgb24gb3RoZXIgQ1BVcywgDQptYXg9NDgpDQoNCihYRU4pIHAy
bS1lcHQuYzo2NDk6ZDMgV2Fsa2luZyBFUFQgdGFibGVzIGZvciBkb21haW4gMyBnZm4gZmVmZmUN
CihYRU4pIHAybS1lcHQuYzo2Njg6ZDMgIGVwdGUgMWMwMDAwMDQzMWIzYzAwNw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC0yID0gNzogYWNjZXNzIGFs
bG93ZWQ6IHJ3eA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy03ID0gMDogcmVzZXJ2ZWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDgtMTEgPSAw
OiBpZ25vcmVkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4LTEyID0gNDMxYjNjOiBhZGRyZXNzIG9mIG5leHQgbGV2ZWwgRVBUDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MS14IC0gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgNTItNjMg
LSBpZ25vcmVkDQooWEVOKSBwMm0tZXB0LmM6NjY4OmQzICBlcHRlIDFjMDAwMDA0Mzc0ZmIwMDcN
CihYRU4pIHAybS1lcHQuYzo2Njg6ZDMgIGVwdGUgMWMwMDAwMDQzNzRmYTAwNw0KKFhFTikgcDJt
LWVwdC5jOjY2ODpkMyAgZXB0ZSAxYzEwMDAwYzIxM2VlMDM3IDAtMiA9IDc6IHJ3eA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMDAwMDAgKG5iOiBhZGRyIHNpemUg
bGltaXQgLSA0MCBiaXRzIGZvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMgQ1BVLCB3ZSdyZSB3YXkgYmVsb3cpDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLTUgPSA2OiB0eXBlICgwID0gVUM7IDEg
PSBXQzsgNCA9IFdUOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNSA9IFdQOyA2ID0gV0IpDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICA2ICAgPSAwOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgNy0xMSA9MDogKGlnbm9yZWQp
DQogICAgICAgICAgICAgICAgICAgICAgICAgICBtZm49YzIxM2VlLCAobG9va3MgdmFsaWQsIG1l
bSBleHRlbmRzIGZyb20gMTAwMDAwIHRvIA0KYzQwMDAwLCBzZWUgbWVtIG1hcCBiZWxvdykNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUyPTE7ICA1Mi02MyBzaG91bGQgYmUgaWdub3JlZA0K
DQooWEVOKSBkb21haW5fY3Jhc2ggY2FsbGVkIGZyb20gdm14LmM6MjY1MA0KKFhFTikgRG9tYWlu
IDMgKHZjcHUjMCkgY3Jhc2hlZCBvbiBjcHUjMTU6DQooWEVOKSAtLS0tWyBYZW4tNC4xLjEgIHg4
Nl82NCAgZGVidWc9biAgTm90IHRhaW50ZWQgXS0tLS0NCihYRU4pIENQVTogICAgMTUNCihYRU4p
IFJJUDogICAgMDAwMDpbPDAwMDAwMDAwMDAwMDAwMDA+XQ0KKFhFTikgUkZMQUdTOiAwMDAwMDAw
MDAwMDEwMDAyICAgQ09OVEVYVDogaHZtIGd1ZXN0DQooWEVOKSByYXg6IDAwMDAwMDAwMDAwMDAw
MDEgICByYng6IDAwMDAwMDAwMDAwMDAwMDAgICByY3g6IDAwMDAwMDAwMDAwMDAwMDANCihYRU4p
IHJkeDogMDAwMDAwMDAwMDAwMDAwMCAgIHJzaTogMDAwMDAwMDAwMDAwMDAwMCAgIHJkaTogMDAw
MDAwMDAwMDAwMDAwMA0KKFhFTikgcmJwOiAwMDAwMDAwMDAwMDAwMDAwICAgcnNwOiAwMDAwMDAw
MDAwMDAwMDAwICAgcjg6ICAwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSByOTogIDAwMDAwMDAwMDAw
MDAwMDAgICByMTA6IDAwMDAwMDAwMDAwMDAwMDAgICByMTE6IDAwMDAwMDAwMDAwMDAwMDANCihY
RU4pIHIxMjogMDAwMDAwMDAwMDAwMDAwMCAgIHIxMzogMDAwMDAwMDAwMDAwMDAwMCAgIHIxNDog
MDAwMDAwMDAwMDAwMDAwMA0KKFhFTikgcjE1OiAwMDAwMDAwMDAwMDAwMDAwICAgY3IwOiAwMDAw
MDAwMDAwMDAwMDExICAgY3I0OiAwMDAwMDAwMDAwMDAwMDAwDQooWEVOKSBjcjM6IDAwMDAwMDAw
MDAwMDAwMDAgICBjcjI6IDAwMDAwMDAwMDAwMDAwMDANCihYRU4pIGRzOiAwMDAwICAgZXM6IDAw
MDAgICBmczogMDAwMCAgIGdzOiAwMDAwICAgc3M6IDAwMDAgICBjczogMDAwMA0KDQogICAgICBD
UjAgPSAweDEwID0gUEUrRVQNCiAgICAgIFJGTEFHUyA9IFJGICsgMiAoMiBpcyBhbHdheXMgc2V0
KQ0KDQo9PT09PT09PT09PT09IHN5c3RlbSBpbmZvIGZyb20gWEVOID09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCiMgeG0gaW5mbw0KaG9zdCAgICAgICAgICAgICAgICAgICA6IDN0ZXJhLXNy
djENCnJlbGVhc2UgICAgICAgICAgICAgICAgOiAzLjAuNC00MC54ZW4wDQp2ZXJzaW9uICAgICAg
ICAgICAgICAgIDogIzEgU01QIFdlZCBEZWMgMTQgMTk6NDg6MDMgRVNUIDIwMTENCm1hY2hpbmUg
ICAgICAgICAgICAgICAgOiBpNjg2DQpucl9jcHVzICAgICAgICAgICAgICAgIDogMTYNCm5yX25v
ZGVzICAgICAgICAgICAgICAgOiAyDQpjb3Jlc19wZXJfc29ja2V0ICAgICAgIDogNA0KdGhyZWFk
c19wZXJfY29yZSAgICAgICA6IDINCmNwdV9taHogICAgICAgICAgICAgICAgOiAyNDAwDQpod19j
YXBzICAgICAgICAgICAgICAgIDogDQpiZmViZmJmZjoyODEwMDgwMDowMDAwMDAwMDowMDAwM2I0
MDowMGJjZTNiZDowMDAwMDAwMDowMDAwMDAwMTowMDAwMDAwMA0KdmlydF9jYXBzICAgICAgICAg
ICAgICA6IGh2bQ0KdG90YWxfbWVtb3J5ICAgICAgICAgICA6IDQ5MTQyDQpmcmVlX21lbW9yeSAg
ICAgICAgICAgIDogNDc0ODcNCmZyZWVfY3B1cyAgICAgICAgICAgICAgOiAwDQp4ZW5fbWFqb3Ig
ICAgICAgICAgICAgIDogNA0KeGVuX21pbm9yICAgICAgICAgICAgICA6IDENCnhlbl9leHRyYSAg
ICAgICAgICAgICAgOiAuMQ0KeGVuX2NhcHMgICAgICAgICAgICAgICA6IHhlbi0zLjAteDg2XzY0
IHhlbi0zLjAteDg2XzMycCBodm0tMy4wLXg4Nl8zMiANCmh2bS0zLjAteDg2XzMycCBodm0tMy4w
LXg4Nl82NA0KeGVuX3NjaGVkdWxlciAgICAgICAgICA6IGNyZWRpdA0KeGVuX3BhZ2VzaXplICAg
ICAgICAgICA6IDQwOTYNCnBsYXRmb3JtX3BhcmFtcyAgICAgICAgOiB2aXJ0X3N0YXJ0PTB4ZmNj
MDAwMDANCnhlbl9jaGFuZ2VzZXQgICAgICAgICAgOiB1bmF2YWlsYWJsZQ0KeGVuX2NvbW1hbmRs
aW5lICAgICAgICA6IG5vaHQgaW9tbXU9b2ZmIGRvbTBfdmNwdXNfcGluIGRvbTBfbWF4X3ZjcHVz
PTEgZG9tMF9tZW09Nzg2NDMyDQpjY19jb21waWxlciAgICAgICAgICAgIDogZ2NjIHZlcnNpb24g
NC4xLjEgMjAwNzAxMDUgKFJlZCBIYXQgNC4xLjEtNTIpDQpjY19jb21waWxlX2J5ICAgICAgICAg
IDogM3RlcmENCmNjX2NvbXBpbGVfZG9tYWluICAgICAgOiAobm9uZSkNCmNjX2NvbXBpbGVfZGF0
ZSAgICAgICAgOiBNb24gSmFuIDIzIDA2OjExOjQ3IFBTVCAyMDEyDQp4ZW5kX2NvbmZpZ19mb3Jt
YXQgICAgIDogNA0KDQo9PT09PT09PT09PT09IENQVSBpbmZvICgvcHJvYy9jcHVpbmZvLCBmcm9t
IERvbTAgLSBmbGFncyBhcmUgZmlsdGVyZWQgYnkgWEVOKQ0KIyBjYXQgL3Byb2MvY3B1aW5mbw0K
cHJvY2Vzc29yICAgIDogMA0KdmVuZG9yX2lkICAgIDogR2VudWluZUludGVsDQpjcHUgZmFtaWx5
ICAgIDogNg0KbW9kZWwgICAgICAgIDogMjYNCm1vZGVsIG5hbWUgICAgOiBHZW51aW5lIEludGVs
KFIpIENQVSAgICAgICAgICAgQCAwMDAwIEAgMi40MEdIeg0Kc3RlcHBpbmcgICAgOiAyDQpjcHUg
TUh6ICAgICAgICA6IDI0MDAuMTEyDQpjYWNoZSBzaXplICAgIDogODE5MiBLQg0KcGh5c2ljYWwg
aWQgICAgOiAwDQpzaWJsaW5ncyAgICA6IDENCmNvcmUgaWQgICAgICAgIDogMA0KY3B1IGNvcmVz
ICAgIDogMQ0KYXBpY2lkICAgICAgICA6IDANCmluaXRpYWwgYXBpY2lkICAgIDogMA0KZmRpdl9i
dWcgICAgOiBubw0KaGx0X2J1ZyAgICAgICAgOiBubw0KZjAwZl9idWcgICAgOiBubw0KY29tYV9i
dWcgICAgOiBubw0KZnB1ICAgICAgICA6IHllcw0KZnB1X2V4Y2VwdGlvbiAgICA6IHllcw0KY3B1
aWQgbGV2ZWwgICAgOiAxMQ0Kd3AgICAgICAgIDogeWVzDQpmbGFncyAgICAgICAgOiBmcHUgZGUg
dHNjIG1zciBwYWUgY3g4IGFwaWMgc2VwIGNtb3YgcGF0IGNsZmx1c2ggYWNwaSBtbXggZnhzciBz
c2UgDQpzc2UyIHNzIGh0IG54IGxtIGNvbnN0YW50X3RzYyB1cCBub25zdG9wX3RzYyBhcGVyZm1w
ZXJmIHBuaSBlc3Qgc3NzZTMgc3NlNF8xIHNzZTRfMiANCngyYXBpYyBwb3BjbnQgaHlwZXJ2aXNv
ciBpZGEgZHRzDQpib2dvbWlwcyAgICA6IDQ4MDAuMjINCmNsZmx1c2ggc2l6ZSAgICA6IDY0DQpj
YWNoZV9hbGlnbm1lbnQgICAgOiA2NA0KYWRkcmVzcyBzaXplcyAgICA6IDQwIGJpdHMgcGh5c2lj
YWwsIDQ4IGJpdHMgdmlydHVhbA0KcG93ZXIgbWFuYWdlbWVudDoNCg0KPT09PT09PT09PT09PSBC
SU9TIG1lbW9yeSBtYXAsIGFzIHNob3duIGJ5IFhFTiBvbiBib290ID09PT09PT09PT09PT09PT09
PT09PT09PT09DQooWEVOKSBYZW4tZTgyMCBSQU0gbWFwOg0KKFhFTikgIDAwMDAwMDAwMDAwMDAw
MDAgLSAwMDAwMDAwMDAwMDljYzAwICh1c2FibGUpDQooWEVOKSAgMDAwMDAwMDAwMDA5Y2MwMCAt
IDAwMDAwMDAwMDAwYTAwMDAgKHJlc2VydmVkKQ0KKFhFTikgIDAwMDAwMDAwMDAwZTYwMDAgLSAw
MDAwMDAwMDAwMTAwMDAwIChyZXNlcnZlZCkNCihYRU4pICAwMDAwMDAwMDAwMTAwMDAwIC0gMDAw
MDAwMDBiZjc2MDAwMCAodXNhYmxlKQ0KKFhFTikgIDAwMDAwMDAwYmY3NmUwMDAgLSAwMDAwMDAw
MGJmNzcwMDAwIHR5cGUgOQ0KKFhFTikgIDAwMDAwMDAwYmY3NzAwMDAgLSAwMDAwMDAwMGJmNzdl
MDAwIChBQ1BJIGRhdGEpDQooWEVOKSAgMDAwMDAwMDBiZjc3ZTAwMCAtIDAwMDAwMDAwYmY3ZDAw
MDAgKEFDUEkgTlZTKQ0KKFhFTikgIDAwMDAwMDAwYmY3ZDAwMDAgLSAwMDAwMDAwMGJmN2UwMDAw
IChyZXNlcnZlZCkNCihYRU4pICAwMDAwMDAwMGJmN2VjMDAwIC0gMDAwMDAwMDBjMDAwMDAwMCAo
cmVzZXJ2ZWQpDQooWEVOKSAgMDAwMDAwMDBlMDAwMDAwMCAtIDAwMDAwMDAwZjAwMDAwMDAgKHJl
c2VydmVkKQ0KKFhFTikgIDAwMDAwMDAwZmVlMDAwMDAgLSAwMDAwMDAwMGZlZTAxMDAwIChyZXNl
cnZlZCkNCihYRU4pICAwMDAwMDAwMGZmYzAwMDAwIC0gMDAwMDAwMDEwMDAwMDAwMCAocmVzZXJ2
ZWQpDQooWEVOKSAgMDAwMDAwMDEwMDAwMDAwMCAtIDAwMDAwMDBjNDAwMDAwMDAgKHVzYWJsZSkN
Cg0KLS0gDQpMZW9uaWQgS2FsZXYNCkNBIFRlY2hub2xvZ2llcw0KUHJpbmNpcGFsIFNvZnR3YXJl
IEVuZ2luZWVyDQpUZWw6ICAgICArOTcyIDQgODI1IDM5NTINCk1vYmlsZTogICs5NzIgNTQgNDYz
MTUwOA0KTGVvbmlkLkthbGV2QGNhLmNvbQ0KDQoNCmRtaWRlY29kZS1lcHRmYWlsDQoNCiMgZG1p
ZGVjb2RlIDIuMTANClNNQklPUyAyLjYgcHJlc2VudC4NCjQ0IHN0cnVjdHVyZXMgb2NjdXB5aW5n
IDI1NDkgYnl0ZXMuDQpUYWJsZSBhdCAweDAwMDlFQzAwLg0KDQpIYW5kbGUgMHgwMDAwLCBETUkg
dHlwZSAwLCAyNCBieXRlcw0KQklPUyBJbmZvcm1hdGlvbg0KCVZlbmRvcjogQW1lcmljYW4gTWVn
YXRyZW5kcyBJbmMuDQoJVmVyc2lvbjogMDgwMDE2DQoJUmVsZWFzZSBEYXRlOiAwMi8xMS8yMDEx
DQoJQWRkcmVzczogMHhGMDAwMA0KCVJ1bnRpbWUgU2l6ZTogNjQga0INCglST00gU2l6ZTogNDA5
NiBrQg0KCUNoYXJhY3RlcmlzdGljczoNCgkJSVNBIGlzIHN1cHBvcnRlZA0KCQlQQ0kgaXMgc3Vw
cG9ydGVkDQoJCVBOUCBpcyBzdXBwb3J0ZWQNCgkJQklPUyBpcyB1cGdyYWRlYWJsZQ0KCQlCSU9T
IHNoYWRvd2luZyBpcyBhbGxvd2VkDQoJCUVTQ0Qgc3VwcG9ydCBpcyBhdmFpbGFibGUNCgkJQm9v
dCBmcm9tIENEIGlzIHN1cHBvcnRlZA0KCQlTZWxlY3RhYmxlIGJvb3QgaXMgc3VwcG9ydGVkDQoJ
CUJJT1MgUk9NIGlzIHNvY2tldGVkDQoJCUVERCBpcyBzdXBwb3J0ZWQNCgkJNS4yNSIvMS4yIE1C
IGZsb3BweSBzZXJ2aWNlcyBhcmUgc3VwcG9ydGVkIChpbnQgMTNoKQ0KCQkzLjUiLzcyMCBrQiBm
bG9wcHkgc2VydmljZXMgYXJlIHN1cHBvcnRlZCAoaW50IDEzaCkNCgkJMy41Ii8yLjg4IE1CIGZs
b3BweSBzZXJ2aWNlcyBhcmUgc3VwcG9ydGVkIChpbnQgMTNoKQ0KCQlQcmludCBzY3JlZW4gc2Vy
dmljZSBpcyBzdXBwb3J0ZWQgKGludCA1aCkNCgkJODA0MiBrZXlib2FyZCBzZXJ2aWNlcyBhcmUg
c3VwcG9ydGVkIChpbnQgOWgpDQoJCVNlcmlhbCBzZXJ2aWNlcyBhcmUgc3VwcG9ydGVkIChpbnQg
MTRoKQ0KCQlQcmludGVyIHNlcnZpY2VzIGFyZSBzdXBwb3J0ZWQgKGludCAxN2gpDQoJCUNHQS9t
b25vIHZpZGVvIHNlcnZpY2VzIGFyZSBzdXBwb3J0ZWQgKGludCAxMGgpDQoJCUFDUEkgaXMgc3Vw
cG9ydGVkDQoJCVVTQiBsZWdhY3kgaXMgc3VwcG9ydGVkDQoJCUxTLTEyMCBib290IGlzIHN1cHBv
cnRlZA0KCQlBVEFQSSBaaXAgZHJpdmUgYm9vdCBpcyBzdXBwb3J0ZWQNCgkJQklPUyBib290IHNw
ZWNpZmljYXRpb24gaXMgc3VwcG9ydGVkDQoJCVRhcmdldGVkIGNvbnRlbnQgZGlzdHJpYnV0aW9u
IGlzIHN1cHBvcnRlZA0KCUJJT1MgUmV2aXNpb246IDguMTYNCg0KSGFuZGxlIDB4MDAwMSwgRE1J
IHR5cGUgMSwgMjcgYnl0ZXMNClN5c3RlbSBJbmZvcm1hdGlvbg0KCU1hbnVmYWN0dXJlcjogU3Vw
ZXJtaWNybw0KCVByb2R1Y3QgTmFtZTogWDhEVFQtSA0KCVZlcnNpb246IDEyMzQ1Njc4OTANCglT
ZXJpYWwgTnVtYmVyOiAxMjM0NTY3ODkwDQoJVVVJRDogNTQ0NDM4NTgtNEU1NC0zMDAwLTQ4RjQt
MDAzMDQ4RjQxNzcwDQoJV2FrZS11cCBUeXBlOiBQb3dlciBTd2l0Y2gNCglTS1UgTnVtYmVyOiAx
MjM0NTY3ODkwDQoJRmFtaWx5OiBTZXJ2ZXINCg0KSGFuZGxlIDB4MDAwMiwgRE1JIHR5cGUgMiwg
MTUgYnl0ZXMNCkJhc2UgQm9hcmQgSW5mb3JtYXRpb24NCglNYW51ZmFjdHVyZXI6IFN1cGVybWlj
cm8NCglQcm9kdWN0IE5hbWU6IFg4RFRULUgNCglWZXJzaW9uOiAxLjMNCglTZXJpYWwgTnVtYmVy
OiAxMjM0NTY3ODkwDQoJQXNzZXQgVGFnOiAxMjM0NTY3ODkwDQoJRmVhdHVyZXM6DQoJCUJvYXJk
IGlzIGEgaG9zdGluZyBib2FyZA0KCQlCb2FyZCBpcyByZXBsYWNlYWJsZQ0KCUxvY2F0aW9uIElu
IENoYXNzaXM6IDEyMzQ1Njc4OTANCglDaGFzc2lzIEhhbmRsZTogMHgwMDAzDQoJVHlwZTogTW90
aGVyYm9hcmQNCglDb250YWluZWQgT2JqZWN0IEhhbmRsZXM6IDANCg0KSGFuZGxlIDB4MDAwMywg
RE1JIHR5cGUgMywgMjEgYnl0ZXMNCkNoYXNzaXMgSW5mb3JtYXRpb24NCglNYW51ZmFjdHVyZXI6
IFN1cGVybWljcm8NCglUeXBlOiBNYWluIFNlcnZlciBDaGFzc2lzDQoJTG9jazogTm90IFByZXNl
bnQNCglWZXJzaW9uOiAxMjM0NTY3ODkwDQoJU2VyaWFsIE51bWJlcjogMTIzNDU2Nzg5MC4NCglB
c3NldCBUYWc6IFRvIEJlIEZpbGxlZCBCeSBPLkUuTS4NCglCb290LXVwIFN0YXRlOiBTYWZlDQoJ
UG93ZXIgU3VwcGx5IFN0YXRlOiBTYWZlDQoJVGhlcm1hbCBTdGF0ZTogU2FmZQ0KCVNlY3VyaXR5
IFN0YXR1czogTm9uZQ0KCU9FTSBJbmZvcm1hdGlvbjogMHgwMDAwMDAwMA0KCUhlaWdodDogVW5z
cGVjaWZpZWQNCglOdW1iZXIgT2YgUG93ZXIgQ29yZHM6IDENCglDb250YWluZWQgRWxlbWVudHM6
IDANCg0KSGFuZGxlIDB4MDAwNCwgRE1JIHR5cGUgNCwgNDIgYnl0ZXMNClByb2Nlc3NvciBJbmZv
cm1hdGlvbg0KCVNvY2tldCBEZXNpZ25hdGlvbjogQ1BVIDENCglUeXBlOiBDZW50cmFsIFByb2Nl
c3Nvcg0KCUZhbWlseTogWGVvbg0KCU1hbnVmYWN0dXJlcjogSW50ZWwNCglJRDogQTIgMDYgMDEg
MDAgRkYgRkIgRUIgQkYNCglTaWduYXR1cmU6IFR5cGUgMCwgRmFtaWx5IDYsIE1vZGVsIDI2LCBT
dGVwcGluZyAyDQoJRmxhZ3M6DQoJCUZQVSAoRmxvYXRpbmctcG9pbnQgdW5pdCBvbi1jaGlwKQ0K
CQlWTUUgKFZpcnR1YWwgbW9kZSBleHRlbnNpb24pDQoJCURFIChEZWJ1Z2dpbmcgZXh0ZW5zaW9u
KQ0KCQlQU0UgKFBhZ2Ugc2l6ZSBleHRlbnNpb24pDQoJCVRTQyAoVGltZSBzdGFtcCBjb3VudGVy
KQ0KCQlNU1IgKE1vZGVsIHNwZWNpZmljIHJlZ2lzdGVycykNCgkJUEFFIChQaHlzaWNhbCBhZGRy
ZXNzIGV4dGVuc2lvbikNCgkJTUNFIChNYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbikNCgkJQ1g4IChD
TVBYQ0hHOCBpbnN0cnVjdGlvbiBzdXBwb3J0ZWQpDQoJCUFQSUMgKE9uLWNoaXAgQVBJQyBoYXJk
d2FyZSBzdXBwb3J0ZWQpDQoJCVNFUCAoRmFzdCBzeXN0ZW0gY2FsbCkNCgkJTVRSUiAoTWVtb3J5
IHR5cGUgcmFuZ2UgcmVnaXN0ZXJzKQ0KCQlQR0UgKFBhZ2UgZ2xvYmFsIGVuYWJsZSkNCgkJTUNB
IChNYWNoaW5lIGNoZWNrIGFyY2hpdGVjdHVyZSkNCgkJQ01PViAoQ29uZGl0aW9uYWwgbW92ZSBp
bnN0cnVjdGlvbiBzdXBwb3J0ZWQpDQoJCVBBVCAoUGFnZSBhdHRyaWJ1dGUgdGFibGUpDQoJCVBT
RS0zNiAoMzYtYml0IHBhZ2Ugc2l6ZSBleHRlbnNpb24pDQoJCUNMRlNIIChDTEZMVVNIIGluc3Ry
dWN0aW9uIHN1cHBvcnRlZCkNCgkJRFMgKERlYnVnIHN0b3JlKQ0KCQlBQ1BJIChBQ1BJIHN1cHBv
cnRlZCkNCgkJTU1YIChNTVggdGVjaG5vbG9neSBzdXBwb3J0ZWQpDQoJCUZYU1IgKEZhc3QgZmxv
YXRpbmctcG9pbnQgc2F2ZSBhbmQgcmVzdG9yZSkNCgkJU1NFIChTdHJlYW1pbmcgU0lNRCBleHRl
bnNpb25zKQ0KCQlTU0UyIChTdHJlYW1pbmcgU0lNRCBleHRlbnNpb25zIDIpDQoJCVNTIChTZWxm
LXNub29wKQ0KCQlIVFQgKEh5cGVyLXRocmVhZGluZyB0ZWNobm9sb2d5KQ0KCQlUTSAoVGhlcm1h
bCBtb25pdG9yIHN1cHBvcnRlZCkNCgkJUEJFIChQZW5kaW5nIGJyZWFrIGVuYWJsZWQpDQoJVmVy
c2lvbjogR2VudWluZSBJbnRlbChSKSBDUFUgICAgICAgICAgIEAgMDAwMCBAIDIuNDBHSHoNCglW
b2x0YWdlOiBVbmtub3duDQoJRXh0ZXJuYWwgQ2xvY2s6IDEzMyBNSHoNCglNYXggU3BlZWQ6IDI0
MDAgTUh6DQoJQ3VycmVudCBTcGVlZDogMjQwMCBNSHoNCglTdGF0dXM6IFBvcHVsYXRlZCwgRW5h
YmxlZA0KCVVwZ3JhZGU6IE90aGVyDQoJTDEgQ2FjaGUgSGFuZGxlOiAweDAwMDUNCglMMiBDYWNo
ZSBIYW5kbGU6IDB4MDAwNg0KCUwzIENhY2hlIEhhbmRsZTogMHgwMDA3DQoJU2VyaWFsIE51bWJl
cjogVG8gQmUgRmlsbGVkIEJ5IE8uRS5NLg0KCUFzc2V0IFRhZzogVG8gQmUgRmlsbGVkIEJ5IE8u
RS5NLg0KCVBhcnQgTnVtYmVyOiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uDQoJQ29yZSBDb3VudDog
NA0KCUNvcmUgRW5hYmxlZDogNA0KCVRocmVhZCBDb3VudDogOA0KCUNoYXJhY3RlcmlzdGljczoN
CgkJNjQtYml0IGNhcGFibGUNCg0KSGFuZGxlIDB4MDAwNSwgRE1JIHR5cGUgNywgMTkgYnl0ZXMN
CkNhY2hlIEluZm9ybWF0aW9uDQoJU29ja2V0IERlc2lnbmF0aW9uOiBMMS1DYWNoZQ0KCUNvbmZp
Z3VyYXRpb246IEVuYWJsZWQsIE5vdCBTb2NrZXRlZCwgTGV2ZWwgMQ0KCU9wZXJhdGlvbmFsIE1v
ZGU6IFdyaXRlIFRocm91Z2gNCglMb2NhdGlvbjogSW50ZXJuYWwNCglJbnN0YWxsZWQgU2l6ZTog
MjU2IGtCDQoJTWF4aW11bSBTaXplOiAyNTYga0INCglTdXBwb3J0ZWQgU1JBTSBUeXBlczoNCgkJ
T3RoZXINCglJbnN0YWxsZWQgU1JBTSBUeXBlOiBPdGhlcg0KCVNwZWVkOiBVbmtub3duDQoJRXJy
b3IgQ29ycmVjdGlvbiBUeXBlOiBQYXJpdHkNCglTeXN0ZW0gVHlwZTogSW5zdHJ1Y3Rpb24NCglB
c3NvY2lhdGl2aXR5OiA0LXdheSBTZXQtYXNzb2NpYXRpdmUNCg0KSGFuZGxlIDB4MDAwNiwgRE1J
IHR5cGUgNywgMTkgYnl0ZXMNCkNhY2hlIEluZm9ybWF0aW9uDQoJU29ja2V0IERlc2lnbmF0aW9u
OiBMMi1DYWNoZQ0KCUNvbmZpZ3VyYXRpb246IEVuYWJsZWQsIE5vdCBTb2NrZXRlZCwgTGV2ZWwg
Mg0KCU9wZXJhdGlvbmFsIE1vZGU6IFdyaXRlIFRocm91Z2gNCglMb2NhdGlvbjogSW50ZXJuYWwN
CglJbnN0YWxsZWQgU2l6ZTogMTAyNCBrQg0KCU1heGltdW0gU2l6ZTogMTAyNCBrQg0KCVN1cHBv
cnRlZCBTUkFNIFR5cGVzOg0KCQlPdGhlcg0KCUluc3RhbGxlZCBTUkFNIFR5cGU6IE90aGVyDQoJ
U3BlZWQ6IFVua25vd24NCglFcnJvciBDb3JyZWN0aW9uIFR5cGU6IFNpbmdsZS1iaXQgRUNDDQoJ
U3lzdGVtIFR5cGU6IFVuaWZpZWQNCglBc3NvY2lhdGl2aXR5OiA4LXdheSBTZXQtYXNzb2NpYXRp
dmUNCg0KSGFuZGxlIDB4MDAwNywgRE1JIHR5cGUgNywgMTkgYnl0ZXMNCkNhY2hlIEluZm9ybWF0
aW9uDQoJU29ja2V0IERlc2lnbmF0aW9uOiBMMy1DYWNoZQ0KCUNvbmZpZ3VyYXRpb246IEVuYWJs
ZWQsIE5vdCBTb2NrZXRlZCwgTGV2ZWwgMw0KCU9wZXJhdGlvbmFsIE1vZGU6IFdyaXRlIEJhY2sN
CglMb2NhdGlvbjogSW50ZXJuYWwNCglJbnN0YWxsZWQgU2l6ZTogODE5MiBrQg0KCU1heGltdW0g
U2l6ZTogODE5MiBrQg0KCVN1cHBvcnRlZCBTUkFNIFR5cGVzOg0KCQlPdGhlcg0KCUluc3RhbGxl
ZCBTUkFNIFR5cGU6IE90aGVyDQoJU3BlZWQ6IFVua25vd24NCglFcnJvciBDb3JyZWN0aW9uIFR5
cGU6IFNpbmdsZS1iaXQgRUNDDQoJU3lzdGVtIFR5cGU6IFVuaWZpZWQNCglBc3NvY2lhdGl2aXR5
OiAxNi13YXkgU2V0LWFzc29jaWF0aXZlDQoNCkhhbmRsZSAweDAwMDgsIERNSSB0eXBlIDQsIDQy
IGJ5dGVzDQpQcm9jZXNzb3IgSW5mb3JtYXRpb24NCglTb2NrZXQgRGVzaWduYXRpb246IENQVSAy
DQoJVHlwZTogQ2VudHJhbCBQcm9jZXNzb3INCglGYW1pbHk6IFhlb24NCglNYW51ZmFjdHVyZXI6
IEludGVsDQoJSUQ6IEEyIDA2IDAxIDAwIEZGIEZCIEVCIEJGDQoJU2lnbmF0dXJlOiBUeXBlIDAs
IEZhbWlseSA2LCBNb2RlbCAyNiwgU3RlcHBpbmcgMg0KCUZsYWdzOg0KCQlGUFUgKEZsb2F0aW5n
LXBvaW50IHVuaXQgb24tY2hpcCkNCgkJVk1FIChWaXJ0dWFsIG1vZGUgZXh0ZW5zaW9uKQ0KCQlE
RSAoRGVidWdnaW5nIGV4dGVuc2lvbikNCgkJUFNFIChQYWdlIHNpemUgZXh0ZW5zaW9uKQ0KCQlU
U0MgKFRpbWUgc3RhbXAgY291bnRlcikNCgkJTVNSIChNb2RlbCBzcGVjaWZpYyByZWdpc3RlcnMp
DQoJCVBBRSAoUGh5c2ljYWwgYWRkcmVzcyBleHRlbnNpb24pDQoJCU1DRSAoTWFjaGluZSBjaGVj
ayBleGNlcHRpb24pDQoJCUNYOCAoQ01QWENIRzggaW5zdHJ1Y3Rpb24gc3VwcG9ydGVkKQ0KCQlB
UElDIChPbi1jaGlwIEFQSUMgaGFyZHdhcmUgc3VwcG9ydGVkKQ0KCQlTRVAgKEZhc3Qgc3lzdGVt
IGNhbGwpDQoJCU1UUlIgKE1lbW9yeSB0eXBlIHJhbmdlIHJlZ2lzdGVycykNCgkJUEdFIChQYWdl
IGdsb2JhbCBlbmFibGUpDQoJCU1DQSAoTWFjaGluZSBjaGVjayBhcmNoaXRlY3R1cmUpDQoJCUNN
T1YgKENvbmRpdGlvbmFsIG1vdmUgaW5zdHJ1Y3Rpb24gc3VwcG9ydGVkKQ0KCQlQQVQgKFBhZ2Ug
YXR0cmlidXRlIHRhYmxlKQ0KCQlQU0UtMzYgKDM2LWJpdCBwYWdlIHNpemUgZXh0ZW5zaW9uKQ0K
CQlDTEZTSCAoQ0xGTFVTSCBpbnN0cnVjdGlvbiBzdXBwb3J0ZWQpDQoJCURTIChEZWJ1ZyBzdG9y
ZSkNCgkJQUNQSSAoQUNQSSBzdXBwb3J0ZWQpDQoJCU1NWCAoTU1YIHRlY2hub2xvZ3kgc3VwcG9y
dGVkKQ0KCQlGWFNSIChGYXN0IGZsb2F0aW5nLXBvaW50IHNhdmUgYW5kIHJlc3RvcmUpDQoJCVNT
RSAoU3RyZWFtaW5nIFNJTUQgZXh0ZW5zaW9ucykNCgkJU1NFMiAoU3RyZWFtaW5nIFNJTUQgZXh0
ZW5zaW9ucyAyKQ0KCQlTUyAoU2VsZi1zbm9vcCkNCgkJSFRUIChIeXBlci10aHJlYWRpbmcgdGVj
aG5vbG9neSkNCgkJVE0gKFRoZXJtYWwgbW9uaXRvciBzdXBwb3J0ZWQpDQoJCVBCRSAoUGVuZGlu
ZyBicmVhayBlbmFibGVkKQ0KCVZlcnNpb246IEdlbnVpbmUgSW50ZWwoUikgQ1BVICAgICAgICAg
ICBAIDAwMDAgQCAyLjQwR0h6DQoJVm9sdGFnZTogVW5rbm93bg0KCUV4dGVybmFsIENsb2NrOiAx
MzMgTUh6DQoJTWF4IFNwZWVkOiAyNDAwIE1Ieg0KCUN1cnJlbnQgU3BlZWQ6IDI0MDAgTUh6DQoJ
U3RhdHVzOiBQb3B1bGF0ZWQsIEVuYWJsZWQNCglVcGdyYWRlOiBPdGhlcg0KCUwxIENhY2hlIEhh
bmRsZTogMHgwMDA5DQoJTDIgQ2FjaGUgSGFuZGxlOiAweDAwMEENCglMMyBDYWNoZSBIYW5kbGU6
IDB4MDAwQg0KCVNlcmlhbCBOdW1iZXI6IFRvIEJlIEZpbGxlZCBCeSBPLkUuTS4NCglBc3NldCBU
YWc6IFRvIEJlIEZpbGxlZCBCeSBPLkUuTS4NCglQYXJ0IE51bWJlcjogVG8gQmUgRmlsbGVkIEJ5
IE8uRS5NLg0KCUNvcmUgQ291bnQ6IDQNCglDb3JlIEVuYWJsZWQ6IDQNCglUaHJlYWQgQ291bnQ6
IDgNCglDaGFyYWN0ZXJpc3RpY3M6DQoJCTY0LWJpdCBjYXBhYmxlDQoNCkhhbmRsZSAweDAwMDks
IERNSSB0eXBlIDcsIDE5IGJ5dGVzDQpDYWNoZSBJbmZvcm1hdGlvbg0KCVNvY2tldCBEZXNpZ25h
dGlvbjogTDEtQ2FjaGUNCglDb25maWd1cmF0aW9uOiBFbmFibGVkLCBOb3QgU29ja2V0ZWQsIExl
dmVsIDENCglPcGVyYXRpb25hbCBNb2RlOiBXcml0ZSBUaHJvdWdoDQoJTG9jYXRpb246IEludGVy
bmFsDQoJSW5zdGFsbGVkIFNpemU6IDI1NiBrQg0KCU1heGltdW0gU2l6ZTogMjU2IGtCDQoJU3Vw
cG9ydGVkIFNSQU0gVHlwZXM6DQoJCU90aGVyDQoJSW5zdGFsbGVkIFNSQU0gVHlwZTogT3RoZXIN
CglTcGVlZDogVW5rbm93bg0KCUVycm9yIENvcnJlY3Rpb24gVHlwZTogUGFyaXR5DQoJU3lzdGVt
IFR5cGU6IEluc3RydWN0aW9uDQoJQXNzb2NpYXRpdml0eTogNC13YXkgU2V0LWFzc29jaWF0aXZl
DQoNCkhhbmRsZSAweDAwMEEsIERNSSB0eXBlIDcsIDE5IGJ5dGVzDQpDYWNoZSBJbmZvcm1hdGlv
bg0KCVNvY2tldCBEZXNpZ25hdGlvbjogTDItQ2FjaGUNCglDb25maWd1cmF0aW9uOiBFbmFibGVk
LCBOb3QgU29ja2V0ZWQsIExldmVsIDINCglPcGVyYXRpb25hbCBNb2RlOiBXcml0ZSBUaHJvdWdo
DQoJTG9jYXRpb246IEludGVybmFsDQoJSW5zdGFsbGVkIFNpemU6IDEwMjQga0INCglNYXhpbXVt
IFNpemU6IDEwMjQga0INCglTdXBwb3J0ZWQgU1JBTSBUeXBlczoNCgkJT3RoZXINCglJbnN0YWxs
ZWQgU1JBTSBUeXBlOiBPdGhlcg0KCVNwZWVkOiBVbmtub3duDQoJRXJyb3IgQ29ycmVjdGlvbiBU
eXBlOiBTaW5nbGUtYml0IEVDQw0KCVN5c3RlbSBUeXBlOiBVbmlmaWVkDQoJQXNzb2NpYXRpdml0
eTogOC13YXkgU2V0LWFzc29jaWF0aXZlDQoNCkhhbmRsZSAweDAwMEIsIERNSSB0eXBlIDcsIDE5
IGJ5dGVzDQpDYWNoZSBJbmZvcm1hdGlvbg0KCVNvY2tldCBEZXNpZ25hdGlvbjogTDMtQ2FjaGUN
CglDb25maWd1cmF0aW9uOiBFbmFibGVkLCBOb3QgU29ja2V0ZWQsIExldmVsIDMNCglPcGVyYXRp
b25hbCBNb2RlOiBXcml0ZSBCYWNrDQoJTG9jYXRpb246IEludGVybmFsDQoJSW5zdGFsbGVkIFNp
emU6IDgxOTIga0INCglNYXhpbXVtIFNpemU6IDgxOTIga0INCglTdXBwb3J0ZWQgU1JBTSBUeXBl
czoNCgkJT3RoZXINCglJbnN0YWxsZWQgU1JBTSBUeXBlOiBPdGhlcg0KCVNwZWVkOiBVbmtub3du
DQoJRXJyb3IgQ29ycmVjdGlvbiBUeXBlOiBTaW5nbGUtYml0IEVDQw0KCVN5c3RlbSBUeXBlOiBV
bmlmaWVkDQoJQXNzb2NpYXRpdml0eTogMTYtd2F5IFNldC1hc3NvY2lhdGl2ZQ0KDQpIYW5kbGUg
MHgwMDBDLCBETUkgdHlwZSA5LCAxNyBieXRlcw0KU3lzdGVtIFNsb3QgSW5mb3JtYXRpb24NCglE
ZXNpZ25hdGlvbjogUENJRTENCglUeXBlOiB4MTYgUENJIEV4cHJlc3MNCglDdXJyZW50IFVzYWdl
OiBBdmFpbGFibGUNCglMZW5ndGg6IExvbmcNCglJRDogMQ0KCUNoYXJhY3RlcmlzdGljczoNCgkJ
My4zIFYgaXMgcHJvdmlkZWQNCgkJT3BlbmluZyBpcyBzaGFyZWQNCgkJUE1FIHNpZ25hbCBpcyBz
dXBwb3J0ZWQNCg0KSGFuZGxlIDB4MDAwRCwgRE1JIHR5cGUgMTEsIDUgYnl0ZXMNCk9FTSBTdHJp
bmdzDQoJU3RyaW5nIDE6IFRvIEJlIEZpbGxlZCBCeSBPLkUuTS4NCglTdHJpbmcgMjogVG8gQmUg
RmlsbGVkIEJ5IE8uRS5NLg0KDQpIYW5kbGUgMHgwMDBFLCBETUkgdHlwZSAxNSwgNTUgYnl0ZXMN
ClN5c3RlbSBFdmVudCBMb2cNCglBcmVhIExlbmd0aDogMTAwOCBieXRlcw0KCUhlYWRlciBTdGFy
dCBPZmZzZXQ6IDB4MDgxMA0KCURhdGEgU3RhcnQgT2Zmc2V0OiAweDA4MTANCglBY2Nlc3MgTWV0
aG9kOiBHZW5lcmFsLXB1cnBvc2Ugbm9uLXZvbGF0aWxlIGRhdGEgZnVuY3Rpb25zDQoJQWNjZXNz
IEFkZHJlc3M6IDB4MDAwMQ0KCVN0YXR1czogVmFsaWQsIE5vdCBGdWxsDQoJQ2hhbmdlIFRva2Vu
OiAweDAwMDAwMDAwDQoJSGVhZGVyIEZvcm1hdDogTm8gSGVhZGVyDQoJU3VwcG9ydGVkIExvZyBU
eXBlIERlc2NyaXB0b3JzOiAxNQ0KCURlc2NyaXB0b3IgMTogU2luZ2xlLWJpdCBFQ0MgbWVtb3J5
IGVycm9yDQoJRGF0YSBGb3JtYXQgMTogTXVsdGlwbGUtZXZlbnQgaGFuZGxlDQoJRGVzY3JpcHRv
ciAyOiBNdWx0aS1iaXQgRUNDIG1lbW9yeSBlcnJvcg0KCURhdGEgRm9ybWF0IDI6IE11bHRpcGxl
LWV2ZW50IGhhbmRsZQ0KCURlc2NyaXB0b3IgMzogUGFyaXR5IG1lbW9yeSBlcnJvcg0KCURhdGEg
Rm9ybWF0IDM6IE11bHRpcGxlLWV2ZW50DQoJRGVzY3JpcHRvciA0OiBJL08gY2hhbm5lbCBibG9j
aw0KCURhdGEgRm9ybWF0IDQ6IE11bHRpcGxlLWV2ZW50DQoJRGVzY3JpcHRvciA1OiBQT1NUIGVy
cm9yDQoJRGF0YSBGb3JtYXQgNTogUE9TVCByZXN1bHRzIGJpdG1hcA0KCURlc2NyaXB0b3IgNjog
UENJIHBhcml0eSBlcnJvcg0KCURhdGEgRm9ybWF0IDY6IE11bHRpcGxlLWV2ZW50IGhhbmRsZQ0K
CURlc2NyaXB0b3IgNzogUENJIHN5c3RlbSBlcnJvcg0KCURhdGEgRm9ybWF0IDc6IE11bHRpcGxl
LWV2ZW50IGhhbmRsZQ0KCURlc2NyaXB0b3IgODogU3lzdGVtIGxpbWl0IGV4Y2VlZGVkDQoJRGF0
YSBGb3JtYXQgODogTXVsdGlwbGUtZXZlbnQgc3lzdGVtIG1hbmFnZW1lbnQNCglEZXNjcmlwdG9y
IDk6IE9FTS1zcGVjaWZpYw0KCURhdGEgRm9ybWF0IDk6IFBPU1QgcmVzdWx0cyBiaXRtYXANCglE
ZXNjcmlwdG9yIDEwOiBPRU0tc3BlY2lmaWMNCglEYXRhIEZvcm1hdCAxMDogTXVsdGlwbGUtZXZl
bnQgaGFuZGxlDQoJRGVzY3JpcHRvciAxMTogT0VNLXNwZWNpZmljDQoJRGF0YSBGb3JtYXQgMTE6
IE11bHRpcGxlLWV2ZW50IGhhbmRsZQ0KCURlc2NyaXB0b3IgMTI6IE9FTS1zcGVjaWZpYw0KCURh
dGEgRm9ybWF0IDEyOiBNdWx0aXBsZS1ldmVudCBoYW5kbGUNCglEZXNjcmlwdG9yIDEzOiBPRU0t
c3BlY2lmaWMNCglEYXRhIEZvcm1hdCAxMzogTXVsdGlwbGUtZXZlbnQgaGFuZGxlDQoJRGVzY3Jp
cHRvciAxNDogT0VNLXNwZWNpZmljDQoJRGF0YSBGb3JtYXQgMTQ6IE11bHRpcGxlLWV2ZW50IGhh
bmRsZQ0KCURlc2NyaXB0b3IgMTU6IE9FTS1zcGVjaWZpYw0KCURhdGEgRm9ybWF0IDE1OiBNdWx0
aXBsZS1ldmVudCBoYW5kbGUNCg0KSGFuZGxlIDB4MDAwRiwgRE1JIHR5cGUgMTYsIDE1IGJ5dGVz
DQpQaHlzaWNhbCBNZW1vcnkgQXJyYXkNCglMb2NhdGlvbjogU3lzdGVtIEJvYXJkIE9yIE1vdGhl
cmJvYXJkDQoJVXNlOiBTeXN0ZW0gTWVtb3J5DQoJRXJyb3IgQ29ycmVjdGlvbiBUeXBlOiBNdWx0
aS1iaXQgRUNDDQoJTWF4aW11bSBDYXBhY2l0eTogMzg0IEdCDQoJRXJyb3IgSW5mb3JtYXRpb24g
SGFuZGxlOiBOb3QgUHJvdmlkZWQNCglOdW1iZXIgT2YgRGV2aWNlczogMTINCg0KSGFuZGxlIDB4
MDAxMCwgRE1JIHR5cGUgMTksIDE1IGJ5dGVzDQpNZW1vcnkgQXJyYXkgTWFwcGVkIEFkZHJlc3MN
CglTdGFydGluZyBBZGRyZXNzOiAweDAwMDAwMDAwMDAwDQoJRW5kaW5nIEFkZHJlc3M6IDB4MDQ0
NDNGRkZGRkYNCglSYW5nZSBTaXplOiAyNzk2MTYgTUINCglQaHlzaWNhbCBBcnJheSBIYW5kbGU6
IDB4MDAwRg0KCVBhcnRpdGlvbiBXaWR0aDogMA0KDQpIYW5kbGUgMHgwMDExLCBETUkgdHlwZSAx
NywgMjggYnl0ZXMNCk1lbW9yeSBEZXZpY2UNCglBcnJheSBIYW5kbGU6IDB4MDAwRg0KCUVycm9y
IEluZm9ybWF0aW9uIEhhbmRsZTogTm90IFByb3ZpZGVkDQoJVG90YWwgV2lkdGg6IDcyIGJpdHMN
CglEYXRhIFdpZHRoOiA2NCBiaXRzDQoJU2l6ZTogNDA5NiBNQg0KCUZvcm0gRmFjdG9yOiBESU1N
DQoJU2V0OiBOb25lDQoJTG9jYXRvcjogUDEtRElNTTFBDQoJQmFuayBMb2NhdG9yOiBCQU5LMA0K
CVR5cGU6IEREUjMNCglUeXBlIERldGFpbDogT3RoZXINCglTcGVlZDogMTA2NiBNSHoNCglNYW51
ZmFjdHVyZXI6DQoJU2VyaWFsIE51bWJlcjogMDAwMDAwMDANCglBc3NldCBUYWc6DQoJUGFydCBO
dW1iZXI6IFNVUEVSVEFMRU5UMDINCglSYW5rOiBVbmtub3duDQoNCkhhbmRsZSAweDAwMTIsIERN
SSB0eXBlIDIwLCAxOSBieXRlcw0KTWVtb3J5IERldmljZSBNYXBwZWQgQWRkcmVzcw0KCVN0YXJ0
aW5nIEFkZHJlc3M6IDB4MDAwMDAwMDAwMDANCglFbmRpbmcgQWRkcmVzczogMHgwMDEwMDAwMDNG
Rg0KCVJhbmdlIFNpemU6IDQxOTQzMDUga0INCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAw
MTENCglNZW1vcnkgQXJyYXkgTWFwcGVkIEFkZHJlc3MgSGFuZGxlOiAweDAwMTANCglQYXJ0aXRp
b24gUm93IFBvc2l0aW9uOiAxDQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93bg0KCUludGVy
bGVhdmVkIERhdGEgRGVwdGg6IDINCg0KSGFuZGxlIDB4MDAxMywgRE1JIHR5cGUgMTcsIDI4IGJ5
dGVzDQpNZW1vcnkgRGV2aWNlDQoJQXJyYXkgSGFuZGxlOiAweDAwMEYNCglFcnJvciBJbmZvcm1h
dGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZA0KCVRvdGFsIFdpZHRoOiA3MiBiaXRzDQoJRGF0YSBX
aWR0aDogNjQgYml0cw0KCVNpemU6IDQwOTYgTUINCglGb3JtIEZhY3RvcjogRElNTQ0KCVNldDog
Tm9uZQ0KCUxvY2F0b3I6IFAxLURJTU0xQg0KCUJhbmsgTG9jYXRvcjogQkFOSzENCglUeXBlOiBE
RFIzDQoJVHlwZSBEZXRhaWw6IE90aGVyDQoJU3BlZWQ6IDEwNjYgTUh6DQoJTWFudWZhY3R1cmVy
Og0KCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwDQoJQXNzZXQgVGFnOg0KCVBhcnQgTnVtYmVyOiBT
VVBFUlRBTEVOVDAyDQoJUmFuazogVW5rbm93bg0KDQpIYW5kbGUgMHgwMDE0LCBETUkgdHlwZSAy
MCwgMTkgYnl0ZXMNCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MNCglTdGFydGluZyBBZGRy
ZXNzOiAweDAwMTAwMDAwMDAwDQoJRW5kaW5nIEFkZHJlc3M6IDB4MDAyMDAwMDAzRkYNCglSYW5n
ZSBTaXplOiA0MTk0MzA1IGtCDQoJUGh5c2ljYWwgRGV2aWNlIEhhbmRsZTogMHgwMDEzDQoJTWVt
b3J5IEFycmF5IE1hcHBlZCBBZGRyZXNzIEhhbmRsZTogMHgwMDEwDQoJUGFydGl0aW9uIFJvdyBQ
b3NpdGlvbjogMQ0KCUludGVybGVhdmUgUG9zaXRpb246IFVua25vd24NCglJbnRlcmxlYXZlZCBE
YXRhIERlcHRoOiAyDQoNCkhhbmRsZSAweDAwMTUsIERNSSB0eXBlIDE3LCAyOCBieXRlcw0KTWVt
b3J5IERldmljZQ0KCUFycmF5IEhhbmRsZTogMHgwMDBGDQoJRXJyb3IgSW5mb3JtYXRpb24gSGFu
ZGxlOiBOb3QgUHJvdmlkZWQNCglUb3RhbCBXaWR0aDogNzIgYml0cw0KCURhdGEgV2lkdGg6IDY0
IGJpdHMNCglTaXplOiA0MDk2IE1CDQoJRm9ybSBGYWN0b3I6IERJTU0NCglTZXQ6IE5vbmUNCglM
b2NhdG9yOiBQMS1ESU1NMkENCglCYW5rIExvY2F0b3I6IEJBTksyDQoJVHlwZTogRERSMw0KCVR5
cGUgRGV0YWlsOiBPdGhlcg0KCVNwZWVkOiAxMDY2IE1Ieg0KCU1hbnVmYWN0dXJlcjoNCglTZXJp
YWwgTnVtYmVyOiAwMDAwMDAwMA0KCUFzc2V0IFRhZzoNCglQYXJ0IE51bWJlcjogU1VQRVJUQUxF
TlQwMg0KCVJhbms6IFVua25vd24NCg0KSGFuZGxlIDB4MDAxNiwgRE1JIHR5cGUgMjAsIDE5IGJ5
dGVzDQpNZW1vcnkgRGV2aWNlIE1hcHBlZCBBZGRyZXNzDQoJU3RhcnRpbmcgQWRkcmVzczogMHgw
MDIwMDAwMDAwMA0KCUVuZGluZyBBZGRyZXNzOiAweDAwMzAwMDAwM0ZGDQoJUmFuZ2UgU2l6ZTog
NDE5NDMwNSBrQg0KCVBoeXNpY2FsIERldmljZSBIYW5kbGU6IDB4MDAxNQ0KCU1lbW9yeSBBcnJh
eSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6IDB4MDAxMA0KCVBhcnRpdGlvbiBSb3cgUG9zaXRpb246
IDENCglJbnRlcmxlYXZlIFBvc2l0aW9uOiBVbmtub3duDQoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0
aDogMg0KDQpIYW5kbGUgMHgwMDE3LCBETUkgdHlwZSAxNywgMjggYnl0ZXMNCk1lbW9yeSBEZXZp
Y2UNCglBcnJheSBIYW5kbGU6IDB4MDAwRg0KCUVycm9yIEluZm9ybWF0aW9uIEhhbmRsZTogTm90
IFByb3ZpZGVkDQoJVG90YWwgV2lkdGg6IDcyIGJpdHMNCglEYXRhIFdpZHRoOiA2NCBiaXRzDQoJ
U2l6ZTogNDA5NiBNQg0KCUZvcm0gRmFjdG9yOiBESU1NDQoJU2V0OiBOb25lDQoJTG9jYXRvcjog
UDEtRElNTTJCDQoJQmFuayBMb2NhdG9yOiBCQU5LMw0KCVR5cGU6IEREUjMNCglUeXBlIERldGFp
bDogT3RoZXINCglTcGVlZDogMTA2NiBNSHoNCglNYW51ZmFjdHVyZXI6DQoJU2VyaWFsIE51bWJl
cjogMDAwMDAwMDANCglBc3NldCBUYWc6DQoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDINCglS
YW5rOiBVbmtub3duDQoNCkhhbmRsZSAweDAwMTgsIERNSSB0eXBlIDIwLCAxOSBieXRlcw0KTWVt
b3J5IERldmljZSBNYXBwZWQgQWRkcmVzcw0KCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAzMDAwMDAw
MDANCglFbmRpbmcgQWRkcmVzczogMHgwMDQwMDAwMDNGRg0KCVJhbmdlIFNpemU6IDQxOTQzMDUg
a0INCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMTcNCglNZW1vcnkgQXJyYXkgTWFwcGVk
IEFkZHJlc3MgSGFuZGxlOiAweDAwMTANCglQYXJ0aXRpb24gUm93IFBvc2l0aW9uOiAxDQoJSW50
ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93bg0KCUludGVybGVhdmVkIERhdGEgRGVwdGg6IDINCg0K
SGFuZGxlIDB4MDAxOSwgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzDQpNZW1vcnkgRGV2aWNlDQoJQXJy
YXkgSGFuZGxlOiAweDAwMEYNCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRl
ZA0KCVRvdGFsIFdpZHRoOiA3MiBiaXRzDQoJRGF0YSBXaWR0aDogNjQgYml0cw0KCVNpemU6IDQw
OTYgTUINCglGb3JtIEZhY3RvcjogRElNTQ0KCVNldDogTm9uZQ0KCUxvY2F0b3I6IFAxLURJTU0z
QQ0KCUJhbmsgTG9jYXRvcjogQkFOSzQNCglUeXBlOiBERFIzDQoJVHlwZSBEZXRhaWw6IE90aGVy
DQoJU3BlZWQ6IDEwNjYgTUh6DQoJTWFudWZhY3R1cmVyOg0KCVNlcmlhbCBOdW1iZXI6IDAwMDAw
MDAwDQoJQXNzZXQgVGFnOg0KCVBhcnQgTnVtYmVyOiBTVVBFUlRBTEVOVDAyDQoJUmFuazogVW5r
bm93bg0KDQpIYW5kbGUgMHgwMDFBLCBETUkgdHlwZSAyMCwgMTkgYnl0ZXMNCk1lbW9yeSBEZXZp
Y2UgTWFwcGVkIEFkZHJlc3MNCglTdGFydGluZyBBZGRyZXNzOiAweDAwNDAwMDAwMDAwDQoJRW5k
aW5nIEFkZHJlc3M6IDB4MDA1MDAwMDAzRkYNCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCDQoJUGh5
c2ljYWwgRGV2aWNlIEhhbmRsZTogMHgwMDE5DQoJTWVtb3J5IEFycmF5IE1hcHBlZCBBZGRyZXNz
IEhhbmRsZTogMHgwMDEwDQoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQ0KCUludGVybGVhdmUg
UG9zaXRpb246IFVua25vd24NCglJbnRlcmxlYXZlZCBEYXRhIERlcHRoOiAyDQoNCkhhbmRsZSAw
eDAwMUIsIERNSSB0eXBlIDE3LCAyOCBieXRlcw0KTWVtb3J5IERldmljZQ0KCUFycmF5IEhhbmRs
ZTogMHgwMDBGDQoJRXJyb3IgSW5mb3JtYXRpb24gSGFuZGxlOiBOb3QgUHJvdmlkZWQNCglUb3Rh
bCBXaWR0aDogNzIgYml0cw0KCURhdGEgV2lkdGg6IDY0IGJpdHMNCglTaXplOiA0MDk2IE1CDQoJ
Rm9ybSBGYWN0b3I6IERJTU0NCglTZXQ6IE5vbmUNCglMb2NhdG9yOiBQMS1ESU1NM0INCglCYW5r
IExvY2F0b3I6IEJBTks1DQoJVHlwZTogRERSMw0KCVR5cGUgRGV0YWlsOiBPdGhlcg0KCVNwZWVk
OiAxMDY2IE1Ieg0KCU1hbnVmYWN0dXJlcjoNCglTZXJpYWwgTnVtYmVyOiAwMDAwMDAwMA0KCUFz
c2V0IFRhZzoNCglQYXJ0IE51bWJlcjogU1VQRVJUQUxFTlQwMg0KCVJhbms6IFVua25vd24NCg0K
SGFuZGxlIDB4MDAxQywgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzDQpNZW1vcnkgRGV2aWNlIE1hcHBl
ZCBBZGRyZXNzDQoJU3RhcnRpbmcgQWRkcmVzczogMHgwMDUwMDAwMDAwMA0KCUVuZGluZyBBZGRy
ZXNzOiAweDAwNjAwMDAwM0ZGDQoJUmFuZ2UgU2l6ZTogNDE5NDMwNSBrQg0KCVBoeXNpY2FsIERl
dmljZSBIYW5kbGU6IDB4MDAxQg0KCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6
IDB4MDAxMA0KCVBhcnRpdGlvbiBSb3cgUG9zaXRpb246IDENCglJbnRlcmxlYXZlIFBvc2l0aW9u
OiBVbmtub3duDQoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMg0KDQpIYW5kbGUgMHgwMDFELCBE
TUkgdHlwZSAxNywgMjggYnl0ZXMNCk1lbW9yeSBEZXZpY2UNCglBcnJheSBIYW5kbGU6IDB4MDAw
Rg0KCUVycm9yIEluZm9ybWF0aW9uIEhhbmRsZTogTm90IFByb3ZpZGVkDQoJVG90YWwgV2lkdGg6
IDcyIGJpdHMNCglEYXRhIFdpZHRoOiA2NCBiaXRzDQoJU2l6ZTogNDA5NiBNQg0KCUZvcm0gRmFj
dG9yOiBESU1NDQoJU2V0OiBOb25lDQoJTG9jYXRvcjogUDItRElNTTFBDQoJQmFuayBMb2NhdG9y
OiBCQU5LNg0KCVR5cGU6IEREUjMNCglUeXBlIERldGFpbDogT3RoZXINCglTcGVlZDogMTA2NiBN
SHoNCglNYW51ZmFjdHVyZXI6DQoJU2VyaWFsIE51bWJlcjogMDAwMDAwMDANCglBc3NldCBUYWc6
DQoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDINCglSYW5rOiBVbmtub3duDQoNCkhhbmRsZSAw
eDAwMUUsIERNSSB0eXBlIDIwLCAxOSBieXRlcw0KTWVtb3J5IERldmljZSBNYXBwZWQgQWRkcmVz
cw0KCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAwMDAwMDAwMDANCglFbmRpbmcgQWRkcmVzczogMHgw
MDAwMDAwMDNGRg0KCVJhbmdlIFNpemU6IDEga0INCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAw
eDAwMUQNCglNZW1vcnkgQXJyYXkgTWFwcGVkIEFkZHJlc3MgSGFuZGxlOiAweDAwMTANCglQYXJ0
aXRpb24gUm93IFBvc2l0aW9uOiAxDQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93bg0KCUlu
dGVybGVhdmVkIERhdGEgRGVwdGg6IDINCg0KSGFuZGxlIDB4MDAxRiwgRE1JIHR5cGUgMTcsIDI4
IGJ5dGVzDQpNZW1vcnkgRGV2aWNlDQoJQXJyYXkgSGFuZGxlOiAweDAwMEYNCglFcnJvciBJbmZv
cm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZA0KCVRvdGFsIFdpZHRoOiA3MiBiaXRzDQoJRGF0
YSBXaWR0aDogNjQgYml0cw0KCVNpemU6IDQwOTYgTUINCglGb3JtIEZhY3RvcjogRElNTQ0KCVNl
dDogTm9uZQ0KCUxvY2F0b3I6IFAyLURJTU0xQg0KCUJhbmsgTG9jYXRvcjogQkFOSzcNCglUeXBl
OiBERFIzDQoJVHlwZSBEZXRhaWw6IE90aGVyDQoJU3BlZWQ6IDEwNjYgTUh6DQoJTWFudWZhY3R1
cmVyOg0KCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwDQoJQXNzZXQgVGFnOg0KCVBhcnQgTnVtYmVy
OiBTVVBFUlRBTEVOVDAyDQoJUmFuazogVW5rbm93bg0KDQpIYW5kbGUgMHgwMDIwLCBETUkgdHlw
ZSAyMCwgMTkgYnl0ZXMNCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MNCglTdGFydGluZyBB
ZGRyZXNzOiAweDAwMDAwMDAwMDAwDQoJRW5kaW5nIEFkZHJlc3M6IDB4MDAwMDAwMDAzRkYNCglS
YW5nZSBTaXplOiAxIGtCDQoJUGh5c2ljYWwgRGV2aWNlIEhhbmRsZTogMHgwMDFGDQoJTWVtb3J5
IEFycmF5IE1hcHBlZCBBZGRyZXNzIEhhbmRsZTogMHgwMDEwDQoJUGFydGl0aW9uIFJvdyBQb3Np
dGlvbjogMQ0KCUludGVybGVhdmUgUG9zaXRpb246IFVua25vd24NCglJbnRlcmxlYXZlZCBEYXRh
IERlcHRoOiAyDQoNCkhhbmRsZSAweDAwMjEsIERNSSB0eXBlIDE3LCAyOCBieXRlcw0KTWVtb3J5
IERldmljZQ0KCUFycmF5IEhhbmRsZTogMHgwMDBGDQoJRXJyb3IgSW5mb3JtYXRpb24gSGFuZGxl
OiBOb3QgUHJvdmlkZWQNCglUb3RhbCBXaWR0aDogNzIgYml0cw0KCURhdGEgV2lkdGg6IDY0IGJp
dHMNCglTaXplOiA0MDk2IE1CDQoJRm9ybSBGYWN0b3I6IERJTU0NCglTZXQ6IE5vbmUNCglMb2Nh
dG9yOiBQMi1ESU1NMkENCglCYW5rIExvY2F0b3I6IEJBTks4DQoJVHlwZTogRERSMw0KCVR5cGUg
RGV0YWlsOiBPdGhlcg0KCVNwZWVkOiAxMDY2IE1Ieg0KCU1hbnVmYWN0dXJlcjoNCglTZXJpYWwg
TnVtYmVyOiAwMDAwMDAwMA0KCUFzc2V0IFRhZzoNCglQYXJ0IE51bWJlcjogU1VQRVJUQUxFTlQw
Mg0KCVJhbms6IFVua25vd24NCg0KSGFuZGxlIDB4MDAyMiwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVz
DQpNZW1vcnkgRGV2aWNlIE1hcHBlZCBBZGRyZXNzDQoJU3RhcnRpbmcgQWRkcmVzczogMHgwMDAw
MDAwMDAwMA0KCUVuZGluZyBBZGRyZXNzOiAweDAwMDAwMDAwM0ZGDQoJUmFuZ2UgU2l6ZTogMSBr
Qg0KCVBoeXNpY2FsIERldmljZSBIYW5kbGU6IDB4MDAyMQ0KCU1lbW9yeSBBcnJheSBNYXBwZWQg
QWRkcmVzcyBIYW5kbGU6IDB4MDAxMA0KCVBhcnRpdGlvbiBSb3cgUG9zaXRpb246IDENCglJbnRl
cmxlYXZlIFBvc2l0aW9uOiBVbmtub3duDQoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMg0KDQpI
YW5kbGUgMHgwMDIzLCBETUkgdHlwZSAxNywgMjggYnl0ZXMNCk1lbW9yeSBEZXZpY2UNCglBcnJh
eSBIYW5kbGU6IDB4MDAwRg0KCUVycm9yIEluZm9ybWF0aW9uIEhhbmRsZTogTm90IFByb3ZpZGVk
DQoJVG90YWwgV2lkdGg6IDcyIGJpdHMNCglEYXRhIFdpZHRoOiA2NCBiaXRzDQoJU2l6ZTogNDA5
NiBNQg0KCUZvcm0gRmFjdG9yOiBESU1NDQoJU2V0OiBOb25lDQoJTG9jYXRvcjogUDItRElNTTJC
DQoJQmFuayBMb2NhdG9yOiBCQU5LOQ0KCVR5cGU6IEREUjMNCglUeXBlIERldGFpbDogT3RoZXIN
CglTcGVlZDogMTA2NiBNSHoNCglNYW51ZmFjdHVyZXI6DQoJU2VyaWFsIE51bWJlcjogMDAwMDAw
MDANCglBc3NldCBUYWc6DQoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDINCglSYW5rOiBVbmtu
b3duDQoNCkhhbmRsZSAweDAwMjQsIERNSSB0eXBlIDIwLCAxOSBieXRlcw0KTWVtb3J5IERldmlj
ZSBNYXBwZWQgQWRkcmVzcw0KCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDA2MDAwMDAwMDANCglFbmRp
bmcgQWRkcmVzczogMHgwMDcwMDAwMDNGRg0KCVJhbmdlIFNpemU6IDQxOTQzMDUga0INCglQaHlz
aWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMjMNCglNZW1vcnkgQXJyYXkgTWFwcGVkIEFkZHJlc3Mg
SGFuZGxlOiAweDAwMTANCglQYXJ0aXRpb24gUm93IFBvc2l0aW9uOiAxDQoJSW50ZXJsZWF2ZSBQ
b3NpdGlvbjogVW5rbm93bg0KCUludGVybGVhdmVkIERhdGEgRGVwdGg6IDINCg0KSGFuZGxlIDB4
MDAyNSwgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzDQpNZW1vcnkgRGV2aWNlDQoJQXJyYXkgSGFuZGxl
OiAweDAwMEYNCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZA0KCVRvdGFs
IFdpZHRoOiA3MiBiaXRzDQoJRGF0YSBXaWR0aDogNjQgYml0cw0KCVNpemU6IDQwOTYgTUINCglG
b3JtIEZhY3RvcjogRElNTQ0KCVNldDogTm9uZQ0KCUxvY2F0b3I6IFAyLURJTU0zQQ0KCUJhbmsg
TG9jYXRvcjogQkFOSzEwDQoJVHlwZTogRERSMw0KCVR5cGUgRGV0YWlsOiBPdGhlcg0KCVNwZWVk
OiAxMDY2IE1Ieg0KCU1hbnVmYWN0dXJlcjoNCglTZXJpYWwgTnVtYmVyOiAwMDAwMDAwMA0KCUFz
c2V0IFRhZzoNCglQYXJ0IE51bWJlcjogU1VQRVJUQUxFTlQwMg0KCVJhbms6IFVua25vd24NCg0K
SGFuZGxlIDB4MDAyNiwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzDQpNZW1vcnkgRGV2aWNlIE1hcHBl
ZCBBZGRyZXNzDQoJU3RhcnRpbmcgQWRkcmVzczogMHgwMDcwMDAwMDAwMA0KCUVuZGluZyBBZGRy
ZXNzOiAweDAwODAwMDAwM0ZGDQoJUmFuZ2UgU2l6ZTogNDE5NDMwNSBrQg0KCVBoeXNpY2FsIERl
dmljZSBIYW5kbGU6IDB4MDAyNQ0KCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6
IDB4MDAxMA0KCVBhcnRpdGlvbiBSb3cgUG9zaXRpb246IDENCglJbnRlcmxlYXZlIFBvc2l0aW9u
OiBVbmtub3duDQoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMg0KDQpIYW5kbGUgMHgwMDI3LCBE
TUkgdHlwZSAxNywgMjggYnl0ZXMNCk1lbW9yeSBEZXZpY2UNCglBcnJheSBIYW5kbGU6IDB4MDAw
Rg0KCUVycm9yIEluZm9ybWF0aW9uIEhhbmRsZTogTm90IFByb3ZpZGVkDQoJVG90YWwgV2lkdGg6
IDcyIGJpdHMNCglEYXRhIFdpZHRoOiA2NCBiaXRzDQoJU2l6ZTogNDA5NiBNQg0KCUZvcm0gRmFj
dG9yOiBESU1NDQoJU2V0OiBOb25lDQoJTG9jYXRvcjogUDItRElNTTNCDQoJQmFuayBMb2NhdG9y
OiBCQU5LMTENCglUeXBlOiBERFIzDQoJVHlwZSBEZXRhaWw6IE90aGVyDQoJU3BlZWQ6IDEwNjYg
TUh6DQoJTWFudWZhY3R1cmVyOg0KCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwDQoJQXNzZXQgVGFn
Og0KCVBhcnQgTnVtYmVyOiBTVVBFUlRBTEVOVDAyDQoJUmFuazogVW5rbm93bg0KDQpIYW5kbGUg
MHgwMDI4LCBETUkgdHlwZSAyMCwgMTkgYnl0ZXMNCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJl
c3MNCglTdGFydGluZyBBZGRyZXNzOiAweDAwODAwMDAwMDAwDQoJRW5kaW5nIEFkZHJlc3M6IDB4
MDA5MDAwMDAzRkYNCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCDQoJUGh5c2ljYWwgRGV2aWNlIEhh
bmRsZTogMHgwMDI3DQoJTWVtb3J5IEFycmF5IE1hcHBlZCBBZGRyZXNzIEhhbmRsZTogMHgwMDEw
DQoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQ0KCUludGVybGVhdmUgUG9zaXRpb246IFVua25v
d24NCglJbnRlcmxlYXZlZCBEYXRhIERlcHRoOiAyDQoNCkhhbmRsZSAweDAwMjksIERNSSB0eXBl
IDMyLCAyMCBieXRlcw0KU3lzdGVtIEJvb3QgSW5mb3JtYXRpb24NCglTdGF0dXM6IE5vIGVycm9y
cyBkZXRlY3RlZA0KDQpIYW5kbGUgMHgwMDJBLCBETUkgdHlwZSAzOCwgMTggYnl0ZXMNCklQTUkg
RGV2aWNlIEluZm9ybWF0aW9uDQoJSW50ZXJmYWNlIFR5cGU6IEtDUyAoS2V5Ym9hcmQgQ29udHJv
bCBTdHlsZSkNCglTcGVjaWZpY2F0aW9uIFZlcnNpb246IDIuMA0KCUkyQyBTbGF2ZSBBZGRyZXNz
OiAweDEwDQoJTlYgU3RvcmFnZSBEZXZpY2U6IE5vdCBQcmVzZW50DQoJQmFzZSBBZGRyZXNzOiAw
eDAwMDAwMDAwMDAwMDBDQTIgKEkvTykNCglSZWdpc3RlciBTcGFjaW5nOiBTdWNjZXNzaXZlIEJ5
dGUgQm91bmRhcmllcw0KDQpIYW5kbGUgMHgwMDJCLCBETUkgdHlwZSAxMjcsIDQgYnl0ZXMNCkVu
ZCBPZiBUYWJsZQ0KDQoNCi0tIA0KTGVvbmlkIEthbGV2DQpDQSBUZWNobm9sb2dpZXMNClByaW5j
aXBhbCBTb2Z0d2FyZSBFbmdpbmVlcg0KVGVsOiAgICAgKzk3MiA0IDgyNSAzOTUyDQpNb2JpbGU6
ICArOTcyIDU0IDQ2MzE1MDgNCkxlb25pZC5LYWxldkBjYS5jb20NCg==

--_002_4F2188768090606cacom_
Content-Type: text/plain; name="dmidecode-eptfail"
Content-Description: dmidecode-eptfail
Content-Disposition: attachment; filename="dmidecode-eptfail"; size=19255;
	creation-date="Thu, 26 Jan 2012 17:08:07 GMT";
	modification-date="Thu, 26 Jan 2012 17:08:07 GMT"
Content-ID: <84EC5538FD1AF2418C2D79167F96121A@ca.com>
Content-Transfer-Encoding: base64

IyBkbWlkZWNvZGUgMi4xMApTTUJJT1MgMi42IHByZXNlbnQuCjQ0IHN0cnVjdHVyZXMgb2NjdXB5
aW5nIDI1NDkgYnl0ZXMuClRhYmxlIGF0IDB4MDAwOUVDMDAuCgpIYW5kbGUgMHgwMDAwLCBETUkg
dHlwZSAwLCAyNCBieXRlcwpCSU9TIEluZm9ybWF0aW9uCglWZW5kb3I6IEFtZXJpY2FuIE1lZ2F0
cmVuZHMgSW5jLgoJVmVyc2lvbjogMDgwMDE2IAoJUmVsZWFzZSBEYXRlOiAwMi8xMS8yMDExCglB
ZGRyZXNzOiAweEYwMDAwCglSdW50aW1lIFNpemU6IDY0IGtCCglST00gU2l6ZTogNDA5NiBrQgoJ
Q2hhcmFjdGVyaXN0aWNzOgoJCUlTQSBpcyBzdXBwb3J0ZWQKCQlQQ0kgaXMgc3VwcG9ydGVkCgkJ
UE5QIGlzIHN1cHBvcnRlZAoJCUJJT1MgaXMgdXBncmFkZWFibGUKCQlCSU9TIHNoYWRvd2luZyBp
cyBhbGxvd2VkCgkJRVNDRCBzdXBwb3J0IGlzIGF2YWlsYWJsZQoJCUJvb3QgZnJvbSBDRCBpcyBz
dXBwb3J0ZWQKCQlTZWxlY3RhYmxlIGJvb3QgaXMgc3VwcG9ydGVkCgkJQklPUyBST00gaXMgc29j
a2V0ZWQKCQlFREQgaXMgc3VwcG9ydGVkCgkJNS4yNSIvMS4yIE1CIGZsb3BweSBzZXJ2aWNlcyBh
cmUgc3VwcG9ydGVkIChpbnQgMTNoKQoJCTMuNSIvNzIwIGtCIGZsb3BweSBzZXJ2aWNlcyBhcmUg
c3VwcG9ydGVkIChpbnQgMTNoKQoJCTMuNSIvMi44OCBNQiBmbG9wcHkgc2VydmljZXMgYXJlIHN1
cHBvcnRlZCAoaW50IDEzaCkKCQlQcmludCBzY3JlZW4gc2VydmljZSBpcyBzdXBwb3J0ZWQgKGlu
dCA1aCkKCQk4MDQyIGtleWJvYXJkIHNlcnZpY2VzIGFyZSBzdXBwb3J0ZWQgKGludCA5aCkKCQlT
ZXJpYWwgc2VydmljZXMgYXJlIHN1cHBvcnRlZCAoaW50IDE0aCkKCQlQcmludGVyIHNlcnZpY2Vz
IGFyZSBzdXBwb3J0ZWQgKGludCAxN2gpCgkJQ0dBL21vbm8gdmlkZW8gc2VydmljZXMgYXJlIHN1
cHBvcnRlZCAoaW50IDEwaCkKCQlBQ1BJIGlzIHN1cHBvcnRlZAoJCVVTQiBsZWdhY3kgaXMgc3Vw
cG9ydGVkCgkJTFMtMTIwIGJvb3QgaXMgc3VwcG9ydGVkCgkJQVRBUEkgWmlwIGRyaXZlIGJvb3Qg
aXMgc3VwcG9ydGVkCgkJQklPUyBib290IHNwZWNpZmljYXRpb24gaXMgc3VwcG9ydGVkCgkJVGFy
Z2V0ZWQgY29udGVudCBkaXN0cmlidXRpb24gaXMgc3VwcG9ydGVkCglCSU9TIFJldmlzaW9uOiA4
LjE2CgpIYW5kbGUgMHgwMDAxLCBETUkgdHlwZSAxLCAyNyBieXRlcwpTeXN0ZW0gSW5mb3JtYXRp
b24KCU1hbnVmYWN0dXJlcjogU3VwZXJtaWNybwoJUHJvZHVjdCBOYW1lOiBYOERUVC1ICglWZXJz
aW9uOiAxMjM0NTY3ODkwCglTZXJpYWwgTnVtYmVyOiAxMjM0NTY3ODkwCglVVUlEOiA1NDQ0Mzg1
OC00RTU0LTMwMDAtNDhGNC0wMDMwNDhGNDE3NzAKCVdha2UtdXAgVHlwZTogUG93ZXIgU3dpdGNo
CglTS1UgTnVtYmVyOiAxMjM0NTY3ODkwCglGYW1pbHk6IFNlcnZlcgoKSGFuZGxlIDB4MDAwMiwg
RE1JIHR5cGUgMiwgMTUgYnl0ZXMKQmFzZSBCb2FyZCBJbmZvcm1hdGlvbgoJTWFudWZhY3R1cmVy
OiBTdXBlcm1pY3JvCglQcm9kdWN0IE5hbWU6IFg4RFRULUgKCVZlcnNpb246IDEuMyAgICAgICAK
CVNlcmlhbCBOdW1iZXI6IDEyMzQ1Njc4OTAKCUFzc2V0IFRhZzogMTIzNDU2Nzg5MAoJRmVhdHVy
ZXM6CgkJQm9hcmQgaXMgYSBob3N0aW5nIGJvYXJkCgkJQm9hcmQgaXMgcmVwbGFjZWFibGUKCUxv
Y2F0aW9uIEluIENoYXNzaXM6IDEyMzQ1Njc4OTAKCUNoYXNzaXMgSGFuZGxlOiAweDAwMDMKCVR5
cGU6IE1vdGhlcmJvYXJkCglDb250YWluZWQgT2JqZWN0IEhhbmRsZXM6IDAKCkhhbmRsZSAweDAw
MDMsIERNSSB0eXBlIDMsIDIxIGJ5dGVzCkNoYXNzaXMgSW5mb3JtYXRpb24KCU1hbnVmYWN0dXJl
cjogU3VwZXJtaWNybwoJVHlwZTogTWFpbiBTZXJ2ZXIgQ2hhc3NpcwoJTG9jazogTm90IFByZXNl
bnQKCVZlcnNpb246IDEyMzQ1Njc4OTAKCVNlcmlhbCBOdW1iZXI6IDEyMzQ1Njc4OTAuCglBc3Nl
dCBUYWc6IFRvIEJlIEZpbGxlZCBCeSBPLkUuTS4KCUJvb3QtdXAgU3RhdGU6IFNhZmUKCVBvd2Vy
IFN1cHBseSBTdGF0ZTogU2FmZQoJVGhlcm1hbCBTdGF0ZTogU2FmZQoJU2VjdXJpdHkgU3RhdHVz
OiBOb25lCglPRU0gSW5mb3JtYXRpb246IDB4MDAwMDAwMDAKCUhlaWdodDogVW5zcGVjaWZpZWQK
CU51bWJlciBPZiBQb3dlciBDb3JkczogMQoJQ29udGFpbmVkIEVsZW1lbnRzOiAwCgpIYW5kbGUg
MHgwMDA0LCBETUkgdHlwZSA0LCA0MiBieXRlcwpQcm9jZXNzb3IgSW5mb3JtYXRpb24KCVNvY2tl
dCBEZXNpZ25hdGlvbjogQ1BVIDEKCVR5cGU6IENlbnRyYWwgUHJvY2Vzc29yCglGYW1pbHk6IFhl
b24KCU1hbnVmYWN0dXJlcjogSW50ZWwgICAgICAgICAgICAKCUlEOiBBMiAwNiAwMSAwMCBGRiBG
QiBFQiBCRgoJU2lnbmF0dXJlOiBUeXBlIDAsIEZhbWlseSA2LCBNb2RlbCAyNiwgU3RlcHBpbmcg
MgoJRmxhZ3M6CgkJRlBVIChGbG9hdGluZy1wb2ludCB1bml0IG9uLWNoaXApCgkJVk1FIChWaXJ0
dWFsIG1vZGUgZXh0ZW5zaW9uKQoJCURFIChEZWJ1Z2dpbmcgZXh0ZW5zaW9uKQoJCVBTRSAoUGFn
ZSBzaXplIGV4dGVuc2lvbikKCQlUU0MgKFRpbWUgc3RhbXAgY291bnRlcikKCQlNU1IgKE1vZGVs
IHNwZWNpZmljIHJlZ2lzdGVycykKCQlQQUUgKFBoeXNpY2FsIGFkZHJlc3MgZXh0ZW5zaW9uKQoJ
CU1DRSAoTWFjaGluZSBjaGVjayBleGNlcHRpb24pCgkJQ1g4IChDTVBYQ0hHOCBpbnN0cnVjdGlv
biBzdXBwb3J0ZWQpCgkJQVBJQyAoT24tY2hpcCBBUElDIGhhcmR3YXJlIHN1cHBvcnRlZCkKCQlT
RVAgKEZhc3Qgc3lzdGVtIGNhbGwpCgkJTVRSUiAoTWVtb3J5IHR5cGUgcmFuZ2UgcmVnaXN0ZXJz
KQoJCVBHRSAoUGFnZSBnbG9iYWwgZW5hYmxlKQoJCU1DQSAoTWFjaGluZSBjaGVjayBhcmNoaXRl
Y3R1cmUpCgkJQ01PViAoQ29uZGl0aW9uYWwgbW92ZSBpbnN0cnVjdGlvbiBzdXBwb3J0ZWQpCgkJ
UEFUIChQYWdlIGF0dHJpYnV0ZSB0YWJsZSkKCQlQU0UtMzYgKDM2LWJpdCBwYWdlIHNpemUgZXh0
ZW5zaW9uKQoJCUNMRlNIIChDTEZMVVNIIGluc3RydWN0aW9uIHN1cHBvcnRlZCkKCQlEUyAoRGVi
dWcgc3RvcmUpCgkJQUNQSSAoQUNQSSBzdXBwb3J0ZWQpCgkJTU1YIChNTVggdGVjaG5vbG9neSBz
dXBwb3J0ZWQpCgkJRlhTUiAoRmFzdCBmbG9hdGluZy1wb2ludCBzYXZlIGFuZCByZXN0b3JlKQoJ
CVNTRSAoU3RyZWFtaW5nIFNJTUQgZXh0ZW5zaW9ucykKCQlTU0UyIChTdHJlYW1pbmcgU0lNRCBl
eHRlbnNpb25zIDIpCgkJU1MgKFNlbGYtc25vb3ApCgkJSFRUIChIeXBlci10aHJlYWRpbmcgdGVj
aG5vbG9neSkKCQlUTSAoVGhlcm1hbCBtb25pdG9yIHN1cHBvcnRlZCkKCQlQQkUgKFBlbmRpbmcg
YnJlYWsgZW5hYmxlZCkKCVZlcnNpb246IEdlbnVpbmUgSW50ZWwoUikgQ1BVICAgICAgICAgICBA
IDAwMDAgQCAyLjQwR0h6ICAgICAKCVZvbHRhZ2U6IFVua25vd24KCUV4dGVybmFsIENsb2NrOiAx
MzMgTUh6CglNYXggU3BlZWQ6IDI0MDAgTUh6CglDdXJyZW50IFNwZWVkOiAyNDAwIE1IegoJU3Rh
dHVzOiBQb3B1bGF0ZWQsIEVuYWJsZWQKCVVwZ3JhZGU6IE90aGVyCglMMSBDYWNoZSBIYW5kbGU6
IDB4MDAwNQoJTDIgQ2FjaGUgSGFuZGxlOiAweDAwMDYKCUwzIENhY2hlIEhhbmRsZTogMHgwMDA3
CglTZXJpYWwgTnVtYmVyOiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uCglBc3NldCBUYWc6IFRvIEJl
IEZpbGxlZCBCeSBPLkUuTS4KCVBhcnQgTnVtYmVyOiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uCglD
b3JlIENvdW50OiA0CglDb3JlIEVuYWJsZWQ6IDQKCVRocmVhZCBDb3VudDogOAoJQ2hhcmFjdGVy
aXN0aWNzOgoJCTY0LWJpdCBjYXBhYmxlCgpIYW5kbGUgMHgwMDA1LCBETUkgdHlwZSA3LCAxOSBi
eXRlcwpDYWNoZSBJbmZvcm1hdGlvbgoJU29ja2V0IERlc2lnbmF0aW9uOiBMMS1DYWNoZQoJQ29u
ZmlndXJhdGlvbjogRW5hYmxlZCwgTm90IFNvY2tldGVkLCBMZXZlbCAxCglPcGVyYXRpb25hbCBN
b2RlOiBXcml0ZSBUaHJvdWdoCglMb2NhdGlvbjogSW50ZXJuYWwKCUluc3RhbGxlZCBTaXplOiAy
NTYga0IKCU1heGltdW0gU2l6ZTogMjU2IGtCCglTdXBwb3J0ZWQgU1JBTSBUeXBlczoKCQlPdGhl
cgoJSW5zdGFsbGVkIFNSQU0gVHlwZTogT3RoZXIKCVNwZWVkOiBVbmtub3duCglFcnJvciBDb3Jy
ZWN0aW9uIFR5cGU6IFBhcml0eQoJU3lzdGVtIFR5cGU6IEluc3RydWN0aW9uCglBc3NvY2lhdGl2
aXR5OiA0LXdheSBTZXQtYXNzb2NpYXRpdmUKCkhhbmRsZSAweDAwMDYsIERNSSB0eXBlIDcsIDE5
IGJ5dGVzCkNhY2hlIEluZm9ybWF0aW9uCglTb2NrZXQgRGVzaWduYXRpb246IEwyLUNhY2hlCglD
b25maWd1cmF0aW9uOiBFbmFibGVkLCBOb3QgU29ja2V0ZWQsIExldmVsIDIKCU9wZXJhdGlvbmFs
IE1vZGU6IFdyaXRlIFRocm91Z2gKCUxvY2F0aW9uOiBJbnRlcm5hbAoJSW5zdGFsbGVkIFNpemU6
IDEwMjQga0IKCU1heGltdW0gU2l6ZTogMTAyNCBrQgoJU3VwcG9ydGVkIFNSQU0gVHlwZXM6CgkJ
T3RoZXIKCUluc3RhbGxlZCBTUkFNIFR5cGU6IE90aGVyCglTcGVlZDogVW5rbm93bgoJRXJyb3Ig
Q29ycmVjdGlvbiBUeXBlOiBTaW5nbGUtYml0IEVDQwoJU3lzdGVtIFR5cGU6IFVuaWZpZWQKCUFz
c29jaWF0aXZpdHk6IDgtd2F5IFNldC1hc3NvY2lhdGl2ZQoKSGFuZGxlIDB4MDAwNywgRE1JIHR5
cGUgNywgMTkgYnl0ZXMKQ2FjaGUgSW5mb3JtYXRpb24KCVNvY2tldCBEZXNpZ25hdGlvbjogTDMt
Q2FjaGUKCUNvbmZpZ3VyYXRpb246IEVuYWJsZWQsIE5vdCBTb2NrZXRlZCwgTGV2ZWwgMwoJT3Bl
cmF0aW9uYWwgTW9kZTogV3JpdGUgQmFjawoJTG9jYXRpb246IEludGVybmFsCglJbnN0YWxsZWQg
U2l6ZTogODE5MiBrQgoJTWF4aW11bSBTaXplOiA4MTkyIGtCCglTdXBwb3J0ZWQgU1JBTSBUeXBl
czoKCQlPdGhlcgoJSW5zdGFsbGVkIFNSQU0gVHlwZTogT3RoZXIKCVNwZWVkOiBVbmtub3duCglF
cnJvciBDb3JyZWN0aW9uIFR5cGU6IFNpbmdsZS1iaXQgRUNDCglTeXN0ZW0gVHlwZTogVW5pZmll
ZAoJQXNzb2NpYXRpdml0eTogMTYtd2F5IFNldC1hc3NvY2lhdGl2ZQoKSGFuZGxlIDB4MDAwOCwg
RE1JIHR5cGUgNCwgNDIgYnl0ZXMKUHJvY2Vzc29yIEluZm9ybWF0aW9uCglTb2NrZXQgRGVzaWdu
YXRpb246IENQVSAyCglUeXBlOiBDZW50cmFsIFByb2Nlc3NvcgoJRmFtaWx5OiBYZW9uCglNYW51
ZmFjdHVyZXI6IEludGVsICAgICAgICAgICAgCglJRDogQTIgMDYgMDEgMDAgRkYgRkIgRUIgQkYK
CVNpZ25hdHVyZTogVHlwZSAwLCBGYW1pbHkgNiwgTW9kZWwgMjYsIFN0ZXBwaW5nIDIKCUZsYWdz
OgoJCUZQVSAoRmxvYXRpbmctcG9pbnQgdW5pdCBvbi1jaGlwKQoJCVZNRSAoVmlydHVhbCBtb2Rl
IGV4dGVuc2lvbikKCQlERSAoRGVidWdnaW5nIGV4dGVuc2lvbikKCQlQU0UgKFBhZ2Ugc2l6ZSBl
eHRlbnNpb24pCgkJVFNDIChUaW1lIHN0YW1wIGNvdW50ZXIpCgkJTVNSIChNb2RlbCBzcGVjaWZp
YyByZWdpc3RlcnMpCgkJUEFFIChQaHlzaWNhbCBhZGRyZXNzIGV4dGVuc2lvbikKCQlNQ0UgKE1h
Y2hpbmUgY2hlY2sgZXhjZXB0aW9uKQoJCUNYOCAoQ01QWENIRzggaW5zdHJ1Y3Rpb24gc3VwcG9y
dGVkKQoJCUFQSUMgKE9uLWNoaXAgQVBJQyBoYXJkd2FyZSBzdXBwb3J0ZWQpCgkJU0VQIChGYXN0
IHN5c3RlbSBjYWxsKQoJCU1UUlIgKE1lbW9yeSB0eXBlIHJhbmdlIHJlZ2lzdGVycykKCQlQR0Ug
KFBhZ2UgZ2xvYmFsIGVuYWJsZSkKCQlNQ0EgKE1hY2hpbmUgY2hlY2sgYXJjaGl0ZWN0dXJlKQoJ
CUNNT1YgKENvbmRpdGlvbmFsIG1vdmUgaW5zdHJ1Y3Rpb24gc3VwcG9ydGVkKQoJCVBBVCAoUGFn
ZSBhdHRyaWJ1dGUgdGFibGUpCgkJUFNFLTM2ICgzNi1iaXQgcGFnZSBzaXplIGV4dGVuc2lvbikK
CQlDTEZTSCAoQ0xGTFVTSCBpbnN0cnVjdGlvbiBzdXBwb3J0ZWQpCgkJRFMgKERlYnVnIHN0b3Jl
KQoJCUFDUEkgKEFDUEkgc3VwcG9ydGVkKQoJCU1NWCAoTU1YIHRlY2hub2xvZ3kgc3VwcG9ydGVk
KQoJCUZYU1IgKEZhc3QgZmxvYXRpbmctcG9pbnQgc2F2ZSBhbmQgcmVzdG9yZSkKCQlTU0UgKFN0
cmVhbWluZyBTSU1EIGV4dGVuc2lvbnMpCgkJU1NFMiAoU3RyZWFtaW5nIFNJTUQgZXh0ZW5zaW9u
cyAyKQoJCVNTIChTZWxmLXNub29wKQoJCUhUVCAoSHlwZXItdGhyZWFkaW5nIHRlY2hub2xvZ3kp
CgkJVE0gKFRoZXJtYWwgbW9uaXRvciBzdXBwb3J0ZWQpCgkJUEJFIChQZW5kaW5nIGJyZWFrIGVu
YWJsZWQpCglWZXJzaW9uOiBHZW51aW5lIEludGVsKFIpIENQVSAgICAgICAgICAgQCAwMDAwIEAg
Mi40MEdIeiAgICAgCglWb2x0YWdlOiBVbmtub3duCglFeHRlcm5hbCBDbG9jazogMTMzIE1IegoJ
TWF4IFNwZWVkOiAyNDAwIE1IegoJQ3VycmVudCBTcGVlZDogMjQwMCBNSHoKCVN0YXR1czogUG9w
dWxhdGVkLCBFbmFibGVkCglVcGdyYWRlOiBPdGhlcgoJTDEgQ2FjaGUgSGFuZGxlOiAweDAwMDkK
CUwyIENhY2hlIEhhbmRsZTogMHgwMDBBCglMMyBDYWNoZSBIYW5kbGU6IDB4MDAwQgoJU2VyaWFs
IE51bWJlcjogVG8gQmUgRmlsbGVkIEJ5IE8uRS5NLgoJQXNzZXQgVGFnOiBUbyBCZSBGaWxsZWQg
QnkgTy5FLk0uCglQYXJ0IE51bWJlcjogVG8gQmUgRmlsbGVkIEJ5IE8uRS5NLgoJQ29yZSBDb3Vu
dDogNAoJQ29yZSBFbmFibGVkOiA0CglUaHJlYWQgQ291bnQ6IDgKCUNoYXJhY3RlcmlzdGljczoK
CQk2NC1iaXQgY2FwYWJsZQoKSGFuZGxlIDB4MDAwOSwgRE1JIHR5cGUgNywgMTkgYnl0ZXMKQ2Fj
aGUgSW5mb3JtYXRpb24KCVNvY2tldCBEZXNpZ25hdGlvbjogTDEtQ2FjaGUKCUNvbmZpZ3VyYXRp
b246IEVuYWJsZWQsIE5vdCBTb2NrZXRlZCwgTGV2ZWwgMQoJT3BlcmF0aW9uYWwgTW9kZTogV3Jp
dGUgVGhyb3VnaAoJTG9jYXRpb246IEludGVybmFsCglJbnN0YWxsZWQgU2l6ZTogMjU2IGtCCglN
YXhpbXVtIFNpemU6IDI1NiBrQgoJU3VwcG9ydGVkIFNSQU0gVHlwZXM6CgkJT3RoZXIKCUluc3Rh
bGxlZCBTUkFNIFR5cGU6IE90aGVyCglTcGVlZDogVW5rbm93bgoJRXJyb3IgQ29ycmVjdGlvbiBU
eXBlOiBQYXJpdHkKCVN5c3RlbSBUeXBlOiBJbnN0cnVjdGlvbgoJQXNzb2NpYXRpdml0eTogNC13
YXkgU2V0LWFzc29jaWF0aXZlCgpIYW5kbGUgMHgwMDBBLCBETUkgdHlwZSA3LCAxOSBieXRlcwpD
YWNoZSBJbmZvcm1hdGlvbgoJU29ja2V0IERlc2lnbmF0aW9uOiBMMi1DYWNoZQoJQ29uZmlndXJh
dGlvbjogRW5hYmxlZCwgTm90IFNvY2tldGVkLCBMZXZlbCAyCglPcGVyYXRpb25hbCBNb2RlOiBX
cml0ZSBUaHJvdWdoCglMb2NhdGlvbjogSW50ZXJuYWwKCUluc3RhbGxlZCBTaXplOiAxMDI0IGtC
CglNYXhpbXVtIFNpemU6IDEwMjQga0IKCVN1cHBvcnRlZCBTUkFNIFR5cGVzOgoJCU90aGVyCglJ
bnN0YWxsZWQgU1JBTSBUeXBlOiBPdGhlcgoJU3BlZWQ6IFVua25vd24KCUVycm9yIENvcnJlY3Rp
b24gVHlwZTogU2luZ2xlLWJpdCBFQ0MKCVN5c3RlbSBUeXBlOiBVbmlmaWVkCglBc3NvY2lhdGl2
aXR5OiA4LXdheSBTZXQtYXNzb2NpYXRpdmUKCkhhbmRsZSAweDAwMEIsIERNSSB0eXBlIDcsIDE5
IGJ5dGVzCkNhY2hlIEluZm9ybWF0aW9uCglTb2NrZXQgRGVzaWduYXRpb246IEwzLUNhY2hlCglD
b25maWd1cmF0aW9uOiBFbmFibGVkLCBOb3QgU29ja2V0ZWQsIExldmVsIDMKCU9wZXJhdGlvbmFs
IE1vZGU6IFdyaXRlIEJhY2sKCUxvY2F0aW9uOiBJbnRlcm5hbAoJSW5zdGFsbGVkIFNpemU6IDgx
OTIga0IKCU1heGltdW0gU2l6ZTogODE5MiBrQgoJU3VwcG9ydGVkIFNSQU0gVHlwZXM6CgkJT3Ro
ZXIKCUluc3RhbGxlZCBTUkFNIFR5cGU6IE90aGVyCglTcGVlZDogVW5rbm93bgoJRXJyb3IgQ29y
cmVjdGlvbiBUeXBlOiBTaW5nbGUtYml0IEVDQwoJU3lzdGVtIFR5cGU6IFVuaWZpZWQKCUFzc29j
aWF0aXZpdHk6IDE2LXdheSBTZXQtYXNzb2NpYXRpdmUKCkhhbmRsZSAweDAwMEMsIERNSSB0eXBl
IDksIDE3IGJ5dGVzClN5c3RlbSBTbG90IEluZm9ybWF0aW9uCglEZXNpZ25hdGlvbjogUENJRTEK
CVR5cGU6IHgxNiBQQ0kgRXhwcmVzcwoJQ3VycmVudCBVc2FnZTogQXZhaWxhYmxlCglMZW5ndGg6
IExvbmcKCUlEOiAxCglDaGFyYWN0ZXJpc3RpY3M6CgkJMy4zIFYgaXMgcHJvdmlkZWQKCQlPcGVu
aW5nIGlzIHNoYXJlZAoJCVBNRSBzaWduYWwgaXMgc3VwcG9ydGVkCgpIYW5kbGUgMHgwMDBELCBE
TUkgdHlwZSAxMSwgNSBieXRlcwpPRU0gU3RyaW5ncwoJU3RyaW5nIDE6IFRvIEJlIEZpbGxlZCBC
eSBPLkUuTS4KCVN0cmluZyAyOiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uCgpIYW5kbGUgMHgwMDBF
LCBETUkgdHlwZSAxNSwgNTUgYnl0ZXMKU3lzdGVtIEV2ZW50IExvZwoJQXJlYSBMZW5ndGg6IDEw
MDggYnl0ZXMKCUhlYWRlciBTdGFydCBPZmZzZXQ6IDB4MDgxMAoJRGF0YSBTdGFydCBPZmZzZXQ6
IDB4MDgxMAoJQWNjZXNzIE1ldGhvZDogR2VuZXJhbC1wdXJwb3NlIG5vbi12b2xhdGlsZSBkYXRh
IGZ1bmN0aW9ucwoJQWNjZXNzIEFkZHJlc3M6IDB4MDAwMQoJU3RhdHVzOiBWYWxpZCwgTm90IEZ1
bGwKCUNoYW5nZSBUb2tlbjogMHgwMDAwMDAwMAoJSGVhZGVyIEZvcm1hdDogTm8gSGVhZGVyCglT
dXBwb3J0ZWQgTG9nIFR5cGUgRGVzY3JpcHRvcnM6IDE1CglEZXNjcmlwdG9yIDE6IFNpbmdsZS1i
aXQgRUNDIG1lbW9yeSBlcnJvcgoJRGF0YSBGb3JtYXQgMTogTXVsdGlwbGUtZXZlbnQgaGFuZGxl
CglEZXNjcmlwdG9yIDI6IE11bHRpLWJpdCBFQ0MgbWVtb3J5IGVycm9yCglEYXRhIEZvcm1hdCAy
OiBNdWx0aXBsZS1ldmVudCBoYW5kbGUKCURlc2NyaXB0b3IgMzogUGFyaXR5IG1lbW9yeSBlcnJv
cgoJRGF0YSBGb3JtYXQgMzogTXVsdGlwbGUtZXZlbnQKCURlc2NyaXB0b3IgNDogSS9PIGNoYW5u
ZWwgYmxvY2sKCURhdGEgRm9ybWF0IDQ6IE11bHRpcGxlLWV2ZW50CglEZXNjcmlwdG9yIDU6IFBP
U1QgZXJyb3IKCURhdGEgRm9ybWF0IDU6IFBPU1QgcmVzdWx0cyBiaXRtYXAKCURlc2NyaXB0b3Ig
NjogUENJIHBhcml0eSBlcnJvcgoJRGF0YSBGb3JtYXQgNjogTXVsdGlwbGUtZXZlbnQgaGFuZGxl
CglEZXNjcmlwdG9yIDc6IFBDSSBzeXN0ZW0gZXJyb3IKCURhdGEgRm9ybWF0IDc6IE11bHRpcGxl
LWV2ZW50IGhhbmRsZQoJRGVzY3JpcHRvciA4OiBTeXN0ZW0gbGltaXQgZXhjZWVkZWQKCURhdGEg
Rm9ybWF0IDg6IE11bHRpcGxlLWV2ZW50IHN5c3RlbSBtYW5hZ2VtZW50CglEZXNjcmlwdG9yIDk6
IE9FTS1zcGVjaWZpYwoJRGF0YSBGb3JtYXQgOTogUE9TVCByZXN1bHRzIGJpdG1hcAoJRGVzY3Jp
cHRvciAxMDogT0VNLXNwZWNpZmljCglEYXRhIEZvcm1hdCAxMDogTXVsdGlwbGUtZXZlbnQgaGFu
ZGxlCglEZXNjcmlwdG9yIDExOiBPRU0tc3BlY2lmaWMKCURhdGEgRm9ybWF0IDExOiBNdWx0aXBs
ZS1ldmVudCBoYW5kbGUKCURlc2NyaXB0b3IgMTI6IE9FTS1zcGVjaWZpYwoJRGF0YSBGb3JtYXQg
MTI6IE11bHRpcGxlLWV2ZW50IGhhbmRsZQoJRGVzY3JpcHRvciAxMzogT0VNLXNwZWNpZmljCglE
YXRhIEZvcm1hdCAxMzogTXVsdGlwbGUtZXZlbnQgaGFuZGxlCglEZXNjcmlwdG9yIDE0OiBPRU0t
c3BlY2lmaWMKCURhdGEgRm9ybWF0IDE0OiBNdWx0aXBsZS1ldmVudCBoYW5kbGUKCURlc2NyaXB0
b3IgMTU6IE9FTS1zcGVjaWZpYwoJRGF0YSBGb3JtYXQgMTU6IE11bHRpcGxlLWV2ZW50IGhhbmRs
ZQoKSGFuZGxlIDB4MDAwRiwgRE1JIHR5cGUgMTYsIDE1IGJ5dGVzClBoeXNpY2FsIE1lbW9yeSBB
cnJheQoJTG9jYXRpb246IFN5c3RlbSBCb2FyZCBPciBNb3RoZXJib2FyZAoJVXNlOiBTeXN0ZW0g
TWVtb3J5CglFcnJvciBDb3JyZWN0aW9uIFR5cGU6IE11bHRpLWJpdCBFQ0MKCU1heGltdW0gQ2Fw
YWNpdHk6IDM4NCBHQgoJRXJyb3IgSW5mb3JtYXRpb24gSGFuZGxlOiBOb3QgUHJvdmlkZWQKCU51
bWJlciBPZiBEZXZpY2VzOiAxMgoKSGFuZGxlIDB4MDAxMCwgRE1JIHR5cGUgMTksIDE1IGJ5dGVz
Ck1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcwoJU3RhcnRpbmcgQWRkcmVzczogMHgwMDAwMDAw
MDAwMAoJRW5kaW5nIEFkZHJlc3M6IDB4MDQ0NDNGRkZGRkYKCVJhbmdlIFNpemU6IDI3OTYxNiBN
QgoJUGh5c2ljYWwgQXJyYXkgSGFuZGxlOiAweDAwMEYKCVBhcnRpdGlvbiBXaWR0aDogMAoKSGFu
ZGxlIDB4MDAxMSwgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhh
bmRsZTogMHgwMDBGCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90
YWwgV2lkdGg6IDcyIGJpdHMKCURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZv
cm0gRmFjdG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IFAxLURJTU0xQQoJQmFuayBMb2Nh
dG9yOiBCQU5LMAoJVHlwZTogRERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBN
SHoKCU1hbnVmYWN0dXJlcjogICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAw
CglBc3NldCBUYWc6ICAgICAgICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAg
IAoJUmFuazogVW5rbm93bgoKSGFuZGxlIDB4MDAxMiwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1l
bW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAwMDAwMDAw
MDAKCUVuZGluZyBBZGRyZXNzOiAweDAwMTAwMDAwM0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtC
CglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMTEKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRk
cmVzcyBIYW5kbGU6IDB4MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2
ZSBQb3NpdGlvbjogVW5rbm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4
MDAxMywgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTog
MHgwMDBGCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lk
dGg6IDcyIGJpdHMKCURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFj
dG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IFAxLURJTU0xQgoJQmFuayBMb2NhdG9yOiBC
QU5LMQoJVHlwZTogRERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1h
bnVmYWN0dXJlcjogICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3Nl
dCBUYWc6ICAgICAgICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFu
azogVW5rbm93bgoKSGFuZGxlIDB4MDAxNCwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBE
ZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAxMDAwMDAwMDAKCUVu
ZGluZyBBZGRyZXNzOiAweDAwMjAwMDAwM0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCCglQaHlz
aWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMTMKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBI
YW5kbGU6IDB4MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3Np
dGlvbjogVW5rbm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAxNSwg
RE1JIHR5cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBG
CglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcy
IGJpdHMKCURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBE
SU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IFAxLURJTU0yQQoJQmFuayBMb2NhdG9yOiBCQU5LMgoJ
VHlwZTogRERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0
dXJlcjogICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6
ICAgICAgICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFuazogVW5r
bm93bgoKSGFuZGxlIDB4MDAxNiwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBEZXZpY2Ug
TWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAyMDAwMDAwMDAKCUVuZGluZyBB
ZGRyZXNzOiAweDAwMzAwMDAwM0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCCglQaHlzaWNhbCBE
ZXZpY2UgSGFuZGxlOiAweDAwMTUKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6
IDB4MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjog
VW5rbm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAxNywgRE1JIHR5
cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBGCglFcnJv
ciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJpdHMK
CURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBESU1NCglT
ZXQ6IE5vbmUKCUxvY2F0b3I6IFAxLURJTU0yQgoJQmFuayBMb2NhdG9yOiBCQU5LMwoJVHlwZTog
RERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJlcjog
ICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6ICAgICAg
ICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFuazogVW5rbm93bgoK
SGFuZGxlIDB4MDAxOCwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFwcGVk
IEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAzMDAwMDAwMDAKCUVuZGluZyBBZGRyZXNz
OiAweDAwNDAwMDAwM0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCCglQaHlzaWNhbCBEZXZpY2Ug
SGFuZGxlOiAweDAwMTcKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6IDB4MDAx
MAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93
bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAxOSwgRE1JIHR5cGUgMTcs
IDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBGCglFcnJvciBJbmZv
cm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJpdHMKCURhdGEg
V2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBESU1NCglTZXQ6IE5v
bmUKCUxvY2F0b3I6IFAxLURJTU0zQQoJQmFuayBMb2NhdG9yOiBCQU5LNAoJVHlwZTogRERSMwoJ
VHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJlcjogICAgICAg
ICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6ICAgICAgICAgICAg
IAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFuazogVW5rbm93bgoKSGFuZGxl
IDB4MDAxQSwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJl
c3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDA0MDAwMDAwMDAKCUVuZGluZyBBZGRyZXNzOiAweDAw
NTAwMDAwM0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxl
OiAweDAwMTkKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6IDB4MDAxMAoJUGFy
dGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93bgoJSW50
ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAxQiwgRE1JIHR5cGUgMTcsIDI4IGJ5
dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBGCglFcnJvciBJbmZvcm1hdGlv
biBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJpdHMKCURhdGEgV2lkdGg6
IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBESU1NCglTZXQ6IE5vbmUKCUxv
Y2F0b3I6IFAxLURJTU0zQgoJQmFuayBMb2NhdG9yOiBCQU5LNQoJVHlwZTogRERSMwoJVHlwZSBE
ZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJlcjogICAgICAgICAgICAg
ICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6ICAgICAgICAgICAgIAoJUGFy
dCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFuazogVW5rbm93bgoKSGFuZGxlIDB4MDAx
QywgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0
YXJ0aW5nIEFkZHJlc3M6IDB4MDA1MDAwMDAwMDAKCUVuZGluZyBBZGRyZXNzOiAweDAwNjAwMDAw
M0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAw
MUIKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6IDB4MDAxMAoJUGFydGl0aW9u
IFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93bgoJSW50ZXJsZWF2
ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAxRCwgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzCk1l
bW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBGCglFcnJvciBJbmZvcm1hdGlvbiBIYW5k
bGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJpdHMKCURhdGEgV2lkdGg6IDY0IGJp
dHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6
IFAyLURJTU0xQQoJQmFuayBMb2NhdG9yOiBCQU5LNgoJVHlwZTogRERSMwoJVHlwZSBEZXRhaWw6
IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJlcjogICAgICAgICAgICAgICAKCVNl
cmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6ICAgICAgICAgICAgIAoJUGFydCBOdW1i
ZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFuazogVW5rbm93bgoKSGFuZGxlIDB4MDAxRSwgRE1J
IHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5n
IEFkZHJlc3M6IDB4MDAwMDAwMDAwMDAKCUVuZGluZyBBZGRyZXNzOiAweDAwMDAwMDAwM0ZGCglS
YW5nZSBTaXplOiAxIGtCCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMUQKCU1lbW9yeSBB
cnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6IDB4MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlv
bjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5rbm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0
aDogMgoKSGFuZGxlIDB4MDAxRiwgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UK
CUFycmF5IEhhbmRsZTogMHgwMDBGCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92
aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJpdHMKCURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQw
OTYgTUIKCUZvcm0gRmFjdG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IFAyLURJTU0xQgoJ
QmFuayBMb2NhdG9yOiBCQU5LNwoJVHlwZTogRERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVl
ZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJlcjogICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6
IDAwMDAwMDAwCglBc3NldCBUYWc6ICAgICAgICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFM
RU5UMDIgICAgIAoJUmFuazogVW5rbm93bgoKSGFuZGxlIDB4MDAyMCwgRE1JIHR5cGUgMjAsIDE5
IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4
MDAwMDAwMDAwMDAKCUVuZGluZyBBZGRyZXNzOiAweDAwMDAwMDAwM0ZGCglSYW5nZSBTaXplOiAx
IGtCCglQaHlzaWNhbCBEZXZpY2UgSGFuZGxlOiAweDAwMUYKCU1lbW9yeSBBcnJheSBNYXBwZWQg
QWRkcmVzcyBIYW5kbGU6IDB4MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJs
ZWF2ZSBQb3NpdGlvbjogVW5rbm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxl
IDB4MDAyMSwgRE1JIHR5cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRs
ZTogMHgwMDBGCglFcnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwg
V2lkdGg6IDcyIGJpdHMKCURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0g
RmFjdG9yOiBESU1NCglTZXQ6IE5vbmUKCUxvY2F0b3I6IFAyLURJTU0yQQoJQmFuayBMb2NhdG9y
OiBCQU5LOAoJVHlwZTogRERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoK
CU1hbnVmYWN0dXJlcjogICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglB
c3NldCBUYWc6ICAgICAgICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJ
UmFuazogVW5rbm93bgoKSGFuZGxlIDB4MDAyMiwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9y
eSBEZXZpY2UgTWFwcGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDAwMDAwMDAwMDAK
CUVuZGluZyBBZGRyZXNzOiAweDAwMDAwMDAwM0ZGCglSYW5nZSBTaXplOiAxIGtCCglQaHlzaWNh
bCBEZXZpY2UgSGFuZGxlOiAweDAwMjEKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5k
bGU6IDB4MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlv
bjogVW5rbm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAyMywgRE1J
IHR5cGUgMTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBGCglF
cnJvciBJbmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJp
dHMKCURhdGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBESU1N
CglTZXQ6IE5vbmUKCUxvY2F0b3I6IFAyLURJTU0yQgoJQmFuayBMb2NhdG9yOiBCQU5LOQoJVHlw
ZTogRERSMwoJVHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJl
cjogICAgICAgICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6ICAg
ICAgICAgICAgIAoJUGFydCBOdW1iZXI6IFNVUEVSVEFMRU5UMDIgICAgIAoJUmFuazogVW5rbm93
bgoKSGFuZGxlIDB4MDAyNCwgRE1JIHR5cGUgMjAsIDE5IGJ5dGVzCk1lbW9yeSBEZXZpY2UgTWFw
cGVkIEFkZHJlc3MKCVN0YXJ0aW5nIEFkZHJlc3M6IDB4MDA2MDAwMDAwMDAKCUVuZGluZyBBZGRy
ZXNzOiAweDAwNzAwMDAwM0ZGCglSYW5nZSBTaXplOiA0MTk0MzA1IGtCCglQaHlzaWNhbCBEZXZp
Y2UgSGFuZGxlOiAweDAwMjMKCU1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBIYW5kbGU6IDB4
MDAxMAoJUGFydGl0aW9uIFJvdyBQb3NpdGlvbjogMQoJSW50ZXJsZWF2ZSBQb3NpdGlvbjogVW5r
bm93bgoJSW50ZXJsZWF2ZWQgRGF0YSBEZXB0aDogMgoKSGFuZGxlIDB4MDAyNSwgRE1JIHR5cGUg
MTcsIDI4IGJ5dGVzCk1lbW9yeSBEZXZpY2UKCUFycmF5IEhhbmRsZTogMHgwMDBGCglFcnJvciBJ
bmZvcm1hdGlvbiBIYW5kbGU6IE5vdCBQcm92aWRlZAoJVG90YWwgV2lkdGg6IDcyIGJpdHMKCURh
dGEgV2lkdGg6IDY0IGJpdHMKCVNpemU6IDQwOTYgTUIKCUZvcm0gRmFjdG9yOiBESU1NCglTZXQ6
IE5vbmUKCUxvY2F0b3I6IFAyLURJTU0zQQoJQmFuayBMb2NhdG9yOiBCQU5LMTAKCVR5cGU6IERE
UjMKCVR5cGUgRGV0YWlsOiBPdGhlcgoJU3BlZWQ6IDEwNjYgTUh6CglNYW51ZmFjdHVyZXI6ICAg
ICAgICAgICAgICAgCglTZXJpYWwgTnVtYmVyOiAwMDAwMDAwMAoJQXNzZXQgVGFnOiAgICAgICAg
ICAgICAgCglQYXJ0IE51bWJlcjogU1VQRVJUQUxFTlQwMiAgICAgCglSYW5rOiBVbmtub3duCgpI
YW5kbGUgMHgwMDI2LCBETUkgdHlwZSAyMCwgMTkgYnl0ZXMKTWVtb3J5IERldmljZSBNYXBwZWQg
QWRkcmVzcwoJU3RhcnRpbmcgQWRkcmVzczogMHgwMDcwMDAwMDAwMAoJRW5kaW5nIEFkZHJlc3M6
IDB4MDA4MDAwMDAzRkYKCVJhbmdlIFNpemU6IDQxOTQzMDUga0IKCVBoeXNpY2FsIERldmljZSBI
YW5kbGU6IDB4MDAyNQoJTWVtb3J5IEFycmF5IE1hcHBlZCBBZGRyZXNzIEhhbmRsZTogMHgwMDEw
CglQYXJ0aXRpb24gUm93IFBvc2l0aW9uOiAxCglJbnRlcmxlYXZlIFBvc2l0aW9uOiBVbmtub3du
CglJbnRlcmxlYXZlZCBEYXRhIERlcHRoOiAyCgpIYW5kbGUgMHgwMDI3LCBETUkgdHlwZSAxNywg
MjggYnl0ZXMKTWVtb3J5IERldmljZQoJQXJyYXkgSGFuZGxlOiAweDAwMEYKCUVycm9yIEluZm9y
bWF0aW9uIEhhbmRsZTogTm90IFByb3ZpZGVkCglUb3RhbCBXaWR0aDogNzIgYml0cwoJRGF0YSBX
aWR0aDogNjQgYml0cwoJU2l6ZTogNDA5NiBNQgoJRm9ybSBGYWN0b3I6IERJTU0KCVNldDogTm9u
ZQoJTG9jYXRvcjogUDItRElNTTNCCglCYW5rIExvY2F0b3I6IEJBTksxMQoJVHlwZTogRERSMwoJ
VHlwZSBEZXRhaWw6IE90aGVyCglTcGVlZDogMTA2NiBNSHoKCU1hbnVmYWN0dXJlcjogICAgICAg
ICAgICAgICAKCVNlcmlhbCBOdW1iZXI6IDAwMDAwMDAwCglBc3NldCBUYWc6ICAgICAgICAgICAg
ICAKCVBhcnQgTnVtYmVyOiBTVVBFUlRBTEVOVDAyICAgICAKCVJhbms6IFVua25vd24KCkhhbmRs
ZSAweDAwMjgsIERNSSB0eXBlIDIwLCAxOSBieXRlcwpNZW1vcnkgRGV2aWNlIE1hcHBlZCBBZGRy
ZXNzCglTdGFydGluZyBBZGRyZXNzOiAweDAwODAwMDAwMDAwCglFbmRpbmcgQWRkcmVzczogMHgw
MDkwMDAwMDNGRgoJUmFuZ2UgU2l6ZTogNDE5NDMwNSBrQgoJUGh5c2ljYWwgRGV2aWNlIEhhbmRs
ZTogMHgwMDI3CglNZW1vcnkgQXJyYXkgTWFwcGVkIEFkZHJlc3MgSGFuZGxlOiAweDAwMTAKCVBh
cnRpdGlvbiBSb3cgUG9zaXRpb246IDEKCUludGVybGVhdmUgUG9zaXRpb246IFVua25vd24KCUlu
dGVybGVhdmVkIERhdGEgRGVwdGg6IDIKCkhhbmRsZSAweDAwMjksIERNSSB0eXBlIDMyLCAyMCBi
eXRlcwpTeXN0ZW0gQm9vdCBJbmZvcm1hdGlvbgoJU3RhdHVzOiBObyBlcnJvcnMgZGV0ZWN0ZWQK
CkhhbmRsZSAweDAwMkEsIERNSSB0eXBlIDM4LCAxOCBieXRlcwpJUE1JIERldmljZSBJbmZvcm1h
dGlvbgoJSW50ZXJmYWNlIFR5cGU6IEtDUyAoS2V5Ym9hcmQgQ29udHJvbCBTdHlsZSkKCVNwZWNp
ZmljYXRpb24gVmVyc2lvbjogMi4wCglJMkMgU2xhdmUgQWRkcmVzczogMHgxMAoJTlYgU3RvcmFn
ZSBEZXZpY2U6IE5vdCBQcmVzZW50CglCYXNlIEFkZHJlc3M6IDB4MDAwMDAwMDAwMDAwMENBMiAo
SS9PKQoJUmVnaXN0ZXIgU3BhY2luZzogU3VjY2Vzc2l2ZSBCeXRlIEJvdW5kYXJpZXMKCkhhbmRs
ZSAweDAwMkIsIERNSSB0eXBlIDEyNywgNCBieXRlcwpFbmQgT2YgVGFibGUKCg==

--_002_4F2188768090606cacom_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

--_002_4F2188768090606cacom_--


From xen-devel-bounces@lists.xensource.com Fri Feb 03 19:16:00 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Feb 2012 19:16:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RtObr-0000eW-UF; Fri, 03 Feb 2012 19:15:47 +0000
Received: from mail182.messagelabs.com ([85.158.139.83])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <david.vrabel@citrix.com>) id 1RtObo-0000c7-VZ
	for xen-devel@lists.xensource.com; Fri, 03 Feb 2012 19:15:45 +0000
X-Env-Sender: david.vrabel@citrix.com
X-Msg-Ref: server-16.tower-182.messagelabs.com!1328296535!6302620!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAyMjk1OTA=\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14966 invoked from network); 3 Feb 2012 19:15:37 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-16.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	3 Feb 2012 19:15:37 -0000
X-IronPort-AV: E=Sophos;i="4.73,352,1325480400"; d="scan'208";a="180350645"
Received: from ftlpmailmx01.citrite.net ([10.13.107.65])
	by FTLPIPO02.CITRIX.COM with ESMTP/TLS/RC4-MD5;
	03 Feb 2012 14:15:34 -0500
Received: from smtp01.ad.xensource.com (10.219.128.104) by
	smtprelay.citrix.com (10.13.107.65) with Microsoft SMTP Server id
	8.3.213.0; Fri, 3 Feb 2012 14:15:33 -0500
Received: from qabil.uk.xensource.com (qabil.uk.xensource.com [10.80.2.76])	by
	smtp01.ad.xensource.com (8.13.1/8.13.1) with ESMTP id q13JFVpp011693;
	Fri, 3 Feb 2012 11:15:32 -0800
From: David Vrabel <david.vrabel@citrix.com>
To: xen-devel@lists.xensource.com
Date: Fri, 3 Feb 2012 19:15:09 +0000
Message-ID: <1328296515-25876-2-git-send-email-david.vrabel@citrix.com>
X-Mailer: git-send-email 1.7.2.5
In-Reply-To: <1328296515-25876-1-git-send-email-david.vrabel@citrix.com>
References: <1328296515-25876-1-git-send-email-david.vrabel@citrix.com>
MIME-Version: 1.0
Cc: David Vrabel <david.vrabel@citrix.com>
Subject: [Xen-devel] [PATCH 1/7] libfdt: add version 1.3.0
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

From: David Vrabel <david.vrabel@citrix.com>

Add libfdt 1.3.0 from http://git.jdl.com/gitweb/?p=dtc.git

This will be used by Xen to parse the DTBs provided by bootloaders on
ARM platforms.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
---
 xen/common/libfdt/Makefile.libfdt   |   10 +
 xen/common/libfdt/TODO              |    3 +
 xen/common/libfdt/fdt.c             |  222 +++++++
 xen/common/libfdt/fdt.h             |   60 ++
 xen/common/libfdt/fdt_ro.c          |  574 ++++++++++++++++
 xen/common/libfdt/fdt_rw.c          |  465 +++++++++++++
 xen/common/libfdt/fdt_strerror.c    |   96 +++
 xen/common/libfdt/fdt_sw.c          |  256 ++++++++
 xen/common/libfdt/fdt_wip.c         |  118 ++++
 xen/common/libfdt/libfdt.h          | 1235 +++++++++++++++++++++++++++++++++++
 xen/common/libfdt/libfdt_env.h      |   23 +
 xen/common/libfdt/libfdt_internal.h |   95 +++
 xen/common/libfdt/version.lds       |   54 ++
 13 files changed, 3211 insertions(+), 0 deletions(-)
 create mode 100644 xen/common/libfdt/Makefile.libfdt
 create mode 100644 xen/common/libfdt/TODO
 create mode 100644 xen/common/libfdt/fdt.c
 create mode 100644 xen/common/libfdt/fdt.h
 create mode 100644 xen/common/libfdt/fdt_ro.c
 create mode 100644 xen/common/libfdt/fdt_rw.c
 create mode 100644 xen/common/libfdt/fdt_strerror.c
 create mode 100644 xen/common/libfdt/fdt_sw.c
 create mode 100644 xen/common/libfdt/fdt_wip.c
 create mode 100644 xen/common/libfdt/libfdt.h
 create mode 100644 xen/common/libfdt/libfdt_env.h
 create mode 100644 xen/common/libfdt/libfdt_internal.h
 create mode 100644 xen/common/libfdt/version.lds

diff --git a/xen/common/libfdt/Makefile.libfdt b/xen/common/libfdt/Makefile.libfdt
new file mode 100644
index 0000000..d55a6f8
--- /dev/null
+++ b/xen/common/libfdt/Makefile.libfdt
@@ -0,0 +1,10 @@
+# Makefile.libfdt
+#
+# This is not a complete Makefile of itself.  Instead, it is designed to
+# be easily embeddable into other systems of Makefiles.
+#
+LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
+LIBFDT_INCLUDES = fdt.h libfdt.h
+LIBFDT_VERSION = version.lds
+LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
diff --git a/xen/common/libfdt/TODO b/xen/common/libfdt/TODO
new file mode 100644
index 0000000..288437e
--- /dev/null
+++ b/xen/common/libfdt/TODO
@@ -0,0 +1,3 @@
+- Tree traversal functions
+- Graft function
+- Complete libfdt.h documenting comments
diff --git a/xen/common/libfdt/fdt.c b/xen/common/libfdt/fdt.c
new file mode 100644
index 0000000..e56833a
--- /dev/null
+++ b/xen/common/libfdt/fdt.c
@@ -0,0 +1,222 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_check_header(const void *fdt)
+{
+	if (fdt_magic(fdt) == FDT_MAGIC) {
+		/* Complete tree */
+		if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+		if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+	} else if (fdt_magic(fdt) == FDT_SW_MAGIC) {
+		/* Unfinished sequential-write blob */
+		if (fdt_size_dt_struct(fdt) == 0)
+			return -FDT_ERR_BADSTATE;
+	} else {
+		return -FDT_ERR_BADMAGIC;
+	}
+
+	return 0;
+}
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)
+{
+	const char *p;
+
+	if (fdt_version(fdt) >= 0x11)
+		if (((offset + len) < offset)
+		    || ((offset + len) > fdt_size_dt_struct(fdt)))
+			return NULL;
+
+	p = _fdt_offset_ptr(fdt, offset);
+
+	if (p + len < p)
+		return NULL;
+	return p;
+}
+
+uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)
+{
+	const uint32_t *tagp, *lenp;
+	uint32_t tag;
+	int offset = startoffset;
+	const char *p;
+
+	*nextoffset = -FDT_ERR_TRUNCATED;
+	tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE);
+	if (!tagp)
+		return FDT_END; /* premature end */
+	tag = fdt32_to_cpu(*tagp);
+	offset += FDT_TAGSIZE;
+
+	*nextoffset = -FDT_ERR_BADSTRUCTURE;
+	switch (tag) {
+	case FDT_BEGIN_NODE:
+		/* skip name */
+		do {
+			p = fdt_offset_ptr(fdt, offset++, 1);
+		} while (p && (*p != '\0'));
+		if (!p)
+			return FDT_END; /* premature end */
+		break;
+
+	case FDT_PROP:
+		lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp));
+		if (!lenp)
+			return FDT_END; /* premature end */
+		/* skip-name offset, length and value */
+		offset += sizeof(struct fdt_property) - FDT_TAGSIZE
+			+ fdt32_to_cpu(*lenp);
+		break;
+
+	case FDT_END:
+	case FDT_END_NODE:
+	case FDT_NOP:
+		break;
+
+	default:
+		return FDT_END;
+	}
+
+	if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset))
+		return FDT_END; /* premature end */
+
+	*nextoffset = FDT_TAGALIGN(offset);
+	return tag;
+}
+
+int _fdt_check_node_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int _fdt_check_prop_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int fdt_next_node(const void *fdt, int offset, int *depth)
+{
+	int nextoffset = 0;
+	uint32_t tag;
+
+	if (offset >= 0)
+		if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0)
+			return nextoffset;
+
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_PROP:
+		case FDT_NOP:
+			break;
+
+		case FDT_BEGIN_NODE:
+			if (depth)
+				(*depth)++;
+			break;
+
+		case FDT_END_NODE:
+			if (depth && ((--(*depth)) < 0))
+				return nextoffset;
+			break;
+
+		case FDT_END:
+			if ((nextoffset >= 0)
+			    || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))
+				return -FDT_ERR_NOTFOUND;
+			else
+				return nextoffset;
+		}
+	} while (tag != FDT_BEGIN_NODE);
+
+	return offset;
+}
+
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)
+{
+	int len = strlen(s) + 1;
+	const char *last = strtab + tabsize - len;
+	const char *p;
+
+	for (p = strtab; p <= last; p++)
+		if (memcmp(p, s, len) == 0)
+			return p;
+	return NULL;
+}
+
+int fdt_move(const void *fdt, void *buf, int bufsize)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_totalsize(fdt) > bufsize)
+		return -FDT_ERR_NOSPACE;
+
+	memmove(buf, fdt, fdt_totalsize(fdt));
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt.h b/xen/common/libfdt/fdt.h
new file mode 100644
index 0000000..48ccfd9
--- /dev/null
+++ b/xen/common/libfdt/fdt.h
@@ -0,0 +1,60 @@
+#ifndef _FDT_H
+#define _FDT_H
+
+#ifndef __ASSEMBLY__
+
+struct fdt_header {
+	uint32_t magic;			 /* magic word FDT_MAGIC */
+	uint32_t totalsize;		 /* total size of DT block */
+	uint32_t off_dt_struct;		 /* offset to structure */
+	uint32_t off_dt_strings;	 /* offset to strings */
+	uint32_t off_mem_rsvmap;	 /* offset to memory reserve map */
+	uint32_t version;		 /* format version */
+	uint32_t last_comp_version;	 /* last compatible version */
+
+	/* version 2 fields below */
+	uint32_t boot_cpuid_phys;	 /* Which physical CPU id we're
+					    booting on */
+	/* version 3 fields below */
+	uint32_t size_dt_strings;	 /* size of the strings block */
+
+	/* version 17 fields below */
+	uint32_t size_dt_struct;	 /* size of the structure block */
+};
+
+struct fdt_reserve_entry {
+	uint64_t address;
+	uint64_t size;
+};
+
+struct fdt_node_header {
+	uint32_t tag;
+	char name[0];
+};
+
+struct fdt_property {
+	uint32_t tag;
+	uint32_t len;
+	uint32_t nameoff;
+	char data[0];
+};
+
+#endif /* !__ASSEMBLY */
+
+#define FDT_MAGIC	0xd00dfeed	/* 4: version, 4: total size */
+#define FDT_TAGSIZE	sizeof(uint32_t)
+
+#define FDT_BEGIN_NODE	0x1		/* Start node: full name */
+#define FDT_END_NODE	0x2		/* End node */
+#define FDT_PROP	0x3		/* Property: name off,
+					   size, content */
+#define FDT_NOP		0x4		/* nop */
+#define FDT_END		0x9
+
+#define FDT_V1_SIZE	(7*sizeof(uint32_t))
+#define FDT_V2_SIZE	(FDT_V1_SIZE + sizeof(uint32_t))
+#define FDT_V3_SIZE	(FDT_V2_SIZE + sizeof(uint32_t))
+#define FDT_V16_SIZE	FDT_V3_SIZE
+#define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(uint32_t))
+
+#endif /* _FDT_H */
diff --git a/xen/common/libfdt/fdt_ro.c b/xen/common/libfdt/fdt_ro.c
new file mode 100644
index 0000000..02b6d68
--- /dev/null
+++ b/xen/common/libfdt/fdt_ro.c
@@ -0,0 +1,574 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_nodename_eq(const void *fdt, int offset,
+			    const char *s, int len)
+{
+	const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1);
+
+	if (! p)
+		/* short match */
+		return 0;
+
+	if (memcmp(p, s, len) != 0)
+		return 0;
+
+	if (p[len] == '\0')
+		return 1;
+	else if (!memchr(s, '@', len) && (p[len] == '@'))
+		return 1;
+	else
+		return 0;
+}
+
+const char *fdt_string(const void *fdt, int stroffset)
+{
+	return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset;
+}
+
+static int _fdt_string_eq(const void *fdt, int stroffset,
+			  const char *s, int len)
+{
+	const char *p = fdt_string(fdt, stroffset);
+
+	return (strlen(p) == len) && (memcmp(p, s, len) == 0);
+}
+
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size)
+{
+	FDT_CHECK_HEADER(fdt);
+	*address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address);
+	*size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size);
+	return 0;
+}
+
+int fdt_num_mem_rsv(const void *fdt)
+{
+	int i = 0;
+
+	while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0)
+		i++;
+	return i;
+}
+
+static int _nextprop(const void *fdt, int offset)
+{
+	uint32_t tag;
+	int nextoffset;
+
+	do {
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_END:
+			if (nextoffset >= 0)
+				return -FDT_ERR_BADSTRUCTURE;
+			else
+				return nextoffset;
+
+		case FDT_PROP:
+			return offset;
+		}
+		offset = nextoffset;
+	} while (tag == FDT_NOP);
+
+	return -FDT_ERR_NOTFOUND;
+}
+
+int fdt_subnode_offset_namelen(const void *fdt, int offset,
+			       const char *name, int namelen)
+{
+	int depth;
+
+	FDT_CHECK_HEADER(fdt);
+
+	for (depth = 0;
+	     (offset >= 0) && (depth >= 0);
+	     offset = fdt_next_node(fdt, offset, &depth))
+		if ((depth == 1)
+		    && _fdt_nodename_eq(fdt, offset, name, namelen))
+			return offset;
+
+	if (depth < 0)
+		return -FDT_ERR_NOTFOUND;
+	return offset; /* error */
+}
+
+int fdt_subnode_offset(const void *fdt, int parentoffset,
+		       const char *name)
+{
+	return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_path_offset(const void *fdt, const char *path)
+{
+	const char *end = path + strlen(path);
+	const char *p = path;
+	int offset = 0;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* see if we have an alias */
+	if (*path != '/') {
+		const char *q = strchr(path, '/');
+
+		if (!q)
+			q = end;
+
+		p = fdt_get_alias_namelen(fdt, p, q - p);
+		if (!p)
+			return -FDT_ERR_BADPATH;
+		offset = fdt_path_offset(fdt, p);
+
+		p = q;
+	}
+
+	while (*p) {
+		const char *q;
+
+		while (*p == '/')
+			p++;
+		if (! *p)
+			return offset;
+		q = strchr(p, '/');
+		if (! q)
+			q = end;
+
+		offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p);
+		if (offset < 0)
+			return offset;
+
+		p = q;
+	}
+
+	return offset;
+}
+
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
+{
+	const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset);
+	int err;
+
+	if (((err = fdt_check_header(fdt)) != 0)
+	    || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0))
+			goto fail;
+
+	if (len)
+		*len = strlen(nh->name);
+
+	return nh->name;
+
+ fail:
+	if (len)
+		*len = err;
+	return NULL;
+}
+
+int fdt_first_property_offset(const void *fdt, int nodeoffset)
+{
+	int offset;
+
+	if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+int fdt_next_property_offset(const void *fdt, int offset)
+{
+	if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp)
+{
+	int err;
+	const struct fdt_property *prop;
+
+	if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) {
+		if (lenp)
+			*lenp = err;
+		return NULL;
+	}
+
+	prop = _fdt_offset_ptr(fdt, offset);
+
+	if (lenp)
+		*lenp = fdt32_to_cpu(prop->len);
+
+	return prop;
+}
+
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int offset,
+						    const char *name,
+						    int namelen, int *lenp)
+{
+	for (offset = fdt_first_property_offset(fdt, offset);
+	     (offset >= 0);
+	     (offset = fdt_next_property_offset(fdt, offset))) {
+		const struct fdt_property *prop;
+
+		if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) {
+			offset = -FDT_ERR_INTERNAL;
+			break;
+		}
+		if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
+				   name, namelen))
+			return prop;
+	}
+
+	if (lenp)
+		*lenp = offset;
+	return NULL;
+}
+
+const struct fdt_property *fdt_get_property(const void *fdt,
+					    int nodeoffset,
+					    const char *name, int *lenp)
+{
+	return fdt_get_property_namelen(fdt, nodeoffset, name,
+					strlen(name), lenp);
+}
+
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp);
+	if (! prop)
+		return NULL;
+
+	return prop->data;
+}
+
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_by_offset(fdt, offset, lenp);
+	if (!prop)
+		return NULL;
+	if (namep)
+		*namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+	return prop->data;
+}
+
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp)
+{
+	return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp);
+}
+
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset)
+{
+	const uint32_t *php;
+	int len;
+
+	/* FIXME: This is a bit sub-optimal, since we potentially scan
+	 * over all the properties twice. */
+	php = fdt_getprop(fdt, nodeoffset, "phandle", &len);
+	if (!php || (len != sizeof(*php))) {
+		php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len);
+		if (!php || (len != sizeof(*php)))
+			return 0;
+	}
+
+	return fdt32_to_cpu(*php);
+}
+
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen)
+{
+	int aliasoffset;
+
+	aliasoffset = fdt_path_offset(fdt, "/aliases");
+	if (aliasoffset < 0)
+		return NULL;
+
+	return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
+}
+
+const char *fdt_get_alias(const void *fdt, const char *name)
+{
+	return fdt_get_alias_namelen(fdt, name, strlen(name));
+}
+
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen)
+{
+	int pdepth = 0, p = 0;
+	int offset, depth, namelen;
+	const char *name;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (buflen < 2)
+		return -FDT_ERR_NOSPACE;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		while (pdepth > depth) {
+			do {
+				p--;
+			} while (buf[p-1] != '/');
+			pdepth--;
+		}
+
+		if (pdepth >= depth) {
+			name = fdt_get_name(fdt, offset, &namelen);
+			if (!name)
+				return namelen;
+			if ((p + namelen + 1) <= buflen) {
+				memcpy(buf + p, name, namelen);
+				p += namelen;
+				buf[p++] = '/';
+				pdepth++;
+			}
+		}
+
+		if (offset == nodeoffset) {
+			if (pdepth < (depth + 1))
+				return -FDT_ERR_NOSPACE;
+
+			if (p > 1) /* special case so that root path is "/", not "" */
+				p--;
+			buf[p] = '\0';
+			return 0;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth)
+{
+	int offset, depth;
+	int supernodeoffset = -FDT_ERR_INTERNAL;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (supernodedepth < 0)
+		return -FDT_ERR_NOTFOUND;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		if (depth == supernodedepth)
+			supernodeoffset = offset;
+
+		if (offset == nodeoffset) {
+			if (nodedepth)
+				*nodedepth = depth;
+
+			if (supernodedepth > depth)
+				return -FDT_ERR_NOTFOUND;
+			else
+				return supernodeoffset;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_depth(const void *fdt, int nodeoffset)
+{
+	int nodedepth;
+	int err;
+
+	err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
+	if (err)
+		return (err < 0) ? err : -FDT_ERR_INTERNAL;
+	return nodedepth;
+}
+
+int fdt_parent_offset(const void *fdt, int nodeoffset)
+{
+	int nodedepth = fdt_node_depth(fdt, nodeoffset);
+
+	if (nodedepth < 0)
+		return nodedepth;
+	return fdt_supernode_atdepth_offset(fdt, nodeoffset,
+					    nodedepth - 1, NULL);
+}
+
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen)
+{
+	int offset;
+	const void *val;
+	int len;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_getprop(), then if that didn't
+	 * find what we want, we scan over them again making our way
+	 * to the next node.  Still it's the easiest to implement
+	 * approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		val = fdt_getprop(fdt, offset, propname, &len);
+		if (val && (len == proplen)
+		    && (memcmp(val, propval, len) == 0))
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle)
+{
+	int offset;
+
+	if ((phandle == 0) || (phandle == -1))
+		return -FDT_ERR_BADPHANDLE;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we
+	 * potentially scan each property of a node in
+	 * fdt_get_phandle(), then if that didn't find what
+	 * we want, we scan over them again making our way to the next
+	 * node.  Still it's the easiest to implement approach;
+	 * performance can come later. */
+	for (offset = fdt_next_node(fdt, -1, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		if (fdt_get_phandle(fdt, offset) == phandle)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+static int _fdt_stringlist_contains(const char *strlist, int listlen,
+				    const char *str)
+{
+	int len = strlen(str);
+	const char *p;
+
+	while (listlen >= len) {
+		if (memcmp(str, strlist, len+1) == 0)
+			return 1;
+		p = memchr(strlist, '\0', listlen);
+		if (!p)
+			return 0; /* malformed strlist.. */
+		listlen -= (p-strlist) + 1;
+		strlist = p + 1;
+	}
+	return 0;
+}
+
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible)
+{
+	const void *prop;
+	int len;
+
+	prop = fdt_getprop(fdt, nodeoffset, "compatible", &len);
+	if (!prop)
+		return len;
+	if (_fdt_stringlist_contains(prop, len, compatible))
+		return 0;
+	else
+		return 1;
+}
+
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible)
+{
+	int offset, err;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_node_check_compatible(), then if
+	 * that didn't find what we want, we scan over them again
+	 * making our way to the next node.  Still it's the easiest to
+	 * implement approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		err = fdt_node_check_compatible(fdt, offset, compatible);
+		if ((err < 0) && (err != -FDT_ERR_NOTFOUND))
+			return err;
+		else if (err == 0)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
diff --git a/xen/common/libfdt/fdt_rw.c b/xen/common/libfdt/fdt_rw.c
new file mode 100644
index 0000000..994037b
--- /dev/null
+++ b/xen/common/libfdt/fdt_rw.c
@@ -0,0 +1,465 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_blocks_misordered(const void *fdt,
+			      int mem_rsv_size, int struct_size)
+{
+	return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8))
+		|| (fdt_off_dt_struct(fdt) <
+		    (fdt_off_mem_rsvmap(fdt) + mem_rsv_size))
+		|| (fdt_off_dt_strings(fdt) <
+		    (fdt_off_dt_struct(fdt) + struct_size))
+		|| (fdt_totalsize(fdt) <
+		    (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)));
+}
+
+static int _fdt_rw_check_header(void *fdt)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_version(fdt) < 17)
+		return -FDT_ERR_BADVERSION;
+	if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry),
+				   fdt_size_dt_struct(fdt)))
+		return -FDT_ERR_BADLAYOUT;
+	if (fdt_version(fdt) > 17)
+		fdt_set_version(fdt, 17);
+
+	return 0;
+}
+
+#define FDT_RW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_rw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static inline int _fdt_data_size(void *fdt)
+{
+	return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+}
+
+static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen)
+{
+	char *p = splicepoint;
+	char *end = (char *)fdt + _fdt_data_size(fdt);
+
+	if (((p + oldlen) < p) || ((p + oldlen) > end))
+		return -FDT_ERR_BADOFFSET;
+	if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt)))
+		return -FDT_ERR_NOSPACE;
+	memmove(p + newlen, p + oldlen, end - p - oldlen);
+	return 0;
+}
+
+static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p,
+			       int oldn, int newn)
+{
+	int delta = (newn - oldn) * sizeof(*p);
+	int err;
+	err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p));
+	if (err)
+		return err;
+	fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_struct(void *fdt, void *p,
+			      int oldlen, int newlen)
+{
+	int delta = newlen - oldlen;
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, oldlen, newlen)))
+		return err;
+
+	fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_string(void *fdt, int newlen)
+{
+	void *p = (char *)fdt
+		+ fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, 0, newlen)))
+		return err;
+
+	fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_off_dt_strings(fdt);
+	const char *p;
+	char *new;
+	int len = strlen(s) + 1;
+	int err;
+
+	p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s);
+	if (p)
+		/* found it */
+		return (p - strtab);
+
+	new = strtab + fdt_size_dt_strings(fdt);
+	err = _fdt_splice_string(fdt, len);
+	if (err)
+		return err;
+
+	memcpy(new, s, len);
+	return (new - strtab);
+}
+
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt));
+	err = _fdt_splice_mem_rsv(fdt, re, 0, 1);
+	if (err)
+		return err;
+
+	re->address = cpu_to_fdt64(address);
+	re->size = cpu_to_fdt64(size);
+	return 0;
+}
+
+int fdt_del_mem_rsv(void *fdt, int n)
+{
+	struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n);
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	if (n >= fdt_num_mem_rsv(fdt))
+		return -FDT_ERR_NOTFOUND;
+
+	err = _fdt_splice_mem_rsv(fdt, re, 1, 0);
+	if (err)
+		return err;
+	return 0;
+}
+
+static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name,
+				int len, struct fdt_property **prop)
+{
+	int oldlen;
+	int err;
+
+	*prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
+	if (! (*prop))
+		return oldlen;
+
+	if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen),
+				      FDT_TAGALIGN(len))))
+		return err;
+
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+static int _fdt_add_property(void *fdt, int nodeoffset, const char *name,
+			     int len, struct fdt_property **prop)
+{
+	int proplen;
+	int nextoffset;
+	int namestroff;
+	int err;
+
+	if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return nextoffset;
+
+	namestroff = _fdt_find_add_string(fdt, name);
+	if (namestroff < 0)
+		return namestroff;
+
+	*prop = _fdt_offset_ptr_w(fdt, nextoffset);
+	proplen = sizeof(**prop) + FDT_TAGALIGN(len);
+
+	err = _fdt_splice_struct(fdt, *prop, 0, proplen);
+	if (err)
+		return err;
+
+	(*prop)->tag = cpu_to_fdt32(FDT_PROP);
+	(*prop)->nameoff = cpu_to_fdt32(namestroff);
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+int fdt_set_name(void *fdt, int nodeoffset, const char *name)
+{
+	char *namep;
+	int oldlen, newlen;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	namep = (char *)(uintptr_t)fdt_get_name(fdt, nodeoffset, &oldlen);
+	if (!namep)
+		return oldlen;
+
+	newlen = strlen(name);
+
+	err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1),
+				 FDT_TAGALIGN(newlen+1));
+	if (err)
+		return err;
+
+	memcpy(namep, name, newlen+1);
+	return 0;
+}
+
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len)
+{
+	struct fdt_property *prop;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop);
+	if (err == -FDT_ERR_NOTFOUND)
+		err = _fdt_add_property(fdt, nodeoffset, name, len, &prop);
+	if (err)
+		return err;
+
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_delprop(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len, proplen;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	proplen = sizeof(*prop) + FDT_TAGALIGN(len);
+	return _fdt_splice_struct(fdt, prop, proplen, 0);
+}
+
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen)
+{
+	struct fdt_node_header *nh;
+	int offset, nextoffset;
+	int nodelen;
+	int err;
+	uint32_t tag;
+	uint32_t *endtag;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	offset = fdt_subnode_offset_namelen(fdt, parentoffset, name, namelen);
+	if (offset >= 0)
+		return -FDT_ERR_EXISTS;
+	else if (offset != -FDT_ERR_NOTFOUND)
+		return offset;
+
+	/* Try to place the new node after the parent's properties */
+	fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+	} while ((tag == FDT_PROP) || (tag == FDT_NOP));
+
+	nh = _fdt_offset_ptr_w(fdt, offset);
+	nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE;
+
+	err = _fdt_splice_struct(fdt, nh, 0, nodelen);
+	if (err)
+		return err;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memset(nh->name, 0, FDT_TAGALIGN(namelen+1));
+	memcpy(nh->name, name, namelen);
+	endtag = (uint32_t *)((char *)nh + nodelen - FDT_TAGSIZE);
+	*endtag = cpu_to_fdt32(FDT_END_NODE);
+
+	return offset;
+}
+
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name)
+{
+	return fdt_add_subnode_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_del_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset),
+				  endoffset - nodeoffset, 0);
+}
+
+static void _fdt_packblocks(const char *old, char *new,
+			    int mem_rsv_size, int struct_size)
+{
+	int mem_rsv_off, struct_off, strings_off;
+
+	mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
+	struct_off = mem_rsv_off + mem_rsv_size;
+	strings_off = struct_off + struct_size;
+
+	memmove(new + mem_rsv_off, old + fdt_off_mem_rsvmap(old), mem_rsv_size);
+	fdt_set_off_mem_rsvmap(new, mem_rsv_off);
+
+	memmove(new + struct_off, old + fdt_off_dt_struct(old), struct_size);
+	fdt_set_off_dt_struct(new, struct_off);
+	fdt_set_size_dt_struct(new, struct_size);
+
+	memmove(new + strings_off, old + fdt_off_dt_strings(old),
+		fdt_size_dt_strings(old));
+	fdt_set_off_dt_strings(new, strings_off);
+	fdt_set_size_dt_strings(new, fdt_size_dt_strings(old));
+}
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize)
+{
+	int err;
+	int mem_rsv_size, struct_size;
+	int newsize;
+	const char *fdtstart = fdt;
+	const char *fdtend = fdtstart + fdt_totalsize(fdt);
+	char *tmp;
+
+	FDT_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+
+	if (fdt_version(fdt) >= 17) {
+		struct_size = fdt_size_dt_struct(fdt);
+	} else {
+		struct_size = 0;
+		while (fdt_next_tag(fdt, struct_size, &struct_size) != FDT_END)
+			;
+		if (struct_size < 0)
+			return struct_size;
+	}
+
+	if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) {
+		/* no further work necessary */
+		err = fdt_move(fdt, buf, bufsize);
+		if (err)
+			return err;
+		fdt_set_version(buf, 17);
+		fdt_set_size_dt_struct(buf, struct_size);
+		fdt_set_totalsize(buf, bufsize);
+		return 0;
+	}
+
+	/* Need to reorder */
+	newsize = FDT_ALIGN(sizeof(struct fdt_header), 8) + mem_rsv_size
+		+ struct_size + fdt_size_dt_strings(fdt);
+
+	if (bufsize < newsize)
+		return -FDT_ERR_NOSPACE;
+
+	/* First attempt to build converted tree at beginning of buffer */
+	tmp = buf;
+	/* But if that overlaps with the old tree... */
+	if (((tmp + newsize) > fdtstart) && (tmp < fdtend)) {
+		/* Try right after the old tree instead */
+		tmp = (char *)(uintptr_t)fdtend;
+		if ((tmp + newsize) > ((char *)buf + bufsize))
+			return -FDT_ERR_NOSPACE;
+	}
+
+	_fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size);
+	memmove(buf, tmp, newsize);
+
+	fdt_set_magic(buf, FDT_MAGIC);
+	fdt_set_totalsize(buf, bufsize);
+	fdt_set_version(buf, 17);
+	fdt_set_last_comp_version(buf, 16);
+	fdt_set_boot_cpuid_phys(buf, fdt_boot_cpuid_phys(fdt));
+
+	return 0;
+}
+
+int fdt_pack(void *fdt)
+{
+	int mem_rsv_size;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+	_fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt));
+	fdt_set_totalsize(fdt, _fdt_data_size(fdt));
+
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt_strerror.c b/xen/common/libfdt/fdt_strerror.c
new file mode 100644
index 0000000..e6c3cee
--- /dev/null
+++ b/xen/common/libfdt/fdt_strerror.c
@@ -0,0 +1,96 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+struct fdt_errtabent {
+	const char *str;
+};
+
+#define FDT_ERRTABENT(val) \
+	[(val)] = { .str = #val, }
+
+static struct fdt_errtabent fdt_errtable[] = {
+	FDT_ERRTABENT(FDT_ERR_NOTFOUND),
+	FDT_ERRTABENT(FDT_ERR_EXISTS),
+	FDT_ERRTABENT(FDT_ERR_NOSPACE),
+
+	FDT_ERRTABENT(FDT_ERR_BADOFFSET),
+	FDT_ERRTABENT(FDT_ERR_BADPATH),
+	FDT_ERRTABENT(FDT_ERR_BADSTATE),
+
+	FDT_ERRTABENT(FDT_ERR_TRUNCATED),
+	FDT_ERRTABENT(FDT_ERR_BADMAGIC),
+	FDT_ERRTABENT(FDT_ERR_BADVERSION),
+	FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
+	FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
+};
+#define FDT_ERRTABSIZE	(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
+
+const char *fdt_strerror(int errval)
+{
+	if (errval > 0)
+		return "<valid offset/length>";
+	else if (errval == 0)
+		return "<no error>";
+	else if (errval > -FDT_ERRTABSIZE) {
+		const char *s = fdt_errtable[-errval].str;
+
+		if (s)
+			return s;
+	}
+
+	return "<unknown error>";
+}
diff --git a/xen/common/libfdt/fdt_sw.c b/xen/common/libfdt/fdt_sw.c
new file mode 100644
index 0000000..55ebebf
--- /dev/null
+++ b/xen/common/libfdt/fdt_sw.c
@@ -0,0 +1,256 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_sw_check_header(void *fdt)
+{
+	if (fdt_magic(fdt) != FDT_SW_MAGIC)
+		return -FDT_ERR_BADMAGIC;
+	/* FIXME: should check more details about the header state */
+	return 0;
+}
+
+#define FDT_SW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_sw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static void *_fdt_grab_space(void *fdt, size_t len)
+{
+	int offset = fdt_size_dt_struct(fdt);
+	int spaceleft;
+
+	spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt)
+		- fdt_size_dt_strings(fdt);
+
+	if ((offset + len < offset) || (offset + len > spaceleft))
+		return NULL;
+
+	fdt_set_size_dt_struct(fdt, offset + len);
+	return _fdt_offset_ptr_w(fdt, offset);
+}
+
+int fdt_create(void *buf, int bufsize)
+{
+	void *fdt = buf;
+
+	if (bufsize < sizeof(struct fdt_header))
+		return -FDT_ERR_NOSPACE;
+
+	memset(buf, 0, bufsize);
+
+	fdt_set_magic(fdt, FDT_SW_MAGIC);
+	fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION);
+	fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION);
+	fdt_set_totalsize(fdt,  bufsize);
+
+	fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header),
+					      sizeof(struct fdt_reserve_entry)));
+	fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt));
+	fdt_set_off_dt_strings(fdt, bufsize);
+
+	return 0;
+}
+
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int offset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	if (fdt_size_dt_struct(fdt))
+		return -FDT_ERR_BADSTATE;
+
+	offset = fdt_off_dt_struct(fdt);
+	if ((offset + sizeof(*re)) > fdt_totalsize(fdt))
+		return -FDT_ERR_NOSPACE;
+
+	re = (struct fdt_reserve_entry *)((char *)fdt + offset);
+	re->address = cpu_to_fdt64(addr);
+	re->size = cpu_to_fdt64(size);
+
+	fdt_set_off_dt_struct(fdt, offset + sizeof(*re));
+
+	return 0;
+}
+
+int fdt_finish_reservemap(void *fdt)
+{
+	return fdt_add_reservemap_entry(fdt, 0, 0);
+}
+
+int fdt_begin_node(void *fdt, const char *name)
+{
+	struct fdt_node_header *nh;
+	int namelen = strlen(name) + 1;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen));
+	if (! nh)
+		return -FDT_ERR_NOSPACE;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memcpy(nh->name, name, namelen);
+	return 0;
+}
+
+int fdt_end_node(void *fdt)
+{
+	uint32_t *en;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	en = _fdt_grab_space(fdt, FDT_TAGSIZE);
+	if (! en)
+		return -FDT_ERR_NOSPACE;
+
+	*en = cpu_to_fdt32(FDT_END_NODE);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_totalsize(fdt);
+	const char *p;
+	int strtabsize = fdt_size_dt_strings(fdt);
+	int len = strlen(s) + 1;
+	int struct_top, offset;
+
+	p = _fdt_find_string(strtab - strtabsize, strtabsize, s);
+	if (p)
+		return p - strtab;
+
+	/* Add it */
+	offset = -strtabsize - len;
+	struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	if (fdt_totalsize(fdt) + offset < struct_top)
+		return 0; /* no more room :( */
+
+	memcpy(strtab + offset, s, len);
+	fdt_set_size_dt_strings(fdt, strtabsize + len);
+	return offset;
+}
+
+int fdt_property(void *fdt, const char *name, const void *val, int len)
+{
+	struct fdt_property *prop;
+	int nameoff;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nameoff = _fdt_find_add_string(fdt, name);
+	if (nameoff == 0)
+		return -FDT_ERR_NOSPACE;
+
+	prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len));
+	if (! prop)
+		return -FDT_ERR_NOSPACE;
+
+	prop->tag = cpu_to_fdt32(FDT_PROP);
+	prop->nameoff = cpu_to_fdt32(nameoff);
+	prop->len = cpu_to_fdt32(len);
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_finish(void *fdt)
+{
+	char *p = (char *)fdt;
+	uint32_t *end;
+	int oldstroffset, newstroffset;
+	uint32_t tag;
+	int offset, nextoffset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	/* Add terminator */
+	end = _fdt_grab_space(fdt, sizeof(*end));
+	if (! end)
+		return -FDT_ERR_NOSPACE;
+	*end = cpu_to_fdt32(FDT_END);
+
+	/* Relocate the string table */
+	oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt);
+	newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt));
+	fdt_set_off_dt_strings(fdt, newstroffset);
+
+	/* Walk the structure, correcting string offsets */
+	offset = 0;
+	while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) {
+		if (tag == FDT_PROP) {
+			struct fdt_property *prop =
+				_fdt_offset_ptr_w(fdt, offset);
+			int nameoff;
+
+			nameoff = fdt32_to_cpu(prop->nameoff);
+			nameoff += fdt_size_dt_strings(fdt);
+			prop->nameoff = cpu_to_fdt32(nameoff);
+		}
+		offset = nextoffset;
+	}
+	if (nextoffset < 0)
+		return nextoffset;
+
+	/* Finally, adjust the header */
+	fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt));
+	fdt_set_magic(fdt, FDT_MAGIC);
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt_wip.c b/xen/common/libfdt/fdt_wip.c
new file mode 100644
index 0000000..6025fa1
--- /dev/null
+++ b/xen/common/libfdt/fdt_wip.c
@@ -0,0 +1,118 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len)
+{
+	void *propval;
+	int proplen;
+
+	propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen);
+	if (! propval)
+		return proplen;
+
+	if (proplen != len)
+		return -FDT_ERR_NOSPACE;
+
+	memcpy(propval, val, len);
+	return 0;
+}
+
+static void _fdt_nop_region(void *start, int len)
+{
+	uint32_t *p;
+
+	for (p = start; (char *)p < ((char *)start + len); p++)
+		*p = cpu_to_fdt32(FDT_NOP);
+}
+
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len;
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	_fdt_nop_region(prop, len + sizeof(*prop));
+
+	return 0;
+}
+
+int _fdt_node_end_offset(void *fdt, int offset)
+{
+	int depth = 0;
+
+	while ((offset >= 0) && (depth >= 0))
+		offset = fdt_next_node(fdt, offset, &depth);
+
+	return offset;
+}
+
+int fdt_nop_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	_fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0),
+			endoffset - nodeoffset);
+	return 0;
+}
diff --git a/xen/common/libfdt/libfdt.h b/xen/common/libfdt/libfdt.h
new file mode 100644
index 0000000..55f3eb3
--- /dev/null
+++ b/xen/common/libfdt/libfdt.h
@@ -0,0 +1,1235 @@
+#ifndef _LIBFDT_H
+#define _LIBFDT_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <libfdt_env.h>
+#include <fdt.h>
+
+#define FDT_FIRST_SUPPORTED_VERSION	0x10
+#define FDT_LAST_SUPPORTED_VERSION	0x11
+
+/* Error codes: informative error codes */
+#define FDT_ERR_NOTFOUND	1
+	/* FDT_ERR_NOTFOUND: The requested node or property does not exist */
+#define FDT_ERR_EXISTS		2
+	/* FDT_ERR_EXISTS: Attemped to create a node or property which
+	 * already exists */
+#define FDT_ERR_NOSPACE		3
+	/* FDT_ERR_NOSPACE: Operation needed to expand the device
+	 * tree, but its buffer did not have sufficient space to
+	 * contain the expanded tree. Use fdt_open_into() to move the
+	 * device tree to a buffer with more space. */
+
+/* Error codes: codes for bad parameters */
+#define FDT_ERR_BADOFFSET	4
+	/* FDT_ERR_BADOFFSET: Function was passed a structure block
+	 * offset which is out-of-bounds, or which points to an
+	 * unsuitable part of the structure for the operation. */
+#define FDT_ERR_BADPATH		5
+	/* FDT_ERR_BADPATH: Function was passed a badly formatted path
+	 * (e.g. missing a leading / for a function which requires an
+	 * absolute path) */
+#define FDT_ERR_BADPHANDLE	6
+	/* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle
+	 * value.  phandle values of 0 and -1 are not permitted. */
+#define FDT_ERR_BADSTATE	7
+	/* FDT_ERR_BADSTATE: Function was passed an incomplete device
+	 * tree created by the sequential-write functions, which is
+	 * not sufficiently complete for the requested operation. */
+
+/* Error codes: codes for bad device tree blobs */
+#define FDT_ERR_TRUNCATED	8
+	/* FDT_ERR_TRUNCATED: Structure block of the given device tree
+	 * ends without an FDT_END tag. */
+#define FDT_ERR_BADMAGIC	9
+	/* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a
+	 * device tree at all - it is missing the flattened device
+	 * tree magic number. */
+#define FDT_ERR_BADVERSION	10
+	/* FDT_ERR_BADVERSION: Given device tree has a version which
+	 * can't be handled by the requested operation.  For
+	 * read-write functions, this may mean that fdt_open_into() is
+	 * required to convert the tree to the expected version. */
+#define FDT_ERR_BADSTRUCTURE	11
+	/* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt
+	 * structure block or other serious error (e.g. misnested
+	 * nodes, or subnodes preceding properties). */
+#define FDT_ERR_BADLAYOUT	12
+	/* FDT_ERR_BADLAYOUT: For read-write functions, the given
+	 * device tree has it's sub-blocks in an order that the
+	 * function can't handle (memory reserve map, then structure,
+	 * then strings).  Use fdt_open_into() to reorganize the tree
+	 * into a form suitable for the read-write operations. */
+
+/* "Can't happen" error indicating a bug in libfdt */
+#define FDT_ERR_INTERNAL	13
+	/* FDT_ERR_INTERNAL: libfdt has failed an internal assertion.
+	 * Should never be returned, if it is, it indicates a bug in
+	 * libfdt itself. */
+
+#define FDT_ERR_MAX		13
+
+/**********************************************************************/
+/* Low-level functions (you probably don't need these)                */
+/**********************************************************************/
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
+static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
+{
+	return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
+}
+
+uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
+
+/**********************************************************************/
+/* Traversal functions                                                */
+/**********************************************************************/
+
+int fdt_next_node(const void *fdt, int offset, int *depth);
+
+/**********************************************************************/
+/* General functions                                                  */
+/**********************************************************************/
+
+#define fdt_get_header(fdt, field) \
+	(fdt32_to_cpu(((const struct fdt_header *)(fdt))->field))
+#define fdt_magic(fdt) 			(fdt_get_header(fdt, magic))
+#define fdt_totalsize(fdt)		(fdt_get_header(fdt, totalsize))
+#define fdt_off_dt_struct(fdt)		(fdt_get_header(fdt, off_dt_struct))
+#define fdt_off_dt_strings(fdt)		(fdt_get_header(fdt, off_dt_strings))
+#define fdt_off_mem_rsvmap(fdt)		(fdt_get_header(fdt, off_mem_rsvmap))
+#define fdt_version(fdt)		(fdt_get_header(fdt, version))
+#define fdt_last_comp_version(fdt) 	(fdt_get_header(fdt, last_comp_version))
+#define fdt_boot_cpuid_phys(fdt) 	(fdt_get_header(fdt, boot_cpuid_phys))
+#define fdt_size_dt_strings(fdt) 	(fdt_get_header(fdt, size_dt_strings))
+#define fdt_size_dt_struct(fdt)		(fdt_get_header(fdt, size_dt_struct))
+
+#define __fdt_set_hdr(name) \
+	static inline void fdt_set_##name(void *fdt, uint32_t val) \
+	{ \
+		struct fdt_header *fdth = (struct fdt_header*)fdt; \
+		fdth->name = cpu_to_fdt32(val); \
+	}
+__fdt_set_hdr(magic);
+__fdt_set_hdr(totalsize);
+__fdt_set_hdr(off_dt_struct);
+__fdt_set_hdr(off_dt_strings);
+__fdt_set_hdr(off_mem_rsvmap);
+__fdt_set_hdr(version);
+__fdt_set_hdr(last_comp_version);
+__fdt_set_hdr(boot_cpuid_phys);
+__fdt_set_hdr(size_dt_strings);
+__fdt_set_hdr(size_dt_struct);
+#undef __fdt_set_hdr
+
+/**
+ * fdt_check_header - sanity check a device tree or possible device tree
+ * @fdt: pointer to data which might be a flattened device tree
+ *
+ * fdt_check_header() checks that the given buffer contains what
+ * appears to be a flattened device tree with sane information in its
+ * header.
+ *
+ * returns:
+ *     0, if the buffer appears to contain a valid device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings, as above
+ */
+int fdt_check_header(const void *fdt);
+
+/**
+ * fdt_move - move a device tree around in memory
+ * @fdt: pointer to the device tree to move
+ * @buf: pointer to memory where the device is to be moved
+ * @bufsize: size of the memory space at buf
+ *
+ * fdt_move() relocates, if possible, the device tree blob located at
+ * fdt to the buffer at buf of size bufsize.  The buffer may overlap
+ * with the existing device tree blob at fdt.  Therefore,
+ *     fdt_move(fdt, fdt, fdt_totalsize(fdt))
+ * should always succeed.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_move(const void *fdt, void *buf, int bufsize);
+
+/**********************************************************************/
+/* Read-only functions                                                */
+/**********************************************************************/
+
+/**
+ * fdt_string - retrieve a string from the strings block of a device tree
+ * @fdt: pointer to the device tree blob
+ * @stroffset: offset of the string within the strings block (native endian)
+ *
+ * fdt_string() retrieves a pointer to a single string from the
+ * strings block of the device tree blob at fdt.
+ *
+ * returns:
+ *     a pointer to the string, on success
+ *     NULL, if stroffset is out of bounds
+ */
+const char *fdt_string(const void *fdt, int stroffset);
+
+/**
+ * fdt_num_mem_rsv - retrieve the number of memory reserve map entries
+ * @fdt: pointer to the device tree blob
+ *
+ * Returns the number of entries in the device tree blob's memory
+ * reservation map.  This does not include the terminating 0,0 entry
+ * or any other (0,0) entries reserved for expansion.
+ *
+ * returns:
+ *     the number of entries
+ */
+int fdt_num_mem_rsv(const void *fdt);
+
+/**
+ * fdt_get_mem_rsv - retrieve one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: pointers to 64-bit variables
+ *
+ * On success, *address and *size will contain the address and size of
+ * the n-th reserve map entry from the device tree blob, in
+ * native-endian format.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size);
+
+/**
+ * fdt_subnode_offset_namelen - find a subnode based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_subnode_offset(), but only examine the first
+ * namelen characters of name for matching the subnode name.  This is
+ * useful for finding subnodes based on a portion of a larger string,
+ * such as a full path.
+ */
+int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
+			       const char *name, int namelen);
+/**
+ * fdt_subnode_offset - find a subnode of a given node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_subnode_offset() finds a subnode of the node at structure block
+ * offset parentoffset with the given name.  name may include a unit
+ * address, in which case fdt_subnode_offset() will find the subnode
+ * with that unit address, or the unit address may be omitted, in
+ * which case fdt_subnode_offset() will find an arbitrary subnode
+ * whose name excluding unit address matches the given name.
+ *
+ * returns:
+ *	structure block offset of the requested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_path_offset - find a tree node by its full path
+ * @fdt: pointer to the device tree blob
+ * @path: full path of the node to locate
+ *
+ * fdt_path_offset() finds a node of a given path in the device tree.
+ * Each path component may omit the unit address portion, but the
+ * results of this are undefined if any such path component is
+ * ambiguous (that is if there are multiple nodes at the relevant
+ * level matching the given component, differentiated only by unit
+ * address).
+ *
+ * returns:
+ *	structure block offset of the node with the requested path (>=0), on success
+ *	-FDT_ERR_BADPATH, given path does not begin with '/' or is invalid
+ *	-FDT_ERR_NOTFOUND, if the requested node does not exist
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_path_offset(const void *fdt, const char *path);
+
+/**
+ * fdt_get_name - retrieve the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the starting node
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_name() retrieves the name (including unit address) of the
+ * device tree node at structure block offset nodeoffset.  If lenp is
+ * non-NULL, the length of this name is also returned, in the integer
+ * pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the node's name, on success
+ *		If lenp is non-NULL, *lenp contains the length of that name (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE, standard meanings
+ */
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
+
+/**
+ * fdt_first_property_offset - find the offset of a node's first property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ *
+ * fdt_first_property_offset() finds the first property of the node at
+ * the given structure block offset.
+ *
+ * returns:
+ *	structure block offset of the property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested node has no properties
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_first_property_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_next_property_offset - step through a node's properties
+ * @fdt: pointer to the device tree blob
+ * @offset: structure block offset of a property
+ *
+ * fdt_next_property_offset() finds the property immediately after the
+ * one at the given structure block offset.  This will be a property
+ * of the same node as the given property.
+ *
+ * returns:
+ *	structure block offset of the next property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the given property is the last in its node
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_next_property_offset(const void *fdt, int offset);
+
+/**
+ * fdt_get_property_by_offset - retrieve the property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @offset: offset of the property to retrieve
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property_by_offset() retrieves a pointer to the
+ * fdt_property structure within the device tree blob at the given
+ * offset.  If lenp is non-NULL, the length of the property value is
+ * also returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp);
+
+/**
+ * fdt_get_property_namelen - find a property based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_get_property_namelen(), but only examine the first
+ * namelen characters of name for matching the property name.
+ */
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int nodeoffset,
+						    const char *name,
+						    int namelen, int *lenp);
+
+/**
+ * fdt_get_property - find a given property in a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property() retrieves a pointer to the fdt_property
+ * structure within the device tree blob corresponding to the property
+ * named 'name' of the node at offset nodeoffset.  If lenp is
+ * non-NULL, the length of the property value is also returned, in the
+ * integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
+					    const char *name, int *lenp);
+static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,
+						      const char *name,
+						      int *lenp)
+{
+	return (struct fdt_property *)(uintptr_t)
+		fdt_get_property(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_getprop_by_offset - retrieve the value of a property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @ffset: offset of the property to read
+ * @namep: pointer to a string variable (will be overwritten) or NULL
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop_by_offset() retrieves a pointer to the value of the
+ * property at structure block offset 'offset' (this will be a pointer
+ * to within the device blob itself, not a copy of the value).  If
+ * lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.  If namep is non-NULL,
+ * the property's namne will also be returned in the char * pointed to
+ * by namep (this will be a pointer to within the device tree's string
+ * block, not a new copy of the name).
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *		if namep is non-NULL *namep contiains a pointer to the property
+ *		name.
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp);
+
+/**
+ * fdt_getprop_namelen - get property value based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_getprop(), but only examine the first namelen
+ * characters of name for matching the property name.
+ */
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp);
+
+/**
+ * fdt_getprop - retrieve the value of a given property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop() retrieves a pointer to the value of the property
+ * named 'name' of the node at offset nodeoffset (this will be a
+ * pointer to within the device blob itself, not a copy of the value).
+ * If lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp);
+static inline void *fdt_getprop_w(void *fdt, int nodeoffset,
+				  const char *name, int *lenp)
+{
+	return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_get_phandle - retrieve the phandle of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the node
+ *
+ * fdt_get_phandle() retrieves the phandle of the device tree node at
+ * structure block offset nodeoffset.
+ *
+ * returns:
+ *	the phandle of the node at nodeoffset, on success (!= 0, != -1)
+ *	0, if the node has no phandle, or another error occurs
+ */
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_get_alias_namelen - get alias based on substring
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_get_alias(), but only examine the first namelen
+ * characters of name for matching the alias name.
+ */
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen);
+
+/**
+ * fdt_get_alias - retreive the path referenced by a given alias
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ *
+ * fdt_get_alias() retrieves the value of a given alias.  That is, the
+ * value of the property named 'name' in the node /aliases.
+ *
+ * returns:
+ *	a pointer to the expansion of the alias named 'name', of it exists
+ *	NULL, if the given alias or the /aliases node does not exist
+ */
+const char *fdt_get_alias(const void *fdt, const char *name);
+
+/**
+ * fdt_get_path - determine the full path of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose path to find
+ * @buf: character buffer to contain the returned path (will be overwritten)
+ * @buflen: size of the character buffer at buf
+ *
+ * fdt_get_path() computes the full path of the node at offset
+ * nodeoffset, and records that path in the buffer at buf.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	0, on success
+ *		buf contains the absolute path of the node at
+ *		nodeoffset, as a NUL-terminated string.
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1)
+ *		characters and will not fit in the given buffer.
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);
+
+/**
+ * fdt_supernode_atdepth_offset - find a specific ancestor of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ * @supernodedepth: depth of the ancestor to find
+ * @nodedepth: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_supernode_atdepth_offset() finds an ancestor of the given node
+ * at a specific depth from the root (where the root itself has depth
+ * 0, its immediate subnodes depth 1 and so forth).  So
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL);
+ * will always return 0, the offset of the root node.  If the node at
+ * nodeoffset has depth D, then:
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL);
+ * will return nodeoffset itself.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+
+ *	structure block offset of the node at node offset's ancestor
+ *		of depth supernodedepth (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+*	-FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth);
+
+/**
+ * fdt_node_depth - find the depth of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_node_depth() finds the depth of a given node.  The root node
+ * has depth 0, its immediate subnodes depth 1 and so forth.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	depth of the node at nodeoffset (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_depth(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_parent_offset - find the parent of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_parent_offset() locates the parent node of a given node (that
+ * is, it finds the offset of the node which contains the node at
+ * nodeoffset as a subnode).
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset, *twice*.
+ *
+ * returns:
+ *	structure block offset of the parent of the node at nodeoffset
+ *		(>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_parent_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_node_offset_by_prop_value - find nodes with a given property value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @propname: property name to check
+ * @propval: property value to search for
+ * @proplen: length of the value in propval
+ *
+ * fdt_node_offset_by_prop_value() returns the offset of the first
+ * node after startoffset, which has a property named propname whose
+ * value is of length proplen and has value equal to propval; or if
+ * startoffset is -1, the very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_prop_value(fdt, -1, propname,
+ *					       propval, proplen);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_prop_value(fdt, offset, propname,
+ *						       propval, proplen);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen);
+
+/**
+ * fdt_node_offset_by_phandle - find the node with a given phandle
+ * @fdt: pointer to the device tree blob
+ * @phandle: phandle value
+ *
+ * fdt_node_offset_by_phandle() returns the offset of the node
+ * which has the given phandle value.  If there is more than one node
+ * in the tree with the given phandle (an invalid tree), results are
+ * undefined.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0), on success
+ *	-FDT_ERR_NOTFOUND, no node with that phandle exists
+ *	-FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);
+
+/**
+ * fdt_node_check_compatible: check a node's compatible property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of a tree node
+ * @compatible: string to match against
+ *
+ *
+ * fdt_node_check_compatible() returns 0 if the given node contains a
+ * 'compatible' property with the given string as one of its elements,
+ * it returns non-zero otherwise, or on error.
+ *
+ * returns:
+ *	0, if the node has a 'compatible' property listing the given string
+ *	1, if the node has a 'compatible' property, but it does not list
+ *		the given string
+ *	-FDT_ERR_NOTFOUND, if the given node has no 'compatible' property
+ * 	-FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible);
+
+/**
+ * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @compatible: 'compatible' string to match against
+ *
+ * fdt_node_offset_by_compatible() returns the offset of the first
+ * node after startoffset, which has a 'compatible' property which
+ * lists the given compatible string; or if startoffset is -1, the
+ * very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_compatible(fdt, -1, compatible);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_compatible(fdt, offset, compatible);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible);
+
+/**********************************************************************/
+/* Write-in-place functions                                           */
+/**********************************************************************/
+
+/**
+ * fdt_setprop_inplace - change a property's value, but not its size
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to replace the property value with
+ * @len: length of the property value
+ *
+ * fdt_setprop_inplace() replaces the value of a given property with
+ * the data in val, of length len.  This function cannot change the
+ * size of a property, and so will only work if len is equal to the
+ * current length of the property.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if len is not equal to the property's current length
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len);
+
+/**
+ * fdt_setprop_inplace_cell - change the value of a single-cell property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: cell (32-bit integer) value to replace the property with
+ *
+ * fdt_setprop_inplace_cell() replaces the value of a given property
+ * with the 32-bit integer cell value in val, converting val to
+ * big-endian if necessary.  This function cannot change the size of a
+ * property, and so will only work if the property already exists and
+ * has length 4.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if the property's length is not equal to 4
+  *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
+					   const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_nop_property - replace a property with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_nop_property() will replace a given property's representation
+ * in the blob with FDT_NOP tags, effectively removing it from the
+ * tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the property, and will not alter or move any other part of the
+ * tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_nop_node - replace a node (subtree) with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_nop_node() will replace a given node's representation in the
+ * blob, including all its subnodes, if any, with FDT_NOP tags,
+ * effectively removing it from the tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the node and its properties and subnodes, and will not alter or
+ * move any other part of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Sequential write functions                                         */
+/**********************************************************************/
+
+int fdt_create(void *buf, int bufsize);
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
+int fdt_finish_reservemap(void *fdt);
+int fdt_begin_node(void *fdt, const char *name);
+int fdt_property(void *fdt, const char *name, const void *val, int len);
+static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_property(fdt, name, &val, sizeof(val));
+}
+#define fdt_property_string(fdt, name, str) \
+	fdt_property(fdt, name, str, strlen(str)+1)
+int fdt_end_node(void *fdt);
+int fdt_finish(void *fdt);
+
+/**********************************************************************/
+/* Read-write functions                                               */
+/**********************************************************************/
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize);
+int fdt_pack(void *fdt);
+
+/**
+ * fdt_add_mem_rsv - add one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: 64-bit values (native endian)
+ *
+ * Adds a reserve map entry to the given blob reserving a region at
+ * address address of length size.
+ *
+ * This function will insert data into the reserve map and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new reservation entry
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size);
+
+/**
+ * fdt_del_mem_rsv - remove a memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @n: entry to remove
+ *
+ * fdt_del_mem_rsv() removes the n-th memory reserve map entry from
+ * the blob.
+ *
+ * This function will delete data from the reservation table and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there
+ *		are less than n+1 reserve map entries)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_mem_rsv(void *fdt, int n);
+
+/**
+ * fdt_set_name - change the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ * @name: name to give the node
+ *
+ * fdt_set_name() replaces the name (including unit address, if any)
+ * of the given node with the given string.  NOTE: this function can't
+ * efficiently check if the new name is unique amongst the given
+ * node's siblings; results are undefined if this function is invoked
+ * with a name equal to one of the given node's siblings.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob
+ *		to contain the new name
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_set_name(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_setprop - create or change a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to set the property value to
+ * @len: length of the property value
+ *
+ * fdt_setprop() sets the value of the named property in the given
+ * node to the given value and length, creating the property if it
+ * does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len);
+
+/**
+ * fdt_setprop_cell - set a property to a single cell value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 32-bit integer value for the property (native endian)
+ *
+ * fdt_setprop_cell() sets the value of the named property in the
+ * given node to the given cell value (converting to big-endian if
+ * necessary), or creates a new property with that value if it does
+ * not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,
+				   uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_string - set a property to a string value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @str: string value for the property
+ *
+ * fdt_setprop_string() sets the value of the named property in the
+ * given node to the given string value (using the length of the
+ * string to determine the new length of the property), or creates a
+ * new property with that value if it does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+#define fdt_setprop_string(fdt, nodeoffset, name, str) \
+	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
+
+/**
+ * fdt_delprop - delete a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_del_property() will delete the given property.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_delprop(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_add_subnode_namelen - creates a new node based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_add_subnode(), but use only the first namelen
+ * characters of name as the name of the new node.  This is useful for
+ * creating subnodes based on a portion of a larger string, such as a
+ * full path.
+ */
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen);
+
+/**
+ * fdt_add_subnode - creates a new node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_add_subnode() creates a new node as a subnode of the node at
+ * structure block offset parentoffset, with the given name (which
+ * should include the unit address, if any).
+ *
+ * This function will insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+
+ * returns:
+ *	structure block offset of the created nodeequested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *	-FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of
+ *		the given name
+ *	-FDT_ERR_NOSPACE, if there is insufficient free space in the
+ *		blob to contain the new node
+ *	-FDT_ERR_NOSPACE
+ *	-FDT_ERR_BADLAYOUT
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_del_node - delete a node (subtree)
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_del_node() will remove the given node, including all its
+ * subnodes if any, from the blob.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Debugging / informational functions                                */
+/**********************************************************************/
+
+const char *fdt_strerror(int errval);
+
+#endif /* _LIBFDT_H */
diff --git a/xen/common/libfdt/libfdt_env.h b/xen/common/libfdt/libfdt_env.h
new file mode 100644
index 0000000..449bf60
--- /dev/null
+++ b/xen/common/libfdt/libfdt_env.h
@@ -0,0 +1,23 @@
+#ifndef _LIBFDT_ENV_H
+#define _LIBFDT_ENV_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define _B(n)	((unsigned long long)((uint8_t *)&x)[n])
+static inline uint32_t fdt32_to_cpu(uint32_t x)
+{
+	return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
+}
+#define cpu_to_fdt32(x) fdt32_to_cpu(x)
+
+static inline uint64_t fdt64_to_cpu(uint64_t x)
+{
+	return (_B(0) << 56) | (_B(1) << 48) | (_B(2) << 40) | (_B(3) << 32)
+		| (_B(4) << 24) | (_B(5) << 16) | (_B(6) << 8) | _B(7);
+}
+#define cpu_to_fdt64(x) fdt64_to_cpu(x)
+#undef _B
+
+#endif /* _LIBFDT_ENV_H */
diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
new file mode 100644
index 0000000..381133b
--- /dev/null
+++ b/xen/common/libfdt/libfdt_internal.h
@@ -0,0 +1,95 @@
+#ifndef _LIBFDT_INTERNAL_H
+#define _LIBFDT_INTERNAL_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <fdt.h>
+
+#define FDT_ALIGN(x, a)		(((x) + (a) - 1) & ~((a) - 1))
+#define FDT_TAGALIGN(x)		(FDT_ALIGN((x), FDT_TAGSIZE))
+
+#define FDT_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = fdt_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+int _fdt_check_node_offset(const void *fdt, int offset);
+int _fdt_check_prop_offset(const void *fdt, int offset);
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
+int _fdt_node_end_offset(void *fdt, int nodeoffset);
+
+static inline const void *_fdt_offset_ptr(const void *fdt, int offset)
+{
+	return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;
+}
+
+static inline void *_fdt_offset_ptr_w(void *fdt, int offset)
+{
+	return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);
+}
+
+static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)
+{
+	const struct fdt_reserve_entry *rsv_table =
+		(const struct fdt_reserve_entry *)
+		((const char *)fdt + fdt_off_mem_rsvmap(fdt));
+
+	return rsv_table + n;
+}
+static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)
+{
+	return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);
+}
+
+#define FDT_SW_MAGIC		(~FDT_MAGIC)
+
+#endif /* _LIBFDT_INTERNAL_H */
diff --git a/xen/common/libfdt/version.lds b/xen/common/libfdt/version.lds
new file mode 100644
index 0000000..3c3994e
--- /dev/null
+++ b/xen/common/libfdt/version.lds
@@ -0,0 +1,54 @@
+LIBFDT_1.2 {
+	global:
+		fdt_next_node;
+		fdt_check_header;
+		fdt_move;
+		fdt_string;
+		fdt_num_mem_rsv;
+		fdt_get_mem_rsv;
+		fdt_subnode_offset_namelen;
+		fdt_subnode_offset;
+		fdt_path_offset;
+		fdt_get_name;
+		fdt_get_property_namelen;
+		fdt_get_property;
+		fdt_getprop_namelen;
+		fdt_getprop;
+		fdt_get_phandle;
+		fdt_get_alias_namelen;
+		fdt_get_alias;
+		fdt_get_path;
+		fdt_supernode_atdepth_offset;
+		fdt_node_depth;
+		fdt_parent_offset;
+		fdt_node_offset_by_prop_value;
+		fdt_node_offset_by_phandle;
+		fdt_node_check_compatible;
+		fdt_node_offset_by_compatible;
+		fdt_setprop_inplace;
+		fdt_nop_property;
+		fdt_nop_node;
+		fdt_create;
+		fdt_add_reservemap_entry;
+		fdt_finish_reservemap;
+		fdt_begin_node;
+		fdt_property;
+		fdt_end_node;
+		fdt_finish;
+		fdt_open_into;
+		fdt_pack;
+		fdt_add_mem_rsv;
+		fdt_del_mem_rsv;
+		fdt_set_name;
+		fdt_setprop;
+		fdt_delprop;
+		fdt_add_subnode_namelen;
+		fdt_add_subnode;
+		fdt_del_node;
+		fdt_strerror;
+		fdt_offset_ptr;
+		fdt_next_tag;
+
+	local:
+		*;
+};
-- 
1.7.2.5


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

From xen-devel-bounces@lists.xensource.com Fri Feb 03 21:31:03 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Feb 2012 21:31:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RtQiI-0005Qi-E0; Fri, 03 Feb 2012 21:30:34 +0000
Received: from mail182.messagelabs.com ([85.158.139.83])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1RtJhE-00040p-VB
	for xen-devel@lists.xensource.com; Fri, 03 Feb 2012 14:01:02 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-10.tower-182.messagelabs.com!1328277653!13593206!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17219 invoked from network); 3 Feb 2012 14:00:54 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-10.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	3 Feb 2012 14:00:54 -0000
Received: by wibhm2 with SMTP id hm2so7299690wib.30
	for <xen-devel@lists.xensource.com>;
	Fri, 03 Feb 2012 06:00:53 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:subject:x-mercurial-node
	:message-id:user-agent:date:from:to;
	bh=YdoNxvwop33RfHl88IqibVkkd06gLqSc7Pm4Zz12t80=;
	b=AUj4ec+97GyucYoQk5NGMrfQ+BbA1fYInEAYTsaolfVSpVCEELFzwv3WqEZpCFNSH1
	4ze9JNH9cqYpLzRgdyo6g0A+aWbqJyM+gRPPWSfLGccx++xk2ErZuVGcsjndoUw4vf3d
	hK7TdJn+ahSOM30lciU/GS4MNMMzD5Le4v3yU=
Received: by 10.180.14.129 with SMTP id p1mr11724249wic.16.1328277653791;
	Fri, 03 Feb 2012 06:00:53 -0800 (PST)
Received: from build.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id eq5sm17697948wib.2.2012.02.03.06.00.48
	(version=TLSv1/SSLv3 cipher=OTHER);
	Fri, 03 Feb 2012 06:00:50 -0800 (PST)
Content-Type: multipart/mixed; boundary="===============6253512272991086591=="
MIME-Version: 1.0
X-Mercurial-Node: 837570e539a114f47d8a98b7a281481a81ac856f
Message-Id: <837570e539a114f47d8a.1326258829@build.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Wed, 11 Jan 2012 06:13:49 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xensource.com
X-Mailman-Approved-At: Fri, 03 Feb 2012 21:30:32 +0000
Subject: [Xen-devel] [PATCH v4 RESEND] build: add autoconf to replace custom
 checks in tools/check
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

--===============6253512272991086591==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Added autotools magic to replace custom check scripts. The previous
checks have been ported to autoconf, and some additional ones have
been added (plus the suggestions from running autoscan). Two files are
created as a result from executing configure script, config/Tools.mk
and config.h.

conf/Tools.mk is included by tools/Rules.mk, and contains most of the
options previously defined in .config, that can now be set passing
parameters or defining environment variables when executing configure
script.

config.h is still not used anywhere, and is automatically created by
autoheader, altough this migh change when we start to include this
file.

Just a first release, and since it's my first autoconf script I guess
there will be many things to polish here... Please review and comment.

Changes since v3:

 * Copied config.guess and config.sub from automake 1.11.

 * Added a test to check for uuid.h on BSD and uuid/uuid.h on Linux.

Changes since v2:

 * Changed order of config/Tools.mk include.

 * Added "-e" to autogen.sh shebang.

 * Added necessary files (config.*) and output from Autoheader and
   Autoconf.

 * Removed Autoconf from build dependencies and updated README.

Changes since v1:

 * Moved autoconf stuff inside tools folder.

 * Add Makefile rules for cleaning.

 * Removed Automake dependency.

 * Create autogen.sh to automatically create configure script when
   building from source repository.

 * Cached values of options passed from command line.

 * Add necessary ignores to .hgignore.

 * Added Autoconf to the list of dependencies.

 * Changed hypen to underscore in XML2 and CURL variable names.

 * Added script to get version from xen/Makefile.

 * Set Ocaml tools to optional.

 * Added procedence of m4/ocaml.m4.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>


 .hgignore                         |      6 +
 Config.mk                         |     30 -
 Makefile                          |      2 -
 README                            |      4 +
 autogen.sh                        |      9 +
 config/Tools.mk.in                |     50 +
 configure                         |      2 +
 tools/Makefile                    |      3 +-
 tools/Rules.mk                    |      7 +-
 tools/blktap/drivers/Makefile     |      2 +-
 tools/blktap/drivers/check_gcrypt |     14 -
 tools/check/Makefile              |     26 -
 tools/check/README                |     20 -
 tools/check/check_brctl           |     13 -
 tools/check/check_crypto_lib      |     11 -
 tools/check/check_curl            |     13 -
 tools/check/check_iproute         |     15 -
 tools/check/check_libaio_devel    |     11 -
 tools/check/check_libaio_lib      |      9 -
 tools/check/check_openssl_devel   |      6 -
 tools/check/check_python          |     13 -
 tools/check/check_python_devel    |     17 -
 tools/check/check_python_xml      |     12 -
 tools/check/check_udev            |     22 -
 tools/check/check_uuid_devel      |      7 -
 tools/check/check_x11_devel       |      9 -
 tools/check/check_xgettext        |      6 -
 tools/check/check_xml2            |     14 -
 tools/check/check_yajl_devel      |      8 -
 tools/check/check_yajl_lib        |      6 -
 tools/check/check_zlib_devel      |      6 -
 tools/check/check_zlib_lib        |     12 -
 tools/check/chk                   |     63 -
 tools/check/funcs.sh              |    106 -
 tools/config.guess                |   1522 +++++
 tools/config.h.in                 |    468 +
 tools/config.sub                  |   1771 ++++++
 tools/configure                   |  10204 ++++++++++++++++++++++++++++++++++++
 tools/configure.ac                |    191 +
 tools/debugger/gdbsx/xg/Makefile  |      1 -
 tools/install.sh                  |      1 +
 tools/libfsimage/Makefile         |      6 +-
 tools/libfsimage/check-libext2fs  |     21 -
 tools/libxen/Makefile             |      8 +-
 tools/m4/default_lib.m4           |      8 +
 tools/m4/disable_feature.m4       |     13 +
 tools/m4/enable_feature.m4        |     13 +
 tools/m4/ocaml.m4                 |    241 +
 tools/m4/path_or_fail.m4          |      6 +
 tools/m4/python_devel.m4          |     18 +
 tools/m4/python_version.m4        |     12 +
 tools/m4/python_xml.m4            |     10 +
 tools/m4/set_cflags_ldflags.m4    |     20 +
 tools/m4/udev.m4                  |     32 +
 tools/m4/uuid.m4                  |     10 +
 version.sh                        |      5 +
 56 files changed, 14633 insertions(+), 502 deletions(-)



--===============6253512272991086591==
Content-Type: text/x-patch; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=xen-autoconf.patch

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI2MjU4NDI1IC0zNjAwCiMgTm9kZSBJRCA4Mzc1NzBlNTM5
YTExNGY0N2Q4YTk4YjdhMjgxNDgxYTgxYWM4NTZmCiMgUGFyZW50ICBlMjcyMmIyNGRjMDk2MmRl
MzcyMTUzMjBiMDVkMWJiN2M0YzQyODY0CmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwgY29uZmlnL1Rvb2xzLm1rCmFuZCBjb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMgaW5jbHVk
ZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRpb25zIHBy
ZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBhc3NpbmcK
cGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBleGVjdXRp
bmcgY29uZmlndXJlCnNjcmlwdC4KCmNvbmZpZy5oIGlzIHN0aWxsIG5vdCB1c2VkIGFueXdoZXJl
LCBhbmQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5CmF1dG9oZWFkZXIsIGFsdG91Z2ggdGhp
cyBtaWdoIGNoYW5nZSB3aGVuIHdlIHN0YXJ0IHRvIGluY2x1ZGUgdGhpcwpmaWxlLgoKSnVzdCBh
IGZpcnN0IHJlbGVhc2UsIGFuZCBzaW5jZSBpdCdzIG15IGZpcnN0IGF1dG9jb25mIHNjcmlwdCBJ
IGd1ZXNzCnRoZXJlIHdpbGwgYmUgbWFueSB0aGluZ3MgdG8gcG9saXNoIGhlcmUuLi4gUGxlYXNl
IHJldmlldyBhbmQgY29tbWVudC4KCkNoYW5nZXMgc2luY2UgdjM6CgogKiBDb3BpZWQgY29uZmln
Lmd1ZXNzIGFuZCBjb25maWcuc3ViIGZyb20gYXV0b21ha2UgMS4xMS4KCiAqIEFkZGVkIGEgdGVz
dCB0byBjaGVjayBmb3IgdXVpZC5oIG9uIEJTRCBhbmQgdXVpZC91dWlkLmggb24gTGludXguCgpD
aGFuZ2VzIHNpbmNlIHYyOgoKICogQ2hhbmdlZCBvcmRlciBvZiBjb25maWcvVG9vbHMubWsgaW5j
bHVkZS4KCiAqIEFkZGVkICItZSIgdG8gYXV0b2dlbi5zaCBzaGViYW5nLgoKICogQWRkZWQgbmVj
ZXNzYXJ5IGZpbGVzIChjb25maWcuKikgYW5kIG91dHB1dCBmcm9tIEF1dG9oZWFkZXIgYW5kCiAg
IEF1dG9jb25mLgoKICogUmVtb3ZlZCBBdXRvY29uZiBmcm9tIGJ1aWxkIGRlcGVuZGVuY2llcyBh
bmQgdXBkYXRlZCBSRUFETUUuCgpDaGFuZ2VzIHNpbmNlIHYxOgoKICogTW92ZWQgYXV0b2NvbmYg
c3R1ZmYgaW5zaWRlIHRvb2xzIGZvbGRlci4KCiAqIEFkZCBNYWtlZmlsZSBydWxlcyBmb3IgY2xl
YW5pbmcuCgogKiBSZW1vdmVkIEF1dG9tYWtlIGRlcGVuZGVuY3kuCgogKiBDcmVhdGUgYXV0b2dl
bi5zaCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBjb25maWd1cmUgc2NyaXB0IHdoZW4KICAgYnVp
bGRpbmcgZnJvbSBzb3VyY2UgcmVwb3NpdG9yeS4KCiAqIENhY2hlZCB2YWx1ZXMgb2Ygb3B0aW9u
cyBwYXNzZWQgZnJvbSBjb21tYW5kIGxpbmUuCgogKiBBZGQgbmVjZXNzYXJ5IGlnbm9yZXMgdG8g
LmhnaWdub3JlLgoKICogQWRkZWQgQXV0b2NvbmYgdG8gdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVz
LgoKICogQ2hhbmdlZCBoeXBlbiB0byB1bmRlcnNjb3JlIGluIFhNTDIgYW5kIENVUkwgdmFyaWFi
bGUgbmFtZXMuCgogKiBBZGRlZCBzY3JpcHQgdG8gZ2V0IHZlcnNpb24gZnJvbSB4ZW4vTWFrZWZp
bGUuCgogKiBTZXQgT2NhbWwgdG9vbHMgdG8gb3B0aW9uYWwuCgogKiBBZGRlZCBwcm9jZWRlbmNl
IG9mIG00L29jYW1sLm00LgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5w
YXVAZW50ZWwudXBjLmVkdT4KCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSAu
aGdpZ25vcmUKLS0tIGEvLmhnaWdub3JlCVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAor
KysgYi8uaGdpZ25vcmUJV2VkIEphbiAxMSAwNjowNzowNSAyMDEyICswMTAwCkBAIC0zMTIsNiAr
MzEyLDEyIEBACiBedG9vbHMvb2NhbWwvbGlicy94bC94ZW5saWdodFwubWwkCiBedG9vbHMvb2Nh
bWwvbGlicy94bC94ZW5saWdodFwubWxpJAogXnRvb2xzL29jYW1sL3hlbnN0b3JlZC9veGVuc3Rv
cmVkJAorXnRvb2xzL2F1dG9tNHRlXC5jYWNoZSQKK150b29scy9jb25maWdcLmgkCitedG9vbHMv
Y29uZmlnXC5sb2ckCitedG9vbHMvY29uZmlnXC5zdGF0dXMkCitedG9vbHMvY29uZmlnXC5jYWNo
ZSQKK15jb25maWcvVG9vbHNcLm1rJAogXnhlbi9cLmJhbm5lci4qJAogXnhlbi9CTE9HJAogXnhl
bi9TeXN0ZW0ubWFwJApkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgQ29uZmln
Lm1rCi0tLSBhL0NvbmZpZy5tawlUaHUgSmFuIDI2IDE3OjQzOjMxIDIwMTIgKzAwMDAKKysrIGIv
Q29uZmlnLm1rCVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtNzAsOSArNzAsNiBA
QCBFWFRSQV9JTkNMVURFUyArPSAkKEVYVFJBX1BSRUZJWCkvaW5jbHVkCiBFWFRSQV9MSUIgKz0g
JChFWFRSQV9QUkVGSVgpLyQoTElCTEVBRkRJUikKIGVuZGlmCiAKLUJJU09OCT89IGJpc29uCi1G
TEVYCT89IGZsZXgKLQogUFlUSE9OICAgICAgPz0gcHl0aG9uCiBQWVRIT05fUFJFRklYX0FSRyA/
PSAtLXByZWZpeD0iJChQUkVGSVgpIgogIyBUaGUgYWJvdmUgcmVxdWlyZXMgdGhhdCBQUkVGSVgg
Y29udGFpbnMgKm5vIHNwYWNlcyouIFRoaXMgdmFyaWFibGUgaXMgaGVyZQpAQCAtMTc1LDkgKzE3
Miw2IEBAIENGTEFHUyArPSAkKGZvcmVhY2ggaSwgJChQUkVQRU5EX0lOQ0xVREUKIEFQUEVORF9M
REZMQUdTICs9ICQoZm9yZWFjaCBpLCAkKEFQUEVORF9MSUIpLCAtTCQoaSkpCiBBUFBFTkRfQ0ZM
QUdTICs9ICQoZm9yZWFjaCBpLCAkKEFQUEVORF9JTkNMVURFUyksIC1JJChpKSkKIAotQ0hFQ0tf
TElCID0gJChFWFRSQV9MSUIpICQoUFJFUEVORF9MSUIpICQoQVBQRU5EX0xJQikKLUNIRUNLX0lO
Q0xVREVTID0gJChFWFRSQV9JTkNMVURFUykgJChQUkVQRU5EX0lOQ0xVREVTKSAkKEFQUEVORF9J
TkNMVURFUykKLQogRU1CRURERURfRVhUUkFfQ0ZMQUdTIDo9IC1ub3BpZSAtZm5vLXN0YWNrLXBy
b3RlY3RvciAtZm5vLXN0YWNrLXByb3RlY3Rvci1hbGwKIEVNQkVEREVEX0VYVFJBX0NGTEFHUyAr
PSAtZm5vLWV4Y2VwdGlvbnMKIApAQCAtMTg2LDE2ICsxODAsNiBAQCBDT05GSUdfTElCSUNPTlYg
ICA6PSAkKHNoZWxsIGV4cG9ydCBPUz0iCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJChYRU5f
Uk9PVCkvdG9vbHMvY2hlY2svZnVuY3Muc2g7IFwKICAgICAgICAgICAgICAgICAgICAgICAgaGFz
X2xpYiBsaWJpY29udi5zbyAmJiBlY2hvICd5JyB8fCBlY2hvICduJykKIAotIyBFbmFibGUgWFNN
IHNlY3VyaXR5IG1vZHVsZSAoYnkgZGVmYXVsdCwgRmxhc2spLgotWFNNX0VOQUJMRSA/PSBuCi1G
TEFTS19FTkFCTEUgPz0gJChYU01fRU5BQkxFKQotCi0jIERvd25sb2FkIEdJVCByZXBvc2l0b3Jp
ZXMgdmlhIEhUVFAgb3IgR0lUJ3Mgb3duIHByb3RvY29sPwotIyBHSVQncyBwcm90b2NvbCBpcyBm
YXN0ZXIgYW5kIG1vcmUgcm9idXN0LCB3aGVuIGl0IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCi0j
IG1heSBibG9jayBpdCkuIFdlIG1ha2UgaXQgdGhlIGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCBy
ZXBvc2l0b3J5IGRvd25sb2FkcwotIyBmYWlsIG9yIGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9I
VFRQPXkgaW4geW91ciBlbnZpcm9ubWVudC4KLUdJVF9IVFRQID89IG4KLQogWEVOX0VYVEZJTEVT
X1VSTD1odHRwOi8veGVuYml0cy54ZW5zb3VyY2UuY29tL3hlbi1leHRmaWxlcwogIyBBbGwgdGhl
IGZpbGVzIGF0IHRoYXQgbG9jYXRpb24gd2VyZSBkb3dubG9hZGVkIGZyb20gZWxzZXdoZXJlIG9u
CiAjIHRoZSBpbnRlcm5ldC4gIFRoZSBvcmlnaW5hbCBkb3dubG9hZCBVUkwgaXMgcHJlc2VydmVk
IGFzIGEgY29tbWVudApAQCAtMjI4LDE3ICsyMTIsMyBAQCBRRU1VX1RBRyA/PSBiYjM2ZDYzMmU0
Y2FiZjQ3ODgyYWRmZjA3YTQ1CiAKICMgU2hvcnQgYW5zd2VyIC0tIGRvIG5vdCBlbmFibGUgdGhp
cyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlCiAjIGRvaW5nIGFuZCBhcmUgcHJlcGFyZWQg
Zm9yIHNvbWUgcGFpbi4KLQotIyBPcHRpb25hbCBjb21wb25lbnRzCi1YRU5TVEFUX1hFTlRPUCAg
ICAgPz0geQotVlRQTV9UT09MUyAgICAgICAgID89IG4KLUxJQlhFTkFQSV9CSU5ESU5HUyA/PSBu
Ci1QWVRIT05fVE9PTFMgICAgICAgPz0geQotT0NBTUxfVE9PTFMgICAgICAgID89IHkKLUNPTkZJ
R19NSU5JVEVSTSAgICA/PSBuCi1DT05GSUdfTE9NT1VOVCAgICAgPz0gbgotQ09ORklHX1NZU1RF
TV9MSUJBSU8gPz0geQotCi1pZmVxICgkKE9DQU1MX1RPT0xTKSx5KQotT0NBTUxfVE9PTFMgOj0g
JChzaGVsbCBvY2FtbG9wdCAtdiA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8gInkiIHx8IGVjaG8g
Im4iKQotZW5kaWYKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIE1ha2VmaWxl
Ci0tLSBhL01ha2VmaWxlCVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgYi9NYWtl
ZmlsZQlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTQwLDExICs0MCw5IEBAIGRp
c3Q6IERFU1RESVI9JChESVNURElSKS9pbnN0YWxsCiBkaXN0OiBkaXN0LXhlbiBkaXN0LWtlcm5l
bHMgZGlzdC10b29scyBkaXN0LXN0dWJkb20gZGlzdC1kb2NzIGRpc3QtbWlzYwogCiBkaXN0LW1p
c2M6Ci0JJChJTlNUQUxMX0RJUikgJChESVNURElSKS9jaGVjawogCSQoSU5TVEFMTF9EQVRBKSAu
L0NPUFlJTkcgJChESVNURElSKQogCSQoSU5TVEFMTF9EQVRBKSAuL1JFQURNRSAkKERJU1RESVIp
CiAJJChJTlNUQUxMX1BST0cpIC4vaW5zdGFsbC5zaCAkKERJU1RESVIpCi0JJChJTlNUQUxMX1BS
T0cpIHRvb2xzL2NoZWNrL2NoayB0b29scy9jaGVjay9jaGVja18qIHRvb2xzL2NoZWNrL2Z1bmNz
LnNoICQoRElTVERJUikvY2hlY2sKIGRpc3QtJTogREVTVERJUj0kKERJU1RESVIpL2luc3RhbGwK
IGRpc3QtJTogaW5zdGFsbC0lCiAJQDogIyBkbyBub3RoaW5nCmRpZmYgLXIgZTI3MjJiMjRkYzA5
IC1yIDgzNzU3MGU1MzlhMSBSRUFETUUKLS0tIGEvUkVBRE1FCVRodSBKYW4gMjYgMTc6NDM6MzEg
MjAxMiArMDAwMAorKysgYi9SRUFETUUJV2VkIEphbiAxMSAwNjowNzowNSAyMDEyICswMTAwCkBA
IC04OSw5ICs4OSwxMyBAQCAyLiBjZCB0byB4ZW4tdW5zdGFibGUgKG9yIHdoYXRldmVyIHlvdSBz
CiAzLiBGb3IgdGhlIHZlcnkgZmlyc3QgYnVpbGQsIG9yIGlmIHlvdSB3YW50IHRvIGRlc3Ryb3kg
YnVpbGQgdHJlZXMsCiAgICBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKKyAgICAjIC4v
Y29uZmlndXJlCiAgICAgIyBtYWtlIHdvcmxkCiAgICAgIyBtYWtlIGluc3RhbGwKIAorICAgSWYg
eW91IHdhbnQsIHlvdSBjYW4gcnVuIC4vY29uZmlndXJlIC0taGVscCB0byBzZWUgdGhlIGxpc3Qg
b2YKKyAgIG9wdGlvbnMgYXZhaWxhYmxlIG9wdGlvbnMgd2hlbiBidWlsZGluZyBhbmQgaW5zdGFs
bGluZyBYZW4uCisKICAgIFRoaXMgd2lsbCBjcmVhdGUgYW5kIGluc3RhbGwgb250byB0aGUgbG9j
YWwgbWFjaGluZS4gSXQgd2lsbCBidWlsZAogICAgdGhlIHhlbiBiaW5hcnkgKHhlbi5neiksIHRo
ZSB0b29scyBhbmQgdGhlIGRvY3VtZW50YXRpb24uCiAKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIg
ODM3NTcwZTUzOWExIGF1dG9nZW4uc2gKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIvYXV0b2dlbi5zaAlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAx
MDAKQEAgLTAsMCArMSw5IEBACisjIS9iaW4vc2ggLWUKK3JtIC1yZiBjb25maWd1cmUKK2NkIHRv
b2xzCithdXRvaGVhZGVyCithdXRvY29uZgorY2QgLi4KK2VjaG8gIiMhL2Jpbi9zaCAtZSIgPj4g
Y29uZmlndXJlCitlY2hvICJjZCB0b29scyAmJiAuL2NvbmZpZ3VyZSBcJEAiID4+IGNvbmZpZ3Vy
ZQorY2htb2QgK3ggY29uZmlndXJlCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1Mzlh
MSBjb25maWcvVG9vbHMubWsuaW4KLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKKysrIGIvY29uZmlnL1Rvb2xzLm1rLmluCVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAx
MiArMDEwMApAQCAtMCwwICsxLDUwIEBACisjIFByZWZpeCBhbmQgaW5zdGFsbCBmb2xkZXIKK1BS
RUZJWCAgICAgICAgICAgICAgOj0gQHByZWZpeEAKK0xJQkxFQUZESVJfeDg2XzY0ICAgOj0gQExJ
Ql9QQVRIQAorCisjIEEgZGVidWcgYnVpbGQgb2YgdG9vbHM/CitkZWJ1ZyAgICAgICAgICAgICAg
IDo9IEBkZWJ1Z0AKKworIyBUb29scyBwYXRoCitCSVNPTiAgICAgICAgICAgICAgIDo9IEBCSVNP
TkAKK0ZMRVggICAgICAgICAgICAgICAgOj0gQEZMRVhACitQWVRIT04gICAgICAgICAgICAgIDo9
IEBQWVRIT05ACitQWVRIT05fUEFUSCAgICAgICAgIDo9IEBQWVRIT05QQVRIQAorUEVSTCAgICAg
ICAgICAgICAgICA6PSBAUEVSTEAKK0JSQ1RMICAgICAgICAgICAgICAgOj0gQEJSQ1RMQAorSVAg
ICAgICAgICAgICAgICAgICA6PSBASVBACitDVVJMX0NPTkZJRyAgICAgICAgIDo9IEBDVVJMQAor
WE1MMl9DT05GSUcgICAgICAgICA6PSBAWE1MQAorQkFTSCAgICAgICAgICAgICAgICA6PSBAQkFT
SEAKK1hHRVRUVEVYVCAgICAgICAgICAgOj0gQFhHRVRURVhUQAorCisjIEV4dHJhIGZvbGRlciBm
b3IgbGlicy9pbmNsdWRlcworUFJFUEVORF9JTkNMVURFUyAgICA6PSBAUFJFUEVORF9JTkNMVURF
U0AKK1BSRVBFTkRfTElCICAgICAgICAgOj0gQFBSRVBFTkRfTElCQAorQVBQRU5EX0lOQ0xVREVT
ICAgICA6PSBAQVBQRU5EX0lOQ0xVREVTQAorQVBQRU5EX0xJQiAgICAgICAgICA6PSBAQVBQRU5E
X0xJQkAKKworIyBFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVsZSAoYnkgZGVmYXVsdCwgRmxhc2sp
LgorWFNNX0VOQUJMRSAgICAgICAgICA6PSBAeHNtQAorRkxBU0tfRU5BQkxFICAgICAgICA6PSBA
eHNtQAorCisjIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhUVFAgb3IgR0lUJ3Mgb3du
IHByb3RvY29sPworIyBHSVQncyBwcm90b2NvbCBpcyBmYXN0ZXIgYW5kIG1vcmUgcm9idXN0LCB3
aGVuIGl0IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCisjIG1heSBibG9jayBpdCkuIFdlIG1ha2Ug
aXQgdGhlIGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCByZXBvc2l0b3J5IGRvd25sb2FkcworIyBm
YWlsIG9yIGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9IVFRQPXkgaW4geW91ciBlbnZpcm9ubWVu
dC4KK0dJVF9IVFRQICAgICAgICAgICAgOj0gQGdpdGh0dHBACisKKyMgT3B0aW9uYWwgY29tcG9u
ZW50cworWEVOU1RBVF9YRU5UT1AgICAgICA6PSBAbW9uaXRvcnNACitWVFBNX1RPT0xTICAgICAg
ICAgIDo9IEB2dHBtQAorTElCWEVOQVBJX0JJTkRJTkdTICA6PSBAeGFwaUAKK1BZVEhPTl9UT09M
UyAgICAgICAgOj0gQHB5dGhvbnRvb2xzQAorT0NBTUxfVE9PTFMgICAgICAgICA6PSBAb2NhbWx0
b29sc0AKK0NPTkZJR19NSU5JVEVSTSAgICAgOj0gQG1pbml0ZXJtQAorQ09ORklHX0xPTU9VTlQg
ICAgICA6PSBAbG9tb3VudEAKKworI1N5c3RlbSBvcHRpb25zCitDT05GSUdfU1lTVEVNX0xJQkFJ
Tzo9IEBzeXN0ZW1fYWlvQAorQ09ORklHX0xJQklDT05WICAgICA6PSBAbGliaWNvbnZACitDT05G
SUdfR0NSWVBUICAgICAgIDo9IEBsaWJnY3J5cHRACitDT05GSUdfRVhUMkZTICAgICAgIDo9IEBs
aWJleHQyZnNACmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSBjb25maWd1cmUK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvY29uZmln
dXJlCVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDIgQEAKKyMhL2Jp
bi9zaCAtZQorY2QgdG9vbHMgJiYgLi9jb25maWd1cmUgJEAKZGlmZiAtciBlMjcyMmIyNGRjMDkg
LXIgODM3NTcwZTUzOWExIHRvb2xzL01ha2VmaWxlCi0tLSBhL3Rvb2xzL01ha2VmaWxlCVRodSBK
YW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgYi90b29scy9NYWtlZmlsZQlXZWQgSmFuIDEx
IDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTYsNyArNiw2IEBAIFNVQkRJUlMtbGliYWlvIDo9IGxp
YmFpbwogZW5kaWYKIAogU1VCRElSUy15IDo9Ci1TVUJESVJTLXkgKz0gY2hlY2sKIFNVQkRJUlMt
eSArPSBpbmNsdWRlCiBTVUJESVJTLXkgKz0gbGlieGMKIFNVQkRJUlMteSArPSBmbGFzawpAQCAt
NzgsNiArNzcsOCBAQCBjbGVhbjogc3ViZGlycy1jbGVhbgogZGlzdGNsZWFuOiBzdWJkaXJzLWRp
c3RjbGVhbgogCXJtIC1yZiBxZW11LXhlbi10cmFkaXRpb25hbC1kaXIgcWVtdS14ZW4tdHJhZGl0
aW9uYWwtZGlyLXJlbW90ZQogCXJtIC1yZiBxZW11LXhlbi1kaXIgcWVtdS14ZW4tZGlyLXJlbW90
ZQorCXJtIC1yZiAuLi9jb25maWcvVG9vbHMubWsgY29uZmlnLmggY29uZmlnLmxvZyBjb25maWcu
c3RhdHVzIFwKKwkJY29uZmlnLmNhY2hlIGF1dG9tNHRlLmNhY2hlCiAKIGlmbmVxICgkKFhFTl9D
T01QSUxFX0FSQ0gpLCQoWEVOX1RBUkdFVF9BUkNIKSkKIElPRU1VX0NPTkZJR1VSRV9DUk9TUyA/
PSAtLWNwdT0kKFhFTl9UQVJHRVRfQVJDSCkgXApkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1
NzBlNTM5YTEgdG9vbHMvUnVsZXMubWsKLS0tIGEvdG9vbHMvUnVsZXMubWsJVGh1IEphbiAyNiAx
Nzo0MzozMSAyMDEyICswMDAwCisrKyBiL3Rvb2xzL1J1bGVzLm1rCVdlZCBKYW4gMTEgMDY6MDc6
MDUgMjAxMiArMDEwMApAQCAtNCw2ICs0LDcgQEAKIGFsbDoKIAogaW5jbHVkZSAkKFhFTl9ST09U
KS9Db25maWcubWsKK2luY2x1ZGUgJChYRU5fUk9PVCkvY29uZmlnL1Rvb2xzLm1rCiAKIGV4cG9y
dCBfSU5TVEFMTCA6PSAkKElOU1RBTEwpCiBJTlNUQUxMID0gJChYRU5fUk9PVCkvdG9vbHMvY3Jv
c3MtaW5zdGFsbApAQCAtODAsOCArODEsNiBAQCBjaGVjay0kKENPTkZJR19YODYpID0gJChjYWxs
IGNjLXZlci1jaGVjCiAgICAgICAgICAgICAgICAgICAgICAgICAiWGVuIHJlcXVpcmVzIGF0IGxl
YXN0IGdjYy0zLjQiKQogJChldmFsICQoY2hlY2steSkpCiAKLV9QWVRIT05fUEFUSCA6PSAkKHNo
ZWxsIHdoaWNoICQoUFlUSE9OKSkKLVBZVEhPTl9QQVRIID89ICQoX1BZVEhPTl9QQVRIKQogSU5T
VEFMTF9QWVRIT05fUFJPRyA9IFwKIAkkKFhFTl9ST09UKS90b29scy9weXRob24vaW5zdGFsbC13
cmFwICIkKFBZVEhPTl9QQVRIKSIgJChJTlNUQUxMX1BST0cpCiAKQEAgLTEwOSwzICsxMDgsNyBA
QCBzdWJkaXItYWxsLSUgc3ViZGlyLWNsZWFuLSUgc3ViZGlyLWluc3RhCiAKIHN1YmRpci1kaXN0
Y2xlYW4tJTogLnBob255CiAJJChNQUtFKSAtQyAkKiBjbGVhbgorCiskKFhFTl9ST09UKS9jb25m
aWcvVG9vbHMubWs6CisJQGVjaG8gIllvdSBoYXZlIHRvIHJ1biAuL2NvbmZpZ3VyZSBiZWZvcmUg
YnVpbGRpbmcgb3IgaW5zdGFsbGluZyB0aGUgdG9vbHMiCisJQGV4aXQgMQpkaWZmIC1yIGUyNzIy
YjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvYmxrdGFwL2RyaXZlcnMvTWFrZWZpbGUKLS0t
IGEvdG9vbHMvYmxrdGFwL2RyaXZlcnMvTWFrZWZpbGUJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEy
ICswMDAwCisrKyBiL3Rvb2xzL2Jsa3RhcC9kcml2ZXJzL01ha2VmaWxlCVdlZCBKYW4gMTEgMDY6
MDc6MDUgMjAxMiArMDEwMApAQCAtMTMsNyArMTMsNyBAQCBDRkxBR1MgICArPSAkKENGTEFHU19s
aWJ4ZW5zdG9yZSkKIENGTEFHUyAgICs9IC1JICQoTUVNU0hSX0RJUikKIENGTEFHUyAgICs9IC1E
X0dOVV9TT1VSQ0UKIAotaWZlcSAoJChzaGVsbCAuIC4vY2hlY2tfZ2NyeXB0ICQoQ0MpKSx5ZXMp
CitpZmVxICgkQ09ORklHX0dDUllQVCx5KQogQ0ZMQUdTICs9IC1EVVNFX0dDUllQVAogQ1JZUFRf
TElCIDo9IC1sZ2NyeXB0CiBlbHNlCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1Mzlh
MSB0b29scy9ibGt0YXAvZHJpdmVycy9jaGVja19nY3J5cHQKLS0tIGEvdG9vbHMvYmxrdGFwL2Ry
aXZlcnMvY2hlY2tfZ2NyeXB0CVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxNCArMCwwIEBACi0j
IS9iaW4vc2gKLQotY2F0ID4gLmdjcnlwdC5jIDw8IEVPRgotI2luY2x1ZGUgPGdjcnlwdC5oPgot
aW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQotRU9GCi0KLWlmICQxIC1vIC5nY3J5cHQgLmdj
cnlwdC5jIC1sZ2NyeXB0IDI+L2Rldi9udWxsIDsgdGhlbgotICBlY2hvICJ5ZXMiCi1lbHNlCi0g
IGVjaG8gIm5vIgotZmkKLQotcm0gLWYgLmdjcnlwdCoKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIg
ODM3NTcwZTUzOWExIHRvb2xzL2NoZWNrL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2NoZWNrL01ha2Vm
aWxlCVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyNiArMCwwIEBACi1YRU5fUk9PVCA9ICQoQ1VS
RElSKS8uLi8uLgotaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5tawotCi0jIEV4cG9y
dCB0aGUgbmVjZXNzYXJ5IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHRlc3RzCi1leHBv
cnQgUFlUSE9OCi1leHBvcnQgTElCWEVOQVBJX0JJTkRJTkdTCi1leHBvcnQgQ0hFQ0tfSU5DTFVE
RVMKLWV4cG9ydCBDSEVDS19MSUIKLWV4cG9ydCBDT05GSUdfU1lTVEVNX0xJQkFJTwotCi0uUEhP
Tlk6IGFsbCBpbnN0YWxsCi1hbGwgaW5zdGFsbDogY2hlY2stYnVpbGQKLQotIyBDaGVjayB0aGlz
IG1hY2hpbmUgaXMgT0sgZm9yIGJ1aWxkaW5nIG9uLgotLlBIT05ZOiBjaGVjay1idWlsZAotY2hl
Y2stYnVpbGQ6Ci0JLi9jaGsgYnVpbGQKLQotIyBDaGVjayB0aGlzIG1hY2hpbmUgaXMgT0sgZm9y
IGluc3RhbGxpbmcgb24uCi0uUEhPTlk6IGNoZWNrLWluc3RhbGwKLWNoZWNrLWluc3RhbGw6Ci0J
Li9jaGsgaW5zdGFsbAotCi0uUEhPTlk6IGNsZWFuCi1jbGVhbjoKLQkuL2NoayBjbGVhbgpkaWZm
IC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY2hlY2svUkVBRE1FCi0tLSBh
L3Rvb2xzL2NoZWNrL1JFQURNRQlUaHUgSmFuIDI2IDE3OjQzOjMxIDIwMTIgKzAwMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMjAgKzAsMCBAQAot
Q2hlY2tzIGZvciB0aGUgc3VpdGFiaWxpdHkgb2YgYSBtYWNoaW5lIGZvciBYZW4gYnVpbGQgb3Ig
aW5zdGFsbC4KLVRvIGNoZWNrIGZvciBidWlsZCBzdWl0YWJpbGl0eSB1c2UKLQotICAgICAgICAu
L2NoayBidWlsZAotCi1UbyBjaGVjayBmb3IgaW5zdGFsbCBzdWl0YWJpbGl0eSB1c2UKLQotICAg
ICAgICAuL2NoayBpbnN0YWxsCi0KLVRoZSBjaGsgc2NyaXB0IHdpbGwgcnVuIGNoZWNrcyBpbiB0
aGlzIGRpcmVjdG9yeSBhbmQgcHJpbnQKLXRoZSBvbmVzIHRoYXQgZmFpbGVkLiBJdCBwcmludHMg
bm90aGluZyBpZiBjaGVja3Mgc3VjY2VlZC4KLVRoZSBjaGsgc2NyaXB0IGV4aXRzIHdpdGggMCBv
biBzdWNjZXNzIGFuZCAxIG9uIGZhaWx1cmUuCi0KLVRoZSBjaGsgc2NyaXB0IHJ1bnMgZXhlY3V0
YWJsZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSB3aG9zZQotbmFtZXMgYmVnaW4gd2l0aCAnY2hl
Y2tfJy4gRmlsZXMgY29udGFpbmluZyBDSEVDSy1CVUlMRAotYXJlIHJ1biBmb3IgdGhlIGJ1aWxk
IGNoZWNrLCBhbmQgZmlsZXMgY29udGFpbmluZyBDSEVDSy1JTlNUQUxMCi1hcmUgcnVuIGZvciB0
aGUgaW5zdGFsbCBjaGVjay4KLQotRGV0YWlsZWQgb3V0cHV0IGZyb20gdGhlIGNoZWNrIHNjcmlw
dHMgaXMgaW4gLmNoa2J1aWxkIGZvciBidWlsZAotYW5kIC5jaGtpbnN0YWxsIGZvciBpbnN0YWxs
LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3
NTcwZTUzOWExIHRvb2xzL2NoZWNrL2NoZWNrX2JyY3RsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNr
X2JyY3RsCVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMyArMCwwIEBACi0jIS9iaW4vc2gKLSMg
Q0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAkT1MgaW4KLU9wZW5CU0R8TmV0
QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwgYnJjb25maWcgOzsKLUxpbnV4KQotCWhhc19vcl9m
YWlsIGJyY3RsIDs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiIDs7Ci1lc2FjCmRpZmYgLXIgZTI3
MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVjay9jaGVja19jcnlwdG9fbGliCi0t
LSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2NyeXB0b19saWIJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEy
ICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0x
LDExICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4g
Li9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotRnJlZUJTRHxOZXRCU0R8T3BlbkJTRCkKLQlleGl0
IDAgOzsKLWVzYWMKLQotaGFzX2xpYiBsaWJjcnlwdG8uc28gfHwgZmFpbCAibWlzc2luZyBsaWJj
cnlwdG8uc28iCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVj
ay9jaGVja19jdXJsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2N1cmwJVGh1IEphbiAyNiAxNzo0
MzozMSAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1JTlNU
QUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbICIkTElCWEVOQVBJX0JJTkRJTkdTIiAhPSAieSIg
XTsgdGhlbgotCWVjaG8gLW4gInVudXNlZCwgIgotCWV4aXQgMAotZmkKLQotaGFzX29yX2ZhaWwg
Y3VybC1jb25maWcKLWN1cmxfbGlicz1gY3VybC1jb25maWcgLS1saWJzYCB8fCBmYWlsICJjdXJs
LWNvbmZpZyAtLWxpYnMgZmFpbGVkIgotdGVzdF9saW5rICRjdXJsX2xpYnMgfHwgZmFpbCAiZGVw
ZW5kZW5jeSBsaWJyYXJpZXMgZm9yIGN1cmwgYXJlIG1pc3NpbmciCmRpZmYgLXIgZTI3MjJiMjRk
YzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVjay9jaGVja19pcHJvdXRlCi0tLSBhL3Rvb2xz
L2NoZWNrL2NoZWNrX2lwcm91dGUJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE1ICswLDAgQEAK
LSMhL2Jpbi9zaAotIyBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1QQVRIPS9zYmlu
OiRQQVRICi0KLWNhc2UgJE9TIGluCi1PcGVuQlNEfE5ldEJTRHxGcmVlQlNEKQotCWhhc19vcl9m
YWlsIGlmY29uZmlnIDs7Ci1MaW51eCkKLQloYXNfb3JfZmFpbCBpcCA7OwotKikKLQlmYWlsICJ1
bmtub3duIE9TIiA7OwotZXNhYwpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEg
dG9vbHMvY2hlY2svY2hlY2tfbGliYWlvX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2xp
YmFpb19kZXZlbAlUaHUgSmFuIDI2IDE3OjQzOjMxIDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTEgKzAsMCBAQAotIyEvYmluL3No
Ci0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbIFgke0NPTkZJR19TWVNURU1f
TElCQUlPfSAhPSBYInkiIF0gOyB0aGVuCi0gICAgZXhpdCAwCi1maQotaWYgISBoYXNfaGVhZGVy
IGxpYmFpby5oIDsgdGhlbgotICAgIGZhaWwgImNhbid0IGZpbmQgbGliYWlvIGhlYWRlcnMsIGlu
c3RhbGwgbGliYWlvIGRldmVsIHBhY2thZ2Ugb3Igc2V0IENPTkZJR19TWVNURU1fTElCQUlPPW4i
Ci1maQpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY2hlY2svY2hl
Y2tfbGliYWlvX2xpYgotLS0gYS90b29scy9jaGVjay9jaGVja19saWJhaW9fbGliCVRodSBKYW4g
MjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSw5ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVD
Sy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbIFgke0NPTkZJR19TWVNURU1fTElCQUlP
fSAhPSBYInkiIF0gOyB0aGVuCi0gICAgZXhpdCAwCi1maQotaGFzX2xpYiBsaWJhaW8uc28gfHwg
ZmFpbCAiY2FuJ3QgZmluZCBsaWJhaW8iCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1
MzlhMSB0b29scy9jaGVjay9jaGVja19vcGVuc3NsX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2No
ZWNrX29wZW5zc2xfZGV2ZWwJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEv
YmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIG9wZW5z
c2wvbWQ1LmggfHwgZmFpbCAibWlzc2luZyBvcGVuc3NsIGhlYWRlcnMiCmRpZmYgLXIgZTI3MjJi
MjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVjay9jaGVja19weXRob24KLS0tIGEvdG9v
bHMvY2hlY2svY2hlY2tfcHl0aG9uCVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMyArMCwwIEBA
Ci0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gK
LQotaWYgdGVzdCAteiAke1BZVEhPTn07IHRoZW4KLSAgUFlUSE9OPXB5dGhvbgotZmkKLQotJHtQ
WVRIT059IC1jICcKLWltcG9ydCBzeXMKLXN5cy5leGl0KHN5cy52ZXJzaW9uX2luZm9bMF0gPCAy
IG9yIHN5cy52ZXJzaW9uX2luZm9bMV0gPCAzKQotJyB8fCBmYWlsICJuZWVkIHB5dGhvbiB2ZXJz
aW9uID49IDIuMyIKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2No
ZWNrL2NoZWNrX3B5dGhvbl9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja19weXRob25fZGV2
ZWwJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE3ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVD
Sy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaWYgdGVzdCAteiAke1BZVEhPTn07IHRoZW4KLSAg
UFlUSE9OPXB5dGhvbgotZmkKLWhhc19vcl9mYWlsICR7UFlUSE9OfQotCi0ke1BZVEhPTn0gLWMg
JwotaW1wb3J0IG9zLnBhdGgsIHN5cwotZm9yIHAgaW4gc3lzLnBhdGg6Ci0JaWYgb3MucGF0aC5l
eGlzdHMocCArICIvY29uZmlnL01ha2VmaWxlIik6Ci0JCXN5cy5leGl0KDApCi1zeXMuZXhpdCgx
KQotJyB8fCBmYWlsICJjYW4ndCBmaW5kIHB5dGhvbiBkZXZlbCBmaWxlcyIKZGlmZiAtciBlMjcy
MmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl94bWwKLS0t
IGEvdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX3htbAlUaHUgSmFuIDI2IDE3OjQzOjMxIDIwMTIg
KzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MTIgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0K
LWlmIHRlc3QgLXogJHtQWVRIT059OyB0aGVuCi0gIFBZVEhPTj1weXRob24KLWZpCi1oYXNfb3Jf
ZmFpbCAke1BZVEhPTn0KLQotJHtQWVRIT059IC1jICdpbXBvcnQgeG1sLmRvbS5taW5pZG9tJyAy
Pi9kZXYvbnVsbCB8fCBcCi1mYWlsICJjYW4ndCBpbXBvcnQgeG1sLmRvbS5taW5pZG9tIgpkaWZm
IC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY2hlY2svY2hlY2tfdWRldgot
LS0gYS90b29scy9jaGVjay9jaGVja191ZGV2CVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAw
MAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMiAr
MCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2Fz
ZSAkT1MgaW4KLU9wZW5CU0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwgdm5jb25maWcK
LQk7OwotTGludXgpCi0JaGFzIC9zYmluL3VkZXZhZG0gJiYgXAotCQl1ZGV2dmVyPWAvc2Jpbi91
ZGV2YWRtIGluZm8gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKLQlbIC16ICIkdWRldnZlciIgXSAm
JiBoYXNfb3JfZmFpbCB1ZGV2aW5mbyAmJiBcCi0JCXVkZXZ2ZXI9YHVkZXZpbmZvIC1WIHwgYXdr
ICd7cHJpbnQgJE5GfSdgCi0JWyAiJHVkZXZ2ZXIiIC1nZSA1OSBdIDI+L2Rldi9udWxsIHx8IFwK
LQkJaGFzIGhvdHBsdWcgfHwgXAotCQlmYWlsICJ1ZGV2IGlzIHRvbyBvbGQsIHVwZ3JhZGUgdG8g
dmVyc2lvbiA1OSBvciBsYXRlciIKLQk7OwotKikKLQlmYWlsICJ1bmtub3duIE9TIgotCTs7Ci1l
c2FjCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVjay9jaGVj
a191dWlkX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3V1aWRfZGV2ZWwJVGh1IEphbiAy
NiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDcgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4g
Li9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHV1aWQuaCB8fCBcCi1oYXNfaGVhZGVyIHV1aWQvdXVp
ZC5oIHx8IGZhaWwgIm1pc3NpbmcgdXVpZCBoZWFkZXJzIChwYWNrYWdlIHV1aWQtZGV2KSIKZGlm
ZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2NoZWNrL2NoZWNrX3gxMV9k
ZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja194MTFfZGV2ZWwJVGh1IEphbiAyNiAxNzo0Mzoz
MSAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CkBAIC0xLDkgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5z
aAotCi1oYXNfaGVhZGVyIFgxMS9rZXlzeW1kZWYuaCB8fCBcCi1oYXNfaGVhZGVyIC91c3IvWDEx
UjYvaW5jbHVkZS9YMTEva2V5c3ltZGVmLmggfHwgXAotaGFzX2hlYWRlciAvdXNyL1gxMVI3L2lu
Y2x1ZGUvWDExL2tleXN5bWRlZi5oIHx8IFwKLXdhcm5pbmcgImNhbid0IGZpbmQgWDExIGhlYWRl
cnMiCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVjay9jaGVj
a194Z2V0dGV4dAotLS0gYS90b29scy9jaGVjay9jaGVja194Z2V0dGV4dAlUaHUgSmFuIDI2IDE3
OjQzOjMxIDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1
bmNzLnNoCi0KLWhhc19vcl9mYWlsIHhnZXR0ZXh0CmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgz
NzU3MGU1MzlhMSB0b29scy9jaGVjay9jaGVja194bWwyCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNr
X3htbDIJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE0ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBD
SEVDSy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbICEgIiRMSUJY
RU5BUElfQklORElOR1MiID0gInkiIF0KLXRoZW4KLSAgICBlY2hvIC1uICJ1bnVzZWQsICIKLSAg
ICBleGl0IDAKLWZpCi0KLWhhc19vcl9mYWlsIHhtbDItY29uZmlnCi14bWwyX2xpYnM9YHhtbDIt
Y29uZmlnIC0tbGlic2AgfHwgZmFpbCAieG1sMi1jb25maWcgLS1saWJzIGZhaWxlZCIKLXRlc3Rf
bGluayAkeG1sMl9saWJzIHx8IGZhaWwgImRlcGVuZGVuY3kgbGlicmFyaWVzIGZvciB4bWwyIGFy
ZSBtaXNzaW5nIgpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY2hl
Y2svY2hlY2tfeWFqbF9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja195YWpsX2RldmVsCVRo
dSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMApAQCAtMSw4ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlM
RAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX2hlYWRlciB5YWpsL3lhamxfcGFyc2UuaCB8fCBmYWls
ICJjYW4ndCBmaW5kIHlhamwveWFqbF9wYXJzZS5oIgotaGFzX2hlYWRlciB5YWpsL3lhamxfZ2Vu
LmggfHwgZmFpbCAiY2FuJ3QgZmluZCB5YWpsL3lhamxfZ2VuLmgiCi1oYXNfbGliIGxpYnlhamwu
c28gfHwgZmFpbCAiY2FuJ3QgZmluZCBsaWJ5YWpsLnNvIgpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAt
ciA4Mzc1NzBlNTM5YTEgdG9vbHMvY2hlY2svY2hlY2tfeWFqbF9saWIKLS0tIGEvdG9vbHMvY2hl
Y2svY2hlY2tfeWFqbF9saWIJVGh1IEphbiAyNiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEv
YmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWhh
c19saWIgbGlieWFqbC5zby4xIHx8IGZhaWwgImNhbid0IGZpbmQgbGlieWFqbC5zby4xIHZlcnNp
b24gMSIKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2NoZWNrL2No
ZWNrX3psaWJfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfemxpYl9kZXZlbAlUaHUgSmFu
IDI2IDE3OjQzOjMxIDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQot
LiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgemxpYi5oIHx8IGZhaWwgImNhbid0IGZpbmQgemxp
YiBoZWFkZXJzIgpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY2hl
Y2svY2hlY2tfemxpYl9saWIKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfemxpYl9saWIJVGh1IEph
biAyNiAxNzo0MzozMSAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDEyICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBD
SEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotRnJlZUJTRHxOZXRC
U0R8T3BlbkJTRCkKLQlleGl0IDAKLQk7OwotZXNhYwotCi1oYXNfbGliIGxpYnouc28gfHwgZmFp
bCAiY2FuJ3QgZmluZCB6bGliIgpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEg
dG9vbHMvY2hlY2svY2hrCi0tLSBhL3Rvb2xzL2NoZWNrL2NoawlUaHUgSmFuIDI2IDE3OjQzOjMx
IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsNjMgKzAsMCBAQAotIyEvYmluL3NoCi0KLWZ1bmNfdXNhZ2UgKCkKLXsKLSAgICBlY2hv
ICJVc2FnZToiCi0gICAgZWNobyAiCSQwIFtidWlsZHxpbnN0YWxsfGNsZWFuXSIKLSAgICBlY2hv
Ci0gICAgZWNobyAiQ2hlY2sgc3VpdGFiaWxpdHkgZm9yIFhlbiBidWlsZCBvciBpbnN0YWxsLiIK
LSAgICBlY2hvICJFeGl0IHdpdGggMCBpZiBPSywgMSBpZiBub3QuIgotICAgIGVjaG8KLSAgICBl
Y2hvICJDYWxsaW5nIHdpdGggJ2NsZWFuJyByZW1vdmVzIGdlbmVyYXRlZCBmaWxlcy4iCi0gICAg
ZXhpdCAxCi19Ci0KLVBBVEg9JFBBVEg6L3NiaW46L3Vzci9zYmluCi1PUz1gdW5hbWUgLXNgCi1l
eHBvcnQgUEFUSCBPUwotCi1pZiBbICIkT1MiID0gIlN1bk9TIiBdOyB0aGVuCi0JZXhpdCAwCi1m
aQotCi1jYXNlICQxIGluCi0gICAgYnVpbGQpCi0gICAgICAgIGNoZWNrPSJDSEVDSy1CVUlMRCIK
LSAgICAgICAgOzsKLSAgICBpbnN0YWxsKQotICAgICAgICBjaGVjaz0iQ0hFQ0stSU5TVEFMTCIK
LSAgICAgICAgOzsKLSAgICBjbGVhbikKLSAgICAgICAgZXhpdCAwCi0gICAgICAgIDs7Ci0gICAg
KikKLSAgICAgICAgZnVuY191c2FnZQotICAgICAgICA7OwotZXNhYwotCi1mYWlsZWQ9MAotCi1l
Y2hvICJYZW4gJHtjaGVja30gIiBgZGF0ZWAKLWZvciBmIGluIGNoZWNrXyogOyBkbwotICAgIGNh
c2UgJGYgaW4KLSAgICAgICAgKn4pCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
OzsKLSAgICAgICAgKikKLSAgICAgICAgICAgIDs7Ci0gICAgZXNhYwotICAgIGlmICEgWyAteCAk
ZiBdIDsgdGhlbgotICAgICAgICBjb250aW51ZQotICAgIGZpCi0gICAgaWYgISBncmVwIC1GcSAi
JGNoZWNrIiAkZiA7IHRoZW4KLSAgICAgICAgY29udGludWUKLSAgICBmaQotICAgIGVjaG8gLW4g
IkNoZWNraW5nICRmOiAiCi0gICAgaWYgLi8kZiAyPiYxIDsgdGhlbgotICAgICAgICBlY2hvIE9L
Ci0gICAgZWxzZQotICAgICAgICBmYWlsZWQ9MQotICAgIGZpCi1kb25lCi0KLWV4aXQgJHtmYWls
ZWR9CmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jaGVjay9mdW5j
cy5zaAotLS0gYS90b29scy9jaGVjay9mdW5jcy5zaAlUaHUgSmFuIDI2IDE3OjQzOjMxIDIwMTIg
KzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MTA2ICswLDAgQEAKLSMgaGFzIGlzIHRoZSBzYW1lIGFzIHdoaWNoLCBleGNlcHQgaXQgaGFuZGxl
cyBjcm9zcyBlbnZpcm9ubWVudHMKLWhhcygpIHsKLQlpZiBbIC16ICIkQ1JPU1NfQ09NUElMRSIg
XTsgdGhlbgotCQljb21tYW5kIHdoaWNoICIkQCIKLQkJcmV0dXJuICQ/Ci0JZmkKLQotCWNoZWNr
X3N5c19yb290IHx8IHJldHVybiAxCi0KLQkjIHN1YnNoZWxsIHRvIHByZXZlbnQgcG9sbHV0aW9u
IG9mIGNhbGxlcidzIElGUwotCSgKLQlJRlM9OgotCWZvciBwIGluICRQQVRIOyBkbwotCQlpZiBb
IC14ICIkQ1JPU1NfU1lTX1JPT1QvJHAvJDEiIF07IHRoZW4KLQkJCWVjaG8gIiRDUk9TU19TWVNf
Uk9PVC8kcC8kMSIKLQkJCXJldHVybiAwCi0JCWZpCi0JZG9uZQotCXJldHVybiAxCi0JKQotfQot
Ci1oYXNfb3JfZmFpbCgpIHsKLQloYXMgIiQxIiA+L2Rldi9udWxsIHx8IGZhaWwgImNhbid0IGZp
bmQgJDEiCi19Ci0KLWhhc19oZWFkZXIoKSB7Ci0JY2hlY2tfc3lzX3Jvb3QgfHwgcmV0dXJuIDEK
LQotCWNhc2UgJDEgaW4KLQkJLyopIDs7Ci0JCSopCi0JCWlmIFsgLXIgIiRDUk9TU19TWVNfUk9P
VC91c3IvaW5jbHVkZS8kMSIgXTsgdGhlbgotCQkJcmV0dXJuIDAKLQkJZmkKLQkJZm9yIHBhdGgg
aW4gJHtDSEVDS19JTkNMVURFU307IGRvCi0JCQlpZiBbIC1yICIkQ1JPU1NfU1lTX1JPT1Qke3Bh
dGh9LyQxIiBdOyB0aGVuCi0JCQkJcmV0dXJuIDAKLQkJCWZpCi0JCWRvbmUKLQkJOzsKLQllc2Fj
Ci0KLQlyZXR1cm4gMQotfQotCi1oYXNfbGliKCkgewotCWNoZWNrX3N5c19yb290IHx8IHJldHVy
biAxCi0KLQkjIHN1YnNoZWxsIHRvIHByZXZlbnQgcG9sbHV0aW9uIG9mIGNhbGxlcidzIGVudmly
b25tZW50Ci0JKAotCVBBVEg9L3NiaW46JFBBVEggICAgICAgICMgZm9yIGxkY29uZmlnCi0JTElC
UkFSSUVTPSIkQ0hFQ0tfTElCIC91c3IvbGliIgotCi0JIyBUaGlzIHJlbGF0aXZlbHkgY29tbW9u
IGluIGEgc3lzLXJvb3Q7IGxpYnMgYXJlIGluc3RhbGxlZCBidXQKLQkjIGxkY29uZmlnIGhhc24n
dCBydW4gdGhlcmUsIHNvIGxkY29uZmlnIC1wIHdvbid0IHdvcmsuCi0JaWYgWyAiJE9TIiA9IExp
bnV4IC1hICEgLWYgIiRDUk9TU19TWVNfUk9PVC9ldGMvbGQuc28uY2FjaGUiIF07IHRoZW4KLQkg
ICAgZWNobyAiUGxlYXNlIHJ1biBsZGNvbmZpZyAtciBcIiRDUk9TU19TWVNfUk9PVFwiIHRvIGdl
bmVyYXRlIGxkLnNvLmNhY2hlIgotCSAgICAjIGZhbGwgdGhyb3VnaDsgbGRjb25maWcgdGVzdCBi
ZWxvdyBzaG91bGQgZmFpbAotCWZpCi0JaWYgWyAiJHtPU30iID0gIkxpbnV4IiBdOyB0aGVuCi0J
CWxkY29uZmlnIC1wICR7Q1JPU1NfU1lTX1JPT1QrLXIgIiRDUk9TU19TWVNfUk9PVCJ9IHwgZ3Jl
cCAtRnEgIiQxIgotCQlyZXR1cm4gJD8KLQlmaQotCWlmIFsgIiR7T1N9IiA9ICJOZXRCU0QiIF07
IHRoZW4KLQkJbHMgLTEgJHtMSUJSQVJJRVN9IHwgZ3JlcCAtRnEgIiQxIgotCQlyZXR1cm4gJD8K
LQlmaQotCXJldHVybiAxCi0JKQotfQotCi10ZXN0X2xpbmsoKSB7Ci0JIyBzdWJzaGVsbCB0byB0
cmFwIHJlbW92YWwgb2YgdG1wZmlsZQotCSgKLQl1bnNldCB0bXBmaWxlCi0JdHJhcCAncm0gLWYg
IiR0bXBmaWxlIjsgZXhpdCcgMCAxIDIgMTUKLQl0bXBmaWxlPWBta3RlbXBgIHx8IHJldHVybiAx
Ci0JbGQgIiRAIiAtbyAiJHRtcGZpbGUiID4vZGV2L251bGwgMj4mMQotCXJldHVybiAkPwotCSkK
LX0KLQotIyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgY29tbW9ubHkgYWJvdmUKLWNoZWNrX3N5c19y
b290KCkgewotCVsgLXogIiRDUk9TU19DT01QSUxFIiBdICYmIHJldHVybiAwCi0JaWYgWyAteiAi
JENST1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8gInBsZWFzZSBzZXQgQ1JPU1NfU1lTX1JP
T1QgaW4gdGhlIGVudmlyb25tZW50IgotCQlyZXR1cm4gMQotCWZpCi0JaWYgWyAhIC1kICIkQ1JP
U1NfU1lTX1JPT1QiIF07IHRoZW4KLQkJZWNobyAibm8gc3lzLXJvb3QgZm91bmQgYXQgJENST1NT
X1NZU19ST09UIgotCQlyZXR1cm4gMQotCWZpCi19Ci0KLXdhcm5pbmcoKSB7Ci0JZWNobwotCWVj
aG8gIiAqKiogYGJhc2VuYW1lICIkMCJgIEZBSUxFRCR7Kis6ICQqfSIKLX0KLQotZmFpbCgpIHsK
LQllY2hvCi0JZWNobyAiICoqKiBgYmFzZW5hbWUgIiQwImAgRkFJTEVEJHsqKzogJCp9IgotCWV4
aXQgMQotfQpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY29uZmln
Lmd1ZXNzCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3Rvb2xzL2NvbmZpZy5ndWVzcwlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTAs
MCArMSwxNTIyIEBACisjISAvYmluL3NoCisjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwg
c3lzdGVtIG5hbWUuCisjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAx
OTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDExLTExLTExJworCisjIFRoaXMg
ZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisj
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCAtIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BCisjIDAyMTEwLTEzMDEsIFVTQS4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0
byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRo
aXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJh
dGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5k
ZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJl
c3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3Ro
bmVyLiAgUGxlYXNlIHNlbmQgcGF0Y2hlcyAoY29udGV4dAorIyBkaWZmIGZvcm1hdCkgdG8gPGNv
bmZpZy1wYXRjaGVzQGdudS5vcmc+IGFuZCBpbmNsdWRlIGEgQ2hhbmdlTG9nCisjIGVudHJ5Lgor
IworIyBUaGlzIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFt
ZSBzaW1pbGFyIHRvCisjIGNvbmZpZy5zdWIuICBJZiBpdCBzdWNjZWVkcywgaXQgcHJpbnRzIHRo
ZSBzeXN0ZW0gbmFtZSBvbiBzdGRvdXQsIGFuZAorIyBleGl0cyB3aXRoIDAuICBPdGhlcndpc2Us
IGl0IGV4aXRzIHdpdGggMS4KKyMKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9m
IHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIv
P3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorCittZT1g
ZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BU
SU9OXQorCitPdXRwdXQgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBvZiB0aGUgc3lzdGVtIFxgJG1l
JyBpcyBydW4gb24uCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHBy
aW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRl
IG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHBy
aW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMg
dG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5n
dWVzcyAoJHRpbWVzdGFtcCkKKworT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgor
Q29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAx
OTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1Ro
aXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9u
cy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1l
IC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQor
d2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAg
fCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAg
IC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAg
LS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAg
LS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7
CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSog
KQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCisgICAgICAg
ZXhpdCAxIDs7CisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitpZiB0
ZXN0ICQjICE9IDA7IHRoZW4KKyAgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIg
PiYyCisgIGV4aXQgMQorZmkKKwordHJhcCAnZXhpdCAxJyAxIDIgMTUKKworIyBDQ19GT1JfQlVJ
TEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2Yg
YQorIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBh
cyBpdCByZXF1aXJlcworIyB0ZW1wb3JhcnkgZmlsZXMgdG8gYmUgY3JlYXRlZCBhbmQsIGFzIHlv
dSBjYW4gc2VlIGJlbG93LCBpdCBpcyBhCisjIGhlYWRhY2hlIHRvIGRlYWwgd2l0aCBpbiBhIHBv
cnRhYmxlIGZhc2hpb24uCisKKyMgSGlzdG9yaWNhbGx5LCBgQ0NfRk9SX0JVSUxEJyB1c2VkIHRv
IGJlIG5hbWVkIGBIT1NUX0NDJy4gV2Ugc3RpbGwKKyMgdXNlIGBIT1NUX0NDJyBpZiBkZWZpbmVk
LCBidXQgaXQgaXMgZGVwcmVjYXRlZC4KKworIyBQb3J0YWJsZSB0bXAgZGlyZWN0b3J5IGNyZWF0
aW9uIGluc3BpcmVkIGJ5IHRoZSBBdXRvY29uZiB0ZWFtLgorCitzZXRfY2NfZm9yX2J1aWxkPScK
K3RyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGly
IFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNvZGUiIDAgOwordHJhcCAicm0gLWYg
XCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIg
MSAyIDEzIDE1IDsKKzogJHtUTVBESVI9L3RtcH0gOworIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1r
dGVtcCAtZCAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1w
IiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKKyB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0k
VE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAor
IHsgdG1wPSRUTVBESVIvY2ctJCQgJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSAmJiBlY2hv
ICJXYXJuaW5nOiBjcmVhdGluZyBpbnNlY3VyZSB0ZW1wIGRpcmVjdG9yeSIgPiYyIDsgfSB8fAor
IHsgZWNobyAiJG1lOiBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAkVE1Q
RElSIiA+JjIgOyBleGl0IDEgOyB9IDsKK2R1bW15PSR0bXAvZHVtbXkgOwordG1wZmlsZXM9IiRk
dW1teS5jICRkdW1teS5vICRkdW1teS5yZWwgJGR1bW15IiA7CitjYXNlICRDQ19GT1JfQlVJTEQs
JEhPU1RfQ0MsJENDIGluCisgLCwpICAgIGVjaG8gImludCB4OyIgPiAkZHVtbXkuYyA7CisJZm9y
IGMgaW4gY2MgZ2NjIGM4OSBjOTkgOyBkbworCSAgaWYgKCRjIC1jIC1vICRkdW1teS5vICRkdW1t
eS5jKSA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICAgICBDQ19GT1JfQlVJTEQ9IiRjIjsgYnJl
YWsgOworCSAgZmkgOworCWRvbmUgOworCWlmIHRlc3QgeCIkQ0NfRk9SX0JVSUxEIiA9IHggOyB0
aGVuCisJICBDQ19GT1JfQlVJTEQ9bm9fY29tcGlsZXJfZm91bmQgOworCWZpCisJOzsKKyAsLCop
ICAgQ0NfRk9SX0JVSUxEPSRDQyA7OworICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1RfQ0MgOzsK
K2VzYWMgOyBzZXRfY2NfZm9yX2J1aWxkPSA7JworCisjIFRoaXMgaXMgbmVlZGVkIHRvIGZpbmQg
dW5hbWUgb24gYSBQeXJhbWlkIE9TeCB3aGVuIHJ1biBpbiB0aGUgQlNEIHVuaXZlcnNlLgorIyAo
Z2hhemlAbm9jLnJ1dGdlcnMuZWR1IDE5OTQtMDgtMjQpCitpZiAodGVzdCAtZiAvLmF0dGJpbi91
bmFtZSkgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCVBBVEg9JFBBVEg6Ly5hdHRiaW4gOyBleHBv
cnQgUEFUSAorZmkKKworVU5BTUVfTUFDSElORT1gKHVuYW1lIC1tKSAyPi9kZXYvbnVsbGAgfHwg
VU5BTUVfTUFDSElORT11bmtub3duCitVTkFNRV9SRUxFQVNFPWAodW5hbWUgLXIpIDI+L2Rldi9u
dWxsYCB8fCBVTkFNRV9SRUxFQVNFPXVua25vd24KK1VOQU1FX1NZU1RFTT1gKHVuYW1lIC1zKSAy
Pi9kZXYvbnVsbGAgIHx8IFVOQU1FX1NZU1RFTT11bmtub3duCitVTkFNRV9WRVJTSU9OPWAodW5h
bWUgLXYpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9WRVJTSU9OPXVua25vd24KKworIyBOb3RlOiBv
cmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBjYXNlIGJyYW5jaGVzIGFyZSBub3QgZXhjbHVzaXZl
LgorCitjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVB
U0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgICAgKjpOZXRCU0Q6KjoqKQorCSMgTmV0QlNEIChu
YnNkKSB0YXJnZXRzIHNob3VsZCAod2hlcmUgYXBwbGljYWJsZSkgbWF0Y2ggb25lIG9yCisJIyBt
b3JlIG9mIHRoZSB0dXBwbGVzOiAqLSotbmV0YnNkZWxmKiwgKi0qLW5ldGJzZGFvdXQqLAorCSMg
Ki0qLW5ldGJzZGVjb2ZmKiBhbmQgKi0qLW5ldGJzZCouICBGb3IgdGFyZ2V0cyB0aGF0IHJlY2Vu
dGx5CisJIyBzd2l0Y2hlZCB0byBFTEYsICotKi1uZXRic2QqIHdvdWxkIHNlbGVjdCB0aGUgb2xk
CisJIyBvYmplY3QgZmlsZSBmb3JtYXQuICBUaGlzIHByb3ZpZGVzIGJvdGggZm9yd2FyZAorCSMg
Y29tcGF0aWJpbGl0eSBhbmQgYSBjb25zaXN0ZW50IG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIHRo
ZQorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LgorCSMKKwkjIE5vdGU6IE5ldEJTRCBkb2Vzbid0IHBh
cnRpY3VsYXJseSBjYXJlIGFib3V0IHRoZSB2ZW5kb3IKKwkjIHBvcnRpb24gb2YgdGhlIG5hbWUu
ICBXZSBhbHdheXMgc2V0IGl0IHRvICJ1bmtub3duIi4KKwlzeXNjdGw9InN5c2N0bCAtbiBody5t
YWNoaW5lX2FyY2giCisJVU5BTUVfTUFDSElORV9BUkNIPWAoL3NiaW4vJHN5c2N0bCAyPi9kZXYv
bnVsbCB8fCBcCisJICAgIC91c3Ivc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5r
bm93bilgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm1lYikgbWFj
aGluZT1hcm1lYi11bmtub3duIDs7CisJICAgIGFybSopIG1hY2hpbmU9YXJtLXVua25vd24gOzsK
KwkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKKwkgICAgc2gzZWIpIG1hY2hpbmU9
c2gtdW5rbm93biA7OworCSAgICBzaDVlbCkgbWFjaGluZT1zaDVsZS11bmtub3duIDs7CisJICAg
ICopIG1hY2hpbmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24gOzsKKwllc2FjCisJIyBU
aGUgT3BlcmF0aW5nIFN5c3RlbSBpbmNsdWRpbmcgb2JqZWN0IGZvcm1hdCwgaWYgaXQgaGFzIHN3
aXRjaGVkCisJIyB0byBFTEYgcmVjZW50bHksIG9yIHdpbGwgaW4gdGhlIGZ1dHVyZS4KKwljYXNl
ICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGFybSp8aTM4NnxtNjhrfG5zMzJrfHNo
Myp8c3BhcmN8dmF4KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIGVjaG8gX19FTEZf
XyB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCQl8IGdyZXAgLXEgX19FTEZf
XworCQl0aGVuCisJCSAgICAjIE9uY2UgYWxsIHV0aWxpdGllcyBjYW4gYmUgRUNPRkYgKG5ldGJz
ZGVjb2ZmKSBvciBhLm91dCAobmV0YnNkYW91dCkuCisJCSAgICAjIFJldHVybiBuZXRic2QgZm9y
IGVpdGhlci4gIEZJWD8KKwkJICAgIG9zPW5ldGJzZAorCQllbHNlCisJCSAgICBvcz1uZXRic2Rl
bGYKKwkJZmkKKwkJOzsKKwkgICAgKikKKwkJb3M9bmV0YnNkCisJCTs7CisJZXNhYworCSMgVGhl
IE9TIHJlbGVhc2UKKwkjIERlYmlhbiBHTlUvTmV0QlNEIG1hY2hpbmVzIGhhdmUgYSBkaWZmZXJl
bnQgdXNlcmxhbmQsIGFuZAorCSMgdGh1cywgbmVlZCBhIGRpc3RpbmN0IHRyaXBsZXQuIEhvd2V2
ZXIsIHRoZXkgZG8gbm90IG5lZWQKKwkjIGtlcm5lbCB2ZXJzaW9uIGluZm9ybWF0aW9uLCBzbyBp
dCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhCisJIyBzdWl0YWJsZSB0YWcsIGluIHRoZSBzdHlsZSBv
ZiBsaW51eC1nbnUuCisJY2FzZSAiJHtVTkFNRV9WRVJTSU9OfSIgaW4KKwkgICAgRGViaWFuKikK
KwkJcmVsZWFzZT0nLWdudScKKwkJOzsKKwkgICAgKikKKwkJcmVsZWFzZT1gZWNobyAke1VOQU1F
X1JFTEVBU0V9fHNlZCAtZSAncy9bLV9dLiovXC4vJ2AKKwkJOzsKKwllc2FjCisJIyBTaW5jZSBD
UFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU06CisJIyBjb250YWlu
cyByZWR1bmRhbnQgaW5mb3JtYXRpb24sIHRoZSBzaG9ydGVyIGZvcm06CisJIyBDUFVfVFlQRS1N
QU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTSBpcyB1c2VkLgorCWVjaG8gIiR7bWFjaGluZX0t
JHtvc30ke3JlbGVhc2V9IgorCWV4aXQgOzsKKyAgICAqOk9wZW5CU0Q6KjoqKQorCVVOQU1FX01B
Q0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKKwllY2hvICR7VU5BTUVfTUFD
SElORV9BUkNIfS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAg
ICo6ZWtrb0JTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZWtrb2JzZCR7
VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpTb2xpZEJTRDoqOiopCisJZWNobyAke1VO
QU1FX01BQ0hJTkV9LXVua25vd24tc29saWRic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7Owor
ICAgIG1hY3BwYzpNaXJCU0Q6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLW1pcmJzZCR7VU5B
TUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpNaXJCU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYWxw
aGE6T1NGMToqOiopCisJY2FzZSAkVU5BTUVfUkVMRUFTRSBpbgorCSo0LjApCisJCVVOQU1FX1JF
TEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQzfSdgCisJCTs7CisJKjUu
KikKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9
J2AKKwkJOzsKKwllc2FjCisJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5m
byBoYXMgYmVlbiBhdmFpbGFibGUgb24KKwkjIE9TRi8xIGFuZCBUcnU2NCBzeXN0ZW1zIHByb2R1
Y2VkIHNpbmNlIDE5OTUuICBJIGhvcGUgdGhhdAorCSMgY292ZXJzIG1vc3Qgc3lzdGVtcyBydW5u
aW5nIHRvZGF5LiAgVGhpcyBjb2RlIHBpcGVzIHRoZSBDUFUKKwkjIHR5cGVzIHRocm91Z2ggaGVh
ZCAtbiAxLCBzbyB3ZSBvbmx5IGRldGVjdCB0aGUgdHlwZSBvZiBDUFUgMC4KKwlBTFBIQV9DUFVf
VFlQRT1gL3Vzci9zYmluL3BzcmluZm8gLXYgfCBzZWQgLW4gLWUgJ3MvXiAgVGhlIGFscGhhIFwo
LipcKSBwcm9jZXNzb3IuKiQvXDEvcCcgfCBoZWFkIC1uIDFgCisJY2FzZSAiJEFMUEhBX0NQVV9U
WVBFIiBpbgorCSAgICAiRVY0ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsK
KwkgICAgIkVWNC41ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAg
IkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAi
RVY1ICgyMTE2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NSIgOzsKKwkgICAgIkVWNS42
ICgyMTE2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjU2IiA7OworCSAgICAiRVY1LjYg
KDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NiIgOzsKKwkgICAgIkVWNS43
ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTciIDs7CisJICAgICJFVjYg
KDIxMjY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2IiA7OworCSAgICAiRVY2LjcgKDIx
MjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjciIDs7CisJICAgICJFVjYuOENCICgy
MTI2NEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhBTCAo
MjEyNjRCKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44Q1gg
KDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOUEg
KDIxMjY0L0VWNjlBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OSIgOzsKKwkgICAgIkVW
NyAoMjEzNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjciIDs7CisJICAgICJFVjcuOSAo
MjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3OSIgOzsKKwllc2FjCisJIyBBIFBu
Lm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KKwkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEg
cmVsZWFzZWQgdmVyc2lvbi4KKwkjIEEgVG4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQg
dGVzdCB2ZXJzaW9uLgorCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmlt
ZW50YWwgYmFzZWxldmVsLgorCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgorCWVjaG8g
JHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAn
cy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXonYAorCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRv
IGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KKwlleGl0Y29kZT0kPworCXRyYXAg
JycgMAorCWV4aXQgJGV4aXRjb2RlIDs7CisgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKKwkj
IEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJ
WCBzdWJzeXN0ZW0/CisJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24g
dGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisJIyBvZiB0aGUgc3BlY2lmaWMgQWxwaGEgbW9k
ZWw/CisJZWNobyBhbHBoYS1wYy1pbnRlcml4CisJZXhpdCA7OworICAgIDIxMDY0OldpbmRvd3Nf
TlQ6NTA6MykKKwllY2hvIGFscGhhLWRlYy13aW5udDMuNQorCWV4aXQgOzsKKyAgICBBbWlnYSo6
VU5JWF9TeXN0ZW1fVjo0LjA6KikKKwllY2hvIG02OGstdW5rbm93bi1zeXN2NAorCWV4aXQgOzsK
KyAgICAqOltBYV1taWdhW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtu
b3duLWFtaWdhb3MKKwlleGl0IDs7CisgICAgKjpbTW1db3JwaFtPb11bU3NdOio6KikKKwllY2hv
ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1tb3JwaG9zCisJZXhpdCA7OworICAgICo6T1MvMzkw
Oio6KikKKwllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCisJZXhpdCA7OworICAgICo6ei9WTToq
OiopCisJZWNobyBzMzkwLWlibS16dm1vZQorCWV4aXQgOzsKKyAgICAqOk9TNDAwOio6KikKKwll
Y2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoq
fGFybTpyaXNjaXg6MS5bMDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JF
TEVBU0V9CisJZXhpdCA7OworICAgIGFybTpyaXNjb3M6KjoqfGFybTpSSVNDT1M6KjoqKQorCWVj
aG8gYXJtLXVua25vd24tcmlzY29zCisJZXhpdCA7OworICAgIFNSMj8wMTpISS1VWC9NUFA6Kjoq
IHwgU1I4MDAwOkhJLVVYL01QUDoqOiopCisJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAor
CWV4aXQgOzsKKyAgICBQeXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNN
UF9EQy1PU3gqOio6KikKKwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFr
ZSkgY29udHJpYnV0ZWQgTUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkg
Mj4vZGV2L251bGxgIiA9IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMK
KwllbHNlCisJCWVjaG8gcHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCA7OworICAgIE5J
TEUqOio6KjpkY29zeCkKKwllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0CisJZXhpdCA7OworICAg
IERSUz82MDAwOnVuaXg6NC4wOjYqKQorCWVjaG8gc3BhcmMtaWNsLW54NgorCWV4aXQgOzsKKyAg
ICBEUlM/NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2Fz
ZSBgL3Vzci9iaW4vdW5hbWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7
IGV4aXQgOzsKKwllc2FjIDs7CisgICAgczM5MHg6U3VuT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1pYm0tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5d
Ki8vJ2AKKwlleGl0IDs7CisgICAgc3VuNEg6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1oYWwt
c29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0
IDs7CisgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hv
IHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0q
Ly8nYAorCWV4aXQgOzsKKyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFV
WDo1Lio6KikKKwllY2hvIGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorCWV2YWwgJHNl
dF9jY19mb3JfYnVpbGQKKwlTVU5fQVJDSD0iaTM4NiIKKwkjIElmIHRoZXJlIGlzIGEgY29tcGls
ZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUg
dGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRv
ZXMuCisJIyBUaGlzIHRlc3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19G
T1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCSAgICBpZiAoZWNobyAn
I2lmZGVmIF9fYW1kNjQnOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAor
CQkoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElT
XzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPSJ4ODZfNjQiCisJ
ICAgIGZpCisJZmkKKwllY2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9S
RUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjYq
OiopCisJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0
byBjYW5vbmljYWxpemUKKwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1
bk9TNiB3aWxsIGJlIGxpa2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNv
bGFyaXMgdGhhbiBTdW5PUzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1F
X1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6
KjoqKQorCWNhc2UgImAvdXNyL2Jpbi9hcmNoIC1rYCIgaW4KKwkgICAgU2VyaWVzKnxTNCopCisJ
CVVOQU1FX1JFTEVBU0U9YHVuYW1lIC12YAorCQk7OworCWVzYWMKKwkjIEphcGFuZXNlIExhbmd1
YWdlIHZlcnNpb25zIGhhdmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIGA0LjEuMy1KTCcuCisJZWNo
byBzcGFyYy1zdW4tc3Vub3NgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vJ2AK
KwlleGl0IDs7CisgICAgc3VuMyo6U3VuT1M6KjoqKQorCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VO
QU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxF
QVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+
L2Rldi9udWxsYAorCXRlc3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxF
QVNFPTMKKwljYXNlICJgL2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1
bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1z
dW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgOzsKKyAgICBhdXNo
cDpTdW5PUzoqOiopCisJZWNobyBzcGFyYy1hdXNwZXgtc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJ
ZXhpdCA7OworICAgICMgVGhlIHNpdHVhdGlvbiBmb3IgTWlOVCBpcyBhIGxpdHRsZSBjb25mdXNp
bmcuICBUaGUgbWFjaGluZSBuYW1lCisgICAgIyBjYW4gYmUgdmlydHVhbGx5IGV2ZXJ5dGhpbmcg
KGV2ZXJ5dGhpbmcgd2hpY2ggaXMgbm90CisgICAgIyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBh
dCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgorICAgICMgPiBtNjgwMDApLiAgVGhlIHN5
c3RlbSBuYW1lIHJhbmdlcyBmcm9tICJNaU5UIiBvdmVyICJGcmVlTWlOVCIKKyAgICAjIHRvIHRo
ZSBsb3dlcmNhc2UgdmVyc2lvbiAibWludCIgKG9yICJmcmVlbWludCIpLiAgRmluYWxseQorICAg
ICMgdGhlIHN5c3RlbSBuYW1lICJUT1MiIGRlbm90ZXMgYSBzeXN0ZW0gd2hpY2ggaXMgYWN0dWFs
bHkgbm90CisgICAgIyBNaU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBU
T1MsIHNvIHRoaXMgc2hvdWxkCisgICAgIyBiZSBubyBwcm9ibGVtLgorICAgIGF0YXJpc3RbZV06
Kk1pTlQ6KjoqIHwgYXRhcmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQor
CWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhdGFy
aSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisJ
ZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICpmYWxj
b24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQor
CWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaWxh
bio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiopCisJZWNo
byBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGhhZGVzKjoq
TWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKKwllY2hvIG02
OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjoqTWlOVDoqOiog
fCAqOiptaW50Oio6KiB8ICo6KlRPUzoqOiopCisJZWNobyBtNjhrLXVua25vd24tbWludCR7VU5B
TUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGst
YXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcG93ZXJwYzptYWNo
dGVuOio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwll
eGl0IDs7CisgICAgUklTQyo6TWFjaDoqOiopCisJZWNobyBtaXBzLWRlYy1tYWNoX2JzZDQuMwor
CWV4aXQgOzsKKyAgICBSSVNDKjpVTFRSSVg6KjoqKQorCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtV
TkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4
LWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIDIwMjA6Q0xJWDoqOiog
fCAyNDMwOkNMSVg6KjoqKQorCWVjaG8gY2xpcHBlci1pbnRlcmdyYXBoLWNsaXgke1VOQU1FX1JF
TEVBU0V9CisJZXhpdCA7OworICAgIG1pcHM6KjoqOlVNSVBTIHwgbWlwczoqOio6UklTQ29zKQor
CWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYwor
I2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIGZvciBwcmludGYoKSBw
cm90b3R5cGUgKi8KKwlpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworI2Vsc2UK
KwlpbnQgbWFpbiAoYXJnYywgYXJndikgaW50IGFyZ2M7IGNoYXIgKmFyZ3ZbXTsgeworI2VuZGlm
CisJI2lmIGRlZmluZWQgKGhvc3RfbWlwcykgJiYgZGVmaW5lZCAoTUlQU0VCKQorCSNpZiBkZWZp
bmVkIChTWVNUWVBFX1NZU1YpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzeXN2XG4i
LCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1ZS
NCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N2cjRcbiIsIGFyZ3ZbMV0pOyBleGl0
ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0MykgfHwgZGVmaW5lZChT
WVNUWVBFX0JTRCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc2JzZFxuIiwgYXJndlsx
XSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNlbmRpZgorCSAgZXhpdCAoLTEpOworCX0KK0VPRgor
CSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmCisJICBkdW1teWFyZz1gZWNobyAi
JHtVTkFNRV9SRUxFQVNFfSIgfCBzZWQgLW4gJ3MvXChbMC05XSpcKS4qL1wxL3AnYCAmJgorCSAg
U1lTVEVNX05BTUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisJICAgIHsgZWNobyAiJFNZU1RFTV9O
QU1FIjsgZXhpdDsgfQorCWVjaG8gbWlwcy1taXBzLXJpc2NvcyR7VU5BTUVfUkVMRUFTRX0KKwll
eGl0IDs7CisgICAgTW90b3JvbGE6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1tb3Rv
cm9sYS1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hv
IHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6KjoqOlBv
d2VyTUFYX09TIHwgU3luZXJneTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJp
cy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOlBvd2VyX1VOSVg6KjoqKQorCWVj
aG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJ1bml4CisJZXhpdCA7OworICAgIG04OGs6Q1gvVVg6Nyo6
KikKKwllY2hvIG04OGstaGFycmlzLWN4dXg3CisJZXhpdCA7OworICAgIG04OGs6Kjo0KjpSNCop
CisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3Y0CisJZXhpdCA7OworICAgIG04OGs6KjozKjpSMyop
CisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIEFWaWlPTjpkZ3V4Oio6
KikKKwkjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcworCVVOQU1F
X1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJaWYgWyAkVU5BTUVfUFJPQ0VTU09SID0g
bWM4ODEwMCBdIHx8IFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMTAgXQorCXRoZW4KKwkgICAg
aWYgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSBtODhrZGd1eGVsZnggXSB8fCBcCisJ
ICAgICAgIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0geCBdCisJICAgIHRoZW4KKwkJ
ZWNobyBtODhrLWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CisJICAgIGVsc2UKKwkJZWNobyBtODhr
LWRnLWRndXhiY3Mke1VOQU1FX1JFTEVBU0V9CisJICAgIGZpCisJZWxzZQorCSAgICBlY2hvIGk1
ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWV4aXQgOzsKKyAgICBNODgqOkRvbHBo
aW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorCWVjaG8gbTg4ay1kb2xwaGluLXN5c3YzCisJ
ZXhpdCA7OworICAgIE04OCo6KjpSMyo6KikKKwkjIERlbHRhIDg4ayBzeXN0ZW0gcnVubmluZyBT
VlIzCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIFhEODgqOio6Kjoq
KSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVjaG8gbTg4
ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDs7CisgICAgVGVrNDNbMC05XVswLTldOlVUZWs6Kjoq
KSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKKwllY2hvIG02OGst
dGVrdHJvbml4LWJzZAorCWV4aXQgOzsKKyAgICAqOklSSVgqOio6KikKKwllY2hvIG1pcHMtc2dp
LWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCisJZXhpdCA7Owor
ICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlz
IFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgIyB1bmFtZSAtbSBnaXZlcyBhbiA4
IGhleC1jb2RlIENQVSBpZAorCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNo
byAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICBpKjg2OkFJWDoqOiopCisJZWNobyBp
Mzg2LWlibS1haXgKKwlleGl0IDs7CisgICAgaWE2NDpBSVg6KjoqKQorCWlmIFsgLXggL3Vzci9i
aW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UK
KwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8g
JHtVTkFNRV9NQUNISU5FfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAqOkFJWDoy
OjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYx
OyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8PCBFT0Yg
PiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigpCisJCQl7
CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93ZXJwYy1p
Ym0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJaWYgJENDX0ZPUl9CVUlM
RCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKwkJdGhlbgorCQkJ
ZWNobyAiJFNZU1RFTV9OQU1FIgorCQllbHNlCisJCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjUK
KwkJZmkKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwg
Mj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVjaG8gcnM2
MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOls0NTY3XSkKKwlJQk1f
Q1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNl
ZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKKwlpZiAvdXNyL3NiaW4vbHNhdHRyIC1FbCAke0lC
TV9DUFVfSUR9IHwgZ3JlcCAnIFBPV0VSJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJSUJNX0FS
Q0g9cnM2MDAwCisJZWxzZQorCQlJQk1fQVJDSD1wb3dlcnBjCisJZmkKKwlpZiBbIC14IC91c3Iv
YmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNl
CisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hv
ICR7SUJNX0FSQ0h9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCA7OworICAgICo6QUlYOio6KikK
KwllY2hvIHJzNjAwMC1pYm0tYWl4CisJZXhpdCA7OworICAgIGlibXJ0OjQuNEJTRDoqfHJvbXAt
aWJtOkJTRDoqKQorCWVjaG8gcm9tcC1pYm0tYnNkNC40CisJZXhpdCA7OworICAgIGlibXJ0OipC
U0Q6Knxyb21wLWlibTpCU0Q6KikgICAgICAgICAgICAjIGNvdmVycyBSVC9QQyBCU0QgYW5kCisJ
ZWNobyByb21wLWlibS1ic2Qke1VOQU1FX1JFTEVBU0V9ICAgIyA0LjMgd2l0aCB1bmFtZSBhZGRl
ZCB0bworCWV4aXQgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21w
LWlibSBCU0QgNC4zCisgICAgKjpCT1NYOio6KikKKwllY2hvIHJzNjAwMC1idWxsLWJvc3gKKwll
eGl0IDs7CisgICAgRFBYLzI/MDA6Qi5PLlMuOio6KikKKwllY2hvIG02OGstYnVsbC1zeXN2Mwor
CWV4aXQgOzsKKyAgICA5MDAwL1szNF0/Pzo0LjNic2Q6MS4qOiopCisJZWNobyBtNjhrLWhwLWJz
ZAorCWV4aXQgOzsKKyAgICBocDMwMDo0LjRCU0Q6KjoqIHwgOTAwMC9bMzRdPz86NC4zYnNkOjIu
KjoqKQorCWVjaG8gbTY4ay1ocC1ic2Q0LjQKKwlleGl0IDs7CisgICAgOTAwMC9bMzQ2NzhdPz86
SFAtVVg6KjoqKQorCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1te
Ll0qLlswQl0qLy8nYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIDkwMDAvMzE/
ICkgICAgICAgICAgICBIUF9BUkNIPW02ODAwMCA7OworCSAgICA5MDAwL1szNF0/PyApICAgICAg
ICAgSFBfQVJDSD1tNjhrIDs7CisJICAgIDkwMDAvWzY3OF1bMC05XVswLTldKQorCQlpZiBbIC14
IC91c3IvYmluL2dldGNvbmYgXTsgdGhlbgorCQkgICAgc2NfY3B1X3ZlcnNpb249YC91c3IvYmlu
L2dldGNvbmYgU0NfQ1BVX1ZFUlNJT04gMj4vZGV2L251bGxgCisJCSAgICBzY19rZXJuZWxfYml0
cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKKwkJICAgIGNh
c2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorCQkgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAi
IDs7ICMgQ1BVX1BBX1JJU0MxXzAKKwkJICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAj
IENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVf
UEFfUklTQzJfMAorCQkJY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisJCQkgIDMyKSBIUF9B
UkNIPSJocHBhMi4wbiIgOzsKKwkJCSAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkJICAn
JykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCisJCQllc2FjIDs7CisJCSAg
ICBlc2FjCisJCWZpCisJCWlmIFsgIiR7SFBfQVJDSH0iID0gIiIgXTsgdGhlbgorCQkgICAgZXZh
bCAkc2V0X2NjX2Zvcl9idWlsZAorCQkgICAgc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5j
CisKKwkJI2RlZmluZSBfSFBVWF9TT1VSQ0UKKwkJI2luY2x1ZGUgPHN0ZGxpYi5oPgorCQkjaW5j
bHVkZSA8dW5pc3RkLmg+CisKKwkJaW50IG1haW4gKCkKKwkJeworCQkjaWYgZGVmaW5lZChfU0Nf
S0VSTkVMX0JJVFMpCisJCSAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7
CisJCSNlbmRpZgorCQkgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsK
KworCQkgICAgc3dpdGNoIChjcHUpCisJCQl7CisJCQljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRz
ICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBh
MS4xIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzJfMDoKKwkJI2lmIGRlZmluZWQoX1ND
X0tFUk5FTF9CSVRTKQorCQkJICAgIHN3aXRjaCAoYml0cykKKwkJCQl7CisJCQkJY2FzZSA2NDog
cHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOworCQkJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIp
OyBicmVhazsKKwkJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJCQl9IGJy
ZWFrOworCQkjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLworCQkJICAgIHB1
dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkjZW5kaWYKKwkJCWRlZmF1bHQ6IHB1dHMgKCJocHBh
MS4wIik7IGJyZWFrOworCQkJfQorCQkgICAgZXhpdCAoMCk7CisJCX0KK0VPRgorCQkgICAgKEND
T1BUUz0gJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwpICYmIEhQ
X0FSQ0g9YCRkdW1teWAKKwkJICAgIHRlc3QgLXogIiRIUF9BUkNIIiAmJiBIUF9BUkNIPWhwcGEK
KwkJZmkgOzsKKwllc2FjCisJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCisJdGhlbgor
CSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisKKwkgICAgIyBocHBhMi4wdy1ocC1ocHV4KiBo
YXMgYSA2NC1iaXQga2VybmVsIGFuZCBhIGNvbXBpbGVyIGdlbmVyYXRpbmcKKwkgICAgIyAzMi1i
aXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMgdGhlIHNhbWUga2VybmVsIGFuZCBhIGNvbXBp
bGVyCisJICAgICMgZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4gIEdOVSBhbmQgSFAgdXNlIGRpZmZl
cmVudCBub21lbmNsYXR1cmU6CisJICAgICMKKwkgICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2Nv
bmZpZy5ndWVzcworCSAgICAjID0+IGhwcGEyLjB3LWhwLWhwdXgxMS4yMworCSAgICAjICQgQ0Nf
Rk9SX0JVSUxEPSJjYyArREEyLjB3IiAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGE2NC1o
cC1ocHV4MTEuMjMKKworCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9C
VUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8CisJCWdyZXAgLXEgX19MUDY0X18KKwkgICAgdGhlbgor
CQlIUF9BUkNIPSJocHBhMi4wdyIKKwkgICAgZWxzZQorCQlIUF9BUkNIPSJocHBhNjQiCisJICAg
IGZpCisJZmkKKwllY2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCA7Owor
ICAgIGlhNjQ6SFAtVVg6KjoqKQorCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2Vk
IC1lICdzL1teLl0qLlswQl0qLy8nYAorCWVjaG8gaWE2NC1ocC1ocHV4JHtIUFVYX1JFVn0KKwll
eGl0IDs7CisgICAgMzA1MCo6SEktVVg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlz
ZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpbmNsdWRlIDx1bmlzdGQuaD4KKwlpbnQK
KwltYWluICgpCisJeworCSAgbG9uZyBjcHUgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOwor
CSAgLyogVGhlIG9yZGVyIG1hdHRlcnMsIGJlY2F1c2UgQ1BVX0lTX0hQX01DNjhLIGVycm9uZW91
c2x5IHJldHVybnMKKwkgICAgIHRydWUgZm9yIENQVV9QQV9SSVNDMV8wLiAgQ1BVX0lTX1BBX1JJ
U0MgcmV0dXJucyBjb3JyZWN0CisJICAgICByZXN1bHRzLCBob3dldmVyLiAgKi8KKwkgIGlmIChD
UFVfSVNfUEFfUklTQyAoY3B1KSkKKwkgICAgeworCSAgICAgIHN3aXRjaCAoY3B1KQorCQl7CisJ
CSAgY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAtaGl0YWNoaS1oaXV4d2UyIik7
IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xLWhpdGFjaGkt
aGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMl8wOiBwdXRzICgiaHBwYTIu
MC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgZGVmYXVsdDogcHV0cyAoImhwcGEtaGl0
YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQl9CisJICAgIH0KKwkgIGVsc2UgaWYgKENQVV9JU19I
UF9NQzY4SyAoY3B1KSkKKwkgICAgcHV0cyAoIm02OGstaGl0YWNoaS1oaXV4d2UyIik7CisJICBl
bHNlIHB1dHMgKCJ1bmtub3duLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZXhpdCAoMCk7CisJfQor
RU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRk
dW1teWAgJiYKKwkJeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisJZWNobyB1bmtub3du
LWhpdGFjaGktaGl1eHdlMgorCWV4aXQgOzsKKyAgICA5MDAwLzc/Pzo0LjNic2Q6KjoqIHwgOTAw
MC84P1s3OV06NC4zYnNkOio6KiApCisJZWNobyBocHBhMS4xLWhwLWJzZAorCWV4aXQgOzsKKyAg
ICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1ic2QKKwlleGl0IDs7Cisg
ICAgKjk/Pyo6TVBFL2lYOio6KiB8ICozMDAwKjpNUEUvaVg6KjoqKQorCWVjaG8gaHBwYTEuMC1o
cC1tcGVpeAorCWV4aXQgOzsKKyAgICBocDc/PzpPU0YxOio6KiB8IGhwOD9bNzldOk9TRjE6Kjoq
ICkKKwllY2hvIGhwcGExLjEtaHAtb3NmCisJZXhpdCA7OworICAgIGhwOD8/Ok9TRjE6KjoqKQor
CWVjaG8gaHBwYTEuMC1ocC1vc2YKKwlleGl0IDs7CisgICAgaSo4NjpPU0YxOio6KikKKwlpZiBb
IC14IC91c3Ivc2Jpbi9zeXN2ZXJzaW9uIF0gOyB0aGVuCisJICAgIGVjaG8gJHtVTkFNRV9NQUNI
SU5FfS11bmtub3duLW9zZjFtaworCWVsc2UKKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu
a25vd24tb3NmMQorCWZpCisJZXhpdCA7OworICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKKwllY2hv
IGhwcGExLjEtaHAtbGl0ZXMKKwlleGl0IDs7CisgICAgQzEqOkNvbnZleE9TOio6KiB8IGNvbnZl
eDpDb252ZXhPUzpDMSo6KikKKwllY2hvIGMxLWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzIq
OkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKKwlpZiBnZXRzeXNpbmZvIC1m
IHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29u
dmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIEMzNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNv
bnZleE9TOkMzNCo6KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEMzOCo6
Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzOCo6KikKKwllY2hvIGMzOC1jb252ZXgt
YnNkCisJZXhpdCA7OworICAgIEM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQq
OiopCisJZWNobyBjNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIENSQVkqWS1NUDoqOio6KikK
KwllY2hvIHltcC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5d
KiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKltBLVpdOTA6KjoqOiopCisJZWNobyAke1VOQU1F
X01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBcCisJfCBzZWQgLWUgJ3MvQ1JB
WS4qXChbQS1aXTkwXCkvXDEvJyBcCisJICAgICAgLWUgeS9BQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8gXAorCSAgICAgIC1lICdzL1wuW14uXSok
Ly5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUUzoqOio6KikKKwllY2hvIHQ5MC1jcmF5LXVuaWNv
cyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAg
ICBDUkFZKlQzRToqOio6KikKKwllY2hvIGFscGhhZXY1LWNyYXktdW5pY29zbWske1VOQU1FX1JF
TEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpTVjE6
KjoqOiopCisJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdz
L1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgKjpVTklDT1MvbXA6KjoqKQorCWVjaG8gY3Jh
eW52LWNyYXktdW5pY29zbXAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5Y
LycKKwlleGl0IDs7CisgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9T
eXN0ZW1fVjoqOiopCisJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKwlGVUpJVFNVX1NZ
Uz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8g
JHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICIke0ZVSklUU1VfUFJP
Q30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICA1
MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwg
c2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0
ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
eicgfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lT
fSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpC
U0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFD
SElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgc3BhcmMqOkJTRC9P
UzoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgICo6QlNEL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2Rp
JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkZyZWVCU0Q6KjoqKQorCVVOQU1FX1BS
T0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJY2FzZSAke1VOQU1FX1BST0NFU1NPUn0gaW4K
KwkgICAgYW1kNjQpCisJCWVjaG8geDg2XzY0LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVf
UkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwkgICAgKikKKwkJZWNobyAke1VOQU1F
X1BST0NFU1NPUn0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg
J3MvWy0oXS4qLy8nYCA7OworCWVzYWMKKwlleGl0IDs7CisgICAgaSo6Q1lHV0lOKjoqKQorCWVj
aG8gJHtVTkFNRV9NQUNISU5FfS1wYy1jeWd3aW4KKwlleGl0IDs7CisgICAgKjpNSU5HVyo6KikK
KwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluZ3czMgorCWV4aXQgOzsKKyAgICBpKjpNU1lT
KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc3lzCisJZXhpdCA7OworICAgIGkqOndp
bmRvd3MzMio6KikKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOlBXKjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCisJZXhpdCA7OworICAgICo6SW50ZXJpeCo6
KikKKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMt
aW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBn
ZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFN
RV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWlu
dGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpX
aW5kb3dzXzk1OiogfCBbMzQ1XTg2OldpbmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoq
KQorCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2lu
ZG93c19OVDoqKQorCWVjaG8geDg2XzY0LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dz
X05UKjoqIHwgUGVudGl1bSo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3Mg
SW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBh
bHNvIGNvbmZsaWN0cyB3aXRoIHByZS0yLjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQg
d2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFk
IG9mIGkzODY/CisJZWNobyBpNTg2LXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6
KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpD
WUdXSU4qOio6KiB8IHg4Nl82NDpDWUdXSU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5
Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpDWUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93
bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBj
bGUtdW5rbm93bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0q
Ly8nYAorCWV4aXQgOzsKKyAgICAqOkdOVToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8g
YGVjaG8gJHtVTkFNRV9NQUNISU5FfXxzZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi1nbnVg
ZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncywvLiokLCwnYAorCWV4aXQgOzsKKyAgICAq
OkdOVS8qOio6KikKKwkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQK
KwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBz
ZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVB
U0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWV4aXQgOzsKKyAgICBpKjg2Ok1pbml4Oio6
KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluaXgKKwlleGl0IDs7CisgICAgYWxwaGE6
TGludXg6KjoqKQorCWNhc2UgYHNlZCAtbiAnL15jcHUgbW9kZWwvcy9eLio6IFwoLipcKS9cMS9w
JyA8IC9wcm9jL2NwdWluZm9gIGluCisJICBFVjUpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7
OworCSAgRVY1NikgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjU2IDs7CisJICBQQ0E1NikgVU5BTUVf
TUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBQQ0E1NykgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2
IDs7CisJICBFVjYpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OworCSAgRVY2NykgIFVOQU1F
X01BQ0hJTkU9YWxwaGFldjY3IDs7CisJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2Njgg
OzsKKwllc2FjCisJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCAtcSBs
ZC5zby4xCisJaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0ibGliYzEiIDsgZWxzZSBMSUJD
PSIiIDsgZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9
CisJZXhpdCA7OworICAgIGFybSo6TGludXg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQK
KwlpZiBlY2hvIF9fQVJNX0VBQklfXyB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBc
CisJICAgIHwgZ3JlcCAtcSBfX0FSTV9FQUJJX18KKwl0aGVuCisJICAgIGVjaG8gJHtVTkFNRV9N
QUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWVsc2UKKwkgICAgaWYgZWNobyBfX0FSTV9QQ1Nf
VkZQIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJfCBncmVwIC1xIF9fQVJN
X1BDU19WRlAKKwkgICAgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51
eC1nbnVlYWJpCisJICAgIGVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGlu
dXgtZ251ZWFiaWhmCisJICAgIGZpCisJZmkKKwlleGl0IDs7CisgICAgYXZyMzIqOkxpbnV4Oio6
KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7Cisg
ICAgY3JpczpMaW51eDoqOiopCisJZWNobyBjcmlzLWF4aXMtbGludXgtZ251CisJZXhpdCA7Owor
ICAgIGNyaXN2MzI6TGludXg6KjoqKQorCWVjaG8gY3Jpc3YzMi1heGlzLWxpbnV4LWdudQorCWV4
aXQgOzsKKyAgICBmcnY6TGludXg6KjoqKQorCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJ
ZXhpdCA7OworICAgIGhleGFnb246TGludXg6KjoqKQorCWVjaG8gaGV4YWdvbi11bmtub3duLWxp
bnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwlMSUJDPWdudQorCWV2YWwg
JHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpZmRl
ZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0Nf
Rk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkxJQkMnYAorCWVjaG8g
IiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwlleGl0IDs7CisgICAgaWE2NDpM
aW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhp
dCA7OworICAgIG0zMnIqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93
bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTY4KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1F
X01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG1pcHM6TGludXg6Kjoq
IHwgbWlwczY0OkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14J
Ly8nIDw8IEVPRiA+JGR1bW15LmMKKwkjdW5kZWYgQ1BVCisJI3VuZGVmICR7VU5BTUVfTUFDSElO
RX0KKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfWVsCisJI2lmIGRlZmluZWQoX19NSVBTRUxfXykg
fHwgZGVmaW5lZChfX01JUFNFTCkgfHwgZGVmaW5lZChfTUlQU0VMKSB8fCBkZWZpbmVkKE1JUFNF
TCkKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCisJI2Vsc2UKKwkjaWYgZGVmaW5lZChfX01JUFNF
Ql9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQo
TUlQU0VCKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9CisJI2Vsc2UKKwlDUFU9CisJI2VuZGlmCisJ
I2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxs
IHwgZ3JlcCAnXkNQVSdgCisJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11
bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KKwk7OworICAgIG9yMzI6TGludXg6KjoqKQorCWVj
aG8gb3IzMi11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYWRyZTpMaW51eDoqOiop
CisJZWNobyBzcGFyYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYXJpc2M2NDpM
aW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQorCWVjaG8gaHBwYTY0LXVua25vd24tbGludXgt
Z251CisJZXhpdCA7OworICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKKwkj
IExvb2sgZm9yIENQVSBsZXZlbAorCWNhc2UgYGdyZXAgJ15jcHVbXmEtel0qOicgL3Byb2MvY3B1
aW5mbyAyPi9kZXYvbnVsbCB8IGN1dCAtZCcgJyAtZjJgIGluCisJICBQQTcqKSBlY2hvIGhwcGEx
LjEtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxp
bnV4LWdudSA7OworCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtZ251IDs7CisJZXNh
YworCWV4aXQgOzsKKyAgICBwcGM2NDpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjQtdW5rbm93
bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMt
dW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpM
aW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAorCWV4aXQgOzsKKyAg
ICBzaDY0KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgt
Z251CisJZXhpdCA7OworICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9
LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJj
NjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQor
CWV4aXQgOzsKKyAgICB0aWxlKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu
a25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHZheDpMaW51eDoqOiopCisJZWNobyAke1VO
QU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeDg2XzY0OkxpbnV4Oio6
KikKKwllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB4dGVuc2Eq
OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwll
eGl0IDs7CisgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKKwkjIHB0eCA0LjAgZG9lcyB1bmFtZSAt
cyBjb3JyZWN0bHksIHdpdGggRFlOSVgvcHR4IGluIHRoZXJlLgorCSMgZWFybGllciB2ZXJzaW9u
cyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVuYW1lIGluIGJvdGgKKwkjIHN5c25hbWUg
YW5kIG5vZGVuYW1lLgorCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CisJZXhpdCA7OworICAgIGkq
ODY6VU5JWF9TVjo0LjJNUDoyLiopCisJIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0
LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3
aXRoIDIuLi4KKwkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdv
bid0IG1hdGNoIHRoaXMsCisJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgorCSMgVXNl
IHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6
T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBV
bml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5B
TUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgOzsKKyAgICBpKjg2OlhUUy0zMDA6KjpTVE9Q
KQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKwlleGl0IDs7CisgICAgaSo4
NjphdGhlb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWF0aGVvcworCWV4
aXQgOzsKKyAgICBpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMt
c3lsbGFibGUKKwlleGl0IDs7CisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzoz
LlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCisJZWNobyBpMzg2LXVua25vd24tbHlu
eG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpKjg2OipET1M6KjoqKQorCWVjaG8g
JHtVTkFNRV9NQUNISU5FfS1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIGkqODY6Kjo0Lio6
KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFT
RX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsu
aCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11
bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBj
LXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgOzsKKyAgICBpKjg2Oio6NTpbNjc4XSopCisJ
IyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCisJY2FzZSBgL2Jpbi91
bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KKwkgICAgKjQ4NiopCSAgICAgVU5BTUVfTUFD
SElORT1pNDg2IDs7CisJICAgICpQZW50aXVtKQkgICAgIFVOQU1FX01BQ0hJTkU9aTU4NiA7Owor
CSAgICAqUGVudCp8KkNlbGVyb24pIFVOQU1FX01BQ0hJTkU9aTY4NiA7OworCWVzYWMKKwllY2hv
ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSR7VU5BTUVfU1lT
VEVNfSR7VU5BTUVfVkVSU0lPTn0KKwlleGl0IDs7CisgICAgaSo4NjoqOjMuMjoqKQorCWlmIHRl
c3QgLWYgL3Vzci9vcHRpb25zL2NiLm5hbWU7IHRoZW4KKwkJVU5BTUVfUkVMPWBzZWQgLW4gJ3Mv
LipWZXJzaW9uIC8vcCcgPC91c3Ivb3B0aW9ucy9jYi5uYW1lYAorCQllY2hvICR7VU5BTUVfTUFD
SElORX0tcGMtaXNjJFVOQU1FX1JFTAorCWVsaWYgL2Jpbi91bmFtZSAtWCAyPi9kZXYvbnVsbCA+
L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9SRUw9YCgvYmluL3VuYW1lIC1YfGdyZXAgUmVsZWFz
ZXxzZWQgLWUgJ3MvLio9IC8vJylgCisJCSgvYmluL3VuYW1lIC1YfGdyZXAgaTgwNDg2ID4vZGV2
L251bGwpICYmIFVOQU1FX01BQ0hJTkU9aTQ4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFj
aGluZS4qUGVudGl1bScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNTg2CisJ
CSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50ICpJSScgPi9kZXYvbnVsbCkgXAor
CQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5l
LipQZW50aXVtIFBybycgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJ
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zY28kVU5BTUVfUkVMCisJZWxzZQorCQllY2hvICR7
VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCisJZmkKKwlleGl0IDs7CisgICAgcGM6KjoqOiopCisJ
IyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6CisJIyB1bmFtZSAtbSBwcmludHMgZm9yIERK
R1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKwkjIHRoZSBwcm9j
ZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgorCSMgTm90ZTogd2hhdGV2
ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKKwkjIHBy
aW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVj
aWRlIHRoYXQKKwkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KKwllY2hvIGk1ODYtcGMtbXNkb3Nk
amdwcAorCWV4aXQgOzsKKyAgICBJbnRlbDpNYWNoOjMqOiopCisJZWNobyBpMzg2LXBjLW1hY2gz
CisJZXhpdCA7OworICAgIHBhcmFnb246KjoqOiopCisJZWNobyBpODYwLWludGVsLW9zZjEKKwll
eGl0IDs7CisgICAgaTg2MDoqOjQuKjoqKSAjIGk4NjAtU1ZSNAorCWlmIGdyZXAgU3RhcmRlbnQg
L3Vzci9pbmNsdWRlL3N5cy91YWRtaW4uaCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICBlY2hv
IGk4NjAtc3RhcmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVudCBWaXN0cmEgaTg2
MC1TVlI0CisJZWxzZSAjIEFkZCBvdGhlciBpODYwLVNWUjQgdmVuZG9ycyBiZWxvdyBhcyB0aGV5
IGFyZSBkaXNjb3ZlcmVkLgorCSAgZWNobyBpODYwLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFT
RX0gICMgVW5rbm93biBpODYwLVNWUjQKKwlmaQorCWV4aXQgOzsKKyAgICBtaW5pKjpDVElYOlNZ
Uyo1OiopCisJIyAibWluaWZyYW1lIgorCWVjaG8gbTY4MDEwLWNvbnZlcmdlbnQtc3lzdgorCWV4
aXQgOzsKKyAgICBtYzY4azpVTklYOlNZU1RFTTU6My41MW0pCisJZWNobyBtNjhrLWNvbnZlcmdl
bnQtc3lzdgorCWV4aXQgOzsKKyAgICBNNjgwPzA6RC1OSVg6NS4zOiopCisJZWNobyBtNjhrLWRp
YWItZG5peAorCWV4aXQgOzsKKyAgICBNNjgqOio6UjNWWzU2NzhdKjoqKQorCXRlc3QgLXIgL3N5
c1Y2OCAmJiB7IGVjaG8gJ202OGstbW90b3JvbGEtc3lzdic7IGV4aXQ7IH0gOzsKKyAgICAzWzM0
NV0/PzoqOjQuMDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4w
IHwgM1szNF0/Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAg
fCBTS0E0MDoqOjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwgUzc1
MDEqOio6NC4wOjMuMCkKKwlPU19SRUw9JycKKwl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKKwkmJiBP
U19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9l
dGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251
bGwgXAorCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkv
YmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwK
KwkgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAg
M1szNF0/PzoqOjQuMDoqIHwgM1szNF0/PywqOio6NC4wOiopCisJL2Jpbi91bmFtZSAtcCAyPi9k
ZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lz
djQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19S
RUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4g
J3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9i
aW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7
IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAg
Mj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVj
aG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4v
ZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8g
aTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIG02OCo6THlueE9TOjIu
KjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQorCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5B
TUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWM2ODAzMDpVTklYX1N5c3RlbV9WOjQuKjoqKQor
CWVjaG8gbTY4ay1hdGFyaS1zeXN2NAorCWV4aXQgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6
KikKKwllY2hvIHNwYXJjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsK
KyAgICByczYwMDA6THlueE9TOjIuKjoqKQorCWVjaG8gcnM2MDAwLXVua25vd24tbHlueG9zJHtV
TkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2Vy
UEM6THlueE9TOjMuWzAxXSo6KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIHBv
d2VycGMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNNW0JF
XVM6VU5JWF9TVjoqOiopCisJZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4
aXQgOzsKKyAgICBSTSo6UmVsaWFudFVOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAor
CWV4aXQgOzsKKyAgICBSTSo6U0lOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4
aXQgOzsKKyAgICAqOlNJTklYLSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2
L251bGwgOyB0aGVuCisJCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJ
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25p
LXN5c3YKKwlmaQorCWV4aXQgOzsKKyAgICBQRU5USVVNOio6NC4wKjoqKQkjIFVuaXN5cyBgQ2xl
YXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAorCQkJIyBzYXlzIDxSaWNoYXJkLk0u
QmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgorCWVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKwlleGl0
IDs7CisgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCisJIyBGcm9tIEdlcmFsZCBIZXdlcyA8
aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorCSMgSG93IGFib3V0IGRpZmZlcmVudGlhdGluZyBiZXR3
ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXN5
c3Y0CisJZXhpdCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNlYW5mQHN3ZGMuc3RyYXR1
cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpWT1M6
KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gJHtVTkFNRV9NQUNI
SU5FfS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICAqOlZPUzoqOiopCisJIyBGcm9tIFBhdWwu
R3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyBocHBhMS4xLXN0cmF0dXMtdm9zCisJZXhpdCA7Owor
ICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgke1VOQU1FX1JFTEVBU0V9
CisJZXhpdCA7OworICAgIG5ld3MqOk5FV1MtT1M6Nio6KikKKwllY2hvIG1pcHMtc29ueS1uZXdz
b3M2CisJZXhpdCA7OworICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9T
WVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQorCWlmIFsgLWQgL3Vzci9uZWMgXTsgdGhlbgor
CQllY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZWxzZQorCQllY2hvIG1pcHMt
dW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZXhpdCA7OworICAgIEJlQm94OkJl
T1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4K
KwllY2hvIHBvd2VycGMtYmUtYmVvcworCWV4aXQgOzsKKyAgICBCZU1hYzpCZU9TOio6KikJIyBC
ZU9TIHJ1bm5pbmcgb24gTWFjIG9yIE1hYyBjbG9uZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBj
LWFwcGxlLWJlb3MKKwlleGl0IDs7CisgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcg
b24gSW50ZWwgUEMgY29tcGF0aWJsZS4KKwllY2hvIGk1ODYtcGMtYmVvcworCWV4aXQgOzsKKyAg
ICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUu
CisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQor
CWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01
OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwll
eGl0IDs7CisgICAgU1gtNjpTVVBFUi1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VO
QU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3
LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVY
Oio6KikKKwllY2hvIHN4OC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7Cisg
ICAgU1gtOFI6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVM
RUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMt
YXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6
KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFT
RX0KKwlleGl0IDs7CisgICAgKjpEYXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUg
LXBgIHx8IFVOQU1FX1BST0NFU1NPUj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGlu
CisJICAgIGkzODYpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgWyAiJENDX0ZPUl9C
VUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJCSAgaWYgKGVjaG8gJyNpZmRl
ZiBfX0xQNjRfXyc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCSAg
ICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAg
IGdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJCSAgdGhlbgorCQkgICAgICBVTkFNRV9Q
Uk9DRVNTT1I9Ing4Nl82NCIKKwkJICBmaQorCQlmaSA7OworCSAgICB1bmtub3duKSBVTkFNRV9Q
Uk9DRVNTT1I9cG93ZXJwYyA7OworCWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBs
ZS1kYXJ3aW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6cHJvY250byo6KjoqIHwg
KjpRTlg6WzAxMjM0NTY3ODldKjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYg
dGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9
aTM4NgorCQlVTkFNRV9NQUNISU5FPXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0k
e1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6
UU5YOio6NCopCisJZWNobyBpMzg2LXBjLXFueAorCWV4aXQgOzsKKyAgICBORU8tPzpOT05TVE9Q
X0tFUk5FTDoqOiopCisJZWNobyBuZW8tdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0
IDs7CisgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNlLXRhbmRlbS1uc2sk
e1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikK
KwllY2hvIG5zci10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk5v
blN0b3AtVVg6KjoqKQorCWVjaG8gbWlwcy1jb21wYXEtbm9uc3RvcHV4CisJZXhpdCA7OworICAg
IEJTMjAwMDpQT1NJWCo6KjoqKQorCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgorCWV4aXQgOzsK
KyAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS0ke1VO
QU1FX1NZU1RFTX0tJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlBsYW45Oio6KikK
KwkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVzZSAkY3B1dHlwZSBpbnN0ZWFk
LiAzODYKKwkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVy
IHg4NgorCSMgb3BlcmF0aW5nIHN5c3RlbXMuCisJaWYgdGVzdCAiJGNwdXR5cGUiID0gIjM4NiI7
IHRoZW4KKwkgICAgVU5BTUVfTUFDSElORT1pMzg2CisJZWxzZQorCSAgICBVTkFNRV9NQUNISU5F
PSIkY3B1dHlwZSIKKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXBsYW45CisJ
ZXhpdCA7OworICAgICo6VE9QUy0xMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMxMAor
CWV4aXQgOzsKKyAgICAqOlRFTkVYOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdGVuZXgKKwll
eGl0IDs7CisgICAgS1MxMDpUT1BTLTIwOio6KiB8IEtMMTA6VE9QUy0yMDoqOiogfCBUWVBFNDpU
T1BTLTIwOio6KikKKwllY2hvIHBkcDEwLWRlYy10b3BzMjAKKwlleGl0IDs7CisgICAgWEtMLTE6
VE9QUy0yMDoqOiogfCBUWVBFNTpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXhrbC10b3BzMjAK
KwlleGl0IDs7CisgICAgKjpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdG9wczIw
CisJZXhpdCA7OworICAgICo6SVRTOio6KikKKwllY2hvIHBkcDEwLXVua25vd24taXRzCisJZXhp
dCA7OworICAgIFNFSToqOio6U0VJVVgpCisJZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVM
RUFTRX0KKwlleGl0IDs7CisgICAgKjpEcmFnb25GbHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNI
SU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1st
KF0uKi8vJ2AKKwlleGl0IDs7CisgICAgKjoqVk1TOio6KikKKwlVTkFNRV9NQUNISU5FPWAodW5h
bWUgLXApIDI+L2Rldi9udWxsYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIEEq
KSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7CisJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZt
cyA7IGV4aXQgOzsKKwkgICAgViopIGVjaG8gdmF4LWRlYy12bXMgOyBleGl0IDs7CisJZXNhYyA7
OworICAgICo6WEVOSVg6KjpTeXNWKQorCWVjaG8gaTM4Ni1wYy14ZW5peAorCWV4aXQgOzsKKyAg
ICBpKjg2OnNreW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2t5b3NgZWNobyAk
e1VOQU1FX1JFTEVBU0V9YCB8IHNlZCAtZSAncy8gLiokLy8nCisJZXhpdCA7OworICAgIGkqODY6
cmRvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXJkb3MKKwlleGl0IDs7CisgICAg
aSo4NjpBUk9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYXJvcworCWV4aXQgOzsK
K2VzYWMKKworI2VjaG8gJyhObyB1bmFtZSBjb21tYW5kIG9yIHVuYW1lIG91dHB1dCBub3QgcmVj
b2duaXplZC4pJyAxPiYyCisjZWNobyAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06
JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiAxPiYyCisKK2V2YWwgJHNldF9jY19m
b3JfYnVpbGQKK2NhdCA+JGR1bW15LmMgPDxFT0YKKyNpZmRlZiBfU0VRVUVOVF8KKyMgaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKK21haW4g
KCkKK3sKKyNpZiBkZWZpbmVkIChzb255KQorI2lmIGRlZmluZWQgKE1JUFNFQikKKyAgLyogQkZE
IHdhbnRzICJic2QiIGluc3RlYWQgb2YgIm5ld3NvcyIuICBQZXJoYXBzIEJGRCBzaG91bGQgYmUg
Y2hhbmdlZCwKKyAgICAgSSBkb24ndCBrbm93Li4uLiAgKi8KKyAgcHJpbnRmICgibWlwcy1zb255
LWJzZFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAgcHJp
bnRmICgibTY4ay1zb255LW5ld3NvcyVzXG4iLAorI2lmZGVmIE5FV1NPUzQKKwkiNCIKKyNlbHNl
CisJIiIKKyNlbmRpZgorCSk7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmlu
ZWQgKF9fYXJtKSAmJiBkZWZpbmVkIChfX2Fjb3JuKSAmJiBkZWZpbmVkIChfX3VuaXgpCisgIHBy
aW50ZiAoImFybS1hY29ybi1yaXNjaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVm
aW5lZCAoaHAzMDApICYmICFkZWZpbmVkIChocHV4KQorICBwcmludGYgKCJtNjhrLWhwLWJzZFxu
Iik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChOZVhUKQorI2lmICFkZWZpbmVk
IChfX0FSQ0hJVEVDVFVSRV9fKQorI2RlZmluZSBfX0FSQ0hJVEVDVFVSRV9fICJtNjhrIgorI2Vu
ZGlmCisgIGludCB2ZXJzaW9uOworICB2ZXJzaW9uPWAoaG9zdGluZm8gfCBzZWQgLW4gJ3MvLipO
ZVhUIE1hY2ggXChbMC05XSpcKS4qL1wxL3AnKSAyPi9kZXYvbnVsbGA7CisgIGlmICh2ZXJzaW9u
IDwgNCkKKyAgICBwcmludGYgKCIlcy1uZXh0LW5leHRzdGVwJWRcbiIsIF9fQVJDSElURUNUVVJF
X18sIHZlcnNpb24pOworICBlbHNlCisgICAgcHJpbnRmICgiJXMtbmV4dC1vcGVuc3RlcCVkXG4i
LCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZXhpdCAoMCk7CisjZW5kaWYKKworI2lm
IGRlZmluZWQgKE1VTFRJTUFYKSB8fCBkZWZpbmVkIChuMTYpCisjaWYgZGVmaW5lZCAoVU1BWFYp
CisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1zeXN2XG4iKTsgZXhpdCAoMCk7CisjZWxzZQorI2lm
IGRlZmluZWQgKENNVSkKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLW1hY2hcbiIpOyBleGl0ICgw
KTsKKyNlbHNlCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1ic2RcbiIpOyBleGl0ICgwKTsKKyNl
bmRpZgorI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fMzg2QlNEX18pCisgIHByaW50
ZiAoImkzODYtcGMtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKHNl
cXVlbnQpCisjaWYgZGVmaW5lZCAoaTM4NikKKyAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LWR5bml4
XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNpZiBkZWZpbmVkIChuczMyMDAwKQorICBwcmludGYg
KCJuczMyay1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisj
aWYgZGVmaW5lZCAoX1NFUVVFTlRfKQorICAgIHN0cnVjdCB1dHNuYW1lIHVuOworCisgICAgdW5h
bWUoJnVuKTsKKworICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMiIsIDIpID09IDApIHsK
KwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MlxuIik7IGV4aXQgKDApOworICAgIH0KKyAgICBp
ZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjEiLCAyKSA9PSAwKSB7IC8qIFhYWCBpcyBWMSBjb3Jy
ZWN0PyAqLworCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgxXG4iKTsgZXhpdCAoMCk7CisgICAg
fQorICAgIHByaW50ZiAoImkzODYtc2VxdWVudC1wdHhcbiIpOyBleGl0ICgwKTsKKworI2VuZGlm
CisKKyNpZiBkZWZpbmVkICh2YXgpCisjIGlmICFkZWZpbmVkICh1bHRyaXgpCisjICBpbmNsdWRl
IDxzeXMvcGFyYW0uaD4KKyMgIGlmIGRlZmluZWQgKEJTRCkKKyMgICBpZiBCU0QgPT0gNDMKKyAg
ICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zXG4iKTsgZXhpdCAoMCk7CisjICAgZWxzZQorIyAg
ICBpZiBCU0QgPT0gMTk5MDA2CisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM3Jlbm9cbiIp
OyBleGl0ICgwKTsKKyMgICAgZWxzZQorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBl
eGl0ICgwKTsKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZWxzZQorICAgIHByaW50ZiAoInZh
eC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7CisjICBlbmRpZgorIyBlbHNlCisgICAgcHJpbnRmICgi
dmF4LWRlYy11bHRyaXhcbiIpOyBleGl0ICgwKTsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVm
aW5lZCAoYWxsaWFudCkgJiYgZGVmaW5lZCAoaTg2MCkKKyAgcHJpbnRmICgiaTg2MC1hbGxpYW50
LWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyAgZXhpdCAoMSk7Cit9CitFT0YKKworJEND
X0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwgJiYgU1lTVEVNX05BTUU9
YCRkdW1teWAgJiYKKwl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKworIyBBcG9sbG9z
IHB1dCB0aGUgc3lzdGVtIHR5cGUgaW4gdGhlIGVudmlyb25tZW50LgorCit0ZXN0IC1kIC91c3Iv
YXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBvbGxvLSR7U1lTVFlQRX07IGV4aXQ7IH0KKworIyBD
b252ZXggdmVyc2lvbnMgdGhhdCBwcmVkYXRlIHVuYW1lIGNhbiB1c2UgZ2V0c3lzaW5mbygxKQor
CitpZiBbIC14IC91c3IvY29udmV4L2dldHN5c2luZm8gXQordGhlbgorICAgIGNhc2UgYGdldHN5
c2luZm8gLWYgY3B1X3R5cGVgIGluCisgICAgYzEqKQorCWVjaG8gYzEtY29udmV4LWJzZAorCWV4
aXQgOzsKKyAgICBjMiopCisJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCisJdGhlbiBlY2hv
IGMzMi1jb252ZXgtYnNkCisJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKKwlmaQorCWV4aXQgOzsK
KyAgICBjMzQqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzM4KikKKwll
Y2hvIGMzOC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGM0KikKKwllY2hvIGM0LWNvbnZleC1i
c2QKKwlleGl0IDs7CisgICAgZXNhYworZmkKKworY2F0ID4mMiA8PEVPRgorJDA6IHVuYWJsZSB0
byBndWVzcyBzeXN0ZW0gdHlwZQorCitUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0
YW1wLCBoYXMgZmFpbGVkIHRvIHJlY29nbml6ZQordGhlIG9wZXJhdGluZyBzeXN0ZW0geW91IGFy
ZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQorZG93bmxvYWQgdGhlIG1vc3QgdXAgdG8g
ZGF0ZSB2ZXJzaW9uIG9mIHRoZSBjb25maWcgc2NyaXB0cyBmcm9tCisKKyAgaHR0cDovL2dpdC5z
YXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZp
Zy5ndWVzcztoYj1IRUFECithbmQKKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdl
Yi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAorCitJZiB0
aGUgdmVyc2lvbiB5b3UgcnVuICgkMCkgaXMgYWxyZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKK3Nl
bmQgdGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0
IGJlCitwZXJ0aW5lbnQgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGluIG9yZGVyIHRvIHBy
b3ZpZGUgdGhlIG5lZWRlZAoraW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgorCitj
b25maWcuZ3Vlc3MgdGltZXN0YW1wID0gJHRpbWVzdGFtcAorCit1bmFtZSAtbSA9IGAodW5hbWUg
LW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1yID0gYCh1bmFtZSAtcikg
Mj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9k
ZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9u
dWxsIHx8IGVjaG8gdW5rbm93bmAKKworL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3Vu
YW1lIC1wKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1Y
KSAyPi9kZXYvbnVsbGAKKworaG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+
L2Rldi9udWxsYAorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4v
ZGV2L251bGxgCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAy
Pi9kZXYvbnVsbGAKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2
L251bGxgCisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9k
ZXYvbnVsbGAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2lu
Zm8pIDI+L2Rldi9udWxsYAorCitVTkFNRV9NQUNISU5FID0gJHtVTkFNRV9NQUNISU5FfQorVU5B
TUVfUkVMRUFTRSA9ICR7VU5BTUVfUkVMRUFTRX0KK1VOQU1FX1NZU1RFTSAgPSAke1VOQU1FX1NZ
U1RFTX0KK1VOQU1FX1ZFUlNJT04gPSAke1VOQU1FX1ZFUlNJT059CitFT0YKKworZXhpdCAxCisK
KyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3Mg
J3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1z
dGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVu
ZDoKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2NvbmZpZy5oLmlu
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xz
L2NvbmZpZy5oLmluCVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDQ2
OCBAQAorLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0
b2hlYWRlci4gICovCisKKy8qIERlZmluZSB0byBvbmUgb2YgYF9nZXRiNjcnLCBgR0VUQjY3Jywg
YGdldGI2NycgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAKKyAgIHN5c3RlbXMuIFRoaXMgZnVuY3Rp
b24gaXMgcmVxdWlyZWQgZm9yIGBhbGxvY2EuYycgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLgor
ICAgKi8KKyN1bmRlZiBDUkFZX1NUQUNLU0VHX0VORAorCisvKiBEZWZpbmUgdG8gMSBpZiB1c2lu
ZyBgYWxsb2NhLmMnLiAqLworI3VuZGVmIENfQUxMT0NBCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgYWxhcm0nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQUxBUk0KKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYGFsbG9jYScsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8u
ICovCisjdW5kZWYgSEFWRV9BTExPQ0EKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPGFs
bG9jYS5oPiBhbmQgaXQgc2hvdWxkIGJlIHVzZWQgKG5vdCBvbiBVbHRyaXgpLgorICAgKi8KKyN1
bmRlZiBIQVZFX0FMTE9DQV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YXJw
YS9pbmV0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfQVJQQV9JTkVUX0gKKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBhdGV4aXQnIGZ1bmN0aW9uLiAqLworI3VuZGVm
IEhBVkVfQVRFWElUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYnplcm8nIGZ1
bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQlpFUk8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBjbG9ja19nZXR0aW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NMT0NLX0dF
VFRJTUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkdXAyJyBmdW5jdGlvbi4g
Ki8KKyN1bmRlZiBIQVZFX0RVUDIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxm
Y250bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0ZDTlRMX0gKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmZGF0YXN5bmMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfRkRBVEFTWU5DCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZm9yaycgZnVu
Y3Rpb24uICovCisjdW5kZWYgSEFWRV9GT1JLCisKKy8qIERlZmluZSB0byAxIGlmIGZzZWVrbyAo
YW5kIHByZXN1bWFibHkgZnRlbGxvKSBleGlzdHMgYW5kIGlzIGRlY2xhcmVkLiAqLworI3VuZGVm
IEhBVkVfRlNFRUtPCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnRydW5jYXRl
JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZUUlVOQ0FURQorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYGdldGN3ZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRDV0QK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBmdW5jdGlv
bi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBnZXRob3N0bmFtZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRIT1NU
TkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHBhZ2VzaXplJyBmdW5j
dGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVFBBR0VTSVpFCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgZ2V0dGltZW9mZGF5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVFRJ
TUVPRkRBWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluZXRfbnRvYScgZnVu
Y3Rpb24uICovCisjdW5kZWYgSEFWRV9JTkVUX05UT0EKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0lOVFRZ
UEVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpc2FzY2lpJyBmdW5jdGlv
bi4gKi8KKyN1bmRlZiBIQVZFX0lTQVNDSUkKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBjcnlwdG8nIGxpYnJhcnkgKC1sY3J5cHRvKS4gKi8KKyN1bmRlZiBIQVZFX0xJQkNSWVBU
TworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYmludGwuaD4gaGVhZGVyIGZp
bGUuICovCisjdW5kZWYgSEFWRV9MSUJJTlRMX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBydCcgbGlicmFyeSAoLWxydCkuICovCisjdW5kZWYgSEFWRV9MSUJSVAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV1aWQnIGxpYnJhcnkgKC1sdXVpZCkuICovCisj
dW5kZWYgSEFWRV9MSUJVVUlECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgeWFq
bCcgbGlicmFyeSAoLWx5YWpsKS4gKi8KKyN1bmRlZiBIQVZFX0xJQllBSkwKKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGB6JyBsaWJyYXJ5ICgtbHopLiAqLworI3VuZGVmIEhBVkVf
TElCWgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTUlUU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgbG9jYWx0aW1lX3InIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTE9DQUxUSU1F
X1IKKworLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzeXN0ZW0gaGFzIGEgR05VIGxpYmMgY29tcGF0
aWJsZSBgbWFsbG9jJyBmdW5jdGlvbiwgYW5kCisgICB0byAwIG90aGVyd2lzZS4gKi8KKyN1bmRl
ZiBIQVZFX01BTExPQworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hbGxvYy5o
PiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01BTExPQ19ICisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgbWVtY2hyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01FTUNI
UgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAq
LworI3VuZGVmIEhBVkVfTUVNTU9WRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
PG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01FTU9SWV9ICisKKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtc2V0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBI
QVZFX01FTVNFVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZGlyJyBmdW5j
dGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LRElSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSBgbWtmaWZvJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LRklGTworCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgYG1tYXAnIHN5c3RlbSBjYWxsLiAqLworI3Vu
ZGVmIEhBVkVfTU1BUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG11bm1hcCcg
ZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NVU5NQVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxuZXRkYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVERCX0gK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luLmg+IGhlYWRlciBm
aWxlLiAqLworI3VuZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUEFUSENPTkYK
KworLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHB0cmRpZmZfdCcu
ICovCisjdW5kZWYgSEFWRV9QVFJESUZGX1QKKworLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzeXN0
ZW0gaGFzIGEgR05VIGxpYmMgY29tcGF0aWJsZSBgcmVhbGxvYycgZnVuY3Rpb24sCisgICBhbmQg
dG8gMCBvdGhlcndpc2UuICovCisjdW5kZWYgSEFWRV9SRUFMTE9DCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgcmVhbHBhdGgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVB
TFBBVEgKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWdjb21wJyBmdW5jdGlv
bi4gKi8KKyN1bmRlZiBIQVZFX1JFR0NPTVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBybWRpcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9STURJUgorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbGVjdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9T
RUxFQ1QKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRlbnYnIGZ1bmN0aW9u
LiAqLworI3VuZGVmIEhBVkVfU0VURU5WCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgc29ja2V0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NPQ0tFVAorCisvKiBEZWZpbmUg
dG8gMSBpZiBzdGRib29sLmggY29uZm9ybXMgdG8gQzk5LiAqLworI3VuZGVmIEhBVkVfU1REQk9P
TF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkZGVmLmg+IGhlYWRlciBm
aWxlLiAqLworI3VuZGVmIEhBVkVfU1REREVGX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVERJTlRfSAor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4g
Ki8KKyN1bmRlZiBIQVZFX1NURExJQl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgc3RyY2FzZWNtcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJDQVNFQ01QCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyY2hyJyBmdW5jdGlvbi4gKi8KKyN1bmRl
ZiBIQVZFX1NUUkNIUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNzcG4n
IGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSQ1NQTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYHN0cmR1cCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJEVVAKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJlcnJvcicgZnVuY3Rpb24uICovCisj
dW5kZWYgSEFWRV9TVFJFUlJPUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0
cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVFJJTkdTX0gKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5k
ZWYgSEFWRV9TVFJJTkdfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cm5k
dXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSTkRVUAorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYHN0cnBicmsnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSUEJS
SworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnJjaHInIGZ1bmN0aW9uLiAq
LworI3VuZGVmIEhBVkVfU1RSUkNIUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHN0cnNwbicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJTUE4KKworLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBzdHJzdHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RS
U1RSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG9sJyBmdW5jdGlvbi4g
Ki8KKyN1bmRlZiBIQVZFX1NUUlRPTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHN0cnRvdWwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSVE9VTAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWxsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZF
X1NUUlRPVUxMCisKKy8qIERlZmluZSB0byAxIGlmIGBzdF9ibGtzaXplJyBpcyBhIG1lbWJlciBv
ZiBgc3RydWN0IHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQor
CisvKiBEZWZpbmUgdG8gMSBpZiBgc3RfYmxvY2tzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0
YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxPQ0tTCisKKy8qIERlZmluZSB0
byAxIGlmIGBzdF9yZGV2JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXQnLiAqLworI3VuZGVm
IEhBVkVfU1RSVUNUX1NUQVRfU1RfUkRFVgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIGBzdHJ1
Y3Qgc3RhdCcgaGFzIGBzdF9ibG9ja3MnLiBEZXByZWNhdGVkLCB1c2UKKyAgIGBIQVZFX1NUUlVD
VF9TVEFUX1NUX0JMT0NLUycgaW5zdGVhZC4gKi8KKyN1bmRlZiBIQVZFX1NUX0JMT0NLUworCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5c2xvZy5oPiBoZWFkZXIgZmlsZS4gKi8K
KyN1bmRlZiBIQVZFX1NZU0xPR19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8
c3lzL2ZpbGUuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfRklMRV9ICisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2lvY3RsLmg+IGhlYWRlciBmaWxlLiAq
LworI3VuZGVmIEhBVkVfU1lTX0lPQ1RMX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxzeXMvbW91bnQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfTU9VTlRf
SAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wYXJhbS5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19QQVJBTV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3lzL3NvY2tldC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZ
U19TT0NLRVRfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0dmZz
Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NUQVRWRlNfSAorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLworI3Vu
ZGVmIEhBVkVfU1lTX1NUQVRfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5
cy90aW1lLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1RJTUVfSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8K
KyN1bmRlZiBIQVZFX1NZU19UWVBFU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSA8dGVybWlvcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1RFUk1JT1NfSAorCisv
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHR6c2V0JyBmdW5jdGlvbi4gKi8KKyN1bmRl
ZiBIQVZFX1RaU0VUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdW5hbWUnIGZ1
bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVU5BTUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9VTklTVERfSAor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHZmb3JrJyBmdW5jdGlvbi4gKi8KKyN1
bmRlZiBIQVZFX1ZGT1JLCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmZvcmsu
aD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WRk9SS19ICisKKy8qIERlZmluZSB0byAx
IGlmIGBmb3JrJyB3b3Jrcy4gKi8KKyN1bmRlZiBIQVZFX1dPUktJTkdfRk9SSworCisvKiBEZWZp
bmUgdG8gMSBpZiBgdmZvcmsnIHdvcmtzLiAqLworI3VuZGVmIEhBVkVfV09SS0lOR19WRk9SSwor
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHlhamwveWFqbF92ZXJzaW9uLmg+IGhl
YWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfWUFKTF9ZQUpMX1ZFUlNJT05fSAorCisvKiBEZWZp
bmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgX0Jvb2wnLiAqLworI3VuZGVmIEhB
VkVfX0JPT0wKKworLyogRGVmaW5lIHRvIDEgaWYgYGxzdGF0JyBkZXJlZmVyZW5jZXMgYSBzeW1s
aW5rIHNwZWNpZmllZCB3aXRoIGEgdHJhaWxpbmcKKyAgIHNsYXNoLiAqLworI3VuZGVmIExTVEFU
X0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LCisKKy8qIERlZmluZSB0byAxIGlmIGBtYWpvcicsIGBt
aW5vcicsIGFuZCBgbWFrZWRldicgYXJlIGRlY2xhcmVkIGluIDxta2Rldi5oPi4KKyAgICovCisj
dW5kZWYgTUFKT1JfSU5fTUtERVYKKworLyogRGVmaW5lIHRvIDEgaWYgYG1ham9yJywgYG1pbm9y
JywgYW5kIGBtYWtlZGV2JyBhcmUgZGVjbGFyZWQgaW4KKyAgIDxzeXNtYWNyb3MuaD4uICovCisj
dW5kZWYgTUFKT1JfSU5fU1lTTUFDUk9TCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVy
ZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI3VuZGVm
IFBBQ0tBR0VfQlVHUkVQT1JUCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMg
cGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX05BTUUKKworLyogRGVmaW5lIHRvIHRoZSBmdWxs
IG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfU1RS
SU5HCisKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFj
a2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKworLyogRGVmaW5lIHRvIHRoZSBob21l
IHBhZ2UgZm9yIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1VSTAorCisvKiBEZWZp
bmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVkVS
U0lPTgorCisvKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmlu
ZSBpZiB5b3Uga25vdyB0aGUKKyAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIg
c3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQorICAgYXV0b21hdGljYWxseSBkZWR1Y2VkIGF0
IHJ1bnRpbWUuCisJU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFk
ZHJlc3NlcworCVNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJl
c3NlcworCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3du
ICovCisjdW5kZWYgU1RBQ0tfRElSRUNUSU9OCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIFNURENfSEVBREVSUworCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgY2FuIHNhZmVseSBpbmNsdWRlIGJvdGggPHN5cy90aW1lLmg+IGFu
ZCA8dGltZS5oPi4gKi8KKyN1bmRlZiBUSU1FX1dJVEhfU1lTX1RJTUUKKworLyogRW5hYmxlIGV4
dGVuc2lvbnMgb24gQUlYIDMsIEludGVyaXguICAqLworI2lmbmRlZiBfQUxMX1NPVVJDRQorIyB1
bmRlZiBfQUxMX1NPVVJDRQorI2VuZGlmCisvKiBFbmFibGUgR05VIGV4dGVuc2lvbnMgb24gc3lz
dGVtcyB0aGF0IGhhdmUgdGhlbS4gICovCisjaWZuZGVmIF9HTlVfU09VUkNFCisjIHVuZGVmIF9H
TlVfU09VUkNFCisjZW5kaWYKKy8qIEVuYWJsZSB0aHJlYWRpbmcgZXh0ZW5zaW9ucyBvbiBTb2xh
cmlzLiAgKi8KKyNpZm5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjIHVuZGVmIF9QT1NJ
WF9QVEhSRUFEX1NFTUFOVElDUworI2VuZGlmCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBIUCBO
b25TdG9wLiAgKi8KKyNpZm5kZWYgX1RBTkRFTV9TT1VSQ0UKKyMgdW5kZWYgX1RBTkRFTV9TT1VS
Q0UKKyNlbmRpZgorLyogRW5hYmxlIGdlbmVyYWwgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8K
KyNpZm5kZWYgX19FWFRFTlNJT05TX18KKyMgdW5kZWYgX19FWFRFTlNJT05TX18KKyNlbmRpZgor
CisKKy8qIERlZmluZSB0byAxIHRvIG1ha2UgZnNlZWtvIHZpc2libGUgb24gc29tZSBob3N0cyAo
ZS5nLiBnbGliYyAyLjIpLiAqLworI3VuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisKKy8qIERlZmlu
ZSB0byAxIGlmIG9uIE1JTklYLiAqLworI3VuZGVmIF9NSU5JWAorCisvKiBEZWZpbmUgdG8gMiBp
ZiB0aGUgc3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQgd2l0
aAorICAgdGhpcyBkZWZpbmVkLiAqLworI3VuZGVmIF9QT1NJWF8xX1NPVVJDRQorCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGlu
Z3MgdG8gd29yay4gKi8KKyN1bmRlZiBfUE9TSVhfU09VUkNFCisKKy8qIERlZmluZSBmb3IgU29s
YXJpcyAyLjUuMSBzbyB0aGUgdWludDMyX3QgdHlwZWRlZiBmcm9tIDxzeXMvc3luY2guaD4sCisg
ICA8cHRocmVhZC5oPiwgb3IgPHNlbWFwaG9yZS5oPiBpcyBub3QgdXNlZC4gSWYgdGhlIHR5cGVk
ZWYgd2VyZSBhbGxvd2VkLCB0aGUKKyAgICNkZWZpbmUgYmVsb3cgd291bGQgY2F1c2UgYSBzeW50
YXggZXJyb3IuICovCisjdW5kZWYgX1VJTlQzMl9UCisKKy8qIERlZmluZSBmb3IgU29sYXJpcyAy
LjUuMSBzbyB0aGUgdWludDY0X3QgdHlwZWRlZiBmcm9tIDxzeXMvc3luY2guaD4sCisgICA8cHRo
cmVhZC5oPiwgb3IgPHNlbWFwaG9yZS5oPiBpcyBub3QgdXNlZC4gSWYgdGhlIHR5cGVkZWYgd2Vy
ZSBhbGxvd2VkLCB0aGUKKyAgICNkZWZpbmUgYmVsb3cgd291bGQgY2F1c2UgYSBzeW50YXggZXJy
b3IuICovCisjdW5kZWYgX1VJTlQ2NF9UCisKKy8qIERlZmluZSBmb3IgU29sYXJpcyAyLjUuMSBz
byB0aGUgdWludDhfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+
LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93
ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8K
KyN1bmRlZiBfVUlOVDhfVAorCisvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBk
b2Vzbid0IGRlZmluZS4gKi8KKyN1bmRlZiBnaWRfdAorCisvKiBEZWZpbmUgdG8gYF9faW5saW5l
X18nIG9yIGBfX2lubGluZScgaWYgdGhhdCdzIHdoYXQgdGhlIEMgY29tcGlsZXIKKyAgIGNhbGxz
IGl0LCBvciB0byBub3RoaW5nIGlmICdpbmxpbmUnIGlzIG5vdCBzdXBwb3J0ZWQgdW5kZXIgYW55
IG5hbWUuICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworI3VuZGVmIGlubGluZQorI2VuZGlmCisK
Ky8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGgg
ZXhhY3RseSAxNiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFy
ZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludDE2X3QKKworLyogRGVm
aW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5
IDMyIGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1
ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50MzJfdAorCisvKiBEZWZpbmUgdG8g
dGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0
cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8g
bm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQ2NF90CisKKy8qIERlZmluZSB0byB0aGUgdHlw
ZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA4IGJpdHMgaWYgc3Vj
aAorICAgYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZp
bmUgaXQuICovCisjdW5kZWYgaW50OF90CisKKy8qIERlZmluZSB0byBycGxfbWFsbG9jIGlmIHRo
ZSByZXBsYWNlbWVudCBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZC4gKi8KKyN1bmRlZiBtYWxsb2MK
KworLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAq
LworI3VuZGVmIG1vZGVfdAorCisvKiBEZWZpbmUgdG8gYGxvbmcgaW50JyBpZiA8c3lzL3R5cGVz
Lmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBvZmZfdAorCisvKiBEZWZpbmUgdG8gYGlu
dCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgcGlkX3QKKwor
LyogRGVmaW5lIHRvIHJwbF9yZWFsbG9jIGlmIHRoZSByZXBsYWNlbWVudCBmdW5jdGlvbiBzaG91
bGQgYmUgdXNlZC4gKi8KKyN1bmRlZiByZWFsbG9jCisKKy8qIERlZmluZSB0byB0aGUgZXF1aXZh
bGVudCBvZiB0aGUgQzk5ICdyZXN0cmljdCcga2V5d29yZCwgb3IgdG8KKyAgIG5vdGhpbmcgaWYg
dGhpcyBpcyBub3Qgc3VwcG9ydGVkLiAgRG8gbm90IGRlZmluZSBpZiByZXN0cmljdCBpcworICAg
c3VwcG9ydGVkIGRpcmVjdGx5LiAgKi8KKyN1bmRlZiByZXN0cmljdAorLyogV29yayBhcm91bmQg
YSBidWcgaW4gU3VuIEMrKzogaXQgZG9lcyBub3Qgc3VwcG9ydCBfUmVzdHJpY3Qgb3IKKyAgIF9f
cmVzdHJpY3RfXywgZXZlbiB0aG91Z2ggdGhlIGNvcnJlc3BvbmRpbmcgU3VuIEMgY29tcGlsZXIg
ZW5kcyB1cCB3aXRoCisgICAiI2RlZmluZSByZXN0cmljdCBfUmVzdHJpY3QiIG9yICIjZGVmaW5l
IHJlc3RyaWN0IF9fcmVzdHJpY3RfXyIgaW4gdGhlCisgICBwcmV2aW91cyBsaW5lLiAgUGVyaGFw
cyBzb21lIGZ1dHVyZSB2ZXJzaW9uIG9mIFN1biBDKysgd2lsbCB3b3JrIHdpdGgKKyAgIHJlc3Ry
aWN0OyBpZiBzbywgaG9wZWZ1bGx5IGl0IGRlZmluZXMgX19SRVNUUklDVCBsaWtlIFN1biBDIGRv
ZXMuICAqLworI2lmIGRlZmluZWQgX19TVU5QUk9fQ0MgJiYgIWRlZmluZWQgX19SRVNUUklDVAor
IyBkZWZpbmUgX1Jlc3RyaWN0CisjIGRlZmluZSBfX3Jlc3RyaWN0X18KKyNlbmRpZgorCisvKiBE
ZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUu
ICovCisjdW5kZWYgc2l6ZV90CisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+
IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBzc2l6ZV90CisKKy8qIERlZmluZSB0byBgaW50
JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLworI3VuZGVmIHVpZF90CisKKy8q
IERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGgg
ZXhhY3RseSAxNiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFy
ZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQxNl90CisKKy8qIERl
ZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhh
Y3RseSAzMiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBp
bmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQzMl90CisKKy8qIERlZmlu
ZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3Rs
eSA2NCBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNs
dWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQ2NF90CisKKy8qIERlZmluZSB0
byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA4
IGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVz
IGRvIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDhfdAorCisvKiBEZWZpbmUgYXMgYGZv
cmsnIGlmIGB2Zm9yaycgZG9lcyBub3Qgd29yay4gKi8KKyN1bmRlZiB2Zm9yawpkaWZmIC1yIGUy
NzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvY29uZmlnLnN1YgotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9jb25maWcuc3ViCVdl
ZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDE3NzEgQEAKKyMhIC9iaW4v
c2gKKyMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgorIyAgIENv
cHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5
OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
CisKK3RpbWVzdGFtcD0nMjAxMS0xMS0xMScKKworIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBs
ZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCisjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hp
bmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKKyMgY2FuIGhh
bmRsZSB0aGF0IG1hY2hpbmUuICBJdCBkb2VzIG5vdCBpbXBseSBBTEwgR05VIHNvZnR3YXJlIGNh
bi4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEKKyMgMDIxMTAtMTMwMSwgVVNBLgorIworIyBBcyBhIHNwZWNp
YWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Cisj
IGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMg
YQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkg
aW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3Ug
dXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBQbGVhc2Ugc2VuZCBwYXRj
aGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKKyMgZGlm
ZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KKyMKKyMgQ29u
ZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25m
aWd1cmF0aW9uIHR5cGUuCisjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlw
ZSBhcyBhbiBhcmd1bWVudC4KKyMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3Ig
bWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisjIE90aGVyd2lzZSwgd2Ug
cHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCisK
KyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206Cisj
IGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2Jf
cGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKworIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8g
YmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKKyMgYW5kIHJlY29nbml6ZSBhbGwgdGhl
IENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCisjIHRoYXQgYXJlIG1lYW5pbmdm
dWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCisjIEVhY2ggcGFja2FnZSBpcyByZXNwb25zaWJs
ZSBmb3IgcmVwb3J0aW5nIHdoaWNoIHZhbGlkIGNvbmZpZ3VyYXRpb25zCisjIGl0IGRvZXMgbm90
IHN1cHBvcnQuICBUaGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBkaXN0aW5ndWlzaAorIyBhIGZh
aWx1cmUgdG8gc3VwcG9ydCBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG1lYW5pbmdsZXNz
CisjIGNvbmZpZ3VyYXRpb24uCisKKyMgVGhlIGdvYWwgb2YgdGhpcyBmaWxlIGlzIHRvIG1hcCBh
bGwgdGhlIHZhcmlvdXMgdmFyaWF0aW9ucyBvZiBhIGdpdmVuCisjIG1hY2hpbmUgc3BlY2lmaWNh
dGlvbiBpbnRvIGEgc2luZ2xlIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm06CisjCUNQVV9UWVBF
LU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCisjIG9yIGluIHNvbWUgY2FzZXMsIHRoZSBu
ZXdlciBmb3VyLXBhcnQgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVS
QVRJTkdfU1lTVEVNCisjIEl0IGlzIHdyb25nIHRvIGVjaG8gYW55IG90aGVyIHR5cGUgb2Ygc3Bl
Y2lmaWNhdGlvbi4KKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdl
PSJcCitVc2FnZTogJDAgW09QVElPTl0gQ1BVLU1GUi1PUFNZUworICAgICAgICQwIFtPUFRJT05d
IEFMSUFTCisKK0Nhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gbmFtZS4KKworT3BlcmF0aW9u
IG1vZGVzOgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQK
KyAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRo
ZW4gZXhpdAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4g
ZXhpdAorCitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9y
Zz4uIgorCit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKKworQ29weXJp
Z2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAy
MDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCwgMjAxMSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMg
ZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRo
ZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVs
cCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUg
dGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRp
bWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVy
c2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxw
IHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAg
ICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAg
LSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAg
ICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIKKyAgICAgICBleGl0IDEgOzsK
KworICAgICpsb2NhbCopCisgICAgICAgIyBGaXJzdCBwYXNzIHRocm91Z2ggYW55IGxvY2FsIG1h
Y2hpbmUgdHlwZXMuCisgICAgICAgZWNobyAkMQorICAgICAgIGV4aXQgOzsKKworICAgICogKQor
ICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworY2FzZSAkIyBpbgorIDApIGVjaG8gIiRt
ZTogbWlzc2luZyBhcmd1bWVudCRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworIDEpIDs7CisgKikg
ZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKK2Vz
YWMKKworIyBTZXBhcmF0ZSB3aGF0IHRoZSB1c2VyIGdhdmUgaW50byBDUFUtQ09NUEFOWSBhbmQg
T1Mgb3IgS0VSTkVMLU9TIChpZiBhbnkpLgorIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0
aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KK21heWJlX29zPWBlY2hvICQxIHwgc2Vk
ICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAorY2FzZSAkbWF5YmVfb3MgaW4KKyAg
bnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8
IGxpbnV4LW5ld2xpYiogfCBcCisgIGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1
Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKKyAga25ldGJzZCotZ251KiB8IG5ldGJz
ZCotZ251KiB8IFwKKyAga29wZW5zb2xhcmlzKi1nbnUqIHwgXAorICBzdG9ybS1jaGFvcyogfCBv
czItZW14KiB8IHJ0bWstbm92YSopCisgICAgb3M9LSRtYXliZV9vcworICAgIGJhc2ljX21hY2hp
bmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCisgICAg
OzsKKyAgKikKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzLy1bXi1dKiQvLydg
CisgICAgaWYgWyAkYmFzaWNfbWFjaGluZSAhPSAkMSBdCisgICAgdGhlbiBvcz1gZWNobyAkMSB8
IHNlZCAncy8uKi0vLS8nYAorICAgIGVsc2Ugb3M9OyBmaQorICAgIDs7Citlc2FjCisKKyMjIyBM
ZXQncyByZWNvZ25pemUgY29tbW9uIG1hY2hpbmVzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lz
dGVtcyBzbworIyMjIHRoYXQgdGhpbmdzIGxpa2UgY29uZmlnLnN1YiBkZWNzdGF0aW9uLTMxMDAg
d29yay4gIFdlIGFsc28KKyMjIyByZWNvZ25pemUgc29tZSBtYW51ZmFjdHVyZXJzIGFzIG5vdCBi
ZWluZyBvcGVyYXRpbmcgc3lzdGVtcywgc28gd2UKKyMjIyBjYW4gcHJvdmlkZSBkZWZhdWx0IG9w
ZXJhdGluZyBzeXN0ZW1zIGJlbG93LgorY2FzZSAkb3MgaW4KKwktc3VuKm9zKikKKwkJIyBQcmV2
ZW50IGZvbGxvd2luZyBjbGF1c2UgZnJvbSBoYW5kbGluZyB0aGlzIGludmFsaWQgaW5wdXQuCisJ
CTs7CisJLWRlYyogfCAtbWlwcyogfCAtc2VxdWVudCogfCAtZW5jb3JlKiB8IC1wYzUzMiogfCAt
c2dpKiB8IC1zb255KiB8IFwKKwktYXR0KiB8IC03MzAwKiB8IC0zMzAwKiB8IC1kZWx0YSogfCAt
bW90b3JvbGEqIHwgLXN1blsyMzRdKiB8IFwKKwktdW5pY29tKiB8IC1pYm0qIHwgLW5leHQgfCAt
aHAgfCAtaXNpKiB8IC1hcG9sbG8gfCAtYWx0b3MqIHwgXAorCS1jb252ZXJnZW50KiB8IC1uY3Iq
IHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCisJLWNbMTIz
XSogfCAtY29udmV4KiB8IC1zdW4gfCAtY3JkcyB8IC1vbXJvbiogfCAtZGcgfCAtdWx0cmEgfCAt
dHRpKiB8IFwKKwktaGFycmlzIHwgLWRvbHBoaW4gfCAtaGlnaGxldmVsIHwgLWdvdWxkIHwgLWNi
bSB8IC1ucyB8IC1tYXNzY29tcCB8IFwKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5
IHwgLW1pY3JvYmxhemUpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWJsdWVn
ZW5lKikKKwkJb3M9LWNuaworCQk7OworCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13
aW5ib25kKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1zY291dCkKKwkJOzsK
Kwktd3JzKQorCQlvcz0tdnh3b3JrcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1
c29zKikKKwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVz
cmRiKQorCQlvcz0tY2hvcnVzcmRiCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktaGl1eCop
CisJCW9zPS1oaXV4d2UyCisJCTs7CisJLXNjbzYpCisJCW9zPS1zY281djYKKwkJYmFzaWNfbWFj
aGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281KQor
CQlvcz0tc2NvMy4ydjUKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0u
Ki84Ni1wYy8nYAorCQk7OworCS1zY280KQorCQlvcz0tc2NvMy4ydjQKKwkJYmFzaWNfbWFjaGlu
ZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjIuWzQt
OV0qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3Mvc2NvMy4yLi9zY28zLjJ2LydgCisJCWJh
c2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwkt
c2NvMy4ydls0LTldKikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBv
ciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1w
Yy8nYAorCQk7OworCS1zY281djYqKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlz
IDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2
LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbyopCisJCW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNo
aW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXVkayopCisJ
CWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsK
KwktaXNjKQorCQlvcz0taXNjMi4yCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUg
J3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktY2xpeCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBl
ci1pbnRlcmdyYXBoCisJCTs7CisJLWlzYyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBz
ZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktbHlueCopCisJCW9zPS1seW54b3MKKwkJ
OzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84
Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3NudCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAt
ZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsKKwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7
CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9z
PS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2RlIGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNP
TVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXpl
IHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBv
bWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkx
NzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFl
djU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2
NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjdd
IFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBh
cm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciB8IGF2cjMyIFwKKyAgICAgICAgfCBiZTMy
IHwgYmU2NCBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGNsaXBwZXIgXAorCXwgZDEwdiB8IGQzMHYg
fCBkbHggfCBkc3AxNnh4IFwKKwl8IGVwaXBoYW55IFwKKwl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwK
Kwl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4w
W253XSB8IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlh
NjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJfCBsZTMyIHwgbGU2NCBcCisJfCBsbTMyIFwKKwl8
IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAorCXwgbWF4cSB8
IG1iIHwgbWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXAorCXwgbWlwcyB8IG1pcHNi
ZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAorCXwgbWlwczY0IHwg
bWlwczY0ZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAorCXwgbWlwczY0
b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBc
CisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0
MTAwZWwgXAorCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAorCXwgbWlwczY0dnI1
MDAwIHwgbWlwczY0dnI1MDAwZWwgXAorCXwgbWlwczY0dnI1OTAwIHwgbWlwczY0dnI1OTAwZWwg
XAorCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorCXwgbWlwc2lzYTMycjIgfCBtaXBzaXNh
MzJyMmVsIFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1pcHNpc2E2NHIyIHwg
bWlwc2lzYTY0cjJlbCBcCisJfCBtaXBzaXNhNjRzYjEgfCBtaXBzaXNhNjRzYjFlbCBcCisJfCBt
aXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAorCXwgbWlwc3R4MzkgfCBtaXBzdHgz
OWVsIFwKKwl8IG1uMTAyMDAgfCBtbjEwMzAwIFwKKwl8IG1veGllIFwKKwl8IG10IFwKKwl8IG1z
cDQzMCBcCisJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKKwl8IG5pb3MgfCBuaW9zMiBc
CisJfCBuczE2ayB8IG5zMzJrIFwKKwl8IG9wZW44IFwKKwl8IG9yMzIgXAorCXwgcGRwMTAgfCBw
ZHAxMSB8IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8
IHBvd2VycGNsZSBcCisJfCBweXJhbWlkIFwKKwl8IHJsNzggfCByeCBcCisJfCBzY29yZSBcCisJ
fCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1l
YiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2g2NCB8
IHNoNjRsZSBcCisJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3Bh
cmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCisJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNw
YXJjdjliIHwgc3BhcmN2OXYgXAorCXwgc3B1IFwKKwl8IHRhaG9lIHwgdGljNHggfCB0aWM1NHgg
fCB0aWM1NXggfCB0aWM2eCB8IHRpYzgwIHwgdHJvbiBcCisJfCB1Ymljb20zMiBcCisJfCB2ODUw
IHwgdjg1MGUgfCB2ODUwZTEgfCB2ODUwZTIgfCB2ODUwZXMgfCB2ODUwZTJ2MyBcCisJfCB3ZTMy
ayBcCisJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB6OGsgfCB6ODAp
CisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCWM1NHgpCisJ
CWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJOzsKKwljNTV4KQorCQliYXNpY19tYWNo
aW5lPXRpYzU1eC11bmtub3duCisJCTs7CisJYzZ4KQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVu
a25vd24KKwkJOzsKKwltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBwaWNvY2hp
cCkKKwkJIyBNb3Rvcm9sYSA2OEhDMTEvMTIuCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hp
bmUtdW5rbm93bgorCQlvcz0tbm9uZQorCQk7OworCW04ODExMCB8IG02ODBbMTIzNDZdMCB8IG02
ODM/MiB8IG02ODM2MCB8IG01MjAwIHwgdjcwIHwgdzY1IHwgejhrKQorCQk7OworCW1zMSkKKwkJ
YmFzaWNfbWFjaGluZT1tdC11bmtub3duCisJCTs7CisKKwlzdHJvbmdhcm0gfCB0aHVtYiB8IHhz
Y2FsZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQk7OworCisJeHNjYWxlZWIpCisJ
CWJhc2ljX21hY2hpbmU9YXJtZWItdW5rbm93bgorCQk7OworCisJeHNjYWxlZWwpCisJCWJhc2lj
X21hY2hpbmU9YXJtZWwtdW5rbm93bgorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhh
biBgdW5rbm93bicKKwkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJl
LCBhbmQKKwkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5p
bmcgdXNlcnMuCisJaSo4NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hp
bmUtcGMKKwkgIDs7CisJIyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29y
ZC4KKwkqLSotKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5l
IFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7Owor
CSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgw
LSogXAorCXwgYTI5ay0qIFwKKwl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1
Ni0qIHwgYWxwaGFldjZbNzhdLSogXAorCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8
IGFscGhhNjRldjU2LSogfCBhbHBoYTY0ZXY2Wzc4XS0qIFwKKwl8IGFscGhhcGNhNVs2N10tKiB8
IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxl
LSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCisJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmUzMi0q
IHwgYmU2NC0qIFwKKwl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8
IFtjanRdOTAtKiB8IGM0eC0qIFwKKwl8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBc
CisJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisJfCBlbHhzaS0qIFwKKwl8IGYzMFswMV0t
KiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKKwl8IGg4MzAw
LSogfCBoODUwMC0qIFwKKwl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhw
cGEyLjBbbnddLSogfCBocHBhNjQtKiBcCisJfCBoZXhhZ29uLSogXAorCXwgaSo4Ni0qIHwgaTg2
MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKKwl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxlMzIt
KiB8IGxlNjQtKiBcCisJfCBsbTMyLSogXAorCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSog
XAorCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwg
bTY4ay0qIFwKKwl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiB8IG1ldGFn
LSogfCBtaWNyb2JsYXplLSogXAorCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1p
cHNlbC0qIHwgbWlwc2xlLSogXAorCXwgbWlwczE2LSogXAorCXwgbWlwczY0LSogfCBtaXBzNjRl
bC0qIFwKKwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCisJfCBtaXBzNjRv
cmlvbi0qIHwgbWlwczY0b3Jpb25lbC0qIFwKKwl8IG1pcHM2NHI1OTAwLSogfCBtaXBzNjRyNTkw
MGVsLSogXAorCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjR2cjQxMDAt
KiB8IG1pcHM2NHZyNDEwMGVsLSogXAorCXwgbWlwczY0dnI0MzAwLSogfCBtaXBzNjR2cjQzMDBl
bC0qIFwKKwl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCisJfCBtaXBzNjR2
cjU5MDAtKiB8IG1pcHM2NHZyNTkwMGVsLSogXAorCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJl
bC0qIFwKKwl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTY0
LSogfCBtaXBzaXNhNjRlbC0qIFwKKwl8IG1pcHNpc2E2NHIyLSogfCBtaXBzaXNhNjRyMmVsLSog
XAorCXwgbWlwc2lzYTY0c2IxLSogfCBtaXBzaXNhNjRzYjFlbC0qIFwKKwl8IG1pcHNpc2E2NHNy
NzFrLSogfCBtaXBzaXNhNjRzcjcxa2VsLSogXAorCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwt
KiBcCisJfCBtbWl4LSogXAorCXwgbXQtKiBcCisJfCBtc3A0MzAtKiBcCisJfCBuZHMzMi0qIHwg
bmRzMzJsZS0qIHwgbmRzMzJiZS0qIFwKKwl8IG5pb3MtKiB8IG5pb3MyLSogXAorCXwgbm9uZS0q
IHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBcCisJfCBvcGVuOC0qIFwKKwl8IG9yaW9uLSog
XAorCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBc
CisJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUt
KiBcCisJfCBweXJhbWlkLSogXAorCXwgcmw3OC0qIHwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0q
IFwKKwl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsy
M11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKKwl8IHNobGUtKiB8IHNoWzEy
MzRdbGUtKiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAorCXwgc3BhcmMtKiB8IHNw
YXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0
LSogXAorCXwgc3BhcmNsaXRlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2
OWItKiB8IHNwYXJjdjl2LSogfCBzdjEtKiB8IHN4Py0qIFwKKwl8IHRhaG9lLSogXAorCXwgdGlj
MzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSog
XAorCXwgdGlsZSotKiBcCisJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCisJfCB2ODUwLSog
fCB2ODUwZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBc
CisJfCB2YXgtKiBcCisJfCB3ZTMyay0qIFwKKwl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0q
IHwgeHBzMTAwLSogXAorCXwgeHN0b3JteTE2LSogfCB4dGVuc2EqLSogXAorCXwgeW1wLSogXAor
CXwgejhrLSogfCB6ODAtKikKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVz
IHdpdGhvdXQgY29tcGFueSBuYW1lLCB3aXRoIGdsb2IgbWF0Y2guCisJeHRlbnNhKikKKwkJYmFz
aWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJIyBSZWNvZ25pemUgdGhl
IHZhcmlvdXMgbWFjaGluZSBuYW1lcyBhbmQgYWxpYXNlcyB3aGljaCBzdGFuZAorCSMgZm9yIGEg
Q1BVIHR5cGUgYW5kIGEgY29tcGFueSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4gT1MuCisJMzg2YnNk
KQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tYnNkCisJCTs7CisJM2IxIHwg
NzMwMCB8IDczMDAtYXR0IHwgYXR0LTczMDAgfCBwYzczMDAgfCBzYWZhcmkgfCB1bml4cGMpCisJ
CWJhc2ljX21hY2hpbmU9bTY4MDAwLWF0dAorCQk7OworCTNiKikKKwkJYmFzaWNfbWFjaGluZT13
ZTMyay1hdHQKKwkJOzsKKwlhMjlraGlmKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9z
PS11ZGkKKwkJOzsKKwlhYmFjdXMpCisJCWJhc2ljX21hY2hpbmU9YWJhY3VzLXVua25vd24KKwkJ
OzsKKwlhZG9iZTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMTAtYWRvYmUKKwkJb3M9LXNjb3V0
CisJCTs7CisJYWxsaWFudCB8IGZ4ODApCisJCWJhc2ljX21hY2hpbmU9Zng4MC1hbGxpYW50CisJ
CTs7CisJYWx0b3MgfCBhbHRvczMwNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hbHRvcworCQk7
OworCWFtMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstbm9uZQorCQlvcz0tYnNkCisJCTs7CisJ
YW1kNjQpCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LXBjCisJCTs7CisJYW1kNjQtKikKKwkJYmFz
aWNfbWFjaGluZT14ODZfNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8v
J2AKKwkJOzsKKwlhbWRhaGwpCisJCWJhc2ljX21hY2hpbmU9NTgwLWFtZGFobAorCQlvcz0tc3lz
dgorCQk7OworCWFtaWdhIHwgYW1pZ2EtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24K
KwkJOzsKKwlhbWlnYW9zIHwgYW1pZ2Fkb3MpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3du
CisJCW9zPS1hbWlnYW9zCisJCTs7CisJYW1pZ2F1bml4IHwgYW1peCkKKwkJYmFzaWNfbWFjaGlu
ZT1tNjhrLXVua25vd24KKwkJb3M9LXN5c3Y0CisJCTs7CisJYXBvbGxvNjgpCisJCWJhc2ljX21h
Y2hpbmU9bTY4ay1hcG9sbG8KKwkJb3M9LXN5c3YKKwkJOzsKKwlhcG9sbG82OGJzZCkKKwkJYmFz
aWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tYnNkCisJCTs7CisJYXJvcykKKwkJYmFzaWNf
bWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CisJYXV4KQorCQliYXNpY19tYWNoaW5l
PW02OGstYXBwbGUKKwkJb3M9LWF1eAorCQk7OworCWJhbGFuY2UpCisJCWJhc2ljX21hY2hpbmU9
bnMzMmstc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwlibGFja2ZpbikKKwkJYmFzaWNfbWFj
aGluZT1iZmluLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJYmxhY2tmaW4tKikKKwkJYmFz
aWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydg
CisJCW9zPS1saW51eAorCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBj
LWlibQorCQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1g
ZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikK
KwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlte
LV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFz
aWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM5MCkKKwkJYmFzaWNfbWFj
aGluZT1jOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY2VnY2MpCisJCWJhc2ljX21hY2hp
bmU9YXJtLXVua25vd24KKwkJb3M9LWNlZ2NjCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19t
YWNoaW5lPWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19t
YWNoaW5lPWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNf
bWFjaGluZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNp
Y19tYWNoaW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJh
c2ljX21hY2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJ
YmFzaWNfbWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQli
YXNpY19tYWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTYgfCBj
cjE2LSopCisJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwlj
cmRzIHwgdW5vcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWNyZHMKKwkJOzsKKwljcmlzdjMyIHwg
Y3Jpc3YzMi0qIHwgZXRyYXhmcyopCisJCWJhc2ljX21hY2hpbmU9Y3Jpc3YzMi1heGlzCisJCTs7
CisJY3JpcyB8IGNyaXMtKiB8IGV0cmF4KikKKwkJYmFzaWNfbWFjaGluZT1jcmlzLWF4aXMKKwkJ
OzsKKwljcngpCisJCWJhc2ljX21hY2hpbmU9Y3J4LXVua25vd24KKwkJb3M9LWVsZgorCQk7Owor
CWRhMzAgfCBkYTMwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1kYTMwCisJCTs7CisJZGVjc3Rh
dGlvbiB8IGRlY3N0YXRpb24tMzEwMCB8IHBtYXggfCBwbWF4LSogfCBwbWluIHwgZGVjMzEwMCB8
IGRlY3N0YXRuKQorCQliYXNpY19tYWNoaW5lPW1pcHMtZGVjCisJCTs7CisJZGVjc3lzdGVtMTAq
IHwgZGVjMTAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczEwCisJCTs7
CisJZGVjc3lzdGVtMjAqIHwgZGVjMjAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlv
cz0tdG9wczIwCisJCTs7CisJZGVsdGEgfCAzMzAwIHwgbW90b3JvbGEtMzMwMCB8IG1vdG9yb2xh
LWRlbHRhIFwKKwkgICAgICB8IDMzMDAtbW90b3JvbGEgfCBkZWx0YS1tb3Rvcm9sYSkKKwkJYmFz
aWNfbWFjaGluZT1tNjhrLW1vdG9yb2xhCisJCTs7CisJZGVsdGE4OCkKKwkJYmFzaWNfbWFjaGlu
ZT1tODhrLW1vdG9yb2xhCisJCW9zPS1zeXN2MworCQk7OworCWRpY29zKQorCQliYXNpY19tYWNo
aW5lPWk2ODYtcGMKKwkJb3M9LWRpY29zCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9
aTU4Ni1wYworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFz
aWNfbWFjaGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4Miot
YnVsbCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZWJt
b24yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LWVibW9uCisJCTs7CisJZWx4
c2kpCisJCWJhc2ljX21hY2hpbmU9ZWx4c2ktZWx4c2kKKwkJb3M9LWJzZAorCQk7OworCWVuY29y
ZSB8IHVtYXggfCBtbWF4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLWVuY29yZQorCQk7OworCWVz
MTgwMCB8IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9TRSkKKwkJYmFzaWNfbWFjaGluZT1tNjhr
LWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlmeDI4MDApCisJCWJhc2ljX21hY2hpbmU9aTg2
MC1hbGxpYW50CisJCTs7CisJZ2VuaXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstbnMKKwkJOzsK
KwlnbWljcm8pCisJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KKwkJb3M9LXN5c3YKKwkJOzsK
KwlnbzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWdvMzIKKwkJOzsKKwloMzA1
MHIqIHwgaGl1eCopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4
d2UyCisJCTs7CisJaDgzMDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlv
cz0taG1zCisJCTs7CisJaDgzMDB4cmF5KQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkK
KwkJb3M9LXhyYXkKKwkJOzsKKwloODUwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODUwMC1oaXRh
Y2hpCisJCW9zPS1obXMKKwkJOzsKKwloYXJyaXMpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJy
aXMKKwkJb3M9LXN5c3YzCisJCTs7CisJaHAzMDAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhw
CisJCTs7CisJaHAzMDBic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0tYnNkCisJ
CTs7CisJaHAzMDBocHV4KQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWhwdXgKKwkJ
OzsKKwlocDNrOVswLTldWzAtOV0gfCBocDlbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhw
cGExLjAtaHAKKwkJOzsKKwlocDlrMlswLTldWzAtOV0gfCBocDlrMzFbMC05XSkKKwkJYmFzaWNf
bWFjaGluZT1tNjgwMDAtaHAKKwkJOzsKKwlocDlrM1syLTldWzAtOV0pCisJCWJhc2ljX21hY2hp
bmU9bTY4ay1ocAorCQk7OworCWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCisJCWJh
c2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03
OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azc4WzAtOV0g
fCBocDc4WzAtOV0pCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hp
bmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0g
fCBocDgwWzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKKwkJ
IyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJ
CTs7CisJaHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCisJCWJhc2ljX21hY2hp
bmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTldWzAtOV0pCisJ
CWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwcGEtbmV4dCkKKwkJb3M9LW5leHRz
dGVwMworCQk7OworCWhwcGFvc2YpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0t
b3NmCisJCTs7CisJaHBwcm8pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tcHJv
ZWxmCisJCTs7CisJaTM3MC1pYm0qIHwgaWJtKikKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQor
CQk7OworIyBJJ20gbm90IHN1cmUgd2hhdCAiU3lzdjMyIiBtZWFucy4gIFNob3VsZCB0aGlzIGJl
IHN5c3YzLjI/CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAn
cy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19t
YWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJ
CTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84
Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBl
Y2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJ
aTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJ
aTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZz
dGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNh
c2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAor
CQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGst
aXNpCisJCW9zPS1zeXN2CisJCTs7CisJbTY4a25vbW11KQorCQliYXNpY19tYWNoaW5lPW02OGst
dW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwltNjhrbm9tbXUtKikKKwkJYmFzaWNfbWFjaGlu
ZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1s
aW51eAorCQk7OworCW04OGstb21yb24qKQorCQliYXNpY19tYWNoaW5lPW04OGstb21yb24KKwkJ
OzsKKwltYWdudW0gfCBtMzIzMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLW1pcHMKKwkJb3M9LXN5
c3YKKwkJOzsKKwltZXJsaW4pCisJCWJhc2ljX21hY2hpbmU9bnMzMmstdXRlaworCQlvcz0tc3lz
dgorCQk7OworCW1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngK
KwkJOzsKKwltaW5ndzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1pbmd3MzIK
KwkJOzsKKwltaW5ndzMyY2UpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LW1p
bmd3MzJjZQorCQk7OworCW1pbmlmcmFtZSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVy
Z2VudAorCQk7OworCSptaW50IHwgLW1pbnRbMC05XSogfCAqTWlOVCB8ICpNaU5UWzAtOV0qKQor
CQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKKwltaXBzMyotKikK
KwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9t
aXBzNjQvJ2AKKwkJOzsKKwltaXBzMyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21h
Y2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgLXVua25vd24KKwkJOzsKKwltb25pdG9y
KQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJbW9ycGhv
cykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJb3M9LW1vcnBob3MKKwkJOzsK
Kwltc2RvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc2RvcworCQk7OworCW1z
MS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21z
MS0vbXQtLydgCisJCTs7CisJbXN5cykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1t
c3lzCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJ
OzsKKwluYWNsKQorCQliYXNpY19tYWNoaW5lPWxlMzItdW5rbm93bgorCQlvcz0tbmFjbAorCQk7
OworCW5jcjMwMDApCisJCWJhc2ljX21hY2hpbmU9aTQ4Ni1uY3IKKwkJb3M9LXN5c3Y0CisJCTs7
CisJbmV0YnNkMzg2KQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tbmV0YnNk
CisJCTs7CisJbmV0d2luZGVyKQorCQliYXNpY19tYWNoaW5lPWFybXY0bC1yZWJlbAorCQlvcz0t
bGludXgKKwkJOzsKKwluZXdzIHwgbmV3czcwMCB8IG5ld3M4MDAgfCBuZXdzOTAwKQorCQliYXNp
Y19tYWNoaW5lPW02OGstc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3czEwMDApCisJCWJh
c2ljX21hY2hpbmU9bTY4MDMwLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MtMzYwMCB8
IHJpc2MtbmV3cykKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7
OworCW5lY3Y3MCkKKwkJYmFzaWNfbWFjaGluZT12NzAtbmVjCisJCW9zPS1zeXN2CisJCTs7CisJ
bmV4dCB8IG0qLW5leHQgKQorCQliYXNpY19tYWNoaW5lPW02OGstbmV4dAorCQljYXNlICRvcyBp
bgorCQkgICAgLW5leHRzdGVwKiApCisJCQk7OworCQkgICAgLW5zMiopCisJCSAgICAgIG9zPS1u
ZXh0c3RlcDIKKwkJCTs7CisJCSAgICAqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAzCisJCQk7Owor
CQllc2FjCisJCTs7CisJbmgzMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstaGFycmlzCisJCW9z
PS1jeHV4CisJCTs7CisJbmhbNDVdMDAwKQorCQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCisJ
CW9zPS1jeHV4CisJCTs7CisJbmluZHk5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAor
CQlvcz0tbmluZHkKKwkJOzsKKwltb245NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAor
CQlvcz0tbW9uOTYwCisJCTs7CisJbm9uc3RvcHV4KQorCQliYXNpY19tYWNoaW5lPW1pcHMtY29t
cGFxCisJCW9zPS1ub25zdG9wdXgKKwkJOzsKKwlucDEpCisJCWJhc2ljX21hY2hpbmU9bnAxLWdv
dWxkCisJCTs7CisJbmVvLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uZW8tdGFuZGVtCisJCTs7
CisJbnNlLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc2UtdGFuZGVtCisJCTs7CisJbnNyLXRh
bmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc3ItdGFuZGVtCisJCTs7CisJb3A1MG4tKiB8IG9wNjBj
LSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJb3M9LXByb2VsZgorCQk7OworCW9w
ZW5yaXNjIHwgb3BlbnJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1vcjMyLXVua25vd24KKwkJOzsK
KwlvczQwMCkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tb3M0MDAKKwkJOzsK
KwlPU0U2ODAwMCB8IG9zZTY4MDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1lcmljc3Nvbgor
CQlvcz0tb3NlCisJCTs7CisJb3M2OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ub25lCisJCW9z
PS1vczY4aworCQk7OworCXBhLWhpdGFjaGkpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRh
Y2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJcGFyYWdvbikKKwkJYmFzaWNfbWFjaGluZT1pODYw
LWludGVsCisJCW9zPS1vc2YKKwkJOzsKKwlwYXJpc2MpCisJCWJhc2ljX21hY2hpbmU9aHBwYS11
bmtub3duCisJCW9zPS1saW51eAorCQk7OworCXBhcmlzYy0qKQorCQliYXNpY19tYWNoaW5lPWhw
cGEtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4
CisJCTs7CisJcGJkKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXR0aQorCQk7OworCXBiYikKKwkJ
YmFzaWNfbWFjaGluZT1tNjhrLXR0aQorCQk7OworCXBjNTMyIHwgcGM1MzItKikKKwkJYmFzaWNf
bWFjaGluZT1uczMyay1wYzUzMgorCQk7OworCXBjOTgpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1w
YworCQk7OworCXBjOTgtKikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LWBlY2hvICRiYXNpY19tYWNo
aW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bSB8IHA1IHwgazUgfCBrNiB8
IG5leGdlbiB8IHZpYWMzKQorCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKwkJOzsKKwlwZW50aXVt
cHJvIHwgcDYgfCA2eDg2IHwgYXRobG9uIHwgYXRobG9uXyopCisJCWJhc2ljX21hY2hpbmU9aTY4
Ni1wYworCQk7OworCXBlbnRpdW1paSB8IHBlbnRpdW0yIHwgcGVudGl1bWlpaSB8IHBlbnRpdW0z
KQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtNCkKKwkJYmFzaWNfbWFj
aGluZT1pNzg2LXBjCisJCTs7CisJcGVudGl1bS0qIHwgcDUtKiB8IGs1LSogfCBrNi0qIHwgbmV4
Z2VuLSogfCB2aWFjMy0qKQorCQliYXNpY19tYWNoaW5lPWk1ODYtYGVjaG8gJGJhc2ljX21hY2hp
bmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtcHJvLSogfCBwNi0qIHwgNng4
Ni0qIHwgYXRobG9uLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNfbWFjaGlu
ZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1paS0qIHwgcGVudGl1bTItKiB8
IHBlbnRpdW1paWktKiB8IHBlbnRpdW0zLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAk
YmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW00LSopCisJ
CWJhc2ljX21hY2hpbmU9aTc4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSot
Ly8nYAorCQk7OworCXBuKQorCQliYXNpY19tYWNoaW5lPXBuLWdvdWxkCisJCTs7CisJcG93ZXIp
CWJhc2ljX21hY2hpbmU9cG93ZXItaWJtCisJCTs7CisJcHBjIHwgcHBjYmUpCWJhc2ljX21hY2hp
bmU9cG93ZXJwYy11bmtub3duCisJCTs7CisJcHBjLSogfCBwcGNiZS0qKQorCQliYXNpY19tYWNo
aW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJ
OzsKKwlwcGNsZSB8IHBvd2VycGNsaXR0bGUgfCBwcGMtbGUgfCBwb3dlcnBjLWxpdHRsZSkKKwkJ
YmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtdW5rbm93bgorCQk7OworCXBwY2xlLSogfCBwb3dlcnBj
bGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLWBlY2hvICRiYXNpY19tYWNoaW5l
IHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjQpCWJhc2ljX21hY2hpbmU9cG93ZXJw
YzY0LXVua25vd24KKwkJOzsKKwlwcGM2NC0qKSBiYXNpY19tYWNoaW5lPXBvd2VycGM2NC1gZWNo
byAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0bGUgfCBw
b3dlcnBjNjRsaXR0bGUgfCBwcGM2NC1sZSB8IHBvd2VycGM2NC1saXR0bGUpCisJCWJhc2ljX21h
Y2hpbmU9cG93ZXJwYzY0bGUtdW5rbm93bgorCQk7OworCXBwYzY0bGUtKiB8IHBvd2VycGM2NGxp
dHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLWBlY2hvICRiYXNpY19tYWNoaW5l
IHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHMyKQorCQliYXNpY19tYWNoaW5lPWkzODYt
aWJtCisJCTs7CisJcHczMikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXVua25vd24KKwkJb3M9LXB3
MzIKKwkJOzsKKwlyZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LXJkb3MKKwkJ
OzsKKwlyb202OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJ
OzsKKwlybVs0Nl0wMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNpZW1lbnMKKwkJOzsKKwlydHBj
IHwgcnRwYy0qKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJczM5MCB8IHMzOTAt
KikKKwkJYmFzaWNfbWFjaGluZT1zMzkwLWlibQorCQk7OworCXMzOTB4IHwgczM5MHgtKikKKwkJ
YmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJOzsKKwlzYTI5MjAwKQorCQliYXNpY19tYWNoaW5l
PWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwlzYjEpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lz
YTY0c2IxLXVua25vd24KKwkJOzsKKwlzYjFlbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRz
YjFlbC11bmtub3duCisJCTs7CisJc2RlKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2EzMi1zZGUK
KwkJb3M9LWVsZgorCQk7OworCXNlaSkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorCQlvcz0t
c2VpdXgKKwkJOzsKKwlzZXF1ZW50KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQk7
OworCXNoKQorCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCXNo
NWVsKQorCQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKwkJOzsKKwlzaDY0KQorCQliYXNp
Y19tYWNoaW5lPXNoNjQtdW5rbm93bgorCQk7OworCXNwYXJjbGl0ZS13cnMgfCBzaW1zby13cnMp
CisJCWJhc2ljX21hY2hpbmU9c3BhcmNsaXRlLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXNw
czcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MgorCQk7OworCXNwdXIp
CisJCWJhc2ljX21hY2hpbmU9c3B1ci11bmtub3duCisJCTs7CisJc3QyMDAwKQorCQliYXNpY19t
YWNoaW5lPW02OGstdGFuZGVtCisJCTs7CisJc3RyYXR1cykKKwkJYmFzaWNfbWFjaGluZT1pODYw
LXN0cmF0dXMKKwkJb3M9LXN5c3Y0CisJCTs7CisJc3Ryb25nYXJtLSogfCB0aHVtYi0qKQorCQli
YXNpY19tYWNoaW5lPWFybS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8n
YAorCQk7OworCXN1bjIpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJv
czMpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3Vu
Mm9zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlz
dW4zb3MzKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlz
dW4zb3M0KQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlz
dW40b3MzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJ
c3VuNG9zNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7Owor
CXN1bjRzb2wyKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJ
OzsKKwlzdW4zIHwgc3VuMy0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3Vu
NCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwg
cm9hZHJ1bm5lcikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFz
aWNfbWFjaGluZT1zdjEtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJh
c2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFz
aWNfbWFjaGluZT1hbHBoYWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJh
c2ljX21hY2hpbmU9dDkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpbGUqKQorCQliYXNp
Y19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LWxpbnV4LWdudQorCQk7Owor
CXR4MzkpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzktdW5rbm93bgorCQk7OworCXR4MzllbCkK
KwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOWVsLXVua25vd24KKwkJOzsKKwl0b2FkMSkKKwkJYmFz
aWNfbWFjaGluZT1wZHAxMC14a2wKKwkJb3M9LXRvcHMyMAorCQk7OworCXRvd2VyIHwgdG93ZXIt
MzIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uY3IKKwkJOzsKKwl0cGYpCisJCWJhc2ljX21hY2hp
bmU9czM5MHgtaWJtCisJCW9zPS10cGYKKwkJOzsKKwl1ZGkyOWspCisJCWJhc2ljX21hY2hpbmU9
YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXVsdHJhMykKKwkJYmFzaWNfbWFjaGluZT1hMjlr
LW55dQorCQlvcz0tc3ltMQorCQk7OworCXY4MTAgfCBuZWN2ODEwKQorCQliYXNpY19tYWNoaW5l
PXY4MTAtbmVjCisJCW9zPS1ub25lCisJCTs7CisJdmF4dikKKwkJYmFzaWNfbWFjaGluZT12YXgt
ZGVjCisJCW9zPS1zeXN2CisJCTs7CisJdm1zKQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJ
b3M9LXZtcworCQk7OworCXZwcCp8dnh8dngtKikKKwkJYmFzaWNfbWFjaGluZT1mMzAxLWZ1aml0
c3UKKwkJOzsKKwl2eHdvcmtzOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtd3JzCisJCW9zPS12
eHdvcmtzCisJCTs7CisJdnh3b3JrczY4KQorCQliYXNpY19tYWNoaW5lPW02OGstd3JzCisJCW9z
PS12eHdvcmtzCisJCTs7CisJdnh3b3JrczI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLXdycwor
CQlvcz0tdnh3b3JrcworCQk7OworCXc2NSopCisJCWJhc2ljX21hY2hpbmU9dzY1LXdkYworCQlv
cz0tbm9uZQorCQk7OworCXc4OWstKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQK
KwkJb3M9LXByb2VsZgorCQk7OworCXhib3gpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlv
cz0tbWluZ3czMgorCQk7OworCXhwcyB8IHhwczEwMCkKKwkJYmFzaWNfbWFjaGluZT14cHMxMDAt
aG9uZXl3ZWxsCisJCTs7CisJeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qKQorCQliYXNpY19tYWNo
aW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL154c2NhbGUvYXJtLydgCisJCTs7CisJ
eW1wKQorCQliYXNpY19tYWNoaW5lPXltcC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl6OGst
Ki1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwl6
ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsK
Kwlub25lKQorCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQorCQlvcz0tbm9uZQorCQk7OworCisj
IEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0
eXBlcy4gIEl0IGlzIGluCisjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFudWZhY3R1cmVyLCBpbiBv
dGhlcnMsIGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCisJdzg5aykKKwkJYmFzaWNfbWFjaGluZT1o
cHBhMS4xLXdpbmJvbmQKKwkJOzsKKwlvcDUwbikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9r
aQorCQk7OworCW9wNjBjKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJcm9t
cCkKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCW1taXgpCisJCWJhc2ljX21hY2hp
bmU9bW1peC1rbnV0aAorCQk7OworCXJzNjAwMCkKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtaWJt
CisJCTs7CisJdmF4KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJOzsKKwlwZHAxMCkKKwkJ
IyB0aGVyZSBhcmUgbWFueSBjbG9uZXMsIHNvIERFQyBpcyBub3QgYSBzYWZlIGJldAorCQliYXNp
Y19tYWNoaW5lPXBkcDEwLXVua25vd24KKwkJOzsKKwlwZHAxMSkKKwkJYmFzaWNfbWFjaGluZT1w
ZHAxMS1kZWMKKwkJOzsKKwl3ZTMyaykKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsK
KwlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUg
fCBzaFsyM11lbGUpCisJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgorCQk7OworCXNwYXJjIHwg
c3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQorCQliYXNpY19tYWNoaW5l
PXNwYXJjLXN1bgorCQk7OworCWN5ZHJhKQorCQliYXNpY19tYWNoaW5lPWN5ZHJhLWN5ZHJvbWUK
KwkJOzsKKwlvcmlvbikKKwkJYmFzaWNfbWFjaGluZT1vcmlvbi1oaWdobGV2ZWwKKwkJOzsKKwlv
cmlvbjEwNSkKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWhpZ2hsZXZlbAorCQk7OworCW1hYyB8
IG1wdyB8IG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQk7OworCXBtYWMg
fCBwbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWFwcGxlCisJCTs7CisJKi11bmtu
b3duKQorCQkjIE1ha2Ugc3VyZSB0byBtYXRjaCBhbiBhbHJlYWR5LWNhbm9uaWNhbGl6ZWQgbWFj
aGluZSBuYW1lLgorCQk7OworCSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFc
JzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0
IDEKKwkJOzsKK2VzYWMKKworIyBIZXJlIHdlIGNhbm9uaWNhbGl6ZSBjZXJ0YWluIGFsaWFzZXMg
Zm9yIG1hbnVmYWN0dXJlcnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi1kaWdpdGFsKikK
KwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9kaWdpdGFsLiov
ZGVjLydgCisJCTs7CisJKi1jb21tb2RvcmUqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNp
Y19tYWNoaW5lIHwgc2VkICdzL2NvbW1vZG9yZS4qL2NibS8nYAorCQk7OworCSopCisJCTs7Citl
c2FjCisKKyMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBjZXJ0YWlu
IG9wZXJhdGluZyBzeXN0ZW1zLgorCitpZiBbIHgiJG9zIiAhPSB4IiIgXQordGhlbgorY2FzZSAk
b3MgaW4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBt
aWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyog
aXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9y
YXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKKwktc29sYXJpczEgfCAtc29sYXJpczEuKikKKwkJ
b3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAorCQk7OworCS1zb2xh
cmlzKQorCQlvcz0tc29sYXJpczIKKwkJOzsKKwktc3ZyNCopCisJCW9zPS1zeXN2NAorCQk7Owor
CS11bml4d2FyZSopCisJCW9zPS1zeXN2NC4ydXcKKwkJOzsKKwktZ251L2xpbnV4KikKKwkJb3M9
YGVjaG8gJG9zIHwgc2VkIC1lICdzfGdudS9saW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwkjIEZp
cnN0IGFjY2VwdCB0aGUgYmFzaWMgc3lzdGVtIHR5cGVzLgorCSMgVGhlIHBvcnRhYmxlIHN5c3Rl
bXMgY29tZXMgZmlyc3QuCisJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8g
bWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KKwkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0
IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCisJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1t
aW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAorCSAgICAgIHwgLSp2bXMqIHwg
LXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3Nb
MzRdKlwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgq
IHwgLWF1cm9yYXV4KiB8IC1zb2xhcmlzKiBcCisJICAgICAgfCAtc3ltKiB8IC1rb3BlbnNvbGFy
aXMqIFwKKwkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3Nv
cyogfCAtdW5pY29zKiB8IC1hb2YqIFwKKwkgICAgICB8IC1hb3MqIHwgLWFyb3MqIFwKKwkgICAg
ICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12
cyogXAorCSAgICAgIHwgLWNsaXgqIHwgLXJpc2NvcyogfCAtdW5pcGx1cyogfCAtaXJpcyogfCAt
cnR1KiB8IC14ZW5peCogXAorCSAgICAgIHwgLWhpdXgqIHwgLTM4NmJzZCogfCAta25ldGJzZCog
fCAtbWlyYnNkKiB8IC1uZXRic2QqIFwKKwkgICAgICB8IC1vcGVuYnNkKiB8IC1zb2xpZGJzZCog
XAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgq
IHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1h
b3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2Zm
KiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJp
KiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVz
b3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKKwkgICAgICB8IC1jeWd3aW4qIHwgLW1zeXMq
IHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCisJICAgICAg
fCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAt
bGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9z
KiB8IC1tcGVpeCogfCAtdWRrKiBcCisJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtz
KiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKwkgICAgICB8IC1vcGVuc3Rl
cCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKKwkgICAgICB8
IC1zdG9ybS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwK
KwkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVz
KiBcCisJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3Zh
KiB8IC13aW5kaXNzKiBcCisJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1u
eDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKKwkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwg
LXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyopCisJIyBSZW1lbWJlciwgZWFjaCBh
bHRlcm5hdGl2ZSBNVVNUIEVORCBJTiAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCQk7
OworCS1xbngqKQorCQljYXNlICRiYXNpY19tYWNoaW5lIGluCisJCSAgICB4ODYtKiB8IGkqODYt
KikKKwkJCTs7CisJCSAgICAqKQorCQkJb3M9LW50byRvcworCQkJOzsKKwkJZXNhYworCQk7Owor
CS1udG8tcW54KikKKwkJOzsKKwktbnRvKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50
b3xudG8tcW54fCdgCisJCTs7CisJLXNpbSB8IC1lczE4MDAqIHwgLWhtcyogfCAteHJheSB8IC1v
czY4ayogfCAtbm9uZSogfCAtdjg4ciogXAorCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1h
YnVnIHwgLW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogfCAtaGFpa3UqIFwKKwkgICAgICB8IC1t
YWNvcyogfCAtbXB3KiB8IC1tYWdpYyogfCAtbW1peHdhcmUqIHwgLW1vbjk2MCogfCAtbG5ld3Mq
KQorCQk7OworCS1tYWMqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bWFjfG1hY29zfCdg
CisJCTs7CisJLWxpbnV4LWRpZXRsaWJjKQorCQlvcz0tbGludXgtZGlldGxpYmMKKwkJOzsKKwkt
bGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bGludXh8bGludXgtZ251fCdgCisJ
CTs7CisJLXN1bm9zNSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczV8c29sYXJp
czJ8J2AKKwkJOzsKKwktc3Vub3M2KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9z
Nnxzb2xhcmlzM3wnYAorCQk7OworCS1vcGVuZWQqKQorCQlvcz0tb3BlbmVkaXRpb24KKwkJOzsK
Kwktb3M0MDAqKQorCQlvcz0tb3M0MDAKKwkJOzsKKwktd2luY2UqKQorCQlvcz0td2luY2UKKwkJ
OzsKKwktb3Nmcm9zZSopCisJCW9zPS1vc2Zyb3NlCisJCTs7CisJLW9zZiopCisJCW9zPS1vc2YK
KwkJOzsKKwktdXRlayopCisJCW9zPS1ic2QKKwkJOzsKKwktZHluaXgqKQorCQlvcz0tYnNkCisJ
CTs7CisJLWFjaXMqKQorCQlvcz0tYW9zCisJCTs7CisJLWF0aGVvcyopCisJCW9zPS1hdGhlb3MK
KwkJOzsKKwktc3lsbGFibGUqKQorCQlvcz0tc3lsbGFibGUKKwkJOzsKKwktMzg2YnNkKQorCQlv
cz0tYnNkCisJCTs7CisJLWN0aXgqIHwgLXV0cyopCisJCW9zPS1zeXN2CisJCTs7CisJLW5vdmEq
KQorCQlvcz0tcnRtay1ub3ZhCisJCTs7CisJLW5zMiApCisJCW9zPS1uZXh0c3RlcDIKKwkJOzsK
KwktbnNrKikKKwkJb3M9LW5zaworCQk7OworCSMgUHJlc2VydmUgdGhlIHZlcnNpb24gbnVtYmVy
IG9mIHNpbml4NS4KKwktc2luaXg1LiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzaW5p
eHxzeXN2fCdgCisJCTs7CisJLXNpbml4KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXRwZiopCisJ
CW9zPS10cGYKKwkJOzsKKwktdHJpdG9uKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJ
CW9zPS1zeXN2MworCQk7OworCS1zdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJ
b3M9LXN5c3YzCisJCTs7CisJLXN5c3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11
c3QgY29tZSBhZnRlciAtc3lzdnI0LgorCS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9z
ZQorCQk7OworCS1lczE4MDAqKQorCQlvcz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVu
aXgKKwkJOzsKKwktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQor
CQlvcz0tbWludAorCQk7OworCS1hcm9zKikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJ
CW9zPS1rYW9zCisJCTs7CisJLXp2bW9lKQorCQlvcz0tenZtb2UKKwkJOzsKKwktZGljb3MqKQor
CQlvcz0tZGljb3MKKwkJOzsKKwktbmFjbCopCisJCTs7CisJLW5vbmUpCisJCTs7CisJKikKKwkJ
IyBHZXQgcmlkIG9mIHRoZSBgLScgYXQgdGhlIGJlZ2lubmluZyBvZiAkb3MuCisJCW9zPWBlY2hv
ICRvcyB8IHNlZCAncy9bXi1dKi0vLydgCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxg
JDFcJzogc3lzdGVtIFxgJG9zXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsK
K2VzYWMKK2Vsc2UKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lz
dGVtcyB0aGF0IGNvbWUgd2l0aCB2YXJpb3VzIG1hY2hpbmVzLgorIyBUaGUgdmFsdWUgc2hvdWxk
IGJlIHdoYXQgdGhlIHZlbmRvciBjdXJyZW50bHkgc2hpcHMgb3V0IHRoZSBkb29yIHdpdGggdGhl
aXIKKyMgbWFjaGluZSBvciBwdXQgYW5vdGhlciB3YXksIHRoZSBtb3N0IHBvcHVsYXIgb3MgcHJv
dmlkZWQgd2l0aCB0aGUgbWFjaGluZS4KKworIyBOb3RlIHRoYXQgaWYgeW91J3JlIGdvaW5nIHRv
IHRyeSB0byBtYXRjaCAiLU1BTlVGQUNUVVJFUiIgaGVyZSAoc2F5LAorIyAiLXN1biIpLCB0aGVu
IHlvdSBoYXZlIHRvIHRlbGwgdGhlIGNhc2Ugc3RhdGVtZW50IHVwIHRvd2FyZHMgdGhlIHRvcAor
IyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgT3RoZXJ3aXNl
LCBjb2RlIGFib3ZlCisjIHdpbGwgc2lnbmFsIGFuIGVycm9yIHNheWluZyB0aGF0IE1BTlVGQUNU
VVJFUiBpc24ndCBhbiBvcGVyYXRpbmcKKyMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRv
IHRoaXMgcG9pbnQuCisKK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwlzY29yZS0qKQorCQlvcz0t
ZWxmCisJCTs7CisJc3B1LSopCisJCW9zPS1lbGYKKwkJOzsKKwkqLWFjb3JuKQorCQlvcz0tcmlz
Y2l4MS4yCisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1p
KQorCQlvcz0tYW91dAorCQk7OworCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsK
Kwl0aWM1NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJ
OzsKKwl0aWM2eC0qKQorCQlvcz0tY29mZgorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3Jl
IHRoZSAqLWRlYyBlbnRyeS4KKwlwZHAxMC0qKQorCQlvcz0tdG9wczIwCisJCTs7CisJcGRwMTEt
KikKKwkJb3M9LW5vbmUKKwkJOzsKKwkqLWRlYyB8IHZheC0qKQorCQlvcz0tdWx0cml4NC4yCisJ
CTs7CisJbTY4Ki1hcG9sbG8pCisJCW9zPS1kb21haW4KKwkJOzsKKwlpMzg2LXN1bikKKwkJb3M9
LXN1bm9zNC4wLjIKKwkJOzsKKwltNjgwMDAtc3VuKQorCQlvcz0tc3Vub3MzCisJCSMgVGhpcyBh
bHNvIGV4aXN0cyBpbiB0aGUgY29uZmlndXJlIHByb2dyYW0sIGJ1dCB3YXMgbm90IHRoZQorCQkj
IGRlZmF1bHQuCisJCSMgb3M9LXN1bm9zNAorCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0
CisJCTs7CisJbWVwLSopCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi1jaXNjbykKKwkJb3M9LWVs
ZgorCQk7OworCW1pcHMqLSopCisJCW9zPS1lbGYKKwkJOzsKKwlvcjMyLSopCisJCW9zPS1jb2Zm
CisJCTs7CisJKi10dGkpCSMgbXVzdCBiZSBiZWZvcmUgc3BhcmMgZW50cnkgb3Igd2UgZ2V0IHRo
ZSB3cm9uZyBvcy4KKwkJb3M9LXN5c3YzCisJCTs7CisJc3BhcmMtKiB8ICotc3VuKQorCQlvcz0t
c3Vub3M0LjEuMQorCQk7OworCSotYmUpCisJCW9zPS1iZW9zCisJCTs7CisJKi1oYWlrdSkKKwkJ
b3M9LWhhaWt1CisJCTs7CisJKi1pYm0pCisJCW9zPS1haXgKKwkJOzsKKwkqLWtudXRoKQorCQlv
cz0tbW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9u
ZCkKKwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1o
cCkKKwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2
MC0qIHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50
KQorCQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcp
CisJCW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhr
LWNjdXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsK
KwkqLW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgK
KwkJOzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJ
CTs7CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAz
CisJCTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9
LWJzZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1p
cml4CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQor
CQlvcz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0t
dXhwdgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9
LWNvZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJ
b3M9LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJl
IHdlIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlw
ZSwgYnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51
ZmFjdHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5r
bm93bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJ
CTs7CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCop
CisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJ
OzsKKwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2
ZW5kb3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsK
KwkJCS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVu
ZG9yPWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJ
LWdlbml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJ
CQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7
CisJCQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2
ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJ
CQkJdmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7
OworCQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFj
b3MqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8
IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9z
KikKKwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1g
ZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2Vz
YWMKKworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoK
KyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1l
LXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUw
Mm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLXIgZTI3MjJiMjRk
YzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvY29uZmlndXJlCVdlZCBKYW4gMTEg
MDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDEwMjA0IEBACisjISAvYmluL3NoCisjIEd1
ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtl
ZmlsZXMuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgWGVuIEh5cGVydmlz
b3IgNC4yLgorIworIyBSZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhlbnNvdXJjZS5j
b20+LgorIworIworIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYs
IDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMu
CisjCisjCisjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNv
cHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMj
CisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK
KworIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENB
U0UgIyBmb3IgTUtTIHNoCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVs
YXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9
OgorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsi
JEAifSwgd2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMg
ZmVhdHVyZS4KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCisgIHNldG9wdCBOT19HTE9C
X1NVQlNUCitlbHNlCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKAorICAqcG9z
aXgqKSA6CisgICAgc2V0IC1vIHBvc2l4IDs7ICMoCisgICopIDoKKyAgICAgOzsKK2VzYWMKK2Zp
CisKKworYXNfbmw9JworJworZXhwb3J0IGFzX25sCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcg
Y3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgorYXNfZWNobz0nXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK2FzX2VjaG89JGFzX2VjaG8kYXNf
ZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFz
X2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KKyMgUHJlZmVyIGEga3NoIHNoZWxsIGJ1aWx0
aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLAorIyBidXQgd2l0
aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KK2lmIHRlc3QgLXogIiRCQVNIX1ZF
UlNJT04kWlNIX1ZFUlNJT04iIFwKKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAtLSAkYXNfZWNo
b2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50IC1y
IC0tJworICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKK2VsaWYgKHRlc3QgIlhgcHJpbnRmICVz
ICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfZWNobz0n
cHJpbnRmICVzXG4nCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJworZWxzZQorICBpZiB0ZXN0ICJY
YCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNf
ZWNobyI7IHRoZW4KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEk
YXNfbmwiJworICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKKyAgZWxzZQorICAgIGFz
X2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCisgICAgYXNfZWNob19u
X2JvZHk9J2V2YWwKKyAgICAgIGFyZz0kMTsKKyAgICAgIGNhc2UgJGFyZyBpbiAjKAorICAgICAg
KiIkYXNfbmwiKikKKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKKwlhcmc9YGV4
cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OworICAgICAgZXNhYzsKKyAgICAgIGV4
cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKKyAgICAnCisgICAgZXhw
b3J0IGFzX2VjaG9fbl9ib2R5CisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkg
YXNfZWNobycKKyAgZmkKKyAgZXhwb3J0IGFzX2VjaG9fYm9keQorICBhc19lY2hvPSdzaCAtYyAk
YXNfZWNob19ib2R5IGFzX2VjaG8nCitmaQorCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4K
K2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgIFBBVEhfU0VQ
QVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rl
di9udWxsIDI+JjEgJiYgeworICAgIChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2gg
LWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8CisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycKKyAgfQor
ZmkKKworCisjIElGUworIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVj
aXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3Jz
IGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgorIyAoSWYgX0FTX1BBVEhfV0FMSyB3
ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkCisjIHNwbGl0
dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCitJRlM9IiAiIgkkYXNfbmwiCisK
KyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRp
cmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CitjYXNlICQwIGluICMoKAorICAqW1xcL10q
ICkgYXNfbXlzZWxmPSQwIDs7CisgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB
UkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVz
dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBh
c19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisK
KyAgICAgOzsKK2VzYWMKKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJs
eSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKKyMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90
IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhl
bgorICBhc19teXNlbGY9JDAKK2ZpCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCisg
ICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3
aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCisgIGV4aXQgMQorZmkKKworIyBVbnNldCB2
YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBp
bgorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIu
MDE7IHRoZSAifHwgZXhpdCAxIgorIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0
IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZAorIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUu
Mi4xNC4KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKK2RvIGV2YWwg
dGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCisgICYmICggKHVuc2V0ICRhc192YXIpIHx8
IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwgOgorZG9uZQorUFMx
PSckICcKK1BTMj0nPiAnCitQUzQ9JysgJworCisjIE5MUyBudWlzYW5jZXMuCitMQ19BTEw9Qwor
ZXhwb3J0IExDX0FMTAorTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFCisKKyMgQ0RQQVRILgor
KHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCitpZiB0ZXN0
ICJ4JENPTkZJR19TSEVMTCIgPSB4OyB0aGVuCisgIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0
ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxs
IDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFByZS00LjIgdmVy
c2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCisg
ICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCisgIGFs
aWFzIC1nICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicKKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QK
K2Vsc2UKKyAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygKKyAgKnBvc2l4Kikg
OgorICAgIHNldCAtbyBwb3NpeCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorIgor
ICBhc19yZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQorYXNfZm5fc3Vj
Y2VzcyAoKSB7IGFzX2ZuX3JldHVybiAwOyB9Cithc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0
dXJuIDE7IH0KK2FzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0KK2FzX2ZuX3JldF9m
YWlsdXJlICgpIHsgcmV0dXJuIDE7IH0KKworZXhpdGNvZGU9MAorYXNfZm5fc3VjY2VzcyB8fCB7
IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9Cithc19mbl9mYWlsdXJl
ICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KK2FzX2Zu
X3JldF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfc3VjY2VzcyBmYWls
ZWQuOyB9Cithc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0
X2ZhaWx1cmUgc3VjY2VlZGVkLjsgfQoraWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAm
JiB0ZXN0IHggPSBcIlwkMVwiICk7IHRoZW4gOgorCitlbHNlCisgIGV4aXRjb2RlPTE7IGVjaG8g
cG9zaXRpb25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLgorZmkKK3Rlc3QgeFwkZXhpdGNv
ZGUgPSB4MCB8fCBleGl0IDEiCisgIGFzX3N1Z2dlc3RlZD0iICBhc19saW5lbm9fMT0iO2FzX3N1
Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIg
YXNfbGluZW5vXzFhPVwkTElORU5PCisgIGFzX2xpbmVub18yPSI7YXNfc3VnZ2VzdGVkPSRhc19z
dWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9
XCRMSU5FTk8KKyAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwi
eFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIgJiYKKyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5l
bm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8
IGV4aXQgMQordGVzdCBcJCgoIDEgKyAxICkpID0gMiB8fCBleGl0IDEiCisgIGlmIChldmFsICIk
YXNfcmVxdWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGFzX2hhdmVfcmVxdWlyZWQ9eWVz
CitlbHNlCisgIGFzX2hhdmVfcmVxdWlyZWQ9bm8KK2ZpCisgIGlmIHRlc3QgeCRhc19oYXZlX3Jl
cXVpcmVkID0geHllcyAmJiAoZXZhbCAiJGFzX3N1Z2dlc3RlZCIpIDI+L2Rldi9udWxsOyB0aGVu
IDoKKworZWxzZQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCithc19m
b3VuZD1mYWxzZQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4kUEFU
SF9TRVBBUkFUT1IkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNf
ZGlyIiAmJiBhc19kaXI9LgorICBhc19mb3VuZD06CisgIGNhc2UgJGFzX2RpciBpbiAjKAorCSAv
KikKKwkgICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCisJICAgICAjIFRyeSBv
bmx5IHNoZWxscyB0aGF0IGV4aXN0LCB0byBzYXZlIHNldmVyYWwgZm9ya3MuCisJICAgICBhc19z
aGVsbD0kYXNfZGlyLyRhc19iYXNlCisJICAgICBpZiB7IHRlc3QgLWYgIiRhc19zaGVsbCIgfHwg
dGVzdCAtZiAiJGFzX3NoZWxsLmV4ZSI7IH0gJiYKKwkJICAgIHsgJGFzX2VjaG8gIiRhc19ib3Vy
bmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+
L2Rldi9udWxsOyB0aGVuIDoKKyAgQ09ORklHX1NIRUxMPSRhc19zaGVsbCBhc19oYXZlX3JlcXVp
cmVkPXllcworCQkgICBpZiB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19z
dWdnZXN0ZWQiIHwgYXNfcnVuPWEgIiRhc19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgor
ICBicmVhayAyCitmaQorZmkKKwkgICBkb25lOzsKKyAgICAgICBlc2FjCisgIGFzX2ZvdW5kPWZh
bHNlCitkb25lCiskYXNfZm91bmQgfHwgeyBpZiB7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAt
ZiAiJFNIRUxMLmV4ZSI7IH0gJiYKKwkgICAgICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBh
dGlibGUiIiRhc19yZXF1aXJlZCIgfCBhc19ydW49YSAiJFNIRUxMIjsgfSAyPi9kZXYvbnVsbDsg
dGhlbiA6CisgIENPTkZJR19TSEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKK2ZpOyB9
CitJRlM9JGFzX3NhdmVfSUZTCisKKworICAgICAgaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiICE9
IHg7IHRoZW4gOgorICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3
ZSBoYXZlIHRvIHByb3ZpZGUgYQorCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3
aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCisJIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQg
Y2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKwkjIFByZXNlcnZlIC12IGFuZCAt
eCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCisJQkFTSF9FTlY9L2Rldi9udWxsCisJRU5WPS9k
ZXYvbnVsbAorCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hf
RU5WIEVOVgorCWV4cG9ydCBDT05GSUdfU0hFTEwKKwljYXNlICQtIGluICMgKCgoKAorCSAgKnYq
eCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CisJICAqdiogKSBhc19vcHRzPS12IDs7CisJICAq
eCogKSBhc19vcHRzPS14IDs7CisJICAqICkgYXNfb3B0cz0gOzsKKwllc2FjCisJZXhlYyAiJENP
TkZJR19TSEVMTCIgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQorZmkKKworICAgIGlm
IHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKKyAgJGFzX2VjaG8gIiQwOiBU
aGlzIHNjcmlwdCByZXF1aXJlcyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRoYW4gYWxsIgorICAkYXNf
ZWNobyAiJDA6IHRoZSBzaGVsbHMgdGhhdCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiIKKyAgaWYg
dGVzdCB4JHtaU0hfVkVSU0lPTitzZXR9ID0geHNldCA7IHRoZW4KKyAgICAkYXNfZWNobyAiJDA6
IEluIHBhcnRpY3VsYXIsIHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCIKKyAg
ICAkYXNfZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iCisgIGVs
c2UKKyAgICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFu
ZAorJDA6IHhlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tIGFib3V0IHlvdXIgc3lzdGVtLAor
JDA6IGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzCiskMDog
bWVzc2FnZS4gVGhlbiBpbnN0YWxsIGEgbW9kZXJuIHNoZWxsLCBvciBtYW51YWxseSBydW4KKyQw
OiB0aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuIgorICBm
aQorICBleGl0IDEKK2ZpCitmaQorZmkKK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Citl
eHBvcnQgU0hFTEwKKyMgVW5zZXQgbW9yZSB2YXJpYWJsZXMga25vd24gdG8gaW50ZXJmZXJlIHdp
dGggYmVoYXZpb3Igb2YgY29tbW9uIHRvb2xzLgorQ0xJQ09MT1JfRk9SQ0U9IEdSRVBfT1BUSU9O
Uz0KK3Vuc2V0IENMSUNPTE9SX0ZPUkNFIEdSRVBfT1BUSU9OUworCisjIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0gIyMKKyMjIE00c2ggU2hlbGwgRnVuY3Rpb25zLiAjIworIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICMjCisjIGFzX2ZuX3Vuc2V0IFZBUgorIyAtLS0tLS0tLS0tLS0tLS0KKyMgUG9y
dGFibHkgdW5zZXQgVkFSLgorYXNfZm5fdW5zZXQgKCkKK3sKKyAgeyBldmFsICQxPTsgdW5zZXQg
JDE7fQorfQorYXNfdW5zZXQ9YXNfZm5fdW5zZXQKKworIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRV
UworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0
IGZvcmtpbmcuCithc19mbl9zZXRfc3RhdHVzICgpCit7CisgIHJldHVybiAkMQorfSAjIGFzX2Zu
X3NldF9zdGF0dXMKKworIyBhc19mbl9leGl0IFNUQVRVUworIyAtLS0tLS0tLS0tLS0tLS0tLQor
IyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQg
LWUiIGNvbnRleHQuCithc19mbl9leGl0ICgpCit7CisgIHNldCArZQorICBhc19mbl9zZXRfc3Rh
dHVzICQxCisgIGV4aXQgJDEKK30gIyBhc19mbl9leGl0CisKKyMgYXNfZm5fbWtkaXJfcAorIyAt
LS0tLS0tLS0tLS0tCisjIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGlu
ZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4KK2FzX2ZuX21rZGlyX3AgKCkKK3sKKworICBjYXNlICRh
c19kaXIgaW4gIygKKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7OworICBlc2FjCisgIHRlc3QgLWQg
IiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgeworICAgIGFzX2RpcnM9CisgICAgd2hp
bGUgOjsgZG8KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAorICAgICAgKlwnKikgYXNfcWRpcj1g
JGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCisgICAg
ICAqKSBhc19xZGlyPSRhc19kaXI7OworICAgICAgZXNhYworICAgICAgYXNfZGlycz0iJyRhc19x
ZGlyJyAkYXNfZGlycyIKKyAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19kaXIiIHx8
CiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBc
CisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgv
L1wpJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAor
JGFzX2VjaG8gWCIkYXNfZGlyIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14v
XSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4q
L3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMv
L1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBx
CisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFr
CisgICAgZG9uZQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGly
cyIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNy
ZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKworCit9ICMgYXNfZm5fbWtkaXJfcAorIyBhc19mbl9h
cHBlbmQgVkFSIFZBTFVFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIHRoZSB0
ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZB
Ui4gVGFrZQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxv
dyBhbW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3Rl
YWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCisjIGlt
cGxlbWVudGF0aW9ucy4KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFz
X3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgp
CisgIHsKKyAgICBldmFsICQxKz1cJDIKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXBwZW5kICgpCisg
IHsKKyAgICBldmFsICQxPVwkJDFcJDIKKyAgfQorZmkgIyBhc19mbl9hcHBlbmQKKworIyBhc19m
bl9hcml0aCBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYXJpdGhtZXRp
YyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKKyMg
Z2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBm
b3Jrcy4gVGhlIGFyZ3VtZW50cworIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQg
ZXhwci4KK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRo
ZW4gOgorICBldmFsICdhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPSQoKCAkKiApKQor
ICB9JworZWxzZQorICBhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPWBleHByICIkQCIg
fHwgdGVzdCAkPyAtZXEgMWAKKyAgfQorZmkgIyBhc19mbl9hcml0aAorCisKKyMgYXNfZm5fZXJy
b3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9S
IiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorIyBwcm92aWRlZCwgYWxzbyBv
dXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQg
dGhlCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorYXNfZm5f
ZXJyb3IgKCkKK3sKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNf
c3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5v
LSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawor
ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYk
NAorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgorICBhc19mbl9leGl0
ICRhc19zdGF0dXMKK30gIyBhc19mbl9lcnJvcgorCitpZiBleHByIGEgOiAnXChhXCknID4vZGV2
L251bGwgMj4mMSAmJgorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgw
MDE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK2lm
IChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAv
IDI+JjFgIiA9ICJYLyI7IHRoZW4KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKK2Vsc2UKKyAgYXNf
YmFzZW5hbWU9ZmFsc2UKK2ZpCisKK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAi
WCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc19kaXJuYW1lPWRpcm5h
bWUKK2Vsc2UKKyAgYXNfZGlybmFtZT1mYWxzZQorZmkKKworYXNfbWU9YCRhc19iYXNlbmFtZSAt
LSAiJDAiIHx8CiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAor
CSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2
L251bGwgfHwKKyRhc19lY2hvIFgvIiQwIiB8CisgICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwp
XC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cL1wpJC97CisJ
ICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cKS4qL3sKKwkgICAgcy8vXDEv
CisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorCisjIEF2b2lkIGRlcGVuZGluZyB1cG9u
IENoYXJhY3RlciBSYW5nZXMuCithc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5eicKK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJworYXNfY3Jf
TGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCithc19jcl9kaWdpdHM9JzAxMjM0
NTY3ODknCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKKworCisgIGFz
X2xpbmVub18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8KKyAgYXNfbGluZW5vXzI9JExJ
TkVOTyBhc19saW5lbm9fMmE9JExJTkVOTworICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRh
c19ydW4nIiAhPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKKyAgdGVzdCAieGBleHByICRh
c19saW5lbm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwg
eworICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXgu
ICA6LSkKKyAgc2VkIC1uICcKKyAgICBwCisgICAgL1skXUxJTkVOTy89CisgICcgPCRhc19teXNl
bGYgfAorICAgIHNlZCAnCisgICAgICBzL1skXUxJTkVOTy4qLyYtLworICAgICAgdCBsaW5lbm8K
KyAgICAgIGIKKyAgICAgIDpsaW5lbm8KKyAgICAgIE4KKyAgICAgIDpsb29wCisgICAgICBzL1sk
XUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KKyAgICAgIHQg
bG9vcAorICAgICAgcy8tXG4uKi8vCisgICAgJyA+JGFzX21lLmxpbmVubyAmJgorICBjaG1vZCAr
eCAiJGFzX21lLmxpbmVubyIgfHwKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5u
b3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBh
c19mbl9leGl0IDE7IH0KKworICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFsw
XSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcworICAjICh0aGUgZGlybmFtZSBvZiAkWzBd
IGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKKyAgIyBvcmlnaW5hbCBh
bmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4KKyAg
LiAiLi8kYXNfbWUubGluZW5vIgorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3Qg
Y29tbWFuZC4KKyAgZXhpdAorfQorCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQorY2FzZSBgZWNo
byAtbiB4YCBpbiAjKCgoKCgKKy1uKikKKyAgY2FzZSBgZWNobyAneHlcYydgIGluCisgICpjKikg
RUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgorICB4eSkgIEVD
SE9fQz0nXGMnOzsKKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9k
ZXYvbnVsbAorICAgICAgIEVDSE9fVD0nCSc7OworICBlc2FjOzsKKyopCisgIEVDSE9fTj0nLW4n
OzsKK2VzYWMKKworcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKK2lmIHRlc3Qg
LWQgY29uZiQkLmRpcjsgdGhlbgorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlCitlbHNl
CisgIHJtIC1mIGNvbmYkJC5kaXIKKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorZmkK
K2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KKyAgaWYgbG4gLXMgY29u
ZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz0nbG4gLXMnCisg
ICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKKyAgICAjIDEpIE9uIE1TWVMsIGJv
dGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgorICAgICMgMikgREpH
UFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVj
dXRhYmxlLgorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAt
cCcuCisgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0
ICEgLWYgY29uZiQkLmV4ZSB8fAorICAgICAgYXNfbG5fcz0nY3AgLXAnCisgIGVsaWYgbG4gY29u
ZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz1sbgorICBlbHNl
CisgICAgYXNfbG5fcz0nY3AgLXAnCisgIGZpCitlbHNlCisgIGFzX2xuX3M9J2NwIC1wJworZmkK
K3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZp
bGUKK3JtZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKKworaWYgbWtkaXIgLXAgLiAyPi9kZXYv
bnVsbDsgdGhlbgorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRl
c3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKK2lmIHRl
c3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdGVzdF94PSd0ZXN0IC14JworZWxz
ZQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBhc19sc19MX29wdGlv
bj1MCisgIGVsc2UKKyAgICBhc19sc19MX29wdGlvbj0KKyAgZmkKKyAgYXNfdGVzdF94PScKKyAg
ICBldmFsIHNoIC1jICdcJycKKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorCXRlc3QgLWQg
IiQxLy4iOworICAgICAgZWxzZQorCWNhc2UgJDEgaW4gIygKKwktKilzZXQgIi4vJDEiOzsKKwll
c2FjOworCWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGlu
ICMoKAorCT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkKKyAgICAnXCcnIHNoCisgICcKK2Zp
Cithc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBh
IHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSok
YXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgor
CisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUg
bmFtZS4KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8l
ZyciCisKKwordGVzdCAtbiAiJERKRElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAorZXhlYyA2
PiYxCisKKyMgTmFtZSBvZiB0aGUgaG9zdC4KKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChT
VlIzLjIsIG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKKyMgc28g
dW5hbWUgZ2V0cyBydW4gdG9vLgorYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikg
Mj4vZGV2L251bGwgfCBzZWQgMXFgCisKKyMKKyMgSW5pdGlhbGl6YXRpb25zLgorIworYWNfZGVm
YXVsdF9wcmVmaXg9L3Vzci9sb2NhbAorYWNfY2xlYW5fZmlsZXM9CithY19jb25maWdfbGlib2Jq
X2Rpcj0uCitMSUJPQkpTPQorY3Jvc3NfY29tcGlsaW5nPW5vCitzdWJkaXJzPQorTUZMQUdTPQor
TUFLRUZMQUdTPQorCisjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KK1BBQ0tBR0VfTkFNRT0n
WGVuIEh5cGVydmlzb3InCitQQUNLQUdFX1RBUk5BTUU9J3hlbi1oeXBlcnZpc29yJworUEFDS0FH
RV9WRVJTSU9OPSc0LjInCitQQUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgNC4yJworUEFD
S0FHRV9CVUdSRVBPUlQ9J3hlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tJworUEFDS0FHRV9V
Ukw9JycKKworYWNfdW5pcXVlX2ZpbGU9ImxpYnhsL2xpYnhsLmMiCithY19kZWZhdWx0X3ByZWZp
eD0vdXNyCisjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCithY19p
bmNsdWRlc19kZWZhdWx0PSJcCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NZU19U
WVBFU19ICisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNf
U1RBVF9ICisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZmRlZiBTVERDX0hFQURF
UlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMg
aWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5k
aWYKKyNpZmRlZiBIQVZFX1NUUklOR19ICisjIGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBk
ZWZpbmVkIEhBVkVfTUVNT1JZX0gKKyMgIGluY2x1ZGUgPG1lbW9yeS5oPgorIyBlbmRpZgorIyBp
bmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1RSSU5HU19ICisjIGluY2x1
ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorIyBpbmNsdWRl
IDxpbnR0eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVERJTlRfSAorIyBpbmNsdWRlIDxz
dGRpbnQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3Rk
Lmg+CisjZW5kaWYiCisKK2FjX2hlYWRlcl9saXN0PQorYWNfZnVuY19saXN0PQorYWNfc3Vic3Rf
dmFycz0nTFRMSUJPQkpTCitQT1dfTElCCitMSUJPQkpTCitBTExPQ0EKK2xpYmljb252CitsaWJn
Y3J5cHQKK2xpYmV4dDJmcworc3lzdGVtX2FpbworTElCX1BBVEgKK1ZOQ09ORklHCitIT1RQTFVH
CitVREVWSU5GTworVURFVkFETQorUFlUSE9OUEFUSAorT0NBTUxCVUlMRAorT0NBTUxET0MKK09D
QU1MTUtMSUIKK09DQU1MTUtUT1AKK09DQU1MREVQCitPQ0FNTAorT0NBTUxPUFRET1RPUFQKK09D
QU1MQ0RPVE9QVAorT0NBTUxCRVNUCitPQ0FNTE9QVAorT0NBTUxMSUIKK09DQU1MVkVSU0lPTgor
T0NBTUxDCitJTlNUQUxMX0RBVEEKK0lOU1RBTExfU0NSSVBUCitJTlNUQUxMX1BST0dSQU0KK1NF
VF9NQUtFCitMTl9TCitTRUQKK1hHRVRURVhUCitCQVNICitYTUwKK0NVUkwKK0ZMRVgKK0JJU09O
CitJUAorQlJDVEwKK1BFUkwKK1BZVEhPTgorQVBQRU5EX0xJQgorQVBQRU5EX0lOQ0xVREVTCitQ
UkVQRU5EX0xJQgorUFJFUEVORF9JTkNMVURFUworZGVidWcKK2xvbW91bnQKK21pbml0ZXJtCitv
Y2FtbHRvb2xzCitweXRob250b29scworeGFwaQordnRwbQorbW9uaXRvcnMKK2dpdGh0dHAKK3hz
bQoraG9zdF9vcworaG9zdF92ZW5kb3IKK2hvc3RfY3B1Citob3N0CitidWlsZF9vcworYnVpbGRf
dmVuZG9yCitidWlsZF9jcHUKK2J1aWxkCitFR1JFUAorR1JFUAorQ1BQCitPQkpFWFQKK0VYRUVY
VAorYWNfY3RfQ0MKK0NQUEZMQUdTCitMREZMQUdTCitDRkxBR1MKK0NDCit0YXJnZXRfYWxpYXMK
K2hvc3RfYWxpYXMKK2J1aWxkX2FsaWFzCitMSUJTCitFQ0hPX1QKK0VDSE9fTgorRUNIT19DCitE
RUZTCittYW5kaXIKK2xvY2FsZWRpcgorbGliZGlyCitwc2RpcgorcGRmZGlyCitkdmlkaXIKK2h0
bWxkaXIKK2luZm9kaXIKK2RvY2Rpcgorb2xkaW5jbHVkZWRpcgoraW5jbHVkZWRpcgorbG9jYWxz
dGF0ZWRpcgorc2hhcmVkc3RhdGVkaXIKK3N5c2NvbmZkaXIKK2RhdGFkaXIKK2RhdGFyb290ZGly
CitsaWJleGVjZGlyCitzYmluZGlyCitiaW5kaXIKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUKK3By
ZWZpeAorZXhlY19wcmVmaXgKK1BBQ0tBR0VfVVJMCitQQUNLQUdFX0JVR1JFUE9SVAorUEFDS0FH
RV9TVFJJTkcKK1BBQ0tBR0VfVkVSU0lPTgorUEFDS0FHRV9UQVJOQU1FCitQQUNLQUdFX05BTUUK
K1BBVEhfU0VQQVJBVE9SCitTSEVMTCcKK2FjX3N1YnN0X2ZpbGVzPScnCithY191c2VyX29wdHM9
JworZW5hYmxlX29wdGlvbl9jaGVja2luZworZW5hYmxlX3hzbQorZW5hYmxlX2dpdGh0dHAKK2Vu
YWJsZV9tb25pdG9ycworZW5hYmxlX3Z0cG0KK2VuYWJsZV94YXBpCitlbmFibGVfcHl0aG9udG9v
bHMKK2VuYWJsZV9vY2FtbHRvb2xzCitlbmFibGVfbWluaXRlcm0KK2VuYWJsZV9sb21vdW50Citl
bmFibGVfZGVidWcKKycKKyAgICAgIGFjX3ByZWNpb3VzX3ZhcnM9J2J1aWxkX2FsaWFzCitob3N0
X2FsaWFzCit0YXJnZXRfYWxpYXMKK0NDCitDRkxBR1MKK0xERkxBR1MKK0xJQlMKK0NQUEZMQUdT
CitDUFAKK1BSRVBFTkRfSU5DTFVERVMKK1BSRVBFTkRfTElCCitBUFBFTkRfSU5DTFVERVMKK0FQ
UEVORF9MSUIKK1BZVEhPTgorUEVSTAorQlJDVEwKK0lQCitCSVNPTgorRkxFWAorQ1VSTAorWE1M
CitCQVNICitYR0VUVEVYVCcKKworCisjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5
IG9wdGlvbnMuCithY19pbml0X2hlbHA9CithY19pbml0X3ZlcnNpb249ZmFsc2UKK2FjX3VucmVj
b2duaXplZF9vcHRzPQorYWNfdW5yZWNvZ25pemVkX3NlcD0KKyMgVGhlIHZhcmlhYmxlcyBoYXZl
IHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3aXRoCisjIGRhc2hlcyBjaGFuZ2VkIHRv
IHVuZGVybGluZXMuCitjYWNoZV9maWxlPS9kZXYvbnVsbAorZXhlY19wcmVmaXg9Tk9ORQorbm9f
Y3JlYXRlPQorbm9fcmVjdXJzaW9uPQorcHJlZml4PU5PTkUKK3Byb2dyYW1fcHJlZml4PU5PTkUK
K3Byb2dyYW1fc3VmZml4PU5PTkUKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsCitzaWxl
bnQ9CitzaXRlPQorc3JjZGlyPQordmVyYm9zZT0KK3hfaW5jbHVkZXM9Tk9ORQoreF9saWJyYXJp
ZXM9Tk9ORQorCisjIEluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb3B0aW9ucy4KKyMgVGhlc2UgYXJl
IGxlZnQgdW5leHBhbmRlZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5zdGFsbCBleGVjX3ByZWZpeD0v
Zm9vIgorIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFz
ZWQgb24gZXhlY19wcmVmaXgKKyMgYnkgZGVmYXVsdCB3aWxsIGFjdHVhbGx5IGNoYW5nZS4KKyMg
VXNlIGJyYWNlcyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNhdXNlIHNoLCBwZXJsLCBldGMuIGFsc28g
YWNjZXB0IHRoZW0uCisjIChUaGUgbGlzdCBmb2xsb3dzIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBH
TlUgQ29kaW5nIFN0YW5kYXJkcy4pCitiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKK3NiaW5k
aXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nCitsaWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9saWJl
eGVjJworZGF0YXJvb3RkaXI9JyR7cHJlZml4fS9zaGFyZScKK2RhdGFkaXI9JyR7ZGF0YXJvb3Rk
aXJ9Jworc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKK3NoYXJlZHN0YXRlZGlyPScke3ByZWZp
eH0vY29tJworbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicKK2luY2x1ZGVkaXI9JyR7cHJl
Zml4fS9pbmNsdWRlJworb2xkaW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJworZG9jZGlyPScke2Rh
dGFyb290ZGlyfS9kb2MvJHtQQUNLQUdFX1RBUk5BTUV9JworaW5mb2Rpcj0nJHtkYXRhcm9vdGRp
cn0vaW5mbycKK2h0bWxkaXI9JyR7ZG9jZGlyfScKK2R2aWRpcj0nJHtkb2NkaXJ9JworcGRmZGly
PScke2RvY2Rpcn0nCitwc2Rpcj0nJHtkb2NkaXJ9JworbGliZGlyPScke2V4ZWNfcHJlZml4fS9s
aWInCitsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScKK21hbmRpcj0nJHtkYXRhcm9v
dGRpcn0vbWFuJworCithY19wcmV2PQorYWNfZGFzaGRhc2g9Citmb3IgYWNfb3B0aW9uCitkbwor
ICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4K
KyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgICAgZXZhbCAkYWNfcHJldj1cJGFjX29w
dGlvbgorICAgIGFjX3ByZXY9CisgICAgY29udGludWUKKyAgZmkKKworICBjYXNlICRhY19vcHRp
b24gaW4KKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCgu
KlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7OworICAqKSAgICBhY19vcHRhcmc9eWVzIDs7
CisgIGVzYWMKKworICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0
aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgorCisgIGNhc2UgJGFjX2Rhc2hkYXNoJGFj
X29wdGlvbiBpbgorICAtLSkKKyAgICBhY19kYXNoZGFzaD15ZXMgOzsKKworICAtYmluZGlyIHwg
LS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQorICAgIGFjX3ByZXY9
YmluZGlyIDs7CisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9
KiB8IC0tYmluPSogfCAtLWJpPSopCisgICAgYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtYnVp
bGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQorICAgIGFjX3ByZXY9YnVpbGRf
YWxpYXMgOzsKKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAt
LWJ1PSopCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OworCisgIC1jYWNoZS1maWxlIHwg
LS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKKyAgfCAtLWNhY2hlLWYg
fCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpCisgICAg
YWNfcHJldj1jYWNoZV9maWxlIDs7CisgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8
IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAorICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNo
ZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQor
ICAgIGNhY2hlX2ZpbGU9JGFjX29wdGFyZyA7OworCisgIC0tY29uZmlnLWNhY2hlIHwgLUMpCisg
ICAgY2FjaGVfZmlsZT1jb25maWcuY2FjaGUgOzsKKworICAtZGF0YWRpciB8IC0tZGF0YWRpciB8
IC0tZGF0YWRpIHwgLS1kYXRhZCkKKyAgICBhY19wcmV2PWRhdGFkaXIgOzsKKyAgLWRhdGFkaXI9
KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikKKyAgICBkYXRhZGlyPSRh
Y19vcHRhcmcgOzsKKworICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGlyIHwgLS1kYXRhcm9v
dGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwKKyAgfCAtLWRhdGFyb28gfCAtLWRhdGFy
byB8IC0tZGF0YXIpCisgICAgYWNfcHJldj1kYXRhcm9vdGRpciA7OworICAtZGF0YXJvb3RkaXI9
KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1kYXRhcm9vdGQ9KiBcCisg
IHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAtLWRhdGFybz0qIHwgLS1kYXRhcj0qKQor
ICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxl
LSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmRpc2FibGUtXCgu
KlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFi
bGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51
bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUg
bmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAg
YWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAor
ICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQi
CisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVk
X29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZGlzYWJsZS0kYWNfdXNlcm9wdF9vcmlnIgorCSBh
Y191bnJlY29nbml6ZWRfc2VwPScsICc7OworICAgIGVzYWMKKyAgICBldmFsIGVuYWJsZV8kYWNf
dXNlcm9wdD1ubyA7OworCisgIC1kb2NkaXIgfCAtLWRvY2RpciB8IC0tZG9jZGkgfCAtLWRvYyB8
IC0tZG8pCisgICAgYWNfcHJldj1kb2NkaXIgOzsKKyAgLWRvY2Rpcj0qIHwgLS1kb2NkaXI9KiB8
IC0tZG9jZGk9KiB8IC0tZG9jPSogfCAtLWRvPSopCisgICAgZG9jZGlyPSRhY19vcHRhcmcgOzsK
KworICAtZHZpZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlkIHwgLS1kdmkgfCAtLWR2
KQorICAgIGFjX3ByZXY9ZHZpZGlyIDs7CisgIC1kdmlkaXI9KiB8IC0tZHZpZGlyPSogfCAtLWR2
aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZpPSogfCAtLWR2PSopCisgICAgZHZpZGlyPSRhY19vcHRh
cmcgOzsKKworICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQorICAgIGFjX3VzZXJvcHQ9YGV4cHIg
IngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1l
cyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRh
Y191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAg
IGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAg
YWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRh
Y191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBp
bgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3Vu
cmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3Nl
cC0tZW5hYmxlLSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7
CisgICAgZXNhYworICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CisK
KyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1wcmVmaXggfCAtLWV4ZWMt
cHJlZmkgXAorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhl
Yy1wIHwgLS1leGVjLSBcCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQorICAgIGFjX3ByZXY9
ZXhlY19wcmVmaXggOzsKKyAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4
ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCisgIHwgLS1leGVjLXByZWY9KiB8IC0tZXhl
Yy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBcCisgIHwgLS1l
eGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorICAgIGV4ZWNfcHJlZml4PSRhY19vcHRhcmcgOzsK
KworICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdp
dGgtZ2FzLgorICAgIHdpdGhfZ2FzPXllcyA7OworCisgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwg
fCAtLWhlIHwgLWgpCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKKyAgLWhlbHA9ciogfCAtLWhl
bHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIqKQorICAgIGFjX2luaXRfaGVscD1yZWN1
cnNpdmUgOzsKKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0taGU9cyogfCAt
aHMqKQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7OworCisgIC1ob3N0IHwgLS1ob3N0IHwgLS1o
b3MgfCAtLWhvKQorICAgIGFjX3ByZXY9aG9zdF9hbGlhcyA7OworICAtaG9zdD0qIHwgLS1ob3N0
PSogfCAtLWhvcz0qIHwgLS1obz0qKQorICAgIGhvc3RfYWxpYXM9JGFjX29wdGFyZyA7OworCisg
IC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1odG1sZGkgfCAtLWh0bWxkIHwgLS1odG1sIHwgLS1o
dG0gfCAtLWh0KQorICAgIGFjX3ByZXY9aHRtbGRpciA7OworICAtaHRtbGRpcj0qIHwgLS1odG1s
ZGlyPSogfCAtLWh0bWxkaT0qIHwgLS1odG1sZD0qIHwgLS1odG1sPSogfCAtLWh0bT0qIFwKKyAg
fCAtLWh0PSopCisgICAgaHRtbGRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWluY2x1ZGVkaXIgfCAt
LWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAtLWluY2x1ZGUgXAorICB8
IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQorICAgIGFjX3ByZXY9aW5jbHVk
ZWRpciA7OworICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaT0q
IHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAorICB8IC0taW5jbHVkPSogfCAtLWluY2x1
PSogfCAtLWluY2w9KiB8IC0taW5jPSopCisgICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7CisK
KyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAt
LWluZikKKyAgICBhY19wcmV2PWluZm9kaXIgOzsKKyAgLWluZm9kaXI9KiB8IC0taW5mb2Rpcj0q
IHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1pbmY9KikKKyAgICBpbmZv
ZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZGlyIHwgLS1saWJkaXIgfCAtLWxpYmRpIHwgLS1s
aWJkKQorICAgIGFjX3ByZXY9bGliZGlyIDs7CisgIC1saWJkaXI9KiB8IC0tbGliZGlyPSogfCAt
LWxpYmRpPSogfCAtLWxpYmQ9KikKKyAgICBsaWJkaXI9JGFjX29wdGFyZyA7OworCisgIC1saWJl
eGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwgLS1saWJl
eGVjIFwKKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCisgICAgYWNfcHJldj1saWJl
eGVjZGlyIDs7CisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2Rp
PSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCisgIHwgLS1saWJleGU9KiB8IC0tbGli
ZXg9KiB8IC0tbGliZT0qKQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFyZyA7OworCisgIC1sb2Nh
bGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkgfCAtLWxvY2FsZWQgfCAtLWxvY2FsZSkK
KyAgICBhY19wcmV2PWxvY2FsZWRpciA7OworICAtbG9jYWxlZGlyPSogfCAtLWxvY2FsZWRpcj0q
IHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAtLWxvY2FsZT0qKQorICAgIGxvY2FsZWRp
cj0kYWNfb3B0YXJnIDs7CisKKyAgLWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaXIgfCAt
LWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXAorICB8IC0tbG9jYWxzdGF0ZSB8IC0tbG9j
YWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCB8IC0tbG9jYWxzKQorICAgIGFjX3ByZXY9
bG9jYWxzdGF0ZWRpciA7OworICAtbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGlyPSog
fCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRlZD0qIFwKKyAgfCAtLWxvY2Fsc3RhdGU9
KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSogfCAtLWxvY2Fsc3Q9KiB8IC0tbG9jYWxz
PSopCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLW1hbmRpciB8IC0tbWFu
ZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0tbSkKKyAgICBhY19wcmV2
PW1hbmRpciA7OworICAtbWFuZGlyPSogfCAtLW1hbmRpcj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5k
PSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCisgICAgbWFuZGlyPSRhY19vcHRhcmcgOzsK
KworICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGhvdXQt
ZnAuCisgICAgd2l0aF9mcD1ubyA7OworCisgIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0t
bm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCisgIHwgLS1uby1jciB8IC0tbm8tYyB8
IC1uKQorICAgIG5vX2NyZWF0ZT15ZXMgOzsKKworICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1
cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwKKyAgfCAtLW5vLXJlY3VycyB8
IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLXIpCisg
ICAgbm9fcmVjdXJzaW9uPXllcyA7OworCisgIC1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRl
ZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwKKyAgfCAtLW9sZGluY2x1ZGUg
fCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGluY2wgfCAtLW9sZGluYyBcCisgIHwg
LS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0tbykKKyAgICBhY19wcmV2PW9sZGlu
Y2x1ZGVkaXIgOzsKKyAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpcj0qIHwgLS1v
bGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCisgIHwgLS1vbGRpbmNsdWRlPSogfCAt
LW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSogfCAtLW9sZGluYz0qIFwK
KyAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9sPSogfCAtLW89KikKKyAg
ICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKKworICAtcHJlZml4IHwgLS1wcmVmaXggfCAt
LXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQorICAgIGFjX3ByZXY9cHJlZml4
IDs7CisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSogfCAtLXByZWY9KiB8IC0t
cHJlPSogfCAtLXByPSogfCAtLXA9KikKKyAgICBwcmVmaXg9JGFjX29wdGFyZyA7OworCisgIC1w
cm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAtLXBy
b2dyYW0tcHJlZiBcCisgIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3JhbS1wciB8IC0tcHJvZ3Jh
bS1wKQorICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKKyAgLXByb2dyYW0tcHJlZml4PSog
fCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBcCisgIHwgLS1wcm9ncmFt
LXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0qIHwgLS1wcm9ncmFtLXA9
KikKKyAgICBwcm9ncmFtX3ByZWZpeD0kYWNfb3B0YXJnIDs7CisKKyAgLXByb2dyYW0tc3VmZml4
IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaSB8IC0tcHJvZ3JhbS1zdWZmIFwK
KyAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9ncmFtLXMpCisgICAgYWNf
cHJldj1wcm9ncmFtX3N1ZmZpeCA7OworICAtcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1z
dWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKKyAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1w
cm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAtLXByb2dyYW0tcz0qKQorICAgIHByb2dy
YW1fc3VmZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0t
cHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW0gfCAt
LXByb2dyYW0tdHJhbnNmb3JtLW5hIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW4gfCAtLXBy
b2dyYW0tdHJhbnNmb3JtLSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybSB8IC0tcHJvZ3JhbS10
cmFuc2ZvciBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAtLXByb2dyYW0tdHJhbnNmIFwKKyAg
fCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBcCisgIHwgLS1wcm9nci10cmEgfCAt
LXByb2dyYW0tdHIgfCAtLXByb2dyYW0tdCkKKyAgICBhY19wcmV2PXByb2dyYW1fdHJhbnNmb3Jt
X25hbWUgOzsKKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiB8IC0tcHJvZ3JhbS10cmFuc2Zv
cm0tbmFtZT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbT0qIHwgLS1wcm9ncmFtLXRy
YW5zZm9ybS1uYT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49KiB8IC0tcHJvZ3JhbS10
cmFuc2Zvcm0tPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm09KiB8IC0tcHJvZ3JhbS10cmFu
c2Zvcj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwK
KyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSogXAorICB8IC0tcHJvZ3It
dHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0tcHJvZ3JhbS10PSopCisgICAgcHJvZ3JhbV90cmFu
c2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7CisKKyAgLXBkZmRpciB8IC0tcGRmZGlyIHwgLS1wZGZk
aSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1wZCkKKyAgICBhY19wcmV2PXBkZmRpciA7OworICAtcGRm
ZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1wZGZkPSogfCAtLXBkZj0qIHwgLS1w
ZD0qKQorICAgIHBkZmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXBzZGlyIHwgLS1wc2RpciB8IC0t
cHNkaSB8IC0tcHNkIHwgLS1wcykKKyAgICBhY19wcmV2PXBzZGlyIDs7CisgIC1wc2Rpcj0qIHwg
LS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQorICAgIHBzZGlyPSRhY19v
cHRhcmcgOzsKKworICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0t
cXUgfCAtLXEgXAorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAt
LXNpbCkKKyAgICBzaWxlbnQ9eWVzIDs7CisKKyAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNi
aW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCisgICAgYWNfcHJldj1zYmlu
ZGlyIDs7CisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5k
PSogfCAtLXNiaW49KiBcCisgIHwgLS1zYmk9KiB8IC0tc2I9KikKKyAgICBzYmluZGlyPSRhY19v
cHRhcmcgOzsKKworICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFy
ZWRzdGF0ZWRpIFwKKyAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJl
ZHN0YXQgfCAtLXNoYXJlZHN0YSBcCisgIHwgLS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hh
cmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcCisgIHwgLS1zaGEgfCAtLXNoKQorICAgIGFjX3ByZXY9
c2hhcmVkc3RhdGVkaXIgOzsKKyAgLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGly
PSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcCisgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVk
c3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcCisgIHwgLS1zaGFyZWRz
dD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSogXAor
ICB8IC0tc2hhPSogfCAtLXNoPSopCisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7Owor
CisgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCisgICAgYWNfcHJldj1zaXRlIDs7CisgIC1zaXRl
PSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCisgICAgc2l0ZT0kYWNfb3B0YXJnIDs7CisKKyAgLXNy
Y2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikKKyAgICBh
Y19wcmV2PXNyY2RpciA7OworICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwg
LS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQorICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7CisK
KyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQg
fCAtLXN5c2NvbmYgXAorICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0tc3lzYyB8IC0tc3lzIHwg
LS1zeSkKKyAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKKyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lz
Y29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29uZj0qIFwK
KyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAtLXN5cz0qIHwgLS1zeT0q
KQorICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OworCisgIC10YXJnZXQgfCAtLXRhcmdldCB8
IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpCisgICAgYWNfcHJldj10YXJn
ZXRfYWxpYXMgOzsKKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFy
Zz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQorICAgIHRhcmdldF9hbGlhcz0kYWNfb3B0
YXJnIDs7CisKKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJi
byB8IC0tdmVyYikKKyAgICB2ZXJib3NlPXllcyA7OworCisgIC12ZXJzaW9uIHwgLS12ZXJzaW9u
IHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCisgICAgYWNfaW5pdF92ZXJzaW9u
PTogOzsKKworICAtd2l0aC0qIHwgLS13aXRoLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRh
Y19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0
IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vy
b3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2Zu
X2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNl
cm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vy
b3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAg
ICAgKiIKKyJ3aXRoXyRhY191c2Vyb3B0IgorIiopIDs7CisgICAgICAqKSBhY191bnJlY29nbml6
ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLXdpdGgt
JGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKKyAgICBlc2Fj
CisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CisKKyAgLXdpdGhvdXQt
KiB8IC0td2l0aG91dC0qKQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4
LSp3aXRob3V0LVwoLipcKSdgCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlk
IHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0r
Ll8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52
YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNf
dXNlcm9wdAorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3Mv
Wy0rLl0vXy9nJ2AKKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4KKyAgICAgICoiCisid2l0aF8k
YWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191
bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRob3V0LSRhY191c2Vyb3B0
X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwg
d2l0aF8kYWNfdXNlcm9wdD1ubyA7OworCisgIC0teCkKKyAgICAjIE9ic29sZXRlOyB1c2UgLS13
aXRoLXguCisgICAgd2l0aF94PXllcyA7OworCisgIC14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVz
IHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwKKyAgfCAtLXgtaW5jbCB8
IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKKyAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsKKyAg
LXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1pbmNs
dWQ9KiB8IC0teC1pbmNsdT0qIFwKKyAgfCAtLXgtaW5jbD0qIHwgLS14LWluYz0qIHwgLS14LWlu
PSogfCAtLXgtaT0qKQorICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7OworCisgIC14LWxpYnJh
cmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUgfCAtLXgtbGlicmFyaSBcCisgIHwg
LS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0t
eC1sKQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsKKyAgLXgtbGlicmFyaWVzPSogfCAtLXgt
bGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0teC1saWJyYXJpPSogXAorICB8IC0teC1s
aWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0q
IHwgLS14LWw9KikKKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7CisKKyAgLSopIGFzX2Zu
X2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nCitUcnkgXGAkMCAt
LWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgorICAgIDs7CisKKyAgKj0qKQorICAgIGFjX2Vu
dnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFtePV0qXCk9J2AKKyAgICAjIFJlamVjdCBu
YW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgY2FzZSAk
YWNfZW52dmFyIGluICMoCisgICAgICAnJyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiAp
CisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2
YXInIiA7OworICAgIGVzYWMKKyAgICBldmFsICRhY19lbnZ2YXI9XCRhY19vcHRhcmcKKyAgICBl
eHBvcnQgJGFjX2VudnZhciA7OworCisgICopCisgICAgIyBGSVhNRTogc2hvdWxkIGJlIHJlbW92
ZWQgaW4gYXV0b2NvbmYgMy4wLgorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBz
aG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgorICAgIGV4cHIgIngkYWNf
b3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgJGFz
X2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4m
MgorICAgIDogIiR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRp
b259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259IgorICAgIDs7CisKKyAgZXNhYworZG9uZQor
CitpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKyAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3By
ZXYgfCBzZWQgJ3MvXy8tL2cnYAorICBhc19mbl9lcnJvciAkPyAibWlzc2luZyBhcmd1bWVudCB0
byAkYWNfb3B0aW9uIgorZmkKKworaWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIjsg
dGhlbgorICBjYXNlICRlbmFibGVfb3B0aW9uX2NoZWNraW5nIGluCisgICAgbm8pIDs7CisgICAg
ZmF0YWwpIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2du
aXplZF9vcHRzIiA7OworICAgICopICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJl
Y29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjIgOzsKKyAgZXNhYwor
ZmkKKworIyBDaGVjayBhbGwgZGlyZWN0b3J5IGFyZ3VtZW50cyBmb3IgY29uc2lzdGVuY3kuCitm
b3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGly
IGRhdGFyb290ZGlyIFwKKwkJZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fs
c3RhdGVkaXIgaW5jbHVkZWRpciBcCisJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRt
bGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwKKwkJbGliZGlyIGxvY2FsZWRpciBtYW5kaXIKK2Rv
CisgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAjIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLgor
ICBjYXNlICRhY192YWwgaW4KKyAgICAqLyApCisgICAgICBhY192YWw9YGV4cHIgIlgkYWNfdmFs
IiA6ICdYXCguKlteL11cKScgXHwgIlgkYWNfdmFsIiA6ICdYXCguKlwpJ2AKKyAgICAgIGV2YWwg
JGFjX3Zhcj1cJGFjX3ZhbDs7CisgIGVzYWMKKyAgIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUg
ZGlyZWN0b3J5IG5hbWVzLgorICBjYXNlICRhY192YWwgaW4KKyAgICBbXFwvJF0qIHwgPzpbXFwv
XSogKSAgY29udGludWU7OworICAgIE5PTkUgfCAnJyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4
ICkgY29udGludWU7OyBlc2FjOzsKKyAgZXNhYworICBhc19mbl9lcnJvciAkPyAiZXhwZWN0ZWQg
YW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIKK2RvbmUK
KworIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBi
ZWhhdmlvcjogYCRob3N0JworIyB1c2VkIHRvIGhvbGQgdGhlIGFyZ3VtZW50IG9mIC0taG9zdCBl
dGMuCisjIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCitidWlsZD0kYnVpbGRfYWxpYXMKK2hv
c3Q9JGhvc3RfYWxpYXMKK3RhcmdldD0kdGFyZ2V0X2FsaWFzCisKKyMgRklYTUU6IFRvIHJlbW92
ZSBzb21lIGRheS4KK2lmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgorICBpZiB0ZXN0
ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KKyAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKKyAg
ICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1i
dWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0LgorICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMg
ZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkIiA+JjIKKyAgZWxp
ZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0X2FsaWFzIjsgdGhlbgorICAgIGNyb3Nz
X2NvbXBpbGluZz15ZXMKKyAgZmkKK2ZpCisKK2FjX3Rvb2xfcHJlZml4PQordGVzdCAtbiAiJGhv
c3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFzLQorCit0ZXN0ICIkc2lsZW50
IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsCisKKworYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4g
IiRhY19wd2QiICYmCithY19sc19kaT1gbHMgLWRpIC5gICYmCithY19wd2RfbHNfZGk9YGNkICIk
YWNfcHdkIiAmJiBscyAtZGkgLmAgfHwKKyAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0
b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgordGVzdCAiWCRhY19sc19kaSIgPSAiWCRhY19wd2Rf
bHNfZGkiIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Yg
d29ya2luZyBkaXJlY3RvcnkiCisKKworIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0
aW9uIHdhcyBub3Qgc3BlY2lmaWVkLgoraWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KKyAgYWNf
c3JjZGlyX2RlZmF1bHRlZD15ZXMKKyAgIyBUcnkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRo
aXMgc2NyaXB0LCB0aGVuIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorICBhY19jb25mZGlyPWAkYXNf
ZGlybmFtZSAtLSAiJGFzX215c2VsZiIgfHwKKyRhc19leHByIFgiJGFzX215c2VsZiIgOiAnWFwo
LipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wp
W14vXScgXHwgXAorCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFzX215
c2VsZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhc19teXNl
bGYiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCSAgICBz
Ly9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXClbXi9dLioveworCSAgICBzLy9cMS8K
KwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkg
IH0KKwkgIC9eWFwoXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiov
Li87IHEnYAorICBzcmNkaXI9JGFjX2NvbmZkaXIKKyAgaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRh
Y191bmlxdWVfZmlsZSI7IHRoZW4KKyAgICBzcmNkaXI9Li4KKyAgZmkKK2Vsc2UKKyAgYWNfc3Jj
ZGlyX2RlZmF1bHRlZD1ubworZmkKK2lmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2Zp
bGUiOyB0aGVuCisgIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHllcyAmJiBzcmNkaXI9
IiRhY19jb25mZGlyIG9yIC4uIgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgc291cmNl
cyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgorZmkKK2FjX21zZz0ic291cmNlcyBhcmUg
aW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9lcyBub3Qgd29yayIKK2FjX2Fic19jb25m
ZGlyPWAoCisJY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIiB8fCBh
c19mbl9lcnJvciAkPyAiJGFjX21zZyIKKwlwd2QpYAorIyBXaGVuIGJ1aWxkaW5nIGluIHBsYWNl
LCBzZXQgc3JjZGlyPS4KK2lmIHRlc3QgIiRhY19hYnNfY29uZmRpciIgPSAiJGFjX3B3ZCI7IHRo
ZW4KKyAgc3JjZGlyPS4KK2ZpCisjIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmFpbGluZyBzbGFzaGVz
IGZyb20gc3JjZGlyLgorIyBEb3VibGUgc2xhc2hlcyBpbiBmaWxlIG5hbWVzIGluIG9iamVjdCBm
aWxlIGRlYnVnZ2luZyBpbmZvCisjIG1lc3MgdXAgTS14IGdkYiBpbiBFbWFjcy4KK2Nhc2UgJHNy
Y2RpciBpbgorKi8pIHNyY2Rpcj1gZXhwciAiWCRzcmNkaXIiIDogJ1hcKC4qW14vXVwpJyBcfCAi
WCRzcmNkaXIiIDogJ1hcKC4qXCknYDs7Citlc2FjCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91
c192YXJzOyBkbworICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9
CisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQorICBldmFsIGFjX2N2
X2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9CisgIGV2YWwgYWNfY3ZfZW52XyR7
YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQorZG9uZQorCisjCisjIFJlcG9ydCB0aGUgLS1oZWxw
IG1lc3NhZ2UuCisjCitpZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJsb25nIjsgdGhlbgorICAj
IE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3Qg
bGVzcyBpbXBvc2luZy4KKyAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJp
bmcgaW4gdGhlIEEvVVggMy4xIHNoLgorICBjYXQgPDxfQUNFT0YKK1xgY29uZmlndXJlJyBjb25m
aWd1cmVzIFhlbiBIeXBlcnZpc29yIDQuMiB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3Rl
bXMuCisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgorCitUbyBhc3NpZ24g
ZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVt
IGFzCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRo
ZSB1c2VmdWwgdmFyaWFibGVzLgorCitEZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNp
ZmllZCBpbiBicmFja2V0cy4KKworQ29uZmlndXJhdGlvbjoKKyAgLWgsIC0taGVscCAgICAgICAg
ICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgICAgIC0taGVscD1zaG9ydCAgICAg
ICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQorICAgICAgLS1oZWxw
PXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQg
cGFja2FnZXMKKyAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9y
bWF0aW9uIGFuZCBleGl0CisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBc
YGNoZWNraW5nIC4uLicgbWVzc2FnZXMKKyAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUg
dGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQorICAtQywgLS1jb25maWctY2FjaGUgICAg
ICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJworICAtbiwgLS1uby1jcmVh
dGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcworICAgICAgLS1zcmNkaXI9RElS
ICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10K
KworSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLXByZWZpeD1QUkVGSVggICAgICAgICBp
bnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KKyAgLS1leGVjLXByZWZpeD1F
UFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KKworQnkgZGVmYXVsdCwgXGBtYWtl
IGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCitcYCRhY19kZWZhdWx0X3By
ZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lm
eQorYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4
JyB1c2luZyBcYC0tcHJlZml4JywKK2ZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCisK
K0ZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgorCitGaW5lIHR1bmlu
ZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLWJpbmRpcj1ESVIgICAgICAg
ICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KKyAgLS1zYmluZGlyPURJUiAgICAg
ICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCisgIC0tbGliZXhl
Y2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KKyAg
LS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BS
RUZJWC9ldGNdCisgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0
dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCisgIC0tbG9jYWxzdGF0ZWRpcj1ESVIg
ICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KKyAgLS1saWJk
aXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KKyAg
LS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQor
ICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vz
ci9pbmNsdWRlXQorICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFkLW9ubHkgYXJjaC4taW5k
ZXBlbmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdCisgIC0tZGF0YWRpcj1ESVIgICAgICAg
ICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJd
CisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RE
SVIvaW5mb10KKyAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxlLWRlcGVuZGVudCBkYXRh
IFtEQVRBUk9PVERJUi9sb2NhbGVdCisgIC0tbWFuZGlyPURJUiAgICAgICAgICAgIG1hbiBkb2N1
bWVudGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCisgIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRv
Y3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL3hlbi1oeXBlcnZpc29yXQorICAtLWh0
bWxkaXI9RElSICAgICAgICAgICBodG1sIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1kdmlk
aXI9RElSICAgICAgICAgICAgZHZpIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1wZGZkaXI9
RElSICAgICAgICAgICAgcGRmIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KKyAgLS1wc2Rpcj1ESVIg
ICAgICAgICAgICAgcHMgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorX0FDRU9GCisKKyAgY2F0IDw8
XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBm
b3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3Nz
LWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQorX0FDRU9G
CitmaQorCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgorICBjYXNlICRhY19pbml0
X2hlbHAgaW4KKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9m
IFhlbiBIeXBlcnZpc29yIDQuMjoiOzsKKyAgIGVzYWMKKyAgY2F0IDw8XF9BQ0VPRgorCitPcHRp
b25hbCBGZWF0dXJlczoKKyAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVj
b2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucworICAtLWRpc2FibGUtRkVBVFVSRSAgICAg
ICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCisg
IC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgLS1l
bmFibGUteHNtICAgICAgICAgICAgRW5hYmxlIFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1
bHQsIEZsYXNrKQorICAtLWVuYWJsZS1naXRodHRwICAgICAgICBEb3dubG9hZCBHSVQgcmVwb3Np
dG9yaWVzIHZpYSBIVFRQCisgIC0tZGlzYWJsZS1tb25pdG9ycyAgICAgIERpc2FibGUgeGVuc3Rh
dCBhbmQgeGVudG9wIG1vbml0b3JpbmcgdG9vbHMKKyAgLS1lbmFibGUtdnRwbSAgICAgICAgICAg
RW5hYmxlIFZpcnR1YWwgVHJ1c3RlZCBQbGF0Zm9ybSBNb2R1bGUKKyAgLS1lbmFibGUteGFwaSAg
ICAgICAgICAgRW5hYmxlIFhlbiBBUEkgQmluZGluZ3MKKyAgLS1kaXNhYmxlLXB5dGhvbnRvb2xz
ICAgRGlzYWJsZSBQeXRob24gdG9vbHMKKyAgLS1kaXNhYmxlLW9jYW1sdG9vbHMgICAgRGlzYWJs
ZSBPY2FtbCB0b29scworICAtLWVuYWJsZS1taW5pdGVybSAgICAgICBFbmFibGUgbWluaXRlcm0K
KyAgLS1lbmFibGUtbG9tb3VudCAgICAgICAgRW5hYmxlIGxvbW91bnQKKyAgLS1kaXNhYmxlLWRl
YnVnICAgICAgICAgRGlzYWJsZSBkZWJ1ZyBidWlsZCBvZiBYZW4gYW5kIHRvb2xzCisKK1NvbWUg
aW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICBDQyAgICAgICAgICBDIGNvbXBp
bGVyIGNvbW1hbmQKKyAgQ0ZMQUdTICAgICAgQyBjb21waWxlciBmbGFncworICBMREZMQUdTICAg
ICBsaW5rZXIgZmxhZ3MsIGUuZy4gLUw8bGliIGRpcj4gaWYgeW91IGhhdmUgbGlicmFyaWVzIGlu
IGEKKyAgICAgICAgICAgICAgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxsaWIgZGlyPgorICBMSUJT
ICAgICAgICBsaWJyYXJpZXMgdG8gcGFzcyB0byB0aGUgbGlua2VyLCBlLmcuIC1sPGxpYnJhcnk+
CisgIENQUEZMQUdTICAgIChPYmplY3RpdmUpIEMvQysrIHByZXByb2Nlc3NvciBmbGFncywgZS5n
LiAtSTxpbmNsdWRlIGRpcj4gaWYKKyAgICAgICAgICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBh
IG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+CisgIENQUCAgICAgICAgIEMgcHJl
cHJvY2Vzc29yCisgIFBSRVBFTkRfSU5DTFVERVMKKyAgICAgICAgICAgICAgTGlzdCBvZiBpbmNs
dWRlIGZvbGRlcnMgdG8gcHJlcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpCisgIFBSRVBFTkRf
TElCIExpc3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIHByZXBlbmQgdG8gTERGTEFHUyAod2l0aG91
dCAtTCkKKyAgQVBQRU5EX0lOQ0xVREVTCisgICAgICAgICAgICAgIExpc3Qgb2YgaW5jbHVkZSBm
b2xkZXJzIHRvIGFwcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpCisgIEFQUEVORF9MSUIgIExp
c3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIGFwcGVuZCB0byBMREZMQUdTICh3aXRob3V0IC1MKQor
ICBQWVRIT04gICAgICBQYXRoIHRvIHRoZSBQeXRob24gcGFyc2VyCisgIFBFUkwgICAgICAgIFBh
dGggdG8gUGVybCBwYXJzZXIKKyAgQlJDVEwgICAgICAgUGF0aCB0byBicmN0bCB0b29sCisgIElQ
ICAgICAgICAgIFBhdGggdG8gaXAgdG9vbAorICBCSVNPTiAgICAgICBQYXRoIHRvIEJpc29uIHBh
cnNlciBnZW5lcmF0b3IKKyAgRkxFWCAgICAgICAgUGF0aCB0byBGbGV4IGxleGljYWwgYW5hbHlz
ZXIgZ2VuZXJhdG9yCisgIENVUkwgICAgICAgIFBhdGggdG8gY3VybC1jb25maWcgdG9vbAorICBY
TUwgICAgICAgICBQYXRoIHRvIHhtbDItY29uZmlnIHRvb2wKKyAgQkFTSCAgICAgICAgUGF0aCB0
byBiYXNoIHNoZWxsCisgIFhHRVRURVhUICAgIFBhdGggdG8geGdldHR0ZXh0IHRvb2wKKworVXNl
IHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBtYWRlIGJ5IGBjb25maWd1
cmUnIG9yIHRvIGhlbHAKK2l0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5v
bnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KKworUmVwb3J0IGJ1Z3MgdG8gPHhlbi1kZXZlbEBs
aXN0cy54ZW5zb3VyY2UuY29tPi4KK19BQ0VPRgorYWNfc3RhdHVzPSQ/CitmaQorCitpZiB0ZXN0
ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCisgICMgSWYgdGhlcmUgYXJlIHN1
YmRpcnMsIHJlcG9ydCB0aGVpciBzcGVjaWZpYyAtLWhlbHAuCisgIGZvciBhY19kaXIgaW4gOiAk
YWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNfZGlyIiA9IHg6ICYmIGNvbnRpbnVlCisgICAg
dGVzdCAtZCAiJGFjX2RpciIgfHwKKyAgICAgIHsgY2QgIiRzcmNkaXIiICYmIGFjX3B3ZD1gcHdk
YCAmJiBzcmNkaXI9LiAmJiB0ZXN0IC1kICIkYWNfZGlyIjsgfSB8fAorICAgICAgY29udGludWUK
KyAgICBhY19idWlsZGRpcj0uCisKK2Nhc2UgIiRhY19kaXIiIGluCisuKSBhY19kaXJfc3VmZml4
PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKyopCisgIGFj
X2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgCisg
ICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4KKyAgYWNfdG9w
X2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9d
KnwvLi58ZztzfC98fCdgCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4KKyAgIiIpIGFj
X3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OworICAqKSAgYWNfdG9w
X2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsKKyAgZXNhYyA7OworZXNhYwor
YWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCithY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19k
aXJfc3VmZml4CisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OgorYWNfdG9wX2J1aWxkZGly
PSRhY190b3BfYnVpbGRfcHJlZml4CisKK2Nhc2UgJHNyY2RpciBpbgorICAuKSAgIyBXZSBhcmUg
YnVpbGRpbmcgaW4gcGxhY2UuCisgICAgYWNfc3JjZGlyPS4KKyAgICBhY190b3Bfc3JjZGlyPSRh
Y190b3BfYnVpbGRkaXJfc3ViCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZCA7OworICBb
XFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCisgICAgYWNfc3JjZGlyPSRzcmNk
aXIkYWNfZGlyX3N1ZmZpeDsKKyAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIKKyAgICBhY19hYnNf
dG9wX3NyY2Rpcj0kc3JjZGlyIDs7CisgICopICMgUmVsYXRpdmUgbmFtZS4KKyAgICBhY19zcmNk
aXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZmaXgKKyAgICBhY190b3Bf
c3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgorICAgIGFjX2Fic190b3Bfc3JjZGly
PSRhY19wd2QvJHNyY2RpciA7OworZXNhYworYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNk
aXIkYWNfZGlyX3N1ZmZpeAorCisgICAgY2QgIiRhY19kaXIiIHx8IHsgYWNfc3RhdHVzPSQ/OyBj
b250aW51ZTsgfQorICAgICMgQ2hlY2sgZm9yIGd1ZXN0ZWQgY29uZmlndXJlLgorICAgIGlmIHRl
c3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlLmdudSI7IHRoZW4KKyAgICAgIGVjaG8gJiYKKyAg
ICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IiAtLWhlbHA9cmVjdXJzaXZlCisg
ICAgZWxpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4KKyAgICAgIGVjaG8g
JiYKKyAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0taGVscD1yZWN1cnNpdmUK
KyAgICBlbHNlCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBubyBjb25maWd1cmF0
aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19kaXIiID4mMgorICAgIGZpIHx8IGFjX3N0YXR1cz0k
PworICAgIGNkICIkYWNfcHdkIiB8fCB7IGFjX3N0YXR1cz0kPzsgYnJlYWs7IH0KKyAgZG9uZQor
ZmkKKwordGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCitpZiAkYWNf
aW5pdF92ZXJzaW9uOyB0aGVuCisgIGNhdCA8PFxfQUNFT0YKK1hlbiBIeXBlcnZpc29yIGNvbmZp
Z3VyZSA0LjIKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OAorCitDb3B5cmlnaHQgKEMp
IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZ3VyZSBzY3Jp
cHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZ2l2ZXMg
dW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0Lgor
X0FDRU9GCisgIGV4aXQKK2ZpCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
QXV0b2NvbmYgaW5pdGlhbGl6YXRpb24uICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IyMKKworIyBhY19mbl9jX3RyeV9jb21waWxlIExJTkVOTworIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBUcnkgdG8gY29tcGlsZSBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdo
ZXRoZXIgdGhpcyBzdWNjZWVkZWQuCithY19mbl9jX3RyeV9jb21waWxlICgpCit7CisgIGFzX2xp
bmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRh
c19saW5lbm9fc3RhY2sKKyAgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAorICBpZiB7IHsgYWNf
dHJ5PSIkYWNfY29tcGlsZSIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAq
XFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7Owor
ZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAk
YWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAi
JGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAt
cyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNv
bmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAgbXYgLWYgY29uZnRlc3Qu
ZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAm
JiB7CisJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0ZXN0ICEgLXMgY29uZnRl
c3QuZXJyCisgICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRoZW4gOgor
ICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3
YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWFjX3JldHZh
bD0xCitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1
bnNldCBhc19saW5lbm8KKyAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCisKK30gIyBhY19m
bl9jX3RyeV9jb21waWxlCisKKyMgYWNfZm5fY190cnlfY3BwIExJTkVOTworIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIFRyeSB0byBwcmVwcm9jZXNzIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCBy
ZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KK2FjX2ZuX2NfdHJ5X2NwcCAoKQoreworICBh
c19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFj
az0kYXNfbGluZW5vX3N0YWNrCisgIGlmIHsgeyBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFj
X2V4dCIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlf
ZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBh
Y190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9c
IiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2NwcCBjb25m
dGVzdC4kYWNfZXh0IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3Qg
LXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5j
b25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0
LmVyMSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0g
PiBjb25mdGVzdC5pICYmIHsKKwkgdGVzdCAteiAiJGFjX2NfcHJlcHJvY193YXJuX2ZsYWckYWNf
Y193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAgIH07IHRo
ZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJv
Z3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworICAg
IGFjX3JldHZhbD0xCitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0
YWNrOis6fSB1bnNldCBhc19saW5lbm8KKyAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCisK
K30gIyBhY19mbl9jX3RyeV9jcHAKKworIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsIExJ
TkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBIRUFERVIgZXhpc3Rz
LCBnaXZpbmcgYSB3YXJuaW5nIGlmIGl0IGNhbm5vdCBiZSBjb21waWxlZCB1c2luZworIyB0aGUg
aW5jbHVkZSBmaWxlcyBpbiBJTkNMVURFUyBhbmQgc2V0dGluZyB0aGUgY2FjaGUgdmFyaWFibGUg
VkFSCisjIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAoKQorewor
ICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19z
dGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIGlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk
MiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwg
XCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZmkK
K2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsg
fQorZWxzZQorICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgdXNhYmlsaXR5IiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nICQyIHVzYWJpbGl0eS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQK
KyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7
IHRoZW4gOgorICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCitlbHNlCisgIGFjX2hlYWRlcl9jb21w
aWxlcj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg
Y29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQorJGFzX2VjaG8gIiRhY19oZWFkZXJf
Y29tcGlsZXIiID4mNjsgfQorCisjIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgcHJlc2VuY2UiID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgJDIgcHJlc2VuY2UuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhl
biA6CisgIGFjX2hlYWRlcl9wcmVwcm9jPXllcworZWxzZQorICBhY19oZWFkZXJfcHJlcHJvYz1u
bworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVy
X3ByZXByb2MiID4mNQorJGFzX2VjaG8gIiRhY19oZWFkZXJfcHJlcHJvYyIgPiY2OyB9CisKKyMg
U28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPworY2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRh
Y19oZWFkZXJfcHJlcHJvYzokYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAjKCgKKyAgeWVzOm5v
OiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H
OiAkMjogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vz
c29yISIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogYWNjZXB0ZWQgYnkgdGhl
IGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KKyAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBwcm9jZWVk
aW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdB
Uk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjI7fQor
ICAgIDs7CisgIG5vOnllczoqICkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4m
NQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBj
b21waWxlZCIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IFdBUk5JTkc6ICQyOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRl
cnM/IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAgICAgY2hlY2sgZm9yIG1p
c3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQorICAgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9j
dW1lbnRhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogc2VlIHRoZSBB
dXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7fQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQg
Q2Fubm90IEJlIENvbXBpbGVkXCIiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6
ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9Cisg
ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjog
cHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIg
PiYyO30KKyggJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICMjCisjIyBSZXBvcnQgdGhpcyB0byB4ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNl
LmNvbSAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IyMiCisgICAgICkgfCBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKKyAgICA7
OworZXNhYworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0K
K2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBldmFsICIkMz1cJGFjX2hlYWRlcl9jb21waWxlciIKK2ZpCitldmFsIGFj
X3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2ZpCisg
IGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xp
bmVubworCit9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbAorCisjIGFjX2ZuX2NfdHJ5
X3J1biBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gbGluayBjb25m
dGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuIEFzc3VtZXMK
KyMgdGhhdCBleGVjdXRhYmxlcyAqY2FuKiBiZSBydW4uCithY19mbl9jX3RyeV9ydW4gKCkKK3sK
KyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9f
c3RhY2s9JGFzX2xpbmVub19zdGFjaworICBpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2Ug
IigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3Ry
eTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0i
XCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hv
ICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CisgIGFjX3N0
YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAk
YWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7IGFjX3RyeT0nLi9j
b25mdGVzdCRhY19leGVleHQnCisgIHsgeyBjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAq
XGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNf
dHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAg
KGV2YWwgIiRhY190cnkiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNf
c3RhdHVzID0gMDsgfTsgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hv
ICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorICAg
ICAgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14v
fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgICAgYWNfcmV0dmFsPSRhY19zdGF0dXMK
K2ZpCisgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KKyAg
ZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGlu
ZW5vCisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190cnlfcnVu
CisKKyMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSBMSU5FTk8gSEVBREVSIFZBUiBJTkNM
VURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cyBhbmQgY2FuIGJlIGNvbXBpbGVk
IHVzaW5nIHRoZSBpbmNsdWRlIGZpbGVzIGluCisjIElOQ0xVREVTLCBzZXR0aW5nIHRoZSBjYWNo
ZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxl
ICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNf
bGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9B
Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKKyNpbmNs
dWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4g
OgorICBldmFsICIkMz15ZXMiCitlbHNlCisgIGV2YWwgIiQzPW5vIgorZmkKK3JtIC1mIGNvcmUg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2V2
YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQor
ICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19s
aW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUKKworIyBhY19mbl9jX3Ry
eV9saW5rIExJTkVOTworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gbGluayBj
b25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCithY19m
bl9jX3RyeV9saW5rICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5l
bm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgcm0gLWYgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2xp
bmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2Vj
aG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNf
dHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIi
CiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj5j
b25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0
aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBj
YXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIK
KyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFj
X3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16ICIk
YWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAgIH0g
JiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgeworCSB0ZXN0ICIkY3Jvc3NfY29tcGls
aW5nIiA9IHllcyB8fAorCSAkYXNfdGVzdF94IGNvbmZ0ZXN0JGFjX2V4ZWV4dAorICAgICAgIH07
IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQg
cHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKwor
CWFjX3JldHZhbD0xCitmaQorICAjIERlbGV0ZSB0aGUgSVBBL0lQTyAoSW50ZXIgUHJvY2VkdXJh
bCBBbmFseXNpcy9PcHRpbWl6YXRpb24pIGluZm9ybWF0aW9uCisgICMgY3JlYXRlZCBieSB0aGUg
UEdJIGNvbXBpbGVyIChjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vKSwgYXMgaXQgd291bGQKKyAg
IyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFsc28gZGVsZXRlIGEgZGly
ZWN0b3J5IHRoYXQgaXMKKyAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAgV2Ug
ZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgorICBybSAtcmYgY29uZnRlc3Qu
ZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsg
JHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVz
ICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2xpbmsKKworIyBhY19mbl9jX2NoZWNrX3R5
cGUgTElORU5PIFRZUEUgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBUWVBFIGV4aXN0cyBhZnRlciBoYXZp
bmcgaW5jbHVkZWQgSU5DTFVERVMsIHNldHRpbmcgY2FjaGUKKyMgdmFyaWFibGUgVkFSIGFjY29y
ZGluZ2x5LgorYWNfZm5fY19jaGVja190eXBlICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVu
by0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sK
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFs
IFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgZXZhbCAiJDM9bm8iCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0
LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQKK21haW4gKCkKK3sKK2lm
IChzaXplb2YgKCQyKSkKKwkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YK
K2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor
JDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoKCQyKSkpCisJICAgIHJldHVybiAwOwor
ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO
RU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgZXZhbCAiJDM9eWVzIgorZmkKK3JtIC1mIGNvcmUgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1m
IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAor
ZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4m
NjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNl
dCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQorCisjIGFjX2ZuX2NfY2hlY2tf
ZnVuYyBMSU5FTk8gRlVOQyBWQVIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBUZXN0cyB3aGV0aGVyIEZVTkMgZXhpc3RzLCBzZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJs
ZSBWQVIgYWNjb3JkaW5nbHkKK2FjX2ZuX2NfY2hlY2tfZnVuYyAoKQoreworICBhc19saW5lbm89
JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGlu
ZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsg
fQoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l
eHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy8qIERlZmluZSAkMiB0byBhbiBpbm5vY3VvdXMg
dmFyaWFudCwgaW4gY2FzZSA8bGltaXRzLmg+IGRlY2xhcmVzICQyLgorICAgRm9yIGV4YW1wbGUs
IEhQLVVYIDExaSA8bGltaXRzLmg+IGRlY2xhcmVzIGdldHRpbWVvZmRheS4gICovCisjZGVmaW5l
ICQyIGlubm9jdW91c18kMgorCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFj
cm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0
IHdpdGggY2hhciAkMiAoKTsgYmVsb3cuCisgICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2Vy
dC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAgIDxsaW1pdHMuaD4gZXhpc3Rz
IGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCisKKyNpZmRlZiBfX1NURENfXwor
IyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNlCisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlm
CisKKyN1bmRlZiAkMgorCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0
byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo
ZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg
cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIgorI2VuZGlmCitjaGFyICQyICgpOworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l
cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBm
YWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAg
c29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlh
cy4gICovCisjaWYgZGVmaW5lZCBfX3N0dWJfJDIgfHwgZGVmaW5lZCBfX3N0dWJfX18kMgorY2hv
a2UgbWUKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3JldHVybiAkMiAoKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBldmFsICIkMz15ZXMiCitlbHNlCisgIGV2YWwgIiQzPW5vIgorZmkKK3JtIC1mIGNvcmUg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4
dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1Cisk
YXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19s
aW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja19mdW5j
CisKKyMgYWNfZm5fY19maW5kX2ludFhfdCBMSU5FTk8gQklUUyBWQVIKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRmluZHMgYSBzaWduZWQgaW50ZWdlciB0eXBlIHdp
dGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKKyMgYWNjb3JkaW5nbHku
CithY19mbl9jX2ZpbmRfaW50WF90ICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEi
fSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW50JDJf
dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50JDJfdC4uLiAiID4mNjsgfQoraWYg
ZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGV2YWwgIiQzPW5vIgorICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVy
IGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKKyAgICAgIyB0aGFuIGhh
bGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KKyAgICAgZm9yIGFjX3R5cGUgaW4gaW50
JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKKwkgJ2xvbmcgbG9uZyBpbnQnICdzaG9ydCBpbnQnICdz
aWduZWQgY2hhcic7IGRvCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQK
KwkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7CitzdGF0aWMg
aW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAx
IDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKK3Rlc3RfYXJyYXkgWzBdID0gMAorCisgIDsK
KyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor
LyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKKwkgICAgICAgIGVu
dW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7CitzdGF0aWMgaW50IHRlc3Rf
YXJyYXkgWzEgLSAyICogISgoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikgPDwgTikg
LSAxKSAqIDIgKyAxKQorCQkgPCAoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUpIDEgPDwgTikgPDwg
TikgLSAxKSAqIDIgKyAyKSldOwordGVzdF9hcnJheSBbMF0gPSAwCisKKyAgOworICByZXR1cm4g
MDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgor
CitlbHNlCisgIGNhc2UgJGFjX3R5cGUgaW4gIygKKyAgaW50JDJfdCkgOgorICAgIGV2YWwgIiQz
PXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2VzYWMKK2Zp
CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv
bmZ0ZXN0LiRhY19leHQKKyAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsg
dGhlbiA6CisKK2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRvbmUKK2ZpCitldmFsIGFjX3Jlcz1c
JCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNf
bGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30g
IyBhY19mbl9jX2ZpbmRfaW50WF90CisKKyMgYWNfZm5fY19jaGVja19tZW1iZXIgTElORU5PIEFH
R1IgTUVNQkVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyaWVzIHRvIGZpbmQgaWYgdGhlIGZpZWxkIE1FTUJF
UiBleGlzdHMgaW4gdHlwZSBBR0dSLCBhZnRlciBpbmNsdWRpbmcKKyMgSU5DTFVERVMsIHNldHRp
bmcgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19tZW1iZXIg
KCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19s
aW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMi4kMyIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyBmb3IgJDIuJDMuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDQrOn0gZmFsc2U7IHRoZW4g
OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQor
aW50CittYWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChhY19hZ2dyLiQzKQorcmV0
dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBp
bGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDQ9eWVzIgorZWxzZQorICBjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CiskNQoraW50CittYWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChzaXplb2YgYWNf
YWdnci4kMykKK3JldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19m
bl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQ0PXllcyIKK2Vsc2UK
KyAgZXZhbCAiJDQ9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj
X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkNAor
CSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVu
b19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNf
Zm5fY19jaGVja19tZW1iZXIKKworIyBhY19mbl9jX2ZpbmRfdWludFhfdCBMSU5FTk8gQklUUyBW
QVIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZpbmRzIGFuIHVu
c2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRpbmcgY2FjaGUgdmFyaWFi
bGUgVkFSCisjIGFjY29yZGluZ2x5LgorYWNfZm5fY19maW5kX3VpbnRYX3QgKCkKK3sKKyAgYXNf
bGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9
JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciB1aW50JDJfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
dWludCQyX3QuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIkMz1ubyIKKyAgICAgIyBP
cmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxs
eSBzbWFsbGVyCisgICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGgu
CisgICAgIGZvciBhY190eXBlIGluIHVpbnQkMl90ICd1bnNpZ25lZCBpbnQnICd1bnNpZ25lZCBs
b25nIGludCcgXAorCSAndW5zaWduZWQgbG9uZyBsb25nIGludCcgJ3Vuc2lnbmVkIHNob3J0IGlu
dCcgJ3Vuc2lnbmVkIGNoYXInOyBkbworICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19k
ZWZhdWx0CitpbnQKK21haW4gKCkKK3sKK3N0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAh
KCgoJGFjX3R5cGUpIC0xID4+ICgkMiAvIDIgLSAxKSkgPj4gKCQyIC8gMiAtIDEpID09IDMpXTsK
K3Rlc3RfYXJyYXkgWzBdID0gMAorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgY2FzZSAkYWNfdHlwZSBpbiAj
KAorICB1aW50JDJfdCkgOgorICAgIGV2YWwgIiQzPXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2
YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2VzYWMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj
b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICBpZiBldmFsIHRlc3Qg
XCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6CisKK2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRv
bmUKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVz
IiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0g
dW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2ZpbmRfdWludFhfdAorY2F0ID5jb25maWcu
bG9nIDw8X0FDRU9GCitUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5
IGNvbXBpbGVycyB3aGlsZQorcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYg
Y29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KKworSXQgd2FzIGNyZWF0ZWQgYnkgWGVuIEh5cGVy
dmlzb3IgJGFzX21lIDQuMiwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIu
NjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKworICAkICQwICRACisKK19BQ0VPRgor
ZXhlYyA1Pj5jb25maWcubG9nCit7CitjYXQgPDxfQVNVTkFNRQorIyMgLS0tLS0tLS0tICMjCisj
IyBQbGF0Zm9ybS4gIyMKKyMjIC0tLS0tLS0tLSAjIworCitob3N0bmFtZSA9IGAoaG9zdG5hbWUg
fHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAordW5hbWUgLW0gPSBgKHVuYW1lIC1t
KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+
L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2
L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVs
bCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFt
ZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorL2Jpbi91bmFtZSAtWCAgICAgPSBg
KC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCisKKy9iaW4v
YXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAg
IHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2Fy
Y2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvY29udmV4L2dl
dHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsIHx8IGVjaG8g
dW5rbm93bmAKKy91c3IvYmluL2hvc3RpbmZvICAgICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAy
Pi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vbWFjaGluZSAgICAgICAgICAg
PSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAK
Ky91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxs
ICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4v
dW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKworX0FTVU5B
TUUKKworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBp
biAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBh
c19kaXI9LgorICAgICRhc19lY2hvICJQQVRIOiAkYXNfZGlyIgorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKK30gPiY1CisKK2NhdCA+JjUgPDxfQUNFT0YKKworCisjIyAtLS0tLS0tLS0tLSAj
IworIyMgQ29yZSB0ZXN0cy4gIyMKKyMjIC0tLS0tLS0tLS0tICMjCisKK19BQ0VPRgorCisKKyMg
S2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuCisjIFN0cmlwIG91dCAtLW5vLWNyZWF0
ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KKyMgU3RyaXAgb3V0
IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBy
dW5zLgorIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0
ZXJzLgorIyBNYWtlIHR3byBwYXNzZXMgdG8gYWxsb3cgZm9yIHByb3BlciBkdXBsaWNhdGUtYXJn
dW1lbnQgc3VwcHJlc3Npb24uCithY19jb25maWd1cmVfYXJncz0KK2FjX2NvbmZpZ3VyZV9hcmdz
MD0KK2FjX2NvbmZpZ3VyZV9hcmdzMT0KK2FjX211c3Rfa2VlcF9uZXh0PWZhbHNlCitmb3IgYWNf
cGFzcyBpbiAxIDIKK2RvCisgIGZvciBhY19hcmcKKyAgZG8KKyAgICBjYXNlICRhY19hcmcgaW4K
KyAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciop
IGNvbnRpbnVlIDs7CisgICAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkg
fCAtLXF1IHwgLS1xIFwKKyAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNp
bGUgfCAtLXNpbCkKKyAgICAgIGNvbnRpbnVlIDs7CisgICAgKlwnKikKKyAgICAgIGFjX2FyZz1g
JGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgZXNh
YworICAgIGNhc2UgJGFjX3Bhc3MgaW4KKyAgICAxKSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJl
X2FyZ3MwICIgJyRhY19hcmcnIiA7OworICAgIDIpCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29u
ZmlndXJlX2FyZ3MxICIgJyRhY19hcmcnIgorICAgICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVwX25l
eHQgPSB0cnVlOyB0aGVuCisJYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJh
Y2sgdG8gbm9ybWFsLgorICAgICAgZWxzZQorCWNhc2UgJGFjX2FyZyBpbgorCSAgKj0qIHwgLS1j
b25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcCisJICB8IC1lbmFi
bGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcCisJICB8IC1x
IHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNpbCogfCAtdiB8IC12ZXJiKiBcCisJICB8
IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKKwkg
ICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluCisJICAgICAgIiRhY19jb25maWd1cmVf
YXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGludWUgOzsKKwkgICAgZXNhYworCSAgICA7Owor
CSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVlIDs7CisJZXNhYworICAgICAgZmkKKyAgICAg
IGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIKKyAgICAgIDs7Cisg
ICAgZXNhYworICBkb25lCitkb25lCit7IGFjX2NvbmZpZ3VyZV9hcmdzMD07IHVuc2V0IGFjX2Nv
bmZpZ3VyZV9hcmdzMDt9Cit7IGFjX2NvbmZpZ3VyZV9hcmdzMT07IHVuc2V0IGFjX2NvbmZpZ3Vy
ZV9hcmdzMTt9CisKKyMgV2hlbiBpbnRlcnJ1cHRlZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9y
YXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKKyMgY29uZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50
cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGluIHRoZXJlCisjIHdvdWxkIGNhdXNlIHByb2Js
ZW1zIG9yIGxvb2sgdWdseS4KKyMgV0FSTklORzogVXNlICdcJycgdG8gcmVwcmVzZW50IGFuIGFw
b3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLgorIyBXQVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRy
YXAgY29kZSB3aXRoIGEgbmV3bGluZSwgZHVlIHRvIGEgRnJlZUJTRCA0LjAgYnVnLgordHJhcCAn
ZXhpdF9zdGF0dXM9JD8KKyAgIyBTYXZlIGludG8gY29uZmlnLmxvZyBzb21lIGluZm9ybWF0aW9u
IHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcuCisgIHsKKyAgICBlY2hvCisKKyAgICAkYXNf
ZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgQ2FjaGUgdmFyaWFibGVzLiAjIworIyMg
LS0tLS0tLS0tLS0tLS0tLSAjIyIKKyAgICBlY2hvCisgICAgIyBUaGUgZm9sbG93aW5nIHdheSBv
ZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKKygKKyAg
Zm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16
QS1aMC05X10qXCk9LiovXDEvcCdcJydgOyBkbworICAgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcgor
ICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAorICAgICoke2FzX25sfSopCisgICAgICBjYXNlICRhY192
YXIgaW4gIygKKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGlu
ZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFy
IGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKKyAgICAgIGVzYWMKKyAgICAgIGNhc2UgJGFj
X3ZhciBpbiAjKAorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAorICAgICAgQkFTSF9BUkdW
IHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKyAgICAgICopIHsgZXZhbCAkYWNf
dmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7CisgICAgICBlc2FjIDs7CisgICAgZXNhYworICBkb25l
CisgIChzZXQpIDI+JjEgfAorICAgIGNhc2UgJGFzX25sYChhY19zcGFjZT0nXCcnICdcJyc7IHNl
dCkgMj4mMWAgaW4gIygKKyAgICAqJHthc19ubH1hY19zcGFjZT1cICopCisgICAgICBzZWQgLW4g
XAorCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9nOworCSAgcy9eXFwoW18kYXNfY3JfYWxudW1d
Kl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXCcnXFwyJ1wnJy9wIgorICAg
ICAgOzsgIygKKyAgICAqKQorICAgICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18k
YXNfY3JfYWxudW1dKj0vcCIKKyAgICAgIDs7CisgICAgZXNhYyB8CisgICAgc29ydAorKQorICAg
IGVjaG8KKworICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgT3V0cHV0
IHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjIgorICAgIGVjaG8KKyAgICBm
b3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCisgICAgZG8KKyAgICAgIGV2YWwgYWNfdmFsPVwk
JGFjX3ZhcgorICAgICAgY2FzZSAkYWNfdmFsIGluCisgICAgICAqXCdcJycqKSBhY192YWw9YCRh
c19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7
CisgICAgICBlc2FjCisgICAgICAkYXNfZWNobyAiJGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyciCisg
ICAgZG9uZSB8IHNvcnQKKyAgICBlY2hvCisKKyAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmls
ZXMiOyB0aGVuCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
RmlsZSBzdWJzdGl0dXRpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKKyAgICAg
IGVjaG8KKyAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzCisgICAgICBkbworCWV2
YWwgYWNfdmFsPVwkJGFjX3ZhcgorCWNhc2UgJGFjX3ZhbCBpbgorCSpcJ1wnJyopIGFjX3ZhbD1g
JGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJg
OzsKKwllc2FjCisJJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIgorICAgICAgZG9u
ZSB8IHNvcnQKKyAgICAgIGVjaG8KKyAgICBmaQorCisgICAgaWYgdGVzdCAtcyBjb25mZGVmcy5o
OyB0aGVuCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0gIyMKKyMjIGNvbmZkZWZzLmgu
ICMjCisjIyAtLS0tLS0tLS0tLSAjIyIKKyAgICAgIGVjaG8KKyAgICAgIGNhdCBjb25mZGVmcy5o
CisgICAgICBlY2hvCisgICAgZmkKKyAgICB0ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYmCisgICAg
ICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWduYWwiCisgICAgJGFzX2Vj
aG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMiCisgIH0gPiY1CisgIHJtIC1mIGNvcmUgKi5j
b3JlIGNvcmUuY29uZnRlc3QuKiAmJgorICAgIHJtIC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcyog
Y29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKKyAgICBleGl0ICRleGl0X3N0YXR1cworJyAwCitm
b3IgYWNfc2lnbmFsIGluIDEgMiAxMyAxNTsgZG8KKyAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2ln
bmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFsCitkb25lCithY19zaWduYWw9MAorCisjIGNv
bmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBj
YW4gZXhjZWVkLgorcm0gLWYgLXIgY29uZnRlc3QqIGNvbmZkZWZzLmgKKworJGFzX2VjaG8gIi8q
IGNvbmZkZWZzLmggKi8iID4gY29uZmRlZnMuaAorCisjIFByZWRlZmluZWQgcHJlcHJvY2Vzc29y
IHZhcmlhYmxlcy4KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdF
X05BTUUgIiRQQUNLQUdFX05BTUUiCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP
RgorI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgIiRQQUNLQUdFX1RBUk5BTUUiCitfQUNFT0YKKwor
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNL
QUdFX1ZFUlNJT04iCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmlu
ZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIgorX0FDRU9GCisKK2NhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgIiRQQUNLQUdFX0JVR1JF
UE9SVCIKK19BQ0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFBBQ0tB
R0VfVVJMICIkUEFDS0FHRV9VUkwiCitfQUNFT0YKKworCisjIExldCB0aGUgc2l0ZSBmaWxlIHNl
bGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4KKyMgUHJlZmVyIGFu
IGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMu
CithY19zaXRlX2ZpbGUxPU5PTkUKK2FjX3NpdGVfZmlsZTI9Tk9ORQoraWYgdGVzdCAtbiAiJENP
TkZJR19TSVRFIjsgdGhlbgorICAjIFdlIGRvIG5vdCB3YW50IGEgUEFUSCBzZWFyY2ggZm9yIGNv
bmZpZy5zaXRlLgorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgKKyAgICAtKikgIGFjX3NpdGVf
ZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICAgICovKikgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJ
VEU7OworICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7CisgIGVzYWMKK2Vs
aWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisgIGFjX3NpdGVfZmlsZTE9JHByZWZp
eC9zaGFyZS9jb25maWcuc2l0ZQorICBhY19zaXRlX2ZpbGUyPSRwcmVmaXgvZXRjL2NvbmZpZy5z
aXRlCitlbHNlCisgIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZp
Zy5zaXRlCisgIGFjX3NpdGVfZmlsZTI9JGFjX2RlZmF1bHRfcHJlZml4L2V0Yy9jb25maWcuc2l0
ZQorZmkKK2ZvciBhY19zaXRlX2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmls
ZTIiCitkbworICB0ZXN0ICJ4JGFjX3NpdGVfZmlsZSIgPSB4Tk9ORSAmJiBjb250aW51ZQorICBp
ZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFjX3NpdGVfZmlsZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVf
ZmlsZSI7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21l
OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9CisgICAgc2VkICdzL14v
fCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1CisgICAgLiAiJGFjX3NpdGVfZmlsZSIgXAorICAgICAg
fHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBc
YCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoi
ID4mMjt9Cithc19mbl9lcnJvciAkPyAiZmFpbGVkIHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3Np
dGVfZmlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7
IH0KKyAgZmkKK2RvbmUKKworaWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICMgU29t
ZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFs
IGZpbGVzCisgICMgYWN0dWFsbHkpLCBzbyB3ZSBhdm9pZCBkb2luZyB0aGF0LiAgREpHUFAgZW11
bGF0ZXMgaXQgYXMgYSByZWd1bGFyIGZpbGUuCisgIGlmIHRlc3QgL2Rldi9udWxsICE9ICIkY2Fj
aGVfZmlsZSIgJiYgdGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Cisg
ICAgY2FzZSAkY2FjaGVfZmlsZSBpbgorICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICIkY2Fj
aGVfZmlsZSI7OworICAgICAgKikgICAgICAgICAgICAgICAgICAgICAgLiAiLi8kY2FjaGVfZmls
ZSI7OworICAgIGVzYWMKKyAgZmkKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiskYXNfZWNobyAi
JGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAgPiRjYWNoZV9maWxl
CitmaQorCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3QgIiBzeXMvdGltZS5oIgorYXNfZm5f
YXBwZW5kIGFjX2hlYWRlcl9saXN0ICIgdW5pc3RkLmgiCithc19mbl9hcHBlbmQgYWNfZnVuY19s
aXN0ICIgYWxhcm0iCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3QgIiBzdGRsaWIuaCIKK2Fz
X2ZuX2FwcGVuZCBhY19oZWFkZXJfbGlzdCAiIHN5cy9wYXJhbS5oIgorIyBDaGVjayB0aGF0IHRo
ZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhhdmUga2VwdCB0aGUgc2Ft
ZQorIyB2YWx1ZS4KK2FjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQorZm9yIGFjX3ZhciBpbiAkYWNf
cHJlY2lvdXNfdmFyczsgZG8KKyAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFy
fV9zZXQKKyAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBh
Y19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZQorICBldmFsIGFjX25ld192YWw9
XCRhY19lbnZfJHthY192YXJ9X3ZhbHVlCisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQg
aW4KKyAgICBzZXQsKQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBw
cmV2aW91cyBydW4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2Fz
IHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQorICAgICAg
YWNfY2FjaGVfY29ycnVwdGVkPTogOzsKKyAgICAsc2V0KQorICAgICAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBp
biB0aGUgcHJldmlvdXMgcnVuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192
YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CisgICAgICBhY19jYWNo
ZV9jb3JydXB0ZWQ9OiA7OworICAgICwpOzsKKyAgICAqKQorICAgICAgaWYgdGVzdCAieCRhY19v
bGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgorCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVz
cGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLgorCWFjX29sZF92YWxfdz1gZWNobyB4ICRhY19v
bGRfdmFsYAorCWFjX25ld192YWxfdz1gZWNobyB4ICRhY19uZXdfdmFsYAorCWlmIHRlc3QgIiRh
Y19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbgorCSAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBz
aW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAk
YWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGFj
X2NhY2hlX2NvcnJ1cHRlZD06CisJZWxzZQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAk
YWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiB3
YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0
aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGV2YWwgJGFjX3Zhcj1cJGFjX29sZF92YWwKKwlm
aQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIgdmFs
dWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1
ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7fQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogICBjdXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFsJyIgPiY1CiskYXNfZWNo
byAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQorICAgICAg
Zmk7OworICBlc2FjCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1
cy4KKyAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCisgICAgY2FzZSAkYWNfbmV3
X3ZhbCBpbgorICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFjX25ld192YWwi
IHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgKikgYWNfYXJnPSRhY192YXI9JGFj
X25ld192YWwgOzsKKyAgICBlc2FjCisgICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGlu
CisgICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90ZXMg
ZW5zdXJlcyBhY2N1cmFjeS4KKyAgICAgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJn
cyAiICckYWNfYXJnJyIgOzsKKyAgICBlc2FjCisgIGZpCitkb25lCitpZiAkYWNfY2FjaGVfY29y
cnVwdGVkOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
ZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBc
YCRhY19wd2QnOiIgPiYyO30KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhl
IGJ1aWxkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZp
cm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9CisgIGFzX2ZuX2Vycm9yICQ/
ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFy
dCBvdmVyIiAiJExJTkVOTyIgNQorZmkKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBN
YWluIGJvZHkgb2Ygc2NyaXB0LiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworYWNf
ZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFH
UyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRl
c3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQg
JExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKwor
YWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIC4uL2NvbmZpZy9Ub29scy5tayIKKwor
YWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBjb25maWcuaCIKKworCithY19h
dXhfZGlyPQorZm9yIGFjX2RpciBpbiAuICIkc3JjZGlyIi8uOyBkbworICBpZiB0ZXN0IC1mICIk
YWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNf
aW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlm
IHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19k
aXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJy
ZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rp
cj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwg
LWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhl
bgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwg
b3Igc2h0b29sIGluIC4gXCIkc3JjZGlyXCIvLiIgIiRMSU5FTk8iIDUKK2ZpCisKKyMgVGhlc2Ug
dGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAorIyBhbmQg
YXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNl
LgorIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJj
ZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5CisjIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVz
dWFsIGNoYXJhY3RlcnMuCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25m
aWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCithY19jb25maWdfc3ViPSIk
U0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZh
ci4KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNl
IGRvbid0IHVzZSB0aGlzIHZhci4KKworCisKKyMgQ2hlY2sgaWYgQ0ZMQUdTLCBMREZMQUdTLCBM
SUJTLCBDUFBGTEFHUyBvciBDUFAgaXMgc2V0IGFuZCBwcmludCBhIHdhcm5pbmcKKworaWYgdGVz
dCAtbiAiJENDJENGTEFHUyRMREZMQUdTJExJQlMkQ1BQRkxBR1MkQ1BQIjsgdGhlbiA6CisKKyAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFNldHRp
bmcgQ0MsIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIG5vdCBcCity
ZWNvbW1lbmRlZCwgdXNlIFBSRVBFTkRfSU5DTFVERVMsIFBSRVBFTkRfTElCLCBcCitBUFBFTkRf
SU5DTFVERVMgYW5kIEFQUEVORF9MSUIgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLiIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBXQVJOSU5HOiBTZXR0aW5nIENDLCBDRkxBR1MsIExERkxBR1MsIExJQlMs
IENQUEZMQUdTIG9yIENQUCBpcyBub3QgXAorcmVjb21tZW5kZWQsIHVzZSBQUkVQRU5EX0lOQ0xV
REVTLCBQUkVQRU5EX0xJQiwgXAorQVBQRU5EX0lOQ0xVREVTIGFuZCBBUFBFTkRfTElCIGluc3Rl
YWQgd2hlbiBwb3NzaWJsZS4iID4mMjt9CisKK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAg
JENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0
LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdT
ICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBp
bGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZp
eCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4
fWdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkg
JHthY190b29sX3ByZWZpeH1nY2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9
IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYg
dGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2Vy
IG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF
UEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0
ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAk
YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJHthY190b29sX3ByZWZpeH1nY2Mi
CisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBk
b25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRl
c3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19D
QyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi
Z2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBn
Y2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNf
d29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVu
IDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFj
X2N0X0NDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRo
ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ
QVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lG
UworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBp
biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iZ2NjIgorICAg
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQor
SUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0ND
CitpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19j
dF9DQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0
ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAgICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAk
Y3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90
IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5J
Tkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYy
O30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENDPSRhY19jdF9DQworICBmaQor
ZWxzZQorICBDQz0iJGFjX2N2X3Byb2dfQ0MiCitmaQorCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVu
CisgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgICMgRXh0
cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1jYyIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1j
YzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193
b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVu
CisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qu
CitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGly
IGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYm
IGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVu
c2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg
JiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAg
ICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgorICAgICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lG
UworCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4m
NQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQor
ZmkKKworCisgIGZpCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSBjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFs
c2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0
IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3Zl
cnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3Byb2dfcmVqZWN0ZWQ9bm8KK2FzX3NhdmVfSUZT
PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElG
Uz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig
YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0
ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGlmIHRlc3QgIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNiL2NjIjsgdGhlbgorICAgICAgIGFjX3By
b2dfcmVqZWN0ZWQ9eWVzCisgICAgICAgY29udGludWUKKyAgICAgZmkKKyAgICBhY19jdl9wcm9n
X0NDPSJjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu
ZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitk
b25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworaWYgdGVzdCAkYWNfcHJvZ19yZWplY3Rl
ZCA9IHllczsgdGhlbgorICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBhdGgsIHNvIG1ha2Ug
c3VyZSB3ZSBuZXZlciB1c2UgaXQuCisgIHNldCBkdW1teSAkYWNfY3ZfcHJvZ19DQworICBzaGlm
dAorICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNv
bXBpbGVyIGZyb20gdGhlIGJvZ3VzIG9uZS4KKyAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2Ft
ZSBiYXNlbmFtZSwgc28gdGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuCisgICAgIyBmaXJzdCBpZiB3
ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVsbCBmaWxlIG5hbWUuCisg
ICAgc2hpZnQKKyAgICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193b3JkJHsxKycgJ30kQCIK
KyAgZmkKK2ZpCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
Q0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4m
NjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBpZiB0ZXN0IC1uICIk
YWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGNsLmV4ZQorICBkbworICAg
ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBz
byBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29s
X3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxz
ZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3Qg
LW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgor
ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0
IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf
ZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgdGVzdCAtbiAiJENDIiAmJiBicmVhaworICBk
b25lCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBhY19jdF9DQz0kQ0MKKyAgZm9yIGFj
X3Byb2cgaW4gY2wuZXhlCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19w
cm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAk
YWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y
ICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1u
ICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBM
ZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNf
cHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25l
CisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9DQz0kYWNfY3ZfcHJv
Z19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKKyRhc19l
Y2hvICIkYWNfY3RfQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2Zp
CisKKworICB0ZXN0IC1uICIkYWNfY3RfQ0MiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAi
eCRhY19jdF9DQyIgPSB4OyB0aGVuCisgICAgQ0M9IiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3Nz
X2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVm
aXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1
c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Cith
Y190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDQz0kYWNfY3RfQ0MKKyAgZmkKK2ZpCisK
K2ZpCisKKwordGVzdCAteiAiJENDIiAmJiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6
IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRh
YmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9y
ZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorCisjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29tcGlsZXIuCiskYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZXJzaW9uIiA+JjUKK3NldCBYICRhY19jb21waWxl
CithY19jb21waWxlcj0kMgorZm9yIGFjX29wdGlvbiBpbiAtLXZlcnNpb24gLXYgLVYgLXF2ZXJz
aW9uOyBkbworICB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiCitjYXNl
ICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190
cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89
IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNo
byAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21waWxlciAkYWNfb3B0aW9u
ID4mNSIpIDI+Y29uZnRlc3QuZXJyCisgIGFjX3N0YXR1cz0kPworICBpZiB0ZXN0IC1zIGNvbmZ0
ZXN0LmVycjsgdGhlbgorICAgIHNlZCAnMTBhXAorLi4uIHJlc3Qgb2Ygc3RkZXJyIG91dHB1dCBk
ZWxldGVkIC4uLgorICAgICAgICAgMTBxJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAg
IGNhdCBjb25mdGVzdC5lcjEgPiY1CisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVz
dC5lcnIKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFj
X3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KK2RvbmUKKworY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAq
LworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCithY19j
bGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcworYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVh
bl9maWxlcyBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGIub3V0IgorIyBUcnkgdG8gY3JlYXRlIGFu
IGV4ZWN1dGFibGUgd2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEub3V0LgorIyBJdCB3aWxs
IGhlbHAgdXMgZGlhZ25vc2UgYnJva2VuIGNvbXBpbGVycywgYW5kIGZpbmRpbmcgb3V0IGFuIGlu
dHVpdGlvbgorIyBvZiBleGVleHQuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQorJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3Jrcy4uLiAiID4mNjsgfQor
YWNfbGlua19kZWZhdWx0PWAkYXNfZWNobyAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRl
c3RbXiBdKi8vJ2AKKworIyBUaGUgcG9zc2libGUgb3V0cHV0IGZpbGVzOgorYWNfZmlsZXM9ImEu
b3V0IGNvbmZ0ZXN0LmV4ZSBjb25mdGVzdCBhLmV4ZSBhX291dC5leGUgYi5vdXQgY29uZnRlc3Qu
KiIKKworYWNfcm1maWxlcz0KK2ZvciBhY19maWxlIGluICRhY19maWxlcworZG8KKyAgY2FzZSAk
YWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRi
IHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8
ICoub2JqICkgOzsKKyAgICAqICkgYWNfcm1maWxlcz0iJGFjX3JtZmlsZXMgJGFjX2ZpbGUiOzsK
KyAgZXNhYworZG9uZQorcm0gLWYgJGFjX3JtZmlsZXMKKworaWYgeyB7IGFjX3RyeT0iJGFjX2xp
bmtfZGVmYXVsdCIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBh
Y190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYwor
ZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5
X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xp
bmtfZGVmYXVsdCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0
dXMgPSAwOyB9OyB0aGVuIDoKKyAgIyBBdXRvY29uZi0yLjEzIGNvdWxkIHNldCB0aGUgYWNfY3Zf
ZXhlZXh0IHZhcmlhYmxlIHRvIGBubycuCisjIFNvIGlnbm9yZSBhIHZhbHVlIG9mIGBubycsIG90
aGVyd2lzZSB0aGlzIHdvdWxkIGxlYWQgdG8gYEVYRUVYVCA9IG5vJworIyBpbiBhIE1ha2VmaWxl
LiAgV2Ugc2hvdWxkIG5vdCBvdmVycmlkZSBhY19jdl9leGVleHQgaWYgaXQgd2FzIGNhY2hlZCwK
KyMgc28gdGhhdCB0aGUgdXNlciBjYW4gc2hvcnQtY2lyY3VpdCB0aGlzIHRlc3QgZm9yIGNvbXBp
bGVycyB1bmtub3duIHRvCisjIEF1dG9jb25mLgorZm9yIGFjX2ZpbGUgaW4gJGFjX2ZpbGVzICcn
CitkbworICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKKyAgY2FzZSAkYWNfZmlsZSBp
bgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lN
IHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkK
Kwk7OworICAgIFthYl0ub3V0ICkKKwkjIFdlIGZvdW5kIHRoZSBkZWZhdWx0IGV4ZWN1dGFibGUs
IGJ1dCBleGVleHQ9JycgaXMgbW9zdAorCSMgY2VydGFpbmx5IHJpZ2h0LgorCWJyZWFrOzsKKyAg
ICAqLiogKQorCWlmIHRlc3QgIiR7YWNfY3ZfZXhlZXh0K3NldH0iID0gc2V0ICYmIHRlc3QgIiRh
Y19jdl9leGVleHQiICE9IG5vOworCXRoZW4gOjsgZWxzZQorCSAgIGFjX2N2X2V4ZWV4dD1gZXhw
ciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAorCWZpCisJIyBXZSBzZXQgYWNfY3ZfZXhl
ZXh0IGhlcmUgYmVjYXVzZSB0aGUgbGF0ZXIgdGVzdCBmb3IgaXQgaXMgbm90CisJIyBzYWZlOiBj
cm9zcyBjb21waWxlcnMgbWF5IG5vdCBhZGQgdGhlIHN1ZmZpeCBpZiBnaXZlbiBhbiBgLW8nCisJ
IyBhcmd1bWVudCwgc28gd2UgbWF5IG5lZWQgdG8ga25vdyBpdCBhdCB0aGF0IHBvaW50IGFscmVh
ZHkuCisJIyBFdmVuIGlmIHRoaXMgc2VjdGlvbiBsb29rcyBjcnVmdHk6IGl0IGhhcyB0aGUgYWR2
YW50YWdlIG9mCisJIyBhY3R1YWxseSB3b3JraW5nLgorCWJyZWFrOzsKKyAgICAqICkKKwlicmVh
azs7CisgIGVzYWMKK2RvbmUKK3Rlc3QgIiRhY19jdl9leGVleHQiID0gbm8gJiYgYWNfY3ZfZXhl
ZXh0PQorCitlbHNlCisgIGFjX2ZpbGU9JycKK2ZpCitpZiB0ZXN0IC16ICIkYWNfZmlsZSI7IHRo
ZW4gOgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
bm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBw
cm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCit7
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFj
X3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYy
O30KK2FzX2ZuX2Vycm9yIDc3ICJDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMK
K1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMi
ID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91dHB1dCBm
aWxlIG5hbWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVs
dCBvdXRwdXQgZmlsZSBuYW1lLi4uICIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhY19maWxl
IiA+JjY7IH0KK2FjX2V4ZWV4dD0kYWNfY3ZfZXhlZXh0CisKK3JtIC1mIC1yIGEub3V0IGEub3V0
LmRTWU0gYS5leGUgY29uZnRlc3QkYWNfY3ZfZXhlZXh0IGIub3V0CithY19jbGVhbl9maWxlcz0k
YWNfY2xlYW5fZmlsZXNfc2F2ZQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMuLi4gIiA+JjY7IH0KK2lmIHsgeyBh
Y190cnk9IiRhY19saW5rIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpc
XCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citl
c2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRh
Y190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIk
YWNfbGluayIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMg
PSAwOyB9OyB0aGVuIDoKKyAgIyBJZiBib3RoIGBjb25mdGVzdC5leGUnIGFuZCBgY29uZnRlc3Qn
IGFyZSBgcHJlc2VudCcgKHdlbGwsIG9ic2VydmFibGUpCisjIGNhdGNoIGBjb25mdGVzdC5leGUn
LiAgRm9yIGluc3RhbmNlIHdpdGggQ3lnd2luLCBgbHMgY29uZnRlc3QnIHdpbGwKKyMgd29yayBw
cm9wZXJseSAoaS5lLiwgcmVmZXIgdG8gYGNvbmZ0ZXN0LmV4ZScpLCB3aGlsZSBpdCB3b24ndCB3
aXRoCisjIGBybScuCitmb3IgYWNfZmlsZSBpbiBjb25mdGVzdC5leGUgY29uZnRlc3QgY29uZnRl
c3QuKjsgZG8KKyAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCisgIGNhc2UgJGFjX2Zp
bGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICou
eFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9i
aiApIDs7CisgICAgKi4qICkgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmlsZSIgOiAnW14uXSpc
KFwuLipcKSdgCisJICBicmVhazs7CisgICAgKiApIGJyZWFrOzsKKyAgZXNhYworZG9uZQorZWxz
ZQorICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGlu
IFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2Qn
OiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0
YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9y
ZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0JGFj
X2N2X2V4ZWV4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRhY19jdl9leGVleHQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9leGVleHQiID4mNjsgfQor
CitybSAtZiBjb25mdGVzdC4kYWNfZXh0CitFWEVFWFQ9JGFjX2N2X2V4ZWV4dAorYWNfZXhlZXh0
PSRFWEVFWFQKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7
CitGSUxFICpmID0gZm9wZW4gKCJjb25mdGVzdC5vdXQiLCAidyIpOworIHJldHVybiBmZXJyb3Ig
KGYpIHx8IGZjbG9zZSAoZikgIT0gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCith
Y19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGNvbmZ0ZXN0Lm91dCIKKyMgQ2hlY2sgdGhh
dCB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2FuIHJ1bi4gIElmIG5vdCwg
ZWl0aGVyCisjIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNyb3NzIGNvbXBpbGUuCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg
d2UgYXJlIGNyb3NzIGNvbXBpbGluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy
IHdlIGFyZSBjcm9zcyBjb21waWxpbmcuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiRjcm9zc19jb21w
aWxpbmciICE9IHllczsgdGhlbgorICB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2UgIigoJGFj
X3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Cisg
ICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNf
dHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CisgIGFjX3N0YXR1cz0k
PworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3Rh
dHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICBpZiB7IGFjX3RyeT0nLi9jb25m
dGVzdCRhY19jdl9leGVleHQnCisgIHsgeyBjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAq
XGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNf
dHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAg
KGV2YWwgIiRhY190cnkiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNf
c3RhdHVzID0gMDsgfTsgfTsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGluZz1ubworICBlbHNlCisg
ICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgorCWNyb3NzX2NvbXBp
bGluZz15ZXMKKyAgICBlbHNlCisJeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJv
cjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biBDIGNv
bXBpbGVkIHByb2dyYW1zLgorSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBcYC0t
aG9zdCcuCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsg
fQorICAgIGZpCisgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRjcm9zc19jb21waWxpbmciID4mNQorJGFzX2VjaG8gIiRjcm9zc19jb21w
aWxpbmciID4mNjsgfQorCitybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0JGFjX2N2X2V4
ZWV4dCBjb25mdGVzdC5vdXQKK2FjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZm
aXggb2Ygb2JqZWN0IGZpbGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdWZmaXgg
b2Ygb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X29iamV4dCs6fSBmYWxzZTsg
dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYg
Y29uZnRlc3QubyBjb25mdGVzdC5vYmoKK2lmIHsgeyBhY190cnk9IiRhY19jb21waWxlIgorY2Fz
ZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNf
dHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hv
PSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2Vj
aG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY29tcGlsZSIpIDI+JjUKKyAg
YWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk
PyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAg
Zm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QubyBjb25mdGVzdC5vYmogY29uZnRlc3QuKjsgZG8KKyAg
dGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlOworICBjYXNlICRhY19maWxlIGluCisgICAg
Ki4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJi
IHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNICkgOzsKKyAgICAqKSBhY19jdl9vYmpl
eHQ9YGV4cHIgIiRhY19maWxlIiA6ICcuKlwuXCguKlwpJ2AKKyAgICAgICBicmVhazs7CisgIGVz
YWMKK2RvbmUKK2Vsc2UKKyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIg
PiY1CitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKK3sgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQor
JGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJy
b3IgJD8gImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21w
aWxlCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQor
ZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfb2Jq
ZXh0IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfb2JqZXh0IiA+JjY7IH0KK09CSkVYVD0kYWNfY3Zf
b2JqZXh0CithY19vYmpleHQ9JE9CSkVYVAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGls
ZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdO
VSBDIGNvbXBpbGVyLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfY29tcGlsZXJfZ251Kzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLworCitpbnQKK21haW4gKCkKK3sKKyNpZm5kZWYgX19HTlVDX18KKyAgICAgICBjaG9rZSBt
ZQorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf
Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jb21waWxlcl9nbnU9eWVzCitlbHNlCisg
IGFjX2NvbXBpbGVyX2dudT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0
LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfY3ZfY19jb21waWxlcl9nbnU9JGFjX2Nv
bXBpbGVyX2dudQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Nf
Y29tcGlsZXJfZ251IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllczsgdGhl
bgorICBHQ0M9eWVzCitlbHNlCisgIEdDQz0KK2ZpCithY190ZXN0X0NGTEFHUz0ke0NGTEFHUytz
ZXR9CithY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWciID4mNQorJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAiID4mNjsgfQoraWYgJHth
Y19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcKKyAg
IGFjX2Nfd2Vycm9yX2ZsYWc9eWVzCisgICBhY19jdl9wcm9nX2NjX2c9bm8KKyAgIENGTEFHUz0i
LWciCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBl
bmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7
Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
YWNfY3ZfcHJvZ19jY19nPXllcworZWxzZQorICBDRkxBR1M9IiIKKyAgICAgIGNhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNf
Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGFjX2Nfd2Vycm9y
X2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZworCSBDRkxBR1M9Ii1nIgorCSBjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfcHJvZ19jY19nPXll
cworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl
c3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl
eHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0
LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2
ZV9jX3dlcnJvcl9mbGFnCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ciID4mNQorJGFzX2VjaG8gIiRhY19jdl9wcm9n
X2NjX2ciID4mNjsgfQoraWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbgorICBD
RkxBR1M9JGFjX3NhdmVfQ0ZMQUdTCitlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsg
dGhlbgorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIENGTEFHUz0iLWcgLU8yIgor
ICBlbHNlCisgICAgQ0ZMQUdTPSItZyIKKyAgZmkKK2Vsc2UKKyAgaWYgdGVzdCAiJEdDQyIgPSB5
ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0KKyAgZmkKK2Zp
Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk
Q0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X3By
b2dfY2NfYzg5Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
K2Vsc2UKKyAgYWNfY3ZfcHJvZ19jY19jODk9bm8KK2FjX3NhdmVfQ0M9JENDCitjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLyogTW9zdCBvZiB0aGUgZm9sbG93aW5n
IHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mgc3JjL2NvbmYuc2guICAqLworc3RydWN0
IGJ1ZiB7IGludCB4OyB9OworRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0
IHN0YXQgKiwgaW50KTsKK3N0YXRpYyBjaGFyICplIChwLCBpKQorICAgICBjaGFyICoqcDsKKyAg
ICAgaW50IGk7Cit7CisgIHJldHVybiBwW2ldOworfQorc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAo
KmcpIChjaGFyICoqLCBpbnQpLCBjaGFyICoqcCwgLi4uKQoreworICBjaGFyICpzOworICB2YV9s
aXN0IHY7CisgIHZhX3N0YXJ0ICh2LHApOworICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOwor
ICB2YV9lbmQgKHYpOworICByZXR1cm4gczsKK30KKworLyogT1NGIDQuMCBDb21wYXEgY2MgaXMg
c29tZSBzb3J0IG9mIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQuICBJdCBoYXMKKyAgIGZ1bmN0aW9u
IHByb3RvdHlwZXMgYW5kIHN0dWZmLCBidXQgbm90ICdceEhIJyBoZXggY2hhcmFjdGVyIGNvbnN0
YW50cy4KKyAgIFRoZXNlIGRvbid0IHByb3Zva2UgYW4gZXJyb3IgdW5mb3J0dW5hdGVseSwgaW5z
dGVhZCBhcmUgc2lsZW50bHkgdHJlYXRlZAorICAgYXMgJ3gnLiAgVGhlIGZvbGxvd2luZyBpbmR1
Y2VzIGFuIGVycm9yLCB1bnRpbCAtc3RkIGlzIGFkZGVkIHRvIGdldAorICAgcHJvcGVyIEFOU0kg
bW9kZS4gIEN1cmlvdXNseSAnXHgwMCchPSd4JyBhbHdheXMgY29tZXMgb3V0IHRydWUsIGZvciBh
bgorICAgYXJyYXkgc2l6ZSBhdCBsZWFzdC4gIEl0J3MgbmVjZXNzYXJ5IHRvIHdyaXRlICdceDAw
Jz09MCB0byBnZXQgc29tZXRoaW5nCisgICB0aGF0J3MgdHJ1ZSBvbmx5IHdpdGggLXN0ZC4gICov
CitpbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAgPyAxIDogLTFdOworCisvKiBJQk0gQyA2
IGZvciBBSVggaXMgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0IHJlcGxhY2VzIG1hY3Jv
IHBhcmFtZXRlcnMKKyAgIGluc2lkZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzLiAg
Ki8KKyNkZWZpbmUgRk9PKHgpICd4JworaW50IHhsYzZfY2NfYXJyYXlbRk9PKGEpID09ICd4JyA/
IDEgOiAtMV07CisKK2ludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOworc3RydWN0IHMxIHtpbnQg
KCpmKSAoaW50IGEpO307CitzdHJ1Y3QgczIge2ludCAoKmYpIChkb3VibGUgYSk7fTsKK2ludCBw
YWlybmFtZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0
YXQgKiwgaW50KSwgaW50LCBpbnQpOworaW50IGFyZ2M7CitjaGFyICoqYXJndjsKK2ludAorbWFp
biAoKQoreworcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9IGFyZ3ZbMF0gIHx8ICBmIChlLCBhcmd2
LCAxKSAhPSBhcmd2WzFdOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitmb3IgYWNfYXJn
IGluICcnIC1xbGFuZ2x2bD1leHRjODkgLXFsYW5nbHZsPWFuc2kgLXN0ZCBcCisJLUFlICItQWEg
LURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VYVEVOU0lPTlNfXyIKK2RvCisgIENDPSIkYWNfc2F2
ZV9DQyAkYWNfYXJnIgorICBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6
CisgIGFjX2N2X3Byb2dfY2NfYzg5PSRhY19hcmcKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfb2JqZXh0CisgIHRlc3QgIngkYWNfY3ZfcHJvZ19jY19jODkiICE9ICJ4
bm8iICYmIGJyZWFrCitkb25lCitybSAtZiBjb25mdGVzdC4kYWNfZXh0CitDQz0kYWNfc2F2ZV9D
QworCitmaQorIyBBQ19DQUNIRV9WQUwKK2Nhc2UgIngkYWNfY3ZfcHJvZ19jY19jODkiIGluCisg
IHgpCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
IG5vbmUgbmVlZGVkIiA+JjUKKyRhc19lY2hvICJub25lIG5lZWRlZCIgPiY2OyB9IDs7CisgIHhu
bykKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
dW5zdXBwb3J0ZWQiID4mNQorJGFzX2VjaG8gInVuc3VwcG9ydGVkIiA+JjY7IH0gOzsKKyAgKikK
KyAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX2M4OSIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjUKKyRh
c19lY2hvICIkYWNfY3ZfcHJvZ19jY19jODkiID4mNjsgfSA7OworZXNhYworaWYgdGVzdCAieCRh
Y19jdl9wcm9nX2NjX2M4OSIgIT0geG5vOyB0aGVuIDoKKworZmkKKworYWNfZXh0PWMKK2FjX2Nw
cD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1Mg
Y29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0
ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1Jwor
YWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKK2FjX2V4dD1jCithY19j
cHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdT
IGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4
dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScK
K2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9j
ZXNzb3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9j
ZXNzb3IuLi4gIiA+JjY7IH0KKyMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJl
Y3RvcnkuCitpZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgorICBDUFA9
CitmaQoraWYgdGVzdCAteiAiJENQUCI7IHRoZW4KKyAgaWYgJHthY19jdl9wcm9nX0NQUCs6fSBm
YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAj
IERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKKyAgICBmb3Ig
Q1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3BwIgorICAg
IGRvCisgICAgICBhY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxh
ZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdj
Yywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIg
d29ya3MuCisgICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBp
cyBkZWZpbmVkLCBzaW5jZQorICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5k
aW5nIGNvbXBpbGVycy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJv
dWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5
bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisgIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp
ZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNlCisjIGluY2x1ZGUgPGFz
c2VydC5oPgorI2VuZGlmCisJCSAgICAgU3ludGF4IGVycm9yCitfQUNFT0YKK2lmIGFjX2ZuX2Nf
dHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgICMgQnJva2VuOiBmYWlscyBvbiB2
YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0Lmkg
Y29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hl
Y2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBo
b3cuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgorX0FDRU9GCitp
ZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKyAgIyBCcm9rZW46IHN1Y2Nlc3Mg
b24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgICMgUGFzc2VzIGJvdGggdGVzdHMu
CithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0
LmkgY29uZnRlc3QuJGFjX2V4dAorCitkb25lCisjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BS
RVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KK3JtIC1mIGNvbmZ0ZXN0
LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRhY19wcmVwcm9jX29rOyB0aGVu
IDoKKyAgYnJlYWsKK2ZpCisKKyAgICBkb25lCisgICAgYWNfY3ZfcHJvZ19DUFA9JENQUAorCitm
aQorICBDUFA9JGFjX2N2X3Byb2dfQ1BQCitlbHNlCisgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKK2Zp
Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENQUCIg
PiY1CiskYXNfZWNobyAiJENQUCIgPiY2OyB9CithY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNf
Y19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUg
dGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJl
c2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2Vy
dC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAjIDxsaW1pdHMuaD4gZXhpc3Rz
IGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUg
cnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVz
dCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2Uu
CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNl
bHNlCisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAgU3ludGF4IGVycm9yCitf
QUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgICMg
QnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNh
bmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCisgICMgY2Fu
IGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25leGlz
dGVudC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
IyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgICMg
UGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCitkb25lCisjIEJlY2F1c2Ug
b2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBl
ZC4KK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRh
Y19wcmVwcm9jX29rOyB0aGVuIDoKKworZWxzZQorICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIk
YXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJDIHBy
ZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKK1NlZSBcYGNvbmZpZy5sb2cn
IGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitmaQorCithY19leHQ9YworYWNfY3Bw
PSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBj
b25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQg
JENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCith
Y19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMg
bG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdyZXAgdGhh
dCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhf
R1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UK
KyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBS
T0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9y
IGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0k
YXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNf
cHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl
Y3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19w
cm9nJGFjX2V4ZWNfZXh0IgorICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0aF9HUkVQIiAmJiAkYXNf
dGVzdF94ICIkYWNfcGF0aF9HUkVQIjsgfSB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFj
X3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBH
TlUgJGFjX3BhdGhfR1JFUAorY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBp
bgorKkdOVSopCisgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQ
X2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJj
b25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25m
dGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0
LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdH
UkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUg
Jy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2
L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9k
ZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBh
Y19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQ
X21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAg
bG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRo
X0dSRVAiCisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAx
MCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3Qg
JGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNv
bmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNf
cGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZT
PSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9HUkVQIjsgdGhlbgorICAg
IGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBB
VEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQor
ICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfR1JFUCIgPiY1CiskYXNfZWNo
byAiJGFjX2N2X3BhdGhfR1JFUCIgPiY2OyB9CisgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKKwor
Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBl
Z3JlcCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZWdyZXAuLi4gIiA+JjY7IH0KK2lm
ICR7YWNfY3ZfcGF0aF9FR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CitlbHNlCisgIGlmIGVjaG8gYSB8ICRHUkVQIC1FICcoYXxiKScgPi9kZXYvbnVs
bCAyPiYxCisgICB0aGVuIGFjX2N2X3BhdGhfRUdSRVA9IiRHUkVQIC1FIgorICAgZWxzZQorICAg
ICBpZiB0ZXN0IC16ICIkRUdSRVAiOyB0aGVuCisgIGFjX3BhdGhfRUdSRVBfZm91bmQ9ZmFsc2UK
KyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBS
T0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9y
IGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0k
YXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNf
cHJvZyBpbiBlZ3JlcDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi
bGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfRUdSRVA9IiRhc19kaXIvJGFjX3Byb2ck
YWNfZXhlY19leHQiCisgICAgICB7IHRlc3QgLWYgIiRhY19wYXRoX0VHUkVQIiAmJiAkYXNfdGVz
dF94ICIkYWNfcGF0aF9FR1JFUCI7IH0gfHwgY29udGludWUKKyMgQ2hlY2sgZm9yIEdOVSBhY19w
YXRoX0VHUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdO
VSAkYWNfcGF0aF9FR1JFUAorY2FzZSBgIiRhY19wYXRoX0VHUkVQIiAtLXZlcnNpb24gMj4mMWAg
aW4KKypHTlUqKQorICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIgYWNfcGF0aF9F
R1JFUF9mb3VuZD06OzsKKyopCisgIGFjX2NvdW50PTAKKyAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5
ID4iY29uZnRlc3QuaW4iCisgIHdoaWxlIDoKKyAgZG8KKyAgICBjYXQgImNvbmZ0ZXN0LmluIiAi
Y29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgorICAgIG12ICJjb25mdGVzdC50bXAiICJjb25m
dGVzdC5pbiIKKyAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKyAgICAkYXNfZWNo
byAnRUdSRVAnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfRUdSRVAiICdFR1JFUCQn
IDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAg
ICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJy
ZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisg
ICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9FR1JFUF9tYXgtMH07IHRoZW4KKyAg
ICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0
dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9FR1JFUD0iJGFjX3BhdGhfRUdSRVAiCisgICAgICBh
Y19wYXRoX0VHUkVQX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJz
IGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3Qg
MTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29u
ZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfRUdSRVBfZm91
bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZT
CisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9y
ICQ/ICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQ
QVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0
aF9FR1JFUD0kRUdSRVAKK2ZpCisKKyAgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX0VHUkVQIiA+JjUKKyRhc19lY2hv
ICIkYWNfY3ZfcGF0aF9FR1JFUCIgPiY2OyB9CisgRUdSRVA9IiRhY19jdl9wYXRoX0VHUkVQIgor
CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
IEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEFOU0kg
QyBoZWFkZXIgZmlsZXMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfaGVhZGVyX3N0ZGMrOn0gZmFs
c2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4g
ICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8
c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmxvYXQuaD4KKworaW50CittYWluICgpCit7CisKKyAgOwor
ICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7
IHRoZW4gOgorICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0
ZGM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv
bmZ0ZXN0LiRhY19leHQKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4K
KyAgIyBTdW5PUyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBtZW0qLCBjb250cmFyeSB0
byBBTlNJLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisv
KiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK19BQ0VPRgoraWYg
KGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgIm1lbWNo
ciIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1u
bworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3Rk
YyA9IHllczsgdGhlbgorICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZy
ZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4K
KworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Cisg
ICRFR1JFUCAiZnJlZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKworZWxzZQorICBhY19jdl9o
ZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQorCitpZiB0ZXN0ICRhY19j
dl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRz
IG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCisgIGlmIHRlc3QgIiRj
cm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgOgorZWxzZQorICBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisj
aW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpZiAoKCcgJyAmIDB4MEZG
KSA9PSAweDAyMCkKKyMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6
JykKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6
IChjKSkKKyNlbHNlCisjIGRlZmluZSBJU0xPV0VSKGMpIFwKKwkJICAgKCgnYScgPD0gKGMpICYm
IChjKSA8PSAnaScpIFwKKwkJICAgICB8fCAoJ2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCisJ
CSAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCisjIGRlZmluZSBUT1VQUEVSKGMp
IChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorI2VuZGlmCisKKyNkZWZpbmUgWE9S
KGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCitpbnQKK21haW4gKCkKK3sK
KyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKyAgICBpZiAoWE9SIChpc2xv
d2VyIChpKSwgSVNMT1dFUiAoaSkpCisJfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCisg
ICAgICByZXR1cm4gMjsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1
biAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQor
cm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVz
dCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl
c3QuJGFjX2V4dAorZmkKKworZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfaGVhZGVyX3N0ZGMiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7
IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgU1REQ19IRUFERVJTIDEiID4+Y29uZmRlZnMuaAor
CitmaQorCisjIE9uIElSSVggNS4zLCBzeXMvdHlwZXMgYW5kIGludHR5cGVzLmggYXJlIGNvbmZs
aWN0aW5nLgorZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0ZGxpYi5o
IHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCisJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1
bmlzdGQuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFj
X2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElO
RU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAor
IgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgor
ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNf
aGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKworCisgIGFj
X2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJtaW5peC9jb25maWcuaCIgImFj
X2N2X2hlYWRlcl9taW5peF9jb25maWdfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVz
dCAieCRhY19jdl9oZWFkZXJfbWluaXhfY29uZmlnX2giID0geHllczsgdGhlbiA6CisgIE1JTklY
PXllcworZWxzZQorICBNSU5JWD0KK2ZpCisKKworICBpZiB0ZXN0ICIkTUlOSVgiID0geWVzOyB0
aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisK
KworJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYXzFfU09VUkNFIDIiID4+Y29uZmRlZnMuaAorCisK
KyRhc19lY2hvICIjZGVmaW5lIF9NSU5JWCAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorCisKKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVy
IGl0IGlzIHNhZmUgdG8gZGVmaW5lIF9fRVhURU5TSU9OU19fIiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRFTlNJT05TX18uLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX18rOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKKyMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorCSAgJGFjX2luY2x1ZGVzX2RlZmF1bHQK
K2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2Zu
X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc2FmZV90b19kZWZpbmVf
X19leHRlbnNpb25zX189eWVzCitlbHNlCisgIGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5z
aW9uc19fPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIgPiY1
CiskYXNfZWNobyAiJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fIiA+JjY7IH0K
KyAgdGVzdCAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX18gPSB5ZXMgJiYKKyAg
ICAkYXNfZWNobyAiI2RlZmluZSBfX0VYVEVOU0lPTlNfXyAxIiA+PmNvbmZkZWZzLmgKKworICAk
YXNfZWNobyAiI2RlZmluZSBfQUxMX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKworICAkYXNfZWNo
byAiI2RlZmluZSBfR05VX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKworICAkYXNfZWNobyAiI2Rl
ZmluZSBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2Vj
aG8gIiNkZWZpbmUgX1RBTkRFTV9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKworIyBNYWtlIHN1
cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgorJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3Vi
IiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biAk
U0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUKKworeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQor
aWYgJHthY19jdl9idWlsZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwordGVzdCAieCRhY19i
dWlsZF9hbGlhcyIgPSB4ICYmCisgIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwgIiRhY19hdXhfZGly
L2NvbmZpZy5ndWVzcyJgCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKKyAgYXNfZm5f
ZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIg
IiRMSU5FTk8iIDUKK2FjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIi
ICRhY19idWlsZF9hbGlhc2AgfHwKKyAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rp
ci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisKK2ZpCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1
aWxkIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQorY2FzZSAkYWNfY3ZfYnVp
bGQgaW4KKyotKi0qKSA7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fu
b25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7Citlc2FjCitidWlsZD0kYWNfY3ZfYnVpbGQKK2Fj
X3NhdmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4ICRhY19jdl9idWlsZAorc2hpZnQKK2J1aWxk
X2NwdT0kMQorYnVpbGRfdmVuZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBm
aXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorIyBleGNlcHQgd2l0
aCBvbGQgc2hlbGxzOgorYnVpbGRfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGJ1aWxk
X29zIGluICpcICopIGJ1aWxkX29zPWBlY2hvICIkYnVpbGRfb3MiIHwgc2VkICdzLyAvLS9nJ2A7
OyBlc2FjCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvc3Qgc3lz
dGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfaG9zdCs6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIngkaG9zdF9hbGlh
cyIgPSB4OyB0aGVuCisgIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkCitlbHNlCisgIGFjX2N2X2hv
c3Q9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3RfYWxpYXNgIHx8CisgICAg
YXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFz
IGZhaWxlZCIgIiRMSU5FTk8iIDUKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hvc3QiID4mNQorJGFzX2VjaG8gIiRhY19j
dl9ob3N0IiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2hvc3QgaW4KKyotKi0qKSA7OworKikgYXNfZm5f
ZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsK
K2VzYWMKK2hvc3Q9JGFjX2N2X2hvc3QKK2FjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4
ICRhY19jdl9ob3N0CitzaGlmdAoraG9zdF9jcHU9JDEKK2hvc3RfdmVuZG9yPSQyCitzaGlmdDsg
c2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8g
Y3JlYXRlICQqLAorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgoraG9zdF9vcz0kKgorSUZTPSRh
Y19zYXZlX0lGUworY2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0X29zPWBlY2hvICIkaG9zdF9v
cyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKKwor
CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisK
KworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKyMgRW5hYmxlL2Rpc2FibGUgb3B0
aW9ucworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXhzbSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIk
e2VuYWJsZV94c20rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV94c207
CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX3hzbSIgPSAieHllcyI7IHRoZW4gOgorCisgICAg
YXhfY3ZfeHNtPSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxlX3hzbSIgPSAieG5vIjsgdGhlbiA6
CisKKyAgICBheF9jdl94c209Im4iCisKK2VsaWYgdGVzdCAteiAkYXhfY3ZfeHNtOyB0aGVuIDoK
KworICAgIGF4X2N2X3hzbT0ibiIKKworZmkKK3hzbT0kYXhfY3ZfeHNtCisKKyMgQ2hlY2sgd2hl
dGhlciAtLWVuYWJsZS1naXRodHRwIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2dpdGh0
dHArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9naXRodHRwOworZmkK
KworCitpZiB0ZXN0ICJ4JGVuYWJsZV9naXRodHRwIiA9ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBh
eF9jdl9naXRodHRwPSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxlX2dpdGh0dHAiID0gInhubyI7
IHRoZW4gOgorCisgICAgYXhfY3ZfZ2l0aHR0cD0ibiIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9n
aXRodHRwOyB0aGVuIDoKKworICAgIGF4X2N2X2dpdGh0dHA9Im4iCisKK2ZpCitnaXRodHRwPSRh
eF9jdl9naXRodHRwCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tb25pdG9ycyB3YXMgZ2l2
ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9tb25pdG9ycytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVu
YWJsZXZhbD0kZW5hYmxlX21vbml0b3JzOworZmkKKworCitpZiB0ZXN0ICJ4JGVuYWJsZV9tb25p
dG9ycyIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9tb25pdG9ycz0ibiIKKworZWxpZiB0
ZXN0ICJ4JGVuYWJsZV9tb25pdG9ycyIgPSAieHllcyI7IHRoZW4gOgorCisgICAgYXhfY3ZfbW9u
aXRvcnM9InkiCisKK2VsaWYgdGVzdCAteiAkYXhfY3ZfbW9uaXRvcnM7IHRoZW4gOgorCisgICAg
YXhfY3ZfbW9uaXRvcnM9InkiCisKK2ZpCittb25pdG9ycz0kYXhfY3ZfbW9uaXRvcnMKKworIyBD
aGVjayB3aGV0aGVyIC0tZW5hYmxlLXZ0cG0gd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVf
dnRwbStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3Z0cG07CitmaQor
CisKK2lmIHRlc3QgIngkZW5hYmxlX3Z0cG0iID0gInh5ZXMiOyB0aGVuIDoKKworICAgIGF4X2N2
X3Z0cG09InkiCisKK2VsaWYgdGVzdCAieCRlbmFibGVfdnRwbSIgPSAieG5vIjsgdGhlbiA6CisK
KyAgICBheF9jdl92dHBtPSJuIgorCitlbGlmIHRlc3QgLXogJGF4X2N2X3Z0cG07IHRoZW4gOgor
CisgICAgYXhfY3ZfdnRwbT0ibiIKKworZmkKK3Z0cG09JGF4X2N2X3Z0cG0KKworIyBDaGVjayB3
aGV0aGVyIC0tZW5hYmxlLXhhcGkgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfeGFwaStz
ZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3hhcGk7CitmaQorCisKK2lm
IHRlc3QgIngkZW5hYmxlX3hhcGkiID0gInh5ZXMiOyB0aGVuIDoKKworICAgIGF4X2N2X3hhcGk9
InkiCisKK2VsaWYgdGVzdCAieCRlbmFibGVfeGFwaSIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBh
eF9jdl94YXBpPSJuIgorCitlbGlmIHRlc3QgLXogJGF4X2N2X3hhcGk7IHRoZW4gOgorCisgICAg
YXhfY3ZfeGFwaT0ibiIKKworZmkKK3hhcGk9JGF4X2N2X3hhcGkKKworIyBDaGVjayB3aGV0aGVy
IC0tZW5hYmxlLXB5dGhvbnRvb2xzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3B5dGhv
bnRvb2xzK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfcHl0aG9udG9v
bHM7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX3B5dGhvbnRvb2xzIiA9ICJ4bm8iOyB0aGVu
IDoKKworICAgIGF4X2N2X3B5dGhvbnRvb2xzPSJuIgorCitlbGlmIHRlc3QgIngkZW5hYmxlX3B5
dGhvbnRvb2xzIiA9ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl9weXRob250b29scz0ieSIK
KworZWxpZiB0ZXN0IC16ICRheF9jdl9weXRob250b29sczsgdGhlbiA6CisKKyAgICBheF9jdl9w
eXRob250b29scz0ieSIKKworZmkKK3B5dGhvbnRvb2xzPSRheF9jdl9weXRob250b29scworCisj
IENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb2NhbWx0b29scyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIk
e2VuYWJsZV9vY2FtbHRvb2xzK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFi
bGVfb2NhbWx0b29sczsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfb2NhbWx0b29scyIgPSAi
eG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9vY2FtbHRvb2xzPSJuIgorCitlbGlmIHRlc3QgIngk
ZW5hYmxlX29jYW1sdG9vbHMiID0gInh5ZXMiOyB0aGVuIDoKKworICAgIGF4X2N2X29jYW1sdG9v
bHM9InkiCisKK2VsaWYgdGVzdCAteiAkYXhfY3Zfb2NhbWx0b29sczsgdGhlbiA6CisKKyAgICBh
eF9jdl9vY2FtbHRvb2xzPSJ5IgorCitmaQorb2NhbWx0b29scz0kYXhfY3Zfb2NhbWx0b29scwor
CisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbWluaXRlcm0gd2FzIGdpdmVuLgoraWYgdGVzdCAi
JHtlbmFibGVfbWluaXRlcm0rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJs
ZV9taW5pdGVybTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfbWluaXRlcm0iID0gInh5ZXMi
OyB0aGVuIDoKKworICAgIGF4X2N2X21pbml0ZXJtPSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxl
X21pbml0ZXJtIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X21pbml0ZXJtPSJuIgorCitl
bGlmIHRlc3QgLXogJGF4X2N2X21pbml0ZXJtOyB0aGVuIDoKKworICAgIGF4X2N2X21pbml0ZXJt
PSJuIgorCitmaQorbWluaXRlcm09JGF4X2N2X21pbml0ZXJtCisKKyMgQ2hlY2sgd2hldGhlciAt
LWVuYWJsZS1sb21vdW50IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xvbW91bnQrc2V0
fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9sb21vdW50OworZmkKKworCitp
ZiB0ZXN0ICJ4JGVuYWJsZV9sb21vdW50IiA9ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl9s
b21vdW50PSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxlX2xvbW91bnQiID0gInhubyI7IHRoZW4g
OgorCisgICAgYXhfY3ZfbG9tb3VudD0ibiIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9sb21vdW50
OyB0aGVuIDoKKworICAgIGF4X2N2X2xvbW91bnQ9Im4iCisKK2ZpCitsb21vdW50PSRheF9jdl9s
b21vdW50CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kZWJ1ZyB3YXMgZ2l2ZW4uCitpZiB0
ZXN0ICIke2VuYWJsZV9kZWJ1ZytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5h
YmxlX2RlYnVnOworZmkKKworCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZWJ1ZyIgPSAieG5vIjsgdGhl
biA6CisKKyAgICBheF9jdl9kZWJ1Zz0ibiIKKworZWxpZiB0ZXN0ICJ4JGVuYWJsZV9kZWJ1ZyIg
PSAieHllcyI7IHRoZW4gOgorCisgICAgYXhfY3ZfZGVidWc9InkiCisKK2VsaWYgdGVzdCAteiAk
YXhfY3ZfZGVidWc7IHRoZW4gOgorCisgICAgYXhfY3ZfZGVidWc9InkiCisKK2ZpCitkZWJ1Zz0k
YXhfY3ZfZGVidWcKKworCisKKworCisKKworZm9yIGNmbGFnIGluICRQUkVQRU5EX0lOQ0xVREVT
CitkbworICAgIFBSRVBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBp
biAkUFJFUEVORF9MSUIKK2RvCisgICAgUFJFUEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2Rv
bmUKK2ZvciBjZmxhZyBpbiAkQVBQRU5EX0lOQ0xVREVTCitkbworICAgIEFQUEVORF9DRkxBR1Mr
PSIgLUkkY2ZsYWciCitkb25lCitmb3IgbGRmbGFnIGluICRBUFBFTkRfTElCCitkbworICAgIEFQ
UEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2RvbmUKK0NGTEFHUz0iJFBSRVBFTkRfQ0ZMQUdT
ICRDRkxBR1MgJEFQUEVORF9DRkxBR1MiCitMREZMQUdTPSIkUFJFUEVORF9MREZMQUdTICRMREZM
QUdTICRBUFBFTkRfTERGTEFHUyIKKworCisKKworCisKKworCisKKworCisKKyMgQ2hlY2tzIGZv
ciBwcm9ncmFtcy4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0IiA+JjUKKyRhc19l
Y2hvX24gImNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4u
LiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi
YmJiYmJiYmIvCisgICAgIGZvciBhY19pIGluIDEgMiAzIDQgNSA2IDc7IGRvCisgICAgICAgYWNf
c2NyaXB0PSIkYWNfc2NyaXB0JGFzX25sJGFjX3NjcmlwdCIKKyAgICAgZG9uZQorICAgICBlY2hv
ICIkYWNfc2NyaXB0IiAyPi9kZXYvbnVsbCB8IHNlZCA5OXEgPmNvbmZ0ZXN0LnNlZAorICAgICB7
IGFjX3NjcmlwdD07IHVuc2V0IGFjX3NjcmlwdDt9CisgICAgIGlmIHRlc3QgLXogIiRTRUQiOyB0
aGVuCisgIGFjX3BhdGhfU0VEX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdoIHRoZSB1c2Vy
J3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCisgIGFzX3NhdmVfSUZT
PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElG
Uz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig
YWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfU0VEPSIkYXNfZGlyLyRhY19w
cm9nJGFjX2V4ZWNfZXh0IgorICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0aF9TRUQiICYmICRhc190
ZXN0X3ggIiRhY19wYXRoX1NFRCI7IH0gfHwgY29udGludWUKKyMgQ2hlY2sgZm9yIEdOVSBhY19w
YXRoX1NFRCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBHTlUg
JGFjX3BhdGhfU0VECitjYXNlIGAiJGFjX3BhdGhfU0VEIiAtLXZlcnNpb24gMj4mMWAgaW4KKypH
TlUqKQorICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIiBhY19wYXRoX1NFRF9mb3VuZD06
OzsKKyopCisgIGFjX2NvdW50PTAKKyAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4iY29uZnRlc3Qu
aW4iCisgIHdoaWxlIDoKKyAgZG8KKyAgICBjYXQgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QuaW4i
ID4iY29uZnRlc3QudG1wIgorICAgIG12ICJjb25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKKyAg
ICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKyAgICAkYXNfZWNobyAnJyA+PiAiY29u
ZnRlc3QubmwiCisgICAgIiRhY19wYXRoX1NFRCIgLWYgY29uZnRlc3Quc2VkIDwgImNvbmZ0ZXN0
Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25m
dGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNf
Zm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAk
YWNfY291bnQgLWd0ICR7YWNfcGF0aF9TRURfbWF4LTB9OyB0aGVuCisgICAgICAjIEJlc3Qgb25l
IHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKyAgICAg
IGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiCisgICAgICBhY19wYXRoX1NFRF9tYXg9JGFj
X2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3Jl
IHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJyZWFrCisgIGRvbmUK
KyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91
dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX1NFRF9mb3VuZCAmJiBicmVhayAzCisgICAgZG9u
ZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYgdGVzdCAteiAiJGFjX2N2
X3BhdGhfU0VEIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIHNlZCBj
b3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CisgIGZpCitlbHNlCisgIGFjX2N2
X3BhdGhfU0VEPSRTRUQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfU0VEIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zf
cGF0aF9TRUQiID4mNjsgfQorIFNFRD0iJGFjX2N2X3BhdGhfU0VEIgorICBybSAtZiBjb25mdGVz
dC5zZWQKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSck
Q0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSck
Q0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0
ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVy
X2dudQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Z2NjIiwgc28gaXQgY2FuIGJlIGEgcHJv
Z3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNf
d29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4u
ICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFj
X2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNl
Cithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ
QVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp
cj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7
IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz
X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19j
dl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+
JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKwor
ZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRh
c19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisK
KworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgorICBhY19jdF9DQz0kQ0MK
KyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2Fj
X2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3By
b2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qu
CitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGly
IGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYm
IGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVu
c2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg
JiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAg
ICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Cisg
ICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitm
aQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRhY19jdF9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ0MiID0geDsgdGhl
bgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xf
d2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBs
ZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90
IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7
Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitlbHNlCisgIENDPSIkYWNfY3ZfcHJvZ19D
QyIKK2ZpCisKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIk
YWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIk
e2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3JkPSQyCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNf
Y3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAj
IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7
IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNf
c2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhl
Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1m
ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRh
Y193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9v
bF9wcmVmaXh9Y2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBm
aQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3By
b2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0K
K2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgZmkKK2ZpCitpZiB0ZXN0
IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBp
dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGNjOyBhY193b3Jk
PSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3Zf
cHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAg
YWNfcHJvZ19yZWplY3RlZD1ubworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP
UgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl
Y3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
OyB9OyB0aGVuCisgICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPSAi
L3Vzci91Y2IvY2MiOyB0aGVuCisgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKKyAgICAgICBj
b250aW51ZQorICAgICBmaQorICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCitpZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCisgICMgV2UgZm91
bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KKyAg
c2V0IGR1bW15ICRhY19jdl9wcm9nX0NDCisgIHNoaWZ0CisgIGlmIHRlc3QgJCMgIT0gMDsgdGhl
bgorICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25l
LgorICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24g
d2lsbCBiZSBjaG9zZW4KKyAgICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNl
bmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4KKyAgICBzaGlmdAorICAgIGFjX2N2X3Byb2df
Q0M9IiRhc19kaXIvJGFjX3dvcmQkezErJyAnfSRAIgorICBmaQorZmkKK2ZpCitmaQorQ0M9JGFj
X2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+
JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0
IC16ICIkQ0MiOyB0aGVuCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAg
Zm9yIGFjX3Byb2cgaW4gY2wuZXhlCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk
IG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9
JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m
NjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAi
KGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9w
cm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAor
ZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0
X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJv
Z19DQz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1
CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2Zp
CitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNf
ZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisK
KyAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQ0Mi
OyB0aGVuCisgIGFjX2N0X0NDPSRDQworICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKK2RvCisgICMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y
ZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lm
ICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNf
Y3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBh
c19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2Rp
ciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf
ZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhl
bgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lG
UworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIk
YWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DQyIgPiY2OyB9Citl
bHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu
byIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRhY19jdF9D
QyIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAg
ICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5l
ZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FS
TklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVm
aXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNh
YworICAgIENDPSRhY19jdF9DQworICBmaQorZmkKKworZmkKKworCit0ZXN0IC16ICIkQ0MiICYm
IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAk
YWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjI7fQorYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBc
JFBBVEgKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9
CisKKyMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21waWxlci4KKyRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVy
IHZlcnNpb24iID4mNQorc2V0IFggJGFjX2NvbXBpbGUKK2FjX2NvbXBpbGVyPSQyCitmb3IgYWNf
b3B0aW9uIGluIC0tdmVyc2lvbiAtdiAtViAtcXZlcnNpb247IGRvCisgIHsgeyBhY190cnk9IiRh
Y19jb21waWxlciAkYWNfb3B0aW9uID4mNSIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8
ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRh
Y190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQor
ICAoZXZhbCAiJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1IikgMj5jb25mdGVzdC5lcnIKKyAg
YWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgc2VkICcx
MGFcCisuLi4gcmVzdCBvZiBzdGRlcnIgb3V0cHV0IGRlbGV0ZWQgLi4uCisgICAgICAgICAxMHEn
IGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKKyAg
ZmkKKyAgcm0gLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNf
c3RhdHVzID0gMDsgfQorZG9uZQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMg
Y29tcGlsZXIuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY19jb21waWxlcl9nbnUrOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKK2ludAorbWFpbiAoKQoreworI2lmbmRlZiBfX0dOVUNfXworICAgICAgIGNob2tlIG1lCisj
ZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21w
aWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2NvbXBpbGVyX2dudT15ZXMKK2Vsc2UKKyAgYWNf
Y29tcGlsZXJfZ251PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj
X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CithY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGls
ZXJfZ251CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY19jb21w
aWxlcl9nbnUiID4mNjsgfQoraWYgdGVzdCAkYWNfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuCisg
IEdDQz15ZXMKK2Vsc2UKKyAgR0NDPQorZmkKK2FjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0K
K2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9CitpZiAke2FjX2N2
X3Byb2dfY2NfZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZworICAgYWNf
Y193ZXJyb3JfZmxhZz15ZXMKKyAgIGFjX2N2X3Byb2dfY2NfZz1ubworICAgQ0ZMQUdTPSItZyIK
KyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30K
K19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19j
dl9wcm9nX2NjX2c9eWVzCitlbHNlCisgIENGTEFHUz0iIgorICAgICAgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitp
bnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9j
X3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY193ZXJyb3JfZmxh
Zz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnCisJIENGTEFHUz0iLWciCisJIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKwor
aW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5f
Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2c9eWVzCitm
aQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k
YWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj
b25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj
X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nf
d2Vycm9yX2ZsYWcKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2Nf
ZyIgPiY2OyB9CitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCisgIENGTEFH
Uz0kYWNfc2F2ZV9DRkxBR1MKK2VsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVu
CisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItZyAtTzIiCisgIGVs
c2UKKyAgICBDRkxBR1M9Ii1nIgorICBmaQorZWxzZQorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsg
dGhlbgorICAgIENGTEFHUz0iLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPQorICBmaQorZmkKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBv
cHRpb24gdG8gYWNjZXB0IElTTyBDODkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRD
QyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19j
Y19jODkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBhY19jdl9wcm9nX2NjX2M4OT1ubworYWNfc2F2ZV9DQz0kQ0MKK2NhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp
bmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVz
dHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCitzdHJ1Y3QgYnVm
IHsgaW50IHg7IH07CitGSUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3Rh
dCAqLCBpbnQpOworc3RhdGljIGNoYXIgKmUgKHAsIGkpCisgICAgIGNoYXIgKipwOworICAgICBp
bnQgaTsKK3sKKyAgcmV0dXJuIHBbaV07Cit9CitzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykg
KGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCit7CisgIGNoYXIgKnM7CisgIHZhX2xpc3Qg
djsKKyAgdmFfc3RhcnQgKHYscCk7CisgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CisgIHZh
X2VuZCAodik7CisgIHJldHVybiBzOworfQorCisvKiBPU0YgNC4wIENvbXBhcSBjYyBpcyBzb21l
IHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcworICAgZnVuY3Rpb24gcHJv
dG90eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFyYWN0ZXIgY29uc3RhbnRz
LgorICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFk
IGFyZSBzaWxlbnRseSB0cmVhdGVkCisgICBhcyAneCcuICBUaGUgZm9sbG93aW5nIGluZHVjZXMg
YW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CisgICBwcm9wZXIgQU5TSSBtb2Rl
LiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCisg
ICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0w
IHRvIGdldCBzb21ldGhpbmcKKyAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkLiAgKi8KK2lu
dCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CisKKy8qIElCTSBDIDYgZm9y
IEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVwbGFjZXMgbWFjcm8gcGFy
YW1ldGVycworICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMuICAqLwor
I2RlZmluZSBGT08oeCkgJ3gnCitpbnQgeGxjNl9jY19hcnJheVtGT08oYSkgPT0gJ3gnID8gMSA6
IC0xXTsKKworaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7CitzdHJ1Y3QgczEge2ludCAoKmYp
IChpbnQgYSk7fTsKK3N0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9OworaW50IHBhaXJu
YW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAq
LCBpbnQpLCBpbnQsIGludCk7CitpbnQgYXJnYzsKK2NoYXIgKiphcmd2OworaW50CittYWluICgp
Cit7CityZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEp
ICE9IGFyZ3ZbMV07CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2ZvciBhY19hcmcgaW4g
JycgLXFsYW5nbHZsPWV4dGM4OSAtcWxhbmdsdmw9YW5zaSAtc3RkIFwKKwktQWUgIi1BYSAtRF9I
UFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgorZG8KKyAgQ0M9IiRhY19zYXZlX0ND
ICRhY19hcmciCisgIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
YWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv
bmZ0ZXN0LiRhY19vYmpleHQKKyAgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0gInhubyIg
JiYgYnJlYWsKK2RvbmUKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQKK0NDPSRhY19zYXZlX0NDCisK
K2ZpCisjIEFDX0NBQ0hFX1ZBTAorY2FzZSAieCRhY19jdl9wcm9nX2NjX2M4OSIgaW4KKyAgeCkK
KyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9u
ZSBuZWVkZWQiID4mNQorJGFzX2VjaG8gIm5vbmUgbmVlZGVkIiA+JjY7IH0gOzsKKyAgeG5vKQor
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1bnN1
cHBvcnRlZCIgPiY1CiskYXNfZWNobyAidW5zdXBwb3J0ZWQiID4mNjsgfSA7OworICAqKQorICAg
IENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19jODkiID4mNQorJGFzX2Vj
aG8gIiRhY19jdl9wcm9nX2NjX2M4OSIgPiY2OyB9IDs7Citlc2FjCitpZiB0ZXN0ICJ4JGFjX2N2
X3Byb2dfY2NfYzg5IiAhPSB4bm87IHRoZW4gOgorCitmaQorCithY19leHQ9YworYWNfY3BwPSck
Q1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25m
dGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENG
TEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19j
b21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBsbiAtcyB3b3JrcyIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICIgPiY2OyB9CitMTl9T
PSRhc19sbl9zCitpZiB0ZXN0ICIkTE5fUyIgPSAibG4gLXMiOyB0aGVuCisgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8g
InllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubywgdXNpbmcgJExOX1MiID4mNQorJGFzX2VjaG8gIm5vLCB1c2luZyAk
TE5fUyIgPiY2OyB9CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQorJGFz
X2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAi
ID4mNjsgfQorc2V0IHggJHtNQUtFLW1ha2V9CithY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2Vk
ICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19t
YWtlXyR7YWNfbWFrZX1fc2V0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9BQ0VPRgorU0hFTEwgPSAv
YmluL3NoCithbGw6CisJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUlJScKK19BQ0VPRgorIyBH
TlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZyAuLi4iLCB3aGljaCB3
b3VsZCBjb25mdXNlIHVzLgorY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4v
ZGV2L251bGxgIGluCisgICpAQEAlJSU9Pyo9QEBAJSUlKikKKyAgICBldmFsIGFjX2N2X3Byb2df
bWFrZV8ke2FjX21ha2V9X3NldD15ZXM7OworICAqKQorICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtl
XyR7YWNfbWFrZX1fc2V0PW5vOzsKK2VzYWMKK3JtIC1mIGNvbmZ0ZXN0Lm1ha2UKK2ZpCitpZiBl
dmFsIHRlc3QgXCRhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQgPSB5ZXM7IHRoZW4KKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1
CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKyAgU0VUX01BS0U9CitlbHNlCisgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAi
bm8iID4mNjsgfQorICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFrZX0iCitmaQorCisjIEZpbmQg
YSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwK
KyMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJy
b2tlbiBvcgorIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAv
dXNyL3NiaW4vaW5zdGFsbAorIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxsCisjIElSSVggL3NiaW4v
aW5zdGFsbAorIyBBSVggL2Jpbi9pbnN0YWxsCisjIEFtaWdhT1MgL0MvaW5zdGFsbCwgd2hpY2gg
aW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlzY3MKKyMgQUlYIDQgL3Vzci9iaW4vaW5z
dGFsbGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBmbGFnCisjIEFGUyAvdXNy
L2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFyZ3MKKyMg
U1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50
IGdyb3VwICJzdGFmZiIKKyMgT1MvMidzIHN5c3RlbSBpbnN0YWxsLCB3aGljaCBoYXMgYSBjb21w
bGV0ZWx5IGRpZmZlcmVudCBzZW1hbnRpYworIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJv
bmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guCisjIFJlamVjdCBpbnN0
YWxsIHByb2dyYW1zIHRoYXQgY2Fubm90IGluc3RhbGwgbXVsdGlwbGUgZmlsZXMuCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIEJTRC1jb21w
YXRpYmxlIGluc3RhbGwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBh
dGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQoraWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCitp
ZiAke2FjX2N2X3BhdGhfaW5zdGFsbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0
IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KK2Nhc2UgJGFzX2Rpci8gaW4gIygo
CisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8IFwKKyAgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNy
L2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogfCBcCisgID86W1xcL11vczJbXFwv
XWluc3RhbGxbXFwvXSogfCA/OltcXC9dT1MyW1xcL11JTlNUQUxMW1xcL10qIHwgXAorICAvdXNy
L3VjYi8qICkgOzsKKyAgKikKKyAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIg
b3duIG5hbWVzIGZvciBpbnN0YWxsLgorICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBP
U0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAorICAgICMgYnkgZGVmYXVsdC4KKyAg
ICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCisgICAgICBmb3Ig
YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKwlpZiB7IHRl
c3QgLWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19k
aXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB9OyB0aGVuCisJICBpZiB0ZXN0ICRhY19wcm9nID0g
aW5zdGFsbCAmJgorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4
dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4g
aW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KKwkgICAgOgorCSAgZWxpZiB0ZXN0ICRh
Y19wcm9nID0gaW5zdGFsbCAmJgorCSAgICBncmVwIHB3cGx1cyAiJGFzX2Rpci8kYWNfcHJvZyRh
Y19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgcHJvZ3JhbS1zcGVjaWZp
YyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgorCSAgICA6CisJ
ICBlbHNlCisJICAgIHJtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRp
cgorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQorCSAgICBlY2hvIHR3byA+IGNvbmZ0ZXN0
LnR3bworCSAgICBta2RpciBjb25mdGVzdC5kaXIKKwkgICAgaWYgIiRhc19kaXIvJGFjX3Byb2ck
YWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gImBwd2RgL2NvbmZ0ZXN0
LmRpciIgJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0Lm9uZSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0
LnR3byAmJgorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0Lm9uZSAmJgorCSAg
ICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0LnR3bworCSAgICB0aGVuCisJICAgICAg
YWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IC1jIgorCSAg
ICAgIGJyZWFrIDMKKwkgICAgZmkKKwkgIGZpCisJZmkKKyAgICAgIGRvbmUKKyAgICBkb25lCisg
ICAgOzsKK2VzYWMKKworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK3JtIC1yZiBjb25mdGVz
dC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcgorCitmaQorICBpZiB0ZXN0ICIke2FjX2N2
X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbgorICAgIElOU1RBTEw9JGFjX2N2X3BhdGhf
aW5zdGFsbAorICBlbHNlCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hl
bGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQorICAgICMgdmFsdWUgZm9yIElOU1RBTEwgd2l0aGlu
IGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKKyAgICAjIGJyZWFrIG90aGVy
IHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcworICAgICMgcmVt
b3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4KKyAgICBJTlNUQUxMPSRh
Y19pbnN0YWxsX3NoCisgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKKyRhc19lY2hvICIkSU5TVEFMTCIgPiY2OyB9
CisKKyMgVXNlIHRlc3QgLXogYmVjYXVzZSBTdW5PUzQgc2ggbWlzaGFuZGxlcyBicmFjZXMgaW4g
JHt2YXItdmFsfS4KKyMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBicmFjZSBlbmRzIHRoZSB2
YXJpYWJsZSBzdWJzdGl0dXRpb24uCit0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNU
QUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNUQUxMX1NDUklQVCIgJiYg
SU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNUQUxMX0RBVEEiICYm
IElOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnCisKKyMgRXh0cmFjdCB0aGUgZmlyc3Qg
d29yZCBvZiAicGVybCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitz
ZXQgZHVtbXkgcGVybDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfUEVSTCs6fSBmYWxz
ZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFBF
UkwgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfUEVSTD0iJFBFUkwiICMg
TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQor
ICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ
QVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp
cj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7
IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz
X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19j
dl9wYXRoX1BFUkw9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfUEVSTCIgJiYgYWNfY3ZfcGF0aF9QRVJM
PSJubyIKKyAgOzsKK2VzYWMKK2ZpCitQRVJMPSRhY19jdl9wYXRoX1BFUkwKK2lmIHRlc3QgLW4g
IiRQRVJMIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJFBFUkwiID4mNQorJGFzX2VjaG8gIiRQRVJMIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3QgeCIke1BFUkx9IiA9PSB4Im5vIgor
dGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCBwZXJsLCBwbGVhc2UgaW5z
dGFsbCBwZXJsIiAiJExJTkVOTyIgNQorZmkKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi
YnJjdGwiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15
IGJyY3RsOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9CUkNUTCs6fSBmYWxzZTsgdGhl
biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJEJSQ1RMIGlu
CisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0JSQ1RMPSIkQlJDVEwiICMgTGV0
IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBh
c19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRI
CitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0u
CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv
CisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rl
c3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9w
YXRoX0JSQ1RMPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0JSQ1RMIiAmJiBhY19jdl9wYXRoX0JSQ1RM
PSJubyIKKyAgOzsKK2VzYWMKK2ZpCitCUkNUTD0kYWNfY3ZfcGF0aF9CUkNUTAoraWYgdGVzdCAt
biAiJEJSQ1RMIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJEJSQ1RMIiA+JjUKKyRhc19lY2hvICIkQlJDVEwiID4mNjsgfQorZWxzZQor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m
NQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4IiR7QlJDVEx9IiA9PSB4
Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCBicmN0bCwgcGxl
YXNlIGluc3RhbGwgYnJjdGwiICIkTElORU5PIiA1CitmaQorIyBFeHRyYWN0IHRoZSBmaXJzdCB3
b3JkIG9mICJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQg
ZHVtbXkgaXA7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0lQKzp9IGZhbHNlOyB0aGVu
IDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkSVAgaW4KKyAg
W1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfSVA9IiRJUCIgIyBMZXQgdGhlIHVzZXIg
b3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZT
PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElG
Uz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig
YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0
ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfSVA9IiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Cisg
ICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVz
dCAteiAiJGFjX2N2X3BhdGhfSVAiICYmIGFjX2N2X3BhdGhfSVA9Im5vIgorICA7OworZXNhYwor
ZmkKK0lQPSRhY19jdl9wYXRoX0lQCitpZiB0ZXN0IC1uICIkSVAiOyB0aGVuCisgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSVAiID4mNQorJGFzX2Vj
aG8gIiRJUCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitp
ZiB0ZXN0IHgiJHtJUH0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJs
ZSB0byBmaW5kIGlwLCBwbGVhc2UgaW5zdGFsbCBpcCIgIiRMSU5FTk8iIDUKK2ZpCisjIEV4dHJh
Y3QgdGhlIGZpcnN0IHdvcmQgb2YgImJpc29uIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l
IHdpdGggYXJncy4KK3NldCBkdW1teSBiaXNvbjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFz
X2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Bh
dGhfQklTT04rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor
ZWxzZQorICBjYXNlICRCSVNPTiBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0
aF9CSVNPTj0iJEJJU09OIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEg
cGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP
UgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl
Y3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
OyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9CSVNPTj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25l
CisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9CSVNP
TiIgJiYgYWNfY3ZfcGF0aF9CSVNPTj0ibm8iCisgIDs7Citlc2FjCitmaQorQklTT049JGFjX2N2
X3BhdGhfQklTT04KK2lmIHRlc3QgLW4gIiRCSVNPTiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCSVNPTiIgPiY1CiskYXNfZWNobyAi
JEJJU09OIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lm
IHRlc3QgeCIke0JJU09OfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19mbl9lcnJvciAkPyAiVW5h
YmxlIHRvIGZpbmQgYmlzb24sIHBsZWFzZSBpbnN0YWxsIGJpc29uIiAiJExJTkVOTyIgNQorZmkK
KyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZmxleCIsIHNvIGl0IGNhbiBiZSBhIHByb2dy
YW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZmxleDsgYWNfd29yZD0kMgoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2Fj
X2N2X3BhdGhfRkxFWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGNhc2UgJEZMRVggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2
X3BhdGhfRkxFWD0iJEZMRVgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGgg
YSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB
VE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3Qg
LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l
eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0ZMRVg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9u
ZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfRkxF
WCIgJiYgYWNfY3ZfcGF0aF9GTEVYPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitGTEVYPSRhY19jdl9w
YXRoX0ZMRVgKK2lmIHRlc3QgLW4gIiRGTEVYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEZMRVgiID4mNQorJGFzX2VjaG8gIiRGTEVY
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3Qg
eCIke0ZMRVh9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8g
ZmluZCBmbGV4LCBwbGVhc2UgaW5zdGFsbCBmbGV4IiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3Qg
IngkeGFwaSIgPSAieHkiOyB0aGVuIDoKKworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBv
ZiAiY3VybC1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgor
c2V0IGR1bW15IGN1cmwtY29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9DVVJM
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
Y2FzZSAkQ1VSTCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9DVVJMPSIk
Q1VSTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7
CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19k
aXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIg
JiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0
ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgor
ICAgIGFjX2N2X3BhdGhfQ1VSTD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lG
Uz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DVVJMIiAmJiBhY19jdl9w
YXRoX0NVUkw9Im5vIgorICA7OworZXNhYworZmkKK0NVUkw9JGFjX2N2X3BhdGhfQ1VSTAoraWYg
dGVzdCAtbiAiJENVUkwiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkQ1VSTCIgPiY1CiskYXNfZWNobyAiJENVUkwiID4mNjsgfQorZWxz
ZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i
ID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4IiR7Q1VSTH0iID09
IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kIGN1cmwtY29u
ZmlnLCBwbGVhc2UgaW5zdGFsbCBjdXJsLWNvbmZpZyIgIiRMSU5FTk8iIDUKK2ZpCisgICAgIyBF
eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ4bWwyLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHBy
b2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgeG1sMi1jb25maWc7IGFjX3dvcmQ9JDIK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh
Y193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg
fQoraWYgJHthY19jdl9wYXRoX1hNTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFhNTCBpbgorICBbXFwvXSogfCA/OltcXC9dKikK
KyAgYWNfY3ZfcGF0aF9YTUw9IiRYTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0
IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf
U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg
IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn
ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1hNTD0iJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBm
b3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZp
Citkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0
aF9YTUwiICYmIGFjX2N2X3BhdGhfWE1MPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitYTUw9JGFjX2N2
X3BhdGhfWE1MCitpZiB0ZXN0IC1uICIkWE1MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFhNTCIgPiY1CiskYXNfZWNobyAiJFhNTCIg
PiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitpZiB0ZXN0IHgi
JHtYTUx9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmlu
ZCB4bWwyLWNvbmZpZywgcGxlYXNlIGluc3RhbGwgeG1sMi1jb25maWciICIkTElORU5PIiA1Citm
aQorCitmaQoraWYgdGVzdCAieCRvY2FtbHRvb2xzIiA9ICJ4eSI7IHRoZW4gOgorCisgICAgICAj
IGNoZWNraW5nIGZvciBvY2FtbGMKKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhl
bgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxj
Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2Fj
X3Rvb2xfcHJlZml4fW9jYW1sYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfT0NBTUxD
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
aWYgdGVzdCAtbiAiJE9DQU1MQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTEM9IiRPQ0FNTEMi
ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19PQ0FNTEM9IiR7
YWNfdG9vbF9wcmVmaXh9b2NhbWxjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJy
ZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09D
QU1MQz0kYWNfY3ZfcHJvZ19PQ0FNTEMKK2lmIHRlc3QgLW4gIiRPQ0FNTEMiOyB0aGVuCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxDIiA+
JjUKKyRhc19lY2hvICIkT0NBTUxDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTEMiOyB0aGVuCisg
IGFjX2N0X09DQU1MQz0kT0NBTUxDCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2Nh
bWxjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBv
Y2FtbGM7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAk
YWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X09DQU1MQys6fSBmYWxz
ZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3Qg
LW4gIiRhY19jdF9PQ0FNTEMiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxDPSIkYWNf
Y3RfT0NBTUxDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3Nh
dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2Rv
CisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAg
ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAg
aWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94
ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2df
YWNfY3RfT0NBTUxDPSJvY2FtbGMiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNf
Y3RfT0NBTUxDPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MQworaWYgdGVzdCAtbiAiJGFjX2N0X09D
QU1MQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdF9PQ0FNTEMiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTEMiID4mNjsg
fQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19j
dF9PQ0FNTEMiID0geDsgdGhlbgorICAgIE9DQU1MQz0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRj
cm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7
fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxDPSRhY19jdF9PQ0FNTEMK
KyAgZmkKK2Vsc2UKKyAgT0NBTUxDPSIkYWNfY3ZfcHJvZ19PQ0FNTEMiCitmaQorCisKKyAgaWYg
dGVzdCAiJE9DQU1MQyIgIT0gIm5vIjsgdGhlbgorICAgICBPQ0FNTFZFUlNJT049YCRPQ0FNTEMg
LXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJ2AKKyAgICAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE9DYW1sIHZlcnNpb24g
aXMgJE9DQU1MVkVSU0lPTiIgPiY1CiskYXNfZWNobyAiT0NhbWwgdmVyc2lvbiBpcyAkT0NBTUxW
RVJTSU9OIiA+JjY7IH0KKyAgICAgIyBJZiBPQ0FNTExJQiBpcyBzZXQsIHVzZSBpdAorICAgICBp
ZiB0ZXN0ICIkT0NBTUxMSUIiID0gIiI7IHRoZW4KKyAgICAgICAgT0NBTUxMSUI9YCRPQ0FNTEMg
LXdoZXJlIDI+L2Rldi9udWxsIHx8ICRPQ0FNTEMgLXZ8dGFpbCAtMXxjdXQgLWQgJyAnIC1mIDRg
CisgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6IE9DQU1MTElCIHByZXZpb3VzbHkgc2V0OyBwcmVzZXJ2aW5nIGl0LiIgPiY1
CiskYXNfZWNobyAiT0NBTUxMSUIgcHJldmlvdXNseSBzZXQ7IHByZXNlcnZpbmcgaXQuIiA+JjY7
IH0KKyAgICAgZmkKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IE9DYW1sIGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUIiID4mNQorJGFzX2VjaG8g
Ik9DYW1sIGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUIiID4mNjsgfQorCisKKworCisgICAgICMg
Y2hlY2tpbmcgZm9yIG9jYW1sb3B0CisgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7
IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9j
YW1sb3B0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1t
eSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJv
Z19PQ0FNTE9QVCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FN
TE9QVD0iJE9DQU1MT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UK
K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBB
VEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg
ZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNf
dGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2
X3Byb2dfT0NBTUxPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxvcHQiCisgICAgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKK2ZpCitmaQorT0NBTUxPUFQ9JGFjX2N2X3Byb2dfT0NBTUxPUFQKK2lmIHRlc3Qg
LW4gIiRPQ0FNTE9QVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRPQ0FNTE9QVCIgPiY1CiskYXNfZWNobyAiJE9DQU1MT1BUIiA+JjY7
IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16
ICIkYWNfY3ZfcHJvZ19PQ0FNTE9QVCI7IHRoZW4KKyAgYWNfY3RfT0NBTUxPUFQ9JE9DQU1MT1BU
CisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxvcHQiLCBzbyBpdCBjYW4gYmUg
YSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sb3B0OyBhY193b3JkPSQy
Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk
YWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7
IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVCs6fSBmYWxzZTsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FN
TE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVD0iJGFjX2N0X09DQU1MT1BU
IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJ
RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0k
YXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNf
ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0
IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly
LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NB
TUxPUFQ9Im9jYW1sb3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09D
QU1MT1BUPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MT1BUCitpZiB0ZXN0IC1uICIkYWNfY3RfT0NB
TUxPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3RfT0NBTUxPUFQiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTE9QVCIg
PiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4
JGFjX2N0X09DQU1MT1BUIiA9IHg7IHRoZW4KKyAgICBPQ0FNTE9QVD0ibm8iCisgIGVsc2UKKyAg
ICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0
b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19t
ZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlw
bGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxPUFQ9JGFj
X2N0X09DQU1MT1BUCisgIGZpCitlbHNlCisgIE9DQU1MT1BUPSIkYWNfY3ZfcHJvZ19PQ0FNTE9Q
VCIKK2ZpCisKKyAgICAgT0NBTUxCRVNUPWJ5dGUKKyAgICAgaWYgdGVzdCAiJE9DQU1MT1BUIiA9
ICJubyI7IHRoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdB
Uk5JTkc6IENhbm5vdCBmaW5kIG9jYW1sb3B0OyBieXRlY29kZSBjb21waWxhdGlvbiBvbmx5LiIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDYW5ub3QgZmluZCBvY2FtbG9wdDsgYnl0
ZWNvZGUgY29tcGlsYXRpb24gb25seS4iID4mMjt9CisgICAgIGVsc2UKKwlUTVBWRVJTSU9OPWAk
T0NBTUxPUFQgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJyBgCisJ
aWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRoZW4KKwkgICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHZlcnNpb25zIGRp
ZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2NhcmRlZC4iID4mNQorJGFzX2VjaG8gInZl
cnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2NhcmRlZC4iID4mNjsgfQor
CSAgICBPQ0FNTE9QVD1ubworCWVsc2UKKwkgICAgT0NBTUxCRVNUPW9wdAorCWZpCisgICAgIGZp
CisKKworCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sYy5vcHQKKyAgICAgaWYgdGVzdCAtbiAi
JGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7
YWNfdG9vbF9wcmVmaXh9b2NhbWxjLm9wdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3
aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2FtbGMub3B0OyBhY193b3Jk
PSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQrOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxDRE9U
T1BUIjsgdGhlbgorICBhY19jdl9wcm9nX09DQU1MQ0RPVE9QVD0iJE9DQU1MQ0RPVE9QVCIgIyBM
ZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1MQ0RPVE9QVD0i
JHthY190b29sX3ByZWZpeH1vY2FtbGMub3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQor
ICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQor
ZmkKK09DQU1MQ0RPVE9QVD0kYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQKK2lmIHRlc3QgLW4gIiRP
Q0FNTENET1RPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkT0NBTUxDRE9UT1BUIiA+JjUKKyRhc19lY2hvICIkT0NBTUxDRE9UT1BU
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0
ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQiOyB0aGVuCisgIGFjX2N0X09DQU1MQ0RP
VE9QVD0kT0NBTUxDRE9UT1BUCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxj
Lm9wdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkg
b2NhbWxjLm9wdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxDRE9U
T1BUKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MQ0RPVE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19h
Y19jdF9PQ0FNTENET1RPUFQ9IiRhY19jdF9PQ0FNTENET1RPUFQiICMgTGV0IHRoZSB1c2VyIG92
ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS
QVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0
IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNf
ZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTENET1RPUFQ9Im9jYW1sYy5v
cHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQor
ICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfT0NBTUxDRE9UT1BUPSRh
Y19jdl9wcm9nX2FjX2N0X09DQU1MQ0RPVE9QVAoraWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MQ0RP
VE9QVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdF9PQ0FNTENET1RPUFQiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTENE
T1RPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYg
dGVzdCAieCRhY19jdF9PQ0FNTENET1RPUFQiID0geDsgdGhlbgorICAgIE9DQU1MQ0RPVE9QVD0i
bm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGlu
Cit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H
OiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQor
JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk
IHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisg
ICAgT0NBTUxDRE9UT1BUPSRhY19jdF9PQ0FNTENET1RPUFQKKyAgZmkKK2Vsc2UKKyAgT0NBTUxD
RE9UT1BUPSIkYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQiCitmaQorCisgICAgIGlmIHRlc3QgIiRP
Q0FNTENET1RPUFQiICE9ICJubyI7IHRoZW4KKwlUTVBWRVJTSU9OPWAkT0NBTUxDRE9UT1BUIC12
IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCWlmIHRlc3QgIiRU
TVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB2ZXJzaW9ucyBkaWZmZXJzIGZyb20g
b2NhbWxjOyBvY2FtbGMub3B0IGRpc2NhcmRlZC4iID4mNQorJGFzX2VjaG8gInZlcnNpb25zIGRp
ZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sYy5vcHQgZGlzY2FyZGVkLiIgPiY2OyB9CisJZWxzZQor
CSAgICBPQ0FNTEM9JE9DQU1MQ0RPVE9QVAorCWZpCisgICAgIGZpCisKKyAgICAgIyBjaGVja2lu
ZyBmb3Igb2NhbWxvcHQub3B0CisgICAgIGlmIHRlc3QgIiRPQ0FNTE9QVCIgIT0gIm5vIiA7IHRo
ZW4KKwlpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUg
Zmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbG9wdC5vcHQiLCBzbyBpdCBjYW4g
YmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9
b2NhbWxvcHQub3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19PQ0FNTE9QVERPVE9Q
VCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGlmIHRlc3QgLW4gIiRPQ0FNTE9QVERPVE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTE9Q
VERPVE9QVD0iJE9DQU1MT1BURE9UT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVz
dC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19k
aXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIg
JiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0
ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgor
ICAgIGFjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxvcHQu
b3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUK
KyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09DQU1MT1BURE9UT1BUPSRhY19j
dl9wcm9nX09DQU1MT1BURE9UT1BUCitpZiB0ZXN0IC1uICIkT0NBTUxPUFRET1RPUFQiOyB0aGVu
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NB
TUxPUFRET1RPUFQiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE9QVERPVE9QVCIgPiY2OyB9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2
X3Byb2dfT0NBTUxPUFRET1RPUFQiOyB0aGVuCisgIGFjX2N0X09DQU1MT1BURE9UT1BUPSRPQ0FN
TE9QVERPVE9QVAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sb3B0Lm9wdCIs
IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxv
cHQub3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9Q
VCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE9QVERPVE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19h
Y19jdF9PQ0FNTE9QVERPVE9QVD0iJGFjX2N0X09DQU1MT1BURE9UT1BUIiAjIExldCB0aGUgdXNl
ciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T
RVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAg
dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg
JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRh
Y193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFRET1RPUFQ9Im9j
YW1sb3B0Lm9wdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBm
b3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZp
Citkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9PQ0FNTE9Q
VERPVE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9QVAoraWYgdGVzdCAtbiAiJGFj
X2N0X09DQU1MT1BURE9UT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MT1BURE9UT1BUIiA+JjUKKyRhc19lY2hv
ICIkYWNfY3RfT0NBTUxPUFRET1RPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+
JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTE9QVERPVE9QVCIgPSB4OyB0aGVu
CisgICAgT0NBTUxPUFRET1RPUFQ9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGls
aW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdp
dGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNy
b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xf
d2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MT1BURE9UT1BUPSRhY19jdF9PQ0FNTE9QVERP
VE9QVAorICBmaQorZWxzZQorICBPQ0FNTE9QVERPVE9QVD0iJGFjX2N2X3Byb2dfT0NBTUxPUFRE
T1RPUFQiCitmaQorCisJaWYgdGVzdCAiJE9DQU1MT1BURE9UT1BUIiAhPSAibm8iOyB0aGVuCisJ
ICAgVE1QVkVSU0lPTj1gJE9DQU1MT1BURE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lv
biogKlwoLipcKSR8XDF8cCcgYAorCSAgIGlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1M
VkVSU0lPTiIgOyB0aGVuCisJICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IHZlcnNpb24gZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxvcHQub3B0
IGRpc2NhcmRlZC4iID4mNQorJGFzX2VjaG8gInZlcnNpb24gZGlmZmVycyBmcm9tIG9jYW1sYzsg
b2NhbWxvcHQub3B0IGRpc2NhcmRlZC4iID4mNjsgfQorCSAgIGVsc2UKKwkgICAgICBPQ0FNTE9Q
VD0kT0NBTUxPUFRET1RPUFQKKwkgICBmaQorICAgICAgICBmaQorICAgICBmaQorCisKKyAgZmkK
KworCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWwgdG9wbGV2ZWwKKyAgaWYgdGVzdCAtbiAiJGFj
X3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNf
dG9vbF9wcmVmaXh9b2NhbWwiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz
Lgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWw7IGFjX3dvcmQ9JDIKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHth
Y19jdl9wcm9nX09DQU1MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE9DQU1MIjsgdGhlbgorICBhY19jdl9wcm9nX09D
QU1MPSIkT0NBTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAor
ZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0
X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJv
Z19PQ0FNTD0iJHthY190b29sX3ByZWZpeH1vY2FtbCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+
JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKwor
ZmkKK2ZpCitPQ0FNTD0kYWNfY3ZfcHJvZ19PQ0FNTAoraWYgdGVzdCAtbiAiJE9DQU1MIjsgdGhl
bgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE9D
QU1MIiA+JjUKKyRhc19lY2hvICIkT0NBTUwiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5v
IiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX09DQU1MIjsgdGhl
bgorICBhY19jdF9PQ0FNTD0kT0NBTUwKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJv
Y2FtbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkg
b2NhbWw7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAk
YWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X09DQU1MKzp9IGZhbHNl
OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAt
biAiJGFjX2N0X09DQU1MIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1MPSIkYWNfY3Rf
T0NBTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9J
RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAg
SUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZv
ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7
IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19j
dF9PQ0FNTD0ib2NhbWwiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgor
ICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfT0NB
TUw9JGFjX2N2X3Byb2dfYWNfY3RfT0NBTUwKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTCI7IHRo
ZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh
Y19jdF9PQ0FNTCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09DQU1MIiA+JjY7IH0KK2Vsc2UKKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK
KyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUwiID0g
eDsgdGhlbgorICAgIE9DQU1MPSJubyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGlu
ZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRo
IGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9z
cyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dh
cm5lZD15ZXMgOzsKK2VzYWMKKyAgICBPQ0FNTD0kYWNfY3RfT0NBTUwKKyAgZmkKK2Vsc2UKKyAg
T0NBTUw9IiRhY19jdl9wcm9nX09DQU1MIgorZmkKKworCisgICMgY2hlY2tpbmcgZm9yIG9jYW1s
ZGVwCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRo
ZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZGVwIiwgc28gaXQgY2FuIGJl
IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9j
YW1sZGVwOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19PQ0FNTERFUCs6fSBmYWxzZTsg
dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4g
IiRPQ0FNTERFUCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTERFUD0iJE9DQU1MREVQIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElG
Uz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2
ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19l
eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxERVA9IiR7YWNf
dG9vbF9wcmVmaXh9b2NhbWxkZXAiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorT0NB
TUxERVA9JGFjX2N2X3Byb2dfT0NBTUxERVAKK2lmIHRlc3QgLW4gIiRPQ0FNTERFUCI7IHRoZW4K
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FN
TERFUCIgPiY1CiskYXNfZWNobyAiJE9DQU1MREVQIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hv
ICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTERF
UCI7IHRoZW4KKyAgYWNfY3RfT0NBTUxERVA9JE9DQU1MREVQCisgICMgRXh0cmFjdCB0aGUgZmly
c3Qgd29yZCBvZiAib2NhbWxkZXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh
cmdzLgorc2V0IGR1bW15IG9jYW1sZGVwOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNo
b19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19h
Y19jdF9PQ0FNTERFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTERFUCI7IHRoZW4KKyAgYWNfY3Zf
cHJvZ19hY19jdF9PQ0FNTERFUD0iJGFjX2N0X09DQU1MREVQIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVA9Im9jYW1sZGVwIgorICAg
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQor
SUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1MREVQPSRhY19jdl9wcm9nX2Fj
X2N0X09DQU1MREVQCitpZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUxERVAiOyB0aGVuCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxE
RVAiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTERFUCIgPiY2OyB9CitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf
ZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1MREVQIiA9IHg7
IHRoZW4KKyAgICBPQ0FNTERFUD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxp
bmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0
aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jv
c3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93
YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxERVA9JGFjX2N0X09DQU1MREVQCisgIGZpCitl
bHNlCisgIE9DQU1MREVQPSIkYWNfY3ZfcHJvZ19PQ0FNTERFUCIKK2ZpCisKKworICAjIGNoZWNr
aW5nIGZvciBvY2FtbG1rdG9wCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4K
KyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sbWt0
b3AiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7
YWNfdG9vbF9wcmVmaXh9b2NhbWxta3RvcDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2df
T0NBTUxNS1RPUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTE1LVE9QIjsgdGhlbgorICBhY19jdl9wcm9nX09D
QU1MTUtUT1A9IiRPQ0FNTE1LVE9QIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K
K2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIg
aW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg
YXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z
aW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm
JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAg
IGFjX2N2X3Byb2dfT0NBTUxNS1RPUD0iJHthY190b29sX3ByZWZpeH1vY2FtbG1rdG9wIgorICAg
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQor
SUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09DQU1MTUtUT1A9JGFjX2N2X3Byb2dfT0NBTUxN
S1RPUAoraWYgdGVzdCAtbiAiJE9DQU1MTUtUT1AiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxNS1RPUCIgPiY1CiskYXNfZWNo
byAiJE9DQU1MTUtUT1AiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2Zp
CisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX09DQU1MTUtUT1AiOyB0aGVuCisgIGFj
X2N0X09DQU1MTUtUT1A9JE9DQU1MTUtUT1AKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m
ICJvY2FtbG1rdG9wIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3Nl
dCBkdW1teSBvY2FtbG1rdG9wOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJj
aGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9P
Q0FNTE1LVE9QKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
K2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MTUtUT1AiOyB0aGVuCisgIGFjX2N2X3By
b2dfYWNfY3RfT0NBTUxNS1RPUD0iJGFjX2N0X09DQU1MTUtUT1AiICMgTGV0IHRoZSB1c2VyIG92
ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS
QVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0
IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNf
ZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LVE9QPSJvY2FtbG1rdG9w
IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19k
aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAg
ZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1MTUtUT1A9JGFjX2N2
X3Byb2dfYWNfY3RfT0NBTUxNS1RPUAoraWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MTUtUT1AiOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
YWNfY3RfT0NBTUxNS1RPUCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09DQU1MTUtUT1AiID4mNjsg
fQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19j
dF9PQ0FNTE1LVE9QIiA9IHg7IHRoZW4KKyAgICBPQ0FNTE1LVE9QPSJubyIKKyAgZWxzZQorICAg
IGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRv
b2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21l
OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBs
ZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBPQ0FNTE1LVE9QPSRh
Y19jdF9PQ0FNTE1LVE9QCisgIGZpCitlbHNlCisgIE9DQU1MTUtUT1A9IiRhY19jdl9wcm9nX09D
QU1MTUtUT1AiCitmaQorCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxta2xpYgorICBpZiB0ZXN0
IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBv
ZiAiJHthY190b29sX3ByZWZpeH1vY2FtbG1rbGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBu
YW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sbWtsaWI7IGFj
X3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4u
LiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX09DQU1MTUtMSUIrOn0gZmFsc2U7IHRoZW4gOgor
ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkT0NBTUxN
S0xJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTE1LTElCPSIkT0NBTUxNS0xJQiIgIyBMZXQg
dGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9
JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVf
SUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0
IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09DQU1MTUtMSUI9IiR7YWNf
dG9vbF9wcmVmaXh9b2NhbWxta2xpYiIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitP
Q0FNTE1LTElCPSRhY19jdl9wcm9nX09DQU1MTUtMSUIKK2lmIHRlc3QgLW4gIiRPQ0FNTE1LTElC
IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJE9DQU1MTUtMSUIiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE1LTElCIiA+JjY7IH0KK2Vsc2UK
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+
JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3Zf
cHJvZ19PQ0FNTE1LTElCIjsgdGhlbgorICBhY19jdF9PQ0FNTE1LTElCPSRPQ0FNTE1LTElCCisg
ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxta2xpYiIsIHNvIGl0IGNhbiBiZSBh
IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxta2xpYjsgYWNfd29yZD0k
MgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS0xJQis6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9P
Q0FNTE1LTElCIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1MTUtMSUI9IiRhY19jdF9P
Q0FNTE1LTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3Nh
dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2Rv
CisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAg
ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAg
aWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94
ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2df
YWNfY3RfT0NBTUxNS0xJQj0ib2NhbWxta2xpYiIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUK
KyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkK
K2ZpCithY19jdF9PQ0FNTE1LTElCPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MTUtMSUIKK2lmIHRl
c3QgLW4gIiRhY19jdF9PQ0FNTE1LTElCIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MTUtMSUIiID4mNQorJGFzX2Vj
aG8gIiRhY19jdF9PQ0FNTE1LTElCIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxNS0xJQiIgPSB4OyB0aGVuCisgICAg
T0NBTUxNS0xJQj0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rv
b2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRy
aXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMg
bm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVz
IDs7Citlc2FjCisgICAgT0NBTUxNS0xJQj0kYWNfY3RfT0NBTUxNS0xJQgorICBmaQorZWxzZQor
ICBPQ0FNTE1LTElCPSIkYWNfY3ZfcHJvZ19PQ0FNTE1LTElCIgorZmkKKworCisgICMgY2hlY2tp
bmcgZm9yIG9jYW1sZG9jCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAg
IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZG9jIiwg
c28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rv
b2xfcHJlZml4fW9jYW1sZG9jOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJj
aGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19PQ0FNTERP
Qys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGlmIHRlc3QgLW4gIiRPQ0FNTERPQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTERPQz0iJE9D
QU1MRE9DIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NB
TUxET0M9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxkb2MiCisgICAgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg
PiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisK
K2ZpCitmaQorT0NBTUxET0M9JGFjX2N2X3Byb2dfT0NBTUxET0MKK2lmIHRlc3QgLW4gIiRPQ0FN
TERPQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRPQ0FNTERPQyIgPiY1CiskYXNfZWNobyAiJE9DQU1MRE9DIiA+JjY7IH0KK2Vsc2UK
KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+
JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3Zf
cHJvZ19PQ0FNTERPQyI7IHRoZW4KKyAgYWNfY3RfT0NBTUxET0M9JE9DQU1MRE9DCisgICMgRXh0
cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxkb2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sZG9jOyBhY193b3JkPSQyCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7
YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERPQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTERPQyI7IHRo
ZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERPQz0iJGFjX2N0X09DQU1MRE9DIiAjIExldCB0
aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0k
UEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9J
RlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQg
aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxET0M9Im9j
YW1sZG9jIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5k
ICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2Rv
bmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1MRE9DPSRh
Y19jdl9wcm9nX2FjX2N0X09DQU1MRE9DCitpZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUxET0MiOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
YWNfY3RfT0NBTUxET0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTERPQyIgPiY2OyB9Citl
bHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu
byIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X09D
QU1MRE9DIiA9IHg7IHRoZW4KKyAgICBPQ0FNTERPQz0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRj
cm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3Qg
cHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7
fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxET0M9JGFjX2N0X09DQU1M
RE9DCisgIGZpCitlbHNlCisgIE9DQU1MRE9DPSIkYWNfY3ZfcHJvZ19PQ0FNTERPQyIKK2ZpCisK
KworICAjIGNoZWNraW5nIGZvciBvY2FtbGJ1aWxkCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3By
ZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJl
Zml4fW9jYW1sYnVpbGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgor
c2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxidWlsZDsgYWNfd29yZD0kMgoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQi
ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAk
e2FjX2N2X3Byb2dfT0NBTUxCVUlMRCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTEJVSUxEIjsgdGhlbgorICBh
Y19jdl9wcm9nX09DQU1MQlVJTEQ9IiRPQ0FNTEJVSUxEIiAjIExldCB0aGUgdXNlciBvdmVycmlk
ZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK
K2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAi
JGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1
dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0Ijsg
fTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxCVUlMRD0iJHthY190b29sX3ByZWZpeH1vY2Ft
bGJ1aWxkIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5k
ICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2Rv
bmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09DQU1MQlVJTEQ9JGFjX2N2
X3Byb2dfT0NBTUxCVUlMRAoraWYgdGVzdCAtbiAiJE9DQU1MQlVJTEQiOyB0aGVuCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxCVUlMRCIg
PiY1CiskYXNfZWNobyAiJE9DQU1MQlVJTEQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5v
IiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX09DQU1MQlVJTEQi
OyB0aGVuCisgIGFjX2N0X09DQU1MQlVJTEQ9JE9DQU1MQlVJTEQKKyAgIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICJvY2FtbGJ1aWxkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp
dGggYXJncy4KK3NldCBkdW1teSBvY2FtbGJ1aWxkOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zf
cHJvZ19hY19jdF9PQ0FNTEJVSUxEKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MQlVJTEQiOyB0aGVu
CisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRD0iJGFjX2N0X09DQU1MQlVJTEQiICMgTGV0
IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZl
X0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4
dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEJVSUxE
PSJvY2FtbGJ1aWxkIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAg
ZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1M
QlVJTEQ9JGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRAoraWYgdGVzdCAtbiAiJGFjX2N0X09D
QU1MQlVJTEQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3RfT0NBTUxCVUlMRCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09DQU1M
QlVJTEQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYg
dGVzdCAieCRhY19jdF9PQ0FNTEJVSUxEIiA9IHg7IHRoZW4KKyAgICBPQ0FNTEJVSUxEPSJubyIK
KyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3ll
czopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVz
aW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0
aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBP
Q0FNTEJVSUxEPSRhY19jdF9PQ0FNTEJVSUxECisgIGZpCitlbHNlCisgIE9DQU1MQlVJTEQ9IiRh
Y19jdl9wcm9nX09DQU1MQlVJTEQiCitmaQorCisKKyAgICBpZiB0ZXN0ICJ4JE9DQU1MQyIgPSAi
eG5vIjsgdGhlbiA6CisKKyAgICAgICAgaWYgdGVzdCAieCRlbmFibGVfb2NhbWx0b29scyIgPSAi
eHllcyI7IHRoZW4gOgorCisgICAgICAgICAgICBhc19mbl9lcnJvciAkPyAiT2NhbWwgdG9vbHMg
ZW5hYmxlZCwgYnV0IHVuYWJsZSB0byBmaW5kIE9jYW1sIiAiJExJTkVOTyIgNQorZmkKKyAgICAg
ICAgb2NhbWx0b29scz0ibiIKKworZmkKKworZmkKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBv
ZiAiYmFzaCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVt
bXkgYmFzaDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y
ICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQkFTSCs6fSBmYWxzZTsgdGhl
biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJEJBU0ggaW4K
KyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfQkFTSD0iJEJBU0giICMgTGV0IHRo
ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRo
X0JBU0g9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZT
CisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQkFTSCIgJiYgYWNfY3ZfcGF0aF9CQVNIPSJubyIK
KyAgOzsKK2VzYWMKK2ZpCitCQVNIPSRhY19jdl9wYXRoX0JBU0gKK2lmIHRlc3QgLW4gIiRCQVNI
IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJEJBU0giID4mNQorJGFzX2VjaG8gIiRCQVNIIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hv
ICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3QgeCIke0JBU0h9IiA9PSB4Im5vIgordGhlbgor
ICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCBiYXNoLCBwbGVhc2UgaW5zdGFsbCBi
YXNoIiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3QgIngkcHl0aG9udG9vbHMiID0gInh5IjsgdGhl
biA6CisKKyAgICBpZiBlY2hvICIkUFlUSE9OIiB8IGdyZXAgLXEgIl4vIjsgdGhlbiA6CisKKyAg
ICAgICAgUFlUSE9OUEFUSD0kUFlUSE9OCisgICAgICAgIFBZVEhPTj1gYmFzZW5hbWUgJFBZVEhP
TlBBVEhgCisKK2VsaWYgdGVzdCAteiAiJFBZVEhPTiI7IHRoZW4gOgorICBQWVRIT049InB5dGhv
biIKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8gIlBZVEhPTiBzcGVjaWZpZWQsIGJ1dCBpcyBub3Qg
YW4gYWJzb2x1dGUgcGF0aCIgIiRMSU5FTk8iIDUKK2ZpCisgICAgIyBFeHRyYWN0IHRoZSBmaXJz
dCB3b3JkIG9mICIkUFlUSE9OIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSAkUFlUSE9OOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9QWVRI
T05QQVRIKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgY2FzZSAkUFlUSE9OUEFUSCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3Zf
cGF0aF9QWVRIT05QQVRIPSIkUFlUSE9OUEFUSCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl
IHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0k
UEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9J
RlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQg
aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfUFlUSE9OUEFUSD0iJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16
ICIkYWNfY3ZfcGF0aF9QWVRIT05QQVRIIiAmJiBhY19jdl9wYXRoX1BZVEhPTlBBVEg9Im5vIgor
ICA7OworZXNhYworZmkKK1BZVEhPTlBBVEg9JGFjX2N2X3BhdGhfUFlUSE9OUEFUSAoraWYgdGVz
dCAtbiAiJFBZVEhPTlBBVEgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkUFlUSE9OUEFUSCIgPiY1CiskYXNfZWNobyAiJFBZVEhPTlBB
VEgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVz
dCB4IiR7UFlUSE9OUEFUSH0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVu
YWJsZSB0byBmaW5kICRQWVRIT04sIHBsZWFzZSBpbnN0YWxsICRQWVRIT04iICIkTElORU5PIiA1
CitmaQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yIHB5dGhvbiB2ZXJzaW9uID49IDIuMyAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHB5dGhvbiB2ZXJzaW9uID49IDIuMyAuLi4gIiA+JjY7IH0KK2AkUFlUSE9OIC1jICdpbXBv
cnQgc3lzOyBleGl0KGV2YWwoInN5cy52ZXJzaW9uX2luZm8gPCAoMiwgMykiKSknYAoraWYgdGVz
dCAiJD8iICE9ICIwIgordGhlbgorICAgIHB5dGhvbl92ZXJzaW9uPWAkUFlUSE9OIC1WIDI+JjFg
CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gIiRweXRob25f
dmVyc2lvbiBpcyB0b28gb2xkLCBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb24gaXMgMi4zIiAiJExJ
TkVOTyIgNQorZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitmaQorICAgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB5dGhvbiB4
bWwuZG9tLm1pbmlkb20iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiB4bWwu
ZG9tLm1pbmlkb20uLi4gIiA+JjY7IH0KK2AkUFlUSE9OIC1jICdpbXBvcnQgeG1sLmRvbS5taW5p
ZG9tJ2AKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KKyAgICBhc19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgeG1sLmRvbS5taW5pZG9tIG1v
ZHVsZSIgIiRMSU5FTk8iIDUKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkK
KyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciBweXRob24gZGV2ZWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiBkZXZl
bC4uLiAiID4mNjsgfQorCitgJFBZVEhPTiAtYyAnCitpbXBvcnQgb3MucGF0aCwgc3lzCitmb3Ig
cCBpbiBzeXMucGF0aDoKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhwICsgIi9jb25maWcvTWFrZWZp
bGUiKToKKyAgICAgICAgc3lzLmV4aXQoMCkKK3N5cy5leGl0KDEpCisnID4gL2Rldi9udWxsIDI+
JjFgCisKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KKyAgICBhc19mbl9lcnJvciAkPyAiUHl0aG9uIGRldmVsIHBhY2thZ2Ugbm90IGZvdW5kIiAi
JExJTkVOTyIgNQorZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitmaQorCitmaQor
IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ4Z2V0dGV4dCIsIHNvIGl0IGNhbiBiZSBhIHBy
b2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgeGdldHRleHQ7IGFjX3dvcmQ9JDIKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193
b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQor
aWYgJHthY19jdl9wYXRoX1hHRVRURVhUKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAi
KGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkWEdFVFRFWFQgaW4KKyAgW1xcL10qIHwgPzpb
XFwvXSopCisgIGFjX2N2X3BhdGhfWEdFVFRFWFQ9IiRYR0VUVEVYVCIgIyBMZXQgdGhlIHVzZXIg
b3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZT
PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElG
Uz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig
YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0
ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfWEdFVFRF
WFQ9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg
PiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisK
KyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfWEdFVFRFWFQiICYmIGFjX2N2X3BhdGhfWEdFVFRFWFQ9
Im5vIgorICA7OworZXNhYworZmkKK1hHRVRURVhUPSRhY19jdl9wYXRoX1hHRVRURVhUCitpZiB0
ZXN0IC1uICIkWEdFVFRFWFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkWEdFVFRFWFQiID4mNQorJGFzX2VjaG8gIiRYR0VUVEVYVCIg
PiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitpZiB0ZXN0IHgi
JHtYR0VUVEVYVH0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0
byBmaW5kIHhnZXR0ZXh0LCBwbGVhc2UgaW5zdGFsbCB4Z2V0dGV4dCIgIiRMSU5FTk8iIDUKK2Zp
CitpZiB0ZXN0ICJ4JGhvc3Rfb3MiID09ICJ4bGludXgtZ251IgordGhlbgorICAgICMgRXh0cmFj
dCB0aGUgZmlyc3Qgd29yZCBvZiAidWRldmFkbSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgdWRldmFkbTsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2
X3BhdGhfVURFVkFETSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGNhc2UgJFVERVZBRE0gaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFj
X2N2X3BhdGhfVURFVkFETT0iJFVERVZBRE0iICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0
ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB
VEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZT
CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu
ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1VERVZBRE09IiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsg
MgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFj
X2N2X3BhdGhfVURFVkFETSIgJiYgYWNfY3ZfcGF0aF9VREVWQURNPSJubyIKKyAgOzsKK2VzYWMK
K2ZpCitVREVWQURNPSRhY19jdl9wYXRoX1VERVZBRE0KK2lmIHRlc3QgLW4gIiRVREVWQURNIjsg
dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JFVERVZBRE0iID4mNQorJGFzX2VjaG8gIiRVREVWQURNIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19l
Y2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICBpZiB0ZXN0IHgiJHtVREVWQURNfSIgPT0geCJu
byIKKyAgICB0aGVuCisgICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAidWRldmlu
Zm8iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHVk
ZXZpbmZvOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9VREVWSU5GTys6fSBmYWxzZTsg
dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFVERVZJ
TkZPIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1VERVZJTkZPPSIkVURF
VklORk8iICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7
OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNf
ZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIi
ICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4
dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4K
KyAgICBhY19jdl9wYXRoX1VERVZJTkZPPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0Igor
ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1VERVZJTkZPIiAm
JiBhY19jdl9wYXRoX1VERVZJTkZPPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitVREVWSU5GTz0kYWNf
Y3ZfcGF0aF9VREVWSU5GTworaWYgdGVzdCAtbiAiJFVERVZJTkZPIjsgdGhlbgorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFVERVZJTkZPIiA+JjUK
KyRhc19lY2hvICIkVURFVklORk8iID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KK2ZpCisKKworICAgICAgICBpZiB0ZXN0IHgiJHtVREVWSU5GT30iID09IHgibm8iCisgICAg
ICAgIHRoZW4KKyAgICAgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCB1ZGV2
YWRtIG9yIHVkZXZpbmZvLCBwbGVhc2UgaW5zdGFsbCB1ZGV2IiAiJExJTkVOTyIgNQorICAgICAg
ICBmaQorICAgICAgICB1ZGV2dmVyPWAke1VERVZJTkZPfSAtViB8IGF3ayAne3ByaW50ICRORn0n
YAorICAgIGVsc2UKKyAgICAgICAgdWRldnZlcj1gJHtVREVWQURNfSBpbmZvIC1WIHwgYXdrICd7
cHJpbnQgJE5GfSdgCisgICAgZmkKKyAgICBpZiB0ZXN0ICR7dWRldnZlcn0gLWx0IDU5CisgICAg
dGhlbgorICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImhvdHBsdWciLCBzbyBp
dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGhvdHBsdWc7IGFj
X3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4u
LiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0hPVFBMVUcrOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRIT1RQTFVHIGluCisgIFtc
XC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0hPVFBMVUc9IiRIT1RQTFVHIiAjIExldCB0
aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAor
ZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0
X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0
aF9IT1RQTFVHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZl
X0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0hPVFBMVUciICYmIGFjX2N2X3BhdGhfSE9U
UExVRz0ibm8iCisgIDs7Citlc2FjCitmaQorSE9UUExVRz0kYWNfY3ZfcGF0aF9IT1RQTFVHCitp
ZiB0ZXN0IC1uICIkSE9UUExVRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRIT1RQTFVHIiA+JjUKKyRhc19lY2hvICIkSE9UUExVRyIg
PiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgICAgIGlm
IHRlc3QgeCIke0hPVFBMVUd9IiA9PSB4Im5vIgorICAgICAgICB0aGVuCisgICAgICAgICAgICBh
c19mbl9lcnJvciAkPyAidWRldiBpcyB0b28gb2xkLCB1cGdyYWRlIHRvIHZlcnNpb24gNTkgb3Ig
bGF0ZXIiICIkTElORU5PIiA1CisgICAgICAgIGZpCisgICAgZmkKK2Vsc2UKKyAgICAjIEV4dHJh
Y3QgdGhlIGZpcnN0IHdvcmQgb2YgInZuY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBu
YW1lIHdpdGggYXJncy4KK3NldCBkdW1teSB2bmNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2Fj
X2N2X3BhdGhfVk5DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgorZWxzZQorICBjYXNlICRWTkNPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikK
KyAgYWNfY3ZfcGF0aF9WTkNPTkZJRz0iJFZOQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlk
ZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsg
SUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19z
YXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYg
IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9WTkNPTkZJRz0iJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0
IC16ICIkYWNfY3ZfcGF0aF9WTkNPTkZJRyIgJiYgYWNfY3ZfcGF0aF9WTkNPTkZJRz0ibm8iCisg
IDs7Citlc2FjCitmaQorVk5DT05GSUc9JGFjX2N2X3BhdGhfVk5DT05GSUcKK2lmIHRlc3QgLW4g
IiRWTkNPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRWTkNPTkZJRyIgPiY1CiskYXNfZWNobyAiJFZOQ09ORklHIiA+JjY7IH0K
K2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICBpZiB0ZXN0IHgiJHtW
TkNPTkZJR30iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiTm90
IGEgTGludXggc3lzdGVtIGFuZCB1bmFibGUgdG8gZmluZCB2bmQiICIkTElORU5PIiA1CisgICAg
ZmkKK2ZpCisKK2lmIHRlc3QgIngkaG9zdF9vcyIgPT0gInhsaW51eC1nbnUiCit0aGVuCisgICAg
YWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInV1aWQvdXVpZC5oIiAiYWNf
Y3ZfaGVhZGVyX3V1aWRfdXVpZF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4
JGFjX2N2X2hlYWRlcl91dWlkX3V1aWRfaCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorICBhc19m
bl9lcnJvciAkPyAiY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzIiAiJExJTkVOTyIgNQorZmkKKwor
CitlbHNlCisgICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInV1aWQu
aCIgImFjX2N2X2hlYWRlcl91dWlkX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3Qg
IngkYWNfY3ZfaGVhZGVyX3V1aWRfaCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorICBhc19mbl9l
cnJvciAkPyAiY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzIiAiJExJTkVOTyIgNQorZmkKKworCitm
aQorCisKKyMgQ2hlY2sgbGlicmFyeSBwYXRoCitpZiB0ZXN0IC1kICIkcHJlZml4L2xpYjY0Ijsg
dGhlbiA6CisKKyAgICBMSUJfUEFUSD0ibGliNjQiCisKK2Vsc2UKKworICAgIExJQl9QQVRIPSJs
aWIiCisKK2ZpCisKKworIyBDaGVja3MgZm9yIGxpYnJhcmllcy4KK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlvX3NldHVwIGluIC1sYWlvIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpb19zZXR1cCBpbiAtbGFpby4uLiAiID4mNjsg
fQoraWYgJHthY19jdl9saWJfYWlvX2lvX3NldHVwKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElC
UworTElCUz0iLWxhaW8gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0ND
IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1
c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBh
bmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGlvX3NldHVwICgpOwor
aW50CittYWluICgpCit7CityZXR1cm4gaW9fc2V0dXAgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9
CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zf
bGliX2Fpb19pb19zZXR1cD15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2Fpb19pb19zZXR1cD1ubwor
ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2
ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRhY19jdl9saWJfYWlvX2lvX3NldHVwIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2Fp
b19pb19zZXR1cCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9haW9faW9fc2V0dXAiID0g
eHllczsgdGhlbiA6CisgIHN5c3RlbV9haW89InkiCitlbHNlCisgIHN5c3RlbV9haW89Im4iCitm
aQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yIE1ENSBpbiAtbGNyeXB0byIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTUQ1IGlu
IC1sY3J5cHRvLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9jcnlwdG9fTUQ1Kzp9IGZhbHNl
OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tf
bGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxjcnlwdG8gICRMSUJTIgorY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor
CisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv
ci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv
ZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxk
IHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlm
CitjaGFyIE1ENSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIE1ENSAoKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBhY19jdl9saWJfY3J5cHRvX01ENT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2NyeXB0b19N
RDU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwK
KyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tf
bGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3ZfbGliX2NyeXB0b19NRDUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9s
aWJfY3J5cHRvX01ENSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jcnlwdG9fTUQ1IiA9
IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVf
TElCQ1JZUFRPIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sY3J5cHRvICRMSUJTIgorCitlbHNlCisg
IGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBsaWJjcnlwdG8iICIkTElORU5PIiA1Citm
aQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciBleHQyZnNfb3BlbjIgaW4gLWxleHQyZnMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y
IGV4dDJmc19vcGVuMiBpbiAtbGV4dDJmcy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfZXh0
MmZzX2V4dDJmc19vcGVuMis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZXh0
MmZzICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBw
cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdo
dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRz
IGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBleHQyZnNfb3BlbjIgKCk7CitpbnQKK21h
aW4gKCkKK3sKK3JldHVybiBleHQyZnNfb3BlbjIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9Citf
QUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGli
X2V4dDJmc19leHQyZnNfb3BlbjI9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9leHQyZnNfZXh0MmZz
X29wZW4yPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yIiA+JjUKKyRhc19l
Y2hvICIkYWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIiID4mNjsgfQoraWYgdGVzdCAieCRh
Y19jdl9saWJfZXh0MmZzX2V4dDJmc19vcGVuMiIgPSB4eWVzOyB0aGVuIDoKKyAgbGliZXh0MmZz
PSJ5IgorZWxzZQorICBsaWJleHQyZnM9Im4iCitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdjcnlfbWRfaGFzaF9idWZmZXIgaW4g
LWxnY3J5cHQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdjcnlfbWRfaGFzaF9idWZm
ZXIgaW4gLWxnY3J5cHQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2djcnlwdF9nY3J5X21k
X2hhc2hfYnVmZmVyKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxnY3J5cHQg
ICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog
ZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3Rv
dHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h
dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJn
dW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGdjcnlfbWRfaGFzaF9idWZmZXIgKCk7CitpbnQK
K21haW4gKCkKK3sKK3JldHVybiBnY3J5X21kX2hhc2hfYnVmZmVyICgpOworICA7CisgIHJldHVy
biAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Cisg
IGFjX2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlcj15ZXMKK2Vsc2UKKyAgYWNfY3Zf
bGliX2djcnlwdF9nY3J5X21kX2hhc2hfYnVmZmVyPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVz
dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0
ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9nY3J5cHRf
Z2NyeV9tZF9oYXNoX2J1ZmZlciIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9nY3J5cHRfZ2Ny
eV9tZF9oYXNoX2J1ZmZlciIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9nY3J5cHRfZ2Ny
eV9tZF9oYXNoX2J1ZmZlciIgPSB4eWVzOyB0aGVuIDoKKyAgbGliZ2NyeXB0PSJ5IgorZWxzZQor
ICBsaWJnY3J5cHQ9Im4iCitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZCIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkLi4uICIg
PiY2OyB9CitpZiAke2FjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlKzp9IGZhbHNlOyB0
aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGli
X3NhdmVfTElCUz0kTElCUworTElCUz0iLWxwdGhyZWFkICAkTElCUyIKK2NhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKwor
LyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3Iu
CisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg
YSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBz
dGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgor
Y2hhciBwdGhyZWFkX2NyZWF0ZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHB0aHJlYWRf
Y3JlYXRlICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9s
aW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRl
PXllcworZWxzZQorICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZT1ubworZmkKK3Jt
IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJT
CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh
Y19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xp
Yl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3B0
aHJlYWRfcHRocmVhZF9jcmVhdGUiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKyAgYXNfZm5fZXJy
b3IgJD8gIkNvdWxkIG5vdCBmaW5kIGxpYnB0aHJlYWQiICIkTElORU5PIiA1CitmaQorCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19n
ZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRp
bWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSs6
fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFj
X2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAq
LworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl
cnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlw
ZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdv
dWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2Vu
ZGlmCitjaGFyIGNsb2NrX2dldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9j
a19nZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3Ry
eV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPXll
cworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4
dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJf
cnRfY2xvY2tfZ2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0
aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID0geHll
czsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJS
VCAxCitfQUNFT0YKKworICBMSUJTPSItbHJ0ICRMSUJTIgorCitmaQorCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1dWlkX2NsZWFyIGluIC1s
dXVpZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdXVpZF9jbGVhciBpbiAtbHV1aWQu
Li4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcis6fSBmYWxzZTsgdGhl
biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9z
YXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sdXVpZCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92
ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAg
VXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0ND
CisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwg
YXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIg
dXVpZF9jbGVhciAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHV1aWRfY2xlYXIgKCk7Cisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i
OyB0aGVuIDoKKyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhcj15ZXMKK2Vsc2UKKyAgYWNfY3Zf
bGliX3V1aWRfdXVpZF9jbGVhcj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0
ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0
CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdXVpZF91dWlkX2NsZWFyIiA+
JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVhciIgPiY2OyB9CitpZiB0ZXN0
ICJ4JGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJVVUlEIDEKK19BQ0VPRgorCisgIExJ
QlM9Ii1sdXVpZCAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZp
bmQgbGlidXVpZCIgIiRMSU5FTk8iIDUKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHlhamxfYWxsb2MgaW4gLWx5YWpsIiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIGZvciB5YWpsX2FsbG9jIGluIC1seWFqbC4uLiAiID4mNjsgfQor
aWYgJHthY19jdl9saWJfeWFqbF95YWpsX2FsbG9jKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElC
UworTElCUz0iLWx5YWpsICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdD
QyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNh
dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4g
YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciB5YWpsX2FsbG9jICgp
OworaW50CittYWluICgpCit7CityZXR1cm4geWFqbF9hbGxvYyAoKTsKKyAgOworICByZXR1cm4g
MDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBh
Y19jdl9saWJfeWFqbF95YWpsX2FsbG9jPXllcworZWxzZQorICBhY19jdl9saWJfeWFqbF95YWps
X2FsbG9jPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl95YWpsX3lhamxfYWxsb2MiID4mNQorJGFzX2VjaG8g
IiRhY19jdl9saWJfeWFqbF95YWpsX2FsbG9jIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGli
X3lhamxfeWFqbF9hbGxvYyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgorI2RlZmluZSBIQVZFX0xJQllBSkwgMQorX0FDRU9GCisKKyAgTElCUz0iLWx5YWpsICRM
SUJTIgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCB5YWpsIiAiJExJ
TkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgZGVmbGF0ZUNvcHkgaW4gLWx6IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBkZWZsYXRlQ29weSBpbiAtbHouLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3pfZGVm
bGF0ZUNvcHkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor
ZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHogICRMSUJTIgor
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk
ZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBh
dm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy
ZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJv
dG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIgorI2VuZGlmCitjaGFyIGRlZmxhdGVDb3B5ICgpOworaW50CittYWluICgpCit7CityZXR1
cm4gZGVmbGF0ZUNvcHkgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2Zu
X2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3pfZGVmbGF0ZUNvcHk9
eWVzCitlbHNlCisgIGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5PW5vCitmaQorcm0gLWYgY29yZSBj
b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0
IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl96
X2RlZmxhdGVDb3B5IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3pfZGVmbGF0ZUNvcHkiID4m
NjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfel9kZWZsYXRlQ29weSIgPSB4eWVzOyB0aGVuIDoK
KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlogMQorX0FDRU9G
CisKKyAgTElCUz0iLWx6ICRMSUJTIgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBu
b3QgZmluZCB6bGliIiAiJExJTkVOTyIgNQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbGliaWNvbnZfb3BlbiBpbiAtbGljb252IiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBsaWJpY29udl9vcGVuIGluIC1saWNvbnYuLi4g
IiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2ljb252X2xpYmljb252X29wZW4rOn0gZmFsc2U7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJf
c2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGljb252ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyog
T3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisg
ICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBH
Q0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGls
bCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hh
ciBsaWJpY29udl9vcGVuICgpOworaW50CittYWluICgpCit7CityZXR1cm4gbGliaWNvbnZfb3Bl
biAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAi
JExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3Blbj15ZXMKK2Vs
c2UKKyAgYWNfY3ZfbGliX2ljb252X2xpYmljb252X29wZW49bm8KK2ZpCitybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQg
Y29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2lj
b252X2xpYmljb252X29wZW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfaWNvbnZfbGliaWNv
bnZfb3BlbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9pY29udl9saWJpY29udl9vcGVu
IiA9IHh5ZXM7IHRoZW4gOgorICBsaWJpY29udj0ieSIKK2Vsc2UKKyAgbGliaWNvbnY9Im4iCitm
aQorCisKKworIyBBdXRvc2NhbiBzdHVmZiAoZXhjZXB0IGZvciB5YWpsL3lhamxfdmVyc2lvbi5o
IGNoZWNrKQorIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KK2FjX2ZuX2NfY2hlY2tfdHlwZSAi
JExJTkVOTyIgInNpemVfdCIgImFjX2N2X3R5cGVfc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1
bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNl
CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgc2l6ZV90IHVuc2lnbmVkIGlu
dAorX0FDRU9GCisKK2ZpCisKKyMgVGhlIFVsdHJpeCA0LjIgbWlwcyBidWlsdGluIGFsbG9jYSBk
ZWNsYXJlZCBieSBhbGxvY2EuaCBvbmx5IHdvcmtzCisjIGZvciBjb25zdGFudCBhcmd1bWVudHMu
ICBVc2VsZXNzIQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
d29ya2luZyBhbGxvY2EuaC4uLiAiID4mNjsgfQoraWYgJHthY19jdl93b3JraW5nX2FsbG9jYV9o
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk
ZWZzLmguICAqLworI2luY2x1ZGUgPGFsbG9jYS5oPgoraW50CittYWluICgpCit7CitjaGFyICpw
ID0gKGNoYXIgKikgYWxsb2NhICgyICogc2l6ZW9mIChpbnQpKTsKKwkJCSAgaWYgKHApIHJldHVy
biAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3dvcmtpbmdfYWxsb2NhX2g9eWVzCitlbHNlCisgIGFj
X2N2X3dvcmtpbmdfYWxsb2NhX2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4
dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
YWNfY3Zfd29ya2luZ19hbGxvY2FfaCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3dvcmtpbmdfYWxs
b2NhX2giID4mNjsgfQoraWYgdGVzdCAkYWNfY3Zfd29ya2luZ19hbGxvY2FfaCA9IHllczsgdGhl
bgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FMTE9DQV9IIDEiID4+Y29uZmRlZnMuaAorCitm
aQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciBhbGxvY2EiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFsbG9jYS4uLiAiID4mNjsg
fQoraWYgJHthY19jdl9mdW5jX2FsbG9jYV93b3Jrcys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZmRlZiBfX0dOVUNf
XworIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKKyNlbHNlCisjIGlmZGVmIF9NU0Nf
VkVSCisjICBpbmNsdWRlIDxtYWxsb2MuaD4KKyMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQorIyBl
bHNlCisjICBpZmRlZiBIQVZFX0FMTE9DQV9ICisjICAgaW5jbHVkZSA8YWxsb2NhLmg+CisjICBl
bHNlCisjICAgaWZkZWYgX0FJWAorICNwcmFnbWEgYWxsb2NhCisjICAgZWxzZQorIyAgICBpZm5k
ZWYgYWxsb2NhIC8qIHByZWRlZmluZWQgYnkgSFAgY2MgK09saWJjYWxscyAqLwordm9pZCAqYWxs
b2NhIChzaXplX3QpOworIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgor
I2VuZGlmCisKK2ludAorbWFpbiAoKQoreworY2hhciAqcCA9IChjaGFyICopIGFsbG9jYSAoMSk7
CisJCQkJICAgIGlmIChwKSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgor
aWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX2FsbG9j
YV93b3Jrcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9bm8KK2ZpCitybSAt
ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRh
Y19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MiID4mNQorJGFz
X2VjaG8gIiRhY19jdl9mdW5jX2FsbG9jYV93b3JrcyIgPiY2OyB9CisKK2lmIHRlc3QgJGFjX2N2
X2Z1bmNfYWxsb2NhX3dvcmtzID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVf
QUxMT0NBIDEiID4+Y29uZmRlZnMuaAorCitlbHNlCisgICMgVGhlIFNWUjMgbGliUFcgYW5kIFNW
UjQgbGlidWNiIGJvdGggY29udGFpbiBpbmNvbXBhdGlibGUgZnVuY3Rpb25zCisjIHRoYXQgY2F1
c2UgdHJvdWJsZS4gIFNvbWUgdmVyc2lvbnMgZG8gbm90IGV2ZW4gY29udGFpbiBhbGxvY2Egb3IK
KyMgY29udGFpbiBhIGJ1Z2d5IHZlcnNpb24uICBJZiB5b3Ugc3RpbGwgd2FudCB0byB1c2UgdGhl
aXIgYWxsb2NhLAorIyB1c2UgYXIgdG8gZXh0cmFjdCBhbGxvY2EubyBmcm9tIHRoZW0gaW5zdGVh
ZCBvZiBjb21waWxpbmcgYWxsb2NhLmMuCisKK0FMTE9DQT1cJHtMSUJPQkpESVJ9YWxsb2NhLiRh
Y19vYmpleHQKKworJGFzX2VjaG8gIiNkZWZpbmUgQ19BTExPQ0EgMSIgPj5jb25mZGVmcy5oCisK
KworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0
aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgd2hldGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzLi4uICIgPiY2OyB9CitpZiAk
e2FjX2N2X29zX2NyYXkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWYgZGVmaW5lZCBDUkFZICYmICEgZGVmaW5lZCBD
UkFZMgord2ViZWNyYXkKKyNlbHNlCit3ZW5vdGJlY3JheQorI2VuZGlmCisKK19BQ0VPRgoraWYg
KGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgIndlYmVj
cmF5IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBhY19jdl9vc19jcmF5PXllcworZWxzZQor
ICBhY19jdl9vc19jcmF5PW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X29zX2NyYXkiID4m
NQorJGFzX2VjaG8gIiRhY19jdl9vc19jcmF5IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X29zX2Ny
YXkgPSB5ZXM7IHRoZW4KKyAgZm9yIGFjX2Z1bmMgaW4gX2dldGI2NyBHRVRCNjcgZ2V0YjY3OyBk
bworICAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3Ry
X3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFy
IgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorCitj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIENSQVlfU1RBQ0tTRUdfRU5EICRhY19m
dW5jCitfQUNFT0YKKworICAgIGJyZWFrCitmaQorCisgIGRvbmUKK2ZpCisKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZv
ciBDIGFsbG9jYSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9y
IEMgYWxsb2NhLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uKzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9jX3N0YWNrX2RpcmVj
dGlvbj0wCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l
eHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK2Zp
bmRfc3RhY2tfZGlyZWN0aW9uICgpCit7CisgIHN0YXRpYyBjaGFyICphZGRyID0gMDsKKyAgYXV0
byBjaGFyIGR1bW15OworICBpZiAoYWRkciA9PSAwKQorICAgIHsKKyAgICAgIGFkZHIgPSAmZHVt
bXk7CisgICAgICByZXR1cm4gZmluZF9zdGFja19kaXJlY3Rpb24gKCk7CisgICAgfQorICBlbHNl
CisgICAgcmV0dXJuICgmZHVtbXkgPiBhZGRyKSA/IDEgOiAtMTsKK30KKworaW50CittYWluICgp
Cit7CisgIHJldHVybiBmaW5kX3N0YWNrX2RpcmVjdGlvbiAoKSA8IDA7Cit9CitfQUNFT0YKK2lm
IGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX3N0YWNrX2RpcmVj
dGlvbj0xCitlbHNlCisgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPS0xCitmaQorcm0gLWYgY29y
ZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVl
eHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4
dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3ZfY19zdGFja19kaXJlY3Rpb24iID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX3N0
YWNrX2RpcmVjdGlvbiIgPiY2OyB9CitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5l
IFNUQUNLX0RJUkVDVElPTiAkYWNfY3ZfY19zdGFja19kaXJlY3Rpb24KK19BQ0VPRgorCisKK2Zp
CisKK2ZvciBhY19oZWFkZXIgaW4gIFwKKyAgICAgICAgICAgICAgICBhcnBhL2luZXQuaCBmY250
bC5oIGludHR5cGVzLmggbGliaW50bC5oIGxpbWl0cy5oIG1hbGxvYy5oIFwKKyAgICAgICAgICAg
ICAgICBuZXRkYi5oIG5ldGluZXQvaW4uaCBzdGRkZWYuaCBzdGRpbnQuaCBzdGRsaWIuaCBzdHJp
bmcuaCBcCisgICAgICAgICAgICAgICAgc3RyaW5ncy5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmgg
c3lzL21vdW50Lmggc3lzL3BhcmFtLmggXAorICAgICAgICAgICAgICAgIHN5cy9zb2NrZXQuaCBz
eXMvc3RhdHZmcy5oIHN5cy90aW1lLmggc3lzbG9nLmggdGVybWlvcy5oIFwKKyAgICAgICAgICAg
ICAgICB1bmlzdGQuaCB5YWpsL3lhamxfdmVyc2lvbi5oIFwKKworZG8gOgorICBhc19hY19IZWFk
ZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19m
bl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19I
ZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNf
SGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor
I2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitfQUNF
T0YKKworZmkKKworZG9uZQorCisKKyMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywg
YW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN0ZGJvb2wuaCB0aGF0IGNvbmZvcm1zIHRvIEM5
OSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3RkYm9vbC5oIHRoYXQgY29uZm9ybXMg
dG8gQzk5Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hlYWRlcl9zdGRib29sX2grOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaWZuZGVmIGJvb2wKKyAiZXJyb3I6IGJvb2wgaXMg
bm90IGRlZmluZWQiCisjZW5kaWYKKyNpZm5kZWYgZmFsc2UKKyAiZXJyb3I6IGZhbHNlIGlzIG5v
dCBkZWZpbmVkIgorI2VuZGlmCisjaWYgZmFsc2UKKyAiZXJyb3I6IGZhbHNlIGlzIG5vdCAwIgor
I2VuZGlmCisjaWZuZGVmIHRydWUKKyAiZXJyb3I6IHRydWUgaXMgbm90IGRlZmluZWQiCisjZW5k
aWYKKyNpZiB0cnVlICE9IDEKKyAiZXJyb3I6IHRydWUgaXMgbm90IDEiCisjZW5kaWYKKyNpZm5k
ZWYgX19ib29sX3RydWVfZmFsc2VfYXJlX2RlZmluZWQKKyAiZXJyb3I6IF9fYm9vbF90cnVlX2Zh
bHNlX2FyZV9kZWZpbmVkIGlzIG5vdCBkZWZpbmVkIgorI2VuZGlmCisKKwlzdHJ1Y3QgcyB7IF9C
b29sIHM6IDE7IF9Cb29sIHQ7IH0gczsKKworCWNoYXIgYVt0cnVlID09IDEgPyAxIDogLTFdOwor
CWNoYXIgYltmYWxzZSA9PSAwID8gMSA6IC0xXTsKKwljaGFyIGNbX19ib29sX3RydWVfZmFsc2Vf
YXJlX2RlZmluZWQgPT0gMSA/IDEgOiAtMV07CisJY2hhciBkWyhib29sKSAwLjUgPT0gdHJ1ZSA/
IDEgOiAtMV07CisJLyogU2VlIGJvZHkgb2YgbWFpbiBwcm9ncmFtIGZvciAnZScuICAqLworCWNo
YXIgZlsoX0Jvb2wpIDAuMCA9PSBmYWxzZSA/IDEgOiAtMV07CisJY2hhciBnW3RydWVdOworCWNo
YXIgaFtzaXplb2YgKF9Cb29sKV07CisJY2hhciBpW3NpemVvZiBzLnRdOworCWVudW0geyBqID0g
ZmFsc2UsIGsgPSB0cnVlLCBsID0gZmFsc2UgKiB0cnVlLCBtID0gdHJ1ZSAqIDI1NiB9OworCS8q
IFRoZSBmb2xsb3dpbmcgZmFpbHMgZm9yCisJICAgSFAgYUMrKy9BTlNJIEMgQjM5MTBCIEEuMDUu
NTUgW0RlYyAwNCAyMDAzXS4gKi8KKwlfQm9vbCBuW21dOworCWNoYXIgb1tzaXplb2YgbiA9PSBt
ICogc2l6ZW9mIG5bMF0gPyAxIDogLTFdOworCWNoYXIgcFstMSAtIChfQm9vbCkgMCA8IDAgJiYg
LTEgLSAoYm9vbCkgMCA8IDAgPyAxIDogLTFdOworCS8qIENhdGNoIGEgYnVnIGluIGFuIEhQLVVY
IEMgY29tcGlsZXIuICBTZWUKKwkgICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMv
MjAwMy0xMi9tc2cwMjMwMy5odG1sCisJICAgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9o
dG1sL2J1Zy1jb3JldXRpbHMvMjAwNS0xMS9tc2cwMDE2MS5odG1sCisJICovCisJX0Jvb2wgcSA9
IHRydWU7CisJX0Jvb2wgKnBxID0gJnE7CisKK2ludAorbWFpbiAoKQoreworCisJYm9vbCBlID0g
JnM7CisJKnBxIHw9IHE7CisJKnBxIHw9ICEgcTsKKwkvKiBSZWZlciB0byBldmVyeSBkZWNsYXJl
ZCB2YWx1ZSwgdG8gYXZvaWQgY29tcGlsZXIgb3B0aW1pemF0aW9ucy4gICovCisJcmV0dXJuICgh
YSArICFiICsgIWMgKyAhZCArICFlICsgIWYgKyAhZyArICFoICsgIWkgKyAhIWogKyAhayArICEh
bAorCQkrICFtICsgIW4gKyAhbyArICFwICsgIXEgKyAhcHEpOworCisgIDsKKyAgcmV0dXJuIDA7
Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
YWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaD15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGJvb2xf
aD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCIgPiY1CiskYXNfZWNobyAiJGFjX2N2
X2hlYWRlcl9zdGRib29sX2giID4mNjsgfQorYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAi
X0Jvb2wiICJhY19jdl90eXBlX19Cb29sIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0
ICJ4JGFjX2N2X3R5cGVfX0Jvb2wiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9fQk9PTCAxCitfQUNFT0YKKworCitmaQorCitpZiB0ZXN0
ICRhY19jdl9oZWFkZXJfc3RkYm9vbF9oID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5l
IEhBVkVfU1REQk9PTF9IIDEiID4+Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1aWRfdCBpbiBzeXMvdHlwZXMu
aCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5cGVzLmguLi4g
IiA+JjY7IH0KK2lmICR7YWNfY3ZfdHlwZV91aWRfdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0Iikg
Mj4mNSB8CisgICRFR1JFUCAidWlkX3QiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgIGFjX2N2
X3R5cGVfdWlkX3Q9eWVzCitlbHNlCisgIGFjX2N2X3R5cGVfdWlkX3Q9bm8KK2ZpCitybSAtZiBj
b25mdGVzdCoKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3ZfdHlwZV91aWRfdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3R5cGVfdWlk
X3QiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfdHlwZV91aWRfdCA9IG5vOyB0aGVuCisKKyRhc19l
Y2hvICIjZGVmaW5lIHVpZF90IGludCIgPj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZp
bmUgZ2lkX3QgaW50IiA+PmNvbmZkZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW5saW5lIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciBpbmxpbmUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY19pbmxpbmUrOn0g
ZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19j
dl9jX2lubGluZT1ubworZm9yIGFjX2t3IGluIGlubGluZSBfX2lubGluZV9fIF9faW5saW5lOyBk
bworICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisjaWZuZGVmIF9fY3BsdXNwbHVzCit0eXBlZGVmIGludCBmb29fdDsK
K3N0YXRpYyAkYWNfa3cgZm9vX3Qgc3RhdGljX2ZvbyAoKSB7cmV0dXJuIDA7IH0KKyRhY19rdyBm
b29fdCBmb28gKCkge3JldHVybiAwOyB9CisjZW5kaWYKKworX0FDRU9GCitpZiBhY19mbl9jX3Ry
eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2NfaW5saW5lPSRhY19rdworZmkK
K3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj
X2V4dAorICB0ZXN0ICIkYWNfY3ZfY19pbmxpbmUiICE9IG5vICYmIGJyZWFrCitkb25lCisKK2Zp
Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2
X2NfaW5saW5lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY19pbmxpbmUiID4mNjsgfQorCitjYXNl
ICRhY19jdl9jX2lubGluZSBpbgorICBpbmxpbmUgfCB5ZXMpIDs7CisgICopCisgICAgY2FzZSAk
YWNfY3ZfY19pbmxpbmUgaW4KKyAgICAgIG5vKSBhY192YWw9OzsKKyAgICAgICopIGFjX3ZhbD0k
YWNfY3ZfY19pbmxpbmU7OworICAgIGVzYWMKKyAgICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CisjaWZuZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIGlubGluZSAkYWNfdmFsCisjZW5kaWYKK19B
Q0VPRgorICAgIDs7Citlc2FjCisKK2FjX2ZuX2NfZmluZF9pbnRYX3QgIiRMSU5FTk8iICIxNiIg
ImFjX2N2X2NfaW50MTZfdCIKK2Nhc2UgJGFjX2N2X2NfaW50MTZfdCBpbiAjKAorICBub3x5ZXMp
IDs7ICMoCisgICopCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgaW50MTZf
dCAkYWNfY3ZfY19pbnQxNl90CitfQUNFT0YKKzs7Citlc2FjCisKK2FjX2ZuX2NfZmluZF9pbnRY
X3QgIiRMSU5FTk8iICIzMiIgImFjX2N2X2NfaW50MzJfdCIKK2Nhc2UgJGFjX2N2X2NfaW50MzJf
dCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisgICopCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKKyNkZWZpbmUgaW50MzJfdCAkYWNfY3ZfY19pbnQzMl90CitfQUNFT0YKKzs7Citlc2FjCisK
K2FjX2ZuX2NfZmluZF9pbnRYX3QgIiRMSU5FTk8iICI2NCIgImFjX2N2X2NfaW50NjRfdCIKK2Nh
c2UgJGFjX2N2X2NfaW50NjRfdCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisgICopCisKK2NhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgaW50NjRfdCAkYWNfY3ZfY19pbnQ2NF90Citf
QUNFT0YKKzs7Citlc2FjCisKK2FjX2ZuX2NfZmluZF9pbnRYX3QgIiRMSU5FTk8iICI4IiAiYWNf
Y3ZfY19pbnQ4X3QiCitjYXNlICRhY19jdl9jX2ludDhfdCBpbiAjKAorICBub3x5ZXMpIDs7ICMo
CisgICopCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgaW50OF90ICRhY19j
dl9jX2ludDhfdAorX0FDRU9GCis7OworZXNhYworCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5F
Tk8iICJtb2RlX3QiICJhY19jdl90eXBlX21vZGVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0Igor
aWYgdGVzdCAieCRhY19jdl90eXBlX21vZGVfdCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorCitj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIG1vZGVfdCBpbnQKK19BQ0VPRgorCitm
aQorCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJvZmZfdCIgImFjX2N2X3R5cGVfb2Zm
X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9vZmZfdCIg
PSB4eWVzOyB0aGVuIDoKKworZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVm
aW5lIG9mZl90IGxvbmcgaW50CitfQUNFT0YKKworZmkKKworYWNfZm5fY19jaGVja190eXBlICIk
TElORU5PIiAicGlkX3QiICJhY19jdl90eXBlX3BpZF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi
CitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcGlkX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKwor
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBwaWRfdCBpbnQKK19BQ0VPRgorCitm
aQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciBDL0MrKyByZXN0cmljdCBrZXl3b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBD
L0MrKyByZXN0cmljdCBrZXl3b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfcmVzdHJpY3Qr
On0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBh
Y19jdl9jX3Jlc3RyaWN0PW5vCisgICAjIFRoZSBvcmRlciBoZXJlIGNhdGVycyB0byB0aGUgZmFj
dCB0aGF0IEMrKyBkb2VzIG5vdCByZXF1aXJlIHJlc3RyaWN0LgorICAgZm9yIGFjX2t3IGluIF9f
cmVzdHJpY3QgX19yZXN0cmljdF9fIF9SZXN0cmljdCByZXN0cmljdDsgZG8KKyAgICAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwordHlwZWRlZiBpbnQgKiBpbnRfcHRyOworCWludCBmb28gKGludF9wdHIgJGFjX2t3IGlw
KSB7CisJcmV0dXJuIGlwWzBdOworICAgICAgIH0KK2ludAorbWFpbiAoKQoreworaW50IHNbMV07
CisJaW50ICogJGFjX2t3IHQgPSBzOworCXRbMF0gPSAwOworCXJldHVybiBmb28odCkKKyAgOwor
ICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7
IHRoZW4gOgorICBhY19jdl9jX3Jlc3RyaWN0PSRhY19rdworZmkKK3JtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICB0ZXN0ICIk
YWNfY3ZfY19yZXN0cmljdCIgIT0gbm8gJiYgYnJlYWsKKyAgIGRvbmUKKworZmkKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19yZXN0cmlj
dCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfcmVzdHJpY3QiID4mNjsgfQorCisgY2FzZSAkYWNf
Y3ZfY19yZXN0cmljdCBpbgorICAgcmVzdHJpY3QpIDs7CisgICBubykgJGFzX2VjaG8gIiNkZWZp
bmUgcmVzdHJpY3QgLyoqLyIgPj5jb25mZGVmcy5oCisgOzsKKyAgICopICBjYXQgPj5jb25mZGVm
cy5oIDw8X0FDRU9GCisjZGVmaW5lIHJlc3RyaWN0ICRhY19jdl9jX3Jlc3RyaWN0CitfQUNFT0YK
KyA7OworIGVzYWMKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic2l6ZV90IiAiYWNf
Y3ZfdHlwZV9zaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3Zf
dHlwZV9zaXplX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8
PF9BQ0VPRgorI2RlZmluZSBzaXplX3QgdW5zaWduZWQgaW50CitfQUNFT0YKKworZmkKKworYWNf
Zm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFjX2N2X3R5cGVfc3NpemVfdCIg
IiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl90eXBlX3NzaXplX3QiID0g
eHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmlu
ZSBzc2l6ZV90IGludAorX0FDRU9GCisKK2ZpCisKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElO
RU5PIiAic3RydWN0IHN0YXQiICJzdF9ibGtzaXplIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0
X3N0X2Jsa3NpemUiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfbWVt
YmVyX3N0cnVjdF9zdGF0X3N0X2Jsa3NpemUiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFIDEKK19B
Q0VPRgorCisKK2ZpCisKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHN0
YXQiICJzdF9ibG9ja3MiICJhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYmxvY2tzIiAiJGFj
X2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X21lbWJlcl9zdHJ1Y3Rfc3RhdF9z
dF9ibG9ja3MiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNk
ZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MgMQorX0FDRU9GCisKKworJGFzX2VjaG8g
IiNkZWZpbmUgSEFWRV9TVF9CTE9DS1MgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgY2FzZSAi
ICRMSUJPQkpTICIgaW4KKyAgKiIgZmlsZWJsb2Nrcy4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikg
TElCT0JKUz0iJExJQk9CSlMgZmlsZWJsb2Nrcy4kYWNfb2JqZXh0IgorIDs7Citlc2FjCisKK2Zp
CisKKworYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0X3Jk
ZXYiICJhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfcmRldiIgIiRhY19pbmNsdWRlc19kZWZh
dWx0IgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfcmRldiIgPSB4eWVz
OyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NUUlVD
VF9TVEFUX1NUX1JERVYgMQorX0FDRU9GCisKKworZmkKKworYWNfZm5fY19maW5kX3VpbnRYX3Qg
IiRMSU5FTk8iICIxNiIgImFjX2N2X2NfdWludDE2X3QiCitjYXNlICRhY19jdl9jX3VpbnQxNl90
IGluICMoCisgIG5vfHllcykgOzsgIygKKyAgKikKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FD
RU9GCisjZGVmaW5lIHVpbnQxNl90ICRhY19jdl9jX3VpbnQxNl90CitfQUNFT0YKKzs7CisgIGVz
YWMKKworYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICIzMiIgImFjX2N2X2NfdWludDMy
X3QiCitjYXNlICRhY19jdl9jX3VpbnQzMl90IGluICMoCisgIG5vfHllcykgOzsgIygKKyAgKikK
KworJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAorCisKK2NhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgdWludDMyX3QgJGFjX2N2X2NfdWludDMyX3QK
K19BQ0VPRgorOzsKKyAgZXNhYworCithY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjY0
IiAiYWNfY3ZfY191aW50NjRfdCIKK2Nhc2UgJGFjX2N2X2NfdWludDY0X3QgaW4gIygKKyAgbm98
eWVzKSA7OyAjKAorICAqKQorCiskYXNfZWNobyAiI2RlZmluZSBfVUlOVDY0X1QgMSIgPj5jb25m
ZGVmcy5oCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSB1aW50NjRfdCAk
YWNfY3ZfY191aW50NjRfdAorX0FDRU9GCis7OworICBlc2FjCisKK2FjX2ZuX2NfZmluZF91aW50
WF90ICIkTElORU5PIiAiOCIgImFjX2N2X2NfdWludDhfdCIKK2Nhc2UgJGFjX2N2X2NfdWludDhf
dCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisgICopCisKKyRhc19lY2hvICIjZGVmaW5lIF9VSU5U
OF9UIDEiID4+Y29uZmRlZnMuaAorCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZp
bmUgdWludDhfdCAkYWNfY3ZfY191aW50OF90CitfQUNFT0YKKzs7CisgIGVzYWMKKworYWNfZm5f
Y19jaGVja190eXBlICIkTElORU5PIiAicHRyZGlmZl90IiAiYWNfY3ZfdHlwZV9wdHJkaWZmX3Qi
ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9wdHJkaWZmX3Qi
ID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFW
RV9QVFJESUZGX1QgMQorX0FDRU9GCisKKworZmkKKworCisjIENoZWNrcyBmb3IgbGlicmFyeSBm
dW5jdGlvbnMuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciBlcnJvcl9hdF9saW5lIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBlcnJv
cl9hdF9saW5lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9lcnJvcl9hdF9saW5lKzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLworI2luY2x1ZGUgPGVycm9yLmg+CitpbnQKK21haW4gKCkKK3sKK2Vycm9yX2F0X2xpbmUg
KDAsIDAsICIiLCAwLCAiYW4gZXJyb3Igb2NjdXJyZWQiKTsKKyAgOworICByZXR1cm4gMDsKK30K
K19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9s
aWJfZXJyb3JfYXRfbGluZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmU9bm8K
K2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBj
b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUi
ID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfZXJyb3JfYXRfbGluZSIgPiY2OyB9CitpZiB0ZXN0
ICRhY19jdl9saWJfZXJyb3JfYXRfbGluZSA9IG5vOyB0aGVuCisgIGNhc2UgIiAkTElCT0JKUyAi
IGluCisgICoiIGVycm9yLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JK
UyBlcnJvci4kYWNfb2JqZXh0IgorIDs7Citlc2FjCisKK2ZpCisKK2ZvciBhY19oZWFkZXIgaW4g
dmZvcmsuaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAi
dmZvcmsuaCIgImFjX2N2X2hlYWRlcl92Zm9ya19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitp
ZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl92Zm9ya19oIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5j
b25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfVkZPUktfSCAxCitfQUNFT0YKKworZmkK
KworZG9uZQorCitmb3IgYWNfZnVuYyBpbiBmb3JrIHZmb3JrCitkbyA6CisgIGFzX2FjX3Zhcj1g
JGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVj
a19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwi
eFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAx
CitfQUNFT0YKKworZmkKK2RvbmUKKworaWYgdGVzdCAieCRhY19jdl9mdW5jX2ZvcmsiID0geHll
czsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciB3b3JraW5nIGZvcmsiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtp
bmcgZm9yay4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX2Zvcmtfd29ya3MrOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIk
Y3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz1j
cm9zcworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWlu
ICgpCit7CisKKwkgIC8qIEJ5IFJ1ZWRpZ2VyIEt1aGxtYW5uLiAqLworCSAgcmV0dXJuIGZvcmsg
KCkgPCAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1
biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9eWVzCitlbHNlCisg
IGFjX2N2X2Z1bmNfZm9ya193b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29u
ZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNf
Zm9ya193b3JrcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPiY2OyB9
CisKK2Vsc2UKKyAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPSRhY19jdl9mdW5jX2ZvcmsKK2ZpCitp
ZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPSB4Y3Jvc3M7IHRoZW4KKyAgY2FzZSAk
aG9zdCBpbgorICAgICotKi1hbWlnYW9zKiB8ICotKi1tc2Rvc2RqZ3BwKikKKyAgICAgICMgT3Zl
cnJpZGUsIGFzIHRoZXNlIHN5c3RlbXMgaGF2ZSBvbmx5IGEgZHVtbXkgZm9yaygpIHN0dWIKKyAg
ICAgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz1ubworICAgICAgOzsKKyAgICAqKQorICAgICAgYWNf
Y3ZfZnVuY19mb3JrX3dvcmtzPXllcworICAgICAgOzsKKyAgZXNhYworICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHJlc3VsdCAkYWNfY3ZfZnVuY19m
b3JrX3dvcmtzIGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfZm9ya193b3JrcyBndWVz
c2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mMjt9CitmaQorYWNfY3ZfZnVuY192
Zm9ya193b3Jrcz0kYWNfY3ZfZnVuY192Zm9yaworaWYgdGVzdCAieCRhY19jdl9mdW5jX3Zmb3Jr
IiA9IHh5ZXM7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBmb3Igd29ya2luZyB2Zm9yayIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBm
b3Igd29ya2luZyB2Zm9yay4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX3Zmb3JrX3dvcmtz
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3Zm
b3JrX3dvcmtzPWNyb3NzCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy8qIFRoYW5rcyB0byBQYXVsIEVn
Z2VydCBmb3IgdGhpcyB0ZXN0LiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaW5jbHVkZSA8
c3lzL3dhaXQuaD4KKyNpZmRlZiBIQVZFX1ZGT1JLX0gKKyMgaW5jbHVkZSA8dmZvcmsuaD4KKyNl
bmRpZgorLyogT24gc29tZSBzcGFyYyBzeXN0ZW1zLCBjaGFuZ2VzIGJ5IHRoZSBjaGlsZCB0byBs
b2NhbCBhbmQgaW5jb21pbmcKKyAgIGFyZ3VtZW50IHJlZ2lzdGVycyBhcmUgcHJvcGFnYXRlZCBi
YWNrIHRvIHRoZSBwYXJlbnQuICBUaGUgY29tcGlsZXIKKyAgIGlzIHRvbGQgYWJvdXQgdGhpcyB3
aXRoICNpbmNsdWRlIDx2Zm9yay5oPiwgYnV0IHNvbWUgY29tcGlsZXJzCisgICAoZS5nLiBnY2Mg
LU8pIGRvbid0IGdyb2sgPHZmb3JrLmg+LiAgVGVzdCBmb3IgdGhpcyBieSB1c2luZyBhCisgICBz
dGF0aWMgdmFyaWFibGUgd2hvc2UgYWRkcmVzcyBpcyBwdXQgaW50byBhIHJlZ2lzdGVyIHRoYXQg
aXMKKyAgIGNsb2JiZXJlZCBieSB0aGUgdmZvcmsuICAqLworc3RhdGljIHZvaWQKKyNpZmRlZiBf
X2NwbHVzcGx1cworc3BhcmNfYWRkcmVzc190ZXN0IChpbnQgYXJnKQorIyBlbHNlCitzcGFyY19h
ZGRyZXNzX3Rlc3QgKGFyZykgaW50IGFyZzsKKyNlbmRpZgoreworICBzdGF0aWMgcGlkX3QgY2hp
bGQ7CisgIGlmICghY2hpbGQpIHsKKyAgICBjaGlsZCA9IHZmb3JrICgpOworICAgIGlmIChjaGls
ZCA8IDApIHsKKyAgICAgIHBlcnJvciAoInZmb3JrIik7CisgICAgICBfZXhpdCgyKTsKKyAgICB9
CisgICAgaWYgKCFjaGlsZCkgeworICAgICAgYXJnID0gZ2V0cGlkKCk7CisgICAgICB3cml0ZSgt
MSwgIiIsIDApOworICAgICAgX2V4aXQgKGFyZyk7CisgICAgfQorICB9Cit9CisKK2ludAorbWFp
biAoKQoreworICBwaWRfdCBwYXJlbnQgPSBnZXRwaWQgKCk7CisgIHBpZF90IGNoaWxkOworCisg
IHNwYXJjX2FkZHJlc3NfdGVzdCAoMCk7CisKKyAgY2hpbGQgPSB2Zm9yayAoKTsKKworICBpZiAo
Y2hpbGQgPT0gMCkgeworICAgIC8qIEhlcmUgaXMgYW5vdGhlciB0ZXN0IGZvciBzcGFyYyB2Zm9y
ayByZWdpc3RlciBwcm9ibGVtcy4gIFRoaXMKKyAgICAgICB0ZXN0IHVzZXMgbG90cyBvZiBsb2Nh
bCB2YXJpYWJsZXMsIGF0IGxlYXN0IGFzIG1hbnkgbG9jYWwKKyAgICAgICB2YXJpYWJsZXMgYXMg
bWFpbiBoYXMgYWxsb2NhdGVkIHNvIGZhciBpbmNsdWRpbmcgY29tcGlsZXIKKyAgICAgICB0ZW1w
b3Jhcmllcy4gIDQgbG9jYWxzIGFyZSBlbm91Z2ggZm9yIGdjYyAxLjQwLjMgb24gYSBTb2xhcmlz
CisgICAgICAgNC4xLjMgc3BhcmMsIGJ1dCB3ZSB1c2UgOCB0byBiZSBzYWZlLiAgQSBidWdneSBj
b21waWxlciBzaG91bGQKKyAgICAgICByZXVzZSB0aGUgcmVnaXN0ZXIgb2YgcGFyZW50IGZvciBv
bmUgb2YgdGhlIGxvY2FsIHZhcmlhYmxlcywKKyAgICAgICBzaW5jZSBpdCB3aWxsIHRoaW5rIHRo
YXQgcGFyZW50IGNhbid0IHBvc3NpYmx5IGJlIHVzZWQgYW55IG1vcmUKKyAgICAgICBpbiB0aGlz
IHJvdXRpbmUuICBBc3NpZ25pbmcgdG8gdGhlIGxvY2FsIHZhcmlhYmxlIHdpbGwgdGh1cworICAg
ICAgIG11bmdlIHBhcmVudCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuICAqLworICAgIHBpZF90Cisg
ICAgICBwID0gZ2V0cGlkKCksIHAxID0gZ2V0cGlkKCksIHAyID0gZ2V0cGlkKCksIHAzID0gZ2V0
cGlkKCksCisgICAgICBwNCA9IGdldHBpZCgpLCBwNSA9IGdldHBpZCgpLCBwNiA9IGdldHBpZCgp
LCBwNyA9IGdldHBpZCgpOworICAgIC8qIENvbnZpbmNlIHRoZSBjb21waWxlciB0aGF0IHAuLnA3
IGFyZSBsaXZlOyBvdGhlcndpc2UsIGl0IG1pZ2h0CisgICAgICAgdXNlIHRoZSBzYW1lIGhhcmR3
YXJlIHJlZ2lzdGVyIGZvciBhbGwgOCBsb2NhbCB2YXJpYWJsZXMuICAqLworICAgIGlmIChwICE9
IHAxIHx8IHAgIT0gcDIgfHwgcCAhPSBwMyB8fCBwICE9IHA0CisJfHwgcCAhPSBwNSB8fCBwICE9
IHA2IHx8IHAgIT0gcDcpCisgICAgICBfZXhpdCgxKTsKKworICAgIC8qIE9uIHNvbWUgc3lzdGVt
cyAoZS5nLiBJUklYIDMuMyksIHZmb3JrIGRvZXNuJ3Qgc2VwYXJhdGUgcGFyZW50CisgICAgICAg
ZnJvbSBjaGlsZCBmaWxlIGRlc2NyaXB0b3JzLiAgSWYgdGhlIGNoaWxkIGNsb3NlcyBhIGRlc2Ny
aXB0b3IKKyAgICAgICBiZWZvcmUgaXQgZXhlY3Mgb3IgZXhpdHMsIHRoaXMgbXVuZ2VzIHRoZSBw
YXJlbnQncyBkZXNjcmlwdG9yCisgICAgICAgYXMgd2VsbC4gIFRlc3QgZm9yIHRoaXMgYnkgY2xv
c2luZyBzdGRvdXQgaW4gdGhlIGNoaWxkLiAgKi8KKyAgICBfZXhpdChjbG9zZShmaWxlbm8oc3Rk
b3V0KSkgIT0gMCk7CisgIH0gZWxzZSB7CisgICAgaW50IHN0YXR1czsKKyAgICBzdHJ1Y3Qgc3Rh
dCBzdDsKKworICAgIHdoaWxlICh3YWl0KCZzdGF0dXMpICE9IGNoaWxkKQorICAgICAgOworICAg
IHJldHVybiAoCisJIC8qIFdhcyB0aGVyZSBzb21lIHByb2JsZW0gd2l0aCB2Zm9ya2luZz8gICov
CisJIGNoaWxkIDwgMAorCisJIC8qIERpZCB0aGUgY2hpbGQgZmFpbD8gIChUaGlzIHNob3VsZG4n
dCBoYXBwZW4uKSAgKi8KKwkgfHwgc3RhdHVzCisKKwkgLyogRGlkIHRoZSB2Zm9yay9jb21waWxl
ciBidWcgb2NjdXI/ICAqLworCSB8fCBwYXJlbnQgIT0gZ2V0cGlkKCkKKworCSAvKiBEaWQgdGhl
IGZpbGUgZGVzY3JpcHRvciBidWcgb2NjdXI/ICAqLworCSB8fCBmc3RhdChmaWxlbm8oc3Rkb3V0
KSwgJnN0KSAhPSAwCisJICk7CisgIH0KK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9eWVzCitlbHNlCisgIGFj
X2N2X2Z1bmNfdmZvcmtfd29ya3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0
ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX3Zm
b3JrX3dvcmtzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY2OyB9
CisKK2ZpOworaWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geGNyb3NzOyB0aGVu
CisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1
bmNfdmZvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjUK
KyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHJlc3VsdCAkYWNfY3ZfZnVuY192Zm9ya193b3Jr
cyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mMjt9CitmaQorCitpZiB0
ZXN0ICJ4JGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MiID0geHllczsgdGhlbgorCiskYXNfZWNobyAi
I2RlZmluZSBIQVZFX1dPUktJTkdfVkZPUksgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKworJGFz
X2VjaG8gIiNkZWZpbmUgdmZvcmsgZm9yayIgPj5jb25mZGVmcy5oCisKK2ZpCitpZiB0ZXN0ICJ4
JGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5l
IEhBVkVfV09SS0lOR19GT1JLIDEiID4+Y29uZmRlZnMuaAorCitmaQorCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfTEFSR0VGSUxFX1NPVVJD
RSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBfTEFSR0VGSUxFX1NPVVJDRSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIg
PiY2OyB9CitpZiAke2FjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlKzp9IGZhbHNlOyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgd2hpbGUgOjsgZG8KKyAgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz
LmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAvKiBmb3Igb2ZmX3QgKi8KKyAgICAgI2lu
Y2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK2ludCAoKmZwKSAoRklMRSAqLCBvZmZf
dCwgaW50KSA9IGZzZWVrbzsKKyAgICAgcmV0dXJuIGZzZWVrbyAoc3RkaW4sIDAsIDApICYmIGZw
IChzdGRpbiwgMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2Nf
dHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2U9
bm87IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAq
LworI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC8q
IGZvciBvZmZfdCAqLworICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQorewor
aW50ICgqZnApIChGSUxFICosIG9mZl90LCBpbnQpID0gZnNlZWtvOworICAgICByZXR1cm4gZnNl
ZWtvIChzdGRpbiwgMCwgMCkgJiYgZnAgKHN0ZGluLCAwLCAwKTsKKyAgOworICByZXR1cm4gMDsK
K30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19j
dl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT0xOyBicmVhaworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVz
dC4kYWNfZXh0CisgIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPXVua25vd24KKyAgYnJlYWsK
K2RvbmUKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc3lz
X2xhcmdlZmlsZV9zb3VyY2UiID4mNjsgfQorY2FzZSAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3Vy
Y2UgaW4gIygKKyAgbm8gfCB1bmtub3duKSA7OworICAqKQorY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3Vy
Y2UKK19BQ0VPRgorOzsKK2VzYWMKK3JtIC1yZiBjb25mdGVzdCoKKworIyBXZSB1c2VkIHRvIHRy
eSBkZWZpbmluZyBfWE9QRU5fU09VUkNFPTUwMCB0b28sIHRvIHdvcmsgYXJvdW5kIGEgYnVnCisj
IGluIGdsaWJjIDIuMS4zLCBidXQgdGhhdCBicmVha3MgdG9vIG1hbnkgb3RoZXIgdGhpbmdzLgor
IyBJZiB5b3Ugd2FudCBmc2Vla28gYW5kIGZ0ZWxsbyB3aXRoIGdsaWJjLCB1cGdyYWRlIHRvIGEg
Zml4ZWQgZ2xpYmMuCitpZiB0ZXN0ICRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZSAhPSB1bmtu
b3duOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfRlNFRUtPIDEiID4+Y29uZmRlZnMu
aAorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIHdoZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMgdHJhaWxpbmcgc2xhc2giID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBsc3RhdCBjb3JyZWN0bHkgaGFuZGxlcyB0cmFp
bGluZyBzbGFzaC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNl
c19zbGFzaGVkX3N5bWxpbmsrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgorZWxzZQorICBybSAtZiBjb25mdGVzdC5zeW0gY29uZnRlc3QuZmlsZQorZWNobyA+
Y29uZnRlc3QuZmlsZQoraWYgdGVzdCAiJGFzX2xuX3MiID0gImxuIC1zIiAmJiBsbiAtcyBjb25m
dGVzdC5maWxlIGNvbmZ0ZXN0LnN5bTsgdGhlbgorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5n
IiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRf
c3ltbGluaz1ubworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50
CittYWluICgpCit7CitzdHJ1Y3Qgc3RhdCBzYnVmOworICAgICAvKiBMaW51eCB3aWxsIGRlcmVm
ZXJlbmNlIHRoZSBzeW1saW5rIGFuZCBmYWlsLCBhcyByZXF1aXJlZCBieSBQT1NJWC4KKwlUaGF0
IGlzIGJldHRlciBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBtZWFucyB3ZSB3aWxsIG5vdAorCWhhdmUg
dG8gY29tcGlsZSBhbmQgdXNlIHRoZSBsc3RhdCB3cmFwcGVyLiAgKi8KKyAgICAgcmV0dXJuIGxz
dGF0ICgiY29uZnRlc3Quc3ltLyIsICZzYnVmKSA9PSAwOworICA7CisgIHJldHVybiAwOworfQor
X0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVu
Y19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXllcworZWxzZQorICBhY19jdl9m
dW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KK2ZpCitybSAtZiBjb3Jl
ICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4
dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0
CitmaQorCitlbHNlCisgICMgSWYgdGhlIGBsbiAtcycgY29tbWFuZCBmYWlsZWQsIHRoZW4gd2Ug
cHJvYmFibHkgZG9uJ3QgZXZlbgorICAjIGhhdmUgYW4gbHN0YXQgZnVuY3Rpb24uCisgIGFjX2N2
X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ubworZmkKK3JtIC1mIGNv
bmZ0ZXN0LnN5bSBjb25mdGVzdC5maWxlCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3Ns
YXNoZWRfc3ltbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVu
Y2VzX3NsYXNoZWRfc3ltbGluayIgPiY2OyB9CisKK3Rlc3QgJGFjX2N2X2Z1bmNfbHN0YXRfZGVy
ZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IHllcyAmJgorCitjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIExTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LIDEKK19BQ0VPRgor
CisKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1s
aW5rIiA9IHhubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBsc3RhdC4kYWNf
b2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgbHN0YXQuJGFjX29iamV4dCIK
KyA7OworZXNhYworCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgc3lzL3R5cGVzLmggZGVmaW5lcyBtYWtlZGV2IiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc3lzL3R5cGVzLmggZGVmaW5lcyBtYWtlZGV2Li4u
ICIgPiY2OyB9CitpZiAke2FjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaF9tYWtlZGV2Kzp9IGZhbHNl
OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAq
LworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50CittYWluICgpCit7CityZXR1cm4gbWFrZWRl
digwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGlu
ayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldj15
ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N5c190eXBlc19oX21ha2VkZXY9bm8KK2ZpCitybSAt
ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRh
Y19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRl
diIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaF9tYWtlZGV2IiA+JjY7
IH0KKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c190eXBlc19oX21ha2VkZXYgPSBubzsgdGhl
bgorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy9ta2Rldi5oIiAi
YWNfY3ZfaGVhZGVyX3N5c19ta2Rldl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0
ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbWtkZXZfaCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8g
IiNkZWZpbmUgTUFKT1JfSU5fTUtERVYgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKworCisgIGlm
IHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfbWtkZXZfaCA9IG5vOyB0aGVuCisgICAgYWNfZm5fY19j
aGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy9zeXNtYWNyb3MuaCIgImFjX2N2X2hl
YWRlcl9zeXNfc3lzbWFjcm9zX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngk
YWNfY3ZfaGVhZGVyX3N5c19zeXNtYWNyb3NfaCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8g
IiNkZWZpbmUgTUFKT1JfSU5fU1lTTUFDUk9TIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKKyAg
ZmkKK2ZpCisKK2ZvciBhY19oZWFkZXIgaW4gc3RkbGliLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVj
a19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN0ZGxpYi5oIiAiYWNfY3ZfaGVhZGVyX3N0ZGxp
Yl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRs
aWJfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmlu
ZSBIQVZFX1NURExJQl9IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNvbXBhdGli
bGUgbWFsbG9jIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBHTlUgbGliYyBjb21wYXRp
YmxlIG1hbGxvYy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX21hbGxvY18wX25vbm51bGwr
On0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBp
ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbWFs
bG9jXzBfbm9ubnVsbD1ubworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWYgZGVmaW5lZCBTVERDX0hF
QURFUlMgfHwgZGVmaW5lZCBIQVZFX1NURExJQl9ICisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2Vs
c2UKK2NoYXIgKm1hbGxvYyAoKTsKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3JldHVybiAh
IG1hbGxvYyAoMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5
X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVz
CitlbHNlCisgIGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD1ubworZmkKK3JtIC1mIGNvcmUg
Ki5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0
IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQK
K2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1
bmNfbWFsbG9jXzBfbm9ubnVsbCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9mdW5jX21hbGxvY18w
X25vbm51bGwgPSB5ZXM7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX01BTExPQyAx
IiA+PmNvbmZkZWZzLmgKKworZWxzZQorICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01BTExPQyAw
IiA+PmNvbmZkZWZzLmgKKworICAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgbWFsbG9jLiRh
Y19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBtYWxsb2MuJGFjX29iamV4
dCIKKyA7OworZXNhYworCisKKyRhc19lY2hvICIjZGVmaW5lIG1hbGxvYyBycGxfbWFsbG9jIiA+
PmNvbmZkZWZzLmgKKworZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJl
IGluY2x1ZGVkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBz
eXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hl
YWRlcl90aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
K2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog
ZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5
cy90aW1lLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCitpbnQKK21haW4gKCkKK3sKK2lmICgoc3Ry
dWN0IHRtICopIDApCityZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYg
YWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfdGlt
ZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3RpbWU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0
ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl90
aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3RpbWUiID4mNjsgfQoraWYgdGVzdCAk
YWNfY3ZfaGVhZGVyX3RpbWUgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVElNRV9X
SVRIX1NZU19USU1FIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKKworCisgIGZvciBhY19oZWFk
ZXIgaW4gJGFjX2hlYWRlcl9saXN0CitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFj
X2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVy
X2NvbXBpbGUgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNs
dWRlc19kZWZhdWx0CisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgi
eWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19l
Y2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2Rv
bmUKKworCisKKworCisKKworCisgIGZvciBhY19mdW5jIGluICRhY19mdW5jX2xpc3QKK2RvIDoK
KyAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hg
CithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitp
ZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8
ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorZG9uZQorCisKKworCisKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWt0aW1l
IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIG1rdGltZS4uLiAiID4mNjsg
fQoraWYgJHthY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGlu
ZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPW5vCitlbHNlCisg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKy8qIFRlc3QgcHJvZ3JhbSBmcm9tIFBhdWwgRWdnZXJ0IGFuZCBUb255IExl
bmVpcy4gICovCisjaWZkZWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90aW1l
Lmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1lTX1RJTUVfSAor
IyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBl
bmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K
KworI2lmZGVmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKwor
I2lmbmRlZiBIQVZFX0FMQVJNCisjIGRlZmluZSBhbGFybShYKSAvKiBlbXB0eSAqLworI2VuZGlm
CisKKy8qIFdvcmsgYXJvdW5kIHJlZGVmaW5pdGlvbiB0byBycGxfcHV0ZW52IGJ5IG90aGVyIGNv
bmZpZyB0ZXN0cy4gICovCisjdW5kZWYgcHV0ZW52CisKK3N0YXRpYyB0aW1lX3QgdGltZV90X21h
eDsKK3N0YXRpYyB0aW1lX3QgdGltZV90X21pbjsKKworLyogVmFsdWVzIHdlJ2xsIHVzZSB0byBz
ZXQgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICp0
el9zdHJpbmdzW10gPSB7CisgIChjb25zdCBjaGFyICopIDAsICJUWj1HTVQwIiwgIlRaPUpTVC05
IiwKKyAgIlRaPUVTVCszRURUKzIsTTEwLjEuMC8wMDowMDowMCxNMi4zLjAvMDA6MDA6MDAiCit9
OworI2RlZmluZSBOX1NUUklOR1MgKHNpemVvZiAodHpfc3RyaW5ncykgLyBzaXplb2YgKHR6X3N0
cmluZ3NbMF0pKQorCisvKiBSZXR1cm4gMCBpZiBta3RpbWUgZmFpbHMgdG8gY29udmVydCBhIGRh
dGUgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcC4KKyAgIEJhc2VkIG9uIGEgcHJvYmxlbSByZXBv
cnQgZnJvbSBBbmRyZWFzIEphZWdlci4gICovCitzdGF0aWMgaW50CitzcHJpbmdfZm9yd2FyZF9n
YXAgKCkKK3sKKyAgLyogZ2xpYmMgKHVwIHRvIGFib3V0IDE5OTgtMTAtMDcpIGZhaWxlZCB0aGlz
IHRlc3QuICovCisgIHN0cnVjdCB0bSB0bTsKKworICAvKiBVc2UgdGhlIHBvcnRhYmxlIFBPU0lY
LjEgc3BlY2lmaWNhdGlvbiAiVFo9UFNUOFBEVCxNNC4xLjAsTTEwLjUuMCIKKyAgICAgaW5zdGVh
ZCBvZiAiVFo9QW1lcmljYS9WYW5jb3V2ZXIiIGluIG9yZGVyIHRvIGRldGVjdCB0aGUgYnVnIGV2
ZW4KKyAgICAgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlIE9sc29uIGV4dGVuc2lv
biwgb3IgZG9uJ3QgaGF2ZSB0aGUKKyAgICAgZnVsbCB6b25laW5mbyB0YWJsZXMgaW5zdGFsbGVk
LiAgKi8KKyAgcHV0ZW52ICgoY2hhciopICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4wIik7CisK
KyAgdG0udG1feWVhciA9IDk4OworICB0bS50bV9tb24gPSAzOworICB0bS50bV9tZGF5ID0gNTsK
KyAgdG0udG1faG91ciA9IDI7CisgIHRtLnRtX21pbiA9IDA7CisgIHRtLnRtX3NlYyA9IDA7Cisg
IHRtLnRtX2lzZHN0ID0gLTE7CisgIHJldHVybiBta3RpbWUgKCZ0bSkgIT0gKHRpbWVfdCkgLTE7
Cit9CisKK3N0YXRpYyBpbnQKK21rdGltZV90ZXN0MSAodGltZV90IG5vdykKK3sKKyAgc3RydWN0
IHRtICpsdDsKKyAgcmV0dXJuICEgKGx0ID0gbG9jYWx0aW1lICgmbm93KSkgfHwgbWt0aW1lIChs
dCkgPT0gbm93OworfQorCitzdGF0aWMgaW50Citta3RpbWVfdGVzdCAodGltZV90IG5vdykKK3sK
KyAgcmV0dXJuIChta3RpbWVfdGVzdDEgKG5vdykKKwkgICYmIG1rdGltZV90ZXN0MSAoKHRpbWVf
dCkgKHRpbWVfdF9tYXggLSBub3cpKQorCSAgJiYgbWt0aW1lX3Rlc3QxICgodGltZV90KSAodGlt
ZV90X21pbiArIG5vdykpKTsKK30KKworc3RhdGljIGludAoraXJpeF82XzRfYnVnICgpCit7Cisg
IC8qIEJhc2VkIG9uIGNvZGUgZnJvbSBBcmllbCBGYWlnb24uICAqLworICBzdHJ1Y3QgdG0gdG07
CisgIHRtLnRtX3llYXIgPSA5NjsKKyAgdG0udG1fbW9uID0gMzsKKyAgdG0udG1fbWRheSA9IDA7
CisgIHRtLnRtX2hvdXIgPSAwOworICB0bS50bV9taW4gPSAwOworICB0bS50bV9zZWMgPSAwOwor
ICB0bS50bV9pc2RzdCA9IC0xOworICBta3RpbWUgKCZ0bSk7CisgIHJldHVybiB0bS50bV9tb24g
PT0gMiAmJiB0bS50bV9tZGF5ID09IDMxOworfQorCitzdGF0aWMgaW50CitiaWd0aW1lX3Rlc3Qg
KGludCBqKQoreworICBzdHJ1Y3QgdG0gdG07CisgIHRpbWVfdCBub3c7CisgIHRtLnRtX3llYXIg
PSB0bS50bV9tb24gPSB0bS50bV9tZGF5ID0gdG0udG1faG91ciA9IHRtLnRtX21pbiA9IHRtLnRt
X3NlYyA9IGo7CisgIG5vdyA9IG1rdGltZSAoJnRtKTsKKyAgaWYgKG5vdyAhPSAodGltZV90KSAt
MSkKKyAgICB7CisgICAgICBzdHJ1Y3QgdG0gKmx0ID0gbG9jYWx0aW1lICgmbm93KTsKKyAgICAg
IGlmICghIChsdAorCSAgICAgJiYgbHQtPnRtX3llYXIgPT0gdG0udG1feWVhcgorCSAgICAgJiYg
bHQtPnRtX21vbiA9PSB0bS50bV9tb24KKwkgICAgICYmIGx0LT50bV9tZGF5ID09IHRtLnRtX21k
YXkKKwkgICAgICYmIGx0LT50bV9ob3VyID09IHRtLnRtX2hvdXIKKwkgICAgICYmIGx0LT50bV9t
aW4gPT0gdG0udG1fbWluCisJICAgICAmJiBsdC0+dG1fc2VjID09IHRtLnRtX3NlYworCSAgICAg
JiYgbHQtPnRtX3lkYXkgPT0gdG0udG1feWRheQorCSAgICAgJiYgbHQtPnRtX3dkYXkgPT0gdG0u
dG1fd2RheQorCSAgICAgJiYgKChsdC0+dG1faXNkc3QgPCAwID8gLTEgOiAwIDwgbHQtPnRtX2lz
ZHN0KQorCQkgID09ICh0bS50bV9pc2RzdCA8IDAgPyAtMSA6IDAgPCB0bS50bV9pc2RzdCkpKSkK
KwlyZXR1cm4gMDsKKyAgICB9CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit5ZWFyXzIw
NTBfdGVzdCAoKQoreworICAvKiBUaGUgY29ycmVjdCBhbnN3ZXIgZm9yIDIwNTAtMDItMDEgMDA6
MDA6MDAgaW4gUGFjaWZpYyB0aW1lLAorICAgICBpZ25vcmluZyBsZWFwIHNlY29uZHMuICAqLwor
ICB1bnNpZ25lZCBsb25nIGludCBhbnN3ZXIgPSAyNTI3MzE1MjAwVUw7CisKKyAgc3RydWN0IHRt
IHRtOworICB0aW1lX3QgdDsKKyAgdG0udG1feWVhciA9IDIwNTAgLSAxOTAwOworICB0bS50bV9t
b24gPSAyIC0gMTsKKyAgdG0udG1fbWRheSA9IDE7CisgIHRtLnRtX2hvdXIgPSB0bS50bV9taW4g
PSB0bS50bV9zZWMgPSAwOworICB0bS50bV9pc2RzdCA9IC0xOworCisgIC8qIFVzZSB0aGUgcG9y
dGFibGUgUE9TSVguMSBzcGVjaWZpY2F0aW9uICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4wIgor
ICAgICBpbnN0ZWFkIG9mICJUWj1BbWVyaWNhL1ZhbmNvdXZlciIgaW4gb3JkZXIgdG8gZGV0ZWN0
IHRoZSBidWcgZXZlbgorICAgICBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgT2xz
b24gZXh0ZW5zaW9uLCBvciBkb24ndCBoYXZlIHRoZQorICAgICBmdWxsIHpvbmVpbmZvIHRhYmxl
cyBpbnN0YWxsZWQuICAqLworICBwdXRlbnYgKChjaGFyKikgIlRaPVBTVDhQRFQsTTQuMS4wLE0x
MC41LjAiKTsKKworICB0ID0gbWt0aW1lICgmdG0pOworCisgIC8qIENoZWNrIHRoYXQgdGhlIHJl
c3VsdCBpcyBlaXRoZXIgYSBmYWlsdXJlLCBvciBjbG9zZSBlbm91Z2gKKyAgICAgdG8gdGhlIGNv
cnJlY3QgYW5zd2VyIHRoYXQgd2UgY2FuIGFzc3VtZSB0aGUgZGlzY3JlcGFuY3kgaXMKKyAgICAg
ZHVlIHRvIGxlYXAgc2Vjb25kcy4gICovCisgIHJldHVybiAodCA9PSAodGltZV90KSAtMQorCSAg
fHwgKDAgPCB0ICYmIGFuc3dlciAtIDEyMCA8PSB0ICYmIHQgPD0gYW5zd2VyICsgMTIwKSk7Cit9
CisKK2ludAorbWFpbiAoKQoreworICB0aW1lX3QgdCwgZGVsdGE7CisgIGludCBpLCBqOworCisg
IC8qIFRoaXMgdGVzdCBtYWtlcyBzb21lIGJ1Z2d5IG1rdGltZSBpbXBsZW1lbnRhdGlvbnMgbG9v
cC4KKyAgICAgR2l2ZSB1cCBhZnRlciA2MCBzZWNvbmRzOyBhIG1rdGltZSBzbG93ZXIgdGhhbiB0
aGF0CisgICAgIGlzbid0IHdvcnRoIHVzaW5nIGFueXdheS4gICovCisgIGFsYXJtICg2MCk7CisK
KyAgZm9yICg7OykKKyAgICB7CisgICAgICB0ID0gKHRpbWVfdF9tYXggPDwgMSkgKyAxOworICAg
ICAgaWYgKHQgPD0gdGltZV90X21heCkKKwlicmVhazsKKyAgICAgIHRpbWVfdF9tYXggPSB0Owor
ICAgIH0KKyAgdGltZV90X21pbiA9IC0gKCh0aW1lX3QpIH4gKHRpbWVfdCkgMCA9PSAodGltZV90
KSAtMSkgLSB0aW1lX3RfbWF4OworCisgIGRlbHRhID0gdGltZV90X21heCAvIDk5NzsgLyogYSBz
dWl0YWJsZSBwcmltZSBudW1iZXIgKi8KKyAgZm9yIChpID0gMDsgaSA8IE5fU1RSSU5HUzsgaSsr
KQorICAgIHsKKyAgICAgIGlmICh0el9zdHJpbmdzW2ldKQorCXB1dGVudiAoKGNoYXIqKSB0el9z
dHJpbmdzW2ldKTsKKworICAgICAgZm9yICh0ID0gMDsgdCA8PSB0aW1lX3RfbWF4IC0gZGVsdGE7
IHQgKz0gZGVsdGEpCisJaWYgKCEgbWt0aW1lX3Rlc3QgKHQpKQorCSAgcmV0dXJuIDE7CisgICAg
ICBpZiAoISAobWt0aW1lX3Rlc3QgKCh0aW1lX3QpIDEpCisJICAgICAmJiBta3RpbWVfdGVzdCAo
KHRpbWVfdCkgKDYwICogNjApKQorCSAgICAgJiYgbWt0aW1lX3Rlc3QgKCh0aW1lX3QpICg2MCAq
IDYwICogMjQpKSkpCisJcmV0dXJuIDE7CisKKyAgICAgIGZvciAoaiA9IDE7IDsgaiA8PD0gMSkK
KwlpZiAoISBiaWd0aW1lX3Rlc3QgKGopKQorCSAgcmV0dXJuIDE7CisJZWxzZSBpZiAoSU5UX01B
WCAvIDIgPCBqKQorCSAgYnJlYWs7CisgICAgICBpZiAoISBiaWd0aW1lX3Rlc3QgKElOVF9NQVgp
KQorCXJldHVybiAxOworICAgIH0KKyAgcmV0dXJuICEgKGlyaXhfNl80X2J1ZyAoKSAmJiBzcHJp
bmdfZm9yd2FyZF9nYXAgKCkgJiYgeWVhcl8yMDUwX3Rlc3QgKCkpOworfQorX0FDRU9GCitpZiBh
Y19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY193b3JraW5nX21r
dGltZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY193b3JraW5nX21rdGltZT1ubworZmkKK3JtIC1m
IGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNf
ZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRh
Y19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX2N2X2Z1bmNfd29ya2luZ19ta3RpbWUiID4mNQorJGFzX2VjaG8gIiRhY19j
dl9mdW5jX3dvcmtpbmdfbWt0aW1lIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2Z1bmNfd29ya2lu
Z19ta3RpbWUgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBta3RpbWUu
JGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIG1rdGltZS4kYWNfb2Jq
ZXh0IgorIDs7Citlc2FjCisKK2ZpCisKKworCisKKworCitmb3IgYWNfZnVuYyBpbiBnZXRwYWdl
c2l6ZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRwYWdlc2l6ZSIg
ImFjX2N2X2Z1bmNfZ2V0cGFnZXNpemUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0cGFnZXNp
emUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUg
SEFWRV9HRVRQQUdFU0laRSAxCitfQUNFT0YKKworZmkKK2RvbmUKKworeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAuLi4gIiA+JjY7IH0KK2lmICR7
YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0g
eWVzOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubworZWxzZQorICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRl
ZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAorLyogbWFsbG9jIG1pZ2h0IGhhdmUgYmVl
biByZW5hbWVkIGFzIHJwbF9tYWxsb2MuICovCisjdW5kZWYgbWFsbG9jCisKKy8qIFRoYW5rcyB0
byBNaWtlIEhhZXJ0ZWwgYW5kIEppbSBBdmVyYSBmb3IgdGhpcyB0ZXN0LgorICAgSGVyZSBpcyBh
IG1hdHJpeCBvZiBtbWFwIHBvc3NpYmlsaXRpZXM6CisJbW1hcCBwcml2YXRlIG5vdCBmaXhlZAor
CW1tYXAgcHJpdmF0ZSBmaXhlZCBhdCBzb21ld2hlcmUgY3VycmVudGx5IHVubWFwcGVkCisJbW1h
cCBwcml2YXRlIGZpeGVkIGF0IHNvbWV3aGVyZSBhbHJlYWR5IG1hcHBlZAorCW1tYXAgc2hhcmVk
IG5vdCBmaXhlZAorCW1tYXAgc2hhcmVkIGZpeGVkIGF0IHNvbWV3aGVyZSBjdXJyZW50bHkgdW5t
YXBwZWQKKwltbWFwIHNoYXJlZCBmaXhlZCBhdCBzb21ld2hlcmUgYWxyZWFkeSBtYXBwZWQKKyAg
IEZvciBwcml2YXRlIG1hcHBpbmdzLCB3ZSBzaG91bGQgdmVyaWZ5IHRoYXQgY2hhbmdlcyBjYW5u
b3QgYmUgcmVhZCgpCisgICBiYWNrIGZyb20gdGhlIGZpbGUsIG5vciBtbWFwJ3MgYmFjayBmcm9t
IHRoZSBmaWxlIGF0IGEgZGlmZmVyZW50CisgICBhZGRyZXNzLiAgKFRoZXJlIGhhdmUgYmVlbiBz
eXN0ZW1zIHdoZXJlIHByaXZhdGUgd2FzIG5vdCBjb3JyZWN0bHkKKyAgIGltcGxlbWVudGVkIGxp
a2UgdGhlIGluZmFtb3VzIGkzODYgc3ZyNC4wLCBhbmQgc3lzdGVtcyB3aGVyZSB0aGUKKyAgIFZN
IHBhZ2UgY2FjaGUgd2FzIG5vdCBjb2hlcmVudCB3aXRoIHRoZSBmaWxlIHN5c3RlbSBidWZmZXIg
Y2FjaGUKKyAgIGxpa2UgZWFybHkgdmVyc2lvbnMgb2YgRnJlZUJTRCBhbmQgcG9zc2libHkgY29u
dGVtcG9yYXJ5IE5ldEJTRC4pCisgICBGb3Igc2hhcmVkIG1hcHBpbmdzLCB3ZSBzaG91bGQgY29u
dmVyc2VseSB2ZXJpZnkgdGhhdCBjaGFuZ2VzIGdldAorICAgcHJvcGFnYXRlZCBiYWNrIHRvIGFs
bCB0aGUgcGxhY2VzIHRoZXkncmUgc3VwcG9zZWQgdG8gYmUuCisKKyAgIEdyZXAgd2FudHMgcHJp
dmF0ZSBmaXhlZCBhbHJlYWR5IG1hcHBlZC4KKyAgIFRoZSBtYWluIHRoaW5ncyBncmVwIG5lZWRz
IHRvIGtub3cgYWJvdXQgbW1hcCBhcmU6CisgICAqIGRvZXMgaXQgZXhpc3QgYW5kIGlzIGl0IHNh
ZmUgdG8gd3JpdGUgaW50byB0aGUgbW1hcCdkIGFyZWEKKyAgICogaG93IHRvIHVzZSBpdCAoQlNE
IHZhcmlhbnRzKSAgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4u
aD4KKworI2lmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiAhZGVmaW5lZCBIQVZFX1NURExJQl9I
CitjaGFyICptYWxsb2MgKCk7CisjZW5kaWYKKworLyogVGhpcyBtZXNzIHdhcyBjb3BpZWQgZnJv
bSB0aGUgR05VIGdldHBhZ2VzaXplLmguICAqLworI2lmbmRlZiBIQVZFX0dFVFBBR0VTSVpFCisj
IGlmZGVmIF9TQ19QQUdFU0laRQorIyAgZGVmaW5lIGdldHBhZ2VzaXplKCkgc3lzY29uZihfU0Nf
UEFHRVNJWkUpCisjIGVsc2UgLyogbm8gX1NDX1BBR0VTSVpFICovCisjICBpZmRlZiBIQVZFX1NZ
U19QQVJBTV9ICisjICAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjICAgaWZkZWYgRVhFQ19QQUdF
U0laRQorIyAgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBFWEVDX1BBR0VTSVpFCisjICAgZWxzZSAv
KiBubyBFWEVDX1BBR0VTSVpFICovCisjICAgIGlmZGVmIE5CUEcKKyMgICAgIGRlZmluZSBnZXRw
YWdlc2l6ZSgpIE5CUEcgKiBDTFNJWkUKKyMgICAgIGlmbmRlZiBDTFNJWkUKKyMgICAgICBkZWZp
bmUgQ0xTSVpFIDEKKyMgICAgIGVuZGlmIC8qIG5vIENMU0laRSAqLworIyAgICBlbHNlIC8qIG5v
IE5CUEcgKi8KKyMgICAgIGlmZGVmIE5CUEMKKyMgICAgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBO
QlBDCisjICAgICBlbHNlIC8qIG5vIE5CUEMgKi8KKyMgICAgICBpZmRlZiBQQUdFU0laRQorIyAg
ICAgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBQQUdFU0laRQorIyAgICAgIGVuZGlmIC8qIFBBR0VT
SVpFICovCisjICAgICBlbmRpZiAvKiBubyBOQlBDICovCisjICAgIGVuZGlmIC8qIG5vIE5CUEcg
Ki8KKyMgICBlbmRpZiAvKiBubyBFWEVDX1BBR0VTSVpFICovCisjICBlbHNlIC8qIG5vIEhBVkVf
U1lTX1BBUkFNX0ggKi8KKyMgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSA4MTkyCS8qIHB1bnQgdG90
YWxseSAqLworIyAgZW5kaWYgLyogbm8gSEFWRV9TWVNfUEFSQU1fSCAqLworIyBlbmRpZiAvKiBu
byBfU0NfUEFHRVNJWkUgKi8KKworI2VuZGlmIC8qIG5vIEhBVkVfR0VUUEFHRVNJWkUgKi8KKwor
aW50CittYWluICgpCit7CisgIGNoYXIgKmRhdGEsICpkYXRhMiwgKmRhdGEzOworICBjb25zdCBj
aGFyICpjZGF0YTI7CisgIGludCBpLCBwYWdlc2l6ZTsKKyAgaW50IGZkLCBmZDI7CisKKyAgcGFn
ZXNpemUgPSBnZXRwYWdlc2l6ZSAoKTsKKworICAvKiBGaXJzdCwgbWFrZSBhIGZpbGUgd2l0aCBz
b21lIGtub3duIGdhcmJhZ2UgaW4gaXQuICovCisgIGRhdGEgPSAoY2hhciAqKSBtYWxsb2MgKHBh
Z2VzaXplKTsKKyAgaWYgKCFkYXRhKQorICAgIHJldHVybiAxOworICBmb3IgKGkgPSAwOyBpIDwg
cGFnZXNpemU7ICsraSkKKyAgICAqKGRhdGEgKyBpKSA9IHJhbmQgKCk7CisgIHVtYXNrICgwKTsK
KyAgZmQgPSBjcmVhdCAoImNvbmZ0ZXN0Lm1tYXAiLCAwNjAwKTsKKyAgaWYgKGZkIDwgMCkKKyAg
ICByZXR1cm4gMjsKKyAgaWYgKHdyaXRlIChmZCwgZGF0YSwgcGFnZXNpemUpICE9IHBhZ2VzaXpl
KQorICAgIHJldHVybiAzOworICBjbG9zZSAoZmQpOworCisgIC8qIE5leHQsIGNoZWNrIHRoYXQg
dGhlIHRhaWwgb2YgYSBwYWdlIGlzIHplcm8tZmlsbGVkLiAgRmlsZSBtdXN0IGhhdmUKKyAgICAg
bm9uLXplcm8gbGVuZ3RoLCBvdGhlcndpc2Ugd2UgcmlzayBTSUdCVVMgZm9yIGVudGlyZSBwYWdl
LiAgKi8KKyAgZmQyID0gb3BlbiAoImNvbmZ0ZXN0LnR4dCIsIE9fUkRXUiB8IE9fQ1JFQVQgfCBP
X1RSVU5DLCAwNjAwKTsKKyAgaWYgKGZkMiA8IDApCisgICAgcmV0dXJuIDQ7CisgIGNkYXRhMiA9
ICIiOworICBpZiAod3JpdGUgKGZkMiwgY2RhdGEyLCAxKSAhPSAxKQorICAgIHJldHVybiA1Owor
ICBkYXRhMiA9IChjaGFyICopIG1tYXAgKDAsIHBhZ2VzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dS
SVRFLCBNQVBfU0hBUkVELCBmZDIsIDBMKTsKKyAgaWYgKGRhdGEyID09IE1BUF9GQUlMRUQpCisg
ICAgcmV0dXJuIDY7CisgIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgIGlmICgq
KGRhdGEyICsgaSkpCisgICAgICByZXR1cm4gNzsKKyAgY2xvc2UgKGZkMik7CisgIGlmIChtdW5t
YXAgKGRhdGEyLCBwYWdlc2l6ZSkpCisgICAgcmV0dXJuIDg7CisKKyAgLyogTmV4dCwgdHJ5IHRv
IG1tYXAgdGhlIGZpbGUgYXQgYSBmaXhlZCBhZGRyZXNzIHdoaWNoIGFscmVhZHkgaGFzCisgICAg
IHNvbWV0aGluZyBlbHNlIGFsbG9jYXRlZCBhdCBpdC4gIElmIHdlIGNhbiwgYWxzbyBtYWtlIHN1
cmUgdGhhdAorICAgICB3ZSBzZWUgdGhlIHNhbWUgZ2FyYmFnZS4gICovCisgIGZkID0gb3BlbiAo
ImNvbmZ0ZXN0Lm1tYXAiLCBPX1JEV1IpOworICBpZiAoZmQgPCAwKQorICAgIHJldHVybiA5Owor
ICBpZiAoZGF0YTIgIT0gbW1hcCAoZGF0YTIsIHBhZ2VzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dS
SVRFLAorCQkgICAgIE1BUF9QUklWQVRFIHwgTUFQX0ZJWEVELCBmZCwgMEwpKQorICAgIHJldHVy
biAxMDsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgaWYgKCooZGF0YSAr
IGkpICE9ICooZGF0YTIgKyBpKSkKKyAgICAgIHJldHVybiAxMTsKKworICAvKiBGaW5hbGx5LCBt
YWtlIHN1cmUgdGhhdCBjaGFuZ2VzIHRvIHRoZSBtYXBwZWQgYXJlYSBkbyBub3QKKyAgICAgcGVy
Y29sYXRlIGJhY2sgdG8gdGhlIGZpbGUgYXMgc2VlbiBieSByZWFkKCkuICAoVGhpcyBpcyBhIGJ1
ZyBvbgorICAgICBzb21lIHZhcmlhbnRzIG9mIGkzODYgc3ZyNC4wLikgICovCisgIGZvciAoaSA9
IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgICooZGF0YTIgKyBpKSA9ICooZGF0YTIgKyBpKSAr
IDE7CisgIGRhdGEzID0gKGNoYXIgKikgbWFsbG9jIChwYWdlc2l6ZSk7CisgIGlmICghZGF0YTMp
CisgICAgcmV0dXJuIDEyOworICBpZiAocmVhZCAoZmQsIGRhdGEzLCBwYWdlc2l6ZSkgIT0gcGFn
ZXNpemUpCisgICAgcmV0dXJuIDEzOworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkK
KyAgICBpZiAoKihkYXRhICsgaSkgIT0gKihkYXRhMyArIGkpKQorICAgICAgcmV0dXJuIDE0Owor
ICBjbG9zZSAoZmQpOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVu
ICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzCitl
bHNlCisgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9bm8KK2ZpCitybSAtZiBjb3JlICou
Y29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBc
CisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Citm
aQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVu
Y19tbWFwX2ZpeGVkX21hcHBlZCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9mdW5jX21tYXBfZml4
ZWRfbWFwcGVkID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTU1BUCAxIiA+
PmNvbmZkZWZzLmgKKworZmkKK3JtIC1mIGNvbmZ0ZXN0Lm1tYXAgY29uZnRlc3QudHh0CisKK2Zv
ciBhY19oZWFkZXIgaW4gc3RkbGliLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9u
Z3JlbCAiJExJTkVOTyIgInN0ZGxpYi5oIiAiYWNfY3ZfaGVhZGVyX3N0ZGxpYl9oIiAiJGFjX2lu
Y2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRsaWJfaCIgPSB4eWVz
OyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NURExJ
Ql9IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNvbXBhdGlibGUgcmVhbGxvYyIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIGxpYmMgY29tcGF0aWJsZSByZWFsbG9j
Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGwrOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIk
Y3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfcmVhbGxvY18wX25v
bm51bGw9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8
IGRlZmluZWQgSEFWRV9TVERMSUJfSAorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbHNlCitjaGFy
ICpyZWFsbG9jICgpOworI2VuZGlmCisKK2ludAorbWFpbiAoKQoreworcmV0dXJuICEgcmVhbGxv
YyAoMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1
biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPXllcwor
ZWxzZQorICBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPW5vCitmaQorcm0gLWYgY29yZSAq
LmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQg
XAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAor
ZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1
bmNfcmVhbGxvY18wX25vbm51bGwiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19yZWFsbG9j
XzBfbm9ubnVsbCA9IHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkVBTExP
QyAxIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1JFQUxM
T0MgMCIgPj5jb25mZGVmcy5oCisKKyAgIGNhc2UgIiAkTElCT0JKUyAiIGluCisgICoiIHJlYWxs
b2MuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHJlYWxsb2MuJGFj
X29iamV4dCIKKyA7OworZXNhYworCisKKyRhc19lY2hvICIjZGVmaW5lIHJlYWxsb2MgcnBsX3Jl
YWxsb2MiID4+Y29uZmRlZnMuaAorCitmaQorCisKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIHN0cm5sZW4iID4mNQorJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3Rybmxlbi4uLiAiID4mNjsgfQoraWYgJHthY19j
dl9mdW5jX3N0cm5sZW5fd29ya2luZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0
aGVuIDoKKyAgIyBHdWVzcyBubyBvbiBBSVggc3lzdGVtcywgeWVzIG90aGVyd2lzZS4KKwkJY2Fz
ZSAiJGhvc3Rfb3MiIGluCisJCSAgYWl4KikgYWNfY3ZfZnVuY19zdHJubGVuX3dvcmtpbmc9bm87
OworCQkgICopICAgIGFjX2N2X2Z1bmNfc3Rybmxlbl93b3JraW5nPXllczs7CisJCWVzYWMKK2Vs
c2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQorewor
CisjZGVmaW5lIFMgImZvb2JhciIKKyNkZWZpbmUgU19MRU4gKHNpemVvZiBTIC0gMSkKKworICAv
KiBBdCBsZWFzdCBvbmUgaW1wbGVtZW50YXRpb24gaXMgYnVnZ3k6IHRoYXQgb2YgQUlYIDQuMyB3
b3VsZAorICAgICBnaXZlIHN0cm5sZW4gKFMsIDEpID09IDMuICAqLworCisgIGludCBpOworICBm
b3IgKGkgPSAwOyBpIDwgU19MRU4gKyAxOyArK2kpCisgICAgeworICAgICAgaW50IGV4cGVjdGVk
ID0gaSA8PSBTX0xFTiA/IGkgOiBTX0xFTjsKKyAgICAgIGlmIChzdHJubGVuIChTLCBpKSAhPSBl
eHBlY3RlZCkKKwlyZXR1cm4gMTsKKyAgICB9CisgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJu
IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBh
Y19jdl9mdW5jX3N0cm5sZW5fd29ya2luZz15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19zdHJubGVu
X3dvcmtpbmc9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5v
dXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX3N0cm5sZW5fd29ya2lu
ZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfc3Rybmxlbl93b3JraW5nIiA+JjY7IH0KK3Rl
c3QgJGFjX2N2X2Z1bmNfc3Rybmxlbl93b3JraW5nID0gbm8gJiYgY2FzZSAiICRMSUJPQkpTICIg
aW4KKyAgKiIgc3Rybmxlbi4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9C
SlMgc3Rybmxlbi4kYWNfb2JqZXh0IgorIDs7Citlc2FjCisKKworeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBzdHJ0b2QiID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3RydG9kLi4uICIgPiY2OyB9CitpZiAk
e2FjX2N2X2Z1bmNfc3RydG9kKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4g
OgorICBhY19jdl9mdW5jX3N0cnRvZD1ubworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyRhY19pbmNs
dWRlc19kZWZhdWx0CisjaWZuZGVmIHN0cnRvZAorZG91YmxlIHN0cnRvZCAoKTsKKyNlbmRpZgor
aW50CittYWluKCkKK3sKKyAgeworICAgIC8qIFNvbWUgdmVyc2lvbnMgb2YgTGludXggc3RydG9k
IG1pcy1wYXJzZSBzdHJpbmdzIHdpdGggbGVhZGluZyAnKycuICAqLworICAgIGNoYXIgKnN0cmlu
ZyA9ICIgKzY5IjsKKyAgICBjaGFyICp0ZXJtOworICAgIGRvdWJsZSB2YWx1ZTsKKyAgICB2YWx1
ZSA9IHN0cnRvZCAoc3RyaW5nLCAmdGVybSk7CisgICAgaWYgKHZhbHVlICE9IDY5IHx8IHRlcm0g
IT0gKHN0cmluZyArIDQpKQorICAgICAgcmV0dXJuIDE7CisgIH0KKworICB7CisgICAgLyogVW5k
ZXIgU29sYXJpcyAyLjQsIHN0cnRvZCByZXR1cm5zIHRoZSB3cm9uZyB2YWx1ZSBmb3IgdGhlCisg
ICAgICAgdGVybWluYXRpbmcgY2hhcmFjdGVyIHVuZGVyIHNvbWUgY29uZGl0aW9ucy4gICovCisg
ICAgY2hhciAqc3RyaW5nID0gIk5hTiI7CisgICAgY2hhciAqdGVybTsKKyAgICBzdHJ0b2QgKHN0
cmluZywgJnRlcm0pOworICAgIGlmICh0ZXJtICE9IHN0cmluZyAmJiAqKHRlcm0gLSAxKSA9PSAw
KQorICAgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNf
Zm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfc3RydG9kPXllcwor
ZWxzZQorICBhY19jdl9mdW5jX3N0cnRvZD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUu
Y29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1
bmNfc3RydG9kIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVuY19zdHJ0b2QiID4mNjsgfQoraWYg
dGVzdCAkYWNfY3ZfZnVuY19zdHJ0b2QgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9CSlMgIiBp
bgorICAqIiBzdHJ0b2QuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpT
IHN0cnRvZC4kYWNfb2JqZXh0IgorIDs7Citlc2FjCisKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJ
TkVOTyIgInBvdyIgImFjX2N2X2Z1bmNfcG93IgoraWYgdGVzdCAieCRhY19jdl9mdW5jX3BvdyIg
PSB4eWVzOyB0aGVuIDoKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfZnVuY19wb3cgPSBubzsgdGhl
bgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciBwb3cgaW4gLWxtIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBwb3cgaW4gLWxtLi4u
ICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9tX3Bvdys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJ
QlMKK0xJQlM9Ii1sbSAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0Mg
aW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVz
ZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFu
ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgcG93ICgpOworaW50Citt
YWluICgpCit7CityZXR1cm4gcG93ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitp
ZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9tX3Bvdz15
ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX21fcG93PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5l
cnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0
LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9tX3BvdyIgPiY1
CiskYXNfZWNobyAiJGFjX2N2X2xpYl9tX3BvdyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xp
Yl9tX3BvdyIgPSB4eWVzOyB0aGVuIDoKKyAgUE9XX0xJQj0tbG0KK2Vsc2UKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgZmluZCBsaWJy
YXJ5IGNvbnRhaW5pbmcgZGVmaW5pdGlvbiBvZiBwb3ciID4mNQorJGFzX2VjaG8gIiRhc19tZTog
V0FSTklORzogY2Fubm90IGZpbmQgbGlicmFyeSBjb250YWluaW5nIGRlZmluaXRpb24gb2YgcG93
IiA+JjI7fQorZmkKKworZmkKKworZmkKKworZm9yIGFjX2Z1bmMgaW4gIFwKKyAgICAgICAgICAg
ICAgICBhbGFybSBhdGV4aXQgYnplcm8gY2xvY2tfZ2V0dGltZSBkdXAyIGZkYXRhc3luYyBmdHJ1
bmNhdGUgXAorICAgICAgICAgICAgICAgIGdldGN3ZCBnZXRob3N0YnluYW1lIGdldGhvc3RuYW1l
IGdldHBhZ2VzaXplIGdldHRpbWVvZmRheSBcCisgICAgICAgICAgICAgICAgaW5ldF9udG9hIGlz
YXNjaWkgbG9jYWx0aW1lX3IgbWVtY2hyIG1lbW1vdmUgbWVtc2V0IG1rZGlyIFwKKyAgICAgICAg
ICAgICAgICBta2ZpZm8gbXVubWFwIHBhdGhjb25mIHJlYWxwYXRoIHJlZ2NvbXAgcm1kaXIgc2Vs
ZWN0IHNldGVudiBcCisgICAgICAgICAgICAgICAgc29ja2V0IHN0cmNhc2VjbXAgc3RyY2hyIHN0
cmNzcG4gc3RyZHVwIHN0cmVycm9yIHN0cm5kdXAgXAorICAgICAgICAgICAgICAgIHN0cnBicmsg
c3RycmNociBzdHJzcG4gc3Ryc3RyIHN0cnRvbCBzdHJ0b3VsIHN0cnRvdWxsIHR6c2V0IFwKKyAg
ICAgICAgICAgICAgICB1bmFtZSBcCisKK2RvIDoKKyAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNf
Y3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F
Tk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3Zh
ciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZp
bmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitm
aQorZG9uZQorCisKK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgorIyBUaGlzIGZpbGUgaXMgYSBz
aGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCisjIHRlc3Rz
IHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1
cmUKKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBvcHRpb24g
LS1jb25maWctY2FjaGUuCisjIEl0IGlzIG5vdCB1c2VmdWwgb24gb3RoZXIgc3lzdGVtcy4gIElm
IGl0IGNvbnRhaW5zIHJlc3VsdHMgeW91IGRvbid0CisjIHdhbnQgdG8ga2VlcCwgeW91IG1heSBy
ZW1vdmUgb3IgZWRpdCBpdC4KKyMKKyMgY29uZmlnLnN0YXR1cyBvbmx5IHBheXMgYXR0ZW50aW9u
IHRvIHRoZSBjYWNoZSBmaWxlIGlmIHlvdSBnaXZlIGl0CisjIHRoZSAtLXJlY2hlY2sgb3B0aW9u
IHRvIHJlcnVuIGNvbmZpZ3VyZS4KKyMKKyMgYGFjX2N2X2Vudl9mb28nIHZhcmlhYmxlcyAoc2V0
IG9yIHVuc2V0KSB3aWxsIGJlIG92ZXJyaWRkZW4gd2hlbgorIyBsb2FkaW5nIHRoaXMgZmlsZSwg
b3RoZXIgKnVuc2V0KiBgYWNfY3ZfZm9vJyB3aWxsIGJlIGFzc2lnbmVkIHRoZQorIyBmb2xsb3dp
bmcgdmFsdWVzLgorCitfQUNFT0YKKworIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRo
ZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKKyMgYnV0IHdlIGtub3cgb2Yg
bm8gd29ya2Fyb3VuZCB0aGF0IGlzIHNpbXBsZSwgcG9ydGFibGUsIGFuZCBlZmZpY2llbnQuCisj
IFNvLCB3ZSBraWxsIHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xpbmVzLgorIyBVbHRyaXggc2gg
c2V0IHdyaXRlcyB0byBzdGRlcnIgYW5kIGNhbid0IGJlIHJlZGlyZWN0ZWQgZGlyZWN0bHksCisj
IGFuZCBzZXRzIHRoZSBoaWdoIGJpdCBpbiB0aGUgY2FjaGUgZmlsZSB1bmxlc3Mgd2UgYXNzaWdu
IHRvIHRoZSB2YXJzLgorKAorICBmb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwgc2VkIC1uICdz
L15cKFthLXpBLVpfXVthLXpBLVowLTlfXSpcKT0uKi9cMS9wJ2A7IGRvCisgICAgZXZhbCBhY192
YWw9XCQkYWNfdmFyCisgICAgY2FzZSAkYWNfdmFsIGluICMoCisgICAgKiR7YXNfbmx9KikKKyAg
ICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29u
dGFpbnMgYSBuZXdsaW5lIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGNhY2hlIHZh
cmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjI7fSA7OworICAgICAgZXNhYwor
ICAgICAgY2FzZSAkYWNfdmFyIGluICMoCisgICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7ICMoCisg
ICAgICBCQVNIX0FSR1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFyPSA7OyAjKAorICAgICAg
KikgeyBldmFsICRhY192YXI9OyB1bnNldCAkYWNfdmFyO30gOzsKKyAgICAgIGVzYWMgOzsKKyAg
ICBlc2FjCisgIGRvbmUKKworICAoc2V0KSAyPiYxIHwKKyAgICBjYXNlICRhc19ubGAoYWNfc3Bh
Y2U9JyAnOyBzZXQpIDI+JjFgIGluICMoCisgICAgKiR7YXNfbmx9YWNfc3BhY2U9XCAqKQorICAg
ICAgIyBgc2V0JyBkb2VzIG5vdCBxdW90ZSBjb3JyZWN0bHksIHNvIGFkZCBxdW90ZXM6IGRvdWJs
ZS1xdW90ZQorICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2Vk
IHR1cm5zIFxcIGludG8gXC4KKyAgICAgIHNlZCAtbiBcCisJInMvJy8nXFxcXCcnL2c7CisJICBz
L15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwx
PSdcXDInL3AiCisgICAgICA7OyAjKAorICAgICopCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3Jy
ZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgorICAgICAg
c2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIKKyAgICAg
IDs7CisgICAgZXNhYyB8CisgICAgc29ydAorKSB8CisgIHNlZCAnCisgICAgIC9eYWNfY3ZfZW52
Xy9iIGVuZAorICAgICB0IGNsZWFyCisgICAgIDpjbGVhcgorICAgICBzL15cKFtePV0qXCk9XCgu
Klt7fV0uKlwpJC90ZXN0ICIke1wxK3NldH0iID0gc2V0IHx8ICYvCisgICAgIHQgZW5kCisgICAg
IHMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9LworICAgICA6ZW5kJyA+PmNvbmZjYWNo
ZQoraWYgZGlmZiAiJGNhY2hlX2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4g
OjsgZWxzZQorICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4
JGNhY2hlX2ZpbGUiICE9ICJ4L2Rldi9udWxsIjsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1
CiskYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAg
ICAgIGlmIHRlc3QgISAtZiAiJGNhY2hlX2ZpbGUiIHx8IHRlc3QgLWggIiRjYWNoZV9maWxlIjsg
dGhlbgorCWNhdCBjb25mY2FjaGUgPiIkY2FjaGVfZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAg
Y2FzZSAkY2FjaGVfZmlsZSBpbiAjKAorICAgICAgICAqLyogfCA/OiopCisJICBtdiAtZiBjb25m
Y2FjaGUgIiRjYWNoZV9maWxlIiQkICYmCisJICBtdiAtZiAiJGNhY2hlX2ZpbGUiJCQgIiRjYWNo
ZV9maWxlIiA7OyAjKAorICAgICAgICAqKQorCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmls
ZSIgOzsKKwllc2FjCisgICAgICBmaQorICAgIGZpCisgIGVsc2UKKyAgICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hl
ICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRh
YmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQorICBmaQorZmkKK3JtIC1mIGNvbmZjYWNoZQor
Cit0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4Cisj
IExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4KK3Rlc3QgIngkZXhlY19wcmVmaXgiID0geE5P
TkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKworREVGUz0tREhBVkVfQ09ORklHX0gKKwor
YWNfbGlib2Jqcz0KK2FjX2x0bGlib2Jqcz0KK1U9Citmb3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBk
byB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKKyAgIyAxLiBSZW1vdmUgdGhlIGV4dGVu
c2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgorICBhY19zY3JpcHQ9J3MvXCRVXC4v
Li87cy9cLm8kLy87cy9cLm9iaiQvLycKKyAgYWNfaT1gJGFzX2VjaG8gIiRhY19pIiB8IHNlZCAi
JGFjX3NjcmlwdCJgCisgICMgMi4gUHJlcGVuZCBMSUJPQkpESVIuICBXaGVuIHVzZWQgd2l0aCBh
dXRvbWFrZT49MS4xMCBMSUJPQkpESVIKKyAgIyAgICB3aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0
b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuCisgIGFzX2ZuX2FwcGVuZCBhY19s
aWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pXCRVLiRhY19vYmpleHQiCisgIGFzX2ZuX2FwcGVu
ZCBhY19sdGxpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFjX2kiJyRVLmxvJworZG9uZQorTElCT0JK
Uz0kYWNfbGlib2JqcworCitMVExJQk9CSlM9JGFjX2x0bGlib2JqcworCisKKworOiAiJHtDT05G
SUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30iCithY193cml0ZV9mYWlsPTAKK2FjX2NsZWFuX2Zp
bGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVz
ICRDT05GSUdfU1RBVFVTIgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGlu
ZyAkQ09ORklHX1NUQVRVUyIgPiY2O30KK2FzX3dyaXRlX2ZhaWw9MAorY2F0ID4kQ09ORklHX1NU
QVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTEKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQg
YnkgJGFzX21lLgorIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZp
Z3VyYXRpb24uCisjIENvbXBpbGVyIG91dHB1dCBwcm9kdWNlZCBieSBjb25maWd1cmUsIHVzZWZ1
bCBmb3IgZGVidWdnaW5nCisjIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlz
dHMuCisKK2RlYnVnPWZhbHNlCithY19jc19yZWNoZWNrPWZhbHNlCithY19jc19zaWxlbnQ9ZmFs
c2UKKworU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KK2V4cG9ydCBTSEVMTAorX0FTRU9G
CitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCisjIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gIyMKKyMjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgQmUgbW9yZSBCb3VybmUgY29tcGF0aWJsZQorRFVB
TENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAoraWYgdGVzdCAtbiAiJHtaU0hf
VkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAg
ZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3
b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCisgICMgaXMgY29udHJhcnkgdG8gb3Vy
IHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCisgIGFsaWFzIC1nICckezErIiRAIn0nPSci
JEAiJworICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZWxzZQorICBjYXNlIGAoc2V0IC1vKSAyPi9k
ZXYvbnVsbGAgaW4gIygKKyAgKnBvc2l4KikgOgorICAgIHNldCAtbyBwb3NpeCA7OyAjKAorICAq
KSA6CisgICAgIDs7Citlc2FjCitmaQorCisKK2FzX25sPScKKycKK2V4cG9ydCBhc19ubAorIyBQ
cmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4K
K2FzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwn
Cithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KK2FzX2Vj
aG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCisjIFBy
ZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0g
b24gU29sYXJpcywKKyMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2gu
CitpZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcCisgICAgJiYgKHRlc3Qg
IlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhl
bgorICBhc19lY2hvPSdwcmludCAtciAtLScKKyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nCitl
bGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9u
dWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50ZiAlc1xuJworICBhc19lY2hvX249J3ByaW50ZiAl
cycKK2Vsc2UKKyAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4v
ZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuCisgICAgYXNfZWNob19ib2R5PSdldmFs
IC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicKKyAgICBhc19lY2hvX249Jy91c3IvdWNiL2Vj
aG8gLW4nCisgIGVsc2UKKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwo
LipcXCkiJworICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCisgICAgICBhcmc9JDE7CisgICAgICBj
YXNlICRhcmcgaW4gIygKKyAgICAgICoiJGFzX25sIiopCisJZXhwciAiWCRhcmciIDogIlhcXCgu
KlxcKSRhc19ubCI7CisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsK
KyAgICAgIGVzYWM7CisgICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIk
YXNfbmwiCisgICAgJworICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQorICAgIGFzX2VjaG9fbj0n
c2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCisgIGZpCisgIGV4cG9ydCBhc19lY2hvX2Jv
ZHkKKyAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJworZmkKKworIyBUaGUg
dXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9
IHNldDsgdGhlbgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFU
SD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKKyAgICAoUEFUSD0nL2Jpbjov
YmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fAorICAgICAgUEFU
SF9TRVBBUkFUT1I9JzsnCisgIH0KK2ZpCisKKworIyBJRlMKKyMgV2UgbmVlZCBzcGFjZSwgdGFi
IGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90aW5nIGlzCisjIHRo
ZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4K
KyMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxk
IGRpc2FibGUgd29yZAorIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUu
KQorSUZTPSIgIiIJJGFzX25sIgorCisjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBh
dGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorYXNfbXlzZWxmPQorY2Fz
ZSAkMCBpbiAjKCgKKyAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OworICAqKSBhc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ
RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgdGVz
dCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCisgICAgIDs7Citlc2FjCisjIFdlIGRpZCBub3QgZmluZCBv
dXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCisjIGlu
IHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KK2lmIHRlc3Qg
IngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KKyAgYXNfbXlzZWxmPSQwCitmaQoraWYgdGVzdCAhIC1m
ICIkYXNfbXlzZWxmIjsgdGhlbgorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5v
dCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgorICBl
eGl0IDEKK2ZpCisKKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdo
aWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90
IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIKKyMgc3VwcHJlc3NlcyBh
bnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKKyMgdHJp
Z2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCitmb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBN
QUlMIE1BSUxQQVRICitkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAorICAm
JiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAk
YXNfdmFyIHx8IDoKK2RvbmUKK1BTMT0nJCAnCitQUzI9Jz4gJworUFM0PScrICcKKworIyBOTFMg
bnVpc2FuY2VzLgorTENfQUxMPUMKK2V4cG9ydCBMQ19BTEwKK0xBTkdVQUdFPUMKK2V4cG9ydCBM
QU5HVUFHRQorCisjIENEUEFUSC4KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1
bnNldCBDRFBBVEgKKworCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExPR19G
RF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQg
ImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExP
R19GRCBhcmUKKyMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJl
ZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQorIyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVz
aW5nIDEgaWYgdGhhdCB3YXMgMC4KK2FzX2ZuX2Vycm9yICgpCit7CisgIGFzX3N0YXR1cz0kMTsg
dGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCisgIGlmIHRlc3QgIiQ0IjsgdGhl
bgorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9fc3RhY2s9YXNfbGlu
ZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZTog
ZXJyb3I6ICQyIiA+JjIKKyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzCit9ICMgYXNfZm5fZXJyb3IK
KworCisjIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KK2FzX2ZuX3NldF9zdGF0dXMg
KCkKK3sKKyAgcmV0dXJuICQxCit9ICMgYXNfZm5fc2V0X3N0YXR1cworCisjIGFzX2ZuX2V4aXQg
U1RBVFVTCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVT
LCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4KK2FzX2ZuX2V4aXQgKCkK
K3sKKyAgc2V0ICtlCisgIGFzX2ZuX3NldF9zdGF0dXMgJDEKKyAgZXhpdCAkMQorfSAjIGFzX2Zu
X2V4aXQKKworIyBhc19mbl91bnNldCBWQVIKKyMgLS0tLS0tLS0tLS0tLS0tCisjIFBvcnRhYmx5
IHVuc2V0IFZBUi4KK2FzX2ZuX3Vuc2V0ICgpCit7CisgIHsgZXZhbCAkMT07IHVuc2V0ICQxO30K
K30KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0CisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBcHBlbmQgdGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVu
ZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBUYWtlCisjIGFkdmFudGFnZSBv
ZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZCBsaW5lYXIgZ3Jv
d3RoIG92ZXIKKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFk
cmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKKyMgaW1wbGVtZW50YXRpb25zLgoraWYgKGV2
YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0geDEyIikgMj4vZGV2L251
bGw7IHRoZW4gOgorICBldmFsICdhc19mbl9hcHBlbmQgKCkKKyAgeworICAgIGV2YWwgJDErPVwk
MgorICB9JworZWxzZQorICBhc19mbl9hcHBlbmQgKCkKKyAgeworICAgIGV2YWwgJDE9XCQkMVwk
MgorICB9CitmaSAjIGFzX2ZuX2FwcGVuZAorCisjIGFzX2ZuX2FyaXRoIEFSRy4uLgorIyAtLS0t
LS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFS
R3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZQorIyBnbG9iYWwgJGFzX3ZhbC4gVGFrZSBh
ZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBUaGUgYXJndW1lbnRzCisj
IG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgoraWYgKGV2YWwgInRlc3Qg
XCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGV2YWwgJ2FzX2ZuX2Fy
aXRoICgpCisgIHsKKyAgICBhc192YWw9JCgoICQqICkpCisgIH0nCitlbHNlCisgIGFzX2ZuX2Fy
aXRoICgpCisgIHsKKyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYAorICB9
CitmaSAjIGFzX2ZuX2FyaXRoCisKKworaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+
JjEgJiYKKyAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVu
CisgIGFzX2V4cHI9ZXhwcgorZWxzZQorICBhc19leHByPWZhbHNlCitmaQorCitpZiAoYmFzZW5h
bWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIg
PSAiWC8iOyB0aGVuCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCitlbHNlCisgIGFzX2Jhc2VuYW1l
PWZhbHNlCitmaQorCitpZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGly
IiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfZGlybmFtZT1kaXJuYW1lCitlbHNl
CisgIGFzX2Rpcm5hbWU9ZmFsc2UKK2ZpCisKK2FzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8
fAorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwKKwkgWCIkMCIg
OiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8
CiskYXNfZWNobyBYLyIkMCIgfAorICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQvewor
CSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXC9cKFwvXC9cKSQveworCSAgICBzLy9c
MS8KKwkgICAgcQorCSAgfQorCSAgL15YXC9cKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBx
CisJICB9CisJICBzLy4qLy4vOyBxJ2AKKworIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0
ZXIgUmFuZ2VzLgorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCith
c19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKK2FzX2NyX0xldHRlcnM9
JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUworYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5Jwor
YXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCisKK0VDSE9fQz0gRUNIT19O
PSBFQ0hPX1Q9CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAorLW4qKQorICBjYXNlIGBlY2hv
ICd4eVxjJ2AgaW4KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBj
aGFyYWN0ZXIuCisgIHh5KSAgRUNIT19DPSdcYyc7OworICAqKSAgIGVjaG8gYGVjaG8ga3NoODgg
YnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCisgICAgICAgRUNIT19UPScJJzs7CisgIGVzYWM7
OworKikKKyAgRUNIT19OPSctbic7OworZXNhYworCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBj
b25mJCQuZmlsZQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuCisgIHJtIC1mIGNvbmYkJC5k
aXIvY29uZiQkLmZpbGUKK2Vsc2UKKyAgcm0gLWYgY29uZiQkLmRpcgorICBta2RpciBjb25mJCQu
ZGlyIDI+L2Rldi9udWxsCitmaQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsg
dGhlbgorICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KKyAg
ICBhc19sbl9zPSdsbiAtcycKKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFzOgor
ICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBkaXIn
IGZhaWwuCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4gLXMnIGNy
ZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBoYXZl
IHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4KKyAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGly
IDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8CisgICAgICBhc19sbl9zPSdj
cCAtcCcKKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KKyAg
ICBhc19sbl9zPWxuCisgIGVsc2UKKyAgICBhc19sbl9zPSdjcCAtcCcKKyAgZmkKK2Vsc2UKKyAg
YXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9j
b25mJCQuZmlsZSBjb25mJCQuZmlsZQorcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorCisK
KyMgYXNfZm5fbWtkaXJfcAorIyAtLS0tLS0tLS0tLS0tCisjIENyZWF0ZSAiJGFzX2RpciIgYXMg
YSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4KK2FzX2ZuX21rZGly
X3AgKCkKK3sKKworICBjYXNlICRhc19kaXIgaW4gIygKKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7
OworICBlc2FjCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgewor
ICAgIGFzX2RpcnM9CisgICAgd2hpbGUgOjsgZG8KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAor
ICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxc
XFxcJycvZyJgOzsgIycoCisgICAgICAqKSBhc19xZGlyPSRhc19kaXI7OworICAgICAgZXNhYwor
ICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKKyAgICAgIGFzX2Rpcj1gJGFzX2Rp
cm5hbWUgLS0gIiRhc19kaXIiIHx8CiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwp
Ly8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwK
KwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScg
XHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWCIkYXNfZGlyIiB8CisgICAgc2VkICcvXlhc
KC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0K
KwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9e
WFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97
CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgICAgIHRlc3Qg
LWQgIiRhc19kaXIiICYmIGJyZWFrCisgICAgZG9uZQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8
fCBldmFsICJta2RpciAkYXNfZGlycyIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19m
bl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKworCit9ICMgYXNf
Zm5fbWtkaXJfcAoraWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19ta2Rpcl9w
PSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1w
CisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKK2lmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7
IHRoZW4KKyAgYXNfdGVzdF94PSd0ZXN0IC14JworZWxzZQorICBpZiBscyAtZEwgLyA+L2Rldi9u
dWxsIDI+JjE7IHRoZW4KKyAgICBhc19sc19MX29wdGlvbj1MCisgIGVsc2UKKyAgICBhc19sc19M
X29wdGlvbj0KKyAgZmkKKyAgYXNfdGVzdF94PScKKyAgICBldmFsIHNoIC1jICdcJycKKyAgICAg
IGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorCXRlc3QgLWQgIiQxLy4iOworICAgICAgZWxzZQorCWNh
c2UgJDEgaW4gIygKKwktKilzZXQgIi4vJDEiOzsKKwllc2FjOworCWNhc2UgYGxzIC1sZCckYXNf
bHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKAorCT8/P1tzeF0qKTo7OyopZmFs
c2U7O2VzYWM7ZmkKKyAgICAnXCcnIHNoCisgICcKK2ZpCithc19leGVjdXRhYmxlX3A9JGFzX3Rl
c3RfeAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQ
IG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xF
VFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisjIFNlZCBleHByZXNzaW9uIHRvIG1h
cCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KK2FzX3RyX3NoPSJldmFsIHNl
ZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisKKworZXhlYyA2PiYxCisjIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTWFpbiBib2R5IG9mICRD
T05GSUdfU1RBVFVTIHNjcmlwdC4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCitfQVNFT0YKK3Rlc3QgJGFzX3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICRD
T05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8
PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIFNhdmUgdGhlIGxvZyBtZXNzYWdlLCB0byBr
ZWVwICQwIGFuZCBzbyBvbiBtZWFuaW5nZnVsLCBhbmQgdG8KKyMgcmVwb3J0IGFjdHVhbCBpbnB1
dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgorIyB2YWx1ZXMg
YWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KK2FjX2xvZz0iCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVk
IGJ5IFhlbiBIeXBlcnZpc29yICRhc19tZSA0LjIsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdO
VSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisKKyAgQ09ORklH
X0ZJTEVTICAgID0gJENPTkZJR19GSUxFUworICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hF
QURFUlMKKyAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUworICBDT05GSUdfQ09NTUFO
RFMgPSAkQ09ORklHX0NPTU1BTkRTCisgICQgJDAgJEAKKworb24gYChob3N0bmFtZSB8fCB1bmFt
ZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCisiCisKK19BQ0VPRgorCitjYXNlICRhY19jb25m
aWdfZmlsZXMgaW4gKiIKKyIqKSBzZXQgeCAkYWNfY29uZmlnX2ZpbGVzOyBzaGlmdDsgYWNfY29u
ZmlnX2ZpbGVzPSQqOzsKK2VzYWMKKworY2FzZSAkYWNfY29uZmlnX2hlYWRlcnMgaW4gKiIKKyIq
KSBzZXQgeCAkYWNfY29uZmlnX2hlYWRlcnM7IHNoaWZ0OyBhY19jb25maWdfaGVhZGVycz0kKjs7
Citlc2FjCisKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFp
bD0xCisjIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuCitjb25maWdfZmls
ZXM9IiRhY19jb25maWdfZmlsZXMiCitjb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJz
IgorCitfQUNFT0YKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRl
X2ZhaWw9MQorYWNfY3NfdXNhZ2U9IlwKK1xgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5k
IG90aGVyIGNvbmZpZ3VyYXRpb24gYWN0aW9ucworZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRv
IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICBVbmxlc3MgdGhlIGZpbGVzCithbmQgYWN0aW9u
cyBhcmUgc3BlY2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQu
CisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4uLgorCisgIC1oLCAtLWhlbHAgICAgICAg
cHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJz
aW9uIG51bWJlciBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgdGhlbiBleGl0CisgICAgICAt
LWNvbmZpZyAgICAgcHJpbnQgY29uZmlndXJhdGlvbiwgdGhlbiBleGl0CisgIC1xLCAtLXF1aWV0
LCAtLXNpbGVudAorICAgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNz
YWdlcworICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKKyAg
ICAgIC0tcmVjaGVjayAgICB1cGRhdGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNh
bWUgY29uZGl0aW9ucworICAgICAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQorICAgICAgICAgICAg
ICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQorICAgICAgLS1o
ZWFkZXI9RklMRVs6VEVNUExBVEVdCisgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhl
IGNvbmZpZ3VyYXRpb24gaGVhZGVyIEZJTEUKKworQ29uZmlndXJhdGlvbiBmaWxlczoKKyRjb25m
aWdfZmlsZXMKKworQ29uZmlndXJhdGlvbiBoZWFkZXJzOgorJGNvbmZpZ19oZWFkZXJzCisKK1Jl
cG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbT4uIgorCitfQUNFT0YK
K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfY3Nf
Y29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9b
XFwiIlxgXCRdL1xcXFwmL2cnYCIKK2FjX2NzX3ZlcnNpb249IlxcCitYZW4gSHlwZXJ2aXNvciBj
b25maWcuc3RhdHVzIDQuMgorY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRv
Y29uZiAyLjY4LAorICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKKworQ29weXJp
Z2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorVGhpcyBjb25maWcu
c3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBt
b2RpZnkgaXQuIgorCithY19wd2Q9JyRhY19wd2QnCitzcmNkaXI9JyRzcmNkaXInCitJTlNUQUxM
PSckSU5TVEFMTCcKK3Rlc3QgLW4gIlwkQVdLIiB8fCBBV0s9YXdrCitfQUNFT0YKKworY2F0ID4+
JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorIyBUaGUgZGVmYXVs
dCBsaXN0cyBhcHBseSBpZiB0aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGFueSBmaWxlLgorYWNf
bmVlZF9kZWZhdWx0cz06Cit3aGlsZSB0ZXN0ICQjICE9IDAKK2RvCisgIGNhc2UgJDEgaW4KKyAg
LS0qPT8qKQorICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCisgICAg
YWNfb3B0YXJnPWBleHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYAorICAgIGFjX3NoaWZ0PToK
KyAgICA7OworICAtLSo9KQorICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwp
PSdgCisgICAgYWNfb3B0YXJnPQorICAgIGFjX3NoaWZ0PToKKyAgICA7OworICAqKQorICAgIGFj
X29wdGlvbj0kMQorICAgIGFjX29wdGFyZz0kMgorICAgIGFjX3NoaWZ0PXNoaWZ0CisgICAgOzsK
KyAgZXNhYworCisgIGNhc2UgJGFjX29wdGlvbiBpbgorICAjIEhhbmRsaW5nIG9mIHRoZSBvcHRp
b25zLgorICAtcmVjaGVjayB8IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVj
aCB8IC0tcmVjIHwgLS1yZSB8IC0tcikKKyAgICBhY19jc19yZWNoZWNrPTogOzsKKyAgLS12ZXJz
aW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAtLXZlIHwgLS12IHwg
LVYgKQorICAgICRhc19lY2hvICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgOzsKKyAgLS1jb25maWcg
fCAtLWNvbmZpIHwgLS1jb25mIHwgLS1jb24gfCAtLWNvIHwgLS1jICkKKyAgICAkYXNfZWNobyAi
JGFjX2NzX2NvbmZpZyI7IGV4aXQgOzsKKyAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwgLS1k
ZSB8IC0tZCB8IC1kICkKKyAgICBkZWJ1Zz06IDs7CisgIC0tZmlsZSB8IC0tZmlsIHwgLS1maSB8
IC0tZiApCisgICAgJGFjX3NoaWZ0CisgICAgY2FzZSAkYWNfb3B0YXJnIGluCisgICAgKlwnKikg
YWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9n
ImAgOzsKKyAgICAnJykgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgZmlsZSBhcmd1bWVudCIgOzsK
KyAgICBlc2FjCisgICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNfb3B0YXJnJyIK
KyAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKKyAgLS1oZWFkZXIgfCAtLWhlYWRlIHwgLS1o
ZWFkIHwgLS1oZWEgKQorICAgICRhY19zaGlmdAorICAgIGNhc2UgJGFjX29wdGFyZyBpbgorICAg
ICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxc
XFxcJycvZyJgIDs7CisgICAgZXNhYworICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfSEVBREVSUyAi
ICckYWNfb3B0YXJnJyIKKyAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKKyAgLS1oZSB8IC0t
aCkKKyAgICAjIENvbmZsaWN0IGJldHdlZW4gLS1oZWxwIGFuZCAtLWhlYWRlcgorICAgIGFzX2Zu
X2Vycm9yICQ/ICJhbWJpZ3VvdXMgb3B0aW9uOiBcYCQxJworVHJ5IFxgJDAgLS1oZWxwJyBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4iOzsKKyAgLS1oZWxwIHwgLS1oZWwgfCAtaCApCisgICAgJGFzX2Vj
aG8gIiRhY19jc191c2FnZSI7IGV4aXQgOzsKKyAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1x
dWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKKyAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNp
bGVuIHwgLS1zaWxlIHwgLS1zaWwgfCAtLXNpIHwgLS1zKQorICAgIGFjX2NzX3NpbGVudD06IDs7
CisKKyAgIyBUaGlzIGlzIGFuIGVycm9yLgorICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2du
aXplZCBvcHRpb246IFxgJDEnCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9u
LiIgOzsKKworICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSIKKyAgICAg
YWNfbmVlZF9kZWZhdWx0cz1mYWxzZSA7OworCisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworYWNf
Y29uZmlndXJlX2V4dHJhX2FyZ3M9CisKK2lmICRhY19jc19zaWxlbnQ7IHRoZW4KKyAgZXhlYyA2
Pi9kZXYvbnVsbAorICBhY19jb25maWd1cmVfZXh0cmFfYXJncz0iJGFjX2NvbmZpZ3VyZV9leHRy
YV9hcmdzIC0tc2lsZW50IgorZmkKKworX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9B
Q0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2lmIFwkYWNfY3NfcmVjaGVjazsgdGhlbgorICBzZXQg
WCAnJFNIRUxMJyAnJDAnICRhY19jb25maWd1cmVfYXJncyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9h
cmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uCisgIHNoaWZ0CisgIFwkYXNfZWNobyAicnVu
bmluZyBDT05GSUdfU0hFTEw9JFNIRUxMIFwkKiIgPiY2CisgIENPTkZJR19TSEVMTD0nJFNIRUxM
JworICBleHBvcnQgQ09ORklHX1NIRUxMCisgIGV4ZWMgIlwkQCIKK2ZpCisKK19BQ0VPRgorY2F0
ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorZXhlYyA1Pj5j
b25maWcubG9nCit7CisgIGVjaG8KKyAgc2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4k
LyAjIy87cDt4O3A7eCcgPDxfQVNCT1gKKyMjIFJ1bm5pbmcgJGFzX21lLiAjIworX0FTQk9YCisg
ICRhc19lY2hvICIkYWNfbG9nIgorfSA+JjUKKworX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRV
UyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NU
QVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisKKyMgSGFuZGxpbmcgb2YgYXJndW1l
bnRzLgorZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRzCitkbworICBj
YXNlICRhY19jb25maWdfdGFyZ2V0IGluCisgICAgIi4uL2NvbmZpZy9Ub29scy5tayIpIENPTkZJ
R19GSUxFUz0iJENPTkZJR19GSUxFUyAuLi9jb25maWcvVG9vbHMubWsiIDs7CisgICAgImNvbmZp
Zy5oIikgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyBjb25maWcuaCIgOzsKKworICAq
KSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCci
ICIkTElORU5PIiA1OzsKKyAgZXNhYworZG9uZQorCisKKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1
c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKKyMg
dGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBh
cmUgbm90LgorIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVu
dCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQorIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4K
K2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCisgIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0i
ID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzCisgIHRlc3QgIiR7Q09ORklHX0hF
QURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hFQURFUlM9JGNvbmZpZ19oZWFkZXJzCitmaQor
CisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQg
aW4gdGhlIGJ1aWxkIHRyZWUKKyMgc2ltcGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIGFn
YWluc3QgaGF2aW5nIGl0IGhlcmUsIGFuZCBpbiBhZGRpdGlvbiwKKyMgY3JlYXRpbmcgYW5kIG1v
dmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcy4KKyMgSG9v
ayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KKyMgTm90ZSB0aGF0IHRoZXJlIGlz
IGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5l
ZDoKKyMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBiZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNz
aWduZWQgdG8gYCR0bXAnLgorJGRlYnVnIHx8Cit7CisgIHRtcD0gYWNfdG1wPQorICB0cmFwICdl
eGl0X3N0YXR1cz0kPworICA6ICIke2FjX3RtcDo9JHRtcH0iCisgIHsgdGVzdCAhIC1kICIkYWNf
dG1wIiB8fCBybSAtZnIgIiRhY190bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCisnIDAKKyAg
dHJhcCAnYXNfZm5fZXhpdCAxJyAxIDIgMTMgMTUKK30KKyMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1w
IGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLgorCit7CisgIHRtcD1gKHVtYXNrIDA3NyAmJiBta3Rl
bXAgLWQgIi4vY29uZlhYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgorICB0ZXN0IC1kICIkdG1wIgor
fSAgfHwKK3sKKyAgdG1wPS4vY29uZiQkLSRSQU5ET00KKyAgKHVtYXNrIDA3NyAmJiBta2RpciAi
JHRtcCIpCit9IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRp
cmVjdG9yeSBpbiAuIiAiJExJTkVOTyIgNQorYWNfdG1wPSR0bXAKKworIyBTZXQgdXAgdGhlIHNj
cmlwdHMgZm9yIENPTkZJR19GSUxFUyBzZWN0aW9uLgorIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRo
ZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0
YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMgY29uZmlnLmgnLgoraWYgdGVzdCAtbiAiJENPTkZJ
R19GSUxFUyI7IHRoZW4KKworCithY19jcj1gZWNobyBYIHwgdHIgWCAnXDAxNSdgCisjIE9uIGN5
Z3dpbiwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBgYCBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgaWdu
Y3IuCisjIEJ1dCB3ZSBrbm93IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJl
IGVtcHR5IGF0IHRoaXMKKyMgcG9pbnQsIHNvIHdlIGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFs
bGJhY2suCitpZiB0ZXN0ICJ4JGFjX2NyIiA9IHg7IHRoZW4KKyAgZXZhbCBhY19jcj1cJFwnXFxy
XCcKK2ZpCithY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwvZGV2
L251bGwgMj4vZGV2L251bGxgCitpZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1i
IjsgdGhlbgorICBhY19jc19hd2tfY3I9J1xccicKK2Vsc2UKKyAgYWNfY3NfYXdrX2NyPSRhY19j
cgorZmkKKworZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKK19BQ0VPRgor
CisKK3sKKyAgZWNobyAiY2F0ID5jb25mJCRzdWJzLmF3ayA8PF9BQ0VPRiIgJiYKKyAgZWNobyAi
JGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJgorICBlY2hvICJf
QUNFT0YiCit9ID5jb25mJCRzdWJzLnNoIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qg
bWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKK2FjX2RlbGltX251bT1gZWNobyAiJGFj
X3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnXidgCithY19kZWxpbT0nJSFfISMgJworZm9yIGFjX2xh
c3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvCisgIC4gLi9jb25m
JCRzdWJzLnNoIHx8CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdf
U1RBVFVTIiAiJExJTkVOTyIgNQorCisgIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxp
bVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgCisgIGlmIHRlc3QgJGFjX2RlbGlt
X24gPSAkYWNfZGVsaW1fbnVtOyB0aGVuCisgICAgYnJlYWsKKyAgZWxpZiAkYWNfbGFzdF90cnk7
IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMi
ICIkTElORU5PIiA1CisgIGVsc2UKKyAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBf
JGFjX2RlbGltISEgIgorICBmaQorZG9uZQorcm0gLWYgY29uZiQkc3Vicy5zaAorCitjYXQgPj4k
Q09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2NhdCA+PiJcJGFjX3Rt
cC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKK19BQ0VPRgorc2VkIC1uICcKK2gKK3MvXi9TWyIv
OyBzLyEuKi8iXT0vCitwCitnCitzL15bXiFdKiEvLworOnJlcGwKK3QgcmVwbAorcy8nIiRhY19k
ZWxpbSInJC8vCit0IGRlbGltCis6bmwKK2gKK3MvXCguXHsxNDhcfVwpLi4qL1wxLwordCBtb3Jl
MQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxuIlxcLworcAorbgorYiByZXBsCis6bW9y
ZTEKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KK3AKK2cKK3MvLlx7MTQ4XH0vLwor
dCBubAorOmRlbGltCitoCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8KK3QgbW9yZTIKK3MvWyJcXF0v
XFwmL2c7IHMvXi8iLzsgcy8kLyIvCitwCitiCis6bW9yZTIKK3MvWyJcXF0vXFwmL2c7IHMvXi8i
Lzsgcy8kLyJcXC8KK3AKK2cKK3MvLlx7MTQ4XH0vLwordCBkZWxpbQorJyA8Y29uZiQkc3Vicy5h
d2sgfCBzZWQgJworL15bXiIiXS97CisgIE4KKyAgcy9cbi8vCit9CisnID4+JENPTkZJR19TVEFU
VVMgfHwgYWNfd3JpdGVfZmFpbD0xCitybSAtZiBjb25mJCRzdWJzLmF3aworY2F0ID4+JENPTkZJ
R19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitfQUNBV0sKK2NhdCA+PiJcJGFj
X3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCisgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tl
eV0gPSAxCisgIEZTID0gIgciCisKK30KK3sKKyAgbGluZSA9ICQgMAorICBuZmllbGRzID0gc3Bs
aXQobGluZSwgZmllbGQsICJAIikKKyAgc3Vic3RlZCA9IDAKKyAgbGVuID0gbGVuZ3RoKGZpZWxk
WzFdKQorICBmb3IgKGkgPSAyOyBpIDwgbmZpZWxkczsgaSsrKSB7CisgICAga2V5ID0gZmllbGRb
aV0KKyAgICBrZXlsZW4gPSBsZW5ndGgoa2V5KQorICAgIGlmIChTX2lzX3NldFtrZXldKSB7Cisg
ICAgICB2YWx1ZSA9IFNba2V5XQorICAgICAgbGluZSA9IHN1YnN0cihsaW5lLCAxLCBsZW4pICIi
IHZhbHVlICIiIHN1YnN0cihsaW5lLCBsZW4gKyBrZXlsZW4gKyAzKQorICAgICAgbGVuICs9IGxl
bmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkKKyAgICAgIHN1YnN0ZWQgPSAxCisgICAg
fSBlbHNlCisgICAgICBsZW4gKz0gMSArIGtleWxlbgorICB9CisKKyAgcHJpbnQgbGluZQorfQor
CitfQUNBV0sKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy
aXRlX2ZhaWw9MQoraWYgc2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAy
PiYxOyB0aGVuCisgIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2NyL2ci
CitlbHNlCisgIGNhdAorZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAvc3Vicy5h
d2siIFwKKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMg
bWFjaGluZXJ5IiAiJExJTkVOTyIgNQorX0FDRU9GCisKKyMgVlBBVEggbWF5IGNhdXNlIHRyb3Vi
bGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29sZSAkKHNyY2RpciksCisjICR7c3Jj
ZGlyfSBhbmQgQHNyY2RpckAgZW50cmllcyBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0
cmlwIGxlYWRpbmcgYW5kCisjIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdo
b2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQorIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4g
ZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgoraWYgdGVzdCAieCRzcmNkaXIi
ID0geC47IHRoZW4KKyAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKK2gKK3Mv
Ly8KK3MvXi86Lworcy9bCSBdKiQvOi8KK3MvOlwkKHNyY2Rpcik6LzovZworcy86XCR7c3JjZGly
fTovOi9nCitzLzpAc3JjZGlyQDovOi9nCitzL146Ki8vCitzLzoqJC8vCit4CitzL1woPVsJIF0q
XCkuKi9cMS8KK0cKK3MvXG4vLworcy9eW149XSo9WwkgXSokLy8KK30nCitmaQorCitjYXQgPj4k
Q09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitmaSAjIHRlc3QgLW4g
IiRDT05GSUdfRklMRVMiCisKKyMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfSEVBREVS
UyBzZWN0aW9uLgorIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENP
TkZJR19IRUFERVJTLgorIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29uZmln
LnN0YXR1cyBNYWtlZmlsZScuCitpZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCitj
YXQgPiIkYWNfdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sgfHwKK0JFR0lOIHsKK19BQ0VPRgor
CisjIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gYW4gYXdrIHNjcmlwdCBgZGVmaW5lcy5hd2sn
LCBlbWJlZGRlZCBhcworIyBoZXJlLWRvY3VtZW50IGluIGNvbmZpZy5zdGF0dXMsIHRoYXQgc3Vi
c3RpdHV0ZXMgdGhlIHByb3BlciB2YWx1ZXMgaW50bworIyBjb25maWcuaC5pbiB0byBwcm9kdWNl
IGNvbmZpZy5oLgorCisjIENyZWF0ZSBhIGRlbGltaXRlciBzdHJpbmcgdGhhdCBkb2VzIG5vdCBl
eGlzdCBpbiBjb25mZGVmcy5oLCB0byBlYXNlCisjIGhhbmRsaW5nIG9mIGxvbmcgbGluZXMuCith
Y19kZWxpbT0nJSFfISMgJworZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIDo7IGRvCisg
IGFjX3R0PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAi
JGFjX3R0IjsgdGhlbgorICAgIGJyZWFrCisgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCisgICAg
YXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfSEVBREVSUyIgIiRMSU5FTk8i
IDUKKyAgZWxzZQorICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0h
ISAiCisgIGZpCitkb25lCisKKyMgRm9yIHRoZSBhd2sgc2NyaXB0LCBEIGlzIGFuIGFycmF5IG9m
IG1hY3JvIHZhbHVlcyBrZXllZCBieSBuYW1lLAorIyBsaWtld2lzZSBQIGNvbnRhaW5zIG1hY3Jv
IHBhcmFtZXRlcnMgaWYgYW55LiAgUHJlc2VydmUgYmFja3NsYXNoCisjIG5ld2xpbmUgc2VxdWVu
Y2VzLgorCithY193b3JkX3JlPVtfJGFzX2NyX0xldHRlcnNdW18kYXNfY3JfYWxudW1dKgorc2Vk
IC1uICcKK3MvLlx7MTQ4XH0vJiciJGFjX2RlbGltIicvZwordCByc2V0Cis6cnNldAorcy9eWwkg
XSojWwkgXSpkZWZpbmVbCSBdWwkgXSovIC8KK3QgZGVmCitkCis6ZGVmCitzL1xcJC8vCit0IGJz
bmwKK3MvWyJcXF0vXFwmL2cKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0qKVwpWwkg
XSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorRFsiXDEiXT0iIFwzIi9wCitzL14gXCgnIiRhY193b3Jk
X3JlIidcKVsJIF0qXCguKlwpL0RbIlwxIl09IiBcMiIvcAorZAorOmJzbmwKK3MvWyJcXF0vXFwm
L2cKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEi
XT0iXDIiXAorRFsiXDEiXT0iIFwzXFxcXFxcbiJcXC9wCit0IGNvbnQKK3MvXiBcKCciJGFjX3dv
cmRfcmUiJ1wpWwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyXFxcXFxcbiJcXC9wCit0IGNvbnQKK2QK
Kzpjb250CituCitzLy5cezE0OFx9LyYnIiRhY19kZWxpbSInL2cKK3QgY2xlYXIKKzpjbGVhcgor
cy9cXCQvLwordCBic25sYworcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIi9wCitkCis6YnNu
bGMKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcXFxcXG4iXFwvcAorYiBjb250CisnIDxj
b25mZGVmcy5oIHwgc2VkICcKK3MvJyIkYWNfZGVsaW0iJy8iXFxcCisiL2cnID4+JENPTkZJR19T
VEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9G
IHx8IGFjX3dyaXRlX2ZhaWw9MQorICBmb3IgKGtleSBpbiBEKSBEX2lzX3NldFtrZXldID0gMQor
ICBGUyA9ICIHIgorfQorL15bXHQgXSojW1x0IF0qKGRlZmluZXx1bmRlZilbXHQgXSskYWNfd29y
ZF9yZShbXHQgKF18XCQpLyB7CisgIGxpbmUgPSBcJCAwCisgIHNwbGl0KGxpbmUsIGFyZywgIiAi
KQorICBpZiAoYXJnWzFdID09ICIjIikgeworICAgIGRlZnVuZGVmID0gYXJnWzJdCisgICAgbWFj
MSA9IGFyZ1szXQorICB9IGVsc2UgeworICAgIGRlZnVuZGVmID0gc3Vic3RyKGFyZ1sxXSwgMikK
KyAgICBtYWMxID0gYXJnWzJdCisgIH0KKyAgc3BsaXQobWFjMSwgbWFjMiwgIigiKSAjKQorICBt
YWNybyA9IG1hYzJbMV0KKyAgcHJlZml4ID0gc3Vic3RyKGxpbmUsIDEsIGluZGV4KGxpbmUsIGRl
ZnVuZGVmKSAtIDEpCisgIGlmIChEX2lzX3NldFttYWNyb10pIHsKKyAgICAjIFByZXNlcnZlIHRo
ZSB3aGl0ZSBzcGFjZSBzdXJyb3VuZGluZyB0aGUgIiMiLgorICAgIHByaW50IHByZWZpeCAiZGVm
aW5lIiwgbWFjcm8gUFttYWNyb10gRFttYWNyb10KKyAgICBuZXh0CisgIH0gZWxzZSB7CisgICAg
IyBSZXBsYWNlICN1bmRlZiB3aXRoIGNvbW1lbnRzLiAgVGhpcyBpcyBuZWNlc3NhcnksIGZvciBl
eGFtcGxlLAorICAgICMgaW4gdGhlIGNhc2Ugb2YgX1BPU0lYX1NPVVJDRSwgd2hpY2ggaXMgcHJl
ZGVmaW5lZCBhbmQgcmVxdWlyZWQKKyAgICAjIG9uIHNvbWUgc3lzdGVtcyB3aGVyZSBjb25maWd1
cmUgd2lsbCBub3QgZGVjaWRlIHRvIGRlZmluZSBpdC4KKyAgICBpZiAoZGVmdW5kZWYgPT0gInVu
ZGVmIikgeworICAgICAgcHJpbnQgIi8qIiwgcHJlZml4IGRlZnVuZGVmLCBtYWNybywgIiovIgor
ICAgICAgbmV4dAorICAgIH0KKyAgfQorfQoreyBwcmludCB9CitfQUNBV0sKK19BQ0VPRgorY2F0
ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorICBhc19mbl9l
cnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5F
Tk8iIDUKK2ZpICMgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIgorCisKK2V2YWwgc2V0IFggIiAg
OkYgJENPTkZJR19GSUxFUyAgOkggJENPTkZJR19IRUFERVJTICAgICIKK3NoaWZ0Citmb3IgYWNf
dGFnCitkbworICBjYXNlICRhY190YWcgaW4KKyAgOltGSExDXSkgYWNfbW9kZT0kYWNfdGFnOyBj
b250aW51ZTs7CisgIGVzYWMKKyAgY2FzZSAkYWNfbW9kZSRhY190YWcgaW4KKyAgOltGSExdKjoq
KTs7CisgIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB0YWcgXGAkYWNfdGFn
JyIgIiRMSU5FTk8iIDU7OworICA6W0ZIXS0pIGFjX3RhZz0tOi07OworICA6W0ZIXSopIGFjX3Rh
Zz0kYWNfdGFnOiRhY190YWcuaW47OworICBlc2FjCisgIGFjX3NhdmVfSUZTPSRJRlMKKyAgSUZT
PToKKyAgc2V0IHggJGFjX3RhZworICBJRlM9JGFjX3NhdmVfSUZTCisgIHNoaWZ0CisgIGFjX2Zp
bGU9JDEKKyAgc2hpZnQKKworICBjYXNlICRhY19tb2RlIGluCisgIDpMKSBhY19zb3VyY2U9JDE7
OworICA6W0ZIXSkKKyAgICBhY19maWxlX2lucHV0cz0KKyAgICBmb3IgYWNfZgorICAgIGRvCisg
ICAgICBjYXNlICRhY19mIGluCisgICAgICAtKSBhY19mPSIkYWNfdG1wL3N0ZGluIjs7CisgICAg
ICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGlu
IHRoZSBzb3VyY2UgdHJlZQorCSAjIChpZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhl
IGFic29sdXRlIHBhdGggY2Fubm90IGJlIERPUy1zdHlsZSwKKwkgIyBiZWNhdXNlICRhY19mIGNh
bm5vdCBjb250YWluIGA6Jy4KKwkgdGVzdCAtZiAiJGFjX2YiIHx8CisJICAgY2FzZSAkYWNfZiBp
bgorCSAgIFtcXC8kXSopIGZhbHNlOzsKKwkgICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAm
JiBhY19mPSIkc3JjZGlyLyRhY19mIjs7CisJICAgZXNhYyB8fAorCSAgIGFzX2ZuX2Vycm9yIDEg
ImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNTs7CisgICAgICBl
c2FjCisgICAgICBjYXNlICRhY19mIGluICpcJyopIGFjX2Y9YCRhc19lY2hvICIkYWNfZiIgfCBz
ZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OyBlc2FjCisgICAgICBhc19mbl9hcHBlbmQgYWNfZmls
ZV9pbnB1dHMgIiAnJGFjX2YnIgorICAgIGRvbmUKKworICAgICMgTGV0J3Mgc3RpbGwgcHJldGVu
ZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0CisgICAg
IyB1c2UgJGFzX21lKSwgcGVvcGxlIHdvdWxkIGJlIHN1cnByaXNlZCB0byByZWFkOgorICAgICMg
ICAgLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmlnLnN0YXR1cy4gICovCisgICAgY29u
ZmlndXJlX2lucHV0PSdHZW5lcmF0ZWQgZnJvbSAnYAorCSAgJGFzX2VjaG8gIiQqIiB8IHNlZCAn
c3xeW146XSovfHw7c3w6W146XSovfCwgfGcnCisJYCcgYnkgY29uZmlndXJlLicKKyAgICBpZiB0
ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCisgICAgICBjb25maWd1cmVfaW5wdXQ9IiRhY19m
aWxlLiAgJGNvbmZpZ3VyZV9pbnB1dCIKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTog
Y3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9CisgICAgZmkKKyAgICAjIE5ldXRyYWxpemUgc3BlY2lh
bCBjaGFyYWN0ZXJzIGludGVycHJldGVkIGJ5IHNlZCBpbiByZXBsYWNlbWVudCBzdHJpbmdzLgor
ICAgIGNhc2UgJGNvbmZpZ3VyZV9pbnB1dCBpbiAjKAorICAgICpcJiogfCAqXHwqIHwgKlxcKiAp
CisgICAgICAgYWNfc2VkX2NvbmZfaW5wdXQ9YCRhc19lY2hvICIkY29uZmlndXJlX2lucHV0IiB8
CisgICAgICAgc2VkICdzL1tcXFxcJnxdL1xcXFwmL2cnYDs7ICMoCisgICAgKikgYWNfc2VkX2Nv
bmZfaW5wdXQ9JGNvbmZpZ3VyZV9pbnB1dDs7CisgICAgZXNhYworCisgICAgY2FzZSAkYWNfdGFn
IGluCisgICAgKjotOiogfCAqOi0pIGNhdCA+IiRhY190bXAvc3RkaW4iIFwKKyAgICAgIHx8IGFz
X2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7Owor
ICAgIGVzYWMKKyAgICA7OworICBlc2FjCisKKyAgYWNfZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFj
X2ZpbGUiIHx8CiskYXNfZXhwciBYIiRhY19maWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9d
Ki8qJCcgXHwgXAorCSBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSBYIiRhY19m
aWxlIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRhY19maWxlIiA6ICdYXCgvXCknIFx8IC4gMj4v
ZGV2L251bGwgfHwKKyRhc19lY2hvIFgiJGFjX2ZpbGUiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9d
XClcL1wvKlteL11bXi9dKlwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15Y
XChcL1wvXClbXi9dLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wv
XCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cKS4qL3sKKwkgICAg
cy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorICBhc19kaXI9IiRhY19kaXIi
OyBhc19mbl9ta2Rpcl9wCisgIGFjX2J1aWxkZGlyPS4KKworY2FzZSAiJGFjX2RpciIgaW4KKy4p
IGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4
PSA7OworKikKKyAgYWNfZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xe
XC5bXFwvXXx8J2AKKyAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3Vm
Zml4LgorICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwg
c2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2AKKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1
YiBpbgorICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7
CisgICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7OworICBl
c2FjIDs7Citlc2FjCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QKK2FjX2Fic19idWlsZGRp
cj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgKKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6Cith
Y190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgKKworY2FzZSAkc3JjZGlyIGluCisg
IC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4KKyAgICBhY19zcmNkaXI9LgorICAgIGFj
X3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0k
YWNfcHdkIDs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KKyAgICBh
Y19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4OworICAgIGFjX3RvcF9zcmNkaXI9JHNyY2Rp
cgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsKKyAgKikgIyBSZWxhdGl2ZSBuYW1l
LgorICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZp
eAorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCisgICAgYWNf
YWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7Citlc2FjCithY19hYnNfc3JjZGlyPSRh
Y19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4CisKKworICBjYXNlICRhY19tb2RlIGluCisg
IDpGKQorICAjCisgICMgQ09ORklHX0ZJTEUKKyAgIworCisgIGNhc2UgJElOU1RBTEwgaW4KKyAg
W1xcLyRdKiB8ID86W1xcL10qICkgYWNfSU5TVEFMTD0kSU5TVEFMTCA7OworICAqKSBhY19JTlNU
QUxMPSRhY190b3BfYnVpbGRfcHJlZml4JElOU1RBTEwgOzsKKyAgZXNhYworX0FDRU9GCisKK2Nh
dCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyMgSWYgdGhl
IHRlbXBsYXRlIGRvZXMgbm90IGtub3cgYWJvdXQgZGF0YXJvb3RkaXIsIGV4cGFuZCBpdC4KKyMg
RklYTUU6IFRoaXMgaGFjayBzaG91bGQgYmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBhZnRlciAyLjYw
LgorYWNfZGF0YXJvb3RkaXJfaGFjaz07IGFjX2RhdGFyb290ZGlyX3NlZW49CithY19zZWRfZGF0
YXJvb3Q9JworL2RhdGFyb290ZGlyLyB7CisgIHAKKyAgcQorfQorL0BkYXRhZGlyQC9wCisvQGRv
Y2RpckAvcAorL0BpbmZvZGlyQC9wCisvQGxvY2FsZWRpckAvcAorL0BtYW5kaXJAL3AnCitjYXNl
IGBldmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwiICRhY19maWxlX2lucHV0cyJgIGlu
CisqZGF0YXJvb3RkaXIqKSBhY19kYXRhcm9vdGRpcl9zZWVuPXllczs7CisqQGRhdGFkaXJAKnwq
QGRvY2RpckAqfCpAaW5mb2RpckAqfCpAbG9jYWxlZGlyQCp8KkBtYW5kaXJAKikKKyAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1
dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmciID4mNQorJGFzX2Vj
aG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUg
LS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjI7fQorX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRV
UyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyAgYWNfZGF0YXJvb3RkaXJfaGFjaz0nCisg
IHMmQGRhdGFkaXJAJiRkYXRhZGlyJmcKKyAgcyZAZG9jZGlyQCYkZG9jZGlyJmcKKyAgcyZAaW5m
b2RpckAmJGluZm9kaXImZworICBzJkBsb2NhbGVkaXJAJiRsb2NhbGVkaXImZworICBzJkBtYW5k
aXJAJiRtYW5kaXImZworICBzJlxcXCR7ZGF0YXJvb3RkaXJ9JiRkYXRhcm9vdGRpciZnJyA7Owor
ZXNhYworX0FDRU9GCisKKyMgTmV1dHJhbGl6ZSBWUEFUSCB3aGVuIGAkc3JjZGlyJyA9IGAuJy4K
KyMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMgbWlnaHQgc2V0IGV4dHJhc3ViLgorIyBGSVhN
RTogZG8gd2UgcmVhbGx5IHdhbnQgdG8gbWFpbnRhaW4gdGhpcyBmZWF0dXJlPworY2F0ID4+JENP
TkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCithY19zZWRfZXh0cmE9IiRh
Y192cHN1YgorJGV4dHJhc3ViCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VP
RiB8fCBhY193cml0ZV9mYWlsPTEKKzp0CisvQFthLXpBLVpfXVthLXpBLVpfMC05XSpALyFiCitz
fEBjb25maWd1cmVfaW5wdXRAfCRhY19zZWRfY29uZl9pbnB1dHw7dCB0CitzJkB0b3BfYnVpbGRk
aXJAJiRhY190b3BfYnVpbGRkaXJfc3ViJjt0IHQKK3MmQHRvcF9idWlsZF9wcmVmaXhAJiRhY190
b3BfYnVpbGRfcHJlZml4Jjt0IHQKK3MmQHNyY2RpckAmJGFjX3NyY2RpciY7dCB0CitzJkBhYnNf
c3JjZGlyQCYkYWNfYWJzX3NyY2RpciY7dCB0CitzJkB0b3Bfc3JjZGlyQCYkYWNfdG9wX3NyY2Rp
ciY7dCB0CitzJkBhYnNfdG9wX3NyY2RpckAmJGFjX2Fic190b3Bfc3JjZGlyJjt0IHQKK3MmQGJ1
aWxkZGlyQCYkYWNfYnVpbGRkaXImO3QgdAorcyZAYWJzX2J1aWxkZGlyQCYkYWNfYWJzX2J1aWxk
ZGlyJjt0IHQKK3MmQGFic190b3BfYnVpbGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGlyJjt0IHQK
K3MmQElOU1RBTExAJiRhY19JTlNUQUxMJjt0IHQKKyRhY19kYXRhcm9vdGRpcl9oYWNrCisiCitl
dmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIk
YWNfdG1wL3N1YnMuYXdrIiBcCisgID4kYWNfdG1wL291dCB8fCBhc19mbl9lcnJvciAkPyAiY291
bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKwordGVzdCAteiAiJGFjX2RhdGFy
b290ZGlyX2hhY2skYWNfZGF0YXJvb3RkaXJfc2VlbiIgJiYKKyAgeyBhY19vdXQ9YHNlZCAtbiAn
L1wke2RhdGFyb290ZGlyfS9wJyAiJGFjX3RtcC9vdXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0g
JiYKKyAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgXAor
ICAgICAgIiRhY190bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmCisgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGUgY29udGFp
bnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCit3aGljaCBzZWVt
cyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mNQor
JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2Ug
dG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmlu
ZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mMjt9CisKKyAgcm0gLWYgIiRh
Y190bXAvc3RkaW4iCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgLSkgY2F0ICIkYWNfdG1wL291dCIg
JiYgcm0gLWYgIiRhY190bXAvb3V0Ijs7CisgICopIHJtIC1mICIkYWNfZmlsZSIgJiYgbXYgIiRh
Y190bXAvb3V0IiAiJGFjX2ZpbGUiOzsKKyAgZXNhYyBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJj
b3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorIDs7CisgIDpIKQorICAjCisg
ICMgQ09ORklHX0hFQURFUgorICAjCisgIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4K
KyAgICB7CisgICAgICAkYXNfZWNobyAiLyogJGNvbmZpZ3VyZV9pbnB1dCAgKi8iIFwKKyAgICAg
ICYmIGV2YWwgJyRBV0sgLWYgIiRhY190bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRz
IgorICAgIH0gPiIkYWNfdG1wL2NvbmZpZy5oIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAi
Y291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICBpZiBkaWZmICIkYWNf
ZmlsZSIgIiRhY190bXAvY29uZmlnLmgiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfZmlsZSBpcyB1bmNoYW5n
ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjY7fQor
ICAgIGVsc2UKKyAgICAgIHJtIC1mICIkYWNfZmlsZSIKKyAgICAgIG12ICIkYWNfdG1wL2NvbmZp
Zy5oIiAiJGFjX2ZpbGUiIFwKKwl8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAk
YWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICBmaQorICBlbHNlCisgICAgJGFzX2VjaG8gIi8qICRj
b25maWd1cmVfaW5wdXQgICovIiBcCisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2Rl
ZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8g
ImNvdWxkIG5vdCBjcmVhdGUgLSIgIiRMSU5FTk8iIDUKKyAgZmkKKyA7OworCisKKyAgZXNhYwor
Citkb25lICMgZm9yIGFjX3RhZworCisKK2FzX2ZuX2V4aXQgMAorX0FDRU9GCithY19jbGVhbl9m
aWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQorCit0ZXN0ICRhY193cml0ZV9mYWlsID0gMCB8fAor
ICBhc19mbl9lcnJvciAkPyAid3JpdGUgZmFpbHVyZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIg
IiRMSU5FTk8iIDUKKworCisjIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFu
ZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuCisjIGNvbmZpZy5zdGF0dXMgZG9lcyBpdHMgb3du
IHJlZGlyZWN0aW9uLCBhcHBlbmRpbmcgdG8gY29uZmlnLmxvZy4KKyMgVW5mb3J0dW5hdGVseSwg
b24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdCBvcGVuCisjIGJ5
IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0YXR1cyB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0
OyBpdHMKKyMgb3V0cHV0IGlzIHNpbXBseSBkaXNjYXJkZWQuICBTbyB3ZSBleGVjIHRoZSBGRCB0
byAvZGV2L251bGwsCisjIGVmZmVjdGl2ZWx5IGNsb3NpbmcgY29uZmlnLmxvZywgc28gaXQgY2Fu
IGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kCisjIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0
dXMuICBXaGVuIGNvbWluZyBiYWNrIHRvIGNvbmZpZ3VyZSwgd2UKKyMgbmVlZCB0byBtYWtlIHRo
ZSBGRCBhdmFpbGFibGUgYWdhaW4uCitpZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4K
KyAgYWNfY3Nfc3VjY2Vzcz06CisgIGFjX2NvbmZpZ19zdGF0dXNfYXJncz0KKyAgdGVzdCAiJHNp
bGVudCIgPSB5ZXMgJiYKKyAgICBhY19jb25maWdfc3RhdHVzX2FyZ3M9IiRhY19jb25maWdfc3Rh
dHVzX2FyZ3MgLS1xdWlldCIKKyAgZXhlYyA1Pi9kZXYvbnVsbAorICAkU0hFTEwgJENPTkZJR19T
VEFUVVMgJGFjX2NvbmZpZ19zdGF0dXNfYXJncyB8fCBhY19jc19zdWNjZXNzPWZhbHNlCisgIGV4
ZWMgNT4+Y29uZmlnLmxvZworICAjIFVzZSB8fCwgbm90ICYmLCB0byBhdm9pZCBleGl0aW5nIGZy
b20gdGhlIGlmIHdpdGggJD8gPSAxLCB3aGljaAorICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZh
aWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KKyAgJGFjX2NzX3N1Y2Nlc3MgfHwg
YXNfZm5fZXhpdCAxCitmaQoraWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIiAmJiB0
ZXN0ICIkZW5hYmxlX29wdGlvbl9jaGVja2luZyIgIT0gbm87IHRoZW4KKyAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9u
czogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6
IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMjt9CitmaQor
CmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9jb25maWd1cmUuYWMK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMv
Y29uZmlndXJlLmFjCVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDE5
MSBAQAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSot
IEF1dG9jb25mIC0qLQorIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1
Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorCitBQ19QUkVSRVEoWzIuNjddKQorQUNfSU5JVChbWGVu
IEh5cGVydmlzb3JdLCBtNF9lc3lzY21kKFsuLi92ZXJzaW9uLnNoIC4uL3hlbi9NYWtlZmlsZV0p
LAorICAgIFt4ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbV0pCitBQ19DT05GSUdfU1JDRElS
KFtsaWJ4bC9saWJ4bC5jXSkKK0FDX0NPTkZJR19GSUxFUyhbLi4vY29uZmlnL1Rvb2xzLm1rXSkK
K0FDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCitBQ19QUkVGSVhfREVGQVVMVChbL3Vzcl0p
CitBQ19DT05GSUdfQVVYX0RJUihbLl0pCisKKyMgQ2hlY2sgaWYgQ0ZMQUdTLCBMREZMQUdTLCBM
SUJTLCBDUFBGTEFHUyBvciBDUFAgaXMgc2V0IGFuZCBwcmludCBhIHdhcm5pbmcKKworQVNfSUYo
W3Rlc3QgLW4gIiRDQyRDRkxBR1MkTERGTEFHUyRMSUJTJENQUEZMQUdTJENQUCJdLCBbCisgICAg
QUNfTVNHX1dBUk4oCitbU2V0dGluZyBDQywgQ0ZMQUdTLCBMREZMQUdTLCBMSUJTLCBDUFBGTEFH
UyBvciBDUFAgaXMgbm90IFwKK3JlY29tbWVuZGVkLCB1c2UgUFJFUEVORF9JTkNMVURFUywgUFJF
UEVORF9MSUIsIFwKK0FQUEVORF9JTkNMVURFUyBhbmQgQVBQRU5EX0xJQiBpbnN0ZWFkIHdoZW4g
cG9zc2libGUuXSkKK10pCisKK0FDX1VTRV9TWVNURU1fRVhURU5TSU9OUworQUNfQ0FOT05JQ0FM
X0hPU1QKKworIyBNNCBNYWNybyBpbmNsdWRlcworbTRfaW5jbHVkZShbbTQvZW5hYmxlX2ZlYXR1
cmUubTRdKQorbTRfaW5jbHVkZShbbTQvZGlzYWJsZV9mZWF0dXJlLm00XSkKK200X2luY2x1ZGUo
W200L3BhdGhfb3JfZmFpbC5tNF0pCittNF9pbmNsdWRlKFttNC9weXRob25feG1sLm00XSkKK200
X2luY2x1ZGUoW200L3B5dGhvbl92ZXJzaW9uLm00XSkKK200X2luY2x1ZGUoW200L3B5dGhvbl9k
ZXZlbC5tNF0pCittNF9pbmNsdWRlKFttNC91ZGV2Lm00XSkKK200X2luY2x1ZGUoW200L29jYW1s
Lm00XSkKK200X2luY2x1ZGUoW200L2RlZmF1bHRfbGliLm00XSkKK200X2luY2x1ZGUoW200L3Nl
dF9jZmxhZ3NfbGRmbGFncy5tNF0pCittNF9pbmNsdWRlKFttNC91dWlkLm00XSkKKworIyBFbmFi
bGUvZGlzYWJsZSBvcHRpb25zCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQoW3hzbV0sCisgICAg
W0VuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxlIChieSBkZWZhdWx0LCBGbGFzayldKQorQVhfQVJH
X0VOQUJMRV9BTkRfRVhQT1JUKFtnaXRodHRwXSwgW0Rvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMg
dmlhIEhUVFBdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChbbW9uaXRvcnNdLAorICAgIFtE
aXNhYmxlIHhlbnN0YXQgYW5kIHhlbnRvcCBtb25pdG9yaW5nIHRvb2xzXSkKK0FYX0FSR19FTkFC
TEVfQU5EX0VYUE9SVChbdnRwbV0sIFtFbmFibGUgVmlydHVhbCBUcnVzdGVkIFBsYXRmb3JtIE1v
ZHVsZV0pCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQoW3hhcGldLCBbRW5hYmxlIFhlbiBBUEkg
QmluZGluZ3NdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChbcHl0aG9udG9vbHNdLCBbRGlz
YWJsZSBQeXRob24gdG9vbHNdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChbb2NhbWx0b29s
c10sIFtEaXNhYmxlIE9jYW1sIHRvb2xzXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbbWlu
aXRlcm1dLCBbRW5hYmxlIG1pbml0ZXJtXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbbG9t
b3VudF0sIFtFbmFibGUgbG9tb3VudF0pCitBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtkZWJ1
Z10sIFtEaXNhYmxlIGRlYnVnIGJ1aWxkIG9mIFhlbiBhbmQgdG9vbHNdKQorCitBQ19BUkdfVkFS
KFtQUkVQRU5EX0lOQ0xVREVTXSwKKyAgICBbTGlzdCBvZiBpbmNsdWRlIGZvbGRlcnMgdG8gcHJl
cGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpXSkKK0FDX0FSR19WQVIoW1BSRVBFTkRfTElCXSwK
KyAgICBbTGlzdCBvZiBsaWJyYXJ5IGZvbGRlcnMgdG8gcHJlcGVuZCB0byBMREZMQUdTICh3aXRo
b3V0IC1MKV0pCitBQ19BUkdfVkFSKFtBUFBFTkRfSU5DTFVERVNdLAorICAgIFtMaXN0IG9mIGlu
Y2x1ZGUgZm9sZGVycyB0byBhcHBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKV0pCitBQ19BUkdf
VkFSKFtBUFBFTkRfTElCXSwKKyAgICBbTGlzdCBvZiBsaWJyYXJ5IGZvbGRlcnMgdG8gYXBwZW5k
IHRvIExERkxBR1MgKHdpdGhvdXQgLUwpXSkKKworQVhfU0VUX0ZMQUdTCisKK0FDX0FSR19WQVIo
W1BZVEhPTl0sIFtQYXRoIHRvIHRoZSBQeXRob24gcGFyc2VyXSkKK0FDX0FSR19WQVIoW1BFUkxd
LCBbUGF0aCB0byBQZXJsIHBhcnNlcl0pCitBQ19BUkdfVkFSKFtCUkNUTF0sIFtQYXRoIHRvIGJy
Y3RsIHRvb2xdKQorQUNfQVJHX1ZBUihbSVBdLCBbUGF0aCB0byBpcCB0b29sXSkKK0FDX0FSR19W
QVIoW0JJU09OXSwgW1BhdGggdG8gQmlzb24gcGFyc2VyIGdlbmVyYXRvcl0pCitBQ19BUkdfVkFS
KFtGTEVYXSwgW1BhdGggdG8gRmxleCBsZXhpY2FsIGFuYWx5c2VyIGdlbmVyYXRvcl0pCitBQ19B
UkdfVkFSKFtDVVJMXSwgW1BhdGggdG8gY3VybC1jb25maWcgdG9vbF0pCitBQ19BUkdfVkFSKFtY
TUxdLCBbUGF0aCB0byB4bWwyLWNvbmZpZyB0b29sXSkKK0FDX0FSR19WQVIoW0JBU0hdLCBbUGF0
aCB0byBiYXNoIHNoZWxsXSkKK0FDX0FSR19WQVIoW1hHRVRURVhUXSwgW1BhdGggdG8geGdldHR0
ZXh0IHRvb2xdKQorCisjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCitBQ19QUk9HX1NFRAorQUNfUFJP
R19DQworQUNfUFJPR19MTl9TCitBQ19QUk9HX01BS0VfU0VUCitBQ19QUk9HX0lOU1RBTEwKK0FY
X1BBVEhfUFJPR19PUl9GQUlMKFtQRVJMXSwgW3BlcmxdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwo
W0JSQ1RMXSwgW2JyY3RsXSkKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtJUF0sIFtpcF0pCitBWF9Q
QVRIX1BST0dfT1JfRkFJTChbQklTT05dLCBbYmlzb25dKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwo
W0ZMRVhdLCBbZmxleF0pCitBU19JRihbdGVzdCAieCR4YXBpIiA9ICJ4eSJdLCBbCisgICAgQVhf
UEFUSF9QUk9HX09SX0ZBSUwoW0NVUkxdLCBbY3VybC1jb25maWddKQorICAgIEFYX1BBVEhfUFJP
R19PUl9GQUlMKFtYTUxdLCBbeG1sMi1jb25maWddKQorXSkKK0FTX0lGKFt0ZXN0ICJ4JG9jYW1s
dG9vbHMiID0gInh5Il0sIFsKKyAgICBBQ19QUk9HX09DQU1MCisgICAgQVNfSUYoW3Rlc3QgIngk
T0NBTUxDIiA9ICJ4bm8iXSwgWworICAgICAgICBBU19JRihbdGVzdCAieCRlbmFibGVfb2NhbWx0
b29scyIgPSAieHllcyJdLCBbCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoW09jYW1sIHRvb2xz
IGVuYWJsZWQsIGJ1dCB1bmFibGUgdG8gZmluZCBPY2FtbF0pXSkKKyAgICAgICAgb2NhbWx0b29s
cz0ibiIKKyAgICBdKQorXSkKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtCQVNIXSwgW2Jhc2hdKQor
QVNfSUYoW3Rlc3QgIngkcHl0aG9udG9vbHMiID0gInh5Il0sIFsKKyAgICBBU19JRihbZWNobyAi
JFBZVEhPTiIgfCBncmVwIC1xICJeLyJdLCBbCisgICAgICAgIFBZVEhPTlBBVEg9JFBZVEhPTgor
ICAgICAgICBQWVRIT049YGJhc2VuYW1lICRQWVRIT05QQVRIYAorICAgIF0sW3Rlc3QgLXogIiRQ
WVRIT04iXSwgW1BZVEhPTj0icHl0aG9uIl0sCisgICAgW0FDX01TR19FUlJPUihbUFlUSE9OIHNw
ZWNpZmllZCwgYnV0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoXSldKQorICAgIEFYX1BBVEhfUFJP
R19PUl9GQUlMKFtQWVRIT05QQVRIXSwgWyRQWVRIT05dKQorICAgIEFYX0NIRUNLX1BZVEhPTl9W
RVJTSU9OKFsyXSwgWzNdKQorICAgIEFYX0NIRUNLX1BZVEhPTl9YTUwoKQorICAgIEFYX0NIRUNL
X1BZVEhPTl9ERVZFTCgpCitdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1hHRVRURVhUXSwgW3hn
ZXR0ZXh0XSkKK0FYX0NIRUNLX1VERVYoWzU5XSkKK0FYX0NIRUNLX1VVSUQKKworIyBDaGVjayBs
aWJyYXJ5IHBhdGgKK0FYX0RFRkFVTFRfTElCCisKKyMgQ2hlY2tzIGZvciBsaWJyYXJpZXMuCitB
Q19DSEVDS19MSUIoW2Fpb10sIFtpb19zZXR1cF0sIFtzeXN0ZW1fYWlvPSJ5Il0sIFtzeXN0ZW1f
YWlvPSJuIl0pCitBQ19TVUJTVChzeXN0ZW1fYWlvKQorQUNfQ0hFQ0tfTElCKFtjcnlwdG9dLCBb
TUQ1XSwgW10sIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYmNyeXB0b10pXSkKK0FD
X0NIRUNLX0xJQihbZXh0MmZzXSwgW2V4dDJmc19vcGVuMl0sIFtsaWJleHQyZnM9InkiXSwgW2xp
YmV4dDJmcz0ibiJdKQorQUNfU1VCU1QobGliZXh0MmZzKQorQUNfQ0hFQ0tfTElCKFtnY3J5cHRd
LCBbZ2NyeV9tZF9oYXNoX2J1ZmZlcl0sIFtsaWJnY3J5cHQ9InkiXSwgW2xpYmdjcnlwdD0ibiJd
KQorQUNfU1VCU1QobGliZ2NyeXB0KQorQUNfQ0hFQ0tfTElCKFtwdGhyZWFkXSwgW3B0aHJlYWRf
Y3JlYXRlXSwgW10gLAorICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnB0aHJl
YWRdKV0pCitBQ19DSEVDS19MSUIoW3J0XSwgW2Nsb2NrX2dldHRpbWVdKQorQUNfQ0hFQ0tfTElC
KFt1dWlkXSwgW3V1aWRfY2xlYXJdLCBbXSwKKyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3Qg
ZmluZCBsaWJ1dWlkXSldKQorQUNfQ0hFQ0tfTElCKFt5YWpsXSwgW3lhamxfYWxsb2NdLCBbXSwK
KyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB5YWpsXSldKQorQUNfQ0hFQ0tfTElC
KFt6XSwgW2RlZmxhdGVDb3B5XSwgW10sIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIHps
aWJdKV0pCitBQ19DSEVDS19MSUIoW2ljb252XSwgW2xpYmljb252X29wZW5dLCBbbGliaWNvbnY9
InkiXSwgW2xpYmljb252PSJuIl0pCitBQ19TVUJTVChsaWJpY29udikKKworIyBBdXRvc2NhbiBz
dHVmZiAoZXhjZXB0IGZvciB5YWpsL3lhamxfdmVyc2lvbi5oIGNoZWNrKQorIyBDaGVja3MgZm9y
IGhlYWRlciBmaWxlcy4KK0FDX0ZVTkNfQUxMT0NBCitBQ19DSEVDS19IRUFERVJTKFsgXAorICAg
ICAgICAgICAgICAgIGFycGEvaW5ldC5oIGZjbnRsLmggaW50dHlwZXMuaCBsaWJpbnRsLmggbGlt
aXRzLmggbWFsbG9jLmggXAorICAgICAgICAgICAgICAgIG5ldGRiLmggbmV0aW5ldC9pbi5oIHN0
ZGRlZi5oIHN0ZGludC5oIHN0ZGxpYi5oIHN0cmluZy5oIFwKKyAgICAgICAgICAgICAgICBzdHJp
bmdzLmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBzeXMvbW91bnQuaCBzeXMvcGFyYW0uaCBcCisg
ICAgICAgICAgICAgICAgc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3RpbWUuaCBzeXNs
b2cuaCB0ZXJtaW9zLmggXAorICAgICAgICAgICAgICAgIHVuaXN0ZC5oIHlhamwveWFqbF92ZXJz
aW9uLmggXAorICAgICAgICAgICAgICAgIF0pCisKKyMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3Ry
dWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KK0FDX0hFQURFUl9TVERCT09M
CitBQ19UWVBFX1VJRF9UCitBQ19DX0lOTElORQorQUNfVFlQRV9JTlQxNl9UCitBQ19UWVBFX0lO
VDMyX1QKK0FDX1RZUEVfSU5UNjRfVAorQUNfVFlQRV9JTlQ4X1QKK0FDX1RZUEVfTU9ERV9UCitB
Q19UWVBFX09GRl9UCitBQ19UWVBFX1BJRF9UCitBQ19DX1JFU1RSSUNUCitBQ19UWVBFX1NJWkVf
VAorQUNfVFlQRV9TU0laRV9UCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9ibGtz
aXplXSkKK0FDX1NUUlVDVF9TVF9CTE9DS1MKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0
LnN0X3JkZXZdKQorQUNfVFlQRV9VSU5UMTZfVAorQUNfVFlQRV9VSU5UMzJfVAorQUNfVFlQRV9V
SU5UNjRfVAorQUNfVFlQRV9VSU5UOF9UCitBQ19DSEVDS19UWVBFUyhbcHRyZGlmZl90XSkKKwor
IyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgorQUNfRlVOQ19FUlJPUl9BVF9MSU5FCitB
Q19GVU5DX0ZPUksKK0FDX0ZVTkNfRlNFRUtPCitBQ19GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hF
RF9TWU1MSU5LCitBQ19IRUFERVJfTUFKT1IKK0FDX0ZVTkNfTUFMTE9DCitBQ19GVU5DX01LVElN
RQorQUNfRlVOQ19NTUFQCitBQ19GVU5DX1JFQUxMT0MKK0FDX0ZVTkNfU1RSTkxFTgorQUNfRlVO
Q19TVFJUT0QKK0FDX0NIRUNLX0ZVTkNTKFsgXAorICAgICAgICAgICAgICAgIGFsYXJtIGF0ZXhp
dCBiemVybyBjbG9ja19nZXR0aW1lIGR1cDIgZmRhdGFzeW5jIGZ0cnVuY2F0ZSBcCisgICAgICAg
ICAgICAgICAgZ2V0Y3dkIGdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUgZ2V0cGFnZXNpemUgZ2V0
dGltZW9mZGF5IFwKKyAgICAgICAgICAgICAgICBpbmV0X250b2EgaXNhc2NpaSBsb2NhbHRpbWVf
ciBtZW1jaHIgbWVtbW92ZSBtZW1zZXQgbWtkaXIgXAorICAgICAgICAgICAgICAgIG1rZmlmbyBt
dW5tYXAgcGF0aGNvbmYgcmVhbHBhdGggcmVnY29tcCBybWRpciBzZWxlY3Qgc2V0ZW52IFwKKyAg
ICAgICAgICAgICAgICBzb2NrZXQgc3RyY2FzZWNtcCBzdHJjaHIgc3RyY3NwbiBzdHJkdXAgc3Ry
ZXJyb3Igc3RybmR1cCBcCisgICAgICAgICAgICAgICAgc3RycGJyayBzdHJyY2hyIHN0cnNwbiBz
dHJzdHIgc3RydG9sIHN0cnRvdWwgc3RydG91bGwgdHpzZXQgXAorICAgICAgICAgICAgICAgIHVu
YW1lIFwKKyAgICAgICAgICAgICAgICBdKQorCitBQ19PVVRQVVQoKQpkaWZmIC1yIGUyNzIyYjI0
ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcvTWFrZWZpbGUKLS0t
IGEvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcvTWFrZWZpbGUJVGh1IEphbiAyNiAxNzo0MzozMSAy
MDEyICswMDAwCisrKyBiL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01ha2VmaWxlCVdlZCBKYW4g
MTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMjEsNyArMjEsNiBAQCB4Z19hbGwuYTogJChYR19P
QkpTKSBNYWtlZmlsZSAkKFhHX0hEUlMpCiAjCSQoQ0MpIC1tMzIgLWMgLW8gJEAgJF4KIAogeGVu
LWhlYWRlcnM6Ci0JJChNQUtFKSAtQyAuLi8uLi8uLi9jaGVjayAKIAkkKE1BS0UpIC1DIC4uLy4u
Ly4uL2luY2x1ZGUKIAogIyB4Z19tYWluLm86IHhnX21haW4uYyBNYWtlZmlsZSAkKFhHX0hEUlMp
CmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9pbnN0YWxsLnNoCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2lu
c3RhbGwuc2gJV2VkIEphbiAxMSAwNjowNzowNSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMSBAQAor
Li4vaW5zdGFsbC5zaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtciBlMjcyMmIy
NGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUKLS0tIGEvdG9v
bHMvbGliZnNpbWFnZS9NYWtlZmlsZQlUaHUgSmFuIDI2IDE3OjQzOjMxIDIwMTIgKzAwMDAKKysr
IGIvdG9vbHMvbGliZnNpbWFnZS9NYWtlZmlsZQlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAx
MDAKQEAgLTIsNyArMiwxMSBAQCBYRU5fUk9PVCA9ICQoQ1VSRElSKS8uLi8uLgogaW5jbHVkZSAk
KFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiBTVUJESVJTLXkgPSBjb21tb24gdWZzIHJlaXNl
cmZzIGlzbzk2NjAgZmF0IHpmcyB4ZnMKLVNVQkRJUlMteSArPSAkKHNoZWxsIGVudiBDQz0iJChD
QykiIC4vY2hlY2stbGliZXh0MmZzKQoraWZlcSAoJChDT05GSUdfRVhUMkZTKSwgeSkKKyAgICBT
VUJESVJTLXkgKz0gZXh0MmZzLWxpYgorZWxzZQorICAgIFNVQkRJUlMteSArPSBleHQyZnMKK2Vu
ZGlmCiAKIC5QSE9OWTogYWxsIGNsZWFuIGluc3RhbGwKIGFsbCBjbGVhbiBpbnN0YWxsOiAlOiBz
dWJkaXJzLSUKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL2xpYmZz
aW1hZ2UvY2hlY2stbGliZXh0MmZzCi0tLSBhL3Rvb2xzL2xpYmZzaW1hZ2UvY2hlY2stbGliZXh0
MmZzCVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMSArMCwwIEBACi0jIS9iaW4vc2gKLQotY2F0
ID5leHQyLXRlc3QuYyA8PEVPRgotI2luY2x1ZGUgPGV4dDJmcy9leHQyZnMuaD4KLQotaW50IG1h
aW4oKQotewotCWV4dDJmc19vcGVuMjsKLX0KLUVPRgotCi0ke0NDLWdjY30gLW8gZXh0Mi10ZXN0
IGV4dDItdGVzdC5jIC1sZXh0MmZzID4vZGV2L251bGwgMj4mMQotaWYgWyAkPyA9IDAgXTsgdGhl
bgotCWVjaG8gZXh0MmZzLWxpYgotZWxzZQotCWVjaG8gZXh0MmZzCi1maQotCi1ybSAtZiBleHQy
LXRlc3QgZXh0Mi10ZXN0LmMKLQotZXhpdCAwCmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3
MGU1MzlhMSB0b29scy9saWJ4ZW4vTWFrZWZpbGUKLS0tIGEvdG9vbHMvbGlieGVuL01ha2VmaWxl
CVRodSBKYW4gMjYgMTc6NDM6MzEgMjAxMiArMDAwMAorKysgYi90b29scy9saWJ4ZW4vTWFrZWZp
bGUJV2VkIEphbiAxMSAwNjowNzowNSAyMDEyICswMTAwCkBAIC0yMiwxMiArMjIsMTIgQEAgTUFK
T1IgPSAxLjAKIE1JTk9SID0gMAogCiBDRkxBR1MgKz0gLUlpbmNsdWRlICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICQoc2hlbGwgeG1sMi1jb25maWcgLS1jZmxhZ3MpIFwKLSAgICAg
ICAgICAkKHNoZWxsIGN1cmwtY29uZmlnIC0tY2ZsYWdzKSBcCisgICAgICAgICAgJChzaGVsbCAk
KFhNTDJfQ09ORklHKSAtLWNmbGFncykgXAorICAgICAgICAgICQoc2hlbGwgJChDVVJMX0NPTkZJ
RykgLS1jZmxhZ3MpIFwKICAgICAgICAgICAtZlBJQwogCi1MREZMQUdTICs9ICQoc2hlbGwgeG1s
Mi1jb25maWcgLS1saWJzKSBcCi0gICAgICAgICAgICQoc2hlbGwgY3VybC1jb25maWcgLS1saWJz
KQorTERGTEFHUyArPSAkKHNoZWxsICQoWE1MMl9DT05GSUcpIC0tbGlicykgXAorICAgICAgICAg
ICAkKHNoZWxsICQoQ1VSTF9DT05GSUcpIC0tbGlicykKIAogTElCWEVOQVBJX0hEUlMgPSAkKHdp
bGRjYXJkIGluY2x1ZGUveGVuL2FwaS8qLmgpIGluY2x1ZGUveGVuL2FwaS94ZW5fYWxsLmgKIExJ
QlhFTkFQSV9PQkpTID0gJChwYXRzdWJzdCAlLmMsICUubywgJCh3aWxkY2FyZCBzcmMvKi5jKSkK
ZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIgODM3NTcwZTUzOWExIHRvb2xzL200L2RlZmF1bHRfbGli
Lm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rv
b2xzL200L2RlZmF1bHRfbGliLm00CVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAt
MCwwICsxLDggQEAKK0FDX0RFRlVOKFtBWF9ERUZBVUxUX0xJQl0sCitbQVNfSUYoW3Rlc3QgLWQg
IiRwcmVmaXgvbGliNjQiXSwgWworICAgIExJQl9QQVRIPSJsaWI2NCIKK10sWworICAgIExJQl9Q
QVRIPSJsaWIiCitdKQorQUNfU1VCU1QoTElCX1BBVEgpXSkKKwpkaWZmIC1yIGUyNzIyYjI0ZGMw
OSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvbTQvZGlzYWJsZV9mZWF0dXJlLm00Ci0tLSAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L2Rpc2FibGVf
ZmVhdHVyZS5tNAlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMyBA
QAorQUNfREVGVU4oW0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlRdLAorW0FDX0FSR19FTkFCTEUo
WyQxXSwKKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLSQxXSwgWyQyXSkpCisKK0FTX0lG
KFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieG5vIl0sIFsKKyAgICBheF9jdl8kMT0ibiIKK10sIFt0
ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieHllcyJdLCBbCisgICAgYXhfY3ZfJDE9InkiCitdLCBbdGVz
dCAteiAkYXhfY3ZfJDFdLCBbCisgICAgYXhfY3ZfJDE9InkiCitdKQorJDE9JGF4X2N2XyQxCitB
Q19TVUJTVCgkMSldKQpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMv
bTQvZW5hYmxlX2ZlYXR1cmUubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvZW5hYmxlX2ZlYXR1cmUubTQJV2VkIEphbiAxMSAwNjow
NzowNSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVOKFtBWF9BUkdfRU5BQkxF
X0FORF9FWFBPUlRdLAorW0FDX0FSR19FTkFCTEUoWyQxXSwKKyAgICBBU19IRUxQX1NUUklORyhb
LS1lbmFibGUtJDFdLCBbJDJdKSkKKworQVNfSUYoW3Rlc3QgIngkZW5hYmxlXyQxIiA9ICJ4eWVz
Il0sIFsKKyAgICBheF9jdl8kMT0ieSIKK10sIFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieG5vIl0s
IFsKKyAgICBheF9jdl8kMT0ibiIKK10sIFt0ZXN0IC16ICRheF9jdl8kMV0sIFsKKyAgICBheF9j
dl8kMT0ibiIKK10pCiskMT0kYXhfY3ZfJDEKK0FDX1NVQlNUKCQxKV0pCmRpZmYgLXIgZTI3MjJi
MjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9tNC9vY2FtbC5tNAotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9vY2FtbC5tNAlXZWQg
SmFuIDExIDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwyNDEgQEAKK2RubCBhdXRvY29u
ZiBtYWNyb3MgZm9yIE9DYW1sCitkbmwgZnJvbSBodHRwOi8vZm9yZ2Uub2NhbWxjb3JlLm9yZy8K
K2RubAorZG5sIENvcHlyaWdodCDCqSAyMDA5ICAgICAgUmljaGFyZCBXLk0uIEpvbmVzCitkbmwg
Q29weXJpZ2h0IMKpIDIwMDkgICAgICBTdGVmYW5vIFphY2NoaXJvbGkKK2RubCBDb3B5cmlnaHQg
wqkgMjAwMC0yMDA1IE9saXZpZXIgQW5kcmlldQorZG5sIENvcHlyaWdodCDCqSAyMDAwLTIwMDUg
SmVhbi1DaHJpc3RvcGhlIEZpbGxpw6J0cmUKK2RubCBDb3B5cmlnaHQgwqkgMjAwMC0yMDA1IEdl
b3JnZXMgTWFyaWFubworZG5sCitkbmwgRm9yIGRvY3VtZW50YXRpb24sIHBsZWFzZSByZWFkIHRo
ZSBvY2FtbC5tNCBtYW4gcGFnZS4KKworQUNfREVGVU4oW0FDX1BST0dfT0NBTUxdLAorW2RubAor
ICAjIGNoZWNraW5nIGZvciBvY2FtbGMKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxDXSxbb2NhbWxj
XSxbbm9dKQorCisgIGlmIHRlc3QgIiRPQ0FNTEMiICE9ICJubyI7IHRoZW4KKyAgICAgT0NBTUxW
RVJTSU9OPWAkT0NBTUxDIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8
cCdgCisgICAgIEFDX01TR19SRVNVTFQoW09DYW1sIHZlcnNpb24gaXMgJE9DQU1MVkVSU0lPTl0p
CisgICAgICMgSWYgT0NBTUxMSUIgaXMgc2V0LCB1c2UgaXQKKyAgICAgaWYgdGVzdCAiJE9DQU1M
TElCIiA9ICIiOyB0aGVuCisgICAgICAgIE9DQU1MTElCPWAkT0NBTUxDIC13aGVyZSAyPi9kZXYv
bnVsbCB8fCAkT0NBTUxDIC12fHRhaWwgLTF8Y3V0IC1kICcgJyAtZiA0YAorICAgICBlbHNlCisg
ICAgICAgIEFDX01TR19SRVNVTFQoW09DQU1MTElCIHByZXZpb3VzbHkgc2V0OyBwcmVzZXJ2aW5n
IGl0Ll0pCisgICAgIGZpCisgICAgIEFDX01TR19SRVNVTFQoW09DYW1sIGxpYnJhcnkgcGF0aCBp
cyAkT0NBTUxMSUJdKQorCisgICAgIEFDX1NVQlNUKFtPQ0FNTFZFUlNJT05dKQorICAgICBBQ19T
VUJTVChbT0NBTUxMSUJdKQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0CisgICAgIEFD
X0NIRUNLX1RPT0woW09DQU1MT1BUXSxbb2NhbWxvcHRdLFtub10pCisgICAgIE9DQU1MQkVTVD1i
eXRlCisgICAgIGlmIHRlc3QgIiRPQ0FNTE9QVCIgPSAibm8iOyB0aGVuCisJQUNfTVNHX1dBUk4o
W0Nhbm5vdCBmaW5kIG9jYW1sb3B0OyBieXRlY29kZSBjb21waWxhdGlvbiBvbmx5Ll0pCisgICAg
IGVsc2UKKwlUTVBWRVJTSU9OPWAkT0NBTUxPUFQgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9u
KiAqXCguKlwpJHxcMXxwJyBgCisJaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJT
SU9OIiA7IHRoZW4KKwkgICAgQUNfTVNHX1JFU1VMVChbdmVyc2lvbnMgZGlmZmVycyBmcm9tIG9j
YW1sYzsgb2NhbWxvcHQgZGlzY2FyZGVkLl0pCisJICAgIE9DQU1MT1BUPW5vCisJZWxzZQorCSAg
ICBPQ0FNTEJFU1Q9b3B0CisJZmkKKyAgICAgZmkKKworICAgICBBQ19TVUJTVChbT0NBTUxCRVNU
XSkKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbGMub3B0CisgICAgIEFDX0NIRUNLX1RPT0wo
W09DQU1MQ0RPVE9QVF0sW29jYW1sYy5vcHRdLFtub10pCisgICAgIGlmIHRlc3QgIiRPQ0FNTENE
T1RPUFQiICE9ICJubyI7IHRoZW4KKwlUTVBWRVJTSU9OPWAkT0NBTUxDRE9UT1BUIC12IHwgc2Vk
IC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCWlmIHRlc3QgIiRUTVBWRVJT
SU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgIEFDX01TR19SRVNVTFQoW3ZlcnNp
b25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sYy5vcHQgZGlzY2FyZGVkLl0pCisJZWxzZQor
CSAgICBPQ0FNTEM9JE9DQU1MQ0RPVE9QVAorCWZpCisgICAgIGZpCisKKyAgICAgIyBjaGVja2lu
ZyBmb3Igb2NhbWxvcHQub3B0CisgICAgIGlmIHRlc3QgIiRPQ0FNTE9QVCIgIT0gIm5vIiA7IHRo
ZW4KKwlBQ19DSEVDS19UT09MKFtPQ0FNTE9QVERPVE9QVF0sW29jYW1sb3B0Lm9wdF0sW25vXSkK
KwlpZiB0ZXN0ICIkT0NBTUxPUFRET1RPUFQiICE9ICJubyI7IHRoZW4KKwkgICBUTVBWRVJTSU9O
PWAkT0NBTUxPUFRET1RPUFQgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxc
MXxwJyBgCisJICAgaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRo
ZW4KKwkgICAgICBBQ19NU0dfUkVTVUxUKFt2ZXJzaW9uIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9j
YW1sb3B0Lm9wdCBkaXNjYXJkZWQuXSkKKwkgICBlbHNlCisJICAgICAgT0NBTUxPUFQ9JE9DQU1M
T1BURE9UT1BUCisJICAgZmkKKyAgICAgICAgZmkKKyAgICAgZmkKKworICAgICBBQ19TVUJTVChb
T0NBTUxPUFRdKQorICBmaQorCisgIEFDX1NVQlNUKFtPQ0FNTENdKQorCisgICMgY2hlY2tpbmcg
Zm9yIG9jYW1sIHRvcGxldmVsCisgIEFDX0NIRUNLX1RPT0woW09DQU1MXSxbb2NhbWxdLFtub10p
CisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxkZXAKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxERVBd
LFtvY2FtbGRlcF0sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbG1rdG9wCisgIEFDX0NI
RUNLX1RPT0woW09DQU1MTUtUT1BdLFtvY2FtbG1rdG9wXSxbbm9dKQorCisgICMgY2hlY2tpbmcg
Zm9yIG9jYW1sbWtsaWIKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxNS0xJQl0sW29jYW1sbWtsaWJd
LFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxkb2MKKyAgQUNfQ0hFQ0tfVE9PTChbT0NB
TUxET0NdLFtvY2FtbGRvY10sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbGJ1aWxkCisg
IEFDX0NIRUNLX1RPT0woW09DQU1MQlVJTERdLFtvY2FtbGJ1aWxkXSxbbm9dKQorXSkKKworCitB
Q19ERUZVTihbQUNfUFJPR19PQ0FNTExFWF0sCitbZG5sCisgICMgY2hlY2tpbmcgZm9yIG9jYW1s
bGV4CisgIEFDX0NIRUNLX1RPT0woW09DQU1MTEVYXSxbb2NhbWxsZXhdLFtub10pCisgIGlmIHRl
c3QgIiRPQ0FNTExFWCIgIT0gIm5vIjsgdGhlbgorICAgIEFDX0NIRUNLX1RPT0woW09DQU1MTEVY
RE9UT1BUXSxbb2NhbWxsZXgub3B0XSxbbm9dKQorICAgIGlmIHRlc3QgIiRPQ0FNTExFWERPVE9Q
VCIgIT0gIm5vIjsgdGhlbgorCU9DQU1MTEVYPSRPQ0FNTExFWERPVE9QVAorICAgIGZpCisgIGZp
CisgIEFDX1NVQlNUKFtPQ0FNTExFWF0pCitdKQorCitBQ19ERUZVTihbQUNfUFJPR19PQ0FNTFlB
Q0NdLAorW2RubAorICBBQ19DSEVDS19UT09MKFtPQ0FNTFlBQ0NdLFtvY2FtbHlhY2NdLFtub10p
CisgIEFDX1NVQlNUKFtPQ0FNTFlBQ0NdKQorXSkKKworCitBQ19ERUZVTihbQUNfUFJPR19DQU1M
UDRdLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlkbmwKKworICAjIGNoZWNr
aW5nIGZvciBjYW1scDQKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0XSxbY2FtbHA0XSxbbm9dKQor
ICBpZiB0ZXN0ICIkQ0FNTFA0IiAhPSAibm8iOyB0aGVuCisgICAgIFRNUFZFUlNJT049YCRDQU1M
UDQgLXYgMj4mMXwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiAqXCguKlwpJHxcMXxwJ2AKKyAgICAg
aWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRoZW4KKwlBQ19NU0df
UkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjXSkKKyAgICAgICAgQ0FNTFA0PW5v
CisgICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFtDQU1MUDRdKQorCisgICMgY2hlY2tpbmcgZm9y
IGNvbXBhbmlvbiB0b29scworICBBQ19DSEVDS19UT09MKFtDQU1MUDRCT09UXSxbY2FtbHA0Ym9v
dF0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0T10sW2NhbWxwNG9dLFtub10pCisgIEFD
X0NIRUNLX1RPT0woW0NBTUxQNE9GXSxbY2FtbHA0b2ZdLFtub10pCisgIEFDX0NIRUNLX1RPT0wo
W0NBTUxQNE9PRl0sW2NhbWxwNG9vZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0T1JG
XSxbY2FtbHA0b3JmXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRQUk9GXSxbY2FtbHA0
cHJvZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0Ul0sW2NhbWxwNHJdLFtub10pCisg
IEFDX0NIRUNLX1RPT0woW0NBTUxQNFJGXSxbY2FtbHA0cmZdLFtub10pCisgIEFDX1NVQlNUKFtD
QU1MUDRCT09UXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9dKQorICBBQ19TVUJTVChbQ0FNTFA0T0Zd
KQorICBBQ19TVUJTVChbQ0FNTFA0T09GXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9SRl0pCisgIEFD
X1NVQlNUKFtDQU1MUDRQUk9GXSkKKyAgQUNfU1VCU1QoW0NBTUxQNFJdKQorICBBQ19TVUJTVChb
Q0FNTFA0UkZdKQorXSkKKworCitBQ19ERUZVTihbQUNfUFJPR19GSU5ETElCXSwKK1tkbmwKKyAg
QUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxm
aW5kCisgIEFDX0NIRUNLX1RPT0woW09DQU1MRklORF0sW29jYW1sZmluZF0sW25vXSkKKyAgQUNf
U1VCU1QoW09DQU1MRklORF0pCitdKQorCisKK2RubCBUaGFua3MgdG8gSmltIE1leWVyaW5nIGZv
ciB3b3JraW5nIHRoaXMgbmV4dCBiaXQgb3V0IGZvciB1cy4KK2RubCBYWFggV2Ugc2hvdWxkIGRl
ZmluZSBBU19UUl9TSCBpZiBpdCdzIG5vdCBkZWZpbmVkIGFscmVhZHkKK2RubCAoZWcuIGZvciBv
bGQgYXV0b2NvbmYpLgorQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX1BLR10sCitbZG5sCisgIEFD
X1JFUVVJUkUoW0FDX1BST0dfRklORExJQl0pZG5sCisKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3Ig
T0NhbWwgZmluZGxpYiBwYWNrYWdlICQxXSkKKworICB1bnNldCBmb3VuZAorICB1bnNldCBwa2cK
KyAgZm91bmQ9bm8KKyAgZm9yIHBrZyBpbiAkMSAkMiA7IGRvCisgICAgaWYgJE9DQU1MRklORCBx
dWVyeSAkcGtnID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIEFDX01TR19SRVNV
TFQoW2ZvdW5kXSkKKyAgICAgIEFTX1RSX1NIKFtPQ0FNTF9QS0dfJDFdKT0kcGtnCisgICAgICBm
b3VuZD15ZXMKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBpZiB0ZXN0ICIkZm91bmQi
ID0gIm5vIiA7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91bmRdKQorICAgIEFTX1RS
X1NIKFtPQ0FNTF9QS0dfJDFdKT1ubworICBmaQorCisgIEFDX1NVQlNUKEFTX1RSX1NIKFtPQ0FN
TF9QS0dfJDFdKSkKK10pCisKKworQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX01PRFVMRV0sCitb
ZG5sCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9DYW1sIG1vZHVsZSAkMl0pCisKKyAgY2F0ID4g
Y29uZnRlc3QubWwgPDxFT0YKK29wZW4gJDMKK0VPRgorICB1bnNldCBmb3VuZAorICBmb3IgJDEg
aW4gJCQxICQ0IDsgZG8KKyAgICBpZiAkT0NBTUxDIC1jIC1JICIkJDEiIGNvbmZ0ZXN0Lm1sID4m
NSAyPiY1IDsgdGhlbgorICAgICAgZm91bmQ9eWVzCisgICAgICBicmVhaworICAgIGZpCisgIGRv
bmUKKworICBpZiB0ZXN0ICIkZm91bmQiIDsgdGhlbgorICAgIEFDX01TR19SRVNVTFQoWyQkMV0p
CisgIGVsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91bmRdKQorICAgICQxPW5vCisgIGZp
CisgIEFDX1NVQlNUKFskMV0pCitdKQorCisKK2RubCBYWFggQ3Jvc3MtY29tcGlsaW5nCitBQ19E
RUZVTihbQUNfQ0hFQ0tfT0NBTUxfV09SRF9TSVpFXSwKK1tkbmwKKyAgQUNfUkVRVUlSRShbQUNf
UFJPR19PQ0FNTF0pZG5sCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9DYW1sIGNvbXBpbGVyIHdv
cmQgc2l6ZV0pCisgIGNhdCA+IGNvbmZ0ZXN0Lm1sIDw8RU9GCisgIHByaW50X2VuZGxpbmUgKHN0
cmluZ19vZl9pbnQgU3lzLndvcmRfc2l6ZSkKKyAgRU9GCisgIE9DQU1MX1dPUkRfU0laRT1gJE9D
QU1MIGNvbmZ0ZXN0Lm1sYAorICBBQ19NU0dfUkVTVUxUKFskT0NBTUxfV09SRF9TSVpFXSkKKyAg
QUNfU1VCU1QoW09DQU1MX1dPUkRfU0laRV0pCitdKQorCitBQ19ERUZVTihbQUNfQ0hFQ0tfT0NB
TUxfT1NfVFlQRV0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRubAorICBB
Q19NU0dfQ0hFQ0tJTkcoW09DYW1sIFN5cy5vc190eXBlXSkKKworICBjYXQgPiBjb25mdGVzdC5t
bCA8PEVPRgorICBwcmludF9zdHJpbmcoU3lzLm9zX3R5cGUpOzsKK0VPRgorCisgIE9DQU1MX09T
X1RZUEU9YCRPQ0FNTCBjb25mdGVzdC5tbGAKKyAgQUNfTVNHX1JFU1VMVChbJE9DQU1MX09TX1RZ
UEVdKQorICBBQ19TVUJTVChbT0NBTUxfT1NfVFlQRV0pCitdKQpkaWZmIC1yIGUyNzIyYjI0ZGMw
OSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvbTQvcGF0aF9vcl9mYWlsLm00Ci0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3BhdGhfb3JfZmFp
bC5tNAlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTAsMCArMSw2IEBACitBQ19E
RUZVTihbQVhfUEFUSF9QUk9HX09SX0ZBSUxdLAorW0FDX1BBVEhfUFJPRyhbJDFdLCBbJDJdLCBb
bm9dKQoraWYgdGVzdCB4IiR7JDF9IiA9PSB4Im5vIiAKK3RoZW4KKyAgICBBQ19NU0dfRVJST1Io
W1VuYWJsZSB0byBmaW5kICQyLCBwbGVhc2UgaW5zdGFsbCAkMl0pCitmaV0pCmRpZmYgLXIgZTI3
MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9tNC9weXRob25fZGV2ZWwubTQKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvcHl0
aG9uX2RldmVsLm00CVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDE4
IEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX0RFVkVMXSwKK1tBQ19NU0dfQ0hFQ0tJTkco
W2ZvciBweXRob24gZGV2ZWxdKQorCitgJFBZVEhPTiAtYyAnCitpbXBvcnQgb3MucGF0aCwgc3lz
Citmb3IgcCBpbiBzeXMucGF0aDoKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhwICsgIi9jb25maWcv
TWFrZWZpbGUiKToKKyAgICAgICAgc3lzLmV4aXQoMCkKK3N5cy5leGl0KDEpCisnID4gL2Rldi9u
dWxsIDI+JjFgCisKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBBQ19NU0dfUkVTVUxU
KFtub10pCisgICAgQUNfTVNHX0VSUk9SKFtQeXRob24gZGV2ZWwgcGFja2FnZSBub3QgZm91bmRd
KQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRpZmYgLXIgZTI3MjJiMjRk
YzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9tNC9weXRob25fdmVyc2lvbi5tNAotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9weXRob25f
dmVyc2lvbi5tNAlXZWQgSmFuIDExIDA2OjA3OjA1IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMiBA
QAorQUNfREVGVU4oW0FYX0NIRUNLX1BZVEhPTl9WRVJTSU9OXSwKK1tBQ19NU0dfQ0hFQ0tJTkco
W2ZvciBweXRob24gdmVyc2lvbiA+PSAkMS4kMiBdKQorYCRQWVRIT04gLWMgJ2ltcG9ydCBzeXM7
IGV4aXQoZXZhbCgic3lzLnZlcnNpb25faW5mbyA8ICgkMSwgJDIpIikpJ2AKK2lmIHRlc3QgIiQ/
IiAhPSAiMCIKK3RoZW4KKyAgICBweXRob25fdmVyc2lvbj1gJFBZVEhPTiAtViAyPiYxYAorICAg
IEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfRVJST1IoCisgICAgICAgIFskcHl0aG9u
X3ZlcnNpb24gaXMgdG9vIG9sZCwgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9uIGlzICQxLiQyXSkK
K2Vsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZmIC1yIGUyNzIyYjI0ZGMw
OSAtciA4Mzc1NzBlNTM5YTEgdG9vbHMvbTQvcHl0aG9uX3htbC5tNAotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9weXRob25feG1sLm00
CVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAtMCwwICsxLDEwIEBACitBQ19ERUZV
TihbQVhfQ0hFQ0tfUFlUSE9OX1hNTF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHl0aG9uIHht
bC5kb20ubWluaWRvbV0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHhtbC5kb20ubWluaWRvbSdgCitp
ZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIEFD
X01TR19FUlJPUihbVW5hYmxlIHRvIGZpbmQgeG1sLmRvbS5taW5pZG9tIG1vZHVsZV0pCitlbHNl
CisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciBlMjcyMmIyNGRjMDkgLXIg
ODM3NTcwZTUzOWExIHRvb2xzL200L3NldF9jZmxhZ3NfbGRmbGFncy5tNAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9zZXRfY2ZsYWdz
X2xkZmxhZ3MubTQJV2VkIEphbiAxMSAwNjowNzowNSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMjAg
QEAKK0FDX0RFRlVOKFtBWF9TRVRfRkxBR1NdLAorW2ZvciBjZmxhZyBpbiAkUFJFUEVORF9JTkNM
VURFUworZG8KKyAgICBQUkVQRU5EX0NGTEFHUys9IiAtSSRjZmxhZyIKK2RvbmUKK2ZvciBsZGZs
YWcgaW4gJFBSRVBFTkRfTElCCitkbworICAgIFBSRVBFTkRfTERGTEFHUys9IiAtTCRsZGZsYWci
Citkb25lCitmb3IgY2ZsYWcgaW4gJEFQUEVORF9JTkNMVURFUworZG8KKyAgICBBUFBFTkRfQ0ZM
QUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBpbiAkQVBQRU5EX0xJQgorZG8KKyAg
ICBBUFBFTkRfTERGTEFHUys9IiAtTCRsZGZsYWciCitkb25lCitDRkxBR1M9IiRQUkVQRU5EX0NG
TEFHUyAkQ0ZMQUdTICRBUFBFTkRfQ0ZMQUdTIgorTERGTEFHUz0iJFBSRVBFTkRfTERGTEFHUyAk
TERGTEFHUyAkQVBQRU5EX0xERkxBR1MiXSkKKwpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1
NzBlNTM5YTEgdG9vbHMvbTQvdWRldi5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC91ZGV2Lm00CVdlZCBKYW4gMTEgMDY6MDc6MDUg
MjAxMiArMDEwMApAQCAtMCwwICsxLDMyIEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfVURFVl0sCitb
aWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxpbnV4LWdudSIKK3RoZW4KKyAgICBBQ19QQVRIX1BS
T0coW1VERVZBRE1dLCBbdWRldmFkbV0sIFtub10pCisgICAgaWYgdGVzdCB4IiR7VURFVkFETX0i
ID09IHgibm8iIAorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9HKFtVREVWSU5GT10sIFt1
ZGV2aW5mb10sIFtub10pCisgICAgICAgIGlmIHRlc3QgeCIke1VERVZJTkZPfSIgPT0geCJubyIK
KyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKAorICAgICAgICAgICAgICAg
IFtVbmFibGUgdG8gZmluZCB1ZGV2YWRtIG9yIHVkZXZpbmZvLCBwbGVhc2UgaW5zdGFsbCB1ZGV2
XSkKKyAgICAgICAgZmkKKyAgICAgICAgdWRldnZlcj1gJHtVREVWSU5GT30gLVYgfCBhd2sgJ3tw
cmludCAkTkZ9J2AKKyAgICBlbHNlCisgICAgICAgIHVkZXZ2ZXI9YCR7VURFVkFETX0gaW5mbyAt
ViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGZpCisgICAgaWYgdGVzdCAke3VkZXZ2ZXJ9IC1s
dCA1OQorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9HKFtIT1RQTFVHXSwgW2hvdHBsdWdd
LCBbbm9dKQorICAgICAgICBpZiB0ZXN0IHgiJHtIT1RQTFVHfSIgPT0geCJubyIKKyAgICAgICAg
dGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFt1ZGV2IGlzIHRvbyBvbGQsIHVwZ3JhZGUg
dG8gdmVyc2lvbiA1OSBvciBsYXRlcl0pCisgICAgICAgIGZpCisgICAgZmkKK2Vsc2UKKyAgICBB
Q19QQVRIX1BST0coW1ZOQ09ORklHXSwgW3ZuY29uZmlnXSwgW25vXSkKKyAgICBpZiB0ZXN0IHgi
JHtWTkNPTkZJR30iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoW05v
dCBhIExpbnV4IHN5c3RlbSBhbmQgdW5hYmxlIHRvIGZpbmQgdm5kXSkKKyAgICBmaQorZmkKK10p
CmRpZmYgLXIgZTI3MjJiMjRkYzA5IC1yIDgzNzU3MGU1MzlhMSB0b29scy9tNC91dWlkLm00Ci0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200
L3V1aWQubTQJV2VkIEphbiAxMSAwNjowNzowNSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTAgQEAK
K0FDX0RFRlVOKFtBWF9DSEVDS19VVUlEXSwKK1tpZiB0ZXN0ICJ4JGhvc3Rfb3MiID09ICJ4bGlu
dXgtZ251IgordGhlbgorICAgIEFDX0NIRUNLX0hFQURFUihbdXVpZC91dWlkLmhdLCwKKwkgICAg
W0FDX01TR19FUlJPUihbY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzXSldKQorZWxzZQorICAgIEFD
X0NIRUNLX0hFQURFUihbdXVpZC5oXSwsCisJICAgIFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5k
IHV1aWQgaGVhZGVyc10pXSkKK2ZpCitdKQpkaWZmIC1yIGUyNzIyYjI0ZGMwOSAtciA4Mzc1NzBl
NTM5YTEgdmVyc2lvbi5zaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi92ZXJzaW9uLnNoCVdlZCBKYW4gMTEgMDY6MDc6MDUgMjAxMiArMDEwMApAQCAt
MCwwICsxLDUgQEAKKyMhL2Jpbi9zaAorCitNQUpPUj1gZ3JlcCAiZXhwb3J0IFhFTl9WRVJTSU9O
IiAkMSB8IHNlZCAncy8uKj0vL2cnIHwgdHIgLXMgIiAiYAorTUlOT1I9YGdyZXAgImV4cG9ydCBY
RU5fU1VCVkVSU0lPTiIgJDEgfCBzZWQgJ3MvLio9Ly9nJyB8IHRyIC1zICIgImAKK3ByaW50ZiAi
JWQuJWQiICRNQUpPUiAkTUlOT1IK

--===============6253512272991086591==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

--===============6253512272991086591==--


From xen-changelog-bounces@lists.xensource.com Fri Feb 03 21:57:22 2012
Return-path: <xen-changelog-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Feb 2012 21:57:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-changelog-bounces@lists.xensource.com>)
	id 1RtR8E-0007Ku-MO; Fri, 03 Feb 2012 21:57:22 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RtR8C-0007Jn-GO
	for xen-changelog@lists.xensource.com; Fri, 03 Feb 2012 21:57:21 +0000
Received: from [193.109.254.147:46791] by server-4.bemta-14.messagelabs.com id
	E3/1D-04726-F385C2F4; Fri, 03 Feb 2012 21:57:19 +0000
X-Env-Sender: xen@xenbits.xen.org
X-Msg-Ref: server-5.tower-27.messagelabs.com!1328306183!51337678!1
X-Originating-IP: [50.57.168.107]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, UPPERCASE_25_50
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16419 invoked from network); 3 Feb 2012 21:56:24 -0000
Received: from mail.xen.org (HELO mail.xen.org) (50.57.168.107)
	by server-5.tower-27.messagelabs.com with AES256-SHA encrypted SMTP;
	3 Feb 2012 21:56:24 -0000
Received: from xenbits.xen.org ([50.57.170.242])
	by mail.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RtR84-0001m8-DV
	for xen-changelog@lists.xensource.com; Fri, 03 Feb 2012 21:57:12 +0000
Received: from xen by xenbits.xen.org with local (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RtR7z-0002id-LS
	for xen-changelog@lists.xensource.com; Fri, 03 Feb 2012 21:57:11 +0000
Message-Id: <E1RtR7z-0002id-LS@xenbits.xen.org>
Date: Fri, 03 Feb 2012 21:57:03 +0000
From: Xen patchbot-unstable <patchbot@xen.org>
To: xen-changelog@lists.xensource.com
Subject: [Xen-changelog] [xen-unstable] mini-os: use BSD sys/queue.h instead
	of Linux list.h
X-BeenThere: xen-changelog@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: xen-devel@lists.xensource.com
List-Id: BK change log <xen-changelog.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-changelog>, 
	<mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xensource.com>
List-Help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>,
	<mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-changelog-bounces@lists.xensource.com
Errors-To: xen-changelog-bounces@lists.xensource.com

# HG changeset patch
# User Ian Campbell <Ian.Campbell@citrix.com>
# Date 1328025974 0
# Node ID 934c14ab9f19330c91e2769beb96ac6896b2a1c8
# Parent  6c9a7381777031600ef3442a578d0fa3ce1491b2
mini-os: use BSD sys/queue.h instead of Linux list.h

The latter is GPL which makes the whole of mini-os GPL rather than BSD
as intended. In tree users are all GPL or GPL-compatible but we should
fix this so that mini-os is BSD. Do so by using the same BSD
sys/queue.h as we use in libxl.

Tested with the builtin mini-os test app and qemu stubdomain, both of which
appear to still function as expected.

Move tools/libxl/external and the associated sed script to
tools/include/xen-external to allow more sensible access from mini-os.

Also add s/NULL/0/ in the sed script due to NULL not always being
defined in stubdom code when mini-os/wait.h is included.

As well as the obvious ABI changes there are a few API updates
associated with the change:

  - struct rw_semaphore.wait_list is unused
  - remove_waiter needs to take the wait_queue_head

The latter requires a qemu update, so there is also a QEMU_TAG
update in this changeset.

I sprinkled some extra-emacs local variables around the files I edited
which didn't have them.

I think this should be backported to the stable branches since
external users of mini-os may have been mislead into thinking they
could safely link mini-os against GPL-incompatible code.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---


diff -r 6c9a73817770 -r 934c14ab9f19 .hgignore
--- a/.hgignore	Tue Jan 31 11:39:37 2012 +0000
+++ b/.hgignore	Tue Jan 31 16:06:14 2012 +0000
@@ -62,6 +62,7 @@
 ^docs/xen-api/xenapi-datamodel-graph.eps$
 ^docs/xen-api/xenapi.out$
 ^extras/mini-os/arch/ia64/gen_off.s$
+^extras/mini-os/include/list\.h$
 ^extras/mini-os/include/mini-os$
 ^extras/mini-os/include/ia64/mini-os$
 ^extras/mini-os/include/ia64/offsets.h$
diff -r 6c9a73817770 -r 934c14ab9f19 Config.mk
--- a/Config.mk	Tue Jan 31 11:39:37 2012 +0000
+++ b/Config.mk	Tue Jan 31 16:06:14 2012 +0000
@@ -222,9 +222,9 @@
 # CONFIG_QEMU ?= `pwd`/$(XEN_ROOT)/../qemu-xen.git
 CONFIG_QEMU ?= $(QEMU_REMOTE)
 
-QEMU_TAG ?= bb36d632e4cabf47882adff07a45c6702c4a5b30
-# Thu Jan 5 17:16:46 2012 +0000
-# qemu-xen: adjust MSI-X related log messages
+QEMU_TAG ?= de05447400930da4be216e4fb0fe52b8be81490e
+# Tue Jan 31 15:42:38 2012 +0000
+# block-vbd: update to new mini-os wait queue API (new linked list API)
 
 # Short answer -- do not enable this unless you know what you are
 # doing and are prepared for some pain.
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/Makefile
--- a/extras/mini-os/Makefile	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/Makefile	Tue Jan 31 16:06:14 2012 +0000
@@ -52,8 +52,12 @@
 	$(arch_links)
 endif
 
+include/list.h: $(XEN_ROOT)/tools/include/xen-external/bsd-sys-queue-h-seddery $(XEN_ROOT)/tools/include/xen-external/bsd-sys-queue.h
+	perl $^ --prefix=minios  >$@.new
+	$(call move-if-changed,$@.new,$@)
+
 .PHONY: links
-links:	$(ARCH_LINKS)
+links: include/list.h $(ARCH_LINKS)
 	[ -e include/xen ] || ln -sf ../../../xen/include/public include/xen
 	[ -e include/mini-os ] || ln -sf . include/mini-os
 	[ -e include/$(TARGET_ARCH_FAM)/mini-os ] || ln -sf . include/$(TARGET_ARCH_FAM)/mini-os
@@ -97,7 +101,7 @@
 APP_O=$(OBJ_DIR)/$(TARGET)_app.o 
 endif
 
-$(OBJ_DIR)/$(TARGET): links $(OBJS) $(APP_O) arch_lib
+$(OBJ_DIR)/$(TARGET): links include/list.h $(OBJS) $(APP_O) arch_lib
 	$(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o
 	$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
 	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
@@ -112,6 +116,7 @@
 	for dir in $(addprefix $(OBJ_DIR)/,$(SUBDIRS)); do \
 		rm -f $$dir/*.o; \
 	done
+	rm -f include/list.h
 	rm -f $(OBJ_DIR)/*.o *~ $(OBJ_DIR)/core $(OBJ_DIR)/$(TARGET).elf $(OBJ_DIR)/$(TARGET).raw $(OBJ_DIR)/$(TARGET) $(OBJ_DIR)/$(TARGET).gz
 	find . $(OBJ_DIR) -type l | xargs rm -f
 	$(RM) $(OBJ_DIR)/lwip.a $(LWO)
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/blkfront.c
--- a/extras/mini-os/blkfront.c	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/blkfront.c	Tue Jan 31 16:06:14 2012 +0000
@@ -323,7 +323,7 @@
 	    schedule();
 	    local_irq_save(flags);
 	}
-	remove_waiter(w);
+	remove_waiter(w, blkfront_queue);
 	local_irq_restore(flags);
     }
 }
@@ -414,7 +414,7 @@
 	schedule();
 	local_irq_save(flags);
     }
-    remove_waiter(w);
+    remove_waiter(w, blkfront_queue);
     local_irq_restore(flags);
 }
 
@@ -470,7 +470,7 @@
 	schedule();
 	local_irq_save(flags);
     }
-    remove_waiter(w);
+    remove_waiter(w, blkfront_queue);
     local_irq_restore(flags);
 }
 
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/fbfront.c
--- a/extras/mini-os/fbfront.c	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/fbfront.c	Tue Jan 31 16:06:14 2012 +0000
@@ -569,7 +569,7 @@
     add_waiter(w, fbfront_queue);
     while (page->out_prod - page->out_cons == XENFB_OUT_RING_LEN)
         schedule();
-    remove_waiter(w);
+    remove_waiter(w, fbfront_queue);
 
     prod = page->out_prod;
     mb(); /* ensure ring space available */
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/include/list.h
--- a/extras/mini-os/include/list.h	Tue Jan 31 11:39:37 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-#ifndef _LINUX_LIST_H
-#define _LINUX_LIST_H
-
-/*
- * Simple doubly linked list implementation.
- *
- * Some of the internal functions ("__xxx") are useful when
- * manipulating whole lists rather than single entries, as
- * sometimes we already know the next/prev entries and we can
- * generate better code by using them directly rather than
- * using the generic single-entry routines.
- */
-
-struct minios_list_head {
-	struct minios_list_head *next, *prev;
-};
-
-#define MINIOS_LIST_HEAD_INIT(name) { &(name), &(name) }
-
-#define MINIOS_LIST_HEAD(name) \
-	struct minios_list_head name = MINIOS_LIST_HEAD_INIT(name)
-
-#define MINIOS_INIT_LIST_HEAD(ptr) do { \
-	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
-} while (0)
-
-#define minios_list_top(head, type, member)					  \
-({ 									  \
-	struct minios_list_head *_head = (head);				  \
-	minios_list_empty(_head) ? NULL : minios_list_entry(_head->next, type, member); \
-})
-
-/*
- * Insert a new entry between two known consecutive entries. 
- *
- * This is only for internal list manipulation where we know
- * the prev/next entries already!
- */
-static __inline__ void __minios_list_add(struct minios_list_head * new,
-	struct minios_list_head * prev,
-	struct minios_list_head * next)
-{
-	next->prev = new;
-	new->next = next;
-	new->prev = prev;
-	prev->next = new;
-}
-
-/**
- * minios_list_add - add a new entry
- * @new: new entry to be added
- * @head: list head to add it after
- *
- * Insert a new entry after the specified head.
- * This is good for implementing stacks.
- */
-static __inline__ void minios_list_add(struct minios_list_head *new, struct minios_list_head *head)
-{
-	__minios_list_add(new, head, head->next);
-}
-
-/**
- * minios_list_add_tail - add a new entry
- * @new: new entry to be added
- * @head: list head to add it before
- *
- * Insert a new entry before the specified head.
- * This is useful for implementing queues.
- */
-static __inline__ void minios_list_add_tail(struct minios_list_head *new, struct minios_list_head *head)
-{
-	__minios_list_add(new, head->prev, head);
-}
-
-/*
- * Delete a list entry by making the prev/next entries
- * point to each other.
- *
- * This is only for internal list manipulation where we know
- * the prev/next entries already!
- */
-static __inline__ void __minios_list_del(struct minios_list_head * prev,
-				  struct minios_list_head * next)
-{
-	next->prev = prev;
-	prev->next = next;
-}
-
-/**
- * minios_list_del - deletes entry from list.
- * @entry: the element to delete from the list.
- * Note: minios_list_empty on entry does not return true after this, the entry is in an undefined state.
- */
-static __inline__ void minios_list_del(struct minios_list_head *entry)
-{
-	__minios_list_del(entry->prev, entry->next);
-}
-
-/**
- * minios_list_del_init - deletes entry from list and reinitialize it.
- * @entry: the element to delete from the list.
- */
-static __inline__ void minios_list_del_init(struct minios_list_head *entry)
-{
-	__minios_list_del(entry->prev, entry->next);
-	MINIOS_INIT_LIST_HEAD(entry); 
-}
-
-/**
- * minios_list_empty - tests whether a list is empty
- * @head: the list to test.
- */
-static __inline__ int minios_list_empty(struct minios_list_head *head)
-{
-	return head->next == head;
-}
-
-/**
- * minios_list_splice - join two lists
- * @list: the new list to add.
- * @head: the place to add it in the first list.
- */
-static __inline__ void minios_list_splice(struct minios_list_head *list, struct minios_list_head *head)
-{
-	struct minios_list_head *first = list->next;
-
-	if (first != list) {
-		struct minios_list_head *last = list->prev;
-		struct minios_list_head *at = head->next;
-
-		first->prev = head;
-		head->next = first;
-
-		last->next = at;
-		at->prev = last;
-	}
-}
-
-/**
- * minios_list_entry - get the struct for this entry
- * @ptr:	the &struct minios_list_head pointer.
- * @type:	the type of the struct this is embedded in.
- * @member:	the name of the minios_list_struct within the struct.
- */
-#define minios_list_entry(ptr, type, member) \
-	((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
-
-/**
- * minios_list_for_each	-	iterate over a list
- * @pos:	the &struct minios_list_head to use as a loop counter.
- * @head:	the head for your list.
- */
-#define minios_list_for_each(pos, head) \
-	for (pos = (head)->next; pos != (head); pos = pos->next)
-        	
-/**
- * minios_list_for_each_safe	-	iterate over a list safe against removal of list entry
- * @pos:	the &struct minios_list_head to use as a loop counter.
- * @n:		another &struct minios_list_head to use as temporary storage
- * @head:	the head for your list.
- */
-#define minios_list_for_each_safe(pos, n, head) \
-	for (pos = (head)->next, n = pos->next; pos != (head); \
-		pos = n, n = pos->next)
-
-/**
- * minios_list_for_each_entry	-	iterate over list of given type
- * @pos:	the type * to use as a loop counter.
- * @head:	the head for your list.
- * @member:	the name of the minios_list_struct within the struct.
- */
-#define minios_list_for_each_entry(pos, head, member)				\
-	for (pos = minios_list_entry((head)->next, typeof(*pos), member);	\
-	     &pos->member != (head); 					\
-	     pos = minios_list_entry(pos->member.next, typeof(*pos), member))
-
-/**
- * minios_list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
- * @pos:	the type * to use as a loop counter.
- * @n:		another type * to use as temporary storage
- * @head:	the head for your list.
- * @member:	the name of the minios_list_struct within the struct.
- */
-#define minios_list_for_each_entry_safe(pos, n, head, member)			\
-	for (pos = minios_list_entry((head)->next, typeof(*pos), member),	\
-		n = minios_list_entry(pos->member.next, typeof(*pos), member);	\
-	     &pos->member != (head); 					\
-	     pos = n, n = minios_list_entry(n->member.next, typeof(*n), member))
-#endif /* _LINUX_LIST_H */
-
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/include/sched.h
--- a/extras/mini-os/include/sched.h	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/include/sched.h	Tue Jan 31 16:06:14 2012 +0000
@@ -19,7 +19,7 @@
 #else /* !defined(__ia64__) */
     thread_regs_t regs;
 #endif /* !defined(__ia64__) */
-    struct minios_list_head thread_list;
+    MINIOS_TAILQ_ENTRY(struct thread) thread_list;
     uint32_t flags;
     s_time_t wakeup_time;
 #ifdef HAVE_LIBC
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/include/semaphore.h
--- a/extras/mini-os/include/semaphore.h	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/include/semaphore.h	Tue Jan 31 16:06:14 2012 +0000
@@ -21,7 +21,6 @@
 struct rw_semaphore {
 	signed long		count;
 	spinlock_t		wait_lock;
-	struct minios_list_head	wait_list;
 	int			debug;
 };
 
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/include/wait.h
--- a/extras/mini-os/include/wait.h	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/include/wait.h	Tue Jan 31 16:06:14 2012 +0000
@@ -5,47 +5,47 @@
 #include <mini-os/os.h>
 #include <mini-os/waittypes.h>
 
-#define DEFINE_WAIT(name)                               \
-struct wait_queue name = {                              \
-    .thread       = get_current(),                            \
-    .thread_list  = MINIOS_LIST_HEAD_INIT((name).thread_list), \
+#define DEFINE_WAIT(name)                          \
+struct wait_queue name = {                         \
+    .thread       = get_current(),                 \
+    .waiting      = 0,                             \
 }
 
 
 static inline void init_waitqueue_head(struct wait_queue_head *h)
 {
-  MINIOS_INIT_LIST_HEAD(&h->thread_list);
+    MINIOS_STAILQ_INIT(h);
 }
 
 static inline void init_waitqueue_entry(struct wait_queue *q, struct thread *thread)
 {
     q->thread = thread;
-    MINIOS_INIT_LIST_HEAD(&q->thread_list);
+    q->waiting = 0;
 }
 
-
 static inline void add_wait_queue(struct wait_queue_head *h, struct wait_queue *q)
 {
-    if (minios_list_empty(&q->thread_list))
-        minios_list_add(&q->thread_list, &h->thread_list);   
+    if (!q->waiting) {
+        MINIOS_STAILQ_INSERT_HEAD(h, q, thread_list);
+        q->waiting = 1;
+    }
 }
 
-static inline void remove_wait_queue(struct wait_queue *q)
+static inline void remove_wait_queue(struct wait_queue_head *h, struct wait_queue *q)
 {
-    minios_list_del(&q->thread_list);
+    if (q->waiting) {
+        MINIOS_STAILQ_REMOVE(h, q, struct wait_queue, thread_list);
+        q->waiting = 0;
+    }
 }
 
 static inline void wake_up(struct wait_queue_head *head)
 {
     unsigned long flags;
-    struct minios_list_head *tmp, *next;
+    struct wait_queue *curr, *tmp;
     local_irq_save(flags);
-    minios_list_for_each_safe(tmp, next, &head->thread_list)
-    {
-         struct wait_queue *curr;
-         curr = minios_list_entry(tmp, struct wait_queue, thread_list);
+    MINIOS_STAILQ_FOREACH_SAFE(curr, head, thread_list, tmp)
          wake(curr->thread);
-    }
     local_irq_restore(flags);
 }
 
@@ -57,11 +57,11 @@
     local_irq_restore(flags);   \
 } while (0)
 
-#define remove_waiter(w) do {   \
-    unsigned long flags;        \
-    local_irq_save(flags);      \
-    remove_wait_queue(&w);      \
-    local_irq_restore(flags);   \
+#define remove_waiter(w, wq) do {  \
+    unsigned long flags;           \
+    local_irq_save(flags);         \
+    remove_wait_queue(&wq, &w);    \
+    local_irq_restore(flags);      \
 } while (0)
 
 #define wait_event_deadline(wq, condition, deadline) do {       \
@@ -84,7 +84,7 @@
     local_irq_save(flags);                                      \
     /* need to wake up */                                       \
     wake(get_current());                                        \
-    remove_wait_queue(&__wait);                                 \
+    remove_wait_queue(&wq, &__wait);                            \
     local_irq_restore(flags);                                   \
 } while(0) 
 
@@ -93,3 +93,13 @@
 
 
 #endif /* __WAIT_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/include/waittypes.h
--- a/extras/mini-os/include/waittypes.h	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/include/waittypes.h	Tue Jan 31 16:06:14 2012 +0000
@@ -6,21 +6,27 @@
 struct thread;
 struct wait_queue
 {
+    int waiting;
     struct thread *thread;
-    struct minios_list_head thread_list;
+    MINIOS_STAILQ_ENTRY(struct wait_queue) thread_list;
 };
 
-struct wait_queue_head
-{
-    /* TODO - lock required? */
-    struct minios_list_head thread_list;
-};
+/* TODO - lock required? */
+MINIOS_STAILQ_HEAD(wait_queue_head, struct wait_queue);
 
 #define DECLARE_WAIT_QUEUE_HEAD(name) \
-   struct wait_queue_head name =     \
-        { .thread_list = { &(name).thread_list, &(name).thread_list} }
+    struct wait_queue_head name = MINIOS_STAILQ_HEAD_INITIALIZER(name)
 
-#define __WAIT_QUEUE_HEAD_INITIALIZER(name) {                           \
-    .thread_list      = { &(name).thread_list, &(name).thread_list } }
+#define __WAIT_QUEUE_HEAD_INITIALIZER(name) MINIOS_STAILQ_HEAD_INITIALIZER(name)
 
 #endif
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/lib/sys.c
--- a/extras/mini-os/lib/sys.c	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/lib/sys.c	Tue Jan 31 16:06:14 2012 +0000
@@ -234,7 +234,7 @@
                     break;
                 schedule();
             }
-            remove_waiter(w);
+            remove_waiter(w, console_queue);
             return ret;
         }
 #ifdef HAVE_LWIP
@@ -705,12 +705,12 @@
     fd_set myread, mywrite, myexcept;
     struct thread *thread = get_current();
     s_time_t start = NOW(), stop;
-    DEFINE_WAIT(w1);
-    DEFINE_WAIT(w2);
-    DEFINE_WAIT(w3);
-    DEFINE_WAIT(w4);
-    DEFINE_WAIT(w5);
-    DEFINE_WAIT(w6);
+    DEFINE_WAIT(netfront_w);
+    DEFINE_WAIT(event_w);
+    DEFINE_WAIT(blkfront_w);
+    DEFINE_WAIT(xenbus_watch_w);
+    DEFINE_WAIT(kbdfront_w);
+    DEFINE_WAIT(console_w);
 
     assert(thread == main_thread);
 
@@ -727,12 +727,12 @@
     /* Tell people we're going to sleep before looking at what they are
      * saying, hence letting them wake us if events happen between here and
      * schedule() */
-    add_waiter(w1, netfront_queue);
-    add_waiter(w2, event_queue);
-    add_waiter(w3, blkfront_queue);
-    add_waiter(w4, xenbus_watch_queue);
-    add_waiter(w5, kbdfront_queue);
-    add_waiter(w6, console_queue);
+    add_waiter(netfront_w, netfront_queue);
+    add_waiter(event_w, event_queue);
+    add_waiter(blkfront_w, blkfront_queue);
+    add_waiter(xenbus_watch_w, xenbus_watch_queue);
+    add_waiter(kbdfront_w, kbdfront_queue);
+    add_waiter(console_w, console_queue);
 
     if (readfds)
         myread = *readfds;
@@ -814,12 +814,12 @@
     ret = -1;
 
 out:
-    remove_waiter(w1);
-    remove_waiter(w2);
-    remove_waiter(w3);
-    remove_waiter(w4);
-    remove_waiter(w5);
-    remove_waiter(w6);
+    remove_waiter(netfront_w, netfront_queue);
+    remove_waiter(event_w, event_queue);
+    remove_waiter(blkfront_w, blkfront_queue);
+    remove_waiter(xenbus_watch_w, xenbus_watch_queue);
+    remove_waiter(kbdfront_w, kbdfront_queue);
+    remove_waiter(console_w, console_queue);
     return ret;
 }
 
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/lib/xmalloc.c
--- a/extras/mini-os/lib/xmalloc.c	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/lib/xmalloc.c	Tue Jan 31 16:06:14 2012 +0000
@@ -44,16 +44,18 @@
 #include <mini-os/xmalloc.h>
 
 #ifndef HAVE_LIBC
-static MINIOS_LIST_HEAD(freelist);
 /* static spinlock_t freelist_lock = SPIN_LOCK_UNLOCKED; */
 
 struct xmalloc_hdr
 {
     /* Total including this hdr, unused padding and second hdr. */
     size_t size;
-    struct minios_list_head freelist;
+    MINIOS_TAILQ_ENTRY(struct xmalloc_hdr) freelist;
 } __cacheline_aligned;
 
+static MINIOS_TAILQ_HEAD(,struct xmalloc_hdr) freelist =
+	MINIOS_TAILQ_HEAD_INITIALIZER(freelist);
+
 /* Unused padding data between the two hdrs. */
 
 struct xmalloc_pad
@@ -82,7 +84,7 @@
         extra = (struct xmalloc_hdr *)((unsigned long)hdr + size);
         extra->size = leftover;
         /* spin_lock_irqsave(&freelist_lock, flags); */
-        minios_list_add(&extra->freelist, &freelist);
+        MINIOS_TAILQ_INSERT_HEAD(&freelist, extra, freelist);
         /* spin_unlock_irqrestore(&freelist_lock, flags); */
     }
     else
@@ -91,8 +93,6 @@
     }
 
     hdr->size = size;
-    /* Debugging aid. */
-    hdr->freelist.next = hdr->freelist.prev = NULL;
 }
 
 static struct xmalloc_hdr *xmalloc_new_page(size_t size)
@@ -128,8 +128,6 @@
         return NULL;
 
     hdr->size = (1UL << (pageorder + PAGE_SHIFT));
-    /* Debugging aid. */
-    hdr->freelist.next = hdr->freelist.prev = NULL;
 
     ret = (char*)hdr + hdr_size;
     pad = (struct xmalloc_pad *) ret - 1;
@@ -155,14 +153,14 @@
 
     /* Search free list. */
     /* spin_lock_irqsave(&freelist_lock, flags); */
-    minios_list_for_each_entry_safe( i, tmp, &freelist, freelist )
+    MINIOS_TAILQ_FOREACH_SAFE(i, &freelist, freelist, tmp)
     {
         data_begin = align_up((uintptr_t)i + hdr_size, align);
 
         if ( data_begin + size > (uintptr_t)i + i->size )
             continue;
 
-        minios_list_del(&i->freelist);
+        MINIOS_TAILQ_REMOVE(&freelist, i, freelist);
         /* spin_unlock_irqrestore(&freelist_lock, flags); */
 
         uintptr_t size_before = (data_begin - hdr_size) - (uintptr_t)i;
@@ -173,7 +171,7 @@
             new_i->size = i->size - size_before;
             i->size = size_before;
             /* spin_lock_irqsave(&freelist_lock, flags); */
-            minios_list_add(&i->freelist, &freelist);
+            MINIOS_TAILQ_INSERT_HEAD(&freelist, i, freelist);
             /* spin_unlock_irqrestore(&freelist_lock, flags); */
             i = new_i;
         }
@@ -224,16 +222,9 @@
         *(int*)0=0;
     }
 
-    /* Not previously freed. */
-    if(hdr->freelist.next || hdr->freelist.prev)
-    {
-        printk("Should not be previously freed\n");
-        *(int*)0=0;
-    }
-
     /* Merge with other free block, or put in list. */
     /* spin_lock_irqsave(&freelist_lock, flags); */
-    minios_list_for_each_entry_safe( i, tmp, &freelist, freelist )
+    MINIOS_TAILQ_FOREACH_SAFE(i, &freelist, freelist, tmp)
     {
         unsigned long _i   = (unsigned long)i;
         unsigned long _hdr = (unsigned long)hdr;
@@ -245,7 +236,7 @@
         /* We follow this block?  Swallow it. */
         if ( (_i + i->size) == _hdr )
         {
-            minios_list_del(&i->freelist);
+            MINIOS_TAILQ_REMOVE(&freelist, i, freelist);
             i->size += hdr->size;
             hdr = i;
         }
@@ -253,7 +244,7 @@
         /* We precede this block? Swallow it. */
         if ( (_hdr + hdr->size) == _i )
         {
-            minios_list_del(&i->freelist);
+            MINIOS_TAILQ_REMOVE(&freelist, i, freelist);
             hdr->size += i->size;
         }
     }
@@ -270,7 +261,7 @@
     }
     else
     {
-        minios_list_add(&hdr->freelist, &freelist);
+        MINIOS_TAILQ_INSERT_HEAD(&freelist, hdr, freelist);
     }
 
     /* spin_unlock_irqrestore(&freelist_lock, flags); */
@@ -306,3 +297,13 @@
     return new;
 }
 #endif
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/sched.c
--- a/extras/mini-os/sched.c	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/sched.c	Tue Jan 31 16:06:14 2012 +0000
@@ -54,19 +54,20 @@
 #define DEBUG(_f, _a...)    ((void)0)
 #endif
 
+MINIOS_TAILQ_HEAD(thread_list, struct thread);
+
 struct thread *idle_thread = NULL;
-MINIOS_LIST_HEAD(exited_threads);
+static struct thread_list exited_threads = MINIOS_TAILQ_HEAD_INITIALIZER(exited_threads);
+static struct thread_list thread_list = MINIOS_TAILQ_HEAD_INITIALIZER(thread_list);
 static int threads_started;
 
 struct thread *main_thread;
 
 void inline print_runqueue(void)
 {
-    struct minios_list_head *it;
     struct thread *th;
-    minios_list_for_each(it, &idle_thread->thread_list)
+    MINIOS_TAILQ_FOREACH(th, &thread_list, thread_list)
     {
-        th = minios_list_entry(it, struct thread, thread_list);
         printk("   Thread \"%s\", runnable=%d\n", th->name, is_runnable(th));
     }
     printk("\n");
@@ -74,8 +75,7 @@
 
 void schedule(void)
 {
-    struct thread *prev, *next, *thread;
-    struct minios_list_head *iterator, *next_iterator;
+    struct thread *prev, *next, *thread, *tmp;
     unsigned long flags;
 
     prev = current;
@@ -96,10 +96,9 @@
            time when the next timeout expires, else use 10 seconds. */
         s_time_t now = NOW();
         s_time_t min_wakeup_time = now + SECONDS(10);
-        next = NULL;   
-        minios_list_for_each_safe(iterator, next_iterator, &idle_thread->thread_list)
+        next = NULL;
+        MINIOS_TAILQ_FOREACH_SAFE(thread, &thread_list, thread_list, tmp)
         {
-            thread = minios_list_entry(iterator, struct thread, thread_list);
             if (!is_runnable(thread) && thread->wakeup_time != 0LL)
             {
                 if (thread->wakeup_time <= now)
@@ -111,8 +110,8 @@
             {
                 next = thread;
                 /* Put this thread on the end of the list */
-                minios_list_del(&thread->thread_list);
-                minios_list_add_tail(&thread->thread_list, &idle_thread->thread_list);
+                MINIOS_TAILQ_REMOVE(&thread_list, thread, thread_list);
+                MINIOS_TAILQ_INSERT_TAIL(&thread_list, thread, thread_list);
                 break;
             }
         }
@@ -128,12 +127,11 @@
        inturrupted at the return instruction. And therefore at safe point. */
     if(prev != next) switch_threads(prev, next);
 
-    minios_list_for_each_safe(iterator, next_iterator, &exited_threads)
+    MINIOS_TAILQ_FOREACH_SAFE(thread, &exited_threads, thread_list, tmp)
     {
-        thread = minios_list_entry(iterator, struct thread, thread_list);
         if(thread != prev)
         {
-            minios_list_del(&thread->thread_list);
+            MINIOS_TAILQ_REMOVE(&exited_threads, thread, thread_list);
             free_pages(thread->stack, STACK_SIZE_PAGE_ORDER);
             xfree(thread);
         }
@@ -154,13 +152,7 @@
 #endif
     set_runnable(thread);
     local_irq_save(flags);
-    if(idle_thread != NULL) {
-        minios_list_add_tail(&thread->thread_list, &idle_thread->thread_list); 
-    } else if(function != idle_thread_fn)
-    {
-        printk("BUG: Not allowed to create thread before initialising scheduler.\n");
-        BUG();
-    }
+    MINIOS_TAILQ_INSERT_TAIL(&thread_list, thread, thread_list);
     local_irq_restore(flags);
     return thread;
 }
@@ -208,10 +200,10 @@
     printk("Thread \"%s\" exited.\n", thread->name);
     local_irq_save(flags);
     /* Remove from the thread list */
-    minios_list_del(&thread->thread_list);
+    MINIOS_TAILQ_REMOVE(&thread_list, thread, thread_list);
     clear_runnable(thread);
     /* Put onto exited list */
-    minios_list_add(&thread->thread_list, &exited_threads);
+    MINIOS_TAILQ_INSERT_HEAD(&exited_threads, thread, thread_list);
     local_irq_restore(flags);
     /* Schedule will free the resources */
     while(1)
@@ -296,6 +288,14 @@
     _REENT_INIT_PTR((&callback_reent))
 #endif
     idle_thread = create_thread("Idle", idle_thread_fn, NULL);
-    MINIOS_INIT_LIST_HEAD(&idle_thread->thread_list);
 }
 
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 6c9a73817770 -r 934c14ab9f19 extras/mini-os/xenbus/xenbus.c
--- a/extras/mini-os/xenbus/xenbus.c	Tue Jan 31 11:39:37 2012 +0000
+++ b/extras/mini-os/xenbus/xenbus.c	Tue Jan 31 16:06:14 2012 +0000
@@ -85,7 +85,7 @@
         add_waiter(w, xenbus_watch_queue);
         schedule();
     }
-    remove_waiter(w);
+    remove_waiter(w, xenbus_watch_queue);
     *queue = event->next;
     return &event->path;
 }
@@ -441,7 +441,7 @@
     xb_write(type, id, trans, io, nr_reqs);
 
     schedule();
-    remove_waiter(w);
+    remove_waiter(w, req_info[id].waitq);
     wake(current);
 
     rep = req_info[id].reply;
diff -r 6c9a73817770 -r 934c14ab9f19 tools/include/xen-external/README
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/include/xen-external/README	Tue Jan 31 16:06:14 2012 +0000
@@ -0,0 +1,24 @@
+WARNING - DO NOT EDIT THINGS IN THIS DIRECTORY
+----------------------------------------------
+
+These files were obtained elsewhere and should only be updated by
+copying new versions from the source location, as documented below:
+
+bsd-COPYRIGHT
+bsd-sys-queue.h
+bsd-queue.3
+
+  Obtained from the FreeBSD SVN using the following commands:
+    svn co -r 221843 svn://svn.freebsd.org/base/head/sys/sys/
+    svn co -r 221843 svn://svn.freebsd.org/base/head/share/man/man3
+    svn cat -r 221843 http://svn.freebsd.org/base/head/COPYRIGHT >tools/libxl/external/bsd-COPYRIGHT
+
+Exceptions:
+
+README
+
+  This file
+
+bsd-sys-queue-h-seddery
+
+  Script to transform the above into a new namespace.
diff -r 6c9a73817770 -r 934c14ab9f19 tools/include/xen-external/bsd-COPYRIGHT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/include/xen-external/bsd-COPYRIGHT	Tue Jan 31 16:06:14 2012 +0000
@@ -0,0 +1,126 @@
+# $FreeBSD$
+#	@(#)COPYRIGHT	8.2 (Berkeley) 3/21/94
+
+The compilation of software known as FreeBSD is distributed under the
+following terms:
+
+Copyright (c) 1992-2011 The FreeBSD Project. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+The 4.4BSD and 4.4BSD-Lite software is distributed under the following
+terms:
+
+All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite
+Releases is copyrighted by The Regents of the University of California.
+
+Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
+	The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+This product includes software developed by the University of
+California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+The Institute of Electrical and Electronics Engineers and the American
+National Standards Committee X3, on Information Processing Systems have
+given us permission to reprint portions of their documentation.
+
+In the following statement, the phrase ``this text'' refers to portions
+of the system documentation.
+
+Portions of this text are reprinted and reproduced in electronic form in
+the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE
+Standard Portable Operating System Interface for Computer Environments
+(POSIX), copyright C 1988 by the Institute of Electrical and Electronics
+Engineers, Inc.  In the event of any discrepancy between these versions
+and the original IEEE Standard, the original IEEE Standard is the referee
+document.
+
+In the following statement, the phrase ``This material'' refers to portions
+of the system documentation.
+
+This material is reproduced with permission from American National
+Standards Committee X3, on Information Processing Systems.  Computer and
+Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
+Suite 500, Washington, DC 20001-2178.  The developmental work of
+Programming Language C was completed by the X3J11 Technical Committee.
+
+The views and conclusions contained in the software and documentation are
+those of the authors and should not be interpreted as representing official
+policies, either expressed or implied, of the Regents of the University
+of California.
+
+
+NOTE: The copyright of UC Berkeley's Berkeley Software Distribution ("BSD")
+source has been updated.  The copyright addendum may be found at
+ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change and is
+included below.
+
+July 22, 1999
+
+To All Licensees, Distributors of Any Version of BSD:
+
+As you know, certain of the Berkeley Software Distribution ("BSD") source
+code files require that further distributions of products containing all or
+portions of the software, acknowledge within their advertising materials
+that such products contain software developed by UC Berkeley and its
+contributors.
+
+Specifically, the provision reads:
+
+"     * 3. All advertising materials mentioning features or use of this software
+      *    must display the following acknowledgement:
+      *    This product includes software developed by the University of
+      *    California, Berkeley and its contributors."
+
+Effective immediately, licensees and distributors are no longer required to
+include the acknowledgement within advertising materials.  Accordingly, the
+foregoing paragraph of those BSD Unix files containing it is hereby deleted
+in its entirety.
+
+William Hoskins
+Director, Office of Technology Licensing
+University of California, Berkeley
diff -r 6c9a73817770 -r 934c14ab9f19 tools/include/xen-external/bsd-queue.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/include/xen-external/bsd-queue.3	Tue Jan 31 16:06:14 2012 +0000
@@ -0,0 +1,1044 @@
+.\" Copyright (c) 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	@(#)queue.3	8.2 (Berkeley) 1/24/94
+.\" $FreeBSD$
+.\"
+.Dd May 13, 2011
+.Dt QUEUE 3
+.Os
+.Sh NAME
+.Nm SLIST_EMPTY ,
+.Nm SLIST_ENTRY ,
+.Nm SLIST_FIRST ,
+.Nm SLIST_FOREACH ,
+.Nm SLIST_FOREACH_SAFE ,
+.Nm SLIST_HEAD ,
+.Nm SLIST_HEAD_INITIALIZER ,
+.Nm SLIST_INIT ,
+.Nm SLIST_INSERT_AFTER ,
+.Nm SLIST_INSERT_HEAD ,
+.Nm SLIST_NEXT ,
+.Nm SLIST_REMOVE_AFTER ,
+.Nm SLIST_REMOVE_HEAD ,
+.Nm SLIST_REMOVE ,
+.Nm SLIST_SWAP ,
+.Nm STAILQ_CONCAT ,
+.Nm STAILQ_EMPTY ,
+.Nm STAILQ_ENTRY ,
+.Nm STAILQ_FIRST ,
+.Nm STAILQ_FOREACH ,
+.Nm STAILQ_FOREACH_SAFE ,
+.Nm STAILQ_HEAD ,
+.Nm STAILQ_HEAD_INITIALIZER ,
+.Nm STAILQ_INIT ,
+.Nm STAILQ_INSERT_AFTER ,
+.Nm STAILQ_INSERT_HEAD ,
+.Nm STAILQ_INSERT_TAIL ,
+.Nm STAILQ_LAST ,
+.Nm STAILQ_NEXT ,
+.Nm STAILQ_REMOVE_AFTER ,
+.Nm STAILQ_REMOVE_HEAD ,
+.Nm STAILQ_REMOVE ,
+.Nm STAILQ_SWAP ,
+.Nm LIST_EMPTY ,
+.Nm LIST_ENTRY ,
+.Nm LIST_FIRST ,
+.Nm LIST_FOREACH ,
+.Nm LIST_FOREACH_SAFE ,
+.Nm LIST_HEAD ,
+.Nm LIST_HEAD_INITIALIZER ,
+.Nm LIST_INIT ,
+.Nm LIST_INSERT_AFTER ,
+.Nm LIST_INSERT_BEFORE ,
+.Nm LIST_INSERT_HEAD ,
+.Nm LIST_NEXT ,
+.Nm LIST_REMOVE ,
+.Nm LIST_SWAP ,
+.Nm TAILQ_CONCAT ,
+.Nm TAILQ_EMPTY ,
+.Nm TAILQ_ENTRY ,
+.Nm TAILQ_FIRST ,
+.Nm TAILQ_FOREACH ,
+.Nm TAILQ_FOREACH_SAFE ,
+.Nm TAILQ_FOREACH_REVERSE ,
+.Nm TAILQ_FOREACH_REVERSE_SAFE ,
+.Nm TAILQ_HEAD ,
+.Nm TAILQ_HEAD_INITIALIZER ,
+.Nm TAILQ_INIT ,
+.Nm TAILQ_INSERT_AFTER ,
+.Nm TAILQ_INSERT_BEFORE ,
+.Nm TAILQ_INSERT_HEAD ,
+.Nm TAILQ_INSERT_TAIL ,
+.Nm TAILQ_LAST ,
+.Nm TAILQ_NEXT ,
+.Nm TAILQ_PREV ,
+.Nm TAILQ_REMOVE ,
+.Nm TAILQ_SWAP
+.Nd implementations of singly-linked lists, singly-linked tail queues,
+lists and tail queues
+.Sh SYNOPSIS
+.In sys/queue.h
+.\"
+.Fn SLIST_EMPTY "SLIST_HEAD *head"
+.Fn SLIST_ENTRY "TYPE"
+.Fn SLIST_FIRST "SLIST_HEAD *head"
+.Fn SLIST_FOREACH "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME"
+.Fn SLIST_FOREACH_SAFE "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME" "TYPE *temp_var"
+.Fn SLIST_HEAD "HEADNAME" "TYPE"
+.Fn SLIST_HEAD_INITIALIZER "SLIST_HEAD head"
+.Fn SLIST_INIT "SLIST_HEAD *head"
+.Fn SLIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_INSERT_HEAD "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_NEXT "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
+.Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
+.\"
+.Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
+.Fn STAILQ_EMPTY "STAILQ_HEAD *head"
+.Fn STAILQ_ENTRY "TYPE"
+.Fn STAILQ_FIRST "STAILQ_HEAD *head"
+.Fn STAILQ_FOREACH "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
+.Fn STAILQ_FOREACH_SAFE "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME" "TYPE *temp_var"
+.Fn STAILQ_HEAD "HEADNAME" "TYPE"
+.Fn STAILQ_HEAD_INITIALIZER "STAILQ_HEAD head"
+.Fn STAILQ_INIT "STAILQ_HEAD *head"
+.Fn STAILQ_INSERT_AFTER "STAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_INSERT_HEAD "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_INSERT_TAIL "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME"
+.Fn STAILQ_NEXT "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE_AFTER "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE_HEAD "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
+.Fn STAILQ_SWAP "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" "STAILQ_ENTRY NAME"
+.\"
+.Fn LIST_EMPTY "LIST_HEAD *head"
+.Fn LIST_ENTRY "TYPE"
+.Fn LIST_FIRST "LIST_HEAD *head"
+.Fn LIST_FOREACH "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME"
+.Fn LIST_FOREACH_SAFE "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME" "TYPE *temp_var"
+.Fn LIST_HEAD "HEADNAME" "TYPE"
+.Fn LIST_HEAD_INITIALIZER "LIST_HEAD head"
+.Fn LIST_INIT "LIST_HEAD *head"
+.Fn LIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_INSERT_HEAD "LIST_HEAD *head" "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_NEXT "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_REMOVE "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_SWAP "LIST_HEAD *head1" "LIST_HEAD *head2" "TYPE" "LIST_ENTRY NAME"
+.\"
+.Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME"
+.Fn TAILQ_EMPTY "TAILQ_HEAD *head"
+.Fn TAILQ_ENTRY "TYPE"
+.Fn TAILQ_FIRST "TAILQ_HEAD *head"
+.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME"
+.Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME"
+.Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+.Fn TAILQ_HEAD "HEADNAME" "TYPE"
+.Fn TAILQ_HEAD_INITIALIZER "TAILQ_HEAD head"
+.Fn TAILQ_INIT "TAILQ_HEAD *head"
+.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_INSERT_HEAD "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_INSERT_TAIL "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_LAST "TAILQ_HEAD *head" "HEADNAME"
+.Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME"
+.Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME"
+.\"
+.Sh DESCRIPTION
+These macros define and operate on four types of data structures:
+singly-linked lists, singly-linked tail queues, lists, and tail queues.
+All four structures support the following functionality:
+.Bl -enum -compact -offset indent
+.It
+Insertion of a new entry at the head of the list.
+.It
+Insertion of a new entry after any element in the list.
+.It
+O(1) removal of an entry from the head of the list.
+.It
+Forward traversal through the list.
+.It
+Swawpping the contents of two lists.
+.El
+.Pp
+Singly-linked lists are the simplest of the four data structures
+and support only the above functionality.
+Singly-linked lists are ideal for applications with large datasets
+and few or no removals,
+or for implementing a LIFO queue.
+Singly-linked lists add the following functionality:
+.Bl -enum -compact -offset indent
+.It
+O(n) removal of any entry in the list.
+.El
+.Pp
+Singly-linked tail queues add the following functionality:
+.Bl -enum -compact -offset indent
+.It
+Entries can be added at the end of a list.
+.It
+O(n) removal of any entry in the list.
+.It
+They may be concatenated.
+.El
+However:
+.Bl -enum -compact -offset indent
+.It
+All list insertions must specify the head of the list.
+.It
+Each head entry requires two pointers rather than one.
+.It
+Code size is about 15% greater and operations run about 20% slower
+than singly-linked lists.
+.El
+.Pp
+Singly-linked tailqs are ideal for applications with large datasets and
+few or no removals,
+or for implementing a FIFO queue.
+.Pp
+All doubly linked types of data structures (lists and tail queues)
+additionally allow:
+.Bl -enum -compact -offset indent
+.It
+Insertion of a new entry before any element in the list.
+.It
+O(1) removal of any entry in the list.
+.El
+However:
+.Bl -enum -compact -offset indent
+.It
+Each element requires two pointers rather than one.
+.It
+Code size and execution time of operations (except for removal) is about
+twice that of the singly-linked data-structures.
+.El
+.Pp
+Linked lists are the simplest of the doubly linked data structures and support
+only the above functionality over singly-linked lists.
+.Pp
+Tail queues add the following functionality:
+.Bl -enum -compact -offset indent
+.It
+Entries can be added at the end of a list.
+.It
+They may be traversed backwards, from tail to head.
+.It
+They may be concatenated.
+.El
+However:
+.Bl -enum -compact -offset indent
+.It
+All list insertions and removals must specify the head of the list.
+.It
+Each head entry requires two pointers rather than one.
+.It
+Code size is about 15% greater and operations run about 20% slower
+than singly-linked lists.
+.El
+.Pp
+In the macro definitions,
+.Fa TYPE
+is the name of a user defined structure,
+that must contain a field of type
+.Li SLIST_ENTRY ,
+.Li STAILQ_ENTRY ,
+.Li LIST_ENTRY ,
+or
+.Li TAILQ_ENTRY ,
+named
+.Fa NAME .
+The argument
+.Fa HEADNAME
+is the name of a user defined structure that must be declared
+using the macros
+.Li SLIST_HEAD ,
+.Li STAILQ_HEAD ,
+.Li LIST_HEAD ,
+or
+.Li TAILQ_HEAD .
+See the examples below for further explanation of how these
+macros are used.
+.Sh SINGLY-LINKED LISTS
+A singly-linked list is headed by a structure defined by the
+.Nm SLIST_HEAD
+macro.
+This structure contains a single pointer to the first element
+on the list.
+The elements are singly linked for minimum space and pointer manipulation
+overhead at the expense of O(n) removal for arbitrary elements.
+New elements can be added to the list after an existing element or
+at the head of the list.
+An
+.Fa SLIST_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+SLIST_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Fa HEADNAME
+is the name of the structure to be defined, and
+.Fa TYPE
+is the type of the elements to be linked into the list.
+A pointer to the head of the list can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm SLIST_HEAD_INITIALIZER
+evaluates to an initializer for the list
+.Fa head .
+.Pp
+The macro
+.Nm SLIST_EMPTY
+evaluates to true if there are no elements in the list.
+.Pp
+The macro
+.Nm SLIST_ENTRY
+declares a structure that connects the elements in
+the list.
+.Pp
+The macro
+.Nm SLIST_FIRST
+returns the first element in the list or NULL if the list is empty.
+.Pp
+The macro
+.Nm SLIST_FOREACH
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in
+turn to
+.Fa var .
+.Pp
+The macro
+.Nm SLIST_FOREACH_SAFE
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in
+turn to
+.Fa var .
+However, unlike
+.Fn SLIST_FOREACH
+here it is permitted to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm SLIST_INIT
+initializes the list referenced by
+.Fa head .
+.Pp
+The macro
+.Nm SLIST_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the list.
+.Pp
+The macro
+.Nm SLIST_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm SLIST_NEXT
+returns the next element in the list.
+.Pp
+The macro
+.Nm SLIST_REMOVE_AFTER
+removes the element after
+.Fa elm
+from the list. Unlike
+.Fa SLIST_REMOVE ,
+this macro does not traverse the entire list.
+.Pp
+The macro
+.Nm SLIST_REMOVE_HEAD
+removes the element
+.Fa elm
+from the head of the list.
+For optimum efficiency,
+elements being removed from the head of the list should explicitly use
+this macro instead of the generic
+.Fa SLIST_REMOVE
+macro.
+.Pp
+The macro
+.Nm SLIST_REMOVE
+removes the element
+.Fa elm
+from the list.
+.Pp
+The macro
+.Nm SLIST_SWAP
+swaps the contents of
+.Fa head1
+and
+.Fa head2 .
+.Sh SINGLY-LINKED LIST EXAMPLE
+.Bd -literal
+SLIST_HEAD(slisthead, entry) head =
+    SLIST_HEAD_INITIALIZER(head);
+struct slisthead *headp;		/* Singly-linked List head. */
+struct entry {
+	...
+	SLIST_ENTRY(entry) entries;	/* Singly-linked List. */
+	...
+} *n1, *n2, *n3, *np;
+
+SLIST_INIT(&head);			/* Initialize the list. */
+
+n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
+SLIST_INSERT_HEAD(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry));	/* Insert after. */
+SLIST_INSERT_AFTER(n1, n2, entries);
+
+SLIST_REMOVE(&head, n2, entry, entries);/* Deletion. */
+free(n2);
+
+n3 = SLIST_FIRST(&head);
+SLIST_REMOVE_HEAD(&head, entries);	/* Deletion from the head. */
+free(n3);
+					/* Forward traversal. */
+SLIST_FOREACH(np, &head, entries)
+	np-> ...
+					/* Safe forward traversal. */
+SLIST_FOREACH_SAFE(np, &head, entries, np_temp) {
+	np->do_stuff();
+	...
+	SLIST_REMOVE(&head, np, entry, entries);
+	free(np);
+}
+
+while (!SLIST_EMPTY(&head)) {		/* List Deletion. */
+	n1 = SLIST_FIRST(&head);
+	SLIST_REMOVE_HEAD(&head, entries);
+	free(n1);
+}
+.Ed
+.Sh SINGLY-LINKED TAIL QUEUES
+A singly-linked tail queue is headed by a structure defined by the
+.Nm STAILQ_HEAD
+macro.
+This structure contains a pair of pointers,
+one to the first element in the tail queue and the other to
+the last element in the tail queue.
+The elements are singly linked for minimum space and pointer
+manipulation overhead at the expense of O(n) removal for arbitrary
+elements.
+New elements can be added to the tail queue after an existing element,
+at the head of the tail queue, or at the end of the tail queue.
+A
+.Fa STAILQ_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+STAILQ_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Li HEADNAME
+is the name of the structure to be defined, and
+.Li TYPE
+is the type of the elements to be linked into the tail queue.
+A pointer to the head of the tail queue can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm STAILQ_HEAD_INITIALIZER
+evaluates to an initializer for the tail queue
+.Fa head .
+.Pp
+The macro
+.Nm STAILQ_CONCAT
+concatenates the tail queue headed by
+.Fa head2
+onto the end of the one headed by
+.Fa head1
+removing all entries from the former.
+.Pp
+The macro
+.Nm STAILQ_EMPTY
+evaluates to true if there are no items on the tail queue.
+.Pp
+The macro
+.Nm STAILQ_ENTRY
+declares a structure that connects the elements in
+the tail queue.
+.Pp
+The macro
+.Nm STAILQ_FIRST
+returns the first item on the tail queue or NULL if the tail queue
+is empty.
+.Pp
+The macro
+.Nm STAILQ_FOREACH
+traverses the tail queue referenced by
+.Fa head
+in the forward direction, assigning each element
+in turn to
+.Fa var .
+.Pp
+The macro
+.Nm STAILQ_FOREACH_SAFE
+traverses the tail queue referenced by
+.Fa head
+in the forward direction, assigning each element
+in turn to
+.Fa var .
+However, unlike
+.Fn STAILQ_FOREACH
+here it is permitted to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm STAILQ_INIT
+initializes the tail queue referenced by
+.Fa head .
+.Pp
+The macro
+.Nm STAILQ_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the tail queue.
+.Pp
+The macro
+.Nm STAILQ_INSERT_TAIL
+inserts the new element
+.Fa elm
+at the end of the tail queue.
+.Pp
+The macro
+.Nm STAILQ_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm STAILQ_LAST
+returns the last item on the tail queue.
+If the tail queue is empty the return value is
+.Dv NULL .
+.Pp
+The macro
+.Nm STAILQ_NEXT
+returns the next item on the tail queue, or NULL this item is the last.
+.Pp
+The macro
+.Nm STAILQ_REMOVE_AFTER
+removes the element after
+.Fa elm
+from the tail queue. Unlike
+.Fa STAILQ_REMOVE ,
+this macro does not traverse the entire tail queue.
+.Pp
+The macro
+.Nm STAILQ_REMOVE_HEAD
+removes the element at the head of the tail queue.
+For optimum efficiency,
+elements being removed from the head of the tail queue should
+use this macro explicitly rather than the generic
+.Fa STAILQ_REMOVE
+macro.
+.Pp
+The macro
+.Nm STAILQ_REMOVE
+removes the element
+.Fa elm
+from the tail queue.
+.Pp
+The macro
+.Nm STAILQ_SWAP
+swaps the contents of
+.Fa head1
+and
+.Fa head2 .
+.Sh SINGLY-LINKED TAIL QUEUE EXAMPLE
+.Bd -literal
+STAILQ_HEAD(stailhead, entry) head =
+    STAILQ_HEAD_INITIALIZER(head);
+struct stailhead *headp;		/* Singly-linked tail queue head. */
+struct entry {
+	...
+	STAILQ_ENTRY(entry) entries;	/* Tail queue. */
+	...
+} *n1, *n2, *n3, *np;
+
+STAILQ_INIT(&head);			/* Initialize the queue. */
+
+n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
+STAILQ_INSERT_HEAD(&head, n1, entries);
+
+n1 = malloc(sizeof(struct entry));	/* Insert at the tail. */
+STAILQ_INSERT_TAIL(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry));	/* Insert after. */
+STAILQ_INSERT_AFTER(&head, n1, n2, entries);
+					/* Deletion. */
+STAILQ_REMOVE(&head, n2, entry, entries);
+free(n2);
+					/* Deletion from the head. */
+n3 = STAILQ_FIRST(&head);
+STAILQ_REMOVE_HEAD(&head, entries);
+free(n3);
+					/* Forward traversal. */
+STAILQ_FOREACH(np, &head, entries)
+	np-> ...
+					/* Safe forward traversal. */
+STAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
+	np->do_stuff();
+	...
+	STAILQ_REMOVE(&head, np, entry, entries);
+	free(np);
+}
+					/* TailQ Deletion. */
+while (!STAILQ_EMPTY(&head)) {
+	n1 = STAILQ_FIRST(&head);
+	STAILQ_REMOVE_HEAD(&head, entries);
+	free(n1);
+}
+					/* Faster TailQ Deletion. */
+n1 = STAILQ_FIRST(&head);
+while (n1 != NULL) {
+	n2 = STAILQ_NEXT(n1, entries);
+	free(n1);
+	n1 = n2;
+}
+STAILQ_INIT(&head);
+.Ed
+.Sh LISTS
+A list is headed by a structure defined by the
+.Nm LIST_HEAD
+macro.
+This structure contains a single pointer to the first element
+on the list.
+The elements are doubly linked so that an arbitrary element can be
+removed without traversing the list.
+New elements can be added to the list after an existing element,
+before an existing element, or at the head of the list.
+A
+.Fa LIST_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+LIST_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Fa HEADNAME
+is the name of the structure to be defined, and
+.Fa TYPE
+is the type of the elements to be linked into the list.
+A pointer to the head of the list can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm LIST_HEAD_INITIALIZER
+evaluates to an initializer for the list
+.Fa head .
+.Pp
+The macro
+.Nm LIST_EMPTY
+evaluates to true if there are no elements in the list.
+.Pp
+The macro
+.Nm LIST_ENTRY
+declares a structure that connects the elements in
+the list.
+.Pp
+The macro
+.Nm LIST_FIRST
+returns the first element in the list or NULL if the list
+is empty.
+.Pp
+The macro
+.Nm LIST_FOREACH
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in turn to
+.Fa var .
+.Pp
+The macro
+.Nm LIST_FOREACH_SAFE
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in turn to
+.Fa var .
+However, unlike
+.Fn LIST_FOREACH
+here it is permitted to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm LIST_INIT
+initializes the list referenced by
+.Fa head .
+.Pp
+The macro
+.Nm LIST_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the list.
+.Pp
+The macro
+.Nm LIST_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm LIST_INSERT_BEFORE
+inserts the new element
+.Fa elm
+before the element
+.Fa listelm .
+.Pp
+The macro
+.Nm LIST_NEXT
+returns the next element in the list, or NULL if this is the last.
+.Pp
+The macro
+.Nm LIST_REMOVE
+removes the element
+.Fa elm
+from the list.
+.Pp
+The macro
+.Nm LIST_SWAP
+swaps the contents of
+.Fa head1
+and
+.Fa head2 .
+.Sh LIST EXAMPLE
+.Bd -literal
+LIST_HEAD(listhead, entry) head =
+    LIST_HEAD_INITIALIZER(head);
+struct listhead *headp;			/* List head. */
+struct entry {
+	...
+	LIST_ENTRY(entry) entries;	/* List. */
+	...
+} *n1, *n2, *n3, *np, *np_temp;
+
+LIST_INIT(&head);			/* Initialize the list. */
+
+n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
+LIST_INSERT_HEAD(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry));	/* Insert after. */
+LIST_INSERT_AFTER(n1, n2, entries);
+
+n3 = malloc(sizeof(struct entry));	/* Insert before. */
+LIST_INSERT_BEFORE(n2, n3, entries);
+
+LIST_REMOVE(n2, entries);		/* Deletion. */
+free(n2);
+					/* Forward traversal. */
+LIST_FOREACH(np, &head, entries)
+	np-> ...
+
+					/* Safe forward traversal. */
+LIST_FOREACH_SAFE(np, &head, entries, np_temp) {
+	np->do_stuff();
+	...
+	LIST_REMOVE(np, entries);
+	free(np);
+}
+
+while (!LIST_EMPTY(&head)) {		/* List Deletion. */
+	n1 = LIST_FIRST(&head);
+	LIST_REMOVE(n1, entries);
+	free(n1);
+}
+
+n1 = LIST_FIRST(&head);			/* Faster List Deletion. */
+while (n1 != NULL) {
+	n2 = LIST_NEXT(n1, entries);
+	free(n1);
+	n1 = n2;
+}
+LIST_INIT(&head);
+.Ed
+.Sh TAIL QUEUES
+A tail queue is headed by a structure defined by the
+.Nm TAILQ_HEAD
+macro.
+This structure contains a pair of pointers,
+one to the first element in the tail queue and the other to
+the last element in the tail queue.
+The elements are doubly linked so that an arbitrary element can be
+removed without traversing the tail queue.
+New elements can be added to the tail queue after an existing element,
+before an existing element, at the head of the tail queue,
+or at the end of the tail queue.
+A
+.Fa TAILQ_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+TAILQ_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Li HEADNAME
+is the name of the structure to be defined, and
+.Li TYPE
+is the type of the elements to be linked into the tail queue.
+A pointer to the head of the tail queue can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm TAILQ_HEAD_INITIALIZER
+evaluates to an initializer for the tail queue
+.Fa head .
+.Pp
+The macro
+.Nm TAILQ_CONCAT
+concatenates the tail queue headed by
+.Fa head2
+onto the end of the one headed by
+.Fa head1
+removing all entries from the former.
+.Pp
+The macro
+.Nm TAILQ_EMPTY
+evaluates to true if there are no items on the tail queue.
+.Pp
+The macro
+.Nm TAILQ_ENTRY
+declares a structure that connects the elements in
+the tail queue.
+.Pp
+The macro
+.Nm TAILQ_FIRST
+returns the first item on the tail queue or NULL if the tail queue
+is empty.
+.Pp
+The macro
+.Nm TAILQ_FOREACH
+traverses the tail queue referenced by
+.Fa head
+in the forward direction, assigning each element in turn to
+.Fa var .
+.Fa var
+is set to
+.Dv NULL
+if the loop completes normally, or if there were no elements.
+.Pp
+The macro
+.Nm TAILQ_FOREACH_REVERSE
+traverses the tail queue referenced by
+.Fa head
+in the reverse direction, assigning each element in turn to
+.Fa var .
+.Pp
+The macros
+.Nm TAILQ_FOREACH_SAFE
+and
+.Nm TAILQ_FOREACH_REVERSE_SAFE
+traverse the list referenced by
+.Fa head
+in the forward or reverse direction respectively,
+assigning each element in turn to
+.Fa var .
+However, unlike their unsafe counterparts,
+.Nm TAILQ_FOREACH
+and
+.Nm TAILQ_FOREACH_REVERSE
+permit to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm TAILQ_INIT
+initializes the tail queue referenced by
+.Fa head .
+.Pp
+The macro
+.Nm TAILQ_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the tail queue.
+.Pp
+The macro
+.Nm TAILQ_INSERT_TAIL
+inserts the new element
+.Fa elm
+at the end of the tail queue.
+.Pp
+The macro
+.Nm TAILQ_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm TAILQ_INSERT_BEFORE
+inserts the new element
+.Fa elm
+before the element
+.Fa listelm .
+.Pp
+The macro
+.Nm TAILQ_LAST
+returns the last item on the tail queue.
+If the tail queue is empty the return value is
+.Dv NULL .
+.Pp
+The macro
+.Nm TAILQ_NEXT
+returns the next item on the tail queue, or NULL if this item is the last.
+.Pp
+The macro
+.Nm TAILQ_PREV
+returns the previous item on the tail queue, or NULL if this item
+is the first.
+.Pp
+The macro
+.Nm TAILQ_REMOVE
+removes the element
+.Fa elm
+from the tail queue.
+.Pp
+The macro
+.Nm TAILQ_SWAP
+swaps the contents of
+.Fa head1
+and
+.Fa head2 .
+.Sh TAIL QUEUE EXAMPLE
+.Bd -literal
+TAILQ_HEAD(tailhead, entry) head =
+    TAILQ_HEAD_INITIALIZER(head);
+struct tailhead *headp;			/* Tail queue head. */
+struct entry {
+	...
+	TAILQ_ENTRY(entry) entries;	/* Tail queue. */
+	...
+} *n1, *n2, *n3, *np;
+
+TAILQ_INIT(&head);			/* Initialize the queue. */
+
+n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
+TAILQ_INSERT_HEAD(&head, n1, entries);
+
+n1 = malloc(sizeof(struct entry));	/* Insert at the tail. */
+TAILQ_INSERT_TAIL(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry));	/* Insert after. */
+TAILQ_INSERT_AFTER(&head, n1, n2, entries);
+
+n3 = malloc(sizeof(struct entry));	/* Insert before. */
+TAILQ_INSERT_BEFORE(n2, n3, entries);
+
+TAILQ_REMOVE(&head, n2, entries);	/* Deletion. */
+free(n2);
+					/* Forward traversal. */
+TAILQ_FOREACH(np, &head, entries)
+	np-> ...
+					/* Safe forward traversal. */
+TAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
+	np->do_stuff();
+	...
+	TAILQ_REMOVE(&head, np, entries);
+	free(np);
+}
+					/* Reverse traversal. */
+TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries)
+	np-> ...
+					/* TailQ Deletion. */
+while (!TAILQ_EMPTY(&head)) {
+	n1 = TAILQ_FIRST(&head);
+	TAILQ_REMOVE(&head, n1, entries);
+	free(n1);
+}
+					/* Faster TailQ Deletion. */
+n1 = TAILQ_FIRST(&head);
+while (n1 != NULL) {
+	n2 = TAILQ_NEXT(n1, entries);
+	free(n1);
+	n1 = n2;
+}
+TAILQ_INIT(&head);
+.Ed
+.Sh SEE ALSO
+.Xr tree 3
+.Sh HISTORY
+The
+.Nm queue
+functions first appeared in
+.Bx 4.4 .
diff -r 6c9a73817770 -r 934c14ab9f19 tools/include/xen-external/bsd-sys-queue-h-seddery
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/include/xen-external/bsd-sys-queue-h-seddery	Tue Jan 31 16:06:14 2012 +0000
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -p
+#
+# This script is part of the Xen build system.  It has a very
+# permissive licence to avoid complicating the licence of the
+# generated header file and to allow this seddery to be reused by
+# other projects.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this individual file (the "Software"), to deal
+# in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute,
+# sublicense, and/or sell copies of the Software, and to permit
+# persons to whom the Software is furnished to do so, subject to the
+# following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#
+# Copyright (C) 2011 Citrix Ltd
+
+our $namespace, $ucnamespace;
+
+BEGIN {
+    die unless @ARGV;
+    $namespace = pop @ARGV;
+    $namespace =~ s/^--prefix=// or die;
+    $ucnamespace = uc $namespace;
+
+    print <<END or die $!;
+/*
+ * DO NOT EDIT THIS FILE
+ *
+ * Generated automatically by bsd-sys-queue-h-seddery to
+ *  - introduce ${ucnamespace}_ and ${namespace}_ namespace prefixes
+ *  - turn "struct type" into "type" so that type arguments
+ *     to the macros are type names not struct tags
+ *  - remove the reference to sys/cdefs.h, which is not needed
+ *
+ * The purpose of this seddery is to allow the resulting file to be
+ * freely included by software which might also want to include other
+ * list macros; to make it usable when struct tags are not being used
+ * or not known; to make it more portable.
+ */
+END
+}
+
+s/\b( _SYS_QUEUE |
+      SLIST | LIST | STAILQ | TAILQ | QUEUE
+      )/${ucnamespace}_$1/xg;
+
+s/\b( TRACEBUF | TRASHIT |
+      QMD_
+      )/${ucnamespace}__$1/xg;
+
+s/\b(
+      qm_
+      )/${namespace}__$1/xg;
+
+s/\b struct \s+ type \b/type/xg;
+
+s,^\#include.*sys/cdefs.*,/* $& */,xg;
+
+s/\b( NULL )/0/xg;
diff -r 6c9a73817770 -r 934c14ab9f19 tools/include/xen-external/bsd-sys-queue.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/include/xen-external/bsd-sys-queue.h	Tue Jan 31 16:06:14 2012 +0000
@@ -0,0 +1,637 @@
+/*-
+ * Copyright (c) 1991, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)queue.h	8.5 (Berkeley) 8/20/94
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_QUEUE_H_
+#define	_SYS_QUEUE_H_
+
+#include <sys/cdefs.h>
+
+/*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+ *
+ * A singly-linked list is headed by a single forward pointer. The elements
+ * are singly linked for minimum space and pointer manipulation overhead at
+ * the expense of O(n) removal for arbitrary elements. New elements can be
+ * added to the list after an existing element or at the head of the list.
+ * Elements being removed from the head of the list should use the explicit
+ * macro for this purpose for optimum efficiency. A singly-linked list may
+ * only be traversed in the forward direction.  Singly-linked lists are ideal
+ * for applications with large datasets and few or no removals or for
+ * implementing a LIFO queue.
+ *
+ * A singly-linked tail queue is headed by a pair of pointers, one to the
+ * head of the list and the other to the tail of the list. The elements are
+ * singly linked for minimum space and pointer manipulation overhead at the
+ * expense of O(n) removal for arbitrary elements. New elements can be added
+ * to the list after an existing element, at the head of the list, or at the
+ * end of the list. Elements being removed from the head of the tail queue
+ * should use the explicit macro for this purpose for optimum efficiency.
+ * A singly-linked tail queue may only be traversed in the forward direction.
+ * Singly-linked tail queues are ideal for applications with large datasets
+ * and few or no removals or for implementing a FIFO queue.
+ *
+ * A list is headed by a single forward pointer (or an array of forward
+ * pointers for a hash table header). The elements are doubly linked
+ * so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before
+ * or after an existing element or at the head of the list. A list
+ * may only be traversed in the forward direction.
+ *
+ * A tail queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or
+ * after an existing element, at the head of the list, or at the end of
+ * the list. A tail queue may be traversed in either direction.
+ *
+ * For details on the use of these macros, see the queue(3) manual page.
+ *
+ *
+ *				SLIST	LIST	STAILQ	TAILQ
+ * _HEAD			+	+	+	+
+ * _HEAD_INITIALIZER		+	+	+	+
+ * _ENTRY			+	+	+	+
+ * _INIT			+	+	+	+
+ * _EMPTY			+	+	+	+
+ * _FIRST			+	+	+	+
+ * _NEXT			+	+	+	+
+ * _PREV			-	-	-	+
+ * _LAST			-	-	+	+
+ * _FOREACH			+	+	+	+
+ * _FOREACH_SAFE		+	+	+	+
+ * _FOREACH_REVERSE		-	-	-	+
+ * _FOREACH_REVERSE_SAFE	-	-	-	+
+ * _INSERT_HEAD			+	+	+	+
+ * _INSERT_BEFORE		-	+	-	+
+ * _INSERT_AFTER		+	+	+	+
+ * _INSERT_TAIL			-	-	+	+
+ * _CONCAT			-	-	+	+
+ * _REMOVE_AFTER		+	-	+	-
+ * _REMOVE_HEAD			+	-	+	-
+ * _REMOVE			+	+	+	+
+ * _SWAP			+	+	+	+
+ *
+ */
+#ifdef QUEUE_MACRO_DEBUG
+/* Store the last 2 places the queue element or head was altered */
+struct qm_trace {
+	char * lastfile;
+	int lastline;
+	char * prevfile;
+	int prevline;
+};
+
+#define	TRACEBUF	struct qm_trace trace;
+#define	TRASHIT(x)	do {(x) = (void *)-1;} while (0)
+#define	QMD_SAVELINK(name, link)	void **name = (void *)&(link)
+
+#define	QMD_TRACE_HEAD(head) do {					\
+	(head)->trace.prevline = (head)->trace.lastline;		\
+	(head)->trace.prevfile = (head)->trace.lastfile;		\
+	(head)->trace.lastline = __LINE__;				\
+	(head)->trace.lastfile = __FILE__;				\
+} while (0)
+
+#define	QMD_TRACE_ELEM(elem) do {					\
+	(elem)->trace.prevline = (elem)->trace.lastline;		\
+	(elem)->trace.prevfile = (elem)->trace.lastfile;		\
+	(elem)->trace.lastline = __LINE__;				\
+	(elem)->trace.lastfile = __FILE__;				\
+} while (0)
+
+#else
+#define	QMD_TRACE_ELEM(elem)
+#define	QMD_TRACE_HEAD(head)
+#define	QMD_SAVELINK(name, link)
+#define	TRACEBUF
+#define	TRASHIT(x)
+#endif	/* QUEUE_MACRO_DEBUG */
+
+/*
+ * Singly-linked List declarations.
+ */
+#define	SLIST_HEAD(name, type)						\
+struct name {								\
+	struct type *slh_first;	/* first element */			\
+}
+
+#define	SLIST_HEAD_INITIALIZER(head)					\
+	{ NULL }
+
+#define	SLIST_ENTRY(type)						\
+struct {								\
+	struct type *sle_next;	/* next element */			\
+}
+
+/*
+ * Singly-linked List functions.
+ */
+#define	SLIST_EMPTY(head)	((head)->slh_first == NULL)
+
+#define	SLIST_FIRST(head)	((head)->slh_first)
+
+#define	SLIST_FOREACH(var, head, field)					\
+	for ((var) = SLIST_FIRST((head));				\
+	    (var);							\
+	    (var) = SLIST_NEXT((var), field))
+
+#define	SLIST_FOREACH_SAFE(var, head, field, tvar)			\
+	for ((var) = SLIST_FIRST((head));				\
+	    (var) && ((tvar) = SLIST_NEXT((var), field), 1);		\
+	    (var) = (tvar))
+
+#define	SLIST_FOREACH_PREVPTR(var, varp, head, field)			\
+	for ((varp) = &SLIST_FIRST((head));				\
+	    ((var) = *(varp)) != NULL;					\
+	    (varp) = &SLIST_NEXT((var), field))
+
+#define	SLIST_INIT(head) do {						\
+	SLIST_FIRST((head)) = NULL;					\
+} while (0)
+
+#define	SLIST_INSERT_AFTER(slistelm, elm, field) do {			\
+	SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field);	\
+	SLIST_NEXT((slistelm), field) = (elm);				\
+} while (0)
+
+#define	SLIST_INSERT_HEAD(head, elm, field) do {			\
+	SLIST_NEXT((elm), field) = SLIST_FIRST((head));			\
+	SLIST_FIRST((head)) = (elm);					\
+} while (0)
+
+#define	SLIST_NEXT(elm, field)	((elm)->field.sle_next)
+
+#define	SLIST_REMOVE(head, elm, type, field) do {			\
+	QMD_SAVELINK(oldnext, (elm)->field.sle_next);			\
+	if (SLIST_FIRST((head)) == (elm)) {				\
+		SLIST_REMOVE_HEAD((head), field);			\
+	}								\
+	else {								\
+		struct type *curelm = SLIST_FIRST((head));		\
+		while (SLIST_NEXT(curelm, field) != (elm))		\
+			curelm = SLIST_NEXT(curelm, field);		\
+		SLIST_REMOVE_AFTER(curelm, field);			\
+	}								\
+	TRASHIT(*oldnext);						\
+} while (0)
+
+#define SLIST_REMOVE_AFTER(elm, field) do {				\
+	SLIST_NEXT(elm, field) =					\
+	    SLIST_NEXT(SLIST_NEXT(elm, field), field);			\
+} while (0)
+
+#define	SLIST_REMOVE_HEAD(head, field) do {				\
+	SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field);	\
+} while (0)
+
+#define SLIST_SWAP(head1, head2, type) do {				\
+	struct type *swap_first = SLIST_FIRST(head1);			\
+	SLIST_FIRST(head1) = SLIST_FIRST(head2);			\
+	SLIST_FIRST(head2) = swap_first;				\
+} while (0)
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define	STAILQ_HEAD(name, type)						\
+struct name {								\
+	struct type *stqh_first;/* first element */			\
+	struct type **stqh_last;/* addr of last next element */		\
+}
+
+#define	STAILQ_HEAD_INITIALIZER(head)					\
+	{ NULL, &(head).stqh_first }
+
+#define	STAILQ_ENTRY(type)						\
+struct {								\
+	struct type *stqe_next;	/* next element */			\
+}
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define	STAILQ_CONCAT(head1, head2) do {				\
+	if (!STAILQ_EMPTY((head2))) {					\
+		*(head1)->stqh_last = (head2)->stqh_first;		\
+		(head1)->stqh_last = (head2)->stqh_last;		\
+		STAILQ_INIT((head2));					\
+	}								\
+} while (0)
+
+#define	STAILQ_EMPTY(head)	((head)->stqh_first == NULL)
+
+#define	STAILQ_FIRST(head)	((head)->stqh_first)
+
+#define	STAILQ_FOREACH(var, head, field)				\
+	for((var) = STAILQ_FIRST((head));				\
+	   (var);							\
+	   (var) = STAILQ_NEXT((var), field))
+
+
+#define	STAILQ_FOREACH_SAFE(var, head, field, tvar)			\
+	for ((var) = STAILQ_FIRST((head));				\
+	    (var) && ((tvar) = STAILQ_NEXT((var), field), 1);		\
+	    (var) = (tvar))
+
+#define	STAILQ_INIT(head) do {						\
+	STAILQ_FIRST((head)) = NULL;					\
+	(head)->stqh_last = &STAILQ_FIRST((head));			\
+} while (0)
+
+#define	STAILQ_INSERT_AFTER(head, tqelm, elm, field) do {		\
+	if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
+		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\
+	STAILQ_NEXT((tqelm), field) = (elm);				\
+} while (0)
+
+#define	STAILQ_INSERT_HEAD(head, elm, field) do {			\
+	if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL)	\
+		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\
+	STAILQ_FIRST((head)) = (elm);					\
+} while (0)
+
+#define	STAILQ_INSERT_TAIL(head, elm, field) do {			\
+	STAILQ_NEXT((elm), field) = NULL;				\
+	*(head)->stqh_last = (elm);					\
+	(head)->stqh_last = &STAILQ_NEXT((elm), field);			\
+} while (0)
+
+#define	STAILQ_LAST(head, type, field)					\
+	(STAILQ_EMPTY((head)) ?						\
+		NULL :							\
+	        ((struct type *)(void *)				\
+		((char *)((head)->stqh_last) - __offsetof(struct type, field))))
+
+#define	STAILQ_NEXT(elm, field)	((elm)->field.stqe_next)
+
+#define	STAILQ_REMOVE(head, elm, type, field) do {			\
+	QMD_SAVELINK(oldnext, (elm)->field.stqe_next);			\
+	if (STAILQ_FIRST((head)) == (elm)) {				\
+		STAILQ_REMOVE_HEAD((head), field);			\
+	}								\
+	else {								\
+		struct type *curelm = STAILQ_FIRST((head));		\
+		while (STAILQ_NEXT(curelm, field) != (elm))		\
+			curelm = STAILQ_NEXT(curelm, field);		\
+		STAILQ_REMOVE_AFTER(head, curelm, field);		\
+	}								\
+	TRASHIT(*oldnext);						\
+} while (0)
+
+#define STAILQ_REMOVE_AFTER(head, elm, field) do {			\
+	if ((STAILQ_NEXT(elm, field) =					\
+	     STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL)	\
+		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\
+} while (0)
+
+#define	STAILQ_REMOVE_HEAD(head, field) do {				\
+	if ((STAILQ_FIRST((head)) =					\
+	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
+		(head)->stqh_last = &STAILQ_FIRST((head));		\
+} while (0)
+
+#define STAILQ_SWAP(head1, head2, type) do {				\
+	struct type *swap_first = STAILQ_FIRST(head1);			\
+	struct type **swap_last = (head1)->stqh_last;			\
+	STAILQ_FIRST(head1) = STAILQ_FIRST(head2);			\
+	(head1)->stqh_last = (head2)->stqh_last;			\
+	STAILQ_FIRST(head2) = swap_first;				\
+	(head2)->stqh_last = swap_last;					\
+	if (STAILQ_EMPTY(head1))					\
+		(head1)->stqh_last = &STAILQ_FIRST(head1);		\
+	if (STAILQ_EMPTY(head2))					\
+		(head2)->stqh_last = &STAILQ_FIRST(head2);		\
+} while (0)
+
+
+/*
+ * List declarations.
+ */
+#define	LIST_HEAD(name, type)						\
+struct name {								\
+	struct type *lh_first;	/* first element */			\
+}
+
+#define	LIST_HEAD_INITIALIZER(head)					\
+	{ NULL }
+
+#define	LIST_ENTRY(type)						\
+struct {								\
+	struct type *le_next;	/* next element */			\
+	struct type **le_prev;	/* address of previous next element */	\
+}
+
+/*
+ * List functions.
+ */
+
+#if (defined(_KERNEL) && defined(INVARIANTS))
+#define	QMD_LIST_CHECK_HEAD(head, field) do {				\
+	if (LIST_FIRST((head)) != NULL &&				\
+	    LIST_FIRST((head))->field.le_prev !=			\
+	     &LIST_FIRST((head)))					\
+		panic("Bad list head %p first->prev != head", (head));	\
+} while (0)
+
+#define	QMD_LIST_CHECK_NEXT(elm, field) do {				\
+	if (LIST_NEXT((elm), field) != NULL &&				\
+	    LIST_NEXT((elm), field)->field.le_prev !=			\
+	     &((elm)->field.le_next))					\
+	     	panic("Bad link elm %p next->prev != elm", (elm));	\
+} while (0)
+
+#define	QMD_LIST_CHECK_PREV(elm, field) do {				\
+	if (*(elm)->field.le_prev != (elm))				\
+		panic("Bad link elm %p prev->next != elm", (elm));	\
+} while (0)
+#else
+#define	QMD_LIST_CHECK_HEAD(head, field)
+#define	QMD_LIST_CHECK_NEXT(elm, field)
+#define	QMD_LIST_CHECK_PREV(elm, field)
+#endif /* (_KERNEL && INVARIANTS) */
+
+#define	LIST_EMPTY(head)	((head)->lh_first == NULL)
+
+#define	LIST_FIRST(head)	((head)->lh_first)
+
+#define	LIST_FOREACH(var, head, field)					\
+	for ((var) = LIST_FIRST((head));				\
+	    (var);							\
+	    (var) = LIST_NEXT((var), field))
+
+#define	LIST_FOREACH_SAFE(var, head, field, tvar)			\
+	for ((var) = LIST_FIRST((head));				\
+	    (var) && ((tvar) = LIST_NEXT((var), field), 1);		\
+	    (var) = (tvar))
+
+#define	LIST_INIT(head) do {						\
+	LIST_FIRST((head)) = NULL;					\
+} while (0)
+
+#define	LIST_INSERT_AFTER(listelm, elm, field) do {			\
+	QMD_LIST_CHECK_NEXT(listelm, field);				\
+	if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
+		LIST_NEXT((listelm), field)->field.le_prev =		\
+		    &LIST_NEXT((elm), field);				\
+	LIST_NEXT((listelm), field) = (elm);				\
+	(elm)->field.le_prev = &LIST_NEXT((listelm), field);		\
+} while (0)
+
+#define	LIST_INSERT_BEFORE(listelm, elm, field) do {			\
+	QMD_LIST_CHECK_PREV(listelm, field);				\
+	(elm)->field.le_prev = (listelm)->field.le_prev;		\
+	LIST_NEXT((elm), field) = (listelm);				\
+	*(listelm)->field.le_prev = (elm);				\
+	(listelm)->field.le_prev = &LIST_NEXT((elm), field);		\
+} while (0)
+
+#define	LIST_INSERT_HEAD(head, elm, field) do {				\
+	QMD_LIST_CHECK_HEAD((head), field);				\
+	if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL)	\
+		LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
+	LIST_FIRST((head)) = (elm);					\
+	(elm)->field.le_prev = &LIST_FIRST((head));			\
+} while (0)
+
+#define	LIST_NEXT(elm, field)	((elm)->field.le_next)
+
+#define	LIST_REMOVE(elm, field) do {					\
+	QMD_SAVELINK(oldnext, (elm)->field.le_next);			\
+	QMD_SAVELINK(oldprev, (elm)->field.le_prev);			\
+	QMD_LIST_CHECK_NEXT(elm, field);				\
+	QMD_LIST_CHECK_PREV(elm, field);				\
+	if (LIST_NEXT((elm), field) != NULL)				\
+		LIST_NEXT((elm), field)->field.le_prev = 		\
+		    (elm)->field.le_prev;				\
+	*(elm)->field.le_prev = LIST_NEXT((elm), field);		\
+	TRASHIT(*oldnext);						\
+	TRASHIT(*oldprev);						\
+} while (0)
+
+#define LIST_SWAP(head1, head2, type, field) do {			\
+	struct type *swap_tmp = LIST_FIRST((head1));			\
+	LIST_FIRST((head1)) = LIST_FIRST((head2));			\
+	LIST_FIRST((head2)) = swap_tmp;					\
+	if ((swap_tmp = LIST_FIRST((head1))) != NULL)			\
+		swap_tmp->field.le_prev = &LIST_FIRST((head1));		\
+	if ((swap_tmp = LIST_FIRST((head2))) != NULL)			\
+		swap_tmp->field.le_prev = &LIST_FIRST((head2));		\
+} while (0)
+
+/*
+ * Tail queue declarations.
+ */
+#define	TAILQ_HEAD(name, type)						\
+struct name {								\
+	struct type *tqh_first;	/* first element */			\
+	struct type **tqh_last;	/* addr of last next element */		\
+	TRACEBUF							\
+}
+
+#define	TAILQ_HEAD_INITIALIZER(head)					\
+	{ NULL, &(head).tqh_first }
+
+#define	TAILQ_ENTRY(type)						\
+struct {								\
+	struct type *tqe_next;	/* next element */			\
+	struct type **tqe_prev;	/* address of previous next element */	\
+	TRACEBUF							\
+}
+
+/*
+ * Tail queue functions.
+ */
+#if (defined(_KERNEL) && defined(INVARIANTS))
+#define	QMD_TAILQ_CHECK_HEAD(head, field) do {				\
+	if (!TAILQ_EMPTY(head) &&					\
+	    TAILQ_FIRST((head))->field.tqe_prev !=			\
+	     &TAILQ_FIRST((head)))					\
+		panic("Bad tailq head %p first->prev != head", (head));	\
+} while (0)
+
+#define	QMD_TAILQ_CHECK_TAIL(head, field) do {				\
+	if (*(head)->tqh_last != NULL)					\
+	    	panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); 	\
+} while (0)
+
+#define	QMD_TAILQ_CHECK_NEXT(elm, field) do {				\
+	if (TAILQ_NEXT((elm), field) != NULL &&				\
+	    TAILQ_NEXT((elm), field)->field.tqe_prev !=			\
+	     &((elm)->field.tqe_next))					\
+		panic("Bad link elm %p next->prev != elm", (elm));	\
+} while (0)
+
+#define	QMD_TAILQ_CHECK_PREV(elm, field) do {				\
+	if (*(elm)->field.tqe_prev != (elm))				\
+		panic("Bad link elm %p prev->next != elm", (elm));	\
+} while (0)
+#else
+#define	QMD_TAILQ_CHECK_HEAD(head, field)
+#define	QMD_TAILQ_CHECK_TAIL(head, headname)
+#define	QMD_TAILQ_CHECK_NEXT(elm, field)
+#define	QMD_TAILQ_CHECK_PREV(elm, field)
+#endif /* (_KERNEL && INVARIANTS) */
+
+#define	TAILQ_CONCAT(head1, head2, field) do {				\
+	if (!TAILQ_EMPTY(head2)) {					\
+		*(head1)->tqh_last = (head2)->tqh_first;		\
+		(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last;	\
+		(head1)->tqh_last = (head2)->tqh_last;			\
+		TAILQ_INIT((head2));					\
+		QMD_TRACE_HEAD(head1);					\
+		QMD_TRACE_HEAD(head2);					\
+	}								\
+} while (0)
+
+#define	TAILQ_EMPTY(head)	((head)->tqh_first == NULL)
+
+#define	TAILQ_FIRST(head)	((head)->tqh_first)
+
+#define	TAILQ_FOREACH(var, head, field)					\
+	for ((var) = TAILQ_FIRST((head));				\
+	    (var);							\
+	    (var) = TAILQ_NEXT((var), field))
+
+#define	TAILQ_FOREACH_SAFE(var, head, field, tvar)			\
+	for ((var) = TAILQ_FIRST((head));				\
+	    (var) && ((tvar) = TAILQ_NEXT((var), field), 1);		\
+	    (var) = (tvar))
+
+#define	TAILQ_FOREACH_REVERSE(var, head, headname, field)		\
+	for ((var) = TAILQ_LAST((head), headname);			\
+	    (var);							\
+	    (var) = TAILQ_PREV((var), headname, field))
+
+#define	TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)	\
+	for ((var) = TAILQ_LAST((head), headname);			\
+	    (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1);	\
+	    (var) = (tvar))
+
+#define	TAILQ_INIT(head) do {						\
+	TAILQ_FIRST((head)) = NULL;					\
+	(head)->tqh_last = &TAILQ_FIRST((head));			\
+	QMD_TRACE_HEAD(head);						\
+} while (0)
+
+#define	TAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
+	QMD_TAILQ_CHECK_NEXT(listelm, field);				\
+	if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
+		TAILQ_NEXT((elm), field)->field.tqe_prev = 		\
+		    &TAILQ_NEXT((elm), field);				\
+	else {								\
+		(head)->tqh_last = &TAILQ_NEXT((elm), field);		\
+		QMD_TRACE_HEAD(head);					\
+	}								\
+	TAILQ_NEXT((listelm), field) = (elm);				\
+	(elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field);		\
+	QMD_TRACE_ELEM(&(elm)->field);					\
+	QMD_TRACE_ELEM(&listelm->field);				\
+} while (0)
+
+#define	TAILQ_INSERT_BEFORE(listelm, elm, field) do {			\
+	QMD_TAILQ_CHECK_PREV(listelm, field);				\
+	(elm)->field.tqe_prev = (listelm)->field.tqe_prev;		\
+	TAILQ_NEXT((elm), field) = (listelm);				\
+	*(listelm)->field.tqe_prev = (elm);				\
+	(listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field);		\
+	QMD_TRACE_ELEM(&(elm)->field);					\
+	QMD_TRACE_ELEM(&listelm->field);				\
+} while (0)
+
+#define	TAILQ_INSERT_HEAD(head, elm, field) do {			\
+	QMD_TAILQ_CHECK_HEAD(head, field);				\
+	if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL)	\
+		TAILQ_FIRST((head))->field.tqe_prev =			\
+		    &TAILQ_NEXT((elm), field);				\
+	else								\
+		(head)->tqh_last = &TAILQ_NEXT((elm), field);		\
+	TAILQ_FIRST((head)) = (elm);					\
+	(elm)->field.tqe_prev = &TAILQ_FIRST((head));			\
+	QMD_TRACE_HEAD(head);						\
+	QMD_TRACE_ELEM(&(elm)->field);					\
+} while (0)
+
+#define	TAILQ_INSERT_TAIL(head, elm, field) do {			\
+	QMD_TAILQ_CHECK_TAIL(head, field);				\
+	TAILQ_NEXT((elm), field) = NULL;				\
+	(elm)->field.tqe_prev = (head)->tqh_last;			\
+	*(head)->tqh_last = (elm);					\
+	(head)->tqh_last = &TAILQ_NEXT((elm), field);			\
+	QMD_TRACE_HEAD(head);						\
+	QMD_TRACE_ELEM(&(elm)->field);					\
+} while (0)
+
+#define	TAILQ_LAST(head, headname)					\
+	(*(((struct headname *)((head)->tqh_last))->tqh_last))
+
+#define	TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+
+#define	TAILQ_PREV(elm, headname, field)				\
+	(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+
+#define	TAILQ_REMOVE(head, elm, field) do {				\
+	QMD_SAVELINK(oldnext, (elm)->field.tqe_next);			\
+	QMD_SAVELINK(oldprev, (elm)->field.tqe_prev);			\
+	QMD_TAILQ_CHECK_NEXT(elm, field);				\
+	QMD_TAILQ_CHECK_PREV(elm, field);				\
+	if ((TAILQ_NEXT((elm), field)) != NULL)				\
+		TAILQ_NEXT((elm), field)->field.tqe_prev = 		\
+		    (elm)->field.tqe_prev;				\
+	else {								\
+		(head)->tqh_last = (elm)->field.tqe_prev;		\
+		QMD_TRACE_HEAD(head);					\
+	}								\
+	*(elm)->field.tqe_prev = TAILQ_NEXT((elm), field);		\
+	TRASHIT(*oldnext);						\
+	TRASHIT(*oldprev);						\
+	QMD_TRACE_ELEM(&(elm)->field);					\
+} while (0)
+
+#define TAILQ_SWAP(head1, head2, type, field) do {			\
+	struct type *swap_first = (head1)->tqh_first;			\
+	struct type **swap_last = (head1)->tqh_last;			\
+	(head1)->tqh_first = (head2)->tqh_first;			\
+	(head1)->tqh_last = (head2)->tqh_last;				\
+	(head2)->tqh_first = swap_first;				\
+	(head2)->tqh_last = swap_last;					\
+	if ((swap_first = (head1)->tqh_first) != NULL)			\
+		swap_first->field.tqe_prev = &(head1)->tqh_first;	\
+	else								\
+		(head1)->tqh_last = &(head1)->tqh_first;		\
+	if ((swap_first = (head2)->tqh_first) != NULL)			\
+		swap_first->field.tqe_prev = &(head2)->tqh_first;	\
+	else								\
+		(head2)->tqh_last = &(head2)->tqh_first;		\
+} while (0)
+
+#endif /* !_SYS_QUEUE_H_ */
diff -r 6c9a73817770 -r 934c14ab9f19 tools/libxl/Makefile
--- a/tools/libxl/Makefile	Tue Jan 31 11:39:37 2012 +0000
+++ b/tools/libxl/Makefile	Tue Jan 31 16:06:14 2012 +0000
@@ -93,8 +93,8 @@
 	rm -f $@.tmp
 	$(call move-if-changed,$@.2.tmp,$@)
 
-_libxl_list.h: bsd-sys-queue-h-seddery external/bsd-sys-queue.h
-	perl ./$^ --prefix=libxl >$@.new
+_libxl_list.h: $(XEN_INCLUDE)/xen-external/bsd-sys-queue-h-seddery $(XEN_INCLUDE)/xen-external/bsd-sys-queue.h
+	perl $^ --prefix=libxl >$@.new
 	$(call move-if-changed,$@.new,$@)
 
 libxl_paths.c: _libxl_paths.h
diff -r 6c9a73817770 -r 934c14ab9f19 tools/libxl/bsd-sys-queue-h-seddery
--- a/tools/libxl/bsd-sys-queue-h-seddery	Tue Jan 31 11:39:37 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/usr/bin/perl -p
-#
-# This script is part of the Xen build system.  It has a very
-# permissive licence to avoid complicating the licence of the
-# generated header file and to allow this seddery to be reused by
-# other projects.
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this individual file (the "Software"), to deal
-# in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute,
-# sublicense, and/or sell copies of the Software, and to permit
-# persons to whom the Software is furnished to do so, subject to the
-# following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#
-# Copyright (C) 2011 Citrix Ltd
-
-our $namespace, $ucnamespace;
-
-BEGIN {
-    die unless @ARGV;
-    $namespace = pop @ARGV;
-    $namespace =~ s/^--prefix=// or die;
-    $ucnamespace = uc $namespace;
-
-    print <<END or die $!;
-/*
- * DO NOT EDIT THIS FILE
- *
- * Generated automatically by bsd-sys-queue-h-seddery to
- *  - introduce ${ucnamespace}_ and ${namespace}_ namespace prefixes
- *  - turn "struct type" into "type" so that type arguments
- *     to the macros are type names not struct tags
- *  - remove the reference to sys/cdefs.h, which is not needed
- *
- * The purpose of this seddery is to allow the resulting file to be
- * freely included by software which might also want to include other
- * list macros; to make it usable when struct tags are not being used
- * or not known; to make it more portable.
- */
-END
-}
-
-s/\b( _SYS_QUEUE |
-      SLIST | LIST | STAILQ | TAILQ | QUEUE
-      )/${ucnamespace}_$1/xg;
-
-s/\b( TRACEBUF | TRASHIT |
-      QMD_
-      )/${ucnamespace}__$1/xg;
-
-s/\b(
-      qm_
-      )/${namespace}__$1/xg;
-
-s/\b struct \s+ type \b/type/xg;
-
-s,^\#include.*sys/cdefs.*,/* $& */,xg;
diff -r 6c9a73817770 -r 934c14ab9f19 tools/libxl/external/README
--- a/tools/libxl/external/README	Tue Jan 31 11:39:37 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-WARNING - DO NOT EDIT THINGS IN THIS DIRECTORY (apart from this README)
------------------------------------------------------------------------
-
-These files were obtained elsewhere and should only be updated by
-copying new versions from the source location, as documented below:
-
-bsd-COPYRIGHT
-bsd-sys-queue.h
-bsd-queue.3
-
-  Obtained from the FreeBSD SVN using the following commands:
-    svn co -r 221843 svn://svn.freebsd.org/base/head/sys/sys/
-    svn co -r 221843 svn://svn.freebsd.org/base/head/share/man/man3
-    svn cat -r 221843 http://svn.freebsd.org/base/head/COPYRIGHT >tools/libxl/external/bsd-COPYRIGHT
diff -r 6c9a73817770 -r 934c14ab9f19 tools/libxl/external/bsd-COPYRIGHT
--- a/tools/libxl/external/bsd-COPYRIGHT	Tue Jan 31 11:39:37 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-# $FreeBSD$
-#	@(#)COPYRIGHT	8.2 (Berkeley) 3/21/94
-
-The compilation of software known as FreeBSD is distributed under the
-following terms:
-
-Copyright (c) 1992-2011 The FreeBSD Project. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-The 4.4BSD and 4.4BSD-Lite software is distributed under the following
-terms:
-
-All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite
-Releases is copyrighted by The Regents of the University of California.
-
-Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
-	The Regents of the University of California.  All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-This product includes software developed by the University of
-California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-The Institute of Electrical and Electronics Engineers and the American
-National Standards Committee X3, on Information Processing Systems have
-given us permission to reprint portions of their documentation.
-
-In the following statement, the phrase ``this text'' refers to portions
-of the system documentation.
-
-Portions of this text are reprinted and reproduced in electronic form in
-the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE
-Standard Portable Operating System Interface for Computer Environments
-(POSIX), copyright C 1988 by the Institute of Electrical and Electronics
-Engineers, Inc.  In the event of any discrepancy between these versions
-and the original IEEE Standard, the original IEEE Standard is the referee
-document.
-
-In the following statement, the phrase ``This material'' refers to portions
-of the system documentation.
-
-This material is reproduced with permission from American National
-Standards Committee X3, on Information Processing Systems.  Computer and
-Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
-Suite 500, Washington, DC 20001-2178.  The developmental work of
-Programming Language C was completed by the X3J11 Technical Committee.
-
-The views and conclusions contained in the software and documentation are
-those of the authors and should not be interpreted as representing official
-policies, either expressed or implied, of the Regents of the University
-of California.
-
-
-NOTE: The copyright of UC Berkeley's Berkeley Software Distribution ("BSD")
-source has been updated.  The copyright addendum may be found at
-ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change and is
-included below.
-
-July 22, 1999
-
-To All Licensees, Distributors of Any Version of BSD:
-
-As you know, certain of the Berkeley Software Distribution ("BSD") source
-code files require that further distributions of products containing all or
-portions of the software, acknowledge within their advertising materials
-that such products contain software developed by UC Berkeley and its
-contributors.
-
-Specifically, the provision reads:
-
-"     * 3. All advertising materials mentioning features or use of this software
-      *    must display the following acknowledgement:
-      *    This product includes software developed by the University of
-      *    California, Berkeley and its contributors."
-
-Effective immediately, licensees and distributors are no longer required to
-include the acknowledgement within advertising materials.  Accordingly, the
-foregoing paragraph of those BSD Unix files containing it is hereby deleted
-in its entirety.
-
-William Hoskins
-Director, Office of Technology Licensing
-University of California, Berkeley
diff -r 6c9a73817770 -r 934c14ab9f19 tools/libxl/external/bsd-queue.3
--- a/tools/libxl/external/bsd-queue.3	Tue Jan 31 11:39:37 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1044 +0,0 @@
-.\" Copyright (c) 1993
-.\"	The Regents of the University of California.  All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"	This product includes software developed by the University of
-.\"	California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"	@(#)queue.3	8.2 (Berkeley) 1/24/94
-.\" $FreeBSD$
-.\"
-.Dd May 13, 2011
-.Dt QUEUE 3
-.Os
-.Sh NAME
-.Nm SLIST_EMPTY ,
-.Nm SLIST_ENTRY ,
-.Nm SLIST_FIRST ,
-.Nm SLIST_FOREACH ,
-.Nm SLIST_FOREACH_SAFE ,
-.Nm SLIST_HEAD ,
-.Nm SLIST_HEAD_INITIALIZER ,
-.Nm SLIST_INIT ,
-.Nm SLIST_INSERT_AFTER ,
-.Nm SLIST_INSERT_HEAD ,
-.Nm SLIST_NEXT ,
-.Nm SLIST_REMOVE_AFTER ,
-.Nm SLIST_REMOVE_HEAD ,
-.Nm SLIST_REMOVE ,
-.Nm SLIST_SWAP ,
-.Nm STAILQ_CONCAT ,
-.Nm STAILQ_EMPTY ,
-.Nm STAILQ_ENTRY ,
-.Nm STAILQ_FIRST ,
-.Nm STAILQ_FOREACH ,
-.Nm STAILQ_FOREACH_SAFE ,
-.Nm STAILQ_HEAD ,
-.Nm STAILQ_HEAD_INITIALIZER ,
-.Nm STAILQ_INIT ,
-.Nm STAILQ_INSERT_AFTER ,
-.Nm STAILQ_INSERT_HEAD ,
-.Nm STAILQ_INSERT_TAIL ,
-.Nm STAILQ_LAST ,
-.Nm STAILQ_NEXT ,
-.Nm STAILQ_REMOVE_AFTER ,
-.Nm STAILQ_REMOVE_HEAD ,
-.Nm STAILQ_REMOVE ,
-.Nm STAILQ_SWAP ,
-.Nm LIST_EMPTY ,
-.Nm LIST_ENTRY ,
-.Nm LIST_FIRST ,
-.Nm LIST_FOREACH ,
-.Nm LIST_FOREACH_SAFE ,
-.Nm LIST_HEAD ,
-.Nm LIST_HEAD_INITIALIZER ,
-.Nm LIST_INIT ,
-.Nm LIST_INSERT_AFTER ,
-.Nm LIST_INSERT_BEFORE ,
-.Nm LIST_INSERT_HEAD ,
-.Nm LIST_NEXT ,
-.Nm LIST_REMOVE ,
-.Nm LIST_SWAP ,
-.Nm TAILQ_CONCAT ,
-.Nm TAILQ_EMPTY ,
-.Nm TAILQ_ENTRY ,
-.Nm TAILQ_FIRST ,
-.Nm TAILQ_FOREACH ,
-.Nm TAILQ_FOREACH_SAFE ,
-.Nm TAILQ_FOREACH_REVERSE ,
-.Nm TAILQ_FOREACH_REVERSE_SAFE ,
-.Nm TAILQ_HEAD ,
-.Nm TAILQ_HEAD_INITIALIZER ,
-.Nm TAILQ_INIT ,
-.Nm TAILQ_INSERT_AFTER ,
-.Nm TAILQ_INSERT_BEFORE ,
-.Nm TAILQ_INSERT_HEAD ,
-.Nm TAILQ_INSERT_TAIL ,
-.Nm TAILQ_LAST ,
-.Nm TAILQ_NEXT ,
-.Nm TAILQ_PREV ,
-.Nm TAILQ_REMOVE ,
-.Nm TAILQ_SWAP
-.Nd implementations of singly-linked lists, singly-linked tail queues,
-lists and tail queues
-.Sh SYNOPSIS
-.In sys/queue.h
-.\"
-.Fn SLIST_EMPTY "SLIST_HEAD *head"
-.Fn SLIST_ENTRY "TYPE"
-.Fn SLIST_FIRST "SLIST_HEAD *head"
-.Fn SLIST_FOREACH "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME"
-.Fn SLIST_FOREACH_SAFE "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME" "TYPE *temp_var"
-.Fn SLIST_HEAD "HEADNAME" "TYPE"
-.Fn SLIST_HEAD_INITIALIZER "SLIST_HEAD head"
-.Fn SLIST_INIT "SLIST_HEAD *head"
-.Fn SLIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "SLIST_ENTRY NAME"
-.Fn SLIST_INSERT_HEAD "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
-.Fn SLIST_NEXT "TYPE *elm" "SLIST_ENTRY NAME"
-.Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
-.Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
-.Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
-.Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
-.\"
-.Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
-.Fn STAILQ_EMPTY "STAILQ_HEAD *head"
-.Fn STAILQ_ENTRY "TYPE"
-.Fn STAILQ_FIRST "STAILQ_HEAD *head"
-.Fn STAILQ_FOREACH "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
-.Fn STAILQ_FOREACH_SAFE "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME" "TYPE *temp_var"
-.Fn STAILQ_HEAD "HEADNAME" "TYPE"
-.Fn STAILQ_HEAD_INITIALIZER "STAILQ_HEAD head"
-.Fn STAILQ_INIT "STAILQ_HEAD *head"
-.Fn STAILQ_INSERT_AFTER "STAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "STAILQ_ENTRY NAME"
-.Fn STAILQ_INSERT_HEAD "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
-.Fn STAILQ_INSERT_TAIL "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
-.Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME"
-.Fn STAILQ_NEXT "TYPE *elm" "STAILQ_ENTRY NAME"
-.Fn STAILQ_REMOVE_AFTER "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
-.Fn STAILQ_REMOVE_HEAD "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
-.Fn STAILQ_REMOVE "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
-.Fn STAILQ_SWAP "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" "STAILQ_ENTRY NAME"
-.\"
-.Fn LIST_EMPTY "LIST_HEAD *head"
-.Fn LIST_ENTRY "TYPE"
-.Fn LIST_FIRST "LIST_HEAD *head"
-.Fn LIST_FOREACH "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME"
-.Fn LIST_FOREACH_SAFE "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME" "TYPE *temp_var"
-.Fn LIST_HEAD "HEADNAME" "TYPE"
-.Fn LIST_HEAD_INITIALIZER "LIST_HEAD head"
-.Fn LIST_INIT "LIST_HEAD *head"
-.Fn LIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "LIST_ENTRY NAME"
-.Fn LIST_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "LIST_ENTRY NAME"
-.Fn LIST_INSERT_HEAD "LIST_HEAD *head" "TYPE *elm" "LIST_ENTRY NAME"
-.Fn LIST_NEXT "TYPE *elm" "LIST_ENTRY NAME"
-.Fn LIST_REMOVE "TYPE *elm" "LIST_ENTRY NAME"
-.Fn LIST_SWAP "LIST_HEAD *head1" "LIST_HEAD *head2" "TYPE" "LIST_ENTRY NAME"
-.\"
-.Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME"
-.Fn TAILQ_EMPTY "TAILQ_HEAD *head"
-.Fn TAILQ_ENTRY "TYPE"
-.Fn TAILQ_FIRST "TAILQ_HEAD *head"
-.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME"
-.Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var"
-.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME"
-.Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var"
-.Fn TAILQ_HEAD "HEADNAME" "TYPE"
-.Fn TAILQ_HEAD_INITIALIZER "TAILQ_HEAD head"
-.Fn TAILQ_INIT "TAILQ_HEAD *head"
-.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
-.Fn TAILQ_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
-.Fn TAILQ_INSERT_HEAD "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
-.Fn TAILQ_INSERT_TAIL "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
-.Fn TAILQ_LAST "TAILQ_HEAD *head" "HEADNAME"
-.Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME"
-.Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME"
-.Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
-.Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME"
-.\"
-.Sh DESCRIPTION
-These macros define and operate on four types of data structures:
-singly-linked lists, singly-linked tail queues, lists, and tail queues.
-All four structures support the following functionality:
-.Bl -enum -compact -offset indent
-.It
-Insertion of a new entry at the head of the list.
-.It
-Insertion of a new entry after any element in the list.
-.It
-O(1) removal of an entry from the head of the list.
-.It
-Forward traversal through the list.
-.It
-Swawpping the contents of two lists.
-.El
-.Pp
-Singly-linked lists are the simplest of the four data structures
-and support only the above functionality.
-Singly-linked lists are ideal for applications with large datasets
-and few or no removals,
-or for implementing a LIFO queue.
-Singly-linked lists add the following functionality:
-.Bl -enum -compact -offset indent
-.It
-O(n) removal of any entry in the list.
-.El
-.Pp
-Singly-linked tail queues add the following functionality:
-.Bl -enum -compact -offset indent
-.It
-Entries can be added at the end of a list.
-.It
-O(n) removal of any entry in the list.
-.It
-They may be concatenated.
-.El
-However:
-.Bl -enum -compact -offset indent
-.It
-All list insertions must specify the head of the list.
-.It
-Each head entry requires two pointers rather than one.
-.It
-Code size is about 15% greater and operations run about 20% slower
-than singly-linked lists.
-.El
-.Pp
-Singly-linked tailqs are ideal for applications with large datasets and
-few or no removals,
-or for implementing a FIFO queue.
-.Pp
-All doubly linked types of data structures (lists and tail queues)
-additionally allow:
-.Bl -enum -compact -offset indent
-.It
-Insertion of a new entry before any element in the list.
-.It
-O(1) removal of any entry in the list.
-.El
-However:
-.Bl -enum -compact -offset indent
-.It
-Each element requires two pointers rather than one.
-.It
-Code size and execution time of operations (except for removal) is about
-twice that of the singly-linked data-structures.
-.El
-.Pp
-Linked lists are the simplest of the doubly linked data structures and support
-only the above functionality over singly-linked lists.
-.Pp
-Tail queues add the following functionality:
-.Bl -enum -compact -offset indent
-.It
-Entries can be added at the end of a list.
-.It
-They may be traversed backwards, from tail to head.
-.It
-They may be concatenated.
-.El
-However:
-.Bl -enum -compact -offset indent
-.It
-All list insertions and removals must specify the head of the list.
-.It
-Each head entry requires two pointers rather than one.
-.It
-Code size is about 15% greater and operations run about 20% slower
-than singly-linked lists.
-.El
-.Pp
-In the macro definitions,
-.Fa TYPE
-is the name of a user defined structure,
-that must contain a field of type
-.Li SLIST_ENTRY ,
-.Li STAILQ_ENTRY ,
-.Li LIST_ENTRY ,
-or
-.Li TAILQ_ENTRY ,
-named
-.Fa NAME .
-The argument
-.Fa HEADNAME
-is the name of a user defined structure that must be declared
-using the macros
-.Li SLIST_HEAD ,
-.Li STAILQ_HEAD ,
-.Li LIST_HEAD ,
-or
-.Li TAILQ_HEAD .
-See the examples below for further explanation of how these
-macros are used.
-.Sh SINGLY-LINKED LISTS
-A singly-linked list is headed by a structure defined by the
-.Nm SLIST_HEAD
-macro.
-This structure contains a single pointer to the first element
-on the list.
-The elements are singly linked for minimum space and pointer manipulation
-overhead at the expense of O(n) removal for arbitrary elements.
-New elements can be added to the list after an existing element or
-at the head of the list.
-An
-.Fa SLIST_HEAD
-structure is declared as follows:
-.Bd -literal -offset indent
-SLIST_HEAD(HEADNAME, TYPE) head;
-.Ed
-.Pp
-where
-.Fa HEADNAME
-is the name of the structure to be defined, and
-.Fa TYPE
-is the type of the elements to be linked into the list.
-A pointer to the head of the list can later be declared as:
-.Bd -literal -offset indent
-struct HEADNAME *headp;
-.Ed
-.Pp
-(The names
-.Li head
-and
-.Li headp
-are user selectable.)
-.Pp
-The macro
-.Nm SLIST_HEAD_INITIALIZER
-evaluates to an initializer for the list
-.Fa head .
-.Pp
-The macro
-.Nm SLIST_EMPTY
-evaluates to true if there are no elements in the list.
-.Pp
-The macro
-.Nm SLIST_ENTRY
-declares a structure that connects the elements in
-the list.
-.Pp
-The macro
-.Nm SLIST_FIRST
-returns the first element in the list or NULL if the list is empty.
-.Pp
-The macro
-.Nm SLIST_FOREACH
-traverses the list referenced by
-.Fa head
-in the forward direction, assigning each element in
-turn to
-.Fa var .
-.Pp
-The macro
-.Nm SLIST_FOREACH_SAFE
-traverses the list referenced by
-.Fa head
-in the forward direction, assigning each element in
-turn to
-.Fa var .
-However, unlike
-.Fn SLIST_FOREACH
-here it is permitted to both remove
-.Fa var
-as well as free it from within the loop safely without interfering with the
-traversal.
-.Pp
-The macro
-.Nm SLIST_INIT
-initializes the list referenced by
-.Fa head .
-.Pp
-The macro
-.Nm SLIST_INSERT_HEAD
-inserts the new element
-.Fa elm
-at the head of the list.
-.Pp
-The macro
-.Nm SLIST_INSERT_AFTER
-inserts the new element
-.Fa elm
-after the element
-.Fa listelm .
-.Pp
-The macro
-.Nm SLIST_NEXT
-returns the next element in the list.
-.Pp
-The macro
-.Nm SLIST_REMOVE_AFTER
-removes the element after
-.Fa elm
-from the list. Unlike
-.Fa SLIST_REMOVE ,
-this macro does not traverse the entire list.
-.Pp
-The macro
-.Nm SLIST_REMOVE_HEAD
-removes the element
-.Fa elm
-from the head of the list.
-For optimum efficiency,
-elements being removed from the head of the list should explicitly use
-this macro instead of the generic
-.Fa SLIST_REMOVE
-macro.
-.Pp
-The macro
-.Nm SLIST_REMOVE
-removes the element
-.Fa elm
-from the list.
-.Pp
-The macro
-.Nm SLIST_SWAP
-swaps the contents of
-.Fa head1
-and
-.Fa head2 .
-.Sh SINGLY-LINKED LIST EXAMPLE
-.Bd -literal
-SLIST_HEAD(slisthead, entry) head =
-    SLIST_HEAD_INITIALIZER(head);
-struct slisthead *headp;		/* Singly-linked List head. */
-struct entry {
-	...
-	SLIST_ENTRY(entry) entries;	/* Singly-linked List. */
-	...
-} *n1, *n2, *n3, *np;
-
-SLIST_INIT(&head);			/* Initialize the list. */
-
-n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
-SLIST_INSERT_HEAD(&head, n1, entries);
-
-n2 = malloc(sizeof(struct entry));	/* Insert after. */
-SLIST_INSERT_AFTER(n1, n2, entries);
-
-SLIST_REMOVE(&head, n2, entry, entries);/* Deletion. */
-free(n2);
-
-n3 = SLIST_FIRST(&head);
-SLIST_REMOVE_HEAD(&head, entries);	/* Deletion from the head. */
-free(n3);
-					/* Forward traversal. */
-SLIST_FOREACH(np, &head, entries)
-	np-> ...
-					/* Safe forward traversal. */
-SLIST_FOREACH_SAFE(np, &head, entries, np_temp) {
-	np->do_stuff();
-	...
-	SLIST_REMOVE(&head, np, entry, entries);
-	free(np);
-}
-
-while (!SLIST_EMPTY(&head)) {		/* List Deletion. */
-	n1 = SLIST_FIRST(&head);
-	SLIST_REMOVE_HEAD(&head, entries);
-	free(n1);
-}
-.Ed
-.Sh SINGLY-LINKED TAIL QUEUES
-A singly-linked tail queue is headed by a structure defined by the
-.Nm STAILQ_HEAD
-macro.
-This structure contains a pair of pointers,
-one to the first element in the tail queue and the other to
-the last element in the tail queue.
-The elements are singly linked for minimum space and pointer
-manipulation overhead at the expense of O(n) removal for arbitrary
-elements.
-New elements can be added to the tail queue after an existing element,
-at the head of the tail queue, or at the end of the tail queue.
-A
-.Fa STAILQ_HEAD
-structure is declared as follows:
-.Bd -literal -offset indent
-STAILQ_HEAD(HEADNAME, TYPE) head;
-.Ed
-.Pp
-where
-.Li HEADNAME
-is the name of the structure to be defined, and
-.Li TYPE
-is the type of the elements to be linked into the tail queue.
-A pointer to the head of the tail queue can later be declared as:
-.Bd -literal -offset indent
-struct HEADNAME *headp;
-.Ed
-.Pp
-(The names
-.Li head
-and
-.Li headp
-are user selectable.)
-.Pp
-The macro
-.Nm STAILQ_HEAD_INITIALIZER
-evaluates to an initializer for the tail queue
-.Fa head .
-.Pp
-The macro
-.Nm STAILQ_CONCAT
-concatenates the tail queue headed by
-.Fa head2
-onto the end of the one headed by
-.Fa head1
-removing all entries from the former.
-.Pp
-The macro
-.Nm STAILQ_EMPTY
-evaluates to true if there are no items on the tail queue.
-.Pp
-The macro
-.Nm STAILQ_ENTRY
-declares a structure that connects the elements in
-the tail queue.
-.Pp
-The macro
-.Nm STAILQ_FIRST
-returns the first item on the tail queue or NULL if the tail queue
-is empty.
-.Pp
-The macro
-.Nm STAILQ_FOREACH
-traverses the tail queue referenced by
-.Fa head
-in the forward direction, assigning each element
-in turn to
-.Fa var .
-.Pp
-The macro
-.Nm STAILQ_FOREACH_SAFE
-traverses the tail queue referenced by
-.Fa head
-in the forward direction, assigning each element
-in turn to
-.Fa var .
-However, unlike
-.Fn STAILQ_FOREACH
-here it is permitted to both remove
-.Fa var
-as well as free it from within the loop safely without interfering with the
-traversal.
-.Pp
-The macro
-.Nm STAILQ_INIT
-initializes the tail queue referenced by
-.Fa head .
-.Pp
-The macro
-.Nm STAILQ_INSERT_HEAD
-inserts the new element
-.Fa elm
-at the head of the tail queue.
-.Pp
-The macro
-.Nm STAILQ_INSERT_TAIL
-inserts the new element
-.Fa elm
-at the end of the tail queue.
-.Pp
-The macro
-.Nm STAILQ_INSERT_AFTER
-inserts the new element
-.Fa elm
-after the element
-.Fa listelm .
-.Pp
-The macro
-.Nm STAILQ_LAST
-returns the last item on the tail queue.
-If the tail queue is empty the return value is
-.Dv NULL .
-.Pp
-The macro
-.Nm STAILQ_NEXT
-returns the next item on the tail queue, or NULL this item is the last.
-.Pp
-The macro
-.Nm STAILQ_REMOVE_AFTER
-removes the element after
-.Fa elm
-from the tail queue. Unlike
-.Fa STAILQ_REMOVE ,
-this macro does not traverse the entire tail queue.
-.Pp
-The macro
-.Nm STAILQ_REMOVE_HEAD
-removes the element at the head of the tail queue.
-For optimum efficiency,
-elements being removed from the head of the tail queue should
-use this macro explicitly rather than the generic
-.Fa STAILQ_REMOVE
-macro.
-.Pp
-The macro
-.Nm STAILQ_REMOVE
-removes the element
-.Fa elm
-from the tail queue.
-.Pp
-The macro
-.Nm STAILQ_SWAP
-swaps the contents of
-.Fa head1
-and
-.Fa head2 .
-.Sh SINGLY-LINKED TAIL QUEUE EXAMPLE
-.Bd -literal
-STAILQ_HEAD(stailhead, entry) head =
-    STAILQ_HEAD_INITIALIZER(head);
-struct stailhead *headp;		/* Singly-linked tail queue head. */
-struct entry {
-	...
-	STAILQ_ENTRY(entry) entries;	/* Tail queue. */
-	...
-} *n1, *n2, *n3, *np;
-
-STAILQ_INIT(&head);			/* Initialize the queue. */
-
-n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
-STAILQ_INSERT_HEAD(&head, n1, entries);
-
-n1 = malloc(sizeof(struct entry));	/* Insert at the tail. */
-STAILQ_INSERT_TAIL(&head, n1, entries);
-
-n2 = malloc(sizeof(struct entry));	/* Insert after. */
-STAILQ_INSERT_AFTER(&head, n1, n2, entries);
-					/* Deletion. */
-STAILQ_REMOVE(&head, n2, entry, entries);
-free(n2);
-					/* Deletion from the head. */
-n3 = STAILQ_FIRST(&head);
-STAILQ_REMOVE_HEAD(&head, entries);
-free(n3);
-					/* Forward traversal. */
-STAILQ_FOREACH(np, &head, entries)
-	np-> ...
-					/* Safe forward traversal. */
-STAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
-	np->do_stuff();
-	...
-	STAILQ_REMOVE(&head, np, entry, entries);
-	free(np);
-}
-					/* TailQ Deletion. */
-while (!STAILQ_EMPTY(&head)) {
-	n1 = STAILQ_FIRST(&head);
-	STAILQ_REMOVE_HEAD(&head, entries);
-	free(n1);
-}
-					/* Faster TailQ Deletion. */
-n1 = STAILQ_FIRST(&head);
-while (n1 != NULL) {
-	n2 = STAILQ_NEXT(n1, entries);
-	free(n1);
-	n1 = n2;
-}
-STAILQ_INIT(&head);
-.Ed
-.Sh LISTS
-A list is headed by a structure defined by the
-.Nm LIST_HEAD
-macro.
-This structure contains a single pointer to the first element
-on the list.
-The elements are doubly linked so that an arbitrary element can be
-removed without traversing the list.
-New elements can be added to the list after an existing element,
-before an existing element, or at the head of the list.
-A
-.Fa LIST_HEAD
-structure is declared as follows:
-.Bd -literal -offset indent
-LIST_HEAD(HEADNAME, TYPE) head;
-.Ed
-.Pp
-where
-.Fa HEADNAME
-is the name of the structure to be defined, and
-.Fa TYPE
-is the type of the elements to be linked into the list.
-A pointer to the head of the list can later be declared as:
-.Bd -literal -offset indent
-struct HEADNAME *headp;
-.Ed
-.Pp
-(The names
-.Li head
-and
-.Li headp
-are user selectable.)
-.Pp
-The macro
-.Nm LIST_HEAD_INITIALIZER
-evaluates to an initializer for the list
-.Fa head .
-.Pp
-The macro
-.Nm LIST_EMPTY
-evaluates to true if there are no elements in the list.
-.Pp
-The macro
-.Nm LIST_ENTRY
-declares a structure that connects the elements in
-the list.
-.Pp
-The macro
-.Nm LIST_FIRST
-returns the first element in the list or NULL if the list
-is empty.
-.Pp
-The macro
-.Nm LIST_FOREACH
-traverses the list referenced by
-.Fa head
-in the forward direction, assigning each element in turn to
-.Fa var .
-.Pp
-The macro
-.Nm LIST_FOREACH_SAFE
-traverses the list referenced by
-.Fa head
-in the forward direction, assigning each element in turn to
-.Fa var .
-However, unlike
-.Fn LIST_FOREACH
-here it is permitted to both remove
-.Fa var
-as well as free it from within the loop safely without interfering with the
-traversal.
-.Pp
-The macro
-.Nm LIST_INIT
-initializes the list referenced by
-.Fa head .
-.Pp
-The macro
-.Nm LIST_INSERT_HEAD
-inserts the new element
-.Fa elm
-at the head of the list.
-.Pp
-The macro
-.Nm LIST_INSERT_AFTER
-inserts the new element
-.Fa elm
-after the element
-.Fa listelm .
-.Pp
-The macro
-.Nm LIST_INSERT_BEFORE
-inserts the new element
-.Fa elm
-before the element
-.Fa listelm .
-.Pp
-The macro
-.Nm LIST_NEXT
-returns the next element in the list, or NULL if this is the last.
-.Pp
-The macro
-.Nm LIST_REMOVE
-removes the element
-.Fa elm
-from the list.
-.Pp
-The macro
-.Nm LIST_SWAP
-swaps the contents of
-.Fa head1
-and
-.Fa head2 .
-.Sh LIST EXAMPLE
-.Bd -literal
-LIST_HEAD(listhead, entry) head =
-    LIST_HEAD_INITIALIZER(head);
-struct listhead *headp;			/* List head. */
-struct entry {
-	...
-	LIST_ENTRY(entry) entries;	/* List. */
-	...
-} *n1, *n2, *n3, *np, *np_temp;
-
-LIST_INIT(&head);			/* Initialize the list. */
-
-n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
-LIST_INSERT_HEAD(&head, n1, entries);
-
-n2 = malloc(sizeof(struct entry));	/* Insert after. */
-LIST_INSERT_AFTER(n1, n2, entries);
-
-n3 = malloc(sizeof(struct entry));	/* Insert before. */
-LIST_INSERT_BEFORE(n2, n3, entries);
-
-LIST_REMOVE(n2, entries);		/* Deletion. */
-free(n2);
-					/* Forward traversal. */
-LIST_FOREACH(np, &head, entries)
-	np-> ...
-
-					/* Safe forward traversal. */
-LIST_FOREACH_SAFE(np, &head, entries, np_temp) {
-	np->do_stuff();
-	...
-	LIST_REMOVE(np, entries);
-	free(np);
-}
-
-while (!LIST_EMPTY(&head)) {		/* List Deletion. */
-	n1 = LIST_FIRST(&head);
-	LIST_REMOVE(n1, entries);
-	free(n1);
-}
-
-n1 = LIST_FIRST(&head);			/* Faster List Deletion. */
-while (n1 != NULL) {
-	n2 = LIST_NEXT(n1, entries);
-	free(n1);
-	n1 = n2;
-}
-LIST_INIT(&head);
-.Ed
-.Sh TAIL QUEUES
-A tail queue is headed by a structure defined by the
-.Nm TAILQ_HEAD
-macro.
-This structure contains a pair of pointers,
-one to the first element in the tail queue and the other to
-the last element in the tail queue.
-The elements are doubly linked so that an arbitrary element can be
-removed without traversing the tail queue.
-New elements can be added to the tail queue after an existing element,
-before an existing element, at the head of the tail queue,
-or at the end of the tail queue.
-A
-.Fa TAILQ_HEAD
-structure is declared as follows:
-.Bd -literal -offset indent
-TAILQ_HEAD(HEADNAME, TYPE) head;
-.Ed
-.Pp
-where
-.Li HEADNAME
-is the name of the structure to be defined, and
-.Li TYPE
-is the type of the elements to be linked into the tail queue.
-A pointer to the head of the tail queue can later be declared as:
-.Bd -literal -offset indent
-struct HEADNAME *headp;
-.Ed
-.Pp
-(The names
-.Li head
-and
-.Li headp
-are user selectable.)
-.Pp
-The macro
-.Nm TAILQ_HEAD_INITIALIZER
-evaluates to an initializer for the tail queue
-.Fa head .
-.Pp
-The macro
-.Nm TAILQ_CONCAT
-concatenates the tail queue headed by
-.Fa head2
-onto the end of the one headed by
-.Fa head1
-removing all entries from the former.
-.Pp
-The macro
-.Nm TAILQ_EMPTY
-evaluates to true if there are no items on the tail queue.
-.Pp
-The macro
-.Nm TAILQ_ENTRY
-declares a structure that connects the elements in
-the tail queue.
-.Pp
-The macro
-.Nm TAILQ_FIRST
-returns the first item on the tail queue or NULL if the tail queue
-is empty.
-.Pp
-The macro
-.Nm TAILQ_FOREACH
-traverses the tail queue referenced by
-.Fa head
-in the forward direction, assigning each element in turn to
-.Fa var .
-.Fa var
-is set to
-.Dv NULL
-if the loop completes normally, or if there were no elements.
-.Pp
-The macro
-.Nm TAILQ_FOREACH_REVERSE
-traverses the tail queue referenced by
-.Fa head
-in the reverse direction, assigning each element in turn to
-.Fa var .
-.Pp
-The macros
-.Nm TAILQ_FOREACH_SAFE
-and
-.Nm TAILQ_FOREACH_REVERSE_SAFE
-traverse the list referenced by
-.Fa head
-in the forward or reverse direction respectively,
-assigning each element in turn to
-.Fa var .
-However, unlike their unsafe counterparts,
-.Nm TAILQ_FOREACH
-and
-.Nm TAILQ_FOREACH_REVERSE
-permit to both remove
-.Fa var
-as well as free it from within the loop safely without interfering with the
-traversal.
-.Pp
-The macro
-.Nm TAILQ_INIT
-initializes the tail queue referenced by
-.Fa head .
-.Pp
-The macro
-.Nm TAILQ_INSERT_HEAD
-inserts the new element
-.Fa elm
-at the head of the tail queue.
-.Pp
-The macro
-.Nm TAILQ_INSERT_TAIL
-inserts the new element
-.Fa elm
-at the end of the tail queue.
-.Pp
-The macro
-.Nm TAILQ_INSERT_AFTER
-inserts the new element
-.Fa elm
-after the element
-.Fa listelm .
-.Pp
-The macro
-.Nm TAILQ_INSERT_BEFORE
-inserts the new element
-.Fa elm
-before the element
-.Fa listelm .
-.Pp
-The macro
-.Nm TAILQ_LAST
-returns the last item on the tail queue.
-If the tail queue is empty the return value is
-.Dv NULL .
-.Pp
-The macro
-.Nm TAILQ_NEXT
-returns the next item on the tail queue, or NULL if this item is the last.
-.Pp
-The macro
-.Nm TAILQ_PREV
-returns the previous item on the tail queue, or NULL if this item
-is the first.
-.Pp
-The macro
-.Nm TAILQ_REMOVE
-removes the element
-.Fa elm
-from the tail queue.
-.Pp
-The macro
-.Nm TAILQ_SWAP
-swaps the contents of
-.Fa head1
-and
-.Fa head2 .
-.Sh TAIL QUEUE EXAMPLE
-.Bd -literal
-TAILQ_HEAD(tailhead, entry) head =
-    TAILQ_HEAD_INITIALIZER(head);
-struct tailhead *headp;			/* Tail queue head. */
-struct entry {
-	...
-	TAILQ_ENTRY(entry) entries;	/* Tail queue. */
-	...
-} *n1, *n2, *n3, *np;
-
-TAILQ_INIT(&head);			/* Initialize the queue. */
-
-n1 = malloc(sizeof(struct entry));	/* Insert at the head. */
-TAILQ_INSERT_HEAD(&head, n1, entries);
-
-n1 = malloc(sizeof(struct entry));	/* Insert at the tail. */
-TAILQ_INSERT_TAIL(&head, n1, entries);
-
-n2 = malloc(sizeof(struct entry));	/* Insert after. */
-TAILQ_INSERT_AFTER(&head, n1, n2, entries);
-
-n3 = malloc(sizeof(struct entry));	/* Insert before. */
-TAILQ_INSERT_BEFORE(n2, n3, entries);
-
-TAILQ_REMOVE(&head, n2, entries);	/* Deletion. */
-free(n2);
-					/* Forward traversal. */
-TAILQ_FOREACH(np, &head, entries)
-	np-> ...
-					/* Safe forward traversal. */
-TAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
-	np->do_stuff();
-	...
-	TAILQ_REMOVE(&head, np, entries);
-	free(np);
-}
-					/* Reverse traversal. */
-TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries)
-	np-> ...
-					/* TailQ Deletion. */
-while (!TAILQ_EMPTY(&head)) {
-	n1 = TAILQ_FIRST(&head);
-	TAILQ_REMOVE(&head, n1, entries);
-	free(n1);
-}
-					/* Faster TailQ Deletion. */
-n1 = TAILQ_FIRST(&head);
-while (n1 != NULL) {
-	n2 = TAILQ_NEXT(n1, entries);
-	free(n1);
-	n1 = n2;
-}
-TAILQ_INIT(&head);
-.Ed
-.Sh SEE ALSO
-.Xr tree 3
-.Sh HISTORY
-The
-.Nm queue
-functions first appeared in
-.Bx 4.4 .
diff -r 6c9a73817770 -r 934c14ab9f19 tools/libxl/external/bsd-sys-queue.h
--- a/tools/libxl/external/bsd-sys-queue.h	Tue Jan 31 11:39:37 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,637 +0,0 @@
-/*-
- * Copyright (c) 1991, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)queue.h	8.5 (Berkeley) 8/20/94
- * $FreeBSD$
- */
-
-#ifndef _SYS_QUEUE_H_
-#define	_SYS_QUEUE_H_
-
-#include <sys/cdefs.h>
-
-/*
- * This file defines four types of data structures: singly-linked lists,
- * singly-linked tail queues, lists and tail queues.
- *
- * A singly-linked list is headed by a single forward pointer. The elements
- * are singly linked for minimum space and pointer manipulation overhead at
- * the expense of O(n) removal for arbitrary elements. New elements can be
- * added to the list after an existing element or at the head of the list.
- * Elements being removed from the head of the list should use the explicit
- * macro for this purpose for optimum efficiency. A singly-linked list may
- * only be traversed in the forward direction.  Singly-linked lists are ideal
- * for applications with large datasets and few or no removals or for
- * implementing a LIFO queue.
- *
- * A singly-linked tail queue is headed by a pair of pointers, one to the
- * head of the list and the other to the tail of the list. The elements are
- * singly linked for minimum space and pointer manipulation overhead at the
- * expense of O(n) removal for arbitrary elements. New elements can be added
- * to the list after an existing element, at the head of the list, or at the
- * end of the list. Elements being removed from the head of the tail queue
- * should use the explicit macro for this purpose for optimum efficiency.
- * A singly-linked tail queue may only be traversed in the forward direction.
- * Singly-linked tail queues are ideal for applications with large datasets
- * and few or no removals or for implementing a FIFO queue.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may be traversed in either direction.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- *
- *
- *				SLIST	LIST	STAILQ	TAILQ
- * _HEAD			+	+	+	+
- * _HEAD_INITIALIZER		+	+	+	+
- * _ENTRY			+	+	+	+
- * _INIT			+	+	+	+
- * _EMPTY			+	+	+	+
- * _FIRST			+	+	+	+
- * _NEXT			+	+	+	+
- * _PREV			-	-	-	+
- * _LAST			-	-	+	+
- * _FOREACH			+	+	+	+
- * _FOREACH_SAFE		+	+	+	+
- * _FOREACH_REVERSE		-	-	-	+
- * _FOREACH_REVERSE_SAFE	-	-	-	+
- * _INSERT_HEAD			+	+	+	+
- * _INSERT_BEFORE		-	+	-	+
- * _INSERT_AFTER		+	+	+	+
- * _INSERT_TAIL			-	-	+	+
- * _CONCAT			-	-	+	+
- * _REMOVE_AFTER		+	-	+	-
- * _REMOVE_HEAD			+	-	+	-
- * _REMOVE			+	+	+	+
- * _SWAP			+	+	+	+
- *
- */
-#ifdef QUEUE_MACRO_DEBUG
-/* Store the last 2 places the queue element or head was altered */
-struct qm_trace {
-	char * lastfile;
-	int lastline;
-	char * prevfile;
-	int prevline;
-};
-
-#define	TRACEBUF	struct qm_trace trace;
-#define	TRASHIT(x)	do {(x) = (void *)-1;} while (0)
-#define	QMD_SAVELINK(name, link)	void **name = (void *)&(link)
-
-#define	QMD_TRACE_HEAD(head) do {					\
-	(head)->trace.prevline = (head)->trace.lastline;		\
-	(head)->trace.prevfile = (head)->trace.lastfile;		\
-	(head)->trace.lastline = __LINE__;				\
-	(head)->trace.lastfile = __FILE__;				\
-} while (0)
-
-#define	QMD_TRACE_ELEM(elem) do {					\
-	(elem)->trace.prevline = (elem)->trace.lastline;		\
-	(elem)->trace.prevfile = (elem)->trace.lastfile;		\
-	(elem)->trace.lastline = __LINE__;				\
-	(elem)->trace.lastfile = __FILE__;				\
-} while (0)
-
-#else
-#define	QMD_TRACE_ELEM(elem)
-#define	QMD_TRACE_HEAD(head)
-#define	QMD_SAVELINK(name, link)
-#define	TRACEBUF
-#define	TRASHIT(x)
-#endif	/* QUEUE_MACRO_DEBUG */
-
-/*
- * Singly-linked List declarations.
- */
-#define	SLIST_HEAD(name, type)						\
-struct name {								\
-	struct type *slh_first;	/* first element */			\
-}
-
-#define	SLIST_HEAD_INITIALIZER(head)					\
-	{ NULL }
-
-#define	SLIST_ENTRY(type)						\
-struct {								\
-	struct type *sle_next;	/* next element */			\
-}
-
-/*
- * Singly-linked List functions.
- */
-#define	SLIST_EMPTY(head)	((head)->slh_first == NULL)
-
-#define	SLIST_FIRST(head)	((head)->slh_first)
-
-#define	SLIST_FOREACH(var, head, field)					\
-	for ((var) = SLIST_FIRST((head));				\
-	    (var);							\
-	    (var) = SLIST_NEXT((var), field))
-
-#define	SLIST_FOREACH_SAFE(var, head, field, tvar)			\
-	for ((var) = SLIST_FIRST((head));				\
-	    (var) && ((tvar) = SLIST_NEXT((var), field), 1);		\
-	    (var) = (tvar))
-
-#define	SLIST_FOREACH_PREVPTR(var, varp, head, field)			\
-	for ((varp) = &SLIST_FIRST((head));				\
-	    ((var) = *(varp)) != NULL;					\
-	    (varp) = &SLIST_NEXT((var), field))
-
-#define	SLIST_INIT(head) do {						\
-	SLIST_FIRST((head)) = NULL;					\
-} while (0)
-
-#define	SLIST_INSERT_AFTER(slistelm, elm, field) do {			\
-	SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field);	\
-	SLIST_NEXT((slistelm), field) = (elm);				\
-} while (0)
-
-#define	SLIST_INSERT_HEAD(head, elm, field) do {			\
-	SLIST_NEXT((elm), field) = SLIST_FIRST((head));			\
-	SLIST_FIRST((head)) = (elm);					\
-} while (0)
-
-#define	SLIST_NEXT(elm, field)	((elm)->field.sle_next)
-
-#define	SLIST_REMOVE(head, elm, type, field) do {			\
-	QMD_SAVELINK(oldnext, (elm)->field.sle_next);			\
-	if (SLIST_FIRST((head)) == (elm)) {				\
-		SLIST_REMOVE_HEAD((head), field);			\
-	}								\
-	else {								\
-		struct type *curelm = SLIST_FIRST((head));		\
-		while (SLIST_NEXT(curelm, field) != (elm))		\
-			curelm = SLIST_NEXT(curelm, field);		\
-		SLIST_REMOVE_AFTER(curelm, field);			\
-	}								\
-	TRASHIT(*oldnext);						\
-} while (0)
-
-#define SLIST_REMOVE_AFTER(elm, field) do {				\
-	SLIST_NEXT(elm, field) =					\
-	    SLIST_NEXT(SLIST_NEXT(elm, field), field);			\
-} while (0)
-
-#define	SLIST_REMOVE_HEAD(head, field) do {				\
-	SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field);	\
-} while (0)
-
-#define SLIST_SWAP(head1, head2, type) do {				\
-	struct type *swap_first = SLIST_FIRST(head1);			\
-	SLIST_FIRST(head1) = SLIST_FIRST(head2);			\
-	SLIST_FIRST(head2) = swap_first;				\
-} while (0)
-
-/*
- * Singly-linked Tail queue declarations.
- */
-#define	STAILQ_HEAD(name, type)						\
-struct name {								\
-	struct type *stqh_first;/* first element */			\
-	struct type **stqh_last;/* addr of last next element */		\
-}
-
-#define	STAILQ_HEAD_INITIALIZER(head)					\
-	{ NULL, &(head).stqh_first }
-
-#define	STAILQ_ENTRY(type)						\
-struct {								\
-	struct type *stqe_next;	/* next element */			\
-}
-
-/*
- * Singly-linked Tail queue functions.
- */
-#define	STAILQ_CONCAT(head1, head2) do {				\
-	if (!STAILQ_EMPTY((head2))) {					\
-		*(head1)->stqh_last = (head2)->stqh_first;		\
-		(head1)->stqh_last = (head2)->stqh_last;		\
-		STAILQ_INIT((head2));					\
-	}								\
-} while (0)
-
-#define	STAILQ_EMPTY(head)	((head)->stqh_first == NULL)
-
-#define	STAILQ_FIRST(head)	((head)->stqh_first)
-
-#define	STAILQ_FOREACH(var, head, field)				\
-	for((var) = STAILQ_FIRST((head));				\
-	   (var);							\
-	   (var) = STAILQ_NEXT((var), field))
-
-
-#define	STAILQ_FOREACH_SAFE(var, head, field, tvar)			\
-	for ((var) = STAILQ_FIRST((head));				\
-	    (var) && ((tvar) = STAILQ_NEXT((var), field), 1);		\
-	    (var) = (tvar))
-
-#define	STAILQ_INIT(head) do {						\
-	STAILQ_FIRST((head)) = NULL;					\
-	(head)->stqh_last = &STAILQ_FIRST((head));			\
-} while (0)
-
-#define	STAILQ_INSERT_AFTER(head, tqelm, elm, field) do {		\
-	if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
-		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\
-	STAILQ_NEXT((tqelm), field) = (elm);				\
-} while (0)
-
-#define	STAILQ_INSERT_HEAD(head, elm, field) do {			\
-	if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL)	\
-		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\
-	STAILQ_FIRST((head)) = (elm);					\
-} while (0)
-
-#define	STAILQ_INSERT_TAIL(head, elm, field) do {			\
-	STAILQ_NEXT((elm), field) = NULL;				\
-	*(head)->stqh_last = (elm);					\
-	(head)->stqh_last = &STAILQ_NEXT((elm), field);			\
-} while (0)
-
-#define	STAILQ_LAST(head, type, field)					\
-	(STAILQ_EMPTY((head)) ?						\
-		NULL :							\
-	        ((struct type *)(void *)				\
-		((char *)((head)->stqh_last) - __offsetof(struct type, field))))
-
-#define	STAILQ_NEXT(elm, field)	((elm)->field.stqe_next)
-
-#define	STAILQ_REMOVE(head, elm, type, field) do {			\
-	QMD_SAVELINK(oldnext, (elm)->field.stqe_next);			\
-	if (STAILQ_FIRST((head)) == (elm)) {				\
-		STAILQ_REMOVE_HEAD((head), field);			\
-	}								\
-	else {								\
-		struct type *curelm = STAILQ_FIRST((head));		\
-		while (STAILQ_NEXT(curelm, field) != (elm))		\
-			curelm = STAILQ_NEXT(curelm, field);		\
-		STAILQ_REMOVE_AFTER(head, curelm, field);		\
-	}								\
-	TRASHIT(*oldnext);						\
-} while (0)
-
-#define STAILQ_REMOVE_AFTER(head, elm, field) do {			\
-	if ((STAILQ_NEXT(elm, field) =					\
-	     STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL)	\
-		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\
-} while (0)
-
-#define	STAILQ_REMOVE_HEAD(head, field) do {				\
-	if ((STAILQ_FIRST((head)) =					\
-	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
-		(head)->stqh_last = &STAILQ_FIRST((head));		\
-} while (0)
-
-#define STAILQ_SWAP(head1, head2, type) do {				\
-	struct type *swap_first = STAILQ_FIRST(head1);			\
-	struct type **swap_last = (head1)->stqh_last;			\
-	STAILQ_FIRST(head1) = STAILQ_FIRST(head2);			\
-	(head1)->stqh_last = (head2)->stqh_last;			\
-	STAILQ_FIRST(head2) = swap_first;				\
-	(head2)->stqh_last = swap_last;					\
-	if (STAILQ_EMPTY(head1))					\
-		(head1)->stqh_last = &STAILQ_FIRST(head1);		\
-	if (STAILQ_EMPTY(head2))					\
-		(head2)->stqh_last = &STAILQ_FIRST(head2);		\
-} while (0)
-
-
-/*
- * List declarations.
- */
-#define	LIST_HEAD(name, type)						\
-struct name {								\
-	struct type *lh_first;	/* first element */			\
-}
-
-#define	LIST_HEAD_INITIALIZER(head)					\
-	{ NULL }
-
-#define	LIST_ENTRY(type)						\
-struct {								\
-	struct type *le_next;	/* next element */			\
-	struct type **le_prev;	/* address of previous next element */	\
-}
-
-/*
- * List functions.
- */
-
-#if (defined(_KERNEL) && defined(INVARIANTS))
-#define	QMD_LIST_CHECK_HEAD(head, field) do {				\
-	if (LIST_FIRST((head)) != NULL &&				\
-	    LIST_FIRST((head))->field.le_prev !=			\
-	     &LIST_FIRST((head)))					\
-		panic("Bad list head %p first->prev != head", (head));	\
-} while (0)
-
-#define	QMD_LIST_CHECK_NEXT(elm, field) do {				\
-	if (LIST_NEXT((elm), field) != NULL &&				\
-	    LIST_NEXT((elm), field)->field.le_prev !=			\
-	     &((elm)->field.le_next))					\
-	     	panic("Bad link elm %p next->prev != elm", (elm));	\
-} while (0)
-
-#define	QMD_LIST_CHECK_PREV(elm, field) do {				\
-	if (*(elm)->field.le_prev != (elm))				\
-		panic("Bad link elm %p prev->next != elm", (elm));	\
-} while (0)
-#else
-#define	QMD_LIST_CHECK_HEAD(head, field)
-#define	QMD_LIST_CHECK_NEXT(elm, field)
-#define	QMD_LIST_CHECK_PREV(elm, field)
-#endif /* (_KERNEL && INVARIANTS) */
-
-#define	LIST_EMPTY(head)	((head)->lh_first == NULL)
-
-#define	LIST_FIRST(head)	((head)->lh_first)
-
-#define	LIST_FOREACH(var, head, field)					\
-	for ((var) = LIST_FIRST((head));				\
-	    (var);							\
-	    (var) = LIST_NEXT((var), field))
-
-#define	LIST_FOREACH_SAFE(var, head, field, tvar)			\
-	for ((var) = LIST_FIRST((head));				\
-	    (var) && ((tvar) = LIST_NEXT((var), field), 1);		\
-	    (var) = (tvar))
-
-#define	LIST_INIT(head) do {						\
-	LIST_FIRST((head)) = NULL;					\
-} while (0)
-
-#define	LIST_INSERT_AFTER(listelm, elm, field) do {			\
-	QMD_LIST_CHECK_NEXT(listelm, field);				\
-	if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
-		LIST_NEXT((listelm), field)->field.le_prev =		\
-		    &LIST_NEXT((elm), field);				\
-	LIST_NEXT((listelm), field) = (elm);				\
-	(elm)->field.le_prev = &LIST_NEXT((listelm), field);		\
-} while (0)
-
-#define	LIST_INSERT_BEFORE(listelm, elm, field) do {			\
-	QMD_LIST_CHECK_PREV(listelm, field);				\
-	(elm)->field.le_prev = (listelm)->field.le_prev;		\
-	LIST_NEXT((elm), field) = (listelm);				\
-	*(listelm)->field.le_prev = (elm);				\
-	(listelm)->field.le_prev = &LIST_NEXT((elm), field);		\
-} while (0)
-
-#define	LIST_INSERT_HEAD(head, elm, field) do {				\
-	QMD_LIST_CHECK_HEAD((head), field);				\
-	if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL)	\
-		LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
-	LIST_FIRST((head)) = (elm);					\
-	(elm)->field.le_prev = &LIST_FIRST((head));			\
-} while (0)
-
-#define	LIST_NEXT(elm, field)	((elm)->field.le_next)
-
-#define	LIST_REMOVE(elm, field) do {					\
-	QMD_SAVELINK(oldnext, (elm)->field.le_next);			\
-	QMD_SAVELINK(oldprev, (elm)->field.le_prev);			\
-	QMD_LIST_CHECK_NEXT(elm, field);				\
-	QMD_LIST_CHECK_PREV(elm, field);				\
-	if (LIST_NEXT((elm), field) != NULL)				\
-		LIST_NEXT((elm), field)->field.le_prev = 		\
-		    (elm)->field.le_prev;				\
-	*(elm)->field.le_prev = LIST_NEXT((elm), field);		\
-	TRASHIT(*oldnext);						\
-	TRASHIT(*oldprev);						\
-} while (0)
-
-#define LIST_SWAP(head1, head2, type, field) do {			\
-	struct type *swap_tmp = LIST_FIRST((head1));			\
-	LIST_FIRST((head1)) = LIST_FIRST((head2));			\
-	LIST_FIRST((head2)) = swap_tmp;					\
-	if ((swap_tmp = LIST_FIRST((head1))) != NULL)			\
-		swap_tmp->field.le_prev = &LIST_FIRST((head1));		\
-	if ((swap_tmp = LIST_FIRST((head2))) != NULL)			\
-		swap_tmp->field.le_prev = &LIST_FIRST((head2));		\
-} while (0)
-
-/*
- * Tail queue declarations.
- */
-#define	TAILQ_HEAD(name, type)						\
-struct name {								\
-	struct type *tqh_first;	/* first element */			\
-	struct type **tqh_last;	/* addr of last next element */		\
-	TRACEBUF							\
-}
-
-#define	TAILQ_HEAD_INITIALIZER(head)					\
-	{ NULL, &(head).tqh_first }
-
-#define	TAILQ_ENTRY(type)						\
-struct {								\
-	struct type *tqe_next;	/* next element */			\
-	struct type **tqe_prev;	/* address of previous next element */	\
-	TRACEBUF							\
-}
-
-/*
- * Tail queue functions.
- */
-#if (defined(_KERNEL) && defined(INVARIANTS))
-#define	QMD_TAILQ_CHECK_HEAD(head, field) do {				\
-	if (!TAILQ_EMPTY(head) &&					\
-	    TAILQ_FIRST((head))->field.tqe_prev !=			\
-	     &TAILQ_FIRST((head)))					\
-		panic("Bad tailq head %p first->prev != head", (head));	\
-} while (0)
-
-#define	QMD_TAILQ_CHECK_TAIL(head, field) do {				\
-	if (*(head)->tqh_last != NULL)					\
-	    	panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); 	\
-} while (0)
-
-#define	QMD_TAILQ_CHECK_NEXT(elm, field) do {				\
-	if (TAILQ_NEXT((elm), field) != NULL &&				\
-	    TAILQ_NEXT((elm), field)->field.tqe_prev !=			\
-	     &((elm)->field.tqe_next))					\
-		panic("Bad link elm %p next->prev != elm", (elm));	\
-} while (0)
-
-#define	QMD_TAILQ_CHECK_PREV(elm, field) do {				\
-	if (*(elm)->field.tqe_prev != (elm))				\
-		panic("Bad link elm %p prev->next != elm", (elm));	\
-} while (0)
-#else
-#define	QMD_TAILQ_CHECK_HEAD(head, field)
-#define	QMD_TAILQ_CHECK_TAIL(head, headname)
-#define	QMD_TAILQ_CHECK_NEXT(elm, field)
-#define	QMD_TAILQ_CHECK_PREV(elm, field)
-#endif /* (_KERNEL && INVARIANTS) */
-
-#define	TAILQ_CONCAT(head1, head2, field) do {				\
-	if (!TAILQ_EMPTY(head2)) {					\
-		*(head1)->tqh_last = (head2)->tqh_first;		\
-		(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last;	\
-		(head1)->tqh_last = (head2)->tqh_last;			\
-		TAILQ_INIT((head2));					\
-		QMD_TRACE_HEAD(head1);					\
-		QMD_TRACE_HEAD(head2);					\
-	}								\
-} while (0)
-
-#define	TAILQ_EMPTY(head)	((head)->tqh_first == NULL)
-
-#define	TAILQ_FIRST(head)	((head)->tqh_first)
-
-#define	TAILQ_FOREACH(var, head, field)					\
-	for ((var) = TAILQ_FIRST((head));				\
-	    (var);							\
-	    (var) = TAILQ_NEXT((var), field))
-
-#define	TAILQ_FOREACH_SAFE(var, head, field, tvar)			\
-	for ((var) = TAILQ_FIRST((head));				\
-	    (var) && ((tvar) = TAILQ_NEXT((var), field), 1);		\
-	    (var) = (tvar))
-
-#define	TAILQ_FOREACH_REVERSE(var, head, headname, field)		\
-	for ((var) = TAILQ_LAST((head), headname);			\
-	    (var);							\
-	    (var) = TAILQ_PREV((var), headname, field))
-
-#define	TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)	\
-	for ((var) = TAILQ_LAST((head), headname);			\
-	    (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1);	\
-	    (var) = (tvar))
-
-#define	TAILQ_INIT(head) do {						\
-	TAILQ_FIRST((head)) = NULL;					\
-	(head)->tqh_last = &TAILQ_FIRST((head));			\
-	QMD_TRACE_HEAD(head);						\
-} while (0)
-
-#define	TAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
-	QMD_TAILQ_CHECK_NEXT(listelm, field);				\
-	if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
-		TAILQ_NEXT((elm), field)->field.tqe_prev = 		\
-		    &TAILQ_NEXT((elm), field);				\
-	else {								\
-		(head)->tqh_last = &TAILQ_NEXT((elm), field);		\
-		QMD_TRACE_HEAD(head);					\
-	}								\
-	TAILQ_NEXT((listelm), field) = (elm);				\
-	(elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field);		\
-	QMD_TRACE_ELEM(&(elm)->field);					\
-	QMD_TRACE_ELEM(&listelm->field);				\
-} while (0)
-
-#define	TAILQ_INSERT_BEFORE(listelm, elm, field) do {			\
-	QMD_TAILQ_CHECK_PREV(listelm, field);				\
-	(elm)->field.tqe_prev = (listelm)->field.tqe_prev;		\
-	TAILQ_NEXT((elm), field) = (listelm);				\
-	*(listelm)->field.tqe_prev = (elm);				\
-	(listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field);		\
-	QMD_TRACE_ELEM(&(elm)->field);					\
-	QMD_TRACE_ELEM(&listelm->field);				\
-} while (0)
-
-#define	TAILQ_INSERT_HEAD(head, elm, field) do {			\
-	QMD_TAILQ_CHECK_HEAD(head, field);				\
-	if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL)	\
-		TAILQ_FIRST((head))->field.tqe_prev =			\
-		    &TAILQ_NEXT((elm), field);				\
-	else								\
-		(head)->tqh_last = &TAILQ_NEXT((elm), field);		\
-	TAILQ_FIRST((head)) = (elm);					\
-	(elm)->field.tqe_prev = &TAILQ_FIRST((head));			\
-	QMD_TRACE_HEAD(head);						\
-	QMD_TRACE_ELEM(&(elm)->field);					\
-} while (0)
-
-#define	TAILQ_INSERT_TAIL(head, elm, field) do {			\
-	QMD_TAILQ_CHECK_TAIL(head, field);				\
-	TAILQ_NEXT((elm), field) = NULL;				\
-	(elm)->field.tqe_prev = (head)->tqh_last;			\
-	*(head)->tqh_last = (elm);					\
-	(head)->tqh_last = &TAILQ_NEXT((elm), field);			\
-	QMD_TRACE_HEAD(head);						\
-	QMD_TRACE_ELEM(&(elm)->field);					\
-} while (0)
-
-#define	TAILQ_LAST(head, headname)					\
-	(*(((struct headname *)((head)->tqh_last))->tqh_last))
-
-#define	TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-
-#define	TAILQ_PREV(elm, headname, field)				\
-	(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-
-#define	TAILQ_REMOVE(head, elm, field) do {				\
-	QMD_SAVELINK(oldnext, (elm)->field.tqe_next);			\
-	QMD_SAVELINK(oldprev, (elm)->field.tqe_prev);			\
-	QMD_TAILQ_CHECK_NEXT(elm, field);				\
-	QMD_TAILQ_CHECK_PREV(elm, field);				\
-	if ((TAILQ_NEXT((elm), field)) != NULL)				\
-		TAILQ_NEXT((elm), field)->field.tqe_prev = 		\
-		    (elm)->field.tqe_prev;				\
-	else {								\
-		(head)->tqh_last = (elm)->field.tqe_prev;		\
-		QMD_TRACE_HEAD(head);					\
-	}								\
-	*(elm)->field.tqe_prev = TAILQ_NEXT((elm), field);		\
-	TRASHIT(*oldnext);						\
-	TRASHIT(*oldprev);						\
-	QMD_TRACE_ELEM(&(elm)->field);					\
-} while (0)
-
-#define TAILQ_SWAP(head1, head2, type, field) do {			\
-	struct type *swap_first = (head1)->tqh_first;			\
-	struct type **swap_last = (head1)->tqh_last;			\
-	(head1)->tqh_first = (head2)->tqh_first;			\
-	(head1)->tqh_last = (head2)->tqh_last;				\
-	(head2)->tqh_first = swap_first;				\
-	(head2)->tqh_last = swap_last;					\
-	if ((swap_first = (head1)->tqh_first) != NULL)			\
-		swap_first->field.tqe_prev = &(head1)->tqh_first;	\
-	else								\
-		(head1)->tqh_last = &(head1)->tqh_first;		\
-	if ((swap_first = (head2)->tqh_first) != NULL)			\
-		swap_first->field.tqe_prev = &(head2)->tqh_first;	\
-	else								\
-		(head2)->tqh_last = &(head2)->tqh_first;		\
-} while (0)
-
-#endif /* !_SYS_QUEUE_H_ */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog

From xen-users-bounces@lists.xensource.com Mon Feb 06 16:00:04 2012
Return-path: <xen-users-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 06 Feb 2012 16:00:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xensource.com>)
	id 1RuQxC-0004mf-3o; Mon, 06 Feb 2012 15:58:06 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <dgonzalezh@gmail.com>) id 1RuQx9-0004mI-W7
	for Xen-users@lists.xensource.com; Mon, 06 Feb 2012 15:58:04 +0000
X-Env-Sender: dgonzalezh@gmail.com
X-Msg-Ref: server-16.tower-216.messagelabs.com!1328543613!12057680!1
X-Originating-IP: [209.85.214.43]
X-SpamReason: No, hits=1.7 required=7.0 tests=BODY_RANDOM_LONG,
	HTML_20_30,HTML_MESSAGE,ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,
	UPPERCASE_25_50,spamassassin: 
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32440 invoked from network); 6 Feb 2012 15:53:34 -0000
Received: from mail-bk0-f43.google.com (HELO mail-bk0-f43.google.com)
	(209.85.214.43)
	by server-16.tower-216.messagelabs.com with RC4-SHA encrypted SMTP;
	6 Feb 2012 15:53:34 -0000
Received: by bkbzv3 with SMTP id zv3so14645118bkb.30
	for <Xen-users@lists.xensource.com>;
	Mon, 06 Feb 2012 07:53:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type;
	bh=YHy7FqcOgIj49aEFAJVNjijvqbMB3G9HM/ox1e5Yy7Y=;
	b=oqQ+8OCyaYBB/Mfu2RfM2W7VH1UsQcnbWQTSg2CSgXxA1J4sWUzVpwB3zdGmFzqv7r
	nhmAvZkkpOqq5m3Vnd+wj0abhQBvxX1ZY/PPyNdczAn6a/UVNB/yxExAuIndCPLlviLV
	ur+EyckTQ+EV+OxduiVdhxSwjd/CDAd53+kw0=
MIME-Version: 1.0
Received: by 10.204.136.220 with SMTP id s28mr8870030bkt.59.1328543613573;
	Mon, 06 Feb 2012 07:53:33 -0800 (PST)
Received: by 10.205.26.68 with HTTP; Mon, 6 Feb 2012 07:53:33 -0800 (PST)
In-Reply-To: <CAEwRVpNAKXM2913wrw7qxCL-0Ar55AKxVAb1cK5d_i9TVd9zRw@mail.gmail.com>
References: <CACc2k3dWzZ=8b9qm6qeeaUsRoTZQfCT=JH0jFJeQnvQLT7nymA@mail.gmail.com>
	<CAEwRVpP7tw5gfG_F4vvueQ7+z8jdnfMNAf0ZB6ag-BxqyxsBNA@mail.gmail.com>
	<CACc2k3dKLHTzZY697sR3K0RKWRMk8aQW_tsc82St89tYo=FcKQ@mail.gmail.com>
	<CAEwRVpOvbAMCCOHSz+=pFTF6txLn+kjQrK=wwFiEj2cfJTRexA@mail.gmail.com>
	<CACc2k3dn=z9n+KWpMsj8w3x3bZ3aAQ9QWZyACamfGznuYZr-qg@mail.gmail.com>
	<CAEwRVpPD0i7n6sPmsL5CCmwJjGrx6PcdpvLXp1hZgZ2bYY27sg@mail.gmail.com>
	<CACc2k3c_J2a-QNHJiZej-07n20oeTSsGwLspN2gzi8p3w9CEDQ@mail.gmail.com>
	<CAEwRVpNAKXM2913wrw7qxCL-0Ar55AKxVAb1cK5d_i9TVd9zRw@mail.gmail.com>
Date: Mon, 6 Feb 2012 10:53:33 -0500
Message-ID: <CACc2k3fOryQm02weLNt2zZ8D=wsTi=hr+xKCVu1ULYJwXs6f9w@mail.gmail.com>
From: David Gonzalez <dgonzalezh@gmail.com>
To: Teck Choon Giam <giamteckchoon@gmail.com>
Cc: Xen-users@lists.xensource.com
Subject: Re: [Xen-users] XEN 4.1.2+Centos 6.2+Kernel 3.X
X-BeenThere: xen-users@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen user discussion <xen-users.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xensource.com>
List-Help: <mailto:xen-users-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xensource.com?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2252704011190247239=="
Sender: xen-users-bounces@lists.xensource.com
Errors-To: xen-users-bounces@lists.xensource.com

--===============2252704011190247239==
Content-Type: multipart/alternative; boundary=0015175cffe827daea04b84daa0c

--0015175cffe827daea04b84daa0c
Content-Type: text/plain; charset=ISO-8859-1

Hey Choon,

On Mon, Feb 6, 2012 at 1:13 AM, Teck Choon Giam <giamteckchoon@gmail.com>wrote:

> On Mon, Feb 6, 2012 at 11:46 AM, David Gonzalez <dgonzalezh@gmail.com>
> wrote:
> > Hey
> >
> > On Sat, Feb 4, 2012 at 6:31 PM, Teck Choon Giam <giamteckchoon@gmail.com
> >
> > wrote:
> >>
> >> On Sun, Feb 5, 2012 at 6:54 AM, David Gonzalez <dgonzalezh@gmail.com>
> >> wrote:
> >> >
> >> >
> >> > On Sat, Feb 4, 2012 at 5:01 PM, Teck Choon Giam
> >> > <giamteckchoon@gmail.com>
> >> > wrote:
> >> >>
> >> >> On Sun, Feb 5, 2012 at 5:35 AM, David Gonzalez <dgonzalezh@gmail.com
> >
> >> >> wrote:
> >> >> > Yo, Teck, nice name heh,
> >> >>
> >> >> Grrr... My Surname is Giam and Name is Teck Choon :p
>

You're from?.


>  >> >>
> >> >> >
> >> >> > On Sat, Feb 4, 2012 at 2:16 PM, Teck Choon Giam
> >> >> > <giamteckchoon@gmail.com>
> >> >> > wrote:
> >> >> >>
> >> >> >> On Sat, Feb 4, 2012 at 1:25 PM, David Gonzalez
> >> >> >> <dgonzalezh@gmail.com>
> >> >> >> wrote:
> >> >> >> > Hey hope this opne is a "make senser".
> >> >> >> >
> >> >> >> > Has anyone tried the "Subject line" combo?, I've compiled a
> dozen
> >> >> >> > src.rpm
> >> >> >> > kern el 3.0 and 3.1 packages with no luck to try native upstream
> >> >> >> > Dom0
> >> >> >> > kernel
> >> >> >>
> >> >> >> > support with no success, just a kernel oops and constant
> reboots.
> >> >> >>
> >> >> >> I have compiled 3.0, 3.1 and 3.2 kernels for dom0 and domU for my
> >> >> >> own patched kernels (add iscsitarget as module into it as
> example).
> >> >> >> Tested with xen-4.1.3-rc1-pre.
> >> >> >>
> >> >> > Ok, I'm guessing that mus me one of my many mistakes when doing
> this,
> >> >> > I
> >> >> > haven't added the rite modules.
> >> >> >
> >> >> >>
> >> >> >> >
> >> >> >> > I followed Fedora's wiki on building a custom kernel, even used
> >> >> >> > F16's >
> >> >> >> > .config which also was a no-no. I'd like to try F16 which comes
> >> >> >> > with
> >> >> >> > 3.0 >
> >> >> >> > out-of-the-box, but I've already set up my CentOS 6.2 pretty
> >> >> >> > nicely
> >> >> >> > to
> >> >> >> > just "mkfs.ext3" on it, so if anyone has some _updated_ info
> (3rd
> >> >> >> > quarter
> >> >> >> > 2011 or 2012) that I can refer to, please advise.
> >> >> >>
> >> >> >> Although I don't use CentOS 6.  I use Scientific Linux 6 instead.
> >> >> >> Don't use Fedora kernel .config as there are many debug options
> >> >> >> enabled if I remember correctly.  Even I use RHEL6 .config for
> >> >> >> 2.6.32.x pvops kernel for Jeremy's xen git tree will encounter
> >> >> >> problems.  In short, you can use one of those .config then use
> make
> >> >> >> menuconfig to disable power, cgroup, debug etc. options and start
> >> >> >> from there as this is how I did.
> >> >> >>
> >> >> > Hmm, I tried that with rpmbuild -bb kernel.spec and as described on
> >> >> > F16
> >> >> > wiki, and disabled many many options and the kernel compiled aok
> and
> >> >> > the
> >> >> > installed fine but never booted, it kept rebooting.
> >> >>
> >> >> Just a question... is your xen installed from source or from rpm
> >> >> package?
> >> >
> >> >
> >> > It's from myoung Fedora repos it's rpm package, altho I built 4.1.2
> >> > myself
> >> > but it's not installed from those but froma repo.
> >> >>
> >> >>
> >> >> >
> >> >> > I'll try your suggestions and hope that it helps.
> >> >>
> >> >> If that doesn't, you can use mine instead of burning your time to
> make
> >> >> it work ;)  Anyway, I think it is a good experience to make it work
> >> >> from self compile and there are many things to learn from this
> >> >> experience.
> >> >
> >> >
> >> > Huh, self-compiled, I've done that a hundred times, but it's always a
> >> > no-no,
> >> > i'v compiled 2.6.32 to 2.6.40 also 3.0.x to 3.1.x  and no luck either,
> >> > I've
> >> > got a devel machine runiing also CentOS 6.0 with 4 cores and 2048MB
> uin
> >> > RAM
> >> > so itr takes not tyoo long but it's frustrating to reboot and get
> >> > nothing.
> >> >
> >> > I'd like to try yours, do you happen to have a repo or some place to
> get
> >> > your rpms?.
> >>
> >> The guide is at http://choon.net/forum/read.php?16,672307
> >
> >
> > Well, followed it and  there seemed to be a problem when I downloaded and
> > installed the kernel, I installed it with rpm -ivh choon...kernel...rpm
> and
> > the system never came back up online.
>
> Have you try the guide posted and boot into xen-kernel-2.6.32.56-0
> first?  If that is successfully, then you can follow the guide to
> create the v3.0 or v3.1 or v3.2 kernels repo then enable it and using
> yum install choon-kernel to install?  Would appreciate feedback about
> the failure or success ;)
>

Yup, in fact that was what I did to install the kernel, but it kept
downloading 2.6.32, so I went ahead and d/loaded 3.1 and 3.2 and installed
them via rpm -uvh.
I'm guessing these should be changed or modified to use 3.x series kernels,
am I wrong.

# choonrpmsrepoctl create choonrpms-kernels
# choonrpmsrepoctl enable choonrpms-kernels

I also found something about that nice grub parameter I didn't know and
it's the "fallback=#" parameter which on the locked server I didn't use,
but now i'lkl reboot that machine and check the output


>
> >
> > I-ll check and report as soon as I get to the DC tomorrow, I'll also
> check
> > the howto again.
>
> Thanks for it in advance.  Please let me know your network ethernet
> information (lspci -vvv output and lsmod output) as I am afraid it may
> be an issue.  Sometimes, if a board has two same onboard ethernet and
> when you boot stock kernel you get the order of eth0 as HW ... 01 and
> eth1 as HW ... 02 then when you boot into custom kernel you get the
> order being switched.  I encountered it before and checked the udev
> rules file to make sure (/etc/udev/rules.d/70-persistent-net.rules) is
> correct.
>

Network doesn't seem to be an issue, I have that server with two onborad
NICs which are the same but they're connected to different switches and on
two different class C networks, I set up using C6.2 nifcfg-ethX scripts and
set them up as bridged xenbr0 and xenbr1. They both work on that server
with no issue at all.

the HP ML115 has only one on board NIC which is also a bridge.

Hrere's the outoput you requested but from the WORKING server, as I get the
HP ML115 rebooted I-ll get back to you to show you its outputs.

# lspci -vv
00:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev
a4)
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Capabilities: [44] HyperTransport: Slave or Primary Interface
                Command: BaseUnitID=0 UnitCnt=15 MastHost- DefDir- DUL-
                Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config 1: MLWI=8bit DwFcIn- MLWO=8bit DwFcOut-
LWI=8bit DwFcInEn- LWO=8bit DwFcOutEn-
                Revision ID: 1.03
                Link Frequency 0: 1.0GHz
                Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability 0: 200MHz+ 300MHz+ 400MHz+
500MHz+ 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA-
UIDRD-
                Link Frequency 1: 200MHz
                Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability 1: 200MHz- 300MHz- 400MHz-
500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Error Handling: PFlE+ OFlE+ PFE- OFE- EOCFE- RFE- CRCFE-
SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
                Prefetchable memory behind bridge Upper: 00-00
                Bus Number: 00
        Capabilities: [e0] HyperTransport: MSI Mapping Enable+ Fixed-
                Mapping Address Base: 00000000fee00000

00:01.0 ISA bridge: nVidia Corporation CK804 ISA Bridge (rev f1)
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0

00:01.1 SMBus: nVidia Corporation CK804 SMBus (rev a2)
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 10
        Region 0: I/O ports at ec00 [size=32]
        Region 4: I/O ports at 4c00 [size=64]
        Region 5: I/O ports at 4e00 [size=64]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: nForce2_smbus
        Kernel modules: i2c-nforce2

00:02.0 USB controller: nVidia Corporation CK804 USB Controller (rev a2)
(prog-if 10 [OHCI])
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (750ns min, 250ns max)
        Interrupt: pin A routed to IRQ 23
        Region 0: Memory at f5eff000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: ohci_hcd
        Kernel modules: ohci-hcd

00:02.1 USB controller: nVidia Corporation CK804 USB Controller (rev a4)
(prog-if 20 [EHCI])
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (750ns min, 250ns max)
        Interrupt: pin B routed to IRQ 22
        Region 0: Memory at feb00000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [44] Debug port: BAR=1 offset=0098
        Capabilities: [80] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: ehci_hcd
        Kernel modules: ehci-hcd

00:06.0 IDE interface: nVidia Corporation CK804 IDE (rev f3) (prog-if 8a
[Master SecP PriP])
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (750ns min, 250ns max)
        Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable)
[size=8]
        Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable)
[size=1]
        Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable)
[size=8]
        Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable)
[size=1]
        Region 4: I/O ports at ffa0 [size=16]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: AMD_IDE

00:07.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev
f3) (prog-if 85 [Master SecO PriO])
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (750ns min, 250ns max)
        Interrupt: pin A routed to IRQ 21
        Region 0: I/O ports at e480 [size=8]
        Region 1: I/O ports at e400 [size=4]
        Region 2: I/O ports at e080 [size=8]
        Region 3: I/O ports at e000 [size=4]
        Region 4: I/O ports at dc00 [size=16]
        Region 5: Memory at f5efd000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: sata_nv
        Kernel modules: sata_nv

00:08.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev
f3) (prog-if 85 [Master SecO PriO])
        Subsystem: ASUSTeK Computer Inc. Device 8162
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (750ns min, 250ns max)
        Interrupt: pin A routed to IRQ 20
        Region 0: I/O ports at d880 [size=8]
        Region 1: I/O ports at d800 [size=4]
        Region 2: I/O ports at d480 [size=8]
        Region 3: I/O ports at d400 [size=4]
        Region 4: I/O ports at d080 [size=16]
        Region 5: Memory at f5efc000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: sata_nv
        Kernel modules: sata_nv

00:09.0 PCI bridge: nVidia Corporation CK804 PCI Bridge (rev f2) (prog-if
01 [Subtractive decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
        I/O behind bridge: 00009000-00009fff
        Memory behind bridge: f5600000-f56fffff
        Prefetchable memory behind bridge: f5f00000-fdefffff
        Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr+ DiscTmrStat- DiscTmrSERREn-

00:0b.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev f3) (prog-if
00 [Normal decode])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
        Memory behind bridge: f5700000-f57fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [48] MSI: Enable+ Count=1/2 Maskable- 64bit+
                Address: 00000000feeff00c  Data: 4198
        Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-
                Mapping Address Base: 00000000fee00000
        Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 <4us
                        ExtTag- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
TransPend-
                LnkCap: Port #3, Speed 2.5GT/s, Width x2, ASPM L0s, Latency
L0 <512ns, L1 <4us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
                SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
Surpise-
                        Slot #  8, PowerLimit 25.000000; Interlock- NoCompl-
                SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
                        Control: AttnInd Off, PwrInd On, Power- Interlock-
                SltSta: Status: AttnBtn+ PowerFlt- MRL- CmdCplt- PresDet+
Interlock-
                        Changed: MRL- PresDet- LinkState-
                RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible-
                RootCap: CRSVisible-
                RootSta: PME ReqID 0000, PMEStatus- PMEPending-
        Capabilities: [100] Virtual Channel <?>
        Capabilities: [160] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 0c, GenCap+ CGenEn- ChkCap+
ChkEn-
        Kernel driver in use: pcieport
        Kernel modules: shpchp

00:0c.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev f3) (prog-if
00 [Normal decode])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
        Memory behind bridge: f5800000-f58fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [48] MSI: Enable+ Count=1/2 Maskable- 64bit+
                Address: 00000000feeff00c  Data: 41a0
        Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-
                Mapping Address Base: 00000000fee00000
        Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 <4us
                        ExtTag- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
TransPend-
                LnkCap: Port #2, Speed 2.5GT/s, Width x2, ASPM L0s, Latency
L0 <512ns, L1 <4us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
                SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
Surpise-
                        Slot #  4, PowerLimit 25.000000; Interlock- NoCompl-
                SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
                        Control: AttnInd Off, PwrInd On, Power- Interlock-
                SltSta: Status: AttnBtn+ PowerFlt- MRL- CmdCplt- PresDet+
Interlock-
                        Changed: MRL- PresDet- LinkState-
                RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible-
                RootCap: CRSVisible-
                RootSta: PME ReqID 0000, PMEStatus- PMEPending-
        Capabilities: [100] Virtual Channel <?>
        Capabilities: [160] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 14, GenCap+ CGenEn- ChkCap+
ChkEn-
        Kernel driver in use: pcieport
        Kernel modules: shpchp

00:0d.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev f3) (prog-if
00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
        I/O behind bridge: 0000a000-0000cfff
        Memory behind bridge: f5900000-f5dfffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [48] MSI: Enable+ Count=1/2 Maskable- 64bit+
                Address: 00000000feeff00c  Data: 41a8
        Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-
                Mapping Address Base: 00000000fee00000
        Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 <4us
                        ExtTag- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
TransPend-
                LnkCap: Port #1, Speed 2.5GT/s, Width x8, ASPM L0s, Latency
L0 <512ns, L1 <4us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
                SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
Surpise-
                        Slot #  2, PowerLimit 25.000000; Interlock- NoCompl-
                SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
                        Control: AttnInd Off, PwrInd On, Power- Interlock-
                SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+
Interlock-
                        Changed: MRL- PresDet- LinkState-
                RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible-
                RootCap: CRSVisible-
                RootSta: PME ReqID 0000, PMEStatus- PMEPending-
        Capabilities: [100] Virtual Channel <?>
        Capabilities: [160] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+
ChkEn-
        Kernel driver in use: pcieport
        Kernel modules: shpchp

00:0e.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3) (prog-if
00 [Normal decode])
        Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [48] MSI: Enable+ Count=1/2 Maskable- 64bit+
                Address: 00000000feeff00c  Data: 41b0
        Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-
                Mapping Address Base: 00000000fee00000
        Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 <4us
                        ExtTag- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s, Latency
L0 <512ns, L1 <4us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
                SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
Surpise-
                        Slot #  1, PowerLimit 25.000000; Interlock- NoCompl-
                SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
                        Control: AttnInd Off, PwrInd On, Power- Interlock-
                SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet-
Interlock-
                        Changed: MRL- PresDet- LinkState-
                RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible-
                RootCap: CRSVisible-
                RootSta: PME ReqID 0000, PMEStatus- PMEPending-
        Capabilities: [100] Virtual Channel <?>
        Capabilities: [160] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+
ChkEn-
        Kernel driver in use: pcieport
        Kernel modules: shpchp

00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor
HyperTransport Configuration
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Capabilities: [80] HyperTransport: Host or Secondary Interface
                Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+
Slave- <EOCErr- DUL-
                Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Revision ID: 3.00
                Link Frequency: 1.0GHz
                Link Error: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz-
600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+
UIDRD- ExtRS- UCnfE-
        Capabilities: [a0] HyperTransport: Host or Secondary Interface
                Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+
Slave- <EOCErr- DUL-
                Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Revision ID: 3.00
                Link Frequency: 1.0GHz
                Link Error: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz-
600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+
UIDRD- ExtRS- UCnfE-
        Capabilities: [c0] HyperTransport: Host or Secondary Interface
                Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+
Slave- <EOCErr- DUL-
                Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Revision ID: 3.00
                Link Frequency: 1.0GHz
                Link Error: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz-
600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+
UIDRD- ExtRS- UCnfE-

00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor
Address Map
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-

00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM
Controller
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Kernel driver in use: amd64_edac
        Kernel modules: amd64_edac_mod

00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor
Miscellaneous Control
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Capabilities: [f0] Secure device <?>
        Kernel modules: k10temp

00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link
Control
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-

00:19.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor
HyperTransport Configuration
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Capabilities: [80] HyperTransport: Host or Secondary Interface
                Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+
Slave- <EOCErr- DUL-
                Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Revision ID: 3.00
                Link Frequency: 1.0GHz
                Link Error: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz-
600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+
UIDRD- ExtRS- UCnfE-
        Capabilities: [a0] HyperTransport: Host or Secondary Interface
                Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+
Slave- <EOCErr- DUL-
                Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Revision ID: 3.00
                Link Frequency: 1.0GHz
                Link Error: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz-
600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+
UIDRD- ExtRS- UCnfE-
        Capabilities: [c0] HyperTransport: Host or Secondary Interface
                Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+
Slave- <EOCErr- DUL-
                Link Control: CFlE- CST- CFE- <LkFail- Init- EOC+ TXO+
<CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=N/C
DwFcInEn- LWO=N/C DwFcOutEn-
                Revision ID: 3.00
                Link Frequency: 200MHz
                Link Error: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz-
600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+
UIDRD- ExtRS- UCnfE-

00:19.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor
Address Map
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-

00:19.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM
Controller
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Kernel driver in use: amd64_edac
        Kernel modules: amd64_edac_mod

00:19.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor
Miscellaneous Control
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Capabilities: [f0] Secure device <?>
        Kernel modules: k10temp

00:19.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link
Control
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-

01:04.0 VGA compatible controller: XGI Technology Inc. (eXtreme Graphics
Innovation) Z7/Z9 (XG20 core) (prog-if 00 [VGA controller])
        Subsystem: ASUSTeK Computer Inc. Device 82b4
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        BIST result: 00
        Region 0: Memory at f8000000 (32-bit, prefetchable) [size=64M]
        Region 1: Memory at f56c0000 (32-bit, non-prefetchable) [size=256K]
        Region 2: I/O ports at 9c00 [size=128]
        Expansion ROM at <unassigned> [disabled]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5721 Gigabit
Ethernet PCI Express (rev 21)
        Subsystem: ASUSTeK Computer Inc. Device 8149
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 283
        Region 0: Memory at f57f0000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [48] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [50] Vital Product Data
                Product Name: Broadcom NetXtreme Gigabit Ethernet Controller
                Read-only fields:
                        [PN] Part number: BCM95721
                        [EC] Engineering changes: 106679-15
                        [SN] Serial number: 0123456789
                        [MN] Manufacture ID: 31 34 65 34
                        [RV] Reserved: checksum bad, 28 byte(s) reserved
                Read/write fields:
                        [YA] Asset tag: XYZ01234567
                        [RW] Read-write area: 107 byte(s) free
                End
        Capabilities: [58] MSI: Enable+ Count=1/8 Maskable- 64bit+
                Address: 00000000fee0100c  Data: 4131
        Capabilities: [d0] Express (v1) Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<4us, L1 unlimited
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1,
Latency L0 <4us, L1 <64us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
        Capabilities: [100] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 14, GenCap+ CGenEn- ChkCap+
ChkEn-
        Capabilities: [13c] Virtual Channel <?>
        Capabilities: [160] Device Serial Number 00-1e-8c-ff-fe-51-61-c0
        Capabilities: [16c] Power Budgeting <?>
        Kernel driver in use: tg3
        Kernel modules: tg3

03:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5721 Gigabit
Ethernet PCI Express (rev 21)
        Subsystem: ASUSTeK Computer Inc. Device 8149
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 284
        Region 0: Memory at f58f0000 (64-bit, non-prefetchable) [size=64K]
        Expansion ROM at <ignored> [disabled]
        Capabilities: [48] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [50] Vital Product Data
                Product Name: Broadcom NetXtreme Gigabit Ethernet Controller
                Read-only fields:
                        [PN] Part number: BCM95721
                        [EC] Engineering changes: 106679-15
                        [SN] Serial number: 0123456789
                        [MN] Manufacture ID: 31 34 65 34
                        [RV] Reserved: checksum bad, 28 byte(s) reserved
                Read/write fields:
                        [YA] Asset tag: XYZ01234567
                        [RW] Read-write area: 107 byte(s) free
                End
        Capabilities: [58] MSI: Enable+ Count=1/8 Maskable- 64bit+
                Address: 00000000fee0100c  Data: 4139
        Capabilities: [d0] Express (v1) Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<4us, L1 unlimited
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1,
Latency L0 <4us, L1 <64us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
        Capabilities: [100] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr+ BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 14, GenCap+ CGenEn- ChkCap+
ChkEn-
        Capabilities: [13c] Virtual Channel <?>
        Capabilities: [160] Device Serial Number 00-1e-8c-ff-fe-51-63-b3
        Capabilities: [16c] Power Budgeting <?>
        Kernel driver in use: tg3
        Kernel modules: tg3

04:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET
PCI-Express Fusion-MPT SAS (rev 04)
        Subsystem: ASUSTeK Computer Inc. Device 82c3
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 19
        Region 0: I/O ports at c000 [size=256]
        Region 1: Memory at f5dfc000 (64-bit, non-prefetchable) [size=16K]
        Region 3: Memory at f5de0000 (64-bit, non-prefetchable) [size=64K]
        Expansion ROM at f5a00000 [disabled] [size=2M]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [68] Express (v1) Endpoint, MSI 00
                DevCap: MaxPayload 4096 bytes, PhantFunc 0, Latency L0s
<64ns, L1 <1us
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr-
TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s L1,
Latency L0 <64ns, L1 <1us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk-
DLActive- BWMgmt- ABWMgmt-
        Capabilities: [98] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
                Vector table: BAR=1 offset=00002000
                PBA: BAR=1 offset=00003000
        Capabilities: [100] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout-
NonFatalErr-
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+
ChkEn-
        Kernel driver in use: mptsas
        Kernel modules: mptsas

# lsmod
Module                  Size  Used by
xen_gntalloc            4065  0
sunrpc                204202  1
bridge                 69381  0
stp                     1939  1 bridge
ipv6                  242255  33 bridge
microcode             108233  0
pcspkr                  1814  0
serio_raw               4155  0
k10temp                 3167  0
hwmon                   1703  1 k10temp
amd64_edac_mod         18819  0
edac_core              39964  4 amd64_edac_mod
tg3                   122274  0
libphy                 20670  1 tg3
sg                     25143  0
i2c_nforce2             5205  0
i2c_core               22702  1 i2c_nforce2
ext4                  243772  6
jbd2                   53102  1 ext4
crc16                   1595  1 ext4
sd_mod                 25759  5
mptsas                 45838  0
mptscsih               29531  1 mptsas
mptbase                84265  2 mptsas,mptscsih
scsi_transport_sas     28533  1 mptsas
sata_nv                19346  3
libata                164765  1 sata_nv
scsi_mod              156890  6
sg,sd_mod,mptsas,mptscsih,scsi_transport_sas,libata
ehci_hcd               33653  0
ohci_hcd               18209  0
button                  5111  0
dm_mirror              12064  0
dm_region_hash          9658  1 dm_mirror
dm_log                  8240  2 dm_mirror,dm_region_hash
dm_mod                 65814  20 dm_mirror,dm_log



>
> >
> > Many many thanks for taking the toime to put together that nice and
> useful
> > info.
>
> Those repos are there for years actually just that SL6/CentOS6 are
> considered quite new in those repos.  I used the same repos when using
> CentOS 5 as dom0 last time but cease it due to the time involved to
> support those in CentOS 5.  I rather focus on SL6/CentOS6 :)  Just
> beware that all my dom0 servers are SL6 based.
>
> Feedbacks are greatly appreciated and if you need assistance off this
> list are welcome (just compose another new mail direct to me so that I
> know it is not from this xen-users list).
>
> Thank you for taking the toine to read and answer.


> Thanks.
>
> Kindest regards,
> Giam Teck Choon
>
> >>
> >>
> >> Thanks.
> >>
> >> Kindest regards,
> >> Giam Teck Choon
> >>
> >>
> >> >>
> >> >>
> >> >> >
> >> >> > Thank you very much.
> >> >>
> >> >> Thanks.
> >> >
> >> >
> >> > Again.
> >> > --
> >> > David Gonzalez H.
> >> > Bogota: +(57-1)289-1168
> >> > Medellin: +(57-1)247-0985
> >> > Cel: +(57)315-838-8326
> >> > DGHVoIP - OPEN SOURCE TELEPHONY SOLUTIONS
> >> > http://www.dghvoip.com/
> >> > Proud Linux User #294661
> >
> >
> >
> >
> > --
> > David Gonzalez H.
> > Bogota: +(57-1)289-1168
> > Medellin: +(57-1)247-0985
> > Cel: +(57)315-838-8326
> > DGHVoIP - OPEN SOURCE TELEPHONY SOLUTIONS
> > http://www.dghvoip.com/
> > Proud Linux User #294661
>



-- 
David Gonzalez H.
Bogota: +(57-1)289-1168
Medellin: +(57-1)247-0985
Cel: +(57)315-838-8326
DGHVoIP - OPEN SOURCE TELEPHONY SOLUTIONS
http://www.dghvoip.com/
Proud Linux User #294661

--0015175cffe827daea04b84daa0c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hey Choon,<br><br><div class=3D"gmail_quote">On Mon, Feb 6, 2012 at 1:13 AM=
, Teck Choon Giam <span dir=3D"ltr">&lt;<a href=3D"mailto:giamteckchoon@gma=
il.com" target=3D"_blank">giamteckchoon@gmail.com</a>&gt;</span> wrote:<br>=
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">

<div><div>On Mon, Feb 6, 2012 at 11:46 AM, David Gonzalez &lt;<a href=3D"ma=
ilto:dgonzalezh@gmail.com" target=3D"_blank">dgonzalezh@gmail.com</a>&gt; w=
rote:<br>
&gt; Hey<br>
&gt;<br>
&gt; On Sat, Feb 4, 2012 at 6:31 PM, Teck Choon Giam &lt;<a href=3D"mailto:=
giamteckchoon@gmail.com" target=3D"_blank">giamteckchoon@gmail.com</a>&gt;<=
br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Sun, Feb 5, 2012 at 6:54 AM, David Gonzalez &lt;<a href=3D"mail=
to:dgonzalezh@gmail.com" target=3D"_blank">dgonzalezh@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Sat, Feb 4, 2012 at 5:01 PM, Teck Choon Giam<br>
&gt;&gt; &gt; &lt;<a href=3D"mailto:giamteckchoon@gmail.com" target=3D"_bla=
nk">giamteckchoon@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Sun, Feb 5, 2012 at 5:35 AM, David Gonzalez &lt;<a hre=
f=3D"mailto:dgonzalezh@gmail.com" target=3D"_blank">dgonzalezh@gmail.com</a=
>&gt;<br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Yo, Teck, nice name heh,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Grrr... My Surname is Giam and Name is Teck Choon :p<br><=
/div></div></blockquote><div><br>You&#39;re from?.<br>=A0<br></div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0pt 0pt 0pt 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex">

<div><div>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; On Sat, Feb 4, 2012 at 2:16 PM, Teck Choon Giam<br>
&gt;&gt; &gt;&gt; &gt; &lt;<a href=3D"mailto:giamteckchoon@gmail.com" targe=
t=3D"_blank">giamteckchoon@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; On Sat, Feb 4, 2012 at 1:25 PM, David Gonzalez<b=
r>
&gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href=3D"mailto:dgonzalezh@gmail.com" targ=
et=3D"_blank">dgonzalezh@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Hey hope this opne is a &quot;make senser&q=
uot;.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Has anyone tried the &quot;Subject line&quo=
t; combo?, I&#39;ve compiled a dozen<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; src.rpm<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; kern el 3.0 and 3.1 packages with no luck t=
o try native upstream<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Dom0<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; kernel<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; support with no success, just a kernel oops=
 and constant reboots.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; I have compiled 3.0, 3.1 and 3.2 kernels for dom=
0 and domU for my<br>
&gt;&gt; &gt;&gt; &gt;&gt; own=A0patched kernels (add iscsitarget as module=
 into it as example).<br>
&gt;&gt; &gt;&gt; &gt;&gt; Tested with xen-4.1.3-rc1-pre.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt; Ok, I&#39;m guessing that mus me one of my many mist=
akes when doing this,<br>
&gt;&gt; &gt;&gt; &gt; I<br>
&gt;&gt; &gt;&gt; &gt; haven&#39;t added the rite modules.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; I followed Fedora&#39;s wiki on building a =
custom kernel, even used<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; F16&#39;s=A0&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; .config which also was a no-no. I&#39;d lik=
e to try F16 which comes<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; 3.0=A0&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; out-of-the-box, but I&#39;ve already set up=
 my CentOS 6.2 pretty<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; nicely<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; just=A0&quot;mkfs.ext3&quot; on it, so if a=
nyone has some _updated_ info (3rd<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; quarter<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; 2011 or=A02012) that I can refer to, please=
 advise.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Although I don&#39;t use CentOS 6. =A0I use Scie=
ntific Linux 6 instead.<br>
&gt;&gt; &gt;&gt; &gt;&gt; Don&#39;t use Fedora kernel .config as there are=
 many debug options<br>
&gt;&gt; &gt;&gt; &gt;&gt; enabled if I remember correctly. =A0Even I use R=
HEL6 .config for<br>
&gt;&gt; &gt;&gt; &gt;&gt; 2.6.32.x pvops kernel for Jeremy&#39;s xen git t=
ree will encounter<br>
&gt;&gt; &gt;&gt; &gt;&gt; problems. =A0In short, you can use one of those =
.config then use make<br>
&gt;&gt; &gt;&gt; &gt;&gt; menuconfig to disable power, cgroup, debug etc. =
options and start<br>
&gt;&gt; &gt;&gt; &gt;&gt; from=A0there as this is how I did.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt; Hmm, I tried that with rpmbuild -bb kernel.spec and =
as described on<br>
&gt;&gt; &gt;&gt; &gt; F16<br>
&gt;&gt; &gt;&gt; &gt; wiki, and disabled many many options and the kernel =
compiled aok and<br>
&gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt; installed fine but never booted, it kept rebooting.<=
br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Just a question... is your xen installed from source or f=
rom rpm<br>
&gt;&gt; &gt;&gt; package?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; It&#39;s from myoung Fedora repos it&#39;s rpm package, altho=
 I built 4.1.2<br>
&gt;&gt; &gt; myself<br>
&gt;&gt; &gt; but it&#39;s not installed from those but froma repo.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I&#39;ll try your suggestions and hope that it helps=
.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; If that doesn&#39;t, you can use mine instead of burning =
your time to make<br>
&gt;&gt; &gt;&gt; it work ;) =A0Anyway, I think it is a good experience to =
make it work<br>
&gt;&gt; &gt;&gt; from self compile and there are many things to learn from=
 this<br>
&gt;&gt; &gt;&gt; experience.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Huh, self-compiled, I&#39;ve done that a hundred times, but i=
t&#39;s always a<br>
&gt;&gt; &gt; no-no,<br>
&gt;&gt; &gt; i&#39;v compiled 2.6.32 to 2.6.40 also 3.0.x to 3.1.x =A0and =
no luck either,<br>
&gt;&gt; &gt; I&#39;ve<br>
&gt;&gt; &gt; got a devel machine runiing also CentOS 6.0 with 4 cores and =
2048MB uin<br>
&gt;&gt; &gt; RAM<br>
&gt;&gt; &gt; so itr takes not tyoo long but it&#39;s frustrating to reboot=
 and get<br>
&gt;&gt; &gt; nothing.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;d like to try yours, do you happen to have a repo or so=
me place to get<br>
&gt;&gt; &gt; your rpms?.<br>
&gt;&gt;<br>
&gt;&gt; The guide is at <a href=3D"http://choon.net/forum/read.php?16,6723=
07" target=3D"_blank">http://choon.net/forum/read.php?16,672307</a><br>
&gt;<br>
&gt;<br>
&gt; Well, followed it and=A0 there seemed to be a problem when I downloade=
d and<br>
&gt; installed the kernel, I installed it with rpm -ivh choon...kernel...rp=
m and<br>
&gt; the system never came back up online.<br>
<br>
</div></div>Have you try the guide posted and boot into xen-kernel-2.6.32.5=
6-0<br>
first? =A0If that is successfully, then you can follow the guide to<br>
create the v3.0 or v3.1 or v3.2 kernels repo then enable it and using<br>
yum install choon-kernel to install? =A0Would appreciate feedback about<br>
the failure or success ;)<br></blockquote><div><br>Yup, in fact that was wh=
at I did to install the kernel, but it kept downloading 2.6.32, so I went a=
head and d/loaded 3.1 and 3.2 and installed them via rpm -uvh.<br>I&#39;m g=
uessing these should be changed or modified to use 3.x series kernels, am I=
 wrong.<br>

<br><pre># choonrpmsrepoctl create choonrpms-kernels
# choonrpmsrepoctl enable choonrpms-kernels<br><br></pre>I also found somet=
hing about that nice grub parameter I didn&#39;t know and it&#39;s the &quo=
t;fallback=3D#&quot; parameter which on the locked server I didn&#39;t use,=
 but now i&#39;lkl reboot that machine and check the output<br>

=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0pt 0pt 0pt 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div><br>
&gt;<br>
&gt; I-ll check and report as soon as I get to the DC tomorrow, I&#39;ll al=
so check<br>
&gt; the howto again.<br>
<br>
</div>Thanks for it in advance. =A0Please let me know your network ethernet=
<br>
information (lspci -vvv output and lsmod output) as I am afraid it may<br>
be an issue. =A0Sometimes, if a board has two same onboard ethernet and<br>
when you boot stock kernel you get the order of eth0 as HW ... 01 and<br>
eth1 as HW ... 02 then when you boot into custom kernel you get the<br>
order being switched. =A0I encountered it before and checked the udev<br>
rules file to make sure (/etc/udev/rules.d/70-persistent-net.rules) is<br>
correct.<br></blockquote><div><br>Network doesn&#39;t seem to be an issue, =
I have that server with two onborad NICs which are the same but they&#39;re=
 connected to different switches and on two different class C networks, I s=
et up using C6.2 nifcfg-ethX scripts and set them up as bridged xenbr0 and =
xenbr1. They both work on that server with no issue at all.<br>
<br>the HP ML115 has only one on board NIC which is also a bridge.<br><br>H=
rere&#39;s the outoput you requested but from the WORKING server, as I get =
the HP ML115 rebooted I-ll get back to you to show you its outputs.<br>
<br># lspci -vv<br>00:00.0 Memory controller: nVidia Corporation CK804 Memo=
ry Controller (rev a4)<br>=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer=
 Inc. Device 8162<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem+ BusMaster+ Sp=
ecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Latency: 0<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [44] Hype=
rTransport: Slave or Primary Interface<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: BaseUnitID=3D0 UnitC=
nt=3D15 MastHost- DefDir- DUL-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 Link Control 0: CFlE- CST- CFE- &lt;LkFail- Init+ EOC- TXO- &lt;CRCE=
rr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Link Config 0: MLWI=3D16bit DwFcIn- MLWO=3D16bit DwFcOut- LWI=3D1=
6bit DwFcInEn- LWO=3D16bit DwFcOutEn-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control 1: CFlE- CST- CF=
E- &lt;LkFail+ Init- EOC+ TXO+ &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br=
>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config 1: MLWI=3D8bit D=
wFcIn- MLWO=3D8bit DwFcOut- LWI=3D8bit DwFcInEn- LWO=3D8bit DwFcOutEn-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 1.03<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency 0: 1.0GHz<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error 0: &lt;Prot- &lt;Ovfl- &=
lt;EOC- CTLTm-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Freque=
ncy Capability 0: 200MHz+ 300MHz+ 400MHz+ 500MHz+ 600MHz+ 800MHz+ 1.0GHz+ 1=
.2GHz- 1.4GHz- 1.6GHz- Vend-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capability: IsocFC+ L=
DTSTOP+ CRCTM- ECTLT- 64bA- UIDRD-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Link Frequency 1: 200MHz<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Link Error 1: &lt;Prot- &lt;Ovfl- &lt;EOC- CTLTm-<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability 1: 200MHz- 300M=
Hz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-<b=
r>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Error Handling: PFlE+ OFlE+ P=
FE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNF=
E- SERRNFE-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Prefetchable m=
emory behind bridge Upper: 00-00<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 Bus Number: 00<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [e0] HyperTransport: MSI Mapping Enable=
+ Fixed-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Mapping Address B=
ase: 00000000fee00000<br><br>00:01.0 ISA bridge: nVidia Corporation CK804 I=
SA Bridge (rev f1)<br>=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer Inc=
. Device 8162<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0<br><br>00:01.1 SMBus: nVidia Corporation C=
K804 SMBus (rev a2)<br>=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer In=
c. Device 8162<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem- BusMaster- SpecC=
ycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Interrupt: pin A routed to IRQ 10<br>=A0=A0=A0=A0=A0=A0=A0 =
Region 0: I/O ports at ec00 [size=3D32]<br>
=A0=A0=A0=A0=A0=A0=A0 Region 4: I/O ports at 4c00 [size=3D64]<br>=A0=A0=A0=
=A0=A0=A0=A0 Region 5: I/O ports at 4e00 [size=3D64]<br>=A0=A0=A0=A0=A0=A0=
=A0 Capabilities: [44] Power Management version 2<br>=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxCurrent=3D0mA PME(D=
0-,D1-,D2-,D3hot+,D3cold+)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use=
: nForce2_smbus<br>=A0=A0=A0=A0=A0=A0=A0 Kernel modules: i2c-nforce2<br><br=
>00:02.0 USB controller: nVidia Corporation CK804 USB Controller (rev a2) (=
prog-if 10 [OHCI])<br>
=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer Inc. Device 8162<br>=A0=
=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASno=
op- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 Stat=
us: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbort-=
 &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0 (750ns min, 250ns max)<br>=A0=A0=A0=A0=A0=
=A0=A0 Interrupt: pin A routed to IRQ 23<br>=A0=A0=A0=A0=A0=A0=A0 Region 0:=
 Memory at f5eff000 (32-bit, non-prefetchable) [size=3D4K]<br>=A0=A0=A0=A0=
=A0=A0=A0 Capabilities: [44] Power Management version 2<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1+ D2+ A=
uxCurrent=3D0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D0=
 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: ohci_hcd<br>=A0=A0=A0=
=A0=A0=A0=A0 Kernel modules: ohci-hcd<br>
<br>00:02.1 USB controller: nVidia Corporation CK804 USB Controller (rev a4=
) (prog-if 20 [EHCI])<br>=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer =
Inc. Device 8162<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem+ BusMaster+ Spe=
cCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Latency: 0 (750ns min, 250ns max)<br>=A0=A0=A0=A0=A0=A0=A0 =
Interrupt: pin B routed to IRQ 22<br>=A0=A0=A0=A0=A0=A0=A0 Region 0: Memory=
 at feb00000 (32-bit, non-prefetchable) [size=3D256]<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [44] Debug port: BAR=3D1 offset=3D0098<=
br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] Power Management version 2<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1+ D2+ A=
uxCurrent=3D0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D0=
 PME-<br>
=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: ehci_hcd<br>=A0=A0=A0=A0=A0=A0=
=A0 Kernel modules: ehci-hcd<br><br>00:06.0 IDE interface: nVidia Corporati=
on CK804 IDE (rev f3) (prog-if 8a [Master SecP PriP])<br>=A0=A0=A0=A0=A0=A0=
=A0 Subsystem: ASUSTeK Computer Inc. Device 8162<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0 (750ns min, 250ns max)<br>=A0=A0=A0=A0=A0=
=A0=A0 Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [s=
ize=3D8]<br>=A0=A0=A0=A0=A0=A0=A0 Region 1: [virtual] Memory at 000003f0 (t=
ype 3, non-prefetchable) [size=3D1]<br>=A0=A0=A0=A0=A0=A0=A0 Region 2: [vir=
tual] Memory at 00000170 (32-bit, non-prefetchable) [size=3D8]<br>
=A0=A0=A0=A0=A0=A0=A0 Region 3: [virtual] Memory at 00000370 (type 3, non-p=
refetchable) [size=3D1]<br>=A0=A0=A0=A0=A0=A0=A0 Region 4: I/O ports at ffa=
0 [size=3D16]<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [44] Power Management =
version 2<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- D=
SI- D1- D2- AuxCurrent=3D0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use=
: AMD_IDE<br><br>00:07.0 IDE interface: nVidia Corporation CK804 Serial ATA=
 Controller (rev f3) (prog-if 85 [Master SecO PriO])<br>
=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer Inc. Device 8162<br>=A0=
=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASno=
op- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 Stat=
us: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbort-=
 &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0 (750ns min, 250ns max)<br>=A0=A0=A0=A0=A0=
=A0=A0 Interrupt: pin A routed to IRQ 21<br>=A0=A0=A0=A0=A0=A0=A0 Region 0:=
 I/O ports at e480 [size=3D8]<br>=A0=A0=A0=A0=A0=A0=A0 Region 1: I/O ports =
at e400 [size=3D4]<br>=A0=A0=A0=A0=A0=A0=A0 Region 2: I/O ports at e080 [si=
ze=3D8]<br>
=A0=A0=A0=A0=A0=A0=A0 Region 3: I/O ports at e000 [size=3D4]<br>=A0=A0=A0=
=A0=A0=A0=A0 Region 4: I/O ports at dc00 [size=3D16]<br>=A0=A0=A0=A0=A0=A0=
=A0 Region 5: Memory at f5efd000 (32-bit, non-prefetchable) [size=3D4K]<br>=
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [44] Power Management version 2<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- A=
uxCurrent=3D0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D0=
 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: sata_nv<br>=A0=A0=A0=
=A0=A0=A0=A0 Kernel modules: sata_nv<br>
<br>00:08.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (=
rev f3) (prog-if 85 [Master SecO PriO])<br>=A0=A0=A0=A0=A0=A0=A0 Subsystem:=
 ASUSTeK Computer Inc. Device 8162<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O+ M=
em+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2=
B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Latency: 0 (750ns min, 250ns max)<br>=A0=A0=A0=A0=A0=A0=A0 =
Interrupt: pin A routed to IRQ 20<br>=A0=A0=A0=A0=A0=A0=A0 Region 0: I/O po=
rts at d880 [size=3D8]<br>
=A0=A0=A0=A0=A0=A0=A0 Region 1: I/O ports at d800 [size=3D4]<br>=A0=A0=A0=
=A0=A0=A0=A0 Region 2: I/O ports at d480 [size=3D8]<br>=A0=A0=A0=A0=A0=A0=
=A0 Region 3: I/O ports at d400 [size=3D4]<br>=A0=A0=A0=A0=A0=A0=A0 Region =
4: I/O ports at d080 [size=3D16]<br>=A0=A0=A0=A0=A0=A0=A0 Region 5: Memory =
at f5efc000 (32-bit, non-prefetchable) [size=3D4K]<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [44] Power Management version 2<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxC=
urrent=3D0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D0 PM=
E-<br>
=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: sata_nv<br>=A0=A0=A0=A0=A0=A0=
=A0 Kernel modules: sata_nv<br><br>00:09.0 PCI bridge: nVidia Corporation C=
K804 PCI Bridge (rev f2) (prog-if 01 [Subtractive decode])<br>=A0=A0=A0=A0=
=A0=A0=A0 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParEr=
r- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Latency: 0<br>=A0=A0=A0=A0=A0=A0=A0 Bus: primary=3D00, seco=
ndary=3D01, subordinate=3D01, sec-latency=3D64<br>
=A0=A0=A0=A0=A0=A0=A0 I/O behind bridge: 00009000-00009fff<br>=A0=A0=A0=A0=
=A0=A0=A0 Memory behind bridge: f5600000-f56fffff<br>=A0=A0=A0=A0=A0=A0=A0 =
Prefetchable memory behind bridge: f5f00000-fdefffff<br>=A0=A0=A0=A0=A0=A0=
=A0 Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=3Dmedium &gt;TAbort- &=
lt;TAbort- &lt;MAbort+ &lt;SERR- &lt;PERR-<br>
=A0=A0=A0=A0=A0=A0=A0 BridgeCtl: Parity- SERR+ NoISA- VGA+ MAbort- &gt;Rese=
t- FastB2B-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 PriDiscTmr- Se=
cDiscTmr+ DiscTmrStat- DiscTmrSERREn-<br><br>00:0b.0 PCI bridge: nVidia Cor=
poration CK804 PCIE Bridge (rev f3) (prog-if 00 [Normal decode])<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Bus: primary=3D00, secondary=3D02, subordinate=3D02, sec-latency=
=3D0<br>=A0=A0=A0=A0=A0=A0=A0 Memory behind bridge: f5700000-f57fffff<br>=
=A0=A0=A0=A0=A0=A0=A0 Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort+ &lt;SERR- &lt;PERR-<br>
=A0=A0=A0=A0=A0=A0=A0 BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- &gt;Rese=
t- FastB2B-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 PriDiscTmr- Se=
cDiscTmr- DiscTmrStat- DiscTmrSERREn-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities=
: [40] Power Management version 2<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxCurrent=3D0mA PME(D0+,D1+,D2+,D3ho=
t+,D3cold+)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [48] M=
SI: Enable+ Count=3D1/2 Maskable- 64bit+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Address: 00000000feeff00c=A0 Data: 4198<br>=A0=A0=A0=A0=A0=
=A0=A0 Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Mapping Address Base: 0000000=
0fee00000<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] Express (v1) Root Por=
t (Slot+), MSI 00<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCap: =
MaxPayload 128 bytes, PhantFunc 0, Latency L0s &lt;512ns, L1 &lt;4us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTa=
g- RBE- FLReset-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCtl: R=
eport errors: Correctable- Non-Fatal- Fatal- Unsupported-<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RlxdOrd+ ExtTag- =
PhantFunc- AuxPwr- NoSnoop+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 MaxPayload 128 bytes, MaxReadReq 512 bytes<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr- F=
atalErr- UnsuppReq- AuxPwr- TransPend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 LnkCap: Port #3, Speed 2.5GT/s, Width x2, ASPM L0s, Latency L0=
 &lt;512ns, L1 &lt;4us<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 ClockPM- Surprise- LLActRep- BwNot-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCtl: ASPM Disabled; RCB 64=
 bytes Disabled- Retrain- CommClk-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSynch- ClockPM- AutWidDis- BWInt- AutB=
WInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/=
s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCap: AttnBtn- PwrCtrl- MRL=
- AttnInd- PwrInd- HotPlug- Surpise-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Slot #=A0 8, PowerLimit 25.000000; Int=
erlock- NoCompl-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCtl: E=
nable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Contr=
ol: AttnInd Off, PwrInd On, Power- Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 SltSta: Status: AttnBtn+ PowerFlt- MRL- CmdCplt- Pres=
Det+ Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Changed: MRL- PresDet- LinkState-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RootCtl: ErrCorrectable- ErrN=
on-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 RootCap: CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [100] Virtual Channel &lt;?&gt;<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [160] Advanced Error Reporting<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr- BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
0c, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver i=
n use: pcieport<br>=A0=A0=A0=A0=A0=A0=A0 Kernel modules: shpchp<br><br>00:0=
c.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev f3) (prog-if 00 [=
Normal decode])<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Bus: primary=3D00, secondary=3D03, subordinate=3D03, sec-latency=
=3D0<br>=A0=A0=A0=A0=A0=A0=A0 Memory behind bridge: f5800000-f58fffff<br>=
=A0=A0=A0=A0=A0=A0=A0 Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort+ &lt;SERR- &lt;PERR-<br>
=A0=A0=A0=A0=A0=A0=A0 BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- &gt;Rese=
t- FastB2B-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 PriDiscTmr- Se=
cDiscTmr- DiscTmrStat- DiscTmrSERREn-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities=
: [40] Power Management version 2<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxCurrent=3D0mA PME(D0+,D1+,D2+,D3ho=
t+,D3cold+)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [48] M=
SI: Enable+ Count=3D1/2 Maskable- 64bit+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Address: 00000000feeff00c=A0 Data: 41a0<br>=A0=A0=A0=A0=A0=
=A0=A0 Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Mapping Address Base: 0000000=
0fee00000<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] Express (v1) Root Por=
t (Slot+), MSI 00<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCap: =
MaxPayload 128 bytes, PhantFunc 0, Latency L0s &lt;512ns, L1 &lt;4us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTa=
g- RBE- FLReset-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCtl: R=
eport errors: Correctable- Non-Fatal- Fatal- Unsupported-<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RlxdOrd+ ExtTag- =
PhantFunc- AuxPwr- NoSnoop+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 MaxPayload 128 bytes, MaxReadReq 512 bytes<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr- F=
atalErr- UnsuppReq- AuxPwr- TransPend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 LnkCap: Port #2, Speed 2.5GT/s, Width x2, ASPM L0s, Latency L0=
 &lt;512ns, L1 &lt;4us<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 ClockPM- Surprise- LLActRep- BwNot-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCtl: ASPM Disabled; RCB 64=
 bytes Disabled- Retrain- CommClk-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSynch- ClockPM- AutWidDis- BWInt- AutB=
WInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/=
s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCap: AttnBtn- PwrCtrl- MRL=
- AttnInd- PwrInd- HotPlug- Surpise-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Slot #=A0 4, PowerLimit 25.000000; Int=
erlock- NoCompl-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCtl: E=
nable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Contr=
ol: AttnInd Off, PwrInd On, Power- Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 SltSta: Status: AttnBtn+ PowerFlt- MRL- CmdCplt- Pres=
Det+ Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Changed: MRL- PresDet- LinkState-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RootCtl: ErrCorrectable- ErrN=
on-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 RootCap: CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [100] Virtual Channel &lt;?&gt;<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [160] Advanced Error Reporting<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr- BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
14, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver i=
n use: pcieport<br>=A0=A0=A0=A0=A0=A0=A0 Kernel modules: shpchp<br><br>00:0=
d.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev f3) (prog-if 00 [=
Normal decode])<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Bus: primary=3D00, secondary=3D04, subordinate=3D04, sec-latency=
=3D0<br>=A0=A0=A0=A0=A0=A0=A0 I/O behind bridge: 0000a000-0000cfff<br>=A0=
=A0=A0=A0=A0=A0=A0 Memory behind bridge: f5900000-f5dfffff<br>=A0=A0=A0=A0=
=A0=A0=A0 Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbor=
t- &lt;TAbort- &lt;MAbort- &lt;SERR- &lt;PERR-<br>
=A0=A0=A0=A0=A0=A0=A0 BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- &gt;Rese=
t- FastB2B-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 PriDiscTmr- Se=
cDiscTmr- DiscTmrStat- DiscTmrSERREn-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities=
: [40] Power Management version 2<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxCurrent=3D0mA PME(D0+,D1+,D2+,D3ho=
t+,D3cold+)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [48] M=
SI: Enable+ Count=3D1/2 Maskable- 64bit+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Address: 00000000feeff00c=A0 Data: 41a8<br>=A0=A0=A0=A0=A0=
=A0=A0 Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Mapping Address Base: 0000000=
0fee00000<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] Express (v1) Root Por=
t (Slot+), MSI 00<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCap: =
MaxPayload 128 bytes, PhantFunc 0, Latency L0s &lt;512ns, L1 &lt;4us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTa=
g- RBE- FLReset-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCtl: R=
eport errors: Correctable- Non-Fatal- Fatal- Unsupported-<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RlxdOrd+ ExtTag- =
PhantFunc- AuxPwr- NoSnoop+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 MaxPayload 128 bytes, MaxReadReq 512 bytes<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr- F=
atalErr- UnsuppReq- AuxPwr- TransPend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 LnkCap: Port #1, Speed 2.5GT/s, Width x8, ASPM L0s, Latency L0=
 &lt;512ns, L1 &lt;4us<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 ClockPM- Surprise- LLActRep- BwNot-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCtl: ASPM Disabled; RCB 64=
 bytes Disabled- Retrain- CommClk-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSynch- ClockPM- AutWidDis- BWInt- AutB=
WInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/=
s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCap: AttnBtn- PwrCtrl- MRL=
- AttnInd- PwrInd- HotPlug- Surpise-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Slot #=A0 2, PowerLimit 25.000000; Int=
erlock- NoCompl-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCtl: E=
nable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Contr=
ol: AttnInd Off, PwrInd On, Power- Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- Pres=
Det+ Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Changed: MRL- PresDet- LinkState-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RootCtl: ErrCorrectable- ErrN=
on-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 RootCap: CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [100] Virtual Channel &lt;?&gt;<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [160] Advanced Error Reporting<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr- BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
00, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver i=
n use: pcieport<br>=A0=A0=A0=A0=A0=A0=A0 Kernel modules: shpchp<br><br>00:0=
e.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3) (prog-if 00 [=
Normal decode])<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Bus: primary=3D00, secondary=3D05, subordinate=3D05, sec-latency=
=3D0<br>=A0=A0=A0=A0=A0=A0=A0 Secondary status: 66MHz- FastB2B- ParErr- DEV=
SEL=3Dfast &gt;TAbort- &lt;TAbort- &lt;MAbort- &lt;SERR- &lt;PERR-<br>
=A0=A0=A0=A0=A0=A0=A0 BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- &gt;Rese=
t- FastB2B-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 PriDiscTmr- Se=
cDiscTmr- DiscTmrStat- DiscTmrSERREn-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities=
: [40] Power Management version 2<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxCurrent=3D0mA PME(D0+,D1+,D2+,D3ho=
t+,D3cold+)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [48] M=
SI: Enable+ Count=3D1/2 Maskable- 64bit+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Address: 00000000feeff00c=A0 Data: 41b0<br>=A0=A0=A0=A0=A0=
=A0=A0 Capabilities: [58] HyperTransport: MSI Mapping Enable- Fixed-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Mapping Address Base: 0000000=
0fee00000<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] Express (v1) Root Por=
t (Slot+), MSI 00<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCap: =
MaxPayload 128 bytes, PhantFunc 0, Latency L0s &lt;512ns, L1 &lt;4us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTa=
g- RBE- FLReset-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCtl: R=
eport errors: Correctable- Non-Fatal- Fatal- Unsupported-<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RlxdOrd+ ExtTag- =
PhantFunc- AuxPwr- NoSnoop+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 MaxPayload 128 bytes, MaxReadReq 512 bytes<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr- F=
atalErr- UnsuppReq- AuxPwr- TransPend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 LnkCap: Port #0, Speed 2.5GT/s, Width x8, ASPM L0s, Latency L0=
 &lt;512ns, L1 &lt;4us<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 ClockPM- Surprise- LLActRep- BwNot-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCtl: ASPM Disabled; RCB 64=
 bytes Disabled- Retrain- CommClk-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSynch- ClockPM- AutWidDis- BWInt- AutB=
WInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/=
s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCap: AttnBtn- PwrCtrl- MRL=
- AttnInd- PwrInd- HotPlug- Surpise-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Slot #=A0 1, PowerLimit 25.000000; Int=
erlock- NoCompl-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 SltCtl: E=
nable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Contr=
ol: AttnInd Off, PwrInd On, Power- Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- Pres=
Det- Interlock-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 Changed: MRL- PresDet- LinkState-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RootCtl: ErrCorrectable- ErrN=
on-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 RootCap: CRSVisible-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [100] Virtual Channel &lt;?&gt;<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [160] Advanced Error Reporting<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr- BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
00, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver i=
n use: pcieport<br>=A0=A0=A0=A0=A0=A0=A0 Kernel modules: shpchp<br><br>00:1=
8.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTra=
nsport Configuration<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] HyperTransport: Host or Secondary =
Interface<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: WarmRst=
+ DblEnd- DevNum=3D0 ChainSide- HostHide+ Slave- &lt;EOCErr- DUL-<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control: CFlE- CST- CFE- &lt;L=
kFail- Init+ EOC- TXO- &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config: MLWI=3D16bit DwF=
cIn- MLWO=3D16bit DwFcOut- LWI=3D16bit DwFcInEn- LWO=3D16bit DwFcOutEn-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 3.00<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency: 1.0GHz<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error: &lt;Prot- &lt;Ovfl- &lt;EO=
C- CTLTm-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability: 20=
0MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GH=
z- Vend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capabilit=
y: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD- ExtRS- UCnfE-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [a0] HyperTransport: Host or Secondary =
Interface<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: WarmRst=
+ DblEnd- DevNum=3D0 ChainSide- HostHide+ Slave- &lt;EOCErr- DUL-<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control: CFlE- CST- CFE- &lt;L=
kFail- Init+ EOC- TXO- &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config: MLWI=3D16bit DwF=
cIn- MLWO=3D16bit DwFcOut- LWI=3D16bit DwFcInEn- LWO=3D16bit DwFcOutEn-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 3.00<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency: 1.0GHz<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error: &lt;Prot- &lt;Ovfl- &lt;EO=
C- CTLTm-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability: 20=
0MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GH=
z- Vend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capabilit=
y: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD- ExtRS- UCnfE-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [c0] HyperTransport: Host or Secondary =
Interface<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: WarmRst=
+ DblEnd- DevNum=3D0 ChainSide- HostHide+ Slave- &lt;EOCErr- DUL-<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control: CFlE- CST- CFE- &lt;L=
kFail- Init+ EOC- TXO- &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config: MLWI=3D16bit DwF=
cIn- MLWO=3D16bit DwFcOut- LWI=3D16bit DwFcInEn- LWO=3D16bit DwFcOutEn-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 3.00<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency: 1.0GHz<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error: &lt;Prot- &lt;Ovfl- &lt;EO=
C- CTLTm-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability: 20=
0MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GH=
z- Vend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capabilit=
y: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD- ExtRS- UCnfE-<br>
<br>00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor =
Address Map<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycl=
e- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt=
;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
<br>00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor =
DRAM Controller<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- Spec=
Cycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=
=A0=A0=A0=A0=A0=A0 Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast =
&gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: amd64_edac<br>=A0=A0=A0=A0=A0=
=A0=A0 Kernel modules: amd64_edac_mod<br><br>00:18.3 Host bridge: Advanced =
Micro Devices [AMD] Family 10h Processor Miscellaneous Control<br>=A0=A0=A0=
=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- Pa=
rErr- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [f0] Secure device &lt;?&gt;<br>=A0=A0=A0=A0=
=A0=A0=A0 Kernel modules: k10temp<br><br>00:18.4 Host bridge: Advanced Micr=
o Devices [AMD] Family 10h Processor Link Control<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
<br>00:19.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor =
HyperTransport Configuration<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- Bu=
sMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Dis=
INTx-<br>=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DE=
VSEL=3Dfast &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<b=
r>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [80] HyperTransport: Host or Secondary =
Interface<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: WarmRst=
+ DblEnd- DevNum=3D0 ChainSide- HostHide+ Slave- &lt;EOCErr- DUL-<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control: CFlE- CST- CFE- &lt;L=
kFail- Init+ EOC- TXO- &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config: MLWI=3D16bit DwF=
cIn- MLWO=3D16bit DwFcOut- LWI=3D16bit DwFcInEn- LWO=3D16bit DwFcOutEn-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 3.00<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency: 1.0GHz<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error: &lt;Prot- &lt;Ovfl- &lt;EO=
C- CTLTm-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability: 20=
0MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GH=
z- Vend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capabilit=
y: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD- ExtRS- UCnfE-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [a0] HyperTransport: Host or Secondary =
Interface<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: WarmRst=
+ DblEnd- DevNum=3D0 ChainSide- HostHide+ Slave- &lt;EOCErr- DUL-<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control: CFlE- CST- CFE- &lt;L=
kFail- Init+ EOC- TXO- &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config: MLWI=3D16bit DwF=
cIn- MLWO=3D16bit DwFcOut- LWI=3D16bit DwFcInEn- LWO=3D16bit DwFcOutEn-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 3.00<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency: 1.0GHz<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error: &lt;Prot- &lt;Ovfl- &lt;EO=
C- CTLTm-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability: 20=
0MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GH=
z- Vend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capabilit=
y: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD- ExtRS- UCnfE-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [c0] HyperTransport: Host or Secondary =
Interface<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Command: WarmRst=
+ DblEnd- DevNum=3D0 ChainSide- HostHide+ Slave- &lt;EOCErr- DUL-<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Control: CFlE- CST- CFE- &lt;L=
kFail- Init- EOC+ TXO+ &lt;CRCErr=3D0 IsocEn- LSEn- ExtCTL- 64b-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Config: MLWI=3D16bit DwF=
cIn- MLWO=3D16bit DwFcOut- LWI=3DN/C DwFcInEn- LWO=3DN/C DwFcOutEn-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Revision ID: 3.00<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency: 200MHz<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Error: &lt;Prot- &lt;Ovfl- &lt;EOC- =
CTLTm-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Link Frequency Capability: 20=
0MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz- 1.4GHz- 1.6GH=
z- Vend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Feature Capabilit=
y: IsocFC+ LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD- ExtRS- UCnfE-<br>
<br>00:19.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor =
Address Map<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycl=
e- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt=
;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
<br>00:19.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor =
DRAM Controller<br>=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- Spec=
Cycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=
=A0=A0=A0=A0=A0=A0 Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast =
&gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: amd64_edac<br>=A0=A0=A0=A0=A0=
=A0=A0 Kernel modules: amd64_edac_mod<br><br>00:19.3 Host bridge: Advanced =
Micro Devices [AMD] Family 10h Processor Miscellaneous Control<br>=A0=A0=A0=
=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- Pa=
rErr- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfa=
st &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [f0] Secure device &lt;?&gt;<br>=A0=A0=A0=A0=
=A0=A0=A0 Kernel modules: k10temp<br><br>00:19.4 Host bridge: Advanced Micr=
o Devices [AMD] Family 10h Processor Link Control<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
<br>01:04.0 VGA compatible controller: XGI Technology Inc. (eXtreme Graphic=
s Innovation) Z7/Z9 (XG20 core) (prog-if 00 [VGA controller])<br>=A0=A0=A0=
=A0=A0=A0=A0 Subsystem: ASUSTeK Computer Inc. Device 82b4<br>=A0=A0=A0=A0=
=A0=A0=A0 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParEr=
r- Stepping- SERR- FastB2B- DisINTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=3Dme=
dium &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>=A0=
=A0=A0=A0=A0=A0=A0 BIST result: 00<br>=A0=A0=A0=A0=A0=A0=A0 Region 0: Memor=
y at f8000000 (32-bit, prefetchable) [size=3D64M]<br>
=A0=A0=A0=A0=A0=A0=A0 Region 1: Memory at f56c0000 (32-bit, non-prefetchabl=
e) [size=3D256K]<br>=A0=A0=A0=A0=A0=A0=A0 Region 2: I/O ports at 9c00 [size=
=3D128]<br>=A0=A0=A0=A0=A0=A0=A0 Expansion ROM at &lt;unassigned&gt; [disab=
led]<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [40] Power Management version 2=
<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1+ D2+ A=
uxCurrent=3D0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D0=
 PME-<br><br>02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BC=
M5721 Gigabit Ethernet PCI Express (rev 21)<br>
=A0=A0=A0=A0=A0=A0=A0 Subsystem: ASUSTeK Computer Inc. Device 8149<br>=A0=
=A0=A0=A0=A0=A0=A0 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASno=
op- ParErr- Stepping- SERR+ FastB2B- DisINTx+<br>=A0=A0=A0=A0=A0=A0=A0 Stat=
us: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbort-=
 &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Interrupt: pin A routed to IRQ 283<br>=A0=A0=A0=A0=A0=A0=A0 Regio=
n 0: Memory at f57f0000 (64-bit, non-prefetchable) [size=3D64K]<br>=A0=A0=
=A0=A0=A0=A0=A0 Capabilities: [48] Power Management version 2<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- A=
uxCurrent=3D0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D1=
 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [50] Vital Product Data<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Product Name: Broadcom NetXtreme=
 Gigabit Ethernet Controller<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Read-only fields:<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [PN] Part n=
umber: BCM95721<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 [EC] Engineering changes: 106679-15<br>=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [SN] Serial number: 012=
3456789<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 [MN] Manufacture ID: 31 34 65 34<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [RV] =
Reserved: checksum bad, 28 byte(s) reserved<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 Read/write fields:<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [YA] Asset tag: XYZ01234567<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [RW] Read-w=
rite area: 107 byte(s) free<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 End<br>=A0=A0=A0=A0=A0=A0=A0 =
Capabilities: [58] MSI: Enable+ Count=3D1/8 Maskable- 64bit+<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Address: 00000000fee0100c=A0 Data: 413=
1<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [d0] Express (v1) Endpoint, MSI 00=
<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCap: MaxPayload 128 by=
tes, PhantFunc 0, Latency L0s &lt;4us, L1 unlimited<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTa=
g+ AttnBtn- AttnInd- PwrInd- RBE- FLReset-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Un=
supported-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 MaxPa=
yload 128 bytes, MaxReadReq 4096 bytes<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ Trans=
Pend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCap: Port #0, Spe=
ed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 &lt;4us, L1 &lt;64us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Clock=
PM- Surprise- LLActRep- BwNot-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSy=
nch- ClockPM- AutWidDis- BWInt- AutBWInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLA=
ctive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [100] Advanced Error Reporting<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr- BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
14, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [=
13c] Virtual Channel &lt;?&gt;<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [160]=
 Device Serial Number 00-1e-8c-ff-fe-51-61-c0<br>=A0=A0=A0=A0=A0=A0=A0 Capa=
bilities: [16c] Power Budgeting &lt;?&gt;<br>
=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: tg3<br>=A0=A0=A0=A0=A0=A0=A0 Ke=
rnel modules: tg3<br><br>03:00.0 Ethernet controller: Broadcom Corporation =
NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 21)<br>=A0=A0=A0=A0=A0=
=A0=A0 Subsystem: ASUSTeK Computer Inc. Device 8149<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Interrupt: pin A routed to IRQ 284<br>=A0=A0=A0=A0=A0=A0=A0 Regio=
n 0: Memory at f58f0000 (64-bit, non-prefetchable) [size=3D64K]<br>=A0=A0=
=A0=A0=A0=A0=A0 Expansion ROM at &lt;ignored&gt; [disabled]<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [48] Power Management version 2<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- DSI- D1- D2- AuxC=
urrent=3D0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Enable- DSel=3D0 DScale=3D1 PM=
E-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [50] Vital Product Data<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Product Name: Broadcom NetXtreme Gigabit =
Ethernet Controller<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Read-o=
nly fields:<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 [PN] Part number: BCM95721<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [EC] Engineering changes: 106679-15<br=
>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [SN] =
Serial number: 0123456789<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0 [MN] Manufacture ID: 31 34 65 34<br>=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [RV] Reserved: ch=
ecksum bad, 28 byte(s) reserved<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 Read/write fields:<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [YA] =
Asset tag: XYZ01234567<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0 [RW] Read-write area: 107 byte(s) free<br>=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 End<br>=A0=A0=A0=A0=A0=A0=A0 Capabilit=
ies: [58] MSI: Enable+ Count=3D1/8 Maskable- 64bit+<br>=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 Address: 00000000fee0100c=A0 Data: 4139<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [d0] Express (v1) Endpoint, MSI 00<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCap: MaxPayload 128 bytes,=
 PhantFunc 0, Latency L0s &lt;4us, L1 unlimited<br>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTag+ AttnBtn- AttnInd- Pwr=
Ind- RBE- FLReset-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevCtl: Report errors: Correc=
table- Non-Fatal- Fatal- Unsupported-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 RlxdOrd- ExtTag- PhantFunc- AuxPwr- No=
Snoop-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 MaxPayload 128 bytes, MaxReadReq 4096 bytes<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr- F=
atalErr- UnsuppReq- AuxPwr+ TransPend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency=
 L0 &lt;4us, L1 &lt;64us<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0 ClockPM- Surprise- LLActRep- BwNot-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCtl: ASPM Disabled; RCB 64=
 bytes Disabled- Retrain- CommClk-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSynch- ClockPM- AutWidDis- BWInt- AutB=
WInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/=
s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [100] Advanced Error Reporting<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-<br>=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP- C=
mpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr+ BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
14, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [=
13c] Virtual Channel &lt;?&gt;<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [160]=
 Device Serial Number 00-1e-8c-ff-fe-51-63-b3<br>=A0=A0=A0=A0=A0=A0=A0 Capa=
bilities: [16c] Power Budgeting &lt;?&gt;<br>
=A0=A0=A0=A0=A0=A0=A0 Kernel driver in use: tg3<br>=A0=A0=A0=A0=A0=A0=A0 Ke=
rnel modules: tg3<br><br>04:00.0 SCSI storage controller: LSI Logic / Symbi=
os Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 04)<br>=A0=A0=A0=A0=A0=
=A0=A0 Subsystem: ASUSTeK Computer Inc. Device 82c3<br>
=A0=A0=A0=A0=A0=A0=A0 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGA=
Snoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-<br>=A0=A0=A0=A0=A0=A0=A0 S=
tatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dfast &gt;TAbort- &lt;TAbo=
rt- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-<br>
=A0=A0=A0=A0=A0=A0=A0 Latency: 0, Cache Line Size: 64 bytes<br>=A0=A0=A0=A0=
=A0=A0=A0 Interrupt: pin A routed to IRQ 19<br>=A0=A0=A0=A0=A0=A0=A0 Region=
 0: I/O ports at c000 [size=3D256]<br>=A0=A0=A0=A0=A0=A0=A0 Region 1: Memor=
y at f5dfc000 (64-bit, non-prefetchable) [size=3D16K]<br>
=A0=A0=A0=A0=A0=A0=A0 Region 3: Memory at f5de0000 (64-bit, non-prefetchabl=
e) [size=3D64K]<br>=A0=A0=A0=A0=A0=A0=A0 Expansion ROM at f5a00000 [disable=
d] [size=3D2M]<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [50] Power Management=
 version 2<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Flags: PMEClk- =
DSI- D1+ D2+ AuxCurrent=3D0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Status: D0 NoSoftRst- PME-Ena=
ble- DSel=3D0 DScale=3D0 PME-<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [68] E=
xpress (v1) Endpoint, MSI 00<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 DevCap: MaxPayload 4096 bytes, PhantFunc 0, Latency L0s &lt;64ns, L1 &l=
t;1us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtTa=
g+ AttnBtn- AttnInd- PwrInd- RBE- FLReset-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Un=
supported-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 MaxPa=
yload 128 bytes, MaxReadReq 512 bytes<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- Trans=
Pend-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 LnkCap: Port #0, Spe=
ed 2.5GT/s, Width x8, ASPM L0s L1, Latency L0 &lt;64ns, L1 &lt;1us<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Clock=
PM- Surprise- LLActRep- BwNot-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ExtSy=
nch- ClockPM- AutWidDis- BWInt- AutBWInt-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk- DLA=
ctive- BWMgmt- ABWMgmt-<br>
=A0=A0=A0=A0=A0=A0=A0 Capabilities: [98] MSI: Enable- Count=3D1/1 Maskable-=
 64bit+<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Address: 000000000=
0000000=A0 Data: 0000<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [b0] MSI-X: En=
able- Count=3D1 Masked-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Ve=
ctor table: BAR=3D1 offset=3D00002000<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 PBA: BAR=3D1 offset=3D0000300=
0<br>=A0=A0=A0=A0=A0=A0=A0 Capabilities: [100] Advanced Error Reporting<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESta:=A0 DLP- SDES- TLP- FCP=
- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UEMsk:=A0 DLP- SDES- TLP- FCP=
- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 UESvrt: DLP+ SDES- TLP- FCP+ =
CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 CESta:=A0 RxErr- BadTLP- BadD=
LLP- Rollover- Timeout- NonFatalErr-<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 CEMsk:=A0 RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalE=
rr-<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 AERCap: First Error Pointer: =
00, GenCap+ CGenEn- ChkCap+ ChkEn-<br>=A0=A0=A0=A0=A0=A0=A0 Kernel driver i=
n use: mptsas<br>=A0=A0=A0=A0=A0=A0=A0 Kernel modules: mptsas<br><br># lsmo=
d<br>Module=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Size=A0 Used=
 by<br>xen_gntalloc=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 4065=A0 0<br>
sunrpc=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 204202=A0 1<br>bridge=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 69381=A0 0<br>stp=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1939=A0 1 bridge<br>ipv=
6=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 242255=A0 33 bridge<br=
>microcode=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 108233=A0 0<br>pcspkr=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1814=A0 0<br>
serio_raw=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 4155=A0 0<br>k10temp=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 3167=A0 0<br>hwmon=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1703=A0 1 k10temp<br>amd64_ed=
ac_mod=A0=A0=A0=A0=A0=A0=A0=A0 18819=A0 0<br>edac_core=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 39964=A0 4 amd64_edac_mod<br>tg3=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 122274=A0 0<br>
libphy=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 20670=A0 1 tg3<br>sg=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 25143=A0 0<br>=
i2c_nforce2=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 5205=A0 0<br>i2c_core=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 22702=A0 1 i2c_nforce2<br>ext4=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 243772=A0 6<br>jbd2=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 53102=A0 1 ext4<br>
crc16=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1595=A0 1 ext4<=
br>sd_mod=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 25759=A0 5<br>mpt=
sas=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 45838=A0 0<br>mptscsih=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 29531=A0 1 mptsas<br>mptbase=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 84265=A0 2 mptsas,mptscsih<br>sc=
si_transport_sas=A0=A0=A0=A0 28533=A0 1 mptsas<br>
sata_nv=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 19346=A0 3<br>libata=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 164765=A0 1 sata_nv<br>scsi_m=
od=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 156890=A0 6 sg,sd_mod,mptsas,mpts=
csih,scsi_transport_sas,libata<br>ehci_hcd=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 33653=A0 0<br>ohci_hcd=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =
18209=A0 0<br>
button=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 5111=A0 0<br>dm_m=
irror=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 12064=A0 0<br>dm_region_hash=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 9658=A0 1 dm_mirror<br>dm_log=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 8240=A0 2 dm_mirror,dm_region_hash<br>dm_=
mod=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 65814=A0 20 dm_mirror,d=
m_log<br>
<br>=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0pt 0pt 0pt =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div><br>
&gt;<br>
&gt; Many many thanks for taking the toime to put together that nice and us=
eful<br>
&gt; info.<br>
<br>
</div>Those repos are there for years actually just that SL6/CentOS6 are<br=
>
considered quite new in those repos. =A0I used the same repos when using<br=
>
CentOS 5 as dom0 last time but cease it due to the time involved to<br>
support those in CentOS 5. =A0I rather focus on SL6/CentOS6 :) =A0Just<br>
beware that all my dom0 servers are SL6 based.<br>
<br>
Feedbacks are greatly appreciated and if you need assistance off this<br>
list are welcome (just compose another new mail direct to me so that I<br>
know it is not from this xen-users list).<br>
<div><div><br></div></div></blockquote><div>Thank you for taking the toine =
to read and answer.<br>=A0</div><blockquote class=3D"gmail_quote" style=3D"=
margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex">
<div><div>
Thanks.<br>
<br>
Kindest regards,<br>
Giam Teck Choon<br>
<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thanks.<br>
&gt;&gt;<br>
&gt;&gt; Kindest regards,<br>
&gt;&gt; Giam Teck Choon<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Thank you very much.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Again.<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; David Gonzalez H.<br>
&gt;&gt; &gt; Bogota: <a href=3D"tel:%2B%2857-1%29289-1168" value=3D"+57128=
91168" target=3D"_blank">+(57-1)289-1168</a><br>
&gt;&gt; &gt; Medellin: <a href=3D"tel:%2B%2857-1%29247-0985" value=3D"+571=
2470985" target=3D"_blank">+(57-1)247-0985</a><br>
&gt;&gt; &gt; Cel: <a href=3D"tel:%2B%2857%29315-838-8326" value=3D"+573158=
388326" target=3D"_blank">+(57)315-838-8326</a><br>
&gt;&gt; &gt; DGHVoIP - OPEN SOURCE TELEPHONY SOLUTIONS<br>
&gt;&gt; &gt; <a href=3D"http://www.dghvoip.com/" target=3D"_blank">http://=
www.dghvoip.com/</a><br>
&gt;&gt; &gt; Proud Linux User #294661<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; David Gonzalez H.<br>
&gt; Bogota: <a href=3D"tel:%2B%2857-1%29289-1168" value=3D"+5712891168" ta=
rget=3D"_blank">+(57-1)289-1168</a><br>
&gt; Medellin: <a href=3D"tel:%2B%2857-1%29247-0985" value=3D"+5712470985" =
target=3D"_blank">+(57-1)247-0985</a><br>
&gt; Cel: <a href=3D"tel:%2B%2857%29315-838-8326" value=3D"+573158388326" t=
arget=3D"_blank">+(57)315-838-8326</a><br>
&gt; DGHVoIP - OPEN SOURCE TELEPHONY SOLUTIONS<br>
&gt; <a href=3D"http://www.dghvoip.com/" target=3D"_blank">http://www.dghvo=
ip.com/</a><br>
&gt; Proud Linux User #294661<br>
</div></div></blockquote></div><br><br clear=3D"all"><br>-- <br>David Gonza=
lez H.<br>Bogota: <a href=3D"tel:%2B%2857-1%29289-1168" value=3D"+571289116=
8" target=3D"_blank">+(57-1)289-1168</a><br>Medellin: <a href=3D"tel:%2B%28=
57-1%29247-0985" value=3D"+5712470985" target=3D"_blank">+(57-1)247-0985</a=
><br>
Cel: <a href=3D"tel:%2B%2857%29315-838-8326" value=3D"+573158388326" target=
=3D"_blank">+(57)315-838-8326</a><br>DGHVoIP - OPEN SOURCE TELEPHONY SOLUTI=
ONS<br><a href=3D"http://www.dghvoip.com/" target=3D"_blank">http://www.dgh=
voip.com/</a><br>

Proud Linux User #294661<br>

--0015175cffe827daea04b84daa0c--


--===============2252704011190247239==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xensource.com
http://lists.xensource.com/xen-users
--===============2252704011190247239==--


From xen-changelog-bounces@lists.xensource.com Thu Feb 09 16:00:38 2012
Return-path: <xen-changelog-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Feb 2012 16:00:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-changelog-bounces@lists.xensource.com>)
	id 1RvWQF-00060o-Oq; Thu, 09 Feb 2012 16:00:35 +0000
Received: from mail6.bemta4.messagelabs.com ([85.158.143.247])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RvWQD-0005zp-Eu
	for xen-changelog@lists.xensource.com; Thu, 09 Feb 2012 16:00:34 +0000
Received: from [85.158.143.35:34387] by server-2.bemta-4.messagelabs.com id
	A8/BF-02822-0ADE33F4; Thu, 09 Feb 2012 16:00:32 +0000
X-Env-Sender: xen@xenbits.xen.org
X-Msg-Ref: server-9.tower-21.messagelabs.com!1328803224!2167490!1
X-Originating-IP: [50.57.168.107]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27180 invoked from network); 9 Feb 2012 16:00:28 -0000
Received: from mail.xen.org (HELO mail.xen.org) (50.57.168.107)
	by server-9.tower-21.messagelabs.com with AES256-SHA encrypted SMTP;
	9 Feb 2012 16:00:28 -0000
Received: from xenbits.xen.org ([50.57.170.242])
	by mail.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RvWQ4-0004P0-D8
	for xen-changelog@lists.xensource.com; Thu, 09 Feb 2012 16:00:24 +0000
Received: from xen by xenbits.xen.org with local (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RvWQ3-00065w-6v
	for xen-changelog@lists.xensource.com; Thu, 09 Feb 2012 16:00:23 +0000
Message-Id: <E1RvWQ3-00065w-6v@xenbits.xen.org>
Date: Thu, 09 Feb 2012 16:00:22 +0000
From: Xen patchbot-unstable <patchbot@xen.org>
To: xen-changelog@lists.xensource.com
Subject: [Xen-changelog] [xen-unstable] arm: header files
X-BeenThere: xen-changelog@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: xen-devel@lists.xensource.com
List-Id: BK change log <xen-changelog.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-changelog>, 
	<mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xensource.com>
List-Help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>,
	<mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-changelog-bounces@lists.xensource.com
Errors-To: xen-changelog-bounces@lists.xensource.com

# HG changeset patch
# User Stefano Stabellini <stefano.stabellini@eu.citrix.com>
# Date 1328787209 0
# Node ID 46adf08254f9d88ffd3deba833ee89aa977fcb6b
# Parent  dcb04595033b020f16a1ed642cfbeb263a85e969
arm: header files

A simple implementation of everything under asm-arm and arch-arm.h; some
of these files are shamelessly taken from Linux.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
---


diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/atomic.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/atomic.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,236 @@
+/*
+ *  arch/arm/include/asm/atomic.h
+ *
+ *  Copyright (C) 1996 Russell King.
+ *  Copyright (C) 2002 Deep Blue Solutions Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __ARCH_ARM_ATOMIC__
+#define __ARCH_ARM_ATOMIC__
+
+#include <xen/config.h>
+#include <asm/system.h>
+
+#define build_atomic_read(name, size, type, reg)   \
+static inline type name(const volatile type *addr) \
+{                                                  \
+    type ret;                                      \
+    asm volatile("ldr" size " %0,%1"               \
+                 : reg (ret)                       \
+                 : "m" (*(volatile type *)addr));  \
+    return ret;                                    \
+}
+
+#define build_atomic_write(name, size, type, reg)      \
+static inline void name(volatile type *addr, type val) \
+{                                                      \
+    asm volatile("str" size " %1,%0"                   \
+                 : "=m" (*(volatile type *)addr)       \
+                 : reg (val));                         \
+}
+
+build_atomic_read(read_u8_atomic, "b", uint8_t, "=q")
+build_atomic_read(read_u16_atomic, "h", uint16_t, "=r")
+build_atomic_read(read_u32_atomic, "", uint32_t, "=r")
+//build_atomic_read(read_u64_atomic, "d", uint64_t, "=r")
+build_atomic_read(read_int_atomic, "", int, "=r")
+
+build_atomic_write(write_u8_atomic, "b", uint8_t, "q")
+build_atomic_write(write_u16_atomic, "h", uint16_t, "r")
+build_atomic_write(write_u32_atomic, "", uint32_t, "r")
+//build_atomic_write(write_u64_atomic, "d", uint64_t, "r")
+build_atomic_write(write_int_atomic, "", int, "r")
+
+void __bad_atomic_size(void);
+
+#define read_atomic(p) ({                                               \
+    typeof(*p) __x;                                                     \
+    switch ( sizeof(*p) ) {                                             \
+    case 1: __x = (typeof(*p))read_u8_atomic((uint8_t *)p); break;      \
+    case 2: __x = (typeof(*p))read_u16_atomic((uint16_t *)p); break;    \
+    case 4: __x = (typeof(*p))read_u32_atomic((uint32_t *)p); break;    \
+    default: __x = 0; __bad_atomic_size(); break;                       \
+    }                                                                   \
+    __x;                                                                \
+})
+
+#define write_atomic(p, x) ({                                           \
+    typeof(*p) __x = (x);                                               \
+    switch ( sizeof(*p) ) {                                             \
+    case 1: write_u8_atomic((uint8_t *)p, (uint8_t)__x); break;         \
+    case 2: write_u16_atomic((uint16_t *)p, (uint16_t)__x); break;      \
+    case 4: write_u32_atomic((uint32_t *)p, (uint32_t)__x); break;      \
+    default: __bad_atomic_size(); break;                                \
+    }                                                                   \
+    __x;                                                                \
+})
+
+/*
+ * NB. I've pushed the volatile qualifier into the operations. This allows
+ * fast accessors such as _atomic_read() and _atomic_set() which don't give
+ * the compiler a fit.
+ */
+typedef struct { int counter; } atomic_t;
+
+#define ATOMIC_INIT(i) { (i) }
+
+/*
+ * On ARM, ordinary assignment (str instruction) doesn't clear the local
+ * strex/ldrex monitor on some implementations. The reason we can use it for
+ * atomic_set() is the clrex or dummy strex done on every exception return.
+ */
+#define _atomic_read(v) ((v).counter)
+#define atomic_read(v)  (*(volatile int *)&(v)->counter)
+
+#define _atomic_set(v,i) (((v).counter) = (i))
+#define atomic_set(v,i) (((v)->counter) = (i))
+
+/*
+ * ARMv6 UP and SMP safe atomic ops.  We use load exclusive and
+ * store exclusive to ensure that these are atomic.  We may loop
+ * to ensure that the update happens.
+ */
+static inline void atomic_add(int i, atomic_t *v)
+{
+        unsigned long tmp;
+        int result;
+
+        __asm__ __volatile__("@ atomic_add\n"
+"1:     ldrex   %0, [%3]\n"
+"       add     %0, %0, %4\n"
+"       strex   %1, %0, [%3]\n"
+"       teq     %1, #0\n"
+"       bne     1b"
+        : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+        : "r" (&v->counter), "Ir" (i)
+        : "cc");
+}
+
+static inline int atomic_add_return(int i, atomic_t *v)
+{
+        unsigned long tmp;
+        int result;
+
+        smp_mb();
+
+        __asm__ __volatile__("@ atomic_add_return\n"
+"1:     ldrex   %0, [%3]\n"
+"       add     %0, %0, %4\n"
+"       strex   %1, %0, [%3]\n"
+"       teq     %1, #0\n"
+"       bne     1b"
+        : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+        : "r" (&v->counter), "Ir" (i)
+        : "cc");
+
+        smp_mb();
+
+        return result;
+}
+
+static inline void atomic_sub(int i, atomic_t *v)
+{
+        unsigned long tmp;
+        int result;
+
+        __asm__ __volatile__("@ atomic_sub\n"
+"1:     ldrex   %0, [%3]\n"
+"       sub     %0, %0, %4\n"
+"       strex   %1, %0, [%3]\n"
+"       teq     %1, #0\n"
+"       bne     1b"
+        : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+        : "r" (&v->counter), "Ir" (i)
+        : "cc");
+}
+
+static inline int atomic_sub_return(int i, atomic_t *v)
+{
+        unsigned long tmp;
+        int result;
+
+        smp_mb();
+
+        __asm__ __volatile__("@ atomic_sub_return\n"
+"1:     ldrex   %0, [%3]\n"
+"       sub     %0, %0, %4\n"
+"       strex   %1, %0, [%3]\n"
+"       teq     %1, #0\n"
+"       bne     1b"
+        : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
+        : "r" (&v->counter), "Ir" (i)
+        : "cc");
+
+        smp_mb();
+
+        return result;
+}
+
+static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
+{
+        unsigned long oldval, res;
+
+        smp_mb();
+
+        do {
+                __asm__ __volatile__("@ atomic_cmpxchg\n"
+                "ldrex  %1, [%3]\n"
+                "mov    %0, #0\n"
+                "teq    %1, %4\n"
+                "strexeq %0, %5, [%3]\n"
+                    : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter)
+                    : "r" (&ptr->counter), "Ir" (old), "r" (new)
+                    : "cc");
+        } while (res);
+
+        smp_mb();
+
+        return oldval;
+}
+
+static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
+{
+        unsigned long tmp, tmp2;
+
+        __asm__ __volatile__("@ atomic_clear_mask\n"
+"1:     ldrex   %0, [%3]\n"
+"       bic     %0, %0, %4\n"
+"       strex   %1, %0, [%3]\n"
+"       teq     %1, #0\n"
+"       bne     1b"
+        : "=&r" (tmp), "=&r" (tmp2), "+Qo" (*addr)
+        : "r" (addr), "Ir" (mask)
+        : "cc");
+}
+
+#define atomic_inc(v)           atomic_add(1, v)
+#define atomic_dec(v)           atomic_sub(1, v)
+
+#define atomic_inc_and_test(v)  (atomic_add_return(1, v) == 0)
+#define atomic_dec_and_test(v)  (atomic_sub_return(1, v) == 0)
+#define atomic_inc_return(v)    (atomic_add_return(1, v))
+#define atomic_dec_return(v)    (atomic_sub_return(1, v))
+#define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
+
+#define atomic_add_negative(i,v) (atomic_add_return(i, v) < 0)
+
+static inline atomic_t atomic_compareandswap(
+    atomic_t old, atomic_t new, atomic_t *v)
+{
+    atomic_t rc;
+    rc.counter = __cmpxchg(&v->counter, old.counter, new.counter, sizeof(int));
+    return rc;
+}
+
+#endif /* __ARCH_ARM_ATOMIC__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/bitops.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/bitops.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,213 @@
+/*
+ * Copyright 1995, Russell King.
+ * Various bits and pieces copyrights include:
+ *  Linus Torvalds (test_bit).
+ * Big endian support: Copyright 2001, Nicolas Pitre
+ *  reworked by rmk.
+ */
+
+#ifndef _ARM_BITOPS_H
+#define _ARM_BITOPS_H
+
+extern void _set_bit(int nr, volatile void * p);
+extern void _clear_bit(int nr, volatile void * p);
+extern void _change_bit(int nr, volatile void * p);
+extern int _test_and_set_bit(int nr, volatile void * p);
+extern int _test_and_clear_bit(int nr, volatile void * p);
+extern int _test_and_change_bit(int nr, volatile void * p);
+
+#define set_bit(n,p)              _set_bit(n,p)
+#define clear_bit(n,p)            _clear_bit(n,p)
+#define change_bit(n,p)           _change_bit(n,p)
+#define test_and_set_bit(n,p)     _test_and_set_bit(n,p)
+#define test_and_clear_bit(n,p)   _test_and_clear_bit(n,p)
+#define test_and_change_bit(n,p)  _test_and_change_bit(n,p)
+
+#define BIT(nr)                 (1UL << (nr))
+#define BIT_MASK(nr)            (1UL << ((nr) % BITS_PER_LONG))
+#define BIT_WORD(nr)            ((nr) / BITS_PER_LONG)
+#define BITS_PER_BYTE           8
+
+#define ADDR (*(volatile long *) addr)
+#define CONST_ADDR (*(const volatile long *) addr)
+
+/**
+ * __test_and_set_bit - Set a bit and return its old value
+ * @nr: Bit to set
+ * @addr: Address to count from
+ *
+ * This operation is non-atomic and can be reordered.
+ * If two examples of this operation race, one can appear to succeed
+ * but actually fail.  You must protect multiple accesses with a lock.
+ */
+static inline int __test_and_set_bit(int nr, volatile void *addr)
+{
+        unsigned long mask = BIT_MASK(nr);
+        volatile unsigned long *p =
+                ((volatile unsigned long *)addr) + BIT_WORD(nr);
+        unsigned long old = *p;
+
+        *p = old | mask;
+        return (old & mask) != 0;
+}
+
+/**
+ * __test_and_clear_bit - Clear a bit and return its old value
+ * @nr: Bit to clear
+ * @addr: Address to count from
+ *
+ * This operation is non-atomic and can be reordered.
+ * If two examples of this operation race, one can appear to succeed
+ * but actually fail.  You must protect multiple accesses with a lock.
+ */
+static inline int __test_and_clear_bit(int nr, volatile void *addr)
+{
+        unsigned long mask = BIT_MASK(nr);
+        volatile unsigned long *p =
+                ((volatile unsigned long *)addr) + BIT_WORD(nr);
+        unsigned long old = *p;
+
+        *p = old & ~mask;
+        return (old & mask) != 0;
+}
+
+/* WARNING: non atomic and it can be reordered! */
+static inline int __test_and_change_bit(int nr,
+                                            volatile void *addr)
+{
+        unsigned long mask = BIT_MASK(nr);
+        volatile unsigned long *p =
+                ((volatile unsigned long *)addr) + BIT_WORD(nr);
+        unsigned long old = *p;
+
+        *p = old ^ mask;
+        return (old & mask) != 0;
+}
+
+/**
+ * test_bit - Determine whether a bit is set
+ * @nr: bit number to test
+ * @addr: Address to start counting from
+ */
+static inline int test_bit(int nr, const volatile void *addr)
+{
+        const volatile unsigned long *p = (const volatile unsigned long *)addr;
+        return 1UL & (p[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
+}
+
+/*
+ * Little endian assembly bitops.  nr = 0 -> byte 0 bit 0.
+ */
+extern int _find_first_zero_bit_le(const void * p, unsigned size);
+extern int _find_next_zero_bit_le(const void * p, int size, int offset);
+extern int _find_first_bit_le(const unsigned long *p, unsigned size);
+extern int _find_next_bit_le(const unsigned long *p, int size, int offset);
+
+/*
+ * Big endian assembly bitops.  nr = 0 -> byte 3 bit 0.
+ */
+extern int _find_first_zero_bit_be(const void * p, unsigned size);
+extern int _find_next_zero_bit_be(const void * p, int size, int offset);
+extern int _find_first_bit_be(const unsigned long *p, unsigned size);
+extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
+
+#ifndef __ARMEB__
+/*
+ * These are the little endian, atomic definitions.
+ */
+#define find_first_zero_bit(p,sz)      _find_first_zero_bit_le(p,sz)
+#define find_next_zero_bit(p,sz,off)   _find_next_zero_bit_le(p,sz,off)
+#define find_first_bit(p,sz)           _find_first_bit_le(p,sz)
+#define find_next_bit(p,sz,off)                _find_next_bit_le(p,sz,off)
+
+#else
+/*
+ * These are the big endian, atomic definitions.
+ */
+#define find_first_zero_bit(p,sz)      _find_first_zero_bit_be(p,sz)
+#define find_next_zero_bit(p,sz,off)   _find_next_zero_bit_be(p,sz,off)
+#define find_first_bit(p,sz)           _find_first_bit_be(p,sz)
+#define find_next_bit(p,sz,off)                _find_next_bit_be(p,sz,off)
+
+#endif
+
+static inline int constant_fls(int x)
+{
+        int r = 32;
+
+        if (!x)
+                return 0;
+        if (!(x & 0xffff0000u)) {
+                x <<= 16;
+                r -= 16;
+        }
+        if (!(x & 0xff000000u)) {
+                x <<= 8;
+                r -= 8;
+        }
+        if (!(x & 0xf0000000u)) {
+                x <<= 4;
+                r -= 4;
+        }
+        if (!(x & 0xc0000000u)) {
+                x <<= 2;
+                r -= 2;
+        }
+        if (!(x & 0x80000000u)) {
+                x <<= 1;
+                r -= 1;
+        }
+        return r;
+}
+
+/*
+ * On ARMv5 and above those functions can be implemented around
+ * the clz instruction for much better code efficiency.
+ */
+
+static inline int fls(int x)
+{
+        int ret;
+
+        if (__builtin_constant_p(x))
+               return constant_fls(x);
+
+        asm("clz\t%0, %1" : "=r" (ret) : "r" (x));
+        ret = 32 - ret;
+        return ret;
+}
+
+#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
+
+/**
+ * find_first_set_bit - find the first set bit in @word
+ * @word: the word to search
+ *
+ * Returns the bit-number of the first set bit (first bit being 0).
+ * The input must *not* be zero.
+ */
+static inline unsigned int find_first_set_bit(unsigned long word)
+{
+        return ffs(word) - 1;
+}
+
+/**
+ * hweightN - returns the hamming weight of a N-bit word
+ * @x: the word to weigh
+ *
+ * The Hamming Weight of a number is the total number of bits set in it.
+ */
+#define hweight64(x) generic_hweight64(x)
+#define hweight32(x) generic_hweight32(x)
+#define hweight16(x) generic_hweight16(x)
+#define hweight8(x) generic_hweight8(x)
+
+#endif /* _ARM_BITOPS_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/bug.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/bug.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,15 @@
+#ifndef __ARM_BUG_H__
+#define __ARM_BUG_H__
+
+#define BUG() __bug(__FILE__, __LINE__)
+#define WARN() __warn(__FILE__, __LINE__)
+
+#endif /* __X86_BUG_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/byteorder.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/byteorder.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,16 @@
+#ifndef __ASM_ARM_BYTEORDER_H__
+#define __ASM_ARM_BYTEORDER_H__
+
+#define __BYTEORDER_HAS_U64__
+
+#include <xen/byteorder/little_endian.h>
+
+#endif /* __ASM_ARM_BYTEORDER_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/cache.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/cache.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,20 @@
+#ifndef __ARCH_ARM_CACHE_H
+#define __ARCH_ARM_CACHE_H
+
+#include <xen/config.h>
+
+/* L1 cache line size */
+#define L1_CACHE_SHIFT  (CONFIG_ARM_L1_CACHE_SHIFT)
+#define L1_CACHE_BYTES  (1 << L1_CACHE_SHIFT)
+
+#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/config.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/config.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,122 @@
+/******************************************************************************
+ * config.h
+ *
+ * A Linux-style configuration list.
+ */
+
+#ifndef __ARM_CONFIG_H__
+#define __ARM_CONFIG_H__
+
+#define CONFIG_PAGING_LEVELS 3
+
+#define CONFIG_ARM 1
+
+#define CONFIG_ARM_L1_CACHE_SHIFT 7 /* XXX */
+
+#define CONFIG_SMP 1
+
+#define CONFIG_DOMAIN_PAGE 1
+
+#define OPT_CONSOLE_STR "com1"
+
+#ifdef MAX_PHYS_CPUS
+#define NR_CPUS MAX_PHYS_CPUS
+#else
+#define NR_CPUS 128
+#endif
+
+#define MAX_VIRT_CPUS 128 /* XXX */
+#define MAX_HVM_VCPUS MAX_VIRT_CPUS
+
+#define asmlinkage /* Nothing needed */
+
+/* Linkage for ARM */
+#define __ALIGN .align 2
+#define __ALIGN_STR ".align 2"
+#ifdef __ASSEMBLY__
+#define ALIGN __ALIGN
+#define ALIGN_STR __ALIGN_STR
+#define ENTRY(name)                             \
+  .globl name;                                  \
+  ALIGN;                                        \
+  name:
+#define END(name) \
+  .size name, .-name
+#define ENDPROC(name) \
+  .type name, %function; \
+  END(name)
+#endif
+
+/*
+ * Memory layout:
+ *  0  -   2M   Unmapped
+ *  2M -   4M   Xen text, data, bss
+ *  4M -   6M   Fixmap: special-purpose 4K mapping slots
+ *
+ * 32M - 128M   Frametable: 24 bytes per page for 16GB of RAM
+ *
+ *  1G -   2G   Xenheap: always-mapped memory
+ *  2G -   4G   Domheap: on-demand-mapped
+ */
+
+#define XEN_VIRT_START         0x00200000
+#define FIXMAP_ADDR(n)        (0x00400000 + (n) * PAGE_SIZE)
+#define FRAMETABLE_VIRT_START  0x02000000
+#define XENHEAP_VIRT_START     0x40000000
+#define DOMHEAP_VIRT_START     0x80000000
+
+#define HYPERVISOR_VIRT_START mk_unsigned_long(XEN_VIRT_START)
+
+#define DOMHEAP_ENTRIES        1024  /* 1024 2MB mapping slots */
+
+/* Fixmap slots */
+#define FIXMAP_CONSOLE  0  /* The primary UART */
+#define FIXMAP_PT       1  /* Temporary mappings of pagetable pages */
+#define FIXMAP_MISC     2  /* Ephemeral mappings of hardware */
+#define FIXMAP_GICD     3  /* Interrupt controller: distributor registers */
+#define FIXMAP_GICC1    4  /* Interrupt controller: CPU registers (first page) */
+#define FIXMAP_GICC2    5  /* Interrupt controller: CPU registers (second page) */
+#define FIXMAP_GICH     6  /* Interrupt controller: virtual interface control registers */
+
+#define PAGE_SHIFT              12
+
+#ifndef __ASSEMBLY__
+#define PAGE_SIZE           (1L << PAGE_SHIFT)
+#else
+#define PAGE_SIZE           (1 << PAGE_SHIFT)
+#endif
+#define PAGE_MASK           (~(PAGE_SIZE-1))
+#define PAGE_FLAG_MASK      (~0)
+
+#define STACK_ORDER 3
+#define STACK_SIZE  (PAGE_SIZE << STACK_ORDER)
+
+#ifndef __ASSEMBLY__
+extern unsigned long xen_phys_start;
+extern unsigned long xenheap_phys_end;
+extern unsigned long frametable_virt_end;
+#endif
+
+#define supervisor_mode_kernel (0)
+
+#define watchdog_disable() ((void)0)
+#define watchdog_enable()  ((void)0)
+
+/* Board-specific: base address of PL011 UART */
+#define EARLY_UART_ADDRESS 0x1c090000
+/* Board-specific: base address of GIC + its regs */
+#define GIC_BASE_ADDRESS 0x2c000000
+#define GIC_DR_OFFSET 0x1000
+#define GIC_CR_OFFSET 0x2000
+#define GIC_HR_OFFSET 0x4000 /* Guess work http://lists.infradead.org/pipermail/linux-arm-kernel/2011-September/064219.html */
+#define GIC_VR_OFFSET 0x6000 /* Virtual Machine CPU interface) */
+
+#endif /* __ARM_CONFIG_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/cpregs.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/cpregs.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,207 @@
+#ifndef __ASM_ARM_CPREGS_H
+#define __ASM_ARM_CPREGS_H
+
+#include <xen/stringify.h>
+
+/* Co-processor registers */
+
+/* Layout as used in assembly, with src/dest registers mixed in */
+#define __CP32(r, coproc, opc1, crn, crm, opc2) coproc, opc1, r, crn, crm, opc2
+#define __CP64(r1, r2, coproc, opc, crm) coproc, opc, r1, r2, crm
+#define CP32(r, name...) __CP32(r, name)
+#define CP64(r, name...) __CP64(r, name)
+
+/* Stringified for inline assembly */
+#define LOAD_CP32(r, name...)  "mrc " __stringify(CP32(%r, name)) ";"
+#define STORE_CP32(r, name...) "mcr " __stringify(CP32(%r, name)) ";"
+#define LOAD_CP64(r, name...)  "mrrc " __stringify(CP64(%r, %H##r, name)) ";"
+#define STORE_CP64(r, name...) "mcrr " __stringify(CP64(%r, %H##r, name)) ";"
+
+/* C wrappers */
+#define READ_CP32(name...) ({                                   \
+    register uint32_t _r;                                       \
+    asm volatile(LOAD_CP32(0, name) : "=r" (_r));               \
+    _r; })
+
+#define WRITE_CP32(v, name...) do {                             \
+    register uint32_t _r = (v);                                 \
+    asm volatile(STORE_CP32(0, name) : : "r" (_r));             \
+} while (0)
+
+#define READ_CP64(name...) ({                                   \
+    register uint64_t _r;                                       \
+    asm volatile(LOAD_CP64(0, name) : "=r" (_r));               \
+    _r; })
+
+#define WRITE_CP64(v, name...) do {                             \
+    register uint64_t _r = (v);                                 \
+    asm volatile(STORE_CP64(0, name) : : "r" (_r));             \
+} while (0)
+
+#define __HSR_CPREG_c0  0
+#define __HSR_CPREG_c1  1
+#define __HSR_CPREG_c2  2
+#define __HSR_CPREG_c3  3
+#define __HSR_CPREG_c4  4
+#define __HSR_CPREG_c5  5
+#define __HSR_CPREG_c6  6
+#define __HSR_CPREG_c7  7
+#define __HSR_CPREG_c8  8
+#define __HSR_CPREG_c9  9
+#define __HSR_CPREG_c10 10
+#define __HSR_CPREG_c11 11
+#define __HSR_CPREG_c12 12
+#define __HSR_CPREG_c13 13
+#define __HSR_CPREG_c14 14
+#define __HSR_CPREG_c15 15
+
+#define __HSR_CPREG_0   0
+#define __HSR_CPREG_1   1
+#define __HSR_CPREG_2   2
+#define __HSR_CPREG_3   3
+#define __HSR_CPREG_4   4
+#define __HSR_CPREG_5   5
+#define __HSR_CPREG_6   6
+#define __HSR_CPREG_7   7
+
+#define _HSR_CPREG32(cp,op1,crn,crm,op2) \
+    ((__HSR_CPREG_##crn) << HSR_CP32_CRN_SHIFT) | \
+    ((__HSR_CPREG_##crm) << HSR_CP32_CRM_SHIFT) | \
+    ((__HSR_CPREG_##op1) << HSR_CP32_OP1_SHIFT) | \
+    ((__HSR_CPREG_##op2) << HSR_CP32_OP2_SHIFT)
+
+#define _HSR_CPREG64(cp,op1,crm) \
+    ((__HSR_CPREG_##crm) << HSR_CP64_CRM_SHIFT) | \
+    ((__HSR_CPREG_##op1) << HSR_CP64_OP1_SHIFT)
+
+/* Encode a register as per HSR ISS pattern */
+#define HSR_CPREG32(X) _HSR_CPREG32(X)
+#define HSR_CPREG64(X) _HSR_CPREG64(X)
+
+/*
+ * Order registers by Coprocessor-> CRn-> Opcode 1-> CRm-> Opcode 2
+ *
+ * This matches the ordering used in the ARM as well as the groupings
+ * which the CP registers are allocated in.
+ *
+ * This is slightly different to the form of the instruction
+ * arguments, which are cp,opc1,crn,crm,opc2.
+ */
+
+/* Coprocessor 15 */
+
+/* CP15 CR0: CPUID and Cache Type Registers */
+#define ID_PFR0         p15,0,c0,c1,0   /* Processor Feature Register 0 */
+#define ID_PFR1         p15,0,c0,c1,1   /* Processor Feature Register 1 */
+#define CCSIDR          p15,1,c0,c0,0   /* Cache Size ID Registers */
+#define CLIDR           p15,1,c0,c0,1   /* Cache Level ID Register */
+#define CSSELR          p15,2,c0,c0,0   /* Cache Size Selection Register */
+
+/* CP15 CR1: System Control Registers */
+#define SCTLR           p15,0,c1,c0,0   /* System Control Register */
+#define SCR             p15,0,c1,c1,0   /* Secure Configuration Register */
+#define NSACR           p15,0,c1,c1,2   /* Non-Secure Access Control Register */
+#define HSCTLR          p15,4,c1,c0,0   /* Hyp. System Control Register */
+#define HCR             p15,4,c1,c1,0   /* Hyp. Configuration Register */
+
+/* CP15 CR2: Translation Table Base and Control Registers */
+#define TTBR0           p15,0,c2,c0,0   /* Translation Table Base Reg. 0 */
+#define TTBR1           p15,0,c2,c0,1   /* Translation Table Base Reg. 1 */
+#define TTBCR           p15,0,c2,c0,2   /* Translatation Table Base Control Register */
+#define HTTBR           p15,4,c2        /* Hyp. Translation Table Base Register */
+#define HTCR            p15,4,c2,c0,2   /* Hyp. Translation Control Register */
+#define VTCR            p15,4,c2,c1,2   /* Virtualization Translation Control Register */
+#define VTTBR           p15,6,c2        /* Virtualization Translation Table Base Register */
+
+/* CP15 CR3: Domain Access Control Register */
+
+/* CP15 CR4: */
+
+/* CP15 CR5: Fault Status Registers */
+#define DFSR            p15,0,c5,c0,0   /* Data Fault Status Register */
+#define IFSR            p15,0,c5,c0,1   /* Instruction Fault Status Register */
+#define HSR             p15,4,c5,c2,0   /* Hyp. Syndrome Register */
+
+/* CP15 CR6: Fault Address Registers */
+#define DFAR            p15,0,c6,c0,0   /* Data Fault Address Register  */
+#define IFAR            p15,0,c6,c0,2   /* Instruction Fault Address Register */
+#define HDFAR           p15,4,c6,c0,0   /* Hyp. Data Fault Address Register */
+#define HIFAR           p15,4,c6,c0,2   /* Hyp. Instruction Fault Address Register */
+#define HPFAR           p15,4,c6,c0,4   /* Hyp. IPA Fault Address Register */
+
+/* CP15 CR7: Cache and address translation operations */
+#define PAR             p15,0,c7        /* Physical Address Register */
+#define ICIALLUIS       p15,0,c7,c1,0   /* Invalidate all instruction caches to PoU inner shareable */
+#define BPIALLIS        p15,0,c7,c1,6   /* Invalidate entire branch predictor array inner shareable */
+#define ICIALLU         p15,0,c7,c5,0   /* Invalidate all instruction caches to PoU */
+#define BPIALL          p15,0,c7,c5,6   /* Invalidate entire branch predictor array */
+#define ATS1CPR         p15,0,c7,c8,0   /* Address Translation Stage 1. Non-Secure Kernel Read */
+#define ATS1CPW         p15,0,c7,c8,1   /* Address Translation Stage 1. Non-Secure Kernel Write */
+#define ATS1CUR         p15,0,c7,c8,2   /* Address Translation Stage 1. Non-Secure User Read */
+#define ATS1CUW         p15,0,c7,c8,3   /* Address Translation Stage 1. Non-Secure User Write */
+#define ATS12NSOPR      p15,0,c7,c8,4   /* Address Translation Stage 1+2 Non-Secure Kernel Read */
+#define ATS12NSOPW      p15,0,c7,c8,5   /* Address Translation Stage 1+2 Non-Secure Kernel Write */
+#define ATS12NSOUR      p15,0,c7,c8,6   /* Address Translation Stage 1+2 Non-Secure User Read */
+#define ATS12NSOUW      p15,0,c7,c8,7   /* Address Translation Stage 1+2 Non-Secure User Write */
+#define DCCMVAC         p15,0,c7,c10,1  /* Clean data or unified cache line by MVA to PoC */
+#define DCCISW          p15,0,c7,c14,2  /* Clean and invalidate data cache line by set/way */
+#define ATS1HR          p15,4,c7,c8,0   /* Address Translation Stage 1 Hyp. Read */
+#define ATS1HW          p15,4,c7,c8,1   /* Address Translation Stage 1 Hyp. Write */
+
+/* CP15 CR8: TLB maintenance operations */
+#define TLBIALLIS       p15,0,c8,c3,0   /* Invalidate entire TLB innrer shareable */
+#define TLBIMVAIS       p15,0,c8,c3,1   /* Invalidate unified TLB entry by MVA inner shareable */
+#define TLBIASIDIS      p15,0,c8,c3,2   /* Invalidate unified TLB by ASID match inner shareable */
+#define TLBIMVAAIS      p15,0,c8,c3,3   /* Invalidate unified TLB entry by MVA all ASID inner shareable */
+#define DTLBIALL        p15,0,c8,c6,0   /* Invalidate data TLB */
+#define DTLBIMVA        p15,0,c8,c6,1   /* Invalidate data TLB entry by MVA */
+#define DTLBIASID       p15,0,c8,c6,2   /* Invalidate data TLB by ASID match */
+#define TLBILLHIS       p15,4,c8,c3,0   /* Invalidate Entire Hyp. Unified TLB inner shareable */
+#define TLBIMVAHIS      p15,4,c8,c3,1   /* Invalidate Unified Hyp. TLB by MVA inner shareable */
+#define TLBIALLNSNHIS   p15,4,c8,c7,4   /* Invalidate Entire Non-Secure Non-Hyp. Unified TLB inner shareable */
+#define TLBIALLH        p15,4,c8,c7,0   /* Invalidate Entire Hyp. Unified TLB */
+#define TLBIMVAH        p15,4,c8,c7,1   /* Invalidate Unified Hyp. TLB by MVA */
+#define TLBIALLNSNH     p15,4,c8,c7,4   /* Invalidate Entire Non-Secure Non-Hyp. Unified TLB */
+
+/* CP15 CR9: */
+
+/* CP15 CR10: */
+#define MAIR0           p15,0,c10,c2,0  /* Memory Attribute Indirection Register 0 */
+#define MAIR1           p15,0,c10,c2,1  /* Memory Attribute Indirection Register 1 */
+#define HMAIR0          p15,4,c10,c2,0  /* Hyp. Memory Attribute Indirection Register 0 */
+#define HMAIR1          p15,4,c10,c2,1  /* Hyp. Memory Attribute Indirection Register 1 */
+
+/* CP15 CR11: DMA Operations for TCM Access */
+
+/* CP15 CR12:  */
+#define HVBAR           p15,4,c12,c0,0  /* Hyp. Vector Base Address Register */
+
+/* CP15 CR13:  */
+#define FCSEIDR         p15,0,c13,c0,0  /* FCSE Process ID Register */
+#define CONTEXTIDR      p15,0,c13,c0,1  /* Context ID Register */
+
+/* CP15 CR14:  */
+#define CNTPCT          p15,0,c14       /* Time counter value */
+#define CNTFRQ          p15,0,c14,c0,0  /* Time counter frequency */
+#define CNTKCTL         p15,0,c14,c1,0  /* Time counter kernel control */
+#define CNTP_TVAL       p15,0,c14,c2,0  /* Physical Timer value */
+#define CNTP_CTL        p15,0,c14,c2,1  /* Physical Timer control register */
+#define CNTVCT          p15,1,c14       /* Time counter value + offset */
+#define CNTP_CVAL       p15,2,c14       /* Physical Timer comparator */
+#define CNTVOFF         p15,4,c14       /* Time counter offset */
+#define CNTHCTL         p15,4,c14,c1,0  /* Time counter hyp. control */
+#define CNTHP_TVAL      p15,4,c14,c2,0  /* Hyp. Timer value */
+#define CNTHP_CTL       p15,4,c14,c2,1  /* Hyp. Timer control register */
+#define CNTHP_CVAL      p15,6,c14       /* Hyp. Timer comparator */
+
+/* CP15 CR15: Implementation Defined Registers */
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/current.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/current.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,60 @@
+#ifndef __ARM_CURRENT_H__
+#define __ARM_CURRENT_H__
+
+#include <xen/config.h>
+#include <xen/percpu.h>
+#include <public/xen.h>
+
+#ifndef __ASSEMBLY__
+
+struct vcpu;
+
+struct cpu_info {
+    struct cpu_user_regs guest_cpu_user_regs;
+    unsigned long elr;
+    unsigned int processor_id;
+    struct vcpu *current_vcpu;
+    unsigned long per_cpu_offset;
+};
+
+static inline struct cpu_info *get_cpu_info(void)
+{
+        register unsigned long sp asm ("sp");
+        return (struct cpu_info *)((sp & ~(STACK_SIZE - 1)) + STACK_SIZE - sizeof(struct cpu_info));
+}
+
+#define get_current()         (get_cpu_info()->current_vcpu)
+#define set_current(vcpu)     (get_cpu_info()->current_vcpu = (vcpu))
+#define current               (get_current())
+
+#define get_processor_id()    (get_cpu_info()->processor_id)
+#define set_processor_id(id)  do {                                      \
+    struct cpu_info *ci__ = get_cpu_info();                             \
+    ci__->per_cpu_offset = __per_cpu_offset[ci__->processor_id = (id)]; \
+} while (0)
+
+#define guest_cpu_user_regs() (&get_cpu_info()->guest_cpu_user_regs)
+
+#define reset_stack_and_jump(__fn)              \
+    __asm__ __volatile__ (                      \
+        "mov sp,%0; b "STR(__fn)      \
+        : : "r" (guest_cpu_user_regs()) : "memory" )
+#endif
+
+
+/*
+ * Which VCPU's state is currently running on each CPU?
+ * This is not necesasrily the same as 'current' as a CPU may be
+ * executing a lazy state switch.
+ */
+DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
+
+#endif /* __ARM_CURRENT_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/debugger.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/debugger.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,15 @@
+#ifndef __ARM_DEBUGGER_H__
+#define __ARM_DEBUGGER_H__
+
+#define debugger_trap_fatal(v, r) ((void) 0)
+#define debugger_trap_immediate() ((void) 0)
+
+#endif /* __ARM_DEBUGGER_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/delay.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/delay.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,15 @@
+#ifndef _ARM_DELAY_H
+#define _ARM_DELAY_H
+
+extern void __udelay(unsigned long usecs);
+#define udelay(n) __udelay(n)
+
+#endif /* defined(_ARM_DELAY_H) */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/desc.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/desc.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,12 @@
+#ifndef __ARCH_DESC_H
+#define __ARCH_DESC_H
+
+#endif /* __ARCH_DESC_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/div64.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/div64.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,235 @@
+/* Taken from Linux arch/arm */
+#ifndef __ASM_ARM_DIV64
+#define __ASM_ARM_DIV64
+
+#include <asm/system.h>
+#include <xen/types.h>
+
+/*
+ * The semantics of do_div() are:
+ *
+ * uint32_t do_div(uint64_t *n, uint32_t base)
+ * {
+ *     uint32_t remainder = *n % base;
+ *     *n = *n / base;
+ *     return remainder;
+ * }
+ *
+ * In other words, a 64-bit dividend with a 32-bit divisor producing
+ * a 64-bit result and a 32-bit remainder.  To accomplish this optimally
+ * we call a special __do_div64 helper with completely non standard
+ * calling convention for arguments and results (beware).
+ */
+
+#ifdef __ARMEB__
+#define __xh "r0"
+#define __xl "r1"
+#else
+#define __xl "r0"
+#define __xh "r1"
+#endif
+
+#define __do_div_asm(n, base)                                  \
+({                                                             \
+       register unsigned int __base      asm("r4") = base;     \
+       register unsigned long long __n   asm("r0") = n;        \
+       register unsigned long long __res asm("r2");            \
+       register unsigned int __rem       asm(__xh);            \
+       asm(    __asmeq("%0", __xh)                             \
+               __asmeq("%1", "r2")                             \
+               __asmeq("%2", "r0")                             \
+               __asmeq("%3", "r4")                             \
+               "bl     __do_div64"                             \
+               : "=r" (__rem), "=r" (__res)                    \
+               : "r" (__n), "r" (__base)                       \
+               : "ip", "lr", "cc");                            \
+       n = __res;                                              \
+       __rem;                                                  \
+})
+
+#if __GNUC__ < 4
+
+/*
+ * gcc versions earlier than 4.0 are simply too problematic for the
+ * optimized implementation below. First there is gcc PR 15089 that
+ * tend to trig on more complex constructs, spurious .global __udivsi3
+ * are inserted even if none of those symbols are referenced in the
+ * generated code, and those gcc versions are not able to do constant
+ * propagation on long long values anyway.
+ */
+#define do_div(n, base) __do_div_asm(n, base)
+
+#elif __GNUC__ >= 4
+
+#include <asm/bug.h>
+
+/*
+ * If the divisor happens to be constant, we determine the appropriate
+ * inverse at compile time to turn the division into a few inline
+ * multiplications instead which is much faster. And yet only if compiling
+ * for ARMv4 or higher (we need umull/umlal) and if the gcc version is
+ * sufficiently recent to perform proper long long constant propagation.
+ * (It is unfortunate that gcc doesn't perform all this internally.)
+ */
+#define do_div(n, base)                                                        \
+({                                                                     \
+       unsigned int __r, __b = (base);                                 \
+       if (!__builtin_constant_p(__b) || __b == 0) {                   \
+               /* non-constant divisor (or zero): slow path */         \
+               __r = __do_div_asm(n, __b);                             \
+       } else if ((__b & (__b - 1)) == 0) {                            \
+               /* Trivial: __b is constant and a power of 2 */         \
+               /* gcc does the right thing with this code.  */         \
+               __r = n;                                                \
+               __r &= (__b - 1);                                       \
+               n /= __b;                                               \
+       } else {                                                        \
+               /* Multiply by inverse of __b: n/b = n*(p/b)/p       */ \
+               /* We rely on the fact that most of this code gets   */ \
+               /* optimized away at compile time due to constant    */ \
+               /* propagation and only a couple inline assembly     */ \
+               /* instructions should remain. Better avoid any      */ \
+               /* code construct that might prevent that.           */ \
+               unsigned long long __res, __x, __t, __m, __n = n;       \
+               unsigned int __c, __p, __z = 0;                         \
+               /* preserve low part of n for reminder computation */   \
+               __r = __n;                                              \
+               /* determine number of bits to represent __b */         \
+               __p = 1 << __div64_fls(__b);                            \
+               /* compute __m = ((__p << 64) + __b - 1) / __b */       \
+               __m = (~0ULL / __b) * __p;                              \
+               __m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b;     \
+               /* compute __res = __m*(~0ULL/__b*__b-1)/(__p << 64) */ \
+               __x = ~0ULL / __b * __b - 1;                            \
+               __res = (__m & 0xffffffff) * (__x & 0xffffffff);        \
+               __res >>= 32;                                           \
+               __res += (__m & 0xffffffff) * (__x >> 32);              \
+               __t = __res;                                            \
+               __res += (__x & 0xffffffff) * (__m >> 32);              \
+               __t = (__res < __t) ? (1ULL << 32) : 0;                 \
+               __res = (__res >> 32) + __t;                            \
+               __res += (__m >> 32) * (__x >> 32);                     \
+               __res /= __p;                                           \
+               /* Now sanitize and optimize what we've got. */         \
+               if (~0ULL % (__b / (__b & -__b)) == 0) {                \
+                       /* those cases can be simplified with: */       \
+                       __n /= (__b & -__b);                            \
+                       __m = ~0ULL / (__b / (__b & -__b));             \
+                       __p = 1;                                        \
+                       __c = 1;                                        \
+               } else if (__res != __x / __b) {                        \
+                       /* We can't get away without a correction    */ \
+                       /* to compensate for bit truncation errors.  */ \
+                       /* To avoid it we'd need an additional bit   */ \
+                       /* to represent __m which would overflow it. */ \
+                       /* Instead we do m=p/b and n/b=(n*m+m)/p.    */ \
+                       __c = 1;                                        \
+                       /* Compute __m = (__p << 64) / __b */           \
+                       __m = (~0ULL / __b) * __p;                      \
+                       __m += ((~0ULL % __b + 1) * __p) / __b;         \
+               } else {                                                \
+                       /* Reduce __m/__p, and try to clear bit 31   */ \
+                       /* of __m when possible otherwise that'll    */ \
+                       /* need extra overflow handling later.       */ \
+                       unsigned int __bits = -(__m & -__m);            \
+                       __bits |= __m >> 32;                            \
+                       __bits = (~__bits) << 1;                        \
+                       /* If __bits == 0 then setting bit 31 is     */ \
+                       /* unavoidable.  Simply apply the maximum    */ \
+                       /* possible reduction in that case.          */ \
+                       /* Otherwise the MSB of __bits indicates the */ \
+                       /* best reduction we should apply.           */ \
+                       if (!__bits) {                                  \
+                               __p /= (__m & -__m);                    \
+                               __m /= (__m & -__m);                    \
+                       } else {                                        \
+                               __p >>= __div64_fls(__bits);            \
+                               __m >>= __div64_fls(__bits);            \
+                       }                                               \
+                       /* No correction needed. */                     \
+                       __c = 0;                                        \
+               }                                                       \
+               /* Now we have a combination of 2 conditions:        */ \
+               /* 1) whether or not we need a correction (__c), and */ \
+               /* 2) whether or not there might be an overflow in   */ \
+               /*    the cross product (__m & ((1<<63) | (1<<31)))  */ \
+               /* Select the best insn combination to perform the   */ \
+               /* actual __m * __n / (__p << 64) operation.         */ \
+               if (!__c) {                                             \
+                       asm (   "umull  %Q0, %R0, %1, %Q2\n\t"          \
+                               "mov    %Q0, #0"                        \
+                               : "=&r" (__res)                         \
+                               : "r" (__m), "r" (__n)                  \
+                               : "cc" );                               \
+               } else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {    \
+                       __res = __m;                                    \
+                       asm (   "umlal  %Q0, %R0, %Q1, %Q2\n\t"         \
+                               "mov    %Q0, #0"                        \
+                               : "+&r" (__res)                         \
+                               : "r" (__m), "r" (__n)                  \
+                               : "cc" );                               \
+               } else {                                                \
+                       asm (   "umull  %Q0, %R0, %Q1, %Q2\n\t"         \
+                               "cmn    %Q0, %Q1\n\t"                   \
+                               "adcs   %R0, %R0, %R1\n\t"              \
+                               "adc    %Q0, %3, #0"                    \
+                               : "=&r" (__res)                         \
+                               : "r" (__m), "r" (__n), "r" (__z)       \
+                               : "cc" );                               \
+               }                                                       \
+               if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {           \
+                       asm (   "umlal  %R0, %Q0, %R1, %Q2\n\t"         \
+                               "umlal  %R0, %Q0, %Q1, %R2\n\t"         \
+                               "mov    %R0, #0\n\t"                    \
+                               "umlal  %Q0, %R0, %R1, %R2"             \
+                               : "+&r" (__res)                         \
+                               : "r" (__m), "r" (__n)                  \
+                               : "cc" );                               \
+               } else {                                                \
+                       asm (   "umlal  %R0, %Q0, %R2, %Q3\n\t"         \
+                               "umlal  %R0, %1, %Q2, %R3\n\t"          \
+                               "mov    %R0, #0\n\t"                    \
+                               "adds   %Q0, %1, %Q0\n\t"               \
+                               "adc    %R0, %R0, #0\n\t"               \
+                               "umlal  %Q0, %R0, %R2, %R3"             \
+                               : "+&r" (__res), "+&r" (__z)            \
+                               : "r" (__m), "r" (__n)                  \
+                               : "cc" );                               \
+               }                                                       \
+               __res /= __p;                                           \
+               /* The reminder can be computed with 32-bit regs     */ \
+               /* only, and gcc is good at that.                    */ \
+               {                                                       \
+                       unsigned int __res0 = __res;                    \
+                       unsigned int __b0 = __b;                        \
+                       __r -= __res0 * __b0;                           \
+               }                                                       \
+               /* BUG_ON(__r >= __b || __res * __b + __r != n); */     \
+               n = __res;                                              \
+       }                                                               \
+       __r;                                                            \
+})
+
+/* our own fls implementation to make sure constant propagation is fine */
+#define __div64_fls(bits)                                              \
+({                                                                     \
+       unsigned int __left = (bits), __nr = 0;                         \
+       if (__left & 0xffff0000) __nr += 16, __left >>= 16;             \
+       if (__left & 0x0000ff00) __nr +=  8, __left >>=  8;             \
+       if (__left & 0x000000f0) __nr +=  4, __left >>=  4;             \
+       if (__left & 0x0000000c) __nr +=  2, __left >>=  2;             \
+       if (__left & 0x00000002) __nr +=  1;                            \
+       __nr;                                                           \
+})
+
+#endif
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/elf.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/elf.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,33 @@
+#ifndef __ARM_ELF_H__
+#define __ARM_ELF_H__
+
+typedef struct {
+    unsigned long r0;
+    unsigned long r1;
+    unsigned long r2;
+    unsigned long r3;
+    unsigned long r4;
+    unsigned long r5;
+    unsigned long r6;
+    unsigned long r7;
+    unsigned long r8;
+    unsigned long r9;
+    unsigned long r10;
+    unsigned long r11;
+    unsigned long r12;
+    unsigned long sp;
+    unsigned long lr;
+    unsigned long pc;
+} ELF_Gregset;
+
+#endif /* __ARM_ELF_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/event.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/event.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,41 @@
+#ifndef __ASM_EVENT_H__
+#define __ASM_EVENT_H__
+
+void vcpu_kick(struct vcpu *v);
+void vcpu_mark_events_pending(struct vcpu *v);
+
+static inline int local_events_need_delivery(void)
+{
+    /* TODO
+     * return (vcpu_info(v, evtchn_upcall_pending) &&
+                        !vcpu_info(v, evtchn_upcall_mask)); */
+        return 0;
+}
+
+int local_event_delivery_is_enabled(void);
+
+static inline void local_event_delivery_disable(void)
+{
+    /* TODO current->vcpu_info->evtchn_upcall_mask = 1; */
+}
+
+static inline void local_event_delivery_enable(void)
+{
+    /* TODO current->vcpu_info->evtchn_upcall_mask = 0; */
+}
+
+/* No arch specific virq definition now. Default to global. */
+static inline int arch_virq_is_global(int virq)
+{
+    return 1;
+}
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/flushtlb.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/flushtlb.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,31 @@
+#ifndef __FLUSHTLB_H__
+#define __FLUSHTLB_H__
+
+#include <xen/cpumask.h>
+
+/*
+ * Filter the given set of CPUs, removing those that definitely flushed their
+ * TLB since @page_timestamp.
+ */
+/* XXX lazy implementation just doesn't clear anything.... */
+#define tlbflush_filter(mask, page_timestamp)                           \
+do {                                                                    \
+} while ( 0 )
+
+#define tlbflush_current_time()                 (0)
+
+/* Flush local TLBs */
+void flush_tlb_local(void);
+
+/* Flush specified CPUs' TLBs */
+void flush_tlb_mask(const cpumask_t *mask);
+
+#endif /* __FLUSHTLB_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/grant_table.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/grant_table.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,35 @@
+#ifndef __ASM_GRANT_TABLE_H__
+#define __ASM_GRANT_TABLE_H__
+
+#include <xen/grant_table.h>
+
+#define INVALID_GFN (-1UL)
+#define INITIAL_NR_GRANT_FRAMES 1
+
+void gnttab_clear_flag(unsigned long nr, uint16_t *addr);
+int create_grant_host_mapping(unsigned long gpaddr,
+        unsigned long mfn, unsigned int flags, unsigned int
+        cache_flags);
+#define gnttab_host_mapping_get_page_type(op, d, rd) (0)
+int replace_grant_host_mapping(unsigned long gpaddr, unsigned long mfn,
+        unsigned long new_gpaddr, unsigned int flags);
+void gnttab_mark_dirty(struct domain *d, unsigned long l);
+#define gnttab_create_status_page(d, t, i) do {} while (0)
+#define gnttab_create_shared_page(d, t, i) do {} while (0)
+#define gnttab_shared_gmfn(d, t, i) (0)
+#define gnttab_status_gmfn(d, t, i) (0)
+#define gnttab_release_host_mappings(domain) 1
+static inline int replace_grant_supported(void)
+{
+    return 1;
+}
+
+#endif /* __ASM_GRANT_TABLE_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/hardirq.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/hardirq.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,28 @@
+#ifndef __ASM_HARDIRQ_H
+#define __ASM_HARDIRQ_H
+
+#include <xen/config.h>
+#include <xen/cache.h>
+#include <xen/smp.h>
+
+typedef struct {
+        unsigned long __softirq_pending;
+        unsigned int __local_irq_count;
+} __cacheline_aligned irq_cpustat_t;
+
+#include <xen/irq_cpustat.h>    /* Standard mappings for irq_cpustat_t above */
+
+#define in_irq() (local_irq_count(smp_processor_id()) != 0)
+
+#define irq_enter()     (local_irq_count(smp_processor_id())++)
+#define irq_exit()      (local_irq_count(smp_processor_id())--)
+
+#endif /* __ASM_HARDIRQ_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/hypercall.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/hypercall.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,14 @@
+#ifndef __ASM_ARM_HYPERCALL_H__
+#define __ASM_ARM_HYPERCALL_H__
+
+#include <public/domctl.h> /* for arch_do_domctl */
+
+#endif /* __ASM_ARM_HYPERCALL_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/init.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/init.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,12 @@
+#ifndef _XEN_ASM_INIT_H
+#define _XEN_ASM_INIT_H
+
+#endif /* _XEN_ASM_INIT_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/io.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/io.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,12 @@
+#ifndef _ASM_IO_H
+#define _ASM_IO_H
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/iocap.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/iocap.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,20 @@
+#ifndef __X86_IOCAP_H__
+#define __X86_IOCAP_H__
+
+#define cache_flush_permitted(d)                        \
+    (!rangeset_is_empty((d)->iomem_caps))
+
+#define multipage_allocation_permitted(d, order)        \
+    (((order) <= 9) || /* allow 2MB superpages */       \
+     !rangeset_is_empty((d)->iomem_caps))
+
+#endif
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/multicall.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/multicall.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,23 @@
+#ifndef __ASM_ARM_MULTICALL_H__
+#define __ASM_ARM_MULTICALL_H__
+
+#define do_multicall_call(_call)                             \
+    do {                                                     \
+        __asm__ __volatile__ (                               \
+            ".word 0xe7f000f0@; do_multicall_call\n"         \
+            "    mov r0,#0; @ do_multicall_call\n"           \
+            "    str r0, [r0];\n"                            \
+            :                                                \
+            :                                                \
+            : );                                             \
+    } while ( 0 )
+
+#endif /* __ASM_ARM_MULTICALL_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/nmi.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/nmi.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,15 @@
+#ifndef ASM_NMI_H
+#define ASM_NMI_H
+
+#define register_guest_nmi_callback(a)  (-ENOSYS)
+#define unregister_guest_nmi_callback() (-ENOSYS)
+
+#endif /* ASM_NMI_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/numa.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/numa.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,21 @@
+#ifndef __ARCH_ARM_NUMA_H
+#define __ARCH_ARM_NUMA_H
+
+/* Fake one node for now... */
+#define cpu_to_node(cpu) 0
+#define node_to_cpumask(node)  (cpu_online_map)
+
+static inline __attribute__((pure)) int phys_to_nid(paddr_t addr)
+{
+        return 0;
+}
+
+#endif /* __ARCH_ARM_NUMA_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/paging.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/paging.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,13 @@
+#ifndef _XEN_PAGING_H
+#define _XEN_PAGING_H
+
+#endif /* XEN_PAGING_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/pci.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/pci.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,7 @@
+#ifndef __X86_PCI_H__
+#define __X86_PCI_H__
+
+struct arch_pci_dev {
+};
+
+#endif /* __X86_PCI_H__ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/percpu.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/percpu.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,28 @@
+#ifndef __ARM_PERCPU_H__
+#define __ARM_PERCPU_H__
+
+#ifndef __ASSEMBLY__
+extern char __per_cpu_start[], __per_cpu_data_end[];
+extern unsigned long __per_cpu_offset[NR_CPUS];
+void percpu_init_areas(void);
+#endif
+
+/* Separate out the type, so (int[3], foo) works. */
+#define __DEFINE_PER_CPU(type, name, suffix)                    \
+    __attribute__((__section__(".bss.percpu" #suffix)))         \
+    __typeof__(type) per_cpu_##name
+
+#define per_cpu(var, cpu) ((&per_cpu__##var)[cpu?0:0])
+#define __get_cpu_var(var) per_cpu__##var
+
+#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name
+
+#endif /* __ARM_PERCPU_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/processor.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/processor.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,269 @@
+#ifndef __ASM_ARM_PROCESSOR_H
+#define __ASM_ARM_PROCESSOR_H
+
+#include <asm/cpregs.h>
+
+/* PSR bits (CPSR, SPSR)*/
+
+/* 0-4: Mode */
+#define PSR_MODE_MASK 0x1f
+#define PSR_MODE_USR 0x10
+#define PSR_MODE_FIQ 0x11
+#define PSR_MODE_IRQ 0x12
+#define PSR_MODE_SVC 0x13
+#define PSR_MODE_MON 0x16
+#define PSR_MODE_ABT 0x17
+#define PSR_MODE_HYP 0x1a
+#define PSR_MODE_UND 0x1b
+#define PSR_MODE_SYS 0x1f
+
+#define PSR_THUMB        (1<<5)        /* Thumb Mode enable */
+#define PSR_FIQ_MASK        (1<<6)        /* Fast Interrupt mask */
+#define PSR_IRQ_MASK        (1<<7)        /* Interrupt mask */
+#define PSR_ABT_MASK         (1<<8)        /* Asynchronous Abort mask */
+#define PSR_BIG_ENDIAN        (1<<9)        /* Big Endian Mode */
+#define PSR_JAZELLE        (1<<24)        /* Jazelle Mode */
+
+/* TTBCR Translation Table Base Control Register */
+#define TTBCR_N_MASK 0x07
+#define TTBCR_N_16KB 0x00
+#define TTBCR_N_8KB  0x01
+#define TTBCR_N_4KB  0x02
+#define TTBCR_N_2KB  0x03
+#define TTBCR_N_1KB  0x04
+
+/* SCTLR System Control Register. */
+/* HSCTLR is a subset of this. */
+#define SCTLR_TE        (1<<30)
+#define SCTLR_AFE        (1<<29)
+#define SCTLR_TRE        (1<<28)
+#define SCTLR_NMFI        (1<<27)
+#define SCTLR_EE        (1<<25)
+#define SCTLR_VE        (1<<24)
+#define SCTLR_U                (1<<22)
+#define SCTLR_FI        (1<<21)
+#define SCTLR_WXN        (1<<19)
+#define SCTLR_HA        (1<<17)
+#define SCTLR_RR        (1<<14)
+#define SCTLR_V                (1<<13)
+#define SCTLR_I                (1<<12)
+#define SCTLR_Z                (1<<11)
+#define SCTLR_SW        (1<<10)
+#define SCTLR_B                (1<<7)
+#define SCTLR_C                (1<<2)
+#define SCTLR_A                (1<<1)
+#define SCTLR_M                (1<<0)
+
+#define SCTLR_BASE        0x00c50078
+#define HSCTLR_BASE        0x30c51878
+
+/* HCR Hyp Configuration Register */
+#define HCR_TGE                (1<<27)
+#define HCR_TVM                (1<<26)
+#define HCR_TTLB        (1<<25)
+#define HCR_TPU                (1<<24)
+#define HCR_TPC                (1<<23)
+#define HCR_TSW                (1<<22)
+#define HCR_TAC                (1<<21)
+#define HCR_TIDCP        (1<<20)
+#define HCR_TSC                (1<<19)
+#define HCR_TID3        (1<<18)
+#define HCR_TID2        (1<<17)
+#define HCR_TID1        (1<<16)
+#define HCR_TID0        (1<<15)
+#define HCR_TWE                (1<<14)
+#define HCR_TWI                (1<<13)
+#define HCR_DC                (1<<12)
+#define HCR_BSU_MASK        (3<<10)
+#define HCR_FB                (1<<9)
+#define HCR_VA                (1<<8)
+#define HCR_VI                (1<<7)
+#define HCR_VF                (1<<6)
+#define HCR_AMO                (1<<5)
+#define HCR_IMO                (1<<4)
+#define HCR_FMO                (1<<3)
+#define HCR_PTW                (1<<2)
+#define HCR_SWIO        (1<<1)
+#define HCR_VM                (1<<0)
+
+#define HSR_EC_WFI_WFE              0x01
+#define HSR_EC_CP15_32              0x03
+#define HSR_EC_CP15_64              0x04
+#define HSR_EC_CP14_32              0x05
+#define HSR_EC_CP14_DBG             0x06
+#define HSR_EC_CP                   0x07
+#define HSR_EC_CP10                 0x08
+#define HSR_EC_JAZELLE              0x09
+#define HSR_EC_BXJ                  0x0a
+#define HSR_EC_CP14_64              0x0c
+#define HSR_EC_SVC                  0x11
+#define HSR_EC_HVC                  0x12
+#define HSR_EC_INSTR_ABORT_GUEST    0x20
+#define HSR_EC_INSTR_ABORT_HYP      0x21
+#define HSR_EC_DATA_ABORT_GUEST     0x24
+#define HSR_EC_DATA_ABORT_HYP       0x25
+
+#ifndef __ASSEMBLY__
+union hsr {
+    uint32_t bits;
+    struct {
+        unsigned long iss:25;  /* Instruction Specific Syndrome */
+        unsigned long len:1;   /* Instruction length */
+        unsigned long ec:6;    /* Exception Class */
+    };
+
+    struct hsr_cp32 {
+        unsigned long read:1;  /* Direction */
+        unsigned long crm:4;   /* CRm */
+        unsigned long reg:4;   /* Rt */
+        unsigned long sbzp:1;
+        unsigned long crn:4;   /* CRn */
+        unsigned long op1:3;   /* Op1 */
+        unsigned long op2:3;   /* Op2 */
+        unsigned long cc:4;    /* Condition Code */
+        unsigned long ccvalid:1;/* CC Valid */
+        unsigned long len:1;   /* Instruction length */
+        unsigned long ec:6;    /* Exception Class */
+    } cp32; /* HSR_EC_CP15_32, CP14_32, CP10 */
+
+    struct hsr_cp64 {
+        unsigned long read:1;   /* Direction */
+        unsigned long crm:4;    /* CRm */
+        unsigned long reg1:4;   /* Rt1 */
+        unsigned long sbzp1:1;
+        unsigned long reg2:4;   /* Rt2 */
+        unsigned long sbzp2:2;
+        unsigned long op1:4;   /* Op1 */
+        unsigned long cc:4;    /* Condition Code */
+        unsigned long ccvalid:1;/* CC Valid */
+        unsigned long len:1;   /* Instruction length */
+        unsigned long ec:6;    /* Exception Class */
+    } cp64; /* HSR_EC_CP15_64, HSR_EC_CP14_64 */
+
+    struct hsr_dabt {
+        unsigned long dfsc:6;  /* Data Fault Status Code */
+        unsigned long write:1; /* Write / not Read */
+        unsigned long s1ptw:1; /* */
+        unsigned long cache:1; /* Cache Maintenance */
+        unsigned long eat:1;   /* External Abort Type */
+        unsigned long sbzp0:6;
+        unsigned long reg:4;   /* Register */
+        unsigned long sbzp1:1;
+        unsigned long sign:1;  /* Sign extend */
+        unsigned long size:2;  /* Access Size */
+        unsigned long valid:1; /* Syndrome Valid */
+        unsigned long len:1;   /* Instruction length */
+        unsigned long ec:6;    /* Exception Class */
+    } dabt; /* HSR_EC_DATA_ABORT_* */
+};
+#endif
+
+/* HSR.EC == HSR_CP{15,14,10}_32 */
+#define HSR_CP32_OP2_MASK (0x000e0000)
+#define HSR_CP32_OP2_SHIFT (17)
+#define HSR_CP32_OP1_MASK (0x0001c000)
+#define HSR_CP32_OP1_SHIFT (14)
+#define HSR_CP32_CRN_MASK (0x00003c00)
+#define HSR_CP32_CRN_SHIFT (10)
+#define HSR_CP32_CRM_MASK (0x0000001e)
+#define HSR_CP32_CRM_SHIFT (1)
+#define HSR_CP32_REGS_MASK (HSR_CP32_OP1_MASK|HSR_CP32_OP2_MASK|\
+                            HSR_CP32_CRN_MASK|HSR_CP32_CRM_MASK)
+
+/* HSR.EC == HSR_CP{15,14}_64 */
+#define HSR_CP64_OP1_MASK (0x000f0000)
+#define HSR_CP64_OP1_SHIFT (16)
+#define HSR_CP64_CRM_MASK (0x0000001e)
+#define HSR_CP64_CRM_SHIFT (1)
+#define HSR_CP64_REGS_MASK (HSR_CP64_OP1_MASK|HSR_CP64_CRM_MASK)
+
+/* Physical Address Register */
+#define PAR_F           (1<<0)
+
+/* .... If F == 1 */
+#define PAR_FSC_SHIFT   (1)
+#define PAR_FSC_MASK    (0x3f<<PAR_FSC_SHIFT)
+#define PAR_STAGE21     (1<<8)     /* Stage 2 Fault During Stage 1 Walk */
+#define PAR_STAGE2      (1<<9)     /* Stage 2 Fault */
+
+/* If F == 0 */
+#define PAR_MAIR_SHIFT  56                       /* Memory Attributes */
+#define PAR_MAIR_MASK   (0xffLL<<PAR_MAIR_SHIFT)
+#define PAR_NS          (1<<9)                   /* Non-Secure */
+#define PAR_SH_SHIFT    7                        /* Shareability */
+#define PAR_SH_MASK     (3<<PAR_SH_SHIFT)
+
+/* Fault Status Register */
+/*
+ * 543210 BIT
+ * 00XXLL -- XX Fault Level LL
+ * ..01LL -- Translation Fault LL
+ * ..10LL -- Access Fault LL
+ * ..11LL -- Permission Fault LL
+ * 01xxxx -- Abort/Parity
+ * 10xxxx -- Other
+ * 11xxxx -- Implementation Defined
+ */
+#define FSC_TYPE_MASK (0x3<<4)
+#define FSC_TYPE_FAULT (0x00<<4)
+#define FSC_TYPE_ABT   (0x01<<4)
+#define FSC_TYPE_OTH   (0x02<<4)
+#define FSC_TYPE_IMPL  (0x03<<4)
+
+#define FSC_FLT_TRANS  (0x04)
+#define FSC_FLT_ACCESS (0x08)
+#define FSC_FLT_PERM   (0x0c)
+#define FSC_SEA        (0x10) /* Synchronous External Abort */
+#define FSC_SPE        (0x18) /* Memory Access Synchronous Parity Error */
+#define FSC_APE        (0x11) /* Memory Access Asynchronous Parity Error */
+#define FSC_SEATT      (0x14) /* Sync. Ext. Abort Translation Table */
+#define FSC_SPETT      (0x1c) /* Sync. Parity. Error Translation Table */
+#define FSC_AF         (0x21) /* Alignment Fault */
+#define FSC_DE         (0x22) /* Debug Event */
+#define FSC_LKD        (0x34) /* Lockdown Abort */
+#define FSC_CPR        (0x3a) /* Coprocossor Abort */
+
+#define FSC_LL_MASK    (0x03<<0)
+
+/* Time counter hypervisor control register */
+#define CNTHCTL_PA      (1u<<0)  /* Kernel/user access to physical counter */
+#define CNTHCTL_TA      (1u<<1)  /* Kernel/user access to CNTP timer */
+
+/* Timer control registers */
+#define CNTx_CTL_ENABLE   (1u<<0)  /* Enable timer */
+#define CNTx_CTL_MASK     (1u<<1)  /* Mask IRQ */
+#define CNTx_CTL_PENDING  (1u<<2)  /* IRQ pending */
+
+/* CPUID bits */
+#define ID_PFR1_GT_MASK  0x000F0000  /* Generic Timer interface support */
+#define ID_PFR1_GT_v1    0x00010000
+
+#define MSR(reg,val)        asm volatile ("msr "#reg", %0\n" : : "r" (val))
+#define MRS(val,reg)        asm volatile ("mrs %0,"#reg"\n" : "=r" (v))
+
+#ifndef __ASSEMBLY__
+extern uint32_t hyp_traps_vector[8];
+
+void panic_PAR(uint64_t par, const char *when);
+
+void show_execution_state(struct cpu_user_regs *regs);
+void show_registers(struct cpu_user_regs *regs);
+//#define dump_execution_state() run_in_exception_handler(show_execution_state)
+#define dump_execution_state() asm volatile (".word 0xe7f000f0\n"); /* XXX */
+
+#define cpu_relax() barrier() /* Could yield? */
+
+/* All a bit UP for the moment */
+#define cpu_to_core(_cpu)   (0)
+#define cpu_to_socket(_cpu) (0)
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ASM_ARM_PROCESSOR_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/regs.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/regs.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,43 @@
+#ifndef __ARM_REGS_H__
+#define __ARM_REGS_H__
+
+#include <xen/types.h>
+#include <public/xen.h>
+#include <asm/processor.h>
+
+#define psr_mode(psr,m) (((psr) & PSR_MODE_MASK) == m)
+
+#define usr_mode(r)     psr_mode((r)->cpsr,PSR_MODE_USR)
+#define fiq_mode(r)     psr_mode((r)->cpsr,PSR_MODE_FIQ)
+#define irq_mode(r)     psr_mode((r)->cpsr,PSR_MODE_IRQ)
+#define svc_mode(r)     psr_mode((r)->cpsr,PSR_MODE_SVC)
+#define mon_mode(r)     psr_mode((r)->cpsr,PSR_MODE_MON)
+#define abt_mode(r)     psr_mode((r)->cpsr,PSR_MODE_ABT)
+#define hyp_mode(r)     psr_mode((r)->cpsr,PSR_MODE_HYP)
+#define und_mode(r)     psr_mode((r)->cpsr,PSR_MODE_UND)
+#define sys_mode(r)     psr_mode((r)->cpsr,PSR_MODE_SYS)
+
+#define guest_mode(r)                                                         \
+({                                                                            \
+    unsigned long diff = (char *)guest_cpu_user_regs() - (char *)(r);         \
+    /* Frame pointer must point into current CPU stack. */                    \
+    ASSERT(diff < STACK_SIZE);                                                \
+    /* If not a guest frame, it must be a hypervisor frame. */                \
+    ASSERT((diff == 0) || hyp_mode(r));                                       \
+    /* Return TRUE if it's a guest frame. */                                  \
+    (diff == 0);                                                              \
+})
+
+#define return_reg(v) ((v)->arch.user_regs.r0)
+
+#define CTXT_SWITCH_STACK_BYTES (sizeof(struct cpu_user_regs))
+
+#endif /* __ARM_REGS_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/setup.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/setup.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,16 @@
+#ifndef __ARM_SETUP_H_
+#define __ARM_SETUP_H_
+
+#include <public/version.h>
+
+void arch_get_xen_caps(xen_capabilities_info_t *info);
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/smp.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/smp.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,25 @@
+#ifndef __ASM_SMP_H
+#define __ASM_SMP_H
+
+#ifndef __ASSEMBLY__
+#include <xen/config.h>
+#include <xen/cpumask.h>
+#include <asm/current.h>
+#endif
+
+DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_mask);
+DECLARE_PER_CPU(cpumask_var_t, cpu_core_mask);
+
+#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
+
+#define raw_smp_processor_id() (get_processor_id())
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/softirq.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/softirq.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,15 @@
+#ifndef __ASM_SOFTIRQ_H__
+#define __ASM_SOFTIRQ_H__
+
+#define VGIC_SOFTIRQ        (NR_COMMON_SOFTIRQS + 0)
+#define NR_ARCH_SOFTIRQS       1
+
+#endif /* __ASM_SOFTIRQ_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/spinlock.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/spinlock.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,144 @@
+#ifndef __ASM_SPINLOCK_H
+#define __ASM_SPINLOCK_H
+
+#include <xen/config.h>
+#include <xen/lib.h>
+
+static inline void dsb_sev(void)
+{
+    __asm__ __volatile__ (
+        "dsb\n"
+        "sev\n"
+        );
+}
+
+typedef struct {
+    volatile unsigned int lock;
+} raw_spinlock_t;
+
+#define _RAW_SPIN_LOCK_UNLOCKED { 0 }
+
+#define _raw_spin_is_locked(x)          ((x)->lock != 0)
+
+static always_inline void _raw_spin_unlock(raw_spinlock_t *lock)
+{
+    ASSERT(_raw_spin_is_locked(lock));
+
+    smp_mb();
+
+    __asm__ __volatile__(
+"   str     %1, [%0]\n"
+    :
+    : "r" (&lock->lock), "r" (0)
+    : "cc");
+
+    dsb_sev();
+}
+
+static always_inline int _raw_spin_trylock(raw_spinlock_t *lock)
+{
+    unsigned long tmp;
+
+    __asm__ __volatile__(
+"   ldrex   %0, [%1]\n"
+"   teq     %0, #0\n"
+"   strexeq %0, %2, [%1]"
+    : "=&r" (tmp)
+    : "r" (&lock->lock), "r" (1)
+    : "cc");
+
+    if (tmp == 0) {
+        smp_mb();
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+typedef struct {
+    volatile unsigned int lock;
+} raw_rwlock_t;
+
+#define _RAW_RW_LOCK_UNLOCKED { 0 }
+
+static always_inline int _raw_read_trylock(raw_rwlock_t *rw)
+{
+    unsigned long tmp, tmp2 = 1;
+
+    __asm__ __volatile__(
+"1: ldrex   %0, [%2]\n"
+"   adds    %0, %0, #1\n"
+"   strexpl %1, %0, [%2]\n"
+    : "=&r" (tmp), "+r" (tmp2)
+    : "r" (&rw->lock)
+    : "cc");
+
+    smp_mb();
+    return tmp2 == 0;
+}
+
+static always_inline int _raw_write_trylock(raw_rwlock_t *rw)
+{
+    unsigned long tmp;
+
+    __asm__ __volatile__(
+"1: ldrex   %0, [%1]\n"
+"   teq     %0, #0\n"
+"   strexeq %0, %2, [%1]"
+    : "=&r" (tmp)
+    : "r" (&rw->lock), "r" (0x80000000)
+    : "cc");
+
+    if (tmp == 0) {
+        smp_mb();
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+static inline void _raw_read_unlock(raw_rwlock_t *rw)
+{
+    unsigned long tmp, tmp2;
+
+    smp_mb();
+
+    __asm__ __volatile__(
+"1: ldrex   %0, [%2]\n"
+"   sub     %0, %0, #1\n"
+"   strex   %1, %0, [%2]\n"
+"   teq     %1, #0\n"
+"   bne     1b"
+    : "=&r" (tmp), "=&r" (tmp2)
+    : "r" (&rw->lock)
+    : "cc");
+
+    if (tmp == 0)
+        dsb_sev();
+}
+
+static inline void _raw_write_unlock(raw_rwlock_t *rw)
+{
+    smp_mb();
+
+    __asm__ __volatile__(
+    "str    %1, [%0]\n"
+    :
+    : "r" (&rw->lock), "r" (0)
+    : "cc");
+
+    dsb_sev();
+}
+
+#define _raw_rw_is_locked(x) ((x)->lock != 0)
+#define _raw_rw_is_write_locked(x) ((x)->lock == 0x80000000)
+
+#endif /* __ASM_SPINLOCK_H */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/string.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/string.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,38 @@
+#ifndef __ARM_STRING_H__
+#define __ARM_STRING_H__
+
+#include <xen/config.h>
+
+#define __HAVE_ARCH_MEMCPY
+extern void * memcpy(void *, const void *, __kernel_size_t);
+
+/* Some versions of gcc don't have this builtin. It's non-critical anyway. */
+#define __HAVE_ARCH_MEMMOVE
+extern void *memmove(void *dest, const void *src, size_t n);
+
+#define __HAVE_ARCH_MEMSET
+extern void * memset(void *, int, __kernel_size_t);
+
+extern void __memzero(void *ptr, __kernel_size_t n);
+
+#define memset(p,v,n)                                                   \
+        ({                                                              \
+                void *__p = (p); size_t __n = n;                        \
+                if ((__n) != 0) {                                       \
+                        if (__builtin_constant_p((v)) && (v) == 0)      \
+                                __memzero((__p),(__n));                 \
+                        else                                            \
+                                memset((__p),(v),(__n));                \
+                }                                                       \
+                (__p);                                                  \
+        })
+
+#endif /* __ARM_STRING_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/system.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/system.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,202 @@
+/* Portions taken from Linux arch arm */
+#ifndef __ASM_SYSTEM_H
+#define __ASM_SYSTEM_H
+
+#include <xen/lib.h>
+#include <asm/processor.h>
+
+#define nop() \
+    asm volatile ( "nop" )
+
+#define xchg(ptr,x) \
+        ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
+
+#define isb() __asm__ __volatile__ ("isb" : : : "memory")
+#define dsb() __asm__ __volatile__ ("dsb" : : : "memory")
+#define dmb() __asm__ __volatile__ ("dmb" : : : "memory")
+
+#define mb()            dsb()
+#define rmb()           dsb()
+#define wmb()           mb()
+
+#define smp_mb()        dmb()
+#define smp_rmb()       dmb()
+#define smp_wmb()       dmb()
+
+/*
+ * This is used to ensure the compiler did actually allocate the register we
+ * asked it for some inline assembly sequences.  Apparently we can't trust
+ * the compiler from one version to another so a bit of paranoia won't hurt.
+ * This string is meant to be concatenated with the inline asm string and
+ * will cause compilation to stop on mismatch.
+ * (for details, see gcc PR 15089)
+ */
+#define __asmeq(x, y)  ".ifnc " x "," y " ; .err ; .endif\n\t"
+
+extern void __bad_xchg(volatile void *, int);
+
+static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size)
+{
+        unsigned long ret;
+        unsigned int tmp;
+
+        smp_mb();
+
+        switch (size) {
+        case 1:
+                asm volatile("@ __xchg1\n"
+                "1:     ldrexb  %0, [%3]\n"
+                "       strexb  %1, %2, [%3]\n"
+                "       teq     %1, #0\n"
+                "       bne     1b"
+                        : "=&r" (ret), "=&r" (tmp)
+                        : "r" (x), "r" (ptr)
+                        : "memory", "cc");
+                break;
+        case 4:
+                asm volatile("@ __xchg4\n"
+                "1:     ldrex   %0, [%3]\n"
+                "       strex   %1, %2, [%3]\n"
+                "       teq     %1, #0\n"
+                "       bne     1b"
+                        : "=&r" (ret), "=&r" (tmp)
+                        : "r" (x), "r" (ptr)
+                        : "memory", "cc");
+                break;
+        default:
+                __bad_xchg(ptr, size), ret = 0;
+                break;
+        }
+        smp_mb();
+
+        return ret;
+}
+
+/*
+ * Atomic compare and exchange.  Compare OLD with MEM, if identical,
+ * store NEW in MEM.  Return the initial value in MEM.  Success is
+ * indicated by comparing RETURN with OLD.
+ */
+
+extern void __bad_cmpxchg(volatile void *ptr, int size);
+
+static always_inline unsigned long __cmpxchg(
+    volatile void *ptr, unsigned long old, unsigned long new, int size)
+{
+    unsigned long /*long*/ oldval, res;
+
+    switch (size) {
+    case 1:
+        do {
+            asm volatile("@ __cmpxchg1\n"
+                         "       ldrexb  %1, [%2]\n"
+                         "       mov     %0, #0\n"
+                         "       teq     %1, %3\n"
+                         "       strexbeq %0, %4, [%2]\n"
+                         : "=&r" (res), "=&r" (oldval)
+                         : "r" (ptr), "Ir" (old), "r" (new)
+                         : "memory", "cc");
+        } while (res);
+        break;
+    case 2:
+        do {
+            asm volatile("@ __cmpxchg2\n"
+                         "       ldrexh  %1, [%2]\n"
+                         "       mov     %0, #0\n"
+                         "       teq     %1, %3\n"
+                         "       strexheq %0, %4, [%2]\n"
+                         : "=&r" (res), "=&r" (oldval)
+                         : "r" (ptr), "Ir" (old), "r" (new)
+                         : "memory", "cc");
+        } while (res);
+        break;
+    case 4:
+        do {
+            asm volatile("@ __cmpxchg4\n"
+                         "       ldrex   %1, [%2]\n"
+                         "       mov     %0, #0\n"
+                         "       teq     %1, %3\n"
+                         "       strexeq %0, %4, [%2]\n"
+                         : "=&r" (res), "=&r" (oldval)
+                         : "r" (ptr), "Ir" (old), "r" (new)
+                         : "memory", "cc");
+        } while (res);
+        break;
+#if 0
+    case 8:
+        do {
+            asm volatile("@ __cmpxchg8\n"
+                         "       ldrexd   %1, [%2]\n"
+                         "       mov      %0, #0\n"
+                         "       teq      %1, %3\n"
+                         "       strexdeq %0, %4, [%2]\n"
+                         : "=&r" (res), "=&r" (oldval)
+                         : "r" (ptr), "Ir" (old), "r" (new)
+                         : "memory", "cc");
+        } while (res);
+        break;
+#endif
+    default:
+        __bad_cmpxchg(ptr, size);
+        oldval = 0;
+    }
+
+    return oldval;
+}
+#define cmpxchg(ptr,o,n)                                                \
+    ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),            \
+                                   (unsigned long)(n),sizeof(*(ptr))))
+
+#define local_irq_disable() asm volatile ( "cpsid i @ local_irq_disable\n" : : : "cc" )
+#define local_irq_enable()  asm volatile ( "cpsie i @ local_irq_enable\n" : : : "cc" )
+
+#define local_save_flags(x)                                      \
+({                                                               \
+    BUILD_BUG_ON(sizeof(x) != sizeof(long));                     \
+    asm volatile ( "mrs %0, cpsr     @ local_save_flags\n"       \
+                  : "=r" (x) :: "memory", "cc" );                \
+})
+#define local_irq_save(x)                                        \
+({                                                               \
+    local_save_flags(x);                                         \
+    local_irq_disable();                                         \
+})
+#define local_irq_restore(x)                                     \
+({                                                               \
+    BUILD_BUG_ON(sizeof(x) != sizeof(long));                     \
+    asm volatile (                                               \
+            "msr     cpsr_c, %0      @ local_irq_restore\n"      \
+            :                                                    \
+            : "r" (flags)                                        \
+            : "memory", "cc");                                   \
+})
+
+static inline int local_irq_is_enabled(void)
+{
+    unsigned long flags;
+    local_save_flags(flags);
+    return !(flags & PSR_IRQ_MASK);
+}
+
+#define local_fiq_enable()  __asm__("cpsie f   @ __stf\n" : : : "memory", "cc")
+#define local_fiq_disable() __asm__("cpsid f   @ __clf\n" : : : "memory", "cc")
+
+#define local_abort_enable() __asm__("cpsie a  @ __sta\n" : : : "memory", "cc")
+#define local_abort_disable() __asm__("cpsid a @ __sta\n" : : : "memory", "cc")
+
+static inline int local_fiq_is_enabled(void)
+{
+    unsigned long flags;
+    local_save_flags(flags);
+    return !!(flags & PSR_FIQ_MASK);
+}
+
+#endif
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/trace.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/trace.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,12 @@
+#ifndef __ASM_TRACE_H__
+#define __ASM_TRACE_H__
+
+#endif /* __ASM_TRACE_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/types.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/types.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,57 @@
+#ifndef __ARM_TYPES_H__
+#define __ARM_TYPES_H__
+
+#ifndef __ASSEMBLY__
+
+#include <xen/config.h>
+
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+typedef __signed__ long long __s64;
+typedef unsigned long long __u64;
+#endif
+
+typedef signed char s8;
+typedef unsigned char u8;
+
+typedef signed short s16;
+typedef unsigned short u16;
+
+typedef signed int s32;
+typedef unsigned int u32;
+
+typedef signed long long s64;
+typedef unsigned long long u64;
+typedef u64 paddr_t;
+#define INVALID_PADDR (~0ULL)
+#define PRIpaddr "016llx"
+
+typedef unsigned long size_t;
+
+typedef char bool_t;
+#define test_and_set_bool(b)   xchg(&(b), 1)
+#define test_and_clear_bool(b) xchg(&(b), 0)
+
+#endif /* __ASSEMBLY__ */
+
+#define BITS_PER_LONG 32
+#define BYTES_PER_LONG 4
+#define LONG_BYTEORDER 2
+
+#endif /* __ARM_TYPES_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/asm-arm/xenoprof.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-arm/xenoprof.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,12 @@
+#ifndef __ASM_XENOPROF_H__
+#define __ASM_XENOPROF_H__
+
+#endif /* __ASM_XENOPROF_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/public/arch-arm.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/public/arch-arm.h	Thu Feb 09 11:33:29 2012 +0000
@@ -0,0 +1,125 @@
+/******************************************************************************
+ * arch-arm.h
+ *
+ * Guest OS interface to ARM Xen.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Copyright 2011 (C) Citrix Systems
+ */
+
+#ifndef __XEN_PUBLIC_ARCH_ARM_H__
+#define __XEN_PUBLIC_ARCH_ARM_H__
+
+#ifndef __ASSEMBLY__
+#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \
+    typedef struct { type *p; } __guest_handle_ ## name
+
+#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
+    ___DEFINE_XEN_GUEST_HANDLE(name, type);   \
+    ___DEFINE_XEN_GUEST_HANDLE(const_##name, const type)
+#define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)
+#define __XEN_GUEST_HANDLE(name)        __guest_handle_ ## name
+#define XEN_GUEST_HANDLE(name)          __XEN_GUEST_HANDLE(name)
+#define set_xen_guest_handle_raw(hnd, val)  do { (hnd).p = val; } while (0)
+#ifdef __XEN_TOOLS__
+#define get_xen_guest_handle(val, hnd)  do { val = (hnd).p; } while (0)
+#endif
+#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val)
+
+struct cpu_user_regs
+{
+    uint32_t r0;
+    uint32_t r1;
+    uint32_t r2;
+    uint32_t r3;
+    uint32_t r4;
+    uint32_t r5;
+    uint32_t r6;
+    uint32_t r7;
+    uint32_t r8;
+    uint32_t r9;
+    uint32_t r10;
+    union {
+        uint32_t r11;
+        uint32_t fp;
+    };
+    uint32_t r12;
+
+    uint32_t sp; /* r13 - SP: Valid for Hyp. frames only, o/w banked (see below) */
+    uint32_t lr; /* r14 - LR: Valid for Hyp. Same physical register as lr_usr. */
+
+    uint32_t pc; /* Return IP */
+    uint32_t cpsr; /* Return mode */
+    uint32_t pad0; /* Doubleword-align the kernel half of the frame */
+
+    /* Outer guest frame only from here on... */
+
+    uint32_t r8_fiq, r9_fiq, r10_fiq, r11_fiq, r12_fiq;
+
+    uint32_t sp_usr, sp_svc, sp_abt, sp_und, sp_irq, sp_fiq;
+    uint32_t lr_usr, lr_svc, lr_abt, lr_und, lr_irq, lr_fiq;
+
+    uint32_t spsr_svc, spsr_abt, spsr_und, spsr_irq, spsr_fiq;
+};
+typedef struct cpu_user_regs cpu_user_regs_t;
+DEFINE_XEN_GUEST_HANDLE(cpu_user_regs_t);
+
+typedef uint64_t xen_pfn_t;
+#define PRI_xen_pfn PRIx64
+
+/* Maximum number of virtual CPUs in legacy multi-processor guests. */
+/* Only one. All other VCPUS must use VCPUOP_register_vcpu_info */
+#define XEN_LEGACY_MAX_VCPUS 1
+
+typedef uint32_t xen_ulong_t;
+
+struct vcpu_guest_context {
+    struct cpu_user_regs user_regs;         /* User-level CPU registers     */
+    union {
+        uint32_t reg[16];
+        struct {
+            uint32_t __pad[12];
+            uint32_t sp; /* r13 */
+            uint32_t lr; /* r14 */
+            uint32_t pc; /* r15 */
+        };
+    };
+};
+typedef struct vcpu_guest_context vcpu_guest_context_t;
+DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
+
+struct arch_vcpu_info { };
+typedef struct arch_vcpu_info arch_vcpu_info_t;
+
+struct arch_shared_info { };
+typedef struct arch_shared_info arch_shared_info_t;
+#endif
+
+#endif /*  __XEN_PUBLIC_ARCH_ARM_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r dcb04595033b -r 46adf08254f9 xen/include/public/xen.h
--- a/xen/include/public/xen.h	Thu Feb 09 11:33:29 2012 +0000
+++ b/xen/include/public/xen.h	Thu Feb 09 11:33:29 2012 +0000
@@ -33,6 +33,8 @@
 #include "arch-x86/xen.h"
 #elif defined(__ia64__)
 #include "arch-ia64.h"
+#elif defined(__arm__)
+#include "arch-arm.h"
 #else
 #error "Unsupported architecture"
 #endif

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog

From xen-users-bounces@lists.xensource.com Fri Feb 10 10:28:57 2012
Return-path: <xen-users-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Feb 2012 10:28:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xensource.com>)
	id 1Rvnh6-0006Yc-90; Fri, 10 Feb 2012 10:27:08 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <jrnieder@gmail.com>) id 1Rusx7-00089P-0K
	for xen-users@lists.xensource.com; Tue, 07 Feb 2012 21:51:53 +0000
Received: from [85.158.139.83:41820] by server-1.bemta-5.messagelabs.com id
	FE/CC-04285-8FC913F4; Tue, 07 Feb 2012 21:51:52 +0000
X-Env-Sender: jrnieder@gmail.com
X-Msg-Ref: server-2.tower-182.messagelabs.com!1328651506!14119940!1
X-Originating-IP: [209.85.213.171]
X-SpamReason: No, hits=0.8 required=7.0 tests=BODY_RANDOM_LONG,
	ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,spamassassin: 
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25766 invoked from network); 7 Feb 2012 21:51:47 -0000
Received: from mail-yx0-f171.google.com (HELO mail-yx0-f171.google.com)
	(209.85.213.171)
	by server-2.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	7 Feb 2012 21:51:47 -0000
Received: by yenm7 with SMTP id m7so17654838yen.30
	for <xen-users@lists.xensource.com>;
	Tue, 07 Feb 2012 13:51:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=date:from:to:subject:message-id:mime-version:content-type
	:content-disposition:user-agent;
	bh=zBQit4mYWT/vndX2GZUwajtMVXKR6MYfLzJW2qMOp7g=;
	b=j+372lPzuE/EMHs8F6e35sW09zxgjDKQ9lqZvSPBX+TdsPLWSQaSovBjp5+m0Ha6Ci
	rb9ppgvtq8ijdmfw7f3GoowKsvAXTUzW4b7ATsCfcX797rXb0cOx+wU0gk0OEacjp/jZ
	pDVtmBipEUsvDje4YIbh8toK41C4Q/DiH2tzk=
Received: by 10.50.88.132 with SMTP id bg4mr18035478igb.5.1328651505421;
	Tue, 07 Feb 2012 13:51:45 -0800 (PST)
Received: from burratino (c-24-1-56-9.hsd1.il.comcast.net. [24.1.56.9])
	by mx.google.com with ESMTPS id r18sm35867278ibh.4.2012.02.07.13.51.44
	(version=SSLv3 cipher=OTHER); Tue, 07 Feb 2012 13:51:44 -0800 (PST)
Date: Tue, 7 Feb 2012 15:51:42 -0600
From: Jonathan Nieder <jrnieder@gmail.com>
To: xen-users@lists.xensource.com
Message-ID: <20120207215142.GB2014@burratino>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="CdrF4e02JqNVZeln"
Content-Disposition: inline
User-Agent: Mutt/1.5.21 (2010-09-15)
X-Mailman-Approved-At: Fri, 10 Feb 2012 10:27:05 +0000
Subject: [Xen-users] getting X to work, GPU lockups on dom0
X-BeenThere: xen-users@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen user discussion <xen-users.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xensource.com>
List-Help: <mailto:xen-users-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xensource.com?subject=subscribe>
Sender: xen-users-bounces@lists.xensource.com
Errors-To: xen-users-bounces@lists.xensource.com


--CdrF4e02JqNVZeln
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi all,

Debian sid system.  NV34M graphics card (GeForce FX Go5200 64M).  I'm
trying to get started using Xen on my laptop.  CPU is a Pentium 4 with
no vmx, so this is all PV.  I install the kernel and hypervisor, boot
into the Xen dom0, and try to start X so I can launch a web browser
and see what to do next.

Unfortunately X fails to start.  The screen turns black and stays that
way, though I can blindly run a few commands.  Xorg.0.log has a few
hundred

	(EE) FBDEV(0): FBIOPUTCMAP: Invalid argument

lines.

Looking more closely, I see that the actual trouble happened a little
earlier: dmesg informs me:

| [    8.703713] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x0000fdc0 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
| [    8.704276] Console: switching to colour frame buffer device 175x65
| [   10.553368] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x00010048 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
| [   12.402789] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x000101c8 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
| [   14.252200] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x000103cc State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
| [   14.260058] [drm] nouveau 0000:01:00.0: GPU lockup - switching to software fbcon

By contrast, when I boot the same kernel on bare hardware I don't get
the PFIFO_DMA_PUSHER or GPU lockup messages and X works fine.

Hypervisor is xen-hypervisor-4.1-i386 from Debian, version 4.1.2-2.
Reproducible with linux-image-3.2.0-1-686-pae version 3.2.4-1 and with
linus's master (8597559a78e1, 2012-02-06) and linux-next
(e9e792b45a9b, 2012-02-06).

dmesg from running the native kernel (good) and dom0 (bad) attached.

I also tried blacklisting the nouveau kernel module and starting X
with the vesa driver.  That also didn't work.

Is this behavior expected?  Does starting X in the dom0 work on other
cards?

Curious,
Jonathan

--CdrF4e02JqNVZeln
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="dmesg.native"

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.3.0-rc2+ (jrn@burratino) (gcc version 4.7.0 20120205 (experimental) [trunk revision 183903] (Debian 4.7-20120205-1) ) #21 SMP Tue Feb 7 14:31:01 CST 2012
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
[    0.000000]  BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000000f6f0000 (usable)
[    0.000000]  BIOS-e820: 000000000f6f0000 - 000000000f700000 (reserved)
[    0.000000]  BIOS-e820: 000000000f700000 - 000000003fef0000 (usable)
[    0.000000]  BIOS-e820: 000000003fef0000 - 000000003fef8000 (ACPI data)
[    0.000000]  BIOS-e820: 000000003fef8000 - 000000003fefa000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000003ff00000 - 0000000040000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
[    0.000000] Notice: NX (Execute Disable) protection missing in CPU!
[    0.000000] DMI present.
[    0.000000] DMI: IBM 288173U/288173U, BIOS 1XET57WW (1.16 ) 11/30/2006
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[    0.000000] last_pfn = 0x3fef0 max_arch_pfn = 0x1000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-CFFFF write-protect
[    0.000000]   D0000-DFFFF uncachable
[    0.000000]   E0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask FC0000000 write-back
[    0.000000]   1 base 03FF00000 mask FFFF00000 uncachable
[    0.000000]   2 disabled
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] initial memory mapped : 0 - 01a00000
[    0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
[    0.000000] init_memory_mapping: 0000000000000000-0000000037bfe000
[    0.000000]  0000000000 - 0000200000 page 4k
[    0.000000]  0000200000 - 0037a00000 page 2M
[    0.000000]  0037a00000 - 0037bfe000 page 4k
[    0.000000] kernel direct mapping tables up to 37bfe000 @ 19fb000-1a00000
[    0.000000] RAMDISK: 37712000 - 37b81000
[    0.000000] ACPI: RSDP 000f6d90 00024 (v02 IBM   )
[    0.000000] ACPI: XSDT 3fef1ace 0005C (v01 IBM    TP-1X    00001160  LTP 00000000)
[    0.000000] ACPI: FACP 3fef1b2a 00081 (v02 IBM    TP-1X    00001160 IBM  00000001)
[    0.000000] ACPI: DSDT 3fef1c11 062A4 (v01 IBM    TP-1X    00001160 MSFT 0100000D)
[    0.000000] ACPI: FACS 3fef9000 00040
[    0.000000] ACPI: SSDT 3fef1bde 00033 (v01 IBM    TP-1X    00001160 MSFT 0100000D)
[    0.000000] ACPI: ECDT 3fef7eb5 00051 (v01 IBM    TP-1X    00001160 IBM  00000001)
[    0.000000] ACPI: APIC 3fef7f06 00068 (v01 IBM    TP-1X    00001160 LOHR 00000064)
[    0.000000] ACPI: HPET 3fef7f6e 00038 (v01 IBM    TP-1X    00001160 PTL  00000064)
[    0.000000] ACPI: TCPA 3fef7fa6 00032 (v01 IBM    TP-1X    00001160 PTL  00000001)
[    0.000000] ACPI: BOOT 3fef7fd8 00028 (v01 IBM    TP-1X    00001160  LTP 00000001)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 130MB HIGHMEM available.
[    0.000000] 891MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 37bfe000
[    0.000000]   low ram: 0 - 37bfe000
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000010 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x00037bfe
[    0.000000]   HighMem  0x00037bfe -> 0x0003fef0
[    0.000000] Movable zone start PFN for each node
[    0.000000] Early memory PFN ranges
[    0.000000]     0: 0x00000010 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x0000f6f0
[    0.000000]     0: 0x0000f700 -> 0x0003fef0
[    0.000000] On node 0 totalpages: 261743
[    0.000000] free_area_init_node: node 0, pgdat c1368700, node_mem_map f6f12200
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3951 pages, LIFO batch:0
[    0.000000]   Normal zone: 1752 pages used for memmap
[    0.000000]   Normal zone: 222486 pages, LIFO batch:31
[    0.000000]   HighMem zone: 262 pages used for memmap
[    0.000000]   HighMem zone: 33260 pages, LIFO batch:7
[    0.000000] Using APIC driver default
[    0.000000] ACPI: PM-Timer IO Port: 0x1008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0x0 is invalid
[    0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 40
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
[    0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
[    0.000000] PM: Registered nosave memory: 000000000f6f0000 - 000000000f700000
[    0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:bec00000)
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6c00000 s28672 r0 d20480 u1048576
[    0.000000] pcpu-alloc: s28672 r0 d20480 u1048576 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 259697
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.3.0-rc2+ root=/dev/mapper/data-rootfs ro quiet
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] allocated 2094848 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Initializing HighMem for node 0 (00037bfe:0003fef0)
[    0.000000] Memory: 1026884k/1047488k available (2418k kernel code, 20088k reserved, 1097k data, 352k init, 134088k highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff16000 - 0xfffff000   ( 932 kB)
[    0.000000]     pkmap   : 0xffc00000 - 0xffe00000   (2048 kB)
[    0.000000]     vmalloc : 0xf83fe000 - 0xffbfe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf7bfe000   ( 891 MB)
[    0.000000]       .init : 0xc136f000 - 0xc13c7000   ( 352 kB)
[    0.000000]       .data : 0xc125c9d8 - 0xc136ee00   (1097 kB)
[    0.000000]       .text : 0xc1000000 - 0xc125c9d8   (2418 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: Genslabs=15, HWalign=128, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] NR_IRQS:2304 nr_irqs:512 16
[    0.000000] CPU 0 irqstacks, hard=f640a000 soft=f640c000
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 3186.568 MHz processor.
[    0.010002] Calibrating delay loop (skipped), value calculated using timer frequency.. 6373.13 BogoMIPS (lpj=31865680)
[    0.020005] pid_max: default: 32768 minimum: 301
[    0.020052] Mount-cache hash table entries: 512
[    0.020216] Initializing cgroup subsys cpuacct
[    0.020220] Initializing cgroup subsys memory
[    0.020232] Initializing cgroup subsys devices
[    0.020235] Initializing cgroup subsys freezer
[    0.020237] Initializing cgroup subsys net_cls
[    0.020240] Initializing cgroup subsys blkio
[    0.020283] CPU: Physical Processor ID: 0
[    0.020286] CPU: Processor Core ID: 0
[    0.020290] mce: CPU supports 4 MCE banks
[    0.020303] CPU0: Thermal monitoring enabled (TM2)
[    0.020308] using mwait in idle threads.
[    0.021041] ACPI: Core revision 20120111
[    0.030071] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.030417] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.135988] CPU0: Mobile Intel(R) Pentium(R) 4 CPU 3.20GHz stepping 01
[    0.140000] Performance Events: Netburst events, Netburst P4/Xeon PMU driver.
[    0.140000] ... version:                0
[    0.140000] ... bit width:              40
[    0.140000] ... generic registers:      18
[    0.140000] ... value mask:             000000ffffffffff
[    0.140000] ... max period:             0000007fffffffff
[    0.140000] ... fixed-purpose events:   0
[    0.140000] ... event mask:             000000000003ffff
[    0.140000] NMI watchdog enabled, takes one hw-pmu counter.
[    0.140000] CPU 1 irqstacks, hard=f6488000 soft=f648a000
[    0.140000] Booting Node   0, Processors  #1 Ok.
[    0.140000] smpboot cpu 1: start_ip = 9b000
[    0.020000] Initializing CPU#1
[    0.150000] TSC synchronization [CPU#0 -> CPU#1]:
[    0.150000] Measured 24629944164 cycles TSC warp between CPUs, turning off TSC clock.
[    0.150000] Marking TSC unstable due to check_tsc_sync_source failed
[    0.150062] NMI watchdog enabled, takes one hw-pmu counter.
[    0.150117] Brought up 2 CPUs
[    0.150123] Total of 2 processors activated (12746.27 BogoMIPS).
[    0.151169] devtmpfs: initialized
[    0.151169] PM: Registering ACPI NVS region at 3fef8000 (8192 bytes)
[    0.151169] NET: Registered protocol family 16
[    0.151169] ACPI: bus type pci registered
[    0.151169] PCI: PCI BIOS revision 2.10 entry at 0xfd960, last bus=8
[    0.151169] PCI: Using configuration type 1 for base access
[    0.151169] bio: create slab <bio-0> at 0
[    0.151169] ACPI: Added _OSI(Module Device)
[    0.151169] ACPI: Added _OSI(Processor Device)
[    0.151169] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.151169] ACPI: Added _OSI(Processor Aggregator Device)
[    0.151638] ACPI: EC: EC description table is found, configuring boot EC
[    0.170295] ACPI: Interpreter enabled
[    0.170304] ACPI: (supports S0 S3 S4 S5)
[    0.170333] ACPI: Using IOAPIC for interrupt routing
[    0.172359] ACPI: EC: GPE storm detected, transactions will use polling mode
[    0.601932] ACPI: EC: GPE = 0x1d, I/O: command/status = 0x66, data = 0x62
[    0.602089] ACPI: No dock devices found.
[    0.602097] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
[    0.602524] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.603229] pci_root PNP0A03:00: host bridge window [io  0x0000-0x0cf7] (ignored)
[    0.603234] pci_root PNP0A03:00: host bridge window [io  0x0d00-0xffff] (ignored)
[    0.603238] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
[    0.603243] pci_root PNP0A03:00: host bridge window [mem 0x000d0000-0x000d3fff] (ignored)
[    0.603246] pci_root PNP0A03:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored)
[    0.603250] pci_root PNP0A03:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored)
[    0.603254] pci_root PNP0A03:00: host bridge window [mem 0x000dc000-0x000dffff] (ignored)
[    0.603258] pci_root PNP0A03:00: host bridge window [mem 0x40000000-0xfebfffff] (ignored)
[    0.603262] PCI: root bus 00: using default resources
[    0.603325] PCI host bridge to bus 0000:00
[    0.603330] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.603334] pci_bus 0000:00: root bus resource [mem 0x00000000-0xfffffffff]
[    0.603350] pci 0000:00:00.0: [8086:3580] type 0 class 0x000600
[    0.603362] pci 0000:00:00.0: reg 10: [mem 0xd0000000-0xdfffffff pref]
[    0.603422] pci 0000:00:00.1: [8086:3584] type 0 class 0x000880
[    0.603475] pci 0000:00:00.3: [8086:3585] type 0 class 0x000880
[    0.603531] pci 0000:00:01.0: [8086:3581] type 1 class 0x000604
[    0.603596] pci 0000:00:1d.0: [8086:24c2] type 0 class 0x000c03
[    0.603644] pci 0000:00:1d.0: reg 20: [io  0x1800-0x181f]
[    0.603682] pci 0000:00:1d.1: [8086:24c4] type 0 class 0x000c03
[    0.603730] pci 0000:00:1d.1: reg 20: [io  0x1820-0x183f]
[    0.603767] pci 0000:00:1d.2: [8086:24c7] type 0 class 0x000c03
[    0.603814] pci 0000:00:1d.2: reg 20: [io  0x1840-0x185f]
[    0.603864] pci 0000:00:1d.7: [8086:24cd] type 0 class 0x000c03
[    0.603888] pci 0000:00:1d.7: reg 10: [mem 0xc0000000-0xc00003ff]
[    0.603987] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.604009] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604
[    0.604057] pci 0000:00:1f.0: [8086:24cc] type 0 class 0x000601
[    0.604128] pci 0000:00:1f.0: quirk: [io  0x1000-0x107f] claimed by ICH4 ACPI/GPIO/TCO
[    0.604135] pci 0000:00:1f.0: quirk: [io  0x1180-0x11bf] claimed by ICH4 GPIO
[    0.604154] pci 0000:00:1f.1: [8086:24ca] type 0 class 0x000101
[    0.604169] pci 0000:00:1f.1: reg 10: [io  0x0000-0x0007]
[    0.604181] pci 0000:00:1f.1: reg 14: [io  0x0000-0x0003]
[    0.604192] pci 0000:00:1f.1: reg 18: [io  0x0000-0x0007]
[    0.604203] pci 0000:00:1f.1: reg 1c: [io  0x0000-0x0003]
[    0.604214] pci 0000:00:1f.1: reg 20: [io  0x1860-0x186f]
[    0.604226] pci 0000:00:1f.1: reg 24: [mem 0x00000000-0x000003ff]
[    0.604258] pci 0000:00:1f.3: [8086:24c3] type 0 class 0x000c05
[    0.604306] pci 0000:00:1f.3: reg 20: [io  0x1880-0x189f]
[    0.604347] pci 0000:00:1f.5: [8086:24c5] type 0 class 0x000401
[    0.604364] pci 0000:00:1f.5: reg 10: [io  0x1c00-0x1cff]
[    0.604374] pci 0000:00:1f.5: reg 14: [io  0x18c0-0x18ff]
[    0.604385] pci 0000:00:1f.5: reg 18: [mem 0xc0000c00-0xc0000dff]
[    0.604395] pci 0000:00:1f.5: reg 1c: [mem 0xc0000800-0xc00008ff]
[    0.604443] pci 0000:00:1f.5: PME# supported from D0 D3hot D3cold
[    0.604464] pci 0000:00:1f.6: [8086:24c6] type 0 class 0x000703
[    0.604481] pci 0000:00:1f.6: reg 10: [io  0x2400-0x24ff]
[    0.604492] pci 0000:00:1f.6: reg 14: [io  0x2000-0x207f]
[    0.604554] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold
[    0.604585] pci 0000:01:00.0: [10de:0324] type 0 class 0x000300
[    0.604602] pci 0000:01:00.0: reg 10: [mem 0xc1000000-0xc1ffffff]
[    0.604611] pci 0000:01:00.0: reg 14: [mem 0xe0000000-0xefffffff pref]
[    0.604644] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0001ffff pref]
[    0.604709] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[    0.604715] pci 0000:00:01.0:   bridge window [mem 0xc1000000-0xc1ffffff]
[    0.604720] pci 0000:00:01.0:   bridge window [mem 0xe0000000-0xefffffff pref]
[    0.604751] pci 0000:02:01.0: [104c:ac55] type 2 class 0x000607
[    0.604771] pci 0000:02:01.0: reg 10: [mem 0x00000000-0x00000fff]
[    0.604800] pci 0000:02:01.0: supports D1 D2
[    0.604803] pci 0000:02:01.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.604825] pci 0000:02:01.1: [104c:ac55] type 2 class 0x000607
[    0.604844] pci 0000:02:01.1: reg 10: [mem 0x00000000-0x00000fff]
[    0.604873] pci 0000:02:01.1: supports D1 D2
[    0.604876] pci 0000:02:01.1: PME# supported from D0 D1 D2 D3hot D3cold
[    0.604906] pci 0000:02:02.0: [168c:0013] type 0 class 0x000200
[    0.604925] pci 0000:02:02.0: reg 10: [mem 0xc2000000-0xc200ffff]
[    0.605038] pci 0000:00:1e.0: PCI bridge to [bus 02-08] (subtractive decode)
[    0.605044] pci 0000:00:1e.0:   bridge window [io  0x3000-0x6fff]
[    0.605050] pci 0000:00:1e.0:   bridge window [mem 0xc2000000-0xcfffffff]
[    0.605055] pci 0000:00:1e.0:   bridge window [mem 0xf0000000-0xf7ffffff pref]
[    0.605059] pci 0000:00:1e.0:   bridge window [io  0x0000-0xffff] (subtractive decode)
[    0.605063] pci 0000:00:1e.0:   bridge window [mem 0x00000000-0xfffffffff] (subtractive decode)
[    0.605145] pci_bus 0000:00: on NUMA node 0
[    0.605151] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.605257] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]
[    0.605309] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]
[    0.605418]  pci0000:00: Unable to request _OSC control (_OSC support mask: 0x1e)
[    0.608492] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11)
[    0.608595] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11)
[    0.608694] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 *11)
[    0.608793] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11)
[    0.608892] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11)
[    0.608991] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 *11)
[    0.609076] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
[    0.609176] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
[    0.609288] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none
[    0.609288] vgaarb: loaded
[    0.609288] vgaarb: bridge control possible 0000:01:00.0
[    0.609288] PCI: Using ACPI for IRQ routing
[    0.609288] PCI: pci_cache_line_size set to 64 bytes
[    0.609288] reserve RAM buffer: 000000000009f000 - 000000000009ffff 
[    0.609288] reserve RAM buffer: 000000000f6f0000 - 000000000fffffff 
[    0.609288] reserve RAM buffer: 000000003fef0000 - 000000003fffffff 
[    0.609288] pnp: PnP ACPI init
[    0.609288] ACPI: bus type pnp registered
[    0.610621] pnp 00:00: [bus 00-ff]
[    0.610626] pnp 00:00: [io  0x0000-0x0cf7 window]
[    0.610629] pnp 00:00: [io  0x0cf8-0x0cff]
[    0.610632] pnp 00:00: [io  0x0d00-0xffff window]
[    0.610636] pnp 00:00: [mem 0x000a0000-0x000bffff window]
[    0.610639] pnp 00:00: [mem 0x000c0000-0x000c3fff window]
[    0.610642] pnp 00:00: [mem 0x000c4000-0x000c7fff window]
[    0.610645] pnp 00:00: [mem 0x000c8000-0x000cbfff window]
[    0.610649] pnp 00:00: [mem 0x000cc000-0x000cffff window]
[    0.610652] pnp 00:00: [mem 0x000d0000-0x000d3fff window]
[    0.610655] pnp 00:00: [mem 0x000d4000-0x000d7fff window]
[    0.610658] pnp 00:00: [mem 0x000d8000-0x000dbfff window]
[    0.610662] pnp 00:00: [mem 0x000dc000-0x000dffff window]
[    0.610665] pnp 00:00: [mem 0x000e0000-0x000e3fff window]
[    0.610668] pnp 00:00: [mem 0x000e4000-0x000e7fff window]
[    0.610671] pnp 00:00: [mem 0x000e8000-0x000ebfff window]
[    0.610674] pnp 00:00: [mem 0x000ec000-0x000effff window]
[    0.610678] pnp 00:00: [mem 0x000f0000-0x000fffff window]
[    0.610681] pnp 00:00: [mem 0x40000000-0xfebfffff window]
[    0.610684] pnp 00:00: [mem 0x00000000 window]
[    0.610739] pnp 00:00: Plug and Play ACPI device, IDs PNP0a03 (active)
[    0.610764] pnp 00:01: [io  0x0010-0x001f]
[    0.610767] pnp 00:01: [io  0x0090-0x009f]
[    0.610770] pnp 00:01: [io  0x0024-0x0025]
[    0.610773] pnp 00:01: [io  0x0028-0x0029]
[    0.610776] pnp 00:01: [io  0x002c-0x002d]
[    0.610778] pnp 00:01: [io  0x0030-0x0031]
[    0.610781] pnp 00:01: [io  0x0034-0x0035]
[    0.610784] pnp 00:01: [io  0x0038-0x0039]
[    0.610786] pnp 00:01: [io  0x003c-0x003d]
[    0.610789] pnp 00:01: [io  0x00a4-0x00a5]
[    0.610792] pnp 00:01: [io  0x00a8-0x00a9]
[    0.610794] pnp 00:01: [io  0x00ac-0x00ad]
[    0.610797] pnp 00:01: [io  0x00b0-0x00b5]
[    0.610800] pnp 00:01: [io  0x00b8-0x00b9]
[    0.610803] pnp 00:01: [io  0x00bc-0x00bd]
[    0.610805] pnp 00:01: [io  0x004e-0x004f]
[    0.610808] pnp 00:01: [io  0x0050-0x0053]
[    0.610811] pnp 00:01: [io  0x0072-0x0077]
[    0.610813] pnp 00:01: [io  0x002e-0x002f]
[    0.610816] pnp 00:01: [io  0x1000-0x107f]
[    0.610819] pnp 00:01: [io  0x1180-0x11bf]
[    0.610822] pnp 00:01: [io  0x0600-0x060f]
[    0.610825] pnp 00:01: [io  0x0068]
[    0.610827] pnp 00:01: [io  0x006c]
[    0.610830] pnp 00:01: [io  0x0800-0x080f]
[    0.610913] system 00:01: [io  0x1000-0x107f] has been reserved
[    0.610918] system 00:01: [io  0x1180-0x11bf] has been reserved
[    0.610922] system 00:01: [io  0x0600-0x060f] has been reserved
[    0.610927] system 00:01: [io  0x0800-0x080f] has been reserved
[    0.610933] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.610953] pnp 00:02: [io  0x0000-0x000f]
[    0.610956] pnp 00:02: [io  0x0080-0x008f]
[    0.610959] pnp 00:02: [io  0x00c0-0x00df]
[    0.610963] pnp 00:02: [dma 4]
[    0.611007] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active)
[    0.611021] pnp 00:03: [io  0x0061]
[    0.611061] pnp 00:03: Plug and Play ACPI device, IDs PNP0800 (active)
[    0.611076] pnp 00:04: [io  0x00f0]
[    0.611089] pnp 00:04: [irq 13]
[    0.611133] pnp 00:04: Plug and Play ACPI device, IDs PNP0c04 (active)
[    0.611148] pnp 00:05: [io  0x0070-0x0071]
[    0.611159] pnp 00:05: [irq 8]
[    0.611201] pnp 00:05: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.611216] pnp 00:06: [io  0x0060]
[    0.611219] pnp 00:06: [io  0x0064]
[    0.611226] pnp 00:06: [irq 1]
[    0.611268] pnp 00:06: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.611287] pnp 00:07: [irq 12]
[    0.611332] pnp 00:07: Plug and Play ACPI device, IDs IBM3780 PNP0f13 (active)
[    0.611491] pnp 00:08: Plug and Play ACPI device, IDs PNP0400 (disabled)
[    0.800092] pnp: PnP ACPI: found 9 devices
[    0.800095] ACPI: ACPI bus type pnp unregistered
[    0.837936] Switching to clocksource acpi_pm
[    0.837972] PCI: max bus depth: 2 pci_try_num: 3
[    0.837999] pci 0000:00:1f.1: BAR 5: assigned [mem 0x40000000-0x400003ff]
[    0.838008] pci 0000:01:00.0: BAR 6: can't assign mem pref (size 0x20000)
[    0.838012] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[    0.838018] pci 0000:00:01.0:   bridge window [mem 0xc1000000-0xc1ffffff]
[    0.838023] pci 0000:00:01.0:   bridge window [mem 0xe0000000-0xefffffff pref]
[    0.838033] pci 0000:02:01.0: BAR 0: assigned [mem 0xc4000000-0xc4000fff]
[    0.838040] pci 0000:02:01.1: BAR 0: assigned [mem 0xc8000000-0xc8000fff]
[    0.838047] pci 0000:02:01.1: BAR 16: assigned [mem 0xcc000000-0xcfffffff]
[    0.838052] pci 0000:02:01.1: BAR 15: assigned [mem 0xf0000000-0xf3ffffff pref]
[    0.838056] pci 0000:02:01.1: BAR 14: assigned [io  0x3000-0x30ff]
[    0.838059] pci 0000:02:01.1: BAR 13: assigned [io  0x3400-0x34ff]
[    0.838065] pci 0000:02:01.0: BAR 16: assigned [mem 0x44000000-0x47ffffff]
[    0.838069] pci 0000:02:01.0: BAR 15: assigned [mem 0xf4000000-0xf7ffffff pref]
[    0.838073] pci 0000:02:01.0: BAR 14: assigned [io  0x3800-0x38ff]
[    0.838076] pci 0000:02:01.0: BAR 13: assigned [io  0x3c00-0x3cff]
[    0.838080] pci 0000:02:01.0: CardBus bridge to [bus 03-06]
[    0.838083] pci 0000:02:01.0:   bridge window [io  0x3c00-0x3cff]
[    0.838088] pci 0000:02:01.0:   bridge window [io  0x3800-0x38ff]
[    0.838093] pci 0000:02:01.0:   bridge window [mem 0xf4000000-0xf7ffffff pref]
[    0.838099] pci 0000:02:01.0:   bridge window [mem 0x44000000-0x47ffffff]
[    0.838104] pci 0000:02:01.1: CardBus bridge to [bus 07-07]
[    0.838107] pci 0000:02:01.1:   bridge window [io  0x3400-0x34ff]
[    0.838112] pci 0000:02:01.1:   bridge window [io  0x3000-0x30ff]
[    0.838117] pci 0000:02:01.1:   bridge window [mem 0xf0000000-0xf3ffffff pref]
[    0.838123] pci 0000:02:01.1:   bridge window [mem 0xcc000000-0xcfffffff]
[    0.838128] pci 0000:00:1e.0: PCI bridge to [bus 02-08]
[    0.838132] pci 0000:00:1e.0:   bridge window [io  0x3000-0x6fff]
[    0.838139] pci 0000:00:1e.0:   bridge window [mem 0xc2000000-0xcfffffff]
[    0.838144] pci 0000:00:1e.0:   bridge window [mem 0xf0000000-0xf7ffffff pref]
[    0.838164] pci 0000:00:1e.0: setting latency timer to 64
[    0.838201] pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
[    0.838205] pci_bus 0000:00: resource 5 [mem 0x00000000-0xfffffffff]
[    0.838209] pci_bus 0000:01: resource 1 [mem 0xc1000000-0xc1ffffff]
[    0.838212] pci_bus 0000:01: resource 2 [mem 0xe0000000-0xefffffff pref]
[    0.838216] pci_bus 0000:02: resource 0 [io  0x3000-0x6fff]
[    0.838219] pci_bus 0000:02: resource 1 [mem 0xc2000000-0xcfffffff]
[    0.838222] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf7ffffff pref]
[    0.838225] pci_bus 0000:02: resource 4 [io  0x0000-0xffff]
[    0.838228] pci_bus 0000:02: resource 5 [mem 0x00000000-0xfffffffff]
[    0.838232] pci_bus 0000:03: resource 0 [io  0x3c00-0x3cff]
[    0.838235] pci_bus 0000:03: resource 1 [io  0x3800-0x38ff]
[    0.838238] pci_bus 0000:03: resource 2 [mem 0xf4000000-0xf7ffffff pref]
[    0.838241] pci_bus 0000:03: resource 3 [mem 0x44000000-0x47ffffff]
[    0.838244] pci_bus 0000:07: resource 0 [io  0x3400-0x34ff]
[    0.838247] pci_bus 0000:07: resource 1 [io  0x3000-0x30ff]
[    0.838251] pci_bus 0000:07: resource 2 [mem 0xf0000000-0xf3ffffff pref]
[    0.838254] pci_bus 0000:07: resource 3 [mem 0xcc000000-0xcfffffff]
[    0.838292] NET: Registered protocol family 2
[    0.838340] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.838545] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.839316] TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
[    0.839878] TCP: Hash tables configured (established 131072 bind 65536)
[    0.839881] TCP reno registered
[    0.839886] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.839907] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.839907] NET: Registered protocol family 1
[    0.839907] pci 0000:01:00.0: Boot video device
[    0.839907] PCI: CLS 32 bytes, default 64
[    0.839907] Unpacking initramfs...
[    0.986516] Freeing initrd memory: 4540k freed
[    0.991578] Simple Boot Flag at 0x35 set to 0x1
[    0.992217] audit: initializing netlink socket (disabled)
[    0.992240] type=2000 audit(1328649804.989:1): initialized
[    1.006559] highmem bounce pool size: 64 pages
[    1.006569] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    1.009385] msgmni has been set to 1752
[    1.009674] alg: No test for stdrng (krng)
[    1.009769] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    1.009776] io scheduler noop registered
[    1.009784] io scheduler cfq registered (default)
[    1.010024] GHES: HEST is not enabled!
[    1.010030] XENFS: not registering filesystem on non-xen platform
[    1.010127] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.010837] Linux agpgart interface v0.103
[    1.010968] agpgart-intel 0000:00:00.0: Intel 855GM Chipset
[    1.030853] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[    1.030968] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[    1.034371] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.034382] serio: i8042 AUX port at 0x60,0x64 irq 12
[    1.034612] mousedev: PS/2 mouse device common for all mice
[    1.034679] rtc_cmos 00:05: RTC can wake from S4
[    1.034836] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0
[    1.034862] rtc0: alarms up to one month, y3k, 114 bytes nvram
[    1.034875] cpuidle: using governor ladder
[    1.034878] cpuidle: using governor menu
[    1.034949] TCP cubic registered
[    1.035117] NET: Registered protocol family 10
[    1.035301] Mobile IPv6
[    1.035305] NET: Registered protocol family 17
[    1.035327] Using IPI No-Shortcut mode
[    1.035514] PM: Hibernation image not present or could not be loaded.
[    1.035534] registered taskstats version 1
[    1.035958] rtc_cmos 00:05: setting system clock to 2012-02-07 21:23:25 UTC (1328649805)
[    1.036132] Freeing unused kernel memory: 352k freed
[    1.036459] Write protecting the kernel text: 2420k
[    1.036503] Write protecting the kernel read-only data: 880k
[    1.056282] udevd[47]: starting version 175
[    1.065217] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    1.109832] SCSI subsystem initialized
[    1.124020] usbcore: registered new interface driver usbfs
[    1.124061] usbcore: registered new interface driver hub
[    1.135567] usbcore: registered new device driver usb
[    1.137213] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.137336] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    1.137345] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    1.137360] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
[    1.137406] ehci_hcd 0000:00:1d.7: debug port 1
[    1.141321] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported
[    1.141449] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xc0000000
[    1.155695] libata version 3.00 loaded.
[    1.160070] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    1.160437] hub 1-0:1.0: USB hub found
[    1.160451] hub 1-0:1.0: 6 ports detected
[    1.161804] uhci_hcd: USB Universal Host Controller Interface driver
[    1.161949] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    1.161958] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    1.161976] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    1.162044] uhci_hcd 0000:00:1d.0: irq 16, io base 0x00001800
[    1.162413] hub 2-0:1.0: USB hub found
[    1.162424] hub 2-0:1.0: 2 ports detected
[    1.162611] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    1.162618] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    1.162634] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
[    1.162687] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001820
[    1.163006] hub 3-0:1.0: USB hub found
[    1.163016] hub 3-0:1.0: 2 ports detected
[    1.163192] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    1.163199] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    1.163210] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
[    1.163259] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001840
[    1.163570] hub 4-0:1.0: USB hub found
[    1.163580] hub 4-0:1.0: 2 ports detected
[    1.164589] ata_piix 0000:00:1f.1: version 2.13
[    1.164612] ata_piix 0000:00:1f.1: enabling device (0005 -> 0007)
[    1.164695] ata_piix 0000:00:1f.1: setting latency timer to 64
[    1.169207] scsi0 : ata_piix
[    1.169655] scsi1 : ata_piix
[    1.170481] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1860 irq 14
[    1.170490] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1868 irq 15
[    1.350609] ata2.00: ATAPI: UJDA760 DVD/CDRW, 1.02, max UDMA/33
[    1.350756] ata1.00: ATA-6: HTS548080M9AT00, MG4OA5DA, max UDMA/100
[    1.350763] ata1.00: 156301488 sectors, multi 16: LBA 
[    1.390421] ata2.00: configured for UDMA/33
[    1.390546] ata1.00: configured for UDMA/100
[    1.390738] scsi 0:0:0:0: Direct-Access     ATA      HTS548080M9AT00  MG4O PQ: 0 ANSI: 5
[    1.392525] scsi 1:0:0:0: CD-ROM            MATSHITA UJDA760 DVD/CDRW 1.02 PQ: 0 ANSI: 5
[    1.403483] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB)
[    1.403611] sd 0:0:0:0: [sda] Write Protect is off
[    1.403618] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.403673] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.430128] thermal LNXTHERM:00: registered as thermal_zone0
[    1.430133] ACPI: Thermal Zone [THRM] (66 C)
[    1.444871]  sda: sda1 sda2 sda3 < sda5 >
[    1.445636] sd 0:0:0:0: [sda] Attached SCSI disk
[    1.756680] device-mapper: uevent: version 1.0.3
[    1.757499] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@redhat.com
[    1.820059] usb 2-1: new full-speed USB device number 2 using uhci_hcd
[    1.917082] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[    3.036880] udevd[251]: starting version 175
[    3.371532] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input1
[    3.371618] ACPI: Lid Switch [LID]
[    3.371751] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input2
[    3.371767] ACPI: Sleep Button [SLPB]
[    3.371903] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    3.371911] ACPI: Power Button [PWRF]
[    3.384618] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A03:00/device:05/LNXVIDEO:01/input/input4
[    3.384637] ACPI: Video Device [VID1] (multi-head: yes  rom: no  post: no)
[    3.446800] iTCO_vendor_support: vendor-support=0
[    3.459321] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.07
[    3.459500] iTCO_wdt: Found a ICH4-M TCO device (Version=1, TCOBASE=0x1060)
[    3.460264] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[    3.575019] input: PC Speaker as /devices/platform/pcspkr/input/input5
[    3.923826] IBM TrackPoint firmware: 0x0e, buttons: 3/3
[    3.936478] input: TPPS/2 IBM TrackPoint as /devices/platform/i8042/serio1/input/input6
[    9.310161] ACPI: Battery Slot [BAT1] (battery present)
[    9.371269] cfg80211: Calling CRDA to update world regulatory domain
[    9.629533] ath5k 0000:02:02.0: registered as 'phy0'
[    9.714920] snd_intel8x0 0000:00:1f.5: power state changed by ACPI to D0
[    9.714934] snd_intel8x0 0000:00:1f.5: power state changed by ACPI to D0
[    9.715002] snd_intel8x0 0000:00:1f.5: setting latency timer to 64
[   10.102901] ath: EEPROM regdomain: 0x64
[   10.102904] ath: EEPROM indicates we should expect a direct regpair map
[   10.102909] ath: Country alpha2 being used: 00
[   10.102912] ath: Regpair used: 0x64
[   10.130332] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   10.130745] ath5k phy0: Atheros AR5213A chip found (MAC: 0x59, PHY: 0x43)
[   10.130752] ath5k phy0: RF2112B 2GHz radio found (0x46)
[   10.660026] intel8x0_measure_ac97_clock: measured 59918 usecs (11 samples)
[   10.660031] intel8x0: measured clock 183 rejected
[   11.030035] intel8x0_measure_ac97_clock: measured 59970 usecs (2888 samples)
[   11.030041] intel8x0: clocking to 48000
[   11.505734] EXT4-fs (dm-0): re-mounted. Opts: (null)
[   11.610343] EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro
[   11.698174] loop: module loaded
[   12.847926] Adding 2928636k swap on /dev/mapper/data-swap.  Priority:-1 extents:1 across:2928636k 
[   13.166785] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: (null)
[   13.192490] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
[   13.251265] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[   14.354815] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   15.138021] wlan0: authenticate with 58:6d:8f:39:d9:e8 (try 1)
[   15.139480] wlan0: authenticated
[   15.147433] wlan0: associate with 58:6d:8f:39:d9:e8 (try 1)
[   15.151060] wlan0: RX AssocResp from 58:6d:8f:39:d9:e8 (capab=0x411 status=0 aid=1)
[   15.151064] wlan0: associated
[   15.151069] wlan0: moving STA 58:6d:8f:39:d9:e8 to state 1
[   15.151072] wlan0: moving STA 58:6d:8f:39:d9:e8 to state 2
[   15.151612] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   15.202213] wlan0: moving STA 58:6d:8f:39:d9:e8 to state 3
[   25.540028] wlan0: no IPv6 routers present
[   42.673854] [drm] Initialized drm 1.1.0 20060810
[   42.738823] wmi: Mapper loaded
[   42.913176] VGA switcheroo: detected Optimus DSM method \ handle
[   42.913324] nouveau 0000:01:00.0: power state changed by ACPI to D0
[   42.913336] nouveau 0000:01:00.0: power state changed by ACPI to D0
[   42.916846] [drm] nouveau 0000:01:00.0: Detected an NV30 generation card (0x034400b1)
[   42.917241] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[   42.971838] [drm] nouveau 0000:01:00.0: ... BIOS checksum invalid
[   42.971843] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PROM
[   42.971849] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[   42.971852] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PCIROM
[   42.971993] [drm] nouveau 0000:01:00.0: ... appears to be valid
[   42.972169] [drm] nouveau 0000:01:00.0: BMP BIOS found
[   42.972172] [drm] nouveau 0000:01:00.0: BMP version 5.41
[   42.972176] [drm] nouveau 0000:01:00.0: Bios version 04.34.20.81
[   42.972380] [drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
[   42.972387] [drm] nouveau 0000:01:00.0: DCB version 2.2
[   42.972394] [drm] nouveau 0000:01:00.0: DCB outp 00: 030003f3 00000005
[   42.972400] [drm] nouveau 0000:01:00.0: DCB outp 01: 01010300 000088b8
[   42.972703] [drm] nouveau 0000:01:00.0: Loading NV17 power sequencing microcode
[   42.972712] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xF160
[   42.974770] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xF3FB
[   42.974787] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xF541
[   42.974847] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xF6F1
[   42.974854] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xF70E
[   42.974861] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xF72B
[   43.034778] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 6 at offset 0xF8C4
[   43.034786] [drm] nouveau 0000:01:00.0: BIOS FP mode: 1400x1050 (108000kHz pixel clock)
[   43.035749] [drm] nouveau 0000:01:00.0: 3 available performance level(s)
[   43.035756] [drm] nouveau 0000:01:00.0: 0: core 100MHz memory 200MHz timing 0 fanspeed 100%
[   43.035761] [drm] nouveau 0000:01:00.0: 1: core 175MHz memory 350MHz timing 1 fanspeed 75%
[   43.035766] [drm] nouveau 0000:01:00.0: 2: core 200MHz memory 400MHz timing 2 fanspeed 100%
[   43.035819] [drm] nouveau 0000:01:00.0: c: core 175MHz memory 351MHz
[   43.036094] [TTM] Zone  kernel: Available graphics memory: 448844 kiB.
[   43.036099] [TTM] Zone highmem: Available graphics memory: 515888 kiB.
[   43.036102] [TTM] Initializing pool allocator.
[   43.036109] [TTM] Initializing DMA pool allocator.
[   43.036128] [drm] nouveau 0000:01:00.0: Detected 128MiB VRAM
[   43.036932] agpgart-intel 0000:00:00.0: AGP 2.0 bridge
[   43.036963] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[   43.037010] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
[   43.037031] [drm] nouveau 0000:01:00.0: 256 MiB GART (aperture)
[   43.037145] [drm] nouveau 0000:01:00.0: Saving VGA fonts
[   43.093423] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[   43.093432] [drm] No driver support for vblank timestamp query.
[   43.098018] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on lvds encoder (output 0)
[   43.098027] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 1)
[   43.171445] [drm] nouveau 0000:01:00.0: allocated 1400x1050 fb: 0x49000, bo f540ca00
[   43.171594] fbcon: nouveaufb (fb0) is primary device
[   43.185610] [drm] nouveau 0000:01:00.0: Calling LVDS script 1:
[   43.185616] [drm] nouveau 0000:01:00.0: Calling LVDS script 6:
[   43.185620] [drm] nouveau 0000:01:00.0: 0xE04C: Parsing digital output script table
[   43.685491] [drm] nouveau 0000:01:00.0: Calling LVDS script 2:
[   43.685496] [drm] nouveau 0000:01:00.0: 0xE168: Parsing digital output script table
[   43.733541] [drm] nouveau 0000:01:00.0: Setting dpms mode 0 on lvds encoder (output 0)
[   43.733545] [drm] nouveau 0000:01:00.0: Calling LVDS script 5:
[   43.733548] [drm] nouveau 0000:01:00.0: 0xE035: Parsing digital output script table
[   43.733558] [drm] nouveau 0000:01:00.0: Output LVDS-1 is running on CRTC 0 using output A
[   43.736601] Console: switching to colour frame buffer device 175x65
[   43.739442] fb0: nouveaufb frame buffer device
[   43.739445] drm: registered panic notifier
[   43.739452] [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0

--CdrF4e02JqNVZeln
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="dmesg.dom0"

[    0.000000] Reserving virtual address space above 0xf5800000
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.3.0-rc2+ (jrn@burratino) (gcc version 4.7.0 20120205 (experimental) [trunk revision 183903] (Debian 4.7-20120205-1) ) #21 SMP Tue Feb 7 14:31:01 CST 2012
[    0.000000] Freeing  9f-100 pfn range: 97 pages freed
[    0.000000] 1-1 mapping on 9f->100
[    0.000000] Freeing  f6f0-f700 pfn range: 16 pages freed
[    0.000000] 1-1 mapping on f6f0->f700
[    0.000000] 1-1 mapping on 3fef0->100000
[    0.000000] Released 113 pages of unused memory
[    0.000000] Set 786817 page(s) to 1-1 mapping
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  Xen: 0000000000000000 - 000000000009f000 (usable)
[    0.000000]  Xen: 000000000009f000 - 0000000000100000 (reserved)
[    0.000000]  Xen: 0000000000100000 - 000000000f6f0000 (usable)
[    0.000000]  Xen: 000000000f6f0000 - 000000000f700000 (reserved)
[    0.000000]  Xen: 000000000f700000 - 000000003fef0000 (usable)
[    0.000000]  Xen: 000000003fef0000 - 000000003fef8000 (ACPI data)
[    0.000000]  Xen: 000000003fef8000 - 000000003fefa000 (ACPI NVS)
[    0.000000]  Xen: 000000003ff00000 - 0000000040000000 (reserved)
[    0.000000]  Xen: 00000000fec00000 - 00000000fec10000 (reserved)
[    0.000000]  Xen: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  Xen: 00000000ff800000 - 0000000100000000 (reserved)
[    0.000000] Notice: NX (Execute Disable) protection missing in CPU!
[    0.000000] DMI present.
[    0.000000] DMI: IBM 288173U/288173U, BIOS 1XET57WW (1.16 ) 11/30/2006
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[    0.000000] last_pfn = 0x3fef0 max_arch_pfn = 0x1000000
[    0.000000] initial memory mapped : 0 - 02bff000
[    0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
[    0.000000] init_memory_mapping: 0000000000000000-000000002d3fe000
[    0.000000]  0000000000 - 002d3fe000 page 4k
[    0.000000] kernel direct mapping tables up to 2d3fe000 @ 2a92000-2bff000
[    0.000000] xen: setting RW the range 2be6000 - 2bff000
[    0.000000] RAMDISK: 01693000 - 02199000
[    0.000000] ACPI: RSDP 000f6d90 00024 (v02 IBM   )
[    0.000000] ACPI: XSDT 3fef1ace 0005C (v01 IBM    TP-1X    00001160  LTP 00000000)
[    0.000000] ACPI: FACP 3fef1b2a 00081 (v02 IBM    TP-1X    00001160 IBM  00000001)
[    0.000000] ACPI: DSDT 3fef1c11 062A4 (v01 IBM    TP-1X    00001160 MSFT 0100000D)
[    0.000000] ACPI: FACS 3fef9000 00040
[    0.000000] ACPI: SSDT 3fef1bde 00033 (v01 IBM    TP-1X    00001160 MSFT 0100000D)
[    0.000000] ACPI: ECDT 3fef7eb5 00051 (v01 IBM    TP-1X    00001160 IBM  00000001)
[    0.000000] ACPI: APIC 3fef7f06 00068 (v01 IBM    TP-1X    00001160 LOHR 00000064)
[    0.000000] ACPI: HPET 3fef7f6e 00038 (v01 IBM    TP-1X    00001160 PTL  00000064)
[    0.000000] ACPI: TCPA 3fef7fa6 00032 (v01 IBM    TP-1X    00001160 PTL  00000001)
[    0.000000] ACPI: BOOT 3fef7fd8 00028 (v01 IBM    TP-1X    00001160  LTP 00000001)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 298MB HIGHMEM available.
[    0.000000] 723MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 2d3fe000
[    0.000000]   low ram: 0 - 2d3fe000
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000010 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x0002d3fe
[    0.000000]   HighMem  0x0002d3fe -> 0x0003fef0
[    0.000000] Movable zone start PFN for each node
[    0.000000] Early memory PFN ranges
[    0.000000]     0: 0x00000010 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x0000f6f0
[    0.000000]     0: 0x0000f700 -> 0x0003fef0
[    0.000000] On node 0 totalpages: 261743
[    0.000000] free_area_init_node: node 0, pgdat c1368700, node_mem_map ecbfd200
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3951 pages, LIFO batch:0
[    0.000000]   Normal zone: 1416 pages used for memmap
[    0.000000]   Normal zone: 179814 pages, LIFO batch:31
[    0.000000]   HighMem zone: 598 pages used for memmap
[    0.000000]   HighMem zone: 75932 pages, LIFO batch:15
[    0.000000] Using APIC driver default
[    0.000000] ACPI: PM-Timer IO Port: 0x1008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] BIOS bug: APIC version is 0 for CPU 0/0x0, fixing up to 0x10
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 1 already used, trying 2
[    0.000000] IOAPIC[0]: apic_id 2, version 255, address 0xfec00000, GSI 0-255
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0x0 is invalid
[    0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 272
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 0000000000100000
[    0.000000] PM: Registered nosave memory: 000000000f6f0000 - 000000000f700000
[    0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:bec00000)
[    0.000000] Booting paravirtualized kernel on Xen
[    0.000000] Xen version: 4.1.2 (preserve-AD)
[    0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @ecbdd000 s28672 r0 d20480 u49152
[    0.000000] pcpu-alloc: s28672 r0 d20480 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 259697
[    0.000000] Kernel command line: placeholder root=/dev/mapper/data-rootfs ro
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] allocated 2094848 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Placing 64MB software IO TLB between e8919000 - ec919000
[    0.000000] software IO TLB at phys 0x28919000 - 0x2c919000
[    0.000000] Initializing HighMem for node 0 (0002d3fe:0003fef0)
[    0.000000] Memory: 867032k/1047488k available (2418k kernel code, 95208k reserved, 1097k data, 352k init, 221388k highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xf5716000 - 0xf57ff000   ( 932 kB)
[    0.000000]     pkmap   : 0xf5400000 - 0xf5600000   (2048 kB)
[    0.000000]     vmalloc : 0xedbfe000 - 0xf53fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xed3fe000   ( 723 MB)
[    0.000000]       .init : 0xc136f000 - 0xc13c7000   ( 352 kB)
[    0.000000]       .data : 0xc125c9d8 - 0xc136ee00   (1097 kB)
[    0.000000]       .text : 0xc1000000 - 0xc125c9d8   (2418 kB)
[    0.000000] SLUB: Genslabs=15, HWalign=128, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] NR_IRQS:2304 nr_irqs:512 16
[    0.000000] CPU 0 irqstacks, hard=e8418000 soft=e841a000
[    0.000000] xen: sci override: global_irq=9 trigger=0 polarity=0
[    0.000000] xen: registering gsi 9 triggering 0 polarity 0
[    0.000000] xen: --> pirq=9 -> irq=9 (gsi=9)
[    0.000000] xen: acpi sci 9
[    0.000000] xen: --> pirq=1 -> irq=1 (gsi=1)
[    0.000000] xen: --> pirq=2 -> irq=2 (gsi=2)
[    0.000000] xen: --> pirq=3 -> irq=3 (gsi=3)
[    0.000000] xen: --> pirq=4 -> irq=4 (gsi=4)
[    0.000000] xen: --> pirq=5 -> irq=5 (gsi=5)
[    0.000000] xen: --> pirq=6 -> irq=6 (gsi=6)
[    0.000000] xen: --> pirq=7 -> irq=7 (gsi=7)
[    0.000000] xen: --> pirq=8 -> irq=8 (gsi=8)
[    0.000000] xen_map_pirq_gsi: returning irq 9 for gsi 9
[    0.000000] xen: --> pirq=9 -> irq=9 (gsi=9)
[    0.000000] xen: --> pirq=10 -> irq=10 (gsi=10)
[    0.000000] xen: --> pirq=11 -> irq=11 (gsi=11)
[    0.000000] xen: --> pirq=12 -> irq=12 (gsi=12)
[    0.000000] xen: --> pirq=13 -> irq=13 (gsi=13)
[    0.000000] xen: --> pirq=14 -> irq=14 (gsi=14)
[    0.000000] xen: --> pirq=15 -> irq=15 (gsi=15)
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Xen: using vcpuop timer interface
[    0.000000] installing Xen timer for CPU 0
[    0.000000] Detected 3186.546 MHz processor.
[    0.010000] Calibrating delay loop (skipped), value calculated using timer frequency.. 6373.09 BogoMIPS (lpj=31865460)
[    0.010000] pid_max: default: 32768 minimum: 301
[    0.010000] Mount-cache hash table entries: 512
[    0.010000] Initializing cgroup subsys cpuacct
[    0.010000] Initializing cgroup subsys memory
[    0.010000] Initializing cgroup subsys devices
[    0.010000] Initializing cgroup subsys freezer
[    0.010000] Initializing cgroup subsys net_cls
[    0.010000] Initializing cgroup subsys blkio
[    0.010000] CPU: Physical Processor ID: 0
[    0.010000] CPU: Processor Core ID: 0
[    0.010000] ACPI: Core revision 20120111
[    0.020130] cpu 0 spinlock event irq 273
[    0.020278] Performance Events: unsupported Netburst CPU model 4 no PMU driver, software events only.
[    0.020785] NMI watchdog disabled (cpu0): hardware events not enabled
[    0.021081] CPU 1 irqstacks, hard=e8484000 soft=e8486000
[    0.021089] installing Xen timer for CPU 1
[    0.021207] cpu 1 spinlock event irq 279
[    0.010000] Initializing CPU#1
[    0.021541] NMI watchdog disabled (cpu1): hardware events not enabled
[    0.021795] Brought up 2 CPUs
[    0.021982] devtmpfs: initialized
[    0.021982] PM: Registering ACPI NVS region at 3fef8000 (8192 bytes)
[    0.021982] Grant tables using version 2 layout.
[    0.021982] Grant table initialized
[    0.021982] NET: Registered protocol family 16
[    0.021982] ACPI: bus type pci registered
[    0.021982] PCI: PCI BIOS revision 2.10 entry at 0xfd960, last bus=8
[    0.021982] PCI: Using configuration type 1 for base access
[    0.021982] bio: create slab <bio-0> at 0
[    0.021982] ACPI: Added _OSI(Module Device)
[    0.021982] ACPI: Added _OSI(Processor Device)
[    0.021982] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.021982] ACPI: Added _OSI(Processor Aggregator Device)
[    0.034453] ACPI: EC: EC description table is found, configuring boot EC
[    0.068782] ACPI: Interpreter enabled
[    0.068885] ACPI: (supports S0 S3 S4 S5)
[    0.069273] ACPI: Using IOAPIC for interrupt routing
[    0.084975] ACPI: EC: GPE = 0x1d, I/O: command/status = 0x66, data = 0x62
[    0.085562] ACPI: No dock devices found.
[    0.085664] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
[    0.090865] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.092518] pci_root PNP0A03:00: host bridge window [io  0x0000-0x0cf7] (ignored)
[    0.092526] pci_root PNP0A03:00: host bridge window [io  0x0d00-0xffff] (ignored)
[    0.092533] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
[    0.092540] pci_root PNP0A03:00: host bridge window [mem 0x000d0000-0x000d3fff] (ignored)
[    0.092547] pci_root PNP0A03:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored)
[    0.092553] pci_root PNP0A03:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored)
[    0.092560] pci_root PNP0A03:00: host bridge window [mem 0x000dc000-0x000dffff] (ignored)
[    0.092567] pci_root PNP0A03:00: host bridge window [mem 0x40000000-0xfebfffff] (ignored)
[    0.092574] PCI: root bus 00: using default resources
[    0.092650] PCI host bridge to bus 0000:00
[    0.092750] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.092853] pci_bus 0000:00: root bus resource [mem 0x00000000-0xfffffffff]
[    0.092998] pci 0000:00:00.0: [8086:3580] type 0 class 0x000600
[    0.093025] pci 0000:00:00.0: reg 10: [mem 0xd0000000-0xdfffffff pref]
[    0.093251] pci 0000:00:00.1: [8086:3584] type 0 class 0x000880
[    0.093468] pci 0000:00:00.3: [8086:3585] type 0 class 0x000880
[    0.093697] pci 0000:00:01.0: [8086:3581] type 1 class 0x000604
[    0.093918] pci 0000:00:1d.0: [8086:24c2] type 0 class 0x000c03
[    0.094066] pci 0000:00:1d.0: reg 20: [io  0x1800-0x181f]
[    0.094177] pci 0000:00:1d.1: [8086:24c4] type 0 class 0x000c03
[    0.094326] pci 0000:00:1d.1: reg 20: [io  0x1820-0x183f]
[    0.094435] pci 0000:00:1d.2: [8086:24c7] type 0 class 0x000c03
[    0.094583] pci 0000:00:1d.2: reg 20: [io  0x1840-0x185f]
[    0.094725] pci 0000:00:1d.7: [8086:24cd] type 0 class 0x000c03
[    0.094790] pci 0000:00:1d.7: reg 10: [mem 0xc0000000-0xc00003ff]
[    0.095070] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.095126] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604
[    0.095265] pci 0000:00:1f.0: [8086:24cc] type 0 class 0x000601
[    0.095482] pci 0000:00:1f.0: quirk: [io  0x1000-0x107f] claimed by ICH4 ACPI/GPIO/TCO
[    0.095621] pci 0000:00:1f.0: quirk: [io  0x1180-0x11bf] claimed by ICH4 GPIO
[    0.095771] pci 0000:00:1f.1: [8086:24ca] type 0 class 0x000101
[    0.095817] pci 0000:00:1f.1: reg 10: [io  0x0000-0x0007]
[    0.095849] pci 0000:00:1f.1: reg 14: [io  0x0000-0x0003]
[    0.095882] pci 0000:00:1f.1: reg 18: [io  0x0000-0x0007]
[    0.095914] pci 0000:00:1f.1: reg 1c: [io  0x0000-0x0003]
[    0.095946] pci 0000:00:1f.1: reg 20: [io  0x1860-0x186f]
[    0.095979] pci 0000:00:1f.1: reg 24: [mem 0x00000000-0x000003ff]
[    0.096070] pci 0000:00:1f.3: [8086:24c3] type 0 class 0x000c05
[    0.096219] pci 0000:00:1f.3: reg 20: [io  0x1880-0x189f]
[    0.096341] pci 0000:00:1f.5: [8086:24c5] type 0 class 0x000401
[    0.096395] pci 0000:00:1f.5: reg 10: [io  0x1c00-0x1cff]
[    0.096427] pci 0000:00:1f.5: reg 14: [io  0x18c0-0x18ff]
[    0.096458] pci 0000:00:1f.5: reg 18: [mem 0xc0000c00-0xc0000dff]
[    0.096489] pci 0000:00:1f.5: reg 1c: [mem 0xc0000800-0xc00008ff]
[    0.096648] pci 0000:00:1f.5: PME# supported from D0 D3hot D3cold
[    0.096706] pci 0000:00:1f.6: [8086:24c6] type 0 class 0x000703
[    0.096759] pci 0000:00:1f.6: reg 10: [io  0x2400-0x24ff]
[    0.096790] pci 0000:00:1f.6: reg 14: [io  0x2000-0x207f]
[    0.096998] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold
[    0.097090] pci 0000:01:00.0: [10de:0324] type 0 class 0x000300
[    0.097147] pci 0000:01:00.0: reg 10: [mem 0xc1000000-0xc1ffffff]
[    0.097177] pci 0000:01:00.0: reg 14: [mem 0xe0000000-0xefffffff pref]
[    0.097300] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0001ffff pref]
[    0.097536] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[    0.097651] pci 0000:00:01.0:   bridge window [mem 0xc1000000-0xc1ffffff]
[    0.097665] pci 0000:00:01.0:   bridge window [mem 0xe0000000-0xefffffff pref]
[    0.097743] pci 0000:02:01.0: [104c:ac55] type 2 class 0x000607
[    0.097799] pci 0000:02:01.0: reg 10: [mem 0x00000000-0x00000fff]
[    0.097890] pci 0000:02:01.0: supports D1 D2
[    0.097897] pci 0000:02:01.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.097956] pci 0000:02:01.1: [104c:ac55] type 2 class 0x000607
[    0.098012] pci 0000:02:01.1: reg 10: [mem 0x00000000-0x00000fff]
[    0.098108] pci 0000:02:01.1: supports D1 D2
[    0.098115] pci 0000:02:01.1: PME# supported from D0 D1 D2 D3hot D3cold
[    0.098197] pci 0000:02:02.0: [168c:0013] type 0 class 0x000200
[    0.098253] pci 0000:02:02.0: reg 10: [mem 0xc2000000-0xc200ffff]
[    0.098619] pci 0000:00:1e.0: PCI bridge to [bus 02-08] (subtractive decode)
[    0.098734] pci 0000:00:1e.0:   bridge window [io  0x3000-0x6fff]
[    0.098749] pci 0000:00:1e.0:   bridge window [mem 0xc2000000-0xcfffffff]
[    0.098763] pci 0000:00:1e.0:   bridge window [mem 0xf0000000-0xf7ffffff pref]
[    0.098770] pci 0000:00:1e.0:   bridge window [io  0x0000-0xffff] (subtractive decode)
[    0.098777] pci 0000:00:1e.0:   bridge window [mem 0x00000000-0xfffffffff] (subtractive decode)
[    0.099024] pci_bus 0000:00: on NUMA node 0
[    0.099034] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.099199] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]
[    0.099291] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]
[    0.099506]  pci0000:00: Unable to request _OSC control (_OSC support mask: 0x1e)
[    0.106061] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11)
[    0.106975] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11)
[    0.107886] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 *11)
[    0.108811] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11)
[    0.109721] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11)
[    0.110121] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 *11)
[    0.111012] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
[    0.112072] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
[    0.112909] xen/balloon: Initialising balloon driver.
[    0.113478] xen-balloon: Initialising balloon driver.
[    0.113765] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none
[    0.113765] vgaarb: loaded
[    0.113765] vgaarb: bridge control possible 0000:01:00.0
[    0.113765] PCI: Using ACPI for IRQ routing
[    0.113765] PCI: pci_cache_line_size set to 64 bytes
[    0.113765] reserve RAM buffer: 000000000009f000 - 000000000009ffff 
[    0.113765] reserve RAM buffer: 000000000f6f0000 - 000000000fffffff 
[    0.113765] reserve RAM buffer: 000000003fef0000 - 000000003fffffff 
[    0.113765] Switching to clocksource xen
[    0.113765] pnp: PnP ACPI init
[    0.113765] ACPI: bus type pnp registered
[    0.113765] pnp 00:00: [bus 00-ff]
[    0.113765] pnp 00:00: [io  0x0000-0x0cf7 window]
[    0.113765] pnp 00:00: [io  0x0cf8-0x0cff]
[    0.113765] pnp 00:00: [io  0x0d00-0xffff window]
[    0.113765] pnp 00:00: [mem 0x000a0000-0x000bffff window]
[    0.113765] pnp 00:00: [mem 0x000c0000-0x000c3fff window]
[    0.113765] pnp 00:00: [mem 0x000c4000-0x000c7fff window]
[    0.113765] pnp 00:00: [mem 0x000c8000-0x000cbfff window]
[    0.113765] pnp 00:00: [mem 0x000cc000-0x000cffff window]
[    0.113765] pnp 00:00: [mem 0x000d0000-0x000d3fff window]
[    0.113765] pnp 00:00: [mem 0x000d4000-0x000d7fff window]
[    0.113765] pnp 00:00: [mem 0x000d8000-0x000dbfff window]
[    0.113765] pnp 00:00: [mem 0x000dc000-0x000dffff window]
[    0.113765] pnp 00:00: [mem 0x000e0000-0x000e3fff window]
[    0.113765] pnp 00:00: [mem 0x000e4000-0x000e7fff window]
[    0.113765] pnp 00:00: [mem 0x000e8000-0x000ebfff window]
[    0.113765] pnp 00:00: [mem 0x000ec000-0x000effff window]
[    0.113765] pnp 00:00: [mem 0x000f0000-0x000fffff window]
[    0.113765] pnp 00:00: [mem 0x40000000-0xfebfffff window]
[    0.113765] pnp 00:00: [mem 0x00000000 window]
[    0.113765] pnp 00:00: Plug and Play ACPI device, IDs PNP0a03 (active)
[    0.113765] pnp 00:01: [io  0x0010-0x001f]
[    0.113765] pnp 00:01: [io  0x0090-0x009f]
[    0.113765] pnp 00:01: [io  0x0024-0x0025]
[    0.113765] pnp 00:01: [io  0x0028-0x0029]
[    0.113765] pnp 00:01: [io  0x002c-0x002d]
[    0.113765] pnp 00:01: [io  0x0030-0x0031]
[    0.113765] pnp 00:01: [io  0x0034-0x0035]
[    0.113765] pnp 00:01: [io  0x0038-0x0039]
[    0.113765] pnp 00:01: [io  0x003c-0x003d]
[    0.113765] pnp 00:01: [io  0x00a4-0x00a5]
[    0.113765] pnp 00:01: [io  0x00a8-0x00a9]
[    0.113765] pnp 00:01: [io  0x00ac-0x00ad]
[    0.113765] pnp 00:01: [io  0x00b0-0x00b5]
[    0.113765] pnp 00:01: [io  0x00b8-0x00b9]
[    0.113765] pnp 00:01: [io  0x00bc-0x00bd]
[    0.113765] pnp 00:01: [io  0x004e-0x004f]
[    0.113765] pnp 00:01: [io  0x0050-0x0053]
[    0.113765] pnp 00:01: [io  0x0072-0x0077]
[    0.113765] pnp 00:01: [io  0x002e-0x002f]
[    0.113765] pnp 00:01: [io  0x1000-0x107f]
[    0.113765] pnp 00:01: [io  0x1180-0x11bf]
[    0.113765] pnp 00:01: [io  0x0600-0x060f]
[    0.113765] pnp 00:01: [io  0x0068]
[    0.113765] pnp 00:01: [io  0x006c]
[    0.113765] pnp 00:01: [io  0x0800-0x080f]
[    0.113859] system 00:01: [io  0x1000-0x107f] has been reserved
[    0.113965] system 00:01: [io  0x1180-0x11bf] has been reserved
[    0.114069] system 00:01: [io  0x0600-0x060f] has been reserved
[    0.114172] system 00:01: [io  0x0800-0x080f] has been reserved
[    0.114278] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.114325] pnp 00:02: [io  0x0000-0x000f]
[    0.114332] pnp 00:02: [io  0x0080-0x008f]
[    0.114338] pnp 00:02: [io  0x00c0-0x00df]
[    0.114344] pnp 00:02: [dma 4]
[    0.114414] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active)
[    0.114447] pnp 00:03: [io  0x0061]
[    0.114518] pnp 00:03: Plug and Play ACPI device, IDs PNP0800 (active)
[    0.114552] pnp 00:04: [io  0x00f0]
[    0.114562] xen: registering gsi 13 triggering 1 polarity 0
[    0.114575] xen_map_pirq_gsi: returning irq 13 for gsi 13
[    0.114676] xen: --> pirq=13 -> irq=13 (gsi=13)
[    0.114692] pnp 00:04: [irq 13]
[    0.114770] pnp 00:04: Plug and Play ACPI device, IDs PNP0c04 (active)
[    0.114799] pnp 00:05: [io  0x0070-0x0071]
[    0.114807] xen: registering gsi 8 triggering 1 polarity 0
[    0.114814] xen_map_pirq_gsi: returning irq 8 for gsi 8
[    0.114914] xen: --> pirq=8 -> irq=8 (gsi=8)
[    0.114924] pnp 00:05: [irq 8]
[    0.114997] pnp 00:05: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.115027] pnp 00:06: [io  0x0060]
[    0.115033] pnp 00:06: [io  0x0064]
[    0.115040] xen: registering gsi 1 triggering 1 polarity 0
[    0.115047] xen_map_pirq_gsi: returning irq 1 for gsi 1
[    0.115147] xen: --> pirq=1 -> irq=1 (gsi=1)
[    0.115156] pnp 00:06: [irq 1]
[    0.115237] pnp 00:06: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.115266] xen: registering gsi 12 triggering 1 polarity 0
[    0.115274] xen_map_pirq_gsi: returning irq 12 for gsi 12
[    0.115374] xen: --> pirq=12 -> irq=12 (gsi=12)
[    0.115384] pnp 00:07: [irq 12]
[    0.115462] pnp 00:07: Plug and Play ACPI device, IDs IBM3780 PNP0f13 (active)
[    0.115728] pnp 00:08: Plug and Play ACPI device, IDs PNP0400 (disabled)
[    0.117496] pnp: PnP ACPI: found 9 devices
[    0.117595] ACPI: ACPI bus type pnp unregistered
[    0.133006] PM-Timer failed consistency check  (0x0xffffff) - aborting.
[    0.133137] PCI: max bus depth: 2 pci_try_num: 3
[    0.133188] pci 0000:00:1f.1: BAR 5: assigned [mem 0x40000000-0x400003ff]
[    0.137567] pci 0000:01:00.0: BAR 6: can't assign mem pref (size 0x20000)
[    0.137673] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[    0.137784] pci 0000:00:01.0:   bridge window [mem 0xc1000000-0xc1ffffff]
[    0.137895] pci 0000:00:01.0:   bridge window [mem 0xe0000000-0xefffffff pref]
[    0.138039] pci 0000:02:01.0: BAR 0: assigned [mem 0xc4000000-0xc4000fff]
[    0.138154] pci 0000:02:01.1: BAR 0: assigned [mem 0xc8000000-0xc8000fff]
[    0.138269] pci 0000:02:01.1: BAR 16: assigned [mem 0xcc000000-0xcfffffff]
[    0.138375] pci 0000:02:01.1: BAR 15: assigned [mem 0xf0000000-0xf3ffffff pref]
[    0.138503] pci 0000:02:01.1: BAR 14: assigned [io  0x3000-0x30ff]
[    0.138607] pci 0000:02:01.1: BAR 13: assigned [io  0x3400-0x34ff]
[    0.138713] pci 0000:02:01.0: BAR 16: assigned [mem 0x44000000-0x47ffffff]
[    0.138820] pci 0000:02:01.0: BAR 15: assigned [mem 0xf4000000-0xf7ffffff pref]
[    0.138948] pci 0000:02:01.0: BAR 14: assigned [io  0x3800-0x38ff]
[    0.139052] pci 0000:02:01.0: BAR 13: assigned [io  0x3c00-0x3cff]
[    0.139156] pci 0000:02:01.0: CardBus bridge to [bus 03-06]
[    0.139257] pci 0000:02:01.0:   bridge window [io  0x3c00-0x3cff]
[    0.139368] pci 0000:02:01.0:   bridge window [io  0x3800-0x38ff]
[    0.139479] pci 0000:02:01.0:   bridge window [mem 0xf4000000-0xf7ffffff pref]
[    0.139613] pci 0000:02:01.0:   bridge window [mem 0x44000000-0x47ffffff]
[    0.139725] pci 0000:02:01.1: CardBus bridge to [bus 07-07]
[    0.139827] pci 0000:02:01.1:   bridge window [io  0x3400-0x34ff]
[    0.139937] pci 0000:02:01.1:   bridge window [io  0x3000-0x30ff]
[    0.140048] pci 0000:02:01.1:   bridge window [mem 0xf0000000-0xf3ffffff pref]
[    0.140059] pci 0000:02:01.1:   bridge window [mem 0xcc000000-0xcfffffff]
[    0.140059] pci 0000:00:1e.0: PCI bridge to [bus 02-08]
[    0.140059] pci 0000:00:1e.0:   bridge window [io  0x3000-0x6fff]
[    0.140059] pci 0000:00:1e.0:   bridge window [mem 0xc2000000-0xcfffffff]
[    0.140059] pci 0000:00:1e.0:   bridge window [mem 0xf0000000-0xf7ffffff pref]
[    0.140059] pci 0000:00:1e.0: setting latency timer to 64
[    0.140059] xen: registering gsi 20 triggering 0 polarity 1
[    0.140846] xen: --> pirq=20 -> irq=20 (gsi=20)
[    0.140879] xen: registering gsi 21 triggering 0 polarity 1
[    0.140895] xen: --> pirq=21 -> irq=21 (gsi=21)
[    0.140914] pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
[    0.140922] pci_bus 0000:00: resource 5 [mem 0x00000000-0xfffffffff]
[    0.140929] pci_bus 0000:01: resource 1 [mem 0xc1000000-0xc1ffffff]
[    0.140935] pci_bus 0000:01: resource 2 [mem 0xe0000000-0xefffffff pref]
[    0.140942] pci_bus 0000:02: resource 0 [io  0x3000-0x6fff]
[    0.140948] pci_bus 0000:02: resource 1 [mem 0xc2000000-0xcfffffff]
[    0.140954] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf7ffffff pref]
[    0.140961] pci_bus 0000:02: resource 4 [io  0x0000-0xffff]
[    0.140967] pci_bus 0000:02: resource 5 [mem 0x00000000-0xfffffffff]
[    0.140973] pci_bus 0000:03: resource 0 [io  0x3c00-0x3cff]
[    0.140979] pci_bus 0000:03: resource 1 [io  0x3800-0x38ff]
[    0.140986] pci_bus 0000:03: resource 2 [mem 0xf4000000-0xf7ffffff pref]
[    0.140992] pci_bus 0000:03: resource 3 [mem 0x44000000-0x47ffffff]
[    0.140998] pci_bus 0000:07: resource 0 [io  0x3400-0x34ff]
[    0.141004] pci_bus 0000:07: resource 1 [io  0x3000-0x30ff]
[    0.141011] pci_bus 0000:07: resource 2 [mem 0xf0000000-0xf3ffffff pref]
[    0.141017] pci_bus 0000:07: resource 3 [mem 0xcc000000-0xcfffffff]
[    0.141063] NET: Registered protocol family 2
[    0.141230] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.141555] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.142463] TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
[    0.143141] TCP: Hash tables configured (established 131072 bind 65536)
[    0.143245] TCP reno registered
[    0.143343] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.143464] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.143730] NET: Registered protocol family 1
[    0.144131] pci 0000:01:00.0: Boot video device
[    0.144166] PCI: CLS 32 bytes, default 64
[    0.144291] Unpacking initramfs...
[    0.198386] Freeing initrd memory: 11288k freed
[    0.211511] Simple Boot Flag at 0x35 set to 0x1
[    0.212322] audit: initializing netlink socket (disabled)
[    0.212445] type=2000 audit(1328648987.859:1): initialized
[    0.227075] highmem bounce pool size: 64 pages
[    0.227186] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.230219] msgmni has been set to 1283
[    0.230872] alg: No test for stdrng (krng)
[    0.231129] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.231261] io scheduler noop registered
[    0.231365] io scheduler cfq registered (default)
[    0.231750] GHES: HEST is not enabled!
[    0.232209] Event-channel device installed.
[    0.233510] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.234419] xen: registering gsi 17 triggering 0 polarity 1
[    0.234443] xen: --> pirq=17 -> irq=17 (gsi=17)
[    0.234711] Linux agpgart interface v0.103
[    0.235060] agpgart-intel 0000:00:00.0: Intel 855GM Chipset
[    0.255360] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[    0.255607] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[    0.258200] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.258310] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.258765] mousedev: PS/2 mouse device common for all mice
[    0.258983] rtc_cmos 00:05: RTC can wake from S4
[    0.259439] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0
[    0.259597] rtc0: alarms up to one month, y3k, 114 bytes nvram
[    0.259798] TCP cubic registered
[    0.260099] NET: Registered protocol family 10
[    0.260438] Mobile IPv6
[    0.260534] NET: Registered protocol family 17
[    0.260656] Using IPI No-Shortcut mode
[    0.261074] PM: Hibernation image not present or could not be loaded.
[    0.261101] registered taskstats version 1
[    0.261746] rtc_cmos 00:05: setting system clock to 2012-02-07 21:09:47 UTC (1328648987)
[    0.262113] Freeing unused kernel memory: 352k freed
[    0.263835] Write protecting the kernel text: 2420k
[    0.264407] Write protecting the kernel read-only data: 880k
[    0.287883] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    0.327630] udevd[49]: starting version 175
[    0.477294] usbcore: registered new interface driver usbfs
[    0.477470] usbcore: registered new interface driver hub
[    0.484841] usbcore: registered new device driver usb
[    0.489122] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.489316] xen: registering gsi 23 triggering 0 polarity 1
[    0.489355] xen: --> pirq=23 -> irq=23 (gsi=23)
[    0.489433] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    0.489450] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    0.489592] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
[    0.489824] ehci_hcd 0000:00:1d.7: debug port 1
[    0.493862] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported
[    0.493950] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xc0000000
[    0.520305] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    0.521604] hub 1-0:1.0: USB hub found
[    0.521738] hub 1-0:1.0: 6 ports detected
[    0.524674] uhci_hcd: USB Universal Host Controller Interface driver
[    0.524896] xen: registering gsi 16 triggering 0 polarity 1
[    0.524935] xen: --> pirq=16 -> irq=16 (gsi=16)
[    0.524976] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    0.524994] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    0.525135] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    0.525429] uhci_hcd 0000:00:1d.0: irq 16, io base 0x00001800
[    0.553991] hub 2-0:1.0: USB hub found
[    0.554131] hub 2-0:1.0: 2 ports detected
[    0.554489] xen: registering gsi 19 triggering 0 polarity 1
[    0.554532] xen: --> pirq=19 -> irq=19 (gsi=19)
[    0.554575] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    0.554593] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    0.554740] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
[    0.555026] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001820
[    0.580534] hub 3-0:1.0: USB hub found
[    0.580684] hub 3-0:1.0: 2 ports detected
[    0.581048] xen: registering gsi 18 triggering 0 polarity 1
[    0.581097] xen: --> pirq=18 -> irq=18 (gsi=18)
[    0.581144] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    0.581161] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    0.581299] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
[    0.581573] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001840
[    0.595314] hub 4-0:1.0: USB hub found
[    0.595456] hub 4-0:1.0: 2 ports detected
[    0.603754] thermal LNXTHERM:00: registered as thermal_zone0
[    0.603888] ACPI: Thermal Zone [THRM] (59 C)
[    0.686808] SCSI subsystem initialized
[    0.705332] libata version 3.00 loaded.
[    0.708337] ata_piix 0000:00:1f.1: version 2.13
[    0.708377] ata_piix 0000:00:1f.1: enabling device (0005 -> 0007)
[    0.708527] xen: registering gsi 18 triggering 0 polarity 1
[    0.708545] xen_map_pirq_gsi: returning irq 18 for gsi 18
[    0.708670] xen: --> pirq=18 -> irq=18 (gsi=18)
[    0.708681] Already setup the GSI :18
[    0.708927] ata_piix 0000:00:1f.1: setting latency timer to 64
[    0.710027] scsi0 : ata_piix
[    0.713193] scsi1 : ata_piix
[    0.714773] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1860 irq 14
[    0.714883] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1868 irq 15
[    0.890769] ata1.00: ATA-6: HTS548080M9AT00, MG4OA5DA, max UDMA/100
[    0.890880] ata1.00: 156301488 sectors, multi 16: LBA 
[    0.900579] ata2.00: ATAPI: UJDA760 DVD/CDRW, 1.02, max UDMA/33
[    0.930650] ata1.00: configured for UDMA/100
[    0.931041] scsi 0:0:0:0: Direct-Access     ATA      HTS548080M9AT00  MG4O PQ: 0 ANSI: 5
[    0.940500] ata2.00: configured for UDMA/33
[    0.942580] scsi 1:0:0:0: CD-ROM            MATSHITA UJDA760 DVD/CDRW 1.02 PQ: 0 ANSI: 5
[    0.959076] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB)
[    0.959475] sd 0:0:0:0: [sda] Write Protect is off
[    0.959613] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.959721] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    0.999878]  sda: sda1 sda2 sda3 < sda5 >
[    1.001270] sd 0:0:0:0: [sda] Attached SCSI disk
[    1.310106] usb 2-1: new full-speed USB device number 2 using uhci_hcd
[    1.460008] device-mapper: uevent: version 1.0.3
[    1.460996] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@redhat.com
[    1.782185] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[    3.556195] udevd[249]: starting version 175
[    3.890230] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input1
[    3.890488] ACPI: Lid Switch [LID]
[    3.890770] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input2
[    3.890941] ACPI: Sleep Button [SLPB]
[    3.891233] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    3.891398] ACPI: Power Button [PWRF]
[    4.005873] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A03:00/device:05/LNXVIDEO:01/input/input4
[    4.006055] ACPI: Video Device [VID1] (multi-head: yes  rom: no  post: no)
[    4.066107] ACPI: AC Adapter [AC] (on-line)
[    4.120603] iTCO_vendor_support: vendor-support=0
[    4.226136] input: PC Speaker as /devices/platform/pcspkr/input/input5
[    4.344425] cfg80211: Calling CRDA to update world regulatory domain
[    4.577840] IBM TrackPoint firmware: 0x0e, buttons: 3/3
[    4.590510] input: TPPS/2 IBM TrackPoint as /devices/platform/i8042/serio1/input/input6
[    5.189927] ACPI: Battery Slot [BAT1] (battery present)
[    5.213626] Non-volatile memory driver v1.3
[    5.250321] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.07
[    5.250674] iTCO_wdt: Found a ICH4-M TCO device (Version=1, TCOBASE=0x1060)
[    5.251012] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[    5.308625] [drm] Initialized drm 1.1.0 20060810
[    5.332699] thinkpad_acpi: ThinkPad ACPI Extras v0.24
[    5.332822] thinkpad_acpi: http://ibm-acpi.sf.net/
[    5.332921] thinkpad_acpi: ThinkPad BIOS 1XET57WW (1.16 ), EC unknown
[    5.333024] thinkpad_acpi: IBM ThinkPad G41, model 288173U
[    5.336769] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
[    5.340676] Registered led device: tpacpi::power
[    5.340957] Registered led device: tpacpi::standby
[    5.351936] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
[    5.357924] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7
[    5.676528] xen: registering gsi 18 triggering 0 polarity 1
[    5.676545] xen_map_pirq_gsi: returning irq 18 for gsi 18
[    5.676651] xen: --> pirq=18 -> irq=18 (gsi=18)
[    5.676658] Already setup the GSI :18
[    5.676906] ath5k 0000:02:02.0: registered as 'phy0'
[    5.682429] wmi: Mapper loaded
[    5.883021] snd_intel8x0 0000:00:1f.5: power state changed by ACPI to D0
[    5.883169] snd_intel8x0 0000:00:1f.5: power state changed by ACPI to D0
[    5.883318] xen: registering gsi 17 triggering 0 polarity 1
[    5.883336] xen_map_pirq_gsi: returning irq 17 for gsi 17
[    5.883461] xen: --> pirq=17 -> irq=17 (gsi=17)
[    5.883472] Already setup the GSI :17
[    5.883573] intel8x0: disable (unknown or VT-d) VM optimization
[    5.883765] snd_intel8x0 0000:00:1f.5: setting latency timer to 64
[    5.994565] VGA switcheroo: detected Optimus DSM method \ handle
[    5.994828] nouveau 0000:01:00.0: power state changed by ACPI to D0
[    5.994955] nouveau 0000:01:00.0: power state changed by ACPI to D0
[    5.995091] xen: registering gsi 17 triggering 0 polarity 1
[    5.995107] xen_map_pirq_gsi: returning irq 17 for gsi 17
[    5.995234] xen: --> pirq=17 -> irq=17 (gsi=17)
[    5.995248] Already setup the GSI :17
[    6.004745] [drm] nouveau 0000:01:00.0: Detected an NV30 generation card (0x034400b1)
[    6.005961] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[    6.061617] [drm] nouveau 0000:01:00.0: ... BIOS checksum invalid
[    6.061724] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PROM
[    6.061867] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    6.061971] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PCIROM
[    6.062260] [drm] nouveau 0000:01:00.0: ... appears to be valid
[    6.062574] [drm] nouveau 0000:01:00.0: BMP BIOS found
[    6.062675] [drm] nouveau 0000:01:00.0: BMP version 5.41
[    6.062790] [drm] nouveau 0000:01:00.0: Bios version 04.34.20.81
[    6.063163] [drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
[    6.063295] [drm] nouveau 0000:01:00.0: DCB version 2.2
[    6.063425] [drm] nouveau 0000:01:00.0: DCB outp 00: 030003f3 00000005
[    6.063530] [drm] nouveau 0000:01:00.0: DCB outp 01: 01010300 000088b8
[    6.063813] [drm] nouveau 0000:01:00.0: Loading NV17 power sequencing microcode
[    6.063953] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xF160
[    6.066131] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xF3FB
[    6.066283] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xF541
[    6.066472] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xF6F1
[    6.066609] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xF70E
[    6.066755] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xF72B
[    6.125926] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 6 at offset 0xF8C4
[    6.126068] [drm] nouveau 0000:01:00.0: BIOS FP mode: 1400x1050 (108000kHz pixel clock)
[    6.127173] [drm] nouveau 0000:01:00.0: 3 available performance level(s)
[    6.127289] [drm] nouveau 0000:01:00.0: 0: core 100MHz memory 200MHz timing 0 fanspeed 100%
[    6.127427] [drm] nouveau 0000:01:00.0: 1: core 175MHz memory 350MHz timing 1 fanspeed 75%
[    6.127566] [drm] nouveau 0000:01:00.0: 2: core 200MHz memory 400MHz timing 2 fanspeed 100%
[    6.127716] [drm] nouveau 0000:01:00.0: c: core 175MHz memory 351MHz
[    6.128151] [TTM] Zone  kernel: Available graphics memory: 328642 kiB.
[    6.128271] [TTM] Zone highmem: Available graphics memory: 439336 kiB.
[    6.128381] [TTM] Initializing pool allocator.
[    6.128497] [TTM] Initializing DMA pool allocator.
[    6.128620] [drm] nouveau 0000:01:00.0: Detected 128MiB VRAM
[    6.128783] agpgart-intel 0000:00:00.0: AGP 2.0 bridge
[    6.128953] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[    6.129201] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
[    6.129358] [drm] nouveau 0000:01:00.0: 256 MiB GART (aperture)
[    6.129631] [drm] nouveau 0000:01:00.0: Saving VGA fonts
[    6.187012] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[    6.187125] [drm] No driver support for vblank timestamp query.
[    6.196491] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on lvds encoder (output 0)
[    6.196624] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 1)
[    6.268454] ath: EEPROM regdomain: 0x64
[    6.268461] ath: EEPROM indicates we should expect a direct regpair map
[    6.268469] ath: Country alpha2 being used: 00
[    6.268474] ath: Regpair used: 0x64
[    6.277217] [drm] nouveau 0000:01:00.0: allocated 1400x1050 fb: 0x49000, bo c1d0ec00
[    6.277708] fbcon: nouveaufb (fb0) is primary device
[    6.292207] [drm] nouveau 0000:01:00.0: Calling LVDS script 1:
[    6.292215] [drm] nouveau 0000:01:00.0: Calling LVDS script 6:
[    6.292220] [drm] nouveau 0000:01:00.0: 0xE04C: Parsing digital output script table
[    6.302196] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[    6.303163] ath5k phy0: Atheros AR5213A chip found (MAC: 0x59, PHY: 0x43)
[    6.303169] ath5k phy0: RF2112B 2GHz radio found (0x46)
[    6.792391] [drm] nouveau 0000:01:00.0: Calling LVDS script 2:
[    6.792400] [drm] nouveau 0000:01:00.0: 0xE168: Parsing digital output script table
[    6.830121] intel8x0_measure_ac97_clock: measured 59891 usecs (11 samples)
[    6.830127] intel8x0: measured clock 183 rejected
[    6.840471] [drm] nouveau 0000:01:00.0: Setting dpms mode 0 on lvds encoder (output 0)
[    6.840479] [drm] nouveau 0000:01:00.0: Calling LVDS script 5:
[    6.840486] [drm] nouveau 0000:01:00.0: 0xE035: Parsing digital output script table
[    6.840501] [drm] nouveau 0000:01:00.0: Output LVDS-1 is running on CRTC 0 using output A
[    7.210216] intel8x0_measure_ac97_clock: measured 53764 usecs (2591 samples)
[    7.210223] intel8x0: clocking to 48000
[    8.703713] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x0000fdc0 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
[    8.704276] Console: switching to colour frame buffer device 175x65
[   10.553368] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x00010048 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
[   12.402789] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x000101c8 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
[   14.252200] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x000103cc State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
[   14.260058] [drm] nouveau 0000:01:00.0: GPU lockup - switching to software fbcon
[   14.260058] fb0: nouveaufb frame buffer device
[   14.260058] drm: registered panic notifier
[   16.136685] [drm] nouveau 0000:01:00.0: PFIFO_DMA_PUSHER - Ch 0 Get 0x10000000 Put 0x000106e4 State 0xc0000000 (err: MEM_FAULT) Push 0x00000000
[   16.136938] [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0
[   16.785104] EXT4-fs (dm-0): re-mounted. Opts: (null)
[   16.910534] EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro
[   17.009608] loop: module loaded
[   18.890365] Adding 2928636k swap on /dev/mapper/data-swap.  Priority:-1 extents:1 across:2928636k 
[   19.286767] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: (null)
[   19.322467] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
[   19.359012] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[   20.641126] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   21.439387] wlan0: authenticate with 58:6d:8f:39:d9:e8 (try 1)
[   21.442557] wlan0: authenticated
[   21.451845] wlan0: associate with 58:6d:8f:39:d9:e8 (try 1)
[   21.454239] wlan0: RX AssocResp from 58:6d:8f:39:d9:e8 (capab=0x411 status=0 aid=1)
[   21.454247] wlan0: associated
[   21.454255] wlan0: moving STA 58:6d:8f:39:d9:e8 to state 1
[   21.454261] wlan0: moving STA 58:6d:8f:39:d9:e8 to state 2
[   21.455075] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   21.523238] wlan0: moving STA 58:6d:8f:39:d9:e8 to state 3
[   32.360072] wlan0: no IPv6 routers present
[   36.646456] XENBUS: Unable to read cpu state
[   36.652141] XENBUS: Unable to read cpu state

--CdrF4e02JqNVZeln
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xensource.com
http://lists.xensource.com/xen-users
--CdrF4e02JqNVZeln--


From xen-devel-bounces@lists.xensource.com Fri Feb 10 13:04:55 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Feb 2012 13:04:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1Rvq9e-0006Lr-4Y; Fri, 10 Feb 2012 13:04:46 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <david.vrabel@citrix.com>) id 1Rvq9S-0006Dw-2U
	for xen-devel@lists.xensource.com; Fri, 10 Feb 2012 13:04:44 +0000
Received: from [85.158.139.83:46694] by server-4.bemta-5.messagelabs.com id
	46/FC-28576-0E5153F4; Fri, 10 Feb 2012 13:04:32 +0000
X-Env-Sender: david.vrabel@citrix.com
X-Msg-Ref: server-9.tower-182.messagelabs.com!1328879054!13905276!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAyMzEyMDE=\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30962 invoked from network); 10 Feb 2012 13:04:16 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-9.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	10 Feb 2012 13:04:16 -0000
X-IronPort-AV: E=Sophos;i="4.73,396,1325480400"; d="scan'208";a="181229022"
Received: from ftlpmailmx01.citrite.net ([10.13.107.65])
	by FTLPIPO02.CITRIX.COM with ESMTP/TLS/RC4-MD5;
	10 Feb 2012 08:03:56 -0500
Received: from smtp01.ad.xensource.com (10.219.128.104) by
	smtprelay.citrix.com (10.13.107.65) with Microsoft SMTP Server id
	8.3.213.0; Fri, 10 Feb 2012 08:03:54 -0500
Received: from qabil.uk.xensource.com (qabil.uk.xensource.com [10.80.2.76])	by
	smtp01.ad.xensource.com (8.13.1/8.13.1) with ESMTP id q1AD3qXT007755;
	Fri, 10 Feb 2012 05:03:54 -0800
From: David Vrabel <david.vrabel@citrix.com>
To: xen-devel@lists.xensource.com
Date: Fri, 10 Feb 2012 13:03:37 +0000
Message-ID: <1328879024-5621-2-git-send-email-david.vrabel@citrix.com>
X-Mailer: git-send-email 1.7.2.5
In-Reply-To: <1328879024-5621-1-git-send-email-david.vrabel@citrix.com>
References: <1328879024-5621-1-git-send-email-david.vrabel@citrix.com>
MIME-Version: 1.0
Cc: David Vrabel <david.vrabel@citrix.com>
Subject: [Xen-devel] [PATCH 1/8] libfdt: add version 1.3.0
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

From: David Vrabel <david.vrabel@citrix.com>

Add libfdt 1.3.0 from http://git.jdl.com/gitweb/?p=dtc.git

This will be used by Xen to parse the DTBs provided by bootloaders on
ARM platforms.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
---
 xen/common/libfdt/Makefile.libfdt   |   10 +
 xen/common/libfdt/TODO              |    3 +
 xen/common/libfdt/fdt.c             |  222 +++++++
 xen/common/libfdt/fdt.h             |   60 ++
 xen/common/libfdt/fdt_ro.c          |  574 ++++++++++++++++
 xen/common/libfdt/fdt_rw.c          |  465 +++++++++++++
 xen/common/libfdt/fdt_strerror.c    |   96 +++
 xen/common/libfdt/fdt_sw.c          |  256 ++++++++
 xen/common/libfdt/fdt_wip.c         |  118 ++++
 xen/common/libfdt/libfdt.h          | 1235 +++++++++++++++++++++++++++++++++++
 xen/common/libfdt/libfdt_env.h      |   23 +
 xen/common/libfdt/libfdt_internal.h |   95 +++
 xen/common/libfdt/version.lds       |   54 ++
 13 files changed, 3211 insertions(+), 0 deletions(-)
 create mode 100644 xen/common/libfdt/Makefile.libfdt
 create mode 100644 xen/common/libfdt/TODO
 create mode 100644 xen/common/libfdt/fdt.c
 create mode 100644 xen/common/libfdt/fdt.h
 create mode 100644 xen/common/libfdt/fdt_ro.c
 create mode 100644 xen/common/libfdt/fdt_rw.c
 create mode 100644 xen/common/libfdt/fdt_strerror.c
 create mode 100644 xen/common/libfdt/fdt_sw.c
 create mode 100644 xen/common/libfdt/fdt_wip.c
 create mode 100644 xen/common/libfdt/libfdt.h
 create mode 100644 xen/common/libfdt/libfdt_env.h
 create mode 100644 xen/common/libfdt/libfdt_internal.h
 create mode 100644 xen/common/libfdt/version.lds

diff --git a/xen/common/libfdt/Makefile.libfdt b/xen/common/libfdt/Makefile.libfdt
new file mode 100644
index 0000000..d55a6f8
--- /dev/null
+++ b/xen/common/libfdt/Makefile.libfdt
@@ -0,0 +1,10 @@
+# Makefile.libfdt
+#
+# This is not a complete Makefile of itself.  Instead, it is designed to
+# be easily embeddable into other systems of Makefiles.
+#
+LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
+LIBFDT_INCLUDES = fdt.h libfdt.h
+LIBFDT_VERSION = version.lds
+LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
diff --git a/xen/common/libfdt/TODO b/xen/common/libfdt/TODO
new file mode 100644
index 0000000..288437e
--- /dev/null
+++ b/xen/common/libfdt/TODO
@@ -0,0 +1,3 @@
+- Tree traversal functions
+- Graft function
+- Complete libfdt.h documenting comments
diff --git a/xen/common/libfdt/fdt.c b/xen/common/libfdt/fdt.c
new file mode 100644
index 0000000..e56833a
--- /dev/null
+++ b/xen/common/libfdt/fdt.c
@@ -0,0 +1,222 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_check_header(const void *fdt)
+{
+	if (fdt_magic(fdt) == FDT_MAGIC) {
+		/* Complete tree */
+		if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+		if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+	} else if (fdt_magic(fdt) == FDT_SW_MAGIC) {
+		/* Unfinished sequential-write blob */
+		if (fdt_size_dt_struct(fdt) == 0)
+			return -FDT_ERR_BADSTATE;
+	} else {
+		return -FDT_ERR_BADMAGIC;
+	}
+
+	return 0;
+}
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)
+{
+	const char *p;
+
+	if (fdt_version(fdt) >= 0x11)
+		if (((offset + len) < offset)
+		    || ((offset + len) > fdt_size_dt_struct(fdt)))
+			return NULL;
+
+	p = _fdt_offset_ptr(fdt, offset);
+
+	if (p + len < p)
+		return NULL;
+	return p;
+}
+
+uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)
+{
+	const uint32_t *tagp, *lenp;
+	uint32_t tag;
+	int offset = startoffset;
+	const char *p;
+
+	*nextoffset = -FDT_ERR_TRUNCATED;
+	tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE);
+	if (!tagp)
+		return FDT_END; /* premature end */
+	tag = fdt32_to_cpu(*tagp);
+	offset += FDT_TAGSIZE;
+
+	*nextoffset = -FDT_ERR_BADSTRUCTURE;
+	switch (tag) {
+	case FDT_BEGIN_NODE:
+		/* skip name */
+		do {
+			p = fdt_offset_ptr(fdt, offset++, 1);
+		} while (p && (*p != '\0'));
+		if (!p)
+			return FDT_END; /* premature end */
+		break;
+
+	case FDT_PROP:
+		lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp));
+		if (!lenp)
+			return FDT_END; /* premature end */
+		/* skip-name offset, length and value */
+		offset += sizeof(struct fdt_property) - FDT_TAGSIZE
+			+ fdt32_to_cpu(*lenp);
+		break;
+
+	case FDT_END:
+	case FDT_END_NODE:
+	case FDT_NOP:
+		break;
+
+	default:
+		return FDT_END;
+	}
+
+	if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset))
+		return FDT_END; /* premature end */
+
+	*nextoffset = FDT_TAGALIGN(offset);
+	return tag;
+}
+
+int _fdt_check_node_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int _fdt_check_prop_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int fdt_next_node(const void *fdt, int offset, int *depth)
+{
+	int nextoffset = 0;
+	uint32_t tag;
+
+	if (offset >= 0)
+		if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0)
+			return nextoffset;
+
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_PROP:
+		case FDT_NOP:
+			break;
+
+		case FDT_BEGIN_NODE:
+			if (depth)
+				(*depth)++;
+			break;
+
+		case FDT_END_NODE:
+			if (depth && ((--(*depth)) < 0))
+				return nextoffset;
+			break;
+
+		case FDT_END:
+			if ((nextoffset >= 0)
+			    || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))
+				return -FDT_ERR_NOTFOUND;
+			else
+				return nextoffset;
+		}
+	} while (tag != FDT_BEGIN_NODE);
+
+	return offset;
+}
+
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)
+{
+	int len = strlen(s) + 1;
+	const char *last = strtab + tabsize - len;
+	const char *p;
+
+	for (p = strtab; p <= last; p++)
+		if (memcmp(p, s, len) == 0)
+			return p;
+	return NULL;
+}
+
+int fdt_move(const void *fdt, void *buf, int bufsize)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_totalsize(fdt) > bufsize)
+		return -FDT_ERR_NOSPACE;
+
+	memmove(buf, fdt, fdt_totalsize(fdt));
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt.h b/xen/common/libfdt/fdt.h
new file mode 100644
index 0000000..48ccfd9
--- /dev/null
+++ b/xen/common/libfdt/fdt.h
@@ -0,0 +1,60 @@
+#ifndef _FDT_H
+#define _FDT_H
+
+#ifndef __ASSEMBLY__
+
+struct fdt_header {
+	uint32_t magic;			 /* magic word FDT_MAGIC */
+	uint32_t totalsize;		 /* total size of DT block */
+	uint32_t off_dt_struct;		 /* offset to structure */
+	uint32_t off_dt_strings;	 /* offset to strings */
+	uint32_t off_mem_rsvmap;	 /* offset to memory reserve map */
+	uint32_t version;		 /* format version */
+	uint32_t last_comp_version;	 /* last compatible version */
+
+	/* version 2 fields below */
+	uint32_t boot_cpuid_phys;	 /* Which physical CPU id we're
+					    booting on */
+	/* version 3 fields below */
+	uint32_t size_dt_strings;	 /* size of the strings block */
+
+	/* version 17 fields below */
+	uint32_t size_dt_struct;	 /* size of the structure block */
+};
+
+struct fdt_reserve_entry {
+	uint64_t address;
+	uint64_t size;
+};
+
+struct fdt_node_header {
+	uint32_t tag;
+	char name[0];
+};
+
+struct fdt_property {
+	uint32_t tag;
+	uint32_t len;
+	uint32_t nameoff;
+	char data[0];
+};
+
+#endif /* !__ASSEMBLY */
+
+#define FDT_MAGIC	0xd00dfeed	/* 4: version, 4: total size */
+#define FDT_TAGSIZE	sizeof(uint32_t)
+
+#define FDT_BEGIN_NODE	0x1		/* Start node: full name */
+#define FDT_END_NODE	0x2		/* End node */
+#define FDT_PROP	0x3		/* Property: name off,
+					   size, content */
+#define FDT_NOP		0x4		/* nop */
+#define FDT_END		0x9
+
+#define FDT_V1_SIZE	(7*sizeof(uint32_t))
+#define FDT_V2_SIZE	(FDT_V1_SIZE + sizeof(uint32_t))
+#define FDT_V3_SIZE	(FDT_V2_SIZE + sizeof(uint32_t))
+#define FDT_V16_SIZE	FDT_V3_SIZE
+#define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(uint32_t))
+
+#endif /* _FDT_H */
diff --git a/xen/common/libfdt/fdt_ro.c b/xen/common/libfdt/fdt_ro.c
new file mode 100644
index 0000000..02b6d68
--- /dev/null
+++ b/xen/common/libfdt/fdt_ro.c
@@ -0,0 +1,574 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_nodename_eq(const void *fdt, int offset,
+			    const char *s, int len)
+{
+	const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1);
+
+	if (! p)
+		/* short match */
+		return 0;
+
+	if (memcmp(p, s, len) != 0)
+		return 0;
+
+	if (p[len] == '\0')
+		return 1;
+	else if (!memchr(s, '@', len) && (p[len] == '@'))
+		return 1;
+	else
+		return 0;
+}
+
+const char *fdt_string(const void *fdt, int stroffset)
+{
+	return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset;
+}
+
+static int _fdt_string_eq(const void *fdt, int stroffset,
+			  const char *s, int len)
+{
+	const char *p = fdt_string(fdt, stroffset);
+
+	return (strlen(p) == len) && (memcmp(p, s, len) == 0);
+}
+
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size)
+{
+	FDT_CHECK_HEADER(fdt);
+	*address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address);
+	*size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size);
+	return 0;
+}
+
+int fdt_num_mem_rsv(const void *fdt)
+{
+	int i = 0;
+
+	while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0)
+		i++;
+	return i;
+}
+
+static int _nextprop(const void *fdt, int offset)
+{
+	uint32_t tag;
+	int nextoffset;
+
+	do {
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_END:
+			if (nextoffset >= 0)
+				return -FDT_ERR_BADSTRUCTURE;
+			else
+				return nextoffset;
+
+		case FDT_PROP:
+			return offset;
+		}
+		offset = nextoffset;
+	} while (tag == FDT_NOP);
+
+	return -FDT_ERR_NOTFOUND;
+}
+
+int fdt_subnode_offset_namelen(const void *fdt, int offset,
+			       const char *name, int namelen)
+{
+	int depth;
+
+	FDT_CHECK_HEADER(fdt);
+
+	for (depth = 0;
+	     (offset >= 0) && (depth >= 0);
+	     offset = fdt_next_node(fdt, offset, &depth))
+		if ((depth == 1)
+		    && _fdt_nodename_eq(fdt, offset, name, namelen))
+			return offset;
+
+	if (depth < 0)
+		return -FDT_ERR_NOTFOUND;
+	return offset; /* error */
+}
+
+int fdt_subnode_offset(const void *fdt, int parentoffset,
+		       const char *name)
+{
+	return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_path_offset(const void *fdt, const char *path)
+{
+	const char *end = path + strlen(path);
+	const char *p = path;
+	int offset = 0;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* see if we have an alias */
+	if (*path != '/') {
+		const char *q = strchr(path, '/');
+
+		if (!q)
+			q = end;
+
+		p = fdt_get_alias_namelen(fdt, p, q - p);
+		if (!p)
+			return -FDT_ERR_BADPATH;
+		offset = fdt_path_offset(fdt, p);
+
+		p = q;
+	}
+
+	while (*p) {
+		const char *q;
+
+		while (*p == '/')
+			p++;
+		if (! *p)
+			return offset;
+		q = strchr(p, '/');
+		if (! q)
+			q = end;
+
+		offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p);
+		if (offset < 0)
+			return offset;
+
+		p = q;
+	}
+
+	return offset;
+}
+
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
+{
+	const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset);
+	int err;
+
+	if (((err = fdt_check_header(fdt)) != 0)
+	    || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0))
+			goto fail;
+
+	if (len)
+		*len = strlen(nh->name);
+
+	return nh->name;
+
+ fail:
+	if (len)
+		*len = err;
+	return NULL;
+}
+
+int fdt_first_property_offset(const void *fdt, int nodeoffset)
+{
+	int offset;
+
+	if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+int fdt_next_property_offset(const void *fdt, int offset)
+{
+	if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp)
+{
+	int err;
+	const struct fdt_property *prop;
+
+	if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) {
+		if (lenp)
+			*lenp = err;
+		return NULL;
+	}
+
+	prop = _fdt_offset_ptr(fdt, offset);
+
+	if (lenp)
+		*lenp = fdt32_to_cpu(prop->len);
+
+	return prop;
+}
+
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int offset,
+						    const char *name,
+						    int namelen, int *lenp)
+{
+	for (offset = fdt_first_property_offset(fdt, offset);
+	     (offset >= 0);
+	     (offset = fdt_next_property_offset(fdt, offset))) {
+		const struct fdt_property *prop;
+
+		if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) {
+			offset = -FDT_ERR_INTERNAL;
+			break;
+		}
+		if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
+				   name, namelen))
+			return prop;
+	}
+
+	if (lenp)
+		*lenp = offset;
+	return NULL;
+}
+
+const struct fdt_property *fdt_get_property(const void *fdt,
+					    int nodeoffset,
+					    const char *name, int *lenp)
+{
+	return fdt_get_property_namelen(fdt, nodeoffset, name,
+					strlen(name), lenp);
+}
+
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp);
+	if (! prop)
+		return NULL;
+
+	return prop->data;
+}
+
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_by_offset(fdt, offset, lenp);
+	if (!prop)
+		return NULL;
+	if (namep)
+		*namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+	return prop->data;
+}
+
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp)
+{
+	return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp);
+}
+
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset)
+{
+	const uint32_t *php;
+	int len;
+
+	/* FIXME: This is a bit sub-optimal, since we potentially scan
+	 * over all the properties twice. */
+	php = fdt_getprop(fdt, nodeoffset, "phandle", &len);
+	if (!php || (len != sizeof(*php))) {
+		php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len);
+		if (!php || (len != sizeof(*php)))
+			return 0;
+	}
+
+	return fdt32_to_cpu(*php);
+}
+
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen)
+{
+	int aliasoffset;
+
+	aliasoffset = fdt_path_offset(fdt, "/aliases");
+	if (aliasoffset < 0)
+		return NULL;
+
+	return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
+}
+
+const char *fdt_get_alias(const void *fdt, const char *name)
+{
+	return fdt_get_alias_namelen(fdt, name, strlen(name));
+}
+
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen)
+{
+	int pdepth = 0, p = 0;
+	int offset, depth, namelen;
+	const char *name;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (buflen < 2)
+		return -FDT_ERR_NOSPACE;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		while (pdepth > depth) {
+			do {
+				p--;
+			} while (buf[p-1] != '/');
+			pdepth--;
+		}
+
+		if (pdepth >= depth) {
+			name = fdt_get_name(fdt, offset, &namelen);
+			if (!name)
+				return namelen;
+			if ((p + namelen + 1) <= buflen) {
+				memcpy(buf + p, name, namelen);
+				p += namelen;
+				buf[p++] = '/';
+				pdepth++;
+			}
+		}
+
+		if (offset == nodeoffset) {
+			if (pdepth < (depth + 1))
+				return -FDT_ERR_NOSPACE;
+
+			if (p > 1) /* special case so that root path is "/", not "" */
+				p--;
+			buf[p] = '\0';
+			return 0;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth)
+{
+	int offset, depth;
+	int supernodeoffset = -FDT_ERR_INTERNAL;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (supernodedepth < 0)
+		return -FDT_ERR_NOTFOUND;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		if (depth == supernodedepth)
+			supernodeoffset = offset;
+
+		if (offset == nodeoffset) {
+			if (nodedepth)
+				*nodedepth = depth;
+
+			if (supernodedepth > depth)
+				return -FDT_ERR_NOTFOUND;
+			else
+				return supernodeoffset;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_depth(const void *fdt, int nodeoffset)
+{
+	int nodedepth;
+	int err;
+
+	err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
+	if (err)
+		return (err < 0) ? err : -FDT_ERR_INTERNAL;
+	return nodedepth;
+}
+
+int fdt_parent_offset(const void *fdt, int nodeoffset)
+{
+	int nodedepth = fdt_node_depth(fdt, nodeoffset);
+
+	if (nodedepth < 0)
+		return nodedepth;
+	return fdt_supernode_atdepth_offset(fdt, nodeoffset,
+					    nodedepth - 1, NULL);
+}
+
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen)
+{
+	int offset;
+	const void *val;
+	int len;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_getprop(), then if that didn't
+	 * find what we want, we scan over them again making our way
+	 * to the next node.  Still it's the easiest to implement
+	 * approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		val = fdt_getprop(fdt, offset, propname, &len);
+		if (val && (len == proplen)
+		    && (memcmp(val, propval, len) == 0))
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle)
+{
+	int offset;
+
+	if ((phandle == 0) || (phandle == -1))
+		return -FDT_ERR_BADPHANDLE;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we
+	 * potentially scan each property of a node in
+	 * fdt_get_phandle(), then if that didn't find what
+	 * we want, we scan over them again making our way to the next
+	 * node.  Still it's the easiest to implement approach;
+	 * performance can come later. */
+	for (offset = fdt_next_node(fdt, -1, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		if (fdt_get_phandle(fdt, offset) == phandle)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+static int _fdt_stringlist_contains(const char *strlist, int listlen,
+				    const char *str)
+{
+	int len = strlen(str);
+	const char *p;
+
+	while (listlen >= len) {
+		if (memcmp(str, strlist, len+1) == 0)
+			return 1;
+		p = memchr(strlist, '\0', listlen);
+		if (!p)
+			return 0; /* malformed strlist.. */
+		listlen -= (p-strlist) + 1;
+		strlist = p + 1;
+	}
+	return 0;
+}
+
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible)
+{
+	const void *prop;
+	int len;
+
+	prop = fdt_getprop(fdt, nodeoffset, "compatible", &len);
+	if (!prop)
+		return len;
+	if (_fdt_stringlist_contains(prop, len, compatible))
+		return 0;
+	else
+		return 1;
+}
+
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible)
+{
+	int offset, err;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_node_check_compatible(), then if
+	 * that didn't find what we want, we scan over them again
+	 * making our way to the next node.  Still it's the easiest to
+	 * implement approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		err = fdt_node_check_compatible(fdt, offset, compatible);
+		if ((err < 0) && (err != -FDT_ERR_NOTFOUND))
+			return err;
+		else if (err == 0)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
diff --git a/xen/common/libfdt/fdt_rw.c b/xen/common/libfdt/fdt_rw.c
new file mode 100644
index 0000000..994037b
--- /dev/null
+++ b/xen/common/libfdt/fdt_rw.c
@@ -0,0 +1,465 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_blocks_misordered(const void *fdt,
+			      int mem_rsv_size, int struct_size)
+{
+	return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8))
+		|| (fdt_off_dt_struct(fdt) <
+		    (fdt_off_mem_rsvmap(fdt) + mem_rsv_size))
+		|| (fdt_off_dt_strings(fdt) <
+		    (fdt_off_dt_struct(fdt) + struct_size))
+		|| (fdt_totalsize(fdt) <
+		    (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)));
+}
+
+static int _fdt_rw_check_header(void *fdt)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_version(fdt) < 17)
+		return -FDT_ERR_BADVERSION;
+	if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry),
+				   fdt_size_dt_struct(fdt)))
+		return -FDT_ERR_BADLAYOUT;
+	if (fdt_version(fdt) > 17)
+		fdt_set_version(fdt, 17);
+
+	return 0;
+}
+
+#define FDT_RW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_rw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static inline int _fdt_data_size(void *fdt)
+{
+	return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+}
+
+static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen)
+{
+	char *p = splicepoint;
+	char *end = (char *)fdt + _fdt_data_size(fdt);
+
+	if (((p + oldlen) < p) || ((p + oldlen) > end))
+		return -FDT_ERR_BADOFFSET;
+	if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt)))
+		return -FDT_ERR_NOSPACE;
+	memmove(p + newlen, p + oldlen, end - p - oldlen);
+	return 0;
+}
+
+static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p,
+			       int oldn, int newn)
+{
+	int delta = (newn - oldn) * sizeof(*p);
+	int err;
+	err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p));
+	if (err)
+		return err;
+	fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_struct(void *fdt, void *p,
+			      int oldlen, int newlen)
+{
+	int delta = newlen - oldlen;
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, oldlen, newlen)))
+		return err;
+
+	fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_string(void *fdt, int newlen)
+{
+	void *p = (char *)fdt
+		+ fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, 0, newlen)))
+		return err;
+
+	fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_off_dt_strings(fdt);
+	const char *p;
+	char *new;
+	int len = strlen(s) + 1;
+	int err;
+
+	p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s);
+	if (p)
+		/* found it */
+		return (p - strtab);
+
+	new = strtab + fdt_size_dt_strings(fdt);
+	err = _fdt_splice_string(fdt, len);
+	if (err)
+		return err;
+
+	memcpy(new, s, len);
+	return (new - strtab);
+}
+
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt));
+	err = _fdt_splice_mem_rsv(fdt, re, 0, 1);
+	if (err)
+		return err;
+
+	re->address = cpu_to_fdt64(address);
+	re->size = cpu_to_fdt64(size);
+	return 0;
+}
+
+int fdt_del_mem_rsv(void *fdt, int n)
+{
+	struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n);
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	if (n >= fdt_num_mem_rsv(fdt))
+		return -FDT_ERR_NOTFOUND;
+
+	err = _fdt_splice_mem_rsv(fdt, re, 1, 0);
+	if (err)
+		return err;
+	return 0;
+}
+
+static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name,
+				int len, struct fdt_property **prop)
+{
+	int oldlen;
+	int err;
+
+	*prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
+	if (! (*prop))
+		return oldlen;
+
+	if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen),
+				      FDT_TAGALIGN(len))))
+		return err;
+
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+static int _fdt_add_property(void *fdt, int nodeoffset, const char *name,
+			     int len, struct fdt_property **prop)
+{
+	int proplen;
+	int nextoffset;
+	int namestroff;
+	int err;
+
+	if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return nextoffset;
+
+	namestroff = _fdt_find_add_string(fdt, name);
+	if (namestroff < 0)
+		return namestroff;
+
+	*prop = _fdt_offset_ptr_w(fdt, nextoffset);
+	proplen = sizeof(**prop) + FDT_TAGALIGN(len);
+
+	err = _fdt_splice_struct(fdt, *prop, 0, proplen);
+	if (err)
+		return err;
+
+	(*prop)->tag = cpu_to_fdt32(FDT_PROP);
+	(*prop)->nameoff = cpu_to_fdt32(namestroff);
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+int fdt_set_name(void *fdt, int nodeoffset, const char *name)
+{
+	char *namep;
+	int oldlen, newlen;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	namep = (char *)(uintptr_t)fdt_get_name(fdt, nodeoffset, &oldlen);
+	if (!namep)
+		return oldlen;
+
+	newlen = strlen(name);
+
+	err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1),
+				 FDT_TAGALIGN(newlen+1));
+	if (err)
+		return err;
+
+	memcpy(namep, name, newlen+1);
+	return 0;
+}
+
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len)
+{
+	struct fdt_property *prop;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop);
+	if (err == -FDT_ERR_NOTFOUND)
+		err = _fdt_add_property(fdt, nodeoffset, name, len, &prop);
+	if (err)
+		return err;
+
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_delprop(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len, proplen;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	proplen = sizeof(*prop) + FDT_TAGALIGN(len);
+	return _fdt_splice_struct(fdt, prop, proplen, 0);
+}
+
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen)
+{
+	struct fdt_node_header *nh;
+	int offset, nextoffset;
+	int nodelen;
+	int err;
+	uint32_t tag;
+	uint32_t *endtag;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	offset = fdt_subnode_offset_namelen(fdt, parentoffset, name, namelen);
+	if (offset >= 0)
+		return -FDT_ERR_EXISTS;
+	else if (offset != -FDT_ERR_NOTFOUND)
+		return offset;
+
+	/* Try to place the new node after the parent's properties */
+	fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+	} while ((tag == FDT_PROP) || (tag == FDT_NOP));
+
+	nh = _fdt_offset_ptr_w(fdt, offset);
+	nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE;
+
+	err = _fdt_splice_struct(fdt, nh, 0, nodelen);
+	if (err)
+		return err;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memset(nh->name, 0, FDT_TAGALIGN(namelen+1));
+	memcpy(nh->name, name, namelen);
+	endtag = (uint32_t *)((char *)nh + nodelen - FDT_TAGSIZE);
+	*endtag = cpu_to_fdt32(FDT_END_NODE);
+
+	return offset;
+}
+
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name)
+{
+	return fdt_add_subnode_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_del_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset),
+				  endoffset - nodeoffset, 0);
+}
+
+static void _fdt_packblocks(const char *old, char *new,
+			    int mem_rsv_size, int struct_size)
+{
+	int mem_rsv_off, struct_off, strings_off;
+
+	mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
+	struct_off = mem_rsv_off + mem_rsv_size;
+	strings_off = struct_off + struct_size;
+
+	memmove(new + mem_rsv_off, old + fdt_off_mem_rsvmap(old), mem_rsv_size);
+	fdt_set_off_mem_rsvmap(new, mem_rsv_off);
+
+	memmove(new + struct_off, old + fdt_off_dt_struct(old), struct_size);
+	fdt_set_off_dt_struct(new, struct_off);
+	fdt_set_size_dt_struct(new, struct_size);
+
+	memmove(new + strings_off, old + fdt_off_dt_strings(old),
+		fdt_size_dt_strings(old));
+	fdt_set_off_dt_strings(new, strings_off);
+	fdt_set_size_dt_strings(new, fdt_size_dt_strings(old));
+}
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize)
+{
+	int err;
+	int mem_rsv_size, struct_size;
+	int newsize;
+	const char *fdtstart = fdt;
+	const char *fdtend = fdtstart + fdt_totalsize(fdt);
+	char *tmp;
+
+	FDT_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+
+	if (fdt_version(fdt) >= 17) {
+		struct_size = fdt_size_dt_struct(fdt);
+	} else {
+		struct_size = 0;
+		while (fdt_next_tag(fdt, struct_size, &struct_size) != FDT_END)
+			;
+		if (struct_size < 0)
+			return struct_size;
+	}
+
+	if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) {
+		/* no further work necessary */
+		err = fdt_move(fdt, buf, bufsize);
+		if (err)
+			return err;
+		fdt_set_version(buf, 17);
+		fdt_set_size_dt_struct(buf, struct_size);
+		fdt_set_totalsize(buf, bufsize);
+		return 0;
+	}
+
+	/* Need to reorder */
+	newsize = FDT_ALIGN(sizeof(struct fdt_header), 8) + mem_rsv_size
+		+ struct_size + fdt_size_dt_strings(fdt);
+
+	if (bufsize < newsize)
+		return -FDT_ERR_NOSPACE;
+
+	/* First attempt to build converted tree at beginning of buffer */
+	tmp = buf;
+	/* But if that overlaps with the old tree... */
+	if (((tmp + newsize) > fdtstart) && (tmp < fdtend)) {
+		/* Try right after the old tree instead */
+		tmp = (char *)(uintptr_t)fdtend;
+		if ((tmp + newsize) > ((char *)buf + bufsize))
+			return -FDT_ERR_NOSPACE;
+	}
+
+	_fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size);
+	memmove(buf, tmp, newsize);
+
+	fdt_set_magic(buf, FDT_MAGIC);
+	fdt_set_totalsize(buf, bufsize);
+	fdt_set_version(buf, 17);
+	fdt_set_last_comp_version(buf, 16);
+	fdt_set_boot_cpuid_phys(buf, fdt_boot_cpuid_phys(fdt));
+
+	return 0;
+}
+
+int fdt_pack(void *fdt)
+{
+	int mem_rsv_size;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+	_fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt));
+	fdt_set_totalsize(fdt, _fdt_data_size(fdt));
+
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt_strerror.c b/xen/common/libfdt/fdt_strerror.c
new file mode 100644
index 0000000..e6c3cee
--- /dev/null
+++ b/xen/common/libfdt/fdt_strerror.c
@@ -0,0 +1,96 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+struct fdt_errtabent {
+	const char *str;
+};
+
+#define FDT_ERRTABENT(val) \
+	[(val)] = { .str = #val, }
+
+static struct fdt_errtabent fdt_errtable[] = {
+	FDT_ERRTABENT(FDT_ERR_NOTFOUND),
+	FDT_ERRTABENT(FDT_ERR_EXISTS),
+	FDT_ERRTABENT(FDT_ERR_NOSPACE),
+
+	FDT_ERRTABENT(FDT_ERR_BADOFFSET),
+	FDT_ERRTABENT(FDT_ERR_BADPATH),
+	FDT_ERRTABENT(FDT_ERR_BADSTATE),
+
+	FDT_ERRTABENT(FDT_ERR_TRUNCATED),
+	FDT_ERRTABENT(FDT_ERR_BADMAGIC),
+	FDT_ERRTABENT(FDT_ERR_BADVERSION),
+	FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
+	FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
+};
+#define FDT_ERRTABSIZE	(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
+
+const char *fdt_strerror(int errval)
+{
+	if (errval > 0)
+		return "<valid offset/length>";
+	else if (errval == 0)
+		return "<no error>";
+	else if (errval > -FDT_ERRTABSIZE) {
+		const char *s = fdt_errtable[-errval].str;
+
+		if (s)
+			return s;
+	}
+
+	return "<unknown error>";
+}
diff --git a/xen/common/libfdt/fdt_sw.c b/xen/common/libfdt/fdt_sw.c
new file mode 100644
index 0000000..55ebebf
--- /dev/null
+++ b/xen/common/libfdt/fdt_sw.c
@@ -0,0 +1,256 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_sw_check_header(void *fdt)
+{
+	if (fdt_magic(fdt) != FDT_SW_MAGIC)
+		return -FDT_ERR_BADMAGIC;
+	/* FIXME: should check more details about the header state */
+	return 0;
+}
+
+#define FDT_SW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_sw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static void *_fdt_grab_space(void *fdt, size_t len)
+{
+	int offset = fdt_size_dt_struct(fdt);
+	int spaceleft;
+
+	spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt)
+		- fdt_size_dt_strings(fdt);
+
+	if ((offset + len < offset) || (offset + len > spaceleft))
+		return NULL;
+
+	fdt_set_size_dt_struct(fdt, offset + len);
+	return _fdt_offset_ptr_w(fdt, offset);
+}
+
+int fdt_create(void *buf, int bufsize)
+{
+	void *fdt = buf;
+
+	if (bufsize < sizeof(struct fdt_header))
+		return -FDT_ERR_NOSPACE;
+
+	memset(buf, 0, bufsize);
+
+	fdt_set_magic(fdt, FDT_SW_MAGIC);
+	fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION);
+	fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION);
+	fdt_set_totalsize(fdt,  bufsize);
+
+	fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header),
+					      sizeof(struct fdt_reserve_entry)));
+	fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt));
+	fdt_set_off_dt_strings(fdt, bufsize);
+
+	return 0;
+}
+
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int offset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	if (fdt_size_dt_struct(fdt))
+		return -FDT_ERR_BADSTATE;
+
+	offset = fdt_off_dt_struct(fdt);
+	if ((offset + sizeof(*re)) > fdt_totalsize(fdt))
+		return -FDT_ERR_NOSPACE;
+
+	re = (struct fdt_reserve_entry *)((char *)fdt + offset);
+	re->address = cpu_to_fdt64(addr);
+	re->size = cpu_to_fdt64(size);
+
+	fdt_set_off_dt_struct(fdt, offset + sizeof(*re));
+
+	return 0;
+}
+
+int fdt_finish_reservemap(void *fdt)
+{
+	return fdt_add_reservemap_entry(fdt, 0, 0);
+}
+
+int fdt_begin_node(void *fdt, const char *name)
+{
+	struct fdt_node_header *nh;
+	int namelen = strlen(name) + 1;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen));
+	if (! nh)
+		return -FDT_ERR_NOSPACE;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memcpy(nh->name, name, namelen);
+	return 0;
+}
+
+int fdt_end_node(void *fdt)
+{
+	uint32_t *en;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	en = _fdt_grab_space(fdt, FDT_TAGSIZE);
+	if (! en)
+		return -FDT_ERR_NOSPACE;
+
+	*en = cpu_to_fdt32(FDT_END_NODE);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_totalsize(fdt);
+	const char *p;
+	int strtabsize = fdt_size_dt_strings(fdt);
+	int len = strlen(s) + 1;
+	int struct_top, offset;
+
+	p = _fdt_find_string(strtab - strtabsize, strtabsize, s);
+	if (p)
+		return p - strtab;
+
+	/* Add it */
+	offset = -strtabsize - len;
+	struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	if (fdt_totalsize(fdt) + offset < struct_top)
+		return 0; /* no more room :( */
+
+	memcpy(strtab + offset, s, len);
+	fdt_set_size_dt_strings(fdt, strtabsize + len);
+	return offset;
+}
+
+int fdt_property(void *fdt, const char *name, const void *val, int len)
+{
+	struct fdt_property *prop;
+	int nameoff;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nameoff = _fdt_find_add_string(fdt, name);
+	if (nameoff == 0)
+		return -FDT_ERR_NOSPACE;
+
+	prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len));
+	if (! prop)
+		return -FDT_ERR_NOSPACE;
+
+	prop->tag = cpu_to_fdt32(FDT_PROP);
+	prop->nameoff = cpu_to_fdt32(nameoff);
+	prop->len = cpu_to_fdt32(len);
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_finish(void *fdt)
+{
+	char *p = (char *)fdt;
+	uint32_t *end;
+	int oldstroffset, newstroffset;
+	uint32_t tag;
+	int offset, nextoffset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	/* Add terminator */
+	end = _fdt_grab_space(fdt, sizeof(*end));
+	if (! end)
+		return -FDT_ERR_NOSPACE;
+	*end = cpu_to_fdt32(FDT_END);
+
+	/* Relocate the string table */
+	oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt);
+	newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt));
+	fdt_set_off_dt_strings(fdt, newstroffset);
+
+	/* Walk the structure, correcting string offsets */
+	offset = 0;
+	while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) {
+		if (tag == FDT_PROP) {
+			struct fdt_property *prop =
+				_fdt_offset_ptr_w(fdt, offset);
+			int nameoff;
+
+			nameoff = fdt32_to_cpu(prop->nameoff);
+			nameoff += fdt_size_dt_strings(fdt);
+			prop->nameoff = cpu_to_fdt32(nameoff);
+		}
+		offset = nextoffset;
+	}
+	if (nextoffset < 0)
+		return nextoffset;
+
+	/* Finally, adjust the header */
+	fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt));
+	fdt_set_magic(fdt, FDT_MAGIC);
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt_wip.c b/xen/common/libfdt/fdt_wip.c
new file mode 100644
index 0000000..6025fa1
--- /dev/null
+++ b/xen/common/libfdt/fdt_wip.c
@@ -0,0 +1,118 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len)
+{
+	void *propval;
+	int proplen;
+
+	propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen);
+	if (! propval)
+		return proplen;
+
+	if (proplen != len)
+		return -FDT_ERR_NOSPACE;
+
+	memcpy(propval, val, len);
+	return 0;
+}
+
+static void _fdt_nop_region(void *start, int len)
+{
+	uint32_t *p;
+
+	for (p = start; (char *)p < ((char *)start + len); p++)
+		*p = cpu_to_fdt32(FDT_NOP);
+}
+
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len;
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	_fdt_nop_region(prop, len + sizeof(*prop));
+
+	return 0;
+}
+
+int _fdt_node_end_offset(void *fdt, int offset)
+{
+	int depth = 0;
+
+	while ((offset >= 0) && (depth >= 0))
+		offset = fdt_next_node(fdt, offset, &depth);
+
+	return offset;
+}
+
+int fdt_nop_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	_fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0),
+			endoffset - nodeoffset);
+	return 0;
+}
diff --git a/xen/common/libfdt/libfdt.h b/xen/common/libfdt/libfdt.h
new file mode 100644
index 0000000..55f3eb3
--- /dev/null
+++ b/xen/common/libfdt/libfdt.h
@@ -0,0 +1,1235 @@
+#ifndef _LIBFDT_H
+#define _LIBFDT_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <libfdt_env.h>
+#include <fdt.h>
+
+#define FDT_FIRST_SUPPORTED_VERSION	0x10
+#define FDT_LAST_SUPPORTED_VERSION	0x11
+
+/* Error codes: informative error codes */
+#define FDT_ERR_NOTFOUND	1
+	/* FDT_ERR_NOTFOUND: The requested node or property does not exist */
+#define FDT_ERR_EXISTS		2
+	/* FDT_ERR_EXISTS: Attemped to create a node or property which
+	 * already exists */
+#define FDT_ERR_NOSPACE		3
+	/* FDT_ERR_NOSPACE: Operation needed to expand the device
+	 * tree, but its buffer did not have sufficient space to
+	 * contain the expanded tree. Use fdt_open_into() to move the
+	 * device tree to a buffer with more space. */
+
+/* Error codes: codes for bad parameters */
+#define FDT_ERR_BADOFFSET	4
+	/* FDT_ERR_BADOFFSET: Function was passed a structure block
+	 * offset which is out-of-bounds, or which points to an
+	 * unsuitable part of the structure for the operation. */
+#define FDT_ERR_BADPATH		5
+	/* FDT_ERR_BADPATH: Function was passed a badly formatted path
+	 * (e.g. missing a leading / for a function which requires an
+	 * absolute path) */
+#define FDT_ERR_BADPHANDLE	6
+	/* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle
+	 * value.  phandle values of 0 and -1 are not permitted. */
+#define FDT_ERR_BADSTATE	7
+	/* FDT_ERR_BADSTATE: Function was passed an incomplete device
+	 * tree created by the sequential-write functions, which is
+	 * not sufficiently complete for the requested operation. */
+
+/* Error codes: codes for bad device tree blobs */
+#define FDT_ERR_TRUNCATED	8
+	/* FDT_ERR_TRUNCATED: Structure block of the given device tree
+	 * ends without an FDT_END tag. */
+#define FDT_ERR_BADMAGIC	9
+	/* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a
+	 * device tree at all - it is missing the flattened device
+	 * tree magic number. */
+#define FDT_ERR_BADVERSION	10
+	/* FDT_ERR_BADVERSION: Given device tree has a version which
+	 * can't be handled by the requested operation.  For
+	 * read-write functions, this may mean that fdt_open_into() is
+	 * required to convert the tree to the expected version. */
+#define FDT_ERR_BADSTRUCTURE	11
+	/* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt
+	 * structure block or other serious error (e.g. misnested
+	 * nodes, or subnodes preceding properties). */
+#define FDT_ERR_BADLAYOUT	12
+	/* FDT_ERR_BADLAYOUT: For read-write functions, the given
+	 * device tree has it's sub-blocks in an order that the
+	 * function can't handle (memory reserve map, then structure,
+	 * then strings).  Use fdt_open_into() to reorganize the tree
+	 * into a form suitable for the read-write operations. */
+
+/* "Can't happen" error indicating a bug in libfdt */
+#define FDT_ERR_INTERNAL	13
+	/* FDT_ERR_INTERNAL: libfdt has failed an internal assertion.
+	 * Should never be returned, if it is, it indicates a bug in
+	 * libfdt itself. */
+
+#define FDT_ERR_MAX		13
+
+/**********************************************************************/
+/* Low-level functions (you probably don't need these)                */
+/**********************************************************************/
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
+static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
+{
+	return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
+}
+
+uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
+
+/**********************************************************************/
+/* Traversal functions                                                */
+/**********************************************************************/
+
+int fdt_next_node(const void *fdt, int offset, int *depth);
+
+/**********************************************************************/
+/* General functions                                                  */
+/**********************************************************************/
+
+#define fdt_get_header(fdt, field) \
+	(fdt32_to_cpu(((const struct fdt_header *)(fdt))->field))
+#define fdt_magic(fdt) 			(fdt_get_header(fdt, magic))
+#define fdt_totalsize(fdt)		(fdt_get_header(fdt, totalsize))
+#define fdt_off_dt_struct(fdt)		(fdt_get_header(fdt, off_dt_struct))
+#define fdt_off_dt_strings(fdt)		(fdt_get_header(fdt, off_dt_strings))
+#define fdt_off_mem_rsvmap(fdt)		(fdt_get_header(fdt, off_mem_rsvmap))
+#define fdt_version(fdt)		(fdt_get_header(fdt, version))
+#define fdt_last_comp_version(fdt) 	(fdt_get_header(fdt, last_comp_version))
+#define fdt_boot_cpuid_phys(fdt) 	(fdt_get_header(fdt, boot_cpuid_phys))
+#define fdt_size_dt_strings(fdt) 	(fdt_get_header(fdt, size_dt_strings))
+#define fdt_size_dt_struct(fdt)		(fdt_get_header(fdt, size_dt_struct))
+
+#define __fdt_set_hdr(name) \
+	static inline void fdt_set_##name(void *fdt, uint32_t val) \
+	{ \
+		struct fdt_header *fdth = (struct fdt_header*)fdt; \
+		fdth->name = cpu_to_fdt32(val); \
+	}
+__fdt_set_hdr(magic);
+__fdt_set_hdr(totalsize);
+__fdt_set_hdr(off_dt_struct);
+__fdt_set_hdr(off_dt_strings);
+__fdt_set_hdr(off_mem_rsvmap);
+__fdt_set_hdr(version);
+__fdt_set_hdr(last_comp_version);
+__fdt_set_hdr(boot_cpuid_phys);
+__fdt_set_hdr(size_dt_strings);
+__fdt_set_hdr(size_dt_struct);
+#undef __fdt_set_hdr
+
+/**
+ * fdt_check_header - sanity check a device tree or possible device tree
+ * @fdt: pointer to data which might be a flattened device tree
+ *
+ * fdt_check_header() checks that the given buffer contains what
+ * appears to be a flattened device tree with sane information in its
+ * header.
+ *
+ * returns:
+ *     0, if the buffer appears to contain a valid device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings, as above
+ */
+int fdt_check_header(const void *fdt);
+
+/**
+ * fdt_move - move a device tree around in memory
+ * @fdt: pointer to the device tree to move
+ * @buf: pointer to memory where the device is to be moved
+ * @bufsize: size of the memory space at buf
+ *
+ * fdt_move() relocates, if possible, the device tree blob located at
+ * fdt to the buffer at buf of size bufsize.  The buffer may overlap
+ * with the existing device tree blob at fdt.  Therefore,
+ *     fdt_move(fdt, fdt, fdt_totalsize(fdt))
+ * should always succeed.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_move(const void *fdt, void *buf, int bufsize);
+
+/**********************************************************************/
+/* Read-only functions                                                */
+/**********************************************************************/
+
+/**
+ * fdt_string - retrieve a string from the strings block of a device tree
+ * @fdt: pointer to the device tree blob
+ * @stroffset: offset of the string within the strings block (native endian)
+ *
+ * fdt_string() retrieves a pointer to a single string from the
+ * strings block of the device tree blob at fdt.
+ *
+ * returns:
+ *     a pointer to the string, on success
+ *     NULL, if stroffset is out of bounds
+ */
+const char *fdt_string(const void *fdt, int stroffset);
+
+/**
+ * fdt_num_mem_rsv - retrieve the number of memory reserve map entries
+ * @fdt: pointer to the device tree blob
+ *
+ * Returns the number of entries in the device tree blob's memory
+ * reservation map.  This does not include the terminating 0,0 entry
+ * or any other (0,0) entries reserved for expansion.
+ *
+ * returns:
+ *     the number of entries
+ */
+int fdt_num_mem_rsv(const void *fdt);
+
+/**
+ * fdt_get_mem_rsv - retrieve one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: pointers to 64-bit variables
+ *
+ * On success, *address and *size will contain the address and size of
+ * the n-th reserve map entry from the device tree blob, in
+ * native-endian format.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size);
+
+/**
+ * fdt_subnode_offset_namelen - find a subnode based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_subnode_offset(), but only examine the first
+ * namelen characters of name for matching the subnode name.  This is
+ * useful for finding subnodes based on a portion of a larger string,
+ * such as a full path.
+ */
+int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
+			       const char *name, int namelen);
+/**
+ * fdt_subnode_offset - find a subnode of a given node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_subnode_offset() finds a subnode of the node at structure block
+ * offset parentoffset with the given name.  name may include a unit
+ * address, in which case fdt_subnode_offset() will find the subnode
+ * with that unit address, or the unit address may be omitted, in
+ * which case fdt_subnode_offset() will find an arbitrary subnode
+ * whose name excluding unit address matches the given name.
+ *
+ * returns:
+ *	structure block offset of the requested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_path_offset - find a tree node by its full path
+ * @fdt: pointer to the device tree blob
+ * @path: full path of the node to locate
+ *
+ * fdt_path_offset() finds a node of a given path in the device tree.
+ * Each path component may omit the unit address portion, but the
+ * results of this are undefined if any such path component is
+ * ambiguous (that is if there are multiple nodes at the relevant
+ * level matching the given component, differentiated only by unit
+ * address).
+ *
+ * returns:
+ *	structure block offset of the node with the requested path (>=0), on success
+ *	-FDT_ERR_BADPATH, given path does not begin with '/' or is invalid
+ *	-FDT_ERR_NOTFOUND, if the requested node does not exist
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_path_offset(const void *fdt, const char *path);
+
+/**
+ * fdt_get_name - retrieve the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the starting node
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_name() retrieves the name (including unit address) of the
+ * device tree node at structure block offset nodeoffset.  If lenp is
+ * non-NULL, the length of this name is also returned, in the integer
+ * pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the node's name, on success
+ *		If lenp is non-NULL, *lenp contains the length of that name (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE, standard meanings
+ */
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
+
+/**
+ * fdt_first_property_offset - find the offset of a node's first property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ *
+ * fdt_first_property_offset() finds the first property of the node at
+ * the given structure block offset.
+ *
+ * returns:
+ *	structure block offset of the property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested node has no properties
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_first_property_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_next_property_offset - step through a node's properties
+ * @fdt: pointer to the device tree blob
+ * @offset: structure block offset of a property
+ *
+ * fdt_next_property_offset() finds the property immediately after the
+ * one at the given structure block offset.  This will be a property
+ * of the same node as the given property.
+ *
+ * returns:
+ *	structure block offset of the next property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the given property is the last in its node
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_next_property_offset(const void *fdt, int offset);
+
+/**
+ * fdt_get_property_by_offset - retrieve the property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @offset: offset of the property to retrieve
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property_by_offset() retrieves a pointer to the
+ * fdt_property structure within the device tree blob at the given
+ * offset.  If lenp is non-NULL, the length of the property value is
+ * also returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp);
+
+/**
+ * fdt_get_property_namelen - find a property based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_get_property_namelen(), but only examine the first
+ * namelen characters of name for matching the property name.
+ */
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int nodeoffset,
+						    const char *name,
+						    int namelen, int *lenp);
+
+/**
+ * fdt_get_property - find a given property in a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property() retrieves a pointer to the fdt_property
+ * structure within the device tree blob corresponding to the property
+ * named 'name' of the node at offset nodeoffset.  If lenp is
+ * non-NULL, the length of the property value is also returned, in the
+ * integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
+					    const char *name, int *lenp);
+static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,
+						      const char *name,
+						      int *lenp)
+{
+	return (struct fdt_property *)(uintptr_t)
+		fdt_get_property(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_getprop_by_offset - retrieve the value of a property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @ffset: offset of the property to read
+ * @namep: pointer to a string variable (will be overwritten) or NULL
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop_by_offset() retrieves a pointer to the value of the
+ * property at structure block offset 'offset' (this will be a pointer
+ * to within the device blob itself, not a copy of the value).  If
+ * lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.  If namep is non-NULL,
+ * the property's namne will also be returned in the char * pointed to
+ * by namep (this will be a pointer to within the device tree's string
+ * block, not a new copy of the name).
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *		if namep is non-NULL *namep contiains a pointer to the property
+ *		name.
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp);
+
+/**
+ * fdt_getprop_namelen - get property value based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_getprop(), but only examine the first namelen
+ * characters of name for matching the property name.
+ */
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp);
+
+/**
+ * fdt_getprop - retrieve the value of a given property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop() retrieves a pointer to the value of the property
+ * named 'name' of the node at offset nodeoffset (this will be a
+ * pointer to within the device blob itself, not a copy of the value).
+ * If lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp);
+static inline void *fdt_getprop_w(void *fdt, int nodeoffset,
+				  const char *name, int *lenp)
+{
+	return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_get_phandle - retrieve the phandle of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the node
+ *
+ * fdt_get_phandle() retrieves the phandle of the device tree node at
+ * structure block offset nodeoffset.
+ *
+ * returns:
+ *	the phandle of the node at nodeoffset, on success (!= 0, != -1)
+ *	0, if the node has no phandle, or another error occurs
+ */
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_get_alias_namelen - get alias based on substring
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_get_alias(), but only examine the first namelen
+ * characters of name for matching the alias name.
+ */
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen);
+
+/**
+ * fdt_get_alias - retreive the path referenced by a given alias
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ *
+ * fdt_get_alias() retrieves the value of a given alias.  That is, the
+ * value of the property named 'name' in the node /aliases.
+ *
+ * returns:
+ *	a pointer to the expansion of the alias named 'name', of it exists
+ *	NULL, if the given alias or the /aliases node does not exist
+ */
+const char *fdt_get_alias(const void *fdt, const char *name);
+
+/**
+ * fdt_get_path - determine the full path of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose path to find
+ * @buf: character buffer to contain the returned path (will be overwritten)
+ * @buflen: size of the character buffer at buf
+ *
+ * fdt_get_path() computes the full path of the node at offset
+ * nodeoffset, and records that path in the buffer at buf.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	0, on success
+ *		buf contains the absolute path of the node at
+ *		nodeoffset, as a NUL-terminated string.
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1)
+ *		characters and will not fit in the given buffer.
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);
+
+/**
+ * fdt_supernode_atdepth_offset - find a specific ancestor of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ * @supernodedepth: depth of the ancestor to find
+ * @nodedepth: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_supernode_atdepth_offset() finds an ancestor of the given node
+ * at a specific depth from the root (where the root itself has depth
+ * 0, its immediate subnodes depth 1 and so forth).  So
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL);
+ * will always return 0, the offset of the root node.  If the node at
+ * nodeoffset has depth D, then:
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL);
+ * will return nodeoffset itself.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+
+ *	structure block offset of the node at node offset's ancestor
+ *		of depth supernodedepth (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+*	-FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth);
+
+/**
+ * fdt_node_depth - find the depth of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_node_depth() finds the depth of a given node.  The root node
+ * has depth 0, its immediate subnodes depth 1 and so forth.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	depth of the node at nodeoffset (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_depth(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_parent_offset - find the parent of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_parent_offset() locates the parent node of a given node (that
+ * is, it finds the offset of the node which contains the node at
+ * nodeoffset as a subnode).
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset, *twice*.
+ *
+ * returns:
+ *	structure block offset of the parent of the node at nodeoffset
+ *		(>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_parent_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_node_offset_by_prop_value - find nodes with a given property value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @propname: property name to check
+ * @propval: property value to search for
+ * @proplen: length of the value in propval
+ *
+ * fdt_node_offset_by_prop_value() returns the offset of the first
+ * node after startoffset, which has a property named propname whose
+ * value is of length proplen and has value equal to propval; or if
+ * startoffset is -1, the very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_prop_value(fdt, -1, propname,
+ *					       propval, proplen);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_prop_value(fdt, offset, propname,
+ *						       propval, proplen);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen);
+
+/**
+ * fdt_node_offset_by_phandle - find the node with a given phandle
+ * @fdt: pointer to the device tree blob
+ * @phandle: phandle value
+ *
+ * fdt_node_offset_by_phandle() returns the offset of the node
+ * which has the given phandle value.  If there is more than one node
+ * in the tree with the given phandle (an invalid tree), results are
+ * undefined.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0), on success
+ *	-FDT_ERR_NOTFOUND, no node with that phandle exists
+ *	-FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);
+
+/**
+ * fdt_node_check_compatible: check a node's compatible property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of a tree node
+ * @compatible: string to match against
+ *
+ *
+ * fdt_node_check_compatible() returns 0 if the given node contains a
+ * 'compatible' property with the given string as one of its elements,
+ * it returns non-zero otherwise, or on error.
+ *
+ * returns:
+ *	0, if the node has a 'compatible' property listing the given string
+ *	1, if the node has a 'compatible' property, but it does not list
+ *		the given string
+ *	-FDT_ERR_NOTFOUND, if the given node has no 'compatible' property
+ * 	-FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible);
+
+/**
+ * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @compatible: 'compatible' string to match against
+ *
+ * fdt_node_offset_by_compatible() returns the offset of the first
+ * node after startoffset, which has a 'compatible' property which
+ * lists the given compatible string; or if startoffset is -1, the
+ * very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_compatible(fdt, -1, compatible);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_compatible(fdt, offset, compatible);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible);
+
+/**********************************************************************/
+/* Write-in-place functions                                           */
+/**********************************************************************/
+
+/**
+ * fdt_setprop_inplace - change a property's value, but not its size
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to replace the property value with
+ * @len: length of the property value
+ *
+ * fdt_setprop_inplace() replaces the value of a given property with
+ * the data in val, of length len.  This function cannot change the
+ * size of a property, and so will only work if len is equal to the
+ * current length of the property.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if len is not equal to the property's current length
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len);
+
+/**
+ * fdt_setprop_inplace_cell - change the value of a single-cell property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: cell (32-bit integer) value to replace the property with
+ *
+ * fdt_setprop_inplace_cell() replaces the value of a given property
+ * with the 32-bit integer cell value in val, converting val to
+ * big-endian if necessary.  This function cannot change the size of a
+ * property, and so will only work if the property already exists and
+ * has length 4.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if the property's length is not equal to 4
+  *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
+					   const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_nop_property - replace a property with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_nop_property() will replace a given property's representation
+ * in the blob with FDT_NOP tags, effectively removing it from the
+ * tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the property, and will not alter or move any other part of the
+ * tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_nop_node - replace a node (subtree) with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_nop_node() will replace a given node's representation in the
+ * blob, including all its subnodes, if any, with FDT_NOP tags,
+ * effectively removing it from the tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the node and its properties and subnodes, and will not alter or
+ * move any other part of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Sequential write functions                                         */
+/**********************************************************************/
+
+int fdt_create(void *buf, int bufsize);
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
+int fdt_finish_reservemap(void *fdt);
+int fdt_begin_node(void *fdt, const char *name);
+int fdt_property(void *fdt, const char *name, const void *val, int len);
+static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_property(fdt, name, &val, sizeof(val));
+}
+#define fdt_property_string(fdt, name, str) \
+	fdt_property(fdt, name, str, strlen(str)+1)
+int fdt_end_node(void *fdt);
+int fdt_finish(void *fdt);
+
+/**********************************************************************/
+/* Read-write functions                                               */
+/**********************************************************************/
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize);
+int fdt_pack(void *fdt);
+
+/**
+ * fdt_add_mem_rsv - add one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: 64-bit values (native endian)
+ *
+ * Adds a reserve map entry to the given blob reserving a region at
+ * address address of length size.
+ *
+ * This function will insert data into the reserve map and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new reservation entry
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size);
+
+/**
+ * fdt_del_mem_rsv - remove a memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @n: entry to remove
+ *
+ * fdt_del_mem_rsv() removes the n-th memory reserve map entry from
+ * the blob.
+ *
+ * This function will delete data from the reservation table and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there
+ *		are less than n+1 reserve map entries)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_mem_rsv(void *fdt, int n);
+
+/**
+ * fdt_set_name - change the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ * @name: name to give the node
+ *
+ * fdt_set_name() replaces the name (including unit address, if any)
+ * of the given node with the given string.  NOTE: this function can't
+ * efficiently check if the new name is unique amongst the given
+ * node's siblings; results are undefined if this function is invoked
+ * with a name equal to one of the given node's siblings.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob
+ *		to contain the new name
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_set_name(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_setprop - create or change a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to set the property value to
+ * @len: length of the property value
+ *
+ * fdt_setprop() sets the value of the named property in the given
+ * node to the given value and length, creating the property if it
+ * does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len);
+
+/**
+ * fdt_setprop_cell - set a property to a single cell value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 32-bit integer value for the property (native endian)
+ *
+ * fdt_setprop_cell() sets the value of the named property in the
+ * given node to the given cell value (converting to big-endian if
+ * necessary), or creates a new property with that value if it does
+ * not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,
+				   uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_string - set a property to a string value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @str: string value for the property
+ *
+ * fdt_setprop_string() sets the value of the named property in the
+ * given node to the given string value (using the length of the
+ * string to determine the new length of the property), or creates a
+ * new property with that value if it does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+#define fdt_setprop_string(fdt, nodeoffset, name, str) \
+	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
+
+/**
+ * fdt_delprop - delete a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_del_property() will delete the given property.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_delprop(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_add_subnode_namelen - creates a new node based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_add_subnode(), but use only the first namelen
+ * characters of name as the name of the new node.  This is useful for
+ * creating subnodes based on a portion of a larger string, such as a
+ * full path.
+ */
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen);
+
+/**
+ * fdt_add_subnode - creates a new node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_add_subnode() creates a new node as a subnode of the node at
+ * structure block offset parentoffset, with the given name (which
+ * should include the unit address, if any).
+ *
+ * This function will insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+
+ * returns:
+ *	structure block offset of the created nodeequested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *	-FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of
+ *		the given name
+ *	-FDT_ERR_NOSPACE, if there is insufficient free space in the
+ *		blob to contain the new node
+ *	-FDT_ERR_NOSPACE
+ *	-FDT_ERR_BADLAYOUT
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_del_node - delete a node (subtree)
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_del_node() will remove the given node, including all its
+ * subnodes if any, from the blob.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Debugging / informational functions                                */
+/**********************************************************************/
+
+const char *fdt_strerror(int errval);
+
+#endif /* _LIBFDT_H */
diff --git a/xen/common/libfdt/libfdt_env.h b/xen/common/libfdt/libfdt_env.h
new file mode 100644
index 0000000..449bf60
--- /dev/null
+++ b/xen/common/libfdt/libfdt_env.h
@@ -0,0 +1,23 @@
+#ifndef _LIBFDT_ENV_H
+#define _LIBFDT_ENV_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define _B(n)	((unsigned long long)((uint8_t *)&x)[n])
+static inline uint32_t fdt32_to_cpu(uint32_t x)
+{
+	return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
+}
+#define cpu_to_fdt32(x) fdt32_to_cpu(x)
+
+static inline uint64_t fdt64_to_cpu(uint64_t x)
+{
+	return (_B(0) << 56) | (_B(1) << 48) | (_B(2) << 40) | (_B(3) << 32)
+		| (_B(4) << 24) | (_B(5) << 16) | (_B(6) << 8) | _B(7);
+}
+#define cpu_to_fdt64(x) fdt64_to_cpu(x)
+#undef _B
+
+#endif /* _LIBFDT_ENV_H */
diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
new file mode 100644
index 0000000..381133b
--- /dev/null
+++ b/xen/common/libfdt/libfdt_internal.h
@@ -0,0 +1,95 @@
+#ifndef _LIBFDT_INTERNAL_H
+#define _LIBFDT_INTERNAL_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <fdt.h>
+
+#define FDT_ALIGN(x, a)		(((x) + (a) - 1) & ~((a) - 1))
+#define FDT_TAGALIGN(x)		(FDT_ALIGN((x), FDT_TAGSIZE))
+
+#define FDT_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = fdt_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+int _fdt_check_node_offset(const void *fdt, int offset);
+int _fdt_check_prop_offset(const void *fdt, int offset);
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
+int _fdt_node_end_offset(void *fdt, int nodeoffset);
+
+static inline const void *_fdt_offset_ptr(const void *fdt, int offset)
+{
+	return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;
+}
+
+static inline void *_fdt_offset_ptr_w(void *fdt, int offset)
+{
+	return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);
+}
+
+static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)
+{
+	const struct fdt_reserve_entry *rsv_table =
+		(const struct fdt_reserve_entry *)
+		((const char *)fdt + fdt_off_mem_rsvmap(fdt));
+
+	return rsv_table + n;
+}
+static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)
+{
+	return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);
+}
+
+#define FDT_SW_MAGIC		(~FDT_MAGIC)
+
+#endif /* _LIBFDT_INTERNAL_H */
diff --git a/xen/common/libfdt/version.lds b/xen/common/libfdt/version.lds
new file mode 100644
index 0000000..3c3994e
--- /dev/null
+++ b/xen/common/libfdt/version.lds
@@ -0,0 +1,54 @@
+LIBFDT_1.2 {
+	global:
+		fdt_next_node;
+		fdt_check_header;
+		fdt_move;
+		fdt_string;
+		fdt_num_mem_rsv;
+		fdt_get_mem_rsv;
+		fdt_subnode_offset_namelen;
+		fdt_subnode_offset;
+		fdt_path_offset;
+		fdt_get_name;
+		fdt_get_property_namelen;
+		fdt_get_property;
+		fdt_getprop_namelen;
+		fdt_getprop;
+		fdt_get_phandle;
+		fdt_get_alias_namelen;
+		fdt_get_alias;
+		fdt_get_path;
+		fdt_supernode_atdepth_offset;
+		fdt_node_depth;
+		fdt_parent_offset;
+		fdt_node_offset_by_prop_value;
+		fdt_node_offset_by_phandle;
+		fdt_node_check_compatible;
+		fdt_node_offset_by_compatible;
+		fdt_setprop_inplace;
+		fdt_nop_property;
+		fdt_nop_node;
+		fdt_create;
+		fdt_add_reservemap_entry;
+		fdt_finish_reservemap;
+		fdt_begin_node;
+		fdt_property;
+		fdt_end_node;
+		fdt_finish;
+		fdt_open_into;
+		fdt_pack;
+		fdt_add_mem_rsv;
+		fdt_del_mem_rsv;
+		fdt_set_name;
+		fdt_setprop;
+		fdt_delprop;
+		fdt_add_subnode_namelen;
+		fdt_add_subnode;
+		fdt_del_node;
+		fdt_strerror;
+		fdt_offset_ptr;
+		fdt_next_tag;
+
+	local:
+		*;
+};
-- 
1.7.2.5


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

From xen-devel-bounces@lists.xensource.com Fri Feb 10 13:38:49 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Feb 2012 13:38:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RvqgM-0000Yw-P0; Fri, 10 Feb 2012 13:38:34 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Ian.Campbell@citrix.com>) id 1RvqgK-0000YU-65
	for xen-devel@lists.xensource.com; Fri, 10 Feb 2012 13:38:33 +0000
Received: from [85.158.139.83:60301] by server-2.bemta-5.messagelabs.com id
	BD/EA-20725-7DD153F4; Fri, 10 Feb 2012 13:38:31 +0000
X-Env-Sender: Ian.Campbell@citrix.com
X-Msg-Ref: server-3.tower-182.messagelabs.com!1328881109!14543890!1
X-Originating-IP: [62.200.22.115]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjIuMjAwLjIyLjExNSA9PiA4NTEyNw==\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25113 invoked from network); 10 Feb 2012 13:38:29 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (62.200.22.115)
	by server-3.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	10 Feb 2012 13:38:29 -0000
X-IronPort-AV: E=Sophos;i="4.73,396,1325462400"; d="scan'208";a="10622471"
Received: from lonpmailmx01.citrite.net ([10.30.203.162])
	by LONPIPO01.EU.CITRIX.COM with ESMTP/TLS/RC4-MD5;
	10 Feb 2012 13:38:28 +0000
Received: from [10.80.2.42] (10.80.2.42) by LONPMAILMX01.citrite.net
	(10.30.203.162) with Microsoft SMTP Server id 8.3.213.0;
	Fri, 10 Feb 2012 13:38:28 +0000
Message-ID: <1328881106.6133.266.camel@zakaz.uk.xensource.com>
From: Ian Campbell <Ian.Campbell@citrix.com>
To: David Vrabel <david.vrabel@citrix.com>, Keir Fraser <keir@xen.org>
Date: Fri, 10 Feb 2012 13:38:26 +0000
In-Reply-To: <1328879024-5621-2-git-send-email-david.vrabel@citrix.com>
References: <1328879024-5621-1-git-send-email-david.vrabel@citrix.com>
	<1328879024-5621-2-git-send-email-david.vrabel@citrix.com>
Organization: Citrix Systems, Inc.
X-Mailer: Evolution 3.2.2-1 
MIME-Version: 1.0
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [Xen-devel] [PATCH 1/8] libfdt: add version 1.3.0
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

On Fri, 2012-02-10 at 13:03 +0000, David Vrabel wrote:
> From: David Vrabel <david.vrabel@citrix.com>
> 
> Add libfdt 1.3.0 from http://git.jdl.com/gitweb/?p=dtc.git
> 
> This will be used by Xen to parse the DTBs provided by bootloaders on
> ARM platforms.
> 
> Signed-off-by: David Vrabel <david.vrabel@citrix.com>

Seems reasonable to me. I'd like to see an Ack from Keir before I commit
this and the following 2 xen/common/mumble patches (or have Keir take
them directly).

Ian.

> ---
>  xen/common/libfdt/Makefile.libfdt   |   10 +
>  xen/common/libfdt/TODO              |    3 +
>  xen/common/libfdt/fdt.c             |  222 +++++++
>  xen/common/libfdt/fdt.h             |   60 ++
>  xen/common/libfdt/fdt_ro.c          |  574 ++++++++++++++++
>  xen/common/libfdt/fdt_rw.c          |  465 +++++++++++++
>  xen/common/libfdt/fdt_strerror.c    |   96 +++
>  xen/common/libfdt/fdt_sw.c          |  256 ++++++++
>  xen/common/libfdt/fdt_wip.c         |  118 ++++
>  xen/common/libfdt/libfdt.h          | 1235 +++++++++++++++++++++++++++++++++++
>  xen/common/libfdt/libfdt_env.h      |   23 +
>  xen/common/libfdt/libfdt_internal.h |   95 +++
>  xen/common/libfdt/version.lds       |   54 ++
>  13 files changed, 3211 insertions(+), 0 deletions(-)
>  create mode 100644 xen/common/libfdt/Makefile.libfdt
>  create mode 100644 xen/common/libfdt/TODO
>  create mode 100644 xen/common/libfdt/fdt.c
>  create mode 100644 xen/common/libfdt/fdt.h
>  create mode 100644 xen/common/libfdt/fdt_ro.c
>  create mode 100644 xen/common/libfdt/fdt_rw.c
>  create mode 100644 xen/common/libfdt/fdt_strerror.c
>  create mode 100644 xen/common/libfdt/fdt_sw.c
>  create mode 100644 xen/common/libfdt/fdt_wip.c
>  create mode 100644 xen/common/libfdt/libfdt.h
>  create mode 100644 xen/common/libfdt/libfdt_env.h
>  create mode 100644 xen/common/libfdt/libfdt_internal.h
>  create mode 100644 xen/common/libfdt/version.lds
> 
> diff --git a/xen/common/libfdt/Makefile.libfdt b/xen/common/libfdt/Makefile.libfdt
> new file mode 100644
> index 0000000..d55a6f8
> --- /dev/null
> +++ b/xen/common/libfdt/Makefile.libfdt
> @@ -0,0 +1,10 @@
> +# Makefile.libfdt
> +#
> +# This is not a complete Makefile of itself.  Instead, it is designed to
> +# be easily embeddable into other systems of Makefiles.
> +#
> +LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
> +LIBFDT_INCLUDES = fdt.h libfdt.h
> +LIBFDT_VERSION = version.lds
> +LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
> +LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
> diff --git a/xen/common/libfdt/TODO b/xen/common/libfdt/TODO
> new file mode 100644
> index 0000000..288437e
> --- /dev/null
> +++ b/xen/common/libfdt/TODO
> @@ -0,0 +1,3 @@
> +- Tree traversal functions
> +- Graft function
> +- Complete libfdt.h documenting comments
> diff --git a/xen/common/libfdt/fdt.c b/xen/common/libfdt/fdt.c
> new file mode 100644
> index 0000000..e56833a
> --- /dev/null
> +++ b/xen/common/libfdt/fdt.c
> @@ -0,0 +1,222 @@
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include "libfdt_env.h"
> +
> +#include <fdt.h>
> +#include <libfdt.h>
> +
> +#include "libfdt_internal.h"
> +
> +int fdt_check_header(const void *fdt)
> +{
> +       if (fdt_magic(fdt) == FDT_MAGIC) {
> +               /* Complete tree */
> +               if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)
> +                       return -FDT_ERR_BADVERSION;
> +               if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)
> +                       return -FDT_ERR_BADVERSION;
> +       } else if (fdt_magic(fdt) == FDT_SW_MAGIC) {
> +               /* Unfinished sequential-write blob */
> +               if (fdt_size_dt_struct(fdt) == 0)
> +                       return -FDT_ERR_BADSTATE;
> +       } else {
> +               return -FDT_ERR_BADMAGIC;
> +       }
> +
> +       return 0;
> +}
> +
> +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)
> +{
> +       const char *p;
> +
> +       if (fdt_version(fdt) >= 0x11)
> +               if (((offset + len) < offset)
> +                   || ((offset + len) > fdt_size_dt_struct(fdt)))
> +                       return NULL;
> +
> +       p = _fdt_offset_ptr(fdt, offset);
> +
> +       if (p + len < p)
> +               return NULL;
> +       return p;
> +}
> +
> +uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)
> +{
> +       const uint32_t *tagp, *lenp;
> +       uint32_t tag;
> +       int offset = startoffset;
> +       const char *p;
> +
> +       *nextoffset = -FDT_ERR_TRUNCATED;
> +       tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE);
> +       if (!tagp)
> +               return FDT_END; /* premature end */
> +       tag = fdt32_to_cpu(*tagp);
> +       offset += FDT_TAGSIZE;
> +
> +       *nextoffset = -FDT_ERR_BADSTRUCTURE;
> +       switch (tag) {
> +       case FDT_BEGIN_NODE:
> +               /* skip name */
> +               do {
> +                       p = fdt_offset_ptr(fdt, offset++, 1);
> +               } while (p && (*p != '\0'));
> +               if (!p)
> +                       return FDT_END; /* premature end */
> +               break;
> +
> +       case FDT_PROP:
> +               lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp));
> +               if (!lenp)
> +                       return FDT_END; /* premature end */
> +               /* skip-name offset, length and value */
> +               offset += sizeof(struct fdt_property) - FDT_TAGSIZE
> +                       + fdt32_to_cpu(*lenp);
> +               break;
> +
> +       case FDT_END:
> +       case FDT_END_NODE:
> +       case FDT_NOP:
> +               break;
> +
> +       default:
> +               return FDT_END;
> +       }
> +
> +       if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset))
> +               return FDT_END; /* premature end */
> +
> +       *nextoffset = FDT_TAGALIGN(offset);
> +       return tag;
> +}
> +
> +int _fdt_check_node_offset(const void *fdt, int offset)
> +{
> +       if ((offset < 0) || (offset % FDT_TAGSIZE)
> +           || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE))
> +               return -FDT_ERR_BADOFFSET;
> +
> +       return offset;
> +}
> +
> +int _fdt_check_prop_offset(const void *fdt, int offset)
> +{
> +       if ((offset < 0) || (offset % FDT_TAGSIZE)
> +           || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP))
> +               return -FDT_ERR_BADOFFSET;
> +
> +       return offset;
> +}
> +
> +int fdt_next_node(const void *fdt, int offset, int *depth)
> +{
> +       int nextoffset = 0;
> +       uint32_t tag;
> +
> +       if (offset >= 0)
> +               if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0)
> +                       return nextoffset;
> +
> +       do {
> +               offset = nextoffset;
> +               tag = fdt_next_tag(fdt, offset, &nextoffset);
> +
> +               switch (tag) {
> +               case FDT_PROP:
> +               case FDT_NOP:
> +                       break;
> +
> +               case FDT_BEGIN_NODE:
> +                       if (depth)
> +                               (*depth)++;
> +                       break;
> +
> +               case FDT_END_NODE:
> +                       if (depth && ((--(*depth)) < 0))
> +                               return nextoffset;
> +                       break;
> +
> +               case FDT_END:
> +                       if ((nextoffset >= 0)
> +                           || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))
> +                               return -FDT_ERR_NOTFOUND;
> +                       else
> +                               return nextoffset;
> +               }
> +       } while (tag != FDT_BEGIN_NODE);
> +
> +       return offset;
> +}
> +
> +const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)
> +{
> +       int len = strlen(s) + 1;
> +       const char *last = strtab + tabsize - len;
> +       const char *p;
> +
> +       for (p = strtab; p <= last; p++)
> +               if (memcmp(p, s, len) == 0)
> +                       return p;
> +       return NULL;
> +}
> +
> +int fdt_move(const void *fdt, void *buf, int bufsize)
> +{
> +       FDT_CHECK_HEADER(fdt);
> +
> +       if (fdt_totalsize(fdt) > bufsize)
> +               return -FDT_ERR_NOSPACE;
> +
> +       memmove(buf, fdt, fdt_totalsize(fdt));
> +       return 0;
> +}
> diff --git a/xen/common/libfdt/fdt.h b/xen/common/libfdt/fdt.h
> new file mode 100644
> index 0000000..48ccfd9
> --- /dev/null
> +++ b/xen/common/libfdt/fdt.h
> @@ -0,0 +1,60 @@
> +#ifndef _FDT_H
> +#define _FDT_H
> +
> +#ifndef __ASSEMBLY__
> +
> +struct fdt_header {
> +       uint32_t magic;                  /* magic word FDT_MAGIC */
> +       uint32_t totalsize;              /* total size of DT block */
> +       uint32_t off_dt_struct;          /* offset to structure */
> +       uint32_t off_dt_strings;         /* offset to strings */
> +       uint32_t off_mem_rsvmap;         /* offset to memory reserve map */
> +       uint32_t version;                /* format version */
> +       uint32_t last_comp_version;      /* last compatible version */
> +
> +       /* version 2 fields below */
> +       uint32_t boot_cpuid_phys;        /* Which physical CPU id we're
> +                                           booting on */
> +       /* version 3 fields below */
> +       uint32_t size_dt_strings;        /* size of the strings block */
> +
> +       /* version 17 fields below */
> +       uint32_t size_dt_struct;         /* size of the structure block */
> +};
> +
> +struct fdt_reserve_entry {
> +       uint64_t address;
> +       uint64_t size;
> +};
> +
> +struct fdt_node_header {
> +       uint32_t tag;
> +       char name[0];
> +};
> +
> +struct fdt_property {
> +       uint32_t tag;
> +       uint32_t len;
> +       uint32_t nameoff;
> +       char data[0];
> +};
> +
> +#endif /* !__ASSEMBLY */
> +
> +#define FDT_MAGIC      0xd00dfeed      /* 4: version, 4: total size */
> +#define FDT_TAGSIZE    sizeof(uint32_t)
> +
> +#define FDT_BEGIN_NODE 0x1             /* Start node: full name */
> +#define FDT_END_NODE   0x2             /* End node */
> +#define FDT_PROP       0x3             /* Property: name off,
> +                                          size, content */
> +#define FDT_NOP                0x4             /* nop */
> +#define FDT_END                0x9
> +
> +#define FDT_V1_SIZE    (7*sizeof(uint32_t))
> +#define FDT_V2_SIZE    (FDT_V1_SIZE + sizeof(uint32_t))
> +#define FDT_V3_SIZE    (FDT_V2_SIZE + sizeof(uint32_t))
> +#define FDT_V16_SIZE   FDT_V3_SIZE
> +#define FDT_V17_SIZE   (FDT_V16_SIZE + sizeof(uint32_t))
> +
> +#endif /* _FDT_H */
> diff --git a/xen/common/libfdt/fdt_ro.c b/xen/common/libfdt/fdt_ro.c
> new file mode 100644
> index 0000000..02b6d68
> --- /dev/null
> +++ b/xen/common/libfdt/fdt_ro.c
> @@ -0,0 +1,574 @@
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include "libfdt_env.h"
> +
> +#include <fdt.h>
> +#include <libfdt.h>
> +
> +#include "libfdt_internal.h"
> +
> +static int _fdt_nodename_eq(const void *fdt, int offset,
> +                           const char *s, int len)
> +{
> +       const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1);
> +
> +       if (! p)
> +               /* short match */
> +               return 0;
> +
> +       if (memcmp(p, s, len) != 0)
> +               return 0;
> +
> +       if (p[len] == '\0')
> +               return 1;
> +       else if (!memchr(s, '@', len) && (p[len] == '@'))
> +               return 1;
> +       else
> +               return 0;
> +}
> +
> +const char *fdt_string(const void *fdt, int stroffset)
> +{
> +       return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset;
> +}
> +
> +static int _fdt_string_eq(const void *fdt, int stroffset,
> +                         const char *s, int len)
> +{
> +       const char *p = fdt_string(fdt, stroffset);
> +
> +       return (strlen(p) == len) && (memcmp(p, s, len) == 0);
> +}
> +
> +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size)
> +{
> +       FDT_CHECK_HEADER(fdt);
> +       *address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address);
> +       *size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size);
> +       return 0;
> +}
> +
> +int fdt_num_mem_rsv(const void *fdt)
> +{
> +       int i = 0;
> +
> +       while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0)
> +               i++;
> +       return i;
> +}
> +
> +static int _nextprop(const void *fdt, int offset)
> +{
> +       uint32_t tag;
> +       int nextoffset;
> +
> +       do {
> +               tag = fdt_next_tag(fdt, offset, &nextoffset);
> +
> +               switch (tag) {
> +               case FDT_END:
> +                       if (nextoffset >= 0)
> +                               return -FDT_ERR_BADSTRUCTURE;
> +                       else
> +                               return nextoffset;
> +
> +               case FDT_PROP:
> +                       return offset;
> +               }
> +               offset = nextoffset;
> +       } while (tag == FDT_NOP);
> +
> +       return -FDT_ERR_NOTFOUND;
> +}
> +
> +int fdt_subnode_offset_namelen(const void *fdt, int offset,
> +                              const char *name, int namelen)
> +{
> +       int depth;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       for (depth = 0;
> +            (offset >= 0) && (depth >= 0);
> +            offset = fdt_next_node(fdt, offset, &depth))
> +               if ((depth == 1)
> +                   && _fdt_nodename_eq(fdt, offset, name, namelen))
> +                       return offset;
> +
> +       if (depth < 0)
> +               return -FDT_ERR_NOTFOUND;
> +       return offset; /* error */
> +}
> +
> +int fdt_subnode_offset(const void *fdt, int parentoffset,
> +                      const char *name)
> +{
> +       return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name));
> +}
> +
> +int fdt_path_offset(const void *fdt, const char *path)
> +{
> +       const char *end = path + strlen(path);
> +       const char *p = path;
> +       int offset = 0;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       /* see if we have an alias */
> +       if (*path != '/') {
> +               const char *q = strchr(path, '/');
> +
> +               if (!q)
> +                       q = end;
> +
> +               p = fdt_get_alias_namelen(fdt, p, q - p);
> +               if (!p)
> +                       return -FDT_ERR_BADPATH;
> +               offset = fdt_path_offset(fdt, p);
> +
> +               p = q;
> +       }
> +
> +       while (*p) {
> +               const char *q;
> +
> +               while (*p == '/')
> +                       p++;
> +               if (! *p)
> +                       return offset;
> +               q = strchr(p, '/');
> +               if (! q)
> +                       q = end;
> +
> +               offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p);
> +               if (offset < 0)
> +                       return offset;
> +
> +               p = q;
> +       }
> +
> +       return offset;
> +}
> +
> +const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
> +{
> +       const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset);
> +       int err;
> +
> +       if (((err = fdt_check_header(fdt)) != 0)
> +           || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0))
> +                       goto fail;
> +
> +       if (len)
> +               *len = strlen(nh->name);
> +
> +       return nh->name;
> +
> + fail:
> +       if (len)
> +               *len = err;
> +       return NULL;
> +}
> +
> +int fdt_first_property_offset(const void *fdt, int nodeoffset)
> +{
> +       int offset;
> +
> +       if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
> +               return offset;
> +
> +       return _nextprop(fdt, offset);
> +}
> +
> +int fdt_next_property_offset(const void *fdt, int offset)
> +{
> +       if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0)
> +               return offset;
> +
> +       return _nextprop(fdt, offset);
> +}
> +
> +const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
> +                                                     int offset,
> +                                                     int *lenp)
> +{
> +       int err;
> +       const struct fdt_property *prop;
> +
> +       if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) {
> +               if (lenp)
> +                       *lenp = err;
> +               return NULL;
> +       }
> +
> +       prop = _fdt_offset_ptr(fdt, offset);
> +
> +       if (lenp)
> +               *lenp = fdt32_to_cpu(prop->len);
> +
> +       return prop;
> +}
> +
> +const struct fdt_property *fdt_get_property_namelen(const void *fdt,
> +                                                   int offset,
> +                                                   const char *name,
> +                                                   int namelen, int *lenp)
> +{
> +       for (offset = fdt_first_property_offset(fdt, offset);
> +            (offset >= 0);
> +            (offset = fdt_next_property_offset(fdt, offset))) {
> +               const struct fdt_property *prop;
> +
> +               if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) {
> +                       offset = -FDT_ERR_INTERNAL;
> +                       break;
> +               }
> +               if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
> +                                  name, namelen))
> +                       return prop;
> +       }
> +
> +       if (lenp)
> +               *lenp = offset;
> +       return NULL;
> +}
> +
> +const struct fdt_property *fdt_get_property(const void *fdt,
> +                                           int nodeoffset,
> +                                           const char *name, int *lenp)
> +{
> +       return fdt_get_property_namelen(fdt, nodeoffset, name,
> +                                       strlen(name), lenp);
> +}
> +
> +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
> +                               const char *name, int namelen, int *lenp)
> +{
> +       const struct fdt_property *prop;
> +
> +       prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp);
> +       if (! prop)
> +               return NULL;
> +
> +       return prop->data;
> +}
> +
> +const void *fdt_getprop_by_offset(const void *fdt, int offset,
> +                                 const char **namep, int *lenp)
> +{
> +       const struct fdt_property *prop;
> +
> +       prop = fdt_get_property_by_offset(fdt, offset, lenp);
> +       if (!prop)
> +               return NULL;
> +       if (namep)
> +               *namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
> +       return prop->data;
> +}
> +
> +const void *fdt_getprop(const void *fdt, int nodeoffset,
> +                       const char *name, int *lenp)
> +{
> +       return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp);
> +}
> +
> +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset)
> +{
> +       const uint32_t *php;
> +       int len;
> +
> +       /* FIXME: This is a bit sub-optimal, since we potentially scan
> +        * over all the properties twice. */
> +       php = fdt_getprop(fdt, nodeoffset, "phandle", &len);
> +       if (!php || (len != sizeof(*php))) {
> +               php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len);
> +               if (!php || (len != sizeof(*php)))
> +                       return 0;
> +       }
> +
> +       return fdt32_to_cpu(*php);
> +}
> +
> +const char *fdt_get_alias_namelen(const void *fdt,
> +                                 const char *name, int namelen)
> +{
> +       int aliasoffset;
> +
> +       aliasoffset = fdt_path_offset(fdt, "/aliases");
> +       if (aliasoffset < 0)
> +               return NULL;
> +
> +       return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
> +}
> +
> +const char *fdt_get_alias(const void *fdt, const char *name)
> +{
> +       return fdt_get_alias_namelen(fdt, name, strlen(name));
> +}
> +
> +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen)
> +{
> +       int pdepth = 0, p = 0;
> +       int offset, depth, namelen;
> +       const char *name;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       if (buflen < 2)
> +               return -FDT_ERR_NOSPACE;
> +
> +       for (offset = 0, depth = 0;
> +            (offset >= 0) && (offset <= nodeoffset);
> +            offset = fdt_next_node(fdt, offset, &depth)) {
> +               while (pdepth > depth) {
> +                       do {
> +                               p--;
> +                       } while (buf[p-1] != '/');
> +                       pdepth--;
> +               }
> +
> +               if (pdepth >= depth) {
> +                       name = fdt_get_name(fdt, offset, &namelen);
> +                       if (!name)
> +                               return namelen;
> +                       if ((p + namelen + 1) <= buflen) {
> +                               memcpy(buf + p, name, namelen);
> +                               p += namelen;
> +                               buf[p++] = '/';
> +                               pdepth++;
> +                       }
> +               }
> +
> +               if (offset == nodeoffset) {
> +                       if (pdepth < (depth + 1))
> +                               return -FDT_ERR_NOSPACE;
> +
> +                       if (p > 1) /* special case so that root path is "/", not "" */
> +                               p--;
> +                       buf[p] = '\0';
> +                       return 0;
> +               }
> +       }
> +
> +       if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
> +               return -FDT_ERR_BADOFFSET;
> +       else if (offset == -FDT_ERR_BADOFFSET)
> +               return -FDT_ERR_BADSTRUCTURE;
> +
> +       return offset; /* error from fdt_next_node() */
> +}
> +
> +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
> +                                int supernodedepth, int *nodedepth)
> +{
> +       int offset, depth;
> +       int supernodeoffset = -FDT_ERR_INTERNAL;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       if (supernodedepth < 0)
> +               return -FDT_ERR_NOTFOUND;
> +
> +       for (offset = 0, depth = 0;
> +            (offset >= 0) && (offset <= nodeoffset);
> +            offset = fdt_next_node(fdt, offset, &depth)) {
> +               if (depth == supernodedepth)
> +                       supernodeoffset = offset;
> +
> +               if (offset == nodeoffset) {
> +                       if (nodedepth)
> +                               *nodedepth = depth;
> +
> +                       if (supernodedepth > depth)
> +                               return -FDT_ERR_NOTFOUND;
> +                       else
> +                               return supernodeoffset;
> +               }
> +       }
> +
> +       if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
> +               return -FDT_ERR_BADOFFSET;
> +       else if (offset == -FDT_ERR_BADOFFSET)
> +               return -FDT_ERR_BADSTRUCTURE;
> +
> +       return offset; /* error from fdt_next_node() */
> +}
> +
> +int fdt_node_depth(const void *fdt, int nodeoffset)
> +{
> +       int nodedepth;
> +       int err;
> +
> +       err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
> +       if (err)
> +               return (err < 0) ? err : -FDT_ERR_INTERNAL;
> +       return nodedepth;
> +}
> +
> +int fdt_parent_offset(const void *fdt, int nodeoffset)
> +{
> +       int nodedepth = fdt_node_depth(fdt, nodeoffset);
> +
> +       if (nodedepth < 0)
> +               return nodedepth;
> +       return fdt_supernode_atdepth_offset(fdt, nodeoffset,
> +                                           nodedepth - 1, NULL);
> +}
> +
> +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
> +                                 const char *propname,
> +                                 const void *propval, int proplen)
> +{
> +       int offset;
> +       const void *val;
> +       int len;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       /* FIXME: The algorithm here is pretty horrible: we scan each
> +        * property of a node in fdt_getprop(), then if that didn't
> +        * find what we want, we scan over them again making our way
> +        * to the next node.  Still it's the easiest to implement
> +        * approach; performance can come later. */
> +       for (offset = fdt_next_node(fdt, startoffset, NULL);
> +            offset >= 0;
> +            offset = fdt_next_node(fdt, offset, NULL)) {
> +               val = fdt_getprop(fdt, offset, propname, &len);
> +               if (val && (len == proplen)
> +                   && (memcmp(val, propval, len) == 0))
> +                       return offset;
> +       }
> +
> +       return offset; /* error from fdt_next_node() */
> +}
> +
> +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle)
> +{
> +       int offset;
> +
> +       if ((phandle == 0) || (phandle == -1))
> +               return -FDT_ERR_BADPHANDLE;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       /* FIXME: The algorithm here is pretty horrible: we
> +        * potentially scan each property of a node in
> +        * fdt_get_phandle(), then if that didn't find what
> +        * we want, we scan over them again making our way to the next
> +        * node.  Still it's the easiest to implement approach;
> +        * performance can come later. */
> +       for (offset = fdt_next_node(fdt, -1, NULL);
> +            offset >= 0;
> +            offset = fdt_next_node(fdt, offset, NULL)) {
> +               if (fdt_get_phandle(fdt, offset) == phandle)
> +                       return offset;
> +       }
> +
> +       return offset; /* error from fdt_next_node() */
> +}
> +
> +static int _fdt_stringlist_contains(const char *strlist, int listlen,
> +                                   const char *str)
> +{
> +       int len = strlen(str);
> +       const char *p;
> +
> +       while (listlen >= len) {
> +               if (memcmp(str, strlist, len+1) == 0)
> +                       return 1;
> +               p = memchr(strlist, '\0', listlen);
> +               if (!p)
> +                       return 0; /* malformed strlist.. */
> +               listlen -= (p-strlist) + 1;
> +               strlist = p + 1;
> +       }
> +       return 0;
> +}
> +
> +int fdt_node_check_compatible(const void *fdt, int nodeoffset,
> +                             const char *compatible)
> +{
> +       const void *prop;
> +       int len;
> +
> +       prop = fdt_getprop(fdt, nodeoffset, "compatible", &len);
> +       if (!prop)
> +               return len;
> +       if (_fdt_stringlist_contains(prop, len, compatible))
> +               return 0;
> +       else
> +               return 1;
> +}
> +
> +int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
> +                                 const char *compatible)
> +{
> +       int offset, err;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       /* FIXME: The algorithm here is pretty horrible: we scan each
> +        * property of a node in fdt_node_check_compatible(), then if
> +        * that didn't find what we want, we scan over them again
> +        * making our way to the next node.  Still it's the easiest to
> +        * implement approach; performance can come later. */
> +       for (offset = fdt_next_node(fdt, startoffset, NULL);
> +            offset >= 0;
> +            offset = fdt_next_node(fdt, offset, NULL)) {
> +               err = fdt_node_check_compatible(fdt, offset, compatible);
> +               if ((err < 0) && (err != -FDT_ERR_NOTFOUND))
> +                       return err;
> +               else if (err == 0)
> +                       return offset;
> +       }
> +
> +       return offset; /* error from fdt_next_node() */
> +}
> diff --git a/xen/common/libfdt/fdt_rw.c b/xen/common/libfdt/fdt_rw.c
> new file mode 100644
> index 0000000..994037b
> --- /dev/null
> +++ b/xen/common/libfdt/fdt_rw.c
> @@ -0,0 +1,465 @@
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include "libfdt_env.h"
> +
> +#include <fdt.h>
> +#include <libfdt.h>
> +
> +#include "libfdt_internal.h"
> +
> +static int _fdt_blocks_misordered(const void *fdt,
> +                             int mem_rsv_size, int struct_size)
> +{
> +       return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8))
> +               || (fdt_off_dt_struct(fdt) <
> +                   (fdt_off_mem_rsvmap(fdt) + mem_rsv_size))
> +               || (fdt_off_dt_strings(fdt) <
> +                   (fdt_off_dt_struct(fdt) + struct_size))
> +               || (fdt_totalsize(fdt) <
> +                   (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)));
> +}
> +
> +static int _fdt_rw_check_header(void *fdt)
> +{
> +       FDT_CHECK_HEADER(fdt);
> +
> +       if (fdt_version(fdt) < 17)
> +               return -FDT_ERR_BADVERSION;
> +       if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry),
> +                                  fdt_size_dt_struct(fdt)))
> +               return -FDT_ERR_BADLAYOUT;
> +       if (fdt_version(fdt) > 17)
> +               fdt_set_version(fdt, 17);
> +
> +       return 0;
> +}
> +
> +#define FDT_RW_CHECK_HEADER(fdt) \
> +       { \
> +               int err; \
> +               if ((err = _fdt_rw_check_header(fdt)) != 0) \
> +                       return err; \
> +       }
> +
> +static inline int _fdt_data_size(void *fdt)
> +{
> +       return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
> +}
> +
> +static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen)
> +{
> +       char *p = splicepoint;
> +       char *end = (char *)fdt + _fdt_data_size(fdt);
> +
> +       if (((p + oldlen) < p) || ((p + oldlen) > end))
> +               return -FDT_ERR_BADOFFSET;
> +       if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt)))
> +               return -FDT_ERR_NOSPACE;
> +       memmove(p + newlen, p + oldlen, end - p - oldlen);
> +       return 0;
> +}
> +
> +static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p,
> +                              int oldn, int newn)
> +{
> +       int delta = (newn - oldn) * sizeof(*p);
> +       int err;
> +       err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p));
> +       if (err)
> +               return err;
> +       fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta);
> +       fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
> +       return 0;
> +}
> +
> +static int _fdt_splice_struct(void *fdt, void *p,
> +                             int oldlen, int newlen)
> +{
> +       int delta = newlen - oldlen;
> +       int err;
> +
> +       if ((err = _fdt_splice(fdt, p, oldlen, newlen)))
> +               return err;
> +
> +       fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta);
> +       fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
> +       return 0;
> +}
> +
> +static int _fdt_splice_string(void *fdt, int newlen)
> +{
> +       void *p = (char *)fdt
> +               + fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
> +       int err;
> +
> +       if ((err = _fdt_splice(fdt, p, 0, newlen)))
> +               return err;
> +
> +       fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen);
> +       return 0;
> +}
> +
> +static int _fdt_find_add_string(void *fdt, const char *s)
> +{
> +       char *strtab = (char *)fdt + fdt_off_dt_strings(fdt);
> +       const char *p;
> +       char *new;
> +       int len = strlen(s) + 1;
> +       int err;
> +
> +       p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s);
> +       if (p)
> +               /* found it */
> +               return (p - strtab);
> +
> +       new = strtab + fdt_size_dt_strings(fdt);
> +       err = _fdt_splice_string(fdt, len);
> +       if (err)
> +               return err;
> +
> +       memcpy(new, s, len);
> +       return (new - strtab);
> +}
> +
> +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size)
> +{
> +       struct fdt_reserve_entry *re;
> +       int err;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt));
> +       err = _fdt_splice_mem_rsv(fdt, re, 0, 1);
> +       if (err)
> +               return err;
> +
> +       re->address = cpu_to_fdt64(address);
> +       re->size = cpu_to_fdt64(size);
> +       return 0;
> +}
> +
> +int fdt_del_mem_rsv(void *fdt, int n)
> +{
> +       struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n);
> +       int err;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       if (n >= fdt_num_mem_rsv(fdt))
> +               return -FDT_ERR_NOTFOUND;
> +
> +       err = _fdt_splice_mem_rsv(fdt, re, 1, 0);
> +       if (err)
> +               return err;
> +       return 0;
> +}
> +
> +static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name,
> +                               int len, struct fdt_property **prop)
> +{
> +       int oldlen;
> +       int err;
> +
> +       *prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
> +       if (! (*prop))
> +               return oldlen;
> +
> +       if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen),
> +                                     FDT_TAGALIGN(len))))
> +               return err;
> +
> +       (*prop)->len = cpu_to_fdt32(len);
> +       return 0;
> +}
> +
> +static int _fdt_add_property(void *fdt, int nodeoffset, const char *name,
> +                            int len, struct fdt_property **prop)
> +{
> +       int proplen;
> +       int nextoffset;
> +       int namestroff;
> +       int err;
> +
> +       if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
> +               return nextoffset;
> +
> +       namestroff = _fdt_find_add_string(fdt, name);
> +       if (namestroff < 0)
> +               return namestroff;
> +
> +       *prop = _fdt_offset_ptr_w(fdt, nextoffset);
> +       proplen = sizeof(**prop) + FDT_TAGALIGN(len);
> +
> +       err = _fdt_splice_struct(fdt, *prop, 0, proplen);
> +       if (err)
> +               return err;
> +
> +       (*prop)->tag = cpu_to_fdt32(FDT_PROP);
> +       (*prop)->nameoff = cpu_to_fdt32(namestroff);
> +       (*prop)->len = cpu_to_fdt32(len);
> +       return 0;
> +}
> +
> +int fdt_set_name(void *fdt, int nodeoffset, const char *name)
> +{
> +       char *namep;
> +       int oldlen, newlen;
> +       int err;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       namep = (char *)(uintptr_t)fdt_get_name(fdt, nodeoffset, &oldlen);
> +       if (!namep)
> +               return oldlen;
> +
> +       newlen = strlen(name);
> +
> +       err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1),
> +                                FDT_TAGALIGN(newlen+1));
> +       if (err)
> +               return err;
> +
> +       memcpy(namep, name, newlen+1);
> +       return 0;
> +}
> +
> +int fdt_setprop(void *fdt, int nodeoffset, const char *name,
> +               const void *val, int len)
> +{
> +       struct fdt_property *prop;
> +       int err;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop);
> +       if (err == -FDT_ERR_NOTFOUND)
> +               err = _fdt_add_property(fdt, nodeoffset, name, len, &prop);
> +       if (err)
> +               return err;
> +
> +       memcpy(prop->data, val, len);
> +       return 0;
> +}
> +
> +int fdt_delprop(void *fdt, int nodeoffset, const char *name)
> +{
> +       struct fdt_property *prop;
> +       int len, proplen;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
> +       if (! prop)
> +               return len;
> +
> +       proplen = sizeof(*prop) + FDT_TAGALIGN(len);
> +       return _fdt_splice_struct(fdt, prop, proplen, 0);
> +}
> +
> +int fdt_add_subnode_namelen(void *fdt, int parentoffset,
> +                           const char *name, int namelen)
> +{
> +       struct fdt_node_header *nh;
> +       int offset, nextoffset;
> +       int nodelen;
> +       int err;
> +       uint32_t tag;
> +       uint32_t *endtag;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       offset = fdt_subnode_offset_namelen(fdt, parentoffset, name, namelen);
> +       if (offset >= 0)
> +               return -FDT_ERR_EXISTS;
> +       else if (offset != -FDT_ERR_NOTFOUND)
> +               return offset;
> +
> +       /* Try to place the new node after the parent's properties */
> +       fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
> +       do {
> +               offset = nextoffset;
> +               tag = fdt_next_tag(fdt, offset, &nextoffset);
> +       } while ((tag == FDT_PROP) || (tag == FDT_NOP));
> +
> +       nh = _fdt_offset_ptr_w(fdt, offset);
> +       nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE;
> +
> +       err = _fdt_splice_struct(fdt, nh, 0, nodelen);
> +       if (err)
> +               return err;
> +
> +       nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
> +       memset(nh->name, 0, FDT_TAGALIGN(namelen+1));
> +       memcpy(nh->name, name, namelen);
> +       endtag = (uint32_t *)((char *)nh + nodelen - FDT_TAGSIZE);
> +       *endtag = cpu_to_fdt32(FDT_END_NODE);
> +
> +       return offset;
> +}
> +
> +int fdt_add_subnode(void *fdt, int parentoffset, const char *name)
> +{
> +       return fdt_add_subnode_namelen(fdt, parentoffset, name, strlen(name));
> +}
> +
> +int fdt_del_node(void *fdt, int nodeoffset)
> +{
> +       int endoffset;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       endoffset = _fdt_node_end_offset(fdt, nodeoffset);
> +       if (endoffset < 0)
> +               return endoffset;
> +
> +       return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset),
> +                                 endoffset - nodeoffset, 0);
> +}
> +
> +static void _fdt_packblocks(const char *old, char *new,
> +                           int mem_rsv_size, int struct_size)
> +{
> +       int mem_rsv_off, struct_off, strings_off;
> +
> +       mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
> +       struct_off = mem_rsv_off + mem_rsv_size;
> +       strings_off = struct_off + struct_size;
> +
> +       memmove(new + mem_rsv_off, old + fdt_off_mem_rsvmap(old), mem_rsv_size);
> +       fdt_set_off_mem_rsvmap(new, mem_rsv_off);
> +
> +       memmove(new + struct_off, old + fdt_off_dt_struct(old), struct_size);
> +       fdt_set_off_dt_struct(new, struct_off);
> +       fdt_set_size_dt_struct(new, struct_size);
> +
> +       memmove(new + strings_off, old + fdt_off_dt_strings(old),
> +               fdt_size_dt_strings(old));
> +       fdt_set_off_dt_strings(new, strings_off);
> +       fdt_set_size_dt_strings(new, fdt_size_dt_strings(old));
> +}
> +
> +int fdt_open_into(const void *fdt, void *buf, int bufsize)
> +{
> +       int err;
> +       int mem_rsv_size, struct_size;
> +       int newsize;
> +       const char *fdtstart = fdt;
> +       const char *fdtend = fdtstart + fdt_totalsize(fdt);
> +       char *tmp;
> +
> +       FDT_CHECK_HEADER(fdt);
> +
> +       mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
> +               * sizeof(struct fdt_reserve_entry);
> +
> +       if (fdt_version(fdt) >= 17) {
> +               struct_size = fdt_size_dt_struct(fdt);
> +       } else {
> +               struct_size = 0;
> +               while (fdt_next_tag(fdt, struct_size, &struct_size) != FDT_END)
> +                       ;
> +               if (struct_size < 0)
> +                       return struct_size;
> +       }
> +
> +       if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) {
> +               /* no further work necessary */
> +               err = fdt_move(fdt, buf, bufsize);
> +               if (err)
> +                       return err;
> +               fdt_set_version(buf, 17);
> +               fdt_set_size_dt_struct(buf, struct_size);
> +               fdt_set_totalsize(buf, bufsize);
> +               return 0;
> +       }
> +
> +       /* Need to reorder */
> +       newsize = FDT_ALIGN(sizeof(struct fdt_header), 8) + mem_rsv_size
> +               + struct_size + fdt_size_dt_strings(fdt);
> +
> +       if (bufsize < newsize)
> +               return -FDT_ERR_NOSPACE;
> +
> +       /* First attempt to build converted tree at beginning of buffer */
> +       tmp = buf;
> +       /* But if that overlaps with the old tree... */
> +       if (((tmp + newsize) > fdtstart) && (tmp < fdtend)) {
> +               /* Try right after the old tree instead */
> +               tmp = (char *)(uintptr_t)fdtend;
> +               if ((tmp + newsize) > ((char *)buf + bufsize))
> +                       return -FDT_ERR_NOSPACE;
> +       }
> +
> +       _fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size);
> +       memmove(buf, tmp, newsize);
> +
> +       fdt_set_magic(buf, FDT_MAGIC);
> +       fdt_set_totalsize(buf, bufsize);
> +       fdt_set_version(buf, 17);
> +       fdt_set_last_comp_version(buf, 16);
> +       fdt_set_boot_cpuid_phys(buf, fdt_boot_cpuid_phys(fdt));
> +
> +       return 0;
> +}
> +
> +int fdt_pack(void *fdt)
> +{
> +       int mem_rsv_size;
> +
> +       FDT_RW_CHECK_HEADER(fdt);
> +
> +       mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
> +               * sizeof(struct fdt_reserve_entry);
> +       _fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt));
> +       fdt_set_totalsize(fdt, _fdt_data_size(fdt));
> +
> +       return 0;
> +}
> diff --git a/xen/common/libfdt/fdt_strerror.c b/xen/common/libfdt/fdt_strerror.c
> new file mode 100644
> index 0000000..e6c3cee
> --- /dev/null
> +++ b/xen/common/libfdt/fdt_strerror.c
> @@ -0,0 +1,96 @@
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include "libfdt_env.h"
> +
> +#include <fdt.h>
> +#include <libfdt.h>
> +
> +#include "libfdt_internal.h"
> +
> +struct fdt_errtabent {
> +       const char *str;
> +};
> +
> +#define FDT_ERRTABENT(val) \
> +       [(val)] = { .str = #val, }
> +
> +static struct fdt_errtabent fdt_errtable[] = {
> +       FDT_ERRTABENT(FDT_ERR_NOTFOUND),
> +       FDT_ERRTABENT(FDT_ERR_EXISTS),
> +       FDT_ERRTABENT(FDT_ERR_NOSPACE),
> +
> +       FDT_ERRTABENT(FDT_ERR_BADOFFSET),
> +       FDT_ERRTABENT(FDT_ERR_BADPATH),
> +       FDT_ERRTABENT(FDT_ERR_BADSTATE),
> +
> +       FDT_ERRTABENT(FDT_ERR_TRUNCATED),
> +       FDT_ERRTABENT(FDT_ERR_BADMAGIC),
> +       FDT_ERRTABENT(FDT_ERR_BADVERSION),
> +       FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
> +       FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
> +};
> +#define FDT_ERRTABSIZE (sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
> +
> +const char *fdt_strerror(int errval)
> +{
> +       if (errval > 0)
> +               return "<valid offset/length>";
> +       else if (errval == 0)
> +               return "<no error>";
> +       else if (errval > -FDT_ERRTABSIZE) {
> +               const char *s = fdt_errtable[-errval].str;
> +
> +               if (s)
> +                       return s;
> +       }
> +
> +       return "<unknown error>";
> +}
> diff --git a/xen/common/libfdt/fdt_sw.c b/xen/common/libfdt/fdt_sw.c
> new file mode 100644
> index 0000000..55ebebf
> --- /dev/null
> +++ b/xen/common/libfdt/fdt_sw.c
> @@ -0,0 +1,256 @@
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include "libfdt_env.h"
> +
> +#include <fdt.h>
> +#include <libfdt.h>
> +
> +#include "libfdt_internal.h"
> +
> +static int _fdt_sw_check_header(void *fdt)
> +{
> +       if (fdt_magic(fdt) != FDT_SW_MAGIC)
> +               return -FDT_ERR_BADMAGIC;
> +       /* FIXME: should check more details about the header state */
> +       return 0;
> +}
> +
> +#define FDT_SW_CHECK_HEADER(fdt) \
> +       { \
> +               int err; \
> +               if ((err = _fdt_sw_check_header(fdt)) != 0) \
> +                       return err; \
> +       }
> +
> +static void *_fdt_grab_space(void *fdt, size_t len)
> +{
> +       int offset = fdt_size_dt_struct(fdt);
> +       int spaceleft;
> +
> +       spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt)
> +               - fdt_size_dt_strings(fdt);
> +
> +       if ((offset + len < offset) || (offset + len > spaceleft))
> +               return NULL;
> +
> +       fdt_set_size_dt_struct(fdt, offset + len);
> +       return _fdt_offset_ptr_w(fdt, offset);
> +}
> +
> +int fdt_create(void *buf, int bufsize)
> +{
> +       void *fdt = buf;
> +
> +       if (bufsize < sizeof(struct fdt_header))
> +               return -FDT_ERR_NOSPACE;
> +
> +       memset(buf, 0, bufsize);
> +
> +       fdt_set_magic(fdt, FDT_SW_MAGIC);
> +       fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION);
> +       fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION);
> +       fdt_set_totalsize(fdt,  bufsize);
> +
> +       fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header),
> +                                             sizeof(struct fdt_reserve_entry)));
> +       fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt));
> +       fdt_set_off_dt_strings(fdt, bufsize);
> +
> +       return 0;
> +}
> +
> +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size)
> +{
> +       struct fdt_reserve_entry *re;
> +       int offset;
> +
> +       FDT_SW_CHECK_HEADER(fdt);
> +
> +       if (fdt_size_dt_struct(fdt))
> +               return -FDT_ERR_BADSTATE;
> +
> +       offset = fdt_off_dt_struct(fdt);
> +       if ((offset + sizeof(*re)) > fdt_totalsize(fdt))
> +               return -FDT_ERR_NOSPACE;
> +
> +       re = (struct fdt_reserve_entry *)((char *)fdt + offset);
> +       re->address = cpu_to_fdt64(addr);
> +       re->size = cpu_to_fdt64(size);
> +
> +       fdt_set_off_dt_struct(fdt, offset + sizeof(*re));
> +
> +       return 0;
> +}
> +
> +int fdt_finish_reservemap(void *fdt)
> +{
> +       return fdt_add_reservemap_entry(fdt, 0, 0);
> +}
> +
> +int fdt_begin_node(void *fdt, const char *name)
> +{
> +       struct fdt_node_header *nh;
> +       int namelen = strlen(name) + 1;
> +
> +       FDT_SW_CHECK_HEADER(fdt);
> +
> +       nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen));
> +       if (! nh)
> +               return -FDT_ERR_NOSPACE;
> +
> +       nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
> +       memcpy(nh->name, name, namelen);
> +       return 0;
> +}
> +
> +int fdt_end_node(void *fdt)
> +{
> +       uint32_t *en;
> +
> +       FDT_SW_CHECK_HEADER(fdt);
> +
> +       en = _fdt_grab_space(fdt, FDT_TAGSIZE);
> +       if (! en)
> +               return -FDT_ERR_NOSPACE;
> +
> +       *en = cpu_to_fdt32(FDT_END_NODE);
> +       return 0;
> +}
> +
> +static int _fdt_find_add_string(void *fdt, const char *s)
> +{
> +       char *strtab = (char *)fdt + fdt_totalsize(fdt);
> +       const char *p;
> +       int strtabsize = fdt_size_dt_strings(fdt);
> +       int len = strlen(s) + 1;
> +       int struct_top, offset;
> +
> +       p = _fdt_find_string(strtab - strtabsize, strtabsize, s);
> +       if (p)
> +               return p - strtab;
> +
> +       /* Add it */
> +       offset = -strtabsize - len;
> +       struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
> +       if (fdt_totalsize(fdt) + offset < struct_top)
> +               return 0; /* no more room :( */
> +
> +       memcpy(strtab + offset, s, len);
> +       fdt_set_size_dt_strings(fdt, strtabsize + len);
> +       return offset;
> +}
> +
> +int fdt_property(void *fdt, const char *name, const void *val, int len)
> +{
> +       struct fdt_property *prop;
> +       int nameoff;
> +
> +       FDT_SW_CHECK_HEADER(fdt);
> +
> +       nameoff = _fdt_find_add_string(fdt, name);
> +       if (nameoff == 0)
> +               return -FDT_ERR_NOSPACE;
> +
> +       prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len));
> +       if (! prop)
> +               return -FDT_ERR_NOSPACE;
> +
> +       prop->tag = cpu_to_fdt32(FDT_PROP);
> +       prop->nameoff = cpu_to_fdt32(nameoff);
> +       prop->len = cpu_to_fdt32(len);
> +       memcpy(prop->data, val, len);
> +       return 0;
> +}
> +
> +int fdt_finish(void *fdt)
> +{
> +       char *p = (char *)fdt;
> +       uint32_t *end;
> +       int oldstroffset, newstroffset;
> +       uint32_t tag;
> +       int offset, nextoffset;
> +
> +       FDT_SW_CHECK_HEADER(fdt);
> +
> +       /* Add terminator */
> +       end = _fdt_grab_space(fdt, sizeof(*end));
> +       if (! end)
> +               return -FDT_ERR_NOSPACE;
> +       *end = cpu_to_fdt32(FDT_END);
> +
> +       /* Relocate the string table */
> +       oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt);
> +       newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
> +       memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt));
> +       fdt_set_off_dt_strings(fdt, newstroffset);
> +
> +       /* Walk the structure, correcting string offsets */
> +       offset = 0;
> +       while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) {
> +               if (tag == FDT_PROP) {
> +                       struct fdt_property *prop =
> +                               _fdt_offset_ptr_w(fdt, offset);
> +                       int nameoff;
> +
> +                       nameoff = fdt32_to_cpu(prop->nameoff);
> +                       nameoff += fdt_size_dt_strings(fdt);
> +                       prop->nameoff = cpu_to_fdt32(nameoff);
> +               }
> +               offset = nextoffset;
> +       }
> +       if (nextoffset < 0)
> +               return nextoffset;
> +
> +       /* Finally, adjust the header */
> +       fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt));
> +       fdt_set_magic(fdt, FDT_MAGIC);
> +       return 0;
> +}
> diff --git a/xen/common/libfdt/fdt_wip.c b/xen/common/libfdt/fdt_wip.c
> new file mode 100644
> index 0000000..6025fa1
> --- /dev/null
> +++ b/xen/common/libfdt/fdt_wip.c
> @@ -0,0 +1,118 @@
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include "libfdt_env.h"
> +
> +#include <fdt.h>
> +#include <libfdt.h>
> +
> +#include "libfdt_internal.h"
> +
> +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
> +                       const void *val, int len)
> +{
> +       void *propval;
> +       int proplen;
> +
> +       propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen);
> +       if (! propval)
> +               return proplen;
> +
> +       if (proplen != len)
> +               return -FDT_ERR_NOSPACE;
> +
> +       memcpy(propval, val, len);
> +       return 0;
> +}
> +
> +static void _fdt_nop_region(void *start, int len)
> +{
> +       uint32_t *p;
> +
> +       for (p = start; (char *)p < ((char *)start + len); p++)
> +               *p = cpu_to_fdt32(FDT_NOP);
> +}
> +
> +int fdt_nop_property(void *fdt, int nodeoffset, const char *name)
> +{
> +       struct fdt_property *prop;
> +       int len;
> +
> +       prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
> +       if (! prop)
> +               return len;
> +
> +       _fdt_nop_region(prop, len + sizeof(*prop));
> +
> +       return 0;
> +}
> +
> +int _fdt_node_end_offset(void *fdt, int offset)
> +{
> +       int depth = 0;
> +
> +       while ((offset >= 0) && (depth >= 0))
> +               offset = fdt_next_node(fdt, offset, &depth);
> +
> +       return offset;
> +}
> +
> +int fdt_nop_node(void *fdt, int nodeoffset)
> +{
> +       int endoffset;
> +
> +       endoffset = _fdt_node_end_offset(fdt, nodeoffset);
> +       if (endoffset < 0)
> +               return endoffset;
> +
> +       _fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0),
> +                       endoffset - nodeoffset);
> +       return 0;
> +}
> diff --git a/xen/common/libfdt/libfdt.h b/xen/common/libfdt/libfdt.h
> new file mode 100644
> index 0000000..55f3eb3
> --- /dev/null
> +++ b/xen/common/libfdt/libfdt.h
> @@ -0,0 +1,1235 @@
> +#ifndef _LIBFDT_H
> +#define _LIBFDT_H
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#include <libfdt_env.h>
> +#include <fdt.h>
> +
> +#define FDT_FIRST_SUPPORTED_VERSION    0x10
> +#define FDT_LAST_SUPPORTED_VERSION     0x11
> +
> +/* Error codes: informative error codes */
> +#define FDT_ERR_NOTFOUND       1
> +       /* FDT_ERR_NOTFOUND: The requested node or property does not exist */
> +#define FDT_ERR_EXISTS         2
> +       /* FDT_ERR_EXISTS: Attemped to create a node or property which
> +        * already exists */
> +#define FDT_ERR_NOSPACE                3
> +       /* FDT_ERR_NOSPACE: Operation needed to expand the device
> +        * tree, but its buffer did not have sufficient space to
> +        * contain the expanded tree. Use fdt_open_into() to move the
> +        * device tree to a buffer with more space. */
> +
> +/* Error codes: codes for bad parameters */
> +#define FDT_ERR_BADOFFSET      4
> +       /* FDT_ERR_BADOFFSET: Function was passed a structure block
> +        * offset which is out-of-bounds, or which points to an
> +        * unsuitable part of the structure for the operation. */
> +#define FDT_ERR_BADPATH                5
> +       /* FDT_ERR_BADPATH: Function was passed a badly formatted path
> +        * (e.g. missing a leading / for a function which requires an
> +        * absolute path) */
> +#define FDT_ERR_BADPHANDLE     6
> +       /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle
> +        * value.  phandle values of 0 and -1 are not permitted. */
> +#define FDT_ERR_BADSTATE       7
> +       /* FDT_ERR_BADSTATE: Function was passed an incomplete device
> +        * tree created by the sequential-write functions, which is
> +        * not sufficiently complete for the requested operation. */
> +
> +/* Error codes: codes for bad device tree blobs */
> +#define FDT_ERR_TRUNCATED      8
> +       /* FDT_ERR_TRUNCATED: Structure block of the given device tree
> +        * ends without an FDT_END tag. */
> +#define FDT_ERR_BADMAGIC       9
> +       /* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a
> +        * device tree at all - it is missing the flattened device
> +        * tree magic number. */
> +#define FDT_ERR_BADVERSION     10
> +       /* FDT_ERR_BADVERSION: Given device tree has a version which
> +        * can't be handled by the requested operation.  For
> +        * read-write functions, this may mean that fdt_open_into() is
> +        * required to convert the tree to the expected version. */
> +#define FDT_ERR_BADSTRUCTURE   11
> +       /* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt
> +        * structure block or other serious error (e.g. misnested
> +        * nodes, or subnodes preceding properties). */
> +#define FDT_ERR_BADLAYOUT      12
> +       /* FDT_ERR_BADLAYOUT: For read-write functions, the given
> +        * device tree has it's sub-blocks in an order that the
> +        * function can't handle (memory reserve map, then structure,
> +        * then strings).  Use fdt_open_into() to reorganize the tree
> +        * into a form suitable for the read-write operations. */
> +
> +/* "Can't happen" error indicating a bug in libfdt */
> +#define FDT_ERR_INTERNAL       13
> +       /* FDT_ERR_INTERNAL: libfdt has failed an internal assertion.
> +        * Should never be returned, if it is, it indicates a bug in
> +        * libfdt itself. */
> +
> +#define FDT_ERR_MAX            13
> +
> +/**********************************************************************/
> +/* Low-level functions (you probably don't need these)                */
> +/**********************************************************************/
> +
> +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
> +static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
> +{
> +       return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
> +}
> +
> +uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
> +
> +/**********************************************************************/
> +/* Traversal functions                                                */
> +/**********************************************************************/
> +
> +int fdt_next_node(const void *fdt, int offset, int *depth);
> +
> +/**********************************************************************/
> +/* General functions                                                  */
> +/**********************************************************************/
> +
> +#define fdt_get_header(fdt, field) \
> +       (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field))
> +#define fdt_magic(fdt)                         (fdt_get_header(fdt, magic))
> +#define fdt_totalsize(fdt)             (fdt_get_header(fdt, totalsize))
> +#define fdt_off_dt_struct(fdt)         (fdt_get_header(fdt, off_dt_struct))
> +#define fdt_off_dt_strings(fdt)                (fdt_get_header(fdt, off_dt_strings))
> +#define fdt_off_mem_rsvmap(fdt)                (fdt_get_header(fdt, off_mem_rsvmap))
> +#define fdt_version(fdt)               (fdt_get_header(fdt, version))
> +#define fdt_last_comp_version(fdt)     (fdt_get_header(fdt, last_comp_version))
> +#define fdt_boot_cpuid_phys(fdt)       (fdt_get_header(fdt, boot_cpuid_phys))
> +#define fdt_size_dt_strings(fdt)       (fdt_get_header(fdt, size_dt_strings))
> +#define fdt_size_dt_struct(fdt)                (fdt_get_header(fdt, size_dt_struct))
> +
> +#define __fdt_set_hdr(name) \
> +       static inline void fdt_set_##name(void *fdt, uint32_t val) \
> +       { \
> +               struct fdt_header *fdth = (struct fdt_header*)fdt; \
> +               fdth->name = cpu_to_fdt32(val); \
> +       }
> +__fdt_set_hdr(magic);
> +__fdt_set_hdr(totalsize);
> +__fdt_set_hdr(off_dt_struct);
> +__fdt_set_hdr(off_dt_strings);
> +__fdt_set_hdr(off_mem_rsvmap);
> +__fdt_set_hdr(version);
> +__fdt_set_hdr(last_comp_version);
> +__fdt_set_hdr(boot_cpuid_phys);
> +__fdt_set_hdr(size_dt_strings);
> +__fdt_set_hdr(size_dt_struct);
> +#undef __fdt_set_hdr
> +
> +/**
> + * fdt_check_header - sanity check a device tree or possible device tree
> + * @fdt: pointer to data which might be a flattened device tree
> + *
> + * fdt_check_header() checks that the given buffer contains what
> + * appears to be a flattened device tree with sane information in its
> + * header.
> + *
> + * returns:
> + *     0, if the buffer appears to contain a valid device tree
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE, standard meanings, as above
> + */
> +int fdt_check_header(const void *fdt);
> +
> +/**
> + * fdt_move - move a device tree around in memory
> + * @fdt: pointer to the device tree to move
> + * @buf: pointer to memory where the device is to be moved
> + * @bufsize: size of the memory space at buf
> + *
> + * fdt_move() relocates, if possible, the device tree blob located at
> + * fdt to the buffer at buf of size bufsize.  The buffer may overlap
> + * with the existing device tree blob at fdt.  Therefore,
> + *     fdt_move(fdt, fdt, fdt_totalsize(fdt))
> + * should always succeed.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE, standard meanings
> + */
> +int fdt_move(const void *fdt, void *buf, int bufsize);
> +
> +/**********************************************************************/
> +/* Read-only functions                                                */
> +/**********************************************************************/
> +
> +/**
> + * fdt_string - retrieve a string from the strings block of a device tree
> + * @fdt: pointer to the device tree blob
> + * @stroffset: offset of the string within the strings block (native endian)
> + *
> + * fdt_string() retrieves a pointer to a single string from the
> + * strings block of the device tree blob at fdt.
> + *
> + * returns:
> + *     a pointer to the string, on success
> + *     NULL, if stroffset is out of bounds
> + */
> +const char *fdt_string(const void *fdt, int stroffset);
> +
> +/**
> + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries
> + * @fdt: pointer to the device tree blob
> + *
> + * Returns the number of entries in the device tree blob's memory
> + * reservation map.  This does not include the terminating 0,0 entry
> + * or any other (0,0) entries reserved for expansion.
> + *
> + * returns:
> + *     the number of entries
> + */
> +int fdt_num_mem_rsv(const void *fdt);
> +
> +/**
> + * fdt_get_mem_rsv - retrieve one memory reserve map entry
> + * @fdt: pointer to the device tree blob
> + * @address, @size: pointers to 64-bit variables
> + *
> + * On success, *address and *size will contain the address and size of
> + * the n-th reserve map entry from the device tree blob, in
> + * native-endian format.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE, standard meanings
> + */
> +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size);
> +
> +/**
> + * fdt_subnode_offset_namelen - find a subnode based on substring
> + * @fdt: pointer to the device tree blob
> + * @parentoffset: structure block offset of a node
> + * @name: name of the subnode to locate
> + * @namelen: number of characters of name to consider
> + *
> + * Identical to fdt_subnode_offset(), but only examine the first
> + * namelen characters of name for matching the subnode name.  This is
> + * useful for finding subnodes based on a portion of a larger string,
> + * such as a full path.
> + */
> +int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
> +                              const char *name, int namelen);
> +/**
> + * fdt_subnode_offset - find a subnode of a given node
> + * @fdt: pointer to the device tree blob
> + * @parentoffset: structure block offset of a node
> + * @name: name of the subnode to locate
> + *
> + * fdt_subnode_offset() finds a subnode of the node at structure block
> + * offset parentoffset with the given name.  name may include a unit
> + * address, in which case fdt_subnode_offset() will find the subnode
> + * with that unit address, or the unit address may be omitted, in
> + * which case fdt_subnode_offset() will find an arbitrary subnode
> + * whose name excluding unit address matches the given name.
> + *
> + * returns:
> + *     structure block offset of the requested subnode (>=0), on success
> + *     -FDT_ERR_NOTFOUND, if the requested subnode does not exist
> + *     -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
> + *      -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings.
> + */
> +int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);
> +
> +/**
> + * fdt_path_offset - find a tree node by its full path
> + * @fdt: pointer to the device tree blob
> + * @path: full path of the node to locate
> + *
> + * fdt_path_offset() finds a node of a given path in the device tree.
> + * Each path component may omit the unit address portion, but the
> + * results of this are undefined if any such path component is
> + * ambiguous (that is if there are multiple nodes at the relevant
> + * level matching the given component, differentiated only by unit
> + * address).
> + *
> + * returns:
> + *     structure block offset of the node with the requested path (>=0), on success
> + *     -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid
> + *     -FDT_ERR_NOTFOUND, if the requested node does not exist
> + *      -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings.
> + */
> +int fdt_path_offset(const void *fdt, const char *path);
> +
> +/**
> + * fdt_get_name - retrieve the name of a given node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: structure block offset of the starting node
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * fdt_get_name() retrieves the name (including unit address) of the
> + * device tree node at structure block offset nodeoffset.  If lenp is
> + * non-NULL, the length of this name is also returned, in the integer
> + * pointed to by lenp.
> + *
> + * returns:
> + *     pointer to the node's name, on success
> + *             If lenp is non-NULL, *lenp contains the length of that name (>=0)
> + *     NULL, on error
> + *             if lenp is non-NULL *lenp contains an error code (<0):
> + *             -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *             -FDT_ERR_BADMAGIC,
> + *             -FDT_ERR_BADVERSION,
> + *             -FDT_ERR_BADSTATE, standard meanings
> + */
> +const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
> +
> +/**
> + * fdt_first_property_offset - find the offset of a node's first property
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: structure block offset of a node
> + *
> + * fdt_first_property_offset() finds the first property of the node at
> + * the given structure block offset.
> + *
> + * returns:
> + *     structure block offset of the property (>=0), on success
> + *     -FDT_ERR_NOTFOUND, if the requested node has no properties
> + *     -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
> + *      -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings.
> + */
> +int fdt_first_property_offset(const void *fdt, int nodeoffset);
> +
> +/**
> + * fdt_next_property_offset - step through a node's properties
> + * @fdt: pointer to the device tree blob
> + * @offset: structure block offset of a property
> + *
> + * fdt_next_property_offset() finds the property immediately after the
> + * one at the given structure block offset.  This will be a property
> + * of the same node as the given property.
> + *
> + * returns:
> + *     structure block offset of the next property (>=0), on success
> + *     -FDT_ERR_NOTFOUND, if the given property is the last in its node
> + *     -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
> + *      -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings.
> + */
> +int fdt_next_property_offset(const void *fdt, int offset);
> +
> +/**
> + * fdt_get_property_by_offset - retrieve the property at a given offset
> + * @fdt: pointer to the device tree blob
> + * @offset: offset of the property to retrieve
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * fdt_get_property_by_offset() retrieves a pointer to the
> + * fdt_property structure within the device tree blob at the given
> + * offset.  If lenp is non-NULL, the length of the property value is
> + * also returned, in the integer pointed to by lenp.
> + *
> + * returns:
> + *     pointer to the structure representing the property
> + *             if lenp is non-NULL, *lenp contains the length of the property
> + *             value (>=0)
> + *     NULL, on error
> + *             if lenp is non-NULL, *lenp contains an error code (<0):
> + *             -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
> + *             -FDT_ERR_BADMAGIC,
> + *             -FDT_ERR_BADVERSION,
> + *             -FDT_ERR_BADSTATE,
> + *             -FDT_ERR_BADSTRUCTURE,
> + *             -FDT_ERR_TRUNCATED, standard meanings
> + */
> +const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
> +                                                     int offset,
> +                                                     int *lenp);
> +
> +/**
> + * fdt_get_property_namelen - find a property based on substring
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to find
> + * @name: name of the property to find
> + * @namelen: number of characters of name to consider
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * Identical to fdt_get_property_namelen(), but only examine the first
> + * namelen characters of name for matching the property name.
> + */
> +const struct fdt_property *fdt_get_property_namelen(const void *fdt,
> +                                                   int nodeoffset,
> +                                                   const char *name,
> +                                                   int namelen, int *lenp);
> +
> +/**
> + * fdt_get_property - find a given property in a given node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to find
> + * @name: name of the property to find
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * fdt_get_property() retrieves a pointer to the fdt_property
> + * structure within the device tree blob corresponding to the property
> + * named 'name' of the node at offset nodeoffset.  If lenp is
> + * non-NULL, the length of the property value is also returned, in the
> + * integer pointed to by lenp.
> + *
> + * returns:
> + *     pointer to the structure representing the property
> + *             if lenp is non-NULL, *lenp contains the length of the property
> + *             value (>=0)
> + *     NULL, on error
> + *             if lenp is non-NULL, *lenp contains an error code (<0):
> + *             -FDT_ERR_NOTFOUND, node does not have named property
> + *             -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *             -FDT_ERR_BADMAGIC,
> + *             -FDT_ERR_BADVERSION,
> + *             -FDT_ERR_BADSTATE,
> + *             -FDT_ERR_BADSTRUCTURE,
> + *             -FDT_ERR_TRUNCATED, standard meanings
> + */
> +const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
> +                                           const char *name, int *lenp);
> +static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,
> +                                                     const char *name,
> +                                                     int *lenp)
> +{
> +       return (struct fdt_property *)(uintptr_t)
> +               fdt_get_property(fdt, nodeoffset, name, lenp);
> +}
> +
> +/**
> + * fdt_getprop_by_offset - retrieve the value of a property at a given offset
> + * @fdt: pointer to the device tree blob
> + * @ffset: offset of the property to read
> + * @namep: pointer to a string variable (will be overwritten) or NULL
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * fdt_getprop_by_offset() retrieves a pointer to the value of the
> + * property at structure block offset 'offset' (this will be a pointer
> + * to within the device blob itself, not a copy of the value).  If
> + * lenp is non-NULL, the length of the property value is also
> + * returned, in the integer pointed to by lenp.  If namep is non-NULL,
> + * the property's namne will also be returned in the char * pointed to
> + * by namep (this will be a pointer to within the device tree's string
> + * block, not a new copy of the name).
> + *
> + * returns:
> + *     pointer to the property's value
> + *             if lenp is non-NULL, *lenp contains the length of the property
> + *             value (>=0)
> + *             if namep is non-NULL *namep contiains a pointer to the property
> + *             name.
> + *     NULL, on error
> + *             if lenp is non-NULL, *lenp contains an error code (<0):
> + *             -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
> + *             -FDT_ERR_BADMAGIC,
> + *             -FDT_ERR_BADVERSION,
> + *             -FDT_ERR_BADSTATE,
> + *             -FDT_ERR_BADSTRUCTURE,
> + *             -FDT_ERR_TRUNCATED, standard meanings
> + */
> +const void *fdt_getprop_by_offset(const void *fdt, int offset,
> +                                 const char **namep, int *lenp);
> +
> +/**
> + * fdt_getprop_namelen - get property value based on substring
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to find
> + * @name: name of the property to find
> + * @namelen: number of characters of name to consider
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * Identical to fdt_getprop(), but only examine the first namelen
> + * characters of name for matching the property name.
> + */
> +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
> +                               const char *name, int namelen, int *lenp);
> +
> +/**
> + * fdt_getprop - retrieve the value of a given property
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to find
> + * @name: name of the property to find
> + * @lenp: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * fdt_getprop() retrieves a pointer to the value of the property
> + * named 'name' of the node at offset nodeoffset (this will be a
> + * pointer to within the device blob itself, not a copy of the value).
> + * If lenp is non-NULL, the length of the property value is also
> + * returned, in the integer pointed to by lenp.
> + *
> + * returns:
> + *     pointer to the property's value
> + *             if lenp is non-NULL, *lenp contains the length of the property
> + *             value (>=0)
> + *     NULL, on error
> + *             if lenp is non-NULL, *lenp contains an error code (<0):
> + *             -FDT_ERR_NOTFOUND, node does not have named property
> + *             -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *             -FDT_ERR_BADMAGIC,
> + *             -FDT_ERR_BADVERSION,
> + *             -FDT_ERR_BADSTATE,
> + *             -FDT_ERR_BADSTRUCTURE,
> + *             -FDT_ERR_TRUNCATED, standard meanings
> + */
> +const void *fdt_getprop(const void *fdt, int nodeoffset,
> +                       const char *name, int *lenp);
> +static inline void *fdt_getprop_w(void *fdt, int nodeoffset,
> +                                 const char *name, int *lenp)
> +{
> +       return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp);
> +}
> +
> +/**
> + * fdt_get_phandle - retrieve the phandle of a given node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: structure block offset of the node
> + *
> + * fdt_get_phandle() retrieves the phandle of the device tree node at
> + * structure block offset nodeoffset.
> + *
> + * returns:
> + *     the phandle of the node at nodeoffset, on success (!= 0, != -1)
> + *     0, if the node has no phandle, or another error occurs
> + */
> +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);
> +
> +/**
> + * fdt_get_alias_namelen - get alias based on substring
> + * @fdt: pointer to the device tree blob
> + * @name: name of the alias th look up
> + * @namelen: number of characters of name to consider
> + *
> + * Identical to fdt_get_alias(), but only examine the first namelen
> + * characters of name for matching the alias name.
> + */
> +const char *fdt_get_alias_namelen(const void *fdt,
> +                                 const char *name, int namelen);
> +
> +/**
> + * fdt_get_alias - retreive the path referenced by a given alias
> + * @fdt: pointer to the device tree blob
> + * @name: name of the alias th look up
> + *
> + * fdt_get_alias() retrieves the value of a given alias.  That is, the
> + * value of the property named 'name' in the node /aliases.
> + *
> + * returns:
> + *     a pointer to the expansion of the alias named 'name', of it exists
> + *     NULL, if the given alias or the /aliases node does not exist
> + */
> +const char *fdt_get_alias(const void *fdt, const char *name);
> +
> +/**
> + * fdt_get_path - determine the full path of a node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose path to find
> + * @buf: character buffer to contain the returned path (will be overwritten)
> + * @buflen: size of the character buffer at buf
> + *
> + * fdt_get_path() computes the full path of the node at offset
> + * nodeoffset, and records that path in the buffer at buf.
> + *
> + * NOTE: This function is expensive, as it must scan the device tree
> + * structure from the start to nodeoffset.
> + *
> + * returns:
> + *     0, on success
> + *             buf contains the absolute path of the node at
> + *             nodeoffset, as a NUL-terminated string.
> + *     -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
> + *     -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1)
> + *             characters and will not fit in the given buffer.
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);
> +
> +/**
> + * fdt_supernode_atdepth_offset - find a specific ancestor of a node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose parent to find
> + * @supernodedepth: depth of the ancestor to find
> + * @nodedepth: pointer to an integer variable (will be overwritten) or NULL
> + *
> + * fdt_supernode_atdepth_offset() finds an ancestor of the given node
> + * at a specific depth from the root (where the root itself has depth
> + * 0, its immediate subnodes depth 1 and so forth).  So
> + *     fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL);
> + * will always return 0, the offset of the root node.  If the node at
> + * nodeoffset has depth D, then:
> + *     fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL);
> + * will return nodeoffset itself.
> + *
> + * NOTE: This function is expensive, as it must scan the device tree
> + * structure from the start to nodeoffset.
> + *
> + * returns:
> +
> + *     structure block offset of the node at node offset's ancestor
> + *             of depth supernodedepth (>=0), on success
> + *     -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
> +*      -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
> +                                int supernodedepth, int *nodedepth);
> +
> +/**
> + * fdt_node_depth - find the depth of a given node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose parent to find
> + *
> + * fdt_node_depth() finds the depth of a given node.  The root node
> + * has depth 0, its immediate subnodes depth 1 and so forth.
> + *
> + * NOTE: This function is expensive, as it must scan the device tree
> + * structure from the start to nodeoffset.
> + *
> + * returns:
> + *     depth of the node at nodeoffset (>=0), on success
> + *     -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_node_depth(const void *fdt, int nodeoffset);
> +
> +/**
> + * fdt_parent_offset - find the parent of a given node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose parent to find
> + *
> + * fdt_parent_offset() locates the parent node of a given node (that
> + * is, it finds the offset of the node which contains the node at
> + * nodeoffset as a subnode).
> + *
> + * NOTE: This function is expensive, as it must scan the device tree
> + * structure from the start to nodeoffset, *twice*.
> + *
> + * returns:
> + *     structure block offset of the parent of the node at nodeoffset
> + *             (>=0), on success
> + *     -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_parent_offset(const void *fdt, int nodeoffset);
> +
> +/**
> + * fdt_node_offset_by_prop_value - find nodes with a given property value
> + * @fdt: pointer to the device tree blob
> + * @startoffset: only find nodes after this offset
> + * @propname: property name to check
> + * @propval: property value to search for
> + * @proplen: length of the value in propval
> + *
> + * fdt_node_offset_by_prop_value() returns the offset of the first
> + * node after startoffset, which has a property named propname whose
> + * value is of length proplen and has value equal to propval; or if
> + * startoffset is -1, the very first such node in the tree.
> + *
> + * To iterate through all nodes matching the criterion, the following
> + * idiom can be used:
> + *     offset = fdt_node_offset_by_prop_value(fdt, -1, propname,
> + *                                            propval, proplen);
> + *     while (offset != -FDT_ERR_NOTFOUND) {
> + *             // other code here
> + *             offset = fdt_node_offset_by_prop_value(fdt, offset, propname,
> + *                                                    propval, proplen);
> + *     }
> + *
> + * Note the -1 in the first call to the function, if 0 is used here
> + * instead, the function will never locate the root node, even if it
> + * matches the criterion.
> + *
> + * returns:
> + *     structure block offset of the located node (>= 0, >startoffset),
> + *              on success
> + *     -FDT_ERR_NOTFOUND, no node matching the criterion exists in the
> + *             tree after startoffset
> + *     -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
> +                                 const char *propname,
> +                                 const void *propval, int proplen);
> +
> +/**
> + * fdt_node_offset_by_phandle - find the node with a given phandle
> + * @fdt: pointer to the device tree blob
> + * @phandle: phandle value
> + *
> + * fdt_node_offset_by_phandle() returns the offset of the node
> + * which has the given phandle value.  If there is more than one node
> + * in the tree with the given phandle (an invalid tree), results are
> + * undefined.
> + *
> + * returns:
> + *     structure block offset of the located node (>= 0), on success
> + *     -FDT_ERR_NOTFOUND, no node with that phandle exists
> + *     -FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1)
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);
> +
> +/**
> + * fdt_node_check_compatible: check a node's compatible property
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of a tree node
> + * @compatible: string to match against
> + *
> + *
> + * fdt_node_check_compatible() returns 0 if the given node contains a
> + * 'compatible' property with the given string as one of its elements,
> + * it returns non-zero otherwise, or on error.
> + *
> + * returns:
> + *     0, if the node has a 'compatible' property listing the given string
> + *     1, if the node has a 'compatible' property, but it does not list
> + *             the given string
> + *     -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property
> + *     -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_node_check_compatible(const void *fdt, int nodeoffset,
> +                             const char *compatible);
> +
> +/**
> + * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value
> + * @fdt: pointer to the device tree blob
> + * @startoffset: only find nodes after this offset
> + * @compatible: 'compatible' string to match against
> + *
> + * fdt_node_offset_by_compatible() returns the offset of the first
> + * node after startoffset, which has a 'compatible' property which
> + * lists the given compatible string; or if startoffset is -1, the
> + * very first such node in the tree.
> + *
> + * To iterate through all nodes matching the criterion, the following
> + * idiom can be used:
> + *     offset = fdt_node_offset_by_compatible(fdt, -1, compatible);
> + *     while (offset != -FDT_ERR_NOTFOUND) {
> + *             // other code here
> + *             offset = fdt_node_offset_by_compatible(fdt, offset, compatible);
> + *     }
> + *
> + * Note the -1 in the first call to the function, if 0 is used here
> + * instead, the function will never locate the root node, even if it
> + * matches the criterion.
> + *
> + * returns:
> + *     structure block offset of the located node (>= 0, >startoffset),
> + *              on success
> + *     -FDT_ERR_NOTFOUND, no node matching the criterion exists in the
> + *             tree after startoffset
> + *     -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE, standard meanings
> + */
> +int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
> +                                 const char *compatible);
> +
> +/**********************************************************************/
> +/* Write-in-place functions                                           */
> +/**********************************************************************/
> +
> +/**
> + * fdt_setprop_inplace - change a property's value, but not its size
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to change
> + * @name: name of the property to change
> + * @val: pointer to data to replace the property value with
> + * @len: length of the property value
> + *
> + * fdt_setprop_inplace() replaces the value of a given property with
> + * the data in val, of length len.  This function cannot change the
> + * size of a property, and so will only work if len is equal to the
> + * current length of the property.
> + *
> + * This function will alter only the bytes in the blob which contain
> + * the given property value, and will not alter or move any other part
> + * of the tree.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, if len is not equal to the property's current length
> + *     -FDT_ERR_NOTFOUND, node does not have the named property
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
> +                       const void *val, int len);
> +
> +/**
> + * fdt_setprop_inplace_cell - change the value of a single-cell property
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to change
> + * @name: name of the property to change
> + * @val: cell (32-bit integer) value to replace the property with
> + *
> + * fdt_setprop_inplace_cell() replaces the value of a given property
> + * with the 32-bit integer cell value in val, converting val to
> + * big-endian if necessary.  This function cannot change the size of a
> + * property, and so will only work if the property already exists and
> + * has length 4.
> + *
> + * This function will alter only the bytes in the blob which contain
> + * the given property value, and will not alter or move any other part
> + * of the tree.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, if the property's length is not equal to 4
> +  *    -FDT_ERR_NOTFOUND, node does not have the named property
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
> +                                          const char *name, uint32_t val)
> +{
> +       val = cpu_to_fdt32(val);
> +       return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
> +}
> +
> +/**
> + * fdt_nop_property - replace a property with nop tags
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to nop
> + * @name: name of the property to nop
> + *
> + * fdt_nop_property() will replace a given property's representation
> + * in the blob with FDT_NOP tags, effectively removing it from the
> + * tree.
> + *
> + * This function will alter only the bytes in the blob which contain
> + * the property, and will not alter or move any other part of the
> + * tree.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOTFOUND, node does not have the named property
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_nop_property(void *fdt, int nodeoffset, const char *name);
> +
> +/**
> + * fdt_nop_node - replace a node (subtree) with nop tags
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node to nop
> + *
> + * fdt_nop_node() will replace a given node's representation in the
> + * blob, including all its subnodes, if any, with FDT_NOP tags,
> + * effectively removing it from the tree.
> + *
> + * This function will alter only the bytes in the blob which contain
> + * the node and its properties and subnodes, and will not alter or
> + * move any other part of the tree.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_nop_node(void *fdt, int nodeoffset);
> +
> +/**********************************************************************/
> +/* Sequential write functions                                         */
> +/**********************************************************************/
> +
> +int fdt_create(void *buf, int bufsize);
> +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
> +int fdt_finish_reservemap(void *fdt);
> +int fdt_begin_node(void *fdt, const char *name);
> +int fdt_property(void *fdt, const char *name, const void *val, int len);
> +static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
> +{
> +       val = cpu_to_fdt32(val);
> +       return fdt_property(fdt, name, &val, sizeof(val));
> +}
> +#define fdt_property_string(fdt, name, str) \
> +       fdt_property(fdt, name, str, strlen(str)+1)
> +int fdt_end_node(void *fdt);
> +int fdt_finish(void *fdt);
> +
> +/**********************************************************************/
> +/* Read-write functions                                               */
> +/**********************************************************************/
> +
> +int fdt_open_into(const void *fdt, void *buf, int bufsize);
> +int fdt_pack(void *fdt);
> +
> +/**
> + * fdt_add_mem_rsv - add one memory reserve map entry
> + * @fdt: pointer to the device tree blob
> + * @address, @size: 64-bit values (native endian)
> + *
> + * Adds a reserve map entry to the given blob reserving a region at
> + * address address of length size.
> + *
> + * This function will insert data into the reserve map and will
> + * therefore change the indexes of some entries in the table.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
> + *             contain the new reservation entry
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size);
> +
> +/**
> + * fdt_del_mem_rsv - remove a memory reserve map entry
> + * @fdt: pointer to the device tree blob
> + * @n: entry to remove
> + *
> + * fdt_del_mem_rsv() removes the n-th memory reserve map entry from
> + * the blob.
> + *
> + * This function will delete data from the reservation table and will
> + * therefore change the indexes of some entries in the table.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there
> + *             are less than n+1 reserve map entries)
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_del_mem_rsv(void *fdt, int n);
> +
> +/**
> + * fdt_set_name - change the name of a given node
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: structure block offset of a node
> + * @name: name to give the node
> + *
> + * fdt_set_name() replaces the name (including unit address, if any)
> + * of the given node with the given string.  NOTE: this function can't
> + * efficiently check if the new name is unique amongst the given
> + * node's siblings; results are undefined if this function is invoked
> + * with a name equal to one of the given node's siblings.
> + *
> + * This function may insert or delete data from the blob, and will
> + * therefore change the offsets of some existing nodes.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, there is insufficient free space in the blob
> + *             to contain the new name
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE, standard meanings
> + */
> +int fdt_set_name(void *fdt, int nodeoffset, const char *name);
> +
> +/**
> + * fdt_setprop - create or change a property
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to change
> + * @name: name of the property to change
> + * @val: pointer to data to set the property value to
> + * @len: length of the property value
> + *
> + * fdt_setprop() sets the value of the named property in the given
> + * node to the given value and length, creating the property if it
> + * does not already exist.
> + *
> + * This function may insert or delete data from the blob, and will
> + * therefore change the offsets of some existing nodes.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
> + *             contain the new property value
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_setprop(void *fdt, int nodeoffset, const char *name,
> +               const void *val, int len);
> +
> +/**
> + * fdt_setprop_cell - set a property to a single cell value
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to change
> + * @name: name of the property to change
> + * @val: 32-bit integer value for the property (native endian)
> + *
> + * fdt_setprop_cell() sets the value of the named property in the
> + * given node to the given cell value (converting to big-endian if
> + * necessary), or creates a new property with that value if it does
> + * not already exist.
> + *
> + * This function may insert or delete data from the blob, and will
> + * therefore change the offsets of some existing nodes.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
> + *             contain the new property value
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,
> +                                  uint32_t val)
> +{
> +       val = cpu_to_fdt32(val);
> +       return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
> +}
> +
> +/**
> + * fdt_setprop_string - set a property to a string value
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to change
> + * @name: name of the property to change
> + * @str: string value for the property
> + *
> + * fdt_setprop_string() sets the value of the named property in the
> + * given node to the given string value (using the length of the
> + * string to determine the new length of the property), or creates a
> + * new property with that value if it does not already exist.
> + *
> + * This function may insert or delete data from the blob, and will
> + * therefore change the offsets of some existing nodes.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
> + *             contain the new property value
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +#define fdt_setprop_string(fdt, nodeoffset, name, str) \
> +       fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
> +
> +/**
> + * fdt_delprop - delete a property
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node whose property to nop
> + * @name: name of the property to nop
> + *
> + * fdt_del_property() will delete the given property.
> + *
> + * This function will delete data from the blob, and will therefore
> + * change the offsets of some existing nodes.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_NOTFOUND, node does not have the named property
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_delprop(void *fdt, int nodeoffset, const char *name);
> +
> +/**
> + * fdt_add_subnode_namelen - creates a new node based on substring
> + * @fdt: pointer to the device tree blob
> + * @parentoffset: structure block offset of a node
> + * @name: name of the subnode to locate
> + * @namelen: number of characters of name to consider
> + *
> + * Identical to fdt_add_subnode(), but use only the first namelen
> + * characters of name as the name of the new node.  This is useful for
> + * creating subnodes based on a portion of a larger string, such as a
> + * full path.
> + */
> +int fdt_add_subnode_namelen(void *fdt, int parentoffset,
> +                           const char *name, int namelen);
> +
> +/**
> + * fdt_add_subnode - creates a new node
> + * @fdt: pointer to the device tree blob
> + * @parentoffset: structure block offset of a node
> + * @name: name of the subnode to locate
> + *
> + * fdt_add_subnode() creates a new node as a subnode of the node at
> + * structure block offset parentoffset, with the given name (which
> + * should include the unit address, if any).
> + *
> + * This function will insert data into the blob, and will therefore
> + * change the offsets of some existing nodes.
> +
> + * returns:
> + *     structure block offset of the created nodeequested subnode (>=0), on success
> + *     -FDT_ERR_NOTFOUND, if the requested subnode does not exist
> + *     -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
> + *     -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of
> + *             the given name
> + *     -FDT_ERR_NOSPACE, if there is insufficient free space in the
> + *             blob to contain the new node
> + *     -FDT_ERR_NOSPACE
> + *     -FDT_ERR_BADLAYOUT
> + *      -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings.
> + */
> +int fdt_add_subnode(void *fdt, int parentoffset, const char *name);
> +
> +/**
> + * fdt_del_node - delete a node (subtree)
> + * @fdt: pointer to the device tree blob
> + * @nodeoffset: offset of the node to nop
> + *
> + * fdt_del_node() will remove the given node, including all its
> + * subnodes if any, from the blob.
> + *
> + * This function will delete data from the blob, and will therefore
> + * change the offsets of some existing nodes.
> + *
> + * returns:
> + *     0, on success
> + *     -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
> + *     -FDT_ERR_BADLAYOUT,
> + *     -FDT_ERR_BADMAGIC,
> + *     -FDT_ERR_BADVERSION,
> + *     -FDT_ERR_BADSTATE,
> + *     -FDT_ERR_BADSTRUCTURE,
> + *     -FDT_ERR_TRUNCATED, standard meanings
> + */
> +int fdt_del_node(void *fdt, int nodeoffset);
> +
> +/**********************************************************************/
> +/* Debugging / informational functions                                */
> +/**********************************************************************/
> +
> +const char *fdt_strerror(int errval);
> +
> +#endif /* _LIBFDT_H */
> diff --git a/xen/common/libfdt/libfdt_env.h b/xen/common/libfdt/libfdt_env.h
> new file mode 100644
> index 0000000..449bf60
> --- /dev/null
> +++ b/xen/common/libfdt/libfdt_env.h
> @@ -0,0 +1,23 @@
> +#ifndef _LIBFDT_ENV_H
> +#define _LIBFDT_ENV_H
> +
> +#include <stddef.h>
> +#include <stdint.h>
> +#include <string.h>
> +
> +#define _B(n)  ((unsigned long long)((uint8_t *)&x)[n])
> +static inline uint32_t fdt32_to_cpu(uint32_t x)
> +{
> +       return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
> +}
> +#define cpu_to_fdt32(x) fdt32_to_cpu(x)
> +
> +static inline uint64_t fdt64_to_cpu(uint64_t x)
> +{
> +       return (_B(0) << 56) | (_B(1) << 48) | (_B(2) << 40) | (_B(3) << 32)
> +               | (_B(4) << 24) | (_B(5) << 16) | (_B(6) << 8) | _B(7);
> +}
> +#define cpu_to_fdt64(x) fdt64_to_cpu(x)
> +#undef _B
> +
> +#endif /* _LIBFDT_ENV_H */
> diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
> new file mode 100644
> index 0000000..381133b
> --- /dev/null
> +++ b/xen/common/libfdt/libfdt_internal.h
> @@ -0,0 +1,95 @@
> +#ifndef _LIBFDT_INTERNAL_H
> +#define _LIBFDT_INTERNAL_H
> +/*
> + * libfdt - Flat Device Tree manipulation
> + * Copyright (C) 2006 David Gibson, IBM Corporation.
> + *
> + * libfdt is dual licensed: you can use it either under the terms of
> + * the GPL, or the BSD license, at your option.
> + *
> + *  a) This library is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This library is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this library; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Alternatively,
> + *
> + *  b) Redistribution and use in source and binary forms, with or
> + *     without modification, are permitted provided that the following
> + *     conditions are met:
> + *
> + *     1. Redistributions of source code must retain the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer.
> + *     2. Redistributions in binary form must reproduce the above
> + *        copyright notice, this list of conditions and the following
> + *        disclaimer in the documentation and/or other materials
> + *        provided with the distribution.
> + *
> + *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
> + *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
> + *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> + *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
> + *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
> + *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> + *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
> + *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +#include <fdt.h>
> +
> +#define FDT_ALIGN(x, a)                (((x) + (a) - 1) & ~((a) - 1))
> +#define FDT_TAGALIGN(x)                (FDT_ALIGN((x), FDT_TAGSIZE))
> +
> +#define FDT_CHECK_HEADER(fdt) \
> +       { \
> +               int err; \
> +               if ((err = fdt_check_header(fdt)) != 0) \
> +                       return err; \
> +       }
> +
> +int _fdt_check_node_offset(const void *fdt, int offset);
> +int _fdt_check_prop_offset(const void *fdt, int offset);
> +const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
> +int _fdt_node_end_offset(void *fdt, int nodeoffset);
> +
> +static inline const void *_fdt_offset_ptr(const void *fdt, int offset)
> +{
> +       return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;
> +}
> +
> +static inline void *_fdt_offset_ptr_w(void *fdt, int offset)
> +{
> +       return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);
> +}
> +
> +static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)
> +{
> +       const struct fdt_reserve_entry *rsv_table =
> +               (const struct fdt_reserve_entry *)
> +               ((const char *)fdt + fdt_off_mem_rsvmap(fdt));
> +
> +       return rsv_table + n;
> +}
> +static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)
> +{
> +       return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);
> +}
> +
> +#define FDT_SW_MAGIC           (~FDT_MAGIC)
> +
> +#endif /* _LIBFDT_INTERNAL_H */
> diff --git a/xen/common/libfdt/version.lds b/xen/common/libfdt/version.lds
> new file mode 100644
> index 0000000..3c3994e
> --- /dev/null
> +++ b/xen/common/libfdt/version.lds
> @@ -0,0 +1,54 @@
> +LIBFDT_1.2 {
> +       global:
> +               fdt_next_node;
> +               fdt_check_header;
> +               fdt_move;
> +               fdt_string;
> +               fdt_num_mem_rsv;
> +               fdt_get_mem_rsv;
> +               fdt_subnode_offset_namelen;
> +               fdt_subnode_offset;
> +               fdt_path_offset;
> +               fdt_get_name;
> +               fdt_get_property_namelen;
> +               fdt_get_property;
> +               fdt_getprop_namelen;
> +               fdt_getprop;
> +               fdt_get_phandle;
> +               fdt_get_alias_namelen;
> +               fdt_get_alias;
> +               fdt_get_path;
> +               fdt_supernode_atdepth_offset;
> +               fdt_node_depth;
> +               fdt_parent_offset;
> +               fdt_node_offset_by_prop_value;
> +               fdt_node_offset_by_phandle;
> +               fdt_node_check_compatible;
> +               fdt_node_offset_by_compatible;
> +               fdt_setprop_inplace;
> +               fdt_nop_property;
> +               fdt_nop_node;
> +               fdt_create;
> +               fdt_add_reservemap_entry;
> +               fdt_finish_reservemap;
> +               fdt_begin_node;
> +               fdt_property;
> +               fdt_end_node;
> +               fdt_finish;
> +               fdt_open_into;
> +               fdt_pack;
> +               fdt_add_mem_rsv;
> +               fdt_del_mem_rsv;
> +               fdt_set_name;
> +               fdt_setprop;
> +               fdt_delprop;
> +               fdt_add_subnode_namelen;
> +               fdt_add_subnode;
> +               fdt_del_node;
> +               fdt_strerror;
> +               fdt_offset_ptr;
> +               fdt_next_tag;
> +
> +       local:
> +               *;
> +};
> --
> 1.7.2.5
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

From xen-arm-bounces@lists.xensource.com Mon Feb 13 07:53:38 2012
Return-path: <xen-arm-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Feb 2012 07:53:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-arm-bounces@lists.xensource.com>)
	id 1Rwqiw-0003A4-QT; Mon, 13 Feb 2012 07:53:22 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with smtp (Exim 4.72)
	(envelope-from <jm77.ryu@samsung.com>) id 1Rwqiu-00039u-FP
	for xen-arm@lists.xensource.com; Mon, 13 Feb 2012 07:53:21 +0000
X-Env-Sender: jm77.ryu@samsung.com
X-Msg-Ref: server-8.tower-216.messagelabs.com!1329119591!14532228!1
X-Originating-IP: [203.254.224.25]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMjAzLjI1NC4yMjQuMjUgPT4gMjQ2MTY1\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19296 invoked from network); 13 Feb 2012 07:53:12 -0000
Received: from mailout2.samsung.com (HELO mailout2.samsung.com)
	(203.254.224.25) by server-8.tower-216.messagelabs.com with SMTP;
	13 Feb 2012 07:53:12 -0000
Received: from epcpsbge7.samsung.com (mailout2.samsung.com [203.254.224.25])
	by mailout2.samsung.com
	(Oracle Communications Messaging Exchange Server 7u4-19.01 64bit (built
	Sep 7
	2010)) with ESMTP id <0LZB0031FN7WRKB0@mailout2.samsung.com> for
	xen-arm@lists.xensource.com; Mon, 13 Feb 2012 16:53:10 +0900 (KST)
Message-id: <0LZB00329N8MRKB0@mailout2.samsung.com>
X-AuditID: cbfee611-b7b12ae0000036c1-4a-4f38c1215c80
Received: from epextmailer02 ( [203.254.219.152])
	by epcpsbge7.samsung.com (EPCPMTA) with SMTP id FA.09.14017.121C83F4;
	Mon, 13 Feb 2012 16:52:01 +0900 (KST)
Date: Mon, 13 Feb 2012 07:53:09 +0000 (GMT)
From: =?euc-kr?B?t/nA57nO?= <jm77.ryu@samsung.com>
To: Jae-Min Ryu <jm77.ryu@samsung.com>, Lars Kurth <lars.kurth@citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	"Keir (Xen.org)" <keir@xen.org>, Ian Jackson <Ian.Jackson@eu.citrix.com>,
	"xen-arm@lists.xensource.com" <xen-arm@lists.xensource.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
MIME-version: 1.0
X-MTR: 20120213074940046@jm77.ryu
Msgkey: 20120213074940046@jm77.ryu
X-EPLocale: ko_KR.euc-kr
X-Priority: 3
X-EPWebmail-Msg-Type: personal
X-EPWebmail-Reply-Demand: 0
X-EPApproval-Locale: 
X-EPHeader: ML
X-EPTrCode: 
X-EPTrName: 
X-MLAttribute: 
X-RootMTR: 20120213074805604@jm77.ryu
X-ParentMTR: 20120213074805604@jm77.ryu
Content-type: multipart/mixed;
	boundary="----=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY"
X-Brightmail-Tracker: AAAAAA==
Subject: [XenARM] [PATCH 02/14] arm: import the files required to "arm" port.
X-BeenThere: xen-arm@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: jm77.ryu@samsung.com
List-Id: Xen ARM development <xen-arm.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-arm>,
	<mailto:xen-arm-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-arm@lists.xensource.com>
List-Help: <mailto:xen-arm-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-arm>,
	<mailto:xen-arm-request@lists.xensource.com?subject=subscribe>
Sender: xen-arm-bounces@lists.xensource.com
Errors-To: xen-arm-bounces@lists.xensource.com


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="euc-kr"
MIME-Version: 1.0
Message-ID: <23931488.69631329119586906.JavaMail.weblogic@epv6ml04>

YXJtOiBpbXBvcnQgdGhlIGZpbGVzIHJlcXVpcmVkIHRvICJhcm0iIHBvcnQuDQoNCmNvbmZpZy9h
cm0ubWsgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsrKw0KIHhlbi9hcmNoL2FybS9NYWtl
ZmlsZSAgICAgICAgICAgICAgfCAgIDQ3ICsrKysrDQogeGVuL2FyY2gvYXJtL1J1bGVzLm1rICAg
ICAgICAgICAgICB8ICAgMjUgKysrDQogeGVuL2FyY2gvYXJtL2xpYi9NYWtlZmlsZSAgICAgICAg
ICB8ICAgMTEgKw0KIHhlbi9hcmNoL2FybS9saWIvYXNobGRpMy5TICAgICAgICAgfCAgIDQ1ICsr
KysrDQogeGVuL2FyY2gvYXJtL2xpYi9hc2hyZGkzLlMgICAgICAgICB8ICAgNDYgKysrKysNCiB4
ZW4vYXJjaC9hcm0vbGliL2JwYWJpLWFzbS5TICAgICAgIHwgICA1NSArKysrKysNCiB4ZW4vYXJj
aC9hcm0vbGliL2JwYWJpLmMgICAgICAgICAgIHwgICA1MSArKysrKysNCiB4ZW4vYXJjaC9hcm0v
bGliL2NsZWFyYml0LlMgICAgICAgIHwgICAyNCArKw0KIHhlbi9hcmNoL2FybS9saWIvY29weV90
ZW1wbGF0ZS5TICAgfCAgMjU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIHhlbi9h
cmNoL2FybS9saWIvZGVsYXkuUyAgICAgICAgICAgfCAgICA3ICsNCiB4ZW4vYXJjaC9hcm0vbGli
L2RpdjY0LlMgICAgICAgICAgIHwgIDE5OSArKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4v
YXJjaC9hcm0vbGliL2ZpbmRiaXQuUyAgICAgICAgIHwgICA4MSArKysrKysrKysNCiB4ZW4vYXJj
aC9hcm0vbGliL2djY2xpYi5oICAgICAgICAgIHwgICAzMyArKysrDQogeGVuL2FyY2gvYXJtL2xp
Yi9nZXR1c2VyLlMgICAgICAgICB8ICAgNzcgKysrKysrKysrDQogeGVuL2FyY2gvYXJtL2xpYi9s
aWIxZnVuY3MuUyAgICAgICB8ICAyNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K
IHhlbi9hcmNoL2FybS9saWIvbG9uZ2xvbmcuaCAgICAgICAgfCAgMTgzICsrKysrKysrKysrKysr
KysrKysrKysNCiB4ZW4vYXJjaC9hcm0vbGliL2xzaHJkaTMuUyAgICAgICAgIHwgICAxNyArKw0K
IHhlbi9hcmNoL2FybS9saWIvbWF0aC5jICAgICAgICAgICAgfCAgICAzICsNCiB4ZW4vYXJjaC9h
cm0vbGliL21lbWNoci5TICAgICAgICAgIHwgICAxNCArDQogeGVuL2FyY2gvYXJtL2xpYi9tZW1j
cHkuUyAgICAgICAgICB8ICAgNjAgKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvbWVtbW92ZS5T
ICAgICAgICAgfCAgMjA3ICsrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0v
bGliL21lbW9yeS5TICAgICAgICAgIHwgIDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0vbGliL21lbXNldC5TICAgICAg
ICAgIHwgICA2OSArKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvbWVtemVyby5TICAgICAgICAg
fCAgIDcxICsrKysrKysrDQogeGVuL2FyY2gvYXJtL2xpYi9tdWxkaTMuYyAgICAgICAgICB8ICAg
ODYgKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvcHV0dXNlci5TICAgICAgICAgfCAgIDc1
ICsrKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvc2V0Yml0LlMgICAgICAgICAgfCAgIDIyICsr
DQogeGVuL2FyY2gvYXJtL2xpYi9zdHJjaHIuUyAgICAgICAgICB8ICAgMTUgKw0KIHhlbi9hcmNo
L2FybS9saWIvdGVzdGNoYW5nZWJpdC5TICAgfCAgIDIyICsrDQogeGVuL2FyY2gvYXJtL2xpYi90
ZXN0Y2xlYXJiaXQuUyAgICB8ICAgMjIgKysNCiB4ZW4vYXJjaC9hcm0vbGliL3Rlc3RzZXRiaXQu
UyAgICAgIHwgICAyMCArKw0KIHhlbi9hcmNoL2FybS9saWIvdWFjY2Vzcy5TICAgICAgICAgfCAg
Njg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogeGVuL2FyY2gvYXJtL2xpYi91ZGl2ZGkz
LmMgICAgICAgICB8ICAyNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJj
aC9hcm0vbGliL3VsZGl2bW9kLlMgICAgICAgIHwgIDE0OCArKysrKysrKysrKysrKysrKw0KIHhl
bi9hcmNoL2FybS90ZWdyYS9NYWtlZmlsZSAgICAgICAgfCAgICAxICsNCiB4ZW4vYXJjaC9hcm0v
dGVncmEvUnVsZXMubWsgICAgICAgIHwgICAgMSArDQogeGVuL2FyY2gvYXJtL3RlZ3JhL2R1bW15
LmMgICAgICAgICB8ICAgIDMgKw0KIHhlbi9hcmNoL2FybS94ZW4vTWFrZWZpbGUgICAgICAgICAg
fCAgIDE5ICsrDQogeGVuL2FyY2gvYXJtL3hlbi9hcmNoX2RvbWFpbi5jICAgICB8ICAyMTIgKysr
KysrKysrKysrKysrKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vYXJjaF9kb21jdGwuYyAg
ICAgfCAgIDQzICsrKysrDQogeGVuL2FyY2gvYXJtL3hlbi9hcmNoX3N5c2N0bC5jICAgICB8ICAg
MzggKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vYXNtLW9mZnNldHMuYyAgICAgfCAgIDQwICsrKysN
CiB4ZW4vYXJjaC9hcm0veGVuL2J1Zy5jICAgICAgICAgICAgIHwgICAzMiArKysNCiB4ZW4vYXJj
aC9hcm0veGVuL2NwdS5jICAgICAgICAgICAgIHwgICA5NyArKysrKysrKysrKw0KIHhlbi9hcmNo
L2FybS94ZW4vY3Jhc2guYyAgICAgICAgICAgfCAgIDI1ICsrKw0KIHhlbi9hcmNoL2FybS94ZW4v
ZG9tYWluX2J1aWxkLmMgICAgfCAgIDQ3ICsrKysrDQogeGVuL2FyY2gvYXJtL3hlbi9kb21haW5f
cGFnZS5jICAgICB8ICAgMjIgKysNCiB4ZW4vYXJjaC9hcm0veGVuL2ZhdWx0LmMgICAgICAgICAg
IHwgIDEyMyArKysrKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vZ3JhbnRfdGFibGUuYyAg
ICAgfCAgIDUzICsrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vaW9tbXUuYyAgICAgICAgICAgfCAg
IDI0ICsrDQogeGVuL2FyY2gvYXJtL3hlbi9pcnEuYyAgICAgICAgICAgICB8ICAgODQgKysrKysr
KysrKw0KIHhlbi9hcmNoL2FybS94ZW4vbWFjaGluZV9rZXhlYy5jICAgfCAgIDMxICsrKw0KIHhl
bi9hcmNoL2FybS94ZW4vbW0uYyAgICAgICAgICAgICAgfCAgMTk0ICsrKysrKysrKysrKysrKysr
KysrKysrDQogeGVuL2FyY2gvYXJtL3hlbi9wMm0uYyAgICAgICAgICAgICB8ICAgNDQgKysrKysN
CiB4ZW4vYXJjaC9hcm0veGVuL3BjaS5jICAgICAgICAgICAgIHwgICA3NCArKysrKysrKw0KIHhl
bi9hcmNoL2FybS94ZW4vcGVyZm1vbi5jICAgICAgICAgfCAgIDI2ICsrKw0KIHhlbi9hcmNoL2Fy
bS94ZW4vc2V0dXAuYyAgICAgICAgICAgfCAgIDY0ICsrKysrKysNCiB4ZW4vYXJjaC9hcm0veGVu
L3NodXRkb3duLmMgICAgICAgIHwgICAzOCArKysrDQogeGVuL2FyY2gvYXJtL3hlbi90aW1lLmMg
ICAgICAgICAgICB8ICAgODMgKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vdGxiLmMgICAg
ICAgICAgICAgfCAgIDI2ICsrKw0KIHhlbi9hcmNoL2FybS94ZW4veGVuLmxkcy5TICAgICAgICAg
fCAgMTU5ICsrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2FjcGkuaCAg
ICAgICAgIHwgICAgOCArDQogeGVuL2luY2x1ZGUvYXNtLWFybS9hc20tbWFjcm9zLmggICB8ICAx
MDYgKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUvYXNtLWFybS9hdG9taWMuaCAgICAgICB8ICAx
NzkgKysrKysrKysrKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUvYXNtLWFybS9iaXRvcHMuaCAg
ICAgICB8ICAxOTMgKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJt
L2J1Zy5oICAgICAgICAgIHwgICAzMiArKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2J5dGVvcmRl
ci5oICAgIHwgICAgOSArDQogeGVuL2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oICAgICAgICB8ICAg
MTEgKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vY29uZmlnLmggICAgICAgfCAgIDYxICsrKysrKysN
CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2NwdS1kb21haW4uaCAgIHwgICAzOSArKysrDQogeGVuL2lu
Y2x1ZGUvYXNtLWFybS9jdXJyZW50LmggICAgICB8ICAgNzMgKysrKysrKysNCiB4ZW4vaW5jbHVk
ZS9hc20tYXJtL2RlYnVnZ2VyLmggICAgIHwgICAyNCArKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0v
ZGVsYXkuaCAgICAgICAgfCAgICA2ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RpdjY0LmggICAg
ICAgIHwgICA0MyArKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggICAgICAgfCAg
IDc5ICsrKysrKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZWxmLmggICAgICAgICAgfCAgIDUz
ICsrKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZXZlbnQuaCAgICAgICAgfCAgIDM5ICsrKysN
CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2ZsdXNodGxiLmggICAgIHwgICAyNSArKysNCiB4ZW4vaW5j
bHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmggIHwgICA2MiArKysrKysrDQogeGVuL2luY2x1ZGUv
YXNtLWFybS9ndWVzdF9hY2Nlc3MuaCB8ICAxMzYgKysrKysrKysrKysrKysrKw0KIHhlbi9pbmNs
dWRlL2FzbS1hcm0vaGFyZGlycS5oICAgICAgfCAgIDIxICsrDQogeGVuL2luY2x1ZGUvYXNtLWFy
bS9oeXBlcmNhbGwuaCAgICB8ICAgNjggKysrKysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2lu
aXQuaCAgICAgICAgIHwgICAgNCArDQogeGVuL2luY2x1ZGUvYXNtLWFybS9pby5oICAgICAgICAg
ICB8ICAgMzIgKysrDQogeGVuL2luY2x1ZGUvYXNtLWFybS9pb2NhcC5oICAgICAgICB8ICAgMTUg
Kw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaCAgICAgICAgfCAgIDE0ICsNCiB4ZW4vaW5j
bHVkZS9hc20tYXJtL2lycS5oICAgICAgICAgIHwgICA1MCArKysrKysNCiB4ZW4vaW5jbHVkZS9h
c20tYXJtL21tLmggICAgICAgICAgIHwgIDIzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysr
DQogeGVuL2luY2x1ZGUvYXNtLWFybS9tbXUuaCAgICAgICAgICB8ICAgMTEgKw0KIHhlbi9pbmNs
dWRlL2FzbS1hcm0vbXVsdGljYWxsLmggICAgfCAgICA5ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJt
L251bWEuaCAgICAgICAgIHwgICAyMSArKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggICAg
ICAgICAgfCAgIDEwICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BhZ2UuaCAgICAgICAgIHwgICA5
NSArKysrKysrKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGNpLmggICAgICAgICAgfCAgICA5
ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oICAgICAgIHwgICAxNiArDQogeGVuL2lu
Y2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaCAgICB8ICAyMTkgKysrKysrKysrKysrKysrKysrKysr
KysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3JlZ3MuaCAgICAgICAgIHwgICAxNyArKw0KIHhl
bi9pbmNsdWRlL2FzbS1hcm0vc21wLmggICAgICAgICAgfCAgIDI4ICsrKw0KIHhlbi9pbmNsdWRl
L2FzbS1hcm0vc29mdGlycS5oICAgICAgfCAgIDExICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3Nw
aW5sb2NrLmggICAgIHwgIDIwMCArKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVk
ZS9hc20tYXJtL3N0cmluZy5oICAgICAgIHwgICA0OSArKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1h
cm0vc3lzdGVtLmggICAgICAgfCAgMTQ4ICsrKysrKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUv
YXNtLWFybS90ZWdyYS9jb25maWcuaCB8ICAgMTEgKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGlt
ZS5oICAgICAgICAgfCAgIDI0ICsrDQogeGVuL2luY2x1ZGUvYXNtLWFybS90cmFjZS5oICAgICAg
ICB8ICAgIDYgKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vdHlwZXMuaCAgICAgICAgfCAgIDU4ICsr
KysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3hlbm9wcm9mLmggICAgIHwgICA0MyArKysrKw0K
IHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oICAgICAgfCAgMTgwICsrKysrKysrKysrKysr
KysrKysrKw0KIDEwOSBmaWxlcyBjaGFuZ2VkLCA4MDA4IGluc2VydGlvbnMoKyksIDAgZGVsZXRp
b25zKC0pDQoNClNpZ25lZC1vZmYtYnk6IEphZW1pbiBSeXUgPGptNzcucnl1QHNhbXN1bmcuY29t
Pg0KDQo=


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: application/octet-stream;
 name="patch02.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="patch02.diff"


YXJtOiBpbXBvcnQgdGhlIGZpbGVzIHJlcXVpcmVkIHRvICJhcm0iIHBvcnQuCgogY29uZmln
L2FybS5tayAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKysrCiB4ZW4vYXJjaC9hcm0v
TWFrZWZpbGUgICAgICAgICAgICAgIHwgICA0NyArKysrKwogeGVuL2FyY2gvYXJtL1J1bGVz
Lm1rICAgICAgICAgICAgICB8ICAgMjUgKysrCiB4ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxl
ICAgICAgICAgIHwgICAxMSArCiB4ZW4vYXJjaC9hcm0vbGliL2FzaGxkaTMuUyAgICAgICAg
IHwgICA0NSArKysrKwogeGVuL2FyY2gvYXJtL2xpYi9hc2hyZGkzLlMgICAgICAgICB8ICAg
NDYgKysrKysKIHhlbi9hcmNoL2FybS9saWIvYnBhYmktYXNtLlMgICAgICAgfCAgIDU1ICsr
KysrKwogeGVuL2FyY2gvYXJtL2xpYi9icGFiaS5jICAgICAgICAgICB8ICAgNTEgKysrKysr
CiB4ZW4vYXJjaC9hcm0vbGliL2NsZWFyYml0LlMgICAgICAgIHwgICAyNCArKwogeGVuL2Fy
Y2gvYXJtL2xpYi9jb3B5X3RlbXBsYXRlLlMgICB8ICAyNTUgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL2RlbGF5LlMgICAgICAgICAgIHwgICAg
NyArCiB4ZW4vYXJjaC9hcm0vbGliL2RpdjY0LlMgICAgICAgICAgIHwgIDE5OSArKysrKysr
KysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS9saWIvZmluZGJpdC5TICAgICAgICAg
fCAgIDgxICsrKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9nY2NsaWIuaCAgICAgICAgICB8
ICAgMzMgKysrKwogeGVuL2FyY2gvYXJtL2xpYi9nZXR1c2VyLlMgICAgICAgICB8ICAgNzcg
KysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL2xpYjFmdW5jcy5TICAgICAgIHwgIDI1NiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL2xvbmds
b25nLmggICAgICAgIHwgIDE4MyArKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h
cm0vbGliL2xzaHJkaTMuUyAgICAgICAgIHwgICAxNyArKwogeGVuL2FyY2gvYXJtL2xpYi9t
YXRoLmMgICAgICAgICAgICB8ICAgIDMgKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1jaHIuUyAg
ICAgICAgICB8ICAgMTQgKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1jcHkuUyAgICAgICAgICB8
ICAgNjAgKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1tb3ZlLlMgICAgICAgICB8ICAy
MDcgKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1vcnku
UyAgICAgICAgICB8ICA0MjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL21lbXNldC5TICAgICAgICAgIHwg
ICA2OSArKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9tZW16ZXJvLlMgICAgICAgICB8ICAg
NzEgKysrKysrKysKIHhlbi9hcmNoL2FybS9saWIvbXVsZGkzLmMgICAgICAgICAgfCAgIDg2
ICsrKysrKysrKysKIHhlbi9hcmNoL2FybS9saWIvcHV0dXNlci5TICAgICAgICAgfCAgIDc1
ICsrKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9zZXRiaXQuUyAgICAgICAgICB8ICAgMjIg
KysKIHhlbi9hcmNoL2FybS9saWIvc3RyY2hyLlMgICAgICAgICAgfCAgIDE1ICsKIHhlbi9h
cmNoL2FybS9saWIvdGVzdGNoYW5nZWJpdC5TICAgfCAgIDIyICsrCiB4ZW4vYXJjaC9hcm0v
bGliL3Rlc3RjbGVhcmJpdC5TICAgIHwgICAyMiArKwogeGVuL2FyY2gvYXJtL2xpYi90ZXN0
c2V0Yml0LlMgICAgICB8ICAgMjAgKysKIHhlbi9hcmNoL2FybS9saWIvdWFjY2Vzcy5TICAg
ICAgICAgfCAgNjg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h
cm0vbGliL3VkaXZkaTMuYyAgICAgICAgIHwgIDI0MiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi91bGRpdm1vZC5TICAgICAgICB8ICAxNDggKysr
KysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS90ZWdyYS9NYWtlZmlsZSAgICAgICAgfCAg
ICAxICsKIHhlbi9hcmNoL2FybS90ZWdyYS9SdWxlcy5tayAgICAgICAgfCAgICAxICsKIHhl
bi9hcmNoL2FybS90ZWdyYS9kdW1teS5jICAgICAgICAgfCAgICAzICsKIHhlbi9hcmNoL2Fy
bS94ZW4vTWFrZWZpbGUgICAgICAgICAgfCAgIDE5ICsrCiB4ZW4vYXJjaC9hcm0veGVuL2Fy
Y2hfZG9tYWluLmMgICAgIHwgIDIxMiArKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v
YXJjaC9hcm0veGVuL2FyY2hfZG9tY3RsLmMgICAgIHwgICA0MyArKysrKwogeGVuL2FyY2gv
YXJtL3hlbi9hcmNoX3N5c2N0bC5jICAgICB8ICAgMzggKysrKwogeGVuL2FyY2gvYXJtL3hl
bi9hc20tb2Zmc2V0cy5jICAgICB8ICAgNDAgKysrKwogeGVuL2FyY2gvYXJtL3hlbi9idWcu
YyAgICAgICAgICAgICB8ICAgMzIgKysrCiB4ZW4vYXJjaC9hcm0veGVuL2NwdS5jICAgICAg
ICAgICAgIHwgICA5NyArKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3hlbi9jcmFzaC5jICAg
ICAgICAgICB8ICAgMjUgKysrCiB4ZW4vYXJjaC9hcm0veGVuL2RvbWFpbl9idWlsZC5jICAg
IHwgICA0NyArKysrKwogeGVuL2FyY2gvYXJtL3hlbi9kb21haW5fcGFnZS5jICAgICB8ICAg
MjIgKysKIHhlbi9hcmNoL2FybS94ZW4vZmF1bHQuYyAgICAgICAgICAgfCAgMTIzICsrKysr
KysrKysrKysrCiB4ZW4vYXJjaC9hcm0veGVuL2dyYW50X3RhYmxlLmMgICAgIHwgICA1MyAr
KysrKysKIHhlbi9hcmNoL2FybS94ZW4vaW9tbXUuYyAgICAgICAgICAgfCAgIDI0ICsrCiB4
ZW4vYXJjaC9hcm0veGVuL2lycS5jICAgICAgICAgICAgIHwgICA4NCArKysrKysrKysrCiB4
ZW4vYXJjaC9hcm0veGVuL21hY2hpbmVfa2V4ZWMuYyAgIHwgICAzMSArKysKIHhlbi9hcmNo
L2FybS94ZW4vbW0uYyAgICAgICAgICAgICAgfCAgMTk0ICsrKysrKysrKysrKysrKysrKysr
KysrCiB4ZW4vYXJjaC9hcm0veGVuL3AybS5jICAgICAgICAgICAgIHwgICA0NCArKysrKwog
eGVuL2FyY2gvYXJtL3hlbi9wY2kuYyAgICAgICAgICAgICB8ICAgNzQgKysrKysrKysKIHhl
bi9hcmNoL2FybS94ZW4vcGVyZm1vbi5jICAgICAgICAgfCAgIDI2ICsrKwogeGVuL2FyY2gv
YXJtL3hlbi9zZXR1cC5jICAgICAgICAgICB8ICAgNjQgKysrKysrKwogeGVuL2FyY2gvYXJt
L3hlbi9zaHV0ZG93bi5jICAgICAgICB8ICAgMzggKysrKwogeGVuL2FyY2gvYXJtL3hlbi90
aW1lLmMgICAgICAgICAgICB8ICAgODMgKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3hlbi90
bGIuYyAgICAgICAgICAgICB8ICAgMjYgKysrCiB4ZW4vYXJjaC9hcm0veGVuL3hlbi5sZHMu
UyAgICAgICAgIHwgIDE1OSArKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20t
YXJtL2FjcGkuaCAgICAgICAgIHwgICAgOCArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2FzbS1t
YWNyb3MuaCAgIHwgIDEwNiArKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vYXRv
bWljLmggICAgICAgfCAgMTc5ICsrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUv
YXNtLWFybS9iaXRvcHMuaCAgICAgICB8ICAxOTMgKysrKysrKysrKysrKysrKysrKysrKysK
IHhlbi9pbmNsdWRlL2FzbS1hcm0vYnVnLmggICAgICAgICAgfCAgIDMyICsrKwogeGVuL2lu
Y2x1ZGUvYXNtLWFybS9ieXRlb3JkZXIuaCAgICB8ICAgIDkgKwogeGVuL2luY2x1ZGUvYXNt
LWFybS9jYWNoZS5oICAgICAgICB8ICAgMTEgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9jb25m
aWcuaCAgICAgICB8ICAgNjEgKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9jcHUtZG9t
YWluLmggICB8ICAgMzkgKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmggICAg
ICB8ICAgNzMgKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vZGVidWdnZXIuaCAgICAg
fCAgIDI0ICsrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RlbGF5LmggICAgICAgIHwgICAgNiAr
CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RpdjY0LmggICAgICAgIHwgICA0MyArKysrKwogeGVu
L2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCAgICAgICB8ICAgNzkgKysrKysrKysrCiB4ZW4v
aW5jbHVkZS9hc20tYXJtL2VsZi5oICAgICAgICAgIHwgICA1MyArKysrKysKIHhlbi9pbmNs
dWRlL2FzbS1hcm0vZXZlbnQuaCAgICAgICAgfCAgIDM5ICsrKysKIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vZmx1c2h0bGIuaCAgICAgfCAgIDI1ICsrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9n
cmFudF90YWJsZS5oICB8ICAgNjIgKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9ndWVz
dF9hY2Nlc3MuaCB8ICAxMzYgKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFy
bS9oYXJkaXJxLmggICAgICB8ICAgMjEgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaHlwZXJj
YWxsLmggICAgfCAgIDY4ICsrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2luaXQuaCAg
ICAgICAgIHwgICAgNCArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2lvLmggICAgICAgICAgIHwg
ICAzMiArKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaW9jYXAuaCAgICAgICAgfCAgIDE1ICsK
IHhlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaCAgICAgICAgfCAgIDE0ICsKIHhlbi9pbmNs
dWRlL2FzbS1hcm0vaXJxLmggICAgICAgICAgfCAgIDUwICsrKysrKwogeGVuL2luY2x1ZGUv
YXNtLWFybS9tbS5oICAgICAgICAgICB8ICAyMzcgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9tbXUuaCAgICAgICAgICB8ICAgMTEgKwogeGVu
L2luY2x1ZGUvYXNtLWFybS9tdWx0aWNhbGwuaCAgICB8ICAgIDkgKwogeGVuL2luY2x1ZGUv
YXNtLWFybS9udW1hLmggICAgICAgICB8ICAgMjEgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0v
cDJtLmggICAgICAgICAgfCAgIDEwICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oICAg
ICAgICAgfCAgIDk1ICsrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BjaS5oICAg
ICAgICAgIHwgICAgOSArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oICAgICAgIHwg
ICAxNiArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3Byb2Nlc3Nvci5oICAgIHwgIDIxOSArKysr
KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9yZWdzLmggICAg
ICAgICB8ICAgMTcgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vc21wLmggICAgICAgICAgfCAg
IDI4ICsrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9zb2Z0aXJxLmggICAgICB8ICAgMTEgKwog
eGVuL2luY2x1ZGUvYXNtLWFybS9zcGlubG9jay5oICAgICB8ICAyMDAgKysrKysrKysrKysr
KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3N0cmluZy5oICAgICAgIHwgICA0
OSArKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9zeXN0ZW0uaCAgICAgICB8ICAxNDggKysr
KysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvY29uZmlnLmggfCAg
IDExICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGltZS5oICAgICAgICAgfCAgIDI0ICsrCiB4
ZW4vaW5jbHVkZS9hc20tYXJtL3RyYWNlLmggICAgICAgIHwgICAgNiArCiB4ZW4vaW5jbHVk
ZS9hc20tYXJtL3R5cGVzLmggICAgICAgIHwgICA1OCArKysrKysrCiB4ZW4vaW5jbHVkZS9h
c20tYXJtL3hlbm9wcm9mLmggICAgIHwgICA0MyArKysrKwogeGVuL2luY2x1ZGUvcHVibGlj
L2FyY2gtYXJtLmggICAgICB8ICAxODAgKysrKysrKysrKysrKysrKysrKysrCiAxMDkgZmls
ZXMgY2hhbmdlZCwgODAwOCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKU2lnbmVk
LW9mZi1ieTogSmFlbWluIFJ5dSA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CgpkaWZmIC1yIGU3
MDE0NjFiMTI1MSBjb25maWcvYXJtLm1rCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCisrKyBiL2NvbmZpZy9hcm0ubWsJRnJpIEZlYiAwMyAxNjowNzow
MyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMjggQEAKKyMKKyMgQ3Jvc3MgVG9vbCBjaGFpbiBj
b25maWd1cmF0aW9uCisjCitUT09MQ0hBSU5fUFJFRklYID0gL29wdC9hcm0tbm9uZS1saW51
eC1nbnVlYWJpLW9sZC9iaW4vYXJtLW5vbmUtbGludXgtZ251ZWFiaS0KKworIworIyBUb29s
Y2hhaW4gY29uZmlndXJhdGlvbgorIworQVMgICAgICAgICAgICAgID0gJChUT09MQ0hBSU5f
UFJFRklYKWFzCitMRCAgICAgICAgICAgICAgPSAkKFRPT0xDSEFJTl9QUkVGSVgpbGQKK0ND
ICAgICAgICAgICAgICA9ICQoVE9PTENIQUlOX1BSRUZJWClnY2MKK0NQUCAgICAgICAgICAg
ICA9ICQoVE9PTENIQUlOX1BSRUZJWClnY2MgLUUKK0FSICAgICAgICAgICAgICA9ICQoVE9P
TENIQUlOX1BSRUZJWClhcgorUkFOTElCICAgICAgICAgID0gJChUT09MQ0hBSU5fUFJFRklY
KXJhbmxpYgorTk0gICAgICAgICAgICAgID0gJChUT09MQ0hBSU5fUFJFRklYKW5tCitTVFJJ
UCAgICAgICAgICAgPSAkKFRPT0xDSEFJTl9QUkVGSVgpc3RyaXAKK09CSkNPUFkgICAgICAg
ICA9ICQoVE9PTENIQUlOX1BSRUZJWClvYmpjb3B5CitPQkpEVU1QICAgICAgICAgPSAkKFRP
T0xDSEFJTl9QUkVGSVgpb2JqZHVtcAorCitESVNURElSICAgICAgICAgPz0gJChYRU5fUk9P
VCkvZGlzdAorREVTVERJUiAgICAgICAgID89ICQoRElTVERJUikvaW5zdGFsbAorCitJTlNU
QUxMICAgICAgICAgPSBpbnN0YWxsCitJTlNUQUxMX0RJUiAgICAgPSAkKElOU1RBTEwpIC1k
IC1tMDc1NQorSU5TVEFMTF9EQVRBICAgID0gJChJTlNUQUxMKSAtbTA2NDQKK0lOU1RBTExf
UFJPRyAgICA9ICQoSU5TVEFMTCkgLW0wNzU1CisKK0NPTkZJR19BUk0JOj0geQpkaWZmIC1y
IGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL01ha2VmaWxl
CUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQ3IEBACisjCisj
IHhlbi9hcmNoL2FybS9NYWtlZmlsZQorIworCitpZm5kZWYgVEFSR0VUX1NVQkFSQ0gKKyQo
ZXJyb3IgWEVOX1RBUkdFVF9TVUJBUkNIIG11c3QgYmUgc3VwcGxpZWQuIFNlZSBDb25maWcu
bWsgZmlsZSkKK2VuZGlmCisKK3N1YmRpci15ICs9ICQoVEFSR0VUX1NVQkFSQ0gpIHhlbiBs
aWIKKworT0JKQ09QWUZMQUdTICAgIDo9LU8gYmluYXJ5IC1SIC5ub3RlIC1SIC5jb21tZW50
IC1TCisKKyQoVEFSR0VUKTogJChUQVJHRVQpLXN5bXMKKwkkKE5NKSAtbiAkPCB8IGdyZXAg
LXYgJyBbYVV3XSAnID4gJChARCkvU3lzdGVtLm1hcAorCSQoT0JKQ09QWSkgLU8gYmluYXJ5
IC1SIC5ub3RlIC1SIC5jb21tZW50IC1TICQ8ICRACisKKyQoVEFSR0VUKS1zeW1zOiB4ZW4u
bGRzICQoQUxMX09CSlMpIAorCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAkKEJB
U0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8KKwkkKExEKSAkKExERkxBR1MpIC1UIHhl
bi5sZHMgLU4gLU1hcCAkKEBEKS8uJChARikuMC5tYXAgJChBTExfT0JKUykgXAorCSQoQkFT
RURJUikvY29tbW9uL3N5bWJvbHMtZHVtbXkubyAtbyAkKEBEKS8uJChARikuMAorCSQoTk0p
IC1uICQoQEQpLy4kKEBGKS4wIHwgJChCQVNFRElSKS90b29scy9zeW1ib2xzID4kKEBEKS8u
JChARikuMC5TCisJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVzLm1rICQoQEQpLy4kKEBG
KS4wLm8KKwkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5sZHMgLU4gLU1hcCAkKEBEKS8uJChA
RikuMS5tYXAgJChBTExfT0JKUykgXAorCSQoQEQpLy4kKEBGKS4wLm8gLW8gJChARCkvLiQo
QEYpLjEKKwkkKE5NKSAtbiAkKEBEKS8uJChARikuMSB8ICQoQkFTRURJUikvdG9vbHMvc3lt
Ym9scyA+JChARCkvLiQoQEYpLjEuUworCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5t
ayAkKEBEKS8uJChARikuMS5vCisJJChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIC1N
YXAgJEAubWFwICQoQUxMX09CSlMpIFwKKwkkKEBEKS8uJChARikuMS5vIC1vICRACisJcm0g
LWYgJChARCkvLiQoQEYpLlswLTldKgorCisKK3hlbi5sZHM6ICQoQkFTRURJUikvaW5jbHVk
ZS9hc20vYXJjaAorCSQoQ0MpIC1FICQoQ0ZMQUdTKSAtUCAkKEFGTEFHUykgLW8gJEAgeGVu
L3hlbi5sZHMuUworCitjbGVhbjo6IEZPUkNFCisJcm0gLWYgeGVuLWJpbiB4ZW4tc3ltcyB4
ZW4ubGRzIGFzbS1vZmZzZXRzLnMKKwlybSAtZiAqLm8gJChUQVJHRVRfU1VCQVJDSCkvKi5v
IGxpYi8qLm8geGVuLyoubyB4ZW4ubGRzCisJcm0gLWYgJChCQVNFRElSKS9pbmNsdWRlL2Fz
bS1hcm0vYXJjaAorCXJtIC1mICQoQkFTRURJUikvaW5jbHVkZS9hc20KKworYXNtLW9mZnNl
dHMuczogJChCQVNFRElSKS9pbmNsdWRlL2FzbS9hcmNoCisJJChDQykgJChDRkxBR1MpIC1T
IC1vICRAIHhlbi9hc20tb2Zmc2V0cy5jCisKKyQoQkFTRURJUikvaW5jbHVkZS9hc20vYXJj
aDoKKwlbIC1lICQoQkFTRURJUikvaW5jbHVkZS9hc20vYXJjaCBdIHx8IFwKKwlsbiAtc2Yg
JChCQVNFRElSKS9pbmNsdWRlL2FzbS8kKFRBUkdFVF9TVUJBUkNIKSAkKEJBU0VESVIpL2lu
Y2x1ZGUvYXNtL2FyY2gKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vUnVs
ZXMubWsKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIveGVuL2FyY2gvYXJtL1J1bGVzLm1rCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDI1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjIGFybS1zcGVjaWZpYyBkZWZpbml0aW9ucworCisjCisjIElmIHlvdSBjaGFu
Z2UgYW55IG9mIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGVuIHlvdSBtdXN0Cisj
ICdtYWtlIGNsZWFuJyBiZWZvcmUgcmVidWlsZGluZy4KKyMKKworaWZlcSAoJChUQVJHRVRf
U1VCQVJDSCksKQorJChlcnJvciAiWEVOX1RBUkdFVF9TVUJBUkNIIG11c3QgYmUgc3VwcGxp
ZWQuIikKK2VuZGlmCisKK3hlbm9wcm9mIDo9IHkKKworIyBFYWNoIFNvQyBtYXkgaGF2ZSBp
dHMgb3duIGJ1aWxkIHJ1bGVzCistaW5jbHVkZSAkKEJBU0VESVIpL2FyY2gvJChUQVJHRVRf
QVJDSCkvJChUQVJHRVRfU1VCQVJDSCkvUnVsZXMubWsKKworQ0ZMQUdTCSs9IC1tYWJpPWFh
cGNzLWxpbnV4IC1tbm8tdGh1bWItaW50ZXJ3b3JrIC1mbm8tYnVpbHRpbiAtZm5vLWNvbW1v
bgorQ0ZMQUdTICArPSAtbm9zdGRpbmMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLW1uby10aHVt
Yi1pbnRlcndvcmsKK0NGTEFHUyAgKz0gLWl3aXRocHJlZml4IGluY2x1ZGUgLVduby1wb2lu
dGVyLWFyaXRoIC1waXBlCitDRkxBR1MgICs9IC1JJChCQVNFRElSKS9pbmNsdWRlIC1JJChC
QVNFRElSKS9pbmNsdWRlL3NlY3VyaXR5IC1JJChCQVNFRElSKS9pbmNsdWRlL3NlY3VyaXR5
L2NyeXB0bworQ0ZMQUdTCSs9ICQoQ0ZMQUdTLXkpCisKKworCmRpZmYgLXIgZTcwMTQ2MWIx
MjUxIHhlbi9hcmNoL2FybS9saWIvTWFrZWZpbGUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9NYWtlZmlsZQlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMSBAQAorb2JqLXkg
Kz0gZGl2NjQubworb2JqLXkgKz0gbWVtemVyby5vIG1lbXNldC5vIG1lbWNweS5vIG1lbWNo
ci5vIG1lbW1vdmUubworb2JqLXkgKz0gc3RyY2hyLm8gbGliMWZ1bmNzLm8gCitvYmoteSAr
PSBjbGVhcmJpdC5vIHRlc3RjaGFuZ2ViaXQubyB0ZXN0Y2xlYXJiaXQubyB0ZXN0c2V0Yml0
Lm8gc2V0Yml0Lm8gZmluZGJpdC5vCitvYmoteSArPSBnZXR1c2VyLm8gcHV0dXNlci5vIHVh
Y2Nlc3Mubworb2JqLXkgKz0gYXNobGRpMy5vIGFzaHJkaTMubworCitvYmoteSArPSBtdWxk
aTMubworb2JqLXkgKz0gZGVsYXkubworb2JqLXkgKz0gbHNocmRpMy5vIGJwYWJpLm8gYnBh
YmktYXNtLm8KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL2FzaGxk
aTMuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysg
Yi94ZW4vYXJjaC9hcm0vbGliL2FzaGxkaTMuUwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSw0NSBAQAorLyogQ29weXJpZ2h0IDE5OTUsIDE5OTYsIDE5OTgs
IDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAordW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCitGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55CitsYXRlciB2ZXJzaW9uLgorCitJbiBhZGRpdGlvbiB0byB0aGUgcGVybWlzc2lv
bnMgaW4gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB0aGUKK0ZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiBnaXZlcyB5b3UgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gbGluayB0
aGUKK2NvbXBpbGVkIHZlcnNpb24gb2YgdGhpcyBmaWxlIGludG8gY29tYmluYXRpb25zIHdp
dGggb3RoZXIgcHJvZ3JhbXMsCithbmQgdG8gZGlzdHJpYnV0ZSB0aG9zZSBjb21iaW5hdGlv
bnMgd2l0aG91dCBhbnkgcmVzdHJpY3Rpb24gY29taW5nCitmcm9tIHRoZSB1c2Ugb2YgdGhp
cyBmaWxlLiAgKFRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlc3RyaWN0aW9ucworZG8g
YXBwbHkgaW4gb3RoZXIgcmVzcGVjdHM7IGZvciBleGFtcGxlLCB0aGV5IGNvdmVyIG1vZGlm
aWNhdGlvbiBvZgordGhlIGZpbGUsIGFuZCBkaXN0cmlidXRpb24gd2hlbiBub3QgbGlua2Vk
IGludG8gYSBjb21iaW5lCitleGVjdXRhYmxlLikKKworVGhpcyBmaWxlIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy4gIElmIG5vdCwgd3JpdGUgdG8KK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCitCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4gICovCisKKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxh
c20vYXNtLW1hY3Jvcy5oPgorCisjZGVmaW5lIGFsIHIwCisjZGVmaW5lIGFoIHIxCisKK0VO
VFJZKF9fYXNobGRpMykKK0VOVFJZKF9fYWVhYmlfbGxzbCkKKworCXN1YnMJcjMsIHIyLCAj
MzIKKwlyc2IJaXAsIHIyLCAjMzIKKwltb3ZtaQlhaCwgYWgsIGxzbCByMgorCW1vdnBsCWFo
LCBhbCwgbHNsIHIzCisJb3JybWkJYWgsIGFoLCBhbCwgbHNyIGlwCisJbW92CWFsLCBhbCwg
bHNsIHIyCisJbW92CXBjLCBscgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2Fy
bS9saWIvYXNocmRpMy5TCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvYXNocmRpMy5TCUZyaSBGZWIgMDMgMTY6
MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQ2IEBACisvKiBDb3B5cmlnaHQgMTk5NSwg
MTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNQorICAgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cit1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkKK2xhdGVyIHZlcnNpb24uCisKK0luIGFkZGl0aW9uIHRvIHRo
ZSBwZXJtaXNzaW9ucyBpbiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHRoZQor
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzIHlvdSB1bmxpbWl0ZWQgcGVybWlzc2lv
biB0byBsaW5rIHRoZQorY29tcGlsZWQgdmVyc2lvbiBvZiB0aGlzIGZpbGUgaW50byBjb21i
aW5hdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcywKK2FuZCB0byBkaXN0cmlidXRlIHRob3Nl
IGNvbWJpbmF0aW9ucyB3aXRob3V0IGFueSByZXN0cmljdGlvbiBjb21pbmcKK2Zyb20gdGhl
IHVzZSBvZiB0aGlzIGZpbGUuICAoVGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVzdHJp
Y3Rpb25zCitkbyBhcHBseSBpbiBvdGhlciByZXNwZWN0czsgZm9yIGV4YW1wbGUsIHRoZXkg
Y292ZXIgbW9kaWZpY2F0aW9uIG9mCit0aGUgZmlsZSwgYW5kIGRpc3RyaWJ1dGlvbiB3aGVu
IG5vdCBsaW5rZWQgaW50byBhIGNvbWJpbmUKK2V4ZWN1dGFibGUuKQorCitUaGlzIGZpbGUg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0
CitXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCitNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0bwordGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKK0Jvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgor
I2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9hc20tbWFjcm9zLmg+CisK
KyNkZWZpbmUgYWwgcjAKKyNkZWZpbmUgYWggcjEKKworRU5UUlkoX19hc2hyZGkzKQorRU5U
UlkoX19hZWFiaV9sYXNyKQorCisJc3VicwlyMywgcjIsICMzMgorCXJzYglpcCwgcjIsICMz
MgorCW1vdm1pCWFsLCBhbCwgbHNyIHIyCisJbW92cGwJYWwsIGFoLCBhc3IgcjMKKwlvcnJt
aQlhbCwgYWwsIGFoLCBsc2wgaXAKKwltb3YJYWgsIGFoLCBhc3IgcjIKKwltb3YJcGMsIGxy
CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL2xpYi9icGFiaS1hc20uUwot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4v
YXJjaC9hcm0vbGliL2JwYWJpLWFzbS5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDU1IEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUg
PGFzbS9hc20tbWFjcm9zLmg+CisKKyNpZmRlZiBfX0FSTUVCX18KKyNkZWZpbmUgeHhoIHIw
CisjZGVmaW5lIHh4bCByMQorI2RlZmluZSB5eWggcjIKKyNkZWZpbmUgeXlsIHIzCisjZWxz
ZQorI2RlZmluZSB4eGggcjEKKyNkZWZpbmUgeHhsIHIwCisjZGVmaW5lIHl5aCByMworI2Rl
ZmluZSB5eWwgcjIKKyNlbmRpZgkKKwkKKyNpZiAwCitFTlRSWShfX2FlYWJpX2xkaXZtb2Qp
CisJc3RtZmQJc3AhLCB7cjQtcjcsIHIxMSwgcjE0fQorCW1vdglyNiwgcjAKKwltb3YJcjcs
IHIxCisJbW92CXI1LCByMgorCW1vdglyNCwgcjMKKworCWJsCV9fZGl2ZGkzCisKKwltdWwJ
cjQsIHIwLCByNAorCW1sYQlyMTIsIHI1LCByMSwgcjQKKworCXVtdWxsCXIyLCByMywgcjAs
IHI1CisJYWRkCXIzLCByMTIsIHIzCisJc3VicwlyMiwgcjUsIHIyCisJc2JjCXIzLCByNywg
cjMKKwlsZG1mZAlzcCEsIHtyNC1yNywgcjExLCByMTR9CisKKwlieAlyMTQKKyNlbmRpZgor
CitFTlRSWShfX2FlYWJpX2xkaXZtb2QpCisJc3ViCXNwLCBzcCwgIzgKKwlzdG1mZAlzcCEs
IHtzcCwgbHJ9CisJYmwJX19nbnVfbGRpdm1vZF9oZWxwZXIgKFBMVCkKKwlsZHIJbHIsIFtz
cCwgIzRdCisJYWRkCXNwLCBzcCwgIzgKKwlsZG1mZAlzcCEsIHtyMiwgcjN9CisJYngJbHIK
KwkKK0VOVFJZKF9fYWVhYmlfdWxkaXZtb2QpCisJc3ViCXNwLCBzcCwgIzgKKwlzdG1mZAlz
cCEsIHtzcCwgbHJ9CisJYmwJX19nbnVfdWxkaXZtb2RfaGVscGVyIChQTFQpCisJbGRyCWxy
LCBbc3AsICM0XQorCWFkZAlzcCwgc3AsICM4CisJbGRtZmQJc3AhLCB7cjIsIHIzfQorCWJ4
CWxyCisJCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvYnBhYmkuYwot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4v
YXJjaC9hcm0vbGliL2JwYWJpLmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBA
IC0wLDAgKzEsNTEgQEAKKy8qIE1pc2NlbGxhbmVvdXMgQlBBQkkgZnVuY3Rpb25zLgorCisg
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgorICAgQ29udHJpYnV0ZWQgYnkgQ29kZVNvdXJjZXJ5LCBMTEMuCisKKyAgIFRoaXMg
ZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKyAgIGxh
dGVyIHZlcnNpb24uCisKKyAgIEluIGFkZGl0aW9uIHRvIHRoZSBwZXJtaXNzaW9ucyBpbiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHRoZQorICAgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uIGdpdmVzIHlvdSB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBsaW5rIHRoZQor
ICAgY29tcGlsZWQgdmVyc2lvbiBvZiB0aGlzIGZpbGUgaW50byBjb21iaW5hdGlvbnMgd2l0
aCBvdGhlciBwcm9ncmFtcywKKyAgIGFuZCB0byBkaXN0cmlidXRlIHRob3NlIGNvbWJpbmF0
aW9ucyB3aXRob3V0IGFueSByZXN0cmljdGlvbiBjb21pbmcKKyAgIGZyb20gdGhlIHVzZSBv
ZiB0aGlzIGZpbGUuICAoVGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVzdHJpY3Rpb25z
CisgICBkbyBhcHBseSBpbiBvdGhlciByZXNwZWN0czsgZm9yIGV4YW1wbGUsIHRoZXkgY292
ZXIgbW9kaWZpY2F0aW9uIG9mCisgICB0aGUgZmlsZSwgYW5kIGRpc3RyaWJ1dGlvbiB3aGVu
IG5vdCBsaW5rZWQgaW50byBhIGNvbWJpbmUKKyAgIGV4ZWN1dGFibGUuKQorCisgICBUaGlz
IGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwgYnV0CisgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0
bworICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCitleHRl
cm4gbG9uZyBsb25nIF9fZGl2ZGkzIChsb25nIGxvbmcsIGxvbmcgbG9uZyk7CitleHRlcm4g
dW5zaWduZWQgbG9uZyBsb25nIF9fdWRpdmRpMyAodW5zaWduZWQgbG9uZyBsb25nLCB1bnNp
Z25lZCBsb25nIGxvbmcpOworCitsb25nIGxvbmcgX19nbnVfbGRpdm1vZF9oZWxwZXIgKGxv
bmcgbG9uZyBhLCBsb25nIGxvbmcgYiwgbG9uZyBsb25nICpyZW1haW5kZXIpCit7CisJbG9u
ZyBsb25nIHF1b3RpZW50OworCisJcXVvdGllbnQgPSBfX2RpdmRpMyAoYSwgYik7CisJKnJl
bWFpbmRlciA9IGEgLSBiICogcXVvdGllbnQ7CisJcmV0dXJuIHF1b3RpZW50OworfQorCit1
bnNpZ25lZCBsb25nIGxvbmcgX19nbnVfdWxkaXZtb2RfaGVscGVyICh1bnNpZ25lZCBsb25n
IGxvbmcgYSwgdW5zaWduZWQgbG9uZyBsb25nIGIsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcmVt
YWluZGVyKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyBxdW90aWVudDsKKworCXF1b3RpZW50
ID0gX191ZGl2ZGkzIChhLCBiKTsKKwkqcmVtYWluZGVyID0gYSAtIGIgKiBxdW90aWVudDsK
KworCXJldHVybiBxdW90aWVudDsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJj
aC9hcm0vbGliL2NsZWFyYml0LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9jbGVhcmJpdC5TCUZyaSBGZWIg
MDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDI0IEBACisjaW5jbHVkZSA8eGVu
L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20v
YXNtLW1hY3Jvcy5oPgorCisgICAgICAgICAgICAgICAgLnRleHQKKworLyoKKyAqIFB1cnBv
c2UgIDogRnVuY3Rpb24gdG8gY2xlYXIgYSBiaXQKKyAqIFByb3RvdHlwZTogaW50IGNsZWFy
X2JpdChpbnQgYml0LCB2b2lkICphZGRyKQorICovCitFTlRSWShfY2xlYXJfYml0X2JlKQor
CQllb3IJcjAsIHIwLCAjMHgxOAkJQCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXJpbmcKK0VOVFJZ
KF9jbGVhcl9iaXRfbGUpCisJCWFuZAlyMiwgcjAsICM3CisJCW1vdglyMywgIzEKKwkJbW92
CXIzLCByMywgbHNsIHIyCisJCXNhdmVfYW5kX2Rpc2FibGVfaXJxcyBpcCwgcjIKKwkJbGRy
YglyMiwgW3IxLCByMCwgbHNyICMzXQorCQliaWMJcjIsIHIyLCByMworCQlzdHJiCXIyLCBb
cjEsIHIwLCBsc3IgIzNdCisJCXJlc3RvcmVfaXJxcyBpcAorCQltb3YJcGMsbHIKKworCmRp
ZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvY29weV90ZW1wbGF0ZS5TCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9h
cmNoL2FybS9saWIvY29weV90ZW1wbGF0ZS5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiAr
MDkwMApAQCAtMCwwICsxLDI1NSBAQAorLyoKKyAqICBsaW51eC9hcmNoL2FybS9saWIvY29w
eV90ZW1wbGF0ZS5zCisgKgorICogIENvZGUgdGVtcGxhdGUgZm9yIG9wdGltaXplZCBtZW1v
cnkgY29weSBmdW5jdGlvbnMKKyAqCisgKiAgQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiAg
Q3JlYXRlZDoJU2VwIDI4LCAyMDA1CisgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3
YXJlLCBJbmMuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAq
ICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisv
KgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBlbmFibGUgY29kZSB0byBjYWNoZWxpbmUgYWxp
Z24gdGhlIHNvdXJjZSBwb2ludGVyLgorICogRXhwZXJpbWVudHMgb24gdGVzdGVkIGFyY2hp
dGVjdHVyZXMgKFN0cm9uZ0FSTSBhbmQgWFNjYWxlKSBkaWRuJ3Qgc2hvdworICogdGhpcyBh
IHdvcnRod2hpbGUgdGhpbmcgdG8gZG8uICBUaGF0IG1pZ2h0IGJlIGRpZmZlcmVudCBpbiB0
aGUgZnV0dXJlLgorICovCisvLyNkZWZpbmUgQ0FMR04oY29kZS4uLikJY29kZQorI2RlZmlu
ZSBDQUxHTihjb2RlLi4uKQorCisvKgorICogVGhlb3J5IG9mIG9wZXJhdGlvbgorICogLS0t
LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgZmlsZSBwcm92aWRlcyB0aGUgY29yZSBj
b2RlIGZvciBhIGZvcndhcmQgbWVtb3J5IGNvcHkgdXNlZCBpbgorICogdGhlIGltcGxlbWVu
dGF0aW9uIG9mIG1lbWNvcHkoKSwgY29weV90b191c2VyKCkgYW5kIGNvcHlfZnJvbV91c2Vy
KCkuCisgKgorICogVGhlIGluY2x1ZGluZyBmaWxlIG11c3QgZGVmaW5lIHRoZSBmb2xsb3dp
bmcgYWNjZXNzb3IgbWFjcm9zCisgKiBhY2NvcmRpbmcgdG8gdGhlIG5lZWQgb2YgdGhlIGdp
dmVuIGZ1bmN0aW9uOgorICoKKyAqIGxkcjF3IHB0ciByZWcgYWJvcnQKKyAqCisgKglUaGlz
IGxvYWRzIG9uZSB3b3JkIGZyb20gJ3B0cicsIHN0b3JlcyBpdCBpbiAncmVnJyBhbmQgaW5j
cmVtZW50cworICoJJ3B0cicgdG8gdGhlIG5leHQgd29yZC4gVGhlICdhYm9ydCcgYXJndW1l
bnQgaXMgdXNlZCBmb3IgZml4dXAgdGFibGVzLgorICoKKyAqIGxkcjR3IHB0ciByZWcxIHJl
ZzIgcmVnMyByZWc0IGFib3J0CisgKiBsZHI4dyBwdHIsIHJlZzEgcmVnMiByZWczIHJlZzQg
cmVnNSByZWc2IHJlZzcgcmVnOCBhYm9ydAorICoKKyAqCVRoaXMgbG9hZHMgZm91ciBvciBl
aWdodCB3b3JkcyBzdGFydGluZyBmcm9tICdwdHInLCBzdG9yZXMgdGhlbQorICoJaW4gcHJv
dmlkZWQgcmVnaXN0ZXJzIGFuZCBpbmNyZW1lbnRzICdwdHInIHBhc3QgdGhvc2Ugd29yZHMu
CisgKglUaGUnYWJvcnQnIGFyZ3VtZW50IGlzIHVzZWQgZm9yIGZpeHVwIHRhYmxlcy4KKyAq
CisgKiBsZHIxYiBwdHIgcmVnIGNvbmQgYWJvcnQKKyAqCisgKglTaW1pbGFyIHRvIGxkcjF3
LCBidXQgaXQgbG9hZHMgYSBieXRlIGFuZCBpbmNyZW1lbnRzICdwdHInIG9uZSBieXRlLgor
ICoJSXQgYWxzbyBtdXN0IGFwcGx5IHRoZSBjb25kaXRpb24gY29kZSBpZiBwcm92aWRlZCwg
b3RoZXJ3aXNlIHRoZQorICoJImFsIiBjb25kaXRpb24gaXMgYXNzdW1lZCBieSBkZWZhdWx0
LgorICoKKyAqIHN0cjF3IHB0ciByZWcgYWJvcnQKKyAqIHN0cjh3IHB0ciByZWcxIHJlZzIg
cmVnMyByZWc0IHJlZzUgcmVnNiByZWc3IHJlZzggYWJvcnQKKyAqIHN0cjFiIHB0ciByZWcg
Y29uZCBhYm9ydAorICoKKyAqCVNhbWUgYXMgdGhlaXIgbGRyKiBjb3VudGVycGFydHMsIGJ1
dCBkYXRhIGlzIHN0b3JlZCB0byAncHRyJyBsb2NhdGlvbgorICoJcmF0aGVyIHRoYW4gYmVp
bmcgbG9hZGVkLgorICoKKyAqIGVudGVyIHJlZzEgcmVnMgorICoKKyAqCVByZXNlcnZlIHRo
ZSBwcm92aWRlZCByZWdpc3RlcnMgb24gdGhlIHN0YWNrIHBsdXMgYW55IGFkZGl0aW9uYWwK
KyAqCWRhdGEgYXMgbmVlZGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBpbmNsdWRpbmcgdGhp
cyBjb2RlLiBDYWxsZWQKKyAqCXVwb24gY29kZSBlbnRyeS4KKyAqCisgKiBleGl0IHJlZzEg
cmVnMgorICoKKyAqCVJlc3RvcmUgcmVnaXN0ZXJzIHdpdGggdGhlIHZhbHVlcyBwcmV2aW91
c2x5IHNhdmVkIHdpdGggdGhlCisgKgkncHJlc2VydicgbWFjcm8uIENhbGxlZCB1cG9uIGNv
ZGUgdGVybWluYXRpb24uCisgKi8KKworCisJCWVudGVyCXI0LCBscgorCisJCXN1YnMJcjIs
IHIyLCAjNAorCQlibHQJOGYKKwkJYW5kcwlpcCwgcjAsICMzCisJCXBsZAlbcjEsICMwXQor
CQlibmUJOWYKKwkJYW5kcwlpcCwgcjEsICMzCisJCWJuZQkxMGYKKworMToJCXN1YnMJcjIs
IHIyLCAjKDI4KQorCQlzdG1mZAlzcCEsIHtyNSAtIHI4fQorCQlibHQJNWYKKworCUNBTEdO
KAlhbmRzCWlwLCByMSwgIzMxCQkpCisJQ0FMR04oCXJzYglyMywgaXAsICMzMgkJKQorCUNB
TEdOKAlzYmNuZXMJcjQsIHIzLCByMgkJKSAgQCBDIGlzIGFsd2F5cyBzZXQgaGVyZQorCUNB
TEdOKAliY3MJMmYJCQkpCisJQ0FMR04oCWFkcglyNCwgNmYJCQkpCisJQ0FMR04oCXN1YnMJ
cjIsIHIyLCByMwkJKSAgQCBDIGdldHMgc2V0CisJQ0FMR04oCWFkZAlwYywgcjQsIGlwCQkp
CisKKwkJcGxkCVtyMSwgIzBdCisyOgkJc3VicwlyMiwgcjIsICM5NgorCQlwbGQJW3IxLCAj
MjhdCisJCWJsdAk0ZgorCQlwbGQJW3IxLCAjNjBdCisJCXBsZAlbcjEsICM5Ml0KKworMzoJ
CXBsZAlbcjEsICMxMjRdCis0OgkJbGRyOHcJcjEsIHIzLCByNCwgcjUsIHI2LCByNywgcjgs
IGlwLCBsciwgYWJvcnQ9MjBmCisJCXN1YnMJcjIsIHIyLCAjMzIKKwkJc3RyOHcJcjAsIHIz
LCByNCwgcjUsIHI2LCByNywgcjgsIGlwLCBsciwgYWJvcnQ9MjBmCisJCWJnZQkzYgorCQlj
bW4JcjIsICM5NgkKKwkJYmdlCTRiCisKKzU6CQlhbmRzCWlwLCByMiwgIzI4CisJCXJzYglp
cCwgaXAsICMzMgorCQlhZGRuZQlwYywgcGMsIGlwCQlAIEMgaXMgYWx3YXlzIGNsZWFyIGhl
cmUKKwkJYgk3ZgorNjoJCW5vcAorCQlsZHIxdwlyMSwgcjMsIGFib3J0PTIwZgorCQlsZHIx
dwlyMSwgcjQsIGFib3J0PTIwZgorCQlsZHIxdwlyMSwgcjUsIGFib3J0PTIwZgorCQlsZHIx
dwlyMSwgcjYsIGFib3J0PTIwZgorCQlsZHIxdwlyMSwgcjcsIGFib3J0PTIwZgorCQlsZHIx
dwlyMSwgcjgsIGFib3J0PTIwZgorCQlsZHIxdwlyMSwgbHIsIGFib3J0PTIwZgorCisJCWFk
ZAlwYywgcGMsIGlwCisJCW5vcAorCQlub3AKKwkJc3RyMXcJcjAsIHIzLCBhYm9ydD0yMGYK
KwkJc3RyMXcJcjAsIHI0LCBhYm9ydD0yMGYKKwkJc3RyMXcJcjAsIHI1LCBhYm9ydD0yMGYK
KwkJc3RyMXcJcjAsIHI2LCBhYm9ydD0yMGYKKwkJc3RyMXcJcjAsIHI3LCBhYm9ydD0yMGYK
KwkJc3RyMXcJcjAsIHI4LCBhYm9ydD0yMGYKKwkJc3RyMXcJcjAsIGxyLCBhYm9ydD0yMGYK
KworCUNBTEdOKAliY3MJMmIJCQkpCisKKzc6CQlsZG1mZAlzcCEsIHtyNSAtIHI4fQorCis4
OgkJbW92cwlyMiwgcjIsIGxzbCAjMzEKKwkJbGRyMWIJcjEsIHIzLCBuZSwgYWJvcnQ9MjFm
CisJCWxkcjFiCXIxLCByNCwgY3MsIGFib3J0PTIxZgorCQlsZHIxYglyMSwgaXAsIGNzLCBh
Ym9ydD0yMWYKKwkJc3RyMWIJcjAsIHIzLCBuZSwgYWJvcnQ9MjFmCisJCXN0cjFiCXIwLCBy
NCwgY3MsIGFib3J0PTIxZgorCQlzdHIxYglyMCwgaXAsIGNzLCBhYm9ydD0yMWYKKworCQll
eGl0CXI0LCBwYworCis5OgkJcnNiCWlwLCBpcCwgIzQKKwkJY21wCWlwLCAjMgorCQlsZHIx
YglyMSwgcjMsIGd0LCBhYm9ydD0yMWYKKwkJbGRyMWIJcjEsIHI0LCBnZSwgYWJvcnQ9MjFm
CisJCWxkcjFiCXIxLCBsciwgYWJvcnQ9MjFmCisJCXN0cjFiCXIwLCByMywgZ3QsIGFib3J0
PTIxZgorCQlzdHIxYglyMCwgcjQsIGdlLCBhYm9ydD0yMWYKKwkJc3VicwlyMiwgcjIsIGlw
CisJCXN0cjFiCXIwLCBsciwgYWJvcnQ9MjFmCisJCWJsdAk4YgorCQlhbmRzCWlwLCByMSwg
IzMKKwkJYmVxCTFiCisKKzEwOgkJYmljCXIxLCByMSwgIzMKKwkJY21wCWlwLCAjMgorCQls
ZHIxdwlyMSwgbHIsIGFib3J0PTIxZgorCQliZXEJMTdmCisJCWJndAkxOGYKKworCisJCS5t
YWNybwlmb3J3YXJkX2NvcHlfc2hpZnQgcHVsbCBwdXNoCisKKwkJc3VicwlyMiwgcjIsICMy
OAorCQlibHQJMTRmCisKKwlDQUxHTigJYW5kcwlpcCwgcjEsICMzMQkJKQorCUNBTEdOKAly
c2IJaXAsIGlwLCAjMzIJCSkKKwlDQUxHTigJc2JjbmVzCXI0LCBpcCwgcjIJCSkgIEAgQyBp
cyBhbHdheXMgc2V0IGhlcmUKKwlDQUxHTigJc3ViY2MJcjIsIHIyLCBpcAkJKQorCUNBTEdO
KAliY2MJMTVmCQkJKQorCisxMToJCXN0bWZkCXNwISwge3I1IC0gcjl9CisKKwkJcGxkCVty
MSwgIzBdCisJCXN1YnMJcjIsIHIyLCAjOTYKKwkJcGxkCVtyMSwgIzI4XQorCQlibHQJMTNm
CisJCXBsZAlbcjEsICM2MF0KKwkJcGxkCVtyMSwgIzkyXQorCisxMjoJCXBsZAlbcjEsICMx
MjRdCisxMzoJCWxkcjR3CXIxLCByNCwgcjUsIHI2LCByNywgYWJvcnQ9MTlmCisJCW1vdgly
MywgbHIsIHB1bGwgI1xwdWxsCisJCXN1YnMJcjIsIHIyLCAjMzIKKwkJbGRyNHcJcjEsIHI4
LCByOSwgaXAsIGxyLCBhYm9ydD0xOWYKKwkJb3JyCXIzLCByMywgcjQsIHB1c2ggI1xwdXNo
CisJCW1vdglyNCwgcjQsIHB1bGwgI1xwdWxsCisJCW9ycglyNCwgcjQsIHI1LCBwdXNoICNc
cHVzaAorCQltb3YJcjUsIHI1LCBwdWxsICNccHVsbAorCQlvcnIJcjUsIHI1LCByNiwgcHVz
aCAjXHB1c2gKKwkJbW92CXI2LCByNiwgcHVsbCAjXHB1bGwKKwkJb3JyCXI2LCByNiwgcjcs
IHB1c2ggI1xwdXNoCisJCW1vdglyNywgcjcsIHB1bGwgI1xwdWxsCisJCW9ycglyNywgcjcs
IHI4LCBwdXNoICNccHVzaAorCQltb3YJcjgsIHI4LCBwdWxsICNccHVsbAorCQlvcnIJcjgs
IHI4LCByOSwgcHVzaCAjXHB1c2gKKwkJbW92CXI5LCByOSwgcHVsbCAjXHB1bGwKKwkJb3Jy
CXI5LCByOSwgaXAsIHB1c2ggI1xwdXNoCisJCW1vdglpcCwgaXAsIHB1bGwgI1xwdWxsCisJ
CW9ycglpcCwgaXAsIGxyLCBwdXNoICNccHVzaAorCQlzdHI4dwlyMCwgcjMsIHI0LCByNSwg
cjYsIHI3LCByOCwgcjksIGlwLCAsIGFib3J0PTE5ZgorCQliZ2UJMTJiCisJCWNtbglyMiwg
Izk2CQorCQliZ2UJMTNiCisKKwkJbGRtZmQJc3AhLCB7cjUgLSByOX0KKworMTQ6CQlhbmRz
CWlwLCByMiwgIzI4CisJCWJlcQkxNmYKKworMTU6CQltb3YJcjMsIGxyLCBwdWxsICNccHVs
bAorCQlsZHIxdwlyMSwgbHIsIGFib3J0PTIxZgorCQlzdWJzCWlwLCBpcCwgIzQKKwkJb3Jy
CXIzLCByMywgbHIsIHB1c2ggI1xwdXNoCisJCXN0cjF3CXIwLCByMywgYWJvcnQ9MjFmCisJ
CWJndAkxNWIKKwlDQUxHTigJY21wCXIyLCAjMAkJCSkKKwlDQUxHTigJYmdlCTExYgkJCSkK
KworMTY6CQlzdWIJcjEsIHIxLCAjKFxwdXNoIC8gOCkKKwkJYgk4YgorCisJCS5lbmRtCisK
KworCQlmb3J3YXJkX2NvcHlfc2hpZnQJcHVsbD04CXB1c2g9MjQKKworMTc6CQlmb3J3YXJk
X2NvcHlfc2hpZnQJcHVsbD0xNglwdXNoPTE2CisKKzE4OgkJZm9yd2FyZF9jb3B5X3NoaWZ0
CXB1bGw9MjQJcHVzaD04CisKKworLyoKKyAqIEFib3J0IHByZWFtYmxlIGFuZCBjb21wbGV0
aW9uIG1hY3Jvcy4KKyAqIElmIGEgZml4dXAgaGFuZGxlciBpcyByZXF1aXJlZCB0aGVuIHRo
b3NlIG1hY3JvcyBtdXN0IHN1cnJvdW5kIGl0LgorICogSXQgaXMgYXNzdW1lZCB0aGF0IHRo
ZSBmaXh1cCBjb2RlIHdpbGwgaGFuZGxlIHRoZSBwcml2YXRlIHBhcnQgb2YKKyAqIHRoZSBl
eGl0IG1hY3JvLgorICovCisKKwkubWFjcm8JY29weV9hYm9ydF9wcmVhbWJsZQorMTk6CWxk
bWZkCXNwISwge3I1IC0gcjl9CisJYgkyMWYKKzIwOglsZG1mZAlzcCEsIHtyNSAtIHI4fQor
MjE6CisJLmVuZG0KKworCS5tYWNybwljb3B5X2Fib3J0X2VuZAorCWxkbWZkCXNwISwge3I0
LCBwY30KKwkuZW5kbQorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIv
ZGVsYXkuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi94ZW4vYXJjaC9hcm0vbGliL2RlbGF5LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEy
ICswOTAwCkBAIC0wLDAgKzEsNyBAQAorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNs
dWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisJCS50ZXh0CisKK0VOVFJZKF91ZGVsYXkpCisJ
bW92CXBjLGxyCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvZGl2NjQu
UwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vYXJjaC9hcm0vbGliL2RpdjY0LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAw
CkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL2xpYi9kaXY2NC5T
CisgKgorICogIE9wdGltaXplZCBjb21wdXRhdGlvbiBvZiA2NC1iaXQgZGl2aWRlbmQgLyAz
Mi1iaXQgZGl2aXNvciAgCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENy
ZWF0ZWQ6CU9jdCA1LCAyMDAzCisgKiAgQ29weXJpZ2h0OglNb250YSBWaXN0YSBTb2Z0d2Fy
ZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiAg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpbmNs
dWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKyNpZmRl
ZiBfX0FSTUVCX18KKyNkZWZpbmUgeGggcjAKKyNkZWZpbmUgeGwgcjEKKyNkZWZpbmUgeWgg
cjIKKyNkZWZpbmUgeWwgcjMKKyNlbHNlCisjZGVmaW5lIHhsIHIwCisjZGVmaW5lIHhoIHIx
CisjZGVmaW5lIHlsIHIyCisjZGVmaW5lIHloIHIzCisjZW5kaWYKKworLyoKKyAqIF9fZG9f
ZGl2NjQ6IHBlcmZvcm0gYSBkaXZpc2lvbiB3aXRoIDY0LWJpdCBkaXZpZGVuZCBhbmQgMzIt
Yml0IGRpdmlzb3IuCisgKgorICogTm90ZTogQ2FsbGluZyBjb252ZW50aW9uIGlzIHRvdGFs
bHkgbm9uIHN0YW5kYXJkIGZvciBvcHRpbWFsIGNvZGUuCisgKiAgICAgICBUaGlzIGlzIG1l
YW50IHRvIGJlIHVzZWQgYnkgZG9fZGl2KCkgZnJvbSBpbmNsdWRlL2FzbS9kaXY2NC5oIG9u
bHkuCisgKgorICogSW5wdXQgcGFyYW1ldGVyczoKKyAqIAl4aC14bAk9IGRpdmlkZW5kIChj
bG9iYmVyZWQpCisgKiAJcjQJPSBkaXZpc29yIChwcmVzZXJ2ZWQpCisgKgorICogT3V0cHV0
IHZhbHVlczoKKyAqIAl5aC15bAk9IHJlc3VsdAorICogCXhoCT0gcmVtYWluZGVyCisgKgor
ICogQ2xvYmJlcmVkIHJlZ3M6IHhsLCBpcAorICovCisKK0VOVFJZKF9fZG9fZGl2NjQpCisK
KwlAIFRlc3QgZm9yIGVhc3kgcGF0aHMgZmlyc3QuCisJc3VicwlpcCwgcjQsICMxCisJYmxz
CTlmCQkJQCBkaXZpc29yIGlzIDAgb3IgMQorCXRzdAlpcCwgcjQKKwliZXEJOGYJCQlAIGRp
dmlzb3IgaXMgcG93ZXIgb2YgMgorCisJQCBTZWUgaWYgd2UgbmVlZCB0byBoYW5kbGUgdXBw
ZXIgMzItYml0IHJlc3VsdC4KKwljbXAJeGgsIHI0CisJbW92CXloLCAjMAorCWJsbwkzZgor
CisJQCBBbGlnbiBkaXZpc29yIHdpdGggdXBwZXIgcGFydCBvZiBkaXZpZGVuZC4KKwlAIFRo
ZSBhbGlnbmVkIGRpdmlzb3IgaXMgc3RvcmVkIGluIHlsIHByZXNlcnZpbmcgdGhlIG9yaWdp
bmFsLgorCUAgVGhlIGJpdCBwb3NpdGlvbiBpcyBzdG9yZWQgaW4gaXAuCisKKyNpZiBfX0xJ
TlVYX0FSTV9BUkNIX18gPj0gNQorCisJY2x6CXlsLCByNAorCWNseglpcCwgeGgKKwlzdWIJ
eWwsIHlsLCBpcAorCW1vdglpcCwgIzEKKwltb3YJaXAsIGlwLCBsc2wgeWwKKwltb3YJeWws
IHI0LCBsc2wgeWwKKworI2Vsc2UKKworCW1vdgl5bCwgcjQKKwltb3YJaXAsICMxCisxOglj
bXAJeWwsICMweDgwMDAwMDAwCisJY21wY2MJeWwsIHhoCisJbW92Y2MJeWwsIHlsLCBsc2wg
IzEKKwltb3ZjYwlpcCwgaXAsIGxzbCAjMQorCWJjYwkxYgorCisjZW5kaWYKKworCUAgVGhl
IGRpdmlzaW9uIGxvb3AgZm9yIG5lZWRlZCB1cHBlciBiaXQgcG9zaXRpb25zLgorIAlAIEJy
ZWFrIG91dCBlYXJseSBpZiBkaXZpZGVuZCByZWFjaGVzIDAuCisyOgljbXAJeGgsIHlsCisJ
b3JyY3MJeWgsIHloLCBpcAorCXN1YmNzcwl4aCwgeGgsIHlsCisJbW92bmVzCWlwLCBpcCwg
bHNyICMxCisJbW92CXlsLCB5bCwgbHNyICMxCisJYm5lCTJiCisKKwlAIFNlZSBpZiB3ZSBu
ZWVkIHRvIGhhbmRsZSBsb3dlciAzMi1iaXQgcmVzdWx0LgorMzoJY21wCXhoLCAjMAorCW1v
dgl5bCwgIzAKKwljbXBlcQl4bCwgcjQKKwltb3Zsbwl4aCwgeGwKKwltb3ZsbwlwYywgbHIK
KworCUAgVGhlIGRpdmlzaW9uIGxvb3AgZm9yIGxvd2VyIGJpdCBwb3NpdGlvbnMuCisJQCBI
ZXJlIHdlIHNoaWZ0IHJlbWFpbmVyIGJpdHMgbGVmdHdhcmRzIHJhdGhlciB0aGFuIG1vdmlu
ZyB0aGUKKwlAIGRpdmlzb3IgZm9yIGNvbXBhcmlzb25zLCBjb25zaWRlcmluZyB0aGUgY2Fy
cnktb3V0IGJpdCBhcyB3ZWxsLgorCW1vdglpcCwgIzB4ODAwMDAwMDAKKzQ6CW1vdnMJeGws
IHhsLCBsc2wgIzEKKwlhZGNzCXhoLCB4aCwgeGgKKwliZXEJNmYKKwljbXBjYwl4aCwgcjQK
KzU6CW9ycmNzCXlsLCB5bCwgaXAKKwlzdWJjcwl4aCwgeGgsIHI0CisJbW92cwlpcCwgaXAs
IGxzciAjMQorCWJuZQk0YgorCW1vdglwYywgbHIKKworCUAgVGhlIHRvcCBwYXJ0IG9mIHJl
bWFpbmRlciBiZWNhbWUgemVyby4gIElmIGNhcnJ5IGlzIHNldAorCUAgKHRoZSAzM3RoIGJp
dCkgdGhpcyBpcyBhIGZhbHNlIHBvc2l0aXZlIHNvIHJlc3VtZSB0aGUgbG9vcC4KKwlAIE90
aGVyd2lzZSwgaWYgbG93ZXIgcGFydCBpcyBhbHNvIG51bGwgdGhlbiB3ZSBhcmUgZG9uZS4K
KzY6CWJjcwk1YgorCWNtcAl4bCwgIzAKKwltb3ZlcQlwYywgbHIKKworCUAgV2Ugc3RpbGwg
aGF2ZSByZW1haW5lciBiaXRzIGluIHRoZSBsb3cgcGFydC4gIEJyaW5nIHRoZW0gdXAuCisK
KyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNQorCisJY2x6CXhoLCB4bAkJCUAgd2Uga25v
dyB4aCBpcyB6ZXJvIGhlcmUgc28uLi4KKwlhZGQJeGgsIHhoLCAjMQorCW1vdgl4bCwgeGws
IGxzbCB4aAorCW1vdglpcCwgaXAsIGxzciB4aAorCisjZWxzZQorCis3Ogltb3ZzCXhsLCB4
bCwgbHNsICMxCisJbW92CWlwLCBpcCwgbHNyICMxCisJYmNjCTdiCisKKyNlbmRpZgorCisJ
QCBDdXJyZW50IHJlbWFpbmRlciBpcyBub3cgMS4gIEl0IGlzIHdvcnRobGVzcyB0byBjb21w
YXJlIHdpdGgKKwlAIGRpdmlzb3IgYXQgdGhpcyBwb2ludCBzaW5jZSBkaXZpc29yIGNhbiBu
b3QgYmUgc21hbGxlciB0aGFuIDMgaGVyZS4KKwlAIElmIHBvc3NpYmxlLCBicmFuY2ggZm9y
IGFub3RoZXIgc2hpZnQgaW4gdGhlIGRpdmlzaW9uIGxvb3AuCisJQCBJZiBubyBiaXQgcG9z
aXRpb24gbGVmdCB0aGVuIHdlIGFyZSBkb25lLgorCW1vdnMJaXAsIGlwLCBsc3IgIzEKKwlt
b3YJeGgsICMxCisJYm5lCTRiCisJbW92CXBjLCBscgorCis4OglAIERpdmlzaW9uIGJ5IGEg
cG93ZXIgb2YgMjogZGV0ZXJtaW5lIHdoYXQgdGhhdCBkaXZpc29yIG9yZGVyIGlzCisJQCB0
aGVuIHNpbXBseSBzaGlmdCB2YWx1ZXMgYXJvdW5kCisKKyNpZiBfX0xJTlVYX0FSTV9BUkNI
X18gPj0gNQorCisJY2x6CWlwLCByNAorCXJzYglpcCwgaXAsICMzMQorCisjZWxzZQorCisJ
bW92CXlsLCByNAorCWNtcAlyNCwgIygxIDw8IDE2KQorCW1vdglpcCwgIzAKKwltb3Zocwl5
bCwgeWwsIGxzciAjMTYKKwltb3ZocwlpcCwgIzE2CisKKwljbXAJeWwsICMoMSA8PCA4KQor
CW1vdmhzCXlsLCB5bCwgbHNyICM4CisJYWRkaHMJaXAsIGlwLCAjOAorCisJY21wCXlsLCAj
KDEgPDwgNCkKKwltb3Zocwl5bCwgeWwsIGxzciAjNAorCWFkZGhzCWlwLCBpcCwgIzQKKwor
CWNtcAl5bCwgIygxIDw8IDIpCisJYWRkaGkJaXAsIGlwLCAjMworCWFkZGxzCWlwLCBpcCwg
eWwsIGxzciAjMQorCisjZW5kaWYKKworCW1vdgl5aCwgeGgsIGxzciBpcAorCW1vdgl5bCwg
eGwsIGxzciBpcAorCXJzYglpcCwgaXAsICMzMgorCW9ycgl5bCwgeWwsIHhoLCBsc2wgaXAK
Kwltb3YJeGgsIHhsLCBsc2wgaXAKKwltb3YJeGgsIHhoLCBsc3IgaXAKKwltb3YJcGMsIGxy
CisKKwlAIGVxIC0+IGRpdmlzaW9uIGJ5IDE6IG9idmlvdXMgZW5vdWdoLi4uCis5Ogltb3Zl
cQl5bCwgeGwKKwltb3ZlcQl5aCwgeGgKKwltb3ZlcQl4aCwgIzAKKwltb3ZlcQlwYywgbHIK
KworCUAgRGl2aXNpb24gYnkgMDoKKwlzdHIJbHIsIFtzcCwgIy04XSEKKwlibAlfX2RpdjAK
KworCUAgYXMgd3JvbmcgYXMgaXQgY291bGQgYmUuLi4KKwltb3YJeWwsICMwCisJbW92CXlo
LCAjMAorCW1vdgl4aCwgIzAKKwlsZHIJcGMsIFtzcF0sICM4CisKZGlmZiAtciBlNzAxNDYx
YjEyNTEgeGVuL2FyY2gvYXJtL2xpYi9maW5kYml0LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9maW5kYml0
LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsODEgQEAKKyNp
bmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKwor
ICAgICAgICAgICAgICAgIC50ZXh0CisKKy8qCisgKiBQdXJwb3NlICA6IEZpbmQgYSAnemVy
bycgYml0CisgKiBQcm90b3R5cGU6IGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKmFk
ZHIsIHVuc2lnbmVkIGludCBtYXhiaXQpOworICovCitFTlRSWShfZmluZF9maXJzdF96ZXJv
X2JpdCkKKwkJdGVxCXIxLCAjMAkKKwkJYmVxCTNmCisJCW1vdglyMiwgIzAKKzE6CQlsZHJi
CXIzLCBbcjAsIHIyLCBsc3IgIzNdCisJCWVvcnMJcjMsIHIzLCAjMHhmZgkJQCBpbnZlcnQg
Yml0cworCQlibmUJLmZvdW5kCQkJQCBhbnkgbm93IHNldCAtIGZvdW5kIHplcm8gYml0CisJ
CWFkZAlyMiwgcjIsICM4CQlAIG5leHQgYml0IHBvaW50ZXIKKzI6CQljbXAJcjIsIHIxCQkJ
QCBhbnkgbW9yZT8KKwkJYmxvCTFiCiszOgkJbW92CXIwLCByMQkJCUAgbm8gZnJlZSBiaXRz
CisJCW1vdglwYyxscgorCisvKgorICogUHVycG9zZSAgOiBGaW5kIG5leHQgJ3plcm8nIGJp
dAorICogUHJvdG90eXBlOiBpbnQgZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsIHVu
c2lnbmVkIGludCBtYXhiaXQsIGludCBvZmZzZXQpCisgKi8KK0VOVFJZKF9maW5kX25leHRf
emVyb19iaXQpCisJCXRlcQlyMSwgIzAKKwkJYmVxCTNiCisJCWFuZHMJaXAsIHIyLCAjNwor
CQliZXEJMWIJCQlAIElmIG5ldyBieXRlLCBnb3RvIG9sZCByb3V0aW5lCisJCWxkcmIJcjMs
IFtyMCwgcjIsIGxzciAjM10KKwkJZW9yCXIzLCByMywgIzB4ZmYJCUAgbm93IGxvb2tpbmcg
Zm9yIGEgMSBiaXQKKwkJbW92cwlyMywgcjMsIGxzciBpcAkJQCBzaGlmdCBvZmYgdW51c2Vk
IGJpdHMKKwkJYm5lCS5mb3VuZAorCQlvcnIJcjIsIHIyLCAjNwkJQCBpZiB6ZXJvLCB0aGVu
IG5vIGJpdHMgaGVyZQorCQlhZGQJcjIsIHIyLCAjMQkJQCBhbGlnbiBiaXQgcG9pbnRlcgor
CQliCTJiCQkJQCBsb29wIGZvciBuZXh0IGJpdAorCisvKgorICogUHVycG9zZSAgOiBGaW5k
IGEgJ29uZScgYml0CisgKiBQcm90b3R5cGU6IGludCBmaW5kX2ZpcnN0X2JpdChjb25zdCB1
bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBpbnQgbWF4Yml0KTsKKyAqLworRU5UUlko
X2ZpbmRfZmlyc3RfYml0KQorCQl0ZXEJcjEsICMwCQorCQliZXEJM2YKKwkJbW92CXIyLCAj
MAorMToJCWxkcmIJcjMsIFtyMCwgcjIsIGxzciAjM10KKwkJbW92cwlyMywgcjMKKwkJYm5l
CS5mb3VuZAkJCUAgYW55IG5vdyBzZXQgLSBmb3VuZCB6ZXJvIGJpdAorCQlhZGQJcjIsIHIy
LCAjOAkJQCBuZXh0IGJpdCBwb2ludGVyCisyOgkJY21wCXIyLCByMQkJCUAgYW55IG1vcmU/
CisJCWJsbwkxYgorMzoJCW1vdglyMCwgcjEJCQlAIG5vIGZyZWUgYml0cworCQltb3YJcGMs
bHIKKworLyoKKyAqIFB1cnBvc2UgIDogRmluZCBuZXh0ICdvbmUnIGJpdAorICogUHJvdG90
eXBlOiBpbnQgZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsIHVuc2lnbmVkIGludCBt
YXhiaXQsIGludCBvZmZzZXQpCisgKi8KK0VOVFJZKF9maW5kX25leHRfYml0KQorCQl0ZXEJ
cjEsICMwCisJCWJlcQkzYgorCQlhbmRzCWlwLCByMiwgIzcKKwkJYmVxCTFiCQkJQCBJZiBu
ZXcgYnl0ZSwgZ290byBvbGQgcm91dGluZQorCQlsZHJiCXIzLCBbcjAsIHIyLCBsc3IgIzNd
CisJCW1vdnMJcjMsIHIzLCBsc3IgaXAJCUAgc2hpZnQgb2ZmIHVudXNlZCBiaXRzCisJCWJu
ZQkuZm91bmQKKwkJb3JyCXIyLCByMiwgIzcJCUAgaWYgemVybywgdGhlbiBubyBiaXRzIGhl
cmUKKwkJYWRkCXIyLCByMiwgIzEJCUAgYWxpZ24gYml0IHBvaW50ZXIKKwkJYgkyYgkJCUAg
bG9vcCBmb3IgbmV4dCBiaXQKKworICAKKy5mb3VuZDoKKwkJcnNiCXIxLCByMywgIzAKKwkJ
YW5kCXIzLCByMywgcjEKKwkJY2x6CXIzLCByMworCQlyc2IJcjMsIHIzLCAjMzEKKwkJYWRk
CXIwLCByMiwgcjMKKwkJbW92CXBjLGxyCisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2Fy
Y2gvYXJtL2xpYi9nY2NsaWIuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL2djY2xpYi5oCUZyaSBGZWIgMDMg
MTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDMzIEBACisvKiBnY2NsaWIuaCAtLSBk
ZWZpbml0aW9ucyBmb3IgdmFyaW91cyBmdW5jdGlvbnMgJ2JvcnJvd2VkJyBmcm9tIGdjYy0y
Ljk1LjMgKi8KKy8qIEkgTW9sdG9uICAgICAyOS8wNy8wMSAqLworCisjaWZuZGVmIF9fR0ND
TElCX0hfXworI2RlZmluZSBfX0dDQ0xJQl9IX18KKyNkZWZpbmUgQklUU19QRVJfVU5JVCAg
OAorI2RlZmluZSBTSV9UWVBFX1NJWkUgKHNpemVvZiAoU0l0eXBlKSAqIEJJVFNfUEVSX1VO
SVQpCisKK3R5cGVkZWYgdW5zaWduZWQgaW50IFVRSXR5cGUgICAgX19hdHRyaWJ1dGVfXyAo
KG1vZGUgKFFJKSkpOwordHlwZWRlZiAgICAgICAgICBpbnQgU0l0eXBlICAgICBfX2F0dHJp
YnV0ZV9fICgobW9kZSAoU0kpKSk7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVU0l0eXBlICAg
IF9fYXR0cmlidXRlX18gKChtb2RlIChTSSkpKTsKK3R5cGVkZWYgICAgICAgICAgaW50IERJ
dHlwZSAgICAgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKERJKSkpOwordHlwZWRlZiAgICAgICAg
ICBpbnQgd29yZF90eXBlIAlfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18pKSk7Cit0
eXBlZGVmIHVuc2lnbmVkIGludCBVREl0eXBlICAgIF9fYXR0cmlidXRlX18gKChtb2RlIChE
SSkpKTsKKworI2lmZGVmIF9fQVJNRUJfXworICBzdHJ1Y3QgRElzdHJ1Y3Qge1NJdHlwZSBo
aWdoLCBsb3c7fTsKKyNlbHNlCisgIHN0cnVjdCBESXN0cnVjdCB7U0l0eXBlIGxvdywgaGln
aDt9OworI2VuZGlmCisKK3R5cGVkZWYgdW5pb24KK3sKKyAgc3RydWN0IERJc3RydWN0IHM7
CisgIERJdHlwZSBsbDsKK30gREl1bmlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgX19hdHRyaWJ1
dGVfXygocmVnX3JldHVybikpCit7CisgICAgICAgIGxvbmcgbG9uZyBxdW90OworICAgICAg
ICBsb25nIGxvbmcgcmVtOworfSBsbGRpdl90X3JyOworI2VuZGlmCmRpZmYgLXIgZTcwMTQ2
MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvZ2V0dXNlci5TCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvZ2V0dXNl
ci5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDc3IEBACisv
KgorICogIGxpbnV4L2FyY2gvYXJtL2xpYi9nZXR1c2VyLlMKKyAqCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAxIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp
b24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u
CisgKgorICogIElkZWEgZnJvbSB4ODYgdmVyc2lvbiwgKEMpIENvcHlyaWdodCAxOTk4IExp
bnVzIFRvcnZhbGRzCisgKgorICogVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBub24tc3RhbmRh
cmQgY2FsbCBpbnRlcmZhY2UgdG8gbWFrZSB0aGVtIG1vcmUKKyAqIGVmZmljaWVudCwgZXNw
ZWNpYWxseSBhcyB0aGV5IHJldHVybiBhbiBlcnJvciB2YWx1ZSBpbiBhZGRpdGlvbiB0bwor
ICogdGhlICJyZWFsIiByZXR1cm4gdmFsdWUuCisgKgorICogX19nZXRfdXNlcl9YCisgKgor
ICogSW5wdXRzOglyMCBjb250YWlucyB0aGUgYWRkcmVzcworICogT3V0cHV0czoJcjAgaXMg
dGhlIGVycm9yIGNvZGUKKyAqCQlyMiwgcjMgY29udGFpbnMgdGhlIHplcm8tZXh0ZW5kZWQg
dmFsdWUKKyAqCQlsciBjb3JydXB0ZWQKKyAqCisgKiBObyBvdGhlciByZWdpc3RlcnMgbXVz
dCBiZSBhbHRlcmVkLiAgKHNlZSBpbmNsdWRlL2FzbS1hcm0vdWFjY2Vzcy5oCisgKiBmb3Ig
c3BlY2lmaWMgQVNNIHJlZ2lzdGVyIHVzYWdlKS4KKyAqCisgKiBOb3RlIHRoYXQgQUREUl9M
SU1JVCBpcyBlaXRoZXIgMCBvciAweGMwMDAwMDAwLgorICogTm90ZSBhbHNvIHRoYXQgaXQg
aXMgaW50ZW5kZWQgdGhhdCBfX2dldF91c2VyX2JhZCBpcyBub3QgZ2xvYmFsLgorICovCisj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisKKwkuZ2xvYmFsCV9fZ2V0X3VzZXJfMQorX19nZXRf
dXNlcl8xOgorMToJbGRyYnQJcjIsIFtyMF0KKwltb3YJcjAsICMwCisJbW92CXBjLCBscgor
CisJLmdsb2JhbAlfX2dldF91c2VyXzIKK19fZ2V0X3VzZXJfMjoKKzI6CWxkcmJ0CXIyLCBb
cjBdLCAjMQorMzoJbGRyYnQJcjMsIFtyMF0KKyNpZm5kZWYgX19BUk1FQl9fCisJb3JyCXIy
LCByMiwgcjMsIGxzbCAjOAorI2Vsc2UKKwlvcnIJcjIsIHIzLCByMiwgbHNsICM4CisjZW5k
aWYKKwltb3YJcjAsICMwCisJbW92CXBjLCBscgorCisJLmdsb2JhbAlfX2dldF91c2VyXzQK
K19fZ2V0X3VzZXJfNDoKKzQ6CWxkcnQJcjIsIFtyMF0KKwltb3YJcjAsICMwCisJbW92CXBj
LCBscgorCisJLmdsb2JhbAlfX2dldF91c2VyXzgKK19fZ2V0X3VzZXJfODoKKzU6CWxkcnQJ
cjIsIFtyMF0sICM0Cis2OglsZHJ0CXIzLCBbcjBdCisJbW92CXIwLCAjMAorCW1vdglwYywg
bHIKKworCS5nbG9iYWwgX19nZXRfdXNlcl9iYWQKK19fZ2V0X3VzZXJfYmFkXzg6CisJbW92
CXIzLCAjMAorX19nZXRfdXNlcl9iYWQ6CisJbW92CXIyLCAjMAorCW1vdglyMCwgIy1FRkFV
TFQKKwltb3YJcGMsIGxyCisKKy5zZWN0aW9uIF9fZXhfdGFibGUsICJhIgorCS5sb25nCTFi
LCBfX2dldF91c2VyX2JhZAorCS5sb25nCTJiLCBfX2dldF91c2VyX2JhZAorCS5sb25nCTNi
LCBfX2dldF91c2VyX2JhZAorCS5sb25nCTRiLCBfX2dldF91c2VyX2JhZAorCS5sb25nCTVi
LCBfX2dldF91c2VyX2JhZF84CisJLmxvbmcJNmIsIF9fZ2V0X3VzZXJfYmFkXzgKKy5wcmV2
aW91cwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL2xpYjFmdW5jcy5T
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hl
bi9hcmNoL2FybS9saWIvbGliMWZ1bmNzLlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsMjU2IEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1
ZGUgPGFzbS9hc20tbWFjcm9zLmg+CisKKworLm1hY3JvIEFSTV9ESVZfQk9EWSBkaXZpZGVu
ZCwgZGl2aXNvciwgcmVzdWx0LCBjdXJiaXQKKworCUAgSW5pdGlhbGx5IHNoaWZ0IHRoZSBk
aXZpc29yIGxlZnQgMyBiaXRzIGlmIHBvc3NpYmxlLAorCUAgc2V0IGN1cmJpdCBhY2NvcmRp
bmdseS4gIFRoaXMgYWxsb3dzIGZvciBjdXJiaXQgdG8gYmUgbG9jYXRlZAorCUAgYXQgdGhl
IGxlZnQgZW5kIG9mIGVhY2ggNCBiaXQgbmliYmxlcyBpbiB0aGUgZGl2aXNpb24gbG9vcAor
CUAgdG8gc2F2ZSBvbmUgbG9vcCBpbiBtb3N0IGNhc2VzLgorCXRzdAlcZGl2aXNvciwgIzB4
ZTAwMDAwMDAKKwltb3ZlcQlcZGl2aXNvciwgXGRpdmlzb3IsIGxzbCAjMworCW1vdmVxCVxj
dXJiaXQsICM4CisJbW92bmUJXGN1cmJpdCwgIzEKKworCUAgVW5sZXNzIHRoZSBkaXZpc29y
IGlzIHZlcnkgYmlnLCBzaGlmdCBpdCB1cCBpbiBtdWx0aXBsZXMgb2YKKwlAIGZvdXIgYml0
cywgc2luY2UgdGhpcyBpcyB0aGUgYW1vdW50IG9mIHVud2luZGluZyBpbiB0aGUgbWFpbgor
CUAgZGl2aXNpb24gbG9vcC4gIENvbnRpbnVlIHNoaWZ0aW5nIHVudGlsIHRoZSBkaXZpc29y
IGlzIAorCUAgbGFyZ2VyIHRoYW4gdGhlIGRpdmlkZW5kLgorMToJY21wCVxkaXZpc29yLCAj
MHgxMDAwMDAwMAorCWNtcGxvCVxkaXZpc29yLCBcZGl2aWRlbmQKKwltb3ZsbwlcZGl2aXNv
ciwgXGRpdmlzb3IsIGxzbCAjNAorCW1vdmxvCVxjdXJiaXQsIFxjdXJiaXQsIGxzbCAjNAor
CWJsbwkxYgorCisJQCBGb3IgdmVyeSBiaWcgZGl2aXNvcnMsIHdlIG11c3Qgc2hpZnQgaXQg
YSBiaXQgYXQgYSB0aW1lLCBvcgorCUAgd2Ugd2lsbCBiZSBpbiBkYW5nZXIgb2Ygb3ZlcmZs
b3dpbmcuCisxOgljbXAJXGRpdmlzb3IsICMweDgwMDAwMDAwCisJY21wbG8JXGRpdmlzb3Is
IFxkaXZpZGVuZAorCW1vdmxvCVxkaXZpc29yLCBcZGl2aXNvciwgbHNsICMxCisJbW92bG8J
XGN1cmJpdCwgXGN1cmJpdCwgbHNsICMxCisJYmxvCTFiCisKKwltb3YJXHJlc3VsdCwgIzAK
KworCUAgRGl2aXNpb24gbG9vcAorMToJY21wCVxkaXZpZGVuZCwgXGRpdmlzb3IKKwlzdWJo
cwlcZGl2aWRlbmQsIFxkaXZpZGVuZCwgXGRpdmlzb3IKKwlvcnJocwlccmVzdWx0LCAgIFxy
ZXN1bHQsICAgXGN1cmJpdAorCWNtcAlcZGl2aWRlbmQsIFxkaXZpc29yLCAgbHNyICMxCisJ
c3ViaHMJXGRpdmlkZW5kLCBcZGl2aWRlbmQsIFxkaXZpc29yLCBsc3IgIzEKKwlvcnJocwlc
cmVzdWx0LCAgIFxyZXN1bHQsICAgXGN1cmJpdCwgIGxzciAjMQorCWNtcAlcZGl2aWRlbmQs
IFxkaXZpc29yLCAgbHNyICMyCisJc3ViaHMJXGRpdmlkZW5kLCBcZGl2aWRlbmQsIFxkaXZp
c29yLCBsc3IgIzIKKwlvcnJocwlccmVzdWx0LCAgIFxyZXN1bHQsICAgXGN1cmJpdCwgIGxz
ciAjMgorCWNtcAlcZGl2aWRlbmQsIFxkaXZpc29yLCAgbHNyICMzCisJc3ViaHMJXGRpdmlk
ZW5kLCBcZGl2aWRlbmQsIFxkaXZpc29yLCBsc3IgIzMKKwlvcnJocwlccmVzdWx0LCAgIFxy
ZXN1bHQsICAgXGN1cmJpdCwgIGxzciAjMworCWNtcAlcZGl2aWRlbmQsICMwCQkJQCBFYXJs
eSB0ZXJtaW5hdGlvbj8KKwltb3ZuZXMJXGN1cmJpdCwgICBcY3VyYml0LCAgbHNyICM0CUAg
Tm8sIGFueSBtb3JlIGJpdHMgdG8gZG8/CisJbW92bmUJXGRpdmlzb3IsICBcZGl2aXNvciwg
bHNyICM0CisJYm5lCTFiCisKKy5lbmRtCisKKworLm1hY3JvIEFSTV9ESVYyX09SREVSIGRp
dmlzb3IsIG9yZGVyCisJY21wCVxkaXZpc29yLCAjKDEgPDwgMTYpCisJbW92aHMJXGRpdmlz
b3IsIFxkaXZpc29yLCBsc3IgIzE2CisJbW92aHMJXG9yZGVyLCAjMTYKKwltb3Zsbwlcb3Jk
ZXIsICMwCisKKwljbXAJXGRpdmlzb3IsICMoMSA8PCA4KQorCW1vdmhzCVxkaXZpc29yLCBc
ZGl2aXNvciwgbHNyICM4CisJYWRkaHMJXG9yZGVyLCBcb3JkZXIsICM4CisKKwljbXAJXGRp
dmlzb3IsICMoMSA8PCA0KQorCW1vdmhzCVxkaXZpc29yLCBcZGl2aXNvciwgbHNyICM0CisJ
YWRkaHMJXG9yZGVyLCBcb3JkZXIsICM0CisKKwljbXAJXGRpdmlzb3IsICMoMSA8PCAyKQor
CWFkZGhpCVxvcmRlciwgXG9yZGVyLCAjMworCWFkZGxzCVxvcmRlciwgXG9yZGVyLCBcZGl2
aXNvciwgbHNyICMxCisuZW5kbQorCisKKy5tYWNybyBBUk1fTU9EX0JPRFkgZGl2aWRlbmQs
IGRpdmlzb3IsIG9yZGVyLCBzcGFyZQorCW1vdglcb3JkZXIsICMwCisKKwlAIFVubGVzcyB0
aGUgZGl2aXNvciBpcyB2ZXJ5IGJpZywgc2hpZnQgaXQgdXAgaW4gbXVsdGlwbGVzIG9mCisJ
QCBmb3VyIGJpdHMsIHNpbmNlIHRoaXMgaXMgdGhlIGFtb3VudCBvZiB1bndpbmRpbmcgaW4g
dGhlIG1haW4KKwlAIGRpdmlzaW9uIGxvb3AuICBDb250aW51ZSBzaGlmdGluZyB1bnRpbCB0
aGUgZGl2aXNvciBpcyAKKwlAIGxhcmdlciB0aGFuIHRoZSBkaXZpZGVuZC4KKzE6CWNtcAlc
ZGl2aXNvciwgIzB4MTAwMDAwMDAKKwljbXBsbwlcZGl2aXNvciwgXGRpdmlkZW5kCisJbW92
bG8JXGRpdmlzb3IsIFxkaXZpc29yLCBsc2wgIzQKKwlhZGRsbwlcb3JkZXIsIFxvcmRlciwg
IzQKKwlibG8JMWIKKworCUAgRm9yIHZlcnkgYmlnIGRpdmlzb3JzLCB3ZSBtdXN0IHNoaWZ0
IGl0IGEgYml0IGF0IGEgdGltZSwgb3IKKwlAIHdlIHdpbGwgYmUgaW4gZGFuZ2VyIG9mIG92
ZXJmbG93aW5nLgorMToJY21wCVxkaXZpc29yLCAjMHg4MDAwMDAwMAorCWNtcGxvCVxkaXZp
c29yLCBcZGl2aWRlbmQKKwltb3ZsbwlcZGl2aXNvciwgXGRpdmlzb3IsIGxzbCAjMQorCWFk
ZGxvCVxvcmRlciwgXG9yZGVyLCAjMQorCWJsbwkxYgorCisJQCBQZXJmb3JtIGFsbCBuZWVk
ZWQgc3Vic3RyYWN0aW9ucyB0byBrZWVwIG9ubHkgdGhlIHJlbWluZGVyLgorCUAgRG8gY29t
cGFyaXNvbnMgaW4gYmF0Y2ggb2YgNCBmaXJzdC4KKwlzdWJzCVxvcmRlciwgXG9yZGVyLCAj
MwkJQCB5ZXMsIDMgaXMgaW50ZW5kZWQgaGVyZQorCWJsdAkyZgorCisxOgljbXAJXGRpdmlk
ZW5kLCBcZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvcgor
CWNtcAlcZGl2aWRlbmQsIFxkaXZpc29yLCAgbHNyICMxCisJc3ViaHMJXGRpdmlkZW5kLCBc
ZGl2aWRlbmQsIFxkaXZpc29yLCBsc3IgIzEKKwljbXAJXGRpdmlkZW5kLCBcZGl2aXNvciwg
IGxzciAjMgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvciwgbHNyICMy
CisJY21wCVxkaXZpZGVuZCwgXGRpdmlzb3IsICBsc3IgIzMKKwlzdWJocwlcZGl2aWRlbmQs
IFxkaXZpZGVuZCwgXGRpdmlzb3IsIGxzciAjMworCWNtcAlcZGl2aWRlbmQsICMxCisJbW92
CVxkaXZpc29yLCBcZGl2aXNvciwgbHNyICM0CisJc3ViZ2VzCVxvcmRlciwgXG9yZGVyLCAj
NAorCWJnZQkxYgorCisJdHN0CVxvcmRlciwgIzMKKwl0ZXFuZQlcZGl2aWRlbmQsICMwCisJ
YmVxCTVmCisKKwlAIEVpdGhlciAxLCAyIG9yIDMgY29tcGFyaXNvbi9zdWJzdHJhY3Rpb25z
IGFyZSBsZWZ0LgorMjoJY21uCVxvcmRlciwgIzIKKwlibHQJNGYKKwliZXEJM2YKKwljbXAJ
XGRpdmlkZW5kLCBcZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2
aXNvcgorCW1vdglcZGl2aXNvciwgIFxkaXZpc29yLCAgbHNyICMxCiszOgljbXAJXGRpdmlk
ZW5kLCBcZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvcgor
CW1vdglcZGl2aXNvciwgIFxkaXZpc29yLCAgbHNyICMxCis0OgljbXAJXGRpdmlkZW5kLCBc
ZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvcgorNToKKy5l
bmRtCisKKworRU5UUlkoX191ZGl2c2kzKQorRU5UUlkoX19hZWFiaV91aWRpdikKKwlzdWJz
CXIyLCByMSwgIzEKKwltb3ZlcQlwYywgbHIKKwliY2MJTGRpdjAKKwljbXAJcjAsIHIxCisJ
YmxzCTExZgorCXRzdAlyMSwgcjIKKwliZXEJMTJmCisKKwlBUk1fRElWX0JPRFkgcjAsIHIx
LCByMiwgcjMKKworCW1vdglyMCwgcjIKKwltb3YJcGMsIGxyCisKKzExOgltb3ZlcQlyMCwg
IzEKKwltb3ZuZQlyMCwgIzAKKwltb3YJcGMsIGxyCisKKzEyOglBUk1fRElWMl9PUkRFUiBy
MSwgcjIKKworCW1vdglyMCwgcjAsIGxzciByMgorCW1vdglwYywgbHIKKworCitFTlRSWShf
X3Vtb2RzaTMpCisJc3VicwlyMiwgcjEsICMxCQkJQCBjb21wYXJlIGRpdmlzb3Igd2l0aCAx
CisJYmNjCUxkaXYwCisJY21wbmUJcjAsIHIxCQkJCUAgY29tcGFyZSBkaXZpZGVuZCB3aXRo
IGRpdmlzb3IKKwltb3ZlcSAgIHIwLCAjMAorCXRzdGhpCXIxLCByMgkJCQlAIHNlZSBpZiBk
aXZpc29yIGlzIHBvd2VyIG9mIDIKKwlhbmRlcQlyMCwgcjAsIHIyCisJbW92bHMJcGMsIGxy
CisKKwlBUk1fTU9EX0JPRFkgcjAsIHIxLCByMiwgcjMKKworCW1vdglwYywgbHIKKworCitF
TlRSWShfX2RpdnNpMykKK0VOVFJZKF9fYWVhYmlfaWRpdikKKwljbXAJcjEsICMwCisJZW9y
CWlwLCByMCwgcjEJCQlAIHNhdmUgdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4KKwliZXEJTGRp
djAKKwlyc2JtaQlyMSwgcjEsICMwCQkJQCBsb29wcyBiZWxvdyB1c2UgdW5zaWduZWQuCisJ
c3VicwlyMiwgcjEsICMxCQkJQCBkaXZpc2lvbiBieSAxIG9yIC0xID8KKwliZXEJMTBmCisJ
bW92cwlyMywgcjAKKwlyc2JtaQlyMywgcjAsICMwCQkJQCBwb3NpdGl2ZSBkaXZpZGVuZCB2
YWx1ZQorCWNtcAlyMywgcjEKKwlibHMJMTFmCisJdHN0CXIxLCByMgkJCQlAIGRpdmlzb3Ig
aXMgcG93ZXIgb2YgMiA/CisJYmVxCTEyZgorCisJQVJNX0RJVl9CT0RZIHIzLCByMSwgcjAs
IHIyCisKKwljbXAJaXAsICMwCisJcnNibWkJcjAsIHIwLCAjMAorCW1vdglwYywgbHIKKwor
MTA6CXRlcQlpcCwgcjAJCQkJQCBzYW1lIHNpZ24gPworCXJzYm1pCXIwLCByMCwgIzAKKwlt
b3YJcGMsIGxyCisKKzExOgltb3ZsbwlyMCwgIzAKKwltb3ZlcQlyMCwgaXAsIGFzciAjMzEK
KwlvcnJlcQlyMCwgcjAsICMxCisJbW92CXBjLCBscgorCisxMjoJQVJNX0RJVjJfT1JERVIg
cjEsIHIyCisKKwljbXAJaXAsICMwCisJbW92CXIwLCByMywgbHNyIHIyCisJcnNibWkJcjAs
IHIwLCAjMAorCW1vdglwYywgbHIKKworCitFTlRSWShfX21vZHNpMykKKworCWNtcAlyMSwg
IzAKKwliZXEJTGRpdjAKKwlyc2JtaQlyMSwgcjEsICMwCQkJQCBsb29wcyBiZWxvdyB1c2Ug
dW5zaWduZWQuCisJbW92cwlpcCwgcjAJCQkJQCBwcmVzZXJ2ZSBzaWduIG9mIGRpdmlkZW5k
CisJcnNibWkJcjAsIHIwLCAjMAkJCUAgaWYgbmVnYXRpdmUgbWFrZSBwb3NpdGl2ZQorCXN1
YnMJcjIsIHIxLCAjMQkJCUAgY29tcGFyZSBkaXZpc29yIHdpdGggMQorCWNtcG5lCXIwLCBy
MQkJCQlAIGNvbXBhcmUgZGl2aWRlbmQgd2l0aCBkaXZpc29yCisJbW92ZXEJcjAsICMwCisJ
dHN0aGkJcjEsIHIyCQkJCUAgc2VlIGlmIGRpdmlzb3IgaXMgcG93ZXIgb2YgMgorCWFuZGVx
CXIwLCByMCwgcjIKKwlibHMJMTBmCisKKwlBUk1fTU9EX0JPRFkgcjAsIHIxLCByMiwgcjMK
KworMTA6CWNtcAlpcCwgIzAKKwlyc2JtaQlyMCwgcjAsICMwCisJbW92CXBjLCBscgorCitF
TlRSWShfX2FlYWJpX3VpZGl2bW9kKQorCXN0bWZkICAgc3AhLCB7cjAsIHIxLCBpcCwgbHJ9
CisJYmwgICAgICBfX2FlYWJpX3VpZGl2CisJbGRtZmQgICBzcCEsIHtyMSwgcjIsIGlwLCBs
cn0KKwltdWwgICAgIHIzLCByMCwgcjIKKwlzdWIgICAgIHIxLCByMSwgcjMKKwltb3YgICAg
IHBjLCBscgorCitFTlRSWShfX2FlYWJpX2lkaXZtb2QpCisJc3RtZmQgICBzcCEsIHtyMCwg
cjEsIGlwLCBscn0KKwlibCAgICAgIF9fYWVhYmlfaWRpdgorCWxkbWZkICAgc3AhLCB7cjEs
IHIyLCBpcCwgbHJ9CisJbXVsICAgICByMywgcjAsIHIyCisJc3ViICAgICByMSwgcjEsIHIz
CisJbW92ICAgICBwYywgbHIKKworTGRpdjA6CisKKwlzdHIJbHIsIFtzcCwgIy04XSEKKwli
bAlfX2RpdjAKKwltb3YJcjAsICMwCQkJQCBBYm91dCBhcyB3cm9uZyBhcyBpdCBjb3VsZCBi
ZS4KKwlsZHIJcGMsIFtzcF0sICM4CisKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJj
aC9hcm0vbGliL2xvbmdsb25nLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9sb25nbG9uZy5oCUZyaSBGZWIg
MDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDE4MyBAQAorLyogbG9uZ2xvbmcu
aCAtLSBiYXNlZCBvbiBjb2RlIGZyb20gZ2NjLTIuOTUuMworCisgICBkZWZpbml0aW9ucyBm
b3IgbWl4ZWQgc2l6ZSAzMi82NCBiaXQgYXJpdGhtZXRpYy4KKyAgIENvcHlyaWdodCAoQykg
MTk5MSwgOTIsIDk0LCA5NSwgOTYsIDE5OTcsIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuCisKKyAgIFRoaXMgZGVmaW5pdGlvbiBmaWxlIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CisgICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNp
b24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp
cyBkZWZpbml0aW9uIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlCisgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkCisgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICBTZWUgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCisvKiBCb3Jyb3dl
ZCBmcm9tIEdDQyAyLjk1LjMsIEkgTW9sdG9uIDI5LzA3LzAxICovCisKKyNpZm5kZWYgU0lf
VFlQRV9TSVpFCisjZGVmaW5lIFNJX1RZUEVfU0laRSAzMgorI2VuZGlmCisKKyNkZWZpbmUg
X19CSVRTNCAoU0lfVFlQRV9TSVpFIC8gNCkKKyNkZWZpbmUgX19sbF9CICgxTCA8PCAoU0lf
VFlQRV9TSVpFIC8gMikpCisjZGVmaW5lIF9fbGxfbG93cGFydCh0KSAoKFVTSXR5cGUpICh0
KSAlIF9fbGxfQikKKyNkZWZpbmUgX19sbF9oaWdocGFydCh0KSAoKFVTSXR5cGUpICh0KSAv
IF9fbGxfQikKKworLyogRGVmaW5lIGF1eGlsaWFyeSBhc20gbWFjcm9zLgorCisgICAxKSB1
bXVsX3BwbW0oaGlnaF9wcm9kLCBsb3dfcHJvZCwgbXVsdGlwbGVyLCBtdWx0aXBsaWNhbmQp
CisgICBtdWx0aXBsaWVzIHR3byBVU0l0eXBlIGludGVnZXJzIE1VTFRJUExFUiBhbmQgTVVM
VElQTElDQU5ELAorICAgYW5kIGdlbmVyYXRlcyBhIHR3by1wYXJ0IFVTSXR5cGUgcHJvZHVj
dCBpbiBISUdIX1BST0QgYW5kCisgICBMT1dfUFJPRC4KKworICAgMikgX191bXVsc2lkaTMo
YSxiKSBtdWx0aXBsaWVzIHR3byBVU0l0eXBlIGludGVnZXJzIEEgYW5kIEIsCisgICBhbmQg
cmV0dXJucyBhIFVESXR5cGUgcHJvZHVjdC4gIFRoaXMgaXMganVzdCBhIHZhcmlhbnQgb2Yg
dW11bF9wcG1tLgorCisgICAzKSB1ZGl2X3Fybm5kKHF1b3RpZW50LCByZW1haW5kZXIsIGhp
Z2hfbnVtZXJhdG9yLCBsb3dfbnVtZXJhdG9yLAorICAgZGVub21pbmF0b3IpIGRpdmlkZXMg
YSB0d28td29yZCB1bnNpZ25lZCBpbnRlZ2VyLCBjb21wb3NlZCBieSB0aGUKKyAgIGludGVn
ZXJzIEhJR0hfTlVNRVJBVE9SIGFuZCBMT1dfTlVNRVJBVE9SLCBieSBERU5PTUlOQVRPUiBh
bmQKKyAgIHBsYWNlcyB0aGUgcXVvdGllbnQgaW4gUVVPVElFTlQgYW5kIHRoZSByZW1haW5k
ZXIgaW4gUkVNQUlOREVSLgorICAgSElHSF9OVU1FUkFUT1IgbXVzdCBiZSBsZXNzIHRoYW4g
REVOT01JTkFUT1IgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uLgorICAgSWYsIGluIGFkZGl0aW9u
LCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgREVOT01JTkFUT1IgbXVzdCBiZSAxLAor
ICAgdGhlbiB0aGUgcHJlLXByb2Nlc3NvciBzeW1ib2wgVURJVl9ORUVEU19OT1JNQUxJWkFU
SU9OIGlzIGRlZmluZWQgdG8gMS4KKworICAgNCkgc2Rpdl9xcm5uZChxdW90aWVudCwgcmVt
YWluZGVyLCBoaWdoX251bWVyYXRvciwgbG93X251bWVyYXRvciwKKyAgIGRlbm9taW5hdG9y
KS4gIExpa2UgdWRpdl9xcm5uZCBidXQgdGhlIG51bWJlcnMgYXJlIHNpZ25lZC4gIFRoZQor
ICAgcXVvdGllbnQgaXMgcm91bmRlZCB0b3dhcmRzIDAuCisKKyAgIDUpIGNvdW50X2xlYWRp
bmdfemVyb3MoY291bnQsIHgpIGNvdW50cyB0aGUgbnVtYmVyIG9mIHplcm8tYml0cyBmcm9t
CisgICB0aGUgbXNiIHRvIHRoZSBmaXJzdCBub24temVybyBiaXQuICBUaGlzIGlzIHRoZSBu
dW1iZXIgb2Ygc3RlcHMgWAorICAgbmVlZHMgdG8gYmUgc2hpZnRlZCBsZWZ0IHRvIHNldCB0
aGUgbXNiLiAgVW5kZWZpbmVkIGZvciBYID09IDAuCisKKyAgIDYpIGFkZF9zc2FhYWEoaGln
aF9zdW0sIGxvd19zdW0sIGhpZ2hfYWRkZW5kXzEsIGxvd19hZGRlbmRfMSwKKyAgIGhpZ2hf
YWRkZW5kXzIsIGxvd19hZGRlbmRfMikgYWRkcyB0d28gdHdvLXdvcmQgdW5zaWduZWQgaW50
ZWdlcnMsCisgICBjb21wb3NlZCBieSBISUdIX0FEREVORF8xIGFuZCBMT1dfQURERU5EXzEs
IGFuZCBISUdIX0FEREVORF8yIGFuZAorICAgTE9XX0FEREVORF8yIHJlc3BlY3RpdmVseS4g
IFRoZSByZXN1bHQgaXMgcGxhY2VkIGluIEhJR0hfU1VNIGFuZAorICAgTE9XX1NVTS4gIE92
ZXJmbG93IChpLmUuIGNhcnJ5IG91dCkgaXMgbm90IHN0b3JlZCBhbnl3aGVyZSwgYW5kIGlz
CisgICBsb3N0LgorCisgICA3KSBzdWJfZGRtbXNzKGhpZ2hfZGlmZmVyZW5jZSwgbG93X2Rp
ZmZlcmVuY2UsIGhpZ2hfbWludWVuZCwKKyAgIGxvd19taW51ZW5kLCBoaWdoX3N1YnRyYWhl
bmQsIGxvd19zdWJ0cmFoZW5kKSBzdWJ0cmFjdHMgdHdvCisgICB0d28td29yZCB1bnNpZ25l
ZCBpbnRlZ2VycywgY29tcG9zZWQgYnkgSElHSF9NSU5VRU5EXzEgYW5kCisgICBMT1dfTUlO
VUVORF8xLCBhbmQgSElHSF9TVUJUUkFIRU5EXzIgYW5kIExPV19TVUJUUkFIRU5EXzIKKyAg
IHJlc3BlY3RpdmVseS4gIFRoZSByZXN1bHQgaXMgcGxhY2VkIGluIEhJR0hfRElGRkVSRU5D
RSBhbmQKKyAgIExPV19ESUZGRVJFTkNFLiAgT3ZlcmZsb3cgKGkuZS4gY2Fycnkgb3V0KSBp
cyBub3Qgc3RvcmVkIGFueXdoZXJlLAorICAgYW5kIGlzIGxvc3QuCisKKyAgIElmIGFueSBv
ZiB0aGVzZSBtYWNyb3MgYXJlIGxlZnQgdW5kZWZpbmVkIGZvciBhIHBhcnRpY3VsYXIgQ1BV
LAorICAgQyBtYWNyb3MgYXJlIHVzZWQuICAqLworCisjaWYgZGVmaW5lZCAoX19hcm1fXykK
KyNkZWZpbmUgYWRkX3NzYWFhYShzaCwgc2wsIGFoLCBhbCwgYmgsIGJsKSBcCisgIF9fYXNt
X18gKCJhZGRzCSUxLCAlNCwgJTUJCQkJCVxuXAorCWFkYwklMCwgJTIsICUzIgkJCQkJCVwK
KwkgICA6ICI9ciIgKChVU0l0eXBlKSAoc2gpKSwJCQkJCVwKKwkgICAgICI9JnIiICgoVVNJ
dHlwZSkgKHNsKSkJCQkJCVwKKwkgICA6ICIlciIgKChVU0l0eXBlKSAoYWgpKSwJCQkJCVwK
KwkgICAgICJySSIgKChVU0l0eXBlKSAoYmgpKSwJCQkJCVwKKwkgICAgICIlciIgKChVU0l0
eXBlKSAoYWwpKSwJCQkJCVwKKwkgICAgICJySSIgKChVU0l0eXBlKSAoYmwpKSkKKyNkZWZp
bmUgc3ViX2RkbW1zcyhzaCwgc2wsIGFoLCBhbCwgYmgsIGJsKSBcCisgIF9fYXNtX18gKCJz
dWJzCSUxLCAlNCwgJTUJCQkJCVxuXAorCXNiYwklMCwgJTIsICUzIgkJCQkJCVwKKwkgICA6
ICI9ciIgKChVU0l0eXBlKSAoc2gpKSwJCQkJCVwKKwkgICAgICI9JnIiICgoVVNJdHlwZSkg
KHNsKSkJCQkJCVwKKwkgICA6ICJyIiAoKFVTSXR5cGUpIChhaCkpLAkJCQkJXAorCSAgICAg
InJJIiAoKFVTSXR5cGUpIChiaCkpLAkJCQkJXAorCSAgICAgInIiICgoVVNJdHlwZSkgKGFs
KSksCQkJCQlcCisJICAgICAickkiICgoVVNJdHlwZSkgKGJsKSkpCisjZGVmaW5lIHVtdWxf
cHBtbSh4aCwgeGwsIGEsIGIpIFwKK3tyZWdpc3RlciBVU0l0eXBlIF9fdDAsIF9fdDEsIF9f
dDI7CQkJCQlcCisgIF9fYXNtX18gKCIlQCBJbmxpbmVkIHVtdWxfcHBtbQkJCQkJXG5cCisJ
bW92CSUyLCAlNSwgbHNyICMxNgkJCQkJCVxuXAorCW1vdgklMCwgJTYsIGxzciAjMTYJCQkJ
CQlcblwKKwliaWMJJTMsICU1LCAlMiwgbHNsICMxNgkJCQkJXG5cCisJYmljCSU0LCAlNiwg
JTAsIGxzbCAjMTYJCQkJCVxuXAorCW11bAklMSwgJTMsICU0CQkJCQkJXG5cCisJbXVsCSU0
LCAlMiwgJTQJCQkJCQlcblwKKwltdWwJJTMsICUwLCAlMwkJCQkJCVxuXAorCW11bAklMCwg
JTIsICUwCQkJCQkJXG5cCisJYWRkcwklMywgJTQsICUzCQkJCQkJXG5cCisJYWRkY3MJJTAs
ICUwLCAjNjU1MzYJCQkJCQlcblwKKwlhZGRzCSUxLCAlMSwgJTMsIGxzbCAjMTYJCQkJCVxu
XAorCWFkYwklMCwgJTAsICUzLCBsc3IgIzE2IgkJCQkJXAorCSAgIDogIj0mciIgKChVU0l0
eXBlKSAoeGgpKSwJCQkJCVwKKwkgICAgICI9ciIgKChVU0l0eXBlKSAoeGwpKSwJCQkJCVwK
KwkgICAgICI9JnIiIChfX3QwKSwgIj0mciIgKF9fdDEpLCAiPXIiIChfX3QyKQkJCVwKKwkg
ICA6ICJyIiAoKFVTSXR5cGUpIChhKSksCQkJCQlcCisJICAgICAiciIgKChVU0l0eXBlKSAo
YikpKTt9CisjZGVmaW5lIFVNVUxfVElNRSAyMAorI2RlZmluZSBVRElWX1RJTUUgMTAwCisj
ZW5kaWYgLyogX19hcm1fXyAqLworCisjZGVmaW5lIF9fdW11bHNpZGkzKHUsIHYpIFwKKyAg
KHtESXVuaW9uIF9fdzsJCQkJCQkJXAorICAgIHVtdWxfcHBtbSAoX193LnMuaGlnaCwgX193
LnMubG93LCB1LCB2KTsJCQkJXAorICAgIF9fdy5sbDsgfSkKKworI2RlZmluZSBfX3VkaXZf
cXJubmRfYyhxLCByLCBuMSwgbjAsIGQpIFwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBVU0l0
eXBlIF9fZDEsIF9fZDAsIF9fcTEsIF9fcTA7CQkJCQlcCisgICAgVVNJdHlwZSBfX3IxLCBf
X3IwLCBfX207CQkJCQkJXAorICAgIF9fZDEgPSBfX2xsX2hpZ2hwYXJ0IChkKTsJCQkJCQlc
CisgICAgX19kMCA9IF9fbGxfbG93cGFydCAoZCk7CQkJCQkJXAorCQkJCQkJCQkJXAorICAg
IF9fcjEgPSAobjEpICUgX19kMTsJCQkJCQkJXAorICAgIF9fcTEgPSAobjEpIC8gX19kMTsJ
CQkJCQkJXAorICAgIF9fbSA9IChVU0l0eXBlKSBfX3ExICogX19kMDsJCQkJCVwKKyAgICBf
X3IxID0gX19yMSAqIF9fbGxfQiB8IF9fbGxfaGlnaHBhcnQgKG4wKTsJCQkJXAorICAgIGlm
IChfX3IxIDwgX19tKQkJCQkJCQlcCisgICAgICB7CQkJCQkJCQkJXAorCV9fcTEtLSwgX19y
MSArPSAoZCk7CQkJCQkJXAorCWlmIChfX3IxID49IChkKSkgLyogaS5lLiB3ZSBkaWRuJ3Qg
Z2V0IGNhcnJ5IHdoZW4gYWRkaW5nIHRvIF9fcjEgKi9cCisJICBpZiAoX19yMSA8IF9fbSkJ
CQkJCQlcCisJICAgIF9fcTEtLSwgX19yMSArPSAoZCk7CQkJCQlcCisgICAgICB9CQkJCQkJ
CQkJXAorICAgIF9fcjEgLT0gX19tOwkJCQkJCQlcCisJCQkJCQkJCQlcCisgICAgX19yMCA9
IF9fcjEgJSBfX2QxOwkJCQkJCQlcCisgICAgX19xMCA9IF9fcjEgLyBfX2QxOwkJCQkJCQlc
CisgICAgX19tID0gKFVTSXR5cGUpIF9fcTAgKiBfX2QwOwkJCQkJXAorICAgIF9fcjAgPSBf
X3IwICogX19sbF9CIHwgX19sbF9sb3dwYXJ0IChuMCk7CQkJCVwKKyAgICBpZiAoX19yMCA8
IF9fbSkJCQkJCQkJXAorICAgICAgewkJCQkJCQkJCVwKKwlfX3EwLS0sIF9fcjAgKz0gKGQp
OwkJCQkJCVwKKwlpZiAoX19yMCA+PSAoZCkpCQkJCQkJXAorCSAgaWYgKF9fcjAgPCBfX20p
CQkJCQkJXAorCSAgICBfX3EwLS0sIF9fcjAgKz0gKGQpOwkJCQkJXAorICAgICAgfQkJCQkJ
CQkJCVwKKyAgICBfX3IwIC09IF9fbTsJCQkJCQkJXAorCQkJCQkJCQkJXAorICAgIChxKSA9
IChVU0l0eXBlKSBfX3ExICogX19sbF9CIHwgX19xMDsJCQkJXAorICAgIChyKSA9IF9fcjA7
CQkJCQkJCQlcCisgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgVURJVl9ORUVEU19OT1JNQUxJ
WkFUSU9OIDEKKyNkZWZpbmUgdWRpdl9xcm5uZCBfX3VkaXZfcXJubmRfYworCisjZGVmaW5l
IGNvdW50X2xlYWRpbmdfemVyb3MoY291bnQsIHgpIFwKKyAgZG8gewkJCQkJCQkJCVwKKyAg
ICBVU0l0eXBlIF9feHIgPSAoeCk7CQkJCQkJCVwKKyAgICBVU0l0eXBlIF9fYTsJCQkJCQkJ
XAorCQkJCQkJCQkJXAorICAgIGlmIChTSV9UWVBFX1NJWkUgPD0gMzIpCQkJCQkJXAorICAg
ICAgewkJCQkJCQkJCVwKKwlfX2EgPSBfX3hyIDwgKChVU0l0eXBlKTE8PDIqX19CSVRTNCkJ
CQkJXAorCSAgPyAoX194ciA8ICgoVVNJdHlwZSkxPDxfX0JJVFM0KSA/IDAgOiBfX0JJVFM0
KQkJXAorCSAgOiAoX194ciA8ICgoVVNJdHlwZSkxPDwzKl9fQklUUzQpID8gIDIqX19CSVRT
NCA6IDMqX19CSVRTNCk7CVwKKyAgICAgIH0JCQkJCQkJCQlcCisgICAgZWxzZQkJCQkJCQkJ
XAorICAgICAgewkJCQkJCQkJCVwKKwlmb3IgKF9fYSA9IFNJX1RZUEVfU0laRSAtIDg7IF9f
YSA+IDA7IF9fYSAtPSA4KQkJCVwKKwkgIGlmICgoKF9feHIgPj4gX19hKSAmIDB4ZmYpICE9
IDApCQkJCVwKKwkgICAgYnJlYWs7CQkJCQkJCVwKKyAgICAgIH0JCQkJCQkJCQlcCisJCQkJ
CQkJCQlcCisgICAgKGNvdW50KSA9IFNJX1RZUEVfU0laRSAtIChfX2Nsel90YWJbX194ciA+
PiBfX2FdICsgX19hKTsJCVwKKyAgfSB3aGlsZSAoMCkKZGlmZiAtciBlNzAxNDYxYjEyNTEg
eGVuL2FyY2gvYXJtL2xpYi9sc2hyZGkzLlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9sc2hyZGkzLlMJRnJp
IEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTcgQEAKKyNpbmNsdWRl
IDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworI2RlZmlu
ZSBhbCByMAorI2RlZmluZSBhaCByMQorCitFTlRSWShfX2xzaHJkaTMpCitFTlRSWShfX2Fl
YWJpX2xsc3IpCisKKyAgICAgICAgc3VicyAgICByMywgcjIsICMzMgorICAgICAgICByc2Ig
ICAgIGlwLCByMiwgIzMyCisgICAgICAgIG1vdm1pICAgYWwsIGFsLCBsc3IgcjIKKyAgICAg
ICAgbW92cGwgICBhbCwgYWgsIGxzciByMworIAlvcnJtaSAgIGFsLCBhbCwgYWgsIGxzbCBp
cCAKKyAgICAgICAgbW92ICAgICBhaCwgYWgsIGxzciByMgorICAgICAgICBtb3YgICAgIHBj
LCBscgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvbWF0aC5jCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9h
cmNoL2FybS9saWIvbWF0aC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAt
MCwwICsxLDMgQEAKK3ZvaWQgbWR1bW15KHZvaWQpCit7Cit9CmRpZmYgLXIgZTcwMTQ2MWIx
MjUxIHhlbi9hcmNoL2FybS9saWIvbWVtY2hyLlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9tZW1jaHIuUwlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxNCBAQAorI2luY2x1
ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisJLnRl
eHQKKwkuYWxpZ24JNQorRU5UUlkobWVtY2hyKQorMToJc3VicwlyMiwgcjIsICMxCisJYm1p
CTJmCisJbGRyYglyMywgW3IwXSwgIzEKKwl0ZXEJcjMsIHIxCisJYm5lCTFiCisJc3ViCXIw
LCByMCwgIzEKKzI6CW1vdm5lCXIwLCAjMAorCW1vdglwYyxscgpkaWZmIC1yIGU3MDE0NjFi
MTI1MSB4ZW4vYXJjaC9hcm0vbGliL21lbWNweS5TCi0tLSAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbWVtY3B5LlMJ
RnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiAgbGludXgvYXJjaC9hcm0vbGliL21lbWNweS5TCisgKgorICogIEF1dGhvcjoJTmljb2xh
cyBQaXRyZQorICogIENyZWF0ZWQ6CVNlcCAyOCwgMjAwNQorICogIENvcHlyaWdodDoJTW9u
dGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy
c2lvbiAyIGFzCisgKiAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24uCisgKi8KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNt
LW1hY3Jvcy5oPgorCisKKwkubWFjcm8gbGRyMXcgcHRyIHJlZyBhYm9ydAorCWxkciBccmVn
LCBbXHB0cl0sICM0CisJLmVuZG0KKworCS5tYWNybyBsZHI0dyBwdHIgcmVnMSByZWcyIHJl
ZzMgcmVnNCBhYm9ydAorCWxkbWlhIFxwdHIhLCB7XHJlZzEsIFxyZWcyLCBccmVnMywgXHJl
ZzR9CisJLmVuZG0KKworCS5tYWNybyBsZHI4dyBwdHIgcmVnMSByZWcyIHJlZzMgcmVnNCBy
ZWc1IHJlZzYgcmVnNyByZWc4IGFib3J0CisJbGRtaWEgXHB0ciEsIHtccmVnMSwgXHJlZzIs
IFxyZWczLCBccmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywgXHJlZzh9CisJLmVuZG0KKwor
CS5tYWNybyBsZHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQKKwlsZHJcY29uZFwoKWIgXHJl
ZywgW1xwdHJdLCAjMQorCS5lbmRtCisKKwkubWFjcm8gc3RyMXcgcHRyIHJlZyBhYm9ydAor
CXN0ciBccmVnLCBbXHB0cl0sICM0CisJLmVuZG0KKworCS5tYWNybyBzdHI4dyBwdHIgcmVn
MSByZWcyIHJlZzMgcmVnNCByZWc1IHJlZzYgcmVnNyByZWc4IGFib3J0CisJc3RtaWEgXHB0
ciEsIHtccmVnMSwgXHJlZzIsIFxyZWczLCBccmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywg
XHJlZzh9CisJLmVuZG0KKworCS5tYWNybyBzdHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQK
KwlzdHJcY29uZFwoKWIgXHJlZywgW1xwdHJdLCAjMQorCS5lbmRtCisKKwkubWFjcm8gZW50
ZXIgcmVnMSByZWcyCisJc3RtZGIgc3AhLCB7cjAsIFxyZWcxLCBccmVnMn0KKwkuZW5kbQor
CisJLm1hY3JvIGV4aXQgcmVnMSByZWcyCisJbGRtZmQgc3AhLCB7cjAsIFxyZWcxLCBccmVn
Mn0KKwkuZW5kbQorCisJLnRleHQKKworLyogUHJvdG90eXBlOiB2b2lkICptZW1jcHkodm9p
ZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7ICovCisKK0VOVFJZKG1lbWNw
eSkKKworI2luY2x1ZGUgImNvcHlfdGVtcGxhdGUuUyIKKwpkaWZmIC1yIGU3MDE0NjFiMTI1
MSB4ZW4vYXJjaC9hcm0vbGliL21lbW1vdmUuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL21lbW1vdmUuUwlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyMDcgQEAKKy8qCisg
KiAgbGludXgvYXJjaC9hcm0vbGliL21lbW1vdmUuUworICoKKyAqICBBdXRob3I6CU5pY29s
YXMgUGl0cmUKKyAqICBDcmVhdGVkOglTZXAgMjgsIDIwMDUKKyAqICBDb3B5cmlnaHQ6CShD
KSBNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq
ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IHZlcnNpb24gMiBhcworICogIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNt
L2FzbS1tYWNyb3MuaD4KKworCisvKgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBlbmFibGUg
Y29kZSB0byBjYWNoZWxpbmUgYWxpZ24gdGhlIHNvdXJjZSBwb2ludGVyLgorICogRXhwZXJp
bWVudHMgb24gdGVzdGVkIGFyY2hpdGVjdHVyZXMgKFN0cm9uZ0FSTSBhbmQgWFNjYWxlKSBk
aWRuJ3Qgc2hvdworICogdGhpcyBhIHdvcnRod2hpbGUgdGhpbmcgdG8gZG8uICBUaGF0IG1p
Z2h0IGJlIGRpZmZlcmVudCBpbiB0aGUgZnV0dXJlLgorICovCisvLyNkZWZpbmUgQ0FMR04o
Y29kZS4uLikgICAgICAgIGNvZGUKKyNkZWZpbmUgQ0FMR04oY29kZS4uLikKKworCQkudGV4
dAorCisvKgorICogUHJvdG90eXBlOiB2b2lkICptZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0
IHZvaWQgKnNyYywgc2l6ZV90IG4pOworICoKKyAqIE5vdGU6CisgKgorICogSWYgdGhlIG1l
bW9yeSByZWdpb25zIGRvbid0IG92ZXJsYXAsIHdlIHNpbXBseSBicmFuY2ggdG8gbWVtY3B5
IHdoaWNoIGlzCisgKiBub3JtYWxseSBhIGJpdCBmYXN0ZXIuIE90aGVyd2lzZSB0aGUgY29w
eSBpcyBkb25lIGdvaW5nIGRvd253YXJkcy4gIFRoaXMKKyAqIGlzIGEgdHJhbnNwb3NpdGlv
biBvZiB0aGUgY29kZSBmcm9tIGNvcHlfdGVtcGxhdGUuUyBidXQgd2l0aCB0aGUgY29weQor
ICogb2NjdXJyaW5nIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24uCisgKi8KKworRU5UUlko
bWVtbW92ZSkKKworCQlzdWJzCWlwLCByMCwgcjEKKwkJY21waGkJcjIsIGlwCisJCWJscwlt
ZW1jcHkKKworCQlzdG1mZAlzcCEsIHtyMCwgcjQsIGxyfQorCQlhZGQJcjEsIHIxLCByMgor
CQlhZGQJcjAsIHIwLCByMgorCQlzdWJzCXIyLCByMiwgIzQKKwkJYmx0CThmCisJCWFuZHMJ
aXAsIHIwLCAjMworCVBMRCgJcGxkCVtyMSwgIy00XQkJKQorCQlibmUJOWYKKwkJYW5kcwlp
cCwgcjEsICMzCisJCWJuZQkxMGYKKworMToJCXN1YnMJcjIsIHIyLCAjKDI4KQorCQlzdG1m
ZAlzcCEsIHtyNSAtIHI4fQorCQlibHQJNWYKKworCUNBTEdOKAlhbmRzCWlwLCByMSwgIzMx
CQkpCisJQ0FMR04oCXNiY25lcwlyNCwgaXAsIHIyCQkpICBAIEMgaXMgYWx3YXlzIHNldCBo
ZXJlCisJQ0FMR04oCWJjcwkyZgkJCSkKKwlDQUxHTigJYWRyCXI0LCA2ZgkJCSkKKwlDQUxH
TigJc3VicwlyMiwgcjIsIGlwCQkpICBAIEMgaXMgc2V0IGhlcmUKKwlDQUxHTigJYWRkCXBj
LCByNCwgaXAJCSkKKworCVBMRCgJcGxkCVtyMSwgIy00XQkJKQorMjoJUExEKAlzdWJzCXIy
LCByMiwgIzk2CQkpCisJUExEKAlwbGQJW3IxLCAjLTMyXQkJKQorCVBMRCgJYmx0CTRmCQkJ
KQorCVBMRCgJcGxkCVtyMSwgIy02NF0JCSkKKwlQTEQoCXBsZAlbcjEsICMtOTZdCQkpCisK
KzM6CVBMRCgJcGxkCVtyMSwgIy0xMjhdCQkpCis0OgkJbGRtZGIJcjEhLCB7cjMsIHI0LCBy
NSwgcjYsIHI3LCByOCwgaXAsIGxyfQorCQlzdWJzCXIyLCByMiwgIzMyCisJCXN0bWRiCXIw
ISwge3IzLCByNCwgcjUsIHI2LCByNywgcjgsIGlwLCBscn0KKwkJYmdlCTNiCisJUExEKAlj
bW4JcjIsICM5NgkJCSkKKwlQTEQoCWJnZQk0YgkJCSkKKworNToJCWFuZHMJaXAsIHIyLCAj
MjgKKwkJcnNiCWlwLCBpcCwgIzMyCisJCWFkZG5lCXBjLCBwYywgaXAJCUAgQyBpcyBhbHdh
eXMgY2xlYXIgaGVyZQorCQliCTdmCis2OgkJbm9wCisJCWxkcglyMywgW3IxLCAjLTRdIQor
CQlsZHIJcjQsIFtyMSwgIy00XSEKKwkJbGRyCXI1LCBbcjEsICMtNF0hCisJCWxkcglyNiwg
W3IxLCAjLTRdIQorCQlsZHIJcjcsIFtyMSwgIy00XSEKKwkJbGRyCXI4LCBbcjEsICMtNF0h
CisJCWxkcglsciwgW3IxLCAjLTRdIQorCisJCWFkZAlwYywgcGMsIGlwCisJCW5vcAorCQlu
b3AKKwkJc3RyCXIzLCBbcjAsICMtNF0hCisJCXN0cglyNCwgW3IwLCAjLTRdIQorCQlzdHIJ
cjUsIFtyMCwgIy00XSEKKwkJc3RyCXI2LCBbcjAsICMtNF0hCisJCXN0cglyNywgW3IwLCAj
LTRdIQorCQlzdHIJcjgsIFtyMCwgIy00XSEKKwkJc3RyCWxyLCBbcjAsICMtNF0hCisKKwlD
QUxHTigJYmNzCTJiCQkJKQorCis3OgkJbGRtZmQJc3AhLCB7cjUgLSByOH0KKworODoJCW1v
dnMJcjIsIHIyLCBsc2wgIzMxCisJCWxkcm5lYglyMywgW3IxLCAjLTFdIQorCQlsZHJjc2IJ
cjQsIFtyMSwgIy0xXSEKKwkJbGRyY3NiCWlwLCBbcjEsICMtMV0KKwkJc3RybmViCXIzLCBb
cjAsICMtMV0hCisJCXN0cmNzYglyNCwgW3IwLCAjLTFdIQorCQlzdHJjc2IJaXAsIFtyMCwg
Iy0xXQorCQlsZG1mZAlzcCEsIHtyMCwgcjQsIHBjfQorCis5OgkJY21wCWlwLCAjMgorCQls
ZHJndGIJcjMsIFtyMSwgIy0xXSEKKwkJbGRyZ2ViCXI0LCBbcjEsICMtMV0hCisJCWxkcmIJ
bHIsIFtyMSwgIy0xXSEKKwkJc3RyZ3RiCXIzLCBbcjAsICMtMV0hCisJCXN0cmdlYglyNCwg
W3IwLCAjLTFdIQorCQlzdWJzCXIyLCByMiwgaXAKKwkJc3RyYglsciwgW3IwLCAjLTFdIQor
CQlibHQJOGIKKwkJYW5kcwlpcCwgcjEsICMzCisJCWJlcQkxYgorCisxMDoJCWJpYwlyMSwg
cjEsICMzCisJCWNtcAlpcCwgIzIKKwkJbGRyCXIzLCBbcjEsICMwXQorCQliZXEJMTdmCisJ
CWJsdAkxOGYKKworCisJCS5tYWNybwliYWNrd2FyZF9jb3B5X3NoaWZ0IHB1c2ggcHVsbAor
CisJCXN1YnMJcjIsIHIyLCAjMjgKKwkJYmx0CTE0ZgorCisJQ0FMR04oCWFuZHMJaXAsIHIx
LCAjMzEJCSkKKwlDQUxHTigJcnNiCWlwLCBpcCwgIzMyCQkpCisJQ0FMR04oCXNiY25lcwly
NCwgaXAsIHIyCQkpICBAIEMgaXMgYWx3YXlzIHNldCBoZXJlCisJQ0FMR04oCXN1YmNjCXIy
LCByMiwgaXAJCSkKKwlDQUxHTigJYmNjCTE1ZgkJCSkKKworMTE6CQlzdG1mZAlzcCEsIHty
NSAtIHI5fQorCisJUExEKAlwbGQJW3IxLCAjLTRdCQkpCisJUExEKAlzdWJzCXIyLCByMiwg
Izk2CQkpCisJUExEKAlwbGQJW3IxLCAjLTMyXQkJKQorCVBMRCgJYmx0CTEzZgkJCSkKKwlQ
TEQoCXBsZAlbcjEsICMtNjRdCQkpCisJUExEKAlwbGQJW3IxLCAjLTk2XQkJKQorCisxMjoJ
UExEKAlwbGQJW3IxLCAjLTEyOF0JCSkKKzEzOgkJbGRtZGIgICByMSEsIHtyNywgcjgsIHI5
LCBpcH0KKwkJbW92ICAgICBsciwgcjMsIHB1c2ggI1xwdXNoCisJCXN1YnMgICAgcjIsIHIy
LCAjMzIKKwkJbGRtZGIgICByMSEsIHtyMywgcjQsIHI1LCByNn0KKwkJb3JyICAgICBsciwg
bHIsIGlwLCBwdWxsICNccHVsbAorCQltb3YgICAgIGlwLCBpcCwgcHVzaCAjXHB1c2gKKwkJ
b3JyICAgICBpcCwgaXAsIHI5LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI5LCByOSwgcHVz
aCAjXHB1c2gKKwkJb3JyICAgICByOSwgcjksIHI4LCBwdWxsICNccHVsbAorCQltb3YgICAg
IHI4LCByOCwgcHVzaCAjXHB1c2gKKwkJb3JyICAgICByOCwgcjgsIHI3LCBwdWxsICNccHVs
bAorCQltb3YgICAgIHI3LCByNywgcHVzaCAjXHB1c2gKKwkJb3JyICAgICByNywgcjcsIHI2
LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI2LCByNiwgcHVzaCAjXHB1c2gKKwkJb3JyICAg
ICByNiwgcjYsIHI1LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI1LCByNSwgcHVzaCAjXHB1
c2gKKwkJb3JyICAgICByNSwgcjUsIHI0LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI0LCBy
NCwgcHVzaCAjXHB1c2gKKwkJb3JyICAgICByNCwgcjQsIHIzLCBwdWxsICNccHVsbAorCQlz
dG1kYiAgIHIwISwge3I0IC0gcjksIGlwLCBscn0KKwkJYmdlCTEyYgorCVBMRCgJY21uCXIy
LCAjOTYJCQkpCisJUExEKAliZ2UJMTNiCQkJKQorCisJCWxkbWZkCXNwISwge3I1IC0gcjl9
CisKKzE0OgkJYW5kcwlpcCwgcjIsICMyOAorCQliZXEJMTZmCisKKzE1OgkJbW92ICAgICBs
ciwgcjMsIHB1c2ggI1xwdXNoCisJCWxkcglyMywgW3IxLCAjLTRdIQorCQlzdWJzCWlwLCBp
cCwgIzQKKwkJb3JyCWxyLCBsciwgcjMsIHB1bGwgI1xwdWxsCisJCXN0cglsciwgW3IwLCAj
LTRdIQorCQliZ3QJMTViCisJQ0FMR04oCWNtcAlyMiwgIzAJCQkpCisJQ0FMR04oCWJnZQkx
MWIJCQkpCisKKzE2OgkJYWRkCXIxLCByMSwgIyhccHVsbCAvIDgpCisJCWIJOGIKKworCQku
ZW5kbQorCisKKwkJYmFja3dhcmRfY29weV9zaGlmdAlwdXNoPTgJcHVsbD0yNAorCisxNzoJ
CWJhY2t3YXJkX2NvcHlfc2hpZnQJcHVzaD0xNglwdWxsPTE2CisKKzE4OgkJYmFja3dhcmRf
Y29weV9zaGlmdAlwdXNoPTI0CXB1bGw9OAorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9h
cmNoL2FybS9saWIvbWVtb3J5LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9tZW1vcnkuUwlGcmkgRmViIDAz
IDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw0MjEgQEAKKy8qCisgKiAgbGludXgv
YXJjaC9hcm0vbGliL21lbWNweS5TCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQor
ICogIENyZWF0ZWQ6CVNlcCAyOCwgMjAwNQorICogIENvcHlyaWdodDoJTW9udGFWaXN0YSBT
b2Z0d2FyZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz
CisgKiAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8K
KworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5o
PgorCisKKwkubWFjcm8gbGRyMXcgcHRyIHJlZyBhYm9ydAorCWxkciBccmVnLCBbXHB0cl0s
ICM0CisJLmVuZG0KKworCS5tYWNybyBsZHI0dyBwdHIgcmVnMSByZWcyIHJlZzMgcmVnNCBh
Ym9ydAorCWxkbWlhIFxwdHIhLCB7XHJlZzEsIFxyZWcyLCBccmVnMywgXHJlZzR9CisJLmVu
ZG0KKworCS5tYWNybyBsZHI4dyBwdHIgcmVnMSByZWcyIHJlZzMgcmVnNCByZWc1IHJlZzYg
cmVnNyByZWc4IGFib3J0CisJbGRtaWEgXHB0ciEsIHtccmVnMSwgXHJlZzIsIFxyZWczLCBc
cmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywgXHJlZzh9CisJLmVuZG0KKworCS5tYWNybyBs
ZHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQKKwlsZHJcY29uZFwoKWIgXHJlZywgW1xwdHJd
LCAjMQorCS5lbmRtCisKKwkubWFjcm8gc3RyMXcgcHRyIHJlZyBhYm9ydAorCXN0ciBccmVn
LCBbXHB0cl0sICM0CisJLmVuZG0KKworCS5tYWNybyBzdHI4dyBwdHIgcmVnMSByZWcyIHJl
ZzMgcmVnNCByZWc1IHJlZzYgcmVnNyByZWc4IGFib3J0CisJc3RtaWEgXHB0ciEsIHtccmVn
MSwgXHJlZzIsIFxyZWczLCBccmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywgXHJlZzh9CisJ
LmVuZG0KKworCS5tYWNybyBzdHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQKKwlzdHJcY29u
ZFwoKWIgXHJlZywgW1xwdHJdLCAjMQorCS5lbmRtCisKKwkubWFjcm8gZW50ZXIgcmVnMSBy
ZWcyCisJc3RtZGIgc3AhLCB7cjAsIFxyZWcxLCBccmVnMn0KKwkuZW5kbQorCisJLm1hY3Jv
IGV4aXQgcmVnMSByZWcyCisJbGRtZmQgc3AhLCB7cjAsIFxyZWcxLCBccmVnMn0KKwkuZW5k
bQorCisJLnRleHQKKworLyogUHJvdG90eXBlOiB2b2lkICptZW1jcHkodm9pZCAqZGVzdCwg
Y29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7ICovCisKK0VOVFJZKG1lbWNweSkKKworI2lu
Y2x1ZGUgImNvcHlfdGVtcGxhdGUuUyIKKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNp
bmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisJLnRleHQKKwkuYWxpZ24JNQorRU5UUlko
bWVtY2hyKQorMToJc3VicwlyMiwgcjIsICMxCisJYm1pCTJmCisJbGRyYglyMywgW3IwXSwg
IzEKKwl0ZXEJcjMsIHIxCisJYm5lCTFiCisJc3ViCXIwLCByMCwgIzEKKzI6CW1vdm5lCXIw
LCAjMAorCW1vdglwYyxscgorLyoKKyAqICBsaW51eC9hcmNoL2FybS9saWIvbWVtbW92ZS5T
CisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENyZWF0ZWQ6CVNlcCAyOCwg
MjAwNQorICogIENvcHlyaWdodDoJKEMpIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoK
KyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiAgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPHhlbi9j
b25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisKKy8qCisgKiBUaGlz
IGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb2RlIHRvIGNhY2hlbGluZSBhbGlnbiB0aGUgc291
cmNlIHBvaW50ZXIuCisgKiBFeHBlcmltZW50cyBvbiB0ZXN0ZWQgYXJjaGl0ZWN0dXJlcyAo
U3Ryb25nQVJNIGFuZCBYU2NhbGUpIGRpZG4ndCBzaG93CisgKiB0aGlzIGEgd29ydGh3aGls
ZSB0aGluZyB0byBkby4gIFRoYXQgbWlnaHQgYmUgZGlmZmVyZW50IGluIHRoZSBmdXR1cmUu
CisgKi8KKy8vI2RlZmluZSBDQUxHTihjb2RlLi4uKSAgICAgICAgY29kZQorI2RlZmluZSBD
QUxHTihjb2RlLi4uKQorCisJCS50ZXh0CisKKy8qCisgKiBQcm90b3R5cGU6IHZvaWQgKm1l
bW1vdmUodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7CisgKgorICog
Tm90ZToKKyAqCisgKiBJZiB0aGUgbWVtb3J5IHJlZ2lvbnMgZG9uJ3Qgb3ZlcmxhcCwgd2Ug
c2ltcGx5IGJyYW5jaCB0byBtZW1jcHkgd2hpY2ggaXMKKyAqIG5vcm1hbGx5IGEgYml0IGZh
c3Rlci4gT3RoZXJ3aXNlIHRoZSBjb3B5IGlzIGRvbmUgZ29pbmcgZG93bndhcmRzLiAgVGhp
cworICogaXMgYSB0cmFuc3Bvc2l0aW9uIG9mIHRoZSBjb2RlIGZyb20gY29weV90ZW1wbGF0
ZS5TIGJ1dCB3aXRoIHRoZSBjb3B5CisgKiBvY2N1cnJpbmcgaW4gdGhlIG9wcG9zaXRlIGRp
cmVjdGlvbi4KKyAqLworCitFTlRSWShtZW1tb3ZlKQorCisJCXN1YnMJaXAsIHIwLCByMQor
CQljbXBoaQlyMiwgaXAKKwkJYmxzCW1lbWNweQorCisJCXN0bWZkCXNwISwge3IwLCByNCwg
bHJ9CisJCWFkZAlyMSwgcjEsIHIyCisJCWFkZAlyMCwgcjAsIHIyCisJCXN1YnMJcjIsIHIy
LCAjNAorCQlibHQJOGYKKwkJYW5kcwlpcCwgcjAsICMzCisJUExEKAlwbGQJW3IxLCAjLTRd
CQkpCisJCWJuZQk5ZgorCQlhbmRzCWlwLCByMSwgIzMKKwkJYm5lCTEwZgorCisxOgkJc3Vi
cwlyMiwgcjIsICMoMjgpCisJCXN0bWZkCXNwISwge3I1IC0gcjh9CisJCWJsdAk1ZgorCisJ
Q0FMR04oCWFuZHMJaXAsIHIxLCAjMzEJCSkKKwlDQUxHTigJc2JjbmVzCXI0LCBpcCwgcjIJ
CSkgIEAgQyBpcyBhbHdheXMgc2V0IGhlcmUKKwlDQUxHTigJYmNzCTJmCQkJKQorCUNBTEdO
KAlhZHIJcjQsIDZmCQkJKQorCUNBTEdOKAlzdWJzCXIyLCByMiwgaXAJCSkgIEAgQyBpcyBz
ZXQgaGVyZQorCUNBTEdOKAlhZGQJcGMsIHI0LCBpcAkJKQorCisJUExEKAlwbGQJW3IxLCAj
LTRdCQkpCisyOglQTEQoCXN1YnMJcjIsIHIyLCAjOTYJCSkKKwlQTEQoCXBsZAlbcjEsICMt
MzJdCQkpCisJUExEKAlibHQJNGYJCQkpCisJUExEKAlwbGQJW3IxLCAjLTY0XQkJKQorCVBM
RCgJcGxkCVtyMSwgIy05Nl0JCSkKKworMzoJUExEKAlwbGQJW3IxLCAjLTEyOF0JCSkKKzQ6
CQlsZG1kYglyMSEsIHtyMywgcjQsIHI1LCByNiwgcjcsIHI4LCBpcCwgbHJ9CisJCXN1YnMJ
cjIsIHIyLCAjMzIKKwkJc3RtZGIJcjAhLCB7cjMsIHI0LCByNSwgcjYsIHI3LCByOCwgaXAs
IGxyfQorCQliZ2UJM2IKKwlQTEQoCWNtbglyMiwgIzk2CQkJKQorCVBMRCgJYmdlCTRiCQkJ
KQorCis1OgkJYW5kcwlpcCwgcjIsICMyOAorCQlyc2IJaXAsIGlwLCAjMzIKKwkJYWRkbmUJ
cGMsIHBjLCBpcAkJQCBDIGlzIGFsd2F5cyBjbGVhciBoZXJlCisJCWIJN2YKKzY6CQlub3AK
KwkJbGRyCXIzLCBbcjEsICMtNF0hCisJCWxkcglyNCwgW3IxLCAjLTRdIQorCQlsZHIJcjUs
IFtyMSwgIy00XSEKKwkJbGRyCXI2LCBbcjEsICMtNF0hCisJCWxkcglyNywgW3IxLCAjLTRd
IQorCQlsZHIJcjgsIFtyMSwgIy00XSEKKwkJbGRyCWxyLCBbcjEsICMtNF0hCisKKwkJYWRk
CXBjLCBwYywgaXAKKwkJbm9wCisJCW5vcAorCQlzdHIJcjMsIFtyMCwgIy00XSEKKwkJc3Ry
CXI0LCBbcjAsICMtNF0hCisJCXN0cglyNSwgW3IwLCAjLTRdIQorCQlzdHIJcjYsIFtyMCwg
Iy00XSEKKwkJc3RyCXI3LCBbcjAsICMtNF0hCisJCXN0cglyOCwgW3IwLCAjLTRdIQorCQlz
dHIJbHIsIFtyMCwgIy00XSEKKworCUNBTEdOKAliY3MJMmIJCQkpCisKKzc6CQlsZG1mZAlz
cCEsIHtyNSAtIHI4fQorCis4OgkJbW92cwlyMiwgcjIsIGxzbCAjMzEKKwkJbGRybmViCXIz
LCBbcjEsICMtMV0hCisJCWxkcmNzYglyNCwgW3IxLCAjLTFdIQorCQlsZHJjc2IJaXAsIFty
MSwgIy0xXQorCQlzdHJuZWIJcjMsIFtyMCwgIy0xXSEKKwkJc3RyY3NiCXI0LCBbcjAsICMt
MV0hCisJCXN0cmNzYglpcCwgW3IwLCAjLTFdCisJCWxkbWZkCXNwISwge3IwLCByNCwgcGN9
CisKKzk6CQljbXAJaXAsICMyCisJCWxkcmd0YglyMywgW3IxLCAjLTFdIQorCQlsZHJnZWIJ
cjQsIFtyMSwgIy0xXSEKKwkJbGRyYglsciwgW3IxLCAjLTFdIQorCQlzdHJndGIJcjMsIFty
MCwgIy0xXSEKKwkJc3RyZ2ViCXI0LCBbcjAsICMtMV0hCisJCXN1YnMJcjIsIHIyLCBpcAor
CQlzdHJiCWxyLCBbcjAsICMtMV0hCisJCWJsdAk4YgorCQlhbmRzCWlwLCByMSwgIzMKKwkJ
YmVxCTFiCisKKzEwOgkJYmljCXIxLCByMSwgIzMKKwkJY21wCWlwLCAjMgorCQlsZHIJcjMs
IFtyMSwgIzBdCisJCWJlcQkxN2YKKwkJYmx0CTE4ZgorCisKKwkJLm1hY3JvCWJhY2t3YXJk
X2NvcHlfc2hpZnQgcHVzaCBwdWxsCisKKwkJc3VicwlyMiwgcjIsICMyOAorCQlibHQJMTRm
CisKKwlDQUxHTigJYW5kcwlpcCwgcjEsICMzMQkJKQorCUNBTEdOKAlyc2IJaXAsIGlwLCAj
MzIJCSkKKwlDQUxHTigJc2JjbmVzCXI0LCBpcCwgcjIJCSkgIEAgQyBpcyBhbHdheXMgc2V0
IGhlcmUKKwlDQUxHTigJc3ViY2MJcjIsIHIyLCBpcAkJKQorCUNBTEdOKAliY2MJMTVmCQkJ
KQorCisxMToJCXN0bWZkCXNwISwge3I1IC0gcjl9CisKKwlQTEQoCXBsZAlbcjEsICMtNF0J
CSkKKwlQTEQoCXN1YnMJcjIsIHIyLCAjOTYJCSkKKwlQTEQoCXBsZAlbcjEsICMtMzJdCQkp
CisJUExEKAlibHQJMTNmCQkJKQorCVBMRCgJcGxkCVtyMSwgIy02NF0JCSkKKwlQTEQoCXBs
ZAlbcjEsICMtOTZdCQkpCisKKzEyOglQTEQoCXBsZAlbcjEsICMtMTI4XQkJKQorMTM6CQls
ZG1kYiAgIHIxISwge3I3LCByOCwgcjksIGlwfQorCQltb3YgICAgIGxyLCByMywgcHVzaCAj
XHB1c2gKKwkJc3VicyAgICByMiwgcjIsICMzMgorCQlsZG1kYiAgIHIxISwge3IzLCByNCwg
cjUsIHI2fQorCQlvcnIgICAgIGxyLCBsciwgaXAsIHB1bGwgI1xwdWxsCisJCW1vdiAgICAg
aXAsIGlwLCBwdXNoICNccHVzaAorCQlvcnIgICAgIGlwLCBpcCwgcjksIHB1bGwgI1xwdWxs
CisJCW1vdiAgICAgcjksIHI5LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI5LCByOSwgcjgs
IHB1bGwgI1xwdWxsCisJCW1vdiAgICAgcjgsIHI4LCBwdXNoICNccHVzaAorCQlvcnIgICAg
IHI4LCByOCwgcjcsIHB1bGwgI1xwdWxsCisJCW1vdiAgICAgcjcsIHI3LCBwdXNoICNccHVz
aAorCQlvcnIgICAgIHI3LCByNywgcjYsIHB1bGwgI1xwdWxsCisJCW1vdiAgICAgcjYsIHI2
LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI2LCByNiwgcjUsIHB1bGwgI1xwdWxsCisJCW1v
diAgICAgcjUsIHI1LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI1LCByNSwgcjQsIHB1bGwg
I1xwdWxsCisJCW1vdiAgICAgcjQsIHI0LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI0LCBy
NCwgcjMsIHB1bGwgI1xwdWxsCisJCXN0bWRiICAgcjAhLCB7cjQgLSByOSwgaXAsIGxyfQor
CQliZ2UJMTJiCisJUExEKAljbW4JcjIsICM5NgkJCSkKKwlQTEQoCWJnZQkxM2IJCQkpCisK
KwkJbGRtZmQJc3AhLCB7cjUgLSByOX0KKworMTQ6CQlhbmRzCWlwLCByMiwgIzI4CisJCWJl
cQkxNmYKKworMTU6CQltb3YgICAgIGxyLCByMywgcHVzaCAjXHB1c2gKKwkJbGRyCXIzLCBb
cjEsICMtNF0hCisJCXN1YnMJaXAsIGlwLCAjNAorCQlvcnIJbHIsIGxyLCByMywgcHVsbCAj
XHB1bGwKKwkJc3RyCWxyLCBbcjAsICMtNF0hCisJCWJndAkxNWIKKwlDQUxHTigJY21wCXIy
LCAjMAkJCSkKKwlDQUxHTigJYmdlCTExYgkJCSkKKworMTY6CQlhZGQJcjEsIHIxLCAjKFxw
dWxsIC8gOCkKKwkJYgk4YgorCisJCS5lbmRtCisKKworCQliYWNrd2FyZF9jb3B5X3NoaWZ0
CXB1c2g9OAlwdWxsPTI0CisKKzE3OgkJYmFja3dhcmRfY29weV9zaGlmdAlwdXNoPTE2CXB1
bGw9MTYKKworMTg6CQliYWNrd2FyZF9jb3B5X3NoaWZ0CXB1c2g9MjQJcHVsbD04CisKKyNp
bmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKwor
CS50ZXh0CisJLmFsaWduCTUKKwkud29yZAkwCisKKzE6CXN1YnMJcjIsIHIyLCAjNAkJQCAx
IGRvIHdlIGhhdmUgZW5vdWdoCisJYmx0CTVmCQkJQCAxIGJ5dGVzIHRvIGFsaWduIHdpdGg/
CisJY21wCXIzLCAjMgkJCUAgMQorCXN0cmx0YglyMSwgW3IwXSwgIzEJCUAgMQorCXN0cmxl
YglyMSwgW3IwXSwgIzEJCUAgMQorCXN0cmIJcjEsIFtyMF0sICMxCQlAIDEKKwlhZGQJcjIs
IHIyLCByMwkJQCAxIChyMiA9IHIyIC0gKDQgLSByMykpCisvKgorICogVGhlIHBvaW50ZXIg
aXMgbm93IGFsaWduZWQgYW5kIHRoZSBsZW5ndGggaXMgYWRqdXN0ZWQuICBUcnkgZG9pbmcg
dGhlCisgKiBtZW16ZXJvIGFnYWluLgorICovCisKK0VOVFJZKG1lbXNldCkKKwlhbmRzCXIz
LCByMCwgIzMJCUAgMSB1bmFsaWduZWQ/CisJYm5lCTFiCQkJQCAxCisvKgorICogd2Uga25v
dyB0aGF0IHRoZSBwb2ludGVyIGluIHIwIGlzIGFsaWduZWQgdG8gYSB3b3JkIGJvdW5kYXJ5
LgorICovCisJb3JyCXIxLCByMSwgcjEsIGxzbCAjOAorCW9ycglyMSwgcjEsIHIxLCBsc2wg
IzE2CisJbW92CXIzLCByMQorCWNtcAlyMiwgIzE2CisJYmx0CTRmCisvKgorICogV2UgbmVl
ZCBhbiBleHRyYSByZWdpc3RlciBmb3IgdGhpcyBsb29wIC0gc2F2ZSB0aGUgcmV0dXJuIGFk
ZHJlc3MgYW5kCisgKiB1c2UgdGhlIExSCisgKi8KKwlzdHIJbHIsIFtzcCwgIy00XSEKKwlt
b3YJaXAsIHIxCisJbW92CWxyLCByMQorCisyOglzdWJzCXIyLCByMiwgIzY0CisJc3RtZ2Vp
YQlyMCEsIHtyMSwgcjMsIGlwLCBscn0JQCA2NCBieXRlcyBhdCBhIHRpbWUuCisJc3RtZ2Vp
YQlyMCEsIHtyMSwgcjMsIGlwLCBscn0KKwlzdG1nZWlhCXIwISwge3IxLCByMywgaXAsIGxy
fQorCXN0bWdlaWEJcjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJYmd0CTJiCisJbGRtZXFmZCBz
cCEsIHtwY30JQCBOb3cgPDY0IGJ5dGVzIHRvIGdvLgorLyoKKyAqIE5vIG5lZWQgdG8gY29y
cmVjdCB0aGUgY291bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZyb20gbm93IG9uCisg
Ki8KKwl0c3QJcjIsICMzMgorCXN0bW5laWEJcjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJc3Rt
bmVpYQlyMCEsIHtyMSwgcjMsIGlwLCBscn0KKwl0c3QJcjIsICMxNgorCXN0bW5laWEJcjAh
LCB7cjEsIHIzLCBpcCwgbHJ9CisJbGRyCWxyLCBbc3BdLCAjNAorCis0Ogl0c3QJcjIsICM4
CisJc3RtbmVpYQlyMCEsIHtyMSwgcjN9CisJdHN0CXIyLCAjNAorCXN0cm5lCXIxLCBbcjBd
LCAjNAorLyoKKyAqIFdoZW4gd2UgZ2V0IGhlcmUsIHdlJ3ZlIGdvdCBsZXNzIHRoYW4gNCBi
eXRlcyB0byB6ZXJvLiAgV2UKKyAqIG1heSBoYXZlIGFuIHVuYWxpZ25lZCBwb2ludGVyIGFz
IHdlbGwuCisgKi8KKzU6CXRzdAlyMiwgIzIKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJc3Ry
bmViCXIxLCBbcjBdLCAjMQorCXRzdAlyMiwgIzEKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJ
bW92CXBjLGxyCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9hc20t
bWFjcm9zLmg+CisKKwkudGV4dAorCS5hbGlnbgk1CisJLndvcmQJMAorLyoKKyAqIEFsaWdu
IHRoZSBwb2ludGVyIGluIHIwLiAgcjMgY29udGFpbnMgdGhlIG51bWJlciBvZiBieXRlcyB0
aGF0IHdlIGFyZQorICogbWlzLWFsaWduZWQgYnksIGFuZCByMSBpcyB0aGUgbnVtYmVyIG9m
IGJ5dGVzLiAgSWYgcjEgPCA0LCB0aGVuIHdlCisgKiBkb24ndCBib3RoZXI7IHdlIHVzZSBi
eXRlIHN0b3JlcyBpbnN0ZWFkLgorICovCisxOglzdWJzCXIxLCByMSwgIzQJCUAgMSBkbyB3
ZSBoYXZlIGVub3VnaAorCWJsdAk1ZgkJCUAgMSBieXRlcyB0byBhbGlnbiB3aXRoPworCWNt
cAlyMywgIzIJCQlAIDEKKwlzdHJsdGIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJsZWIJcjIs
IFtyMF0sICMxCQlAIDEKKwlzdHJiCXIyLCBbcjBdLCAjMQkJQCAxCisJYWRkCXIxLCByMSwg
cjMJCUAgMSAocjEgPSByMSAtICg0IC0gcjMpKQorLyoKKyAqIFRoZSBwb2ludGVyIGlzIG5v
dyBhbGlnbmVkIGFuZCB0aGUgbGVuZ3RoIGlzIGFkanVzdGVkLiAgVHJ5IGRvaW5nIHRoZQor
ICogbWVtemVybyBhZ2Fpbi4KKyAqLworCitFTlRSWShfX21lbXplcm8pCisJbW92CXIyLCAj
MAkJCUAgMQorCWFuZHMJcjMsIHIwLCAjMwkJQCAxIHVuYWxpZ25lZD8KKwlibmUJMWIJCQlA
IDEKKy8qCisgKiByMyA9IDAsIGFuZCB3ZSBrbm93IHRoYXQgdGhlIHBvaW50ZXIgaW4gcjAg
aXMgYWxpZ25lZCB0byBhIHdvcmQgYm91bmRhcnkuCisgKi8KKwljbXAJcjEsICMxNgkJCUAg
MSB3ZSBjYW4gc2tpcCB0aGlzIGNodW5rIGlmIHdlCisJYmx0CTRmCQkJQCAxIGhhdmUgPCAx
NiBieXRlcworLyoKKyAqIFdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIgZm9yIHRoaXMgbG9v
cCAtIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIGFuZAorICogdXNlIHRoZSBMUgorICovCisJ
c3RyCWxyLCBbc3AsICMtNF0hCQlAIDEKKwltb3YJaXAsIHIyCQkJQCAxCisJbW92CWxyLCBy
MgkJCUAgMQorCiszOglzdWJzCXIxLCByMSwgIzY0CQlAIDEgd3JpdGUgMzIgYnl0ZXMgb3V0
IHBlciBsb29wCisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2Vp
YQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlw
LCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJYmd0CTNi
CQkJQCAxCisJbGRtZXFmZCBzcCEsIHtwY30JQCAxLzIgcXVpY2sgZXhpdAorLyoKKyAqIE5v
IG5lZWQgdG8gY29ycmVjdCB0aGUgY291bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZy
b20gbm93IG9uCisgKi8KKwl0c3QJcjEsICMzMgkJCUAgMQorCXN0bW5laWEJcjAhLCB7cjIs
IHIzLCBpcCwgbHJ9CUAgNAorCXN0bW5laWEJcjAhLCB7cjIsIHIzLCBpcCwgbHJ9CUAgNAor
CXRzdAlyMSwgIzE2CQkJQCAxIDE2IGJ5dGVzIG9yIG1vcmU/CisJc3RtbmVpYQlyMCEsIHty
MiwgcjMsIGlwLCBscn0JQCA0CisJbGRyCWxyLCBbc3BdLCAjNAkJQCAxCisKKzQ6CXRzdAly
MSwgIzgJCQlAIDEgOCBieXRlcyBvciBtb3JlPworCXN0bW5laWEJcjAhLCB7cjIsIHIzfQkJ
QCAyCisJdHN0CXIxLCAjNAkJCUAgMSA0IGJ5dGVzIG9yIG1vcmU/CisJc3RybmUJcjIsIFty
MF0sICM0CQlAIDEKKy8qCisgKiBXaGVuIHdlIGdldCBoZXJlLCB3ZSd2ZSBnb3QgbGVzcyB0
aGFuIDQgYnl0ZXMgdG8gemVyby4gIFdlCisgKiBtYXkgaGF2ZSBhbiB1bmFsaWduZWQgcG9p
bnRlciBhcyB3ZWxsLgorICovCis1Ogl0c3QJcjEsICMyCQkJQCAxIDIgYnl0ZXMgb3IgbW9y
ZT8KKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlA
IDEKKwl0c3QJcjEsICMxCQkJQCAxIGEgYnl0ZSBsZWZ0IG92ZXIKKwlzdHJuZWIJcjIsIFty
MF0sICMxCQlAIDEKKwltb3YJcGMsbHIJCUAgMQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0vbGliL21lbXNldC5TCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbWVtc2V0LlMJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjkgQEAKKyNpbmNsdWRlIDx4ZW4v
Y29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworCS50ZXh0CisJLmFs
aWduCTUKKwkud29yZAkwCisKKzE6CXN1YnMJcjIsIHIyLCAjNAkJQCAxIGRvIHdlIGhhdmUg
ZW5vdWdoCisJYmx0CTVmCQkJQCAxIGJ5dGVzIHRvIGFsaWduIHdpdGg/CisJY21wCXIzLCAj
MgkJCUAgMQorCXN0cmx0YglyMSwgW3IwXSwgIzEJCUAgMQorCXN0cmxlYglyMSwgW3IwXSwg
IzEJCUAgMQorCXN0cmIJcjEsIFtyMF0sICMxCQlAIDEKKwlhZGQJcjIsIHIyLCByMwkJQCAx
IChyMiA9IHIyIC0gKDQgLSByMykpCisvKgorICogVGhlIHBvaW50ZXIgaXMgbm93IGFsaWdu
ZWQgYW5kIHRoZSBsZW5ndGggaXMgYWRqdXN0ZWQuICBUcnkgZG9pbmcgdGhlCisgKiBtZW16
ZXJvIGFnYWluLgorICovCisKK0VOVFJZKG1lbXNldCkKKwlhbmRzCXIzLCByMCwgIzMJCUAg
MSB1bmFsaWduZWQ/CisJYm5lCTFiCQkJQCAxCisvKgorICogd2Uga25vdyB0aGF0IHRoZSBw
b2ludGVyIGluIHIwIGlzIGFsaWduZWQgdG8gYSB3b3JkIGJvdW5kYXJ5LgorICovCisJb3Jy
CXIxLCByMSwgcjEsIGxzbCAjOAorCW9ycglyMSwgcjEsIHIxLCBsc2wgIzE2CisJbW92CXIz
LCByMQorCWNtcAlyMiwgIzE2CisJYmx0CTRmCisvKgorICogV2UgbmVlZCBhbiBleHRyYSBy
ZWdpc3RlciBmb3IgdGhpcyBsb29wIC0gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgYW5kCisg
KiB1c2UgdGhlIExSCisgKi8KKwlzdHIJbHIsIFtzcCwgIy00XSEKKwltb3YJaXAsIHIxCisJ
bW92CWxyLCByMQorCisyOglzdWJzCXIyLCByMiwgIzY0CisJc3RtZ2VpYQlyMCEsIHtyMSwg
cjMsIGlwLCBscn0JQCA2NCBieXRlcyBhdCBhIHRpbWUuCisJc3RtZ2VpYQlyMCEsIHtyMSwg
cjMsIGlwLCBscn0KKwlzdG1nZWlhCXIwISwge3IxLCByMywgaXAsIGxyfQorCXN0bWdlaWEJ
cjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJYmd0CTJiCisJbGRtZXFmZCBzcCEsIHtwY30JQCBO
b3cgPDY0IGJ5dGVzIHRvIGdvLgorLyoKKyAqIE5vIG5lZWQgdG8gY29ycmVjdCB0aGUgY291
bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZyb20gbm93IG9uCisgKi8KKwl0c3QJcjIs
ICMzMgorCXN0bW5laWEJcjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJc3RtbmVpYQlyMCEsIHty
MSwgcjMsIGlwLCBscn0KKwl0c3QJcjIsICMxNgorCXN0bW5laWEJcjAhLCB7cjEsIHIzLCBp
cCwgbHJ9CisJbGRyCWxyLCBbc3BdLCAjNAorCis0Ogl0c3QJcjIsICM4CisJc3RtbmVpYQly
MCEsIHtyMSwgcjN9CisJdHN0CXIyLCAjNAorCXN0cm5lCXIxLCBbcjBdLCAjNAorLyoKKyAq
IFdoZW4gd2UgZ2V0IGhlcmUsIHdlJ3ZlIGdvdCBsZXNzIHRoYW4gNCBieXRlcyB0byB6ZXJv
LiAgV2UKKyAqIG1heSBoYXZlIGFuIHVuYWxpZ25lZCBwb2ludGVyIGFzIHdlbGwuCisgKi8K
KzU6CXRzdAlyMiwgIzIKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJc3RybmViCXIxLCBbcjBd
LCAjMQorCXRzdAlyMiwgIzEKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJbW92CXBjLGxyCmRp
ZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvbWVtemVyby5TCi0tLSAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2Fy
bS9saWIvbWVtemVyby5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCww
ICsxLDcxIEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9hc20t
bWFjcm9zLmg+CisKKwkudGV4dAorCS5hbGlnbgk1CisJLndvcmQJMAorLyoKKyAqIEFsaWdu
IHRoZSBwb2ludGVyIGluIHIwLiAgcjMgY29udGFpbnMgdGhlIG51bWJlciBvZiBieXRlcyB0
aGF0IHdlIGFyZQorICogbWlzLWFsaWduZWQgYnksIGFuZCByMSBpcyB0aGUgbnVtYmVyIG9m
IGJ5dGVzLiAgSWYgcjEgPCA0LCB0aGVuIHdlCisgKiBkb24ndCBib3RoZXI7IHdlIHVzZSBi
eXRlIHN0b3JlcyBpbnN0ZWFkLgorICovCisxOglzdWJzCXIxLCByMSwgIzQJCUAgMSBkbyB3
ZSBoYXZlIGVub3VnaAorCWJsdAk1ZgkJCUAgMSBieXRlcyB0byBhbGlnbiB3aXRoPworCWNt
cAlyMywgIzIJCQlAIDEKKwlzdHJsdGIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJsZWIJcjIs
IFtyMF0sICMxCQlAIDEKKwlzdHJiCXIyLCBbcjBdLCAjMQkJQCAxCisJYWRkCXIxLCByMSwg
cjMJCUAgMSAocjEgPSByMSAtICg0IC0gcjMpKQorLyoKKyAqIFRoZSBwb2ludGVyIGlzIG5v
dyBhbGlnbmVkIGFuZCB0aGUgbGVuZ3RoIGlzIGFkanVzdGVkLiAgVHJ5IGRvaW5nIHRoZQor
ICogbWVtemVybyBhZ2Fpbi4KKyAqLworCitFTlRSWShfX21lbXplcm8pCisJbW92CXIyLCAj
MAkJCUAgMQorCWFuZHMJcjMsIHIwLCAjMwkJQCAxIHVuYWxpZ25lZD8KKwlibmUJMWIJCQlA
IDEKKy8qCisgKiByMyA9IDAsIGFuZCB3ZSBrbm93IHRoYXQgdGhlIHBvaW50ZXIgaW4gcjAg
aXMgYWxpZ25lZCB0byBhIHdvcmQgYm91bmRhcnkuCisgKi8KKwljbXAJcjEsICMxNgkJCUAg
MSB3ZSBjYW4gc2tpcCB0aGlzIGNodW5rIGlmIHdlCisJYmx0CTRmCQkJQCAxIGhhdmUgPCAx
NiBieXRlcworLyoKKyAqIFdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIgZm9yIHRoaXMgbG9v
cCAtIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIGFuZAorICogdXNlIHRoZSBMUgorICovCisJ
c3RyCWxyLCBbc3AsICMtNF0hCQlAIDEKKwltb3YJaXAsIHIyCQkJQCAxCisJbW92CWxyLCBy
MgkJCUAgMQorCiszOglzdWJzCXIxLCByMSwgIzY0CQlAIDEgd3JpdGUgMzIgYnl0ZXMgb3V0
IHBlciBsb29wCisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2Vp
YQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlw
LCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJYmd0CTNi
CQkJQCAxCisJbGRtZXFmZCBzcCEsIHtwY30JQCAxLzIgcXVpY2sgZXhpdAorLyoKKyAqIE5v
IG5lZWQgdG8gY29ycmVjdCB0aGUgY291bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZy
b20gbm93IG9uCisgKi8KKwl0c3QJcjEsICMzMgkJCUAgMQorCXN0bW5laWEJcjAhLCB7cjIs
IHIzLCBpcCwgbHJ9CUAgNAorCXN0bW5laWEJcjAhLCB7cjIsIHIzLCBpcCwgbHJ9CUAgNAor
CXRzdAlyMSwgIzE2CQkJQCAxIDE2IGJ5dGVzIG9yIG1vcmU/CisJc3RtbmVpYQlyMCEsIHty
MiwgcjMsIGlwLCBscn0JQCA0CisJbGRyCWxyLCBbc3BdLCAjNAkJQCAxCisKKzQ6CXRzdAly
MSwgIzgJCQlAIDEgOCBieXRlcyBvciBtb3JlPworCXN0bW5laWEJcjAhLCB7cjIsIHIzfQkJ
QCAyCisJdHN0CXIxLCAjNAkJCUAgMSA0IGJ5dGVzIG9yIG1vcmU/CisJc3RybmUJcjIsIFty
MF0sICM0CQlAIDEKKy8qCisgKiBXaGVuIHdlIGdldCBoZXJlLCB3ZSd2ZSBnb3QgbGVzcyB0
aGFuIDQgYnl0ZXMgdG8gemVyby4gIFdlCisgKiBtYXkgaGF2ZSBhbiB1bmFsaWduZWQgcG9p
bnRlciBhcyB3ZWxsLgorICovCis1Ogl0c3QJcjEsICMyCQkJQCAxIDIgYnl0ZXMgb3IgbW9y
ZT8KKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlA
IDEKKwl0c3QJcjEsICMxCQkJQCAxIGEgYnl0ZSBsZWZ0IG92ZXIKKwlzdHJuZWIJcjIsIFty
MF0sICMxCQlAIDEKKwltb3YJcGMsbHIJCUAgMQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0vbGliL211bGRpMy5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbXVsZGkzLmMJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsODYgQEAKKy8qIE1vcmUgc3Vicm91
dGluZXMgbmVlZGVkIGJ5IEdDQyBvdXRwdXQgY29kZSBvbiBzb21lIG1hY2hpbmVzLiAgKi8K
Ky8qIENvbXBpbGUgdGhpcyBvbmUgd2l0aCBnY2MuICAqLworLyogQ29weXJpZ2h0IChDKSAx
OTg5LCA5Mi05OCwgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhp
cyBmaWxlIGlzIHBhcnQgb2YgR05VIENDLgorCitHTlUgQ0MgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK
K3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChh
dCB5b3VyIG9wdGlvbikKK2FueSBsYXRlciB2ZXJzaW9uLgorCitHTlUgQ0MgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBHTlUgQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LiAgSWYgbm90LCB3cml0ZSB0bwordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
ICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiB5b3UgbGluayB0aGlzIGxp
YnJhcnkgd2l0aCBvdGhlciBmaWxlcywKKyAgIHNvbWUgb2Ygd2hpY2ggYXJlIGNvbXBpbGVk
IHdpdGggR0NDLCB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsCisgICB0aGlzIGxpYnJhcnkg
ZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZQorICAg
dG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgICBU
aGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJl
YXNvbnMgd2h5CisgICB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICovCisvKiBzdXBwb3J0IGZ1bmN0
aW9ucyByZXF1aXJlZCBieSB0aGUga2VybmVsLiBiYXNlZCBvbiBjb2RlIGZyb20gZ2NjLTIu
OTUuMyAqLworLyogSSBNb2x0b24gICAgIDI5LzA3LzAxICovCisKKyNpbmNsdWRlICJnY2Ns
aWIuaCIKKworI2RlZmluZSB1bXVsX3BwbW0oeGgsIHhsLCBhLCBiKSBcCit7cmVnaXN0ZXIg
VVNJdHlwZSBfX3QwLCBfX3QxLCBfX3QyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIF9fYXNtX18gKCIlQCBJbmxpbmVkIHVtdWxfcHBtbQkJCQkJXG5cCisg
ICAgICAgIG1vdiAgICAgJTIsICU1LCBsc3IgIzE2CQkJCQkJXG5cCisgICAgICAgIG1vdiAg
ICAgJTAsICU2LCBsc3IgIzE2CQkJCQkJXG5cCisgICAgICAgIGJpYyAgICAgJTMsICU1LCAl
MiwgbHNsICMxNgkJCQkJXG5cCisgICAgICAgIGJpYyAgICAgJTQsICU2LCAlMCwgbHNsICMx
NgkJCQkJXG5cCisgICAgICAgIG11bCAgICAgJTEsICUzLCAlNAkJCQkJCVxuXAorICAgICAg
ICBtdWwgICAgICU0LCAlMiwgJTQJCQkJCQlcblwKKyAgICAgICAgbXVsICAgICAlMywgJTAs
ICUzCQkJCQkJXG5cCisgICAgICAgIG11bCAgICAgJTAsICUyLCAlMAkJCQkJCVxuXAorICAg
ICAgICBhZGRzICAgICUzLCAlNCwgJTMJCQkJCQlcblwKKyAgICAgICAgYWRkY3MgICAlMCwg
JTAsICM2NTUzNgkJCQkJCVxuXAorICAgICAgICBhZGRzICAgICUxLCAlMSwgJTMsIGxzbCAj
MTYJCQkJCVxuXAorICAgICAgICBhZGMgICAgICUwLCAlMCwgJTMsIGxzciAjMTYiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICA6ICI9JnIiICgo
VVNJdHlwZSkgKHhoKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICI9ciIgKChVU0l0eXBlKSAoeGwpKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICI9JnIiIChfX3QwKSwgIj0mciIg
KF9fdDEpLCAiPXIiIChfX3QyKSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICA6
ICJyIiAoKFVTSXR5cGUpIChhKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICJyIiAoKFVTSXR5cGUpIChiKSkpO30KKworCisjZGVm
aW5lIF9fdW11bHNpZGkzKHUsIHYpIFwKKyAgKHtESXVuaW9uIF9fdzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bXVs
X3BwbW0gKF9fdy5zLmhpZ2gsIF9fdy5zLmxvdywgdSwgdik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBfX3cubGw7IH0pCisKKworREl0eXBlCitfX211bGRpMyAoREl0
eXBlIHUsIERJdHlwZSB2KQoreworICBESXVuaW9uIHc7CisgIERJdW5pb24gdXUsIHZ2Owor
CisgIHV1LmxsID0gdSwKKyAgdnYubGwgPSB2OworCisgIHcubGwgPSBfX3VtdWxzaWRpMyAo
dXUucy5sb3csIHZ2LnMubG93KTsKKyAgdy5zLmhpZ2ggKz0gKChVU0l0eXBlKSB1dS5zLmxv
dyAqIChVU0l0eXBlKSB2di5zLmhpZ2gKKyAgICAgICAgICAgICAgICsgKFVTSXR5cGUpIHV1
LnMuaGlnaCAqIChVU0l0eXBlKSB2di5zLmxvdyk7CisKKyAgcmV0dXJuIHcubGw7Cit9CisK
KyNpZiAwCitsbGRpdl90X3JyIF9fYWVhYmlfbGRpdm1vZCAobG9uZyBsb25nIGEsIGxvbmcg
bG9uZyBiKSAKK3sgCisJbGxkaXZfdF9yciByOyAKKwlyLnF1b3QgPV9fZGl2ZGkzIChhLCBi
KTsgCisJci5yZW0gPSBhIC0gYiAqIHIucXVvdDsgCisJcmV0dXJuIHI7IAorfQorI2VuZGlm
CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvcHV0dXNlci5TCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNo
L2FybS9saWIvcHV0dXNlci5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAt
MCwwICsxLDc1IEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL2xpYi9wdXR1c2VyLlMKKyAq
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24uCisgKgorICogIElkZWEgZnJvbSB4ODYgdmVyc2lvbiwgKEMpIENv
cHlyaWdodCAxOTk4IExpbnVzIFRvcnZhbGRzCisgKgorICogVGhlc2UgZnVuY3Rpb25zIGhh
dmUgYSBub24tc3RhbmRhcmQgY2FsbCBpbnRlcmZhY2UgdG8gbWFrZQorICogdGhlbSBtb3Jl
IGVmZmljaWVudCwgZXNwZWNpYWxseSBhcyB0aGV5IHJldHVybiBhbiBlcnJvcgorICogdmFs
dWUgaW4gYWRkaXRpb24gdG8gdGhlICJyZWFsIiByZXR1cm4gdmFsdWUuCisgKgorICogX19w
dXRfdXNlcl9YCisgKgorICogSW5wdXRzOglyMCBjb250YWlucyB0aGUgYWRkcmVzcworICoJ
CXIyLCByMyBjb250YWlucyB0aGUgdmFsdWUKKyAqIE91dHB1dHM6CXIwIGlzIHRoZSBlcnJv
ciBjb2RlCisgKgkJbHIgY29ycnVwdGVkCisgKgorICogTm8gb3RoZXIgcmVnaXN0ZXJzIG11
c3QgYmUgYWx0ZXJlZC4gIChzZWUgaW5jbHVkZS9hc20tYXJtL3VhY2Nlc3MuaAorICogZm9y
IHNwZWNpZmljIEFTTSByZWdpc3RlciB1c2FnZSkuCisgKgorICogTm90ZSB0aGF0IEFERFJf
TElNSVQgaXMgZWl0aGVyIDAgb3IgMHhjMDAwMDAwMAorICogTm90ZSBhbHNvIHRoYXQgaXQg
aXMgaW50ZW5kZWQgdGhhdCBfX3B1dF91c2VyX2JhZCBpcyBub3QgZ2xvYmFsLgorICovCisj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisKKwkuZ2xvYmFsCV9fcHV0X3VzZXJfMQorX19wdXRf
dXNlcl8xOgorMToJc3RyYnQJcjIsIFtyMF0KKwltb3YJcjAsICMwCisJbW92CXBjLCBscgor
CisJLmdsb2JhbAlfX3B1dF91c2VyXzIKK19fcHV0X3VzZXJfMjoKKwltb3YJaXAsIHIyLCBs
c3IgIzgKKyNpZm5kZWYgX19BUk1FQl9fCisyOglzdHJidAlyMiwgW3IwXSwgIzEKKzM6CXN0
cmJ0CWlwLCBbcjBdCisjZWxzZQorMjoJc3RyYnQJaXAsIFtyMF0sICMxCiszOglzdHJidAly
MiwgW3IwXQorI2VuZGlmCisJbW92CXIwLCAjMAorCW1vdglwYywgbHIKKworCS5nbG9iYWwJ
X19wdXRfdXNlcl80CitfX3B1dF91c2VyXzQ6Cis0OglzdHJ0CXIyLCBbcjBdCisJbW92CXIw
LCAjMAorCW1vdglwYywgbHIKKworCS5nbG9iYWwJX19wdXRfdXNlcl84CitfX3B1dF91c2Vy
Xzg6Cis1OglzdHJ0CXIyLCBbcjBdLCAjNAorNjoJc3RydAlyMywgW3IwXQorCW1vdglyMCwg
IzAKKwltb3YJcGMsIGxyCisKKwkuZ2xvYmFsIF9fcHV0X3VzZXJfYmFkCitfX3B1dF91c2Vy
X2JhZDoKKwltb3YJcjAsICMtRUZBVUxUCisJbW92CXBjLCBscgorCisuc2VjdGlvbiAuZXh0
YWJsZSwgImEiCisJLmxvbmcJMWIsIF9fcHV0X3VzZXJfYmFkCisJLmxvbmcJMmIsIF9fcHV0
X3VzZXJfYmFkCisJLmxvbmcJM2IsIF9fcHV0X3VzZXJfYmFkCisJLmxvbmcJNGIsIF9fcHV0
X3VzZXJfYmFkCisJLmxvbmcJNWIsIF9fcHV0X3VzZXJfYmFkCisJLmxvbmcJNmIsIF9fcHV0
X3VzZXJfYmFkCisucHJldmlvdXMKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJt
L2xpYi9zZXRiaXQuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL3NldGJpdC5TCUZyaSBGZWIgMDMgMTY6MDc6
MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDIyIEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5o
PgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jv
cy5oPgorCisJCS50ZXh0CisKKy8qCisgKiBQdXJwb3NlICA6IEZ1bmN0aW9uIHRvIHNldCBh
IGJpdAorICogUHJvdG90eXBlOiBpbnQgc2V0X2JpdChpbnQgYml0LCB2b2lkICphZGRyKQor
ICovCitFTlRSWShfc2V0X2JpdF9iZSkKKwllb3IJcjAsIHIwLCAjMHgxOAkJQCBiaWcgZW5k
aWFuIGJ5dGUgb3JkZXJpbmcKK0VOVFJZKF9zZXRfYml0X2xlKQorCWFuZAlyMiwgcjAsICM3
CisJbW92CXIzLCAjMQorCW1vdglyMywgcjMsIGxzbCByMgorCXNhdmVfYW5kX2Rpc2FibGVf
aXJxcyBpcCwgcjIKKwlsZHJiCXIyLCBbcjEsIHIwLCBsc3IgIzNdCisJb3JyCXIyLCByMiwg
cjMKKwlzdHJiCXIyLCBbcjEsIHIwLCBsc3IgIzNdCisJcmVzdG9yZV9pcnFzIGlwCisJbW92
CXBjLCBscgpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL3N0cmNoci5T
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hl
bi9hcmNoL2FybS9saWIvc3RyY2hyLlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAw
CkBAIC0wLDAgKzEsMTUgQEAKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8
YXNtL2FzbS1tYWNyb3MuaD4KKworCQkudGV4dAorCQkuYWxpZ24JNQorRU5UUlkoc3RyY2hy
KQorCQlhbmQJcjEsIHIxLCAjMHhmZgorMToJCWxkcmIJcjIsIFtyMF0sICMxCisJCXRlcQly
MiwgcjEKKwkJdGVxbmUJcjIsICMwCisJCWJuZQkxYgorCQl0ZXEJcjIsIHIxCisJCW1vdm5l
CXIwLCAjMAorCQlzdWJlcQlyMCwgcjAsICMxCisJCW1vdglwYyxscgpkaWZmIC1yIGU3MDE0
NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL3Rlc3RjaGFuZ2ViaXQuUwotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGli
L3Rlc3RjaGFuZ2ViaXQuUwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAs
MCArMSwyMiBAQAorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vcHJv
Y2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworICAgICAgICAgICAg
ICAgIC50ZXh0CisKK0VOVFJZKF90ZXN0X2FuZF9jaGFuZ2VfYml0X2JlKQorCQllb3IJcjAs
IHIwLCAjMHgxOAkJQCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXJpbmcKK0VOVFJZKF90ZXN0X2Fu
ZF9jaGFuZ2VfYml0X2xlKQorCQlhZGQJcjEsIHIxLCByMCwgbHNyICMzCisJCWFuZAlyMywg
cjAsICM3CisJCW1vdglyMCwgIzEKKwkJc2F2ZV9hbmRfZGlzYWJsZV9pcnFzIGlwLCByMgor
CQlsZHJiCXIyLCBbcjFdCisJCXRzdAlyMiwgcjAsIGxzbCByMworCQllb3IJcjIsIHIyLCBy
MCwgbHNsIHIzCisJCXN0cmIJcjIsIFtyMV0KKwkJcmVzdG9yZV9pcnFzIGlwCisJCW1vdmVx
CXIwLCAjMAorCQltb3YJcGMsbHIKKworCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNo
L2FybS9saWIvdGVzdGNsZWFyYml0LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi90ZXN0Y2xlYXJiaXQuUwlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyMiBAQAorI2luY2x1
ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVk
ZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworICAgICAgICAgICAgICAgIC50ZXh0CisKK0VOVFJZ
KF90ZXN0X2FuZF9jbGVhcl9iaXRfYmUpCisJCWVvcglyMCwgcjAsICMweDE4CQlAIGJpZyBl
bmRpYW4gYnl0ZSBvcmRlcmluZworRU5UUlkoX3Rlc3RfYW5kX2NsZWFyX2JpdF9sZSkKKwkJ
YWRkCXIxLCByMSwgcjAsIGxzciAjMwlAIEdldCBieXRlIG9mZnNldAorCQlhbmQJcjMsIHIw
LCAjNwkJQCBHZXQgYml0IG9mZnNldAorCQltb3YJcjAsICMxCisJCXNhdmVfYW5kX2Rpc2Fi
bGVfaXJxcyBpcCwgcjIKKwkJbGRyYglyMiwgW3IxXQorCQl0c3QJcjIsIHIwLCBsc2wgcjMK
KwkJYmljbmUJcjIsIHIyLCByMCwgbHNsIHIzCisJCXN0cm5lYglyMiwgW3IxXQorCQlyZXN0
b3JlX2lycXMgaXAKKwkJbW92ZXEJcjAsICMwCisJCW1vdglwYyxscgorCisKZGlmZiAtciBl
NzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL2xpYi90ZXN0c2V0Yml0LlMKLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xp
Yi90ZXN0c2V0Yml0LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAg
KzEsMjAgQEAKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nl
c3Nvci5oPgorI2luY2x1ZGUgPGFzbS9hc20tbWFjcm9zLmg+CisKKyAgICAgICAgICAgICAg
ICAudGV4dAorCitFTlRSWShfdGVzdF9hbmRfc2V0X2JpdF9sZSkKKwkJYWRkCXIxLCByMSwg
cjAsIGxzciAjMwlAIEdldCBieXRlIG9mZnNldAorCQlhbmQJcjMsIHIwLCAjNwkJQCBHZXQg
Yml0IG9mZnNldAorCQltb3YJcjAsICMxCisJCXNhdmVfYW5kX2Rpc2FibGVfaXJxcyBpcCwg
cjIKKwkJbGRyYglyMiwgW3IxXQorCQl0c3QJcjIsIHIwLCBsc2wgcjMKKwkJb3JyZXEJcjIs
IHIyLCByMCwgbHNsIHIzCisJCXN0cmVxYglyMiwgW3IxXQorCQlyZXN0b3JlX2lycXMgaXAK
KwkJbW92ZXEJcjAsICMwCisJCW1vdglwYyxscgorCisKZGlmZiAtciBlNzAxNDYxYjEyNTEg
eGVuL2FyY2gvYXJtL2xpYi91YWNjZXNzLlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi91YWNjZXNzLlMJRnJp
IEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjg0IEBACisjaW5jbHVk
ZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPGFz
bS9hc20tbWFjcm9zLmg+CisKKwkJLnRleHQKKworI2RlZmluZSBQQUdFX1NISUZUIDEyCisK
Ky8qIFByb3RvdHlwZTogaW50IF9fYXJjaF9jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0
IGNoYXIgKmZyb20sIHNpemVfdCBuKQorICogUHVycG9zZSAgOiBjb3B5IGEgYmxvY2sgdG8g
dXNlciBtZW1vcnkgZnJvbSBrZXJuZWwgbWVtb3J5CisgKiBQYXJhbXMgICA6IHRvICAgLSB1
c2VyIG1lbW9yeQorICogICAgICAgICAgOiBmcm9tIC0ga2VybmVsIG1lbW9yeQorICogICAg
ICAgICAgOiBuICAgIC0gbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkKKyAqIFJldHVybnMgIDog
TnVtYmVyIG9mIGJ5dGVzIE5PVCBjb3BpZWQuCisgKi8KKworLmMydV9kZXN0X25vdF9hbGln
bmVkOgorCQlyc2IJaXAsIGlwLCAjNAorCQljbXAJaXAsICMyCisJCWxkcmIJcjMsIFtyMV0s
ICMxCitVU0VSKAkJc3RyYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCWxkcmdl
YglyMywgW3IxXSwgIzEKK1VTRVIoCQlzdHJnZWJ0CXIzLCBbcjBdLCAjMSkJCQlAIE1heSBm
YXVsdAorCQlsZHJndGIJcjMsIFtyMV0sICMxCitVU0VSKAkJc3RyZ3RidAlyMywgW3IwXSwg
IzEpCQkJQCBNYXkgZmF1bHQKKwkJc3ViCXIyLCByMiwgaXAKKwkJYgkuYzJ1X2Rlc3RfYWxp
Z25lZAorCitFTlRSWShfX2FyY2hfY29weV90b191c2VyKQorCQlzdG1mZAlzcCEsIHtyMiwg
cjQgLSByNywgbHJ9CisJCWNtcAlyMiwgIzQKKwkJYmx0CS5jMnVfbm90X2Vub3VnaAorCVBM
RCgJcGxkCVtyMSwgIzBdCQkpCisJUExEKAlwbGQJW3IwLCAjMF0JCSkKKwkJYW5kcwlpcCwg
cjAsICMzCisJCWJuZQkuYzJ1X2Rlc3Rfbm90X2FsaWduZWQKKy5jMnVfZGVzdF9hbGlnbmVk
OgorCisJCWFuZHMJaXAsIHIxLCAjMworCQlibmUJLmMydV9zcmNfbm90X2FsaWduZWQKKy8q
CisgKiBTZWVpbmcgYXMgdGhlcmUgaGFzIHRvIGJlIGF0IGxlYXN0IDggYnl0ZXMgdG8gY29w
eSwgd2UgY2FuCisgKiBjb3B5IG9uZSB3b3JkLCBhbmQgZm9yY2UgYSB1c2VyLW1vZGUgcGFn
ZSBmYXVsdC4uLgorICovCisKKy5jMnVfMGZ1cGk6CXN1YnMJcjIsIHIyLCAjNAorCQlhZGRt
aQlpcCwgcjIsICM0CisJCWJtaQkuYzJ1XzBub3dvcmRzCisJCWxkcglyMywgW3IxXSwgIzQK
K1VTRVIoCQlzdHJ0CXIzLCBbcjBdLCAjNCkJCQlAIE1heSBmYXVsdAorCQltb3YJaXAsIHIw
LCBsc2wgIzMyIC0gUEFHRV9TSElGVAlAIE9uIGVhY2ggcGFnZSwgdXNlIGEgbGQvc3Q/P3Qg
aW5zdHJ1Y3Rpb24KKwkJcnNiCWlwLCBpcCwgIzAKKwkJbW92cwlpcCwgaXAsIGxzciAjMzIg
LSBQQUdFX1NISUZUCisJCWJlcQkuYzJ1XzBmdXBpCisvKgorICogaXAgPSBtYXggbm8uIG9m
IGJ5dGVzIHRvIGNvcHkgYmVmb3JlIG5lZWRpbmcgYW5vdGhlciAic3RydCIgaW5zbgorICov
CisJCWNtcAlyMiwgaXAKKwkJbW92bHQJaXAsIHIyCisJCXN1YglyMiwgcjIsIGlwCisJCXN1
YnMJaXAsIGlwLCAjMzIKKwkJYmx0CS5jMnVfMHJlbThscAorCVBMRCgJcGxkCVtyMSwgIzI4
XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCVBMRCgJc3VicwlpcCwgaXAsICM2NAkJ
CSkKKwlQTEQoCWJsdAkuYzJ1XzBjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzYwXQkJ
KQorCVBMRCgJcGxkCVtyMCwgIzYwXQkJKQorCisuYzJ1XzBjcHk4bHA6CisJUExEKAlwbGQJ
W3IxLCAjOTJdCQkpCisJUExEKAlwbGQJW3IwLCAjOTJdCQkpCisuYzJ1XzBjcHlub3BsZDoJ
bGRtaWEJcjEhLCB7cjMgLSByNn0KKwkJc3RtaWEJcjAhLCB7cjMgLSByNn0JCQlAIFNob3Vs
ZG50IGZhdWx0CisJCWxkbWlhCXIxISwge3IzIC0gcjZ9CisJCXN1YnMJaXAsIGlwLCAjMzIK
KwkJc3RtaWEJcjAhLCB7cjMgLSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJCWJwbAkuYzJ1
XzBjcHk4bHAKKwlQTEQoCWNtbglpcCwgIzY0CQkJKQorCVBMRCgJYmdlCS5jMnVfMGNweW5v
cGxkCQkpCisJUExEKAlhZGQJaXAsIGlwLCAjNjQJCSkKKworLmMydV8wcmVtOGxwOgljbW4J
aXAsICMxNgorCQlsZG1nZWlhCXIxISwge3IzIC0gcjZ9CisJCXN0bWdlaWEJcjAhLCB7cjMg
LSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJCXRzdAlpcCwgIzgKKwkJbGRtbmVpYQlyMSEs
IHtyMyAtIHI0fQorCQlzdG1uZWlhCXIwISwge3IzIC0gcjR9CQkJQCBTaG91bGRudCBmYXVs
dAorCQl0c3QJaXAsICM0CisJCWxkcm5lCXIzLCBbcjFdLCAjNAorCQlzdHJuZXQJcjMsIFty
MF0sICM0CQkJQCBTaG91bGRudCBmYXVsdAorCQlhbmRzCWlwLCBpcCwgIzMKKwkJYmVxCS5j
MnVfMGZ1cGkKKy5jMnVfMG5vd29yZHM6CXRlcQlpcCwgIzAKKwkJYmVxCS5jMnVfZmluaXNo
ZWQKKy5jMnVfbm93b3JkczoJY21wCWlwLCAjMgorCQlsZHJiCXIzLCBbcjFdLCAjMQorVVNF
UigJCXN0cmJ0CXIzLCBbcjBdLCAjMSkJCQlAIE1heSBmYXVsdAorCQlsZHJnZWIJcjMsIFty
MV0sICMxCitVU0VSKAkJc3RyZ2VidAlyMywgW3IwXSwgIzEpCQkJQCBNYXkgZmF1bHQKKwkJ
bGRyZ3RiCXIzLCBbcjFdLCAjMQorVVNFUigJCXN0cmd0YnQJcjMsIFtyMF0sICMxKQkJCUAg
TWF5IGZhdWx0CisJCWIJLmMydV9maW5pc2hlZAorCisuYzJ1X25vdF9lbm91Z2g6CisJCW1v
dnMJaXAsIHIyCisJCWJuZQkuYzJ1X25vd29yZHMKKy5jMnVfZmluaXNoZWQ6CW1vdglyMCwg
IzAKKwkJbGRtZmQJc3AhLHtyMiwgcjQgLSByNywgcGN9CisKKy5jMnVfc3JjX25vdF9hbGln
bmVkOgorCQliaWMJcjEsIHIxLCAjMworCQlsZHIJcjcsIFtyMV0sICM0CisJCWNtcAlpcCwg
IzIKKwkJYmd0CS5jMnVfM2Z1cGkKKwkJYmVxCS5jMnVfMmZ1cGkKKy5jMnVfMWZ1cGk6CXN1
YnMJcjIsIHIyLCAjNAorCQlhZGRtaQlpcCwgcjIsICM0CisJCWJtaQkuYzJ1XzFub3dvcmRz
CisJCW1vdglyMywgcjcsIHB1bGwgIzgKKwkJbGRyCXI3LCBbcjFdLCAjNAorCQlvcnIJcjMs
IHIzLCByNywgcHVzaCAjMjQKK1VTRVIoCQlzdHJ0CXIzLCBbcjBdLCAjNCkJCQlAIE1heSBm
YXVsdAorCQltb3YJaXAsIHIwLCBsc2wgIzMyIC0gUEFHRV9TSElGVAorCQlyc2IJaXAsIGlw
LCAjMAorCQltb3ZzCWlwLCBpcCwgbHNyICMzMiAtIFBBR0VfU0hJRlQKKwkJYmVxCS5jMnVf
MWZ1cGkKKwkJY21wCXIyLCBpcAorCQltb3ZsdAlpcCwgcjIKKwkJc3ViCXIyLCByMiwgaXAK
KwkJc3VicwlpcCwgaXAsICMxNgorCQlibHQJLmMydV8xcmVtOGxwCisJUExEKAlwbGQJW3Ix
LCAjMTJdCQkpCisJUExEKAlwbGQJW3IwLCAjMTJdCQkpCisJUExEKAlzdWJzCWlwLCBpcCwg
IzMyCQkpCisJUExEKAlibHQJLmMydV8xY3B5bm9wbGQJCSkKKwlQTEQoCXBsZAlbcjEsICMy
OF0JCSkKKwlQTEQoCXBsZAlbcjAsICMyOF0JCSkKKworLmMydV8xY3B5OGxwOgorCVBMRCgJ
cGxkCVtyMSwgIzQ0XQkJKQorCVBMRCgJcGxkCVtyMCwgIzQ0XQkJKQorLmMydV8xY3B5bm9w
bGQ6CW1vdglyMywgcjcsIHB1bGwgIzgKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30KKwkJc3Vi
cwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjMjQKKwkJbW92CXI0LCBy
NCwgcHVsbCAjOAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjMjQKKwkJbW92CXI1LCByNSwg
cHVsbCAjOAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjMjQKKwkJbW92CXI2LCByNiwgcHVs
bCAjOAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjMjQKKwkJc3RtaWEJcjAhLCB7cjMgLSBy
Nn0JCQlAIFNob3VsZG50IGZhdWx0CisJCWJwbAkuYzJ1XzFjcHk4bHAKKwlQTEQoCWNtbglp
cCwgIzMyCQkJKQorCVBMRCgJYmdlCS5jMnVfMWNweW5vcGxkCQkpCisJUExEKAlhZGQJaXAs
IGlwLCAjMzIJCSkKKworLmMydV8xcmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIzLCBy
NywgcHVsbCAjOAorCQlsZG1uZWlhCXIxISwge3I0LCByN30KKwkJb3JybmUJcjMsIHIzLCBy
NCwgcHVzaCAjMjQKKwkJbW92bmUJcjQsIHI0LCBwdWxsICM4CisJCW9ycm5lCXI0LCByNCwg
cjcsIHB1c2ggIzI0CisJCXN0bW5laWEJcjAhLCB7cjMgLSByNH0JCQlAIFNob3VsZG50IGZh
dWx0CisJCXRzdAlpcCwgIzQKKwkJbW92bmUJcjMsIHI3LCBwdWxsICM4CisJCWxkcm5lCXI3
LCBbcjFdLCAjNAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICMyNAorCQlzdHJuZXQJcjMs
IFtyMF0sICM0CQkJQCBTaG91bGRudCBmYXVsdAorCQlhbmRzCWlwLCBpcCwgIzMKKwkJYmVx
CS5jMnVfMWZ1cGkKKy5jMnVfMW5vd29yZHM6CW1vdglyMywgcjcsIGdldF9ieXRlXzEKKwkJ
dGVxCWlwLCAjMAorCQliZXEJLmMydV9maW5pc2hlZAorCQljbXAJaXAsICMyCitVU0VSKAkJ
c3RyYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCW1vdmdlCXIzLCByNywgZ2V0
X2J5dGVfMgorVVNFUigJCXN0cmdlYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJ
CW1vdmd0CXIzLCByNywgZ2V0X2J5dGVfMworVVNFUigJCXN0cmd0YnQJcjMsIFtyMF0sICMx
KQkJCUAgTWF5IGZhdWx0CisJCWIJLmMydV9maW5pc2hlZAorCisuYzJ1XzJmdXBpOglzdWJz
CXIyLCByMiwgIzQKKwkJYWRkbWkJaXAsIHIyLCAjNAorCQlibWkJLmMydV8ybm93b3Jkcwor
CQltb3YJcjMsIHI3LCBwdWxsICMxNgorCQlsZHIJcjcsIFtyMV0sICM0CisJCW9ycglyMywg
cjMsIHI3LCBwdXNoICMxNgorVVNFUigJCXN0cnQJcjMsIFtyMF0sICM0KQkJCUAgTWF5IGZh
dWx0CisJCW1vdglpcCwgcjAsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAs
ICMwCisJCW1vdnMJaXAsIGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmMydV8y
ZnVwaQorCQljbXAJcjIsIGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAor
CQlzdWJzCWlwLCBpcCwgIzE2CisJCWJsdAkuYzJ1XzJyZW04bHAKKwlQTEQoCXBsZAlbcjEs
ICMxMl0JCSkKKwlQTEQoCXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAj
MzIJCSkKKwlQTEQoCWJsdAkuYzJ1XzJjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4
XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCisuYzJ1XzJjcHk4bHA6CisJUExEKAlw
bGQJW3IxLCAjNDRdCQkpCisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuYzJ1XzJjcHlub3Bs
ZDoJbW92CXIzLCByNywgcHVsbCAjMTYKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30KKwkJc3Vi
cwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjMTYKKwkJbW92CXI0LCBy
NCwgcHVsbCAjMTYKKwkJb3JyCXI0LCByNCwgcjUsIHB1c2ggIzE2CisJCW1vdglyNSwgcjUs
IHB1bGwgIzE2CisJCW9ycglyNSwgcjUsIHI2LCBwdXNoICMxNgorCQltb3YJcjYsIHI2LCBw
dWxsICMxNgorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjMTYKKwkJc3RtaWEJcjAhLCB7cjMg
LSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJCWJwbAkuYzJ1XzJjcHk4bHAKKwlQTEQoCWNt
bglpcCwgIzMyCQkJKQorCVBMRCgJYmdlCS5jMnVfMmNweW5vcGxkCQkpCisJUExEKAlhZGQJ
aXAsIGlwLCAjMzIJCSkKKworLmMydV8ycmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIz
LCByNywgcHVsbCAjMTYKKwkJbGRtbmVpYQlyMSEsIHtyNCwgcjd9CisJCW9ycm5lCXIzLCBy
MywgcjQsIHB1c2ggIzE2CisJCW1vdm5lCXI0LCByNCwgcHVsbCAjMTYKKwkJb3JybmUJcjQs
IHI0LCByNywgcHVzaCAjMTYKKwkJc3RtbmVpYQlyMCEsIHtyMyAtIHI0fQkJCUAgU2hvdWxk
bnQgZmF1bHQKKwkJdHN0CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzE2CisJCWxk
cm5lCXI3LCBbcjFdLCAjNAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICMxNgorCQlzdHJu
ZXQJcjMsIFtyMF0sICM0CQkJQCBTaG91bGRudCBmYXVsdAorCQlhbmRzCWlwLCBpcCwgIzMK
KwkJYmVxCS5jMnVfMmZ1cGkKKy5jMnVfMm5vd29yZHM6CW1vdglyMywgcjcsIGdldF9ieXRl
XzIKKwkJdGVxCWlwLCAjMAorCQliZXEJLmMydV9maW5pc2hlZAorCQljbXAJaXAsICMyCitV
U0VSKAkJc3RyYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCW1vdmdlCXIzLCBy
NywgZ2V0X2J5dGVfMworVVNFUigJCXN0cmdlYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZh
dWx0CisJCWxkcmd0YglyMywgW3IxXSwgIzAKK1VTRVIoCQlzdHJndGJ0CXIzLCBbcjBdLCAj
MSkJCQlAIE1heSBmYXVsdAorCQliCS5jMnVfZmluaXNoZWQKKworLmMydV8zZnVwaToJc3Vi
cwlyMiwgcjIsICM0CisJCWFkZG1pCWlwLCByMiwgIzQKKwkJYm1pCS5jMnVfM25vd29yZHMK
KwkJbW92CXIzLCByNywgcHVsbCAjMjQKKwkJbGRyCXI3LCBbcjFdLCAjNAorCQlvcnIJcjMs
IHIzLCByNywgcHVzaCAjOAorVVNFUigJCXN0cnQJcjMsIFtyMF0sICM0KQkJCUAgTWF5IGZh
dWx0CisJCW1vdglpcCwgcjAsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAs
ICMwCisJCW1vdnMJaXAsIGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmMydV8z
ZnVwaQorCQljbXAJcjIsIGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAor
CQlzdWJzCWlwLCBpcCwgIzE2CisJCWJsdAkuYzJ1XzNyZW04bHAKKwlQTEQoCXBsZAlbcjEs
ICMxMl0JCSkKKwlQTEQoCXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAj
MzIJCSkKKwlQTEQoCWJsdAkuYzJ1XzNjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4
XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCisuYzJ1XzNjcHk4bHA6CisJUExEKAlw
bGQJW3IxLCAjNDRdCQkpCisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuYzJ1XzNjcHlub3Bs
ZDoJbW92CXIzLCByNywgcHVsbCAjMjQKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30KKwkJc3Vi
cwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjOAorCQltb3YJcjQsIHI0
LCBwdWxsICMyNAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjOAorCQltb3YJcjUsIHI1LCBw
dWxsICMyNAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjOAorCQltb3YJcjYsIHI2LCBwdWxs
ICMyNAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjOAorCQlzdG1pYQlyMCEsIHtyMyAtIHI2
fQkJCUAgU2hvdWxkbnQgZmF1bHQKKwkJYnBsCS5jMnVfM2NweThscAorCVBMRCgJY21uCWlw
LCAjMzIJCQkpCisJUExEKAliZ2UJLmMydV8zY3B5bm9wbGQJCSkKKwlQTEQoCWFkZAlpcCwg
aXAsICMzMgkJKQorCisuYzJ1XzNyZW04bHA6CXRzdAlpcCwgIzgKKwkJbW92bmUJcjMsIHI3
LCBwdWxsICMyNAorCQlsZG1uZWlhCXIxISwge3I0LCByN30KKwkJb3JybmUJcjMsIHIzLCBy
NCwgcHVzaCAjOAorCQltb3ZuZQlyNCwgcjQsIHB1bGwgIzI0CisJCW9ycm5lCXI0LCByNCwg
cjcsIHB1c2ggIzgKKwkJc3RtbmVpYQlyMCEsIHtyMyAtIHI0fQkJCUAgU2hvdWxkbnQgZmF1
bHQKKwkJdHN0CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzI0CisJCWxkcm5lCXI3
LCBbcjFdLCAjNAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICM4CisJCXN0cm5ldAlyMywg
W3IwXSwgIzQJCQlAIFNob3VsZG50IGZhdWx0CisJCWFuZHMJaXAsIGlwLCAjMworCQliZXEJ
LmMydV8zZnVwaQorLmMydV8zbm93b3JkczoJbW92CXIzLCByNywgZ2V0X2J5dGVfMworCQl0
ZXEJaXAsICMwCisJCWJlcQkuYzJ1X2ZpbmlzaGVkCisJCWNtcAlpcCwgIzIKK1VTRVIoCQlz
dHJidAlyMywgW3IwXSwgIzEpCQkJQCBNYXkgZmF1bHQKKwkJbGRyZ2ViCXIzLCBbcjFdLCAj
MQorVVNFUigJCXN0cmdlYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCWxkcmd0
YglyMywgW3IxXSwgIzAKK1VTRVIoCQlzdHJndGJ0CXIzLCBbcjBdLCAjMSkJCQlAIE1heSBm
YXVsdAorCQliCS5jMnVfZmluaXNoZWQKKworCQkuc2VjdGlvbiAuZml4dXAsImF4IgorCQku
YWxpZ24JMAorOTAwMToJCWxkbWZkCXNwISwge3IwLCByNCAtIHI3LCBwY30KKwkJLnByZXZp
b3VzCisKKy8qIFByb3RvdHlwZTogdW5zaWduZWQgbG9uZyBfX2FyY2hfY29weV9mcm9tX3Vz
ZXIodm9pZCAqdG8sY29uc3Qgdm9pZCAqZnJvbSx1bnNpZ25lZCBsb25nIG4pOworICogUHVy
cG9zZSAgOiBjb3B5IGEgYmxvY2sgZnJvbSB1c2VyIG1lbW9yeSB0byBrZXJuZWwgbWVtb3J5
CisgKiBQYXJhbXMgICA6IHRvICAgLSBrZXJuZWwgbWVtb3J5CisgKiAgICAgICAgICA6IGZy
b20gLSB1c2VyIG1lbW9yeQorICogICAgICAgICAgOiBuICAgIC0gbnVtYmVyIG9mIGJ5dGVz
IHRvIGNvcHkKKyAqIFJldHVybnMgIDogTnVtYmVyIG9mIGJ5dGVzIE5PVCBjb3BpZWQuCisg
Ki8KKy5jZnVfZGVzdF9ub3RfYWxpZ25lZDoKKwkJcnNiCWlwLCBpcCwgIzQKKwkJY21wCWlw
LCAjMgorVVNFUigJCWxkcmJ0CXIzLCBbcjFdLCAjMSkJCQlAIE1heSBmYXVsdAorCQlzdHJi
CXIzLCBbcjBdLCAjMQorVVNFUigJCWxkcmdlYnQJcjMsIFtyMV0sICMxKQkJCUAgTWF5IGZh
dWx0CisJCXN0cmdlYglyMywgW3IwXSwgIzEKK1VTRVIoCQlsZHJndGJ0CXIzLCBbcjFdLCAj
MSkJCQlAIE1heSBmYXVsdAorCQlzdHJndGIJcjMsIFtyMF0sICMxCisJCXN1YglyMiwgcjIs
IGlwCisJCWIJLmNmdV9kZXN0X2FsaWduZWQKKworRU5UUlkoX19hcmNoX2NvcHlfZnJvbV91
c2VyKQorCQlzdG1mZAlzcCEsIHtyMCwgcjIsIHI0IC0gcjcsIGxyfQorCQljbXAJcjIsICM0
CisJCWJsdAkuY2Z1X25vdF9lbm91Z2gKKwlQTEQoCXBsZAlbcjEsICMwXQkJKQorCVBMRCgJ
cGxkCVtyMCwgIzBdCQkpCisJCWFuZHMJaXAsIHIwLCAjMworCQlibmUJLmNmdV9kZXN0X25v
dF9hbGlnbmVkCisuY2Z1X2Rlc3RfYWxpZ25lZDoKKwkJYW5kcwlpcCwgcjEsICMzCisJCWJu
ZQkuY2Z1X3NyY19ub3RfYWxpZ25lZAorLyoKKyAqIFNlZWluZyBhcyB0aGVyZSBoYXMgdG8g
YmUgYXQgbGVhc3QgOCBieXRlcyB0byBjb3B5LCB3ZSBjYW4KKyAqIGNvcHkgb25lIHdvcmQs
IGFuZCBmb3JjZSBhIHVzZXItbW9kZSBwYWdlIGZhdWx0Li4uCisgKi8KKworLmNmdV8wZnVw
aToJc3VicwlyMiwgcjIsICM0CisJCWFkZG1pCWlwLCByMiwgIzQKKwkJYm1pCS5jZnVfMG5v
d29yZHMKK1VTRVIoCQlsZHJ0CXIzLCBbcjFdLCAjNCkKKwkJc3RyCXIzLCBbcjBdLCAjNAor
CQltb3YJaXAsIHIxLCBsc2wgIzMyIC0gUEFHRV9TSElGVAlAIE9uIGVhY2ggcGFnZSwgdXNl
IGEgbGQvc3Q/P3QgaW5zdHJ1Y3Rpb24KKwkJcnNiCWlwLCBpcCwgIzAKKwkJbW92cwlpcCwg
aXAsIGxzciAjMzIgLSBQQUdFX1NISUZUCisJCWJlcQkuY2Z1XzBmdXBpCisvKgorICogaXAg
PSBtYXggbm8uIG9mIGJ5dGVzIHRvIGNvcHkgYmVmb3JlIG5lZWRpbmcgYW5vdGhlciAic3Ry
dCIgaW5zbgorICovCisJCWNtcAlyMiwgaXAKKwkJbW92bHQJaXAsIHIyCisJCXN1YglyMiwg
cjIsIGlwCisJCXN1YnMJaXAsIGlwLCAjMzIKKwkJYmx0CS5jZnVfMHJlbThscAorCVBMRCgJ
cGxkCVtyMSwgIzI4XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCVBMRCgJc3Vicwlp
cCwgaXAsICM2NAkJCSkKKwlQTEQoCWJsdAkuY2Z1XzBjcHlub3BsZAkJKQorCVBMRCgJcGxk
CVtyMSwgIzYwXQkJKQorCVBMRCgJcGxkCVtyMCwgIzYwXQkJKQorCisuY2Z1XzBjcHk4bHA6
CisJUExEKAlwbGQJW3IxLCAjOTJdCQkpCisJUExEKAlwbGQJW3IwLCAjOTJdCQkpCisuY2Z1
XzBjcHlub3BsZDoJbGRtaWEJcjEhLCB7cjMgLSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJ
CXN0bWlhCXIwISwge3IzIC0gcjZ9CisJCWxkbWlhCXIxISwge3IzIC0gcjZ9CQkJQCBTaG91
bGRudCBmYXVsdAorCQlzdWJzCWlwLCBpcCwgIzMyCisJCXN0bWlhCXIwISwge3IzIC0gcjZ9
CisJCWJwbAkuY2Z1XzBjcHk4bHAKKwlQTEQoCWNtbglpcCwgIzY0CQkJKQorCVBMRCgJYmdl
CS5jZnVfMGNweW5vcGxkCQkpCisJUExEKAlhZGQJaXAsIGlwLCAjNjQJCSkKKworLmNmdV8w
cmVtOGxwOgljbW4JaXAsICMxNgorCQlsZG1nZWlhCXIxISwge3IzIC0gcjZ9CQkJQCBTaG91
bGRudCBmYXVsdAorCQlzdG1nZWlhCXIwISwge3IzIC0gcjZ9CisJCXRzdAlpcCwgIzgKKwkJ
bGRtbmVpYQlyMSEsIHtyMyAtIHI0fQkJCUAgU2hvdWxkbnQgZmF1bHQKKwkJc3RtbmVpYQly
MCEsIHtyMyAtIHI0fQorCQl0c3QJaXAsICM0CisJCWxkcm5ldAlyMywgW3IxXSwgIzQJCQlA
IFNob3VsZG50IGZhdWx0CisJCXN0cm5lCXIzLCBbcjBdLCAjNAorCQlhbmRzCWlwLCBpcCwg
IzMKKwkJYmVxCS5jZnVfMGZ1cGkKKy5jZnVfMG5vd29yZHM6CXRlcQlpcCwgIzAKKwkJYmVx
CS5jZnVfZmluaXNoZWQKKy5jZnVfbm93b3JkczoJY21wCWlwLCAjMgorVVNFUigJCWxkcmJ0
CXIzLCBbcjFdLCAjMSkJCQlAIE1heSBmYXVsdAorCQlzdHJiCXIzLCBbcjBdLCAjMQorVVNF
UigJCWxkcmdlYnQJcjMsIFtyMV0sICMxKQkJCUAgTWF5IGZhdWx0CisJCXN0cmdlYglyMywg
W3IwXSwgIzEKK1VTRVIoCQlsZHJndGJ0CXIzLCBbcjFdLCAjMSkJCQlAIE1heSBmYXVsdAor
CQlzdHJndGIJcjMsIFtyMF0sICMxCisJCWIJLmNmdV9maW5pc2hlZAorCisuY2Z1X25vdF9l
bm91Z2g6CisJCW1vdnMJaXAsIHIyCisJCWJuZQkuY2Z1X25vd29yZHMKKy5jZnVfZmluaXNo
ZWQ6CW1vdglyMCwgIzAKKwkJYWRkCXNwLCBzcCwgIzgKKwkJbGRtZmQJc3AhLHtyNCAtIHI3
LCBwY30KKworLmNmdV9zcmNfbm90X2FsaWduZWQ6CisJCWJpYwlyMSwgcjEsICMzCitVU0VS
KAkJbGRydAlyNywgW3IxXSwgIzQpCQkJQCBNYXkgZmF1bHQKKwkJY21wCWlwLCAjMgorCQli
Z3QJLmNmdV8zZnVwaQorCQliZXEJLmNmdV8yZnVwaQorLmNmdV8xZnVwaToJc3VicwlyMiwg
cjIsICM0CisJCWFkZG1pCWlwLCByMiwgIzQKKwkJYm1pCS5jZnVfMW5vd29yZHMKKwkJbW92
CXIzLCByNywgcHVsbCAjOAorVVNFUigJCWxkcnQJcjcsIFtyMV0sICM0KQkJCUAgTWF5IGZh
dWx0CisJCW9ycglyMywgcjMsIHI3LCBwdXNoICMyNAorCQlzdHIJcjMsIFtyMF0sICM0CisJ
CW1vdglpcCwgcjEsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAsICMwCisJ
CW1vdnMJaXAsIGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmNmdV8xZnVwaQor
CQljbXAJcjIsIGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAorCQlzdWJz
CWlwLCBpcCwgIzE2CisJCWJsdAkuY2Z1XzFyZW04bHAKKwlQTEQoCXBsZAlbcjEsICMxMl0J
CSkKKwlQTEQoCXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAjMzIJCSkK
KwlQTEQoCWJsdAkuY2Z1XzFjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4XQkJKQor
CVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCisuY2Z1XzFjcHk4bHA6CisJUExEKAlwbGQJW3Ix
LCAjNDRdCQkpCisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuY2Z1XzFjcHlub3BsZDoJbW92
CXIzLCByNywgcHVsbCAjOAorCQlsZG1pYQlyMSEsIHtyNCAtIHI3fQkJCUAgU2hvdWxkbnQg
ZmF1bHQKKwkJc3VicwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjMjQK
KwkJbW92CXI0LCByNCwgcHVsbCAjOAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjMjQKKwkJ
bW92CXI1LCByNSwgcHVsbCAjOAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjMjQKKwkJbW92
CXI2LCByNiwgcHVsbCAjOAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjMjQKKwkJc3RtaWEJ
cjAhLCB7cjMgLSByNn0KKwkJYnBsCS5jZnVfMWNweThscAorCVBMRCgJY21uCWlwLCAjMzIJ
CQkpCisJUExEKAliZ2UJLmNmdV8xY3B5bm9wbGQJCSkKKwlQTEQoCWFkZAlpcCwgaXAsICMz
MgkJKQorCisuY2Z1XzFyZW04bHA6CXRzdAlpcCwgIzgKKwkJbW92bmUJcjMsIHI3LCBwdWxs
ICM4CisJCWxkbW5laWEJcjEhLCB7cjQsIHI3fQkJCUAgU2hvdWxkbnQgZmF1bHQKKwkJb3Jy
bmUJcjMsIHIzLCByNCwgcHVzaCAjMjQKKwkJbW92bmUJcjQsIHI0LCBwdWxsICM4CisJCW9y
cm5lCXI0LCByNCwgcjcsIHB1c2ggIzI0CisJCXN0bW5laWEJcjAhLCB7cjMgLSByNH0KKwkJ
dHN0CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzgKK1VTRVIoCQlsZHJuZXQJcjcs
IFtyMV0sICM0KQkJCUAgTWF5IGZhdWx0CisJCW9ycm5lCXIzLCByMywgcjcsIHB1c2ggIzI0
CisJCXN0cm5lCXIzLCBbcjBdLCAjNAorCQlhbmRzCWlwLCBpcCwgIzMKKwkJYmVxCS5jZnVf
MWZ1cGkKKy5jZnVfMW5vd29yZHM6CW1vdglyMywgcjcsIGdldF9ieXRlXzEKKwkJdGVxCWlw
LCAjMAorCQliZXEJLmNmdV9maW5pc2hlZAorCQljbXAJaXAsICMyCisJCXN0cmIJcjMsIFty
MF0sICMxCisJCW1vdmdlCXIzLCByNywgZ2V0X2J5dGVfMgorCQlzdHJnZWIJcjMsIFtyMF0s
ICMxCisJCW1vdmd0CXIzLCByNywgZ2V0X2J5dGVfMworCQlzdHJndGIJcjMsIFtyMF0sICMx
CisJCWIJLmNmdV9maW5pc2hlZAorCisuY2Z1XzJmdXBpOglzdWJzCXIyLCByMiwgIzQKKwkJ
YWRkbWkJaXAsIHIyLCAjNAorCQlibWkJLmNmdV8ybm93b3JkcworCQltb3YJcjMsIHI3LCBw
dWxsICMxNgorVVNFUigJCWxkcnQJcjcsIFtyMV0sICM0KQkJCUAgTWF5IGZhdWx0CisJCW9y
cglyMywgcjMsIHI3LCBwdXNoICMxNgorCQlzdHIJcjMsIFtyMF0sICM0CisJCW1vdglpcCwg
cjEsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAsICMwCisJCW1vdnMJaXAs
IGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmNmdV8yZnVwaQorCQljbXAJcjIs
IGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAorCQlzdWJzCWlwLCBpcCwg
IzE2CisJCWJsdAkuY2Z1XzJyZW04bHAKKwlQTEQoCXBsZAlbcjEsICMxMl0JCSkKKwlQTEQo
CXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAjMzIJCSkKKwlQTEQoCWJs
dAkuY2Z1XzJjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4XQkJKQorCVBMRCgJcGxk
CVtyMCwgIzI4XQkJKQorCisuY2Z1XzJjcHk4bHA6CisJUExEKAlwbGQJW3IxLCAjNDRdCQkp
CisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuY2Z1XzJjcHlub3BsZDoJbW92CXIzLCByNywg
cHVsbCAjMTYKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30JCQlAIFNob3VsZG50IGZhdWx0CisJ
CXN1YnMJaXAsIGlwLCAjMTYKKwkJb3JyCXIzLCByMywgcjQsIHB1c2ggIzE2CisJCW1vdgly
NCwgcjQsIHB1bGwgIzE2CisJCW9ycglyNCwgcjQsIHI1LCBwdXNoICMxNgorCQltb3YJcjUs
IHI1LCBwdWxsICMxNgorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjMTYKKwkJbW92CXI2LCBy
NiwgcHVsbCAjMTYKKwkJb3JyCXI2LCByNiwgcjcsIHB1c2ggIzE2CisJCXN0bWlhCXIwISwg
e3IzIC0gcjZ9CisJCWJwbAkuY2Z1XzJjcHk4bHAKKwlQTEQoCWNtbglpcCwgIzMyCQkJKQor
CVBMRCgJYmdlCS5jZnVfMmNweW5vcGxkCQkpCisJUExEKAlhZGQJaXAsIGlwLCAjMzIJCSkK
KworLmNmdV8ycmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIzLCByNywgcHVsbCAjMTYK
KwkJbGRtbmVpYQlyMSEsIHtyNCwgcjd9CQkJQCBTaG91bGRudCBmYXVsdAorCQlvcnJuZQly
MywgcjMsIHI0LCBwdXNoICMxNgorCQltb3ZuZQlyNCwgcjQsIHB1bGwgIzE2CisJCW9ycm5l
CXI0LCByNCwgcjcsIHB1c2ggIzE2CisJCXN0bW5laWEJcjAhLCB7cjMgLSByNH0KKwkJdHN0
CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzE2CitVU0VSKAkJbGRybmV0CXI3LCBb
cjFdLCAjNCkJCQlAIE1heSBmYXVsdAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICMxNgor
CQlzdHJuZQlyMywgW3IwXSwgIzQKKwkJYW5kcwlpcCwgaXAsICMzCisJCWJlcQkuY2Z1XzJm
dXBpCisuY2Z1XzJub3dvcmRzOgltb3YJcjMsIHI3LCBnZXRfYnl0ZV8yCisJCXRlcQlpcCwg
IzAKKwkJYmVxCS5jZnVfZmluaXNoZWQKKwkJY21wCWlwLCAjMgorCQlzdHJiCXIzLCBbcjBd
LCAjMQorCQltb3ZnZQlyMywgcjcsIGdldF9ieXRlXzMKKwkJc3RyZ2ViCXIzLCBbcjBdLCAj
MQorVVNFUigJCWxkcmd0YnQJcjMsIFtyMV0sICMwKQkJCUAgTWF5IGZhdWx0CisJCXN0cmd0
YglyMywgW3IwXSwgIzEKKwkJYgkuY2Z1X2ZpbmlzaGVkCisKKy5jZnVfM2Z1cGk6CXN1YnMJ
cjIsIHIyLCAjNAorCQlhZGRtaQlpcCwgcjIsICM0CisJCWJtaQkuY2Z1XzNub3dvcmRzCisJ
CW1vdglyMywgcjcsIHB1bGwgIzI0CitVU0VSKAkJbGRydAlyNywgW3IxXSwgIzQpCQkJQCBN
YXkgZmF1bHQKKwkJb3JyCXIzLCByMywgcjcsIHB1c2ggIzgKKwkJc3RyCXIzLCBbcjBdLCAj
NAorCQltb3YJaXAsIHIxLCBsc2wgIzMyIC0gUEFHRV9TSElGVAorCQlyc2IJaXAsIGlwLCAj
MAorCQltb3ZzCWlwLCBpcCwgbHNyICMzMiAtIFBBR0VfU0hJRlQKKwkJYmVxCS5jZnVfM2Z1
cGkKKwkJY21wCXIyLCBpcAorCQltb3ZsdAlpcCwgcjIKKwkJc3ViCXIyLCByMiwgaXAKKwkJ
c3VicwlpcCwgaXAsICMxNgorCQlibHQJLmNmdV8zcmVtOGxwCisJUExEKAlwbGQJW3IxLCAj
MTJdCQkpCisJUExEKAlwbGQJW3IwLCAjMTJdCQkpCisJUExEKAlzdWJzCWlwLCBpcCwgIzMy
CQkpCisJUExEKAlibHQJLmNmdV8zY3B5bm9wbGQJCSkKKwlQTEQoCXBsZAlbcjEsICMyOF0J
CSkKKwlQTEQoCXBsZAlbcjAsICMyOF0JCSkKKworLmNmdV8zY3B5OGxwOgorCVBMRCgJcGxk
CVtyMSwgIzQ0XQkJKQorCVBMRCgJcGxkCVtyMCwgIzQ0XQkJKQorLmNmdV8zY3B5bm9wbGQ6
CW1vdglyMywgcjcsIHB1bGwgIzI0CisJCWxkbWlhCXIxISwge3I0IC0gcjd9CQkJQCBTaG91
bGRudCBmYXVsdAorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjOAorCQltb3YJcjQsIHI0LCBw
dWxsICMyNAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjOAorCQltb3YJcjUsIHI1LCBwdWxs
ICMyNAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjOAorCQltb3YJcjYsIHI2LCBwdWxsICMy
NAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjOAorCQlzdG1pYQlyMCEsIHtyMyAtIHI2fQor
CQlzdWJzCWlwLCBpcCwgIzE2CisJCWJwbAkuY2Z1XzNjcHk4bHAKKwlQTEQoCWNtbglpcCwg
IzMyCQkJKQorCVBMRCgJYmdlCS5jZnVfM2NweW5vcGxkCQkpCisJUExEKAlhZGQJaXAsIGlw
LCAjMzIJCSkKKworLmNmdV8zcmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIzLCByNywg
cHVsbCAjMjQKKwkJbGRtbmVpYQlyMSEsIHtyNCwgcjd9CQkJQCBTaG91bGRudCBmYXVsdAor
CQlvcnJuZQlyMywgcjMsIHI0LCBwdXNoICM4CisJCW1vdm5lCXI0LCByNCwgcHVsbCAjMjQK
KwkJb3JybmUJcjQsIHI0LCByNywgcHVzaCAjOAorCQlzdG1uZWlhCXIwISwge3IzIC0gcjR9
CisJCXRzdAlpcCwgIzQKKwkJbW92bmUJcjMsIHI3LCBwdWxsICMyNAorVVNFUigJCWxkcm5l
dAlyNywgW3IxXSwgIzQpCQkJQCBNYXkgZmF1bHQKKwkJb3JybmUJcjMsIHIzLCByNywgcHVz
aCAjOAorCQlzdHJuZQlyMywgW3IwXSwgIzQKKwkJYW5kcwlpcCwgaXAsICMzCisJCWJlcQku
Y2Z1XzNmdXBpCisuY2Z1XzNub3dvcmRzOgltb3YJcjMsIHI3LCBnZXRfYnl0ZV8zCisJCXRl
cQlpcCwgIzAKKwkJYmVxCS5jZnVfZmluaXNoZWQKKwkJY21wCWlwLCAjMgorCQlzdHJiCXIz
LCBbcjBdLCAjMQorVVNFUigJCWxkcmdlYnQJcjMsIFtyMV0sICMxKQkJCUAgTWF5IGZhdWx0
CisJCXN0cmdlYglyMywgW3IwXSwgIzEKK1VTRVIoCQlsZHJndGJ0CXIzLCBbcjFdLCAjMSkJ
CQlAIE1heSBmYXVsdAorCQlzdHJndGIJcjMsIFtyMF0sICMxCisJCWIJLmNmdV9maW5pc2hl
ZAorCisJCS5zZWN0aW9uIC5maXh1cCwiYXgiCisJCS5hbGlnbgkwCisJCS8qCisJCSAqIFdl
IHRvb2sgYW4gZXhjZXB0aW9uLiAgcjAgY29udGFpbnMgYSBwb2ludGVyIHRvCisJCSAqIHRo
ZSBieXRlIG5vdCBjb3BpZWQuCisJCSAqLworOTAwMToJCWxkcglyMiwgW3NwXSwgIzQJCQlA
IHZvaWQgKnRvCisJCXN1YglyMiwgcjAsIHIyCQkJQCBieXRlcyBjb3BpZWQKKwkJbGRyCXIx
LCBbc3BdLCAjNAkJCUAgdW5zaWduZWQgbG9uZyBjb3VudAorCQlzdWJzCXI0LCByMSwgcjIJ
CQlAIGJ5dGVzIGxlZnQgdG8gY29weQorCQltb3ZuZQlyMSwgcjQKKwkJYmxuZQlfX21lbXpl
cm8KKwkJbW92CXIwLCByNAorCQlsZG1mZAlzcCEsIHtyNCAtIHI3LCBwY30KKwkJLnByZXZp
b3VzCisKKy8qIFByb3RvdHlwZTogaW50IF9fYXJjaF9jbGVhcl91c2VyKHZvaWQgKmFkZHIs
IHNpemVfdCBzeikKKyAqIFB1cnBvc2UgIDogY2xlYXIgc29tZSB1c2VyIG1lbW9yeQorICog
UGFyYW1zICAgOiBhZGRyIC0gdXNlciBtZW1vcnkgYWRkcmVzcyB0byBjbGVhcgorICogICAg
ICAgICAgOiBzeiAgIC0gbnVtYmVyIG9mIGJ5dGVzIHRvIGNsZWFyCisgKiBSZXR1cm5zICA6
IG51bWJlciBvZiBieXRlcyBOT1QgY2xlYXJlZAorICovCitFTlRSWShfX2FyY2hfY2xlYXJf
dXNlcikKKwkJc3RtZmQJc3AhLCB7cjEsIGxyfQorCQltb3YJcjIsICMwCisJCWNtcAlyMSwg
IzQKKwkJYmx0CTJmCisJCWFuZHMJaXAsIHIwLCAjMworCQliZXEJMWYKKwkJY21wCWlwLCAj
MgorVVNFUigJCXN0cmJ0CXIyLCBbcjBdLCAjMSkKK1VTRVIoCQlzdHJsZWJ0CXIyLCBbcjBd
LCAjMSkKK1VTRVIoCQlzdHJsdGJ0CXIyLCBbcjBdLCAjMSkKKwkJcnNiCWlwLCBpcCwgIzQK
KwkJc3ViCXIxLCByMSwgaXAJCUAgIDcgIDYgIDUgIDQgIDMgIDIgIDEKKzE6CQlzdWJzCXIx
LCByMSwgIzgJCUAgLTEgLTIgLTMgLTQgLTUgLTYgLTcKK1VTRVIoCQlzdHJwbHQJcjIsIFty
MF0sICM0KQorVVNFUigJCXN0cnBsdAlyMiwgW3IwXSwgIzQpCisJCWJwbAkxYgorCQlhZGRz
CXIxLCByMSwgIzQJCUAgIDMgIDIgIDEgIDAgLTEgLTIgLTMKK1VTRVIoCQlzdHJwbHQJcjIs
IFtyMF0sICM0KQorMjoJCXRzdAlyMSwgIzIJCQlAIDF4IDF4IDB4IDB4IDF4IDF4IDB4CitV
U0VSKAkJc3RybmVidAlyMiwgW3IwXSwgIzEpCitVU0VSKAkJc3RybmVidAlyMiwgW3IwXSwg
IzEpCisJCXRzdAlyMSwgIzEJCQlAIHgxIHgwIHgxIHgwIHgxIHgwIHgxCitVU0VSKAkJc3Ry
bmVidAlyMiwgW3IwXSwgIzEpCisJCW1vdglyMCwgIzAKKwkJbGRtZmQJc3AhLCB7cjEsIHBj
fQorCisJCS5zZWN0aW9uIC5maXh1cCwiYXgiCisJCS5hbGlnbgkwCis5MDAxOgkJbGRtZmQJ
c3AhLCB7cjAsIHBjfQorCQkucHJldmlvdXMKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0vbGliL3VkaXZkaTMuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL3VkaXZkaTMuYwlGcmkgRmVi
IDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyNDIgQEAKKy8qIE1vcmUgc3Vi
cm91dGluZXMgbmVlZGVkIGJ5IEdDQyBvdXRwdXQgY29kZSBvbiBzb21lIG1hY2hpbmVzLiAg
Ki8KKy8qIENvbXBpbGUgdGhpcyBvbmUgd2l0aCBnY2MuICAqLworLyogQ29weXJpZ2h0IChD
KSAxOTg5LCA5Mi05OCwgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor
VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIENDLgorCitHTlUgQ0MgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikKK2FueSBsYXRlciB2ZXJzaW9uLgorCitHTlUgQ0MgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CitNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBHTlUgQ0M7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLiAgSWYgbm90LCB3cml0ZSB0bwordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiB5b3UgbGluayB0aGlz
IGxpYnJhcnkgd2l0aCBvdGhlciBmaWxlcywKKyAgIHNvbWUgb2Ygd2hpY2ggYXJlIGNvbXBp
bGVkIHdpdGggR0NDLCB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsCisgICB0aGlzIGxpYnJh
cnkgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZQor
ICAgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisg
ICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVy
IHJlYXNvbnMgd2h5CisgICB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQg
YnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICovCisvKiBzdXBwb3J0IGZ1
bmN0aW9ucyByZXF1aXJlZCBieSB0aGUga2VybmVsLiBiYXNlZCBvbiBjb2RlIGZyb20gZ2Nj
LTIuOTUuMyAqLworLyogSSBNb2x0b24gICAgIDI5LzA3LzAxICovCisKKyNpbmNsdWRlICJn
Y2NsaWIuaCIKKyNpbmNsdWRlICJsb25nbG9uZy5oIgorCitzdGF0aWMgY29uc3QgVVFJdHlw
ZSBfX2Nsel90YWJbXSA9Cit7CisgIDAsMSwyLDIsMywzLDMsMyw0LDQsNCw0LDQsNCw0LDQs
NSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSwKKyAgNiw2LDYsNiw2LDYsNiw2LDYs
Niw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LAorICA3LDcs
Nyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcs
Nyw3LDcsCisgIDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcs
Nyw3LDcsNyw3LDcsNyw3LDcsNywKKyAgOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LAorICA4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsCisgIDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCwKKyAgOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LAorfTsKKworVURJdHlwZQorX191ZGl2bW9kZGk0IChV
REl0eXBlIG4sIFVESXR5cGUgZCwgVURJdHlwZSAqcnApCit7CisgIERJdW5pb24gd3c7Cisg
IERJdW5pb24gbm4sIGRkOworICBESXVuaW9uIHJyOworICBVU0l0eXBlIGQwLCBkMSwgbjAs
IG4xLCBuMjsKKyAgVVNJdHlwZSBxMCwgcTE7CisgIFVTSXR5cGUgYiwgYm07CisKKyAgbm4u
bGwgPSBuOworICBkZC5sbCA9IGQ7CisKKyAgZDAgPSBkZC5zLmxvdzsKKyAgZDEgPSBkZC5z
LmhpZ2g7CisgIG4wID0gbm4ucy5sb3c7CisgIG4xID0gbm4ucy5oaWdoOworCisgIGlmIChk
MSA9PSAwKQorICAgIHsKKyAgICAgIGlmIChkMCA+IG4xKQorICAgICAgICB7CisgICAgICAg
ICAgLyogMHEgPSBubiAvIDBEICovCisKKyAgICAgICAgICBjb3VudF9sZWFkaW5nX3plcm9z
IChibSwgZDApOworCisgICAgICAgICAgaWYgKGJtICE9IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgIC8qIE5vcm1hbGl6ZSwgaS5lLiBtYWtlIHRoZSBtb3N0IHNpZ25pZmlj
YW50IGJpdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgZGVub21pbmF0b3Igc2V0LiAgKi8K
KworICAgICAgICAgICAgICBkMCA9IGQwIDw8IGJtOworICAgICAgICAgICAgICBuMSA9IChu
MSA8PCBibSkgfCAobjAgPj4gKFNJX1RZUEVfU0laRSAtIGJtKSk7CisgICAgICAgICAgICAg
IG4wID0gbjAgPDwgYm07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICB1ZGl2X3Fybm5k
IChxMCwgbjAsIG4xLCBuMCwgZDApOworICAgICAgICAgIHExID0gMDsKKworICAgICAgICAg
IC8qIFJlbWFpbmRlciBpbiBuMCA+PiBibS4gICovCisgICAgICAgIH0KKyAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgIC8qIHFxID0gTk4gLyAwZCAqLworCisgICAgICAgICAg
aWYgKGQwID09IDApCisgICAgICAgICAgICBkMCA9IDEgLyBkMDsgICAgICAgIC8qIERpdmlk
ZSBpbnRlbnRpb25hbGx5IGJ5IHplcm8uICAqLworCisgICAgICAgICAgY291bnRfbGVhZGlu
Z196ZXJvcyAoYm0sIGQwKTsKKworICAgICAgICAgIGlmIChibSA9PSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAvKiBGcm9tIChuMSA+PSBkMCkgL1wgKHRoZSBtb3N0IHNp
Z25pZmljYW50IGJpdCBvZiBkMCBpcyBzZXQpLAorICAgICAgICAgICAgICAgICBjb25jbHVk
ZSAodGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIG4xIGlzIHNldCkgL1wgKHRoZQorICAg
ICAgICAgICAgICAgICBsZWFkaW5nIHF1b3RpZW50IGRpZ2l0IHExID0gMSkuCisKKyAgICAg
ICAgICAgICAgICAgVGhpcyBzcGVjaWFsIGNhc2UgaXMgbmVjZXNzYXJ5LCBub3QgYW4gb3B0
aW1pemF0aW9uLgorICAgICAgICAgICAgICAgICAoU2hpZnRzIGNvdW50cyBvZiBTSV9UWVBF
X1NJWkUgYXJlIHVuZGVmaW5lZC4pICAqLworCisgICAgICAgICAgICAgIG4xIC09IGQwOwor
ICAgICAgICAgICAgICBxMSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBOb3JtYWxpemUuICAqLworCisgICAg
ICAgICAgICAgIGIgPSBTSV9UWVBFX1NJWkUgLSBibTsKKworICAgICAgICAgICAgICBkMCA9
IGQwIDw8IGJtOworICAgICAgICAgICAgICBuMiA9IG4xID4+IGI7CisgICAgICAgICAgICAg
IG4xID0gKG4xIDw8IGJtKSB8IChuMCA+PiBiKTsKKyAgICAgICAgICAgICAgbjAgPSBuMCA8
PCBibTsKKworICAgICAgICAgICAgICB1ZGl2X3Fybm5kIChxMSwgbjEsIG4yLCBuMSwgZDAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgLyogbjEgIT0gZDAuLi4gICovCisKKyAg
ICAgICAgICB1ZGl2X3Fybm5kIChxMCwgbjAsIG4xLCBuMCwgZDApOworCisgICAgICAgICAg
LyogUmVtYWluZGVyIGluIG4wID4+IGJtLiAgKi8KKyAgICAgICAgfQorCisgICAgICBpZiAo
cnAgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgIHJyLnMubG93ID0gbjAgPj4gYm07Cisg
ICAgICAgICAgcnIucy5oaWdoID0gMDsKKyAgICAgICAgICAqcnAgPSByci5sbDsKKyAgICAg
ICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlmIChkMSA+IG4xKQorICAgICAg
ICB7CisgICAgICAgICAgLyogMDAgPSBubiAvIEREICovCisKKyAgICAgICAgICBxMCA9IDA7
CisgICAgICAgICAgcTEgPSAwOworCisgICAgICAgICAgLyogUmVtYWluZGVyIGluIG4xbjAu
ICAqLworICAgICAgICAgIGlmIChycCAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICByci5zLmxvdyA9IG4wOworICAgICAgICAgICAgICByci5zLmhpZ2ggPSBuMTsKKyAg
ICAgICAgICAgICAgKnJwID0gcnIubGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIDBxID0gTk4gLyBkZCAqLworCisg
ICAgICAgICAgY291bnRfbGVhZGluZ196ZXJvcyAoYm0sIGQxKTsKKyAgICAgICAgICBpZiAo
Ym0gPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogRnJvbSAobjEgPj0g
ZDEpIC9cICh0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgZDEgaXMgc2V0KSwKKyAgICAg
ICAgICAgICAgICAgY29uY2x1ZGUgKHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBuMSBp
cyBzZXQpIC9cICh0aGUKKyAgICAgICAgICAgICAgICAgcXVvdGllbnQgZGlnaXQgcTAgPSAw
IG9yIDEpLgorCisgICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lhbCBjYXNlIGlzIG5lY2Vz
c2FyeSwgbm90IGFuIG9wdGltaXphdGlvbi4gICovCisKKyAgICAgICAgICAgICAgLyogVGhl
IGNvbmRpdGlvbiBvbiB0aGUgbmV4dCBsaW5lIHRha2VzIGFkdmFudGFnZSBvZiB0aGF0Cisg
ICAgICAgICAgICAgICAgIG4xID49IGQxICh0cnVlIGR1ZSB0byBwcm9ncmFtIGZsb3cpLiAg
Ki8KKyAgICAgICAgICAgICAgaWYgKG4xID4gZDEgfHwgbjAgPj0gZDApCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgcTAgPSAxOworICAgICAgICAgICAgICAgICAg
c3ViX2RkbW1zcyAobjEsIG4wLCBuMSwgbjAsIGQxLCBkMCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcTAgPSAwOworCisgICAg
ICAgICAgICAgIHExID0gMDsKKworICAgICAgICAgICAgICBpZiAocnAgIT0gMCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByci5zLmxvdyA9IG4wOworICAgICAg
ICAgICAgICAgICAgcnIucy5oaWdoID0gbjE7CisgICAgICAgICAgICAgICAgICAqcnAgPSBy
ci5sbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBVU0l0eXBlIG0xLCBtMDsKKyAgICAg
ICAgICAgICAgLyogTm9ybWFsaXplLiAgKi8KKworICAgICAgICAgICAgICBiID0gU0lfVFlQ
RV9TSVpFIC0gYm07CisKKyAgICAgICAgICAgICAgZDEgPSAoZDEgPDwgYm0pIHwgKGQwID4+
IGIpOworICAgICAgICAgICAgICBkMCA9IGQwIDw8IGJtOworICAgICAgICAgICAgICBuMiA9
IG4xID4+IGI7CisgICAgICAgICAgICAgIG4xID0gKG4xIDw8IGJtKSB8IChuMCA+PiBiKTsK
KyAgICAgICAgICAgICAgbjAgPSBuMCA8PCBibTsKKworICAgICAgICAgICAgICB1ZGl2X3Fy
bm5kIChxMCwgbjEsIG4yLCBuMSwgZDEpOworICAgICAgICAgICAgICB1bXVsX3BwbW0gKG0x
LCBtMCwgcTAsIGQwKTsKKworICAgICAgICAgICAgICBpZiAobTEgPiBuMSB8fCAobTEgPT0g
bjEgJiYgbTAgPiBuMCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
cTAtLTsKKyAgICAgICAgICAgICAgICAgIHN1Yl9kZG1tc3MgKG0xLCBtMCwgbTEsIG0wLCBk
MSwgZDApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBxMSA9IDA7CisK
KyAgICAgICAgICAgICAgLyogUmVtYWluZGVyIGluIChuMW4wIC0gbTFtMCkgPj4gYm0uICAq
LworICAgICAgICAgICAgICBpZiAocnAgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBzdWJfZGRtbXNzIChuMSwgbjAsIG4xLCBuMCwgbTEsIG0wKTsKKyAg
ICAgICAgICAgICAgICAgIHJyLnMubG93ID0gKG4xIDw8IGIpIHwgKG4wID4+IGJtKTsKKyAg
ICAgICAgICAgICAgICAgIHJyLnMuaGlnaCA9IG4xID4+IGJtOworICAgICAgICAgICAgICAg
ICAgKnJwID0gcnIubGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgIHd3LnMubG93ID0gcTA7CisgIHd3LnMuaGlnaCA9IHExOwor
ICByZXR1cm4gd3cubGw7Cit9CisKK1VESXR5cGUKK19fdWRpdmRpMyAoVURJdHlwZSBuLCBV
REl0eXBlIGQpCit7CisgIHJldHVybiBfX3VkaXZtb2RkaTQgKG4sIGQsIChVREl0eXBlICop
IDApOworfQorCitVREl0eXBlCitfX3Vtb2RkaTMgKFVESXR5cGUgdSwgVURJdHlwZSB2KQor
eworICBVREl0eXBlIHc7CisKKyAgKHZvaWQpIF9fdWRpdm1vZGRpNCAodSAsdiwgJncpOwor
CisgIHJldHVybiB3OworfQorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9s
aWIvdWxkaXZtb2QuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL3VsZGl2bW9kLlMJRnJpIEZlYiAwMyAxNjow
NzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorKiBBLCBRID0gcjAgKyAo
cjEgPDwgMzIpCisqIEIsIFIgPSByMiArIChyMyA8PCAzMikKKyogQSAvIEIgPSBRIC4uLiBS
CisqLworIAorLnRleHQKKy5nbG9iYWwJX19hZWFiaV91bGRpdm1vZAorLnR5cGUJX19hZWFi
aV91bGRpdm1vZCwgZnVuY3Rpb24KKy5hbGlnbgkwCitBXzAJLnJlcQlyMAorQV8xCS5yZXEJ
cjEKK0JfMAkucmVxCXIyCitCXzEJLnJlcQlyMworQ18wCS5yZXEJcjQKK0NfMQkucmVxCXI1
CitEXzAJLnJlcQlyNgorRF8xCS5yZXEJcjcKK1FfMAkucmVxCXIwCitRXzEJLnJlcQlyMQor
Ul8wCS5yZXEJcjIKK1JfMQkucmVxCXIzCisgCitfX2FlYWJpX3VsZGl2bW9kOgorCXN0bWZk
CXNwISwge3I0LCByNSwgcjYsIHI3LCBscn0KKyAKKwlAIFRlc3QgaWYgQiA9PSAwCisJb3Jy
cwlpcCwgQl8wLCBCXzEJCUAgWiBzZXQgLT4gQiA9PSAwCisJYmVxCUxfZGl2X2J5XzAKKwlA
IFRlc3QgaWYgQiBpcyBwb3dlciBvZiAyOiAoQiAmIChCIC0gMSkpID09IDAKKwlzdWJzCUNf
MCwgQl8wLCAjMQorCXNiYwlDXzEsIEJfMSwgIzAKKwl0c3QJQ18wLCBCXzAKKwl0c3RlcQlC
XzEsIENfMQorCWJlcQlMX3BvdzIKKwlAIFRlc3QgaWYgQV8xID09IEJfMSA9PSAwCisJb3Jy
cwlpcCwgQV8xLCBCXzEKKwliZXEJTF9kaXZfMzJfMzIKKworTF9kaXZfNjRfNjQ6CisJbW92
CUNfMCwgIzEKKwltb3YJQ18xLCAjMAorCUAgRF8wID0gY2x6IEEKKwl0ZXEJQV8xLCAjMAor
CWNseglEXzAsIEFfMQorCWNsemVxCWlwLCBBXzAKKwlhZGRlcQlEXzAsIERfMCwgaXAKKwlA
IERfMSA9IGNseiBCCisJdGVxCUJfMSwgIzAKKwljbHoJRF8xLCBCXzEKKwljbHplcQlpcCwg
Ql8wCisJYWRkZXEJRF8xLCBEXzEsIGlwCisJQCBpZiBjbHogQiAtIGNseiBBID4gMAorCXN1
YnMJRF8wLCBEXzEsIERfMAorCWJscwlMX2RvbmVfc2hpZnQKKwlAIEIgPDw9IChjbHogQiAt
IGNseiBBKQorCXN1YnMJRF8xLCBEXzAsICMzMgorCXJzYglpcCwgRF8wLCAjMzIKKwltb3Zt
aQlCXzEsIEJfMSwgbHNsIERfMAorCW9ycm1pCUJfMSwgQl8xLCBCXzAsIGxzciBpcAorCW1v
dnBsCUJfMSwgQl8wLCBsc2wgRF8xCisJbW92CUJfMCwgQl8wLCBsc2wgRF8wCisJQCBDID0g
MSA8PCAoY2x6IEIgLSBjbHogQSkKKwltb3ZtaQlDXzEsIENfMSwgbHNsIERfMAorCW9ycm1p
CUNfMSwgQ18xLCBDXzAsIGxzciBpcAorCW1vdnBsCUNfMSwgQ18wLCBsc2wgRF8xCisJbW92
CUNfMCwgQ18wLCBsc2wgRF8wCitMX2RvbmVfc2hpZnQ6CisJbW92CURfMCwgIzAKKwltb3YJ
RF8xLCAjMAorCUAgQzogY3VycmVudCBiaXQ7IEQ6IHJlc3VsdAorTF9zdWJ0cmFjdDoKKwlA
IGlmIEEgPj0gQgorCWNtcAlBXzEsIEJfMQorCWNtcGVxCUFfMCwgQl8wCisJYmNjCUxfdXBk
YXRlCisJQCBBIC09IEIKKwlzdWJzCUFfMCwgQV8wLCBCXzAKKwlzYmMJQV8xLCBBXzEsIEJf
MQorCUAgRCB8PSBDCisJb3JyCURfMCwgRF8wLCBDXzAKKwlvcnIJRF8xLCBEXzEsIENfMQor
TF91cGRhdGU6CisJQCBpZiBBID09IDA6IGJyZWFrCisJb3JycwlpcCwgQV8xLCBBXzAKKwli
ZXEJTF9leGl0CisJQCBDID4+PSAxCisJbW92cwlDXzEsIENfMSwgbHNyICMxCisJbW92cwlD
XzAsIENfMCwgcnJ4CisJQCBpZiBDID09IDA6IGJyZWFrCisJb3JycwlpcCwgQ18xLCBDXzAK
KwliZXEJTF9leGl0CisJQCBCID4+PSAxCisJbW92cwlCXzEsIEJfMSwgbHNyICMxCisJbW92
CUJfMCwgQl8wLCBycngKKwliCUxfc3VidHJhY3QKK0xfZXhpdDoKKwlAIE5vdGU6IEEsIEIg
JiBRLCBSIGFyZSBhbGlhc2VzCisJbW92CVJfMCwgQV8wCisJbW92CVJfMSwgQV8xCisJbW92
CVFfMCwgRF8wCisJbW92CVFfMSwgRF8xCisJbGRtZmQJc3AhLCB7cjQsIHI1LCByNiwgcjcs
IHBjfQorCitMX2Rpdl8zMl8zMjoKKwlAIE5vdGU6CUFfMCAmCXIwIGFyZSBhbGlhc2VzCisJ
QAlRXzEJcjEKKwltb3YJcjEsIEJfMAorCWJsCV9fYWVhYmlfdWlkaXZtb2QKKwltb3YJUl8w
LCByMQorCW1vdglSXzEsICMwCisJbW92CVFfMSwgIzAKKwlsZG1mZAlzcCEsIHtyNCwgcjUs
IHI2LCByNywgcGN9CisgCitMX3BvdzI6CisJQCBOb3RlOiBBLCBCIGFuZCBRLCBSIGFyZSBh
bGlhc2VzCisJQCBSID0gQSAmIChCIC0gMSkKKwlhbmQJQ18wLCBBXzAsIENfMAorCWFuZAlD
XzEsIEFfMSwgQ18xCisJQCBRID0gQSA+PiBsb2cyKEIpCisJQCBOb3RlOiBCIG11c3Qgbm90
IGJlIDAgaGVyZSEKKwljbHoJRF8wLCBCXzAKKwlhZGQJRF8xLCBEXzAsICMxCisJcnNicwlE
XzAsIERfMCwgIzMxCisJYnBsCUxfMQorCWNseglEXzAsIEJfMQorCXJzYglEXzAsIERfMCwg
IzMxCisJbW92CUFfMCwgQV8xLCBsc3IgRF8wCisJYWRkCURfMCwgRF8wLCAjMzIKK0xfMToK
Kwltb3ZwbAlBXzAsIEFfMCwgbHNyIERfMAorCW9ycnBsCUFfMCwgQV8wLCBBXzEsIGxzbCBE
XzEKKwltb3YJQV8xLCBBXzEsIGxzciBEXzAKKwlAIE1vdiBiYWNrIEMgdG8gUgorCW1vdglS
XzAsIENfMAorCW1vdglSXzEsIENfMQorCWxkbWZkCXNwISwge3I0LCByNSwgcjYsIHI3LCBw
Y30KKworTF9kaXZfYnlfMDoKKwlibAlfX2RpdjAKKwlAIEFzIHdyb25nIGFzIGl0IGNvdWxk
IGJlCisJbW92CVFfMCwgIzAKKwltb3YJUV8xLCAjMAorCW1vdglSXzAsICMwCisJbW92CVJf
MSwgIzAKKwlsZG1mZAlzcCEsIHtyNCwgcjUsIHI2LCByNywgcGN9CisgCisKZGlmZiAtciBl
NzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3RlZ3JhL01ha2VmaWxlCi0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS90ZWdy
YS9NYWtlZmlsZQlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwx
IEBACitvYmoteSArPSBkdW1teS5vCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2Fy
bS90ZWdyYS9SdWxlcy5tawotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvUnVsZXMubWsJRnJpIEZlYiAwMyAx
NjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMSBAQAorQ0ZMQUdTLXkgKz0gLW1hcmNo
PWFybXY3LWEKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3RlZ3JhL2R1bW15
LmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
eGVuL2FyY2gvYXJtL3RlZ3JhL2R1bW15LmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsMyBAQAordm9pZCBkdW1teSh2b2lkKQoreworfQpkaWZmIC1yIGU3
MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL01ha2VmaWxlCi0tLSAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vTWFr
ZWZpbGUJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTkgQEAK
K29iai15ICs9IHNldHVwLm8KK29iai15ICs9IG1tLm8KK29iai15ICs9IGlycS5vCitvYmot
eSArPSBhcmNoX2RvbWFpbi5vCitvYmoteSArPSB0aW1lLm8KK29iai15ICs9IGRvbWFpbl9i
dWlsZC5vCitvYmoteSArPSBmYXVsdC5vCitvYmoteSArPSB0bGIubworb2JqLXkgKz0gc2h1
dGRvd24ubworb2JqLXkgKz0gYXJjaF9kb21jdGwubworb2JqLXkgKz0gY3B1Lm8KK29iai15
ICs9IGlvbW11Lm8KK29iai15ICs9IGdyYW50X3RhYmxlLm8KK29iai15ICs9IGFyY2hfc3lz
Y3RsLm8KK29iai15ICs9IG1hY2hpbmVfa2V4ZWMubworb2JqLXkgKz0gY3Jhc2gubworb2Jq
LXkgKz0gcDJtLm8KK29iai15ICs9IHBlcmZtb24ubworb2JqLXkgKz0gcGNpLm8KZGlmZiAt
ciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3hlbi9hcmNoX2RvbWFpbi5jCi0tLSAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2Fy
bS94ZW4vYXJjaF9kb21haW4uYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAg
LTAsMCArMSwyMTIgQEAKKy8qCisgKiBhcmNoX2RvbWFpbi5jCisgKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgU2FuZy1i
dW0gU3VoICAgIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIEphZW1pbiBS
eXUgICAgICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKiAgICAgICAgICBKb29Zb3VuZyBI
d2FuZyAgPGpvb3lvdW5nLmh3YW5nQHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3Jh
bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2
ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EK
KyAqLworCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgor
I2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRl
IDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vZG9tYWluLmg+CisjaW5jbHVkZSA8eGVuL2Vy
cm5vLmg+CisjaW5jbHVkZSA8eGVuL3NtcC5oPgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNp
bmNsdWRlIDx4ZW4vaXJxX2NwdXN0YXQuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgor
Cit2b2lkIGFyY2hfZHVtcF9kb21haW5faW5mbyhzdHJ1Y3QgZG9tYWluICpkKQoreworCU5P
VF9ZRVQoKTsKK30KKwordm9pZCBhcmNoX2R1bXBfdmNwdV9pbmZvKHN0cnVjdCB2Y3B1ICp2
KQoreworCU5PVF9ZRVQoKTsKK30KKwordW5zaWduZWQgbG9uZyBoeXBlcmNhbGxfY3JlYXRl
X2NvbnRpbnVhdGlvbih1bnNpZ25lZCBpbnQgb3AsCisgICAgICAgIGNvbnN0IGNoYXIgKmZv
cm1hdCwgLi4uKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAwOworfQorCitpbnQgYXJj
aF9kb21haW5fY3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9m
bGFncykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwordm9pZCBh
cmNoX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCit7CisJTk9UX1lFVCgpOwor
fQorCitzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICphbGxvY192Y3B1X2d1ZXN0X2NvbnRl
eHQodm9pZCkKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBm
cmVlX3ZjcHVfZ3Vlc3RfY29udGV4dChzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICpjb250
ZXh0KQoreworCU5PVF9ZRVQoKTsKK30KKworCitzdHJ1Y3QgdmNwdSAqYWxsb2NfdmNwdV9z
dHJ1Y3Qodm9pZCkKK3sKKwlOT1RfWUVUKCk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQg
YXJjaF92Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKwor
aW50IHZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKK3sKKwlOT1RfWUVUKCk7CisJ
cmV0dXJuIDA7Cit9CisKK3ZvaWQgdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQorewor
CU5PVF9ZRVQoKTsKK30KKwordm9pZCBmcmVlX3ZjcHVfc3RydWN0KHN0cnVjdCB2Y3B1ICp2
KQoreworCU5PVF9ZRVQoKTsKK30KKworc3RydWN0IGRvbWFpbiAqYWxsb2NfZG9tYWluX3N0
cnVjdCh2b2lkKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiBOVUxMOworfQorCisKK3Zv
aWQgZnJlZV9kb21haW5fc3RydWN0KHN0cnVjdCBkb21haW4gKmQpCit7CisJTk9UX1lFVCgp
OworfQorCitpbnQgYXJjaF9zZXRfaW5mb19ndWVzdChzdHJ1Y3QgdmNwdSAqdiwgdmNwdV9n
dWVzdF9jb250ZXh0X3QgKmN0eCkKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKKwor
fQorCit2b2lkIGRvbWFpbl9yZWxpbnF1aXNoX21lbW9yeShzdHJ1Y3QgZG9tYWluICpkKQor
eworCU5PVF9ZRVQoKTsKK30KKwordm9pZCBkdW1wX3BhZ2VmcmFtZV9pbmZvKHN0cnVjdCBk
b21haW4gKmQpCit7CisJTk9UX1lFVCgpOworfQorCit2b2lkIGNvbnRleHRfc3dpdGNoKHN0
cnVjdCB2Y3B1ICpwcmV2LCBzdHJ1Y3QgdmNwdSAqbmV4dCkKK3sKKwlOT1RfWUVUKCk7Cit9
CisKK3ZvaWQgY29udGludWVfcnVubmluZyhzdHJ1Y3QgdmNwdSAqc2FtZSkKK3sKKwlOT1Rf
WUVUKCk7Cit9CisKK3ZvaWQgc3luY19sYXp5X2V4ZWNzdGF0ZV9jcHUodW5zaWduZWQgaW50
IGNwdSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgc3luY19sYXp5X2V4ZWNzdGF0ZV9t
YXNrKGNwdW1hc2tfdCBtYXNrKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9pZCBzeW5jX3Zj
cHVfZXhlY3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKwordm9p
ZCBzeW5jX2xvY2FsX2V4ZWNzdGF0ZSh2b2lkKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9p
ZCByZWxpbnF1aXNoX21lbW9yeShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgbGlzdF9oZWFk
ICpsaXN0KQoreworCU5PVF9ZRVQoKTsKK30KKworaW50IGRvbWFpbl9yZWxpbnF1aXNoX3Jl
c291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAt
RUlOVkFMOworfQorCit2b2lkIHN0YXJ0dXBfY3B1X2lkbGVfbG9vcCh2b2lkKQoreworCU5P
VF9ZRVQoKTsKK30KKworbG9uZyBhcmNoX2RvX3ZjcHVfb3AoaW50IGNtZCwgc3RydWN0IHZj
cHUgKnYsIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKQoreworCU5PVF9ZRVQoKTsKKwor
CXJldHVybiAtRU5PU1lTOworfQorCit2b2lkIHZjcHVfa2ljayhzdHJ1Y3QgdmNwdSAqdikK
K3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgdmNwdV9tYXJrX2V2ZW50c19wZW5kaW5nKHN0
cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKworc3RhdGljIHZvaWQgdmNwdV9r
aWNrX3NvZnRpcnEodm9pZCkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3N0YXRpYyBpbnQgX19p
bml0IHZjcHVfa2lja19zb2Z0aXJxX2luaXQodm9pZCkKK3sKKwlOT1RfWUVUKCk7CisKKwly
ZXR1cm4gMDsKK30KKworX19pbml0Y2FsbCh2Y3B1X2tpY2tfc29mdGlycV9pbml0KTsKZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3hlbi9hcmNoX2RvbWN0bC5jCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNo
L2FybS94ZW4vYXJjaF9kb21jdGwuYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIGFyY2hfZG9tY3RsLmMKKyAqCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgSmFlbWluIFJ5
dSAgICAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lv
biAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8K
KworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNs
dWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVu
L21tLmg+CisjaW5jbHVkZSA8eGVuL2RvbWFpbi5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5o
PgorI2luY2x1ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4ZW4vaXJxX2NwdXN0YXQuaD4K
KyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorCisKK3ZvaWQgYXJjaF9nZXRfaW5mb19ndWVz
dChzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCAqY3R4KQorewor
CU5PVF9ZRVQoKTsKK30KKworbG9uZyBhcmNoX2RvX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0
bCAqZG9tY3RsLCBYRU5fR1VFU1RfSEFORExFKHhlbl9kb21jdGxfdClyX2RvbWN0bCkKK3sK
KwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KZGlmZiAtciBlNzAxNDYxYjEy
NTEgeGVuL2FyY2gvYXJtL3hlbi9hcmNoX3N5c2N0bC5jCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vYXJjaF9z
eXNjdGwuYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIGFyY2hfc3lzY3RsLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNidWsu
c3VoQHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlbWluIFJ5dSAgIDxqbTc3LnJ5dUBz
YW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz
MCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPHN0ZGFy
Zy5oPgorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cisj
aW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8
eGVuL2RvbWFpbi5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9z
bXAuaD4KKyNpbmNsdWRlIDx4ZW4vaXJxX2NwdXN0YXQuaD4KKyNpbmNsdWRlIDx4ZW4vc29m
dGlycS5oPgorCitsb25nIGFyY2hfZG9fc3lzY3RsKHN0cnVjdCB4ZW5fc3lzY3RsICpzeXNj
dGwsIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF90KXVfc3lzY3RsKQoreworCU5PVF9Z
RVQoKTsKKworCXJldHVybiAtRUlOVkFMOworfQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0veGVuL2FzbS1vZmZzZXRzLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9hc20tb2Zmc2V0cy5j
CUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQwIEBACisjaW5j
bHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhl
bi9wZXJmYy5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPGFzbS9oYXJk
aXJxLmg+CisjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KKworI2lmIGRlZmluZWQoX19BUENT
XzI2X18pCisjZXJyb3IgU29ycnksIHlvdXIgY29tcGlsZXIgdGFyZ2V0cyBBUENTLTI2IGJ1
dCB0aGlzIGtlcm5lbCByZXF1aXJlcyBBUENTLTMyCisjZW5kaWYKKy8qCisgKiBHQ0MgMi45
NS4xLCAyLjk1LjI6IGlnbm9yZXMgcmVnaXN0ZXIgY2xvYmJlciBsaXN0IGluIGFzbSgpLgor
ICogR0NDIDMuMCwgMy4xOiBnZW5lcmFsIGJhZCBjb2RlIGdlbmVyYXRpb24uCisgKiBHQ0Mg
My4yLjA6IGluY29ycmVjdCBmdW5jdGlvbiBhcmd1bWVudCBvZmZzZXQgY2FsY3VsYXRpb24u
CisgKiBHQ0MgMy4yLng6IG1pc2NvbXBpbGVzIE5FV19BVVhfRU5UIGluIGZzL2JpbmZtdF9l
bGYuYworICogICAgICAgICAgICAoaHR0cDovL2djYy5nbnUub3JnL1BSODg5NikgYW5kIGlu
Y29ycmVjdCBzdHJ1Y3R1cmUKKyAqCSAgICAgIGluaXRpYWxpc2F0aW9uIGluIGZzL2pmZnMy
L2VyYXNlLmMKKyAqLworI2lmIF9fR05VQ19fIDwgMiB8fCBcCisgICAoX19HTlVDX18gPT0g
MiAmJiBfX0dOVUNfTUlOT1JfXyA8IDk1KSB8fCBcCisgICAoX19HTlVDX18gPT0gMiAmJiBf
X0dOVUNfTUlOT1JfXyA9PSA5NSAmJiBfX0dOVUNfUEFUQ0hMRVZFTF9fICE9IDAgJiYgXAor
CQkJCQkgICAgIF9fR05VQ19QQVRDSExFVkVMX18gPCAzKSB8fCBcCisgICAoX19HTlVDX18g
PT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpCisjZXJyb3IgWW91ciBjb21waWxlciBpcyB0
b28gYnVnZ3k7IGl0IGlzIGtub3duIHRvIG1pc2NvbXBpbGUga2VybmVscy4KKyNlcnJvciAg
ICBLbm93biBnb29kIGNvbXBpbGVyczogMi45NS4zLCAyLjk1LjQsIDIuOTYsIDMuMworI2Vu
ZGlmCisKKy8qIFVzZSBtYXJrZXIgaWYgeW91IG5lZWQgdG8gc2VwYXJhdGUgdGhlIHZhbHVl
cyBsYXRlciAqLworCisjZGVmaW5lIERFRklORShzeW0sIHZhbCkgXAorICAgICAgICBhc20g
dm9sYXRpbGUoIlxuLT4iICNzeW0gIiAlMCAiICN2YWwgOiA6ICJpIiAodmFsKSkKKworI2Rl
ZmluZSBCTEFOSygpIGFzbSB2b2xhdGlsZSgiXG4tPiIgOiA6ICkKKworaW50IG1haW4odm9p
ZCkKK3sKKwlCTEFOSygpOworCisJcmV0dXJuIDA7IAorfQpkaWZmIC1yIGU3MDE0NjFiMTI1
MSB4ZW4vYXJjaC9hcm0veGVuL2J1Zy5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vYnVnLmMJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzIgQEAKKyNpbmNsdWRlIDx4ZW4v
c3RkYXJnLmg+CisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi92ZXJz
aW9uLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cisj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5jbHVk
ZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL2NvbnNvbGUuaD4KKyNpbmNsdWRl
IDx4ZW4vc2VyaWFsLmg+CisjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KKyNpbmNsdWRlIDx4
ZW4va2V5aGFuZGxlci5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9k
ZWxheS5oPgorI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4v
c2h1dGRvd24uaD4KKyNpbmNsdWRlIDxhc20vY3VycmVudC5oPgorI2luY2x1ZGUgPGFzbS9k
ZWJ1Z2dlci5oPgorCit2b2lkIGJ1ZyhjaGFyICpmaWxlLCBpbnQgbGluZSkKK3sKKwlwYW5p
YygiWGVuIEJVRyBhdCAlczolZFxuIiwgZmlsZSwgbGluZSk7CisKKwl3aGlsZSgxKTsKK30K
Kwordm9pZCB3YXJuKGNoYXIgKmZpbGUsIGludCBsaW5lKQoreworCXByaW50aygiWGVuIFdB
Uk4gYXQgJXM6JWRcbiIsIGZpbGUsIGxpbmUpOworCit9CisKZGlmZiAtciBlNzAxNDYxYjEy
NTEgeGVuL2FyY2gvYXJtL3hlbi9jcHUuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2NwdS5jCUZyaSBGZWIg
MDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDk3IEBACisvKgorICogY3B1LmMK
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAg
ICAgICAgU2FuZy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAg
IEphZU1pbiBSeXUgICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzIAorICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBV
U0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9zcGlu
bG9jay5oPgorI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+CisjaW5jbHVkZSA8eGVuL3NtcC5o
PgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorI2lu
Y2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9wcmVlbXB0Lmg+CisjaW5jbHVk
ZSA8eGVuL3BlcmNwdS5oPgorCitjcHVtYXNrX3QgY3B1X29ubGluZV9tYXA7CitjcHVtYXNr
X3QgY3B1X3ByZXNlbnRfbWFwOworY3B1bWFza190IGNwdV9wb3NzaWJsZV9tYXA7CisKK25v
ZGVtYXNrX3Qgbm9kZV9vbmxpbmVfbWFwID0ge3sgWzBdID0gMVVMIH19OworCit1bnNpZ25l
ZCBjaGFyIGNwdV90b19ub2RlW05SX0NQVVNdIF9fcmVhZF9tb3N0bHkgPSB7CisgICAgICAg
IFswIC4uLiBOUl9DUFVTLTFdID0gTlVNQV9OT19OT0RFCit9OworCitjcHVtYXNrX3Qgbm9k
ZV90b19jcHVtYXNrW01BWF9OVU1OT0RFU10gX19yZWFkX21vc3RseTsKKworREVGSU5FX1BF
Ul9DUFVfUkVBRF9NT1NUTFkoY3B1bWFza192YXJfdCxjcHVfc2libGluZ19tYXNrKTsKK0RF
RklORV9QRVJfQ1BVX1JFQURfTU9TVExZKGNwdW1hc2tfdmFyX3QsY3B1X2NvcmVfbWFzayk7
CisKK2ludCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1KQoreworCU5PVF9ZRVQoKTsKKwor
CXJldHVybiAwOworfQorCit2b2lkIF9fY3B1X2Rpc2FibGUodm9pZCkKK3sKKwlOT1RfWUVU
KCk7Cit9CisKK3ZvaWQgX19jcHVfZGllKHVuc2lnbmVkIGludCBjcHUpCit7CisJTk9UX1lF
VCgpOworfQorCit2b2lkIHNldF9jcHVfc2libGluZ19tYXAodW5zaWduZWQgaW50IGNwdSkK
K3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgc21wX3ByZXBhcmVfY3B1cyh1bnNpZ25lZCBp
bnQgbWF4X2NwdXMpCit7CisJTk9UX1lFVCgpOworfQorCit2b2lkIHNtcF9wcmVwYXJlX2Jv
b3RfY3B1KHZvaWQpCit7CisJTk9UX1lFVCgpOworfQorCithc21saW5rYWdlIHZvaWQgc3Rh
cnRfeGVuX29uX3NsYXZlX2NwdSh2b2lkKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9pZCBz
bXBfc2VuZF9ldmVudF9jaGVja19tYXNrKGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKK3sKKwlO
T1RfWUVUKCk7Cit9CisKK3ZvaWQgc21wX2NhbGxfZnVuY3Rpb24odm9pZCAoKmYpKHZvaWQg
KnBhcmFtKSwgdm9pZCAqcGFyYW0sIGludCB3YWl0KQoreworCU5PVF9ZRVQoKTsKK30KKwor
dm9pZCBzbXBfc2VuZF9zdGF0ZV9kdW1wKHVuc2lnbmVkIGludCBjcHUpCit7CisJTk9UX1lF
VCgpOworfQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL2NyYXNoLmMK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2FyY2gvYXJtL3hlbi9jcmFzaC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApA
QCAtMCwwICsxLDI1IEBACisvKgorICogY3Jhc2guYworICoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNi
dWsuc3VoQHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlTWluIFJ5dSAgIDxqbTc3LnJ5
dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKwordm9pZCBtYWNoaW5l
X2NyYXNoX3NodXRkb3duKHZvaWQpCit7Cit9CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVu
L2FyY2gvYXJtL3hlbi9kb21haW5fYnVpbGQuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2RvbWFpbl9idWls
ZC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogZG9tYWluX2J1aWxkLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNidWsuc3Vo
QHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlTWluIFJ5dSAgIDxqbTc3LnJ5dUBzYW1z
dW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpbmNsdWRlIDx4ZW4vY29uZmln
Lmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cisj
aW5jbHVkZSA8eGVuL2NvbXBpbGUuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNs
dWRlIDx4ZW4vZWxmLmg+CisjaW5jbHVkZSA8eGVuL2RvbWFpbi5oPgorI2luY2x1ZGUgPHhl
bi9tbS5oPgorI2luY2x1ZGUgPHhlbi9pb2NhcC5oPgorI2luY2x1ZGUgPHhlbi94bWFsbG9j
Lmg+CisjaW5jbHVkZSA8eGVuL3ByZWVtcHQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliZWxmLmg+
CisjaW5jbHVkZSA8cHVibGljL3hlbi5oPgorI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+
CisKKy8qCisgKiBkb21haW5fY29uc3RydWN0KCkgc2hvdWxkIGJlIGFsd2F5cyBpbnZva2Vk
IGluIGlkbGUgZG9tYWluCisgKi8KK2ludCBkb21haW5fY29uc3RydWN0KHN0cnVjdCBkb21h
aW4gKmQsIAorCQkgICAgIHVuc2lnbmVkIGxvbmcgaW1nX3N0YXJ0LCB1bnNpZ25lZCBsb25n
IGltZ19sZW4sIAorCQkgICAgIHVuc2lnbmVkIGxvbmcgZG9tX3NpemUsIHVuc2lnbmVkIGlu
dCB2Y3B1cykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwpkaWZm
IC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL2RvbWFpbl9wYWdlLmMKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9kb21haW5fcGFnZS5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApA
QCAtMCwwICsxLDIyIEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhl
bi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9wZXJmYy5o
PgorI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgorCisjaWZkZWYgQ09ORklHX0RPTUFJ
Tl9QQUdFCisKK3ZvaWQgKm1hcF9kb21haW5fcGFnZSh1bnNpZ25lZCBsb25nIHBmbikKK3sK
KwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCB1bm1hcF9kb21haW5f
cGFnZSh2b2lkICp2YSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKKyNlbmRpZgorCmRpZmYgLXIg
ZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS94ZW4vZmF1bHQuYwotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2Zh
dWx0LmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTIzIEBA
CisvKg0KKyAqIHRyYXBzLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFNh
bXN1bmcgRWxlY3Ryb25pY3MNCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNidWsuc3Vo
QHNhbXN1bmcuY29tPg0KKyAqICAgICAgICAgIEphZU1pbiBSeXUgICA8am03Ny5yeXVAc2Ft
c3VuZy5jb20+DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoN
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0ENCisgKi8NCisNCisj
aW5jbHVkZSA8eGVuL2NvbmZpZy5oPg0KKyNpbmNsdWRlIDx4ZW4vY29tcGlsZS5oPg0KKyNp
bmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4NCisjaW5jbHVkZSA8eGVuL2luaXQuaD4NCisj
aW5jbHVkZSA8eGVuL3NjaGVkLmg+DQorI2luY2x1ZGUgPHhlbi9saWIuaD4NCisjaW5jbHVk
ZSA8eGVuL2NvbnNvbGUuaD4NCisjaW5jbHVkZSA8eGVuL21tLmg+DQorI2luY2x1ZGUgPHhl
bi9pcnEuaD4NCisjaW5jbHVkZSA8eGVuL3N5bWJvbHMuaD4NCisjaW5jbHVkZSA8YXNtL2N1
cnJlbnQuaD4NCisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KKyNpbmNsdWRlIDxhc20v
Z3Vlc3RfYWNjZXNzLmg+DQorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4NCisjaW5jbHVkZSA8
YXNtL21lbW9yeS5oPg0KKw0KK2FzbWxpbmthZ2Ugdm9pZCBfX2RpdjAodm9pZCkNCit7DQor
ICAgICAgICBwcmludGsoIkRpdmlzaW9uIGJ5IHplcm8gaW4ga2VybmVsLlxuIik7DQorfQ0K
Kw0KK2ludCBmaXh1cF9leGNlcHRpb24oc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQor
ew0KKwlyZXR1cm4gLUVJTlZBTDsNCit9DQorDQordm9pZCBzaG93X3JlZ2lzdGVycyhzdHJ1
Y3QgY3B1X3VzZXJfcmVncyAqY3R4KQ0KK3sNCit9DQorDQordm9pZCBkdW1wX2V4ZWN1dGlv
bl9zdGF0ZSh2b2lkKQ0KK3sNCit9DQorDQordm9pZCBzaG93X2V4ZWN1dGlvbl9zdGF0ZShz
dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCit7DQorCXByaW50aygiTm90IGltcGxlbWVu
dGVkXG4iKTsNCit9DQorDQorc3RhdGljIGludCB2ZXJpZnlfc3RhY2sodW5zaWduZWQgbG9u
ZyBzcCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBiYWNrdHJhY2Uo
c3RydWN0IGNwdV91c2VyX3JlZ3MgKmN0eCkNCit7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHVu
cmVjb3ZlcmFibGVfZmF1bHQoY29uc3QgY2hhciAqc3RyLCBpbnQgZXJyLCBzdHJ1Y3QgdmNw
dSAqdiwgc3RydWN0IGNwdV9jdHggKmN0eCkNCit7DQorCXByaW50aygiVW5yZWNvdmVyYWJs
ZSBGYXVsdCA6ICVzXG4iLCBzdHIpOw0KKw0KKwl3aGlsZSgxKTsNCisNCit9DQorDQorbG9u
ZyBkb19zZXRfY2FsbGJhY2tzKHVuc2lnbmVkIGxvbmcgZXZlbnQsIHVuc2lnbmVkIGxvbmcg
ZmFpbHNhZmUpDQorew0KKwlyZXR1cm4gLUVJTlZBTDsNCisNCit9DQorDQorYXNtbGlua2Fn
ZSB2b2lkIGRvX3ByZWZldGNoX2Fib3J0KHVuc2lnbmVkIGxvbmcgcGMsIHN0cnVjdCBjcHVf
Y3R4ICpjdHgpDQorew0KKwl3aGlsZSgxKTsNCisJdW5yZWNvdmVyYWJsZV9mYXVsdCgicHJl
ZmV0Y2ggYWJvcnQiLCAwLCBjdXJyZW50LCBjdHgpOw0KK30NCisNCithc21saW5rYWdlIHZv
aWQgZG9fZGF0YV9hYm9ydCh1bnNpZ25lZCBsb25nIGZzciwgdW5zaWduZWQgbG9uZyBmYXIs
IHN0cnVjdCBjcHVfY3R4ICpjdHgpDQorew0KKwl3aGlsZSgxKTsNCisJdW5yZWNvdmVyYWJs
ZV9mYXVsdCgiZGF0YSBhYm9ydCIsIDAsIGN1cnJlbnQsIGN0eCk7DQorfQ0KKw0KK2FzbWxp
bmthZ2Ugdm9pZCBkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24odW5zaWduZWQgbG9uZyBwYywg
c3RydWN0IGNwdV9jdHggKmN0eCkNCit7DQorCXdoaWxlKDEpOw0KKwl1bnJlY292ZXJhYmxl
X2ZhdWx0KCJ1bmRlZmluZWQgaW5zdHJ1Y3Rpb24iLCAwLCBjdXJyZW50LCBjdHgpOw0KK30N
CisNCit2b2lkIHZjcHVfc2hvd19leGVjdXRpb25fc3RhdGUoc3RydWN0IHZjcHUgKnYpDQor
ew0KKwlwcmludGsoIk5vdCBpbXBsZW1lbnRlZFxuIik7DQorfQ0KKw0KK2xvbmcgcmVnaXN0
ZXJfZ3Vlc3Rfbm1pX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgYWRkcmVzcykNCit7DQorCXBy
aW50aygiTm90IGltcGxlbWVudGVkIHlldFxuIik7DQorDQorCXJldHVybiAtMTsNCit9DQor
DQordm9pZCB1bnJlZ2lzdGVyX2d1ZXN0X25taV9jYWxsYmFjayh2b2lkKQ0KK3sNCisJcHJp
bnRrKCJOb3QgaW1wbGVtZW50ZWQgeWV0XG4iKTsNCit9DQorDQorbG9uZyBkb19zZXRfdHJh
cF90YWJsZShYRU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KSB0cmFwcykNCit7DQorCXJl
dHVybiAtRUZBVUxUOw0KK30NCisNCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2Fy
bS94ZW4vZ3JhbnRfdGFibGUuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2dyYW50X3RhYmxlLmMJRnJpIEZl
YiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBncmFu
dF90YWJsZS5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVj
dHJvbmljcworICogICAgICAgICAgU2FuZy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNv
bT4KKyAqICAgICAgICAgIFN1bmdLd2FuIEhlbyA8c2suaGVvQHNhbXN1bmcuY29tPgorICog
ICAgICAgICAgSmFlTWluIFJ5dSAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEt
MTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4v
dHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4vY3B1bWFzay5oPgorI2luY2x1ZGUgPHhlbi9saXN0
Lmg+CisjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgorI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4K
KyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNs
dWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KKyNpbmNsdWRl
IDx4ZW4vaXJxX2NwdXN0YXQuaD4KKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRl
IDx4ZW4vaW9jYXAuaD4KKyNpbmNsdWRlIDx4ZW4vcGVyZmMuaD4KKyNpbmNsdWRlIDx4ZW4v
Z3Vlc3RfYWNjZXNzLmg+CisKKworaW50IGNyZWF0ZV9ncmFudF9ob3N0X21hcHBpbmcodWlu
dDY0X3QgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwgdW5zaWduZWQgaW50IGZsYWdzLCB1
bnNpZ25lZCBpbnQgY2FjaGVfZmxhZ3MpCit7CisJTk9UX1lFVCgpOworCQorCXJldHVybiAt
RUlOVkFMOworfQorCitpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcodWludDY0X3Qg
YWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwgdWludDY0X3QgbmV3X2FkZHIsIHVuc2lnbmVk
IGludCBmbGFncykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gR05UU1RfZ2VuZXJhbF9l
cnJvcjsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL2lvbW11
LmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
eGVuL2FyY2gvYXJtL3hlbi9pb21tdS5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDI0IEBACisKKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8
eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4vc3Ry
aW5nLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+
CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL2lvY2FwLmg+CisjaW5jbHVk
ZSA8YXNtL2lvbW11Lmg+CisKK2ludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk
LCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBm
bGFncykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworaW50IGlv
bW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCit7
CisJTk9UX1lFVCgpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9CmRpZmYgLXIgZTcwMTQ2MWIx
MjUxIHhlbi9hcmNoL2FybS94ZW4vaXJxLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9pcnEuYwlGcmkgRmVi
IDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIGlycS5j
CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICogICAgICAgICAgU2FuZy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAg
ICAgICAgIEphZU1pbiBSeXUgICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEz
MDcgIFVTQQorICovCisKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8eGVu
L3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+
CisjaW5jbHVkZSA8eGVuL2lycS5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1
ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUg
PHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9ldmVudF9jaGFubmVsLmg+CisjaW5j
bHVkZSA8cHVibGljL3BoeXNkZXYuaD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJjaC1hcm0uaD4K
KworaHdfaXJxX2NvbnRyb2xsZXIgbm9faXJxX3R5cGUgPSB7CisJLnR5cGVuYW1lID0gIm5v
bmUiLAorCS5zdGFydHVwICA9IGlycV9zdGFydHVwX25vbmUsCisJLnNodXRkb3duID0gaXJx
X3NodXRkb3duX25vbmUsCisJLmVuYWJsZSAgID0gaXJxX2VuYWJsZV9ub25lLAorCS5kaXNh
YmxlICA9IGlycV9kaXNhYmxlX25vbmUsCit9OworCitzdHJ1Y3QgaXJxX2Rlc2MgKmlycV9k
ZXNjOworCitpbnQgcGlycV9ndWVzdF91bm1hc2soc3RydWN0IGRvbWFpbiAqZCkKK3sKKwlO
T1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHBpcnFfZ3Vlc3RfYmluZChzdHJ1
Y3QgdmNwdSAqdiwgc3RydWN0IHBpcnEgKnBpcnEsIGludCB3aWxsX3NoYXJlKQoreworCU5P
VF9ZRVQoKTsKKworCXJldHVybiAwOworfQorCit2b2lkIHBpcnFfZ3Vlc3RfdW5iaW5kKHN0
cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwaXJxICpwaXJxKQoreworCU5PVF9ZRVQoKTsKK30K
KworCit2b2lkIHBpcnFfc2V0X2FmZmluaXR5KHN0cnVjdCBkb21haW4gKmQsIGludCBwaXJx
LCBjb25zdCBjcHVtYXNrX3QgKm1hc2spCit7CisJTk9UX1lFVCgpOworfQorCisKK3N0cnVj
dCBwaXJxICphbGxvY19waXJxX3N0cnVjdChzdHJ1Y3QgZG9tYWluICpkKQoreworCU5PVF9Z
RVQoKTsKKworCXJldHVybiBOVUxMOworfQorCitpbnQgYXJjaF9pbml0X29uZV9pcnFfZGVz
YyhzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7
Cit9CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3hlbi9tYWNoaW5lX2tl
eGVjLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIveGVuL2FyY2gvYXJtL3hlbi9tYWNoaW5lX2tleGVjLmMJRnJpIEZlYiAwMyAxNjowNzow
MyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzEgQEAKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+
CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1
ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4v
Y29uc29sZS5oPgorI2luY2x1ZGUgPHhlbi9rZXhlYy5oPgorI2luY2x1ZGUgPHhlbi9kb21h
aW5fcGFnZS5oPgorCitpbnQgbWFjaGluZV9rZXhlY19sb2FkKGludCB0eXBlLCBpbnQgc2xv
dCwgeGVuX2tleGVjX2ltYWdlX3QgKmltYWdlKQoreworICAgIHJldHVybiAtRUlOVkFMOwor
fQorCit2b2lkIG1hY2hpbmVfa2V4ZWNfdW5sb2FkKGludCB0eXBlLCBpbnQgc2xvdCwgeGVu
X2tleGVjX2ltYWdlX3QgKmltYWdlKQoreworfQorCit2b2lkIG1hY2hpbmVfcmVib290X2tl
eGVjKHhlbl9rZXhlY19pbWFnZV90ICppbWFnZSkKK3sKK30KKwordm9pZCBtYWNoaW5lX2tl
eGVjKHhlbl9rZXhlY19pbWFnZV90ICppbWFnZSkKK3sKK30KKworaW50IG1hY2hpbmVfa2V4
ZWNfZ2V0KHhlbl9rZXhlY19yYW5nZV90ICpyYW5nZSkKK3sKKwlyZXR1cm4gLUVJTlZBTDsK
K30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL21tLmMKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9tbS5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsx
LDE5NCBAQAorLyoKKyAqIG1tLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggIDxzYnVrLnN1
aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIEphZU1pbiBSeXUgICAgPGptNzcucnl1QHNh
bXN1bmcuY29tPgorICogICAgICAgICAgU3VuZ0t3YW4gSGVvICA8c2suaGVvQHNhbXN1bmcu
Y29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0
b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2xpYi5oPgor
I2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+CisjaW5j
bHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CisjaW5jbHVkZSA8
eGVuL3N0cmluZy5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9z
Y2hlZC5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9kb21haW5fcGFn
ZS5oPgorI2luY2x1ZGUgPHhlbi9pcnFfY3B1c3RhdC5oPgorI2luY2x1ZGUgPHhlbi9ldmVu
dC5oPgorI2luY2x1ZGUgPHhlbi9pb2NhcC5oPgorI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgor
I2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKworI2RlZmluZSBWRVJCT1NFIDEKKwor
I2RlZmluZSBNTVVfVVBEQVRFX1BSRUVNUFRFRCAgICAgICAgICAofih+MFUgPj4gMSkpCisK
K3N0YXRpYyB1bnNpZ25lZCBsb25nIG1wdF9zaXplOworCisvKiBGcmFtZSB0YWJsZSBhbmQg
aXRzIHNpemUgaW4gcGFnZXMuICovCitzdHJ1Y3QgcGFnZV9pbmZvICpmcmFtZV90YWJsZTsK
K3Vuc2lnbmVkIGxvbmcgbWluX3BhZ2UgPSB+MFVMOzsKK3Vuc2lnbmVkIGxvbmcgbWF4X3Bh
Z2UgPSAwVUw7CisKK3Vuc2lnbmVkIGxvbmcgeGVuaGVhcF9waHlzX3N0YXJ0ID0gfjBVTDsK
K3Vuc2lnbmVkIGxvbmcgeGVuaGVhcF9waHlzX2VuZCA9IDBVTDsKKwordW5zaWduZWQgbG9u
ZyB4ZW5fcGh5c19zdGFydCA9IH4wVUw7Cit1bnNpZ25lZCBsb25nIHhlbl9waHlzX2VuZCA9
IDBVTDsKKworI2lmZGVmIE1FTU9SWV9HVUFSRAordm9pZCBtZW1ndWFyZF9pbml0KHZvaWQp
Cit7CisJTk9UX1lFVCgpOworfQorCit2b2lkIG1lbWd1YXJkX2d1YXJkX3JhbmdlKHZvaWQg
KnAsIHVuc2lnbmVkIGxvbmcgbCkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgbWVtZ3Vh
cmRfdW5ndWFyZF9yYW5nZSh2b2lkICpwLCB1bnNpZ25lZCBsb25nIGwpCit7CisJTk9UX1lF
VCgpOworfQorCisjZW5kaWYKKwordm9pZCBwdXRfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpw
YWdlKQoreworCU5PVF9ZRVQoKTsKK30KKworc3RydWN0IGRvbWFpbiAqcGFnZV9nZXRfb3du
ZXJfYW5kX3JlZmVyZW5jZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQoreworCU5PVF9ZRVQo
KTsKK30KKworaW50IGdldF9wYWdlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBk
b21haW4gKmRvbWFpbikKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKK30KKwordm9p
ZCBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHN0
cnVjdCBkb21haW4gKmQsIGludCByZWFkb25seSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3Zv
aWQgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9wcml2aWxlZ2VkX2d1ZXN0cyhzdHJ1Y3QgcGFnZV9p
bmZvICpwYWdlLCBpbnQgcmVhZG9ubHkpCit7CisJTk9UX1lFVCgpOworfQorCitzdGF0aWMg
aW50IHBpbl9wYWdlX3RhYmxlKHUzMiBtZm4sIHN0cnVjdCBkb21haW4gKmQpCit7CisJTk9U
X1lFVCgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdW5waW5fcGFnZV90YWJs
ZSh1MzIgbWZuLCBzdHJ1Y3QgZG9tYWluICpkKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVy
biAwOworfQorCit2b2lkIGZyZWVfcGFnZV90eXBlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Us
IHVuc2lnbmVkIGxvbmcgdHlwZSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgcHV0X3Bh
Z2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQoreworCU5PVF9ZRVQoKTsKK30KKwor
CitpbnQgZ2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBs
b25nIHR5cGUpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBkb19t
bXVleHRfb3AoWEVOX0dVRVNUX0hBTkRMRShtbXVleHRfb3BfdCkgdW9wcywgdW5zaWduZWQg
aW50IGNvdW50LAorCQkgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBwZG9uZSwgdW5zaWduZWQg
aW50IGZvcmVpZ25kb20pCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9
CisKK2ludCBkb19tbXVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEUobW11X3VwZGF0ZV90KSB1
cmVxcywKKwkJICB1bnNpZ25lZCBpbnQgY291bnQsIAorCQkgIFhFTl9HVUVTVF9IQU5ETEUo
dWludCkgcGRvbmUsCisJCSAgdW5zaWduZWQgaW50IGZvcmVpZ25kb20pCit7CisJTk9UX1lF
VCgpOworCisgICAgICAgIHJldHVybiAtRUlOVkFMOworfQorCitpbnQgZG9fdXBkYXRlX3Zh
X21hcHBpbmcodTMyIHZhLCB1MzIgZmxhZ3MsIHU2NCB2YWw2NCkKK3sKKwlOT1RfWUVUKCk7
CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworbG9uZyBhcmNoX21lbW9yeV9vcChpbnQgb3As
IFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVy
biAtRUlOVkFMOworfQorCisKKworaW50IHN0ZWFsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg
c3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgaW50IG1lbWZsYWdzKQoreworCU5P
VF9ZRVQoKTsKKworCXJldHVybiAtRUlOVkFMOworfQorCitpbnQgZG9uYXRlX3BhZ2Uoc3Ry
dWN0IGRvbWFpbiAqZCwgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgaW50IG1l
bWZsYWdzKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAtRUlOVkFMOworfQorCisKK3Vu
c2lnbmVkIGxvbmcgZG9tYWluX2dldF9tYXhpbXVtX2dwZm4oc3RydWN0IGRvbWFpbiAqZCkK
K3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMHhGRkZGRkZGRjsKK30KKworaW50IHBhZ2Vf
aXNfcmFtX3R5cGUodW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGxvbmcgbWVtX3R5cGUp
Cit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9CmRpZmYgLXIgZTcwMTQ2
MWIxMjUxIHhlbi9hcmNoL2FybS94ZW4vcDJtLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9wMm0uYwlGcmkg
RmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIHAy
bS5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICogICAgICAgICAgU2FuZy1idW0gU3VoICA8c2J1ay5zdWhAc2Ftc3VuZy5jb20+Cisg
KiAgICAgICAgICBKYWVNaW4gUnl1ICAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqICAg
ICAgICAgIFN1bmdLd2FuIEhlbyAgPHNrLmhlb0BzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMw
NyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGFzbS9kb21haW4uaD4KKyNpbmNsdWRlIDxhc20v
cGFnZS5oPgorI2luY2x1ZGUgPGFzbS9wYWdpbmcuaD4KKyNpbmNsdWRlIDxhc20vcDJtLmg+
CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisKK2ludCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2Vy
dmF0aW9uKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhlbl9wZm5fdCBncGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgb3JkZXIpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBn
dWVzdF9waHlzbWFwX21hcmtfcG9wdWxhdGVfb25fZGVtYW5kKHN0cnVjdCBkb21haW4gKmQs
IHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7
Cit9CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS94ZW4vcGNpLmMKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9wY2kuYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCAr
MSw3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogcGNpLmMKKyAqIAorICog
QXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBQQ0kgYWNjZXNzIGZ1bmN0aW9ucy4KKyAqLworCisj
aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3BjaS5oPgorI2luY2x1
ZGUgPGFzbS9pby5oPgorCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHBjaV9jb25maWdfbG9j
ayk7CisKK3VpbnQzMl90IHBjaV9jb25mX3JlYWQodWludDMyX3QgY2Y4LCB1aW50OF90IG9m
ZnNldCwgdWludDhfdCBieXRlcykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAg
IHVpbnQzMl90IHZhbHVlOworCisgICAgQlVHX09OKChvZmZzZXQgKyBieXRlcykgPiA0KTsK
KworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwY2lfY29uZmlnX2xvY2ssIGZsYWdzKTsKKwor
ICAgIG91dGwoY2Y4LCAweGNmOCk7CisKKyAgICBzd2l0Y2ggKCBieXRlcyApCisgICAgewor
ICAgIGNhc2UgMToKKyAgICAgICAgdmFsdWUgPSBpbmIoMHhjZmMgKyBvZmZzZXQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIHZhbHVlID0gaW53KDB4Y2ZjICsg
b2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICB2YWx1ZSA9
IGlubCgweGNmYyArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgQlVHKCk7CisgICAgfQorCisgICAgc3Bpbl91
bmxvY2tfaXJxcmVzdG9yZSgmcGNpX2NvbmZpZ19sb2NrLCBmbGFncyk7CisKKyAgICByZXR1
cm4gdmFsdWU7Cit9CisKK3ZvaWQgcGNpX2NvbmZfd3JpdGUodWludDMyX3QgY2Y4LCB1aW50
OF90IG9mZnNldCwgdWludDhfdCBieXRlcywgdWludDMyX3QgZGF0YSkKK3sKKyAgICB1bnNp
Z25lZCBsb25nIGZsYWdzOworCisgICAgQlVHX09OKChvZmZzZXQgKyBieXRlcykgPiA0KTsK
KworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwY2lfY29uZmlnX2xvY2ssIGZsYWdzKTsKKwor
ICAgIG91dGwoY2Y4LCAweGNmOCk7CisKKyAgICBzd2l0Y2ggKCBieXRlcyApCisgICAgewor
ICAgIGNhc2UgMToKKyAgICAgICAgb3V0YigodWludDhfdClkYXRhLCAweGNmYyArIG9mZnNl
dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgb3V0dygodWludDE2
X3QpZGF0YSwgMHhjZmMgKyBvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6
CisgICAgICAgIG91dGwoZGF0YSwgMHhjZmMgKyBvZmZzZXQpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2lfY29uZmlnX2xvY2ss
IGZsYWdzKTsKK30KKworCisjZGVmaW5lIFBDSV9DT05GX0FERFJFU1MoYnVzLCBkZXYsIGZ1
bmMsIHJlZykgXAorICAgICgweDgwMDAwMDAwIHwgKGJ1cyA8PCAxNikgfCAoZGV2IDw8IDEx
KSB8IChmdW5jIDw8IDgpIHwgKHJlZyAmIH4zKSkKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4
ZW4vYXJjaC9hcm0veGVuL3BlcmZtb24uYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL3BlcmZtb24uYwlGcmkg
RmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyNiBAQAorI2luY2x1ZGUg
PHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9l
cnJuby5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL25taS5oPgor
I2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KKyNpbmNsdWRlIDx4ZW4vZGVsYXkuaD4KKyNpbmNs
dWRlIDx4ZW4veGVub3Byb2YuaD4KKyNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CisKKworaW50
IHhlbm9wcm9mX2FyY2hfY291bnRlcihYRU5fR1VFU1RfSEFORExFKHZvaWQpIGFyZykKK3sK
KwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKK30KKworCitpbnQgeGVub3Byb2ZfYXJjaF9p
YnNfY291bnRlcihYRU5fR1VFU1RfSEFORExFKHZvaWQpIGFyZykKK3sKKwlOT1RfWUVUKCk7
CisKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0v
eGVuL3NldHVwLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9zZXR1cC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMg
MjAxMiArMDkwMApAQCAtMCwwICsxLDY0IEBACisvKgorICogc2V0dXAuYworICoKKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICAgICAgICAg
IFNhbmctYnVtIFN1aCAgIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAJICAgIEph
ZW1pbiBSeXUgICAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIEpvb1lv
dW5nIEh3YW5nIDxqb295b3VuZy5od2FuZ0BzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAg
VVNBCisgKi8KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vaW5p
dC5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2lu
Y2x1ZGUgPHhlbi9jb21waWxlLmg+CisjaW5jbHVkZSA8eGVuL3N0cmluZy5oPgorI2luY2x1
ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vcHJlZW1wdC5oPgorI2luY2x1ZGUgPHB1
YmxpYy92ZXJzaW9uLmg+CisjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+CisKKworc3RydWN0
IGRvbWFpbiBfZG9tX3hlbiA9IHsKKyAgICAgICAgLnJlZmNudCA9IEFUT01JQ19JTklUKDEp
LAorICAgICAgICAuZG9tYWluX2lkID0gRE9NSURfWEVOLAorICAgICAgICAuZG9tYWluX2xv
Y2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQsCit9OworCitzdHJ1Y3QgZG9tYWluIF9kb21faW8g
PSB7CisgICAgICAgIC5yZWZjbnQgPSBBVE9NSUNfSU5JVCgxKSwKKyAgICAgICAgLmRvbWFp
bl9pZCA9IERPTUlEX0lPLAorICAgICAgICAuZG9tYWluX2xvY2sgPSBTUElOX0xPQ0tfVU5M
T0NLRUQsCit9OworCitzdHJ1Y3QgZG9tYWluIF9kb21fY293ID0geworICAgICAgICAucmVm
Y250ID0gQVRPTUlDX0lOSVQoMSksCisgICAgICAgIC5kb21haW5faWQgPSBET01JRF9DT1cs
CisgICAgICAgIC5kb21haW5fbG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRCwKK307CisKK3N0
cnVjdCBkb21haW4gKmRvbV94ZW4gPSAmX2RvbV94ZW47CitzdHJ1Y3QgZG9tYWluICpkb21f
aW8gPSAmX2RvbV9pbzsKK3N0cnVjdCBkb21haW4gKmRvbV9jb3cgPSAmX2RvbV9jb3c7CisK
K3ZvaWQgYXJjaF9nZXRfeGVuX2NhcHMoeGVuX2NhcGFiaWxpdGllc19pbmZvX3QgKmluZm8p
Cit7Cit9CisKK2FzbWxpbmthZ2Ugdm9pZCBzdGFydF94ZW4odm9pZCkKK3sKK30KKwpkaWZm
IC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL3NodXRkb3duLmMKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJt
L3hlbi9zaHV0ZG93bi5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCww
ICsxLDM4IEBACisvKgorICogc2h1dGRvd24uYworICoKKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICAgICAgICAgIFNhbmctYnVtIFN1aCA8
c2J1ay5zdWhAc2Ftc3VuZy5jb20+CisgKiAgICAgICAgICBKYWVNaW4gUnl1ICAgPGptNzcu
cnl1QHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8
eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGli
Lmg+CisjaW5jbHVkZSA8eGVuL3NodXRkb3duLmg+CisKK3ZvaWQgbWFjaGluZV9oYWx0KHZv
aWQpCit7CisJcHJpbnRrKCJtYWNoaW5lX2hhbHQgY2FsbGVkOiBzcGlubmluZy4uLi5cbiIp
OworCXdoaWxlKDEpOworfQorCit2b2lkIG1hY2hpbmVfcmVzdGFydCh1bnNpZ25lZCBpbnQg
ZGVsYXlfbWlsbGlzZWNzKQoreworCXByaW50aygibWFjaGluZV9yZXN0YXJ0IGNhbGxlZDog
c3Bpbm5pbmcuLi4uXG4iKTsKKwl3aGlsZSgxKTsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1
MSB4ZW4vYXJjaC9hcm0veGVuL3RpbWUuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL3RpbWUuYwlGcmkgRmVi
IDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIHRpbWUu
YyAKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
IAorICogICAgICAgICAgU2FuZy1idW0gU3VoICAgIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4K
KyAqICAgICAgICAgIEpvb1lvdW5nIEh3YW5nICA8am9veW91bmcuaHdhbmdAc2Ftc3VuZy5j
b20+CisgKiAgICAgICAgICBKYWVtaW4gUnl1ICAgICAgPGptNzcucnl1QHNhbXN1bmcuY29t
PgorICogCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cisj
aW5jbHVkZSA8eGVuL3RpbWUuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRl
IDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorI2luY2x1ZGUgPGFz
bS90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisjaW5jbHVkZSA8YXNtL2Rp
djY0Lmg+CisjaW5jbHVkZSA8YXNtL3RpbWUuaD4KKwordm9pZCBzZW5kX3RpbWVyX2V2ZW50
KHN0cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKworaW50IHJlcHJvZ3JhbV90
aW1lcihzX3RpbWVfdCB0aW1lb3V0KQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAxOwor
fQorCit2b2lkIHNtcF9icm9hZGNhc3RfdGltZXIodm9pZCkKK3sKKwlOT1RfWUVUKCk7Cit9
CisKK3ZvaWQgdXBkYXRlX3ZjcHVfc3lzdGVtX3RpbWUoc3RydWN0IHZjcHUgKnYpCit7CisJ
Tk9UX1lFVCgpOworCisJcmV0dXJuOworfQorCit2b2lkIGRvX3NldHRpbWUodW5zaWduZWQg
bG9uZyBzZWNzLCB1bnNpZ25lZCBsb25nIG5zZWNzLCB1NjQgc3lzdGVtX3RpbWVfYmFzZSkK
K3sKKwlOT1RfWUVUKCk7Cit9CisKK3N0cnVjdCB0bSB3YWxsY2xvY2tfdGltZSh2b2lkKQor
eworCXJldHVybiBnbXRpbWUoMCk7Cit9CisKKworc190aW1lX3QgZ2V0X3NfdGltZSh2b2lk
KQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAwOworfQorCit2b2lkIGRvbWFpbl9zZXRf
dGltZV9vZmZzZXQoc3RydWN0IGRvbWFpbiAqZCwgaW50MzJfdCB0aW1lX29mZnNldF9zZWNv
bmRzKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9pZCB0aW1la2VlcGluZ19pbml0KHZvaWQp
Cit7CisJTk9UX1lFVCgpOworfQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0v
eGVuL3RsYi5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3hlbi9hcmNoL2FybS94ZW4vdGxiLmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEy
ICswOTAwCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiB0bGIuYworICoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICAgICAgICAgIFNhbmct
YnVtIFN1aCA8c2J1ay5zdWhAc2Ftc3VuZy5jb20+CisgKiAgICAgICAgICBKYWVNaW4gUnl1
ICAgPGptNzcucnl1QHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIg
b2YgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lu
Y2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUg
PHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CisKK3UzMiB0bGJmbHVz
aF9jbG9jayA9IDFVOwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL3hl
bi5sZHMuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi94ZW4vYXJjaC9hcm0veGVuL3hlbi5sZHMuUwlGcmkgRmViIDAzIDE2OjA3OjAzIDIw
MTIgKzA5MDAKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiB4ZW4ubGRzLlMKKyAqCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgU2Fu
Zy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIENoYW5KdSBQ
YXJrICA8YmVzdHdvcmxkQHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlTWluIFJ5dSAg
IDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9m
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lu
Y2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorCitPVVRQVVRf
QVJDSChhcm0pCitFTlRSWShzdGFydCkKKworU0VDVElPTlMKK3sKKwkuID0gMHhGRjAwODAw
MDsKKwlfc3RhcnQgPSAuOworCS50ZXh0IDogeworCQlfc3RleHQgPSAuOworCQkqKC5oZWFk
KQorCQkqKC50ZXh0KQorCQkqKC5maXh1cCkKKwkJKiguZ251Lndhcm5pbmcpCisJCV9ldGV4
dCA9IC47CisJfQorCisJLnJvZGF0YSA6IHsKKwkJKigucm9kYXRhKQorCQkqKC5yb2RhdGEu
KikKKwl9CisKKwkuID0gQUxJR04oMzIpOworCS5kYXRhLnJlYWRfbW9zdGx5IDogeworCQkv
KiBFeGNlcHRpb24gdGFibGUgKi8KKwkJX3NleHRhYmxlID0gLjsKKwkJX19zdGFydF9fX2V4
X3RhYmxlID0gLjsKKwkJKiguZXhfdGFibGUpCisJCV9fc3RvcF9fX2V4X3RhYmxlID0gLjsK
KworCQkvKiBQcmUtZXhjZXB0aW9uIHRhYmxlICovCisJCV9fc3RhcnRfX19wcmVfZXhfdGFi
bGUgPSAuOworCQkqKC5leF90YWJsZS5wcmUpCisJCV9fc3RvcF9fX3ByZV9leF90YWJsZSA9
IC47CisJCV9lZXh0YWJsZSA9IC47CisJCSooLmRhdGEucmVhZF9tb3N0bHkpCisJCSooLmRh
dGEucmVsLnJvKQorCQkqKC5kYXRhLnJlbC5yby4qKQorCX0gCisKKwkuID0gQUxJR04oUEFH
RV9TSVpFKTsKKwkuZGF0YSA6IHsKKwkJX3NkYXRhID0gLjsKKwkJKiguZGF0YSkKKwkJKigu
ZGF0YS5yZWwpCisJCSooLmRhdGEucmVsLiopCisJCV9lZGF0YSA9IC47CisJfQorCisJLiA9
IEFMSUdOKFBBR0VfU0laRSk7ICAgICAgICAgICAgIC8qIEluaXQgY29kZSBhbmQgZGF0YSAq
LworCV9faW5pdF9iZWdpbiA9IC47CisKKwkuaW5pdC50ZXh0IDogeworCQlfc2luaXR0ZXh0
ID0gLjsKKwkJKiguaW5pdC50ZXh0KSAKKwkJX2Vpbml0dGV4dCA9IC47CisJfQorCisJLmlu
aXQuZGF0YSA6IHsKKwkJX3Npbml0ZGF0YSA9IC47CisJCSooLmluaXQucm9kYXRhKQorCQkq
KC5pbml0LnJvZGFhdGEuc3RyKikKKwkJKiguaW5pdC5kYXRhKQorCQkqKC5pbml0LmRhdGEu
cmVsKQorCQkqKC5pbml0LmRhdGEucmVsLiopCisJCV9laW5pdGRhdGEgPSAuOworCX0KKwor
CS4gPSBBTElHTigzMik7CisJLmluaXQubWVtdGFibGUgOiB7CisJCV9zbWVtdGFibGUgPSAu
OworCQkqKC5pbml0Lm1lbXRhYmxlKQorCQkqKC5pbml0Lm1lbXRhYmxlLiopCisJCV9lbWVt
dGFibGUgPSAuOworCX0KKworCS4gPSBBTElHTigzMik7CisJLmluaXQuc2V0dXAgOiB7CisJ
CV9zaW5pdHNldHVwID0gLjsKKwkJX19zZXR1cF9zdGFydCA9IC47CisJCSooLmluaXQuc2V0
dXApIAorCQlfX3NldHVwX2VuZCA9IC47CisJCV9laW5pdHNldHVwID0gLjsKKwl9CisKKwku
aW5pdGNhbGwuaW5pdCA6IHsKKwkJX3Npbml0Y2FsbCA9IC47CisJCV9faW5pdGNhbGxfc3Rh
cnQgPSAuOworCQkqKC5pbml0Y2FsbHByZXNtcC5pbml0KQorCQlfX3ByZXNtcF9pbml0Y2Fs
bF9lbmQgPSAuOworCQkqKC5pbml0Y2FsbDEuaW5pdCkgCisJCV9faW5pdGNhbGxfZW5kID0g
LjsKKwkJX2Vpbml0Y2FsbCA9IC47CisJfQorCisJLnhzbV9pbml0Y2FsbC5pbml0IDogewor
CQlfc3hzbV9pbml0Y2FsbCA9IC47CisJCV9feHNtX2luaXRjYWxsX3N0YXJ0ID0gLjsKKwkJ
KigueHNtX2luaXRjYWxsLmluaXQpCisJCV9feHNtX2luaXRjYWxsX2VuZCA9IC47CisJCV9l
eHNtX2luaXRjYWxsID0gLjsKKwl9CisJX19pbml0X2VuZCA9IC47CisKKwkuID0gQUxJR04o
UEFHRV9TSVpFKTsKKworCS5ic3MgOiB7CisJCV9zYnNzID0gLjsJCS8qIEJTUyAqLworCQlf
X2Jzc19zdGFydCA9IC47CisJCSooLmJzcy5wYWdlX2FsaWduZWQpCisJCSooLmJzcy5zdGFj
a19hbGlnbmVkKQorCQkqKC5ic3MucGVyY3B1KQorCQkqKC5ic3MpCisJCV9fYnNzX2VuZCA9
IC47CisJCV9lYnNzID0gLjsKKwl9CisJX2VuZCA9IC4gOworCS8qIFNlY3Rpb25zIHRvIGJl
IGRpc2NhcmRlZCAqLworCisgIAkvRElTQ0FSRC8gOiB7CisgIAkJKigudGV4dC5leGl0KQor
CQkqKC5kYXRhLmV4aXQpCisJCSooLmV4aXRjYWxsLmV4aXQpCisJfQorCS8qIFN0YWJzIGRl
YnVnZ2luZyBzZWN0aW9ucy4gICovCisJLnN0YWIgMCA6IHsgKiguc3RhYikgfQorCS5zdGFi
c3RyIDAgOiB7ICooLnN0YWJzdHIpIH0KKwkuc3RhYi5leGNsIDAgOiB7ICooLnN0YWIuZXhj
bCkgfQorCS5zdGFiLmV4Y2xzdHIgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CisJLnN0YWIu
aW5kZXggMCA6IHsgKiguc3RhYi5pbmRleCkgfQorCS5zdGFiLmluZGV4c3RyIDAgOiB7ICoo
LnN0YWIuaW5kZXhzdHIpIH0KKwkuY29tbWVudCAwIDogeyAqKC5jb21tZW50KSB9CisJCit9
CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9hY3BpLmgKLS0t
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLWFybS9hY3BpLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBA
IC0wLDAgKzEsOCBAQAorI2lmbmRlZiBfX0FSTV9BQ1BJX0hfXworI2RlZmluZSBfX0FSTV9B
Q1BJX0hfXworCisjZGVmaW5lIENPTVBJTEVSX0RFUEVOREVOVF9JTlQ2NCAgIGxvbmcgbG9u
ZworI2RlZmluZSBDT01QSUxFUl9ERVBFTkRFTlRfVUlOVDY0ICB1bnNpZ25lZCBsb25nIGxv
bmcKKworI2VuZGlmIC8qIV9fQVJNX0FDUElfSF9fICovCisKZGlmZiAtciBlNzAxNDYxYjEy
NTEgeGVuL2luY2x1ZGUvYXNtLWFybS9hc20tbWFjcm9zLmgKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9h
c20tbWFjcm9zLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEs
MTA2IEBACisjaWZuZGVmIF9fQVJNX0FTTV9NQUNST1NfSF9fCisjZGVmaW5lIF9fQVJNX0FT
TV9NQUNST1NfSF9fCisKKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisKKyNpZmRlZiBfX0FT
U0VNQkxZX18KKy8qCisgKiBFbmRpYW4gaW5kZXBlbmRlbnQgbWFjcm9zIGZvciBzaGlmdGlu
ZyBieXRlcyB3aXRoaW4gcmVnaXN0ZXJzLgorICovCisjaWZuZGVmIF9fQVJNRUJfXworI2Rl
ZmluZSBwdWxsICAgICAgICAgICAgbHNyCisjZGVmaW5lIHB1c2ggICAgICAgICAgICBsc2wK
KyNkZWZpbmUgZ2V0X2J5dGVfMCAgICAgIGxzbCAjMAorI2RlZmluZSBnZXRfYnl0ZV8xICAg
ICAgbHNyICM4CisjZGVmaW5lIGdldF9ieXRlXzIgICAgICBsc3IgIzE2CisjZGVmaW5lIGdl
dF9ieXRlXzMgICAgICBsc3IgIzI0CisjZGVmaW5lIHB1dF9ieXRlXzAgICAgICBsc2wgIzAK
KyNkZWZpbmUgcHV0X2J5dGVfMSAgICAgIGxzbCAjOAorI2RlZmluZSBwdXRfYnl0ZV8yICAg
ICAgbHNsICMxNgorI2RlZmluZSBwdXRfYnl0ZV8zICAgICAgbHNsICMyNAorI2Vsc2UKKyNk
ZWZpbmUgcHVsbCAgICAgICAgICAgIGxzbAorI2RlZmluZSBwdXNoICAgICAgICAgICAgbHNy
CisjZGVmaW5lIGdldF9ieXRlXzAgICAgICBsc3IgIzI0CisjZGVmaW5lIGdldF9ieXRlXzEg
ICAgICBsc3IgIzE2CisjZGVmaW5lIGdldF9ieXRlXzIgICAgICBsc3IgIzgKKyNkZWZpbmUg
Z2V0X2J5dGVfMyAgICAgIGxzbCAjMAorI2RlZmluZSBwdXRfYnl0ZV8wICAgICAgbHNsICMy
NAorI2RlZmluZSBwdXRfYnl0ZV8xICAgICAgbHNsICMxNgorI2RlZmluZSBwdXRfYnl0ZV8y
ICAgICAgbHNsICM4CisjZGVmaW5lIHB1dF9ieXRlXzMgICAgICBsc2wgIzAKKyNlbmRpZgor
CisjZGVmaW5lIFBMRChjb2RlLi4uKQljb2RlCisKKyNkZWZpbmUgQ1RYVF9SMAkJMAorI2Rl
ZmluZSBDVFhUX1IxCQk0CisjZGVmaW5lIENUWFRfUjIJCTgKKyNkZWZpbmUgQ1RYVF9SMwkJ
MTIKKyNkZWZpbmUgQ1RYVF9SNAkJMTYKKyNkZWZpbmUgQ1RYVF9SNQkJMjAKKyNkZWZpbmUg
Q1RYVF9SNgkJMjQKKyNkZWZpbmUgQ1RYVF9SNwkJMjgKKyNkZWZpbmUgQ1RYVF9SOAkJMzIK
KyNkZWZpbmUgQ1RYVF9SOQkJMzYKKyNkZWZpbmUgQ1RYVF9SMTAJNDAKKyNkZWZpbmUgQ1RY
VF9SMTEJNDQKKyNkZWZpbmUgQ1RYVF9SMTIJNDgKKyNkZWZpbmUgQ1RYVF9VU1AJNTIKKyNk
ZWZpbmUgQ1RYVF9VTFIJNTYKKyNkZWZpbmUgQ1RYVF9TU1AJNjAKKyNkZWZpbmUgQ1RYVF9T
TFIJNjQKKyNkZWZpbmUgQ1RYVF9QQwkJNjgKKyNkZWZpbmUgQ1RYVF9TUFNSCTcyCisjZGVm
aW5lIENUWFRfRVhUUkEJNzYKKyNkZWZpbmUgQ1RYVF9GUkFNRV9TSVpFCTgwCisKKyNkZWZp
bmUgU1BGSVgoY29kZS4uLikJY29kZQorCisubWFjcm8gIGRpc2FibGVfaXJxLCB0ZW1wCisJ
bXNyCWNwc3JfYywgI1BTUl9JX0JJVCB8IFBTUl9NT0RFX1NWQworLmVuZG0KKworLm1hY3Jv
CWNjaQlyZAorCW1vdglccmQsICNTVEFDS19TSVpFCisJc3ViCVxyZCwgXHJkLCAjMQorCWJp
YwlccmQsIHIxMywgXHJkCisuZW5kbQorCisvKgorICogU2F2ZSB0aGUgY3VycmVudCBJUlEg
c3RhdGUgYW5kIGRpc2FibGUgSVJRcy4gIE5vdGUgdGhhdCB0aGlzIG1hY3JvCisgKiBhc3N1
bWVzIEZJUXMgYXJlIGVuYWJsZWQsIGFuZCB0aGF0IHRoZSBwcm9jZXNzb3IgaXMgaW4gU1ZD
IG1vZGUuCisgKi8KKy5tYWNybwlzYXZlX2FuZF9kaXNhYmxlX2lycXMsIG9sZGNwc3IsIHRl
bXAKKwltcnMJXG9sZGNwc3IsIGNwc3IKKwltb3YJXHRlbXAsICNQU1JfSV9CSVQgfCBQU1Jf
TU9ERV9TVkMKKwltc3IJY3Bzcl9jLCBcdGVtcAorLmVuZG0KKworLyoKKyAqIFJlc3RvcmUg
aW50ZXJydXB0IHN0YXRlIHByZXZpb3VzbHkgc3RvcmVkIGluIGEgcmVnaXN0ZXIuICBXZSBk
b24ndAorICogZ3VhcmFudGVlIHRoYXQgdGhpcyB3aWxsIHByZXNlcnZlIHRoZSBmbGFncy4K
KyAqLworLm1hY3JvCXJlc3RvcmVfaXJxcywgb2xkY3BzcgorCW1zcgljcHNyX2MsIFxvbGRj
cHNyCisuZW5kbQorCisjZGVmaW5lIFVTRVIoeC4uLikJCQkJXAorOTk5OToJeDsJCQkJCVwK
Kwkuc2VjdGlvbiAuZXh0YWJsZSwiYSI7CQlcCisJLmFsaWduCTM7CQkJCVwKKwkubG9uZwk5
OTk5Yiw5MDAxZjsJCQlcCisJLnByZXZpb3VzCisKKyNkZWZpbmUgX19BTElHTiAgICAgICAg
IC5hbGlnbiAwCisjZGVmaW5lIF9fQUxJR05fU1RSICAgICAiLmFsaWduIDAsIDB4OTAiCisK
KyNkZWZpbmUgQUxJR04gICAgICAgICAgIF9fQUxJR04KKyNkZWZpbmUgQUxJR05fU1RSICAg
ICAgIF9fQUxJR05fU1RSCisKKyNkZWZpbmUgRU5UUlkobmFtZSkgXAorICAuZ2xvYmFsIG5h
bWU7IFwKKyAgQUxJR047IFwKKyAgbmFtZToKKyNlbmRpZgorI2VuZGlmIC8qIF9fQVJNX0FT
TV9NQUNST1NfSF9fICovCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1h
cm0vYXRvbWljLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9hdG9taWMuaAlGcmkgRmViIDAzIDE2OjA3
OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxNzkgQEAKKyNpZm5kZWYgX19BUk1fQVRPTUlD
X0hfXworI2RlZmluZSBfX0FSTV9BVE9NSUNfSF9fCisKKyNpZm5kZWYgX19BU1NFTUJMWV9f
CisjZGVmaW5lIHJlYWRfYXRvbWljKHApIAkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl0eXBl
b2YoKnApIF9feDsJCQkJCQkJXAorCXN3aXRjaCAoIHNpemVvZigqcCkgKSB7CQkJCQkJXAor
CWNhc2UgMTogX194ID0gKHR5cGVvZigqcCkpYXRvbWljX3JlYWQ4KCh1aW50OF90ICopcCk7
IGJyZWFrOwlcCisJY2FzZSAyOiBfX3ggPSAodHlwZW9mKCpwKSlhdG9taWNfcmVhZDE2KCh1
aW50MTZfdCAqKXApOyBicmVhazsJXAorCWNhc2UgNDogX194ID0gKHR5cGVvZigqcCkpYXRv
bWljX3JlYWQzMigodWludDMyX3QgKilwKTsgYnJlYWs7CVwKKwljYXNlIDg6IF9feCA9ICh0
eXBlb2YoKnApKWF0b21pY19yZWFkNjQoKHVpbnQ2NF90ICopcCk7IGJyZWFrOwlcCisJZGVm
YXVsdDogX194ID0gMDsgX19iYWRfYXRvbWljX3NpemUoKTsgYnJlYWs7CQkJXAorCX0JCQkJ
CQkJCVwKKwlfX3g7CQkJCQkJCQlcCit9KQorCisjZGVmaW5lIHdyaXRlX2F0b21pYyhwLCB4
KSAJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl0eXBlb2YoKnApIF9feCA9ICh4KTsJCQkJCQlc
CisJc3dpdGNoICggc2l6ZW9mKCpwKSApIHsJCQkJCQlcCisJY2FzZSAxOiBhdG9taWNfd3Jp
dGU4KCh1aW50OF90ICopcCwgKHVpbnQ4X3QpX194KTsgYnJlYWs7CVwKKwljYXNlIDI6IGF0
b21pY193cml0ZTE2KCh1aW50MTZfdCAqKXAsICh1aW50MTZfdClfX3gpOyBicmVhazsJXAor
CWNhc2UgNDogYXRvbWljX3dyaXRlMzIoKHVpbnQzMl90ICopcCwgKHVpbnQzMl90KV9feCk7
IGJyZWFrOwlcCisJY2FzZSA4OiBhdG9taWNfd3JpdGU2NCgodWludDY0X3QgKilwLCAodWlu
dDY0X3QpX194KTsgYnJlYWs7CVwKKwlkZWZhdWx0OiBfX2JhZF9hdG9taWNfc2l6ZSgpOyBi
cmVhazsJCQkJXAorCX0JCQkJCQkJCVwKKwlfX3g7CQkJCQkJCQlcCit9KQorCisKK3N0YXRp
YyBpbmxpbmUgdWludDhfdCBhdG9taWNfcmVhZDgoY29uc3Qgdm9sYXRpbGUgdWludDhfdCAq
YWRkcikKK3sKKwlyZXR1cm4gKCphZGRyKTsKK30KKworCitzdGF0aWMgaW5saW5lIHVpbnQx
Nl90IGF0b21pY19yZWFkMTYoY29uc3Qgdm9sYXRpbGUgdWludDE2X3QgKmFkZHIpCit7CisJ
cmV0dXJuICgqYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYXRvbWljX3Jl
YWQzMihjb25zdCB2b2xhdGlsZSB1aW50MzJfdCAqYWRkcikKK3sKKwlyZXR1cm4gKCphZGRy
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGF0b21pY193cml0ZTgodm9sYXRpbGUgdWlu
dDhfdCAqYWRkciwgdWludDhfdCB2YWwpCit7CisJKCphZGRyKSA9IHZhbDsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIGF0b21pY193cml0ZTE2KHZvbGF0aWxlIHVpbnQxNl90ICphZGRy
LCB1aW50MTZfdCB2YWwpCit7CisJKCphZGRyKSA9IHZhbDsKK30KKworc3RhdGljIGlubGlu
ZSB2b2lkIGF0b21pY193cml0ZTMyKHZvbGF0aWxlIHVpbnQzMl90ICphZGRyLCB1aW50MzJf
dCB2YWwpCit7CisJKCphZGRyKSA9IHZhbDsKK30KKworCit0eXBlZGVmIHN0cnVjdCB7CisJ
dm9sYXRpbGUgaW50IGNvdW50ZXI7Cit9IGF0b21pY190OworCisKKyNkZWZpbmUgQVRPTUlD
X0lOSVQoaSkJCXsgKGkpIH0KKworI2RlZmluZSBhdG9taWNfcmVhZCh2KQkJKCh2KS0+Y291
bnRlcikKKworc3RhdGljIGlubGluZSB2b2lkIGF0b21pY19zZXQoYXRvbWljX3QgKnYsIGlu
dCBpKQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18o
IkAgYXRvbWljX3NldFxuIgorIjE6ICAgICBsZHJleCAgICUwLCBbJTFdXG4iCisiICAgICAg
IHN0cmV4ICAgJTAsICUyLCBbJTFdXG4iCisiICAgICAgIHRlcSAgICAgJTAsICMwXG4iCisi
ICAgICAgIGJuZSAgICAgMWIiCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmdi0+Y291bnRl
ciksICJyIiAoaSkKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIGludCBhdG9taWNf
YWRkX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCit7CisJdW5zaWduZWQgbG9uZyB0bXA7
CisJaW50IHJlc3VsdDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKCJAIGF0b21pY19hZGRf
cmV0dXJuXG4iCisiMTogICAgIGxkcmV4ICAgJTAsIFslMl1cbiIKKyIgICAgICAgYWRkICAg
ICAlMCwgJTAsICUzXG4iCisiICAgICAgIHN0cmV4ICAgJTEsICUwLCBbJTJdXG4iCisiICAg
ICAgIHRlcSAgICAgJTEsICMwXG4iCisiICAgICAgIGJuZSAgICAgMWIiCisJOiAiPSZyIiAo
cmVzdWx0KSwgIj0mciIgKHRtcCkKKwk6ICJyIiAoJnYtPmNvdW50ZXIpLCAiSXIiIChpKQor
CTogImNjIik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIGludCBh
dG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCit7CisJdW5zaWduZWQgbG9u
ZyB0bXA7CisJaW50IHJlc3VsdDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKCJAIGF0b21p
Y19zdWJfcmV0dXJuXG4iCisiMTogICAgIGxkcmV4ICAgJTAsIFslMl1cbiIKKyIgICAgICAg
c3ViICAgICAlMCwgJTAsICUzXG4iCisiICAgICAgIHN0cmV4ICAgJTEsICUwLCBbJTJdXG4i
CisiICAgICAgIHRlcSAgICAgJTEsICMwXG4iCisiICAgICAgIGJuZSAgICAgMWIiCisJOiAi
PSZyIiAocmVzdWx0KSwgIj0mciIgKHRtcCkKKwk6ICJyIiAoJnYtPmNvdW50ZXIpLCAiSXIi
IChpKQorCTogImNjIik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBhdG9taWNfY2xlYXJfbWFzayh1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgKmFkZHIpCit7CisJdW5zaWduZWQgbG9uZyB0bXAsIHRtcDI7CisKKwlfX2FzbV9f
IF9fdm9sYXRpbGVfXygiQCBhdG9taWNfY2xlYXJfbWFza1xuIgorIjE6ICAgICBsZHJleCAg
ICUwLCBbJTJdXG4iCisiICAgICAgIGJpYyAgICAgJTAsICUwLCAlM1xuIgorIiAgICAgICBz
dHJleCAgICUxLCAlMCwgWyUyXVxuIgorIiAgICAgICB0ZXEgICAgICUxLCAjMFxuIgorIiAg
ICAgICBibmUgICAgIDFiIgorCTogIj0mciIgKHRtcCksICI9JnIiICh0bXAyKQorCTogInIi
IChhZGRyKSwgIklyIiAobWFzaykKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIGF0
b21pY190IGF0b21pY19jbXB4Y2hnKGF0b21pY190ICpwdHIsIGF0b21pY190IG9sZCwgYXRv
bWljX3QgbmV3KQoreworCWF0b21pY190IG9sZHZhbCwgcmVzOworCisJZG8geworCQlfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiQCBhdG9taWNfY21weGNoZ1xuIgorCQkibGRyZXggICUxLCBb
JTJdXG4iCisJCSJtb3YgICAgJTAsICMwXG4iCisJCSJ0ZXEgICAgJTEsICUzXG4iCisJCSJz
dHJleGVxICUwLCAlNCwgWyUyXVxuIgorCQk6ICI9JnIiIChyZXMuY291bnRlciksICI9JnIi
IChvbGR2YWwuY291bnRlcikKKwkJOiAiciIgKCZwdHItPmNvdW50ZXIpLCAiSXIiIChvbGQu
Y291bnRlciksICJyIiAobmV3LmNvdW50ZXIpCisJCTogImNjIik7CisJfSB3aGlsZSAocmVz
LmNvdW50ZXIpOworCisJcmV0dXJuIG9sZHZhbDsKK30KKworI2RlZmluZSBfYXRvbWljX3Jl
YWQodikJCWF0b21pY19yZWFkKCZ2KQorI2RlZmluZSBfYXRvbWljX3NldCh2LGkpCWF0b21p
Y19zZXQoJnYsaSkKKworI2RlZmluZSBhdG9taWNfYWRkKGksIHYpCSh2b2lkKSBhdG9taWNf
YWRkX3JldHVybihpLCB2KQorI2RlZmluZSBhdG9taWNfaW5jKHYpCQkodm9pZCkgYXRvbWlj
X2FkZF9yZXR1cm4oMSwgdikKKyNkZWZpbmUgYXRvbWljX3N1YihpLCB2KQkodm9pZCkgYXRv
bWljX3N1Yl9yZXR1cm4oaSwgdikKKyNkZWZpbmUgYXRvbWljX2RlYyh2KQkJKHZvaWQpIGF0
b21pY19zdWJfcmV0dXJuKDEsIHYpCisKKyNkZWZpbmUgYXRvbWljX2luY19hbmRfdGVzdCh2
KQkoYXRvbWljX2FkZF9yZXR1cm4oMSwgdikgPT0gMCkKKyNkZWZpbmUgYXRvbWljX2RlY19h
bmRfdGVzdCh2KQkoYXRvbWljX3N1Yl9yZXR1cm4oMSwgdikgPT0gMCkKKyNkZWZpbmUgYXRv
bWljX2luY19yZXR1cm4odikgICAgKGF0b21pY19hZGRfcmV0dXJuKDEsIHYpKQorI2RlZmlu
ZSBhdG9taWNfZGVjX3JldHVybih2KSAgICAoYXRvbWljX3N1Yl9yZXR1cm4oMSwgdikpCisK
KyNkZWZpbmUgYXRvbWljX2FkZF9uZWdhdGl2ZShpLHYpIChhdG9taWNfYWRkX3JldHVybihp
LCB2KSA8IDApCisKK3N0YXRpYyBpbmxpbmUgYXRvbWljX3QgYXRvbWljX2NvbXBhcmVhbmRz
d2FwKGF0b21pY190IG9sZCwgYXRvbWljX3QgbmV3LCBhdG9taWNfdCAqdikKK3sKKyAgICAg
ICAgYXRvbWljX3QgcmM7CisgICAgICAgIHJjID0gYXRvbWljX2NtcHhjaGcoIChhdG9taWNf
dCAqKXYsIG9sZCwgbmV3KTsKKyAgICAgICAgcmV0dXJuIHJjOworfQorI2VuZGlmIC8qIV9f
QVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIV9fQVJNX0FUT01JQ19IX18gKi8KZGlmZiAtciBl
NzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9iaXRvcHMuaAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20t
YXJtL2JpdG9wcy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsx
LDE5MyBAQAorI2lmbmRlZiBfX0FSTV9CSVRPUFNfSF9fCisjZGVmaW5lIF9fQVJNX0JJVE9Q
U19IX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVt
Lmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWlj
X3NldF9iaXQodW5zaWduZWQgaW50IGJpdCwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkK
K3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8
PCAoYml0ICYgMzEpOworCisJcCArPSBiaXQgPj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZs
YWdzKTsKKwkqcCB8PSBtYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKwor
c3RhdGljIGlubGluZSB2b2lkIGF0b21pY19jbGVhcl9iaXQodW5zaWduZWQgaW50IGJpdCwg
dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor
CXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCAoYml0ICYgMzEpOworCisJcCArPSBiaXQg
Pj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkqcCAmPSB+bWFzazsKKwlsb2Nh
bF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhdG9taWNf
Y2hhbmdlX2JpdCh1bnNpZ25lZCBpbnQgYml0LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpw
KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBtYXNrID0gMVVM
IDw8IChiaXQgJiAzMSk7CisKKwlwICs9IGJpdCA+PiA1OworCisJbG9jYWxfaXJxX3NhdmUo
ZmxhZ3MpOworCSpwIF49IG1hc2s7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworfQor
CitzdGF0aWMgaW5saW5lIGludCBhdG9taWNfdGVzdF9hbmRfc2V0X2JpdCh1bnNpZ25lZCBp
bnQgYml0LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcg
ZmxhZ3M7CisJdW5zaWduZWQgaW50IHJlczsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwg
PDwgKGJpdCAmIDMxKTsKKworCXAgKz0gYml0ID4+IDU7CisKKwlsb2NhbF9pcnFfc2F2ZShm
bGFncyk7CisJcmVzID0gKnA7CisJKnAgPSByZXMgfCBtYXNrOworCWxvY2FsX2lycV9yZXN0
b3JlKGZsYWdzKTsKKworCXJldHVybiByZXMgJiBtYXNrOworfQorCitzdGF0aWMgaW5saW5l
IGludCBhdG9taWNfdGVzdF9hbmRfY2xlYXJfYml0KHVuc2lnbmVkIGludCBiaXQsIHZvbGF0
aWxlIHVuc2lnbmVkIGxvbmcgKnApCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1bnNp
Z25lZCBpbnQgcmVzOworCXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCAoYml0ICYgMzEp
OworCisJcCArPSBiaXQgPj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwlyZXMg
PSAqcDsKKwkqcCA9IHJlcyAmIH5tYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsK
KworCXJldHVybiByZXMgJiBtYXNrOworfQorCitzdGF0aWMgaW5saW5lIGludCBhdG9taWNf
dGVzdF9hbmRfY2hhbmdlX2JpdCh1bnNpZ25lZCBpbnQgYml0LCB2b2xhdGlsZSB1bnNpZ25l
ZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IHJl
czsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwgPDwgKGJpdCAmIDMxKTsKKworCXAgKz0g
Yml0ID4+IDU7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJcmVzID0gKnA7CisJKnAg
PSByZXMgXiBtYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKworCXJldHVybiBy
ZXMgJiBtYXNrOworfQorCisvKgorICogTm93IHRoZSBub24tYXRvbWljIHZhcmlhbnRzLiAg
V2UgbGV0IHRoZSBjb21waWxlciBoYW5kbGUgYWxsCisgKiBvcHRpbWlzYXRpb25zIGZvciB0
aGVzZS4gIFRoZXNlIGFyZSBhbGwgX25hdGl2ZV8gZW5kaWFuLgorICovCitzdGF0aWMgaW5s
aW5lIHZvaWQgc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKnApCit7CisJdm9sYXRp
bGUgdW5zaWduZWQgbG9uZyAqbSA9ICh1bnNpZ25lZCBsb25nICopcDsKKworCW1bbnIgPj4g
NV0gfD0gKDFVTCA8PCAobnIgJiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2xl
YXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqcCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25l
ZCBsb25nICptID0gKHVuc2lnbmVkIGxvbmcgKilwOworCisJbVtuciA+PiA1XSAmPSB+KDFV
TCA8PCAobnIgJiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2hhbmdlX2JpdChp
bnQgbnIsIHZvbGF0aWxlIHZvaWQgKnApCit7CisJdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAq
bSA9ICh1bnNpZ25lZCBsb25nICopcDsKKworCW1bbnIgPj4gNV0gXj0gKDFVTCA8PCAobnIg
JiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIGludCB0ZXN0X2FuZF9zZXRfYml0KGludCBu
ciwgdm9sYXRpbGUgdm9pZCAqcCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICptID0g
KHVuc2lnbmVkIGxvbmcgKilwOworCXVuc2lnbmVkIGxvbmcgb2xkdmFsLCBtYXNrID0gMVVM
IDw8IChuciAmIDMxKTsKKworCW0gKz0gbnIgPj4gNTsKKworCW9sZHZhbCA9ICptOworCSpt
ID0gb2xkdmFsIHwgbWFzazsKKwlyZXR1cm4gb2xkdmFsICYgbWFzazsKK30KKworc3RhdGlj
IGlubGluZSBpbnQgdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAq
cCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICptID0gKHVuc2lnbmVkIGxvbmcgKilw
OworCXVuc2lnbmVkIGxvbmcgb2xkdmFsLCBtYXNrID0gMVVMIDw8IChuciAmIDMxKTsKKwor
CW0gKz0gbnIgPj4gNTsKKworCW9sZHZhbCA9ICptOworCSptID0gb2xkdmFsICYgfm1hc2s7
CisJcmV0dXJuIG9sZHZhbCAmIG1hc2s7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRlc3Rf
YW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICpwKQoreworCXZvbGF0aWxl
IHVuc2lnbmVkIGxvbmcgKm0gPSAodW5zaWduZWQgbG9uZyAqKXA7CisJdW5zaWduZWQgbG9u
ZyBvbGR2YWwsIG1hc2sgPSAxVUwgPDwgKG5yICYgMzEpOworCisJbSArPSBuciA+PiA1Owor
CisJb2xkdmFsID0gKm07CisJKm0gPSBvbGR2YWwgXiBtYXNrOworCXJldHVybiBvbGR2YWwg
JiBtYXNrOworfQorCisvKgorICogVGhpcyByb3V0aW5lIGRvZXNuJ3QgbmVlZCB0byBiZSBh
dG9taWMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHRlc3RfYml0KGludCBuciwgY29uc3Qg
dm9sYXRpbGUgdm9pZCAqcCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICptID0gKHVu
c2lnbmVkIGxvbmcgKilwOworCisJcmV0dXJuIChtW25yID4+IDVdID4+IChuciAmIDMxKSkg
JiAxVUw7Cit9CisKK2V4dGVybiBpbnQgX2ZpbmRfZmlyc3RfemVyb19iaXQoY29uc3Qgdm9p
ZCAqcCwgaW50IHN6KTsKK2V4dGVybiBpbnQgX2ZpbmRfbmV4dF96ZXJvX2JpdChjb25zdCB2
b2lkICpwLCBpbnQgc3osIGludCBvZmZzZXQpOworZXh0ZXJuIGludCBfZmluZF9maXJzdF9i
aXQoY29uc3Qgdm9pZCAqcCwgaW50IHN6KTsKK2V4dGVybiBpbnQgX2ZpbmRfbmV4dF9iaXQo
Y29uc3Qgdm9pZCAqcCwgaW50IHN6LCBpbnQgb2Zmc2V0KTsKKworI2RlZmluZSBmaW5kX2Zp
cnN0X3plcm9fYml0KHAsc3opCV9maW5kX2ZpcnN0X3plcm9fYml0KHAsc3opCisjZGVmaW5l
IGZpbmRfbmV4dF96ZXJvX2JpdChwLHN6LG9mZikJX2ZpbmRfbmV4dF96ZXJvX2JpdChwLHN6
LG9mZikKKyNkZWZpbmUgZmluZF9maXJzdF9iaXQocCxzeikJCV9maW5kX2ZpcnN0X2JpdChw
LHN6KQorI2RlZmluZSBmaW5kX25leHRfYml0KHAsc3osb2ZmKQkJX2ZpbmRfbmV4dF9iaXQo
cCxzeixvZmYpCisjZGVmaW5lIGZpbmRfZmlyc3Rfc2V0X2JpdCh3b3JkKQkoZmZzKHdvcmQp
LTEpCisjZGVmaW5lIFdPUkRfQklUT0ZGX1RPX0xFKHgpCQkoKHgpKQorCisjZGVmaW5lIF9f
dGVzdF9hbmRfc2V0X2JpdChuciwgYWRkcikJdGVzdF9hbmRfc2V0X2JpdChuciwgYWRkcikK
Kworc3RhdGljIF9faW5saW5lX18gaW50IGdlbmVyaWNfZmxzKGludCB4KTsKKyNkZWZpbmUg
ZmxzKHgpIFwKKwkoIF9fYnVpbHRpbl9jb25zdGFudF9wKHgpID8gZ2VuZXJpY19mbHMoeCkg
OiBcCisJICAoeyBpbnQgX19yOyBhc20oImNselx0JTAsICUxIiA6ICI9ciIoX19yKSA6ICJy
Iih4KSA6ICJjYyIpOyAzMi1fX3I7IH0pICkKKyNkZWZpbmUgZmZzKHgpCQkoeyB1bnNpZ25l
ZCBsb25nIF9fdCA9ICh4KTsgZmxzKF9fdCAmIC1fX3QpOyB9KQorI2RlZmluZSBfX2Zmcyh4
KQkoZmZzKHgpIC0gMSkKKyNkZWZpbmUgZmZ6KHgpCQlfX2Zmcyggfih4KSApCisvKgorICog
aHdlaWdodE46IHJldHVybnMgdGhlIGhhbW1pbmcgd2VpZ2h0IChpLmUuIHRoZSBudW1iZXIK
KyAqIG9mIGJpdHMgc2V0KSBvZiBhIE4tYml0IHdvcmQKKyAqLworCisjZGVmaW5lIGh3ZWln
aHQzMih4KSBnZW5lcmljX2h3ZWlnaHQzMih4KQorI2RlZmluZSBod2VpZ2h0MTYoeCkgZ2Vu
ZXJpY19od2VpZ2h0MTYoeCkKKyNkZWZpbmUgaHdlaWdodDgoeCkgZ2VuZXJpY19od2VpZ2h0
OCh4KQorI2VuZGlmIC8qIV9fQVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIV9fQVJNX0JJVE9Q
U19IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9idWcu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL2J1Zy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDMyIEBACisjaWZuZGVmIF9fQVJNX0JVR19IX18KKyNkZWZpbmUgX19B
Uk1fQlVHX0hfXworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBCVUcoKQkJCQkJ
CQlcCisJZG8gewkJCQkJCQlcCisJCXByaW50aygiQlVHIGF0ICVzOiVkXG4iLCBfX0ZJTEVf
XywgX19MSU5FX18pOwlcCisJCXdoaWxlKDEpOwkJCQkJXAorCX0gd2hpbGUgKCAwICkKKwor
I2RlZmluZSBQQU5JQyhtc2cpCQkJCQkJXAorCWRvIHsJCQkJCQkJXAorCQlwcmludGsoIlBh
bmljIGF0ICVzOiVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisJCXdoaWxlKDEpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl9d2hpbGUgKDApCisKKyNkZWZp
bmUgV0FSTigpCQkJCQkJCVwKKwlkbyB7CQkJCQkJCVwKKwkJcHJpbnRrKCJXQVJOSU5HIGF0
ICVzOiVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOwlcCisJCXdoaWxlKDEpOwkJCQkJXAor
CX0gd2hpbGUgKCAwICkKKworCisjZGVmaW5lIE5PVF9ZRVQoKQkJCQkJCVwKKwlkbyB7CQkJ
CQkJCVwKKwkJcHJpbnRrKCJOT1QgWUVUICVzOiVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18p
OwlcCisJfSB3aGlsZSAoMCkKKwordm9pZCBkdW1wX2V4ZWN1dGlvbl9zdGF0ZSh2b2lkKTsK
KyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLworI2VuZGlmIC8qIV9fQVJNX0JVR19IX18qLwor
CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vYnl0ZW9yZGVyLmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9ieXRlb3JkZXIuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIF9fQVJNX0JZVEVPUkRFUl9IX18KKyNk
ZWZpbmUgX19BUk1fQllURU9SREVSX0hfXworCisjZGVmaW5lIF9fQllURU9SREVSX0hBU19V
NjRfXworCisjaW5jbHVkZSA8eGVuL2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmg+CisKKwor
I2VuZGlmIC8qIF9fQVJNX0JZVEVPUkRFUl9IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEg
eGVuL2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vY2FjaGUuaAlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMSBAQAorI2lmbmRl
ZiBfX0FSTV9DQUNIRV9IX18KKyNkZWZpbmUgX19BUk1fQ0FDSEVfSF9fCisKKyNpZm5kZWYg
TDFfQ0FDSEVfQllURVMKKyNkZWZpbmUgTDFfQ0FDSEVfQllURVMgICAgICAgICAgMzIKKyNl
bmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBfX3JlYWRfbW9zdGx5IF9f
YXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS5yZWFkX21vc3RseSIpKSkKKyNlbmRp
ZiAvKiFfX0FTU0VNQkxZX18gKi8KKyNlbmRpZiAvKiFfX0FSTV9DQUNIRV9IX18gKi8KZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaAotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVk
ZS9hc20tYXJtL2NvbmZpZy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAt
MCwwICsxLDYxIEBACisjaWZuZGVmIF9fQVJNX0NPTkZJR19IX18KKyNkZWZpbmUgX19BUk1f
Q09ORklHX0hfXworCisjaW5jbHVkZSA8YXNtL2FyY2gvY29uZmlnLmg+CisKKyNpZm5kZWYg
TUFYX0hWTV9WQ1BVUworI2RlZmluZSBNQVhfSFZNX1ZDUFVTCQkxCisjZW5kaWYKKworI2Rl
ZmluZSBNQVhfVklSVF9DUFVTCQlYRU5fTEVHQUNZX01BWF9WQ1BVUworI2RlZmluZSBDT01Q
QVRfTEVHQUNZX01BWF9WQ1BVUyBYRU5fTEVHQUNZX01BWF9WQ1BVUworCisjaWZuZGVmIE1B
WF9QSFlTX0NQVVMKKyNkZWZpbmUgTUFYX1BIWVNfQ1BVUwkJMQorI2VuZGlmCisKKyNkZWZp
bmUgTlJfQ1BVUwkJCU1BWF9QSFlTX0NQVVMKKworI2RlZmluZSBFTEZTSVpFCQkJMzIKKwor
I2lmbmRlZiBYRU5fUEhZU19TSVpFCisjZGVmaW5lIFhFTl9QSFlTX1NJWkUJCSgweEYwMDAw
MCkKKyNlbmRpZgorCisKKyNpZiAoTUFYX1BIWVNfQ1BVUyA+IDEpCisjZGVmaW5lIENPTkZJ
R19TTVAJCTEKKyNkZWZpbmUgU01QCQkJMQorI2VuZGlmCisKKyNkZWZpbmUgU1RBQ0tfT1JE
RVIJCTAKKyNkZWZpbmUgU1RBQ0tfU0laRQkJKFBBR0VfU0laRSA8PCBTVEFDS19PUkRFUikK
KworI2lmbmRlZiBOREVCVUcKKyMgZGVmaW5lIE1FTU9SWV9HVUFSRAorI2VuZGlmCisKKwor
I2RlZmluZSBzdXBlcnZpc29yX21vZGVfa2VybmVsCSgwKQorCisjZGVmaW5lIEhZUEVSVklT
T1JfVklSVF9TVEFSVAkoMHhGQzAwMDAwMCkKKyNkZWZpbmUgWEVOX1ZJUlRfU1RBUlQJCSgw
eEZGMDAwMDAwKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjZGVmaW5lIE9QVF9DT05T
T0xFX1NUUgkJImNvbTEiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBDUFBfQVNN
TElOS0FHRSBleHRlcm4gIkMiCisjZWxzZQorI2RlZmluZSBDUFBfQVNNTElOS0FHRQorI2Vu
ZGlmCisKKyNpZm5kZWYgYXNtbGlua2FnZQorI2RlZmluZSBhc21saW5rYWdlIENQUF9BU01M
SU5LQUdFCisjZW5kaWYKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisjZW5kaWYgLyog
IV9fQVJNX0NPTkZJR19IX18qLworCisKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5j
bHVkZS9hc20tYXJtL2NwdS1kb21haW4uaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2NwdS1kb21haW4u
aAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwzOSBAQAorI2lm
bmRlZiBfX0FSTV9DUFVfRE9NQUlOX0hfXworI2RlZmluZSBfX0FSTV9DUFVfRE9NQUlOX0hf
XworCisvKgorICogRG9tYWluIElECisgKi8KKyNkZWZpbmUgRE9NQUlOX1NWQwkJMAorI2Rl
ZmluZSBET01BSU5fSU8JCTIKKyNkZWZpbmUgRE9NQUlOX1VTUgkJMQorI2RlZmluZSBET01B
SU5fSFlQCQkxNQorCisvKgorICogRG9tYWluIHR5cGVzCisgKi8KKyNkZWZpbmUgRE9NQUlO
X05PQUNDRVNTCQkwCisjZGVmaW5lIERPTUFJTl9DTElFTlQJCTEKKyNkZWZpbmUgRE9NQUlO
X01BTkFHRVIJCTMKKworI2RlZmluZSBET01BSU5fVkFMVUUoZG9tLHR5cGUpCSgodHlwZSkg
PDwgKDIgKiAoZG9tKSkpCisKKyNkZWZpbmUgREFDUl9TVEFUX0hZUAkJCQkJXAorCShET01B
SU5fVkFMVUUoRE9NQUlOX0hZUCwgRE9NQUlOX0NMSUVOVCkgfAlcCisJIERPTUFJTl9WQUxV
RShET01BSU5fU1ZDLCBET01BSU5fQ0xJRU5UKSB8CVwKKwkgRE9NQUlOX1ZBTFVFKERPTUFJ
Tl9JTywgIERPTUFJTl9DTElFTlQpIHwJXAorCSBET01BSU5fVkFMVUUoRE9NQUlOX1VTUiwg
RE9NQUlOX0NMSUVOVCkpCisKKyNkZWZpbmUgREFDUl9TVEFUX1NWQwkJCQkJXAorCShET01B
SU5fVkFMVUUoRE9NQUlOX0hZUCwgRE9NQUlOX0NMSUVOVCkgfAlcCisJIERPTUFJTl9WQUxV
RShET01BSU5fU1ZDLCBET01BSU5fTUFOQUdFUikgfAlcCisJIERPTUFJTl9WQUxVRShET01B
SU5fSU8sICBET01BSU5fTUFOQUdFUikgfAlcCisJIERPTUFJTl9WQUxVRShET01BSU5fVVNS
LCBET01BSU5fQ0xJRU5UKSkJXAorCisjZGVmaW5lIERBQ1JfU1RBVF9VU1IJCQkJCVwKKwko
RE9NQUlOX1ZBTFVFKERPTUFJTl9IWVAsIERPTUFJTl9DTElFTlQpIHwJXAorCSBET01BSU5f
VkFMVUUoRE9NQUlOX1NWQywgRE9NQUlOX0NMSUVOVCkgfAlcCisJIERPTUFJTl9WQUxVRShE
T01BSU5fSU8sICBET01BSU5fQ0xJRU5UKSB8CVwKKwkgRE9NQUlOX1ZBTFVFKERPTUFJTl9V
U1IsIERPTUFJTl9DTElFTlQpKQorCisjZW5kaWYgLyogX19BUk1fQ1BVX0RPTUFJTl9IX18g
Ki8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgY3VycmVudC5oCisgKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCUNoYW5KdSBQYXJrIDxiZWFz
dHdvcmxkQHNhbXN1bmcuY29tPgorICoJSmFlTWluIFJ5dSAgPGptNzcucnl1QHNhbXN1bmcu
Y29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0
b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FSTV9DVVJSRU5UX0hf
XworI2RlZmluZSBfX0FSTV9DVVJSRU5UX0hfXworCisjaW5jbHVkZSA8cHVibGljL3hlbi5o
PgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1
Y3QgdmNwdTsKKworc3RydWN0IGNwdV9pbmZvIHsKKwlzdHJ1Y3QgdmNwdQkqdmNwdTsKKwl1
bnNpZ25lZCBsb25nCXZzcHNyOworCXVuc2lnbmVkIGxvbmcJdnNwOworCXVuc2lnbmVkIGxv
bmcJdmxyOworCXVuc2lnbmVkIGxvbmcJdmRhY3I7CisJc3RydWN0IGNwdV91c2VyX3JlZ3Mg
Z3Vlc3RfY3B1X3VzZXJfcmVnczsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNwdV9p
bmZvICogZ2V0X2NwdV9pbmZvKHZvaWQpCit7CisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBz
cCBhc20oInIxMyIpOworCXJldHVybiAoc3RydWN0IGNwdV9pbmZvICopICggc3AgJiB+KFNU
QUNLX1NJWkUgLTEpICApOyAKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdmNwdSAqZ2V0
X2N1cnJlbnQodm9pZCkKK3sKKyAgICAgICAgcmV0dXJuIGdldF9jcHVfaW5mbygpLT52Y3B1
OworfQorCisjZGVmaW5lIGN1cnJlbnQgZ2V0X2N1cnJlbnQoKQorCitzdGF0aWMgaW5saW5l
IHZvaWQgc2V0X2N1cnJlbnQoc3RydWN0IHZjcHUgKnYpCit7ICAgCisJZ2V0X2NwdV9pbmZv
KCktPnZjcHUgPSB2OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2N1cnJlbnRfdmNw
dShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICAgICAgc3RydWN0IGNwdV9pbmZvICpjaTsKKwor
ICAgICAgICBjaSA9IGdldF9jcHVfaW5mbygpOworICAgICAgICBjaS0+dmNwdSA9IHY7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaW5mb19pbml0KHN0cnVjdCBjcHVfaW5mbyAq
Y3B1X2luZm8pCit7CisgICAgICAgIGNwdV9pbmZvLT52Y3B1ID0gTlVMTDsKK30KKworI2Rl
ZmluZSBndWVzdF9jcHVfdXNlcl9yZWdzKCkJKCYoZ2V0X2NwdV9pbmZvKCktPmd1ZXN0X2Nw
dV91c2VyX3JlZ3MpKQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX0FSTV9DVVJSRU5UX0hfXyAq
LwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2RlYnVnZ2VyLmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9kZWJ1Z2dlci5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiAr
MDkwMApAQCAtMCwwICsxLDI0IEBACisjaWZuZGVmIF9fQVJNX0RFQlVHR0VSX0hfXworI2Rl
ZmluZSBfX0FSTV9ERUJVR0dFUl9IX18KKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorCisj
aWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBkZWJ1Z2dlcl90cmFwX2ltbWVkaWF0ZSgp
CXs7fQorCitzdGF0aWMgaW5saW5lIGludCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKHVuc2lnbmVk
IGludCB2ZWN0b3IsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQoreworCXByaW50aygi
Tm90IGltcGxlbWVudGVkIHlldFxuIik7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworCit2
b2lkIHNob3dfc3RhY2soc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwordm9pZCBzaG93
X3N0YWNrX292ZXJmbG93KHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgZXNwKTsK
K3ZvaWQgc2hvd19yZWdpc3RlcnMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwordm9p
ZCBzaG93X2V4ZWN1dGlvbl9zdGF0ZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7Cisj
ZW5kaWYgLyohX19BU1NFTUJMWV9fKi8KKworI2VuZGlmIC8qIV9fQVJNX0RFQlVHR0VSX0hf
XyAqLworCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vZGVsYXku
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL2RlbGF5LmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0FSTV9ERUxBWV9IX18KKyNkZWZpbmUg
X19BUk1fREVMQVlfSF9fCisKKyNkZWZpbmUgdWRlbGF5KG4pIAlfdWRlbGF5KG4pCisjZW5k
aWYKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2RpdjY0LmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9kaXY2NC5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDQzIEBACisjaWZuZGVmIF9fQVJNX0RJVjY0X18KKyNkZWZpbmUgX19B
Uk1fRElWNjRfXworCisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorCisjaWZuZGVmIF9fQVNT
RU1CTFlfXworLyoKKyAqIFRoZSBzZW1hbnRpY3Mgb2YgZG9fZGl2KCkgYXJlOgorICoKKyAq
IHVpbnQzMl90IGRvX2Rpdih1aW50NjRfdCAqbiwgdWludDMyX3QgYmFzZSkKKyAqIHsKKyAq
IAl1aW50MzJfdCByZW1haW5kZXIgPSAqbiAlIGJhc2U7CisgKiAJKm4gPSAqbiAvIGJhc2U7
CisgKiAJcmV0dXJuIHJlbWFpbmRlcjsKKyAqIH0KKyAqCisgKiBJbiBvdGhlciB3b3Jkcywg
YSA2NC1iaXQgZGl2aWRlbmQgd2l0aCBhIDMyLWJpdCBkaXZpc29yIHByb2R1Y2luZworICog
YSA2NC1iaXQgcmVzdWx0IGFuZCBhIDMyLWJpdCByZW1haW5kZXIuICBUbyBhY2NvbXBsaXNo
IHRoaXMgb3B0aW1hbGx5CisgKiB3ZSBjYWxsIGEgc3BlY2lhbCBfX2RvX2RpdjY0IGhlbHBl
ciB3aXRoIGNvbXBsZXRlbHkgbm9uIHN0YW5kYXJkCisgKiBjYWxsaW5nIGNvbnZlbnRpb24g
Zm9yIGFyZ3VtZW50cyBhbmQgcmVzdWx0cyAoYmV3YXJlKS4KKyAqLworI2RlZmluZSBfX3hs
ICJyMCIKKyNkZWZpbmUgX194aCAicjEiCisKKyNkZWZpbmUgZG9fZGl2KG4sYmFzZSkJCQkJ
CQlcCisoewkJCQkJCQkJXAorCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBfX2Jhc2UgICAgICBh
c20oInI0IikgPSBiYXNlOwlcCisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBsb25nIF9fbiAg
IGFzbSgicjAiKSA9IG47CVwKKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMg
YXNtKCJyMiIpOwkJXAorCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBfX3JlbSAgICAgICBhc20o
X194aCk7CQlcCisJYXNtKAlfX2FzbWVxKCIlMCIsIF9feGgpCQkJCVwKKwkJX19hc21lcSgi
JTEiLCAicjIiKQkJCQlcCisJCV9fYXNtZXEoIiUyIiwgInIwIikJCQkJXAorCQlfX2FzbWVx
KCIlMyIsICJyNCIpCQkJCVwKKwkJImJsCV9fZG9fZGl2NjQiCQkJCVwKKwkJOiAiPXIiIChf
X3JlbSksICI9ciIgKF9fcmVzKQkJCVwKKwkJOiAiciIgKF9fbiksICJyIiAoX19iYXNlKQkJ
CVwKKwkJOiAiaXAiLCAibHIiLCAiY2MiKTsJCQkJXAorCW4gPSBfX3JlczsJCQkJCQlcCisJ
X19yZW07CQkJCQkJCVwKK30pCisjZW5kaWYgLyohX19BU1NFTUJMWV9fKi8KKyNlbmRpZiAv
KiFfX0FSTV9ESVY2NF9IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUv
YXNtLWFybS9kb21haW4uaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCUZyaSBGZWIgMDMg
MTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDc5IEBACisjaWZuZGVmIF9fQVJNX0RP
TUFJTl9IX18KKyNkZWZpbmUgX19BUk1fRE9NQUlOX0hfXworI2luY2x1ZGUgPHhlbi9pbml0
Lmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+Cisj
aW5jbHVkZSA8eGVuL3Rhc2tsZXQuaD4KKyNpbmNsdWRlIDxhc20vbnVtYS5oPgorI2luY2x1
ZGUgPGFzbS9pb21tdS5oPgorI2luY2x1ZGUgPHB1YmxpYy9hcmNoLWFybS5oPgorCisjaWYg
MAorI2RlZmluZSBNQVBIQVNIX0VOVFJJRVMJCQk4CisjZGVmaW5lIE1BUEhBU0hfSEFTSEZO
KHBmbikJCSgocGZuKSAmIChNQVBIQVNIX0VOVFJJRVMtMSkpCisjZGVmaW5lIE1BUEhBU0hF
TlRfTk9USU5VU0UJCSgodTE2KX4wVSkKKworc3RydWN0IHZjcHVfbWFwaGFzaCB7CisgICAg
c3RydWN0IHZjcHVfbWFwaGFzaF9lbnRyeSB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgcGZu
OworICAgICAgICB1aW50MTZfdCAgICAgIGlkeDsKKyAgICAgICAgdWludDE2X3QgICAgICBy
ZWZjbnQ7CisgICAgfSBoYXNoW01BUEhBU0hfRU5UUklFU107Cit9X19jYWNoZWxpbmVfYWxp
Z25lZDsKKworCisjZGVmaW5lIE1BUENBQ0hFX09SREVSICAgOAorI2RlZmluZSBNQVBDQUNI
RV9FTlRSSUVTICgxIDw8IE1BUENBQ0hFX09SREVSKQorCitzdHJ1Y3QgbWFwY2FjaGUgewor
ICAgIC8qIFRoZSBQVEVzIHRoYXQgcHJvdmlkZSB0aGUgbWFwcGluZ3MsIGFuZCBhIGN1cnNv
ciBpbnRvIHRoZSBhcnJheS4gKi8KKyAgICBsMmVfdAkqdGFibGU7CisgICAgdW5zaWduZWQg
aW50IGN1cnNvcjsKKworICAgIC8qIFByb3RlY3RzIG1hcF9kb21haW5fcGFnZSgpLiAqLwor
ICAgIHNwaW5sb2NrX3QgbG9jazsKKworICAgIC8qIFdoaWNoIG1hcHBpbmdzIGFyZSBpbiB1
c2UsIGFuZCB3aGljaCBhcmUgZ2FyYmFnZSB0byByZWFwIG5leHQgZXBvY2g/ICovCisgICAg
dW5zaWduZWQgbG9uZyBpbnVzZVtCSVRTX1RPX0xPTkdTKE1BUENBQ0hFX0VOVFJJRVMpXTsK
KyAgICB1bnNpZ25lZCBsb25nIGdhcmJhZ2VbQklUU19UT19MT05HUyhNQVBDQUNIRV9FTlRS
SUVTKV07CisKKyAgICAvKiBMb2NrLWZyZWUgcGVyLVZDUFUgaGFzaCBvZiByZWNlbnRseS11
c2VkIG1hcHBpbmdzLiAqLworICAgIHN0cnVjdCB2Y3B1X21hcGhhc2ggdmNwdV9tYXBoYXNo
W01BWF9WSVJUX0NQVVNdOworfV9fY2FjaGVsaW5lX2FsaWduZWQ7CisjZW5kaWYKK3N0cnVj
dCBhcmNoX2RvbWFpbgoreworI2lmIDAKKyAgICAvKiBJL08tcG9ydCBhZG1pbi1zcGVjaWZp
ZWQgYWNjZXNzIGNhcGFiaWxpdGllcy4gKi8KKyAgICBzdHJ1Y3QgcmFuZ2VzZXQJKmlvcG9y
dF9jYXBzOworCisgICAgaW50ICppcnFfcGlycTsKKyAgICBpbnQgKnBpcnFfaXJxOworCisg
ICAgdW5zaWduZWQgbG9uZyAqcGlycV9lb2lfbWFwOworICAgIHVuc2lnbmVkIGxvbmcgcGly
cV9lb2lfbWFwX21mbjsKKyNlbmRpZgorICAgIHN0cnVjdCBwYWdlX2xpc3RfaGVhZCByZWxt
ZW1fbGlzdDsKK307CisKK3N0cnVjdCBhcmNoX3ZjcHUKK3sKKwlzdHJ1Y3QgdmNwdV9ndWVz
dF9jb250ZXh0IGN0eDsKK30gX19jYWNoZWxpbmVfYWxpZ25lZDsKKworLy8jZGVmaW5lIFZD
UFVfUkVHKHYsIHJlZykJdi0+YXJjaC5jdHgucmVnCisKKyNkZWZpbmUgcmV0dXJuX3JlZyh2
KQkJKCh2KS0+YXJjaC5jdHgucjApCisKK3ZvaWQgdmNwdV9zaG93X2V4ZWN1dGlvbl9zdGF0
ZShzdHJ1Y3QgdmNwdSAqdik7Cit2b2lkIHN0YXJ0dXBfY3B1X2lkbGVfbG9vcCh2b2lkKTsK
KworZXh0ZXJuIHN0cnVjdCB2Y3B1ICppZGxlX3ZjcHVbXTsKKworc3RhdGljIGlubGluZSBz
dHJ1Y3QgdmNwdSAqZ2V0X2lkbGVfdmNwdSh1bnNpZ25lZCBpbnQgY3B1KQoreworICAgICAg
ICByZXR1cm4gaWRsZV92Y3B1W2NwdV07Cit9CisKKyNlbmRpZiAKKwpkaWZmIC1yIGU3MDE0
NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2VsZi5oCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZWxm
LmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBlbGYuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKiAgICAgICAgICBKYWVtaW4gUnl1IDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAg
MDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmbmRlZiBfX0FSTV9FTEZfSF9fCisjZGVmaW5l
IF9fQVJNX0VMRl9IX18KKwordHlwZWRlZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGxvbmcJY3I7
Cit9IGNyYXNoX3hlbl9jb3JlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBs
b25nCXIwOworCXVuc2lnbmVkIGxvbmcJcjE7CisJdW5zaWduZWQgbG9uZwlyMjsKKwl1bnNp
Z25lZCBsb25nCXIzOworCXVuc2lnbmVkIGxvbmcJcjQ7CisJdW5zaWduZWQgbG9uZwlyNTsK
Kwl1bnNpZ25lZCBsb25nCXI2OworCXVuc2lnbmVkIGxvbmcJcjc7CisJdW5zaWduZWQgbG9u
ZwlyODsKKwl1bnNpZ25lZCBsb25nCXI5OworCXVuc2lnbmVkIGxvbmcJcjEwOworCXVuc2ln
bmVkIGxvbmcJcjExOworCXVuc2lnbmVkIGxvbmcJcjEyOworCXVuc2lnbmVkIGxvbmcJcjEz
OworCXVuc2lnbmVkIGxvbmcJcjE0OworCXVuc2lnbmVkIGxvbmcJcjE1OworfSBFTEZfR3Jl
Z3NldDsKKworc3RhdGljIGlubGluZSB2b2lkIGVsZl9jb3JlX3NhdmVfcmVncyhFTEZfR3Jl
Z3NldCAqY29yZV9yZWdzLAorCQkJCSAgICAgIGNyYXNoX3hlbl9jb3JlX3QgKnhlbl9jb3Jl
X3JlZ3MpCit7Cit9CisKKyNlbmRpZgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNs
dWRlL2FzbS1hcm0vZXZlbnQuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2V2ZW50LmgJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzkgQEAKKyNpZm5kZWYgX19BUk1f
RVZFTlRfSF9fCisjZGVmaW5lIF9fQVJNX0VWRU5UX0hfXworCisjaW5jbHVkZSA8eGVuL3No
YXJlZC5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXwordm9pZCB2Y3B1X2tpY2soc3RydWN0
IHZjcHUgKnYpOwordm9pZCB2Y3B1X21hcmtfZXZlbnRzX3BlbmRpbmcoc3RydWN0IHZjcHUg
KnYpOworCitpbnQgaHZtX2xvY2FsX2V2ZW50c19uZWVkX2RlbGl2ZXJ5KHN0cnVjdCB2Y3B1
ICp2KTsKK3N0YXRpYyBpbmxpbmUgaW50IGxvY2FsX2V2ZW50c19uZWVkX2RlbGl2ZXJ5KHZv
aWQpCit7CisJc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OworCXJldHVybiAoKHZjcHVfaW5m
byh2LCBldnRjaG5fdXBjYWxsX3BlbmRpbmcpICYmIAorCQkhdmNwdV9pbmZvKHYsIGV2dGNo
bl91cGNhbGxfbWFzaykpKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgbG9jYWxfZXZlbnRf
ZGVsaXZlcnlfaXNfZW5hYmxlZCh2b2lkKQoreworCXJldHVybiAhdmNwdV9pbmZvKGN1cnJl
bnQsIGV2dGNobl91cGNhbGxfbWFzayk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2Nh
bF9ldmVudF9kZWxpdmVyeV9kaXNhYmxlKHZvaWQpCit7CisJdmNwdV9pbmZvKGN1cnJlbnQs
IGV2dGNobl91cGNhbGxfbWFzaykgPSAxOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbG9j
YWxfZXZlbnRfZGVsaXZlcnlfZW5hYmxlKHZvaWQpCit7CisJdmNwdV9pbmZvKGN1cnJlbnQs
IGV2dGNobl91cGNhbGxfbWFzaykgPSAwOworfQorCisvKiBObyBhcmNoIHNwZWNpZmljIHZp
cnEgZGVmaW5pdGlvbiBub3cuIERlZmF1bHQgdG8gZ2xvYmFsLiAqLworc3RhdGljIGlubGlu
ZSBpbnQgYXJjaF92aXJxX2lzX2dsb2JhbChpbnQgdmlycSkKK3sKKwlyZXR1cm4gMTsKK30K
KyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLworI2VuZGlmIC8qIV9fQVJNX0VWRU5UX0hfXyAq
LwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2ZsdXNodGxiLmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9mbHVzaHRsYi5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiAr
MDkwMApAQCAtMCwwICsxLDI1IEBACisjaWZuZGVmIF9fQVJNX0ZMVVNIVExCX0hfXworI2Rl
ZmluZSBfX0FSTV9GTFVTSFRMQl9IX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNp
bmNsdWRlIDx4ZW4vcGVyY3B1Lmg+CisjaW5jbHVkZSA8eGVuL3NtcC5oPgorCisjaWZuZGVm
IF9fQVNTRU1CTFlfXworI2RlZmluZSBsb2NhbF9mbHVzaF90bGIobWFzaykKKyNkZWZpbmUg
Zmx1c2hfdGxiX21hc2sobWFzaykJbG9jYWxfZmx1c2hfdGxiKCkKKworI2RlZmluZSB0bGJm
bHVzaF9maWx0ZXIobWFzayxwYWdlX3RpbWVzdGFtcCkJXAorZG8gewkJCQkJCVwKKwlwcmlu
dGsoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuXG4iKTsJXAorfSB3aGlsZSgwKQorCisjZGVmaW5l
IHRsYmZsdXNoX2N1cnJlbnRfdGltZSgpCXRsYmZsdXNoX2Nsb2NrCisKK0RFQ0xBUkVfUEVS
X0NQVSh1MzIsIHRsYl9jYXBzKTsKK0RFQ0xBUkVfUEVSX0NQVSh1MzIsIHRsYmZsdXNoX3Rp
bWUpOworCitleHRlcm4gdTMyIHRsYmZsdXNoX2Nsb2NrOworCisjZW5kaWYKKyNlbmRpZiAv
KiBfX0FSTV9UTEJfSF9fICovCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vZ3JhbnRfdGFibGUuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgJRnJp
IEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjIgQEAKKyNpZm5kZWYg
X19BU01fR1JBTlRfVEFCTEVfSF9fCisjZGVmaW5lIF9fQVNNX0dSQU5UX1RBQkxFX0hfXwor
CisjZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDQKKworLyoKKyAqIENhbGxlciBt
dXN0IG93biBjYWxsZXIncyBCSUdMT0NLLCBpcyByZXNwb25zaWJsZSBmb3IgZmx1c2hpbmcg
dGhlIFRMQiwgYW5kCisgKiBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhZ2UuCisg
Ki8KK2ludCBjcmVhdGVfZ3JhbnRfaG9zdF9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIHVuc2ln
bmVkIGxvbmcgZnJhbWUsCisJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVk
IGludCBjYWNoZV9mbGFncyk7CitpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcoCisg
ICAgdWludDY0X3QgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwgdWludDY0X3QgbmV3X2Fk
ZHIsIHVuc2lnbmVkIGludCBmbGFncyk7CisKKyNkZWZpbmUgZ250dGFiX2NyZWF0ZV9zaGFy
ZWRfcGFnZShkLCB0LCBpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHZp
cnRfdG9fcGFnZSgoY2hhciAqKSh0KS0+c2hhcmVkX3Jhd1tpXSksICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAoZCksIFhFTlNIQVJFX3dyaXRhYmxlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKCAwICkKKworI2Rl
ZmluZSBnbnR0YWJfY3JlYXRlX3N0YXR1c19wYWdlKGQsIHQsIGkpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHNoYXJl
X3hlbl9wYWdlX3dpdGhfZ3Vlc3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICB2aXJ0X3RvX3BhZ2UoKGNoYXIgKikodCktPnN0YXR1c1tp
XSksICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIChkKSwgWEVOU0hB
UkVfd3JpdGFibGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoIDAgKQorCisKKyNkZWZpbmUgZ250dGFiX3NoYXJlZF9tZm4oZCwgdCwg
aSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodmlydF90b19tYWRkcigodCktPnNo
YXJlZF9yYXdbaV0pID4+IFBBR0VfU0hJRlQpKQorCisjZGVmaW5lIGdudHRhYl9zaGFyZWRf
Z21mbihkLCB0LCBpKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAobWZuX3RvX2dtZm4o
ZCwgZ250dGFiX3NoYXJlZF9tZm4oZCwgdCwgaSkpKQorCisKKyNkZWZpbmUgZ250dGFiX3N0
YXR1c19tZm4odCwgaSkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodmlydF90
b19tYWRkcigodCktPnN0YXR1c1tpXSkgPj4gUEFHRV9TSElGVCkpCisKKyNkZWZpbmUgZ250
dGFiX3N0YXR1c19nbWZuKGQsIHQsIGkpICAgICAgICAgICAgICAgICAgICAgXAorICAgICht
Zm5fdG9fZ21mbihkLCBnbnR0YWJfc3RhdHVzX21mbih0LCBpKSkpCisKKyNkZWZpbmUgZ250
dGFiX21hcmtfZGlydHkoZCwgZikgKCh2b2lkKWYpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBn
bnR0YWJfY2xlYXJfZmxhZyh1bnNpZ25lZCBsb25nIG5yLCB1aW50MTZfdCAqYWRkcikKK3sK
KyAgICBjbGVhcl9iaXQobnIsICh1bnNpZ25lZCBsb25nICopYWRkcik7Cit9CisKKy8qIEZv
cmVpZ24gbWFwcGluZ3Mgb2YgSEhWTS1ndWVzdCBwYWdlcyBkbyBub3QgbW9kaWZ5IHRoZSB0
eXBlIGNvdW50LiAqLworI2RlZmluZSBnbnR0YWJfaG9zdF9tYXBwaW5nX2dldF9wYWdlX3R5
cGUob3AsIGxkLCByZCkgICBcCisgICAgKCEoKG9wKS0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9u
bHkpICYmICAgICAgICAgICAgICAgIFwKKyAgICAgKCgobGQpID09IChyZCkpIHx8ICFwYWdp
bmdfbW9kZV9leHRlcm5hbChyZCkpKQorCisvKiBEb25lIGltcGxpY2l0bHkgd2hlbiBwYWdl
IHRhYmxlcyBhcmUgZGVzdHJveWVkLiAqLworI2RlZmluZSBnbnR0YWJfcmVsZWFzZV9ob3N0
X21hcHBpbmdzKGRvbWFpbikgKCBwYWdpbmdfbW9kZV9leHRlcm5hbChkb21haW4pICkKKwor
c3RhdGljIGlubGluZSBpbnQgcmVwbGFjZV9ncmFudF9zdXBwb3J0ZWQodm9pZCkKK3sKKyAg
ICByZXR1cm4gMTsKK30KKyNlbmRpZiAvKiBfX0FTTV9HUkFOVF9UQUJMRV9IX18gKi8KZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF9hY2Nlc3MuaAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4v
aW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAx
MiArMDkwMApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqLworCisjaWZuZGVmIF9fQVJNX0dV
RVNUX0FDQ0VTU19IX18KKyNkZWZpbmUgX19BUk1fR1VFU1RfQUNDRVNTX0hfXworCisjZGVm
aW5lIF9fcmFuZ2Vfb2soYWRkciwgc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJdW5zaWduZWQgbG9uZyBm
bGFncywgc3VtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlf
X2FzbV9fKCJhZGRzICAgJTEsICUyLCAlM1xuXHQiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorCQkic2JjY2NzICUxLCAlMSwgJTBcblx0IiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKwkJIm1vdmNjICAlMCwgIzAiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisJCTogIj0mciIoZmxhZ3MpLCAiPSZyIihzdW0p
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQk6ICJyIihhZGRyKSwgIklyIihz
aXplKSwgIjAiKEhZUEVSVklTT1JfVklSVF9TVEFSVCkgICAgIFwKKwkJOiAiY2MiKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZmxhZ3M7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK30pCisKKyNkZWZpbmUgYWNjZXNzX29rKGFkZHIsc2l6ZSkgICAgKF9fcmFuZ2Vf
b2soYWRkcixzaXplKSA9PSAwKQorCisjZGVmaW5lIGFycmF5X2FjY2Vzc19vayhhZGRyLGNv
dW50LHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJKGxpa2VseShj
b3VudCA8ICh+MFVML3NpemUpKSAmJiBhY2Nlc3Nfb2soYWRkcixjb3VudCpzaXplKSkKKwor
LyogUmF3IGFjY2VzcyBmdW5jdGlvbnM6IG5vIHR5cGUgY2hlY2tpbmcuICovCisjZGVmaW5l
IHJhd19jb3B5X3RvX2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgICAgICBcCisgICAgIF9fY29w
eV90b191c2VyKChkc3QpLCAoc3JjKSwgKGxlbikpCisjZGVmaW5lIHJhd19jb3B5X2Zyb21f
Z3Vlc3QoZHN0LCBzcmMsIGxlbikgICAgICBcCisgICAgIF9fY29weV9mcm9tX3VzZXIoKGRz
dCksIChzcmMpLCAobGVuKSkKKyNkZWZpbmUgcmF3X2NsZWFyX2d1ZXN0KGRzdCwgIGxlbikg
ICAgICAgICAgICAgIFwKKyAgICAgX19jbGVhcl91c2VyKChkc3QpLCAobGVuKSkKKyNkZWZp
bmUgX19yYXdfY29weV90b19ndWVzdChkc3QsIHNyYywgbGVuKSAgICAgIFwKKyAgICAgX19j
b3B5X3RvX3VzZXIoKGRzdCksIChzcmMpLCAobGVuKSkKKyNkZWZpbmUgX19yYXdfY29weV9m
cm9tX2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgIFwKKyAgICAgX19jb3B5X2Zyb21fdXNlcigo
ZHN0KSwgKHNyYyksIChsZW4pKQorI2RlZmluZSBfX3Jhd19jbGVhcl9ndWVzdChkc3QsICBs
ZW4pICAgICAgICAgICAgXAorICAgICBfX2NsZWFyX3VzZXIoKGRzdCksIChsZW4pKQorCisK
KworLyogSXMgdGhlIGd1ZXN0IGhhbmRsZSBhIE5VTEwgcmVmZXJlbmNlPyAqLworI2RlZmlu
ZSBndWVzdF9oYW5kbGVfaXNfbnVsbChobmQpCQlcCisJKChobmQpLnAgPT0gTlVMTCkKKwor
LyogT2Zmc2V0IHRoZSBnaXZlbiBndWVzdCBoYW5kbGUgaW50byB0aGUgYXJyYXkgaXQgcmVm
ZXJzIHRvLiAqLworI2RlZmluZSBndWVzdF9oYW5kbGVfYWRkX29mZnNldChobmQsIG5yKQlc
CisJKChobmQpLnAgKz0gKG5yKSkKKworLyogQ2FzdCBhIGd1ZXN0IGhhbmRsZSB0byB0aGUg
c3BlY2lmaWVkIHR5cGUgb2YgaGFuZGxlLiAqLworI2RlZmluZSBndWVzdF9oYW5kbGVfY2Fz
dChobmQsIHR5cGUpCQlcCisoewkJCQkJCVwKKyAgICB0eXBlICpfeCA9IChobmQpLnA7CQkJ
CVwKKyAgICAoWEVOX0dVRVNUX0hBTkRMRSh0eXBlKSkgeyBfeCB9OwkJXAorfSkKKworCisv
KgorICogUHJlLXZhbGlkYXRlIGEgZ3Vlc3QgaGFuZGxlLgorICogQWxsb3dzIHVzZSBvZiBm
YXN0ZXIgX19jb3B5XyogZnVuY3Rpb25zLgorICovCisjZGVmaW5lIGd1ZXN0X2hhbmRsZV9v
a2F5KGhuZCwgbnIpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcnJheV9hY2Nlc3Nf
b2soKGhuZCkucCwgKG5yKSwgc2l6ZW9mKCooaG5kKS5wKSkKKyAgICAKKyNkZWZpbmUgZ3Vl
c3RfaGFuZGxlX3N1YnJhbmdlX29rYXkoaG5kLCBmaXJzdCwgbGFzdCkJXAorICAgKGFycmF5
X2FjY2Vzc19vaygoaG5kKS5wICsgKGZpcnN0KSwJCQlcCisJCSAgIChsYXN0KSAtIChmaXJz
dCkgKyAxLAkJXAorCQkgICBzaXplb2YoKihobmQpLnApKSkKKy8qCisgKiBDb3B5IGFuIGFy
cmF5IG9mIG9iamVjdHMgdG8gZ3Vlc3QgY29udGV4dCB2aWEgYSBndWVzdCBoYW5kbGUuCisg
KiBPcHRpb25hbGx5IHNwZWNpZnkgYW4gb2Zmc2V0IGludG8gdGhlIGd1ZXN0IGFycmF5Lgor
ICovCisjZGVmaW5lIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGhuZCwgaWR4LCBwdHIsIG5yKSBc
CisgICAgX19jb3B5X3RvX2d1ZXN0X29mZnNldChobmQsIGlkeCwgcHRyLCBucikKKworICAK
Ky8qCisgKiBDb3B5IGFuIGFycmF5IG9mIG9iamVjdHMgZnJvbSBndWVzdCBjb250ZXh0IHZp
YSBhIGd1ZXN0IGhhbmRsZS4KKyAqIE9wdGlvbmFsbHkgc3BlY2lmeSBhbiBvZmZzZXQgaW50
byB0aGUgZ3Vlc3QgYXJyYXkuCisgKi8KKyNkZWZpbmUgY29weV9mcm9tX2d1ZXN0X29mZnNl
dChwdHIsIGhuZCwgaWR4LCBucikgXAorICAgIF9fY29weV9mcm9tX2d1ZXN0X29mZnNldChw
dHIsIGhuZCwgaWR4LCBucikKKyAgICAKKyAgICAKKy8qIENvcHkgc3ViLWZpZWxkIG9mIGEg
c3RydWN0dXJlIHRvIGd1ZXN0IGNvbnRleHQgdmlhIGEgZ3Vlc3QgaGFuZGxlLiAqLworI2Rl
ZmluZSBjb3B5X2ZpZWxkX3RvX2d1ZXN0KGhuZCwgcHRyLCBmaWVsZCkgXAorICAgIF9fY29w
eV9maWVsZF90b19ndWVzdChobmQsIHB0ciwgZmllbGQpCisKKy8qIENvcHkgc3ViLWZpZWxk
IG9mIGEgc3RydWN0dXJlIGZyb20gZ3Vlc3QgY29udGV4dCB2aWEgYSBndWVzdCBoYW5kbGUu
ICovCisjZGVmaW5lIGNvcHlfZmllbGRfZnJvbV9ndWVzdChwdHIsIGhuZCwgZmllbGQpIFwK
KyAgICBfX2NvcHlfZmllbGRfZnJvbV9ndWVzdChwdHIsIGhuZCwgZmllbGQpCisgICAgCisj
ZGVmaW5lIF9fY29weV90b19ndWVzdF9vZmZzZXQoaG5kLCBvZmYsIHB0ciwgbnIpICh7ICAg
IFwKKyAgICBjb25zdCB0eXBlb2YoKihwdHIpKSAqX3MgPSAocHRyKTsgICAgICAgICAgICAg
ICAgICAgXAorICAgIGNoYXIgKCpfZClbc2l6ZW9mKCpfcyldID0gKHZvaWQgKikoaG5kKS5w
OyAgICAgICAgICBcCisgICAgKCh2b2lkKSgoaG5kKS5wID09IChwdHIpKSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBfX2NvcHlfdG9fdXNlcihfZCsob2ZmKSwgX3MsIHNp
emVvZigqX3MpKihucikpOyAgICAgXAorfSkKKworI2RlZmluZSBfX2NvcHlfZnJvbV9ndWVz
dF9vZmZzZXQocHRyLCBobmQsIG9mZiwgbnIpICh7ICBcCisgICAgY29uc3QgdHlwZW9mKCoo
cHRyKSkgKl9zID0gKGhuZCkucDsgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlb2YoKihw
dHIpKSAqX2QgPSAocHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fY29w
eV9mcm9tX3VzZXIoX2QsIF9zKyhvZmYpLCBzaXplb2YoKl9kKSoobnIpKTsgICBcCit9KQor
CisjZGVmaW5lIF9fY29weV9maWVsZF90b19ndWVzdChobmQsIHB0ciwgZmllbGQpICh7ICAg
ICAgIFwKKyAgICBjb25zdCB0eXBlb2YoJihwdHIpLT5maWVsZCkgX3ggPSAmKGhuZCkucC0+
ZmllbGQ7ICAgXAorICAgIGNvbnN0IHR5cGVvZigmKHB0ciktPmZpZWxkKSBfeSA9ICYocHRy
KS0+ZmllbGQ7ICAgICBcCisgICAgX19jb3B5X3RvX3VzZXIoX3gsIF95LCBzaXplb2YoKl94
KSk7ICAgICAgICAgICAgICAgIFwKK30pCisKKyNkZWZpbmUgX19jb3B5X2ZpZWxkX2Zyb21f
Z3Vlc3QocHRyLCBobmQsIGZpZWxkKSAoeyAgICAgXAorICAgIGNvbnN0IHR5cGVvZigmKHB0
ciktPmZpZWxkKSBfeCA9ICYoaG5kKS5wLT5maWVsZDsgICBcCisgICAgY29uc3QgdHlwZW9m
KCYocHRyKS0+ZmllbGQpIF95ID0gJihwdHIpLT5maWVsZDsgICAgIFwKKyAgICBfX2NvcHlf
ZnJvbV91c2VyKF95LCBfeCwgc2l6ZW9mKCpfeCkpOyAgICAgICAgICAgICAgXAorfSkKKwor
CitleHRlcm4gdW5zaWduZWQgbG9uZyBfX2FyY2hfY29weV9mcm9tX3VzZXIodm9pZCAqdG8s
IGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbik7CitleHRlcm4gdW5zaWduZWQg
bG9uZyBfX2FyY2hfY29weV90b191c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1
bnNpZ25lZCBsb25nIG4pOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19hcmNoX2NsZWFyX3Vz
ZXIodm9pZCAqdG8sIHVuc2lnbmVkIGxvbmcgbik7CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBfX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1
bnNpZ25lZCBsb25nIG4pCit7CisgICAgICAgIHJldHVybiBfX2FyY2hfY29weV9mcm9tX3Vz
ZXIodG8sIGZyb20sIG4pOworfQorCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBf
X2NvcHlfdG9fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9u
ZyBuKQoreworICAgICAgICByZXR1cm4gX19hcmNoX2NvcHlfdG9fdXNlcih0bywgZnJvbSwg
bik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2NsZWFyX3VzZXIodm9p
ZCAqdG8sIHVuc2lnbmVkIGxvbmcgbikKK3sKKwlyZXR1cm4gX19hcmNoX2NsZWFyX3VzZXIo
dG8sIG4pOworfQorI2VuZGlmCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vaGFyZGlycS5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaGFyZGlycS5oCUZyaSBGZWIgMDMg
MTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDIxIEBACisjaWZuZGVmIF9fQVJNX0hB
UkRJUlFfSF9fCisjZGVmaW5lIF9fQVJNX0hBUkRJUlFfSF9fCisKKyNpbmNsdWRlIDx4ZW4v
Y29uZmlnLmg+CisjaW5jbHVkZSA8eGVuL2NhY2hlLmg+CisKKyNpZm5kZWYgX19BU1NFTUJM
WV9fCit0eXBlZGVmIHN0cnVjdCBpcnFfY3B1c3RhdCB7CisJdW5zaWduZWQgbG9uZyBfX3Nv
ZnRpcnFfcGVuZGluZzsKKwl1bnNpZ25lZCBsb25nIF9fbG9jYWxfaXJxX2NvdW50OworCXVu
c2lnbmVkIGxvbmcgX19ubWlfY291bnQ7Cit9IF9fY2FjaGVsaW5lX2FsaWduZWQgaXJxX2Nw
dXN0YXRfdDsKKworI2luY2x1ZGUgPHhlbi9pcnFfY3B1c3RhdC5oPiAgICAvKiBTdGFuZGFy
ZCBtYXBwaW5ncyBmb3IgaXJxX2NwdXN0YXRfdCBhYm92ZSAqLworCisjZGVmaW5lIGluX2ly
cSgpIAkobG9jYWxfaXJxX2NvdW50KHNtcF9wcm9jZXNzb3JfaWQoKSkgIT0gMCkKKworI2Rl
ZmluZSBpcnFfZW50ZXIoKSAgICAgKGxvY2FsX2lycV9jb3VudChzbXBfcHJvY2Vzc29yX2lk
KCkpKyspCisjZGVmaW5lIGlycV9leGl0KCkgICAgICAobG9jYWxfaXJxX2NvdW50KHNtcF9w
cm9jZXNzb3JfaWQoKSktLSkKKyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLworI2VuZGlmIC8q
IV9fQVJNX0hBUkRJUlFfSF9fKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUv
YXNtLWFybS9oeXBlcmNhbGwuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2h5cGVyY2FsbC5oCUZyaSBG
ZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDY4IEBACisvKgorICogaHlw
ZXJjYWxsLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggU2Ftc3VuZyBFbGVjdHJvbmlj
cworICogICAgICAgICAgSm9vWW91bmcgSHdhbmcgPGpvb3lvdW5nLmh3YW5nQHNhbXN1bmcu
Y29tPgorICogICAgICAgICAgSmFlbWluIFJ5dSA8am03Ny5yeXVAc2Ftc3VuZy5jb20+Cisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg
IDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19BUk1fSFlQRVJDQUxMX0hfXwor
I2RlZmluZSBfX0FSTV9IWVBFUkNBTExfSF9fCisjaW5jbHVkZSA8cHVibGljL3BoeXNkZXYu
aD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK2V4dGVybiBsb25nIGRvX3NldF90cmFwX3Rh
YmxlKFhFTl9HVUVTVF9IQU5ETEUodHJhcF9pbmZvX3QpIHRyYXBzKTsKKworZXh0ZXJuIGlu
dCBkb19tbXVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEUobW11X3VwZGF0ZV90KSB1cmVxcywK
KwkJCSB1bnNpZ25lZCBpbnQgY291bnQsCisJCQkgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBw
ZG9uZSwKKwkJCSB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSk7CisKK2V4dGVybiBsb25nIGRv
X3NldF9nZHQoWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJhbWVfbGlzdCwKKwkJICAgICAg
IHVuc2lnbmVkIGludCBlbnRyaWVzKTsKKworZXh0ZXJuIGxvbmcgZG9fc3RhY2tfc3dpdGNo
KHVuc2lnbmVkIGxvbmcgc3MsIHVuc2lnbmVkIGxvbmcgZXNwKTsKKworZXh0ZXJuIGxvbmcg
ZG9fZnB1X3Rhc2tzd2l0Y2goaW50IHNldCk7CisKK2V4dGVybiBsb25nIGRvX3NldF9kZWJ1
Z3JlZyhpbnQgcmVnLCB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgZG9fZ2V0X2RlYnVncmVnKGludCByZWcpOworCitleHRlcm4gbG9uZyBkb191cGRh
dGVfZGVzY3JpcHRvcih1NjQgcGEsIHU2NCBkZXNjKTsKKworZXh0ZXJuIGludCBkb191cGRh
dGVfdmFfbWFwcGluZyh1MzIgdmEsIHUzMiBmbGFncywgdTY0IHZhbDY0KTsKKworZXh0ZXJu
IGxvbmcgZG9fcGh5c2Rldl9vcChYRU5fR1VFU1RfSEFORExFKHBoeXNkZXZfb3BfdCkgdW9w
KTsKKworZXh0ZXJuIGludCBkb191cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbih1bnNp
Z25lZCBsb25nIHZhLAorCQkJCQkgICAgdTY0IHZhbDY0LAorCQkJCQkgICAgdW5zaWduZWQg
bG9uZyBmbGFncywKKwkJCQkJICAgIGRvbWlkX3QgZG9taWQpOworCitleHRlcm4gaW50IGRv
X21tdWV4dF9vcChYRU5fR1VFU1RfSEFORExFKG1tdWV4dF9vcF90KSB1b3BzLAorCQkJdW5z
aWduZWQgaW50IGNvdW50LAorCQkJWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBwZG9uZSwKKwkJ
CXVuc2lnbmVkIGludCBmb3JlaWduZG9tKTsKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9f
aXJldCh2b2lkKTsKKworc3RydWN0IHZjcHU7CitleHRlcm4gbG9uZyBhcmNoX2RvX3ZjcHVf
b3AoaW50IGNtZCwgc3RydWN0IHZjcHUgKnYsIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJn
KTsKKworZXh0ZXJuIGxvbmcgZG9fc2V0X2NhbGxiYWNrcyh1bnNpZ25lZCBsb25nIGV2ZW50
LCB1bnNpZ25lZCBsb25nIGZhaWxzYWZlKTsKKyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLwor
I2VuZGlmIC8qIV9fQVJNX0hZUEVSQ0FMTF9IX18qLwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4
ZW4vaW5jbHVkZS9hc20tYXJtL2luaXQuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2luaXQuaAlGcmkg
RmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIF9f
QVJNX0lOSVRfSF9fCisjZGVmaW5lIF9fQVJNX0lOSVRfSF9fCisKKyNlbmRpZiAvKiBfWEVO
X0FTTV9JTklUX0ggKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFy
bS9pby5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisr
KyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW8uaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBfX0FSTV9JT19IX18KKyNkZWZpbmUg
X19BUk1fSU9fSF9fCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisKKyNkZWZpbmUgbW1pb193
cml0ZWIodixhKQkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKGEpID0gKHYpKQorI2Rl
ZmluZSBtbWlvX3dyaXRldyh2LGEpCSgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopKGEp
ID0gKHYpKQorI2RlZmluZSBtbWlvX3dyaXRlbCh2LGEpCSgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKShhKSA9ICh2KSkKKworI2RlZmluZSBtbWlvX3JlYWRiKGEpCQkoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopKGEpKQorI2RlZmluZSBtbWlvX3JlYWR3KGEpCQkoKih2b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCAqKShhKSkKKyNkZWZpbmUgbW1pb19yZWFkbChhKQkJKCoo
dm9sYXRpbGUgdW5zaWduZWQgaW50ICopKGEpKQorCisjZGVmaW5lIHdyaXRlYih2LGEpCQlt
bWlvX3dyaXRlYih2LGEpCisjZGVmaW5lIHdyaXRldyh2LGEpCQltbWlvX3dyaXRldyh2LGEp
CisKKyNkZWZpbmUgd3JpdGVsKHYsYSkJCW1taW9fd3JpdGVsKHYsYSkKKyNkZWZpbmUgcmVh
ZGIoYSkJCW1taW9fcmVhZGIoYSkKKyNkZWZpbmUgcmVhZHcoYSkJCW1taW9fcmVhZHcoYSkK
KyNkZWZpbmUgcmVhZGwoYSkJCW1taW9fcmVhZGwoYSkKKworI2RlZmluZSBpb3JlbWFwKHgs
bCkJCShfX3ZhKHgpKQorI2RlZmluZSBpb3VubWFwKHApCQkoKHZvaWQpMCkKKworI2RlZmlu
ZSBpbmIoYSkJCQltbWlvX3JlYWRiKGEpCisjZGVmaW5lIGludyhhKQkJCW1taW9fcmVhZHco
YSkKKyNkZWZpbmUgaW5sKGEpCQkJbW1pb19yZWFkbChhKQorCisjZGVmaW5lIG91dGIodixh
KQkJbW1pb193cml0ZWIodixhKQorI2RlZmluZSBvdXR3KHYsYSkJCW1taW9fd3JpdGV3KHYs
YSkKKyNkZWZpbmUgb3V0bCh2LGEpCQltbWlvX3dyaXRlbCh2LGEpCisKKyNlbmRpZgkvKiBf
X0FSTV9JT19IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFy
bS9pb2NhcC5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW9jYXAuaAlGcmkgRmViIDAzIDE2OjA3OjAz
IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxNSBAQAorI2lmbmRlZiBfX0FSTV9JT0NBUF9IX18K
KyNkZWZpbmUgX19BUk1fSU9DQVBfSF9fCisKKyNkZWZpbmUgaW9wb3J0c19wZXJtaXRfYWNj
ZXNzKGQsIHMsIGUpICAgICAgICAgICAgICAgICAgXAorICAgIHJhbmdlc2V0X2FkZF9yYW5n
ZSgoZCktPmFyY2guaW9wb3J0X2NhcHMsIHMsIGUpCisKKyNkZWZpbmUgaW9wb3J0c19kZW55
X2FjY2VzcyhkLCBzLCBlKSAgICAgICAgICAgICAgICAgICAgXAorICAgIHJhbmdlc2V0X3Jl
bW92ZV9yYW5nZSgoZCktPmFyY2guaW9wb3J0X2NhcHMsIHMsIGUpCisKKyNkZWZpbmUgaW9w
b3J0c19hY2Nlc3NfcGVybWl0dGVkKGQsIHMsIGUpICAgICAgICAgICAgICAgXAorICAgIHJh
bmdlc2V0X2NvbnRhaW5zX3JhbmdlKChkKS0+YXJjaC5pb3BvcnRfY2FwcywgcywgZSkKKwor
I2RlZmluZSBtdWx0aXBhZ2VfYWxsb2NhdGlvbl9wZXJtaXR0ZWQoZCwgb3JkZXIpCSgwKQor
CisjZW5kaWYKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9pb21t
dS5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3hlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSwxNCBAQAorI2lmbmRlZiBfX0FSTV9JT01NVV9IX18KKyNkZWZp
bmUgX19BUk1fSU9NTVVfSF9fCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdGF0aWMgaW5s
aW5lIGludCBpc19pb21lbV9wYWdlKHVuc2lnbmVkIGxvbmcgbWZuKQoreworCXJldHVybiAw
OworfQorCitpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg
bG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworaW50
IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4p
OworI2VuZGlmIC8qIV9fQVNTRU1CTFlfXyovCisjZW5kaWYgLyohX19BUk1fSU9NTVVfSF9f
Ki8KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9p
bmNsdWRlL2FzbS1hcm0vaXJxLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBA
IC0wLDAgKzEsNTAgQEAKKyNpZm5kZWYgX19BUk1fSVJRX0hfXworI2RlZmluZSBfX0FSTV9J
UlFfSF9fCisKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8eGVuL2NwdW1h
c2suaD4KKworI2lmbmRlZiBOUl9JUlFTCisjZGVmaW5lIE5SX0lSUVMJMjU2CisjZW5kaWYK
KworI2RlZmluZSBkb21haW5fcGlycV90b19pcnEoZCwgcGlycSkJKHBpcnEpCisjZGVmaW5l
IGRvbWFpbl9pcnFfdG9fcGlycShkLCBpcnEpCShpcnEpICAgICAgICAgICAgICAgICAgICAg
ICAKKyNkZWZpbmUgZG9tYWluX3BpcnFfdG9fZW11aXJxKGQsIHBpcnEpCShwaXJxKQorI2Rl
ZmluZSBkb21haW5fZW11aXJxX3RvX3BpcnEoZCwgaXJxKQkoaXJxKQorCisjZGVmaW5lIGly
cV9jZmcoaXJxKQkJKCZpcnFfY2ZnW2lycV0pCisjZGVmaW5lIGlycV90b19kZXNjKGlycSkJ
KCZpcnFfZGVzY1tpcnFdKQkKKworI2RlZmluZSBJUlFfTUFYX0dVRVNUUwkJNwordHlwZWRl
ZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGludCBhY2tfdHlwZTsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBucl9ndWVzdHM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgaW5fZmxpZ2h0OworICAg
ICAgICB1bnNpZ25lZCBjaGFyIHNoYXJlYWJsZTsKKyAgICAgICAgc3RydWN0IGRvbWFpbiAq
Z3Vlc3RbSVJRX01BWF9HVUVTVFNdOworfSBpcnFfZ3Vlc3RfYWN0aW9uX3Q7CisKK3N0cnVj
dCBpcnFfY2ZnIHsKKwlpbnQgaXJxOworfTsKKworc3RydWN0IGFyY2hfaXJxX2Rlc2Mgewor
fTsKKworc3RydWN0IGFyY2hfcGlycSB7CisJaW50IGlycTsKK307CisKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBERUNMQVJFX0JJVE1BUChfYml0cyxOUl9JUlFTKTsKK30gdm1hc2tfdDsK
KworZXh0ZXJuIHN0cnVjdCBpcnFfZGVzYyAqaXJxX2Rlc2M7CisKK3N0YXRpYyBpbmxpbmUg
aW50IGlycV9kZXNjX2luaXRpYWxpemVkKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKK3sKKwly
ZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIF9fQVJNX0lSUV9IX18gKi8KZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0u
aAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyMzcgQEAKKyNp
Zm5kZWYgX19BUk1fTU1fSF9fCisjZGVmaW5lIF9fQVJNX01NX0hfXworCisjaW5jbHVkZSA8
eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8YXNtL3Ay
bS5oPgorI2luY2x1ZGUgPGFzbS9pb21tdS5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNp
bmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KKworI2RlZmlu
ZSBJTlZBTElEX0dGTgkJKH4wVUwpCisjZGVmaW5lIElOVkFMSURfTUZOICAgICAgICAgICAg
ICh+MFVMKQorI2RlZmluZSBJTlZBTElEX00yUF9FTlRSWQkofjBVTCkKKworI2RlZmluZSBW
QUxJRF9NMlAoX2UpICAgICAgICAgICAgKCEoKF9lKSAmICgxVUw8PChCSVRTX1BFUl9MT05H
LTEpKSkpCisjZGVmaW5lIFNIQVJFRF9NMlBfRU5UUlkgICAgICAgICAofjBVTCAtIDFVTCkK
KyNkZWZpbmUgU0hBUkVEX00yUChfZSkgICAgICAgICAgICgoX2UpID09IFNIQVJFRF9NMlBf
RU5UUlkpCisKKyNkZWZpbmUgUEZOX09SREVSKF9wZm4pCQkoKF9wZm4pLT52LmZyZWUub3Jk
ZXIpCisKKyNkZWZpbmUgUEFHRV9UWVBFKHBhZ2UpCQkoKChwYWdlKS0+dS5pbnVzZS50eXBl
X2luZm8pICYgUEdUX3R5cGVfbWFzayApCisKKyNkZWZpbmUgcGlja2xlX2RvbXB0cihfZCkJ
KCh1MzIpKHVuc2lnbmVkIGxvbmcpKF9kKSkKKyNkZWZpbmUgdW5waWNrbGVfZG9tcHRyKF9k
KQkoKHN0cnVjdCBkb21haW4gKikodW5zaWduZWQgbG9uZykoX2QpKQorCisjZGVmaW5lIFBS
dHlwZV9pbmZvCQkiMDhseCIKKworI2RlZmluZSBwYWdlX2dldF9vd25lcihfcCkJKHVucGlj
a2xlX2RvbXB0cigoX3ApLT52LmludXNlLl9kb21haW4pKQorI2RlZmluZSBwYWdlX3NldF9v
d25lcihfcCxfZCkJKChfcCktPnYuaW51c2UuX2RvbWFpbiA9IHBpY2tsZV9kb21wdHIoX2Qp
KQorCisjZGVmaW5lIFhFTlNIQVJFX3dyaXRhYmxlIAkwCisjZGVmaW5lIFhFTlNIQVJFX3Jl
YWRvbmx5IAkxCisKKworI2RlZmluZSBQR19zaGlmdChpZHgpCQkoQklUU19QRVJfTE9ORyAt
IChpZHgpKQorI2RlZmluZSBQR19tYXNrKHgsIGlkeCkJCSh4ICMjIFVMIDw8IFBHX3NoaWZ0
KGlkeCkpCisKKyNkZWZpbmUgUEdUX25vbmUJCVBHX21hc2soMCwgNCkgIC8qIG5vIHNwZWNp
YWwgdXNlcyBvZiB0aGlzIHBhZ2UgICAqLworI2RlZmluZSBQR1RfbDFfcGFnZV90YWJsZQlQ
R19tYXNrKDEsIDQpICAvKiB1c2luZyBhcyBhbiBMMSBwYWdlIHRhYmxlPyAgICAgKi8KKyNk
ZWZpbmUgUEdUX2wyX3BhZ2VfdGFibGUJUEdfbWFzaygyLCA0KSAgLyogdXNpbmcgYXMgYW4g
TDIgcGFnZSB0YWJsZT8gICAgICovCisjZGVmaW5lIFBHVF9sM19wYWdlX3RhYmxlCVBHX21h
c2soMywgNCkgIC8qIHVzaW5nIGFzIGFuIEwzIHBhZ2UgdGFibGU/ICAgICAqLworI2RlZmlu
ZSBQR1Rfd3JpdGFibGVfcGFnZQlQR19tYXNrKDcsIDQpICAvKiBoYXMgd3JpdGFibGUgbWFw
cGluZ3M/ICAgICAgICAgKi8KKyNkZWZpbmUgUEdUX3NoYXJlZF9wYWdlCQlQR19tYXNrKDgs
IDQpICAvKiBDb1cgc2hhcmFibGUgcGFnZSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUEdU
X3R5cGVfbWFzawkJUEdfbWFzaygxNSwgNCkgLyogQml0cyAyOC0zMSBvciA2MC02My4gICAg
ICAgICAgICovCisKKyAvKiBPd25pbmcgZ3Vlc3QgaGFzIHBpbm5lZCB0aGlzIHBhZ2UgdG8g
aXRzIGN1cnJlbnQgdHlwZT8gKi8KKyNkZWZpbmUgX1BHVF9waW5uZWQJCVBHX3NoaWZ0KDUp
CisjZGVmaW5lIFBHVF9waW5uZWQJCVBHX21hc2soMSwgNSkKKworIC8qIEhhcyB0aGlzIHBh
Z2UgYmVlbiB2YWxpZGF0ZWQgZm9yIHVzZSBhcyBpdHMgY3VycmVudCB0eXBlPyAqLworI2Rl
ZmluZSBfUEdUX3ZhbGlkYXRlZAkJUEdfc2hpZnQoNikKKyNkZWZpbmUgUEdUX3ZhbGlkYXRl
ZAkJUEdfbWFzaygxLCA2KQorCisvKiBIYXMgdGhpcyBwYWdlIGJlZW4gKnBhcnRpYWxseSog
dmFsaWRhdGVkIGZvciB1c2UgYXMgaXRzIGN1cnJlbnQgdHlwZT8gKi8KKyNkZWZpbmUgX1BH
VF9wYXJ0aWFsCQlQR19zaGlmdCg4KQorI2RlZmluZSBQR1RfcGFydGlhbAkJUEdfbWFzaygx
LCA4KQorCisgLyogUGFnZSBpcyBsb2NrZWQ/ICovCisjZGVmaW5lIF9QR1RfbG9ja2VkCQlQ
R19zaGlmdCg5KQorI2RlZmluZSBQR1RfbG9ja2VkCQlQR19tYXNrKDEsIDkpCisKKyAvKiBD
b3VudCBvZiB1c2VzIG9mIHRoaXMgZnJhbWUgYXMgaXRzIGN1cnJlbnQgdHlwZS4gKi8KKyNk
ZWZpbmUgUEdUX2NvdW50X3dpZHRoCQlQR19zaGlmdCg5KQorI2RlZmluZSBQR1RfY291bnRf
bWFzawkJKCgxVUw8PFBHVF9jb3VudF93aWR0aCktMSkKKworIC8qIENsZWFyZWQgd2hlbiB0
aGUgb3duaW5nIGd1ZXN0ICdmcmVlcycgdGhpcyBwYWdlLiAqLworI2RlZmluZSBfUEdDX2Fs
bG9jYXRlZAkJUEdfc2hpZnQoMSkKKyNkZWZpbmUgUEdDX2FsbG9jYXRlZAkJUEdfbWFzaygx
LCAxKQorCisgLyogUGFnZSBpcyBYZW4gaGVhcD8gKi8KKyNkZWZpbmUgX1BHQ194ZW5faGVh
cAkJUEdfc2hpZnQoMikKKyNkZWZpbmUgUEdDX3hlbl9oZWFwCQlQR19tYXNrKDEsIDIpCisK
KyAvKiBTZXQgd2hlbiBpcyB1c2luZyBhIHBhZ2UgYXMgYSBwYWdlIHRhYmxlICovCisjZGVm
aW5lIF9QR0NfcGFnZV90YWJsZQkJUEdfc2hpZnQoMykKKyNkZWZpbmUgUEdDX3BhZ2VfdGFi
bGUJCVBHX21hc2soMSwgMykKKworIC8qIFBhZ2UgaXMgYnJva2VuPyAqLworI2RlZmluZSBf
UEdDX2Jyb2tlbgkJUEdfc2hpZnQoNykKKyNkZWZpbmUgUEdDX2Jyb2tlbgkJUEdfbWFzaygx
LCA3KQorCisgLyogTXV0dWFsbHktZXhjbHVzaXZlIHBhZ2Ugc3RhdGVzOiB7IGludXNlLCBv
ZmZsaW5pbmcsIG9mZmxpbmVkLCBmcmVlIH0uICovCisjZGVmaW5lIFBHQ19zdGF0ZQkJUEdf
bWFzaygzLCA5KQorI2RlZmluZSBQR0Nfc3RhdGVfaW51c2UJCVBHX21hc2soMCwgOSkKKyNk
ZWZpbmUgUEdDX3N0YXRlX29mZmxpbmluZwlQR19tYXNrKDEsIDkpCisjZGVmaW5lIFBHQ19z
dGF0ZV9vZmZsaW5lZAlQR19tYXNrKDIsIDkpCisjZGVmaW5lIFBHQ19zdGF0ZV9mcmVlCQlQ
R19tYXNrKDMsIDkpCisKKyNkZWZpbmUgcGFnZV9zdGF0ZV9pcyhwZywgc3QpCVwKKwkoKChw
ZyktPmNvdW50X2luZm8mUEdDX3N0YXRlKSA9PSBQR0Nfc3RhdGVfIyNzdCkKKworIC8qIENv
dW50IG9mIHJlZmVyZW5jZXMgdG8gdGhpcyBmcmFtZS4gKi8KKyNkZWZpbmUgUEdDX2NvdW50
X3dpZHRoCQlQR19zaGlmdCg5KQorI2RlZmluZSBQR0NfY291bnRfbWFzawkJKCgxVUw8PFBH
Q19jb3VudF93aWR0aCktMSkKKworI2RlZmluZSBzZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBm
bikgXAorCWRvIHsgfSB3aGlsZSgwKQorCisjZGVmaW5lIGdldF9ncGZuX2Zyb21fbWZuKG1m
bikJKChtZm4pKQorCisjZGVmaW5lIG1mbl90b19nbWZuKF9kLCBtZm4pCShtZm4pCisKKyNk
ZWZpbmUgZ21mbl90b19tZm4oX2QsIGdwZm4pCShncGZuKQorCisjZGVmaW5lIGRvbWFpbl9z
ZXRfYWxsb2NfYml0c2l6ZShkKQkoKHZvaWQpMCkKKyNkZWZpbmUgZG9tYWluX2NsYW1wX2Fs
bG9jX2JpdHNpemUoZCxiKQkoYikKKworI2RlZmluZSB3cml0ZV9wdGJhc2UodikJY3B1X3N3
aXRjaF90dGIoKHYpLT5hcmNoLmN0eC50dGJyMCkKKworc3RydWN0IHBhZ2VfaW5mbworewor
CXN0cnVjdCBwYWdlX2xpc3RfZW50cnkgbGlzdDsKKworCS8qIFJlZmVyZW5jZSBjb3VudCBh
bmQgdmFyaW91cyBQR0NfeHh4IGZsYWdzIGFuZCBmaWVsZHMuICovCisJdW5zaWduZWQgbG9u
ZyBjb3VudF9pbmZvOworCisJLyogQ29udGV4dC1kZXBlbmRlbnQgZmllbGRzIGZvbGxvdy4u
LiAqLworCXVuaW9uIHsKKwkJLyogUGFnZSBpcyBpbiB1c2U6ICgoY291bnRfaW5mbyAmIFBH
Q19jb3VudF9tYXNrKSAhPSAwKS4gKi8KKwkJc3RydWN0IHsKKwkJCS8qIFR5cGUgcmVmZXJl
bmNlIGNvdW50IGFuZCB2YXJpb3VzIFBHVF94eHggZmxhZ3MgYW5kIGZpZWxkcy4gKi8KKwkJ
CXVuc2lnbmVkIGxvbmcgdHlwZV9pbmZvOworCQl9IGludXNlOworCisJCS8qIFBhZ2UgaXMg
b24gYSBmcmVlIGxpc3Q6ICgoY291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAwKS4g
Ki8KKwkJc3RydWN0IHsKKwkJCS8qIERvIFRMQnMgbmVlZCBmbHVzaGluZyBmb3Igc2FmZXR5
IGJlZm9yZSBuZXh0IHBhZ2UgdXNlPyAqLworCQkJYm9vbF90IG5lZWRfdGxiZmx1c2g7CisJ
CX0gZnJlZTsKKwl9IHU7CisKKwl1bmlvbiB7CisJCS8qIFBhZ2UgaXMgaW4gdXNlLCBidXQg
bm90IGFzIGEgc2hhZG93LiAqLworCQlzdHJ1Y3QgeworCQkJLyogT3duZXIgb2YgdGhpcyBw
YWdlICh6ZXJvIGlmIHBhZ2UgaXMgYW5vbnltb3VzKS4gKi8KKwkJCXVuc2lnbmVkIGxvbmcg
X2RvbWFpbjsKKwkJfSBpbnVzZTsKKworCQkvKiBQYWdlIGlzIG9uIGEgZnJlZSBsaXN0LiAq
LworCQlzdHJ1Y3QgeworCQkJLyogT3JkZXItc2l6ZSBvZiB0aGUgZnJlZSBjaHVuayB0aGlz
IHBhZ2UgaXMgdGhlIGhlYWQgb2YuICovCisJCQl1bnNpZ25lZCBpbnQgb3JkZXI7CisJCX0g
ZnJlZTsKKwl9IHY7CisKKwkvKgorCSAqIFRpbWVzdGFtcCBmcm9tICdUTEIgY2xvY2snLCB1
c2VkIHRvIGF2b2lkIGV4dHJhIHNhZmV0eSBmbHVzaGVzLgorCSAqIE9ubHkgdmFsaWQgZm9y
OiBhKSBmcmVlIHBhZ2VzLCBhbmQgYikgcGFnZXMgd2l0aCB6ZXJvIHR5cGUgY291bnQKKwkg
KiAoZXhjZXB0IHBhZ2UgdGFibGUgcGFnZXMgd2hlbiB0aGUgZ3Vlc3QgaXMgaW4gc2hhZG93
IG1vZGUpLgorCSAqLworCXUzMiB0bGJmbHVzaF90aW1lc3RhbXA7Cit9OworCisjaWZuZGVm
IE5ERUJVRworI2RlZmluZSBUWVBFX1NBRkVUWSAxCisjZW5kaWYKKworI2lmZGVmIFRZUEVf
U0FGRVRZCisjZGVmaW5lIFRZUEVfU0FGRShfdHlwZSxfbmFtZSkJCQkJCQlcCit0eXBlZGVm
IHN0cnVjdCB7IF90eXBlIF9uYW1lOyB9IF9uYW1lIyNfdDsJCQkJXAorc3RhdGljIGlubGlu
ZSBfbmFtZSMjX3QgXyMjX25hbWUoX3R5cGUgbikgeyByZXR1cm4gKF9uYW1lIyNfdCkgeyBu
IH07IH0gXAorc3RhdGljIGlubGluZSBfdHlwZSBfbmFtZSMjX3goX25hbWUjI190IG4pIHsg
cmV0dXJuIG4uX25hbWU7IH0KKyNlbHNlCisjZGVmaW5lIFRZUEVfU0FGRShfdHlwZSxfbmFt
ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit0eXBlZGVm
IF90eXBlIF9uYW1lIyNfdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCitzdGF0aWMgaW5saW5lIF9uYW1lIyNfdCBfIyNfbmFtZShfdHlwZSBu
KSB7IHJldHVybiBuOyB9ICAgICAgICAgICAgICAgICBcCitzdGF0aWMgaW5saW5lIF90eXBl
IF9uYW1lIyNfeChfbmFtZSMjX3QgbikgeyByZXR1cm4gbjsgfQorI2VuZGlmCisKK1RZUEVf
U0FGRSh1bnNpZ25lZCBsb25nLG1mbik7CisKKyNpZmRlZiBNRU1PUllfR1VBUkQKK3ZvaWQg
bWVtZ3VhcmRfaW5pdCh2b2lkKTsKK3ZvaWQgbWVtZ3VhcmRfZ3VhcmRfcmFuZ2Uodm9pZCAq
cCwgdW5zaWduZWQgbG9uZyBsKTsKK3ZvaWQgbWVtZ3VhcmRfdW5ndWFyZF9yYW5nZSh2b2lk
ICpwLCB1bnNpZ25lZCBsb25nIGwpOworI2Vsc2UKKyNkZWZpbmUgbWVtZ3VhcmRfaW5pdCgp
ICAgICAgICAgICAgICAgICgodm9pZCkwKQorI2RlZmluZSBtZW1ndWFyZF9ndWFyZF9yYW5n
ZShfcCxfbCkgICAgKCh2b2lkKTApCisjZGVmaW5lIG1lbWd1YXJkX3VuZ3VhcmRfcmFuZ2Uo
X3AsX2wpICAoKHZvaWQpMCkKKyNlbmRpZiAvKiBNRU1PUllfR1VBUkQgKi8KKworZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgeGVuaGVhcF9waHlzX3N0YXJ0LCB4ZW5oZWFwX3BoeXNfZW5kOwor
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgeGVuX3BoeXNfc3RhcnQsIHhlbl9waHlzX2VuZDsKK2V4
dGVybiB1bnNpZ25lZCBsb25nIG1pbl9wYWdlLCBtYXhfcGFnZTsKKworZXh0ZXJuIHN0cnVj
dCBkb21haW4gKmRvbV94ZW4sICpkb21faW8sICpkb21fY293OworZXh0ZXJuIHN0cnVjdCBw
YWdlX2luZm8gKmZyYW1lX3RhYmxlOworCit2b2lkIG1lbWd1YXJkX2d1YXJkX3N0YWNrKHZv
aWQgKnApOworCit2b2lkIHNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3Qoc3RydWN0IHBhZ2Vf
aW5mbyAqcGFnZSwgc3RydWN0IGRvbWFpbiAqZCwgaW50IHJlYWRvbmx5KTsKK3ZvaWQgc2hh
cmVfeGVuX3BhZ2Vfd2l0aF9wcml2aWxlZ2VkX2d1ZXN0cyhzdHJ1Y3QgcGFnZV9pbmZvICpw
YWdlLCBpbnQgcmVhZG9ubHkpOworCitpbnQgYWxsb2NfcGFnZV90eXBlKHN0cnVjdCBwYWdl
X2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSk7Cit2b2lkIGZyZWVfcGFnZV90eXBl
KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSk7CisKK3ZvaWQg
cHV0X3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSk7CitpbnQgIGdldF9wYWdlKHN0cnVj
dCBwYWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBkb21haW4gKmRvbWFpbik7CisKK3ZvaWQgcHV0
X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKTsKK2ludCAgZ2V0X3BhZ2VfdHlw
ZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUpOworCitzdHJ1
Y3QgZG9tYWluICpwYWdlX2dldF9vd25lcl9hbmRfcmVmZXJlbmNlKHN0cnVjdCBwYWdlX2lu
Zm8gKnBhZ2UpOworCitpbnQgaXNfaW9tZW1fcGFnZSh1bnNpZ25lZCBsb25nIG1mbik7CisK
K2ludCBzdGVhbF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwYWdlX2luZm8gKnBh
Z2UsIHVuc2lnbmVkIGludCBtZW1mbGFncyk7CitpbnQgZG9uYXRlX3BhZ2Uoc3RydWN0IGRv
bWFpbiAqZCwgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgaW50IG1lbWZsYWdz
KTsKKwordW5zaWduZWQgbG9uZyBkb21haW5fZ2V0X21heGltdW1fZ3BmbihzdHJ1Y3QgZG9t
YWluICpkKTsKKworbG9uZyBhcmNoX21lbW9yeV9vcChpbnQgb3AsIFhFTl9HVUVTVF9IQU5E
TEUodm9pZCkgYXJnKTsKKworaW50IG1hcF9wYWdlc190b194ZW4odW5zaWduZWQgbG9uZyB2
aXJ0LCB1bnNpZ25lZCBsb25nIG1mbiwgaW50IG5yLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsK
Kworc3RhdGljIGlubGluZSB2b2lkIHB1dF9wYWdlX2FuZF90eXBlKHN0cnVjdCBwYWdlX2lu
Zm8gKnBhZ2UpCit7CisJcHV0X3BhZ2VfdHlwZShwYWdlKTsKKwlwdXRfcGFnZShwYWdlKTsK
K30KKworc3RhdGljIGlubGluZSBpbnQgZ2V0X3BhZ2VfYW5kX3R5cGUoc3RydWN0IHBhZ2Vf
aW5mbyAqcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkb21haW4gKmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgdHlwZSkKK3sKKwlpbnQgcmMgPSBnZXRfcGFnZShwYWdlLCBkb21h
aW4pOworCisJaWYgKCBsaWtlbHkocmMpICYmIHVubGlrZWx5KCFnZXRfcGFnZV90eXBlKHBh
Z2UsIHR5cGUpKSApIHsKKwkJcHV0X3BhZ2UocGFnZSk7CisJCXJjID0gMDsKKwl9CisKKwly
ZXR1cm4gcmM7Cit9CisKKyNlbmRpZiAvKiBfX0FSTV9NTV9IX18gKi8KZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9tbXUuaAotLS0gL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21t
dS5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDExIEBACisj
aWZuZGVmIF9fQVJNX01NVV9IX18KKyNkZWZpbmUgX19BUk1fTU1VX0hfXworCisjZGVmaW5l
IFBBRERSX0JJVFMgICAgICAgICAgICAgIDMyCisjZGVmaW5lIFBBRERSX01BU0sgICAgICAg
ICAgICAgICgoMVVMIDw8IFBBRERSX0JJVFMpIC0gMSkKKworI2RlZmluZSBWQUREUl9CSVRT
ICAgICAgICAgICAgICAzMgorI2RlZmluZSBWQUREUl9NQVNLICAgICAgICAgICAgICAoKDFV
TCA8PCBWQUREUl9CSVRTKSAtIDEpCisKKyNlbmRpZgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUx
IHhlbi9pbmNsdWRlL2FzbS1hcm0vbXVsdGljYWxsLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tdWx0
aWNhbGwuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw5IEBA
CisKKyNpZm5kZWYgX19BUk1fTVVMVElDQUxMX0hfXworI2RlZmluZSBfX0FSTV9NVUxUSUNB
TExfSF9fCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKworI2RlZmluZSBkb19tdWx0aWNh
bGxfY2FsbChfY2FsbCkKKworI2VuZGlmIC8qIF9fQVJNX01VTFRJQ0FMTF9IX18gKi8KZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmgKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUv
YXNtLWFybS9udW1hLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAg
KzEsMjEgQEAKKyNpZm5kZWYgX19BUk1fTlVNQV9IX18gCisjZGVmaW5lIF9fQVJNX05VTUFf
SF9fCisKKyNpbmNsdWRlIDx4ZW4vY3B1bWFzay5oPgorCisjZGVmaW5lIE5PREVTX1NISUZU
IAkwCisjZGVmaW5lIE1BWF9OVU1OT0RFUwkoMSA8PCBOT0RFU19TSElGVCkKKworCisjZGVm
aW5lIE5VTUFfTk9fTk9ERQkweEZGCisKK2V4dGVybiB1bnNpZ25lZCBjaGFyIGNwdV90b19u
b2RlW107CitleHRlcm4gY3B1bWFza190ICAgICBub2RlX3RvX2NwdW1hc2tbXTsKKworI2Rl
ZmluZSBjcHVfdG9fbm9kZShjcHUpCShjcHVfdG9fbm9kZVtjcHVdKQorI2RlZmluZSBwYXJl
bnRfbm9kZShub2RlKQkobm9kZSkKKyNkZWZpbmUgbm9kZV90b19maXJzdF9jcHUobm9kZSkJ
KF9fZmZzKG5vZGVfdG9fY3B1bWFza1tub2RlXSkpCisjZGVmaW5lIG5vZGVfdG9fY3B1bWFz
ayhub2RlKQkobm9kZV90b19jcHVtYXNrW25vZGVdKQorCisjZGVmaW5lIHBoeXNfdG9fbmlk
KGFkZHIpCSgwKQorI2VuZGlmCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vcDJtLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaAlGcmkgRmViIDAzIDE2OjA3OjAz
IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMCBAQAorI2lmbmRlZiBfX0FSTV9QMk1fSF9fCisj
ZGVmaW5lIF9fQVJNX1AyTV9IX18KKworI2RlZmluZSBnZm5fdG9fbWZuKGQsIGcsIHQpCQko
ZykKKyNkZWZpbmUgZ2ZuX3RvX21mbl9xdWVyeShkLCBnLCB0KQkoZykKKyNkZWZpbmUgZ2Zu
X3RvX21mbl9ndWVzdChkLCBnLCB0KQkoZykKKyNkZWZpbmUgZ2ZuX3RvX21mbl91bnNoYXJl
KGQsIGcsIHQpCShnKQorCisjZGVmaW5lIHB1dF9nZm4oZCwgZ2ZuKQorI2VuZGlmCmRpZmYg
LXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oCi0tLSAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2Fz
bS1hcm0vcGFnZS5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsx
LDk1IEBACisjaWZuZGVmIF9fQVJNX1BBR0VfSF9fCisjZGVmaW5lIF9fQVJNX1BBR0VfSF9f
CisKKyNpbmNsdWRlIDxhc20vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisK
KyNkZWZpbmUgUEFHRV9TSElGVAkJMTIKKyNkZWZpbmUgUEFHRV9TSVpFCQkoMSA8PCBQQUdF
X1NISUZUKQorI2RlZmluZSBQQUdFX01BU0sJCSh+KFBBR0VfU0laRSAtIDEpKQorCisjZGVm
aW5lIFBBR0VfQUxJR04oeCkJCSgoKHgpICsgUEFHRV9TSVpFIC0gMSkgJiBQQUdFX01BU0sp
CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaW5jbHVkZSA8eGVuL2xpYi5oPgorCisjZGVm
aW5lIGNsZWFyX3BhZ2UoX3ApCQltZW1zZXQoKHZvaWQgKikoX3ApLCAwLCBQQUdFX1NJWkUp
CisjZGVmaW5lIGNvcHlfcGFnZShfdCwgX2YpCW1lbWNweSgodm9pZCAqKShfdCksICh2b2lk
ICopKF9mKSwgUEFHRV9TSVpFKTsKKworc3RhdGljIGlubGluZSBpbnQgZ2V0X29yZGVyX2Zy
b21fYnl0ZXModW5zaWduZWQgbG9uZyBzaXplKQoreworCWludCBvcmRlcjsKKworCXNpemUg
PSAoc2l6ZSAtIDEpID4+IFBBR0VfU0hJRlQ7CisJZm9yICggb3JkZXIgPSAwOyBzaXplOyBv
cmRlcisrICkKKwkJc2l6ZSA+Pj0gMTsKKworCXJldHVybiBvcmRlcjsKK30KKworc3RhdGlj
IGlubGluZSBpbnQgZ2V0X29yZGVyX2Zyb21fcGFnZXModW5zaWduZWQgbG9uZyBucl9wYWdl
cykKK3sKKwlpbnQgb3JkZXI7CisKKwlucl9wYWdlcy0tOworCWZvciAoIG9yZGVyID0gMDsg
bnJfcGFnZXM7IG9yZGVyKysgKQorCQlucl9wYWdlcyA+Pj0gMTsKKworCXJldHVybiBvcmRl
cjsKK30KKworLyogQ29udmVydCBiZXR3ZWVuIFhlbi1oZWFwIHZpcnR1YWwgYWRkcmVzc2Vz
IGFuZCBtYWNoaW5lIGFkZHJlc3Nlcy4gKi8KKworI2RlZmluZSB2aXJ0X3RvX21hZGRyKGFk
ZHIpCV9fdmlydF90b19tYWRkcigodm9pZCAqKShhZGRyKSkKKyNkZWZpbmUgbWFkZHJfdG9f
dmlydChhZGRyKQlfX21hZGRyX3RvX3ZpcnQoKHBhZGRyX3QpKGFkZHIpKQorCisjZGVmaW5l
IHZpcnRfdG9fbWZuKGFkZHIpCSh2aXJ0X3RvX21hZGRyKGFkZHIpID4+IFBBR0VfU0hJRlQp
CisKKyNkZWZpbmUgdmlydF90b19wYWdlKGFkZHIpCShtZm5fdG9fcGFnZSh2aXJ0X3RvX21h
ZGRyKGFkZHIpID4+IFBBR0VfU0hJRlQpKQorI2RlZmluZSBwYWdlX3RvX3ZpcnQoX3BhZ2Up
CW1hZGRyX3RvX3ZpcnQocGFnZV90b19tZm4oX3BhZ2UpIDw8IFBBR0VfU0hJRlQpCisKKyNk
ZWZpbmUgX19wYShhZGRyKQkJKHZpcnRfdG9fbWFkZHIoYWRkcikpCisjZGVmaW5lIF9fdmEo
YWRkcikJCShtYWRkcl90b192aXJ0KGFkZHIpKQorCisKKyNkZWZpbmUgbWZuX3ZhbGlkKF9w
Zm4pCQkoKChfcGZuKSA+PSBtaW5fcGFnZSkgJiYgKChfcGZuKSA8PSBtYXhfcGFnZSkpCisK
KyNkZWZpbmUgbWZuX3RvX3BhZ2UoX3BmbikJKChzdHJ1Y3QgcGFnZV9pbmZvICopKGZyYW1l
X3RhYmxlICsgKChfcGZuKSAtIG1pbl9wYWdlKSkpCisjZGVmaW5lIHBhZ2VfdG9fbWZuKF9w
YWdlKQkoKHVuc2lnbmVkIGxvbmcpKChfcGFnZSArIG1pbl9wYWdlKSAtIGZyYW1lX3RhYmxl
ICkpCisjZGVmaW5lIHBhZ2VfdG9fbWFkZHIoX3BhZ2UpCShwYWdlX3RvX21mbihfcGFnZSkg
PDwgUEFHRV9TSElGVCkKKyNkZWZpbmUgbWFkZHJfdG9fcGFnZShhZGRyKQltZm5fdG9fcGFn
ZSgoYWRkciA+PiBQQUdFX1NISUZUKSkKKworI2RlZmluZSBtZm5fdG9fdmlydChfbWZuKQko
bWFkZHJfdG9fdmlydCgoKF9tZm4pIDw8IFBBR0VfU0hJRlQpKSkKKworI2RlZmluZSBwYWRk
cl90b19wZm4oYWRkcikJKCh1bnNpZ25lZCBsb25nKSgoYWRkcikgPj4gUEFHRV9TSElGVCkp
CisKKyNkZWZpbmUgaXNfeGVuX2hlYXBfbWZuKF9wZm4pCQkJXAorKHsJCQkJCQlcCisJdW5z
aWduZWQgbG9uZyBwaHlzOwkJCVwKKwlwaHlzID0gKF9wZm4pIDw8IFBBR0VfU0hJRlQ7CQlc
CisJKChwaHlzID49IHhlbmhlYXBfcGh5c19zdGFydCkgJiYJXAorCSAocGh5cyA8IHhlbmhl
YXBfcGh5c19lbmQpKTsJCVwKK30pCisKKyNkZWZpbmUgaXNfeGVuX2hlYXBfcGFnZShwYWdl
KSAgICAgICAgICAgICAgICAgIFwKKwlpc194ZW5faGVhcF9tZm4ocGFnZV90b19tZm4ocGFn
ZSkpCisKKyNkZWZpbmUgaXNfeGVuX2ZpeGVkX21mbihfbWZuKQkJCVwKKwlpc194ZW5faGVh
cF9tZm4oX21mbikKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgeGVuX3BoeXNfc3RhcnQ7Citz
dGF0aWMgaW5saW5lIHBhZGRyX3QgX192aXJ0X3RvX21hZGRyKHZvaWQgKmFkZHIpCit7CisJ
cmV0dXJuIChwYWRkcl90KShhZGRyKSAtIFhFTl9WSVJUX1NUQVJUICsgeGVuX3BoeXNfc3Rh
cnQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqX19tYWRkcl90b192aXJ0KHVuc2lnbmVk
IGxvbmcgYWRkcikKK3sKKwlyZXR1cm4gKHZvaWQgKikoKGFkZHIpICsgWEVOX1ZJUlRfU1RB
UlQgLSB4ZW5fcGh5c19zdGFydCk7Cit9CisKKyNkZWZpbmUgX19wYWdlX2FsaWduZWRfXyBc
CisgICAgX19hdHRyaWJ1dGVfdXNlZF9fIF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAo
Ii5ic3MucGFnZV9hbGlnbmVkIikpKQorCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwor
I2VuZGlmIC8qIF9fQVJNX1BBR0VfSF9fICovCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9p
bmNsdWRlL2FzbS1hcm0vcGNpLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wY2kuaAlGcmkgRmViIDAz
IDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIF9fQVNNX1BD
SV9IX18KKyNkZWZpbmUgX19BU01fUENJX0hfXworCitzdHJ1Y3QgYXJjaF9wY2lfZGV2IHsK
K307CisKKworI2VuZGlmCisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNt
LWFybS9wZXJjcHUuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oCUZyaSBGZWIgMDMgMTY6
MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDE2IEBACisjaWZuZGVmIF9fQVJNX1BFUkNQ
VV9IX18KKyNkZWZpbmUgX19BUk1fUEVSQ1BVX0hfXworCisjaWZuZGVmIF9fQVNTRU1CTFlf
XworI2RlZmluZSBfX0RFRklORV9QRVJfQ1BVKHR5cGUsIG5hbWUsIHN1ZmZpeCkgXAorCV9f
dHlwZW9mX18odHlwZSkgcGVyX2NwdV8jI25hbWVbTlJfQ1BVU10gPSB7MCx9CisKKyNkZWZp
bmUgREVDTEFSRV9QRVJfQ1BVKHR5cGUsIG5hbWUpIFwKKwlleHRlcm4gX190eXBlb2ZfXyh0
eXBlKSBwZXJfY3B1X18jI25hbWVbTlJfQ1BVU10KKworI2RlZmluZSBwZXJfY3B1KHZhciwg
Y3B1KQkocGVyX2NwdV9fIyN2YXJbY3B1XSkKKworI2RlZmluZSBfX2dldF9jcHVfdmFyKHZh
cikJcGVyX2NwdSh2YXIsIHNtcF9wcm9jZXNzb3JfaWQoKSkKKworI2VuZGlmIC8qICFfX0FT
U0VNQkxZICovCisjZW5kaWYgLyogIV9fQVJNX1BFUkNQVV9IX18gKi8KZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20t
YXJtL3Byb2Nlc3Nvci5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCww
ICsxLDIxOSBAQAorLyoKKyAqICBwcm9jZXNzb3IuaAorICoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBKYWVNaW4gUnl1ICA8am03
Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K
KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT
dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9f
QVJNX1BST0NFU1NPUl9IX18KKyNkZWZpbmUgX19BUk1fUFJPQ0VTU09SX0hfXworCisvKgor
ICogUFNSIGJpdHMKKyAqLworI2RlZmluZSBQU1JfTU9ERV9VU1IgICAgICAgICAgICAweDAw
MDAwMDEwCisjZGVmaW5lIFBTUl9NT0RFX0ZJUSAgICAgICAgICAgIDB4MDAwMDAwMTEKKyNk
ZWZpbmUgUFNSX01PREVfSVJRICAgICAgICAgICAgMHgwMDAwMDAxMgorI2RlZmluZSBQU1Jf
TU9ERV9TVkMgICAgICAgICAgICAweDAwMDAwMDEzCisjZGVmaW5lIFBTUl9NT0RFX0FCVCAg
ICAgICAgICAgIDB4MDAwMDAwMTcKKyNkZWZpbmUgUFNSX01PREVfVU5EICAgICAgICAgICAg
MHgwMDAwMDAxYgorI2RlZmluZSBQU1JfTU9ERV9TWVMgICAgICAgICAgICAweDAwMDAwMDFm
CisjZGVmaW5lIFBTUl9NT0RFX01BU0sgICAgICAgICAgIDB4MDAwMDAwMWYKKyNkZWZpbmUg
UFNSX1RfQklUICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBQU1JfRl9CSVQg
ICAgICAgICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFBTUl9JX0JJVCAgICAgICAgICAg
ICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgUFNSX0pfQklUICAgICAgICAgICAgICAgMHgwMTAw
MDAwMAorI2RlZmluZSBQU1JfUV9CSVQgICAgICAgICAgICAgICAweDA4MDAwMDAwCisjZGVm
aW5lIFBTUl9WX0JJVCAgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgUFNSX0Nf
QklUICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBQU1JfWl9CSVQgICAgICAg
ICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIFBTUl9OX0JJVCAgICAgICAgICAgICAgIDB4
ODAwMDAwMDAKKworLyoKKworICogR3JvdXBzIG9mIFBTUiBiaXRzCisgKi8KKyNkZWZpbmUg
UFNSX01BU0tfRkxBR1MgICAgICAgICAgMHhmZjAwMDAwMCAgICAgIC8qIEZsYWdzICAgICAg
ICAgICAgICAgICovCisjZGVmaW5lIFBTUl9NQVNLX1NUQVRVUyAgICAgICAgIDB4MDBmZjAw
MDAgICAgICAvKiBTdGF0dXMgICAgICAgICAgICAgICAqLworI2RlZmluZSBQU1JfTUFTS19F
WFRFTlNJT04gICAgICAweDAwMDBmZjAwICAgICAgLyogRXh0ZW5zaW9uICAgICAgICAgICAg
Ki8KKyNkZWZpbmUgUFNSX01BU0tfQ09OVFJPTCAgICAgICAgMHgwMDAwMDBmZiAgICAgIC8q
IENvbnRyb2wgICAgICAgICAgICAgICovCisKKworI2RlZmluZSBNSURSKHIpCQlwMTUsIDAs
IHIsICBjMCwgYzAsIDAKKyNkZWZpbmUgQ1RSKHIpCQlwMTUsIDAsIHIsICBjMCwgYzAsIDEK
KyNkZWZpbmUgVENNVFIocikJcDE1LCAwLCByLCAgYzAsIGMwLCAyCisjZGVmaW5lIFRMQlRS
KHIpCXAxNSwgMCwgciwgIGMwLCBjMCwgMworI2RlZmluZSBNUElEUihyKQlwMTUsIDAsIHIs
ICBjMCwgYzAsIDUKKyNkZWZpbmUgU0NUTFIocikJcDE1LCAwLCByLCAgYzEsIGMwLCAwCisj
ZGVmaW5lIEFDVExSKHIpCXAxNSwgMCwgciwgIGMxLCBjMCwgMQorI2RlZmluZSBTQ1IocikJ
CXAxNSwgMCwgciwgIGMxLCBjMSwgMAorI2RlZmluZSBTREVSKHIpCQlwMTUsIDAsIHIsICBj
MSwgYzEsIDEKKyNkZWZpbmUgTlNBQ1IocikJcDE1LCAwLCByLCAgYzEsIGMxLCAyCisjZGVm
aW5lIFRUQlIwKHIpCXAxNSwgMCwgciwgIGMyLCBjMCwgMAorI2RlZmluZSBUVEJSMShyKQlw
MTUsIDAsIHIsICBjMiwgYzAsIDEKKyNkZWZpbmUgVFRCQ1IocikJcDE1LCAwLCByLCAgYzIs
IGMwLCAyCisjZGVmaW5lIERBQ1IocikJCXAxNSwgMCwgciwgIGMzLCBjMCwgMAorI2RlZmlu
ZSBERlNSKHIpCQlwMTUsIDAsIHIsICBjNSwgYzAsIDAKKyNkZWZpbmUgSUZTUihyKQkJcDE1
LCAwLCByLCAgYzUsIGMwLCAxCisjZGVmaW5lIERGQVIocikJCXAxNSwgMCwgciwgIGM2LCBj
MCwgMAorI2RlZmluZSBJRkFSKHIpCQlwMTUsIDAsIHIsICBjNiwgYzAsIDIKKyNkZWZpbmUg
VkJBUihyKQkJcDE1LCAwLCByLCBjMTIsIGMwLCAwCisjZGVmaW5lIE1WQkFSKHIpCXAxNSwg
MCwgciwgYzEyLCBjMCwgMQorLyoKKyAqIFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyCisgKi8K
KyNkZWZpbmUgU0NUTFJfTSAgICAgICAgICgxIDw8IDApICAvKiBNTVUgZW5hYmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfQSAgICAgICAgICgxIDw8
IDEpICAvKiBBbGlnbm1lbnQgYWJvcnQgZW5hYmxlICAgICAgICAgICAgICAgKi8KKyNkZWZp
bmUgU0NUTFJfQyAgICAgICAgICgxIDw8IDIpICAvKiBEY2FjaGUgZW5hYmxlICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfVyAgICAgICAgICgxIDw8IDMpICAv
KiBXcml0ZSBidWZmZXIgZW5hYmxlICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NU
TFJfUCAgICAgICAgICgxIDw8IDQpICAvKiAzMi1iaXQgZXhjZXB0aW9uIGhhbmRsZXIgICAg
ICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfRCAgICAgICAgICgxIDw8IDUpICAvKiAzMi1i
aXQgZGF0YSBhZGRyZXNzIHJhbmdlICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfTCAg
ICAgICAgICgxIDw8IDYpICAvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkICAgICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgU0NUTFJfQiAgICAgICAgICgxIDw8IDcpICAvKiBCaWcgZW5kaWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfUyAgICAgICAg
ICgxIDw8IDgpICAvKiBTeXN0ZW0gTU1VIHByb3RlY3Rpb24gICAgICAgICAgICAgICAgKi8K
KyNkZWZpbmUgU0NUTFJfUiAgICAgICAgICgxIDw8IDkpICAvKiBST00gTU1VIHByb3RlY3Rp
b24gICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfU1cgICAgICAgICgxIDw8
IDEwKSAvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkICAgICAgICAgICAgICAgKi8KKyNkZWZp
bmUgU0NUTFJfWiAgICAgICAgICgxIDw8IDExKSAvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVk
ICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfSSAgICAgICAgICgxIDw8IDEyKSAv
KiBJY2FjaGUgZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NU
TFJfViAgICAgICAgICgxIDw8IDEzKSAvKiBWZWN0b3JzIHJlbG9jYXRlZCB0byAweGZmZmYw
MDAwICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfUlIgICAgICAgICgxIDw8IDE0KSAvKiBSb3Vu
ZCBSb2JpbiBjYWNoZSByZXBsYWNlbWVudCAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfTDQg
ICAgICAgICgxIDw8IDE1KSAvKiBMRFIgcGMgY2FuIHNldCBUIGJpdCAgICAgICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgU0NUTFJfRFQgICAgICAgICgxIDw8IDE2KQorI2RlZmluZSBTQ1RM
Ul9JVCAgICAgICAgKDEgPDwgMTgpCisjZGVmaW5lIFNDVExSX1NUICAgICAgICAoMSA8PCAx
OSkKKyNkZWZpbmUgU0NUTFJfRkkgICAgICAgICgxIDw8IDIxKSAvKiBGYXN0IGludGVycnVw
dCAobG93ZXIgbGF0ZW5jeSBtb2RlKSAgKi8KKyNkZWZpbmUgU0NUTFJfVSAgICAgICAgICgx
IDw8IDIyKSAvKiBVbmFsaWduZWQgYWNjZXNzIG9wZXJhdGlvbiAgICAgICAgICAgKi8KKyNk
ZWZpbmUgU0NUTFJfWFAgICAgICAgICgxIDw8IDIzKSAvKiBFeHRlbmRlZCBwYWdlIHRhYmxl
cyAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfVkUgICAgICAgICgxIDw8IDI0
KSAvKiBWZWN0b3JlZCBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUg
U0NUTFJfRUUgICAgICAgICgxIDw8IDI1KSAvKiBFeGNlcHRpb24gZW5kaWFuZXNzICAgICAg
ICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfTk1GSSAgICAgICgxIDw8IDI3KSAvKiBO
b25tYXNrYWJsZSBmYXN0IGludGVycnVwdCBlbmFibGUgICAgKi8KKyNkZWZpbmUgU0NUTFJf
VFJFICAgICAgICgxIDw8IDI4KSAvKiBURVggcmVtYXAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfQUZFICAgICAgICgxIDw8IDI5KSAvKiBBY2Nlc3Mg
ZmxhZyBlbmFibGUgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfVEUgICAg
ICAgICgxIDw8IDMwKSAvKiBUaHVtYiBleGNlcHRpb24gZW5hYmxlICAgICAgICAgICAgICAg
Ki8KKworLyoKKyAqIENvLVByb2Nlc3NvciBBY2Nlc3MgUmVnaXN0ZXIKKyAqLworI2RlZmlu
ZSBDUEFSX0JJVF9DUDAgICAgKDEgPDwgMCkKKyNkZWZpbmUgQ1BBUl9CSVRfQ1AxICAgICgx
IDw8IDEpCisjZGVmaW5lIENQQVJfQklUX0NQMiAgICAoMSA8PCAyKQorI2RlZmluZSBDUEFS
X0JJVF9DUDMgICAgKDEgPDwgMykKKyNkZWZpbmUgQ1BBUl9CSVRfQ1A0ICAgICgxIDw8IDQp
CisjZGVmaW5lIENQQVJfQklUX0NQNSAgICAoMSA8PCA1KQorI2RlZmluZSBDUEFSX0JJVF9D
UDYgICAgKDEgPDwgNikKKyNkZWZpbmUgQ1BBUl9CSVRfQ1A3ICAgICgxIDw8IDcpCisjZGVm
aW5lIENQQVJfQklUX0NQOCAgICAoMSA8PCA4KQorI2RlZmluZSBDUEFSX0JJVF9DUDkgICAg
KDEgPDwgOSkKKyNkZWZpbmUgQ1BBUl9CSVRfQ1AxMCAgICgxIDw8IDEwKQorI2RlZmluZSBD
UEFSX0JJVF9DUDExICAgKDEgPDwgMTEpCisjZGVmaW5lIENQQVJfQklUX0NQMTIgICAoMSA8
PCAxMikKKyNkZWZpbmUgQ1BBUl9CSVRfQ1AxMyAgICgxIDw8IDEzKQorCisvKgorICogQXV4
aWxpYXJ5IENvbnRyb2wgUmVnaXN0ZXIKKyAqLworI2RlZmluZSBBQ1RMUl9GVyAgICAgICAg
KDEgPDwgMCkgIC8qIENhY2hlIGFuZCBUTEIgbWFpbnRlbmFuY2UgYnJvYWRjYXN0ICAqLwor
I2RlZmluZSBBQ1RMUl9EUDIgICAgICAgKDEgPDwgMSkgIC8qIEwyIERzaWRlIHByZWZldGNo
ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBQ1RMUl9EUDEgICAgICAgKDEgPDwg
MikgIC8qIEwxIERzaWRlIHByZWZldGNoICAgICAgICAgICAgICAgICAgICAqLworI2RlZmlu
ZSBBQ1RMUl9GT1ogICAgICAgKDEgPDwgMykgIC8qIEZ1bGwgb2YgemVybyAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworI2RlZmluZSBBQ1RMUl9TTVAgICAgICAgKDEgPDwgNikgIC8q
IFNNUC9uQU1QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBQ1RM
Ul9FWENMICAgICAgKDEgPDwgNykgIC8qIEV4Y2x1c2l2ZSBjYWNoZSBlbmFibGUgICAgICAg
ICAgICAgICAqLworI2RlZmluZSBBQ1RMUl9QQVJPTiAgICAgKDEgPDwgOSkgIC8qIFBhcml0
eSBvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvKgorICogU2VjdXJlIENv
bmZpZ3VyYXRpb24gUmVnaXN0ZXIKKyAqLworI2RlZmluZSBTQ1JfTlMgICAgICAgICAgKDEg
PDwgMCkgIC8qIE5vbi1zZWN1cmUgbW9kZSAgICAgICAgICAgICAgICAgICAgICAqLworI2Rl
ZmluZSBTQ1JfSVJRICAgICAgICAgKDEgPDwgMSkgIC8qIElSUSBleGNlcHRpb24gaGFuZGxp
bmcgbW9kZSAgICAgICAgICAqLworI2RlZmluZSBTQ1JfRklRICAgICAgICAgKDEgPDwgMikg
IC8qIEZJUSBleGNlcHRpb24gaGFuZGxpbmcgbW9kZSAgICAgICAgICAqLworI2RlZmluZSBT
Q1JfRUEgICAgICAgICAgKDEgPDwgMykgIC8qIEV4dGVybmFsIGV4Y2VwdGlvbiBoYW5kbGlu
ZyBtb2RlICAgICAqLworI2RlZmluZSBTQ1JfRlcgICAgICAgICAgKDEgPDwgNCkgIC8qIEYg
Qml0IGFjY2VzcyBhbGxvdyBiaXQgICAgICAgICAgICAgICAqLworI2RlZmluZSBTQ1JfQVcg
ICAgICAgICAgKDEgPDwgNSkgIC8qIEEgYml0IGFjY2VzcyBhbGxvdyBiaXQgICAgICAgICAg
ICAgICAqLworCisjZGVmaW5lIE5TQUNSX05TU01QICAgICAoMSA8PCAxOCkKKyNkZWZpbmUg
TlNBQ1JfVEwgICAgICAgICgxIDw8IDE3KQorI2RlZmluZSBOU0FDUl9OU0FDRURJUyAgKDEg
PDwgMTUpCisjZGVmaW5lIE5TQUNSX05TRDMyRElTICAoMSA8PCAxNCkKKyNkZWZpbmUgTlNB
Q1JfQ1AxMSAgICAgICgxIDw8IDExKQorI2RlZmluZSBOU0FDUl9DUDEwICAgICAgKDEgPDwg
MTApCisKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2RlZmluZSBjcHVfdG9fY29yZShj
cHUpICAgICAgICAoMCkKKyNkZWZpbmUgY3B1X3RvX3NvY2tldChjcHUpICAgICAgKDApCisK
KyNkZWZpbmUgcDE0ICAgICAxNAorI2RlZmluZSBwMTUgICAgIDE1CisjZGVmaW5lIGMwICAg
ICAgMAorI2RlZmluZSBjMSAgICAgIDEKKyNkZWZpbmUgYzIgICAgICAyCisjZGVmaW5lIGMz
ICAgICAgMworI2RlZmluZSBjNCAgICAgIDQKKyNkZWZpbmUgYzUgICAgICA1CisjZGVmaW5l
IGM2ICAgICAgNgorI2RlZmluZSBjNyAgICAgIDcKKyNkZWZpbmUgYzggICAgICA4CisjZGVm
aW5lIGM5ICAgICAgOQorI2RlZmluZSBjMTAgICAgIDEwCisjZGVmaW5lIGMxMSAgICAgMTEK
KyNkZWZpbmUgYzEyICAgICAxMgorI2RlZmluZSBjMTMgICAgIDEzCisjZGVmaW5lIGMxNCAg
ICAgMTQKKyNkZWZpbmUgYzE1ICAgICAxNQorCisjZGVmaW5lIE1DUihjcCxvcDEsUmQsQ1Ju
LENSbSxvcDIpICBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oIiBtY3IgIiAjY3AiLCUxLCUy
LCIjQ1JuIiwiI0NSbSAiLCU1IiBcCisJOiA6ICJpIiAoY3ApLCAiaSIgKG9wMSksICJyIiAo
UmQpLCAiaSIgKENSbiksICJpIiAoQ1JtKSwgImkiIChvcDIpKQorCisjZGVmaW5lIE1SQyhj
cCxvcDEsUmQsQ1JuLENSbSxvcDIpICBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oICIgbXJj
ICIgI2NwIiwlMiwlMCwiICNDUm4iLCIjQ1JtIiwlNSIgXAorCTogIj1yIiAoUmQpIDogImki
IChjcCksICJpIiAob3AxKSwgImkiIChDUm4pLCAiaSIgKENSbSksICJpIiAob3AyKSkKKwor
c3RhdGljIGlubGluZSB2b2lkIGNwdV93YWl0X2Zvcl9ldmVudCh2b2lkKQoreworICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygid2ZlIiA6IDogOiAibWVtb3J5Iik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBjcHVfd2FpdF9mb3JfaW50ZXJydXB0KHZvaWQpCit7CisgICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZSgid2ZpIiA6IDogOiAibWVtb3J5Iik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBjcHVfc2VuZF9ldmVudCh2b2lkKQoreworICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygic2V2IiA6IDogOiAibWVtb3J5Iik7Cit9CisKKyNkZWZpbmUg
Q1BVX01PREVfU01QCTEKKyNkZWZpbmUgQ1BVX01PREVfQU1QCTAKKworc3RhdGljIGlubGlu
ZSB2b2lkIGNwdV9zZXRfY29oZXJlbmN5X21vZGUodW5zaWduZWQgaW50IG1vZGUpCit7CisJ
dW5zaWduZWQgbG9uZyBhdXg7CisKKwlNUkMocDE1LCAwLCBhdXgsIGMxLCBjMCwgMSk7CisK
KwlpZiAoKG1vZGUgPT0gQ1BVX01PREVfU01QKSkgeworCQlhdXggfD0gKEFDVExSX1NNUCB8
IEFDVExSX0ZXKTsKKwl9IGVsc2UgeworCQlhdXggJj0gfihBQ1RMUl9TTVAgfCBBQ1RMUl9G
Vyk7CisJfQorCisJTUNSKHAxNSwgMCwgYXV4LCBjMSwgYzAsIDEpOworfQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL3JlZ3Mu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL3JlZ3MuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5
MDAKQEAgLTAsMCArMSwxNyBAQAorI2lmbmRlZiBfX0FTTV9BUk1fUkVHU19IX18KKyNkZWZp
bmUgX19BU01fQVJNX1JFR1NfSF9fCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKyNpbmNs
dWRlIDxhc20vY3VycmVudC5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworc3RhdGljIGlu
bGluZSBpbnQgZ3Vlc3RfbW9kZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKwl3
aGlsZSgxKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLXIg
ZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vc21wLmgKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy
bS9zbXAuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyOCBA
QAorI2lmbmRlZiBfX0FSTV9TTVBfSF9fCisjZGVmaW5lIF9fQVJNX1NNUF9IX18KKworI2lu
Y2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KKyNpbmNs
dWRlIDx4ZW4vY3B1bWFzay5oPgorI2luY2x1ZGUgPHhlbi9wZXJjcHUuaD4KKyNpbmNsdWRl
IDxhc20vY3VycmVudC5oPgorCisjaWZuZGVmIF9BU1NFTUJMWV9fCisjZGVmaW5lIHJhd19z
bXBfcHJvY2Vzc29yX2lkKCkJCQlcCisoewkJCQkJCVwKKwl1bnNpZ25lZCBpbnQgaWQ7CQkJ
XAorCV9fYXNtX18oIm1yYyBwMTUsIDAsICUwLCBjMCwgYzAsIDUiCVwKKwkJOiAiPXIiIChp
ZCkpOwkJCVwKKwlpZCAmPSAweDBGOwkJCQlcCit9KQorCisjZGVmaW5lIGNwdV9pc19vZmZs
aW5lKGNwdSkJdW5saWtlbHkoIWNwdV9vbmxpbmUoY3B1KSkKKworREVDTEFSRV9QRVJfQ1BV
KGNwdW1hc2tfdmFyX3QsIGNwdV9zaWJsaW5nX21hc2spOworREVDTEFSRV9QRVJfQ1BVKGNw
dW1hc2tfdmFyX3QsIGNwdV9jb3JlX21hc2spOworCitERUNMQVJFX1BFUl9DUFUoY3B1bWFz
a190LCBjcHVfc2libGluZ19tYXApOworREVDTEFSRV9QRVJfQ1BVKGNwdW1hc2tfdCwgY3B1
X2NvcmVfbWFwKTsKKworI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKyNlbmRpZiAvKiAh
X19BUk1fU01QX0hfXyAqLwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20t
YXJtL3NvZnRpcnEuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3NvZnRpcnEuaAlGcmkgRmViIDAzIDE2
OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMSBAQAorI2lmbmRlZiBfX0FTTV9TT0ZU
SVJRX0hfXworI2RlZmluZSBfX0FTTV9TT0ZUSVJRX0hfXworCisjZGVmaW5lIFJFU0VSVkVE
X1NPRlRJUlEwCShOUl9DT01NT05fU09GVElSUVMgKyAwKQorI2RlZmluZSBSRVNFUlZFRF9T
T0ZUSVJRMQkoTlJfQ09NTU9OX1NPRlRJUlFTICsgMSkKKyNkZWZpbmUgVkNQVV9LSUNLX1NP
RlRJUlEJKE5SX0NPTU1PTl9TT0ZUSVJRUyArIDIpCisKKyNkZWZpbmUgTlJfQVJDSF9TT0ZU
SVJRUwkzCisKKyNlbmRpZiAvKiBfX0FTTV9TT0ZUSVJRX0hfXyAqLworCmRpZmYgLXIgZTcw
MTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vc3BpbmxvY2suaAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20t
YXJtL3NwaW5sb2NrLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAg
KzEsMjAwIEBACisjaWZuZGVmIF9fQVJNX1NQSU5MT0NLX0hfXworI2RlZmluZSBfX0FSTV9T
UElOTE9DS19IX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4v
bGliLmg+CisjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgorCisvKgorICogVW5sb2NrZWQgdmFs
dWUgOiAwCisgKiBMb2NrZWQgdmFsdWUgICA6IDEKKyAqLworI2RlZmluZSBfUkFXX1NQSU5f
TE9DS19VTkxPQ0tFRAl7IDAgfQorI2RlZmluZSBfUkFXX1JXX0xPQ0tfVU5MT0NLRUQJeyAw
IH0KKwordHlwZWRlZiBzdHJ1Y3QgeworCXZvbGF0aWxlIHVuc2lnbmVkIGludCBsb2NrOwor
fXJhd19zcGlubG9ja190OworCit0eXBlZGVmIHN0cnVjdCByd2xvY2sgeworCXZvbGF0aWxl
IHVuc2lnbmVkIGludCBsb2NrOworfXJhd19yd2xvY2tfdDsKKworI2RlZmluZSBfcmF3X3Nw
aW5faXNfbG9ja2VkKHgpCSgoeCktPmxvY2sgIT0gMCkKKworc3RhdGljIGlubGluZSB2b2lk
IF9yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQoreworCXVuc2lnbmVkIGxv
bmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisiMToJbGRyZXgJJTAsIFslMV1c
biIKKyIJdGVxCSUwLCAjMFxuIgorIgl3ZmVuZVxuIgorIglzdHJleGVxCSUwLCAlMiwgWyUx
XVxuIgorIgl0ZXFlcQklMCwgIzBcbiIKKyIJYm5lCTFiIgorCTogIj0mciIgKHRtcCkKKwk6
ICJyIiAoJmxvY2stPmxvY2spLCAiciIgKDEpCisJOiAiY2MiKTsKKworCW1iKCk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgaW50IF9yYXdfc3Bpbl90cnlsb2NrKHJhd19zcGlubG9ja190ICps
b2NrKQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18o
CisiCWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwg
JTIsIFslMV0iCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmbG9jay0+bG9jayksICJyIiAo
MSkKKwk6ICJjYyIpOworCisJaWYgKHRtcCA9PSAwKSB7CisJCW1iKCk7CisKKwkJcmV0dXJu
IDE7CisJfSBlbHNlIHsKKwkJcmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMgaW5saW5lIHZv
aWQgX3Jhd19zcGluX3VubG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jaykKK3sKKwltYigpOwor
CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisiCXN0cgklMSwgWyUwXVxuIgorIgltY3IJcDE1
LCAwLCAlMSwgYzcsIGMxMCwgNFxuIiAvKiBEU0IgKi8KKyIJc2V2IgorCToKKwk6ICJyIiAo
JmxvY2stPmxvY2spLCAiciIgKDApCisJOiAiY2MiKTsKK30KKworLyoKKyAqIFJXTE9DS1MK
KyAqCisgKgorICogV3JpdGUgbG9ja3MgYXJlIGVhc3kgLSB3ZSBqdXN0IHNldCBiaXQgMzEu
ICBXaGVuIHVubG9ja2luZywgd2UgY2FuCisgKiBqdXN0IHdyaXRlIHplcm8gc2luY2UgdGhl
IGxvY2sgaXMgZXhjbHVzaXZlbHkgaGVsZC4KKyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQg
X3Jhd193cml0ZV9sb2NrKHJhd19yd2xvY2tfdCAqcncpCit7CisJdW5zaWduZWQgbG9uZyB0
bXA7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIxOglsZHJleAklMCwgWyUxXVxuIgor
Igl0ZXEJJTAsICMwXG4iCisiCXdmZW5lXG4iCisiCXN0cmV4ZXEJJTAsICUyLCBbJTFdXG4i
CisiCXRlcQklMCwgIzBcbiIKKyIJYm5lCTFiIgorCTogIj0mciIgKHRtcCkKKwk6ICJyIiAo
JnJ3LT5sb2NrKSwgInIiICgweDgwMDAwMDAwKQorCTogImNjIik7CisKKwltYigpOworfQor
CitzdGF0aWMgaW5saW5lIGludCBfcmF3X3dyaXRlX3RyeWxvY2socmF3X3J3bG9ja190ICpy
dykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAor
IjE6CWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwg
JTIsIFslMV0iCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmcnctPmxvY2spLCAiciIgKDB4
ODAwMDAwMDApCisJOiAiY2MiKTsKKworCWlmICh0bXAgPT0gMCkgeworCQltYigpOworCQly
ZXR1cm4gMTsKKwl9IGVsc2UgeworCQlyZXR1cm4gMDsKKwl9Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBfcmF3X3dyaXRlX3VubG9jayhyYXdfcndsb2NrX3QgKnJ3KQoreworCW1iKCk7
CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkic3RyCSUxLCBbJTBdXG4iCisiCW1jcglw
MTUsIDAsICUxLCBjNywgYzEwLCA0XG4iIC8qIERTQiAqLworIglzZXZcbiIKKwk6CisJOiAi
ciIgKCZydy0+bG9jayksICJyIiAoMCkKKwk6ICJjYyIpOworfQorCisjZGVmaW5lIF9yYXdf
cndfaXNfbG9ja2VkKHgpCQkoKHgpLT5sb2NrICE9IDApCisjZGVmaW5lIF9yYXdfcndfaXNf
d3JpdGVfbG9ja2VkKHgpCSgoeCktPmxvY2sgPD0gMCkKKyNkZWZpbmUgX3Jhd193cml0ZV9j
YW5fbG9jayh4KQkJKCh4KS0+bG9jayA9PSAwKQorCitzdGF0aWMgaW5saW5lIHZvaWQgX3Jh
d19yZWFkX2xvY2socmF3X3J3bG9ja190ICpydykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCwg
dG1wMjsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorIjE6CWxkcmV4CSUwLCBbJTJdXG4i
CisiCWFkZHMJJTAsICUwLCAjMVxuIgorIglzdHJleHBsCSUxLCAlMCwgWyUyXVxuIgorIgl3
ZmVtaVxuIgorIglyc2JwbHMJJTAsICUxLCAjMFxuIgorIglibWkJMWIiCisJOiAiPSZyIiAo
dG1wKSwgIj0mciIgKHRtcDIpCisJOiAiciIgKCZydy0+bG9jaykKKwk6ICJjYyIpOworCisJ
bWIoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9yYXdfcmVhZF91bmxvY2socmF3X3J3
bG9ja190ICpydykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCwgdG1wMjsKKworCW1iKCk7CisK
KwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIxOglsZHJleAklMCwgWyUyXVxuIgorIglzdWIJ
JTAsICUwLCAjMVxuIgorIglzdHJleAklMSwgJTAsIFslMl1cbiIKKyIJdGVxCSUxLCAjMFxu
IgorIglibmUJMWJcbiIKKyIJY21wCSUwLCAjMFxuIgorIgltY3JlcSAgIHAxNSwgMCwgJTAs
IGM3LCBjMTAsIDRcbiIKKyIJc2V2ZXEiCisJOiAiPSZyIiAodG1wKSwgIj0mciIgKHRtcDIp
CisJOiAiciIgKCZydy0+bG9jaykKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIGlu
dCBfcmF3X3JlYWRfdHJ5bG9jayhyYXdfcndsb2NrX3QgKnJ3KQoreworCXVuc2lnbmVkIGxv
bmcgdG1wLCB0bXAyID0gMTsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorIjE6CWxkcmV4
CSUwLCBbJTJdXG4iCisiCWFkZHMJJTAsICUwLCAjMVxuIgorIglzdHJleHBsCSUxLCAlMCwg
WyUyXVxuIgorCTogIj0mciIgKHRtcCksICIrciIgKHRtcDIpCisJOiAiciIgKCZydy0+bG9j
aykKKwk6ICJjYyIpOworCisJbWIoKTsKKwlyZXR1cm4gdG1wMiA9PSAwOworfQorCisjZGVm
aW5lIF9yYXdfcmVhZF9jYW5fbG9jayh4KQkoKHgpLT5sb2NrIDwgMHg4MDAwMDAwMCkKKwor
I2RlZmluZSBfcmF3X3NwaW5fcmVsYXgobG9jaykJY3B1X3JlbGF4KCkKKyNkZWZpbmUgX3Jh
d19yZWFkX3JlbGF4KGxvY2spCWNwdV9yZWxheCgpCisjZGVmaW5lIF9yYXdfd3JpdGVfcmVs
YXgobG9jaykJY3B1X3JlbGF4KCkKKworI2VuZGlmIC8qIF9fQVNNX1NQSU5MT0NLX0ggKi8K
ZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9zdHJpbmcuaAotLS0g
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5j
bHVkZS9hc20tYXJtL3N0cmluZy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApA
QCAtMCwwICsxLDQ5IEBACisjaWZuZGVmIF9fQVNNX1NUUklOR19IX18KKyNkZWZpbmUgX19B
U01fU1RSSU5HX0hfXworCisvKgorICogV2UgZG9uJ3QgZG8gaW5saW5lIHN0cmluZyBmdW5j
dGlvbnMsIHNpbmNlIHRoZQorICogb3B0aW1pc2VkIGlubGluZSBhc20gdmVyc2lvbnMgYXJl
IG5vdCBzbWFsbC4KKyAqLworCisjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUlJDSFIKK2V4dGVy
biBjaGFyICogc3RycmNocihjb25zdCBjaGFyICogcywgaW50IGMpOworCisjZGVmaW5lIF9f
SEFWRV9BUkNIX1NUUkNIUgorZXh0ZXJuIGNoYXIgKiBzdHJjaHIoY29uc3QgY2hhciAqIHMs
IGludCBjKTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1DUFkKK2V4dGVybiB2b2lkICog
bWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBfX2tlcm5lbF9zaXplX3QpOworCisjZGVm
aW5lIF9fSEFWRV9BUkNIX01FTU1PVkUKK2V4dGVybiB2b2lkICogbWVtbW92ZSh2b2lkICos
IGNvbnN0IHZvaWQgKiwgX19rZXJuZWxfc2l6ZV90KTsKKworI2RlZmluZSBfX0hBVkVfQVJD
SF9NRU1DSFIKK2V4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQgKiwgaW50LCBfX2tl
cm5lbF9zaXplX3QpOworCisjZGVmaW5lIF9fSEFWRV9BUkNIX01FTVpFUk8KKyNkZWZpbmUg
X19IQVZFX0FSQ0hfTUVNU0VUCitleHRlcm4gdm9pZCAqIG1lbXNldCh2b2lkICosIGludCwg
X19rZXJuZWxfc2l6ZV90KTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9CQ09QWQorCitleHRl
cm4gdm9pZCBfX21lbXplcm8odm9pZCAqcHRyLCBfX2tlcm5lbF9zaXplX3Qgbik7CisKKyNk
ZWZpbmUgbWVtc2V0KHAsdixuKQkJCQkJCVwKKyh7CQkJCQkJCQlcCisJaWYgKChuKSAhPSAw
KSB7CQkJCQkJXAorCQlpZiAoX19idWlsdGluX2NvbnN0YW50X3AoKHYpKSAmJiAodikgPT0g
MCkJXAorCQkJX19tZW16ZXJvKChwKSwobikpOwkJCVwKKwkJZWxzZQkJCQkJCVwKKwkJCW1l
bXNldCgocCksKHYpLChuKSk7CQkJXAorCX0JCQkJCQkJXAorCShwKTsJCQkJCQkJXAorfSkK
KworI2RlZmluZSBtZW16ZXJvKHAsbikgCQkJCVwKKyh7IAkJCQkJCVwKKwlpZiAoKG4pICE9
IDApIAkJCQlcCisJCV9fbWVtemVybygocCksKG4pKTsgKHApOyAJXAorfSkKKworI2VuZGlm
CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vc3lzdGVtLmgKLS0t
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLWFybS9zeXN0ZW0uaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAK
QEAgLTAsMCArMSwxNDggQEAKKyNpZm5kZWYgX19BU01fU1lTVEVNX0gKKyNkZWZpbmUgX19B
U01fU1lTVEVNX0gKKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKworI2RlZmluZSBfX2Fz
bWVxKHgsIHkpICAiLmlmbmMgIiB4ICIsIiB5ICIgOyAuZXJyIDsgLmVuZGlmXG5cdCIKKwor
I2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyoKKyAqIGRtYiA6IERhdGEgTWVtb3J5IEJhcnJp
ZXIKKyAqIGRzYiA6IERhdGEgU3luY2hyb25pemF0aW9uIEJhcnJpZXIKKyAqIAktPiBEcmFp
biBXcml0ZSBCdWZmZXIgaW4gZWFybGllciBvZiB0aGUgYXJjaGl0ZWN0dXJlCisgKiBpc2Ig
OiBJbnN0cnVjdGlvbiBTeW5jaHJvbml6YXRpb24gQmFycmllcgorICogCS0+IEZsdXNoIHBp
cGVsaW5lIGFuZCBicmFjaCB0YXJnZXQgYnVmZmVycy4KKyAqLworCisjZGVmaW5lIGlzYigp
IF9fYXNtX18gX192b2xhdGlsZV9fICgiaXNiIiA6IDogOiAibWVtb3J5IikKKyNkZWZpbmUg
ZHNiKCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJkc2IiIDogOiA6ICJtZW1vcnkiKQorI2Rl
ZmluZSBkbWIoKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImRtYiIgOiA6IDogIm1lbW9yeSIp
CisKKyNkZWZpbmUgbWIoKQkJZG1iKCkKKyNkZWZpbmUgcm1iKCkgCQlkbWIoKQorI2RlZmlu
ZSB3bWIoKSAJCWRtYigpCisKKyNkZWZpbmUgY3B1X3JlbGF4KCkJZG1iKCkKKworI2RlZmlu
ZSBzbXBfcm1iKCkJcm1iKCkKKyNkZWZpbmUgc21wX3dtYigpCXdtYigpCisjZGVmaW5lIHNt
cF9tYigpCWRtYigpCisKKyNkZWZpbmUgbG9jYWxfaXJxX3NhdmUoeCkJCVwKKyh7CQkJCQlc
CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQlcCisJCSJtcnMgICAgJTAsIGNwc3IgXG4iCVwK
KwkJImNwc2lkICBpIgkJXAorCQk6ICI9ciIgKHgpCQlcCisJCToJCQlcCisJCTogIm1lbW9y
eSIsICJjYyIpOwlcCit9KQorCisjZGVmaW5lIGxvY2FsX2lycV9lbmFibGUoKSAgX19hc21f
XygiY3BzaWUgaSAgICBAIF9fc3RpIiA6IDogOiAibWVtb3J5IiwgImNjIikKKyNkZWZpbmUg
bG9jYWxfaXJxX2Rpc2FibGUoKSBfX2FzbV9fKCJjcHNpZCBpICAgIEAgX19jbGkiIDogOiA6
ICJtZW1vcnkiLCAiY2MiKQorI2RlZmluZSBsb2NhbF9maXFfZW5hYmxlKCkgIF9fYXNtX18o
ImNwc2llIGYgICAgQCBfX3N0ZiIgOiA6IDogIm1lbW9yeSIsICJjYyIpCisjZGVmaW5lIGxv
Y2FsX2ZpcV9kaXNhYmxlKCkgX19hc21fXygiY3BzaWQgZiAgICBAIF9fY2xmIiA6IDogOiAi
bWVtb3J5IiwgImNjIikKKworLyoKKyAqIFNhdmUgdGhlIGN1cnJlbnQgaW50ZXJydXB0IGVu
YWJsZSBzdGF0ZS4KKyAqLworI2RlZmluZSBsb2NhbF9zYXZlX2ZsYWdzKHgpCQlcCisoewkJ
CQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJXAorCSJtcnMJJTAsIGNwc3JcbiIJCVwK
Kwk6ICI9ciIgKHgpIDogOiAibWVtb3J5IiwgImNjIik7CVwKK30pCisKKy8qCisgKiByZXN0
b3JlIHNhdmVkIElSUSAmIEZJUSBzdGF0ZQorICovCisjZGVmaW5lIGxvY2FsX2lycV9yZXN0
b3JlKHgpCQlcCisoewkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJXAorCSJtc3IJ
Y3Bzcl9jLCAlMFxuIgkJXAorCToJCQkJXAorCTogInIiICh4KQkJCVwKKwk6ICJtZW1vcnki
LCAiY2MiKTsJCVwKK30pCisKKyNkZWZpbmUgaXJxc19kaXNhYmxlZCgpCQkJCVwKKyh7CQkJ
CQlcCisJdW5zaWduZWQgbG9uZyBmbGFnczsJCVwKKwlsb2NhbF9zYXZlX2ZsYWdzKGZsYWdz
KTsJXAorCWZsYWdzICYgUFNSX0lfQklUOwkJXAorfSkKKworI2RlZmluZSBsb2NhbF9pcnFf
aXNfZW5hYmxlZCgpCSghaXJxc19kaXNhYmxlZCgpKQorCitzdGF0aWMgaW5saW5lIHZvaWQg
bm9wKHZvaWQpCit7CisJYXNtIHZvbGF0aWxlKCJub3AiKTsKK30KKworc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBpbnQgZ2V0X2NyKHZvaWQpCit7CisJdW5zaWduZWQgaW50IHZhbDsKKwlh
c20oIm1yYyBwMTUsIDAsICUwLCBjMSwgYzAsIDAiIDogIj1yIih2YWwpIDogOiAiY2MiKTsK
KworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfY3IodW5zaWdu
ZWQgaW50IHZhbCkKK3sKKwlhc20gdm9sYXRpbGUoIm1jciBwMTUsIDAsICUwLCBjMSwgYzAs
IDAiIDogOiAiciIodmFsKSA6ICJjYyIpOworCisJaXNiKCk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyBfeGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQg
KiBwdHIsIGludCBzaXplKQoreworCXVuc2lnbmVkIGxvbmcgcmV0OworCXVuc2lnbmVkIGlu
dCB0bXA7CisKKwlzd2l0Y2ggKHNpemUpIHsKKyAgICAgICAgY2FzZSAxOgorCQlfX2FzbV9f
IF9fdm9sYXRpbGVfXygKKwkJIjE6ICAgICBsZHJleGIgICUwLCBbJTNdXG4iCisJCSIgICAg
ICAgc3RyZXhiICAlMSwgJTIsIFslM11cbiIKKwkJIiAgICAgICB0ZXEgICAgICUxLCAjMFxu
IgorCQkiICAgICAgIGJuZSAgICAgMWIiCisJCTogIj0mciIgKHJldCksICI9JnIiICh0bXAp
CisJCTogInIiICh4KSwgInIiIChwdHIpCisJCTogIm1lbW9yeSIsICJjYyIpOworCQlicmVh
azsKKwljYXNlIDQ6CisJCV9fYXNtX18gX192b2xhdGlsZV9fKCJAIF9feGNoZzRcbiIKKwkJ
IjE6ICAgICBsZHJleCAgICUwLCBbJTNdXG4iCisJCSIgICAgICAgc3RyZXggICAlMSwgJTIs
IFslM11cbiIKKwkJIiAgICAgICB0ZXEgICAgICUxLCAjMFxuIgorCQkiICAgICAgIGJuZSAg
ICAgMWIiCisJCTogIj0mciIgKHJldCksICI9JnIiICh0bXApCisJCTogInIiICh4KSwgInIi
IChwdHIpCisJCTogIm1lbW9yeSIsICJjYyIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQly
ZXQgPSAwOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCisjZGVmaW5lIGNt
cHhjaGcocHRyLCBvbGQsIG5ldykJCQkJCQlcCisoeyAJCQkJCQkJCQlcCisJX190eXBlb2Zf
XygqKHB0cikpIHByZXY7IAkJCQkJXAorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkJCQkJXAor
CWxvY2FsX2lycV9zYXZlKGZsYWdzKTsJCQkJCQlcCisJcHJldiA9ICooKF9fdHlwZW9mX18o
KihwdHIpKSAqKXB0cik7IAkJCQlcCisJaWYocHJldiA9PSBvbGQpIAkJCQkJCVwKKwkJKigo
X190eXBlb2ZfXygqKHB0cikpICopcHRyKSA9IChfX3R5cGVvZl9fKCoocHRyKSkpbmV3Owlc
CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkJCQkJXAorCXByZXY7IAkJCQkJCQkJXAor
fSkKKworI2RlZmluZSB4Y2hnKHB0cix2KQlcCisJKChfX3R5cGVvZl9fKCoocHRyKSkpX3hj
aGcoKHVuc2lnbmVkIGxvbmcpKHYpLChwdHIpLHNpemVvZigqKHB0cikpKSkKKworI2VuZGlm
IC8qIF9fQVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIV9fU1lTVEVNX0hfXyAqLwpkaWZmIC1y
IGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2NvbmZpZy5oCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNs
dWRlL2FzbS1hcm0vdGVncmEvY29uZmlnLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX19URUdSQV9DT05GSUdfSF9fCisjZGVm
aW5lIF9fVEVHUkFfQ09ORklHX0hfXworCisjZGVmaW5lIEhaCTEwMAorI2RlZmluZSBDTE9D
S19USUNLX1JBVEUJCTEwMDAwMDAKKworI2RlZmluZSBNQVhfUEhZU19DUFVTCQkyCisKKyNk
ZWZpbmUgQlVJTFRJTl9DT01NQU5EX0xJTkVfU0laRSAyNTYKKyNkZWZpbmUgQlVJTFRJTl9D
T01NQU5EX0xJTkUJIiIKKyNlbmRpZgpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVk
ZS9hc20tYXJtL3RpbWUuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3RpbWUuaAlGcmkgRmViIDAzIDE2
OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyNCBAQAorI2lmbmRlZiBfX0FTTV9USU1F
X0hfXworI2RlZmluZSBfX0FTTV9USU1FX0hfXworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5o
PgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CisK
KyNpZm5kZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIHdhdGNoZG9nX2Rpc2FibGUoKSAoKHZv
aWQpMCkKKyNkZWZpbmUgd2F0Y2hkb2dfZW5hYmxlKCkgICgodm9pZCkwKQorCitzdHJ1Y3Qg
dG07CitzdHJ1Y3QgdG0gd2FsbGNsb2NrX3RpbWUodm9pZCk7CisKK3R5cGVkZWYgdTY0IGN5
Y2xlX3Q7CisKK3N0YXRpYyBpbmxpbmUgY3ljbGVfdCBnZXRfY3ljbGVzKHZvaWQpCit7CisJ
cmV0dXJuIDA7Cit9CisKK3ZvaWQgdGltZWtlZXBpbmdfaW5pdCh2b2lkKTsKKyNlbmRpZgor
I2VuZGlmCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vdHJhY2Uu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL3RyYWNlLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0FSTV9UUkFDRV9IX18KKyNkZWZpbmUg
X19BUk1fVFJBQ0VfSF9fCisKKworI2VuZGlmIC8qIV9fQVJNX1RSQUNFX0hfXyovCisKZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS90eXBlcy5oCi0tLSAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRl
L2FzbS1hcm0vdHlwZXMuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAs
MCArMSw1OCBAQAorI2lmbmRlZiBfX0FSTV9UWVBFU19IX18KKyNkZWZpbmUgX19BUk1fVFlQ
RVNfSF9fCisKKyNkZWZpbmUgQklUU19QRVJfTE9ORwkzMgorI2RlZmluZSBCWVRFU19QRVJf
TE9ORwk0CisjZGVmaW5lIExPTkdfQllURU9SREVSCTIKKworI2lmbmRlZiBfX0FTU0VNQkxZ
X18KKy8qCisgKiBfX3h4IGlzIG9rOiBpdCBkb2Vzbid0IHBvbGx1dGUgdGhlIFBPU0lYIG5h
bWVzcGFjZS4gVXNlIHRoZXNlIGluIHRoZQorICogaGVhZGVyIGZpbGVzIGV4cG9ydGVkIHRv
IHVzZXIgc3BhY2UKKyAqLworCit0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4OwordHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7CisKK3R5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBf
X3MxNjsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTY7CisKK3R5cGVkZWYgX19zaWdu
ZWRfXyBpbnQgX19zMzI7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKKworI2lmIGRl
ZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKK3R5cGVkZWYg
X19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBfX3U2NDsKKyNlbmRpZgorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGh5c2FkZHJfdDsK
KwordHlwZWRlZiBzaWduZWQgY2hhciBzODsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsK
KwordHlwZWRlZiBzaWduZWQgc2hvcnQgczE2OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1
MTY7CisKK3R5cGVkZWYgc2lnbmVkIGludCBzMzI7Cit0eXBlZGVmIHVuc2lnbmVkIGludCB1
MzI7CisKK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7Cit0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyB1NjQ7CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBwYWRkcl90OwordHlw
ZWRlZiB1bnNpZ25lZCBsb25nIHZhZGRyX3Q7CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBz
aXplX3Q7CisKK3R5cGVkZWYgY2hhciBib29sX3Q7CisKKyNkZWZpbmUgdGVzdF9hbmRfc2V0
X2Jvb2woYikJeGNoZygmKGIpLCAxKQorI2RlZmluZSB0ZXN0X2FuZF9jbGVhcl9ib29sKGIp
CXhjaGcoJihiKSwgMCkKKworI2RlZmluZSByb3VuZF91cChfcCwgX3MpICAgICAgICAoKCh1
bnNpZ25lZCBsb25nKShfcCkgKyAoKF9zKSAtIDEpKSAmIH4oKF9zKSAtIDEpKQorI2RlZmlu
ZSByb3VuZF9kb3duKF9wLCBfcykgICAgICAoKHVuc2lnbmVkIGxvbmcpKF9wKSAmIH4oKF9z
KSAtIDEpKQorCisjZGVmaW5lIHJvdW5kX3VwX2FuZF9kaXYoX3AsIF9zKSAocm91bmRfdXAo
X3AsIF9zKSAvIF9zKQorI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYKZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS94ZW5vcHJvZi5oCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNs
dWRlL2FzbS1hcm0veGVub3Byb2YuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAK
QEAgLTAsMCArMSw0MyBAQAorI2lmbmRlZiBfX0FTTV9YRU5PUFJPRl9IX18KKyNkZWZpbmUg
X19BU01fWEVOT1BST0ZfSF9fCisKKyNkZWZpbmUgeGVub3Byb2ZfYXJjaF9yZXNlcnZlX2Nv
dW50ZXJzKCkJKDApCisjZGVmaW5lIHhlbm9wcm9mX2FyY2hfc2V0dXBfZXZlbnRzKCkJCSgw
KQorI2RlZmluZSB4ZW5vcHJvZl9hcmNoX2VuYWJsZV92aXJxKCkJCSgwKQorI2RlZmluZSB4
ZW5vcHJvZl9hcmNoX3N0YXJ0KCkgCQkJKDApCisjZGVmaW5lIHhlbm9wcm9mX2FyY2hfc3Rv
cCgpCisjZGVmaW5lIHhlbm9wcm9mX2FyY2hfZGlzYWJsZV92aXJxKCkgCisjZGVmaW5lIHhl
bm9wcm9mX2FyY2hfcmVsZWFzZV9jb3VudGVycygpCisKKworI2RlZmluZSB4ZW5vcHJvZl9z
aGFyZWRfZ21mbihkLCBnbWFkZHIsIG1hZGRyKQlcCitkbyB7CQkJCQkJXAorCSh2b2lkKSht
YWRkcik7CQkJCVwKK30gd2hpbGUgKDApCisKKworc3RhdGljIGlubGluZSB2b2lkIGlic19p
bml0KHZvaWQpIHt9CisjZGVmaW5lIGlic19jYXBzIDAKKworc3RhdGljIGlubGluZSBpbnQg
eGVub3Byb2ZfYmFja3RyYWNlX3N1cHBvcnRlZCh2b2lkKQoreworCXJldHVybiAwOworfQor
CitzdHJ1Y3QgdmNwdTsKK3N0cnVjdCBjcHVfdXNlcl9yZWdzOworCitpbnQgeGVub3Byb2Zf
YXJjaF9jb3VudGVyKFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKTsKK2ludCBjb21wYXRf
b3Byb2ZfYXJjaF9jb3VudGVyKFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKTsKK2ludCB4
ZW5vcHJvZl9hcmNoX2lic19jb3VudGVyKFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKTsK
Kworc3RhdGljIGlubGluZSB2b2lkIHhlbm9wcm9mX2JhY2t0cmFjZSgKKyAgICBzdHJ1Y3Qg
ZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdmNwdSwKKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVn
cyAqY29uc3QgcmVncywgdW5zaWduZWQgbG9uZyBkZXB0aCwgaW50IG1vZGUpIHt9CisKK3N0
YXRpYyBpbmxpbmUgaW50IHhlbm9wcm9mX2FyY2hfaW5pdChpbnQgKm51bV9ldmVudHMsIGNo
YXIgKmNwdV90eXBlKQoreworCXJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvcHVibGlj
L2FyY2gtYXJtLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEs
MTgwIEBACisjaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX0FSTV8zMl9IX18KKyNkZWZpbmUg
X19YRU5fUFVCTElDX0FSQ0hfQVJNXzMyX0hfXworCisjZGVmaW5lIFZQU1JfTU9ERV9TVkMy
NiAgICAgICAgIDB4MDAwMDAwMDMKKyNkZWZpbmUgVlBTUl9NT0RFX1VTUiAgICAgICAgICAg
MHgwMDAwMDAxMAorI2RlZmluZSBWUFNSX01PREVfRklRICAgICAgICAgICAweDAwMDAwMDEx
CisjZGVmaW5lIFZQU1JfTU9ERV9JUlEgICAgICAgICAgIDB4MDAwMDAwMTIKKyNkZWZpbmUg
VlBTUl9NT0RFX1NWQyAgICAgICAgICAgMHgwMDAwMDAxMworI2RlZmluZSBWUFNSX01PREVf
QUJUICAgICAgICAgICAweDAwMDAwMDE3CisjZGVmaW5lIFZQU1JfTU9ERV9VTkQgICAgICAg
ICAgIDB4MDAwMDAwMWIKKyNkZWZpbmUgVlBTUl9NT0RFX1NZUyAgICAgICAgICAgMHgwMDAw
MDAxZgorI2RlZmluZSBWUFNSX01PREVfTUFTSyAgICAgICAgICAweDAwMDAwMDFmCisKKyNk
ZWZpbmUgVlBTUl9UX0JJVCAgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBWUFNS
X0ZfQklUICAgICAgICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFZQU1JfSV9CSVQgICAg
ICAgICAgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgVlBTUl9KX0JJVCAgICAgICAgICAgICAg
MHgwMTAwMDAwMAorI2RlZmluZSBWUFNSX1FfQklUICAgICAgICAgICAgICAweDA4MDAwMDAw
CisjZGVmaW5lIFZQU1JfVl9CSVQgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUg
VlBTUl9DX0JJVCAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBWUFNSX1pfQklU
ICAgICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIFZQU1JfTl9CSVQgICAgICAgICAg
ICAgIDB4ODAwMDAwMDAKKworLyoKKyAqIEdyb3VwcyBvZiBQU1IgYml0cworICovCisjZGVm
aW5lIFZQU1JfTUFTS19JTlRSICAgICAgICAgIChWUFNSX0lfQklUIHwgVlBTUl9GX0JJVCkK
KyNkZWZpbmUgVlBTUl9NQVNLX01PREUgICAgICAgICAgMHgwMDAwMDFmCisjZGVmaW5lIFZQ
U1JfTUFTS19GTEFHUyAgICAgICAgIDB4ZmYwMDAwMDAgICAgICAvKiBGbGFncyAgICAgICAg
ICAgICAgICAqLworI2RlZmluZSBWUFNSX01BU0tfU1RBVFVTICAgICAgICAweDAwZmYwMDAw
ICAgICAgLyogU3RhdHVzICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVlBTUl9NQVNLX0VY
VEVOU0lPTiAgICAgMHgwMDAwZmYwMCAgICAgIC8qIEV4dGVuc2lvbiAgICAgICAgICAgICov
CisjZGVmaW5lIFZQU1JfTUFTS19DT05UUk9MICAgICAgIDB4MDAwMDAwZmYgICAgICAvKiBD
b250cm9sICAgICAgICAgICAgICAqLworCisvKgorICogSFlQRVJDQUxMUyBmb3IgQVJNIGFy
Y2hpdGVjdHVyZQorICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9yZXN0b3JlX3RyYXBfZnJh
bWUgICAgICAgICAgICAyMworCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfY3B1X2RvbWFp
biAgICAgICAgICAgICAgICA0OAorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9fc2V0X2ZvcmVn
cm91bmRfZG9tYWluICAgICAgNDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvX2djb3Zfb3Ag
ICAgICAgICAgICAgICAgICAgIDQwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kb192ZnBfb3Ag
ICAgICAgICAgICAgICAgICAgICA1MQorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9fc2V0X3Rs
cyAgICAgICAgICAgICAgICAgICAgNTIKKworI2RlZmluZSBUTEJGX0lUTEIgICAgICAgICAg
ICAgICAxCisjZGVmaW5lIFRMQkZfRFRMQiAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgVExC
Rl9BU0lEICAgICAgICAgICAgICAgNAorCisKKyNkZWZpbmUgQ01EX0ZNUlggICAgICAgICAg
ICAgICAgMAorI2RlZmluZSBDTURfRk1YUiAgICAgICAgICAgICAgICAxCisKKyNkZWZpbmUg
RlBFWENfWEVOICAgICAgICAgICAgICAgMAorI2RlZmluZSBGUElOU1RfWEVOICAgICAgICAg
ICAgICAxCisjZGVmaW5lIEZQSU5TVDJfWEVOICAgICAgICAgICAgIDIKKyNkZWZpbmUgTVZG
UjBfWEVOICAgICAgICAgICAgICAgMworCisvKiBGUEVYQyBiaXRzICovCisjZGVmaW5lIEZQ
RVhDX0VYQ0VQVElPTiAgICAgICAgICgxPDwzMSkKKyNkZWZpbmUgRlBFWENfRU5BQkxFICAg
ICAgICAgICAgKDE8PDMwKQorCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaWZkZWYgX19Y
RU5fXworI2RlZmluZSBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSBc
CisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0eXBlICpwOyB9IF9fZ3Vlc3RfaGFuZGxlXyAjIyBu
YW1lCisjZWxzZQorI2RlZmluZSBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0
eXBlKSBcCisgICAgdHlwZWRlZiB0eXBlICogX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyNl
bmRpZgorICAgIAorI2RlZmluZSBfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5
cGUpIFwKKyAgICBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKTsgICBc
CisgICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY29uc3RfIyNuYW1lLCBjb25zdCB0
eXBlKQorCisjZGVmaW5lIERFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUpIF9fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgbmFtZSkKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRM
RShuYW1lKSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyAgICAKKworLyoKKyAq
IFZpcnR1YWwgYWRkcmVzc2VzIGJleW9uZCB0aGlzIGFyZSBub3QgbW9kaWZpYWJsZSBieSBn
dWVzdCBPU2VzLiBUaGUgCisgKiBtYWNoaW5lLT5waHlzaWNhbCBtYXBwaW5nIHRhYmxlIHN0
YXJ0cyBhdCB0aGlzIGFkZHJlc3MsIHJlYWQtb25seS4KKyAqLworI2RlZmluZSBfX0hZUEVS
VklTT1JfVklSVF9TVEFSVCAweEZDMDAwMDAwCisKKyNpZm5kZWYgSFlQRVJWSVNPUl9WSVJU
X1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9sb25n
KF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKKyNpZm5kZWYgbWFjaGluZV90
b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcgKCh1bnNp
Z25lZCBsb25nICopSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKK3R5cGVkZWYg
dW5zaWduZWQgbG9uZyB4ZW5fcGZuX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgeGVuX3Vs
b25nX3Q7CisKK3R5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB7CisJdW5zaWduZWQgbG9uZyBp
bnN0cnVjdGlvbjsKK310cmFwX2luZm9fdDsKKworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
dHJhcF9pbmZvX3QpOworCit0eXBlZGVmIHN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgewor
CXVuc2lnbmVkIGxvbmcJcjA7CisJdW5zaWduZWQgbG9uZwlyMTsKKwl1bnNpZ25lZCBsb25n
CXIyOworCXVuc2lnbmVkIGxvbmcJcjM7CisJdW5zaWduZWQgbG9uZwlyNDsKKwl1bnNpZ25l
ZCBsb25nCXI1OworCXVuc2lnbmVkIGxvbmcJcjY7CisJdW5zaWduZWQgbG9uZwlyNzsKKwl1
bnNpZ25lZCBsb25nCXI4OworCXVuc2lnbmVkIGxvbmcJcjk7CisJdW5zaWduZWQgbG9uZwly
MTA7CisJdW5zaWduZWQgbG9uZwlyMTE7CisJdW5zaWduZWQgbG9uZwlyMTI7CisJdW5zaWdu
ZWQgbG9uZwlyMTM7CisJdW5zaWduZWQgbG9uZwlyMTQ7CisJdW5zaWduZWQgbG9uZwlyMTU7
CisJdW5zaWduZWQgbG9uZyAgIHZiYXI7CisJdW5zaWduZWQgbG9uZyAgIGRhY3I7CisJdW5z
aWduZWQgbG9uZyAgIGNvbnRleHRpZHI7CisJdW5zaWduZWQgbG9uZyAgIGZjc2VpZHI7CisJ
dW5zaWduZWQgbG9uZyAgIHR0YnIwOworCXVuc2lnbmVkIGxvbmcgICB0dGJyMTsKKwl1bnNp
Z25lZCBsb25nICAgdHRiY3I7CisJdW5zaWduZWQgbG9uZwljcGFyOworfSB2Y3B1X2d1ZXN0
X2NvbnRleHRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29udGV4
dF90KTsKKwordHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgICAgIHVuc2ln
bmVkIGxvbmcgICByMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxOworICAgICAgICB1
bnNpZ25lZCBsb25nICAgcjI7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgICByMzsKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyAgIHI0OworICAgICAgICB1bnNpZ25lZCBsb25nICAgcjU7Cisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgICByNjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHI3
OworICAgICAgICB1bnNpZ25lZCBsb25nICAgcjg7CisgICAgICAgIHVuc2lnbmVkIGxvbmcg
ICByOTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxMDsKKyAgICAgICAgdW5zaWduZWQg
bG9uZyAgIHIxMTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxMjsKKyAgICAgICAgdW5z
aWduZWQgbG9uZyAgIHIxMzsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxNDsKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyAgIHIxNTsKKwl1bnNpZ25lZCBsb25nCXBzcjsKK30gY3B1X3Vz
ZXJfcmVnc190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsK
KwordHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8geworCXVuc2lnbmVkIGxvbmcJc3A7
CisJdW5zaWduZWQgbG9uZwlscjsKKwl1bnNpZ25lZCBsb25nCWNwc3I7CisJdW5zaWduZWQg
bG9uZwlzcHNyOworCXVuc2lnbmVkIGxvbmcJY3I7CisJdW5zaWduZWQgbG9uZwljcGFyOwor
CXVuc2lnbmVkIGxvbmcJZGFjcjsKKwl1bnNpZ25lZCBsb25nCXBpZHI7CisJdW5zaWduZWQg
bG9uZwlmYXI7CisJdW5zaWduZWQgbG9uZwlmc3I7CisJdW5zaWduZWQgbG9uZwlyZXNlcnZl
ZDEwOworCXVuc2lnbmVkIGxvbmcJcmVzZXJ2ZWQxMTsKKwl1bnNpZ25lZCBsb25nCXJlc2Vy
dmVkMTI7CisJdW5zaWduZWQgbG9uZwlyZXNlcnZlZDEzOworCXVuc2lnbmVkIGxvbmcJcmVz
ZXJ2ZWQxNDsKK30gYXJjaF92Y3B1X2luZm9fdDsKKworI2RlZmluZSBYRU5fTEVHQUNZX01B
WF9WQ1BVUwk0CisKK3R5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8geworCXVuc2ln
bmVkIGxvbmcJcGxhdGZvcm07CisJdW5zaWduZWQgbG9uZwltYXhfcGZuOworCXVuc2lnbmVk
IGxvbmcJcGZuX3RvX21mbl9mcmFtZV9saXN0X2xpc3Q7Cit9IGFyY2hfc2hhcmVkX2luZm9f
dDsKKworI2RlZmluZSBFTEZfU0laRQkzMgorI2VuZGlmCisjZW5kaWYK


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-arm mailing list
Xen-arm@lists.xensource.com
http://lists.xensource.com/mailman/listinfo/xen-arm

------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY--



From xen-arm-bounces@lists.xensource.com Mon Feb 13 08:04:00 2012
Return-path: <xen-arm-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Feb 2012 08:04:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-arm-bounces@lists.xensource.com>)
	id 1RwqtC-0003yi-C2; Mon, 13 Feb 2012 08:03:58 +0000
Received: from mail21.messagelabs.com ([85.158.143.35])
	by lists.xen.org with smtp (Exim 4.72)
	(envelope-from <jm77.ryu@samsung.com>) id 1RwqtA-0003yY-4o
	for xen-arm@lists.xensource.com; Mon, 13 Feb 2012 08:03:56 +0000
X-Env-Sender: jm77.ryu@samsung.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1329120227!8950105!1
X-Originating-IP: [203.254.224.33]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMjAzLjI1NC4yMjQuMzMgPT4gMjQzNjYx\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7193 invoked from network); 13 Feb 2012 08:03:48 -0000
Received: from mailout3.samsung.com (HELO mailout3.samsung.com)
	(203.254.224.33) by server-10.tower-21.messagelabs.com with SMTP;
	13 Feb 2012 08:03:48 -0000
Received: from epcpsbge8.samsung.com (mailout3.samsung.com [203.254.224.33])
	by mailout3.samsung.com
	(Oracle Communications Messaging Exchange Server 7u4-19.01 64bit (built
	Sep 7
	2010)) with ESMTP id <0LZB00CUNNQ3VYD0@mailout3.samsung.com> for
	xen-arm@lists.xensource.com; Mon, 13 Feb 2012 17:03:46 +0900 (KST)
Message-id: <0LZB00CV0NQAVYD0@mailout3.samsung.com>
X-AuditID: cbfee612-b7c09ae0000024ca-51-4f38c3e1d865
Received: from epextmailer02 ( [203.254.219.152])
	by epcpsbge8.samsung.com (EPCPMTA) with SMTP id 6F.C3.09418.1E3C83F4;
	Mon, 13 Feb 2012 17:03:45 +0900 (KST)
Date: Mon, 13 Feb 2012 08:03:45 +0000 (GMT)
From: Jae-Min Ryu <jm77.ryu@samsung.com>
To: =?euc-kr?Q?=B7=F9=C0=E7=B9=CE?= <jm77.ryu@samsung.com>,
	Lars Kurth <lars.kurth@citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>, 
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	"Keir (Xen.org)" <keir@xen.org>, Ian Jackson <Ian.Jackson@eu.citrix.com>,
	"xen-arm@lists.xensource.com" <xen-arm@lists.xensource.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
MIME-version: 1.0
X-MTR: 20120213080232243@jm77.ryu
Msgkey: 20120213080232243@jm77.ryu
X-EPLocale: ko_KR.euc-kr
X-Priority: 3
X-EPWebmail-Msg-Type: personal
X-EPWebmail-Reply-Demand: 0
X-EPApproval-Locale: 
X-EPHeader: ML
X-EPTrCode: 
X-EPTrName: 
X-MLAttribute: 
X-RootMTR: 20120213074805604@jm77.ryu
X-ParentMTR: 20120213080134863@jm77.ryu
Content-type: multipart/mixed;
	boundary="----=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY"
X-Brightmail-Tracker: AAAAAA==
Subject: [XenARM] [PATCH 11/14] arm: add files that are required to support
 the Tegra2 harmony board.
X-BeenThere: xen-arm@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: jm77.ryu@samsung.com
List-Id: Xen ARM development <xen-arm.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-arm>,
	<mailto:xen-arm-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-arm@lists.xensource.com>
List-Help: <mailto:xen-arm-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-arm>,
	<mailto:xen-arm-request@lists.xensource.com?subject=subscribe>
Sender: xen-arm-bounces@lists.xensource.com
Errors-To: xen-arm-bounces@lists.xensource.com


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="euc-kr"
MIME-Version: 1.0
Message-ID: <7423992.70311329120222915.JavaMail.weblogic@epv6ml04>

YXJtOiBhZGQgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgVGVncmEyIGhh
cm1vbnkgYm9hcmQuDQoNCiB4ZW4vYXJjaC9hcm0vdGVncmEvTWFrZWZpbGUgICAgICAgIHwgICAg
MyArLQ0KIHhlbi9hcmNoL2FybS90ZWdyYS9lbnRyeS5TICAgICAgICAgfCAgIDMzICsrKysrKysr
DQogeGVuL2FyY2gvYXJtL3RlZ3JhL3RlZ3JhMjUwLmMgICAgICB8ICAzMzAgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0vdGVncmEvdGltZXIuYyAgICAgICAgIHwgIDEx
MCArKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0veGVuL2NwdS5jICAg
ICAgICAgICAgIHwgICAgNSArDQogeGVuL2FyY2gvYXJtL3hlbi9mYXVsdC5jICAgICAgICAgICB8
ICAgIDEgLQ0KIHhlbi9hcmNoL2FybS94ZW4vaXJxLmMgICAgICAgICAgICAgfCAgIDQ2ICsrKysr
KysrKysrLQ0KIHhlbi9hcmNoL2FybS94ZW4vbW0uYyAgICAgICAgICAgICAgfCAgIDI0ICsrKysr
Kw0KIHhlbi9hcmNoL2FybS94ZW4vc2V0dXAuYyAgICAgICAgICAgfCAgICA2ICstDQogeGVuL2Fy
Y2gvYXJtL3hlbi90aW1lLmMgICAgICAgICAgICB8ICAgIDEgLQ0KIHhlbi9kcml2ZXJzL2NoYXIv
Y29uc29sZS5jICAgICAgICAgfCAgICA0ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oICAg
ICAgICAgIHwgIDEwMSArKysrKysrKysrKysrKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUvYXNt
LWFybS9pcnEuaCAgICAgICAgICB8ICAgIDMgKy0NCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3Jh
L2F2cC5oICAgIHwgIDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB4
ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2NvbmZpZy5oIHwgICAgNyArLQ0KIHhlbi9pbmNsdWRl
L2FzbS1hcm0vdGVncmEvaXJxcy5oICAgfCAgIDYwICsrKysrKysrKysrKysrKw0KIHhlbi9pbmNs
dWRlL2FzbS1hcm0vdGVncmEvc21wLmggICAgfCAgICA3ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJt
L3RlZ3JhL3RlZ3JhLmggIHwgICA3NSArKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS94
ZW4vaXJxLmggICAgICAgICAgICAgIHwgICAgNiArDQogMTkgZmlsZXMgY2hhbmdlZCwgOTUyIGlu
c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KDQpTaWduZWQtb2ZmLWJ5OiBKYWVtaW4gUnl1
IDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4NCg0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gv
YXJtL3RlZ3JhL01ha2VmaWxlDQotLS0gYS94ZW4vYXJjaC9hcm0vdGVncmEvTWFrZWZpbGUJU3Vu
IEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvTWFr
ZWZpbGUJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtMSwxICsxLDIgQEANCi1v
YmoteSArPSBkdW1teS5vDQorb2JqLXkgKz0gdGltZXIubyBlbnRyeS5vIHRlZ3JhMjUwLm8NCisN
CmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9hcmNoL2FybS90ZWdyYS9lbnRyeS5TDQotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMA0KKysrIGIveGVuL2FyY2gvYXJt
L3RlZ3JhL2VudHJ5LlMJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtMCwwICsx
LDMzIEBADQorLyoNCisgKiBlbnRyeS5TDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggU2Ft
c3VuZyBFbGVjdHJvbmljcw0KKyAqICAgICAgICAgIEphZU1pbiBSeXUgIDxqbTc3LnJ5dUBzYW1z
dW5nLmNvbT4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5DQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0K
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcg
IFVTQQ0KKyAqLw0KKw0KKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+IA0KKyNpbmxjdWRlIDxhc20v
YXJjaC9pcnFzLmg+DQorI2luY2x1ZGUgPGFzbS9wYWdlLmg+DQorI2luY2x1ZGUgPGFzbS9zeXN0
ZW0uaD4NCisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4NCisjaW5jbHVkZSA8YXNtL2NwdS1k
b21haW4uaD4NCisjaW5jbHVkZSA8YXNtL2FzbS1vZmZzZXRzLmg+DQorDQorCS5hbGlnbgk1DQor
DQorRU5UUlkoYXJjaF9jb250ZXh0X3N3aXRjaCkNCisJbW92CXBjLCBscg0KKw0KZGlmZiAtciA2
YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3RlZ3JhL3RlZ3JhMjUwLmMNCi0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwDQorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEv
dGVncmEyNTAuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC0wLDAgKzEsMzMw
IEBADQorLyoNCisgKiB0ZWdyYTI1MC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzIA0KKyAqICAgICAgICAgSmFlTWluIFJ5dSAgPGptNzcucnl1
QHNhbXN1bmcuY29tPg0KKyAqDQorICogU2VjdXJlIFhlbiBvbiBBUk0gYXJjaGl0ZWN0dXJlIGRl
c2lnbmVkIGJ5IFNhbmctYnVtIFN1aCBjb25zaXN0cyBvZiANCisgKiBYZW4gb24gQVJNIGFuZCB0
aGUgYXNzb2NpYXRlZCBhY2Nlc3MgY29udHJvbC4NCisgKiANCisgKiBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAq
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBv
ZiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24uDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC
b3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0ENCisgKi8NCisNCisjaW5jbHVkZSA8eGVuL2NvbmZp
Zy5oPg0KKyNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4NCisjaW5jbHVkZSA8eGVuL2xpYi5oPg0K
KyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+DQorI2luY2x1ZGUgPHhlbi9lcnJuby5oPg0KKyNpbmNs
dWRlIDx4ZW4vc21wLmg+DQorI2luY2x1ZGUgPHhlbi9pcnEuaD4NCisjaW5jbHVkZSA8eGVuL21t
Lmg+DQorI2luY2x1ZGUgPGFzbS9tbXUuaD4NCisjaW5jbHVkZSA8YXNtL3BsYXRmb3JtLmg+DQor
I2luY2x1ZGUgPGFzbS9naWMuaD4NCisjaW5jbHVkZSA8YXNtL3JlZ3MuaD4NCisjaW5jbHVkZSA8
YXNtL2lvLmg+DQorI2luY2x1ZGUgPGFzbS9mbHVzaHRsYi5oPg0KKyNpbmNsdWRlIDxhc20vYXJj
aC90ZWdyYS5oPg0KKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+DQorDQorI2RlZmluZSBURUdS
QTI1MF9NRU1PUllfQkFTRSAgICAgMHgwMDAwMDAwMFVMDQorI2RlZmluZSBURUdSQTI1MF9NRU1P
UllfU0laRSAgICAgMHg0MDAwMDAwMFVMDQorDQorI2RlZmluZSBURUdSQTI1MF9ERVZfQkFTRSAg
ICAgICAgMHg1MDAwMDAwMFVMDQorI2RlZmluZSBURUdSQTI1MF9ERVZfU0laRSAgICAgICAgMHgw
MDMwMDAwMFVMDQorDQorREVDTEFSRV9NRU1PUllfTUFQKHRlZ3JhMjUwKSA9IHsNCisgICAgICAg
IE1FTU1BUF9FTlRSWShURUdSQTI1MF9NRU1PUllfQkFTRSwgVEVHUkEyNTBfTUVNT1JZX1NJWkUs
IE1FTU9SWV9UWVBFX1JBTSwgTDFFX1RZUEVfSFlQRVJWSVNPUiksDQorICAgICAgICBNRU1NQVBf
RU5UUlkoVEVHUkEyNTBfREVWX0JBU0UsICAgIFRFR1JBMjUwX0RFVl9TSVpFLCAgICBNRU1PUllf
VFlQRV9ERVYsIEwxRV9UWVBFX0RFVklDRSkNCit9Ow0KKw0KKy8vIFJlZ2lzdGVyIEFQQkRNQV9J
UlFfTUFTS19DTFJfMA0KKyNkZWZpbmUgQVBCRE1BX0lSUV9TVEFfQ1BVXzAJKDB4MTQpDQorI2Rl
ZmluZSBBUEJETUFfSVJRX01BU0tfU0VUXzAJKDB4MjApDQorI2RlZmluZSBBUEJETUFfSVJRX01B
U0tfQ0xSXzAJKDB4MjQpDQorDQordm9pZCAqdGVncmFfZ2ljX2NwdV9iYXNlW01BWF9QSFlTX0NQ
VVNdICA9IHswLCAwfTsNCit2b2lkICp0ZWdyYV9naWNfZGlzdF9iYXNlID0gMDsNCisNCitzdHJ1
Y3QgdGVncmFfaXJxX2N0cmwgew0KKwl1bnNpZ25lZCBpbnQgaXJxX3N0YXJ0Ow0KKwl2b2lkICAq
cmVnOw0KK307DQorDQorc3RhdGljIHN0cnVjdCB0ZWdyYV9pcnFfY3RybCB0ZWdyYV9pcnFfY3Ry
bFsoSU5UX1NZU19OUiArIElOVF9TWVNfU1ogLSAxKSAvIElOVF9TWVNfU1pdOw0KKw0KKyNkZWZp
bmUgZ2ljX2lycShpcnEpCShpcnEpDQorDQorc3RhdGljIHZvaWQgdGVncmFfbWFzayhzdHJ1Y3Qg
aXJxX2Rlc2MgKmRlc2MpDQorew0KKwlzdHJ1Y3QgdGVncmFfaXJxX2N0cmwgKmNoaXA7DQorCXVu
c2lnbmVkIGludCBpcnEgPSBkZXNjX3RvX2lycShkZXNjKTsNCisJdW5zaWduZWQgaW50IG1hc2sg
PSAxIDw8IChpcnEgJSAzMik7DQorDQorCW1taW9fd3JpdGVsKG1hc2ssIHRlZ3JhX2dpY19kaXN0
X2Jhc2UgKyBfSUNESUNFUiArIChnaWNfaXJxKGlycSkgLyAzMikgKiA0KTsNCisNCisJaXJxIC09
IElOVF9QUklfQkFTRTsNCisJY2hpcCA9ICZ0ZWdyYV9pcnFfY3RybFtpcnEgLyBJTlRfU1lTX1Na
XTsNCisJbW1pb193cml0ZWwoMSA8PCAoaXJxICYgMzEpLCBjaGlwLT5yZWcgKyBJQ1RMUl9DUFVf
SUVSX0NMUl8wKTsNCit9DQorDQorc3RhdGljIHZvaWQgdGVncmFfdW5tYXNrKHN0cnVjdCBpcnFf
ZGVzYyAqZGVzYykNCit7DQorCXN0cnVjdCB0ZWdyYV9pcnFfY3RybCAqY2hpcDsNCisJdW5zaWdu
ZWQgaW50IGlycSA9IGRlc2NfdG9faXJxKGRlc2MpOw0KKwl1bnNpZ25lZCBpbnQgbWFzayA9IDEg
PDwgKGlycSAlIDMyKTsNCisNCisJbW1pb193cml0ZWwobWFzaywgdGVncmFfZ2ljX2Rpc3RfYmFz
ZSArIF9JQ0RJU0VSICsgKGdpY19pcnEoaXJxKSAvIDMyKSAqIDQpOw0KKw0KKwlpcnEgLT0gSU5U
X1BSSV9CQVNFOw0KKwljaGlwID0gJnRlZ3JhX2lycV9jdHJsW2lycSAvIElOVF9TWVNfU1pdOw0K
KwltbWlvX3dyaXRlbCgxIDw8IChpcnEgJiAzMSksIGNoaXAtPnJlZyArIElDVExSX0NQVV9JRVJf
U0VUXzApOw0KK30NCisNCitzdGF0aWMgdm9pZCB0ZWdyYV9hY2soc3RydWN0IGlycV9kZXNjICpk
ZXNjKQ0KK3sNCisJdW5zaWduZWQgaW50IGlycSA9IGRlc2NfdG9faXJxKGRlc2MpOw0KKwl1bnNp
Z25lZCBpbnQgbWFzayA9IDEgPDwgKGlycSAlIDMyKTsNCisJdW5zaWduZWQgaW50IGNwdSA9IHNt
cF9wcm9jZXNzb3JfaWQoKTsNCisNCisJdGVncmFfbWFzayhkZXNjKTsNCisNCisgICAgICAgIG1t
aW9fd3JpdGVsKG1hc2ssIHRlZ3JhX2dpY19kaXN0X2Jhc2UgKyBfSUNESUNFUiArIChnaWNfaXJx
KGlycSkgLyAzMikgKiA0KTsNCisgICAgICAgIG1taW9fd3JpdGVsKGdpY19pcnEoaXJxKSwgdGVn
cmFfZ2ljX2NwdV9iYXNlW2NwdV0gKyBfSUNDRU9JUik7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHRl
Z3JhX2VuZChzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpDQorew0KKwl0ZWdyYV91bm1hc2soZGVzYyk7
DQorfQ0KKw0KK2h3X2lycV9jb250cm9sbGVyIHRlZ3JhX2lycV9jb250cm9sbGVyID0gew0KKwku
dHlwZW5hbWUgPSAibGV2ZWwiLA0KKwkuc3RhcnR1cCAgPSB0ZWdyYV91bm1hc2ssDQorCS5zaHV0
ZG93biA9IHRlZ3JhX21hc2ssDQorCS5lbmFibGUJICA9IHRlZ3JhX3VubWFzaywNCisJLmRpc2Fi
bGUgID0gdGVncmFfbWFzaywNCisJLmFjawkgID0gdGVncmFfYWNrLA0KKwkuZW5kCSAgPSB0ZWdy
YV9lbmQsDQorfTsNCisNCitzdGF0aWMgdm9pZCB0ZWdyYTI1MF9pcnFfaW5pdCgpDQorew0KKwl1
bnNpZ25lZCBpbnQgbWF4X2lycSwgaTsNCisJdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNz
b3JfaWQoKTsNCisJdW5zaWduZWQgbG9uZyBjcHVtYXNrID0gMSA8PCBjcHU7DQorDQorCWZvciAo
aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRlZ3JhX2lycV9jdHJsKTsgaSsrKSB7DQorCQl0ZWdyYV9p
cnFfY3RybFtpXS5pcnFfc3RhcnQgPSBJTlRfUFJJX0JBU0UgKyBJTlRfU1lTX1NaICogaTsNCisJ
CXRlZ3JhX2lycV9jdHJsW2ldLnJlZyA9IElPX0FERFJFU1MoSU5UX1BQSV9BRERSRVNTKGkpKTsN
CisJCW1taW9fd3JpdGVsKDB4RkZGRkZGRkYsIHRlZ3JhX2lycV9jdHJsW2ldLnJlZyArIElDVExS
X0NQVV9JRVJfQ0xSXzApOw0KKwkJbW1pb193cml0ZWwoMHgwMDAwMDAwMCwgdGVncmFfaXJxX2N0
cmxbaV0ucmVnICsgSUNUTFJfQ1BVX0lFUF9DTEFTU18wKTsNCisJfQ0KKw0KKwlmb3IgKGkgPSBJ
TlRfUFJJX0JBU0U7IGkgPCBJTlRfR1BJT19CQVNFOyBpKyspIHsNCisJCWlycV9kZXNjW2ldLmhh
bmRsZXIgPSAmdGVncmFfaXJxX2NvbnRyb2xsZXI7DQorCX0NCisNCisJY3B1bWFzayB8PSBjcHVt
YXNrIDw8IDg7DQorCWNwdW1hc2sgfD0gY3B1bWFzayA8PCAxNjsNCisNCisJdGVncmFfZ2ljX2Rp
c3RfYmFzZSA9IElPX0FERFJFU1MoVEVHUkFfQVJNX0lOVF9ESVNUX0JBU0UpOw0KKwl0ZWdyYV9n
aWNfY3B1X2Jhc2VbY3B1XSA9IElPX0FERFJFU1MoVEVHUkFfR0lDX1BST0NfSUZfQkFTRSk7DQor
DQorCW1taW9fd3JpdGVsKDAsIHRlZ3JhX2dpY19kaXN0X2Jhc2UgKyBfSUNERENSKTsNCisJDQor
ICAgICAgICAvKg0KKyAgICAgICAgICogRmluZCBvdXQgaG93IG1hbnkgaW50ZXJydXB0cyBhcmUg
c3VwcG9ydGVkLg0KKyAgICAgICAgICovDQorICAgICAgICBtYXhfaXJxID0gbW1pb19yZWFkbCh0
ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDVFIpICYgMHgxZjsNCisgICAgICAgIG1heF9pcnEg
PSAobWF4X2lycSArIDEpICogMzI7DQorDQorICAgICAgICAvKg0KKyAgICAgICAgICogVGhlIEdJ
QyBvbmx5IHN1cHBvcnRzIHVwIHRvIDEwMjAgaW50ZXJydXB0IHNvdXJjZXMuDQorICAgICAgICAg
KiBMaW1pdCB0aGlzIHRvIGVpdGhlciB0aGUgYXJjaGl0ZWN0ZWQgbWF4aW11bSwgb3IgdGhlDQor
ICAgICAgICAgKiBwbGF0Zm9ybSBtYXhpbXVtLg0KKyAgICAgICAgICovDQorICAgICAgICBpZiAo
bWF4X2lycSA+IG1heCgxMDIwLCBOUl9JUlFTKSkNCisgICAgICAgICAgICAgICAgbWF4X2lycSA9
IG1heCgxMDIwLCBOUl9JUlFTKTsNCisNCisgICAgICAgIC8qDQorICAgICAgICAgKiBTZXQgYWxs
IGdsb2JhbCBpbnRlcnJ1cHRzIHRvIGJlIGxldmVsIHRyaWdnZXJlZCwgYWN0aXZlIGxvdy4NCisg
ICAgICAgICAqLw0KKyAgICAgICAgZm9yIChpID0gMzI7IGkgPCBtYXhfaXJxOyBpICs9IDE2KQ0K
KyAgICAgICAgICAgICAgICBtbWlvX3dyaXRlbCgwLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lD
RElDRlIgKyBpICogNCAvIDE2KTsNCisNCisgICAgICAgIC8qDQorICAgICAgICAgKiBTZXQgYWxs
IGdsb2JhbCBpbnRlcnJ1cHRzIHRvIHRoaXMgQ1BVIG9ubHkuDQorICAgICAgICAgKi8NCisgICAg
ICAgIGZvciAoaSA9IDMyOyBpIDwgbWF4X2lycTsgaSArPSA0KQ0KKyAgICAgICAgICAgICAgICBt
bWlvX3dyaXRlbChjcHVtYXNrLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElQVFIgKyBpICog
NCAvIDQpOw0KKyAgICAgICAgLyoNCisgICAgICAgICAqIFNldCBwcmlvcml0eSBvbiBhbGwgaW50
ZXJydXB0cy4NCisgICAgICAgICAqLw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1heF9pcnE7
IGkgKz0gNCkNCisgICAgICAgICAgICAgICAgbW1pb193cml0ZWwoMHhhMGEwYTBhMCwgdGVncmFf
Z2ljX2Rpc3RfYmFzZSArIF9JQ0RJUFIgKyBpICogNCAvIDQpOw0KKw0KKyAgICAgICAgLyoNCisg
ICAgICAgICAqIERpc2FibGUgYWxsIGludGVycnVwdHMuDQorICAgICAgICAgKi8NCisgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBtYXhfaXJxOyBpICs9IDMyKQ0KKyAgICAgICAgICAgICAgICBtbWlv
X3dyaXRlbCgweGZmZmZmZmZmLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDRVIgKyBpICog
NCAvIDMyKTsNCisNCisgICAgICAgIG1taW9fd3JpdGVsKDEsIHRlZ3JhX2dpY19kaXN0X2Jhc2Ug
KyBfSUNERENSKTsNCisNCisgICAgICAgIG1taW9fd3JpdGVsKDB4ZjAsIHRlZ3JhX2dpY19jcHVf
YmFzZVtjcHVdICsgX0lDQ1BNUik7DQorICAgICAgICBtbWlvX3dyaXRlbCgxLCB0ZWdyYV9naWNf
Y3B1X2Jhc2VbY3B1XSArIF9JQ0NJQ1IpOw0KKw0KKw0KK30NCisNCisjZGVmaW5lIENMS19SU1Rf
Q09OVFJPTExFUl9SU1RfQ1BVX0NNUExYX0NMUl8wICAoMHgzNDQpDQorI2RlZmluZSBDTEtfUlNU
X0NPTlRST0xMRVJfQ0xLX0NQVV9DTVBMWF8wICAgICAgKDB4NGMpDQorI2RlZmluZSBDUFVfQ0xL
X1NUT1AoY3B1KSAgICAgICAgICAgICAgICAgICAgICAgKDB4MTw8KDgrY3B1KSkNCisjZGVmaW5l
IENQVV9SRVNFVChjcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMDExdWw8PChjcHUp
KQ0KKw0KKyNkZWZpbmUgRVZQX0NQVV9SRVNFVF9WRUNUT1JfMCAgICAgICAgICAJKDB4MTAwKQ0K
KyNkZWZpbmUgRkxPV19DVFJMX0hBTFRfQ1BVeF9FVkVOVFMoY3B1KSAJKChjcHUpID8gKChjcHUg
LSAxKSAqIDB4OCArIDB4MTQpIDogMHgwKQ0KKw0KKw0KK3ZvbGF0aWxlIGludCB0ZWdyYTI1MF9j
b3JlX21hcCA9IDE7DQorDQorYXNtKA0KKyIudHlwZSB0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQs
ICNmdW5jdGlvbglcbiINCisiLmdsb2JhbCB0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQJCVxuIg0K
KyJ0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQ6CQkJXG4iDQorIgltc3IJY3Bzcl9jLCAjMHhEMwkJ
CVxuIg0KKyIJbW92CXIwLCAjMAkJCQlcbiINCisiCW1jcglwMTUsIDIsIHIwLCBjMCwgYzAsIDAJ
CVxuIg0KKyIJbXJjCXAxNSwgMSwgcjAsIGMwLCBjMCwgMAkJXG4iDQorIglsZHIJcjEsID0weDdG
RkYJCQlcbiINCisiCWFuZAlyMiwgcjEsIHIwLCBsc3IgIzEzCQlcbiINCisiCWxkcglyMSwgPTB4
M0ZGCQkJXG4iDQorIglhbmQJcjMsIHIxLCByMCwgbHNyICMzCQlcbiINCisiCWFkZAlyMiwgcjIs
ICMxCQkJXG4iDQorIglhbmQJcjAsIHIwLCAjMHgwNwkJCVxuIg0KKyIJYWRkCXIwLCByMCwgIzQJ
CQlcbiINCisiCWNseglyMSwgcjMJCQkJXG4iDQorIglhZGQJcjQsIHIzLCAjMQkJCVxuIg0KKyIx
OglzdWIJcjIsIHIyLCAjMQkJCVxuIg0KKyIJbW92CXIzLCByNAkJCQlcbiINCisiMjoJc3Vicwly
MywgcjMsICMxCQkJXG4iDQorIgltb3YJcjUsIHIzLCBsc2wgcjEJCQlcbiINCisiCW1vdglyNiwg
cjIsIGxzbCByMAkJCVxuIg0KKyIJb3JyCXI1LCByNSwgcjYJCQlcbiINCisiCW1jcglwMTUsIDAs
IHI1LCBjNywgYzYsIDIJCVxuIg0KKyIJYmd0CTJiCQkJCVxuIg0KKyIJY21wCXIyLCAjMAkJCQlc
biINCisiCWJndAkxYgkJCQlcbiINCisiCWRzYgkJCQkJXG4iDQorIglpc2IJCQkJCVxuIg0KKyIJ
bXJjCXAxNSwgMCwgcjAsIGMwLCBjMCwgNQkJXG4iDQorIglhbmQJcjAsIHIwLCAjMTUJCQlcbiIN
CisiCWFkcglyNCwgMWYJCQkJXG4iDQorIglsZG1pYQlyNCwge3I1LCByNn0JCQlcbiINCisiCXN1
YglyNCwgcjQsIHI1CQkJXG4iDQorIglhZGQJcjYsIHI2LCByNAkJCVxuIg0KKyIJbW92CXIxLCAj
MQkJCQlcbiINCisiCWxzbAlyMSwgcjEsIHIwCQkJXG4iDQorInNwaW46CWxkcglyNywgW3I2XQkJ
CVxuIg0KKyIJdHN0CXI3LCByMQkJCQlcbiINCisiCWJlcQlzcGluCQkJCVxuIg0KKyIJYglzbGF2
ZV9jcHVfc3RhcnQJCQlcbiINCisiMToJLmxvbmcJLgkJCQlcbiINCisiCS5sb25nCXRlZ3JhMjUw
X2NvcmVfbWFwCQlcbiINCispOw0KKw0KK2ludCB3YWtldXBfY3B1KHVuc2lnbmVkIGludCBjcHUp
DQorew0KKwl0ZWdyYTI1MF9jb3JlX21hcCB8PSAxIDw8ICBjcHU7DQorDQorCWNwdV9mbHVzaF9j
YWNoZV9hbGwoKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2V4dGVybiB2b2lkIHRlZ3JhMjUw
X3NsYXZlX2NwdV9zdGFydCh2b2lkKTsNCisNCitzdGF0aWMgdm9pZCB0ZWdyYTI1MF9ldnBfaW5p
dCh2b2lkKQ0KK3sNCisJdW5zaWduZWQgbG9uZyByLCBvcmcsIGxvb3AsIGN0cmw7DQorDQorCS8q
IEluaXRpYWxpemUgU25vb3AgQ29udHJvbCBVbml0ICovDQorCWN0cmwgPSBtbWlvX3JlYWRsKElP
X0FERFJFU1MoVEVHUkFfU0NVX0JBU0UpICsgMHgwKTsNCisJY3RybCB8PSAxOw0KKwltbWlvX3dy
aXRlbChjdHJsLCBJT19BRERSRVNTKFRFR1JBX1NDVV9CQVNFKSArIDB4MCk7DQorDQorCW9yZyA9
IG1taW9fcmVhZGwoSU9fQUREUkVTUyhURUdSQV9FWENFUFRJT05fVkVDVE9SU19CQVNFKSArIEVW
UF9DUFVfUkVTRVRfVkVDVE9SXzApOw0KKw0KKwkvKiBTZXQgYm9vdCBlbnRyeSAqLw0KKwltbWlv
X3dyaXRlbChfX3BhKHRlZ3JhMjUwX3NsYXZlX2NwdV9zdGFydCksIElPX0FERFJFU1MoVEVHUkFf
RVhDRVBUSU9OX1ZFQ1RPUlNfQkFTRSkgKyBFVlBfQ1BVX1JFU0VUX1ZFQ1RPUl8wKTsNCisNCisJ
ZHNiKCk7DQorCWlzYigpOw0KKw0KKwkvKiBIYWx0IENQVSAqLw0KKwltbWlvX3dyaXRlbCgwLCBJ
T19BRERSRVNTKFRFR1JBX0ZMT1dfQ1RSTF9CQVNFKSArIEZMT1dfQ1RSTF9IQUxUX0NQVXhfRVZF
TlRTKDEpKTsNCisNCisJZHNiKCk7DQorCWlzYigpOw0KKw0KKwkvKiBDUFUgQ2xvY2sgU3RvcCAq
Lw0KKwlyID0gbW1pb19yZWFkbChJT19BRERSRVNTKFRFR1JBX0NMS19SRVNFVF9CQVNFKSArIENM
S19SU1RfQ09OVFJPTExFUl9DTEtfQ1BVX0NNUExYXzApOw0KKwlyICY9IH5DUFVfQ0xLX1NUT1Ao
MSk7DQorCW1taW9fd3JpdGVsKHIsIElPX0FERFJFU1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpICsg
Q0xLX1JTVF9DT05UUk9MTEVSX0NMS19DUFVfQ01QTFhfMCk7DQorDQorCWRzYigpOw0KKwlpc2Io
KTsNCisNCisJLyogUmVzdGFydCBTbGF2ZSBDUFUgKi8NCisJbW1pb193cml0ZWwoQ1BVX1JFU0VU
KDEpLCBJT19BRERSRVNTKFRFR1JBX0NMS19SRVNFVF9CQVNFKSArIENMS19SU1RfQ09OVFJPTExF
Ul9SU1RfQ1BVX0NNUExYX0NMUl8wKTsNCisNCisJZHNiKCk7DQorCWlzYigpOw0KKw0KKyAgICAg
ICAgLyogV2FpdCB1dGlsIHRoZSBwb3dlciB1bml0IGlzIGluIHN0YWJsZSAqLw0KKyAgICAgICAg
bG9vcCA9IDEwMDAwOw0KKyAgICAgICAgd2hpbGUoKC0tbG9vcCkgPiAwICk7DQorfQ0KKw0KK3Zv
aWQgdGVncmEyNTBfaW9yZW1hcCh2b2lkKQ0KK3sNCisJbWFwX3BhZ2VzX3RvX3hlbihJT19BRERS
RVNTKFRFR1JBX0FSTV9DUFVfQkFTRSksDQorCQlURUdSQV9BUk1fQ1BVX0JBU0UgPj4gUEFHRV9T
SElGVCwgMHgxMDAwMDAgPj4gUEFHRV9TSElGVCwNCisJCUwxRV9UWVBFX0RFVklDRSk7DQorDQor
CW1hcF9wYWdlc190b194ZW4oSU9fQUREUkVTUyhURUdSQV9QUFNCX0RFVklDRV9CQVNFKSwNCisJ
CVRFR1JBX1BQU0JfREVWSUNFX0JBU0UgPj4gUEFHRV9TSElGVCwgMHgxMDAwMDAgPj4gUEFHRV9T
SElGVCwgDQorCQlMMUVfVFlQRV9ERVZJQ0UpOw0KKw0KKwltYXBfcGFnZXNfdG9feGVuKElPX0FE
RFJFU1MoVEVHUkFfQVBCX0RFVklDRV9CQVNFKSwNCisJCVRFR1JBX0FQQl9ERVZJQ0VfQkFTRSA+
PiBQQUdFX1NISUZULCAweDEwMDAwMCA+PiBQQUdFX1NISUZULA0KKwkJTDFFX1RZUEVfREVWSUNF
KTsNCit9DQorDQoraW50IG1hY2hpbmVfc2V0dXAodm9pZCkNCit7DQorCWNwdV90b3BvbG9neV9p
bml0KDIpOw0KKw0KKwl0ZWdyYTI1MF9pb3JlbWFwKCk7DQorDQorCXRlZ3JhMjUwX2V2cF9pbml0
KCk7DQorDQorCXRlZ3JhMjUwX2lycV9pbml0KCk7DQorDQorCXRlZ3JhMjUwX3RpbWVyX2luaXQo
KTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gv
YXJtL3RlZ3JhL3RpbWVyLmMNCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwDQorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvdGltZXIuYwlTdW4gRmViIDEyIDE1OjA0
OjA2IDIwMTIgKzA5MDANCkBAIC0wLDAgKzEsMTEwIEBADQorLyoNCisgKiBhcmNoL2FybS9tYWNo
LXRlZ3JhL3RpbWVyLmMNCisgKg0KKyAqIFRpbWVyIGFuZCBjbG9jayBldmVudCBzdXBwb3J0IGZv
ciBOVklESUEgVGVncmEgU29Dcw0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMDksIE5W
SURJQSBDb3Jwb3JhdGlvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkN
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQor
ICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQNCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yDQorICogbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcNCisg
KiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLA0KKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4NCisgKi8NCisNCisjaW5jbHVkZSA8eGVuL3NjaGVk
Lmg+DQorI2luY2x1ZGUgPHhlbi9pcnEuaD4NCisjaW5jbHVkZSA8eGVuL2luaXQuaD4NCisjaW5j
bHVkZSA8eGVuL3NvZnRpcnEuaD4NCisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+DQorI2luY2x1
ZGUgPGFzbS90aW1lLmg+DQorI2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4NCisjaW5jbHVkZSA8
YXNtL2FyY2gvdGVncmEuaD4NCisNCisNCisjZGVmaW5lIENMS19SU1RfQ09OVFJPTExFUl9PU0Nf
Q1RSTF8wCTB4NTANCisNCisjZGVmaW5lIFRJTUVSMV9PRkZTCQkJMHgwMCAgLyogcmVzZXJ2ZWQg
Zm9yIEFWUCAqLw0KKyNkZWZpbmUgVElNRVIyX09GRlMJCQkweDA4ICAvKiByZXNlcnZlZCBmb3Ig
QVZQICovDQorI2RlZmluZSBUSU1FUjNfT0ZGUwkJCTB4NTAgIC8qIHVzZWQgYXMgT1MgQ1BVIGV2
ZW50IHRpbWVyICovDQorI2RlZmluZSBUSU1FUjRfT0ZGUwkJCTB4NTggIC8qIHJlc2VydmVkIGFz
IExQMiB3YWtldXAgdHJpZ2dlciAqLw0KKw0KKyNkZWZpbmUgVElNRVJfVE1SX1BUVl8wCQkJMHgw
DQorI2RlZmluZSBUSU1FUl9UTVJfUENSXzAJCQkweDQNCisNCisjZGVmaW5lIFRJTUVSVVNfT0ZG
UwkJCTB4MTANCisjZGVmaW5lIFRJTUVSVVNfQ05UUl8xVVNfMAkJMHgwDQorI2RlZmluZSBUSU1F
UlVTX1VTRUNfQ0ZHXzAJCTB4NA0KKw0KKyNkZWZpbmUgTlNFQ19QRVJfU0VDCQkJMTAwMDAwMDAw
MEwNCisNCit2b2lkIHRlZ3JhX2Nsb2NrZXZlbnRfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRl
dl9pZCwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQorew0KKyAgICAgICAgbW1pb193cml0
ZWwoMSA8PCAzMCwgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBUSU1FUjNfT0ZGUykgKyBU
SU1FUl9UTVJfUENSXzApOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGlycWFjdGlvbiB0ZWdyYV9j
bG9ja2V2ZW50X2lycSA9IHsNCisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJUaW1lcl9ldmVu
dCIsDQorICAgICAgICAuaGFuZGxlciAgICAgICAgPSB0ZWdyYV9jbG9ja2V2ZW50X2ludGVycnVw
dCwNCit9Ow0KKw0KK3ZvaWQgdGVncmFfbHAyd2FrZV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAq
ZGV2X2lkLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCit7DQorICAgICAgICBtbWlvX3dy
aXRlbCgxPDwzMCwgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBUSU1FUjRfT0ZGUykgKyBU
SU1FUl9UTVJfUENSXzApOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGlycWFjdGlvbiB0ZWdyYV9s
cDJ3YWtlX2lycSA9IHsNCisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJ0aW1lcl9scDJ3YWtl
IiwNCisgICAgICAgIC5oYW5kbGVyICAgICAgICA9IHRlZ3JhX2xwMndha2VfaW50ZXJydXB0LA0K
K307DQorDQorc3RhdGljIHVuc2lnbmVkIGxvbmcgbWVhc3VyZV9pbnB1dF9mcmVxKHVuc2lnbmVk
IGludCAqbSwgdW5zaWduZWQgaW50ICpuKQ0KK3sNCisJdm9pZCAqY2xrX3JzdCA9IElPX0FERFJF
U1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpOw0KKwl1bnNpZ25lZCBsb25nIG9zYyA9IG1taW9fcmVh
ZGwoY2xrX3JzdCArIENMS19SU1RfQ09OVFJPTExFUl9PU0NfQ1RSTF8wKTsNCisJb3NjID4+PSAz
MDsNCisNCisJc3dpdGNoIChvc2MpIHsNCisJCWNhc2UgMDogaWYgKG0gJiYgbikgeyAqbT0xOyAq
bj0xMzsgfSByZXR1cm4gMTMwMDA7DQorCQljYXNlIDE6IGlmIChtICYmIG4pIHsgKm09NTsgKm49
OTY7IH0gcmV0dXJuIDE5MjAwOw0KKwkJY2FzZSAyOiBpZiAobSAmJiBuKSB7ICptPTE7ICpuPTEy
OyB9IHJldHVybiAxMjAwMDsNCisJCWNhc2UgMzogaWYgKG0gJiYgbikgeyAqbT0xOyAqbj0yNjsg
fSByZXR1cm4gMjYwMDA7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgdGVncmEy
NTBfdGltZXJfaW5pdCh2b2lkKQ0KK3sNCisgICAgICAgIHZvaWQgKnRtcjsNCisgICAgICAgIHVu
c2lnbmVkIGludCBtLCBuOw0KKyAgICAgICAgdW5zaWduZWQgbG9uZyB2YWw7DQorICAgICAgICB1
MzIgcmVnOw0KKw0KKyAgICAgICAgdG1yID0gSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBU
SU1FUlVTX09GRlMpOw0KKyAgICAgICAgdmFsID0gbWVhc3VyZV9pbnB1dF9mcmVxKCZtLCAmbik7
DQorDQorICAgICAgICB2YWwgPSAoKG0tMSk8PDgpIHwgKG4tMSk7DQorDQorICAgICAgICBtbWlv
X3dyaXRlbCh2YWwsIHRtciArIFRJTUVSVVNfVVNFQ19DRkdfMCk7DQorICAgICAgICBtbWlvX3dy
aXRlbCgwLCBJT19BRERSRVNTKFRFR1JBX1RNUjFfQkFTRSArIFRJTUVSM19PRkZTKSAgKyBUSU1F
Ul9UTVJfUFRWXzApOw0KKw0KKyAgICAgICAgcmVnID0gMHhjMDAwMjcwZjsNCisgICAgICAgIG1t
aW9fd3JpdGVsKHJlZywgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBUSU1FUjNfT0ZGUykg
KyBUSU1FUl9UTVJfUFRWXzApOw0KKw0KKyAgICAgICAgaWYgKHNldHVwX2lycShJTlRfVE1SMywg
JnRlZ3JhX2Nsb2NrZXZlbnRfaXJxKSkgew0KKyAgICAgICAgICAgICAgICBCVUcoKTsNCisgICAg
ICAgIH0NCisgICAgICAgIGlmIChzZXR1cF9pcnEoSU5UX1RNUjQsICZ0ZWdyYV9scDJ3YWtlX2ly
cSkpIHsNCisgICAgICAgICAgICAgICAgQlVHKCk7DQorICAgICAgICB9DQorfQ0KKw0KZGlmZiAt
ciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3hlbi9jcHUuYw0KLS0tIGEveGVuL2FyY2gvYXJt
L3hlbi9jcHUuYwlTdW4gRmViIDEyIDEyOjI0OjIxIDIwMTIgKzA5MDANCisrKyBiL3hlbi9hcmNo
L2FybS94ZW4vY3B1LmMJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtNTMsNiAr
NTMsMTEgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUpDQogew0KIAlpbnQgcmV0ID0g
MDsNCiANCisJcmV0ID0gd2FrZXVwX2NwdShjcHUpOw0KKwlpZiAoIXJldCkgew0KKwkJcmV0dXJu
IC1FSU5WQUw7DQorCX0NCisNCiAJd2hpbGUoIWNwdV9vbmxpbmUoY3B1KSkgew0KIAkJY3B1X3Jl
bGF4KCk7DQogCQlwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsNCmRpZmYgLXIgNmFmOGE4OWM5
OWNkIHhlbi9hcmNoL2FybS94ZW4vZmF1bHQuYw0KLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9mYXVs
dC5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJtL3hl
bi9mYXVsdC5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTMzLDcgKzMzLDYg
QEANCiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KICNpbmNsdWRlIDxhc20vZ3Vlc3RfYWNj
ZXNzLmg+DQogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4NCi0jaW5jbHVkZSA8YXNtL21lbW9yeS5o
Pg0KIA0KIGFzbWxpbmthZ2Ugdm9pZCBfX2RpdjAodm9pZCkNCiB7DQpkaWZmIC1yIDZhZjhhODlj
OTljZCB4ZW4vYXJjaC9hcm0veGVuL2lycS5jDQotLS0gYS94ZW4vYXJjaC9hcm0veGVuL2lycS5j
CVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJtL3hlbi9p
cnEuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC0zOCw5ICszOCwyNyBAQCBo
d19pcnFfY29udHJvbGxlciBub19pcnFfdHlwZSA9IHsNCiAJLnNodXRkb3duID0gaXJxX3NodXRk
b3duX25vbmUsDQogCS5lbmFibGUgICA9IGlycV9lbmFibGVfbm9uZSwNCiAJLmRpc2FibGUgID0g
aXJxX2Rpc2FibGVfbm9uZSwNCisJLmVuZAkgID0gaXJxX2VuZF9ub25lLA0KKwkuYWNrCSAgPSBp
cnFfYWNrX25vbmUsDQogfTsNCiANCi1zdHJ1Y3QgaXJxX2Rlc2MgKmlycV9kZXNjOw0KKy8vc3Ry
dWN0IGlycV9kZXNjICppcnFfZGVzYzsNCisNCitpcnFfZGVzY190IGlycV9kZXNjW05SX0lSUVNd
ID0gew0KKyAgICAgICAgWzAgLi4uIE5SX0lSUVMgLSAxXSA9IHsNCisgICAgICAgICAgICAgICAg
LnN0YXR1cyA9IElSUV9ESVNBQkxFRCwNCisgICAgICAgICAgICAgICAgLmhhbmRsZXIgPSAmbm9f
aXJxX3R5cGUsDQorICAgICAgICAgICAgICAgIC5hY3Rpb24gPSBOVUxMLA0KKyAgICAgICAgICAg
ICAgICAubG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRA0KKyAgICAgICAgfQ0KK307DQorDQorc3Ry
dWN0IGlycV9jZmcgaXJxX2NmZ1tOUl9JUlFTXSA9IHsNCisgICAgICAgIFswIC4uLiBOUl9JUlFT
IC0gMV0gPXsNCisgICAgICAgICAgICAgICAgLmlycSA9IDANCisgICAgICAgIH0NCit9Ow0KKw0K
IA0KIGludCBwaXJxX2d1ZXN0X3VubWFzayhzdHJ1Y3QgZG9tYWluICpkKQ0KIHsNCkBAIC03NSw2
ICs5MywzMiBAQCBzdHJ1Y3QgcGlycSAqYWxsb2NfcGlycV9zdHJ1Y3Qoc3RydWN0IGRvDQogCXJl
dHVybiBOVUxMOw0KIH0NCiANCitpbnQgc2V0dXBfaXJxKHVuc2lnbmVkIGludCBpcnEsIHN0cnVj
dCBpcnFhY3Rpb24gKm5ldykNCit7DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorCXN0cnVjdCBp
cnFfZGVzYyAqZGVzYzsNCisNCisJaWYoaXJxID49IE5SX0lSUVMpIHsNCisJCXByaW50aygiQkFE
IElSUSA9ICVkXG4iLCBpcnEpOw0KKwl9DQorDQorCWRlc2MgPSBpcnFfdG9fZGVzYyhpcnEpOw0K
Kw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGVzYy0+bG9jaywgZmxhZ3MpOw0KKwlkZXNjLT5hY3Rp
b24gPSBuZXc7DQorCWlmIChkZXNjLT5oYW5kbGVyKSB7DQorCQlpZiAoZGVzYy0+aGFuZGxlci0+
c3RhcnR1cCkgew0KKwkJCWRlc2MtPmhhbmRsZXItPnN0YXJ0dXAoZGVzYyk7DQorCQl9IGVsc2Ug
aWYoZGVzYy0+aGFuZGxlci0+ZW5hYmxlKSB7DQorCQkJZGVzYy0+aGFuZGxlci0+ZW5hYmxlKGRl
c2MpOw0KKwkJfQ0KKwl9DQorDQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRlc2MtPmxvY2ss
IGZsYWdzKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIGludCBhcmNoX2luaXRfb25lX2lycV9k
ZXNjKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykNCiB7DQogCU5PVF9ZRVQoKTsNCmRpZmYgLXIgNmFm
OGE4OWM5OWNkIHhlbi9hcmNoL2FybS94ZW4vbW0uYw0KLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9t
bS5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJtL3hl
bi9tbS5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTI1NSwzICsyNTUsMjcg
QEAgaW50IGFsbG9jX3BhZ2VfbWFwKHVuc2lnbmVkIGxvbmcgdmlydCwgdQ0KIAlyZXR1cm4gMDsN
CiB9DQogDQoraW50IG1hcF9wYWdlc190b194ZW4odW5zaWduZWQgbG9uZyB2aXJ0LCB1bnNpZ25l
ZCBsb25nIG1mbiwgaW50IG5yLCB1bnNpZ25lZCBsb25nIGZsYWdzKQ0KK3sNCisgICAgICAgIHVu
c2lnbmVkIGxvbmcgdmFkZHIgPSByb3VuZF9kb3duKHZpcnQsIFBBR0VfU0laRSk7DQorICAgICAg
ICB1bnNpZ25lZCBsb25nIG1hZGRyID0gbWZuIDw8IFBBR0VfU0hJRlQ7DQorICAgICAgICB1bnNp
Z25lZCBpbnQgZW5kID0gdmlydCArIChuciA8PCBQQUdFX1NISUZUKTsNCisNCisgICAgICAgIGwx
ZV90ICpsMWUgPSBsMV9saW5lYXJfb2Zmc2V0X3hlbih2YWRkcik7DQorDQorICAgICAgICBkbyB7
DQorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGltaXQgPSAodmFkZHIgKyBTRUNUSU9O
X1NJWkUpICYgKFNFQ1RJT05fTUFTSyk7DQorICAgICAgICAgICAgICAgIGxpbWl0ID0gKGxpbWl0
IDwgZW5kKSA/IGxpbWl0IDogZW5kOw0KKw0KKyAgICAgICAgICAgICAgICBpZiAoKCh2YWRkciB8
IG1hZGRyIHwgbGltaXQpICYgflNFQ1RJT05fTUFTSykgPT0gMCkgew0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICpsMWUgPSBNS19MMUUobWFkZHIsIGZsYWdzKTsNCisgICAgICAgICAgICAgICAg
ICAgICAgICBwdGVfc3luYyhsMWUpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRy
ICs9IFNFQ1RJT05fU0laRTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtYWRkciArPSBTRUNU
SU9OX1NJWkU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0gd2hpbGUobDFlKyssIHZh
ZGRyIDwgZW5kKTsNCisNCisgICAgICAgIHJldHVybiAwOw0KK30NCisNCmRpZmYgLXIgNmFmOGE4
OWM5OWNkIHhlbi9hcmNoL2FybS94ZW4vc2V0dXAuYw0KLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9z
ZXR1cC5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJt
L3hlbi9zZXR1cC5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTY0LDExICs2
NCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRvbTBfc2l6ZSA9IDI1NiAqIDEwDQogaW50ZWdl
cl9wYXJhbSgiZG9tMF9zaXplIiwgZG9tMF9zaXplKTsNCiANCiAvL3N0YXRpYyB1bnNpZ25lZCBs
b25nIGRvbTBfaW1hZ2Vfc3RhcnQgPSAweDQwQjAwMDAwVUw7DQotc3RhdGljIHVuc2lnbmVkIGxv
bmcgZG9tMF9pbWFnZV9zdGFydCA9IDB4MDBCMDAwMDBVTDsNCitzdGF0aWMgdW5zaWduZWQgbG9u
ZyBkb20wX2ltYWdlX3N0YXJ0ID0gMHhBMDAwMDBVTDsNCiBpbnRlZ2VyX3BhcmFtKCJpbWFnZV9z
dGFydCIsIGRvbTBfaW1hZ2Vfc3RhcnQpOw0KIA0KIC8vc3RhdGljIHVuc2lnbmVkIGxvbmcgZG9t
MF9pbWFnZV9zaXplID0gMHhBMDAwMDBVTDsNCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBkb20wX2lt
YWdlX3NpemUgPSAweEEwMDAwMFVMOw0KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRvbTBfaW1hZ2Vf
c2l6ZSA9IDB4MTQwMDAwMFVMOw0KIGludGVnZXJfcGFyYW0oImltYWdlX2xlbmd0aCIsIGRvbTBf
aW1hZ2Vfc2l6ZSk7DQogDQogdm9pZCBhcmNoX2dldF94ZW5fY2Fwcyh4ZW5fY2FwYWJpbGl0aWVz
X2luZm9fdCAqaW5mbykNCkBAIC0yMTEsNiArMjExLDggQEAgYXNtbGlua2FnZSB2b2lkIHN0YXJ0
X3hlbih2b2lkKQ0KIA0KIAl0YXNrbGV0X3N1YnN5c19pbml0KCk7DQogDQorCW1hY2hpbmVfc2V0
dXAoKTsNCisNCiAJdGltZXJfaW5pdCgpOw0KIA0KIAlpZGxlX2RvbWFpbl9pbml0KCk7DQpkaWZm
IC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0veGVuL3RpbWUuYw0KLS0tIGEveGVuL2FyY2gv
YXJtL3hlbi90aW1lLmMJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysgYi94ZW4v
YXJjaC9hcm0veGVuL3RpbWUuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC03
OSw1ICs3OSw0IEBAIHZvaWQgZG9tYWluX3NldF90aW1lX29mZnNldChzdHJ1Y3QgZG9tYWkNCiAN
CiB2b2lkIHRpbWVrZWVwaW5nX2luaXQodm9pZCkNCiB7DQotCU5PVF9ZRVQoKTsNCiB9DQpkaWZm
IC1yIDZhZjhhODljOTljZCB4ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYw0KLS0tIGEveGVuL2Ry
aXZlcnMvY2hhci9jb25zb2xlLmMJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysg
Yi94ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDANCkBAIC00MTIsNyArNDEyLDExIEBAIGxvbmcgZG9fY29uc29sZV9pbyhpbnQgY21kLCBpbnQg
Y291bnQsIFgNCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KICAqLw0KIA0KKyNpZiBkZWZpbmVkKF9fYXJtX18pDQorc3RhdGljIGJvb2xf
dCBjb25zb2xlX2xvY2tzX2J1c3RlZCA9IDE7DQorI2Vsc2UNCiBzdGF0aWMgYm9vbF90IGNvbnNv
bGVfbG9ja3NfYnVzdGVkOw0KKyNlbmRpZg0KIA0KIHN0YXRpYyB2b2lkIF9fcHV0c3RyKGNvbnN0
IGNoYXIgKnN0cikNCiB7DQpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJt
L2dpYy5oDQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMA0KKysr
IGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDANCkBAIC0wLDAgKzEsMTAxIEBADQorLyoNCisgKiBnaWMuaA0KKyAqDQorICogQ29weXJpZ2h0
IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MNCisgKiAgICAgICAgICBKYWVtaW4gUnl1ICA8
am03Ny5yeXVAc2Ftc3VuZy5jb20+DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNl
IGFzDQorICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoN
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAq
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B
ICAwMjExMS0xMzA3ICBVU0ENCisgKi8NCisNCisjaWZuZGVmIF9fQVJNX0dJQ19IX18NCisjZGVm
aW5lIF9fQVJNX0dJQ19IX18NCisNCisNCisvKiBEaXN0cmlidXRvciBSZWdpc3RlciBNYXAgKi8N
CisjZGVmaW5lIF9JQ0REQ1IJCTB4MDAwICAvKiBEaXN0cmlidXRvciBDb250cm9sIFJlZ2lzdGVy
ICovDQorI2RlZmluZSBfSUNESUNUUgkweDAwNCAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgVHlw
ZSBSZWdpc3RlciAqLw0KKyNkZWZpbmUgX0lDRElJRFIJMHgwMDggIC8qIERpc3RyaWJ1dG9yIElt
cGxlbWVudGVyIElkIFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMAkweDA4MCAgLyogSW50
ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMQkweDA4NCAgLyog
SW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMgkweDA4OCAg
LyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMwkweDA4
YyAgLyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSNAkw
eDA5MCAgLyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNF
UgkweDEwMCAgLyogSW50ZXJydXB0IFNldC1FbmFibGUgUmVnaXN0ZXIgKi8NCisjZGVmaW5lIF9J
Q0RJQ0VSCTB4MTgwICAvKiBJbnRlcnJ1cHQgQ2xlYXItRW5hYmxlIFJlZ2lzdGVyICovDQorI2Rl
ZmluZSBfSUNESVNQUgkweDIwMCAgLyogSW50ZXJydXB0IFNldC1QZW5kaW5nIFJlZ2lzdGVyICov
DQorI2RlZmluZSBfSUNESUNQUgkweDI4MCAgLyogSW50ZXJydXB0IENsZWFyLVBlbmRpbmcgUmVn
aXN0ZXIgKi8NCisjZGVmaW5lIF9JQ0RBQlIJCTB4MzAwICAvKiBBY3RpdmUgQml0IFJlZ2lzdGVy
cyAqLw0KKyNkZWZpbmUgX0lDRElQUgkJMHg0MDAgIC8qIEludGVycnVwdCBQcmlvcml0eSBSZWdp
c3RlciAqLw0KKyNkZWZpbmUgX0lDRElQVFIJMHg4MDAgIC8qIEludGVycnVwdCBQcm9jZXNzb3Ig
VGFyZ2V0cyBSZWdpc3RlcnMgKi8NCisjZGVmaW5lIF9JQ0RJQ0ZSCTB4QzAwICAvKiBJbnRlcnJ1
cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8NCisjZGVmaW5lIF9JQ0RTR0lSCTB4RjAwICAv
KiBTb2Z0d2FyZSBHZW5lcmF0ZWQgSW50ZXJydXB0IFJlZ2lzdGVyICovDQorDQorI2RlZmluZSBJ
Q0REQ1IoKQkoX0lDRERDUikNCisjZGVmaW5lIElDRElDVFIoKQkoX0lDRElDVFIpDQorI2RlZmlu
ZSBJQ0RJU1IoeCkJKF9JQ0RJU1IwICsgKHggLyBCSVRTX1BFUl9MT05HKSAqIEJZVEVTX1BFUl9M
T05HKQ0KKyNkZWZpbmUgSUNESVNFUih4KQkoX0lDRElTRVIgKyAoeCAvIEJJVFNfUEVSX0xPTkcp
ICogQllURVNfUEVSX0xPTkcpDQorI2RlZmluZSBJQ0RJQ0VSKHgpCShfSUNESUNFUiArICh4IC8g
QklUU19QRVJfTE9ORykgKiBCWVRFU19QRVJfTE9ORykNCisjZGVmaW5lIElDRElTUFIoeCkJKF9J
Q0RJU1BSICsgKHggLyBCSVRTX1BFUl9MT05HKSAqIEJZVEVTX1BFUl9MT05HKQ0KKyNkZWZpbmUg
SUNESUNQUih4KQkoX0lDRElDUFIgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xP
TkcpDQorI2RlZmluZSBJQ0RBQlIoeCkJKF9JQ0RBQlIgICsgKHggLyBCSVRTX1BFUl9MT05HKSAq
IEJZVEVTX1BFUl9MT05HKQ0KKyNkZWZpbmUgSUNESVBSKHgpCShfSUNESVBSICArICh4IC8gIDQp
ICogQllURVNfUEVSX0xPTkcpDQorI2RlZmluZSBJQ0RJUFRSKHgpCShfSUNESVBUUiArICh4IC8g
IDQpICogQllURVNfUEVSX0xPTkcpDQorI2RlZmluZSBJQ0RTR0lSKCkJKF9JQ0RTR0lSKQ0KKw0K
Ky8qIENQVSBJbnRlcmZhY2UgUmVnaXN0ZXIgTWFwICovDQorI2RlZmluZSBfSUNDSUNSCQkweDAw
MCAgLyogQ1BVIEludGVyZmFjZSBDb250cm9sIFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNDUE1S
CQkweDAwNCAgLyogSW50ZXJydXB0IFByaW9yaXR5IE1hc2sgUmVnaXN0ZXIgKi8NCisjZGVmaW5l
IF9JQ0NCUFIJCTB4MDA4ICAvKiBCaW5yYXJ5IFBvaW50IFJlZ2lzdGVyICovDQorI2RlZmluZSBf
SUNDSUFSCQkweDAwQyAgLyogSW50ZXJydXB0IEFja25vd2xlZGdlIFJlZ2lzdGVyICovDQorI2Rl
ZmluZSBfSUNDRU9JUgkweDAxMCAgLyogRW5kIG9mIEludGVycnVwdCBSZWdpc3RlciAqLw0KKyNk
ZWZpbmUgX0lDQ1JQUgkJMHgwMTQgIC8qIFJ1bm5pbmcgUHJpb3JpdHkgUmVnaXN0ZXIgKi8NCisj
ZGVmaW5lIF9JQ0NIUElSCTB4MDE4ICAvKiBIaWdoZXN0IFBlbmRpbmcgSW50ZXJydXB0IFJlZ2lz
dGVyICovDQorI2RlZmluZSBfSUNDQUJQUgkweDAxQyAgLyogQWxpYXNlZCBCaW5hcnkgUG9pbnQg
UmVnaXN0ZXIgKi8NCisjZGVmaW5lIF9JQ0NJSURSCTB4MEZDICAvKiBDUFUgSW50ZXJmYWNlIElk
IFJlZ2lzdGVyICovDQorDQorI2RlZmluZSBJQ0NJQ1IoKQkoX0lDQ0lDUikNCisjZGVmaW5lIElD
Q1BNUigpCShfSUNDUE1SKQ0KKyNkZWZpbmUgSUNDQlBSKCkJKF9JQ0NCUFIpDQorI2RlZmluZSBJ
Q0NJQVIoKQkoX0lDQ0lBUikNCisjZGVmaW5lIElDQ0VPSVIoKQkoX0lDQ0VPSVIpDQorI2RlZmlu
ZSBJQ0NSUFIoKQkoX0lDQ1JQUikNCisjZGVmaW5lIElDQ0hQSVIoKQkoX0lDQ0hQSVIpDQorI2Rl
ZmluZSBJQ0NJSURSKCkJKF9JQ0NJSURSKQ0KKw0KKyNkZWZpbmUgU0VDVVJFX0lOVEVSUlVQVAkw
DQorI2RlZmluZSBOT05TRUNVUkVfSU5URVJSVVBUCTENCisNCisjZGVmaW5lIFNHSSh4KQkJCSh4
KQ0KKyNkZWZpbmUgUFBJKHgpCQkJKHggKyAxNikNCisjZGVmaW5lIFNQSSh4KQkJCSh4ICsgMzIp
DQorDQorI2lmbmRlZiBfX0FTU0VNQkxZX18NCisNCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+DQor
DQorI2RlZmluZSBHSUNfRElTVFJJQlVUT1IoeCkgICAgICAoX2dpY19kaXN0cmlidXRvcl9iYXNl
ICsgeCkNCisjZGVmaW5lIEdJQ19DUFVfSU5URVJGQUNFKHgpICAgIChfZ2ljX2NwdV9iYXNlICsg
eCkNCisNCit2b2lkIGdpY19zZXRfY3B1KHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGludCBt
YXNrKTsNCit2b2lkIGdpY19zZXRfaXJxX3ByaW9yaXR5KHVuc2lnbmVkIGludCBpcnEsIHVuc2ln
bmVkIGludCBwcmlvcml0eSk7DQordm9pZCBnaWNfYWNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsN
Cit2b2lkIGdpY19tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsNCit2b2lkIGdpY191bm1hc2tf
aXJxKHVuc2lnbmVkIGludCBpcnEpOw0KK3ZvaWQgZ2ljX2VuZF9pcnEodW5zaWduZWQgaW50IGly
cSk7DQordm9pZCBnaWNfY2hhbmdlX2lycV9zdGF0ZSh1bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25l
ZCBpbnQgc3RhdGUpOw0KKw0KK2V4dGVybiB2b2lkICpfZ2ljX2NwdV9iYXNlW05SX0NQVVNdOw0K
K2V4dGVybiB2b2lkICpfZ2ljX2Rpc3RyaWJ1dG9yX2Jhc2U7DQorI2VuZGlmDQorI2VuZGlmDQpk
aWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oDQotLS0gYS94ZW4v
aW5jbHVkZS9hc20tYXJtL2lycS5oCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysr
IGIveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDANCkBAIC0xNSw2ICsxNSw3IEBADQogDQogI2RlZmluZSBpcnFfY2ZnKGlycSkJCSgmaXJxX2Nm
Z1tpcnFdKQ0KICNkZWZpbmUgaXJxX3RvX2Rlc2MoaXJxKQkoJmlycV9kZXNjW2lycV0pCQ0KKyNk
ZWZpbmUgZGVzY190b19pcnEoZGVzYykJKChkZXNjIC0gJmlycV9kZXNjWzBdKSAvIHNpemVvZihz
dHJ1Y3QgaXJxX2Rlc2MpKTsNCiANCiAjZGVmaW5lIElSUV9NQVhfR1VFU1RTCQk3DQogdHlwZWRl
ZiBzdHJ1Y3Qgew0KQEAgLTQwLDggKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KICAgICBERUNM
QVJFX0JJVE1BUChfYml0cyxOUl9JUlFTKTsNCiB9IHZtYXNrX3Q7DQogDQotZXh0ZXJuIHN0cnVj
dCBpcnFfZGVzYyAqaXJxX2Rlc2M7DQotDQogc3RhdGljIGlubGluZSBpbnQgaXJxX2Rlc2NfaW5p
dGlhbGl6ZWQoc3RydWN0IGlycV9kZXNjICpkZXNjKQ0KIHsNCiAJcmV0dXJuIDA7DQpkaWZmIC1y
IDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2F2cC5oDQotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMA0KKysrIGIveGVuL2luY2x1ZGUvYXNt
LWFybS90ZWdyYS9hdnAuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC0wLDAg
KzEsMTQ0IEBADQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgTlZJRElBIENvcnBvcmF0aW9u
Lg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoNCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCisgKiB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqDQorICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLA0KKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24NCisgKiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIE5WSURJQSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMNCisgKiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUNCisgKiB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUNCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUN
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SDQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTg0KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUNCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKg0KKyAqLw0KKw0KKyNpZm5k
ZWYgSU5DTFVERURfQVZQX0gNCisjZGVmaW5lIElOQ0xVREVEX0FWUF9IDQorDQorI2luY2x1ZGUg
ImFwMTUvYXJpY3Rsci5oIg0KKyNpbmNsdWRlICJhcDE1L2FydGltZXIuaCINCisvLyBGSVhNRTog
Z2V0IHRoZSBhcmFybWV2IGhlYWRlcg0KKw0KKy8vIDMgY29udHJvbGxlcnMgaW4gY29udGlndW91
cyBtZW1vcnkgc3RhcnRpbmcgYXQgSU5URVJSVVBUX0JBU0UsIGVhY2gNCisvLyBjb250cm9sbGVy
J3MgYXBlcnR1cmUgaXMgSU5URVJSVVBUX1NJWkUgbGFyZ2UNCisjZGVmaW5lIElOVEVSUlVQVF9C
QVNFIDB4NjAwMDQwMDANCisjZGVmaW5lIElOVEVSUlVQVF9TSVpFIDB4MTAwDQorI2RlZmluZSBJ
TlRFUlJVUFRfTlVNX0NPTlRST0xMRVJTIDMNCisNCisjZGVmaW5lIElOVEVSUlVQVF9QRU5ESU5H
KCBjdGxyICkgXA0KKyAgICAoSU5URVJSVVBUX0JBU0UgKyAoKGN0bHIpICogSU5URVJSVVBUX1NJ
WkUpICsgSUNUTFJfVklSUV9DT1BfMCkNCisNCisjZGVmaW5lIElOVEVSUlVQVF9TRVQoIGN0bHIg
KSBcDQorICAgIChJTlRFUlJVUFRfQkFTRSArICgoY3RscikgKiBJTlRFUlJVUFRfU0laRSkgKyBJ
Q1RMUl9DT1BfSUVSX1NFVF8wKQ0KKw0KKyNkZWZpbmUgSU5URVJSVVBUX0NMUiggY3RsciApIFwN
CisgICAgKElOVEVSUlVQVF9CQVNFICsgKChjdGxyKSAqIElOVEVSUlVQVF9TSVpFKSArIElDVExS
X0NPUF9JRVJfQ0xSXzApDQorDQorI2RlZmluZSBPU0NfQ1RSTCAgICAgICAgKCAweDYwMDA2MDAw
ICsgMHg1MCApDQorI2RlZmluZSBPU0NfRlJFUV9ERVQgICAgKCAweDYwMDA2MDAwICsgMHg1OCAp
DQorI2RlZmluZSBPU0NfREVUX1NUQVRVUyAgKCAweDYwMDA2MDAwICsgMHg1QyApDQorDQorI2Rl
ZmluZSBUSU1FUl9VU0VDICAgICAgKCAweDYwMDA1MDEwICkNCisjZGVmaW5lIFRJTUVSX0NGRyAg
ICAgICAoIDB4NjAwMDUwMTQgKQ0KKyNkZWZpbmUgVElNRVJfMF9CQVNFICAgICggMHg2MDAwNTAw
MCApDQorI2RlZmluZSBUSU1FUl8wICAgICAgICAgKCBUSU1FUl8wX0JBU0UgKyBUSU1FUl9UTVJf
UFRWXzAgKQ0KKyNkZWZpbmUgVElNRVJfMF9DTEVBUiAgICggVElNRVJfMF9CQVNFICsgVElNRVJf
VE1SX1BDUl8wICkNCisjZGVmaW5lIFRJTUVSXzFfQkFTRSAgICAoIDB4NjAwMDUwMDggKQ0KKyNk
ZWZpbmUgVElNRVJfMSAgICAgICAgICggVElNRVJfMV9CQVNFICsgVElNRVJfVE1SX1BUVl8wICkN
CisjZGVmaW5lIFRJTUVSXzFfQ0xFQVIgICAoIFRJTUVSXzFfQkFTRSArIFRJTUVSX1RNUl9QQ1Jf
MCApDQorDQorI2RlZmluZSBDTE9DS19SU1RfTE8gICAgKDB4NjAwMDYwMDQpDQorI2RlZmluZSBD
TE9DS19DVExSX0hJICAgKDB4NjAwMDYwMTQpDQorI2RlZmluZSBDTE9DS19DVExSX0xPICAgKDB4
NjAwMDYwMTApDQorDQorI2RlZmluZSBDQUNIRV9DVExSICAgICAgKDB4NjAwMEMwMDApDQorI2Rl
ZmluZSBDQUNIRV9DT05UUk9MXzAgICAgICAgICAoMHgwKQ0KKw0KKyNkZWZpbmUgUFBJX0lOVFJf
SURfVElNRVJfMCAgICAgKDApDQorI2RlZmluZSBQUElfSU5UUl9JRF9USU1FUl8xICAgICAoMSkN
CisjZGVmaW5lIFBQSV9JTlRSX0lEX1RJTUVSXzIgICAgICg5KQ0KKyNkZWZpbmUgUFBJX0lOVFJf
SURfVElNRVJfMyAgICAgKDEwKQ0KKw0KKy8qIGZsb3cgY29udHJvbGxlciAqLw0KKyNkZWZpbmUg
RkxPV19DT05UUk9MTEVSICAgICAoMHg2MDAwNzAwNCkNCisNCisvKiBleGNlcHRpb24gdmVjdG9y
cyAqLw0KKyNkZWZpbmUgVkVDVE9SX0JBU0UgICAgICAgICAgICAgKCAweDYwMDBGMjAwICkNCisj
ZGVmaW5lIFZFQ1RPUl9SRVNFVCAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyAwICkNCisjZGVm
aW5lIFZFQ1RPUl9VTkRFRiAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyA0ICkNCisjZGVmaW5l
IFZFQ1RPUl9TV0kgICAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyA4ICkNCisjZGVmaW5lIFZF
Q1RPUl9QUkVGRVRDSF9BQk9SVCAgICggVkVDVE9SX0JBU0UgKyAxMiApDQorI2RlZmluZSBWRUNU
T1JfREFUQV9BQk9SVCAgICAgICAoIFZFQ1RPUl9CQVNFICsgMTYgKQ0KKyNkZWZpbmUgVkVDVE9S
X0lSUSAgICAgICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDI0ICkNCisjZGVmaW5lIFZFQ1RPUl9G
SVEgICAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyAyOCApDQorDQorI2RlZmluZSBNT0RFX0RJ
U0FCTEVfSU5UUiAweGMwDQorI2RlZmluZSBNT0RFX1VTUiAweDEwDQorI2RlZmluZSBNT0RFX0ZJ
USAweDExDQorI2RlZmluZSBNT0RFX0lSUSAweDEyDQorI2RlZmluZSBNT0RFX1NWQyAweDEzDQor
I2RlZmluZSBNT0RFX0FCVCAweDE3DQorI2RlZmluZSBNT0RFX1VORCAweDFCDQorI2RlZmluZSBN
T0RFX1NZUyAweDFGDQorDQorI2RlZmluZSBBUDE1X0NBQ0hFX0xJTkVfU0laRSAgICAgICAgICAg
IDMyDQorDQorI2RlZmluZSBBUDE1X0FQQl9MMl9DQUNIRV9CQVNFIDB4NzAwMGU4MDAgDQorI2Rl
ZmluZSBBUDE1X0FQQl9DTEtfUlNUX0JBU0UgIDB4NjAwMDYwMDANCisjZGVmaW5lIEFQMTVfQVBC
X01JU0NfQkFTRSAgICAgMHg3MDAwMDAwMA0KKw0KKyNkZWZpbmUgQVAxMF9BUEJfQ0xLX1JTVF9C
QVNFICAweDYwMDA2MDAwDQorI2RlZmluZSBBUDEwX0FQQl9NSVNDX0JBU0UgICAgIDB4NzAwMDAw
MDANCisNCisjZGVmaW5lIE1NVV9UTEJfQkFTRSAgICAgICAgICAgICAgMHhmMDAwZjAwMA0KKyNk
ZWZpbmUgTU1VX1RMQl9DQUNIRV9XSU5ET1dfMCAgICAweDQwDQorI2RlZmluZSBNTVVfVExCX0NB
Q0hFX09QVElPTlNfMCAgIDB4NDQNCisNCisjZGVmaW5lIEFQMTVfUElOTVVYX0NGR19DVExfMCAg
IDB4NzAwMDAwMjQNCisjZGVmaW5lIEFQMTVfQVZQX0pUQUdfRU5BQkxFICAgIDB4QzANCisNCisj
ZGVmaW5lIFBNQ19TQ1JBVENIMjJfUkVHX0xQMCAgIDB4NzAwMGU0YTgNCisNCisjZGVmaW5lIEFW
UF9XRFRfUkVTRVQgICAweDJGMDBCQUQwDQorDQorLyogQ2FjaGVkIHRvIHVuY2FjaGVkIG9mZnNl
dCBmb3IgQVZQDQorICoNCisgKiBIYXJkd2FyZSBoYXMgdW5jYWNoZWQgcmVtYXAgYXBlcnR1cmUg
Zm9yIEFWUCBhcyBBVlAgZG9lc24ndCBoYXZlIE1NVQ0KKyAqIGJ1dCBzdGlsbCBoYXMgY2FjaGUg
KG5hbWVkIENPUCBjYWNoZSkuDQorICoNCisgKiBUaGlzIGFwZXJ0dXJlIG1vdmVkIGJldHdlZW4g
QVAxNSBhbmQgQVAyMC4NCisgKi8NCisjZGVmaW5lIEFQMTVfQ0FDSEVEX1RPX1VOQ0FDSEVEX09G
RlNFVCAweDkwMDAwMDAwDQorI2RlZmluZSBBUDIwX0NBQ0hFRF9UT19VTkNBQ0hFRF9PRkZTRVQg
MHg4MDAwMDAwMA0KKw0KKyNkZWZpbmUgQVBYWF9FWFRfTUVNX1NUQVJUICAgICAgMHgwMDAwMDAw
MA0KKyNkZWZpbmUgQVBYWF9FWFRfTUVNX0VORCAgICAgICAgMHg0MDAwMDAwMA0KKw0KKyNkZWZp
bmUgQVBYWF9NTUlPX1NUQVJUICAgICAgICAgMHg0MDAwMDAwMA0KKyNkZWZpbmUgQVBYWF9NTUlP
X0VORCAgICAgICAgICAgMHhGRkYwMDAwMA0KKw0KKyNkZWZpbmUgVFhYX0VYVF9NRU1fU1RBUlQg
ICAgICAgMHg4MDAwMDAwMA0KKyNkZWZpbmUgVFhYX0VYVF9NRU1fRU5EICAgICAgICAgMHhjMDAw
MDAwMA0KKw0KKyNkZWZpbmUgVFhYX01NSU9fU1RBUlQgICAgICAgICAgMHg0MDAwMDAwMA0KKyNk
ZWZpbmUgVFhYX01NSU9fRU5EICAgICAgICAgICAgMHg4MDAwMDAwMA0KKw0KKyNlbmRpZg0KZGlm
ZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS9jb25maWcuaA0KLS0t
IGEveGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS9jb25maWcuaAlTdW4gRmViIDEyIDEyOjI0OjIx
IDIwMTIgKzA5MDANCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvY29uZmlnLmgJU3Vu
IEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtMSwxMSArMSw2IEBADQogI2lmbmRlZiBf
X1RFR1JBX0NPTkZJR19IX18NCiAjZGVmaW5lIF9fVEVHUkFfQ09ORklHX0hfXw0KIA0KLSNkZWZp
bmUgSFoJMTAwDQotI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCTEwMDAwMDANCisjZGVmaW5lIE1B
WF9QSFlTX0NQVVMJMg0KIA0KLSNkZWZpbmUgTUFYX1BIWVNfQ1BVUwkJMg0KLQ0KLSNkZWZpbmUg
QlVJTFRJTl9DT01NQU5EX0xJTkVfU0laRSAyNTYNCi0jZGVmaW5lIEJVSUxUSU5fQ09NTUFORF9M
SU5FCSIiDQogI2VuZGlmDQpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJt
L3RlZ3JhL2lycXMuaA0KLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDANCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvaXJxcy5oCVN1biBGZWIgMTIgMTU6
MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTAsMCArMSw2MCBAQA0KKy8qDQorICogYXJjaC9hcm0vbWFj
aC10ZWdyYS9pbmNsdWRlL21hY2gvaXJxcy5oDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDks
IE5WSURJQSBDb3Jwb3JhdGlvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkNCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQNCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yDQorICogbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcN
CisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLA0KKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4NCisgKi8NCisNCisjaWZuZGVmIF9fVEVHUkFf
SVJRU19IDQorI2RlZmluZSBfX1RFR1JBX0lSUVNfSA0KKw0KKyNkZWZpbmUgTlJfSVJRUwkJCTUx
Mg0KKw0KKyNkZWZpbmUgSU5UX1BSSV9CQVNFCQkzMg0KKyNkZWZpbmUgSU5UX1JUQwkJCShJTlRf
UFJJX0JBU0UgKyAyKQ0KKyNkZWZpbmUgSU5UX1VTQgkJCShJTlRfUFJJX0JBU0UgKyAyMCkNCisj
ZGVmaW5lIElOVF9VU0IyCQkoSU5UX1BSSV9CQVNFICsgMjEpDQorI2RlZmluZSBJTlRfQVBCX0RN
QQkJKElOVF9QUklfQkFTRSArIDI2KQ0KKw0KKyNkZWZpbmUgSU5UX1NFQ19CQVNFCQkoSU5UX1BS
SV9CQVNFICsgMzIpDQorI2RlZmluZSBJTlRfR1BJTzEJCShJTlRfU0VDX0JBU0UgKyAwKQ0KKyNk
ZWZpbmUgSU5UX0dQSU8yCQkoSU5UX1NFQ19CQVNFICsgMSkNCisjZGVmaW5lIElOVF9HUElPMwkJ
KElOVF9TRUNfQkFTRSArIDIpDQorI2RlZmluZSBJTlRfR1BJTzQJCShJTlRfU0VDX0JBU0UgKyAz
KQ0KKyNkZWZpbmUgSU5UX1RNUjMJCShJTlRfU0VDX0JBU0UgKyA5KQ0KKyNkZWZpbmUgSU5UX1RN
UjQJCShJTlRfU0VDX0JBU0UgKyAxMCkNCisjZGVmaW5lIElOVF9TWVNfU1RBVFNfTU9OCShJTlRf
U0VDX0JBU0UgKyAyMikNCisjZGVmaW5lIElOVF9HUElPNQkJKElOVF9TRUNfQkFTRSArIDIzKQ0K
Kw0KKyNkZWZpbmUgSU5UX1RSSV9CQVNFCQkoSU5UX1NFQ19CQVNFICsgMzIpDQorI2RlZmluZSBJ
TlRfS0JDCQkJKElOVF9UUklfQkFTRSArIDIxKQ0KKyNkZWZpbmUgSU5UX0VYVEVSTkFMX1BNVQko
SU5UX1RSSV9CQVNFICsgMjIpDQorI2RlZmluZSBJTlRfR1BJTzYJCShJTlRfVFJJX0JBU0UgKyAy
MykNCisjZGVmaW5lIElOVF9HUElPNwkJKElOVF9UUklfQkFTRSArIDI1KQ0KKw0KKyNkZWZpbmUg
SU5UX1FVQURfQkFTRQkJKElOVF9UUklfQkFTRSArIDMyKQ0KKyNkZWZpbmUgSU5UX1VTQjMJCShJ
TlRfUVVBRF9CQVNFICsgMSkNCisNCisjZGVmaW5lIElOVF9HUElPX0JBU0UJCShJTlRfUVVBRF9C
QVNFICsgMzIpDQorI2RlZmluZSBJTlRfR1BJT19OUgkJKDI4KjgpDQorDQorI2RlZmluZSBJTlRf
QVBCRE1BX0JBU0UJIAkoSU5UX0dQSU9fQkFTRSArIElOVF9HUElPX05SKQ0KKyNkZWZpbmUgSU5U
X0FQQkRNQV9OUgkJKDE2KQ0KKw0KKyNkZWZpbmUgSU5UX1NZU19OUgkoSU5UX0dQSU9fQkFTRSAt
IElOVF9QUklfQkFTRSkNCisjZGVmaW5lIElOVF9TWVNfU1oJKElOVF9TRUNfQkFTRSAtIElOVF9Q
UklfQkFTRSkNCisNCisjZW5kaWYNCmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vdGVncmEvc21wLmgNCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwDQorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL3NtcC5oCVN1biBGZWIgMTIg
MTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTAsMCArMSw3IEBADQorI2lmbmRlZiBBU01BUk1fQVJD
SF9TTVBfSA0KKyNkZWZpbmUgQVNNQVJNX0FSQ0hfU01QX0gNCisNCisNCisjaW5jbHVkZSA8YXNt
L2dpYy5oPg0KKw0KKyNlbmRpZg0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUvYXNt
LWFybS90ZWdyYS90ZWdyYS5oDQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMA0KKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS90ZWdyYS5oCVN1biBGZWIg
MTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTAsMCArMSw3NSBAQA0KKyNpZm5kZWYgX19URUdS
QTI1MF9IX18NCisjZGVmaW5lIF9fVEVHUkEyNTBfSF9fDQorDQorI2RlZmluZSBURUdSQV9BUk1f
Q1BVX0JBU0UJCTB4NTAwMDAwMDANCisjZGVmaW5lIFRFR1JBX1BQU0JfREVWSUNFX0JBU0UJCTB4
NjAwMDAwMDANCisjZGVmaW5lIFRFR1JBX0FQQl9ERVZJQ0VfQkFTRQkJMHg3MDAwMDAwMA0KKw0K
KyNkZWZpbmUgVEVHUkFfQVJNX1BFUklGX0JBU0UJCTB4NTAwNDAwMDANCisjZGVmaW5lIFRFR1JB
X0FSTV9QRVJJRl9TSVpFCQlTWl84Sw0KKw0KKyNkZWZpbmUgVEVHUkFfU0NVX0JBU0UJCQkweDUw
MDQwMDAwDQorI2RlZmluZSBURUdSQV9TQ1VfU0laRQkJCVNaXzI1Ng0KKw0KKyNkZWZpbmUgVEVH
UkFfR0lDX1BST0NfSUZfQkFTRQkJMHg1MDA0MDEwMA0KKyNkZWZpbmUgVEVHUkFfR0lDX1BST0Nf
SUZfU0laRQkJU1pfMjU2DQorDQorI2RlZmluZSBURUdSQV9BUk1fSU5UX0RJU1RfQkFTRQkJMHg1
MDA0MTAwMA0KKyNkZWZpbmUgVEVHUkFfQVJNX0lOVF9ESVNUX1NJWkUJCVNaXzRLDQorDQorI2Rl
ZmluZSBURUdSQV9QUklNQVJZX0lDVExSX0JBU0UJMHg2MDAwNDAwMA0KKyNkZWZpbmUgVEVHUkFf
UFJJTUFSWV9JQ1RMUl9TSVpFCVNaXzY0DQorDQorI2RlZmluZSBURUdSQV9TRUNPTkRBUllfSUNU
TFJfQkFTRQkweDYwMDA0MTAwDQorI2RlZmluZSBURUdSQV9TRUNPTkRBUllfSUNUTFJfU0laRQlT
Wl82NA0KKw0KKyNkZWZpbmUgVEVHUkFfVEVSVElBUllfSUNUTFJfQkFTRQkweDYwMDA0MjAwDQor
I2RlZmluZSBURUdSQV9URVJUSUFSWV9JQ1RMUl9TSVpFCVNaXzY0DQorDQorI2RlZmluZSBURUdS
QV9RVUFURVJOQVJZX0lDVExSX0JBU0UJMHg2MDAwNDMwMA0KKyNkZWZpbmUgVEVHUkFfUVVBVEVS
TkFSWV9JQ1RMUl9TSVpFCVNaXzY0DQorDQorI2RlZmluZSBURUdSQV9UTVIxX0JBU0UJCQkweDYw
MDA1MDAwDQorI2RlZmluZSBURUdSQV9UTVIxX1NJWkUJCQlTWl84DQorDQorI2RlZmluZSBURUdS
QV9UTVIyX0JBU0UJCQkweDYwMDA1MDA4DQorI2RlZmluZSBURUdSQV9UTVIyX1NJWkUJCQlTWl84
DQorDQorI2RlZmluZSBURUdSQV9UTVJVU19CQVNFCQkweDYwMDA1MDEwDQorI2RlZmluZSBURUdS
QV9UTVJVU19TSVpFCQlTWl82NA0KKw0KKyNkZWZpbmUgVEVHUkFfVE1SM19CQVNFCQkJMHg2MDAw
NTA1MA0KKyNkZWZpbmUgVEVHUkFfVE1SM19TSVpFCQkJU1pfOA0KKw0KKyNkZWZpbmUgVEVHUkFf
VE1SNF9CQVNFCQkJMHg2MDAwNTA1OA0KKyNkZWZpbmUgVEVHUkFfVE1SNF9TSVpFCQkJU1pfOA0K
Kw0KKyNkZWZpbmUgVEVHUkFfQ0xLX1JFU0VUX0JBU0UJCTB4NjAwMDYwMDANCisjZGVmaW5lIFRF
R1JBX0NMS19SRVNFVF9TSVpFCQlTWl80Sw0KKw0KKyNkZWZpbmUgVEVHUkFfRkxPV19DVFJMX0JB
U0UJCTB4NjAwMDcwMDANCisjZGVmaW5lIFRFR1JBX0ZMT1dfQ1RSTF9TSVpFCQkyMA0KKw0KKyNk
ZWZpbmUgVEVHUkFfR1BJT19CQVNFCQkJMHg2MDAwRDAwMA0KKyNkZWZpbmUgVEVHUkFfR1BJT19T
SVpFCQkJU1pfNEsNCisNCisjZGVmaW5lIFRFR1JBX0VYQ0VQVElPTl9WRUNUT1JTX0JBU0UgICAg
MHg2MDAwRjAwMA0KKyNkZWZpbmUgVEVHUkFfRVhDRVBUSU9OX1ZFQ1RPUlNfU0laRSAgICBTWl80
Sw0KKw0KKyNkZWZpbmUgSUNUTFJfQ1BVX0lFUl8wCQkJKDB4MjApDQorI2RlZmluZSBJQ1RMUl9D
UFVfSUVSX1NFVF8wCQkoMHgyNCkNCisjZGVmaW5lIElDVExSX0NQVV9JRVJfQ0xSXzAJCSgweDI4
KQ0KKyNkZWZpbmUgSUNUTFJfQ1BVX0lFUF9DTEFTU18wCQkoMHgyQykNCisjZGVmaW5lIElDVExS
X0NPUF9JRVJfMAkJCSgweDMwKQ0KKyNkZWZpbmUgSUNUTFJfQ09QX0lFUl9TRVRfMAkJKDB4MzQp
DQorI2RlZmluZSBJQ1RMUl9DT1BfSUVSX0NMUl8wCQkoMHgzOCkNCisjZGVmaW5lIElDVExSX0NP
UF9JRVBfQ0xBU1NfMAkJKDB4M0MpDQorDQorI2RlZmluZSBBUk1fUEVSSUZfQkFTRQkJCSgweDUw
MDQwMDAwKQ0KKw0KKy8vI2RlZmluZSBJT19BRERSRVNTKHgpCQkJKCgoKCh4KSAmIDB4NzAwMDAw
MDApID4+IDgpICsgKCgoeCkgJiAweDBGMDAwMDAwKSA+PiA0KSkgfCgoeCkgJiAweEZGRkZGKSB8
IDB4RkIwMDAwMDAgKQ0KKyNkZWZpbmUgSU9fQUREUkVTUyh4KQkJCSgoKCh4KSAmIDB4RjAwMDAw
MDApID4+IDgpIHwgKCh4KSAmIDB4RkZGRkYpIHwgKDB4RkIwMDAwMDAgKSkNCisjZGVmaW5lIElO
VF9QUElfQUREUkVTUyhfaW5zdCkJCSgweDYwMDA0MDAwICsgKDB4MTAwICogKF9pbnN0KSkpDQor
I2RlZmluZSBJTlRfQVBCRE1BX0FERFJFU1MJCSgweDYwMDBhMDAwKQ0KKw0KKyNlbmRpZg0KZGlm
ZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUveGVuL2lycS5oDQotLS0gYS94ZW4vaW5jbHVk
ZS94ZW4vaXJxLmgJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysgYi94ZW4vaW5j
bHVkZS94ZW4vaXJxLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtOTUsNiAr
OTUsMTAgQEAgaW50IGFyY2hfaW5pdF9vbmVfaXJxX2Rlc2Moc3RydWN0IGlycV9kZQ0KIA0KICNk
ZWZpbmUgaXJxX2Rlc2NfaW5pdGlhbGl6ZWQoZGVzYykgKChkZXNjKS0+aGFuZGxlciAhPSBOVUxM
KQ0KIA0KKyNpZiBkZWZpbmVkKF9fYXJtX18pDQorZXh0ZXJuIGlycV9kZXNjX3QgaXJxX2Rlc2Nb
TlJfSVJRU107DQorI2VuZGlmDQorDQogI2lmIGRlZmluZWQoX19pYTY0X18pDQogZXh0ZXJuIGly
cV9kZXNjX3QgaXJxX2Rlc2NbTlJfVkVDVE9SU107DQogDQpAQCAtMTIxLDYgKzEyNSw4IEBAIGV4
dGVybiB2b2lkIGlycV9hY3Rvcl9ub25lKHN0cnVjdCBpcnFfZGUNCiAjZGVmaW5lIGlycV9zaHV0
ZG93bl9ub25lIGlycV9hY3Rvcl9ub25lDQogI2RlZmluZSBpcnFfZGlzYWJsZV9ub25lIGlycV9h
Y3Rvcl9ub25lDQogI2RlZmluZSBpcnFfZW5hYmxlX25vbmUgaXJxX2FjdG9yX25vbmUNCisjZGVm
aW5lIGlycV9hY2tfbm9uZQlpcnFfYWN0b3Jfbm9uZQ0KKyNkZWZpbmUgaXJxX2VuZF9ub25lCWly
cV9hY3Rvcl9ub25lDQogDQogc3RydWN0IGRvbWFpbjsNCiBzdHJ1Y3QgdmNwdTsNCg==


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: application/octet-stream;
 name="patch11.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="patch11.diff"


YXJtOiBhZGQgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgVGVncmEy
IGhhcm1vbnkgYm9hcmQuCgogeGVuL2FyY2gvYXJtL3RlZ3JhL01ha2VmaWxlICAgICAgICB8
ICAgIDMgKy0KIHhlbi9hcmNoL2FybS90ZWdyYS9lbnRyeS5TICAgICAgICAgfCAgIDMzICsr
KysrKysrCiB4ZW4vYXJjaC9hcm0vdGVncmEvdGVncmEyNTAuYyAgICAgIHwgIDMzMCArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3RlZ3JhL3RpbWVyLmMg
ICAgICAgICB8ICAxMTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h
cm0veGVuL2NwdS5jICAgICAgICAgICAgIHwgICAgNSArCiB4ZW4vYXJjaC9hcm0veGVuL2Zh
dWx0LmMgICAgICAgICAgIHwgICAgMSAtCiB4ZW4vYXJjaC9hcm0veGVuL2lycS5jICAgICAg
ICAgICAgIHwgICA0NiArKysrKysrKysrKy0KIHhlbi9hcmNoL2FybS94ZW4vbW0uYyAgICAg
ICAgICAgICAgfCAgIDI0ICsrKysrKwogeGVuL2FyY2gvYXJtL3hlbi9zZXR1cC5jICAgICAg
ICAgICB8ICAgIDYgKy0KIHhlbi9hcmNoL2FybS94ZW4vdGltZS5jICAgICAgICAgICAgfCAg
ICAxIC0KIHhlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jICAgICAgICAgfCAgICA0ICsKIHhl
bi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmggICAgICAgICAgfCAgMTAxICsrKysrKysrKysrKysr
KysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaXJxLmggICAgICAgICAgfCAgICAz
ICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2F2cC5oICAgIHwgIDE0NCArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVn
cmEvY29uZmlnLmggfCAgICA3ICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2lycXMu
aCAgIHwgICA2MCArKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEv
c21wLmggICAgfCAgICA3ICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvdGVncmEuaCAg
fCAgIDc1ICsrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL2lycS5oICAgICAg
ICAgICAgICB8ICAgIDYgKwogMTkgZmlsZXMgY2hhbmdlZCwgOTUyIGluc2VydGlvbnMoKyks
IDE0IGRlbGV0aW9ucygtKQoKU2lnbmVkLW9mZi1ieTogSmFlbWluIFJ5dSA8am03Ny5yeXVA
c2Ftc3VuZy5jb20+CgpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0vdGVncmEv
TWFrZWZpbGUKLS0tIGEveGVuL2FyY2gvYXJtL3RlZ3JhL01ha2VmaWxlCVN1biBGZWIgMTIg
MTI6MjQ6MjEgMjAxMiArMDkwMAorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvTWFrZWZpbGUJ
U3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwCkBAIC0xLDEgKzEsMiBAQAotb2JqLXkg
Kz0gZHVtbXkubworb2JqLXkgKz0gdGltZXIubyBlbnRyeS5vIHRlZ3JhMjUwLm8KKwpkaWZm
IC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0vdGVncmEvZW50cnkuUwotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0v
dGVncmEvZW50cnkuUwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIGVudHJ5LlMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggU2Ft
c3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgSmFlTWluIFJ5dSAgPGptNzcucnl1QHNh
bXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw
LCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2Nv
bmZpZy5oPiAKKyNpbmxjdWRlIDxhc20vYXJjaC9pcnFzLmg+CisjaW5jbHVkZSA8YXNtL3Bh
Z2UuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNy
b3MuaD4KKyNpbmNsdWRlIDxhc20vY3B1LWRvbWFpbi5oPgorI2luY2x1ZGUgPGFzbS9hc20t
b2Zmc2V0cy5oPgorCisJLmFsaWduCTUKKworRU5UUlkoYXJjaF9jb250ZXh0X3N3aXRjaCkK
Kwltb3YJcGMsIGxyCisKZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3RlZ3Jh
L3RlZ3JhMjUwLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2FyY2gvYXJtL3RlZ3JhL3RlZ3JhMjUwLmMJU3VuIEZlYiAxMiAxNTow
NDowNiAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzMwIEBACisvKgorICogdGVncmEyNTAuYwor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MgCisg
KiAgICAgICAgIEphZU1pbiBSeXUgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBT
ZWN1cmUgWGVuIG9uIEFSTSBhcmNoaXRlY3R1cmUgZGVzaWduZWQgYnkgU2FuZy1idW0gU3Vo
IGNvbnNpc3RzIG9mIAorICogWGVuIG9uIEFSTSBhbmQgdGhlIGFzc29jaWF0ZWQgYWNjZXNz
IGNvbnRyb2wuCisgKiAKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw
LCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2Nv
bmZpZy5oPgorI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi9saWIu
aD4KKyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cisj
aW5jbHVkZSA8eGVuL3NtcC5oPgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNpbmNsdWRlIDx4
ZW4vbW0uaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisjaW5jbHVkZSA8YXNtL3BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8YXNtL2dpYy5oPgorI2luY2x1ZGUgPGFzbS9yZWdzLmg+CisjaW5j
bHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2ZsdXNodGxiLmg+CisjaW5jbHVkZSA8
YXNtL2FyY2gvdGVncmEuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+CisKKyNkZWZp
bmUgVEVHUkEyNTBfTUVNT1JZX0JBU0UgICAgIDB4MDAwMDAwMDBVTAorI2RlZmluZSBURUdS
QTI1MF9NRU1PUllfU0laRSAgICAgMHg0MDAwMDAwMFVMCisKKyNkZWZpbmUgVEVHUkEyNTBf
REVWX0JBU0UgICAgICAgIDB4NTAwMDAwMDBVTAorI2RlZmluZSBURUdSQTI1MF9ERVZfU0la
RSAgICAgICAgMHgwMDMwMDAwMFVMCisKK0RFQ0xBUkVfTUVNT1JZX01BUCh0ZWdyYTI1MCkg
PSB7CisgICAgICAgIE1FTU1BUF9FTlRSWShURUdSQTI1MF9NRU1PUllfQkFTRSwgVEVHUkEy
NTBfTUVNT1JZX1NJWkUsIE1FTU9SWV9UWVBFX1JBTSwgTDFFX1RZUEVfSFlQRVJWSVNPUiks
CisgICAgICAgIE1FTU1BUF9FTlRSWShURUdSQTI1MF9ERVZfQkFTRSwgICAgVEVHUkEyNTBf
REVWX1NJWkUsICAgIE1FTU9SWV9UWVBFX0RFViwgTDFFX1RZUEVfREVWSUNFKQorfTsKKwor
Ly8gUmVnaXN0ZXIgQVBCRE1BX0lSUV9NQVNLX0NMUl8wCisjZGVmaW5lIEFQQkRNQV9JUlFf
U1RBX0NQVV8wCSgweDE0KQorI2RlZmluZSBBUEJETUFfSVJRX01BU0tfU0VUXzAJKDB4MjAp
CisjZGVmaW5lIEFQQkRNQV9JUlFfTUFTS19DTFJfMAkoMHgyNCkKKwordm9pZCAqdGVncmFf
Z2ljX2NwdV9iYXNlW01BWF9QSFlTX0NQVVNdICA9IHswLCAwfTsKK3ZvaWQgKnRlZ3JhX2dp
Y19kaXN0X2Jhc2UgPSAwOworCitzdHJ1Y3QgdGVncmFfaXJxX2N0cmwgeworCXVuc2lnbmVk
IGludCBpcnFfc3RhcnQ7CisJdm9pZCAgKnJlZzsKK307CisKK3N0YXRpYyBzdHJ1Y3QgdGVn
cmFfaXJxX2N0cmwgdGVncmFfaXJxX2N0cmxbKElOVF9TWVNfTlIgKyBJTlRfU1lTX1NaIC0g
MSkgLyBJTlRfU1lTX1NaXTsKKworI2RlZmluZSBnaWNfaXJxKGlycSkJKGlycSkKKworc3Rh
dGljIHZvaWQgdGVncmFfbWFzayhzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCit7CisJc3RydWN0
IHRlZ3JhX2lycV9jdHJsICpjaGlwOworCXVuc2lnbmVkIGludCBpcnEgPSBkZXNjX3RvX2ly
cShkZXNjKTsKKwl1bnNpZ25lZCBpbnQgbWFzayA9IDEgPDwgKGlycSAlIDMyKTsKKworCW1t
aW9fd3JpdGVsKG1hc2ssIHRlZ3JhX2dpY19kaXN0X2Jhc2UgKyBfSUNESUNFUiArIChnaWNf
aXJxKGlycSkgLyAzMikgKiA0KTsKKworCWlycSAtPSBJTlRfUFJJX0JBU0U7CisJY2hpcCA9
ICZ0ZWdyYV9pcnFfY3RybFtpcnEgLyBJTlRfU1lTX1NaXTsKKwltbWlvX3dyaXRlbCgxIDw8
IChpcnEgJiAzMSksIGNoaXAtPnJlZyArIElDVExSX0NQVV9JRVJfQ0xSXzApOworfQorCitz
dGF0aWMgdm9pZCB0ZWdyYV91bm1hc2soc3RydWN0IGlycV9kZXNjICpkZXNjKQoreworCXN0
cnVjdCB0ZWdyYV9pcnFfY3RybCAqY2hpcDsKKwl1bnNpZ25lZCBpbnQgaXJxID0gZGVzY190
b19pcnEoZGVzYyk7CisJdW5zaWduZWQgaW50IG1hc2sgPSAxIDw8IChpcnEgJSAzMik7CisK
KwltbWlvX3dyaXRlbChtYXNrLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElTRVIgKyAo
Z2ljX2lycShpcnEpIC8gMzIpICogNCk7CisKKwlpcnEgLT0gSU5UX1BSSV9CQVNFOworCWNo
aXAgPSAmdGVncmFfaXJxX2N0cmxbaXJxIC8gSU5UX1NZU19TWl07CisJbW1pb193cml0ZWwo
MSA8PCAoaXJxICYgMzEpLCBjaGlwLT5yZWcgKyBJQ1RMUl9DUFVfSUVSX1NFVF8wKTsKK30K
Kworc3RhdGljIHZvaWQgdGVncmFfYWNrKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKK3sKKwl1
bnNpZ25lZCBpbnQgaXJxID0gZGVzY190b19pcnEoZGVzYyk7CisJdW5zaWduZWQgaW50IG1h
c2sgPSAxIDw8IChpcnEgJSAzMik7CisJdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNz
b3JfaWQoKTsKKworCXRlZ3JhX21hc2soZGVzYyk7CisKKyAgICAgICAgbW1pb193cml0ZWwo
bWFzaywgdGVncmFfZ2ljX2Rpc3RfYmFzZSArIF9JQ0RJQ0VSICsgKGdpY19pcnEoaXJxKSAv
IDMyKSAqIDQpOworICAgICAgICBtbWlvX3dyaXRlbChnaWNfaXJxKGlycSksIHRlZ3JhX2dp
Y19jcHVfYmFzZVtjcHVdICsgX0lDQ0VPSVIpOworfQorCitzdGF0aWMgdm9pZCB0ZWdyYV9l
bmQoc3RydWN0IGlycV9kZXNjICpkZXNjKQoreworCXRlZ3JhX3VubWFzayhkZXNjKTsKK30K
KworaHdfaXJxX2NvbnRyb2xsZXIgdGVncmFfaXJxX2NvbnRyb2xsZXIgPSB7CisJLnR5cGVu
YW1lID0gImxldmVsIiwKKwkuc3RhcnR1cCAgPSB0ZWdyYV91bm1hc2ssCisJLnNodXRkb3du
ID0gdGVncmFfbWFzaywKKwkuZW5hYmxlCSAgPSB0ZWdyYV91bm1hc2ssCisJLmRpc2FibGUg
ID0gdGVncmFfbWFzaywKKwkuYWNrCSAgPSB0ZWdyYV9hY2ssCisJLmVuZAkgID0gdGVncmFf
ZW5kLAorfTsKKworc3RhdGljIHZvaWQgdGVncmEyNTBfaXJxX2luaXQoKQoreworCXVuc2ln
bmVkIGludCBtYXhfaXJxLCBpOworCXVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29y
X2lkKCk7CisJdW5zaWduZWQgbG9uZyBjcHVtYXNrID0gMSA8PCBjcHU7CisKKwlmb3IgKGkg
PSAwOyBpIDwgQVJSQVlfU0laRSh0ZWdyYV9pcnFfY3RybCk7IGkrKykgeworCQl0ZWdyYV9p
cnFfY3RybFtpXS5pcnFfc3RhcnQgPSBJTlRfUFJJX0JBU0UgKyBJTlRfU1lTX1NaICogaTsK
KwkJdGVncmFfaXJxX2N0cmxbaV0ucmVnID0gSU9fQUREUkVTUyhJTlRfUFBJX0FERFJFU1Mo
aSkpOworCQltbWlvX3dyaXRlbCgweEZGRkZGRkZGLCB0ZWdyYV9pcnFfY3RybFtpXS5yZWcg
KyBJQ1RMUl9DUFVfSUVSX0NMUl8wKTsKKwkJbW1pb193cml0ZWwoMHgwMDAwMDAwMCwgdGVn
cmFfaXJxX2N0cmxbaV0ucmVnICsgSUNUTFJfQ1BVX0lFUF9DTEFTU18wKTsKKwl9CisKKwlm
b3IgKGkgPSBJTlRfUFJJX0JBU0U7IGkgPCBJTlRfR1BJT19CQVNFOyBpKyspIHsKKwkJaXJx
X2Rlc2NbaV0uaGFuZGxlciA9ICZ0ZWdyYV9pcnFfY29udHJvbGxlcjsKKwl9CisKKwljcHVt
YXNrIHw9IGNwdW1hc2sgPDwgODsKKwljcHVtYXNrIHw9IGNwdW1hc2sgPDwgMTY7CisKKwl0
ZWdyYV9naWNfZGlzdF9iYXNlID0gSU9fQUREUkVTUyhURUdSQV9BUk1fSU5UX0RJU1RfQkFT
RSk7CisJdGVncmFfZ2ljX2NwdV9iYXNlW2NwdV0gPSBJT19BRERSRVNTKFRFR1JBX0dJQ19Q
Uk9DX0lGX0JBU0UpOworCisJbW1pb193cml0ZWwoMCwgdGVncmFfZ2ljX2Rpc3RfYmFzZSAr
IF9JQ0REQ1IpOworCQorICAgICAgICAvKgorICAgICAgICAgKiBGaW5kIG91dCBob3cgbWFu
eSBpbnRlcnJ1cHRzIGFyZSBzdXBwb3J0ZWQuCisgICAgICAgICAqLworICAgICAgICBtYXhf
aXJxID0gbW1pb19yZWFkbCh0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDVFIpICYgMHgx
ZjsKKyAgICAgICAgbWF4X2lycSA9IChtYXhfaXJxICsgMSkgKiAzMjsKKworICAgICAgICAv
KgorICAgICAgICAgKiBUaGUgR0lDIG9ubHkgc3VwcG9ydHMgdXAgdG8gMTAyMCBpbnRlcnJ1
cHQgc291cmNlcy4KKyAgICAgICAgICogTGltaXQgdGhpcyB0byBlaXRoZXIgdGhlIGFyY2hp
dGVjdGVkIG1heGltdW0sIG9yIHRoZQorICAgICAgICAgKiBwbGF0Zm9ybSBtYXhpbXVtLgor
ICAgICAgICAgKi8KKyAgICAgICAgaWYgKG1heF9pcnEgPiBtYXgoMTAyMCwgTlJfSVJRUykp
CisgICAgICAgICAgICAgICAgbWF4X2lycSA9IG1heCgxMDIwLCBOUl9JUlFTKTsKKworICAg
ICAgICAvKgorICAgICAgICAgKiBTZXQgYWxsIGdsb2JhbCBpbnRlcnJ1cHRzIHRvIGJlIGxl
dmVsIHRyaWdnZXJlZCwgYWN0aXZlIGxvdy4KKyAgICAgICAgICovCisgICAgICAgIGZvciAo
aSA9IDMyOyBpIDwgbWF4X2lycTsgaSArPSAxNikKKyAgICAgICAgICAgICAgICBtbWlvX3dy
aXRlbCgwLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDRlIgKyBpICogNCAvIDE2KTsK
KworICAgICAgICAvKgorICAgICAgICAgKiBTZXQgYWxsIGdsb2JhbCBpbnRlcnJ1cHRzIHRv
IHRoaXMgQ1BVIG9ubHkuCisgICAgICAgICAqLworICAgICAgICBmb3IgKGkgPSAzMjsgaSA8
IG1heF9pcnE7IGkgKz0gNCkKKyAgICAgICAgICAgICAgICBtbWlvX3dyaXRlbChjcHVtYXNr
LCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElQVFIgKyBpICogNCAvIDQpOworICAgICAg
ICAvKgorICAgICAgICAgKiBTZXQgcHJpb3JpdHkgb24gYWxsIGludGVycnVwdHMuCisgICAg
ICAgICAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X2lycTsgaSArPSA0KQorICAg
ICAgICAgICAgICAgIG1taW9fd3JpdGVsKDB4YTBhMGEwYTAsIHRlZ3JhX2dpY19kaXN0X2Jh
c2UgKyBfSUNESVBSICsgaSAqIDQgLyA0KTsKKworICAgICAgICAvKgorICAgICAgICAgKiBE
aXNhYmxlIGFsbCBpbnRlcnJ1cHRzLgorICAgICAgICAgKi8KKyAgICAgICAgZm9yIChpID0g
MDsgaSA8IG1heF9pcnE7IGkgKz0gMzIpCisgICAgICAgICAgICAgICAgbW1pb193cml0ZWwo
MHhmZmZmZmZmZiwgdGVncmFfZ2ljX2Rpc3RfYmFzZSArIF9JQ0RJQ0VSICsgaSAqIDQgLyAz
Mik7CisKKyAgICAgICAgbW1pb193cml0ZWwoMSwgdGVncmFfZ2ljX2Rpc3RfYmFzZSArIF9J
Q0REQ1IpOworCisgICAgICAgIG1taW9fd3JpdGVsKDB4ZjAsIHRlZ3JhX2dpY19jcHVfYmFz
ZVtjcHVdICsgX0lDQ1BNUik7CisgICAgICAgIG1taW9fd3JpdGVsKDEsIHRlZ3JhX2dpY19j
cHVfYmFzZVtjcHVdICsgX0lDQ0lDUik7CisKKworfQorCisjZGVmaW5lIENMS19SU1RfQ09O
VFJPTExFUl9SU1RfQ1BVX0NNUExYX0NMUl8wICAoMHgzNDQpCisjZGVmaW5lIENMS19SU1Rf
Q09OVFJPTExFUl9DTEtfQ1BVX0NNUExYXzAgICAgICAoMHg0YykKKyNkZWZpbmUgQ1BVX0NM
S19TVE9QKGNwdSkgICAgICAgICAgICAgICAgICAgICAgICgweDE8PCg4K2NwdSkpCisjZGVm
aW5lIENQVV9SRVNFVChjcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMDExdWw8
PChjcHUpKQorCisjZGVmaW5lIEVWUF9DUFVfUkVTRVRfVkVDVE9SXzAgICAgICAgICAgCSgw
eDEwMCkKKyNkZWZpbmUgRkxPV19DVFJMX0hBTFRfQ1BVeF9FVkVOVFMoY3B1KSAJKChjcHUp
ID8gKChjcHUgLSAxKSAqIDB4OCArIDB4MTQpIDogMHgwKQorCisKK3ZvbGF0aWxlIGludCB0
ZWdyYTI1MF9jb3JlX21hcCA9IDE7CisKK2FzbSgKKyIudHlwZSB0ZWdyYTI1MF9zbGF2ZV9j
cHVfc3RhcnQsICNmdW5jdGlvbglcbiIKKyIuZ2xvYmFsIHRlZ3JhMjUwX3NsYXZlX2NwdV9z
dGFydAkJXG4iCisidGVncmEyNTBfc2xhdmVfY3B1X3N0YXJ0OgkJCVxuIgorIgltc3IJY3Bz
cl9jLCAjMHhEMwkJCVxuIgorIgltb3YJcjAsICMwCQkJCVxuIgorIgltY3IJcDE1LCAyLCBy
MCwgYzAsIGMwLCAwCQlcbiIKKyIJbXJjCXAxNSwgMSwgcjAsIGMwLCBjMCwgMAkJXG4iCisi
CWxkcglyMSwgPTB4N0ZGRgkJCVxuIgorIglhbmQJcjIsIHIxLCByMCwgbHNyICMxMwkJXG4i
CisiCWxkcglyMSwgPTB4M0ZGCQkJXG4iCisiCWFuZAlyMywgcjEsIHIwLCBsc3IgIzMJCVxu
IgorIglhZGQJcjIsIHIyLCAjMQkJCVxuIgorIglhbmQJcjAsIHIwLCAjMHgwNwkJCVxuIgor
IglhZGQJcjAsIHIwLCAjNAkJCVxuIgorIgljbHoJcjEsIHIzCQkJCVxuIgorIglhZGQJcjQs
IHIzLCAjMQkJCVxuIgorIjE6CXN1YglyMiwgcjIsICMxCQkJXG4iCisiCW1vdglyMywgcjQJ
CQkJXG4iCisiMjoJc3VicwlyMywgcjMsICMxCQkJXG4iCisiCW1vdglyNSwgcjMsIGxzbCBy
MQkJCVxuIgorIgltb3YJcjYsIHIyLCBsc2wgcjAJCQlcbiIKKyIJb3JyCXI1LCByNSwgcjYJ
CQlcbiIKKyIJbWNyCXAxNSwgMCwgcjUsIGM3LCBjNiwgMgkJXG4iCisiCWJndAkyYgkJCQlc
biIKKyIJY21wCXIyLCAjMAkJCQlcbiIKKyIJYmd0CTFiCQkJCVxuIgorIglkc2IJCQkJCVxu
IgorIglpc2IJCQkJCVxuIgorIgltcmMJcDE1LCAwLCByMCwgYzAsIGMwLCA1CQlcbiIKKyIJ
YW5kCXIwLCByMCwgIzE1CQkJXG4iCisiCWFkcglyNCwgMWYJCQkJXG4iCisiCWxkbWlhCXI0
LCB7cjUsIHI2fQkJCVxuIgorIglzdWIJcjQsIHI0LCByNQkJCVxuIgorIglhZGQJcjYsIHI2
LCByNAkJCVxuIgorIgltb3YJcjEsICMxCQkJCVxuIgorIglsc2wJcjEsIHIxLCByMAkJCVxu
IgorInNwaW46CWxkcglyNywgW3I2XQkJCVxuIgorIgl0c3QJcjcsIHIxCQkJCVxuIgorIgli
ZXEJc3BpbgkJCQlcbiIKKyIJYglzbGF2ZV9jcHVfc3RhcnQJCQlcbiIKKyIxOgkubG9uZwku
CQkJCVxuIgorIgkubG9uZwl0ZWdyYTI1MF9jb3JlX21hcAkJXG4iCispOworCitpbnQgd2Fr
ZXVwX2NwdSh1bnNpZ25lZCBpbnQgY3B1KQoreworCXRlZ3JhMjUwX2NvcmVfbWFwIHw9IDEg
PDwgIGNwdTsKKworCWNwdV9mbHVzaF9jYWNoZV9hbGwoKTsKKworCXJldHVybiAwOworfQor
CitleHRlcm4gdm9pZCB0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQodm9pZCk7CisKK3N0YXRp
YyB2b2lkIHRlZ3JhMjUwX2V2cF9pbml0KHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyByLCBv
cmcsIGxvb3AsIGN0cmw7CisKKwkvKiBJbml0aWFsaXplIFNub29wIENvbnRyb2wgVW5pdCAq
LworCWN0cmwgPSBtbWlvX3JlYWRsKElPX0FERFJFU1MoVEVHUkFfU0NVX0JBU0UpICsgMHgw
KTsKKwljdHJsIHw9IDE7CisJbW1pb193cml0ZWwoY3RybCwgSU9fQUREUkVTUyhURUdSQV9T
Q1VfQkFTRSkgKyAweDApOworCisJb3JnID0gbW1pb19yZWFkbChJT19BRERSRVNTKFRFR1JB
X0VYQ0VQVElPTl9WRUNUT1JTX0JBU0UpICsgRVZQX0NQVV9SRVNFVF9WRUNUT1JfMCk7CisK
KwkvKiBTZXQgYm9vdCBlbnRyeSAqLworCW1taW9fd3JpdGVsKF9fcGEodGVncmEyNTBfc2xh
dmVfY3B1X3N0YXJ0KSwgSU9fQUREUkVTUyhURUdSQV9FWENFUFRJT05fVkVDVE9SU19CQVNF
KSArIEVWUF9DUFVfUkVTRVRfVkVDVE9SXzApOworCisJZHNiKCk7CisJaXNiKCk7CisKKwkv
KiBIYWx0IENQVSAqLworCW1taW9fd3JpdGVsKDAsIElPX0FERFJFU1MoVEVHUkFfRkxPV19D
VFJMX0JBU0UpICsgRkxPV19DVFJMX0hBTFRfQ1BVeF9FVkVOVFMoMSkpOworCisJZHNiKCk7
CisJaXNiKCk7CisKKwkvKiBDUFUgQ2xvY2sgU3RvcCAqLworCXIgPSBtbWlvX3JlYWRsKElP
X0FERFJFU1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpICsgQ0xLX1JTVF9DT05UUk9MTEVSX0NM
S19DUFVfQ01QTFhfMCk7CisJciAmPSB+Q1BVX0NMS19TVE9QKDEpOworCW1taW9fd3JpdGVs
KHIsIElPX0FERFJFU1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpICsgQ0xLX1JTVF9DT05UUk9M
TEVSX0NMS19DUFVfQ01QTFhfMCk7CisKKwlkc2IoKTsKKwlpc2IoKTsKKworCS8qIFJlc3Rh
cnQgU2xhdmUgQ1BVICovCisJbW1pb193cml0ZWwoQ1BVX1JFU0VUKDEpLCBJT19BRERSRVNT
KFRFR1JBX0NMS19SRVNFVF9CQVNFKSArIENMS19SU1RfQ09OVFJPTExFUl9SU1RfQ1BVX0NN
UExYX0NMUl8wKTsKKworCWRzYigpOworCWlzYigpOworCisgICAgICAgIC8qIFdhaXQgdXRp
bCB0aGUgcG93ZXIgdW5pdCBpcyBpbiBzdGFibGUgKi8KKyAgICAgICAgbG9vcCA9IDEwMDAw
OworICAgICAgICB3aGlsZSgoLS1sb29wKSA+IDAgKTsKK30KKwordm9pZCB0ZWdyYTI1MF9p
b3JlbWFwKHZvaWQpCit7CisJbWFwX3BhZ2VzX3RvX3hlbihJT19BRERSRVNTKFRFR1JBX0FS
TV9DUFVfQkFTRSksCisJCVRFR1JBX0FSTV9DUFVfQkFTRSA+PiBQQUdFX1NISUZULCAweDEw
MDAwMCA+PiBQQUdFX1NISUZULAorCQlMMUVfVFlQRV9ERVZJQ0UpOworCisJbWFwX3BhZ2Vz
X3RvX3hlbihJT19BRERSRVNTKFRFR1JBX1BQU0JfREVWSUNFX0JBU0UpLAorCQlURUdSQV9Q
UFNCX0RFVklDRV9CQVNFID4+IFBBR0VfU0hJRlQsIDB4MTAwMDAwID4+IFBBR0VfU0hJRlQs
IAorCQlMMUVfVFlQRV9ERVZJQ0UpOworCisJbWFwX3BhZ2VzX3RvX3hlbihJT19BRERSRVNT
KFRFR1JBX0FQQl9ERVZJQ0VfQkFTRSksCisJCVRFR1JBX0FQQl9ERVZJQ0VfQkFTRSA+PiBQ
QUdFX1NISUZULCAweDEwMDAwMCA+PiBQQUdFX1NISUZULAorCQlMMUVfVFlQRV9ERVZJQ0Up
OworfQorCitpbnQgbWFjaGluZV9zZXR1cCh2b2lkKQoreworCWNwdV90b3BvbG9neV9pbml0
KDIpOworCisJdGVncmEyNTBfaW9yZW1hcCgpOworCisJdGVncmEyNTBfZXZwX2luaXQoKTsK
KworCXRlZ3JhMjUwX2lycV9pbml0KCk7CisKKwl0ZWdyYTI1MF90aW1lcl9pbml0KCk7CisK
KwlyZXR1cm4gMDsKK30KKwpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0vdGVn
cmEvdGltZXIuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAw
MAorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvdGltZXIuYwlTdW4gRmViIDEyIDE1OjA0OjA2
IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLXRl
Z3JhL3RpbWVyLmMKKyAqCisgKiBUaW1lciBhbmQgY2xvY2sgZXZlbnQgc3VwcG9ydCBmb3Ig
TlZJRElBIFRlZ3JhIFNvQ3MKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSwgTlZJ
RElBIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg
b3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL2lycS5oPgorI2lu
Y2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KKyNpbmNsdWRl
IDx4ZW4vc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxhc20vdGltZS5oPgorI2luY2x1ZGUgPGFz
bS9hcmNoL2lycXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC90ZWdyYS5oPgorCisKKyNkZWZp
bmUgQ0xLX1JTVF9DT05UUk9MTEVSX09TQ19DVFJMXzAJMHg1MAorCisjZGVmaW5lIFRJTUVS
MV9PRkZTCQkJMHgwMCAgLyogcmVzZXJ2ZWQgZm9yIEFWUCAqLworI2RlZmluZSBUSU1FUjJf
T0ZGUwkJCTB4MDggIC8qIHJlc2VydmVkIGZvciBBVlAgKi8KKyNkZWZpbmUgVElNRVIzX09G
RlMJCQkweDUwICAvKiB1c2VkIGFzIE9TIENQVSBldmVudCB0aW1lciAqLworI2RlZmluZSBU
SU1FUjRfT0ZGUwkJCTB4NTggIC8qIHJlc2VydmVkIGFzIExQMiB3YWtldXAgdHJpZ2dlciAq
LworCisjZGVmaW5lIFRJTUVSX1RNUl9QVFZfMAkJCTB4MAorI2RlZmluZSBUSU1FUl9UTVJf
UENSXzAJCQkweDQKKworI2RlZmluZSBUSU1FUlVTX09GRlMJCQkweDEwCisjZGVmaW5lIFRJ
TUVSVVNfQ05UUl8xVVNfMAkJMHgwCisjZGVmaW5lIFRJTUVSVVNfVVNFQ19DRkdfMAkJMHg0
CisKKyNkZWZpbmUgTlNFQ19QRVJfU0VDCQkJMTAwMDAwMDAwMEwKKwordm9pZCB0ZWdyYV9j
bG9ja2V2ZW50X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBjcHVf
dXNlcl9yZWdzICpyZWdzKQoreworICAgICAgICBtbWlvX3dyaXRlbCgxIDw8IDMwLCBJT19B
RERSRVNTKFRFR1JBX1RNUjFfQkFTRSArIFRJTUVSM19PRkZTKSArIFRJTUVSX1RNUl9QQ1Jf
MCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIHRlZ3JhX2Nsb2NrZXZlbnRfaXJx
ID0geworICAgICAgICAubmFtZSAgICAgICAgICAgPSAiVGltZXJfZXZlbnQiLAorICAgICAg
ICAuaGFuZGxlciAgICAgICAgPSB0ZWdyYV9jbG9ja2V2ZW50X2ludGVycnVwdCwKK307CisK
K3ZvaWQgdGVncmFfbHAyd2FrZV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBz
dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICAgICAgbW1pb193cml0ZWwoMTw8
MzAsIElPX0FERFJFU1MoVEVHUkFfVE1SMV9CQVNFICsgVElNRVI0X09GRlMpICsgVElNRVJf
VE1SX1BDUl8wKTsKK30KKworc3RhdGljIHN0cnVjdCBpcnFhY3Rpb24gdGVncmFfbHAyd2Fr
ZV9pcnEgPSB7CisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJ0aW1lcl9scDJ3YWtlIiwK
KyAgICAgICAgLmhhbmRsZXIgICAgICAgID0gdGVncmFfbHAyd2FrZV9pbnRlcnJ1cHQsCit9
OworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBtZWFzdXJlX2lucHV0X2ZyZXEodW5zaWduZWQg
aW50ICptLCB1bnNpZ25lZCBpbnQgKm4pCit7CisJdm9pZCAqY2xrX3JzdCA9IElPX0FERFJF
U1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpOworCXVuc2lnbmVkIGxvbmcgb3NjID0gbW1pb19y
ZWFkbChjbGtfcnN0ICsgQ0xLX1JTVF9DT05UUk9MTEVSX09TQ19DVFJMXzApOworCW9zYyA+
Pj0gMzA7CisKKwlzd2l0Y2ggKG9zYykgeworCQljYXNlIDA6IGlmIChtICYmIG4pIHsgKm09
MTsgKm49MTM7IH0gcmV0dXJuIDEzMDAwOworCQljYXNlIDE6IGlmIChtICYmIG4pIHsgKm09
NTsgKm49OTY7IH0gcmV0dXJuIDE5MjAwOworCQljYXNlIDI6IGlmIChtICYmIG4pIHsgKm09
MTsgKm49MTI7IH0gcmV0dXJuIDEyMDAwOworCQljYXNlIDM6IGlmIChtICYmIG4pIHsgKm09
MTsgKm49MjY7IH0gcmV0dXJuIDI2MDAwOworCX0KKworCXJldHVybiAwOworfQorCit2b2lk
IHRlZ3JhMjUwX3RpbWVyX2luaXQodm9pZCkKK3sKKyAgICAgICAgdm9pZCAqdG1yOworICAg
ICAgICB1bnNpZ25lZCBpbnQgbSwgbjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB2YWw7Cisg
ICAgICAgIHUzMiByZWc7CisKKyAgICAgICAgdG1yID0gSU9fQUREUkVTUyhURUdSQV9UTVIx
X0JBU0UgKyBUSU1FUlVTX09GRlMpOworICAgICAgICB2YWwgPSBtZWFzdXJlX2lucHV0X2Zy
ZXEoJm0sICZuKTsKKworICAgICAgICB2YWwgPSAoKG0tMSk8PDgpIHwgKG4tMSk7CisKKyAg
ICAgICAgbW1pb193cml0ZWwodmFsLCB0bXIgKyBUSU1FUlVTX1VTRUNfQ0ZHXzApOworICAg
ICAgICBtbWlvX3dyaXRlbCgwLCBJT19BRERSRVNTKFRFR1JBX1RNUjFfQkFTRSArIFRJTUVS
M19PRkZTKSAgKyBUSU1FUl9UTVJfUFRWXzApOworCisgICAgICAgIHJlZyA9IDB4YzAwMDI3
MGY7CisgICAgICAgIG1taW9fd3JpdGVsKHJlZywgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JB
U0UgKyBUSU1FUjNfT0ZGUykgKyBUSU1FUl9UTVJfUFRWXzApOworCisgICAgICAgIGlmIChz
ZXR1cF9pcnEoSU5UX1RNUjMsICZ0ZWdyYV9jbG9ja2V2ZW50X2lycSkpIHsKKyAgICAgICAg
ICAgICAgICBCVUcoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2V0dXBfaXJxKElOVF9U
TVI0LCAmdGVncmFfbHAyd2FrZV9pcnEpKSB7CisgICAgICAgICAgICAgICAgQlVHKCk7Cisg
ICAgICAgIH0KK30KKwpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0veGVuL2Nw
dS5jCi0tLSBhL3hlbi9hcmNoL2FybS94ZW4vY3B1LmMJU3VuIEZlYiAxMiAxMjoyNDoyMSAy
MDEyICswOTAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vY3B1LmMJU3VuIEZlYiAxMiAxNTow
NDowNiAyMDEyICswOTAwCkBAIC01Myw2ICs1MywxMSBAQCBpbnQgX19jcHVfdXAodW5zaWdu
ZWQgaW50IGNwdSkKIHsKIAlpbnQgcmV0ID0gMDsKIAorCXJldCA9IHdha2V1cF9jcHUoY3B1
KTsKKwlpZiAoIXJldCkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKIAl3aGlsZSghY3B1
X29ubGluZShjcHUpKSB7CiAJCWNwdV9yZWxheCgpOwogCQlwcm9jZXNzX3BlbmRpbmdfc29m
dGlycXMoKTsKZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3hlbi9mYXVsdC5j
Ci0tLSBhL3hlbi9hcmNoL2FybS94ZW4vZmF1bHQuYwlTdW4gRmViIDEyIDEyOjI0OjIxIDIw
MTIgKzA5MDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9mYXVsdC5jCVN1biBGZWIgMTIgMTU6
MDQ6MDYgMjAxMiArMDkwMApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPGFzbS9wcm9j
ZXNzb3IuaD4NCiAjaW5jbHVkZSA8YXNtL2d1ZXN0X2FjY2Vzcy5oPg0KICNpbmNsdWRlIDxh
c20vc3lzdGVtLmg+DQotI2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4NCiANCiBhc21saW5rYWdl
IHZvaWQgX19kaXYwKHZvaWQpDQogew0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gv
YXJtL3hlbi9pcnEuYwotLS0gYS94ZW4vYXJjaC9hcm0veGVuL2lycS5jCVN1biBGZWIgMTIg
MTI6MjQ6MjEgMjAxMiArMDkwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2lycS5jCVN1biBG
ZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMApAQCAtMzgsOSArMzgsMjcgQEAgaHdfaXJxX2Nv
bnRyb2xsZXIgbm9faXJxX3R5cGUgPSB7CiAJLnNodXRkb3duID0gaXJxX3NodXRkb3duX25v
bmUsCiAJLmVuYWJsZSAgID0gaXJxX2VuYWJsZV9ub25lLAogCS5kaXNhYmxlICA9IGlycV9k
aXNhYmxlX25vbmUsCisJLmVuZAkgID0gaXJxX2VuZF9ub25lLAorCS5hY2sJICA9IGlycV9h
Y2tfbm9uZSwKIH07CiAKLXN0cnVjdCBpcnFfZGVzYyAqaXJxX2Rlc2M7CisvL3N0cnVjdCBp
cnFfZGVzYyAqaXJxX2Rlc2M7CisKK2lycV9kZXNjX3QgaXJxX2Rlc2NbTlJfSVJRU10gPSB7
CisgICAgICAgIFswIC4uLiBOUl9JUlFTIC0gMV0gPSB7CisgICAgICAgICAgICAgICAgLnN0
YXR1cyA9IElSUV9ESVNBQkxFRCwKKyAgICAgICAgICAgICAgICAuaGFuZGxlciA9ICZub19p
cnFfdHlwZSwKKyAgICAgICAgICAgICAgICAuYWN0aW9uID0gTlVMTCwKKyAgICAgICAgICAg
ICAgICAubG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRAorICAgICAgICB9Cit9OworCitzdHJ1
Y3QgaXJxX2NmZyBpcnFfY2ZnW05SX0lSUVNdID0geworICAgICAgICBbMCAuLi4gTlJfSVJR
UyAtIDFdID17CisgICAgICAgICAgICAgICAgLmlycSA9IDAKKyAgICAgICAgfQorfTsKKwog
CiBpbnQgcGlycV9ndWVzdF91bm1hc2soc3RydWN0IGRvbWFpbiAqZCkKIHsKQEAgLTc1LDYg
KzkzLDMyIEBAIHN0cnVjdCBwaXJxICphbGxvY19waXJxX3N0cnVjdChzdHJ1Y3QgZG8KIAly
ZXR1cm4gTlVMTDsKIH0KIAoraW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1
Y3QgaXJxYWN0aW9uICpuZXcpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3Qg
aXJxX2Rlc2MgKmRlc2M7CisKKwlpZihpcnEgPj0gTlJfSVJRUykgeworCQlwcmludGsoIkJB
RCBJUlEgPSAlZFxuIiwgaXJxKTsKKwl9CisKKwlkZXNjID0gaXJxX3RvX2Rlc2MoaXJxKTsK
KworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXNjLT5sb2NrLCBmbGFncyk7CisJZGVzYy0+YWN0
aW9uID0gbmV3OworCWlmIChkZXNjLT5oYW5kbGVyKSB7CisJCWlmIChkZXNjLT5oYW5kbGVy
LT5zdGFydHVwKSB7CisJCQlkZXNjLT5oYW5kbGVyLT5zdGFydHVwKGRlc2MpOworCQl9IGVs
c2UgaWYoZGVzYy0+aGFuZGxlci0+ZW5hYmxlKSB7CisJCQlkZXNjLT5oYW5kbGVyLT5lbmFi
bGUoZGVzYyk7CisJCX0KKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXNjLT5s
b2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGFyY2hfaW5pdF9vbmVfaXJx
X2Rlc2Moc3RydWN0IGlycV9kZXNjICpkZXNjKQogewogCU5PVF9ZRVQoKTsKZGlmZiAtciA2
YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3hlbi9tbS5jCi0tLSBhL3hlbi9hcmNoL2FybS94
ZW4vbW0uYwlTdW4gRmViIDEyIDEyOjI0OjIxIDIwMTIgKzA5MDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9tbS5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMApAQCAtMjU1LDMg
KzI1NSwyNyBAQCBpbnQgYWxsb2NfcGFnZV9tYXAodW5zaWduZWQgbG9uZyB2aXJ0LCB1CiAJ
cmV0dXJuIDA7CiB9CiAKK2ludCBtYXBfcGFnZXNfdG9feGVuKHVuc2lnbmVkIGxvbmcgdmly
dCwgdW5zaWduZWQgbG9uZyBtZm4sIGludCBuciwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sK
KyAgICAgICAgdW5zaWduZWQgbG9uZyB2YWRkciA9IHJvdW5kX2Rvd24odmlydCwgUEFHRV9T
SVpFKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtYWRkciA9IG1mbiA8PCBQQUdFX1NISUZU
OworICAgICAgICB1bnNpZ25lZCBpbnQgZW5kID0gdmlydCArIChuciA8PCBQQUdFX1NISUZU
KTsKKworICAgICAgICBsMWVfdCAqbDFlID0gbDFfbGluZWFyX29mZnNldF94ZW4odmFkZHIp
OworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxpbWl0
ID0gKHZhZGRyICsgU0VDVElPTl9TSVpFKSAmIChTRUNUSU9OX01BU0spOworICAgICAgICAg
ICAgICAgIGxpbWl0ID0gKGxpbWl0IDwgZW5kKSA/IGxpbWl0IDogZW5kOworCisgICAgICAg
ICAgICAgICAgaWYgKCgodmFkZHIgfCBtYWRkciB8IGxpbWl0KSAmIH5TRUNUSU9OX01BU0sp
ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpsMWUgPSBNS19MMUUobWFkZHIs
IGZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB0ZV9zeW5jKGwxZSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhZGRyICs9IFNFQ1RJT05fU0laRTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1hZGRyICs9IFNFQ1RJT05fU0laRTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgIH0gd2hpbGUobDFlKyssIHZhZGRyIDwgZW5kKTsKKworICAgICAgICBy
ZXR1cm4gMDsKK30KKwpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0veGVuL3Nl
dHVwLmMKLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9zZXR1cC5jCVN1biBGZWIgMTIgMTI6MjQ6
MjEgMjAxMiArMDkwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL3NldHVwLmMJU3VuIEZlYiAx
MiAxNTowNDowNiAyMDEyICswOTAwCkBAIC02NCwxMSArNjQsMTEgQEAgc3RhdGljIHVuc2ln
bmVkIGludCBkb20wX3NpemUgPSAyNTYgKiAxMAogaW50ZWdlcl9wYXJhbSgiZG9tMF9zaXpl
IiwgZG9tMF9zaXplKTsKIAogLy9zdGF0aWMgdW5zaWduZWQgbG9uZyBkb20wX2ltYWdlX3N0
YXJ0ID0gMHg0MEIwMDAwMFVMOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZG9tMF9pbWFnZV9z
dGFydCA9IDB4MDBCMDAwMDBVTDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRvbTBfaW1hZ2Vf
c3RhcnQgPSAweEEwMDAwMFVMOwogaW50ZWdlcl9wYXJhbSgiaW1hZ2Vfc3RhcnQiLCBkb20w
X2ltYWdlX3N0YXJ0KTsKIAogLy9zdGF0aWMgdW5zaWduZWQgbG9uZyBkb20wX2ltYWdlX3Np
emUgPSAweEEwMDAwMFVMOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZG9tMF9pbWFnZV9zaXpl
ID0gMHhBMDAwMDBVTDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRvbTBfaW1hZ2Vfc2l6ZSA9
IDB4MTQwMDAwMFVMOwogaW50ZWdlcl9wYXJhbSgiaW1hZ2VfbGVuZ3RoIiwgZG9tMF9pbWFn
ZV9zaXplKTsKIAogdm9pZCBhcmNoX2dldF94ZW5fY2Fwcyh4ZW5fY2FwYWJpbGl0aWVzX2lu
Zm9fdCAqaW5mbykKQEAgLTIxMSw2ICsyMTEsOCBAQCBhc21saW5rYWdlIHZvaWQgc3RhcnRf
eGVuKHZvaWQpCiAKIAl0YXNrbGV0X3N1YnN5c19pbml0KCk7CiAKKwltYWNoaW5lX3NldHVw
KCk7CisKIAl0aW1lcl9pbml0KCk7CiAKIAlpZGxlX2RvbWFpbl9pbml0KCk7CmRpZmYgLXIg
NmFmOGE4OWM5OWNkIHhlbi9hcmNoL2FybS94ZW4vdGltZS5jCi0tLSBhL3hlbi9hcmNoL2Fy
bS94ZW4vdGltZS5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMAorKysgYi94ZW4v
YXJjaC9hcm0veGVuL3RpbWUuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAg
LTc5LDUgKzc5LDQgQEAgdm9pZCBkb21haW5fc2V0X3RpbWVfb2Zmc2V0KHN0cnVjdCBkb21h
aQogCiB2b2lkIHRpbWVrZWVwaW5nX2luaXQodm9pZCkKIHsKLQlOT1RfWUVUKCk7CiB9CmRp
ZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jCi0tLSBhL3hl
bi9kcml2ZXJzL2NoYXIvY29uc29sZS5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkw
MAorKysgYi94ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYwlTdW4gRmViIDEyIDE1OjA0OjA2
IDIwMTIgKzA5MDAKQEAgLTQxMiw3ICs0MTIsMTEgQEAgbG9uZyBkb19jb25zb2xlX2lvKGlu
dCBjbWQsIGludCBjb3VudCwgWAogICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICAqLwogCisjaWYgZGVmaW5lZChfX2FybV9fKQor
c3RhdGljIGJvb2xfdCBjb25zb2xlX2xvY2tzX2J1c3RlZCA9IDE7CisjZWxzZQogc3RhdGlj
IGJvb2xfdCBjb25zb2xlX2xvY2tzX2J1c3RlZDsKKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBf
X3B1dHN0cihjb25zdCBjaGFyICpzdHIpCiB7CmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9p
bmNsdWRlL2FzbS1hcm0vZ2ljLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaAlTdW4gRmViIDEy
IDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBnaWMuaAor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAg
ICAgICBKYWVtaW4gUnl1ICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcg
IFVTQQorICovCisKKyNpZm5kZWYgX19BUk1fR0lDX0hfXworI2RlZmluZSBfX0FSTV9HSUNf
SF9fCisKKworLyogRGlzdHJpYnV0b3IgUmVnaXN0ZXIgTWFwICovCisjZGVmaW5lIF9JQ0RE
Q1IJCTB4MDAwICAvKiBEaXN0cmlidXRvciBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5l
IF9JQ0RJQ1RSCTB4MDA0ICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBUeXBlIFJlZ2lzdGVy
ICovCisjZGVmaW5lIF9JQ0RJSURSCTB4MDA4ICAvKiBEaXN0cmlidXRvciBJbXBsZW1lbnRl
ciBJZCBSZWdpc3RlciAqLworI2RlZmluZSBfSUNESVNSMAkweDA4MCAgLyogSW50ZXJydXB0
IFNlY3VyaXR5IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RJU1IxCTB4MDg0ICAvKiBJbnRl
cnJ1cHQgU2VjdXJpdHkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDRElTUjIJMHgwODggIC8q
IEludGVycnVwdCBTZWN1cml0eSBSZWdpc3RlciAqLworI2RlZmluZSBfSUNESVNSMwkweDA4
YyAgLyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RJU1I0
CTB4MDkwICAvKiBJbnRlcnJ1cHQgU2VjdXJpdHkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lD
RElTRVIJMHgxMDAgIC8qIEludGVycnVwdCBTZXQtRW5hYmxlIFJlZ2lzdGVyICovCisjZGVm
aW5lIF9JQ0RJQ0VSCTB4MTgwICAvKiBJbnRlcnJ1cHQgQ2xlYXItRW5hYmxlIFJlZ2lzdGVy
ICovCisjZGVmaW5lIF9JQ0RJU1BSCTB4MjAwICAvKiBJbnRlcnJ1cHQgU2V0LVBlbmRpbmcg
UmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDRElDUFIJMHgyODAgIC8qIEludGVycnVwdCBDbGVh
ci1QZW5kaW5nIFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RBQlIJCTB4MzAwICAvKiBBY3Rp
dmUgQml0IFJlZ2lzdGVycyAqLworI2RlZmluZSBfSUNESVBSCQkweDQwMCAgLyogSW50ZXJy
dXB0IFByaW9yaXR5IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RJUFRSCTB4ODAwICAvKiBJ
bnRlcnJ1cHQgUHJvY2Vzc29yIFRhcmdldHMgUmVnaXN0ZXJzICovCisjZGVmaW5lIF9JQ0RJ
Q0ZSCTB4QzAwICAvKiBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8KKyNk
ZWZpbmUgX0lDRFNHSVIJMHhGMDAgIC8qIFNvZnR3YXJlIEdlbmVyYXRlZCBJbnRlcnJ1cHQg
UmVnaXN0ZXIgKi8KKworI2RlZmluZSBJQ0REQ1IoKQkoX0lDRERDUikKKyNkZWZpbmUgSUNE
SUNUUigpCShfSUNESUNUUikKKyNkZWZpbmUgSUNESVNSKHgpCShfSUNESVNSMCArICh4IC8g
QklUU19QRVJfTE9ORykgKiBCWVRFU19QRVJfTE9ORykKKyNkZWZpbmUgSUNESVNFUih4KQko
X0lDRElTRVIgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xPTkcpCisjZGVm
aW5lIElDRElDRVIoeCkJKF9JQ0RJQ0VSICsgKHggLyBCSVRTX1BFUl9MT05HKSAqIEJZVEVT
X1BFUl9MT05HKQorI2RlZmluZSBJQ0RJU1BSKHgpCShfSUNESVNQUiArICh4IC8gQklUU19Q
RVJfTE9ORykgKiBCWVRFU19QRVJfTE9ORykKKyNkZWZpbmUgSUNESUNQUih4KQkoX0lDRElD
UFIgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xPTkcpCisjZGVmaW5lIElD
REFCUih4KQkoX0lDREFCUiAgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xP
TkcpCisjZGVmaW5lIElDRElQUih4KQkoX0lDRElQUiAgKyAoeCAvICA0KSAqIEJZVEVTX1BF
Ul9MT05HKQorI2RlZmluZSBJQ0RJUFRSKHgpCShfSUNESVBUUiArICh4IC8gIDQpICogQllU
RVNfUEVSX0xPTkcpCisjZGVmaW5lIElDRFNHSVIoKQkoX0lDRFNHSVIpCisKKy8qIENQVSBJ
bnRlcmZhY2UgUmVnaXN0ZXIgTWFwICovCisjZGVmaW5lIF9JQ0NJQ1IJCTB4MDAwICAvKiBD
UFUgSW50ZXJmYWNlIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDQ1BNUgkJMHgw
MDQgIC8qIEludGVycnVwdCBQcmlvcml0eSBNYXNrIFJlZ2lzdGVyICovCisjZGVmaW5lIF9J
Q0NCUFIJCTB4MDA4ICAvKiBCaW5yYXJ5IFBvaW50IFJlZ2lzdGVyICovCisjZGVmaW5lIF9J
Q0NJQVIJCTB4MDBDICAvKiBJbnRlcnJ1cHQgQWNrbm93bGVkZ2UgUmVnaXN0ZXIgKi8KKyNk
ZWZpbmUgX0lDQ0VPSVIJMHgwMTAgIC8qIEVuZCBvZiBJbnRlcnJ1cHQgUmVnaXN0ZXIgKi8K
KyNkZWZpbmUgX0lDQ1JQUgkJMHgwMTQgIC8qIFJ1bm5pbmcgUHJpb3JpdHkgUmVnaXN0ZXIg
Ki8KKyNkZWZpbmUgX0lDQ0hQSVIJMHgwMTggIC8qIEhpZ2hlc3QgUGVuZGluZyBJbnRlcnJ1
cHQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDQ0FCUFIJMHgwMUMgIC8qIEFsaWFzZWQgQmlu
YXJ5IFBvaW50IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0NJSURSCTB4MEZDICAvKiBDUFUg
SW50ZXJmYWNlIElkIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgSUNDSUNSKCkJKF9JQ0NJQ1Ip
CisjZGVmaW5lIElDQ1BNUigpCShfSUNDUE1SKQorI2RlZmluZSBJQ0NCUFIoKQkoX0lDQ0JQ
UikKKyNkZWZpbmUgSUNDSUFSKCkJKF9JQ0NJQVIpCisjZGVmaW5lIElDQ0VPSVIoKQkoX0lD
Q0VPSVIpCisjZGVmaW5lIElDQ1JQUigpCShfSUNDUlBSKQorI2RlZmluZSBJQ0NIUElSKCkJ
KF9JQ0NIUElSKQorI2RlZmluZSBJQ0NJSURSKCkJKF9JQ0NJSURSKQorCisjZGVmaW5lIFNF
Q1VSRV9JTlRFUlJVUFQJMAorI2RlZmluZSBOT05TRUNVUkVfSU5URVJSVVBUCTEKKworI2Rl
ZmluZSBTR0koeCkJCQkoeCkKKyNkZWZpbmUgUFBJKHgpCQkJKHggKyAxNikKKyNkZWZpbmUg
U1BJKHgpCQkJKHggKyAzMikKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2luY2x1ZGUg
PHhlbi90eXBlcy5oPgorCisjZGVmaW5lIEdJQ19ESVNUUklCVVRPUih4KSAgICAgIChfZ2lj
X2Rpc3RyaWJ1dG9yX2Jhc2UgKyB4KQorI2RlZmluZSBHSUNfQ1BVX0lOVEVSRkFDRSh4KSAg
ICAoX2dpY19jcHVfYmFzZSArIHgpCisKK3ZvaWQgZ2ljX3NldF9jcHUodW5zaWduZWQgaW50
IGlycSwgdW5zaWduZWQgaW50IG1hc2spOwordm9pZCBnaWNfc2V0X2lycV9wcmlvcml0eSh1
bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25lZCBpbnQgcHJpb3JpdHkpOwordm9pZCBnaWNfYWNr
X2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKK3ZvaWQgZ2ljX21hc2tfaXJxKHVuc2lnbmVkIGlu
dCBpcnEpOwordm9pZCBnaWNfdW5tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKK3ZvaWQg
Z2ljX2VuZF9pcnEodW5zaWduZWQgaW50IGlycSk7Cit2b2lkIGdpY19jaGFuZ2VfaXJxX3N0
YXRlKHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGludCBzdGF0ZSk7CisKK2V4dGVybiB2
b2lkICpfZ2ljX2NwdV9iYXNlW05SX0NQVVNdOworZXh0ZXJuIHZvaWQgKl9naWNfZGlzdHJp
YnV0b3JfYmFzZTsKKyNlbmRpZgorI2VuZGlmCmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9p
bmNsdWRlL2FzbS1hcm0vaXJxLmgKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaAlT
dW4gRmViIDEyIDEyOjI0OjIxIDIwMTIgKzA5MDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy
bS9pcnEuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAgLTE1LDYgKzE1LDcg
QEAKIAogI2RlZmluZSBpcnFfY2ZnKGlycSkJCSgmaXJxX2NmZ1tpcnFdKQogI2RlZmluZSBp
cnFfdG9fZGVzYyhpcnEpCSgmaXJxX2Rlc2NbaXJxXSkJCisjZGVmaW5lIGRlc2NfdG9faXJx
KGRlc2MpCSgoZGVzYyAtICZpcnFfZGVzY1swXSkgLyBzaXplb2Yoc3RydWN0IGlycV9kZXNj
KSk7CiAKICNkZWZpbmUgSVJRX01BWF9HVUVTVFMJCTcKIHR5cGVkZWYgc3RydWN0IHsKQEAg
LTQwLDggKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIERFQ0xBUkVfQklUTUFQKF9i
aXRzLE5SX0lSUVMpOwogfSB2bWFza190OwogCi1leHRlcm4gc3RydWN0IGlycV9kZXNjICpp
cnFfZGVzYzsKLQogc3RhdGljIGlubGluZSBpbnQgaXJxX2Rlc2NfaW5pdGlhbGl6ZWQoc3Ry
dWN0IGlycV9kZXNjICpkZXNjKQogewogCXJldHVybiAwOwpkaWZmIC1yIDZhZjhhODljOTlj
ZCB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2F2cC5oCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVn
cmEvYXZwLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTQ0
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5WSURJQSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgSU5D
TFVERURfQVZQX0gKKyNkZWZpbmUgSU5DTFVERURfQVZQX0gKKworI2luY2x1ZGUgImFwMTUv
YXJpY3Rsci5oIgorI2luY2x1ZGUgImFwMTUvYXJ0aW1lci5oIgorLy8gRklYTUU6IGdldCB0
aGUgYXJhcm1ldiBoZWFkZXIKKworLy8gMyBjb250cm9sbGVycyBpbiBjb250aWd1b3VzIG1l
bW9yeSBzdGFydGluZyBhdCBJTlRFUlJVUFRfQkFTRSwgZWFjaAorLy8gY29udHJvbGxlcidz
IGFwZXJ0dXJlIGlzIElOVEVSUlVQVF9TSVpFIGxhcmdlCisjZGVmaW5lIElOVEVSUlVQVF9C
QVNFIDB4NjAwMDQwMDAKKyNkZWZpbmUgSU5URVJSVVBUX1NJWkUgMHgxMDAKKyNkZWZpbmUg
SU5URVJSVVBUX05VTV9DT05UUk9MTEVSUyAzCisKKyNkZWZpbmUgSU5URVJSVVBUX1BFTkRJ
TkcoIGN0bHIgKSBcCisgICAgKElOVEVSUlVQVF9CQVNFICsgKChjdGxyKSAqIElOVEVSUlVQ
VF9TSVpFKSArIElDVExSX1ZJUlFfQ09QXzApCisKKyNkZWZpbmUgSU5URVJSVVBUX1NFVCgg
Y3RsciApIFwKKyAgICAoSU5URVJSVVBUX0JBU0UgKyAoKGN0bHIpICogSU5URVJSVVBUX1NJ
WkUpICsgSUNUTFJfQ09QX0lFUl9TRVRfMCkKKworI2RlZmluZSBJTlRFUlJVUFRfQ0xSKCBj
dGxyICkgXAorICAgIChJTlRFUlJVUFRfQkFTRSArICgoY3RscikgKiBJTlRFUlJVUFRfU0la
RSkgKyBJQ1RMUl9DT1BfSUVSX0NMUl8wKQorCisjZGVmaW5lIE9TQ19DVFJMICAgICAgICAo
IDB4NjAwMDYwMDAgKyAweDUwICkKKyNkZWZpbmUgT1NDX0ZSRVFfREVUICAgICggMHg2MDAw
NjAwMCArIDB4NTggKQorI2RlZmluZSBPU0NfREVUX1NUQVRVUyAgKCAweDYwMDA2MDAwICsg
MHg1QyApCisKKyNkZWZpbmUgVElNRVJfVVNFQyAgICAgICggMHg2MDAwNTAxMCApCisjZGVm
aW5lIFRJTUVSX0NGRyAgICAgICAoIDB4NjAwMDUwMTQgKQorI2RlZmluZSBUSU1FUl8wX0JB
U0UgICAgKCAweDYwMDA1MDAwICkKKyNkZWZpbmUgVElNRVJfMCAgICAgICAgICggVElNRVJf
MF9CQVNFICsgVElNRVJfVE1SX1BUVl8wICkKKyNkZWZpbmUgVElNRVJfMF9DTEVBUiAgICgg
VElNRVJfMF9CQVNFICsgVElNRVJfVE1SX1BDUl8wICkKKyNkZWZpbmUgVElNRVJfMV9CQVNF
ICAgICggMHg2MDAwNTAwOCApCisjZGVmaW5lIFRJTUVSXzEgICAgICAgICAoIFRJTUVSXzFf
QkFTRSArIFRJTUVSX1RNUl9QVFZfMCApCisjZGVmaW5lIFRJTUVSXzFfQ0xFQVIgICAoIFRJ
TUVSXzFfQkFTRSArIFRJTUVSX1RNUl9QQ1JfMCApCisKKyNkZWZpbmUgQ0xPQ0tfUlNUX0xP
ICAgICgweDYwMDA2MDA0KQorI2RlZmluZSBDTE9DS19DVExSX0hJICAgKDB4NjAwMDYwMTQp
CisjZGVmaW5lIENMT0NLX0NUTFJfTE8gICAoMHg2MDAwNjAxMCkKKworI2RlZmluZSBDQUNI
RV9DVExSICAgICAgKDB4NjAwMEMwMDApCisjZGVmaW5lIENBQ0hFX0NPTlRST0xfMCAgICAg
ICAgICgweDApCisKKyNkZWZpbmUgUFBJX0lOVFJfSURfVElNRVJfMCAgICAgKDApCisjZGVm
aW5lIFBQSV9JTlRSX0lEX1RJTUVSXzEgICAgICgxKQorI2RlZmluZSBQUElfSU5UUl9JRF9U
SU1FUl8yICAgICAoOSkKKyNkZWZpbmUgUFBJX0lOVFJfSURfVElNRVJfMyAgICAgKDEwKQor
CisvKiBmbG93IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgRkxPV19DT05UUk9MTEVSICAgICAo
MHg2MDAwNzAwNCkKKworLyogZXhjZXB0aW9uIHZlY3RvcnMgKi8KKyNkZWZpbmUgVkVDVE9S
X0JBU0UgICAgICAgICAgICAgKCAweDYwMDBGMjAwICkKKyNkZWZpbmUgVkVDVE9SX1JFU0VU
ICAgICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDAgKQorI2RlZmluZSBWRUNUT1JfVU5ERUYg
ICAgICAgICAgICAoIFZFQ1RPUl9CQVNFICsgNCApCisjZGVmaW5lIFZFQ1RPUl9TV0kgICAg
ICAgICAgICAgICggVkVDVE9SX0JBU0UgKyA4ICkKKyNkZWZpbmUgVkVDVE9SX1BSRUZFVENI
X0FCT1JUICAgKCBWRUNUT1JfQkFTRSArIDEyICkKKyNkZWZpbmUgVkVDVE9SX0RBVEFfQUJP
UlQgICAgICAgKCBWRUNUT1JfQkFTRSArIDE2ICkKKyNkZWZpbmUgVkVDVE9SX0lSUSAgICAg
ICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDI0ICkKKyNkZWZpbmUgVkVDVE9SX0ZJUSAgICAg
ICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDI4ICkKKworI2RlZmluZSBNT0RFX0RJU0FCTEVf
SU5UUiAweGMwCisjZGVmaW5lIE1PREVfVVNSIDB4MTAKKyNkZWZpbmUgTU9ERV9GSVEgMHgx
MQorI2RlZmluZSBNT0RFX0lSUSAweDEyCisjZGVmaW5lIE1PREVfU1ZDIDB4MTMKKyNkZWZp
bmUgTU9ERV9BQlQgMHgxNworI2RlZmluZSBNT0RFX1VORCAweDFCCisjZGVmaW5lIE1PREVf
U1lTIDB4MUYKKworI2RlZmluZSBBUDE1X0NBQ0hFX0xJTkVfU0laRSAgICAgICAgICAgIDMy
CisKKyNkZWZpbmUgQVAxNV9BUEJfTDJfQ0FDSEVfQkFTRSAweDcwMDBlODAwIAorI2RlZmlu
ZSBBUDE1X0FQQl9DTEtfUlNUX0JBU0UgIDB4NjAwMDYwMDAKKyNkZWZpbmUgQVAxNV9BUEJf
TUlTQ19CQVNFICAgICAweDcwMDAwMDAwCisKKyNkZWZpbmUgQVAxMF9BUEJfQ0xLX1JTVF9C
QVNFICAweDYwMDA2MDAwCisjZGVmaW5lIEFQMTBfQVBCX01JU0NfQkFTRSAgICAgMHg3MDAw
MDAwMAorCisjZGVmaW5lIE1NVV9UTEJfQkFTRSAgICAgICAgICAgICAgMHhmMDAwZjAwMAor
I2RlZmluZSBNTVVfVExCX0NBQ0hFX1dJTkRPV18wICAgIDB4NDAKKyNkZWZpbmUgTU1VX1RM
Ql9DQUNIRV9PUFRJT05TXzAgICAweDQ0CisKKyNkZWZpbmUgQVAxNV9QSU5NVVhfQ0ZHX0NU
TF8wICAgMHg3MDAwMDAyNAorI2RlZmluZSBBUDE1X0FWUF9KVEFHX0VOQUJMRSAgICAweEMw
CisKKyNkZWZpbmUgUE1DX1NDUkFUQ0gyMl9SRUdfTFAwICAgMHg3MDAwZTRhOAorCisjZGVm
aW5lIEFWUF9XRFRfUkVTRVQgICAweDJGMDBCQUQwCisKKy8qIENhY2hlZCB0byB1bmNhY2hl
ZCBvZmZzZXQgZm9yIEFWUAorICoKKyAqIEhhcmR3YXJlIGhhcyB1bmNhY2hlZCByZW1hcCBh
cGVydHVyZSBmb3IgQVZQIGFzIEFWUCBkb2Vzbid0IGhhdmUgTU1VCisgKiBidXQgc3RpbGwg
aGFzIGNhY2hlIChuYW1lZCBDT1AgY2FjaGUpLgorICoKKyAqIFRoaXMgYXBlcnR1cmUgbW92
ZWQgYmV0d2VlbiBBUDE1IGFuZCBBUDIwLgorICovCisjZGVmaW5lIEFQMTVfQ0FDSEVEX1RP
X1VOQ0FDSEVEX09GRlNFVCAweDkwMDAwMDAwCisjZGVmaW5lIEFQMjBfQ0FDSEVEX1RPX1VO
Q0FDSEVEX09GRlNFVCAweDgwMDAwMDAwCisKKyNkZWZpbmUgQVBYWF9FWFRfTUVNX1NUQVJU
ICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBBUFhYX0VYVF9NRU1fRU5EICAgICAgICAweDQw
MDAwMDAwCisKKyNkZWZpbmUgQVBYWF9NTUlPX1NUQVJUICAgICAgICAgMHg0MDAwMDAwMAor
I2RlZmluZSBBUFhYX01NSU9fRU5EICAgICAgICAgICAweEZGRjAwMDAwCisKKyNkZWZpbmUg
VFhYX0VYVF9NRU1fU1RBUlQgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBUWFhfRVhUX01F
TV9FTkQgICAgICAgICAweGMwMDAwMDAwCisKKyNkZWZpbmUgVFhYX01NSU9fU1RBUlQgICAg
ICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBUWFhfTU1JT19FTkQgICAgICAgICAgICAweDgw
MDAwMDAwCisKKyNlbmRpZgpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20t
YXJtL3RlZ3JhL2NvbmZpZy5oCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvY29u
ZmlnLmgJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwCisrKyBiL3hlbi9pbmNsdWRl
L2FzbS1hcm0vdGVncmEvY29uZmlnLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAw
CkBAIC0xLDExICsxLDYgQEAKICNpZm5kZWYgX19URUdSQV9DT05GSUdfSF9fCiAjZGVmaW5l
IF9fVEVHUkFfQ09ORklHX0hfXwogCi0jZGVmaW5lIEhaCTEwMAotI2RlZmluZSBDTE9DS19U
SUNLX1JBVEUJCTEwMDAwMDAKKyNkZWZpbmUgTUFYX1BIWVNfQ1BVUwkyCiAKLSNkZWZpbmUg
TUFYX1BIWVNfQ1BVUwkJMgotCi0jZGVmaW5lIEJVSUxUSU5fQ09NTUFORF9MSU5FX1NJWkUg
MjU2Ci0jZGVmaW5lIEJVSUxUSU5fQ09NTUFORF9MSU5FCSIiCiAjZW5kaWYKZGlmZiAtciA2
YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS9pcnFzLmgKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUv
YXNtLWFybS90ZWdyYS9pcnFzLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLXRlZ3JhL2luY2x1ZGUvbWFj
aC9pcnFzLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIE5WSURJQSBDb3Jwb3JhdGlv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv
bmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBf
X1RFR1JBX0lSUVNfSAorI2RlZmluZSBfX1RFR1JBX0lSUVNfSAorCisjZGVmaW5lIE5SX0lS
UVMJCQk1MTIKKworI2RlZmluZSBJTlRfUFJJX0JBU0UJCTMyCisjZGVmaW5lIElOVF9SVEMJ
CQkoSU5UX1BSSV9CQVNFICsgMikKKyNkZWZpbmUgSU5UX1VTQgkJCShJTlRfUFJJX0JBU0Ug
KyAyMCkKKyNkZWZpbmUgSU5UX1VTQjIJCShJTlRfUFJJX0JBU0UgKyAyMSkKKyNkZWZpbmUg
SU5UX0FQQl9ETUEJCShJTlRfUFJJX0JBU0UgKyAyNikKKworI2RlZmluZSBJTlRfU0VDX0JB
U0UJCShJTlRfUFJJX0JBU0UgKyAzMikKKyNkZWZpbmUgSU5UX0dQSU8xCQkoSU5UX1NFQ19C
QVNFICsgMCkKKyNkZWZpbmUgSU5UX0dQSU8yCQkoSU5UX1NFQ19CQVNFICsgMSkKKyNkZWZp
bmUgSU5UX0dQSU8zCQkoSU5UX1NFQ19CQVNFICsgMikKKyNkZWZpbmUgSU5UX0dQSU80CQko
SU5UX1NFQ19CQVNFICsgMykKKyNkZWZpbmUgSU5UX1RNUjMJCShJTlRfU0VDX0JBU0UgKyA5
KQorI2RlZmluZSBJTlRfVE1SNAkJKElOVF9TRUNfQkFTRSArIDEwKQorI2RlZmluZSBJTlRf
U1lTX1NUQVRTX01PTgkoSU5UX1NFQ19CQVNFICsgMjIpCisjZGVmaW5lIElOVF9HUElPNQkJ
KElOVF9TRUNfQkFTRSArIDIzKQorCisjZGVmaW5lIElOVF9UUklfQkFTRQkJKElOVF9TRUNf
QkFTRSArIDMyKQorI2RlZmluZSBJTlRfS0JDCQkJKElOVF9UUklfQkFTRSArIDIxKQorI2Rl
ZmluZSBJTlRfRVhURVJOQUxfUE1VCShJTlRfVFJJX0JBU0UgKyAyMikKKyNkZWZpbmUgSU5U
X0dQSU82CQkoSU5UX1RSSV9CQVNFICsgMjMpCisjZGVmaW5lIElOVF9HUElPNwkJKElOVF9U
UklfQkFTRSArIDI1KQorCisjZGVmaW5lIElOVF9RVUFEX0JBU0UJCShJTlRfVFJJX0JBU0Ug
KyAzMikKKyNkZWZpbmUgSU5UX1VTQjMJCShJTlRfUVVBRF9CQVNFICsgMSkKKworI2RlZmlu
ZSBJTlRfR1BJT19CQVNFCQkoSU5UX1FVQURfQkFTRSArIDMyKQorI2RlZmluZSBJTlRfR1BJ
T19OUgkJKDI4KjgpCisKKyNkZWZpbmUgSU5UX0FQQkRNQV9CQVNFCSAJKElOVF9HUElPX0JB
U0UgKyBJTlRfR1BJT19OUikKKyNkZWZpbmUgSU5UX0FQQkRNQV9OUgkJKDE2KQorCisjZGVm
aW5lIElOVF9TWVNfTlIJKElOVF9HUElPX0JBU0UgLSBJTlRfUFJJX0JBU0UpCisjZGVmaW5l
IElOVF9TWVNfU1oJKElOVF9TRUNfQkFTRSAtIElOVF9QUklfQkFTRSkKKworI2VuZGlmCmRp
ZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvc21wLmgKLS0t
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLWFybS90ZWdyYS9zbXAuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDAKQEAgLTAsMCArMSw3IEBACisjaWZuZGVmIEFTTUFSTV9BUkNIX1NNUF9ICisjZGVmaW5l
IEFTTUFSTV9BUkNIX1NNUF9ICisKKworI2luY2x1ZGUgPGFzbS9naWMuaD4KKworI2VuZGlm
CmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvdGVncmEu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL3RlZ3JhLmgJU3VuIEZlYiAxMiAxNTowNDowNiAy
MDEyICswOTAwCkBAIC0wLDAgKzEsNzUgQEAKKyNpZm5kZWYgX19URUdSQTI1MF9IX18KKyNk
ZWZpbmUgX19URUdSQTI1MF9IX18KKworI2RlZmluZSBURUdSQV9BUk1fQ1BVX0JBU0UJCTB4
NTAwMDAwMDAKKyNkZWZpbmUgVEVHUkFfUFBTQl9ERVZJQ0VfQkFTRQkJMHg2MDAwMDAwMAor
I2RlZmluZSBURUdSQV9BUEJfREVWSUNFX0JBU0UJCTB4NzAwMDAwMDAKKworI2RlZmluZSBU
RUdSQV9BUk1fUEVSSUZfQkFTRQkJMHg1MDA0MDAwMAorI2RlZmluZSBURUdSQV9BUk1fUEVS
SUZfU0laRQkJU1pfOEsKKworI2RlZmluZSBURUdSQV9TQ1VfQkFTRQkJCTB4NTAwNDAwMDAK
KyNkZWZpbmUgVEVHUkFfU0NVX1NJWkUJCQlTWl8yNTYKKworI2RlZmluZSBURUdSQV9HSUNf
UFJPQ19JRl9CQVNFCQkweDUwMDQwMTAwCisjZGVmaW5lIFRFR1JBX0dJQ19QUk9DX0lGX1NJ
WkUJCVNaXzI1NgorCisjZGVmaW5lIFRFR1JBX0FSTV9JTlRfRElTVF9CQVNFCQkweDUwMDQx
MDAwCisjZGVmaW5lIFRFR1JBX0FSTV9JTlRfRElTVF9TSVpFCQlTWl80SworCisjZGVmaW5l
IFRFR1JBX1BSSU1BUllfSUNUTFJfQkFTRQkweDYwMDA0MDAwCisjZGVmaW5lIFRFR1JBX1BS
SU1BUllfSUNUTFJfU0laRQlTWl82NAorCisjZGVmaW5lIFRFR1JBX1NFQ09OREFSWV9JQ1RM
Ul9CQVNFCTB4NjAwMDQxMDAKKyNkZWZpbmUgVEVHUkFfU0VDT05EQVJZX0lDVExSX1NJWkUJ
U1pfNjQKKworI2RlZmluZSBURUdSQV9URVJUSUFSWV9JQ1RMUl9CQVNFCTB4NjAwMDQyMDAK
KyNkZWZpbmUgVEVHUkFfVEVSVElBUllfSUNUTFJfU0laRQlTWl82NAorCisjZGVmaW5lIFRF
R1JBX1FVQVRFUk5BUllfSUNUTFJfQkFTRQkweDYwMDA0MzAwCisjZGVmaW5lIFRFR1JBX1FV
QVRFUk5BUllfSUNUTFJfU0laRQlTWl82NAorCisjZGVmaW5lIFRFR1JBX1RNUjFfQkFTRQkJ
CTB4NjAwMDUwMDAKKyNkZWZpbmUgVEVHUkFfVE1SMV9TSVpFCQkJU1pfOAorCisjZGVmaW5l
IFRFR1JBX1RNUjJfQkFTRQkJCTB4NjAwMDUwMDgKKyNkZWZpbmUgVEVHUkFfVE1SMl9TSVpF
CQkJU1pfOAorCisjZGVmaW5lIFRFR1JBX1RNUlVTX0JBU0UJCTB4NjAwMDUwMTAKKyNkZWZp
bmUgVEVHUkFfVE1SVVNfU0laRQkJU1pfNjQKKworI2RlZmluZSBURUdSQV9UTVIzX0JBU0UJ
CQkweDYwMDA1MDUwCisjZGVmaW5lIFRFR1JBX1RNUjNfU0laRQkJCVNaXzgKKworI2RlZmlu
ZSBURUdSQV9UTVI0X0JBU0UJCQkweDYwMDA1MDU4CisjZGVmaW5lIFRFR1JBX1RNUjRfU0la
RQkJCVNaXzgKKworI2RlZmluZSBURUdSQV9DTEtfUkVTRVRfQkFTRQkJMHg2MDAwNjAwMAor
I2RlZmluZSBURUdSQV9DTEtfUkVTRVRfU0laRQkJU1pfNEsKKworI2RlZmluZSBURUdSQV9G
TE9XX0NUUkxfQkFTRQkJMHg2MDAwNzAwMAorI2RlZmluZSBURUdSQV9GTE9XX0NUUkxfU0la
RQkJMjAKKworI2RlZmluZSBURUdSQV9HUElPX0JBU0UJCQkweDYwMDBEMDAwCisjZGVmaW5l
IFRFR1JBX0dQSU9fU0laRQkJCVNaXzRLCisKKyNkZWZpbmUgVEVHUkFfRVhDRVBUSU9OX1ZF
Q1RPUlNfQkFTRSAgICAweDYwMDBGMDAwCisjZGVmaW5lIFRFR1JBX0VYQ0VQVElPTl9WRUNU
T1JTX1NJWkUgICAgU1pfNEsKKworI2RlZmluZSBJQ1RMUl9DUFVfSUVSXzAJCQkoMHgyMCkK
KyNkZWZpbmUgSUNUTFJfQ1BVX0lFUl9TRVRfMAkJKDB4MjQpCisjZGVmaW5lIElDVExSX0NQ
VV9JRVJfQ0xSXzAJCSgweDI4KQorI2RlZmluZSBJQ1RMUl9DUFVfSUVQX0NMQVNTXzAJCSgw
eDJDKQorI2RlZmluZSBJQ1RMUl9DT1BfSUVSXzAJCQkoMHgzMCkKKyNkZWZpbmUgSUNUTFJf
Q09QX0lFUl9TRVRfMAkJKDB4MzQpCisjZGVmaW5lIElDVExSX0NPUF9JRVJfQ0xSXzAJCSgw
eDM4KQorI2RlZmluZSBJQ1RMUl9DT1BfSUVQX0NMQVNTXzAJCSgweDNDKQorCisjZGVmaW5l
IEFSTV9QRVJJRl9CQVNFCQkJKDB4NTAwNDAwMDApCisKKy8vI2RlZmluZSBJT19BRERSRVNT
KHgpCQkJKCgoKCh4KSAmIDB4NzAwMDAwMDApID4+IDgpICsgKCgoeCkgJiAweDBGMDAwMDAw
KSA+PiA0KSkgfCgoeCkgJiAweEZGRkZGKSB8IDB4RkIwMDAwMDAgKQorI2RlZmluZSBJT19B
RERSRVNTKHgpCQkJKCgoKHgpICYgMHhGMDAwMDAwMCkgPj4gOCkgfCAoKHgpICYgMHhGRkZG
RikgfCAoMHhGQjAwMDAwMCApKQorI2RlZmluZSBJTlRfUFBJX0FERFJFU1MoX2luc3QpCQko
MHg2MDAwNDAwMCArICgweDEwMCAqIChfaW5zdCkpKQorI2RlZmluZSBJTlRfQVBCRE1BX0FE
RFJFU1MJCSgweDYwMDBhMDAwKQorCisjZW5kaWYKZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVu
L2luY2x1ZGUveGVuL2lycS5oCi0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pcnEuaAlTdW4gRmVi
IDEyIDEyOjI0OjIxIDIwMTIgKzA5MDAKKysrIGIveGVuL2luY2x1ZGUveGVuL2lycS5oCVN1
biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMApAQCAtOTUsNiArOTUsMTAgQEAgaW50IGFy
Y2hfaW5pdF9vbmVfaXJxX2Rlc2Moc3RydWN0IGlycV9kZQogCiAjZGVmaW5lIGlycV9kZXNj
X2luaXRpYWxpemVkKGRlc2MpICgoZGVzYyktPmhhbmRsZXIgIT0gTlVMTCkKIAorI2lmIGRl
ZmluZWQoX19hcm1fXykKK2V4dGVybiBpcnFfZGVzY190IGlycV9kZXNjW05SX0lSUVNdOwor
I2VuZGlmCisKICNpZiBkZWZpbmVkKF9faWE2NF9fKQogZXh0ZXJuIGlycV9kZXNjX3QgaXJx
X2Rlc2NbTlJfVkVDVE9SU107CiAKQEAgLTEyMSw2ICsxMjUsOCBAQCBleHRlcm4gdm9pZCBp
cnFfYWN0b3Jfbm9uZShzdHJ1Y3QgaXJxX2RlCiAjZGVmaW5lIGlycV9zaHV0ZG93bl9ub25l
IGlycV9hY3Rvcl9ub25lCiAjZGVmaW5lIGlycV9kaXNhYmxlX25vbmUgaXJxX2FjdG9yX25v
bmUKICNkZWZpbmUgaXJxX2VuYWJsZV9ub25lIGlycV9hY3Rvcl9ub25lCisjZGVmaW5lIGly
cV9hY2tfbm9uZQlpcnFfYWN0b3Jfbm9uZQorI2RlZmluZSBpcnFfZW5kX25vbmUJaXJxX2Fj
dG9yX25vbmUKIAogc3RydWN0IGRvbWFpbjsKIHN0cnVjdCB2Y3B1Owo=


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-arm mailing list
Xen-arm@lists.xensource.com
http://lists.xensource.com/mailman/listinfo/xen-arm

------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY--



From xen-devel-bounces@lists.xensource.com Mon Feb 13 10:20:30 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Feb 2012 10:20:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1Rwt18-0005zU-Fm; Mon, 13 Feb 2012 10:20:18 +0000
Received: from mail21.messagelabs.com ([85.158.143.35])
	by lists.xen.org with smtp (Exim 4.72)
	(envelope-from <jm77.ryu@samsung.com>) id 1RwqtB-0003yZ-4H
	for xen-devel@lists.xensource.com; Mon, 13 Feb 2012 08:03:57 +0000
X-Env-Sender: jm77.ryu@samsung.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1329120227!8950105!2
X-Originating-IP: [203.254.224.33]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMjAzLjI1NC4yMjQuMzMgPT4gMjQzNjYx\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 7236 invoked from network); 13 Feb 2012 08:03:49 -0000
Received: from mailout3.samsung.com (HELO mailout3.samsung.com)
	(203.254.224.33) by server-10.tower-21.messagelabs.com with SMTP;
	13 Feb 2012 08:03:49 -0000
Received: from epcpsbge8.samsung.com (mailout3.samsung.com [203.254.224.33])
	by mailout3.samsung.com
	(Oracle Communications Messaging Exchange Server 7u4-19.01 64bit (built
	Sep 7
	2010)) with ESMTP id <0LZB00IVBNPYJYB0@mailout3.samsung.com> for
	xen-devel@lists.xensource.com; Mon, 13 Feb 2012 17:03:46 +0900 (KST)
Message-id: <0LZB00IVONQAJYB0@mailout3.samsung.com>
X-AuditID: cbfee612-b7c09ae0000024ca-52-4f38c3e22cba
Received: from epextmailer02 ( [203.254.219.152])
	by epcpsbge8.samsung.com (EPCPMTA) with SMTP id 9F.C3.09418.2E3C83F4;
	Mon, 13 Feb 2012 17:03:46 +0900 (KST)
Date: Mon, 13 Feb 2012 08:03:46 +0000 (GMT)
From: Jae-Min Ryu <jm77.ryu@samsung.com>
To: =?euc-kr?Q?=B7=F9=C0=E7=B9=CE?= <jm77.ryu@samsung.com>,
	Lars Kurth <lars.kurth@citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>, 
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	"Keir (Xen.org)" <keir@xen.org>, Ian Jackson <Ian.Jackson@eu.citrix.com>,
	"xen-arm@lists.xensource.com" <xen-arm@lists.xensource.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
MIME-version: 1.0
X-MTR: 20120213080232243@jm77.ryu
Msgkey: 20120213080232243@jm77.ryu
X-EPLocale: ko_KR.euc-kr
X-Priority: 3
X-EPWebmail-Msg-Type: personal
X-EPWebmail-Reply-Demand: 0
X-EPApproval-Locale: 
X-EPHeader: ML
X-EPTrCode: 
X-EPTrName: 
X-MLAttribute: 
X-RootMTR: 20120213074805604@jm77.ryu
X-ParentMTR: 20120213080134863@jm77.ryu
Content-type: multipart/mixed;
	boundary="----=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY"
X-Brightmail-Tracker: AAAAAA==
X-Mailman-Approved-At: Mon, 13 Feb 2012 10:20:11 +0000
Cc: =?euc-kr?Q?=BC=AD=BB=F3=B9=FC?= <sbuk.suh@samsung.com>
Subject: [Xen-devel] [PATCH 11/14] arm: add files that are required to
 support the Tegra2 harmony board.
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: jm77.ryu@samsung.com
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="euc-kr"
MIME-Version: 1.0
Message-ID: <7423992.70311329120222915.JavaMail.weblogic@epv6ml04>

YXJtOiBhZGQgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgVGVncmEyIGhh
cm1vbnkgYm9hcmQuDQoNCiB4ZW4vYXJjaC9hcm0vdGVncmEvTWFrZWZpbGUgICAgICAgIHwgICAg
MyArLQ0KIHhlbi9hcmNoL2FybS90ZWdyYS9lbnRyeS5TICAgICAgICAgfCAgIDMzICsrKysrKysr
DQogeGVuL2FyY2gvYXJtL3RlZ3JhL3RlZ3JhMjUwLmMgICAgICB8ICAzMzAgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0vdGVncmEvdGltZXIuYyAgICAgICAgIHwgIDEx
MCArKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0veGVuL2NwdS5jICAg
ICAgICAgICAgIHwgICAgNSArDQogeGVuL2FyY2gvYXJtL3hlbi9mYXVsdC5jICAgICAgICAgICB8
ICAgIDEgLQ0KIHhlbi9hcmNoL2FybS94ZW4vaXJxLmMgICAgICAgICAgICAgfCAgIDQ2ICsrKysr
KysrKysrLQ0KIHhlbi9hcmNoL2FybS94ZW4vbW0uYyAgICAgICAgICAgICAgfCAgIDI0ICsrKysr
Kw0KIHhlbi9hcmNoL2FybS94ZW4vc2V0dXAuYyAgICAgICAgICAgfCAgICA2ICstDQogeGVuL2Fy
Y2gvYXJtL3hlbi90aW1lLmMgICAgICAgICAgICB8ICAgIDEgLQ0KIHhlbi9kcml2ZXJzL2NoYXIv
Y29uc29sZS5jICAgICAgICAgfCAgICA0ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oICAg
ICAgICAgIHwgIDEwMSArKysrKysrKysrKysrKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUvYXNt
LWFybS9pcnEuaCAgICAgICAgICB8ICAgIDMgKy0NCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3Jh
L2F2cC5oICAgIHwgIDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB4
ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2NvbmZpZy5oIHwgICAgNyArLQ0KIHhlbi9pbmNsdWRl
L2FzbS1hcm0vdGVncmEvaXJxcy5oICAgfCAgIDYwICsrKysrKysrKysrKysrKw0KIHhlbi9pbmNs
dWRlL2FzbS1hcm0vdGVncmEvc21wLmggICAgfCAgICA3ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJt
L3RlZ3JhL3RlZ3JhLmggIHwgICA3NSArKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS94
ZW4vaXJxLmggICAgICAgICAgICAgIHwgICAgNiArDQogMTkgZmlsZXMgY2hhbmdlZCwgOTUyIGlu
c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KDQpTaWduZWQtb2ZmLWJ5OiBKYWVtaW4gUnl1
IDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4NCg0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gv
YXJtL3RlZ3JhL01ha2VmaWxlDQotLS0gYS94ZW4vYXJjaC9hcm0vdGVncmEvTWFrZWZpbGUJU3Vu
IEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvTWFr
ZWZpbGUJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtMSwxICsxLDIgQEANCi1v
YmoteSArPSBkdW1teS5vDQorb2JqLXkgKz0gdGltZXIubyBlbnRyeS5vIHRlZ3JhMjUwLm8NCisN
CmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9hcmNoL2FybS90ZWdyYS9lbnRyeS5TDQotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMA0KKysrIGIveGVuL2FyY2gvYXJt
L3RlZ3JhL2VudHJ5LlMJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtMCwwICsx
LDMzIEBADQorLyoNCisgKiBlbnRyeS5TDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggU2Ft
c3VuZyBFbGVjdHJvbmljcw0KKyAqICAgICAgICAgIEphZU1pbiBSeXUgIDxqbTc3LnJ5dUBzYW1z
dW5nLmNvbT4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5DQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0K
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcg
IFVTQQ0KKyAqLw0KKw0KKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+IA0KKyNpbmxjdWRlIDxhc20v
YXJjaC9pcnFzLmg+DQorI2luY2x1ZGUgPGFzbS9wYWdlLmg+DQorI2luY2x1ZGUgPGFzbS9zeXN0
ZW0uaD4NCisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4NCisjaW5jbHVkZSA8YXNtL2NwdS1k
b21haW4uaD4NCisjaW5jbHVkZSA8YXNtL2FzbS1vZmZzZXRzLmg+DQorDQorCS5hbGlnbgk1DQor
DQorRU5UUlkoYXJjaF9jb250ZXh0X3N3aXRjaCkNCisJbW92CXBjLCBscg0KKw0KZGlmZiAtciA2
YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3RlZ3JhL3RlZ3JhMjUwLmMNCi0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwDQorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEv
dGVncmEyNTAuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC0wLDAgKzEsMzMw
IEBADQorLyoNCisgKiB0ZWdyYTI1MC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzIA0KKyAqICAgICAgICAgSmFlTWluIFJ5dSAgPGptNzcucnl1
QHNhbXN1bmcuY29tPg0KKyAqDQorICogU2VjdXJlIFhlbiBvbiBBUk0gYXJjaGl0ZWN0dXJlIGRl
c2lnbmVkIGJ5IFNhbmctYnVtIFN1aCBjb25zaXN0cyBvZiANCisgKiBYZW4gb24gQVJNIGFuZCB0
aGUgYXNzb2NpYXRlZCBhY2Nlc3MgY29udHJvbC4NCisgKiANCisgKiBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAq
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBv
ZiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24uDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC
b3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0ENCisgKi8NCisNCisjaW5jbHVkZSA8eGVuL2NvbmZp
Zy5oPg0KKyNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4NCisjaW5jbHVkZSA8eGVuL2xpYi5oPg0K
KyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+DQorI2luY2x1ZGUgPHhlbi9lcnJuby5oPg0KKyNpbmNs
dWRlIDx4ZW4vc21wLmg+DQorI2luY2x1ZGUgPHhlbi9pcnEuaD4NCisjaW5jbHVkZSA8eGVuL21t
Lmg+DQorI2luY2x1ZGUgPGFzbS9tbXUuaD4NCisjaW5jbHVkZSA8YXNtL3BsYXRmb3JtLmg+DQor
I2luY2x1ZGUgPGFzbS9naWMuaD4NCisjaW5jbHVkZSA8YXNtL3JlZ3MuaD4NCisjaW5jbHVkZSA8
YXNtL2lvLmg+DQorI2luY2x1ZGUgPGFzbS9mbHVzaHRsYi5oPg0KKyNpbmNsdWRlIDxhc20vYXJj
aC90ZWdyYS5oPg0KKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+DQorDQorI2RlZmluZSBURUdS
QTI1MF9NRU1PUllfQkFTRSAgICAgMHgwMDAwMDAwMFVMDQorI2RlZmluZSBURUdSQTI1MF9NRU1P
UllfU0laRSAgICAgMHg0MDAwMDAwMFVMDQorDQorI2RlZmluZSBURUdSQTI1MF9ERVZfQkFTRSAg
ICAgICAgMHg1MDAwMDAwMFVMDQorI2RlZmluZSBURUdSQTI1MF9ERVZfU0laRSAgICAgICAgMHgw
MDMwMDAwMFVMDQorDQorREVDTEFSRV9NRU1PUllfTUFQKHRlZ3JhMjUwKSA9IHsNCisgICAgICAg
IE1FTU1BUF9FTlRSWShURUdSQTI1MF9NRU1PUllfQkFTRSwgVEVHUkEyNTBfTUVNT1JZX1NJWkUs
IE1FTU9SWV9UWVBFX1JBTSwgTDFFX1RZUEVfSFlQRVJWSVNPUiksDQorICAgICAgICBNRU1NQVBf
RU5UUlkoVEVHUkEyNTBfREVWX0JBU0UsICAgIFRFR1JBMjUwX0RFVl9TSVpFLCAgICBNRU1PUllf
VFlQRV9ERVYsIEwxRV9UWVBFX0RFVklDRSkNCit9Ow0KKw0KKy8vIFJlZ2lzdGVyIEFQQkRNQV9J
UlFfTUFTS19DTFJfMA0KKyNkZWZpbmUgQVBCRE1BX0lSUV9TVEFfQ1BVXzAJKDB4MTQpDQorI2Rl
ZmluZSBBUEJETUFfSVJRX01BU0tfU0VUXzAJKDB4MjApDQorI2RlZmluZSBBUEJETUFfSVJRX01B
U0tfQ0xSXzAJKDB4MjQpDQorDQordm9pZCAqdGVncmFfZ2ljX2NwdV9iYXNlW01BWF9QSFlTX0NQ
VVNdICA9IHswLCAwfTsNCit2b2lkICp0ZWdyYV9naWNfZGlzdF9iYXNlID0gMDsNCisNCitzdHJ1
Y3QgdGVncmFfaXJxX2N0cmwgew0KKwl1bnNpZ25lZCBpbnQgaXJxX3N0YXJ0Ow0KKwl2b2lkICAq
cmVnOw0KK307DQorDQorc3RhdGljIHN0cnVjdCB0ZWdyYV9pcnFfY3RybCB0ZWdyYV9pcnFfY3Ry
bFsoSU5UX1NZU19OUiArIElOVF9TWVNfU1ogLSAxKSAvIElOVF9TWVNfU1pdOw0KKw0KKyNkZWZp
bmUgZ2ljX2lycShpcnEpCShpcnEpDQorDQorc3RhdGljIHZvaWQgdGVncmFfbWFzayhzdHJ1Y3Qg
aXJxX2Rlc2MgKmRlc2MpDQorew0KKwlzdHJ1Y3QgdGVncmFfaXJxX2N0cmwgKmNoaXA7DQorCXVu
c2lnbmVkIGludCBpcnEgPSBkZXNjX3RvX2lycShkZXNjKTsNCisJdW5zaWduZWQgaW50IG1hc2sg
PSAxIDw8IChpcnEgJSAzMik7DQorDQorCW1taW9fd3JpdGVsKG1hc2ssIHRlZ3JhX2dpY19kaXN0
X2Jhc2UgKyBfSUNESUNFUiArIChnaWNfaXJxKGlycSkgLyAzMikgKiA0KTsNCisNCisJaXJxIC09
IElOVF9QUklfQkFTRTsNCisJY2hpcCA9ICZ0ZWdyYV9pcnFfY3RybFtpcnEgLyBJTlRfU1lTX1Na
XTsNCisJbW1pb193cml0ZWwoMSA8PCAoaXJxICYgMzEpLCBjaGlwLT5yZWcgKyBJQ1RMUl9DUFVf
SUVSX0NMUl8wKTsNCit9DQorDQorc3RhdGljIHZvaWQgdGVncmFfdW5tYXNrKHN0cnVjdCBpcnFf
ZGVzYyAqZGVzYykNCit7DQorCXN0cnVjdCB0ZWdyYV9pcnFfY3RybCAqY2hpcDsNCisJdW5zaWdu
ZWQgaW50IGlycSA9IGRlc2NfdG9faXJxKGRlc2MpOw0KKwl1bnNpZ25lZCBpbnQgbWFzayA9IDEg
PDwgKGlycSAlIDMyKTsNCisNCisJbW1pb193cml0ZWwobWFzaywgdGVncmFfZ2ljX2Rpc3RfYmFz
ZSArIF9JQ0RJU0VSICsgKGdpY19pcnEoaXJxKSAvIDMyKSAqIDQpOw0KKw0KKwlpcnEgLT0gSU5U
X1BSSV9CQVNFOw0KKwljaGlwID0gJnRlZ3JhX2lycV9jdHJsW2lycSAvIElOVF9TWVNfU1pdOw0K
KwltbWlvX3dyaXRlbCgxIDw8IChpcnEgJiAzMSksIGNoaXAtPnJlZyArIElDVExSX0NQVV9JRVJf
U0VUXzApOw0KK30NCisNCitzdGF0aWMgdm9pZCB0ZWdyYV9hY2soc3RydWN0IGlycV9kZXNjICpk
ZXNjKQ0KK3sNCisJdW5zaWduZWQgaW50IGlycSA9IGRlc2NfdG9faXJxKGRlc2MpOw0KKwl1bnNp
Z25lZCBpbnQgbWFzayA9IDEgPDwgKGlycSAlIDMyKTsNCisJdW5zaWduZWQgaW50IGNwdSA9IHNt
cF9wcm9jZXNzb3JfaWQoKTsNCisNCisJdGVncmFfbWFzayhkZXNjKTsNCisNCisgICAgICAgIG1t
aW9fd3JpdGVsKG1hc2ssIHRlZ3JhX2dpY19kaXN0X2Jhc2UgKyBfSUNESUNFUiArIChnaWNfaXJx
KGlycSkgLyAzMikgKiA0KTsNCisgICAgICAgIG1taW9fd3JpdGVsKGdpY19pcnEoaXJxKSwgdGVn
cmFfZ2ljX2NwdV9iYXNlW2NwdV0gKyBfSUNDRU9JUik7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHRl
Z3JhX2VuZChzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpDQorew0KKwl0ZWdyYV91bm1hc2soZGVzYyk7
DQorfQ0KKw0KK2h3X2lycV9jb250cm9sbGVyIHRlZ3JhX2lycV9jb250cm9sbGVyID0gew0KKwku
dHlwZW5hbWUgPSAibGV2ZWwiLA0KKwkuc3RhcnR1cCAgPSB0ZWdyYV91bm1hc2ssDQorCS5zaHV0
ZG93biA9IHRlZ3JhX21hc2ssDQorCS5lbmFibGUJICA9IHRlZ3JhX3VubWFzaywNCisJLmRpc2Fi
bGUgID0gdGVncmFfbWFzaywNCisJLmFjawkgID0gdGVncmFfYWNrLA0KKwkuZW5kCSAgPSB0ZWdy
YV9lbmQsDQorfTsNCisNCitzdGF0aWMgdm9pZCB0ZWdyYTI1MF9pcnFfaW5pdCgpDQorew0KKwl1
bnNpZ25lZCBpbnQgbWF4X2lycSwgaTsNCisJdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNz
b3JfaWQoKTsNCisJdW5zaWduZWQgbG9uZyBjcHVtYXNrID0gMSA8PCBjcHU7DQorDQorCWZvciAo
aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRlZ3JhX2lycV9jdHJsKTsgaSsrKSB7DQorCQl0ZWdyYV9p
cnFfY3RybFtpXS5pcnFfc3RhcnQgPSBJTlRfUFJJX0JBU0UgKyBJTlRfU1lTX1NaICogaTsNCisJ
CXRlZ3JhX2lycV9jdHJsW2ldLnJlZyA9IElPX0FERFJFU1MoSU5UX1BQSV9BRERSRVNTKGkpKTsN
CisJCW1taW9fd3JpdGVsKDB4RkZGRkZGRkYsIHRlZ3JhX2lycV9jdHJsW2ldLnJlZyArIElDVExS
X0NQVV9JRVJfQ0xSXzApOw0KKwkJbW1pb193cml0ZWwoMHgwMDAwMDAwMCwgdGVncmFfaXJxX2N0
cmxbaV0ucmVnICsgSUNUTFJfQ1BVX0lFUF9DTEFTU18wKTsNCisJfQ0KKw0KKwlmb3IgKGkgPSBJ
TlRfUFJJX0JBU0U7IGkgPCBJTlRfR1BJT19CQVNFOyBpKyspIHsNCisJCWlycV9kZXNjW2ldLmhh
bmRsZXIgPSAmdGVncmFfaXJxX2NvbnRyb2xsZXI7DQorCX0NCisNCisJY3B1bWFzayB8PSBjcHVt
YXNrIDw8IDg7DQorCWNwdW1hc2sgfD0gY3B1bWFzayA8PCAxNjsNCisNCisJdGVncmFfZ2ljX2Rp
c3RfYmFzZSA9IElPX0FERFJFU1MoVEVHUkFfQVJNX0lOVF9ESVNUX0JBU0UpOw0KKwl0ZWdyYV9n
aWNfY3B1X2Jhc2VbY3B1XSA9IElPX0FERFJFU1MoVEVHUkFfR0lDX1BST0NfSUZfQkFTRSk7DQor
DQorCW1taW9fd3JpdGVsKDAsIHRlZ3JhX2dpY19kaXN0X2Jhc2UgKyBfSUNERENSKTsNCisJDQor
ICAgICAgICAvKg0KKyAgICAgICAgICogRmluZCBvdXQgaG93IG1hbnkgaW50ZXJydXB0cyBhcmUg
c3VwcG9ydGVkLg0KKyAgICAgICAgICovDQorICAgICAgICBtYXhfaXJxID0gbW1pb19yZWFkbCh0
ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDVFIpICYgMHgxZjsNCisgICAgICAgIG1heF9pcnEg
PSAobWF4X2lycSArIDEpICogMzI7DQorDQorICAgICAgICAvKg0KKyAgICAgICAgICogVGhlIEdJ
QyBvbmx5IHN1cHBvcnRzIHVwIHRvIDEwMjAgaW50ZXJydXB0IHNvdXJjZXMuDQorICAgICAgICAg
KiBMaW1pdCB0aGlzIHRvIGVpdGhlciB0aGUgYXJjaGl0ZWN0ZWQgbWF4aW11bSwgb3IgdGhlDQor
ICAgICAgICAgKiBwbGF0Zm9ybSBtYXhpbXVtLg0KKyAgICAgICAgICovDQorICAgICAgICBpZiAo
bWF4X2lycSA+IG1heCgxMDIwLCBOUl9JUlFTKSkNCisgICAgICAgICAgICAgICAgbWF4X2lycSA9
IG1heCgxMDIwLCBOUl9JUlFTKTsNCisNCisgICAgICAgIC8qDQorICAgICAgICAgKiBTZXQgYWxs
IGdsb2JhbCBpbnRlcnJ1cHRzIHRvIGJlIGxldmVsIHRyaWdnZXJlZCwgYWN0aXZlIGxvdy4NCisg
ICAgICAgICAqLw0KKyAgICAgICAgZm9yIChpID0gMzI7IGkgPCBtYXhfaXJxOyBpICs9IDE2KQ0K
KyAgICAgICAgICAgICAgICBtbWlvX3dyaXRlbCgwLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lD
RElDRlIgKyBpICogNCAvIDE2KTsNCisNCisgICAgICAgIC8qDQorICAgICAgICAgKiBTZXQgYWxs
IGdsb2JhbCBpbnRlcnJ1cHRzIHRvIHRoaXMgQ1BVIG9ubHkuDQorICAgICAgICAgKi8NCisgICAg
ICAgIGZvciAoaSA9IDMyOyBpIDwgbWF4X2lycTsgaSArPSA0KQ0KKyAgICAgICAgICAgICAgICBt
bWlvX3dyaXRlbChjcHVtYXNrLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElQVFIgKyBpICog
NCAvIDQpOw0KKyAgICAgICAgLyoNCisgICAgICAgICAqIFNldCBwcmlvcml0eSBvbiBhbGwgaW50
ZXJydXB0cy4NCisgICAgICAgICAqLw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1heF9pcnE7
IGkgKz0gNCkNCisgICAgICAgICAgICAgICAgbW1pb193cml0ZWwoMHhhMGEwYTBhMCwgdGVncmFf
Z2ljX2Rpc3RfYmFzZSArIF9JQ0RJUFIgKyBpICogNCAvIDQpOw0KKw0KKyAgICAgICAgLyoNCisg
ICAgICAgICAqIERpc2FibGUgYWxsIGludGVycnVwdHMuDQorICAgICAgICAgKi8NCisgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBtYXhfaXJxOyBpICs9IDMyKQ0KKyAgICAgICAgICAgICAgICBtbWlv
X3dyaXRlbCgweGZmZmZmZmZmLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDRVIgKyBpICog
NCAvIDMyKTsNCisNCisgICAgICAgIG1taW9fd3JpdGVsKDEsIHRlZ3JhX2dpY19kaXN0X2Jhc2Ug
KyBfSUNERENSKTsNCisNCisgICAgICAgIG1taW9fd3JpdGVsKDB4ZjAsIHRlZ3JhX2dpY19jcHVf
YmFzZVtjcHVdICsgX0lDQ1BNUik7DQorICAgICAgICBtbWlvX3dyaXRlbCgxLCB0ZWdyYV9naWNf
Y3B1X2Jhc2VbY3B1XSArIF9JQ0NJQ1IpOw0KKw0KKw0KK30NCisNCisjZGVmaW5lIENMS19SU1Rf
Q09OVFJPTExFUl9SU1RfQ1BVX0NNUExYX0NMUl8wICAoMHgzNDQpDQorI2RlZmluZSBDTEtfUlNU
X0NPTlRST0xMRVJfQ0xLX0NQVV9DTVBMWF8wICAgICAgKDB4NGMpDQorI2RlZmluZSBDUFVfQ0xL
X1NUT1AoY3B1KSAgICAgICAgICAgICAgICAgICAgICAgKDB4MTw8KDgrY3B1KSkNCisjZGVmaW5l
IENQVV9SRVNFVChjcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMDExdWw8PChjcHUp
KQ0KKw0KKyNkZWZpbmUgRVZQX0NQVV9SRVNFVF9WRUNUT1JfMCAgICAgICAgICAJKDB4MTAwKQ0K
KyNkZWZpbmUgRkxPV19DVFJMX0hBTFRfQ1BVeF9FVkVOVFMoY3B1KSAJKChjcHUpID8gKChjcHUg
LSAxKSAqIDB4OCArIDB4MTQpIDogMHgwKQ0KKw0KKw0KK3ZvbGF0aWxlIGludCB0ZWdyYTI1MF9j
b3JlX21hcCA9IDE7DQorDQorYXNtKA0KKyIudHlwZSB0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQs
ICNmdW5jdGlvbglcbiINCisiLmdsb2JhbCB0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQJCVxuIg0K
KyJ0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQ6CQkJXG4iDQorIgltc3IJY3Bzcl9jLCAjMHhEMwkJ
CVxuIg0KKyIJbW92CXIwLCAjMAkJCQlcbiINCisiCW1jcglwMTUsIDIsIHIwLCBjMCwgYzAsIDAJ
CVxuIg0KKyIJbXJjCXAxNSwgMSwgcjAsIGMwLCBjMCwgMAkJXG4iDQorIglsZHIJcjEsID0weDdG
RkYJCQlcbiINCisiCWFuZAlyMiwgcjEsIHIwLCBsc3IgIzEzCQlcbiINCisiCWxkcglyMSwgPTB4
M0ZGCQkJXG4iDQorIglhbmQJcjMsIHIxLCByMCwgbHNyICMzCQlcbiINCisiCWFkZAlyMiwgcjIs
ICMxCQkJXG4iDQorIglhbmQJcjAsIHIwLCAjMHgwNwkJCVxuIg0KKyIJYWRkCXIwLCByMCwgIzQJ
CQlcbiINCisiCWNseglyMSwgcjMJCQkJXG4iDQorIglhZGQJcjQsIHIzLCAjMQkJCVxuIg0KKyIx
OglzdWIJcjIsIHIyLCAjMQkJCVxuIg0KKyIJbW92CXIzLCByNAkJCQlcbiINCisiMjoJc3Vicwly
MywgcjMsICMxCQkJXG4iDQorIgltb3YJcjUsIHIzLCBsc2wgcjEJCQlcbiINCisiCW1vdglyNiwg
cjIsIGxzbCByMAkJCVxuIg0KKyIJb3JyCXI1LCByNSwgcjYJCQlcbiINCisiCW1jcglwMTUsIDAs
IHI1LCBjNywgYzYsIDIJCVxuIg0KKyIJYmd0CTJiCQkJCVxuIg0KKyIJY21wCXIyLCAjMAkJCQlc
biINCisiCWJndAkxYgkJCQlcbiINCisiCWRzYgkJCQkJXG4iDQorIglpc2IJCQkJCVxuIg0KKyIJ
bXJjCXAxNSwgMCwgcjAsIGMwLCBjMCwgNQkJXG4iDQorIglhbmQJcjAsIHIwLCAjMTUJCQlcbiIN
CisiCWFkcglyNCwgMWYJCQkJXG4iDQorIglsZG1pYQlyNCwge3I1LCByNn0JCQlcbiINCisiCXN1
YglyNCwgcjQsIHI1CQkJXG4iDQorIglhZGQJcjYsIHI2LCByNAkJCVxuIg0KKyIJbW92CXIxLCAj
MQkJCQlcbiINCisiCWxzbAlyMSwgcjEsIHIwCQkJXG4iDQorInNwaW46CWxkcglyNywgW3I2XQkJ
CVxuIg0KKyIJdHN0CXI3LCByMQkJCQlcbiINCisiCWJlcQlzcGluCQkJCVxuIg0KKyIJYglzbGF2
ZV9jcHVfc3RhcnQJCQlcbiINCisiMToJLmxvbmcJLgkJCQlcbiINCisiCS5sb25nCXRlZ3JhMjUw
X2NvcmVfbWFwCQlcbiINCispOw0KKw0KK2ludCB3YWtldXBfY3B1KHVuc2lnbmVkIGludCBjcHUp
DQorew0KKwl0ZWdyYTI1MF9jb3JlX21hcCB8PSAxIDw8ICBjcHU7DQorDQorCWNwdV9mbHVzaF9j
YWNoZV9hbGwoKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2V4dGVybiB2b2lkIHRlZ3JhMjUw
X3NsYXZlX2NwdV9zdGFydCh2b2lkKTsNCisNCitzdGF0aWMgdm9pZCB0ZWdyYTI1MF9ldnBfaW5p
dCh2b2lkKQ0KK3sNCisJdW5zaWduZWQgbG9uZyByLCBvcmcsIGxvb3AsIGN0cmw7DQorDQorCS8q
IEluaXRpYWxpemUgU25vb3AgQ29udHJvbCBVbml0ICovDQorCWN0cmwgPSBtbWlvX3JlYWRsKElP
X0FERFJFU1MoVEVHUkFfU0NVX0JBU0UpICsgMHgwKTsNCisJY3RybCB8PSAxOw0KKwltbWlvX3dy
aXRlbChjdHJsLCBJT19BRERSRVNTKFRFR1JBX1NDVV9CQVNFKSArIDB4MCk7DQorDQorCW9yZyA9
IG1taW9fcmVhZGwoSU9fQUREUkVTUyhURUdSQV9FWENFUFRJT05fVkVDVE9SU19CQVNFKSArIEVW
UF9DUFVfUkVTRVRfVkVDVE9SXzApOw0KKw0KKwkvKiBTZXQgYm9vdCBlbnRyeSAqLw0KKwltbWlv
X3dyaXRlbChfX3BhKHRlZ3JhMjUwX3NsYXZlX2NwdV9zdGFydCksIElPX0FERFJFU1MoVEVHUkFf
RVhDRVBUSU9OX1ZFQ1RPUlNfQkFTRSkgKyBFVlBfQ1BVX1JFU0VUX1ZFQ1RPUl8wKTsNCisNCisJ
ZHNiKCk7DQorCWlzYigpOw0KKw0KKwkvKiBIYWx0IENQVSAqLw0KKwltbWlvX3dyaXRlbCgwLCBJ
T19BRERSRVNTKFRFR1JBX0ZMT1dfQ1RSTF9CQVNFKSArIEZMT1dfQ1RSTF9IQUxUX0NQVXhfRVZF
TlRTKDEpKTsNCisNCisJZHNiKCk7DQorCWlzYigpOw0KKw0KKwkvKiBDUFUgQ2xvY2sgU3RvcCAq
Lw0KKwlyID0gbW1pb19yZWFkbChJT19BRERSRVNTKFRFR1JBX0NMS19SRVNFVF9CQVNFKSArIENM
S19SU1RfQ09OVFJPTExFUl9DTEtfQ1BVX0NNUExYXzApOw0KKwlyICY9IH5DUFVfQ0xLX1NUT1Ao
MSk7DQorCW1taW9fd3JpdGVsKHIsIElPX0FERFJFU1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpICsg
Q0xLX1JTVF9DT05UUk9MTEVSX0NMS19DUFVfQ01QTFhfMCk7DQorDQorCWRzYigpOw0KKwlpc2Io
KTsNCisNCisJLyogUmVzdGFydCBTbGF2ZSBDUFUgKi8NCisJbW1pb193cml0ZWwoQ1BVX1JFU0VU
KDEpLCBJT19BRERSRVNTKFRFR1JBX0NMS19SRVNFVF9CQVNFKSArIENMS19SU1RfQ09OVFJPTExF
Ul9SU1RfQ1BVX0NNUExYX0NMUl8wKTsNCisNCisJZHNiKCk7DQorCWlzYigpOw0KKw0KKyAgICAg
ICAgLyogV2FpdCB1dGlsIHRoZSBwb3dlciB1bml0IGlzIGluIHN0YWJsZSAqLw0KKyAgICAgICAg
bG9vcCA9IDEwMDAwOw0KKyAgICAgICAgd2hpbGUoKC0tbG9vcCkgPiAwICk7DQorfQ0KKw0KK3Zv
aWQgdGVncmEyNTBfaW9yZW1hcCh2b2lkKQ0KK3sNCisJbWFwX3BhZ2VzX3RvX3hlbihJT19BRERS
RVNTKFRFR1JBX0FSTV9DUFVfQkFTRSksDQorCQlURUdSQV9BUk1fQ1BVX0JBU0UgPj4gUEFHRV9T
SElGVCwgMHgxMDAwMDAgPj4gUEFHRV9TSElGVCwNCisJCUwxRV9UWVBFX0RFVklDRSk7DQorDQor
CW1hcF9wYWdlc190b194ZW4oSU9fQUREUkVTUyhURUdSQV9QUFNCX0RFVklDRV9CQVNFKSwNCisJ
CVRFR1JBX1BQU0JfREVWSUNFX0JBU0UgPj4gUEFHRV9TSElGVCwgMHgxMDAwMDAgPj4gUEFHRV9T
SElGVCwgDQorCQlMMUVfVFlQRV9ERVZJQ0UpOw0KKw0KKwltYXBfcGFnZXNfdG9feGVuKElPX0FE
RFJFU1MoVEVHUkFfQVBCX0RFVklDRV9CQVNFKSwNCisJCVRFR1JBX0FQQl9ERVZJQ0VfQkFTRSA+
PiBQQUdFX1NISUZULCAweDEwMDAwMCA+PiBQQUdFX1NISUZULA0KKwkJTDFFX1RZUEVfREVWSUNF
KTsNCit9DQorDQoraW50IG1hY2hpbmVfc2V0dXAodm9pZCkNCit7DQorCWNwdV90b3BvbG9neV9p
bml0KDIpOw0KKw0KKwl0ZWdyYTI1MF9pb3JlbWFwKCk7DQorDQorCXRlZ3JhMjUwX2V2cF9pbml0
KCk7DQorDQorCXRlZ3JhMjUwX2lycV9pbml0KCk7DQorDQorCXRlZ3JhMjUwX3RpbWVyX2luaXQo
KTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gv
YXJtL3RlZ3JhL3RpbWVyLmMNCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwDQorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvdGltZXIuYwlTdW4gRmViIDEyIDE1OjA0
OjA2IDIwMTIgKzA5MDANCkBAIC0wLDAgKzEsMTEwIEBADQorLyoNCisgKiBhcmNoL2FybS9tYWNo
LXRlZ3JhL3RpbWVyLmMNCisgKg0KKyAqIFRpbWVyIGFuZCBjbG9jayBldmVudCBzdXBwb3J0IGZv
ciBOVklESUEgVGVncmEgU29Dcw0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMDksIE5W
SURJQSBDb3Jwb3JhdGlvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkN
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQor
ICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQNCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yDQorICogbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcNCisg
KiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLA0KKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4NCisgKi8NCisNCisjaW5jbHVkZSA8eGVuL3NjaGVk
Lmg+DQorI2luY2x1ZGUgPHhlbi9pcnEuaD4NCisjaW5jbHVkZSA8eGVuL2luaXQuaD4NCisjaW5j
bHVkZSA8eGVuL3NvZnRpcnEuaD4NCisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+DQorI2luY2x1
ZGUgPGFzbS90aW1lLmg+DQorI2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4NCisjaW5jbHVkZSA8
YXNtL2FyY2gvdGVncmEuaD4NCisNCisNCisjZGVmaW5lIENMS19SU1RfQ09OVFJPTExFUl9PU0Nf
Q1RSTF8wCTB4NTANCisNCisjZGVmaW5lIFRJTUVSMV9PRkZTCQkJMHgwMCAgLyogcmVzZXJ2ZWQg
Zm9yIEFWUCAqLw0KKyNkZWZpbmUgVElNRVIyX09GRlMJCQkweDA4ICAvKiByZXNlcnZlZCBmb3Ig
QVZQICovDQorI2RlZmluZSBUSU1FUjNfT0ZGUwkJCTB4NTAgIC8qIHVzZWQgYXMgT1MgQ1BVIGV2
ZW50IHRpbWVyICovDQorI2RlZmluZSBUSU1FUjRfT0ZGUwkJCTB4NTggIC8qIHJlc2VydmVkIGFz
IExQMiB3YWtldXAgdHJpZ2dlciAqLw0KKw0KKyNkZWZpbmUgVElNRVJfVE1SX1BUVl8wCQkJMHgw
DQorI2RlZmluZSBUSU1FUl9UTVJfUENSXzAJCQkweDQNCisNCisjZGVmaW5lIFRJTUVSVVNfT0ZG
UwkJCTB4MTANCisjZGVmaW5lIFRJTUVSVVNfQ05UUl8xVVNfMAkJMHgwDQorI2RlZmluZSBUSU1F
UlVTX1VTRUNfQ0ZHXzAJCTB4NA0KKw0KKyNkZWZpbmUgTlNFQ19QRVJfU0VDCQkJMTAwMDAwMDAw
MEwNCisNCit2b2lkIHRlZ3JhX2Nsb2NrZXZlbnRfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRl
dl9pZCwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQorew0KKyAgICAgICAgbW1pb193cml0
ZWwoMSA8PCAzMCwgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBUSU1FUjNfT0ZGUykgKyBU
SU1FUl9UTVJfUENSXzApOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGlycWFjdGlvbiB0ZWdyYV9j
bG9ja2V2ZW50X2lycSA9IHsNCisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJUaW1lcl9ldmVu
dCIsDQorICAgICAgICAuaGFuZGxlciAgICAgICAgPSB0ZWdyYV9jbG9ja2V2ZW50X2ludGVycnVw
dCwNCit9Ow0KKw0KK3ZvaWQgdGVncmFfbHAyd2FrZV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAq
ZGV2X2lkLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCit7DQorICAgICAgICBtbWlvX3dy
aXRlbCgxPDwzMCwgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBUSU1FUjRfT0ZGUykgKyBU
SU1FUl9UTVJfUENSXzApOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGlycWFjdGlvbiB0ZWdyYV9s
cDJ3YWtlX2lycSA9IHsNCisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJ0aW1lcl9scDJ3YWtl
IiwNCisgICAgICAgIC5oYW5kbGVyICAgICAgICA9IHRlZ3JhX2xwMndha2VfaW50ZXJydXB0LA0K
K307DQorDQorc3RhdGljIHVuc2lnbmVkIGxvbmcgbWVhc3VyZV9pbnB1dF9mcmVxKHVuc2lnbmVk
IGludCAqbSwgdW5zaWduZWQgaW50ICpuKQ0KK3sNCisJdm9pZCAqY2xrX3JzdCA9IElPX0FERFJF
U1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpOw0KKwl1bnNpZ25lZCBsb25nIG9zYyA9IG1taW9fcmVh
ZGwoY2xrX3JzdCArIENMS19SU1RfQ09OVFJPTExFUl9PU0NfQ1RSTF8wKTsNCisJb3NjID4+PSAz
MDsNCisNCisJc3dpdGNoIChvc2MpIHsNCisJCWNhc2UgMDogaWYgKG0gJiYgbikgeyAqbT0xOyAq
bj0xMzsgfSByZXR1cm4gMTMwMDA7DQorCQljYXNlIDE6IGlmIChtICYmIG4pIHsgKm09NTsgKm49
OTY7IH0gcmV0dXJuIDE5MjAwOw0KKwkJY2FzZSAyOiBpZiAobSAmJiBuKSB7ICptPTE7ICpuPTEy
OyB9IHJldHVybiAxMjAwMDsNCisJCWNhc2UgMzogaWYgKG0gJiYgbikgeyAqbT0xOyAqbj0yNjsg
fSByZXR1cm4gMjYwMDA7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgdGVncmEy
NTBfdGltZXJfaW5pdCh2b2lkKQ0KK3sNCisgICAgICAgIHZvaWQgKnRtcjsNCisgICAgICAgIHVu
c2lnbmVkIGludCBtLCBuOw0KKyAgICAgICAgdW5zaWduZWQgbG9uZyB2YWw7DQorICAgICAgICB1
MzIgcmVnOw0KKw0KKyAgICAgICAgdG1yID0gSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBU
SU1FUlVTX09GRlMpOw0KKyAgICAgICAgdmFsID0gbWVhc3VyZV9pbnB1dF9mcmVxKCZtLCAmbik7
DQorDQorICAgICAgICB2YWwgPSAoKG0tMSk8PDgpIHwgKG4tMSk7DQorDQorICAgICAgICBtbWlv
X3dyaXRlbCh2YWwsIHRtciArIFRJTUVSVVNfVVNFQ19DRkdfMCk7DQorICAgICAgICBtbWlvX3dy
aXRlbCgwLCBJT19BRERSRVNTKFRFR1JBX1RNUjFfQkFTRSArIFRJTUVSM19PRkZTKSAgKyBUSU1F
Ul9UTVJfUFRWXzApOw0KKw0KKyAgICAgICAgcmVnID0gMHhjMDAwMjcwZjsNCisgICAgICAgIG1t
aW9fd3JpdGVsKHJlZywgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JBU0UgKyBUSU1FUjNfT0ZGUykg
KyBUSU1FUl9UTVJfUFRWXzApOw0KKw0KKyAgICAgICAgaWYgKHNldHVwX2lycShJTlRfVE1SMywg
JnRlZ3JhX2Nsb2NrZXZlbnRfaXJxKSkgew0KKyAgICAgICAgICAgICAgICBCVUcoKTsNCisgICAg
ICAgIH0NCisgICAgICAgIGlmIChzZXR1cF9pcnEoSU5UX1RNUjQsICZ0ZWdyYV9scDJ3YWtlX2ly
cSkpIHsNCisgICAgICAgICAgICAgICAgQlVHKCk7DQorICAgICAgICB9DQorfQ0KKw0KZGlmZiAt
ciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3hlbi9jcHUuYw0KLS0tIGEveGVuL2FyY2gvYXJt
L3hlbi9jcHUuYwlTdW4gRmViIDEyIDEyOjI0OjIxIDIwMTIgKzA5MDANCisrKyBiL3hlbi9hcmNo
L2FybS94ZW4vY3B1LmMJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtNTMsNiAr
NTMsMTEgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUpDQogew0KIAlpbnQgcmV0ID0g
MDsNCiANCisJcmV0ID0gd2FrZXVwX2NwdShjcHUpOw0KKwlpZiAoIXJldCkgew0KKwkJcmV0dXJu
IC1FSU5WQUw7DQorCX0NCisNCiAJd2hpbGUoIWNwdV9vbmxpbmUoY3B1KSkgew0KIAkJY3B1X3Jl
bGF4KCk7DQogCQlwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsNCmRpZmYgLXIgNmFmOGE4OWM5
OWNkIHhlbi9hcmNoL2FybS94ZW4vZmF1bHQuYw0KLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9mYXVs
dC5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJtL3hl
bi9mYXVsdC5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTMzLDcgKzMzLDYg
QEANCiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KICNpbmNsdWRlIDxhc20vZ3Vlc3RfYWNj
ZXNzLmg+DQogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4NCi0jaW5jbHVkZSA8YXNtL21lbW9yeS5o
Pg0KIA0KIGFzbWxpbmthZ2Ugdm9pZCBfX2RpdjAodm9pZCkNCiB7DQpkaWZmIC1yIDZhZjhhODlj
OTljZCB4ZW4vYXJjaC9hcm0veGVuL2lycS5jDQotLS0gYS94ZW4vYXJjaC9hcm0veGVuL2lycS5j
CVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJtL3hlbi9p
cnEuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC0zOCw5ICszOCwyNyBAQCBo
d19pcnFfY29udHJvbGxlciBub19pcnFfdHlwZSA9IHsNCiAJLnNodXRkb3duID0gaXJxX3NodXRk
b3duX25vbmUsDQogCS5lbmFibGUgICA9IGlycV9lbmFibGVfbm9uZSwNCiAJLmRpc2FibGUgID0g
aXJxX2Rpc2FibGVfbm9uZSwNCisJLmVuZAkgID0gaXJxX2VuZF9ub25lLA0KKwkuYWNrCSAgPSBp
cnFfYWNrX25vbmUsDQogfTsNCiANCi1zdHJ1Y3QgaXJxX2Rlc2MgKmlycV9kZXNjOw0KKy8vc3Ry
dWN0IGlycV9kZXNjICppcnFfZGVzYzsNCisNCitpcnFfZGVzY190IGlycV9kZXNjW05SX0lSUVNd
ID0gew0KKyAgICAgICAgWzAgLi4uIE5SX0lSUVMgLSAxXSA9IHsNCisgICAgICAgICAgICAgICAg
LnN0YXR1cyA9IElSUV9ESVNBQkxFRCwNCisgICAgICAgICAgICAgICAgLmhhbmRsZXIgPSAmbm9f
aXJxX3R5cGUsDQorICAgICAgICAgICAgICAgIC5hY3Rpb24gPSBOVUxMLA0KKyAgICAgICAgICAg
ICAgICAubG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRA0KKyAgICAgICAgfQ0KK307DQorDQorc3Ry
dWN0IGlycV9jZmcgaXJxX2NmZ1tOUl9JUlFTXSA9IHsNCisgICAgICAgIFswIC4uLiBOUl9JUlFT
IC0gMV0gPXsNCisgICAgICAgICAgICAgICAgLmlycSA9IDANCisgICAgICAgIH0NCit9Ow0KKw0K
IA0KIGludCBwaXJxX2d1ZXN0X3VubWFzayhzdHJ1Y3QgZG9tYWluICpkKQ0KIHsNCkBAIC03NSw2
ICs5MywzMiBAQCBzdHJ1Y3QgcGlycSAqYWxsb2NfcGlycV9zdHJ1Y3Qoc3RydWN0IGRvDQogCXJl
dHVybiBOVUxMOw0KIH0NCiANCitpbnQgc2V0dXBfaXJxKHVuc2lnbmVkIGludCBpcnEsIHN0cnVj
dCBpcnFhY3Rpb24gKm5ldykNCit7DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorCXN0cnVjdCBp
cnFfZGVzYyAqZGVzYzsNCisNCisJaWYoaXJxID49IE5SX0lSUVMpIHsNCisJCXByaW50aygiQkFE
IElSUSA9ICVkXG4iLCBpcnEpOw0KKwl9DQorDQorCWRlc2MgPSBpcnFfdG9fZGVzYyhpcnEpOw0K
Kw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGVzYy0+bG9jaywgZmxhZ3MpOw0KKwlkZXNjLT5hY3Rp
b24gPSBuZXc7DQorCWlmIChkZXNjLT5oYW5kbGVyKSB7DQorCQlpZiAoZGVzYy0+aGFuZGxlci0+
c3RhcnR1cCkgew0KKwkJCWRlc2MtPmhhbmRsZXItPnN0YXJ0dXAoZGVzYyk7DQorCQl9IGVsc2Ug
aWYoZGVzYy0+aGFuZGxlci0+ZW5hYmxlKSB7DQorCQkJZGVzYy0+aGFuZGxlci0+ZW5hYmxlKGRl
c2MpOw0KKwkJfQ0KKwl9DQorDQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRlc2MtPmxvY2ss
IGZsYWdzKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIGludCBhcmNoX2luaXRfb25lX2lycV9k
ZXNjKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykNCiB7DQogCU5PVF9ZRVQoKTsNCmRpZmYgLXIgNmFm
OGE4OWM5OWNkIHhlbi9hcmNoL2FybS94ZW4vbW0uYw0KLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9t
bS5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJtL3hl
bi9tbS5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTI1NSwzICsyNTUsMjcg
QEAgaW50IGFsbG9jX3BhZ2VfbWFwKHVuc2lnbmVkIGxvbmcgdmlydCwgdQ0KIAlyZXR1cm4gMDsN
CiB9DQogDQoraW50IG1hcF9wYWdlc190b194ZW4odW5zaWduZWQgbG9uZyB2aXJ0LCB1bnNpZ25l
ZCBsb25nIG1mbiwgaW50IG5yLCB1bnNpZ25lZCBsb25nIGZsYWdzKQ0KK3sNCisgICAgICAgIHVu
c2lnbmVkIGxvbmcgdmFkZHIgPSByb3VuZF9kb3duKHZpcnQsIFBBR0VfU0laRSk7DQorICAgICAg
ICB1bnNpZ25lZCBsb25nIG1hZGRyID0gbWZuIDw8IFBBR0VfU0hJRlQ7DQorICAgICAgICB1bnNp
Z25lZCBpbnQgZW5kID0gdmlydCArIChuciA8PCBQQUdFX1NISUZUKTsNCisNCisgICAgICAgIGwx
ZV90ICpsMWUgPSBsMV9saW5lYXJfb2Zmc2V0X3hlbih2YWRkcik7DQorDQorICAgICAgICBkbyB7
DQorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGltaXQgPSAodmFkZHIgKyBTRUNUSU9O
X1NJWkUpICYgKFNFQ1RJT05fTUFTSyk7DQorICAgICAgICAgICAgICAgIGxpbWl0ID0gKGxpbWl0
IDwgZW5kKSA/IGxpbWl0IDogZW5kOw0KKw0KKyAgICAgICAgICAgICAgICBpZiAoKCh2YWRkciB8
IG1hZGRyIHwgbGltaXQpICYgflNFQ1RJT05fTUFTSykgPT0gMCkgew0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICpsMWUgPSBNS19MMUUobWFkZHIsIGZsYWdzKTsNCisgICAgICAgICAgICAgICAg
ICAgICAgICBwdGVfc3luYyhsMWUpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRy
ICs9IFNFQ1RJT05fU0laRTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtYWRkciArPSBTRUNU
SU9OX1NJWkU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0gd2hpbGUobDFlKyssIHZh
ZGRyIDwgZW5kKTsNCisNCisgICAgICAgIHJldHVybiAwOw0KK30NCisNCmRpZmYgLXIgNmFmOGE4
OWM5OWNkIHhlbi9hcmNoL2FybS94ZW4vc2V0dXAuYw0KLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9z
ZXR1cC5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysrIGIveGVuL2FyY2gvYXJt
L3hlbi9zZXR1cC5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTY0LDExICs2
NCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRvbTBfc2l6ZSA9IDI1NiAqIDEwDQogaW50ZWdl
cl9wYXJhbSgiZG9tMF9zaXplIiwgZG9tMF9zaXplKTsNCiANCiAvL3N0YXRpYyB1bnNpZ25lZCBs
b25nIGRvbTBfaW1hZ2Vfc3RhcnQgPSAweDQwQjAwMDAwVUw7DQotc3RhdGljIHVuc2lnbmVkIGxv
bmcgZG9tMF9pbWFnZV9zdGFydCA9IDB4MDBCMDAwMDBVTDsNCitzdGF0aWMgdW5zaWduZWQgbG9u
ZyBkb20wX2ltYWdlX3N0YXJ0ID0gMHhBMDAwMDBVTDsNCiBpbnRlZ2VyX3BhcmFtKCJpbWFnZV9z
dGFydCIsIGRvbTBfaW1hZ2Vfc3RhcnQpOw0KIA0KIC8vc3RhdGljIHVuc2lnbmVkIGxvbmcgZG9t
MF9pbWFnZV9zaXplID0gMHhBMDAwMDBVTDsNCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBkb20wX2lt
YWdlX3NpemUgPSAweEEwMDAwMFVMOw0KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRvbTBfaW1hZ2Vf
c2l6ZSA9IDB4MTQwMDAwMFVMOw0KIGludGVnZXJfcGFyYW0oImltYWdlX2xlbmd0aCIsIGRvbTBf
aW1hZ2Vfc2l6ZSk7DQogDQogdm9pZCBhcmNoX2dldF94ZW5fY2Fwcyh4ZW5fY2FwYWJpbGl0aWVz
X2luZm9fdCAqaW5mbykNCkBAIC0yMTEsNiArMjExLDggQEAgYXNtbGlua2FnZSB2b2lkIHN0YXJ0
X3hlbih2b2lkKQ0KIA0KIAl0YXNrbGV0X3N1YnN5c19pbml0KCk7DQogDQorCW1hY2hpbmVfc2V0
dXAoKTsNCisNCiAJdGltZXJfaW5pdCgpOw0KIA0KIAlpZGxlX2RvbWFpbl9pbml0KCk7DQpkaWZm
IC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0veGVuL3RpbWUuYw0KLS0tIGEveGVuL2FyY2gv
YXJtL3hlbi90aW1lLmMJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysgYi94ZW4v
YXJjaC9hcm0veGVuL3RpbWUuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC03
OSw1ICs3OSw0IEBAIHZvaWQgZG9tYWluX3NldF90aW1lX29mZnNldChzdHJ1Y3QgZG9tYWkNCiAN
CiB2b2lkIHRpbWVrZWVwaW5nX2luaXQodm9pZCkNCiB7DQotCU5PVF9ZRVQoKTsNCiB9DQpkaWZm
IC1yIDZhZjhhODljOTljZCB4ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYw0KLS0tIGEveGVuL2Ry
aXZlcnMvY2hhci9jb25zb2xlLmMJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysg
Yi94ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDANCkBAIC00MTIsNyArNDEyLDExIEBAIGxvbmcgZG9fY29uc29sZV9pbyhpbnQgY21kLCBpbnQg
Y291bnQsIFgNCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KICAqLw0KIA0KKyNpZiBkZWZpbmVkKF9fYXJtX18pDQorc3RhdGljIGJvb2xf
dCBjb25zb2xlX2xvY2tzX2J1c3RlZCA9IDE7DQorI2Vsc2UNCiBzdGF0aWMgYm9vbF90IGNvbnNv
bGVfbG9ja3NfYnVzdGVkOw0KKyNlbmRpZg0KIA0KIHN0YXRpYyB2b2lkIF9fcHV0c3RyKGNvbnN0
IGNoYXIgKnN0cikNCiB7DQpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJt
L2dpYy5oDQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMA0KKysr
IGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDANCkBAIC0wLDAgKzEsMTAxIEBADQorLyoNCisgKiBnaWMuaA0KKyAqDQorICogQ29weXJpZ2h0
IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MNCisgKiAgICAgICAgICBKYWVtaW4gUnl1ICA8
am03Ny5yeXVAc2Ftc3VuZy5jb20+DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNl
IGFzDQorICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoN
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAq
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B
ICAwMjExMS0xMzA3ICBVU0ENCisgKi8NCisNCisjaWZuZGVmIF9fQVJNX0dJQ19IX18NCisjZGVm
aW5lIF9fQVJNX0dJQ19IX18NCisNCisNCisvKiBEaXN0cmlidXRvciBSZWdpc3RlciBNYXAgKi8N
CisjZGVmaW5lIF9JQ0REQ1IJCTB4MDAwICAvKiBEaXN0cmlidXRvciBDb250cm9sIFJlZ2lzdGVy
ICovDQorI2RlZmluZSBfSUNESUNUUgkweDAwNCAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgVHlw
ZSBSZWdpc3RlciAqLw0KKyNkZWZpbmUgX0lDRElJRFIJMHgwMDggIC8qIERpc3RyaWJ1dG9yIElt
cGxlbWVudGVyIElkIFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMAkweDA4MCAgLyogSW50
ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMQkweDA4NCAgLyog
SW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMgkweDA4OCAg
LyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSMwkweDA4
YyAgLyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNSNAkw
eDA5MCAgLyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNESVNF
UgkweDEwMCAgLyogSW50ZXJydXB0IFNldC1FbmFibGUgUmVnaXN0ZXIgKi8NCisjZGVmaW5lIF9J
Q0RJQ0VSCTB4MTgwICAvKiBJbnRlcnJ1cHQgQ2xlYXItRW5hYmxlIFJlZ2lzdGVyICovDQorI2Rl
ZmluZSBfSUNESVNQUgkweDIwMCAgLyogSW50ZXJydXB0IFNldC1QZW5kaW5nIFJlZ2lzdGVyICov
DQorI2RlZmluZSBfSUNESUNQUgkweDI4MCAgLyogSW50ZXJydXB0IENsZWFyLVBlbmRpbmcgUmVn
aXN0ZXIgKi8NCisjZGVmaW5lIF9JQ0RBQlIJCTB4MzAwICAvKiBBY3RpdmUgQml0IFJlZ2lzdGVy
cyAqLw0KKyNkZWZpbmUgX0lDRElQUgkJMHg0MDAgIC8qIEludGVycnVwdCBQcmlvcml0eSBSZWdp
c3RlciAqLw0KKyNkZWZpbmUgX0lDRElQVFIJMHg4MDAgIC8qIEludGVycnVwdCBQcm9jZXNzb3Ig
VGFyZ2V0cyBSZWdpc3RlcnMgKi8NCisjZGVmaW5lIF9JQ0RJQ0ZSCTB4QzAwICAvKiBJbnRlcnJ1
cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8NCisjZGVmaW5lIF9JQ0RTR0lSCTB4RjAwICAv
KiBTb2Z0d2FyZSBHZW5lcmF0ZWQgSW50ZXJydXB0IFJlZ2lzdGVyICovDQorDQorI2RlZmluZSBJ
Q0REQ1IoKQkoX0lDRERDUikNCisjZGVmaW5lIElDRElDVFIoKQkoX0lDRElDVFIpDQorI2RlZmlu
ZSBJQ0RJU1IoeCkJKF9JQ0RJU1IwICsgKHggLyBCSVRTX1BFUl9MT05HKSAqIEJZVEVTX1BFUl9M
T05HKQ0KKyNkZWZpbmUgSUNESVNFUih4KQkoX0lDRElTRVIgKyAoeCAvIEJJVFNfUEVSX0xPTkcp
ICogQllURVNfUEVSX0xPTkcpDQorI2RlZmluZSBJQ0RJQ0VSKHgpCShfSUNESUNFUiArICh4IC8g
QklUU19QRVJfTE9ORykgKiBCWVRFU19QRVJfTE9ORykNCisjZGVmaW5lIElDRElTUFIoeCkJKF9J
Q0RJU1BSICsgKHggLyBCSVRTX1BFUl9MT05HKSAqIEJZVEVTX1BFUl9MT05HKQ0KKyNkZWZpbmUg
SUNESUNQUih4KQkoX0lDRElDUFIgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xP
TkcpDQorI2RlZmluZSBJQ0RBQlIoeCkJKF9JQ0RBQlIgICsgKHggLyBCSVRTX1BFUl9MT05HKSAq
IEJZVEVTX1BFUl9MT05HKQ0KKyNkZWZpbmUgSUNESVBSKHgpCShfSUNESVBSICArICh4IC8gIDQp
ICogQllURVNfUEVSX0xPTkcpDQorI2RlZmluZSBJQ0RJUFRSKHgpCShfSUNESVBUUiArICh4IC8g
IDQpICogQllURVNfUEVSX0xPTkcpDQorI2RlZmluZSBJQ0RTR0lSKCkJKF9JQ0RTR0lSKQ0KKw0K
Ky8qIENQVSBJbnRlcmZhY2UgUmVnaXN0ZXIgTWFwICovDQorI2RlZmluZSBfSUNDSUNSCQkweDAw
MCAgLyogQ1BVIEludGVyZmFjZSBDb250cm9sIFJlZ2lzdGVyICovDQorI2RlZmluZSBfSUNDUE1S
CQkweDAwNCAgLyogSW50ZXJydXB0IFByaW9yaXR5IE1hc2sgUmVnaXN0ZXIgKi8NCisjZGVmaW5l
IF9JQ0NCUFIJCTB4MDA4ICAvKiBCaW5yYXJ5IFBvaW50IFJlZ2lzdGVyICovDQorI2RlZmluZSBf
SUNDSUFSCQkweDAwQyAgLyogSW50ZXJydXB0IEFja25vd2xlZGdlIFJlZ2lzdGVyICovDQorI2Rl
ZmluZSBfSUNDRU9JUgkweDAxMCAgLyogRW5kIG9mIEludGVycnVwdCBSZWdpc3RlciAqLw0KKyNk
ZWZpbmUgX0lDQ1JQUgkJMHgwMTQgIC8qIFJ1bm5pbmcgUHJpb3JpdHkgUmVnaXN0ZXIgKi8NCisj
ZGVmaW5lIF9JQ0NIUElSCTB4MDE4ICAvKiBIaWdoZXN0IFBlbmRpbmcgSW50ZXJydXB0IFJlZ2lz
dGVyICovDQorI2RlZmluZSBfSUNDQUJQUgkweDAxQyAgLyogQWxpYXNlZCBCaW5hcnkgUG9pbnQg
UmVnaXN0ZXIgKi8NCisjZGVmaW5lIF9JQ0NJSURSCTB4MEZDICAvKiBDUFUgSW50ZXJmYWNlIElk
IFJlZ2lzdGVyICovDQorDQorI2RlZmluZSBJQ0NJQ1IoKQkoX0lDQ0lDUikNCisjZGVmaW5lIElD
Q1BNUigpCShfSUNDUE1SKQ0KKyNkZWZpbmUgSUNDQlBSKCkJKF9JQ0NCUFIpDQorI2RlZmluZSBJ
Q0NJQVIoKQkoX0lDQ0lBUikNCisjZGVmaW5lIElDQ0VPSVIoKQkoX0lDQ0VPSVIpDQorI2RlZmlu
ZSBJQ0NSUFIoKQkoX0lDQ1JQUikNCisjZGVmaW5lIElDQ0hQSVIoKQkoX0lDQ0hQSVIpDQorI2Rl
ZmluZSBJQ0NJSURSKCkJKF9JQ0NJSURSKQ0KKw0KKyNkZWZpbmUgU0VDVVJFX0lOVEVSUlVQVAkw
DQorI2RlZmluZSBOT05TRUNVUkVfSU5URVJSVVBUCTENCisNCisjZGVmaW5lIFNHSSh4KQkJCSh4
KQ0KKyNkZWZpbmUgUFBJKHgpCQkJKHggKyAxNikNCisjZGVmaW5lIFNQSSh4KQkJCSh4ICsgMzIp
DQorDQorI2lmbmRlZiBfX0FTU0VNQkxZX18NCisNCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+DQor
DQorI2RlZmluZSBHSUNfRElTVFJJQlVUT1IoeCkgICAgICAoX2dpY19kaXN0cmlidXRvcl9iYXNl
ICsgeCkNCisjZGVmaW5lIEdJQ19DUFVfSU5URVJGQUNFKHgpICAgIChfZ2ljX2NwdV9iYXNlICsg
eCkNCisNCit2b2lkIGdpY19zZXRfY3B1KHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGludCBt
YXNrKTsNCit2b2lkIGdpY19zZXRfaXJxX3ByaW9yaXR5KHVuc2lnbmVkIGludCBpcnEsIHVuc2ln
bmVkIGludCBwcmlvcml0eSk7DQordm9pZCBnaWNfYWNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsN
Cit2b2lkIGdpY19tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsNCit2b2lkIGdpY191bm1hc2tf
aXJxKHVuc2lnbmVkIGludCBpcnEpOw0KK3ZvaWQgZ2ljX2VuZF9pcnEodW5zaWduZWQgaW50IGly
cSk7DQordm9pZCBnaWNfY2hhbmdlX2lycV9zdGF0ZSh1bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25l
ZCBpbnQgc3RhdGUpOw0KKw0KK2V4dGVybiB2b2lkICpfZ2ljX2NwdV9iYXNlW05SX0NQVVNdOw0K
K2V4dGVybiB2b2lkICpfZ2ljX2Rpc3RyaWJ1dG9yX2Jhc2U7DQorI2VuZGlmDQorI2VuZGlmDQpk
aWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oDQotLS0gYS94ZW4v
aW5jbHVkZS9hc20tYXJtL2lycS5oCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMA0KKysr
IGIveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDANCkBAIC0xNSw2ICsxNSw3IEBADQogDQogI2RlZmluZSBpcnFfY2ZnKGlycSkJCSgmaXJxX2Nm
Z1tpcnFdKQ0KICNkZWZpbmUgaXJxX3RvX2Rlc2MoaXJxKQkoJmlycV9kZXNjW2lycV0pCQ0KKyNk
ZWZpbmUgZGVzY190b19pcnEoZGVzYykJKChkZXNjIC0gJmlycV9kZXNjWzBdKSAvIHNpemVvZihz
dHJ1Y3QgaXJxX2Rlc2MpKTsNCiANCiAjZGVmaW5lIElSUV9NQVhfR1VFU1RTCQk3DQogdHlwZWRl
ZiBzdHJ1Y3Qgew0KQEAgLTQwLDggKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KICAgICBERUNM
QVJFX0JJVE1BUChfYml0cyxOUl9JUlFTKTsNCiB9IHZtYXNrX3Q7DQogDQotZXh0ZXJuIHN0cnVj
dCBpcnFfZGVzYyAqaXJxX2Rlc2M7DQotDQogc3RhdGljIGlubGluZSBpbnQgaXJxX2Rlc2NfaW5p
dGlhbGl6ZWQoc3RydWN0IGlycV9kZXNjICpkZXNjKQ0KIHsNCiAJcmV0dXJuIDA7DQpkaWZmIC1y
IDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2F2cC5oDQotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMA0KKysrIGIveGVuL2luY2x1ZGUvYXNt
LWFybS90ZWdyYS9hdnAuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDANCkBAIC0wLDAg
KzEsMTQ0IEBADQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgTlZJRElBIENvcnBvcmF0aW9u
Lg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoNCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCisgKiB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqDQorICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLA0KKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24NCisgKiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKg0KKyAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIE5WSURJQSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMNCisgKiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUNCisgKiB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUNCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUN
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SDQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTg0KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUNCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKg0KKyAqLw0KKw0KKyNpZm5k
ZWYgSU5DTFVERURfQVZQX0gNCisjZGVmaW5lIElOQ0xVREVEX0FWUF9IDQorDQorI2luY2x1ZGUg
ImFwMTUvYXJpY3Rsci5oIg0KKyNpbmNsdWRlICJhcDE1L2FydGltZXIuaCINCisvLyBGSVhNRTog
Z2V0IHRoZSBhcmFybWV2IGhlYWRlcg0KKw0KKy8vIDMgY29udHJvbGxlcnMgaW4gY29udGlndW91
cyBtZW1vcnkgc3RhcnRpbmcgYXQgSU5URVJSVVBUX0JBU0UsIGVhY2gNCisvLyBjb250cm9sbGVy
J3MgYXBlcnR1cmUgaXMgSU5URVJSVVBUX1NJWkUgbGFyZ2UNCisjZGVmaW5lIElOVEVSUlVQVF9C
QVNFIDB4NjAwMDQwMDANCisjZGVmaW5lIElOVEVSUlVQVF9TSVpFIDB4MTAwDQorI2RlZmluZSBJ
TlRFUlJVUFRfTlVNX0NPTlRST0xMRVJTIDMNCisNCisjZGVmaW5lIElOVEVSUlVQVF9QRU5ESU5H
KCBjdGxyICkgXA0KKyAgICAoSU5URVJSVVBUX0JBU0UgKyAoKGN0bHIpICogSU5URVJSVVBUX1NJ
WkUpICsgSUNUTFJfVklSUV9DT1BfMCkNCisNCisjZGVmaW5lIElOVEVSUlVQVF9TRVQoIGN0bHIg
KSBcDQorICAgIChJTlRFUlJVUFRfQkFTRSArICgoY3RscikgKiBJTlRFUlJVUFRfU0laRSkgKyBJ
Q1RMUl9DT1BfSUVSX1NFVF8wKQ0KKw0KKyNkZWZpbmUgSU5URVJSVVBUX0NMUiggY3RsciApIFwN
CisgICAgKElOVEVSUlVQVF9CQVNFICsgKChjdGxyKSAqIElOVEVSUlVQVF9TSVpFKSArIElDVExS
X0NPUF9JRVJfQ0xSXzApDQorDQorI2RlZmluZSBPU0NfQ1RSTCAgICAgICAgKCAweDYwMDA2MDAw
ICsgMHg1MCApDQorI2RlZmluZSBPU0NfRlJFUV9ERVQgICAgKCAweDYwMDA2MDAwICsgMHg1OCAp
DQorI2RlZmluZSBPU0NfREVUX1NUQVRVUyAgKCAweDYwMDA2MDAwICsgMHg1QyApDQorDQorI2Rl
ZmluZSBUSU1FUl9VU0VDICAgICAgKCAweDYwMDA1MDEwICkNCisjZGVmaW5lIFRJTUVSX0NGRyAg
ICAgICAoIDB4NjAwMDUwMTQgKQ0KKyNkZWZpbmUgVElNRVJfMF9CQVNFICAgICggMHg2MDAwNTAw
MCApDQorI2RlZmluZSBUSU1FUl8wICAgICAgICAgKCBUSU1FUl8wX0JBU0UgKyBUSU1FUl9UTVJf
UFRWXzAgKQ0KKyNkZWZpbmUgVElNRVJfMF9DTEVBUiAgICggVElNRVJfMF9CQVNFICsgVElNRVJf
VE1SX1BDUl8wICkNCisjZGVmaW5lIFRJTUVSXzFfQkFTRSAgICAoIDB4NjAwMDUwMDggKQ0KKyNk
ZWZpbmUgVElNRVJfMSAgICAgICAgICggVElNRVJfMV9CQVNFICsgVElNRVJfVE1SX1BUVl8wICkN
CisjZGVmaW5lIFRJTUVSXzFfQ0xFQVIgICAoIFRJTUVSXzFfQkFTRSArIFRJTUVSX1RNUl9QQ1Jf
MCApDQorDQorI2RlZmluZSBDTE9DS19SU1RfTE8gICAgKDB4NjAwMDYwMDQpDQorI2RlZmluZSBD
TE9DS19DVExSX0hJICAgKDB4NjAwMDYwMTQpDQorI2RlZmluZSBDTE9DS19DVExSX0xPICAgKDB4
NjAwMDYwMTApDQorDQorI2RlZmluZSBDQUNIRV9DVExSICAgICAgKDB4NjAwMEMwMDApDQorI2Rl
ZmluZSBDQUNIRV9DT05UUk9MXzAgICAgICAgICAoMHgwKQ0KKw0KKyNkZWZpbmUgUFBJX0lOVFJf
SURfVElNRVJfMCAgICAgKDApDQorI2RlZmluZSBQUElfSU5UUl9JRF9USU1FUl8xICAgICAoMSkN
CisjZGVmaW5lIFBQSV9JTlRSX0lEX1RJTUVSXzIgICAgICg5KQ0KKyNkZWZpbmUgUFBJX0lOVFJf
SURfVElNRVJfMyAgICAgKDEwKQ0KKw0KKy8qIGZsb3cgY29udHJvbGxlciAqLw0KKyNkZWZpbmUg
RkxPV19DT05UUk9MTEVSICAgICAoMHg2MDAwNzAwNCkNCisNCisvKiBleGNlcHRpb24gdmVjdG9y
cyAqLw0KKyNkZWZpbmUgVkVDVE9SX0JBU0UgICAgICAgICAgICAgKCAweDYwMDBGMjAwICkNCisj
ZGVmaW5lIFZFQ1RPUl9SRVNFVCAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyAwICkNCisjZGVm
aW5lIFZFQ1RPUl9VTkRFRiAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyA0ICkNCisjZGVmaW5l
IFZFQ1RPUl9TV0kgICAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyA4ICkNCisjZGVmaW5lIFZF
Q1RPUl9QUkVGRVRDSF9BQk9SVCAgICggVkVDVE9SX0JBU0UgKyAxMiApDQorI2RlZmluZSBWRUNU
T1JfREFUQV9BQk9SVCAgICAgICAoIFZFQ1RPUl9CQVNFICsgMTYgKQ0KKyNkZWZpbmUgVkVDVE9S
X0lSUSAgICAgICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDI0ICkNCisjZGVmaW5lIFZFQ1RPUl9G
SVEgICAgICAgICAgICAgICggVkVDVE9SX0JBU0UgKyAyOCApDQorDQorI2RlZmluZSBNT0RFX0RJ
U0FCTEVfSU5UUiAweGMwDQorI2RlZmluZSBNT0RFX1VTUiAweDEwDQorI2RlZmluZSBNT0RFX0ZJ
USAweDExDQorI2RlZmluZSBNT0RFX0lSUSAweDEyDQorI2RlZmluZSBNT0RFX1NWQyAweDEzDQor
I2RlZmluZSBNT0RFX0FCVCAweDE3DQorI2RlZmluZSBNT0RFX1VORCAweDFCDQorI2RlZmluZSBN
T0RFX1NZUyAweDFGDQorDQorI2RlZmluZSBBUDE1X0NBQ0hFX0xJTkVfU0laRSAgICAgICAgICAg
IDMyDQorDQorI2RlZmluZSBBUDE1X0FQQl9MMl9DQUNIRV9CQVNFIDB4NzAwMGU4MDAgDQorI2Rl
ZmluZSBBUDE1X0FQQl9DTEtfUlNUX0JBU0UgIDB4NjAwMDYwMDANCisjZGVmaW5lIEFQMTVfQVBC
X01JU0NfQkFTRSAgICAgMHg3MDAwMDAwMA0KKw0KKyNkZWZpbmUgQVAxMF9BUEJfQ0xLX1JTVF9C
QVNFICAweDYwMDA2MDAwDQorI2RlZmluZSBBUDEwX0FQQl9NSVNDX0JBU0UgICAgIDB4NzAwMDAw
MDANCisNCisjZGVmaW5lIE1NVV9UTEJfQkFTRSAgICAgICAgICAgICAgMHhmMDAwZjAwMA0KKyNk
ZWZpbmUgTU1VX1RMQl9DQUNIRV9XSU5ET1dfMCAgICAweDQwDQorI2RlZmluZSBNTVVfVExCX0NB
Q0hFX09QVElPTlNfMCAgIDB4NDQNCisNCisjZGVmaW5lIEFQMTVfUElOTVVYX0NGR19DVExfMCAg
IDB4NzAwMDAwMjQNCisjZGVmaW5lIEFQMTVfQVZQX0pUQUdfRU5BQkxFICAgIDB4QzANCisNCisj
ZGVmaW5lIFBNQ19TQ1JBVENIMjJfUkVHX0xQMCAgIDB4NzAwMGU0YTgNCisNCisjZGVmaW5lIEFW
UF9XRFRfUkVTRVQgICAweDJGMDBCQUQwDQorDQorLyogQ2FjaGVkIHRvIHVuY2FjaGVkIG9mZnNl
dCBmb3IgQVZQDQorICoNCisgKiBIYXJkd2FyZSBoYXMgdW5jYWNoZWQgcmVtYXAgYXBlcnR1cmUg
Zm9yIEFWUCBhcyBBVlAgZG9lc24ndCBoYXZlIE1NVQ0KKyAqIGJ1dCBzdGlsbCBoYXMgY2FjaGUg
KG5hbWVkIENPUCBjYWNoZSkuDQorICoNCisgKiBUaGlzIGFwZXJ0dXJlIG1vdmVkIGJldHdlZW4g
QVAxNSBhbmQgQVAyMC4NCisgKi8NCisjZGVmaW5lIEFQMTVfQ0FDSEVEX1RPX1VOQ0FDSEVEX09G
RlNFVCAweDkwMDAwMDAwDQorI2RlZmluZSBBUDIwX0NBQ0hFRF9UT19VTkNBQ0hFRF9PRkZTRVQg
MHg4MDAwMDAwMA0KKw0KKyNkZWZpbmUgQVBYWF9FWFRfTUVNX1NUQVJUICAgICAgMHgwMDAwMDAw
MA0KKyNkZWZpbmUgQVBYWF9FWFRfTUVNX0VORCAgICAgICAgMHg0MDAwMDAwMA0KKw0KKyNkZWZp
bmUgQVBYWF9NTUlPX1NUQVJUICAgICAgICAgMHg0MDAwMDAwMA0KKyNkZWZpbmUgQVBYWF9NTUlP
X0VORCAgICAgICAgICAgMHhGRkYwMDAwMA0KKw0KKyNkZWZpbmUgVFhYX0VYVF9NRU1fU1RBUlQg
ICAgICAgMHg4MDAwMDAwMA0KKyNkZWZpbmUgVFhYX0VYVF9NRU1fRU5EICAgICAgICAgMHhjMDAw
MDAwMA0KKw0KKyNkZWZpbmUgVFhYX01NSU9fU1RBUlQgICAgICAgICAgMHg0MDAwMDAwMA0KKyNk
ZWZpbmUgVFhYX01NSU9fRU5EICAgICAgICAgICAgMHg4MDAwMDAwMA0KKw0KKyNlbmRpZg0KZGlm
ZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS9jb25maWcuaA0KLS0t
IGEveGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS9jb25maWcuaAlTdW4gRmViIDEyIDEyOjI0OjIx
IDIwMTIgKzA5MDANCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvY29uZmlnLmgJU3Vu
IEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtMSwxMSArMSw2IEBADQogI2lmbmRlZiBf
X1RFR1JBX0NPTkZJR19IX18NCiAjZGVmaW5lIF9fVEVHUkFfQ09ORklHX0hfXw0KIA0KLSNkZWZp
bmUgSFoJMTAwDQotI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCTEwMDAwMDANCisjZGVmaW5lIE1B
WF9QSFlTX0NQVVMJMg0KIA0KLSNkZWZpbmUgTUFYX1BIWVNfQ1BVUwkJMg0KLQ0KLSNkZWZpbmUg
QlVJTFRJTl9DT01NQU5EX0xJTkVfU0laRSAyNTYNCi0jZGVmaW5lIEJVSUxUSU5fQ09NTUFORF9M
SU5FCSIiDQogI2VuZGlmDQpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20tYXJt
L3RlZ3JhL2lycXMuaA0KLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDANCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvaXJxcy5oCVN1biBGZWIgMTIgMTU6
MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTAsMCArMSw2MCBAQA0KKy8qDQorICogYXJjaC9hcm0vbWFj
aC10ZWdyYS9pbmNsdWRlL21hY2gvaXJxcy5oDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDks
IE5WSURJQSBDb3Jwb3JhdGlvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkNCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQNCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCisgKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yDQorICogbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcN
CisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLA0KKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4NCisgKi8NCisNCisjaWZuZGVmIF9fVEVHUkFf
SVJRU19IDQorI2RlZmluZSBfX1RFR1JBX0lSUVNfSA0KKw0KKyNkZWZpbmUgTlJfSVJRUwkJCTUx
Mg0KKw0KKyNkZWZpbmUgSU5UX1BSSV9CQVNFCQkzMg0KKyNkZWZpbmUgSU5UX1JUQwkJCShJTlRf
UFJJX0JBU0UgKyAyKQ0KKyNkZWZpbmUgSU5UX1VTQgkJCShJTlRfUFJJX0JBU0UgKyAyMCkNCisj
ZGVmaW5lIElOVF9VU0IyCQkoSU5UX1BSSV9CQVNFICsgMjEpDQorI2RlZmluZSBJTlRfQVBCX0RN
QQkJKElOVF9QUklfQkFTRSArIDI2KQ0KKw0KKyNkZWZpbmUgSU5UX1NFQ19CQVNFCQkoSU5UX1BS
SV9CQVNFICsgMzIpDQorI2RlZmluZSBJTlRfR1BJTzEJCShJTlRfU0VDX0JBU0UgKyAwKQ0KKyNk
ZWZpbmUgSU5UX0dQSU8yCQkoSU5UX1NFQ19CQVNFICsgMSkNCisjZGVmaW5lIElOVF9HUElPMwkJ
KElOVF9TRUNfQkFTRSArIDIpDQorI2RlZmluZSBJTlRfR1BJTzQJCShJTlRfU0VDX0JBU0UgKyAz
KQ0KKyNkZWZpbmUgSU5UX1RNUjMJCShJTlRfU0VDX0JBU0UgKyA5KQ0KKyNkZWZpbmUgSU5UX1RN
UjQJCShJTlRfU0VDX0JBU0UgKyAxMCkNCisjZGVmaW5lIElOVF9TWVNfU1RBVFNfTU9OCShJTlRf
U0VDX0JBU0UgKyAyMikNCisjZGVmaW5lIElOVF9HUElPNQkJKElOVF9TRUNfQkFTRSArIDIzKQ0K
Kw0KKyNkZWZpbmUgSU5UX1RSSV9CQVNFCQkoSU5UX1NFQ19CQVNFICsgMzIpDQorI2RlZmluZSBJ
TlRfS0JDCQkJKElOVF9UUklfQkFTRSArIDIxKQ0KKyNkZWZpbmUgSU5UX0VYVEVSTkFMX1BNVQko
SU5UX1RSSV9CQVNFICsgMjIpDQorI2RlZmluZSBJTlRfR1BJTzYJCShJTlRfVFJJX0JBU0UgKyAy
MykNCisjZGVmaW5lIElOVF9HUElPNwkJKElOVF9UUklfQkFTRSArIDI1KQ0KKw0KKyNkZWZpbmUg
SU5UX1FVQURfQkFTRQkJKElOVF9UUklfQkFTRSArIDMyKQ0KKyNkZWZpbmUgSU5UX1VTQjMJCShJ
TlRfUVVBRF9CQVNFICsgMSkNCisNCisjZGVmaW5lIElOVF9HUElPX0JBU0UJCShJTlRfUVVBRF9C
QVNFICsgMzIpDQorI2RlZmluZSBJTlRfR1BJT19OUgkJKDI4KjgpDQorDQorI2RlZmluZSBJTlRf
QVBCRE1BX0JBU0UJIAkoSU5UX0dQSU9fQkFTRSArIElOVF9HUElPX05SKQ0KKyNkZWZpbmUgSU5U
X0FQQkRNQV9OUgkJKDE2KQ0KKw0KKyNkZWZpbmUgSU5UX1NZU19OUgkoSU5UX0dQSU9fQkFTRSAt
IElOVF9QUklfQkFTRSkNCisjZGVmaW5lIElOVF9TWVNfU1oJKElOVF9TRUNfQkFTRSAtIElOVF9Q
UklfQkFTRSkNCisNCisjZW5kaWYNCmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vdGVncmEvc21wLmgNCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwDQorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL3NtcC5oCVN1biBGZWIgMTIg
MTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTAsMCArMSw3IEBADQorI2lmbmRlZiBBU01BUk1fQVJD
SF9TTVBfSA0KKyNkZWZpbmUgQVNNQVJNX0FSQ0hfU01QX0gNCisNCisNCisjaW5jbHVkZSA8YXNt
L2dpYy5oPg0KKw0KKyNlbmRpZg0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUvYXNt
LWFybS90ZWdyYS90ZWdyYS5oDQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMA0KKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS90ZWdyYS5oCVN1biBGZWIg
MTIgMTU6MDQ6MDYgMjAxMiArMDkwMA0KQEAgLTAsMCArMSw3NSBAQA0KKyNpZm5kZWYgX19URUdS
QTI1MF9IX18NCisjZGVmaW5lIF9fVEVHUkEyNTBfSF9fDQorDQorI2RlZmluZSBURUdSQV9BUk1f
Q1BVX0JBU0UJCTB4NTAwMDAwMDANCisjZGVmaW5lIFRFR1JBX1BQU0JfREVWSUNFX0JBU0UJCTB4
NjAwMDAwMDANCisjZGVmaW5lIFRFR1JBX0FQQl9ERVZJQ0VfQkFTRQkJMHg3MDAwMDAwMA0KKw0K
KyNkZWZpbmUgVEVHUkFfQVJNX1BFUklGX0JBU0UJCTB4NTAwNDAwMDANCisjZGVmaW5lIFRFR1JB
X0FSTV9QRVJJRl9TSVpFCQlTWl84Sw0KKw0KKyNkZWZpbmUgVEVHUkFfU0NVX0JBU0UJCQkweDUw
MDQwMDAwDQorI2RlZmluZSBURUdSQV9TQ1VfU0laRQkJCVNaXzI1Ng0KKw0KKyNkZWZpbmUgVEVH
UkFfR0lDX1BST0NfSUZfQkFTRQkJMHg1MDA0MDEwMA0KKyNkZWZpbmUgVEVHUkFfR0lDX1BST0Nf
SUZfU0laRQkJU1pfMjU2DQorDQorI2RlZmluZSBURUdSQV9BUk1fSU5UX0RJU1RfQkFTRQkJMHg1
MDA0MTAwMA0KKyNkZWZpbmUgVEVHUkFfQVJNX0lOVF9ESVNUX1NJWkUJCVNaXzRLDQorDQorI2Rl
ZmluZSBURUdSQV9QUklNQVJZX0lDVExSX0JBU0UJMHg2MDAwNDAwMA0KKyNkZWZpbmUgVEVHUkFf
UFJJTUFSWV9JQ1RMUl9TSVpFCVNaXzY0DQorDQorI2RlZmluZSBURUdSQV9TRUNPTkRBUllfSUNU
TFJfQkFTRQkweDYwMDA0MTAwDQorI2RlZmluZSBURUdSQV9TRUNPTkRBUllfSUNUTFJfU0laRQlT
Wl82NA0KKw0KKyNkZWZpbmUgVEVHUkFfVEVSVElBUllfSUNUTFJfQkFTRQkweDYwMDA0MjAwDQor
I2RlZmluZSBURUdSQV9URVJUSUFSWV9JQ1RMUl9TSVpFCVNaXzY0DQorDQorI2RlZmluZSBURUdS
QV9RVUFURVJOQVJZX0lDVExSX0JBU0UJMHg2MDAwNDMwMA0KKyNkZWZpbmUgVEVHUkFfUVVBVEVS
TkFSWV9JQ1RMUl9TSVpFCVNaXzY0DQorDQorI2RlZmluZSBURUdSQV9UTVIxX0JBU0UJCQkweDYw
MDA1MDAwDQorI2RlZmluZSBURUdSQV9UTVIxX1NJWkUJCQlTWl84DQorDQorI2RlZmluZSBURUdS
QV9UTVIyX0JBU0UJCQkweDYwMDA1MDA4DQorI2RlZmluZSBURUdSQV9UTVIyX1NJWkUJCQlTWl84
DQorDQorI2RlZmluZSBURUdSQV9UTVJVU19CQVNFCQkweDYwMDA1MDEwDQorI2RlZmluZSBURUdS
QV9UTVJVU19TSVpFCQlTWl82NA0KKw0KKyNkZWZpbmUgVEVHUkFfVE1SM19CQVNFCQkJMHg2MDAw
NTA1MA0KKyNkZWZpbmUgVEVHUkFfVE1SM19TSVpFCQkJU1pfOA0KKw0KKyNkZWZpbmUgVEVHUkFf
VE1SNF9CQVNFCQkJMHg2MDAwNTA1OA0KKyNkZWZpbmUgVEVHUkFfVE1SNF9TSVpFCQkJU1pfOA0K
Kw0KKyNkZWZpbmUgVEVHUkFfQ0xLX1JFU0VUX0JBU0UJCTB4NjAwMDYwMDANCisjZGVmaW5lIFRF
R1JBX0NMS19SRVNFVF9TSVpFCQlTWl80Sw0KKw0KKyNkZWZpbmUgVEVHUkFfRkxPV19DVFJMX0JB
U0UJCTB4NjAwMDcwMDANCisjZGVmaW5lIFRFR1JBX0ZMT1dfQ1RSTF9TSVpFCQkyMA0KKw0KKyNk
ZWZpbmUgVEVHUkFfR1BJT19CQVNFCQkJMHg2MDAwRDAwMA0KKyNkZWZpbmUgVEVHUkFfR1BJT19T
SVpFCQkJU1pfNEsNCisNCisjZGVmaW5lIFRFR1JBX0VYQ0VQVElPTl9WRUNUT1JTX0JBU0UgICAg
MHg2MDAwRjAwMA0KKyNkZWZpbmUgVEVHUkFfRVhDRVBUSU9OX1ZFQ1RPUlNfU0laRSAgICBTWl80
Sw0KKw0KKyNkZWZpbmUgSUNUTFJfQ1BVX0lFUl8wCQkJKDB4MjApDQorI2RlZmluZSBJQ1RMUl9D
UFVfSUVSX1NFVF8wCQkoMHgyNCkNCisjZGVmaW5lIElDVExSX0NQVV9JRVJfQ0xSXzAJCSgweDI4
KQ0KKyNkZWZpbmUgSUNUTFJfQ1BVX0lFUF9DTEFTU18wCQkoMHgyQykNCisjZGVmaW5lIElDVExS
X0NPUF9JRVJfMAkJCSgweDMwKQ0KKyNkZWZpbmUgSUNUTFJfQ09QX0lFUl9TRVRfMAkJKDB4MzQp
DQorI2RlZmluZSBJQ1RMUl9DT1BfSUVSX0NMUl8wCQkoMHgzOCkNCisjZGVmaW5lIElDVExSX0NP
UF9JRVBfQ0xBU1NfMAkJKDB4M0MpDQorDQorI2RlZmluZSBBUk1fUEVSSUZfQkFTRQkJCSgweDUw
MDQwMDAwKQ0KKw0KKy8vI2RlZmluZSBJT19BRERSRVNTKHgpCQkJKCgoKCh4KSAmIDB4NzAwMDAw
MDApID4+IDgpICsgKCgoeCkgJiAweDBGMDAwMDAwKSA+PiA0KSkgfCgoeCkgJiAweEZGRkZGKSB8
IDB4RkIwMDAwMDAgKQ0KKyNkZWZpbmUgSU9fQUREUkVTUyh4KQkJCSgoKCh4KSAmIDB4RjAwMDAw
MDApID4+IDgpIHwgKCh4KSAmIDB4RkZGRkYpIHwgKDB4RkIwMDAwMDAgKSkNCisjZGVmaW5lIElO
VF9QUElfQUREUkVTUyhfaW5zdCkJCSgweDYwMDA0MDAwICsgKDB4MTAwICogKF9pbnN0KSkpDQor
I2RlZmluZSBJTlRfQVBCRE1BX0FERFJFU1MJCSgweDYwMDBhMDAwKQ0KKw0KKyNlbmRpZg0KZGlm
ZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUveGVuL2lycS5oDQotLS0gYS94ZW4vaW5jbHVk
ZS94ZW4vaXJxLmgJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwDQorKysgYi94ZW4vaW5j
bHVkZS94ZW4vaXJxLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwDQpAQCAtOTUsNiAr
OTUsMTAgQEAgaW50IGFyY2hfaW5pdF9vbmVfaXJxX2Rlc2Moc3RydWN0IGlycV9kZQ0KIA0KICNk
ZWZpbmUgaXJxX2Rlc2NfaW5pdGlhbGl6ZWQoZGVzYykgKChkZXNjKS0+aGFuZGxlciAhPSBOVUxM
KQ0KIA0KKyNpZiBkZWZpbmVkKF9fYXJtX18pDQorZXh0ZXJuIGlycV9kZXNjX3QgaXJxX2Rlc2Nb
TlJfSVJRU107DQorI2VuZGlmDQorDQogI2lmIGRlZmluZWQoX19pYTY0X18pDQogZXh0ZXJuIGly
cV9kZXNjX3QgaXJxX2Rlc2NbTlJfVkVDVE9SU107DQogDQpAQCAtMTIxLDYgKzEyNSw4IEBAIGV4
dGVybiB2b2lkIGlycV9hY3Rvcl9ub25lKHN0cnVjdCBpcnFfZGUNCiAjZGVmaW5lIGlycV9zaHV0
ZG93bl9ub25lIGlycV9hY3Rvcl9ub25lDQogI2RlZmluZSBpcnFfZGlzYWJsZV9ub25lIGlycV9h
Y3Rvcl9ub25lDQogI2RlZmluZSBpcnFfZW5hYmxlX25vbmUgaXJxX2FjdG9yX25vbmUNCisjZGVm
aW5lIGlycV9hY2tfbm9uZQlpcnFfYWN0b3Jfbm9uZQ0KKyNkZWZpbmUgaXJxX2VuZF9ub25lCWly
cV9hY3Rvcl9ub25lDQogDQogc3RydWN0IGRvbWFpbjsNCiBzdHJ1Y3QgdmNwdTsNCg==


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: application/octet-stream;
 name="patch11.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="patch11.diff"


YXJtOiBhZGQgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgVGVncmEy
IGhhcm1vbnkgYm9hcmQuCgogeGVuL2FyY2gvYXJtL3RlZ3JhL01ha2VmaWxlICAgICAgICB8
ICAgIDMgKy0KIHhlbi9hcmNoL2FybS90ZWdyYS9lbnRyeS5TICAgICAgICAgfCAgIDMzICsr
KysrKysrCiB4ZW4vYXJjaC9hcm0vdGVncmEvdGVncmEyNTAuYyAgICAgIHwgIDMzMCArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3RlZ3JhL3RpbWVyLmMg
ICAgICAgICB8ICAxMTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h
cm0veGVuL2NwdS5jICAgICAgICAgICAgIHwgICAgNSArCiB4ZW4vYXJjaC9hcm0veGVuL2Zh
dWx0LmMgICAgICAgICAgIHwgICAgMSAtCiB4ZW4vYXJjaC9hcm0veGVuL2lycS5jICAgICAg
ICAgICAgIHwgICA0NiArKysrKysrKysrKy0KIHhlbi9hcmNoL2FybS94ZW4vbW0uYyAgICAg
ICAgICAgICAgfCAgIDI0ICsrKysrKwogeGVuL2FyY2gvYXJtL3hlbi9zZXR1cC5jICAgICAg
ICAgICB8ICAgIDYgKy0KIHhlbi9hcmNoL2FybS94ZW4vdGltZS5jICAgICAgICAgICAgfCAg
ICAxIC0KIHhlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jICAgICAgICAgfCAgICA0ICsKIHhl
bi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmggICAgICAgICAgfCAgMTAxICsrKysrKysrKysrKysr
KysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaXJxLmggICAgICAgICAgfCAgICAz
ICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2F2cC5oICAgIHwgIDE0NCArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVn
cmEvY29uZmlnLmggfCAgICA3ICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2lycXMu
aCAgIHwgICA2MCArKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEv
c21wLmggICAgfCAgICA3ICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvdGVncmEuaCAg
fCAgIDc1ICsrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL2lycS5oICAgICAg
ICAgICAgICB8ICAgIDYgKwogMTkgZmlsZXMgY2hhbmdlZCwgOTUyIGluc2VydGlvbnMoKyks
IDE0IGRlbGV0aW9ucygtKQoKU2lnbmVkLW9mZi1ieTogSmFlbWluIFJ5dSA8am03Ny5yeXVA
c2Ftc3VuZy5jb20+CgpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0vdGVncmEv
TWFrZWZpbGUKLS0tIGEveGVuL2FyY2gvYXJtL3RlZ3JhL01ha2VmaWxlCVN1biBGZWIgMTIg
MTI6MjQ6MjEgMjAxMiArMDkwMAorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvTWFrZWZpbGUJ
U3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwCkBAIC0xLDEgKzEsMiBAQAotb2JqLXkg
Kz0gZHVtbXkubworb2JqLXkgKz0gdGltZXIubyBlbnRyeS5vIHRlZ3JhMjUwLm8KKwpkaWZm
IC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0vdGVncmEvZW50cnkuUwotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0v
dGVncmEvZW50cnkuUwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIGVudHJ5LlMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggU2Ft
c3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgSmFlTWluIFJ5dSAgPGptNzcucnl1QHNh
bXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw
LCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2Nv
bmZpZy5oPiAKKyNpbmxjdWRlIDxhc20vYXJjaC9pcnFzLmg+CisjaW5jbHVkZSA8YXNtL3Bh
Z2UuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNy
b3MuaD4KKyNpbmNsdWRlIDxhc20vY3B1LWRvbWFpbi5oPgorI2luY2x1ZGUgPGFzbS9hc20t
b2Zmc2V0cy5oPgorCisJLmFsaWduCTUKKworRU5UUlkoYXJjaF9jb250ZXh0X3N3aXRjaCkK
Kwltb3YJcGMsIGxyCisKZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3RlZ3Jh
L3RlZ3JhMjUwLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2FyY2gvYXJtL3RlZ3JhL3RlZ3JhMjUwLmMJU3VuIEZlYiAxMiAxNTow
NDowNiAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzMwIEBACisvKgorICogdGVncmEyNTAuYwor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MgCisg
KiAgICAgICAgIEphZU1pbiBSeXUgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBT
ZWN1cmUgWGVuIG9uIEFSTSBhcmNoaXRlY3R1cmUgZGVzaWduZWQgYnkgU2FuZy1idW0gU3Vo
IGNvbnNpc3RzIG9mIAorICogWGVuIG9uIEFSTSBhbmQgdGhlIGFzc29jaWF0ZWQgYWNjZXNz
IGNvbnRyb2wuCisgKiAKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw
LCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2Nv
bmZpZy5oPgorI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi9saWIu
aD4KKyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cisj
aW5jbHVkZSA8eGVuL3NtcC5oPgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNpbmNsdWRlIDx4
ZW4vbW0uaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisjaW5jbHVkZSA8YXNtL3BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8YXNtL2dpYy5oPgorI2luY2x1ZGUgPGFzbS9yZWdzLmg+CisjaW5j
bHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2ZsdXNodGxiLmg+CisjaW5jbHVkZSA8
YXNtL2FyY2gvdGVncmEuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+CisKKyNkZWZp
bmUgVEVHUkEyNTBfTUVNT1JZX0JBU0UgICAgIDB4MDAwMDAwMDBVTAorI2RlZmluZSBURUdS
QTI1MF9NRU1PUllfU0laRSAgICAgMHg0MDAwMDAwMFVMCisKKyNkZWZpbmUgVEVHUkEyNTBf
REVWX0JBU0UgICAgICAgIDB4NTAwMDAwMDBVTAorI2RlZmluZSBURUdSQTI1MF9ERVZfU0la
RSAgICAgICAgMHgwMDMwMDAwMFVMCisKK0RFQ0xBUkVfTUVNT1JZX01BUCh0ZWdyYTI1MCkg
PSB7CisgICAgICAgIE1FTU1BUF9FTlRSWShURUdSQTI1MF9NRU1PUllfQkFTRSwgVEVHUkEy
NTBfTUVNT1JZX1NJWkUsIE1FTU9SWV9UWVBFX1JBTSwgTDFFX1RZUEVfSFlQRVJWSVNPUiks
CisgICAgICAgIE1FTU1BUF9FTlRSWShURUdSQTI1MF9ERVZfQkFTRSwgICAgVEVHUkEyNTBf
REVWX1NJWkUsICAgIE1FTU9SWV9UWVBFX0RFViwgTDFFX1RZUEVfREVWSUNFKQorfTsKKwor
Ly8gUmVnaXN0ZXIgQVBCRE1BX0lSUV9NQVNLX0NMUl8wCisjZGVmaW5lIEFQQkRNQV9JUlFf
U1RBX0NQVV8wCSgweDE0KQorI2RlZmluZSBBUEJETUFfSVJRX01BU0tfU0VUXzAJKDB4MjAp
CisjZGVmaW5lIEFQQkRNQV9JUlFfTUFTS19DTFJfMAkoMHgyNCkKKwordm9pZCAqdGVncmFf
Z2ljX2NwdV9iYXNlW01BWF9QSFlTX0NQVVNdICA9IHswLCAwfTsKK3ZvaWQgKnRlZ3JhX2dp
Y19kaXN0X2Jhc2UgPSAwOworCitzdHJ1Y3QgdGVncmFfaXJxX2N0cmwgeworCXVuc2lnbmVk
IGludCBpcnFfc3RhcnQ7CisJdm9pZCAgKnJlZzsKK307CisKK3N0YXRpYyBzdHJ1Y3QgdGVn
cmFfaXJxX2N0cmwgdGVncmFfaXJxX2N0cmxbKElOVF9TWVNfTlIgKyBJTlRfU1lTX1NaIC0g
MSkgLyBJTlRfU1lTX1NaXTsKKworI2RlZmluZSBnaWNfaXJxKGlycSkJKGlycSkKKworc3Rh
dGljIHZvaWQgdGVncmFfbWFzayhzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCit7CisJc3RydWN0
IHRlZ3JhX2lycV9jdHJsICpjaGlwOworCXVuc2lnbmVkIGludCBpcnEgPSBkZXNjX3RvX2ly
cShkZXNjKTsKKwl1bnNpZ25lZCBpbnQgbWFzayA9IDEgPDwgKGlycSAlIDMyKTsKKworCW1t
aW9fd3JpdGVsKG1hc2ssIHRlZ3JhX2dpY19kaXN0X2Jhc2UgKyBfSUNESUNFUiArIChnaWNf
aXJxKGlycSkgLyAzMikgKiA0KTsKKworCWlycSAtPSBJTlRfUFJJX0JBU0U7CisJY2hpcCA9
ICZ0ZWdyYV9pcnFfY3RybFtpcnEgLyBJTlRfU1lTX1NaXTsKKwltbWlvX3dyaXRlbCgxIDw8
IChpcnEgJiAzMSksIGNoaXAtPnJlZyArIElDVExSX0NQVV9JRVJfQ0xSXzApOworfQorCitz
dGF0aWMgdm9pZCB0ZWdyYV91bm1hc2soc3RydWN0IGlycV9kZXNjICpkZXNjKQoreworCXN0
cnVjdCB0ZWdyYV9pcnFfY3RybCAqY2hpcDsKKwl1bnNpZ25lZCBpbnQgaXJxID0gZGVzY190
b19pcnEoZGVzYyk7CisJdW5zaWduZWQgaW50IG1hc2sgPSAxIDw8IChpcnEgJSAzMik7CisK
KwltbWlvX3dyaXRlbChtYXNrLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElTRVIgKyAo
Z2ljX2lycShpcnEpIC8gMzIpICogNCk7CisKKwlpcnEgLT0gSU5UX1BSSV9CQVNFOworCWNo
aXAgPSAmdGVncmFfaXJxX2N0cmxbaXJxIC8gSU5UX1NZU19TWl07CisJbW1pb193cml0ZWwo
MSA8PCAoaXJxICYgMzEpLCBjaGlwLT5yZWcgKyBJQ1RMUl9DUFVfSUVSX1NFVF8wKTsKK30K
Kworc3RhdGljIHZvaWQgdGVncmFfYWNrKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKK3sKKwl1
bnNpZ25lZCBpbnQgaXJxID0gZGVzY190b19pcnEoZGVzYyk7CisJdW5zaWduZWQgaW50IG1h
c2sgPSAxIDw8IChpcnEgJSAzMik7CisJdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNz
b3JfaWQoKTsKKworCXRlZ3JhX21hc2soZGVzYyk7CisKKyAgICAgICAgbW1pb193cml0ZWwo
bWFzaywgdGVncmFfZ2ljX2Rpc3RfYmFzZSArIF9JQ0RJQ0VSICsgKGdpY19pcnEoaXJxKSAv
IDMyKSAqIDQpOworICAgICAgICBtbWlvX3dyaXRlbChnaWNfaXJxKGlycSksIHRlZ3JhX2dp
Y19jcHVfYmFzZVtjcHVdICsgX0lDQ0VPSVIpOworfQorCitzdGF0aWMgdm9pZCB0ZWdyYV9l
bmQoc3RydWN0IGlycV9kZXNjICpkZXNjKQoreworCXRlZ3JhX3VubWFzayhkZXNjKTsKK30K
KworaHdfaXJxX2NvbnRyb2xsZXIgdGVncmFfaXJxX2NvbnRyb2xsZXIgPSB7CisJLnR5cGVu
YW1lID0gImxldmVsIiwKKwkuc3RhcnR1cCAgPSB0ZWdyYV91bm1hc2ssCisJLnNodXRkb3du
ID0gdGVncmFfbWFzaywKKwkuZW5hYmxlCSAgPSB0ZWdyYV91bm1hc2ssCisJLmRpc2FibGUg
ID0gdGVncmFfbWFzaywKKwkuYWNrCSAgPSB0ZWdyYV9hY2ssCisJLmVuZAkgID0gdGVncmFf
ZW5kLAorfTsKKworc3RhdGljIHZvaWQgdGVncmEyNTBfaXJxX2luaXQoKQoreworCXVuc2ln
bmVkIGludCBtYXhfaXJxLCBpOworCXVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29y
X2lkKCk7CisJdW5zaWduZWQgbG9uZyBjcHVtYXNrID0gMSA8PCBjcHU7CisKKwlmb3IgKGkg
PSAwOyBpIDwgQVJSQVlfU0laRSh0ZWdyYV9pcnFfY3RybCk7IGkrKykgeworCQl0ZWdyYV9p
cnFfY3RybFtpXS5pcnFfc3RhcnQgPSBJTlRfUFJJX0JBU0UgKyBJTlRfU1lTX1NaICogaTsK
KwkJdGVncmFfaXJxX2N0cmxbaV0ucmVnID0gSU9fQUREUkVTUyhJTlRfUFBJX0FERFJFU1Mo
aSkpOworCQltbWlvX3dyaXRlbCgweEZGRkZGRkZGLCB0ZWdyYV9pcnFfY3RybFtpXS5yZWcg
KyBJQ1RMUl9DUFVfSUVSX0NMUl8wKTsKKwkJbW1pb193cml0ZWwoMHgwMDAwMDAwMCwgdGVn
cmFfaXJxX2N0cmxbaV0ucmVnICsgSUNUTFJfQ1BVX0lFUF9DTEFTU18wKTsKKwl9CisKKwlm
b3IgKGkgPSBJTlRfUFJJX0JBU0U7IGkgPCBJTlRfR1BJT19CQVNFOyBpKyspIHsKKwkJaXJx
X2Rlc2NbaV0uaGFuZGxlciA9ICZ0ZWdyYV9pcnFfY29udHJvbGxlcjsKKwl9CisKKwljcHVt
YXNrIHw9IGNwdW1hc2sgPDwgODsKKwljcHVtYXNrIHw9IGNwdW1hc2sgPDwgMTY7CisKKwl0
ZWdyYV9naWNfZGlzdF9iYXNlID0gSU9fQUREUkVTUyhURUdSQV9BUk1fSU5UX0RJU1RfQkFT
RSk7CisJdGVncmFfZ2ljX2NwdV9iYXNlW2NwdV0gPSBJT19BRERSRVNTKFRFR1JBX0dJQ19Q
Uk9DX0lGX0JBU0UpOworCisJbW1pb193cml0ZWwoMCwgdGVncmFfZ2ljX2Rpc3RfYmFzZSAr
IF9JQ0REQ1IpOworCQorICAgICAgICAvKgorICAgICAgICAgKiBGaW5kIG91dCBob3cgbWFu
eSBpbnRlcnJ1cHRzIGFyZSBzdXBwb3J0ZWQuCisgICAgICAgICAqLworICAgICAgICBtYXhf
aXJxID0gbW1pb19yZWFkbCh0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDVFIpICYgMHgx
ZjsKKyAgICAgICAgbWF4X2lycSA9IChtYXhfaXJxICsgMSkgKiAzMjsKKworICAgICAgICAv
KgorICAgICAgICAgKiBUaGUgR0lDIG9ubHkgc3VwcG9ydHMgdXAgdG8gMTAyMCBpbnRlcnJ1
cHQgc291cmNlcy4KKyAgICAgICAgICogTGltaXQgdGhpcyB0byBlaXRoZXIgdGhlIGFyY2hp
dGVjdGVkIG1heGltdW0sIG9yIHRoZQorICAgICAgICAgKiBwbGF0Zm9ybSBtYXhpbXVtLgor
ICAgICAgICAgKi8KKyAgICAgICAgaWYgKG1heF9pcnEgPiBtYXgoMTAyMCwgTlJfSVJRUykp
CisgICAgICAgICAgICAgICAgbWF4X2lycSA9IG1heCgxMDIwLCBOUl9JUlFTKTsKKworICAg
ICAgICAvKgorICAgICAgICAgKiBTZXQgYWxsIGdsb2JhbCBpbnRlcnJ1cHRzIHRvIGJlIGxl
dmVsIHRyaWdnZXJlZCwgYWN0aXZlIGxvdy4KKyAgICAgICAgICovCisgICAgICAgIGZvciAo
aSA9IDMyOyBpIDwgbWF4X2lycTsgaSArPSAxNikKKyAgICAgICAgICAgICAgICBtbWlvX3dy
aXRlbCgwLCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElDRlIgKyBpICogNCAvIDE2KTsK
KworICAgICAgICAvKgorICAgICAgICAgKiBTZXQgYWxsIGdsb2JhbCBpbnRlcnJ1cHRzIHRv
IHRoaXMgQ1BVIG9ubHkuCisgICAgICAgICAqLworICAgICAgICBmb3IgKGkgPSAzMjsgaSA8
IG1heF9pcnE7IGkgKz0gNCkKKyAgICAgICAgICAgICAgICBtbWlvX3dyaXRlbChjcHVtYXNr
LCB0ZWdyYV9naWNfZGlzdF9iYXNlICsgX0lDRElQVFIgKyBpICogNCAvIDQpOworICAgICAg
ICAvKgorICAgICAgICAgKiBTZXQgcHJpb3JpdHkgb24gYWxsIGludGVycnVwdHMuCisgICAg
ICAgICAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X2lycTsgaSArPSA0KQorICAg
ICAgICAgICAgICAgIG1taW9fd3JpdGVsKDB4YTBhMGEwYTAsIHRlZ3JhX2dpY19kaXN0X2Jh
c2UgKyBfSUNESVBSICsgaSAqIDQgLyA0KTsKKworICAgICAgICAvKgorICAgICAgICAgKiBE
aXNhYmxlIGFsbCBpbnRlcnJ1cHRzLgorICAgICAgICAgKi8KKyAgICAgICAgZm9yIChpID0g
MDsgaSA8IG1heF9pcnE7IGkgKz0gMzIpCisgICAgICAgICAgICAgICAgbW1pb193cml0ZWwo
MHhmZmZmZmZmZiwgdGVncmFfZ2ljX2Rpc3RfYmFzZSArIF9JQ0RJQ0VSICsgaSAqIDQgLyAz
Mik7CisKKyAgICAgICAgbW1pb193cml0ZWwoMSwgdGVncmFfZ2ljX2Rpc3RfYmFzZSArIF9J
Q0REQ1IpOworCisgICAgICAgIG1taW9fd3JpdGVsKDB4ZjAsIHRlZ3JhX2dpY19jcHVfYmFz
ZVtjcHVdICsgX0lDQ1BNUik7CisgICAgICAgIG1taW9fd3JpdGVsKDEsIHRlZ3JhX2dpY19j
cHVfYmFzZVtjcHVdICsgX0lDQ0lDUik7CisKKworfQorCisjZGVmaW5lIENMS19SU1RfQ09O
VFJPTExFUl9SU1RfQ1BVX0NNUExYX0NMUl8wICAoMHgzNDQpCisjZGVmaW5lIENMS19SU1Rf
Q09OVFJPTExFUl9DTEtfQ1BVX0NNUExYXzAgICAgICAoMHg0YykKKyNkZWZpbmUgQ1BVX0NM
S19TVE9QKGNwdSkgICAgICAgICAgICAgICAgICAgICAgICgweDE8PCg4K2NwdSkpCisjZGVm
aW5lIENQVV9SRVNFVChjcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMDExdWw8
PChjcHUpKQorCisjZGVmaW5lIEVWUF9DUFVfUkVTRVRfVkVDVE9SXzAgICAgICAgICAgCSgw
eDEwMCkKKyNkZWZpbmUgRkxPV19DVFJMX0hBTFRfQ1BVeF9FVkVOVFMoY3B1KSAJKChjcHUp
ID8gKChjcHUgLSAxKSAqIDB4OCArIDB4MTQpIDogMHgwKQorCisKK3ZvbGF0aWxlIGludCB0
ZWdyYTI1MF9jb3JlX21hcCA9IDE7CisKK2FzbSgKKyIudHlwZSB0ZWdyYTI1MF9zbGF2ZV9j
cHVfc3RhcnQsICNmdW5jdGlvbglcbiIKKyIuZ2xvYmFsIHRlZ3JhMjUwX3NsYXZlX2NwdV9z
dGFydAkJXG4iCisidGVncmEyNTBfc2xhdmVfY3B1X3N0YXJ0OgkJCVxuIgorIgltc3IJY3Bz
cl9jLCAjMHhEMwkJCVxuIgorIgltb3YJcjAsICMwCQkJCVxuIgorIgltY3IJcDE1LCAyLCBy
MCwgYzAsIGMwLCAwCQlcbiIKKyIJbXJjCXAxNSwgMSwgcjAsIGMwLCBjMCwgMAkJXG4iCisi
CWxkcglyMSwgPTB4N0ZGRgkJCVxuIgorIglhbmQJcjIsIHIxLCByMCwgbHNyICMxMwkJXG4i
CisiCWxkcglyMSwgPTB4M0ZGCQkJXG4iCisiCWFuZAlyMywgcjEsIHIwLCBsc3IgIzMJCVxu
IgorIglhZGQJcjIsIHIyLCAjMQkJCVxuIgorIglhbmQJcjAsIHIwLCAjMHgwNwkJCVxuIgor
IglhZGQJcjAsIHIwLCAjNAkJCVxuIgorIgljbHoJcjEsIHIzCQkJCVxuIgorIglhZGQJcjQs
IHIzLCAjMQkJCVxuIgorIjE6CXN1YglyMiwgcjIsICMxCQkJXG4iCisiCW1vdglyMywgcjQJ
CQkJXG4iCisiMjoJc3VicwlyMywgcjMsICMxCQkJXG4iCisiCW1vdglyNSwgcjMsIGxzbCBy
MQkJCVxuIgorIgltb3YJcjYsIHIyLCBsc2wgcjAJCQlcbiIKKyIJb3JyCXI1LCByNSwgcjYJ
CQlcbiIKKyIJbWNyCXAxNSwgMCwgcjUsIGM3LCBjNiwgMgkJXG4iCisiCWJndAkyYgkJCQlc
biIKKyIJY21wCXIyLCAjMAkJCQlcbiIKKyIJYmd0CTFiCQkJCVxuIgorIglkc2IJCQkJCVxu
IgorIglpc2IJCQkJCVxuIgorIgltcmMJcDE1LCAwLCByMCwgYzAsIGMwLCA1CQlcbiIKKyIJ
YW5kCXIwLCByMCwgIzE1CQkJXG4iCisiCWFkcglyNCwgMWYJCQkJXG4iCisiCWxkbWlhCXI0
LCB7cjUsIHI2fQkJCVxuIgorIglzdWIJcjQsIHI0LCByNQkJCVxuIgorIglhZGQJcjYsIHI2
LCByNAkJCVxuIgorIgltb3YJcjEsICMxCQkJCVxuIgorIglsc2wJcjEsIHIxLCByMAkJCVxu
IgorInNwaW46CWxkcglyNywgW3I2XQkJCVxuIgorIgl0c3QJcjcsIHIxCQkJCVxuIgorIgli
ZXEJc3BpbgkJCQlcbiIKKyIJYglzbGF2ZV9jcHVfc3RhcnQJCQlcbiIKKyIxOgkubG9uZwku
CQkJCVxuIgorIgkubG9uZwl0ZWdyYTI1MF9jb3JlX21hcAkJXG4iCispOworCitpbnQgd2Fr
ZXVwX2NwdSh1bnNpZ25lZCBpbnQgY3B1KQoreworCXRlZ3JhMjUwX2NvcmVfbWFwIHw9IDEg
PDwgIGNwdTsKKworCWNwdV9mbHVzaF9jYWNoZV9hbGwoKTsKKworCXJldHVybiAwOworfQor
CitleHRlcm4gdm9pZCB0ZWdyYTI1MF9zbGF2ZV9jcHVfc3RhcnQodm9pZCk7CisKK3N0YXRp
YyB2b2lkIHRlZ3JhMjUwX2V2cF9pbml0KHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyByLCBv
cmcsIGxvb3AsIGN0cmw7CisKKwkvKiBJbml0aWFsaXplIFNub29wIENvbnRyb2wgVW5pdCAq
LworCWN0cmwgPSBtbWlvX3JlYWRsKElPX0FERFJFU1MoVEVHUkFfU0NVX0JBU0UpICsgMHgw
KTsKKwljdHJsIHw9IDE7CisJbW1pb193cml0ZWwoY3RybCwgSU9fQUREUkVTUyhURUdSQV9T
Q1VfQkFTRSkgKyAweDApOworCisJb3JnID0gbW1pb19yZWFkbChJT19BRERSRVNTKFRFR1JB
X0VYQ0VQVElPTl9WRUNUT1JTX0JBU0UpICsgRVZQX0NQVV9SRVNFVF9WRUNUT1JfMCk7CisK
KwkvKiBTZXQgYm9vdCBlbnRyeSAqLworCW1taW9fd3JpdGVsKF9fcGEodGVncmEyNTBfc2xh
dmVfY3B1X3N0YXJ0KSwgSU9fQUREUkVTUyhURUdSQV9FWENFUFRJT05fVkVDVE9SU19CQVNF
KSArIEVWUF9DUFVfUkVTRVRfVkVDVE9SXzApOworCisJZHNiKCk7CisJaXNiKCk7CisKKwkv
KiBIYWx0IENQVSAqLworCW1taW9fd3JpdGVsKDAsIElPX0FERFJFU1MoVEVHUkFfRkxPV19D
VFJMX0JBU0UpICsgRkxPV19DVFJMX0hBTFRfQ1BVeF9FVkVOVFMoMSkpOworCisJZHNiKCk7
CisJaXNiKCk7CisKKwkvKiBDUFUgQ2xvY2sgU3RvcCAqLworCXIgPSBtbWlvX3JlYWRsKElP
X0FERFJFU1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpICsgQ0xLX1JTVF9DT05UUk9MTEVSX0NM
S19DUFVfQ01QTFhfMCk7CisJciAmPSB+Q1BVX0NMS19TVE9QKDEpOworCW1taW9fd3JpdGVs
KHIsIElPX0FERFJFU1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpICsgQ0xLX1JTVF9DT05UUk9M
TEVSX0NMS19DUFVfQ01QTFhfMCk7CisKKwlkc2IoKTsKKwlpc2IoKTsKKworCS8qIFJlc3Rh
cnQgU2xhdmUgQ1BVICovCisJbW1pb193cml0ZWwoQ1BVX1JFU0VUKDEpLCBJT19BRERSRVNT
KFRFR1JBX0NMS19SRVNFVF9CQVNFKSArIENMS19SU1RfQ09OVFJPTExFUl9SU1RfQ1BVX0NN
UExYX0NMUl8wKTsKKworCWRzYigpOworCWlzYigpOworCisgICAgICAgIC8qIFdhaXQgdXRp
bCB0aGUgcG93ZXIgdW5pdCBpcyBpbiBzdGFibGUgKi8KKyAgICAgICAgbG9vcCA9IDEwMDAw
OworICAgICAgICB3aGlsZSgoLS1sb29wKSA+IDAgKTsKK30KKwordm9pZCB0ZWdyYTI1MF9p
b3JlbWFwKHZvaWQpCit7CisJbWFwX3BhZ2VzX3RvX3hlbihJT19BRERSRVNTKFRFR1JBX0FS
TV9DUFVfQkFTRSksCisJCVRFR1JBX0FSTV9DUFVfQkFTRSA+PiBQQUdFX1NISUZULCAweDEw
MDAwMCA+PiBQQUdFX1NISUZULAorCQlMMUVfVFlQRV9ERVZJQ0UpOworCisJbWFwX3BhZ2Vz
X3RvX3hlbihJT19BRERSRVNTKFRFR1JBX1BQU0JfREVWSUNFX0JBU0UpLAorCQlURUdSQV9Q
UFNCX0RFVklDRV9CQVNFID4+IFBBR0VfU0hJRlQsIDB4MTAwMDAwID4+IFBBR0VfU0hJRlQs
IAorCQlMMUVfVFlQRV9ERVZJQ0UpOworCisJbWFwX3BhZ2VzX3RvX3hlbihJT19BRERSRVNT
KFRFR1JBX0FQQl9ERVZJQ0VfQkFTRSksCisJCVRFR1JBX0FQQl9ERVZJQ0VfQkFTRSA+PiBQ
QUdFX1NISUZULCAweDEwMDAwMCA+PiBQQUdFX1NISUZULAorCQlMMUVfVFlQRV9ERVZJQ0Up
OworfQorCitpbnQgbWFjaGluZV9zZXR1cCh2b2lkKQoreworCWNwdV90b3BvbG9neV9pbml0
KDIpOworCisJdGVncmEyNTBfaW9yZW1hcCgpOworCisJdGVncmEyNTBfZXZwX2luaXQoKTsK
KworCXRlZ3JhMjUwX2lycV9pbml0KCk7CisKKwl0ZWdyYTI1MF90aW1lcl9pbml0KCk7CisK
KwlyZXR1cm4gMDsKK30KKwpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0vdGVn
cmEvdGltZXIuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAw
MAorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvdGltZXIuYwlTdW4gRmViIDEyIDE1OjA0OjA2
IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLXRl
Z3JhL3RpbWVyLmMKKyAqCisgKiBUaW1lciBhbmQgY2xvY2sgZXZlbnQgc3VwcG9ydCBmb3Ig
TlZJRElBIFRlZ3JhIFNvQ3MKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSwgTlZJ
RElBIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg
b3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL2lycS5oPgorI2lu
Y2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KKyNpbmNsdWRl
IDx4ZW4vc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxhc20vdGltZS5oPgorI2luY2x1ZGUgPGFz
bS9hcmNoL2lycXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC90ZWdyYS5oPgorCisKKyNkZWZp
bmUgQ0xLX1JTVF9DT05UUk9MTEVSX09TQ19DVFJMXzAJMHg1MAorCisjZGVmaW5lIFRJTUVS
MV9PRkZTCQkJMHgwMCAgLyogcmVzZXJ2ZWQgZm9yIEFWUCAqLworI2RlZmluZSBUSU1FUjJf
T0ZGUwkJCTB4MDggIC8qIHJlc2VydmVkIGZvciBBVlAgKi8KKyNkZWZpbmUgVElNRVIzX09G
RlMJCQkweDUwICAvKiB1c2VkIGFzIE9TIENQVSBldmVudCB0aW1lciAqLworI2RlZmluZSBU
SU1FUjRfT0ZGUwkJCTB4NTggIC8qIHJlc2VydmVkIGFzIExQMiB3YWtldXAgdHJpZ2dlciAq
LworCisjZGVmaW5lIFRJTUVSX1RNUl9QVFZfMAkJCTB4MAorI2RlZmluZSBUSU1FUl9UTVJf
UENSXzAJCQkweDQKKworI2RlZmluZSBUSU1FUlVTX09GRlMJCQkweDEwCisjZGVmaW5lIFRJ
TUVSVVNfQ05UUl8xVVNfMAkJMHgwCisjZGVmaW5lIFRJTUVSVVNfVVNFQ19DRkdfMAkJMHg0
CisKKyNkZWZpbmUgTlNFQ19QRVJfU0VDCQkJMTAwMDAwMDAwMEwKKwordm9pZCB0ZWdyYV9j
bG9ja2V2ZW50X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBjcHVf
dXNlcl9yZWdzICpyZWdzKQoreworICAgICAgICBtbWlvX3dyaXRlbCgxIDw8IDMwLCBJT19B
RERSRVNTKFRFR1JBX1RNUjFfQkFTRSArIFRJTUVSM19PRkZTKSArIFRJTUVSX1RNUl9QQ1Jf
MCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIHRlZ3JhX2Nsb2NrZXZlbnRfaXJx
ID0geworICAgICAgICAubmFtZSAgICAgICAgICAgPSAiVGltZXJfZXZlbnQiLAorICAgICAg
ICAuaGFuZGxlciAgICAgICAgPSB0ZWdyYV9jbG9ja2V2ZW50X2ludGVycnVwdCwKK307CisK
K3ZvaWQgdGVncmFfbHAyd2FrZV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBz
dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICAgICAgbW1pb193cml0ZWwoMTw8
MzAsIElPX0FERFJFU1MoVEVHUkFfVE1SMV9CQVNFICsgVElNRVI0X09GRlMpICsgVElNRVJf
VE1SX1BDUl8wKTsKK30KKworc3RhdGljIHN0cnVjdCBpcnFhY3Rpb24gdGVncmFfbHAyd2Fr
ZV9pcnEgPSB7CisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJ0aW1lcl9scDJ3YWtlIiwK
KyAgICAgICAgLmhhbmRsZXIgICAgICAgID0gdGVncmFfbHAyd2FrZV9pbnRlcnJ1cHQsCit9
OworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBtZWFzdXJlX2lucHV0X2ZyZXEodW5zaWduZWQg
aW50ICptLCB1bnNpZ25lZCBpbnQgKm4pCit7CisJdm9pZCAqY2xrX3JzdCA9IElPX0FERFJF
U1MoVEVHUkFfQ0xLX1JFU0VUX0JBU0UpOworCXVuc2lnbmVkIGxvbmcgb3NjID0gbW1pb19y
ZWFkbChjbGtfcnN0ICsgQ0xLX1JTVF9DT05UUk9MTEVSX09TQ19DVFJMXzApOworCW9zYyA+
Pj0gMzA7CisKKwlzd2l0Y2ggKG9zYykgeworCQljYXNlIDA6IGlmIChtICYmIG4pIHsgKm09
MTsgKm49MTM7IH0gcmV0dXJuIDEzMDAwOworCQljYXNlIDE6IGlmIChtICYmIG4pIHsgKm09
NTsgKm49OTY7IH0gcmV0dXJuIDE5MjAwOworCQljYXNlIDI6IGlmIChtICYmIG4pIHsgKm09
MTsgKm49MTI7IH0gcmV0dXJuIDEyMDAwOworCQljYXNlIDM6IGlmIChtICYmIG4pIHsgKm09
MTsgKm49MjY7IH0gcmV0dXJuIDI2MDAwOworCX0KKworCXJldHVybiAwOworfQorCit2b2lk
IHRlZ3JhMjUwX3RpbWVyX2luaXQodm9pZCkKK3sKKyAgICAgICAgdm9pZCAqdG1yOworICAg
ICAgICB1bnNpZ25lZCBpbnQgbSwgbjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB2YWw7Cisg
ICAgICAgIHUzMiByZWc7CisKKyAgICAgICAgdG1yID0gSU9fQUREUkVTUyhURUdSQV9UTVIx
X0JBU0UgKyBUSU1FUlVTX09GRlMpOworICAgICAgICB2YWwgPSBtZWFzdXJlX2lucHV0X2Zy
ZXEoJm0sICZuKTsKKworICAgICAgICB2YWwgPSAoKG0tMSk8PDgpIHwgKG4tMSk7CisKKyAg
ICAgICAgbW1pb193cml0ZWwodmFsLCB0bXIgKyBUSU1FUlVTX1VTRUNfQ0ZHXzApOworICAg
ICAgICBtbWlvX3dyaXRlbCgwLCBJT19BRERSRVNTKFRFR1JBX1RNUjFfQkFTRSArIFRJTUVS
M19PRkZTKSAgKyBUSU1FUl9UTVJfUFRWXzApOworCisgICAgICAgIHJlZyA9IDB4YzAwMDI3
MGY7CisgICAgICAgIG1taW9fd3JpdGVsKHJlZywgSU9fQUREUkVTUyhURUdSQV9UTVIxX0JB
U0UgKyBUSU1FUjNfT0ZGUykgKyBUSU1FUl9UTVJfUFRWXzApOworCisgICAgICAgIGlmIChz
ZXR1cF9pcnEoSU5UX1RNUjMsICZ0ZWdyYV9jbG9ja2V2ZW50X2lycSkpIHsKKyAgICAgICAg
ICAgICAgICBCVUcoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2V0dXBfaXJxKElOVF9U
TVI0LCAmdGVncmFfbHAyd2FrZV9pcnEpKSB7CisgICAgICAgICAgICAgICAgQlVHKCk7Cisg
ICAgICAgIH0KK30KKwpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0veGVuL2Nw
dS5jCi0tLSBhL3hlbi9hcmNoL2FybS94ZW4vY3B1LmMJU3VuIEZlYiAxMiAxMjoyNDoyMSAy
MDEyICswOTAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vY3B1LmMJU3VuIEZlYiAxMiAxNTow
NDowNiAyMDEyICswOTAwCkBAIC01Myw2ICs1MywxMSBAQCBpbnQgX19jcHVfdXAodW5zaWdu
ZWQgaW50IGNwdSkKIHsKIAlpbnQgcmV0ID0gMDsKIAorCXJldCA9IHdha2V1cF9jcHUoY3B1
KTsKKwlpZiAoIXJldCkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKIAl3aGlsZSghY3B1
X29ubGluZShjcHUpKSB7CiAJCWNwdV9yZWxheCgpOwogCQlwcm9jZXNzX3BlbmRpbmdfc29m
dGlycXMoKTsKZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3hlbi9mYXVsdC5j
Ci0tLSBhL3hlbi9hcmNoL2FybS94ZW4vZmF1bHQuYwlTdW4gRmViIDEyIDEyOjI0OjIxIDIw
MTIgKzA5MDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9mYXVsdC5jCVN1biBGZWIgMTIgMTU6
MDQ6MDYgMjAxMiArMDkwMApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPGFzbS9wcm9j
ZXNzb3IuaD4NCiAjaW5jbHVkZSA8YXNtL2d1ZXN0X2FjY2Vzcy5oPg0KICNpbmNsdWRlIDxh
c20vc3lzdGVtLmg+DQotI2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4NCiANCiBhc21saW5rYWdl
IHZvaWQgX19kaXYwKHZvaWQpDQogew0KZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVuL2FyY2gv
YXJtL3hlbi9pcnEuYwotLS0gYS94ZW4vYXJjaC9hcm0veGVuL2lycS5jCVN1biBGZWIgMTIg
MTI6MjQ6MjEgMjAxMiArMDkwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2lycS5jCVN1biBG
ZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMApAQCAtMzgsOSArMzgsMjcgQEAgaHdfaXJxX2Nv
bnRyb2xsZXIgbm9faXJxX3R5cGUgPSB7CiAJLnNodXRkb3duID0gaXJxX3NodXRkb3duX25v
bmUsCiAJLmVuYWJsZSAgID0gaXJxX2VuYWJsZV9ub25lLAogCS5kaXNhYmxlICA9IGlycV9k
aXNhYmxlX25vbmUsCisJLmVuZAkgID0gaXJxX2VuZF9ub25lLAorCS5hY2sJICA9IGlycV9h
Y2tfbm9uZSwKIH07CiAKLXN0cnVjdCBpcnFfZGVzYyAqaXJxX2Rlc2M7CisvL3N0cnVjdCBp
cnFfZGVzYyAqaXJxX2Rlc2M7CisKK2lycV9kZXNjX3QgaXJxX2Rlc2NbTlJfSVJRU10gPSB7
CisgICAgICAgIFswIC4uLiBOUl9JUlFTIC0gMV0gPSB7CisgICAgICAgICAgICAgICAgLnN0
YXR1cyA9IElSUV9ESVNBQkxFRCwKKyAgICAgICAgICAgICAgICAuaGFuZGxlciA9ICZub19p
cnFfdHlwZSwKKyAgICAgICAgICAgICAgICAuYWN0aW9uID0gTlVMTCwKKyAgICAgICAgICAg
ICAgICAubG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRAorICAgICAgICB9Cit9OworCitzdHJ1
Y3QgaXJxX2NmZyBpcnFfY2ZnW05SX0lSUVNdID0geworICAgICAgICBbMCAuLi4gTlJfSVJR
UyAtIDFdID17CisgICAgICAgICAgICAgICAgLmlycSA9IDAKKyAgICAgICAgfQorfTsKKwog
CiBpbnQgcGlycV9ndWVzdF91bm1hc2soc3RydWN0IGRvbWFpbiAqZCkKIHsKQEAgLTc1LDYg
KzkzLDMyIEBAIHN0cnVjdCBwaXJxICphbGxvY19waXJxX3N0cnVjdChzdHJ1Y3QgZG8KIAly
ZXR1cm4gTlVMTDsKIH0KIAoraW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1
Y3QgaXJxYWN0aW9uICpuZXcpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3Qg
aXJxX2Rlc2MgKmRlc2M7CisKKwlpZihpcnEgPj0gTlJfSVJRUykgeworCQlwcmludGsoIkJB
RCBJUlEgPSAlZFxuIiwgaXJxKTsKKwl9CisKKwlkZXNjID0gaXJxX3RvX2Rlc2MoaXJxKTsK
KworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXNjLT5sb2NrLCBmbGFncyk7CisJZGVzYy0+YWN0
aW9uID0gbmV3OworCWlmIChkZXNjLT5oYW5kbGVyKSB7CisJCWlmIChkZXNjLT5oYW5kbGVy
LT5zdGFydHVwKSB7CisJCQlkZXNjLT5oYW5kbGVyLT5zdGFydHVwKGRlc2MpOworCQl9IGVs
c2UgaWYoZGVzYy0+aGFuZGxlci0+ZW5hYmxlKSB7CisJCQlkZXNjLT5oYW5kbGVyLT5lbmFi
bGUoZGVzYyk7CisJCX0KKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXNjLT5s
b2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGFyY2hfaW5pdF9vbmVfaXJx
X2Rlc2Moc3RydWN0IGlycV9kZXNjICpkZXNjKQogewogCU5PVF9ZRVQoKTsKZGlmZiAtciA2
YWY4YTg5Yzk5Y2QgeGVuL2FyY2gvYXJtL3hlbi9tbS5jCi0tLSBhL3hlbi9hcmNoL2FybS94
ZW4vbW0uYwlTdW4gRmViIDEyIDEyOjI0OjIxIDIwMTIgKzA5MDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9tbS5jCVN1biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMApAQCAtMjU1LDMg
KzI1NSwyNyBAQCBpbnQgYWxsb2NfcGFnZV9tYXAodW5zaWduZWQgbG9uZyB2aXJ0LCB1CiAJ
cmV0dXJuIDA7CiB9CiAKK2ludCBtYXBfcGFnZXNfdG9feGVuKHVuc2lnbmVkIGxvbmcgdmly
dCwgdW5zaWduZWQgbG9uZyBtZm4sIGludCBuciwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sK
KyAgICAgICAgdW5zaWduZWQgbG9uZyB2YWRkciA9IHJvdW5kX2Rvd24odmlydCwgUEFHRV9T
SVpFKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtYWRkciA9IG1mbiA8PCBQQUdFX1NISUZU
OworICAgICAgICB1bnNpZ25lZCBpbnQgZW5kID0gdmlydCArIChuciA8PCBQQUdFX1NISUZU
KTsKKworICAgICAgICBsMWVfdCAqbDFlID0gbDFfbGluZWFyX29mZnNldF94ZW4odmFkZHIp
OworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxpbWl0
ID0gKHZhZGRyICsgU0VDVElPTl9TSVpFKSAmIChTRUNUSU9OX01BU0spOworICAgICAgICAg
ICAgICAgIGxpbWl0ID0gKGxpbWl0IDwgZW5kKSA/IGxpbWl0IDogZW5kOworCisgICAgICAg
ICAgICAgICAgaWYgKCgodmFkZHIgfCBtYWRkciB8IGxpbWl0KSAmIH5TRUNUSU9OX01BU0sp
ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpsMWUgPSBNS19MMUUobWFkZHIs
IGZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB0ZV9zeW5jKGwxZSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhZGRyICs9IFNFQ1RJT05fU0laRTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1hZGRyICs9IFNFQ1RJT05fU0laRTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgIH0gd2hpbGUobDFlKyssIHZhZGRyIDwgZW5kKTsKKworICAgICAgICBy
ZXR1cm4gMDsKK30KKwpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vYXJjaC9hcm0veGVuL3Nl
dHVwLmMKLS0tIGEveGVuL2FyY2gvYXJtL3hlbi9zZXR1cC5jCVN1biBGZWIgMTIgMTI6MjQ6
MjEgMjAxMiArMDkwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL3NldHVwLmMJU3VuIEZlYiAx
MiAxNTowNDowNiAyMDEyICswOTAwCkBAIC02NCwxMSArNjQsMTEgQEAgc3RhdGljIHVuc2ln
bmVkIGludCBkb20wX3NpemUgPSAyNTYgKiAxMAogaW50ZWdlcl9wYXJhbSgiZG9tMF9zaXpl
IiwgZG9tMF9zaXplKTsKIAogLy9zdGF0aWMgdW5zaWduZWQgbG9uZyBkb20wX2ltYWdlX3N0
YXJ0ID0gMHg0MEIwMDAwMFVMOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZG9tMF9pbWFnZV9z
dGFydCA9IDB4MDBCMDAwMDBVTDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRvbTBfaW1hZ2Vf
c3RhcnQgPSAweEEwMDAwMFVMOwogaW50ZWdlcl9wYXJhbSgiaW1hZ2Vfc3RhcnQiLCBkb20w
X2ltYWdlX3N0YXJ0KTsKIAogLy9zdGF0aWMgdW5zaWduZWQgbG9uZyBkb20wX2ltYWdlX3Np
emUgPSAweEEwMDAwMFVMOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZG9tMF9pbWFnZV9zaXpl
ID0gMHhBMDAwMDBVTDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRvbTBfaW1hZ2Vfc2l6ZSA9
IDB4MTQwMDAwMFVMOwogaW50ZWdlcl9wYXJhbSgiaW1hZ2VfbGVuZ3RoIiwgZG9tMF9pbWFn
ZV9zaXplKTsKIAogdm9pZCBhcmNoX2dldF94ZW5fY2Fwcyh4ZW5fY2FwYWJpbGl0aWVzX2lu
Zm9fdCAqaW5mbykKQEAgLTIxMSw2ICsyMTEsOCBAQCBhc21saW5rYWdlIHZvaWQgc3RhcnRf
eGVuKHZvaWQpCiAKIAl0YXNrbGV0X3N1YnN5c19pbml0KCk7CiAKKwltYWNoaW5lX3NldHVw
KCk7CisKIAl0aW1lcl9pbml0KCk7CiAKIAlpZGxlX2RvbWFpbl9pbml0KCk7CmRpZmYgLXIg
NmFmOGE4OWM5OWNkIHhlbi9hcmNoL2FybS94ZW4vdGltZS5jCi0tLSBhL3hlbi9hcmNoL2Fy
bS94ZW4vdGltZS5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkwMAorKysgYi94ZW4v
YXJjaC9hcm0veGVuL3RpbWUuYwlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAg
LTc5LDUgKzc5LDQgQEAgdm9pZCBkb21haW5fc2V0X3RpbWVfb2Zmc2V0KHN0cnVjdCBkb21h
aQogCiB2b2lkIHRpbWVrZWVwaW5nX2luaXQodm9pZCkKIHsKLQlOT1RfWUVUKCk7CiB9CmRp
ZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jCi0tLSBhL3hl
bi9kcml2ZXJzL2NoYXIvY29uc29sZS5jCVN1biBGZWIgMTIgMTI6MjQ6MjEgMjAxMiArMDkw
MAorKysgYi94ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYwlTdW4gRmViIDEyIDE1OjA0OjA2
IDIwMTIgKzA5MDAKQEAgLTQxMiw3ICs0MTIsMTEgQEAgbG9uZyBkb19jb25zb2xlX2lvKGlu
dCBjbWQsIGludCBjb3VudCwgWAogICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICAqLwogCisjaWYgZGVmaW5lZChfX2FybV9fKQor
c3RhdGljIGJvb2xfdCBjb25zb2xlX2xvY2tzX2J1c3RlZCA9IDE7CisjZWxzZQogc3RhdGlj
IGJvb2xfdCBjb25zb2xlX2xvY2tzX2J1c3RlZDsKKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBf
X3B1dHN0cihjb25zdCBjaGFyICpzdHIpCiB7CmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9p
bmNsdWRlL2FzbS1hcm0vZ2ljLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaAlTdW4gRmViIDEy
IDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBnaWMuaAor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAg
ICAgICBKYWVtaW4gUnl1ICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcg
IFVTQQorICovCisKKyNpZm5kZWYgX19BUk1fR0lDX0hfXworI2RlZmluZSBfX0FSTV9HSUNf
SF9fCisKKworLyogRGlzdHJpYnV0b3IgUmVnaXN0ZXIgTWFwICovCisjZGVmaW5lIF9JQ0RE
Q1IJCTB4MDAwICAvKiBEaXN0cmlidXRvciBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5l
IF9JQ0RJQ1RSCTB4MDA0ICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBUeXBlIFJlZ2lzdGVy
ICovCisjZGVmaW5lIF9JQ0RJSURSCTB4MDA4ICAvKiBEaXN0cmlidXRvciBJbXBsZW1lbnRl
ciBJZCBSZWdpc3RlciAqLworI2RlZmluZSBfSUNESVNSMAkweDA4MCAgLyogSW50ZXJydXB0
IFNlY3VyaXR5IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RJU1IxCTB4MDg0ICAvKiBJbnRl
cnJ1cHQgU2VjdXJpdHkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDRElTUjIJMHgwODggIC8q
IEludGVycnVwdCBTZWN1cml0eSBSZWdpc3RlciAqLworI2RlZmluZSBfSUNESVNSMwkweDA4
YyAgLyogSW50ZXJydXB0IFNlY3VyaXR5IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RJU1I0
CTB4MDkwICAvKiBJbnRlcnJ1cHQgU2VjdXJpdHkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lD
RElTRVIJMHgxMDAgIC8qIEludGVycnVwdCBTZXQtRW5hYmxlIFJlZ2lzdGVyICovCisjZGVm
aW5lIF9JQ0RJQ0VSCTB4MTgwICAvKiBJbnRlcnJ1cHQgQ2xlYXItRW5hYmxlIFJlZ2lzdGVy
ICovCisjZGVmaW5lIF9JQ0RJU1BSCTB4MjAwICAvKiBJbnRlcnJ1cHQgU2V0LVBlbmRpbmcg
UmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDRElDUFIJMHgyODAgIC8qIEludGVycnVwdCBDbGVh
ci1QZW5kaW5nIFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RBQlIJCTB4MzAwICAvKiBBY3Rp
dmUgQml0IFJlZ2lzdGVycyAqLworI2RlZmluZSBfSUNESVBSCQkweDQwMCAgLyogSW50ZXJy
dXB0IFByaW9yaXR5IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0RJUFRSCTB4ODAwICAvKiBJ
bnRlcnJ1cHQgUHJvY2Vzc29yIFRhcmdldHMgUmVnaXN0ZXJzICovCisjZGVmaW5lIF9JQ0RJ
Q0ZSCTB4QzAwICAvKiBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8KKyNk
ZWZpbmUgX0lDRFNHSVIJMHhGMDAgIC8qIFNvZnR3YXJlIEdlbmVyYXRlZCBJbnRlcnJ1cHQg
UmVnaXN0ZXIgKi8KKworI2RlZmluZSBJQ0REQ1IoKQkoX0lDRERDUikKKyNkZWZpbmUgSUNE
SUNUUigpCShfSUNESUNUUikKKyNkZWZpbmUgSUNESVNSKHgpCShfSUNESVNSMCArICh4IC8g
QklUU19QRVJfTE9ORykgKiBCWVRFU19QRVJfTE9ORykKKyNkZWZpbmUgSUNESVNFUih4KQko
X0lDRElTRVIgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xPTkcpCisjZGVm
aW5lIElDRElDRVIoeCkJKF9JQ0RJQ0VSICsgKHggLyBCSVRTX1BFUl9MT05HKSAqIEJZVEVT
X1BFUl9MT05HKQorI2RlZmluZSBJQ0RJU1BSKHgpCShfSUNESVNQUiArICh4IC8gQklUU19Q
RVJfTE9ORykgKiBCWVRFU19QRVJfTE9ORykKKyNkZWZpbmUgSUNESUNQUih4KQkoX0lDRElD
UFIgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xPTkcpCisjZGVmaW5lIElD
REFCUih4KQkoX0lDREFCUiAgKyAoeCAvIEJJVFNfUEVSX0xPTkcpICogQllURVNfUEVSX0xP
TkcpCisjZGVmaW5lIElDRElQUih4KQkoX0lDRElQUiAgKyAoeCAvICA0KSAqIEJZVEVTX1BF
Ul9MT05HKQorI2RlZmluZSBJQ0RJUFRSKHgpCShfSUNESVBUUiArICh4IC8gIDQpICogQllU
RVNfUEVSX0xPTkcpCisjZGVmaW5lIElDRFNHSVIoKQkoX0lDRFNHSVIpCisKKy8qIENQVSBJ
bnRlcmZhY2UgUmVnaXN0ZXIgTWFwICovCisjZGVmaW5lIF9JQ0NJQ1IJCTB4MDAwICAvKiBD
UFUgSW50ZXJmYWNlIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDQ1BNUgkJMHgw
MDQgIC8qIEludGVycnVwdCBQcmlvcml0eSBNYXNrIFJlZ2lzdGVyICovCisjZGVmaW5lIF9J
Q0NCUFIJCTB4MDA4ICAvKiBCaW5yYXJ5IFBvaW50IFJlZ2lzdGVyICovCisjZGVmaW5lIF9J
Q0NJQVIJCTB4MDBDICAvKiBJbnRlcnJ1cHQgQWNrbm93bGVkZ2UgUmVnaXN0ZXIgKi8KKyNk
ZWZpbmUgX0lDQ0VPSVIJMHgwMTAgIC8qIEVuZCBvZiBJbnRlcnJ1cHQgUmVnaXN0ZXIgKi8K
KyNkZWZpbmUgX0lDQ1JQUgkJMHgwMTQgIC8qIFJ1bm5pbmcgUHJpb3JpdHkgUmVnaXN0ZXIg
Ki8KKyNkZWZpbmUgX0lDQ0hQSVIJMHgwMTggIC8qIEhpZ2hlc3QgUGVuZGluZyBJbnRlcnJ1
cHQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0lDQ0FCUFIJMHgwMUMgIC8qIEFsaWFzZWQgQmlu
YXJ5IFBvaW50IFJlZ2lzdGVyICovCisjZGVmaW5lIF9JQ0NJSURSCTB4MEZDICAvKiBDUFUg
SW50ZXJmYWNlIElkIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgSUNDSUNSKCkJKF9JQ0NJQ1Ip
CisjZGVmaW5lIElDQ1BNUigpCShfSUNDUE1SKQorI2RlZmluZSBJQ0NCUFIoKQkoX0lDQ0JQ
UikKKyNkZWZpbmUgSUNDSUFSKCkJKF9JQ0NJQVIpCisjZGVmaW5lIElDQ0VPSVIoKQkoX0lD
Q0VPSVIpCisjZGVmaW5lIElDQ1JQUigpCShfSUNDUlBSKQorI2RlZmluZSBJQ0NIUElSKCkJ
KF9JQ0NIUElSKQorI2RlZmluZSBJQ0NJSURSKCkJKF9JQ0NJSURSKQorCisjZGVmaW5lIFNF
Q1VSRV9JTlRFUlJVUFQJMAorI2RlZmluZSBOT05TRUNVUkVfSU5URVJSVVBUCTEKKworI2Rl
ZmluZSBTR0koeCkJCQkoeCkKKyNkZWZpbmUgUFBJKHgpCQkJKHggKyAxNikKKyNkZWZpbmUg
U1BJKHgpCQkJKHggKyAzMikKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2luY2x1ZGUg
PHhlbi90eXBlcy5oPgorCisjZGVmaW5lIEdJQ19ESVNUUklCVVRPUih4KSAgICAgIChfZ2lj
X2Rpc3RyaWJ1dG9yX2Jhc2UgKyB4KQorI2RlZmluZSBHSUNfQ1BVX0lOVEVSRkFDRSh4KSAg
ICAoX2dpY19jcHVfYmFzZSArIHgpCisKK3ZvaWQgZ2ljX3NldF9jcHUodW5zaWduZWQgaW50
IGlycSwgdW5zaWduZWQgaW50IG1hc2spOwordm9pZCBnaWNfc2V0X2lycV9wcmlvcml0eSh1
bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25lZCBpbnQgcHJpb3JpdHkpOwordm9pZCBnaWNfYWNr
X2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKK3ZvaWQgZ2ljX21hc2tfaXJxKHVuc2lnbmVkIGlu
dCBpcnEpOwordm9pZCBnaWNfdW5tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKK3ZvaWQg
Z2ljX2VuZF9pcnEodW5zaWduZWQgaW50IGlycSk7Cit2b2lkIGdpY19jaGFuZ2VfaXJxX3N0
YXRlKHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGludCBzdGF0ZSk7CisKK2V4dGVybiB2
b2lkICpfZ2ljX2NwdV9iYXNlW05SX0NQVVNdOworZXh0ZXJuIHZvaWQgKl9naWNfZGlzdHJp
YnV0b3JfYmFzZTsKKyNlbmRpZgorI2VuZGlmCmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9p
bmNsdWRlL2FzbS1hcm0vaXJxLmgKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaAlT
dW4gRmViIDEyIDEyOjI0OjIxIDIwMTIgKzA5MDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy
bS9pcnEuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5MDAKQEAgLTE1LDYgKzE1LDcg
QEAKIAogI2RlZmluZSBpcnFfY2ZnKGlycSkJCSgmaXJxX2NmZ1tpcnFdKQogI2RlZmluZSBp
cnFfdG9fZGVzYyhpcnEpCSgmaXJxX2Rlc2NbaXJxXSkJCisjZGVmaW5lIGRlc2NfdG9faXJx
KGRlc2MpCSgoZGVzYyAtICZpcnFfZGVzY1swXSkgLyBzaXplb2Yoc3RydWN0IGlycV9kZXNj
KSk7CiAKICNkZWZpbmUgSVJRX01BWF9HVUVTVFMJCTcKIHR5cGVkZWYgc3RydWN0IHsKQEAg
LTQwLDggKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIERFQ0xBUkVfQklUTUFQKF9i
aXRzLE5SX0lSUVMpOwogfSB2bWFza190OwogCi1leHRlcm4gc3RydWN0IGlycV9kZXNjICpp
cnFfZGVzYzsKLQogc3RhdGljIGlubGluZSBpbnQgaXJxX2Rlc2NfaW5pdGlhbGl6ZWQoc3Ry
dWN0IGlycV9kZXNjICpkZXNjKQogewogCXJldHVybiAwOwpkaWZmIC1yIDZhZjhhODljOTlj
ZCB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2F2cC5oCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVn
cmEvYXZwLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTQ0
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5WSURJQSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgSU5D
TFVERURfQVZQX0gKKyNkZWZpbmUgSU5DTFVERURfQVZQX0gKKworI2luY2x1ZGUgImFwMTUv
YXJpY3Rsci5oIgorI2luY2x1ZGUgImFwMTUvYXJ0aW1lci5oIgorLy8gRklYTUU6IGdldCB0
aGUgYXJhcm1ldiBoZWFkZXIKKworLy8gMyBjb250cm9sbGVycyBpbiBjb250aWd1b3VzIG1l
bW9yeSBzdGFydGluZyBhdCBJTlRFUlJVUFRfQkFTRSwgZWFjaAorLy8gY29udHJvbGxlcidz
IGFwZXJ0dXJlIGlzIElOVEVSUlVQVF9TSVpFIGxhcmdlCisjZGVmaW5lIElOVEVSUlVQVF9C
QVNFIDB4NjAwMDQwMDAKKyNkZWZpbmUgSU5URVJSVVBUX1NJWkUgMHgxMDAKKyNkZWZpbmUg
SU5URVJSVVBUX05VTV9DT05UUk9MTEVSUyAzCisKKyNkZWZpbmUgSU5URVJSVVBUX1BFTkRJ
TkcoIGN0bHIgKSBcCisgICAgKElOVEVSUlVQVF9CQVNFICsgKChjdGxyKSAqIElOVEVSUlVQ
VF9TSVpFKSArIElDVExSX1ZJUlFfQ09QXzApCisKKyNkZWZpbmUgSU5URVJSVVBUX1NFVCgg
Y3RsciApIFwKKyAgICAoSU5URVJSVVBUX0JBU0UgKyAoKGN0bHIpICogSU5URVJSVVBUX1NJ
WkUpICsgSUNUTFJfQ09QX0lFUl9TRVRfMCkKKworI2RlZmluZSBJTlRFUlJVUFRfQ0xSKCBj
dGxyICkgXAorICAgIChJTlRFUlJVUFRfQkFTRSArICgoY3RscikgKiBJTlRFUlJVUFRfU0la
RSkgKyBJQ1RMUl9DT1BfSUVSX0NMUl8wKQorCisjZGVmaW5lIE9TQ19DVFJMICAgICAgICAo
IDB4NjAwMDYwMDAgKyAweDUwICkKKyNkZWZpbmUgT1NDX0ZSRVFfREVUICAgICggMHg2MDAw
NjAwMCArIDB4NTggKQorI2RlZmluZSBPU0NfREVUX1NUQVRVUyAgKCAweDYwMDA2MDAwICsg
MHg1QyApCisKKyNkZWZpbmUgVElNRVJfVVNFQyAgICAgICggMHg2MDAwNTAxMCApCisjZGVm
aW5lIFRJTUVSX0NGRyAgICAgICAoIDB4NjAwMDUwMTQgKQorI2RlZmluZSBUSU1FUl8wX0JB
U0UgICAgKCAweDYwMDA1MDAwICkKKyNkZWZpbmUgVElNRVJfMCAgICAgICAgICggVElNRVJf
MF9CQVNFICsgVElNRVJfVE1SX1BUVl8wICkKKyNkZWZpbmUgVElNRVJfMF9DTEVBUiAgICgg
VElNRVJfMF9CQVNFICsgVElNRVJfVE1SX1BDUl8wICkKKyNkZWZpbmUgVElNRVJfMV9CQVNF
ICAgICggMHg2MDAwNTAwOCApCisjZGVmaW5lIFRJTUVSXzEgICAgICAgICAoIFRJTUVSXzFf
QkFTRSArIFRJTUVSX1RNUl9QVFZfMCApCisjZGVmaW5lIFRJTUVSXzFfQ0xFQVIgICAoIFRJ
TUVSXzFfQkFTRSArIFRJTUVSX1RNUl9QQ1JfMCApCisKKyNkZWZpbmUgQ0xPQ0tfUlNUX0xP
ICAgICgweDYwMDA2MDA0KQorI2RlZmluZSBDTE9DS19DVExSX0hJICAgKDB4NjAwMDYwMTQp
CisjZGVmaW5lIENMT0NLX0NUTFJfTE8gICAoMHg2MDAwNjAxMCkKKworI2RlZmluZSBDQUNI
RV9DVExSICAgICAgKDB4NjAwMEMwMDApCisjZGVmaW5lIENBQ0hFX0NPTlRST0xfMCAgICAg
ICAgICgweDApCisKKyNkZWZpbmUgUFBJX0lOVFJfSURfVElNRVJfMCAgICAgKDApCisjZGVm
aW5lIFBQSV9JTlRSX0lEX1RJTUVSXzEgICAgICgxKQorI2RlZmluZSBQUElfSU5UUl9JRF9U
SU1FUl8yICAgICAoOSkKKyNkZWZpbmUgUFBJX0lOVFJfSURfVElNRVJfMyAgICAgKDEwKQor
CisvKiBmbG93IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgRkxPV19DT05UUk9MTEVSICAgICAo
MHg2MDAwNzAwNCkKKworLyogZXhjZXB0aW9uIHZlY3RvcnMgKi8KKyNkZWZpbmUgVkVDVE9S
X0JBU0UgICAgICAgICAgICAgKCAweDYwMDBGMjAwICkKKyNkZWZpbmUgVkVDVE9SX1JFU0VU
ICAgICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDAgKQorI2RlZmluZSBWRUNUT1JfVU5ERUYg
ICAgICAgICAgICAoIFZFQ1RPUl9CQVNFICsgNCApCisjZGVmaW5lIFZFQ1RPUl9TV0kgICAg
ICAgICAgICAgICggVkVDVE9SX0JBU0UgKyA4ICkKKyNkZWZpbmUgVkVDVE9SX1BSRUZFVENI
X0FCT1JUICAgKCBWRUNUT1JfQkFTRSArIDEyICkKKyNkZWZpbmUgVkVDVE9SX0RBVEFfQUJP
UlQgICAgICAgKCBWRUNUT1JfQkFTRSArIDE2ICkKKyNkZWZpbmUgVkVDVE9SX0lSUSAgICAg
ICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDI0ICkKKyNkZWZpbmUgVkVDVE9SX0ZJUSAgICAg
ICAgICAgICAgKCBWRUNUT1JfQkFTRSArIDI4ICkKKworI2RlZmluZSBNT0RFX0RJU0FCTEVf
SU5UUiAweGMwCisjZGVmaW5lIE1PREVfVVNSIDB4MTAKKyNkZWZpbmUgTU9ERV9GSVEgMHgx
MQorI2RlZmluZSBNT0RFX0lSUSAweDEyCisjZGVmaW5lIE1PREVfU1ZDIDB4MTMKKyNkZWZp
bmUgTU9ERV9BQlQgMHgxNworI2RlZmluZSBNT0RFX1VORCAweDFCCisjZGVmaW5lIE1PREVf
U1lTIDB4MUYKKworI2RlZmluZSBBUDE1X0NBQ0hFX0xJTkVfU0laRSAgICAgICAgICAgIDMy
CisKKyNkZWZpbmUgQVAxNV9BUEJfTDJfQ0FDSEVfQkFTRSAweDcwMDBlODAwIAorI2RlZmlu
ZSBBUDE1X0FQQl9DTEtfUlNUX0JBU0UgIDB4NjAwMDYwMDAKKyNkZWZpbmUgQVAxNV9BUEJf
TUlTQ19CQVNFICAgICAweDcwMDAwMDAwCisKKyNkZWZpbmUgQVAxMF9BUEJfQ0xLX1JTVF9C
QVNFICAweDYwMDA2MDAwCisjZGVmaW5lIEFQMTBfQVBCX01JU0NfQkFTRSAgICAgMHg3MDAw
MDAwMAorCisjZGVmaW5lIE1NVV9UTEJfQkFTRSAgICAgICAgICAgICAgMHhmMDAwZjAwMAor
I2RlZmluZSBNTVVfVExCX0NBQ0hFX1dJTkRPV18wICAgIDB4NDAKKyNkZWZpbmUgTU1VX1RM
Ql9DQUNIRV9PUFRJT05TXzAgICAweDQ0CisKKyNkZWZpbmUgQVAxNV9QSU5NVVhfQ0ZHX0NU
TF8wICAgMHg3MDAwMDAyNAorI2RlZmluZSBBUDE1X0FWUF9KVEFHX0VOQUJMRSAgICAweEMw
CisKKyNkZWZpbmUgUE1DX1NDUkFUQ0gyMl9SRUdfTFAwICAgMHg3MDAwZTRhOAorCisjZGVm
aW5lIEFWUF9XRFRfUkVTRVQgICAweDJGMDBCQUQwCisKKy8qIENhY2hlZCB0byB1bmNhY2hl
ZCBvZmZzZXQgZm9yIEFWUAorICoKKyAqIEhhcmR3YXJlIGhhcyB1bmNhY2hlZCByZW1hcCBh
cGVydHVyZSBmb3IgQVZQIGFzIEFWUCBkb2Vzbid0IGhhdmUgTU1VCisgKiBidXQgc3RpbGwg
aGFzIGNhY2hlIChuYW1lZCBDT1AgY2FjaGUpLgorICoKKyAqIFRoaXMgYXBlcnR1cmUgbW92
ZWQgYmV0d2VlbiBBUDE1IGFuZCBBUDIwLgorICovCisjZGVmaW5lIEFQMTVfQ0FDSEVEX1RP
X1VOQ0FDSEVEX09GRlNFVCAweDkwMDAwMDAwCisjZGVmaW5lIEFQMjBfQ0FDSEVEX1RPX1VO
Q0FDSEVEX09GRlNFVCAweDgwMDAwMDAwCisKKyNkZWZpbmUgQVBYWF9FWFRfTUVNX1NUQVJU
ICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBBUFhYX0VYVF9NRU1fRU5EICAgICAgICAweDQw
MDAwMDAwCisKKyNkZWZpbmUgQVBYWF9NTUlPX1NUQVJUICAgICAgICAgMHg0MDAwMDAwMAor
I2RlZmluZSBBUFhYX01NSU9fRU5EICAgICAgICAgICAweEZGRjAwMDAwCisKKyNkZWZpbmUg
VFhYX0VYVF9NRU1fU1RBUlQgICAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBUWFhfRVhUX01F
TV9FTkQgICAgICAgICAweGMwMDAwMDAwCisKKyNkZWZpbmUgVFhYX01NSU9fU1RBUlQgICAg
ICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBUWFhfTU1JT19FTkQgICAgICAgICAgICAweDgw
MDAwMDAwCisKKyNlbmRpZgpkaWZmIC1yIDZhZjhhODljOTljZCB4ZW4vaW5jbHVkZS9hc20t
YXJtL3RlZ3JhL2NvbmZpZy5oCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvY29u
ZmlnLmgJU3VuIEZlYiAxMiAxMjoyNDoyMSAyMDEyICswOTAwCisrKyBiL3hlbi9pbmNsdWRl
L2FzbS1hcm0vdGVncmEvY29uZmlnLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAw
CkBAIC0xLDExICsxLDYgQEAKICNpZm5kZWYgX19URUdSQV9DT05GSUdfSF9fCiAjZGVmaW5l
IF9fVEVHUkFfQ09ORklHX0hfXwogCi0jZGVmaW5lIEhaCTEwMAotI2RlZmluZSBDTE9DS19U
SUNLX1JBVEUJCTEwMDAwMDAKKyNkZWZpbmUgTUFYX1BIWVNfQ1BVUwkyCiAKLSNkZWZpbmUg
TUFYX1BIWVNfQ1BVUwkJMgotCi0jZGVmaW5lIEJVSUxUSU5fQ09NTUFORF9MSU5FX1NJWkUg
MjU2Ci0jZGVmaW5lIEJVSUxUSU5fQ09NTUFORF9MSU5FCSIiCiAjZW5kaWYKZGlmZiAtciA2
YWY4YTg5Yzk5Y2QgeGVuL2luY2x1ZGUvYXNtLWFybS90ZWdyYS9pcnFzLmgKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUv
YXNtLWFybS90ZWdyYS9pcnFzLmgJU3VuIEZlYiAxMiAxNTowNDowNiAyMDEyICswOTAwCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLXRlZ3JhL2luY2x1ZGUvbWFj
aC9pcnFzLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIE5WSURJQSBDb3Jwb3JhdGlv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv
bmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBf
X1RFR1JBX0lSUVNfSAorI2RlZmluZSBfX1RFR1JBX0lSUVNfSAorCisjZGVmaW5lIE5SX0lS
UVMJCQk1MTIKKworI2RlZmluZSBJTlRfUFJJX0JBU0UJCTMyCisjZGVmaW5lIElOVF9SVEMJ
CQkoSU5UX1BSSV9CQVNFICsgMikKKyNkZWZpbmUgSU5UX1VTQgkJCShJTlRfUFJJX0JBU0Ug
KyAyMCkKKyNkZWZpbmUgSU5UX1VTQjIJCShJTlRfUFJJX0JBU0UgKyAyMSkKKyNkZWZpbmUg
SU5UX0FQQl9ETUEJCShJTlRfUFJJX0JBU0UgKyAyNikKKworI2RlZmluZSBJTlRfU0VDX0JB
U0UJCShJTlRfUFJJX0JBU0UgKyAzMikKKyNkZWZpbmUgSU5UX0dQSU8xCQkoSU5UX1NFQ19C
QVNFICsgMCkKKyNkZWZpbmUgSU5UX0dQSU8yCQkoSU5UX1NFQ19CQVNFICsgMSkKKyNkZWZp
bmUgSU5UX0dQSU8zCQkoSU5UX1NFQ19CQVNFICsgMikKKyNkZWZpbmUgSU5UX0dQSU80CQko
SU5UX1NFQ19CQVNFICsgMykKKyNkZWZpbmUgSU5UX1RNUjMJCShJTlRfU0VDX0JBU0UgKyA5
KQorI2RlZmluZSBJTlRfVE1SNAkJKElOVF9TRUNfQkFTRSArIDEwKQorI2RlZmluZSBJTlRf
U1lTX1NUQVRTX01PTgkoSU5UX1NFQ19CQVNFICsgMjIpCisjZGVmaW5lIElOVF9HUElPNQkJ
KElOVF9TRUNfQkFTRSArIDIzKQorCisjZGVmaW5lIElOVF9UUklfQkFTRQkJKElOVF9TRUNf
QkFTRSArIDMyKQorI2RlZmluZSBJTlRfS0JDCQkJKElOVF9UUklfQkFTRSArIDIxKQorI2Rl
ZmluZSBJTlRfRVhURVJOQUxfUE1VCShJTlRfVFJJX0JBU0UgKyAyMikKKyNkZWZpbmUgSU5U
X0dQSU82CQkoSU5UX1RSSV9CQVNFICsgMjMpCisjZGVmaW5lIElOVF9HUElPNwkJKElOVF9U
UklfQkFTRSArIDI1KQorCisjZGVmaW5lIElOVF9RVUFEX0JBU0UJCShJTlRfVFJJX0JBU0Ug
KyAzMikKKyNkZWZpbmUgSU5UX1VTQjMJCShJTlRfUVVBRF9CQVNFICsgMSkKKworI2RlZmlu
ZSBJTlRfR1BJT19CQVNFCQkoSU5UX1FVQURfQkFTRSArIDMyKQorI2RlZmluZSBJTlRfR1BJ
T19OUgkJKDI4KjgpCisKKyNkZWZpbmUgSU5UX0FQQkRNQV9CQVNFCSAJKElOVF9HUElPX0JB
U0UgKyBJTlRfR1BJT19OUikKKyNkZWZpbmUgSU5UX0FQQkRNQV9OUgkJKDE2KQorCisjZGVm
aW5lIElOVF9TWVNfTlIJKElOVF9HUElPX0JBU0UgLSBJTlRfUFJJX0JBU0UpCisjZGVmaW5l
IElOVF9TWVNfU1oJKElOVF9TRUNfQkFTRSAtIElOVF9QUklfQkFTRSkKKworI2VuZGlmCmRp
ZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvc21wLmgKLS0t
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLWFybS90ZWdyYS9zbXAuaAlTdW4gRmViIDEyIDE1OjA0OjA2IDIwMTIgKzA5
MDAKQEAgLTAsMCArMSw3IEBACisjaWZuZGVmIEFTTUFSTV9BUkNIX1NNUF9ICisjZGVmaW5l
IEFTTUFSTV9BUkNIX1NNUF9ICisKKworI2luY2x1ZGUgPGFzbS9naWMuaD4KKworI2VuZGlm
CmRpZmYgLXIgNmFmOGE4OWM5OWNkIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvdGVncmEu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL3RlZ3JhLmgJU3VuIEZlYiAxMiAxNTowNDowNiAy
MDEyICswOTAwCkBAIC0wLDAgKzEsNzUgQEAKKyNpZm5kZWYgX19URUdSQTI1MF9IX18KKyNk
ZWZpbmUgX19URUdSQTI1MF9IX18KKworI2RlZmluZSBURUdSQV9BUk1fQ1BVX0JBU0UJCTB4
NTAwMDAwMDAKKyNkZWZpbmUgVEVHUkFfUFBTQl9ERVZJQ0VfQkFTRQkJMHg2MDAwMDAwMAor
I2RlZmluZSBURUdSQV9BUEJfREVWSUNFX0JBU0UJCTB4NzAwMDAwMDAKKworI2RlZmluZSBU
RUdSQV9BUk1fUEVSSUZfQkFTRQkJMHg1MDA0MDAwMAorI2RlZmluZSBURUdSQV9BUk1fUEVS
SUZfU0laRQkJU1pfOEsKKworI2RlZmluZSBURUdSQV9TQ1VfQkFTRQkJCTB4NTAwNDAwMDAK
KyNkZWZpbmUgVEVHUkFfU0NVX1NJWkUJCQlTWl8yNTYKKworI2RlZmluZSBURUdSQV9HSUNf
UFJPQ19JRl9CQVNFCQkweDUwMDQwMTAwCisjZGVmaW5lIFRFR1JBX0dJQ19QUk9DX0lGX1NJ
WkUJCVNaXzI1NgorCisjZGVmaW5lIFRFR1JBX0FSTV9JTlRfRElTVF9CQVNFCQkweDUwMDQx
MDAwCisjZGVmaW5lIFRFR1JBX0FSTV9JTlRfRElTVF9TSVpFCQlTWl80SworCisjZGVmaW5l
IFRFR1JBX1BSSU1BUllfSUNUTFJfQkFTRQkweDYwMDA0MDAwCisjZGVmaW5lIFRFR1JBX1BS
SU1BUllfSUNUTFJfU0laRQlTWl82NAorCisjZGVmaW5lIFRFR1JBX1NFQ09OREFSWV9JQ1RM
Ul9CQVNFCTB4NjAwMDQxMDAKKyNkZWZpbmUgVEVHUkFfU0VDT05EQVJZX0lDVExSX1NJWkUJ
U1pfNjQKKworI2RlZmluZSBURUdSQV9URVJUSUFSWV9JQ1RMUl9CQVNFCTB4NjAwMDQyMDAK
KyNkZWZpbmUgVEVHUkFfVEVSVElBUllfSUNUTFJfU0laRQlTWl82NAorCisjZGVmaW5lIFRF
R1JBX1FVQVRFUk5BUllfSUNUTFJfQkFTRQkweDYwMDA0MzAwCisjZGVmaW5lIFRFR1JBX1FV
QVRFUk5BUllfSUNUTFJfU0laRQlTWl82NAorCisjZGVmaW5lIFRFR1JBX1RNUjFfQkFTRQkJ
CTB4NjAwMDUwMDAKKyNkZWZpbmUgVEVHUkFfVE1SMV9TSVpFCQkJU1pfOAorCisjZGVmaW5l
IFRFR1JBX1RNUjJfQkFTRQkJCTB4NjAwMDUwMDgKKyNkZWZpbmUgVEVHUkFfVE1SMl9TSVpF
CQkJU1pfOAorCisjZGVmaW5lIFRFR1JBX1RNUlVTX0JBU0UJCTB4NjAwMDUwMTAKKyNkZWZp
bmUgVEVHUkFfVE1SVVNfU0laRQkJU1pfNjQKKworI2RlZmluZSBURUdSQV9UTVIzX0JBU0UJ
CQkweDYwMDA1MDUwCisjZGVmaW5lIFRFR1JBX1RNUjNfU0laRQkJCVNaXzgKKworI2RlZmlu
ZSBURUdSQV9UTVI0X0JBU0UJCQkweDYwMDA1MDU4CisjZGVmaW5lIFRFR1JBX1RNUjRfU0la
RQkJCVNaXzgKKworI2RlZmluZSBURUdSQV9DTEtfUkVTRVRfQkFTRQkJMHg2MDAwNjAwMAor
I2RlZmluZSBURUdSQV9DTEtfUkVTRVRfU0laRQkJU1pfNEsKKworI2RlZmluZSBURUdSQV9G
TE9XX0NUUkxfQkFTRQkJMHg2MDAwNzAwMAorI2RlZmluZSBURUdSQV9GTE9XX0NUUkxfU0la
RQkJMjAKKworI2RlZmluZSBURUdSQV9HUElPX0JBU0UJCQkweDYwMDBEMDAwCisjZGVmaW5l
IFRFR1JBX0dQSU9fU0laRQkJCVNaXzRLCisKKyNkZWZpbmUgVEVHUkFfRVhDRVBUSU9OX1ZF
Q1RPUlNfQkFTRSAgICAweDYwMDBGMDAwCisjZGVmaW5lIFRFR1JBX0VYQ0VQVElPTl9WRUNU
T1JTX1NJWkUgICAgU1pfNEsKKworI2RlZmluZSBJQ1RMUl9DUFVfSUVSXzAJCQkoMHgyMCkK
KyNkZWZpbmUgSUNUTFJfQ1BVX0lFUl9TRVRfMAkJKDB4MjQpCisjZGVmaW5lIElDVExSX0NQ
VV9JRVJfQ0xSXzAJCSgweDI4KQorI2RlZmluZSBJQ1RMUl9DUFVfSUVQX0NMQVNTXzAJCSgw
eDJDKQorI2RlZmluZSBJQ1RMUl9DT1BfSUVSXzAJCQkoMHgzMCkKKyNkZWZpbmUgSUNUTFJf
Q09QX0lFUl9TRVRfMAkJKDB4MzQpCisjZGVmaW5lIElDVExSX0NPUF9JRVJfQ0xSXzAJCSgw
eDM4KQorI2RlZmluZSBJQ1RMUl9DT1BfSUVQX0NMQVNTXzAJCSgweDNDKQorCisjZGVmaW5l
IEFSTV9QRVJJRl9CQVNFCQkJKDB4NTAwNDAwMDApCisKKy8vI2RlZmluZSBJT19BRERSRVNT
KHgpCQkJKCgoKCh4KSAmIDB4NzAwMDAwMDApID4+IDgpICsgKCgoeCkgJiAweDBGMDAwMDAw
KSA+PiA0KSkgfCgoeCkgJiAweEZGRkZGKSB8IDB4RkIwMDAwMDAgKQorI2RlZmluZSBJT19B
RERSRVNTKHgpCQkJKCgoKHgpICYgMHhGMDAwMDAwMCkgPj4gOCkgfCAoKHgpICYgMHhGRkZG
RikgfCAoMHhGQjAwMDAwMCApKQorI2RlZmluZSBJTlRfUFBJX0FERFJFU1MoX2luc3QpCQko
MHg2MDAwNDAwMCArICgweDEwMCAqIChfaW5zdCkpKQorI2RlZmluZSBJTlRfQVBCRE1BX0FE
RFJFU1MJCSgweDYwMDBhMDAwKQorCisjZW5kaWYKZGlmZiAtciA2YWY4YTg5Yzk5Y2QgeGVu
L2luY2x1ZGUveGVuL2lycS5oCi0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pcnEuaAlTdW4gRmVi
IDEyIDEyOjI0OjIxIDIwMTIgKzA5MDAKKysrIGIveGVuL2luY2x1ZGUveGVuL2lycS5oCVN1
biBGZWIgMTIgMTU6MDQ6MDYgMjAxMiArMDkwMApAQCAtOTUsNiArOTUsMTAgQEAgaW50IGFy
Y2hfaW5pdF9vbmVfaXJxX2Rlc2Moc3RydWN0IGlycV9kZQogCiAjZGVmaW5lIGlycV9kZXNj
X2luaXRpYWxpemVkKGRlc2MpICgoZGVzYyktPmhhbmRsZXIgIT0gTlVMTCkKIAorI2lmIGRl
ZmluZWQoX19hcm1fXykKK2V4dGVybiBpcnFfZGVzY190IGlycV9kZXNjW05SX0lSUVNdOwor
I2VuZGlmCisKICNpZiBkZWZpbmVkKF9faWE2NF9fKQogZXh0ZXJuIGlycV9kZXNjX3QgaXJx
X2Rlc2NbTlJfVkVDVE9SU107CiAKQEAgLTEyMSw2ICsxMjUsOCBAQCBleHRlcm4gdm9pZCBp
cnFfYWN0b3Jfbm9uZShzdHJ1Y3QgaXJxX2RlCiAjZGVmaW5lIGlycV9zaHV0ZG93bl9ub25l
IGlycV9hY3Rvcl9ub25lCiAjZGVmaW5lIGlycV9kaXNhYmxlX25vbmUgaXJxX2FjdG9yX25v
bmUKICNkZWZpbmUgaXJxX2VuYWJsZV9ub25lIGlycV9hY3Rvcl9ub25lCisjZGVmaW5lIGly
cV9hY2tfbm9uZQlpcnFfYWN0b3Jfbm9uZQorI2RlZmluZSBpcnFfZW5kX25vbmUJaXJxX2Fj
dG9yX25vbmUKIAogc3RydWN0IGRvbWFpbjsKIHN0cnVjdCB2Y3B1Owo=


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY--



From xen-devel-bounces@lists.xensource.com Mon Feb 13 10:20:31 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Feb 2012 10:20:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1Rwt14-0005vm-DJ; Mon, 13 Feb 2012 10:20:14 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with smtp (Exim 4.72)
	(envelope-from <jm77.ryu@samsung.com>) id 1Rwqiv-00039v-GE
	for xen-devel@lists.xensource.com; Mon, 13 Feb 2012 07:53:22 +0000
X-Env-Sender: jm77.ryu@samsung.com
X-Msg-Ref: server-8.tower-216.messagelabs.com!1329119591!14532228!2
X-Originating-IP: [203.254.224.25]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogMjAzLjI1NC4yMjQuMjUgPT4gMjQ2MTY1\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 19414 invoked from network); 13 Feb 2012 07:53:14 -0000
Received: from mailout2.samsung.com (HELO mailout2.samsung.com)
	(203.254.224.25) by server-8.tower-216.messagelabs.com with SMTP;
	13 Feb 2012 07:53:14 -0000
Received: from epcpsbge7.samsung.com (mailout2.samsung.com [203.254.224.25])
	by mailout2.samsung.com
	(Oracle Communications Messaging Exchange Server 7u4-19.01 64bit (built
	Sep 7
	2010)) with ESMTP id <0LZB0031FN7WRKB0@mailout2.samsung.com> for
	xen-devel@lists.xensource.com; Mon, 13 Feb 2012 16:53:10 +0900 (KST)
Message-id: <0LZB0032AN8MRKB0@mailout2.samsung.com>
X-AuditID: cbfee611-b7b12ae0000036c1-4c-4f38c1224dce
Received: from epextmailer02 ( [203.254.219.152])
	by epcpsbge7.samsung.com (EPCPMTA) with SMTP id 5B.09.14017.221C83F4;
	Mon, 13 Feb 2012 16:52:02 +0900 (KST)
Date: Mon, 13 Feb 2012 07:53:10 +0000 (GMT)
From: =?euc-kr?B?t/nA57nO?= <jm77.ryu@samsung.com>
To: Jae-Min Ryu <jm77.ryu@samsung.com>, Lars Kurth <lars.kurth@citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	"Keir (Xen.org)" <keir@xen.org>, Ian Jackson <Ian.Jackson@eu.citrix.com>,
	"xen-arm@lists.xensource.com" <xen-arm@lists.xensource.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
MIME-version: 1.0
X-MTR: 20120213074940046@jm77.ryu
Msgkey: 20120213074940046@jm77.ryu
X-EPLocale: ko_KR.euc-kr
X-Priority: 3
X-EPWebmail-Msg-Type: personal
X-EPWebmail-Reply-Demand: 0
X-EPApproval-Locale: 
X-EPHeader: ML
X-EPTrCode: 
X-EPTrName: 
X-MLAttribute: 
X-RootMTR: 20120213074805604@jm77.ryu
X-ParentMTR: 20120213074805604@jm77.ryu
Content-type: multipart/mixed;
	boundary="----=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY"
X-Brightmail-Tracker: AAAAAA==
X-Mailman-Approved-At: Mon, 13 Feb 2012 10:20:11 +0000
Cc: =?euc-kr?Q?=BC=AD=BB=F3=B9=FC?= <sbuk.suh@samsung.com>
Subject: [Xen-devel] [PATCH 02/14] arm: import the files required to "arm"
	port.
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: jm77.ryu@samsung.com
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="euc-kr"
MIME-Version: 1.0
Message-ID: <23931488.69631329119586906.JavaMail.weblogic@epv6ml04>

YXJtOiBpbXBvcnQgdGhlIGZpbGVzIHJlcXVpcmVkIHRvICJhcm0iIHBvcnQuDQoNCmNvbmZpZy9h
cm0ubWsgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsrKw0KIHhlbi9hcmNoL2FybS9NYWtl
ZmlsZSAgICAgICAgICAgICAgfCAgIDQ3ICsrKysrDQogeGVuL2FyY2gvYXJtL1J1bGVzLm1rICAg
ICAgICAgICAgICB8ICAgMjUgKysrDQogeGVuL2FyY2gvYXJtL2xpYi9NYWtlZmlsZSAgICAgICAg
ICB8ICAgMTEgKw0KIHhlbi9hcmNoL2FybS9saWIvYXNobGRpMy5TICAgICAgICAgfCAgIDQ1ICsr
KysrDQogeGVuL2FyY2gvYXJtL2xpYi9hc2hyZGkzLlMgICAgICAgICB8ICAgNDYgKysrKysNCiB4
ZW4vYXJjaC9hcm0vbGliL2JwYWJpLWFzbS5TICAgICAgIHwgICA1NSArKysrKysNCiB4ZW4vYXJj
aC9hcm0vbGliL2JwYWJpLmMgICAgICAgICAgIHwgICA1MSArKysrKysNCiB4ZW4vYXJjaC9hcm0v
bGliL2NsZWFyYml0LlMgICAgICAgIHwgICAyNCArKw0KIHhlbi9hcmNoL2FybS9saWIvY29weV90
ZW1wbGF0ZS5TICAgfCAgMjU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIHhlbi9h
cmNoL2FybS9saWIvZGVsYXkuUyAgICAgICAgICAgfCAgICA3ICsNCiB4ZW4vYXJjaC9hcm0vbGli
L2RpdjY0LlMgICAgICAgICAgIHwgIDE5OSArKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4v
YXJjaC9hcm0vbGliL2ZpbmRiaXQuUyAgICAgICAgIHwgICA4MSArKysrKysrKysNCiB4ZW4vYXJj
aC9hcm0vbGliL2djY2xpYi5oICAgICAgICAgIHwgICAzMyArKysrDQogeGVuL2FyY2gvYXJtL2xp
Yi9nZXR1c2VyLlMgICAgICAgICB8ICAgNzcgKysrKysrKysrDQogeGVuL2FyY2gvYXJtL2xpYi9s
aWIxZnVuY3MuUyAgICAgICB8ICAyNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K
IHhlbi9hcmNoL2FybS9saWIvbG9uZ2xvbmcuaCAgICAgICAgfCAgMTgzICsrKysrKysrKysrKysr
KysrKysrKysNCiB4ZW4vYXJjaC9hcm0vbGliL2xzaHJkaTMuUyAgICAgICAgIHwgICAxNyArKw0K
IHhlbi9hcmNoL2FybS9saWIvbWF0aC5jICAgICAgICAgICAgfCAgICAzICsNCiB4ZW4vYXJjaC9h
cm0vbGliL21lbWNoci5TICAgICAgICAgIHwgICAxNCArDQogeGVuL2FyY2gvYXJtL2xpYi9tZW1j
cHkuUyAgICAgICAgICB8ICAgNjAgKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvbWVtbW92ZS5T
ICAgICAgICAgfCAgMjA3ICsrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0v
bGliL21lbW9yeS5TICAgICAgICAgIHwgIDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJjaC9hcm0vbGliL21lbXNldC5TICAgICAg
ICAgIHwgICA2OSArKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvbWVtemVyby5TICAgICAgICAg
fCAgIDcxICsrKysrKysrDQogeGVuL2FyY2gvYXJtL2xpYi9tdWxkaTMuYyAgICAgICAgICB8ICAg
ODYgKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvcHV0dXNlci5TICAgICAgICAgfCAgIDc1
ICsrKysrKysrKw0KIHhlbi9hcmNoL2FybS9saWIvc2V0Yml0LlMgICAgICAgICAgfCAgIDIyICsr
DQogeGVuL2FyY2gvYXJtL2xpYi9zdHJjaHIuUyAgICAgICAgICB8ICAgMTUgKw0KIHhlbi9hcmNo
L2FybS9saWIvdGVzdGNoYW5nZWJpdC5TICAgfCAgIDIyICsrDQogeGVuL2FyY2gvYXJtL2xpYi90
ZXN0Y2xlYXJiaXQuUyAgICB8ICAgMjIgKysNCiB4ZW4vYXJjaC9hcm0vbGliL3Rlc3RzZXRiaXQu
UyAgICAgIHwgICAyMCArKw0KIHhlbi9hcmNoL2FybS9saWIvdWFjY2Vzcy5TICAgICAgICAgfCAg
Njg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogeGVuL2FyY2gvYXJtL2xpYi91ZGl2ZGkz
LmMgICAgICAgICB8ICAyNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vYXJj
aC9hcm0vbGliL3VsZGl2bW9kLlMgICAgICAgIHwgIDE0OCArKysrKysrKysrKysrKysrKw0KIHhl
bi9hcmNoL2FybS90ZWdyYS9NYWtlZmlsZSAgICAgICAgfCAgICAxICsNCiB4ZW4vYXJjaC9hcm0v
dGVncmEvUnVsZXMubWsgICAgICAgIHwgICAgMSArDQogeGVuL2FyY2gvYXJtL3RlZ3JhL2R1bW15
LmMgICAgICAgICB8ICAgIDMgKw0KIHhlbi9hcmNoL2FybS94ZW4vTWFrZWZpbGUgICAgICAgICAg
fCAgIDE5ICsrDQogeGVuL2FyY2gvYXJtL3hlbi9hcmNoX2RvbWFpbi5jICAgICB8ICAyMTIgKysr
KysrKysrKysrKysrKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vYXJjaF9kb21jdGwuYyAg
ICAgfCAgIDQzICsrKysrDQogeGVuL2FyY2gvYXJtL3hlbi9hcmNoX3N5c2N0bC5jICAgICB8ICAg
MzggKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vYXNtLW9mZnNldHMuYyAgICAgfCAgIDQwICsrKysN
CiB4ZW4vYXJjaC9hcm0veGVuL2J1Zy5jICAgICAgICAgICAgIHwgICAzMiArKysNCiB4ZW4vYXJj
aC9hcm0veGVuL2NwdS5jICAgICAgICAgICAgIHwgICA5NyArKysrKysrKysrKw0KIHhlbi9hcmNo
L2FybS94ZW4vY3Jhc2guYyAgICAgICAgICAgfCAgIDI1ICsrKw0KIHhlbi9hcmNoL2FybS94ZW4v
ZG9tYWluX2J1aWxkLmMgICAgfCAgIDQ3ICsrKysrDQogeGVuL2FyY2gvYXJtL3hlbi9kb21haW5f
cGFnZS5jICAgICB8ICAgMjIgKysNCiB4ZW4vYXJjaC9hcm0veGVuL2ZhdWx0LmMgICAgICAgICAg
IHwgIDEyMyArKysrKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vZ3JhbnRfdGFibGUuYyAg
ICAgfCAgIDUzICsrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vaW9tbXUuYyAgICAgICAgICAgfCAg
IDI0ICsrDQogeGVuL2FyY2gvYXJtL3hlbi9pcnEuYyAgICAgICAgICAgICB8ICAgODQgKysrKysr
KysrKw0KIHhlbi9hcmNoL2FybS94ZW4vbWFjaGluZV9rZXhlYy5jICAgfCAgIDMxICsrKw0KIHhl
bi9hcmNoL2FybS94ZW4vbW0uYyAgICAgICAgICAgICAgfCAgMTk0ICsrKysrKysrKysrKysrKysr
KysrKysrDQogeGVuL2FyY2gvYXJtL3hlbi9wMm0uYyAgICAgICAgICAgICB8ICAgNDQgKysrKysN
CiB4ZW4vYXJjaC9hcm0veGVuL3BjaS5jICAgICAgICAgICAgIHwgICA3NCArKysrKysrKw0KIHhl
bi9hcmNoL2FybS94ZW4vcGVyZm1vbi5jICAgICAgICAgfCAgIDI2ICsrKw0KIHhlbi9hcmNoL2Fy
bS94ZW4vc2V0dXAuYyAgICAgICAgICAgfCAgIDY0ICsrKysrKysNCiB4ZW4vYXJjaC9hcm0veGVu
L3NodXRkb3duLmMgICAgICAgIHwgICAzOCArKysrDQogeGVuL2FyY2gvYXJtL3hlbi90aW1lLmMg
ICAgICAgICAgICB8ICAgODMgKysrKysrKysrKw0KIHhlbi9hcmNoL2FybS94ZW4vdGxiLmMgICAg
ICAgICAgICAgfCAgIDI2ICsrKw0KIHhlbi9hcmNoL2FybS94ZW4veGVuLmxkcy5TICAgICAgICAg
fCAgMTU5ICsrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2FjcGkuaCAg
ICAgICAgIHwgICAgOCArDQogeGVuL2luY2x1ZGUvYXNtLWFybS9hc20tbWFjcm9zLmggICB8ICAx
MDYgKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUvYXNtLWFybS9hdG9taWMuaCAgICAgICB8ICAx
NzkgKysrKysrKysrKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUvYXNtLWFybS9iaXRvcHMuaCAg
ICAgICB8ICAxOTMgKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJt
L2J1Zy5oICAgICAgICAgIHwgICAzMiArKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2J5dGVvcmRl
ci5oICAgIHwgICAgOSArDQogeGVuL2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oICAgICAgICB8ICAg
MTEgKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vY29uZmlnLmggICAgICAgfCAgIDYxICsrKysrKysN
CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2NwdS1kb21haW4uaCAgIHwgICAzOSArKysrDQogeGVuL2lu
Y2x1ZGUvYXNtLWFybS9jdXJyZW50LmggICAgICB8ICAgNzMgKysrKysrKysNCiB4ZW4vaW5jbHVk
ZS9hc20tYXJtL2RlYnVnZ2VyLmggICAgIHwgICAyNCArKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0v
ZGVsYXkuaCAgICAgICAgfCAgICA2ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RpdjY0LmggICAg
ICAgIHwgICA0MyArKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggICAgICAgfCAg
IDc5ICsrKysrKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZWxmLmggICAgICAgICAgfCAgIDUz
ICsrKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZXZlbnQuaCAgICAgICAgfCAgIDM5ICsrKysN
CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2ZsdXNodGxiLmggICAgIHwgICAyNSArKysNCiB4ZW4vaW5j
bHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmggIHwgICA2MiArKysrKysrDQogeGVuL2luY2x1ZGUv
YXNtLWFybS9ndWVzdF9hY2Nlc3MuaCB8ICAxMzYgKysrKysrKysrKysrKysrKw0KIHhlbi9pbmNs
dWRlL2FzbS1hcm0vaGFyZGlycS5oICAgICAgfCAgIDIxICsrDQogeGVuL2luY2x1ZGUvYXNtLWFy
bS9oeXBlcmNhbGwuaCAgICB8ICAgNjggKysrKysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2lu
aXQuaCAgICAgICAgIHwgICAgNCArDQogeGVuL2luY2x1ZGUvYXNtLWFybS9pby5oICAgICAgICAg
ICB8ICAgMzIgKysrDQogeGVuL2luY2x1ZGUvYXNtLWFybS9pb2NhcC5oICAgICAgICB8ICAgMTUg
Kw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaCAgICAgICAgfCAgIDE0ICsNCiB4ZW4vaW5j
bHVkZS9hc20tYXJtL2lycS5oICAgICAgICAgIHwgICA1MCArKysrKysNCiB4ZW4vaW5jbHVkZS9h
c20tYXJtL21tLmggICAgICAgICAgIHwgIDIzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysr
DQogeGVuL2luY2x1ZGUvYXNtLWFybS9tbXUuaCAgICAgICAgICB8ICAgMTEgKw0KIHhlbi9pbmNs
dWRlL2FzbS1hcm0vbXVsdGljYWxsLmggICAgfCAgICA5ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJt
L251bWEuaCAgICAgICAgIHwgICAyMSArKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggICAg
ICAgICAgfCAgIDEwICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BhZ2UuaCAgICAgICAgIHwgICA5
NSArKysrKysrKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGNpLmggICAgICAgICAgfCAgICA5
ICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oICAgICAgIHwgICAxNiArDQogeGVuL2lu
Y2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaCAgICB8ICAyMTkgKysrKysrKysrKysrKysrKysrKysr
KysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3JlZ3MuaCAgICAgICAgIHwgICAxNyArKw0KIHhl
bi9pbmNsdWRlL2FzbS1hcm0vc21wLmggICAgICAgICAgfCAgIDI4ICsrKw0KIHhlbi9pbmNsdWRl
L2FzbS1hcm0vc29mdGlycS5oICAgICAgfCAgIDExICsNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3Nw
aW5sb2NrLmggICAgIHwgIDIwMCArKysrKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVk
ZS9hc20tYXJtL3N0cmluZy5oICAgICAgIHwgICA0OSArKysrKw0KIHhlbi9pbmNsdWRlL2FzbS1h
cm0vc3lzdGVtLmggICAgICAgfCAgMTQ4ICsrKysrKysrKysrKysrKysrDQogeGVuL2luY2x1ZGUv
YXNtLWFybS90ZWdyYS9jb25maWcuaCB8ICAgMTEgKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGlt
ZS5oICAgICAgICAgfCAgIDI0ICsrDQogeGVuL2luY2x1ZGUvYXNtLWFybS90cmFjZS5oICAgICAg
ICB8ICAgIDYgKw0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vdHlwZXMuaCAgICAgICAgfCAgIDU4ICsr
KysrKysNCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3hlbm9wcm9mLmggICAgIHwgICA0MyArKysrKw0K
IHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oICAgICAgfCAgMTgwICsrKysrKysrKysrKysr
KysrKysrKw0KIDEwOSBmaWxlcyBjaGFuZ2VkLCA4MDA4IGluc2VydGlvbnMoKyksIDAgZGVsZXRp
b25zKC0pDQoNClNpZ25lZC1vZmYtYnk6IEphZW1pbiBSeXUgPGptNzcucnl1QHNhbXN1bmcuY29t
Pg0KDQo=


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: application/octet-stream;
 name="patch02.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="patch02.diff"


YXJtOiBpbXBvcnQgdGhlIGZpbGVzIHJlcXVpcmVkIHRvICJhcm0iIHBvcnQuCgogY29uZmln
L2FybS5tayAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKysrCiB4ZW4vYXJjaC9hcm0v
TWFrZWZpbGUgICAgICAgICAgICAgIHwgICA0NyArKysrKwogeGVuL2FyY2gvYXJtL1J1bGVz
Lm1rICAgICAgICAgICAgICB8ICAgMjUgKysrCiB4ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxl
ICAgICAgICAgIHwgICAxMSArCiB4ZW4vYXJjaC9hcm0vbGliL2FzaGxkaTMuUyAgICAgICAg
IHwgICA0NSArKysrKwogeGVuL2FyY2gvYXJtL2xpYi9hc2hyZGkzLlMgICAgICAgICB8ICAg
NDYgKysrKysKIHhlbi9hcmNoL2FybS9saWIvYnBhYmktYXNtLlMgICAgICAgfCAgIDU1ICsr
KysrKwogeGVuL2FyY2gvYXJtL2xpYi9icGFiaS5jICAgICAgICAgICB8ICAgNTEgKysrKysr
CiB4ZW4vYXJjaC9hcm0vbGliL2NsZWFyYml0LlMgICAgICAgIHwgICAyNCArKwogeGVuL2Fy
Y2gvYXJtL2xpYi9jb3B5X3RlbXBsYXRlLlMgICB8ICAyNTUgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL2RlbGF5LlMgICAgICAgICAgIHwgICAg
NyArCiB4ZW4vYXJjaC9hcm0vbGliL2RpdjY0LlMgICAgICAgICAgIHwgIDE5OSArKysrKysr
KysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS9saWIvZmluZGJpdC5TICAgICAgICAg
fCAgIDgxICsrKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9nY2NsaWIuaCAgICAgICAgICB8
ICAgMzMgKysrKwogeGVuL2FyY2gvYXJtL2xpYi9nZXR1c2VyLlMgICAgICAgICB8ICAgNzcg
KysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL2xpYjFmdW5jcy5TICAgICAgIHwgIDI1NiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL2xvbmds
b25nLmggICAgICAgIHwgIDE4MyArKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h
cm0vbGliL2xzaHJkaTMuUyAgICAgICAgIHwgICAxNyArKwogeGVuL2FyY2gvYXJtL2xpYi9t
YXRoLmMgICAgICAgICAgICB8ICAgIDMgKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1jaHIuUyAg
ICAgICAgICB8ICAgMTQgKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1jcHkuUyAgICAgICAgICB8
ICAgNjAgKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1tb3ZlLlMgICAgICAgICB8ICAy
MDcgKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9tZW1vcnku
UyAgICAgICAgICB8ICA0MjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbGliL21lbXNldC5TICAgICAgICAgIHwg
ICA2OSArKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9tZW16ZXJvLlMgICAgICAgICB8ICAg
NzEgKysrKysrKysKIHhlbi9hcmNoL2FybS9saWIvbXVsZGkzLmMgICAgICAgICAgfCAgIDg2
ICsrKysrKysrKysKIHhlbi9hcmNoL2FybS9saWIvcHV0dXNlci5TICAgICAgICAgfCAgIDc1
ICsrKysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi9zZXRiaXQuUyAgICAgICAgICB8ICAgMjIg
KysKIHhlbi9hcmNoL2FybS9saWIvc3RyY2hyLlMgICAgICAgICAgfCAgIDE1ICsKIHhlbi9h
cmNoL2FybS9saWIvdGVzdGNoYW5nZWJpdC5TICAgfCAgIDIyICsrCiB4ZW4vYXJjaC9hcm0v
bGliL3Rlc3RjbGVhcmJpdC5TICAgIHwgICAyMiArKwogeGVuL2FyY2gvYXJtL2xpYi90ZXN0
c2V0Yml0LlMgICAgICB8ICAgMjAgKysKIHhlbi9hcmNoL2FybS9saWIvdWFjY2Vzcy5TICAg
ICAgICAgfCAgNjg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h
cm0vbGliL3VkaXZkaTMuYyAgICAgICAgIHwgIDI0MiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogeGVuL2FyY2gvYXJtL2xpYi91bGRpdm1vZC5TICAgICAgICB8ICAxNDggKysr
KysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS90ZWdyYS9NYWtlZmlsZSAgICAgICAgfCAg
ICAxICsKIHhlbi9hcmNoL2FybS90ZWdyYS9SdWxlcy5tayAgICAgICAgfCAgICAxICsKIHhl
bi9hcmNoL2FybS90ZWdyYS9kdW1teS5jICAgICAgICAgfCAgICAzICsKIHhlbi9hcmNoL2Fy
bS94ZW4vTWFrZWZpbGUgICAgICAgICAgfCAgIDE5ICsrCiB4ZW4vYXJjaC9hcm0veGVuL2Fy
Y2hfZG9tYWluLmMgICAgIHwgIDIxMiArKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v
YXJjaC9hcm0veGVuL2FyY2hfZG9tY3RsLmMgICAgIHwgICA0MyArKysrKwogeGVuL2FyY2gv
YXJtL3hlbi9hcmNoX3N5c2N0bC5jICAgICB8ICAgMzggKysrKwogeGVuL2FyY2gvYXJtL3hl
bi9hc20tb2Zmc2V0cy5jICAgICB8ICAgNDAgKysrKwogeGVuL2FyY2gvYXJtL3hlbi9idWcu
YyAgICAgICAgICAgICB8ICAgMzIgKysrCiB4ZW4vYXJjaC9hcm0veGVuL2NwdS5jICAgICAg
ICAgICAgIHwgICA5NyArKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3hlbi9jcmFzaC5jICAg
ICAgICAgICB8ICAgMjUgKysrCiB4ZW4vYXJjaC9hcm0veGVuL2RvbWFpbl9idWlsZC5jICAg
IHwgICA0NyArKysrKwogeGVuL2FyY2gvYXJtL3hlbi9kb21haW5fcGFnZS5jICAgICB8ICAg
MjIgKysKIHhlbi9hcmNoL2FybS94ZW4vZmF1bHQuYyAgICAgICAgICAgfCAgMTIzICsrKysr
KysrKysrKysrCiB4ZW4vYXJjaC9hcm0veGVuL2dyYW50X3RhYmxlLmMgICAgIHwgICA1MyAr
KysrKysKIHhlbi9hcmNoL2FybS94ZW4vaW9tbXUuYyAgICAgICAgICAgfCAgIDI0ICsrCiB4
ZW4vYXJjaC9hcm0veGVuL2lycS5jICAgICAgICAgICAgIHwgICA4NCArKysrKysrKysrCiB4
ZW4vYXJjaC9hcm0veGVuL21hY2hpbmVfa2V4ZWMuYyAgIHwgICAzMSArKysKIHhlbi9hcmNo
L2FybS94ZW4vbW0uYyAgICAgICAgICAgICAgfCAgMTk0ICsrKysrKysrKysrKysrKysrKysr
KysrCiB4ZW4vYXJjaC9hcm0veGVuL3AybS5jICAgICAgICAgICAgIHwgICA0NCArKysrKwog
eGVuL2FyY2gvYXJtL3hlbi9wY2kuYyAgICAgICAgICAgICB8ICAgNzQgKysrKysrKysKIHhl
bi9hcmNoL2FybS94ZW4vcGVyZm1vbi5jICAgICAgICAgfCAgIDI2ICsrKwogeGVuL2FyY2gv
YXJtL3hlbi9zZXR1cC5jICAgICAgICAgICB8ICAgNjQgKysrKysrKwogeGVuL2FyY2gvYXJt
L3hlbi9zaHV0ZG93bi5jICAgICAgICB8ICAgMzggKysrKwogeGVuL2FyY2gvYXJtL3hlbi90
aW1lLmMgICAgICAgICAgICB8ICAgODMgKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3hlbi90
bGIuYyAgICAgICAgICAgICB8ICAgMjYgKysrCiB4ZW4vYXJjaC9hcm0veGVuL3hlbi5sZHMu
UyAgICAgICAgIHwgIDE1OSArKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20t
YXJtL2FjcGkuaCAgICAgICAgIHwgICAgOCArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2FzbS1t
YWNyb3MuaCAgIHwgIDEwNiArKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vYXRv
bWljLmggICAgICAgfCAgMTc5ICsrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUv
YXNtLWFybS9iaXRvcHMuaCAgICAgICB8ICAxOTMgKysrKysrKysrKysrKysrKysrKysrKysK
IHhlbi9pbmNsdWRlL2FzbS1hcm0vYnVnLmggICAgICAgICAgfCAgIDMyICsrKwogeGVuL2lu
Y2x1ZGUvYXNtLWFybS9ieXRlb3JkZXIuaCAgICB8ICAgIDkgKwogeGVuL2luY2x1ZGUvYXNt
LWFybS9jYWNoZS5oICAgICAgICB8ICAgMTEgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9jb25m
aWcuaCAgICAgICB8ICAgNjEgKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9jcHUtZG9t
YWluLmggICB8ICAgMzkgKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmggICAg
ICB8ICAgNzMgKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vZGVidWdnZXIuaCAgICAg
fCAgIDI0ICsrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RlbGF5LmggICAgICAgIHwgICAgNiAr
CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RpdjY0LmggICAgICAgIHwgICA0MyArKysrKwogeGVu
L2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCAgICAgICB8ICAgNzkgKysrKysrKysrCiB4ZW4v
aW5jbHVkZS9hc20tYXJtL2VsZi5oICAgICAgICAgIHwgICA1MyArKysrKysKIHhlbi9pbmNs
dWRlL2FzbS1hcm0vZXZlbnQuaCAgICAgICAgfCAgIDM5ICsrKysKIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vZmx1c2h0bGIuaCAgICAgfCAgIDI1ICsrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9n
cmFudF90YWJsZS5oICB8ICAgNjIgKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9ndWVz
dF9hY2Nlc3MuaCB8ICAxMzYgKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFy
bS9oYXJkaXJxLmggICAgICB8ICAgMjEgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaHlwZXJj
YWxsLmggICAgfCAgIDY4ICsrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2luaXQuaCAg
ICAgICAgIHwgICAgNCArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2lvLmggICAgICAgICAgIHwg
ICAzMiArKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaW9jYXAuaCAgICAgICAgfCAgIDE1ICsK
IHhlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaCAgICAgICAgfCAgIDE0ICsKIHhlbi9pbmNs
dWRlL2FzbS1hcm0vaXJxLmggICAgICAgICAgfCAgIDUwICsrKysrKwogeGVuL2luY2x1ZGUv
YXNtLWFybS9tbS5oICAgICAgICAgICB8ICAyMzcgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9tbXUuaCAgICAgICAgICB8ICAgMTEgKwogeGVu
L2luY2x1ZGUvYXNtLWFybS9tdWx0aWNhbGwuaCAgICB8ICAgIDkgKwogeGVuL2luY2x1ZGUv
YXNtLWFybS9udW1hLmggICAgICAgICB8ICAgMjEgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0v
cDJtLmggICAgICAgICAgfCAgIDEwICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oICAg
ICAgICAgfCAgIDk1ICsrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BjaS5oICAg
ICAgICAgIHwgICAgOSArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oICAgICAgIHwg
ICAxNiArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3Byb2Nlc3Nvci5oICAgIHwgIDIxOSArKysr
KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9yZWdzLmggICAg
ICAgICB8ICAgMTcgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vc21wLmggICAgICAgICAgfCAg
IDI4ICsrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9zb2Z0aXJxLmggICAgICB8ICAgMTEgKwog
eGVuL2luY2x1ZGUvYXNtLWFybS9zcGlubG9jay5oICAgICB8ICAyMDAgKysrKysrKysrKysr
KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3N0cmluZy5oICAgICAgIHwgICA0
OSArKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9zeXN0ZW0uaCAgICAgICB8ICAxNDggKysr
KysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVncmEvY29uZmlnLmggfCAg
IDExICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGltZS5oICAgICAgICAgfCAgIDI0ICsrCiB4
ZW4vaW5jbHVkZS9hc20tYXJtL3RyYWNlLmggICAgICAgIHwgICAgNiArCiB4ZW4vaW5jbHVk
ZS9hc20tYXJtL3R5cGVzLmggICAgICAgIHwgICA1OCArKysrKysrCiB4ZW4vaW5jbHVkZS9h
c20tYXJtL3hlbm9wcm9mLmggICAgIHwgICA0MyArKysrKwogeGVuL2luY2x1ZGUvcHVibGlj
L2FyY2gtYXJtLmggICAgICB8ICAxODAgKysrKysrKysrKysrKysrKysrKysrCiAxMDkgZmls
ZXMgY2hhbmdlZCwgODAwOCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKU2lnbmVk
LW9mZi1ieTogSmFlbWluIFJ5dSA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CgpkaWZmIC1yIGU3
MDE0NjFiMTI1MSBjb25maWcvYXJtLm1rCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCisrKyBiL2NvbmZpZy9hcm0ubWsJRnJpIEZlYiAwMyAxNjowNzow
MyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMjggQEAKKyMKKyMgQ3Jvc3MgVG9vbCBjaGFpbiBj
b25maWd1cmF0aW9uCisjCitUT09MQ0hBSU5fUFJFRklYID0gL29wdC9hcm0tbm9uZS1saW51
eC1nbnVlYWJpLW9sZC9iaW4vYXJtLW5vbmUtbGludXgtZ251ZWFiaS0KKworIworIyBUb29s
Y2hhaW4gY29uZmlndXJhdGlvbgorIworQVMgICAgICAgICAgICAgID0gJChUT09MQ0hBSU5f
UFJFRklYKWFzCitMRCAgICAgICAgICAgICAgPSAkKFRPT0xDSEFJTl9QUkVGSVgpbGQKK0ND
ICAgICAgICAgICAgICA9ICQoVE9PTENIQUlOX1BSRUZJWClnY2MKK0NQUCAgICAgICAgICAg
ICA9ICQoVE9PTENIQUlOX1BSRUZJWClnY2MgLUUKK0FSICAgICAgICAgICAgICA9ICQoVE9P
TENIQUlOX1BSRUZJWClhcgorUkFOTElCICAgICAgICAgID0gJChUT09MQ0hBSU5fUFJFRklY
KXJhbmxpYgorTk0gICAgICAgICAgICAgID0gJChUT09MQ0hBSU5fUFJFRklYKW5tCitTVFJJ
UCAgICAgICAgICAgPSAkKFRPT0xDSEFJTl9QUkVGSVgpc3RyaXAKK09CSkNPUFkgICAgICAg
ICA9ICQoVE9PTENIQUlOX1BSRUZJWClvYmpjb3B5CitPQkpEVU1QICAgICAgICAgPSAkKFRP
T0xDSEFJTl9QUkVGSVgpb2JqZHVtcAorCitESVNURElSICAgICAgICAgPz0gJChYRU5fUk9P
VCkvZGlzdAorREVTVERJUiAgICAgICAgID89ICQoRElTVERJUikvaW5zdGFsbAorCitJTlNU
QUxMICAgICAgICAgPSBpbnN0YWxsCitJTlNUQUxMX0RJUiAgICAgPSAkKElOU1RBTEwpIC1k
IC1tMDc1NQorSU5TVEFMTF9EQVRBICAgID0gJChJTlNUQUxMKSAtbTA2NDQKK0lOU1RBTExf
UFJPRyAgICA9ICQoSU5TVEFMTCkgLW0wNzU1CisKK0NPTkZJR19BUk0JOj0geQpkaWZmIC1y
IGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL01ha2VmaWxl
CUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQ3IEBACisjCisj
IHhlbi9hcmNoL2FybS9NYWtlZmlsZQorIworCitpZm5kZWYgVEFSR0VUX1NVQkFSQ0gKKyQo
ZXJyb3IgWEVOX1RBUkdFVF9TVUJBUkNIIG11c3QgYmUgc3VwcGxpZWQuIFNlZSBDb25maWcu
bWsgZmlsZSkKK2VuZGlmCisKK3N1YmRpci15ICs9ICQoVEFSR0VUX1NVQkFSQ0gpIHhlbiBs
aWIKKworT0JKQ09QWUZMQUdTICAgIDo9LU8gYmluYXJ5IC1SIC5ub3RlIC1SIC5jb21tZW50
IC1TCisKKyQoVEFSR0VUKTogJChUQVJHRVQpLXN5bXMKKwkkKE5NKSAtbiAkPCB8IGdyZXAg
LXYgJyBbYVV3XSAnID4gJChARCkvU3lzdGVtLm1hcAorCSQoT0JKQ09QWSkgLU8gYmluYXJ5
IC1SIC5ub3RlIC1SIC5jb21tZW50IC1TICQ8ICRACisKKyQoVEFSR0VUKS1zeW1zOiB4ZW4u
bGRzICQoQUxMX09CSlMpIAorCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAkKEJB
U0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8KKwkkKExEKSAkKExERkxBR1MpIC1UIHhl
bi5sZHMgLU4gLU1hcCAkKEBEKS8uJChARikuMC5tYXAgJChBTExfT0JKUykgXAorCSQoQkFT
RURJUikvY29tbW9uL3N5bWJvbHMtZHVtbXkubyAtbyAkKEBEKS8uJChARikuMAorCSQoTk0p
IC1uICQoQEQpLy4kKEBGKS4wIHwgJChCQVNFRElSKS90b29scy9zeW1ib2xzID4kKEBEKS8u
JChARikuMC5TCisJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVzLm1rICQoQEQpLy4kKEBG
KS4wLm8KKwkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5sZHMgLU4gLU1hcCAkKEBEKS8uJChA
RikuMS5tYXAgJChBTExfT0JKUykgXAorCSQoQEQpLy4kKEBGKS4wLm8gLW8gJChARCkvLiQo
QEYpLjEKKwkkKE5NKSAtbiAkKEBEKS8uJChARikuMSB8ICQoQkFTRURJUikvdG9vbHMvc3lt
Ym9scyA+JChARCkvLiQoQEYpLjEuUworCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5t
ayAkKEBEKS8uJChARikuMS5vCisJJChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIC1N
YXAgJEAubWFwICQoQUxMX09CSlMpIFwKKwkkKEBEKS8uJChARikuMS5vIC1vICRACisJcm0g
LWYgJChARCkvLiQoQEYpLlswLTldKgorCisKK3hlbi5sZHM6ICQoQkFTRURJUikvaW5jbHVk
ZS9hc20vYXJjaAorCSQoQ0MpIC1FICQoQ0ZMQUdTKSAtUCAkKEFGTEFHUykgLW8gJEAgeGVu
L3hlbi5sZHMuUworCitjbGVhbjo6IEZPUkNFCisJcm0gLWYgeGVuLWJpbiB4ZW4tc3ltcyB4
ZW4ubGRzIGFzbS1vZmZzZXRzLnMKKwlybSAtZiAqLm8gJChUQVJHRVRfU1VCQVJDSCkvKi5v
IGxpYi8qLm8geGVuLyoubyB4ZW4ubGRzCisJcm0gLWYgJChCQVNFRElSKS9pbmNsdWRlL2Fz
bS1hcm0vYXJjaAorCXJtIC1mICQoQkFTRURJUikvaW5jbHVkZS9hc20KKworYXNtLW9mZnNl
dHMuczogJChCQVNFRElSKS9pbmNsdWRlL2FzbS9hcmNoCisJJChDQykgJChDRkxBR1MpIC1T
IC1vICRAIHhlbi9hc20tb2Zmc2V0cy5jCisKKyQoQkFTRURJUikvaW5jbHVkZS9hc20vYXJj
aDoKKwlbIC1lICQoQkFTRURJUikvaW5jbHVkZS9hc20vYXJjaCBdIHx8IFwKKwlsbiAtc2Yg
JChCQVNFRElSKS9pbmNsdWRlL2FzbS8kKFRBUkdFVF9TVUJBUkNIKSAkKEJBU0VESVIpL2lu
Y2x1ZGUvYXNtL2FyY2gKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vUnVs
ZXMubWsKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIveGVuL2FyY2gvYXJtL1J1bGVzLm1rCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDI1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjIGFybS1zcGVjaWZpYyBkZWZpbml0aW9ucworCisjCisjIElmIHlvdSBjaGFu
Z2UgYW55IG9mIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGVuIHlvdSBtdXN0Cisj
ICdtYWtlIGNsZWFuJyBiZWZvcmUgcmVidWlsZGluZy4KKyMKKworaWZlcSAoJChUQVJHRVRf
U1VCQVJDSCksKQorJChlcnJvciAiWEVOX1RBUkdFVF9TVUJBUkNIIG11c3QgYmUgc3VwcGxp
ZWQuIikKK2VuZGlmCisKK3hlbm9wcm9mIDo9IHkKKworIyBFYWNoIFNvQyBtYXkgaGF2ZSBp
dHMgb3duIGJ1aWxkIHJ1bGVzCistaW5jbHVkZSAkKEJBU0VESVIpL2FyY2gvJChUQVJHRVRf
QVJDSCkvJChUQVJHRVRfU1VCQVJDSCkvUnVsZXMubWsKKworQ0ZMQUdTCSs9IC1tYWJpPWFh
cGNzLWxpbnV4IC1tbm8tdGh1bWItaW50ZXJ3b3JrIC1mbm8tYnVpbHRpbiAtZm5vLWNvbW1v
bgorQ0ZMQUdTICArPSAtbm9zdGRpbmMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLW1uby10aHVt
Yi1pbnRlcndvcmsKK0NGTEFHUyAgKz0gLWl3aXRocHJlZml4IGluY2x1ZGUgLVduby1wb2lu
dGVyLWFyaXRoIC1waXBlCitDRkxBR1MgICs9IC1JJChCQVNFRElSKS9pbmNsdWRlIC1JJChC
QVNFRElSKS9pbmNsdWRlL3NlY3VyaXR5IC1JJChCQVNFRElSKS9pbmNsdWRlL3NlY3VyaXR5
L2NyeXB0bworQ0ZMQUdTCSs9ICQoQ0ZMQUdTLXkpCisKKworCmRpZmYgLXIgZTcwMTQ2MWIx
MjUxIHhlbi9hcmNoL2FybS9saWIvTWFrZWZpbGUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9NYWtlZmlsZQlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMSBAQAorb2JqLXkg
Kz0gZGl2NjQubworb2JqLXkgKz0gbWVtemVyby5vIG1lbXNldC5vIG1lbWNweS5vIG1lbWNo
ci5vIG1lbW1vdmUubworb2JqLXkgKz0gc3RyY2hyLm8gbGliMWZ1bmNzLm8gCitvYmoteSAr
PSBjbGVhcmJpdC5vIHRlc3RjaGFuZ2ViaXQubyB0ZXN0Y2xlYXJiaXQubyB0ZXN0c2V0Yml0
Lm8gc2V0Yml0Lm8gZmluZGJpdC5vCitvYmoteSArPSBnZXR1c2VyLm8gcHV0dXNlci5vIHVh
Y2Nlc3Mubworb2JqLXkgKz0gYXNobGRpMy5vIGFzaHJkaTMubworCitvYmoteSArPSBtdWxk
aTMubworb2JqLXkgKz0gZGVsYXkubworb2JqLXkgKz0gbHNocmRpMy5vIGJwYWJpLm8gYnBh
YmktYXNtLm8KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL2FzaGxk
aTMuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysg
Yi94ZW4vYXJjaC9hcm0vbGliL2FzaGxkaTMuUwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSw0NSBAQAorLyogQ29weXJpZ2h0IDE5OTUsIDE5OTYsIDE5OTgs
IDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAordW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCitGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55CitsYXRlciB2ZXJzaW9uLgorCitJbiBhZGRpdGlvbiB0byB0aGUgcGVybWlzc2lv
bnMgaW4gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB0aGUKK0ZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiBnaXZlcyB5b3UgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gbGluayB0
aGUKK2NvbXBpbGVkIHZlcnNpb24gb2YgdGhpcyBmaWxlIGludG8gY29tYmluYXRpb25zIHdp
dGggb3RoZXIgcHJvZ3JhbXMsCithbmQgdG8gZGlzdHJpYnV0ZSB0aG9zZSBjb21iaW5hdGlv
bnMgd2l0aG91dCBhbnkgcmVzdHJpY3Rpb24gY29taW5nCitmcm9tIHRoZSB1c2Ugb2YgdGhp
cyBmaWxlLiAgKFRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlc3RyaWN0aW9ucworZG8g
YXBwbHkgaW4gb3RoZXIgcmVzcGVjdHM7IGZvciBleGFtcGxlLCB0aGV5IGNvdmVyIG1vZGlm
aWNhdGlvbiBvZgordGhlIGZpbGUsIGFuZCBkaXN0cmlidXRpb24gd2hlbiBub3QgbGlua2Vk
IGludG8gYSBjb21iaW5lCitleGVjdXRhYmxlLikKKworVGhpcyBmaWxlIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy4gIElmIG5vdCwgd3JpdGUgdG8KK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCitCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4gICovCisKKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxh
c20vYXNtLW1hY3Jvcy5oPgorCisjZGVmaW5lIGFsIHIwCisjZGVmaW5lIGFoIHIxCisKK0VO
VFJZKF9fYXNobGRpMykKK0VOVFJZKF9fYWVhYmlfbGxzbCkKKworCXN1YnMJcjMsIHIyLCAj
MzIKKwlyc2IJaXAsIHIyLCAjMzIKKwltb3ZtaQlhaCwgYWgsIGxzbCByMgorCW1vdnBsCWFo
LCBhbCwgbHNsIHIzCisJb3JybWkJYWgsIGFoLCBhbCwgbHNyIGlwCisJbW92CWFsLCBhbCwg
bHNsIHIyCisJbW92CXBjLCBscgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2Fy
bS9saWIvYXNocmRpMy5TCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvYXNocmRpMy5TCUZyaSBGZWIgMDMgMTY6
MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQ2IEBACisvKiBDb3B5cmlnaHQgMTk5NSwg
MTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNQorICAgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cit1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkKK2xhdGVyIHZlcnNpb24uCisKK0luIGFkZGl0aW9uIHRvIHRo
ZSBwZXJtaXNzaW9ucyBpbiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHRoZQor
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzIHlvdSB1bmxpbWl0ZWQgcGVybWlzc2lv
biB0byBsaW5rIHRoZQorY29tcGlsZWQgdmVyc2lvbiBvZiB0aGlzIGZpbGUgaW50byBjb21i
aW5hdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcywKK2FuZCB0byBkaXN0cmlidXRlIHRob3Nl
IGNvbWJpbmF0aW9ucyB3aXRob3V0IGFueSByZXN0cmljdGlvbiBjb21pbmcKK2Zyb20gdGhl
IHVzZSBvZiB0aGlzIGZpbGUuICAoVGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVzdHJp
Y3Rpb25zCitkbyBhcHBseSBpbiBvdGhlciByZXNwZWN0czsgZm9yIGV4YW1wbGUsIHRoZXkg
Y292ZXIgbW9kaWZpY2F0aW9uIG9mCit0aGUgZmlsZSwgYW5kIGRpc3RyaWJ1dGlvbiB3aGVu
IG5vdCBsaW5rZWQgaW50byBhIGNvbWJpbmUKK2V4ZWN1dGFibGUuKQorCitUaGlzIGZpbGUg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0
CitXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCitNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0bwordGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKK0Jvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgor
I2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9hc20tbWFjcm9zLmg+CisK
KyNkZWZpbmUgYWwgcjAKKyNkZWZpbmUgYWggcjEKKworRU5UUlkoX19hc2hyZGkzKQorRU5U
UlkoX19hZWFiaV9sYXNyKQorCisJc3VicwlyMywgcjIsICMzMgorCXJzYglpcCwgcjIsICMz
MgorCW1vdm1pCWFsLCBhbCwgbHNyIHIyCisJbW92cGwJYWwsIGFoLCBhc3IgcjMKKwlvcnJt
aQlhbCwgYWwsIGFoLCBsc2wgaXAKKwltb3YJYWgsIGFoLCBhc3IgcjIKKwltb3YJcGMsIGxy
CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL2xpYi9icGFiaS1hc20uUwot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4v
YXJjaC9hcm0vbGliL2JwYWJpLWFzbS5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDU1IEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUg
PGFzbS9hc20tbWFjcm9zLmg+CisKKyNpZmRlZiBfX0FSTUVCX18KKyNkZWZpbmUgeHhoIHIw
CisjZGVmaW5lIHh4bCByMQorI2RlZmluZSB5eWggcjIKKyNkZWZpbmUgeXlsIHIzCisjZWxz
ZQorI2RlZmluZSB4eGggcjEKKyNkZWZpbmUgeHhsIHIwCisjZGVmaW5lIHl5aCByMworI2Rl
ZmluZSB5eWwgcjIKKyNlbmRpZgkKKwkKKyNpZiAwCitFTlRSWShfX2FlYWJpX2xkaXZtb2Qp
CisJc3RtZmQJc3AhLCB7cjQtcjcsIHIxMSwgcjE0fQorCW1vdglyNiwgcjAKKwltb3YJcjcs
IHIxCisJbW92CXI1LCByMgorCW1vdglyNCwgcjMKKworCWJsCV9fZGl2ZGkzCisKKwltdWwJ
cjQsIHIwLCByNAorCW1sYQlyMTIsIHI1LCByMSwgcjQKKworCXVtdWxsCXIyLCByMywgcjAs
IHI1CisJYWRkCXIzLCByMTIsIHIzCisJc3VicwlyMiwgcjUsIHIyCisJc2JjCXIzLCByNywg
cjMKKwlsZG1mZAlzcCEsIHtyNC1yNywgcjExLCByMTR9CisKKwlieAlyMTQKKyNlbmRpZgor
CitFTlRSWShfX2FlYWJpX2xkaXZtb2QpCisJc3ViCXNwLCBzcCwgIzgKKwlzdG1mZAlzcCEs
IHtzcCwgbHJ9CisJYmwJX19nbnVfbGRpdm1vZF9oZWxwZXIgKFBMVCkKKwlsZHIJbHIsIFtz
cCwgIzRdCisJYWRkCXNwLCBzcCwgIzgKKwlsZG1mZAlzcCEsIHtyMiwgcjN9CisJYngJbHIK
KwkKK0VOVFJZKF9fYWVhYmlfdWxkaXZtb2QpCisJc3ViCXNwLCBzcCwgIzgKKwlzdG1mZAlz
cCEsIHtzcCwgbHJ9CisJYmwJX19nbnVfdWxkaXZtb2RfaGVscGVyIChQTFQpCisJbGRyCWxy
LCBbc3AsICM0XQorCWFkZAlzcCwgc3AsICM4CisJbGRtZmQJc3AhLCB7cjIsIHIzfQorCWJ4
CWxyCisJCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvYnBhYmkuYwot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4v
YXJjaC9hcm0vbGliL2JwYWJpLmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBA
IC0wLDAgKzEsNTEgQEAKKy8qIE1pc2NlbGxhbmVvdXMgQlBBQkkgZnVuY3Rpb25zLgorCisg
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgorICAgQ29udHJpYnV0ZWQgYnkgQ29kZVNvdXJjZXJ5LCBMTEMuCisKKyAgIFRoaXMg
ZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKyAgIGxh
dGVyIHZlcnNpb24uCisKKyAgIEluIGFkZGl0aW9uIHRvIHRoZSBwZXJtaXNzaW9ucyBpbiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHRoZQorICAgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uIGdpdmVzIHlvdSB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBsaW5rIHRoZQor
ICAgY29tcGlsZWQgdmVyc2lvbiBvZiB0aGlzIGZpbGUgaW50byBjb21iaW5hdGlvbnMgd2l0
aCBvdGhlciBwcm9ncmFtcywKKyAgIGFuZCB0byBkaXN0cmlidXRlIHRob3NlIGNvbWJpbmF0
aW9ucyB3aXRob3V0IGFueSByZXN0cmljdGlvbiBjb21pbmcKKyAgIGZyb20gdGhlIHVzZSBv
ZiB0aGlzIGZpbGUuICAoVGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVzdHJpY3Rpb25z
CisgICBkbyBhcHBseSBpbiBvdGhlciByZXNwZWN0czsgZm9yIGV4YW1wbGUsIHRoZXkgY292
ZXIgbW9kaWZpY2F0aW9uIG9mCisgICB0aGUgZmlsZSwgYW5kIGRpc3RyaWJ1dGlvbiB3aGVu
IG5vdCBsaW5rZWQgaW50byBhIGNvbWJpbmUKKyAgIGV4ZWN1dGFibGUuKQorCisgICBUaGlz
IGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwgYnV0CisgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0
bworICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCitleHRl
cm4gbG9uZyBsb25nIF9fZGl2ZGkzIChsb25nIGxvbmcsIGxvbmcgbG9uZyk7CitleHRlcm4g
dW5zaWduZWQgbG9uZyBsb25nIF9fdWRpdmRpMyAodW5zaWduZWQgbG9uZyBsb25nLCB1bnNp
Z25lZCBsb25nIGxvbmcpOworCitsb25nIGxvbmcgX19nbnVfbGRpdm1vZF9oZWxwZXIgKGxv
bmcgbG9uZyBhLCBsb25nIGxvbmcgYiwgbG9uZyBsb25nICpyZW1haW5kZXIpCit7CisJbG9u
ZyBsb25nIHF1b3RpZW50OworCisJcXVvdGllbnQgPSBfX2RpdmRpMyAoYSwgYik7CisJKnJl
bWFpbmRlciA9IGEgLSBiICogcXVvdGllbnQ7CisJcmV0dXJuIHF1b3RpZW50OworfQorCit1
bnNpZ25lZCBsb25nIGxvbmcgX19nbnVfdWxkaXZtb2RfaGVscGVyICh1bnNpZ25lZCBsb25n
IGxvbmcgYSwgdW5zaWduZWQgbG9uZyBsb25nIGIsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcmVt
YWluZGVyKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyBxdW90aWVudDsKKworCXF1b3RpZW50
ID0gX191ZGl2ZGkzIChhLCBiKTsKKwkqcmVtYWluZGVyID0gYSAtIGIgKiBxdW90aWVudDsK
KworCXJldHVybiBxdW90aWVudDsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJj
aC9hcm0vbGliL2NsZWFyYml0LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9jbGVhcmJpdC5TCUZyaSBGZWIg
MDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDI0IEBACisjaW5jbHVkZSA8eGVu
L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20v
YXNtLW1hY3Jvcy5oPgorCisgICAgICAgICAgICAgICAgLnRleHQKKworLyoKKyAqIFB1cnBv
c2UgIDogRnVuY3Rpb24gdG8gY2xlYXIgYSBiaXQKKyAqIFByb3RvdHlwZTogaW50IGNsZWFy
X2JpdChpbnQgYml0LCB2b2lkICphZGRyKQorICovCitFTlRSWShfY2xlYXJfYml0X2JlKQor
CQllb3IJcjAsIHIwLCAjMHgxOAkJQCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXJpbmcKK0VOVFJZ
KF9jbGVhcl9iaXRfbGUpCisJCWFuZAlyMiwgcjAsICM3CisJCW1vdglyMywgIzEKKwkJbW92
CXIzLCByMywgbHNsIHIyCisJCXNhdmVfYW5kX2Rpc2FibGVfaXJxcyBpcCwgcjIKKwkJbGRy
YglyMiwgW3IxLCByMCwgbHNyICMzXQorCQliaWMJcjIsIHIyLCByMworCQlzdHJiCXIyLCBb
cjEsIHIwLCBsc3IgIzNdCisJCXJlc3RvcmVfaXJxcyBpcAorCQltb3YJcGMsbHIKKworCmRp
ZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvY29weV90ZW1wbGF0ZS5TCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9h
cmNoL2FybS9saWIvY29weV90ZW1wbGF0ZS5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiAr
MDkwMApAQCAtMCwwICsxLDI1NSBAQAorLyoKKyAqICBsaW51eC9hcmNoL2FybS9saWIvY29w
eV90ZW1wbGF0ZS5zCisgKgorICogIENvZGUgdGVtcGxhdGUgZm9yIG9wdGltaXplZCBtZW1v
cnkgY29weSBmdW5jdGlvbnMKKyAqCisgKiAgQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiAg
Q3JlYXRlZDoJU2VwIDI4LCAyMDA1CisgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3
YXJlLCBJbmMuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAq
ICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisv
KgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBlbmFibGUgY29kZSB0byBjYWNoZWxpbmUgYWxp
Z24gdGhlIHNvdXJjZSBwb2ludGVyLgorICogRXhwZXJpbWVudHMgb24gdGVzdGVkIGFyY2hp
dGVjdHVyZXMgKFN0cm9uZ0FSTSBhbmQgWFNjYWxlKSBkaWRuJ3Qgc2hvdworICogdGhpcyBh
IHdvcnRod2hpbGUgdGhpbmcgdG8gZG8uICBUaGF0IG1pZ2h0IGJlIGRpZmZlcmVudCBpbiB0
aGUgZnV0dXJlLgorICovCisvLyNkZWZpbmUgQ0FMR04oY29kZS4uLikJY29kZQorI2RlZmlu
ZSBDQUxHTihjb2RlLi4uKQorCisvKgorICogVGhlb3J5IG9mIG9wZXJhdGlvbgorICogLS0t
LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgZmlsZSBwcm92aWRlcyB0aGUgY29yZSBj
b2RlIGZvciBhIGZvcndhcmQgbWVtb3J5IGNvcHkgdXNlZCBpbgorICogdGhlIGltcGxlbWVu
dGF0aW9uIG9mIG1lbWNvcHkoKSwgY29weV90b191c2VyKCkgYW5kIGNvcHlfZnJvbV91c2Vy
KCkuCisgKgorICogVGhlIGluY2x1ZGluZyBmaWxlIG11c3QgZGVmaW5lIHRoZSBmb2xsb3dp
bmcgYWNjZXNzb3IgbWFjcm9zCisgKiBhY2NvcmRpbmcgdG8gdGhlIG5lZWQgb2YgdGhlIGdp
dmVuIGZ1bmN0aW9uOgorICoKKyAqIGxkcjF3IHB0ciByZWcgYWJvcnQKKyAqCisgKglUaGlz
IGxvYWRzIG9uZSB3b3JkIGZyb20gJ3B0cicsIHN0b3JlcyBpdCBpbiAncmVnJyBhbmQgaW5j
cmVtZW50cworICoJJ3B0cicgdG8gdGhlIG5leHQgd29yZC4gVGhlICdhYm9ydCcgYXJndW1l
bnQgaXMgdXNlZCBmb3IgZml4dXAgdGFibGVzLgorICoKKyAqIGxkcjR3IHB0ciByZWcxIHJl
ZzIgcmVnMyByZWc0IGFib3J0CisgKiBsZHI4dyBwdHIsIHJlZzEgcmVnMiByZWczIHJlZzQg
cmVnNSByZWc2IHJlZzcgcmVnOCBhYm9ydAorICoKKyAqCVRoaXMgbG9hZHMgZm91ciBvciBl
aWdodCB3b3JkcyBzdGFydGluZyBmcm9tICdwdHInLCBzdG9yZXMgdGhlbQorICoJaW4gcHJv
dmlkZWQgcmVnaXN0ZXJzIGFuZCBpbmNyZW1lbnRzICdwdHInIHBhc3QgdGhvc2Ugd29yZHMu
CisgKglUaGUnYWJvcnQnIGFyZ3VtZW50IGlzIHVzZWQgZm9yIGZpeHVwIHRhYmxlcy4KKyAq
CisgKiBsZHIxYiBwdHIgcmVnIGNvbmQgYWJvcnQKKyAqCisgKglTaW1pbGFyIHRvIGxkcjF3
LCBidXQgaXQgbG9hZHMgYSBieXRlIGFuZCBpbmNyZW1lbnRzICdwdHInIG9uZSBieXRlLgor
ICoJSXQgYWxzbyBtdXN0IGFwcGx5IHRoZSBjb25kaXRpb24gY29kZSBpZiBwcm92aWRlZCwg
b3RoZXJ3aXNlIHRoZQorICoJImFsIiBjb25kaXRpb24gaXMgYXNzdW1lZCBieSBkZWZhdWx0
LgorICoKKyAqIHN0cjF3IHB0ciByZWcgYWJvcnQKKyAqIHN0cjh3IHB0ciByZWcxIHJlZzIg
cmVnMyByZWc0IHJlZzUgcmVnNiByZWc3IHJlZzggYWJvcnQKKyAqIHN0cjFiIHB0ciByZWcg
Y29uZCBhYm9ydAorICoKKyAqCVNhbWUgYXMgdGhlaXIgbGRyKiBjb3VudGVycGFydHMsIGJ1
dCBkYXRhIGlzIHN0b3JlZCB0byAncHRyJyBsb2NhdGlvbgorICoJcmF0aGVyIHRoYW4gYmVp
bmcgbG9hZGVkLgorICoKKyAqIGVudGVyIHJlZzEgcmVnMgorICoKKyAqCVByZXNlcnZlIHRo
ZSBwcm92aWRlZCByZWdpc3RlcnMgb24gdGhlIHN0YWNrIHBsdXMgYW55IGFkZGl0aW9uYWwK
KyAqCWRhdGEgYXMgbmVlZGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBpbmNsdWRpbmcgdGhp
cyBjb2RlLiBDYWxsZWQKKyAqCXVwb24gY29kZSBlbnRyeS4KKyAqCisgKiBleGl0IHJlZzEg
cmVnMgorICoKKyAqCVJlc3RvcmUgcmVnaXN0ZXJzIHdpdGggdGhlIHZhbHVlcyBwcmV2aW91
c2x5IHNhdmVkIHdpdGggdGhlCisgKgkncHJlc2VydicgbWFjcm8uIENhbGxlZCB1cG9uIGNv
ZGUgdGVybWluYXRpb24uCisgKi8KKworCisJCWVudGVyCXI0LCBscgorCisJCXN1YnMJcjIs
IHIyLCAjNAorCQlibHQJOGYKKwkJYW5kcwlpcCwgcjAsICMzCisJCXBsZAlbcjEsICMwXQor
CQlibmUJOWYKKwkJYW5kcwlpcCwgcjEsICMzCisJCWJuZQkxMGYKKworMToJCXN1YnMJcjIs
IHIyLCAjKDI4KQorCQlzdG1mZAlzcCEsIHtyNSAtIHI4fQorCQlibHQJNWYKKworCUNBTEdO
KAlhbmRzCWlwLCByMSwgIzMxCQkpCisJQ0FMR04oCXJzYglyMywgaXAsICMzMgkJKQorCUNB
TEdOKAlzYmNuZXMJcjQsIHIzLCByMgkJKSAgQCBDIGlzIGFsd2F5cyBzZXQgaGVyZQorCUNB
TEdOKAliY3MJMmYJCQkpCisJQ0FMR04oCWFkcglyNCwgNmYJCQkpCisJQ0FMR04oCXN1YnMJ
cjIsIHIyLCByMwkJKSAgQCBDIGdldHMgc2V0CisJQ0FMR04oCWFkZAlwYywgcjQsIGlwCQkp
CisKKwkJcGxkCVtyMSwgIzBdCisyOgkJc3VicwlyMiwgcjIsICM5NgorCQlwbGQJW3IxLCAj
MjhdCisJCWJsdAk0ZgorCQlwbGQJW3IxLCAjNjBdCisJCXBsZAlbcjEsICM5Ml0KKworMzoJ
CXBsZAlbcjEsICMxMjRdCis0OgkJbGRyOHcJcjEsIHIzLCByNCwgcjUsIHI2LCByNywgcjgs
IGlwLCBsciwgYWJvcnQ9MjBmCisJCXN1YnMJcjIsIHIyLCAjMzIKKwkJc3RyOHcJcjAsIHIz
LCByNCwgcjUsIHI2LCByNywgcjgsIGlwLCBsciwgYWJvcnQ9MjBmCisJCWJnZQkzYgorCQlj
bW4JcjIsICM5NgkKKwkJYmdlCTRiCisKKzU6CQlhbmRzCWlwLCByMiwgIzI4CisJCXJzYglp
cCwgaXAsICMzMgorCQlhZGRuZQlwYywgcGMsIGlwCQlAIEMgaXMgYWx3YXlzIGNsZWFyIGhl
cmUKKwkJYgk3ZgorNjoJCW5vcAorCQlsZHIxdwlyMSwgcjMsIGFib3J0PTIwZgorCQlsZHIx
dwlyMSwgcjQsIGFib3J0PTIwZgorCQlsZHIxdwlyMSwgcjUsIGFib3J0PTIwZgorCQlsZHIx
dwlyMSwgcjYsIGFib3J0PTIwZgorCQlsZHIxdwlyMSwgcjcsIGFib3J0PTIwZgorCQlsZHIx
dwlyMSwgcjgsIGFib3J0PTIwZgorCQlsZHIxdwlyMSwgbHIsIGFib3J0PTIwZgorCisJCWFk
ZAlwYywgcGMsIGlwCisJCW5vcAorCQlub3AKKwkJc3RyMXcJcjAsIHIzLCBhYm9ydD0yMGYK
KwkJc3RyMXcJcjAsIHI0LCBhYm9ydD0yMGYKKwkJc3RyMXcJcjAsIHI1LCBhYm9ydD0yMGYK
KwkJc3RyMXcJcjAsIHI2LCBhYm9ydD0yMGYKKwkJc3RyMXcJcjAsIHI3LCBhYm9ydD0yMGYK
KwkJc3RyMXcJcjAsIHI4LCBhYm9ydD0yMGYKKwkJc3RyMXcJcjAsIGxyLCBhYm9ydD0yMGYK
KworCUNBTEdOKAliY3MJMmIJCQkpCisKKzc6CQlsZG1mZAlzcCEsIHtyNSAtIHI4fQorCis4
OgkJbW92cwlyMiwgcjIsIGxzbCAjMzEKKwkJbGRyMWIJcjEsIHIzLCBuZSwgYWJvcnQ9MjFm
CisJCWxkcjFiCXIxLCByNCwgY3MsIGFib3J0PTIxZgorCQlsZHIxYglyMSwgaXAsIGNzLCBh
Ym9ydD0yMWYKKwkJc3RyMWIJcjAsIHIzLCBuZSwgYWJvcnQ9MjFmCisJCXN0cjFiCXIwLCBy
NCwgY3MsIGFib3J0PTIxZgorCQlzdHIxYglyMCwgaXAsIGNzLCBhYm9ydD0yMWYKKworCQll
eGl0CXI0LCBwYworCis5OgkJcnNiCWlwLCBpcCwgIzQKKwkJY21wCWlwLCAjMgorCQlsZHIx
YglyMSwgcjMsIGd0LCBhYm9ydD0yMWYKKwkJbGRyMWIJcjEsIHI0LCBnZSwgYWJvcnQ9MjFm
CisJCWxkcjFiCXIxLCBsciwgYWJvcnQ9MjFmCisJCXN0cjFiCXIwLCByMywgZ3QsIGFib3J0
PTIxZgorCQlzdHIxYglyMCwgcjQsIGdlLCBhYm9ydD0yMWYKKwkJc3VicwlyMiwgcjIsIGlw
CisJCXN0cjFiCXIwLCBsciwgYWJvcnQ9MjFmCisJCWJsdAk4YgorCQlhbmRzCWlwLCByMSwg
IzMKKwkJYmVxCTFiCisKKzEwOgkJYmljCXIxLCByMSwgIzMKKwkJY21wCWlwLCAjMgorCQls
ZHIxdwlyMSwgbHIsIGFib3J0PTIxZgorCQliZXEJMTdmCisJCWJndAkxOGYKKworCisJCS5t
YWNybwlmb3J3YXJkX2NvcHlfc2hpZnQgcHVsbCBwdXNoCisKKwkJc3VicwlyMiwgcjIsICMy
OAorCQlibHQJMTRmCisKKwlDQUxHTigJYW5kcwlpcCwgcjEsICMzMQkJKQorCUNBTEdOKAly
c2IJaXAsIGlwLCAjMzIJCSkKKwlDQUxHTigJc2JjbmVzCXI0LCBpcCwgcjIJCSkgIEAgQyBp
cyBhbHdheXMgc2V0IGhlcmUKKwlDQUxHTigJc3ViY2MJcjIsIHIyLCBpcAkJKQorCUNBTEdO
KAliY2MJMTVmCQkJKQorCisxMToJCXN0bWZkCXNwISwge3I1IC0gcjl9CisKKwkJcGxkCVty
MSwgIzBdCisJCXN1YnMJcjIsIHIyLCAjOTYKKwkJcGxkCVtyMSwgIzI4XQorCQlibHQJMTNm
CisJCXBsZAlbcjEsICM2MF0KKwkJcGxkCVtyMSwgIzkyXQorCisxMjoJCXBsZAlbcjEsICMx
MjRdCisxMzoJCWxkcjR3CXIxLCByNCwgcjUsIHI2LCByNywgYWJvcnQ9MTlmCisJCW1vdgly
MywgbHIsIHB1bGwgI1xwdWxsCisJCXN1YnMJcjIsIHIyLCAjMzIKKwkJbGRyNHcJcjEsIHI4
LCByOSwgaXAsIGxyLCBhYm9ydD0xOWYKKwkJb3JyCXIzLCByMywgcjQsIHB1c2ggI1xwdXNo
CisJCW1vdglyNCwgcjQsIHB1bGwgI1xwdWxsCisJCW9ycglyNCwgcjQsIHI1LCBwdXNoICNc
cHVzaAorCQltb3YJcjUsIHI1LCBwdWxsICNccHVsbAorCQlvcnIJcjUsIHI1LCByNiwgcHVz
aCAjXHB1c2gKKwkJbW92CXI2LCByNiwgcHVsbCAjXHB1bGwKKwkJb3JyCXI2LCByNiwgcjcs
IHB1c2ggI1xwdXNoCisJCW1vdglyNywgcjcsIHB1bGwgI1xwdWxsCisJCW9ycglyNywgcjcs
IHI4LCBwdXNoICNccHVzaAorCQltb3YJcjgsIHI4LCBwdWxsICNccHVsbAorCQlvcnIJcjgs
IHI4LCByOSwgcHVzaCAjXHB1c2gKKwkJbW92CXI5LCByOSwgcHVsbCAjXHB1bGwKKwkJb3Jy
CXI5LCByOSwgaXAsIHB1c2ggI1xwdXNoCisJCW1vdglpcCwgaXAsIHB1bGwgI1xwdWxsCisJ
CW9ycglpcCwgaXAsIGxyLCBwdXNoICNccHVzaAorCQlzdHI4dwlyMCwgcjMsIHI0LCByNSwg
cjYsIHI3LCByOCwgcjksIGlwLCAsIGFib3J0PTE5ZgorCQliZ2UJMTJiCisJCWNtbglyMiwg
Izk2CQorCQliZ2UJMTNiCisKKwkJbGRtZmQJc3AhLCB7cjUgLSByOX0KKworMTQ6CQlhbmRz
CWlwLCByMiwgIzI4CisJCWJlcQkxNmYKKworMTU6CQltb3YJcjMsIGxyLCBwdWxsICNccHVs
bAorCQlsZHIxdwlyMSwgbHIsIGFib3J0PTIxZgorCQlzdWJzCWlwLCBpcCwgIzQKKwkJb3Jy
CXIzLCByMywgbHIsIHB1c2ggI1xwdXNoCisJCXN0cjF3CXIwLCByMywgYWJvcnQ9MjFmCisJ
CWJndAkxNWIKKwlDQUxHTigJY21wCXIyLCAjMAkJCSkKKwlDQUxHTigJYmdlCTExYgkJCSkK
KworMTY6CQlzdWIJcjEsIHIxLCAjKFxwdXNoIC8gOCkKKwkJYgk4YgorCisJCS5lbmRtCisK
KworCQlmb3J3YXJkX2NvcHlfc2hpZnQJcHVsbD04CXB1c2g9MjQKKworMTc6CQlmb3J3YXJk
X2NvcHlfc2hpZnQJcHVsbD0xNglwdXNoPTE2CisKKzE4OgkJZm9yd2FyZF9jb3B5X3NoaWZ0
CXB1bGw9MjQJcHVzaD04CisKKworLyoKKyAqIEFib3J0IHByZWFtYmxlIGFuZCBjb21wbGV0
aW9uIG1hY3Jvcy4KKyAqIElmIGEgZml4dXAgaGFuZGxlciBpcyByZXF1aXJlZCB0aGVuIHRo
b3NlIG1hY3JvcyBtdXN0IHN1cnJvdW5kIGl0LgorICogSXQgaXMgYXNzdW1lZCB0aGF0IHRo
ZSBmaXh1cCBjb2RlIHdpbGwgaGFuZGxlIHRoZSBwcml2YXRlIHBhcnQgb2YKKyAqIHRoZSBl
eGl0IG1hY3JvLgorICovCisKKwkubWFjcm8JY29weV9hYm9ydF9wcmVhbWJsZQorMTk6CWxk
bWZkCXNwISwge3I1IC0gcjl9CisJYgkyMWYKKzIwOglsZG1mZAlzcCEsIHtyNSAtIHI4fQor
MjE6CisJLmVuZG0KKworCS5tYWNybwljb3B5X2Fib3J0X2VuZAorCWxkbWZkCXNwISwge3I0
LCBwY30KKwkuZW5kbQorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIv
ZGVsYXkuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi94ZW4vYXJjaC9hcm0vbGliL2RlbGF5LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEy
ICswOTAwCkBAIC0wLDAgKzEsNyBAQAorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNs
dWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisJCS50ZXh0CisKK0VOVFJZKF91ZGVsYXkpCisJ
bW92CXBjLGxyCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvZGl2NjQu
UwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vYXJjaC9hcm0vbGliL2RpdjY0LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAw
CkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL2xpYi9kaXY2NC5T
CisgKgorICogIE9wdGltaXplZCBjb21wdXRhdGlvbiBvZiA2NC1iaXQgZGl2aWRlbmQgLyAz
Mi1iaXQgZGl2aXNvciAgCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENy
ZWF0ZWQ6CU9jdCA1LCAyMDAzCisgKiAgQ29weXJpZ2h0OglNb250YSBWaXN0YSBTb2Z0d2Fy
ZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiAg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpbmNs
dWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKyNpZmRl
ZiBfX0FSTUVCX18KKyNkZWZpbmUgeGggcjAKKyNkZWZpbmUgeGwgcjEKKyNkZWZpbmUgeWgg
cjIKKyNkZWZpbmUgeWwgcjMKKyNlbHNlCisjZGVmaW5lIHhsIHIwCisjZGVmaW5lIHhoIHIx
CisjZGVmaW5lIHlsIHIyCisjZGVmaW5lIHloIHIzCisjZW5kaWYKKworLyoKKyAqIF9fZG9f
ZGl2NjQ6IHBlcmZvcm0gYSBkaXZpc2lvbiB3aXRoIDY0LWJpdCBkaXZpZGVuZCBhbmQgMzIt
Yml0IGRpdmlzb3IuCisgKgorICogTm90ZTogQ2FsbGluZyBjb252ZW50aW9uIGlzIHRvdGFs
bHkgbm9uIHN0YW5kYXJkIGZvciBvcHRpbWFsIGNvZGUuCisgKiAgICAgICBUaGlzIGlzIG1l
YW50IHRvIGJlIHVzZWQgYnkgZG9fZGl2KCkgZnJvbSBpbmNsdWRlL2FzbS9kaXY2NC5oIG9u
bHkuCisgKgorICogSW5wdXQgcGFyYW1ldGVyczoKKyAqIAl4aC14bAk9IGRpdmlkZW5kIChj
bG9iYmVyZWQpCisgKiAJcjQJPSBkaXZpc29yIChwcmVzZXJ2ZWQpCisgKgorICogT3V0cHV0
IHZhbHVlczoKKyAqIAl5aC15bAk9IHJlc3VsdAorICogCXhoCT0gcmVtYWluZGVyCisgKgor
ICogQ2xvYmJlcmVkIHJlZ3M6IHhsLCBpcAorICovCisKK0VOVFJZKF9fZG9fZGl2NjQpCisK
KwlAIFRlc3QgZm9yIGVhc3kgcGF0aHMgZmlyc3QuCisJc3VicwlpcCwgcjQsICMxCisJYmxz
CTlmCQkJQCBkaXZpc29yIGlzIDAgb3IgMQorCXRzdAlpcCwgcjQKKwliZXEJOGYJCQlAIGRp
dmlzb3IgaXMgcG93ZXIgb2YgMgorCisJQCBTZWUgaWYgd2UgbmVlZCB0byBoYW5kbGUgdXBw
ZXIgMzItYml0IHJlc3VsdC4KKwljbXAJeGgsIHI0CisJbW92CXloLCAjMAorCWJsbwkzZgor
CisJQCBBbGlnbiBkaXZpc29yIHdpdGggdXBwZXIgcGFydCBvZiBkaXZpZGVuZC4KKwlAIFRo
ZSBhbGlnbmVkIGRpdmlzb3IgaXMgc3RvcmVkIGluIHlsIHByZXNlcnZpbmcgdGhlIG9yaWdp
bmFsLgorCUAgVGhlIGJpdCBwb3NpdGlvbiBpcyBzdG9yZWQgaW4gaXAuCisKKyNpZiBfX0xJ
TlVYX0FSTV9BUkNIX18gPj0gNQorCisJY2x6CXlsLCByNAorCWNseglpcCwgeGgKKwlzdWIJ
eWwsIHlsLCBpcAorCW1vdglpcCwgIzEKKwltb3YJaXAsIGlwLCBsc2wgeWwKKwltb3YJeWws
IHI0LCBsc2wgeWwKKworI2Vsc2UKKworCW1vdgl5bCwgcjQKKwltb3YJaXAsICMxCisxOglj
bXAJeWwsICMweDgwMDAwMDAwCisJY21wY2MJeWwsIHhoCisJbW92Y2MJeWwsIHlsLCBsc2wg
IzEKKwltb3ZjYwlpcCwgaXAsIGxzbCAjMQorCWJjYwkxYgorCisjZW5kaWYKKworCUAgVGhl
IGRpdmlzaW9uIGxvb3AgZm9yIG5lZWRlZCB1cHBlciBiaXQgcG9zaXRpb25zLgorIAlAIEJy
ZWFrIG91dCBlYXJseSBpZiBkaXZpZGVuZCByZWFjaGVzIDAuCisyOgljbXAJeGgsIHlsCisJ
b3JyY3MJeWgsIHloLCBpcAorCXN1YmNzcwl4aCwgeGgsIHlsCisJbW92bmVzCWlwLCBpcCwg
bHNyICMxCisJbW92CXlsLCB5bCwgbHNyICMxCisJYm5lCTJiCisKKwlAIFNlZSBpZiB3ZSBu
ZWVkIHRvIGhhbmRsZSBsb3dlciAzMi1iaXQgcmVzdWx0LgorMzoJY21wCXhoLCAjMAorCW1v
dgl5bCwgIzAKKwljbXBlcQl4bCwgcjQKKwltb3Zsbwl4aCwgeGwKKwltb3ZsbwlwYywgbHIK
KworCUAgVGhlIGRpdmlzaW9uIGxvb3AgZm9yIGxvd2VyIGJpdCBwb3NpdGlvbnMuCisJQCBI
ZXJlIHdlIHNoaWZ0IHJlbWFpbmVyIGJpdHMgbGVmdHdhcmRzIHJhdGhlciB0aGFuIG1vdmlu
ZyB0aGUKKwlAIGRpdmlzb3IgZm9yIGNvbXBhcmlzb25zLCBjb25zaWRlcmluZyB0aGUgY2Fy
cnktb3V0IGJpdCBhcyB3ZWxsLgorCW1vdglpcCwgIzB4ODAwMDAwMDAKKzQ6CW1vdnMJeGws
IHhsLCBsc2wgIzEKKwlhZGNzCXhoLCB4aCwgeGgKKwliZXEJNmYKKwljbXBjYwl4aCwgcjQK
KzU6CW9ycmNzCXlsLCB5bCwgaXAKKwlzdWJjcwl4aCwgeGgsIHI0CisJbW92cwlpcCwgaXAs
IGxzciAjMQorCWJuZQk0YgorCW1vdglwYywgbHIKKworCUAgVGhlIHRvcCBwYXJ0IG9mIHJl
bWFpbmRlciBiZWNhbWUgemVyby4gIElmIGNhcnJ5IGlzIHNldAorCUAgKHRoZSAzM3RoIGJp
dCkgdGhpcyBpcyBhIGZhbHNlIHBvc2l0aXZlIHNvIHJlc3VtZSB0aGUgbG9vcC4KKwlAIE90
aGVyd2lzZSwgaWYgbG93ZXIgcGFydCBpcyBhbHNvIG51bGwgdGhlbiB3ZSBhcmUgZG9uZS4K
KzY6CWJjcwk1YgorCWNtcAl4bCwgIzAKKwltb3ZlcQlwYywgbHIKKworCUAgV2Ugc3RpbGwg
aGF2ZSByZW1haW5lciBiaXRzIGluIHRoZSBsb3cgcGFydC4gIEJyaW5nIHRoZW0gdXAuCisK
KyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNQorCisJY2x6CXhoLCB4bAkJCUAgd2Uga25v
dyB4aCBpcyB6ZXJvIGhlcmUgc28uLi4KKwlhZGQJeGgsIHhoLCAjMQorCW1vdgl4bCwgeGws
IGxzbCB4aAorCW1vdglpcCwgaXAsIGxzciB4aAorCisjZWxzZQorCis3Ogltb3ZzCXhsLCB4
bCwgbHNsICMxCisJbW92CWlwLCBpcCwgbHNyICMxCisJYmNjCTdiCisKKyNlbmRpZgorCisJ
QCBDdXJyZW50IHJlbWFpbmRlciBpcyBub3cgMS4gIEl0IGlzIHdvcnRobGVzcyB0byBjb21w
YXJlIHdpdGgKKwlAIGRpdmlzb3IgYXQgdGhpcyBwb2ludCBzaW5jZSBkaXZpc29yIGNhbiBu
b3QgYmUgc21hbGxlciB0aGFuIDMgaGVyZS4KKwlAIElmIHBvc3NpYmxlLCBicmFuY2ggZm9y
IGFub3RoZXIgc2hpZnQgaW4gdGhlIGRpdmlzaW9uIGxvb3AuCisJQCBJZiBubyBiaXQgcG9z
aXRpb24gbGVmdCB0aGVuIHdlIGFyZSBkb25lLgorCW1vdnMJaXAsIGlwLCBsc3IgIzEKKwlt
b3YJeGgsICMxCisJYm5lCTRiCisJbW92CXBjLCBscgorCis4OglAIERpdmlzaW9uIGJ5IGEg
cG93ZXIgb2YgMjogZGV0ZXJtaW5lIHdoYXQgdGhhdCBkaXZpc29yIG9yZGVyIGlzCisJQCB0
aGVuIHNpbXBseSBzaGlmdCB2YWx1ZXMgYXJvdW5kCisKKyNpZiBfX0xJTlVYX0FSTV9BUkNI
X18gPj0gNQorCisJY2x6CWlwLCByNAorCXJzYglpcCwgaXAsICMzMQorCisjZWxzZQorCisJ
bW92CXlsLCByNAorCWNtcAlyNCwgIygxIDw8IDE2KQorCW1vdglpcCwgIzAKKwltb3Zocwl5
bCwgeWwsIGxzciAjMTYKKwltb3ZocwlpcCwgIzE2CisKKwljbXAJeWwsICMoMSA8PCA4KQor
CW1vdmhzCXlsLCB5bCwgbHNyICM4CisJYWRkaHMJaXAsIGlwLCAjOAorCisJY21wCXlsLCAj
KDEgPDwgNCkKKwltb3Zocwl5bCwgeWwsIGxzciAjNAorCWFkZGhzCWlwLCBpcCwgIzQKKwor
CWNtcAl5bCwgIygxIDw8IDIpCisJYWRkaGkJaXAsIGlwLCAjMworCWFkZGxzCWlwLCBpcCwg
eWwsIGxzciAjMQorCisjZW5kaWYKKworCW1vdgl5aCwgeGgsIGxzciBpcAorCW1vdgl5bCwg
eGwsIGxzciBpcAorCXJzYglpcCwgaXAsICMzMgorCW9ycgl5bCwgeWwsIHhoLCBsc2wgaXAK
Kwltb3YJeGgsIHhsLCBsc2wgaXAKKwltb3YJeGgsIHhoLCBsc3IgaXAKKwltb3YJcGMsIGxy
CisKKwlAIGVxIC0+IGRpdmlzaW9uIGJ5IDE6IG9idmlvdXMgZW5vdWdoLi4uCis5Ogltb3Zl
cQl5bCwgeGwKKwltb3ZlcQl5aCwgeGgKKwltb3ZlcQl4aCwgIzAKKwltb3ZlcQlwYywgbHIK
KworCUAgRGl2aXNpb24gYnkgMDoKKwlzdHIJbHIsIFtzcCwgIy04XSEKKwlibAlfX2RpdjAK
KworCUAgYXMgd3JvbmcgYXMgaXQgY291bGQgYmUuLi4KKwltb3YJeWwsICMwCisJbW92CXlo
LCAjMAorCW1vdgl4aCwgIzAKKwlsZHIJcGMsIFtzcF0sICM4CisKZGlmZiAtciBlNzAxNDYx
YjEyNTEgeGVuL2FyY2gvYXJtL2xpYi9maW5kYml0LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9maW5kYml0
LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsODEgQEAKKyNp
bmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKwor
ICAgICAgICAgICAgICAgIC50ZXh0CisKKy8qCisgKiBQdXJwb3NlICA6IEZpbmQgYSAnemVy
bycgYml0CisgKiBQcm90b3R5cGU6IGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKmFk
ZHIsIHVuc2lnbmVkIGludCBtYXhiaXQpOworICovCitFTlRSWShfZmluZF9maXJzdF96ZXJv
X2JpdCkKKwkJdGVxCXIxLCAjMAkKKwkJYmVxCTNmCisJCW1vdglyMiwgIzAKKzE6CQlsZHJi
CXIzLCBbcjAsIHIyLCBsc3IgIzNdCisJCWVvcnMJcjMsIHIzLCAjMHhmZgkJQCBpbnZlcnQg
Yml0cworCQlibmUJLmZvdW5kCQkJQCBhbnkgbm93IHNldCAtIGZvdW5kIHplcm8gYml0CisJ
CWFkZAlyMiwgcjIsICM4CQlAIG5leHQgYml0IHBvaW50ZXIKKzI6CQljbXAJcjIsIHIxCQkJ
QCBhbnkgbW9yZT8KKwkJYmxvCTFiCiszOgkJbW92CXIwLCByMQkJCUAgbm8gZnJlZSBiaXRz
CisJCW1vdglwYyxscgorCisvKgorICogUHVycG9zZSAgOiBGaW5kIG5leHQgJ3plcm8nIGJp
dAorICogUHJvdG90eXBlOiBpbnQgZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsIHVu
c2lnbmVkIGludCBtYXhiaXQsIGludCBvZmZzZXQpCisgKi8KK0VOVFJZKF9maW5kX25leHRf
emVyb19iaXQpCisJCXRlcQlyMSwgIzAKKwkJYmVxCTNiCisJCWFuZHMJaXAsIHIyLCAjNwor
CQliZXEJMWIJCQlAIElmIG5ldyBieXRlLCBnb3RvIG9sZCByb3V0aW5lCisJCWxkcmIJcjMs
IFtyMCwgcjIsIGxzciAjM10KKwkJZW9yCXIzLCByMywgIzB4ZmYJCUAgbm93IGxvb2tpbmcg
Zm9yIGEgMSBiaXQKKwkJbW92cwlyMywgcjMsIGxzciBpcAkJQCBzaGlmdCBvZmYgdW51c2Vk
IGJpdHMKKwkJYm5lCS5mb3VuZAorCQlvcnIJcjIsIHIyLCAjNwkJQCBpZiB6ZXJvLCB0aGVu
IG5vIGJpdHMgaGVyZQorCQlhZGQJcjIsIHIyLCAjMQkJQCBhbGlnbiBiaXQgcG9pbnRlcgor
CQliCTJiCQkJQCBsb29wIGZvciBuZXh0IGJpdAorCisvKgorICogUHVycG9zZSAgOiBGaW5k
IGEgJ29uZScgYml0CisgKiBQcm90b3R5cGU6IGludCBmaW5kX2ZpcnN0X2JpdChjb25zdCB1
bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBpbnQgbWF4Yml0KTsKKyAqLworRU5UUlko
X2ZpbmRfZmlyc3RfYml0KQorCQl0ZXEJcjEsICMwCQorCQliZXEJM2YKKwkJbW92CXIyLCAj
MAorMToJCWxkcmIJcjMsIFtyMCwgcjIsIGxzciAjM10KKwkJbW92cwlyMywgcjMKKwkJYm5l
CS5mb3VuZAkJCUAgYW55IG5vdyBzZXQgLSBmb3VuZCB6ZXJvIGJpdAorCQlhZGQJcjIsIHIy
LCAjOAkJQCBuZXh0IGJpdCBwb2ludGVyCisyOgkJY21wCXIyLCByMQkJCUAgYW55IG1vcmU/
CisJCWJsbwkxYgorMzoJCW1vdglyMCwgcjEJCQlAIG5vIGZyZWUgYml0cworCQltb3YJcGMs
bHIKKworLyoKKyAqIFB1cnBvc2UgIDogRmluZCBuZXh0ICdvbmUnIGJpdAorICogUHJvdG90
eXBlOiBpbnQgZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsIHVuc2lnbmVkIGludCBt
YXhiaXQsIGludCBvZmZzZXQpCisgKi8KK0VOVFJZKF9maW5kX25leHRfYml0KQorCQl0ZXEJ
cjEsICMwCisJCWJlcQkzYgorCQlhbmRzCWlwLCByMiwgIzcKKwkJYmVxCTFiCQkJQCBJZiBu
ZXcgYnl0ZSwgZ290byBvbGQgcm91dGluZQorCQlsZHJiCXIzLCBbcjAsIHIyLCBsc3IgIzNd
CisJCW1vdnMJcjMsIHIzLCBsc3IgaXAJCUAgc2hpZnQgb2ZmIHVudXNlZCBiaXRzCisJCWJu
ZQkuZm91bmQKKwkJb3JyCXIyLCByMiwgIzcJCUAgaWYgemVybywgdGhlbiBubyBiaXRzIGhl
cmUKKwkJYWRkCXIyLCByMiwgIzEJCUAgYWxpZ24gYml0IHBvaW50ZXIKKwkJYgkyYgkJCUAg
bG9vcCBmb3IgbmV4dCBiaXQKKworICAKKy5mb3VuZDoKKwkJcnNiCXIxLCByMywgIzAKKwkJ
YW5kCXIzLCByMywgcjEKKwkJY2x6CXIzLCByMworCQlyc2IJcjMsIHIzLCAjMzEKKwkJYWRk
CXIwLCByMiwgcjMKKwkJbW92CXBjLGxyCisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2Fy
Y2gvYXJtL2xpYi9nY2NsaWIuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL2djY2xpYi5oCUZyaSBGZWIgMDMg
MTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDMzIEBACisvKiBnY2NsaWIuaCAtLSBk
ZWZpbml0aW9ucyBmb3IgdmFyaW91cyBmdW5jdGlvbnMgJ2JvcnJvd2VkJyBmcm9tIGdjYy0y
Ljk1LjMgKi8KKy8qIEkgTW9sdG9uICAgICAyOS8wNy8wMSAqLworCisjaWZuZGVmIF9fR0ND
TElCX0hfXworI2RlZmluZSBfX0dDQ0xJQl9IX18KKyNkZWZpbmUgQklUU19QRVJfVU5JVCAg
OAorI2RlZmluZSBTSV9UWVBFX1NJWkUgKHNpemVvZiAoU0l0eXBlKSAqIEJJVFNfUEVSX1VO
SVQpCisKK3R5cGVkZWYgdW5zaWduZWQgaW50IFVRSXR5cGUgICAgX19hdHRyaWJ1dGVfXyAo
KG1vZGUgKFFJKSkpOwordHlwZWRlZiAgICAgICAgICBpbnQgU0l0eXBlICAgICBfX2F0dHJp
YnV0ZV9fICgobW9kZSAoU0kpKSk7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVU0l0eXBlICAg
IF9fYXR0cmlidXRlX18gKChtb2RlIChTSSkpKTsKK3R5cGVkZWYgICAgICAgICAgaW50IERJ
dHlwZSAgICAgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKERJKSkpOwordHlwZWRlZiAgICAgICAg
ICBpbnQgd29yZF90eXBlIAlfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18pKSk7Cit0
eXBlZGVmIHVuc2lnbmVkIGludCBVREl0eXBlICAgIF9fYXR0cmlidXRlX18gKChtb2RlIChE
SSkpKTsKKworI2lmZGVmIF9fQVJNRUJfXworICBzdHJ1Y3QgRElzdHJ1Y3Qge1NJdHlwZSBo
aWdoLCBsb3c7fTsKKyNlbHNlCisgIHN0cnVjdCBESXN0cnVjdCB7U0l0eXBlIGxvdywgaGln
aDt9OworI2VuZGlmCisKK3R5cGVkZWYgdW5pb24KK3sKKyAgc3RydWN0IERJc3RydWN0IHM7
CisgIERJdHlwZSBsbDsKK30gREl1bmlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgX19hdHRyaWJ1
dGVfXygocmVnX3JldHVybikpCit7CisgICAgICAgIGxvbmcgbG9uZyBxdW90OworICAgICAg
ICBsb25nIGxvbmcgcmVtOworfSBsbGRpdl90X3JyOworI2VuZGlmCmRpZmYgLXIgZTcwMTQ2
MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvZ2V0dXNlci5TCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvZ2V0dXNl
ci5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDc3IEBACisv
KgorICogIGxpbnV4L2FyY2gvYXJtL2xpYi9nZXR1c2VyLlMKKyAqCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAxIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp
b24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u
CisgKgorICogIElkZWEgZnJvbSB4ODYgdmVyc2lvbiwgKEMpIENvcHlyaWdodCAxOTk4IExp
bnVzIFRvcnZhbGRzCisgKgorICogVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBub24tc3RhbmRh
cmQgY2FsbCBpbnRlcmZhY2UgdG8gbWFrZSB0aGVtIG1vcmUKKyAqIGVmZmljaWVudCwgZXNw
ZWNpYWxseSBhcyB0aGV5IHJldHVybiBhbiBlcnJvciB2YWx1ZSBpbiBhZGRpdGlvbiB0bwor
ICogdGhlICJyZWFsIiByZXR1cm4gdmFsdWUuCisgKgorICogX19nZXRfdXNlcl9YCisgKgor
ICogSW5wdXRzOglyMCBjb250YWlucyB0aGUgYWRkcmVzcworICogT3V0cHV0czoJcjAgaXMg
dGhlIGVycm9yIGNvZGUKKyAqCQlyMiwgcjMgY29udGFpbnMgdGhlIHplcm8tZXh0ZW5kZWQg
dmFsdWUKKyAqCQlsciBjb3JydXB0ZWQKKyAqCisgKiBObyBvdGhlciByZWdpc3RlcnMgbXVz
dCBiZSBhbHRlcmVkLiAgKHNlZSBpbmNsdWRlL2FzbS1hcm0vdWFjY2Vzcy5oCisgKiBmb3Ig
c3BlY2lmaWMgQVNNIHJlZ2lzdGVyIHVzYWdlKS4KKyAqCisgKiBOb3RlIHRoYXQgQUREUl9M
SU1JVCBpcyBlaXRoZXIgMCBvciAweGMwMDAwMDAwLgorICogTm90ZSBhbHNvIHRoYXQgaXQg
aXMgaW50ZW5kZWQgdGhhdCBfX2dldF91c2VyX2JhZCBpcyBub3QgZ2xvYmFsLgorICovCisj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisKKwkuZ2xvYmFsCV9fZ2V0X3VzZXJfMQorX19nZXRf
dXNlcl8xOgorMToJbGRyYnQJcjIsIFtyMF0KKwltb3YJcjAsICMwCisJbW92CXBjLCBscgor
CisJLmdsb2JhbAlfX2dldF91c2VyXzIKK19fZ2V0X3VzZXJfMjoKKzI6CWxkcmJ0CXIyLCBb
cjBdLCAjMQorMzoJbGRyYnQJcjMsIFtyMF0KKyNpZm5kZWYgX19BUk1FQl9fCisJb3JyCXIy
LCByMiwgcjMsIGxzbCAjOAorI2Vsc2UKKwlvcnIJcjIsIHIzLCByMiwgbHNsICM4CisjZW5k
aWYKKwltb3YJcjAsICMwCisJbW92CXBjLCBscgorCisJLmdsb2JhbAlfX2dldF91c2VyXzQK
K19fZ2V0X3VzZXJfNDoKKzQ6CWxkcnQJcjIsIFtyMF0KKwltb3YJcjAsICMwCisJbW92CXBj
LCBscgorCisJLmdsb2JhbAlfX2dldF91c2VyXzgKK19fZ2V0X3VzZXJfODoKKzU6CWxkcnQJ
cjIsIFtyMF0sICM0Cis2OglsZHJ0CXIzLCBbcjBdCisJbW92CXIwLCAjMAorCW1vdglwYywg
bHIKKworCS5nbG9iYWwgX19nZXRfdXNlcl9iYWQKK19fZ2V0X3VzZXJfYmFkXzg6CisJbW92
CXIzLCAjMAorX19nZXRfdXNlcl9iYWQ6CisJbW92CXIyLCAjMAorCW1vdglyMCwgIy1FRkFV
TFQKKwltb3YJcGMsIGxyCisKKy5zZWN0aW9uIF9fZXhfdGFibGUsICJhIgorCS5sb25nCTFi
LCBfX2dldF91c2VyX2JhZAorCS5sb25nCTJiLCBfX2dldF91c2VyX2JhZAorCS5sb25nCTNi
LCBfX2dldF91c2VyX2JhZAorCS5sb25nCTRiLCBfX2dldF91c2VyX2JhZAorCS5sb25nCTVi
LCBfX2dldF91c2VyX2JhZF84CisJLmxvbmcJNmIsIF9fZ2V0X3VzZXJfYmFkXzgKKy5wcmV2
aW91cwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL2xpYjFmdW5jcy5T
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hl
bi9hcmNoL2FybS9saWIvbGliMWZ1bmNzLlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsMjU2IEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1
ZGUgPGFzbS9hc20tbWFjcm9zLmg+CisKKworLm1hY3JvIEFSTV9ESVZfQk9EWSBkaXZpZGVu
ZCwgZGl2aXNvciwgcmVzdWx0LCBjdXJiaXQKKworCUAgSW5pdGlhbGx5IHNoaWZ0IHRoZSBk
aXZpc29yIGxlZnQgMyBiaXRzIGlmIHBvc3NpYmxlLAorCUAgc2V0IGN1cmJpdCBhY2NvcmRp
bmdseS4gIFRoaXMgYWxsb3dzIGZvciBjdXJiaXQgdG8gYmUgbG9jYXRlZAorCUAgYXQgdGhl
IGxlZnQgZW5kIG9mIGVhY2ggNCBiaXQgbmliYmxlcyBpbiB0aGUgZGl2aXNpb24gbG9vcAor
CUAgdG8gc2F2ZSBvbmUgbG9vcCBpbiBtb3N0IGNhc2VzLgorCXRzdAlcZGl2aXNvciwgIzB4
ZTAwMDAwMDAKKwltb3ZlcQlcZGl2aXNvciwgXGRpdmlzb3IsIGxzbCAjMworCW1vdmVxCVxj
dXJiaXQsICM4CisJbW92bmUJXGN1cmJpdCwgIzEKKworCUAgVW5sZXNzIHRoZSBkaXZpc29y
IGlzIHZlcnkgYmlnLCBzaGlmdCBpdCB1cCBpbiBtdWx0aXBsZXMgb2YKKwlAIGZvdXIgYml0
cywgc2luY2UgdGhpcyBpcyB0aGUgYW1vdW50IG9mIHVud2luZGluZyBpbiB0aGUgbWFpbgor
CUAgZGl2aXNpb24gbG9vcC4gIENvbnRpbnVlIHNoaWZ0aW5nIHVudGlsIHRoZSBkaXZpc29y
IGlzIAorCUAgbGFyZ2VyIHRoYW4gdGhlIGRpdmlkZW5kLgorMToJY21wCVxkaXZpc29yLCAj
MHgxMDAwMDAwMAorCWNtcGxvCVxkaXZpc29yLCBcZGl2aWRlbmQKKwltb3ZsbwlcZGl2aXNv
ciwgXGRpdmlzb3IsIGxzbCAjNAorCW1vdmxvCVxjdXJiaXQsIFxjdXJiaXQsIGxzbCAjNAor
CWJsbwkxYgorCisJQCBGb3IgdmVyeSBiaWcgZGl2aXNvcnMsIHdlIG11c3Qgc2hpZnQgaXQg
YSBiaXQgYXQgYSB0aW1lLCBvcgorCUAgd2Ugd2lsbCBiZSBpbiBkYW5nZXIgb2Ygb3ZlcmZs
b3dpbmcuCisxOgljbXAJXGRpdmlzb3IsICMweDgwMDAwMDAwCisJY21wbG8JXGRpdmlzb3Is
IFxkaXZpZGVuZAorCW1vdmxvCVxkaXZpc29yLCBcZGl2aXNvciwgbHNsICMxCisJbW92bG8J
XGN1cmJpdCwgXGN1cmJpdCwgbHNsICMxCisJYmxvCTFiCisKKwltb3YJXHJlc3VsdCwgIzAK
KworCUAgRGl2aXNpb24gbG9vcAorMToJY21wCVxkaXZpZGVuZCwgXGRpdmlzb3IKKwlzdWJo
cwlcZGl2aWRlbmQsIFxkaXZpZGVuZCwgXGRpdmlzb3IKKwlvcnJocwlccmVzdWx0LCAgIFxy
ZXN1bHQsICAgXGN1cmJpdAorCWNtcAlcZGl2aWRlbmQsIFxkaXZpc29yLCAgbHNyICMxCisJ
c3ViaHMJXGRpdmlkZW5kLCBcZGl2aWRlbmQsIFxkaXZpc29yLCBsc3IgIzEKKwlvcnJocwlc
cmVzdWx0LCAgIFxyZXN1bHQsICAgXGN1cmJpdCwgIGxzciAjMQorCWNtcAlcZGl2aWRlbmQs
IFxkaXZpc29yLCAgbHNyICMyCisJc3ViaHMJXGRpdmlkZW5kLCBcZGl2aWRlbmQsIFxkaXZp
c29yLCBsc3IgIzIKKwlvcnJocwlccmVzdWx0LCAgIFxyZXN1bHQsICAgXGN1cmJpdCwgIGxz
ciAjMgorCWNtcAlcZGl2aWRlbmQsIFxkaXZpc29yLCAgbHNyICMzCisJc3ViaHMJXGRpdmlk
ZW5kLCBcZGl2aWRlbmQsIFxkaXZpc29yLCBsc3IgIzMKKwlvcnJocwlccmVzdWx0LCAgIFxy
ZXN1bHQsICAgXGN1cmJpdCwgIGxzciAjMworCWNtcAlcZGl2aWRlbmQsICMwCQkJQCBFYXJs
eSB0ZXJtaW5hdGlvbj8KKwltb3ZuZXMJXGN1cmJpdCwgICBcY3VyYml0LCAgbHNyICM0CUAg
Tm8sIGFueSBtb3JlIGJpdHMgdG8gZG8/CisJbW92bmUJXGRpdmlzb3IsICBcZGl2aXNvciwg
bHNyICM0CisJYm5lCTFiCisKKy5lbmRtCisKKworLm1hY3JvIEFSTV9ESVYyX09SREVSIGRp
dmlzb3IsIG9yZGVyCisJY21wCVxkaXZpc29yLCAjKDEgPDwgMTYpCisJbW92aHMJXGRpdmlz
b3IsIFxkaXZpc29yLCBsc3IgIzE2CisJbW92aHMJXG9yZGVyLCAjMTYKKwltb3Zsbwlcb3Jk
ZXIsICMwCisKKwljbXAJXGRpdmlzb3IsICMoMSA8PCA4KQorCW1vdmhzCVxkaXZpc29yLCBc
ZGl2aXNvciwgbHNyICM4CisJYWRkaHMJXG9yZGVyLCBcb3JkZXIsICM4CisKKwljbXAJXGRp
dmlzb3IsICMoMSA8PCA0KQorCW1vdmhzCVxkaXZpc29yLCBcZGl2aXNvciwgbHNyICM0CisJ
YWRkaHMJXG9yZGVyLCBcb3JkZXIsICM0CisKKwljbXAJXGRpdmlzb3IsICMoMSA8PCAyKQor
CWFkZGhpCVxvcmRlciwgXG9yZGVyLCAjMworCWFkZGxzCVxvcmRlciwgXG9yZGVyLCBcZGl2
aXNvciwgbHNyICMxCisuZW5kbQorCisKKy5tYWNybyBBUk1fTU9EX0JPRFkgZGl2aWRlbmQs
IGRpdmlzb3IsIG9yZGVyLCBzcGFyZQorCW1vdglcb3JkZXIsICMwCisKKwlAIFVubGVzcyB0
aGUgZGl2aXNvciBpcyB2ZXJ5IGJpZywgc2hpZnQgaXQgdXAgaW4gbXVsdGlwbGVzIG9mCisJ
QCBmb3VyIGJpdHMsIHNpbmNlIHRoaXMgaXMgdGhlIGFtb3VudCBvZiB1bndpbmRpbmcgaW4g
dGhlIG1haW4KKwlAIGRpdmlzaW9uIGxvb3AuICBDb250aW51ZSBzaGlmdGluZyB1bnRpbCB0
aGUgZGl2aXNvciBpcyAKKwlAIGxhcmdlciB0aGFuIHRoZSBkaXZpZGVuZC4KKzE6CWNtcAlc
ZGl2aXNvciwgIzB4MTAwMDAwMDAKKwljbXBsbwlcZGl2aXNvciwgXGRpdmlkZW5kCisJbW92
bG8JXGRpdmlzb3IsIFxkaXZpc29yLCBsc2wgIzQKKwlhZGRsbwlcb3JkZXIsIFxvcmRlciwg
IzQKKwlibG8JMWIKKworCUAgRm9yIHZlcnkgYmlnIGRpdmlzb3JzLCB3ZSBtdXN0IHNoaWZ0
IGl0IGEgYml0IGF0IGEgdGltZSwgb3IKKwlAIHdlIHdpbGwgYmUgaW4gZGFuZ2VyIG9mIG92
ZXJmbG93aW5nLgorMToJY21wCVxkaXZpc29yLCAjMHg4MDAwMDAwMAorCWNtcGxvCVxkaXZp
c29yLCBcZGl2aWRlbmQKKwltb3ZsbwlcZGl2aXNvciwgXGRpdmlzb3IsIGxzbCAjMQorCWFk
ZGxvCVxvcmRlciwgXG9yZGVyLCAjMQorCWJsbwkxYgorCisJQCBQZXJmb3JtIGFsbCBuZWVk
ZWQgc3Vic3RyYWN0aW9ucyB0byBrZWVwIG9ubHkgdGhlIHJlbWluZGVyLgorCUAgRG8gY29t
cGFyaXNvbnMgaW4gYmF0Y2ggb2YgNCBmaXJzdC4KKwlzdWJzCVxvcmRlciwgXG9yZGVyLCAj
MwkJQCB5ZXMsIDMgaXMgaW50ZW5kZWQgaGVyZQorCWJsdAkyZgorCisxOgljbXAJXGRpdmlk
ZW5kLCBcZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvcgor
CWNtcAlcZGl2aWRlbmQsIFxkaXZpc29yLCAgbHNyICMxCisJc3ViaHMJXGRpdmlkZW5kLCBc
ZGl2aWRlbmQsIFxkaXZpc29yLCBsc3IgIzEKKwljbXAJXGRpdmlkZW5kLCBcZGl2aXNvciwg
IGxzciAjMgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvciwgbHNyICMy
CisJY21wCVxkaXZpZGVuZCwgXGRpdmlzb3IsICBsc3IgIzMKKwlzdWJocwlcZGl2aWRlbmQs
IFxkaXZpZGVuZCwgXGRpdmlzb3IsIGxzciAjMworCWNtcAlcZGl2aWRlbmQsICMxCisJbW92
CVxkaXZpc29yLCBcZGl2aXNvciwgbHNyICM0CisJc3ViZ2VzCVxvcmRlciwgXG9yZGVyLCAj
NAorCWJnZQkxYgorCisJdHN0CVxvcmRlciwgIzMKKwl0ZXFuZQlcZGl2aWRlbmQsICMwCisJ
YmVxCTVmCisKKwlAIEVpdGhlciAxLCAyIG9yIDMgY29tcGFyaXNvbi9zdWJzdHJhY3Rpb25z
IGFyZSBsZWZ0LgorMjoJY21uCVxvcmRlciwgIzIKKwlibHQJNGYKKwliZXEJM2YKKwljbXAJ
XGRpdmlkZW5kLCBcZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2
aXNvcgorCW1vdglcZGl2aXNvciwgIFxkaXZpc29yLCAgbHNyICMxCiszOgljbXAJXGRpdmlk
ZW5kLCBcZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvcgor
CW1vdglcZGl2aXNvciwgIFxkaXZpc29yLCAgbHNyICMxCis0OgljbXAJXGRpdmlkZW5kLCBc
ZGl2aXNvcgorCXN1YmhzCVxkaXZpZGVuZCwgXGRpdmlkZW5kLCBcZGl2aXNvcgorNToKKy5l
bmRtCisKKworRU5UUlkoX191ZGl2c2kzKQorRU5UUlkoX19hZWFiaV91aWRpdikKKwlzdWJz
CXIyLCByMSwgIzEKKwltb3ZlcQlwYywgbHIKKwliY2MJTGRpdjAKKwljbXAJcjAsIHIxCisJ
YmxzCTExZgorCXRzdAlyMSwgcjIKKwliZXEJMTJmCisKKwlBUk1fRElWX0JPRFkgcjAsIHIx
LCByMiwgcjMKKworCW1vdglyMCwgcjIKKwltb3YJcGMsIGxyCisKKzExOgltb3ZlcQlyMCwg
IzEKKwltb3ZuZQlyMCwgIzAKKwltb3YJcGMsIGxyCisKKzEyOglBUk1fRElWMl9PUkRFUiBy
MSwgcjIKKworCW1vdglyMCwgcjAsIGxzciByMgorCW1vdglwYywgbHIKKworCitFTlRSWShf
X3Vtb2RzaTMpCisJc3VicwlyMiwgcjEsICMxCQkJQCBjb21wYXJlIGRpdmlzb3Igd2l0aCAx
CisJYmNjCUxkaXYwCisJY21wbmUJcjAsIHIxCQkJCUAgY29tcGFyZSBkaXZpZGVuZCB3aXRo
IGRpdmlzb3IKKwltb3ZlcSAgIHIwLCAjMAorCXRzdGhpCXIxLCByMgkJCQlAIHNlZSBpZiBk
aXZpc29yIGlzIHBvd2VyIG9mIDIKKwlhbmRlcQlyMCwgcjAsIHIyCisJbW92bHMJcGMsIGxy
CisKKwlBUk1fTU9EX0JPRFkgcjAsIHIxLCByMiwgcjMKKworCW1vdglwYywgbHIKKworCitF
TlRSWShfX2RpdnNpMykKK0VOVFJZKF9fYWVhYmlfaWRpdikKKwljbXAJcjEsICMwCisJZW9y
CWlwLCByMCwgcjEJCQlAIHNhdmUgdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4KKwliZXEJTGRp
djAKKwlyc2JtaQlyMSwgcjEsICMwCQkJQCBsb29wcyBiZWxvdyB1c2UgdW5zaWduZWQuCisJ
c3VicwlyMiwgcjEsICMxCQkJQCBkaXZpc2lvbiBieSAxIG9yIC0xID8KKwliZXEJMTBmCisJ
bW92cwlyMywgcjAKKwlyc2JtaQlyMywgcjAsICMwCQkJQCBwb3NpdGl2ZSBkaXZpZGVuZCB2
YWx1ZQorCWNtcAlyMywgcjEKKwlibHMJMTFmCisJdHN0CXIxLCByMgkJCQlAIGRpdmlzb3Ig
aXMgcG93ZXIgb2YgMiA/CisJYmVxCTEyZgorCisJQVJNX0RJVl9CT0RZIHIzLCByMSwgcjAs
IHIyCisKKwljbXAJaXAsICMwCisJcnNibWkJcjAsIHIwLCAjMAorCW1vdglwYywgbHIKKwor
MTA6CXRlcQlpcCwgcjAJCQkJQCBzYW1lIHNpZ24gPworCXJzYm1pCXIwLCByMCwgIzAKKwlt
b3YJcGMsIGxyCisKKzExOgltb3ZsbwlyMCwgIzAKKwltb3ZlcQlyMCwgaXAsIGFzciAjMzEK
KwlvcnJlcQlyMCwgcjAsICMxCisJbW92CXBjLCBscgorCisxMjoJQVJNX0RJVjJfT1JERVIg
cjEsIHIyCisKKwljbXAJaXAsICMwCisJbW92CXIwLCByMywgbHNyIHIyCisJcnNibWkJcjAs
IHIwLCAjMAorCW1vdglwYywgbHIKKworCitFTlRSWShfX21vZHNpMykKKworCWNtcAlyMSwg
IzAKKwliZXEJTGRpdjAKKwlyc2JtaQlyMSwgcjEsICMwCQkJQCBsb29wcyBiZWxvdyB1c2Ug
dW5zaWduZWQuCisJbW92cwlpcCwgcjAJCQkJQCBwcmVzZXJ2ZSBzaWduIG9mIGRpdmlkZW5k
CisJcnNibWkJcjAsIHIwLCAjMAkJCUAgaWYgbmVnYXRpdmUgbWFrZSBwb3NpdGl2ZQorCXN1
YnMJcjIsIHIxLCAjMQkJCUAgY29tcGFyZSBkaXZpc29yIHdpdGggMQorCWNtcG5lCXIwLCBy
MQkJCQlAIGNvbXBhcmUgZGl2aWRlbmQgd2l0aCBkaXZpc29yCisJbW92ZXEJcjAsICMwCisJ
dHN0aGkJcjEsIHIyCQkJCUAgc2VlIGlmIGRpdmlzb3IgaXMgcG93ZXIgb2YgMgorCWFuZGVx
CXIwLCByMCwgcjIKKwlibHMJMTBmCisKKwlBUk1fTU9EX0JPRFkgcjAsIHIxLCByMiwgcjMK
KworMTA6CWNtcAlpcCwgIzAKKwlyc2JtaQlyMCwgcjAsICMwCisJbW92CXBjLCBscgorCitF
TlRSWShfX2FlYWJpX3VpZGl2bW9kKQorCXN0bWZkICAgc3AhLCB7cjAsIHIxLCBpcCwgbHJ9
CisJYmwgICAgICBfX2FlYWJpX3VpZGl2CisJbGRtZmQgICBzcCEsIHtyMSwgcjIsIGlwLCBs
cn0KKwltdWwgICAgIHIzLCByMCwgcjIKKwlzdWIgICAgIHIxLCByMSwgcjMKKwltb3YgICAg
IHBjLCBscgorCitFTlRSWShfX2FlYWJpX2lkaXZtb2QpCisJc3RtZmQgICBzcCEsIHtyMCwg
cjEsIGlwLCBscn0KKwlibCAgICAgIF9fYWVhYmlfaWRpdgorCWxkbWZkICAgc3AhLCB7cjEs
IHIyLCBpcCwgbHJ9CisJbXVsICAgICByMywgcjAsIHIyCisJc3ViICAgICByMSwgcjEsIHIz
CisJbW92ICAgICBwYywgbHIKKworTGRpdjA6CisKKwlzdHIJbHIsIFtzcCwgIy04XSEKKwli
bAlfX2RpdjAKKwltb3YJcjAsICMwCQkJQCBBYm91dCBhcyB3cm9uZyBhcyBpdCBjb3VsZCBi
ZS4KKwlsZHIJcGMsIFtzcF0sICM4CisKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJj
aC9hcm0vbGliL2xvbmdsb25nLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9sb25nbG9uZy5oCUZyaSBGZWIg
MDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDE4MyBAQAorLyogbG9uZ2xvbmcu
aCAtLSBiYXNlZCBvbiBjb2RlIGZyb20gZ2NjLTIuOTUuMworCisgICBkZWZpbml0aW9ucyBm
b3IgbWl4ZWQgc2l6ZSAzMi82NCBiaXQgYXJpdGhtZXRpYy4KKyAgIENvcHlyaWdodCAoQykg
MTk5MSwgOTIsIDk0LCA5NSwgOTYsIDE5OTcsIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuCisKKyAgIFRoaXMgZGVmaW5pdGlvbiBmaWxlIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CisgICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNp
b24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp
cyBkZWZpbml0aW9uIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlCisgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkCisgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICBTZWUgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCisvKiBCb3Jyb3dl
ZCBmcm9tIEdDQyAyLjk1LjMsIEkgTW9sdG9uIDI5LzA3LzAxICovCisKKyNpZm5kZWYgU0lf
VFlQRV9TSVpFCisjZGVmaW5lIFNJX1RZUEVfU0laRSAzMgorI2VuZGlmCisKKyNkZWZpbmUg
X19CSVRTNCAoU0lfVFlQRV9TSVpFIC8gNCkKKyNkZWZpbmUgX19sbF9CICgxTCA8PCAoU0lf
VFlQRV9TSVpFIC8gMikpCisjZGVmaW5lIF9fbGxfbG93cGFydCh0KSAoKFVTSXR5cGUpICh0
KSAlIF9fbGxfQikKKyNkZWZpbmUgX19sbF9oaWdocGFydCh0KSAoKFVTSXR5cGUpICh0KSAv
IF9fbGxfQikKKworLyogRGVmaW5lIGF1eGlsaWFyeSBhc20gbWFjcm9zLgorCisgICAxKSB1
bXVsX3BwbW0oaGlnaF9wcm9kLCBsb3dfcHJvZCwgbXVsdGlwbGVyLCBtdWx0aXBsaWNhbmQp
CisgICBtdWx0aXBsaWVzIHR3byBVU0l0eXBlIGludGVnZXJzIE1VTFRJUExFUiBhbmQgTVVM
VElQTElDQU5ELAorICAgYW5kIGdlbmVyYXRlcyBhIHR3by1wYXJ0IFVTSXR5cGUgcHJvZHVj
dCBpbiBISUdIX1BST0QgYW5kCisgICBMT1dfUFJPRC4KKworICAgMikgX191bXVsc2lkaTMo
YSxiKSBtdWx0aXBsaWVzIHR3byBVU0l0eXBlIGludGVnZXJzIEEgYW5kIEIsCisgICBhbmQg
cmV0dXJucyBhIFVESXR5cGUgcHJvZHVjdC4gIFRoaXMgaXMganVzdCBhIHZhcmlhbnQgb2Yg
dW11bF9wcG1tLgorCisgICAzKSB1ZGl2X3Fybm5kKHF1b3RpZW50LCByZW1haW5kZXIsIGhp
Z2hfbnVtZXJhdG9yLCBsb3dfbnVtZXJhdG9yLAorICAgZGVub21pbmF0b3IpIGRpdmlkZXMg
YSB0d28td29yZCB1bnNpZ25lZCBpbnRlZ2VyLCBjb21wb3NlZCBieSB0aGUKKyAgIGludGVn
ZXJzIEhJR0hfTlVNRVJBVE9SIGFuZCBMT1dfTlVNRVJBVE9SLCBieSBERU5PTUlOQVRPUiBh
bmQKKyAgIHBsYWNlcyB0aGUgcXVvdGllbnQgaW4gUVVPVElFTlQgYW5kIHRoZSByZW1haW5k
ZXIgaW4gUkVNQUlOREVSLgorICAgSElHSF9OVU1FUkFUT1IgbXVzdCBiZSBsZXNzIHRoYW4g
REVOT01JTkFUT1IgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uLgorICAgSWYsIGluIGFkZGl0aW9u
LCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgREVOT01JTkFUT1IgbXVzdCBiZSAxLAor
ICAgdGhlbiB0aGUgcHJlLXByb2Nlc3NvciBzeW1ib2wgVURJVl9ORUVEU19OT1JNQUxJWkFU
SU9OIGlzIGRlZmluZWQgdG8gMS4KKworICAgNCkgc2Rpdl9xcm5uZChxdW90aWVudCwgcmVt
YWluZGVyLCBoaWdoX251bWVyYXRvciwgbG93X251bWVyYXRvciwKKyAgIGRlbm9taW5hdG9y
KS4gIExpa2UgdWRpdl9xcm5uZCBidXQgdGhlIG51bWJlcnMgYXJlIHNpZ25lZC4gIFRoZQor
ICAgcXVvdGllbnQgaXMgcm91bmRlZCB0b3dhcmRzIDAuCisKKyAgIDUpIGNvdW50X2xlYWRp
bmdfemVyb3MoY291bnQsIHgpIGNvdW50cyB0aGUgbnVtYmVyIG9mIHplcm8tYml0cyBmcm9t
CisgICB0aGUgbXNiIHRvIHRoZSBmaXJzdCBub24temVybyBiaXQuICBUaGlzIGlzIHRoZSBu
dW1iZXIgb2Ygc3RlcHMgWAorICAgbmVlZHMgdG8gYmUgc2hpZnRlZCBsZWZ0IHRvIHNldCB0
aGUgbXNiLiAgVW5kZWZpbmVkIGZvciBYID09IDAuCisKKyAgIDYpIGFkZF9zc2FhYWEoaGln
aF9zdW0sIGxvd19zdW0sIGhpZ2hfYWRkZW5kXzEsIGxvd19hZGRlbmRfMSwKKyAgIGhpZ2hf
YWRkZW5kXzIsIGxvd19hZGRlbmRfMikgYWRkcyB0d28gdHdvLXdvcmQgdW5zaWduZWQgaW50
ZWdlcnMsCisgICBjb21wb3NlZCBieSBISUdIX0FEREVORF8xIGFuZCBMT1dfQURERU5EXzEs
IGFuZCBISUdIX0FEREVORF8yIGFuZAorICAgTE9XX0FEREVORF8yIHJlc3BlY3RpdmVseS4g
IFRoZSByZXN1bHQgaXMgcGxhY2VkIGluIEhJR0hfU1VNIGFuZAorICAgTE9XX1NVTS4gIE92
ZXJmbG93IChpLmUuIGNhcnJ5IG91dCkgaXMgbm90IHN0b3JlZCBhbnl3aGVyZSwgYW5kIGlz
CisgICBsb3N0LgorCisgICA3KSBzdWJfZGRtbXNzKGhpZ2hfZGlmZmVyZW5jZSwgbG93X2Rp
ZmZlcmVuY2UsIGhpZ2hfbWludWVuZCwKKyAgIGxvd19taW51ZW5kLCBoaWdoX3N1YnRyYWhl
bmQsIGxvd19zdWJ0cmFoZW5kKSBzdWJ0cmFjdHMgdHdvCisgICB0d28td29yZCB1bnNpZ25l
ZCBpbnRlZ2VycywgY29tcG9zZWQgYnkgSElHSF9NSU5VRU5EXzEgYW5kCisgICBMT1dfTUlO
VUVORF8xLCBhbmQgSElHSF9TVUJUUkFIRU5EXzIgYW5kIExPV19TVUJUUkFIRU5EXzIKKyAg
IHJlc3BlY3RpdmVseS4gIFRoZSByZXN1bHQgaXMgcGxhY2VkIGluIEhJR0hfRElGRkVSRU5D
RSBhbmQKKyAgIExPV19ESUZGRVJFTkNFLiAgT3ZlcmZsb3cgKGkuZS4gY2Fycnkgb3V0KSBp
cyBub3Qgc3RvcmVkIGFueXdoZXJlLAorICAgYW5kIGlzIGxvc3QuCisKKyAgIElmIGFueSBv
ZiB0aGVzZSBtYWNyb3MgYXJlIGxlZnQgdW5kZWZpbmVkIGZvciBhIHBhcnRpY3VsYXIgQ1BV
LAorICAgQyBtYWNyb3MgYXJlIHVzZWQuICAqLworCisjaWYgZGVmaW5lZCAoX19hcm1fXykK
KyNkZWZpbmUgYWRkX3NzYWFhYShzaCwgc2wsIGFoLCBhbCwgYmgsIGJsKSBcCisgIF9fYXNt
X18gKCJhZGRzCSUxLCAlNCwgJTUJCQkJCVxuXAorCWFkYwklMCwgJTIsICUzIgkJCQkJCVwK
KwkgICA6ICI9ciIgKChVU0l0eXBlKSAoc2gpKSwJCQkJCVwKKwkgICAgICI9JnIiICgoVVNJ
dHlwZSkgKHNsKSkJCQkJCVwKKwkgICA6ICIlciIgKChVU0l0eXBlKSAoYWgpKSwJCQkJCVwK
KwkgICAgICJySSIgKChVU0l0eXBlKSAoYmgpKSwJCQkJCVwKKwkgICAgICIlciIgKChVU0l0
eXBlKSAoYWwpKSwJCQkJCVwKKwkgICAgICJySSIgKChVU0l0eXBlKSAoYmwpKSkKKyNkZWZp
bmUgc3ViX2RkbW1zcyhzaCwgc2wsIGFoLCBhbCwgYmgsIGJsKSBcCisgIF9fYXNtX18gKCJz
dWJzCSUxLCAlNCwgJTUJCQkJCVxuXAorCXNiYwklMCwgJTIsICUzIgkJCQkJCVwKKwkgICA6
ICI9ciIgKChVU0l0eXBlKSAoc2gpKSwJCQkJCVwKKwkgICAgICI9JnIiICgoVVNJdHlwZSkg
KHNsKSkJCQkJCVwKKwkgICA6ICJyIiAoKFVTSXR5cGUpIChhaCkpLAkJCQkJXAorCSAgICAg
InJJIiAoKFVTSXR5cGUpIChiaCkpLAkJCQkJXAorCSAgICAgInIiICgoVVNJdHlwZSkgKGFs
KSksCQkJCQlcCisJICAgICAickkiICgoVVNJdHlwZSkgKGJsKSkpCisjZGVmaW5lIHVtdWxf
cHBtbSh4aCwgeGwsIGEsIGIpIFwKK3tyZWdpc3RlciBVU0l0eXBlIF9fdDAsIF9fdDEsIF9f
dDI7CQkJCQlcCisgIF9fYXNtX18gKCIlQCBJbmxpbmVkIHVtdWxfcHBtbQkJCQkJXG5cCisJ
bW92CSUyLCAlNSwgbHNyICMxNgkJCQkJCVxuXAorCW1vdgklMCwgJTYsIGxzciAjMTYJCQkJ
CQlcblwKKwliaWMJJTMsICU1LCAlMiwgbHNsICMxNgkJCQkJXG5cCisJYmljCSU0LCAlNiwg
JTAsIGxzbCAjMTYJCQkJCVxuXAorCW11bAklMSwgJTMsICU0CQkJCQkJXG5cCisJbXVsCSU0
LCAlMiwgJTQJCQkJCQlcblwKKwltdWwJJTMsICUwLCAlMwkJCQkJCVxuXAorCW11bAklMCwg
JTIsICUwCQkJCQkJXG5cCisJYWRkcwklMywgJTQsICUzCQkJCQkJXG5cCisJYWRkY3MJJTAs
ICUwLCAjNjU1MzYJCQkJCQlcblwKKwlhZGRzCSUxLCAlMSwgJTMsIGxzbCAjMTYJCQkJCVxu
XAorCWFkYwklMCwgJTAsICUzLCBsc3IgIzE2IgkJCQkJXAorCSAgIDogIj0mciIgKChVU0l0
eXBlKSAoeGgpKSwJCQkJCVwKKwkgICAgICI9ciIgKChVU0l0eXBlKSAoeGwpKSwJCQkJCVwK
KwkgICAgICI9JnIiIChfX3QwKSwgIj0mciIgKF9fdDEpLCAiPXIiIChfX3QyKQkJCVwKKwkg
ICA6ICJyIiAoKFVTSXR5cGUpIChhKSksCQkJCQlcCisJICAgICAiciIgKChVU0l0eXBlKSAo
YikpKTt9CisjZGVmaW5lIFVNVUxfVElNRSAyMAorI2RlZmluZSBVRElWX1RJTUUgMTAwCisj
ZW5kaWYgLyogX19hcm1fXyAqLworCisjZGVmaW5lIF9fdW11bHNpZGkzKHUsIHYpIFwKKyAg
KHtESXVuaW9uIF9fdzsJCQkJCQkJXAorICAgIHVtdWxfcHBtbSAoX193LnMuaGlnaCwgX193
LnMubG93LCB1LCB2KTsJCQkJXAorICAgIF9fdy5sbDsgfSkKKworI2RlZmluZSBfX3VkaXZf
cXJubmRfYyhxLCByLCBuMSwgbjAsIGQpIFwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBVU0l0
eXBlIF9fZDEsIF9fZDAsIF9fcTEsIF9fcTA7CQkJCQlcCisgICAgVVNJdHlwZSBfX3IxLCBf
X3IwLCBfX207CQkJCQkJXAorICAgIF9fZDEgPSBfX2xsX2hpZ2hwYXJ0IChkKTsJCQkJCQlc
CisgICAgX19kMCA9IF9fbGxfbG93cGFydCAoZCk7CQkJCQkJXAorCQkJCQkJCQkJXAorICAg
IF9fcjEgPSAobjEpICUgX19kMTsJCQkJCQkJXAorICAgIF9fcTEgPSAobjEpIC8gX19kMTsJ
CQkJCQkJXAorICAgIF9fbSA9IChVU0l0eXBlKSBfX3ExICogX19kMDsJCQkJCVwKKyAgICBf
X3IxID0gX19yMSAqIF9fbGxfQiB8IF9fbGxfaGlnaHBhcnQgKG4wKTsJCQkJXAorICAgIGlm
IChfX3IxIDwgX19tKQkJCQkJCQlcCisgICAgICB7CQkJCQkJCQkJXAorCV9fcTEtLSwgX19y
MSArPSAoZCk7CQkJCQkJXAorCWlmIChfX3IxID49IChkKSkgLyogaS5lLiB3ZSBkaWRuJ3Qg
Z2V0IGNhcnJ5IHdoZW4gYWRkaW5nIHRvIF9fcjEgKi9cCisJICBpZiAoX19yMSA8IF9fbSkJ
CQkJCQlcCisJICAgIF9fcTEtLSwgX19yMSArPSAoZCk7CQkJCQlcCisgICAgICB9CQkJCQkJ
CQkJXAorICAgIF9fcjEgLT0gX19tOwkJCQkJCQlcCisJCQkJCQkJCQlcCisgICAgX19yMCA9
IF9fcjEgJSBfX2QxOwkJCQkJCQlcCisgICAgX19xMCA9IF9fcjEgLyBfX2QxOwkJCQkJCQlc
CisgICAgX19tID0gKFVTSXR5cGUpIF9fcTAgKiBfX2QwOwkJCQkJXAorICAgIF9fcjAgPSBf
X3IwICogX19sbF9CIHwgX19sbF9sb3dwYXJ0IChuMCk7CQkJCVwKKyAgICBpZiAoX19yMCA8
IF9fbSkJCQkJCQkJXAorICAgICAgewkJCQkJCQkJCVwKKwlfX3EwLS0sIF9fcjAgKz0gKGQp
OwkJCQkJCVwKKwlpZiAoX19yMCA+PSAoZCkpCQkJCQkJXAorCSAgaWYgKF9fcjAgPCBfX20p
CQkJCQkJXAorCSAgICBfX3EwLS0sIF9fcjAgKz0gKGQpOwkJCQkJXAorICAgICAgfQkJCQkJ
CQkJCVwKKyAgICBfX3IwIC09IF9fbTsJCQkJCQkJXAorCQkJCQkJCQkJXAorICAgIChxKSA9
IChVU0l0eXBlKSBfX3ExICogX19sbF9CIHwgX19xMDsJCQkJXAorICAgIChyKSA9IF9fcjA7
CQkJCQkJCQlcCisgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgVURJVl9ORUVEU19OT1JNQUxJ
WkFUSU9OIDEKKyNkZWZpbmUgdWRpdl9xcm5uZCBfX3VkaXZfcXJubmRfYworCisjZGVmaW5l
IGNvdW50X2xlYWRpbmdfemVyb3MoY291bnQsIHgpIFwKKyAgZG8gewkJCQkJCQkJCVwKKyAg
ICBVU0l0eXBlIF9feHIgPSAoeCk7CQkJCQkJCVwKKyAgICBVU0l0eXBlIF9fYTsJCQkJCQkJ
XAorCQkJCQkJCQkJXAorICAgIGlmIChTSV9UWVBFX1NJWkUgPD0gMzIpCQkJCQkJXAorICAg
ICAgewkJCQkJCQkJCVwKKwlfX2EgPSBfX3hyIDwgKChVU0l0eXBlKTE8PDIqX19CSVRTNCkJ
CQkJXAorCSAgPyAoX194ciA8ICgoVVNJdHlwZSkxPDxfX0JJVFM0KSA/IDAgOiBfX0JJVFM0
KQkJXAorCSAgOiAoX194ciA8ICgoVVNJdHlwZSkxPDwzKl9fQklUUzQpID8gIDIqX19CSVRT
NCA6IDMqX19CSVRTNCk7CVwKKyAgICAgIH0JCQkJCQkJCQlcCisgICAgZWxzZQkJCQkJCQkJ
XAorICAgICAgewkJCQkJCQkJCVwKKwlmb3IgKF9fYSA9IFNJX1RZUEVfU0laRSAtIDg7IF9f
YSA+IDA7IF9fYSAtPSA4KQkJCVwKKwkgIGlmICgoKF9feHIgPj4gX19hKSAmIDB4ZmYpICE9
IDApCQkJCVwKKwkgICAgYnJlYWs7CQkJCQkJCVwKKyAgICAgIH0JCQkJCQkJCQlcCisJCQkJ
CQkJCQlcCisgICAgKGNvdW50KSA9IFNJX1RZUEVfU0laRSAtIChfX2Nsel90YWJbX194ciA+
PiBfX2FdICsgX19hKTsJCVwKKyAgfSB3aGlsZSAoMCkKZGlmZiAtciBlNzAxNDYxYjEyNTEg
eGVuL2FyY2gvYXJtL2xpYi9sc2hyZGkzLlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9sc2hyZGkzLlMJRnJp
IEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTcgQEAKKyNpbmNsdWRl
IDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworI2RlZmlu
ZSBhbCByMAorI2RlZmluZSBhaCByMQorCitFTlRSWShfX2xzaHJkaTMpCitFTlRSWShfX2Fl
YWJpX2xsc3IpCisKKyAgICAgICAgc3VicyAgICByMywgcjIsICMzMgorICAgICAgICByc2Ig
ICAgIGlwLCByMiwgIzMyCisgICAgICAgIG1vdm1pICAgYWwsIGFsLCBsc3IgcjIKKyAgICAg
ICAgbW92cGwgICBhbCwgYWgsIGxzciByMworIAlvcnJtaSAgIGFsLCBhbCwgYWgsIGxzbCBp
cCAKKyAgICAgICAgbW92ICAgICBhaCwgYWgsIGxzciByMgorICAgICAgICBtb3YgICAgIHBj
LCBscgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvbWF0aC5jCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9h
cmNoL2FybS9saWIvbWF0aC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAt
MCwwICsxLDMgQEAKK3ZvaWQgbWR1bW15KHZvaWQpCit7Cit9CmRpZmYgLXIgZTcwMTQ2MWIx
MjUxIHhlbi9hcmNoL2FybS9saWIvbWVtY2hyLlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9tZW1jaHIuUwlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxNCBAQAorI2luY2x1
ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisJLnRl
eHQKKwkuYWxpZ24JNQorRU5UUlkobWVtY2hyKQorMToJc3VicwlyMiwgcjIsICMxCisJYm1p
CTJmCisJbGRyYglyMywgW3IwXSwgIzEKKwl0ZXEJcjMsIHIxCisJYm5lCTFiCisJc3ViCXIw
LCByMCwgIzEKKzI6CW1vdm5lCXIwLCAjMAorCW1vdglwYyxscgpkaWZmIC1yIGU3MDE0NjFi
MTI1MSB4ZW4vYXJjaC9hcm0vbGliL21lbWNweS5TCi0tLSAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbWVtY3B5LlMJ
RnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiAgbGludXgvYXJjaC9hcm0vbGliL21lbWNweS5TCisgKgorICogIEF1dGhvcjoJTmljb2xh
cyBQaXRyZQorICogIENyZWF0ZWQ6CVNlcCAyOCwgMjAwNQorICogIENvcHlyaWdodDoJTW9u
dGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy
c2lvbiAyIGFzCisgKiAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24uCisgKi8KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNt
LW1hY3Jvcy5oPgorCisKKwkubWFjcm8gbGRyMXcgcHRyIHJlZyBhYm9ydAorCWxkciBccmVn
LCBbXHB0cl0sICM0CisJLmVuZG0KKworCS5tYWNybyBsZHI0dyBwdHIgcmVnMSByZWcyIHJl
ZzMgcmVnNCBhYm9ydAorCWxkbWlhIFxwdHIhLCB7XHJlZzEsIFxyZWcyLCBccmVnMywgXHJl
ZzR9CisJLmVuZG0KKworCS5tYWNybyBsZHI4dyBwdHIgcmVnMSByZWcyIHJlZzMgcmVnNCBy
ZWc1IHJlZzYgcmVnNyByZWc4IGFib3J0CisJbGRtaWEgXHB0ciEsIHtccmVnMSwgXHJlZzIs
IFxyZWczLCBccmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywgXHJlZzh9CisJLmVuZG0KKwor
CS5tYWNybyBsZHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQKKwlsZHJcY29uZFwoKWIgXHJl
ZywgW1xwdHJdLCAjMQorCS5lbmRtCisKKwkubWFjcm8gc3RyMXcgcHRyIHJlZyBhYm9ydAor
CXN0ciBccmVnLCBbXHB0cl0sICM0CisJLmVuZG0KKworCS5tYWNybyBzdHI4dyBwdHIgcmVn
MSByZWcyIHJlZzMgcmVnNCByZWc1IHJlZzYgcmVnNyByZWc4IGFib3J0CisJc3RtaWEgXHB0
ciEsIHtccmVnMSwgXHJlZzIsIFxyZWczLCBccmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywg
XHJlZzh9CisJLmVuZG0KKworCS5tYWNybyBzdHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQK
KwlzdHJcY29uZFwoKWIgXHJlZywgW1xwdHJdLCAjMQorCS5lbmRtCisKKwkubWFjcm8gZW50
ZXIgcmVnMSByZWcyCisJc3RtZGIgc3AhLCB7cjAsIFxyZWcxLCBccmVnMn0KKwkuZW5kbQor
CisJLm1hY3JvIGV4aXQgcmVnMSByZWcyCisJbGRtZmQgc3AhLCB7cjAsIFxyZWcxLCBccmVn
Mn0KKwkuZW5kbQorCisJLnRleHQKKworLyogUHJvdG90eXBlOiB2b2lkICptZW1jcHkodm9p
ZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7ICovCisKK0VOVFJZKG1lbWNw
eSkKKworI2luY2x1ZGUgImNvcHlfdGVtcGxhdGUuUyIKKwpkaWZmIC1yIGU3MDE0NjFiMTI1
MSB4ZW4vYXJjaC9hcm0vbGliL21lbW1vdmUuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL21lbW1vdmUuUwlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyMDcgQEAKKy8qCisg
KiAgbGludXgvYXJjaC9hcm0vbGliL21lbW1vdmUuUworICoKKyAqICBBdXRob3I6CU5pY29s
YXMgUGl0cmUKKyAqICBDcmVhdGVkOglTZXAgMjgsIDIwMDUKKyAqICBDb3B5cmlnaHQ6CShD
KSBNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq
ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IHZlcnNpb24gMiBhcworICogIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNt
L2FzbS1tYWNyb3MuaD4KKworCisvKgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBlbmFibGUg
Y29kZSB0byBjYWNoZWxpbmUgYWxpZ24gdGhlIHNvdXJjZSBwb2ludGVyLgorICogRXhwZXJp
bWVudHMgb24gdGVzdGVkIGFyY2hpdGVjdHVyZXMgKFN0cm9uZ0FSTSBhbmQgWFNjYWxlKSBk
aWRuJ3Qgc2hvdworICogdGhpcyBhIHdvcnRod2hpbGUgdGhpbmcgdG8gZG8uICBUaGF0IG1p
Z2h0IGJlIGRpZmZlcmVudCBpbiB0aGUgZnV0dXJlLgorICovCisvLyNkZWZpbmUgQ0FMR04o
Y29kZS4uLikgICAgICAgIGNvZGUKKyNkZWZpbmUgQ0FMR04oY29kZS4uLikKKworCQkudGV4
dAorCisvKgorICogUHJvdG90eXBlOiB2b2lkICptZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0
IHZvaWQgKnNyYywgc2l6ZV90IG4pOworICoKKyAqIE5vdGU6CisgKgorICogSWYgdGhlIG1l
bW9yeSByZWdpb25zIGRvbid0IG92ZXJsYXAsIHdlIHNpbXBseSBicmFuY2ggdG8gbWVtY3B5
IHdoaWNoIGlzCisgKiBub3JtYWxseSBhIGJpdCBmYXN0ZXIuIE90aGVyd2lzZSB0aGUgY29w
eSBpcyBkb25lIGdvaW5nIGRvd253YXJkcy4gIFRoaXMKKyAqIGlzIGEgdHJhbnNwb3NpdGlv
biBvZiB0aGUgY29kZSBmcm9tIGNvcHlfdGVtcGxhdGUuUyBidXQgd2l0aCB0aGUgY29weQor
ICogb2NjdXJyaW5nIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24uCisgKi8KKworRU5UUlko
bWVtbW92ZSkKKworCQlzdWJzCWlwLCByMCwgcjEKKwkJY21waGkJcjIsIGlwCisJCWJscwlt
ZW1jcHkKKworCQlzdG1mZAlzcCEsIHtyMCwgcjQsIGxyfQorCQlhZGQJcjEsIHIxLCByMgor
CQlhZGQJcjAsIHIwLCByMgorCQlzdWJzCXIyLCByMiwgIzQKKwkJYmx0CThmCisJCWFuZHMJ
aXAsIHIwLCAjMworCVBMRCgJcGxkCVtyMSwgIy00XQkJKQorCQlibmUJOWYKKwkJYW5kcwlp
cCwgcjEsICMzCisJCWJuZQkxMGYKKworMToJCXN1YnMJcjIsIHIyLCAjKDI4KQorCQlzdG1m
ZAlzcCEsIHtyNSAtIHI4fQorCQlibHQJNWYKKworCUNBTEdOKAlhbmRzCWlwLCByMSwgIzMx
CQkpCisJQ0FMR04oCXNiY25lcwlyNCwgaXAsIHIyCQkpICBAIEMgaXMgYWx3YXlzIHNldCBo
ZXJlCisJQ0FMR04oCWJjcwkyZgkJCSkKKwlDQUxHTigJYWRyCXI0LCA2ZgkJCSkKKwlDQUxH
TigJc3VicwlyMiwgcjIsIGlwCQkpICBAIEMgaXMgc2V0IGhlcmUKKwlDQUxHTigJYWRkCXBj
LCByNCwgaXAJCSkKKworCVBMRCgJcGxkCVtyMSwgIy00XQkJKQorMjoJUExEKAlzdWJzCXIy
LCByMiwgIzk2CQkpCisJUExEKAlwbGQJW3IxLCAjLTMyXQkJKQorCVBMRCgJYmx0CTRmCQkJ
KQorCVBMRCgJcGxkCVtyMSwgIy02NF0JCSkKKwlQTEQoCXBsZAlbcjEsICMtOTZdCQkpCisK
KzM6CVBMRCgJcGxkCVtyMSwgIy0xMjhdCQkpCis0OgkJbGRtZGIJcjEhLCB7cjMsIHI0LCBy
NSwgcjYsIHI3LCByOCwgaXAsIGxyfQorCQlzdWJzCXIyLCByMiwgIzMyCisJCXN0bWRiCXIw
ISwge3IzLCByNCwgcjUsIHI2LCByNywgcjgsIGlwLCBscn0KKwkJYmdlCTNiCisJUExEKAlj
bW4JcjIsICM5NgkJCSkKKwlQTEQoCWJnZQk0YgkJCSkKKworNToJCWFuZHMJaXAsIHIyLCAj
MjgKKwkJcnNiCWlwLCBpcCwgIzMyCisJCWFkZG5lCXBjLCBwYywgaXAJCUAgQyBpcyBhbHdh
eXMgY2xlYXIgaGVyZQorCQliCTdmCis2OgkJbm9wCisJCWxkcglyMywgW3IxLCAjLTRdIQor
CQlsZHIJcjQsIFtyMSwgIy00XSEKKwkJbGRyCXI1LCBbcjEsICMtNF0hCisJCWxkcglyNiwg
W3IxLCAjLTRdIQorCQlsZHIJcjcsIFtyMSwgIy00XSEKKwkJbGRyCXI4LCBbcjEsICMtNF0h
CisJCWxkcglsciwgW3IxLCAjLTRdIQorCisJCWFkZAlwYywgcGMsIGlwCisJCW5vcAorCQlu
b3AKKwkJc3RyCXIzLCBbcjAsICMtNF0hCisJCXN0cglyNCwgW3IwLCAjLTRdIQorCQlzdHIJ
cjUsIFtyMCwgIy00XSEKKwkJc3RyCXI2LCBbcjAsICMtNF0hCisJCXN0cglyNywgW3IwLCAj
LTRdIQorCQlzdHIJcjgsIFtyMCwgIy00XSEKKwkJc3RyCWxyLCBbcjAsICMtNF0hCisKKwlD
QUxHTigJYmNzCTJiCQkJKQorCis3OgkJbGRtZmQJc3AhLCB7cjUgLSByOH0KKworODoJCW1v
dnMJcjIsIHIyLCBsc2wgIzMxCisJCWxkcm5lYglyMywgW3IxLCAjLTFdIQorCQlsZHJjc2IJ
cjQsIFtyMSwgIy0xXSEKKwkJbGRyY3NiCWlwLCBbcjEsICMtMV0KKwkJc3RybmViCXIzLCBb
cjAsICMtMV0hCisJCXN0cmNzYglyNCwgW3IwLCAjLTFdIQorCQlzdHJjc2IJaXAsIFtyMCwg
Iy0xXQorCQlsZG1mZAlzcCEsIHtyMCwgcjQsIHBjfQorCis5OgkJY21wCWlwLCAjMgorCQls
ZHJndGIJcjMsIFtyMSwgIy0xXSEKKwkJbGRyZ2ViCXI0LCBbcjEsICMtMV0hCisJCWxkcmIJ
bHIsIFtyMSwgIy0xXSEKKwkJc3RyZ3RiCXIzLCBbcjAsICMtMV0hCisJCXN0cmdlYglyNCwg
W3IwLCAjLTFdIQorCQlzdWJzCXIyLCByMiwgaXAKKwkJc3RyYglsciwgW3IwLCAjLTFdIQor
CQlibHQJOGIKKwkJYW5kcwlpcCwgcjEsICMzCisJCWJlcQkxYgorCisxMDoJCWJpYwlyMSwg
cjEsICMzCisJCWNtcAlpcCwgIzIKKwkJbGRyCXIzLCBbcjEsICMwXQorCQliZXEJMTdmCisJ
CWJsdAkxOGYKKworCisJCS5tYWNybwliYWNrd2FyZF9jb3B5X3NoaWZ0IHB1c2ggcHVsbAor
CisJCXN1YnMJcjIsIHIyLCAjMjgKKwkJYmx0CTE0ZgorCisJQ0FMR04oCWFuZHMJaXAsIHIx
LCAjMzEJCSkKKwlDQUxHTigJcnNiCWlwLCBpcCwgIzMyCQkpCisJQ0FMR04oCXNiY25lcwly
NCwgaXAsIHIyCQkpICBAIEMgaXMgYWx3YXlzIHNldCBoZXJlCisJQ0FMR04oCXN1YmNjCXIy
LCByMiwgaXAJCSkKKwlDQUxHTigJYmNjCTE1ZgkJCSkKKworMTE6CQlzdG1mZAlzcCEsIHty
NSAtIHI5fQorCisJUExEKAlwbGQJW3IxLCAjLTRdCQkpCisJUExEKAlzdWJzCXIyLCByMiwg
Izk2CQkpCisJUExEKAlwbGQJW3IxLCAjLTMyXQkJKQorCVBMRCgJYmx0CTEzZgkJCSkKKwlQ
TEQoCXBsZAlbcjEsICMtNjRdCQkpCisJUExEKAlwbGQJW3IxLCAjLTk2XQkJKQorCisxMjoJ
UExEKAlwbGQJW3IxLCAjLTEyOF0JCSkKKzEzOgkJbGRtZGIgICByMSEsIHtyNywgcjgsIHI5
LCBpcH0KKwkJbW92ICAgICBsciwgcjMsIHB1c2ggI1xwdXNoCisJCXN1YnMgICAgcjIsIHIy
LCAjMzIKKwkJbGRtZGIgICByMSEsIHtyMywgcjQsIHI1LCByNn0KKwkJb3JyICAgICBsciwg
bHIsIGlwLCBwdWxsICNccHVsbAorCQltb3YgICAgIGlwLCBpcCwgcHVzaCAjXHB1c2gKKwkJ
b3JyICAgICBpcCwgaXAsIHI5LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI5LCByOSwgcHVz
aCAjXHB1c2gKKwkJb3JyICAgICByOSwgcjksIHI4LCBwdWxsICNccHVsbAorCQltb3YgICAg
IHI4LCByOCwgcHVzaCAjXHB1c2gKKwkJb3JyICAgICByOCwgcjgsIHI3LCBwdWxsICNccHVs
bAorCQltb3YgICAgIHI3LCByNywgcHVzaCAjXHB1c2gKKwkJb3JyICAgICByNywgcjcsIHI2
LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI2LCByNiwgcHVzaCAjXHB1c2gKKwkJb3JyICAg
ICByNiwgcjYsIHI1LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI1LCByNSwgcHVzaCAjXHB1
c2gKKwkJb3JyICAgICByNSwgcjUsIHI0LCBwdWxsICNccHVsbAorCQltb3YgICAgIHI0LCBy
NCwgcHVzaCAjXHB1c2gKKwkJb3JyICAgICByNCwgcjQsIHIzLCBwdWxsICNccHVsbAorCQlz
dG1kYiAgIHIwISwge3I0IC0gcjksIGlwLCBscn0KKwkJYmdlCTEyYgorCVBMRCgJY21uCXIy
LCAjOTYJCQkpCisJUExEKAliZ2UJMTNiCQkJKQorCisJCWxkbWZkCXNwISwge3I1IC0gcjl9
CisKKzE0OgkJYW5kcwlpcCwgcjIsICMyOAorCQliZXEJMTZmCisKKzE1OgkJbW92ICAgICBs
ciwgcjMsIHB1c2ggI1xwdXNoCisJCWxkcglyMywgW3IxLCAjLTRdIQorCQlzdWJzCWlwLCBp
cCwgIzQKKwkJb3JyCWxyLCBsciwgcjMsIHB1bGwgI1xwdWxsCisJCXN0cglsciwgW3IwLCAj
LTRdIQorCQliZ3QJMTViCisJQ0FMR04oCWNtcAlyMiwgIzAJCQkpCisJQ0FMR04oCWJnZQkx
MWIJCQkpCisKKzE2OgkJYWRkCXIxLCByMSwgIyhccHVsbCAvIDgpCisJCWIJOGIKKworCQku
ZW5kbQorCisKKwkJYmFja3dhcmRfY29weV9zaGlmdAlwdXNoPTgJcHVsbD0yNAorCisxNzoJ
CWJhY2t3YXJkX2NvcHlfc2hpZnQJcHVzaD0xNglwdWxsPTE2CisKKzE4OgkJYmFja3dhcmRf
Y29weV9zaGlmdAlwdXNoPTI0CXB1bGw9OAorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9h
cmNoL2FybS9saWIvbWVtb3J5LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi9tZW1vcnkuUwlGcmkgRmViIDAz
IDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw0MjEgQEAKKy8qCisgKiAgbGludXgv
YXJjaC9hcm0vbGliL21lbWNweS5TCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQor
ICogIENyZWF0ZWQ6CVNlcCAyOCwgMjAwNQorICogIENvcHlyaWdodDoJTW9udGFWaXN0YSBT
b2Z0d2FyZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz
CisgKiAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8K
KworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5o
PgorCisKKwkubWFjcm8gbGRyMXcgcHRyIHJlZyBhYm9ydAorCWxkciBccmVnLCBbXHB0cl0s
ICM0CisJLmVuZG0KKworCS5tYWNybyBsZHI0dyBwdHIgcmVnMSByZWcyIHJlZzMgcmVnNCBh
Ym9ydAorCWxkbWlhIFxwdHIhLCB7XHJlZzEsIFxyZWcyLCBccmVnMywgXHJlZzR9CisJLmVu
ZG0KKworCS5tYWNybyBsZHI4dyBwdHIgcmVnMSByZWcyIHJlZzMgcmVnNCByZWc1IHJlZzYg
cmVnNyByZWc4IGFib3J0CisJbGRtaWEgXHB0ciEsIHtccmVnMSwgXHJlZzIsIFxyZWczLCBc
cmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywgXHJlZzh9CisJLmVuZG0KKworCS5tYWNybyBs
ZHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQKKwlsZHJcY29uZFwoKWIgXHJlZywgW1xwdHJd
LCAjMQorCS5lbmRtCisKKwkubWFjcm8gc3RyMXcgcHRyIHJlZyBhYm9ydAorCXN0ciBccmVn
LCBbXHB0cl0sICM0CisJLmVuZG0KKworCS5tYWNybyBzdHI4dyBwdHIgcmVnMSByZWcyIHJl
ZzMgcmVnNCByZWc1IHJlZzYgcmVnNyByZWc4IGFib3J0CisJc3RtaWEgXHB0ciEsIHtccmVn
MSwgXHJlZzIsIFxyZWczLCBccmVnNCwgXHJlZzUsIFxyZWc2LCBccmVnNywgXHJlZzh9CisJ
LmVuZG0KKworCS5tYWNybyBzdHIxYiBwdHIgcmVnIGNvbmQ9YWwgYWJvcnQKKwlzdHJcY29u
ZFwoKWIgXHJlZywgW1xwdHJdLCAjMQorCS5lbmRtCisKKwkubWFjcm8gZW50ZXIgcmVnMSBy
ZWcyCisJc3RtZGIgc3AhLCB7cjAsIFxyZWcxLCBccmVnMn0KKwkuZW5kbQorCisJLm1hY3Jv
IGV4aXQgcmVnMSByZWcyCisJbGRtZmQgc3AhLCB7cjAsIFxyZWcxLCBccmVnMn0KKwkuZW5k
bQorCisJLnRleHQKKworLyogUHJvdG90eXBlOiB2b2lkICptZW1jcHkodm9pZCAqZGVzdCwg
Y29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7ICovCisKK0VOVFJZKG1lbWNweSkKKworI2lu
Y2x1ZGUgImNvcHlfdGVtcGxhdGUuUyIKKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNp
bmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisJLnRleHQKKwkuYWxpZ24JNQorRU5UUlko
bWVtY2hyKQorMToJc3VicwlyMiwgcjIsICMxCisJYm1pCTJmCisJbGRyYglyMywgW3IwXSwg
IzEKKwl0ZXEJcjMsIHIxCisJYm5lCTFiCisJc3ViCXIwLCByMCwgIzEKKzI6CW1vdm5lCXIw
LCAjMAorCW1vdglwYyxscgorLyoKKyAqICBsaW51eC9hcmNoL2FybS9saWIvbWVtbW92ZS5T
CisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENyZWF0ZWQ6CVNlcCAyOCwg
MjAwNQorICogIENvcHlyaWdodDoJKEMpIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoK
KyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiAgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPHhlbi9j
b25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jvcy5oPgorCisKKy8qCisgKiBUaGlz
IGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb2RlIHRvIGNhY2hlbGluZSBhbGlnbiB0aGUgc291
cmNlIHBvaW50ZXIuCisgKiBFeHBlcmltZW50cyBvbiB0ZXN0ZWQgYXJjaGl0ZWN0dXJlcyAo
U3Ryb25nQVJNIGFuZCBYU2NhbGUpIGRpZG4ndCBzaG93CisgKiB0aGlzIGEgd29ydGh3aGls
ZSB0aGluZyB0byBkby4gIFRoYXQgbWlnaHQgYmUgZGlmZmVyZW50IGluIHRoZSBmdXR1cmUu
CisgKi8KKy8vI2RlZmluZSBDQUxHTihjb2RlLi4uKSAgICAgICAgY29kZQorI2RlZmluZSBD
QUxHTihjb2RlLi4uKQorCisJCS50ZXh0CisKKy8qCisgKiBQcm90b3R5cGU6IHZvaWQgKm1l
bW1vdmUodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7CisgKgorICog
Tm90ZToKKyAqCisgKiBJZiB0aGUgbWVtb3J5IHJlZ2lvbnMgZG9uJ3Qgb3ZlcmxhcCwgd2Ug
c2ltcGx5IGJyYW5jaCB0byBtZW1jcHkgd2hpY2ggaXMKKyAqIG5vcm1hbGx5IGEgYml0IGZh
c3Rlci4gT3RoZXJ3aXNlIHRoZSBjb3B5IGlzIGRvbmUgZ29pbmcgZG93bndhcmRzLiAgVGhp
cworICogaXMgYSB0cmFuc3Bvc2l0aW9uIG9mIHRoZSBjb2RlIGZyb20gY29weV90ZW1wbGF0
ZS5TIGJ1dCB3aXRoIHRoZSBjb3B5CisgKiBvY2N1cnJpbmcgaW4gdGhlIG9wcG9zaXRlIGRp
cmVjdGlvbi4KKyAqLworCitFTlRSWShtZW1tb3ZlKQorCisJCXN1YnMJaXAsIHIwLCByMQor
CQljbXBoaQlyMiwgaXAKKwkJYmxzCW1lbWNweQorCisJCXN0bWZkCXNwISwge3IwLCByNCwg
bHJ9CisJCWFkZAlyMSwgcjEsIHIyCisJCWFkZAlyMCwgcjAsIHIyCisJCXN1YnMJcjIsIHIy
LCAjNAorCQlibHQJOGYKKwkJYW5kcwlpcCwgcjAsICMzCisJUExEKAlwbGQJW3IxLCAjLTRd
CQkpCisJCWJuZQk5ZgorCQlhbmRzCWlwLCByMSwgIzMKKwkJYm5lCTEwZgorCisxOgkJc3Vi
cwlyMiwgcjIsICMoMjgpCisJCXN0bWZkCXNwISwge3I1IC0gcjh9CisJCWJsdAk1ZgorCisJ
Q0FMR04oCWFuZHMJaXAsIHIxLCAjMzEJCSkKKwlDQUxHTigJc2JjbmVzCXI0LCBpcCwgcjIJ
CSkgIEAgQyBpcyBhbHdheXMgc2V0IGhlcmUKKwlDQUxHTigJYmNzCTJmCQkJKQorCUNBTEdO
KAlhZHIJcjQsIDZmCQkJKQorCUNBTEdOKAlzdWJzCXIyLCByMiwgaXAJCSkgIEAgQyBpcyBz
ZXQgaGVyZQorCUNBTEdOKAlhZGQJcGMsIHI0LCBpcAkJKQorCisJUExEKAlwbGQJW3IxLCAj
LTRdCQkpCisyOglQTEQoCXN1YnMJcjIsIHIyLCAjOTYJCSkKKwlQTEQoCXBsZAlbcjEsICMt
MzJdCQkpCisJUExEKAlibHQJNGYJCQkpCisJUExEKAlwbGQJW3IxLCAjLTY0XQkJKQorCVBM
RCgJcGxkCVtyMSwgIy05Nl0JCSkKKworMzoJUExEKAlwbGQJW3IxLCAjLTEyOF0JCSkKKzQ6
CQlsZG1kYglyMSEsIHtyMywgcjQsIHI1LCByNiwgcjcsIHI4LCBpcCwgbHJ9CisJCXN1YnMJ
cjIsIHIyLCAjMzIKKwkJc3RtZGIJcjAhLCB7cjMsIHI0LCByNSwgcjYsIHI3LCByOCwgaXAs
IGxyfQorCQliZ2UJM2IKKwlQTEQoCWNtbglyMiwgIzk2CQkJKQorCVBMRCgJYmdlCTRiCQkJ
KQorCis1OgkJYW5kcwlpcCwgcjIsICMyOAorCQlyc2IJaXAsIGlwLCAjMzIKKwkJYWRkbmUJ
cGMsIHBjLCBpcAkJQCBDIGlzIGFsd2F5cyBjbGVhciBoZXJlCisJCWIJN2YKKzY6CQlub3AK
KwkJbGRyCXIzLCBbcjEsICMtNF0hCisJCWxkcglyNCwgW3IxLCAjLTRdIQorCQlsZHIJcjUs
IFtyMSwgIy00XSEKKwkJbGRyCXI2LCBbcjEsICMtNF0hCisJCWxkcglyNywgW3IxLCAjLTRd
IQorCQlsZHIJcjgsIFtyMSwgIy00XSEKKwkJbGRyCWxyLCBbcjEsICMtNF0hCisKKwkJYWRk
CXBjLCBwYywgaXAKKwkJbm9wCisJCW5vcAorCQlzdHIJcjMsIFtyMCwgIy00XSEKKwkJc3Ry
CXI0LCBbcjAsICMtNF0hCisJCXN0cglyNSwgW3IwLCAjLTRdIQorCQlzdHIJcjYsIFtyMCwg
Iy00XSEKKwkJc3RyCXI3LCBbcjAsICMtNF0hCisJCXN0cglyOCwgW3IwLCAjLTRdIQorCQlz
dHIJbHIsIFtyMCwgIy00XSEKKworCUNBTEdOKAliY3MJMmIJCQkpCisKKzc6CQlsZG1mZAlz
cCEsIHtyNSAtIHI4fQorCis4OgkJbW92cwlyMiwgcjIsIGxzbCAjMzEKKwkJbGRybmViCXIz
LCBbcjEsICMtMV0hCisJCWxkcmNzYglyNCwgW3IxLCAjLTFdIQorCQlsZHJjc2IJaXAsIFty
MSwgIy0xXQorCQlzdHJuZWIJcjMsIFtyMCwgIy0xXSEKKwkJc3RyY3NiCXI0LCBbcjAsICMt
MV0hCisJCXN0cmNzYglpcCwgW3IwLCAjLTFdCisJCWxkbWZkCXNwISwge3IwLCByNCwgcGN9
CisKKzk6CQljbXAJaXAsICMyCisJCWxkcmd0YglyMywgW3IxLCAjLTFdIQorCQlsZHJnZWIJ
cjQsIFtyMSwgIy0xXSEKKwkJbGRyYglsciwgW3IxLCAjLTFdIQorCQlzdHJndGIJcjMsIFty
MCwgIy0xXSEKKwkJc3RyZ2ViCXI0LCBbcjAsICMtMV0hCisJCXN1YnMJcjIsIHIyLCBpcAor
CQlzdHJiCWxyLCBbcjAsICMtMV0hCisJCWJsdAk4YgorCQlhbmRzCWlwLCByMSwgIzMKKwkJ
YmVxCTFiCisKKzEwOgkJYmljCXIxLCByMSwgIzMKKwkJY21wCWlwLCAjMgorCQlsZHIJcjMs
IFtyMSwgIzBdCisJCWJlcQkxN2YKKwkJYmx0CTE4ZgorCisKKwkJLm1hY3JvCWJhY2t3YXJk
X2NvcHlfc2hpZnQgcHVzaCBwdWxsCisKKwkJc3VicwlyMiwgcjIsICMyOAorCQlibHQJMTRm
CisKKwlDQUxHTigJYW5kcwlpcCwgcjEsICMzMQkJKQorCUNBTEdOKAlyc2IJaXAsIGlwLCAj
MzIJCSkKKwlDQUxHTigJc2JjbmVzCXI0LCBpcCwgcjIJCSkgIEAgQyBpcyBhbHdheXMgc2V0
IGhlcmUKKwlDQUxHTigJc3ViY2MJcjIsIHIyLCBpcAkJKQorCUNBTEdOKAliY2MJMTVmCQkJ
KQorCisxMToJCXN0bWZkCXNwISwge3I1IC0gcjl9CisKKwlQTEQoCXBsZAlbcjEsICMtNF0J
CSkKKwlQTEQoCXN1YnMJcjIsIHIyLCAjOTYJCSkKKwlQTEQoCXBsZAlbcjEsICMtMzJdCQkp
CisJUExEKAlibHQJMTNmCQkJKQorCVBMRCgJcGxkCVtyMSwgIy02NF0JCSkKKwlQTEQoCXBs
ZAlbcjEsICMtOTZdCQkpCisKKzEyOglQTEQoCXBsZAlbcjEsICMtMTI4XQkJKQorMTM6CQls
ZG1kYiAgIHIxISwge3I3LCByOCwgcjksIGlwfQorCQltb3YgICAgIGxyLCByMywgcHVzaCAj
XHB1c2gKKwkJc3VicyAgICByMiwgcjIsICMzMgorCQlsZG1kYiAgIHIxISwge3IzLCByNCwg
cjUsIHI2fQorCQlvcnIgICAgIGxyLCBsciwgaXAsIHB1bGwgI1xwdWxsCisJCW1vdiAgICAg
aXAsIGlwLCBwdXNoICNccHVzaAorCQlvcnIgICAgIGlwLCBpcCwgcjksIHB1bGwgI1xwdWxs
CisJCW1vdiAgICAgcjksIHI5LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI5LCByOSwgcjgs
IHB1bGwgI1xwdWxsCisJCW1vdiAgICAgcjgsIHI4LCBwdXNoICNccHVzaAorCQlvcnIgICAg
IHI4LCByOCwgcjcsIHB1bGwgI1xwdWxsCisJCW1vdiAgICAgcjcsIHI3LCBwdXNoICNccHVz
aAorCQlvcnIgICAgIHI3LCByNywgcjYsIHB1bGwgI1xwdWxsCisJCW1vdiAgICAgcjYsIHI2
LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI2LCByNiwgcjUsIHB1bGwgI1xwdWxsCisJCW1v
diAgICAgcjUsIHI1LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI1LCByNSwgcjQsIHB1bGwg
I1xwdWxsCisJCW1vdiAgICAgcjQsIHI0LCBwdXNoICNccHVzaAorCQlvcnIgICAgIHI0LCBy
NCwgcjMsIHB1bGwgI1xwdWxsCisJCXN0bWRiICAgcjAhLCB7cjQgLSByOSwgaXAsIGxyfQor
CQliZ2UJMTJiCisJUExEKAljbW4JcjIsICM5NgkJCSkKKwlQTEQoCWJnZQkxM2IJCQkpCisK
KwkJbGRtZmQJc3AhLCB7cjUgLSByOX0KKworMTQ6CQlhbmRzCWlwLCByMiwgIzI4CisJCWJl
cQkxNmYKKworMTU6CQltb3YgICAgIGxyLCByMywgcHVzaCAjXHB1c2gKKwkJbGRyCXIzLCBb
cjEsICMtNF0hCisJCXN1YnMJaXAsIGlwLCAjNAorCQlvcnIJbHIsIGxyLCByMywgcHVsbCAj
XHB1bGwKKwkJc3RyCWxyLCBbcjAsICMtNF0hCisJCWJndAkxNWIKKwlDQUxHTigJY21wCXIy
LCAjMAkJCSkKKwlDQUxHTigJYmdlCTExYgkJCSkKKworMTY6CQlhZGQJcjEsIHIxLCAjKFxw
dWxsIC8gOCkKKwkJYgk4YgorCisJCS5lbmRtCisKKworCQliYWNrd2FyZF9jb3B5X3NoaWZ0
CXB1c2g9OAlwdWxsPTI0CisKKzE3OgkJYmFja3dhcmRfY29weV9zaGlmdAlwdXNoPTE2CXB1
bGw9MTYKKworMTg6CQliYWNrd2FyZF9jb3B5X3NoaWZ0CXB1c2g9MjQJcHVsbD04CisKKyNp
bmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKwor
CS50ZXh0CisJLmFsaWduCTUKKwkud29yZAkwCisKKzE6CXN1YnMJcjIsIHIyLCAjNAkJQCAx
IGRvIHdlIGhhdmUgZW5vdWdoCisJYmx0CTVmCQkJQCAxIGJ5dGVzIHRvIGFsaWduIHdpdGg/
CisJY21wCXIzLCAjMgkJCUAgMQorCXN0cmx0YglyMSwgW3IwXSwgIzEJCUAgMQorCXN0cmxl
YglyMSwgW3IwXSwgIzEJCUAgMQorCXN0cmIJcjEsIFtyMF0sICMxCQlAIDEKKwlhZGQJcjIs
IHIyLCByMwkJQCAxIChyMiA9IHIyIC0gKDQgLSByMykpCisvKgorICogVGhlIHBvaW50ZXIg
aXMgbm93IGFsaWduZWQgYW5kIHRoZSBsZW5ndGggaXMgYWRqdXN0ZWQuICBUcnkgZG9pbmcg
dGhlCisgKiBtZW16ZXJvIGFnYWluLgorICovCisKK0VOVFJZKG1lbXNldCkKKwlhbmRzCXIz
LCByMCwgIzMJCUAgMSB1bmFsaWduZWQ/CisJYm5lCTFiCQkJQCAxCisvKgorICogd2Uga25v
dyB0aGF0IHRoZSBwb2ludGVyIGluIHIwIGlzIGFsaWduZWQgdG8gYSB3b3JkIGJvdW5kYXJ5
LgorICovCisJb3JyCXIxLCByMSwgcjEsIGxzbCAjOAorCW9ycglyMSwgcjEsIHIxLCBsc2wg
IzE2CisJbW92CXIzLCByMQorCWNtcAlyMiwgIzE2CisJYmx0CTRmCisvKgorICogV2UgbmVl
ZCBhbiBleHRyYSByZWdpc3RlciBmb3IgdGhpcyBsb29wIC0gc2F2ZSB0aGUgcmV0dXJuIGFk
ZHJlc3MgYW5kCisgKiB1c2UgdGhlIExSCisgKi8KKwlzdHIJbHIsIFtzcCwgIy00XSEKKwlt
b3YJaXAsIHIxCisJbW92CWxyLCByMQorCisyOglzdWJzCXIyLCByMiwgIzY0CisJc3RtZ2Vp
YQlyMCEsIHtyMSwgcjMsIGlwLCBscn0JQCA2NCBieXRlcyBhdCBhIHRpbWUuCisJc3RtZ2Vp
YQlyMCEsIHtyMSwgcjMsIGlwLCBscn0KKwlzdG1nZWlhCXIwISwge3IxLCByMywgaXAsIGxy
fQorCXN0bWdlaWEJcjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJYmd0CTJiCisJbGRtZXFmZCBz
cCEsIHtwY30JQCBOb3cgPDY0IGJ5dGVzIHRvIGdvLgorLyoKKyAqIE5vIG5lZWQgdG8gY29y
cmVjdCB0aGUgY291bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZyb20gbm93IG9uCisg
Ki8KKwl0c3QJcjIsICMzMgorCXN0bW5laWEJcjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJc3Rt
bmVpYQlyMCEsIHtyMSwgcjMsIGlwLCBscn0KKwl0c3QJcjIsICMxNgorCXN0bW5laWEJcjAh
LCB7cjEsIHIzLCBpcCwgbHJ9CisJbGRyCWxyLCBbc3BdLCAjNAorCis0Ogl0c3QJcjIsICM4
CisJc3RtbmVpYQlyMCEsIHtyMSwgcjN9CisJdHN0CXIyLCAjNAorCXN0cm5lCXIxLCBbcjBd
LCAjNAorLyoKKyAqIFdoZW4gd2UgZ2V0IGhlcmUsIHdlJ3ZlIGdvdCBsZXNzIHRoYW4gNCBi
eXRlcyB0byB6ZXJvLiAgV2UKKyAqIG1heSBoYXZlIGFuIHVuYWxpZ25lZCBwb2ludGVyIGFz
IHdlbGwuCisgKi8KKzU6CXRzdAlyMiwgIzIKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJc3Ry
bmViCXIxLCBbcjBdLCAjMQorCXRzdAlyMiwgIzEKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJ
bW92CXBjLGxyCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9hc20t
bWFjcm9zLmg+CisKKwkudGV4dAorCS5hbGlnbgk1CisJLndvcmQJMAorLyoKKyAqIEFsaWdu
IHRoZSBwb2ludGVyIGluIHIwLiAgcjMgY29udGFpbnMgdGhlIG51bWJlciBvZiBieXRlcyB0
aGF0IHdlIGFyZQorICogbWlzLWFsaWduZWQgYnksIGFuZCByMSBpcyB0aGUgbnVtYmVyIG9m
IGJ5dGVzLiAgSWYgcjEgPCA0LCB0aGVuIHdlCisgKiBkb24ndCBib3RoZXI7IHdlIHVzZSBi
eXRlIHN0b3JlcyBpbnN0ZWFkLgorICovCisxOglzdWJzCXIxLCByMSwgIzQJCUAgMSBkbyB3
ZSBoYXZlIGVub3VnaAorCWJsdAk1ZgkJCUAgMSBieXRlcyB0byBhbGlnbiB3aXRoPworCWNt
cAlyMywgIzIJCQlAIDEKKwlzdHJsdGIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJsZWIJcjIs
IFtyMF0sICMxCQlAIDEKKwlzdHJiCXIyLCBbcjBdLCAjMQkJQCAxCisJYWRkCXIxLCByMSwg
cjMJCUAgMSAocjEgPSByMSAtICg0IC0gcjMpKQorLyoKKyAqIFRoZSBwb2ludGVyIGlzIG5v
dyBhbGlnbmVkIGFuZCB0aGUgbGVuZ3RoIGlzIGFkanVzdGVkLiAgVHJ5IGRvaW5nIHRoZQor
ICogbWVtemVybyBhZ2Fpbi4KKyAqLworCitFTlRSWShfX21lbXplcm8pCisJbW92CXIyLCAj
MAkJCUAgMQorCWFuZHMJcjMsIHIwLCAjMwkJQCAxIHVuYWxpZ25lZD8KKwlibmUJMWIJCQlA
IDEKKy8qCisgKiByMyA9IDAsIGFuZCB3ZSBrbm93IHRoYXQgdGhlIHBvaW50ZXIgaW4gcjAg
aXMgYWxpZ25lZCB0byBhIHdvcmQgYm91bmRhcnkuCisgKi8KKwljbXAJcjEsICMxNgkJCUAg
MSB3ZSBjYW4gc2tpcCB0aGlzIGNodW5rIGlmIHdlCisJYmx0CTRmCQkJQCAxIGhhdmUgPCAx
NiBieXRlcworLyoKKyAqIFdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIgZm9yIHRoaXMgbG9v
cCAtIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIGFuZAorICogdXNlIHRoZSBMUgorICovCisJ
c3RyCWxyLCBbc3AsICMtNF0hCQlAIDEKKwltb3YJaXAsIHIyCQkJQCAxCisJbW92CWxyLCBy
MgkJCUAgMQorCiszOglzdWJzCXIxLCByMSwgIzY0CQlAIDEgd3JpdGUgMzIgYnl0ZXMgb3V0
IHBlciBsb29wCisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2Vp
YQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlw
LCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJYmd0CTNi
CQkJQCAxCisJbGRtZXFmZCBzcCEsIHtwY30JQCAxLzIgcXVpY2sgZXhpdAorLyoKKyAqIE5v
IG5lZWQgdG8gY29ycmVjdCB0aGUgY291bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZy
b20gbm93IG9uCisgKi8KKwl0c3QJcjEsICMzMgkJCUAgMQorCXN0bW5laWEJcjAhLCB7cjIs
IHIzLCBpcCwgbHJ9CUAgNAorCXN0bW5laWEJcjAhLCB7cjIsIHIzLCBpcCwgbHJ9CUAgNAor
CXRzdAlyMSwgIzE2CQkJQCAxIDE2IGJ5dGVzIG9yIG1vcmU/CisJc3RtbmVpYQlyMCEsIHty
MiwgcjMsIGlwLCBscn0JQCA0CisJbGRyCWxyLCBbc3BdLCAjNAkJQCAxCisKKzQ6CXRzdAly
MSwgIzgJCQlAIDEgOCBieXRlcyBvciBtb3JlPworCXN0bW5laWEJcjAhLCB7cjIsIHIzfQkJ
QCAyCisJdHN0CXIxLCAjNAkJCUAgMSA0IGJ5dGVzIG9yIG1vcmU/CisJc3RybmUJcjIsIFty
MF0sICM0CQlAIDEKKy8qCisgKiBXaGVuIHdlIGdldCBoZXJlLCB3ZSd2ZSBnb3QgbGVzcyB0
aGFuIDQgYnl0ZXMgdG8gemVyby4gIFdlCisgKiBtYXkgaGF2ZSBhbiB1bmFsaWduZWQgcG9p
bnRlciBhcyB3ZWxsLgorICovCis1Ogl0c3QJcjEsICMyCQkJQCAxIDIgYnl0ZXMgb3IgbW9y
ZT8KKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlA
IDEKKwl0c3QJcjEsICMxCQkJQCAxIGEgYnl0ZSBsZWZ0IG92ZXIKKwlzdHJuZWIJcjIsIFty
MF0sICMxCQlAIDEKKwltb3YJcGMsbHIJCUAgMQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0vbGliL21lbXNldC5TCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbWVtc2V0LlMJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjkgQEAKKyNpbmNsdWRlIDx4ZW4v
Y29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworCS50ZXh0CisJLmFs
aWduCTUKKwkud29yZAkwCisKKzE6CXN1YnMJcjIsIHIyLCAjNAkJQCAxIGRvIHdlIGhhdmUg
ZW5vdWdoCisJYmx0CTVmCQkJQCAxIGJ5dGVzIHRvIGFsaWduIHdpdGg/CisJY21wCXIzLCAj
MgkJCUAgMQorCXN0cmx0YglyMSwgW3IwXSwgIzEJCUAgMQorCXN0cmxlYglyMSwgW3IwXSwg
IzEJCUAgMQorCXN0cmIJcjEsIFtyMF0sICMxCQlAIDEKKwlhZGQJcjIsIHIyLCByMwkJQCAx
IChyMiA9IHIyIC0gKDQgLSByMykpCisvKgorICogVGhlIHBvaW50ZXIgaXMgbm93IGFsaWdu
ZWQgYW5kIHRoZSBsZW5ndGggaXMgYWRqdXN0ZWQuICBUcnkgZG9pbmcgdGhlCisgKiBtZW16
ZXJvIGFnYWluLgorICovCisKK0VOVFJZKG1lbXNldCkKKwlhbmRzCXIzLCByMCwgIzMJCUAg
MSB1bmFsaWduZWQ/CisJYm5lCTFiCQkJQCAxCisvKgorICogd2Uga25vdyB0aGF0IHRoZSBw
b2ludGVyIGluIHIwIGlzIGFsaWduZWQgdG8gYSB3b3JkIGJvdW5kYXJ5LgorICovCisJb3Jy
CXIxLCByMSwgcjEsIGxzbCAjOAorCW9ycglyMSwgcjEsIHIxLCBsc2wgIzE2CisJbW92CXIz
LCByMQorCWNtcAlyMiwgIzE2CisJYmx0CTRmCisvKgorICogV2UgbmVlZCBhbiBleHRyYSBy
ZWdpc3RlciBmb3IgdGhpcyBsb29wIC0gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgYW5kCisg
KiB1c2UgdGhlIExSCisgKi8KKwlzdHIJbHIsIFtzcCwgIy00XSEKKwltb3YJaXAsIHIxCisJ
bW92CWxyLCByMQorCisyOglzdWJzCXIyLCByMiwgIzY0CisJc3RtZ2VpYQlyMCEsIHtyMSwg
cjMsIGlwLCBscn0JQCA2NCBieXRlcyBhdCBhIHRpbWUuCisJc3RtZ2VpYQlyMCEsIHtyMSwg
cjMsIGlwLCBscn0KKwlzdG1nZWlhCXIwISwge3IxLCByMywgaXAsIGxyfQorCXN0bWdlaWEJ
cjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJYmd0CTJiCisJbGRtZXFmZCBzcCEsIHtwY30JQCBO
b3cgPDY0IGJ5dGVzIHRvIGdvLgorLyoKKyAqIE5vIG5lZWQgdG8gY29ycmVjdCB0aGUgY291
bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZyb20gbm93IG9uCisgKi8KKwl0c3QJcjIs
ICMzMgorCXN0bW5laWEJcjAhLCB7cjEsIHIzLCBpcCwgbHJ9CisJc3RtbmVpYQlyMCEsIHty
MSwgcjMsIGlwLCBscn0KKwl0c3QJcjIsICMxNgorCXN0bW5laWEJcjAhLCB7cjEsIHIzLCBp
cCwgbHJ9CisJbGRyCWxyLCBbc3BdLCAjNAorCis0Ogl0c3QJcjIsICM4CisJc3RtbmVpYQly
MCEsIHtyMSwgcjN9CisJdHN0CXIyLCAjNAorCXN0cm5lCXIxLCBbcjBdLCAjNAorLyoKKyAq
IFdoZW4gd2UgZ2V0IGhlcmUsIHdlJ3ZlIGdvdCBsZXNzIHRoYW4gNCBieXRlcyB0byB6ZXJv
LiAgV2UKKyAqIG1heSBoYXZlIGFuIHVuYWxpZ25lZCBwb2ludGVyIGFzIHdlbGwuCisgKi8K
KzU6CXRzdAlyMiwgIzIKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJc3RybmViCXIxLCBbcjBd
LCAjMQorCXRzdAlyMiwgIzEKKwlzdHJuZWIJcjEsIFtyMF0sICMxCisJbW92CXBjLGxyCmRp
ZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvbWVtemVyby5TCi0tLSAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2Fy
bS9saWIvbWVtemVyby5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCww
ICsxLDcxIEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9hc20t
bWFjcm9zLmg+CisKKwkudGV4dAorCS5hbGlnbgk1CisJLndvcmQJMAorLyoKKyAqIEFsaWdu
IHRoZSBwb2ludGVyIGluIHIwLiAgcjMgY29udGFpbnMgdGhlIG51bWJlciBvZiBieXRlcyB0
aGF0IHdlIGFyZQorICogbWlzLWFsaWduZWQgYnksIGFuZCByMSBpcyB0aGUgbnVtYmVyIG9m
IGJ5dGVzLiAgSWYgcjEgPCA0LCB0aGVuIHdlCisgKiBkb24ndCBib3RoZXI7IHdlIHVzZSBi
eXRlIHN0b3JlcyBpbnN0ZWFkLgorICovCisxOglzdWJzCXIxLCByMSwgIzQJCUAgMSBkbyB3
ZSBoYXZlIGVub3VnaAorCWJsdAk1ZgkJCUAgMSBieXRlcyB0byBhbGlnbiB3aXRoPworCWNt
cAlyMywgIzIJCQlAIDEKKwlzdHJsdGIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJsZWIJcjIs
IFtyMF0sICMxCQlAIDEKKwlzdHJiCXIyLCBbcjBdLCAjMQkJQCAxCisJYWRkCXIxLCByMSwg
cjMJCUAgMSAocjEgPSByMSAtICg0IC0gcjMpKQorLyoKKyAqIFRoZSBwb2ludGVyIGlzIG5v
dyBhbGlnbmVkIGFuZCB0aGUgbGVuZ3RoIGlzIGFkanVzdGVkLiAgVHJ5IGRvaW5nIHRoZQor
ICogbWVtemVybyBhZ2Fpbi4KKyAqLworCitFTlRSWShfX21lbXplcm8pCisJbW92CXIyLCAj
MAkJCUAgMQorCWFuZHMJcjMsIHIwLCAjMwkJQCAxIHVuYWxpZ25lZD8KKwlibmUJMWIJCQlA
IDEKKy8qCisgKiByMyA9IDAsIGFuZCB3ZSBrbm93IHRoYXQgdGhlIHBvaW50ZXIgaW4gcjAg
aXMgYWxpZ25lZCB0byBhIHdvcmQgYm91bmRhcnkuCisgKi8KKwljbXAJcjEsICMxNgkJCUAg
MSB3ZSBjYW4gc2tpcCB0aGlzIGNodW5rIGlmIHdlCisJYmx0CTRmCQkJQCAxIGhhdmUgPCAx
NiBieXRlcworLyoKKyAqIFdlIG5lZWQgYW4gZXh0cmEgcmVnaXN0ZXIgZm9yIHRoaXMgbG9v
cCAtIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIGFuZAorICogdXNlIHRoZSBMUgorICovCisJ
c3RyCWxyLCBbc3AsICMtNF0hCQlAIDEKKwltb3YJaXAsIHIyCQkJQCAxCisJbW92CWxyLCBy
MgkJCUAgMQorCiszOglzdWJzCXIxLCByMSwgIzY0CQlAIDEgd3JpdGUgMzIgYnl0ZXMgb3V0
IHBlciBsb29wCisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2Vp
YQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlw
LCBscn0JQCA0CisJc3RtZ2VpYQlyMCEsIHtyMiwgcjMsIGlwLCBscn0JQCA0CisJYmd0CTNi
CQkJQCAxCisJbGRtZXFmZCBzcCEsIHtwY30JQCAxLzIgcXVpY2sgZXhpdAorLyoKKyAqIE5v
IG5lZWQgdG8gY29ycmVjdCB0aGUgY291bnQ7IHdlJ3JlIG9ubHkgdGVzdGluZyBiaXRzIGZy
b20gbm93IG9uCisgKi8KKwl0c3QJcjEsICMzMgkJCUAgMQorCXN0bW5laWEJcjAhLCB7cjIs
IHIzLCBpcCwgbHJ9CUAgNAorCXN0bW5laWEJcjAhLCB7cjIsIHIzLCBpcCwgbHJ9CUAgNAor
CXRzdAlyMSwgIzE2CQkJQCAxIDE2IGJ5dGVzIG9yIG1vcmU/CisJc3RtbmVpYQlyMCEsIHty
MiwgcjMsIGlwLCBscn0JQCA0CisJbGRyCWxyLCBbc3BdLCAjNAkJQCAxCisKKzQ6CXRzdAly
MSwgIzgJCQlAIDEgOCBieXRlcyBvciBtb3JlPworCXN0bW5laWEJcjAhLCB7cjIsIHIzfQkJ
QCAyCisJdHN0CXIxLCAjNAkJCUAgMSA0IGJ5dGVzIG9yIG1vcmU/CisJc3RybmUJcjIsIFty
MF0sICM0CQlAIDEKKy8qCisgKiBXaGVuIHdlIGdldCBoZXJlLCB3ZSd2ZSBnb3QgbGVzcyB0
aGFuIDQgYnl0ZXMgdG8gemVyby4gIFdlCisgKiBtYXkgaGF2ZSBhbiB1bmFsaWduZWQgcG9p
bnRlciBhcyB3ZWxsLgorICovCis1Ogl0c3QJcjEsICMyCQkJQCAxIDIgYnl0ZXMgb3IgbW9y
ZT8KKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlAIDEKKwlzdHJuZWIJcjIsIFtyMF0sICMxCQlA
IDEKKwl0c3QJcjEsICMxCQkJQCAxIGEgYnl0ZSBsZWZ0IG92ZXIKKwlzdHJuZWIJcjIsIFty
MF0sICMxCQlAIDEKKwltb3YJcGMsbHIJCUAgMQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0vbGliL211bGRpMy5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbXVsZGkzLmMJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsODYgQEAKKy8qIE1vcmUgc3Vicm91
dGluZXMgbmVlZGVkIGJ5IEdDQyBvdXRwdXQgY29kZSBvbiBzb21lIG1hY2hpbmVzLiAgKi8K
Ky8qIENvbXBpbGUgdGhpcyBvbmUgd2l0aCBnY2MuICAqLworLyogQ29weXJpZ2h0IChDKSAx
OTg5LCA5Mi05OCwgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhp
cyBmaWxlIGlzIHBhcnQgb2YgR05VIENDLgorCitHTlUgQ0MgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK
K3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChh
dCB5b3VyIG9wdGlvbikKK2FueSBsYXRlciB2ZXJzaW9uLgorCitHTlUgQ0MgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBHTlUgQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LiAgSWYgbm90LCB3cml0ZSB0bwordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
ICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiB5b3UgbGluayB0aGlzIGxp
YnJhcnkgd2l0aCBvdGhlciBmaWxlcywKKyAgIHNvbWUgb2Ygd2hpY2ggYXJlIGNvbXBpbGVk
IHdpdGggR0NDLCB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsCisgICB0aGlzIGxpYnJhcnkg
ZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZQorICAg
dG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgICBU
aGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJl
YXNvbnMgd2h5CisgICB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICovCisvKiBzdXBwb3J0IGZ1bmN0
aW9ucyByZXF1aXJlZCBieSB0aGUga2VybmVsLiBiYXNlZCBvbiBjb2RlIGZyb20gZ2NjLTIu
OTUuMyAqLworLyogSSBNb2x0b24gICAgIDI5LzA3LzAxICovCisKKyNpbmNsdWRlICJnY2Ns
aWIuaCIKKworI2RlZmluZSB1bXVsX3BwbW0oeGgsIHhsLCBhLCBiKSBcCit7cmVnaXN0ZXIg
VVNJdHlwZSBfX3QwLCBfX3QxLCBfX3QyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIF9fYXNtX18gKCIlQCBJbmxpbmVkIHVtdWxfcHBtbQkJCQkJXG5cCisg
ICAgICAgIG1vdiAgICAgJTIsICU1LCBsc3IgIzE2CQkJCQkJXG5cCisgICAgICAgIG1vdiAg
ICAgJTAsICU2LCBsc3IgIzE2CQkJCQkJXG5cCisgICAgICAgIGJpYyAgICAgJTMsICU1LCAl
MiwgbHNsICMxNgkJCQkJXG5cCisgICAgICAgIGJpYyAgICAgJTQsICU2LCAlMCwgbHNsICMx
NgkJCQkJXG5cCisgICAgICAgIG11bCAgICAgJTEsICUzLCAlNAkJCQkJCVxuXAorICAgICAg
ICBtdWwgICAgICU0LCAlMiwgJTQJCQkJCQlcblwKKyAgICAgICAgbXVsICAgICAlMywgJTAs
ICUzCQkJCQkJXG5cCisgICAgICAgIG11bCAgICAgJTAsICUyLCAlMAkJCQkJCVxuXAorICAg
ICAgICBhZGRzICAgICUzLCAlNCwgJTMJCQkJCQlcblwKKyAgICAgICAgYWRkY3MgICAlMCwg
JTAsICM2NTUzNgkJCQkJCVxuXAorICAgICAgICBhZGRzICAgICUxLCAlMSwgJTMsIGxzbCAj
MTYJCQkJCVxuXAorICAgICAgICBhZGMgICAgICUwLCAlMCwgJTMsIGxzciAjMTYiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICA6ICI9JnIiICgo
VVNJdHlwZSkgKHhoKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICI9ciIgKChVU0l0eXBlKSAoeGwpKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICI9JnIiIChfX3QwKSwgIj0mciIg
KF9fdDEpLCAiPXIiIChfX3QyKSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICA6
ICJyIiAoKFVTSXR5cGUpIChhKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICJyIiAoKFVTSXR5cGUpIChiKSkpO30KKworCisjZGVm
aW5lIF9fdW11bHNpZGkzKHUsIHYpIFwKKyAgKHtESXVuaW9uIF9fdzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bXVs
X3BwbW0gKF9fdy5zLmhpZ2gsIF9fdy5zLmxvdywgdSwgdik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBfX3cubGw7IH0pCisKKworREl0eXBlCitfX211bGRpMyAoREl0
eXBlIHUsIERJdHlwZSB2KQoreworICBESXVuaW9uIHc7CisgIERJdW5pb24gdXUsIHZ2Owor
CisgIHV1LmxsID0gdSwKKyAgdnYubGwgPSB2OworCisgIHcubGwgPSBfX3VtdWxzaWRpMyAo
dXUucy5sb3csIHZ2LnMubG93KTsKKyAgdy5zLmhpZ2ggKz0gKChVU0l0eXBlKSB1dS5zLmxv
dyAqIChVU0l0eXBlKSB2di5zLmhpZ2gKKyAgICAgICAgICAgICAgICsgKFVTSXR5cGUpIHV1
LnMuaGlnaCAqIChVU0l0eXBlKSB2di5zLmxvdyk7CisKKyAgcmV0dXJuIHcubGw7Cit9CisK
KyNpZiAwCitsbGRpdl90X3JyIF9fYWVhYmlfbGRpdm1vZCAobG9uZyBsb25nIGEsIGxvbmcg
bG9uZyBiKSAKK3sgCisJbGxkaXZfdF9yciByOyAKKwlyLnF1b3QgPV9fZGl2ZGkzIChhLCBi
KTsgCisJci5yZW0gPSBhIC0gYiAqIHIucXVvdDsgCisJcmV0dXJuIHI7IAorfQorI2VuZGlm
CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9saWIvcHV0dXNlci5TCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNo
L2FybS9saWIvcHV0dXNlci5TCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAt
MCwwICsxLDc1IEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL2xpYi9wdXR1c2VyLlMKKyAq
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24uCisgKgorICogIElkZWEgZnJvbSB4ODYgdmVyc2lvbiwgKEMpIENv
cHlyaWdodCAxOTk4IExpbnVzIFRvcnZhbGRzCisgKgorICogVGhlc2UgZnVuY3Rpb25zIGhh
dmUgYSBub24tc3RhbmRhcmQgY2FsbCBpbnRlcmZhY2UgdG8gbWFrZQorICogdGhlbSBtb3Jl
IGVmZmljaWVudCwgZXNwZWNpYWxseSBhcyB0aGV5IHJldHVybiBhbiBlcnJvcgorICogdmFs
dWUgaW4gYWRkaXRpb24gdG8gdGhlICJyZWFsIiByZXR1cm4gdmFsdWUuCisgKgorICogX19w
dXRfdXNlcl9YCisgKgorICogSW5wdXRzOglyMCBjb250YWlucyB0aGUgYWRkcmVzcworICoJ
CXIyLCByMyBjb250YWlucyB0aGUgdmFsdWUKKyAqIE91dHB1dHM6CXIwIGlzIHRoZSBlcnJv
ciBjb2RlCisgKgkJbHIgY29ycnVwdGVkCisgKgorICogTm8gb3RoZXIgcmVnaXN0ZXJzIG11
c3QgYmUgYWx0ZXJlZC4gIChzZWUgaW5jbHVkZS9hc20tYXJtL3VhY2Nlc3MuaAorICogZm9y
IHNwZWNpZmljIEFTTSByZWdpc3RlciB1c2FnZSkuCisgKgorICogTm90ZSB0aGF0IEFERFJf
TElNSVQgaXMgZWl0aGVyIDAgb3IgMHhjMDAwMDAwMAorICogTm90ZSBhbHNvIHRoYXQgaXQg
aXMgaW50ZW5kZWQgdGhhdCBfX3B1dF91c2VyX2JhZCBpcyBub3QgZ2xvYmFsLgorICovCisj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisKKwkuZ2xvYmFsCV9fcHV0X3VzZXJfMQorX19wdXRf
dXNlcl8xOgorMToJc3RyYnQJcjIsIFtyMF0KKwltb3YJcjAsICMwCisJbW92CXBjLCBscgor
CisJLmdsb2JhbAlfX3B1dF91c2VyXzIKK19fcHV0X3VzZXJfMjoKKwltb3YJaXAsIHIyLCBs
c3IgIzgKKyNpZm5kZWYgX19BUk1FQl9fCisyOglzdHJidAlyMiwgW3IwXSwgIzEKKzM6CXN0
cmJ0CWlwLCBbcjBdCisjZWxzZQorMjoJc3RyYnQJaXAsIFtyMF0sICMxCiszOglzdHJidAly
MiwgW3IwXQorI2VuZGlmCisJbW92CXIwLCAjMAorCW1vdglwYywgbHIKKworCS5nbG9iYWwJ
X19wdXRfdXNlcl80CitfX3B1dF91c2VyXzQ6Cis0OglzdHJ0CXIyLCBbcjBdCisJbW92CXIw
LCAjMAorCW1vdglwYywgbHIKKworCS5nbG9iYWwJX19wdXRfdXNlcl84CitfX3B1dF91c2Vy
Xzg6Cis1OglzdHJ0CXIyLCBbcjBdLCAjNAorNjoJc3RydAlyMywgW3IwXQorCW1vdglyMCwg
IzAKKwltb3YJcGMsIGxyCisKKwkuZ2xvYmFsIF9fcHV0X3VzZXJfYmFkCitfX3B1dF91c2Vy
X2JhZDoKKwltb3YJcjAsICMtRUZBVUxUCisJbW92CXBjLCBscgorCisuc2VjdGlvbiAuZXh0
YWJsZSwgImEiCisJLmxvbmcJMWIsIF9fcHV0X3VzZXJfYmFkCisJLmxvbmcJMmIsIF9fcHV0
X3VzZXJfYmFkCisJLmxvbmcJM2IsIF9fcHV0X3VzZXJfYmFkCisJLmxvbmcJNGIsIF9fcHV0
X3VzZXJfYmFkCisJLmxvbmcJNWIsIF9fcHV0X3VzZXJfYmFkCisJLmxvbmcJNmIsIF9fcHV0
X3VzZXJfYmFkCisucHJldmlvdXMKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJt
L2xpYi9zZXRiaXQuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL3NldGJpdC5TCUZyaSBGZWIgMDMgMTY6MDc6
MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDIyIEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5o
PgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vYXNtLW1hY3Jv
cy5oPgorCisJCS50ZXh0CisKKy8qCisgKiBQdXJwb3NlICA6IEZ1bmN0aW9uIHRvIHNldCBh
IGJpdAorICogUHJvdG90eXBlOiBpbnQgc2V0X2JpdChpbnQgYml0LCB2b2lkICphZGRyKQor
ICovCitFTlRSWShfc2V0X2JpdF9iZSkKKwllb3IJcjAsIHIwLCAjMHgxOAkJQCBiaWcgZW5k
aWFuIGJ5dGUgb3JkZXJpbmcKK0VOVFJZKF9zZXRfYml0X2xlKQorCWFuZAlyMiwgcjAsICM3
CisJbW92CXIzLCAjMQorCW1vdglyMywgcjMsIGxzbCByMgorCXNhdmVfYW5kX2Rpc2FibGVf
aXJxcyBpcCwgcjIKKwlsZHJiCXIyLCBbcjEsIHIwLCBsc3IgIzNdCisJb3JyCXIyLCByMiwg
cjMKKwlzdHJiCXIyLCBbcjEsIHIwLCBsc3IgIzNdCisJcmVzdG9yZV9pcnFzIGlwCisJbW92
CXBjLCBscgpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL3N0cmNoci5T
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hl
bi9hcmNoL2FybS9saWIvc3RyY2hyLlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAw
CkBAIC0wLDAgKzEsMTUgQEAKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8
YXNtL2FzbS1tYWNyb3MuaD4KKworCQkudGV4dAorCQkuYWxpZ24JNQorRU5UUlkoc3RyY2hy
KQorCQlhbmQJcjEsIHIxLCAjMHhmZgorMToJCWxkcmIJcjIsIFtyMF0sICMxCisJCXRlcQly
MiwgcjEKKwkJdGVxbmUJcjIsICMwCisJCWJuZQkxYgorCQl0ZXEJcjIsIHIxCisJCW1vdm5l
CXIwLCAjMAorCQlzdWJlcQlyMCwgcjAsICMxCisJCW1vdglwYyxscgpkaWZmIC1yIGU3MDE0
NjFiMTI1MSB4ZW4vYXJjaC9hcm0vbGliL3Rlc3RjaGFuZ2ViaXQuUwotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGli
L3Rlc3RjaGFuZ2ViaXQuUwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAs
MCArMSwyMiBAQAorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vcHJv
Y2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworICAgICAgICAgICAg
ICAgIC50ZXh0CisKK0VOVFJZKF90ZXN0X2FuZF9jaGFuZ2VfYml0X2JlKQorCQllb3IJcjAs
IHIwLCAjMHgxOAkJQCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXJpbmcKK0VOVFJZKF90ZXN0X2Fu
ZF9jaGFuZ2VfYml0X2xlKQorCQlhZGQJcjEsIHIxLCByMCwgbHNyICMzCisJCWFuZAlyMywg
cjAsICM3CisJCW1vdglyMCwgIzEKKwkJc2F2ZV9hbmRfZGlzYWJsZV9pcnFzIGlwLCByMgor
CQlsZHJiCXIyLCBbcjFdCisJCXRzdAlyMiwgcjAsIGxzbCByMworCQllb3IJcjIsIHIyLCBy
MCwgbHNsIHIzCisJCXN0cmIJcjIsIFtyMV0KKwkJcmVzdG9yZV9pcnFzIGlwCisJCW1vdmVx
CXIwLCAjMAorCQltb3YJcGMsbHIKKworCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNo
L2FybS9saWIvdGVzdGNsZWFyYml0LlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi90ZXN0Y2xlYXJiaXQuUwlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyMiBAQAorI2luY2x1
ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVk
ZSA8YXNtL2FzbS1tYWNyb3MuaD4KKworICAgICAgICAgICAgICAgIC50ZXh0CisKK0VOVFJZ
KF90ZXN0X2FuZF9jbGVhcl9iaXRfYmUpCisJCWVvcglyMCwgcjAsICMweDE4CQlAIGJpZyBl
bmRpYW4gYnl0ZSBvcmRlcmluZworRU5UUlkoX3Rlc3RfYW5kX2NsZWFyX2JpdF9sZSkKKwkJ
YWRkCXIxLCByMSwgcjAsIGxzciAjMwlAIEdldCBieXRlIG9mZnNldAorCQlhbmQJcjMsIHIw
LCAjNwkJQCBHZXQgYml0IG9mZnNldAorCQltb3YJcjAsICMxCisJCXNhdmVfYW5kX2Rpc2Fi
bGVfaXJxcyBpcCwgcjIKKwkJbGRyYglyMiwgW3IxXQorCQl0c3QJcjIsIHIwLCBsc2wgcjMK
KwkJYmljbmUJcjIsIHIyLCByMCwgbHNsIHIzCisJCXN0cm5lYglyMiwgW3IxXQorCQlyZXN0
b3JlX2lycXMgaXAKKwkJbW92ZXEJcjAsICMwCisJCW1vdglwYyxscgorCisKZGlmZiAtciBl
NzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL2xpYi90ZXN0c2V0Yml0LlMKLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xp
Yi90ZXN0c2V0Yml0LlMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAg
KzEsMjAgQEAKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nl
c3Nvci5oPgorI2luY2x1ZGUgPGFzbS9hc20tbWFjcm9zLmg+CisKKyAgICAgICAgICAgICAg
ICAudGV4dAorCitFTlRSWShfdGVzdF9hbmRfc2V0X2JpdF9sZSkKKwkJYWRkCXIxLCByMSwg
cjAsIGxzciAjMwlAIEdldCBieXRlIG9mZnNldAorCQlhbmQJcjMsIHIwLCAjNwkJQCBHZXQg
Yml0IG9mZnNldAorCQltb3YJcjAsICMxCisJCXNhdmVfYW5kX2Rpc2FibGVfaXJxcyBpcCwg
cjIKKwkJbGRyYglyMiwgW3IxXQorCQl0c3QJcjIsIHIwLCBsc2wgcjMKKwkJb3JyZXEJcjIs
IHIyLCByMCwgbHNsIHIzCisJCXN0cmVxYglyMiwgW3IxXQorCQlyZXN0b3JlX2lycXMgaXAK
KwkJbW92ZXEJcjAsICMwCisJCW1vdglwYyxscgorCisKZGlmZiAtciBlNzAxNDYxYjEyNTEg
eGVuL2FyY2gvYXJtL2xpYi91YWNjZXNzLlMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL2xpYi91YWNjZXNzLlMJRnJp
IEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjg0IEBACisjaW5jbHVk
ZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPGFz
bS9hc20tbWFjcm9zLmg+CisKKwkJLnRleHQKKworI2RlZmluZSBQQUdFX1NISUZUIDEyCisK
Ky8qIFByb3RvdHlwZTogaW50IF9fYXJjaF9jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0
IGNoYXIgKmZyb20sIHNpemVfdCBuKQorICogUHVycG9zZSAgOiBjb3B5IGEgYmxvY2sgdG8g
dXNlciBtZW1vcnkgZnJvbSBrZXJuZWwgbWVtb3J5CisgKiBQYXJhbXMgICA6IHRvICAgLSB1
c2VyIG1lbW9yeQorICogICAgICAgICAgOiBmcm9tIC0ga2VybmVsIG1lbW9yeQorICogICAg
ICAgICAgOiBuICAgIC0gbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkKKyAqIFJldHVybnMgIDog
TnVtYmVyIG9mIGJ5dGVzIE5PVCBjb3BpZWQuCisgKi8KKworLmMydV9kZXN0X25vdF9hbGln
bmVkOgorCQlyc2IJaXAsIGlwLCAjNAorCQljbXAJaXAsICMyCisJCWxkcmIJcjMsIFtyMV0s
ICMxCitVU0VSKAkJc3RyYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCWxkcmdl
YglyMywgW3IxXSwgIzEKK1VTRVIoCQlzdHJnZWJ0CXIzLCBbcjBdLCAjMSkJCQlAIE1heSBm
YXVsdAorCQlsZHJndGIJcjMsIFtyMV0sICMxCitVU0VSKAkJc3RyZ3RidAlyMywgW3IwXSwg
IzEpCQkJQCBNYXkgZmF1bHQKKwkJc3ViCXIyLCByMiwgaXAKKwkJYgkuYzJ1X2Rlc3RfYWxp
Z25lZAorCitFTlRSWShfX2FyY2hfY29weV90b191c2VyKQorCQlzdG1mZAlzcCEsIHtyMiwg
cjQgLSByNywgbHJ9CisJCWNtcAlyMiwgIzQKKwkJYmx0CS5jMnVfbm90X2Vub3VnaAorCVBM
RCgJcGxkCVtyMSwgIzBdCQkpCisJUExEKAlwbGQJW3IwLCAjMF0JCSkKKwkJYW5kcwlpcCwg
cjAsICMzCisJCWJuZQkuYzJ1X2Rlc3Rfbm90X2FsaWduZWQKKy5jMnVfZGVzdF9hbGlnbmVk
OgorCisJCWFuZHMJaXAsIHIxLCAjMworCQlibmUJLmMydV9zcmNfbm90X2FsaWduZWQKKy8q
CisgKiBTZWVpbmcgYXMgdGhlcmUgaGFzIHRvIGJlIGF0IGxlYXN0IDggYnl0ZXMgdG8gY29w
eSwgd2UgY2FuCisgKiBjb3B5IG9uZSB3b3JkLCBhbmQgZm9yY2UgYSB1c2VyLW1vZGUgcGFn
ZSBmYXVsdC4uLgorICovCisKKy5jMnVfMGZ1cGk6CXN1YnMJcjIsIHIyLCAjNAorCQlhZGRt
aQlpcCwgcjIsICM0CisJCWJtaQkuYzJ1XzBub3dvcmRzCisJCWxkcglyMywgW3IxXSwgIzQK
K1VTRVIoCQlzdHJ0CXIzLCBbcjBdLCAjNCkJCQlAIE1heSBmYXVsdAorCQltb3YJaXAsIHIw
LCBsc2wgIzMyIC0gUEFHRV9TSElGVAlAIE9uIGVhY2ggcGFnZSwgdXNlIGEgbGQvc3Q/P3Qg
aW5zdHJ1Y3Rpb24KKwkJcnNiCWlwLCBpcCwgIzAKKwkJbW92cwlpcCwgaXAsIGxzciAjMzIg
LSBQQUdFX1NISUZUCisJCWJlcQkuYzJ1XzBmdXBpCisvKgorICogaXAgPSBtYXggbm8uIG9m
IGJ5dGVzIHRvIGNvcHkgYmVmb3JlIG5lZWRpbmcgYW5vdGhlciAic3RydCIgaW5zbgorICov
CisJCWNtcAlyMiwgaXAKKwkJbW92bHQJaXAsIHIyCisJCXN1YglyMiwgcjIsIGlwCisJCXN1
YnMJaXAsIGlwLCAjMzIKKwkJYmx0CS5jMnVfMHJlbThscAorCVBMRCgJcGxkCVtyMSwgIzI4
XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCVBMRCgJc3VicwlpcCwgaXAsICM2NAkJ
CSkKKwlQTEQoCWJsdAkuYzJ1XzBjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzYwXQkJ
KQorCVBMRCgJcGxkCVtyMCwgIzYwXQkJKQorCisuYzJ1XzBjcHk4bHA6CisJUExEKAlwbGQJ
W3IxLCAjOTJdCQkpCisJUExEKAlwbGQJW3IwLCAjOTJdCQkpCisuYzJ1XzBjcHlub3BsZDoJ
bGRtaWEJcjEhLCB7cjMgLSByNn0KKwkJc3RtaWEJcjAhLCB7cjMgLSByNn0JCQlAIFNob3Vs
ZG50IGZhdWx0CisJCWxkbWlhCXIxISwge3IzIC0gcjZ9CisJCXN1YnMJaXAsIGlwLCAjMzIK
KwkJc3RtaWEJcjAhLCB7cjMgLSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJCWJwbAkuYzJ1
XzBjcHk4bHAKKwlQTEQoCWNtbglpcCwgIzY0CQkJKQorCVBMRCgJYmdlCS5jMnVfMGNweW5v
cGxkCQkpCisJUExEKAlhZGQJaXAsIGlwLCAjNjQJCSkKKworLmMydV8wcmVtOGxwOgljbW4J
aXAsICMxNgorCQlsZG1nZWlhCXIxISwge3IzIC0gcjZ9CisJCXN0bWdlaWEJcjAhLCB7cjMg
LSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJCXRzdAlpcCwgIzgKKwkJbGRtbmVpYQlyMSEs
IHtyMyAtIHI0fQorCQlzdG1uZWlhCXIwISwge3IzIC0gcjR9CQkJQCBTaG91bGRudCBmYXVs
dAorCQl0c3QJaXAsICM0CisJCWxkcm5lCXIzLCBbcjFdLCAjNAorCQlzdHJuZXQJcjMsIFty
MF0sICM0CQkJQCBTaG91bGRudCBmYXVsdAorCQlhbmRzCWlwLCBpcCwgIzMKKwkJYmVxCS5j
MnVfMGZ1cGkKKy5jMnVfMG5vd29yZHM6CXRlcQlpcCwgIzAKKwkJYmVxCS5jMnVfZmluaXNo
ZWQKKy5jMnVfbm93b3JkczoJY21wCWlwLCAjMgorCQlsZHJiCXIzLCBbcjFdLCAjMQorVVNF
UigJCXN0cmJ0CXIzLCBbcjBdLCAjMSkJCQlAIE1heSBmYXVsdAorCQlsZHJnZWIJcjMsIFty
MV0sICMxCitVU0VSKAkJc3RyZ2VidAlyMywgW3IwXSwgIzEpCQkJQCBNYXkgZmF1bHQKKwkJ
bGRyZ3RiCXIzLCBbcjFdLCAjMQorVVNFUigJCXN0cmd0YnQJcjMsIFtyMF0sICMxKQkJCUAg
TWF5IGZhdWx0CisJCWIJLmMydV9maW5pc2hlZAorCisuYzJ1X25vdF9lbm91Z2g6CisJCW1v
dnMJaXAsIHIyCisJCWJuZQkuYzJ1X25vd29yZHMKKy5jMnVfZmluaXNoZWQ6CW1vdglyMCwg
IzAKKwkJbGRtZmQJc3AhLHtyMiwgcjQgLSByNywgcGN9CisKKy5jMnVfc3JjX25vdF9hbGln
bmVkOgorCQliaWMJcjEsIHIxLCAjMworCQlsZHIJcjcsIFtyMV0sICM0CisJCWNtcAlpcCwg
IzIKKwkJYmd0CS5jMnVfM2Z1cGkKKwkJYmVxCS5jMnVfMmZ1cGkKKy5jMnVfMWZ1cGk6CXN1
YnMJcjIsIHIyLCAjNAorCQlhZGRtaQlpcCwgcjIsICM0CisJCWJtaQkuYzJ1XzFub3dvcmRz
CisJCW1vdglyMywgcjcsIHB1bGwgIzgKKwkJbGRyCXI3LCBbcjFdLCAjNAorCQlvcnIJcjMs
IHIzLCByNywgcHVzaCAjMjQKK1VTRVIoCQlzdHJ0CXIzLCBbcjBdLCAjNCkJCQlAIE1heSBm
YXVsdAorCQltb3YJaXAsIHIwLCBsc2wgIzMyIC0gUEFHRV9TSElGVAorCQlyc2IJaXAsIGlw
LCAjMAorCQltb3ZzCWlwLCBpcCwgbHNyICMzMiAtIFBBR0VfU0hJRlQKKwkJYmVxCS5jMnVf
MWZ1cGkKKwkJY21wCXIyLCBpcAorCQltb3ZsdAlpcCwgcjIKKwkJc3ViCXIyLCByMiwgaXAK
KwkJc3VicwlpcCwgaXAsICMxNgorCQlibHQJLmMydV8xcmVtOGxwCisJUExEKAlwbGQJW3Ix
LCAjMTJdCQkpCisJUExEKAlwbGQJW3IwLCAjMTJdCQkpCisJUExEKAlzdWJzCWlwLCBpcCwg
IzMyCQkpCisJUExEKAlibHQJLmMydV8xY3B5bm9wbGQJCSkKKwlQTEQoCXBsZAlbcjEsICMy
OF0JCSkKKwlQTEQoCXBsZAlbcjAsICMyOF0JCSkKKworLmMydV8xY3B5OGxwOgorCVBMRCgJ
cGxkCVtyMSwgIzQ0XQkJKQorCVBMRCgJcGxkCVtyMCwgIzQ0XQkJKQorLmMydV8xY3B5bm9w
bGQ6CW1vdglyMywgcjcsIHB1bGwgIzgKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30KKwkJc3Vi
cwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjMjQKKwkJbW92CXI0LCBy
NCwgcHVsbCAjOAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjMjQKKwkJbW92CXI1LCByNSwg
cHVsbCAjOAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjMjQKKwkJbW92CXI2LCByNiwgcHVs
bCAjOAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjMjQKKwkJc3RtaWEJcjAhLCB7cjMgLSBy
Nn0JCQlAIFNob3VsZG50IGZhdWx0CisJCWJwbAkuYzJ1XzFjcHk4bHAKKwlQTEQoCWNtbglp
cCwgIzMyCQkJKQorCVBMRCgJYmdlCS5jMnVfMWNweW5vcGxkCQkpCisJUExEKAlhZGQJaXAs
IGlwLCAjMzIJCSkKKworLmMydV8xcmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIzLCBy
NywgcHVsbCAjOAorCQlsZG1uZWlhCXIxISwge3I0LCByN30KKwkJb3JybmUJcjMsIHIzLCBy
NCwgcHVzaCAjMjQKKwkJbW92bmUJcjQsIHI0LCBwdWxsICM4CisJCW9ycm5lCXI0LCByNCwg
cjcsIHB1c2ggIzI0CisJCXN0bW5laWEJcjAhLCB7cjMgLSByNH0JCQlAIFNob3VsZG50IGZh
dWx0CisJCXRzdAlpcCwgIzQKKwkJbW92bmUJcjMsIHI3LCBwdWxsICM4CisJCWxkcm5lCXI3
LCBbcjFdLCAjNAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICMyNAorCQlzdHJuZXQJcjMs
IFtyMF0sICM0CQkJQCBTaG91bGRudCBmYXVsdAorCQlhbmRzCWlwLCBpcCwgIzMKKwkJYmVx
CS5jMnVfMWZ1cGkKKy5jMnVfMW5vd29yZHM6CW1vdglyMywgcjcsIGdldF9ieXRlXzEKKwkJ
dGVxCWlwLCAjMAorCQliZXEJLmMydV9maW5pc2hlZAorCQljbXAJaXAsICMyCitVU0VSKAkJ
c3RyYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCW1vdmdlCXIzLCByNywgZ2V0
X2J5dGVfMgorVVNFUigJCXN0cmdlYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJ
CW1vdmd0CXIzLCByNywgZ2V0X2J5dGVfMworVVNFUigJCXN0cmd0YnQJcjMsIFtyMF0sICMx
KQkJCUAgTWF5IGZhdWx0CisJCWIJLmMydV9maW5pc2hlZAorCisuYzJ1XzJmdXBpOglzdWJz
CXIyLCByMiwgIzQKKwkJYWRkbWkJaXAsIHIyLCAjNAorCQlibWkJLmMydV8ybm93b3Jkcwor
CQltb3YJcjMsIHI3LCBwdWxsICMxNgorCQlsZHIJcjcsIFtyMV0sICM0CisJCW9ycglyMywg
cjMsIHI3LCBwdXNoICMxNgorVVNFUigJCXN0cnQJcjMsIFtyMF0sICM0KQkJCUAgTWF5IGZh
dWx0CisJCW1vdglpcCwgcjAsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAs
ICMwCisJCW1vdnMJaXAsIGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmMydV8y
ZnVwaQorCQljbXAJcjIsIGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAor
CQlzdWJzCWlwLCBpcCwgIzE2CisJCWJsdAkuYzJ1XzJyZW04bHAKKwlQTEQoCXBsZAlbcjEs
ICMxMl0JCSkKKwlQTEQoCXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAj
MzIJCSkKKwlQTEQoCWJsdAkuYzJ1XzJjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4
XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCisuYzJ1XzJjcHk4bHA6CisJUExEKAlw
bGQJW3IxLCAjNDRdCQkpCisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuYzJ1XzJjcHlub3Bs
ZDoJbW92CXIzLCByNywgcHVsbCAjMTYKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30KKwkJc3Vi
cwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjMTYKKwkJbW92CXI0LCBy
NCwgcHVsbCAjMTYKKwkJb3JyCXI0LCByNCwgcjUsIHB1c2ggIzE2CisJCW1vdglyNSwgcjUs
IHB1bGwgIzE2CisJCW9ycglyNSwgcjUsIHI2LCBwdXNoICMxNgorCQltb3YJcjYsIHI2LCBw
dWxsICMxNgorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjMTYKKwkJc3RtaWEJcjAhLCB7cjMg
LSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJCWJwbAkuYzJ1XzJjcHk4bHAKKwlQTEQoCWNt
bglpcCwgIzMyCQkJKQorCVBMRCgJYmdlCS5jMnVfMmNweW5vcGxkCQkpCisJUExEKAlhZGQJ
aXAsIGlwLCAjMzIJCSkKKworLmMydV8ycmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIz
LCByNywgcHVsbCAjMTYKKwkJbGRtbmVpYQlyMSEsIHtyNCwgcjd9CisJCW9ycm5lCXIzLCBy
MywgcjQsIHB1c2ggIzE2CisJCW1vdm5lCXI0LCByNCwgcHVsbCAjMTYKKwkJb3JybmUJcjQs
IHI0LCByNywgcHVzaCAjMTYKKwkJc3RtbmVpYQlyMCEsIHtyMyAtIHI0fQkJCUAgU2hvdWxk
bnQgZmF1bHQKKwkJdHN0CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzE2CisJCWxk
cm5lCXI3LCBbcjFdLCAjNAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICMxNgorCQlzdHJu
ZXQJcjMsIFtyMF0sICM0CQkJQCBTaG91bGRudCBmYXVsdAorCQlhbmRzCWlwLCBpcCwgIzMK
KwkJYmVxCS5jMnVfMmZ1cGkKKy5jMnVfMm5vd29yZHM6CW1vdglyMywgcjcsIGdldF9ieXRl
XzIKKwkJdGVxCWlwLCAjMAorCQliZXEJLmMydV9maW5pc2hlZAorCQljbXAJaXAsICMyCitV
U0VSKAkJc3RyYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCW1vdmdlCXIzLCBy
NywgZ2V0X2J5dGVfMworVVNFUigJCXN0cmdlYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZh
dWx0CisJCWxkcmd0YglyMywgW3IxXSwgIzAKK1VTRVIoCQlzdHJndGJ0CXIzLCBbcjBdLCAj
MSkJCQlAIE1heSBmYXVsdAorCQliCS5jMnVfZmluaXNoZWQKKworLmMydV8zZnVwaToJc3Vi
cwlyMiwgcjIsICM0CisJCWFkZG1pCWlwLCByMiwgIzQKKwkJYm1pCS5jMnVfM25vd29yZHMK
KwkJbW92CXIzLCByNywgcHVsbCAjMjQKKwkJbGRyCXI3LCBbcjFdLCAjNAorCQlvcnIJcjMs
IHIzLCByNywgcHVzaCAjOAorVVNFUigJCXN0cnQJcjMsIFtyMF0sICM0KQkJCUAgTWF5IGZh
dWx0CisJCW1vdglpcCwgcjAsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAs
ICMwCisJCW1vdnMJaXAsIGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmMydV8z
ZnVwaQorCQljbXAJcjIsIGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAor
CQlzdWJzCWlwLCBpcCwgIzE2CisJCWJsdAkuYzJ1XzNyZW04bHAKKwlQTEQoCXBsZAlbcjEs
ICMxMl0JCSkKKwlQTEQoCXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAj
MzIJCSkKKwlQTEQoCWJsdAkuYzJ1XzNjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4
XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCisuYzJ1XzNjcHk4bHA6CisJUExEKAlw
bGQJW3IxLCAjNDRdCQkpCisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuYzJ1XzNjcHlub3Bs
ZDoJbW92CXIzLCByNywgcHVsbCAjMjQKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30KKwkJc3Vi
cwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjOAorCQltb3YJcjQsIHI0
LCBwdWxsICMyNAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjOAorCQltb3YJcjUsIHI1LCBw
dWxsICMyNAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjOAorCQltb3YJcjYsIHI2LCBwdWxs
ICMyNAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjOAorCQlzdG1pYQlyMCEsIHtyMyAtIHI2
fQkJCUAgU2hvdWxkbnQgZmF1bHQKKwkJYnBsCS5jMnVfM2NweThscAorCVBMRCgJY21uCWlw
LCAjMzIJCQkpCisJUExEKAliZ2UJLmMydV8zY3B5bm9wbGQJCSkKKwlQTEQoCWFkZAlpcCwg
aXAsICMzMgkJKQorCisuYzJ1XzNyZW04bHA6CXRzdAlpcCwgIzgKKwkJbW92bmUJcjMsIHI3
LCBwdWxsICMyNAorCQlsZG1uZWlhCXIxISwge3I0LCByN30KKwkJb3JybmUJcjMsIHIzLCBy
NCwgcHVzaCAjOAorCQltb3ZuZQlyNCwgcjQsIHB1bGwgIzI0CisJCW9ycm5lCXI0LCByNCwg
cjcsIHB1c2ggIzgKKwkJc3RtbmVpYQlyMCEsIHtyMyAtIHI0fQkJCUAgU2hvdWxkbnQgZmF1
bHQKKwkJdHN0CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzI0CisJCWxkcm5lCXI3
LCBbcjFdLCAjNAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICM4CisJCXN0cm5ldAlyMywg
W3IwXSwgIzQJCQlAIFNob3VsZG50IGZhdWx0CisJCWFuZHMJaXAsIGlwLCAjMworCQliZXEJ
LmMydV8zZnVwaQorLmMydV8zbm93b3JkczoJbW92CXIzLCByNywgZ2V0X2J5dGVfMworCQl0
ZXEJaXAsICMwCisJCWJlcQkuYzJ1X2ZpbmlzaGVkCisJCWNtcAlpcCwgIzIKK1VTRVIoCQlz
dHJidAlyMywgW3IwXSwgIzEpCQkJQCBNYXkgZmF1bHQKKwkJbGRyZ2ViCXIzLCBbcjFdLCAj
MQorVVNFUigJCXN0cmdlYnQJcjMsIFtyMF0sICMxKQkJCUAgTWF5IGZhdWx0CisJCWxkcmd0
YglyMywgW3IxXSwgIzAKK1VTRVIoCQlzdHJndGJ0CXIzLCBbcjBdLCAjMSkJCQlAIE1heSBm
YXVsdAorCQliCS5jMnVfZmluaXNoZWQKKworCQkuc2VjdGlvbiAuZml4dXAsImF4IgorCQku
YWxpZ24JMAorOTAwMToJCWxkbWZkCXNwISwge3IwLCByNCAtIHI3LCBwY30KKwkJLnByZXZp
b3VzCisKKy8qIFByb3RvdHlwZTogdW5zaWduZWQgbG9uZyBfX2FyY2hfY29weV9mcm9tX3Vz
ZXIodm9pZCAqdG8sY29uc3Qgdm9pZCAqZnJvbSx1bnNpZ25lZCBsb25nIG4pOworICogUHVy
cG9zZSAgOiBjb3B5IGEgYmxvY2sgZnJvbSB1c2VyIG1lbW9yeSB0byBrZXJuZWwgbWVtb3J5
CisgKiBQYXJhbXMgICA6IHRvICAgLSBrZXJuZWwgbWVtb3J5CisgKiAgICAgICAgICA6IGZy
b20gLSB1c2VyIG1lbW9yeQorICogICAgICAgICAgOiBuICAgIC0gbnVtYmVyIG9mIGJ5dGVz
IHRvIGNvcHkKKyAqIFJldHVybnMgIDogTnVtYmVyIG9mIGJ5dGVzIE5PVCBjb3BpZWQuCisg
Ki8KKy5jZnVfZGVzdF9ub3RfYWxpZ25lZDoKKwkJcnNiCWlwLCBpcCwgIzQKKwkJY21wCWlw
LCAjMgorVVNFUigJCWxkcmJ0CXIzLCBbcjFdLCAjMSkJCQlAIE1heSBmYXVsdAorCQlzdHJi
CXIzLCBbcjBdLCAjMQorVVNFUigJCWxkcmdlYnQJcjMsIFtyMV0sICMxKQkJCUAgTWF5IGZh
dWx0CisJCXN0cmdlYglyMywgW3IwXSwgIzEKK1VTRVIoCQlsZHJndGJ0CXIzLCBbcjFdLCAj
MSkJCQlAIE1heSBmYXVsdAorCQlzdHJndGIJcjMsIFtyMF0sICMxCisJCXN1YglyMiwgcjIs
IGlwCisJCWIJLmNmdV9kZXN0X2FsaWduZWQKKworRU5UUlkoX19hcmNoX2NvcHlfZnJvbV91
c2VyKQorCQlzdG1mZAlzcCEsIHtyMCwgcjIsIHI0IC0gcjcsIGxyfQorCQljbXAJcjIsICM0
CisJCWJsdAkuY2Z1X25vdF9lbm91Z2gKKwlQTEQoCXBsZAlbcjEsICMwXQkJKQorCVBMRCgJ
cGxkCVtyMCwgIzBdCQkpCisJCWFuZHMJaXAsIHIwLCAjMworCQlibmUJLmNmdV9kZXN0X25v
dF9hbGlnbmVkCisuY2Z1X2Rlc3RfYWxpZ25lZDoKKwkJYW5kcwlpcCwgcjEsICMzCisJCWJu
ZQkuY2Z1X3NyY19ub3RfYWxpZ25lZAorLyoKKyAqIFNlZWluZyBhcyB0aGVyZSBoYXMgdG8g
YmUgYXQgbGVhc3QgOCBieXRlcyB0byBjb3B5LCB3ZSBjYW4KKyAqIGNvcHkgb25lIHdvcmQs
IGFuZCBmb3JjZSBhIHVzZXItbW9kZSBwYWdlIGZhdWx0Li4uCisgKi8KKworLmNmdV8wZnVw
aToJc3VicwlyMiwgcjIsICM0CisJCWFkZG1pCWlwLCByMiwgIzQKKwkJYm1pCS5jZnVfMG5v
d29yZHMKK1VTRVIoCQlsZHJ0CXIzLCBbcjFdLCAjNCkKKwkJc3RyCXIzLCBbcjBdLCAjNAor
CQltb3YJaXAsIHIxLCBsc2wgIzMyIC0gUEFHRV9TSElGVAlAIE9uIGVhY2ggcGFnZSwgdXNl
IGEgbGQvc3Q/P3QgaW5zdHJ1Y3Rpb24KKwkJcnNiCWlwLCBpcCwgIzAKKwkJbW92cwlpcCwg
aXAsIGxzciAjMzIgLSBQQUdFX1NISUZUCisJCWJlcQkuY2Z1XzBmdXBpCisvKgorICogaXAg
PSBtYXggbm8uIG9mIGJ5dGVzIHRvIGNvcHkgYmVmb3JlIG5lZWRpbmcgYW5vdGhlciAic3Ry
dCIgaW5zbgorICovCisJCWNtcAlyMiwgaXAKKwkJbW92bHQJaXAsIHIyCisJCXN1YglyMiwg
cjIsIGlwCisJCXN1YnMJaXAsIGlwLCAjMzIKKwkJYmx0CS5jZnVfMHJlbThscAorCVBMRCgJ
cGxkCVtyMSwgIzI4XQkJKQorCVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCVBMRCgJc3Vicwlp
cCwgaXAsICM2NAkJCSkKKwlQTEQoCWJsdAkuY2Z1XzBjcHlub3BsZAkJKQorCVBMRCgJcGxk
CVtyMSwgIzYwXQkJKQorCVBMRCgJcGxkCVtyMCwgIzYwXQkJKQorCisuY2Z1XzBjcHk4bHA6
CisJUExEKAlwbGQJW3IxLCAjOTJdCQkpCisJUExEKAlwbGQJW3IwLCAjOTJdCQkpCisuY2Z1
XzBjcHlub3BsZDoJbGRtaWEJcjEhLCB7cjMgLSByNn0JCQlAIFNob3VsZG50IGZhdWx0CisJ
CXN0bWlhCXIwISwge3IzIC0gcjZ9CisJCWxkbWlhCXIxISwge3IzIC0gcjZ9CQkJQCBTaG91
bGRudCBmYXVsdAorCQlzdWJzCWlwLCBpcCwgIzMyCisJCXN0bWlhCXIwISwge3IzIC0gcjZ9
CisJCWJwbAkuY2Z1XzBjcHk4bHAKKwlQTEQoCWNtbglpcCwgIzY0CQkJKQorCVBMRCgJYmdl
CS5jZnVfMGNweW5vcGxkCQkpCisJUExEKAlhZGQJaXAsIGlwLCAjNjQJCSkKKworLmNmdV8w
cmVtOGxwOgljbW4JaXAsICMxNgorCQlsZG1nZWlhCXIxISwge3IzIC0gcjZ9CQkJQCBTaG91
bGRudCBmYXVsdAorCQlzdG1nZWlhCXIwISwge3IzIC0gcjZ9CisJCXRzdAlpcCwgIzgKKwkJ
bGRtbmVpYQlyMSEsIHtyMyAtIHI0fQkJCUAgU2hvdWxkbnQgZmF1bHQKKwkJc3RtbmVpYQly
MCEsIHtyMyAtIHI0fQorCQl0c3QJaXAsICM0CisJCWxkcm5ldAlyMywgW3IxXSwgIzQJCQlA
IFNob3VsZG50IGZhdWx0CisJCXN0cm5lCXIzLCBbcjBdLCAjNAorCQlhbmRzCWlwLCBpcCwg
IzMKKwkJYmVxCS5jZnVfMGZ1cGkKKy5jZnVfMG5vd29yZHM6CXRlcQlpcCwgIzAKKwkJYmVx
CS5jZnVfZmluaXNoZWQKKy5jZnVfbm93b3JkczoJY21wCWlwLCAjMgorVVNFUigJCWxkcmJ0
CXIzLCBbcjFdLCAjMSkJCQlAIE1heSBmYXVsdAorCQlzdHJiCXIzLCBbcjBdLCAjMQorVVNF
UigJCWxkcmdlYnQJcjMsIFtyMV0sICMxKQkJCUAgTWF5IGZhdWx0CisJCXN0cmdlYglyMywg
W3IwXSwgIzEKK1VTRVIoCQlsZHJndGJ0CXIzLCBbcjFdLCAjMSkJCQlAIE1heSBmYXVsdAor
CQlzdHJndGIJcjMsIFtyMF0sICMxCisJCWIJLmNmdV9maW5pc2hlZAorCisuY2Z1X25vdF9l
bm91Z2g6CisJCW1vdnMJaXAsIHIyCisJCWJuZQkuY2Z1X25vd29yZHMKKy5jZnVfZmluaXNo
ZWQ6CW1vdglyMCwgIzAKKwkJYWRkCXNwLCBzcCwgIzgKKwkJbGRtZmQJc3AhLHtyNCAtIHI3
LCBwY30KKworLmNmdV9zcmNfbm90X2FsaWduZWQ6CisJCWJpYwlyMSwgcjEsICMzCitVU0VS
KAkJbGRydAlyNywgW3IxXSwgIzQpCQkJQCBNYXkgZmF1bHQKKwkJY21wCWlwLCAjMgorCQli
Z3QJLmNmdV8zZnVwaQorCQliZXEJLmNmdV8yZnVwaQorLmNmdV8xZnVwaToJc3VicwlyMiwg
cjIsICM0CisJCWFkZG1pCWlwLCByMiwgIzQKKwkJYm1pCS5jZnVfMW5vd29yZHMKKwkJbW92
CXIzLCByNywgcHVsbCAjOAorVVNFUigJCWxkcnQJcjcsIFtyMV0sICM0KQkJCUAgTWF5IGZh
dWx0CisJCW9ycglyMywgcjMsIHI3LCBwdXNoICMyNAorCQlzdHIJcjMsIFtyMF0sICM0CisJ
CW1vdglpcCwgcjEsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAsICMwCisJ
CW1vdnMJaXAsIGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmNmdV8xZnVwaQor
CQljbXAJcjIsIGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAorCQlzdWJz
CWlwLCBpcCwgIzE2CisJCWJsdAkuY2Z1XzFyZW04bHAKKwlQTEQoCXBsZAlbcjEsICMxMl0J
CSkKKwlQTEQoCXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAjMzIJCSkK
KwlQTEQoCWJsdAkuY2Z1XzFjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4XQkJKQor
CVBMRCgJcGxkCVtyMCwgIzI4XQkJKQorCisuY2Z1XzFjcHk4bHA6CisJUExEKAlwbGQJW3Ix
LCAjNDRdCQkpCisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuY2Z1XzFjcHlub3BsZDoJbW92
CXIzLCByNywgcHVsbCAjOAorCQlsZG1pYQlyMSEsIHtyNCAtIHI3fQkJCUAgU2hvdWxkbnQg
ZmF1bHQKKwkJc3VicwlpcCwgaXAsICMxNgorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjMjQK
KwkJbW92CXI0LCByNCwgcHVsbCAjOAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjMjQKKwkJ
bW92CXI1LCByNSwgcHVsbCAjOAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjMjQKKwkJbW92
CXI2LCByNiwgcHVsbCAjOAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjMjQKKwkJc3RtaWEJ
cjAhLCB7cjMgLSByNn0KKwkJYnBsCS5jZnVfMWNweThscAorCVBMRCgJY21uCWlwLCAjMzIJ
CQkpCisJUExEKAliZ2UJLmNmdV8xY3B5bm9wbGQJCSkKKwlQTEQoCWFkZAlpcCwgaXAsICMz
MgkJKQorCisuY2Z1XzFyZW04bHA6CXRzdAlpcCwgIzgKKwkJbW92bmUJcjMsIHI3LCBwdWxs
ICM4CisJCWxkbW5laWEJcjEhLCB7cjQsIHI3fQkJCUAgU2hvdWxkbnQgZmF1bHQKKwkJb3Jy
bmUJcjMsIHIzLCByNCwgcHVzaCAjMjQKKwkJbW92bmUJcjQsIHI0LCBwdWxsICM4CisJCW9y
cm5lCXI0LCByNCwgcjcsIHB1c2ggIzI0CisJCXN0bW5laWEJcjAhLCB7cjMgLSByNH0KKwkJ
dHN0CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzgKK1VTRVIoCQlsZHJuZXQJcjcs
IFtyMV0sICM0KQkJCUAgTWF5IGZhdWx0CisJCW9ycm5lCXIzLCByMywgcjcsIHB1c2ggIzI0
CisJCXN0cm5lCXIzLCBbcjBdLCAjNAorCQlhbmRzCWlwLCBpcCwgIzMKKwkJYmVxCS5jZnVf
MWZ1cGkKKy5jZnVfMW5vd29yZHM6CW1vdglyMywgcjcsIGdldF9ieXRlXzEKKwkJdGVxCWlw
LCAjMAorCQliZXEJLmNmdV9maW5pc2hlZAorCQljbXAJaXAsICMyCisJCXN0cmIJcjMsIFty
MF0sICMxCisJCW1vdmdlCXIzLCByNywgZ2V0X2J5dGVfMgorCQlzdHJnZWIJcjMsIFtyMF0s
ICMxCisJCW1vdmd0CXIzLCByNywgZ2V0X2J5dGVfMworCQlzdHJndGIJcjMsIFtyMF0sICMx
CisJCWIJLmNmdV9maW5pc2hlZAorCisuY2Z1XzJmdXBpOglzdWJzCXIyLCByMiwgIzQKKwkJ
YWRkbWkJaXAsIHIyLCAjNAorCQlibWkJLmNmdV8ybm93b3JkcworCQltb3YJcjMsIHI3LCBw
dWxsICMxNgorVVNFUigJCWxkcnQJcjcsIFtyMV0sICM0KQkJCUAgTWF5IGZhdWx0CisJCW9y
cglyMywgcjMsIHI3LCBwdXNoICMxNgorCQlzdHIJcjMsIFtyMF0sICM0CisJCW1vdglpcCwg
cjEsIGxzbCAjMzIgLSBQQUdFX1NISUZUCisJCXJzYglpcCwgaXAsICMwCisJCW1vdnMJaXAs
IGlwLCBsc3IgIzMyIC0gUEFHRV9TSElGVAorCQliZXEJLmNmdV8yZnVwaQorCQljbXAJcjIs
IGlwCisJCW1vdmx0CWlwLCByMgorCQlzdWIJcjIsIHIyLCBpcAorCQlzdWJzCWlwLCBpcCwg
IzE2CisJCWJsdAkuY2Z1XzJyZW04bHAKKwlQTEQoCXBsZAlbcjEsICMxMl0JCSkKKwlQTEQo
CXBsZAlbcjAsICMxMl0JCSkKKwlQTEQoCXN1YnMJaXAsIGlwLCAjMzIJCSkKKwlQTEQoCWJs
dAkuY2Z1XzJjcHlub3BsZAkJKQorCVBMRCgJcGxkCVtyMSwgIzI4XQkJKQorCVBMRCgJcGxk
CVtyMCwgIzI4XQkJKQorCisuY2Z1XzJjcHk4bHA6CisJUExEKAlwbGQJW3IxLCAjNDRdCQkp
CisJUExEKAlwbGQJW3IwLCAjNDRdCQkpCisuY2Z1XzJjcHlub3BsZDoJbW92CXIzLCByNywg
cHVsbCAjMTYKKwkJbGRtaWEJcjEhLCB7cjQgLSByN30JCQlAIFNob3VsZG50IGZhdWx0CisJ
CXN1YnMJaXAsIGlwLCAjMTYKKwkJb3JyCXIzLCByMywgcjQsIHB1c2ggIzE2CisJCW1vdgly
NCwgcjQsIHB1bGwgIzE2CisJCW9ycglyNCwgcjQsIHI1LCBwdXNoICMxNgorCQltb3YJcjUs
IHI1LCBwdWxsICMxNgorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjMTYKKwkJbW92CXI2LCBy
NiwgcHVsbCAjMTYKKwkJb3JyCXI2LCByNiwgcjcsIHB1c2ggIzE2CisJCXN0bWlhCXIwISwg
e3IzIC0gcjZ9CisJCWJwbAkuY2Z1XzJjcHk4bHAKKwlQTEQoCWNtbglpcCwgIzMyCQkJKQor
CVBMRCgJYmdlCS5jZnVfMmNweW5vcGxkCQkpCisJUExEKAlhZGQJaXAsIGlwLCAjMzIJCSkK
KworLmNmdV8ycmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIzLCByNywgcHVsbCAjMTYK
KwkJbGRtbmVpYQlyMSEsIHtyNCwgcjd9CQkJQCBTaG91bGRudCBmYXVsdAorCQlvcnJuZQly
MywgcjMsIHI0LCBwdXNoICMxNgorCQltb3ZuZQlyNCwgcjQsIHB1bGwgIzE2CisJCW9ycm5l
CXI0LCByNCwgcjcsIHB1c2ggIzE2CisJCXN0bW5laWEJcjAhLCB7cjMgLSByNH0KKwkJdHN0
CWlwLCAjNAorCQltb3ZuZQlyMywgcjcsIHB1bGwgIzE2CitVU0VSKAkJbGRybmV0CXI3LCBb
cjFdLCAjNCkJCQlAIE1heSBmYXVsdAorCQlvcnJuZQlyMywgcjMsIHI3LCBwdXNoICMxNgor
CQlzdHJuZQlyMywgW3IwXSwgIzQKKwkJYW5kcwlpcCwgaXAsICMzCisJCWJlcQkuY2Z1XzJm
dXBpCisuY2Z1XzJub3dvcmRzOgltb3YJcjMsIHI3LCBnZXRfYnl0ZV8yCisJCXRlcQlpcCwg
IzAKKwkJYmVxCS5jZnVfZmluaXNoZWQKKwkJY21wCWlwLCAjMgorCQlzdHJiCXIzLCBbcjBd
LCAjMQorCQltb3ZnZQlyMywgcjcsIGdldF9ieXRlXzMKKwkJc3RyZ2ViCXIzLCBbcjBdLCAj
MQorVVNFUigJCWxkcmd0YnQJcjMsIFtyMV0sICMwKQkJCUAgTWF5IGZhdWx0CisJCXN0cmd0
YglyMywgW3IwXSwgIzEKKwkJYgkuY2Z1X2ZpbmlzaGVkCisKKy5jZnVfM2Z1cGk6CXN1YnMJ
cjIsIHIyLCAjNAorCQlhZGRtaQlpcCwgcjIsICM0CisJCWJtaQkuY2Z1XzNub3dvcmRzCisJ
CW1vdglyMywgcjcsIHB1bGwgIzI0CitVU0VSKAkJbGRydAlyNywgW3IxXSwgIzQpCQkJQCBN
YXkgZmF1bHQKKwkJb3JyCXIzLCByMywgcjcsIHB1c2ggIzgKKwkJc3RyCXIzLCBbcjBdLCAj
NAorCQltb3YJaXAsIHIxLCBsc2wgIzMyIC0gUEFHRV9TSElGVAorCQlyc2IJaXAsIGlwLCAj
MAorCQltb3ZzCWlwLCBpcCwgbHNyICMzMiAtIFBBR0VfU0hJRlQKKwkJYmVxCS5jZnVfM2Z1
cGkKKwkJY21wCXIyLCBpcAorCQltb3ZsdAlpcCwgcjIKKwkJc3ViCXIyLCByMiwgaXAKKwkJ
c3VicwlpcCwgaXAsICMxNgorCQlibHQJLmNmdV8zcmVtOGxwCisJUExEKAlwbGQJW3IxLCAj
MTJdCQkpCisJUExEKAlwbGQJW3IwLCAjMTJdCQkpCisJUExEKAlzdWJzCWlwLCBpcCwgIzMy
CQkpCisJUExEKAlibHQJLmNmdV8zY3B5bm9wbGQJCSkKKwlQTEQoCXBsZAlbcjEsICMyOF0J
CSkKKwlQTEQoCXBsZAlbcjAsICMyOF0JCSkKKworLmNmdV8zY3B5OGxwOgorCVBMRCgJcGxk
CVtyMSwgIzQ0XQkJKQorCVBMRCgJcGxkCVtyMCwgIzQ0XQkJKQorLmNmdV8zY3B5bm9wbGQ6
CW1vdglyMywgcjcsIHB1bGwgIzI0CisJCWxkbWlhCXIxISwge3I0IC0gcjd9CQkJQCBTaG91
bGRudCBmYXVsdAorCQlvcnIJcjMsIHIzLCByNCwgcHVzaCAjOAorCQltb3YJcjQsIHI0LCBw
dWxsICMyNAorCQlvcnIJcjQsIHI0LCByNSwgcHVzaCAjOAorCQltb3YJcjUsIHI1LCBwdWxs
ICMyNAorCQlvcnIJcjUsIHI1LCByNiwgcHVzaCAjOAorCQltb3YJcjYsIHI2LCBwdWxsICMy
NAorCQlvcnIJcjYsIHI2LCByNywgcHVzaCAjOAorCQlzdG1pYQlyMCEsIHtyMyAtIHI2fQor
CQlzdWJzCWlwLCBpcCwgIzE2CisJCWJwbAkuY2Z1XzNjcHk4bHAKKwlQTEQoCWNtbglpcCwg
IzMyCQkJKQorCVBMRCgJYmdlCS5jZnVfM2NweW5vcGxkCQkpCisJUExEKAlhZGQJaXAsIGlw
LCAjMzIJCSkKKworLmNmdV8zcmVtOGxwOgl0c3QJaXAsICM4CisJCW1vdm5lCXIzLCByNywg
cHVsbCAjMjQKKwkJbGRtbmVpYQlyMSEsIHtyNCwgcjd9CQkJQCBTaG91bGRudCBmYXVsdAor
CQlvcnJuZQlyMywgcjMsIHI0LCBwdXNoICM4CisJCW1vdm5lCXI0LCByNCwgcHVsbCAjMjQK
KwkJb3JybmUJcjQsIHI0LCByNywgcHVzaCAjOAorCQlzdG1uZWlhCXIwISwge3IzIC0gcjR9
CisJCXRzdAlpcCwgIzQKKwkJbW92bmUJcjMsIHI3LCBwdWxsICMyNAorVVNFUigJCWxkcm5l
dAlyNywgW3IxXSwgIzQpCQkJQCBNYXkgZmF1bHQKKwkJb3JybmUJcjMsIHIzLCByNywgcHVz
aCAjOAorCQlzdHJuZQlyMywgW3IwXSwgIzQKKwkJYW5kcwlpcCwgaXAsICMzCisJCWJlcQku
Y2Z1XzNmdXBpCisuY2Z1XzNub3dvcmRzOgltb3YJcjMsIHI3LCBnZXRfYnl0ZV8zCisJCXRl
cQlpcCwgIzAKKwkJYmVxCS5jZnVfZmluaXNoZWQKKwkJY21wCWlwLCAjMgorCQlzdHJiCXIz
LCBbcjBdLCAjMQorVVNFUigJCWxkcmdlYnQJcjMsIFtyMV0sICMxKQkJCUAgTWF5IGZhdWx0
CisJCXN0cmdlYglyMywgW3IwXSwgIzEKK1VTRVIoCQlsZHJndGJ0CXIzLCBbcjFdLCAjMSkJ
CQlAIE1heSBmYXVsdAorCQlzdHJndGIJcjMsIFtyMF0sICMxCisJCWIJLmNmdV9maW5pc2hl
ZAorCisJCS5zZWN0aW9uIC5maXh1cCwiYXgiCisJCS5hbGlnbgkwCisJCS8qCisJCSAqIFdl
IHRvb2sgYW4gZXhjZXB0aW9uLiAgcjAgY29udGFpbnMgYSBwb2ludGVyIHRvCisJCSAqIHRo
ZSBieXRlIG5vdCBjb3BpZWQuCisJCSAqLworOTAwMToJCWxkcglyMiwgW3NwXSwgIzQJCQlA
IHZvaWQgKnRvCisJCXN1YglyMiwgcjAsIHIyCQkJQCBieXRlcyBjb3BpZWQKKwkJbGRyCXIx
LCBbc3BdLCAjNAkJCUAgdW5zaWduZWQgbG9uZyBjb3VudAorCQlzdWJzCXI0LCByMSwgcjIJ
CQlAIGJ5dGVzIGxlZnQgdG8gY29weQorCQltb3ZuZQlyMSwgcjQKKwkJYmxuZQlfX21lbXpl
cm8KKwkJbW92CXIwLCByNAorCQlsZG1mZAlzcCEsIHtyNCAtIHI3LCBwY30KKwkJLnByZXZp
b3VzCisKKy8qIFByb3RvdHlwZTogaW50IF9fYXJjaF9jbGVhcl91c2VyKHZvaWQgKmFkZHIs
IHNpemVfdCBzeikKKyAqIFB1cnBvc2UgIDogY2xlYXIgc29tZSB1c2VyIG1lbW9yeQorICog
UGFyYW1zICAgOiBhZGRyIC0gdXNlciBtZW1vcnkgYWRkcmVzcyB0byBjbGVhcgorICogICAg
ICAgICAgOiBzeiAgIC0gbnVtYmVyIG9mIGJ5dGVzIHRvIGNsZWFyCisgKiBSZXR1cm5zICA6
IG51bWJlciBvZiBieXRlcyBOT1QgY2xlYXJlZAorICovCitFTlRSWShfX2FyY2hfY2xlYXJf
dXNlcikKKwkJc3RtZmQJc3AhLCB7cjEsIGxyfQorCQltb3YJcjIsICMwCisJCWNtcAlyMSwg
IzQKKwkJYmx0CTJmCisJCWFuZHMJaXAsIHIwLCAjMworCQliZXEJMWYKKwkJY21wCWlwLCAj
MgorVVNFUigJCXN0cmJ0CXIyLCBbcjBdLCAjMSkKK1VTRVIoCQlzdHJsZWJ0CXIyLCBbcjBd
LCAjMSkKK1VTRVIoCQlzdHJsdGJ0CXIyLCBbcjBdLCAjMSkKKwkJcnNiCWlwLCBpcCwgIzQK
KwkJc3ViCXIxLCByMSwgaXAJCUAgIDcgIDYgIDUgIDQgIDMgIDIgIDEKKzE6CQlzdWJzCXIx
LCByMSwgIzgJCUAgLTEgLTIgLTMgLTQgLTUgLTYgLTcKK1VTRVIoCQlzdHJwbHQJcjIsIFty
MF0sICM0KQorVVNFUigJCXN0cnBsdAlyMiwgW3IwXSwgIzQpCisJCWJwbAkxYgorCQlhZGRz
CXIxLCByMSwgIzQJCUAgIDMgIDIgIDEgIDAgLTEgLTIgLTMKK1VTRVIoCQlzdHJwbHQJcjIs
IFtyMF0sICM0KQorMjoJCXRzdAlyMSwgIzIJCQlAIDF4IDF4IDB4IDB4IDF4IDF4IDB4CitV
U0VSKAkJc3RybmVidAlyMiwgW3IwXSwgIzEpCitVU0VSKAkJc3RybmVidAlyMiwgW3IwXSwg
IzEpCisJCXRzdAlyMSwgIzEJCQlAIHgxIHgwIHgxIHgwIHgxIHgwIHgxCitVU0VSKAkJc3Ry
bmVidAlyMiwgW3IwXSwgIzEpCisJCW1vdglyMCwgIzAKKwkJbGRtZmQJc3AhLCB7cjEsIHBj
fQorCisJCS5zZWN0aW9uIC5maXh1cCwiYXgiCisJCS5hbGlnbgkwCis5MDAxOgkJbGRtZmQJ
c3AhLCB7cjAsIHBjfQorCQkucHJldmlvdXMKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0vbGliL3VkaXZkaTMuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL3VkaXZkaTMuYwlGcmkgRmVi
IDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyNDIgQEAKKy8qIE1vcmUgc3Vi
cm91dGluZXMgbmVlZGVkIGJ5IEdDQyBvdXRwdXQgY29kZSBvbiBzb21lIG1hY2hpbmVzLiAg
Ki8KKy8qIENvbXBpbGUgdGhpcyBvbmUgd2l0aCBnY2MuICAqLworLyogQ29weXJpZ2h0IChD
KSAxOTg5LCA5Mi05OCwgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor
VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIENDLgorCitHTlUgQ0MgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikKK2FueSBsYXRlciB2ZXJzaW9uLgorCitHTlUgQ0MgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CitNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBHTlUgQ0M7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLiAgSWYgbm90LCB3cml0ZSB0bwordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiB5b3UgbGluayB0aGlz
IGxpYnJhcnkgd2l0aCBvdGhlciBmaWxlcywKKyAgIHNvbWUgb2Ygd2hpY2ggYXJlIGNvbXBp
bGVkIHdpdGggR0NDLCB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsCisgICB0aGlzIGxpYnJh
cnkgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZQor
ICAgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisg
ICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVy
IHJlYXNvbnMgd2h5CisgICB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQg
YnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICovCisvKiBzdXBwb3J0IGZ1
bmN0aW9ucyByZXF1aXJlZCBieSB0aGUga2VybmVsLiBiYXNlZCBvbiBjb2RlIGZyb20gZ2Nj
LTIuOTUuMyAqLworLyogSSBNb2x0b24gICAgIDI5LzA3LzAxICovCisKKyNpbmNsdWRlICJn
Y2NsaWIuaCIKKyNpbmNsdWRlICJsb25nbG9uZy5oIgorCitzdGF0aWMgY29uc3QgVVFJdHlw
ZSBfX2Nsel90YWJbXSA9Cit7CisgIDAsMSwyLDIsMywzLDMsMyw0LDQsNCw0LDQsNCw0LDQs
NSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSwKKyAgNiw2LDYsNiw2LDYsNiw2LDYs
Niw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LAorICA3LDcs
Nyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcs
Nyw3LDcsCisgIDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcs
Nyw3LDcsNyw3LDcsNyw3LDcsNywKKyAgOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LAorICA4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsCisgIDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCwKKyAgOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCw4LDgs
OCw4LDgsOCw4LDgsOCw4LDgsOCw4LAorfTsKKworVURJdHlwZQorX191ZGl2bW9kZGk0IChV
REl0eXBlIG4sIFVESXR5cGUgZCwgVURJdHlwZSAqcnApCit7CisgIERJdW5pb24gd3c7Cisg
IERJdW5pb24gbm4sIGRkOworICBESXVuaW9uIHJyOworICBVU0l0eXBlIGQwLCBkMSwgbjAs
IG4xLCBuMjsKKyAgVVNJdHlwZSBxMCwgcTE7CisgIFVTSXR5cGUgYiwgYm07CisKKyAgbm4u
bGwgPSBuOworICBkZC5sbCA9IGQ7CisKKyAgZDAgPSBkZC5zLmxvdzsKKyAgZDEgPSBkZC5z
LmhpZ2g7CisgIG4wID0gbm4ucy5sb3c7CisgIG4xID0gbm4ucy5oaWdoOworCisgIGlmIChk
MSA9PSAwKQorICAgIHsKKyAgICAgIGlmIChkMCA+IG4xKQorICAgICAgICB7CisgICAgICAg
ICAgLyogMHEgPSBubiAvIDBEICovCisKKyAgICAgICAgICBjb3VudF9sZWFkaW5nX3plcm9z
IChibSwgZDApOworCisgICAgICAgICAgaWYgKGJtICE9IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgIC8qIE5vcm1hbGl6ZSwgaS5lLiBtYWtlIHRoZSBtb3N0IHNpZ25pZmlj
YW50IGJpdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgZGVub21pbmF0b3Igc2V0LiAgKi8K
KworICAgICAgICAgICAgICBkMCA9IGQwIDw8IGJtOworICAgICAgICAgICAgICBuMSA9IChu
MSA8PCBibSkgfCAobjAgPj4gKFNJX1RZUEVfU0laRSAtIGJtKSk7CisgICAgICAgICAgICAg
IG4wID0gbjAgPDwgYm07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICB1ZGl2X3Fybm5k
IChxMCwgbjAsIG4xLCBuMCwgZDApOworICAgICAgICAgIHExID0gMDsKKworICAgICAgICAg
IC8qIFJlbWFpbmRlciBpbiBuMCA+PiBibS4gICovCisgICAgICAgIH0KKyAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgIC8qIHFxID0gTk4gLyAwZCAqLworCisgICAgICAgICAg
aWYgKGQwID09IDApCisgICAgICAgICAgICBkMCA9IDEgLyBkMDsgICAgICAgIC8qIERpdmlk
ZSBpbnRlbnRpb25hbGx5IGJ5IHplcm8uICAqLworCisgICAgICAgICAgY291bnRfbGVhZGlu
Z196ZXJvcyAoYm0sIGQwKTsKKworICAgICAgICAgIGlmIChibSA9PSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAvKiBGcm9tIChuMSA+PSBkMCkgL1wgKHRoZSBtb3N0IHNp
Z25pZmljYW50IGJpdCBvZiBkMCBpcyBzZXQpLAorICAgICAgICAgICAgICAgICBjb25jbHVk
ZSAodGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIG4xIGlzIHNldCkgL1wgKHRoZQorICAg
ICAgICAgICAgICAgICBsZWFkaW5nIHF1b3RpZW50IGRpZ2l0IHExID0gMSkuCisKKyAgICAg
ICAgICAgICAgICAgVGhpcyBzcGVjaWFsIGNhc2UgaXMgbmVjZXNzYXJ5LCBub3QgYW4gb3B0
aW1pemF0aW9uLgorICAgICAgICAgICAgICAgICAoU2hpZnRzIGNvdW50cyBvZiBTSV9UWVBF
X1NJWkUgYXJlIHVuZGVmaW5lZC4pICAqLworCisgICAgICAgICAgICAgIG4xIC09IGQwOwor
ICAgICAgICAgICAgICBxMSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBOb3JtYWxpemUuICAqLworCisgICAg
ICAgICAgICAgIGIgPSBTSV9UWVBFX1NJWkUgLSBibTsKKworICAgICAgICAgICAgICBkMCA9
IGQwIDw8IGJtOworICAgICAgICAgICAgICBuMiA9IG4xID4+IGI7CisgICAgICAgICAgICAg
IG4xID0gKG4xIDw8IGJtKSB8IChuMCA+PiBiKTsKKyAgICAgICAgICAgICAgbjAgPSBuMCA8
PCBibTsKKworICAgICAgICAgICAgICB1ZGl2X3Fybm5kIChxMSwgbjEsIG4yLCBuMSwgZDAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgLyogbjEgIT0gZDAuLi4gICovCisKKyAg
ICAgICAgICB1ZGl2X3Fybm5kIChxMCwgbjAsIG4xLCBuMCwgZDApOworCisgICAgICAgICAg
LyogUmVtYWluZGVyIGluIG4wID4+IGJtLiAgKi8KKyAgICAgICAgfQorCisgICAgICBpZiAo
cnAgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgIHJyLnMubG93ID0gbjAgPj4gYm07Cisg
ICAgICAgICAgcnIucy5oaWdoID0gMDsKKyAgICAgICAgICAqcnAgPSByci5sbDsKKyAgICAg
ICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlmIChkMSA+IG4xKQorICAgICAg
ICB7CisgICAgICAgICAgLyogMDAgPSBubiAvIEREICovCisKKyAgICAgICAgICBxMCA9IDA7
CisgICAgICAgICAgcTEgPSAwOworCisgICAgICAgICAgLyogUmVtYWluZGVyIGluIG4xbjAu
ICAqLworICAgICAgICAgIGlmIChycCAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICByci5zLmxvdyA9IG4wOworICAgICAgICAgICAgICByci5zLmhpZ2ggPSBuMTsKKyAg
ICAgICAgICAgICAgKnJwID0gcnIubGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIDBxID0gTk4gLyBkZCAqLworCisg
ICAgICAgICAgY291bnRfbGVhZGluZ196ZXJvcyAoYm0sIGQxKTsKKyAgICAgICAgICBpZiAo
Ym0gPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogRnJvbSAobjEgPj0g
ZDEpIC9cICh0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgZDEgaXMgc2V0KSwKKyAgICAg
ICAgICAgICAgICAgY29uY2x1ZGUgKHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBuMSBp
cyBzZXQpIC9cICh0aGUKKyAgICAgICAgICAgICAgICAgcXVvdGllbnQgZGlnaXQgcTAgPSAw
IG9yIDEpLgorCisgICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lhbCBjYXNlIGlzIG5lY2Vz
c2FyeSwgbm90IGFuIG9wdGltaXphdGlvbi4gICovCisKKyAgICAgICAgICAgICAgLyogVGhl
IGNvbmRpdGlvbiBvbiB0aGUgbmV4dCBsaW5lIHRha2VzIGFkdmFudGFnZSBvZiB0aGF0Cisg
ICAgICAgICAgICAgICAgIG4xID49IGQxICh0cnVlIGR1ZSB0byBwcm9ncmFtIGZsb3cpLiAg
Ki8KKyAgICAgICAgICAgICAgaWYgKG4xID4gZDEgfHwgbjAgPj0gZDApCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgcTAgPSAxOworICAgICAgICAgICAgICAgICAg
c3ViX2RkbW1zcyAobjEsIG4wLCBuMSwgbjAsIGQxLCBkMCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcTAgPSAwOworCisgICAg
ICAgICAgICAgIHExID0gMDsKKworICAgICAgICAgICAgICBpZiAocnAgIT0gMCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByci5zLmxvdyA9IG4wOworICAgICAg
ICAgICAgICAgICAgcnIucy5oaWdoID0gbjE7CisgICAgICAgICAgICAgICAgICAqcnAgPSBy
ci5sbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBVU0l0eXBlIG0xLCBtMDsKKyAgICAg
ICAgICAgICAgLyogTm9ybWFsaXplLiAgKi8KKworICAgICAgICAgICAgICBiID0gU0lfVFlQ
RV9TSVpFIC0gYm07CisKKyAgICAgICAgICAgICAgZDEgPSAoZDEgPDwgYm0pIHwgKGQwID4+
IGIpOworICAgICAgICAgICAgICBkMCA9IGQwIDw8IGJtOworICAgICAgICAgICAgICBuMiA9
IG4xID4+IGI7CisgICAgICAgICAgICAgIG4xID0gKG4xIDw8IGJtKSB8IChuMCA+PiBiKTsK
KyAgICAgICAgICAgICAgbjAgPSBuMCA8PCBibTsKKworICAgICAgICAgICAgICB1ZGl2X3Fy
bm5kIChxMCwgbjEsIG4yLCBuMSwgZDEpOworICAgICAgICAgICAgICB1bXVsX3BwbW0gKG0x
LCBtMCwgcTAsIGQwKTsKKworICAgICAgICAgICAgICBpZiAobTEgPiBuMSB8fCAobTEgPT0g
bjEgJiYgbTAgPiBuMCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
cTAtLTsKKyAgICAgICAgICAgICAgICAgIHN1Yl9kZG1tc3MgKG0xLCBtMCwgbTEsIG0wLCBk
MSwgZDApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBxMSA9IDA7CisK
KyAgICAgICAgICAgICAgLyogUmVtYWluZGVyIGluIChuMW4wIC0gbTFtMCkgPj4gYm0uICAq
LworICAgICAgICAgICAgICBpZiAocnAgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBzdWJfZGRtbXNzIChuMSwgbjAsIG4xLCBuMCwgbTEsIG0wKTsKKyAg
ICAgICAgICAgICAgICAgIHJyLnMubG93ID0gKG4xIDw8IGIpIHwgKG4wID4+IGJtKTsKKyAg
ICAgICAgICAgICAgICAgIHJyLnMuaGlnaCA9IG4xID4+IGJtOworICAgICAgICAgICAgICAg
ICAgKnJwID0gcnIubGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgIHd3LnMubG93ID0gcTA7CisgIHd3LnMuaGlnaCA9IHExOwor
ICByZXR1cm4gd3cubGw7Cit9CisKK1VESXR5cGUKK19fdWRpdmRpMyAoVURJdHlwZSBuLCBV
REl0eXBlIGQpCit7CisgIHJldHVybiBfX3VkaXZtb2RkaTQgKG4sIGQsIChVREl0eXBlICop
IDApOworfQorCitVREl0eXBlCitfX3Vtb2RkaTMgKFVESXR5cGUgdSwgVURJdHlwZSB2KQor
eworICBVREl0eXBlIHc7CisKKyAgKHZvaWQpIF9fdWRpdm1vZGRpNCAodSAsdiwgJncpOwor
CisgIHJldHVybiB3OworfQorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS9s
aWIvdWxkaXZtb2QuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vYXJjaC9hcm0vbGliL3VsZGl2bW9kLlMJRnJpIEZlYiAwMyAxNjow
NzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorKiBBLCBRID0gcjAgKyAo
cjEgPDwgMzIpCisqIEIsIFIgPSByMiArIChyMyA8PCAzMikKKyogQSAvIEIgPSBRIC4uLiBS
CisqLworIAorLnRleHQKKy5nbG9iYWwJX19hZWFiaV91bGRpdm1vZAorLnR5cGUJX19hZWFi
aV91bGRpdm1vZCwgZnVuY3Rpb24KKy5hbGlnbgkwCitBXzAJLnJlcQlyMAorQV8xCS5yZXEJ
cjEKK0JfMAkucmVxCXIyCitCXzEJLnJlcQlyMworQ18wCS5yZXEJcjQKK0NfMQkucmVxCXI1
CitEXzAJLnJlcQlyNgorRF8xCS5yZXEJcjcKK1FfMAkucmVxCXIwCitRXzEJLnJlcQlyMQor
Ul8wCS5yZXEJcjIKK1JfMQkucmVxCXIzCisgCitfX2FlYWJpX3VsZGl2bW9kOgorCXN0bWZk
CXNwISwge3I0LCByNSwgcjYsIHI3LCBscn0KKyAKKwlAIFRlc3QgaWYgQiA9PSAwCisJb3Jy
cwlpcCwgQl8wLCBCXzEJCUAgWiBzZXQgLT4gQiA9PSAwCisJYmVxCUxfZGl2X2J5XzAKKwlA
IFRlc3QgaWYgQiBpcyBwb3dlciBvZiAyOiAoQiAmIChCIC0gMSkpID09IDAKKwlzdWJzCUNf
MCwgQl8wLCAjMQorCXNiYwlDXzEsIEJfMSwgIzAKKwl0c3QJQ18wLCBCXzAKKwl0c3RlcQlC
XzEsIENfMQorCWJlcQlMX3BvdzIKKwlAIFRlc3QgaWYgQV8xID09IEJfMSA9PSAwCisJb3Jy
cwlpcCwgQV8xLCBCXzEKKwliZXEJTF9kaXZfMzJfMzIKKworTF9kaXZfNjRfNjQ6CisJbW92
CUNfMCwgIzEKKwltb3YJQ18xLCAjMAorCUAgRF8wID0gY2x6IEEKKwl0ZXEJQV8xLCAjMAor
CWNseglEXzAsIEFfMQorCWNsemVxCWlwLCBBXzAKKwlhZGRlcQlEXzAsIERfMCwgaXAKKwlA
IERfMSA9IGNseiBCCisJdGVxCUJfMSwgIzAKKwljbHoJRF8xLCBCXzEKKwljbHplcQlpcCwg
Ql8wCisJYWRkZXEJRF8xLCBEXzEsIGlwCisJQCBpZiBjbHogQiAtIGNseiBBID4gMAorCXN1
YnMJRF8wLCBEXzEsIERfMAorCWJscwlMX2RvbmVfc2hpZnQKKwlAIEIgPDw9IChjbHogQiAt
IGNseiBBKQorCXN1YnMJRF8xLCBEXzAsICMzMgorCXJzYglpcCwgRF8wLCAjMzIKKwltb3Zt
aQlCXzEsIEJfMSwgbHNsIERfMAorCW9ycm1pCUJfMSwgQl8xLCBCXzAsIGxzciBpcAorCW1v
dnBsCUJfMSwgQl8wLCBsc2wgRF8xCisJbW92CUJfMCwgQl8wLCBsc2wgRF8wCisJQCBDID0g
MSA8PCAoY2x6IEIgLSBjbHogQSkKKwltb3ZtaQlDXzEsIENfMSwgbHNsIERfMAorCW9ycm1p
CUNfMSwgQ18xLCBDXzAsIGxzciBpcAorCW1vdnBsCUNfMSwgQ18wLCBsc2wgRF8xCisJbW92
CUNfMCwgQ18wLCBsc2wgRF8wCitMX2RvbmVfc2hpZnQ6CisJbW92CURfMCwgIzAKKwltb3YJ
RF8xLCAjMAorCUAgQzogY3VycmVudCBiaXQ7IEQ6IHJlc3VsdAorTF9zdWJ0cmFjdDoKKwlA
IGlmIEEgPj0gQgorCWNtcAlBXzEsIEJfMQorCWNtcGVxCUFfMCwgQl8wCisJYmNjCUxfdXBk
YXRlCisJQCBBIC09IEIKKwlzdWJzCUFfMCwgQV8wLCBCXzAKKwlzYmMJQV8xLCBBXzEsIEJf
MQorCUAgRCB8PSBDCisJb3JyCURfMCwgRF8wLCBDXzAKKwlvcnIJRF8xLCBEXzEsIENfMQor
TF91cGRhdGU6CisJQCBpZiBBID09IDA6IGJyZWFrCisJb3JycwlpcCwgQV8xLCBBXzAKKwli
ZXEJTF9leGl0CisJQCBDID4+PSAxCisJbW92cwlDXzEsIENfMSwgbHNyICMxCisJbW92cwlD
XzAsIENfMCwgcnJ4CisJQCBpZiBDID09IDA6IGJyZWFrCisJb3JycwlpcCwgQ18xLCBDXzAK
KwliZXEJTF9leGl0CisJQCBCID4+PSAxCisJbW92cwlCXzEsIEJfMSwgbHNyICMxCisJbW92
CUJfMCwgQl8wLCBycngKKwliCUxfc3VidHJhY3QKK0xfZXhpdDoKKwlAIE5vdGU6IEEsIEIg
JiBRLCBSIGFyZSBhbGlhc2VzCisJbW92CVJfMCwgQV8wCisJbW92CVJfMSwgQV8xCisJbW92
CVFfMCwgRF8wCisJbW92CVFfMSwgRF8xCisJbGRtZmQJc3AhLCB7cjQsIHI1LCByNiwgcjcs
IHBjfQorCitMX2Rpdl8zMl8zMjoKKwlAIE5vdGU6CUFfMCAmCXIwIGFyZSBhbGlhc2VzCisJ
QAlRXzEJcjEKKwltb3YJcjEsIEJfMAorCWJsCV9fYWVhYmlfdWlkaXZtb2QKKwltb3YJUl8w
LCByMQorCW1vdglSXzEsICMwCisJbW92CVFfMSwgIzAKKwlsZG1mZAlzcCEsIHtyNCwgcjUs
IHI2LCByNywgcGN9CisgCitMX3BvdzI6CisJQCBOb3RlOiBBLCBCIGFuZCBRLCBSIGFyZSBh
bGlhc2VzCisJQCBSID0gQSAmIChCIC0gMSkKKwlhbmQJQ18wLCBBXzAsIENfMAorCWFuZAlD
XzEsIEFfMSwgQ18xCisJQCBRID0gQSA+PiBsb2cyKEIpCisJQCBOb3RlOiBCIG11c3Qgbm90
IGJlIDAgaGVyZSEKKwljbHoJRF8wLCBCXzAKKwlhZGQJRF8xLCBEXzAsICMxCisJcnNicwlE
XzAsIERfMCwgIzMxCisJYnBsCUxfMQorCWNseglEXzAsIEJfMQorCXJzYglEXzAsIERfMCwg
IzMxCisJbW92CUFfMCwgQV8xLCBsc3IgRF8wCisJYWRkCURfMCwgRF8wLCAjMzIKK0xfMToK
Kwltb3ZwbAlBXzAsIEFfMCwgbHNyIERfMAorCW9ycnBsCUFfMCwgQV8wLCBBXzEsIGxzbCBE
XzEKKwltb3YJQV8xLCBBXzEsIGxzciBEXzAKKwlAIE1vdiBiYWNrIEMgdG8gUgorCW1vdglS
XzAsIENfMAorCW1vdglSXzEsIENfMQorCWxkbWZkCXNwISwge3I0LCByNSwgcjYsIHI3LCBw
Y30KKworTF9kaXZfYnlfMDoKKwlibAlfX2RpdjAKKwlAIEFzIHdyb25nIGFzIGl0IGNvdWxk
IGJlCisJbW92CVFfMCwgIzAKKwltb3YJUV8xLCAjMAorCW1vdglSXzAsICMwCisJbW92CVJf
MSwgIzAKKwlsZG1mZAlzcCEsIHtyNCwgcjUsIHI2LCByNywgcGN9CisgCisKZGlmZiAtciBl
NzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3RlZ3JhL01ha2VmaWxlCi0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS90ZWdy
YS9NYWtlZmlsZQlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwx
IEBACitvYmoteSArPSBkdW1teS5vCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2Fy
bS90ZWdyYS9SdWxlcy5tawotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0vdGVncmEvUnVsZXMubWsJRnJpIEZlYiAwMyAx
NjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMSBAQAorQ0ZMQUdTLXkgKz0gLW1hcmNo
PWFybXY3LWEKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3RlZ3JhL2R1bW15
LmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
eGVuL2FyY2gvYXJtL3RlZ3JhL2R1bW15LmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsMyBAQAordm9pZCBkdW1teSh2b2lkKQoreworfQpkaWZmIC1yIGU3
MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL01ha2VmaWxlCi0tLSAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vTWFr
ZWZpbGUJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTkgQEAK
K29iai15ICs9IHNldHVwLm8KK29iai15ICs9IG1tLm8KK29iai15ICs9IGlycS5vCitvYmot
eSArPSBhcmNoX2RvbWFpbi5vCitvYmoteSArPSB0aW1lLm8KK29iai15ICs9IGRvbWFpbl9i
dWlsZC5vCitvYmoteSArPSBmYXVsdC5vCitvYmoteSArPSB0bGIubworb2JqLXkgKz0gc2h1
dGRvd24ubworb2JqLXkgKz0gYXJjaF9kb21jdGwubworb2JqLXkgKz0gY3B1Lm8KK29iai15
ICs9IGlvbW11Lm8KK29iai15ICs9IGdyYW50X3RhYmxlLm8KK29iai15ICs9IGFyY2hfc3lz
Y3RsLm8KK29iai15ICs9IG1hY2hpbmVfa2V4ZWMubworb2JqLXkgKz0gY3Jhc2gubworb2Jq
LXkgKz0gcDJtLm8KK29iai15ICs9IHBlcmZtb24ubworb2JqLXkgKz0gcGNpLm8KZGlmZiAt
ciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3hlbi9hcmNoX2RvbWFpbi5jCi0tLSAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2Fy
bS94ZW4vYXJjaF9kb21haW4uYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAg
LTAsMCArMSwyMTIgQEAKKy8qCisgKiBhcmNoX2RvbWFpbi5jCisgKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgU2FuZy1i
dW0gU3VoICAgIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIEphZW1pbiBS
eXUgICAgICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKiAgICAgICAgICBKb29Zb3VuZyBI
d2FuZyAgPGpvb3lvdW5nLmh3YW5nQHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3Jh
bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2
ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EK
KyAqLworCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgor
I2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRl
IDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vZG9tYWluLmg+CisjaW5jbHVkZSA8eGVuL2Vy
cm5vLmg+CisjaW5jbHVkZSA8eGVuL3NtcC5oPgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNp
bmNsdWRlIDx4ZW4vaXJxX2NwdXN0YXQuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgor
Cit2b2lkIGFyY2hfZHVtcF9kb21haW5faW5mbyhzdHJ1Y3QgZG9tYWluICpkKQoreworCU5P
VF9ZRVQoKTsKK30KKwordm9pZCBhcmNoX2R1bXBfdmNwdV9pbmZvKHN0cnVjdCB2Y3B1ICp2
KQoreworCU5PVF9ZRVQoKTsKK30KKwordW5zaWduZWQgbG9uZyBoeXBlcmNhbGxfY3JlYXRl
X2NvbnRpbnVhdGlvbih1bnNpZ25lZCBpbnQgb3AsCisgICAgICAgIGNvbnN0IGNoYXIgKmZv
cm1hdCwgLi4uKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAwOworfQorCitpbnQgYXJj
aF9kb21haW5fY3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9m
bGFncykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwordm9pZCBh
cmNoX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCit7CisJTk9UX1lFVCgpOwor
fQorCitzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICphbGxvY192Y3B1X2d1ZXN0X2NvbnRl
eHQodm9pZCkKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBm
cmVlX3ZjcHVfZ3Vlc3RfY29udGV4dChzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICpjb250
ZXh0KQoreworCU5PVF9ZRVQoKTsKK30KKworCitzdHJ1Y3QgdmNwdSAqYWxsb2NfdmNwdV9z
dHJ1Y3Qodm9pZCkKK3sKKwlOT1RfWUVUKCk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQg
YXJjaF92Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKwor
aW50IHZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKK3sKKwlOT1RfWUVUKCk7CisJ
cmV0dXJuIDA7Cit9CisKK3ZvaWQgdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQorewor
CU5PVF9ZRVQoKTsKK30KKwordm9pZCBmcmVlX3ZjcHVfc3RydWN0KHN0cnVjdCB2Y3B1ICp2
KQoreworCU5PVF9ZRVQoKTsKK30KKworc3RydWN0IGRvbWFpbiAqYWxsb2NfZG9tYWluX3N0
cnVjdCh2b2lkKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiBOVUxMOworfQorCisKK3Zv
aWQgZnJlZV9kb21haW5fc3RydWN0KHN0cnVjdCBkb21haW4gKmQpCit7CisJTk9UX1lFVCgp
OworfQorCitpbnQgYXJjaF9zZXRfaW5mb19ndWVzdChzdHJ1Y3QgdmNwdSAqdiwgdmNwdV9n
dWVzdF9jb250ZXh0X3QgKmN0eCkKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKKwor
fQorCit2b2lkIGRvbWFpbl9yZWxpbnF1aXNoX21lbW9yeShzdHJ1Y3QgZG9tYWluICpkKQor
eworCU5PVF9ZRVQoKTsKK30KKwordm9pZCBkdW1wX3BhZ2VmcmFtZV9pbmZvKHN0cnVjdCBk
b21haW4gKmQpCit7CisJTk9UX1lFVCgpOworfQorCit2b2lkIGNvbnRleHRfc3dpdGNoKHN0
cnVjdCB2Y3B1ICpwcmV2LCBzdHJ1Y3QgdmNwdSAqbmV4dCkKK3sKKwlOT1RfWUVUKCk7Cit9
CisKK3ZvaWQgY29udGludWVfcnVubmluZyhzdHJ1Y3QgdmNwdSAqc2FtZSkKK3sKKwlOT1Rf
WUVUKCk7Cit9CisKK3ZvaWQgc3luY19sYXp5X2V4ZWNzdGF0ZV9jcHUodW5zaWduZWQgaW50
IGNwdSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgc3luY19sYXp5X2V4ZWNzdGF0ZV9t
YXNrKGNwdW1hc2tfdCBtYXNrKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9pZCBzeW5jX3Zj
cHVfZXhlY3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKwordm9p
ZCBzeW5jX2xvY2FsX2V4ZWNzdGF0ZSh2b2lkKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9p
ZCByZWxpbnF1aXNoX21lbW9yeShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgbGlzdF9oZWFk
ICpsaXN0KQoreworCU5PVF9ZRVQoKTsKK30KKworaW50IGRvbWFpbl9yZWxpbnF1aXNoX3Jl
c291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAt
RUlOVkFMOworfQorCit2b2lkIHN0YXJ0dXBfY3B1X2lkbGVfbG9vcCh2b2lkKQoreworCU5P
VF9ZRVQoKTsKK30KKworbG9uZyBhcmNoX2RvX3ZjcHVfb3AoaW50IGNtZCwgc3RydWN0IHZj
cHUgKnYsIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKQoreworCU5PVF9ZRVQoKTsKKwor
CXJldHVybiAtRU5PU1lTOworfQorCit2b2lkIHZjcHVfa2ljayhzdHJ1Y3QgdmNwdSAqdikK
K3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgdmNwdV9tYXJrX2V2ZW50c19wZW5kaW5nKHN0
cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKworc3RhdGljIHZvaWQgdmNwdV9r
aWNrX3NvZnRpcnEodm9pZCkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3N0YXRpYyBpbnQgX19p
bml0IHZjcHVfa2lja19zb2Z0aXJxX2luaXQodm9pZCkKK3sKKwlOT1RfWUVUKCk7CisKKwly
ZXR1cm4gMDsKK30KKworX19pbml0Y2FsbCh2Y3B1X2tpY2tfc29mdGlycV9pbml0KTsKZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3hlbi9hcmNoX2RvbWN0bC5jCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNo
L2FybS94ZW4vYXJjaF9kb21jdGwuYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIGFyY2hfZG9tY3RsLmMKKyAqCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgSmFlbWluIFJ5
dSAgICAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lv
biAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8K
KworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNs
dWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVu
L21tLmg+CisjaW5jbHVkZSA8eGVuL2RvbWFpbi5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5o
PgorI2luY2x1ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4ZW4vaXJxX2NwdXN0YXQuaD4K
KyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorCisKK3ZvaWQgYXJjaF9nZXRfaW5mb19ndWVz
dChzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCAqY3R4KQorewor
CU5PVF9ZRVQoKTsKK30KKworbG9uZyBhcmNoX2RvX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0
bCAqZG9tY3RsLCBYRU5fR1VFU1RfSEFORExFKHhlbl9kb21jdGxfdClyX2RvbWN0bCkKK3sK
KwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KZGlmZiAtciBlNzAxNDYxYjEy
NTEgeGVuL2FyY2gvYXJtL3hlbi9hcmNoX3N5c2N0bC5jCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vYXJjaF9z
eXNjdGwuYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIGFyY2hfc3lzY3RsLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNidWsu
c3VoQHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlbWluIFJ5dSAgIDxqbTc3LnJ5dUBz
YW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz
MCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPHN0ZGFy
Zy5oPgorI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cisj
aW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8
eGVuL2RvbWFpbi5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9z
bXAuaD4KKyNpbmNsdWRlIDx4ZW4vaXJxX2NwdXN0YXQuaD4KKyNpbmNsdWRlIDx4ZW4vc29m
dGlycS5oPgorCitsb25nIGFyY2hfZG9fc3lzY3RsKHN0cnVjdCB4ZW5fc3lzY3RsICpzeXNj
dGwsIFhFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF90KXVfc3lzY3RsKQoreworCU5PVF9Z
RVQoKTsKKworCXJldHVybiAtRUlOVkFMOworfQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4v
YXJjaC9hcm0veGVuL2FzbS1vZmZzZXRzLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9hc20tb2Zmc2V0cy5j
CUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQwIEBACisjaW5j
bHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhl
bi9wZXJmYy5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPGFzbS9oYXJk
aXJxLmg+CisjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KKworI2lmIGRlZmluZWQoX19BUENT
XzI2X18pCisjZXJyb3IgU29ycnksIHlvdXIgY29tcGlsZXIgdGFyZ2V0cyBBUENTLTI2IGJ1
dCB0aGlzIGtlcm5lbCByZXF1aXJlcyBBUENTLTMyCisjZW5kaWYKKy8qCisgKiBHQ0MgMi45
NS4xLCAyLjk1LjI6IGlnbm9yZXMgcmVnaXN0ZXIgY2xvYmJlciBsaXN0IGluIGFzbSgpLgor
ICogR0NDIDMuMCwgMy4xOiBnZW5lcmFsIGJhZCBjb2RlIGdlbmVyYXRpb24uCisgKiBHQ0Mg
My4yLjA6IGluY29ycmVjdCBmdW5jdGlvbiBhcmd1bWVudCBvZmZzZXQgY2FsY3VsYXRpb24u
CisgKiBHQ0MgMy4yLng6IG1pc2NvbXBpbGVzIE5FV19BVVhfRU5UIGluIGZzL2JpbmZtdF9l
bGYuYworICogICAgICAgICAgICAoaHR0cDovL2djYy5nbnUub3JnL1BSODg5NikgYW5kIGlu
Y29ycmVjdCBzdHJ1Y3R1cmUKKyAqCSAgICAgIGluaXRpYWxpc2F0aW9uIGluIGZzL2pmZnMy
L2VyYXNlLmMKKyAqLworI2lmIF9fR05VQ19fIDwgMiB8fCBcCisgICAoX19HTlVDX18gPT0g
MiAmJiBfX0dOVUNfTUlOT1JfXyA8IDk1KSB8fCBcCisgICAoX19HTlVDX18gPT0gMiAmJiBf
X0dOVUNfTUlOT1JfXyA9PSA5NSAmJiBfX0dOVUNfUEFUQ0hMRVZFTF9fICE9IDAgJiYgXAor
CQkJCQkgICAgIF9fR05VQ19QQVRDSExFVkVMX18gPCAzKSB8fCBcCisgICAoX19HTlVDX18g
PT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpCisjZXJyb3IgWW91ciBjb21waWxlciBpcyB0
b28gYnVnZ3k7IGl0IGlzIGtub3duIHRvIG1pc2NvbXBpbGUga2VybmVscy4KKyNlcnJvciAg
ICBLbm93biBnb29kIGNvbXBpbGVyczogMi45NS4zLCAyLjk1LjQsIDIuOTYsIDMuMworI2Vu
ZGlmCisKKy8qIFVzZSBtYXJrZXIgaWYgeW91IG5lZWQgdG8gc2VwYXJhdGUgdGhlIHZhbHVl
cyBsYXRlciAqLworCisjZGVmaW5lIERFRklORShzeW0sIHZhbCkgXAorICAgICAgICBhc20g
dm9sYXRpbGUoIlxuLT4iICNzeW0gIiAlMCAiICN2YWwgOiA6ICJpIiAodmFsKSkKKworI2Rl
ZmluZSBCTEFOSygpIGFzbSB2b2xhdGlsZSgiXG4tPiIgOiA6ICkKKworaW50IG1haW4odm9p
ZCkKK3sKKwlCTEFOSygpOworCisJcmV0dXJuIDA7IAorfQpkaWZmIC1yIGU3MDE0NjFiMTI1
MSB4ZW4vYXJjaC9hcm0veGVuL2J1Zy5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9hcmNoL2FybS94ZW4vYnVnLmMJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzIgQEAKKyNpbmNsdWRlIDx4ZW4v
c3RkYXJnLmg+CisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi92ZXJz
aW9uLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cisj
aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5jbHVk
ZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL2NvbnNvbGUuaD4KKyNpbmNsdWRl
IDx4ZW4vc2VyaWFsLmg+CisjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KKyNpbmNsdWRlIDx4
ZW4va2V5aGFuZGxlci5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9k
ZWxheS5oPgorI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4v
c2h1dGRvd24uaD4KKyNpbmNsdWRlIDxhc20vY3VycmVudC5oPgorI2luY2x1ZGUgPGFzbS9k
ZWJ1Z2dlci5oPgorCit2b2lkIGJ1ZyhjaGFyICpmaWxlLCBpbnQgbGluZSkKK3sKKwlwYW5p
YygiWGVuIEJVRyBhdCAlczolZFxuIiwgZmlsZSwgbGluZSk7CisKKwl3aGlsZSgxKTsKK30K
Kwordm9pZCB3YXJuKGNoYXIgKmZpbGUsIGludCBsaW5lKQoreworCXByaW50aygiWGVuIFdB
Uk4gYXQgJXM6JWRcbiIsIGZpbGUsIGxpbmUpOworCit9CisKZGlmZiAtciBlNzAxNDYxYjEy
NTEgeGVuL2FyY2gvYXJtL3hlbi9jcHUuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2NwdS5jCUZyaSBGZWIg
MDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDk3IEBACisvKgorICogY3B1LmMK
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAg
ICAgICAgU2FuZy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAg
IEphZU1pbiBSeXUgICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzIAorICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBV
U0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9zcGlu
bG9jay5oPgorI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+CisjaW5jbHVkZSA8eGVuL3NtcC5o
PgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorI2lu
Y2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9wcmVlbXB0Lmg+CisjaW5jbHVk
ZSA8eGVuL3BlcmNwdS5oPgorCitjcHVtYXNrX3QgY3B1X29ubGluZV9tYXA7CitjcHVtYXNr
X3QgY3B1X3ByZXNlbnRfbWFwOworY3B1bWFza190IGNwdV9wb3NzaWJsZV9tYXA7CisKK25v
ZGVtYXNrX3Qgbm9kZV9vbmxpbmVfbWFwID0ge3sgWzBdID0gMVVMIH19OworCit1bnNpZ25l
ZCBjaGFyIGNwdV90b19ub2RlW05SX0NQVVNdIF9fcmVhZF9tb3N0bHkgPSB7CisgICAgICAg
IFswIC4uLiBOUl9DUFVTLTFdID0gTlVNQV9OT19OT0RFCit9OworCitjcHVtYXNrX3Qgbm9k
ZV90b19jcHVtYXNrW01BWF9OVU1OT0RFU10gX19yZWFkX21vc3RseTsKKworREVGSU5FX1BF
Ul9DUFVfUkVBRF9NT1NUTFkoY3B1bWFza192YXJfdCxjcHVfc2libGluZ19tYXNrKTsKK0RF
RklORV9QRVJfQ1BVX1JFQURfTU9TVExZKGNwdW1hc2tfdmFyX3QsY3B1X2NvcmVfbWFzayk7
CisKK2ludCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1KQoreworCU5PVF9ZRVQoKTsKKwor
CXJldHVybiAwOworfQorCit2b2lkIF9fY3B1X2Rpc2FibGUodm9pZCkKK3sKKwlOT1RfWUVU
KCk7Cit9CisKK3ZvaWQgX19jcHVfZGllKHVuc2lnbmVkIGludCBjcHUpCit7CisJTk9UX1lF
VCgpOworfQorCit2b2lkIHNldF9jcHVfc2libGluZ19tYXAodW5zaWduZWQgaW50IGNwdSkK
K3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgc21wX3ByZXBhcmVfY3B1cyh1bnNpZ25lZCBp
bnQgbWF4X2NwdXMpCit7CisJTk9UX1lFVCgpOworfQorCit2b2lkIHNtcF9wcmVwYXJlX2Jv
b3RfY3B1KHZvaWQpCit7CisJTk9UX1lFVCgpOworfQorCithc21saW5rYWdlIHZvaWQgc3Rh
cnRfeGVuX29uX3NsYXZlX2NwdSh2b2lkKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9pZCBz
bXBfc2VuZF9ldmVudF9jaGVja19tYXNrKGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKK3sKKwlO
T1RfWUVUKCk7Cit9CisKK3ZvaWQgc21wX2NhbGxfZnVuY3Rpb24odm9pZCAoKmYpKHZvaWQg
KnBhcmFtKSwgdm9pZCAqcGFyYW0sIGludCB3YWl0KQoreworCU5PVF9ZRVQoKTsKK30KKwor
dm9pZCBzbXBfc2VuZF9zdGF0ZV9kdW1wKHVuc2lnbmVkIGludCBjcHUpCit7CisJTk9UX1lF
VCgpOworfQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL2NyYXNoLmMK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2FyY2gvYXJtL3hlbi9jcmFzaC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApA
QCAtMCwwICsxLDI1IEBACisvKgorICogY3Jhc2guYworICoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNi
dWsuc3VoQHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlTWluIFJ5dSAgIDxqbTc3LnJ5
dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKwordm9pZCBtYWNoaW5l
X2NyYXNoX3NodXRkb3duKHZvaWQpCit7Cit9CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVu
L2FyY2gvYXJtL3hlbi9kb21haW5fYnVpbGQuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2RvbWFpbl9idWls
ZC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogZG9tYWluX2J1aWxkLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNidWsuc3Vo
QHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlTWluIFJ5dSAgIDxqbTc3LnJ5dUBzYW1z
dW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpbmNsdWRlIDx4ZW4vY29uZmln
Lmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cisj
aW5jbHVkZSA8eGVuL2NvbXBpbGUuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNs
dWRlIDx4ZW4vZWxmLmg+CisjaW5jbHVkZSA8eGVuL2RvbWFpbi5oPgorI2luY2x1ZGUgPHhl
bi9tbS5oPgorI2luY2x1ZGUgPHhlbi9pb2NhcC5oPgorI2luY2x1ZGUgPHhlbi94bWFsbG9j
Lmg+CisjaW5jbHVkZSA8eGVuL3ByZWVtcHQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliZWxmLmg+
CisjaW5jbHVkZSA8cHVibGljL3hlbi5oPgorI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+
CisKKy8qCisgKiBkb21haW5fY29uc3RydWN0KCkgc2hvdWxkIGJlIGFsd2F5cyBpbnZva2Vk
IGluIGlkbGUgZG9tYWluCisgKi8KK2ludCBkb21haW5fY29uc3RydWN0KHN0cnVjdCBkb21h
aW4gKmQsIAorCQkgICAgIHVuc2lnbmVkIGxvbmcgaW1nX3N0YXJ0LCB1bnNpZ25lZCBsb25n
IGltZ19sZW4sIAorCQkgICAgIHVuc2lnbmVkIGxvbmcgZG9tX3NpemUsIHVuc2lnbmVkIGlu
dCB2Y3B1cykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwpkaWZm
IC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL2RvbWFpbl9wYWdlLmMKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9kb21haW5fcGFnZS5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApA
QCAtMCwwICsxLDIyIEBACisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhl
bi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9wZXJmYy5o
PgorI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgorCisjaWZkZWYgQ09ORklHX0RPTUFJ
Tl9QQUdFCisKK3ZvaWQgKm1hcF9kb21haW5fcGFnZSh1bnNpZ25lZCBsb25nIHBmbikKK3sK
KwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCB1bm1hcF9kb21haW5f
cGFnZSh2b2lkICp2YSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKKyNlbmRpZgorCmRpZmYgLXIg
ZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS94ZW4vZmF1bHQuYwotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2Zh
dWx0LmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMTIzIEBA
CisvKg0KKyAqIHRyYXBzLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDExIFNh
bXN1bmcgRWxlY3Ryb25pY3MNCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggPHNidWsuc3Vo
QHNhbXN1bmcuY29tPg0KKyAqICAgICAgICAgIEphZU1pbiBSeXUgICA8am03Ny5yeXVAc2Ft
c3VuZy5jb20+DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoN
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0ENCisgKi8NCisNCisj
aW5jbHVkZSA8eGVuL2NvbmZpZy5oPg0KKyNpbmNsdWRlIDx4ZW4vY29tcGlsZS5oPg0KKyNp
bmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4NCisjaW5jbHVkZSA8eGVuL2luaXQuaD4NCisj
aW5jbHVkZSA8eGVuL3NjaGVkLmg+DQorI2luY2x1ZGUgPHhlbi9saWIuaD4NCisjaW5jbHVk
ZSA8eGVuL2NvbnNvbGUuaD4NCisjaW5jbHVkZSA8eGVuL21tLmg+DQorI2luY2x1ZGUgPHhl
bi9pcnEuaD4NCisjaW5jbHVkZSA8eGVuL3N5bWJvbHMuaD4NCisjaW5jbHVkZSA8YXNtL2N1
cnJlbnQuaD4NCisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KKyNpbmNsdWRlIDxhc20v
Z3Vlc3RfYWNjZXNzLmg+DQorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4NCisjaW5jbHVkZSA8
YXNtL21lbW9yeS5oPg0KKw0KK2FzbWxpbmthZ2Ugdm9pZCBfX2RpdjAodm9pZCkNCit7DQor
ICAgICAgICBwcmludGsoIkRpdmlzaW9uIGJ5IHplcm8gaW4ga2VybmVsLlxuIik7DQorfQ0K
Kw0KK2ludCBmaXh1cF9leGNlcHRpb24oc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQor
ew0KKwlyZXR1cm4gLUVJTlZBTDsNCit9DQorDQordm9pZCBzaG93X3JlZ2lzdGVycyhzdHJ1
Y3QgY3B1X3VzZXJfcmVncyAqY3R4KQ0KK3sNCit9DQorDQordm9pZCBkdW1wX2V4ZWN1dGlv
bl9zdGF0ZSh2b2lkKQ0KK3sNCit9DQorDQordm9pZCBzaG93X2V4ZWN1dGlvbl9zdGF0ZShz
dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCit7DQorCXByaW50aygiTm90IGltcGxlbWVu
dGVkXG4iKTsNCit9DQorDQorc3RhdGljIGludCB2ZXJpZnlfc3RhY2sodW5zaWduZWQgbG9u
ZyBzcCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBiYWNrdHJhY2Uo
c3RydWN0IGNwdV91c2VyX3JlZ3MgKmN0eCkNCit7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHVu
cmVjb3ZlcmFibGVfZmF1bHQoY29uc3QgY2hhciAqc3RyLCBpbnQgZXJyLCBzdHJ1Y3QgdmNw
dSAqdiwgc3RydWN0IGNwdV9jdHggKmN0eCkNCit7DQorCXByaW50aygiVW5yZWNvdmVyYWJs
ZSBGYXVsdCA6ICVzXG4iLCBzdHIpOw0KKw0KKwl3aGlsZSgxKTsNCisNCit9DQorDQorbG9u
ZyBkb19zZXRfY2FsbGJhY2tzKHVuc2lnbmVkIGxvbmcgZXZlbnQsIHVuc2lnbmVkIGxvbmcg
ZmFpbHNhZmUpDQorew0KKwlyZXR1cm4gLUVJTlZBTDsNCisNCit9DQorDQorYXNtbGlua2Fn
ZSB2b2lkIGRvX3ByZWZldGNoX2Fib3J0KHVuc2lnbmVkIGxvbmcgcGMsIHN0cnVjdCBjcHVf
Y3R4ICpjdHgpDQorew0KKwl3aGlsZSgxKTsNCisJdW5yZWNvdmVyYWJsZV9mYXVsdCgicHJl
ZmV0Y2ggYWJvcnQiLCAwLCBjdXJyZW50LCBjdHgpOw0KK30NCisNCithc21saW5rYWdlIHZv
aWQgZG9fZGF0YV9hYm9ydCh1bnNpZ25lZCBsb25nIGZzciwgdW5zaWduZWQgbG9uZyBmYXIs
IHN0cnVjdCBjcHVfY3R4ICpjdHgpDQorew0KKwl3aGlsZSgxKTsNCisJdW5yZWNvdmVyYWJs
ZV9mYXVsdCgiZGF0YSBhYm9ydCIsIDAsIGN1cnJlbnQsIGN0eCk7DQorfQ0KKw0KK2FzbWxp
bmthZ2Ugdm9pZCBkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24odW5zaWduZWQgbG9uZyBwYywg
c3RydWN0IGNwdV9jdHggKmN0eCkNCit7DQorCXdoaWxlKDEpOw0KKwl1bnJlY292ZXJhYmxl
X2ZhdWx0KCJ1bmRlZmluZWQgaW5zdHJ1Y3Rpb24iLCAwLCBjdXJyZW50LCBjdHgpOw0KK30N
CisNCit2b2lkIHZjcHVfc2hvd19leGVjdXRpb25fc3RhdGUoc3RydWN0IHZjcHUgKnYpDQor
ew0KKwlwcmludGsoIk5vdCBpbXBsZW1lbnRlZFxuIik7DQorfQ0KKw0KK2xvbmcgcmVnaXN0
ZXJfZ3Vlc3Rfbm1pX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgYWRkcmVzcykNCit7DQorCXBy
aW50aygiTm90IGltcGxlbWVudGVkIHlldFxuIik7DQorDQorCXJldHVybiAtMTsNCit9DQor
DQordm9pZCB1bnJlZ2lzdGVyX2d1ZXN0X25taV9jYWxsYmFjayh2b2lkKQ0KK3sNCisJcHJp
bnRrKCJOb3QgaW1wbGVtZW50ZWQgeWV0XG4iKTsNCit9DQorDQorbG9uZyBkb19zZXRfdHJh
cF90YWJsZShYRU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KSB0cmFwcykNCit7DQorCXJl
dHVybiAtRUZBVUxUOw0KK30NCisNCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2Fy
bS94ZW4vZ3JhbnRfdGFibGUuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL2dyYW50X3RhYmxlLmMJRnJpIEZl
YiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBncmFu
dF90YWJsZS5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVj
dHJvbmljcworICogICAgICAgICAgU2FuZy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNv
bT4KKyAqICAgICAgICAgIFN1bmdLd2FuIEhlbyA8c2suaGVvQHNhbXN1bmcuY29tPgorICog
ICAgICAgICAgSmFlTWluIFJ5dSAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEt
MTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4v
dHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4vY3B1bWFzay5oPgorI2luY2x1ZGUgPHhlbi9saXN0
Lmg+CisjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgorI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4K
KyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNs
dWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KKyNpbmNsdWRl
IDx4ZW4vaXJxX2NwdXN0YXQuaD4KKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRl
IDx4ZW4vaW9jYXAuaD4KKyNpbmNsdWRlIDx4ZW4vcGVyZmMuaD4KKyNpbmNsdWRlIDx4ZW4v
Z3Vlc3RfYWNjZXNzLmg+CisKKworaW50IGNyZWF0ZV9ncmFudF9ob3N0X21hcHBpbmcodWlu
dDY0X3QgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwgdW5zaWduZWQgaW50IGZsYWdzLCB1
bnNpZ25lZCBpbnQgY2FjaGVfZmxhZ3MpCit7CisJTk9UX1lFVCgpOworCQorCXJldHVybiAt
RUlOVkFMOworfQorCitpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcodWludDY0X3Qg
YWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwgdWludDY0X3QgbmV3X2FkZHIsIHVuc2lnbmVk
IGludCBmbGFncykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gR05UU1RfZ2VuZXJhbF9l
cnJvcjsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL2lvbW11
LmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
eGVuL2FyY2gvYXJtL3hlbi9pb21tdS5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDI0IEBACisKKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8
eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4vc3Ry
aW5nLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+
CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL2lvY2FwLmg+CisjaW5jbHVk
ZSA8YXNtL2lvbW11Lmg+CisKK2ludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk
LCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBm
bGFncykKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworaW50IGlv
bW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCit7
CisJTk9UX1lFVCgpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9CmRpZmYgLXIgZTcwMTQ2MWIx
MjUxIHhlbi9hcmNoL2FybS94ZW4vaXJxLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9pcnEuYwlGcmkgRmVi
IDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIGlycS5j
CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICogICAgICAgICAgU2FuZy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAg
ICAgICAgIEphZU1pbiBSeXUgICA8am03Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEz
MDcgIFVTQQorICovCisKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8eGVu
L3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+
CisjaW5jbHVkZSA8eGVuL2lycS5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1
ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUg
PHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9ldmVudF9jaGFubmVsLmg+CisjaW5j
bHVkZSA8cHVibGljL3BoeXNkZXYuaD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJjaC1hcm0uaD4K
KworaHdfaXJxX2NvbnRyb2xsZXIgbm9faXJxX3R5cGUgPSB7CisJLnR5cGVuYW1lID0gIm5v
bmUiLAorCS5zdGFydHVwICA9IGlycV9zdGFydHVwX25vbmUsCisJLnNodXRkb3duID0gaXJx
X3NodXRkb3duX25vbmUsCisJLmVuYWJsZSAgID0gaXJxX2VuYWJsZV9ub25lLAorCS5kaXNh
YmxlICA9IGlycV9kaXNhYmxlX25vbmUsCit9OworCitzdHJ1Y3QgaXJxX2Rlc2MgKmlycV9k
ZXNjOworCitpbnQgcGlycV9ndWVzdF91bm1hc2soc3RydWN0IGRvbWFpbiAqZCkKK3sKKwlO
T1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHBpcnFfZ3Vlc3RfYmluZChzdHJ1
Y3QgdmNwdSAqdiwgc3RydWN0IHBpcnEgKnBpcnEsIGludCB3aWxsX3NoYXJlKQoreworCU5P
VF9ZRVQoKTsKKworCXJldHVybiAwOworfQorCit2b2lkIHBpcnFfZ3Vlc3RfdW5iaW5kKHN0
cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwaXJxICpwaXJxKQoreworCU5PVF9ZRVQoKTsKK30K
KworCit2b2lkIHBpcnFfc2V0X2FmZmluaXR5KHN0cnVjdCBkb21haW4gKmQsIGludCBwaXJx
LCBjb25zdCBjcHVtYXNrX3QgKm1hc2spCit7CisJTk9UX1lFVCgpOworfQorCisKK3N0cnVj
dCBwaXJxICphbGxvY19waXJxX3N0cnVjdChzdHJ1Y3QgZG9tYWluICpkKQoreworCU5PVF9Z
RVQoKTsKKworCXJldHVybiBOVUxMOworfQorCitpbnQgYXJjaF9pbml0X29uZV9pcnFfZGVz
YyhzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7
Cit9CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2FyY2gvYXJtL3hlbi9tYWNoaW5lX2tl
eGVjLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIveGVuL2FyY2gvYXJtL3hlbi9tYWNoaW5lX2tleGVjLmMJRnJpIEZlYiAwMyAxNjowNzow
MyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzEgQEAKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+
CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1
ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4v
Y29uc29sZS5oPgorI2luY2x1ZGUgPHhlbi9rZXhlYy5oPgorI2luY2x1ZGUgPHhlbi9kb21h
aW5fcGFnZS5oPgorCitpbnQgbWFjaGluZV9rZXhlY19sb2FkKGludCB0eXBlLCBpbnQgc2xv
dCwgeGVuX2tleGVjX2ltYWdlX3QgKmltYWdlKQoreworICAgIHJldHVybiAtRUlOVkFMOwor
fQorCit2b2lkIG1hY2hpbmVfa2V4ZWNfdW5sb2FkKGludCB0eXBlLCBpbnQgc2xvdCwgeGVu
X2tleGVjX2ltYWdlX3QgKmltYWdlKQoreworfQorCit2b2lkIG1hY2hpbmVfcmVib290X2tl
eGVjKHhlbl9rZXhlY19pbWFnZV90ICppbWFnZSkKK3sKK30KKwordm9pZCBtYWNoaW5lX2tl
eGVjKHhlbl9rZXhlY19pbWFnZV90ICppbWFnZSkKK3sKK30KKworaW50IG1hY2hpbmVfa2V4
ZWNfZ2V0KHhlbl9rZXhlY19yYW5nZV90ICpyYW5nZSkKK3sKKwlyZXR1cm4gLUVJTlZBTDsK
K30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL21tLmMKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9tbS5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsx
LDE5NCBAQAorLyoKKyAqIG1tLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBTYW5nLWJ1bSBTdWggIDxzYnVrLnN1
aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIEphZU1pbiBSeXUgICAgPGptNzcucnl1QHNh
bXN1bmcuY29tPgorICogICAgICAgICAgU3VuZ0t3YW4gSGVvICA8c2suaGVvQHNhbXN1bmcu
Y29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0
b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8eGVuL2xpYi5oPgor
I2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+CisjaW5j
bHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CisjaW5jbHVkZSA8
eGVuL3N0cmluZy5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9z
Y2hlZC5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9kb21haW5fcGFn
ZS5oPgorI2luY2x1ZGUgPHhlbi9pcnFfY3B1c3RhdC5oPgorI2luY2x1ZGUgPHhlbi9ldmVu
dC5oPgorI2luY2x1ZGUgPHhlbi9pb2NhcC5oPgorI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgor
I2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKworI2RlZmluZSBWRVJCT1NFIDEKKwor
I2RlZmluZSBNTVVfVVBEQVRFX1BSRUVNUFRFRCAgICAgICAgICAofih+MFUgPj4gMSkpCisK
K3N0YXRpYyB1bnNpZ25lZCBsb25nIG1wdF9zaXplOworCisvKiBGcmFtZSB0YWJsZSBhbmQg
aXRzIHNpemUgaW4gcGFnZXMuICovCitzdHJ1Y3QgcGFnZV9pbmZvICpmcmFtZV90YWJsZTsK
K3Vuc2lnbmVkIGxvbmcgbWluX3BhZ2UgPSB+MFVMOzsKK3Vuc2lnbmVkIGxvbmcgbWF4X3Bh
Z2UgPSAwVUw7CisKK3Vuc2lnbmVkIGxvbmcgeGVuaGVhcF9waHlzX3N0YXJ0ID0gfjBVTDsK
K3Vuc2lnbmVkIGxvbmcgeGVuaGVhcF9waHlzX2VuZCA9IDBVTDsKKwordW5zaWduZWQgbG9u
ZyB4ZW5fcGh5c19zdGFydCA9IH4wVUw7Cit1bnNpZ25lZCBsb25nIHhlbl9waHlzX2VuZCA9
IDBVTDsKKworI2lmZGVmIE1FTU9SWV9HVUFSRAordm9pZCBtZW1ndWFyZF9pbml0KHZvaWQp
Cit7CisJTk9UX1lFVCgpOworfQorCit2b2lkIG1lbWd1YXJkX2d1YXJkX3JhbmdlKHZvaWQg
KnAsIHVuc2lnbmVkIGxvbmcgbCkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgbWVtZ3Vh
cmRfdW5ndWFyZF9yYW5nZSh2b2lkICpwLCB1bnNpZ25lZCBsb25nIGwpCit7CisJTk9UX1lF
VCgpOworfQorCisjZW5kaWYKKwordm9pZCBwdXRfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpw
YWdlKQoreworCU5PVF9ZRVQoKTsKK30KKworc3RydWN0IGRvbWFpbiAqcGFnZV9nZXRfb3du
ZXJfYW5kX3JlZmVyZW5jZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQoreworCU5PVF9ZRVQo
KTsKK30KKworaW50IGdldF9wYWdlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBk
b21haW4gKmRvbWFpbikKK3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKK30KKwordm9p
ZCBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHN0
cnVjdCBkb21haW4gKmQsIGludCByZWFkb25seSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3Zv
aWQgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9wcml2aWxlZ2VkX2d1ZXN0cyhzdHJ1Y3QgcGFnZV9p
bmZvICpwYWdlLCBpbnQgcmVhZG9ubHkpCit7CisJTk9UX1lFVCgpOworfQorCitzdGF0aWMg
aW50IHBpbl9wYWdlX3RhYmxlKHUzMiBtZm4sIHN0cnVjdCBkb21haW4gKmQpCit7CisJTk9U
X1lFVCgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdW5waW5fcGFnZV90YWJs
ZSh1MzIgbWZuLCBzdHJ1Y3QgZG9tYWluICpkKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVy
biAwOworfQorCit2b2lkIGZyZWVfcGFnZV90eXBlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Us
IHVuc2lnbmVkIGxvbmcgdHlwZSkKK3sKKwlOT1RfWUVUKCk7Cit9CisKK3ZvaWQgcHV0X3Bh
Z2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQoreworCU5PVF9ZRVQoKTsKK30KKwor
CitpbnQgZ2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBs
b25nIHR5cGUpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBkb19t
bXVleHRfb3AoWEVOX0dVRVNUX0hBTkRMRShtbXVleHRfb3BfdCkgdW9wcywgdW5zaWduZWQg
aW50IGNvdW50LAorCQkgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBwZG9uZSwgdW5zaWduZWQg
aW50IGZvcmVpZ25kb20pCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9
CisKK2ludCBkb19tbXVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEUobW11X3VwZGF0ZV90KSB1
cmVxcywKKwkJICB1bnNpZ25lZCBpbnQgY291bnQsIAorCQkgIFhFTl9HVUVTVF9IQU5ETEUo
dWludCkgcGRvbmUsCisJCSAgdW5zaWduZWQgaW50IGZvcmVpZ25kb20pCit7CisJTk9UX1lF
VCgpOworCisgICAgICAgIHJldHVybiAtRUlOVkFMOworfQorCitpbnQgZG9fdXBkYXRlX3Zh
X21hcHBpbmcodTMyIHZhLCB1MzIgZmxhZ3MsIHU2NCB2YWw2NCkKK3sKKwlOT1RfWUVUKCk7
CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworbG9uZyBhcmNoX21lbW9yeV9vcChpbnQgb3As
IFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVy
biAtRUlOVkFMOworfQorCisKKworaW50IHN0ZWFsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg
c3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgaW50IG1lbWZsYWdzKQoreworCU5P
VF9ZRVQoKTsKKworCXJldHVybiAtRUlOVkFMOworfQorCitpbnQgZG9uYXRlX3BhZ2Uoc3Ry
dWN0IGRvbWFpbiAqZCwgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgaW50IG1l
bWZsYWdzKQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAtRUlOVkFMOworfQorCisKK3Vu
c2lnbmVkIGxvbmcgZG9tYWluX2dldF9tYXhpbXVtX2dwZm4oc3RydWN0IGRvbWFpbiAqZCkK
K3sKKwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMHhGRkZGRkZGRjsKK30KKworaW50IHBhZ2Vf
aXNfcmFtX3R5cGUodW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGxvbmcgbWVtX3R5cGUp
Cit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9CmRpZmYgLXIgZTcwMTQ2
MWIxMjUxIHhlbi9hcmNoL2FybS94ZW4vcDJtLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9wMm0uYwlGcmkg
RmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIHAy
bS5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICogICAgICAgICAgU2FuZy1idW0gU3VoICA8c2J1ay5zdWhAc2Ftc3VuZy5jb20+Cisg
KiAgICAgICAgICBKYWVNaW4gUnl1ICAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqICAg
ICAgICAgIFN1bmdLd2FuIEhlbyAgPHNrLmhlb0BzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMw
NyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGFzbS9kb21haW4uaD4KKyNpbmNsdWRlIDxhc20v
cGFnZS5oPgorI2luY2x1ZGUgPGFzbS9wYWdpbmcuaD4KKyNpbmNsdWRlIDxhc20vcDJtLmg+
CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisKK2ludCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2Vy
dmF0aW9uKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhlbl9wZm5fdCBncGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgb3JkZXIpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBn
dWVzdF9waHlzbWFwX21hcmtfcG9wdWxhdGVfb25fZGVtYW5kKHN0cnVjdCBkb21haW4gKmQs
IHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCit7CisJTk9UX1lFVCgpOworCisJcmV0dXJuIDA7
Cit9CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9hcmNoL2FybS94ZW4vcGNpLmMKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gv
YXJtL3hlbi9wY2kuYwlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCAr
MSw3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogcGNpLmMKKyAqIAorICog
QXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBQQ0kgYWNjZXNzIGZ1bmN0aW9ucy4KKyAqLworCisj
aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3BjaS5oPgorI2luY2x1
ZGUgPGFzbS9pby5oPgorCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHBjaV9jb25maWdfbG9j
ayk7CisKK3VpbnQzMl90IHBjaV9jb25mX3JlYWQodWludDMyX3QgY2Y4LCB1aW50OF90IG9m
ZnNldCwgdWludDhfdCBieXRlcykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAg
IHVpbnQzMl90IHZhbHVlOworCisgICAgQlVHX09OKChvZmZzZXQgKyBieXRlcykgPiA0KTsK
KworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwY2lfY29uZmlnX2xvY2ssIGZsYWdzKTsKKwor
ICAgIG91dGwoY2Y4LCAweGNmOCk7CisKKyAgICBzd2l0Y2ggKCBieXRlcyApCisgICAgewor
ICAgIGNhc2UgMToKKyAgICAgICAgdmFsdWUgPSBpbmIoMHhjZmMgKyBvZmZzZXQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIHZhbHVlID0gaW53KDB4Y2ZjICsg
b2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICB2YWx1ZSA9
IGlubCgweGNmYyArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgQlVHKCk7CisgICAgfQorCisgICAgc3Bpbl91
bmxvY2tfaXJxcmVzdG9yZSgmcGNpX2NvbmZpZ19sb2NrLCBmbGFncyk7CisKKyAgICByZXR1
cm4gdmFsdWU7Cit9CisKK3ZvaWQgcGNpX2NvbmZfd3JpdGUodWludDMyX3QgY2Y4LCB1aW50
OF90IG9mZnNldCwgdWludDhfdCBieXRlcywgdWludDMyX3QgZGF0YSkKK3sKKyAgICB1bnNp
Z25lZCBsb25nIGZsYWdzOworCisgICAgQlVHX09OKChvZmZzZXQgKyBieXRlcykgPiA0KTsK
KworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwY2lfY29uZmlnX2xvY2ssIGZsYWdzKTsKKwor
ICAgIG91dGwoY2Y4LCAweGNmOCk7CisKKyAgICBzd2l0Y2ggKCBieXRlcyApCisgICAgewor
ICAgIGNhc2UgMToKKyAgICAgICAgb3V0YigodWludDhfdClkYXRhLCAweGNmYyArIG9mZnNl
dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgb3V0dygodWludDE2
X3QpZGF0YSwgMHhjZmMgKyBvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6
CisgICAgICAgIG91dGwoZGF0YSwgMHhjZmMgKyBvZmZzZXQpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2lfY29uZmlnX2xvY2ss
IGZsYWdzKTsKK30KKworCisjZGVmaW5lIFBDSV9DT05GX0FERFJFU1MoYnVzLCBkZXYsIGZ1
bmMsIHJlZykgXAorICAgICgweDgwMDAwMDAwIHwgKGJ1cyA8PCAxNikgfCAoZGV2IDw8IDEx
KSB8IChmdW5jIDw8IDgpIHwgKHJlZyAmIH4zKSkKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4
ZW4vYXJjaC9hcm0veGVuL3BlcmZtb24uYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL3BlcmZtb24uYwlGcmkg
RmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyNiBAQAorI2luY2x1ZGUg
PHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9l
cnJuby5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL25taS5oPgor
I2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KKyNpbmNsdWRlIDx4ZW4vZGVsYXkuaD4KKyNpbmNs
dWRlIDx4ZW4veGVub3Byb2YuaD4KKyNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CisKKworaW50
IHhlbm9wcm9mX2FyY2hfY291bnRlcihYRU5fR1VFU1RfSEFORExFKHZvaWQpIGFyZykKK3sK
KwlOT1RfWUVUKCk7CisKKwlyZXR1cm4gMDsKK30KKworCitpbnQgeGVub3Byb2ZfYXJjaF9p
YnNfY291bnRlcihYRU5fR1VFU1RfSEFORExFKHZvaWQpIGFyZykKK3sKKwlOT1RfWUVUKCk7
CisKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0v
eGVuL3NldHVwLmMKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2FyY2gvYXJtL3hlbi9zZXR1cC5jCUZyaSBGZWIgMDMgMTY6MDc6MDMg
MjAxMiArMDkwMApAQCAtMCwwICsxLDY0IEBACisvKgorICogc2V0dXAuYworICoKKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICAgICAgICAg
IFNhbmctYnVtIFN1aCAgIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAJICAgIEph
ZW1pbiBSeXUgICAgIDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIEpvb1lv
dW5nIEh3YW5nIDxqb295b3VuZy5od2FuZ0BzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAg
VVNBCisgKi8KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vaW5p
dC5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2lu
Y2x1ZGUgPHhlbi9jb21waWxlLmg+CisjaW5jbHVkZSA8eGVuL3N0cmluZy5oPgorI2luY2x1
ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vcHJlZW1wdC5oPgorI2luY2x1ZGUgPHB1
YmxpYy92ZXJzaW9uLmg+CisjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+CisKKworc3RydWN0
IGRvbWFpbiBfZG9tX3hlbiA9IHsKKyAgICAgICAgLnJlZmNudCA9IEFUT01JQ19JTklUKDEp
LAorICAgICAgICAuZG9tYWluX2lkID0gRE9NSURfWEVOLAorICAgICAgICAuZG9tYWluX2xv
Y2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQsCit9OworCitzdHJ1Y3QgZG9tYWluIF9kb21faW8g
PSB7CisgICAgICAgIC5yZWZjbnQgPSBBVE9NSUNfSU5JVCgxKSwKKyAgICAgICAgLmRvbWFp
bl9pZCA9IERPTUlEX0lPLAorICAgICAgICAuZG9tYWluX2xvY2sgPSBTUElOX0xPQ0tfVU5M
T0NLRUQsCit9OworCitzdHJ1Y3QgZG9tYWluIF9kb21fY293ID0geworICAgICAgICAucmVm
Y250ID0gQVRPTUlDX0lOSVQoMSksCisgICAgICAgIC5kb21haW5faWQgPSBET01JRF9DT1cs
CisgICAgICAgIC5kb21haW5fbG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRCwKK307CisKK3N0
cnVjdCBkb21haW4gKmRvbV94ZW4gPSAmX2RvbV94ZW47CitzdHJ1Y3QgZG9tYWluICpkb21f
aW8gPSAmX2RvbV9pbzsKK3N0cnVjdCBkb21haW4gKmRvbV9jb3cgPSAmX2RvbV9jb3c7CisK
K3ZvaWQgYXJjaF9nZXRfeGVuX2NhcHMoeGVuX2NhcGFiaWxpdGllc19pbmZvX3QgKmluZm8p
Cit7Cit9CisKK2FzbWxpbmthZ2Ugdm9pZCBzdGFydF94ZW4odm9pZCkKK3sKK30KKwpkaWZm
IC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL3NodXRkb3duLmMKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2FyY2gvYXJt
L3hlbi9zaHV0ZG93bi5jCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCww
ICsxLDM4IEBACisvKgorICogc2h1dGRvd24uYworICoKKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICAgICAgICAgIFNhbmctYnVtIFN1aCA8
c2J1ay5zdWhAc2Ftc3VuZy5jb20+CisgKiAgICAgICAgICBKYWVNaW4gUnl1ICAgPGptNzcu
cnl1QHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8
eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGli
Lmg+CisjaW5jbHVkZSA8eGVuL3NodXRkb3duLmg+CisKK3ZvaWQgbWFjaGluZV9oYWx0KHZv
aWQpCit7CisJcHJpbnRrKCJtYWNoaW5lX2hhbHQgY2FsbGVkOiBzcGlubmluZy4uLi5cbiIp
OworCXdoaWxlKDEpOworfQorCit2b2lkIG1hY2hpbmVfcmVzdGFydCh1bnNpZ25lZCBpbnQg
ZGVsYXlfbWlsbGlzZWNzKQoreworCXByaW50aygibWFjaGluZV9yZXN0YXJ0IGNhbGxlZDog
c3Bpbm5pbmcuLi4uXG4iKTsKKwl3aGlsZSgxKTsKK30KKwpkaWZmIC1yIGU3MDE0NjFiMTI1
MSB4ZW4vYXJjaC9hcm0veGVuL3RpbWUuYwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vYXJjaC9hcm0veGVuL3RpbWUuYwlGcmkgRmVi
IDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIHRpbWUu
YyAKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
IAorICogICAgICAgICAgU2FuZy1idW0gU3VoICAgIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4K
KyAqICAgICAgICAgIEpvb1lvdW5nIEh3YW5nICA8am9veW91bmcuaHdhbmdAc2Ftc3VuZy5j
b20+CisgKiAgICAgICAgICBKYWVtaW4gUnl1ICAgICAgPGptNzcucnl1QHNhbXN1bmcuY29t
PgorICogCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cisj
aW5jbHVkZSA8eGVuL3RpbWUuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRl
IDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorI2luY2x1ZGUgPGFz
bS90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisjaW5jbHVkZSA8YXNtL2Rp
djY0Lmg+CisjaW5jbHVkZSA8YXNtL3RpbWUuaD4KKwordm9pZCBzZW5kX3RpbWVyX2V2ZW50
KHN0cnVjdCB2Y3B1ICp2KQoreworCU5PVF9ZRVQoKTsKK30KKworaW50IHJlcHJvZ3JhbV90
aW1lcihzX3RpbWVfdCB0aW1lb3V0KQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAxOwor
fQorCit2b2lkIHNtcF9icm9hZGNhc3RfdGltZXIodm9pZCkKK3sKKwlOT1RfWUVUKCk7Cit9
CisKK3ZvaWQgdXBkYXRlX3ZjcHVfc3lzdGVtX3RpbWUoc3RydWN0IHZjcHUgKnYpCit7CisJ
Tk9UX1lFVCgpOworCisJcmV0dXJuOworfQorCit2b2lkIGRvX3NldHRpbWUodW5zaWduZWQg
bG9uZyBzZWNzLCB1bnNpZ25lZCBsb25nIG5zZWNzLCB1NjQgc3lzdGVtX3RpbWVfYmFzZSkK
K3sKKwlOT1RfWUVUKCk7Cit9CisKK3N0cnVjdCB0bSB3YWxsY2xvY2tfdGltZSh2b2lkKQor
eworCXJldHVybiBnbXRpbWUoMCk7Cit9CisKKworc190aW1lX3QgZ2V0X3NfdGltZSh2b2lk
KQoreworCU5PVF9ZRVQoKTsKKworCXJldHVybiAwOworfQorCit2b2lkIGRvbWFpbl9zZXRf
dGltZV9vZmZzZXQoc3RydWN0IGRvbWFpbiAqZCwgaW50MzJfdCB0aW1lX29mZnNldF9zZWNv
bmRzKQoreworCU5PVF9ZRVQoKTsKK30KKwordm9pZCB0aW1la2VlcGluZ19pbml0KHZvaWQp
Cit7CisJTk9UX1lFVCgpOworfQpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0v
eGVuL3RsYi5jCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3hlbi9hcmNoL2FybS94ZW4vdGxiLmMJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEy
ICswOTAwCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiB0bGIuYworICoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqICAgICAgICAgIFNhbmct
YnVtIFN1aCA8c2J1ay5zdWhAc2Ftc3VuZy5jb20+CisgKiAgICAgICAgICBKYWVNaW4gUnl1
ICAgPGptNzcucnl1QHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIg
b2YgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lu
Y2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUg
PHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CisKK3UzMiB0bGJmbHVz
aF9jbG9jayA9IDFVOwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vYXJjaC9hcm0veGVuL3hl
bi5sZHMuUwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi94ZW4vYXJjaC9hcm0veGVuL3hlbi5sZHMuUwlGcmkgRmViIDAzIDE2OjA3OjAzIDIw
MTIgKzA5MDAKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiB4ZW4ubGRzLlMKKyAqCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggU2Ftc3VuZyBFbGVjdHJvbmljcworICogICAgICAgICAgU2Fu
Zy1idW0gU3VoIDxzYnVrLnN1aEBzYW1zdW5nLmNvbT4KKyAqICAgICAgICAgIENoYW5KdSBQ
YXJrICA8YmVzdHdvcmxkQHNhbXN1bmcuY29tPgorICogICAgICAgICAgSmFlTWluIFJ5dSAg
IDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9m
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lu
Y2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorCitPVVRQVVRf
QVJDSChhcm0pCitFTlRSWShzdGFydCkKKworU0VDVElPTlMKK3sKKwkuID0gMHhGRjAwODAw
MDsKKwlfc3RhcnQgPSAuOworCS50ZXh0IDogeworCQlfc3RleHQgPSAuOworCQkqKC5oZWFk
KQorCQkqKC50ZXh0KQorCQkqKC5maXh1cCkKKwkJKiguZ251Lndhcm5pbmcpCisJCV9ldGV4
dCA9IC47CisJfQorCisJLnJvZGF0YSA6IHsKKwkJKigucm9kYXRhKQorCQkqKC5yb2RhdGEu
KikKKwl9CisKKwkuID0gQUxJR04oMzIpOworCS5kYXRhLnJlYWRfbW9zdGx5IDogeworCQkv
KiBFeGNlcHRpb24gdGFibGUgKi8KKwkJX3NleHRhYmxlID0gLjsKKwkJX19zdGFydF9fX2V4
X3RhYmxlID0gLjsKKwkJKiguZXhfdGFibGUpCisJCV9fc3RvcF9fX2V4X3RhYmxlID0gLjsK
KworCQkvKiBQcmUtZXhjZXB0aW9uIHRhYmxlICovCisJCV9fc3RhcnRfX19wcmVfZXhfdGFi
bGUgPSAuOworCQkqKC5leF90YWJsZS5wcmUpCisJCV9fc3RvcF9fX3ByZV9leF90YWJsZSA9
IC47CisJCV9lZXh0YWJsZSA9IC47CisJCSooLmRhdGEucmVhZF9tb3N0bHkpCisJCSooLmRh
dGEucmVsLnJvKQorCQkqKC5kYXRhLnJlbC5yby4qKQorCX0gCisKKwkuID0gQUxJR04oUEFH
RV9TSVpFKTsKKwkuZGF0YSA6IHsKKwkJX3NkYXRhID0gLjsKKwkJKiguZGF0YSkKKwkJKigu
ZGF0YS5yZWwpCisJCSooLmRhdGEucmVsLiopCisJCV9lZGF0YSA9IC47CisJfQorCisJLiA9
IEFMSUdOKFBBR0VfU0laRSk7ICAgICAgICAgICAgIC8qIEluaXQgY29kZSBhbmQgZGF0YSAq
LworCV9faW5pdF9iZWdpbiA9IC47CisKKwkuaW5pdC50ZXh0IDogeworCQlfc2luaXR0ZXh0
ID0gLjsKKwkJKiguaW5pdC50ZXh0KSAKKwkJX2Vpbml0dGV4dCA9IC47CisJfQorCisJLmlu
aXQuZGF0YSA6IHsKKwkJX3Npbml0ZGF0YSA9IC47CisJCSooLmluaXQucm9kYXRhKQorCQkq
KC5pbml0LnJvZGFhdGEuc3RyKikKKwkJKiguaW5pdC5kYXRhKQorCQkqKC5pbml0LmRhdGEu
cmVsKQorCQkqKC5pbml0LmRhdGEucmVsLiopCisJCV9laW5pdGRhdGEgPSAuOworCX0KKwor
CS4gPSBBTElHTigzMik7CisJLmluaXQubWVtdGFibGUgOiB7CisJCV9zbWVtdGFibGUgPSAu
OworCQkqKC5pbml0Lm1lbXRhYmxlKQorCQkqKC5pbml0Lm1lbXRhYmxlLiopCisJCV9lbWVt
dGFibGUgPSAuOworCX0KKworCS4gPSBBTElHTigzMik7CisJLmluaXQuc2V0dXAgOiB7CisJ
CV9zaW5pdHNldHVwID0gLjsKKwkJX19zZXR1cF9zdGFydCA9IC47CisJCSooLmluaXQuc2V0
dXApIAorCQlfX3NldHVwX2VuZCA9IC47CisJCV9laW5pdHNldHVwID0gLjsKKwl9CisKKwku
aW5pdGNhbGwuaW5pdCA6IHsKKwkJX3Npbml0Y2FsbCA9IC47CisJCV9faW5pdGNhbGxfc3Rh
cnQgPSAuOworCQkqKC5pbml0Y2FsbHByZXNtcC5pbml0KQorCQlfX3ByZXNtcF9pbml0Y2Fs
bF9lbmQgPSAuOworCQkqKC5pbml0Y2FsbDEuaW5pdCkgCisJCV9faW5pdGNhbGxfZW5kID0g
LjsKKwkJX2Vpbml0Y2FsbCA9IC47CisJfQorCisJLnhzbV9pbml0Y2FsbC5pbml0IDogewor
CQlfc3hzbV9pbml0Y2FsbCA9IC47CisJCV9feHNtX2luaXRjYWxsX3N0YXJ0ID0gLjsKKwkJ
KigueHNtX2luaXRjYWxsLmluaXQpCisJCV9feHNtX2luaXRjYWxsX2VuZCA9IC47CisJCV9l
eHNtX2luaXRjYWxsID0gLjsKKwl9CisJX19pbml0X2VuZCA9IC47CisKKwkuID0gQUxJR04o
UEFHRV9TSVpFKTsKKworCS5ic3MgOiB7CisJCV9zYnNzID0gLjsJCS8qIEJTUyAqLworCQlf
X2Jzc19zdGFydCA9IC47CisJCSooLmJzcy5wYWdlX2FsaWduZWQpCisJCSooLmJzcy5zdGFj
a19hbGlnbmVkKQorCQkqKC5ic3MucGVyY3B1KQorCQkqKC5ic3MpCisJCV9fYnNzX2VuZCA9
IC47CisJCV9lYnNzID0gLjsKKwl9CisJX2VuZCA9IC4gOworCS8qIFNlY3Rpb25zIHRvIGJl
IGRpc2NhcmRlZCAqLworCisgIAkvRElTQ0FSRC8gOiB7CisgIAkJKigudGV4dC5leGl0KQor
CQkqKC5kYXRhLmV4aXQpCisJCSooLmV4aXRjYWxsLmV4aXQpCisJfQorCS8qIFN0YWJzIGRl
YnVnZ2luZyBzZWN0aW9ucy4gICovCisJLnN0YWIgMCA6IHsgKiguc3RhYikgfQorCS5zdGFi
c3RyIDAgOiB7ICooLnN0YWJzdHIpIH0KKwkuc3RhYi5leGNsIDAgOiB7ICooLnN0YWIuZXhj
bCkgfQorCS5zdGFiLmV4Y2xzdHIgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CisJLnN0YWIu
aW5kZXggMCA6IHsgKiguc3RhYi5pbmRleCkgfQorCS5zdGFiLmluZGV4c3RyIDAgOiB7ICoo
LnN0YWIuaW5kZXhzdHIpIH0KKwkuY29tbWVudCAwIDogeyAqKC5jb21tZW50KSB9CisJCit9
CisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9hY3BpLmgKLS0t
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLWFybS9hY3BpLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBA
IC0wLDAgKzEsOCBAQAorI2lmbmRlZiBfX0FSTV9BQ1BJX0hfXworI2RlZmluZSBfX0FSTV9B
Q1BJX0hfXworCisjZGVmaW5lIENPTVBJTEVSX0RFUEVOREVOVF9JTlQ2NCAgIGxvbmcgbG9u
ZworI2RlZmluZSBDT01QSUxFUl9ERVBFTkRFTlRfVUlOVDY0ICB1bnNpZ25lZCBsb25nIGxv
bmcKKworI2VuZGlmIC8qIV9fQVJNX0FDUElfSF9fICovCisKZGlmZiAtciBlNzAxNDYxYjEy
NTEgeGVuL2luY2x1ZGUvYXNtLWFybS9hc20tbWFjcm9zLmgKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9h
c20tbWFjcm9zLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEs
MTA2IEBACisjaWZuZGVmIF9fQVJNX0FTTV9NQUNST1NfSF9fCisjZGVmaW5lIF9fQVJNX0FT
TV9NQUNST1NfSF9fCisKKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisKKyNpZmRlZiBfX0FT
U0VNQkxZX18KKy8qCisgKiBFbmRpYW4gaW5kZXBlbmRlbnQgbWFjcm9zIGZvciBzaGlmdGlu
ZyBieXRlcyB3aXRoaW4gcmVnaXN0ZXJzLgorICovCisjaWZuZGVmIF9fQVJNRUJfXworI2Rl
ZmluZSBwdWxsICAgICAgICAgICAgbHNyCisjZGVmaW5lIHB1c2ggICAgICAgICAgICBsc2wK
KyNkZWZpbmUgZ2V0X2J5dGVfMCAgICAgIGxzbCAjMAorI2RlZmluZSBnZXRfYnl0ZV8xICAg
ICAgbHNyICM4CisjZGVmaW5lIGdldF9ieXRlXzIgICAgICBsc3IgIzE2CisjZGVmaW5lIGdl
dF9ieXRlXzMgICAgICBsc3IgIzI0CisjZGVmaW5lIHB1dF9ieXRlXzAgICAgICBsc2wgIzAK
KyNkZWZpbmUgcHV0X2J5dGVfMSAgICAgIGxzbCAjOAorI2RlZmluZSBwdXRfYnl0ZV8yICAg
ICAgbHNsICMxNgorI2RlZmluZSBwdXRfYnl0ZV8zICAgICAgbHNsICMyNAorI2Vsc2UKKyNk
ZWZpbmUgcHVsbCAgICAgICAgICAgIGxzbAorI2RlZmluZSBwdXNoICAgICAgICAgICAgbHNy
CisjZGVmaW5lIGdldF9ieXRlXzAgICAgICBsc3IgIzI0CisjZGVmaW5lIGdldF9ieXRlXzEg
ICAgICBsc3IgIzE2CisjZGVmaW5lIGdldF9ieXRlXzIgICAgICBsc3IgIzgKKyNkZWZpbmUg
Z2V0X2J5dGVfMyAgICAgIGxzbCAjMAorI2RlZmluZSBwdXRfYnl0ZV8wICAgICAgbHNsICMy
NAorI2RlZmluZSBwdXRfYnl0ZV8xICAgICAgbHNsICMxNgorI2RlZmluZSBwdXRfYnl0ZV8y
ICAgICAgbHNsICM4CisjZGVmaW5lIHB1dF9ieXRlXzMgICAgICBsc2wgIzAKKyNlbmRpZgor
CisjZGVmaW5lIFBMRChjb2RlLi4uKQljb2RlCisKKyNkZWZpbmUgQ1RYVF9SMAkJMAorI2Rl
ZmluZSBDVFhUX1IxCQk0CisjZGVmaW5lIENUWFRfUjIJCTgKKyNkZWZpbmUgQ1RYVF9SMwkJ
MTIKKyNkZWZpbmUgQ1RYVF9SNAkJMTYKKyNkZWZpbmUgQ1RYVF9SNQkJMjAKKyNkZWZpbmUg
Q1RYVF9SNgkJMjQKKyNkZWZpbmUgQ1RYVF9SNwkJMjgKKyNkZWZpbmUgQ1RYVF9SOAkJMzIK
KyNkZWZpbmUgQ1RYVF9SOQkJMzYKKyNkZWZpbmUgQ1RYVF9SMTAJNDAKKyNkZWZpbmUgQ1RY
VF9SMTEJNDQKKyNkZWZpbmUgQ1RYVF9SMTIJNDgKKyNkZWZpbmUgQ1RYVF9VU1AJNTIKKyNk
ZWZpbmUgQ1RYVF9VTFIJNTYKKyNkZWZpbmUgQ1RYVF9TU1AJNjAKKyNkZWZpbmUgQ1RYVF9T
TFIJNjQKKyNkZWZpbmUgQ1RYVF9QQwkJNjgKKyNkZWZpbmUgQ1RYVF9TUFNSCTcyCisjZGVm
aW5lIENUWFRfRVhUUkEJNzYKKyNkZWZpbmUgQ1RYVF9GUkFNRV9TSVpFCTgwCisKKyNkZWZp
bmUgU1BGSVgoY29kZS4uLikJY29kZQorCisubWFjcm8gIGRpc2FibGVfaXJxLCB0ZW1wCisJ
bXNyCWNwc3JfYywgI1BTUl9JX0JJVCB8IFBTUl9NT0RFX1NWQworLmVuZG0KKworLm1hY3Jv
CWNjaQlyZAorCW1vdglccmQsICNTVEFDS19TSVpFCisJc3ViCVxyZCwgXHJkLCAjMQorCWJp
YwlccmQsIHIxMywgXHJkCisuZW5kbQorCisvKgorICogU2F2ZSB0aGUgY3VycmVudCBJUlEg
c3RhdGUgYW5kIGRpc2FibGUgSVJRcy4gIE5vdGUgdGhhdCB0aGlzIG1hY3JvCisgKiBhc3N1
bWVzIEZJUXMgYXJlIGVuYWJsZWQsIGFuZCB0aGF0IHRoZSBwcm9jZXNzb3IgaXMgaW4gU1ZD
IG1vZGUuCisgKi8KKy5tYWNybwlzYXZlX2FuZF9kaXNhYmxlX2lycXMsIG9sZGNwc3IsIHRl
bXAKKwltcnMJXG9sZGNwc3IsIGNwc3IKKwltb3YJXHRlbXAsICNQU1JfSV9CSVQgfCBQU1Jf
TU9ERV9TVkMKKwltc3IJY3Bzcl9jLCBcdGVtcAorLmVuZG0KKworLyoKKyAqIFJlc3RvcmUg
aW50ZXJydXB0IHN0YXRlIHByZXZpb3VzbHkgc3RvcmVkIGluIGEgcmVnaXN0ZXIuICBXZSBk
b24ndAorICogZ3VhcmFudGVlIHRoYXQgdGhpcyB3aWxsIHByZXNlcnZlIHRoZSBmbGFncy4K
KyAqLworLm1hY3JvCXJlc3RvcmVfaXJxcywgb2xkY3BzcgorCW1zcgljcHNyX2MsIFxvbGRj
cHNyCisuZW5kbQorCisjZGVmaW5lIFVTRVIoeC4uLikJCQkJXAorOTk5OToJeDsJCQkJCVwK
Kwkuc2VjdGlvbiAuZXh0YWJsZSwiYSI7CQlcCisJLmFsaWduCTM7CQkJCVwKKwkubG9uZwk5
OTk5Yiw5MDAxZjsJCQlcCisJLnByZXZpb3VzCisKKyNkZWZpbmUgX19BTElHTiAgICAgICAg
IC5hbGlnbiAwCisjZGVmaW5lIF9fQUxJR05fU1RSICAgICAiLmFsaWduIDAsIDB4OTAiCisK
KyNkZWZpbmUgQUxJR04gICAgICAgICAgIF9fQUxJR04KKyNkZWZpbmUgQUxJR05fU1RSICAg
ICAgIF9fQUxJR05fU1RSCisKKyNkZWZpbmUgRU5UUlkobmFtZSkgXAorICAuZ2xvYmFsIG5h
bWU7IFwKKyAgQUxJR047IFwKKyAgbmFtZToKKyNlbmRpZgorI2VuZGlmIC8qIF9fQVJNX0FT
TV9NQUNST1NfSF9fICovCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1h
cm0vYXRvbWljLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9hdG9taWMuaAlGcmkgRmViIDAzIDE2OjA3
OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxNzkgQEAKKyNpZm5kZWYgX19BUk1fQVRPTUlD
X0hfXworI2RlZmluZSBfX0FSTV9BVE9NSUNfSF9fCisKKyNpZm5kZWYgX19BU1NFTUJMWV9f
CisjZGVmaW5lIHJlYWRfYXRvbWljKHApIAkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl0eXBl
b2YoKnApIF9feDsJCQkJCQkJXAorCXN3aXRjaCAoIHNpemVvZigqcCkgKSB7CQkJCQkJXAor
CWNhc2UgMTogX194ID0gKHR5cGVvZigqcCkpYXRvbWljX3JlYWQ4KCh1aW50OF90ICopcCk7
IGJyZWFrOwlcCisJY2FzZSAyOiBfX3ggPSAodHlwZW9mKCpwKSlhdG9taWNfcmVhZDE2KCh1
aW50MTZfdCAqKXApOyBicmVhazsJXAorCWNhc2UgNDogX194ID0gKHR5cGVvZigqcCkpYXRv
bWljX3JlYWQzMigodWludDMyX3QgKilwKTsgYnJlYWs7CVwKKwljYXNlIDg6IF9feCA9ICh0
eXBlb2YoKnApKWF0b21pY19yZWFkNjQoKHVpbnQ2NF90ICopcCk7IGJyZWFrOwlcCisJZGVm
YXVsdDogX194ID0gMDsgX19iYWRfYXRvbWljX3NpemUoKTsgYnJlYWs7CQkJXAorCX0JCQkJ
CQkJCVwKKwlfX3g7CQkJCQkJCQlcCit9KQorCisjZGVmaW5lIHdyaXRlX2F0b21pYyhwLCB4
KSAJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl0eXBlb2YoKnApIF9feCA9ICh4KTsJCQkJCQlc
CisJc3dpdGNoICggc2l6ZW9mKCpwKSApIHsJCQkJCQlcCisJY2FzZSAxOiBhdG9taWNfd3Jp
dGU4KCh1aW50OF90ICopcCwgKHVpbnQ4X3QpX194KTsgYnJlYWs7CVwKKwljYXNlIDI6IGF0
b21pY193cml0ZTE2KCh1aW50MTZfdCAqKXAsICh1aW50MTZfdClfX3gpOyBicmVhazsJXAor
CWNhc2UgNDogYXRvbWljX3dyaXRlMzIoKHVpbnQzMl90ICopcCwgKHVpbnQzMl90KV9feCk7
IGJyZWFrOwlcCisJY2FzZSA4OiBhdG9taWNfd3JpdGU2NCgodWludDY0X3QgKilwLCAodWlu
dDY0X3QpX194KTsgYnJlYWs7CVwKKwlkZWZhdWx0OiBfX2JhZF9hdG9taWNfc2l6ZSgpOyBi
cmVhazsJCQkJXAorCX0JCQkJCQkJCVwKKwlfX3g7CQkJCQkJCQlcCit9KQorCisKK3N0YXRp
YyBpbmxpbmUgdWludDhfdCBhdG9taWNfcmVhZDgoY29uc3Qgdm9sYXRpbGUgdWludDhfdCAq
YWRkcikKK3sKKwlyZXR1cm4gKCphZGRyKTsKK30KKworCitzdGF0aWMgaW5saW5lIHVpbnQx
Nl90IGF0b21pY19yZWFkMTYoY29uc3Qgdm9sYXRpbGUgdWludDE2X3QgKmFkZHIpCit7CisJ
cmV0dXJuICgqYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYXRvbWljX3Jl
YWQzMihjb25zdCB2b2xhdGlsZSB1aW50MzJfdCAqYWRkcikKK3sKKwlyZXR1cm4gKCphZGRy
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGF0b21pY193cml0ZTgodm9sYXRpbGUgdWlu
dDhfdCAqYWRkciwgdWludDhfdCB2YWwpCit7CisJKCphZGRyKSA9IHZhbDsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIGF0b21pY193cml0ZTE2KHZvbGF0aWxlIHVpbnQxNl90ICphZGRy
LCB1aW50MTZfdCB2YWwpCit7CisJKCphZGRyKSA9IHZhbDsKK30KKworc3RhdGljIGlubGlu
ZSB2b2lkIGF0b21pY193cml0ZTMyKHZvbGF0aWxlIHVpbnQzMl90ICphZGRyLCB1aW50MzJf
dCB2YWwpCit7CisJKCphZGRyKSA9IHZhbDsKK30KKworCit0eXBlZGVmIHN0cnVjdCB7CisJ
dm9sYXRpbGUgaW50IGNvdW50ZXI7Cit9IGF0b21pY190OworCisKKyNkZWZpbmUgQVRPTUlD
X0lOSVQoaSkJCXsgKGkpIH0KKworI2RlZmluZSBhdG9taWNfcmVhZCh2KQkJKCh2KS0+Y291
bnRlcikKKworc3RhdGljIGlubGluZSB2b2lkIGF0b21pY19zZXQoYXRvbWljX3QgKnYsIGlu
dCBpKQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18o
IkAgYXRvbWljX3NldFxuIgorIjE6ICAgICBsZHJleCAgICUwLCBbJTFdXG4iCisiICAgICAg
IHN0cmV4ICAgJTAsICUyLCBbJTFdXG4iCisiICAgICAgIHRlcSAgICAgJTAsICMwXG4iCisi
ICAgICAgIGJuZSAgICAgMWIiCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmdi0+Y291bnRl
ciksICJyIiAoaSkKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIGludCBhdG9taWNf
YWRkX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCit7CisJdW5zaWduZWQgbG9uZyB0bXA7
CisJaW50IHJlc3VsdDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKCJAIGF0b21pY19hZGRf
cmV0dXJuXG4iCisiMTogICAgIGxkcmV4ICAgJTAsIFslMl1cbiIKKyIgICAgICAgYWRkICAg
ICAlMCwgJTAsICUzXG4iCisiICAgICAgIHN0cmV4ICAgJTEsICUwLCBbJTJdXG4iCisiICAg
ICAgIHRlcSAgICAgJTEsICMwXG4iCisiICAgICAgIGJuZSAgICAgMWIiCisJOiAiPSZyIiAo
cmVzdWx0KSwgIj0mciIgKHRtcCkKKwk6ICJyIiAoJnYtPmNvdW50ZXIpLCAiSXIiIChpKQor
CTogImNjIik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIGludCBh
dG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCit7CisJdW5zaWduZWQgbG9u
ZyB0bXA7CisJaW50IHJlc3VsdDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKCJAIGF0b21p
Y19zdWJfcmV0dXJuXG4iCisiMTogICAgIGxkcmV4ICAgJTAsIFslMl1cbiIKKyIgICAgICAg
c3ViICAgICAlMCwgJTAsICUzXG4iCisiICAgICAgIHN0cmV4ICAgJTEsICUwLCBbJTJdXG4i
CisiICAgICAgIHRlcSAgICAgJTEsICMwXG4iCisiICAgICAgIGJuZSAgICAgMWIiCisJOiAi
PSZyIiAocmVzdWx0KSwgIj0mciIgKHRtcCkKKwk6ICJyIiAoJnYtPmNvdW50ZXIpLCAiSXIi
IChpKQorCTogImNjIik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBhdG9taWNfY2xlYXJfbWFzayh1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgKmFkZHIpCit7CisJdW5zaWduZWQgbG9uZyB0bXAsIHRtcDI7CisKKwlfX2FzbV9f
IF9fdm9sYXRpbGVfXygiQCBhdG9taWNfY2xlYXJfbWFza1xuIgorIjE6ICAgICBsZHJleCAg
ICUwLCBbJTJdXG4iCisiICAgICAgIGJpYyAgICAgJTAsICUwLCAlM1xuIgorIiAgICAgICBz
dHJleCAgICUxLCAlMCwgWyUyXVxuIgorIiAgICAgICB0ZXEgICAgICUxLCAjMFxuIgorIiAg
ICAgICBibmUgICAgIDFiIgorCTogIj0mciIgKHRtcCksICI9JnIiICh0bXAyKQorCTogInIi
IChhZGRyKSwgIklyIiAobWFzaykKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIGF0
b21pY190IGF0b21pY19jbXB4Y2hnKGF0b21pY190ICpwdHIsIGF0b21pY190IG9sZCwgYXRv
bWljX3QgbmV3KQoreworCWF0b21pY190IG9sZHZhbCwgcmVzOworCisJZG8geworCQlfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiQCBhdG9taWNfY21weGNoZ1xuIgorCQkibGRyZXggICUxLCBb
JTJdXG4iCisJCSJtb3YgICAgJTAsICMwXG4iCisJCSJ0ZXEgICAgJTEsICUzXG4iCisJCSJz
dHJleGVxICUwLCAlNCwgWyUyXVxuIgorCQk6ICI9JnIiIChyZXMuY291bnRlciksICI9JnIi
IChvbGR2YWwuY291bnRlcikKKwkJOiAiciIgKCZwdHItPmNvdW50ZXIpLCAiSXIiIChvbGQu
Y291bnRlciksICJyIiAobmV3LmNvdW50ZXIpCisJCTogImNjIik7CisJfSB3aGlsZSAocmVz
LmNvdW50ZXIpOworCisJcmV0dXJuIG9sZHZhbDsKK30KKworI2RlZmluZSBfYXRvbWljX3Jl
YWQodikJCWF0b21pY19yZWFkKCZ2KQorI2RlZmluZSBfYXRvbWljX3NldCh2LGkpCWF0b21p
Y19zZXQoJnYsaSkKKworI2RlZmluZSBhdG9taWNfYWRkKGksIHYpCSh2b2lkKSBhdG9taWNf
YWRkX3JldHVybihpLCB2KQorI2RlZmluZSBhdG9taWNfaW5jKHYpCQkodm9pZCkgYXRvbWlj
X2FkZF9yZXR1cm4oMSwgdikKKyNkZWZpbmUgYXRvbWljX3N1YihpLCB2KQkodm9pZCkgYXRv
bWljX3N1Yl9yZXR1cm4oaSwgdikKKyNkZWZpbmUgYXRvbWljX2RlYyh2KQkJKHZvaWQpIGF0
b21pY19zdWJfcmV0dXJuKDEsIHYpCisKKyNkZWZpbmUgYXRvbWljX2luY19hbmRfdGVzdCh2
KQkoYXRvbWljX2FkZF9yZXR1cm4oMSwgdikgPT0gMCkKKyNkZWZpbmUgYXRvbWljX2RlY19h
bmRfdGVzdCh2KQkoYXRvbWljX3N1Yl9yZXR1cm4oMSwgdikgPT0gMCkKKyNkZWZpbmUgYXRv
bWljX2luY19yZXR1cm4odikgICAgKGF0b21pY19hZGRfcmV0dXJuKDEsIHYpKQorI2RlZmlu
ZSBhdG9taWNfZGVjX3JldHVybih2KSAgICAoYXRvbWljX3N1Yl9yZXR1cm4oMSwgdikpCisK
KyNkZWZpbmUgYXRvbWljX2FkZF9uZWdhdGl2ZShpLHYpIChhdG9taWNfYWRkX3JldHVybihp
LCB2KSA8IDApCisKK3N0YXRpYyBpbmxpbmUgYXRvbWljX3QgYXRvbWljX2NvbXBhcmVhbmRz
d2FwKGF0b21pY190IG9sZCwgYXRvbWljX3QgbmV3LCBhdG9taWNfdCAqdikKK3sKKyAgICAg
ICAgYXRvbWljX3QgcmM7CisgICAgICAgIHJjID0gYXRvbWljX2NtcHhjaGcoIChhdG9taWNf
dCAqKXYsIG9sZCwgbmV3KTsKKyAgICAgICAgcmV0dXJuIHJjOworfQorI2VuZGlmIC8qIV9f
QVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIV9fQVJNX0FUT01JQ19IX18gKi8KZGlmZiAtciBl
NzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9iaXRvcHMuaAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20t
YXJtL2JpdG9wcy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsx
LDE5MyBAQAorI2lmbmRlZiBfX0FSTV9CSVRPUFNfSF9fCisjZGVmaW5lIF9fQVJNX0JJVE9Q
U19IX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVt
Lmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWlj
X3NldF9iaXQodW5zaWduZWQgaW50IGJpdCwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkK
K3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8
PCAoYml0ICYgMzEpOworCisJcCArPSBiaXQgPj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZs
YWdzKTsKKwkqcCB8PSBtYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKwor
c3RhdGljIGlubGluZSB2b2lkIGF0b21pY19jbGVhcl9iaXQodW5zaWduZWQgaW50IGJpdCwg
dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor
CXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCAoYml0ICYgMzEpOworCisJcCArPSBiaXQg
Pj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkqcCAmPSB+bWFzazsKKwlsb2Nh
bF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhdG9taWNf
Y2hhbmdlX2JpdCh1bnNpZ25lZCBpbnQgYml0LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpw
KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBtYXNrID0gMVVM
IDw8IChiaXQgJiAzMSk7CisKKwlwICs9IGJpdCA+PiA1OworCisJbG9jYWxfaXJxX3NhdmUo
ZmxhZ3MpOworCSpwIF49IG1hc2s7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworfQor
CitzdGF0aWMgaW5saW5lIGludCBhdG9taWNfdGVzdF9hbmRfc2V0X2JpdCh1bnNpZ25lZCBp
bnQgYml0LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcg
ZmxhZ3M7CisJdW5zaWduZWQgaW50IHJlczsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwg
PDwgKGJpdCAmIDMxKTsKKworCXAgKz0gYml0ID4+IDU7CisKKwlsb2NhbF9pcnFfc2F2ZShm
bGFncyk7CisJcmVzID0gKnA7CisJKnAgPSByZXMgfCBtYXNrOworCWxvY2FsX2lycV9yZXN0
b3JlKGZsYWdzKTsKKworCXJldHVybiByZXMgJiBtYXNrOworfQorCitzdGF0aWMgaW5saW5l
IGludCBhdG9taWNfdGVzdF9hbmRfY2xlYXJfYml0KHVuc2lnbmVkIGludCBiaXQsIHZvbGF0
aWxlIHVuc2lnbmVkIGxvbmcgKnApCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1bnNp
Z25lZCBpbnQgcmVzOworCXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCAoYml0ICYgMzEp
OworCisJcCArPSBiaXQgPj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwlyZXMg
PSAqcDsKKwkqcCA9IHJlcyAmIH5tYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsK
KworCXJldHVybiByZXMgJiBtYXNrOworfQorCitzdGF0aWMgaW5saW5lIGludCBhdG9taWNf
dGVzdF9hbmRfY2hhbmdlX2JpdCh1bnNpZ25lZCBpbnQgYml0LCB2b2xhdGlsZSB1bnNpZ25l
ZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IHJl
czsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwgPDwgKGJpdCAmIDMxKTsKKworCXAgKz0g
Yml0ID4+IDU7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJcmVzID0gKnA7CisJKnAg
PSByZXMgXiBtYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKworCXJldHVybiBy
ZXMgJiBtYXNrOworfQorCisvKgorICogTm93IHRoZSBub24tYXRvbWljIHZhcmlhbnRzLiAg
V2UgbGV0IHRoZSBjb21waWxlciBoYW5kbGUgYWxsCisgKiBvcHRpbWlzYXRpb25zIGZvciB0
aGVzZS4gIFRoZXNlIGFyZSBhbGwgX25hdGl2ZV8gZW5kaWFuLgorICovCitzdGF0aWMgaW5s
aW5lIHZvaWQgc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKnApCit7CisJdm9sYXRp
bGUgdW5zaWduZWQgbG9uZyAqbSA9ICh1bnNpZ25lZCBsb25nICopcDsKKworCW1bbnIgPj4g
NV0gfD0gKDFVTCA8PCAobnIgJiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2xl
YXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqcCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25l
ZCBsb25nICptID0gKHVuc2lnbmVkIGxvbmcgKilwOworCisJbVtuciA+PiA1XSAmPSB+KDFV
TCA8PCAobnIgJiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2hhbmdlX2JpdChp
bnQgbnIsIHZvbGF0aWxlIHZvaWQgKnApCit7CisJdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAq
bSA9ICh1bnNpZ25lZCBsb25nICopcDsKKworCW1bbnIgPj4gNV0gXj0gKDFVTCA8PCAobnIg
JiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIGludCB0ZXN0X2FuZF9zZXRfYml0KGludCBu
ciwgdm9sYXRpbGUgdm9pZCAqcCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICptID0g
KHVuc2lnbmVkIGxvbmcgKilwOworCXVuc2lnbmVkIGxvbmcgb2xkdmFsLCBtYXNrID0gMVVM
IDw8IChuciAmIDMxKTsKKworCW0gKz0gbnIgPj4gNTsKKworCW9sZHZhbCA9ICptOworCSpt
ID0gb2xkdmFsIHwgbWFzazsKKwlyZXR1cm4gb2xkdmFsICYgbWFzazsKK30KKworc3RhdGlj
IGlubGluZSBpbnQgdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAq
cCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICptID0gKHVuc2lnbmVkIGxvbmcgKilw
OworCXVuc2lnbmVkIGxvbmcgb2xkdmFsLCBtYXNrID0gMVVMIDw8IChuciAmIDMxKTsKKwor
CW0gKz0gbnIgPj4gNTsKKworCW9sZHZhbCA9ICptOworCSptID0gb2xkdmFsICYgfm1hc2s7
CisJcmV0dXJuIG9sZHZhbCAmIG1hc2s7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRlc3Rf
YW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICpwKQoreworCXZvbGF0aWxl
IHVuc2lnbmVkIGxvbmcgKm0gPSAodW5zaWduZWQgbG9uZyAqKXA7CisJdW5zaWduZWQgbG9u
ZyBvbGR2YWwsIG1hc2sgPSAxVUwgPDwgKG5yICYgMzEpOworCisJbSArPSBuciA+PiA1Owor
CisJb2xkdmFsID0gKm07CisJKm0gPSBvbGR2YWwgXiBtYXNrOworCXJldHVybiBvbGR2YWwg
JiBtYXNrOworfQorCisvKgorICogVGhpcyByb3V0aW5lIGRvZXNuJ3QgbmVlZCB0byBiZSBh
dG9taWMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHRlc3RfYml0KGludCBuciwgY29uc3Qg
dm9sYXRpbGUgdm9pZCAqcCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICptID0gKHVu
c2lnbmVkIGxvbmcgKilwOworCisJcmV0dXJuIChtW25yID4+IDVdID4+IChuciAmIDMxKSkg
JiAxVUw7Cit9CisKK2V4dGVybiBpbnQgX2ZpbmRfZmlyc3RfemVyb19iaXQoY29uc3Qgdm9p
ZCAqcCwgaW50IHN6KTsKK2V4dGVybiBpbnQgX2ZpbmRfbmV4dF96ZXJvX2JpdChjb25zdCB2
b2lkICpwLCBpbnQgc3osIGludCBvZmZzZXQpOworZXh0ZXJuIGludCBfZmluZF9maXJzdF9i
aXQoY29uc3Qgdm9pZCAqcCwgaW50IHN6KTsKK2V4dGVybiBpbnQgX2ZpbmRfbmV4dF9iaXQo
Y29uc3Qgdm9pZCAqcCwgaW50IHN6LCBpbnQgb2Zmc2V0KTsKKworI2RlZmluZSBmaW5kX2Zp
cnN0X3plcm9fYml0KHAsc3opCV9maW5kX2ZpcnN0X3plcm9fYml0KHAsc3opCisjZGVmaW5l
IGZpbmRfbmV4dF96ZXJvX2JpdChwLHN6LG9mZikJX2ZpbmRfbmV4dF96ZXJvX2JpdChwLHN6
LG9mZikKKyNkZWZpbmUgZmluZF9maXJzdF9iaXQocCxzeikJCV9maW5kX2ZpcnN0X2JpdChw
LHN6KQorI2RlZmluZSBmaW5kX25leHRfYml0KHAsc3osb2ZmKQkJX2ZpbmRfbmV4dF9iaXQo
cCxzeixvZmYpCisjZGVmaW5lIGZpbmRfZmlyc3Rfc2V0X2JpdCh3b3JkKQkoZmZzKHdvcmQp
LTEpCisjZGVmaW5lIFdPUkRfQklUT0ZGX1RPX0xFKHgpCQkoKHgpKQorCisjZGVmaW5lIF9f
dGVzdF9hbmRfc2V0X2JpdChuciwgYWRkcikJdGVzdF9hbmRfc2V0X2JpdChuciwgYWRkcikK
Kworc3RhdGljIF9faW5saW5lX18gaW50IGdlbmVyaWNfZmxzKGludCB4KTsKKyNkZWZpbmUg
ZmxzKHgpIFwKKwkoIF9fYnVpbHRpbl9jb25zdGFudF9wKHgpID8gZ2VuZXJpY19mbHMoeCkg
OiBcCisJICAoeyBpbnQgX19yOyBhc20oImNselx0JTAsICUxIiA6ICI9ciIoX19yKSA6ICJy
Iih4KSA6ICJjYyIpOyAzMi1fX3I7IH0pICkKKyNkZWZpbmUgZmZzKHgpCQkoeyB1bnNpZ25l
ZCBsb25nIF9fdCA9ICh4KTsgZmxzKF9fdCAmIC1fX3QpOyB9KQorI2RlZmluZSBfX2Zmcyh4
KQkoZmZzKHgpIC0gMSkKKyNkZWZpbmUgZmZ6KHgpCQlfX2Zmcyggfih4KSApCisvKgorICog
aHdlaWdodE46IHJldHVybnMgdGhlIGhhbW1pbmcgd2VpZ2h0IChpLmUuIHRoZSBudW1iZXIK
KyAqIG9mIGJpdHMgc2V0KSBvZiBhIE4tYml0IHdvcmQKKyAqLworCisjZGVmaW5lIGh3ZWln
aHQzMih4KSBnZW5lcmljX2h3ZWlnaHQzMih4KQorI2RlZmluZSBod2VpZ2h0MTYoeCkgZ2Vu
ZXJpY19od2VpZ2h0MTYoeCkKKyNkZWZpbmUgaHdlaWdodDgoeCkgZ2VuZXJpY19od2VpZ2h0
OCh4KQorI2VuZGlmIC8qIV9fQVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIV9fQVJNX0JJVE9Q
U19IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9idWcu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL2J1Zy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDMyIEBACisjaWZuZGVmIF9fQVJNX0JVR19IX18KKyNkZWZpbmUgX19B
Uk1fQlVHX0hfXworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBCVUcoKQkJCQkJ
CQlcCisJZG8gewkJCQkJCQlcCisJCXByaW50aygiQlVHIGF0ICVzOiVkXG4iLCBfX0ZJTEVf
XywgX19MSU5FX18pOwlcCisJCXdoaWxlKDEpOwkJCQkJXAorCX0gd2hpbGUgKCAwICkKKwor
I2RlZmluZSBQQU5JQyhtc2cpCQkJCQkJXAorCWRvIHsJCQkJCQkJXAorCQlwcmludGsoIlBh
bmljIGF0ICVzOiVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisJCXdoaWxlKDEpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl9d2hpbGUgKDApCisKKyNkZWZp
bmUgV0FSTigpCQkJCQkJCVwKKwlkbyB7CQkJCQkJCVwKKwkJcHJpbnRrKCJXQVJOSU5HIGF0
ICVzOiVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOwlcCisJCXdoaWxlKDEpOwkJCQkJXAor
CX0gd2hpbGUgKCAwICkKKworCisjZGVmaW5lIE5PVF9ZRVQoKQkJCQkJCVwKKwlkbyB7CQkJ
CQkJCVwKKwkJcHJpbnRrKCJOT1QgWUVUICVzOiVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18p
OwlcCisJfSB3aGlsZSAoMCkKKwordm9pZCBkdW1wX2V4ZWN1dGlvbl9zdGF0ZSh2b2lkKTsK
KyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLworI2VuZGlmIC8qIV9fQVJNX0JVR19IX18qLwor
CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vYnl0ZW9yZGVyLmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9ieXRlb3JkZXIuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIF9fQVJNX0JZVEVPUkRFUl9IX18KKyNk
ZWZpbmUgX19BUk1fQllURU9SREVSX0hfXworCisjZGVmaW5lIF9fQllURU9SREVSX0hBU19V
NjRfXworCisjaW5jbHVkZSA8eGVuL2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmg+CisKKwor
I2VuZGlmIC8qIF9fQVJNX0JZVEVPUkRFUl9IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEg
eGVuL2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vY2FjaGUuaAlG
cmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMSBAQAorI2lmbmRl
ZiBfX0FSTV9DQUNIRV9IX18KKyNkZWZpbmUgX19BUk1fQ0FDSEVfSF9fCisKKyNpZm5kZWYg
TDFfQ0FDSEVfQllURVMKKyNkZWZpbmUgTDFfQ0FDSEVfQllURVMgICAgICAgICAgMzIKKyNl
bmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBfX3JlYWRfbW9zdGx5IF9f
YXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS5yZWFkX21vc3RseSIpKSkKKyNlbmRp
ZiAvKiFfX0FTU0VNQkxZX18gKi8KKyNlbmRpZiAvKiFfX0FSTV9DQUNIRV9IX18gKi8KZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaAotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVk
ZS9hc20tYXJtL2NvbmZpZy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAt
MCwwICsxLDYxIEBACisjaWZuZGVmIF9fQVJNX0NPTkZJR19IX18KKyNkZWZpbmUgX19BUk1f
Q09ORklHX0hfXworCisjaW5jbHVkZSA8YXNtL2FyY2gvY29uZmlnLmg+CisKKyNpZm5kZWYg
TUFYX0hWTV9WQ1BVUworI2RlZmluZSBNQVhfSFZNX1ZDUFVTCQkxCisjZW5kaWYKKworI2Rl
ZmluZSBNQVhfVklSVF9DUFVTCQlYRU5fTEVHQUNZX01BWF9WQ1BVUworI2RlZmluZSBDT01Q
QVRfTEVHQUNZX01BWF9WQ1BVUyBYRU5fTEVHQUNZX01BWF9WQ1BVUworCisjaWZuZGVmIE1B
WF9QSFlTX0NQVVMKKyNkZWZpbmUgTUFYX1BIWVNfQ1BVUwkJMQorI2VuZGlmCisKKyNkZWZp
bmUgTlJfQ1BVUwkJCU1BWF9QSFlTX0NQVVMKKworI2RlZmluZSBFTEZTSVpFCQkJMzIKKwor
I2lmbmRlZiBYRU5fUEhZU19TSVpFCisjZGVmaW5lIFhFTl9QSFlTX1NJWkUJCSgweEYwMDAw
MCkKKyNlbmRpZgorCisKKyNpZiAoTUFYX1BIWVNfQ1BVUyA+IDEpCisjZGVmaW5lIENPTkZJ
R19TTVAJCTEKKyNkZWZpbmUgU01QCQkJMQorI2VuZGlmCisKKyNkZWZpbmUgU1RBQ0tfT1JE
RVIJCTAKKyNkZWZpbmUgU1RBQ0tfU0laRQkJKFBBR0VfU0laRSA8PCBTVEFDS19PUkRFUikK
KworI2lmbmRlZiBOREVCVUcKKyMgZGVmaW5lIE1FTU9SWV9HVUFSRAorI2VuZGlmCisKKwor
I2RlZmluZSBzdXBlcnZpc29yX21vZGVfa2VybmVsCSgwKQorCisjZGVmaW5lIEhZUEVSVklT
T1JfVklSVF9TVEFSVAkoMHhGQzAwMDAwMCkKKyNkZWZpbmUgWEVOX1ZJUlRfU1RBUlQJCSgw
eEZGMDAwMDAwKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjZGVmaW5lIE9QVF9DT05T
T0xFX1NUUgkJImNvbTEiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBDUFBfQVNN
TElOS0FHRSBleHRlcm4gIkMiCisjZWxzZQorI2RlZmluZSBDUFBfQVNNTElOS0FHRQorI2Vu
ZGlmCisKKyNpZm5kZWYgYXNtbGlua2FnZQorI2RlZmluZSBhc21saW5rYWdlIENQUF9BU01M
SU5LQUdFCisjZW5kaWYKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisjZW5kaWYgLyog
IV9fQVJNX0NPTkZJR19IX18qLworCisKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5j
bHVkZS9hc20tYXJtL2NwdS1kb21haW4uaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2NwdS1kb21haW4u
aAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwzOSBAQAorI2lm
bmRlZiBfX0FSTV9DUFVfRE9NQUlOX0hfXworI2RlZmluZSBfX0FSTV9DUFVfRE9NQUlOX0hf
XworCisvKgorICogRG9tYWluIElECisgKi8KKyNkZWZpbmUgRE9NQUlOX1NWQwkJMAorI2Rl
ZmluZSBET01BSU5fSU8JCTIKKyNkZWZpbmUgRE9NQUlOX1VTUgkJMQorI2RlZmluZSBET01B
SU5fSFlQCQkxNQorCisvKgorICogRG9tYWluIHR5cGVzCisgKi8KKyNkZWZpbmUgRE9NQUlO
X05PQUNDRVNTCQkwCisjZGVmaW5lIERPTUFJTl9DTElFTlQJCTEKKyNkZWZpbmUgRE9NQUlO
X01BTkFHRVIJCTMKKworI2RlZmluZSBET01BSU5fVkFMVUUoZG9tLHR5cGUpCSgodHlwZSkg
PDwgKDIgKiAoZG9tKSkpCisKKyNkZWZpbmUgREFDUl9TVEFUX0hZUAkJCQkJXAorCShET01B
SU5fVkFMVUUoRE9NQUlOX0hZUCwgRE9NQUlOX0NMSUVOVCkgfAlcCisJIERPTUFJTl9WQUxV
RShET01BSU5fU1ZDLCBET01BSU5fQ0xJRU5UKSB8CVwKKwkgRE9NQUlOX1ZBTFVFKERPTUFJ
Tl9JTywgIERPTUFJTl9DTElFTlQpIHwJXAorCSBET01BSU5fVkFMVUUoRE9NQUlOX1VTUiwg
RE9NQUlOX0NMSUVOVCkpCisKKyNkZWZpbmUgREFDUl9TVEFUX1NWQwkJCQkJXAorCShET01B
SU5fVkFMVUUoRE9NQUlOX0hZUCwgRE9NQUlOX0NMSUVOVCkgfAlcCisJIERPTUFJTl9WQUxV
RShET01BSU5fU1ZDLCBET01BSU5fTUFOQUdFUikgfAlcCisJIERPTUFJTl9WQUxVRShET01B
SU5fSU8sICBET01BSU5fTUFOQUdFUikgfAlcCisJIERPTUFJTl9WQUxVRShET01BSU5fVVNS
LCBET01BSU5fQ0xJRU5UKSkJXAorCisjZGVmaW5lIERBQ1JfU1RBVF9VU1IJCQkJCVwKKwko
RE9NQUlOX1ZBTFVFKERPTUFJTl9IWVAsIERPTUFJTl9DTElFTlQpIHwJXAorCSBET01BSU5f
VkFMVUUoRE9NQUlOX1NWQywgRE9NQUlOX0NMSUVOVCkgfAlcCisJIERPTUFJTl9WQUxVRShE
T01BSU5fSU8sICBET01BSU5fQ0xJRU5UKSB8CVwKKwkgRE9NQUlOX1ZBTFVFKERPTUFJTl9V
U1IsIERPTUFJTl9DTElFTlQpKQorCisjZW5kaWYgLyogX19BUk1fQ1BVX0RPTUFJTl9IX18g
Ki8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgY3VycmVudC5oCisgKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCUNoYW5KdSBQYXJrIDxiZWFz
dHdvcmxkQHNhbXN1bmcuY29tPgorICoJSmFlTWluIFJ5dSAgPGptNzcucnl1QHNhbXN1bmcu
Y29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyB2ZXJzaW9uIDIgb2YgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0
b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FSTV9DVVJSRU5UX0hf
XworI2RlZmluZSBfX0FSTV9DVVJSRU5UX0hfXworCisjaW5jbHVkZSA8cHVibGljL3hlbi5o
PgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1
Y3QgdmNwdTsKKworc3RydWN0IGNwdV9pbmZvIHsKKwlzdHJ1Y3QgdmNwdQkqdmNwdTsKKwl1
bnNpZ25lZCBsb25nCXZzcHNyOworCXVuc2lnbmVkIGxvbmcJdnNwOworCXVuc2lnbmVkIGxv
bmcJdmxyOworCXVuc2lnbmVkIGxvbmcJdmRhY3I7CisJc3RydWN0IGNwdV91c2VyX3JlZ3Mg
Z3Vlc3RfY3B1X3VzZXJfcmVnczsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNwdV9p
bmZvICogZ2V0X2NwdV9pbmZvKHZvaWQpCit7CisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBz
cCBhc20oInIxMyIpOworCXJldHVybiAoc3RydWN0IGNwdV9pbmZvICopICggc3AgJiB+KFNU
QUNLX1NJWkUgLTEpICApOyAKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdmNwdSAqZ2V0
X2N1cnJlbnQodm9pZCkKK3sKKyAgICAgICAgcmV0dXJuIGdldF9jcHVfaW5mbygpLT52Y3B1
OworfQorCisjZGVmaW5lIGN1cnJlbnQgZ2V0X2N1cnJlbnQoKQorCitzdGF0aWMgaW5saW5l
IHZvaWQgc2V0X2N1cnJlbnQoc3RydWN0IHZjcHUgKnYpCit7ICAgCisJZ2V0X2NwdV9pbmZv
KCktPnZjcHUgPSB2OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2N1cnJlbnRfdmNw
dShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICAgICAgc3RydWN0IGNwdV9pbmZvICpjaTsKKwor
ICAgICAgICBjaSA9IGdldF9jcHVfaW5mbygpOworICAgICAgICBjaS0+dmNwdSA9IHY7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaW5mb19pbml0KHN0cnVjdCBjcHVfaW5mbyAq
Y3B1X2luZm8pCit7CisgICAgICAgIGNwdV9pbmZvLT52Y3B1ID0gTlVMTDsKK30KKworI2Rl
ZmluZSBndWVzdF9jcHVfdXNlcl9yZWdzKCkJKCYoZ2V0X2NwdV9pbmZvKCktPmd1ZXN0X2Nw
dV91c2VyX3JlZ3MpKQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX0FSTV9DVVJSRU5UX0hfXyAq
LwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2RlYnVnZ2VyLmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9kZWJ1Z2dlci5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiAr
MDkwMApAQCAtMCwwICsxLDI0IEBACisjaWZuZGVmIF9fQVJNX0RFQlVHR0VSX0hfXworI2Rl
ZmluZSBfX0FSTV9ERUJVR0dFUl9IX18KKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorCisj
aWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBkZWJ1Z2dlcl90cmFwX2ltbWVkaWF0ZSgp
CXs7fQorCitzdGF0aWMgaW5saW5lIGludCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKHVuc2lnbmVk
IGludCB2ZWN0b3IsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQoreworCXByaW50aygi
Tm90IGltcGxlbWVudGVkIHlldFxuIik7CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworCit2
b2lkIHNob3dfc3RhY2soc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwordm9pZCBzaG93
X3N0YWNrX292ZXJmbG93KHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgZXNwKTsK
K3ZvaWQgc2hvd19yZWdpc3RlcnMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwordm9p
ZCBzaG93X2V4ZWN1dGlvbl9zdGF0ZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7Cisj
ZW5kaWYgLyohX19BU1NFTUJMWV9fKi8KKworI2VuZGlmIC8qIV9fQVJNX0RFQlVHR0VSX0hf
XyAqLworCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vZGVsYXku
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL2RlbGF5LmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0FSTV9ERUxBWV9IX18KKyNkZWZpbmUg
X19BUk1fREVMQVlfSF9fCisKKyNkZWZpbmUgdWRlbGF5KG4pIAlfdWRlbGF5KG4pCisjZW5k
aWYKKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2RpdjY0LmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9kaXY2NC5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkw
MApAQCAtMCwwICsxLDQzIEBACisjaWZuZGVmIF9fQVJNX0RJVjY0X18KKyNkZWZpbmUgX19B
Uk1fRElWNjRfXworCisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorCisjaWZuZGVmIF9fQVNT
RU1CTFlfXworLyoKKyAqIFRoZSBzZW1hbnRpY3Mgb2YgZG9fZGl2KCkgYXJlOgorICoKKyAq
IHVpbnQzMl90IGRvX2Rpdih1aW50NjRfdCAqbiwgdWludDMyX3QgYmFzZSkKKyAqIHsKKyAq
IAl1aW50MzJfdCByZW1haW5kZXIgPSAqbiAlIGJhc2U7CisgKiAJKm4gPSAqbiAvIGJhc2U7
CisgKiAJcmV0dXJuIHJlbWFpbmRlcjsKKyAqIH0KKyAqCisgKiBJbiBvdGhlciB3b3Jkcywg
YSA2NC1iaXQgZGl2aWRlbmQgd2l0aCBhIDMyLWJpdCBkaXZpc29yIHByb2R1Y2luZworICog
YSA2NC1iaXQgcmVzdWx0IGFuZCBhIDMyLWJpdCByZW1haW5kZXIuICBUbyBhY2NvbXBsaXNo
IHRoaXMgb3B0aW1hbGx5CisgKiB3ZSBjYWxsIGEgc3BlY2lhbCBfX2RvX2RpdjY0IGhlbHBl
ciB3aXRoIGNvbXBsZXRlbHkgbm9uIHN0YW5kYXJkCisgKiBjYWxsaW5nIGNvbnZlbnRpb24g
Zm9yIGFyZ3VtZW50cyBhbmQgcmVzdWx0cyAoYmV3YXJlKS4KKyAqLworI2RlZmluZSBfX3hs
ICJyMCIKKyNkZWZpbmUgX194aCAicjEiCisKKyNkZWZpbmUgZG9fZGl2KG4sYmFzZSkJCQkJ
CQlcCisoewkJCQkJCQkJXAorCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBfX2Jhc2UgICAgICBh
c20oInI0IikgPSBiYXNlOwlcCisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBsb25nIF9fbiAg
IGFzbSgicjAiKSA9IG47CVwKKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXMg
YXNtKCJyMiIpOwkJXAorCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBfX3JlbSAgICAgICBhc20o
X194aCk7CQlcCisJYXNtKAlfX2FzbWVxKCIlMCIsIF9feGgpCQkJCVwKKwkJX19hc21lcSgi
JTEiLCAicjIiKQkJCQlcCisJCV9fYXNtZXEoIiUyIiwgInIwIikJCQkJXAorCQlfX2FzbWVx
KCIlMyIsICJyNCIpCQkJCVwKKwkJImJsCV9fZG9fZGl2NjQiCQkJCVwKKwkJOiAiPXIiIChf
X3JlbSksICI9ciIgKF9fcmVzKQkJCVwKKwkJOiAiciIgKF9fbiksICJyIiAoX19iYXNlKQkJ
CVwKKwkJOiAiaXAiLCAibHIiLCAiY2MiKTsJCQkJXAorCW4gPSBfX3JlczsJCQkJCQlcCisJ
X19yZW07CQkJCQkJCVwKK30pCisjZW5kaWYgLyohX19BU1NFTUJMWV9fKi8KKyNlbmRpZiAv
KiFfX0FSTV9ESVY2NF9IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUv
YXNtLWFybS9kb21haW4uaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCUZyaSBGZWIgMDMg
MTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDc5IEBACisjaWZuZGVmIF9fQVJNX0RP
TUFJTl9IX18KKyNkZWZpbmUgX19BUk1fRE9NQUlOX0hfXworI2luY2x1ZGUgPHhlbi9pbml0
Lmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+Cisj
aW5jbHVkZSA8eGVuL3Rhc2tsZXQuaD4KKyNpbmNsdWRlIDxhc20vbnVtYS5oPgorI2luY2x1
ZGUgPGFzbS9pb21tdS5oPgorI2luY2x1ZGUgPHB1YmxpYy9hcmNoLWFybS5oPgorCisjaWYg
MAorI2RlZmluZSBNQVBIQVNIX0VOVFJJRVMJCQk4CisjZGVmaW5lIE1BUEhBU0hfSEFTSEZO
KHBmbikJCSgocGZuKSAmIChNQVBIQVNIX0VOVFJJRVMtMSkpCisjZGVmaW5lIE1BUEhBU0hF
TlRfTk9USU5VU0UJCSgodTE2KX4wVSkKKworc3RydWN0IHZjcHVfbWFwaGFzaCB7CisgICAg
c3RydWN0IHZjcHVfbWFwaGFzaF9lbnRyeSB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgcGZu
OworICAgICAgICB1aW50MTZfdCAgICAgIGlkeDsKKyAgICAgICAgdWludDE2X3QgICAgICBy
ZWZjbnQ7CisgICAgfSBoYXNoW01BUEhBU0hfRU5UUklFU107Cit9X19jYWNoZWxpbmVfYWxp
Z25lZDsKKworCisjZGVmaW5lIE1BUENBQ0hFX09SREVSICAgOAorI2RlZmluZSBNQVBDQUNI
RV9FTlRSSUVTICgxIDw8IE1BUENBQ0hFX09SREVSKQorCitzdHJ1Y3QgbWFwY2FjaGUgewor
ICAgIC8qIFRoZSBQVEVzIHRoYXQgcHJvdmlkZSB0aGUgbWFwcGluZ3MsIGFuZCBhIGN1cnNv
ciBpbnRvIHRoZSBhcnJheS4gKi8KKyAgICBsMmVfdAkqdGFibGU7CisgICAgdW5zaWduZWQg
aW50IGN1cnNvcjsKKworICAgIC8qIFByb3RlY3RzIG1hcF9kb21haW5fcGFnZSgpLiAqLwor
ICAgIHNwaW5sb2NrX3QgbG9jazsKKworICAgIC8qIFdoaWNoIG1hcHBpbmdzIGFyZSBpbiB1
c2UsIGFuZCB3aGljaCBhcmUgZ2FyYmFnZSB0byByZWFwIG5leHQgZXBvY2g/ICovCisgICAg
dW5zaWduZWQgbG9uZyBpbnVzZVtCSVRTX1RPX0xPTkdTKE1BUENBQ0hFX0VOVFJJRVMpXTsK
KyAgICB1bnNpZ25lZCBsb25nIGdhcmJhZ2VbQklUU19UT19MT05HUyhNQVBDQUNIRV9FTlRS
SUVTKV07CisKKyAgICAvKiBMb2NrLWZyZWUgcGVyLVZDUFUgaGFzaCBvZiByZWNlbnRseS11
c2VkIG1hcHBpbmdzLiAqLworICAgIHN0cnVjdCB2Y3B1X21hcGhhc2ggdmNwdV9tYXBoYXNo
W01BWF9WSVJUX0NQVVNdOworfV9fY2FjaGVsaW5lX2FsaWduZWQ7CisjZW5kaWYKK3N0cnVj
dCBhcmNoX2RvbWFpbgoreworI2lmIDAKKyAgICAvKiBJL08tcG9ydCBhZG1pbi1zcGVjaWZp
ZWQgYWNjZXNzIGNhcGFiaWxpdGllcy4gKi8KKyAgICBzdHJ1Y3QgcmFuZ2VzZXQJKmlvcG9y
dF9jYXBzOworCisgICAgaW50ICppcnFfcGlycTsKKyAgICBpbnQgKnBpcnFfaXJxOworCisg
ICAgdW5zaWduZWQgbG9uZyAqcGlycV9lb2lfbWFwOworICAgIHVuc2lnbmVkIGxvbmcgcGly
cV9lb2lfbWFwX21mbjsKKyNlbmRpZgorICAgIHN0cnVjdCBwYWdlX2xpc3RfaGVhZCByZWxt
ZW1fbGlzdDsKK307CisKK3N0cnVjdCBhcmNoX3ZjcHUKK3sKKwlzdHJ1Y3QgdmNwdV9ndWVz
dF9jb250ZXh0IGN0eDsKK30gX19jYWNoZWxpbmVfYWxpZ25lZDsKKworLy8jZGVmaW5lIFZD
UFVfUkVHKHYsIHJlZykJdi0+YXJjaC5jdHgucmVnCisKKyNkZWZpbmUgcmV0dXJuX3JlZyh2
KQkJKCh2KS0+YXJjaC5jdHgucjApCisKK3ZvaWQgdmNwdV9zaG93X2V4ZWN1dGlvbl9zdGF0
ZShzdHJ1Y3QgdmNwdSAqdik7Cit2b2lkIHN0YXJ0dXBfY3B1X2lkbGVfbG9vcCh2b2lkKTsK
KworZXh0ZXJuIHN0cnVjdCB2Y3B1ICppZGxlX3ZjcHVbXTsKKworc3RhdGljIGlubGluZSBz
dHJ1Y3QgdmNwdSAqZ2V0X2lkbGVfdmNwdSh1bnNpZ25lZCBpbnQgY3B1KQoreworICAgICAg
ICByZXR1cm4gaWRsZV92Y3B1W2NwdV07Cit9CisKKyNlbmRpZiAKKwpkaWZmIC1yIGU3MDE0
NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2VsZi5oCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZWxm
LmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBlbGYuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKiAgICAgICAgICBKYWVtaW4gUnl1IDxqbTc3LnJ5dUBzYW1zdW5nLmNvbT4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgdmVyc2lvbiAyIG9mIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAg
MDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmbmRlZiBfX0FSTV9FTEZfSF9fCisjZGVmaW5l
IF9fQVJNX0VMRl9IX18KKwordHlwZWRlZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGxvbmcJY3I7
Cit9IGNyYXNoX3hlbl9jb3JlX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBs
b25nCXIwOworCXVuc2lnbmVkIGxvbmcJcjE7CisJdW5zaWduZWQgbG9uZwlyMjsKKwl1bnNp
Z25lZCBsb25nCXIzOworCXVuc2lnbmVkIGxvbmcJcjQ7CisJdW5zaWduZWQgbG9uZwlyNTsK
Kwl1bnNpZ25lZCBsb25nCXI2OworCXVuc2lnbmVkIGxvbmcJcjc7CisJdW5zaWduZWQgbG9u
ZwlyODsKKwl1bnNpZ25lZCBsb25nCXI5OworCXVuc2lnbmVkIGxvbmcJcjEwOworCXVuc2ln
bmVkIGxvbmcJcjExOworCXVuc2lnbmVkIGxvbmcJcjEyOworCXVuc2lnbmVkIGxvbmcJcjEz
OworCXVuc2lnbmVkIGxvbmcJcjE0OworCXVuc2lnbmVkIGxvbmcJcjE1OworfSBFTEZfR3Jl
Z3NldDsKKworc3RhdGljIGlubGluZSB2b2lkIGVsZl9jb3JlX3NhdmVfcmVncyhFTEZfR3Jl
Z3NldCAqY29yZV9yZWdzLAorCQkJCSAgICAgIGNyYXNoX3hlbl9jb3JlX3QgKnhlbl9jb3Jl
X3JlZ3MpCit7Cit9CisKKyNlbmRpZgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNs
dWRlL2FzbS1hcm0vZXZlbnQuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2V2ZW50LmgJRnJpIEZlYiAw
MyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsMzkgQEAKKyNpZm5kZWYgX19BUk1f
RVZFTlRfSF9fCisjZGVmaW5lIF9fQVJNX0VWRU5UX0hfXworCisjaW5jbHVkZSA8eGVuL3No
YXJlZC5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXwordm9pZCB2Y3B1X2tpY2soc3RydWN0
IHZjcHUgKnYpOwordm9pZCB2Y3B1X21hcmtfZXZlbnRzX3BlbmRpbmcoc3RydWN0IHZjcHUg
KnYpOworCitpbnQgaHZtX2xvY2FsX2V2ZW50c19uZWVkX2RlbGl2ZXJ5KHN0cnVjdCB2Y3B1
ICp2KTsKK3N0YXRpYyBpbmxpbmUgaW50IGxvY2FsX2V2ZW50c19uZWVkX2RlbGl2ZXJ5KHZv
aWQpCit7CisJc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OworCXJldHVybiAoKHZjcHVfaW5m
byh2LCBldnRjaG5fdXBjYWxsX3BlbmRpbmcpICYmIAorCQkhdmNwdV9pbmZvKHYsIGV2dGNo
bl91cGNhbGxfbWFzaykpKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgbG9jYWxfZXZlbnRf
ZGVsaXZlcnlfaXNfZW5hYmxlZCh2b2lkKQoreworCXJldHVybiAhdmNwdV9pbmZvKGN1cnJl
bnQsIGV2dGNobl91cGNhbGxfbWFzayk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2Nh
bF9ldmVudF9kZWxpdmVyeV9kaXNhYmxlKHZvaWQpCit7CisJdmNwdV9pbmZvKGN1cnJlbnQs
IGV2dGNobl91cGNhbGxfbWFzaykgPSAxOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbG9j
YWxfZXZlbnRfZGVsaXZlcnlfZW5hYmxlKHZvaWQpCit7CisJdmNwdV9pbmZvKGN1cnJlbnQs
IGV2dGNobl91cGNhbGxfbWFzaykgPSAwOworfQorCisvKiBObyBhcmNoIHNwZWNpZmljIHZp
cnEgZGVmaW5pdGlvbiBub3cuIERlZmF1bHQgdG8gZ2xvYmFsLiAqLworc3RhdGljIGlubGlu
ZSBpbnQgYXJjaF92aXJxX2lzX2dsb2JhbChpbnQgdmlycSkKK3sKKwlyZXR1cm4gMTsKK30K
KyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLworI2VuZGlmIC8qIV9fQVJNX0VWRU5UX0hfXyAq
LwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2ZsdXNodGxiLmgK
LS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVu
L2luY2x1ZGUvYXNtLWFybS9mbHVzaHRsYi5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiAr
MDkwMApAQCAtMCwwICsxLDI1IEBACisjaWZuZGVmIF9fQVJNX0ZMVVNIVExCX0hfXworI2Rl
ZmluZSBfX0FSTV9GTFVTSFRMQl9IX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNp
bmNsdWRlIDx4ZW4vcGVyY3B1Lmg+CisjaW5jbHVkZSA8eGVuL3NtcC5oPgorCisjaWZuZGVm
IF9fQVNTRU1CTFlfXworI2RlZmluZSBsb2NhbF9mbHVzaF90bGIobWFzaykKKyNkZWZpbmUg
Zmx1c2hfdGxiX21hc2sobWFzaykJbG9jYWxfZmx1c2hfdGxiKCkKKworI2RlZmluZSB0bGJm
bHVzaF9maWx0ZXIobWFzayxwYWdlX3RpbWVzdGFtcCkJXAorZG8gewkJCQkJCVwKKwlwcmlu
dGsoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuXG4iKTsJXAorfSB3aGlsZSgwKQorCisjZGVmaW5l
IHRsYmZsdXNoX2N1cnJlbnRfdGltZSgpCXRsYmZsdXNoX2Nsb2NrCisKK0RFQ0xBUkVfUEVS
X0NQVSh1MzIsIHRsYl9jYXBzKTsKK0RFQ0xBUkVfUEVSX0NQVSh1MzIsIHRsYmZsdXNoX3Rp
bWUpOworCitleHRlcm4gdTMyIHRsYmZsdXNoX2Nsb2NrOworCisjZW5kaWYKKyNlbmRpZiAv
KiBfX0FSTV9UTEJfSF9fICovCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vZ3JhbnRfdGFibGUuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgJRnJp
IEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEsNjIgQEAKKyNpZm5kZWYg
X19BU01fR1JBTlRfVEFCTEVfSF9fCisjZGVmaW5lIF9fQVNNX0dSQU5UX1RBQkxFX0hfXwor
CisjZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDQKKworLyoKKyAqIENhbGxlciBt
dXN0IG93biBjYWxsZXIncyBCSUdMT0NLLCBpcyByZXNwb25zaWJsZSBmb3IgZmx1c2hpbmcg
dGhlIFRMQiwgYW5kCisgKiBtdXN0IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhZ2UuCisg
Ki8KK2ludCBjcmVhdGVfZ3JhbnRfaG9zdF9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIHVuc2ln
bmVkIGxvbmcgZnJhbWUsCisJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVk
IGludCBjYWNoZV9mbGFncyk7CitpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcoCisg
ICAgdWludDY0X3QgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwgdWludDY0X3QgbmV3X2Fk
ZHIsIHVuc2lnbmVkIGludCBmbGFncyk7CisKKyNkZWZpbmUgZ250dGFiX2NyZWF0ZV9zaGFy
ZWRfcGFnZShkLCB0LCBpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHZp
cnRfdG9fcGFnZSgoY2hhciAqKSh0KS0+c2hhcmVkX3Jhd1tpXSksICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAoZCksIFhFTlNIQVJFX3dyaXRhYmxlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKCAwICkKKworI2Rl
ZmluZSBnbnR0YWJfY3JlYXRlX3N0YXR1c19wYWdlKGQsIHQsIGkpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHNoYXJl
X3hlbl9wYWdlX3dpdGhfZ3Vlc3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICB2aXJ0X3RvX3BhZ2UoKGNoYXIgKikodCktPnN0YXR1c1tp
XSksICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIChkKSwgWEVOU0hB
UkVfd3JpdGFibGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoIDAgKQorCisKKyNkZWZpbmUgZ250dGFiX3NoYXJlZF9tZm4oZCwgdCwg
aSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodmlydF90b19tYWRkcigodCktPnNo
YXJlZF9yYXdbaV0pID4+IFBBR0VfU0hJRlQpKQorCisjZGVmaW5lIGdudHRhYl9zaGFyZWRf
Z21mbihkLCB0LCBpKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAobWZuX3RvX2dtZm4o
ZCwgZ250dGFiX3NoYXJlZF9tZm4oZCwgdCwgaSkpKQorCisKKyNkZWZpbmUgZ250dGFiX3N0
YXR1c19tZm4odCwgaSkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodmlydF90
b19tYWRkcigodCktPnN0YXR1c1tpXSkgPj4gUEFHRV9TSElGVCkpCisKKyNkZWZpbmUgZ250
dGFiX3N0YXR1c19nbWZuKGQsIHQsIGkpICAgICAgICAgICAgICAgICAgICAgXAorICAgICht
Zm5fdG9fZ21mbihkLCBnbnR0YWJfc3RhdHVzX21mbih0LCBpKSkpCisKKyNkZWZpbmUgZ250
dGFiX21hcmtfZGlydHkoZCwgZikgKCh2b2lkKWYpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBn
bnR0YWJfY2xlYXJfZmxhZyh1bnNpZ25lZCBsb25nIG5yLCB1aW50MTZfdCAqYWRkcikKK3sK
KyAgICBjbGVhcl9iaXQobnIsICh1bnNpZ25lZCBsb25nICopYWRkcik7Cit9CisKKy8qIEZv
cmVpZ24gbWFwcGluZ3Mgb2YgSEhWTS1ndWVzdCBwYWdlcyBkbyBub3QgbW9kaWZ5IHRoZSB0
eXBlIGNvdW50LiAqLworI2RlZmluZSBnbnR0YWJfaG9zdF9tYXBwaW5nX2dldF9wYWdlX3R5
cGUob3AsIGxkLCByZCkgICBcCisgICAgKCEoKG9wKS0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9u
bHkpICYmICAgICAgICAgICAgICAgIFwKKyAgICAgKCgobGQpID09IChyZCkpIHx8ICFwYWdp
bmdfbW9kZV9leHRlcm5hbChyZCkpKQorCisvKiBEb25lIGltcGxpY2l0bHkgd2hlbiBwYWdl
IHRhYmxlcyBhcmUgZGVzdHJveWVkLiAqLworI2RlZmluZSBnbnR0YWJfcmVsZWFzZV9ob3N0
X21hcHBpbmdzKGRvbWFpbikgKCBwYWdpbmdfbW9kZV9leHRlcm5hbChkb21haW4pICkKKwor
c3RhdGljIGlubGluZSBpbnQgcmVwbGFjZV9ncmFudF9zdXBwb3J0ZWQodm9pZCkKK3sKKyAg
ICByZXR1cm4gMTsKK30KKyNlbmRpZiAvKiBfX0FTTV9HUkFOVF9UQUJMRV9IX18gKi8KZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF9hY2Nlc3MuaAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4v
aW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAx
MiArMDkwMApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqLworCisjaWZuZGVmIF9fQVJNX0dV
RVNUX0FDQ0VTU19IX18KKyNkZWZpbmUgX19BUk1fR1VFU1RfQUNDRVNTX0hfXworCisjZGVm
aW5lIF9fcmFuZ2Vfb2soYWRkciwgc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJdW5zaWduZWQgbG9uZyBm
bGFncywgc3VtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlf
X2FzbV9fKCJhZGRzICAgJTEsICUyLCAlM1xuXHQiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorCQkic2JjY2NzICUxLCAlMSwgJTBcblx0IiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKwkJIm1vdmNjICAlMCwgIzAiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisJCTogIj0mciIoZmxhZ3MpLCAiPSZyIihzdW0p
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQk6ICJyIihhZGRyKSwgIklyIihz
aXplKSwgIjAiKEhZUEVSVklTT1JfVklSVF9TVEFSVCkgICAgIFwKKwkJOiAiY2MiKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZmxhZ3M7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK30pCisKKyNkZWZpbmUgYWNjZXNzX29rKGFkZHIsc2l6ZSkgICAgKF9fcmFuZ2Vf
b2soYWRkcixzaXplKSA9PSAwKQorCisjZGVmaW5lIGFycmF5X2FjY2Vzc19vayhhZGRyLGNv
dW50LHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJKGxpa2VseShj
b3VudCA8ICh+MFVML3NpemUpKSAmJiBhY2Nlc3Nfb2soYWRkcixjb3VudCpzaXplKSkKKwor
LyogUmF3IGFjY2VzcyBmdW5jdGlvbnM6IG5vIHR5cGUgY2hlY2tpbmcuICovCisjZGVmaW5l
IHJhd19jb3B5X3RvX2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgICAgICBcCisgICAgIF9fY29w
eV90b191c2VyKChkc3QpLCAoc3JjKSwgKGxlbikpCisjZGVmaW5lIHJhd19jb3B5X2Zyb21f
Z3Vlc3QoZHN0LCBzcmMsIGxlbikgICAgICBcCisgICAgIF9fY29weV9mcm9tX3VzZXIoKGRz
dCksIChzcmMpLCAobGVuKSkKKyNkZWZpbmUgcmF3X2NsZWFyX2d1ZXN0KGRzdCwgIGxlbikg
ICAgICAgICAgICAgIFwKKyAgICAgX19jbGVhcl91c2VyKChkc3QpLCAobGVuKSkKKyNkZWZp
bmUgX19yYXdfY29weV90b19ndWVzdChkc3QsIHNyYywgbGVuKSAgICAgIFwKKyAgICAgX19j
b3B5X3RvX3VzZXIoKGRzdCksIChzcmMpLCAobGVuKSkKKyNkZWZpbmUgX19yYXdfY29weV9m
cm9tX2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgIFwKKyAgICAgX19jb3B5X2Zyb21fdXNlcigo
ZHN0KSwgKHNyYyksIChsZW4pKQorI2RlZmluZSBfX3Jhd19jbGVhcl9ndWVzdChkc3QsICBs
ZW4pICAgICAgICAgICAgXAorICAgICBfX2NsZWFyX3VzZXIoKGRzdCksIChsZW4pKQorCisK
KworLyogSXMgdGhlIGd1ZXN0IGhhbmRsZSBhIE5VTEwgcmVmZXJlbmNlPyAqLworI2RlZmlu
ZSBndWVzdF9oYW5kbGVfaXNfbnVsbChobmQpCQlcCisJKChobmQpLnAgPT0gTlVMTCkKKwor
LyogT2Zmc2V0IHRoZSBnaXZlbiBndWVzdCBoYW5kbGUgaW50byB0aGUgYXJyYXkgaXQgcmVm
ZXJzIHRvLiAqLworI2RlZmluZSBndWVzdF9oYW5kbGVfYWRkX29mZnNldChobmQsIG5yKQlc
CisJKChobmQpLnAgKz0gKG5yKSkKKworLyogQ2FzdCBhIGd1ZXN0IGhhbmRsZSB0byB0aGUg
c3BlY2lmaWVkIHR5cGUgb2YgaGFuZGxlLiAqLworI2RlZmluZSBndWVzdF9oYW5kbGVfY2Fz
dChobmQsIHR5cGUpCQlcCisoewkJCQkJCVwKKyAgICB0eXBlICpfeCA9IChobmQpLnA7CQkJ
CVwKKyAgICAoWEVOX0dVRVNUX0hBTkRMRSh0eXBlKSkgeyBfeCB9OwkJXAorfSkKKworCisv
KgorICogUHJlLXZhbGlkYXRlIGEgZ3Vlc3QgaGFuZGxlLgorICogQWxsb3dzIHVzZSBvZiBm
YXN0ZXIgX19jb3B5XyogZnVuY3Rpb25zLgorICovCisjZGVmaW5lIGd1ZXN0X2hhbmRsZV9v
a2F5KGhuZCwgbnIpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcnJheV9hY2Nlc3Nf
b2soKGhuZCkucCwgKG5yKSwgc2l6ZW9mKCooaG5kKS5wKSkKKyAgICAKKyNkZWZpbmUgZ3Vl
c3RfaGFuZGxlX3N1YnJhbmdlX29rYXkoaG5kLCBmaXJzdCwgbGFzdCkJXAorICAgKGFycmF5
X2FjY2Vzc19vaygoaG5kKS5wICsgKGZpcnN0KSwJCQlcCisJCSAgIChsYXN0KSAtIChmaXJz
dCkgKyAxLAkJXAorCQkgICBzaXplb2YoKihobmQpLnApKSkKKy8qCisgKiBDb3B5IGFuIGFy
cmF5IG9mIG9iamVjdHMgdG8gZ3Vlc3QgY29udGV4dCB2aWEgYSBndWVzdCBoYW5kbGUuCisg
KiBPcHRpb25hbGx5IHNwZWNpZnkgYW4gb2Zmc2V0IGludG8gdGhlIGd1ZXN0IGFycmF5Lgor
ICovCisjZGVmaW5lIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGhuZCwgaWR4LCBwdHIsIG5yKSBc
CisgICAgX19jb3B5X3RvX2d1ZXN0X29mZnNldChobmQsIGlkeCwgcHRyLCBucikKKworICAK
Ky8qCisgKiBDb3B5IGFuIGFycmF5IG9mIG9iamVjdHMgZnJvbSBndWVzdCBjb250ZXh0IHZp
YSBhIGd1ZXN0IGhhbmRsZS4KKyAqIE9wdGlvbmFsbHkgc3BlY2lmeSBhbiBvZmZzZXQgaW50
byB0aGUgZ3Vlc3QgYXJyYXkuCisgKi8KKyNkZWZpbmUgY29weV9mcm9tX2d1ZXN0X29mZnNl
dChwdHIsIGhuZCwgaWR4LCBucikgXAorICAgIF9fY29weV9mcm9tX2d1ZXN0X29mZnNldChw
dHIsIGhuZCwgaWR4LCBucikKKyAgICAKKyAgICAKKy8qIENvcHkgc3ViLWZpZWxkIG9mIGEg
c3RydWN0dXJlIHRvIGd1ZXN0IGNvbnRleHQgdmlhIGEgZ3Vlc3QgaGFuZGxlLiAqLworI2Rl
ZmluZSBjb3B5X2ZpZWxkX3RvX2d1ZXN0KGhuZCwgcHRyLCBmaWVsZCkgXAorICAgIF9fY29w
eV9maWVsZF90b19ndWVzdChobmQsIHB0ciwgZmllbGQpCisKKy8qIENvcHkgc3ViLWZpZWxk
IG9mIGEgc3RydWN0dXJlIGZyb20gZ3Vlc3QgY29udGV4dCB2aWEgYSBndWVzdCBoYW5kbGUu
ICovCisjZGVmaW5lIGNvcHlfZmllbGRfZnJvbV9ndWVzdChwdHIsIGhuZCwgZmllbGQpIFwK
KyAgICBfX2NvcHlfZmllbGRfZnJvbV9ndWVzdChwdHIsIGhuZCwgZmllbGQpCisgICAgCisj
ZGVmaW5lIF9fY29weV90b19ndWVzdF9vZmZzZXQoaG5kLCBvZmYsIHB0ciwgbnIpICh7ICAg
IFwKKyAgICBjb25zdCB0eXBlb2YoKihwdHIpKSAqX3MgPSAocHRyKTsgICAgICAgICAgICAg
ICAgICAgXAorICAgIGNoYXIgKCpfZClbc2l6ZW9mKCpfcyldID0gKHZvaWQgKikoaG5kKS5w
OyAgICAgICAgICBcCisgICAgKCh2b2lkKSgoaG5kKS5wID09IChwdHIpKSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBfX2NvcHlfdG9fdXNlcihfZCsob2ZmKSwgX3MsIHNp
emVvZigqX3MpKihucikpOyAgICAgXAorfSkKKworI2RlZmluZSBfX2NvcHlfZnJvbV9ndWVz
dF9vZmZzZXQocHRyLCBobmQsIG9mZiwgbnIpICh7ICBcCisgICAgY29uc3QgdHlwZW9mKCoo
cHRyKSkgKl9zID0gKGhuZCkucDsgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlb2YoKihw
dHIpKSAqX2QgPSAocHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fY29w
eV9mcm9tX3VzZXIoX2QsIF9zKyhvZmYpLCBzaXplb2YoKl9kKSoobnIpKTsgICBcCit9KQor
CisjZGVmaW5lIF9fY29weV9maWVsZF90b19ndWVzdChobmQsIHB0ciwgZmllbGQpICh7ICAg
ICAgIFwKKyAgICBjb25zdCB0eXBlb2YoJihwdHIpLT5maWVsZCkgX3ggPSAmKGhuZCkucC0+
ZmllbGQ7ICAgXAorICAgIGNvbnN0IHR5cGVvZigmKHB0ciktPmZpZWxkKSBfeSA9ICYocHRy
KS0+ZmllbGQ7ICAgICBcCisgICAgX19jb3B5X3RvX3VzZXIoX3gsIF95LCBzaXplb2YoKl94
KSk7ICAgICAgICAgICAgICAgIFwKK30pCisKKyNkZWZpbmUgX19jb3B5X2ZpZWxkX2Zyb21f
Z3Vlc3QocHRyLCBobmQsIGZpZWxkKSAoeyAgICAgXAorICAgIGNvbnN0IHR5cGVvZigmKHB0
ciktPmZpZWxkKSBfeCA9ICYoaG5kKS5wLT5maWVsZDsgICBcCisgICAgY29uc3QgdHlwZW9m
KCYocHRyKS0+ZmllbGQpIF95ID0gJihwdHIpLT5maWVsZDsgICAgIFwKKyAgICBfX2NvcHlf
ZnJvbV91c2VyKF95LCBfeCwgc2l6ZW9mKCpfeCkpOyAgICAgICAgICAgICAgXAorfSkKKwor
CitleHRlcm4gdW5zaWduZWQgbG9uZyBfX2FyY2hfY29weV9mcm9tX3VzZXIodm9pZCAqdG8s
IGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbik7CitleHRlcm4gdW5zaWduZWQg
bG9uZyBfX2FyY2hfY29weV90b191c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1
bnNpZ25lZCBsb25nIG4pOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19hcmNoX2NsZWFyX3Vz
ZXIodm9pZCAqdG8sIHVuc2lnbmVkIGxvbmcgbik7CisKK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBfX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1
bnNpZ25lZCBsb25nIG4pCit7CisgICAgICAgIHJldHVybiBfX2FyY2hfY29weV9mcm9tX3Vz
ZXIodG8sIGZyb20sIG4pOworfQorCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBf
X2NvcHlfdG9fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9u
ZyBuKQoreworICAgICAgICByZXR1cm4gX19hcmNoX2NvcHlfdG9fdXNlcih0bywgZnJvbSwg
bik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2NsZWFyX3VzZXIodm9p
ZCAqdG8sIHVuc2lnbmVkIGxvbmcgbikKK3sKKwlyZXR1cm4gX19hcmNoX2NsZWFyX3VzZXIo
dG8sIG4pOworfQorI2VuZGlmCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vaGFyZGlycS5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaGFyZGlycS5oCUZyaSBGZWIgMDMg
MTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDIxIEBACisjaWZuZGVmIF9fQVJNX0hB
UkRJUlFfSF9fCisjZGVmaW5lIF9fQVJNX0hBUkRJUlFfSF9fCisKKyNpbmNsdWRlIDx4ZW4v
Y29uZmlnLmg+CisjaW5jbHVkZSA8eGVuL2NhY2hlLmg+CisKKyNpZm5kZWYgX19BU1NFTUJM
WV9fCit0eXBlZGVmIHN0cnVjdCBpcnFfY3B1c3RhdCB7CisJdW5zaWduZWQgbG9uZyBfX3Nv
ZnRpcnFfcGVuZGluZzsKKwl1bnNpZ25lZCBsb25nIF9fbG9jYWxfaXJxX2NvdW50OworCXVu
c2lnbmVkIGxvbmcgX19ubWlfY291bnQ7Cit9IF9fY2FjaGVsaW5lX2FsaWduZWQgaXJxX2Nw
dXN0YXRfdDsKKworI2luY2x1ZGUgPHhlbi9pcnFfY3B1c3RhdC5oPiAgICAvKiBTdGFuZGFy
ZCBtYXBwaW5ncyBmb3IgaXJxX2NwdXN0YXRfdCBhYm92ZSAqLworCisjZGVmaW5lIGluX2ly
cSgpIAkobG9jYWxfaXJxX2NvdW50KHNtcF9wcm9jZXNzb3JfaWQoKSkgIT0gMCkKKworI2Rl
ZmluZSBpcnFfZW50ZXIoKSAgICAgKGxvY2FsX2lycV9jb3VudChzbXBfcHJvY2Vzc29yX2lk
KCkpKyspCisjZGVmaW5lIGlycV9leGl0KCkgICAgICAobG9jYWxfaXJxX2NvdW50KHNtcF9w
cm9jZXNzb3JfaWQoKSktLSkKKyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLworI2VuZGlmIC8q
IV9fQVJNX0hBUkRJUlFfSF9fKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUv
YXNtLWFybS9oeXBlcmNhbGwuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2h5cGVyY2FsbC5oCUZyaSBG
ZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDY4IEBACisvKgorICogaHlw
ZXJjYWxsLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggU2Ftc3VuZyBFbGVjdHJvbmlj
cworICogICAgICAgICAgSm9vWW91bmcgSHdhbmcgPGpvb3lvdW5nLmh3YW5nQHNhbXN1bmcu
Y29tPgorICogICAgICAgICAgSmFlbWluIFJ5dSA8am03Ny5yeXVAc2Ftc3VuZy5jb20+Cisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg
IDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19BUk1fSFlQRVJDQUxMX0hfXwor
I2RlZmluZSBfX0FSTV9IWVBFUkNBTExfSF9fCisjaW5jbHVkZSA8cHVibGljL3BoeXNkZXYu
aD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK2V4dGVybiBsb25nIGRvX3NldF90cmFwX3Rh
YmxlKFhFTl9HVUVTVF9IQU5ETEUodHJhcF9pbmZvX3QpIHRyYXBzKTsKKworZXh0ZXJuIGlu
dCBkb19tbXVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEUobW11X3VwZGF0ZV90KSB1cmVxcywK
KwkJCSB1bnNpZ25lZCBpbnQgY291bnQsCisJCQkgWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBw
ZG9uZSwKKwkJCSB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSk7CisKK2V4dGVybiBsb25nIGRv
X3NldF9nZHQoWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJhbWVfbGlzdCwKKwkJICAgICAg
IHVuc2lnbmVkIGludCBlbnRyaWVzKTsKKworZXh0ZXJuIGxvbmcgZG9fc3RhY2tfc3dpdGNo
KHVuc2lnbmVkIGxvbmcgc3MsIHVuc2lnbmVkIGxvbmcgZXNwKTsKKworZXh0ZXJuIGxvbmcg
ZG9fZnB1X3Rhc2tzd2l0Y2goaW50IHNldCk7CisKK2V4dGVybiBsb25nIGRvX3NldF9kZWJ1
Z3JlZyhpbnQgcmVnLCB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgZG9fZ2V0X2RlYnVncmVnKGludCByZWcpOworCitleHRlcm4gbG9uZyBkb191cGRh
dGVfZGVzY3JpcHRvcih1NjQgcGEsIHU2NCBkZXNjKTsKKworZXh0ZXJuIGludCBkb191cGRh
dGVfdmFfbWFwcGluZyh1MzIgdmEsIHUzMiBmbGFncywgdTY0IHZhbDY0KTsKKworZXh0ZXJu
IGxvbmcgZG9fcGh5c2Rldl9vcChYRU5fR1VFU1RfSEFORExFKHBoeXNkZXZfb3BfdCkgdW9w
KTsKKworZXh0ZXJuIGludCBkb191cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbih1bnNp
Z25lZCBsb25nIHZhLAorCQkJCQkgICAgdTY0IHZhbDY0LAorCQkJCQkgICAgdW5zaWduZWQg
bG9uZyBmbGFncywKKwkJCQkJICAgIGRvbWlkX3QgZG9taWQpOworCitleHRlcm4gaW50IGRv
X21tdWV4dF9vcChYRU5fR1VFU1RfSEFORExFKG1tdWV4dF9vcF90KSB1b3BzLAorCQkJdW5z
aWduZWQgaW50IGNvdW50LAorCQkJWEVOX0dVRVNUX0hBTkRMRSh1aW50KSBwZG9uZSwKKwkJ
CXVuc2lnbmVkIGludCBmb3JlaWduZG9tKTsKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9f
aXJldCh2b2lkKTsKKworc3RydWN0IHZjcHU7CitleHRlcm4gbG9uZyBhcmNoX2RvX3ZjcHVf
b3AoaW50IGNtZCwgc3RydWN0IHZjcHUgKnYsIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJn
KTsKKworZXh0ZXJuIGxvbmcgZG9fc2V0X2NhbGxiYWNrcyh1bnNpZ25lZCBsb25nIGV2ZW50
LCB1bnNpZ25lZCBsb25nIGZhaWxzYWZlKTsKKyNlbmRpZiAvKiFfX0FTU0VNQkxZX18qLwor
I2VuZGlmIC8qIV9fQVJNX0hZUEVSQ0FMTF9IX18qLwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4
ZW4vaW5jbHVkZS9hc20tYXJtL2luaXQuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2luaXQuaAlGcmkg
RmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIF9f
QVJNX0lOSVRfSF9fCisjZGVmaW5lIF9fQVJNX0lOSVRfSF9fCisKKyNlbmRpZiAvKiBfWEVO
X0FTTV9JTklUX0ggKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFy
bS9pby5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisr
KyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW8uaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBfX0FSTV9JT19IX18KKyNkZWZpbmUg
X19BUk1fSU9fSF9fCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisKKyNkZWZpbmUgbW1pb193
cml0ZWIodixhKQkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKGEpID0gKHYpKQorI2Rl
ZmluZSBtbWlvX3dyaXRldyh2LGEpCSgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopKGEp
ID0gKHYpKQorI2RlZmluZSBtbWlvX3dyaXRlbCh2LGEpCSgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKShhKSA9ICh2KSkKKworI2RlZmluZSBtbWlvX3JlYWRiKGEpCQkoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopKGEpKQorI2RlZmluZSBtbWlvX3JlYWR3KGEpCQkoKih2b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCAqKShhKSkKKyNkZWZpbmUgbW1pb19yZWFkbChhKQkJKCoo
dm9sYXRpbGUgdW5zaWduZWQgaW50ICopKGEpKQorCisjZGVmaW5lIHdyaXRlYih2LGEpCQlt
bWlvX3dyaXRlYih2LGEpCisjZGVmaW5lIHdyaXRldyh2LGEpCQltbWlvX3dyaXRldyh2LGEp
CisKKyNkZWZpbmUgd3JpdGVsKHYsYSkJCW1taW9fd3JpdGVsKHYsYSkKKyNkZWZpbmUgcmVh
ZGIoYSkJCW1taW9fcmVhZGIoYSkKKyNkZWZpbmUgcmVhZHcoYSkJCW1taW9fcmVhZHcoYSkK
KyNkZWZpbmUgcmVhZGwoYSkJCW1taW9fcmVhZGwoYSkKKworI2RlZmluZSBpb3JlbWFwKHgs
bCkJCShfX3ZhKHgpKQorI2RlZmluZSBpb3VubWFwKHApCQkoKHZvaWQpMCkKKworI2RlZmlu
ZSBpbmIoYSkJCQltbWlvX3JlYWRiKGEpCisjZGVmaW5lIGludyhhKQkJCW1taW9fcmVhZHco
YSkKKyNkZWZpbmUgaW5sKGEpCQkJbW1pb19yZWFkbChhKQorCisjZGVmaW5lIG91dGIodixh
KQkJbW1pb193cml0ZWIodixhKQorI2RlZmluZSBvdXR3KHYsYSkJCW1taW9fd3JpdGV3KHYs
YSkKKyNkZWZpbmUgb3V0bCh2LGEpCQltbWlvX3dyaXRlbCh2LGEpCisKKyNlbmRpZgkvKiBf
X0FSTV9JT19IX18gKi8KZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFy
bS9pb2NhcC5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW9jYXAuaAlGcmkgRmViIDAzIDE2OjA3OjAz
IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxNSBAQAorI2lmbmRlZiBfX0FSTV9JT0NBUF9IX18K
KyNkZWZpbmUgX19BUk1fSU9DQVBfSF9fCisKKyNkZWZpbmUgaW9wb3J0c19wZXJtaXRfYWNj
ZXNzKGQsIHMsIGUpICAgICAgICAgICAgICAgICAgXAorICAgIHJhbmdlc2V0X2FkZF9yYW5n
ZSgoZCktPmFyY2guaW9wb3J0X2NhcHMsIHMsIGUpCisKKyNkZWZpbmUgaW9wb3J0c19kZW55
X2FjY2VzcyhkLCBzLCBlKSAgICAgICAgICAgICAgICAgICAgXAorICAgIHJhbmdlc2V0X3Jl
bW92ZV9yYW5nZSgoZCktPmFyY2guaW9wb3J0X2NhcHMsIHMsIGUpCisKKyNkZWZpbmUgaW9w
b3J0c19hY2Nlc3NfcGVybWl0dGVkKGQsIHMsIGUpICAgICAgICAgICAgICAgXAorICAgIHJh
bmdlc2V0X2NvbnRhaW5zX3JhbmdlKChkKS0+YXJjaC5pb3BvcnRfY2FwcywgcywgZSkKKwor
I2RlZmluZSBtdWx0aXBhZ2VfYWxsb2NhdGlvbl9wZXJtaXR0ZWQoZCwgb3JkZXIpCSgwKQor
CisjZW5kaWYKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9pb21t
dS5oCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3hlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIg
KzA5MDAKQEAgLTAsMCArMSwxNCBAQAorI2lmbmRlZiBfX0FSTV9JT01NVV9IX18KKyNkZWZp
bmUgX19BUk1fSU9NTVVfSF9fCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdGF0aWMgaW5s
aW5lIGludCBpc19pb21lbV9wYWdlKHVuc2lnbmVkIGxvbmcgbWZuKQoreworCXJldHVybiAw
OworfQorCitpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg
bG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworaW50
IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4p
OworI2VuZGlmIC8qIV9fQVNTRU1CTFlfXyovCisjZW5kaWYgLyohX19BUk1fSU9NTVVfSF9f
Ki8KKwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oCi0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9p
bmNsdWRlL2FzbS1hcm0vaXJxLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBA
IC0wLDAgKzEsNTAgQEAKKyNpZm5kZWYgX19BUk1fSVJRX0hfXworI2RlZmluZSBfX0FSTV9J
UlFfSF9fCisKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8eGVuL2NwdW1h
c2suaD4KKworI2lmbmRlZiBOUl9JUlFTCisjZGVmaW5lIE5SX0lSUVMJMjU2CisjZW5kaWYK
KworI2RlZmluZSBkb21haW5fcGlycV90b19pcnEoZCwgcGlycSkJKHBpcnEpCisjZGVmaW5l
IGRvbWFpbl9pcnFfdG9fcGlycShkLCBpcnEpCShpcnEpICAgICAgICAgICAgICAgICAgICAg
ICAKKyNkZWZpbmUgZG9tYWluX3BpcnFfdG9fZW11aXJxKGQsIHBpcnEpCShwaXJxKQorI2Rl
ZmluZSBkb21haW5fZW11aXJxX3RvX3BpcnEoZCwgaXJxKQkoaXJxKQorCisjZGVmaW5lIGly
cV9jZmcoaXJxKQkJKCZpcnFfY2ZnW2lycV0pCisjZGVmaW5lIGlycV90b19kZXNjKGlycSkJ
KCZpcnFfZGVzY1tpcnFdKQkKKworI2RlZmluZSBJUlFfTUFYX0dVRVNUUwkJNwordHlwZWRl
ZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGludCBhY2tfdHlwZTsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBucl9ndWVzdHM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgaW5fZmxpZ2h0OworICAg
ICAgICB1bnNpZ25lZCBjaGFyIHNoYXJlYWJsZTsKKyAgICAgICAgc3RydWN0IGRvbWFpbiAq
Z3Vlc3RbSVJRX01BWF9HVUVTVFNdOworfSBpcnFfZ3Vlc3RfYWN0aW9uX3Q7CisKK3N0cnVj
dCBpcnFfY2ZnIHsKKwlpbnQgaXJxOworfTsKKworc3RydWN0IGFyY2hfaXJxX2Rlc2Mgewor
fTsKKworc3RydWN0IGFyY2hfcGlycSB7CisJaW50IGlycTsKK307CisKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBERUNMQVJFX0JJVE1BUChfYml0cyxOUl9JUlFTKTsKK30gdm1hc2tfdDsK
KworZXh0ZXJuIHN0cnVjdCBpcnFfZGVzYyAqaXJxX2Rlc2M7CisKK3N0YXRpYyBpbmxpbmUg
aW50IGlycV9kZXNjX2luaXRpYWxpemVkKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKK3sKKwly
ZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIF9fQVJNX0lSUV9IX18gKi8KZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0u
aAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyMzcgQEAKKyNp
Zm5kZWYgX19BUk1fTU1fSF9fCisjZGVmaW5lIF9fQVJNX01NX0hfXworCisjaW5jbHVkZSA8
eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8YXNtL3Ay
bS5oPgorI2luY2x1ZGUgPGFzbS9pb21tdS5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNp
bmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KKworI2RlZmlu
ZSBJTlZBTElEX0dGTgkJKH4wVUwpCisjZGVmaW5lIElOVkFMSURfTUZOICAgICAgICAgICAg
ICh+MFVMKQorI2RlZmluZSBJTlZBTElEX00yUF9FTlRSWQkofjBVTCkKKworI2RlZmluZSBW
QUxJRF9NMlAoX2UpICAgICAgICAgICAgKCEoKF9lKSAmICgxVUw8PChCSVRTX1BFUl9MT05H
LTEpKSkpCisjZGVmaW5lIFNIQVJFRF9NMlBfRU5UUlkgICAgICAgICAofjBVTCAtIDFVTCkK
KyNkZWZpbmUgU0hBUkVEX00yUChfZSkgICAgICAgICAgICgoX2UpID09IFNIQVJFRF9NMlBf
RU5UUlkpCisKKyNkZWZpbmUgUEZOX09SREVSKF9wZm4pCQkoKF9wZm4pLT52LmZyZWUub3Jk
ZXIpCisKKyNkZWZpbmUgUEFHRV9UWVBFKHBhZ2UpCQkoKChwYWdlKS0+dS5pbnVzZS50eXBl
X2luZm8pICYgUEdUX3R5cGVfbWFzayApCisKKyNkZWZpbmUgcGlja2xlX2RvbXB0cihfZCkJ
KCh1MzIpKHVuc2lnbmVkIGxvbmcpKF9kKSkKKyNkZWZpbmUgdW5waWNrbGVfZG9tcHRyKF9k
KQkoKHN0cnVjdCBkb21haW4gKikodW5zaWduZWQgbG9uZykoX2QpKQorCisjZGVmaW5lIFBS
dHlwZV9pbmZvCQkiMDhseCIKKworI2RlZmluZSBwYWdlX2dldF9vd25lcihfcCkJKHVucGlj
a2xlX2RvbXB0cigoX3ApLT52LmludXNlLl9kb21haW4pKQorI2RlZmluZSBwYWdlX3NldF9v
d25lcihfcCxfZCkJKChfcCktPnYuaW51c2UuX2RvbWFpbiA9IHBpY2tsZV9kb21wdHIoX2Qp
KQorCisjZGVmaW5lIFhFTlNIQVJFX3dyaXRhYmxlIAkwCisjZGVmaW5lIFhFTlNIQVJFX3Jl
YWRvbmx5IAkxCisKKworI2RlZmluZSBQR19zaGlmdChpZHgpCQkoQklUU19QRVJfTE9ORyAt
IChpZHgpKQorI2RlZmluZSBQR19tYXNrKHgsIGlkeCkJCSh4ICMjIFVMIDw8IFBHX3NoaWZ0
KGlkeCkpCisKKyNkZWZpbmUgUEdUX25vbmUJCVBHX21hc2soMCwgNCkgIC8qIG5vIHNwZWNp
YWwgdXNlcyBvZiB0aGlzIHBhZ2UgICAqLworI2RlZmluZSBQR1RfbDFfcGFnZV90YWJsZQlQ
R19tYXNrKDEsIDQpICAvKiB1c2luZyBhcyBhbiBMMSBwYWdlIHRhYmxlPyAgICAgKi8KKyNk
ZWZpbmUgUEdUX2wyX3BhZ2VfdGFibGUJUEdfbWFzaygyLCA0KSAgLyogdXNpbmcgYXMgYW4g
TDIgcGFnZSB0YWJsZT8gICAgICovCisjZGVmaW5lIFBHVF9sM19wYWdlX3RhYmxlCVBHX21h
c2soMywgNCkgIC8qIHVzaW5nIGFzIGFuIEwzIHBhZ2UgdGFibGU/ICAgICAqLworI2RlZmlu
ZSBQR1Rfd3JpdGFibGVfcGFnZQlQR19tYXNrKDcsIDQpICAvKiBoYXMgd3JpdGFibGUgbWFw
cGluZ3M/ICAgICAgICAgKi8KKyNkZWZpbmUgUEdUX3NoYXJlZF9wYWdlCQlQR19tYXNrKDgs
IDQpICAvKiBDb1cgc2hhcmFibGUgcGFnZSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUEdU
X3R5cGVfbWFzawkJUEdfbWFzaygxNSwgNCkgLyogQml0cyAyOC0zMSBvciA2MC02My4gICAg
ICAgICAgICovCisKKyAvKiBPd25pbmcgZ3Vlc3QgaGFzIHBpbm5lZCB0aGlzIHBhZ2UgdG8g
aXRzIGN1cnJlbnQgdHlwZT8gKi8KKyNkZWZpbmUgX1BHVF9waW5uZWQJCVBHX3NoaWZ0KDUp
CisjZGVmaW5lIFBHVF9waW5uZWQJCVBHX21hc2soMSwgNSkKKworIC8qIEhhcyB0aGlzIHBh
Z2UgYmVlbiB2YWxpZGF0ZWQgZm9yIHVzZSBhcyBpdHMgY3VycmVudCB0eXBlPyAqLworI2Rl
ZmluZSBfUEdUX3ZhbGlkYXRlZAkJUEdfc2hpZnQoNikKKyNkZWZpbmUgUEdUX3ZhbGlkYXRl
ZAkJUEdfbWFzaygxLCA2KQorCisvKiBIYXMgdGhpcyBwYWdlIGJlZW4gKnBhcnRpYWxseSog
dmFsaWRhdGVkIGZvciB1c2UgYXMgaXRzIGN1cnJlbnQgdHlwZT8gKi8KKyNkZWZpbmUgX1BH
VF9wYXJ0aWFsCQlQR19zaGlmdCg4KQorI2RlZmluZSBQR1RfcGFydGlhbAkJUEdfbWFzaygx
LCA4KQorCisgLyogUGFnZSBpcyBsb2NrZWQ/ICovCisjZGVmaW5lIF9QR1RfbG9ja2VkCQlQ
R19zaGlmdCg5KQorI2RlZmluZSBQR1RfbG9ja2VkCQlQR19tYXNrKDEsIDkpCisKKyAvKiBD
b3VudCBvZiB1c2VzIG9mIHRoaXMgZnJhbWUgYXMgaXRzIGN1cnJlbnQgdHlwZS4gKi8KKyNk
ZWZpbmUgUEdUX2NvdW50X3dpZHRoCQlQR19zaGlmdCg5KQorI2RlZmluZSBQR1RfY291bnRf
bWFzawkJKCgxVUw8PFBHVF9jb3VudF93aWR0aCktMSkKKworIC8qIENsZWFyZWQgd2hlbiB0
aGUgb3duaW5nIGd1ZXN0ICdmcmVlcycgdGhpcyBwYWdlLiAqLworI2RlZmluZSBfUEdDX2Fs
bG9jYXRlZAkJUEdfc2hpZnQoMSkKKyNkZWZpbmUgUEdDX2FsbG9jYXRlZAkJUEdfbWFzaygx
LCAxKQorCisgLyogUGFnZSBpcyBYZW4gaGVhcD8gKi8KKyNkZWZpbmUgX1BHQ194ZW5faGVh
cAkJUEdfc2hpZnQoMikKKyNkZWZpbmUgUEdDX3hlbl9oZWFwCQlQR19tYXNrKDEsIDIpCisK
KyAvKiBTZXQgd2hlbiBpcyB1c2luZyBhIHBhZ2UgYXMgYSBwYWdlIHRhYmxlICovCisjZGVm
aW5lIF9QR0NfcGFnZV90YWJsZQkJUEdfc2hpZnQoMykKKyNkZWZpbmUgUEdDX3BhZ2VfdGFi
bGUJCVBHX21hc2soMSwgMykKKworIC8qIFBhZ2UgaXMgYnJva2VuPyAqLworI2RlZmluZSBf
UEdDX2Jyb2tlbgkJUEdfc2hpZnQoNykKKyNkZWZpbmUgUEdDX2Jyb2tlbgkJUEdfbWFzaygx
LCA3KQorCisgLyogTXV0dWFsbHktZXhjbHVzaXZlIHBhZ2Ugc3RhdGVzOiB7IGludXNlLCBv
ZmZsaW5pbmcsIG9mZmxpbmVkLCBmcmVlIH0uICovCisjZGVmaW5lIFBHQ19zdGF0ZQkJUEdf
bWFzaygzLCA5KQorI2RlZmluZSBQR0Nfc3RhdGVfaW51c2UJCVBHX21hc2soMCwgOSkKKyNk
ZWZpbmUgUEdDX3N0YXRlX29mZmxpbmluZwlQR19tYXNrKDEsIDkpCisjZGVmaW5lIFBHQ19z
dGF0ZV9vZmZsaW5lZAlQR19tYXNrKDIsIDkpCisjZGVmaW5lIFBHQ19zdGF0ZV9mcmVlCQlQ
R19tYXNrKDMsIDkpCisKKyNkZWZpbmUgcGFnZV9zdGF0ZV9pcyhwZywgc3QpCVwKKwkoKChw
ZyktPmNvdW50X2luZm8mUEdDX3N0YXRlKSA9PSBQR0Nfc3RhdGVfIyNzdCkKKworIC8qIENv
dW50IG9mIHJlZmVyZW5jZXMgdG8gdGhpcyBmcmFtZS4gKi8KKyNkZWZpbmUgUEdDX2NvdW50
X3dpZHRoCQlQR19zaGlmdCg5KQorI2RlZmluZSBQR0NfY291bnRfbWFzawkJKCgxVUw8PFBH
Q19jb3VudF93aWR0aCktMSkKKworI2RlZmluZSBzZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBm
bikgXAorCWRvIHsgfSB3aGlsZSgwKQorCisjZGVmaW5lIGdldF9ncGZuX2Zyb21fbWZuKG1m
bikJKChtZm4pKQorCisjZGVmaW5lIG1mbl90b19nbWZuKF9kLCBtZm4pCShtZm4pCisKKyNk
ZWZpbmUgZ21mbl90b19tZm4oX2QsIGdwZm4pCShncGZuKQorCisjZGVmaW5lIGRvbWFpbl9z
ZXRfYWxsb2NfYml0c2l6ZShkKQkoKHZvaWQpMCkKKyNkZWZpbmUgZG9tYWluX2NsYW1wX2Fs
bG9jX2JpdHNpemUoZCxiKQkoYikKKworI2RlZmluZSB3cml0ZV9wdGJhc2UodikJY3B1X3N3
aXRjaF90dGIoKHYpLT5hcmNoLmN0eC50dGJyMCkKKworc3RydWN0IHBhZ2VfaW5mbworewor
CXN0cnVjdCBwYWdlX2xpc3RfZW50cnkgbGlzdDsKKworCS8qIFJlZmVyZW5jZSBjb3VudCBh
bmQgdmFyaW91cyBQR0NfeHh4IGZsYWdzIGFuZCBmaWVsZHMuICovCisJdW5zaWduZWQgbG9u
ZyBjb3VudF9pbmZvOworCisJLyogQ29udGV4dC1kZXBlbmRlbnQgZmllbGRzIGZvbGxvdy4u
LiAqLworCXVuaW9uIHsKKwkJLyogUGFnZSBpcyBpbiB1c2U6ICgoY291bnRfaW5mbyAmIFBH
Q19jb3VudF9tYXNrKSAhPSAwKS4gKi8KKwkJc3RydWN0IHsKKwkJCS8qIFR5cGUgcmVmZXJl
bmNlIGNvdW50IGFuZCB2YXJpb3VzIFBHVF94eHggZmxhZ3MgYW5kIGZpZWxkcy4gKi8KKwkJ
CXVuc2lnbmVkIGxvbmcgdHlwZV9pbmZvOworCQl9IGludXNlOworCisJCS8qIFBhZ2UgaXMg
b24gYSBmcmVlIGxpc3Q6ICgoY291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAwKS4g
Ki8KKwkJc3RydWN0IHsKKwkJCS8qIERvIFRMQnMgbmVlZCBmbHVzaGluZyBmb3Igc2FmZXR5
IGJlZm9yZSBuZXh0IHBhZ2UgdXNlPyAqLworCQkJYm9vbF90IG5lZWRfdGxiZmx1c2g7CisJ
CX0gZnJlZTsKKwl9IHU7CisKKwl1bmlvbiB7CisJCS8qIFBhZ2UgaXMgaW4gdXNlLCBidXQg
bm90IGFzIGEgc2hhZG93LiAqLworCQlzdHJ1Y3QgeworCQkJLyogT3duZXIgb2YgdGhpcyBw
YWdlICh6ZXJvIGlmIHBhZ2UgaXMgYW5vbnltb3VzKS4gKi8KKwkJCXVuc2lnbmVkIGxvbmcg
X2RvbWFpbjsKKwkJfSBpbnVzZTsKKworCQkvKiBQYWdlIGlzIG9uIGEgZnJlZSBsaXN0LiAq
LworCQlzdHJ1Y3QgeworCQkJLyogT3JkZXItc2l6ZSBvZiB0aGUgZnJlZSBjaHVuayB0aGlz
IHBhZ2UgaXMgdGhlIGhlYWQgb2YuICovCisJCQl1bnNpZ25lZCBpbnQgb3JkZXI7CisJCX0g
ZnJlZTsKKwl9IHY7CisKKwkvKgorCSAqIFRpbWVzdGFtcCBmcm9tICdUTEIgY2xvY2snLCB1
c2VkIHRvIGF2b2lkIGV4dHJhIHNhZmV0eSBmbHVzaGVzLgorCSAqIE9ubHkgdmFsaWQgZm9y
OiBhKSBmcmVlIHBhZ2VzLCBhbmQgYikgcGFnZXMgd2l0aCB6ZXJvIHR5cGUgY291bnQKKwkg
KiAoZXhjZXB0IHBhZ2UgdGFibGUgcGFnZXMgd2hlbiB0aGUgZ3Vlc3QgaXMgaW4gc2hhZG93
IG1vZGUpLgorCSAqLworCXUzMiB0bGJmbHVzaF90aW1lc3RhbXA7Cit9OworCisjaWZuZGVm
IE5ERUJVRworI2RlZmluZSBUWVBFX1NBRkVUWSAxCisjZW5kaWYKKworI2lmZGVmIFRZUEVf
U0FGRVRZCisjZGVmaW5lIFRZUEVfU0FGRShfdHlwZSxfbmFtZSkJCQkJCQlcCit0eXBlZGVm
IHN0cnVjdCB7IF90eXBlIF9uYW1lOyB9IF9uYW1lIyNfdDsJCQkJXAorc3RhdGljIGlubGlu
ZSBfbmFtZSMjX3QgXyMjX25hbWUoX3R5cGUgbikgeyByZXR1cm4gKF9uYW1lIyNfdCkgeyBu
IH07IH0gXAorc3RhdGljIGlubGluZSBfdHlwZSBfbmFtZSMjX3goX25hbWUjI190IG4pIHsg
cmV0dXJuIG4uX25hbWU7IH0KKyNlbHNlCisjZGVmaW5lIFRZUEVfU0FGRShfdHlwZSxfbmFt
ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit0eXBlZGVm
IF90eXBlIF9uYW1lIyNfdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCitzdGF0aWMgaW5saW5lIF9uYW1lIyNfdCBfIyNfbmFtZShfdHlwZSBu
KSB7IHJldHVybiBuOyB9ICAgICAgICAgICAgICAgICBcCitzdGF0aWMgaW5saW5lIF90eXBl
IF9uYW1lIyNfeChfbmFtZSMjX3QgbikgeyByZXR1cm4gbjsgfQorI2VuZGlmCisKK1RZUEVf
U0FGRSh1bnNpZ25lZCBsb25nLG1mbik7CisKKyNpZmRlZiBNRU1PUllfR1VBUkQKK3ZvaWQg
bWVtZ3VhcmRfaW5pdCh2b2lkKTsKK3ZvaWQgbWVtZ3VhcmRfZ3VhcmRfcmFuZ2Uodm9pZCAq
cCwgdW5zaWduZWQgbG9uZyBsKTsKK3ZvaWQgbWVtZ3VhcmRfdW5ndWFyZF9yYW5nZSh2b2lk
ICpwLCB1bnNpZ25lZCBsb25nIGwpOworI2Vsc2UKKyNkZWZpbmUgbWVtZ3VhcmRfaW5pdCgp
ICAgICAgICAgICAgICAgICgodm9pZCkwKQorI2RlZmluZSBtZW1ndWFyZF9ndWFyZF9yYW5n
ZShfcCxfbCkgICAgKCh2b2lkKTApCisjZGVmaW5lIG1lbWd1YXJkX3VuZ3VhcmRfcmFuZ2Uo
X3AsX2wpICAoKHZvaWQpMCkKKyNlbmRpZiAvKiBNRU1PUllfR1VBUkQgKi8KKworZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgeGVuaGVhcF9waHlzX3N0YXJ0LCB4ZW5oZWFwX3BoeXNfZW5kOwor
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgeGVuX3BoeXNfc3RhcnQsIHhlbl9waHlzX2VuZDsKK2V4
dGVybiB1bnNpZ25lZCBsb25nIG1pbl9wYWdlLCBtYXhfcGFnZTsKKworZXh0ZXJuIHN0cnVj
dCBkb21haW4gKmRvbV94ZW4sICpkb21faW8sICpkb21fY293OworZXh0ZXJuIHN0cnVjdCBw
YWdlX2luZm8gKmZyYW1lX3RhYmxlOworCit2b2lkIG1lbWd1YXJkX2d1YXJkX3N0YWNrKHZv
aWQgKnApOworCit2b2lkIHNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3Qoc3RydWN0IHBhZ2Vf
aW5mbyAqcGFnZSwgc3RydWN0IGRvbWFpbiAqZCwgaW50IHJlYWRvbmx5KTsKK3ZvaWQgc2hh
cmVfeGVuX3BhZ2Vfd2l0aF9wcml2aWxlZ2VkX2d1ZXN0cyhzdHJ1Y3QgcGFnZV9pbmZvICpw
YWdlLCBpbnQgcmVhZG9ubHkpOworCitpbnQgYWxsb2NfcGFnZV90eXBlKHN0cnVjdCBwYWdl
X2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSk7Cit2b2lkIGZyZWVfcGFnZV90eXBl
KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSk7CisKK3ZvaWQg
cHV0X3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSk7CitpbnQgIGdldF9wYWdlKHN0cnVj
dCBwYWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBkb21haW4gKmRvbWFpbik7CisKK3ZvaWQgcHV0
X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKTsKK2ludCAgZ2V0X3BhZ2VfdHlw
ZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUpOworCitzdHJ1
Y3QgZG9tYWluICpwYWdlX2dldF9vd25lcl9hbmRfcmVmZXJlbmNlKHN0cnVjdCBwYWdlX2lu
Zm8gKnBhZ2UpOworCitpbnQgaXNfaW9tZW1fcGFnZSh1bnNpZ25lZCBsb25nIG1mbik7CisK
K2ludCBzdGVhbF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwYWdlX2luZm8gKnBh
Z2UsIHVuc2lnbmVkIGludCBtZW1mbGFncyk7CitpbnQgZG9uYXRlX3BhZ2Uoc3RydWN0IGRv
bWFpbiAqZCwgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgaW50IG1lbWZsYWdz
KTsKKwordW5zaWduZWQgbG9uZyBkb21haW5fZ2V0X21heGltdW1fZ3BmbihzdHJ1Y3QgZG9t
YWluICpkKTsKKworbG9uZyBhcmNoX21lbW9yeV9vcChpbnQgb3AsIFhFTl9HVUVTVF9IQU5E
TEUodm9pZCkgYXJnKTsKKworaW50IG1hcF9wYWdlc190b194ZW4odW5zaWduZWQgbG9uZyB2
aXJ0LCB1bnNpZ25lZCBsb25nIG1mbiwgaW50IG5yLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsK
Kworc3RhdGljIGlubGluZSB2b2lkIHB1dF9wYWdlX2FuZF90eXBlKHN0cnVjdCBwYWdlX2lu
Zm8gKnBhZ2UpCit7CisJcHV0X3BhZ2VfdHlwZShwYWdlKTsKKwlwdXRfcGFnZShwYWdlKTsK
K30KKworc3RhdGljIGlubGluZSBpbnQgZ2V0X3BhZ2VfYW5kX3R5cGUoc3RydWN0IHBhZ2Vf
aW5mbyAqcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkb21haW4gKmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgdHlwZSkKK3sKKwlpbnQgcmMgPSBnZXRfcGFnZShwYWdlLCBkb21h
aW4pOworCisJaWYgKCBsaWtlbHkocmMpICYmIHVubGlrZWx5KCFnZXRfcGFnZV90eXBlKHBh
Z2UsIHR5cGUpKSApIHsKKwkJcHV0X3BhZ2UocGFnZSk7CisJCXJjID0gMDsKKwl9CisKKwly
ZXR1cm4gcmM7Cit9CisKKyNlbmRpZiAvKiBfX0FSTV9NTV9IX18gKi8KZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9tbXUuaAotLS0gL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21t
dS5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDExIEBACisj
aWZuZGVmIF9fQVJNX01NVV9IX18KKyNkZWZpbmUgX19BUk1fTU1VX0hfXworCisjZGVmaW5l
IFBBRERSX0JJVFMgICAgICAgICAgICAgIDMyCisjZGVmaW5lIFBBRERSX01BU0sgICAgICAg
ICAgICAgICgoMVVMIDw8IFBBRERSX0JJVFMpIC0gMSkKKworI2RlZmluZSBWQUREUl9CSVRT
ICAgICAgICAgICAgICAzMgorI2RlZmluZSBWQUREUl9NQVNLICAgICAgICAgICAgICAoKDFV
TCA8PCBWQUREUl9CSVRTKSAtIDEpCisKKyNlbmRpZgorCmRpZmYgLXIgZTcwMTQ2MWIxMjUx
IHhlbi9pbmNsdWRlL2FzbS1hcm0vbXVsdGljYWxsLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tdWx0
aWNhbGwuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw5IEBA
CisKKyNpZm5kZWYgX19BUk1fTVVMVElDQUxMX0hfXworI2RlZmluZSBfX0FSTV9NVUxUSUNB
TExfSF9fCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKworI2RlZmluZSBkb19tdWx0aWNh
bGxfY2FsbChfY2FsbCkKKworI2VuZGlmIC8qIF9fQVJNX01VTFRJQ0FMTF9IX18gKi8KZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmgKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUv
YXNtLWFybS9udW1hLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAg
KzEsMjEgQEAKKyNpZm5kZWYgX19BUk1fTlVNQV9IX18gCisjZGVmaW5lIF9fQVJNX05VTUFf
SF9fCisKKyNpbmNsdWRlIDx4ZW4vY3B1bWFzay5oPgorCisjZGVmaW5lIE5PREVTX1NISUZU
IAkwCisjZGVmaW5lIE1BWF9OVU1OT0RFUwkoMSA8PCBOT0RFU19TSElGVCkKKworCisjZGVm
aW5lIE5VTUFfTk9fTk9ERQkweEZGCisKK2V4dGVybiB1bnNpZ25lZCBjaGFyIGNwdV90b19u
b2RlW107CitleHRlcm4gY3B1bWFza190ICAgICBub2RlX3RvX2NwdW1hc2tbXTsKKworI2Rl
ZmluZSBjcHVfdG9fbm9kZShjcHUpCShjcHVfdG9fbm9kZVtjcHVdKQorI2RlZmluZSBwYXJl
bnRfbm9kZShub2RlKQkobm9kZSkKKyNkZWZpbmUgbm9kZV90b19maXJzdF9jcHUobm9kZSkJ
KF9fZmZzKG5vZGVfdG9fY3B1bWFza1tub2RlXSkpCisjZGVmaW5lIG5vZGVfdG9fY3B1bWFz
ayhub2RlKQkobm9kZV90b19jcHVtYXNrW25vZGVdKQorCisjZGVmaW5lIHBoeXNfdG9fbmlk
KGFkZHIpCSgwKQorI2VuZGlmCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2Fz
bS1hcm0vcDJtLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaAlGcmkgRmViIDAzIDE2OjA3OjAz
IDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMCBAQAorI2lmbmRlZiBfX0FSTV9QMk1fSF9fCisj
ZGVmaW5lIF9fQVJNX1AyTV9IX18KKworI2RlZmluZSBnZm5fdG9fbWZuKGQsIGcsIHQpCQko
ZykKKyNkZWZpbmUgZ2ZuX3RvX21mbl9xdWVyeShkLCBnLCB0KQkoZykKKyNkZWZpbmUgZ2Zu
X3RvX21mbl9ndWVzdChkLCBnLCB0KQkoZykKKyNkZWZpbmUgZ2ZuX3RvX21mbl91bnNoYXJl
KGQsIGcsIHQpCShnKQorCisjZGVmaW5lIHB1dF9nZm4oZCwgZ2ZuKQorI2VuZGlmCmRpZmYg
LXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oCi0tLSAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL2Fz
bS1hcm0vcGFnZS5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsx
LDk1IEBACisjaWZuZGVmIF9fQVJNX1BBR0VfSF9fCisjZGVmaW5lIF9fQVJNX1BBR0VfSF9f
CisKKyNpbmNsdWRlIDxhc20vY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisK
KyNkZWZpbmUgUEFHRV9TSElGVAkJMTIKKyNkZWZpbmUgUEFHRV9TSVpFCQkoMSA8PCBQQUdF
X1NISUZUKQorI2RlZmluZSBQQUdFX01BU0sJCSh+KFBBR0VfU0laRSAtIDEpKQorCisjZGVm
aW5lIFBBR0VfQUxJR04oeCkJCSgoKHgpICsgUEFHRV9TSVpFIC0gMSkgJiBQQUdFX01BU0sp
CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaW5jbHVkZSA8eGVuL2xpYi5oPgorCisjZGVm
aW5lIGNsZWFyX3BhZ2UoX3ApCQltZW1zZXQoKHZvaWQgKikoX3ApLCAwLCBQQUdFX1NJWkUp
CisjZGVmaW5lIGNvcHlfcGFnZShfdCwgX2YpCW1lbWNweSgodm9pZCAqKShfdCksICh2b2lk
ICopKF9mKSwgUEFHRV9TSVpFKTsKKworc3RhdGljIGlubGluZSBpbnQgZ2V0X29yZGVyX2Zy
b21fYnl0ZXModW5zaWduZWQgbG9uZyBzaXplKQoreworCWludCBvcmRlcjsKKworCXNpemUg
PSAoc2l6ZSAtIDEpID4+IFBBR0VfU0hJRlQ7CisJZm9yICggb3JkZXIgPSAwOyBzaXplOyBv
cmRlcisrICkKKwkJc2l6ZSA+Pj0gMTsKKworCXJldHVybiBvcmRlcjsKK30KKworc3RhdGlj
IGlubGluZSBpbnQgZ2V0X29yZGVyX2Zyb21fcGFnZXModW5zaWduZWQgbG9uZyBucl9wYWdl
cykKK3sKKwlpbnQgb3JkZXI7CisKKwlucl9wYWdlcy0tOworCWZvciAoIG9yZGVyID0gMDsg
bnJfcGFnZXM7IG9yZGVyKysgKQorCQlucl9wYWdlcyA+Pj0gMTsKKworCXJldHVybiBvcmRl
cjsKK30KKworLyogQ29udmVydCBiZXR3ZWVuIFhlbi1oZWFwIHZpcnR1YWwgYWRkcmVzc2Vz
IGFuZCBtYWNoaW5lIGFkZHJlc3Nlcy4gKi8KKworI2RlZmluZSB2aXJ0X3RvX21hZGRyKGFk
ZHIpCV9fdmlydF90b19tYWRkcigodm9pZCAqKShhZGRyKSkKKyNkZWZpbmUgbWFkZHJfdG9f
dmlydChhZGRyKQlfX21hZGRyX3RvX3ZpcnQoKHBhZGRyX3QpKGFkZHIpKQorCisjZGVmaW5l
IHZpcnRfdG9fbWZuKGFkZHIpCSh2aXJ0X3RvX21hZGRyKGFkZHIpID4+IFBBR0VfU0hJRlQp
CisKKyNkZWZpbmUgdmlydF90b19wYWdlKGFkZHIpCShtZm5fdG9fcGFnZSh2aXJ0X3RvX21h
ZGRyKGFkZHIpID4+IFBBR0VfU0hJRlQpKQorI2RlZmluZSBwYWdlX3RvX3ZpcnQoX3BhZ2Up
CW1hZGRyX3RvX3ZpcnQocGFnZV90b19tZm4oX3BhZ2UpIDw8IFBBR0VfU0hJRlQpCisKKyNk
ZWZpbmUgX19wYShhZGRyKQkJKHZpcnRfdG9fbWFkZHIoYWRkcikpCisjZGVmaW5lIF9fdmEo
YWRkcikJCShtYWRkcl90b192aXJ0KGFkZHIpKQorCisKKyNkZWZpbmUgbWZuX3ZhbGlkKF9w
Zm4pCQkoKChfcGZuKSA+PSBtaW5fcGFnZSkgJiYgKChfcGZuKSA8PSBtYXhfcGFnZSkpCisK
KyNkZWZpbmUgbWZuX3RvX3BhZ2UoX3BmbikJKChzdHJ1Y3QgcGFnZV9pbmZvICopKGZyYW1l
X3RhYmxlICsgKChfcGZuKSAtIG1pbl9wYWdlKSkpCisjZGVmaW5lIHBhZ2VfdG9fbWZuKF9w
YWdlKQkoKHVuc2lnbmVkIGxvbmcpKChfcGFnZSArIG1pbl9wYWdlKSAtIGZyYW1lX3RhYmxl
ICkpCisjZGVmaW5lIHBhZ2VfdG9fbWFkZHIoX3BhZ2UpCShwYWdlX3RvX21mbihfcGFnZSkg
PDwgUEFHRV9TSElGVCkKKyNkZWZpbmUgbWFkZHJfdG9fcGFnZShhZGRyKQltZm5fdG9fcGFn
ZSgoYWRkciA+PiBQQUdFX1NISUZUKSkKKworI2RlZmluZSBtZm5fdG9fdmlydChfbWZuKQko
bWFkZHJfdG9fdmlydCgoKF9tZm4pIDw8IFBBR0VfU0hJRlQpKSkKKworI2RlZmluZSBwYWRk
cl90b19wZm4oYWRkcikJKCh1bnNpZ25lZCBsb25nKSgoYWRkcikgPj4gUEFHRV9TSElGVCkp
CisKKyNkZWZpbmUgaXNfeGVuX2hlYXBfbWZuKF9wZm4pCQkJXAorKHsJCQkJCQlcCisJdW5z
aWduZWQgbG9uZyBwaHlzOwkJCVwKKwlwaHlzID0gKF9wZm4pIDw8IFBBR0VfU0hJRlQ7CQlc
CisJKChwaHlzID49IHhlbmhlYXBfcGh5c19zdGFydCkgJiYJXAorCSAocGh5cyA8IHhlbmhl
YXBfcGh5c19lbmQpKTsJCVwKK30pCisKKyNkZWZpbmUgaXNfeGVuX2hlYXBfcGFnZShwYWdl
KSAgICAgICAgICAgICAgICAgIFwKKwlpc194ZW5faGVhcF9tZm4ocGFnZV90b19tZm4ocGFn
ZSkpCisKKyNkZWZpbmUgaXNfeGVuX2ZpeGVkX21mbihfbWZuKQkJCVwKKwlpc194ZW5faGVh
cF9tZm4oX21mbikKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgeGVuX3BoeXNfc3RhcnQ7Citz
dGF0aWMgaW5saW5lIHBhZGRyX3QgX192aXJ0X3RvX21hZGRyKHZvaWQgKmFkZHIpCit7CisJ
cmV0dXJuIChwYWRkcl90KShhZGRyKSAtIFhFTl9WSVJUX1NUQVJUICsgeGVuX3BoeXNfc3Rh
cnQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqX19tYWRkcl90b192aXJ0KHVuc2lnbmVk
IGxvbmcgYWRkcikKK3sKKwlyZXR1cm4gKHZvaWQgKikoKGFkZHIpICsgWEVOX1ZJUlRfU1RB
UlQgLSB4ZW5fcGh5c19zdGFydCk7Cit9CisKKyNkZWZpbmUgX19wYWdlX2FsaWduZWRfXyBc
CisgICAgX19hdHRyaWJ1dGVfdXNlZF9fIF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAo
Ii5ic3MucGFnZV9hbGlnbmVkIikpKQorCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwor
I2VuZGlmIC8qIF9fQVJNX1BBR0VfSF9fICovCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9p
bmNsdWRlL2FzbS1hcm0vcGNpLmgKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wY2kuaAlGcmkgRmViIDAz
IDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIF9fQVNNX1BD
SV9IX18KKyNkZWZpbmUgX19BU01fUENJX0hfXworCitzdHJ1Y3QgYXJjaF9wY2lfZGV2IHsK
K307CisKKworI2VuZGlmCisKZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNt
LWFybS9wZXJjcHUuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oCUZyaSBGZWIgMDMgMTY6
MDc6MDMgMjAxMiArMDkwMApAQCAtMCwwICsxLDE2IEBACisjaWZuZGVmIF9fQVJNX1BFUkNQ
VV9IX18KKyNkZWZpbmUgX19BUk1fUEVSQ1BVX0hfXworCisjaWZuZGVmIF9fQVNTRU1CTFlf
XworI2RlZmluZSBfX0RFRklORV9QRVJfQ1BVKHR5cGUsIG5hbWUsIHN1ZmZpeCkgXAorCV9f
dHlwZW9mX18odHlwZSkgcGVyX2NwdV8jI25hbWVbTlJfQ1BVU10gPSB7MCx9CisKKyNkZWZp
bmUgREVDTEFSRV9QRVJfQ1BVKHR5cGUsIG5hbWUpIFwKKwlleHRlcm4gX190eXBlb2ZfXyh0
eXBlKSBwZXJfY3B1X18jI25hbWVbTlJfQ1BVU10KKworI2RlZmluZSBwZXJfY3B1KHZhciwg
Y3B1KQkocGVyX2NwdV9fIyN2YXJbY3B1XSkKKworI2RlZmluZSBfX2dldF9jcHVfdmFyKHZh
cikJcGVyX2NwdSh2YXIsIHNtcF9wcm9jZXNzb3JfaWQoKSkKKworI2VuZGlmIC8qICFfX0FT
U0VNQkxZICovCisjZW5kaWYgLyogIV9fQVJNX1BFUkNQVV9IX18gKi8KZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20t
YXJtL3Byb2Nlc3Nvci5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApAQCAtMCww
ICsxLDIxOSBAQAorLyoKKyAqICBwcm9jZXNzb3IuaAorICoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiAgICAgICAgICBKYWVNaW4gUnl1ICA8am03
Ny5yeXVAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIHZlcnNpb24gMiBvZiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K
KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT
dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9f
QVJNX1BST0NFU1NPUl9IX18KKyNkZWZpbmUgX19BUk1fUFJPQ0VTU09SX0hfXworCisvKgor
ICogUFNSIGJpdHMKKyAqLworI2RlZmluZSBQU1JfTU9ERV9VU1IgICAgICAgICAgICAweDAw
MDAwMDEwCisjZGVmaW5lIFBTUl9NT0RFX0ZJUSAgICAgICAgICAgIDB4MDAwMDAwMTEKKyNk
ZWZpbmUgUFNSX01PREVfSVJRICAgICAgICAgICAgMHgwMDAwMDAxMgorI2RlZmluZSBQU1Jf
TU9ERV9TVkMgICAgICAgICAgICAweDAwMDAwMDEzCisjZGVmaW5lIFBTUl9NT0RFX0FCVCAg
ICAgICAgICAgIDB4MDAwMDAwMTcKKyNkZWZpbmUgUFNSX01PREVfVU5EICAgICAgICAgICAg
MHgwMDAwMDAxYgorI2RlZmluZSBQU1JfTU9ERV9TWVMgICAgICAgICAgICAweDAwMDAwMDFm
CisjZGVmaW5lIFBTUl9NT0RFX01BU0sgICAgICAgICAgIDB4MDAwMDAwMWYKKyNkZWZpbmUg
UFNSX1RfQklUICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBQU1JfRl9CSVQg
ICAgICAgICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFBTUl9JX0JJVCAgICAgICAgICAg
ICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgUFNSX0pfQklUICAgICAgICAgICAgICAgMHgwMTAw
MDAwMAorI2RlZmluZSBQU1JfUV9CSVQgICAgICAgICAgICAgICAweDA4MDAwMDAwCisjZGVm
aW5lIFBTUl9WX0JJVCAgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgUFNSX0Nf
QklUICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBQU1JfWl9CSVQgICAgICAg
ICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIFBTUl9OX0JJVCAgICAgICAgICAgICAgIDB4
ODAwMDAwMDAKKworLyoKKworICogR3JvdXBzIG9mIFBTUiBiaXRzCisgKi8KKyNkZWZpbmUg
UFNSX01BU0tfRkxBR1MgICAgICAgICAgMHhmZjAwMDAwMCAgICAgIC8qIEZsYWdzICAgICAg
ICAgICAgICAgICovCisjZGVmaW5lIFBTUl9NQVNLX1NUQVRVUyAgICAgICAgIDB4MDBmZjAw
MDAgICAgICAvKiBTdGF0dXMgICAgICAgICAgICAgICAqLworI2RlZmluZSBQU1JfTUFTS19F
WFRFTlNJT04gICAgICAweDAwMDBmZjAwICAgICAgLyogRXh0ZW5zaW9uICAgICAgICAgICAg
Ki8KKyNkZWZpbmUgUFNSX01BU0tfQ09OVFJPTCAgICAgICAgMHgwMDAwMDBmZiAgICAgIC8q
IENvbnRyb2wgICAgICAgICAgICAgICovCisKKworI2RlZmluZSBNSURSKHIpCQlwMTUsIDAs
IHIsICBjMCwgYzAsIDAKKyNkZWZpbmUgQ1RSKHIpCQlwMTUsIDAsIHIsICBjMCwgYzAsIDEK
KyNkZWZpbmUgVENNVFIocikJcDE1LCAwLCByLCAgYzAsIGMwLCAyCisjZGVmaW5lIFRMQlRS
KHIpCXAxNSwgMCwgciwgIGMwLCBjMCwgMworI2RlZmluZSBNUElEUihyKQlwMTUsIDAsIHIs
ICBjMCwgYzAsIDUKKyNkZWZpbmUgU0NUTFIocikJcDE1LCAwLCByLCAgYzEsIGMwLCAwCisj
ZGVmaW5lIEFDVExSKHIpCXAxNSwgMCwgciwgIGMxLCBjMCwgMQorI2RlZmluZSBTQ1IocikJ
CXAxNSwgMCwgciwgIGMxLCBjMSwgMAorI2RlZmluZSBTREVSKHIpCQlwMTUsIDAsIHIsICBj
MSwgYzEsIDEKKyNkZWZpbmUgTlNBQ1IocikJcDE1LCAwLCByLCAgYzEsIGMxLCAyCisjZGVm
aW5lIFRUQlIwKHIpCXAxNSwgMCwgciwgIGMyLCBjMCwgMAorI2RlZmluZSBUVEJSMShyKQlw
MTUsIDAsIHIsICBjMiwgYzAsIDEKKyNkZWZpbmUgVFRCQ1IocikJcDE1LCAwLCByLCAgYzIs
IGMwLCAyCisjZGVmaW5lIERBQ1IocikJCXAxNSwgMCwgciwgIGMzLCBjMCwgMAorI2RlZmlu
ZSBERlNSKHIpCQlwMTUsIDAsIHIsICBjNSwgYzAsIDAKKyNkZWZpbmUgSUZTUihyKQkJcDE1
LCAwLCByLCAgYzUsIGMwLCAxCisjZGVmaW5lIERGQVIocikJCXAxNSwgMCwgciwgIGM2LCBj
MCwgMAorI2RlZmluZSBJRkFSKHIpCQlwMTUsIDAsIHIsICBjNiwgYzAsIDIKKyNkZWZpbmUg
VkJBUihyKQkJcDE1LCAwLCByLCBjMTIsIGMwLCAwCisjZGVmaW5lIE1WQkFSKHIpCXAxNSwg
MCwgciwgYzEyLCBjMCwgMQorLyoKKyAqIFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyCisgKi8K
KyNkZWZpbmUgU0NUTFJfTSAgICAgICAgICgxIDw8IDApICAvKiBNTVUgZW5hYmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfQSAgICAgICAgICgxIDw8
IDEpICAvKiBBbGlnbm1lbnQgYWJvcnQgZW5hYmxlICAgICAgICAgICAgICAgKi8KKyNkZWZp
bmUgU0NUTFJfQyAgICAgICAgICgxIDw8IDIpICAvKiBEY2FjaGUgZW5hYmxlICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfVyAgICAgICAgICgxIDw8IDMpICAv
KiBXcml0ZSBidWZmZXIgZW5hYmxlICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NU
TFJfUCAgICAgICAgICgxIDw8IDQpICAvKiAzMi1iaXQgZXhjZXB0aW9uIGhhbmRsZXIgICAg
ICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfRCAgICAgICAgICgxIDw8IDUpICAvKiAzMi1i
aXQgZGF0YSBhZGRyZXNzIHJhbmdlICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfTCAg
ICAgICAgICgxIDw8IDYpICAvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkICAgICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgU0NUTFJfQiAgICAgICAgICgxIDw8IDcpICAvKiBCaWcgZW5kaWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfUyAgICAgICAg
ICgxIDw8IDgpICAvKiBTeXN0ZW0gTU1VIHByb3RlY3Rpb24gICAgICAgICAgICAgICAgKi8K
KyNkZWZpbmUgU0NUTFJfUiAgICAgICAgICgxIDw8IDkpICAvKiBST00gTU1VIHByb3RlY3Rp
b24gICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfU1cgICAgICAgICgxIDw8
IDEwKSAvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkICAgICAgICAgICAgICAgKi8KKyNkZWZp
bmUgU0NUTFJfWiAgICAgICAgICgxIDw8IDExKSAvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVk
ICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfSSAgICAgICAgICgxIDw8IDEyKSAv
KiBJY2FjaGUgZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NU
TFJfViAgICAgICAgICgxIDw8IDEzKSAvKiBWZWN0b3JzIHJlbG9jYXRlZCB0byAweGZmZmYw
MDAwICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfUlIgICAgICAgICgxIDw8IDE0KSAvKiBSb3Vu
ZCBSb2JpbiBjYWNoZSByZXBsYWNlbWVudCAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfTDQg
ICAgICAgICgxIDw8IDE1KSAvKiBMRFIgcGMgY2FuIHNldCBUIGJpdCAgICAgICAgICAgICAg
ICAgKi8KKyNkZWZpbmUgU0NUTFJfRFQgICAgICAgICgxIDw8IDE2KQorI2RlZmluZSBTQ1RM
Ul9JVCAgICAgICAgKDEgPDwgMTgpCisjZGVmaW5lIFNDVExSX1NUICAgICAgICAoMSA8PCAx
OSkKKyNkZWZpbmUgU0NUTFJfRkkgICAgICAgICgxIDw8IDIxKSAvKiBGYXN0IGludGVycnVw
dCAobG93ZXIgbGF0ZW5jeSBtb2RlKSAgKi8KKyNkZWZpbmUgU0NUTFJfVSAgICAgICAgICgx
IDw8IDIyKSAvKiBVbmFsaWduZWQgYWNjZXNzIG9wZXJhdGlvbiAgICAgICAgICAgKi8KKyNk
ZWZpbmUgU0NUTFJfWFAgICAgICAgICgxIDw8IDIzKSAvKiBFeHRlbmRlZCBwYWdlIHRhYmxl
cyAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfVkUgICAgICAgICgxIDw8IDI0
KSAvKiBWZWN0b3JlZCBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUg
U0NUTFJfRUUgICAgICAgICgxIDw8IDI1KSAvKiBFeGNlcHRpb24gZW5kaWFuZXNzICAgICAg
ICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfTk1GSSAgICAgICgxIDw8IDI3KSAvKiBO
b25tYXNrYWJsZSBmYXN0IGludGVycnVwdCBlbmFibGUgICAgKi8KKyNkZWZpbmUgU0NUTFJf
VFJFICAgICAgICgxIDw8IDI4KSAvKiBURVggcmVtYXAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfQUZFICAgICAgICgxIDw8IDI5KSAvKiBBY2Nlc3Mg
ZmxhZyBlbmFibGUgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0NUTFJfVEUgICAg
ICAgICgxIDw8IDMwKSAvKiBUaHVtYiBleGNlcHRpb24gZW5hYmxlICAgICAgICAgICAgICAg
Ki8KKworLyoKKyAqIENvLVByb2Nlc3NvciBBY2Nlc3MgUmVnaXN0ZXIKKyAqLworI2RlZmlu
ZSBDUEFSX0JJVF9DUDAgICAgKDEgPDwgMCkKKyNkZWZpbmUgQ1BBUl9CSVRfQ1AxICAgICgx
IDw8IDEpCisjZGVmaW5lIENQQVJfQklUX0NQMiAgICAoMSA8PCAyKQorI2RlZmluZSBDUEFS
X0JJVF9DUDMgICAgKDEgPDwgMykKKyNkZWZpbmUgQ1BBUl9CSVRfQ1A0ICAgICgxIDw8IDQp
CisjZGVmaW5lIENQQVJfQklUX0NQNSAgICAoMSA8PCA1KQorI2RlZmluZSBDUEFSX0JJVF9D
UDYgICAgKDEgPDwgNikKKyNkZWZpbmUgQ1BBUl9CSVRfQ1A3ICAgICgxIDw8IDcpCisjZGVm
aW5lIENQQVJfQklUX0NQOCAgICAoMSA8PCA4KQorI2RlZmluZSBDUEFSX0JJVF9DUDkgICAg
KDEgPDwgOSkKKyNkZWZpbmUgQ1BBUl9CSVRfQ1AxMCAgICgxIDw8IDEwKQorI2RlZmluZSBD
UEFSX0JJVF9DUDExICAgKDEgPDwgMTEpCisjZGVmaW5lIENQQVJfQklUX0NQMTIgICAoMSA8
PCAxMikKKyNkZWZpbmUgQ1BBUl9CSVRfQ1AxMyAgICgxIDw8IDEzKQorCisvKgorICogQXV4
aWxpYXJ5IENvbnRyb2wgUmVnaXN0ZXIKKyAqLworI2RlZmluZSBBQ1RMUl9GVyAgICAgICAg
KDEgPDwgMCkgIC8qIENhY2hlIGFuZCBUTEIgbWFpbnRlbmFuY2UgYnJvYWRjYXN0ICAqLwor
I2RlZmluZSBBQ1RMUl9EUDIgICAgICAgKDEgPDwgMSkgIC8qIEwyIERzaWRlIHByZWZldGNo
ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBQ1RMUl9EUDEgICAgICAgKDEgPDwg
MikgIC8qIEwxIERzaWRlIHByZWZldGNoICAgICAgICAgICAgICAgICAgICAqLworI2RlZmlu
ZSBBQ1RMUl9GT1ogICAgICAgKDEgPDwgMykgIC8qIEZ1bGwgb2YgemVybyAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworI2RlZmluZSBBQ1RMUl9TTVAgICAgICAgKDEgPDwgNikgIC8q
IFNNUC9uQU1QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBQ1RM
Ul9FWENMICAgICAgKDEgPDwgNykgIC8qIEV4Y2x1c2l2ZSBjYWNoZSBlbmFibGUgICAgICAg
ICAgICAgICAqLworI2RlZmluZSBBQ1RMUl9QQVJPTiAgICAgKDEgPDwgOSkgIC8qIFBhcml0
eSBvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvKgorICogU2VjdXJlIENv
bmZpZ3VyYXRpb24gUmVnaXN0ZXIKKyAqLworI2RlZmluZSBTQ1JfTlMgICAgICAgICAgKDEg
PDwgMCkgIC8qIE5vbi1zZWN1cmUgbW9kZSAgICAgICAgICAgICAgICAgICAgICAqLworI2Rl
ZmluZSBTQ1JfSVJRICAgICAgICAgKDEgPDwgMSkgIC8qIElSUSBleGNlcHRpb24gaGFuZGxp
bmcgbW9kZSAgICAgICAgICAqLworI2RlZmluZSBTQ1JfRklRICAgICAgICAgKDEgPDwgMikg
IC8qIEZJUSBleGNlcHRpb24gaGFuZGxpbmcgbW9kZSAgICAgICAgICAqLworI2RlZmluZSBT
Q1JfRUEgICAgICAgICAgKDEgPDwgMykgIC8qIEV4dGVybmFsIGV4Y2VwdGlvbiBoYW5kbGlu
ZyBtb2RlICAgICAqLworI2RlZmluZSBTQ1JfRlcgICAgICAgICAgKDEgPDwgNCkgIC8qIEYg
Qml0IGFjY2VzcyBhbGxvdyBiaXQgICAgICAgICAgICAgICAqLworI2RlZmluZSBTQ1JfQVcg
ICAgICAgICAgKDEgPDwgNSkgIC8qIEEgYml0IGFjY2VzcyBhbGxvdyBiaXQgICAgICAgICAg
ICAgICAqLworCisjZGVmaW5lIE5TQUNSX05TU01QICAgICAoMSA8PCAxOCkKKyNkZWZpbmUg
TlNBQ1JfVEwgICAgICAgICgxIDw8IDE3KQorI2RlZmluZSBOU0FDUl9OU0FDRURJUyAgKDEg
PDwgMTUpCisjZGVmaW5lIE5TQUNSX05TRDMyRElTICAoMSA8PCAxNCkKKyNkZWZpbmUgTlNB
Q1JfQ1AxMSAgICAgICgxIDw8IDExKQorI2RlZmluZSBOU0FDUl9DUDEwICAgICAgKDEgPDwg
MTApCisKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2RlZmluZSBjcHVfdG9fY29yZShj
cHUpICAgICAgICAoMCkKKyNkZWZpbmUgY3B1X3RvX3NvY2tldChjcHUpICAgICAgKDApCisK
KyNkZWZpbmUgcDE0ICAgICAxNAorI2RlZmluZSBwMTUgICAgIDE1CisjZGVmaW5lIGMwICAg
ICAgMAorI2RlZmluZSBjMSAgICAgIDEKKyNkZWZpbmUgYzIgICAgICAyCisjZGVmaW5lIGMz
ICAgICAgMworI2RlZmluZSBjNCAgICAgIDQKKyNkZWZpbmUgYzUgICAgICA1CisjZGVmaW5l
IGM2ICAgICAgNgorI2RlZmluZSBjNyAgICAgIDcKKyNkZWZpbmUgYzggICAgICA4CisjZGVm
aW5lIGM5ICAgICAgOQorI2RlZmluZSBjMTAgICAgIDEwCisjZGVmaW5lIGMxMSAgICAgMTEK
KyNkZWZpbmUgYzEyICAgICAxMgorI2RlZmluZSBjMTMgICAgIDEzCisjZGVmaW5lIGMxNCAg
ICAgMTQKKyNkZWZpbmUgYzE1ICAgICAxNQorCisjZGVmaW5lIE1DUihjcCxvcDEsUmQsQ1Ju
LENSbSxvcDIpICBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oIiBtY3IgIiAjY3AiLCUxLCUy
LCIjQ1JuIiwiI0NSbSAiLCU1IiBcCisJOiA6ICJpIiAoY3ApLCAiaSIgKG9wMSksICJyIiAo
UmQpLCAiaSIgKENSbiksICJpIiAoQ1JtKSwgImkiIChvcDIpKQorCisjZGVmaW5lIE1SQyhj
cCxvcDEsUmQsQ1JuLENSbSxvcDIpICBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oICIgbXJj
ICIgI2NwIiwlMiwlMCwiICNDUm4iLCIjQ1JtIiwlNSIgXAorCTogIj1yIiAoUmQpIDogImki
IChjcCksICJpIiAob3AxKSwgImkiIChDUm4pLCAiaSIgKENSbSksICJpIiAob3AyKSkKKwor
c3RhdGljIGlubGluZSB2b2lkIGNwdV93YWl0X2Zvcl9ldmVudCh2b2lkKQoreworICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygid2ZlIiA6IDogOiAibWVtb3J5Iik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBjcHVfd2FpdF9mb3JfaW50ZXJydXB0KHZvaWQpCit7CisgICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZSgid2ZpIiA6IDogOiAibWVtb3J5Iik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBjcHVfc2VuZF9ldmVudCh2b2lkKQoreworICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygic2V2IiA6IDogOiAibWVtb3J5Iik7Cit9CisKKyNkZWZpbmUg
Q1BVX01PREVfU01QCTEKKyNkZWZpbmUgQ1BVX01PREVfQU1QCTAKKworc3RhdGljIGlubGlu
ZSB2b2lkIGNwdV9zZXRfY29oZXJlbmN5X21vZGUodW5zaWduZWQgaW50IG1vZGUpCit7CisJ
dW5zaWduZWQgbG9uZyBhdXg7CisKKwlNUkMocDE1LCAwLCBhdXgsIGMxLCBjMCwgMSk7CisK
KwlpZiAoKG1vZGUgPT0gQ1BVX01PREVfU01QKSkgeworCQlhdXggfD0gKEFDVExSX1NNUCB8
IEFDVExSX0ZXKTsKKwl9IGVsc2UgeworCQlhdXggJj0gfihBQ1RMUl9TTVAgfCBBQ1RMUl9G
Vyk7CisJfQorCisJTUNSKHAxNSwgMCwgYXV4LCBjMSwgYzAsIDEpOworfQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL3JlZ3Mu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL3JlZ3MuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5
MDAKQEAgLTAsMCArMSwxNyBAQAorI2lmbmRlZiBfX0FTTV9BUk1fUkVHU19IX18KKyNkZWZp
bmUgX19BU01fQVJNX1JFR1NfSF9fCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKyNpbmNs
dWRlIDxhc20vY3VycmVudC5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworc3RhdGljIGlu
bGluZSBpbnQgZ3Vlc3RfbW9kZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKwl3
aGlsZSgxKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLXIg
ZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vc21wLmgKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy
bS9zbXAuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyOCBA
QAorI2lmbmRlZiBfX0FSTV9TTVBfSF9fCisjZGVmaW5lIF9fQVJNX1NNUF9IX18KKworI2lu
Y2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KKyNpbmNs
dWRlIDx4ZW4vY3B1bWFzay5oPgorI2luY2x1ZGUgPHhlbi9wZXJjcHUuaD4KKyNpbmNsdWRl
IDxhc20vY3VycmVudC5oPgorCisjaWZuZGVmIF9BU1NFTUJMWV9fCisjZGVmaW5lIHJhd19z
bXBfcHJvY2Vzc29yX2lkKCkJCQlcCisoewkJCQkJCVwKKwl1bnNpZ25lZCBpbnQgaWQ7CQkJ
XAorCV9fYXNtX18oIm1yYyBwMTUsIDAsICUwLCBjMCwgYzAsIDUiCVwKKwkJOiAiPXIiIChp
ZCkpOwkJCVwKKwlpZCAmPSAweDBGOwkJCQlcCit9KQorCisjZGVmaW5lIGNwdV9pc19vZmZs
aW5lKGNwdSkJdW5saWtlbHkoIWNwdV9vbmxpbmUoY3B1KSkKKworREVDTEFSRV9QRVJfQ1BV
KGNwdW1hc2tfdmFyX3QsIGNwdV9zaWJsaW5nX21hc2spOworREVDTEFSRV9QRVJfQ1BVKGNw
dW1hc2tfdmFyX3QsIGNwdV9jb3JlX21hc2spOworCitERUNMQVJFX1BFUl9DUFUoY3B1bWFz
a190LCBjcHVfc2libGluZ19tYXApOworREVDTEFSRV9QRVJfQ1BVKGNwdW1hc2tfdCwgY3B1
X2NvcmVfbWFwKTsKKworI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKyNlbmRpZiAvKiAh
X19BUk1fU01QX0hfXyAqLwpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20t
YXJtL3NvZnRpcnEuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3NvZnRpcnEuaAlGcmkgRmViIDAzIDE2
OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwxMSBAQAorI2lmbmRlZiBfX0FTTV9TT0ZU
SVJRX0hfXworI2RlZmluZSBfX0FTTV9TT0ZUSVJRX0hfXworCisjZGVmaW5lIFJFU0VSVkVE
X1NPRlRJUlEwCShOUl9DT01NT05fU09GVElSUVMgKyAwKQorI2RlZmluZSBSRVNFUlZFRF9T
T0ZUSVJRMQkoTlJfQ09NTU9OX1NPRlRJUlFTICsgMSkKKyNkZWZpbmUgVkNQVV9LSUNLX1NP
RlRJUlEJKE5SX0NPTU1PTl9TT0ZUSVJRUyArIDIpCisKKyNkZWZpbmUgTlJfQVJDSF9TT0ZU
SVJRUwkzCisKKyNlbmRpZiAvKiBfX0FTTV9TT0ZUSVJRX0hfXyAqLworCmRpZmYgLXIgZTcw
MTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vc3BpbmxvY2suaAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20t
YXJtL3NwaW5sb2NrLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAg
KzEsMjAwIEBACisjaWZuZGVmIF9fQVJNX1NQSU5MT0NLX0hfXworI2RlZmluZSBfX0FSTV9T
UElOTE9DS19IX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4v
bGliLmg+CisjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgorCisvKgorICogVW5sb2NrZWQgdmFs
dWUgOiAwCisgKiBMb2NrZWQgdmFsdWUgICA6IDEKKyAqLworI2RlZmluZSBfUkFXX1NQSU5f
TE9DS19VTkxPQ0tFRAl7IDAgfQorI2RlZmluZSBfUkFXX1JXX0xPQ0tfVU5MT0NLRUQJeyAw
IH0KKwordHlwZWRlZiBzdHJ1Y3QgeworCXZvbGF0aWxlIHVuc2lnbmVkIGludCBsb2NrOwor
fXJhd19zcGlubG9ja190OworCit0eXBlZGVmIHN0cnVjdCByd2xvY2sgeworCXZvbGF0aWxl
IHVuc2lnbmVkIGludCBsb2NrOworfXJhd19yd2xvY2tfdDsKKworI2RlZmluZSBfcmF3X3Nw
aW5faXNfbG9ja2VkKHgpCSgoeCktPmxvY2sgIT0gMCkKKworc3RhdGljIGlubGluZSB2b2lk
IF9yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQoreworCXVuc2lnbmVkIGxv
bmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisiMToJbGRyZXgJJTAsIFslMV1c
biIKKyIJdGVxCSUwLCAjMFxuIgorIgl3ZmVuZVxuIgorIglzdHJleGVxCSUwLCAlMiwgWyUx
XVxuIgorIgl0ZXFlcQklMCwgIzBcbiIKKyIJYm5lCTFiIgorCTogIj0mciIgKHRtcCkKKwk6
ICJyIiAoJmxvY2stPmxvY2spLCAiciIgKDEpCisJOiAiY2MiKTsKKworCW1iKCk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgaW50IF9yYXdfc3Bpbl90cnlsb2NrKHJhd19zcGlubG9ja190ICps
b2NrKQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18o
CisiCWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwg
JTIsIFslMV0iCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmbG9jay0+bG9jayksICJyIiAo
MSkKKwk6ICJjYyIpOworCisJaWYgKHRtcCA9PSAwKSB7CisJCW1iKCk7CisKKwkJcmV0dXJu
IDE7CisJfSBlbHNlIHsKKwkJcmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMgaW5saW5lIHZv
aWQgX3Jhd19zcGluX3VubG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jaykKK3sKKwltYigpOwor
CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisiCXN0cgklMSwgWyUwXVxuIgorIgltY3IJcDE1
LCAwLCAlMSwgYzcsIGMxMCwgNFxuIiAvKiBEU0IgKi8KKyIJc2V2IgorCToKKwk6ICJyIiAo
JmxvY2stPmxvY2spLCAiciIgKDApCisJOiAiY2MiKTsKK30KKworLyoKKyAqIFJXTE9DS1MK
KyAqCisgKgorICogV3JpdGUgbG9ja3MgYXJlIGVhc3kgLSB3ZSBqdXN0IHNldCBiaXQgMzEu
ICBXaGVuIHVubG9ja2luZywgd2UgY2FuCisgKiBqdXN0IHdyaXRlIHplcm8gc2luY2UgdGhl
IGxvY2sgaXMgZXhjbHVzaXZlbHkgaGVsZC4KKyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQg
X3Jhd193cml0ZV9sb2NrKHJhd19yd2xvY2tfdCAqcncpCit7CisJdW5zaWduZWQgbG9uZyB0
bXA7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIxOglsZHJleAklMCwgWyUxXVxuIgor
Igl0ZXEJJTAsICMwXG4iCisiCXdmZW5lXG4iCisiCXN0cmV4ZXEJJTAsICUyLCBbJTFdXG4i
CisiCXRlcQklMCwgIzBcbiIKKyIJYm5lCTFiIgorCTogIj0mciIgKHRtcCkKKwk6ICJyIiAo
JnJ3LT5sb2NrKSwgInIiICgweDgwMDAwMDAwKQorCTogImNjIik7CisKKwltYigpOworfQor
CitzdGF0aWMgaW5saW5lIGludCBfcmF3X3dyaXRlX3RyeWxvY2socmF3X3J3bG9ja190ICpy
dykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAor
IjE6CWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwg
JTIsIFslMV0iCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmcnctPmxvY2spLCAiciIgKDB4
ODAwMDAwMDApCisJOiAiY2MiKTsKKworCWlmICh0bXAgPT0gMCkgeworCQltYigpOworCQly
ZXR1cm4gMTsKKwl9IGVsc2UgeworCQlyZXR1cm4gMDsKKwl9Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBfcmF3X3dyaXRlX3VubG9jayhyYXdfcndsb2NrX3QgKnJ3KQoreworCW1iKCk7
CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkic3RyCSUxLCBbJTBdXG4iCisiCW1jcglw
MTUsIDAsICUxLCBjNywgYzEwLCA0XG4iIC8qIERTQiAqLworIglzZXZcbiIKKwk6CisJOiAi
ciIgKCZydy0+bG9jayksICJyIiAoMCkKKwk6ICJjYyIpOworfQorCisjZGVmaW5lIF9yYXdf
cndfaXNfbG9ja2VkKHgpCQkoKHgpLT5sb2NrICE9IDApCisjZGVmaW5lIF9yYXdfcndfaXNf
d3JpdGVfbG9ja2VkKHgpCSgoeCktPmxvY2sgPD0gMCkKKyNkZWZpbmUgX3Jhd193cml0ZV9j
YW5fbG9jayh4KQkJKCh4KS0+bG9jayA9PSAwKQorCitzdGF0aWMgaW5saW5lIHZvaWQgX3Jh
d19yZWFkX2xvY2socmF3X3J3bG9ja190ICpydykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCwg
dG1wMjsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorIjE6CWxkcmV4CSUwLCBbJTJdXG4i
CisiCWFkZHMJJTAsICUwLCAjMVxuIgorIglzdHJleHBsCSUxLCAlMCwgWyUyXVxuIgorIgl3
ZmVtaVxuIgorIglyc2JwbHMJJTAsICUxLCAjMFxuIgorIglibWkJMWIiCisJOiAiPSZyIiAo
dG1wKSwgIj0mciIgKHRtcDIpCisJOiAiciIgKCZydy0+bG9jaykKKwk6ICJjYyIpOworCisJ
bWIoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9yYXdfcmVhZF91bmxvY2socmF3X3J3
bG9ja190ICpydykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCwgdG1wMjsKKworCW1iKCk7CisK
KwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIxOglsZHJleAklMCwgWyUyXVxuIgorIglzdWIJ
JTAsICUwLCAjMVxuIgorIglzdHJleAklMSwgJTAsIFslMl1cbiIKKyIJdGVxCSUxLCAjMFxu
IgorIglibmUJMWJcbiIKKyIJY21wCSUwLCAjMFxuIgorIgltY3JlcSAgIHAxNSwgMCwgJTAs
IGM3LCBjMTAsIDRcbiIKKyIJc2V2ZXEiCisJOiAiPSZyIiAodG1wKSwgIj0mciIgKHRtcDIp
CisJOiAiciIgKCZydy0+bG9jaykKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIGlu
dCBfcmF3X3JlYWRfdHJ5bG9jayhyYXdfcndsb2NrX3QgKnJ3KQoreworCXVuc2lnbmVkIGxv
bmcgdG1wLCB0bXAyID0gMTsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorIjE6CWxkcmV4
CSUwLCBbJTJdXG4iCisiCWFkZHMJJTAsICUwLCAjMVxuIgorIglzdHJleHBsCSUxLCAlMCwg
WyUyXVxuIgorCTogIj0mciIgKHRtcCksICIrciIgKHRtcDIpCisJOiAiciIgKCZydy0+bG9j
aykKKwk6ICJjYyIpOworCisJbWIoKTsKKwlyZXR1cm4gdG1wMiA9PSAwOworfQorCisjZGVm
aW5lIF9yYXdfcmVhZF9jYW5fbG9jayh4KQkoKHgpLT5sb2NrIDwgMHg4MDAwMDAwMCkKKwor
I2RlZmluZSBfcmF3X3NwaW5fcmVsYXgobG9jaykJY3B1X3JlbGF4KCkKKyNkZWZpbmUgX3Jh
d19yZWFkX3JlbGF4KGxvY2spCWNwdV9yZWxheCgpCisjZGVmaW5lIF9yYXdfd3JpdGVfcmVs
YXgobG9jaykJY3B1X3JlbGF4KCkKKworI2VuZGlmIC8qIF9fQVNNX1NQSU5MT0NLX0ggKi8K
ZGlmZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS9zdHJpbmcuaAotLS0g
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vaW5j
bHVkZS9hc20tYXJtL3N0cmluZy5oCUZyaSBGZWIgMDMgMTY6MDc6MDMgMjAxMiArMDkwMApA
QCAtMCwwICsxLDQ5IEBACisjaWZuZGVmIF9fQVNNX1NUUklOR19IX18KKyNkZWZpbmUgX19B
U01fU1RSSU5HX0hfXworCisvKgorICogV2UgZG9uJ3QgZG8gaW5saW5lIHN0cmluZyBmdW5j
dGlvbnMsIHNpbmNlIHRoZQorICogb3B0aW1pc2VkIGlubGluZSBhc20gdmVyc2lvbnMgYXJl
IG5vdCBzbWFsbC4KKyAqLworCisjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUlJDSFIKK2V4dGVy
biBjaGFyICogc3RycmNocihjb25zdCBjaGFyICogcywgaW50IGMpOworCisjZGVmaW5lIF9f
SEFWRV9BUkNIX1NUUkNIUgorZXh0ZXJuIGNoYXIgKiBzdHJjaHIoY29uc3QgY2hhciAqIHMs
IGludCBjKTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1DUFkKK2V4dGVybiB2b2lkICog
bWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBfX2tlcm5lbF9zaXplX3QpOworCisjZGVm
aW5lIF9fSEFWRV9BUkNIX01FTU1PVkUKK2V4dGVybiB2b2lkICogbWVtbW92ZSh2b2lkICos
IGNvbnN0IHZvaWQgKiwgX19rZXJuZWxfc2l6ZV90KTsKKworI2RlZmluZSBfX0hBVkVfQVJD
SF9NRU1DSFIKK2V4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQgKiwgaW50LCBfX2tl
cm5lbF9zaXplX3QpOworCisjZGVmaW5lIF9fSEFWRV9BUkNIX01FTVpFUk8KKyNkZWZpbmUg
X19IQVZFX0FSQ0hfTUVNU0VUCitleHRlcm4gdm9pZCAqIG1lbXNldCh2b2lkICosIGludCwg
X19rZXJuZWxfc2l6ZV90KTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9CQ09QWQorCitleHRl
cm4gdm9pZCBfX21lbXplcm8odm9pZCAqcHRyLCBfX2tlcm5lbF9zaXplX3Qgbik7CisKKyNk
ZWZpbmUgbWVtc2V0KHAsdixuKQkJCQkJCVwKKyh7CQkJCQkJCQlcCisJaWYgKChuKSAhPSAw
KSB7CQkJCQkJXAorCQlpZiAoX19idWlsdGluX2NvbnN0YW50X3AoKHYpKSAmJiAodikgPT0g
MCkJXAorCQkJX19tZW16ZXJvKChwKSwobikpOwkJCVwKKwkJZWxzZQkJCQkJCVwKKwkJCW1l
bXNldCgocCksKHYpLChuKSk7CQkJXAorCX0JCQkJCQkJXAorCShwKTsJCQkJCQkJXAorfSkK
KworI2RlZmluZSBtZW16ZXJvKHAsbikgCQkJCVwKKyh7IAkJCQkJCVwKKwlpZiAoKG4pICE9
IDApIAkJCQlcCisJCV9fbWVtemVybygocCksKG4pKTsgKHApOyAJXAorfSkKKworI2VuZGlm
CmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vc3lzdGVtLmgKLS0t
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2lu
Y2x1ZGUvYXNtLWFybS9zeXN0ZW0uaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAK
QEAgLTAsMCArMSwxNDggQEAKKyNpZm5kZWYgX19BU01fU1lTVEVNX0gKKyNkZWZpbmUgX19B
U01fU1lTVEVNX0gKKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKworI2RlZmluZSBfX2Fz
bWVxKHgsIHkpICAiLmlmbmMgIiB4ICIsIiB5ICIgOyAuZXJyIDsgLmVuZGlmXG5cdCIKKwor
I2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyoKKyAqIGRtYiA6IERhdGEgTWVtb3J5IEJhcnJp
ZXIKKyAqIGRzYiA6IERhdGEgU3luY2hyb25pemF0aW9uIEJhcnJpZXIKKyAqIAktPiBEcmFp
biBXcml0ZSBCdWZmZXIgaW4gZWFybGllciBvZiB0aGUgYXJjaGl0ZWN0dXJlCisgKiBpc2Ig
OiBJbnN0cnVjdGlvbiBTeW5jaHJvbml6YXRpb24gQmFycmllcgorICogCS0+IEZsdXNoIHBp
cGVsaW5lIGFuZCBicmFjaCB0YXJnZXQgYnVmZmVycy4KKyAqLworCisjZGVmaW5lIGlzYigp
IF9fYXNtX18gX192b2xhdGlsZV9fICgiaXNiIiA6IDogOiAibWVtb3J5IikKKyNkZWZpbmUg
ZHNiKCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJkc2IiIDogOiA6ICJtZW1vcnkiKQorI2Rl
ZmluZSBkbWIoKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImRtYiIgOiA6IDogIm1lbW9yeSIp
CisKKyNkZWZpbmUgbWIoKQkJZG1iKCkKKyNkZWZpbmUgcm1iKCkgCQlkbWIoKQorI2RlZmlu
ZSB3bWIoKSAJCWRtYigpCisKKyNkZWZpbmUgY3B1X3JlbGF4KCkJZG1iKCkKKworI2RlZmlu
ZSBzbXBfcm1iKCkJcm1iKCkKKyNkZWZpbmUgc21wX3dtYigpCXdtYigpCisjZGVmaW5lIHNt
cF9tYigpCWRtYigpCisKKyNkZWZpbmUgbG9jYWxfaXJxX3NhdmUoeCkJCVwKKyh7CQkJCQlc
CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQlcCisJCSJtcnMgICAgJTAsIGNwc3IgXG4iCVwK
KwkJImNwc2lkICBpIgkJXAorCQk6ICI9ciIgKHgpCQlcCisJCToJCQlcCisJCTogIm1lbW9y
eSIsICJjYyIpOwlcCit9KQorCisjZGVmaW5lIGxvY2FsX2lycV9lbmFibGUoKSAgX19hc21f
XygiY3BzaWUgaSAgICBAIF9fc3RpIiA6IDogOiAibWVtb3J5IiwgImNjIikKKyNkZWZpbmUg
bG9jYWxfaXJxX2Rpc2FibGUoKSBfX2FzbV9fKCJjcHNpZCBpICAgIEAgX19jbGkiIDogOiA6
ICJtZW1vcnkiLCAiY2MiKQorI2RlZmluZSBsb2NhbF9maXFfZW5hYmxlKCkgIF9fYXNtX18o
ImNwc2llIGYgICAgQCBfX3N0ZiIgOiA6IDogIm1lbW9yeSIsICJjYyIpCisjZGVmaW5lIGxv
Y2FsX2ZpcV9kaXNhYmxlKCkgX19hc21fXygiY3BzaWQgZiAgICBAIF9fY2xmIiA6IDogOiAi
bWVtb3J5IiwgImNjIikKKworLyoKKyAqIFNhdmUgdGhlIGN1cnJlbnQgaW50ZXJydXB0IGVu
YWJsZSBzdGF0ZS4KKyAqLworI2RlZmluZSBsb2NhbF9zYXZlX2ZsYWdzKHgpCQlcCisoewkJ
CQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJXAorCSJtcnMJJTAsIGNwc3JcbiIJCVwK
Kwk6ICI9ciIgKHgpIDogOiAibWVtb3J5IiwgImNjIik7CVwKK30pCisKKy8qCisgKiByZXN0
b3JlIHNhdmVkIElSUSAmIEZJUSBzdGF0ZQorICovCisjZGVmaW5lIGxvY2FsX2lycV9yZXN0
b3JlKHgpCQlcCisoewkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJXAorCSJtc3IJ
Y3Bzcl9jLCAlMFxuIgkJXAorCToJCQkJXAorCTogInIiICh4KQkJCVwKKwk6ICJtZW1vcnki
LCAiY2MiKTsJCVwKK30pCisKKyNkZWZpbmUgaXJxc19kaXNhYmxlZCgpCQkJCVwKKyh7CQkJ
CQlcCisJdW5zaWduZWQgbG9uZyBmbGFnczsJCVwKKwlsb2NhbF9zYXZlX2ZsYWdzKGZsYWdz
KTsJXAorCWZsYWdzICYgUFNSX0lfQklUOwkJXAorfSkKKworI2RlZmluZSBsb2NhbF9pcnFf
aXNfZW5hYmxlZCgpCSghaXJxc19kaXNhYmxlZCgpKQorCitzdGF0aWMgaW5saW5lIHZvaWQg
bm9wKHZvaWQpCit7CisJYXNtIHZvbGF0aWxlKCJub3AiKTsKK30KKworc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBpbnQgZ2V0X2NyKHZvaWQpCit7CisJdW5zaWduZWQgaW50IHZhbDsKKwlh
c20oIm1yYyBwMTUsIDAsICUwLCBjMSwgYzAsIDAiIDogIj1yIih2YWwpIDogOiAiY2MiKTsK
KworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfY3IodW5zaWdu
ZWQgaW50IHZhbCkKK3sKKwlhc20gdm9sYXRpbGUoIm1jciBwMTUsIDAsICUwLCBjMSwgYzAs
IDAiIDogOiAiciIodmFsKSA6ICJjYyIpOworCisJaXNiKCk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyBfeGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQg
KiBwdHIsIGludCBzaXplKQoreworCXVuc2lnbmVkIGxvbmcgcmV0OworCXVuc2lnbmVkIGlu
dCB0bXA7CisKKwlzd2l0Y2ggKHNpemUpIHsKKyAgICAgICAgY2FzZSAxOgorCQlfX2FzbV9f
IF9fdm9sYXRpbGVfXygKKwkJIjE6ICAgICBsZHJleGIgICUwLCBbJTNdXG4iCisJCSIgICAg
ICAgc3RyZXhiICAlMSwgJTIsIFslM11cbiIKKwkJIiAgICAgICB0ZXEgICAgICUxLCAjMFxu
IgorCQkiICAgICAgIGJuZSAgICAgMWIiCisJCTogIj0mciIgKHJldCksICI9JnIiICh0bXAp
CisJCTogInIiICh4KSwgInIiIChwdHIpCisJCTogIm1lbW9yeSIsICJjYyIpOworCQlicmVh
azsKKwljYXNlIDQ6CisJCV9fYXNtX18gX192b2xhdGlsZV9fKCJAIF9feGNoZzRcbiIKKwkJ
IjE6ICAgICBsZHJleCAgICUwLCBbJTNdXG4iCisJCSIgICAgICAgc3RyZXggICAlMSwgJTIs
IFslM11cbiIKKwkJIiAgICAgICB0ZXEgICAgICUxLCAjMFxuIgorCQkiICAgICAgIGJuZSAg
ICAgMWIiCisJCTogIj0mciIgKHJldCksICI9JnIiICh0bXApCisJCTogInIiICh4KSwgInIi
IChwdHIpCisJCTogIm1lbW9yeSIsICJjYyIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQly
ZXQgPSAwOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCisjZGVmaW5lIGNt
cHhjaGcocHRyLCBvbGQsIG5ldykJCQkJCQlcCisoeyAJCQkJCQkJCQlcCisJX190eXBlb2Zf
XygqKHB0cikpIHByZXY7IAkJCQkJXAorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkJCQkJXAor
CWxvY2FsX2lycV9zYXZlKGZsYWdzKTsJCQkJCQlcCisJcHJldiA9ICooKF9fdHlwZW9mX18o
KihwdHIpKSAqKXB0cik7IAkJCQlcCisJaWYocHJldiA9PSBvbGQpIAkJCQkJCVwKKwkJKigo
X190eXBlb2ZfXygqKHB0cikpICopcHRyKSA9IChfX3R5cGVvZl9fKCoocHRyKSkpbmV3Owlc
CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkJCQkJXAorCXByZXY7IAkJCQkJCQkJXAor
fSkKKworI2RlZmluZSB4Y2hnKHB0cix2KQlcCisJKChfX3R5cGVvZl9fKCoocHRyKSkpX3hj
aGcoKHVuc2lnbmVkIGxvbmcpKHYpLChwdHIpLHNpemVvZigqKHB0cikpKSkKKworI2VuZGlm
IC8qIF9fQVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIV9fU1lTVEVNX0hfXyAqLwpkaWZmIC1y
IGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVkZS9hc20tYXJtL3RlZ3JhL2NvbmZpZy5oCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNs
dWRlL2FzbS1hcm0vdGVncmEvY29uZmlnLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX19URUdSQV9DT05GSUdfSF9fCisjZGVm
aW5lIF9fVEVHUkFfQ09ORklHX0hfXworCisjZGVmaW5lIEhaCTEwMAorI2RlZmluZSBDTE9D
S19USUNLX1JBVEUJCTEwMDAwMDAKKworI2RlZmluZSBNQVhfUEhZU19DUFVTCQkyCisKKyNk
ZWZpbmUgQlVJTFRJTl9DT01NQU5EX0xJTkVfU0laRSAyNTYKKyNkZWZpbmUgQlVJTFRJTl9D
T01NQU5EX0xJTkUJIiIKKyNlbmRpZgpkaWZmIC1yIGU3MDE0NjFiMTI1MSB4ZW4vaW5jbHVk
ZS9hc20tYXJtL3RpbWUuaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3RpbWUuaAlGcmkgRmViIDAzIDE2
OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAsMCArMSwyNCBAQAorI2lmbmRlZiBfX0FTTV9USU1F
X0hfXworI2RlZmluZSBfX0FTTV9USU1FX0hfXworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5o
PgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CisK
KyNpZm5kZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIHdhdGNoZG9nX2Rpc2FibGUoKSAoKHZv
aWQpMCkKKyNkZWZpbmUgd2F0Y2hkb2dfZW5hYmxlKCkgICgodm9pZCkwKQorCitzdHJ1Y3Qg
dG07CitzdHJ1Y3QgdG0gd2FsbGNsb2NrX3RpbWUodm9pZCk7CisKK3R5cGVkZWYgdTY0IGN5
Y2xlX3Q7CisKK3N0YXRpYyBpbmxpbmUgY3ljbGVfdCBnZXRfY3ljbGVzKHZvaWQpCit7CisJ
cmV0dXJuIDA7Cit9CisKK3ZvaWQgdGltZWtlZXBpbmdfaW5pdCh2b2lkKTsKKyNlbmRpZgor
I2VuZGlmCmRpZmYgLXIgZTcwMTQ2MWIxMjUxIHhlbi9pbmNsdWRlL2FzbS1hcm0vdHJhY2Uu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94
ZW4vaW5jbHVkZS9hc20tYXJtL3RyYWNlLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICsw
OTAwCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0FSTV9UUkFDRV9IX18KKyNkZWZpbmUg
X19BUk1fVFJBQ0VfSF9fCisKKworI2VuZGlmIC8qIV9fQVJNX1RSQUNFX0hfXyovCisKZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS90eXBlcy5oCi0tLSAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNsdWRl
L2FzbS1hcm0vdHlwZXMuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAKQEAgLTAs
MCArMSw1OCBAQAorI2lmbmRlZiBfX0FSTV9UWVBFU19IX18KKyNkZWZpbmUgX19BUk1fVFlQ
RVNfSF9fCisKKyNkZWZpbmUgQklUU19QRVJfTE9ORwkzMgorI2RlZmluZSBCWVRFU19QRVJf
TE9ORwk0CisjZGVmaW5lIExPTkdfQllURU9SREVSCTIKKworI2lmbmRlZiBfX0FTU0VNQkxZ
X18KKy8qCisgKiBfX3h4IGlzIG9rOiBpdCBkb2Vzbid0IHBvbGx1dGUgdGhlIFBPU0lYIG5h
bWVzcGFjZS4gVXNlIHRoZXNlIGluIHRoZQorICogaGVhZGVyIGZpbGVzIGV4cG9ydGVkIHRv
IHVzZXIgc3BhY2UKKyAqLworCit0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4OwordHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7CisKK3R5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBf
X3MxNjsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTY7CisKK3R5cGVkZWYgX19zaWdu
ZWRfXyBpbnQgX19zMzI7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKKworI2lmIGRl
ZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKK3R5cGVkZWYg
X19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBfX3U2NDsKKyNlbmRpZgorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGh5c2FkZHJfdDsK
KwordHlwZWRlZiBzaWduZWQgY2hhciBzODsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsK
KwordHlwZWRlZiBzaWduZWQgc2hvcnQgczE2OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1
MTY7CisKK3R5cGVkZWYgc2lnbmVkIGludCBzMzI7Cit0eXBlZGVmIHVuc2lnbmVkIGludCB1
MzI7CisKK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7Cit0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyB1NjQ7CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBwYWRkcl90OwordHlw
ZWRlZiB1bnNpZ25lZCBsb25nIHZhZGRyX3Q7CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBz
aXplX3Q7CisKK3R5cGVkZWYgY2hhciBib29sX3Q7CisKKyNkZWZpbmUgdGVzdF9hbmRfc2V0
X2Jvb2woYikJeGNoZygmKGIpLCAxKQorI2RlZmluZSB0ZXN0X2FuZF9jbGVhcl9ib29sKGIp
CXhjaGcoJihiKSwgMCkKKworI2RlZmluZSByb3VuZF91cChfcCwgX3MpICAgICAgICAoKCh1
bnNpZ25lZCBsb25nKShfcCkgKyAoKF9zKSAtIDEpKSAmIH4oKF9zKSAtIDEpKQorI2RlZmlu
ZSByb3VuZF9kb3duKF9wLCBfcykgICAgICAoKHVuc2lnbmVkIGxvbmcpKF9wKSAmIH4oKF9z
KSAtIDEpKQorCisjZGVmaW5lIHJvdW5kX3VwX2FuZF9kaXYoX3AsIF9zKSAocm91bmRfdXAo
X3AsIF9zKSAvIF9zKQorI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYKZGlm
ZiAtciBlNzAxNDYxYjEyNTEgeGVuL2luY2x1ZGUvYXNtLWFybS94ZW5vcHJvZi5oCi0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3hlbi9pbmNs
dWRlL2FzbS1hcm0veGVub3Byb2YuaAlGcmkgRmViIDAzIDE2OjA3OjAzIDIwMTIgKzA5MDAK
QEAgLTAsMCArMSw0MyBAQAorI2lmbmRlZiBfX0FTTV9YRU5PUFJPRl9IX18KKyNkZWZpbmUg
X19BU01fWEVOT1BST0ZfSF9fCisKKyNkZWZpbmUgeGVub3Byb2ZfYXJjaF9yZXNlcnZlX2Nv
dW50ZXJzKCkJKDApCisjZGVmaW5lIHhlbm9wcm9mX2FyY2hfc2V0dXBfZXZlbnRzKCkJCSgw
KQorI2RlZmluZSB4ZW5vcHJvZl9hcmNoX2VuYWJsZV92aXJxKCkJCSgwKQorI2RlZmluZSB4
ZW5vcHJvZl9hcmNoX3N0YXJ0KCkgCQkJKDApCisjZGVmaW5lIHhlbm9wcm9mX2FyY2hfc3Rv
cCgpCisjZGVmaW5lIHhlbm9wcm9mX2FyY2hfZGlzYWJsZV92aXJxKCkgCisjZGVmaW5lIHhl
bm9wcm9mX2FyY2hfcmVsZWFzZV9jb3VudGVycygpCisKKworI2RlZmluZSB4ZW5vcHJvZl9z
aGFyZWRfZ21mbihkLCBnbWFkZHIsIG1hZGRyKQlcCitkbyB7CQkJCQkJXAorCSh2b2lkKSht
YWRkcik7CQkJCVwKK30gd2hpbGUgKDApCisKKworc3RhdGljIGlubGluZSB2b2lkIGlic19p
bml0KHZvaWQpIHt9CisjZGVmaW5lIGlic19jYXBzIDAKKworc3RhdGljIGlubGluZSBpbnQg
eGVub3Byb2ZfYmFja3RyYWNlX3N1cHBvcnRlZCh2b2lkKQoreworCXJldHVybiAwOworfQor
CitzdHJ1Y3QgdmNwdTsKK3N0cnVjdCBjcHVfdXNlcl9yZWdzOworCitpbnQgeGVub3Byb2Zf
YXJjaF9jb3VudGVyKFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKTsKK2ludCBjb21wYXRf
b3Byb2ZfYXJjaF9jb3VudGVyKFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKTsKK2ludCB4
ZW5vcHJvZl9hcmNoX2lic19jb3VudGVyKFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJnKTsK
Kworc3RhdGljIGlubGluZSB2b2lkIHhlbm9wcm9mX2JhY2t0cmFjZSgKKyAgICBzdHJ1Y3Qg
ZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdmNwdSwKKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVn
cyAqY29uc3QgcmVncywgdW5zaWduZWQgbG9uZyBkZXB0aCwgaW50IG1vZGUpIHt9CisKK3N0
YXRpYyBpbmxpbmUgaW50IHhlbm9wcm9mX2FyY2hfaW5pdChpbnQgKm51bV9ldmVudHMsIGNo
YXIgKmNwdV90eXBlKQoreworCXJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtciBlNzAx
NDYxYjEyNTEgeGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvcHVibGlj
L2FyY2gtYXJtLmgJRnJpIEZlYiAwMyAxNjowNzowMyAyMDEyICswOTAwCkBAIC0wLDAgKzEs
MTgwIEBACisjaWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX0FSTV8zMl9IX18KKyNkZWZpbmUg
X19YRU5fUFVCTElDX0FSQ0hfQVJNXzMyX0hfXworCisjZGVmaW5lIFZQU1JfTU9ERV9TVkMy
NiAgICAgICAgIDB4MDAwMDAwMDMKKyNkZWZpbmUgVlBTUl9NT0RFX1VTUiAgICAgICAgICAg
MHgwMDAwMDAxMAorI2RlZmluZSBWUFNSX01PREVfRklRICAgICAgICAgICAweDAwMDAwMDEx
CisjZGVmaW5lIFZQU1JfTU9ERV9JUlEgICAgICAgICAgIDB4MDAwMDAwMTIKKyNkZWZpbmUg
VlBTUl9NT0RFX1NWQyAgICAgICAgICAgMHgwMDAwMDAxMworI2RlZmluZSBWUFNSX01PREVf
QUJUICAgICAgICAgICAweDAwMDAwMDE3CisjZGVmaW5lIFZQU1JfTU9ERV9VTkQgICAgICAg
ICAgIDB4MDAwMDAwMWIKKyNkZWZpbmUgVlBTUl9NT0RFX1NZUyAgICAgICAgICAgMHgwMDAw
MDAxZgorI2RlZmluZSBWUFNSX01PREVfTUFTSyAgICAgICAgICAweDAwMDAwMDFmCisKKyNk
ZWZpbmUgVlBTUl9UX0JJVCAgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBWUFNS
X0ZfQklUICAgICAgICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFZQU1JfSV9CSVQgICAg
ICAgICAgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgVlBTUl9KX0JJVCAgICAgICAgICAgICAg
MHgwMTAwMDAwMAorI2RlZmluZSBWUFNSX1FfQklUICAgICAgICAgICAgICAweDA4MDAwMDAw
CisjZGVmaW5lIFZQU1JfVl9CSVQgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUg
VlBTUl9DX0JJVCAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBWUFNSX1pfQklU
ICAgICAgICAgICAgICAweDQwMDAwMDAwCisjZGVmaW5lIFZQU1JfTl9CSVQgICAgICAgICAg
ICAgIDB4ODAwMDAwMDAKKworLyoKKyAqIEdyb3VwcyBvZiBQU1IgYml0cworICovCisjZGVm
aW5lIFZQU1JfTUFTS19JTlRSICAgICAgICAgIChWUFNSX0lfQklUIHwgVlBTUl9GX0JJVCkK
KyNkZWZpbmUgVlBTUl9NQVNLX01PREUgICAgICAgICAgMHgwMDAwMDFmCisjZGVmaW5lIFZQ
U1JfTUFTS19GTEFHUyAgICAgICAgIDB4ZmYwMDAwMDAgICAgICAvKiBGbGFncyAgICAgICAg
ICAgICAgICAqLworI2RlZmluZSBWUFNSX01BU0tfU1RBVFVTICAgICAgICAweDAwZmYwMDAw
ICAgICAgLyogU3RhdHVzICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVlBTUl9NQVNLX0VY
VEVOU0lPTiAgICAgMHgwMDAwZmYwMCAgICAgIC8qIEV4dGVuc2lvbiAgICAgICAgICAgICov
CisjZGVmaW5lIFZQU1JfTUFTS19DT05UUk9MICAgICAgIDB4MDAwMDAwZmYgICAgICAvKiBD
b250cm9sICAgICAgICAgICAgICAqLworCisvKgorICogSFlQRVJDQUxMUyBmb3IgQVJNIGFy
Y2hpdGVjdHVyZQorICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9yZXN0b3JlX3RyYXBfZnJh
bWUgICAgICAgICAgICAyMworCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfY3B1X2RvbWFp
biAgICAgICAgICAgICAgICA0OAorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9fc2V0X2ZvcmVn
cm91bmRfZG9tYWluICAgICAgNDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvX2djb3Zfb3Ag
ICAgICAgICAgICAgICAgICAgIDQwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kb192ZnBfb3Ag
ICAgICAgICAgICAgICAgICAgICA1MQorI2RlZmluZSBfX0hZUEVSVklTT1JfZG9fc2V0X3Rs
cyAgICAgICAgICAgICAgICAgICAgNTIKKworI2RlZmluZSBUTEJGX0lUTEIgICAgICAgICAg
ICAgICAxCisjZGVmaW5lIFRMQkZfRFRMQiAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgVExC
Rl9BU0lEICAgICAgICAgICAgICAgNAorCisKKyNkZWZpbmUgQ01EX0ZNUlggICAgICAgICAg
ICAgICAgMAorI2RlZmluZSBDTURfRk1YUiAgICAgICAgICAgICAgICAxCisKKyNkZWZpbmUg
RlBFWENfWEVOICAgICAgICAgICAgICAgMAorI2RlZmluZSBGUElOU1RfWEVOICAgICAgICAg
ICAgICAxCisjZGVmaW5lIEZQSU5TVDJfWEVOICAgICAgICAgICAgIDIKKyNkZWZpbmUgTVZG
UjBfWEVOICAgICAgICAgICAgICAgMworCisvKiBGUEVYQyBiaXRzICovCisjZGVmaW5lIEZQ
RVhDX0VYQ0VQVElPTiAgICAgICAgICgxPDwzMSkKKyNkZWZpbmUgRlBFWENfRU5BQkxFICAg
ICAgICAgICAgKDE8PDMwKQorCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaWZkZWYgX19Y
RU5fXworI2RlZmluZSBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSBc
CisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0eXBlICpwOyB9IF9fZ3Vlc3RfaGFuZGxlXyAjIyBu
YW1lCisjZWxzZQorI2RlZmluZSBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0
eXBlKSBcCisgICAgdHlwZWRlZiB0eXBlICogX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyNl
bmRpZgorICAgIAorI2RlZmluZSBfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5
cGUpIFwKKyAgICBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKTsgICBc
CisgICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY29uc3RfIyNuYW1lLCBjb25zdCB0
eXBlKQorCisjZGVmaW5lIERFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUpIF9fREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgbmFtZSkKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRM
RShuYW1lKSAgICAgICAgX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyAgICAKKworLyoKKyAq
IFZpcnR1YWwgYWRkcmVzc2VzIGJleW9uZCB0aGlzIGFyZSBub3QgbW9kaWZpYWJsZSBieSBn
dWVzdCBPU2VzLiBUaGUgCisgKiBtYWNoaW5lLT5waHlzaWNhbCBtYXBwaW5nIHRhYmxlIHN0
YXJ0cyBhdCB0aGlzIGFkZHJlc3MsIHJlYWQtb25seS4KKyAqLworI2RlZmluZSBfX0hZUEVS
VklTT1JfVklSVF9TVEFSVCAweEZDMDAwMDAwCisKKyNpZm5kZWYgSFlQRVJWSVNPUl9WSVJU
X1NUQVJUCisjZGVmaW5lIEhZUEVSVklTT1JfVklSVF9TVEFSVCBta191bnNpZ25lZF9sb25n
KF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKKyNpZm5kZWYgbWFjaGluZV90
b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcgKCh1bnNp
Z25lZCBsb25nICopSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQorI2VuZGlmCisKK3R5cGVkZWYg
dW5zaWduZWQgbG9uZyB4ZW5fcGZuX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgeGVuX3Vs
b25nX3Q7CisKK3R5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB7CisJdW5zaWduZWQgbG9uZyBp
bnN0cnVjdGlvbjsKK310cmFwX2luZm9fdDsKKworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
dHJhcF9pbmZvX3QpOworCit0eXBlZGVmIHN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgewor
CXVuc2lnbmVkIGxvbmcJcjA7CisJdW5zaWduZWQgbG9uZwlyMTsKKwl1bnNpZ25lZCBsb25n
CXIyOworCXVuc2lnbmVkIGxvbmcJcjM7CisJdW5zaWduZWQgbG9uZwlyNDsKKwl1bnNpZ25l
ZCBsb25nCXI1OworCXVuc2lnbmVkIGxvbmcJcjY7CisJdW5zaWduZWQgbG9uZwlyNzsKKwl1
bnNpZ25lZCBsb25nCXI4OworCXVuc2lnbmVkIGxvbmcJcjk7CisJdW5zaWduZWQgbG9uZwly
MTA7CisJdW5zaWduZWQgbG9uZwlyMTE7CisJdW5zaWduZWQgbG9uZwlyMTI7CisJdW5zaWdu
ZWQgbG9uZwlyMTM7CisJdW5zaWduZWQgbG9uZwlyMTQ7CisJdW5zaWduZWQgbG9uZwlyMTU7
CisJdW5zaWduZWQgbG9uZyAgIHZiYXI7CisJdW5zaWduZWQgbG9uZyAgIGRhY3I7CisJdW5z
aWduZWQgbG9uZyAgIGNvbnRleHRpZHI7CisJdW5zaWduZWQgbG9uZyAgIGZjc2VpZHI7CisJ
dW5zaWduZWQgbG9uZyAgIHR0YnIwOworCXVuc2lnbmVkIGxvbmcgICB0dGJyMTsKKwl1bnNp
Z25lZCBsb25nICAgdHRiY3I7CisJdW5zaWduZWQgbG9uZwljcGFyOworfSB2Y3B1X2d1ZXN0
X2NvbnRleHRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29udGV4
dF90KTsKKwordHlwZWRlZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgICAgIHVuc2ln
bmVkIGxvbmcgICByMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxOworICAgICAgICB1
bnNpZ25lZCBsb25nICAgcjI7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgICByMzsKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyAgIHI0OworICAgICAgICB1bnNpZ25lZCBsb25nICAgcjU7Cisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgICByNjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHI3
OworICAgICAgICB1bnNpZ25lZCBsb25nICAgcjg7CisgICAgICAgIHVuc2lnbmVkIGxvbmcg
ICByOTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxMDsKKyAgICAgICAgdW5zaWduZWQg
bG9uZyAgIHIxMTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxMjsKKyAgICAgICAgdW5z
aWduZWQgbG9uZyAgIHIxMzsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgIHIxNDsKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyAgIHIxNTsKKwl1bnNpZ25lZCBsb25nCXBzcjsKK30gY3B1X3Vz
ZXJfcmVnc190OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsK
KwordHlwZWRlZiBzdHJ1Y3QgYXJjaF92Y3B1X2luZm8geworCXVuc2lnbmVkIGxvbmcJc3A7
CisJdW5zaWduZWQgbG9uZwlscjsKKwl1bnNpZ25lZCBsb25nCWNwc3I7CisJdW5zaWduZWQg
bG9uZwlzcHNyOworCXVuc2lnbmVkIGxvbmcJY3I7CisJdW5zaWduZWQgbG9uZwljcGFyOwor
CXVuc2lnbmVkIGxvbmcJZGFjcjsKKwl1bnNpZ25lZCBsb25nCXBpZHI7CisJdW5zaWduZWQg
bG9uZwlmYXI7CisJdW5zaWduZWQgbG9uZwlmc3I7CisJdW5zaWduZWQgbG9uZwlyZXNlcnZl
ZDEwOworCXVuc2lnbmVkIGxvbmcJcmVzZXJ2ZWQxMTsKKwl1bnNpZ25lZCBsb25nCXJlc2Vy
dmVkMTI7CisJdW5zaWduZWQgbG9uZwlyZXNlcnZlZDEzOworCXVuc2lnbmVkIGxvbmcJcmVz
ZXJ2ZWQxNDsKK30gYXJjaF92Y3B1X2luZm9fdDsKKworI2RlZmluZSBYRU5fTEVHQUNZX01B
WF9WQ1BVUwk0CisKK3R5cGVkZWYgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8geworCXVuc2ln
bmVkIGxvbmcJcGxhdGZvcm07CisJdW5zaWduZWQgbG9uZwltYXhfcGZuOworCXVuc2lnbmVk
IGxvbmcJcGZuX3RvX21mbl9mcmFtZV9saXN0X2xpc3Q7Cit9IGFyY2hfc2hhcmVkX2luZm9f
dDsKKworI2RlZmluZSBFTEZfU0laRQkzMgorI2VuZGlmCisjZW5kaWYK


------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

------=SAMSUNG_mySingle_MIME_MULTIPART_BOUNDARY--



From xen-devel-bounces@lists.xensource.com Mon Feb 13 13:19:22 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Feb 2012 13:19:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RwvoH-0006AN-AY; Mon, 13 Feb 2012 13:19:13 +0000
Received: from mail21.messagelabs.com ([85.158.143.35])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <david.vrabel@citrix.com>) id 1RwvoE-00069Y-S5
	for xen-devel@lists.xensource.com; Mon, 13 Feb 2012 13:19:11 +0000
X-Env-Sender: david.vrabel@citrix.com
X-Msg-Ref: server-7.tower-21.messagelabs.com!1329139140!11154918!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAyMjM5NTU=\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28385 invoked from network); 13 Feb 2012 13:19:02 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-7.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Feb 2012 13:19:02 -0000
X-IronPort-AV: E=Sophos;i="4.73,412,1325480400"; d="scan'208";a="181488128"
Received: from ftlpmailmx02.citrite.net ([10.13.107.66])
	by FTLPIPO02.CITRIX.COM with ESMTP/TLS/RC4-MD5;
	13 Feb 2012 08:19:00 -0500
Received: from smtp01.ad.xensource.com (10.219.128.104) by
	smtprelay.citrix.com (10.13.107.66) with Microsoft SMTP Server id
	8.3.213.0; Mon, 13 Feb 2012 08:18:59 -0500
Received: from qabil.uk.xensource.com (qabil.uk.xensource.com [10.80.2.76])	by
	smtp01.ad.xensource.com (8.13.1/8.13.1) with ESMTP id q1DDIuj8024703;
	Mon, 13 Feb 2012 05:18:57 -0800
From: David Vrabel <david.vrabel@citrix.com>
To: <xen-devel@lists.xensource.com>
Date: Mon, 13 Feb 2012 13:18:44 +0000
Message-ID: <1329139131-27554-2-git-send-email-david.vrabel@citrix.com>
X-Mailer: git-send-email 1.7.2.5
In-Reply-To: <1329139131-27554-1-git-send-email-david.vrabel@citrix.com>
References: <1329139131-27554-1-git-send-email-david.vrabel@citrix.com>
MIME-Version: 1.0
Cc: Keir Fraser <keir@xen.org>, David Vrabel <david.vrabel@citrix.com>
Subject: [Xen-devel] [PATCH 1/8] libfdt: add version 1.3.0
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

From: David Vrabel <david.vrabel@citrix.com>

Add libfdt 1.3.0 from http://git.jdl.com/gitweb/?p=dtc.git

This will be used by Xen to parse the DTBs provided by bootloaders on
ARM platforms.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
Cc: Keir Fraser <keir@xen.org>
---
 xen/common/libfdt/Makefile.libfdt   |   10 +
 xen/common/libfdt/TODO              |    3 +
 xen/common/libfdt/fdt.c             |  222 +++++++
 xen/common/libfdt/fdt.h             |   60 ++
 xen/common/libfdt/fdt_ro.c          |  574 ++++++++++++++++
 xen/common/libfdt/fdt_rw.c          |  465 +++++++++++++
 xen/common/libfdt/fdt_strerror.c    |   96 +++
 xen/common/libfdt/fdt_sw.c          |  256 ++++++++
 xen/common/libfdt/fdt_wip.c         |  118 ++++
 xen/common/libfdt/libfdt.h          | 1235 +++++++++++++++++++++++++++++++++++
 xen/common/libfdt/libfdt_env.h      |   23 +
 xen/common/libfdt/libfdt_internal.h |   95 +++
 xen/common/libfdt/version.lds       |   54 ++
 13 files changed, 3211 insertions(+), 0 deletions(-)
 create mode 100644 xen/common/libfdt/Makefile.libfdt
 create mode 100644 xen/common/libfdt/TODO
 create mode 100644 xen/common/libfdt/fdt.c
 create mode 100644 xen/common/libfdt/fdt.h
 create mode 100644 xen/common/libfdt/fdt_ro.c
 create mode 100644 xen/common/libfdt/fdt_rw.c
 create mode 100644 xen/common/libfdt/fdt_strerror.c
 create mode 100644 xen/common/libfdt/fdt_sw.c
 create mode 100644 xen/common/libfdt/fdt_wip.c
 create mode 100644 xen/common/libfdt/libfdt.h
 create mode 100644 xen/common/libfdt/libfdt_env.h
 create mode 100644 xen/common/libfdt/libfdt_internal.h
 create mode 100644 xen/common/libfdt/version.lds

diff --git a/xen/common/libfdt/Makefile.libfdt b/xen/common/libfdt/Makefile.libfdt
new file mode 100644
index 0000000..d55a6f8
--- /dev/null
+++ b/xen/common/libfdt/Makefile.libfdt
@@ -0,0 +1,10 @@
+# Makefile.libfdt
+#
+# This is not a complete Makefile of itself.  Instead, it is designed to
+# be easily embeddable into other systems of Makefiles.
+#
+LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
+LIBFDT_INCLUDES = fdt.h libfdt.h
+LIBFDT_VERSION = version.lds
+LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
diff --git a/xen/common/libfdt/TODO b/xen/common/libfdt/TODO
new file mode 100644
index 0000000..288437e
--- /dev/null
+++ b/xen/common/libfdt/TODO
@@ -0,0 +1,3 @@
+- Tree traversal functions
+- Graft function
+- Complete libfdt.h documenting comments
diff --git a/xen/common/libfdt/fdt.c b/xen/common/libfdt/fdt.c
new file mode 100644
index 0000000..e56833a
--- /dev/null
+++ b/xen/common/libfdt/fdt.c
@@ -0,0 +1,222 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_check_header(const void *fdt)
+{
+	if (fdt_magic(fdt) == FDT_MAGIC) {
+		/* Complete tree */
+		if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+		if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+	} else if (fdt_magic(fdt) == FDT_SW_MAGIC) {
+		/* Unfinished sequential-write blob */
+		if (fdt_size_dt_struct(fdt) == 0)
+			return -FDT_ERR_BADSTATE;
+	} else {
+		return -FDT_ERR_BADMAGIC;
+	}
+
+	return 0;
+}
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)
+{
+	const char *p;
+
+	if (fdt_version(fdt) >= 0x11)
+		if (((offset + len) < offset)
+		    || ((offset + len) > fdt_size_dt_struct(fdt)))
+			return NULL;
+
+	p = _fdt_offset_ptr(fdt, offset);
+
+	if (p + len < p)
+		return NULL;
+	return p;
+}
+
+uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)
+{
+	const uint32_t *tagp, *lenp;
+	uint32_t tag;
+	int offset = startoffset;
+	const char *p;
+
+	*nextoffset = -FDT_ERR_TRUNCATED;
+	tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE);
+	if (!tagp)
+		return FDT_END; /* premature end */
+	tag = fdt32_to_cpu(*tagp);
+	offset += FDT_TAGSIZE;
+
+	*nextoffset = -FDT_ERR_BADSTRUCTURE;
+	switch (tag) {
+	case FDT_BEGIN_NODE:
+		/* skip name */
+		do {
+			p = fdt_offset_ptr(fdt, offset++, 1);
+		} while (p && (*p != '\0'));
+		if (!p)
+			return FDT_END; /* premature end */
+		break;
+
+	case FDT_PROP:
+		lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp));
+		if (!lenp)
+			return FDT_END; /* premature end */
+		/* skip-name offset, length and value */
+		offset += sizeof(struct fdt_property) - FDT_TAGSIZE
+			+ fdt32_to_cpu(*lenp);
+		break;
+
+	case FDT_END:
+	case FDT_END_NODE:
+	case FDT_NOP:
+		break;
+
+	default:
+		return FDT_END;
+	}
+
+	if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset))
+		return FDT_END; /* premature end */
+
+	*nextoffset = FDT_TAGALIGN(offset);
+	return tag;
+}
+
+int _fdt_check_node_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int _fdt_check_prop_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int fdt_next_node(const void *fdt, int offset, int *depth)
+{
+	int nextoffset = 0;
+	uint32_t tag;
+
+	if (offset >= 0)
+		if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0)
+			return nextoffset;
+
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_PROP:
+		case FDT_NOP:
+			break;
+
+		case FDT_BEGIN_NODE:
+			if (depth)
+				(*depth)++;
+			break;
+
+		case FDT_END_NODE:
+			if (depth && ((--(*depth)) < 0))
+				return nextoffset;
+			break;
+
+		case FDT_END:
+			if ((nextoffset >= 0)
+			    || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))
+				return -FDT_ERR_NOTFOUND;
+			else
+				return nextoffset;
+		}
+	} while (tag != FDT_BEGIN_NODE);
+
+	return offset;
+}
+
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)
+{
+	int len = strlen(s) + 1;
+	const char *last = strtab + tabsize - len;
+	const char *p;
+
+	for (p = strtab; p <= last; p++)
+		if (memcmp(p, s, len) == 0)
+			return p;
+	return NULL;
+}
+
+int fdt_move(const void *fdt, void *buf, int bufsize)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_totalsize(fdt) > bufsize)
+		return -FDT_ERR_NOSPACE;
+
+	memmove(buf, fdt, fdt_totalsize(fdt));
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt.h b/xen/common/libfdt/fdt.h
new file mode 100644
index 0000000..48ccfd9
--- /dev/null
+++ b/xen/common/libfdt/fdt.h
@@ -0,0 +1,60 @@
+#ifndef _FDT_H
+#define _FDT_H
+
+#ifndef __ASSEMBLY__
+
+struct fdt_header {
+	uint32_t magic;			 /* magic word FDT_MAGIC */
+	uint32_t totalsize;		 /* total size of DT block */
+	uint32_t off_dt_struct;		 /* offset to structure */
+	uint32_t off_dt_strings;	 /* offset to strings */
+	uint32_t off_mem_rsvmap;	 /* offset to memory reserve map */
+	uint32_t version;		 /* format version */
+	uint32_t last_comp_version;	 /* last compatible version */
+
+	/* version 2 fields below */
+	uint32_t boot_cpuid_phys;	 /* Which physical CPU id we're
+					    booting on */
+	/* version 3 fields below */
+	uint32_t size_dt_strings;	 /* size of the strings block */
+
+	/* version 17 fields below */
+	uint32_t size_dt_struct;	 /* size of the structure block */
+};
+
+struct fdt_reserve_entry {
+	uint64_t address;
+	uint64_t size;
+};
+
+struct fdt_node_header {
+	uint32_t tag;
+	char name[0];
+};
+
+struct fdt_property {
+	uint32_t tag;
+	uint32_t len;
+	uint32_t nameoff;
+	char data[0];
+};
+
+#endif /* !__ASSEMBLY */
+
+#define FDT_MAGIC	0xd00dfeed	/* 4: version, 4: total size */
+#define FDT_TAGSIZE	sizeof(uint32_t)
+
+#define FDT_BEGIN_NODE	0x1		/* Start node: full name */
+#define FDT_END_NODE	0x2		/* End node */
+#define FDT_PROP	0x3		/* Property: name off,
+					   size, content */
+#define FDT_NOP		0x4		/* nop */
+#define FDT_END		0x9
+
+#define FDT_V1_SIZE	(7*sizeof(uint32_t))
+#define FDT_V2_SIZE	(FDT_V1_SIZE + sizeof(uint32_t))
+#define FDT_V3_SIZE	(FDT_V2_SIZE + sizeof(uint32_t))
+#define FDT_V16_SIZE	FDT_V3_SIZE
+#define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(uint32_t))
+
+#endif /* _FDT_H */
diff --git a/xen/common/libfdt/fdt_ro.c b/xen/common/libfdt/fdt_ro.c
new file mode 100644
index 0000000..02b6d68
--- /dev/null
+++ b/xen/common/libfdt/fdt_ro.c
@@ -0,0 +1,574 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_nodename_eq(const void *fdt, int offset,
+			    const char *s, int len)
+{
+	const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1);
+
+	if (! p)
+		/* short match */
+		return 0;
+
+	if (memcmp(p, s, len) != 0)
+		return 0;
+
+	if (p[len] == '\0')
+		return 1;
+	else if (!memchr(s, '@', len) && (p[len] == '@'))
+		return 1;
+	else
+		return 0;
+}
+
+const char *fdt_string(const void *fdt, int stroffset)
+{
+	return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset;
+}
+
+static int _fdt_string_eq(const void *fdt, int stroffset,
+			  const char *s, int len)
+{
+	const char *p = fdt_string(fdt, stroffset);
+
+	return (strlen(p) == len) && (memcmp(p, s, len) == 0);
+}
+
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size)
+{
+	FDT_CHECK_HEADER(fdt);
+	*address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address);
+	*size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size);
+	return 0;
+}
+
+int fdt_num_mem_rsv(const void *fdt)
+{
+	int i = 0;
+
+	while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0)
+		i++;
+	return i;
+}
+
+static int _nextprop(const void *fdt, int offset)
+{
+	uint32_t tag;
+	int nextoffset;
+
+	do {
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_END:
+			if (nextoffset >= 0)
+				return -FDT_ERR_BADSTRUCTURE;
+			else
+				return nextoffset;
+
+		case FDT_PROP:
+			return offset;
+		}
+		offset = nextoffset;
+	} while (tag == FDT_NOP);
+
+	return -FDT_ERR_NOTFOUND;
+}
+
+int fdt_subnode_offset_namelen(const void *fdt, int offset,
+			       const char *name, int namelen)
+{
+	int depth;
+
+	FDT_CHECK_HEADER(fdt);
+
+	for (depth = 0;
+	     (offset >= 0) && (depth >= 0);
+	     offset = fdt_next_node(fdt, offset, &depth))
+		if ((depth == 1)
+		    && _fdt_nodename_eq(fdt, offset, name, namelen))
+			return offset;
+
+	if (depth < 0)
+		return -FDT_ERR_NOTFOUND;
+	return offset; /* error */
+}
+
+int fdt_subnode_offset(const void *fdt, int parentoffset,
+		       const char *name)
+{
+	return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_path_offset(const void *fdt, const char *path)
+{
+	const char *end = path + strlen(path);
+	const char *p = path;
+	int offset = 0;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* see if we have an alias */
+	if (*path != '/') {
+		const char *q = strchr(path, '/');
+
+		if (!q)
+			q = end;
+
+		p = fdt_get_alias_namelen(fdt, p, q - p);
+		if (!p)
+			return -FDT_ERR_BADPATH;
+		offset = fdt_path_offset(fdt, p);
+
+		p = q;
+	}
+
+	while (*p) {
+		const char *q;
+
+		while (*p == '/')
+			p++;
+		if (! *p)
+			return offset;
+		q = strchr(p, '/');
+		if (! q)
+			q = end;
+
+		offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p);
+		if (offset < 0)
+			return offset;
+
+		p = q;
+	}
+
+	return offset;
+}
+
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
+{
+	const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset);
+	int err;
+
+	if (((err = fdt_check_header(fdt)) != 0)
+	    || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0))
+			goto fail;
+
+	if (len)
+		*len = strlen(nh->name);
+
+	return nh->name;
+
+ fail:
+	if (len)
+		*len = err;
+	return NULL;
+}
+
+int fdt_first_property_offset(const void *fdt, int nodeoffset)
+{
+	int offset;
+
+	if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+int fdt_next_property_offset(const void *fdt, int offset)
+{
+	if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp)
+{
+	int err;
+	const struct fdt_property *prop;
+
+	if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) {
+		if (lenp)
+			*lenp = err;
+		return NULL;
+	}
+
+	prop = _fdt_offset_ptr(fdt, offset);
+
+	if (lenp)
+		*lenp = fdt32_to_cpu(prop->len);
+
+	return prop;
+}
+
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int offset,
+						    const char *name,
+						    int namelen, int *lenp)
+{
+	for (offset = fdt_first_property_offset(fdt, offset);
+	     (offset >= 0);
+	     (offset = fdt_next_property_offset(fdt, offset))) {
+		const struct fdt_property *prop;
+
+		if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) {
+			offset = -FDT_ERR_INTERNAL;
+			break;
+		}
+		if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
+				   name, namelen))
+			return prop;
+	}
+
+	if (lenp)
+		*lenp = offset;
+	return NULL;
+}
+
+const struct fdt_property *fdt_get_property(const void *fdt,
+					    int nodeoffset,
+					    const char *name, int *lenp)
+{
+	return fdt_get_property_namelen(fdt, nodeoffset, name,
+					strlen(name), lenp);
+}
+
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp);
+	if (! prop)
+		return NULL;
+
+	return prop->data;
+}
+
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_by_offset(fdt, offset, lenp);
+	if (!prop)
+		return NULL;
+	if (namep)
+		*namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+	return prop->data;
+}
+
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp)
+{
+	return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp);
+}
+
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset)
+{
+	const uint32_t *php;
+	int len;
+
+	/* FIXME: This is a bit sub-optimal, since we potentially scan
+	 * over all the properties twice. */
+	php = fdt_getprop(fdt, nodeoffset, "phandle", &len);
+	if (!php || (len != sizeof(*php))) {
+		php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len);
+		if (!php || (len != sizeof(*php)))
+			return 0;
+	}
+
+	return fdt32_to_cpu(*php);
+}
+
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen)
+{
+	int aliasoffset;
+
+	aliasoffset = fdt_path_offset(fdt, "/aliases");
+	if (aliasoffset < 0)
+		return NULL;
+
+	return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
+}
+
+const char *fdt_get_alias(const void *fdt, const char *name)
+{
+	return fdt_get_alias_namelen(fdt, name, strlen(name));
+}
+
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen)
+{
+	int pdepth = 0, p = 0;
+	int offset, depth, namelen;
+	const char *name;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (buflen < 2)
+		return -FDT_ERR_NOSPACE;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		while (pdepth > depth) {
+			do {
+				p--;
+			} while (buf[p-1] != '/');
+			pdepth--;
+		}
+
+		if (pdepth >= depth) {
+			name = fdt_get_name(fdt, offset, &namelen);
+			if (!name)
+				return namelen;
+			if ((p + namelen + 1) <= buflen) {
+				memcpy(buf + p, name, namelen);
+				p += namelen;
+				buf[p++] = '/';
+				pdepth++;
+			}
+		}
+
+		if (offset == nodeoffset) {
+			if (pdepth < (depth + 1))
+				return -FDT_ERR_NOSPACE;
+
+			if (p > 1) /* special case so that root path is "/", not "" */
+				p--;
+			buf[p] = '\0';
+			return 0;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth)
+{
+	int offset, depth;
+	int supernodeoffset = -FDT_ERR_INTERNAL;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (supernodedepth < 0)
+		return -FDT_ERR_NOTFOUND;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		if (depth == supernodedepth)
+			supernodeoffset = offset;
+
+		if (offset == nodeoffset) {
+			if (nodedepth)
+				*nodedepth = depth;
+
+			if (supernodedepth > depth)
+				return -FDT_ERR_NOTFOUND;
+			else
+				return supernodeoffset;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_depth(const void *fdt, int nodeoffset)
+{
+	int nodedepth;
+	int err;
+
+	err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
+	if (err)
+		return (err < 0) ? err : -FDT_ERR_INTERNAL;
+	return nodedepth;
+}
+
+int fdt_parent_offset(const void *fdt, int nodeoffset)
+{
+	int nodedepth = fdt_node_depth(fdt, nodeoffset);
+
+	if (nodedepth < 0)
+		return nodedepth;
+	return fdt_supernode_atdepth_offset(fdt, nodeoffset,
+					    nodedepth - 1, NULL);
+}
+
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen)
+{
+	int offset;
+	const void *val;
+	int len;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_getprop(), then if that didn't
+	 * find what we want, we scan over them again making our way
+	 * to the next node.  Still it's the easiest to implement
+	 * approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		val = fdt_getprop(fdt, offset, propname, &len);
+		if (val && (len == proplen)
+		    && (memcmp(val, propval, len) == 0))
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle)
+{
+	int offset;
+
+	if ((phandle == 0) || (phandle == -1))
+		return -FDT_ERR_BADPHANDLE;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we
+	 * potentially scan each property of a node in
+	 * fdt_get_phandle(), then if that didn't find what
+	 * we want, we scan over them again making our way to the next
+	 * node.  Still it's the easiest to implement approach;
+	 * performance can come later. */
+	for (offset = fdt_next_node(fdt, -1, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		if (fdt_get_phandle(fdt, offset) == phandle)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+static int _fdt_stringlist_contains(const char *strlist, int listlen,
+				    const char *str)
+{
+	int len = strlen(str);
+	const char *p;
+
+	while (listlen >= len) {
+		if (memcmp(str, strlist, len+1) == 0)
+			return 1;
+		p = memchr(strlist, '\0', listlen);
+		if (!p)
+			return 0; /* malformed strlist.. */
+		listlen -= (p-strlist) + 1;
+		strlist = p + 1;
+	}
+	return 0;
+}
+
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible)
+{
+	const void *prop;
+	int len;
+
+	prop = fdt_getprop(fdt, nodeoffset, "compatible", &len);
+	if (!prop)
+		return len;
+	if (_fdt_stringlist_contains(prop, len, compatible))
+		return 0;
+	else
+		return 1;
+}
+
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible)
+{
+	int offset, err;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_node_check_compatible(), then if
+	 * that didn't find what we want, we scan over them again
+	 * making our way to the next node.  Still it's the easiest to
+	 * implement approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		err = fdt_node_check_compatible(fdt, offset, compatible);
+		if ((err < 0) && (err != -FDT_ERR_NOTFOUND))
+			return err;
+		else if (err == 0)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
diff --git a/xen/common/libfdt/fdt_rw.c b/xen/common/libfdt/fdt_rw.c
new file mode 100644
index 0000000..994037b
--- /dev/null
+++ b/xen/common/libfdt/fdt_rw.c
@@ -0,0 +1,465 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_blocks_misordered(const void *fdt,
+			      int mem_rsv_size, int struct_size)
+{
+	return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8))
+		|| (fdt_off_dt_struct(fdt) <
+		    (fdt_off_mem_rsvmap(fdt) + mem_rsv_size))
+		|| (fdt_off_dt_strings(fdt) <
+		    (fdt_off_dt_struct(fdt) + struct_size))
+		|| (fdt_totalsize(fdt) <
+		    (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)));
+}
+
+static int _fdt_rw_check_header(void *fdt)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_version(fdt) < 17)
+		return -FDT_ERR_BADVERSION;
+	if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry),
+				   fdt_size_dt_struct(fdt)))
+		return -FDT_ERR_BADLAYOUT;
+	if (fdt_version(fdt) > 17)
+		fdt_set_version(fdt, 17);
+
+	return 0;
+}
+
+#define FDT_RW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_rw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static inline int _fdt_data_size(void *fdt)
+{
+	return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+}
+
+static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen)
+{
+	char *p = splicepoint;
+	char *end = (char *)fdt + _fdt_data_size(fdt);
+
+	if (((p + oldlen) < p) || ((p + oldlen) > end))
+		return -FDT_ERR_BADOFFSET;
+	if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt)))
+		return -FDT_ERR_NOSPACE;
+	memmove(p + newlen, p + oldlen, end - p - oldlen);
+	return 0;
+}
+
+static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p,
+			       int oldn, int newn)
+{
+	int delta = (newn - oldn) * sizeof(*p);
+	int err;
+	err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p));
+	if (err)
+		return err;
+	fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_struct(void *fdt, void *p,
+			      int oldlen, int newlen)
+{
+	int delta = newlen - oldlen;
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, oldlen, newlen)))
+		return err;
+
+	fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_string(void *fdt, int newlen)
+{
+	void *p = (char *)fdt
+		+ fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, 0, newlen)))
+		return err;
+
+	fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_off_dt_strings(fdt);
+	const char *p;
+	char *new;
+	int len = strlen(s) + 1;
+	int err;
+
+	p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s);
+	if (p)
+		/* found it */
+		return (p - strtab);
+
+	new = strtab + fdt_size_dt_strings(fdt);
+	err = _fdt_splice_string(fdt, len);
+	if (err)
+		return err;
+
+	memcpy(new, s, len);
+	return (new - strtab);
+}
+
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt));
+	err = _fdt_splice_mem_rsv(fdt, re, 0, 1);
+	if (err)
+		return err;
+
+	re->address = cpu_to_fdt64(address);
+	re->size = cpu_to_fdt64(size);
+	return 0;
+}
+
+int fdt_del_mem_rsv(void *fdt, int n)
+{
+	struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n);
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	if (n >= fdt_num_mem_rsv(fdt))
+		return -FDT_ERR_NOTFOUND;
+
+	err = _fdt_splice_mem_rsv(fdt, re, 1, 0);
+	if (err)
+		return err;
+	return 0;
+}
+
+static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name,
+				int len, struct fdt_property **prop)
+{
+	int oldlen;
+	int err;
+
+	*prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
+	if (! (*prop))
+		return oldlen;
+
+	if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen),
+				      FDT_TAGALIGN(len))))
+		return err;
+
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+static int _fdt_add_property(void *fdt, int nodeoffset, const char *name,
+			     int len, struct fdt_property **prop)
+{
+	int proplen;
+	int nextoffset;
+	int namestroff;
+	int err;
+
+	if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return nextoffset;
+
+	namestroff = _fdt_find_add_string(fdt, name);
+	if (namestroff < 0)
+		return namestroff;
+
+	*prop = _fdt_offset_ptr_w(fdt, nextoffset);
+	proplen = sizeof(**prop) + FDT_TAGALIGN(len);
+
+	err = _fdt_splice_struct(fdt, *prop, 0, proplen);
+	if (err)
+		return err;
+
+	(*prop)->tag = cpu_to_fdt32(FDT_PROP);
+	(*prop)->nameoff = cpu_to_fdt32(namestroff);
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+int fdt_set_name(void *fdt, int nodeoffset, const char *name)
+{
+	char *namep;
+	int oldlen, newlen;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	namep = (char *)(uintptr_t)fdt_get_name(fdt, nodeoffset, &oldlen);
+	if (!namep)
+		return oldlen;
+
+	newlen = strlen(name);
+
+	err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1),
+				 FDT_TAGALIGN(newlen+1));
+	if (err)
+		return err;
+
+	memcpy(namep, name, newlen+1);
+	return 0;
+}
+
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len)
+{
+	struct fdt_property *prop;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop);
+	if (err == -FDT_ERR_NOTFOUND)
+		err = _fdt_add_property(fdt, nodeoffset, name, len, &prop);
+	if (err)
+		return err;
+
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_delprop(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len, proplen;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	proplen = sizeof(*prop) + FDT_TAGALIGN(len);
+	return _fdt_splice_struct(fdt, prop, proplen, 0);
+}
+
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen)
+{
+	struct fdt_node_header *nh;
+	int offset, nextoffset;
+	int nodelen;
+	int err;
+	uint32_t tag;
+	uint32_t *endtag;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	offset = fdt_subnode_offset_namelen(fdt, parentoffset, name, namelen);
+	if (offset >= 0)
+		return -FDT_ERR_EXISTS;
+	else if (offset != -FDT_ERR_NOTFOUND)
+		return offset;
+
+	/* Try to place the new node after the parent's properties */
+	fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+	} while ((tag == FDT_PROP) || (tag == FDT_NOP));
+
+	nh = _fdt_offset_ptr_w(fdt, offset);
+	nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE;
+
+	err = _fdt_splice_struct(fdt, nh, 0, nodelen);
+	if (err)
+		return err;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memset(nh->name, 0, FDT_TAGALIGN(namelen+1));
+	memcpy(nh->name, name, namelen);
+	endtag = (uint32_t *)((char *)nh + nodelen - FDT_TAGSIZE);
+	*endtag = cpu_to_fdt32(FDT_END_NODE);
+
+	return offset;
+}
+
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name)
+{
+	return fdt_add_subnode_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_del_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset),
+				  endoffset - nodeoffset, 0);
+}
+
+static void _fdt_packblocks(const char *old, char *new,
+			    int mem_rsv_size, int struct_size)
+{
+	int mem_rsv_off, struct_off, strings_off;
+
+	mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
+	struct_off = mem_rsv_off + mem_rsv_size;
+	strings_off = struct_off + struct_size;
+
+	memmove(new + mem_rsv_off, old + fdt_off_mem_rsvmap(old), mem_rsv_size);
+	fdt_set_off_mem_rsvmap(new, mem_rsv_off);
+
+	memmove(new + struct_off, old + fdt_off_dt_struct(old), struct_size);
+	fdt_set_off_dt_struct(new, struct_off);
+	fdt_set_size_dt_struct(new, struct_size);
+
+	memmove(new + strings_off, old + fdt_off_dt_strings(old),
+		fdt_size_dt_strings(old));
+	fdt_set_off_dt_strings(new, strings_off);
+	fdt_set_size_dt_strings(new, fdt_size_dt_strings(old));
+}
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize)
+{
+	int err;
+	int mem_rsv_size, struct_size;
+	int newsize;
+	const char *fdtstart = fdt;
+	const char *fdtend = fdtstart + fdt_totalsize(fdt);
+	char *tmp;
+
+	FDT_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+
+	if (fdt_version(fdt) >= 17) {
+		struct_size = fdt_size_dt_struct(fdt);
+	} else {
+		struct_size = 0;
+		while (fdt_next_tag(fdt, struct_size, &struct_size) != FDT_END)
+			;
+		if (struct_size < 0)
+			return struct_size;
+	}
+
+	if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) {
+		/* no further work necessary */
+		err = fdt_move(fdt, buf, bufsize);
+		if (err)
+			return err;
+		fdt_set_version(buf, 17);
+		fdt_set_size_dt_struct(buf, struct_size);
+		fdt_set_totalsize(buf, bufsize);
+		return 0;
+	}
+
+	/* Need to reorder */
+	newsize = FDT_ALIGN(sizeof(struct fdt_header), 8) + mem_rsv_size
+		+ struct_size + fdt_size_dt_strings(fdt);
+
+	if (bufsize < newsize)
+		return -FDT_ERR_NOSPACE;
+
+	/* First attempt to build converted tree at beginning of buffer */
+	tmp = buf;
+	/* But if that overlaps with the old tree... */
+	if (((tmp + newsize) > fdtstart) && (tmp < fdtend)) {
+		/* Try right after the old tree instead */
+		tmp = (char *)(uintptr_t)fdtend;
+		if ((tmp + newsize) > ((char *)buf + bufsize))
+			return -FDT_ERR_NOSPACE;
+	}
+
+	_fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size);
+	memmove(buf, tmp, newsize);
+
+	fdt_set_magic(buf, FDT_MAGIC);
+	fdt_set_totalsize(buf, bufsize);
+	fdt_set_version(buf, 17);
+	fdt_set_last_comp_version(buf, 16);
+	fdt_set_boot_cpuid_phys(buf, fdt_boot_cpuid_phys(fdt));
+
+	return 0;
+}
+
+int fdt_pack(void *fdt)
+{
+	int mem_rsv_size;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+	_fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt));
+	fdt_set_totalsize(fdt, _fdt_data_size(fdt));
+
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt_strerror.c b/xen/common/libfdt/fdt_strerror.c
new file mode 100644
index 0000000..e6c3cee
--- /dev/null
+++ b/xen/common/libfdt/fdt_strerror.c
@@ -0,0 +1,96 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+struct fdt_errtabent {
+	const char *str;
+};
+
+#define FDT_ERRTABENT(val) \
+	[(val)] = { .str = #val, }
+
+static struct fdt_errtabent fdt_errtable[] = {
+	FDT_ERRTABENT(FDT_ERR_NOTFOUND),
+	FDT_ERRTABENT(FDT_ERR_EXISTS),
+	FDT_ERRTABENT(FDT_ERR_NOSPACE),
+
+	FDT_ERRTABENT(FDT_ERR_BADOFFSET),
+	FDT_ERRTABENT(FDT_ERR_BADPATH),
+	FDT_ERRTABENT(FDT_ERR_BADSTATE),
+
+	FDT_ERRTABENT(FDT_ERR_TRUNCATED),
+	FDT_ERRTABENT(FDT_ERR_BADMAGIC),
+	FDT_ERRTABENT(FDT_ERR_BADVERSION),
+	FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
+	FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
+};
+#define FDT_ERRTABSIZE	(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
+
+const char *fdt_strerror(int errval)
+{
+	if (errval > 0)
+		return "<valid offset/length>";
+	else if (errval == 0)
+		return "<no error>";
+	else if (errval > -FDT_ERRTABSIZE) {
+		const char *s = fdt_errtable[-errval].str;
+
+		if (s)
+			return s;
+	}
+
+	return "<unknown error>";
+}
diff --git a/xen/common/libfdt/fdt_sw.c b/xen/common/libfdt/fdt_sw.c
new file mode 100644
index 0000000..55ebebf
--- /dev/null
+++ b/xen/common/libfdt/fdt_sw.c
@@ -0,0 +1,256 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_sw_check_header(void *fdt)
+{
+	if (fdt_magic(fdt) != FDT_SW_MAGIC)
+		return -FDT_ERR_BADMAGIC;
+	/* FIXME: should check more details about the header state */
+	return 0;
+}
+
+#define FDT_SW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_sw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static void *_fdt_grab_space(void *fdt, size_t len)
+{
+	int offset = fdt_size_dt_struct(fdt);
+	int spaceleft;
+
+	spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt)
+		- fdt_size_dt_strings(fdt);
+
+	if ((offset + len < offset) || (offset + len > spaceleft))
+		return NULL;
+
+	fdt_set_size_dt_struct(fdt, offset + len);
+	return _fdt_offset_ptr_w(fdt, offset);
+}
+
+int fdt_create(void *buf, int bufsize)
+{
+	void *fdt = buf;
+
+	if (bufsize < sizeof(struct fdt_header))
+		return -FDT_ERR_NOSPACE;
+
+	memset(buf, 0, bufsize);
+
+	fdt_set_magic(fdt, FDT_SW_MAGIC);
+	fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION);
+	fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION);
+	fdt_set_totalsize(fdt,  bufsize);
+
+	fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header),
+					      sizeof(struct fdt_reserve_entry)));
+	fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt));
+	fdt_set_off_dt_strings(fdt, bufsize);
+
+	return 0;
+}
+
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int offset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	if (fdt_size_dt_struct(fdt))
+		return -FDT_ERR_BADSTATE;
+
+	offset = fdt_off_dt_struct(fdt);
+	if ((offset + sizeof(*re)) > fdt_totalsize(fdt))
+		return -FDT_ERR_NOSPACE;
+
+	re = (struct fdt_reserve_entry *)((char *)fdt + offset);
+	re->address = cpu_to_fdt64(addr);
+	re->size = cpu_to_fdt64(size);
+
+	fdt_set_off_dt_struct(fdt, offset + sizeof(*re));
+
+	return 0;
+}
+
+int fdt_finish_reservemap(void *fdt)
+{
+	return fdt_add_reservemap_entry(fdt, 0, 0);
+}
+
+int fdt_begin_node(void *fdt, const char *name)
+{
+	struct fdt_node_header *nh;
+	int namelen = strlen(name) + 1;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen));
+	if (! nh)
+		return -FDT_ERR_NOSPACE;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memcpy(nh->name, name, namelen);
+	return 0;
+}
+
+int fdt_end_node(void *fdt)
+{
+	uint32_t *en;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	en = _fdt_grab_space(fdt, FDT_TAGSIZE);
+	if (! en)
+		return -FDT_ERR_NOSPACE;
+
+	*en = cpu_to_fdt32(FDT_END_NODE);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_totalsize(fdt);
+	const char *p;
+	int strtabsize = fdt_size_dt_strings(fdt);
+	int len = strlen(s) + 1;
+	int struct_top, offset;
+
+	p = _fdt_find_string(strtab - strtabsize, strtabsize, s);
+	if (p)
+		return p - strtab;
+
+	/* Add it */
+	offset = -strtabsize - len;
+	struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	if (fdt_totalsize(fdt) + offset < struct_top)
+		return 0; /* no more room :( */
+
+	memcpy(strtab + offset, s, len);
+	fdt_set_size_dt_strings(fdt, strtabsize + len);
+	return offset;
+}
+
+int fdt_property(void *fdt, const char *name, const void *val, int len)
+{
+	struct fdt_property *prop;
+	int nameoff;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nameoff = _fdt_find_add_string(fdt, name);
+	if (nameoff == 0)
+		return -FDT_ERR_NOSPACE;
+
+	prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len));
+	if (! prop)
+		return -FDT_ERR_NOSPACE;
+
+	prop->tag = cpu_to_fdt32(FDT_PROP);
+	prop->nameoff = cpu_to_fdt32(nameoff);
+	prop->len = cpu_to_fdt32(len);
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_finish(void *fdt)
+{
+	char *p = (char *)fdt;
+	uint32_t *end;
+	int oldstroffset, newstroffset;
+	uint32_t tag;
+	int offset, nextoffset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	/* Add terminator */
+	end = _fdt_grab_space(fdt, sizeof(*end));
+	if (! end)
+		return -FDT_ERR_NOSPACE;
+	*end = cpu_to_fdt32(FDT_END);
+
+	/* Relocate the string table */
+	oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt);
+	newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt));
+	fdt_set_off_dt_strings(fdt, newstroffset);
+
+	/* Walk the structure, correcting string offsets */
+	offset = 0;
+	while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) {
+		if (tag == FDT_PROP) {
+			struct fdt_property *prop =
+				_fdt_offset_ptr_w(fdt, offset);
+			int nameoff;
+
+			nameoff = fdt32_to_cpu(prop->nameoff);
+			nameoff += fdt_size_dt_strings(fdt);
+			prop->nameoff = cpu_to_fdt32(nameoff);
+		}
+		offset = nextoffset;
+	}
+	if (nextoffset < 0)
+		return nextoffset;
+
+	/* Finally, adjust the header */
+	fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt));
+	fdt_set_magic(fdt, FDT_MAGIC);
+	return 0;
+}
diff --git a/xen/common/libfdt/fdt_wip.c b/xen/common/libfdt/fdt_wip.c
new file mode 100644
index 0000000..6025fa1
--- /dev/null
+++ b/xen/common/libfdt/fdt_wip.c
@@ -0,0 +1,118 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len)
+{
+	void *propval;
+	int proplen;
+
+	propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen);
+	if (! propval)
+		return proplen;
+
+	if (proplen != len)
+		return -FDT_ERR_NOSPACE;
+
+	memcpy(propval, val, len);
+	return 0;
+}
+
+static void _fdt_nop_region(void *start, int len)
+{
+	uint32_t *p;
+
+	for (p = start; (char *)p < ((char *)start + len); p++)
+		*p = cpu_to_fdt32(FDT_NOP);
+}
+
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len;
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	_fdt_nop_region(prop, len + sizeof(*prop));
+
+	return 0;
+}
+
+int _fdt_node_end_offset(void *fdt, int offset)
+{
+	int depth = 0;
+
+	while ((offset >= 0) && (depth >= 0))
+		offset = fdt_next_node(fdt, offset, &depth);
+
+	return offset;
+}
+
+int fdt_nop_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	_fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0),
+			endoffset - nodeoffset);
+	return 0;
+}
diff --git a/xen/common/libfdt/libfdt.h b/xen/common/libfdt/libfdt.h
new file mode 100644
index 0000000..55f3eb3
--- /dev/null
+++ b/xen/common/libfdt/libfdt.h
@@ -0,0 +1,1235 @@
+#ifndef _LIBFDT_H
+#define _LIBFDT_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <libfdt_env.h>
+#include <fdt.h>
+
+#define FDT_FIRST_SUPPORTED_VERSION	0x10
+#define FDT_LAST_SUPPORTED_VERSION	0x11
+
+/* Error codes: informative error codes */
+#define FDT_ERR_NOTFOUND	1
+	/* FDT_ERR_NOTFOUND: The requested node or property does not exist */
+#define FDT_ERR_EXISTS		2
+	/* FDT_ERR_EXISTS: Attemped to create a node or property which
+	 * already exists */
+#define FDT_ERR_NOSPACE		3
+	/* FDT_ERR_NOSPACE: Operation needed to expand the device
+	 * tree, but its buffer did not have sufficient space to
+	 * contain the expanded tree. Use fdt_open_into() to move the
+	 * device tree to a buffer with more space. */
+
+/* Error codes: codes for bad parameters */
+#define FDT_ERR_BADOFFSET	4
+	/* FDT_ERR_BADOFFSET: Function was passed a structure block
+	 * offset which is out-of-bounds, or which points to an
+	 * unsuitable part of the structure for the operation. */
+#define FDT_ERR_BADPATH		5
+	/* FDT_ERR_BADPATH: Function was passed a badly formatted path
+	 * (e.g. missing a leading / for a function which requires an
+	 * absolute path) */
+#define FDT_ERR_BADPHANDLE	6
+	/* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle
+	 * value.  phandle values of 0 and -1 are not permitted. */
+#define FDT_ERR_BADSTATE	7
+	/* FDT_ERR_BADSTATE: Function was passed an incomplete device
+	 * tree created by the sequential-write functions, which is
+	 * not sufficiently complete for the requested operation. */
+
+/* Error codes: codes for bad device tree blobs */
+#define FDT_ERR_TRUNCATED	8
+	/* FDT_ERR_TRUNCATED: Structure block of the given device tree
+	 * ends without an FDT_END tag. */
+#define FDT_ERR_BADMAGIC	9
+	/* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a
+	 * device tree at all - it is missing the flattened device
+	 * tree magic number. */
+#define FDT_ERR_BADVERSION	10
+	/* FDT_ERR_BADVERSION: Given device tree has a version which
+	 * can't be handled by the requested operation.  For
+	 * read-write functions, this may mean that fdt_open_into() is
+	 * required to convert the tree to the expected version. */
+#define FDT_ERR_BADSTRUCTURE	11
+	/* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt
+	 * structure block or other serious error (e.g. misnested
+	 * nodes, or subnodes preceding properties). */
+#define FDT_ERR_BADLAYOUT	12
+	/* FDT_ERR_BADLAYOUT: For read-write functions, the given
+	 * device tree has it's sub-blocks in an order that the
+	 * function can't handle (memory reserve map, then structure,
+	 * then strings).  Use fdt_open_into() to reorganize the tree
+	 * into a form suitable for the read-write operations. */
+
+/* "Can't happen" error indicating a bug in libfdt */
+#define FDT_ERR_INTERNAL	13
+	/* FDT_ERR_INTERNAL: libfdt has failed an internal assertion.
+	 * Should never be returned, if it is, it indicates a bug in
+	 * libfdt itself. */
+
+#define FDT_ERR_MAX		13
+
+/**********************************************************************/
+/* Low-level functions (you probably don't need these)                */
+/**********************************************************************/
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
+static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
+{
+	return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
+}
+
+uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
+
+/**********************************************************************/
+/* Traversal functions                                                */
+/**********************************************************************/
+
+int fdt_next_node(const void *fdt, int offset, int *depth);
+
+/**********************************************************************/
+/* General functions                                                  */
+/**********************************************************************/
+
+#define fdt_get_header(fdt, field) \
+	(fdt32_to_cpu(((const struct fdt_header *)(fdt))->field))
+#define fdt_magic(fdt) 			(fdt_get_header(fdt, magic))
+#define fdt_totalsize(fdt)		(fdt_get_header(fdt, totalsize))
+#define fdt_off_dt_struct(fdt)		(fdt_get_header(fdt, off_dt_struct))
+#define fdt_off_dt_strings(fdt)		(fdt_get_header(fdt, off_dt_strings))
+#define fdt_off_mem_rsvmap(fdt)		(fdt_get_header(fdt, off_mem_rsvmap))
+#define fdt_version(fdt)		(fdt_get_header(fdt, version))
+#define fdt_last_comp_version(fdt) 	(fdt_get_header(fdt, last_comp_version))
+#define fdt_boot_cpuid_phys(fdt) 	(fdt_get_header(fdt, boot_cpuid_phys))
+#define fdt_size_dt_strings(fdt) 	(fdt_get_header(fdt, size_dt_strings))
+#define fdt_size_dt_struct(fdt)		(fdt_get_header(fdt, size_dt_struct))
+
+#define __fdt_set_hdr(name) \
+	static inline void fdt_set_##name(void *fdt, uint32_t val) \
+	{ \
+		struct fdt_header *fdth = (struct fdt_header*)fdt; \
+		fdth->name = cpu_to_fdt32(val); \
+	}
+__fdt_set_hdr(magic);
+__fdt_set_hdr(totalsize);
+__fdt_set_hdr(off_dt_struct);
+__fdt_set_hdr(off_dt_strings);
+__fdt_set_hdr(off_mem_rsvmap);
+__fdt_set_hdr(version);
+__fdt_set_hdr(last_comp_version);
+__fdt_set_hdr(boot_cpuid_phys);
+__fdt_set_hdr(size_dt_strings);
+__fdt_set_hdr(size_dt_struct);
+#undef __fdt_set_hdr
+
+/**
+ * fdt_check_header - sanity check a device tree or possible device tree
+ * @fdt: pointer to data which might be a flattened device tree
+ *
+ * fdt_check_header() checks that the given buffer contains what
+ * appears to be a flattened device tree with sane information in its
+ * header.
+ *
+ * returns:
+ *     0, if the buffer appears to contain a valid device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings, as above
+ */
+int fdt_check_header(const void *fdt);
+
+/**
+ * fdt_move - move a device tree around in memory
+ * @fdt: pointer to the device tree to move
+ * @buf: pointer to memory where the device is to be moved
+ * @bufsize: size of the memory space at buf
+ *
+ * fdt_move() relocates, if possible, the device tree blob located at
+ * fdt to the buffer at buf of size bufsize.  The buffer may overlap
+ * with the existing device tree blob at fdt.  Therefore,
+ *     fdt_move(fdt, fdt, fdt_totalsize(fdt))
+ * should always succeed.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_move(const void *fdt, void *buf, int bufsize);
+
+/**********************************************************************/
+/* Read-only functions                                                */
+/**********************************************************************/
+
+/**
+ * fdt_string - retrieve a string from the strings block of a device tree
+ * @fdt: pointer to the device tree blob
+ * @stroffset: offset of the string within the strings block (native endian)
+ *
+ * fdt_string() retrieves a pointer to a single string from the
+ * strings block of the device tree blob at fdt.
+ *
+ * returns:
+ *     a pointer to the string, on success
+ *     NULL, if stroffset is out of bounds
+ */
+const char *fdt_string(const void *fdt, int stroffset);
+
+/**
+ * fdt_num_mem_rsv - retrieve the number of memory reserve map entries
+ * @fdt: pointer to the device tree blob
+ *
+ * Returns the number of entries in the device tree blob's memory
+ * reservation map.  This does not include the terminating 0,0 entry
+ * or any other (0,0) entries reserved for expansion.
+ *
+ * returns:
+ *     the number of entries
+ */
+int fdt_num_mem_rsv(const void *fdt);
+
+/**
+ * fdt_get_mem_rsv - retrieve one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: pointers to 64-bit variables
+ *
+ * On success, *address and *size will contain the address and size of
+ * the n-th reserve map entry from the device tree blob, in
+ * native-endian format.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size);
+
+/**
+ * fdt_subnode_offset_namelen - find a subnode based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_subnode_offset(), but only examine the first
+ * namelen characters of name for matching the subnode name.  This is
+ * useful for finding subnodes based on a portion of a larger string,
+ * such as a full path.
+ */
+int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
+			       const char *name, int namelen);
+/**
+ * fdt_subnode_offset - find a subnode of a given node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_subnode_offset() finds a subnode of the node at structure block
+ * offset parentoffset with the given name.  name may include a unit
+ * address, in which case fdt_subnode_offset() will find the subnode
+ * with that unit address, or the unit address may be omitted, in
+ * which case fdt_subnode_offset() will find an arbitrary subnode
+ * whose name excluding unit address matches the given name.
+ *
+ * returns:
+ *	structure block offset of the requested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_path_offset - find a tree node by its full path
+ * @fdt: pointer to the device tree blob
+ * @path: full path of the node to locate
+ *
+ * fdt_path_offset() finds a node of a given path in the device tree.
+ * Each path component may omit the unit address portion, but the
+ * results of this are undefined if any such path component is
+ * ambiguous (that is if there are multiple nodes at the relevant
+ * level matching the given component, differentiated only by unit
+ * address).
+ *
+ * returns:
+ *	structure block offset of the node with the requested path (>=0), on success
+ *	-FDT_ERR_BADPATH, given path does not begin with '/' or is invalid
+ *	-FDT_ERR_NOTFOUND, if the requested node does not exist
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_path_offset(const void *fdt, const char *path);
+
+/**
+ * fdt_get_name - retrieve the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the starting node
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_name() retrieves the name (including unit address) of the
+ * device tree node at structure block offset nodeoffset.  If lenp is
+ * non-NULL, the length of this name is also returned, in the integer
+ * pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the node's name, on success
+ *		If lenp is non-NULL, *lenp contains the length of that name (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE, standard meanings
+ */
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
+
+/**
+ * fdt_first_property_offset - find the offset of a node's first property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ *
+ * fdt_first_property_offset() finds the first property of the node at
+ * the given structure block offset.
+ *
+ * returns:
+ *	structure block offset of the property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested node has no properties
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_first_property_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_next_property_offset - step through a node's properties
+ * @fdt: pointer to the device tree blob
+ * @offset: structure block offset of a property
+ *
+ * fdt_next_property_offset() finds the property immediately after the
+ * one at the given structure block offset.  This will be a property
+ * of the same node as the given property.
+ *
+ * returns:
+ *	structure block offset of the next property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the given property is the last in its node
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_next_property_offset(const void *fdt, int offset);
+
+/**
+ * fdt_get_property_by_offset - retrieve the property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @offset: offset of the property to retrieve
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property_by_offset() retrieves a pointer to the
+ * fdt_property structure within the device tree blob at the given
+ * offset.  If lenp is non-NULL, the length of the property value is
+ * also returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp);
+
+/**
+ * fdt_get_property_namelen - find a property based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_get_property_namelen(), but only examine the first
+ * namelen characters of name for matching the property name.
+ */
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int nodeoffset,
+						    const char *name,
+						    int namelen, int *lenp);
+
+/**
+ * fdt_get_property - find a given property in a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property() retrieves a pointer to the fdt_property
+ * structure within the device tree blob corresponding to the property
+ * named 'name' of the node at offset nodeoffset.  If lenp is
+ * non-NULL, the length of the property value is also returned, in the
+ * integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
+					    const char *name, int *lenp);
+static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,
+						      const char *name,
+						      int *lenp)
+{
+	return (struct fdt_property *)(uintptr_t)
+		fdt_get_property(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_getprop_by_offset - retrieve the value of a property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @ffset: offset of the property to read
+ * @namep: pointer to a string variable (will be overwritten) or NULL
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop_by_offset() retrieves a pointer to the value of the
+ * property at structure block offset 'offset' (this will be a pointer
+ * to within the device blob itself, not a copy of the value).  If
+ * lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.  If namep is non-NULL,
+ * the property's namne will also be returned in the char * pointed to
+ * by namep (this will be a pointer to within the device tree's string
+ * block, not a new copy of the name).
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *		if namep is non-NULL *namep contiains a pointer to the property
+ *		name.
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp);
+
+/**
+ * fdt_getprop_namelen - get property value based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_getprop(), but only examine the first namelen
+ * characters of name for matching the property name.
+ */
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp);
+
+/**
+ * fdt_getprop - retrieve the value of a given property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop() retrieves a pointer to the value of the property
+ * named 'name' of the node at offset nodeoffset (this will be a
+ * pointer to within the device blob itself, not a copy of the value).
+ * If lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp);
+static inline void *fdt_getprop_w(void *fdt, int nodeoffset,
+				  const char *name, int *lenp)
+{
+	return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_get_phandle - retrieve the phandle of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the node
+ *
+ * fdt_get_phandle() retrieves the phandle of the device tree node at
+ * structure block offset nodeoffset.
+ *
+ * returns:
+ *	the phandle of the node at nodeoffset, on success (!= 0, != -1)
+ *	0, if the node has no phandle, or another error occurs
+ */
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_get_alias_namelen - get alias based on substring
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_get_alias(), but only examine the first namelen
+ * characters of name for matching the alias name.
+ */
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen);
+
+/**
+ * fdt_get_alias - retreive the path referenced by a given alias
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ *
+ * fdt_get_alias() retrieves the value of a given alias.  That is, the
+ * value of the property named 'name' in the node /aliases.
+ *
+ * returns:
+ *	a pointer to the expansion of the alias named 'name', of it exists
+ *	NULL, if the given alias or the /aliases node does not exist
+ */
+const char *fdt_get_alias(const void *fdt, const char *name);
+
+/**
+ * fdt_get_path - determine the full path of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose path to find
+ * @buf: character buffer to contain the returned path (will be overwritten)
+ * @buflen: size of the character buffer at buf
+ *
+ * fdt_get_path() computes the full path of the node at offset
+ * nodeoffset, and records that path in the buffer at buf.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	0, on success
+ *		buf contains the absolute path of the node at
+ *		nodeoffset, as a NUL-terminated string.
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1)
+ *		characters and will not fit in the given buffer.
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);
+
+/**
+ * fdt_supernode_atdepth_offset - find a specific ancestor of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ * @supernodedepth: depth of the ancestor to find
+ * @nodedepth: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_supernode_atdepth_offset() finds an ancestor of the given node
+ * at a specific depth from the root (where the root itself has depth
+ * 0, its immediate subnodes depth 1 and so forth).  So
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL);
+ * will always return 0, the offset of the root node.  If the node at
+ * nodeoffset has depth D, then:
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL);
+ * will return nodeoffset itself.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+
+ *	structure block offset of the node at node offset's ancestor
+ *		of depth supernodedepth (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+*	-FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth);
+
+/**
+ * fdt_node_depth - find the depth of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_node_depth() finds the depth of a given node.  The root node
+ * has depth 0, its immediate subnodes depth 1 and so forth.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	depth of the node at nodeoffset (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_depth(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_parent_offset - find the parent of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_parent_offset() locates the parent node of a given node (that
+ * is, it finds the offset of the node which contains the node at
+ * nodeoffset as a subnode).
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset, *twice*.
+ *
+ * returns:
+ *	structure block offset of the parent of the node at nodeoffset
+ *		(>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_parent_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_node_offset_by_prop_value - find nodes with a given property value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @propname: property name to check
+ * @propval: property value to search for
+ * @proplen: length of the value in propval
+ *
+ * fdt_node_offset_by_prop_value() returns the offset of the first
+ * node after startoffset, which has a property named propname whose
+ * value is of length proplen and has value equal to propval; or if
+ * startoffset is -1, the very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_prop_value(fdt, -1, propname,
+ *					       propval, proplen);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_prop_value(fdt, offset, propname,
+ *						       propval, proplen);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen);
+
+/**
+ * fdt_node_offset_by_phandle - find the node with a given phandle
+ * @fdt: pointer to the device tree blob
+ * @phandle: phandle value
+ *
+ * fdt_node_offset_by_phandle() returns the offset of the node
+ * which has the given phandle value.  If there is more than one node
+ * in the tree with the given phandle (an invalid tree), results are
+ * undefined.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0), on success
+ *	-FDT_ERR_NOTFOUND, no node with that phandle exists
+ *	-FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);
+
+/**
+ * fdt_node_check_compatible: check a node's compatible property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of a tree node
+ * @compatible: string to match against
+ *
+ *
+ * fdt_node_check_compatible() returns 0 if the given node contains a
+ * 'compatible' property with the given string as one of its elements,
+ * it returns non-zero otherwise, or on error.
+ *
+ * returns:
+ *	0, if the node has a 'compatible' property listing the given string
+ *	1, if the node has a 'compatible' property, but it does not list
+ *		the given string
+ *	-FDT_ERR_NOTFOUND, if the given node has no 'compatible' property
+ * 	-FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible);
+
+/**
+ * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @compatible: 'compatible' string to match against
+ *
+ * fdt_node_offset_by_compatible() returns the offset of the first
+ * node after startoffset, which has a 'compatible' property which
+ * lists the given compatible string; or if startoffset is -1, the
+ * very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_compatible(fdt, -1, compatible);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_compatible(fdt, offset, compatible);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible);
+
+/**********************************************************************/
+/* Write-in-place functions                                           */
+/**********************************************************************/
+
+/**
+ * fdt_setprop_inplace - change a property's value, but not its size
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to replace the property value with
+ * @len: length of the property value
+ *
+ * fdt_setprop_inplace() replaces the value of a given property with
+ * the data in val, of length len.  This function cannot change the
+ * size of a property, and so will only work if len is equal to the
+ * current length of the property.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if len is not equal to the property's current length
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len);
+
+/**
+ * fdt_setprop_inplace_cell - change the value of a single-cell property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: cell (32-bit integer) value to replace the property with
+ *
+ * fdt_setprop_inplace_cell() replaces the value of a given property
+ * with the 32-bit integer cell value in val, converting val to
+ * big-endian if necessary.  This function cannot change the size of a
+ * property, and so will only work if the property already exists and
+ * has length 4.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if the property's length is not equal to 4
+  *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
+					   const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_nop_property - replace a property with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_nop_property() will replace a given property's representation
+ * in the blob with FDT_NOP tags, effectively removing it from the
+ * tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the property, and will not alter or move any other part of the
+ * tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_nop_node - replace a node (subtree) with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_nop_node() will replace a given node's representation in the
+ * blob, including all its subnodes, if any, with FDT_NOP tags,
+ * effectively removing it from the tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the node and its properties and subnodes, and will not alter or
+ * move any other part of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Sequential write functions                                         */
+/**********************************************************************/
+
+int fdt_create(void *buf, int bufsize);
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
+int fdt_finish_reservemap(void *fdt);
+int fdt_begin_node(void *fdt, const char *name);
+int fdt_property(void *fdt, const char *name, const void *val, int len);
+static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_property(fdt, name, &val, sizeof(val));
+}
+#define fdt_property_string(fdt, name, str) \
+	fdt_property(fdt, name, str, strlen(str)+1)
+int fdt_end_node(void *fdt);
+int fdt_finish(void *fdt);
+
+/**********************************************************************/
+/* Read-write functions                                               */
+/**********************************************************************/
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize);
+int fdt_pack(void *fdt);
+
+/**
+ * fdt_add_mem_rsv - add one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: 64-bit values (native endian)
+ *
+ * Adds a reserve map entry to the given blob reserving a region at
+ * address address of length size.
+ *
+ * This function will insert data into the reserve map and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new reservation entry
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size);
+
+/**
+ * fdt_del_mem_rsv - remove a memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @n: entry to remove
+ *
+ * fdt_del_mem_rsv() removes the n-th memory reserve map entry from
+ * the blob.
+ *
+ * This function will delete data from the reservation table and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there
+ *		are less than n+1 reserve map entries)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_mem_rsv(void *fdt, int n);
+
+/**
+ * fdt_set_name - change the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ * @name: name to give the node
+ *
+ * fdt_set_name() replaces the name (including unit address, if any)
+ * of the given node with the given string.  NOTE: this function can't
+ * efficiently check if the new name is unique amongst the given
+ * node's siblings; results are undefined if this function is invoked
+ * with a name equal to one of the given node's siblings.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob
+ *		to contain the new name
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_set_name(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_setprop - create or change a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to set the property value to
+ * @len: length of the property value
+ *
+ * fdt_setprop() sets the value of the named property in the given
+ * node to the given value and length, creating the property if it
+ * does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len);
+
+/**
+ * fdt_setprop_cell - set a property to a single cell value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 32-bit integer value for the property (native endian)
+ *
+ * fdt_setprop_cell() sets the value of the named property in the
+ * given node to the given cell value (converting to big-endian if
+ * necessary), or creates a new property with that value if it does
+ * not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,
+				   uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_string - set a property to a string value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @str: string value for the property
+ *
+ * fdt_setprop_string() sets the value of the named property in the
+ * given node to the given string value (using the length of the
+ * string to determine the new length of the property), or creates a
+ * new property with that value if it does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+#define fdt_setprop_string(fdt, nodeoffset, name, str) \
+	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
+
+/**
+ * fdt_delprop - delete a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_del_property() will delete the given property.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_delprop(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_add_subnode_namelen - creates a new node based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_add_subnode(), but use only the first namelen
+ * characters of name as the name of the new node.  This is useful for
+ * creating subnodes based on a portion of a larger string, such as a
+ * full path.
+ */
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen);
+
+/**
+ * fdt_add_subnode - creates a new node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_add_subnode() creates a new node as a subnode of the node at
+ * structure block offset parentoffset, with the given name (which
+ * should include the unit address, if any).
+ *
+ * This function will insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+
+ * returns:
+ *	structure block offset of the created nodeequested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *	-FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of
+ *		the given name
+ *	-FDT_ERR_NOSPACE, if there is insufficient free space in the
+ *		blob to contain the new node
+ *	-FDT_ERR_NOSPACE
+ *	-FDT_ERR_BADLAYOUT
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_del_node - delete a node (subtree)
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_del_node() will remove the given node, including all its
+ * subnodes if any, from the blob.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Debugging / informational functions                                */
+/**********************************************************************/
+
+const char *fdt_strerror(int errval);
+
+#endif /* _LIBFDT_H */
diff --git a/xen/common/libfdt/libfdt_env.h b/xen/common/libfdt/libfdt_env.h
new file mode 100644
index 0000000..449bf60
--- /dev/null
+++ b/xen/common/libfdt/libfdt_env.h
@@ -0,0 +1,23 @@
+#ifndef _LIBFDT_ENV_H
+#define _LIBFDT_ENV_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define _B(n)	((unsigned long long)((uint8_t *)&x)[n])
+static inline uint32_t fdt32_to_cpu(uint32_t x)
+{
+	return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
+}
+#define cpu_to_fdt32(x) fdt32_to_cpu(x)
+
+static inline uint64_t fdt64_to_cpu(uint64_t x)
+{
+	return (_B(0) << 56) | (_B(1) << 48) | (_B(2) << 40) | (_B(3) << 32)
+		| (_B(4) << 24) | (_B(5) << 16) | (_B(6) << 8) | _B(7);
+}
+#define cpu_to_fdt64(x) fdt64_to_cpu(x)
+#undef _B
+
+#endif /* _LIBFDT_ENV_H */
diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
new file mode 100644
index 0000000..381133b
--- /dev/null
+++ b/xen/common/libfdt/libfdt_internal.h
@@ -0,0 +1,95 @@
+#ifndef _LIBFDT_INTERNAL_H
+#define _LIBFDT_INTERNAL_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <fdt.h>
+
+#define FDT_ALIGN(x, a)		(((x) + (a) - 1) & ~((a) - 1))
+#define FDT_TAGALIGN(x)		(FDT_ALIGN((x), FDT_TAGSIZE))
+
+#define FDT_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = fdt_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+int _fdt_check_node_offset(const void *fdt, int offset);
+int _fdt_check_prop_offset(const void *fdt, int offset);
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
+int _fdt_node_end_offset(void *fdt, int nodeoffset);
+
+static inline const void *_fdt_offset_ptr(const void *fdt, int offset)
+{
+	return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;
+}
+
+static inline void *_fdt_offset_ptr_w(void *fdt, int offset)
+{
+	return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);
+}
+
+static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)
+{
+	const struct fdt_reserve_entry *rsv_table =
+		(const struct fdt_reserve_entry *)
+		((const char *)fdt + fdt_off_mem_rsvmap(fdt));
+
+	return rsv_table + n;
+}
+static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)
+{
+	return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);
+}
+
+#define FDT_SW_MAGIC		(~FDT_MAGIC)
+
+#endif /* _LIBFDT_INTERNAL_H */
diff --git a/xen/common/libfdt/version.lds b/xen/common/libfdt/version.lds
new file mode 100644
index 0000000..3c3994e
--- /dev/null
+++ b/xen/common/libfdt/version.lds
@@ -0,0 +1,54 @@
+LIBFDT_1.2 {
+	global:
+		fdt_next_node;
+		fdt_check_header;
+		fdt_move;
+		fdt_string;
+		fdt_num_mem_rsv;
+		fdt_get_mem_rsv;
+		fdt_subnode_offset_namelen;
+		fdt_subnode_offset;
+		fdt_path_offset;
+		fdt_get_name;
+		fdt_get_property_namelen;
+		fdt_get_property;
+		fdt_getprop_namelen;
+		fdt_getprop;
+		fdt_get_phandle;
+		fdt_get_alias_namelen;
+		fdt_get_alias;
+		fdt_get_path;
+		fdt_supernode_atdepth_offset;
+		fdt_node_depth;
+		fdt_parent_offset;
+		fdt_node_offset_by_prop_value;
+		fdt_node_offset_by_phandle;
+		fdt_node_check_compatible;
+		fdt_node_offset_by_compatible;
+		fdt_setprop_inplace;
+		fdt_nop_property;
+		fdt_nop_node;
+		fdt_create;
+		fdt_add_reservemap_entry;
+		fdt_finish_reservemap;
+		fdt_begin_node;
+		fdt_property;
+		fdt_end_node;
+		fdt_finish;
+		fdt_open_into;
+		fdt_pack;
+		fdt_add_mem_rsv;
+		fdt_del_mem_rsv;
+		fdt_set_name;
+		fdt_setprop;
+		fdt_delprop;
+		fdt_add_subnode_namelen;
+		fdt_add_subnode;
+		fdt_del_node;
+		fdt_strerror;
+		fdt_offset_ptr;
+		fdt_next_tag;
+
+	local:
+		*;
+};
-- 
1.7.2.5


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

From xen-devel-bounces@lists.xensource.com Mon Feb 13 18:04:28 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 13 Feb 2012 18:04:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1Rx0G5-0003f2-B0; Mon, 13 Feb 2012 18:04:13 +0000
Received: from mail21.messagelabs.com ([85.158.143.35])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Ian.Campbell@citrix.com>) id 1Rx0G2-0003e0-LG
	for xen-devel@lists.xensource.com; Mon, 13 Feb 2012 18:04:11 +0000
X-Env-Sender: Ian.Campbell@citrix.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1329156234!10489572!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAyMjM5NTU=\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20680 invoked from network); 13 Feb 2012 18:04:02 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
	by server-6.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Feb 2012 18:04:02 -0000
X-IronPort-AV: E=Sophos;i="4.73,412,1325480400"; d="scan'208";a="181540398"
Received: from ftlpmailmx01.citrite.net ([10.13.107.65])
	by FTLPIPO02.CITRIX.COM with ESMTP/TLS/RC4-MD5;
	13 Feb 2012 13:03:54 -0500
Received: from smtp01.ad.xensource.com (10.219.128.104) by
	smtprelay.citrix.com (10.13.107.65) with Microsoft SMTP Server id
	8.3.213.0; Mon, 13 Feb 2012 13:03:52 -0500
Received: from cosworth.uk.xensource.com (cosworth.uk.xensource.com
	[10.80.16.52])	by smtp01.ad.xensource.com (8.13.1/8.13.1) with ESMTP id
	q1DI3o2b025360;	Mon, 13 Feb 2012 10:03:50 -0800
MIME-Version: 1.0
X-Mercurial-Node: 63e88a26e1ef58c8e5a2b30a003ab7c3bc9c6b54
Message-ID: <63e88a26e1ef58c8e5a2.1329156229@cosworth.uk.xensource.com>
User-Agent: Mercurial-patchbomb/1.6.4
Date: Mon, 13 Feb 2012 18:03:49 +0000
From: Ian Campbell <ian.campbell@citrix.com>
To: <xen-devel@lists.xensource.com>
Cc: stefano.stabellini@citrix.com, tim@xen.org, david.vrabel@citrix.com
Subject: [Xen-devel] [PATCH] arm: fixup hard tabs
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

# HG changeset patch
# User Ian Campbell <ian.campbell@citrix.com>
# Date 1329153968 0
# Node ID 63e88a26e1ef58c8e5a2b30a003ab7c3bc9c6b54
# Parent  7fd8f10cfd3eaf9f0982eb6fd49334a1e229ba98
arm: fixup hard tabs

Unfortunately the tool I was using to apply patches mangles hard tabs. This
patch corrects this in the effected files (which is fortunately only a subset
of .S or files imported from Linux)

"git diff" and "git diff -b" vs. Stefano's v6 branch now contain the same
output -- i.e. only the intervening development

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>

diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/dtb.S
--- a/xen/arch/arm/dtb.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/dtb.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,2 +1,2 @@
-        .section .dtb,#alloc
-        .incbin CONFIG_DTB_FILE
+	.section .dtb,#alloc
+	.incbin CONFIG_DTB_FILE
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/dummy.S
--- a/xen/arch/arm/dummy.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/dummy.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,13 +1,13 @@
 /* Nothing is mapped at 1G, for the moment */
 #define DUMMY(x) \
-       .globl x; \
-x:     .word 0xe7f000f0
-/* x:  mov r0, #0x40000000 ; str r0, [r0]; b x */
+	.globl x; \
+x:	.word 0xe7f000f0
+/* x:	mov r0, #0x40000000 ; str r0, [r0]; b x */
 
 #define  NOP(x) \
-       .globl x; \
-x:     mov pc, lr
-
+	.globl x; \
+x:	mov pc, lr
+	
 DUMMY(alloc_pirq_struct);
 DUMMY(alloc_vcpu_guest_context);
 DUMMY(arch_do_domctl);
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/entry.S
--- a/xen/arch/arm/entry.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/entry.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,69 +1,69 @@
 #include <xen/config.h>
 #include <asm/asm_defns.h>
 
-#define SAVE_ONE_BANKED(reg)   mrs r11, reg; str r11, [sp, #UREGS_##reg]
-#define RESTORE_ONE_BANKED(reg)        ldr r11, [sp, #UREGS_##reg]; msr reg, r11
+#define SAVE_ONE_BANKED(reg)	mrs r11, reg; str r11, [sp, #UREGS_##reg]
+#define RESTORE_ONE_BANKED(reg)	ldr r11, [sp, #UREGS_##reg]; msr reg, r11
 
 #define SAVE_BANKED(mode) \
-       SAVE_ONE_BANKED(SP_##mode) ; SAVE_ONE_BANKED(LR_##mode) ; SAVE_ONE_BANKED(SPSR_##mode)
+	SAVE_ONE_BANKED(SP_##mode) ; SAVE_ONE_BANKED(LR_##mode) ; SAVE_ONE_BANKED(SPSR_##mode)
 
 #define RESTORE_BANKED(mode) \
-       RESTORE_ONE_BANKED(SP_##mode) ; RESTORE_ONE_BANKED(LR_##mode) ; RESTORE_ONE_BANKED(SPSR_##mode)
+	RESTORE_ONE_BANKED(SP_##mode) ; RESTORE_ONE_BANKED(LR_##mode) ; RESTORE_ONE_BANKED(SPSR_##mode)
 
-#define SAVE_ALL                                                                                       \
-       sub sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */                                      \
-       push {r0-r12}; /* Save R0-R12 */                                                                \
-                                                                                                       \
-       mrs r11, ELR_hyp;               /* ELR_hyp is return address. */                                \
-       str r11, [sp, #UREGS_pc];                                                                       \
-                                                                                                       \
-       str lr, [sp, #UREGS_lr];                                                                        \
-                                                                                                       \
-       add r11, sp, #UREGS_kernel_sizeof+4;                                                            \
-       str r11, [sp, #UREGS_sp];                                                                       \
-                                                                                                       \
-       mrs r11, SPSR_hyp;                                                                              \
-       str r11, [sp, #UREGS_cpsr];                                                                     \
-       and r11, #PSR_MODE_MASK;                                                                        \
-       cmp r11, #PSR_MODE_HYP;                                                                         \
-       blne save_guest_regs
+#define SAVE_ALL											\
+	sub sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */					\
+	push {r0-r12}; /* Save R0-R12 */								\
+													\
+	mrs r11, ELR_hyp;		/* ELR_hyp is return address. */				\
+	str r11, [sp, #UREGS_pc];									\
+													\
+	str lr, [sp, #UREGS_lr];									\
+													\
+	add r11, sp, #UREGS_kernel_sizeof+4;								\
+	str r11, [sp, #UREGS_sp];									\
+													\
+	mrs r11, SPSR_hyp;										\
+	str r11, [sp, #UREGS_cpsr];									\
+	and r11, #PSR_MODE_MASK;									\
+	cmp r11, #PSR_MODE_HYP;										\
+	blne save_guest_regs
 
 save_guest_regs:
-       ldr r11, [sp, #UREGS_lr]
-       str r11, [sp, #UREGS_LR_usr]
-       ldr r11, =0xffffffff  /* Clobber SP which is only valid for hypervisor frames. */
-       str r11, [sp, #UREGS_sp]
-       SAVE_ONE_BANKED(SP_usr)
-       SAVE_BANKED(svc)
-       SAVE_BANKED(abt)
-       SAVE_BANKED(und)
-       SAVE_BANKED(irq)
-       SAVE_BANKED(fiq)
-       SAVE_ONE_BANKED(R8_fiq); SAVE_ONE_BANKED(R9_fiq); SAVE_ONE_BANKED(R10_fiq)
-       SAVE_ONE_BANKED(R11_fiq); SAVE_ONE_BANKED(R12_fiq);
-       mov pc, lr
+	ldr r11, [sp, #UREGS_lr]
+	str r11, [sp, #UREGS_LR_usr]
+	ldr r11, =0xffffffff  /* Clobber SP which is only valid for hypervisor frames. */
+	str r11, [sp, #UREGS_sp]
+	SAVE_ONE_BANKED(SP_usr)
+	SAVE_BANKED(svc)
+	SAVE_BANKED(abt)
+	SAVE_BANKED(und)
+	SAVE_BANKED(irq)
+	SAVE_BANKED(fiq)
+	SAVE_ONE_BANKED(R8_fiq); SAVE_ONE_BANKED(R9_fiq); SAVE_ONE_BANKED(R10_fiq)
+	SAVE_ONE_BANKED(R11_fiq); SAVE_ONE_BANKED(R12_fiq);
+	mov pc, lr
 
-#define DEFINE_TRAP_ENTRY(trap)                                                                                \
-       ALIGN;                                                                                          \
-trap_##trap:                                                                                           \
-       SAVE_ALL;                                                                                       \
-       adr lr, return_from_trap;                                                                       \
-       mov r0, sp;                                                                                     \
-       mov r11, sp;                                                                                    \
-       bic sp, #7; /* Align the stack pointer (noop on guest trap) */                                  \
-       b do_trap_##trap
+#define DEFINE_TRAP_ENTRY(trap)										\
+	ALIGN;												\
+trap_##trap:												\
+	SAVE_ALL;											\
+	adr lr, return_from_trap;									\
+	mov r0, sp;											\
+	mov r11, sp;											\
+	bic sp, #7; /* Align the stack pointer (noop on guest trap) */					\
+	b do_trap_##trap
 
 .globl hyp_traps_vector
-       .align 5
+	.align 5
 hyp_traps_vector:
-       .word 0                         /* 0x00 - Reset */
-       b trap_undefined_instruction    /* 0x04 - Undefined Instruction */
-       b trap_supervisor_call          /* 0x08 - Supervisor Call */
-       b trap_prefetch_abort           /* 0x0c - Prefetch Abort */
-       b trap_data_abort               /* 0x10 - Data Abort */
-       b trap_hypervisor               /* 0x14 - Hypervisor */
-       b trap_irq                      /* 0x18 - IRQ */
-       b trap_fiq                      /* 0x1c - FIQ */
+	.word 0				/* 0x00 - Reset */
+	b trap_undefined_instruction	/* 0x04 - Undefined Instruction */
+	b trap_supervisor_call		/* 0x08 - Supervisor Call */
+	b trap_prefetch_abort		/* 0x0c - Prefetch Abort */
+	b trap_data_abort		/* 0x10 - Data Abort */
+	b trap_hypervisor		/* 0x14 - Hypervisor */
+	b trap_irq			/* 0x18 - IRQ */
+	b trap_fiq			/* 0x1c - FIQ */
 
 DEFINE_TRAP_ENTRY(undefined_instruction)
 DEFINE_TRAP_ENTRY(supervisor_call)
@@ -74,34 +74,34 @@ DEFINE_TRAP_ENTRY(irq)
 DEFINE_TRAP_ENTRY(fiq)
 
 ENTRY(return_from_trap)
-       ldr r11, [sp, #UREGS_cpsr]
-       and r11, #PSR_MODE_MASK
-       cmp r11, #PSR_MODE_HYP
-       beq return_to_hypervisor
+	ldr r11, [sp, #UREGS_cpsr]
+	and r11, #PSR_MODE_MASK
+	cmp r11, #PSR_MODE_HYP
+	beq return_to_hypervisor
 
 ENTRY(return_to_guest)
-       mov r11, sp
-       bic sp, #7 /* Align the stack pointer */
-       bl leave_hypervisor_tail
-       ldr r11, [sp, #UREGS_pc]
-       msr ELR_hyp, r11
-       ldr r11, [sp, #UREGS_cpsr]
-       msr SPSR_hyp, r11
-       RESTORE_ONE_BANKED(SP_usr)
-       RESTORE_BANKED(svc)
-       RESTORE_BANKED(abt)
-       RESTORE_BANKED(und)
-       RESTORE_BANKED(irq)
-       RESTORE_BANKED(fiq)
-       RESTORE_ONE_BANKED(R8_fiq); RESTORE_ONE_BANKED(R9_fiq); RESTORE_ONE_BANKED(R10_fiq)
-       RESTORE_ONE_BANKED(R11_fiq); RESTORE_ONE_BANKED(R12_fiq);
-       ldr lr, [sp, #UREGS_LR_usr]
-       pop {r0-r12}
-       add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
-       eret
+	mov r11, sp
+	bic sp, #7 /* Align the stack pointer */
+	bl leave_hypervisor_tail
+	ldr r11, [sp, #UREGS_pc]
+	msr ELR_hyp, r11
+	ldr r11, [sp, #UREGS_cpsr]
+	msr SPSR_hyp, r11
+	RESTORE_ONE_BANKED(SP_usr)
+	RESTORE_BANKED(svc)
+	RESTORE_BANKED(abt)
+	RESTORE_BANKED(und)
+	RESTORE_BANKED(irq)
+	RESTORE_BANKED(fiq)
+	RESTORE_ONE_BANKED(R8_fiq); RESTORE_ONE_BANKED(R9_fiq); RESTORE_ONE_BANKED(R10_fiq)
+	RESTORE_ONE_BANKED(R11_fiq); RESTORE_ONE_BANKED(R12_fiq);
+	ldr lr, [sp, #UREGS_LR_usr]
+	pop {r0-r12}
+	add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
+	eret
 
 ENTRY(return_to_hypervisor)
-       ldr lr, [sp, #UREGS_lr]
-       pop {r0-r12}
-       add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
-       eret
+	ldr lr, [sp, #UREGS_lr]
+	pop {r0-r12}
+	add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
+	eret
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/head.S
--- a/xen/arch/arm/head.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/head.S	Mon Feb 13 17:26:08 2012 +0000
@@ -26,281 +26,281 @@
  * Clobbers r0-r3. */
 #ifdef EARLY_UART_ADDRESS
 #define PRINT(_s)       \
-       adr   r0, 98f ; \
-       bl    puts    ; \
-       b     99f     ; \
-98:    .asciz _s     ; \
-       .align 2      ; \
+	adr   r0, 98f ; \
+	bl    puts    ; \
+	b     99f     ; \
+98:	.asciz _s     ; \
+	.align 2      ; \
 99:
 #else
 #define PRINT(s)
 #endif
 
-       .arm
+	.arm
 
-       /* This must be the very first address in the loaded image.
-        * It should be linked at XEN_VIRT_START, and loaded at any
-        * 2MB-aligned address.  All of text+data+bss must fit in 2MB,
-        * or the initial pagetable code below will need adjustment. */
-       .global start
+	/* This must be the very first address in the loaded image.
+	 * It should be linked at XEN_VIRT_START, and loaded at any
+	 * 2MB-aligned address.  All of text+data+bss must fit in 2MB,
+	 * or the initial pagetable code below will need adjustment. */
+	.global start
 start:
-       cpsid aif                    /* Disable all interrupts */
+	cpsid aif                    /* Disable all interrupts */
 
-       /* Save the bootloader arguments in less-clobberable registers */
-       mov   r7, r1                 /* r7 := ARM-linux machine type */
-       mov   r8, r2                 /* r8 := ATAG base address */
+	/* Save the bootloader arguments in less-clobberable registers */
+	mov   r7, r1                 /* r7 := ARM-linux machine type */
+	mov   r8, r2                 /* r8 := ATAG base address */
 
-       /* Find out where we are */
-       ldr   r0, =start
-       adr   r9, start              /* r9  := paddr (start) */
-       sub   r10, r9, r0            /* r10 := phys-offset */
+	/* Find out where we are */
+	ldr   r0, =start
+	adr   r9, start              /* r9  := paddr (start) */
+	sub   r10, r9, r0            /* r10 := phys-offset */
 
-        /* Using the DTB in the .dtb section? */
+	/* Using the DTB in the .dtb section? */
 #ifdef CONFIG_DTB_FILE
-        ldr   r8, =_sdtb
-        add   r8, r10                /* r8 := paddr(DTB) */
+	ldr   r8, =_sdtb
+	add   r8, r10                /* r8 := paddr(DTB) */
 #endif
 
 #ifdef EARLY_UART_ADDRESS
-       /* Say hello */
-       ldr   r11, =EARLY_UART_ADDRESS  /* r11 := UART base address */
-       bl    init_uart
+	/* Say hello */
+	ldr   r11, =EARLY_UART_ADDRESS  /* r11 := UART base address */
+	bl    init_uart
 #endif
 
-       /* Check that this CPU has Hyp mode */
-       mrc   CP32(r0, ID_PFR1)
-       and   r0, r0, #0xf000        /* Bits 12-15 define virt extensions */
-       teq   r0, #0x1000            /* Must == 0x1 or may be incompatible */
-       beq   1f
-       bl    putn
-       PRINT("- CPU doesn't support the virtualization extensions -\r\n")
-       b     fail
+	/* Check that this CPU has Hyp mode */
+	mrc   CP32(r0, ID_PFR1)
+	and   r0, r0, #0xf000        /* Bits 12-15 define virt extensions */
+	teq   r0, #0x1000            /* Must == 0x1 or may be incompatible */
+	beq   1f
+	bl    putn
+	PRINT("- CPU doesn't support the virtualization extensions -\r\n")
+	b     fail
 1:
-       /* Check if we're already in it */
-       mrs   r0, cpsr
-       and   r0, r0, #0x1f          /* Mode is in the low 5 bits of CPSR */
-       teq   r0, #0x1a              /* Hyp Mode? */
-       bne   1f
-       PRINT("- Started in Hyp mode -\r\n")
-       b     hyp
+	/* Check if we're already in it */
+	mrs   r0, cpsr
+	and   r0, r0, #0x1f          /* Mode is in the low 5 bits of CPSR */
+	teq   r0, #0x1a              /* Hyp Mode? */
+	bne   1f
+	PRINT("- Started in Hyp mode -\r\n")
+	b     hyp
 1:
-       /* Otherwise, it must have been Secure Supervisor mode */
-       mrc   CP32(r0, SCR)
-       tst   r0, #0x1               /* Not-Secure bit set? */
-       beq   1f
-       PRINT("- CPU is not in Hyp mode or Secure state -\r\n")
-       b     fail
+	/* Otherwise, it must have been Secure Supervisor mode */
+	mrc   CP32(r0, SCR)
+	tst   r0, #0x1               /* Not-Secure bit set? */
+	beq   1f
+	PRINT("- CPU is not in Hyp mode or Secure state -\r\n")
+	b     fail
 1:
-       /* OK, we're in Secure state. */
-       PRINT("- Started in Secure state -\r\n- Entering Hyp mode -\r\n")
+	/* OK, we're in Secure state. */
+	PRINT("- Started in Secure state -\r\n- Entering Hyp mode -\r\n")
 
-       /* Dance into Hyp mode */
-       cpsid aif, #0x16             /* Enter Monitor mode */
-       mrc   CP32(r0, SCR)
-       orr   r0, r0, #0x100         /* Set HCE */
-       orr   r0, r0, #0xb1          /* Set SCD, AW, FW and NS */
-       bic   r0, r0, #0xe           /* Clear EA, FIQ and IRQ */
-       mcr   CP32(r0, SCR)
-       /* Ugly: the system timer's frequency register is only
-        * programmable in Secure state.  Since we don't know where its
-        * memory-mapped control registers live, we can't find out the
-        * right frequency.  Use the VE model's default frequency here. */
-       ldr   r0, =0x5f5e100         /* 100 MHz */
-       mcr   CP32(r0, CNTFRQ)
-       ldr   r0, =0x40c00           /* SMP, c11, c10 in non-secure mode */
-       mcr   CP32(r0, NSACR)
-       /* Continuing ugliness: Set up the GIC so NS state owns interrupts */
-       mov   r0, #GIC_BASE_ADDRESS
-       add   r0, r0, #GIC_DR_OFFSET
-       mov   r1, #0
-       str   r1, [r0]               /* Disable delivery in the distributor */
-       add   r0, r0, #0x80          /* GICD_IGROUP0 */
-       mov   r2, #0xffffffff        /* All interrupts to group 1 */
-       str   r2, [r0]
-       str   r2, [r0, #4]
-       str   r2, [r0, #8]
-       /* Must drop priority mask below 0x80 before entering NS state */
-       mov   r0, #GIC_BASE_ADDRESS
-       add   r0, r0, #GIC_CR_OFFSET
-       ldr   r1, =0xff
-       str   r1, [r0, #0x4]         /* -> GICC_PMR */
-       /* Reset a few config registers */
-       mov   r0, #0
-       mcr   CP32(r0, FCSEIDR)
-       mcr   CP32(r0, CONTEXTIDR)
-       /* FIXME: ought to reset some other NS control regs here */
-       adr   r1, 1f
-       adr   r0, hyp                /* Store paddr (hyp entry point) */
-       str   r0, [r1]               /* where we can use it for RFE */
-       isb                          /* Ensure we see the stored target address */
-       rfeia r1                     /* Enter Hyp mode */
+	/* Dance into Hyp mode */
+	cpsid aif, #0x16             /* Enter Monitor mode */
+	mrc   CP32(r0, SCR)
+	orr   r0, r0, #0x100         /* Set HCE */
+	orr   r0, r0, #0xb1          /* Set SCD, AW, FW and NS */
+	bic   r0, r0, #0xe           /* Clear EA, FIQ and IRQ */
+	mcr   CP32(r0, SCR)
+	/* Ugly: the system timer's frequency register is only
+	 * programmable in Secure state.  Since we don't know where its
+	 * memory-mapped control registers live, we can't find out the
+	 * right frequency.  Use the VE model's default frequency here. */
+	ldr   r0, =0x5f5e100         /* 100 MHz */
+	mcr   CP32(r0, CNTFRQ)
+	ldr   r0, =0x40c00           /* SMP, c11, c10 in non-secure mode */
+	mcr   CP32(r0, NSACR)
+	/* Continuing ugliness: Set up the GIC so NS state owns interrupts */
+	mov   r0, #GIC_BASE_ADDRESS
+	add   r0, r0, #GIC_DR_OFFSET
+	mov   r1, #0
+	str   r1, [r0]               /* Disable delivery in the distributor */
+	add   r0, r0, #0x80          /* GICD_IGROUP0 */
+	mov   r2, #0xffffffff        /* All interrupts to group 1 */
+	str   r2, [r0]
+	str   r2, [r0, #4]
+	str   r2, [r0, #8]
+	/* Must drop priority mask below 0x80 before entering NS state */
+	mov   r0, #GIC_BASE_ADDRESS
+	add   r0, r0, #GIC_CR_OFFSET
+	ldr   r1, =0xff
+	str   r1, [r0, #0x4]         /* -> GICC_PMR */
+	/* Reset a few config registers */
+	mov   r0, #0
+	mcr   CP32(r0, FCSEIDR)
+	mcr   CP32(r0, CONTEXTIDR)
+	/* FIXME: ought to reset some other NS control regs here */
+	adr   r1, 1f
+	adr   r0, hyp                /* Store paddr (hyp entry point) */
+	str   r0, [r1]               /* where we can use it for RFE */
+	isb                          /* Ensure we see the stored target address */
+	rfeia r1                     /* Enter Hyp mode */
 
-1:     .word 0                      /* PC to enter Hyp mode at */
-       .word 0x000001da             /* CPSR: LE, Abort/IRQ/FIQ off, Hyp */
+1:	.word 0                      /* PC to enter Hyp mode at */
+	.word 0x000001da             /* CPSR: LE, Abort/IRQ/FIQ off, Hyp */
 
 hyp:
-       PRINT("- Setting up control registers -\r\n")
+	PRINT("- Setting up control registers -\r\n")
 
-       /* Set up memory attribute type tables */
-       ldr   r0, =MAIR0VAL
-       ldr   r1, =MAIR1VAL
-       mcr   CP32(r0, MAIR0)
-       mcr   CP32(r1, MAIR1)
-       mcr   CP32(r0, HMAIR0)
-       mcr   CP32(r1, HMAIR1)
+	/* Set up memory attribute type tables */
+	ldr   r0, =MAIR0VAL
+	ldr   r1, =MAIR1VAL
+	mcr   CP32(r0, MAIR0)
+	mcr   CP32(r1, MAIR1)
+	mcr   CP32(r0, HMAIR0)
+	mcr   CP32(r1, HMAIR1)
 
-       /* Set up the HTCR:
-        * PT walks use Outer-Shareable accesses,
-        * PT walks are write-back, no-write-allocate in both cache levels,
-        * Full 32-bit address space goes through this table. */
-       ldr   r0, =0x80002500
-       mcr   CP32(r0, HTCR)
+	/* Set up the HTCR:
+	 * PT walks use Outer-Shareable accesses,
+	 * PT walks are write-back, no-write-allocate in both cache levels,
+	 * Full 32-bit address space goes through this table. */
+	ldr   r0, =0x80002500
+	mcr   CP32(r0, HTCR)
 
-       /* Set up the HSCTLR:
-        * Exceptions in LE ARM,
-        * Low-latency IRQs disabled,
-        * Write-implies-XN disabled (for now),
-        * I-cache and d-cache enabled,
-        * Alignment checking enabled,
-        * MMU translation disabled (for now). */
-       ldr   r0, =(HSCTLR_BASE|SCTLR_A|SCTLR_C)
-       mcr   CP32(r0, HSCTLR)
+	/* Set up the HSCTLR:
+	 * Exceptions in LE ARM,
+	 * Low-latency IRQs disabled,
+	 * Write-implies-XN disabled (for now),
+	 * I-cache and d-cache enabled,
+	 * Alignment checking enabled,
+	 * MMU translation disabled (for now). */
+	ldr   r0, =(HSCTLR_BASE|SCTLR_A|SCTLR_C)
+	mcr   CP32(r0, HSCTLR)
 
-       /* Write Xen's PT's paddr into the HTTBR */
-       ldr   r4, =xen_pgtable
-       add   r4, r4, r10            /* r4 := paddr (xen_pagetable) */
-       mov   r5, #0                 /* r4:r5 is paddr (xen_pagetable) */
-       mcrr  CP64(r4, r5, HTTBR)
+	/* Write Xen's PT's paddr into the HTTBR */
+	ldr   r4, =xen_pgtable
+	add   r4, r4, r10            /* r4 := paddr (xen_pagetable) */
+	mov   r5, #0                 /* r4:r5 is paddr (xen_pagetable) */
+	mcrr  CP64(r4, r5, HTTBR)
 
-       /* Build the baseline idle pagetable's first-level entries */
-       ldr   r1, =xen_second
-       add   r1, r1, r10            /* r1 := paddr (xen_second) */
-       mov   r3, #0x0
-       orr   r2, r1, #0xe00         /* r2:r3 := table map of xen_second */
-       orr   r2, r2, #0x07f         /* (+ rights for linear PT) */
-       strd  r2, r3, [r4, #0]       /* Map it in slot 0 */
-       add   r2, r2, #0x1000
-       strd  r2, r3, [r4, #8]       /* Map 2nd page in slot 1 */
-       add   r2, r2, #0x1000
-       strd  r2, r3, [r4, #16]      /* Map 3rd page in slot 2 */
-       add   r2, r2, #0x1000
-       strd  r2, r3, [r4, #24]      /* Map 4th page in slot 3 */
+	/* Build the baseline idle pagetable's first-level entries */
+	ldr   r1, =xen_second
+	add   r1, r1, r10            /* r1 := paddr (xen_second) */
+	mov   r3, #0x0
+	orr   r2, r1, #0xe00         /* r2:r3 := table map of xen_second */
+	orr   r2, r2, #0x07f         /* (+ rights for linear PT) */
+	strd  r2, r3, [r4, #0]       /* Map it in slot 0 */
+	add   r2, r2, #0x1000
+	strd  r2, r3, [r4, #8]       /* Map 2nd page in slot 1 */
+	add   r2, r2, #0x1000
+	strd  r2, r3, [r4, #16]      /* Map 3rd page in slot 2 */
+	add   r2, r2, #0x1000
+	strd  r2, r3, [r4, #24]      /* Map 4th page in slot 3 */
 
-       /* Now set up the second-level entries */
-       orr   r2, r9, #0xe00
-       orr   r2, r2, #0x07d         /* r2:r3 := 2MB normal map of Xen */
-       mov   r4, r9, lsr #18        /* Slot for paddr(start) */
-       strd  r2, r3, [r1, r4]       /* Map Xen there */
-       ldr   r4, =start
-       lsr   r4, #18                /* Slot for vaddr(start) */
-       strd  r2, r3, [r1, r4]       /* Map Xen there too */
+	/* Now set up the second-level entries */
+	orr   r2, r9, #0xe00
+	orr   r2, r2, #0x07d         /* r2:r3 := 2MB normal map of Xen */
+	mov   r4, r9, lsr #18        /* Slot for paddr(start) */
+	strd  r2, r3, [r1, r4]       /* Map Xen there */
+	ldr   r4, =start
+	lsr   r4, #18                /* Slot for vaddr(start) */
+	strd  r2, r3, [r1, r4]       /* Map Xen there too */
 #ifdef EARLY_UART_ADDRESS
-       ldr   r3, =(1<<(54-32))      /* NS for device mapping */
-       lsr   r2, r11, #21
-       lsl   r2, r2, #21            /* 2MB-aligned paddr of UART */
-       orr   r2, r2, #0xe00
-       orr   r2, r2, #0x071         /* r2:r3 := 2MB dev map including UART */
-       add   r4, r4, #8
-       strd  r2, r3, [r1, r4]       /* Map it in the fixmap's slot */
+	ldr   r3, =(1<<(54-32))      /* NS for device mapping */
+	lsr   r2, r11, #21
+	lsl   r2, r2, #21            /* 2MB-aligned paddr of UART */
+	orr   r2, r2, #0xe00
+	orr   r2, r2, #0x071         /* r2:r3 := 2MB dev map including UART */
+	add   r4, r4, #8
+	strd  r2, r3, [r1, r4]       /* Map it in the fixmap's slot */
 #else
-       add   r4, r4, #8             /* Skip over unused fixmap slot */
+	add   r4, r4, #8             /* Skip over unused fixmap slot */
 #endif
-       mov   r3, #0x0
-       lsr   r2, r8, #21
-       lsl   r2, r2, #21            /* 2MB-aligned paddr of DTB */
-       orr   r2, r2, #0xf00
-       orr   r2, r2, #0x07d         /* r2:r3 := 2MB RAM incl. DTB */
-       add   r4, r4, #8
-       strd  r2, r3, [r1, r4]       /* Map it in the early boot slot */
+	mov   r3, #0x0
+	lsr   r2, r8, #21
+	lsl   r2, r2, #21            /* 2MB-aligned paddr of DTB */
+	orr   r2, r2, #0xf00
+	orr   r2, r2, #0x07d         /* r2:r3 := 2MB RAM incl. DTB */
+	add   r4, r4, #8
+	strd  r2, r3, [r1, r4]       /* Map it in the early boot slot */
 
-       PRINT("- Turning on paging -\r\n")
+	PRINT("- Turning on paging -\r\n")
 
-       ldr   r1, =paging            /* Explicit vaddr, not RIP-relative */
-       mrc   CP32(r0, HSCTLR)
-       orr   r0, r0, #0x1           /* Add in the MMU enable bit */
-       dsb                          /* Flush PTE writes and finish reads */
-       mcr   CP32(r0, HSCTLR)       /* now paging is enabled */
-       isb                          /* Now, flush the icache */
-       mov   pc, r1                 /* Get a proper vaddr into PC */
+	ldr   r1, =paging            /* Explicit vaddr, not RIP-relative */
+	mrc   CP32(r0, HSCTLR)
+	orr   r0, r0, #0x1           /* Add in the MMU enable bit */
+	dsb                          /* Flush PTE writes and finish reads */
+	mcr   CP32(r0, HSCTLR)       /* now paging is enabled */
+	isb                          /* Now, flush the icache */
+	mov   pc, r1                 /* Get a proper vaddr into PC */
 paging:
 
 #ifdef EARLY_UART_ADDRESS
-       /* Recover the UART address in the new address space */
-       lsl   r11, #11
-       lsr   r11, #11               /* UART base's offset from 2MB base */
-       adr   r0, start
-       add   r0, r0, #0x200000      /* vaddr of the fixmap's 2MB slot */
-       add   r11, r11, r0           /* r11 := vaddr (UART base address) */
+	/* Recover the UART address in the new address space */
+	lsl   r11, #11
+	lsr   r11, #11               /* UART base's offset from 2MB base */
+	adr   r0, start
+	add   r0, r0, #0x200000      /* vaddr of the fixmap's 2MB slot */
+	add   r11, r11, r0           /* r11 := vaddr (UART base address) */
 #endif
 
-       PRINT("- Entering C -\r\n")
+	PRINT("- Entering C -\r\n")
 
-       ldr   sp, =init_stack        /* Supply a stack */
-       add   sp, #STACK_SIZE        /* (which grows down from the top). */
-       sub   sp, #CPUINFO_sizeof    /* Make room for CPU save record */
-       mov   r0, r10                /* Marshal args: - phys_offset */
-       mov   r1, r7                 /*               - machine type */
-       mov   r2, r8                 /*               - ATAG address */
-       b     start_xen              /* and disappear into the land of C */
+	ldr   sp, =init_stack        /* Supply a stack */
+	add   sp, #STACK_SIZE        /* (which grows down from the top). */
+	sub   sp, #CPUINFO_sizeof    /* Make room for CPU save record */
+	mov   r0, r10                /* Marshal args: - phys_offset */
+	mov   r1, r7                 /*               - machine type */
+	mov   r2, r8                 /*               - ATAG address */
+	b     start_xen              /* and disappear into the land of C */
 
 /* Fail-stop
  * r0: string explaining why */
-fail:  PRINT("- Boot failed -\r\n")
-1:     wfe
-       b     1b
+fail:	PRINT("- Boot failed -\r\n")
+1:	wfe
+	b     1b
 
 #ifdef EARLY_UART_ADDRESS
 
 /* Bring up the UART. Specific to the PL011 UART.
  * Clobbers r0-r2 */
 init_uart:
-       mov   r1, #0x0
-       str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor fraction) */
-       mov   r1, #0x4               /* 7.3728MHz / 0x4 == 16 * 115200 */
-       str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor integer) */
-       mov   r1, #0x60              /* 8n1 */
-       str   r1, [r11, #0x24]       /* -> UARTLCR_H (Line control) */
-       ldr   r1, =0x00000301        /* RXE | TXE | UARTEN */
-       str   r1, [r11, #0x30]       /* -> UARTCR (Control Register) */
-       adr   r0, 1f
-       b     puts
-1:     .asciz "- UART enabled -\r\n"
-       .align 4
+	mov   r1, #0x0
+	str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor fraction) */
+	mov   r1, #0x4               /* 7.3728MHz / 0x4 == 16 * 115200 */
+	str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor integer) */
+	mov   r1, #0x60              /* 8n1 */
+	str   r1, [r11, #0x24]       /* -> UARTLCR_H (Line control) */
+	ldr   r1, =0x00000301        /* RXE | TXE | UARTEN */
+	str   r1, [r11, #0x30]       /* -> UARTCR (Control Register) */
+	adr   r0, 1f
+	b     puts
+1:	.asciz "- UART enabled -\r\n"
+	.align 4
 
 /* Print early debug messages.  Specific to the PL011 UART.
  * r0: Nul-terminated string to print.
  * Clobbers r0-r2 */
 puts:
-       ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
-       tst   r2, #0x8               /* Check BUSY bit */
-       bne   puts                   /* Wait for the UART to be ready */
-       ldrb  r2, [r0], #1           /* Load next char */
-       teq   r2, #0                 /* Exit on nul*/
-       moveq pc, lr
-       str   r2, [r11]              /* -> UARTDR (Data Register) */
-       b     puts
+	ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
+	tst   r2, #0x8               /* Check BUSY bit */
+	bne   puts                   /* Wait for the UART to be ready */
+	ldrb  r2, [r0], #1           /* Load next char */
+	teq   r2, #0                 /* Exit on nul*/
+	moveq pc, lr
+	str   r2, [r11]              /* -> UARTDR (Data Register) */
+	b     puts
 
 /* Print a 32-bit number in hex.  Specific to the PL011 UART.
  * r0: Number to print.
  * clobbers r0-r3 */
 putn:
-       adr   r1, hex
-       mov   r3, #8
-1:     ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
-       tst   r2, #0x8               /* Check BUSY bit */
-       bne   1b                     /* Wait for the UART to be ready */
-       and   r2, r0, #0xf0000000    /* Mask off the top nybble */
-       ldrb  r2, [r1, r2, lsr #28]  /* Convert to a char */
-       str   r2, [r11]              /* -> UARTDR (Data Register) */
-       lsl   r0, #4                 /* Roll it through one nybble at a time */
-       subs  r3, r3, #1
-       bne   1b
-       adr   r0, crlf               /* Finish with a newline */
-       b     puts
+	adr   r1, hex
+	mov   r3, #8
+1:	ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
+	tst   r2, #0x8               /* Check BUSY bit */
+	bne   1b                     /* Wait for the UART to be ready */
+	and   r2, r0, #0xf0000000    /* Mask off the top nybble */
+	ldrb  r2, [r1, r2, lsr #28]  /* Convert to a char */
+	str   r2, [r11]              /* -> UARTDR (Data Register) */
+	lsl   r0, #4                 /* Roll it through one nybble at a time */
+	subs  r3, r3, #1
+	bne   1b
+	adr   r0, crlf               /* Finish with a newline */
+	b     puts
 
-crlf:  .asciz "\r\n"
-hex:   .ascii "0123456789abcdef"
-       .align 2
+crlf:	.asciz "\r\n"
+hex:	.ascii "0123456789abcdef"
+	.align 2
 
 #else  /* EARLY_UART_ADDRESS */
 
@@ -308,6 +308,6 @@ init_uart:
 .global early_puts
 early_puts:
 puts:
-putn:  mov   pc, lr
+putn:	mov   pc, lr
 
 #endif /* EARLY_UART_ADDRESS */
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/bitops.h
--- a/xen/arch/arm/lib/bitops.h	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/bitops.h	Mon Feb 13 17:26:08 2012 +0000
@@ -1,61 +1,61 @@
 #include <xen/config.h>
 
 #if __LINUX_ARM_ARCH__ >= 6
-       .macro  bitop, instr
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       mov     r2, #1
-       and     r3, r0, #31             @ Get bit offset
-       mov     r0, r0, lsr #5
-       add     r1, r1, r0, lsl #2      @ Get word offset
-       mov     r3, r2, lsl r3
-1:     ldrex   r2, [r1]
-       \instr  r2, r2, r3
-       strex   r0, r2, [r1]
-       cmp     r0, #0
-       bne     1b
-       bx      lr
-       .endm
+	.macro	bitop, instr
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	mov	r2, #1
+	and	r3, r0, #31		@ Get bit offset
+	mov	r0, r0, lsr #5
+	add	r1, r1, r0, lsl #2	@ Get word offset
+	mov	r3, r2, lsl r3
+1:	ldrex	r2, [r1]
+	\instr	r2, r2, r3
+	strex	r0, r2, [r1]
+	cmp	r0, #0
+	bne	1b
+	bx	lr
+	.endm
 
-       .macro  testop, instr, store
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       mov     r2, #1
-       and     r3, r0, #31             @ Get bit offset
-       mov     r0, r0, lsr #5
-       add     r1, r1, r0, lsl #2      @ Get word offset
-       mov     r3, r2, lsl r3          @ create mask
-       smp_dmb
-1:     ldrex   r2, [r1]
-       ands    r0, r2, r3              @ save old value of bit
-       \instr  r2, r2, r3              @ toggle bit
-       strex   ip, r2, [r1]
-       cmp     ip, #0
-       bne     1b
-       smp_dmb
-       cmp     r0, #0
-       movne   r0, #1
-2:     bx      lr
-       .endm
+	.macro	testop, instr, store
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	mov	r2, #1
+	and	r3, r0, #31		@ Get bit offset
+	mov	r0, r0, lsr #5
+	add	r1, r1, r0, lsl #2	@ Get word offset
+	mov	r3, r2, lsl r3		@ create mask
+	smp_dmb
+1:	ldrex	r2, [r1]
+	ands	r0, r2, r3		@ save old value of bit
+	\instr	r2, r2, r3		@ toggle bit
+	strex	ip, r2, [r1]
+	cmp	ip, #0
+	bne	1b
+	smp_dmb
+	cmp	r0, #0
+	movne	r0, #1
+2:	bx	lr
+	.endm
 #else
-       .macro  bitop, name, instr
-ENTRY( \name           )
-UNWIND(        .fnstart        )
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       and     r2, r0, #31
-       mov     r0, r0, lsr #5
-       mov     r3, #1
-       mov     r3, r3, lsl r2
-       save_and_disable_irqs ip
-       ldr     r2, [r1, r0, lsl #2]
-       \instr  r2, r2, r3
-       str     r2, [r1, r0, lsl #2]
-       restore_irqs ip
-       mov     pc, lr
-UNWIND(        .fnend          )
-ENDPROC(\name          )
-       .endm
+	.macro	bitop, name, instr
+ENTRY(	\name		)
+UNWIND(	.fnstart	)
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	and	r2, r0, #31
+	mov	r0, r0, lsr #5
+	mov	r3, #1
+	mov	r3, r3, lsl r2
+	save_and_disable_irqs ip
+	ldr	r2, [r1, r0, lsl #2]
+	\instr	r2, r2, r3
+	str	r2, [r1, r0, lsl #2]
+	restore_irqs ip
+	mov	pc, lr
+UNWIND(	.fnend		)
+ENDPROC(\name		)
+	.endm
 
 /**
  * testop - implement a test_and_xxx_bit operation.
@@ -65,23 +65,23 @@ ENDPROC(\name          )
  * Note: we can trivially conditionalise the store instruction
  * to avoid dirtying the data cache.
  */
-       .macro  testop, name, instr, store
-ENTRY( \name           )
-UNWIND(        .fnstart        )
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       and     r3, r0, #31
-       mov     r0, r0, lsr #5
-       save_and_disable_irqs ip
-       ldr     r2, [r1, r0, lsl #2]!
-       mov     r0, #1
-       tst     r2, r0, lsl r3
-       \instr  r2, r2, r0, lsl r3
-       \store  r2, [r1]
-       moveq   r0, #0
-       restore_irqs ip
-       mov     pc, lr
-UNWIND(        .fnend          )
-ENDPROC(\name          )
-       .endm
+	.macro	testop, name, instr, store
+ENTRY(	\name		)
+UNWIND(	.fnstart	)
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	and	r3, r0, #31
+	mov	r0, r0, lsr #5
+	save_and_disable_irqs ip
+	ldr	r2, [r1, r0, lsl #2]!
+	mov	r0, #1
+	tst	r2, r0, lsl r3
+	\instr	r2, r2, r0, lsl r3
+	\store	r2, [r1]
+	moveq	r0, #0
+	restore_irqs ip
+	mov	pc, lr
+UNWIND(	.fnend		)
+ENDPROC(\name		)
+	.endm
 #endif
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/changebit.S
--- a/xen/arch/arm/lib/changebit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/changebit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_change_bit)
-       bitop   eor
+	bitop	eor
 ENDPROC(_change_bit)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/clearbit.S
--- a/xen/arch/arm/lib/clearbit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/clearbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -15,5 +15,5 @@
                 .text
 
 ENTRY(_clear_bit)
-       bitop   bic
+	bitop	bic
 ENDPROC(_clear_bit)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/copy_template.S
--- a/xen/arch/arm/lib/copy_template.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/copy_template.S	Mon Feb 13 17:26:08 2012 +0000
@@ -3,9 +3,9 @@
  *
  *  Code template for optimized memory copy functions
  *
- *  Author:    Nicolas Pitre
- *  Created:   Sep 28, 2005
- *  Copyright: MontaVista Software, Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Sep 28, 2005
+ *  Copyright:	MontaVista Software, Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -24,227 +24,227 @@
  *
  * ldr1w ptr reg abort
  *
- *     This loads one word from 'ptr', stores it in 'reg' and increments
- *     'ptr' to the next word. The 'abort' argument is used for fixup tables.
+ *	This loads one word from 'ptr', stores it in 'reg' and increments
+ *	'ptr' to the next word. The 'abort' argument is used for fixup tables.
  *
  * ldr4w ptr reg1 reg2 reg3 reg4 abort
  * ldr8w ptr, reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
  *
- *     This loads four or eight words starting from 'ptr', stores them
- *     in provided registers and increments 'ptr' past those words.
- *     The'abort' argument is used for fixup tables.
+ *	This loads four or eight words starting from 'ptr', stores them
+ *	in provided registers and increments 'ptr' past those words.
+ *	The'abort' argument is used for fixup tables.
  *
  * ldr1b ptr reg cond abort
  *
- *     Similar to ldr1w, but it loads a byte and increments 'ptr' one byte.
- *     It also must apply the condition code if provided, otherwise the
- *     "al" condition is assumed by default.
+ *	Similar to ldr1w, but it loads a byte and increments 'ptr' one byte.
+ *	It also must apply the condition code if provided, otherwise the
+ *	"al" condition is assumed by default.
  *
  * str1w ptr reg abort
  * str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
  * str1b ptr reg cond abort
  *
- *     Same as their ldr* counterparts, but data is stored to 'ptr' location
- *     rather than being loaded.
+ *	Same as their ldr* counterparts, but data is stored to 'ptr' location
+ *	rather than being loaded.
  *
  * enter reg1 reg2
  *
- *     Preserve the provided registers on the stack plus any additional
- *     data as needed by the implementation including this code. Called
- *     upon code entry.
+ *	Preserve the provided registers on the stack plus any additional
+ *	data as needed by the implementation including this code. Called
+ *	upon code entry.
  *
  * exit reg1 reg2
  *
- *     Restore registers with the values previously saved with the
- *     'preserv' macro. Called upon code termination.
+ *	Restore registers with the values previously saved with the
+ *	'preserv' macro. Called upon code termination.
  *
  * LDR1W_SHIFT
  * STR1W_SHIFT
  *
- *     Correction to be applied to the "ip" register when branching into
- *     the ldr1w or str1w instructions (some of these macros may expand to
- *     than one 32bit instruction in Thumb-2)
+ *	Correction to be applied to the "ip" register when branching into
+ *	the ldr1w or str1w instructions (some of these macros may expand to
+ *	than one 32bit instruction in Thumb-2)
  */
 
 
-               enter   r4, lr
+		enter	r4, lr
 
-               subs    r2, r2, #4
-               blt     8f
-               ands    ip, r0, #3
-       PLD(    pld     [r1, #0]                )
-               bne     9f
-               ands    ip, r1, #3
-               bne     10f
+		subs	r2, r2, #4
+		blt	8f
+		ands	ip, r0, #3
+	PLD(	pld	[r1, #0]		)
+		bne	9f
+		ands	ip, r1, #3
+		bne	10f
 
-1:             subs    r2, r2, #(28)
-               stmfd   sp!, {r5 - r8}
-               blt     5f
+1:		subs	r2, r2, #(28)
+		stmfd	sp!, {r5 - r8}
+		blt	5f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  rsb     r3, ip, #32             )
-       CALGN(  sbcnes  r4, r3, r2              )  @ C is always set here
-       CALGN(  bcs     2f                      )
-       CALGN(  adr     r4, 6f                  )
-       CALGN(  subs    r2, r2, r3              )  @ C gets set
-       CALGN(  add     pc, r4, ip              )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	rsb	r3, ip, #32		)
+	CALGN(	sbcnes	r4, r3, r2		)  @ C is always set here
+	CALGN(	bcs	2f			)
+	CALGN(	adr	r4, 6f			)
+	CALGN(	subs	r2, r2, r3		)  @ C gets set
+	CALGN(	add	pc, r4, ip		)
 
-       PLD(    pld     [r1, #0]                )
-2:     PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #28]               )
-       PLD(    blt     4f                      )
-       PLD(    pld     [r1, #60]               )
-       PLD(    pld     [r1, #92]               )
+	PLD(	pld	[r1, #0]		)
+2:	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #28]		)
+	PLD(	blt	4f			)
+	PLD(	pld	[r1, #60]		)
+	PLD(	pld	[r1, #92]		)
 
-3:     PLD(    pld     [r1, #124]              )
-4:             ldr8w   r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
-               subs    r2, r2, #32
-               str8w   r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
-               bge     3b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     4b                      )
+3:	PLD(	pld	[r1, #124]		)
+4:		ldr8w	r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
+		subs	r2, r2, #32
+		str8w	r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
+		bge	3b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	4b			)
 
-5:             ands    ip, r2, #28
-               rsb     ip, ip, #32
+5:		ands	ip, r2, #28
+		rsb	ip, ip, #32
 #if LDR1W_SHIFT > 0
-               lsl     ip, ip, #LDR1W_SHIFT
+		lsl	ip, ip, #LDR1W_SHIFT
 #endif
-               addne   pc, pc, ip              @ C is always clear here
-               b       7f
+		addne	pc, pc, ip		@ C is always clear here
+		b	7f
 6:
-               .rept   (1 << LDR1W_SHIFT)
-               W(nop)
-               .endr
-               ldr1w   r1, r3, abort=20f
-               ldr1w   r1, r4, abort=20f
-               ldr1w   r1, r5, abort=20f
-               ldr1w   r1, r6, abort=20f
-               ldr1w   r1, r7, abort=20f
-               ldr1w   r1, r8, abort=20f
-               ldr1w   r1, lr, abort=20f
+		.rept	(1 << LDR1W_SHIFT)
+		W(nop)
+		.endr
+		ldr1w	r1, r3, abort=20f
+		ldr1w	r1, r4, abort=20f
+		ldr1w	r1, r5, abort=20f
+		ldr1w	r1, r6, abort=20f
+		ldr1w	r1, r7, abort=20f
+		ldr1w	r1, r8, abort=20f
+		ldr1w	r1, lr, abort=20f
 
 #if LDR1W_SHIFT < STR1W_SHIFT
-               lsl     ip, ip, #STR1W_SHIFT - LDR1W_SHIFT
+		lsl	ip, ip, #STR1W_SHIFT - LDR1W_SHIFT
 #elif LDR1W_SHIFT > STR1W_SHIFT
-               lsr     ip, ip, #LDR1W_SHIFT - STR1W_SHIFT
+		lsr	ip, ip, #LDR1W_SHIFT - STR1W_SHIFT
 #endif
-               add     pc, pc, ip
-               nop
-               .rept   (1 << STR1W_SHIFT)
-               W(nop)
-               .endr
-               str1w   r0, r3, abort=20f
-               str1w   r0, r4, abort=20f
-               str1w   r0, r5, abort=20f
-               str1w   r0, r6, abort=20f
-               str1w   r0, r7, abort=20f
-               str1w   r0, r8, abort=20f
-               str1w   r0, lr, abort=20f
+		add	pc, pc, ip
+		nop
+		.rept	(1 << STR1W_SHIFT)
+		W(nop)
+		.endr
+		str1w	r0, r3, abort=20f
+		str1w	r0, r4, abort=20f
+		str1w	r0, r5, abort=20f
+		str1w	r0, r6, abort=20f
+		str1w	r0, r7, abort=20f
+		str1w	r0, r8, abort=20f
+		str1w	r0, lr, abort=20f
 
-       CALGN(  bcs     2b                      )
+	CALGN(	bcs	2b			)
 
-7:             ldmfd   sp!, {r5 - r8}
+7:		ldmfd	sp!, {r5 - r8}
 
-8:             movs    r2, r2, lsl #31
-               ldr1b   r1, r3, ne, abort=21f
-               ldr1b   r1, r4, cs, abort=21f
-               ldr1b   r1, ip, cs, abort=21f
-               str1b   r0, r3, ne, abort=21f
-               str1b   r0, r4, cs, abort=21f
-               str1b   r0, ip, cs, abort=21f
+8:		movs	r2, r2, lsl #31
+		ldr1b	r1, r3, ne, abort=21f
+		ldr1b	r1, r4, cs, abort=21f
+		ldr1b	r1, ip, cs, abort=21f
+		str1b	r0, r3, ne, abort=21f
+		str1b	r0, r4, cs, abort=21f
+		str1b	r0, ip, cs, abort=21f
 
-               exit    r4, pc
+		exit	r4, pc
 
-9:             rsb     ip, ip, #4
-               cmp     ip, #2
-               ldr1b   r1, r3, gt, abort=21f
-               ldr1b   r1, r4, ge, abort=21f
-               ldr1b   r1, lr, abort=21f
-               str1b   r0, r3, gt, abort=21f
-               str1b   r0, r4, ge, abort=21f
-               subs    r2, r2, ip
-               str1b   r0, lr, abort=21f
-               blt     8b
-               ands    ip, r1, #3
-               beq     1b
+9:		rsb	ip, ip, #4
+		cmp	ip, #2
+		ldr1b	r1, r3, gt, abort=21f
+		ldr1b	r1, r4, ge, abort=21f
+		ldr1b	r1, lr, abort=21f
+		str1b	r0, r3, gt, abort=21f
+		str1b	r0, r4, ge, abort=21f
+		subs	r2, r2, ip
+		str1b	r0, lr, abort=21f
+		blt	8b
+		ands	ip, r1, #3
+		beq	1b
 
-10:            bic     r1, r1, #3
-               cmp     ip, #2
-               ldr1w   r1, lr, abort=21f
-               beq     17f
-               bgt     18f
+10:		bic	r1, r1, #3
+		cmp	ip, #2
+		ldr1w	r1, lr, abort=21f
+		beq	17f
+		bgt	18f
 
 
-               .macro  forward_copy_shift pull push
+		.macro	forward_copy_shift pull push
 
-               subs    r2, r2, #28
-               blt     14f
+		subs	r2, r2, #28
+		blt	14f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  rsb     ip, ip, #32             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
-       CALGN(  subcc   r2, r2, ip              )
-       CALGN(  bcc     15f                     )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	rsb	ip, ip, #32		)
+	CALGN(	sbcnes	r4, ip, r2		)  @ C is always set here
+	CALGN(	subcc	r2, r2, ip		)
+	CALGN(	bcc	15f			)
 
-11:            stmfd   sp!, {r5 - r9}
+11:		stmfd	sp!, {r5 - r9}
 
-       PLD(    pld     [r1, #0]                )
-       PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #28]               )
-       PLD(    blt     13f                     )
-       PLD(    pld     [r1, #60]               )
-       PLD(    pld     [r1, #92]               )
+	PLD(	pld	[r1, #0]		)
+	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #28]		)
+	PLD(	blt	13f			)
+	PLD(	pld	[r1, #60]		)
+	PLD(	pld	[r1, #92]		)
 
-12:    PLD(    pld     [r1, #124]              )
-13:            ldr4w   r1, r4, r5, r6, r7, abort=19f
-               mov     r3, lr, pull #\pull
-               subs    r2, r2, #32
-               ldr4w   r1, r8, r9, ip, lr, abort=19f
-               orr     r3, r3, r4, push #\push
-               mov     r4, r4, pull #\pull
-               orr     r4, r4, r5, push #\push
-               mov     r5, r5, pull #\pull
-               orr     r5, r5, r6, push #\push
-               mov     r6, r6, pull #\pull
-               orr     r6, r6, r7, push #\push
-               mov     r7, r7, pull #\pull
-               orr     r7, r7, r8, push #\push
-               mov     r8, r8, pull #\pull
-               orr     r8, r8, r9, push #\push
-               mov     r9, r9, pull #\pull
-               orr     r9, r9, ip, push #\push
-               mov     ip, ip, pull #\pull
-               orr     ip, ip, lr, push #\push
-               str8w   r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
-               bge     12b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     13b                     )
+12:	PLD(	pld	[r1, #124]		)
+13:		ldr4w	r1, r4, r5, r6, r7, abort=19f
+		mov	r3, lr, pull #\pull
+		subs	r2, r2, #32
+		ldr4w	r1, r8, r9, ip, lr, abort=19f
+		orr	r3, r3, r4, push #\push
+		mov	r4, r4, pull #\pull
+		orr	r4, r4, r5, push #\push
+		mov	r5, r5, pull #\pull
+		orr	r5, r5, r6, push #\push
+		mov	r6, r6, pull #\pull
+		orr	r6, r6, r7, push #\push
+		mov	r7, r7, pull #\pull
+		orr	r7, r7, r8, push #\push
+		mov	r8, r8, pull #\pull
+		orr	r8, r8, r9, push #\push
+		mov	r9, r9, pull #\pull
+		orr	r9, r9, ip, push #\push
+		mov	ip, ip, pull #\pull
+		orr	ip, ip, lr, push #\push
+		str8w	r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
+		bge	12b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	13b			)
 
-               ldmfd   sp!, {r5 - r9}
+		ldmfd	sp!, {r5 - r9}
 
-14:            ands    ip, r2, #28
-               beq     16f
+14:		ands	ip, r2, #28
+		beq	16f
 
-15:            mov     r3, lr, pull #\pull
-               ldr1w   r1, lr, abort=21f
-               subs    ip, ip, #4
-               orr     r3, r3, lr, push #\push
-               str1w   r0, r3, abort=21f
-               bgt     15b
-       CALGN(  cmp     r2, #0                  )
-       CALGN(  bge     11b                     )
+15:		mov	r3, lr, pull #\pull
+		ldr1w	r1, lr, abort=21f
+		subs	ip, ip, #4
+		orr	r3, r3, lr, push #\push
+		str1w	r0, r3, abort=21f
+		bgt	15b
+	CALGN(	cmp	r2, #0			)
+	CALGN(	bge	11b			)
 
-16:            sub     r1, r1, #(\push / 8)
-               b       8b
+16:		sub	r1, r1, #(\push / 8)
+		b	8b
 
-               .endm
+		.endm
 
 
-               forward_copy_shift      pull=8  push=24
+		forward_copy_shift	pull=8	push=24
 
-17:            forward_copy_shift      pull=16 push=16
+17:		forward_copy_shift	pull=16	push=16
 
-18:            forward_copy_shift      pull=24 push=8
+18:		forward_copy_shift	pull=24	push=8
 
 
 /*
@@ -254,14 +254,14 @@ 18:            forward_copy_shift      p
  * the exit macro.
  */
 
-       .macro  copy_abort_preamble
-19:    ldmfd   sp!, {r5 - r9}
-       b       21f
-20:    ldmfd   sp!, {r5 - r8}
+	.macro	copy_abort_preamble
+19:	ldmfd	sp!, {r5 - r9}
+	b	21f
+20:	ldmfd	sp!, {r5 - r8}
 21:
-       .endm
+	.endm
 
-       .macro  copy_abort_end
-       ldmfd   sp!, {r4, pc}
-       .endm
+	.macro	copy_abort_end
+	ldmfd	sp!, {r4, pc}
+	.endm
 
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/div64.S
--- a/xen/arch/arm/lib/div64.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/div64.S	Mon Feb 13 17:26:08 2012 +0000
@@ -3,9 +3,9 @@
  *
  *  Optimized computation of 64-bit dividend / 32-bit divisor
  *
- *  Author:    Nicolas Pitre
- *  Created:   Oct 5, 2003
- *  Copyright: Monta Vista Software, Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Oct 5, 2003
+ *  Copyright:	Monta Vista Software, Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -14,7 +14,7 @@
 
 #include <xen/config.h>
 #include "assembler.h"
-
+	
 #ifdef __ARMEB__
 #define xh r0
 #define xl r1
@@ -34,12 +34,12 @@
  *       This is meant to be used by do_div() from include/asm/div64.h only.
  *
  * Input parameters:
- *     xh-xl   = dividend (clobbered)
- *     r4      = divisor (preserved)
+ * 	xh-xl	= dividend (clobbered)
+ * 	r4	= divisor (preserved)
  *
  * Output values:
- *     yh-yl   = result
- *     xh      = remainder
+ * 	yh-yl	= result
+ * 	xh	= remainder
  *
  * Clobbered regs: xl, ip
  */
@@ -47,165 +47,165 @@
 ENTRY(__do_div64)
 UNWIND(.fnstart)
 
-       @ Test for easy paths first.
-       subs    ip, r4, #1
-       bls     9f                      @ divisor is 0 or 1
-       tst     ip, r4
-       beq     8f                      @ divisor is power of 2
+	@ Test for easy paths first.
+	subs	ip, r4, #1
+	bls	9f			@ divisor is 0 or 1
+	tst	ip, r4
+	beq	8f			@ divisor is power of 2
 
-       @ See if we need to handle upper 32-bit result.
-       cmp     xh, r4
-       mov     yh, #0
-       blo     3f
+	@ See if we need to handle upper 32-bit result.
+	cmp	xh, r4
+	mov	yh, #0
+	blo	3f
 
-       @ Align divisor with upper part of dividend.
-       @ The aligned divisor is stored in yl preserving the original.
-       @ The bit position is stored in ip.
+	@ Align divisor with upper part of dividend.
+	@ The aligned divisor is stored in yl preserving the original.
+	@ The bit position is stored in ip.
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     yl, r4
-       clz     ip, xh
-       sub     yl, yl, ip
-       mov     ip, #1
-       mov     ip, ip, lsl yl
-       mov     yl, r4, lsl yl
+	clz	yl, r4
+	clz	ip, xh
+	sub	yl, yl, ip
+	mov	ip, #1
+	mov	ip, ip, lsl yl
+	mov	yl, r4, lsl yl
 
 #else
 
-       mov     yl, r4
-       mov     ip, #1
-1:     cmp     yl, #0x80000000
-       cmpcc   yl, xh
-       movcc   yl, yl, lsl #1
-       movcc   ip, ip, lsl #1
-       bcc     1b
+	mov	yl, r4
+	mov	ip, #1
+1:	cmp	yl, #0x80000000
+	cmpcc	yl, xh
+	movcc	yl, yl, lsl #1
+	movcc	ip, ip, lsl #1
+	bcc	1b
 
 #endif
 
-       @ The division loop for needed upper bit positions.
-       @ Break out early if dividend reaches 0.
-2:     cmp     xh, yl
-       orrcs   yh, yh, ip
-       subcss  xh, xh, yl
-       movnes  ip, ip, lsr #1
-       mov     yl, yl, lsr #1
-       bne     2b
+	@ The division loop for needed upper bit positions.
+ 	@ Break out early if dividend reaches 0.
+2:	cmp	xh, yl
+	orrcs	yh, yh, ip
+	subcss	xh, xh, yl
+	movnes	ip, ip, lsr #1
+	mov	yl, yl, lsr #1
+	bne	2b
 
-       @ See if we need to handle lower 32-bit result.
-3:     cmp     xh, #0
-       mov     yl, #0
-       cmpeq   xl, r4
-       movlo   xh, xl
-       movlo   pc, lr
+	@ See if we need to handle lower 32-bit result.
+3:	cmp	xh, #0
+	mov	yl, #0
+	cmpeq	xl, r4
+	movlo	xh, xl
+	movlo	pc, lr
 
-       @ The division loop for lower bit positions.
-       @ Here we shift remainer bits leftwards rather than moving the
-       @ divisor for comparisons, considering the carry-out bit as well.
-       mov     ip, #0x80000000
-4:     movs    xl, xl, lsl #1
-       adcs    xh, xh, xh
-       beq     6f
-       cmpcc   xh, r4
-5:     orrcs   yl, yl, ip
-       subcs   xh, xh, r4
-       movs    ip, ip, lsr #1
-       bne     4b
-       mov     pc, lr
+	@ The division loop for lower bit positions.
+	@ Here we shift remainer bits leftwards rather than moving the
+	@ divisor for comparisons, considering the carry-out bit as well.
+	mov	ip, #0x80000000
+4:	movs	xl, xl, lsl #1
+	adcs	xh, xh, xh
+	beq	6f
+	cmpcc	xh, r4
+5:	orrcs	yl, yl, ip
+	subcs	xh, xh, r4
+	movs	ip, ip, lsr #1
+	bne	4b
+	mov	pc, lr
 
-       @ The top part of remainder became zero.  If carry is set
-       @ (the 33th bit) this is a false positive so resume the loop.
-       @ Otherwise, if lower part is also null then we are done.
-6:     bcs     5b
-       cmp     xl, #0
-       moveq   pc, lr
+	@ The top part of remainder became zero.  If carry is set
+	@ (the 33th bit) this is a false positive so resume the loop.
+	@ Otherwise, if lower part is also null then we are done.
+6:	bcs	5b
+	cmp	xl, #0
+	moveq	pc, lr
 
-       @ We still have remainer bits in the low part.  Bring them up.
+	@ We still have remainer bits in the low part.  Bring them up.
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     xh, xl                  @ we know xh is zero here so...
-       add     xh, xh, #1
-       mov     xl, xl, lsl xh
-       mov     ip, ip, lsr xh
+	clz	xh, xl			@ we know xh is zero here so...
+	add	xh, xh, #1
+	mov	xl, xl, lsl xh
+	mov	ip, ip, lsr xh
 
 #else
 
-7:     movs    xl, xl, lsl #1
-       mov     ip, ip, lsr #1
-       bcc     7b
+7:	movs	xl, xl, lsl #1
+	mov	ip, ip, lsr #1
+	bcc	7b
 
 #endif
 
-       @ Current remainder is now 1.  It is worthless to compare with
-       @ divisor at this point since divisor can not be smaller than 3 here.
-       @ If possible, branch for another shift in the division loop.
-       @ If no bit position left then we are done.
-       movs    ip, ip, lsr #1
-       mov     xh, #1
-       bne     4b
-       mov     pc, lr
+	@ Current remainder is now 1.  It is worthless to compare with
+	@ divisor at this point since divisor can not be smaller than 3 here.
+	@ If possible, branch for another shift in the division loop.
+	@ If no bit position left then we are done.
+	movs	ip, ip, lsr #1
+	mov	xh, #1
+	bne	4b
+	mov	pc, lr
 
-8:     @ Division by a power of 2: determine what that divisor order is
-       @ then simply shift values around
+8:	@ Division by a power of 2: determine what that divisor order is
+	@ then simply shift values around
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     ip, r4
-       rsb     ip, ip, #31
+	clz	ip, r4
+	rsb	ip, ip, #31
 
 #else
 
-       mov     yl, r4
-       cmp     r4, #(1 << 16)
-       mov     ip, #0
-       movhs   yl, yl, lsr #16
-       movhs   ip, #16
+	mov	yl, r4
+	cmp	r4, #(1 << 16)
+	mov	ip, #0
+	movhs	yl, yl, lsr #16
+	movhs	ip, #16
 
-       cmp     yl, #(1 << 8)
-       movhs   yl, yl, lsr #8
-       addhs   ip, ip, #8
+	cmp	yl, #(1 << 8)
+	movhs	yl, yl, lsr #8
+	addhs	ip, ip, #8
 
-       cmp     yl, #(1 << 4)
-       movhs   yl, yl, lsr #4
-       addhs   ip, ip, #4
+	cmp	yl, #(1 << 4)
+	movhs	yl, yl, lsr #4
+	addhs	ip, ip, #4
 
-       cmp     yl, #(1 << 2)
-       addhi   ip, ip, #3
-       addls   ip, ip, yl, lsr #1
+	cmp	yl, #(1 << 2)
+	addhi	ip, ip, #3
+	addls	ip, ip, yl, lsr #1
 
 #endif
 
-       mov     yh, xh, lsr ip
-       mov     yl, xl, lsr ip
-       rsb     ip, ip, #32
- ARM(  orr     yl, yl, xh, lsl ip      )
- THUMB(        lsl     xh, xh, ip              )
- THUMB(        orr     yl, yl, xh              )
-       mov     xh, xl, lsl ip
-       mov     xh, xh, lsr ip
-       mov     pc, lr
+	mov	yh, xh, lsr ip
+	mov	yl, xl, lsr ip
+	rsb	ip, ip, #32
+ ARM(	orr	yl, yl, xh, lsl ip	)
+ THUMB(	lsl	xh, xh, ip		)
+ THUMB(	orr	yl, yl, xh		)
+	mov	xh, xl, lsl ip
+	mov	xh, xh, lsr ip
+	mov	pc, lr
 
-       @ eq -> division by 1: obvious enough...
-9:     moveq   yl, xl
-       moveq   yh, xh
-       moveq   xh, #0
-       moveq   pc, lr
+	@ eq -> division by 1: obvious enough...
+9:	moveq	yl, xl
+	moveq	yh, xh
+	moveq	xh, #0
+	moveq	pc, lr
 UNWIND(.fnend)
 
 UNWIND(.fnstart)
 UNWIND(.pad #4)
 UNWIND(.save {lr})
 Ldiv0_64:
-       @ Division by 0:
-       str     lr, [sp, #-8]!
-       bl      __div0
+	@ Division by 0:
+	str	lr, [sp, #-8]!
+	bl	__div0
 
-       @ as wrong as it could be...
-       mov     yl, #0
-       mov     yh, #0
-       mov     xh, #0
-       ldr     pc, [sp], #8
+	@ as wrong as it could be...
+	mov	yl, #0
+	mov	yh, #0
+	mov	xh, #0
+	ldr	pc, [sp], #8
 
 UNWIND(.fnend)
 ENDPROC(__do_div64)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/findbit.S
--- a/xen/arch/arm/lib/findbit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/findbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -24,20 +24,20 @@
  * Prototype: int find_first_zero_bit(void *addr, unsigned int maxbit);
  */
 ENTRY(_find_first_zero_bit_le)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
+		teq	r1, #0	
+		beq	3f
+		mov	r2, #0
 1:
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eors    r3, r3, #0xff           @ invert bits
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eors	r3, r3, #0xff		@ invert bits
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_zero_bit_le)
 
 /*
@@ -45,19 +45,19 @@ ENDPROC(_find_first_zero_bit_le)
  * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
  */
 ENTRY(_find_next_zero_bit_le)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eor     r3, r3, #0xff           @ now looking for a 1 bit
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eor	r3, r3, #0xff		@ now looking for a 1 bit
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_zero_bit_le)
 
 /*
@@ -65,20 +65,20 @@ ENDPROC(_find_next_zero_bit_le)
  * Prototype: int find_first_bit(const unsigned long *addr, unsigned int maxbit);
  */
 ENTRY(_find_first_bit_le)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
+		teq	r1, #0	
+		beq	3f
+		mov	r2, #0
 1:
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_bit_le)
 
 /*
@@ -86,87 +86,87 @@ ENDPROC(_find_first_bit_le)
  * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
  */
 ENTRY(_find_next_bit_le)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_bit_le)
 
 #ifdef __ARMEB__
 
 ENTRY(_find_first_zero_bit_be)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
-1:             eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eors    r3, r3, #0xff           @ invert bits
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+		teq	r1, #0
+		beq	3f
+		mov	r2, #0
+1:		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eors	r3, r3, #0xff		@ invert bits
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_zero_bit_be)
 
 ENTRY(_find_next_zero_bit_be)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
-               eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eor     r3, r3, #0xff           @ now looking for a 1 bit
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eor	r3, r3, #0xff		@ now looking for a 1 bit
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_zero_bit_be)
 
 ENTRY(_find_first_bit_be)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
-1:             eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+		teq	r1, #0
+		beq	3f
+		mov	r2, #0
+1:		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_bit_be)
 
 ENTRY(_find_next_bit_be)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
-               eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_bit_be)
 
 #endif
@@ -176,23 +176,23 @@ ENDPROC(_find_next_bit_be)
  */
 .L_found:
 #if __LINUX_ARM_ARCH__ >= 5
-               rsb     r0, r3, #0
-               and     r3, r3, r0
-               clz     r3, r3
-               rsb     r3, r3, #31
-               add     r0, r2, r3
+		rsb	r0, r3, #0
+		and	r3, r3, r0
+		clz	r3, r3
+		rsb	r3, r3, #31
+		add	r0, r2, r3
 #else
-               tst     r3, #0x0f
-               addeq   r2, r2, #4
-               movne   r3, r3, lsl #4
-               tst     r3, #0x30
-               addeq   r2, r2, #2
-               movne   r3, r3, lsl #2
-               tst     r3, #0x40
-               addeq   r2, r2, #1
-               mov     r0, r2
+		tst	r3, #0x0f
+		addeq	r2, r2, #4
+		movne	r3, r3, lsl #4
+		tst	r3, #0x30
+		addeq	r2, r2, #2
+		movne	r3, r3, lsl #2
+		tst	r3, #0x40
+		addeq	r2, r2, #1
+		mov	r0, r2
 #endif
-               cmp     r1, r0                  @ Clamp to maxbit
-               movlo   r0, r1
-               mov     pc, lr
+		cmp	r1, r0			@ Clamp to maxbit
+		movlo	r0, r1
+		mov	pc, lr
 
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/lib1funcs.S
--- a/xen/arch/arm/lib/lib1funcs.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/lib1funcs.S	Mon Feb 13 17:26:08 2012 +0000
@@ -40,64 +40,64 @@ Boston, MA 02111-1307, USA.  */
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     \curbit, \divisor
-       clz     \result, \dividend
-       sub     \result, \curbit, \result
-       mov     \curbit, #1
-       mov     \divisor, \divisor, lsl \result
-       mov     \curbit, \curbit, lsl \result
-       mov     \result, #0
-
+	clz	\curbit, \divisor
+	clz	\result, \dividend
+	sub	\result, \curbit, \result
+	mov	\curbit, #1
+	mov	\divisor, \divisor, lsl \result
+	mov	\curbit, \curbit, lsl \result
+	mov	\result, #0
+	
 #else
 
-       @ Initially shift the divisor left 3 bits if possible,
-       @ set curbit accordingly.  This allows for curbit to be located
-       @ at the left end of each 4 bit nibbles in the division loop
-       @ to save one loop in most cases.
-       tst     \divisor, #0xe0000000
-       moveq   \divisor, \divisor, lsl #3
-       moveq   \curbit, #8
-       movne   \curbit, #1
+	@ Initially shift the divisor left 3 bits if possible,
+	@ set curbit accordingly.  This allows for curbit to be located
+	@ at the left end of each 4 bit nibbles in the division loop
+	@ to save one loop in most cases.
+	tst	\divisor, #0xe0000000
+	moveq	\divisor, \divisor, lsl #3
+	moveq	\curbit, #8
+	movne	\curbit, #1
 
-       @ Unless the divisor is very big, shift it up in multiples of
-       @ four bits, since this is the amount of unwinding in the main
-       @ division loop.  Continue shifting until the divisor is
-       @ larger than the dividend.
-1:     cmp     \divisor, #0x10000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #4
-       movlo   \curbit, \curbit, lsl #4
-       blo     1b
+	@ Unless the divisor is very big, shift it up in multiples of
+	@ four bits, since this is the amount of unwinding in the main
+	@ division loop.  Continue shifting until the divisor is 
+	@ larger than the dividend.
+1:	cmp	\divisor, #0x10000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #4
+	movlo	\curbit, \curbit, lsl #4
+	blo	1b
 
-       @ For very big divisors, we must shift it a bit at a time, or
-       @ we will be in danger of overflowing.
-1:     cmp     \divisor, #0x80000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #1
-       movlo   \curbit, \curbit, lsl #1
-       blo     1b
+	@ For very big divisors, we must shift it a bit at a time, or
+	@ we will be in danger of overflowing.
+1:	cmp	\divisor, #0x80000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #1
+	movlo	\curbit, \curbit, lsl #1
+	blo	1b
 
-       mov     \result, #0
+	mov	\result, #0
 
 #endif
 
-       @ Division loop
-1:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       orrhs   \result,   \result,   \curbit
-       cmp     \dividend, \divisor,  lsr #1
-       subhs   \dividend, \dividend, \divisor, lsr #1
-       orrhs   \result,   \result,   \curbit,  lsr #1
-       cmp     \dividend, \divisor,  lsr #2
-       subhs   \dividend, \dividend, \divisor, lsr #2
-       orrhs   \result,   \result,   \curbit,  lsr #2
-       cmp     \dividend, \divisor,  lsr #3
-       subhs   \dividend, \dividend, \divisor, lsr #3
-       orrhs   \result,   \result,   \curbit,  lsr #3
-       cmp     \dividend, #0                   @ Early termination?
-       movnes  \curbit,   \curbit,  lsr #4     @ No, any more bits to do?
-       movne   \divisor,  \divisor, lsr #4
-       bne     1b
+	@ Division loop
+1:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	orrhs	\result,   \result,   \curbit
+	cmp	\dividend, \divisor,  lsr #1
+	subhs	\dividend, \dividend, \divisor, lsr #1
+	orrhs	\result,   \result,   \curbit,  lsr #1
+	cmp	\dividend, \divisor,  lsr #2
+	subhs	\dividend, \dividend, \divisor, lsr #2
+	orrhs	\result,   \result,   \curbit,  lsr #2
+	cmp	\dividend, \divisor,  lsr #3
+	subhs	\dividend, \dividend, \divisor, lsr #3
+	orrhs	\result,   \result,   \curbit,  lsr #3
+	cmp	\dividend, #0			@ Early termination?
+	movnes	\curbit,   \curbit,  lsr #4	@ No, any more bits to do?
+	movne	\divisor,  \divisor, lsr #4
+	bne	1b
 
 .endm
 
@@ -106,27 +106,27 @@ 1:     cmp     \dividend, \divisor
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     \order, \divisor
-       rsb     \order, \order, #31
+	clz	\order, \divisor
+	rsb	\order, \order, #31
 
 #else
 
-       cmp     \divisor, #(1 << 16)
-       movhs   \divisor, \divisor, lsr #16
-       movhs   \order, #16
-       movlo   \order, #0
+	cmp	\divisor, #(1 << 16)
+	movhs	\divisor, \divisor, lsr #16
+	movhs	\order, #16
+	movlo	\order, #0
 
-       cmp     \divisor, #(1 << 8)
-       movhs   \divisor, \divisor, lsr #8
-       addhs   \order, \order, #8
+	cmp	\divisor, #(1 << 8)
+	movhs	\divisor, \divisor, lsr #8
+	addhs	\order, \order, #8
 
-       cmp     \divisor, #(1 << 4)
-       movhs   \divisor, \divisor, lsr #4
-       addhs   \order, \order, #4
+	cmp	\divisor, #(1 << 4)
+	movhs	\divisor, \divisor, lsr #4
+	addhs	\order, \order, #4
 
-       cmp     \divisor, #(1 << 2)
-       addhi   \order, \order, #3
-       addls   \order, \order, \divisor, lsr #1
+	cmp	\divisor, #(1 << 2)
+	addhi	\order, \order, #3
+	addls	\order, \order, \divisor, lsr #1
 
 #endif
 
@@ -137,69 +137,69 @@ 1:     cmp     \dividend, \divisor
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     \order, \divisor
-       clz     \spare, \dividend
-       sub     \order, \order, \spare
-       mov     \divisor, \divisor, lsl \order
+	clz	\order, \divisor
+	clz	\spare, \dividend
+	sub	\order, \order, \spare
+	mov	\divisor, \divisor, lsl \order
 
 #else
 
-       mov     \order, #0
+	mov	\order, #0
 
-       @ Unless the divisor is very big, shift it up in multiples of
-       @ four bits, since this is the amount of unwinding in the main
-       @ division loop.  Continue shifting until the divisor is
-       @ larger than the dividend.
-1:     cmp     \divisor, #0x10000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #4
-       addlo   \order, \order, #4
-       blo     1b
+	@ Unless the divisor is very big, shift it up in multiples of
+	@ four bits, since this is the amount of unwinding in the main
+	@ division loop.  Continue shifting until the divisor is 
+	@ larger than the dividend.
+1:	cmp	\divisor, #0x10000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #4
+	addlo	\order, \order, #4
+	blo	1b
 
-       @ For very big divisors, we must shift it a bit at a time, or
-       @ we will be in danger of overflowing.
-1:     cmp     \divisor, #0x80000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #1
-       addlo   \order, \order, #1
-       blo     1b
+	@ For very big divisors, we must shift it a bit at a time, or
+	@ we will be in danger of overflowing.
+1:	cmp	\divisor, #0x80000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #1
+	addlo	\order, \order, #1
+	blo	1b
 
 #endif
 
-       @ Perform all needed substractions to keep only the reminder.
-       @ Do comparisons in batch of 4 first.
-       subs    \order, \order, #3              @ yes, 3 is intended here
-       blt     2f
+	@ Perform all needed substractions to keep only the reminder.
+	@ Do comparisons in batch of 4 first.
+	subs	\order, \order, #3		@ yes, 3 is intended here
+	blt	2f
 
-1:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       cmp     \dividend, \divisor,  lsr #1
-       subhs   \dividend, \dividend, \divisor, lsr #1
-       cmp     \dividend, \divisor,  lsr #2
-       subhs   \dividend, \dividend, \divisor, lsr #2
-       cmp     \dividend, \divisor,  lsr #3
-       subhs   \dividend, \dividend, \divisor, lsr #3
-       cmp     \dividend, #1
-       mov     \divisor, \divisor, lsr #4
-       subges  \order, \order, #4
-       bge     1b
+1:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	cmp	\dividend, \divisor,  lsr #1
+	subhs	\dividend, \dividend, \divisor, lsr #1
+	cmp	\dividend, \divisor,  lsr #2
+	subhs	\dividend, \dividend, \divisor, lsr #2
+	cmp	\dividend, \divisor,  lsr #3
+	subhs	\dividend, \dividend, \divisor, lsr #3
+	cmp	\dividend, #1
+	mov	\divisor, \divisor, lsr #4
+	subges	\order, \order, #4
+	bge	1b
 
-       tst     \order, #3
-       teqne   \dividend, #0
-       beq     5f
+	tst	\order, #3
+	teqne	\dividend, #0
+	beq	5f
 
-       @ Either 1, 2 or 3 comparison/substractions are left.
-2:     cmn     \order, #2
-       blt     4f
-       beq     3f
-       cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       mov     \divisor,  \divisor,  lsr #1
-3:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       mov     \divisor,  \divisor,  lsr #1
-4:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
+	@ Either 1, 2 or 3 comparison/substractions are left.
+2:	cmn	\order, #2
+	blt	4f
+	beq	3f
+	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	mov	\divisor,  \divisor,  lsr #1
+3:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	mov	\divisor,  \divisor,  lsr #1
+4:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
 5:
 .endm
 
@@ -208,27 +208,27 @@ ENTRY(__udivsi3)
 ENTRY(__aeabi_uidiv)
 UNWIND(.fnstart)
 
-       subs    r2, r1, #1
-       moveq   pc, lr
-       bcc     Ldiv0
-       cmp     r0, r1
-       bls     11f
-       tst     r1, r2
-       beq     12f
+	subs	r2, r1, #1
+	moveq	pc, lr
+	bcc	Ldiv0
+	cmp	r0, r1
+	bls	11f
+	tst	r1, r2
+	beq	12f
 
-       ARM_DIV_BODY r0, r1, r2, r3
+	ARM_DIV_BODY r0, r1, r2, r3
 
-       mov     r0, r2
-       mov     pc, lr
+	mov	r0, r2
+	mov	pc, lr
 
-11:    moveq   r0, #1
-       movne   r0, #0
-       mov     pc, lr
+11:	moveq	r0, #1
+	movne	r0, #0
+	mov	pc, lr
 
-12:    ARM_DIV2_ORDER r1, r2
+12:	ARM_DIV2_ORDER r1, r2
 
-       mov     r0, r0, lsr r2
-       mov     pc, lr
+	mov	r0, r0, lsr r2
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__udivsi3)
@@ -237,17 +237,17 @@ ENDPROC(__aeabi_uidiv)
 ENTRY(__umodsi3)
 UNWIND(.fnstart)
 
-       subs    r2, r1, #1                      @ compare divisor with 1
-       bcc     Ldiv0
-       cmpne   r0, r1                          @ compare dividend with divisor
-       moveq   r0, #0
-       tsthi   r1, r2                          @ see if divisor is power of 2
-       andeq   r0, r0, r2
-       movls   pc, lr
+	subs	r2, r1, #1			@ compare divisor with 1
+	bcc	Ldiv0
+	cmpne	r0, r1				@ compare dividend with divisor
+	moveq   r0, #0
+	tsthi	r1, r2				@ see if divisor is power of 2
+	andeq	r0, r0, r2
+	movls	pc, lr
 
-       ARM_MOD_BODY r0, r1, r2, r3
+	ARM_MOD_BODY r0, r1, r2, r3
 
-       mov     pc, lr
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__umodsi3)
@@ -256,40 +256,40 @@ ENTRY(__divsi3)
 ENTRY(__aeabi_idiv)
 UNWIND(.fnstart)
 
-       cmp     r1, #0
-       eor     ip, r0, r1                      @ save the sign of the result.
-       beq     Ldiv0
-       rsbmi   r1, r1, #0                      @ loops below use unsigned.
-       subs    r2, r1, #1                      @ division by 1 or -1 ?
-       beq     10f
-       movs    r3, r0
-       rsbmi   r3, r0, #0                      @ positive dividend value
-       cmp     r3, r1
-       bls     11f
-       tst     r1, r2                          @ divisor is power of 2 ?
-       beq     12f
+	cmp	r1, #0
+	eor	ip, r0, r1			@ save the sign of the result.
+	beq	Ldiv0
+	rsbmi	r1, r1, #0			@ loops below use unsigned.
+	subs	r2, r1, #1			@ division by 1 or -1 ?
+	beq	10f
+	movs	r3, r0
+	rsbmi	r3, r0, #0			@ positive dividend value
+	cmp	r3, r1
+	bls	11f
+	tst	r1, r2				@ divisor is power of 2 ?
+	beq	12f
 
-       ARM_DIV_BODY r3, r1, r0, r2
+	ARM_DIV_BODY r3, r1, r0, r2
 
-       cmp     ip, #0
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+	cmp	ip, #0
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
-10:    teq     ip, r0                          @ same sign ?
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+10:	teq	ip, r0				@ same sign ?
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
-11:    movlo   r0, #0
-       moveq   r0, ip, asr #31
-       orreq   r0, r0, #1
-       mov     pc, lr
+11:	movlo	r0, #0
+	moveq	r0, ip, asr #31
+	orreq	r0, r0, #1
+	mov	pc, lr
 
-12:    ARM_DIV2_ORDER r1, r2
+12:	ARM_DIV2_ORDER r1, r2
 
-       cmp     ip, #0
-       mov     r0, r3, lsr r2
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+	cmp	ip, #0
+	mov	r0, r3, lsr r2
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__divsi3)
@@ -298,23 +298,23 @@ ENDPROC(__aeabi_idiv)
 ENTRY(__modsi3)
 UNWIND(.fnstart)
 
-       cmp     r1, #0
-       beq     Ldiv0
-       rsbmi   r1, r1, #0                      @ loops below use unsigned.
-       movs    ip, r0                          @ preserve sign of dividend
-       rsbmi   r0, r0, #0                      @ if negative make positive
-       subs    r2, r1, #1                      @ compare divisor with 1
-       cmpne   r0, r1                          @ compare dividend with divisor
-       moveq   r0, #0
-       tsthi   r1, r2                          @ see if divisor is power of 2
-       andeq   r0, r0, r2
-       bls     10f
+	cmp	r1, #0
+	beq	Ldiv0
+	rsbmi	r1, r1, #0			@ loops below use unsigned.
+	movs	ip, r0				@ preserve sign of dividend
+	rsbmi	r0, r0, #0			@ if negative make positive
+	subs	r2, r1, #1			@ compare divisor with 1
+	cmpne	r0, r1				@ compare dividend with divisor
+	moveq	r0, #0
+	tsthi	r1, r2				@ see if divisor is power of 2
+	andeq	r0, r0, r2
+	bls	10f
 
-       ARM_MOD_BODY r0, r1, r2, r3
+	ARM_MOD_BODY r0, r1, r2, r3
 
-10:    cmp     ip, #0
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+10:	cmp	ip, #0
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__modsi3)
@@ -323,56 +323,56 @@ ENDPROC(__modsi3)
 
 ENTRY(__aeabi_uidivmod)
 UNWIND(.fnstart)
-UNWIND(.save {r0, r1, ip, lr}  )
+UNWIND(.save {r0, r1, ip, lr}	)
 
-       stmfd   sp!, {r0, r1, ip, lr}
-       bl      __aeabi_uidiv
-       ldmfd   sp!, {r1, r2, ip, lr}
-       mul     r3, r0, r2
-       sub     r1, r1, r3
-       mov     pc, lr
+	stmfd	sp!, {r0, r1, ip, lr}
+	bl	__aeabi_uidiv
+	ldmfd	sp!, {r1, r2, ip, lr}
+	mul	r3, r0, r2
+	sub	r1, r1, r3
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_uidivmod)
 
 ENTRY(__aeabi_idivmod)
 UNWIND(.fnstart)
-UNWIND(.save {r0, r1, ip, lr}  )
-       stmfd   sp!, {r0, r1, ip, lr}
-       bl      __aeabi_idiv
-       ldmfd   sp!, {r1, r2, ip, lr}
-       mul     r3, r0, r2
-       sub     r1, r1, r3
-       mov     pc, lr
+UNWIND(.save {r0, r1, ip, lr}	)
+	stmfd	sp!, {r0, r1, ip, lr}
+	bl	__aeabi_idiv
+	ldmfd	sp!, {r1, r2, ip, lr}
+	mul	r3, r0, r2
+	sub	r1, r1, r3
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_idivmod)
 
 ENTRY(__aeabi_uldivmod)
 UNWIND(.fnstart)
-UNWIND(.save {lr}      )
-       sub sp, sp, #8
-       stmfd   sp!, {sp, lr}
-       bl __qdivrem
-       ldr lr, [sp, #4]
-       add sp, sp, #8
-       ldmfd sp!, {r2, r3}
-       mov     pc, lr
+UNWIND(.save {lr}	)
+	sub sp, sp, #8
+	stmfd   sp!, {sp, lr}
+	bl __qdivrem
+	ldr lr, [sp, #4]
+	add sp, sp, #8
+	ldmfd sp!, {r2, r3}
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_uldivmod)
 
 ENTRY(__aeabi_ldivmod)
 UNWIND(.fnstart)
-UNWIND(.save {lr}      )
-       sub sp, sp, #16
-       stmfd   sp!, {sp, lr}
-       bl __ldivmod_helper
-       ldr lr, [sp, #4]
-       add sp, sp, #16
-       ldmfd   sp!, {r2, r3}
-       mov     pc, lr
-
+UNWIND(.save {lr}	)
+	sub sp, sp, #16
+	stmfd   sp!, {sp, lr}
+	bl __ldivmod_helper
+	ldr lr, [sp, #4]
+	add sp, sp, #16
+	ldmfd	sp!, {r2, r3}
+	mov	pc, lr
+	
 UNWIND(.fnend)
 ENDPROC(__aeabi_ldivmod)
 #endif
@@ -381,9 +381,9 @@ Ldiv0:
 UNWIND(.fnstart)
 UNWIND(.pad #4)
 UNWIND(.save {lr})
-       str     lr, [sp, #-8]!
-       bl      __div0
-       mov     r0, #0                  @ About as wrong as it could be.
-       ldr     pc, [sp], #8
+	str	lr, [sp, #-8]!
+	bl	__div0
+	mov	r0, #0			@ About as wrong as it could be.
+	ldr	pc, [sp], #8
 UNWIND(.fnend)
 ENDPROC(Ldiv0)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/memcpy.S
--- a/xen/arch/arm/lib/memcpy.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/memcpy.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,9 +1,9 @@
 /*
  *  linux/arch/arm/lib/memcpy.S
  *
- *  Author:    Nicolas Pitre
- *  Created:   Sep 28, 2005
- *  Copyright: MontaVista Software, Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Sep 28, 2005
+ *  Copyright:	MontaVista Software, Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -13,46 +13,46 @@
 #include <xen/config.h>
 #include "assembler.h"
 
-#define LDR1W_SHIFT    0
-#define STR1W_SHIFT    0
+#define LDR1W_SHIFT	0
+#define STR1W_SHIFT	0
 
-       .macro ldr1w ptr reg abort
-       W(ldr) \reg, [\ptr], #4
-       .endm
+	.macro ldr1w ptr reg abort
+	W(ldr) \reg, [\ptr], #4
+	.endm
 
-       .macro ldr4w ptr reg1 reg2 reg3 reg4 abort
-       ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
-       .endm
+	.macro ldr4w ptr reg1 reg2 reg3 reg4 abort
+	ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
+	.endm
 
-       .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
-       ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
-       .endm
+	.macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
+	ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
+	.endm
 
-       .macro ldr1b ptr reg cond=al abort
-       ldr\cond\()b \reg, [\ptr], #1
-       .endm
+	.macro ldr1b ptr reg cond=al abort
+	ldr\cond\()b \reg, [\ptr], #1
+	.endm
 
-       .macro str1w ptr reg abort
-       W(str) \reg, [\ptr], #4
-       .endm
+	.macro str1w ptr reg abort
+	W(str) \reg, [\ptr], #4
+	.endm
 
-       .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
-       stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
-       .endm
+	.macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
+	stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
+	.endm
 
-       .macro str1b ptr reg cond=al abort
-       str\cond\()b \reg, [\ptr], #1
-       .endm
+	.macro str1b ptr reg cond=al abort
+	str\cond\()b \reg, [\ptr], #1
+	.endm
 
-       .macro enter reg1 reg2
-       stmdb sp!, {r0, \reg1, \reg2}
-       .endm
+	.macro enter reg1 reg2
+	stmdb sp!, {r0, \reg1, \reg2}
+	.endm
 
-       .macro exit reg1 reg2
-       ldmfd sp!, {r0, \reg1, \reg2}
-       .endm
+	.macro exit reg1 reg2
+	ldmfd sp!, {r0, \reg1, \reg2}
+	.endm
 
-       .text
+	.text
 
 /* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
 
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/memmove.S
--- a/xen/arch/arm/lib/memmove.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/memmove.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,9 +1,9 @@
 /*
  *  linux/arch/arm/lib/memmove.S
  *
- *  Author:    Nicolas Pitre
- *  Created:   Sep 28, 2005
- *  Copyright: (C) MontaVista Software Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Sep 28, 2005
+ *  Copyright:	(C) MontaVista Software Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -14,7 +14,7 @@
 
 #include "assembler.h"
 
-               .text
+		.text
 
 /*
  * Prototype: void *memmove(void *dest, const void *src, size_t n);
@@ -29,172 +29,172 @@
 
 ENTRY(memmove)
 
-               subs    ip, r0, r1
-               cmphi   r2, ip
-               bls     memcpy
+		subs	ip, r0, r1
+		cmphi	r2, ip
+		bls	memcpy
 
-               stmfd   sp!, {r0, r4, lr}
-               add     r1, r1, r2
-               add     r0, r0, r2
-               subs    r2, r2, #4
-               blt     8f
-               ands    ip, r0, #3
-       PLD(    pld     [r1, #-4]               )
-               bne     9f
-               ands    ip, r1, #3
-               bne     10f
+		stmfd	sp!, {r0, r4, lr}
+		add	r1, r1, r2
+		add	r0, r0, r2
+		subs	r2, r2, #4
+		blt	8f
+		ands	ip, r0, #3
+	PLD(	pld	[r1, #-4]		)
+		bne	9f
+		ands	ip, r1, #3
+		bne	10f
 
-1:             subs    r2, r2, #(28)
-               stmfd   sp!, {r5 - r8}
-               blt     5f
+1:		subs	r2, r2, #(28)
+		stmfd	sp!, {r5 - r8}
+		blt	5f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
-       CALGN(  bcs     2f                      )
-       CALGN(  adr     r4, 6f                  )
-       CALGN(  subs    r2, r2, ip              )  @ C is set here
-       CALGN(  rsb     ip, ip, #32             )
-       CALGN(  add     pc, r4, ip              )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	sbcnes	r4, ip, r2		)  @ C is always set here
+	CALGN(	bcs	2f			)
+	CALGN(	adr	r4, 6f			)
+	CALGN(	subs	r2, r2, ip		)  @ C is set here
+	CALGN(	rsb	ip, ip, #32		)
+	CALGN(	add	pc, r4, ip		)
 
-       PLD(    pld     [r1, #-4]               )
-2:     PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #-32]              )
-       PLD(    blt     4f                      )
-       PLD(    pld     [r1, #-64]              )
-       PLD(    pld     [r1, #-96]              )
+	PLD(	pld	[r1, #-4]		)
+2:	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #-32]		)
+	PLD(	blt	4f			)
+	PLD(	pld	[r1, #-64]		)
+	PLD(	pld	[r1, #-96]		)
 
-3:     PLD(    pld     [r1, #-128]             )
-4:             ldmdb   r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
-               subs    r2, r2, #32
-               stmdb   r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
-               bge     3b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     4b                      )
+3:	PLD(	pld	[r1, #-128]		)
+4:		ldmdb	r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
+		subs	r2, r2, #32
+		stmdb	r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
+		bge	3b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	4b			)
 
-5:             ands    ip, r2, #28
-               rsb     ip, ip, #32
-               addne   pc, pc, ip              @ C is always clear here
-               b       7f
-6:             W(nop)
-               W(ldr)  r3, [r1, #-4]!
-               W(ldr)  r4, [r1, #-4]!
-               W(ldr)  r5, [r1, #-4]!
-               W(ldr)  r6, [r1, #-4]!
-               W(ldr)  r7, [r1, #-4]!
-               W(ldr)  r8, [r1, #-4]!
-               W(ldr)  lr, [r1, #-4]!
+5:		ands	ip, r2, #28
+		rsb	ip, ip, #32
+		addne	pc, pc, ip		@ C is always clear here
+		b	7f
+6:		W(nop)
+		W(ldr)	r3, [r1, #-4]!
+		W(ldr)	r4, [r1, #-4]!
+		W(ldr)	r5, [r1, #-4]!
+		W(ldr)	r6, [r1, #-4]!
+		W(ldr)	r7, [r1, #-4]!
+		W(ldr)	r8, [r1, #-4]!
+		W(ldr)	lr, [r1, #-4]!
 
-               add     pc, pc, ip
-               nop
-               W(nop)
-               W(str)  r3, [r0, #-4]!
-               W(str)  r4, [r0, #-4]!
-               W(str)  r5, [r0, #-4]!
-               W(str)  r6, [r0, #-4]!
-               W(str)  r7, [r0, #-4]!
-               W(str)  r8, [r0, #-4]!
-               W(str)  lr, [r0, #-4]!
+		add	pc, pc, ip
+		nop
+		W(nop)
+		W(str)	r3, [r0, #-4]!
+		W(str)	r4, [r0, #-4]!
+		W(str)	r5, [r0, #-4]!
+		W(str)	r6, [r0, #-4]!
+		W(str)	r7, [r0, #-4]!
+		W(str)	r8, [r0, #-4]!
+		W(str)	lr, [r0, #-4]!
 
-       CALGN(  bcs     2b                      )
+	CALGN(	bcs	2b			)
 
-7:             ldmfd   sp!, {r5 - r8}
+7:		ldmfd	sp!, {r5 - r8}
 
-8:             movs    r2, r2, lsl #31
-               ldrneb  r3, [r1, #-1]!
-               ldrcsb  r4, [r1, #-1]!
-               ldrcsb  ip, [r1, #-1]
-               strneb  r3, [r0, #-1]!
-               strcsb  r4, [r0, #-1]!
-               strcsb  ip, [r0, #-1]
-               ldmfd   sp!, {r0, r4, pc}
+8:		movs	r2, r2, lsl #31
+		ldrneb	r3, [r1, #-1]!
+		ldrcsb	r4, [r1, #-1]!
+		ldrcsb	ip, [r1, #-1]
+		strneb	r3, [r0, #-1]!
+		strcsb	r4, [r0, #-1]!
+		strcsb	ip, [r0, #-1]
+		ldmfd	sp!, {r0, r4, pc}
 
-9:             cmp     ip, #2
-               ldrgtb  r3, [r1, #-1]!
-               ldrgeb  r4, [r1, #-1]!
-               ldrb    lr, [r1, #-1]!
-               strgtb  r3, [r0, #-1]!
-               strgeb  r4, [r0, #-1]!
-               subs    r2, r2, ip
-               strb    lr, [r0, #-1]!
-               blt     8b
-               ands    ip, r1, #3
-               beq     1b
+9:		cmp	ip, #2
+		ldrgtb	r3, [r1, #-1]!
+		ldrgeb	r4, [r1, #-1]!
+		ldrb	lr, [r1, #-1]!
+		strgtb	r3, [r0, #-1]!
+		strgeb	r4, [r0, #-1]!
+		subs	r2, r2, ip
+		strb	lr, [r0, #-1]!
+		blt	8b
+		ands	ip, r1, #3
+		beq	1b
 
-10:            bic     r1, r1, #3
-               cmp     ip, #2
-               ldr     r3, [r1, #0]
-               beq     17f
-               blt     18f
+10:		bic	r1, r1, #3
+		cmp	ip, #2
+		ldr	r3, [r1, #0]
+		beq	17f
+		blt	18f
 
 
-               .macro  backward_copy_shift push pull
+		.macro	backward_copy_shift push pull
 
-               subs    r2, r2, #28
-               blt     14f
+		subs	r2, r2, #28
+		blt	14f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
-       CALGN(  subcc   r2, r2, ip              )
-       CALGN(  bcc     15f                     )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	sbcnes	r4, ip, r2		)  @ C is always set here
+	CALGN(	subcc	r2, r2, ip		)
+	CALGN(	bcc	15f			)
 
-11:            stmfd   sp!, {r5 - r9}
+11:		stmfd	sp!, {r5 - r9}
 
-       PLD(    pld     [r1, #-4]               )
-       PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #-32]              )
-       PLD(    blt     13f                     )
-       PLD(    pld     [r1, #-64]              )
-       PLD(    pld     [r1, #-96]              )
+	PLD(	pld	[r1, #-4]		)
+	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #-32]		)
+	PLD(	blt	13f			)
+	PLD(	pld	[r1, #-64]		)
+	PLD(	pld	[r1, #-96]		)
 
-12:    PLD(    pld     [r1, #-128]             )
-13:            ldmdb   r1!, {r7, r8, r9, ip}
-               mov     lr, r3, push #\push
-               subs    r2, r2, #32
-               ldmdb   r1!, {r3, r4, r5, r6}
-               orr     lr, lr, ip, pull #\pull
-               mov     ip, ip, push #\push
-               orr     ip, ip, r9, pull #\pull
-               mov     r9, r9, push #\push
-               orr     r9, r9, r8, pull #\pull
-               mov     r8, r8, push #\push
-               orr     r8, r8, r7, pull #\pull
-               mov     r7, r7, push #\push
-               orr     r7, r7, r6, pull #\pull
-               mov     r6, r6, push #\push
-               orr     r6, r6, r5, pull #\pull
-               mov     r5, r5, push #\push
-               orr     r5, r5, r4, pull #\pull
-               mov     r4, r4, push #\push
-               orr     r4, r4, r3, pull #\pull
-               stmdb   r0!, {r4 - r9, ip, lr}
-               bge     12b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     13b                     )
+12:	PLD(	pld	[r1, #-128]		)
+13:		ldmdb   r1!, {r7, r8, r9, ip}
+		mov     lr, r3, push #\push
+		subs    r2, r2, #32
+		ldmdb   r1!, {r3, r4, r5, r6}
+		orr     lr, lr, ip, pull #\pull
+		mov     ip, ip, push #\push
+		orr     ip, ip, r9, pull #\pull
+		mov     r9, r9, push #\push
+		orr     r9, r9, r8, pull #\pull
+		mov     r8, r8, push #\push
+		orr     r8, r8, r7, pull #\pull
+		mov     r7, r7, push #\push
+		orr     r7, r7, r6, pull #\pull
+		mov     r6, r6, push #\push
+		orr     r6, r6, r5, pull #\pull
+		mov     r5, r5, push #\push
+		orr     r5, r5, r4, pull #\pull
+		mov     r4, r4, push #\push
+		orr     r4, r4, r3, pull #\pull
+		stmdb   r0!, {r4 - r9, ip, lr}
+		bge	12b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	13b			)
 
-               ldmfd   sp!, {r5 - r9}
+		ldmfd	sp!, {r5 - r9}
 
-14:            ands    ip, r2, #28
-               beq     16f
+14:		ands	ip, r2, #28
+		beq	16f
 
-15:            mov     lr, r3, push #\push
-               ldr     r3, [r1, #-4]!
-               subs    ip, ip, #4
-               orr     lr, lr, r3, pull #\pull
-               str     lr, [r0, #-4]!
-               bgt     15b
-       CALGN(  cmp     r2, #0                  )
-       CALGN(  bge     11b                     )
+15:		mov     lr, r3, push #\push
+		ldr	r3, [r1, #-4]!
+		subs	ip, ip, #4
+		orr	lr, lr, r3, pull #\pull
+		str	lr, [r0, #-4]!
+		bgt	15b
+	CALGN(	cmp	r2, #0			)
+	CALGN(	bge	11b			)
 
-16:            add     r1, r1, #(\pull / 8)
-               b       8b
+16:		add	r1, r1, #(\pull / 8)
+		b	8b
 
-               .endm
+		.endm
 
 
-               backward_copy_shift     push=8  pull=24
+		backward_copy_shift	push=8	pull=24
 
-17:            backward_copy_shift     push=16 pull=16
+17:		backward_copy_shift	push=16	pull=16
 
-18:            backward_copy_shift     push=24 pull=8
+18:		backward_copy_shift	push=24	pull=8
 
 ENDPROC(memmove)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/memset.S
--- a/xen/arch/arm/lib/memset.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/memset.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,33 +14,33 @@
 
 #include "assembler.h"
 
-       .text
-       .align  5
-       .word   0
+	.text
+	.align	5
+	.word	0
 
-1:     subs    r2, r2, #4              @ 1 do we have enough
-       blt     5f                      @ 1 bytes to align with?
-       cmp     r3, #2                  @ 1
-       strltb  r1, [r0], #1            @ 1
-       strleb  r1, [r0], #1            @ 1
-       strb    r1, [r0], #1            @ 1
-       add     r2, r2, r3              @ 1 (r2 = r2 - (4 - r3))
+1:	subs	r2, r2, #4		@ 1 do we have enough
+	blt	5f			@ 1 bytes to align with?
+	cmp	r3, #2			@ 1
+	strltb	r1, [r0], #1		@ 1
+	strleb	r1, [r0], #1		@ 1
+	strb	r1, [r0], #1		@ 1
+	add	r2, r2, r3		@ 1 (r2 = r2 - (4 - r3))
 /*
  * The pointer is now aligned and the length is adjusted.  Try doing the
  * memset again.
  */
 
 ENTRY(memset)
-       ands    r3, r0, #3              @ 1 unaligned?
-       bne     1b                      @ 1
+	ands	r3, r0, #3		@ 1 unaligned?
+	bne	1b			@ 1
 /*
  * we know that the pointer in r0 is aligned to a word boundary.
  */
-       orr     r1, r1, r1, lsl #8
-       orr     r1, r1, r1, lsl #16
-       mov     r3, r1
-       cmp     r2, #16
-       blt     4f
+	orr	r1, r1, r1, lsl #8
+	orr	r1, r1, r1, lsl #16
+	mov	r3, r1
+	cmp	r2, #16
+	blt	4f
 
 #if ! CALGN(1)+0
 
@@ -48,26 +48,26 @@ ENTRY(memset)
  * We need an extra register for this loop - save the return address and
  * use the LR
  */
-       str     lr, [sp, #-4]!
-       mov     ip, r1
-       mov     lr, r1
+	str	lr, [sp, #-4]!
+	mov	ip, r1
+	mov	lr, r1
 
-2:     subs    r2, r2, #64
-       stmgeia r0!, {r1, r3, ip, lr}   @ 64 bytes at a time.
-       stmgeia r0!, {r1, r3, ip, lr}
-       stmgeia r0!, {r1, r3, ip, lr}
-       stmgeia r0!, {r1, r3, ip, lr}
-       bgt     2b
-       ldmeqfd sp!, {pc}               @ Now <64 bytes to go.
+2:	subs	r2, r2, #64
+	stmgeia	r0!, {r1, r3, ip, lr}	@ 64 bytes at a time.
+	stmgeia	r0!, {r1, r3, ip, lr}
+	stmgeia	r0!, {r1, r3, ip, lr}
+	stmgeia	r0!, {r1, r3, ip, lr}
+	bgt	2b
+	ldmeqfd	sp!, {pc}		@ Now <64 bytes to go.
 /*
  * No need to correct the count; we're only testing bits from now on
  */
-       tst     r2, #32
-       stmneia r0!, {r1, r3, ip, lr}
-       stmneia r0!, {r1, r3, ip, lr}
-       tst     r2, #16
-       stmneia r0!, {r1, r3, ip, lr}
-       ldr     lr, [sp], #4
+	tst	r2, #32
+	stmneia	r0!, {r1, r3, ip, lr}
+	stmneia	r0!, {r1, r3, ip, lr}
+	tst	r2, #16
+	stmneia	r0!, {r1, r3, ip, lr}
+	ldr	lr, [sp], #4
 
 #else
 
@@ -76,54 +76,54 @@ 2:     subs    r2, r2, #64
  * whole cache lines at once.
  */
 
-       stmfd   sp!, {r4-r7, lr}
-       mov     r4, r1
-       mov     r5, r1
-       mov     r6, r1
-       mov     r7, r1
-       mov     ip, r1
-       mov     lr, r1
+	stmfd	sp!, {r4-r7, lr}
+	mov	r4, r1
+	mov	r5, r1
+	mov	r6, r1
+	mov	r7, r1
+	mov	ip, r1
+	mov	lr, r1
 
-       cmp     r2, #96
-       tstgt   r0, #31
-       ble     3f
+	cmp	r2, #96
+	tstgt	r0, #31
+	ble	3f
 
-       and     ip, r0, #31
-       rsb     ip, ip, #32
-       sub     r2, r2, ip
-       movs    ip, ip, lsl #(32 - 4)
-       stmcsia r0!, {r4, r5, r6, r7}
-       stmmiia r0!, {r4, r5}
-       tst     ip, #(1 << 30)
-       mov     ip, r1
-       strne   r1, [r0], #4
+	and	ip, r0, #31
+	rsb	ip, ip, #32
+	sub	r2, r2, ip
+	movs	ip, ip, lsl #(32 - 4)
+	stmcsia	r0!, {r4, r5, r6, r7}
+	stmmiia	r0!, {r4, r5}
+	tst	ip, #(1 << 30)
+	mov	ip, r1
+	strne	r1, [r0], #4
 
-3:     subs    r2, r2, #64
-       stmgeia r0!, {r1, r3-r7, ip, lr}
-       stmgeia r0!, {r1, r3-r7, ip, lr}
-       bgt     3b
-       ldmeqfd sp!, {r4-r7, pc}
+3:	subs	r2, r2, #64
+	stmgeia	r0!, {r1, r3-r7, ip, lr}
+	stmgeia	r0!, {r1, r3-r7, ip, lr}
+	bgt	3b
+	ldmeqfd	sp!, {r4-r7, pc}
 
-       tst     r2, #32
-       stmneia r0!, {r1, r3-r7, ip, lr}
-       tst     r2, #16
-       stmneia r0!, {r4-r7}
-       ldmfd   sp!, {r4-r7, lr}
+	tst	r2, #32
+	stmneia	r0!, {r1, r3-r7, ip, lr}
+	tst	r2, #16
+	stmneia	r0!, {r4-r7}
+	ldmfd	sp!, {r4-r7, lr}
 
 #endif
 
-4:     tst     r2, #8
-       stmneia r0!, {r1, r3}
-       tst     r2, #4
-       strne   r1, [r0], #4
+4:	tst	r2, #8
+	stmneia	r0!, {r1, r3}
+	tst	r2, #4
+	strne	r1, [r0], #4
 /*
  * When we get here, we've got less than 4 bytes to zero.  We
  * may have an unaligned pointer as well.
  */
-5:     tst     r2, #2
-       strneb  r1, [r0], #1
-       strneb  r1, [r0], #1
-       tst     r2, #1
-       strneb  r1, [r0], #1
-       mov     pc, lr
+5:	tst	r2, #2
+	strneb	r1, [r0], #1
+	strneb	r1, [r0], #1
+	tst	r2, #1
+	strneb	r1, [r0], #1
+	mov	pc, lr
 ENDPROC(memset)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/memzero.S
--- a/xen/arch/arm/lib/memzero.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/memzero.S	Mon Feb 13 17:26:08 2012 +0000
@@ -12,35 +12,35 @@
 
 #include "assembler.h"
 
-       .text
-       .align  5
-       .word   0
+	.text
+	.align	5
+	.word	0
 /*
  * Align the pointer in r0.  r3 contains the number of bytes that we are
  * mis-aligned by, and r1 is the number of bytes.  If r1 < 4, then we
  * don't bother; we use byte stores instead.
  */
-1:     subs    r1, r1, #4              @ 1 do we have enough
-       blt     5f                      @ 1 bytes to align with?
-       cmp     r3, #2                  @ 1
-       strltb  r2, [r0], #1            @ 1
-       strleb  r2, [r0], #1            @ 1
-       strb    r2, [r0], #1            @ 1
-       add     r1, r1, r3              @ 1 (r1 = r1 - (4 - r3))
+1:	subs	r1, r1, #4		@ 1 do we have enough
+	blt	5f			@ 1 bytes to align with?
+	cmp	r3, #2			@ 1
+	strltb	r2, [r0], #1		@ 1
+	strleb	r2, [r0], #1		@ 1
+	strb	r2, [r0], #1		@ 1
+	add	r1, r1, r3		@ 1 (r1 = r1 - (4 - r3))
 /*
  * The pointer is now aligned and the length is adjusted.  Try doing the
  * memzero again.
  */
 
 ENTRY(__memzero)
-       mov     r2, #0                  @ 1
-       ands    r3, r0, #3              @ 1 unaligned?
-       bne     1b                      @ 1
+	mov	r2, #0			@ 1
+	ands	r3, r0, #3		@ 1 unaligned?
+	bne	1b			@ 1
 /*
  * r3 = 0, and we know that the pointer in r0 is aligned to a word boundary.
  */
-       cmp     r1, #16                 @ 1 we can skip this chunk if we
-       blt     4f                      @ 1 have < 16 bytes
+	cmp	r1, #16			@ 1 we can skip this chunk if we
+	blt	4f			@ 1 have < 16 bytes
 
 #if ! CALGN(1)+0
 
@@ -48,26 +48,26 @@ ENTRY(__memzero)
  * We need an extra register for this loop - save the return address and
  * use the LR
  */
-       str     lr, [sp, #-4]!          @ 1
-       mov     ip, r2                  @ 1
-       mov     lr, r2                  @ 1
+	str	lr, [sp, #-4]!		@ 1
+	mov	ip, r2			@ 1
+	mov	lr, r2			@ 1
 
-3:     subs    r1, r1, #64             @ 1 write 32 bytes out per loop
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       bgt     3b                      @ 1
-       ldmeqfd sp!, {pc}               @ 1/2 quick exit
+3:	subs	r1, r1, #64		@ 1 write 32 bytes out per loop
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	bgt	3b			@ 1
+	ldmeqfd	sp!, {pc}		@ 1/2 quick exit
 /*
  * No need to correct the count; we're only testing bits from now on
  */
-       tst     r1, #32                 @ 1
-       stmneia r0!, {r2, r3, ip, lr}   @ 4
-       stmneia r0!, {r2, r3, ip, lr}   @ 4
-       tst     r1, #16                 @ 1 16 bytes or more?
-       stmneia r0!, {r2, r3, ip, lr}   @ 4
-       ldr     lr, [sp], #4            @ 1
+	tst	r1, #32			@ 1
+	stmneia	r0!, {r2, r3, ip, lr}	@ 4
+	stmneia	r0!, {r2, r3, ip, lr}	@ 4
+	tst	r1, #16			@ 1 16 bytes or more?
+	stmneia	r0!, {r2, r3, ip, lr}	@ 4
+	ldr	lr, [sp], #4		@ 1
 
 #else
 
@@ -76,52 +76,52 @@ 3:     subs    r1, r1, #64             @
  * whole cache lines at once.
  */
 
-       stmfd   sp!, {r4-r7, lr}
-       mov     r4, r2
-       mov     r5, r2
-       mov     r6, r2
-       mov     r7, r2
-       mov     ip, r2
-       mov     lr, r2
+	stmfd	sp!, {r4-r7, lr}
+	mov	r4, r2
+	mov	r5, r2
+	mov	r6, r2
+	mov	r7, r2
+	mov	ip, r2
+	mov	lr, r2
 
-       cmp     r1, #96
-       andgts  ip, r0, #31
-       ble     3f
+	cmp	r1, #96
+	andgts	ip, r0, #31
+	ble	3f
 
-       rsb     ip, ip, #32
-       sub     r1, r1, ip
-       movs    ip, ip, lsl #(32 - 4)
-       stmcsia r0!, {r4, r5, r6, r7}
-       stmmiia r0!, {r4, r5}
-       movs    ip, ip, lsl #2
-       strcs   r2, [r0], #4
+	rsb	ip, ip, #32
+	sub	r1, r1, ip
+	movs	ip, ip, lsl #(32 - 4)
+	stmcsia	r0!, {r4, r5, r6, r7}
+	stmmiia	r0!, {r4, r5}
+	movs	ip, ip, lsl #2
+	strcs	r2, [r0], #4
 
-3:     subs    r1, r1, #64
-       stmgeia r0!, {r2-r7, ip, lr}
-       stmgeia r0!, {r2-r7, ip, lr}
-       bgt     3b
-       ldmeqfd sp!, {r4-r7, pc}
+3:	subs	r1, r1, #64
+	stmgeia	r0!, {r2-r7, ip, lr}
+	stmgeia	r0!, {r2-r7, ip, lr}
+	bgt	3b
+	ldmeqfd	sp!, {r4-r7, pc}
 
-       tst     r1, #32
-       stmneia r0!, {r2-r7, ip, lr}
-       tst     r1, #16
-       stmneia r0!, {r4-r7}
-       ldmfd   sp!, {r4-r7, lr}
+	tst	r1, #32
+	stmneia	r0!, {r2-r7, ip, lr}
+	tst	r1, #16
+	stmneia	r0!, {r4-r7}
+	ldmfd	sp!, {r4-r7, lr}
 
 #endif
 
-4:     tst     r1, #8                  @ 1 8 bytes or more?
-       stmneia r0!, {r2, r3}           @ 2
-       tst     r1, #4                  @ 1 4 bytes or more?
-       strne   r2, [r0], #4            @ 1
+4:	tst	r1, #8			@ 1 8 bytes or more?
+	stmneia	r0!, {r2, r3}		@ 2
+	tst	r1, #4			@ 1 4 bytes or more?
+	strne	r2, [r0], #4		@ 1
 /*
  * When we get here, we've got less than 4 bytes to zero.  We
  * may have an unaligned pointer as well.
  */
-5:     tst     r1, #2                  @ 1 2 bytes or more?
-       strneb  r2, [r0], #1            @ 1
-       strneb  r2, [r0], #1            @ 1
-       tst     r1, #1                  @ 1 a byte left over
-       strneb  r2, [r0], #1            @ 1
-       mov     pc, lr                  @ 1
+5:	tst	r1, #2			@ 1 2 bytes or more?
+	strneb	r2, [r0], #1		@ 1
+	strneb	r2, [r0], #1		@ 1
+	tst	r1, #1			@ 1 a byte left over
+	strneb	r2, [r0], #1		@ 1
+	mov	pc, lr			@ 1
 ENDPROC(__memzero)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/setbit.S
--- a/xen/arch/arm/lib/setbit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/setbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -11,8 +11,8 @@
 
 #include "assembler.h"
 #include "bitops.h"
-       .text
+	.text
 
 ENTRY(_set_bit)
-       bitop   orr
+	bitop	orr
 ENDPROC(_set_bit)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/testchangebit.S
--- a/xen/arch/arm/lib/testchangebit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/testchangebit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_test_and_change_bit)
-       testop  eor, str
+	testop	eor, str
 ENDPROC(_test_and_change_bit)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/testclearbit.S
--- a/xen/arch/arm/lib/testclearbit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/testclearbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_test_and_clear_bit)
-       testop  bicne, strne
+	testop	bicne, strne
 ENDPROC(_test_and_clear_bit)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/arch/arm/lib/testsetbit.S
--- a/xen/arch/arm/lib/testsetbit.S	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/arch/arm/lib/testsetbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_test_and_set_bit)
-       testop  orreq, streq
+	testop	orreq, streq
 ENDPROC(_test_and_set_bit)
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/include/asm-arm/bitops.h
--- a/xen/include/asm-arm/bitops.h	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/include/asm-arm/bitops.h	Mon Feb 13 17:26:08 2012 +0000
@@ -115,19 +115,19 @@ extern int _find_next_bit_be(const unsig
 /*
  * These are the little endian, atomic definitions.
  */
-#define find_first_zero_bit(p,sz)      _find_first_zero_bit_le(p,sz)
-#define find_next_zero_bit(p,sz,off)   _find_next_zero_bit_le(p,sz,off)
-#define find_first_bit(p,sz)           _find_first_bit_le(p,sz)
-#define find_next_bit(p,sz,off)                _find_next_bit_le(p,sz,off)
+#define find_first_zero_bit(p,sz)	_find_first_zero_bit_le(p,sz)
+#define find_next_zero_bit(p,sz,off)	_find_next_zero_bit_le(p,sz,off)
+#define find_first_bit(p,sz)		_find_first_bit_le(p,sz)
+#define find_next_bit(p,sz,off)		_find_next_bit_le(p,sz,off)
 
 #else
 /*
  * These are the big endian, atomic definitions.
  */
-#define find_first_zero_bit(p,sz)      _find_first_zero_bit_be(p,sz)
-#define find_next_zero_bit(p,sz,off)   _find_next_zero_bit_be(p,sz,off)
-#define find_first_bit(p,sz)           _find_first_bit_be(p,sz)
-#define find_next_bit(p,sz,off)                _find_next_bit_be(p,sz,off)
+#define find_first_zero_bit(p,sz)	_find_first_zero_bit_be(p,sz)
+#define find_next_zero_bit(p,sz,off)	_find_next_zero_bit_be(p,sz,off)
+#define find_first_bit(p,sz)		_find_first_bit_be(p,sz)
+#define find_next_bit(p,sz,off)		_find_next_bit_be(p,sz,off)
 
 #endif
 
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/include/asm-arm/div64.h
--- a/xen/include/asm-arm/div64.h	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/include/asm-arm/div64.h	Mon Feb 13 17:26:08 2012 +0000
@@ -10,9 +10,9 @@
  *
  * uint32_t do_div(uint64_t *n, uint32_t base)
  * {
- *     uint32_t remainder = *n % base;
- *     *n = *n / base;
- *     return remainder;
+ * 	uint32_t remainder = *n % base;
+ * 	*n = *n / base;
+ * 	return remainder;
  * }
  *
  * In other words, a 64-bit dividend with a 32-bit divisor producing
@@ -29,22 +29,22 @@
 #define __xh "r1"
 #endif
 
-#define __do_div_asm(n, base)                                  \
-({                                                             \
-       register unsigned int __base      asm("r4") = base;     \
-       register unsigned long long __n   asm("r0") = n;        \
-       register unsigned long long __res asm("r2");            \
-       register unsigned int __rem       asm(__xh);            \
-       asm(    __asmeq("%0", __xh)                             \
-               __asmeq("%1", "r2")                             \
-               __asmeq("%2", "r0")                             \
-               __asmeq("%3", "r4")                             \
-               "bl     __do_div64"                             \
-               : "=r" (__rem), "=r" (__res)                    \
-               : "r" (__n), "r" (__base)                       \
-               : "ip", "lr", "cc");                            \
-       n = __res;                                              \
-       __rem;                                                  \
+#define __do_div_asm(n, base)					\
+({								\
+	register unsigned int __base      asm("r4") = base;	\
+	register unsigned long long __n   asm("r0") = n;	\
+	register unsigned long long __res asm("r2");		\
+	register unsigned int __rem       asm(__xh);		\
+	asm(	__asmeq("%0", __xh)				\
+		__asmeq("%1", "r2")				\
+		__asmeq("%2", "r0")				\
+		__asmeq("%3", "r4")				\
+		"bl	__do_div64"				\
+		: "=r" (__rem), "=r" (__res)			\
+		: "r" (__n), "r" (__base)			\
+		: "ip", "lr", "cc");				\
+	n = __res;						\
+	__rem;							\
 })
 
 #if __GNUC__ < 4
@@ -71,155 +71,155 @@
  * sufficiently recent to perform proper long long constant propagation.
  * (It is unfortunate that gcc doesn't perform all this internally.)
  */
-#define do_div(n, base)                                                        \
-({                                                                     \
-       unsigned int __r, __b = (base);                                 \
-       if (!__builtin_constant_p(__b) || __b == 0) {                   \
-               /* non-constant divisor (or zero): slow path */         \
-               __r = __do_div_asm(n, __b);                             \
-       } else if ((__b & (__b - 1)) == 0) {                            \
-               /* Trivial: __b is constant and a power of 2 */         \
-               /* gcc does the right thing with this code.  */         \
-               __r = n;                                                \
-               __r &= (__b - 1);                                       \
-               n /= __b;                                               \
-       } else {                                                        \
-               /* Multiply by inverse of __b: n/b = n*(p/b)/p       */ \
-               /* We rely on the fact that most of this code gets   */ \
-               /* optimized away at compile time due to constant    */ \
-               /* propagation and only a couple inline assembly     */ \
-               /* instructions should remain. Better avoid any      */ \
-               /* code construct that might prevent that.           */ \
-               unsigned long long __res, __x, __t, __m, __n = n;       \
-               unsigned int __c, __p, __z = 0;                         \
-               /* preserve low part of n for reminder computation */   \
-               __r = __n;                                              \
-               /* determine number of bits to represent __b */         \
-               __p = 1 << __div64_fls(__b);                            \
-               /* compute __m = ((__p << 64) + __b - 1) / __b */       \
-               __m = (~0ULL / __b) * __p;                              \
-               __m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b;     \
-               /* compute __res = __m*(~0ULL/__b*__b-1)/(__p << 64) */ \
-               __x = ~0ULL / __b * __b - 1;                            \
-               __res = (__m & 0xffffffff) * (__x & 0xffffffff);        \
-               __res >>= 32;                                           \
-               __res += (__m & 0xffffffff) * (__x >> 32);              \
-               __t = __res;                                            \
-               __res += (__x & 0xffffffff) * (__m >> 32);              \
-               __t = (__res < __t) ? (1ULL << 32) : 0;                 \
-               __res = (__res >> 32) + __t;                            \
-               __res += (__m >> 32) * (__x >> 32);                     \
-               __res /= __p;                                           \
-               /* Now sanitize and optimize what we've got. */         \
-               if (~0ULL % (__b / (__b & -__b)) == 0) {                \
-                       /* those cases can be simplified with: */       \
-                       __n /= (__b & -__b);                            \
-                       __m = ~0ULL / (__b / (__b & -__b));             \
-                       __p = 1;                                        \
-                       __c = 1;                                        \
-               } else if (__res != __x / __b) {                        \
-                       /* We can't get away without a correction    */ \
-                       /* to compensate for bit truncation errors.  */ \
-                       /* To avoid it we'd need an additional bit   */ \
-                       /* to represent __m which would overflow it. */ \
-                       /* Instead we do m=p/b and n/b=(n*m+m)/p.    */ \
-                       __c = 1;                                        \
-                       /* Compute __m = (__p << 64) / __b */           \
-                       __m = (~0ULL / __b) * __p;                      \
-                       __m += ((~0ULL % __b + 1) * __p) / __b;         \
-               } else {                                                \
-                       /* Reduce __m/__p, and try to clear bit 31   */ \
-                       /* of __m when possible otherwise that'll    */ \
-                       /* need extra overflow handling later.       */ \
-                       unsigned int __bits = -(__m & -__m);            \
-                       __bits |= __m >> 32;                            \
-                       __bits = (~__bits) << 1;                        \
-                       /* If __bits == 0 then setting bit 31 is     */ \
-                       /* unavoidable.  Simply apply the maximum    */ \
-                       /* possible reduction in that case.          */ \
-                       /* Otherwise the MSB of __bits indicates the */ \
-                       /* best reduction we should apply.           */ \
-                       if (!__bits) {                                  \
-                               __p /= (__m & -__m);                    \
-                               __m /= (__m & -__m);                    \
-                       } else {                                        \
-                               __p >>= __div64_fls(__bits);            \
-                               __m >>= __div64_fls(__bits);            \
-                       }                                               \
-                       /* No correction needed. */                     \
-                       __c = 0;                                        \
-               }                                                       \
-               /* Now we have a combination of 2 conditions:        */ \
-               /* 1) whether or not we need a correction (__c), and */ \
-               /* 2) whether or not there might be an overflow in   */ \
-               /*    the cross product (__m & ((1<<63) | (1<<31)))  */ \
-               /* Select the best insn combination to perform the   */ \
-               /* actual __m * __n / (__p << 64) operation.         */ \
-               if (!__c) {                                             \
-                       asm (   "umull  %Q0, %R0, %1, %Q2\n\t"          \
-                               "mov    %Q0, #0"                        \
-                               : "=&r" (__res)                         \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               } else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {    \
-                       __res = __m;                                    \
-                       asm (   "umlal  %Q0, %R0, %Q1, %Q2\n\t"         \
-                               "mov    %Q0, #0"                        \
-                               : "+&r" (__res)                         \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               } else {                                                \
-                       asm (   "umull  %Q0, %R0, %Q1, %Q2\n\t"         \
-                               "cmn    %Q0, %Q1\n\t"                   \
-                               "adcs   %R0, %R0, %R1\n\t"              \
-                               "adc    %Q0, %3, #0"                    \
-                               : "=&r" (__res)                         \
-                               : "r" (__m), "r" (__n), "r" (__z)       \
-                               : "cc" );                               \
-               }                                                       \
-               if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {           \
-                       asm (   "umlal  %R0, %Q0, %R1, %Q2\n\t"         \
-                               "umlal  %R0, %Q0, %Q1, %R2\n\t"         \
-                               "mov    %R0, #0\n\t"                    \
-                               "umlal  %Q0, %R0, %R1, %R2"             \
-                               : "+&r" (__res)                         \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               } else {                                                \
-                       asm (   "umlal  %R0, %Q0, %R2, %Q3\n\t"         \
-                               "umlal  %R0, %1, %Q2, %R3\n\t"          \
-                               "mov    %R0, #0\n\t"                    \
-                               "adds   %Q0, %1, %Q0\n\t"               \
-                               "adc    %R0, %R0, #0\n\t"               \
-                               "umlal  %Q0, %R0, %R2, %R3"             \
-                               : "+&r" (__res), "+&r" (__z)            \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               }                                                       \
-               __res /= __p;                                           \
-               /* The reminder can be computed with 32-bit regs     */ \
-               /* only, and gcc is good at that.                    */ \
-               {                                                       \
-                       unsigned int __res0 = __res;                    \
-                       unsigned int __b0 = __b;                        \
-                       __r -= __res0 * __b0;                           \
-               }                                                       \
-               /* BUG_ON(__r >= __b || __res * __b + __r != n); */     \
-               n = __res;                                              \
-       }                                                               \
-       __r;                                                            \
+#define do_div(n, base)							\
+({									\
+	unsigned int __r, __b = (base);					\
+	if (!__builtin_constant_p(__b) || __b == 0) {			\
+		/* non-constant divisor (or zero): slow path */		\
+		__r = __do_div_asm(n, __b);				\
+	} else if ((__b & (__b - 1)) == 0) {				\
+		/* Trivial: __b is constant and a power of 2 */		\
+		/* gcc does the right thing with this code.  */		\
+		__r = n;						\
+		__r &= (__b - 1);					\
+		n /= __b;						\
+	} else {							\
+		/* Multiply by inverse of __b: n/b = n*(p/b)/p       */	\
+		/* We rely on the fact that most of this code gets   */	\
+		/* optimized away at compile time due to constant    */	\
+		/* propagation and only a couple inline assembly     */	\
+		/* instructions should remain. Better avoid any      */	\
+		/* code construct that might prevent that.           */	\
+		unsigned long long __res, __x, __t, __m, __n = n;	\
+		unsigned int __c, __p, __z = 0;				\
+		/* preserve low part of n for reminder computation */	\
+		__r = __n;						\
+		/* determine number of bits to represent __b */		\
+		__p = 1 << __div64_fls(__b);				\
+		/* compute __m = ((__p << 64) + __b - 1) / __b */	\
+		__m = (~0ULL / __b) * __p;				\
+		__m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b;	\
+		/* compute __res = __m*(~0ULL/__b*__b-1)/(__p << 64) */	\
+		__x = ~0ULL / __b * __b - 1;				\
+		__res = (__m & 0xffffffff) * (__x & 0xffffffff);	\
+		__res >>= 32;						\
+		__res += (__m & 0xffffffff) * (__x >> 32);		\
+		__t = __res;						\
+		__res += (__x & 0xffffffff) * (__m >> 32);		\
+		__t = (__res < __t) ? (1ULL << 32) : 0;			\
+		__res = (__res >> 32) + __t;				\
+		__res += (__m >> 32) * (__x >> 32);			\
+		__res /= __p;						\
+		/* Now sanitize and optimize what we've got. */		\
+		if (~0ULL % (__b / (__b & -__b)) == 0) {		\
+			/* those cases can be simplified with: */	\
+			__n /= (__b & -__b);				\
+			__m = ~0ULL / (__b / (__b & -__b));		\
+			__p = 1;					\
+			__c = 1;					\
+		} else if (__res != __x / __b) {			\
+			/* We can't get away without a correction    */	\
+			/* to compensate for bit truncation errors.  */	\
+			/* To avoid it we'd need an additional bit   */	\
+			/* to represent __m which would overflow it. */	\
+			/* Instead we do m=p/b and n/b=(n*m+m)/p.    */	\
+			__c = 1;					\
+			/* Compute __m = (__p << 64) / __b */		\
+			__m = (~0ULL / __b) * __p;			\
+			__m += ((~0ULL % __b + 1) * __p) / __b;		\
+		} else {						\
+			/* Reduce __m/__p, and try to clear bit 31   */	\
+			/* of __m when possible otherwise that'll    */	\
+			/* need extra overflow handling later.       */	\
+			unsigned int __bits = -(__m & -__m);		\
+			__bits |= __m >> 32;				\
+			__bits = (~__bits) << 1;			\
+			/* If __bits == 0 then setting bit 31 is     */	\
+			/* unavoidable.  Simply apply the maximum    */	\
+			/* possible reduction in that case.          */	\
+			/* Otherwise the MSB of __bits indicates the */	\
+			/* best reduction we should apply.           */	\
+			if (!__bits) {					\
+				__p /= (__m & -__m);			\
+				__m /= (__m & -__m);			\
+			} else {					\
+				__p >>= __div64_fls(__bits);		\
+				__m >>= __div64_fls(__bits);		\
+			}						\
+			/* No correction needed. */			\
+			__c = 0;					\
+		}							\
+		/* Now we have a combination of 2 conditions:        */	\
+		/* 1) whether or not we need a correction (__c), and */	\
+		/* 2) whether or not there might be an overflow in   */	\
+		/*    the cross product (__m & ((1<<63) | (1<<31)))  */	\
+		/* Select the best insn combination to perform the   */	\
+		/* actual __m * __n / (__p << 64) operation.         */	\
+		if (!__c) {						\
+			asm (	"umull	%Q0, %R0, %1, %Q2\n\t"		\
+				"mov	%Q0, #0"			\
+				: "=&r" (__res)				\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		} else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {	\
+			__res = __m;					\
+			asm (	"umlal	%Q0, %R0, %Q1, %Q2\n\t"		\
+				"mov	%Q0, #0"			\
+				: "+&r" (__res)				\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		} else {						\
+			asm (	"umull	%Q0, %R0, %Q1, %Q2\n\t"		\
+				"cmn	%Q0, %Q1\n\t"			\
+				"adcs	%R0, %R0, %R1\n\t"		\
+				"adc	%Q0, %3, #0"			\
+				: "=&r" (__res)				\
+				: "r" (__m), "r" (__n), "r" (__z)	\
+				: "cc" );				\
+		}							\
+		if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {		\
+			asm (	"umlal	%R0, %Q0, %R1, %Q2\n\t"		\
+				"umlal	%R0, %Q0, %Q1, %R2\n\t"		\
+				"mov	%R0, #0\n\t"			\
+				"umlal	%Q0, %R0, %R1, %R2"		\
+				: "+&r" (__res)				\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		} else {						\
+			asm (	"umlal	%R0, %Q0, %R2, %Q3\n\t"		\
+				"umlal	%R0, %1, %Q2, %R3\n\t"		\
+				"mov	%R0, #0\n\t"			\
+				"adds	%Q0, %1, %Q0\n\t"		\
+				"adc	%R0, %R0, #0\n\t"		\
+				"umlal	%Q0, %R0, %R2, %R3"		\
+				: "+&r" (__res), "+&r" (__z)		\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		}							\
+		__res /= __p;						\
+		/* The reminder can be computed with 32-bit regs     */	\
+		/* only, and gcc is good at that.                    */	\
+		{							\
+			unsigned int __res0 = __res;			\
+			unsigned int __b0 = __b;			\
+			__r -= __res0 * __b0;				\
+		}							\
+		/* BUG_ON(__r >= __b || __res * __b + __r != n); */	\
+		n = __res;						\
+	}								\
+	__r;								\
 })
 
 /* our own fls implementation to make sure constant propagation is fine */
-#define __div64_fls(bits)                                              \
-({                                                                     \
-       unsigned int __left = (bits), __nr = 0;                         \
-       if (__left & 0xffff0000) __nr += 16, __left >>= 16;             \
-       if (__left & 0x0000ff00) __nr +=  8, __left >>=  8;             \
-       if (__left & 0x000000f0) __nr +=  4, __left >>=  4;             \
-       if (__left & 0x0000000c) __nr +=  2, __left >>=  2;             \
-       if (__left & 0x00000002) __nr +=  1;                            \
-       __nr;                                                           \
+#define __div64_fls(bits)						\
+({									\
+	unsigned int __left = (bits), __nr = 0;				\
+	if (__left & 0xffff0000) __nr += 16, __left >>= 16;		\
+	if (__left & 0x0000ff00) __nr +=  8, __left >>=  8;		\
+	if (__left & 0x000000f0) __nr +=  4, __left >>=  4;		\
+	if (__left & 0x0000000c) __nr +=  2, __left >>=  2;		\
+	if (__left & 0x00000002) __nr +=  1;				\
+	__nr;								\
 })
 
 #endif
diff -r 7fd8f10cfd3e -r 63e88a26e1ef xen/include/asm-arm/numa.h
--- a/xen/include/asm-arm/numa.h	Mon Feb 13 17:03:44 2012 +0000
+++ b/xen/include/asm-arm/numa.h	Mon Feb 13 17:26:08 2012 +0000
@@ -3,7 +3,7 @@
 
 /* Fake one node for now... */
 #define cpu_to_node(cpu) 0
-#define node_to_cpumask(node)  (cpu_online_map)
+#define node_to_cpumask(node)	(cpu_online_map)
 
 static inline __attribute__((pure)) int phys_to_nid(paddr_t addr)
 {

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

From xen-users-bounces@lists.xensource.com Tue Feb 14 09:41:57 2012
Return-path: <xen-users-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Feb 2012 09:41:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-users-bounces@lists.xensource.com>)
	id 1RxEsn-0002hq-Q0; Tue, 14 Feb 2012 09:41:09 +0000
Received: from mail174.messagelabs.com ([85.158.138.51])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <hwang.jinho@gmail.com>) id 1Rx2mz-0000CI-Rg
	for xen-users@lists.xensource.com; Mon, 13 Feb 2012 20:46:25 +0000
X-Env-Sender: hwang.jinho@gmail.com
X-Msg-Ref: server-4.tower-174.messagelabs.com!1329165970!13196884!1
X-Originating-IP: [209.85.214.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24990 invoked from network); 13 Feb 2012 20:46:11 -0000
Received: from mail-tul01m020-f171.google.com (HELO
	mail-tul01m020-f171.google.com) (209.85.214.171)
	by server-4.tower-174.messagelabs.com with RC4-SHA encrypted SMTP;
	13 Feb 2012 20:46:11 -0000
Received: by obcuy19 with SMTP id uy19so26975704obc.30
	for <xen-users@lists.xensource.com>;
	Mon, 13 Feb 2012 12:46:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=mime-version:from:date:message-id:subject:to:content-type;
	bh=jZBbIaRVemOp961G3js88R+JX7+7dncuWGr7djvqVVg=;
	b=R2lJGqWPvT0pjqye1kupsC9K+YRUoRQ7XytASK+NKgMO6lACOww+kqkpSFGF28HwM6
	Zf6In95FV6Oi0brgeJN5CIcsJIyHEVNq6GJCxCtMG8El8FHm+QIkGJ286lkvT5c7XJa3
	yFu6z5z3e7mV0lYPELyVmpDkUULd6/jxlmK4g=
Received: by 10.182.192.8 with SMTP id hc8mr13269357obc.25.1329165969741; Mon,
	13 Feb 2012 12:46:09 -0800 (PST)
MIME-Version: 1.0
Received: by 10.60.39.8 with HTTP; Mon, 13 Feb 2012 12:45:48 -0800 (PST)
From: jinho hwang <hwang.jinho@gmail.com>
Date: Mon, 13 Feb 2012 15:45:48 -0500
Message-ID: <CAPQGAnGPy9zt0+qq77yP0S4po5WnuuY4oJ6DWMBsRCJSZB4WTA@mail.gmail.com>
To: xen-users@lists.xensource.com
Content-Type: multipart/mixed; boundary=14dae9399dad795a2a04b8de9167
X-Mailman-Approved-At: Tue, 14 Feb 2012 09:41:08 +0000
Subject: [Xen-users]  error getting socket: invalid argument
X-BeenThere: xen-users@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen user discussion <xen-users.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-users>,
	<mailto:xen-users-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-users@lists.xensource.com>
List-Help: <mailto:xen-users-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>,
	<mailto:xen-users-request@lists.xensource.com?subject=subscribe>
Sender: xen-users-bounces@lists.xensource.com
Errors-To: xen-users-bounces@lists.xensource.com

--14dae9399dad795a2a04b8de9167
Content-Type: multipart/alternative; boundary=14dae9399dad795a2404b8de9165

--14dae9399dad795a2404b8de9165
Content-Type: text/plain; charset=ISO-8859-1

Hi All,

I encountered some problems with installation of old Xen-3.4.1 and Linux
kernel 2.6.18.8 downloaded from the Xen web site. I installed the base
Ubuntu 10.04 LTS (linux kernel 2.6.32.44-server) and tried to install them.
As far as I can see from the screen, an error comes from udev, saying error
initializing netlink socket. It turns out that
udev_monitor_new_from_netlink: error getting socket: Invalid argument.
wait-for-root[636]: segfault at ****. At last it shows Segmentation fault.

Does anyone can give me advices on this?

I attach the screen picture.

Thank you,

Jinho

--14dae9399dad795a2404b8de9165
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi All,=A0<div><br></div><div>I encountered some problems with installation=
 of old Xen-3.4.1 and Linux kernel 2.6.18.8 downloaded from the Xen web sit=
e. I installed the base Ubuntu 10.04 LTS (linux kernel 2.6.32.44-server) an=
d tried to install them. As far as I can see from the screen, an error come=
s from udev, saying error initializing netlink socket. It turns out that ud=
ev_monitor_new_from_netlink: error getting socket: Invalid argument. wait-f=
or-root[636]: segfault at ****. At last it shows Segmentation fault.
</div><div><br></div><div>Does anyone can give me advices on this?</div><di=
v><br></div><div>I attach the screen picture.=A0</div><div><br></div><div>T=
hank you,=A0</div><div><br></div><div>Jinho</div>

--14dae9399dad795a2404b8de9165--
--14dae9399dad795a2a04b8de9167
Content-Type: image/jpeg; name="IMG_20120213_135904.jpg"
Content-Disposition: attachment; filename="IMG_20120213_135904.jpg"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gylz2lf30

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
5VGAwzkn2qby1wPTqOa9Xi/ZK+KScDRrN8dl1K3P/s9WD+yh8VF4/wCEbjcAZGy/gOR/33WDxeH/
AJkCbb2PGWt0PBzknmoZERGGM9fzr2V/2UfisOB4SlJ64W5h/wDiqpt+yp8WTKQvgy7Yr3WSM/8A
s1NYqg38aE010PIQo56nnHFPVATwevrwa9aP7KPxbjOf+EE1FmwDhTGcj/vqoH/Ze+LMZUN8P9WB
POFjB/kaHiaD2mvvJabtdM8uCbcZbPtT0VcYzk9+5NenH9mT4rRbQ/w+1sDbkbbUtkd6p3H7PvxL
hjaRvAOvKo/iFk5x+QrKWIoy+0r+ondbnmGpr50trbDOXkAxiuoslXyeMngsM5PU1W1HwL4g0XVk
m1TRL/TEgDMxvbdosHHH3hVyIrGioy8kYyO1cNWak9NTnTaZOuAck4Y9RT1RQSCcj1qE7W28YGOm
KlyDu6YHWsWxqXckhmUN8wyBUXiieI6dCiZ+dycHinIFDBiBz0Jwfzqh4p5W3jCgYTOePzpq1xu+
xzrMo5VsBegJpDIhAx6cjrTmjLkcAjnnGKaWKKeBj2HWtVJWsY6tn//Z/9sAhAADAgIDAgIDAwMD
BAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUUAQME
BAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
FBQUFBT/wAARCAeYCiADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL
EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoW
FxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImK
kpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy
8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAEC
AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE
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
nBTvqYzXtIucuqt+J//Z
--14dae9399dad795a2a04b8de9167
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-users mailing list
Xen-users@lists.xensource.com
http://lists.xensource.com/xen-users
--14dae9399dad795a2a04b8de9167--


From xen-changelog-bounces@lists.xensource.com Tue Feb 14 23:55:37 2012
Return-path: <xen-changelog-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Feb 2012 23:55:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-changelog-bounces@lists.xensource.com>)
	id 1RxSDh-0005DY-Ik; Tue, 14 Feb 2012 23:55:37 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RxSDf-0005Ap-32
	for xen-changelog@lists.xensource.com; Tue, 14 Feb 2012 23:55:35 +0000
Received: from [85.158.139.83:51662] by server-8.bemta-5.messagelabs.com id
	AE/4D-09797-674FA3F4; Tue, 14 Feb 2012 23:55:34 +0000
X-Env-Sender: xen@xenbits.xen.org
X-Msg-Ref: server-16.tower-182.messagelabs.com!1329263727!7752254!1
X-Originating-IP: [50.57.168.107]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 31524 invoked from network); 14 Feb 2012 23:55:28 -0000
Received: from mail.xen.org (HELO mail.xen.org) (50.57.168.107)
	by server-16.tower-182.messagelabs.com with AES256-SHA encrypted SMTP;
	14 Feb 2012 23:55:28 -0000
Received: from xenbits.xen.org ([50.57.170.242])
	by mail.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RxSDX-0007ix-Eu
	for xen-changelog@lists.xensource.com; Tue, 14 Feb 2012 23:55:27 +0000
Received: from xen by xenbits.xen.org with local (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RxSDX-0002Jh-AC
	for xen-changelog@lists.xensource.com; Tue, 14 Feb 2012 23:55:27 +0000
Message-Id: <E1RxSDX-0002Jh-AC@xenbits.xen.org>
Date: Tue, 14 Feb 2012 23:55:26 +0000
From: Xen patchbot-unstable <patchbot@xen.org>
To: xen-changelog@lists.xensource.com
Subject: [Xen-changelog] [xen-unstable] arm: fixup hard tabs
X-BeenThere: xen-changelog@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: xen-devel@lists.xensource.com
List-Id: BK change log <xen-changelog.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-changelog>, 
	<mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xensource.com>
List-Help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>,
	<mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-changelog-bounces@lists.xensource.com
Errors-To: xen-changelog-bounces@lists.xensource.com

# HG changeset patch
# User Ian Campbell <ian.campbell@citrix.com>
# Date 1329153968 0
# Node ID 0ba87b95e80bae059fe70b4b117dcc409f2471ef
# Parent  f3d137e3e6c79ea9c66e7b224c9041404e753149
arm: fixup hard tabs

Unfortunately the tool I was using to apply patches mangles hard tabs. This
patch corrects this in the effected files (which is fortunately only a subset
of .S or files imported from Linux).

This commit fixes this error such that the tree represents the state it would
have been in had I correctly committed what I was sent.

"git diff" and "git diff -b" vs. Stefano's v6 branch now contain the same
output -- i.e. only the intervening development

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---


diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/dummy.S
--- a/xen/arch/arm/dummy.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/dummy.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,13 +1,13 @@
 /* Nothing is mapped at 1G, for the moment */
 #define DUMMY(x) \
-       .globl x; \
-x:     .word 0xe7f000f0
-/* x:  mov r0, #0x40000000 ; str r0, [r0]; b x */
+	.globl x; \
+x:	.word 0xe7f000f0
+/* x:	mov r0, #0x40000000 ; str r0, [r0]; b x */
 
 #define  NOP(x) \
-       .globl x; \
-x:     mov pc, lr
-
+	.globl x; \
+x:	mov pc, lr
+	
 DUMMY(alloc_pirq_struct);
 DUMMY(alloc_vcpu_guest_context);
 DUMMY(arch_do_domctl);
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/entry.S
--- a/xen/arch/arm/entry.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/entry.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,69 +1,69 @@
 #include <xen/config.h>
 #include <asm/asm_defns.h>
 
-#define SAVE_ONE_BANKED(reg)   mrs r11, reg; str r11, [sp, #UREGS_##reg]
-#define RESTORE_ONE_BANKED(reg)        ldr r11, [sp, #UREGS_##reg]; msr reg, r11
+#define SAVE_ONE_BANKED(reg)	mrs r11, reg; str r11, [sp, #UREGS_##reg]
+#define RESTORE_ONE_BANKED(reg)	ldr r11, [sp, #UREGS_##reg]; msr reg, r11
 
 #define SAVE_BANKED(mode) \
-       SAVE_ONE_BANKED(SP_##mode) ; SAVE_ONE_BANKED(LR_##mode) ; SAVE_ONE_BANKED(SPSR_##mode)
+	SAVE_ONE_BANKED(SP_##mode) ; SAVE_ONE_BANKED(LR_##mode) ; SAVE_ONE_BANKED(SPSR_##mode)
 
 #define RESTORE_BANKED(mode) \
-       RESTORE_ONE_BANKED(SP_##mode) ; RESTORE_ONE_BANKED(LR_##mode) ; RESTORE_ONE_BANKED(SPSR_##mode)
+	RESTORE_ONE_BANKED(SP_##mode) ; RESTORE_ONE_BANKED(LR_##mode) ; RESTORE_ONE_BANKED(SPSR_##mode)
 
-#define SAVE_ALL                                                                                       \
-       sub sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */                                      \
-       push {r0-r12}; /* Save R0-R12 */                                                                \
-                                                                                                       \
-       mrs r11, ELR_hyp;               /* ELR_hyp is return address. */                                \
-       str r11, [sp, #UREGS_pc];                                                                       \
-                                                                                                       \
-       str lr, [sp, #UREGS_lr];                                                                        \
-                                                                                                       \
-       add r11, sp, #UREGS_kernel_sizeof+4;                                                            \
-       str r11, [sp, #UREGS_sp];                                                                       \
-                                                                                                       \
-       mrs r11, SPSR_hyp;                                                                              \
-       str r11, [sp, #UREGS_cpsr];                                                                     \
-       and r11, #PSR_MODE_MASK;                                                                        \
-       cmp r11, #PSR_MODE_HYP;                                                                         \
-       blne save_guest_regs
+#define SAVE_ALL											\
+	sub sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */					\
+	push {r0-r12}; /* Save R0-R12 */								\
+													\
+	mrs r11, ELR_hyp;		/* ELR_hyp is return address. */				\
+	str r11, [sp, #UREGS_pc];									\
+													\
+	str lr, [sp, #UREGS_lr];									\
+													\
+	add r11, sp, #UREGS_kernel_sizeof+4;								\
+	str r11, [sp, #UREGS_sp];									\
+													\
+	mrs r11, SPSR_hyp;										\
+	str r11, [sp, #UREGS_cpsr];									\
+	and r11, #PSR_MODE_MASK;									\
+	cmp r11, #PSR_MODE_HYP;										\
+	blne save_guest_regs
 
 save_guest_regs:
-       ldr r11, [sp, #UREGS_lr]
-       str r11, [sp, #UREGS_LR_usr]
-       ldr r11, =0xffffffff  /* Clobber SP which is only valid for hypervisor frames. */
-       str r11, [sp, #UREGS_sp]
-       SAVE_ONE_BANKED(SP_usr)
-       SAVE_BANKED(svc)
-       SAVE_BANKED(abt)
-       SAVE_BANKED(und)
-       SAVE_BANKED(irq)
-       SAVE_BANKED(fiq)
-       SAVE_ONE_BANKED(R8_fiq); SAVE_ONE_BANKED(R9_fiq); SAVE_ONE_BANKED(R10_fiq)
-       SAVE_ONE_BANKED(R11_fiq); SAVE_ONE_BANKED(R12_fiq);
-       mov pc, lr
+	ldr r11, [sp, #UREGS_lr]
+	str r11, [sp, #UREGS_LR_usr]
+	ldr r11, =0xffffffff  /* Clobber SP which is only valid for hypervisor frames. */
+	str r11, [sp, #UREGS_sp]
+	SAVE_ONE_BANKED(SP_usr)
+	SAVE_BANKED(svc)
+	SAVE_BANKED(abt)
+	SAVE_BANKED(und)
+	SAVE_BANKED(irq)
+	SAVE_BANKED(fiq)
+	SAVE_ONE_BANKED(R8_fiq); SAVE_ONE_BANKED(R9_fiq); SAVE_ONE_BANKED(R10_fiq)
+	SAVE_ONE_BANKED(R11_fiq); SAVE_ONE_BANKED(R12_fiq);
+	mov pc, lr
 
-#define DEFINE_TRAP_ENTRY(trap)                                                                                \
-       ALIGN;                                                                                          \
-trap_##trap:                                                                                           \
-       SAVE_ALL;                                                                                       \
-       adr lr, return_from_trap;                                                                       \
-       mov r0, sp;                                                                                     \
-       mov r11, sp;                                                                                    \
-       bic sp, #7; /* Align the stack pointer (noop on guest trap) */                                  \
-       b do_trap_##trap
+#define DEFINE_TRAP_ENTRY(trap)										\
+	ALIGN;												\
+trap_##trap:												\
+	SAVE_ALL;											\
+	adr lr, return_from_trap;									\
+	mov r0, sp;											\
+	mov r11, sp;											\
+	bic sp, #7; /* Align the stack pointer (noop on guest trap) */					\
+	b do_trap_##trap
 
 .globl hyp_traps_vector
-       .align 5
+	.align 5
 hyp_traps_vector:
-       .word 0                         /* 0x00 - Reset */
-       b trap_undefined_instruction    /* 0x04 - Undefined Instruction */
-       b trap_supervisor_call          /* 0x08 - Supervisor Call */
-       b trap_prefetch_abort           /* 0x0c - Prefetch Abort */
-       b trap_data_abort               /* 0x10 - Data Abort */
-       b trap_hypervisor               /* 0x14 - Hypervisor */
-       b trap_irq                      /* 0x18 - IRQ */
-       b trap_fiq                      /* 0x1c - FIQ */
+	.word 0				/* 0x00 - Reset */
+	b trap_undefined_instruction	/* 0x04 - Undefined Instruction */
+	b trap_supervisor_call		/* 0x08 - Supervisor Call */
+	b trap_prefetch_abort		/* 0x0c - Prefetch Abort */
+	b trap_data_abort		/* 0x10 - Data Abort */
+	b trap_hypervisor		/* 0x14 - Hypervisor */
+	b trap_irq			/* 0x18 - IRQ */
+	b trap_fiq			/* 0x1c - FIQ */
 
 DEFINE_TRAP_ENTRY(undefined_instruction)
 DEFINE_TRAP_ENTRY(supervisor_call)
@@ -74,34 +74,34 @@
 DEFINE_TRAP_ENTRY(fiq)
 
 ENTRY(return_from_trap)
-       ldr r11, [sp, #UREGS_cpsr]
-       and r11, #PSR_MODE_MASK
-       cmp r11, #PSR_MODE_HYP
-       beq return_to_hypervisor
+	ldr r11, [sp, #UREGS_cpsr]
+	and r11, #PSR_MODE_MASK
+	cmp r11, #PSR_MODE_HYP
+	beq return_to_hypervisor
 
 ENTRY(return_to_guest)
-       mov r11, sp
-       bic sp, #7 /* Align the stack pointer */
-       bl leave_hypervisor_tail
-       ldr r11, [sp, #UREGS_pc]
-       msr ELR_hyp, r11
-       ldr r11, [sp, #UREGS_cpsr]
-       msr SPSR_hyp, r11
-       RESTORE_ONE_BANKED(SP_usr)
-       RESTORE_BANKED(svc)
-       RESTORE_BANKED(abt)
-       RESTORE_BANKED(und)
-       RESTORE_BANKED(irq)
-       RESTORE_BANKED(fiq)
-       RESTORE_ONE_BANKED(R8_fiq); RESTORE_ONE_BANKED(R9_fiq); RESTORE_ONE_BANKED(R10_fiq)
-       RESTORE_ONE_BANKED(R11_fiq); RESTORE_ONE_BANKED(R12_fiq);
-       ldr lr, [sp, #UREGS_LR_usr]
-       pop {r0-r12}
-       add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
-       eret
+	mov r11, sp
+	bic sp, #7 /* Align the stack pointer */
+	bl leave_hypervisor_tail
+	ldr r11, [sp, #UREGS_pc]
+	msr ELR_hyp, r11
+	ldr r11, [sp, #UREGS_cpsr]
+	msr SPSR_hyp, r11
+	RESTORE_ONE_BANKED(SP_usr)
+	RESTORE_BANKED(svc)
+	RESTORE_BANKED(abt)
+	RESTORE_BANKED(und)
+	RESTORE_BANKED(irq)
+	RESTORE_BANKED(fiq)
+	RESTORE_ONE_BANKED(R8_fiq); RESTORE_ONE_BANKED(R9_fiq); RESTORE_ONE_BANKED(R10_fiq)
+	RESTORE_ONE_BANKED(R11_fiq); RESTORE_ONE_BANKED(R12_fiq);
+	ldr lr, [sp, #UREGS_LR_usr]
+	pop {r0-r12}
+	add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
+	eret
 
 ENTRY(return_to_hypervisor)
-       ldr lr, [sp, #UREGS_lr]
-       pop {r0-r12}
-       add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
-       eret
+	ldr lr, [sp, #UREGS_lr]
+	pop {r0-r12}
+	add sp, #(UREGS_R8_fiq - UREGS_sp); /* SP, LR, SPSR, PC */
+	eret
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/head.S
--- a/xen/arch/arm/head.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/head.S	Mon Feb 13 17:26:08 2012 +0000
@@ -26,281 +26,281 @@
  * Clobbers r0-r3. */
 #ifdef EARLY_UART_ADDRESS
 #define PRINT(_s)       \
-       adr   r0, 98f ; \
-       bl    puts    ; \
-       b     99f     ; \
-98:    .asciz _s     ; \
-       .align 2      ; \
+	adr   r0, 98f ; \
+	bl    puts    ; \
+	b     99f     ; \
+98:	.asciz _s     ; \
+	.align 2      ; \
 99:
 #else
 #define PRINT(s)
 #endif
 
-       .arm
+	.arm
 
-       /* This must be the very first address in the loaded image.
-        * It should be linked at XEN_VIRT_START, and loaded at any
-        * 2MB-aligned address.  All of text+data+bss must fit in 2MB,
-        * or the initial pagetable code below will need adjustment. */
-       .global start
+	/* This must be the very first address in the loaded image.
+	 * It should be linked at XEN_VIRT_START, and loaded at any
+	 * 2MB-aligned address.  All of text+data+bss must fit in 2MB,
+	 * or the initial pagetable code below will need adjustment. */
+	.global start
 start:
-       cpsid aif                    /* Disable all interrupts */
+	cpsid aif                    /* Disable all interrupts */
 
-       /* Save the bootloader arguments in less-clobberable registers */
-       mov   r7, r1                 /* r7 := ARM-linux machine type */
-       mov   r8, r2                 /* r8 := ATAG base address */
+	/* Save the bootloader arguments in less-clobberable registers */
+	mov   r7, r1                 /* r7 := ARM-linux machine type */
+	mov   r8, r2                 /* r8 := ATAG base address */
 
-       /* Find out where we are */
-       ldr   r0, =start
-       adr   r9, start              /* r9  := paddr (start) */
-       sub   r10, r9, r0            /* r10 := phys-offset */
+	/* Find out where we are */
+	ldr   r0, =start
+	adr   r9, start              /* r9  := paddr (start) */
+	sub   r10, r9, r0            /* r10 := phys-offset */
 
-        /* Using the DTB in the .dtb section? */
+	/* Using the DTB in the .dtb section? */
 #ifdef CONFIG_DTB_FILE
-        ldr   r8, =_sdtb
-        add   r8, r10                /* r8 := paddr(DTB) */
+	ldr   r8, =_sdtb
+	add   r8, r10                /* r8 := paddr(DTB) */
 #endif
 
 #ifdef EARLY_UART_ADDRESS
-       /* Say hello */
-       ldr   r11, =EARLY_UART_ADDRESS  /* r11 := UART base address */
-       bl    init_uart
+	/* Say hello */
+	ldr   r11, =EARLY_UART_ADDRESS  /* r11 := UART base address */
+	bl    init_uart
 #endif
 
-       /* Check that this CPU has Hyp mode */
-       mrc   CP32(r0, ID_PFR1)
-       and   r0, r0, #0xf000        /* Bits 12-15 define virt extensions */
-       teq   r0, #0x1000            /* Must == 0x1 or may be incompatible */
-       beq   1f
-       bl    putn
-       PRINT("- CPU doesn't support the virtualization extensions -\r\n")
-       b     fail
+	/* Check that this CPU has Hyp mode */
+	mrc   CP32(r0, ID_PFR1)
+	and   r0, r0, #0xf000        /* Bits 12-15 define virt extensions */
+	teq   r0, #0x1000            /* Must == 0x1 or may be incompatible */
+	beq   1f
+	bl    putn
+	PRINT("- CPU doesn't support the virtualization extensions -\r\n")
+	b     fail
 1:
-       /* Check if we're already in it */
-       mrs   r0, cpsr
-       and   r0, r0, #0x1f          /* Mode is in the low 5 bits of CPSR */
-       teq   r0, #0x1a              /* Hyp Mode? */
-       bne   1f
-       PRINT("- Started in Hyp mode -\r\n")
-       b     hyp
+	/* Check if we're already in it */
+	mrs   r0, cpsr
+	and   r0, r0, #0x1f          /* Mode is in the low 5 bits of CPSR */
+	teq   r0, #0x1a              /* Hyp Mode? */
+	bne   1f
+	PRINT("- Started in Hyp mode -\r\n")
+	b     hyp
 1:
-       /* Otherwise, it must have been Secure Supervisor mode */
-       mrc   CP32(r0, SCR)
-       tst   r0, #0x1               /* Not-Secure bit set? */
-       beq   1f
-       PRINT("- CPU is not in Hyp mode or Secure state -\r\n")
-       b     fail
+	/* Otherwise, it must have been Secure Supervisor mode */
+	mrc   CP32(r0, SCR)
+	tst   r0, #0x1               /* Not-Secure bit set? */
+	beq   1f
+	PRINT("- CPU is not in Hyp mode or Secure state -\r\n")
+	b     fail
 1:
-       /* OK, we're in Secure state. */
-       PRINT("- Started in Secure state -\r\n- Entering Hyp mode -\r\n")
+	/* OK, we're in Secure state. */
+	PRINT("- Started in Secure state -\r\n- Entering Hyp mode -\r\n")
 
-       /* Dance into Hyp mode */
-       cpsid aif, #0x16             /* Enter Monitor mode */
-       mrc   CP32(r0, SCR)
-       orr   r0, r0, #0x100         /* Set HCE */
-       orr   r0, r0, #0xb1          /* Set SCD, AW, FW and NS */
-       bic   r0, r0, #0xe           /* Clear EA, FIQ and IRQ */
-       mcr   CP32(r0, SCR)
-       /* Ugly: the system timer's frequency register is only
-        * programmable in Secure state.  Since we don't know where its
-        * memory-mapped control registers live, we can't find out the
-        * right frequency.  Use the VE model's default frequency here. */
-       ldr   r0, =0x5f5e100         /* 100 MHz */
-       mcr   CP32(r0, CNTFRQ)
-       ldr   r0, =0x40c00           /* SMP, c11, c10 in non-secure mode */
-       mcr   CP32(r0, NSACR)
-       /* Continuing ugliness: Set up the GIC so NS state owns interrupts */
-       mov   r0, #GIC_BASE_ADDRESS
-       add   r0, r0, #GIC_DR_OFFSET
-       mov   r1, #0
-       str   r1, [r0]               /* Disable delivery in the distributor */
-       add   r0, r0, #0x80          /* GICD_IGROUP0 */
-       mov   r2, #0xffffffff        /* All interrupts to group 1 */
-       str   r2, [r0]
-       str   r2, [r0, #4]
-       str   r2, [r0, #8]
-       /* Must drop priority mask below 0x80 before entering NS state */
-       mov   r0, #GIC_BASE_ADDRESS
-       add   r0, r0, #GIC_CR_OFFSET
-       ldr   r1, =0xff
-       str   r1, [r0, #0x4]         /* -> GICC_PMR */
-       /* Reset a few config registers */
-       mov   r0, #0
-       mcr   CP32(r0, FCSEIDR)
-       mcr   CP32(r0, CONTEXTIDR)
-       /* FIXME: ought to reset some other NS control regs here */
-       adr   r1, 1f
-       adr   r0, hyp                /* Store paddr (hyp entry point) */
-       str   r0, [r1]               /* where we can use it for RFE */
-       isb                          /* Ensure we see the stored target address */
-       rfeia r1                     /* Enter Hyp mode */
+	/* Dance into Hyp mode */
+	cpsid aif, #0x16             /* Enter Monitor mode */
+	mrc   CP32(r0, SCR)
+	orr   r0, r0, #0x100         /* Set HCE */
+	orr   r0, r0, #0xb1          /* Set SCD, AW, FW and NS */
+	bic   r0, r0, #0xe           /* Clear EA, FIQ and IRQ */
+	mcr   CP32(r0, SCR)
+	/* Ugly: the system timer's frequency register is only
+	 * programmable in Secure state.  Since we don't know where its
+	 * memory-mapped control registers live, we can't find out the
+	 * right frequency.  Use the VE model's default frequency here. */
+	ldr   r0, =0x5f5e100         /* 100 MHz */
+	mcr   CP32(r0, CNTFRQ)
+	ldr   r0, =0x40c00           /* SMP, c11, c10 in non-secure mode */
+	mcr   CP32(r0, NSACR)
+	/* Continuing ugliness: Set up the GIC so NS state owns interrupts */
+	mov   r0, #GIC_BASE_ADDRESS
+	add   r0, r0, #GIC_DR_OFFSET
+	mov   r1, #0
+	str   r1, [r0]               /* Disable delivery in the distributor */
+	add   r0, r0, #0x80          /* GICD_IGROUP0 */
+	mov   r2, #0xffffffff        /* All interrupts to group 1 */
+	str   r2, [r0]
+	str   r2, [r0, #4]
+	str   r2, [r0, #8]
+	/* Must drop priority mask below 0x80 before entering NS state */
+	mov   r0, #GIC_BASE_ADDRESS
+	add   r0, r0, #GIC_CR_OFFSET
+	ldr   r1, =0xff
+	str   r1, [r0, #0x4]         /* -> GICC_PMR */
+	/* Reset a few config registers */
+	mov   r0, #0
+	mcr   CP32(r0, FCSEIDR)
+	mcr   CP32(r0, CONTEXTIDR)
+	/* FIXME: ought to reset some other NS control regs here */
+	adr   r1, 1f
+	adr   r0, hyp                /* Store paddr (hyp entry point) */
+	str   r0, [r1]               /* where we can use it for RFE */
+	isb                          /* Ensure we see the stored target address */
+	rfeia r1                     /* Enter Hyp mode */
 
-1:     .word 0                      /* PC to enter Hyp mode at */
-       .word 0x000001da             /* CPSR: LE, Abort/IRQ/FIQ off, Hyp */
+1:	.word 0                      /* PC to enter Hyp mode at */
+	.word 0x000001da             /* CPSR: LE, Abort/IRQ/FIQ off, Hyp */
 
 hyp:
-       PRINT("- Setting up control registers -\r\n")
+	PRINT("- Setting up control registers -\r\n")
 
-       /* Set up memory attribute type tables */
-       ldr   r0, =MAIR0VAL
-       ldr   r1, =MAIR1VAL
-       mcr   CP32(r0, MAIR0)
-       mcr   CP32(r1, MAIR1)
-       mcr   CP32(r0, HMAIR0)
-       mcr   CP32(r1, HMAIR1)
+	/* Set up memory attribute type tables */
+	ldr   r0, =MAIR0VAL
+	ldr   r1, =MAIR1VAL
+	mcr   CP32(r0, MAIR0)
+	mcr   CP32(r1, MAIR1)
+	mcr   CP32(r0, HMAIR0)
+	mcr   CP32(r1, HMAIR1)
 
-       /* Set up the HTCR:
-        * PT walks use Outer-Shareable accesses,
-        * PT walks are write-back, no-write-allocate in both cache levels,
-        * Full 32-bit address space goes through this table. */
-       ldr   r0, =0x80002500
-       mcr   CP32(r0, HTCR)
+	/* Set up the HTCR:
+	 * PT walks use Outer-Shareable accesses,
+	 * PT walks are write-back, no-write-allocate in both cache levels,
+	 * Full 32-bit address space goes through this table. */
+	ldr   r0, =0x80002500
+	mcr   CP32(r0, HTCR)
 
-       /* Set up the HSCTLR:
-        * Exceptions in LE ARM,
-        * Low-latency IRQs disabled,
-        * Write-implies-XN disabled (for now),
-        * I-cache and d-cache enabled,
-        * Alignment checking enabled,
-        * MMU translation disabled (for now). */
-       ldr   r0, =(HSCTLR_BASE|SCTLR_A|SCTLR_C)
-       mcr   CP32(r0, HSCTLR)
+	/* Set up the HSCTLR:
+	 * Exceptions in LE ARM,
+	 * Low-latency IRQs disabled,
+	 * Write-implies-XN disabled (for now),
+	 * I-cache and d-cache enabled,
+	 * Alignment checking enabled,
+	 * MMU translation disabled (for now). */
+	ldr   r0, =(HSCTLR_BASE|SCTLR_A|SCTLR_C)
+	mcr   CP32(r0, HSCTLR)
 
-       /* Write Xen's PT's paddr into the HTTBR */
-       ldr   r4, =xen_pgtable
-       add   r4, r4, r10            /* r4 := paddr (xen_pagetable) */
-       mov   r5, #0                 /* r4:r5 is paddr (xen_pagetable) */
-       mcrr  CP64(r4, r5, HTTBR)
+	/* Write Xen's PT's paddr into the HTTBR */
+	ldr   r4, =xen_pgtable
+	add   r4, r4, r10            /* r4 := paddr (xen_pagetable) */
+	mov   r5, #0                 /* r4:r5 is paddr (xen_pagetable) */
+	mcrr  CP64(r4, r5, HTTBR)
 
-       /* Build the baseline idle pagetable's first-level entries */
-       ldr   r1, =xen_second
-       add   r1, r1, r10            /* r1 := paddr (xen_second) */
-       mov   r3, #0x0
-       orr   r2, r1, #0xe00         /* r2:r3 := table map of xen_second */
-       orr   r2, r2, #0x07f         /* (+ rights for linear PT) */
-       strd  r2, r3, [r4, #0]       /* Map it in slot 0 */
-       add   r2, r2, #0x1000
-       strd  r2, r3, [r4, #8]       /* Map 2nd page in slot 1 */
-       add   r2, r2, #0x1000
-       strd  r2, r3, [r4, #16]      /* Map 3rd page in slot 2 */
-       add   r2, r2, #0x1000
-       strd  r2, r3, [r4, #24]      /* Map 4th page in slot 3 */
+	/* Build the baseline idle pagetable's first-level entries */
+	ldr   r1, =xen_second
+	add   r1, r1, r10            /* r1 := paddr (xen_second) */
+	mov   r3, #0x0
+	orr   r2, r1, #0xe00         /* r2:r3 := table map of xen_second */
+	orr   r2, r2, #0x07f         /* (+ rights for linear PT) */
+	strd  r2, r3, [r4, #0]       /* Map it in slot 0 */
+	add   r2, r2, #0x1000
+	strd  r2, r3, [r4, #8]       /* Map 2nd page in slot 1 */
+	add   r2, r2, #0x1000
+	strd  r2, r3, [r4, #16]      /* Map 3rd page in slot 2 */
+	add   r2, r2, #0x1000
+	strd  r2, r3, [r4, #24]      /* Map 4th page in slot 3 */
 
-       /* Now set up the second-level entries */
-       orr   r2, r9, #0xe00
-       orr   r2, r2, #0x07d         /* r2:r3 := 2MB normal map of Xen */
-       mov   r4, r9, lsr #18        /* Slot for paddr(start) */
-       strd  r2, r3, [r1, r4]       /* Map Xen there */
-       ldr   r4, =start
-       lsr   r4, #18                /* Slot for vaddr(start) */
-       strd  r2, r3, [r1, r4]       /* Map Xen there too */
+	/* Now set up the second-level entries */
+	orr   r2, r9, #0xe00
+	orr   r2, r2, #0x07d         /* r2:r3 := 2MB normal map of Xen */
+	mov   r4, r9, lsr #18        /* Slot for paddr(start) */
+	strd  r2, r3, [r1, r4]       /* Map Xen there */
+	ldr   r4, =start
+	lsr   r4, #18                /* Slot for vaddr(start) */
+	strd  r2, r3, [r1, r4]       /* Map Xen there too */
 #ifdef EARLY_UART_ADDRESS
-       ldr   r3, =(1<<(54-32))      /* NS for device mapping */
-       lsr   r2, r11, #21
-       lsl   r2, r2, #21            /* 2MB-aligned paddr of UART */
-       orr   r2, r2, #0xe00
-       orr   r2, r2, #0x071         /* r2:r3 := 2MB dev map including UART */
-       add   r4, r4, #8
-       strd  r2, r3, [r1, r4]       /* Map it in the fixmap's slot */
+	ldr   r3, =(1<<(54-32))      /* NS for device mapping */
+	lsr   r2, r11, #21
+	lsl   r2, r2, #21            /* 2MB-aligned paddr of UART */
+	orr   r2, r2, #0xe00
+	orr   r2, r2, #0x071         /* r2:r3 := 2MB dev map including UART */
+	add   r4, r4, #8
+	strd  r2, r3, [r1, r4]       /* Map it in the fixmap's slot */
 #else
-       add   r4, r4, #8             /* Skip over unused fixmap slot */
+	add   r4, r4, #8             /* Skip over unused fixmap slot */
 #endif
-       mov   r3, #0x0
-       lsr   r2, r8, #21
-       lsl   r2, r2, #21            /* 2MB-aligned paddr of DTB */
-       orr   r2, r2, #0xf00
-       orr   r2, r2, #0x07d         /* r2:r3 := 2MB RAM incl. DTB */
-       add   r4, r4, #8
-       strd  r2, r3, [r1, r4]       /* Map it in the early boot slot */
+	mov   r3, #0x0
+	lsr   r2, r8, #21
+	lsl   r2, r2, #21            /* 2MB-aligned paddr of DTB */
+	orr   r2, r2, #0xf00
+	orr   r2, r2, #0x07d         /* r2:r3 := 2MB RAM incl. DTB */
+	add   r4, r4, #8
+	strd  r2, r3, [r1, r4]       /* Map it in the early boot slot */
 
-       PRINT("- Turning on paging -\r\n")
+	PRINT("- Turning on paging -\r\n")
 
-       ldr   r1, =paging            /* Explicit vaddr, not RIP-relative */
-       mrc   CP32(r0, HSCTLR)
-       orr   r0, r0, #0x1           /* Add in the MMU enable bit */
-       dsb                          /* Flush PTE writes and finish reads */
-       mcr   CP32(r0, HSCTLR)       /* now paging is enabled */
-       isb                          /* Now, flush the icache */
-       mov   pc, r1                 /* Get a proper vaddr into PC */
+	ldr   r1, =paging            /* Explicit vaddr, not RIP-relative */
+	mrc   CP32(r0, HSCTLR)
+	orr   r0, r0, #0x1           /* Add in the MMU enable bit */
+	dsb                          /* Flush PTE writes and finish reads */
+	mcr   CP32(r0, HSCTLR)       /* now paging is enabled */
+	isb                          /* Now, flush the icache */
+	mov   pc, r1                 /* Get a proper vaddr into PC */
 paging:
 
 #ifdef EARLY_UART_ADDRESS
-       /* Recover the UART address in the new address space */
-       lsl   r11, #11
-       lsr   r11, #11               /* UART base's offset from 2MB base */
-       adr   r0, start
-       add   r0, r0, #0x200000      /* vaddr of the fixmap's 2MB slot */
-       add   r11, r11, r0           /* r11 := vaddr (UART base address) */
+	/* Recover the UART address in the new address space */
+	lsl   r11, #11
+	lsr   r11, #11               /* UART base's offset from 2MB base */
+	adr   r0, start
+	add   r0, r0, #0x200000      /* vaddr of the fixmap's 2MB slot */
+	add   r11, r11, r0           /* r11 := vaddr (UART base address) */
 #endif
 
-       PRINT("- Entering C -\r\n")
+	PRINT("- Entering C -\r\n")
 
-       ldr   sp, =init_stack        /* Supply a stack */
-       add   sp, #STACK_SIZE        /* (which grows down from the top). */
-       sub   sp, #CPUINFO_sizeof    /* Make room for CPU save record */
-       mov   r0, r10                /* Marshal args: - phys_offset */
-       mov   r1, r7                 /*               - machine type */
-       mov   r2, r8                 /*               - ATAG address */
-       b     start_xen              /* and disappear into the land of C */
+	ldr   sp, =init_stack        /* Supply a stack */
+	add   sp, #STACK_SIZE        /* (which grows down from the top). */
+	sub   sp, #CPUINFO_sizeof    /* Make room for CPU save record */
+	mov   r0, r10                /* Marshal args: - phys_offset */
+	mov   r1, r7                 /*               - machine type */
+	mov   r2, r8                 /*               - ATAG address */
+	b     start_xen              /* and disappear into the land of C */
 
 /* Fail-stop
  * r0: string explaining why */
-fail:  PRINT("- Boot failed -\r\n")
-1:     wfe
-       b     1b
+fail:	PRINT("- Boot failed -\r\n")
+1:	wfe
+	b     1b
 
 #ifdef EARLY_UART_ADDRESS
 
 /* Bring up the UART. Specific to the PL011 UART.
  * Clobbers r0-r2 */
 init_uart:
-       mov   r1, #0x0
-       str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor fraction) */
-       mov   r1, #0x4               /* 7.3728MHz / 0x4 == 16 * 115200 */
-       str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor integer) */
-       mov   r1, #0x60              /* 8n1 */
-       str   r1, [r11, #0x24]       /* -> UARTLCR_H (Line control) */
-       ldr   r1, =0x00000301        /* RXE | TXE | UARTEN */
-       str   r1, [r11, #0x30]       /* -> UARTCR (Control Register) */
-       adr   r0, 1f
-       b     puts
-1:     .asciz "- UART enabled -\r\n"
-       .align 4
+	mov   r1, #0x0
+	str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor fraction) */
+	mov   r1, #0x4               /* 7.3728MHz / 0x4 == 16 * 115200 */
+	str   r1, [r11, #0x24]       /* -> UARTIBRD (Baud divisor integer) */
+	mov   r1, #0x60              /* 8n1 */
+	str   r1, [r11, #0x24]       /* -> UARTLCR_H (Line control) */
+	ldr   r1, =0x00000301        /* RXE | TXE | UARTEN */
+	str   r1, [r11, #0x30]       /* -> UARTCR (Control Register) */
+	adr   r0, 1f
+	b     puts
+1:	.asciz "- UART enabled -\r\n"
+	.align 4
 
 /* Print early debug messages.  Specific to the PL011 UART.
  * r0: Nul-terminated string to print.
  * Clobbers r0-r2 */
 puts:
-       ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
-       tst   r2, #0x8               /* Check BUSY bit */
-       bne   puts                   /* Wait for the UART to be ready */
-       ldrb  r2, [r0], #1           /* Load next char */
-       teq   r2, #0                 /* Exit on nul*/
-       moveq pc, lr
-       str   r2, [r11]              /* -> UARTDR (Data Register) */
-       b     puts
+	ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
+	tst   r2, #0x8               /* Check BUSY bit */
+	bne   puts                   /* Wait for the UART to be ready */
+	ldrb  r2, [r0], #1           /* Load next char */
+	teq   r2, #0                 /* Exit on nul*/
+	moveq pc, lr
+	str   r2, [r11]              /* -> UARTDR (Data Register) */
+	b     puts
 
 /* Print a 32-bit number in hex.  Specific to the PL011 UART.
  * r0: Number to print.
  * clobbers r0-r3 */
 putn:
-       adr   r1, hex
-       mov   r3, #8
-1:     ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
-       tst   r2, #0x8               /* Check BUSY bit */
-       bne   1b                     /* Wait for the UART to be ready */
-       and   r2, r0, #0xf0000000    /* Mask off the top nybble */
-       ldrb  r2, [r1, r2, lsr #28]  /* Convert to a char */
-       str   r2, [r11]              /* -> UARTDR (Data Register) */
-       lsl   r0, #4                 /* Roll it through one nybble at a time */
-       subs  r3, r3, #1
-       bne   1b
-       adr   r0, crlf               /* Finish with a newline */
-       b     puts
+	adr   r1, hex
+	mov   r3, #8
+1:	ldr   r2, [r11, #0x18]       /* <- UARTFR (Flag register) */
+	tst   r2, #0x8               /* Check BUSY bit */
+	bne   1b                     /* Wait for the UART to be ready */
+	and   r2, r0, #0xf0000000    /* Mask off the top nybble */
+	ldrb  r2, [r1, r2, lsr #28]  /* Convert to a char */
+	str   r2, [r11]              /* -> UARTDR (Data Register) */
+	lsl   r0, #4                 /* Roll it through one nybble at a time */
+	subs  r3, r3, #1
+	bne   1b
+	adr   r0, crlf               /* Finish with a newline */
+	b     puts
 
-crlf:  .asciz "\r\n"
-hex:   .ascii "0123456789abcdef"
-       .align 2
+crlf:	.asciz "\r\n"
+hex:	.ascii "0123456789abcdef"
+	.align 2
 
 #else  /* EARLY_UART_ADDRESS */
 
@@ -308,6 +308,6 @@
 .global early_puts
 early_puts:
 puts:
-putn:  mov   pc, lr
+putn:	mov   pc, lr
 
 #endif /* EARLY_UART_ADDRESS */
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/bitops.h
--- a/xen/arch/arm/lib/bitops.h	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/bitops.h	Mon Feb 13 17:26:08 2012 +0000
@@ -1,61 +1,61 @@
 #include <xen/config.h>
 
 #if __LINUX_ARM_ARCH__ >= 6
-       .macro  bitop, instr
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       mov     r2, #1
-       and     r3, r0, #31             @ Get bit offset
-       mov     r0, r0, lsr #5
-       add     r1, r1, r0, lsl #2      @ Get word offset
-       mov     r3, r2, lsl r3
-1:     ldrex   r2, [r1]
-       \instr  r2, r2, r3
-       strex   r0, r2, [r1]
-       cmp     r0, #0
-       bne     1b
-       bx      lr
-       .endm
+	.macro	bitop, instr
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	mov	r2, #1
+	and	r3, r0, #31		@ Get bit offset
+	mov	r0, r0, lsr #5
+	add	r1, r1, r0, lsl #2	@ Get word offset
+	mov	r3, r2, lsl r3
+1:	ldrex	r2, [r1]
+	\instr	r2, r2, r3
+	strex	r0, r2, [r1]
+	cmp	r0, #0
+	bne	1b
+	bx	lr
+	.endm
 
-       .macro  testop, instr, store
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       mov     r2, #1
-       and     r3, r0, #31             @ Get bit offset
-       mov     r0, r0, lsr #5
-       add     r1, r1, r0, lsl #2      @ Get word offset
-       mov     r3, r2, lsl r3          @ create mask
-       smp_dmb
-1:     ldrex   r2, [r1]
-       ands    r0, r2, r3              @ save old value of bit
-       \instr  r2, r2, r3              @ toggle bit
-       strex   ip, r2, [r1]
-       cmp     ip, #0
-       bne     1b
-       smp_dmb
-       cmp     r0, #0
-       movne   r0, #1
-2:     bx      lr
-       .endm
+	.macro	testop, instr, store
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	mov	r2, #1
+	and	r3, r0, #31		@ Get bit offset
+	mov	r0, r0, lsr #5
+	add	r1, r1, r0, lsl #2	@ Get word offset
+	mov	r3, r2, lsl r3		@ create mask
+	smp_dmb
+1:	ldrex	r2, [r1]
+	ands	r0, r2, r3		@ save old value of bit
+	\instr	r2, r2, r3		@ toggle bit
+	strex	ip, r2, [r1]
+	cmp	ip, #0
+	bne	1b
+	smp_dmb
+	cmp	r0, #0
+	movne	r0, #1
+2:	bx	lr
+	.endm
 #else
-       .macro  bitop, name, instr
-ENTRY( \name           )
-UNWIND(        .fnstart        )
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       and     r2, r0, #31
-       mov     r0, r0, lsr #5
-       mov     r3, #1
-       mov     r3, r3, lsl r2
-       save_and_disable_irqs ip
-       ldr     r2, [r1, r0, lsl #2]
-       \instr  r2, r2, r3
-       str     r2, [r1, r0, lsl #2]
-       restore_irqs ip
-       mov     pc, lr
-UNWIND(        .fnend          )
-ENDPROC(\name          )
-       .endm
+	.macro	bitop, name, instr
+ENTRY(	\name		)
+UNWIND(	.fnstart	)
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	and	r2, r0, #31
+	mov	r0, r0, lsr #5
+	mov	r3, #1
+	mov	r3, r3, lsl r2
+	save_and_disable_irqs ip
+	ldr	r2, [r1, r0, lsl #2]
+	\instr	r2, r2, r3
+	str	r2, [r1, r0, lsl #2]
+	restore_irqs ip
+	mov	pc, lr
+UNWIND(	.fnend		)
+ENDPROC(\name		)
+	.endm
 
 /**
  * testop - implement a test_and_xxx_bit operation.
@@ -65,23 +65,23 @@
  * Note: we can trivially conditionalise the store instruction
  * to avoid dirtying the data cache.
  */
-       .macro  testop, name, instr, store
-ENTRY( \name           )
-UNWIND(        .fnstart        )
-       ands    ip, r1, #3
-       strneb  r1, [ip]                @ assert word-aligned
-       and     r3, r0, #31
-       mov     r0, r0, lsr #5
-       save_and_disable_irqs ip
-       ldr     r2, [r1, r0, lsl #2]!
-       mov     r0, #1
-       tst     r2, r0, lsl r3
-       \instr  r2, r2, r0, lsl r3
-       \store  r2, [r1]
-       moveq   r0, #0
-       restore_irqs ip
-       mov     pc, lr
-UNWIND(        .fnend          )
-ENDPROC(\name          )
-       .endm
+	.macro	testop, name, instr, store
+ENTRY(	\name		)
+UNWIND(	.fnstart	)
+	ands	ip, r1, #3
+	strneb	r1, [ip]		@ assert word-aligned
+	and	r3, r0, #31
+	mov	r0, r0, lsr #5
+	save_and_disable_irqs ip
+	ldr	r2, [r1, r0, lsl #2]!
+	mov	r0, #1
+	tst	r2, r0, lsl r3
+	\instr	r2, r2, r0, lsl r3
+	\store	r2, [r1]
+	moveq	r0, #0
+	restore_irqs ip
+	mov	pc, lr
+UNWIND(	.fnend		)
+ENDPROC(\name		)
+	.endm
 #endif
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/changebit.S
--- a/xen/arch/arm/lib/changebit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/changebit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_change_bit)
-       bitop   eor
+	bitop	eor
 ENDPROC(_change_bit)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/clearbit.S
--- a/xen/arch/arm/lib/clearbit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/clearbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -15,5 +15,5 @@
                 .text
 
 ENTRY(_clear_bit)
-       bitop   bic
+	bitop	bic
 ENDPROC(_clear_bit)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/copy_template.S
--- a/xen/arch/arm/lib/copy_template.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/copy_template.S	Mon Feb 13 17:26:08 2012 +0000
@@ -3,9 +3,9 @@
  *
  *  Code template for optimized memory copy functions
  *
- *  Author:    Nicolas Pitre
- *  Created:   Sep 28, 2005
- *  Copyright: MontaVista Software, Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Sep 28, 2005
+ *  Copyright:	MontaVista Software, Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -24,227 +24,227 @@
  *
  * ldr1w ptr reg abort
  *
- *     This loads one word from 'ptr', stores it in 'reg' and increments
- *     'ptr' to the next word. The 'abort' argument is used for fixup tables.
+ *	This loads one word from 'ptr', stores it in 'reg' and increments
+ *	'ptr' to the next word. The 'abort' argument is used for fixup tables.
  *
  * ldr4w ptr reg1 reg2 reg3 reg4 abort
  * ldr8w ptr, reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
  *
- *     This loads four or eight words starting from 'ptr', stores them
- *     in provided registers and increments 'ptr' past those words.
- *     The'abort' argument is used for fixup tables.
+ *	This loads four or eight words starting from 'ptr', stores them
+ *	in provided registers and increments 'ptr' past those words.
+ *	The'abort' argument is used for fixup tables.
  *
  * ldr1b ptr reg cond abort
  *
- *     Similar to ldr1w, but it loads a byte and increments 'ptr' one byte.
- *     It also must apply the condition code if provided, otherwise the
- *     "al" condition is assumed by default.
+ *	Similar to ldr1w, but it loads a byte and increments 'ptr' one byte.
+ *	It also must apply the condition code if provided, otherwise the
+ *	"al" condition is assumed by default.
  *
  * str1w ptr reg abort
  * str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
  * str1b ptr reg cond abort
  *
- *     Same as their ldr* counterparts, but data is stored to 'ptr' location
- *     rather than being loaded.
+ *	Same as their ldr* counterparts, but data is stored to 'ptr' location
+ *	rather than being loaded.
  *
  * enter reg1 reg2
  *
- *     Preserve the provided registers on the stack plus any additional
- *     data as needed by the implementation including this code. Called
- *     upon code entry.
+ *	Preserve the provided registers on the stack plus any additional
+ *	data as needed by the implementation including this code. Called
+ *	upon code entry.
  *
  * exit reg1 reg2
  *
- *     Restore registers with the values previously saved with the
- *     'preserv' macro. Called upon code termination.
+ *	Restore registers with the values previously saved with the
+ *	'preserv' macro. Called upon code termination.
  *
  * LDR1W_SHIFT
  * STR1W_SHIFT
  *
- *     Correction to be applied to the "ip" register when branching into
- *     the ldr1w or str1w instructions (some of these macros may expand to
- *     than one 32bit instruction in Thumb-2)
+ *	Correction to be applied to the "ip" register when branching into
+ *	the ldr1w or str1w instructions (some of these macros may expand to
+ *	than one 32bit instruction in Thumb-2)
  */
 
 
-               enter   r4, lr
+		enter	r4, lr
 
-               subs    r2, r2, #4
-               blt     8f
-               ands    ip, r0, #3
-       PLD(    pld     [r1, #0]                )
-               bne     9f
-               ands    ip, r1, #3
-               bne     10f
+		subs	r2, r2, #4
+		blt	8f
+		ands	ip, r0, #3
+	PLD(	pld	[r1, #0]		)
+		bne	9f
+		ands	ip, r1, #3
+		bne	10f
 
-1:             subs    r2, r2, #(28)
-               stmfd   sp!, {r5 - r8}
-               blt     5f
+1:		subs	r2, r2, #(28)
+		stmfd	sp!, {r5 - r8}
+		blt	5f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  rsb     r3, ip, #32             )
-       CALGN(  sbcnes  r4, r3, r2              )  @ C is always set here
-       CALGN(  bcs     2f                      )
-       CALGN(  adr     r4, 6f                  )
-       CALGN(  subs    r2, r2, r3              )  @ C gets set
-       CALGN(  add     pc, r4, ip              )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	rsb	r3, ip, #32		)
+	CALGN(	sbcnes	r4, r3, r2		)  @ C is always set here
+	CALGN(	bcs	2f			)
+	CALGN(	adr	r4, 6f			)
+	CALGN(	subs	r2, r2, r3		)  @ C gets set
+	CALGN(	add	pc, r4, ip		)
 
-       PLD(    pld     [r1, #0]                )
-2:     PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #28]               )
-       PLD(    blt     4f                      )
-       PLD(    pld     [r1, #60]               )
-       PLD(    pld     [r1, #92]               )
+	PLD(	pld	[r1, #0]		)
+2:	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #28]		)
+	PLD(	blt	4f			)
+	PLD(	pld	[r1, #60]		)
+	PLD(	pld	[r1, #92]		)
 
-3:     PLD(    pld     [r1, #124]              )
-4:             ldr8w   r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
-               subs    r2, r2, #32
-               str8w   r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
-               bge     3b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     4b                      )
+3:	PLD(	pld	[r1, #124]		)
+4:		ldr8w	r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
+		subs	r2, r2, #32
+		str8w	r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
+		bge	3b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	4b			)
 
-5:             ands    ip, r2, #28
-               rsb     ip, ip, #32
+5:		ands	ip, r2, #28
+		rsb	ip, ip, #32
 #if LDR1W_SHIFT > 0
-               lsl     ip, ip, #LDR1W_SHIFT
+		lsl	ip, ip, #LDR1W_SHIFT
 #endif
-               addne   pc, pc, ip              @ C is always clear here
-               b       7f
+		addne	pc, pc, ip		@ C is always clear here
+		b	7f
 6:
-               .rept   (1 << LDR1W_SHIFT)
-               W(nop)
-               .endr
-               ldr1w   r1, r3, abort=20f
-               ldr1w   r1, r4, abort=20f
-               ldr1w   r1, r5, abort=20f
-               ldr1w   r1, r6, abort=20f
-               ldr1w   r1, r7, abort=20f
-               ldr1w   r1, r8, abort=20f
-               ldr1w   r1, lr, abort=20f
+		.rept	(1 << LDR1W_SHIFT)
+		W(nop)
+		.endr
+		ldr1w	r1, r3, abort=20f
+		ldr1w	r1, r4, abort=20f
+		ldr1w	r1, r5, abort=20f
+		ldr1w	r1, r6, abort=20f
+		ldr1w	r1, r7, abort=20f
+		ldr1w	r1, r8, abort=20f
+		ldr1w	r1, lr, abort=20f
 
 #if LDR1W_SHIFT < STR1W_SHIFT
-               lsl     ip, ip, #STR1W_SHIFT - LDR1W_SHIFT
+		lsl	ip, ip, #STR1W_SHIFT - LDR1W_SHIFT
 #elif LDR1W_SHIFT > STR1W_SHIFT
-               lsr     ip, ip, #LDR1W_SHIFT - STR1W_SHIFT
+		lsr	ip, ip, #LDR1W_SHIFT - STR1W_SHIFT
 #endif
-               add     pc, pc, ip
-               nop
-               .rept   (1 << STR1W_SHIFT)
-               W(nop)
-               .endr
-               str1w   r0, r3, abort=20f
-               str1w   r0, r4, abort=20f
-               str1w   r0, r5, abort=20f
-               str1w   r0, r6, abort=20f
-               str1w   r0, r7, abort=20f
-               str1w   r0, r8, abort=20f
-               str1w   r0, lr, abort=20f
+		add	pc, pc, ip
+		nop
+		.rept	(1 << STR1W_SHIFT)
+		W(nop)
+		.endr
+		str1w	r0, r3, abort=20f
+		str1w	r0, r4, abort=20f
+		str1w	r0, r5, abort=20f
+		str1w	r0, r6, abort=20f
+		str1w	r0, r7, abort=20f
+		str1w	r0, r8, abort=20f
+		str1w	r0, lr, abort=20f
 
-       CALGN(  bcs     2b                      )
+	CALGN(	bcs	2b			)
 
-7:             ldmfd   sp!, {r5 - r8}
+7:		ldmfd	sp!, {r5 - r8}
 
-8:             movs    r2, r2, lsl #31
-               ldr1b   r1, r3, ne, abort=21f
-               ldr1b   r1, r4, cs, abort=21f
-               ldr1b   r1, ip, cs, abort=21f
-               str1b   r0, r3, ne, abort=21f
-               str1b   r0, r4, cs, abort=21f
-               str1b   r0, ip, cs, abort=21f
+8:		movs	r2, r2, lsl #31
+		ldr1b	r1, r3, ne, abort=21f
+		ldr1b	r1, r4, cs, abort=21f
+		ldr1b	r1, ip, cs, abort=21f
+		str1b	r0, r3, ne, abort=21f
+		str1b	r0, r4, cs, abort=21f
+		str1b	r0, ip, cs, abort=21f
 
-               exit    r4, pc
+		exit	r4, pc
 
-9:             rsb     ip, ip, #4
-               cmp     ip, #2
-               ldr1b   r1, r3, gt, abort=21f
-               ldr1b   r1, r4, ge, abort=21f
-               ldr1b   r1, lr, abort=21f
-               str1b   r0, r3, gt, abort=21f
-               str1b   r0, r4, ge, abort=21f
-               subs    r2, r2, ip
-               str1b   r0, lr, abort=21f
-               blt     8b
-               ands    ip, r1, #3
-               beq     1b
+9:		rsb	ip, ip, #4
+		cmp	ip, #2
+		ldr1b	r1, r3, gt, abort=21f
+		ldr1b	r1, r4, ge, abort=21f
+		ldr1b	r1, lr, abort=21f
+		str1b	r0, r3, gt, abort=21f
+		str1b	r0, r4, ge, abort=21f
+		subs	r2, r2, ip
+		str1b	r0, lr, abort=21f
+		blt	8b
+		ands	ip, r1, #3
+		beq	1b
 
-10:            bic     r1, r1, #3
-               cmp     ip, #2
-               ldr1w   r1, lr, abort=21f
-               beq     17f
-               bgt     18f
+10:		bic	r1, r1, #3
+		cmp	ip, #2
+		ldr1w	r1, lr, abort=21f
+		beq	17f
+		bgt	18f
 
 
-               .macro  forward_copy_shift pull push
+		.macro	forward_copy_shift pull push
 
-               subs    r2, r2, #28
-               blt     14f
+		subs	r2, r2, #28
+		blt	14f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  rsb     ip, ip, #32             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
-       CALGN(  subcc   r2, r2, ip              )
-       CALGN(  bcc     15f                     )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	rsb	ip, ip, #32		)
+	CALGN(	sbcnes	r4, ip, r2		)  @ C is always set here
+	CALGN(	subcc	r2, r2, ip		)
+	CALGN(	bcc	15f			)
 
-11:            stmfd   sp!, {r5 - r9}
+11:		stmfd	sp!, {r5 - r9}
 
-       PLD(    pld     [r1, #0]                )
-       PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #28]               )
-       PLD(    blt     13f                     )
-       PLD(    pld     [r1, #60]               )
-       PLD(    pld     [r1, #92]               )
+	PLD(	pld	[r1, #0]		)
+	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #28]		)
+	PLD(	blt	13f			)
+	PLD(	pld	[r1, #60]		)
+	PLD(	pld	[r1, #92]		)
 
-12:    PLD(    pld     [r1, #124]              )
-13:            ldr4w   r1, r4, r5, r6, r7, abort=19f
-               mov     r3, lr, pull #\pull
-               subs    r2, r2, #32
-               ldr4w   r1, r8, r9, ip, lr, abort=19f
-               orr     r3, r3, r4, push #\push
-               mov     r4, r4, pull #\pull
-               orr     r4, r4, r5, push #\push
-               mov     r5, r5, pull #\pull
-               orr     r5, r5, r6, push #\push
-               mov     r6, r6, pull #\pull
-               orr     r6, r6, r7, push #\push
-               mov     r7, r7, pull #\pull
-               orr     r7, r7, r8, push #\push
-               mov     r8, r8, pull #\pull
-               orr     r8, r8, r9, push #\push
-               mov     r9, r9, pull #\pull
-               orr     r9, r9, ip, push #\push
-               mov     ip, ip, pull #\pull
-               orr     ip, ip, lr, push #\push
-               str8w   r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
-               bge     12b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     13b                     )
+12:	PLD(	pld	[r1, #124]		)
+13:		ldr4w	r1, r4, r5, r6, r7, abort=19f
+		mov	r3, lr, pull #\pull
+		subs	r2, r2, #32
+		ldr4w	r1, r8, r9, ip, lr, abort=19f
+		orr	r3, r3, r4, push #\push
+		mov	r4, r4, pull #\pull
+		orr	r4, r4, r5, push #\push
+		mov	r5, r5, pull #\pull
+		orr	r5, r5, r6, push #\push
+		mov	r6, r6, pull #\pull
+		orr	r6, r6, r7, push #\push
+		mov	r7, r7, pull #\pull
+		orr	r7, r7, r8, push #\push
+		mov	r8, r8, pull #\pull
+		orr	r8, r8, r9, push #\push
+		mov	r9, r9, pull #\pull
+		orr	r9, r9, ip, push #\push
+		mov	ip, ip, pull #\pull
+		orr	ip, ip, lr, push #\push
+		str8w	r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
+		bge	12b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	13b			)
 
-               ldmfd   sp!, {r5 - r9}
+		ldmfd	sp!, {r5 - r9}
 
-14:            ands    ip, r2, #28
-               beq     16f
+14:		ands	ip, r2, #28
+		beq	16f
 
-15:            mov     r3, lr, pull #\pull
-               ldr1w   r1, lr, abort=21f
-               subs    ip, ip, #4
-               orr     r3, r3, lr, push #\push
-               str1w   r0, r3, abort=21f
-               bgt     15b
-       CALGN(  cmp     r2, #0                  )
-       CALGN(  bge     11b                     )
+15:		mov	r3, lr, pull #\pull
+		ldr1w	r1, lr, abort=21f
+		subs	ip, ip, #4
+		orr	r3, r3, lr, push #\push
+		str1w	r0, r3, abort=21f
+		bgt	15b
+	CALGN(	cmp	r2, #0			)
+	CALGN(	bge	11b			)
 
-16:            sub     r1, r1, #(\push / 8)
-               b       8b
+16:		sub	r1, r1, #(\push / 8)
+		b	8b
 
-               .endm
+		.endm
 
 
-               forward_copy_shift      pull=8  push=24
+		forward_copy_shift	pull=8	push=24
 
-17:            forward_copy_shift      pull=16 push=16
+17:		forward_copy_shift	pull=16	push=16
 
-18:            forward_copy_shift      pull=24 push=8
+18:		forward_copy_shift	pull=24	push=8
 
 
 /*
@@ -254,14 +254,14 @@
  * the exit macro.
  */
 
-       .macro  copy_abort_preamble
-19:    ldmfd   sp!, {r5 - r9}
-       b       21f
-20:    ldmfd   sp!, {r5 - r8}
+	.macro	copy_abort_preamble
+19:	ldmfd	sp!, {r5 - r9}
+	b	21f
+20:	ldmfd	sp!, {r5 - r8}
 21:
-       .endm
+	.endm
 
-       .macro  copy_abort_end
-       ldmfd   sp!, {r4, pc}
-       .endm
+	.macro	copy_abort_end
+	ldmfd	sp!, {r4, pc}
+	.endm
 
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/div64.S
--- a/xen/arch/arm/lib/div64.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/div64.S	Mon Feb 13 17:26:08 2012 +0000
@@ -3,9 +3,9 @@
  *
  *  Optimized computation of 64-bit dividend / 32-bit divisor
  *
- *  Author:    Nicolas Pitre
- *  Created:   Oct 5, 2003
- *  Copyright: Monta Vista Software, Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Oct 5, 2003
+ *  Copyright:	Monta Vista Software, Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -14,7 +14,7 @@
 
 #include <xen/config.h>
 #include "assembler.h"
-
+	
 #ifdef __ARMEB__
 #define xh r0
 #define xl r1
@@ -34,12 +34,12 @@
  *       This is meant to be used by do_div() from include/asm/div64.h only.
  *
  * Input parameters:
- *     xh-xl   = dividend (clobbered)
- *     r4      = divisor (preserved)
+ * 	xh-xl	= dividend (clobbered)
+ * 	r4	= divisor (preserved)
  *
  * Output values:
- *     yh-yl   = result
- *     xh      = remainder
+ * 	yh-yl	= result
+ * 	xh	= remainder
  *
  * Clobbered regs: xl, ip
  */
@@ -47,165 +47,165 @@
 ENTRY(__do_div64)
 UNWIND(.fnstart)
 
-       @ Test for easy paths first.
-       subs    ip, r4, #1
-       bls     9f                      @ divisor is 0 or 1
-       tst     ip, r4
-       beq     8f                      @ divisor is power of 2
+	@ Test for easy paths first.
+	subs	ip, r4, #1
+	bls	9f			@ divisor is 0 or 1
+	tst	ip, r4
+	beq	8f			@ divisor is power of 2
 
-       @ See if we need to handle upper 32-bit result.
-       cmp     xh, r4
-       mov     yh, #0
-       blo     3f
+	@ See if we need to handle upper 32-bit result.
+	cmp	xh, r4
+	mov	yh, #0
+	blo	3f
 
-       @ Align divisor with upper part of dividend.
-       @ The aligned divisor is stored in yl preserving the original.
-       @ The bit position is stored in ip.
+	@ Align divisor with upper part of dividend.
+	@ The aligned divisor is stored in yl preserving the original.
+	@ The bit position is stored in ip.
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     yl, r4
-       clz     ip, xh
-       sub     yl, yl, ip
-       mov     ip, #1
-       mov     ip, ip, lsl yl
-       mov     yl, r4, lsl yl
+	clz	yl, r4
+	clz	ip, xh
+	sub	yl, yl, ip
+	mov	ip, #1
+	mov	ip, ip, lsl yl
+	mov	yl, r4, lsl yl
 
 #else
 
-       mov     yl, r4
-       mov     ip, #1
-1:     cmp     yl, #0x80000000
-       cmpcc   yl, xh
-       movcc   yl, yl, lsl #1
-       movcc   ip, ip, lsl #1
-       bcc     1b
+	mov	yl, r4
+	mov	ip, #1
+1:	cmp	yl, #0x80000000
+	cmpcc	yl, xh
+	movcc	yl, yl, lsl #1
+	movcc	ip, ip, lsl #1
+	bcc	1b
 
 #endif
 
-       @ The division loop for needed upper bit positions.
-       @ Break out early if dividend reaches 0.
-2:     cmp     xh, yl
-       orrcs   yh, yh, ip
-       subcss  xh, xh, yl
-       movnes  ip, ip, lsr #1
-       mov     yl, yl, lsr #1
-       bne     2b
+	@ The division loop for needed upper bit positions.
+ 	@ Break out early if dividend reaches 0.
+2:	cmp	xh, yl
+	orrcs	yh, yh, ip
+	subcss	xh, xh, yl
+	movnes	ip, ip, lsr #1
+	mov	yl, yl, lsr #1
+	bne	2b
 
-       @ See if we need to handle lower 32-bit result.
-3:     cmp     xh, #0
-       mov     yl, #0
-       cmpeq   xl, r4
-       movlo   xh, xl
-       movlo   pc, lr
+	@ See if we need to handle lower 32-bit result.
+3:	cmp	xh, #0
+	mov	yl, #0
+	cmpeq	xl, r4
+	movlo	xh, xl
+	movlo	pc, lr
 
-       @ The division loop for lower bit positions.
-       @ Here we shift remainer bits leftwards rather than moving the
-       @ divisor for comparisons, considering the carry-out bit as well.
-       mov     ip, #0x80000000
-4:     movs    xl, xl, lsl #1
-       adcs    xh, xh, xh
-       beq     6f
-       cmpcc   xh, r4
-5:     orrcs   yl, yl, ip
-       subcs   xh, xh, r4
-       movs    ip, ip, lsr #1
-       bne     4b
-       mov     pc, lr
+	@ The division loop for lower bit positions.
+	@ Here we shift remainer bits leftwards rather than moving the
+	@ divisor for comparisons, considering the carry-out bit as well.
+	mov	ip, #0x80000000
+4:	movs	xl, xl, lsl #1
+	adcs	xh, xh, xh
+	beq	6f
+	cmpcc	xh, r4
+5:	orrcs	yl, yl, ip
+	subcs	xh, xh, r4
+	movs	ip, ip, lsr #1
+	bne	4b
+	mov	pc, lr
 
-       @ The top part of remainder became zero.  If carry is set
-       @ (the 33th bit) this is a false positive so resume the loop.
-       @ Otherwise, if lower part is also null then we are done.
-6:     bcs     5b
-       cmp     xl, #0
-       moveq   pc, lr
+	@ The top part of remainder became zero.  If carry is set
+	@ (the 33th bit) this is a false positive so resume the loop.
+	@ Otherwise, if lower part is also null then we are done.
+6:	bcs	5b
+	cmp	xl, #0
+	moveq	pc, lr
 
-       @ We still have remainer bits in the low part.  Bring them up.
+	@ We still have remainer bits in the low part.  Bring them up.
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     xh, xl                  @ we know xh is zero here so...
-       add     xh, xh, #1
-       mov     xl, xl, lsl xh
-       mov     ip, ip, lsr xh
+	clz	xh, xl			@ we know xh is zero here so...
+	add	xh, xh, #1
+	mov	xl, xl, lsl xh
+	mov	ip, ip, lsr xh
 
 #else
 
-7:     movs    xl, xl, lsl #1
-       mov     ip, ip, lsr #1
-       bcc     7b
+7:	movs	xl, xl, lsl #1
+	mov	ip, ip, lsr #1
+	bcc	7b
 
 #endif
 
-       @ Current remainder is now 1.  It is worthless to compare with
-       @ divisor at this point since divisor can not be smaller than 3 here.
-       @ If possible, branch for another shift in the division loop.
-       @ If no bit position left then we are done.
-       movs    ip, ip, lsr #1
-       mov     xh, #1
-       bne     4b
-       mov     pc, lr
+	@ Current remainder is now 1.  It is worthless to compare with
+	@ divisor at this point since divisor can not be smaller than 3 here.
+	@ If possible, branch for another shift in the division loop.
+	@ If no bit position left then we are done.
+	movs	ip, ip, lsr #1
+	mov	xh, #1
+	bne	4b
+	mov	pc, lr
 
-8:     @ Division by a power of 2: determine what that divisor order is
-       @ then simply shift values around
+8:	@ Division by a power of 2: determine what that divisor order is
+	@ then simply shift values around
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     ip, r4
-       rsb     ip, ip, #31
+	clz	ip, r4
+	rsb	ip, ip, #31
 
 #else
 
-       mov     yl, r4
-       cmp     r4, #(1 << 16)
-       mov     ip, #0
-       movhs   yl, yl, lsr #16
-       movhs   ip, #16
+	mov	yl, r4
+	cmp	r4, #(1 << 16)
+	mov	ip, #0
+	movhs	yl, yl, lsr #16
+	movhs	ip, #16
 
-       cmp     yl, #(1 << 8)
-       movhs   yl, yl, lsr #8
-       addhs   ip, ip, #8
+	cmp	yl, #(1 << 8)
+	movhs	yl, yl, lsr #8
+	addhs	ip, ip, #8
 
-       cmp     yl, #(1 << 4)
-       movhs   yl, yl, lsr #4
-       addhs   ip, ip, #4
+	cmp	yl, #(1 << 4)
+	movhs	yl, yl, lsr #4
+	addhs	ip, ip, #4
 
-       cmp     yl, #(1 << 2)
-       addhi   ip, ip, #3
-       addls   ip, ip, yl, lsr #1
+	cmp	yl, #(1 << 2)
+	addhi	ip, ip, #3
+	addls	ip, ip, yl, lsr #1
 
 #endif
 
-       mov     yh, xh, lsr ip
-       mov     yl, xl, lsr ip
-       rsb     ip, ip, #32
- ARM(  orr     yl, yl, xh, lsl ip      )
- THUMB(        lsl     xh, xh, ip              )
- THUMB(        orr     yl, yl, xh              )
-       mov     xh, xl, lsl ip
-       mov     xh, xh, lsr ip
-       mov     pc, lr
+	mov	yh, xh, lsr ip
+	mov	yl, xl, lsr ip
+	rsb	ip, ip, #32
+ ARM(	orr	yl, yl, xh, lsl ip	)
+ THUMB(	lsl	xh, xh, ip		)
+ THUMB(	orr	yl, yl, xh		)
+	mov	xh, xl, lsl ip
+	mov	xh, xh, lsr ip
+	mov	pc, lr
 
-       @ eq -> division by 1: obvious enough...
-9:     moveq   yl, xl
-       moveq   yh, xh
-       moveq   xh, #0
-       moveq   pc, lr
+	@ eq -> division by 1: obvious enough...
+9:	moveq	yl, xl
+	moveq	yh, xh
+	moveq	xh, #0
+	moveq	pc, lr
 UNWIND(.fnend)
 
 UNWIND(.fnstart)
 UNWIND(.pad #4)
 UNWIND(.save {lr})
 Ldiv0_64:
-       @ Division by 0:
-       str     lr, [sp, #-8]!
-       bl      __div0
+	@ Division by 0:
+	str	lr, [sp, #-8]!
+	bl	__div0
 
-       @ as wrong as it could be...
-       mov     yl, #0
-       mov     yh, #0
-       mov     xh, #0
-       ldr     pc, [sp], #8
+	@ as wrong as it could be...
+	mov	yl, #0
+	mov	yh, #0
+	mov	xh, #0
+	ldr	pc, [sp], #8
 
 UNWIND(.fnend)
 ENDPROC(__do_div64)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/findbit.S
--- a/xen/arch/arm/lib/findbit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/findbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -24,20 +24,20 @@
  * Prototype: int find_first_zero_bit(void *addr, unsigned int maxbit);
  */
 ENTRY(_find_first_zero_bit_le)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
+		teq	r1, #0	
+		beq	3f
+		mov	r2, #0
 1:
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eors    r3, r3, #0xff           @ invert bits
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eors	r3, r3, #0xff		@ invert bits
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_zero_bit_le)
 
 /*
@@ -45,19 +45,19 @@
  * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
  */
 ENTRY(_find_next_zero_bit_le)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eor     r3, r3, #0xff           @ now looking for a 1 bit
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eor	r3, r3, #0xff		@ now looking for a 1 bit
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_zero_bit_le)
 
 /*
@@ -65,20 +65,20 @@
  * Prototype: int find_first_bit(const unsigned long *addr, unsigned int maxbit);
  */
 ENTRY(_find_first_bit_le)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
+		teq	r1, #0	
+		beq	3f
+		mov	r2, #0
 1:
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_bit_le)
 
 /*
@@ -86,87 +86,87 @@
  * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
  */
 ENTRY(_find_next_bit_le)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
- ARM(          ldrb    r3, [r0, r2, lsr #3]    )
- THUMB(                lsr     r3, r2, #3              )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+ ARM(		ldrb	r3, [r0, r2, lsr #3]	)
+ THUMB(		lsr	r3, r2, #3		)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_bit_le)
 
 #ifdef __ARMEB__
 
 ENTRY(_find_first_zero_bit_be)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
-1:             eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eors    r3, r3, #0xff           @ invert bits
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+		teq	r1, #0
+		beq	3f
+		mov	r2, #0
+1:		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eors	r3, r3, #0xff		@ invert bits
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_zero_bit_be)
 
 ENTRY(_find_next_zero_bit_be)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
-               eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               eor     r3, r3, #0xff           @ now looking for a 1 bit
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		eor	r3, r3, #0xff		@ now looking for a 1 bit
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_zero_bit_be)
 
 ENTRY(_find_first_bit_be)
-               teq     r1, #0
-               beq     3f
-               mov     r2, #0
-1:             eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3
-               bne     .L_found                @ any now set - found zero bit
-               add     r2, r2, #8              @ next bit pointer
-2:             cmp     r2, r1                  @ any more?
-               blo     1b
-3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+		teq	r1, #0
+		beq	3f
+		mov	r2, #0
+1:		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3
+		bne	.L_found		@ any now set - found zero bit
+		add	r2, r2, #8		@ next bit pointer
+2:		cmp	r2, r1			@ any more?
+		blo	1b
+3:		mov	r0, r1			@ no free bits
+		mov	pc, lr
 ENDPROC(_find_first_bit_be)
 
 ENTRY(_find_next_bit_be)
-               teq     r1, #0
-               beq     3b
-               ands    ip, r2, #7
-               beq     1b                      @ If new byte, goto old routine
-               eor     r3, r2, #0x18           @ big endian byte ordering
- ARM(          ldrb    r3, [r0, r3, lsr #3]    )
- THUMB(                lsr     r3, #3                  )
- THUMB(                ldrb    r3, [r0, r3]            )
-               movs    r3, r3, lsr ip          @ shift off unused bits
-               bne     .L_found
-               orr     r2, r2, #7              @ if zero, then no bits here
-               add     r2, r2, #1              @ align bit pointer
-               b       2b                      @ loop for next bit
+		teq	r1, #0
+		beq	3b
+		ands	ip, r2, #7
+		beq	1b			@ If new byte, goto old routine
+		eor	r3, r2, #0x18		@ big endian byte ordering
+ ARM(		ldrb	r3, [r0, r3, lsr #3]	)
+ THUMB(		lsr	r3, #3			)
+ THUMB(		ldrb	r3, [r0, r3]		)
+		movs	r3, r3, lsr ip		@ shift off unused bits
+		bne	.L_found
+		orr	r2, r2, #7		@ if zero, then no bits here
+		add	r2, r2, #1		@ align bit pointer
+		b	2b			@ loop for next bit
 ENDPROC(_find_next_bit_be)
 
 #endif
@@ -176,23 +176,23 @@
  */
 .L_found:
 #if __LINUX_ARM_ARCH__ >= 5
-               rsb     r0, r3, #0
-               and     r3, r3, r0
-               clz     r3, r3
-               rsb     r3, r3, #31
-               add     r0, r2, r3
+		rsb	r0, r3, #0
+		and	r3, r3, r0
+		clz	r3, r3
+		rsb	r3, r3, #31
+		add	r0, r2, r3
 #else
-               tst     r3, #0x0f
-               addeq   r2, r2, #4
-               movne   r3, r3, lsl #4
-               tst     r3, #0x30
-               addeq   r2, r2, #2
-               movne   r3, r3, lsl #2
-               tst     r3, #0x40
-               addeq   r2, r2, #1
-               mov     r0, r2
+		tst	r3, #0x0f
+		addeq	r2, r2, #4
+		movne	r3, r3, lsl #4
+		tst	r3, #0x30
+		addeq	r2, r2, #2
+		movne	r3, r3, lsl #2
+		tst	r3, #0x40
+		addeq	r2, r2, #1
+		mov	r0, r2
 #endif
-               cmp     r1, r0                  @ Clamp to maxbit
-               movlo   r0, r1
-               mov     pc, lr
+		cmp	r1, r0			@ Clamp to maxbit
+		movlo	r0, r1
+		mov	pc, lr
 
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/lib1funcs.S
--- a/xen/arch/arm/lib/lib1funcs.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/lib1funcs.S	Mon Feb 13 17:26:08 2012 +0000
@@ -40,64 +40,64 @@
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     \curbit, \divisor
-       clz     \result, \dividend
-       sub     \result, \curbit, \result
-       mov     \curbit, #1
-       mov     \divisor, \divisor, lsl \result
-       mov     \curbit, \curbit, lsl \result
-       mov     \result, #0
-
+	clz	\curbit, \divisor
+	clz	\result, \dividend
+	sub	\result, \curbit, \result
+	mov	\curbit, #1
+	mov	\divisor, \divisor, lsl \result
+	mov	\curbit, \curbit, lsl \result
+	mov	\result, #0
+	
 #else
 
-       @ Initially shift the divisor left 3 bits if possible,
-       @ set curbit accordingly.  This allows for curbit to be located
-       @ at the left end of each 4 bit nibbles in the division loop
-       @ to save one loop in most cases.
-       tst     \divisor, #0xe0000000
-       moveq   \divisor, \divisor, lsl #3
-       moveq   \curbit, #8
-       movne   \curbit, #1
+	@ Initially shift the divisor left 3 bits if possible,
+	@ set curbit accordingly.  This allows for curbit to be located
+	@ at the left end of each 4 bit nibbles in the division loop
+	@ to save one loop in most cases.
+	tst	\divisor, #0xe0000000
+	moveq	\divisor, \divisor, lsl #3
+	moveq	\curbit, #8
+	movne	\curbit, #1
 
-       @ Unless the divisor is very big, shift it up in multiples of
-       @ four bits, since this is the amount of unwinding in the main
-       @ division loop.  Continue shifting until the divisor is
-       @ larger than the dividend.
-1:     cmp     \divisor, #0x10000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #4
-       movlo   \curbit, \curbit, lsl #4
-       blo     1b
+	@ Unless the divisor is very big, shift it up in multiples of
+	@ four bits, since this is the amount of unwinding in the main
+	@ division loop.  Continue shifting until the divisor is 
+	@ larger than the dividend.
+1:	cmp	\divisor, #0x10000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #4
+	movlo	\curbit, \curbit, lsl #4
+	blo	1b
 
-       @ For very big divisors, we must shift it a bit at a time, or
-       @ we will be in danger of overflowing.
-1:     cmp     \divisor, #0x80000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #1
-       movlo   \curbit, \curbit, lsl #1
-       blo     1b
+	@ For very big divisors, we must shift it a bit at a time, or
+	@ we will be in danger of overflowing.
+1:	cmp	\divisor, #0x80000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #1
+	movlo	\curbit, \curbit, lsl #1
+	blo	1b
 
-       mov     \result, #0
+	mov	\result, #0
 
 #endif
 
-       @ Division loop
-1:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       orrhs   \result,   \result,   \curbit
-       cmp     \dividend, \divisor,  lsr #1
-       subhs   \dividend, \dividend, \divisor, lsr #1
-       orrhs   \result,   \result,   \curbit,  lsr #1
-       cmp     \dividend, \divisor,  lsr #2
-       subhs   \dividend, \dividend, \divisor, lsr #2
-       orrhs   \result,   \result,   \curbit,  lsr #2
-       cmp     \dividend, \divisor,  lsr #3
-       subhs   \dividend, \dividend, \divisor, lsr #3
-       orrhs   \result,   \result,   \curbit,  lsr #3
-       cmp     \dividend, #0                   @ Early termination?
-       movnes  \curbit,   \curbit,  lsr #4     @ No, any more bits to do?
-       movne   \divisor,  \divisor, lsr #4
-       bne     1b
+	@ Division loop
+1:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	orrhs	\result,   \result,   \curbit
+	cmp	\dividend, \divisor,  lsr #1
+	subhs	\dividend, \dividend, \divisor, lsr #1
+	orrhs	\result,   \result,   \curbit,  lsr #1
+	cmp	\dividend, \divisor,  lsr #2
+	subhs	\dividend, \dividend, \divisor, lsr #2
+	orrhs	\result,   \result,   \curbit,  lsr #2
+	cmp	\dividend, \divisor,  lsr #3
+	subhs	\dividend, \dividend, \divisor, lsr #3
+	orrhs	\result,   \result,   \curbit,  lsr #3
+	cmp	\dividend, #0			@ Early termination?
+	movnes	\curbit,   \curbit,  lsr #4	@ No, any more bits to do?
+	movne	\divisor,  \divisor, lsr #4
+	bne	1b
 
 .endm
 
@@ -106,27 +106,27 @@
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     \order, \divisor
-       rsb     \order, \order, #31
+	clz	\order, \divisor
+	rsb	\order, \order, #31
 
 #else
 
-       cmp     \divisor, #(1 << 16)
-       movhs   \divisor, \divisor, lsr #16
-       movhs   \order, #16
-       movlo   \order, #0
+	cmp	\divisor, #(1 << 16)
+	movhs	\divisor, \divisor, lsr #16
+	movhs	\order, #16
+	movlo	\order, #0
 
-       cmp     \divisor, #(1 << 8)
-       movhs   \divisor, \divisor, lsr #8
-       addhs   \order, \order, #8
+	cmp	\divisor, #(1 << 8)
+	movhs	\divisor, \divisor, lsr #8
+	addhs	\order, \order, #8
 
-       cmp     \divisor, #(1 << 4)
-       movhs   \divisor, \divisor, lsr #4
-       addhs   \order, \order, #4
+	cmp	\divisor, #(1 << 4)
+	movhs	\divisor, \divisor, lsr #4
+	addhs	\order, \order, #4
 
-       cmp     \divisor, #(1 << 2)
-       addhi   \order, \order, #3
-       addls   \order, \order, \divisor, lsr #1
+	cmp	\divisor, #(1 << 2)
+	addhi	\order, \order, #3
+	addls	\order, \order, \divisor, lsr #1
 
 #endif
 
@@ -137,69 +137,69 @@
 
 #if __LINUX_ARM_ARCH__ >= 5
 
-       clz     \order, \divisor
-       clz     \spare, \dividend
-       sub     \order, \order, \spare
-       mov     \divisor, \divisor, lsl \order
+	clz	\order, \divisor
+	clz	\spare, \dividend
+	sub	\order, \order, \spare
+	mov	\divisor, \divisor, lsl \order
 
 #else
 
-       mov     \order, #0
+	mov	\order, #0
 
-       @ Unless the divisor is very big, shift it up in multiples of
-       @ four bits, since this is the amount of unwinding in the main
-       @ division loop.  Continue shifting until the divisor is
-       @ larger than the dividend.
-1:     cmp     \divisor, #0x10000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #4
-       addlo   \order, \order, #4
-       blo     1b
+	@ Unless the divisor is very big, shift it up in multiples of
+	@ four bits, since this is the amount of unwinding in the main
+	@ division loop.  Continue shifting until the divisor is 
+	@ larger than the dividend.
+1:	cmp	\divisor, #0x10000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #4
+	addlo	\order, \order, #4
+	blo	1b
 
-       @ For very big divisors, we must shift it a bit at a time, or
-       @ we will be in danger of overflowing.
-1:     cmp     \divisor, #0x80000000
-       cmplo   \divisor, \dividend
-       movlo   \divisor, \divisor, lsl #1
-       addlo   \order, \order, #1
-       blo     1b
+	@ For very big divisors, we must shift it a bit at a time, or
+	@ we will be in danger of overflowing.
+1:	cmp	\divisor, #0x80000000
+	cmplo	\divisor, \dividend
+	movlo	\divisor, \divisor, lsl #1
+	addlo	\order, \order, #1
+	blo	1b
 
 #endif
 
-       @ Perform all needed substractions to keep only the reminder.
-       @ Do comparisons in batch of 4 first.
-       subs    \order, \order, #3              @ yes, 3 is intended here
-       blt     2f
+	@ Perform all needed substractions to keep only the reminder.
+	@ Do comparisons in batch of 4 first.
+	subs	\order, \order, #3		@ yes, 3 is intended here
+	blt	2f
 
-1:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       cmp     \dividend, \divisor,  lsr #1
-       subhs   \dividend, \dividend, \divisor, lsr #1
-       cmp     \dividend, \divisor,  lsr #2
-       subhs   \dividend, \dividend, \divisor, lsr #2
-       cmp     \dividend, \divisor,  lsr #3
-       subhs   \dividend, \dividend, \divisor, lsr #3
-       cmp     \dividend, #1
-       mov     \divisor, \divisor, lsr #4
-       subges  \order, \order, #4
-       bge     1b
+1:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	cmp	\dividend, \divisor,  lsr #1
+	subhs	\dividend, \dividend, \divisor, lsr #1
+	cmp	\dividend, \divisor,  lsr #2
+	subhs	\dividend, \dividend, \divisor, lsr #2
+	cmp	\dividend, \divisor,  lsr #3
+	subhs	\dividend, \dividend, \divisor, lsr #3
+	cmp	\dividend, #1
+	mov	\divisor, \divisor, lsr #4
+	subges	\order, \order, #4
+	bge	1b
 
-       tst     \order, #3
-       teqne   \dividend, #0
-       beq     5f
+	tst	\order, #3
+	teqne	\dividend, #0
+	beq	5f
 
-       @ Either 1, 2 or 3 comparison/substractions are left.
-2:     cmn     \order, #2
-       blt     4f
-       beq     3f
-       cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       mov     \divisor,  \divisor,  lsr #1
-3:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
-       mov     \divisor,  \divisor,  lsr #1
-4:     cmp     \dividend, \divisor
-       subhs   \dividend, \dividend, \divisor
+	@ Either 1, 2 or 3 comparison/substractions are left.
+2:	cmn	\order, #2
+	blt	4f
+	beq	3f
+	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	mov	\divisor,  \divisor,  lsr #1
+3:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
+	mov	\divisor,  \divisor,  lsr #1
+4:	cmp	\dividend, \divisor
+	subhs	\dividend, \dividend, \divisor
 5:
 .endm
 
@@ -208,27 +208,27 @@
 ENTRY(__aeabi_uidiv)
 UNWIND(.fnstart)
 
-       subs    r2, r1, #1
-       moveq   pc, lr
-       bcc     Ldiv0
-       cmp     r0, r1
-       bls     11f
-       tst     r1, r2
-       beq     12f
+	subs	r2, r1, #1
+	moveq	pc, lr
+	bcc	Ldiv0
+	cmp	r0, r1
+	bls	11f
+	tst	r1, r2
+	beq	12f
 
-       ARM_DIV_BODY r0, r1, r2, r3
+	ARM_DIV_BODY r0, r1, r2, r3
 
-       mov     r0, r2
-       mov     pc, lr
+	mov	r0, r2
+	mov	pc, lr
 
-11:    moveq   r0, #1
-       movne   r0, #0
-       mov     pc, lr
+11:	moveq	r0, #1
+	movne	r0, #0
+	mov	pc, lr
 
-12:    ARM_DIV2_ORDER r1, r2
+12:	ARM_DIV2_ORDER r1, r2
 
-       mov     r0, r0, lsr r2
-       mov     pc, lr
+	mov	r0, r0, lsr r2
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__udivsi3)
@@ -237,17 +237,17 @@
 ENTRY(__umodsi3)
 UNWIND(.fnstart)
 
-       subs    r2, r1, #1                      @ compare divisor with 1
-       bcc     Ldiv0
-       cmpne   r0, r1                          @ compare dividend with divisor
-       moveq   r0, #0
-       tsthi   r1, r2                          @ see if divisor is power of 2
-       andeq   r0, r0, r2
-       movls   pc, lr
+	subs	r2, r1, #1			@ compare divisor with 1
+	bcc	Ldiv0
+	cmpne	r0, r1				@ compare dividend with divisor
+	moveq   r0, #0
+	tsthi	r1, r2				@ see if divisor is power of 2
+	andeq	r0, r0, r2
+	movls	pc, lr
 
-       ARM_MOD_BODY r0, r1, r2, r3
+	ARM_MOD_BODY r0, r1, r2, r3
 
-       mov     pc, lr
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__umodsi3)
@@ -256,40 +256,40 @@
 ENTRY(__aeabi_idiv)
 UNWIND(.fnstart)
 
-       cmp     r1, #0
-       eor     ip, r0, r1                      @ save the sign of the result.
-       beq     Ldiv0
-       rsbmi   r1, r1, #0                      @ loops below use unsigned.
-       subs    r2, r1, #1                      @ division by 1 or -1 ?
-       beq     10f
-       movs    r3, r0
-       rsbmi   r3, r0, #0                      @ positive dividend value
-       cmp     r3, r1
-       bls     11f
-       tst     r1, r2                          @ divisor is power of 2 ?
-       beq     12f
+	cmp	r1, #0
+	eor	ip, r0, r1			@ save the sign of the result.
+	beq	Ldiv0
+	rsbmi	r1, r1, #0			@ loops below use unsigned.
+	subs	r2, r1, #1			@ division by 1 or -1 ?
+	beq	10f
+	movs	r3, r0
+	rsbmi	r3, r0, #0			@ positive dividend value
+	cmp	r3, r1
+	bls	11f
+	tst	r1, r2				@ divisor is power of 2 ?
+	beq	12f
 
-       ARM_DIV_BODY r3, r1, r0, r2
+	ARM_DIV_BODY r3, r1, r0, r2
 
-       cmp     ip, #0
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+	cmp	ip, #0
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
-10:    teq     ip, r0                          @ same sign ?
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+10:	teq	ip, r0				@ same sign ?
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
-11:    movlo   r0, #0
-       moveq   r0, ip, asr #31
-       orreq   r0, r0, #1
-       mov     pc, lr
+11:	movlo	r0, #0
+	moveq	r0, ip, asr #31
+	orreq	r0, r0, #1
+	mov	pc, lr
 
-12:    ARM_DIV2_ORDER r1, r2
+12:	ARM_DIV2_ORDER r1, r2
 
-       cmp     ip, #0
-       mov     r0, r3, lsr r2
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+	cmp	ip, #0
+	mov	r0, r3, lsr r2
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__divsi3)
@@ -298,23 +298,23 @@
 ENTRY(__modsi3)
 UNWIND(.fnstart)
 
-       cmp     r1, #0
-       beq     Ldiv0
-       rsbmi   r1, r1, #0                      @ loops below use unsigned.
-       movs    ip, r0                          @ preserve sign of dividend
-       rsbmi   r0, r0, #0                      @ if negative make positive
-       subs    r2, r1, #1                      @ compare divisor with 1
-       cmpne   r0, r1                          @ compare dividend with divisor
-       moveq   r0, #0
-       tsthi   r1, r2                          @ see if divisor is power of 2
-       andeq   r0, r0, r2
-       bls     10f
+	cmp	r1, #0
+	beq	Ldiv0
+	rsbmi	r1, r1, #0			@ loops below use unsigned.
+	movs	ip, r0				@ preserve sign of dividend
+	rsbmi	r0, r0, #0			@ if negative make positive
+	subs	r2, r1, #1			@ compare divisor with 1
+	cmpne	r0, r1				@ compare dividend with divisor
+	moveq	r0, #0
+	tsthi	r1, r2				@ see if divisor is power of 2
+	andeq	r0, r0, r2
+	bls	10f
 
-       ARM_MOD_BODY r0, r1, r2, r3
+	ARM_MOD_BODY r0, r1, r2, r3
 
-10:    cmp     ip, #0
-       rsbmi   r0, r0, #0
-       mov     pc, lr
+10:	cmp	ip, #0
+	rsbmi	r0, r0, #0
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__modsi3)
@@ -323,56 +323,56 @@
 
 ENTRY(__aeabi_uidivmod)
 UNWIND(.fnstart)
-UNWIND(.save {r0, r1, ip, lr}  )
+UNWIND(.save {r0, r1, ip, lr}	)
 
-       stmfd   sp!, {r0, r1, ip, lr}
-       bl      __aeabi_uidiv
-       ldmfd   sp!, {r1, r2, ip, lr}
-       mul     r3, r0, r2
-       sub     r1, r1, r3
-       mov     pc, lr
+	stmfd	sp!, {r0, r1, ip, lr}
+	bl	__aeabi_uidiv
+	ldmfd	sp!, {r1, r2, ip, lr}
+	mul	r3, r0, r2
+	sub	r1, r1, r3
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_uidivmod)
 
 ENTRY(__aeabi_idivmod)
 UNWIND(.fnstart)
-UNWIND(.save {r0, r1, ip, lr}  )
-       stmfd   sp!, {r0, r1, ip, lr}
-       bl      __aeabi_idiv
-       ldmfd   sp!, {r1, r2, ip, lr}
-       mul     r3, r0, r2
-       sub     r1, r1, r3
-       mov     pc, lr
+UNWIND(.save {r0, r1, ip, lr}	)
+	stmfd	sp!, {r0, r1, ip, lr}
+	bl	__aeabi_idiv
+	ldmfd	sp!, {r1, r2, ip, lr}
+	mul	r3, r0, r2
+	sub	r1, r1, r3
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_idivmod)
 
 ENTRY(__aeabi_uldivmod)
 UNWIND(.fnstart)
-UNWIND(.save {lr}      )
-       sub sp, sp, #8
-       stmfd   sp!, {sp, lr}
-       bl __qdivrem
-       ldr lr, [sp, #4]
-       add sp, sp, #8
-       ldmfd sp!, {r2, r3}
-       mov     pc, lr
+UNWIND(.save {lr}	)
+	sub sp, sp, #8
+	stmfd   sp!, {sp, lr}
+	bl __qdivrem
+	ldr lr, [sp, #4]
+	add sp, sp, #8
+	ldmfd sp!, {r2, r3}
+	mov	pc, lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_uldivmod)
 
 ENTRY(__aeabi_ldivmod)
 UNWIND(.fnstart)
-UNWIND(.save {lr}      )
-       sub sp, sp, #16
-       stmfd   sp!, {sp, lr}
-       bl __ldivmod_helper
-       ldr lr, [sp, #4]
-       add sp, sp, #16
-       ldmfd   sp!, {r2, r3}
-       mov     pc, lr
-
+UNWIND(.save {lr}	)
+	sub sp, sp, #16
+	stmfd   sp!, {sp, lr}
+	bl __ldivmod_helper
+	ldr lr, [sp, #4]
+	add sp, sp, #16
+	ldmfd	sp!, {r2, r3}
+	mov	pc, lr
+	
 UNWIND(.fnend)
 ENDPROC(__aeabi_ldivmod)
 #endif
@@ -381,9 +381,9 @@
 UNWIND(.fnstart)
 UNWIND(.pad #4)
 UNWIND(.save {lr})
-       str     lr, [sp, #-8]!
-       bl      __div0
-       mov     r0, #0                  @ About as wrong as it could be.
-       ldr     pc, [sp], #8
+	str	lr, [sp, #-8]!
+	bl	__div0
+	mov	r0, #0			@ About as wrong as it could be.
+	ldr	pc, [sp], #8
 UNWIND(.fnend)
 ENDPROC(Ldiv0)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/memcpy.S
--- a/xen/arch/arm/lib/memcpy.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/memcpy.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,9 +1,9 @@
 /*
  *  linux/arch/arm/lib/memcpy.S
  *
- *  Author:    Nicolas Pitre
- *  Created:   Sep 28, 2005
- *  Copyright: MontaVista Software, Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Sep 28, 2005
+ *  Copyright:	MontaVista Software, Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -13,46 +13,46 @@
 #include <xen/config.h>
 #include "assembler.h"
 
-#define LDR1W_SHIFT    0
-#define STR1W_SHIFT    0
+#define LDR1W_SHIFT	0
+#define STR1W_SHIFT	0
 
-       .macro ldr1w ptr reg abort
-       W(ldr) \reg, [\ptr], #4
-       .endm
+	.macro ldr1w ptr reg abort
+	W(ldr) \reg, [\ptr], #4
+	.endm
 
-       .macro ldr4w ptr reg1 reg2 reg3 reg4 abort
-       ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
-       .endm
+	.macro ldr4w ptr reg1 reg2 reg3 reg4 abort
+	ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
+	.endm
 
-       .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
-       ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
-       .endm
+	.macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
+	ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
+	.endm
 
-       .macro ldr1b ptr reg cond=al abort
-       ldr\cond\()b \reg, [\ptr], #1
-       .endm
+	.macro ldr1b ptr reg cond=al abort
+	ldr\cond\()b \reg, [\ptr], #1
+	.endm
 
-       .macro str1w ptr reg abort
-       W(str) \reg, [\ptr], #4
-       .endm
+	.macro str1w ptr reg abort
+	W(str) \reg, [\ptr], #4
+	.endm
 
-       .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
-       stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
-       .endm
+	.macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
+	stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
+	.endm
 
-       .macro str1b ptr reg cond=al abort
-       str\cond\()b \reg, [\ptr], #1
-       .endm
+	.macro str1b ptr reg cond=al abort
+	str\cond\()b \reg, [\ptr], #1
+	.endm
 
-       .macro enter reg1 reg2
-       stmdb sp!, {r0, \reg1, \reg2}
-       .endm
+	.macro enter reg1 reg2
+	stmdb sp!, {r0, \reg1, \reg2}
+	.endm
 
-       .macro exit reg1 reg2
-       ldmfd sp!, {r0, \reg1, \reg2}
-       .endm
+	.macro exit reg1 reg2
+	ldmfd sp!, {r0, \reg1, \reg2}
+	.endm
 
-       .text
+	.text
 
 /* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
 
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/memmove.S
--- a/xen/arch/arm/lib/memmove.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/memmove.S	Mon Feb 13 17:26:08 2012 +0000
@@ -1,9 +1,9 @@
 /*
  *  linux/arch/arm/lib/memmove.S
  *
- *  Author:    Nicolas Pitre
- *  Created:   Sep 28, 2005
- *  Copyright: (C) MontaVista Software Inc.
+ *  Author:	Nicolas Pitre
+ *  Created:	Sep 28, 2005
+ *  Copyright:	(C) MontaVista Software Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -14,7 +14,7 @@
 
 #include "assembler.h"
 
-               .text
+		.text
 
 /*
  * Prototype: void *memmove(void *dest, const void *src, size_t n);
@@ -29,172 +29,172 @@
 
 ENTRY(memmove)
 
-               subs    ip, r0, r1
-               cmphi   r2, ip
-               bls     memcpy
+		subs	ip, r0, r1
+		cmphi	r2, ip
+		bls	memcpy
 
-               stmfd   sp!, {r0, r4, lr}
-               add     r1, r1, r2
-               add     r0, r0, r2
-               subs    r2, r2, #4
-               blt     8f
-               ands    ip, r0, #3
-       PLD(    pld     [r1, #-4]               )
-               bne     9f
-               ands    ip, r1, #3
-               bne     10f
+		stmfd	sp!, {r0, r4, lr}
+		add	r1, r1, r2
+		add	r0, r0, r2
+		subs	r2, r2, #4
+		blt	8f
+		ands	ip, r0, #3
+	PLD(	pld	[r1, #-4]		)
+		bne	9f
+		ands	ip, r1, #3
+		bne	10f
 
-1:             subs    r2, r2, #(28)
-               stmfd   sp!, {r5 - r8}
-               blt     5f
+1:		subs	r2, r2, #(28)
+		stmfd	sp!, {r5 - r8}
+		blt	5f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
-       CALGN(  bcs     2f                      )
-       CALGN(  adr     r4, 6f                  )
-       CALGN(  subs    r2, r2, ip              )  @ C is set here
-       CALGN(  rsb     ip, ip, #32             )
-       CALGN(  add     pc, r4, ip              )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	sbcnes	r4, ip, r2		)  @ C is always set here
+	CALGN(	bcs	2f			)
+	CALGN(	adr	r4, 6f			)
+	CALGN(	subs	r2, r2, ip		)  @ C is set here
+	CALGN(	rsb	ip, ip, #32		)
+	CALGN(	add	pc, r4, ip		)
 
-       PLD(    pld     [r1, #-4]               )
-2:     PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #-32]              )
-       PLD(    blt     4f                      )
-       PLD(    pld     [r1, #-64]              )
-       PLD(    pld     [r1, #-96]              )
+	PLD(	pld	[r1, #-4]		)
+2:	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #-32]		)
+	PLD(	blt	4f			)
+	PLD(	pld	[r1, #-64]		)
+	PLD(	pld	[r1, #-96]		)
 
-3:     PLD(    pld     [r1, #-128]             )
-4:             ldmdb   r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
-               subs    r2, r2, #32
-               stmdb   r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
-               bge     3b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     4b                      )
+3:	PLD(	pld	[r1, #-128]		)
+4:		ldmdb	r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
+		subs	r2, r2, #32
+		stmdb	r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
+		bge	3b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	4b			)
 
-5:             ands    ip, r2, #28
-               rsb     ip, ip, #32
-               addne   pc, pc, ip              @ C is always clear here
-               b       7f
-6:             W(nop)
-               W(ldr)  r3, [r1, #-4]!
-               W(ldr)  r4, [r1, #-4]!
-               W(ldr)  r5, [r1, #-4]!
-               W(ldr)  r6, [r1, #-4]!
-               W(ldr)  r7, [r1, #-4]!
-               W(ldr)  r8, [r1, #-4]!
-               W(ldr)  lr, [r1, #-4]!
+5:		ands	ip, r2, #28
+		rsb	ip, ip, #32
+		addne	pc, pc, ip		@ C is always clear here
+		b	7f
+6:		W(nop)
+		W(ldr)	r3, [r1, #-4]!
+		W(ldr)	r4, [r1, #-4]!
+		W(ldr)	r5, [r1, #-4]!
+		W(ldr)	r6, [r1, #-4]!
+		W(ldr)	r7, [r1, #-4]!
+		W(ldr)	r8, [r1, #-4]!
+		W(ldr)	lr, [r1, #-4]!
 
-               add     pc, pc, ip
-               nop
-               W(nop)
-               W(str)  r3, [r0, #-4]!
-               W(str)  r4, [r0, #-4]!
-               W(str)  r5, [r0, #-4]!
-               W(str)  r6, [r0, #-4]!
-               W(str)  r7, [r0, #-4]!
-               W(str)  r8, [r0, #-4]!
-               W(str)  lr, [r0, #-4]!
+		add	pc, pc, ip
+		nop
+		W(nop)
+		W(str)	r3, [r0, #-4]!
+		W(str)	r4, [r0, #-4]!
+		W(str)	r5, [r0, #-4]!
+		W(str)	r6, [r0, #-4]!
+		W(str)	r7, [r0, #-4]!
+		W(str)	r8, [r0, #-4]!
+		W(str)	lr, [r0, #-4]!
 
-       CALGN(  bcs     2b                      )
+	CALGN(	bcs	2b			)
 
-7:             ldmfd   sp!, {r5 - r8}
+7:		ldmfd	sp!, {r5 - r8}
 
-8:             movs    r2, r2, lsl #31
-               ldrneb  r3, [r1, #-1]!
-               ldrcsb  r4, [r1, #-1]!
-               ldrcsb  ip, [r1, #-1]
-               strneb  r3, [r0, #-1]!
-               strcsb  r4, [r0, #-1]!
-               strcsb  ip, [r0, #-1]
-               ldmfd   sp!, {r0, r4, pc}
+8:		movs	r2, r2, lsl #31
+		ldrneb	r3, [r1, #-1]!
+		ldrcsb	r4, [r1, #-1]!
+		ldrcsb	ip, [r1, #-1]
+		strneb	r3, [r0, #-1]!
+		strcsb	r4, [r0, #-1]!
+		strcsb	ip, [r0, #-1]
+		ldmfd	sp!, {r0, r4, pc}
 
-9:             cmp     ip, #2
-               ldrgtb  r3, [r1, #-1]!
-               ldrgeb  r4, [r1, #-1]!
-               ldrb    lr, [r1, #-1]!
-               strgtb  r3, [r0, #-1]!
-               strgeb  r4, [r0, #-1]!
-               subs    r2, r2, ip
-               strb    lr, [r0, #-1]!
-               blt     8b
-               ands    ip, r1, #3
-               beq     1b
+9:		cmp	ip, #2
+		ldrgtb	r3, [r1, #-1]!
+		ldrgeb	r4, [r1, #-1]!
+		ldrb	lr, [r1, #-1]!
+		strgtb	r3, [r0, #-1]!
+		strgeb	r4, [r0, #-1]!
+		subs	r2, r2, ip
+		strb	lr, [r0, #-1]!
+		blt	8b
+		ands	ip, r1, #3
+		beq	1b
 
-10:            bic     r1, r1, #3
-               cmp     ip, #2
-               ldr     r3, [r1, #0]
-               beq     17f
-               blt     18f
+10:		bic	r1, r1, #3
+		cmp	ip, #2
+		ldr	r3, [r1, #0]
+		beq	17f
+		blt	18f
 
 
-               .macro  backward_copy_shift push pull
+		.macro	backward_copy_shift push pull
 
-               subs    r2, r2, #28
-               blt     14f
+		subs	r2, r2, #28
+		blt	14f
 
-       CALGN(  ands    ip, r0, #31             )
-       CALGN(  sbcnes  r4, ip, r2              )  @ C is always set here
-       CALGN(  subcc   r2, r2, ip              )
-       CALGN(  bcc     15f                     )
+	CALGN(	ands	ip, r0, #31		)
+	CALGN(	sbcnes	r4, ip, r2		)  @ C is always set here
+	CALGN(	subcc	r2, r2, ip		)
+	CALGN(	bcc	15f			)
 
-11:            stmfd   sp!, {r5 - r9}
+11:		stmfd	sp!, {r5 - r9}
 
-       PLD(    pld     [r1, #-4]               )
-       PLD(    subs    r2, r2, #96             )
-       PLD(    pld     [r1, #-32]              )
-       PLD(    blt     13f                     )
-       PLD(    pld     [r1, #-64]              )
-       PLD(    pld     [r1, #-96]              )
+	PLD(	pld	[r1, #-4]		)
+	PLD(	subs	r2, r2, #96		)
+	PLD(	pld	[r1, #-32]		)
+	PLD(	blt	13f			)
+	PLD(	pld	[r1, #-64]		)
+	PLD(	pld	[r1, #-96]		)
 
-12:    PLD(    pld     [r1, #-128]             )
-13:            ldmdb   r1!, {r7, r8, r9, ip}
-               mov     lr, r3, push #\push
-               subs    r2, r2, #32
-               ldmdb   r1!, {r3, r4, r5, r6}
-               orr     lr, lr, ip, pull #\pull
-               mov     ip, ip, push #\push
-               orr     ip, ip, r9, pull #\pull
-               mov     r9, r9, push #\push
-               orr     r9, r9, r8, pull #\pull
-               mov     r8, r8, push #\push
-               orr     r8, r8, r7, pull #\pull
-               mov     r7, r7, push #\push
-               orr     r7, r7, r6, pull #\pull
-               mov     r6, r6, push #\push
-               orr     r6, r6, r5, pull #\pull
-               mov     r5, r5, push #\push
-               orr     r5, r5, r4, pull #\pull
-               mov     r4, r4, push #\push
-               orr     r4, r4, r3, pull #\pull
-               stmdb   r0!, {r4 - r9, ip, lr}
-               bge     12b
-       PLD(    cmn     r2, #96                 )
-       PLD(    bge     13b                     )
+12:	PLD(	pld	[r1, #-128]		)
+13:		ldmdb   r1!, {r7, r8, r9, ip}
+		mov     lr, r3, push #\push
+		subs    r2, r2, #32
+		ldmdb   r1!, {r3, r4, r5, r6}
+		orr     lr, lr, ip, pull #\pull
+		mov     ip, ip, push #\push
+		orr     ip, ip, r9, pull #\pull
+		mov     r9, r9, push #\push
+		orr     r9, r9, r8, pull #\pull
+		mov     r8, r8, push #\push
+		orr     r8, r8, r7, pull #\pull
+		mov     r7, r7, push #\push
+		orr     r7, r7, r6, pull #\pull
+		mov     r6, r6, push #\push
+		orr     r6, r6, r5, pull #\pull
+		mov     r5, r5, push #\push
+		orr     r5, r5, r4, pull #\pull
+		mov     r4, r4, push #\push
+		orr     r4, r4, r3, pull #\pull
+		stmdb   r0!, {r4 - r9, ip, lr}
+		bge	12b
+	PLD(	cmn	r2, #96			)
+	PLD(	bge	13b			)
 
-               ldmfd   sp!, {r5 - r9}
+		ldmfd	sp!, {r5 - r9}
 
-14:            ands    ip, r2, #28
-               beq     16f
+14:		ands	ip, r2, #28
+		beq	16f
 
-15:            mov     lr, r3, push #\push
-               ldr     r3, [r1, #-4]!
-               subs    ip, ip, #4
-               orr     lr, lr, r3, pull #\pull
-               str     lr, [r0, #-4]!
-               bgt     15b
-       CALGN(  cmp     r2, #0                  )
-       CALGN(  bge     11b                     )
+15:		mov     lr, r3, push #\push
+		ldr	r3, [r1, #-4]!
+		subs	ip, ip, #4
+		orr	lr, lr, r3, pull #\pull
+		str	lr, [r0, #-4]!
+		bgt	15b
+	CALGN(	cmp	r2, #0			)
+	CALGN(	bge	11b			)
 
-16:            add     r1, r1, #(\pull / 8)
-               b       8b
+16:		add	r1, r1, #(\pull / 8)
+		b	8b
 
-               .endm
+		.endm
 
 
-               backward_copy_shift     push=8  pull=24
+		backward_copy_shift	push=8	pull=24
 
-17:            backward_copy_shift     push=16 pull=16
+17:		backward_copy_shift	push=16	pull=16
 
-18:            backward_copy_shift     push=24 pull=8
+18:		backward_copy_shift	push=24	pull=8
 
 ENDPROC(memmove)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/memset.S
--- a/xen/arch/arm/lib/memset.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/memset.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,33 +14,33 @@
 
 #include "assembler.h"
 
-       .text
-       .align  5
-       .word   0
+	.text
+	.align	5
+	.word	0
 
-1:     subs    r2, r2, #4              @ 1 do we have enough
-       blt     5f                      @ 1 bytes to align with?
-       cmp     r3, #2                  @ 1
-       strltb  r1, [r0], #1            @ 1
-       strleb  r1, [r0], #1            @ 1
-       strb    r1, [r0], #1            @ 1
-       add     r2, r2, r3              @ 1 (r2 = r2 - (4 - r3))
+1:	subs	r2, r2, #4		@ 1 do we have enough
+	blt	5f			@ 1 bytes to align with?
+	cmp	r3, #2			@ 1
+	strltb	r1, [r0], #1		@ 1
+	strleb	r1, [r0], #1		@ 1
+	strb	r1, [r0], #1		@ 1
+	add	r2, r2, r3		@ 1 (r2 = r2 - (4 - r3))
 /*
  * The pointer is now aligned and the length is adjusted.  Try doing the
  * memset again.
  */
 
 ENTRY(memset)
-       ands    r3, r0, #3              @ 1 unaligned?
-       bne     1b                      @ 1
+	ands	r3, r0, #3		@ 1 unaligned?
+	bne	1b			@ 1
 /*
  * we know that the pointer in r0 is aligned to a word boundary.
  */
-       orr     r1, r1, r1, lsl #8
-       orr     r1, r1, r1, lsl #16
-       mov     r3, r1
-       cmp     r2, #16
-       blt     4f
+	orr	r1, r1, r1, lsl #8
+	orr	r1, r1, r1, lsl #16
+	mov	r3, r1
+	cmp	r2, #16
+	blt	4f
 
 #if ! CALGN(1)+0
 
@@ -48,26 +48,26 @@
  * We need an extra register for this loop - save the return address and
  * use the LR
  */
-       str     lr, [sp, #-4]!
-       mov     ip, r1
-       mov     lr, r1
+	str	lr, [sp, #-4]!
+	mov	ip, r1
+	mov	lr, r1
 
-2:     subs    r2, r2, #64
-       stmgeia r0!, {r1, r3, ip, lr}   @ 64 bytes at a time.
-       stmgeia r0!, {r1, r3, ip, lr}
-       stmgeia r0!, {r1, r3, ip, lr}
-       stmgeia r0!, {r1, r3, ip, lr}
-       bgt     2b
-       ldmeqfd sp!, {pc}               @ Now <64 bytes to go.
+2:	subs	r2, r2, #64
+	stmgeia	r0!, {r1, r3, ip, lr}	@ 64 bytes at a time.
+	stmgeia	r0!, {r1, r3, ip, lr}
+	stmgeia	r0!, {r1, r3, ip, lr}
+	stmgeia	r0!, {r1, r3, ip, lr}
+	bgt	2b
+	ldmeqfd	sp!, {pc}		@ Now <64 bytes to go.
 /*
  * No need to correct the count; we're only testing bits from now on
  */
-       tst     r2, #32
-       stmneia r0!, {r1, r3, ip, lr}
-       stmneia r0!, {r1, r3, ip, lr}
-       tst     r2, #16
-       stmneia r0!, {r1, r3, ip, lr}
-       ldr     lr, [sp], #4
+	tst	r2, #32
+	stmneia	r0!, {r1, r3, ip, lr}
+	stmneia	r0!, {r1, r3, ip, lr}
+	tst	r2, #16
+	stmneia	r0!, {r1, r3, ip, lr}
+	ldr	lr, [sp], #4
 
 #else
 
@@ -76,54 +76,54 @@
  * whole cache lines at once.
  */
 
-       stmfd   sp!, {r4-r7, lr}
-       mov     r4, r1
-       mov     r5, r1
-       mov     r6, r1
-       mov     r7, r1
-       mov     ip, r1
-       mov     lr, r1
+	stmfd	sp!, {r4-r7, lr}
+	mov	r4, r1
+	mov	r5, r1
+	mov	r6, r1
+	mov	r7, r1
+	mov	ip, r1
+	mov	lr, r1
 
-       cmp     r2, #96
-       tstgt   r0, #31
-       ble     3f
+	cmp	r2, #96
+	tstgt	r0, #31
+	ble	3f
 
-       and     ip, r0, #31
-       rsb     ip, ip, #32
-       sub     r2, r2, ip
-       movs    ip, ip, lsl #(32 - 4)
-       stmcsia r0!, {r4, r5, r6, r7}
-       stmmiia r0!, {r4, r5}
-       tst     ip, #(1 << 30)
-       mov     ip, r1
-       strne   r1, [r0], #4
+	and	ip, r0, #31
+	rsb	ip, ip, #32
+	sub	r2, r2, ip
+	movs	ip, ip, lsl #(32 - 4)
+	stmcsia	r0!, {r4, r5, r6, r7}
+	stmmiia	r0!, {r4, r5}
+	tst	ip, #(1 << 30)
+	mov	ip, r1
+	strne	r1, [r0], #4
 
-3:     subs    r2, r2, #64
-       stmgeia r0!, {r1, r3-r7, ip, lr}
-       stmgeia r0!, {r1, r3-r7, ip, lr}
-       bgt     3b
-       ldmeqfd sp!, {r4-r7, pc}
+3:	subs	r2, r2, #64
+	stmgeia	r0!, {r1, r3-r7, ip, lr}
+	stmgeia	r0!, {r1, r3-r7, ip, lr}
+	bgt	3b
+	ldmeqfd	sp!, {r4-r7, pc}
 
-       tst     r2, #32
-       stmneia r0!, {r1, r3-r7, ip, lr}
-       tst     r2, #16
-       stmneia r0!, {r4-r7}
-       ldmfd   sp!, {r4-r7, lr}
+	tst	r2, #32
+	stmneia	r0!, {r1, r3-r7, ip, lr}
+	tst	r2, #16
+	stmneia	r0!, {r4-r7}
+	ldmfd	sp!, {r4-r7, lr}
 
 #endif
 
-4:     tst     r2, #8
-       stmneia r0!, {r1, r3}
-       tst     r2, #4
-       strne   r1, [r0], #4
+4:	tst	r2, #8
+	stmneia	r0!, {r1, r3}
+	tst	r2, #4
+	strne	r1, [r0], #4
 /*
  * When we get here, we've got less than 4 bytes to zero.  We
  * may have an unaligned pointer as well.
  */
-5:     tst     r2, #2
-       strneb  r1, [r0], #1
-       strneb  r1, [r0], #1
-       tst     r2, #1
-       strneb  r1, [r0], #1
-       mov     pc, lr
+5:	tst	r2, #2
+	strneb	r1, [r0], #1
+	strneb	r1, [r0], #1
+	tst	r2, #1
+	strneb	r1, [r0], #1
+	mov	pc, lr
 ENDPROC(memset)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/memzero.S
--- a/xen/arch/arm/lib/memzero.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/memzero.S	Mon Feb 13 17:26:08 2012 +0000
@@ -12,35 +12,35 @@
 
 #include "assembler.h"
 
-       .text
-       .align  5
-       .word   0
+	.text
+	.align	5
+	.word	0
 /*
  * Align the pointer in r0.  r3 contains the number of bytes that we are
  * mis-aligned by, and r1 is the number of bytes.  If r1 < 4, then we
  * don't bother; we use byte stores instead.
  */
-1:     subs    r1, r1, #4              @ 1 do we have enough
-       blt     5f                      @ 1 bytes to align with?
-       cmp     r3, #2                  @ 1
-       strltb  r2, [r0], #1            @ 1
-       strleb  r2, [r0], #1            @ 1
-       strb    r2, [r0], #1            @ 1
-       add     r1, r1, r3              @ 1 (r1 = r1 - (4 - r3))
+1:	subs	r1, r1, #4		@ 1 do we have enough
+	blt	5f			@ 1 bytes to align with?
+	cmp	r3, #2			@ 1
+	strltb	r2, [r0], #1		@ 1
+	strleb	r2, [r0], #1		@ 1
+	strb	r2, [r0], #1		@ 1
+	add	r1, r1, r3		@ 1 (r1 = r1 - (4 - r3))
 /*
  * The pointer is now aligned and the length is adjusted.  Try doing the
  * memzero again.
  */
 
 ENTRY(__memzero)
-       mov     r2, #0                  @ 1
-       ands    r3, r0, #3              @ 1 unaligned?
-       bne     1b                      @ 1
+	mov	r2, #0			@ 1
+	ands	r3, r0, #3		@ 1 unaligned?
+	bne	1b			@ 1
 /*
  * r3 = 0, and we know that the pointer in r0 is aligned to a word boundary.
  */
-       cmp     r1, #16                 @ 1 we can skip this chunk if we
-       blt     4f                      @ 1 have < 16 bytes
+	cmp	r1, #16			@ 1 we can skip this chunk if we
+	blt	4f			@ 1 have < 16 bytes
 
 #if ! CALGN(1)+0
 
@@ -48,26 +48,26 @@
  * We need an extra register for this loop - save the return address and
  * use the LR
  */
-       str     lr, [sp, #-4]!          @ 1
-       mov     ip, r2                  @ 1
-       mov     lr, r2                  @ 1
+	str	lr, [sp, #-4]!		@ 1
+	mov	ip, r2			@ 1
+	mov	lr, r2			@ 1
 
-3:     subs    r1, r1, #64             @ 1 write 32 bytes out per loop
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       stmgeia r0!, {r2, r3, ip, lr}   @ 4
-       bgt     3b                      @ 1
-       ldmeqfd sp!, {pc}               @ 1/2 quick exit
+3:	subs	r1, r1, #64		@ 1 write 32 bytes out per loop
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	stmgeia	r0!, {r2, r3, ip, lr}	@ 4
+	bgt	3b			@ 1
+	ldmeqfd	sp!, {pc}		@ 1/2 quick exit
 /*
  * No need to correct the count; we're only testing bits from now on
  */
-       tst     r1, #32                 @ 1
-       stmneia r0!, {r2, r3, ip, lr}   @ 4
-       stmneia r0!, {r2, r3, ip, lr}   @ 4
-       tst     r1, #16                 @ 1 16 bytes or more?
-       stmneia r0!, {r2, r3, ip, lr}   @ 4
-       ldr     lr, [sp], #4            @ 1
+	tst	r1, #32			@ 1
+	stmneia	r0!, {r2, r3, ip, lr}	@ 4
+	stmneia	r0!, {r2, r3, ip, lr}	@ 4
+	tst	r1, #16			@ 1 16 bytes or more?
+	stmneia	r0!, {r2, r3, ip, lr}	@ 4
+	ldr	lr, [sp], #4		@ 1
 
 #else
 
@@ -76,52 +76,52 @@
  * whole cache lines at once.
  */
 
-       stmfd   sp!, {r4-r7, lr}
-       mov     r4, r2
-       mov     r5, r2
-       mov     r6, r2
-       mov     r7, r2
-       mov     ip, r2
-       mov     lr, r2
+	stmfd	sp!, {r4-r7, lr}
+	mov	r4, r2
+	mov	r5, r2
+	mov	r6, r2
+	mov	r7, r2
+	mov	ip, r2
+	mov	lr, r2
 
-       cmp     r1, #96
-       andgts  ip, r0, #31
-       ble     3f
+	cmp	r1, #96
+	andgts	ip, r0, #31
+	ble	3f
 
-       rsb     ip, ip, #32
-       sub     r1, r1, ip
-       movs    ip, ip, lsl #(32 - 4)
-       stmcsia r0!, {r4, r5, r6, r7}
-       stmmiia r0!, {r4, r5}
-       movs    ip, ip, lsl #2
-       strcs   r2, [r0], #4
+	rsb	ip, ip, #32
+	sub	r1, r1, ip
+	movs	ip, ip, lsl #(32 - 4)
+	stmcsia	r0!, {r4, r5, r6, r7}
+	stmmiia	r0!, {r4, r5}
+	movs	ip, ip, lsl #2
+	strcs	r2, [r0], #4
 
-3:     subs    r1, r1, #64
-       stmgeia r0!, {r2-r7, ip, lr}
-       stmgeia r0!, {r2-r7, ip, lr}
-       bgt     3b
-       ldmeqfd sp!, {r4-r7, pc}
+3:	subs	r1, r1, #64
+	stmgeia	r0!, {r2-r7, ip, lr}
+	stmgeia	r0!, {r2-r7, ip, lr}
+	bgt	3b
+	ldmeqfd	sp!, {r4-r7, pc}
 
-       tst     r1, #32
-       stmneia r0!, {r2-r7, ip, lr}
-       tst     r1, #16
-       stmneia r0!, {r4-r7}
-       ldmfd   sp!, {r4-r7, lr}
+	tst	r1, #32
+	stmneia	r0!, {r2-r7, ip, lr}
+	tst	r1, #16
+	stmneia	r0!, {r4-r7}
+	ldmfd	sp!, {r4-r7, lr}
 
 #endif
 
-4:     tst     r1, #8                  @ 1 8 bytes or more?
-       stmneia r0!, {r2, r3}           @ 2
-       tst     r1, #4                  @ 1 4 bytes or more?
-       strne   r2, [r0], #4            @ 1
+4:	tst	r1, #8			@ 1 8 bytes or more?
+	stmneia	r0!, {r2, r3}		@ 2
+	tst	r1, #4			@ 1 4 bytes or more?
+	strne	r2, [r0], #4		@ 1
 /*
  * When we get here, we've got less than 4 bytes to zero.  We
  * may have an unaligned pointer as well.
  */
-5:     tst     r1, #2                  @ 1 2 bytes or more?
-       strneb  r2, [r0], #1            @ 1
-       strneb  r2, [r0], #1            @ 1
-       tst     r1, #1                  @ 1 a byte left over
-       strneb  r2, [r0], #1            @ 1
-       mov     pc, lr                  @ 1
+5:	tst	r1, #2			@ 1 2 bytes or more?
+	strneb	r2, [r0], #1		@ 1
+	strneb	r2, [r0], #1		@ 1
+	tst	r1, #1			@ 1 a byte left over
+	strneb	r2, [r0], #1		@ 1
+	mov	pc, lr			@ 1
 ENDPROC(__memzero)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/setbit.S
--- a/xen/arch/arm/lib/setbit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/setbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -11,8 +11,8 @@
 
 #include "assembler.h"
 #include "bitops.h"
-       .text
+	.text
 
 ENTRY(_set_bit)
-       bitop   orr
+	bitop	orr
 ENDPROC(_set_bit)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/testchangebit.S
--- a/xen/arch/arm/lib/testchangebit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/testchangebit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_test_and_change_bit)
-       testop  eor, str
+	testop	eor, str
 ENDPROC(_test_and_change_bit)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/testclearbit.S
--- a/xen/arch/arm/lib/testclearbit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/testclearbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_test_and_clear_bit)
-       testop  bicne, strne
+	testop	bicne, strne
 ENDPROC(_test_and_clear_bit)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/arch/arm/lib/testsetbit.S
--- a/xen/arch/arm/lib/testsetbit.S	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/arch/arm/lib/testsetbit.S	Mon Feb 13 17:26:08 2012 +0000
@@ -14,5 +14,5 @@
                 .text
 
 ENTRY(_test_and_set_bit)
-       testop  orreq, streq
+	testop	orreq, streq
 ENDPROC(_test_and_set_bit)
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/include/asm-arm/bitops.h
--- a/xen/include/asm-arm/bitops.h	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/include/asm-arm/bitops.h	Mon Feb 13 17:26:08 2012 +0000
@@ -115,19 +115,19 @@
 /*
  * These are the little endian, atomic definitions.
  */
-#define find_first_zero_bit(p,sz)      _find_first_zero_bit_le(p,sz)
-#define find_next_zero_bit(p,sz,off)   _find_next_zero_bit_le(p,sz,off)
-#define find_first_bit(p,sz)           _find_first_bit_le(p,sz)
-#define find_next_bit(p,sz,off)                _find_next_bit_le(p,sz,off)
+#define find_first_zero_bit(p,sz)	_find_first_zero_bit_le(p,sz)
+#define find_next_zero_bit(p,sz,off)	_find_next_zero_bit_le(p,sz,off)
+#define find_first_bit(p,sz)		_find_first_bit_le(p,sz)
+#define find_next_bit(p,sz,off)		_find_next_bit_le(p,sz,off)
 
 #else
 /*
  * These are the big endian, atomic definitions.
  */
-#define find_first_zero_bit(p,sz)      _find_first_zero_bit_be(p,sz)
-#define find_next_zero_bit(p,sz,off)   _find_next_zero_bit_be(p,sz,off)
-#define find_first_bit(p,sz)           _find_first_bit_be(p,sz)
-#define find_next_bit(p,sz,off)                _find_next_bit_be(p,sz,off)
+#define find_first_zero_bit(p,sz)	_find_first_zero_bit_be(p,sz)
+#define find_next_zero_bit(p,sz,off)	_find_next_zero_bit_be(p,sz,off)
+#define find_first_bit(p,sz)		_find_first_bit_be(p,sz)
+#define find_next_bit(p,sz,off)		_find_next_bit_be(p,sz,off)
 
 #endif
 
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/include/asm-arm/div64.h
--- a/xen/include/asm-arm/div64.h	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/include/asm-arm/div64.h	Mon Feb 13 17:26:08 2012 +0000
@@ -10,9 +10,9 @@
  *
  * uint32_t do_div(uint64_t *n, uint32_t base)
  * {
- *     uint32_t remainder = *n % base;
- *     *n = *n / base;
- *     return remainder;
+ * 	uint32_t remainder = *n % base;
+ * 	*n = *n / base;
+ * 	return remainder;
  * }
  *
  * In other words, a 64-bit dividend with a 32-bit divisor producing
@@ -29,22 +29,22 @@
 #define __xh "r1"
 #endif
 
-#define __do_div_asm(n, base)                                  \
-({                                                             \
-       register unsigned int __base      asm("r4") = base;     \
-       register unsigned long long __n   asm("r0") = n;        \
-       register unsigned long long __res asm("r2");            \
-       register unsigned int __rem       asm(__xh);            \
-       asm(    __asmeq("%0", __xh)                             \
-               __asmeq("%1", "r2")                             \
-               __asmeq("%2", "r0")                             \
-               __asmeq("%3", "r4")                             \
-               "bl     __do_div64"                             \
-               : "=r" (__rem), "=r" (__res)                    \
-               : "r" (__n), "r" (__base)                       \
-               : "ip", "lr", "cc");                            \
-       n = __res;                                              \
-       __rem;                                                  \
+#define __do_div_asm(n, base)					\
+({								\
+	register unsigned int __base      asm("r4") = base;	\
+	register unsigned long long __n   asm("r0") = n;	\
+	register unsigned long long __res asm("r2");		\
+	register unsigned int __rem       asm(__xh);		\
+	asm(	__asmeq("%0", __xh)				\
+		__asmeq("%1", "r2")				\
+		__asmeq("%2", "r0")				\
+		__asmeq("%3", "r4")				\
+		"bl	__do_div64"				\
+		: "=r" (__rem), "=r" (__res)			\
+		: "r" (__n), "r" (__base)			\
+		: "ip", "lr", "cc");				\
+	n = __res;						\
+	__rem;							\
 })
 
 #if __GNUC__ < 4
@@ -71,155 +71,155 @@
  * sufficiently recent to perform proper long long constant propagation.
  * (It is unfortunate that gcc doesn't perform all this internally.)
  */
-#define do_div(n, base)                                                        \
-({                                                                     \
-       unsigned int __r, __b = (base);                                 \
-       if (!__builtin_constant_p(__b) || __b == 0) {                   \
-               /* non-constant divisor (or zero): slow path */         \
-               __r = __do_div_asm(n, __b);                             \
-       } else if ((__b & (__b - 1)) == 0) {                            \
-               /* Trivial: __b is constant and a power of 2 */         \
-               /* gcc does the right thing with this code.  */         \
-               __r = n;                                                \
-               __r &= (__b - 1);                                       \
-               n /= __b;                                               \
-       } else {                                                        \
-               /* Multiply by inverse of __b: n/b = n*(p/b)/p       */ \
-               /* We rely on the fact that most of this code gets   */ \
-               /* optimized away at compile time due to constant    */ \
-               /* propagation and only a couple inline assembly     */ \
-               /* instructions should remain. Better avoid any      */ \
-               /* code construct that might prevent that.           */ \
-               unsigned long long __res, __x, __t, __m, __n = n;       \
-               unsigned int __c, __p, __z = 0;                         \
-               /* preserve low part of n for reminder computation */   \
-               __r = __n;                                              \
-               /* determine number of bits to represent __b */         \
-               __p = 1 << __div64_fls(__b);                            \
-               /* compute __m = ((__p << 64) + __b - 1) / __b */       \
-               __m = (~0ULL / __b) * __p;                              \
-               __m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b;     \
-               /* compute __res = __m*(~0ULL/__b*__b-1)/(__p << 64) */ \
-               __x = ~0ULL / __b * __b - 1;                            \
-               __res = (__m & 0xffffffff) * (__x & 0xffffffff);        \
-               __res >>= 32;                                           \
-               __res += (__m & 0xffffffff) * (__x >> 32);              \
-               __t = __res;                                            \
-               __res += (__x & 0xffffffff) * (__m >> 32);              \
-               __t = (__res < __t) ? (1ULL << 32) : 0;                 \
-               __res = (__res >> 32) + __t;                            \
-               __res += (__m >> 32) * (__x >> 32);                     \
-               __res /= __p;                                           \
-               /* Now sanitize and optimize what we've got. */         \
-               if (~0ULL % (__b / (__b & -__b)) == 0) {                \
-                       /* those cases can be simplified with: */       \
-                       __n /= (__b & -__b);                            \
-                       __m = ~0ULL / (__b / (__b & -__b));             \
-                       __p = 1;                                        \
-                       __c = 1;                                        \
-               } else if (__res != __x / __b) {                        \
-                       /* We can't get away without a correction    */ \
-                       /* to compensate for bit truncation errors.  */ \
-                       /* To avoid it we'd need an additional bit   */ \
-                       /* to represent __m which would overflow it. */ \
-                       /* Instead we do m=p/b and n/b=(n*m+m)/p.    */ \
-                       __c = 1;                                        \
-                       /* Compute __m = (__p << 64) / __b */           \
-                       __m = (~0ULL / __b) * __p;                      \
-                       __m += ((~0ULL % __b + 1) * __p) / __b;         \
-               } else {                                                \
-                       /* Reduce __m/__p, and try to clear bit 31   */ \
-                       /* of __m when possible otherwise that'll    */ \
-                       /* need extra overflow handling later.       */ \
-                       unsigned int __bits = -(__m & -__m);            \
-                       __bits |= __m >> 32;                            \
-                       __bits = (~__bits) << 1;                        \
-                       /* If __bits == 0 then setting bit 31 is     */ \
-                       /* unavoidable.  Simply apply the maximum    */ \
-                       /* possible reduction in that case.          */ \
-                       /* Otherwise the MSB of __bits indicates the */ \
-                       /* best reduction we should apply.           */ \
-                       if (!__bits) {                                  \
-                               __p /= (__m & -__m);                    \
-                               __m /= (__m & -__m);                    \
-                       } else {                                        \
-                               __p >>= __div64_fls(__bits);            \
-                               __m >>= __div64_fls(__bits);            \
-                       }                                               \
-                       /* No correction needed. */                     \
-                       __c = 0;                                        \
-               }                                                       \
-               /* Now we have a combination of 2 conditions:        */ \
-               /* 1) whether or not we need a correction (__c), and */ \
-               /* 2) whether or not there might be an overflow in   */ \
-               /*    the cross product (__m & ((1<<63) | (1<<31)))  */ \
-               /* Select the best insn combination to perform the   */ \
-               /* actual __m * __n / (__p << 64) operation.         */ \
-               if (!__c) {                                             \
-                       asm (   "umull  %Q0, %R0, %1, %Q2\n\t"          \
-                               "mov    %Q0, #0"                        \
-                               : "=&r" (__res)                         \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               } else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {    \
-                       __res = __m;                                    \
-                       asm (   "umlal  %Q0, %R0, %Q1, %Q2\n\t"         \
-                               "mov    %Q0, #0"                        \
-                               : "+&r" (__res)                         \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               } else {                                                \
-                       asm (   "umull  %Q0, %R0, %Q1, %Q2\n\t"         \
-                               "cmn    %Q0, %Q1\n\t"                   \
-                               "adcs   %R0, %R0, %R1\n\t"              \
-                               "adc    %Q0, %3, #0"                    \
-                               : "=&r" (__res)                         \
-                               : "r" (__m), "r" (__n), "r" (__z)       \
-                               : "cc" );                               \
-               }                                                       \
-               if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {           \
-                       asm (   "umlal  %R0, %Q0, %R1, %Q2\n\t"         \
-                               "umlal  %R0, %Q0, %Q1, %R2\n\t"         \
-                               "mov    %R0, #0\n\t"                    \
-                               "umlal  %Q0, %R0, %R1, %R2"             \
-                               : "+&r" (__res)                         \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               } else {                                                \
-                       asm (   "umlal  %R0, %Q0, %R2, %Q3\n\t"         \
-                               "umlal  %R0, %1, %Q2, %R3\n\t"          \
-                               "mov    %R0, #0\n\t"                    \
-                               "adds   %Q0, %1, %Q0\n\t"               \
-                               "adc    %R0, %R0, #0\n\t"               \
-                               "umlal  %Q0, %R0, %R2, %R3"             \
-                               : "+&r" (__res), "+&r" (__z)            \
-                               : "r" (__m), "r" (__n)                  \
-                               : "cc" );                               \
-               }                                                       \
-               __res /= __p;                                           \
-               /* The reminder can be computed with 32-bit regs     */ \
-               /* only, and gcc is good at that.                    */ \
-               {                                                       \
-                       unsigned int __res0 = __res;                    \
-                       unsigned int __b0 = __b;                        \
-                       __r -= __res0 * __b0;                           \
-               }                                                       \
-               /* BUG_ON(__r >= __b || __res * __b + __r != n); */     \
-               n = __res;                                              \
-       }                                                               \
-       __r;                                                            \
+#define do_div(n, base)							\
+({									\
+	unsigned int __r, __b = (base);					\
+	if (!__builtin_constant_p(__b) || __b == 0) {			\
+		/* non-constant divisor (or zero): slow path */		\
+		__r = __do_div_asm(n, __b);				\
+	} else if ((__b & (__b - 1)) == 0) {				\
+		/* Trivial: __b is constant and a power of 2 */		\
+		/* gcc does the right thing with this code.  */		\
+		__r = n;						\
+		__r &= (__b - 1);					\
+		n /= __b;						\
+	} else {							\
+		/* Multiply by inverse of __b: n/b = n*(p/b)/p       */	\
+		/* We rely on the fact that most of this code gets   */	\
+		/* optimized away at compile time due to constant    */	\
+		/* propagation and only a couple inline assembly     */	\
+		/* instructions should remain. Better avoid any      */	\
+		/* code construct that might prevent that.           */	\
+		unsigned long long __res, __x, __t, __m, __n = n;	\
+		unsigned int __c, __p, __z = 0;				\
+		/* preserve low part of n for reminder computation */	\
+		__r = __n;						\
+		/* determine number of bits to represent __b */		\
+		__p = 1 << __div64_fls(__b);				\
+		/* compute __m = ((__p << 64) + __b - 1) / __b */	\
+		__m = (~0ULL / __b) * __p;				\
+		__m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b;	\
+		/* compute __res = __m*(~0ULL/__b*__b-1)/(__p << 64) */	\
+		__x = ~0ULL / __b * __b - 1;				\
+		__res = (__m & 0xffffffff) * (__x & 0xffffffff);	\
+		__res >>= 32;						\
+		__res += (__m & 0xffffffff) * (__x >> 32);		\
+		__t = __res;						\
+		__res += (__x & 0xffffffff) * (__m >> 32);		\
+		__t = (__res < __t) ? (1ULL << 32) : 0;			\
+		__res = (__res >> 32) + __t;				\
+		__res += (__m >> 32) * (__x >> 32);			\
+		__res /= __p;						\
+		/* Now sanitize and optimize what we've got. */		\
+		if (~0ULL % (__b / (__b & -__b)) == 0) {		\
+			/* those cases can be simplified with: */	\
+			__n /= (__b & -__b);				\
+			__m = ~0ULL / (__b / (__b & -__b));		\
+			__p = 1;					\
+			__c = 1;					\
+		} else if (__res != __x / __b) {			\
+			/* We can't get away without a correction    */	\
+			/* to compensate for bit truncation errors.  */	\
+			/* To avoid it we'd need an additional bit   */	\
+			/* to represent __m which would overflow it. */	\
+			/* Instead we do m=p/b and n/b=(n*m+m)/p.    */	\
+			__c = 1;					\
+			/* Compute __m = (__p << 64) / __b */		\
+			__m = (~0ULL / __b) * __p;			\
+			__m += ((~0ULL % __b + 1) * __p) / __b;		\
+		} else {						\
+			/* Reduce __m/__p, and try to clear bit 31   */	\
+			/* of __m when possible otherwise that'll    */	\
+			/* need extra overflow handling later.       */	\
+			unsigned int __bits = -(__m & -__m);		\
+			__bits |= __m >> 32;				\
+			__bits = (~__bits) << 1;			\
+			/* If __bits == 0 then setting bit 31 is     */	\
+			/* unavoidable.  Simply apply the maximum    */	\
+			/* possible reduction in that case.          */	\
+			/* Otherwise the MSB of __bits indicates the */	\
+			/* best reduction we should apply.           */	\
+			if (!__bits) {					\
+				__p /= (__m & -__m);			\
+				__m /= (__m & -__m);			\
+			} else {					\
+				__p >>= __div64_fls(__bits);		\
+				__m >>= __div64_fls(__bits);		\
+			}						\
+			/* No correction needed. */			\
+			__c = 0;					\
+		}							\
+		/* Now we have a combination of 2 conditions:        */	\
+		/* 1) whether or not we need a correction (__c), and */	\
+		/* 2) whether or not there might be an overflow in   */	\
+		/*    the cross product (__m & ((1<<63) | (1<<31)))  */	\
+		/* Select the best insn combination to perform the   */	\
+		/* actual __m * __n / (__p << 64) operation.         */	\
+		if (!__c) {						\
+			asm (	"umull	%Q0, %R0, %1, %Q2\n\t"		\
+				"mov	%Q0, #0"			\
+				: "=&r" (__res)				\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		} else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {	\
+			__res = __m;					\
+			asm (	"umlal	%Q0, %R0, %Q1, %Q2\n\t"		\
+				"mov	%Q0, #0"			\
+				: "+&r" (__res)				\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		} else {						\
+			asm (	"umull	%Q0, %R0, %Q1, %Q2\n\t"		\
+				"cmn	%Q0, %Q1\n\t"			\
+				"adcs	%R0, %R0, %R1\n\t"		\
+				"adc	%Q0, %3, #0"			\
+				: "=&r" (__res)				\
+				: "r" (__m), "r" (__n), "r" (__z)	\
+				: "cc" );				\
+		}							\
+		if (!(__m & ((1ULL << 63) | (1ULL << 31)))) {		\
+			asm (	"umlal	%R0, %Q0, %R1, %Q2\n\t"		\
+				"umlal	%R0, %Q0, %Q1, %R2\n\t"		\
+				"mov	%R0, #0\n\t"			\
+				"umlal	%Q0, %R0, %R1, %R2"		\
+				: "+&r" (__res)				\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		} else {						\
+			asm (	"umlal	%R0, %Q0, %R2, %Q3\n\t"		\
+				"umlal	%R0, %1, %Q2, %R3\n\t"		\
+				"mov	%R0, #0\n\t"			\
+				"adds	%Q0, %1, %Q0\n\t"		\
+				"adc	%R0, %R0, #0\n\t"		\
+				"umlal	%Q0, %R0, %R2, %R3"		\
+				: "+&r" (__res), "+&r" (__z)		\
+				: "r" (__m), "r" (__n)			\
+				: "cc" );				\
+		}							\
+		__res /= __p;						\
+		/* The reminder can be computed with 32-bit regs     */	\
+		/* only, and gcc is good at that.                    */	\
+		{							\
+			unsigned int __res0 = __res;			\
+			unsigned int __b0 = __b;			\
+			__r -= __res0 * __b0;				\
+		}							\
+		/* BUG_ON(__r >= __b || __res * __b + __r != n); */	\
+		n = __res;						\
+	}								\
+	__r;								\
 })
 
 /* our own fls implementation to make sure constant propagation is fine */
-#define __div64_fls(bits)                                              \
-({                                                                     \
-       unsigned int __left = (bits), __nr = 0;                         \
-       if (__left & 0xffff0000) __nr += 16, __left >>= 16;             \
-       if (__left & 0x0000ff00) __nr +=  8, __left >>=  8;             \
-       if (__left & 0x000000f0) __nr +=  4, __left >>=  4;             \
-       if (__left & 0x0000000c) __nr +=  2, __left >>=  2;             \
-       if (__left & 0x00000002) __nr +=  1;                            \
-       __nr;                                                           \
+#define __div64_fls(bits)						\
+({									\
+	unsigned int __left = (bits), __nr = 0;				\
+	if (__left & 0xffff0000) __nr += 16, __left >>= 16;		\
+	if (__left & 0x0000ff00) __nr +=  8, __left >>=  8;		\
+	if (__left & 0x000000f0) __nr +=  4, __left >>=  4;		\
+	if (__left & 0x0000000c) __nr +=  2, __left >>=  2;		\
+	if (__left & 0x00000002) __nr +=  1;				\
+	__nr;								\
 })
 
 #endif
diff -r f3d137e3e6c7 -r 0ba87b95e80b xen/include/asm-arm/numa.h
--- a/xen/include/asm-arm/numa.h	Mon Feb 13 18:17:28 2012 +0000
+++ b/xen/include/asm-arm/numa.h	Mon Feb 13 17:26:08 2012 +0000
@@ -3,7 +3,7 @@
 
 /* Fake one node for now... */
 #define cpu_to_node(cpu) 0
-#define node_to_cpumask(node)  (cpu_online_map)
+#define node_to_cpumask(node)	(cpu_online_map)
 
 static inline __attribute__((pure)) int phys_to_nid(paddr_t addr)
 {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog

From xen-changelog-bounces@lists.xensource.com Tue Feb 14 23:55:46 2012
Return-path: <xen-changelog-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Feb 2012 23:55:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-changelog-bounces@lists.xensource.com>)
	id 1RxSDp-0005K3-Ur; Tue, 14 Feb 2012 23:55:45 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RxSDn-0005E0-8p
	for xen-changelog@lists.xensource.com; Tue, 14 Feb 2012 23:55:44 +0000
X-Env-Sender: xen@xenbits.xen.org
X-Msg-Ref: server-16.tower-216.messagelabs.com!1329263718!12115159!1
X-Originating-IP: [50.57.168.107]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32542 invoked from network); 14 Feb 2012 23:55:19 -0000
Received: from mail.xen.org (HELO mail.xen.org) (50.57.168.107)
	by server-16.tower-216.messagelabs.com with AES256-SHA encrypted SMTP;
	14 Feb 2012 23:55:19 -0000
Received: from xenbits.xen.org ([50.57.170.242])
	by mail.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RxSDN-0007i3-RV
	for xen-changelog@lists.xensource.com; Tue, 14 Feb 2012 23:55:17 +0000
Received: from xen by xenbits.xen.org with local (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1RxSDN-0002DJ-Bn
	for xen-changelog@lists.xensource.com; Tue, 14 Feb 2012 23:55:17 +0000
Message-Id: <E1RxSDN-0002DJ-Bn@xenbits.xen.org>
Date: Tue, 14 Feb 2012 23:55:16 +0000
From: Xen patchbot-unstable <patchbot@xen.org>
To: xen-changelog@lists.xensource.com
Subject: [Xen-changelog] [xen-unstable] libfdt: add version 1.3.0
X-BeenThere: xen-changelog@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: xen-devel@lists.xensource.com
List-Id: BK change log <xen-changelog.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-changelog>, 
	<mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xensource.com>
List-Help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>,
	<mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-changelog-bounces@lists.xensource.com
Errors-To: xen-changelog-bounces@lists.xensource.com

# HG changeset patch
# User David Vrabel <david.vrabel@citrix.com>
# Date 1329140006 0
# Node ID fcc188f21e471d2e9eaf1ddf22a728763a84cca2
# Parent  bd0a11ed1a67fd9b970f4b043879afdbc7f50d0c
libfdt: add version 1.3.0

Add libfdt 1.3.0 from http://git.jdl.com/gitweb/?p=dtc.git

This will be used by Xen to parse the DTBs provided by bootloaders on
ARM platforms.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Keir Fraser <keir@xen.org>
---


diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/Makefile.libfdt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/Makefile.libfdt	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,10 @@
+# Makefile.libfdt
+#
+# This is not a complete Makefile of itself.  Instead, it is designed to
+# be easily embeddable into other systems of Makefiles.
+#
+LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
+LIBFDT_INCLUDES = fdt.h libfdt.h
+LIBFDT_VERSION = version.lds
+LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/TODO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/TODO	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,3 @@
+- Tree traversal functions
+- Graft function
+- Complete libfdt.h documenting comments
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt.c	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,222 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_check_header(const void *fdt)
+{
+	if (fdt_magic(fdt) == FDT_MAGIC) {
+		/* Complete tree */
+		if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+		if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)
+			return -FDT_ERR_BADVERSION;
+	} else if (fdt_magic(fdt) == FDT_SW_MAGIC) {
+		/* Unfinished sequential-write blob */
+		if (fdt_size_dt_struct(fdt) == 0)
+			return -FDT_ERR_BADSTATE;
+	} else {
+		return -FDT_ERR_BADMAGIC;
+	}
+
+	return 0;
+}
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)
+{
+	const char *p;
+
+	if (fdt_version(fdt) >= 0x11)
+		if (((offset + len) < offset)
+		    || ((offset + len) > fdt_size_dt_struct(fdt)))
+			return NULL;
+
+	p = _fdt_offset_ptr(fdt, offset);
+
+	if (p + len < p)
+		return NULL;
+	return p;
+}
+
+uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)
+{
+	const uint32_t *tagp, *lenp;
+	uint32_t tag;
+	int offset = startoffset;
+	const char *p;
+
+	*nextoffset = -FDT_ERR_TRUNCATED;
+	tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE);
+	if (!tagp)
+		return FDT_END; /* premature end */
+	tag = fdt32_to_cpu(*tagp);
+	offset += FDT_TAGSIZE;
+
+	*nextoffset = -FDT_ERR_BADSTRUCTURE;
+	switch (tag) {
+	case FDT_BEGIN_NODE:
+		/* skip name */
+		do {
+			p = fdt_offset_ptr(fdt, offset++, 1);
+		} while (p && (*p != '\0'));
+		if (!p)
+			return FDT_END; /* premature end */
+		break;
+
+	case FDT_PROP:
+		lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp));
+		if (!lenp)
+			return FDT_END; /* premature end */
+		/* skip-name offset, length and value */
+		offset += sizeof(struct fdt_property) - FDT_TAGSIZE
+			+ fdt32_to_cpu(*lenp);
+		break;
+
+	case FDT_END:
+	case FDT_END_NODE:
+	case FDT_NOP:
+		break;
+
+	default:
+		return FDT_END;
+	}
+
+	if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset))
+		return FDT_END; /* premature end */
+
+	*nextoffset = FDT_TAGALIGN(offset);
+	return tag;
+}
+
+int _fdt_check_node_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int _fdt_check_prop_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
+int fdt_next_node(const void *fdt, int offset, int *depth)
+{
+	int nextoffset = 0;
+	uint32_t tag;
+
+	if (offset >= 0)
+		if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0)
+			return nextoffset;
+
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_PROP:
+		case FDT_NOP:
+			break;
+
+		case FDT_BEGIN_NODE:
+			if (depth)
+				(*depth)++;
+			break;
+
+		case FDT_END_NODE:
+			if (depth && ((--(*depth)) < 0))
+				return nextoffset;
+			break;
+
+		case FDT_END:
+			if ((nextoffset >= 0)
+			    || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))
+				return -FDT_ERR_NOTFOUND;
+			else
+				return nextoffset;
+		}
+	} while (tag != FDT_BEGIN_NODE);
+
+	return offset;
+}
+
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)
+{
+	int len = strlen(s) + 1;
+	const char *last = strtab + tabsize - len;
+	const char *p;
+
+	for (p = strtab; p <= last; p++)
+		if (memcmp(p, s, len) == 0)
+			return p;
+	return NULL;
+}
+
+int fdt_move(const void *fdt, void *buf, int bufsize)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_totalsize(fdt) > bufsize)
+		return -FDT_ERR_NOSPACE;
+
+	memmove(buf, fdt, fdt_totalsize(fdt));
+	return 0;
+}
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt.h	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,60 @@
+#ifndef _FDT_H
+#define _FDT_H
+
+#ifndef __ASSEMBLY__
+
+struct fdt_header {
+	uint32_t magic;			 /* magic word FDT_MAGIC */
+	uint32_t totalsize;		 /* total size of DT block */
+	uint32_t off_dt_struct;		 /* offset to structure */
+	uint32_t off_dt_strings;	 /* offset to strings */
+	uint32_t off_mem_rsvmap;	 /* offset to memory reserve map */
+	uint32_t version;		 /* format version */
+	uint32_t last_comp_version;	 /* last compatible version */
+
+	/* version 2 fields below */
+	uint32_t boot_cpuid_phys;	 /* Which physical CPU id we're
+					    booting on */
+	/* version 3 fields below */
+	uint32_t size_dt_strings;	 /* size of the strings block */
+
+	/* version 17 fields below */
+	uint32_t size_dt_struct;	 /* size of the structure block */
+};
+
+struct fdt_reserve_entry {
+	uint64_t address;
+	uint64_t size;
+};
+
+struct fdt_node_header {
+	uint32_t tag;
+	char name[0];
+};
+
+struct fdt_property {
+	uint32_t tag;
+	uint32_t len;
+	uint32_t nameoff;
+	char data[0];
+};
+
+#endif /* !__ASSEMBLY */
+
+#define FDT_MAGIC	0xd00dfeed	/* 4: version, 4: total size */
+#define FDT_TAGSIZE	sizeof(uint32_t)
+
+#define FDT_BEGIN_NODE	0x1		/* Start node: full name */
+#define FDT_END_NODE	0x2		/* End node */
+#define FDT_PROP	0x3		/* Property: name off,
+					   size, content */
+#define FDT_NOP		0x4		/* nop */
+#define FDT_END		0x9
+
+#define FDT_V1_SIZE	(7*sizeof(uint32_t))
+#define FDT_V2_SIZE	(FDT_V1_SIZE + sizeof(uint32_t))
+#define FDT_V3_SIZE	(FDT_V2_SIZE + sizeof(uint32_t))
+#define FDT_V16_SIZE	FDT_V3_SIZE
+#define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(uint32_t))
+
+#endif /* _FDT_H */
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt_ro.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt_ro.c	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,574 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_nodename_eq(const void *fdt, int offset,
+			    const char *s, int len)
+{
+	const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1);
+
+	if (! p)
+		/* short match */
+		return 0;
+
+	if (memcmp(p, s, len) != 0)
+		return 0;
+
+	if (p[len] == '\0')
+		return 1;
+	else if (!memchr(s, '@', len) && (p[len] == '@'))
+		return 1;
+	else
+		return 0;
+}
+
+const char *fdt_string(const void *fdt, int stroffset)
+{
+	return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset;
+}
+
+static int _fdt_string_eq(const void *fdt, int stroffset,
+			  const char *s, int len)
+{
+	const char *p = fdt_string(fdt, stroffset);
+
+	return (strlen(p) == len) && (memcmp(p, s, len) == 0);
+}
+
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size)
+{
+	FDT_CHECK_HEADER(fdt);
+	*address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address);
+	*size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size);
+	return 0;
+}
+
+int fdt_num_mem_rsv(const void *fdt)
+{
+	int i = 0;
+
+	while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0)
+		i++;
+	return i;
+}
+
+static int _nextprop(const void *fdt, int offset)
+{
+	uint32_t tag;
+	int nextoffset;
+
+	do {
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_END:
+			if (nextoffset >= 0)
+				return -FDT_ERR_BADSTRUCTURE;
+			else
+				return nextoffset;
+
+		case FDT_PROP:
+			return offset;
+		}
+		offset = nextoffset;
+	} while (tag == FDT_NOP);
+
+	return -FDT_ERR_NOTFOUND;
+}
+
+int fdt_subnode_offset_namelen(const void *fdt, int offset,
+			       const char *name, int namelen)
+{
+	int depth;
+
+	FDT_CHECK_HEADER(fdt);
+
+	for (depth = 0;
+	     (offset >= 0) && (depth >= 0);
+	     offset = fdt_next_node(fdt, offset, &depth))
+		if ((depth == 1)
+		    && _fdt_nodename_eq(fdt, offset, name, namelen))
+			return offset;
+
+	if (depth < 0)
+		return -FDT_ERR_NOTFOUND;
+	return offset; /* error */
+}
+
+int fdt_subnode_offset(const void *fdt, int parentoffset,
+		       const char *name)
+{
+	return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_path_offset(const void *fdt, const char *path)
+{
+	const char *end = path + strlen(path);
+	const char *p = path;
+	int offset = 0;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* see if we have an alias */
+	if (*path != '/') {
+		const char *q = strchr(path, '/');
+
+		if (!q)
+			q = end;
+
+		p = fdt_get_alias_namelen(fdt, p, q - p);
+		if (!p)
+			return -FDT_ERR_BADPATH;
+		offset = fdt_path_offset(fdt, p);
+
+		p = q;
+	}
+
+	while (*p) {
+		const char *q;
+
+		while (*p == '/')
+			p++;
+		if (! *p)
+			return offset;
+		q = strchr(p, '/');
+		if (! q)
+			q = end;
+
+		offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p);
+		if (offset < 0)
+			return offset;
+
+		p = q;
+	}
+
+	return offset;
+}
+
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
+{
+	const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset);
+	int err;
+
+	if (((err = fdt_check_header(fdt)) != 0)
+	    || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0))
+			goto fail;
+
+	if (len)
+		*len = strlen(nh->name);
+
+	return nh->name;
+
+ fail:
+	if (len)
+		*len = err;
+	return NULL;
+}
+
+int fdt_first_property_offset(const void *fdt, int nodeoffset)
+{
+	int offset;
+
+	if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+int fdt_next_property_offset(const void *fdt, int offset)
+{
+	if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp)
+{
+	int err;
+	const struct fdt_property *prop;
+
+	if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) {
+		if (lenp)
+			*lenp = err;
+		return NULL;
+	}
+
+	prop = _fdt_offset_ptr(fdt, offset);
+
+	if (lenp)
+		*lenp = fdt32_to_cpu(prop->len);
+
+	return prop;
+}
+
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int offset,
+						    const char *name,
+						    int namelen, int *lenp)
+{
+	for (offset = fdt_first_property_offset(fdt, offset);
+	     (offset >= 0);
+	     (offset = fdt_next_property_offset(fdt, offset))) {
+		const struct fdt_property *prop;
+
+		if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) {
+			offset = -FDT_ERR_INTERNAL;
+			break;
+		}
+		if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
+				   name, namelen))
+			return prop;
+	}
+
+	if (lenp)
+		*lenp = offset;
+	return NULL;
+}
+
+const struct fdt_property *fdt_get_property(const void *fdt,
+					    int nodeoffset,
+					    const char *name, int *lenp)
+{
+	return fdt_get_property_namelen(fdt, nodeoffset, name,
+					strlen(name), lenp);
+}
+
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp);
+	if (! prop)
+		return NULL;
+
+	return prop->data;
+}
+
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop = fdt_get_property_by_offset(fdt, offset, lenp);
+	if (!prop)
+		return NULL;
+	if (namep)
+		*namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+	return prop->data;
+}
+
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp)
+{
+	return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp);
+}
+
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset)
+{
+	const uint32_t *php;
+	int len;
+
+	/* FIXME: This is a bit sub-optimal, since we potentially scan
+	 * over all the properties twice. */
+	php = fdt_getprop(fdt, nodeoffset, "phandle", &len);
+	if (!php || (len != sizeof(*php))) {
+		php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len);
+		if (!php || (len != sizeof(*php)))
+			return 0;
+	}
+
+	return fdt32_to_cpu(*php);
+}
+
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen)
+{
+	int aliasoffset;
+
+	aliasoffset = fdt_path_offset(fdt, "/aliases");
+	if (aliasoffset < 0)
+		return NULL;
+
+	return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
+}
+
+const char *fdt_get_alias(const void *fdt, const char *name)
+{
+	return fdt_get_alias_namelen(fdt, name, strlen(name));
+}
+
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen)
+{
+	int pdepth = 0, p = 0;
+	int offset, depth, namelen;
+	const char *name;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (buflen < 2)
+		return -FDT_ERR_NOSPACE;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		while (pdepth > depth) {
+			do {
+				p--;
+			} while (buf[p-1] != '/');
+			pdepth--;
+		}
+
+		if (pdepth >= depth) {
+			name = fdt_get_name(fdt, offset, &namelen);
+			if (!name)
+				return namelen;
+			if ((p + namelen + 1) <= buflen) {
+				memcpy(buf + p, name, namelen);
+				p += namelen;
+				buf[p++] = '/';
+				pdepth++;
+			}
+		}
+
+		if (offset == nodeoffset) {
+			if (pdepth < (depth + 1))
+				return -FDT_ERR_NOSPACE;
+
+			if (p > 1) /* special case so that root path is "/", not "" */
+				p--;
+			buf[p] = '\0';
+			return 0;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth)
+{
+	int offset, depth;
+	int supernodeoffset = -FDT_ERR_INTERNAL;
+
+	FDT_CHECK_HEADER(fdt);
+
+	if (supernodedepth < 0)
+		return -FDT_ERR_NOTFOUND;
+
+	for (offset = 0, depth = 0;
+	     (offset >= 0) && (offset <= nodeoffset);
+	     offset = fdt_next_node(fdt, offset, &depth)) {
+		if (depth == supernodedepth)
+			supernodeoffset = offset;
+
+		if (offset == nodeoffset) {
+			if (nodedepth)
+				*nodedepth = depth;
+
+			if (supernodedepth > depth)
+				return -FDT_ERR_NOTFOUND;
+			else
+				return supernodeoffset;
+		}
+	}
+
+	if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0))
+		return -FDT_ERR_BADOFFSET;
+	else if (offset == -FDT_ERR_BADOFFSET)
+		return -FDT_ERR_BADSTRUCTURE;
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_depth(const void *fdt, int nodeoffset)
+{
+	int nodedepth;
+	int err;
+
+	err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
+	if (err)
+		return (err < 0) ? err : -FDT_ERR_INTERNAL;
+	return nodedepth;
+}
+
+int fdt_parent_offset(const void *fdt, int nodeoffset)
+{
+	int nodedepth = fdt_node_depth(fdt, nodeoffset);
+
+	if (nodedepth < 0)
+		return nodedepth;
+	return fdt_supernode_atdepth_offset(fdt, nodeoffset,
+					    nodedepth - 1, NULL);
+}
+
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen)
+{
+	int offset;
+	const void *val;
+	int len;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_getprop(), then if that didn't
+	 * find what we want, we scan over them again making our way
+	 * to the next node.  Still it's the easiest to implement
+	 * approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		val = fdt_getprop(fdt, offset, propname, &len);
+		if (val && (len == proplen)
+		    && (memcmp(val, propval, len) == 0))
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle)
+{
+	int offset;
+
+	if ((phandle == 0) || (phandle == -1))
+		return -FDT_ERR_BADPHANDLE;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we
+	 * potentially scan each property of a node in
+	 * fdt_get_phandle(), then if that didn't find what
+	 * we want, we scan over them again making our way to the next
+	 * node.  Still it's the easiest to implement approach;
+	 * performance can come later. */
+	for (offset = fdt_next_node(fdt, -1, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		if (fdt_get_phandle(fdt, offset) == phandle)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
+
+static int _fdt_stringlist_contains(const char *strlist, int listlen,
+				    const char *str)
+{
+	int len = strlen(str);
+	const char *p;
+
+	while (listlen >= len) {
+		if (memcmp(str, strlist, len+1) == 0)
+			return 1;
+		p = memchr(strlist, '\0', listlen);
+		if (!p)
+			return 0; /* malformed strlist.. */
+		listlen -= (p-strlist) + 1;
+		strlist = p + 1;
+	}
+	return 0;
+}
+
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible)
+{
+	const void *prop;
+	int len;
+
+	prop = fdt_getprop(fdt, nodeoffset, "compatible", &len);
+	if (!prop)
+		return len;
+	if (_fdt_stringlist_contains(prop, len, compatible))
+		return 0;
+	else
+		return 1;
+}
+
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible)
+{
+	int offset, err;
+
+	FDT_CHECK_HEADER(fdt);
+
+	/* FIXME: The algorithm here is pretty horrible: we scan each
+	 * property of a node in fdt_node_check_compatible(), then if
+	 * that didn't find what we want, we scan over them again
+	 * making our way to the next node.  Still it's the easiest to
+	 * implement approach; performance can come later. */
+	for (offset = fdt_next_node(fdt, startoffset, NULL);
+	     offset >= 0;
+	     offset = fdt_next_node(fdt, offset, NULL)) {
+		err = fdt_node_check_compatible(fdt, offset, compatible);
+		if ((err < 0) && (err != -FDT_ERR_NOTFOUND))
+			return err;
+		else if (err == 0)
+			return offset;
+	}
+
+	return offset; /* error from fdt_next_node() */
+}
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt_rw.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt_rw.c	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,465 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_blocks_misordered(const void *fdt,
+			      int mem_rsv_size, int struct_size)
+{
+	return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8))
+		|| (fdt_off_dt_struct(fdt) <
+		    (fdt_off_mem_rsvmap(fdt) + mem_rsv_size))
+		|| (fdt_off_dt_strings(fdt) <
+		    (fdt_off_dt_struct(fdt) + struct_size))
+		|| (fdt_totalsize(fdt) <
+		    (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)));
+}
+
+static int _fdt_rw_check_header(void *fdt)
+{
+	FDT_CHECK_HEADER(fdt);
+
+	if (fdt_version(fdt) < 17)
+		return -FDT_ERR_BADVERSION;
+	if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry),
+				   fdt_size_dt_struct(fdt)))
+		return -FDT_ERR_BADLAYOUT;
+	if (fdt_version(fdt) > 17)
+		fdt_set_version(fdt, 17);
+
+	return 0;
+}
+
+#define FDT_RW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_rw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static inline int _fdt_data_size(void *fdt)
+{
+	return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+}
+
+static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen)
+{
+	char *p = splicepoint;
+	char *end = (char *)fdt + _fdt_data_size(fdt);
+
+	if (((p + oldlen) < p) || ((p + oldlen) > end))
+		return -FDT_ERR_BADOFFSET;
+	if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt)))
+		return -FDT_ERR_NOSPACE;
+	memmove(p + newlen, p + oldlen, end - p - oldlen);
+	return 0;
+}
+
+static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p,
+			       int oldn, int newn)
+{
+	int delta = (newn - oldn) * sizeof(*p);
+	int err;
+	err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p));
+	if (err)
+		return err;
+	fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_struct(void *fdt, void *p,
+			      int oldlen, int newlen)
+{
+	int delta = newlen - oldlen;
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, oldlen, newlen)))
+		return err;
+
+	fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta);
+	fdt_set_off_dt_strings(fdt, fdt_off_dt_strings(fdt) + delta);
+	return 0;
+}
+
+static int _fdt_splice_string(void *fdt, int newlen)
+{
+	void *p = (char *)fdt
+		+ fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt);
+	int err;
+
+	if ((err = _fdt_splice(fdt, p, 0, newlen)))
+		return err;
+
+	fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_off_dt_strings(fdt);
+	const char *p;
+	char *new;
+	int len = strlen(s) + 1;
+	int err;
+
+	p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s);
+	if (p)
+		/* found it */
+		return (p - strtab);
+
+	new = strtab + fdt_size_dt_strings(fdt);
+	err = _fdt_splice_string(fdt, len);
+	if (err)
+		return err;
+
+	memcpy(new, s, len);
+	return (new - strtab);
+}
+
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt));
+	err = _fdt_splice_mem_rsv(fdt, re, 0, 1);
+	if (err)
+		return err;
+
+	re->address = cpu_to_fdt64(address);
+	re->size = cpu_to_fdt64(size);
+	return 0;
+}
+
+int fdt_del_mem_rsv(void *fdt, int n)
+{
+	struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n);
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	if (n >= fdt_num_mem_rsv(fdt))
+		return -FDT_ERR_NOTFOUND;
+
+	err = _fdt_splice_mem_rsv(fdt, re, 1, 0);
+	if (err)
+		return err;
+	return 0;
+}
+
+static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name,
+				int len, struct fdt_property **prop)
+{
+	int oldlen;
+	int err;
+
+	*prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
+	if (! (*prop))
+		return oldlen;
+
+	if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen),
+				      FDT_TAGALIGN(len))))
+		return err;
+
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+static int _fdt_add_property(void *fdt, int nodeoffset, const char *name,
+			     int len, struct fdt_property **prop)
+{
+	int proplen;
+	int nextoffset;
+	int namestroff;
+	int err;
+
+	if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return nextoffset;
+
+	namestroff = _fdt_find_add_string(fdt, name);
+	if (namestroff < 0)
+		return namestroff;
+
+	*prop = _fdt_offset_ptr_w(fdt, nextoffset);
+	proplen = sizeof(**prop) + FDT_TAGALIGN(len);
+
+	err = _fdt_splice_struct(fdt, *prop, 0, proplen);
+	if (err)
+		return err;
+
+	(*prop)->tag = cpu_to_fdt32(FDT_PROP);
+	(*prop)->nameoff = cpu_to_fdt32(namestroff);
+	(*prop)->len = cpu_to_fdt32(len);
+	return 0;
+}
+
+int fdt_set_name(void *fdt, int nodeoffset, const char *name)
+{
+	char *namep;
+	int oldlen, newlen;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	namep = (char *)(uintptr_t)fdt_get_name(fdt, nodeoffset, &oldlen);
+	if (!namep)
+		return oldlen;
+
+	newlen = strlen(name);
+
+	err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1),
+				 FDT_TAGALIGN(newlen+1));
+	if (err)
+		return err;
+
+	memcpy(namep, name, newlen+1);
+	return 0;
+}
+
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len)
+{
+	struct fdt_property *prop;
+	int err;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop);
+	if (err == -FDT_ERR_NOTFOUND)
+		err = _fdt_add_property(fdt, nodeoffset, name, len, &prop);
+	if (err)
+		return err;
+
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_delprop(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len, proplen;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	proplen = sizeof(*prop) + FDT_TAGALIGN(len);
+	return _fdt_splice_struct(fdt, prop, proplen, 0);
+}
+
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen)
+{
+	struct fdt_node_header *nh;
+	int offset, nextoffset;
+	int nodelen;
+	int err;
+	uint32_t tag;
+	uint32_t *endtag;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	offset = fdt_subnode_offset_namelen(fdt, parentoffset, name, namelen);
+	if (offset >= 0)
+		return -FDT_ERR_EXISTS;
+	else if (offset != -FDT_ERR_NOTFOUND)
+		return offset;
+
+	/* Try to place the new node after the parent's properties */
+	fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
+	do {
+		offset = nextoffset;
+		tag = fdt_next_tag(fdt, offset, &nextoffset);
+	} while ((tag == FDT_PROP) || (tag == FDT_NOP));
+
+	nh = _fdt_offset_ptr_w(fdt, offset);
+	nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE;
+
+	err = _fdt_splice_struct(fdt, nh, 0, nodelen);
+	if (err)
+		return err;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memset(nh->name, 0, FDT_TAGALIGN(namelen+1));
+	memcpy(nh->name, name, namelen);
+	endtag = (uint32_t *)((char *)nh + nodelen - FDT_TAGSIZE);
+	*endtag = cpu_to_fdt32(FDT_END_NODE);
+
+	return offset;
+}
+
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name)
+{
+	return fdt_add_subnode_namelen(fdt, parentoffset, name, strlen(name));
+}
+
+int fdt_del_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset),
+				  endoffset - nodeoffset, 0);
+}
+
+static void _fdt_packblocks(const char *old, char *new,
+			    int mem_rsv_size, int struct_size)
+{
+	int mem_rsv_off, struct_off, strings_off;
+
+	mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
+	struct_off = mem_rsv_off + mem_rsv_size;
+	strings_off = struct_off + struct_size;
+
+	memmove(new + mem_rsv_off, old + fdt_off_mem_rsvmap(old), mem_rsv_size);
+	fdt_set_off_mem_rsvmap(new, mem_rsv_off);
+
+	memmove(new + struct_off, old + fdt_off_dt_struct(old), struct_size);
+	fdt_set_off_dt_struct(new, struct_off);
+	fdt_set_size_dt_struct(new, struct_size);
+
+	memmove(new + strings_off, old + fdt_off_dt_strings(old),
+		fdt_size_dt_strings(old));
+	fdt_set_off_dt_strings(new, strings_off);
+	fdt_set_size_dt_strings(new, fdt_size_dt_strings(old));
+}
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize)
+{
+	int err;
+	int mem_rsv_size, struct_size;
+	int newsize;
+	const char *fdtstart = fdt;
+	const char *fdtend = fdtstart + fdt_totalsize(fdt);
+	char *tmp;
+
+	FDT_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+
+	if (fdt_version(fdt) >= 17) {
+		struct_size = fdt_size_dt_struct(fdt);
+	} else {
+		struct_size = 0;
+		while (fdt_next_tag(fdt, struct_size, &struct_size) != FDT_END)
+			;
+		if (struct_size < 0)
+			return struct_size;
+	}
+
+	if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) {
+		/* no further work necessary */
+		err = fdt_move(fdt, buf, bufsize);
+		if (err)
+			return err;
+		fdt_set_version(buf, 17);
+		fdt_set_size_dt_struct(buf, struct_size);
+		fdt_set_totalsize(buf, bufsize);
+		return 0;
+	}
+
+	/* Need to reorder */
+	newsize = FDT_ALIGN(sizeof(struct fdt_header), 8) + mem_rsv_size
+		+ struct_size + fdt_size_dt_strings(fdt);
+
+	if (bufsize < newsize)
+		return -FDT_ERR_NOSPACE;
+
+	/* First attempt to build converted tree at beginning of buffer */
+	tmp = buf;
+	/* But if that overlaps with the old tree... */
+	if (((tmp + newsize) > fdtstart) && (tmp < fdtend)) {
+		/* Try right after the old tree instead */
+		tmp = (char *)(uintptr_t)fdtend;
+		if ((tmp + newsize) > ((char *)buf + bufsize))
+			return -FDT_ERR_NOSPACE;
+	}
+
+	_fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size);
+	memmove(buf, tmp, newsize);
+
+	fdt_set_magic(buf, FDT_MAGIC);
+	fdt_set_totalsize(buf, bufsize);
+	fdt_set_version(buf, 17);
+	fdt_set_last_comp_version(buf, 16);
+	fdt_set_boot_cpuid_phys(buf, fdt_boot_cpuid_phys(fdt));
+
+	return 0;
+}
+
+int fdt_pack(void *fdt)
+{
+	int mem_rsv_size;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	mem_rsv_size = (fdt_num_mem_rsv(fdt)+1)
+		* sizeof(struct fdt_reserve_entry);
+	_fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt));
+	fdt_set_totalsize(fdt, _fdt_data_size(fdt));
+
+	return 0;
+}
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt_strerror.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt_strerror.c	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,96 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+struct fdt_errtabent {
+	const char *str;
+};
+
+#define FDT_ERRTABENT(val) \
+	[(val)] = { .str = #val, }
+
+static struct fdt_errtabent fdt_errtable[] = {
+	FDT_ERRTABENT(FDT_ERR_NOTFOUND),
+	FDT_ERRTABENT(FDT_ERR_EXISTS),
+	FDT_ERRTABENT(FDT_ERR_NOSPACE),
+
+	FDT_ERRTABENT(FDT_ERR_BADOFFSET),
+	FDT_ERRTABENT(FDT_ERR_BADPATH),
+	FDT_ERRTABENT(FDT_ERR_BADSTATE),
+
+	FDT_ERRTABENT(FDT_ERR_TRUNCATED),
+	FDT_ERRTABENT(FDT_ERR_BADMAGIC),
+	FDT_ERRTABENT(FDT_ERR_BADVERSION),
+	FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
+	FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
+};
+#define FDT_ERRTABSIZE	(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
+
+const char *fdt_strerror(int errval)
+{
+	if (errval > 0)
+		return "<valid offset/length>";
+	else if (errval == 0)
+		return "<no error>";
+	else if (errval > -FDT_ERRTABSIZE) {
+		const char *s = fdt_errtable[-errval].str;
+
+		if (s)
+			return s;
+	}
+
+	return "<unknown error>";
+}
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt_sw.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt_sw.c	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,256 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+static int _fdt_sw_check_header(void *fdt)
+{
+	if (fdt_magic(fdt) != FDT_SW_MAGIC)
+		return -FDT_ERR_BADMAGIC;
+	/* FIXME: should check more details about the header state */
+	return 0;
+}
+
+#define FDT_SW_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = _fdt_sw_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+static void *_fdt_grab_space(void *fdt, size_t len)
+{
+	int offset = fdt_size_dt_struct(fdt);
+	int spaceleft;
+
+	spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt)
+		- fdt_size_dt_strings(fdt);
+
+	if ((offset + len < offset) || (offset + len > spaceleft))
+		return NULL;
+
+	fdt_set_size_dt_struct(fdt, offset + len);
+	return _fdt_offset_ptr_w(fdt, offset);
+}
+
+int fdt_create(void *buf, int bufsize)
+{
+	void *fdt = buf;
+
+	if (bufsize < sizeof(struct fdt_header))
+		return -FDT_ERR_NOSPACE;
+
+	memset(buf, 0, bufsize);
+
+	fdt_set_magic(fdt, FDT_SW_MAGIC);
+	fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION);
+	fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION);
+	fdt_set_totalsize(fdt,  bufsize);
+
+	fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header),
+					      sizeof(struct fdt_reserve_entry)));
+	fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt));
+	fdt_set_off_dt_strings(fdt, bufsize);
+
+	return 0;
+}
+
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size)
+{
+	struct fdt_reserve_entry *re;
+	int offset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	if (fdt_size_dt_struct(fdt))
+		return -FDT_ERR_BADSTATE;
+
+	offset = fdt_off_dt_struct(fdt);
+	if ((offset + sizeof(*re)) > fdt_totalsize(fdt))
+		return -FDT_ERR_NOSPACE;
+
+	re = (struct fdt_reserve_entry *)((char *)fdt + offset);
+	re->address = cpu_to_fdt64(addr);
+	re->size = cpu_to_fdt64(size);
+
+	fdt_set_off_dt_struct(fdt, offset + sizeof(*re));
+
+	return 0;
+}
+
+int fdt_finish_reservemap(void *fdt)
+{
+	return fdt_add_reservemap_entry(fdt, 0, 0);
+}
+
+int fdt_begin_node(void *fdt, const char *name)
+{
+	struct fdt_node_header *nh;
+	int namelen = strlen(name) + 1;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen));
+	if (! nh)
+		return -FDT_ERR_NOSPACE;
+
+	nh->tag = cpu_to_fdt32(FDT_BEGIN_NODE);
+	memcpy(nh->name, name, namelen);
+	return 0;
+}
+
+int fdt_end_node(void *fdt)
+{
+	uint32_t *en;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	en = _fdt_grab_space(fdt, FDT_TAGSIZE);
+	if (! en)
+		return -FDT_ERR_NOSPACE;
+
+	*en = cpu_to_fdt32(FDT_END_NODE);
+	return 0;
+}
+
+static int _fdt_find_add_string(void *fdt, const char *s)
+{
+	char *strtab = (char *)fdt + fdt_totalsize(fdt);
+	const char *p;
+	int strtabsize = fdt_size_dt_strings(fdt);
+	int len = strlen(s) + 1;
+	int struct_top, offset;
+
+	p = _fdt_find_string(strtab - strtabsize, strtabsize, s);
+	if (p)
+		return p - strtab;
+
+	/* Add it */
+	offset = -strtabsize - len;
+	struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	if (fdt_totalsize(fdt) + offset < struct_top)
+		return 0; /* no more room :( */
+
+	memcpy(strtab + offset, s, len);
+	fdt_set_size_dt_strings(fdt, strtabsize + len);
+	return offset;
+}
+
+int fdt_property(void *fdt, const char *name, const void *val, int len)
+{
+	struct fdt_property *prop;
+	int nameoff;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	nameoff = _fdt_find_add_string(fdt, name);
+	if (nameoff == 0)
+		return -FDT_ERR_NOSPACE;
+
+	prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len));
+	if (! prop)
+		return -FDT_ERR_NOSPACE;
+
+	prop->tag = cpu_to_fdt32(FDT_PROP);
+	prop->nameoff = cpu_to_fdt32(nameoff);
+	prop->len = cpu_to_fdt32(len);
+	memcpy(prop->data, val, len);
+	return 0;
+}
+
+int fdt_finish(void *fdt)
+{
+	char *p = (char *)fdt;
+	uint32_t *end;
+	int oldstroffset, newstroffset;
+	uint32_t tag;
+	int offset, nextoffset;
+
+	FDT_SW_CHECK_HEADER(fdt);
+
+	/* Add terminator */
+	end = _fdt_grab_space(fdt, sizeof(*end));
+	if (! end)
+		return -FDT_ERR_NOSPACE;
+	*end = cpu_to_fdt32(FDT_END);
+
+	/* Relocate the string table */
+	oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt);
+	newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
+	memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt));
+	fdt_set_off_dt_strings(fdt, newstroffset);
+
+	/* Walk the structure, correcting string offsets */
+	offset = 0;
+	while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) {
+		if (tag == FDT_PROP) {
+			struct fdt_property *prop =
+				_fdt_offset_ptr_w(fdt, offset);
+			int nameoff;
+
+			nameoff = fdt32_to_cpu(prop->nameoff);
+			nameoff += fdt_size_dt_strings(fdt);
+			prop->nameoff = cpu_to_fdt32(nameoff);
+		}
+		offset = nextoffset;
+	}
+	if (nextoffset < 0)
+		return nextoffset;
+
+	/* Finally, adjust the header */
+	fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt));
+	fdt_set_magic(fdt, FDT_MAGIC);
+	return 0;
+}
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/fdt_wip.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/fdt_wip.c	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,118 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len)
+{
+	void *propval;
+	int proplen;
+
+	propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen);
+	if (! propval)
+		return proplen;
+
+	if (proplen != len)
+		return -FDT_ERR_NOSPACE;
+
+	memcpy(propval, val, len);
+	return 0;
+}
+
+static void _fdt_nop_region(void *start, int len)
+{
+	uint32_t *p;
+
+	for (p = start; (char *)p < ((char *)start + len); p++)
+		*p = cpu_to_fdt32(FDT_NOP);
+}
+
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name)
+{
+	struct fdt_property *prop;
+	int len;
+
+	prop = fdt_get_property_w(fdt, nodeoffset, name, &len);
+	if (! prop)
+		return len;
+
+	_fdt_nop_region(prop, len + sizeof(*prop));
+
+	return 0;
+}
+
+int _fdt_node_end_offset(void *fdt, int offset)
+{
+	int depth = 0;
+
+	while ((offset >= 0) && (depth >= 0))
+		offset = fdt_next_node(fdt, offset, &depth);
+
+	return offset;
+}
+
+int fdt_nop_node(void *fdt, int nodeoffset)
+{
+	int endoffset;
+
+	endoffset = _fdt_node_end_offset(fdt, nodeoffset);
+	if (endoffset < 0)
+		return endoffset;
+
+	_fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0),
+			endoffset - nodeoffset);
+	return 0;
+}
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/libfdt.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/libfdt.h	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,1235 @@
+#ifndef _LIBFDT_H
+#define _LIBFDT_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <libfdt_env.h>
+#include <fdt.h>
+
+#define FDT_FIRST_SUPPORTED_VERSION	0x10
+#define FDT_LAST_SUPPORTED_VERSION	0x11
+
+/* Error codes: informative error codes */
+#define FDT_ERR_NOTFOUND	1
+	/* FDT_ERR_NOTFOUND: The requested node or property does not exist */
+#define FDT_ERR_EXISTS		2
+	/* FDT_ERR_EXISTS: Attemped to create a node or property which
+	 * already exists */
+#define FDT_ERR_NOSPACE		3
+	/* FDT_ERR_NOSPACE: Operation needed to expand the device
+	 * tree, but its buffer did not have sufficient space to
+	 * contain the expanded tree. Use fdt_open_into() to move the
+	 * device tree to a buffer with more space. */
+
+/* Error codes: codes for bad parameters */
+#define FDT_ERR_BADOFFSET	4
+	/* FDT_ERR_BADOFFSET: Function was passed a structure block
+	 * offset which is out-of-bounds, or which points to an
+	 * unsuitable part of the structure for the operation. */
+#define FDT_ERR_BADPATH		5
+	/* FDT_ERR_BADPATH: Function was passed a badly formatted path
+	 * (e.g. missing a leading / for a function which requires an
+	 * absolute path) */
+#define FDT_ERR_BADPHANDLE	6
+	/* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle
+	 * value.  phandle values of 0 and -1 are not permitted. */
+#define FDT_ERR_BADSTATE	7
+	/* FDT_ERR_BADSTATE: Function was passed an incomplete device
+	 * tree created by the sequential-write functions, which is
+	 * not sufficiently complete for the requested operation. */
+
+/* Error codes: codes for bad device tree blobs */
+#define FDT_ERR_TRUNCATED	8
+	/* FDT_ERR_TRUNCATED: Structure block of the given device tree
+	 * ends without an FDT_END tag. */
+#define FDT_ERR_BADMAGIC	9
+	/* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a
+	 * device tree at all - it is missing the flattened device
+	 * tree magic number. */
+#define FDT_ERR_BADVERSION	10
+	/* FDT_ERR_BADVERSION: Given device tree has a version which
+	 * can't be handled by the requested operation.  For
+	 * read-write functions, this may mean that fdt_open_into() is
+	 * required to convert the tree to the expected version. */
+#define FDT_ERR_BADSTRUCTURE	11
+	/* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt
+	 * structure block or other serious error (e.g. misnested
+	 * nodes, or subnodes preceding properties). */
+#define FDT_ERR_BADLAYOUT	12
+	/* FDT_ERR_BADLAYOUT: For read-write functions, the given
+	 * device tree has it's sub-blocks in an order that the
+	 * function can't handle (memory reserve map, then structure,
+	 * then strings).  Use fdt_open_into() to reorganize the tree
+	 * into a form suitable for the read-write operations. */
+
+/* "Can't happen" error indicating a bug in libfdt */
+#define FDT_ERR_INTERNAL	13
+	/* FDT_ERR_INTERNAL: libfdt has failed an internal assertion.
+	 * Should never be returned, if it is, it indicates a bug in
+	 * libfdt itself. */
+
+#define FDT_ERR_MAX		13
+
+/**********************************************************************/
+/* Low-level functions (you probably don't need these)                */
+/**********************************************************************/
+
+const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
+static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
+{
+	return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
+}
+
+uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
+
+/**********************************************************************/
+/* Traversal functions                                                */
+/**********************************************************************/
+
+int fdt_next_node(const void *fdt, int offset, int *depth);
+
+/**********************************************************************/
+/* General functions                                                  */
+/**********************************************************************/
+
+#define fdt_get_header(fdt, field) \
+	(fdt32_to_cpu(((const struct fdt_header *)(fdt))->field))
+#define fdt_magic(fdt) 			(fdt_get_header(fdt, magic))
+#define fdt_totalsize(fdt)		(fdt_get_header(fdt, totalsize))
+#define fdt_off_dt_struct(fdt)		(fdt_get_header(fdt, off_dt_struct))
+#define fdt_off_dt_strings(fdt)		(fdt_get_header(fdt, off_dt_strings))
+#define fdt_off_mem_rsvmap(fdt)		(fdt_get_header(fdt, off_mem_rsvmap))
+#define fdt_version(fdt)		(fdt_get_header(fdt, version))
+#define fdt_last_comp_version(fdt) 	(fdt_get_header(fdt, last_comp_version))
+#define fdt_boot_cpuid_phys(fdt) 	(fdt_get_header(fdt, boot_cpuid_phys))
+#define fdt_size_dt_strings(fdt) 	(fdt_get_header(fdt, size_dt_strings))
+#define fdt_size_dt_struct(fdt)		(fdt_get_header(fdt, size_dt_struct))
+
+#define __fdt_set_hdr(name) \
+	static inline void fdt_set_##name(void *fdt, uint32_t val) \
+	{ \
+		struct fdt_header *fdth = (struct fdt_header*)fdt; \
+		fdth->name = cpu_to_fdt32(val); \
+	}
+__fdt_set_hdr(magic);
+__fdt_set_hdr(totalsize);
+__fdt_set_hdr(off_dt_struct);
+__fdt_set_hdr(off_dt_strings);
+__fdt_set_hdr(off_mem_rsvmap);
+__fdt_set_hdr(version);
+__fdt_set_hdr(last_comp_version);
+__fdt_set_hdr(boot_cpuid_phys);
+__fdt_set_hdr(size_dt_strings);
+__fdt_set_hdr(size_dt_struct);
+#undef __fdt_set_hdr
+
+/**
+ * fdt_check_header - sanity check a device tree or possible device tree
+ * @fdt: pointer to data which might be a flattened device tree
+ *
+ * fdt_check_header() checks that the given buffer contains what
+ * appears to be a flattened device tree with sane information in its
+ * header.
+ *
+ * returns:
+ *     0, if the buffer appears to contain a valid device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings, as above
+ */
+int fdt_check_header(const void *fdt);
+
+/**
+ * fdt_move - move a device tree around in memory
+ * @fdt: pointer to the device tree to move
+ * @buf: pointer to memory where the device is to be moved
+ * @bufsize: size of the memory space at buf
+ *
+ * fdt_move() relocates, if possible, the device tree blob located at
+ * fdt to the buffer at buf of size bufsize.  The buffer may overlap
+ * with the existing device tree blob at fdt.  Therefore,
+ *     fdt_move(fdt, fdt, fdt_totalsize(fdt))
+ * should always succeed.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_move(const void *fdt, void *buf, int bufsize);
+
+/**********************************************************************/
+/* Read-only functions                                                */
+/**********************************************************************/
+
+/**
+ * fdt_string - retrieve a string from the strings block of a device tree
+ * @fdt: pointer to the device tree blob
+ * @stroffset: offset of the string within the strings block (native endian)
+ *
+ * fdt_string() retrieves a pointer to a single string from the
+ * strings block of the device tree blob at fdt.
+ *
+ * returns:
+ *     a pointer to the string, on success
+ *     NULL, if stroffset is out of bounds
+ */
+const char *fdt_string(const void *fdt, int stroffset);
+
+/**
+ * fdt_num_mem_rsv - retrieve the number of memory reserve map entries
+ * @fdt: pointer to the device tree blob
+ *
+ * Returns the number of entries in the device tree blob's memory
+ * reservation map.  This does not include the terminating 0,0 entry
+ * or any other (0,0) entries reserved for expansion.
+ *
+ * returns:
+ *     the number of entries
+ */
+int fdt_num_mem_rsv(const void *fdt);
+
+/**
+ * fdt_get_mem_rsv - retrieve one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: pointers to 64-bit variables
+ *
+ * On success, *address and *size will contain the address and size of
+ * the n-th reserve map entry from the device tree blob, in
+ * native-endian format.
+ *
+ * returns:
+ *     0, on success
+ *     -FDT_ERR_BADMAGIC,
+ *     -FDT_ERR_BADVERSION,
+ *     -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size);
+
+/**
+ * fdt_subnode_offset_namelen - find a subnode based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_subnode_offset(), but only examine the first
+ * namelen characters of name for matching the subnode name.  This is
+ * useful for finding subnodes based on a portion of a larger string,
+ * such as a full path.
+ */
+int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
+			       const char *name, int namelen);
+/**
+ * fdt_subnode_offset - find a subnode of a given node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_subnode_offset() finds a subnode of the node at structure block
+ * offset parentoffset with the given name.  name may include a unit
+ * address, in which case fdt_subnode_offset() will find the subnode
+ * with that unit address, or the unit address may be omitted, in
+ * which case fdt_subnode_offset() will find an arbitrary subnode
+ * whose name excluding unit address matches the given name.
+ *
+ * returns:
+ *	structure block offset of the requested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_path_offset - find a tree node by its full path
+ * @fdt: pointer to the device tree blob
+ * @path: full path of the node to locate
+ *
+ * fdt_path_offset() finds a node of a given path in the device tree.
+ * Each path component may omit the unit address portion, but the
+ * results of this are undefined if any such path component is
+ * ambiguous (that is if there are multiple nodes at the relevant
+ * level matching the given component, differentiated only by unit
+ * address).
+ *
+ * returns:
+ *	structure block offset of the node with the requested path (>=0), on success
+ *	-FDT_ERR_BADPATH, given path does not begin with '/' or is invalid
+ *	-FDT_ERR_NOTFOUND, if the requested node does not exist
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_path_offset(const void *fdt, const char *path);
+
+/**
+ * fdt_get_name - retrieve the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the starting node
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_name() retrieves the name (including unit address) of the
+ * device tree node at structure block offset nodeoffset.  If lenp is
+ * non-NULL, the length of this name is also returned, in the integer
+ * pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the node's name, on success
+ *		If lenp is non-NULL, *lenp contains the length of that name (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE, standard meanings
+ */
+const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
+
+/**
+ * fdt_first_property_offset - find the offset of a node's first property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ *
+ * fdt_first_property_offset() finds the first property of the node at
+ * the given structure block offset.
+ *
+ * returns:
+ *	structure block offset of the property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested node has no properties
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_first_property_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_next_property_offset - step through a node's properties
+ * @fdt: pointer to the device tree blob
+ * @offset: structure block offset of a property
+ *
+ * fdt_next_property_offset() finds the property immediately after the
+ * one at the given structure block offset.  This will be a property
+ * of the same node as the given property.
+ *
+ * returns:
+ *	structure block offset of the next property (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the given property is the last in its node
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_next_property_offset(const void *fdt, int offset);
+
+/**
+ * fdt_get_property_by_offset - retrieve the property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @offset: offset of the property to retrieve
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property_by_offset() retrieves a pointer to the
+ * fdt_property structure within the device tree blob at the given
+ * offset.  If lenp is non-NULL, the length of the property value is
+ * also returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp);
+
+/**
+ * fdt_get_property_namelen - find a property based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_get_property_namelen(), but only examine the first
+ * namelen characters of name for matching the property name.
+ */
+const struct fdt_property *fdt_get_property_namelen(const void *fdt,
+						    int nodeoffset,
+						    const char *name,
+						    int namelen, int *lenp);
+
+/**
+ * fdt_get_property - find a given property in a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property() retrieves a pointer to the fdt_property
+ * structure within the device tree blob corresponding to the property
+ * named 'name' of the node at offset nodeoffset.  If lenp is
+ * non-NULL, the length of the property value is also returned, in the
+ * integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
+					    const char *name, int *lenp);
+static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,
+						      const char *name,
+						      int *lenp)
+{
+	return (struct fdt_property *)(uintptr_t)
+		fdt_get_property(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_getprop_by_offset - retrieve the value of a property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @ffset: offset of the property to read
+ * @namep: pointer to a string variable (will be overwritten) or NULL
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop_by_offset() retrieves a pointer to the value of the
+ * property at structure block offset 'offset' (this will be a pointer
+ * to within the device blob itself, not a copy of the value).  If
+ * lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.  If namep is non-NULL,
+ * the property's namne will also be returned in the char * pointed to
+ * by namep (this will be a pointer to within the device tree's string
+ * block, not a new copy of the name).
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *		if namep is non-NULL *namep contiains a pointer to the property
+ *		name.
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp);
+
+/**
+ * fdt_getprop_namelen - get property value based on substring
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @namelen: number of characters of name to consider
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * Identical to fdt_getprop(), but only examine the first namelen
+ * characters of name for matching the property name.
+ */
+const void *fdt_getprop_namelen(const void *fdt, int nodeoffset,
+				const char *name, int namelen, int *lenp);
+
+/**
+ * fdt_getprop - retrieve the value of a given property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to find
+ * @name: name of the property to find
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop() retrieves a pointer to the value of the property
+ * named 'name' of the node at offset nodeoffset (this will be a
+ * pointer to within the device blob itself, not a copy of the value).
+ * If lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_NOTFOUND, node does not have named property
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop(const void *fdt, int nodeoffset,
+			const char *name, int *lenp);
+static inline void *fdt_getprop_w(void *fdt, int nodeoffset,
+				  const char *name, int *lenp)
+{
+	return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp);
+}
+
+/**
+ * fdt_get_phandle - retrieve the phandle of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of the node
+ *
+ * fdt_get_phandle() retrieves the phandle of the device tree node at
+ * structure block offset nodeoffset.
+ *
+ * returns:
+ *	the phandle of the node at nodeoffset, on success (!= 0, != -1)
+ *	0, if the node has no phandle, or another error occurs
+ */
+uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_get_alias_namelen - get alias based on substring
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_get_alias(), but only examine the first namelen
+ * characters of name for matching the alias name.
+ */
+const char *fdt_get_alias_namelen(const void *fdt,
+				  const char *name, int namelen);
+
+/**
+ * fdt_get_alias - retreive the path referenced by a given alias
+ * @fdt: pointer to the device tree blob
+ * @name: name of the alias th look up
+ *
+ * fdt_get_alias() retrieves the value of a given alias.  That is, the
+ * value of the property named 'name' in the node /aliases.
+ *
+ * returns:
+ *	a pointer to the expansion of the alias named 'name', of it exists
+ *	NULL, if the given alias or the /aliases node does not exist
+ */
+const char *fdt_get_alias(const void *fdt, const char *name);
+
+/**
+ * fdt_get_path - determine the full path of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose path to find
+ * @buf: character buffer to contain the returned path (will be overwritten)
+ * @buflen: size of the character buffer at buf
+ *
+ * fdt_get_path() computes the full path of the node at offset
+ * nodeoffset, and records that path in the buffer at buf.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	0, on success
+ *		buf contains the absolute path of the node at
+ *		nodeoffset, as a NUL-terminated string.
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1)
+ *		characters and will not fit in the given buffer.
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);
+
+/**
+ * fdt_supernode_atdepth_offset - find a specific ancestor of a node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ * @supernodedepth: depth of the ancestor to find
+ * @nodedepth: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_supernode_atdepth_offset() finds an ancestor of the given node
+ * at a specific depth from the root (where the root itself has depth
+ * 0, its immediate subnodes depth 1 and so forth).  So
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL);
+ * will always return 0, the offset of the root node.  If the node at
+ * nodeoffset has depth D, then:
+ *	fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL);
+ * will return nodeoffset itself.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+
+ *	structure block offset of the node at node offset's ancestor
+ *		of depth supernodedepth (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+*	-FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,
+				 int supernodedepth, int *nodedepth);
+
+/**
+ * fdt_node_depth - find the depth of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_node_depth() finds the depth of a given node.  The root node
+ * has depth 0, its immediate subnodes depth 1 and so forth.
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset.
+ *
+ * returns:
+ *	depth of the node at nodeoffset (>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_depth(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_parent_offset - find the parent of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose parent to find
+ *
+ * fdt_parent_offset() locates the parent node of a given node (that
+ * is, it finds the offset of the node which contains the node at
+ * nodeoffset as a subnode).
+ *
+ * NOTE: This function is expensive, as it must scan the device tree
+ * structure from the start to nodeoffset, *twice*.
+ *
+ * returns:
+ *	structure block offset of the parent of the node at nodeoffset
+ *		(>=0), on success
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_parent_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_node_offset_by_prop_value - find nodes with a given property value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @propname: property name to check
+ * @propval: property value to search for
+ * @proplen: length of the value in propval
+ *
+ * fdt_node_offset_by_prop_value() returns the offset of the first
+ * node after startoffset, which has a property named propname whose
+ * value is of length proplen and has value equal to propval; or if
+ * startoffset is -1, the very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_prop_value(fdt, -1, propname,
+ *					       propval, proplen);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_prop_value(fdt, offset, propname,
+ *						       propval, proplen);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,
+				  const char *propname,
+				  const void *propval, int proplen);
+
+/**
+ * fdt_node_offset_by_phandle - find the node with a given phandle
+ * @fdt: pointer to the device tree blob
+ * @phandle: phandle value
+ *
+ * fdt_node_offset_by_phandle() returns the offset of the node
+ * which has the given phandle value.  If there is more than one node
+ * in the tree with the given phandle (an invalid tree), results are
+ * undefined.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0), on success
+ *	-FDT_ERR_NOTFOUND, no node with that phandle exists
+ *	-FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);
+
+/**
+ * fdt_node_check_compatible: check a node's compatible property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of a tree node
+ * @compatible: string to match against
+ *
+ *
+ * fdt_node_check_compatible() returns 0 if the given node contains a
+ * 'compatible' property with the given string as one of its elements,
+ * it returns non-zero otherwise, or on error.
+ *
+ * returns:
+ *	0, if the node has a 'compatible' property listing the given string
+ *	1, if the node has a 'compatible' property, but it does not list
+ *		the given string
+ *	-FDT_ERR_NOTFOUND, if the given node has no 'compatible' property
+ * 	-FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_check_compatible(const void *fdt, int nodeoffset,
+			      const char *compatible);
+
+/**
+ * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value
+ * @fdt: pointer to the device tree blob
+ * @startoffset: only find nodes after this offset
+ * @compatible: 'compatible' string to match against
+ *
+ * fdt_node_offset_by_compatible() returns the offset of the first
+ * node after startoffset, which has a 'compatible' property which
+ * lists the given compatible string; or if startoffset is -1, the
+ * very first such node in the tree.
+ *
+ * To iterate through all nodes matching the criterion, the following
+ * idiom can be used:
+ *	offset = fdt_node_offset_by_compatible(fdt, -1, compatible);
+ *	while (offset != -FDT_ERR_NOTFOUND) {
+ *		// other code here
+ *		offset = fdt_node_offset_by_compatible(fdt, offset, compatible);
+ *	}
+ *
+ * Note the -1 in the first call to the function, if 0 is used here
+ * instead, the function will never locate the root node, even if it
+ * matches the criterion.
+ *
+ * returns:
+ *	structure block offset of the located node (>= 0, >startoffset),
+ *		 on success
+ *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the
+ *		tree after startoffset
+ * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE, standard meanings
+ */
+int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
+				  const char *compatible);
+
+/**********************************************************************/
+/* Write-in-place functions                                           */
+/**********************************************************************/
+
+/**
+ * fdt_setprop_inplace - change a property's value, but not its size
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to replace the property value with
+ * @len: length of the property value
+ *
+ * fdt_setprop_inplace() replaces the value of a given property with
+ * the data in val, of length len.  This function cannot change the
+ * size of a property, and so will only work if len is equal to the
+ * current length of the property.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if len is not equal to the property's current length
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
+			const void *val, int len);
+
+/**
+ * fdt_setprop_inplace_cell - change the value of a single-cell property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: cell (32-bit integer) value to replace the property with
+ *
+ * fdt_setprop_inplace_cell() replaces the value of a given property
+ * with the 32-bit integer cell value in val, converting val to
+ * big-endian if necessary.  This function cannot change the size of a
+ * property, and so will only work if the property already exists and
+ * has length 4.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if the property's length is not equal to 4
+  *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
+					   const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_nop_property - replace a property with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_nop_property() will replace a given property's representation
+ * in the blob with FDT_NOP tags, effectively removing it from the
+ * tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the property, and will not alter or move any other part of the
+ * tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_property(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_nop_node - replace a node (subtree) with nop tags
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_nop_node() will replace a given node's representation in the
+ * blob, including all its subnodes, if any, with FDT_NOP tags,
+ * effectively removing it from the tree.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the node and its properties and subnodes, and will not alter or
+ * move any other part of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_nop_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Sequential write functions                                         */
+/**********************************************************************/
+
+int fdt_create(void *buf, int bufsize);
+int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
+int fdt_finish_reservemap(void *fdt);
+int fdt_begin_node(void *fdt, const char *name);
+int fdt_property(void *fdt, const char *name, const void *val, int len);
+static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_property(fdt, name, &val, sizeof(val));
+}
+#define fdt_property_string(fdt, name, str) \
+	fdt_property(fdt, name, str, strlen(str)+1)
+int fdt_end_node(void *fdt);
+int fdt_finish(void *fdt);
+
+/**********************************************************************/
+/* Read-write functions                                               */
+/**********************************************************************/
+
+int fdt_open_into(const void *fdt, void *buf, int bufsize);
+int fdt_pack(void *fdt);
+
+/**
+ * fdt_add_mem_rsv - add one memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @address, @size: 64-bit values (native endian)
+ *
+ * Adds a reserve map entry to the given blob reserving a region at
+ * address address of length size.
+ *
+ * This function will insert data into the reserve map and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new reservation entry
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size);
+
+/**
+ * fdt_del_mem_rsv - remove a memory reserve map entry
+ * @fdt: pointer to the device tree blob
+ * @n: entry to remove
+ *
+ * fdt_del_mem_rsv() removes the n-th memory reserve map entry from
+ * the blob.
+ *
+ * This function will delete data from the reservation table and will
+ * therefore change the indexes of some entries in the table.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there
+ *		are less than n+1 reserve map entries)
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_mem_rsv(void *fdt, int n);
+
+/**
+ * fdt_set_name - change the name of a given node
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ * @name: name to give the node
+ *
+ * fdt_set_name() replaces the name (including unit address, if any)
+ * of the given node with the given string.  NOTE: this function can't
+ * efficiently check if the new name is unique amongst the given
+ * node's siblings; results are undefined if this function is invoked
+ * with a name equal to one of the given node's siblings.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob
+ *		to contain the new name
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_set_name(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_setprop - create or change a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: pointer to data to set the property value to
+ * @len: length of the property value
+ *
+ * fdt_setprop() sets the value of the named property in the given
+ * node to the given value and length, creating the property if it
+ * does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_setprop(void *fdt, int nodeoffset, const char *name,
+		const void *val, int len);
+
+/**
+ * fdt_setprop_cell - set a property to a single cell value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 32-bit integer value for the property (native endian)
+ *
+ * fdt_setprop_cell() sets the value of the named property in the
+ * given node to the given cell value (converting to big-endian if
+ * necessary), or creates a new property with that value if it does
+ * not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,
+				   uint32_t val)
+{
+	val = cpu_to_fdt32(val);
+	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_string - set a property to a string value
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @str: string value for the property
+ *
+ * fdt_setprop_string() sets the value of the named property in the
+ * given node to the given string value (using the length of the
+ * string to determine the new length of the property), or creates a
+ * new property with that value if it does not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+#define fdt_setprop_string(fdt, nodeoffset, name, str) \
+	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
+
+/**
+ * fdt_delprop - delete a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to nop
+ * @name: name of the property to nop
+ *
+ * fdt_del_property() will delete the given property.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_delprop(void *fdt, int nodeoffset, const char *name);
+
+/**
+ * fdt_add_subnode_namelen - creates a new node based on substring
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ * @namelen: number of characters of name to consider
+ *
+ * Identical to fdt_add_subnode(), but use only the first namelen
+ * characters of name as the name of the new node.  This is useful for
+ * creating subnodes based on a portion of a larger string, such as a
+ * full path.
+ */
+int fdt_add_subnode_namelen(void *fdt, int parentoffset,
+			    const char *name, int namelen);
+
+/**
+ * fdt_add_subnode - creates a new node
+ * @fdt: pointer to the device tree blob
+ * @parentoffset: structure block offset of a node
+ * @name: name of the subnode to locate
+ *
+ * fdt_add_subnode() creates a new node as a subnode of the node at
+ * structure block offset parentoffset, with the given name (which
+ * should include the unit address, if any).
+ *
+ * This function will insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+
+ * returns:
+ *	structure block offset of the created nodeequested subnode (>=0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
+ *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
+ *	-FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of
+ *		the given name
+ *	-FDT_ERR_NOSPACE, if there is insufficient free space in the
+ *		blob to contain the new node
+ *	-FDT_ERR_NOSPACE
+ *	-FDT_ERR_BADLAYOUT
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_add_subnode(void *fdt, int parentoffset, const char *name);
+
+/**
+ * fdt_del_node - delete a node (subtree)
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node to nop
+ *
+ * fdt_del_node() will remove the given node, including all its
+ * subnodes if any, from the blob.
+ *
+ * This function will delete data from the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_del_node(void *fdt, int nodeoffset);
+
+/**********************************************************************/
+/* Debugging / informational functions                                */
+/**********************************************************************/
+
+const char *fdt_strerror(int errval);
+
+#endif /* _LIBFDT_H */
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/libfdt_env.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/libfdt_env.h	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,23 @@
+#ifndef _LIBFDT_ENV_H
+#define _LIBFDT_ENV_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define _B(n)	((unsigned long long)((uint8_t *)&x)[n])
+static inline uint32_t fdt32_to_cpu(uint32_t x)
+{
+	return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
+}
+#define cpu_to_fdt32(x) fdt32_to_cpu(x)
+
+static inline uint64_t fdt64_to_cpu(uint64_t x)
+{
+	return (_B(0) << 56) | (_B(1) << 48) | (_B(2) << 40) | (_B(3) << 32)
+		| (_B(4) << 24) | (_B(5) << 16) | (_B(6) << 8) | _B(7);
+}
+#define cpu_to_fdt64(x) fdt64_to_cpu(x)
+#undef _B
+
+#endif /* _LIBFDT_ENV_H */
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/libfdt_internal.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/libfdt_internal.h	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,95 @@
+#ifndef _LIBFDT_INTERNAL_H
+#define _LIBFDT_INTERNAL_H
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2006 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <fdt.h>
+
+#define FDT_ALIGN(x, a)		(((x) + (a) - 1) & ~((a) - 1))
+#define FDT_TAGALIGN(x)		(FDT_ALIGN((x), FDT_TAGSIZE))
+
+#define FDT_CHECK_HEADER(fdt) \
+	{ \
+		int err; \
+		if ((err = fdt_check_header(fdt)) != 0) \
+			return err; \
+	}
+
+int _fdt_check_node_offset(const void *fdt, int offset);
+int _fdt_check_prop_offset(const void *fdt, int offset);
+const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
+int _fdt_node_end_offset(void *fdt, int nodeoffset);
+
+static inline const void *_fdt_offset_ptr(const void *fdt, int offset)
+{
+	return (const char *)fdt + fdt_off_dt_struct(fdt) + offset;
+}
+
+static inline void *_fdt_offset_ptr_w(void *fdt, int offset)
+{
+	return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset);
+}
+
+static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n)
+{
+	const struct fdt_reserve_entry *rsv_table =
+		(const struct fdt_reserve_entry *)
+		((const char *)fdt + fdt_off_mem_rsvmap(fdt));
+
+	return rsv_table + n;
+}
+static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n)
+{
+	return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n);
+}
+
+#define FDT_SW_MAGIC		(~FDT_MAGIC)
+
+#endif /* _LIBFDT_INTERNAL_H */
diff -r bd0a11ed1a67 -r fcc188f21e47 xen/common/libfdt/version.lds
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/libfdt/version.lds	Mon Feb 13 13:33:26 2012 +0000
@@ -0,0 +1,54 @@
+LIBFDT_1.2 {
+	global:
+		fdt_next_node;
+		fdt_check_header;
+		fdt_move;
+		fdt_string;
+		fdt_num_mem_rsv;
+		fdt_get_mem_rsv;
+		fdt_subnode_offset_namelen;
+		fdt_subnode_offset;
+		fdt_path_offset;
+		fdt_get_name;
+		fdt_get_property_namelen;
+		fdt_get_property;
+		fdt_getprop_namelen;
+		fdt_getprop;
+		fdt_get_phandle;
+		fdt_get_alias_namelen;
+		fdt_get_alias;
+		fdt_get_path;
+		fdt_supernode_atdepth_offset;
+		fdt_node_depth;
+		fdt_parent_offset;
+		fdt_node_offset_by_prop_value;
+		fdt_node_offset_by_phandle;
+		fdt_node_check_compatible;
+		fdt_node_offset_by_compatible;
+		fdt_setprop_inplace;
+		fdt_nop_property;
+		fdt_nop_node;
+		fdt_create;
+		fdt_add_reservemap_entry;
+		fdt_finish_reservemap;
+		fdt_begin_node;
+		fdt_property;
+		fdt_end_node;
+		fdt_finish;
+		fdt_open_into;
+		fdt_pack;
+		fdt_add_mem_rsv;
+		fdt_del_mem_rsv;
+		fdt_set_name;
+		fdt_setprop;
+		fdt_delprop;
+		fdt_add_subnode_namelen;
+		fdt_add_subnode;
+		fdt_del_node;
+		fdt_strerror;
+		fdt_offset_ptr;
+		fdt_next_tag;
+
+	local:
+		*;
+};

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog

From xen-devel-bounces@lists.xensource.com Fri Feb 17 16:21:43 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Feb 2012 16:21:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RyQYt-0004jA-0V; Fri, 17 Feb 2012 16:21:31 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pstroud@gmail.com>) id 1RyQYq-0004ip-Hj
	for xen-devel@lists.xensource.com; Fri, 17 Feb 2012 16:21:29 +0000
X-Env-Sender: pstroud@gmail.com
X-Msg-Ref: server-7.tower-216.messagelabs.com!1329495680!11919233!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.6 required=7.0 tests=HTML_60_70,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,spamassassin: 
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15104 invoked from network); 17 Feb 2012 16:21:21 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-7.tower-216.messagelabs.com with RC4-SHA encrypted SMTP;
	17 Feb 2012 16:21:21 -0000
Received: by wibhm2 with SMTP id hm2so5468993wib.30
	for <xen-devel@lists.xensource.com>;
	Fri, 17 Feb 2012 08:21:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=mime-version:date:message-id:subject:from:to:content-type;
	bh=HSh36GvXylM68VW8yQP7Mbx76uKzZ9mPihn6meDdYY8=;
	b=rKDwrZJ42Oz2u2a6dgbXvhQaQVlAf4O0CMhMD0MI5iRsFVw6OuUhCBn/CW1xKYIlWH
	Gjdvcu/EyuntYb3rcDjUoVy/4/g3/B4icL+2yD/puledH3gNpGQ4vdEjyELBC/0Anf1b
	In/bWq6IxbdM1cy4UJBHGO3Z8o8vjGJAEqYMY=
MIME-Version: 1.0
Received: by 10.180.101.72 with SMTP id fe8mr4818929wib.4.1329495680486; Fri,
	17 Feb 2012 08:21:20 -0800 (PST)
Received: by 10.216.48.69 with HTTP; Fri, 17 Feb 2012 08:21:19 -0800 (PST)
Date: Fri, 17 Feb 2012 11:21:19 -0500
Message-ID: <CAEpZYZayKHZWL7CR4uH_G3Gn+=Qeo4VWN+7fSzuwnvKxNMwWQA@mail.gmail.com>
From: Paul S <pstroud@gmail.com>
To: xen-devel@lists.xensource.com
Content-Type: multipart/mixed; boundary=f46d04430662c40d6304b92b55c3
Subject: [Xen-devel] Reboots and Panics(4.1.2/4.2-unstable)
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

--f46d04430662c40d6304b92b55c3
Content-Type: multipart/alternative; boundary=f46d04430662c40d6004b92b55c1

--f46d04430662c40d6004b92b55c1
Content-Type: text/plain; charset=ISO-8859-1

Environment:
ASRock Z86 Extreme4 - Intel i5 2500
http://www.asrock.com/mb/overview.asp?Model=Z68%20Extreme4

I have installed the latest UEFI patch(1.70) and all tests were run from a
reset of everything to default. I have tested with both Ubuntu 11.10 and
Fedora 16 and get the same results on both, including building xen
4.2-unstable. I bought this particular MB because it had a know working
vt-d implementation via VMWare.

NOTE: current unstable as of last night is still affected by this library
error http://www.gossamer-threads.com/lists/xen/devel/234300

However, after correcting the library error, I was able to complete the
unstable build.

In both cases, it either stops with a panic/blank screen, or just reboots.

Here are some other notes:

1) If x2apic is enabled on the motherboard, it almost immediately reboots
with any of the configurations above

2) The boot gets to here:

(XEN) HVM: VMX enabled

(XEN) HVM: Hardware Assisted Paging detected.


Then goes to a "(XEN)Failed to bring up CPU x(error -5)" and this is where
it hangs with the blank/panic screen or reboots. This sometimes shows up on
CPU 1, CPU2, or both.


3) There is no boot log written and the machine does not have a native
serial port, so capturing anything may prove difficult, but I am open to
suggestions.


4) Xen Live(http://wiki.xen.org/wiki/LiveCD) works ok, unless x2apic is
enabled, then it simply panics and reboots.

The logs(xen_live.tgz) are attached. Note this was captured with VT-d being
enabled, but I did check it with VT-d enabled and the boot looked the same.
I can capture it again if needed.


5) Xen Server 6.0.0 works, with Xen 4.1.1, with both VT-d enabled(which
shows working in xl) and x2apic enabled.

I have also attached(xen_server_6.0.0.tar.gz) these logs, which includes
logs both with and without VT-d and x2apic enabled. I did not actually
create any VMs, only booted this and checked what xl reported.


If there is anything else I can add, please let me know. I am going to
download 4.1.1 now, build it and see if it works, because it does on Xen
Server. I am open to testing anything as this is an original build on this
box, so I'm willing to knock it around if it will help.


Thanks,

Paul

--f46d04430662c40d6004b92b55c1
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Environment:<div>ASRock Z86 Extreme4 - Intel i5 2500</div><div><a href=3D"h=
ttp://www.asrock.com/mb/overview.asp?Model=3DZ68%20Extreme4">http://www.asr=
ock.com/mb/overview.asp?Model=3DZ68%20Extreme4</a></div><div><br></div><div=
>I have installed the latest UEFI patch(1.70) and all tests were run from a=
 reset of everything to default.=A0I have tested with both Ubuntu 11.10 and=
 Fedora 16 and get the same results on both, including building xen 4.2-uns=
table. I bought this particular MB because it had a know working vt-d imple=
mentation via VMWare.</div>
<div><br></div><div>NOTE: current unstable as of last night is still affect=
ed by this library error <a href=3D"http://www.gossamer-threads.com/lists/x=
en/devel/234300">http://www.gossamer-threads.com/lists/xen/devel/234300</a>=
</div>
<div><br></div><div>However, after correcting the library error, I was able=
 to complete the unstable build.</div><div><br></div><div>In both cases, it=
 either stops with a panic/blank screen, or just reboots.</div><div><br>
</div><div>Here are some other notes:</div><div><br></div><div>1) If x2apic=
 is enabled on the motherboard, it almost immediately reboots with any of t=
he configurations above</div><div><br></div><div>2) The boot gets to here:<=
/div>
<div><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,A=
rial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><span lan=
g=3D"EN-US">(XEN) HVM: VMX enabled</span></p><p class=3D"MsoNormal" style=
=3D"font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;ba=
ckground-color:rgb(255,255,255)">
<span lang=3D"EN-US">(XEN) HVM: Hardware Assisted Paging detected.</span></=
p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Aria=
l,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><span lang=
=3D"EN-US"><br>
</span></p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helve=
tica,Arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><sp=
an lang=3D"EN-US">Then goes to a &quot;(XEN)Failed to bring up CPU x(error =
-5)&quot; and this is where it hangs with the blank/panic screen or reboots=
. This sometimes shows up on CPU 1, CPU2, or both.</span></p>
<p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,=
sans-serif;font-size:13px;background-color:rgb(255,255,255)"><span lang=3D"=
EN-US"><br></span></p><p class=3D"MsoNormal" style=3D"font-family:Verdana,G=
eneva,Helvetica,Arial,sans-serif;font-size:13px;background-color:rgb(255,25=
5,255)">
<span lang=3D"EN-US">3) There is no boot log written and the machine does n=
ot have a native serial port, so capturing anything may prove=A0difficult, =
but I am open to suggestions.</span></p><p class=3D"MsoNormal" style=3D"fon=
t-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;backgroun=
d-color:rgb(255,255,255)">
<span lang=3D"EN-US"><br></span></p><p class=3D"MsoNormal" style=3D"font-fa=
mily:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;background-co=
lor:rgb(255,255,255)"><span lang=3D"EN-US">4) Xen Live(</span><a href=3D"ht=
tp://wiki.xen.org/wiki/LiveCD" style=3D"background-color:transparent">http:=
//wiki.xen.org/wiki/LiveCD</a>) works ok, unless x2apic is enabled, then it=
 simply panics and reboots.</p>
<p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,=
sans-serif;font-size:13px;background-color:rgb(255,255,255)">The logs(xen_l=
ive.tgz) are attached. Note this was captured with VT-d being enabled, but =
I did check it with VT-d enabled=A0and the boot looked the same. I can capt=
ure it again if needed.</p>
<p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,=
sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></p><p cla=
ss=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,sans-s=
erif;font-size:13px;background-color:rgb(255,255,255)">
5) Xen Server 6.0.0 works, with Xen 4.1.1, with both VT-d enabled(which sho=
ws working in xl) and x2apic enabled.</p><p class=3D"MsoNormal" style=3D"fo=
nt-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font-size:13px;backgrou=
nd-color:rgb(255,255,255)">
I have also attached(xen_server_6.0.0.tar.gz) these logs, which includes lo=
gs both with and without VT-d and x2apic enabled. I did not actually create=
 any VMs, only booted this and checked what xl reported.</p><p class=3D"Mso=
Normal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;font=
-size:13px;background-color:rgb(255,255,255)">
<br></p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetic=
a,Arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">If the=
re is anything else I can add, please let me know. I am going to download 4=
.1.1 now, build it and see if it works, because it does on Xen Server. I am=
 open to testing anything as this is an original build on this box, so I&#3=
9;m willing to knock it around if it will help.</p>
<p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,=
sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></p><p cla=
ss=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Arial,sans-s=
erif;font-size:13px;background-color:rgb(255,255,255)">
Thanks,</p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helve=
tica,Arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Pau=
l</p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,A=
rial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetic=
a,Arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></=
p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetica,Aria=
l,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></p><p class=3D"MsoNormal" style=3D"font-family:Verdana,Geneva,Helvetic=
a,Arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></=
p></div>

--f46d04430662c40d6004b92b55c1--
--f46d04430662c40d6304b92b55c3
Content-Type: application/x-gzip; name="xen_live.tgz"
Content-Disposition: attachment; filename="xen_live.tgz"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyrew38j0

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
--f46d04430662c40d6304b92b55c3
Content-Type: application/x-gzip; name="xen_server_6.0.0.tar.gz"
Content-Disposition: attachment; filename="xen_server_6.0.0.tar.gz"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyrf2gav1

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
--f46d04430662c40d6304b92b55c3
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

--f46d04430662c40d6304b92b55c3--


From xen-devel-bounces@lists.xensource.com Sat Feb 18 04:58:51 2012
Return-path: <xen-devel-bounces@lists.xensource.com>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 18 Feb 2012 04:58:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xensource.com>)
	id 1RycN4-00089A-Nz; Sat, 18 Feb 2012 04:58:06 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <pstroud@gmail.com>) id 1RyVOx-00007R-5O
	for xen-devel@lists.xensource.com; Fri, 17 Feb 2012 21:31:36 +0000
X-Env-Sender: pstroud@gmail.com
X-Msg-Ref: server-7.tower-216.messagelabs.com!1329514288!11944982!1
X-Originating-IP: [209.85.212.171]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14050 invoked from network); 17 Feb 2012 21:31:28 -0000
Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com)
	(209.85.212.171)
	by server-7.tower-216.messagelabs.com with RC4-SHA encrypted SMTP;
	17 Feb 2012 21:31:28 -0000
Received: by wibhm2 with SMTP id hm2so5973891wib.30
	for <xen-devel@lists.xensource.com>;
	Fri, 17 Feb 2012 13:31:28 -0800 (PST)
Received-SPF: pass (google.com: domain of pstroud@gmail.com designates
	10.180.82.227 as permitted sender) client-ip=10.180.82.227; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of pstroud@gmail.com
	designates 10.180.82.227 as permitted sender)
	smtp.mail=pstroud@gmail.com;
	dkim=pass header.i=pstroud@gmail.com
Received: from mr.google.com ([10.180.82.227])
	by 10.180.82.227 with SMTP id l3mr7699813wiy.1.1329514288009 (num_hops
	= 1); Fri, 17 Feb 2012 13:31:28 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:content-type; bh=w+PjDJXvxnLpM6xH0LvEVfLyzum/+hwSwO8tyTqRSA4=;
	b=rMbQzEmung+FKrd1AEVphSsaAgxwUC3wap/LOQfXpzK3vpE2LIPuBuW7bcV9rWbljE
	wLuINnfqe4Ohzd2/nWlIUwyBp8Vwb8I9IpRHXz1CQpmftE71HrvnLv4en9x2zaELwTvU
	NlMooDnbgWpEyAk/nGFTquaxUKjx6VYR+lRBo=
MIME-Version: 1.0
Received: by 10.180.82.227 with SMTP id l3mr6484015wiy.1.1329514287918; Fri,
	17 Feb 2012 13:31:27 -0800 (PST)
Received: by 10.216.48.69 with HTTP; Fri, 17 Feb 2012 13:31:27 -0800 (PST)
In-Reply-To: <CAEpZYZbAhyyKE1g1LjyFCUKfVkMBDCO+8VLWiGXGYr0gkoV+-A@mail.gmail.com>
References: <CAEpZYZayKHZWL7CR4uH_G3Gn+=Qeo4VWN+7fSzuwnvKxNMwWQA@mail.gmail.com>
	<4F3E82A8.4060204@citrix.com>
	<CAEpZYZbAhyyKE1g1LjyFCUKfVkMBDCO+8VLWiGXGYr0gkoV+-A@mail.gmail.com>
Date: Fri, 17 Feb 2012 16:31:27 -0500
Message-ID: <CAEpZYZYPerhMUHbaezQiy-2O8EnhJv1mH848DvjCmGWu9CQKhA@mail.gmail.com>
From: Paul S <pstroud@gmail.com>
To: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Content-Type: multipart/mixed; boundary=f46d0444040adaef0c04b92faae6
X-Mailman-Approved-At: Sat, 18 Feb 2012 04:58:05 +0000
Subject: Re: [Xen-devel] Reboots and Panics(4.1.2/4.2-unstable)
X-BeenThere: xen-devel@lists.xensource.com
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xensource.com>
List-Unsubscribe: <http://lists.xensource.com/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xensource.com>
List-Help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-Subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
Sender: xen-devel-bounces@lists.xensource.com
Errors-To: xen-devel-bounces@lists.xensource.com

--f46d0444040adaef0c04b92faae6
Content-Type: multipart/alternative; boundary=f46d0444040adaef0904b92faae4

--f46d0444040adaef0904b92faae4
Content-Type: text/plain; charset=ISO-8859-1

File attached.

On Fri, Feb 17, 2012 at 4:14 PM, Paul S <pstroud@gmail.com> wrote:

> Andrew,
> Thanks for the quick response! I was finally able to capture it and get a
> bit more information. The problem does not always happen, even on 4.1.2, I
> was able to get it to boot a few times, though I was never able to get
> 4.2-unstable to boot. There was lots of strangeness, such as after I built
> and installed 4.1.1, it worked, but then, so did 4.1.2, now neither is
> working.
>
> That being said, I caught it on video, and captured a picture of the final
> dump. I watched the video frame by frame and the boot actually got much
> further than I thought it was.
>
> I can see that even though it does not bring up two of the CPUs, the boot
> continues into the kernel and dies somewhere with a:
>
> BUG: Unable to handle paging request at FFFc7f(maybe).
>
> I have captured several images from the video that shows the progression
> of the boot before the crash. I think I have gotten things badly out of
> whack at this point, so I'm going to stop, reinstall everything and move
> back to 4.1.1 and see if I can get things working again.
>
> Let me know if anything in the pictures helps, or if you would like the
> video as well.
>
> Paul
>
> On Fri, Feb 17, 2012 at 11:39 AM, Andrew Cooper <andrew.cooper3@citrix.com
> > wrote:
>
>> On 17/02/12 16:21, Paul S wrote:
>> > Environment:
>> > ASRock Z86 Extreme4 - Intel i5 2500
>> > http://www.asrock.com/mb/overview.asp?Model=Z68%20Extreme4
>> >
>> > I have installed the latest UEFI patch(1.70) and all tests were run
>> > from a reset of everything to default. I have tested with both Ubuntu
>> > 11.10 and Fedora 16 and get the same results on both, including
>> > building xen 4.2-unstable. I bought this particular MB because it had
>> > a know working vt-d implementation via VMWare.
>> >
>> > NOTE: current unstable as of last night is still affected by this
>> > library error http://www.gossamer-threads.com/lists/xen/devel/234300
>> >
>> > However, after correcting the library error, I was able to complete
>> > the unstable build.
>> >
>> > In both cases, it either stops with a panic/blank screen, or just
>> reboots.
>> >
>> > Here are some other notes:
>> >
>> > 1) If x2apic is enabled on the motherboard, it almost immediately
>> > reboots with any of the configurations above
>>
>> There are some fairly strict set of requirements on what which MSRs you
>> can wrt xAPIC/x2APIC mode.  It is possible that we are tickling an MSR
>> early in boot which results in a protection fault.
>>
>> >
>> > 2) The boot gets to here:
>> >
>> > (XEN) HVM: VMX enabled
>> >
>> > (XEN) HVM: Hardware Assisted Paging detected.
>> >
>> >
>> > Then goes to a "(XEN)Failed to bring up CPU x(error -5)" and this is
>> > where it hangs with the blank/panic screen or reboots. This sometimes
>> > shows up on CPU 1, CPU2, or both.
>> >
>> >
>> > 3) There is no boot log written and the machine does not have a native
>> > serial port, so capturing anything may prove difficult, but I am open
>> > to suggestions.
>> >
>>
>> Try booting with noreboot - that should keep any panic message on screen
>> until you manually choose to reset the machine.  Seeing where in the
>> panic occurs would be very helpful, even if you just transcribe a few
>> lines manually.
>>
>> >
>> > 4) Xen Live(http://wiki.xen.org/wiki/LiveCD) works ok, unless x2apic
>> > is enabled, then it simply panics and reboots.
>> >
>> > The logs(xen_live.tgz) are attached. Note this was captured with VT-d
>> > being enabled, but I did check it with VT-d enabled and the boot
>> > looked the same. I can capture it again if needed.
>> >
>> >
>> > 5) Xen Server 6.0.0 works, with Xen 4.1.1, with both VT-d
>> > enabled(which shows working in xl) and x2apic enabled.
>> >
>> > I have also attached(xen_server_6.0.0.tar.gz) these logs, which
>> > includes logs both with and without VT-d and x2apic enabled. I did not
>> > actually create any VMs, only booted this and checked what xl reported.
>> >
>> >
>>
>> That is rather interesting - I am not aware of any XenServer specific
>> changes in this regard.
>>
>> > If there is anything else I can add, please let me know. I am going to
>> > download 4.1.1 now, build it and see if it works, because it does on
>> > Xen Server. I am open to testing anything as this is an original build
>> > on this box, so I'm willing to knock it around if it will help.
>> >
>> > #
>> >
>>
>> Knowing whether upstream 4.1.1 works will be very useful in workout out
>> whether it is a regression introduced into unstable, or whether there is
>> some XenServer specific change which we should upstream.
>>
>> > Thanks,
>> >
>> > Paul
>> >
>>
>> --
>> Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer
>> T: +44 (0)1223 225 900, http://www.citrix.com
>>
>>
>

--f46d0444040adaef0904b92faae4
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

File attached.<br><br><div class=3D"gmail_quote">On Fri, Feb 17, 2012 at 4:=
14 PM, Paul S <span dir=3D"ltr">&lt;<a href=3D"mailto:pstroud@gmail.com">ps=
troud@gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Andrew,<br>Thanks for the quick response!=A0I was finally able to capt=
ure it and get a bit more information. The problem does not always happen, =
even on 4.1.2, I was able to=A0get it to boot a few times, though I was nev=
er able to get 4.2-unstable to boot. There was lots of strangeness, such as=
 after I built and installed 4.1.1, it worked, but then, so did 4.1.2, now =
neither is working.</div>

<div><br></div><div>That being said, I caught it on video, and captured a p=
icture of the final dump. I watched the video frame by frame and the boot a=
ctually got much further than I thought it was.=A0</div><div><br>I can see =
that even though it does not bring up two of the CPUs, the boot continues i=
nto the kernel and dies somewhere with a:</div>

<div><br></div><div>BUG: Unable to handle paging request at FFFc7f(maybe).<=
/div><div><br></div><div>I have captured several images from the video that=
 shows the progression of the boot before the crash. I think I have gotten =
things badly out of whack at this point, so I&#39;m going to stop, reinstal=
l everything and move back to 4.1.1 and see if I can get things working aga=
in. =A0</div>

<div><br></div><div>Let me know if anything in the pictures helps, or if yo=
u would like the video as well.=A0</div><span class=3D"HOEnZb"><font color=
=3D"#888888"><div><br></div><div>Paul</div></font></span><div class=3D"HOEn=
Zb">
<div class=3D"h5"><div><br><div class=3D"gmail_quote">On Fri, Feb 17, 2012 =
at 11:39 AM, Andrew Cooper <span dir=3D"ltr">&lt;<a href=3D"mailto:andrew.c=
ooper3@citrix.com" target=3D"_blank">andrew.cooper3@citrix.com</a>&gt;</spa=
n> wrote:<br>

<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div>On 17/02/12 16:21, Paul S wrote:<br>
&gt; Environment:<br>
&gt; ASRock Z86 Extreme4 - Intel i5 2500<br>
&gt; <a href=3D"http://www.asrock.com/mb/overview.asp?Model=3DZ68%20Extreme=
4" target=3D"_blank">http://www.asrock.com/mb/overview.asp?Model=3DZ68%20Ex=
treme4</a><br>
&gt;<br>
&gt; I have installed the latest UEFI patch(1.70) and all tests were run<br=
>
&gt; from a reset of everything to default. I have tested with both Ubuntu<=
br>
&gt; 11.10 and Fedora 16 and get the same results on both, including<br>
&gt; building xen 4.2-unstable. I bought this particular MB because it had<=
br>
&gt; a know working vt-d implementation via VMWare.<br>
&gt;<br>
&gt; NOTE: current unstable as of last night is still affected by this<br>
&gt; library error <a href=3D"http://www.gossamer-threads.com/lists/xen/dev=
el/234300" target=3D"_blank">http://www.gossamer-threads.com/lists/xen/deve=
l/234300</a><br>
&gt;<br>
&gt; However, after correcting the library error, I was able to complete<br=
>
&gt; the unstable build.<br>
&gt;<br>
&gt; In both cases, it either stops with a panic/blank screen, or just rebo=
ots.<br>
&gt;<br>
&gt; Here are some other notes:<br>
&gt;<br>
&gt; 1) If x2apic is enabled on the motherboard, it almost immediately<br>
&gt; reboots with any of the configurations above<br>
<br>
</div>There are some fairly strict set of requirements on what which MSRs y=
ou<br>
can wrt xAPIC/x2APIC mode. =A0It is possible that we are tickling an MSR<br=
>
early in boot which results in a protection fault.<br>
<div><br>
&gt;<br>
&gt; 2) The boot gets to here:<br>
&gt;<br>
&gt; (XEN) HVM: VMX enabled<br>
&gt;<br>
&gt; (XEN) HVM: Hardware Assisted Paging detected.<br>
&gt;<br>
&gt;<br>
&gt; Then goes to a &quot;(XEN)Failed to bring up CPU x(error -5)&quot; and=
 this is<br>
&gt; where it hangs with the blank/panic screen or reboots. This sometimes<=
br>
&gt; shows up on CPU 1, CPU2, or both.<br>
&gt;<br>
&gt;<br>
&gt; 3) There is no boot log written and the machine does not have a native=
<br>
&gt; serial port, so capturing anything may prove difficult, but I am open<=
br>
&gt; to suggestions.<br>
&gt;<br>
<br>
</div>Try booting with noreboot - that should keep any panic message on scr=
een<br>
until you manually choose to reset the machine. =A0Seeing where in the<br>
panic occurs would be very helpful, even if you just transcribe a few<br>
lines manually.<br>
<div><br>
&gt;<br>
&gt; 4) Xen Live(<a href=3D"http://wiki.xen.org/wiki/LiveCD" target=3D"_bla=
nk">http://wiki.xen.org/wiki/LiveCD</a>) works ok, unless x2apic<br>
&gt; is enabled, then it simply panics and reboots.<br>
&gt;<br>
&gt; The logs(xen_live.tgz) are attached. Note this was captured with VT-d<=
br>
&gt; being enabled, but I did check it with VT-d enabled and the boot<br>
&gt; looked the same. I can capture it again if needed.<br>
&gt;<br>
&gt;<br>
&gt; 5) Xen Server 6.0.0 works, with Xen 4.1.1, with both VT-d<br>
&gt; enabled(which shows working in xl) and x2apic enabled.<br>
&gt;<br>
&gt; I have also attached(xen_server_6.0.0.tar.gz) these logs, which<br>
&gt; includes logs both with and without VT-d and x2apic enabled. I did not=
<br>
&gt; actually create any VMs, only booted this and checked what xl reported=
.<br>
&gt;<br>
&gt;<br>
<br>
</div>That is rather interesting - I am not aware of any XenServer specific=
<br>
changes in this regard.<br>
<div><br>
&gt; If there is anything else I can add, please let me know. I am going to=
<br>
&gt; download 4.1.1 now, build it and see if it works, because it does on<b=
r>
&gt; Xen Server. I am open to testing anything as this is an original build=
<br>
&gt; on this box, so I&#39;m willing to knock it around if it will help.<br=
>
&gt;<br>
</div>&gt; #<br>
&gt;<br>
<br>
Knowing whether upstream 4.1.1 works will be very useful in workout out<br>
whether it is a regression introduced into unstable, or whether there is<br=
>
some XenServer specific change which we should upstream.<br>
<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Paul<br>
&gt;<br>
<span><font color=3D"#888888"><br>
--<br>
Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer<br>
T: <a href=3D"tel:%2B44%20%280%291223%20225%20900" value=3D"+441223225900" =
target=3D"_blank">+44 (0)1223 225 900</a>, <a href=3D"http://www.citrix.com=
" target=3D"_blank">http://www.citrix.com</a><br>
<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br>

--f46d0444040adaef0904b92faae4--
--f46d0444040adaef0c04b92faae6
Content-Type: application/zip; name="images.zip"
Content-Disposition: attachment; filename="images.zip"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyrqgvei0

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
4Pijs7g26uZbIfvy+cE4/hzXL+Hb+LTNVs7ubOyGQM2OtdafGVtKddV3cpe5Fuo7ZHeqi0gNjTPC
+l3Gl6XK1luaZSbiXP3ce1UvDeg2Nxa6ri2W6lgnCRk8A8+9MsfF9na22i24DMLMTedz94MKq2vi
iys7PU1iDlrmcMgwBgA5puaAnuvBsFxrckMAIhhjWSVR7jO0VJD4VthqOmSiINa3TbPKl4bI6mkP
ji0Et9MEkUz2Qj47SBcZqrb+NLcRaUJVd3tH3k+uc9/Wp5xnRX3g7SobTU5IQCcgR88xEkVhXWkQ
aascC6eb2R7fc8mOVyM8VVTxjHGmsRhXP2uQMgduB3qWHxzHuSaVG85IPKPPDcYp+0XYDS8OaJBL
otzMba3kljuM/wCkL91PapvDlhourrqssltHbxReWirjiEY9/esWy8X6d9guLSdJg8tz5qkHjHpT
B4rto4dTtraFovtZj2YP9anmuM6s6BosMWmtAq3Ae8CF25DA9qo61Dp9vex2Ztbb95OiqYx8wUnk
NXP6f4sSytLCB0Yi1l88YNS3fiXT55Jp0tT58syT72bONp6CnoTY7S58P6OJLxokj3Q2ZDwnGFbb
8jCsXQLyxu7W8X7DDm0svNBYAksprCfxkv8AaN9dLESLuDyCpPQ4xnFU9H8SxaVHeIYty3MBhJ/u
5obQ0iK5ubO/vPOkj+yRMFBCDp2ziqU4jSYrESyfwsepFNt7/wCzXHnqqOvO1X5HPtUU9z5krPtw
WP3R0FK/kM3vD8zR30O1tuWAJr1TXbVbzSm7kJnP4V4tbTkOrD5MEV7LpdzHe6NjeGPl46+1V0F1
PJJl2sw9Cag3Vfv4/LmlB/vH+dZUj4qCiTzttKL1xxuP51nySHNNDmkwuapvGPeo3uM1Q8yk8w0C
uXBcsD1pxuWPeqQbNIWPvSC5dEuasQRvMwVe9U7ZGdgBXZ6TpSqFlYdOa0iiDZ8MWAhVWfggZqz4
h1OOKFlz14/OqGoazBYw7Uba+Mbe/wCVcLqWrzXj/OTinJlRK91KWkY+9VC5pGlzUZNZtikPMlN3
1CzU3fRckm3Uhao/mzjBz6Y5pH3LwQQfQjFK4iXdRuqANT807gSbqTdTSGUZZWA9SCBT1ilddyxy
Ff7wViPzxigQ0uaYXNSiGV22hHLf3QpJ/LGaRraUHaUcN/d2nP5YzRr2Ag8w0helkjeM4ZWU+jAj
+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
--f46d0444040adaef0c04b92faae6
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

--f46d0444040adaef0c04b92faae6--


From xen-devel-bounces@lists.xen.org Tue Feb 21 09:30:57 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Feb 2012 09:30:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1Rzm3X-00054R-PU; Tue, 21 Feb 2012 09:30:43 +0000
Received: from mail174.messagelabs.com ([85.158.138.51])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1Rzm3V-000546-PH
	for xen-devel@lists.xen.org; Tue, 21 Feb 2012 09:30:42 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-13.tower-174.messagelabs.com!1329816633!9079880!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=1.6 required=7.0 tests=BODY_RANDOM_LONG,
	DATE_IN_PAST_06_12,RCVD_BY_IP,UPPERCASE_25_50
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10118 invoked from network); 21 Feb 2012 09:30:33 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-13.tower-174.messagelabs.com with RC4-SHA encrypted SMTP;
	21 Feb 2012 09:30:33 -0000
Received: by wibhi20 with SMTP id hi20so3285987wib.32
	for <xen-devel@lists.xen.org>; Tue, 21 Feb 2012 01:30:32 -0800 (PST)
Received-SPF: pass (google.com: domain of royger@gmail.com designates
	10.216.134.30 as permitted sender) client-ip=10.216.134.30; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of royger@gmail.com
	designates 10.216.134.30 as permitted sender)
	smtp.mail=royger@gmail.com; dkim=pass header.i=royger@gmail.com
Received: from mr.google.com ([10.216.134.30])
	by 10.216.134.30 with SMTP id r30mr6101002wei.42.1329816632988
	(num_hops = 1); Tue, 21 Feb 2012 01:30:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:subject:x-mercurial-node
	:message-id:user-agent:date:from:to:cc;
	bh=TfAOhltCKjhGSj7Cm+0kkqRwf+wL3FXYPaWp5WO/p5M=;
	b=YeedzpwvBTUe5Sikwknbkdm6IO7zIDYp+kj25/d5M/r1r88DW3G+vx+86z62sq0uuf
	xfkKzpvjNwIushfKSRJ09n1vOTOUnF8XHh9MutmON2tG3MdX5zj9GQCyaYLekg+wem8/
	KHz9f/w0uuVdu2yBMLU9SikSwY/Gr36uwDS1c=
Received: by 10.216.134.30 with SMTP id r30mr5073305wei.42.1329816632912;
	Tue, 21 Feb 2012 01:30:32 -0800 (PST)
Received: from build.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id p10sm21753718wic.0.2012.02.21.01.30.31
	(version=TLSv1/SSLv3 cipher=OTHER);
	Tue, 21 Feb 2012 01:30:32 -0800 (PST)
Content-Type: multipart/mixed; boundary="===============5260582694761208521=="
MIME-Version: 1.0
X-Mercurial-Node: dd87b09e93aa539f4b72ab695a83e5f3ce372d53
Message-Id: <dd87b09e93aa539f4b72.1329776284@build.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Mon, 20 Feb 2012 23:18:04 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xen.org
Cc: ian.jackson@citrix.com
Subject: [Xen-devel] [PATCH v5] build: add autoconf to replace custom checks
	in tools/check
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============5260582694761208521==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Added autotools magic to replace custom check scripts. The previous
checks have been ported to autoconf, and some additional ones have
been added (plus the suggestions from running autoscan). Two files are
created as a result from executing configure script, config/Tools.mk
and config.h.

conf/Tools.mk is included by tools/Rules.mk, and contains most of the
options previously defined in .config, that can now be set passing
parameters or defining environment variables when executing configure
script.

config.h is only used by libxl/xl to detect yajl_version.h.

Changes since v4:

 * Updated to tip.

 * Include config.h from compiler command line when building libxl and
   xl to assure yajl_version.h presence and correctly detect yajl
   version.

 * Added glib-2.0 check with appropiate m4 macros.

 * Purged config.h.in from unnecessary defines that could mess with
   the build system.

 * Removed tools/config.sub, tools/config.guess, tools/configure and
   configure to make the patch fit mailing list limit.

Changes since v3:

 * Copied config.guess and config.sub from automake 1.11.

 * Added a test to check for uuid.h on BSD and uuid/uuid.h on Linux.

Changes since v2:

 * Changed order of config/Tools.mk include.

 * Added "-e" to autogen.sh shebang.

 * Added necessary files (config.*) and output from Autoheader and
   Autoconf.

 * Removed Autoconf from build dependencies and updated README.

Changes since v1:

 * Moved autoconf stuff inside tools folder.

 * Add Makefile rules for cleaning.

 * Removed Automake dependency.

 * Create autogen.sh to automatically create configure script when
   building from source repository.

 * Cached values of options passed from command line.

 * Add necessary ignores to .hgignore.

 * Added Autoconf to the list of dependencies.

 * Changed hypen to underscore in XML2 and CURL variable names.

 * Added script to get version from xen/Makefile.

 * Set Ocaml tools to optional.

 * Added procedence of m4/ocaml.m4.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>


 .hgignore                         |    6 +
 Config.mk                         |   39 ------
 Makefile                          |    2 -
 README                            |    4 +
 autogen.sh                        |    8 +
 config/Tools.mk.in                |   50 +++++++
 tools/Makefile                    |    3 +-
 tools/Rules.mk                    |    7 +-
 tools/blktap/drivers/Makefile     |    2 +-
 tools/blktap/drivers/check_gcrypt |   14 --
 tools/check/Makefile              |   26 ----
 tools/check/README                |   20 ---
 tools/check/check_brctl           |   13 --
 tools/check/check_crypto_lib      |   11 -
 tools/check/check_curl            |   13 --
 tools/check/check_iproute         |   15 --
 tools/check/check_libaio_devel    |   11 -
 tools/check/check_libaio_lib      |    9 -
 tools/check/check_openssl_devel   |    6 -
 tools/check/check_python          |   13 --
 tools/check/check_python_devel    |   17 --
 tools/check/check_python_xml      |   12 -
 tools/check/check_udev            |   22 ---
 tools/check/check_uuid_devel      |    7 -
 tools/check/check_x11_devel       |    9 -
 tools/check/check_xgettext        |    6 -
 tools/check/check_xml2            |   14 --
 tools/check/check_yajl_devel      |    8 -
 tools/check/check_zlib_devel      |    6 -
 tools/check/check_zlib_lib        |   12 -
 tools/check/chk                   |   63 ---------
 tools/check/funcs.sh              |  106 ----------------
 tools/config.h.in                 |   16 ++
 tools/configure.ac                |  193 ++++++++++++++++++++++++++++++
 tools/debugger/gdbsx/xg/Makefile  |    1 -
 tools/install.sh                  |    1 +
 tools/libfsimage/Makefile         |    6 +-
 tools/libfsimage/check-libext2fs  |   21 ---
 tools/libxen/Makefile             |    8 +-
 tools/libxl/Makefile              |    7 +-
 tools/libxl/libxl_json.h          |    2 +-
 tools/m4/default_lib.m4           |    8 +
 tools/m4/disable_feature.m4       |   13 ++
 tools/m4/enable_feature.m4        |   13 ++
 tools/m4/ocaml.m4                 |  241 ++++++++++++++++++++++++++++++++++++++
 tools/m4/path_or_fail.m4          |    6 +
 tools/m4/pkg.m4                   |  157 ++++++++++++++++++++++++
 tools/m4/python_devel.m4          |   18 ++
 tools/m4/python_version.m4        |   12 +
 tools/m4/python_xml.m4            |   10 +
 tools/m4/set_cflags_ldflags.m4    |   20 +++
 tools/m4/udev.m4                  |   32 +++++
 tools/m4/uuid.m4                  |   10 +
 version.sh                        |    5 +
 54 files changed, 843 insertions(+), 511 deletions(-)



--===============5260582694761208521==
Content-Type: text/x-patch; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=xen-autoconf.patch

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI5Nzc2MjgxIC0zNjAwCiMgTm9kZSBJRCBkZDg3YjA5ZTkz
YWE1MzlmNGI3MmFiNjk1YTgzZTVmM2NlMzcyZDUzCiMgUGFyZW50ICBjYTgwZWNhOWNmYTM5ZDFi
NjBkMTIxNjk0OGRhYzU3MTFkNTUwYjgzCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwgY29uZmlnL1Rvb2xzLm1rCmFuZCBjb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMgaW5jbHVk
ZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRpb25zIHBy
ZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBhc3NpbmcK
cGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBleGVjdXRp
bmcgY29uZmlndXJlCnNjcmlwdC4KCmNvbmZpZy5oIGlzIG9ubHkgdXNlZCBieSBsaWJ4bC94bCB0
byBkZXRlY3QgeWFqbF92ZXJzaW9uLmguCgpDaGFuZ2VzIHNpbmNlIHY0OgoKICogVXBkYXRlZCB0
byB0aXAuCgogKiBJbmNsdWRlIGNvbmZpZy5oIGZyb20gY29tcGlsZXIgY29tbWFuZCBsaW5lIHdo
ZW4gYnVpbGRpbmcgbGlieGwgYW5kCiAgIHhsIHRvIGFzc3VyZSB5YWpsX3ZlcnNpb24uaCBwcmVz
ZW5jZSBhbmQgY29ycmVjdGx5IGRldGVjdCB5YWpsCiAgIHZlcnNpb24uCgogKiBBZGRlZCBnbGli
LTIuMCBjaGVjayB3aXRoIGFwcHJvcGlhdGUgbTQgbWFjcm9zLgoKICogUHVyZ2VkIGNvbmZpZy5o
LmluIGZyb20gdW5uZWNlc3NhcnkgZGVmaW5lcyB0aGF0IGNvdWxkIG1lc3Mgd2l0aAogICB0aGUg
YnVpbGQgc3lzdGVtLgoKICogUmVtb3ZlZCB0b29scy9jb25maWcuc3ViLCB0b29scy9jb25maWcu
Z3Vlc3MsIHRvb2xzL2NvbmZpZ3VyZSBhbmQKICAgY29uZmlndXJlIHRvIG1ha2UgdGhlIHBhdGNo
IGZpdCBtYWlsaW5nIGxpc3QgbGltaXQuCgpDaGFuZ2VzIHNpbmNlIHYzOgoKICogQ29waWVkIGNv
bmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiBmcm9tIGF1dG9tYWtlIDEuMTEuCgogKiBBZGRlZCBh
IHRlc3QgdG8gY2hlY2sgZm9yIHV1aWQuaCBvbiBCU0QgYW5kIHV1aWQvdXVpZC5oIG9uIExpbnV4
LgoKQ2hhbmdlcyBzaW5jZSB2MjoKCiAqIENoYW5nZWQgb3JkZXIgb2YgY29uZmlnL1Rvb2xzLm1r
IGluY2x1ZGUuCgogKiBBZGRlZCAiLWUiIHRvIGF1dG9nZW4uc2ggc2hlYmFuZy4KCiAqIEFkZGVk
IG5lY2Vzc2FyeSBmaWxlcyAoY29uZmlnLiopIGFuZCBvdXRwdXQgZnJvbSBBdXRvaGVhZGVyIGFu
ZAogICBBdXRvY29uZi4KCiAqIFJlbW92ZWQgQXV0b2NvbmYgZnJvbSBidWlsZCBkZXBlbmRlbmNp
ZXMgYW5kIHVwZGF0ZWQgUkVBRE1FLgoKQ2hhbmdlcyBzaW5jZSB2MToKCiAqIE1vdmVkIGF1dG9j
b25mIHN0dWZmIGluc2lkZSB0b29scyBmb2xkZXIuCgogKiBBZGQgTWFrZWZpbGUgcnVsZXMgZm9y
IGNsZWFuaW5nLgoKICogUmVtb3ZlZCBBdXRvbWFrZSBkZXBlbmRlbmN5LgoKICogQ3JlYXRlIGF1
dG9nZW4uc2ggdG8gYXV0b21hdGljYWxseSBjcmVhdGUgY29uZmlndXJlIHNjcmlwdCB3aGVuCiAg
IGJ1aWxkaW5nIGZyb20gc291cmNlIHJlcG9zaXRvcnkuCgogKiBDYWNoZWQgdmFsdWVzIG9mIG9w
dGlvbnMgcGFzc2VkIGZyb20gY29tbWFuZCBsaW5lLgoKICogQWRkIG5lY2Vzc2FyeSBpZ25vcmVz
IHRvIC5oZ2lnbm9yZS4KCiAqIEFkZGVkIEF1dG9jb25mIHRvIHRoZSBsaXN0IG9mIGRlcGVuZGVu
Y2llcy4KCiAqIENoYW5nZWQgaHlwZW4gdG8gdW5kZXJzY29yZSBpbiBYTUwyIGFuZCBDVVJMIHZh
cmlhYmxlIG5hbWVzLgoKICogQWRkZWQgc2NyaXB0IHRvIGdldCB2ZXJzaW9uIGZyb20geGVuL01h
a2VmaWxlLgoKICogU2V0IE9jYW1sIHRvb2xzIHRvIG9wdGlvbmFsLgoKICogQWRkZWQgcHJvY2Vk
ZW5jZSBvZiBtNC9vY2FtbC5tNC4KClNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uZSA8cm9n
ZXIucGF1QGVudGVsLnVwYy5lZHU+CgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkz
YWEgLmhnaWdub3JlCi0tLSBhLy5oZ2lnbm9yZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAw
MDAKKysrIGIvLmhnaWdub3JlCU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAxMiArMDEwMApAQCAtMzAz
LDYgKzMwMywxMiBAQAogXnRvb2xzL29jYW1sL2xpYnMveGwveGVubGlnaHRcLm1sJAogXnRvb2xz
L29jYW1sL2xpYnMveGwveGVubGlnaHRcLm1saSQKIF50b29scy9vY2FtbC94ZW5zdG9yZWQvb3hl
bnN0b3JlZCQKK150b29scy9hdXRvbTR0ZVwuY2FjaGUkCitedG9vbHMvY29uZmlnXC5oJAorXnRv
b2xzL2NvbmZpZ1wubG9nJAorXnRvb2xzL2NvbmZpZ1wuc3RhdHVzJAorXnRvb2xzL2NvbmZpZ1wu
Y2FjaGUkCiteY29uZmlnL1Rvb2xzXC5tayQKIF54ZW4vXC5iYW5uZXIuKiQKIF54ZW4vQkxPRyQK
IF54ZW4vU3lzdGVtLm1hcCQKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIENv
bmZpZy5tawotLS0gYS9Db25maWcubWsJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisr
KyBiL0NvbmZpZy5tawlNb24gRmViIDIwIDIzOjE4OjAxIDIwMTIgKzAxMDAKQEAgLTcwLDkgKzcw
LDYgQEAgRVhUUkFfSU5DTFVERVMgKz0gJChFWFRSQV9QUkVGSVgpL2luY2x1ZAogRVhUUkFfTElC
ICs9ICQoRVhUUkFfUFJFRklYKS8kKExJQkxFQUZESVIpCiBlbmRpZgogCi1CSVNPTgk/PSBiaXNv
bgotRkxFWAk/PSBmbGV4Ci0KIFBZVEhPTiAgICAgID89IHB5dGhvbgogUFlUSE9OX1BSRUZJWF9B
UkcgPz0gLS1wcmVmaXg9IiQoUFJFRklYKSIKICMgVGhlIGFib3ZlIHJlcXVpcmVzIHRoYXQgUFJF
RklYIGNvbnRhaW5zICpubyBzcGFjZXMqLiBUaGlzIHZhcmlhYmxlIGlzIGhlcmUKQEAgLTE3NSwz
MiArMTcyLDkgQEAgQ0ZMQUdTICs9ICQoZm9yZWFjaCBpLCAkKFBSRVBFTkRfSU5DTFVERQogQVBQ
RU5EX0xERkxBR1MgKz0gJChmb3JlYWNoIGksICQoQVBQRU5EX0xJQiksIC1MJChpKSkKIEFQUEVO
RF9DRkxBR1MgKz0gJChmb3JlYWNoIGksICQoQVBQRU5EX0lOQ0xVREVTKSwgLUkkKGkpKQogCi1D
SEVDS19MSUIgPSAkKEVYVFJBX0xJQikgJChQUkVQRU5EX0xJQikgJChBUFBFTkRfTElCKQotQ0hF
Q0tfSU5DTFVERVMgPSAkKEVYVFJBX0lOQ0xVREVTKSAkKFBSRVBFTkRfSU5DTFVERVMpICQoQVBQ
RU5EX0lOQ0xVREVTKQotCiBFTUJFRERFRF9FWFRSQV9DRkxBR1MgOj0gLW5vcGllIC1mbm8tc3Rh
Y2stcHJvdGVjdG9yIC1mbm8tc3RhY2stcHJvdGVjdG9yLWFsbAogRU1CRURERURfRVhUUkFfQ0ZM
QUdTICs9IC1mbm8tZXhjZXB0aW9ucwogCi1DT05GSUdfTElCSUNPTlYgICA6PSAkKHNoZWxsIGV4
cG9ydCBPUz0iYHVuYW1lIC1zYCI7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0IENI
RUNLX0xJQj0iJChDSEVDS19MSUIpIjsgXAotICAgICAgICAgICAgICAgICAgICAgICAuICQoWEVO
X1JPT1QpL3Rvb2xzL2NoZWNrL2Z1bmNzLnNoOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIGhh
c19saWIgbGliaWNvbnYuc28gJiYgZWNobyAneScgfHwgZWNobyAnbicpCi0KLUNPTkZJR19ZQUpM
X1ZFUlNJT04gOj0gJChzaGVsbCBleHBvcnQgT1M9ImB1bmFtZSAtc2AiOyBcCi0gICAgICAgICAg
ICAgICAgICAgICAgIGV4cG9ydCBDSEVDS19JTkNMVURFUz0iJChDSEVDS19JTkNMVURFUykiOyBc
Ci0gICAgICAgICAgICAgICAgICAgICAgIC4gJChYRU5fUk9PVCkvdG9vbHMvY2hlY2svZnVuY3Mu
c2g7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgaGFzX2hlYWRlciB5YWpsL3lhamxfdmVyc2lv
bi5oICYmIGVjaG8gJ3knIHx8IGVjaG8gJ24nKQotCi0jIEVuYWJsZSBYU00gc2VjdXJpdHkgbW9k
dWxlIChieSBkZWZhdWx0LCBGbGFzaykuCi1YU01fRU5BQkxFID89IG4KLUZMQVNLX0VOQUJMRSA/
PSAkKFhTTV9FTkFCTEUpCi0KLSMgRG93bmxvYWQgR0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUCBv
ciBHSVQncyBvd24gcHJvdG9jb2w/Ci0jIEdJVCdzIHByb3RvY29sIGlzIGZhc3RlciBhbmQgbW9y
ZSByb2J1c3QsIHdoZW4gaXQgd29ya3MgYXQgYWxsIChmaXJld2FsbHMKLSMgbWF5IGJsb2NrIGl0
KS4gV2UgbWFrZSBpdCB0aGUgZGVmYXVsdCwgYnV0IGlmIHlvdXIgR0lUIHJlcG9zaXRvcnkgZG93
bmxvYWRzCi0jIGZhaWwgb3IgaGFuZywgcGxlYXNlIHNwZWNpZnkgR0lUX0hUVFA9eSBpbiB5b3Vy
IGVudmlyb25tZW50LgotR0lUX0hUVFAgPz0gbgotCiBYRU5fRVhURklMRVNfVVJMPWh0dHA6Ly94
ZW5iaXRzLnhlbnNvdXJjZS5jb20veGVuLWV4dGZpbGVzCiAjIEFsbCB0aGUgZmlsZXMgYXQgdGhh
dCBsb2NhdGlvbiB3ZXJlIGRvd25sb2FkZWQgZnJvbSBlbHNld2hlcmUgb24KICMgdGhlIGludGVy
bmV0LiAgVGhlIG9yaWdpbmFsIGRvd25sb2FkIFVSTCBpcyBwcmVzZXJ2ZWQgYXMgYSBjb21tZW50
CkBAIC0yMzksMTcgKzIxMyw0IEBAIFFFTVVfVEFHID89IDEyOGRlMjU0OWM1ZjI0ZTRhNDM3Yjg2
YmQyZTQKICMgU2hvcnQgYW5zd2VyIC0tIGRvIG5vdCBlbmFibGUgdGhpcyB1bmxlc3MgeW91IGtu
b3cgd2hhdCB5b3UgYXJlCiAjIGRvaW5nIGFuZCBhcmUgcHJlcGFyZWQgZm9yIHNvbWUgcGFpbi4K
IAotIyBPcHRpb25hbCBjb21wb25lbnRzCi1YRU5TVEFUX1hFTlRPUCAgICAgPz0geQotVlRQTV9U
T09MUyAgICAgICAgID89IG4KLUxJQlhFTkFQSV9CSU5ESU5HUyA/PSBuCi1QWVRIT05fVE9PTFMg
ICAgICAgPz0geQotT0NBTUxfVE9PTFMgICAgICAgID89IHkKLUNPTkZJR19NSU5JVEVSTSAgICA/
PSBuCi1DT05GSUdfTE9NT1VOVCAgICAgPz0gbgotQ09ORklHX1NZU1RFTV9MSUJBSU8gPz0geQog
Q09ORklHX1RFU1RTICAgICAgID89IHkKLQotaWZlcSAoJChPQ0FNTF9UT09MUykseSkKLU9DQU1M
X1RPT0xTIDo9ICQoc2hlbGwgb2NhbWxvcHQgLXYgPiAvZGV2L251bGwgMj4mMSAmJiBlY2hvICJ5
IiB8fCBlY2hvICJuIikKLWVuZGlmCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNh
YSBNYWtlZmlsZQotLS0gYS9NYWtlZmlsZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAK
KysrIGIvTWFrZWZpbGUJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBAIC00MCwxMSAr
NDAsOSBAQCBkaXN0OiBERVNURElSPSQoRElTVERJUikvaW5zdGFsbAogZGlzdDogZGlzdC14ZW4g
ZGlzdC1rZXJuZWxzIGRpc3QtdG9vbHMgZGlzdC1zdHViZG9tIGRpc3QtZG9jcyBkaXN0LW1pc2MK
IAogZGlzdC1taXNjOgotCSQoSU5TVEFMTF9ESVIpICQoRElTVERJUikvY2hlY2sKIAkkKElOU1RB
TExfREFUQSkgLi9DT1BZSU5HICQoRElTVERJUikKIAkkKElOU1RBTExfREFUQSkgLi9SRUFETUUg
JChESVNURElSKQogCSQoSU5TVEFMTF9QUk9HKSAuL2luc3RhbGwuc2ggJChESVNURElSKQotCSQo
SU5TVEFMTF9QUk9HKSB0b29scy9jaGVjay9jaGsgdG9vbHMvY2hlY2svY2hlY2tfKiB0b29scy9j
aGVjay9mdW5jcy5zaCAkKERJU1RESVIpL2NoZWNrCiBkaXN0LSU6IERFU1RESVI9JChESVNURElS
KS9pbnN0YWxsCiBkaXN0LSU6IGluc3RhbGwtJQogCUA6ICMgZG8gbm90aGluZwpkaWZmIC1yIGNh
ODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgUkVBRE1FCi0tLSBhL1JFQURNRQlNb24gRmViIDIw
IDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIGIvUkVBRE1FCU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAx
MiArMDEwMApAQCAtODksOSArODksMTMgQEAgMi4gY2QgdG8geGVuLXVuc3RhYmxlIChvciB3aGF0
ZXZlciB5b3UgcwogMy4gRm9yIHRoZSB2ZXJ5IGZpcnN0IGJ1aWxkLCBvciBpZiB5b3Ugd2FudCB0
byBkZXN0cm95IGJ1aWxkIHRyZWVzLAogICAgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgog
CisgICAgIyAuL2NvbmZpZ3VyZQogICAgICMgbWFrZSB3b3JsZAogICAgICMgbWFrZSBpbnN0YWxs
CiAKKyAgIElmIHlvdSB3YW50LCB5b3UgY2FuIHJ1biAuL2NvbmZpZ3VyZSAtLWhlbHAgdG8gc2Vl
IHRoZSBsaXN0IG9mCisgICBvcHRpb25zIGF2YWlsYWJsZSBvcHRpb25zIHdoZW4gYnVpbGRpbmcg
YW5kIGluc3RhbGxpbmcgWGVuLgorCiAgICBUaGlzIHdpbGwgY3JlYXRlIGFuZCBpbnN0YWxsIG9u
dG8gdGhlIGxvY2FsIG1hY2hpbmUuIEl0IHdpbGwgYnVpbGQKICAgIHRoZSB4ZW4gYmluYXJ5ICh4
ZW4uZ3opLCB0aGUgdG9vbHMgYW5kIHRoZSBkb2N1bWVudGF0aW9uLgogCmRpZmYgLXIgY2E4MGVj
YTljZmEzIC1yIGRkODdiMDllOTNhYSBhdXRvZ2VuLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2F1dG9nZW4uc2gJTW9uIEZlYiAyMCAyMzoxODow
MSAyMDEyICswMTAwCkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoIC1lCitybSAtcmYgY29uZmln
dXJlCitjZCB0b29scworYXV0b2NvbmYKK2NkIC4uCitlY2hvICIjIS9iaW4vc2ggLWUiID4+IGNv
bmZpZ3VyZQorZWNobyAiY2QgdG9vbHMgJiYgLi9jb25maWd1cmUgXCRAIiA+PiBjb25maWd1cmUK
K2NobW9kICt4IGNvbmZpZ3VyZQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEg
Y29uZmlnL1Rvb2xzLm1rLmluCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL2NvbmZpZy9Ub29scy5tay5pbglNb24gRmViIDIwIDIzOjE4OjAxIDIwMTIg
KzAxMDAKQEAgLTAsMCArMSw1MCBAQAorIyBQcmVmaXggYW5kIGluc3RhbGwgZm9sZGVyCitQUkVG
SVggICAgICAgICAgICAgIDo9IEBwcmVmaXhACitMSUJMRUFGRElSX3g4Nl82NCAgIDo9IEBMSUJf
UEFUSEAKKworIyBBIGRlYnVnIGJ1aWxkIG9mIHRvb2xzPworZGVidWcgICAgICAgICAgICAgICA6
PSBAZGVidWdACisKKyMgVG9vbHMgcGF0aAorQklTT04gICAgICAgICAgICAgICA6PSBAQklTT05A
CitGTEVYICAgICAgICAgICAgICAgIDo9IEBGTEVYQAorUFlUSE9OICAgICAgICAgICAgICA6PSBA
UFlUSE9OQAorUFlUSE9OX1BBVEggICAgICAgICA6PSBAUFlUSE9OUEFUSEAKK1BFUkwgICAgICAg
ICAgICAgICAgOj0gQFBFUkxACitCUkNUTCAgICAgICAgICAgICAgIDo9IEBCUkNUTEAKK0lQICAg
ICAgICAgICAgICAgICAgOj0gQElQQAorQ1VSTF9DT05GSUcgICAgICAgICA6PSBAQ1VSTEAKK1hN
TDJfQ09ORklHICAgICAgICAgOj0gQFhNTEAKK0JBU0ggICAgICAgICAgICAgICAgOj0gQEJBU0hA
CitYR0VUVFRFWFQgICAgICAgICAgIDo9IEBYR0VUVEVYVEAKKworIyBFeHRyYSBmb2xkZXIgZm9y
IGxpYnMvaW5jbHVkZXMKK1BSRVBFTkRfSU5DTFVERVMgICAgOj0gQFBSRVBFTkRfSU5DTFVERVNA
CitQUkVQRU5EX0xJQiAgICAgICAgIDo9IEBQUkVQRU5EX0xJQkAKK0FQUEVORF9JTkNMVURFUyAg
ICAgOj0gQEFQUEVORF9JTkNMVURFU0AKK0FQUEVORF9MSUIgICAgICAgICAgOj0gQEFQUEVORF9M
SUJACisKKyMgRW5hYmxlIFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNrKS4K
K1hTTV9FTkFCTEUgICAgICAgICAgOj0gQHhzbUAKK0ZMQVNLX0VOQUJMRSAgICAgICAgOj0gQHhz
bUAKKworIyBEb3dubG9hZCBHSVQgcmVwb3NpdG9yaWVzIHZpYSBIVFRQIG9yIEdJVCdzIG93biBw
cm90b2NvbD8KKyMgR0lUJ3MgcHJvdG9jb2wgaXMgZmFzdGVyIGFuZCBtb3JlIHJvYnVzdCwgd2hl
biBpdCB3b3JrcyBhdCBhbGwgKGZpcmV3YWxscworIyBtYXkgYmxvY2sgaXQpLiBXZSBtYWtlIGl0
IHRoZSBkZWZhdWx0LCBidXQgaWYgeW91ciBHSVQgcmVwb3NpdG9yeSBkb3dubG9hZHMKKyMgZmFp
bCBvciBoYW5nLCBwbGVhc2Ugc3BlY2lmeSBHSVRfSFRUUD15IGluIHlvdXIgZW52aXJvbm1lbnQu
CitHSVRfSFRUUCAgICAgICAgICAgIDo9IEBnaXRodHRwQAorCisjIE9wdGlvbmFsIGNvbXBvbmVu
dHMKK1hFTlNUQVRfWEVOVE9QICAgICAgOj0gQG1vbml0b3JzQAorVlRQTV9UT09MUyAgICAgICAg
ICA6PSBAdnRwbUAKK0xJQlhFTkFQSV9CSU5ESU5HUyAgOj0gQHhhcGlACitQWVRIT05fVE9PTFMg
ICAgICAgIDo9IEBweXRob250b29sc0AKK09DQU1MX1RPT0xTICAgICAgICAgOj0gQG9jYW1sdG9v
bHNACitDT05GSUdfTUlOSVRFUk0gICAgIDo9IEBtaW5pdGVybUAKK0NPTkZJR19MT01PVU5UICAg
ICAgOj0gQGxvbW91bnRACisKKyNTeXN0ZW0gb3B0aW9ucworQ09ORklHX1NZU1RFTV9MSUJBSU86
PSBAc3lzdGVtX2Fpb0AKK0NPTkZJR19MSUJJQ09OViAgICAgOj0gQGxpYmljb252QAorQ09ORklH
X0dDUllQVCAgICAgICA6PSBAbGliZ2NyeXB0QAorQ09ORklHX0VYVDJGUyAgICAgICA6PSBAbGli
ZXh0MmZzQApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvTWFrZWZp
bGUKLS0tIGEvdG9vbHMvTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisr
KyBiL3Rvb2xzL01ha2VmaWxlCU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAxMiArMDEwMApAQCAtNiw3
ICs2LDYgQEAgU1VCRElSUy1saWJhaW8gOj0gbGliYWlvCiBlbmRpZgogCiBTVUJESVJTLXkgOj0K
LVNVQkRJUlMteSArPSBjaGVjawogU1VCRElSUy15ICs9IGluY2x1ZGUKIFNVQkRJUlMteSArPSBs
aWJ4YwogU1VCRElSUy15ICs9IGZsYXNrCkBAIC03OSw2ICs3OCw4IEBAIGNsZWFuOiBzdWJkaXJz
LWNsZWFuCiBkaXN0Y2xlYW46IHN1YmRpcnMtZGlzdGNsZWFuCiAJcm0gLXJmIHFlbXUteGVuLXRy
YWRpdGlvbmFsLWRpciBxZW11LXhlbi10cmFkaXRpb25hbC1kaXItcmVtb3RlCiAJcm0gLXJmIHFl
bXUteGVuLWRpciBxZW11LXhlbi1kaXItcmVtb3RlCisJcm0gLXJmIC4uL2NvbmZpZy9Ub29scy5t
ayBjb25maWcuaCBjb25maWcubG9nIGNvbmZpZy5zdGF0dXMgXAorCQljb25maWcuY2FjaGUgYXV0
b200dGUuY2FjaGUKIAogaWZuZXEgKCQoWEVOX0NPTVBJTEVfQVJDSCksJChYRU5fVEFSR0VUX0FS
Q0gpKQogSU9FTVVfQ09ORklHVVJFX0NST1NTID89IC0tY3B1PSQoWEVOX1RBUkdFVF9BUkNIKSBc
CmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9SdWxlcy5tawotLS0g
YS90b29scy9SdWxlcy5tawlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIGIvdG9v
bHMvUnVsZXMubWsJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBAIC00LDYgKzQsNyBA
QAogYWxsOgogCiBpbmNsdWRlICQoWEVOX1JPT1QpL0NvbmZpZy5taworaW5jbHVkZSAkKFhFTl9S
T09UKS9jb25maWcvVG9vbHMubWsKIAogZXhwb3J0IF9JTlNUQUxMIDo9ICQoSU5TVEFMTCkKIElO
U1RBTEwgPSAkKFhFTl9ST09UKS90b29scy9jcm9zcy1pbnN0YWxsCkBAIC04MCw4ICs4MSw2IEBA
IGNoZWNrLSQoQ09ORklHX1g4NikgPSAkKGNhbGwgY2MtdmVyLWNoZWMKICAgICAgICAgICAgICAg
ICAgICAgICAgICJYZW4gcmVxdWlyZXMgYXQgbGVhc3QgZ2NjLTMuNCIpCiAkKGV2YWwgJChjaGVj
ay15KSkKIAotX1BZVEhPTl9QQVRIIDo9ICQoc2hlbGwgd2hpY2ggJChQWVRIT04pKQotUFlUSE9O
X1BBVEggPz0gJChfUFlUSE9OX1BBVEgpCiBJTlNUQUxMX1BZVEhPTl9QUk9HID0gXAogCSQoWEVO
X1JPT1QpL3Rvb2xzL3B5dGhvbi9pbnN0YWxsLXdyYXAgIiQoUFlUSE9OX1BBVEgpIiAkKElOU1RB
TExfUFJPRykKIApAQCAtMTA5LDMgKzEwOCw3IEBAIHN1YmRpci1hbGwtJSBzdWJkaXItY2xlYW4t
JSBzdWJkaXItaW5zdGEKIAogc3ViZGlyLWRpc3RjbGVhbi0lOiAucGhvbnkKIAkkKE1BS0UpIC1D
ICQqIGNsZWFuCisKKyQoWEVOX1JPT1QpL2NvbmZpZy9Ub29scy5tazoKKwlAZWNobyAiWW91IGhh
dmUgdG8gcnVuIC4vY29uZmlndXJlIGJlZm9yZSBidWlsZGluZyBvciBpbnN0YWxsaW5nIHRoZSB0
b29scyIKKwlAZXhpdCAxCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29s
cy9ibGt0YXAvZHJpdmVycy9NYWtlZmlsZQotLS0gYS90b29scy9ibGt0YXAvZHJpdmVycy9NYWtl
ZmlsZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMvYmxrdGFwL2Ry
aXZlcnMvTWFrZWZpbGUJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBAIC0xMyw3ICsx
Myw3IEBAIENGTEFHUyAgICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQogQ0ZMQUdTICAgKz0gLUkg
JChNRU1TSFJfRElSKQogQ0ZMQUdTICAgKz0gLURfR05VX1NPVVJDRQogCi1pZmVxICgkKHNoZWxs
IC4gLi9jaGVja19nY3J5cHQgJChDQykpLHllcykKK2lmZXEgKCRDT05GSUdfR0NSWVBULHkpCiBD
RkxBR1MgKz0gLURVU0VfR0NSWVBUCiBDUllQVF9MSUIgOj0gLWxnY3J5cHQKIGVsc2UKZGlmZiAt
ciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2Jsa3RhcC9kcml2ZXJzL2NoZWNr
X2djcnlwdAotLS0gYS90b29scy9ibGt0YXAvZHJpdmVycy9jaGVja19nY3J5cHQJTW9uIEZlYiAy
MCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDE0ICswLDAgQEAKLSMhL2Jpbi9zaAotCi1jYXQgPiAuZ2NyeXB0LmMg
PDwgRU9GCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci1pbnQgbWFpbih2b2lkKSB7IHJldHVybiAwOyB9
Ci1FT0YKLQotaWYgJDEgLW8gLmdjcnlwdCAuZ2NyeXB0LmMgLWxnY3J5cHQgMj4vZGV2L251bGwg
OyB0aGVuCi0gIGVjaG8gInllcyIKLWVsc2UKLSAgZWNobyAibm8iCi1maQotCi1ybSAtZiAuZ2Ny
eXB0KgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvY2hlY2svTWFr
ZWZpbGUKLS0tIGEvdG9vbHMvY2hlY2svTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEy
ICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0x
LDI2ICswLDAgQEAKLVhFTl9ST09UID0gJChDVVJESVIpLy4uLy4uCi1pbmNsdWRlICQoWEVOX1JP
T1QpL3Rvb2xzL1J1bGVzLm1rCi0KLSMgRXhwb3J0IHRoZSBuZWNlc3NhcnkgZW52aXJvbm1lbnQg
dmFyaWFibGVzIGZvciB0aGUgdGVzdHMKLWV4cG9ydCBQWVRIT04KLWV4cG9ydCBMSUJYRU5BUElf
QklORElOR1MKLWV4cG9ydCBDSEVDS19JTkNMVURFUwotZXhwb3J0IENIRUNLX0xJQgotZXhwb3J0
IENPTkZJR19TWVNURU1fTElCQUlPCi0KLS5QSE9OWTogYWxsIGluc3RhbGwKLWFsbCBpbnN0YWxs
OiBjaGVjay1idWlsZAotCi0jIENoZWNrIHRoaXMgbWFjaGluZSBpcyBPSyBmb3IgYnVpbGRpbmcg
b24uCi0uUEhPTlk6IGNoZWNrLWJ1aWxkCi1jaGVjay1idWlsZDoKLQkuL2NoayBidWlsZAotCi0j
IENoZWNrIHRoaXMgbWFjaGluZSBpcyBPSyBmb3IgaW5zdGFsbGluZyBvbi4KLS5QSE9OWTogY2hl
Y2staW5zdGFsbAotY2hlY2staW5zdGFsbDoKLQkuL2NoayBpbnN0YWxsCi0KLS5QSE9OWTogY2xl
YW4KLWNsZWFuOgotCS4vY2hrIGNsZWFuCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDll
OTNhYSB0b29scy9jaGVjay9SRUFETUUKLS0tIGEvdG9vbHMvY2hlY2svUkVBRE1FCU1vbiBGZWIg
MjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwyMCArMCwwIEBACi1DaGVja3MgZm9yIHRoZSBzdWl0YWJpbGl0eSBv
ZiBhIG1hY2hpbmUgZm9yIFhlbiBidWlsZCBvciBpbnN0YWxsLgotVG8gY2hlY2sgZm9yIGJ1aWxk
IHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hrIGJ1aWxkCi0KLVRvIGNoZWNrIGZvciBp
bnN0YWxsIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hrIGluc3RhbGwKLQotVGhlIGNo
ayBzY3JpcHQgd2lsbCBydW4gY2hlY2tzIGluIHRoaXMgZGlyZWN0b3J5IGFuZCBwcmludAotdGhl
IG9uZXMgdGhhdCBmYWlsZWQuIEl0IHByaW50cyBub3RoaW5nIGlmIGNoZWNrcyBzdWNjZWVkLgot
VGhlIGNoayBzY3JpcHQgZXhpdHMgd2l0aCAwIG9uIHN1Y2Nlc3MgYW5kIDEgb24gZmFpbHVyZS4K
LQotVGhlIGNoayBzY3JpcHQgcnVucyBleGVjdXRhYmxlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5
IHdob3NlCi1uYW1lcyBiZWdpbiB3aXRoICdjaGVja18nLiBGaWxlcyBjb250YWluaW5nIENIRUNL
LUJVSUxECi1hcmUgcnVuIGZvciB0aGUgYnVpbGQgY2hlY2ssIGFuZCBmaWxlcyBjb250YWluaW5n
IENIRUNLLUlOU1RBTEwKLWFyZSBydW4gZm9yIHRoZSBpbnN0YWxsIGNoZWNrLgotCi1EZXRhaWxl
ZCBvdXRwdXQgZnJvbSB0aGUgY2hlY2sgc2NyaXB0cyBpcyBpbiAuY2hrYnVpbGQgZm9yIGJ1aWxk
Ci1hbmQgLmNoa2luc3RhbGwgZm9yIGluc3RhbGwuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvY2hlY2svY2hlY2tf
YnJjdGwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfYnJjdGwJTW9uIEZlYiAyMCAxODozNDoxNCAy
MDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBA
IC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5z
aAotCi1jYXNlICRPUyBpbgotT3BlbkJTRHxOZXRCU0R8RnJlZUJTRCkKLQloYXNfb3JfZmFpbCBi
cmNvbmZpZyA7OwotTGludXgpCi0JaGFzX29yX2ZhaWwgYnJjdGwgOzsKLSopCi0JZmFpbCAidW5r
bm93biBPUyIgOzsKLWVzYWMKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRv
b2xzL2NoZWNrL2NoZWNrX2NyeXB0b19saWIKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfY3J5cHRv
X2xpYglNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTEgKzAsMCBAQAotIyEvYmluL3NoCi0jIENI
RUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWNhc2UgJE9TIGluCi1G
cmVlQlNEfE5ldEJTRHxPcGVuQlNEKQotCWV4aXQgMCA7OwotZXNhYwotCi1oYXNfbGliIGxpYmNy
eXB0by5zbyB8fCBmYWlsICJtaXNzaW5nIGxpYmNyeXB0by5zbyIKZGlmZiAtciBjYTgwZWNhOWNm
YTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2NoZWNrL2NoZWNrX2N1cmwKLS0tIGEvdG9vbHMvY2hl
Y2svY2hlY2tfY3VybAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTMgKzAsMCBAQAotIyEvYmlu
L3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsg
IiRMSUJYRU5BUElfQklORElOR1MiICE9ICJ5IiBdOyB0aGVuCi0JZWNobyAtbiAidW51c2VkLCAi
Ci0JZXhpdCAwCi1maQotCi1oYXNfb3JfZmFpbCBjdXJsLWNvbmZpZwotY3VybF9saWJzPWBjdXJs
LWNvbmZpZyAtLWxpYnNgIHx8IGZhaWwgImN1cmwtY29uZmlnIC0tbGlicyBmYWlsZWQiCi10ZXN0
X2xpbmsgJGN1cmxfbGlicyB8fCBmYWlsICJkZXBlbmRlbmN5IGxpYnJhcmllcyBmb3IgY3VybCBh
cmUgbWlzc2luZyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2No
ZWNrL2NoZWNrX2lwcm91dGUKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfaXByb3V0ZQlNb24gRmVi
IDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKQEAgLTEsMTUgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlOU1RBTEwK
LQotLiAuL2Z1bmNzLnNoCi0KLVBBVEg9L3NiaW46JFBBVEgKLQotY2FzZSAkT1MgaW4KLU9wZW5C
U0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwgaWZjb25maWcgOzsKLUxpbnV4KQotCWhh
c19vcl9mYWlsIGlwIDs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiIDs7Ci1lc2FjCmRpZmYgLXIg
Y2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9jaGVjay9jaGVja19saWJhaW9fZGV2
ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfbGliYWlvX2RldmVsCU1vbiBGZWIgMjAgMTg6MzQ6
MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAw
MApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNz
LnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9IFgieSIgXSA7IHRoZW4KLSAg
ICBleGl0IDAKLWZpCi1pZiAhIGhhc19oZWFkZXIgbGliYWlvLmggOyB0aGVuCi0gICAgZmFpbCAi
Y2FuJ3QgZmluZCBsaWJhaW8gaGVhZGVycywgaW5zdGFsbCBsaWJhaW8gZGV2ZWwgcGFja2FnZSBv
ciBzZXQgQ09ORklHX1NZU1RFTV9MSUJBSU89biIKLWZpCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IGRkODdiMDllOTNhYSB0b29scy9jaGVjay9jaGVja19saWJhaW9fbGliCi0tLSBhL3Rvb2xzL2No
ZWNrL2NoZWNrX2xpYmFpb19saWIJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDkgKzAsMCBAQAot
IyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0K
LWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9IFgieSIgXSA7IHRoZW4KLSAgICBleGl0
IDAKLWZpCi1oYXNfbGliIGxpYmFpby5zbyB8fCBmYWlsICJjYW4ndCBmaW5kIGxpYmFpbyIKZGlm
ZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2NoZWNrL2NoZWNrX29wZW5z
c2xfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfb3BlbnNzbF9kZXZlbAlNb24gRmViIDIw
IDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAu
L2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgb3BlbnNzbC9tZDUuaCB8fCBmYWlsICJtaXNzaW5nIG9w
ZW5zc2wgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xz
L2NoZWNrL2NoZWNrX3B5dGhvbgotLS0gYS90b29scy9jaGVjay9jaGVja19weXRob24JTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBD
SEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhl
bgotICBQWVRIT049cHl0aG9uCi1maQotCi0ke1BZVEhPTn0gLWMgJwotaW1wb3J0IHN5cwotc3lz
LmV4aXQoc3lzLnZlcnNpb25faW5mb1swXSA8IDIgb3Igc3lzLnZlcnNpb25faW5mb1sxXSA8IDMp
Ci0nIHx8IGZhaWwgIm5lZWQgcHl0aG9uIHZlcnNpb24gPj0gMi4zIgpkaWZmIC1yIGNhODBlY2E5
Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX2RldmVsCi0tLSBh
L3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIg
KzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MTcgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1p
ZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgotICBQWVRIT049cHl0aG9uCi1maQotaGFzX29yX2Zh
aWwgJHtQWVRIT059Ci0KLSR7UFlUSE9OfSAtYyAnCi1pbXBvcnQgb3MucGF0aCwgc3lzCi1mb3Ig
cCBpbiBzeXMucGF0aDoKLQlpZiBvcy5wYXRoLmV4aXN0cyhwICsgIi9jb25maWcvTWFrZWZpbGUi
KToKLQkJc3lzLmV4aXQoMCkKLXN5cy5leGl0KDEpCi0nIHx8IGZhaWwgImNhbid0IGZpbmQgcHl0
aG9uIGRldmVsIGZpbGVzIgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9v
bHMvY2hlY2svY2hlY2tfcHl0aG9uX3htbAotLS0gYS90b29scy9jaGVjay9jaGVja19weXRob25f
eG1sCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hF
Q0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotaWYgdGVzdCAteiAke1BZVEhPTn07IHRoZW4K
LSAgUFlUSE9OPXB5dGhvbgotZmkKLWhhc19vcl9mYWlsICR7UFlUSE9OfQotCi0ke1BZVEhPTn0g
LWMgJ2ltcG9ydCB4bWwuZG9tLm1pbmlkb20nIDI+L2Rldi9udWxsIHx8IFwKLWZhaWwgImNhbid0
IGltcG9ydCB4bWwuZG9tLm1pbmlkb20iCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDll
OTNhYSB0b29scy9jaGVjay9jaGVja191ZGV2Ci0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3VkZXYJ
TW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIyICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1J
TlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotT3BlbkJTRHxOZXRCU0R8RnJl
ZUJTRCkKLQloYXNfb3JfZmFpbCB2bmNvbmZpZwotCTs7Ci1MaW51eCkKLQloYXMgL3NiaW4vdWRl
dmFkbSAmJiBcCi0JCXVkZXZ2ZXI9YC9zYmluL3VkZXZhZG0gaW5mbyAtViB8IGF3ayAne3ByaW50
ICRORn0nYAotCVsgLXogIiR1ZGV2dmVyIiBdICYmIGhhc19vcl9mYWlsIHVkZXZpbmZvICYmIFwK
LQkJdWRldnZlcj1gdWRldmluZm8gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKLQlbICIkdWRldnZl
ciIgLWdlIDU5IF0gMj4vZGV2L251bGwgfHwgXAotCQloYXMgaG90cGx1ZyB8fCBcCi0JCWZhaWwg
InVkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9uIDU5IG9yIGxhdGVyIgotCTs7Ci0q
KQotCWZhaWwgInVua25vd24gT1MiCi0JOzsKLWVzYWMKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIg
ZGQ4N2IwOWU5M2FhIHRvb2xzL2NoZWNrL2NoZWNrX3V1aWRfZGV2ZWwKLS0tIGEvdG9vbHMvY2hl
Y2svY2hlY2tfdXVpZF9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNyArMCwwIEBACi0j
IS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgdXVp
ZC5oIHx8IFwKLWhhc19oZWFkZXIgdXVpZC91dWlkLmggfHwgZmFpbCAibWlzc2luZyB1dWlkIGhl
YWRlcnMgKHBhY2thZ2UgdXVpZC1kZXYpIgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5
ZTkzYWEgdG9vbHMvY2hlY2svY2hlY2tfeDExX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNr
X3gxMV9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOSArMCwwIEBACi0jIS9iaW4vc2gK
LSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgWDExL2tleXN5bWRl
Zi5oIHx8IFwKLWhhc19oZWFkZXIgL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9rZXlzeW1kZWYuaCB8
fCBcCi1oYXNfaGVhZGVyIC91c3IvWDExUjcvaW5jbHVkZS9YMTEva2V5c3ltZGVmLmggfHwgXAot
d2FybmluZyAiY2FuJ3QgZmluZCBYMTEgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIg
ZGQ4N2IwOWU5M2FhIHRvb2xzL2NoZWNrL2NoZWNrX3hnZXR0ZXh0Ci0tLSBhL3Rvb2xzL2NoZWNr
L2NoZWNrX3hnZXR0ZXh0CU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw2ICswLDAgQEAKLSMhL2Jp
bi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX29yX2ZhaWwgeGdldHRl
eHQKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2NoZWNrL2NoZWNr
X3htbDIKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfeG1sMglNb24gRmViIDIwIDE4OjM0OjE0IDIw
MTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg
LTEsMTQgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQot
LiAuL2Z1bmNzLnNoCi0KLWlmIFsgISAiJExJQlhFTkFQSV9CSU5ESU5HUyIgPSAieSIgXQotdGhl
bgotICAgIGVjaG8gLW4gInVudXNlZCwgIgotICAgIGV4aXQgMAotZmkKLQotaGFzX29yX2ZhaWwg
eG1sMi1jb25maWcKLXhtbDJfbGlicz1geG1sMi1jb25maWcgLS1saWJzYCB8fCBmYWlsICJ4bWwy
LWNvbmZpZyAtLWxpYnMgZmFpbGVkIgotdGVzdF9saW5rICR4bWwyX2xpYnMgfHwgZmFpbCAiZGVw
ZW5kZW5jeSBsaWJyYXJpZXMgZm9yIHhtbDIgYXJlIG1pc3NpbmciCmRpZmYgLXIgY2E4MGVjYTlj
ZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9jaGVjay9jaGVja195YWpsX2RldmVsCi0tLSBhL3Rv
b2xzL2NoZWNrL2NoZWNrX3lhamxfZGV2ZWwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAw
CisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDggKzAs
MCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVh
ZGVyIHlhamwveWFqbF9wYXJzZS5oIHx8IGZhaWwgImNhbid0IGZpbmQgeWFqbC95YWpsX3BhcnNl
LmgiCi1oYXNfaGVhZGVyIHlhamwveWFqbF9nZW4uaCB8fCBmYWlsICJjYW4ndCBmaW5kIHlhamwv
eWFqbF9nZW4uaCIKLWhhc19saWIgbGlieWFqbC5zbyB8fCBmYWlsICJjYW4ndCBmaW5kIGxpYnlh
amwuc28iCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9jaGVjay9j
aGVja196bGliX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3psaWJfZGV2ZWwJTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0K
LS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHpsaWIuaCB8fCBmYWlsICJjYW4ndCBmaW5kIHps
aWIgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2No
ZWNrL2NoZWNrX3psaWJfbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3psaWJfbGliCU1vbiBG
ZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQg
Q0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAkT1MgaW4KLUZyZWVCU0R8TmV0
QlNEfE9wZW5CU0QpCi0JZXhpdCAwCi0JOzsKLWVzYWMKLQotaGFzX2xpYiBsaWJ6LnNvIHx8IGZh
aWwgImNhbid0IGZpbmQgemxpYiIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2Fh
IHRvb2xzL2NoZWNrL2NoawotLS0gYS90b29scy9jaGVjay9jaGsJTW9uIEZlYiAyMCAxODozNDox
NCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CkBAIC0xLDYzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1mdW5jX3VzYWdlICgpCi17Ci0gICAgZWNo
byAiVXNhZ2U6IgotICAgIGVjaG8gIgkkMCBbYnVpbGR8aW5zdGFsbHxjbGVhbl0iCi0gICAgZWNo
bwotICAgIGVjaG8gIkNoZWNrIHN1aXRhYmlsaXR5IGZvciBYZW4gYnVpbGQgb3IgaW5zdGFsbC4i
Ci0gICAgZWNobyAiRXhpdCB3aXRoIDAgaWYgT0ssIDEgaWYgbm90LiIKLSAgICBlY2hvCi0gICAg
ZWNobyAiQ2FsbGluZyB3aXRoICdjbGVhbicgcmVtb3ZlcyBnZW5lcmF0ZWQgZmlsZXMuIgotICAg
IGV4aXQgMQotfQotCi1QQVRIPSRQQVRIOi9zYmluOi91c3Ivc2JpbgotT1M9YHVuYW1lIC1zYAot
ZXhwb3J0IFBBVEggT1MKLQotaWYgWyAiJE9TIiA9ICJTdW5PUyIgXTsgdGhlbgotCWV4aXQgMAot
ZmkKLQotY2FzZSAkMSBpbgotICAgIGJ1aWxkKQotICAgICAgICBjaGVjaz0iQ0hFQ0stQlVJTEQi
Ci0gICAgICAgIDs7Ci0gICAgaW5zdGFsbCkKLSAgICAgICAgY2hlY2s9IkNIRUNLLUlOU1RBTEwi
Ci0gICAgICAgIDs7Ci0gICAgY2xlYW4pCi0gICAgICAgIGV4aXQgMAotICAgICAgICA7OwotICAg
ICopCi0gICAgICAgIGZ1bmNfdXNhZ2UKLSAgICAgICAgOzsKLWVzYWMKLQotZmFpbGVkPTAKLQot
ZWNobyAiWGVuICR7Y2hlY2t9ICIgYGRhdGVgCi1mb3IgZiBpbiBjaGVja18qIDsgZG8KLSAgICBj
YXNlICRmIGluCi0gICAgICAgICp+KQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICA7OwotICAgIGVzYWMKLSAgICBpZiAhIFsgLXgg
JGYgXSA7IHRoZW4KLSAgICAgICAgY29udGludWUKLSAgICBmaQotICAgIGlmICEgZ3JlcCAtRnEg
IiRjaGVjayIgJGYgOyB0aGVuCi0gICAgICAgIGNvbnRpbnVlCi0gICAgZmkKLSAgICBlY2hvIC1u
ICJDaGVja2luZyAkZjogIgotICAgIGlmIC4vJGYgMj4mMSA7IHRoZW4KLSAgICAgICAgZWNobyBP
SwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkPTEKLSAgICBmaQotZG9uZQotCi1leGl0ICR7ZmFp
bGVkfQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvY2hlY2svZnVu
Y3Muc2gKLS0tIGEvdG9vbHMvY2hlY2svZnVuY3Muc2gJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEy
ICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0x
LDEwNiArMCwwIEBACi0jIGhhcyBpcyB0aGUgc2FtZSBhcyB3aGljaCwgZXhjZXB0IGl0IGhhbmRs
ZXMgY3Jvc3MgZW52aXJvbm1lbnRzCi1oYXMoKSB7Ci0JaWYgWyAteiAiJENST1NTX0NPTVBJTEUi
IF07IHRoZW4KLQkJY29tbWFuZCB3aGljaCAiJEAiCi0JCXJldHVybiAkPwotCWZpCi0KLQljaGVj
a19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50IHBvbGx1dGlv
biBvZiBjYWxsZXIncyBJRlMKLQkoCi0JSUZTPToKLQlmb3IgcCBpbiAkUEFUSDsgZG8KLQkJaWYg
WyAteCAiJENST1NTX1NZU19ST09ULyRwLyQxIiBdOyB0aGVuCi0JCQllY2hvICIkQ1JPU1NfU1lT
X1JPT1QvJHAvJDEiCi0JCQlyZXR1cm4gMAotCQlmaQotCWRvbmUKLQlyZXR1cm4gMQotCSkKLX0K
LQotaGFzX29yX2ZhaWwoKSB7Ci0JaGFzICIkMSIgPi9kZXYvbnVsbCB8fCBmYWlsICJjYW4ndCBm
aW5kICQxIgotfQotCi1oYXNfaGVhZGVyKCkgewotCWNoZWNrX3N5c19yb290IHx8IHJldHVybiAx
Ci0KLQljYXNlICQxIGluCi0JCS8qKSA7OwotCQkqKQotCQlpZiBbIC1yICIkQ1JPU1NfU1lTX1JP
T1QvdXNyL2luY2x1ZGUvJDEiIF07IHRoZW4KLQkJCXJldHVybiAwCi0JCWZpCi0JCWZvciBwYXRo
IGluICR7Q0hFQ0tfSU5DTFVERVN9OyBkbwotCQkJaWYgWyAtciAiJENST1NTX1NZU19ST09UJHtw
YXRofS8kMSIgXTsgdGhlbgotCQkJCXJldHVybiAwCi0JCQlmaQotCQlkb25lCi0JCTs7Ci0JZXNh
YwotCi0JcmV0dXJuIDEKLX0KLQotaGFzX2xpYigpIHsKLQljaGVja19zeXNfcm9vdCB8fCByZXR1
cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBlbnZp
cm9ubWVudAotCSgKLQlQQVRIPS9zYmluOiRQQVRIICAgICAgICAjIGZvciBsZGNvbmZpZwotCUxJ
QlJBUklFUz0iJENIRUNLX0xJQiAvdXNyL2xpYiIKLQotCSMgVGhpcyByZWxhdGl2ZWx5IGNvbW1v
biBpbiBhIHN5cy1yb290OyBsaWJzIGFyZSBpbnN0YWxsZWQgYnV0Ci0JIyBsZGNvbmZpZyBoYXNu
J3QgcnVuIHRoZXJlLCBzbyBsZGNvbmZpZyAtcCB3b24ndCB3b3JrLgotCWlmIFsgIiRPUyIgPSBM
aW51eCAtYSAhIC1mICIkQ1JPU1NfU1lTX1JPT1QvZXRjL2xkLnNvLmNhY2hlIiBdOyB0aGVuCi0J
ICAgIGVjaG8gIlBsZWFzZSBydW4gbGRjb25maWcgLXIgXCIkQ1JPU1NfU1lTX1JPT1RcIiB0byBn
ZW5lcmF0ZSBsZC5zby5jYWNoZSIKLQkgICAgIyBmYWxsIHRocm91Z2g7IGxkY29uZmlnIHRlc3Qg
YmVsb3cgc2hvdWxkIGZhaWwKLQlmaQotCWlmIFsgIiR7T1N9IiA9ICJMaW51eCIgXTsgdGhlbgot
CQlsZGNvbmZpZyAtcCAke0NST1NTX1NZU19ST09UKy1yICIkQ1JPU1NfU1lTX1JPT1QifSB8IGdy
ZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlpZiBbICIke09TfSIgPSAiTmV0QlNEIiBd
OyB0aGVuCi0JCWxzIC0xICR7TElCUkFSSUVTfSB8IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/
Ci0JZmkKLQlyZXR1cm4gMQotCSkKLX0KLQotdGVzdF9saW5rKCkgewotCSMgc3Vic2hlbGwgdG8g
dHJhcCByZW1vdmFsIG9mIHRtcGZpbGUKLQkoCi0JdW5zZXQgdG1wZmlsZQotCXRyYXAgJ3JtIC1m
ICIkdG1wZmlsZSI7IGV4aXQnIDAgMSAyIDE1Ci0JdG1wZmlsZT1gbWt0ZW1wYCB8fCByZXR1cm4g
MQotCWxkICIkQCIgLW8gIiR0bXBmaWxlIiA+L2Rldi9udWxsIDI+JjEKLQlyZXR1cm4gJD8KLQkp
Ci19Ci0KLSMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGNvbW1vbmx5IGFib3ZlCi1jaGVja19zeXNf
cm9vdCgpIHsKLQlbIC16ICIkQ1JPU1NfQ09NUElMRSIgXSAmJiByZXR1cm4gMAotCWlmIFsgLXog
IiRDUk9TU19TWVNfUk9PVCIgXTsgdGhlbgotCQllY2hvICJwbGVhc2Ugc2V0IENST1NTX1NZU19S
T09UIGluIHRoZSBlbnZpcm9ubWVudCIKLQkJcmV0dXJuIDEKLQlmaQotCWlmIFsgISAtZCAiJENS
T1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8gIm5vIHN5cy1yb290IGZvdW5kIGF0ICRDUk9T
U19TWVNfUk9PVCIKLQkJcmV0dXJuIDEKLQlmaQotfQotCi13YXJuaW5nKCkgewotCWVjaG8KLQll
Y2hvICIgKioqIGBiYXNlbmFtZSAiJDAiYCBGQUlMRUQkeyorOiAkKn0iCi19Ci0KLWZhaWwoKSB7
Ci0JZWNobwotCWVjaG8gIiAqKiogYGJhc2VuYW1lICIkMCJgIEZBSUxFRCR7Kis6ICQqfSIKLQll
eGl0IDEKLX0KZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2NvbmZp
Zy5oLmluCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3Rvb2xzL2NvbmZpZy5oLmluCU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAxMiArMDEwMApAQCAtMCww
ICsxLDE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyCisgKgorICogVGhpcyBwcm9ncmFt
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK
KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZAorICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
dmVyc2lvbiAyLjEgb25seS4gd2l0aCB0aGUgc3BlY2lhbAorICogZXhjZXB0aW9uIG9uIGxpbmtp
bmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHlhamwveWFqbF92
ZXJzaW9uLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfWUFKTF9ZQUpMX1ZFUlNJT05f
SApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvY29uZmlndXJlLmFj
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xz
L2NvbmZpZ3VyZS5hYwlNb24gRmViIDIwIDIzOjE4OjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSwx
OTMgQEAKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0q
LSBBdXRvY29uZiAtKi0KKyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9k
dWNlIGEgY29uZmlndXJlIHNjcmlwdC4KKworQUNfUFJFUkVRKFsyLjY3XSkKK0FDX0lOSVQoW1hl
biBIeXBlcnZpc29yXSwgbTRfZXN5c2NtZChbLi4vdmVyc2lvbi5zaCAuLi94ZW4vTWFrZWZpbGVd
KSwKKyAgICBbeGVuLWRldmVsQGxpc3RzLnhlbnNvdXJjZS5jb21dKQorQUNfQ09ORklHX1NSQ0RJ
UihbbGlieGwvbGlieGwuY10pCitBQ19DT05GSUdfRklMRVMoWy4uL2NvbmZpZy9Ub29scy5ta10p
CitBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorQUNfUFJFRklYX0RFRkFVTFQoWy91c3Jd
KQorQUNfQ09ORklHX0FVWF9ESVIoWy5dKQorCisjIENoZWNrIGlmIENGTEFHUywgTERGTEFHUywg
TElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIHNldCBhbmQgcHJpbnQgYSB3YXJuaW5nCisKK0FTX0lG
KFt0ZXN0IC1uICIkQ0MkQ0ZMQUdTJExERkxBR1MkTElCUyRDUFBGTEFHUyRDUFAiXSwgWworICAg
IEFDX01TR19XQVJOKAorW1NldHRpbmcgQ0MsIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxB
R1Mgb3IgQ1BQIGlzIG5vdCBcCityZWNvbW1lbmRlZCwgdXNlIFBSRVBFTkRfSU5DTFVERVMsIFBS
RVBFTkRfTElCLCBcCitBUFBFTkRfSU5DTFVERVMgYW5kIEFQUEVORF9MSUIgaW5zdGVhZCB3aGVu
IHBvc3NpYmxlLl0pCitdKQorCitBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKK0FDX0NBTk9OSUNB
TF9IT1NUCisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKK200X2luY2x1ZGUoW200L2VuYWJsZV9mZWF0
dXJlLm00XSkKK200X2luY2x1ZGUoW200L2Rpc2FibGVfZmVhdHVyZS5tNF0pCittNF9pbmNsdWRl
KFttNC9wYXRoX29yX2ZhaWwubTRdKQorbTRfaW5jbHVkZShbbTQvcHl0aG9uX3htbC5tNF0pCitt
NF9pbmNsdWRlKFttNC9weXRob25fdmVyc2lvbi5tNF0pCittNF9pbmNsdWRlKFttNC9weXRob25f
ZGV2ZWwubTRdKQorbTRfaW5jbHVkZShbbTQvdWRldi5tNF0pCittNF9pbmNsdWRlKFttNC9vY2Ft
bC5tNF0pCittNF9pbmNsdWRlKFttNC9kZWZhdWx0X2xpYi5tNF0pCittNF9pbmNsdWRlKFttNC9z
ZXRfY2ZsYWdzX2xkZmxhZ3MubTRdKQorbTRfaW5jbHVkZShbbTQvdXVpZC5tNF0pCittNF9pbmNs
dWRlKFttNC9wa2cubTRdKQorCisjIEVuYWJsZS9kaXNhYmxlIG9wdGlvbnMKK0FYX0FSR19FTkFC
TEVfQU5EX0VYUE9SVChbeHNtXSwKKyAgICBbRW5hYmxlIFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5
IGRlZmF1bHQsIEZsYXNrKV0pCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQoW2dpdGh0dHBdLCBb
RG93bmxvYWQgR0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUF0pCitBWF9BUkdfRElTQUJMRV9BTkRf
RVhQT1JUKFttb25pdG9yc10sCisgICAgW0Rpc2FibGUgeGVuc3RhdCBhbmQgeGVudG9wIG1vbml0
b3JpbmcgdG9vbHNdKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFt2dHBtXSwgW0VuYWJsZSBW
aXJ0dWFsIFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9S
VChbeGFwaV0sIFtFbmFibGUgWGVuIEFQSSBCaW5kaW5nc10pCitBWF9BUkdfRElTQUJMRV9BTkRf
RVhQT1JUKFtweXRob250b29sc10sIFtEaXNhYmxlIFB5dGhvbiB0b29sc10pCitBWF9BUkdfRElT
QUJMRV9BTkRfRVhQT1JUKFtvY2FtbHRvb2xzXSwgW0Rpc2FibGUgT2NhbWwgdG9vbHNdKQorQVhf
QVJHX0VOQUJMRV9BTkRfRVhQT1JUKFttaW5pdGVybV0sIFtFbmFibGUgbWluaXRlcm1dKQorQVhf
QVJHX0VOQUJMRV9BTkRfRVhQT1JUKFtsb21vdW50XSwgW0VuYWJsZSBsb21vdW50XSkKK0FYX0FS
R19ESVNBQkxFX0FORF9FWFBPUlQoW2RlYnVnXSwgW0Rpc2FibGUgZGVidWcgYnVpbGQgb2YgWGVu
IGFuZCB0b29sc10pCisKK0FDX0FSR19WQVIoW1BSRVBFTkRfSU5DTFVERVNdLAorICAgIFtMaXN0
IG9mIGluY2x1ZGUgZm9sZGVycyB0byBwcmVwZW5kIHRvIENGTEFHUyAod2l0aG91dCAtSSldKQor
QUNfQVJHX1ZBUihbUFJFUEVORF9MSUJdLAorICAgIFtMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0
byBwcmVwZW5kIHRvIExERkxBR1MgKHdpdGhvdXQgLUwpXSkKK0FDX0FSR19WQVIoW0FQUEVORF9J
TkNMVURFU10sCisgICAgW0xpc3Qgb2YgaW5jbHVkZSBmb2xkZXJzIHRvIGFwcGVuZCB0byBDRkxB
R1MgKHdpdGhvdXQgLUkpXSkKK0FDX0FSR19WQVIoW0FQUEVORF9MSUJdLAorICAgIFtMaXN0IG9m
IGxpYnJhcnkgZm9sZGVycyB0byBhcHBlbmQgdG8gTERGTEFHUyAod2l0aG91dCAtTCldKQorCitB
WF9TRVRfRkxBR1MKKworQUNfQVJHX1ZBUihbUFlUSE9OXSwgW1BhdGggdG8gdGhlIFB5dGhvbiBw
YXJzZXJdKQorQUNfQVJHX1ZBUihbUEVSTF0sIFtQYXRoIHRvIFBlcmwgcGFyc2VyXSkKK0FDX0FS
R19WQVIoW0JSQ1RMXSwgW1BhdGggdG8gYnJjdGwgdG9vbF0pCitBQ19BUkdfVkFSKFtJUF0sIFtQ
YXRoIHRvIGlwIHRvb2xdKQorQUNfQVJHX1ZBUihbQklTT05dLCBbUGF0aCB0byBCaXNvbiBwYXJz
ZXIgZ2VuZXJhdG9yXSkKK0FDX0FSR19WQVIoW0ZMRVhdLCBbUGF0aCB0byBGbGV4IGxleGljYWwg
YW5hbHlzZXIgZ2VuZXJhdG9yXSkKK0FDX0FSR19WQVIoW0NVUkxdLCBbUGF0aCB0byBjdXJsLWNv
bmZpZyB0b29sXSkKK0FDX0FSR19WQVIoW1hNTF0sIFtQYXRoIHRvIHhtbDItY29uZmlnIHRvb2xd
KQorQUNfQVJHX1ZBUihbQkFTSF0sIFtQYXRoIHRvIGJhc2ggc2hlbGxdKQorQUNfQVJHX1ZBUihb
WEdFVFRFWFRdLCBbUGF0aCB0byB4Z2V0dHRleHQgdG9vbF0pCisKKyMgQ2hlY2tzIGZvciBwcm9n
cmFtcy4KK0FDX1BST0dfU0VECitBQ19QUk9HX0NDCitBQ19QUk9HX0xOX1MKK0FDX1BST0dfTUFL
RV9TRVQKK0FDX1BST0dfSU5TVEFMTAorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1BFUkxdLCBbcGVy
bF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQlJDVExdLCBbYnJjdGxdKQorQVhfUEFUSF9QUk9H
X09SX0ZBSUwoW0lQXSwgW2lwXSkKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtCSVNPTl0sIFtiaXNv
bl0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbRkxFWF0sIFtmbGV4XSkKK0FTX0lGKFt0ZXN0ICJ4
JHhhcGkiID0gInh5Il0sIFsKKyAgICBBWF9QQVRIX1BST0dfT1JfRkFJTChbQ1VSTF0sIFtjdXJs
LWNvbmZpZ10pCisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1hNTF0sIFt4bWwyLWNvbmZpZ10p
CitdKQorQVNfSUYoW3Rlc3QgIngkb2NhbWx0b29scyIgPSAieHkiXSwgWworICAgIEFDX1BST0df
T0NBTUwKKyAgICBBU19JRihbdGVzdCAieCRPQ0FNTEMiID0gInhubyJdLCBbCisgICAgICAgIEFT
X0lGKFt0ZXN0ICJ4JGVuYWJsZV9vY2FtbHRvb2xzIiA9ICJ4eWVzIl0sIFsKKyAgICAgICAgICAg
IEFDX01TR19FUlJPUihbT2NhbWwgdG9vbHMgZW5hYmxlZCwgYnV0IHVuYWJsZSB0byBmaW5kIE9j
YW1sXSldKQorICAgICAgICBvY2FtbHRvb2xzPSJuIgorICAgIF0pCitdKQorQVhfUEFUSF9QUk9H
X09SX0ZBSUwoW0JBU0hdLCBbYmFzaF0pCitBU19JRihbdGVzdCAieCRweXRob250b29scyIgPSAi
eHkiXSwgWworICAgIEFTX0lGKFtlY2hvICIkUFlUSE9OIiB8IGdyZXAgLXEgIl4vIl0sIFsKKyAg
ICAgICAgUFlUSE9OUEFUSD0kUFlUSE9OCisgICAgICAgIFBZVEhPTj1gYmFzZW5hbWUgJFBZVEhP
TlBBVEhgCisgICAgXSxbdGVzdCAteiAiJFBZVEhPTiJdLCBbUFlUSE9OPSJweXRob24iXSwKKyAg
ICBbQUNfTVNHX0VSUk9SKFtQWVRIT04gc3BlY2lmaWVkLCBidXQgaXMgbm90IGFuIGFic29sdXRl
IHBhdGhdKV0pCisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1BZVEhPTlBBVEhdLCBbJFBZVEhP
Tl0pCisgICAgQVhfQ0hFQ0tfUFlUSE9OX1ZFUlNJT04oWzJdLCBbM10pCisgICAgQVhfQ0hFQ0tf
UFlUSE9OX1hNTCgpCisgICAgQVhfQ0hFQ0tfUFlUSE9OX0RFVkVMKCkKK10pCitBWF9QQVRIX1BS
T0dfT1JfRkFJTChbWEdFVFRFWFRdLCBbeGdldHRleHRdKQorQVhfQ0hFQ0tfVURFVihbNTldKQor
QVhfQ0hFQ0tfVVVJRAorUEtHX0NIRUNLX01PRFVMRVMoZ2xpYiwgZ2xpYi0yLjApCisKKyMgQ2hl
Y2sgbGlicmFyeSBwYXRoCitBWF9ERUZBVUxUX0xJQgorCisjIENoZWNrcyBmb3IgbGlicmFyaWVz
LgorQUNfQ0hFQ0tfTElCKFthaW9dLCBbaW9fc2V0dXBdLCBbc3lzdGVtX2Fpbz0ieSJdLCBbc3lz
dGVtX2Fpbz0ibiJdKQorQUNfU1VCU1Qoc3lzdGVtX2FpbykKK0FDX0NIRUNLX0xJQihbY3J5cHRv
XSwgW01ENV0sIFtdLCBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJjcnlwdG9dKV0p
CitBQ19DSEVDS19MSUIoW2V4dDJmc10sIFtleHQyZnNfb3BlbjJdLCBbbGliZXh0MmZzPSJ5Il0s
IFtsaWJleHQyZnM9Im4iXSkKK0FDX1NVQlNUKGxpYmV4dDJmcykKK0FDX0NIRUNLX0xJQihbZ2Ny
eXB0XSwgW2djcnlfbWRfaGFzaF9idWZmZXJdLCBbbGliZ2NyeXB0PSJ5Il0sIFtsaWJnY3J5cHQ9
Im4iXSkKK0FDX1NVQlNUKGxpYmdjcnlwdCkKK0FDX0NIRUNLX0xJQihbcHRocmVhZF0sIFtwdGhy
ZWFkX2NyZWF0ZV0sIFtdICwKKyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJw
dGhyZWFkXSldKQorQUNfQ0hFQ0tfTElCKFtydF0sIFtjbG9ja19nZXR0aW1lXSkKK0FDX0NIRUNL
X0xJQihbdXVpZF0sIFt1dWlkX2NsZWFyXSwgW10sCisgICAgW0FDX01TR19FUlJPUihbQ291bGQg
bm90IGZpbmQgbGlidXVpZF0pXSkKK0FDX0NIRUNLX0xJQihbeWFqbF0sIFt5YWpsX2FsbG9jXSwg
W10sCisgICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgeWFqbF0pXSkKK0FDX0NIRUNL
X0xJQihbel0sIFtkZWZsYXRlQ29weV0sIFtdLCBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmlu
ZCB6bGliXSldKQorQUNfQ0hFQ0tfTElCKFtpY29udl0sIFtsaWJpY29udl9vcGVuXSwgW2xpYmlj
b252PSJ5Il0sIFtsaWJpY29udj0ibiJdKQorQUNfU1VCU1QobGliaWNvbnYpCisKKyMgQXV0b3Nj
YW4gc3R1ZmYgKGV4Y2VwdCBmb3IgeWFqbC95YWpsX3ZlcnNpb24uaCBjaGVjaykKKyMgQ2hlY2tz
IGZvciBoZWFkZXIgZmlsZXMuCitBQ19GVU5DX0FMTE9DQQorQUNfQ0hFQ0tfSEVBREVSUyhbIFwK
KyAgICAgICAgICAgICAgICBhcnBhL2luZXQuaCBmY250bC5oIGludHR5cGVzLmggbGliaW50bC5o
IGxpbWl0cy5oIG1hbGxvYy5oIFwKKyAgICAgICAgICAgICAgICBuZXRkYi5oIG5ldGluZXQvaW4u
aCBzdGRkZWYuaCBzdGRpbnQuaCBzdGRsaWIuaCBzdHJpbmcuaCBcCisgICAgICAgICAgICAgICAg
c3RyaW5ncy5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggc3lzL21vdW50Lmggc3lzL3BhcmFtLmgg
XAorICAgICAgICAgICAgICAgIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIHN5cy90aW1lLmgg
c3lzbG9nLmggdGVybWlvcy5oIFwKKyAgICAgICAgICAgICAgICB1bmlzdGQuaCB5YWpsL3lhamxf
dmVyc2lvbi5oIFwKKyAgICAgICAgICAgICAgICBdKQorCisjIENoZWNrcyBmb3IgdHlwZWRlZnMs
IHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCitBQ19IRUFERVJfU1RE
Qk9PTAorQUNfVFlQRV9VSURfVAorQUNfQ19JTkxJTkUKK0FDX1RZUEVfSU5UMTZfVAorQUNfVFlQ
RV9JTlQzMl9UCitBQ19UWVBFX0lOVDY0X1QKK0FDX1RZUEVfSU5UOF9UCitBQ19UWVBFX01PREVf
VAorQUNfVFlQRV9PRkZfVAorQUNfVFlQRV9QSURfVAorQUNfQ19SRVNUUklDVAorQUNfVFlQRV9T
SVpFX1QKK0FDX1RZUEVfU1NJWkVfVAorQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3Rf
Ymxrc2l6ZV0pCitBQ19TVFJVQ1RfU1RfQkxPQ0tTCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qg
c3RhdC5zdF9yZGV2XSkKK0FDX1RZUEVfVUlOVDE2X1QKK0FDX1RZUEVfVUlOVDMyX1QKK0FDX1RZ
UEVfVUlOVDY0X1QKK0FDX1RZUEVfVUlOVDhfVAorQUNfQ0hFQ0tfVFlQRVMoW3B0cmRpZmZfdF0p
CisKKyMgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4KK0FDX0ZVTkNfRVJST1JfQVRfTElO
RQorQUNfRlVOQ19GT1JLCitBQ19GVU5DX0ZTRUVLTworQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NM
QVNIRURfU1lNTElOSworQUNfSEVBREVSX01BSk9SCitBQ19GVU5DX01BTExPQworQUNfRlVOQ19N
S1RJTUUKK0FDX0ZVTkNfTU1BUAorQUNfRlVOQ19SRUFMTE9DCitBQ19GVU5DX1NUUk5MRU4KK0FD
X0ZVTkNfU1RSVE9ECitBQ19DSEVDS19GVU5DUyhbIFwKKyAgICAgICAgICAgICAgICBhbGFybSBh
dGV4aXQgYnplcm8gY2xvY2tfZ2V0dGltZSBkdXAyIGZkYXRhc3luYyBmdHJ1bmNhdGUgXAorICAg
ICAgICAgICAgICAgIGdldGN3ZCBnZXRob3N0YnluYW1lIGdldGhvc3RuYW1lIGdldHBhZ2VzaXpl
IGdldHRpbWVvZmRheSBcCisgICAgICAgICAgICAgICAgaW5ldF9udG9hIGlzYXNjaWkgbG9jYWx0
aW1lX3IgbWVtY2hyIG1lbW1vdmUgbWVtc2V0IG1rZGlyIFwKKyAgICAgICAgICAgICAgICBta2Zp
Zm8gbXVubWFwIHBhdGhjb25mIHJlYWxwYXRoIHJlZ2NvbXAgcm1kaXIgc2VsZWN0IHNldGVudiBc
CisgICAgICAgICAgICAgICAgc29ja2V0IHN0cmNhc2VjbXAgc3RyY2hyIHN0cmNzcG4gc3RyZHVw
IHN0cmVycm9yIHN0cm5kdXAgXAorICAgICAgICAgICAgICAgIHN0cnBicmsgc3RycmNociBzdHJz
cG4gc3Ryc3RyIHN0cnRvbCBzdHJ0b3VsIHN0cnRvdWxsIHR6c2V0IFwKKyAgICAgICAgICAgICAg
ICB1bmFtZSBcCisgICAgICAgICAgICAgICAgXSkKKworQUNfT1VUUFVUKCkKZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01ha2VmaWxl
Ci0tLSBhL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MzQ6
MTQgMjAxMiArMDAwMAorKysgYi90b29scy9kZWJ1Z2dlci9nZGJzeC94Zy9NYWtlZmlsZQlNb24g
RmViIDIwIDIzOjE4OjAxIDIwMTIgKzAxMDAKQEAgLTIxLDcgKzIxLDYgQEAgeGdfYWxsLmE6ICQo
WEdfT0JKUykgTWFrZWZpbGUgJChYR19IRFJTKQogIwkkKENDKSAtbTMyIC1jIC1vICRAICReCiAK
IHhlbi1oZWFkZXJzOgotCSQoTUFLRSkgLUMgLi4vLi4vLi4vY2hlY2sgCiAJJChNQUtFKSAtQyAu
Li8uLi8uLi9pbmNsdWRlCiAKICMgeGdfbWFpbi5vOiB4Z19tYWluLmMgTWFrZWZpbGUgJChYR19I
RFJTKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvaW5zdGFsbC5z
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29s
cy9pbnN0YWxsLnNoCU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDEg
QEAKKy4uL2luc3RhbGwuc2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLXIgY2E4
MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9saWJmc2ltYWdlL01ha2VmaWxlCi0tLSBh
L3Rvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAw
CisrKyBiL3Rvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEy
ICswMTAwCkBAIC0zLDcgKzMsMTEgQEAgaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5t
awogCiBTVUJESVJTLXkgPSBjb21tb24gdWZzIHJlaXNlcmZzIGlzbzk2NjAgZmF0IHpmcwogU1VC
RElSUy0kKENPTkZJR19YODYpICs9IHhmcwotU1VCRElSUy15ICs9ICQoc2hlbGwgZW52IENDPSIk
KENDKSIgLi9jaGVjay1saWJleHQyZnMpCitpZmVxICgkKENPTkZJR19FWFQyRlMpLCB5KQorICAg
IFNVQkRJUlMteSArPSBleHQyZnMtbGliCitlbHNlCisgICAgU1VCRElSUy15ICs9IGV4dDJmcwor
ZW5kaWYKIAogLlBIT05ZOiBhbGwgY2xlYW4gaW5zdGFsbAogYWxsIGNsZWFuIGluc3RhbGw6ICU6
IHN1YmRpcnMtJQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvbGli
ZnNpbWFnZS9jaGVjay1saWJleHQyZnMKLS0tIGEvdG9vbHMvbGliZnNpbWFnZS9jaGVjay1saWJl
eHQyZnMJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIxICswLDAgQEAKLSMhL2Jpbi9zaAotCi1j
YXQgPmV4dDItdGVzdC5jIDw8RU9GCi0jaW5jbHVkZSA8ZXh0MmZzL2V4dDJmcy5oPgotCi1pbnQg
bWFpbigpCi17Ci0JZXh0MmZzX29wZW4yOwotfQotRU9GCi0KLSR7Q0MtZ2NjfSAtbyBleHQyLXRl
c3QgZXh0Mi10ZXN0LmMgLWxleHQyZnMgPi9kZXYvbnVsbCAyPiYxCi1pZiBbICQ/ID0gMCBdOyB0
aGVuCi0JZWNobyBleHQyZnMtbGliCi1lbHNlCi0JZWNobyBleHQyZnMKLWZpCi0KLXJtIC1mIGV4
dDItdGVzdCBleHQyLXRlc3QuYwotCi1leGl0IDAKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4
N2IwOWU5M2FhIHRvb2xzL2xpYnhlbi9NYWtlZmlsZQotLS0gYS90b29scy9saWJ4ZW4vTWFrZWZp
bGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYnhlbi9NYWtl
ZmlsZQlNb24gRmViIDIwIDIzOjE4OjAxIDIwMTIgKzAxMDAKQEAgLTIyLDEyICsyMiwxMiBAQCBN
QUpPUiA9IDEuMAogTUlOT1IgPSAwCiAKIENGTEFHUyArPSAtSWluY2x1ZGUgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgJChzaGVsbCB4bWwyLWNvbmZpZyAtLWNmbGFncykgXAotICAg
ICAgICAgICQoc2hlbGwgY3VybC1jb25maWcgLS1jZmxhZ3MpIFwKKyAgICAgICAgICAkKHNoZWxs
ICQoWE1MMl9DT05GSUcpIC0tY2ZsYWdzKSBcCisgICAgICAgICAgJChzaGVsbCAkKENVUkxfQ09O
RklHKSAtLWNmbGFncykgXAogICAgICAgICAgIC1mUElDCiAKLUxERkxBR1MgKz0gJChzaGVsbCB4
bWwyLWNvbmZpZyAtLWxpYnMpIFwKLSAgICAgICAgICAgJChzaGVsbCBjdXJsLWNvbmZpZyAtLWxp
YnMpCitMREZMQUdTICs9ICQoc2hlbGwgJChYTUwyX0NPTkZJRykgLS1saWJzKSBcCisgICAgICAg
ICAgICQoc2hlbGwgJChDVVJMX0NPTkZJRykgLS1saWJzKQogCiBMSUJYRU5BUElfSERSUyA9ICQo
d2lsZGNhcmQgaW5jbHVkZS94ZW4vYXBpLyouaCkgaW5jbHVkZS94ZW4vYXBpL3hlbl9hbGwuaAog
TElCWEVOQVBJX09CSlMgPSAkKHBhdHN1YnN0ICUuYywgJS5vLCAkKHdpbGRjYXJkIHNyYy8qLmMp
KQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvbGlieGwvTWFrZWZp
bGUKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICsw
MDAwCisrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAxMiAr
MDEwMApAQCAtMTksMTAgKzE5LDYgQEAgaWZlcSAoJChDT05GSUdfTGludXgpLHkpCiBMSUJVVUlE
X0xJQlMgKz0gLWx1dWlkCiBlbmRpZgogCi1pZmVxICgkKENPTkZJR19ZQUpMX1ZFUlNJT04pLHkp
Ci1DRkxBR1MgKz0gLURIQVZFX1lBSkxfVkVSU0lPTgotZW5kaWYKLQogTElCWExfTElCUyA9CiBM
SUJYTF9MSUJTID0gJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQo
TERMSUJTX2xpYnhlbnN0b3JlKSAkKExETElCU19saWJibGt0YXBjdGwpICQoVVRJTF9MSUJTKSAk
KExJQlVVSURfTElCUykKIApAQCAtNTYsNyArNTIsNyBAQCBMSUJYTF9PQkpTID0gZmxleGFycmF5
Lm8gbGlieGwubyBsaWJ4bF9jCiAJCQlsaWJ4bF9xbXAubyBsaWJ4bF9ldmVudC5vICQoTElCWExf
T0JKUy15KQogTElCWExfT0JKUyArPSBfbGlieGxfdHlwZXMubyBsaWJ4bF9mbGFzay5vIF9saWJ4
bF90eXBlc19pbnRlcm5hbC5vCiAKLSQoTElCWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19s
aWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkgJChDRkxBR1NfbGlieGVuc3RvcmUpICQo
Q0ZMQUdTX2xpYmJsa3RhcGN0bCkKKyQoTElCWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19s
aWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkgJChDRkxBR1NfbGlieGVuc3RvcmUpICQo
Q0ZMQUdTX2xpYmJsa3RhcGN0bCkgLWluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvY29uZmlnLmgK
IAogQVVUT0lOQ1M9IGxpYnhsdV9jZmdfeS5oIGxpYnhsdV9jZmdfbC5oIF9saWJ4bF9saXN0LmgK
IEFVVE9TUkNTPSBsaWJ4bHVfY2ZnX3kuYyBsaWJ4bHVfY2ZnX2wuYwpAQCAtNjksNiArNjUsNyBA
QCBDTElFTlRTID0geGwgdGVzdGlkbAogWExfT0JKUyA9IHhsLm8geGxfY21kaW1wbC5vIHhsX2Nt
ZHRhYmxlLm8geGxfc3hwLm8KICQoWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5j
dHJsKSAjIEZvciB4ZW50b29sbG9nLmgKICQoWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFHU19s
aWJ4ZW5saWdodCkKKyQoWExfT0JKUyk6IENGTEFHUyArPSAtaW5jbHVkZSAkKFhFTl9ST09UKS90
b29scy9jb25maWcuaCAjIGxpYnhsX2pzb24uaCBuZWVkcyBpdC4KIAogdGVzdGlkbC5vOiBDRkxB
R1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVubGlnaHQpCiB0ZXN0aWRs
LmM6IGxpYnhsX3R5cGVzLmlkbCBnZW50ZXN0LnB5IGxpYnhsLmggJChBVVRPSU5DUykKZGlmZiAt
ciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL2xpYnhsL2xpYnhsX2pzb24uaAot
LS0gYS90b29scy9saWJ4bC9saWJ4bF9qc29uLmgJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICsw
MDAwCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2pzb24uaAlNb24gRmViIDIwIDIzOjE4OjAxIDIw
MTIgKzAxMDAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlIDx5YWpsL3lhamxfZ2VuLmg+CiAj
aW5jbHVkZSA8eWFqbC95YWpsX3BhcnNlLmg+CiAKLSNpZmRlZiBIQVZFX1lBSkxfVkVSU0lPTgor
I2lmZGVmIEhBVkVfWUFKTF9ZQUpMX1ZFUlNJT05fSAogIyAgaW5jbHVkZSA8eWFqbC95YWpsX3Zl
cnNpb24uaD4KICNlbmRpZgogCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0
b29scy9tNC9kZWZhdWx0X2xpYi5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi90b29scy9tNC9kZWZhdWx0X2xpYi5tNAlNb24gRmViIDIwIDIzOjE4
OjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSw4IEBACitBQ19ERUZVTihbQVhfREVGQVVMVF9MSUJd
LAorW0FTX0lGKFt0ZXN0IC1kICIkcHJlZml4L2xpYjY0Il0sIFsKKyAgICBMSUJfUEFUSD0ibGli
NjQiCitdLFsKKyAgICBMSUJfUEFUSD0ibGliIgorXSkKK0FDX1NVQlNUKExJQl9QQVRIKV0pCisK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL200L2Rpc2FibGVfZmVh
dHVyZS5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysg
Yi90b29scy9tNC9kaXNhYmxlX2ZlYXR1cmUubTQJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICsw
MTAwCkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVOKFtBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JU
XSwKK1tBQ19BUkdfRU5BQkxFKFskMV0sCisgICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS0k
MV0sIFskMl0pKQorCitBU19JRihbdGVzdCAieCRlbmFibGVfJDEiID0gInhubyJdLCBbCisgICAg
YXhfY3ZfJDE9Im4iCitdLCBbdGVzdCAieCRlbmFibGVfJDEiID0gInh5ZXMiXSwgWworICAgIGF4
X2N2XyQxPSJ5IgorXSwgW3Rlc3QgLXogJGF4X2N2XyQxXSwgWworICAgIGF4X2N2XyQxPSJ5Igor
XSkKKyQxPSRheF9jdl8kMQorQUNfU1VCU1QoJDEpXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIg
ZGQ4N2IwOWU5M2FhIHRvb2xzL200L2VuYWJsZV9mZWF0dXJlLm00Ci0tLSAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L2VuYWJsZV9mZWF0dXJl
Lm00CU1vbiBGZWIgMjAgMjM6MTg6MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDEzIEBACitBQ19E
RUZVTihbQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUXSwKK1tBQ19BUkdfRU5BQkxFKFskMV0sCisg
ICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLSQxXSwgWyQyXSkpCisKK0FTX0lGKFt0ZXN0ICJ4
JGVuYWJsZV8kMSIgPSAieHllcyJdLCBbCisgICAgYXhfY3ZfJDE9InkiCitdLCBbdGVzdCAieCRl
bmFibGVfJDEiID0gInhubyJdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdLCBbdGVzdCAteiAkYXhf
Y3ZfJDFdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdKQorJDE9JGF4X2N2XyQxCitBQ19TVUJTVCgk
MSldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvbTQvb2NhbWwu
bTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9v
bHMvbTQvb2NhbWwubTQJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEs
MjQxIEBACitkbmwgYXV0b2NvbmYgbWFjcm9zIGZvciBPQ2FtbAorZG5sIGZyb20gaHR0cDovL2Zv
cmdlLm9jYW1sY29yZS5vcmcvCitkbmwKK2RubCBDb3B5cmlnaHQgwqkgMjAwOSAgICAgIFJpY2hh
cmQgVy5NLiBKb25lcworZG5sIENvcHlyaWdodCDCqSAyMDA5ICAgICAgU3RlZmFubyBaYWNjaGly
b2xpCitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAwNSBPbGl2aWVyIEFuZHJpZXUKK2RubCBDb3B5
cmlnaHQgwqkgMjAwMC0yMDA1IEplYW4tQ2hyaXN0b3BoZSBGaWxsacOidHJlCitkbmwgQ29weXJp
Z2h0IMKpIDIwMDAtMjAwNSBHZW9yZ2VzIE1hcmlhbm8KK2RubAorZG5sIEZvciBkb2N1bWVudGF0
aW9uLCBwbGVhc2UgcmVhZCB0aGUgb2NhbWwubTQgbWFuIHBhZ2UuCisKK0FDX0RFRlVOKFtBQ19Q
Uk9HX09DQU1MXSwKK1tkbmwKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxjCisgIEFDX0NIRUNLX1RP
T0woW09DQU1MQ10sW29jYW1sY10sW25vXSkKKworICBpZiB0ZXN0ICIkT0NBTUxDIiAhPSAibm8i
OyB0aGVuCisgICAgIE9DQU1MVkVSU0lPTj1gJE9DQU1MQyAtdiB8IHNlZCAtbiAtZSAnc3wuKnZl
cnNpb24qICpcKC4qXCkkfFwxfHAnYAorICAgICBBQ19NU0dfUkVTVUxUKFtPQ2FtbCB2ZXJzaW9u
IGlzICRPQ0FNTFZFUlNJT05dKQorICAgICAjIElmIE9DQU1MTElCIGlzIHNldCwgdXNlIGl0Cisg
ICAgIGlmIHRlc3QgIiRPQ0FNTExJQiIgPSAiIjsgdGhlbgorICAgICAgICBPQ0FNTExJQj1gJE9D
QU1MQyAtd2hlcmUgMj4vZGV2L251bGwgfHwgJE9DQU1MQyAtdnx0YWlsIC0xfGN1dCAtZCAnICcg
LWYgNGAKKyAgICAgZWxzZQorICAgICAgICBBQ19NU0dfUkVTVUxUKFtPQ0FNTExJQiBwcmV2aW91
c2x5IHNldDsgcHJlc2VydmluZyBpdC5dKQorICAgICBmaQorICAgICBBQ19NU0dfUkVTVUxUKFtP
Q2FtbCBsaWJyYXJ5IHBhdGggaXMgJE9DQU1MTElCXSkKKworICAgICBBQ19TVUJTVChbT0NBTUxW
RVJTSU9OXSkKKyAgICAgQUNfU1VCU1QoW09DQU1MTElCXSkKKworICAgICAjIGNoZWNraW5nIGZv
ciBvY2FtbG9wdAorICAgICBBQ19DSEVDS19UT09MKFtPQ0FNTE9QVF0sW29jYW1sb3B0XSxbbm9d
KQorICAgICBPQ0FNTEJFU1Q9Ynl0ZQorICAgICBpZiB0ZXN0ICIkT0NBTUxPUFQiID0gIm5vIjsg
dGhlbgorCUFDX01TR19XQVJOKFtDYW5ub3QgZmluZCBvY2FtbG9wdDsgYnl0ZWNvZGUgY29tcGls
YXRpb24gb25seS5dKQorICAgICBlbHNlCisJVE1QVkVSU0lPTj1gJE9DQU1MT1BUIC12IHwgc2Vk
IC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCWlmIHRlc3QgIiRUTVBWRVJT
SU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgIEFDX01TR19SRVNVTFQoW3ZlcnNp
b25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2NhcmRlZC5dKQorCSAgICBPQ0FN
TE9QVD1ubworCWVsc2UKKwkgICAgT0NBTUxCRVNUPW9wdAorCWZpCisgICAgIGZpCisKKyAgICAg
QUNfU1VCU1QoW09DQU1MQkVTVF0pCisKKyAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxjLm9wdAor
ICAgICBBQ19DSEVDS19UT09MKFtPQ0FNTENET1RPUFRdLFtvY2FtbGMub3B0XSxbbm9dKQorICAg
ICBpZiB0ZXN0ICIkT0NBTUxDRE9UT1BUIiAhPSAibm8iOyB0aGVuCisJVE1QVkVSU0lPTj1gJE9D
QU1MQ0RPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwxfHAnIGAK
KwlpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsgdGhlbgorCSAgICBB
Q19NU0dfUkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbGMub3B0IGRp
c2NhcmRlZC5dKQorCWVsc2UKKwkgICAgT0NBTUxDPSRPQ0FNTENET1RPUFQKKwlmaQorICAgICBm
aQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0Lm9wdAorICAgICBpZiB0ZXN0ICIkT0NB
TUxPUFQiICE9ICJubyIgOyB0aGVuCisJQUNfQ0hFQ0tfVE9PTChbT0NBTUxPUFRET1RPUFRdLFtv
Y2FtbG9wdC5vcHRdLFtub10pCisJaWYgdGVzdCAiJE9DQU1MT1BURE9UT1BUIiAhPSAibm8iOyB0
aGVuCisJICAgVE1QVkVSU0lPTj1gJE9DQU1MT1BURE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4q
dmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCSAgIGlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAi
JE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgICAgQUNfTVNHX1JFU1VMVChbdmVyc2lvbiBkaWZm
ZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdC5vcHQgZGlzY2FyZGVkLl0pCisJICAgZWxzZQorCSAg
ICAgIE9DQU1MT1BUPSRPQ0FNTE9QVERPVE9QVAorCSAgIGZpCisgICAgICAgIGZpCisgICAgIGZp
CisKKyAgICAgQUNfU1VCU1QoW09DQU1MT1BUXSkKKyAgZmkKKworICBBQ19TVUJTVChbT0NBTUxD
XSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbCB0b3BsZXZlbAorICBBQ19DSEVDS19UT09MKFtP
Q0FNTF0sW29jYW1sXSxbbm9dKQorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZGVwCisgIEFDX0NI
RUNLX1RPT0woW09DQU1MREVQXSxbb2NhbWxkZXBdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Ig
b2NhbWxta3RvcAorICBBQ19DSEVDS19UT09MKFtPQ0FNTE1LVE9QXSxbb2NhbWxta3RvcF0sW25v
XSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbG1rbGliCisgIEFDX0NIRUNLX1RPT0woW09DQU1M
TUtMSUJdLFtvY2FtbG1rbGliXSxbbm9dKQorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZG9jCisg
IEFDX0NIRUNLX1RPT0woW09DQU1MRE9DXSxbb2NhbWxkb2NdLFtub10pCisKKyAgIyBjaGVja2lu
ZyBmb3Igb2NhbWxidWlsZAorICBBQ19DSEVDS19UT09MKFtPQ0FNTEJVSUxEXSxbb2NhbWxidWls
ZF0sW25vXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0dfT0NBTUxMRVhdLAorW2RubAorICAj
IGNoZWNraW5nIGZvciBvY2FtbGxleAorICBBQ19DSEVDS19UT09MKFtPQ0FNTExFWF0sW29jYW1s
bGV4XSxbbm9dKQorICBpZiB0ZXN0ICIkT0NBTUxMRVgiICE9ICJubyI7IHRoZW4KKyAgICBBQ19D
SEVDS19UT09MKFtPQ0FNTExFWERPVE9QVF0sW29jYW1sbGV4Lm9wdF0sW25vXSkKKyAgICBpZiB0
ZXN0ICIkT0NBTUxMRVhET1RPUFQiICE9ICJubyI7IHRoZW4KKwlPQ0FNTExFWD0kT0NBTUxMRVhE
T1RPUFQKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChbT0NBTUxMRVhdKQorXSkKKworQUNfREVG
VU4oW0FDX1BST0dfT0NBTUxZQUNDXSwKK1tkbmwKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxZQUND
XSxbb2NhbWx5YWNjXSxbbm9dKQorICBBQ19TVUJTVChbT0NBTUxZQUNDXSkKK10pCisKKworQUNf
REVGVU4oW0FDX1BST0dfQ0FNTFA0XSwKK1tkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19PQ0FN
TF0pZG5sCisKKyAgIyBjaGVja2luZyBmb3IgY2FtbHA0CisgIEFDX0NIRUNLX1RPT0woW0NBTUxQ
NF0sW2NhbWxwNF0sW25vXSkKKyAgaWYgdGVzdCAiJENBTUxQNCIgIT0gIm5vIjsgdGhlbgorICAg
ICBUTVBWRVJTSU9OPWAkQ0FNTFA0IC12IDI+JjF8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24gKlwo
LipcKSR8XDF8cCdgCisgICAgIGlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lP
TiIgOyB0aGVuCisJQUNfTVNHX1JFU1VMVChbdmVyc2lvbnMgZGlmZmVycyBmcm9tIG9jYW1sY10p
CisgICAgICAgIENBTUxQND1ubworICAgICBmaQorICBmaQorICBBQ19TVUJTVChbQ0FNTFA0XSkK
KworICAjIGNoZWNraW5nIGZvciBjb21wYW5pb24gdG9vbHMKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FN
TFA0Qk9PVF0sW2NhbWxwNGJvb3RdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9dLFtj
YW1scDRvXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRPRl0sW2NhbWxwNG9mXSxbbm9d
KQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRPT0ZdLFtjYW1scDRvb2ZdLFtub10pCisgIEFDX0NI
RUNLX1RPT0woW0NBTUxQNE9SRl0sW2NhbWxwNG9yZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChb
Q0FNTFA0UFJPRl0sW2NhbWxwNHByb2ZdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNFJd
LFtjYW1scDRyXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRSRl0sW2NhbWxwNHJmXSxb
bm9dKQorICBBQ19TVUJTVChbQ0FNTFA0Qk9PVF0pCisgIEFDX1NVQlNUKFtDQU1MUDRPXSkKKyAg
QUNfU1VCU1QoW0NBTUxQNE9GXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9PRl0pCisgIEFDX1NVQlNU
KFtDQU1MUDRPUkZdKQorICBBQ19TVUJTVChbQ0FNTFA0UFJPRl0pCisgIEFDX1NVQlNUKFtDQU1M
UDRSXSkKKyAgQUNfU1VCU1QoW0NBTUxQNFJGXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0df
RklORExJQl0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRubAorCisgICMg
Y2hlY2tpbmcgZm9yIG9jYW1sZmluZAorICBBQ19DSEVDS19UT09MKFtPQ0FNTEZJTkRdLFtvY2Ft
bGZpbmRdLFtub10pCisgIEFDX1NVQlNUKFtPQ0FNTEZJTkRdKQorXSkKKworCitkbmwgVGhhbmtz
IHRvIEppbSBNZXllcmluZyBmb3Igd29ya2luZyB0aGlzIG5leHQgYml0IG91dCBmb3IgdXMuCitk
bmwgWFhYIFdlIHNob3VsZCBkZWZpbmUgQVNfVFJfU0ggaWYgaXQncyBub3QgZGVmaW5lZCBhbHJl
YWR5CitkbmwgKGVnLiBmb3Igb2xkIGF1dG9jb25mKS4KK0FDX0RFRlVOKFtBQ19DSEVDS19PQ0FN
TF9QS0ddLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX0ZJTkRMSUJdKWRubAorCisgIEFD
X01TR19DSEVDS0lORyhbZm9yIE9DYW1sIGZpbmRsaWIgcGFja2FnZSAkMV0pCisKKyAgdW5zZXQg
Zm91bmQKKyAgdW5zZXQgcGtnCisgIGZvdW5kPW5vCisgIGZvciBwa2cgaW4gJDEgJDIgOyBkbwor
ICAgIGlmICRPQ0FNTEZJTkQgcXVlcnkgJHBrZyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVu
CisgICAgICBBQ19NU0dfUkVTVUxUKFtmb3VuZF0pCisgICAgICBBU19UUl9TSChbT0NBTUxfUEtH
XyQxXSk9JHBrZworICAgICAgZm91bmQ9eWVzCisgICAgICBicmVhaworICAgIGZpCisgIGRvbmUK
KyAgaWYgdGVzdCAiJGZvdW5kIiA9ICJubyIgOyB0aGVuCisgICAgQUNfTVNHX1JFU1VMVChbbm90
IGZvdW5kXSkKKyAgICBBU19UUl9TSChbT0NBTUxfUEtHXyQxXSk9bm8KKyAgZmkKKworICBBQ19T
VUJTVChBU19UUl9TSChbT0NBTUxfUEtHXyQxXSkpCitdKQorCisKK0FDX0RFRlVOKFtBQ19DSEVD
S19PQ0FNTF9NT0RVTEVdLAorW2RubAorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBPQ2FtbCBtb2R1
bGUgJDJdKQorCisgIGNhdCA+IGNvbmZ0ZXN0Lm1sIDw8RU9GCitvcGVuICQzCitFT0YKKyAgdW5z
ZXQgZm91bmQKKyAgZm9yICQxIGluICQkMSAkNCA7IGRvCisgICAgaWYgJE9DQU1MQyAtYyAtSSAi
JCQxIiBjb25mdGVzdC5tbCA+JjUgMj4mNSA7IHRoZW4KKyAgICAgIGZvdW5kPXllcworICAgICAg
YnJlYWsKKyAgICBmaQorICBkb25lCisKKyAgaWYgdGVzdCAiJGZvdW5kIiA7IHRoZW4KKyAgICBB
Q19NU0dfUkVTVUxUKFskJDFdKQorICBlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5k
XSkKKyAgICAkMT1ubworICBmaQorICBBQ19TVUJTVChbJDFdKQorXSkKKworCitkbmwgWFhYIENy
b3NzLWNvbXBpbGluZworQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX1dPUkRfU0laRV0sCitbZG5s
CisgIEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRubAorICBBQ19NU0dfQ0hFQ0tJTkcoW2Zv
ciBPQ2FtbCBjb21waWxlciB3b3JkIHNpemVdKQorICBjYXQgPiBjb25mdGVzdC5tbCA8PEVPRgor
ICBwcmludF9lbmRsaW5lIChzdHJpbmdfb2ZfaW50IFN5cy53b3JkX3NpemUpCisgIEVPRgorICBP
Q0FNTF9XT1JEX1NJWkU9YCRPQ0FNTCBjb25mdGVzdC5tbGAKKyAgQUNfTVNHX1JFU1VMVChbJE9D
QU1MX1dPUkRfU0laRV0pCisgIEFDX1NVQlNUKFtPQ0FNTF9XT1JEX1NJWkVdKQorXSkKKworQUNf
REVGVU4oW0FDX0NIRUNLX09DQU1MX09TX1RZUEVdLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19Q
Uk9HX09DQU1MXSlkbmwKKyAgQUNfTVNHX0NIRUNLSU5HKFtPQ2FtbCBTeXMub3NfdHlwZV0pCisK
KyAgY2F0ID4gY29uZnRlc3QubWwgPDxFT0YKKyAgcHJpbnRfc3RyaW5nKFN5cy5vc190eXBlKTs7
CitFT0YKKworICBPQ0FNTF9PU19UWVBFPWAkT0NBTUwgY29uZnRlc3QubWxgCisgIEFDX01TR19S
RVNVTFQoWyRPQ0FNTF9PU19UWVBFXSkKKyAgQUNfU1VCU1QoW09DQU1MX09TX1RZUEVdKQorXSkK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL200L3BhdGhfb3JfZmFp
bC5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90
b29scy9tNC9wYXRoX29yX2ZhaWwubTQJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBA
IC0wLDAgKzEsNiBAQAorQUNfREVGVU4oW0FYX1BBVEhfUFJPR19PUl9GQUlMXSwKK1tBQ19QQVRI
X1BST0coWyQxXSwgWyQyXSwgW25vXSkKK2lmIHRlc3QgeCIkeyQxfSIgPT0geCJubyIgCit0aGVu
CisgICAgQUNfTVNHX0VSUk9SKFtVbmFibGUgdG8gZmluZCAkMiwgcGxlYXNlIGluc3RhbGwgJDJd
KQorZmldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvbTQvcGtn
Lm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rv
b2xzL200L3BrZy5tNAlNb24gRmViIDIwIDIzOjE4OjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSwx
NTcgQEAKKyMgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmln
LiAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgc2VyaWFsIDEgKHBrZy1jb25maWctMC4y
NCkKKyMgCisjIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5l
dHNwbGl0LmNvbT4uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
CisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK
KyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisjCisjIEFzIGEg
c3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5
b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250
YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91
IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0
IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworIyBQS0dfUFJPR19QS0df
Q09ORklHKFtNSU4tVkVSU0lPTl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0FDX0RFRlVOKFtQS0dfUFJPR19QS0dfQ09ORklHXSwKK1ttNF9wYXR0ZXJuX2ZvcmJpZChb
Xl8/UEtHX1tBLVpfXSskXSkKK200X3BhdHRlcm5fYWxsb3coW15QS0dfQ09ORklHKF9QQVRIKT8k
XSkKK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBbcGF0aCB0byBwa2ctY29uZmlnIHV0aWxpdHld
KQorQUNfQVJHX1ZBUihbUEtHX0NPTkZJR19QQVRIXSwgW2RpcmVjdG9yaWVzIHRvIGFkZCB0byBw
a2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGhdKQorQUNfQVJHX1ZBUihbUEtHX0NPTkZJR19MSUJESVJd
LCBbcGF0aCBvdmVycmlkaW5nIHBrZy1jb25maWcncyBidWlsdC1pbiBzZWFyY2ggcGF0aF0pCisK
K2lmIHRlc3QgIngkYWNfY3ZfZW52X1BLR19DT05GSUdfc2V0IiAhPSAieHNldCI7IHRoZW4KKwlB
Q19QQVRIX1RPT0woW1BLR19DT05GSUddLCBbcGtnLWNvbmZpZ10pCitmaQoraWYgdGVzdCAtbiAi
JFBLR19DT05GSUciOyB0aGVuCisJX3BrZ19taW5fdmVyc2lvbj1tNF9kZWZhdWx0KFskMV0sIFsw
LjkuMF0pCisJQUNfTVNHX0NIRUNLSU5HKFtwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24g
JF9wa2dfbWluX3ZlcnNpb25dKQorCWlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWct
dmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbjsgdGhlbgorCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQor
CWVsc2UKKwkJQUNfTVNHX1JFU1VMVChbbm9dKQorCQlQS0dfQ09ORklHPSIiCisJZmkKK2ZpW11k
bmwKK10pIyBQS0dfUFJPR19QS0dfQ09ORklHCisKKyMgUEtHX0NIRUNLX0VYSVNUUyhNT0RVTEVT
LCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorIworIyBDaGVjayB0
byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9mIG1vZHVsZXMgZXhpc3RzLiAgU2ltaWxh
cgorIyB0byBQS0dfQ0hFQ0tfTU9EVUxFUygpLCBidXQgZG9lcyBub3Qgc2V0IHZhcmlhYmxlcyBv
ciBwcmludCBlcnJvcnMuCisjCisjIFBsZWFzZSByZW1lbWJlciB0aGF0IG00IGV4cGFuZHMgQUNf
UkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisjIG9ubHkgYXQgdGhlIGZpcnN0IG9jY3Vy
ZW5jZSBpbiBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBmaXJzdCBwbGFjZQorIyBpdCdzIGNhbGxl
ZCBtaWdodCBiZSBza2lwcGVkIChzdWNoIGFzIGlmIGl0IGlzIHdpdGhpbiBhbiAiaWYiLCB5b3UK
KyMgaGF2ZSB0byBjYWxsIFBLR19DSEVDS19FWElTVFMgbWFudWFsbHkKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RF
RlVOKFtQS0dfQ0hFQ0tfRVhJU1RTXSwKK1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklH
XSlkbmwKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgQUNfUlVOX0xPRyhbJFBL
R19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiQxIl0pOyB0aGVuCisgIG00X2RlZmF1
bHQoWyQyXSwgWzpdKQorbTRfaWZ2YWxuKFskM10sIFtlbHNlCisgICQzXSlkbmwKK2ZpXSkKKwor
IyBfUEtHX0NPTkZJRyhbVkFSSUFCTEVdLCBbQ09NTUFORF0sIFtNT0RVTEVTXSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19QS0df
Q09ORklHXSwKK1tpZiB0ZXN0IC1uICIkJDEiOyB0aGVuCisgICAgcGtnX2N2X1tdJDE9IiQkMSIK
KyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIFBLR19DSEVDS19FWElTVFMo
WyQzXSwKKyAgICAgICAgICAgICAgICAgICAgIFtwa2dfY3ZfW10kMT1gJFBLR19DT05GSUcgLS1b
XSQyICIkMyIgMj4vZGV2L251bGxgXSwKKwkJICAgICBbcGtnX2ZhaWxlZD15ZXNdKQorIGVsc2UK
KyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2ZpW11kbmwKK10pIyBfUEtHX0NPTkZJRworCisjIF9Q
S0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorQUNfREVGVU4oW19QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRF0sCitbQUNfUkVRVUlSRShb
UEtHX1BST0dfUEtHX0NPTkZJR10pCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmln
LXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9
eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmlbXWRu
bAorXSkjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorCisKKyMgUEtHX0NIRUNLX01PRFVM
RVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwKKyMgW0FDVElP
Ti1JRi1OT1QtRk9VTkRdKQorIworIworIyBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgYSBwb3NzaWJp
bGl0eSB0aGUgZmlyc3QgY2FsbCB0bworIyBQS0dfQ0hFQ0tfTU9EVUxFUyBtaWdodCBub3QgaGFw
cGVuLCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVkZSBhbgorIyBleHBsaWNpdCBjYWxsIHRv
IFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91ciBjb25maWd1cmUuYWMKKyMKKyMKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K0FDX0RFRlVOKFtQS0dfQ0hFQ0tfTU9EVUxFU10sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtH
X0NPTkZJR10pZG5sCitBQ19BUkdfVkFSKFskMV1bX0NGTEFHU10sIFtDIGNvbXBpbGVyIGZsYWdz
IGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKK0FDX0FSR19WQVIoWyQxXVtfTElC
U10sIFtsaW5rZXIgZmxhZ3MgZm9yICQxLCBvdmVycmlkaW5nIHBrZy1jb25maWddKWRubAorCitw
a2dfZmFpbGVkPW5vCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCisKK19QS0dfQ09ORklHKFsk
MV1bX0NGTEFHU10sIFtjZmxhZ3NdLCBbJDJdKQorX1BLR19DT05GSUcoWyQxXVtfTElCU10sIFts
aWJzXSwgWyQyXSkKKworbTRfZGVmaW5lKFtfUEtHX1RFWFRdLCBbQWx0ZXJuYXRpdmVseSwgeW91
IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAkMVtdX0NGTEFHUworYW5kICQxW11f
TElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCitTZWUgdGhlIHBrZy1j
b25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy5dKQorCitpZiB0ZXN0ICRwa2dfZmFpbGVk
ID0geWVzOyB0aGVuCisgICAJQUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAgICBfUEtHX1NIT1JU
X0VSUk9SU19TVVBQT1JURUQKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3Vw
cG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICAkMVtdX1BLR19FUlJPUlM9YCRQS0dfQ09ORklH
IC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzICIkMiIgMj4mMWAKKyAgICAgICAgZWxzZSAK
KwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJvcnMgIiQy
IiAyPiYxYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNv
bmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiQkMVtdX1BLR19FUlJPUlMiID4mQVNf
TUVTU0FHRV9MT0dfRkQKKworCW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19FUlJPUigKK1tQYWNr
YWdlIHJlcXVpcmVtZW50cyAoJDIpIHdlcmUgbm90IG1ldDoKKworJCQxX1BLR19FUlJPUlMKKwor
Q29uc2lkZXIgYWRqdXN0aW5nIHRoZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFi
bGUgaWYgeW91CitpbnN0YWxsZWQgc29mdHdhcmUgaW4gYSBub24tc3RhbmRhcmQgcHJlZml4Lgor
CitfUEtHX1RFWFRdKWRubAorICAgICAgICBdKQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50
cmllZDsgdGhlbgorICAgICAJQUNfTVNHX1JFU1VMVChbbm9dKQorCW00X2RlZmF1bHQoWyQ0XSwg
W0FDX01TR19GQUlMVVJFKAorW1RoZSBwa2ctY29uZmlnIHNjcmlwdCBjb3VsZCBub3QgYmUgZm91
bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAoraXMgaW4geW91ciBQQVRIIG9yIHNldCB0
aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAorcGF0aCB0byBw
a2ctY29uZmlnLgorCitfUEtHX1RFWFQKKworVG8gZ2V0IHBrZy1jb25maWcsIHNlZSA8aHR0cDov
L3BrZy1jb25maWcuZnJlZWRlc2t0b3Aub3JnLz4uXSlkbmwKKyAgICAgICAgXSkKK2Vsc2UKKwkk
MVtdX0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MKKwkkMVtdX0xJQlM9JHBrZ19jdl9bXSQx
W11fTElCUworICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCSQzCitmaVtdZG5sCitdKSMg
UEtHX0NIRUNLX01PRFVMRVMKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRv
b2xzL200L3B5dGhvbl9kZXZlbC5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi90b29scy9tNC9weXRob25fZGV2ZWwubTQJTW9uIEZlYiAyMCAyMzox
ODowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTggQEAKK0FDX0RFRlVOKFtBWF9DSEVDS19QWVRI
T05fREVWRUxdLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiBkZXZlbF0pCisKK2AkUFlU
SE9OIC1jICcKK2ltcG9ydCBvcy5wYXRoLCBzeXMKK2ZvciBwIGluIHN5cy5wYXRoOgorICAgIGlm
IG9zLnBhdGguZXhpc3RzKHAgKyAiL2NvbmZpZy9NYWtlZmlsZSIpOgorICAgICAgICBzeXMuZXhp
dCgwKQorc3lzLmV4aXQoMSkKKycgPiAvZGV2L251bGwgMj4mMWAKKworaWYgdGVzdCAiJD8iICE9
ICIwIgordGhlbgorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfRVJST1IoW1B5
dGhvbiBkZXZlbCBwYWNrYWdlIG5vdCBmb3VuZF0pCitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChb
eWVzXSkKK2ZpXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4N2IwOWU5M2FhIHRvb2xzL200
L3B5dGhvbl92ZXJzaW9uLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3Rvb2xzL200L3B5dGhvbl92ZXJzaW9uLm00CU1vbiBGZWIgMjAgMjM6MTg6
MDEgMjAxMiArMDEwMApAQCAtMCwwICsxLDEyIEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9O
X1ZFUlNJT05dLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiB2ZXJzaW9uID49ICQxLiQy
IF0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHN5czsgZXhpdChldmFsKCJzeXMudmVyc2lvbl9pbmZv
IDwgKCQxLCAkMikiKSknYAoraWYgdGVzdCAiJD8iICE9ICIwIgordGhlbgorICAgIHB5dGhvbl92
ZXJzaW9uPWAkUFlUSE9OIC1WIDI+JjFgCisgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIEFD
X01TR19FUlJPUigKKyAgICAgICAgWyRweXRob25fdmVyc2lvbiBpcyB0b28gb2xkLCBtaW5pbXVt
IHJlcXVpcmVkIHZlcnNpb24gaXMgJDEuJDJdKQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW3ll
c10pCitmaV0pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9tNC9w
eXRob25feG1sLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3Rvb2xzL200L3B5dGhvbl94bWwubTQJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICsw
MTAwCkBAIC0wLDAgKzEsMTAgQEAKK0FDX0RFRlVOKFtBWF9DSEVDS19QWVRIT05fWE1MXSwKK1tB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24geG1sLmRvbS5taW5pZG9tXSkKK2AkUFlUSE9OIC1j
ICdpbXBvcnQgeG1sLmRvbS5taW5pZG9tJ2AKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAg
ICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNHX0VSUk9SKFtVbmFibGUgdG8gZmluZCB4
bWwuZG9tLm1pbmlkb20gbW9kdWxlXSkKK2Vsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQor
ZmldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBkZDg3YjA5ZTkzYWEgdG9vbHMvbTQvc2V0X2Nm
bGFnc19sZGZsYWdzLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCisrKyBiL3Rvb2xzL200L3NldF9jZmxhZ3NfbGRmbGFncy5tNAlNb24gRmViIDIwIDIzOjE4
OjAxIDIwMTIgKzAxMDAKQEAgLTAsMCArMSwyMCBAQAorQUNfREVGVU4oW0FYX1NFVF9GTEFHU10s
CitbZm9yIGNmbGFnIGluICRQUkVQRU5EX0lOQ0xVREVTCitkbworICAgIFBSRVBFTkRfQ0ZMQUdT
Kz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBpbiAkUFJFUEVORF9MSUIKK2RvCisgICAg
UFJFUEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2RvbmUKK2ZvciBjZmxhZyBpbiAkQVBQRU5E
X0lOQ0xVREVTCitkbworICAgIEFQUEVORF9DRkxBR1MrPSIgLUkkY2ZsYWciCitkb25lCitmb3Ig
bGRmbGFnIGluICRBUFBFTkRfTElCCitkbworICAgIEFQUEVORF9MREZMQUdTKz0iIC1MJGxkZmxh
ZyIKK2RvbmUKK0NGTEFHUz0iJFBSRVBFTkRfQ0ZMQUdTICRDRkxBR1MgJEFQUEVORF9DRkxBR1Mi
CitMREZMQUdTPSIkUFJFUEVORF9MREZMQUdTICRMREZMQUdTICRBUFBFTkRfTERGTEFHUyJdKQor
CmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB0b29scy9tNC91ZGV2Lm00Ci0t
LSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200
L3VkZXYubTQJTW9uIEZlYiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMzIgQEAK
K0FDX0RFRlVOKFtBWF9DSEVDS19VREVWXSwKK1tpZiB0ZXN0ICJ4JGhvc3Rfb3MiID09ICJ4bGlu
dXgtZ251IgordGhlbgorICAgIEFDX1BBVEhfUFJPRyhbVURFVkFETV0sIFt1ZGV2YWRtXSwgW25v
XSkKKyAgICBpZiB0ZXN0IHgiJHtVREVWQURNfSIgPT0geCJubyIgCisgICAgdGhlbgorICAgICAg
ICBBQ19QQVRIX1BST0coW1VERVZJTkZPXSwgW3VkZXZpbmZvXSwgW25vXSkKKyAgICAgICAgaWYg
dGVzdCB4IiR7VURFVklORk99IiA9PSB4Im5vIgorICAgICAgICB0aGVuCisgICAgICAgICAgICBB
Q19NU0dfRVJST1IoCisgICAgICAgICAgICAgICAgW1VuYWJsZSB0byBmaW5kIHVkZXZhZG0gb3Ig
dWRldmluZm8sIHBsZWFzZSBpbnN0YWxsIHVkZXZdKQorICAgICAgICBmaQorICAgICAgICB1ZGV2
dmVyPWAke1VERVZJTkZPfSAtViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGVsc2UKKyAgICAg
ICAgdWRldnZlcj1gJHtVREVWQURNfSBpbmZvIC1WIHwgYXdrICd7cHJpbnQgJE5GfSdgCisgICAg
ZmkKKyAgICBpZiB0ZXN0ICR7dWRldnZlcn0gLWx0IDU5CisgICAgdGhlbgorICAgICAgICBBQ19Q
QVRIX1BST0coW0hPVFBMVUddLCBbaG90cGx1Z10sIFtub10pCisgICAgICAgIGlmIHRlc3QgeCIk
e0hPVFBMVUd9IiA9PSB4Im5vIgorICAgICAgICB0aGVuCisgICAgICAgICAgICBBQ19NU0dfRVJS
T1IoW3VkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9uIDU5IG9yIGxhdGVyXSkKKyAg
ICAgICAgZmkKKyAgICBmaQorZWxzZQorICAgIEFDX1BBVEhfUFJPRyhbVk5DT05GSUddLCBbdm5j
b25maWddLCBbbm9dKQorICAgIGlmIHRlc3QgeCIke1ZOQ09ORklHfSIgPT0geCJubyIKKyAgICB0
aGVuCisgICAgICAgIEFDX01TR19FUlJPUihbTm90IGEgTGludXggc3lzdGVtIGFuZCB1bmFibGUg
dG8gZmluZCB2bmRdKQorICAgIGZpCitmaQorXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgZGQ4
N2IwOWU5M2FhIHRvb2xzL200L3V1aWQubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvdXVpZC5tNAlNb24gRmViIDIwIDIzOjE4OjAx
IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMCBAQAorQUNfREVGVU4oW0FYX0NIRUNLX1VVSURdLAor
W2lmIHRlc3QgIngkaG9zdF9vcyIgPT0gInhsaW51eC1nbnUiCit0aGVuCisgICAgQUNfQ0hFQ0tf
SEVBREVSKFt1dWlkL3V1aWQuaF0sLAorCSAgICBbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCB1
dWlkIGhlYWRlcnNdKV0pCitlbHNlCisgICAgQUNfQ0hFQ0tfSEVBREVSKFt1dWlkLmhdLCwKKwkg
ICAgW0FDX01TR19FUlJPUihbY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzXSldKQorZmkKK10pCmRp
ZmYgLXIgY2E4MGVjYTljZmEzIC1yIGRkODdiMDllOTNhYSB2ZXJzaW9uLnNoCi0tLSAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3ZlcnNpb24uc2gJTW9uIEZl
YiAyMCAyMzoxODowMSAyMDEyICswMTAwCkBAIC0wLDAgKzEsNSBAQAorIyEvYmluL3NoCisKK01B
Sk9SPWBncmVwICJleHBvcnQgWEVOX1ZFUlNJT04iICQxIHwgc2VkICdzLy4qPS8vZycgfCB0ciAt
cyAiICJgCitNSU5PUj1gZ3JlcCAiZXhwb3J0IFhFTl9TVUJWRVJTSU9OIiAkMSB8IHNlZCAncy8u
Kj0vL2cnIHwgdHIgLXMgIiAiYAorcHJpbnRmICIlZC4lZCIgJE1BSk9SICRNSU5PUgo=

--===============5260582694761208521==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xensource.com/xen-devel

--===============5260582694761208521==--


From xen-devel-bounces@lists.xen.org Tue Feb 21 12:00:59 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Feb 2012 12:00:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1RzoOb-0005W5-Iu; Tue, 21 Feb 2012 12:00:37 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1RzoOa-0005VY-Aj
	for xen-devel@lists.xen.org; Tue, 21 Feb 2012 12:00:37 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-4.tower-216.messagelabs.com!1329825627!16206308!1
X-Originating-IP: [74.125.82.51]
X-SpamReason: No, hits=1.6 required=7.0 tests=BODY_RANDOM_LONG,
	DATE_IN_PAST_06_12,RCVD_BY_IP,UPPERCASE_25_50
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2161 invoked from network); 21 Feb 2012 12:00:27 -0000
Received: from mail-ww0-f51.google.com (HELO mail-ww0-f51.google.com)
	(74.125.82.51)
	by server-4.tower-216.messagelabs.com with RC4-SHA encrypted SMTP;
	21 Feb 2012 12:00:27 -0000
Received: by wgbdy1 with SMTP id dy1so4148994wgb.32
	for <xen-devel@lists.xen.org>; Tue, 21 Feb 2012 04:00:27 -0800 (PST)
Received-SPF: pass (google.com: domain of royger@gmail.com designates
	10.180.86.198 as permitted sender) client-ip=10.180.86.198; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of royger@gmail.com
	designates 10.180.86.198 as permitted sender)
	smtp.mail=royger@gmail.com; dkim=pass header.i=royger@gmail.com
Received: from mr.google.com ([10.180.86.198])
	by 10.180.86.198 with SMTP id r6mr25993091wiz.22.1329825627491
	(num_hops = 1); Tue, 21 Feb 2012 04:00:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:subject:x-mercurial-node
	:message-id:user-agent:date:from:to:cc;
	bh=jdpDwKU732YCTKZM/VrV5cNZh4umpufXsl7bRsjQQqc=;
	b=Obqx6tVvSLjhZGNgpLn0RhGc+yIi2rGA9ew4ciwOOkzz2E2kLueL8a0w/85QzXbXtb
	3IfcEzp9AX8TTHyxWCfxlrUwwNwTuz1VgmdAKDSI575V26BB4uGMJN5aXomUc47X8j0o
	xWO/0NgDZ4NYgfr3dyE2+ehV9z8BHXiaM22BU=
Received: by 10.180.86.198 with SMTP id r6mr21756242wiz.22.1329825627417;
	Tue, 21 Feb 2012 04:00:27 -0800 (PST)
Received: from build.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id cs4sm54565342wib.8.2012.02.21.04.00.26
	(version=TLSv1/SSLv3 cipher=OTHER);
	Tue, 21 Feb 2012 04:00:26 -0800 (PST)
Content-Type: multipart/mixed; boundary="===============5240906552094329370=="
MIME-Version: 1.0
X-Mercurial-Node: b6071c710f6cb6200aaf134a46e80bc937382f7a
Message-Id: <b6071c710f6cb6200aaf.1329786087@build.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Tue, 21 Feb 2012 02:01:27 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xen.org
Cc: ian.jackson@citrix.com, ian.campbell@citrix.com
Subject: [Xen-devel] [PATCH v6] build: add autoconf to replace custom checks
	in tools/check
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============5240906552094329370==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Added autotools magic to replace custom check scripts. The previous
checks have been ported to autoconf, and some additional ones have
been added (plus the suggestions from running autoscan). Two files are
created as a result from executing configure script, config/Tools.mk
and config.h.

conf/Tools.mk is included by tools/Rules.mk, and contains most of the
options previously defined in .config, that can now be set passing
parameters or defining environment variables when executing configure
script.

config.h is only used by libxl/xl to detect yajl_version.h.

Changes since v5:

 * Remove dummy configure generation from autogen.sh since it's
   already on the source tree.

 * Removed autogen.sh since it was only a wrapper for calling
   autoconf.

 * Remove comment regarding yajl_version.h from configure.ac.

Changes since v4:

 * Updated to tip.

 * Include config.h from compiler command line when building libxl and
   xl to assure yajl_version.h presence and correctly detect yajl
   version.

 * Added glib-2.0 check with appropiate m4 macros.

 * Purged config.h.in from unnecessary defines that could mess with
   the build system.

 * Removed tools/config.sub, tools/config.guess, tools/configure and
   configure to make the patch fit mailing list limit.

Changes since v3:

 * Copied config.guess and config.sub from automake 1.11.

 * Added a test to check for uuid.h on BSD and uuid/uuid.h on Linux.

Changes since v2:

 * Changed order of config/Tools.mk include.

 * Added "-e" to autogen.sh shebang.

 * Added necessary files (config.*) and output from Autoheader and
   Autoconf.

 * Removed Autoconf from build dependencies and updated README.

Changes since v1:

 * Moved autoconf stuff inside tools folder.

 * Add Makefile rules for cleaning.

 * Removed Automake dependency.

 * Create autogen.sh to automatically create configure script when
   building from source repository.

 * Cached values of options passed from command line.

 * Add necessary ignores to .hgignore.

 * Added Autoconf to the list of dependencies.

 * Changed hypen to underscore in XML2 and CURL variable names.

 * Added script to get version from xen/Makefile.

 * Set Ocaml tools to optional.

 * Added procedence of m4/ocaml.m4.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>


 .hgignore                         |    6 +
 Config.mk                         |   39 ------
 Makefile                          |    2 -
 README                            |    4 +
 config/Tools.mk.in                |   50 +++++++
 configure                         |    2 +
 tools/Makefile                    |    3 +-
 tools/Rules.mk                    |    7 +-
 tools/blktap/drivers/Makefile     |    2 +-
 tools/blktap/drivers/check_gcrypt |   14 --
 tools/check/Makefile              |   26 ----
 tools/check/README                |   20 ---
 tools/check/check_brctl           |   13 --
 tools/check/check_crypto_lib      |   11 -
 tools/check/check_curl            |   13 --
 tools/check/check_iproute         |   15 --
 tools/check/check_libaio_devel    |   11 -
 tools/check/check_libaio_lib      |    9 -
 tools/check/check_openssl_devel   |    6 -
 tools/check/check_python          |   13 --
 tools/check/check_python_devel    |   17 --
 tools/check/check_python_xml      |   12 -
 tools/check/check_udev            |   22 ---
 tools/check/check_uuid_devel      |    7 -
 tools/check/check_x11_devel       |    9 -
 tools/check/check_xgettext        |    6 -
 tools/check/check_xml2            |   14 --
 tools/check/check_yajl_devel      |    8 -
 tools/check/check_zlib_devel      |    6 -
 tools/check/check_zlib_lib        |   12 -
 tools/check/chk                   |   63 ---------
 tools/check/funcs.sh              |  106 ----------------
 tools/config.h.in                 |   16 ++
 tools/configure.ac                |  192 ++++++++++++++++++++++++++++++
 tools/debugger/gdbsx/xg/Makefile  |    1 -
 tools/install.sh                  |    1 +
 tools/libfsimage/Makefile         |    6 +-
 tools/libfsimage/check-libext2fs  |   21 ---
 tools/libxen/Makefile             |    8 +-
 tools/libxl/Makefile              |    7 +-
 tools/libxl/libxl_json.h          |    2 +-
 tools/m4/default_lib.m4           |    8 +
 tools/m4/disable_feature.m4       |   13 ++
 tools/m4/enable_feature.m4        |   13 ++
 tools/m4/ocaml.m4                 |  241 ++++++++++++++++++++++++++++++++++++++
 tools/m4/path_or_fail.m4          |    6 +
 tools/m4/pkg.m4                   |  157 ++++++++++++++++++++++++
 tools/m4/python_devel.m4          |   18 ++
 tools/m4/python_version.m4        |   12 +
 tools/m4/python_xml.m4            |   10 +
 tools/m4/set_cflags_ldflags.m4    |   20 +++
 tools/m4/udev.m4                  |   32 +++++
 tools/m4/uuid.m4                  |   10 +
 version.sh                        |    5 +
 54 files changed, 836 insertions(+), 511 deletions(-)



--===============5240906552094329370==
Content-Type: text/x-patch; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=xen-autoconf.patch

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI5Nzg0ODA0IC0zNjAwCiMgTm9kZSBJRCBiNjA3MWM3MTBm
NmNiNjIwMGFhZjEzNGE0NmU4MGJjOTM3MzgyZjdhCiMgUGFyZW50ICBjYTgwZWNhOWNmYTM5ZDFi
NjBkMTIxNjk0OGRhYzU3MTFkNTUwYjgzCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwgY29uZmlnL1Rvb2xzLm1rCmFuZCBjb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMgaW5jbHVk
ZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRpb25zIHBy
ZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBhc3NpbmcK
cGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBleGVjdXRp
bmcgY29uZmlndXJlCnNjcmlwdC4KCmNvbmZpZy5oIGlzIG9ubHkgdXNlZCBieSBsaWJ4bC94bCB0
byBkZXRlY3QgeWFqbF92ZXJzaW9uLmguCgpDaGFuZ2VzIHNpbmNlIHY1OgoKICogUmVtb3ZlIGR1
bW15IGNvbmZpZ3VyZSBnZW5lcmF0aW9uIGZyb20gYXV0b2dlbi5zaCBzaW5jZSBpdCdzCiAgIGFs
cmVhZHkgb24gdGhlIHNvdXJjZSB0cmVlLgoKICogUmVtb3ZlZCBhdXRvZ2VuLnNoIHNpbmNlIGl0
IHdhcyBvbmx5IGEgd3JhcHBlciBmb3IgY2FsbGluZwogICBhdXRvY29uZi4KCiAqIFJlbW92ZSBj
b21tZW50IHJlZ2FyZGluZyB5YWpsX3ZlcnNpb24uaCBmcm9tIGNvbmZpZ3VyZS5hYy4KCkNoYW5n
ZXMgc2luY2UgdjQ6CgogKiBVcGRhdGVkIHRvIHRpcC4KCiAqIEluY2x1ZGUgY29uZmlnLmggZnJv
bSBjb21waWxlciBjb21tYW5kIGxpbmUgd2hlbiBidWlsZGluZyBsaWJ4bCBhbmQKICAgeGwgdG8g
YXNzdXJlIHlhamxfdmVyc2lvbi5oIHByZXNlbmNlIGFuZCBjb3JyZWN0bHkgZGV0ZWN0IHlhamwK
ICAgdmVyc2lvbi4KCiAqIEFkZGVkIGdsaWItMi4wIGNoZWNrIHdpdGggYXBwcm9waWF0ZSBtNCBt
YWNyb3MuCgogKiBQdXJnZWQgY29uZmlnLmguaW4gZnJvbSB1bm5lY2Vzc2FyeSBkZWZpbmVzIHRo
YXQgY291bGQgbWVzcyB3aXRoCiAgIHRoZSBidWlsZCBzeXN0ZW0uCgogKiBSZW1vdmVkIHRvb2xz
L2NvbmZpZy5zdWIsIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlndXJlIGFuZAogICBj
b25maWd1cmUgdG8gbWFrZSB0aGUgcGF0Y2ggZml0IG1haWxpbmcgbGlzdCBsaW1pdC4KCkNoYW5n
ZXMgc2luY2UgdjM6CgogKiBDb3BpZWQgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIGZyb20g
YXV0b21ha2UgMS4xMS4KCiAqIEFkZGVkIGEgdGVzdCB0byBjaGVjayBmb3IgdXVpZC5oIG9uIEJT
RCBhbmQgdXVpZC91dWlkLmggb24gTGludXguCgpDaGFuZ2VzIHNpbmNlIHYyOgoKICogQ2hhbmdl
ZCBvcmRlciBvZiBjb25maWcvVG9vbHMubWsgaW5jbHVkZS4KCiAqIEFkZGVkICItZSIgdG8gYXV0
b2dlbi5zaCBzaGViYW5nLgoKICogQWRkZWQgbmVjZXNzYXJ5IGZpbGVzIChjb25maWcuKikgYW5k
IG91dHB1dCBmcm9tIEF1dG9oZWFkZXIgYW5kCiAgIEF1dG9jb25mLgoKICogUmVtb3ZlZCBBdXRv
Y29uZiBmcm9tIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgdXBkYXRlZCBSRUFETUUuCgpDaGFuZ2Vz
IHNpbmNlIHYxOgoKICogTW92ZWQgYXV0b2NvbmYgc3R1ZmYgaW5zaWRlIHRvb2xzIGZvbGRlci4K
CiAqIEFkZCBNYWtlZmlsZSBydWxlcyBmb3IgY2xlYW5pbmcuCgogKiBSZW1vdmVkIEF1dG9tYWtl
IGRlcGVuZGVuY3kuCgogKiBDcmVhdGUgYXV0b2dlbi5zaCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0
ZSBjb25maWd1cmUgc2NyaXB0IHdoZW4KICAgYnVpbGRpbmcgZnJvbSBzb3VyY2UgcmVwb3NpdG9y
eS4KCiAqIENhY2hlZCB2YWx1ZXMgb2Ygb3B0aW9ucyBwYXNzZWQgZnJvbSBjb21tYW5kIGxpbmUu
CgogKiBBZGQgbmVjZXNzYXJ5IGlnbm9yZXMgdG8gLmhnaWdub3JlLgoKICogQWRkZWQgQXV0b2Nv
bmYgdG8gdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzLgoKICogQ2hhbmdlZCBoeXBlbiB0byB1bmRl
cnNjb3JlIGluIFhNTDIgYW5kIENVUkwgdmFyaWFibGUgbmFtZXMuCgogKiBBZGRlZCBzY3JpcHQg
dG8gZ2V0IHZlcnNpb24gZnJvbSB4ZW4vTWFrZWZpbGUuCgogKiBTZXQgT2NhbWwgdG9vbHMgdG8g
b3B0aW9uYWwuCgogKiBBZGRlZCBwcm9jZWRlbmNlIG9mIG00L29jYW1sLm00LgoKU2lnbmVkLW9m
Zi1ieTogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAZW50ZWwudXBjLmVkdT4KCmRpZmYgLXIg
Y2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyAuaGdpZ25vcmUKLS0tIGEvLmhnaWdub3JlCU1v
biBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi8uaGdpZ25vcmUJVHVlIEZlYiAyMSAw
MTo0MDowNCAyMDEyICswMTAwCkBAIC0zMDMsNiArMzAzLDEyIEBACiBedG9vbHMvb2NhbWwvbGli
cy94bC94ZW5saWdodFwubWwkCiBedG9vbHMvb2NhbWwvbGlicy94bC94ZW5saWdodFwubWxpJAog
XnRvb2xzL29jYW1sL3hlbnN0b3JlZC9veGVuc3RvcmVkJAorXnRvb2xzL2F1dG9tNHRlXC5jYWNo
ZSQKK150b29scy9jb25maWdcLmgkCitedG9vbHMvY29uZmlnXC5sb2ckCitedG9vbHMvY29uZmln
XC5zdGF0dXMkCitedG9vbHMvY29uZmlnXC5jYWNoZSQKK15jb25maWcvVG9vbHNcLm1rJAogXnhl
bi9cLmJhbm5lci4qJAogXnhlbi9CTE9HJAogXnhlbi9TeXN0ZW0ubWFwJApkaWZmIC1yIGNhODBl
Y2E5Y2ZhMyAtciBiNjA3MWM3MTBmNmMgQ29uZmlnLm1rCi0tLSBhL0NvbmZpZy5tawlNb24gRmVi
IDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIGIvQ29uZmlnLm1rCVR1ZSBGZWIgMjEgMDE6NDA6
MDQgMjAxMiArMDEwMApAQCAtNzAsOSArNzAsNiBAQCBFWFRSQV9JTkNMVURFUyArPSAkKEVYVFJB
X1BSRUZJWCkvaW5jbHVkCiBFWFRSQV9MSUIgKz0gJChFWFRSQV9QUkVGSVgpLyQoTElCTEVBRkRJ
UikKIGVuZGlmCiAKLUJJU09OCT89IGJpc29uCi1GTEVYCT89IGZsZXgKLQogUFlUSE9OICAgICAg
Pz0gcHl0aG9uCiBQWVRIT05fUFJFRklYX0FSRyA/PSAtLXByZWZpeD0iJChQUkVGSVgpIgogIyBU
aGUgYWJvdmUgcmVxdWlyZXMgdGhhdCBQUkVGSVggY29udGFpbnMgKm5vIHNwYWNlcyouIFRoaXMg
dmFyaWFibGUgaXMgaGVyZQpAQCAtMTc1LDMyICsxNzIsOSBAQCBDRkxBR1MgKz0gJChmb3JlYWNo
IGksICQoUFJFUEVORF9JTkNMVURFCiBBUFBFTkRfTERGTEFHUyArPSAkKGZvcmVhY2ggaSwgJChB
UFBFTkRfTElCKSwgLUwkKGkpKQogQVBQRU5EX0NGTEFHUyArPSAkKGZvcmVhY2ggaSwgJChBUFBF
TkRfSU5DTFVERVMpLCAtSSQoaSkpCiAKLUNIRUNLX0xJQiA9ICQoRVhUUkFfTElCKSAkKFBSRVBF
TkRfTElCKSAkKEFQUEVORF9MSUIpCi1DSEVDS19JTkNMVURFUyA9ICQoRVhUUkFfSU5DTFVERVMp
ICQoUFJFUEVORF9JTkNMVURFUykgJChBUFBFTkRfSU5DTFVERVMpCi0KIEVNQkVEREVEX0VYVFJB
X0NGTEFHUyA6PSAtbm9waWUgLWZuby1zdGFjay1wcm90ZWN0b3IgLWZuby1zdGFjay1wcm90ZWN0
b3ItYWxsCiBFTUJFRERFRF9FWFRSQV9DRkxBR1MgKz0gLWZuby1leGNlcHRpb25zCiAKLUNPTkZJ
R19MSUJJQ09OViAgIDo9ICQoc2hlbGwgZXhwb3J0IE9TPSJgdW5hbWUgLXNgIjsgXAotICAgICAg
ICAgICAgICAgICAgICAgICBleHBvcnQgQ0hFQ0tfTElCPSIkKENIRUNLX0xJQikiOyBcCi0gICAg
ICAgICAgICAgICAgICAgICAgIC4gJChYRU5fUk9PVCkvdG9vbHMvY2hlY2svZnVuY3Muc2g7IFwK
LSAgICAgICAgICAgICAgICAgICAgICAgaGFzX2xpYiBsaWJpY29udi5zbyAmJiBlY2hvICd5JyB8
fCBlY2hvICduJykKLQotQ09ORklHX1lBSkxfVkVSU0lPTiA6PSAkKHNoZWxsIGV4cG9ydCBPUz0i
YHVuYW1lIC1zYCI7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0IENIRUNLX0lOQ0xV
REVTPSIkKENIRUNLX0lOQ0xVREVTKSI7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgLiAkKFhF
Tl9ST09UKS90b29scy9jaGVjay9mdW5jcy5zaDsgXAotICAgICAgICAgICAgICAgICAgICAgICBo
YXNfaGVhZGVyIHlhamwveWFqbF92ZXJzaW9uLmggJiYgZWNobyAneScgfHwgZWNobyAnbicpCi0K
LSMgRW5hYmxlIFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNrKS4KLVhTTV9F
TkFCTEUgPz0gbgotRkxBU0tfRU5BQkxFID89ICQoWFNNX0VOQUJMRSkKLQotIyBEb3dubG9hZCBH
SVQgcmVwb3NpdG9yaWVzIHZpYSBIVFRQIG9yIEdJVCdzIG93biBwcm90b2NvbD8KLSMgR0lUJ3Mg
cHJvdG9jb2wgaXMgZmFzdGVyIGFuZCBtb3JlIHJvYnVzdCwgd2hlbiBpdCB3b3JrcyBhdCBhbGwg
KGZpcmV3YWxscwotIyBtYXkgYmxvY2sgaXQpLiBXZSBtYWtlIGl0IHRoZSBkZWZhdWx0LCBidXQg
aWYgeW91ciBHSVQgcmVwb3NpdG9yeSBkb3dubG9hZHMKLSMgZmFpbCBvciBoYW5nLCBwbGVhc2Ug
c3BlY2lmeSBHSVRfSFRUUD15IGluIHlvdXIgZW52aXJvbm1lbnQuCi1HSVRfSFRUUCA/PSBuCi0K
IFhFTl9FWFRGSUxFU19VUkw9aHR0cDovL3hlbmJpdHMueGVuc291cmNlLmNvbS94ZW4tZXh0Zmls
ZXMKICMgQWxsIHRoZSBmaWxlcyBhdCB0aGF0IGxvY2F0aW9uIHdlcmUgZG93bmxvYWRlZCBmcm9t
IGVsc2V3aGVyZSBvbgogIyB0aGUgaW50ZXJuZXQuICBUaGUgb3JpZ2luYWwgZG93bmxvYWQgVVJM
IGlzIHByZXNlcnZlZCBhcyBhIGNvbW1lbnQKQEAgLTIzOSwxNyArMjEzLDQgQEAgUUVNVV9UQUcg
Pz0gMTI4ZGUyNTQ5YzVmMjRlNGE0MzdiODZiZDJlNAogIyBTaG9ydCBhbnN3ZXIgLS0gZG8gbm90
IGVuYWJsZSB0aGlzIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUKICMgZG9pbmcgYW5kIGFy
ZSBwcmVwYXJlZCBmb3Igc29tZSBwYWluLgogCi0jIE9wdGlvbmFsIGNvbXBvbmVudHMKLVhFTlNU
QVRfWEVOVE9QICAgICA/PSB5Ci1WVFBNX1RPT0xTICAgICAgICAgPz0gbgotTElCWEVOQVBJX0JJ
TkRJTkdTID89IG4KLVBZVEhPTl9UT09MUyAgICAgICA/PSB5Ci1PQ0FNTF9UT09MUyAgICAgICAg
Pz0geQotQ09ORklHX01JTklURVJNICAgID89IG4KLUNPTkZJR19MT01PVU5UICAgICA/PSBuCi1D
T05GSUdfU1lTVEVNX0xJQkFJTyA/PSB5CiBDT05GSUdfVEVTVFMgICAgICAgPz0geQotCi1pZmVx
ICgkKE9DQU1MX1RPT0xTKSx5KQotT0NBTUxfVE9PTFMgOj0gJChzaGVsbCBvY2FtbG9wdCAtdiA+
IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8gInkiIHx8IGVjaG8gIm4iKQotZW5kaWYKZGlmZiAtciBj
YTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIE1ha2VmaWxlCi0tLSBhL01ha2VmaWxlCU1vbiBG
ZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi9NYWtlZmlsZQlUdWUgRmViIDIxIDAxOjQw
OjA0IDIwMTIgKzAxMDAKQEAgLTQwLDExICs0MCw5IEBAIGRpc3Q6IERFU1RESVI9JChESVNURElS
KS9pbnN0YWxsCiBkaXN0OiBkaXN0LXhlbiBkaXN0LWtlcm5lbHMgZGlzdC10b29scyBkaXN0LXN0
dWJkb20gZGlzdC1kb2NzIGRpc3QtbWlzYwogCiBkaXN0LW1pc2M6Ci0JJChJTlNUQUxMX0RJUikg
JChESVNURElSKS9jaGVjawogCSQoSU5TVEFMTF9EQVRBKSAuL0NPUFlJTkcgJChESVNURElSKQog
CSQoSU5TVEFMTF9EQVRBKSAuL1JFQURNRSAkKERJU1RESVIpCiAJJChJTlNUQUxMX1BST0cpIC4v
aW5zdGFsbC5zaCAkKERJU1RESVIpCi0JJChJTlNUQUxMX1BST0cpIHRvb2xzL2NoZWNrL2NoayB0
b29scy9jaGVjay9jaGVja18qIHRvb2xzL2NoZWNrL2Z1bmNzLnNoICQoRElTVERJUikvY2hlY2sK
IGRpc3QtJTogREVTVERJUj0kKERJU1RESVIpL2luc3RhbGwKIGRpc3QtJTogaW5zdGFsbC0lCiAJ
QDogIyBkbyBub3RoaW5nCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyBSRUFE
TUUKLS0tIGEvUkVBRE1FCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi9SRUFE
TUUJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC04OSw5ICs4OSwxMyBAQCAyLiBj
ZCB0byB4ZW4tdW5zdGFibGUgKG9yIHdoYXRldmVyIHlvdSBzCiAzLiBGb3IgdGhlIHZlcnkgZmly
c3QgYnVpbGQsIG9yIGlmIHlvdSB3YW50IHRvIGRlc3Ryb3kgYnVpbGQgdHJlZXMsCiAgICBwZXJm
b3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKKyAgICAjIC4vY29uZmlndXJlCiAgICAgIyBtYWtl
IHdvcmxkCiAgICAgIyBtYWtlIGluc3RhbGwKIAorICAgSWYgeW91IHdhbnQsIHlvdSBjYW4gcnVu
IC4vY29uZmlndXJlIC0taGVscCB0byBzZWUgdGhlIGxpc3Qgb2YKKyAgIG9wdGlvbnMgYXZhaWxh
YmxlIG9wdGlvbnMgd2hlbiBidWlsZGluZyBhbmQgaW5zdGFsbGluZyBYZW4uCisKICAgIFRoaXMg
d2lsbCBjcmVhdGUgYW5kIGluc3RhbGwgb250byB0aGUgbG9jYWwgbWFjaGluZS4gSXQgd2lsbCBi
dWlsZAogICAgdGhlIHhlbiBiaW5hcnkgKHhlbi5neiksIHRoZSB0b29scyBhbmQgdGhlIGRvY3Vt
ZW50YXRpb24uCiAKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIGNvbmZpZy9U
b29scy5tay5pbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi9jb25maWcvVG9vbHMubWsuaW4JVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEyICswMTAwCkBA
IC0wLDAgKzEsNTAgQEAKKyMgUHJlZml4IGFuZCBpbnN0YWxsIGZvbGRlcgorUFJFRklYICAgICAg
ICAgICAgICA6PSBAcHJlZml4QAorTElCTEVBRkRJUl94ODZfNjQgICA6PSBATElCX1BBVEhACisK
KyMgQSBkZWJ1ZyBidWlsZCBvZiB0b29scz8KK2RlYnVnICAgICAgICAgICAgICAgOj0gQGRlYnVn
QAorCisjIFRvb2xzIHBhdGgKK0JJU09OICAgICAgICAgICAgICAgOj0gQEJJU09OQAorRkxFWCAg
ICAgICAgICAgICAgICA6PSBARkxFWEAKK1BZVEhPTiAgICAgICAgICAgICAgOj0gQFBZVEhPTkAK
K1BZVEhPTl9QQVRIICAgICAgICAgOj0gQFBZVEhPTlBBVEhACitQRVJMICAgICAgICAgICAgICAg
IDo9IEBQRVJMQAorQlJDVEwgICAgICAgICAgICAgICA6PSBAQlJDVExACitJUCAgICAgICAgICAg
ICAgICAgIDo9IEBJUEAKK0NVUkxfQ09ORklHICAgICAgICAgOj0gQENVUkxACitYTUwyX0NPTkZJ
RyAgICAgICAgIDo9IEBYTUxACitCQVNIICAgICAgICAgICAgICAgIDo9IEBCQVNIQAorWEdFVFRU
RVhUICAgICAgICAgICA6PSBAWEdFVFRFWFRACisKKyMgRXh0cmEgZm9sZGVyIGZvciBsaWJzL2lu
Y2x1ZGVzCitQUkVQRU5EX0lOQ0xVREVTICAgIDo9IEBQUkVQRU5EX0lOQ0xVREVTQAorUFJFUEVO
RF9MSUIgICAgICAgICA6PSBAUFJFUEVORF9MSUJACitBUFBFTkRfSU5DTFVERVMgICAgIDo9IEBB
UFBFTkRfSU5DTFVERVNACitBUFBFTkRfTElCICAgICAgICAgIDo9IEBBUFBFTkRfTElCQAorCisj
IEVuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxlIChieSBkZWZhdWx0LCBGbGFzaykuCitYU01fRU5B
QkxFICAgICAgICAgIDo9IEB4c21ACitGTEFTS19FTkFCTEUgICAgICAgIDo9IEB4c21ACisKKyMg
RG93bmxvYWQgR0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUCBvciBHSVQncyBvd24gcHJvdG9jb2w/
CisjIEdJVCdzIHByb3RvY29sIGlzIGZhc3RlciBhbmQgbW9yZSByb2J1c3QsIHdoZW4gaXQgd29y
a3MgYXQgYWxsIChmaXJld2FsbHMKKyMgbWF5IGJsb2NrIGl0KS4gV2UgbWFrZSBpdCB0aGUgZGVm
YXVsdCwgYnV0IGlmIHlvdXIgR0lUIHJlcG9zaXRvcnkgZG93bmxvYWRzCisjIGZhaWwgb3IgaGFu
ZywgcGxlYXNlIHNwZWNpZnkgR0lUX0hUVFA9eSBpbiB5b3VyIGVudmlyb25tZW50LgorR0lUX0hU
VFAgICAgICAgICAgICA6PSBAZ2l0aHR0cEAKKworIyBPcHRpb25hbCBjb21wb25lbnRzCitYRU5T
VEFUX1hFTlRPUCAgICAgIDo9IEBtb25pdG9yc0AKK1ZUUE1fVE9PTFMgICAgICAgICAgOj0gQHZ0
cG1ACitMSUJYRU5BUElfQklORElOR1MgIDo9IEB4YXBpQAorUFlUSE9OX1RPT0xTICAgICAgICA6
PSBAcHl0aG9udG9vbHNACitPQ0FNTF9UT09MUyAgICAgICAgIDo9IEBvY2FtbHRvb2xzQAorQ09O
RklHX01JTklURVJNICAgICA6PSBAbWluaXRlcm1ACitDT05GSUdfTE9NT1VOVCAgICAgIDo9IEBs
b21vdW50QAorCisjU3lzdGVtIG9wdGlvbnMKK0NPTkZJR19TWVNURU1fTElCQUlPOj0gQHN5c3Rl
bV9haW9ACitDT05GSUdfTElCSUNPTlYgICAgIDo9IEBsaWJpY29udkAKK0NPTkZJR19HQ1JZUFQg
ICAgICAgOj0gQGxpYmdjcnlwdEAKK0NPTkZJR19FWFQyRlMgICAgICAgOj0gQGxpYmV4dDJmc0AK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIGNvbmZpZ3VyZQotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9jb25maWd1cmUJVHVlIEZl
YiAyMSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoIC1lCitj
ZCB0b29scyAmJiAuL2NvbmZpZ3VyZSAkQApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3
MTBmNmMgdG9vbHMvTWFrZWZpbGUKLS0tIGEvdG9vbHMvTWFrZWZpbGUJTW9uIEZlYiAyMCAxODoz
NDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL01ha2VmaWxlCVR1ZSBGZWIgMjEgMDE6NDA6MDQg
MjAxMiArMDEwMApAQCAtNiw3ICs2LDYgQEAgU1VCRElSUy1saWJhaW8gOj0gbGliYWlvCiBlbmRp
ZgogCiBTVUJESVJTLXkgOj0KLVNVQkRJUlMteSArPSBjaGVjawogU1VCRElSUy15ICs9IGluY2x1
ZGUKIFNVQkRJUlMteSArPSBsaWJ4YwogU1VCRElSUy15ICs9IGZsYXNrCkBAIC03OSw2ICs3OCw4
IEBAIGNsZWFuOiBzdWJkaXJzLWNsZWFuCiBkaXN0Y2xlYW46IHN1YmRpcnMtZGlzdGNsZWFuCiAJ
cm0gLXJmIHFlbXUteGVuLXRyYWRpdGlvbmFsLWRpciBxZW11LXhlbi10cmFkaXRpb25hbC1kaXIt
cmVtb3RlCiAJcm0gLXJmIHFlbXUteGVuLWRpciBxZW11LXhlbi1kaXItcmVtb3RlCisJcm0gLXJm
IC4uL2NvbmZpZy9Ub29scy5tayBjb25maWcuaCBjb25maWcubG9nIGNvbmZpZy5zdGF0dXMgXAor
CQljb25maWcuY2FjaGUgYXV0b200dGUuY2FjaGUKIAogaWZuZXEgKCQoWEVOX0NPTVBJTEVfQVJD
SCksJChYRU5fVEFSR0VUX0FSQ0gpKQogSU9FTVVfQ09ORklHVVJFX0NST1NTID89IC0tY3B1PSQo
WEVOX1RBUkdFVF9BUkNIKSBcCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0
b29scy9SdWxlcy5tawotLS0gYS90b29scy9SdWxlcy5tawlNb24gRmViIDIwIDE4OjM0OjE0IDIw
MTIgKzAwMDAKKysrIGIvdG9vbHMvUnVsZXMubWsJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEyICsw
MTAwCkBAIC00LDYgKzQsNyBAQAogYWxsOgogCiBpbmNsdWRlICQoWEVOX1JPT1QpL0NvbmZpZy5t
aworaW5jbHVkZSAkKFhFTl9ST09UKS9jb25maWcvVG9vbHMubWsKIAogZXhwb3J0IF9JTlNUQUxM
IDo9ICQoSU5TVEFMTCkKIElOU1RBTEwgPSAkKFhFTl9ST09UKS90b29scy9jcm9zcy1pbnN0YWxs
CkBAIC04MCw4ICs4MSw2IEBAIGNoZWNrLSQoQ09ORklHX1g4NikgPSAkKGNhbGwgY2MtdmVyLWNo
ZWMKICAgICAgICAgICAgICAgICAgICAgICAgICJYZW4gcmVxdWlyZXMgYXQgbGVhc3QgZ2NjLTMu
NCIpCiAkKGV2YWwgJChjaGVjay15KSkKIAotX1BZVEhPTl9QQVRIIDo9ICQoc2hlbGwgd2hpY2gg
JChQWVRIT04pKQotUFlUSE9OX1BBVEggPz0gJChfUFlUSE9OX1BBVEgpCiBJTlNUQUxMX1BZVEhP
Tl9QUk9HID0gXAogCSQoWEVOX1JPT1QpL3Rvb2xzL3B5dGhvbi9pbnN0YWxsLXdyYXAgIiQoUFlU
SE9OX1BBVEgpIiAkKElOU1RBTExfUFJPRykKIApAQCAtMTA5LDMgKzEwOCw3IEBAIHN1YmRpci1h
bGwtJSBzdWJkaXItY2xlYW4tJSBzdWJkaXItaW5zdGEKIAogc3ViZGlyLWRpc3RjbGVhbi0lOiAu
cGhvbnkKIAkkKE1BS0UpIC1DICQqIGNsZWFuCisKKyQoWEVOX1JPT1QpL2NvbmZpZy9Ub29scy5t
azoKKwlAZWNobyAiWW91IGhhdmUgdG8gcnVuIC4vY29uZmlndXJlIGJlZm9yZSBidWlsZGluZyBv
ciBpbnN0YWxsaW5nIHRoZSB0b29scyIKKwlAZXhpdCAxCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IGI2MDcxYzcxMGY2YyB0b29scy9ibGt0YXAvZHJpdmVycy9NYWtlZmlsZQotLS0gYS90b29scy9i
bGt0YXAvZHJpdmVycy9NYWtlZmlsZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysr
IGIvdG9vbHMvYmxrdGFwL2RyaXZlcnMvTWFrZWZpbGUJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEy
ICswMTAwCkBAIC0xMyw3ICsxMyw3IEBAIENGTEFHUyAgICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3Jl
KQogQ0ZMQUdTICAgKz0gLUkgJChNRU1TSFJfRElSKQogQ0ZMQUdTICAgKz0gLURfR05VX1NPVVJD
RQogCi1pZmVxICgkKHNoZWxsIC4gLi9jaGVja19nY3J5cHQgJChDQykpLHllcykKK2lmZXEgKCRD
T05GSUdfR0NSWVBULHkpCiBDRkxBR1MgKz0gLURVU0VfR0NSWVBUCiBDUllQVF9MSUIgOj0gLWxn
Y3J5cHQKIGVsc2UKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2Js
a3RhcC9kcml2ZXJzL2NoZWNrX2djcnlwdAotLS0gYS90b29scy9ibGt0YXAvZHJpdmVycy9jaGVj
a19nY3J5cHQJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE0ICswLDAgQEAKLSMhL2Jpbi9zaAot
Ci1jYXQgPiAuZ2NyeXB0LmMgPDwgRU9GCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci1pbnQgbWFpbih2
b2lkKSB7IHJldHVybiAwOyB9Ci1FT0YKLQotaWYgJDEgLW8gLmdjcnlwdCAuZ2NyeXB0LmMgLWxn
Y3J5cHQgMj4vZGV2L251bGwgOyB0aGVuCi0gIGVjaG8gInllcyIKLWVsc2UKLSAgZWNobyAibm8i
Ci1maQotCi1ybSAtZiAuZ2NyeXB0KgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBm
NmMgdG9vbHMvY2hlY2svTWFrZWZpbGUKLS0tIGEvdG9vbHMvY2hlY2svTWFrZWZpbGUJTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDI2ICswLDAgQEAKLVhFTl9ST09UID0gJChDVVJESVIpLy4uLy4u
Ci1pbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCi0KLSMgRXhwb3J0IHRoZSBuZWNl
c3NhcnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgdGVzdHMKLWV4cG9ydCBQWVRIT04K
LWV4cG9ydCBMSUJYRU5BUElfQklORElOR1MKLWV4cG9ydCBDSEVDS19JTkNMVURFUwotZXhwb3J0
IENIRUNLX0xJQgotZXhwb3J0IENPTkZJR19TWVNURU1fTElCQUlPCi0KLS5QSE9OWTogYWxsIGlu
c3RhbGwKLWFsbCBpbnN0YWxsOiBjaGVjay1idWlsZAotCi0jIENoZWNrIHRoaXMgbWFjaGluZSBp
cyBPSyBmb3IgYnVpbGRpbmcgb24uCi0uUEhPTlk6IGNoZWNrLWJ1aWxkCi1jaGVjay1idWlsZDoK
LQkuL2NoayBidWlsZAotCi0jIENoZWNrIHRoaXMgbWFjaGluZSBpcyBPSyBmb3IgaW5zdGFsbGlu
ZyBvbi4KLS5QSE9OWTogY2hlY2staW5zdGFsbAotY2hlY2staW5zdGFsbDoKLQkuL2NoayBpbnN0
YWxsCi0KLS5QSE9OWTogY2xlYW4KLWNsZWFuOgotCS4vY2hrIGNsZWFuCmRpZmYgLXIgY2E4MGVj
YTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0b29scy9jaGVjay9SRUFETUUKLS0tIGEvdG9vbHMvY2hl
Y2svUkVBRE1FCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMCArMCwwIEBACi1DaGVja3MgZm9y
IHRoZSBzdWl0YWJpbGl0eSBvZiBhIG1hY2hpbmUgZm9yIFhlbiBidWlsZCBvciBpbnN0YWxsLgot
VG8gY2hlY2sgZm9yIGJ1aWxkIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hrIGJ1aWxk
Ci0KLVRvIGNoZWNrIGZvciBpbnN0YWxsIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hr
IGluc3RhbGwKLQotVGhlIGNoayBzY3JpcHQgd2lsbCBydW4gY2hlY2tzIGluIHRoaXMgZGlyZWN0
b3J5IGFuZCBwcmludAotdGhlIG9uZXMgdGhhdCBmYWlsZWQuIEl0IHByaW50cyBub3RoaW5nIGlm
IGNoZWNrcyBzdWNjZWVkLgotVGhlIGNoayBzY3JpcHQgZXhpdHMgd2l0aCAwIG9uIHN1Y2Nlc3Mg
YW5kIDEgb24gZmFpbHVyZS4KLQotVGhlIGNoayBzY3JpcHQgcnVucyBleGVjdXRhYmxlIGZpbGVz
IGluIHRoaXMgZGlyZWN0b3J5IHdob3NlCi1uYW1lcyBiZWdpbiB3aXRoICdjaGVja18nLiBGaWxl
cyBjb250YWluaW5nIENIRUNLLUJVSUxECi1hcmUgcnVuIGZvciB0aGUgYnVpbGQgY2hlY2ssIGFu
ZCBmaWxlcyBjb250YWluaW5nIENIRUNLLUlOU1RBTEwKLWFyZSBydW4gZm9yIHRoZSBpbnN0YWxs
IGNoZWNrLgotCi1EZXRhaWxlZCBvdXRwdXQgZnJvbSB0aGUgY2hlY2sgc2NyaXB0cyBpcyBpbiAu
Y2hrYnVpbGQgZm9yIGJ1aWxkCi1hbmQgLmNoa2luc3RhbGwgZm9yIGluc3RhbGwuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBmNmMg
dG9vbHMvY2hlY2svY2hlY2tfYnJjdGwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfYnJjdGwJTW9u
IEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1JTlNU
QUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotT3BlbkJTRHxOZXRCU0R8RnJlZUJT
RCkKLQloYXNfb3JfZmFpbCBicmNvbmZpZyA7OwotTGludXgpCi0JaGFzX29yX2ZhaWwgYnJjdGwg
OzsKLSopCi0JZmFpbCAidW5rbm93biBPUyIgOzsKLWVzYWMKZGlmZiAtciBjYTgwZWNhOWNmYTMg
LXIgYjYwNzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX2NyeXB0b19saWIKLS0tIGEvdG9vbHMv
Y2hlY2svY2hlY2tfY3J5cHRvX2xpYglNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysr
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTEgKzAsMCBA
QAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNo
Ci0KLWNhc2UgJE9TIGluCi1GcmVlQlNEfE5ldEJTRHxPcGVuQlNEKQotCWV4aXQgMCA7OwotZXNh
YwotCi1oYXNfbGliIGxpYmNyeXB0by5zbyB8fCBmYWlsICJtaXNzaW5nIGxpYmNyeXB0by5zbyIK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX2N1
cmwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfY3VybAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIg
KzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MTMgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAu
L2Z1bmNzLnNoCi0KLWlmIFsgIiRMSUJYRU5BUElfQklORElOR1MiICE9ICJ5IiBdOyB0aGVuCi0J
ZWNobyAtbiAidW51c2VkLCAiCi0JZXhpdCAwCi1maQotCi1oYXNfb3JfZmFpbCBjdXJsLWNvbmZp
ZwotY3VybF9saWJzPWBjdXJsLWNvbmZpZyAtLWxpYnNgIHx8IGZhaWwgImN1cmwtY29uZmlnIC0t
bGlicyBmYWlsZWQiCi10ZXN0X2xpbmsgJGN1cmxfbGlicyB8fCBmYWlsICJkZXBlbmRlbmN5IGxp
YnJhcmllcyBmb3IgY3VybCBhcmUgbWlzc2luZyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYw
NzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX2lwcm91dGUKLS0tIGEvdG9vbHMvY2hlY2svY2hl
Y2tfaXByb3V0ZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTUgKzAsMCBAQAotIyEvYmluL3No
Ci0jIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLVBBVEg9L3NiaW46JFBBVEgKLQot
Y2FzZSAkT1MgaW4KLU9wZW5CU0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwgaWZjb25m
aWcgOzsKLUxpbnV4KQotCWhhc19vcl9mYWlsIGlwIDs7Ci0qKQotCWZhaWwgInVua25vd24gT1Mi
IDs7Ci1lc2FjCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0b29scy9jaGVj
ay9jaGVja19saWJhaW9fZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfbGliYWlvX2RldmVs
CU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0st
QlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9
IFgieSIgXSA7IHRoZW4KLSAgICBleGl0IDAKLWZpCi1pZiAhIGhhc19oZWFkZXIgbGliYWlvLmgg
OyB0aGVuCi0gICAgZmFpbCAiY2FuJ3QgZmluZCBsaWJhaW8gaGVhZGVycywgaW5zdGFsbCBsaWJh
aW8gZGV2ZWwgcGFja2FnZSBvciBzZXQgQ09ORklHX1NZU1RFTV9MSUJBSU89biIKLWZpCmRpZmYg
LXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0b29scy9jaGVjay9jaGVja19saWJhaW9f
bGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19saWIJTW9uIEZlYiAyMCAxODozNDox
NCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CkBAIC0xLDkgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwK
LQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9IFgieSIg
XSA7IHRoZW4KLSAgICBleGl0IDAKLWZpCi1oYXNfbGliIGxpYmFpby5zbyB8fCBmYWlsICJjYW4n
dCBmaW5kIGxpYmFpbyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xz
L2NoZWNrL2NoZWNrX29wZW5zc2xfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfb3BlbnNz
bF9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLSMg
Q0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgb3BlbnNzbC9tZDUuaCB8
fCBmYWlsICJtaXNzaW5nIG9wZW5zc2wgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIg
YjYwNzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbgotLS0gYS90b29scy9jaGVjay9j
aGVja19weXRob24JTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9z
aAotIyBDSEVDSy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0
IC16ICR7UFlUSE9OfTsgdGhlbgotICBQWVRIT049cHl0aG9uCi1maQotCi0ke1BZVEhPTn0gLWMg
JwotaW1wb3J0IHN5cwotc3lzLmV4aXQoc3lzLnZlcnNpb25faW5mb1swXSA8IDIgb3Igc3lzLnZl
cnNpb25faW5mb1sxXSA8IDMpCi0nIHx8IGZhaWwgIm5lZWQgcHl0aG9uIHZlcnNpb24gPj0gMi4z
IgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBmNmMgdG9vbHMvY2hlY2svY2hlY2tf
cHl0aG9uX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl9kZXZlbAlNb24gRmVi
IDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKQEAgLTEsMTcgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0K
LS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgotICBQWVRIT049cHl0
aG9uCi1maQotaGFzX29yX2ZhaWwgJHtQWVRIT059Ci0KLSR7UFlUSE9OfSAtYyAnCi1pbXBvcnQg
b3MucGF0aCwgc3lzCi1mb3IgcCBpbiBzeXMucGF0aDoKLQlpZiBvcy5wYXRoLmV4aXN0cyhwICsg
Ii9jb25maWcvTWFrZWZpbGUiKToKLQkJc3lzLmV4aXQoMCkKLXN5cy5leGl0KDEpCi0nIHx8IGZh
aWwgImNhbid0IGZpbmQgcHl0aG9uIGRldmVsIGZpbGVzIgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAt
ciBiNjA3MWM3MTBmNmMgdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX3htbAotLS0gYS90b29scy9j
aGVjay9jaGVja19weXRob25feG1sCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBA
Ci0jIS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotaWYgdGVzdCAt
eiAke1BZVEhPTn07IHRoZW4KLSAgUFlUSE9OPXB5dGhvbgotZmkKLWhhc19vcl9mYWlsICR7UFlU
SE9OfQotCi0ke1BZVEhPTn0gLWMgJ2ltcG9ydCB4bWwuZG9tLm1pbmlkb20nIDI+L2Rldi9udWxs
IHx8IFwKLWZhaWwgImNhbid0IGltcG9ydCB4bWwuZG9tLm1pbmlkb20iCmRpZmYgLXIgY2E4MGVj
YTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0b29scy9jaGVjay9jaGVja191ZGV2Ci0tLSBhL3Rvb2xz
L2NoZWNrL2NoZWNrX3VkZXYJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIyICswLDAgQEAKLSMh
L2Jpbi9zaAotIyBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgot
T3BlbkJTRHxOZXRCU0R8RnJlZUJTRCkKLQloYXNfb3JfZmFpbCB2bmNvbmZpZwotCTs7Ci1MaW51
eCkKLQloYXMgL3NiaW4vdWRldmFkbSAmJiBcCi0JCXVkZXZ2ZXI9YC9zYmluL3VkZXZhZG0gaW5m
byAtViB8IGF3ayAne3ByaW50ICRORn0nYAotCVsgLXogIiR1ZGV2dmVyIiBdICYmIGhhc19vcl9m
YWlsIHVkZXZpbmZvICYmIFwKLQkJdWRldnZlcj1gdWRldmluZm8gLVYgfCBhd2sgJ3twcmludCAk
TkZ9J2AKLQlbICIkdWRldnZlciIgLWdlIDU5IF0gMj4vZGV2L251bGwgfHwgXAotCQloYXMgaG90
cGx1ZyB8fCBcCi0JCWZhaWwgInVkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9uIDU5
IG9yIGxhdGVyIgotCTs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiCi0JOzsKLWVzYWMKZGlmZiAt
ciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX3V1aWRfZGV2
ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfdXVpZF9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0
IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsNyArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNo
Ci0KLWhhc19oZWFkZXIgdXVpZC5oIHx8IFwKLWhhc19oZWFkZXIgdXVpZC91dWlkLmggfHwgZmFp
bCAibWlzc2luZyB1dWlkIGhlYWRlcnMgKHBhY2thZ2UgdXVpZC1kZXYpIgpkaWZmIC1yIGNhODBl
Y2E5Y2ZhMyAtciBiNjA3MWM3MTBmNmMgdG9vbHMvY2hlY2svY2hlY2tfeDExX2RldmVsCi0tLSBh
L3Rvb2xzL2NoZWNrL2NoZWNrX3gxMV9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAw
MDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOSAr
MCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19o
ZWFkZXIgWDExL2tleXN5bWRlZi5oIHx8IFwKLWhhc19oZWFkZXIgL3Vzci9YMTFSNi9pbmNsdWRl
L1gxMS9rZXlzeW1kZWYuaCB8fCBcCi1oYXNfaGVhZGVyIC91c3IvWDExUjcvaW5jbHVkZS9YMTEv
a2V5c3ltZGVmLmggfHwgXAotd2FybmluZyAiY2FuJ3QgZmluZCBYMTEgaGVhZGVycyIKZGlmZiAt
ciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX3hnZXR0ZXh0
Ci0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3hnZXR0ZXh0CU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAx
MiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQot
aGFzX29yX2ZhaWwgeGdldHRleHQKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZj
IHRvb2xzL2NoZWNrL2NoZWNrX3htbDIKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfeG1sMglNb24g
RmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKQEAgLTEsMTQgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxE
IENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgISAiJExJQlhFTkFQSV9CSU5E
SU5HUyIgPSAieSIgXQotdGhlbgotICAgIGVjaG8gLW4gInVudXNlZCwgIgotICAgIGV4aXQgMAot
ZmkKLQotaGFzX29yX2ZhaWwgeG1sMi1jb25maWcKLXhtbDJfbGlicz1geG1sMi1jb25maWcgLS1s
aWJzYCB8fCBmYWlsICJ4bWwyLWNvbmZpZyAtLWxpYnMgZmFpbGVkIgotdGVzdF9saW5rICR4bWwy
X2xpYnMgfHwgZmFpbCAiZGVwZW5kZW5jeSBsaWJyYXJpZXMgZm9yIHhtbDIgYXJlIG1pc3Npbmci
CmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0b29scy9jaGVjay9jaGVja195
YWpsX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3lhamxfZGV2ZWwJTW9uIEZlYiAyMCAx
ODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCkBAIC0xLDggKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9m
dW5jcy5zaAotCi1oYXNfaGVhZGVyIHlhamwveWFqbF9wYXJzZS5oIHx8IGZhaWwgImNhbid0IGZp
bmQgeWFqbC95YWpsX3BhcnNlLmgiCi1oYXNfaGVhZGVyIHlhamwveWFqbF9nZW4uaCB8fCBmYWls
ICJjYW4ndCBmaW5kIHlhamwveWFqbF9nZW4uaCIKLWhhc19saWIgbGlieWFqbC5zbyB8fCBmYWls
ICJjYW4ndCBmaW5kIGxpYnlhamwuc28iCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcx
MGY2YyB0b29scy9jaGVjay9jaGVja196bGliX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNr
X3psaWJfZGV2ZWwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEvYmluL3No
Ci0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHpsaWIuaCB8fCBm
YWlsICJjYW4ndCBmaW5kIHpsaWIgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYw
NzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoZWNrX3psaWJfbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2No
ZWNrX3psaWJfbGliCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBACi0jIS9iaW4v
c2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAk
T1MgaW4KLUZyZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwCi0JOzsKLWVzYWMKLQotaGFz
X2xpYiBsaWJ6LnNvIHx8IGZhaWwgImNhbid0IGZpbmQgemxpYiIKZGlmZiAtciBjYTgwZWNhOWNm
YTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2NoZWNrL2NoawotLS0gYS90b29scy9jaGVjay9jaGsJ
TW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1mdW5jX3Vz
YWdlICgpCi17Ci0gICAgZWNobyAiVXNhZ2U6IgotICAgIGVjaG8gIgkkMCBbYnVpbGR8aW5zdGFs
bHxjbGVhbl0iCi0gICAgZWNobwotICAgIGVjaG8gIkNoZWNrIHN1aXRhYmlsaXR5IGZvciBYZW4g
YnVpbGQgb3IgaW5zdGFsbC4iCi0gICAgZWNobyAiRXhpdCB3aXRoIDAgaWYgT0ssIDEgaWYgbm90
LiIKLSAgICBlY2hvCi0gICAgZWNobyAiQ2FsbGluZyB3aXRoICdjbGVhbicgcmVtb3ZlcyBnZW5l
cmF0ZWQgZmlsZXMuIgotICAgIGV4aXQgMQotfQotCi1QQVRIPSRQQVRIOi9zYmluOi91c3Ivc2Jp
bgotT1M9YHVuYW1lIC1zYAotZXhwb3J0IFBBVEggT1MKLQotaWYgWyAiJE9TIiA9ICJTdW5PUyIg
XTsgdGhlbgotCWV4aXQgMAotZmkKLQotY2FzZSAkMSBpbgotICAgIGJ1aWxkKQotICAgICAgICBj
aGVjaz0iQ0hFQ0stQlVJTEQiCi0gICAgICAgIDs7Ci0gICAgaW5zdGFsbCkKLSAgICAgICAgY2hl
Y2s9IkNIRUNLLUlOU1RBTEwiCi0gICAgICAgIDs7Ci0gICAgY2xlYW4pCi0gICAgICAgIGV4aXQg
MAotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGZ1bmNfdXNhZ2UKLSAgICAgICAgOzsKLWVz
YWMKLQotZmFpbGVkPTAKLQotZWNobyAiWGVuICR7Y2hlY2t9ICIgYGRhdGVgCi1mb3IgZiBpbiBj
aGVja18qIDsgZG8KLSAgICBjYXNlICRmIGluCi0gICAgICAgICp+KQotICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICA7OwotICAgIGVz
YWMKLSAgICBpZiAhIFsgLXggJGYgXSA7IHRoZW4KLSAgICAgICAgY29udGludWUKLSAgICBmaQot
ICAgIGlmICEgZ3JlcCAtRnEgIiRjaGVjayIgJGYgOyB0aGVuCi0gICAgICAgIGNvbnRpbnVlCi0g
ICAgZmkKLSAgICBlY2hvIC1uICJDaGVja2luZyAkZjogIgotICAgIGlmIC4vJGYgMj4mMSA7IHRo
ZW4KLSAgICAgICAgZWNobyBPSwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkPTEKLSAgICBmaQot
ZG9uZQotCi1leGl0ICR7ZmFpbGVkfQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBm
NmMgdG9vbHMvY2hlY2svZnVuY3Muc2gKLS0tIGEvdG9vbHMvY2hlY2svZnVuY3Muc2gJTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDEwNiArMCwwIEBACi0jIGhhcyBpcyB0aGUgc2FtZSBhcyB3aGlj
aCwgZXhjZXB0IGl0IGhhbmRsZXMgY3Jvc3MgZW52aXJvbm1lbnRzCi1oYXMoKSB7Ci0JaWYgWyAt
eiAiJENST1NTX0NPTVBJTEUiIF07IHRoZW4KLQkJY29tbWFuZCB3aGljaCAiJEAiCi0JCXJldHVy
biAkPwotCWZpCi0KLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0
byBwcmV2ZW50IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBJRlMKLQkoCi0JSUZTPToKLQlmb3IgcCBp
biAkUEFUSDsgZG8KLQkJaWYgWyAteCAiJENST1NTX1NZU19ST09ULyRwLyQxIiBdOyB0aGVuCi0J
CQllY2hvICIkQ1JPU1NfU1lTX1JPT1QvJHAvJDEiCi0JCQlyZXR1cm4gMAotCQlmaQotCWRvbmUK
LQlyZXR1cm4gMQotCSkKLX0KLQotaGFzX29yX2ZhaWwoKSB7Ci0JaGFzICIkMSIgPi9kZXYvbnVs
bCB8fCBmYWlsICJjYW4ndCBmaW5kICQxIgotfQotCi1oYXNfaGVhZGVyKCkgewotCWNoZWNrX3N5
c19yb290IHx8IHJldHVybiAxCi0KLQljYXNlICQxIGluCi0JCS8qKSA7OwotCQkqKQotCQlpZiBb
IC1yICIkQ1JPU1NfU1lTX1JPT1QvdXNyL2luY2x1ZGUvJDEiIF07IHRoZW4KLQkJCXJldHVybiAw
Ci0JCWZpCi0JCWZvciBwYXRoIGluICR7Q0hFQ0tfSU5DTFVERVN9OyBkbwotCQkJaWYgWyAtciAi
JENST1NTX1NZU19ST09UJHtwYXRofS8kMSIgXTsgdGhlbgotCQkJCXJldHVybiAwCi0JCQlmaQot
CQlkb25lCi0JCTs7Ci0JZXNhYwotCi0JcmV0dXJuIDEKLX0KLQotaGFzX2xpYigpIHsKLQljaGVj
a19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50IHBvbGx1dGlv
biBvZiBjYWxsZXIncyBlbnZpcm9ubWVudAotCSgKLQlQQVRIPS9zYmluOiRQQVRIICAgICAgICAj
IGZvciBsZGNvbmZpZwotCUxJQlJBUklFUz0iJENIRUNLX0xJQiAvdXNyL2xpYiIKLQotCSMgVGhp
cyByZWxhdGl2ZWx5IGNvbW1vbiBpbiBhIHN5cy1yb290OyBsaWJzIGFyZSBpbnN0YWxsZWQgYnV0
Ci0JIyBsZGNvbmZpZyBoYXNuJ3QgcnVuIHRoZXJlLCBzbyBsZGNvbmZpZyAtcCB3b24ndCB3b3Jr
LgotCWlmIFsgIiRPUyIgPSBMaW51eCAtYSAhIC1mICIkQ1JPU1NfU1lTX1JPT1QvZXRjL2xkLnNv
LmNhY2hlIiBdOyB0aGVuCi0JICAgIGVjaG8gIlBsZWFzZSBydW4gbGRjb25maWcgLXIgXCIkQ1JP
U1NfU1lTX1JPT1RcIiB0byBnZW5lcmF0ZSBsZC5zby5jYWNoZSIKLQkgICAgIyBmYWxsIHRocm91
Z2g7IGxkY29uZmlnIHRlc3QgYmVsb3cgc2hvdWxkIGZhaWwKLQlmaQotCWlmIFsgIiR7T1N9IiA9
ICJMaW51eCIgXTsgdGhlbgotCQlsZGNvbmZpZyAtcCAke0NST1NTX1NZU19ST09UKy1yICIkQ1JP
U1NfU1lTX1JPT1QifSB8IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlpZiBbICIk
e09TfSIgPSAiTmV0QlNEIiBdOyB0aGVuCi0JCWxzIC0xICR7TElCUkFSSUVTfSB8IGdyZXAgLUZx
ICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlyZXR1cm4gMQotCSkKLX0KLQotdGVzdF9saW5rKCkg
ewotCSMgc3Vic2hlbGwgdG8gdHJhcCByZW1vdmFsIG9mIHRtcGZpbGUKLQkoCi0JdW5zZXQgdG1w
ZmlsZQotCXRyYXAgJ3JtIC1mICIkdG1wZmlsZSI7IGV4aXQnIDAgMSAyIDE1Ci0JdG1wZmlsZT1g
bWt0ZW1wYCB8fCByZXR1cm4gMQotCWxkICIkQCIgLW8gIiR0bXBmaWxlIiA+L2Rldi9udWxsIDI+
JjEKLQlyZXR1cm4gJD8KLQkpCi19Ci0KLSMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGNvbW1vbmx5
IGFib3ZlCi1jaGVja19zeXNfcm9vdCgpIHsKLQlbIC16ICIkQ1JPU1NfQ09NUElMRSIgXSAmJiBy
ZXR1cm4gMAotCWlmIFsgLXogIiRDUk9TU19TWVNfUk9PVCIgXTsgdGhlbgotCQllY2hvICJwbGVh
c2Ugc2V0IENST1NTX1NZU19ST09UIGluIHRoZSBlbnZpcm9ubWVudCIKLQkJcmV0dXJuIDEKLQlm
aQotCWlmIFsgISAtZCAiJENST1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8gIm5vIHN5cy1y
b290IGZvdW5kIGF0ICRDUk9TU19TWVNfUk9PVCIKLQkJcmV0dXJuIDEKLQlmaQotfQotCi13YXJu
aW5nKCkgewotCWVjaG8KLQllY2hvICIgKioqIGBiYXNlbmFtZSAiJDAiYCBGQUlMRUQkeyorOiAk
Kn0iCi19Ci0KLWZhaWwoKSB7Ci0JZWNobwotCWVjaG8gIiAqKiogYGJhc2VuYW1lICIkMCJgIEZB
SUxFRCR7Kis6ICQqfSIKLQlleGl0IDEKLX0KZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFj
NzEwZjZjIHRvb2xzL2NvbmZpZy5oLmluCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2NvbmZpZy5oLmluCVR1ZSBGZWIgMjEgMDE6NDA6MDQg
MjAxMiArMDEwMApAQCAtMCwwICsxLDE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICogYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLjEgb25seS4gd2l0aCB0aGUgc3BlY2lhbAorICog
ZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPHlhamwveWFqbF92ZXJzaW9uLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
WUFKTF9ZQUpMX1ZFUlNJT05fSApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBmNmMg
dG9vbHMvY29uZmlndXJlLmFjCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL3Rvb2xzL2NvbmZpZ3VyZS5hYwlUdWUgRmViIDIxIDAxOjQwOjA0IDIwMTIg
KzAxMDAKQEAgLTAsMCArMSwxOTIgQEAKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0
aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KKworQUNfUFJFUkVRKFsy
LjY3XSkKK0FDX0lOSVQoW1hlbiBIeXBlcnZpc29yXSwgbTRfZXN5c2NtZChbLi4vdmVyc2lvbi5z
aCAuLi94ZW4vTWFrZWZpbGVdKSwKKyAgICBbeGVuLWRldmVsQGxpc3RzLnhlbnNvdXJjZS5jb21d
KQorQUNfQ09ORklHX1NSQ0RJUihbbGlieGwvbGlieGwuY10pCitBQ19DT05GSUdfRklMRVMoWy4u
L2NvbmZpZy9Ub29scy5ta10pCitBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorQUNfUFJF
RklYX0RFRkFVTFQoWy91c3JdKQorQUNfQ09ORklHX0FVWF9ESVIoWy5dKQorCisjIENoZWNrIGlm
IENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIHNldCBhbmQgcHJpbnQg
YSB3YXJuaW5nCisKK0FTX0lGKFt0ZXN0IC1uICIkQ0MkQ0ZMQUdTJExERkxBR1MkTElCUyRDUFBG
TEFHUyRDUFAiXSwgWworICAgIEFDX01TR19XQVJOKAorW1NldHRpbmcgQ0MsIENGTEFHUywgTERG
TEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIG5vdCBcCityZWNvbW1lbmRlZCwgdXNlIFBS
RVBFTkRfSU5DTFVERVMsIFBSRVBFTkRfTElCLCBcCitBUFBFTkRfSU5DTFVERVMgYW5kIEFQUEVO
RF9MSUIgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLl0pCitdKQorCitBQ19VU0VfU1lTVEVNX0VYVEVO
U0lPTlMKK0FDX0NBTk9OSUNBTF9IT1NUCisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKK200X2luY2x1
ZGUoW200L2VuYWJsZV9mZWF0dXJlLm00XSkKK200X2luY2x1ZGUoW200L2Rpc2FibGVfZmVhdHVy
ZS5tNF0pCittNF9pbmNsdWRlKFttNC9wYXRoX29yX2ZhaWwubTRdKQorbTRfaW5jbHVkZShbbTQv
cHl0aG9uX3htbC5tNF0pCittNF9pbmNsdWRlKFttNC9weXRob25fdmVyc2lvbi5tNF0pCittNF9p
bmNsdWRlKFttNC9weXRob25fZGV2ZWwubTRdKQorbTRfaW5jbHVkZShbbTQvdWRldi5tNF0pCitt
NF9pbmNsdWRlKFttNC9vY2FtbC5tNF0pCittNF9pbmNsdWRlKFttNC9kZWZhdWx0X2xpYi5tNF0p
CittNF9pbmNsdWRlKFttNC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTRdKQorbTRfaW5jbHVkZShbbTQv
dXVpZC5tNF0pCittNF9pbmNsdWRlKFttNC9wa2cubTRdKQorCisjIEVuYWJsZS9kaXNhYmxlIG9w
dGlvbnMKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbeHNtXSwKKyAgICBbRW5hYmxlIFhTTSBz
ZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNrKV0pCitBWF9BUkdfRU5BQkxFX0FORF9F
WFBPUlQoW2dpdGh0dHBdLCBbRG93bmxvYWQgR0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUF0pCitB
WF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFttb25pdG9yc10sCisgICAgW0Rpc2FibGUgeGVuc3Rh
dCBhbmQgeGVudG9wIG1vbml0b3JpbmcgdG9vbHNdKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JU
KFt2dHBtXSwgW0VuYWJsZSBWaXJ0dWFsIFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlXSkKK0FYX0FS
R19FTkFCTEVfQU5EX0VYUE9SVChbeGFwaV0sIFtFbmFibGUgWGVuIEFQSSBCaW5kaW5nc10pCitB
WF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtweXRob250b29sc10sIFtEaXNhYmxlIFB5dGhvbiB0
b29sc10pCitBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtvY2FtbHRvb2xzXSwgW0Rpc2FibGUg
T2NhbWwgdG9vbHNdKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFttaW5pdGVybV0sIFtFbmFi
bGUgbWluaXRlcm1dKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFtsb21vdW50XSwgW0VuYWJs
ZSBsb21vdW50XSkKK0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlQoW2RlYnVnXSwgW0Rpc2FibGUg
ZGVidWcgYnVpbGQgb2YgWGVuIGFuZCB0b29sc10pCisKK0FDX0FSR19WQVIoW1BSRVBFTkRfSU5D
TFVERVNdLAorICAgIFtMaXN0IG9mIGluY2x1ZGUgZm9sZGVycyB0byBwcmVwZW5kIHRvIENGTEFH
UyAod2l0aG91dCAtSSldKQorQUNfQVJHX1ZBUihbUFJFUEVORF9MSUJdLAorICAgIFtMaXN0IG9m
IGxpYnJhcnkgZm9sZGVycyB0byBwcmVwZW5kIHRvIExERkxBR1MgKHdpdGhvdXQgLUwpXSkKK0FD
X0FSR19WQVIoW0FQUEVORF9JTkNMVURFU10sCisgICAgW0xpc3Qgb2YgaW5jbHVkZSBmb2xkZXJz
IHRvIGFwcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpXSkKK0FDX0FSR19WQVIoW0FQUEVORF9M
SUJdLAorICAgIFtMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBhcHBlbmQgdG8gTERGTEFHUyAo
d2l0aG91dCAtTCldKQorCitBWF9TRVRfRkxBR1MKKworQUNfQVJHX1ZBUihbUFlUSE9OXSwgW1Bh
dGggdG8gdGhlIFB5dGhvbiBwYXJzZXJdKQorQUNfQVJHX1ZBUihbUEVSTF0sIFtQYXRoIHRvIFBl
cmwgcGFyc2VyXSkKK0FDX0FSR19WQVIoW0JSQ1RMXSwgW1BhdGggdG8gYnJjdGwgdG9vbF0pCitB
Q19BUkdfVkFSKFtJUF0sIFtQYXRoIHRvIGlwIHRvb2xdKQorQUNfQVJHX1ZBUihbQklTT05dLCBb
UGF0aCB0byBCaXNvbiBwYXJzZXIgZ2VuZXJhdG9yXSkKK0FDX0FSR19WQVIoW0ZMRVhdLCBbUGF0
aCB0byBGbGV4IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yXSkKK0FDX0FSR19WQVIoW0NVUkxd
LCBbUGF0aCB0byBjdXJsLWNvbmZpZyB0b29sXSkKK0FDX0FSR19WQVIoW1hNTF0sIFtQYXRoIHRv
IHhtbDItY29uZmlnIHRvb2xdKQorQUNfQVJHX1ZBUihbQkFTSF0sIFtQYXRoIHRvIGJhc2ggc2hl
bGxdKQorQUNfQVJHX1ZBUihbWEdFVFRFWFRdLCBbUGF0aCB0byB4Z2V0dHRleHQgdG9vbF0pCisK
KyMgQ2hlY2tzIGZvciBwcm9ncmFtcy4KK0FDX1BST0dfU0VECitBQ19QUk9HX0NDCitBQ19QUk9H
X0xOX1MKK0FDX1BST0dfTUFLRV9TRVQKK0FDX1BST0dfSU5TVEFMTAorQVhfUEFUSF9QUk9HX09S
X0ZBSUwoW1BFUkxdLCBbcGVybF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQlJDVExdLCBbYnJj
dGxdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0lQXSwgW2lwXSkKK0FYX1BBVEhfUFJPR19PUl9G
QUlMKFtCSVNPTl0sIFtiaXNvbl0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbRkxFWF0sIFtmbGV4
XSkKK0FTX0lGKFt0ZXN0ICJ4JHhhcGkiID0gInh5Il0sIFsKKyAgICBBWF9QQVRIX1BST0dfT1Jf
RkFJTChbQ1VSTF0sIFtjdXJsLWNvbmZpZ10pCisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1hN
TF0sIFt4bWwyLWNvbmZpZ10pCitdKQorQVNfSUYoW3Rlc3QgIngkb2NhbWx0b29scyIgPSAieHki
XSwgWworICAgIEFDX1BST0dfT0NBTUwKKyAgICBBU19JRihbdGVzdCAieCRPQ0FNTEMiID0gInhu
byJdLCBbCisgICAgICAgIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9vY2FtbHRvb2xzIiA9ICJ4eWVz
Il0sIFsKKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbT2NhbWwgdG9vbHMgZW5hYmxlZCwgYnV0
IHVuYWJsZSB0byBmaW5kIE9jYW1sXSldKQorICAgICAgICBvY2FtbHRvb2xzPSJuIgorICAgIF0p
CitdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0JBU0hdLCBbYmFzaF0pCitBU19JRihbdGVzdCAi
eCRweXRob250b29scyIgPSAieHkiXSwgWworICAgIEFTX0lGKFtlY2hvICIkUFlUSE9OIiB8IGdy
ZXAgLXEgIl4vIl0sIFsKKyAgICAgICAgUFlUSE9OUEFUSD0kUFlUSE9OCisgICAgICAgIFBZVEhP
Tj1gYmFzZW5hbWUgJFBZVEhPTlBBVEhgCisgICAgXSxbdGVzdCAteiAiJFBZVEhPTiJdLCBbUFlU
SE9OPSJweXRob24iXSwKKyAgICBbQUNfTVNHX0VSUk9SKFtQWVRIT04gc3BlY2lmaWVkLCBidXQg
aXMgbm90IGFuIGFic29sdXRlIHBhdGhdKV0pCisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1BZ
VEhPTlBBVEhdLCBbJFBZVEhPTl0pCisgICAgQVhfQ0hFQ0tfUFlUSE9OX1ZFUlNJT04oWzJdLCBb
M10pCisgICAgQVhfQ0hFQ0tfUFlUSE9OX1hNTCgpCisgICAgQVhfQ0hFQ0tfUFlUSE9OX0RFVkVM
KCkKK10pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbWEdFVFRFWFRdLCBbeGdldHRleHRdKQorQVhf
Q0hFQ0tfVURFVihbNTldKQorQVhfQ0hFQ0tfVVVJRAorUEtHX0NIRUNLX01PRFVMRVMoZ2xpYiwg
Z2xpYi0yLjApCisKKyMgQ2hlY2sgbGlicmFyeSBwYXRoCitBWF9ERUZBVUxUX0xJQgorCisjIENo
ZWNrcyBmb3IgbGlicmFyaWVzLgorQUNfQ0hFQ0tfTElCKFthaW9dLCBbaW9fc2V0dXBdLCBbc3lz
dGVtX2Fpbz0ieSJdLCBbc3lzdGVtX2Fpbz0ibiJdKQorQUNfU1VCU1Qoc3lzdGVtX2FpbykKK0FD
X0NIRUNLX0xJQihbY3J5cHRvXSwgW01ENV0sIFtdLCBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3Qg
ZmluZCBsaWJjcnlwdG9dKV0pCitBQ19DSEVDS19MSUIoW2V4dDJmc10sIFtleHQyZnNfb3BlbjJd
LCBbbGliZXh0MmZzPSJ5Il0sIFtsaWJleHQyZnM9Im4iXSkKK0FDX1NVQlNUKGxpYmV4dDJmcykK
K0FDX0NIRUNLX0xJQihbZ2NyeXB0XSwgW2djcnlfbWRfaGFzaF9idWZmZXJdLCBbbGliZ2NyeXB0
PSJ5Il0sIFtsaWJnY3J5cHQ9Im4iXSkKK0FDX1NVQlNUKGxpYmdjcnlwdCkKK0FDX0NIRUNLX0xJ
QihbcHRocmVhZF0sIFtwdGhyZWFkX2NyZWF0ZV0sIFtdICwKKyAgICBbQUNfTVNHX0VSUk9SKFtD
b3VsZCBub3QgZmluZCBsaWJwdGhyZWFkXSldKQorQUNfQ0hFQ0tfTElCKFtydF0sIFtjbG9ja19n
ZXR0aW1lXSkKK0FDX0NIRUNLX0xJQihbdXVpZF0sIFt1dWlkX2NsZWFyXSwgW10sCisgICAgW0FD
X01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbGlidXVpZF0pXSkKK0FDX0NIRUNLX0xJQihbeWFq
bF0sIFt5YWpsX2FsbG9jXSwgW10sCisgICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQg
eWFqbF0pXSkKK0FDX0NIRUNLX0xJQihbel0sIFtkZWZsYXRlQ29weV0sIFtdLCBbQUNfTVNHX0VS
Uk9SKFtDb3VsZCBub3QgZmluZCB6bGliXSldKQorQUNfQ0hFQ0tfTElCKFtpY29udl0sIFtsaWJp
Y29udl9vcGVuXSwgW2xpYmljb252PSJ5Il0sIFtsaWJpY29udj0ibiJdKQorQUNfU1VCU1QobGli
aWNvbnYpCisKKyMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCitBQ19GVU5DX0FMTE9DQQorQUNf
Q0hFQ0tfSEVBREVSUyhbIFwKKyAgICAgICAgICAgICAgICBhcnBhL2luZXQuaCBmY250bC5oIGlu
dHR5cGVzLmggbGliaW50bC5oIGxpbWl0cy5oIG1hbGxvYy5oIFwKKyAgICAgICAgICAgICAgICBu
ZXRkYi5oIG5ldGluZXQvaW4uaCBzdGRkZWYuaCBzdGRpbnQuaCBzdGRsaWIuaCBzdHJpbmcuaCBc
CisgICAgICAgICAgICAgICAgc3RyaW5ncy5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggc3lzL21v
dW50Lmggc3lzL3BhcmFtLmggXAorICAgICAgICAgICAgICAgIHN5cy9zb2NrZXQuaCBzeXMvc3Rh
dHZmcy5oIHN5cy90aW1lLmggc3lzbG9nLmggdGVybWlvcy5oIFwKKyAgICAgICAgICAgICAgICB1
bmlzdGQuaCB5YWpsL3lhamxfdmVyc2lvbi5oIFwKKyAgICAgICAgICAgICAgICBdKQorCisjIENo
ZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3Rp
Y3MuCitBQ19IRUFERVJfU1REQk9PTAorQUNfVFlQRV9VSURfVAorQUNfQ19JTkxJTkUKK0FDX1RZ
UEVfSU5UMTZfVAorQUNfVFlQRV9JTlQzMl9UCitBQ19UWVBFX0lOVDY0X1QKK0FDX1RZUEVfSU5U
OF9UCitBQ19UWVBFX01PREVfVAorQUNfVFlQRV9PRkZfVAorQUNfVFlQRV9QSURfVAorQUNfQ19S
RVNUUklDVAorQUNfVFlQRV9TSVpFX1QKK0FDX1RZUEVfU1NJWkVfVAorQUNfQ0hFQ0tfTUVNQkVS
Uyhbc3RydWN0IHN0YXQuc3RfYmxrc2l6ZV0pCitBQ19TVFJVQ1RfU1RfQkxPQ0tTCitBQ19DSEVD
S19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9yZGV2XSkKK0FDX1RZUEVfVUlOVDE2X1QKK0FDX1RZ
UEVfVUlOVDMyX1QKK0FDX1RZUEVfVUlOVDY0X1QKK0FDX1RZUEVfVUlOVDhfVAorQUNfQ0hFQ0tf
VFlQRVMoW3B0cmRpZmZfdF0pCisKKyMgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4KK0FD
X0ZVTkNfRVJST1JfQVRfTElORQorQUNfRlVOQ19GT1JLCitBQ19GVU5DX0ZTRUVLTworQUNfRlVO
Q19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSworQUNfSEVBREVSX01BSk9SCitBQ19GVU5D
X01BTExPQworQUNfRlVOQ19NS1RJTUUKK0FDX0ZVTkNfTU1BUAorQUNfRlVOQ19SRUFMTE9DCitB
Q19GVU5DX1NUUk5MRU4KK0FDX0ZVTkNfU1RSVE9ECitBQ19DSEVDS19GVU5DUyhbIFwKKyAgICAg
ICAgICAgICAgICBhbGFybSBhdGV4aXQgYnplcm8gY2xvY2tfZ2V0dGltZSBkdXAyIGZkYXRhc3lu
YyBmdHJ1bmNhdGUgXAorICAgICAgICAgICAgICAgIGdldGN3ZCBnZXRob3N0YnluYW1lIGdldGhv
c3RuYW1lIGdldHBhZ2VzaXplIGdldHRpbWVvZmRheSBcCisgICAgICAgICAgICAgICAgaW5ldF9u
dG9hIGlzYXNjaWkgbG9jYWx0aW1lX3IgbWVtY2hyIG1lbW1vdmUgbWVtc2V0IG1rZGlyIFwKKyAg
ICAgICAgICAgICAgICBta2ZpZm8gbXVubWFwIHBhdGhjb25mIHJlYWxwYXRoIHJlZ2NvbXAgcm1k
aXIgc2VsZWN0IHNldGVudiBcCisgICAgICAgICAgICAgICAgc29ja2V0IHN0cmNhc2VjbXAgc3Ry
Y2hyIHN0cmNzcG4gc3RyZHVwIHN0cmVycm9yIHN0cm5kdXAgXAorICAgICAgICAgICAgICAgIHN0
cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHN0cnRvbCBzdHJ0b3VsIHN0cnRvdWxsIHR6c2V0
IFwKKyAgICAgICAgICAgICAgICB1bmFtZSBcCisgICAgICAgICAgICAgICAgXSkKKworQUNfT1VU
UFVUKCkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2RlYnVnZ2Vy
L2dkYnN4L3hnL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01ha2VmaWxl
CU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9kZWJ1Z2dlci9nZGJz
eC94Zy9NYWtlZmlsZQlUdWUgRmViIDIxIDAxOjQwOjA0IDIwMTIgKzAxMDAKQEAgLTIxLDcgKzIx
LDYgQEAgeGdfYWxsLmE6ICQoWEdfT0JKUykgTWFrZWZpbGUgJChYR19IRFJTKQogIwkkKENDKSAt
bTMyIC1jIC1vICRAICReCiAKIHhlbi1oZWFkZXJzOgotCSQoTUFLRSkgLUMgLi4vLi4vLi4vY2hl
Y2sgCiAJJChNQUtFKSAtQyAuLi8uLi8uLi9pbmNsdWRlCiAKICMgeGdfbWFpbi5vOiB4Z19tYWlu
LmMgTWFrZWZpbGUgJChYR19IRFJTKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBm
NmMgdG9vbHMvaW5zdGFsbC5zaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi90b29scy9pbnN0YWxsLnNoCVR1ZSBGZWIgMjEgMDE6NDA6MDQgMjAxMiAr
MDEwMApAQCAtMCwwICsxLDEgQEAKKy4uL2luc3RhbGwuc2gKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0b29scy9saWJmc2lt
YWdlL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUJTW9uIEZlYiAyMCAx
ODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUJVHVlIEZl
YiAyMSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC0zLDcgKzMsMTEgQEAgaW5jbHVkZSAkKFhFTl9S
T09UKS90b29scy9SdWxlcy5tawogCiBTVUJESVJTLXkgPSBjb21tb24gdWZzIHJlaXNlcmZzIGlz
bzk2NjAgZmF0IHpmcwogU1VCRElSUy0kKENPTkZJR19YODYpICs9IHhmcwotU1VCRElSUy15ICs9
ICQoc2hlbGwgZW52IENDPSIkKENDKSIgLi9jaGVjay1saWJleHQyZnMpCitpZmVxICgkKENPTkZJ
R19FWFQyRlMpLCB5KQorICAgIFNVQkRJUlMteSArPSBleHQyZnMtbGliCitlbHNlCisgICAgU1VC
RElSUy15ICs9IGV4dDJmcworZW5kaWYKIAogLlBIT05ZOiBhbGwgY2xlYW4gaW5zdGFsbAogYWxs
IGNsZWFuIGluc3RhbGw6ICU6IHN1YmRpcnMtJQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3
MWM3MTBmNmMgdG9vbHMvbGliZnNpbWFnZS9jaGVjay1saWJleHQyZnMKLS0tIGEvdG9vbHMvbGli
ZnNpbWFnZS9jaGVjay1saWJleHQyZnMJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisr
KyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIxICswLDAg
QEAKLSMhL2Jpbi9zaAotCi1jYXQgPmV4dDItdGVzdC5jIDw8RU9GCi0jaW5jbHVkZSA8ZXh0MmZz
L2V4dDJmcy5oPgotCi1pbnQgbWFpbigpCi17Ci0JZXh0MmZzX29wZW4yOwotfQotRU9GCi0KLSR7
Q0MtZ2NjfSAtbyBleHQyLXRlc3QgZXh0Mi10ZXN0LmMgLWxleHQyZnMgPi9kZXYvbnVsbCAyPiYx
Ci1pZiBbICQ/ID0gMCBdOyB0aGVuCi0JZWNobyBleHQyZnMtbGliCi1lbHNlCi0JZWNobyBleHQy
ZnMKLWZpCi0KLXJtIC1mIGV4dDItdGVzdCBleHQyLXRlc3QuYwotCi1leGl0IDAKZGlmZiAtciBj
YTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2xpYnhlbi9NYWtlZmlsZQotLS0gYS90
b29scy9saWJ4ZW4vTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBi
L3Rvb2xzL2xpYnhlbi9NYWtlZmlsZQlUdWUgRmViIDIxIDAxOjQwOjA0IDIwMTIgKzAxMDAKQEAg
LTIyLDEyICsyMiwxMiBAQCBNQUpPUiA9IDEuMAogTUlOT1IgPSAwCiAKIENGTEFHUyArPSAtSWlu
Y2x1ZGUgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgJChzaGVsbCB4bWwyLWNvbmZp
ZyAtLWNmbGFncykgXAotICAgICAgICAgICQoc2hlbGwgY3VybC1jb25maWcgLS1jZmxhZ3MpIFwK
KyAgICAgICAgICAkKHNoZWxsICQoWE1MMl9DT05GSUcpIC0tY2ZsYWdzKSBcCisgICAgICAgICAg
JChzaGVsbCAkKENVUkxfQ09ORklHKSAtLWNmbGFncykgXAogICAgICAgICAgIC1mUElDCiAKLUxE
RkxBR1MgKz0gJChzaGVsbCB4bWwyLWNvbmZpZyAtLWxpYnMpIFwKLSAgICAgICAgICAgJChzaGVs
bCBjdXJsLWNvbmZpZyAtLWxpYnMpCitMREZMQUdTICs9ICQoc2hlbGwgJChYTUwyX0NPTkZJRykg
LS1saWJzKSBcCisgICAgICAgICAgICQoc2hlbGwgJChDVVJMX0NPTkZJRykgLS1saWJzKQogCiBM
SUJYRU5BUElfSERSUyA9ICQod2lsZGNhcmQgaW5jbHVkZS94ZW4vYXBpLyouaCkgaW5jbHVkZS94
ZW4vYXBpL3hlbl9hbGwuaAogTElCWEVOQVBJX09CSlMgPSAkKHBhdHN1YnN0ICUuYywgJS5vLCAk
KHdpbGRjYXJkIHNyYy8qLmMpKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBmNmMg
dG9vbHMvbGlieGwvTWFrZWZpbGUKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUJTW9uIEZlYiAy
MCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCVR1ZSBGZWIg
MjEgMDE6NDA6MDQgMjAxMiArMDEwMApAQCAtMTksMTAgKzE5LDYgQEAgaWZlcSAoJChDT05GSUdf
TGludXgpLHkpCiBMSUJVVUlEX0xJQlMgKz0gLWx1dWlkCiBlbmRpZgogCi1pZmVxICgkKENPTkZJ
R19ZQUpMX1ZFUlNJT04pLHkpCi1DRkxBR1MgKz0gLURIQVZFX1lBSkxfVkVSU0lPTgotZW5kaWYK
LQogTElCWExfTElCUyA9CiBMSUJYTF9MSUJTID0gJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJ
QlNfbGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKExETElCU19saWJibGt0YXBj
dGwpICQoVVRJTF9MSUJTKSAkKExJQlVVSURfTElCUykKIApAQCAtNTYsNyArNTIsNyBAQCBMSUJY
TF9PQkpTID0gZmxleGFycmF5Lm8gbGlieGwubyBsaWJ4bF9jCiAJCQlsaWJ4bF9xbXAubyBsaWJ4
bF9ldmVudC5vICQoTElCWExfT0JKUy15KQogTElCWExfT0JKUyArPSBfbGlieGxfdHlwZXMubyBs
aWJ4bF9mbGFzay5vIF9saWJ4bF90eXBlc19pbnRlcm5hbC5vCiAKLSQoTElCWExfT0JKUyk6IENG
TEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkgJChDRkxB
R1NfbGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYmJsa3RhcGN0bCkKKyQoTElCWExfT0JKUyk6IENG
TEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkgJChDRkxB
R1NfbGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYmJsa3RhcGN0bCkgLWluY2x1ZGUgJChYRU5fUk9P
VCkvdG9vbHMvY29uZmlnLmgKIAogQVVUT0lOQ1M9IGxpYnhsdV9jZmdfeS5oIGxpYnhsdV9jZmdf
bC5oIF9saWJ4bF9saXN0LmgKIEFVVE9TUkNTPSBsaWJ4bHVfY2ZnX3kuYyBsaWJ4bHVfY2ZnX2wu
YwpAQCAtNjksNiArNjUsNyBAQCBDTElFTlRTID0geGwgdGVzdGlkbAogWExfT0JKUyA9IHhsLm8g
eGxfY21kaW1wbC5vIHhsX2NtZHRhYmxlLm8geGxfc3hwLm8KICQoWExfT0JKUyk6IENGTEFHUyAr
PSAkKENGTEFHU19saWJ4ZW5jdHJsKSAjIEZvciB4ZW50b29sbG9nLmgKICQoWExfT0JKUyk6IENG
TEFHUyArPSAkKENGTEFHU19saWJ4ZW5saWdodCkKKyQoWExfT0JKUyk6IENGTEFHUyArPSAtaW5j
bHVkZSAkKFhFTl9ST09UKS90b29scy9jb25maWcuaCAjIGxpYnhsX2pzb24uaCBuZWVkcyBpdC4K
IAogdGVzdGlkbC5vOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGli
eGVubGlnaHQpCiB0ZXN0aWRsLmM6IGxpYnhsX3R5cGVzLmlkbCBnZW50ZXN0LnB5IGxpYnhsLmgg
JChBVVRPSU5DUykKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL2xp
YnhsL2xpYnhsX2pzb24uaAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9qc29uLmgJTW9uIEZlYiAy
MCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2pzb24uaAlUdWUg
RmViIDIxIDAxOjQwOjA0IDIwMTIgKzAxMDAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlIDx5
YWpsL3lhamxfZ2VuLmg+CiAjaW5jbHVkZSA8eWFqbC95YWpsX3BhcnNlLmg+CiAKLSNpZmRlZiBI
QVZFX1lBSkxfVkVSU0lPTgorI2lmZGVmIEhBVkVfWUFKTF9ZQUpMX1ZFUlNJT05fSAogIyAgaW5j
bHVkZSA8eWFqbC95YWpsX3ZlcnNpb24uaD4KICNlbmRpZgogCmRpZmYgLXIgY2E4MGVjYTljZmEz
IC1yIGI2MDcxYzcxMGY2YyB0b29scy9tNC9kZWZhdWx0X2xpYi5tNAotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9kZWZhdWx0X2xpYi5t
NAlUdWUgRmViIDIxIDAxOjQwOjA0IDIwMTIgKzAxMDAKQEAgLTAsMCArMSw4IEBACitBQ19ERUZV
TihbQVhfREVGQVVMVF9MSUJdLAorW0FTX0lGKFt0ZXN0IC1kICIkcHJlZml4L2xpYjY0Il0sIFsK
KyAgICBMSUJfUEFUSD0ibGliNjQiCitdLFsKKyAgICBMSUJfUEFUSD0ibGliIgorXSkKK0FDX1NV
QlNUKExJQl9QQVRIKV0pCisKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRv
b2xzL200L2Rpc2FibGVfZmVhdHVyZS5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9kaXNhYmxlX2ZlYXR1cmUubTQJVHVlIEZlYiAy
MSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVOKFtBWF9BUkdf
RElTQUJMRV9BTkRfRVhQT1JUXSwKK1tBQ19BUkdfRU5BQkxFKFskMV0sCisgICAgQVNfSEVMUF9T
VFJJTkcoWy0tZGlzYWJsZS0kMV0sIFskMl0pKQorCitBU19JRihbdGVzdCAieCRlbmFibGVfJDEi
ID0gInhubyJdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdLCBbdGVzdCAieCRlbmFibGVfJDEiID0g
Inh5ZXMiXSwgWworICAgIGF4X2N2XyQxPSJ5IgorXSwgW3Rlc3QgLXogJGF4X2N2XyQxXSwgWwor
ICAgIGF4X2N2XyQxPSJ5IgorXSkKKyQxPSRheF9jdl8kMQorQUNfU1VCU1QoJDEpXSkKZGlmZiAt
ciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL200L2VuYWJsZV9mZWF0dXJlLm00
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xz
L200L2VuYWJsZV9mZWF0dXJlLm00CVR1ZSBGZWIgMjEgMDE6NDA6MDQgMjAxMiArMDEwMApAQCAt
MCwwICsxLDEzIEBACitBQ19ERUZVTihbQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUXSwKK1tBQ19B
UkdfRU5BQkxFKFskMV0sCisgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLSQxXSwgWyQyXSkp
CisKK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieHllcyJdLCBbCisgICAgYXhfY3ZfJDE9
InkiCitdLCBbdGVzdCAieCRlbmFibGVfJDEiID0gInhubyJdLCBbCisgICAgYXhfY3ZfJDE9Im4i
CitdLCBbdGVzdCAteiAkYXhfY3ZfJDFdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdKQorJDE9JGF4
X2N2XyQxCitBQ19TVUJTVCgkMSldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBm
NmMgdG9vbHMvbTQvb2NhbWwubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvb2NhbWwubTQJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEy
ICswMTAwCkBAIC0wLDAgKzEsMjQxIEBACitkbmwgYXV0b2NvbmYgbWFjcm9zIGZvciBPQ2FtbAor
ZG5sIGZyb20gaHR0cDovL2ZvcmdlLm9jYW1sY29yZS5vcmcvCitkbmwKK2RubCBDb3B5cmlnaHQg
wqkgMjAwOSAgICAgIFJpY2hhcmQgVy5NLiBKb25lcworZG5sIENvcHlyaWdodCDCqSAyMDA5ICAg
ICAgU3RlZmFubyBaYWNjaGlyb2xpCitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAwNSBPbGl2aWVy
IEFuZHJpZXUKK2RubCBDb3B5cmlnaHQgwqkgMjAwMC0yMDA1IEplYW4tQ2hyaXN0b3BoZSBGaWxs
acOidHJlCitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAwNSBHZW9yZ2VzIE1hcmlhbm8KK2RubAor
ZG5sIEZvciBkb2N1bWVudGF0aW9uLCBwbGVhc2UgcmVhZCB0aGUgb2NhbWwubTQgbWFuIHBhZ2Uu
CisKK0FDX0RFRlVOKFtBQ19QUk9HX09DQU1MXSwKK1tkbmwKKyAgIyBjaGVja2luZyBmb3Igb2Nh
bWxjCisgIEFDX0NIRUNLX1RPT0woW09DQU1MQ10sW29jYW1sY10sW25vXSkKKworICBpZiB0ZXN0
ICIkT0NBTUxDIiAhPSAibm8iOyB0aGVuCisgICAgIE9DQU1MVkVSU0lPTj1gJE9DQU1MQyAtdiB8
IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwxfHAnYAorICAgICBBQ19NU0dfUkVT
VUxUKFtPQ2FtbCB2ZXJzaW9uIGlzICRPQ0FNTFZFUlNJT05dKQorICAgICAjIElmIE9DQU1MTElC
IGlzIHNldCwgdXNlIGl0CisgICAgIGlmIHRlc3QgIiRPQ0FNTExJQiIgPSAiIjsgdGhlbgorICAg
ICAgICBPQ0FNTExJQj1gJE9DQU1MQyAtd2hlcmUgMj4vZGV2L251bGwgfHwgJE9DQU1MQyAtdnx0
YWlsIC0xfGN1dCAtZCAnICcgLWYgNGAKKyAgICAgZWxzZQorICAgICAgICBBQ19NU0dfUkVTVUxU
KFtPQ0FNTExJQiBwcmV2aW91c2x5IHNldDsgcHJlc2VydmluZyBpdC5dKQorICAgICBmaQorICAg
ICBBQ19NU0dfUkVTVUxUKFtPQ2FtbCBsaWJyYXJ5IHBhdGggaXMgJE9DQU1MTElCXSkKKworICAg
ICBBQ19TVUJTVChbT0NBTUxWRVJTSU9OXSkKKyAgICAgQUNfU1VCU1QoW09DQU1MTElCXSkKKwor
ICAgICAjIGNoZWNraW5nIGZvciBvY2FtbG9wdAorICAgICBBQ19DSEVDS19UT09MKFtPQ0FNTE9Q
VF0sW29jYW1sb3B0XSxbbm9dKQorICAgICBPQ0FNTEJFU1Q9Ynl0ZQorICAgICBpZiB0ZXN0ICIk
T0NBTUxPUFQiID0gIm5vIjsgdGhlbgorCUFDX01TR19XQVJOKFtDYW5ub3QgZmluZCBvY2FtbG9w
dDsgYnl0ZWNvZGUgY29tcGlsYXRpb24gb25seS5dKQorICAgICBlbHNlCisJVE1QVkVSU0lPTj1g
JE9DQU1MT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAor
CWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgIEFD
X01TR19SRVNVTFQoW3ZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2Nh
cmRlZC5dKQorCSAgICBPQ0FNTE9QVD1ubworCWVsc2UKKwkgICAgT0NBTUxCRVNUPW9wdAorCWZp
CisgICAgIGZpCisKKyAgICAgQUNfU1VCU1QoW09DQU1MQkVTVF0pCisKKyAgICAgIyBjaGVja2lu
ZyBmb3Igb2NhbWxjLm9wdAorICAgICBBQ19DSEVDS19UT09MKFtPQ0FNTENET1RPUFRdLFtvY2Ft
bGMub3B0XSxbbm9dKQorICAgICBpZiB0ZXN0ICIkT0NBTUxDRE9UT1BUIiAhPSAibm8iOyB0aGVu
CisJVE1QVkVSU0lPTj1gJE9DQU1MQ0RPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24q
ICpcKC4qXCkkfFwxfHAnIGAKKwlpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJ
T04iIDsgdGhlbgorCSAgICBBQ19NU0dfUkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2Nh
bWxjOyBvY2FtbGMub3B0IGRpc2NhcmRlZC5dKQorCWVsc2UKKwkgICAgT0NBTUxDPSRPQ0FNTENE
T1RPUFQKKwlmaQorICAgICBmaQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0Lm9wdAor
ICAgICBpZiB0ZXN0ICIkT0NBTUxPUFQiICE9ICJubyIgOyB0aGVuCisJQUNfQ0hFQ0tfVE9PTChb
T0NBTUxPUFRET1RPUFRdLFtvY2FtbG9wdC5vcHRdLFtub10pCisJaWYgdGVzdCAiJE9DQU1MT1BU
RE9UT1BUIiAhPSAibm8iOyB0aGVuCisJICAgVE1QVkVSU0lPTj1gJE9DQU1MT1BURE9UT1BUIC12
IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCSAgIGlmIHRlc3Qg
IiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgICAgQUNfTVNHX1JF
U1VMVChbdmVyc2lvbiBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdC5vcHQgZGlzY2FyZGVk
Ll0pCisJICAgZWxzZQorCSAgICAgIE9DQU1MT1BUPSRPQ0FNTE9QVERPVE9QVAorCSAgIGZpCisg
ICAgICAgIGZpCisgICAgIGZpCisKKyAgICAgQUNfU1VCU1QoW09DQU1MT1BUXSkKKyAgZmkKKwor
ICBBQ19TVUJTVChbT0NBTUxDXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbCB0b3BsZXZlbAor
ICBBQ19DSEVDS19UT09MKFtPQ0FNTF0sW29jYW1sXSxbbm9dKQorCisgICMgY2hlY2tpbmcgZm9y
IG9jYW1sZGVwCisgIEFDX0NIRUNLX1RPT0woW09DQU1MREVQXSxbb2NhbWxkZXBdLFtub10pCisK
KyAgIyBjaGVja2luZyBmb3Igb2NhbWxta3RvcAorICBBQ19DSEVDS19UT09MKFtPQ0FNTE1LVE9Q
XSxbb2NhbWxta3RvcF0sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbG1rbGliCisgIEFD
X0NIRUNLX1RPT0woW09DQU1MTUtMSUJdLFtvY2FtbG1rbGliXSxbbm9dKQorCisgICMgY2hlY2tp
bmcgZm9yIG9jYW1sZG9jCisgIEFDX0NIRUNLX1RPT0woW09DQU1MRE9DXSxbb2NhbWxkb2NdLFtu
b10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxidWlsZAorICBBQ19DSEVDS19UT09MKFtPQ0FN
TEJVSUxEXSxbb2NhbWxidWlsZF0sW25vXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0dfT0NB
TUxMRVhdLAorW2RubAorICAjIGNoZWNraW5nIGZvciBvY2FtbGxleAorICBBQ19DSEVDS19UT09M
KFtPQ0FNTExFWF0sW29jYW1sbGV4XSxbbm9dKQorICBpZiB0ZXN0ICIkT0NBTUxMRVgiICE9ICJu
byI7IHRoZW4KKyAgICBBQ19DSEVDS19UT09MKFtPQ0FNTExFWERPVE9QVF0sW29jYW1sbGV4Lm9w
dF0sW25vXSkKKyAgICBpZiB0ZXN0ICIkT0NBTUxMRVhET1RPUFQiICE9ICJubyI7IHRoZW4KKwlP
Q0FNTExFWD0kT0NBTUxMRVhET1RPUFQKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChbT0NBTUxM
RVhdKQorXSkKKworQUNfREVGVU4oW0FDX1BST0dfT0NBTUxZQUNDXSwKK1tkbmwKKyAgQUNfQ0hF
Q0tfVE9PTChbT0NBTUxZQUNDXSxbb2NhbWx5YWNjXSxbbm9dKQorICBBQ19TVUJTVChbT0NBTUxZ
QUNDXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0dfQ0FNTFA0XSwKK1tkbmwKKyAgQUNfUkVR
VUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisKKyAgIyBjaGVja2luZyBmb3IgY2FtbHA0CisgIEFD
X0NIRUNLX1RPT0woW0NBTUxQNF0sW2NhbWxwNF0sW25vXSkKKyAgaWYgdGVzdCAiJENBTUxQNCIg
IT0gIm5vIjsgdGhlbgorICAgICBUTVBWRVJTSU9OPWAkQ0FNTFA0IC12IDI+JjF8IHNlZCAtbiAt
ZSAnc3wuKnZlcnNpb24gKlwoLipcKSR8XDF8cCdgCisgICAgIGlmIHRlc3QgIiRUTVBWRVJTSU9O
IiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJQUNfTVNHX1JFU1VMVChbdmVyc2lvbnMgZGlm
ZmVycyBmcm9tIG9jYW1sY10pCisgICAgICAgIENBTUxQND1ubworICAgICBmaQorICBmaQorICBB
Q19TVUJTVChbQ0FNTFA0XSkKKworICAjIGNoZWNraW5nIGZvciBjb21wYW5pb24gdG9vbHMKKyAg
QUNfQ0hFQ0tfVE9PTChbQ0FNTFA0Qk9PVF0sW2NhbWxwNGJvb3RdLFtub10pCisgIEFDX0NIRUNL
X1RPT0woW0NBTUxQNE9dLFtjYW1scDRvXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRP
Rl0sW2NhbWxwNG9mXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRPT0ZdLFtjYW1scDRv
b2ZdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9SRl0sW2NhbWxwNG9yZl0sW25vXSkK
KyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0UFJPRl0sW2NhbWxwNHByb2ZdLFtub10pCisgIEFDX0NI
RUNLX1RPT0woW0NBTUxQNFJdLFtjYW1scDRyXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1M
UDRSRl0sW2NhbWxwNHJmXSxbbm9dKQorICBBQ19TVUJTVChbQ0FNTFA0Qk9PVF0pCisgIEFDX1NV
QlNUKFtDQU1MUDRPXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9GXSkKKyAgQUNfU1VCU1QoW0NBTUxQ
NE9PRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRPUkZdKQorICBBQ19TVUJTVChbQ0FNTFA0UFJPRl0p
CisgIEFDX1NVQlNUKFtDQU1MUDRSXSkKKyAgQUNfU1VCU1QoW0NBTUxQNFJGXSkKK10pCisKKwor
QUNfREVGVU4oW0FDX1BST0dfRklORExJQl0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0df
T0NBTUxdKWRubAorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZmluZAorICBBQ19DSEVDS19UT09M
KFtPQ0FNTEZJTkRdLFtvY2FtbGZpbmRdLFtub10pCisgIEFDX1NVQlNUKFtPQ0FNTEZJTkRdKQor
XSkKKworCitkbmwgVGhhbmtzIHRvIEppbSBNZXllcmluZyBmb3Igd29ya2luZyB0aGlzIG5leHQg
Yml0IG91dCBmb3IgdXMuCitkbmwgWFhYIFdlIHNob3VsZCBkZWZpbmUgQVNfVFJfU0ggaWYgaXQn
cyBub3QgZGVmaW5lZCBhbHJlYWR5CitkbmwgKGVnLiBmb3Igb2xkIGF1dG9jb25mKS4KK0FDX0RF
RlVOKFtBQ19DSEVDS19PQ0FNTF9QS0ddLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX0ZJ
TkRMSUJdKWRubAorCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9DYW1sIGZpbmRsaWIgcGFja2Fn
ZSAkMV0pCisKKyAgdW5zZXQgZm91bmQKKyAgdW5zZXQgcGtnCisgIGZvdW5kPW5vCisgIGZvciBw
a2cgaW4gJDEgJDIgOyBkbworICAgIGlmICRPQ0FNTEZJTkQgcXVlcnkgJHBrZyA+L2Rldi9udWxs
IDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBBQ19NU0dfUkVTVUxUKFtmb3VuZF0pCisgICAgICBB
U19UUl9TSChbT0NBTUxfUEtHXyQxXSk9JHBrZworICAgICAgZm91bmQ9eWVzCisgICAgICBicmVh
aworICAgIGZpCisgIGRvbmUKKyAgaWYgdGVzdCAiJGZvdW5kIiA9ICJubyIgOyB0aGVuCisgICAg
QUNfTVNHX1JFU1VMVChbbm90IGZvdW5kXSkKKyAgICBBU19UUl9TSChbT0NBTUxfUEtHXyQxXSk9
bm8KKyAgZmkKKworICBBQ19TVUJTVChBU19UUl9TSChbT0NBTUxfUEtHXyQxXSkpCitdKQorCisK
K0FDX0RFRlVOKFtBQ19DSEVDS19PQ0FNTF9NT0RVTEVdLAorW2RubAorICBBQ19NU0dfQ0hFQ0tJ
TkcoW2ZvciBPQ2FtbCBtb2R1bGUgJDJdKQorCisgIGNhdCA+IGNvbmZ0ZXN0Lm1sIDw8RU9GCitv
cGVuICQzCitFT0YKKyAgdW5zZXQgZm91bmQKKyAgZm9yICQxIGluICQkMSAkNCA7IGRvCisgICAg
aWYgJE9DQU1MQyAtYyAtSSAiJCQxIiBjb25mdGVzdC5tbCA+JjUgMj4mNSA7IHRoZW4KKyAgICAg
IGZvdW5kPXllcworICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisKKyAgaWYgdGVzdCAiJGZv
dW5kIiA7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFskJDFdKQorICBlbHNlCisgICAgQUNfTVNH
X1JFU1VMVChbbm90IGZvdW5kXSkKKyAgICAkMT1ubworICBmaQorICBBQ19TVUJTVChbJDFdKQor
XSkKKworCitkbmwgWFhYIENyb3NzLWNvbXBpbGluZworQUNfREVGVU4oW0FDX0NIRUNLX09DQU1M
X1dPUkRfU0laRV0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRubAorICBB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBPQ2FtbCBjb21waWxlciB3b3JkIHNpemVdKQorICBjYXQgPiBj
b25mdGVzdC5tbCA8PEVPRgorICBwcmludF9lbmRsaW5lIChzdHJpbmdfb2ZfaW50IFN5cy53b3Jk
X3NpemUpCisgIEVPRgorICBPQ0FNTF9XT1JEX1NJWkU9YCRPQ0FNTCBjb25mdGVzdC5tbGAKKyAg
QUNfTVNHX1JFU1VMVChbJE9DQU1MX1dPUkRfU0laRV0pCisgIEFDX1NVQlNUKFtPQ0FNTF9XT1JE
X1NJWkVdKQorXSkKKworQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX09TX1RZUEVdLAorW2RubAor
ICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlkbmwKKyAgQUNfTVNHX0NIRUNLSU5HKFtPQ2Ft
bCBTeXMub3NfdHlwZV0pCisKKyAgY2F0ID4gY29uZnRlc3QubWwgPDxFT0YKKyAgcHJpbnRfc3Ry
aW5nKFN5cy5vc190eXBlKTs7CitFT0YKKworICBPQ0FNTF9PU19UWVBFPWAkT0NBTUwgY29uZnRl
c3QubWxgCisgIEFDX01TR19SRVNVTFQoWyRPQ0FNTF9PU19UWVBFXSkKKyAgQUNfU1VCU1QoW09D
QU1MX09TX1RZUEVdKQorXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRv
b2xzL200L3BhdGhfb3JfZmFpbC5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi90b29scy9tNC9wYXRoX29yX2ZhaWwubTQJVHVlIEZlYiAyMSAwMTo0
MDowNCAyMDEyICswMTAwCkBAIC0wLDAgKzEsNiBAQAorQUNfREVGVU4oW0FYX1BBVEhfUFJPR19P
Ul9GQUlMXSwKK1tBQ19QQVRIX1BST0coWyQxXSwgWyQyXSwgW25vXSkKK2lmIHRlc3QgeCIkeyQx
fSIgPT0geCJubyIgCit0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtVbmFibGUgdG8gZmluZCAkMiwg
cGxlYXNlIGluc3RhbGwgJDJdKQorZmldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3
MTBmNmMgdG9vbHMvbTQvcGtnLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCisrKyBiL3Rvb2xzL200L3BrZy5tNAlUdWUgRmViIDIxIDAxOjQwOjA0IDIwMTIg
KzAxMDAKQEAgLTAsMCArMSwxNTcgQEAKKyMgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQg
dXRpbGlzZSBwa2ctY29uZmlnLiAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgc2VyaWFs
IDEgKHBrZy1jb25maWctMC4yNCkKKyMgCisjIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVz
IFJlbW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBh
IHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRl
ZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3Ry
aWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4K
KworIyBQS0dfUFJPR19QS0dfQ09ORklHKFtNSU4tVkVSU0lPTl0pCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfUFJPR19QS0dfQ09ORklHXSwKK1tt
NF9wYXR0ZXJuX2ZvcmJpZChbXl8/UEtHX1tBLVpfXSskXSkKK200X3BhdHRlcm5fYWxsb3coW15Q
S0dfQ09ORklHKF9QQVRIKT8kXSkKK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBbcGF0aCB0byBw
a2ctY29uZmlnIHV0aWxpdHldKQorQUNfQVJHX1ZBUihbUEtHX0NPTkZJR19QQVRIXSwgW2RpcmVj
dG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGhdKQorQUNfQVJHX1ZBUihb
UEtHX0NPTkZJR19MSUJESVJdLCBbcGF0aCBvdmVycmlkaW5nIHBrZy1jb25maWcncyBidWlsdC1p
biBzZWFyY2ggcGF0aF0pCisKK2lmIHRlc3QgIngkYWNfY3ZfZW52X1BLR19DT05GSUdfc2V0IiAh
PSAieHNldCI7IHRoZW4KKwlBQ19QQVRIX1RPT0woW1BLR19DT05GSUddLCBbcGtnLWNvbmZpZ10p
CitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisJX3BrZ19taW5fdmVyc2lvbj1t
NF9kZWZhdWx0KFskMV0sIFswLjkuMF0pCisJQUNfTVNHX0NIRUNLSU5HKFtwa2ctY29uZmlnIGlz
IGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb25dKQorCWlmICRQS0dfQ09ORklHIC0t
YXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbjsgdGhlbgorCQlBQ19N
U0dfUkVTVUxUKFt5ZXNdKQorCWVsc2UKKwkJQUNfTVNHX1JFU1VMVChbbm9dKQorCQlQS0dfQ09O
RklHPSIiCisJZmkKK2ZpW11kbmwKK10pIyBQS0dfUFJPR19QS0dfQ09ORklHCisKKyMgUEtHX0NI
RUNLX0VYSVNUUyhNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9V
TkRdKQorIworIyBDaGVjayB0byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9mIG1vZHVs
ZXMgZXhpc3RzLiAgU2ltaWxhcgorIyB0byBQS0dfQ0hFQ0tfTU9EVUxFUygpLCBidXQgZG9lcyBu
b3Qgc2V0IHZhcmlhYmxlcyBvciBwcmludCBlcnJvcnMuCisjCisjIFBsZWFzZSByZW1lbWJlciB0
aGF0IG00IGV4cGFuZHMgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisjIG9ubHkg
YXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBpbiBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBmaXJzdCBw
bGFjZQorIyBpdCdzIGNhbGxlZCBtaWdodCBiZSBza2lwcGVkIChzdWNoIGFzIGlmIGl0IGlzIHdp
dGhpbiBhbiAiaWYiLCB5b3UKKyMgaGF2ZSB0byBjYWxsIFBLR19DSEVDS19FWElTVFMgbWFudWFs
bHkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfRVhJU1RTXSwKK1tBQ19SRVFVSVJFKFtQ
S0dfUFJPR19QS0dfQ09ORklHXSlkbmwKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisg
ICAgQUNfUlVOX0xPRyhbJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiQxIl0p
OyB0aGVuCisgIG00X2RlZmF1bHQoWyQyXSwgWzpdKQorbTRfaWZ2YWxuKFskM10sIFtlbHNlCisg
ICQzXSlkbmwKK2ZpXSkKKworIyBfUEtHX0NPTkZJRyhbVkFSSUFCTEVdLCBbQ09NTUFORF0sIFtN
T0RVTEVTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CittNF9kZWZpbmUoW19QS0dfQ09ORklHXSwKK1tpZiB0ZXN0IC1uICIkJDEiOyB0aGVuCisgICAg
cGtnX2N2X1tdJDE9IiQkMSIKKyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAg
IFBLR19DSEVDS19FWElTVFMoWyQzXSwKKyAgICAgICAgICAgICAgICAgICAgIFtwa2dfY3ZfW10k
MT1gJFBLR19DT05GSUcgLS1bXSQyICIkMyIgMj4vZGV2L251bGxgXSwKKwkJICAgICBbcGtnX2Zh
aWxlZD15ZXNdKQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2ZpW11kbmwKK10pIyBf
UEtHX0NPTkZJRworCisjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRF
RF0sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCitpZiAkUEtHX0NPTkZJRyAt
LWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0
X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1
cHBvcnRlZD1ubworZmlbXWRubAorXSkjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorCisK
KyMgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlG
LUZPVU5EXSwKKyMgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorIworIworIyBOb3RlIHRoYXQgaWYg
dGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGUgZmlyc3QgY2FsbCB0bworIyBQS0dfQ0hFQ0tfTU9E
VUxFUyBtaWdodCBub3QgaGFwcGVuLCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVkZSBhbgor
IyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91ciBjb25maWd1cmUu
YWMKKyMKKyMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfTU9EVUxFU10sCitbQUNfUkVR
VUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitBQ19BUkdfVkFSKFskMV1bX0NGTEFHU10s
IFtDIGNvbXBpbGVyIGZsYWdzIGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKK0FD
X0FSR19WQVIoWyQxXVtfTElCU10sIFtsaW5rZXIgZmxhZ3MgZm9yICQxLCBvdmVycmlkaW5nIHBr
Zy1jb25maWddKWRubAorCitwa2dfZmFpbGVkPW5vCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0p
CisKK19QS0dfQ09ORklHKFskMV1bX0NGTEFHU10sIFtjZmxhZ3NdLCBbJDJdKQorX1BLR19DT05G
SUcoWyQxXVtfTElCU10sIFtsaWJzXSwgWyQyXSkKKworbTRfZGVmaW5lKFtfUEtHX1RFWFRdLCBb
QWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAkMVtd
X0NGTEFHUworYW5kICQxW11fTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25m
aWcuCitTZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy5dKQorCitp
ZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisgICAJQUNfTVNHX1JFU1VMVChbbm9dKQor
ICAgICAgICBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKyAgICAgICAgaWYgdGVzdCAkX3Br
Z19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICAkMVtdX1BLR19F
UlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzICIkMiIgMj4m
MWAKKyAgICAgICAgZWxzZSAKKwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcg
LS1wcmludC1lcnJvcnMgIiQyIiAyPiYxYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBl
cnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiQkMVtd
X1BLR19FUlJPUlMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKworCW00X2RlZmF1bHQoWyQ0XSwgW0FD
X01TR19FUlJPUigKK1tQYWNrYWdlIHJlcXVpcmVtZW50cyAoJDIpIHdlcmUgbm90IG1ldDoKKwor
JCQxX1BLR19FUlJPUlMKKworQ29uc2lkZXIgYWRqdXN0aW5nIHRoZSBQS0dfQ09ORklHX1BBVEgg
ZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgeW91CitpbnN0YWxsZWQgc29mdHdhcmUgaW4gYSBub24t
c3RhbmRhcmQgcHJlZml4LgorCitfUEtHX1RFWFRdKWRubAorICAgICAgICBdKQorZWxpZiB0ZXN0
ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorICAgICAJQUNfTVNHX1JFU1VMVChbbm9dKQor
CW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19GQUlMVVJFKAorW1RoZSBwa2ctY29uZmlnIHNjcmlw
dCBjb3VsZCBub3QgYmUgZm91bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAoraXMgaW4g
eW91ciBQQVRIIG9yIHNldCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0
aGUgZnVsbAorcGF0aCB0byBwa2ctY29uZmlnLgorCitfUEtHX1RFWFQKKworVG8gZ2V0IHBrZy1j
b25maWcsIHNlZSA8aHR0cDovL3BrZy1jb25maWcuZnJlZWRlc2t0b3Aub3JnLz4uXSlkbmwKKyAg
ICAgICAgXSkKK2Vsc2UKKwkkMVtdX0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MKKwkkMVtd
X0xJQlM9JHBrZ19jdl9bXSQxW11fTElCUworICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQor
CSQzCitmaVtdZG5sCitdKSMgUEtHX0NIRUNLX01PRFVMRVMKZGlmZiAtciBjYTgwZWNhOWNmYTMg
LXIgYjYwNzFjNzEwZjZjIHRvb2xzL200L3B5dGhvbl9kZXZlbC5tNAotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9weXRob25fZGV2ZWwu
bTQJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTggQEAKK0FDX0RF
RlVOKFtBWF9DSEVDS19QWVRIT05fREVWRUxdLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHB5dGhv
biBkZXZlbF0pCisKK2AkUFlUSE9OIC1jICcKK2ltcG9ydCBvcy5wYXRoLCBzeXMKK2ZvciBwIGlu
IHN5cy5wYXRoOgorICAgIGlmIG9zLnBhdGguZXhpc3RzKHAgKyAiL2NvbmZpZy9NYWtlZmlsZSIp
OgorICAgICAgICBzeXMuZXhpdCgwKQorc3lzLmV4aXQoMSkKKycgPiAvZGV2L251bGwgMj4mMWAK
KworaWYgdGVzdCAiJD8iICE9ICIwIgordGhlbgorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAg
ICBBQ19NU0dfRVJST1IoW1B5dGhvbiBkZXZlbCBwYWNrYWdlIG5vdCBmb3VuZF0pCitlbHNlCisg
ICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYjYw
NzFjNzEwZjZjIHRvb2xzL200L3B5dGhvbl92ZXJzaW9uLm00Ci0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3B5dGhvbl92ZXJzaW9uLm00
CVR1ZSBGZWIgMjEgMDE6NDA6MDQgMjAxMiArMDEwMApAQCAtMCwwICsxLDEyIEBACitBQ19ERUZV
TihbQVhfQ0hFQ0tfUFlUSE9OX1ZFUlNJT05dLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHB5dGhv
biB2ZXJzaW9uID49ICQxLiQyIF0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHN5czsgZXhpdChldmFs
KCJzeXMudmVyc2lvbl9pbmZvIDwgKCQxLCAkMikiKSknYAoraWYgdGVzdCAiJD8iICE9ICIwIgor
dGhlbgorICAgIHB5dGhvbl92ZXJzaW9uPWAkUFlUSE9OIC1WIDI+JjFgCisgICAgQUNfTVNHX1JF
U1VMVChbbm9dKQorICAgIEFDX01TR19FUlJPUigKKyAgICAgICAgWyRweXRob25fdmVyc2lvbiBp
cyB0b28gb2xkLCBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb24gaXMgJDEuJDJdKQorZWxzZQorICAg
IEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcx
YzcxMGY2YyB0b29scy9tNC9weXRob25feG1sLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3B5dGhvbl94bWwubTQJVHVlIEZlYiAy
MSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTAgQEAKK0FDX0RFRlVOKFtBWF9DSEVD
S19QWVRIT05fWE1MXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24geG1sLmRvbS5taW5p
ZG9tXSkKK2AkUFlUSE9OIC1jICdpbXBvcnQgeG1sLmRvbS5taW5pZG9tJ2AKK2lmIHRlc3QgIiQ/
IiAhPSAiMCIKK3RoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNHX0VSUk9S
KFtVbmFibGUgdG8gZmluZCB4bWwuZG9tLm1pbmlkb20gbW9kdWxlXSkKK2Vsc2UKKyAgICBBQ19N
U0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBiNjA3MWM3MTBm
NmMgdG9vbHMvbTQvc2V0X2NmbGFnc19sZGZsYWdzLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3NldF9jZmxhZ3NfbGRmbGFncy5t
NAlUdWUgRmViIDIxIDAxOjQwOjA0IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwyMCBAQAorQUNfREVG
VU4oW0FYX1NFVF9GTEFHU10sCitbZm9yIGNmbGFnIGluICRQUkVQRU5EX0lOQ0xVREVTCitkbwor
ICAgIFBSRVBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBpbiAkUFJF
UEVORF9MSUIKK2RvCisgICAgUFJFUEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2RvbmUKK2Zv
ciBjZmxhZyBpbiAkQVBQRU5EX0lOQ0xVREVTCitkbworICAgIEFQUEVORF9DRkxBR1MrPSIgLUkk
Y2ZsYWciCitkb25lCitmb3IgbGRmbGFnIGluICRBUFBFTkRfTElCCitkbworICAgIEFQUEVORF9M
REZMQUdTKz0iIC1MJGxkZmxhZyIKK2RvbmUKK0NGTEFHUz0iJFBSRVBFTkRfQ0ZMQUdTICRDRkxB
R1MgJEFQUEVORF9DRkxBR1MiCitMREZMQUdTPSIkUFJFUEVORF9MREZMQUdTICRMREZMQUdTICRB
UFBFTkRfTERGTEFHUyJdKQorCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB0
b29scy9tNC91ZGV2Lm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCisrKyBiL3Rvb2xzL200L3VkZXYubTQJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEyICswMTAw
CkBAIC0wLDAgKzEsMzIgQEAKK0FDX0RFRlVOKFtBWF9DSEVDS19VREVWXSwKK1tpZiB0ZXN0ICJ4
JGhvc3Rfb3MiID09ICJ4bGludXgtZ251IgordGhlbgorICAgIEFDX1BBVEhfUFJPRyhbVURFVkFE
TV0sIFt1ZGV2YWRtXSwgW25vXSkKKyAgICBpZiB0ZXN0IHgiJHtVREVWQURNfSIgPT0geCJubyIg
CisgICAgdGhlbgorICAgICAgICBBQ19QQVRIX1BST0coW1VERVZJTkZPXSwgW3VkZXZpbmZvXSwg
W25vXSkKKyAgICAgICAgaWYgdGVzdCB4IiR7VURFVklORk99IiA9PSB4Im5vIgorICAgICAgICB0
aGVuCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoCisgICAgICAgICAgICAgICAgW1VuYWJsZSB0
byBmaW5kIHVkZXZhZG0gb3IgdWRldmluZm8sIHBsZWFzZSBpbnN0YWxsIHVkZXZdKQorICAgICAg
ICBmaQorICAgICAgICB1ZGV2dmVyPWAke1VERVZJTkZPfSAtViB8IGF3ayAne3ByaW50ICRORn0n
YAorICAgIGVsc2UKKyAgICAgICAgdWRldnZlcj1gJHtVREVWQURNfSBpbmZvIC1WIHwgYXdrICd7
cHJpbnQgJE5GfSdgCisgICAgZmkKKyAgICBpZiB0ZXN0ICR7dWRldnZlcn0gLWx0IDU5CisgICAg
dGhlbgorICAgICAgICBBQ19QQVRIX1BST0coW0hPVFBMVUddLCBbaG90cGx1Z10sIFtub10pCisg
ICAgICAgIGlmIHRlc3QgeCIke0hPVFBMVUd9IiA9PSB4Im5vIgorICAgICAgICB0aGVuCisgICAg
ICAgICAgICBBQ19NU0dfRVJST1IoW3VkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9u
IDU5IG9yIGxhdGVyXSkKKyAgICAgICAgZmkKKyAgICBmaQorZWxzZQorICAgIEFDX1BBVEhfUFJP
RyhbVk5DT05GSUddLCBbdm5jb25maWddLCBbbm9dKQorICAgIGlmIHRlc3QgeCIke1ZOQ09ORklH
fSIgPT0geCJubyIKKyAgICB0aGVuCisgICAgICAgIEFDX01TR19FUlJPUihbTm90IGEgTGludXgg
c3lzdGVtIGFuZCB1bmFibGUgdG8gZmluZCB2bmRdKQorICAgIGZpCitmaQorXSkKZGlmZiAtciBj
YTgwZWNhOWNmYTMgLXIgYjYwNzFjNzEwZjZjIHRvb2xzL200L3V1aWQubTQKLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvdXVpZC5tNAlU
dWUgRmViIDIxIDAxOjQwOjA0IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMCBAQAorQUNfREVGVU4o
W0FYX0NIRUNLX1VVSURdLAorW2lmIHRlc3QgIngkaG9zdF9vcyIgPT0gInhsaW51eC1nbnUiCit0
aGVuCisgICAgQUNfQ0hFQ0tfSEVBREVSKFt1dWlkL3V1aWQuaF0sLAorCSAgICBbQUNfTVNHX0VS
Uk9SKFtjYW5ub3QgZmluZCB1dWlkIGhlYWRlcnNdKV0pCitlbHNlCisgICAgQUNfQ0hFQ0tfSEVB
REVSKFt1dWlkLmhdLCwKKwkgICAgW0FDX01TR19FUlJPUihbY2Fubm90IGZpbmQgdXVpZCBoZWFk
ZXJzXSldKQorZmkKK10pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGI2MDcxYzcxMGY2YyB2ZXJz
aW9uLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3ZlcnNpb24uc2gJVHVlIEZlYiAyMSAwMTo0MDowNCAyMDEyICswMTAwCkBAIC0wLDAgKzEsNSBA
QAorIyEvYmluL3NoCisKK01BSk9SPWBncmVwICJleHBvcnQgWEVOX1ZFUlNJT04iICQxIHwgc2Vk
ICdzLy4qPS8vZycgfCB0ciAtcyAiICJgCitNSU5PUj1gZ3JlcCAiZXhwb3J0IFhFTl9TVUJWRVJT
SU9OIiAkMSB8IHNlZCAncy8uKj0vL2cnIHwgdHIgLXMgIiAiYAorcHJpbnRmICIlZC4lZCIgJE1B
Sk9SICRNSU5PUgo=

--===============5240906552094329370==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xensource.com/xen-devel

--===============5240906552094329370==--


From xen-devel-bounces@lists.xen.org Tue Feb 21 12:32:24 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Feb 2012 12:32:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1Rzot2-0007eV-Me; Tue, 21 Feb 2012 12:32:04 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1Rzot0-0007eC-Hw
	for xen-devel@lists.xen.org; Tue, 21 Feb 2012 12:32:03 +0000
Received: from [85.158.139.83:18016] by server-11.bemta-5.messagelabs.com id
	60/E5-14397-1CE834F4; Tue, 21 Feb 2012 12:32:01 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-14.tower-182.messagelabs.com!1329827518!15118221!1
X-Originating-IP: [74.125.82.173]
X-SpamReason: No, hits=1.6 required=7.0 tests=BODY_RANDOM_LONG,
	DATE_IN_PAST_06_12,RCVD_BY_IP,UPPERCASE_25_50
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 11209 invoked from network); 21 Feb 2012 12:31:58 -0000
Received: from mail-we0-f173.google.com (HELO mail-we0-f173.google.com)
	(74.125.82.173)
	by server-14.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	21 Feb 2012 12:31:58 -0000
Received: by werh12 with SMTP id h12so4995801wer.32
	for <xen-devel@lists.xen.org>; Tue, 21 Feb 2012 04:31:58 -0800 (PST)
Received-SPF: pass (google.com: domain of royger@gmail.com designates
	10.180.92.227 as permitted sender) client-ip=10.180.92.227; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of royger@gmail.com
	designates 10.180.92.227 as permitted sender)
	smtp.mail=royger@gmail.com; dkim=pass header.i=royger@gmail.com
Received: from mr.google.com ([10.180.92.227])
	by 10.180.92.227 with SMTP id cp3mr25502817wib.13.1329827518079
	(num_hops = 1); Tue, 21 Feb 2012 04:31:58 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:subject:x-mercurial-node
	:message-id:user-agent:date:from:to:cc;
	bh=YoeFB7z2+iUGxDd5CW3hoFqYSOqYLR/gdfG5HmWQ/oU=;
	b=DrmGy4hW4y7eOBOldPr9HvnX38sSbQws94lMfifmd2MP9hvO12x5PF1YKHP/2DAjmB
	5SqwdzFmq0qzZC9cLApIc4rHuLmX7pXnKBum/EOBeuMiovA6ffBKWRKaod2hFYLwoDaA
	SzZhPIS+fpgQGuyHZBpqgx4hbqSZ81axhEykM=
Received: by 10.180.92.227 with SMTP id cp3mr21232612wib.13.1329827517972;
	Tue, 21 Feb 2012 04:31:57 -0800 (PST)
Received: from build.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id
	hb10sm54885159wib.10.2012.02.21.04.31.56
	(version=TLSv1/SSLv3 cipher=OTHER);
	Tue, 21 Feb 2012 04:31:57 -0800 (PST)
Content-Type: multipart/mixed; boundary="===============3706650461757472180=="
MIME-Version: 1.0
X-Mercurial-Node: 3bd6a7f9d07d888f40967ef739d393f805fcbfea
Message-Id: <3bd6a7f9d07d888f4096.1329788138@build.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Tue, 21 Feb 2012 02:35:38 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xen.org
Cc: ian.jackson@citrix.com, ian.campbell@citrix.com
Subject: [Xen-devel] [PATCH v7] build: add autoconf to replace custom checks
	in tools/check
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============3706650461757472180==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Added autotools magic to replace custom check scripts. The previous
checks have been ported to autoconf, and some additional ones have
been added (plus the suggestions from running autoscan). Two files are
created as a result from executing configure script, config/Tools.mk
and config.h.

conf/Tools.mk is included by tools/Rules.mk, and contains most of the
options previously defined in .config, that can now be set passing
parameters or defining environment variables when executing configure
script.

config.h is only used by libxl/xl to detect yajl_version.h.

Changes since v6:

 * Readded autogen.sh.

Changes since v5:

 * Remove dummy configure generation from autogen.sh since it's
   already on the source tree.

 * Removed autogen.sh since it was only a wrapper for calling
   autoconf.

 * Remove comment regarding yajl_version.h from configure.ac.

Changes since v4:

 * Updated to tip.

 * Include config.h from compiler command line when building libxl and
   xl to assure yajl_version.h presence and correctly detect yajl
   version.

 * Added glib-2.0 check with appropiate m4 macros.

 * Purged config.h.in from unnecessary defines that could mess with
   the build system.

 * Removed tools/config.sub, tools/config.guess, tools/configure and
   configure to make the patch fit mailing list limit.

Changes since v3:

 * Copied config.guess and config.sub from automake 1.11.

 * Added a test to check for uuid.h on BSD and uuid/uuid.h on Linux.

Changes since v2:

 * Changed order of config/Tools.mk include.

 * Added "-e" to autogen.sh shebang.

 * Added necessary files (config.*) and output from Autoheader and
   Autoconf.

 * Removed Autoconf from build dependencies and updated README.

Changes since v1:

 * Moved autoconf stuff inside tools folder.

 * Add Makefile rules for cleaning.

 * Removed Automake dependency.

 * Create autogen.sh to automatically create configure script when
   building from source repository.

 * Cached values of options passed from command line.

 * Add necessary ignores to .hgignore.

 * Added Autoconf to the list of dependencies.

 * Changed hypen to underscore in XML2 and CURL variable names.

 * Added script to get version from xen/Makefile.

 * Set Ocaml tools to optional.

 * Added procedence of m4/ocaml.m4.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>


 .hgignore                         |    6 +
 Config.mk                         |   39 ------
 Makefile                          |    2 -
 README                            |    4 +
 autogen.sh                        |    3 +
 config/Tools.mk.in                |   50 +++++++
 configure                         |    2 +
 tools/Makefile                    |    3 +-
 tools/Rules.mk                    |    7 +-
 tools/blktap/drivers/Makefile     |    2 +-
 tools/blktap/drivers/check_gcrypt |   14 --
 tools/check/Makefile              |   26 ----
 tools/check/README                |   20 ---
 tools/check/check_brctl           |   13 --
 tools/check/check_crypto_lib      |   11 -
 tools/check/check_curl            |   13 --
 tools/check/check_iproute         |   15 --
 tools/check/check_libaio_devel    |   11 -
 tools/check/check_libaio_lib      |    9 -
 tools/check/check_openssl_devel   |    6 -
 tools/check/check_python          |   13 --
 tools/check/check_python_devel    |   17 --
 tools/check/check_python_xml      |   12 -
 tools/check/check_udev            |   22 ---
 tools/check/check_uuid_devel      |    7 -
 tools/check/check_x11_devel       |    9 -
 tools/check/check_xgettext        |    6 -
 tools/check/check_xml2            |   14 --
 tools/check/check_yajl_devel      |    8 -
 tools/check/check_zlib_devel      |    6 -
 tools/check/check_zlib_lib        |   12 -
 tools/check/chk                   |   63 ---------
 tools/check/funcs.sh              |  106 ----------------
 tools/config.h.in                 |   16 ++
 tools/configure.ac                |  192 ++++++++++++++++++++++++++++++
 tools/debugger/gdbsx/xg/Makefile  |    1 -
 tools/install.sh                  |    1 +
 tools/libfsimage/Makefile         |    6 +-
 tools/libfsimage/check-libext2fs  |   21 ---
 tools/libxen/Makefile             |    8 +-
 tools/libxl/Makefile              |    7 +-
 tools/libxl/libxl_json.h          |    2 +-
 tools/m4/default_lib.m4           |    8 +
 tools/m4/disable_feature.m4       |   13 ++
 tools/m4/enable_feature.m4        |   13 ++
 tools/m4/ocaml.m4                 |  241 ++++++++++++++++++++++++++++++++++++++
 tools/m4/path_or_fail.m4          |    6 +
 tools/m4/pkg.m4                   |  157 ++++++++++++++++++++++++
 tools/m4/python_devel.m4          |   18 ++
 tools/m4/python_version.m4        |   12 +
 tools/m4/python_xml.m4            |   10 +
 tools/m4/set_cflags_ldflags.m4    |   20 +++
 tools/m4/udev.m4                  |   32 +++++
 tools/m4/uuid.m4                  |   10 +
 version.sh                        |    5 +
 55 files changed, 839 insertions(+), 511 deletions(-)



--===============3706650461757472180==
Content-Type: text/x-patch; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=xen-autoconf.patch

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI5Nzg3NzQ2IC0zNjAwCiMgTm9kZSBJRCAzYmQ2YTdmOWQw
N2Q4ODhmNDA5NjdlZjczOWQzOTNmODA1ZmNiZmVhCiMgUGFyZW50ICBjYTgwZWNhOWNmYTM5ZDFi
NjBkMTIxNjk0OGRhYzU3MTFkNTUwYjgzCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwgY29uZmlnL1Rvb2xzLm1rCmFuZCBjb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMgaW5jbHVk
ZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRpb25zIHBy
ZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBhc3NpbmcK
cGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBleGVjdXRp
bmcgY29uZmlndXJlCnNjcmlwdC4KCmNvbmZpZy5oIGlzIG9ubHkgdXNlZCBieSBsaWJ4bC94bCB0
byBkZXRlY3QgeWFqbF92ZXJzaW9uLmguCgpDaGFuZ2VzIHNpbmNlIHY2OgoKICogUmVhZGRlZCBh
dXRvZ2VuLnNoLgoKQ2hhbmdlcyBzaW5jZSB2NToKCiAqIFJlbW92ZSBkdW1teSBjb25maWd1cmUg
Z2VuZXJhdGlvbiBmcm9tIGF1dG9nZW4uc2ggc2luY2UgaXQncwogICBhbHJlYWR5IG9uIHRoZSBz
b3VyY2UgdHJlZS4KCiAqIFJlbW92ZWQgYXV0b2dlbi5zaCBzaW5jZSBpdCB3YXMgb25seSBhIHdy
YXBwZXIgZm9yIGNhbGxpbmcKICAgYXV0b2NvbmYuCgogKiBSZW1vdmUgY29tbWVudCByZWdhcmRp
bmcgeWFqbF92ZXJzaW9uLmggZnJvbSBjb25maWd1cmUuYWMuCgpDaGFuZ2VzIHNpbmNlIHY0OgoK
ICogVXBkYXRlZCB0byB0aXAuCgogKiBJbmNsdWRlIGNvbmZpZy5oIGZyb20gY29tcGlsZXIgY29t
bWFuZCBsaW5lIHdoZW4gYnVpbGRpbmcgbGlieGwgYW5kCiAgIHhsIHRvIGFzc3VyZSB5YWpsX3Zl
cnNpb24uaCBwcmVzZW5jZSBhbmQgY29ycmVjdGx5IGRldGVjdCB5YWpsCiAgIHZlcnNpb24uCgog
KiBBZGRlZCBnbGliLTIuMCBjaGVjayB3aXRoIGFwcHJvcGlhdGUgbTQgbWFjcm9zLgoKICogUHVy
Z2VkIGNvbmZpZy5oLmluIGZyb20gdW5uZWNlc3NhcnkgZGVmaW5lcyB0aGF0IGNvdWxkIG1lc3Mg
d2l0aAogICB0aGUgYnVpbGQgc3lzdGVtLgoKICogUmVtb3ZlZCB0b29scy9jb25maWcuc3ViLCB0
b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL2NvbmZpZ3VyZSBhbmQKICAgY29uZmlndXJlIHRvIG1h
a2UgdGhlIHBhdGNoIGZpdCBtYWlsaW5nIGxpc3QgbGltaXQuCgpDaGFuZ2VzIHNpbmNlIHYzOgoK
ICogQ29waWVkIGNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiBmcm9tIGF1dG9tYWtlIDEuMTEu
CgogKiBBZGRlZCBhIHRlc3QgdG8gY2hlY2sgZm9yIHV1aWQuaCBvbiBCU0QgYW5kIHV1aWQvdXVp
ZC5oIG9uIExpbnV4LgoKQ2hhbmdlcyBzaW5jZSB2MjoKCiAqIENoYW5nZWQgb3JkZXIgb2YgY29u
ZmlnL1Rvb2xzLm1rIGluY2x1ZGUuCgogKiBBZGRlZCAiLWUiIHRvIGF1dG9nZW4uc2ggc2hlYmFu
Zy4KCiAqIEFkZGVkIG5lY2Vzc2FyeSBmaWxlcyAoY29uZmlnLiopIGFuZCBvdXRwdXQgZnJvbSBB
dXRvaGVhZGVyIGFuZAogICBBdXRvY29uZi4KCiAqIFJlbW92ZWQgQXV0b2NvbmYgZnJvbSBidWls
ZCBkZXBlbmRlbmNpZXMgYW5kIHVwZGF0ZWQgUkVBRE1FLgoKQ2hhbmdlcyBzaW5jZSB2MToKCiAq
IE1vdmVkIGF1dG9jb25mIHN0dWZmIGluc2lkZSB0b29scyBmb2xkZXIuCgogKiBBZGQgTWFrZWZp
bGUgcnVsZXMgZm9yIGNsZWFuaW5nLgoKICogUmVtb3ZlZCBBdXRvbWFrZSBkZXBlbmRlbmN5LgoK
ICogQ3JlYXRlIGF1dG9nZW4uc2ggdG8gYXV0b21hdGljYWxseSBjcmVhdGUgY29uZmlndXJlIHNj
cmlwdCB3aGVuCiAgIGJ1aWxkaW5nIGZyb20gc291cmNlIHJlcG9zaXRvcnkuCgogKiBDYWNoZWQg
dmFsdWVzIG9mIG9wdGlvbnMgcGFzc2VkIGZyb20gY29tbWFuZCBsaW5lLgoKICogQWRkIG5lY2Vz
c2FyeSBpZ25vcmVzIHRvIC5oZ2lnbm9yZS4KCiAqIEFkZGVkIEF1dG9jb25mIHRvIHRoZSBsaXN0
IG9mIGRlcGVuZGVuY2llcy4KCiAqIENoYW5nZWQgaHlwZW4gdG8gdW5kZXJzY29yZSBpbiBYTUwy
IGFuZCBDVVJMIHZhcmlhYmxlIG5hbWVzLgoKICogQWRkZWQgc2NyaXB0IHRvIGdldCB2ZXJzaW9u
IGZyb20geGVuL01ha2VmaWxlLgoKICogU2V0IE9jYW1sIHRvb2xzIHRvIG9wdGlvbmFsLgoKICog
QWRkZWQgcHJvY2VkZW5jZSBvZiBtNC9vY2FtbC5tNC4KClNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBh
dSBNb25uZSA8cm9nZXIucGF1QGVudGVsLnVwYy5lZHU+CgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAt
ciAzYmQ2YTdmOWQwN2QgLmhnaWdub3JlCi0tLSBhLy5oZ2lnbm9yZQlNb24gRmViIDIwIDE4OjM0
OjE0IDIwMTIgKzAwMDAKKysrIGIvLmhnaWdub3JlCVR1ZSBGZWIgMjEgMDI6Mjk6MDYgMjAxMiAr
MDEwMApAQCAtMzAzLDYgKzMwMywxMiBAQAogXnRvb2xzL29jYW1sL2xpYnMveGwveGVubGlnaHRc
Lm1sJAogXnRvb2xzL29jYW1sL2xpYnMveGwveGVubGlnaHRcLm1saSQKIF50b29scy9vY2FtbC94
ZW5zdG9yZWQvb3hlbnN0b3JlZCQKK150b29scy9hdXRvbTR0ZVwuY2FjaGUkCitedG9vbHMvY29u
ZmlnXC5oJAorXnRvb2xzL2NvbmZpZ1wubG9nJAorXnRvb2xzL2NvbmZpZ1wuc3RhdHVzJAorXnRv
b2xzL2NvbmZpZ1wuY2FjaGUkCiteY29uZmlnL1Rvb2xzXC5tayQKIF54ZW4vXC5iYW5uZXIuKiQK
IF54ZW4vQkxPRyQKIF54ZW4vU3lzdGVtLm1hcCQKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2Jk
NmE3ZjlkMDdkIENvbmZpZy5tawotLS0gYS9Db25maWcubWsJTW9uIEZlYiAyMCAxODozNDoxNCAy
MDEyICswMDAwCisrKyBiL0NvbmZpZy5tawlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAxMDAK
QEAgLTcwLDkgKzcwLDYgQEAgRVhUUkFfSU5DTFVERVMgKz0gJChFWFRSQV9QUkVGSVgpL2luY2x1
ZAogRVhUUkFfTElCICs9ICQoRVhUUkFfUFJFRklYKS8kKExJQkxFQUZESVIpCiBlbmRpZgogCi1C
SVNPTgk/PSBiaXNvbgotRkxFWAk/PSBmbGV4Ci0KIFBZVEhPTiAgICAgID89IHB5dGhvbgogUFlU
SE9OX1BSRUZJWF9BUkcgPz0gLS1wcmVmaXg9IiQoUFJFRklYKSIKICMgVGhlIGFib3ZlIHJlcXVp
cmVzIHRoYXQgUFJFRklYIGNvbnRhaW5zICpubyBzcGFjZXMqLiBUaGlzIHZhcmlhYmxlIGlzIGhl
cmUKQEAgLTE3NSwzMiArMTcyLDkgQEAgQ0ZMQUdTICs9ICQoZm9yZWFjaCBpLCAkKFBSRVBFTkRf
SU5DTFVERQogQVBQRU5EX0xERkxBR1MgKz0gJChmb3JlYWNoIGksICQoQVBQRU5EX0xJQiksIC1M
JChpKSkKIEFQUEVORF9DRkxBR1MgKz0gJChmb3JlYWNoIGksICQoQVBQRU5EX0lOQ0xVREVTKSwg
LUkkKGkpKQogCi1DSEVDS19MSUIgPSAkKEVYVFJBX0xJQikgJChQUkVQRU5EX0xJQikgJChBUFBF
TkRfTElCKQotQ0hFQ0tfSU5DTFVERVMgPSAkKEVYVFJBX0lOQ0xVREVTKSAkKFBSRVBFTkRfSU5D
TFVERVMpICQoQVBQRU5EX0lOQ0xVREVTKQotCiBFTUJFRERFRF9FWFRSQV9DRkxBR1MgOj0gLW5v
cGllIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1mbm8tc3RhY2stcHJvdGVjdG9yLWFsbAogRU1CRURE
RURfRVhUUkFfQ0ZMQUdTICs9IC1mbm8tZXhjZXB0aW9ucwogCi1DT05GSUdfTElCSUNPTlYgICA6
PSAkKHNoZWxsIGV4cG9ydCBPUz0iYHVuYW1lIC1zYCI7IFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgZXhwb3J0IENIRUNLX0xJQj0iJChDSEVDS19MSUIpIjsgXAotICAgICAgICAgICAgICAgICAg
ICAgICAuICQoWEVOX1JPT1QpL3Rvb2xzL2NoZWNrL2Z1bmNzLnNoOyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgIGhhc19saWIgbGliaWNvbnYuc28gJiYgZWNobyAneScgfHwgZWNobyAnbicpCi0K
LUNPTkZJR19ZQUpMX1ZFUlNJT04gOj0gJChzaGVsbCBleHBvcnQgT1M9ImB1bmFtZSAtc2AiOyBc
Ci0gICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydCBDSEVDS19JTkNMVURFUz0iJChDSEVDS19J
TkNMVURFUykiOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIC4gJChYRU5fUk9PVCkvdG9vbHMv
Y2hlY2svZnVuY3Muc2g7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgaGFzX2hlYWRlciB5YWps
L3lhamxfdmVyc2lvbi5oICYmIGVjaG8gJ3knIHx8IGVjaG8gJ24nKQotCi0jIEVuYWJsZSBYU00g
c2VjdXJpdHkgbW9kdWxlIChieSBkZWZhdWx0LCBGbGFzaykuCi1YU01fRU5BQkxFID89IG4KLUZM
QVNLX0VOQUJMRSA/PSAkKFhTTV9FTkFCTEUpCi0KLSMgRG93bmxvYWQgR0lUIHJlcG9zaXRvcmll
cyB2aWEgSFRUUCBvciBHSVQncyBvd24gcHJvdG9jb2w/Ci0jIEdJVCdzIHByb3RvY29sIGlzIGZh
c3RlciBhbmQgbW9yZSByb2J1c3QsIHdoZW4gaXQgd29ya3MgYXQgYWxsIChmaXJld2FsbHMKLSMg
bWF5IGJsb2NrIGl0KS4gV2UgbWFrZSBpdCB0aGUgZGVmYXVsdCwgYnV0IGlmIHlvdXIgR0lUIHJl
cG9zaXRvcnkgZG93bmxvYWRzCi0jIGZhaWwgb3IgaGFuZywgcGxlYXNlIHNwZWNpZnkgR0lUX0hU
VFA9eSBpbiB5b3VyIGVudmlyb25tZW50LgotR0lUX0hUVFAgPz0gbgotCiBYRU5fRVhURklMRVNf
VVJMPWh0dHA6Ly94ZW5iaXRzLnhlbnNvdXJjZS5jb20veGVuLWV4dGZpbGVzCiAjIEFsbCB0aGUg
ZmlsZXMgYXQgdGhhdCBsb2NhdGlvbiB3ZXJlIGRvd25sb2FkZWQgZnJvbSBlbHNld2hlcmUgb24K
ICMgdGhlIGludGVybmV0LiAgVGhlIG9yaWdpbmFsIGRvd25sb2FkIFVSTCBpcyBwcmVzZXJ2ZWQg
YXMgYSBjb21tZW50CkBAIC0yMzksMTcgKzIxMyw0IEBAIFFFTVVfVEFHID89IDEyOGRlMjU0OWM1
ZjI0ZTRhNDM3Yjg2YmQyZTQKICMgU2hvcnQgYW5zd2VyIC0tIGRvIG5vdCBlbmFibGUgdGhpcyB1
bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlCiAjIGRvaW5nIGFuZCBhcmUgcHJlcGFyZWQgZm9y
IHNvbWUgcGFpbi4KIAotIyBPcHRpb25hbCBjb21wb25lbnRzCi1YRU5TVEFUX1hFTlRPUCAgICAg
Pz0geQotVlRQTV9UT09MUyAgICAgICAgID89IG4KLUxJQlhFTkFQSV9CSU5ESU5HUyA/PSBuCi1Q
WVRIT05fVE9PTFMgICAgICAgPz0geQotT0NBTUxfVE9PTFMgICAgICAgID89IHkKLUNPTkZJR19N
SU5JVEVSTSAgICA/PSBuCi1DT05GSUdfTE9NT1VOVCAgICAgPz0gbgotQ09ORklHX1NZU1RFTV9M
SUJBSU8gPz0geQogQ09ORklHX1RFU1RTICAgICAgID89IHkKLQotaWZlcSAoJChPQ0FNTF9UT09M
UykseSkKLU9DQU1MX1RPT0xTIDo9ICQoc2hlbGwgb2NhbWxvcHQgLXYgPiAvZGV2L251bGwgMj4m
MSAmJiBlY2hvICJ5IiB8fCBlY2hvICJuIikKLWVuZGlmCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IDNiZDZhN2Y5ZDA3ZCBNYWtlZmlsZQotLS0gYS9NYWtlZmlsZQlNb24gRmViIDIwIDE4OjM0OjE0
IDIwMTIgKzAwMDAKKysrIGIvTWFrZWZpbGUJVHVlIEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAw
CkBAIC00MCwxMSArNDAsOSBAQCBkaXN0OiBERVNURElSPSQoRElTVERJUikvaW5zdGFsbAogZGlz
dDogZGlzdC14ZW4gZGlzdC1rZXJuZWxzIGRpc3QtdG9vbHMgZGlzdC1zdHViZG9tIGRpc3QtZG9j
cyBkaXN0LW1pc2MKIAogZGlzdC1taXNjOgotCSQoSU5TVEFMTF9ESVIpICQoRElTVERJUikvY2hl
Y2sKIAkkKElOU1RBTExfREFUQSkgLi9DT1BZSU5HICQoRElTVERJUikKIAkkKElOU1RBTExfREFU
QSkgLi9SRUFETUUgJChESVNURElSKQogCSQoSU5TVEFMTF9QUk9HKSAuL2luc3RhbGwuc2ggJChE
SVNURElSKQotCSQoSU5TVEFMTF9QUk9HKSB0b29scy9jaGVjay9jaGsgdG9vbHMvY2hlY2svY2hl
Y2tfKiB0b29scy9jaGVjay9mdW5jcy5zaCAkKERJU1RESVIpL2NoZWNrCiBkaXN0LSU6IERFU1RE
SVI9JChESVNURElSKS9pbnN0YWxsCiBkaXN0LSU6IGluc3RhbGwtJQogCUA6ICMgZG8gbm90aGlu
ZwpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2YTdmOWQwN2QgUkVBRE1FCi0tLSBhL1JFQURN
RQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIGIvUkVBRE1FCVR1ZSBGZWIgMjEg
MDI6Mjk6MDYgMjAxMiArMDEwMApAQCAtODksOSArODksMTMgQEAgMi4gY2QgdG8geGVuLXVuc3Rh
YmxlIChvciB3aGF0ZXZlciB5b3UgcwogMy4gRm9yIHRoZSB2ZXJ5IGZpcnN0IGJ1aWxkLCBvciBp
ZiB5b3Ugd2FudCB0byBkZXN0cm95IGJ1aWxkIHRyZWVzLAogICAgcGVyZm9ybSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgogCisgICAgIyAuL2NvbmZpZ3VyZQogICAgICMgbWFrZSB3b3JsZAogICAgICMg
bWFrZSBpbnN0YWxsCiAKKyAgIElmIHlvdSB3YW50LCB5b3UgY2FuIHJ1biAuL2NvbmZpZ3VyZSAt
LWhlbHAgdG8gc2VlIHRoZSBsaXN0IG9mCisgICBvcHRpb25zIGF2YWlsYWJsZSBvcHRpb25zIHdo
ZW4gYnVpbGRpbmcgYW5kIGluc3RhbGxpbmcgWGVuLgorCiAgICBUaGlzIHdpbGwgY3JlYXRlIGFu
ZCBpbnN0YWxsIG9udG8gdGhlIGxvY2FsIG1hY2hpbmUuIEl0IHdpbGwgYnVpbGQKICAgIHRoZSB4
ZW4gYmluYXJ5ICh4ZW4uZ3opLCB0aGUgdG9vbHMgYW5kIHRoZSBkb2N1bWVudGF0aW9uLgogCmRp
ZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCBhdXRvZ2VuLnNoCi0tLSAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2F1dG9nZW4uc2gJVHVlIEZl
YiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC1lCitj
ZCB0b29scworYXV0b2NvbmYKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIGNv
bmZpZy9Ub29scy5tay5pbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi9jb25maWcvVG9vbHMubWsuaW4JVHVlIEZlYiAyMSAwMjoyOTowNiAyMDEyICsw
MTAwCkBAIC0wLDAgKzEsNTAgQEAKKyMgUHJlZml4IGFuZCBpbnN0YWxsIGZvbGRlcgorUFJFRklY
ICAgICAgICAgICAgICA6PSBAcHJlZml4QAorTElCTEVBRkRJUl94ODZfNjQgICA6PSBATElCX1BB
VEhACisKKyMgQSBkZWJ1ZyBidWlsZCBvZiB0b29scz8KK2RlYnVnICAgICAgICAgICAgICAgOj0g
QGRlYnVnQAorCisjIFRvb2xzIHBhdGgKK0JJU09OICAgICAgICAgICAgICAgOj0gQEJJU09OQAor
RkxFWCAgICAgICAgICAgICAgICA6PSBARkxFWEAKK1BZVEhPTiAgICAgICAgICAgICAgOj0gQFBZ
VEhPTkAKK1BZVEhPTl9QQVRIICAgICAgICAgOj0gQFBZVEhPTlBBVEhACitQRVJMICAgICAgICAg
ICAgICAgIDo9IEBQRVJMQAorQlJDVEwgICAgICAgICAgICAgICA6PSBAQlJDVExACitJUCAgICAg
ICAgICAgICAgICAgIDo9IEBJUEAKK0NVUkxfQ09ORklHICAgICAgICAgOj0gQENVUkxACitYTUwy
X0NPTkZJRyAgICAgICAgIDo9IEBYTUxACitCQVNIICAgICAgICAgICAgICAgIDo9IEBCQVNIQAor
WEdFVFRURVhUICAgICAgICAgICA6PSBAWEdFVFRFWFRACisKKyMgRXh0cmEgZm9sZGVyIGZvciBs
aWJzL2luY2x1ZGVzCitQUkVQRU5EX0lOQ0xVREVTICAgIDo9IEBQUkVQRU5EX0lOQ0xVREVTQAor
UFJFUEVORF9MSUIgICAgICAgICA6PSBAUFJFUEVORF9MSUJACitBUFBFTkRfSU5DTFVERVMgICAg
IDo9IEBBUFBFTkRfSU5DTFVERVNACitBUFBFTkRfTElCICAgICAgICAgIDo9IEBBUFBFTkRfTElC
QAorCisjIEVuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxlIChieSBkZWZhdWx0LCBGbGFzaykuCitY
U01fRU5BQkxFICAgICAgICAgIDo9IEB4c21ACitGTEFTS19FTkFCTEUgICAgICAgIDo9IEB4c21A
CisKKyMgRG93bmxvYWQgR0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUCBvciBHSVQncyBvd24gcHJv
dG9jb2w/CisjIEdJVCdzIHByb3RvY29sIGlzIGZhc3RlciBhbmQgbW9yZSByb2J1c3QsIHdoZW4g
aXQgd29ya3MgYXQgYWxsIChmaXJld2FsbHMKKyMgbWF5IGJsb2NrIGl0KS4gV2UgbWFrZSBpdCB0
aGUgZGVmYXVsdCwgYnV0IGlmIHlvdXIgR0lUIHJlcG9zaXRvcnkgZG93bmxvYWRzCisjIGZhaWwg
b3IgaGFuZywgcGxlYXNlIHNwZWNpZnkgR0lUX0hUVFA9eSBpbiB5b3VyIGVudmlyb25tZW50Lgor
R0lUX0hUVFAgICAgICAgICAgICA6PSBAZ2l0aHR0cEAKKworIyBPcHRpb25hbCBjb21wb25lbnRz
CitYRU5TVEFUX1hFTlRPUCAgICAgIDo9IEBtb25pdG9yc0AKK1ZUUE1fVE9PTFMgICAgICAgICAg
Oj0gQHZ0cG1ACitMSUJYRU5BUElfQklORElOR1MgIDo9IEB4YXBpQAorUFlUSE9OX1RPT0xTICAg
ICAgICA6PSBAcHl0aG9udG9vbHNACitPQ0FNTF9UT09MUyAgICAgICAgIDo9IEBvY2FtbHRvb2xz
QAorQ09ORklHX01JTklURVJNICAgICA6PSBAbWluaXRlcm1ACitDT05GSUdfTE9NT1VOVCAgICAg
IDo9IEBsb21vdW50QAorCisjU3lzdGVtIG9wdGlvbnMKK0NPTkZJR19TWVNURU1fTElCQUlPOj0g
QHN5c3RlbV9haW9ACitDT05GSUdfTElCSUNPTlYgICAgIDo9IEBsaWJpY29udkAKK0NPTkZJR19H
Q1JZUFQgICAgICAgOj0gQGxpYmdjcnlwdEAKK0NPTkZJR19FWFQyRlMgICAgICAgOj0gQGxpYmV4
dDJmc0AKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIGNvbmZpZ3VyZQotLS0g
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9jb25maWd1cmUJ
VHVlIEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3No
IC1lCitjZCB0b29scyAmJiAuL2NvbmZpZ3VyZSAkQApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAz
YmQ2YTdmOWQwN2QgdG9vbHMvTWFrZWZpbGUKLS0tIGEvdG9vbHMvTWFrZWZpbGUJTW9uIEZlYiAy
MCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL01ha2VmaWxlCVR1ZSBGZWIgMjEgMDI6
Mjk6MDYgMjAxMiArMDEwMApAQCAtNiw3ICs2LDYgQEAgU1VCRElSUy1saWJhaW8gOj0gbGliYWlv
CiBlbmRpZgogCiBTVUJESVJTLXkgOj0KLVNVQkRJUlMteSArPSBjaGVjawogU1VCRElSUy15ICs9
IGluY2x1ZGUKIFNVQkRJUlMteSArPSBsaWJ4YwogU1VCRElSUy15ICs9IGZsYXNrCkBAIC03OSw2
ICs3OCw4IEBAIGNsZWFuOiBzdWJkaXJzLWNsZWFuCiBkaXN0Y2xlYW46IHN1YmRpcnMtZGlzdGNs
ZWFuCiAJcm0gLXJmIHFlbXUteGVuLXRyYWRpdGlvbmFsLWRpciBxZW11LXhlbi10cmFkaXRpb25h
bC1kaXItcmVtb3RlCiAJcm0gLXJmIHFlbXUteGVuLWRpciBxZW11LXhlbi1kaXItcmVtb3RlCisJ
cm0gLXJmIC4uL2NvbmZpZy9Ub29scy5tayBjb25maWcuaCBjb25maWcubG9nIGNvbmZpZy5zdGF0
dXMgXAorCQljb25maWcuY2FjaGUgYXV0b200dGUuY2FjaGUKIAogaWZuZXEgKCQoWEVOX0NPTVBJ
TEVfQVJDSCksJChYRU5fVEFSR0VUX0FSQ0gpKQogSU9FTVVfQ09ORklHVVJFX0NST1NTID89IC0t
Y3B1PSQoWEVOX1RBUkdFVF9BUkNIKSBcCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5
ZDA3ZCB0b29scy9SdWxlcy5tawotLS0gYS90b29scy9SdWxlcy5tawlNb24gRmViIDIwIDE4OjM0
OjE0IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMvUnVsZXMubWsJVHVlIEZlYiAyMSAwMjoyOTowNiAy
MDEyICswMTAwCkBAIC00LDYgKzQsNyBAQAogYWxsOgogCiBpbmNsdWRlICQoWEVOX1JPT1QpL0Nv
bmZpZy5taworaW5jbHVkZSAkKFhFTl9ST09UKS9jb25maWcvVG9vbHMubWsKIAogZXhwb3J0IF9J
TlNUQUxMIDo9ICQoSU5TVEFMTCkKIElOU1RBTEwgPSAkKFhFTl9ST09UKS90b29scy9jcm9zcy1p
bnN0YWxsCkBAIC04MCw4ICs4MSw2IEBAIGNoZWNrLSQoQ09ORklHX1g4NikgPSAkKGNhbGwgY2Mt
dmVyLWNoZWMKICAgICAgICAgICAgICAgICAgICAgICAgICJYZW4gcmVxdWlyZXMgYXQgbGVhc3Qg
Z2NjLTMuNCIpCiAkKGV2YWwgJChjaGVjay15KSkKIAotX1BZVEhPTl9QQVRIIDo9ICQoc2hlbGwg
d2hpY2ggJChQWVRIT04pKQotUFlUSE9OX1BBVEggPz0gJChfUFlUSE9OX1BBVEgpCiBJTlNUQUxM
X1BZVEhPTl9QUk9HID0gXAogCSQoWEVOX1JPT1QpL3Rvb2xzL3B5dGhvbi9pbnN0YWxsLXdyYXAg
IiQoUFlUSE9OX1BBVEgpIiAkKElOU1RBTExfUFJPRykKIApAQCAtMTA5LDMgKzEwOCw3IEBAIHN1
YmRpci1hbGwtJSBzdWJkaXItY2xlYW4tJSBzdWJkaXItaW5zdGEKIAogc3ViZGlyLWRpc3RjbGVh
bi0lOiAucGhvbnkKIAkkKE1BS0UpIC1DICQqIGNsZWFuCisKKyQoWEVOX1JPT1QpL2NvbmZpZy9U
b29scy5tazoKKwlAZWNobyAiWW91IGhhdmUgdG8gcnVuIC4vY29uZmlndXJlIGJlZm9yZSBidWls
ZGluZyBvciBpbnN0YWxsaW5nIHRoZSB0b29scyIKKwlAZXhpdCAxCmRpZmYgLXIgY2E4MGVjYTlj
ZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9ibGt0YXAvZHJpdmVycy9NYWtlZmlsZQotLS0gYS90
b29scy9ibGt0YXAvZHJpdmVycy9NYWtlZmlsZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAw
MDAKKysrIGIvdG9vbHMvYmxrdGFwL2RyaXZlcnMvTWFrZWZpbGUJVHVlIEZlYiAyMSAwMjoyOTow
NiAyMDEyICswMTAwCkBAIC0xMyw3ICsxMyw3IEBAIENGTEFHUyAgICs9ICQoQ0ZMQUdTX2xpYnhl
bnN0b3JlKQogQ0ZMQUdTICAgKz0gLUkgJChNRU1TSFJfRElSKQogQ0ZMQUdTICAgKz0gLURfR05V
X1NPVVJDRQogCi1pZmVxICgkKHNoZWxsIC4gLi9jaGVja19nY3J5cHQgJChDQykpLHllcykKK2lm
ZXEgKCRDT05GSUdfR0NSWVBULHkpCiBDRkxBR1MgKz0gLURVU0VfR0NSWVBUCiBDUllQVF9MSUIg
Oj0gLWxnY3J5cHQKIGVsc2UKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRv
b2xzL2Jsa3RhcC9kcml2ZXJzL2NoZWNrX2djcnlwdAotLS0gYS90b29scy9ibGt0YXAvZHJpdmVy
cy9jaGVja19nY3J5cHQJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE0ICswLDAgQEAKLSMhL2Jp
bi9zaAotCi1jYXQgPiAuZ2NyeXB0LmMgPDwgRU9GCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci1pbnQg
bWFpbih2b2lkKSB7IHJldHVybiAwOyB9Ci1FT0YKLQotaWYgJDEgLW8gLmdjcnlwdCAuZ2NyeXB0
LmMgLWxnY3J5cHQgMj4vZGV2L251bGwgOyB0aGVuCi0gIGVjaG8gInllcyIKLWVsc2UKLSAgZWNo
byAibm8iCi1maQotCi1ybSAtZiAuZ2NyeXB0KgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2
YTdmOWQwN2QgdG9vbHMvY2hlY2svTWFrZWZpbGUKLS0tIGEvdG9vbHMvY2hlY2svTWFrZWZpbGUJ
TW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDI2ICswLDAgQEAKLVhFTl9ST09UID0gJChDVVJESVIp
Ly4uLy4uCi1pbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCi0KLSMgRXhwb3J0IHRo
ZSBuZWNlc3NhcnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgdGVzdHMKLWV4cG9ydCBQ
WVRIT04KLWV4cG9ydCBMSUJYRU5BUElfQklORElOR1MKLWV4cG9ydCBDSEVDS19JTkNMVURFUwot
ZXhwb3J0IENIRUNLX0xJQgotZXhwb3J0IENPTkZJR19TWVNURU1fTElCQUlPCi0KLS5QSE9OWTog
YWxsIGluc3RhbGwKLWFsbCBpbnN0YWxsOiBjaGVjay1idWlsZAotCi0jIENoZWNrIHRoaXMgbWFj
aGluZSBpcyBPSyBmb3IgYnVpbGRpbmcgb24uCi0uUEhPTlk6IGNoZWNrLWJ1aWxkCi1jaGVjay1i
dWlsZDoKLQkuL2NoayBidWlsZAotCi0jIENoZWNrIHRoaXMgbWFjaGluZSBpcyBPSyBmb3IgaW5z
dGFsbGluZyBvbi4KLS5QSE9OWTogY2hlY2staW5zdGFsbAotY2hlY2staW5zdGFsbDoKLQkuL2No
ayBpbnN0YWxsCi0KLS5QSE9OWTogY2xlYW4KLWNsZWFuOgotCS4vY2hrIGNsZWFuCmRpZmYgLXIg
Y2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9jaGVjay9SRUFETUUKLS0tIGEvdG9v
bHMvY2hlY2svUkVBRE1FCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMCArMCwwIEBACi1DaGVj
a3MgZm9yIHRoZSBzdWl0YWJpbGl0eSBvZiBhIG1hY2hpbmUgZm9yIFhlbiBidWlsZCBvciBpbnN0
YWxsLgotVG8gY2hlY2sgZm9yIGJ1aWxkIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hr
IGJ1aWxkCi0KLVRvIGNoZWNrIGZvciBpbnN0YWxsIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAg
IC4vY2hrIGluc3RhbGwKLQotVGhlIGNoayBzY3JpcHQgd2lsbCBydW4gY2hlY2tzIGluIHRoaXMg
ZGlyZWN0b3J5IGFuZCBwcmludAotdGhlIG9uZXMgdGhhdCBmYWlsZWQuIEl0IHByaW50cyBub3Ro
aW5nIGlmIGNoZWNrcyBzdWNjZWVkLgotVGhlIGNoayBzY3JpcHQgZXhpdHMgd2l0aCAwIG9uIHN1
Y2Nlc3MgYW5kIDEgb24gZmFpbHVyZS4KLQotVGhlIGNoayBzY3JpcHQgcnVucyBleGVjdXRhYmxl
IGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IHdob3NlCi1uYW1lcyBiZWdpbiB3aXRoICdjaGVja18n
LiBGaWxlcyBjb250YWluaW5nIENIRUNLLUJVSUxECi1hcmUgcnVuIGZvciB0aGUgYnVpbGQgY2hl
Y2ssIGFuZCBmaWxlcyBjb250YWluaW5nIENIRUNLLUlOU1RBTEwKLWFyZSBydW4gZm9yIHRoZSBp
bnN0YWxsIGNoZWNrLgotCi1EZXRhaWxlZCBvdXRwdXQgZnJvbSB0aGUgY2hlY2sgc2NyaXB0cyBp
cyBpbiAuY2hrYnVpbGQgZm9yIGJ1aWxkCi1hbmQgLmNoa2luc3RhbGwgZm9yIGluc3RhbGwuClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2YTdm
OWQwN2QgdG9vbHMvY2hlY2svY2hlY2tfYnJjdGwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfYnJj
dGwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVD
Sy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotT3BlbkJTRHxOZXRCU0R8
RnJlZUJTRCkKLQloYXNfb3JfZmFpbCBicmNvbmZpZyA7OwotTGludXgpCi0JaGFzX29yX2ZhaWwg
YnJjdGwgOzsKLSopCi0JZmFpbCAidW5rbm93biBPUyIgOzsKLWVzYWMKZGlmZiAtciBjYTgwZWNh
OWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX2NyeXB0b19saWIKLS0tIGEv
dG9vbHMvY2hlY2svY2hlY2tfY3J5cHRvX2xpYglNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAw
MDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTEg
KzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1
bmNzLnNoCi0KLWNhc2UgJE9TIGluCi1GcmVlQlNEfE5ldEJTRHxPcGVuQlNEKQotCWV4aXQgMCA7
OwotZXNhYwotCi1oYXNfbGliIGxpYmNyeXB0by5zbyB8fCBmYWlsICJtaXNzaW5nIGxpYmNyeXB0
by5zbyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2No
ZWNrX2N1cmwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfY3VybAlNb24gRmViIDIwIDE4OjM0OjE0
IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsMTMgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwK
LQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgIiRMSUJYRU5BUElfQklORElOR1MiICE9ICJ5IiBdOyB0
aGVuCi0JZWNobyAtbiAidW51c2VkLCAiCi0JZXhpdCAwCi1maQotCi1oYXNfb3JfZmFpbCBjdXJs
LWNvbmZpZwotY3VybF9saWJzPWBjdXJsLWNvbmZpZyAtLWxpYnNgIHx8IGZhaWwgImN1cmwtY29u
ZmlnIC0tbGlicyBmYWlsZWQiCi10ZXN0X2xpbmsgJGN1cmxfbGlicyB8fCBmYWlsICJkZXBlbmRl
bmN5IGxpYnJhcmllcyBmb3IgY3VybCBhcmUgbWlzc2luZyIKZGlmZiAtciBjYTgwZWNhOWNmYTMg
LXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX2lwcm91dGUKLS0tIGEvdG9vbHMvY2hl
Y2svY2hlY2tfaXByb3V0ZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTUgKzAsMCBAQAotIyEv
YmluL3NoCi0jIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLVBBVEg9L3NiaW46JFBB
VEgKLQotY2FzZSAkT1MgaW4KLU9wZW5CU0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwg
aWZjb25maWcgOzsKLUxpbnV4KQotCWhhc19vcl9mYWlsIGlwIDs7Ci0qKQotCWZhaWwgInVua25v
d24gT1MiIDs7Ci1lc2FjCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29s
cy9jaGVjay9jaGVja19saWJhaW9fZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfbGliYWlv
X2RldmVsCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMg
Q0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJB
SU99ICE9IFgieSIgXSA7IHRoZW4KLSAgICBleGl0IDAKLWZpCi1pZiAhIGhhc19oZWFkZXIgbGli
YWlvLmggOyB0aGVuCi0gICAgZmFpbCAiY2FuJ3QgZmluZCBsaWJhaW8gaGVhZGVycywgaW5zdGFs
bCBsaWJhaW8gZGV2ZWwgcGFja2FnZSBvciBzZXQgQ09ORklHX1NZU1RFTV9MSUJBSU89biIKLWZp
CmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9jaGVjay9jaGVja19s
aWJhaW9fbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19saWIJTW9uIEZlYiAyMCAx
ODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCkBAIC0xLDkgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlO
U1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9
IFgieSIgXSA7IHRoZW4KLSAgICBleGl0IDAKLWZpCi1oYXNfbGliIGxpYmFpby5zbyB8fCBmYWls
ICJjYW4ndCBmaW5kIGxpYmFpbyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdk
IHRvb2xzL2NoZWNrL2NoZWNrX29wZW5zc2xfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tf
b3BlbnNzbF9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4v
c2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgb3BlbnNzbC9t
ZDUuaCB8fCBmYWlsICJtaXNzaW5nIG9wZW5zc2wgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNm
YTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbgotLS0gYS90b29scy9j
aGVjay9jaGVja19weXRob24JTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMh
L2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1p
ZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgotICBQWVRIT049cHl0aG9uCi1maQotCi0ke1BZVEhP
Tn0gLWMgJwotaW1wb3J0IHN5cwotc3lzLmV4aXQoc3lzLnZlcnNpb25faW5mb1swXSA8IDIgb3Ig
c3lzLnZlcnNpb25faW5mb1sxXSA8IDMpCi0nIHx8IGZhaWwgIm5lZWQgcHl0aG9uIHZlcnNpb24g
Pj0gMi4zIgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2YTdmOWQwN2QgdG9vbHMvY2hlY2sv
Y2hlY2tfcHl0aG9uX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl9kZXZlbAlN
b24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTcgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJV
SUxECi0KLS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgotICBQWVRI
T049cHl0aG9uCi1maQotaGFzX29yX2ZhaWwgJHtQWVRIT059Ci0KLSR7UFlUSE9OfSAtYyAnCi1p
bXBvcnQgb3MucGF0aCwgc3lzCi1mb3IgcCBpbiBzeXMucGF0aDoKLQlpZiBvcy5wYXRoLmV4aXN0
cyhwICsgIi9jb25maWcvTWFrZWZpbGUiKToKLQkJc3lzLmV4aXQoMCkKLXN5cy5leGl0KDEpCi0n
IHx8IGZhaWwgImNhbid0IGZpbmQgcHl0aG9uIGRldmVsIGZpbGVzIgpkaWZmIC1yIGNhODBlY2E5
Y2ZhMyAtciAzYmQ2YTdmOWQwN2QgdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX3htbAotLS0gYS90
b29scy9jaGVjay9jaGVja19weXRob25feG1sCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAw
MAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiAr
MCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotaWYg
dGVzdCAteiAke1BZVEhPTn07IHRoZW4KLSAgUFlUSE9OPXB5dGhvbgotZmkKLWhhc19vcl9mYWls
ICR7UFlUSE9OfQotCi0ke1BZVEhPTn0gLWMgJ2ltcG9ydCB4bWwuZG9tLm1pbmlkb20nIDI+L2Rl
di9udWxsIHx8IFwKLWZhaWwgImNhbid0IGltcG9ydCB4bWwuZG9tLm1pbmlkb20iCmRpZmYgLXIg
Y2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9jaGVjay9jaGVja191ZGV2Ci0tLSBh
L3Rvb2xzL2NoZWNrL2NoZWNrX3VkZXYJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisr
KyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIyICswLDAg
QEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRP
UyBpbgotT3BlbkJTRHxOZXRCU0R8RnJlZUJTRCkKLQloYXNfb3JfZmFpbCB2bmNvbmZpZwotCTs7
Ci1MaW51eCkKLQloYXMgL3NiaW4vdWRldmFkbSAmJiBcCi0JCXVkZXZ2ZXI9YC9zYmluL3VkZXZh
ZG0gaW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAotCVsgLXogIiR1ZGV2dmVyIiBdICYmIGhh
c19vcl9mYWlsIHVkZXZpbmZvICYmIFwKLQkJdWRldnZlcj1gdWRldmluZm8gLVYgfCBhd2sgJ3tw
cmludCAkTkZ9J2AKLQlbICIkdWRldnZlciIgLWdlIDU5IF0gMj4vZGV2L251bGwgfHwgXAotCQlo
YXMgaG90cGx1ZyB8fCBcCi0JCWZhaWwgInVkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2ZXJz
aW9uIDU5IG9yIGxhdGVyIgotCTs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiCi0JOzsKLWVzYWMK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX3V1
aWRfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfdXVpZF9kZXZlbAlNb24gRmViIDIwIDE4
OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsNyArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1
bmNzLnNoCi0KLWhhc19oZWFkZXIgdXVpZC5oIHx8IFwKLWhhc19oZWFkZXIgdXVpZC91dWlkLmgg
fHwgZmFpbCAibWlzc2luZyB1dWlkIGhlYWRlcnMgKHBhY2thZ2UgdXVpZC1kZXYpIgpkaWZmIC1y
IGNhODBlY2E5Y2ZhMyAtciAzYmQ2YTdmOWQwN2QgdG9vbHMvY2hlY2svY2hlY2tfeDExX2RldmVs
Ci0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3gxMV9kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIw
MTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg
LTEsOSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0K
LWhhc19oZWFkZXIgWDExL2tleXN5bWRlZi5oIHx8IFwKLWhhc19oZWFkZXIgL3Vzci9YMTFSNi9p
bmNsdWRlL1gxMS9rZXlzeW1kZWYuaCB8fCBcCi1oYXNfaGVhZGVyIC91c3IvWDExUjcvaW5jbHVk
ZS9YMTEva2V5c3ltZGVmLmggfHwgXAotd2FybmluZyAiY2FuJ3QgZmluZCBYMTEgaGVhZGVycyIK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX3hn
ZXR0ZXh0Ci0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3hnZXR0ZXh0CU1vbiBGZWIgMjAgMTg6MzQ6
MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAw
MApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Mu
c2gKLQotaGFzX29yX2ZhaWwgeGdldHRleHQKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3
ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX3htbDIKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfeG1s
MglNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTQgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNL
LUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgISAiJExJQlhFTkFQ
SV9CSU5ESU5HUyIgPSAieSIgXQotdGhlbgotICAgIGVjaG8gLW4gInVudXNlZCwgIgotICAgIGV4
aXQgMAotZmkKLQotaGFzX29yX2ZhaWwgeG1sMi1jb25maWcKLXhtbDJfbGlicz1geG1sMi1jb25m
aWcgLS1saWJzYCB8fCBmYWlsICJ4bWwyLWNvbmZpZyAtLWxpYnMgZmFpbGVkIgotdGVzdF9saW5r
ICR4bWwyX2xpYnMgfHwgZmFpbCAiZGVwZW5kZW5jeSBsaWJyYXJpZXMgZm9yIHhtbDIgYXJlIG1p
c3NpbmciCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9jaGVjay9j
aGVja195YWpsX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3lhamxfZGV2ZWwJTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDggKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0K
LS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHlhamwveWFqbF9wYXJzZS5oIHx8IGZhaWwgImNh
bid0IGZpbmQgeWFqbC95YWpsX3BhcnNlLmgiCi1oYXNfaGVhZGVyIHlhamwveWFqbF9nZW4uaCB8
fCBmYWlsICJjYW4ndCBmaW5kIHlhamwveWFqbF9nZW4uaCIKLWhhc19saWIgbGlieWFqbC5zbyB8
fCBmYWlsICJjYW4ndCBmaW5kIGxpYnlhamwuc28iCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNi
ZDZhN2Y5ZDA3ZCB0b29scy9jaGVjay9jaGVja196bGliX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNr
L2NoZWNrX3psaWJfZGV2ZWwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEv
YmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHpsaWIu
aCB8fCBmYWlsICJjYW4ndCBmaW5kIHpsaWIgaGVhZGVycyIKZGlmZiAtciBjYTgwZWNhOWNmYTMg
LXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoZWNrX3psaWJfbGliCi0tLSBhL3Rvb2xzL2No
ZWNrL2NoZWNrX3psaWJfbGliCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBACi0j
IS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQot
Y2FzZSAkT1MgaW4KLUZyZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwCi0JOzsKLWVzYWMK
LQotaGFzX2xpYiBsaWJ6LnNvIHx8IGZhaWwgImNhbid0IGZpbmQgemxpYiIKZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2NoZWNrL2NoawotLS0gYS90b29scy9jaGVj
ay9jaGsJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1m
dW5jX3VzYWdlICgpCi17Ci0gICAgZWNobyAiVXNhZ2U6IgotICAgIGVjaG8gIgkkMCBbYnVpbGR8
aW5zdGFsbHxjbGVhbl0iCi0gICAgZWNobwotICAgIGVjaG8gIkNoZWNrIHN1aXRhYmlsaXR5IGZv
ciBYZW4gYnVpbGQgb3IgaW5zdGFsbC4iCi0gICAgZWNobyAiRXhpdCB3aXRoIDAgaWYgT0ssIDEg
aWYgbm90LiIKLSAgICBlY2hvCi0gICAgZWNobyAiQ2FsbGluZyB3aXRoICdjbGVhbicgcmVtb3Zl
cyBnZW5lcmF0ZWQgZmlsZXMuIgotICAgIGV4aXQgMQotfQotCi1QQVRIPSRQQVRIOi9zYmluOi91
c3Ivc2JpbgotT1M9YHVuYW1lIC1zYAotZXhwb3J0IFBBVEggT1MKLQotaWYgWyAiJE9TIiA9ICJT
dW5PUyIgXTsgdGhlbgotCWV4aXQgMAotZmkKLQotY2FzZSAkMSBpbgotICAgIGJ1aWxkKQotICAg
ICAgICBjaGVjaz0iQ0hFQ0stQlVJTEQiCi0gICAgICAgIDs7Ci0gICAgaW5zdGFsbCkKLSAgICAg
ICAgY2hlY2s9IkNIRUNLLUlOU1RBTEwiCi0gICAgICAgIDs7Ci0gICAgY2xlYW4pCi0gICAgICAg
IGV4aXQgMAotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGZ1bmNfdXNhZ2UKLSAgICAgICAg
OzsKLWVzYWMKLQotZmFpbGVkPTAKLQotZWNobyAiWGVuICR7Y2hlY2t9ICIgYGRhdGVgCi1mb3Ig
ZiBpbiBjaGVja18qIDsgZG8KLSAgICBjYXNlICRmIGluCi0gICAgICAgICp+KQotICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICA7Owot
ICAgIGVzYWMKLSAgICBpZiAhIFsgLXggJGYgXSA7IHRoZW4KLSAgICAgICAgY29udGludWUKLSAg
ICBmaQotICAgIGlmICEgZ3JlcCAtRnEgIiRjaGVjayIgJGYgOyB0aGVuCi0gICAgICAgIGNvbnRp
bnVlCi0gICAgZmkKLSAgICBlY2hvIC1uICJDaGVja2luZyAkZjogIgotICAgIGlmIC4vJGYgMj4m
MSA7IHRoZW4KLSAgICAgICAgZWNobyBPSwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkPTEKLSAg
ICBmaQotZG9uZQotCi1leGl0ICR7ZmFpbGVkfQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2
YTdmOWQwN2QgdG9vbHMvY2hlY2svZnVuY3Muc2gKLS0tIGEvdG9vbHMvY2hlY2svZnVuY3Muc2gJ
TW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEwNiArMCwwIEBACi0jIGhhcyBpcyB0aGUgc2FtZSBh
cyB3aGljaCwgZXhjZXB0IGl0IGhhbmRsZXMgY3Jvc3MgZW52aXJvbm1lbnRzCi1oYXMoKSB7Ci0J
aWYgWyAteiAiJENST1NTX0NPTVBJTEUiIF07IHRoZW4KLQkJY29tbWFuZCB3aGljaCAiJEAiCi0J
CXJldHVybiAkPwotCWZpCi0KLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJz
aGVsbCB0byBwcmV2ZW50IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBJRlMKLQkoCi0JSUZTPToKLQlm
b3IgcCBpbiAkUEFUSDsgZG8KLQkJaWYgWyAteCAiJENST1NTX1NZU19ST09ULyRwLyQxIiBdOyB0
aGVuCi0JCQllY2hvICIkQ1JPU1NfU1lTX1JPT1QvJHAvJDEiCi0JCQlyZXR1cm4gMAotCQlmaQot
CWRvbmUKLQlyZXR1cm4gMQotCSkKLX0KLQotaGFzX29yX2ZhaWwoKSB7Ci0JaGFzICIkMSIgPi9k
ZXYvbnVsbCB8fCBmYWlsICJjYW4ndCBmaW5kICQxIgotfQotCi1oYXNfaGVhZGVyKCkgewotCWNo
ZWNrX3N5c19yb290IHx8IHJldHVybiAxCi0KLQljYXNlICQxIGluCi0JCS8qKSA7OwotCQkqKQot
CQlpZiBbIC1yICIkQ1JPU1NfU1lTX1JPT1QvdXNyL2luY2x1ZGUvJDEiIF07IHRoZW4KLQkJCXJl
dHVybiAwCi0JCWZpCi0JCWZvciBwYXRoIGluICR7Q0hFQ0tfSU5DTFVERVN9OyBkbwotCQkJaWYg
WyAtciAiJENST1NTX1NZU19ST09UJHtwYXRofS8kMSIgXTsgdGhlbgotCQkJCXJldHVybiAwCi0J
CQlmaQotCQlkb25lCi0JCTs7Ci0JZXNhYwotCi0JcmV0dXJuIDEKLX0KLQotaGFzX2xpYigpIHsK
LQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50IHBv
bGx1dGlvbiBvZiBjYWxsZXIncyBlbnZpcm9ubWVudAotCSgKLQlQQVRIPS9zYmluOiRQQVRIICAg
ICAgICAjIGZvciBsZGNvbmZpZwotCUxJQlJBUklFUz0iJENIRUNLX0xJQiAvdXNyL2xpYiIKLQot
CSMgVGhpcyByZWxhdGl2ZWx5IGNvbW1vbiBpbiBhIHN5cy1yb290OyBsaWJzIGFyZSBpbnN0YWxs
ZWQgYnV0Ci0JIyBsZGNvbmZpZyBoYXNuJ3QgcnVuIHRoZXJlLCBzbyBsZGNvbmZpZyAtcCB3b24n
dCB3b3JrLgotCWlmIFsgIiRPUyIgPSBMaW51eCAtYSAhIC1mICIkQ1JPU1NfU1lTX1JPT1QvZXRj
L2xkLnNvLmNhY2hlIiBdOyB0aGVuCi0JICAgIGVjaG8gIlBsZWFzZSBydW4gbGRjb25maWcgLXIg
XCIkQ1JPU1NfU1lTX1JPT1RcIiB0byBnZW5lcmF0ZSBsZC5zby5jYWNoZSIKLQkgICAgIyBmYWxs
IHRocm91Z2g7IGxkY29uZmlnIHRlc3QgYmVsb3cgc2hvdWxkIGZhaWwKLQlmaQotCWlmIFsgIiR7
T1N9IiA9ICJMaW51eCIgXTsgdGhlbgotCQlsZGNvbmZpZyAtcCAke0NST1NTX1NZU19ST09UKy1y
ICIkQ1JPU1NfU1lTX1JPT1QifSB8IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlp
ZiBbICIke09TfSIgPSAiTmV0QlNEIiBdOyB0aGVuCi0JCWxzIC0xICR7TElCUkFSSUVTfSB8IGdy
ZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlyZXR1cm4gMQotCSkKLX0KLQotdGVzdF9s
aW5rKCkgewotCSMgc3Vic2hlbGwgdG8gdHJhcCByZW1vdmFsIG9mIHRtcGZpbGUKLQkoCi0JdW5z
ZXQgdG1wZmlsZQotCXRyYXAgJ3JtIC1mICIkdG1wZmlsZSI7IGV4aXQnIDAgMSAyIDE1Ci0JdG1w
ZmlsZT1gbWt0ZW1wYCB8fCByZXR1cm4gMQotCWxkICIkQCIgLW8gIiR0bXBmaWxlIiA+L2Rldi9u
dWxsIDI+JjEKLQlyZXR1cm4gJD8KLQkpCi19Ci0KLSMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGNv
bW1vbmx5IGFib3ZlCi1jaGVja19zeXNfcm9vdCgpIHsKLQlbIC16ICIkQ1JPU1NfQ09NUElMRSIg
XSAmJiByZXR1cm4gMAotCWlmIFsgLXogIiRDUk9TU19TWVNfUk9PVCIgXTsgdGhlbgotCQllY2hv
ICJwbGVhc2Ugc2V0IENST1NTX1NZU19ST09UIGluIHRoZSBlbnZpcm9ubWVudCIKLQkJcmV0dXJu
IDEKLQlmaQotCWlmIFsgISAtZCAiJENST1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8gIm5v
IHN5cy1yb290IGZvdW5kIGF0ICRDUk9TU19TWVNfUk9PVCIKLQkJcmV0dXJuIDEKLQlmaQotfQot
Ci13YXJuaW5nKCkgewotCWVjaG8KLQllY2hvICIgKioqIGBiYXNlbmFtZSAiJDAiYCBGQUlMRUQk
eyorOiAkKn0iCi19Ci0KLWZhaWwoKSB7Ci0JZWNobwotCWVjaG8gIiAqKiogYGJhc2VuYW1lICIk
MCJgIEZBSUxFRCR7Kis6ICQqfSIKLQlleGl0IDEKLX0KZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIg
M2JkNmE3ZjlkMDdkIHRvb2xzL2NvbmZpZy5oLmluCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2NvbmZpZy5oLmluCVR1ZSBGZWIgMjEgMDI6
Mjk6MDYgMjAxMiArMDEwMApAQCAtMCwwICsxLDE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICogYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLjEgb25seS4gd2l0aCB0aGUgc3BlY2lh
bAorICogZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPHlhamwveWFqbF92ZXJzaW9uLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVm
IEhBVkVfWUFKTF9ZQUpMX1ZFUlNJT05fSApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2YTdm
OWQwN2QgdG9vbHMvY29uZmlndXJlLmFjCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2NvbmZpZ3VyZS5hYwlUdWUgRmViIDIxIDAyOjI5OjA2
IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxOTIgQEAKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgUHJvY2VzcyB0aGlzIGZp
bGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KKworQUNfUFJF
UkVRKFsyLjY3XSkKK0FDX0lOSVQoW1hlbiBIeXBlcnZpc29yXSwgbTRfZXN5c2NtZChbLi4vdmVy
c2lvbi5zaCAuLi94ZW4vTWFrZWZpbGVdKSwKKyAgICBbeGVuLWRldmVsQGxpc3RzLnhlbnNvdXJj
ZS5jb21dKQorQUNfQ09ORklHX1NSQ0RJUihbbGlieGwvbGlieGwuY10pCitBQ19DT05GSUdfRklM
RVMoWy4uL2NvbmZpZy9Ub29scy5ta10pCitBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQor
QUNfUFJFRklYX0RFRkFVTFQoWy91c3JdKQorQUNfQ09ORklHX0FVWF9ESVIoWy5dKQorCisjIENo
ZWNrIGlmIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIHNldCBhbmQg
cHJpbnQgYSB3YXJuaW5nCisKK0FTX0lGKFt0ZXN0IC1uICIkQ0MkQ0ZMQUdTJExERkxBR1MkTElC
UyRDUFBGTEFHUyRDUFAiXSwgWworICAgIEFDX01TR19XQVJOKAorW1NldHRpbmcgQ0MsIENGTEFH
UywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIG5vdCBcCityZWNvbW1lbmRlZCwg
dXNlIFBSRVBFTkRfSU5DTFVERVMsIFBSRVBFTkRfTElCLCBcCitBUFBFTkRfSU5DTFVERVMgYW5k
IEFQUEVORF9MSUIgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLl0pCitdKQorCitBQ19VU0VfU1lTVEVN
X0VYVEVOU0lPTlMKK0FDX0NBTk9OSUNBTF9IT1NUCisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKK200
X2luY2x1ZGUoW200L2VuYWJsZV9mZWF0dXJlLm00XSkKK200X2luY2x1ZGUoW200L2Rpc2FibGVf
ZmVhdHVyZS5tNF0pCittNF9pbmNsdWRlKFttNC9wYXRoX29yX2ZhaWwubTRdKQorbTRfaW5jbHVk
ZShbbTQvcHl0aG9uX3htbC5tNF0pCittNF9pbmNsdWRlKFttNC9weXRob25fdmVyc2lvbi5tNF0p
CittNF9pbmNsdWRlKFttNC9weXRob25fZGV2ZWwubTRdKQorbTRfaW5jbHVkZShbbTQvdWRldi5t
NF0pCittNF9pbmNsdWRlKFttNC9vY2FtbC5tNF0pCittNF9pbmNsdWRlKFttNC9kZWZhdWx0X2xp
Yi5tNF0pCittNF9pbmNsdWRlKFttNC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTRdKQorbTRfaW5jbHVk
ZShbbTQvdXVpZC5tNF0pCittNF9pbmNsdWRlKFttNC9wa2cubTRdKQorCisjIEVuYWJsZS9kaXNh
YmxlIG9wdGlvbnMKK0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbeHNtXSwKKyAgICBbRW5hYmxl
IFhTTSBzZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNrKV0pCitBWF9BUkdfRU5BQkxF
X0FORF9FWFBPUlQoW2dpdGh0dHBdLCBbRG93bmxvYWQgR0lUIHJlcG9zaXRvcmllcyB2aWEgSFRU
UF0pCitBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFttb25pdG9yc10sCisgICAgW0Rpc2FibGUg
eGVuc3RhdCBhbmQgeGVudG9wIG1vbml0b3JpbmcgdG9vbHNdKQorQVhfQVJHX0VOQUJMRV9BTkRf
RVhQT1JUKFt2dHBtXSwgW0VuYWJsZSBWaXJ0dWFsIFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlXSkK
K0FYX0FSR19FTkFCTEVfQU5EX0VYUE9SVChbeGFwaV0sIFtFbmFibGUgWGVuIEFQSSBCaW5kaW5n
c10pCitBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtweXRob250b29sc10sIFtEaXNhYmxlIFB5
dGhvbiB0b29sc10pCitBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUKFtvY2FtbHRvb2xzXSwgW0Rp
c2FibGUgT2NhbWwgdG9vbHNdKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFttaW5pdGVybV0s
IFtFbmFibGUgbWluaXRlcm1dKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFtsb21vdW50XSwg
W0VuYWJsZSBsb21vdW50XSkKK0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlQoW2RlYnVnXSwgW0Rp
c2FibGUgZGVidWcgYnVpbGQgb2YgWGVuIGFuZCB0b29sc10pCisKK0FDX0FSR19WQVIoW1BSRVBF
TkRfSU5DTFVERVNdLAorICAgIFtMaXN0IG9mIGluY2x1ZGUgZm9sZGVycyB0byBwcmVwZW5kIHRv
IENGTEFHUyAod2l0aG91dCAtSSldKQorQUNfQVJHX1ZBUihbUFJFUEVORF9MSUJdLAorICAgIFtM
aXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBwcmVwZW5kIHRvIExERkxBR1MgKHdpdGhvdXQgLUwp
XSkKK0FDX0FSR19WQVIoW0FQUEVORF9JTkNMVURFU10sCisgICAgW0xpc3Qgb2YgaW5jbHVkZSBm
b2xkZXJzIHRvIGFwcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpXSkKK0FDX0FSR19WQVIoW0FQ
UEVORF9MSUJdLAorICAgIFtMaXN0IG9mIGxpYnJhcnkgZm9sZGVycyB0byBhcHBlbmQgdG8gTERG
TEFHUyAod2l0aG91dCAtTCldKQorCitBWF9TRVRfRkxBR1MKKworQUNfQVJHX1ZBUihbUFlUSE9O
XSwgW1BhdGggdG8gdGhlIFB5dGhvbiBwYXJzZXJdKQorQUNfQVJHX1ZBUihbUEVSTF0sIFtQYXRo
IHRvIFBlcmwgcGFyc2VyXSkKK0FDX0FSR19WQVIoW0JSQ1RMXSwgW1BhdGggdG8gYnJjdGwgdG9v
bF0pCitBQ19BUkdfVkFSKFtJUF0sIFtQYXRoIHRvIGlwIHRvb2xdKQorQUNfQVJHX1ZBUihbQklT
T05dLCBbUGF0aCB0byBCaXNvbiBwYXJzZXIgZ2VuZXJhdG9yXSkKK0FDX0FSR19WQVIoW0ZMRVhd
LCBbUGF0aCB0byBGbGV4IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yXSkKK0FDX0FSR19WQVIo
W0NVUkxdLCBbUGF0aCB0byBjdXJsLWNvbmZpZyB0b29sXSkKK0FDX0FSR19WQVIoW1hNTF0sIFtQ
YXRoIHRvIHhtbDItY29uZmlnIHRvb2xdKQorQUNfQVJHX1ZBUihbQkFTSF0sIFtQYXRoIHRvIGJh
c2ggc2hlbGxdKQorQUNfQVJHX1ZBUihbWEdFVFRFWFRdLCBbUGF0aCB0byB4Z2V0dHRleHQgdG9v
bF0pCisKKyMgQ2hlY2tzIGZvciBwcm9ncmFtcy4KK0FDX1BST0dfU0VECitBQ19QUk9HX0NDCitB
Q19QUk9HX0xOX1MKK0FDX1BST0dfTUFLRV9TRVQKK0FDX1BST0dfSU5TVEFMTAorQVhfUEFUSF9Q
Uk9HX09SX0ZBSUwoW1BFUkxdLCBbcGVybF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQlJDVExd
LCBbYnJjdGxdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0lQXSwgW2lwXSkKK0FYX1BBVEhfUFJP
R19PUl9GQUlMKFtCSVNPTl0sIFtiaXNvbl0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbRkxFWF0s
IFtmbGV4XSkKK0FTX0lGKFt0ZXN0ICJ4JHhhcGkiID0gInh5Il0sIFsKKyAgICBBWF9QQVRIX1BS
T0dfT1JfRkFJTChbQ1VSTF0sIFtjdXJsLWNvbmZpZ10pCisgICAgQVhfUEFUSF9QUk9HX09SX0ZB
SUwoW1hNTF0sIFt4bWwyLWNvbmZpZ10pCitdKQorQVNfSUYoW3Rlc3QgIngkb2NhbWx0b29scyIg
PSAieHkiXSwgWworICAgIEFDX1BST0dfT0NBTUwKKyAgICBBU19JRihbdGVzdCAieCRPQ0FNTEMi
ID0gInhubyJdLCBbCisgICAgICAgIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9vY2FtbHRvb2xzIiA9
ICJ4eWVzIl0sIFsKKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbT2NhbWwgdG9vbHMgZW5hYmxl
ZCwgYnV0IHVuYWJsZSB0byBmaW5kIE9jYW1sXSldKQorICAgICAgICBvY2FtbHRvb2xzPSJuIgor
ICAgIF0pCitdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0JBU0hdLCBbYmFzaF0pCitBU19JRihb
dGVzdCAieCRweXRob250b29scyIgPSAieHkiXSwgWworICAgIEFTX0lGKFtlY2hvICIkUFlUSE9O
IiB8IGdyZXAgLXEgIl4vIl0sIFsKKyAgICAgICAgUFlUSE9OUEFUSD0kUFlUSE9OCisgICAgICAg
IFBZVEhPTj1gYmFzZW5hbWUgJFBZVEhPTlBBVEhgCisgICAgXSxbdGVzdCAteiAiJFBZVEhPTiJd
LCBbUFlUSE9OPSJweXRob24iXSwKKyAgICBbQUNfTVNHX0VSUk9SKFtQWVRIT04gc3BlY2lmaWVk
LCBidXQgaXMgbm90IGFuIGFic29sdXRlIHBhdGhdKV0pCisgICAgQVhfUEFUSF9QUk9HX09SX0ZB
SUwoW1BZVEhPTlBBVEhdLCBbJFBZVEhPTl0pCisgICAgQVhfQ0hFQ0tfUFlUSE9OX1ZFUlNJT04o
WzJdLCBbM10pCisgICAgQVhfQ0hFQ0tfUFlUSE9OX1hNTCgpCisgICAgQVhfQ0hFQ0tfUFlUSE9O
X0RFVkVMKCkKK10pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbWEdFVFRFWFRdLCBbeGdldHRleHRd
KQorQVhfQ0hFQ0tfVURFVihbNTldKQorQVhfQ0hFQ0tfVVVJRAorUEtHX0NIRUNLX01PRFVMRVMo
Z2xpYiwgZ2xpYi0yLjApCisKKyMgQ2hlY2sgbGlicmFyeSBwYXRoCitBWF9ERUZBVUxUX0xJQgor
CisjIENoZWNrcyBmb3IgbGlicmFyaWVzLgorQUNfQ0hFQ0tfTElCKFthaW9dLCBbaW9fc2V0dXBd
LCBbc3lzdGVtX2Fpbz0ieSJdLCBbc3lzdGVtX2Fpbz0ibiJdKQorQUNfU1VCU1Qoc3lzdGVtX2Fp
bykKK0FDX0NIRUNLX0xJQihbY3J5cHRvXSwgW01ENV0sIFtdLCBbQUNfTVNHX0VSUk9SKFtDb3Vs
ZCBub3QgZmluZCBsaWJjcnlwdG9dKV0pCitBQ19DSEVDS19MSUIoW2V4dDJmc10sIFtleHQyZnNf
b3BlbjJdLCBbbGliZXh0MmZzPSJ5Il0sIFtsaWJleHQyZnM9Im4iXSkKK0FDX1NVQlNUKGxpYmV4
dDJmcykKK0FDX0NIRUNLX0xJQihbZ2NyeXB0XSwgW2djcnlfbWRfaGFzaF9idWZmZXJdLCBbbGli
Z2NyeXB0PSJ5Il0sIFtsaWJnY3J5cHQ9Im4iXSkKK0FDX1NVQlNUKGxpYmdjcnlwdCkKK0FDX0NI
RUNLX0xJQihbcHRocmVhZF0sIFtwdGhyZWFkX2NyZWF0ZV0sIFtdICwKKyAgICBbQUNfTVNHX0VS
Uk9SKFtDb3VsZCBub3QgZmluZCBsaWJwdGhyZWFkXSldKQorQUNfQ0hFQ0tfTElCKFtydF0sIFtj
bG9ja19nZXR0aW1lXSkKK0FDX0NIRUNLX0xJQihbdXVpZF0sIFt1dWlkX2NsZWFyXSwgW10sCisg
ICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbGlidXVpZF0pXSkKK0FDX0NIRUNLX0xJ
QihbeWFqbF0sIFt5YWpsX2FsbG9jXSwgW10sCisgICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90
IGZpbmQgeWFqbF0pXSkKK0FDX0NIRUNLX0xJQihbel0sIFtkZWZsYXRlQ29weV0sIFtdLCBbQUNf
TVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB6bGliXSldKQorQUNfQ0hFQ0tfTElCKFtpY29udl0s
IFtsaWJpY29udl9vcGVuXSwgW2xpYmljb252PSJ5Il0sIFtsaWJpY29udj0ibiJdKQorQUNfU1VC
U1QobGliaWNvbnYpCisKKyMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCitBQ19GVU5DX0FMTE9D
QQorQUNfQ0hFQ0tfSEVBREVSUyhbIFwKKyAgICAgICAgICAgICAgICBhcnBhL2luZXQuaCBmY250
bC5oIGludHR5cGVzLmggbGliaW50bC5oIGxpbWl0cy5oIG1hbGxvYy5oIFwKKyAgICAgICAgICAg
ICAgICBuZXRkYi5oIG5ldGluZXQvaW4uaCBzdGRkZWYuaCBzdGRpbnQuaCBzdGRsaWIuaCBzdHJp
bmcuaCBcCisgICAgICAgICAgICAgICAgc3RyaW5ncy5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmgg
c3lzL21vdW50Lmggc3lzL3BhcmFtLmggXAorICAgICAgICAgICAgICAgIHN5cy9zb2NrZXQuaCBz
eXMvc3RhdHZmcy5oIHN5cy90aW1lLmggc3lzbG9nLmggdGVybWlvcy5oIFwKKyAgICAgICAgICAg
ICAgICB1bmlzdGQuaCB5YWpsL3lhamxfdmVyc2lvbi5oIFwKKyAgICAgICAgICAgICAgICBdKQor
CisjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0
ZXJpc3RpY3MuCitBQ19IRUFERVJfU1REQk9PTAorQUNfVFlQRV9VSURfVAorQUNfQ19JTkxJTkUK
K0FDX1RZUEVfSU5UMTZfVAorQUNfVFlQRV9JTlQzMl9UCitBQ19UWVBFX0lOVDY0X1QKK0FDX1RZ
UEVfSU5UOF9UCitBQ19UWVBFX01PREVfVAorQUNfVFlQRV9PRkZfVAorQUNfVFlQRV9QSURfVAor
QUNfQ19SRVNUUklDVAorQUNfVFlQRV9TSVpFX1QKK0FDX1RZUEVfU1NJWkVfVAorQUNfQ0hFQ0tf
TUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmxrc2l6ZV0pCitBQ19TVFJVQ1RfU1RfQkxPQ0tTCitB
Q19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9yZGV2XSkKK0FDX1RZUEVfVUlOVDE2X1QK
K0FDX1RZUEVfVUlOVDMyX1QKK0FDX1RZUEVfVUlOVDY0X1QKK0FDX1RZUEVfVUlOVDhfVAorQUNf
Q0hFQ0tfVFlQRVMoW3B0cmRpZmZfdF0pCisKKyMgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9u
cy4KK0FDX0ZVTkNfRVJST1JfQVRfTElORQorQUNfRlVOQ19GT1JLCitBQ19GVU5DX0ZTRUVLTwor
QUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSworQUNfSEVBREVSX01BSk9SCitB
Q19GVU5DX01BTExPQworQUNfRlVOQ19NS1RJTUUKK0FDX0ZVTkNfTU1BUAorQUNfRlVOQ19SRUFM
TE9DCitBQ19GVU5DX1NUUk5MRU4KK0FDX0ZVTkNfU1RSVE9ECitBQ19DSEVDS19GVU5DUyhbIFwK
KyAgICAgICAgICAgICAgICBhbGFybSBhdGV4aXQgYnplcm8gY2xvY2tfZ2V0dGltZSBkdXAyIGZk
YXRhc3luYyBmdHJ1bmNhdGUgXAorICAgICAgICAgICAgICAgIGdldGN3ZCBnZXRob3N0YnluYW1l
IGdldGhvc3RuYW1lIGdldHBhZ2VzaXplIGdldHRpbWVvZmRheSBcCisgICAgICAgICAgICAgICAg
aW5ldF9udG9hIGlzYXNjaWkgbG9jYWx0aW1lX3IgbWVtY2hyIG1lbW1vdmUgbWVtc2V0IG1rZGly
IFwKKyAgICAgICAgICAgICAgICBta2ZpZm8gbXVubWFwIHBhdGhjb25mIHJlYWxwYXRoIHJlZ2Nv
bXAgcm1kaXIgc2VsZWN0IHNldGVudiBcCisgICAgICAgICAgICAgICAgc29ja2V0IHN0cmNhc2Vj
bXAgc3RyY2hyIHN0cmNzcG4gc3RyZHVwIHN0cmVycm9yIHN0cm5kdXAgXAorICAgICAgICAgICAg
ICAgIHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHN0cnRvbCBzdHJ0b3VsIHN0cnRvdWxs
IHR6c2V0IFwKKyAgICAgICAgICAgICAgICB1bmFtZSBcCisgICAgICAgICAgICAgICAgXSkKKwor
QUNfT1VUUFVUKCkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2Rl
YnVnZ2VyL2dkYnN4L3hnL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01h
a2VmaWxlCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9kZWJ1Z2dl
ci9nZGJzeC94Zy9NYWtlZmlsZQlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAxMDAKQEAgLTIx
LDcgKzIxLDYgQEAgeGdfYWxsLmE6ICQoWEdfT0JKUykgTWFrZWZpbGUgJChYR19IRFJTKQogIwkk
KENDKSAtbTMyIC1jIC1vICRAICReCiAKIHhlbi1oZWFkZXJzOgotCSQoTUFLRSkgLUMgLi4vLi4v
Li4vY2hlY2sgCiAJJChNQUtFKSAtQyAuLi8uLi8uLi9pbmNsdWRlCiAKICMgeGdfbWFpbi5vOiB4
Z19tYWluLmMgTWFrZWZpbGUgJChYR19IRFJTKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2
YTdmOWQwN2QgdG9vbHMvaW5zdGFsbC5zaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMAorKysgYi90b29scy9pbnN0YWxsLnNoCVR1ZSBGZWIgMjEgMDI6Mjk6MDYg
MjAxMiArMDEwMApAQCAtMCwwICsxLDEgQEAKKy4uL2luc3RhbGwuc2gKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9s
aWJmc2ltYWdlL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUJTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUJ
VHVlIEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0zLDcgKzMsMTEgQEAgaW5jbHVkZSAk
KFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiBTVUJESVJTLXkgPSBjb21tb24gdWZzIHJlaXNl
cmZzIGlzbzk2NjAgZmF0IHpmcwogU1VCRElSUy0kKENPTkZJR19YODYpICs9IHhmcwotU1VCRElS
Uy15ICs9ICQoc2hlbGwgZW52IENDPSIkKENDKSIgLi9jaGVjay1saWJleHQyZnMpCitpZmVxICgk
KENPTkZJR19FWFQyRlMpLCB5KQorICAgIFNVQkRJUlMteSArPSBleHQyZnMtbGliCitlbHNlCisg
ICAgU1VCRElSUy15ICs9IGV4dDJmcworZW5kaWYKIAogLlBIT05ZOiBhbGwgY2xlYW4gaW5zdGFs
bAogYWxsIGNsZWFuIGluc3RhbGw6ICU6IHN1YmRpcnMtJQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAt
ciAzYmQ2YTdmOWQwN2QgdG9vbHMvbGliZnNpbWFnZS9jaGVjay1saWJleHQyZnMKLS0tIGEvdG9v
bHMvbGliZnNpbWFnZS9jaGVjay1saWJleHQyZnMJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICsw
MDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIx
ICswLDAgQEAKLSMhL2Jpbi9zaAotCi1jYXQgPmV4dDItdGVzdC5jIDw8RU9GCi0jaW5jbHVkZSA8
ZXh0MmZzL2V4dDJmcy5oPgotCi1pbnQgbWFpbigpCi17Ci0JZXh0MmZzX29wZW4yOwotfQotRU9G
Ci0KLSR7Q0MtZ2NjfSAtbyBleHQyLXRlc3QgZXh0Mi10ZXN0LmMgLWxleHQyZnMgPi9kZXYvbnVs
bCAyPiYxCi1pZiBbICQ/ID0gMCBdOyB0aGVuCi0JZWNobyBleHQyZnMtbGliCi1lbHNlCi0JZWNo
byBleHQyZnMKLWZpCi0KLXJtIC1mIGV4dDItdGVzdCBleHQyLXRlc3QuYwotCi1leGl0IDAKZGlm
ZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL2xpYnhlbi9NYWtlZmlsZQot
LS0gYS90b29scy9saWJ4ZW4vTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAw
CisrKyBiL3Rvb2xzL2xpYnhlbi9NYWtlZmlsZQlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAx
MDAKQEAgLTIyLDEyICsyMiwxMiBAQCBNQUpPUiA9IDEuMAogTUlOT1IgPSAwCiAKIENGTEFHUyAr
PSAtSWluY2x1ZGUgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgJChzaGVsbCB4bWwy
LWNvbmZpZyAtLWNmbGFncykgXAotICAgICAgICAgICQoc2hlbGwgY3VybC1jb25maWcgLS1jZmxh
Z3MpIFwKKyAgICAgICAgICAkKHNoZWxsICQoWE1MMl9DT05GSUcpIC0tY2ZsYWdzKSBcCisgICAg
ICAgICAgJChzaGVsbCAkKENVUkxfQ09ORklHKSAtLWNmbGFncykgXAogICAgICAgICAgIC1mUElD
CiAKLUxERkxBR1MgKz0gJChzaGVsbCB4bWwyLWNvbmZpZyAtLWxpYnMpIFwKLSAgICAgICAgICAg
JChzaGVsbCBjdXJsLWNvbmZpZyAtLWxpYnMpCitMREZMQUdTICs9ICQoc2hlbGwgJChYTUwyX0NP
TkZJRykgLS1saWJzKSBcCisgICAgICAgICAgICQoc2hlbGwgJChDVVJMX0NPTkZJRykgLS1saWJz
KQogCiBMSUJYRU5BUElfSERSUyA9ICQod2lsZGNhcmQgaW5jbHVkZS94ZW4vYXBpLyouaCkgaW5j
bHVkZS94ZW4vYXBpL3hlbl9hbGwuaAogTElCWEVOQVBJX09CSlMgPSAkKHBhdHN1YnN0ICUuYywg
JS5vLCAkKHdpbGRjYXJkIHNyYy8qLmMpKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2YTdm
OWQwN2QgdG9vbHMvbGlieGwvTWFrZWZpbGUKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUJTW9u
IEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCVR1
ZSBGZWIgMjEgMDI6Mjk6MDYgMjAxMiArMDEwMApAQCAtMTksMTAgKzE5LDYgQEAgaWZlcSAoJChD
T05GSUdfTGludXgpLHkpCiBMSUJVVUlEX0xJQlMgKz0gLWx1dWlkCiBlbmRpZgogCi1pZmVxICgk
KENPTkZJR19ZQUpMX1ZFUlNJT04pLHkpCi1DRkxBR1MgKz0gLURIQVZFX1lBSkxfVkVSU0lPTgot
ZW5kaWYKLQogTElCWExfTElCUyA9CiBMSUJYTF9MSUJTID0gJChMRExJQlNfbGlieGVuY3RybCkg
JChMRExJQlNfbGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKExETElCU19saWJi
bGt0YXBjdGwpICQoVVRJTF9MSUJTKSAkKExJQlVVSURfTElCUykKIApAQCAtNTYsNyArNTIsNyBA
QCBMSUJYTF9PQkpTID0gZmxleGFycmF5Lm8gbGlieGwubyBsaWJ4bF9jCiAJCQlsaWJ4bF9xbXAu
byBsaWJ4bF9ldmVudC5vICQoTElCWExfT0JKUy15KQogTElCWExfT0JKUyArPSBfbGlieGxfdHlw
ZXMubyBsaWJ4bF9mbGFzay5vIF9saWJ4bF90eXBlc19pbnRlcm5hbC5vCiAKLSQoTElCWExfT0JK
Uyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkg
JChDRkxBR1NfbGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYmJsa3RhcGN0bCkKKyQoTElCWExfT0JK
Uyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkg
JChDRkxBR1NfbGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYmJsa3RhcGN0bCkgLWluY2x1ZGUgJChY
RU5fUk9PVCkvdG9vbHMvY29uZmlnLmgKIAogQVVUT0lOQ1M9IGxpYnhsdV9jZmdfeS5oIGxpYnhs
dV9jZmdfbC5oIF9saWJ4bF9saXN0LmgKIEFVVE9TUkNTPSBsaWJ4bHVfY2ZnX3kuYyBsaWJ4bHVf
Y2ZnX2wuYwpAQCAtNjksNiArNjUsNyBAQCBDTElFTlRTID0geGwgdGVzdGlkbAogWExfT0JKUyA9
IHhsLm8geGxfY21kaW1wbC5vIHhsX2NtZHRhYmxlLm8geGxfc3hwLm8KICQoWExfT0JKUyk6IENG
TEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAjIEZvciB4ZW50b29sbG9nLmgKICQoWExfT0JK
Uyk6IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5saWdodCkKKyQoWExfT0JKUyk6IENGTEFHUyAr
PSAtaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9jb25maWcuaCAjIGxpYnhsX2pzb24uaCBuZWVk
cyBpdC4KIAogdGVzdGlkbC5vOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxB
R1NfbGlieGVubGlnaHQpCiB0ZXN0aWRsLmM6IGxpYnhsX3R5cGVzLmlkbCBnZW50ZXN0LnB5IGxp
YnhsLmggJChBVVRPSU5DUykKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRv
b2xzL2xpYnhsL2xpYnhsX2pzb24uaAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9qc29uLmgJTW9u
IEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2pzb24u
aAlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAxMDAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNs
dWRlIDx5YWpsL3lhamxfZ2VuLmg+CiAjaW5jbHVkZSA8eWFqbC95YWpsX3BhcnNlLmg+CiAKLSNp
ZmRlZiBIQVZFX1lBSkxfVkVSU0lPTgorI2lmZGVmIEhBVkVfWUFKTF9ZQUpMX1ZFUlNJT05fSAog
IyAgaW5jbHVkZSA8eWFqbC95YWpsX3ZlcnNpb24uaD4KICNlbmRpZgogCmRpZmYgLXIgY2E4MGVj
YTljZmEzIC1yIDNiZDZhN2Y5ZDA3ZCB0b29scy9tNC9kZWZhdWx0X2xpYi5tNAotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9kZWZhdWx0
X2xpYi5tNAlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAxMDAKQEAgLTAsMCArMSw4IEBACitB
Q19ERUZVTihbQVhfREVGQVVMVF9MSUJdLAorW0FTX0lGKFt0ZXN0IC1kICIkcHJlZml4L2xpYjY0
Il0sIFsKKyAgICBMSUJfUEFUSD0ibGliNjQiCitdLFsKKyAgICBMSUJfUEFUSD0ibGliIgorXSkK
K0FDX1NVQlNUKExJQl9QQVRIKV0pCisKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3Zjlk
MDdkIHRvb2xzL200L2Rpc2FibGVfZmVhdHVyZS5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9kaXNhYmxlX2ZlYXR1cmUubTQJVHVl
IEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVOKFtB
WF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUXSwKK1tBQ19BUkdfRU5BQkxFKFskMV0sCisgICAgQVNf
SEVMUF9TVFJJTkcoWy0tZGlzYWJsZS0kMV0sIFskMl0pKQorCitBU19JRihbdGVzdCAieCRlbmFi
bGVfJDEiID0gInhubyJdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdLCBbdGVzdCAieCRlbmFibGVf
JDEiID0gInh5ZXMiXSwgWworICAgIGF4X2N2XyQxPSJ5IgorXSwgW3Rlc3QgLXogJGF4X2N2XyQx
XSwgWworICAgIGF4X2N2XyQxPSJ5IgorXSkKKyQxPSRheF9jdl8kMQorQUNfU1VCU1QoJDEpXSkK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL200L2VuYWJsZV9mZWF0
dXJlLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBi
L3Rvb2xzL200L2VuYWJsZV9mZWF0dXJlLm00CVR1ZSBGZWIgMjEgMDI6Mjk6MDYgMjAxMiArMDEw
MApAQCAtMCwwICsxLDEzIEBACitBQ19ERUZVTihbQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUXSwK
K1tBQ19BUkdfRU5BQkxFKFskMV0sCisgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLSQxXSwg
WyQyXSkpCisKK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieHllcyJdLCBbCisgICAgYXhf
Y3ZfJDE9InkiCitdLCBbdGVzdCAieCRlbmFibGVfJDEiID0gInhubyJdLCBbCisgICAgYXhfY3Zf
JDE9Im4iCitdLCBbdGVzdCAteiAkYXhfY3ZfJDFdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdKQor
JDE9JGF4X2N2XyQxCitBQ19TVUJTVCgkMSldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2
YTdmOWQwN2QgdG9vbHMvbTQvb2NhbWwubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvb2NhbWwubTQJVHVlIEZlYiAyMSAwMjoyOTow
NiAyMDEyICswMTAwCkBAIC0wLDAgKzEsMjQxIEBACitkbmwgYXV0b2NvbmYgbWFjcm9zIGZvciBP
Q2FtbAorZG5sIGZyb20gaHR0cDovL2ZvcmdlLm9jYW1sY29yZS5vcmcvCitkbmwKK2RubCBDb3B5
cmlnaHQgwqkgMjAwOSAgICAgIFJpY2hhcmQgVy5NLiBKb25lcworZG5sIENvcHlyaWdodCDCqSAy
MDA5ICAgICAgU3RlZmFubyBaYWNjaGlyb2xpCitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAwNSBP
bGl2aWVyIEFuZHJpZXUKK2RubCBDb3B5cmlnaHQgwqkgMjAwMC0yMDA1IEplYW4tQ2hyaXN0b3Bo
ZSBGaWxsacOidHJlCitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAwNSBHZW9yZ2VzIE1hcmlhbm8K
K2RubAorZG5sIEZvciBkb2N1bWVudGF0aW9uLCBwbGVhc2UgcmVhZCB0aGUgb2NhbWwubTQgbWFu
IHBhZ2UuCisKK0FDX0RFRlVOKFtBQ19QUk9HX09DQU1MXSwKK1tkbmwKKyAgIyBjaGVja2luZyBm
b3Igb2NhbWxjCisgIEFDX0NIRUNLX1RPT0woW09DQU1MQ10sW29jYW1sY10sW25vXSkKKworICBp
ZiB0ZXN0ICIkT0NBTUxDIiAhPSAibm8iOyB0aGVuCisgICAgIE9DQU1MVkVSU0lPTj1gJE9DQU1M
QyAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwxfHAnYAorICAgICBBQ19N
U0dfUkVTVUxUKFtPQ2FtbCB2ZXJzaW9uIGlzICRPQ0FNTFZFUlNJT05dKQorICAgICAjIElmIE9D
QU1MTElCIGlzIHNldCwgdXNlIGl0CisgICAgIGlmIHRlc3QgIiRPQ0FNTExJQiIgPSAiIjsgdGhl
bgorICAgICAgICBPQ0FNTExJQj1gJE9DQU1MQyAtd2hlcmUgMj4vZGV2L251bGwgfHwgJE9DQU1M
QyAtdnx0YWlsIC0xfGN1dCAtZCAnICcgLWYgNGAKKyAgICAgZWxzZQorICAgICAgICBBQ19NU0df
UkVTVUxUKFtPQ0FNTExJQiBwcmV2aW91c2x5IHNldDsgcHJlc2VydmluZyBpdC5dKQorICAgICBm
aQorICAgICBBQ19NU0dfUkVTVUxUKFtPQ2FtbCBsaWJyYXJ5IHBhdGggaXMgJE9DQU1MTElCXSkK
KworICAgICBBQ19TVUJTVChbT0NBTUxWRVJTSU9OXSkKKyAgICAgQUNfU1VCU1QoW09DQU1MTElC
XSkKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbG9wdAorICAgICBBQ19DSEVDS19UT09MKFtP
Q0FNTE9QVF0sW29jYW1sb3B0XSxbbm9dKQorICAgICBPQ0FNTEJFU1Q9Ynl0ZQorICAgICBpZiB0
ZXN0ICIkT0NBTUxPUFQiID0gIm5vIjsgdGhlbgorCUFDX01TR19XQVJOKFtDYW5ub3QgZmluZCBv
Y2FtbG9wdDsgYnl0ZWNvZGUgY29tcGlsYXRpb24gb25seS5dKQorICAgICBlbHNlCisJVE1QVkVS
U0lPTj1gJE9DQU1MT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8
cCcgYAorCWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJ
ICAgIEFDX01TR19SRVNVTFQoW3ZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0
IGRpc2NhcmRlZC5dKQorCSAgICBPQ0FNTE9QVD1ubworCWVsc2UKKwkgICAgT0NBTUxCRVNUPW9w
dAorCWZpCisgICAgIGZpCisKKyAgICAgQUNfU1VCU1QoW09DQU1MQkVTVF0pCisKKyAgICAgIyBj
aGVja2luZyBmb3Igb2NhbWxjLm9wdAorICAgICBBQ19DSEVDS19UT09MKFtPQ0FNTENET1RPUFRd
LFtvY2FtbGMub3B0XSxbbm9dKQorICAgICBpZiB0ZXN0ICIkT0NBTUxDRE9UT1BUIiAhPSAibm8i
OyB0aGVuCisJVE1QVkVSU0lPTj1gJE9DQU1MQ0RPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZl
cnNpb24qICpcKC4qXCkkfFwxfHAnIGAKKwlpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FN
TFZFUlNJT04iIDsgdGhlbgorCSAgICBBQ19NU0dfUkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZy
b20gb2NhbWxjOyBvY2FtbGMub3B0IGRpc2NhcmRlZC5dKQorCWVsc2UKKwkgICAgT0NBTUxDPSRP
Q0FNTENET1RPUFQKKwlmaQorICAgICBmaQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0
Lm9wdAorICAgICBpZiB0ZXN0ICIkT0NBTUxPUFQiICE9ICJubyIgOyB0aGVuCisJQUNfQ0hFQ0tf
VE9PTChbT0NBTUxPUFRET1RPUFRdLFtvY2FtbG9wdC5vcHRdLFtub10pCisJaWYgdGVzdCAiJE9D
QU1MT1BURE9UT1BUIiAhPSAibm8iOyB0aGVuCisJICAgVE1QVkVSU0lPTj1gJE9DQU1MT1BURE9U
T1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCSAgIGlm
IHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgICAgQUNf
TVNHX1JFU1VMVChbdmVyc2lvbiBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbG9wdC5vcHQgZGlz
Y2FyZGVkLl0pCisJICAgZWxzZQorCSAgICAgIE9DQU1MT1BUPSRPQ0FNTE9QVERPVE9QVAorCSAg
IGZpCisgICAgICAgIGZpCisgICAgIGZpCisKKyAgICAgQUNfU1VCU1QoW09DQU1MT1BUXSkKKyAg
ZmkKKworICBBQ19TVUJTVChbT0NBTUxDXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbCB0b3Bs
ZXZlbAorICBBQ19DSEVDS19UT09MKFtPQ0FNTF0sW29jYW1sXSxbbm9dKQorCisgICMgY2hlY2tp
bmcgZm9yIG9jYW1sZGVwCisgIEFDX0NIRUNLX1RPT0woW09DQU1MREVQXSxbb2NhbWxkZXBdLFtu
b10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxta3RvcAorICBBQ19DSEVDS19UT09MKFtPQ0FN
TE1LVE9QXSxbb2NhbWxta3RvcF0sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbG1rbGli
CisgIEFDX0NIRUNLX1RPT0woW09DQU1MTUtMSUJdLFtvY2FtbG1rbGliXSxbbm9dKQorCisgICMg
Y2hlY2tpbmcgZm9yIG9jYW1sZG9jCisgIEFDX0NIRUNLX1RPT0woW09DQU1MRE9DXSxbb2NhbWxk
b2NdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxidWlsZAorICBBQ19DSEVDS19UT09M
KFtPQ0FNTEJVSUxEXSxbb2NhbWxidWlsZF0sW25vXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BS
T0dfT0NBTUxMRVhdLAorW2RubAorICAjIGNoZWNraW5nIGZvciBvY2FtbGxleAorICBBQ19DSEVD
S19UT09MKFtPQ0FNTExFWF0sW29jYW1sbGV4XSxbbm9dKQorICBpZiB0ZXN0ICIkT0NBTUxMRVgi
ICE9ICJubyI7IHRoZW4KKyAgICBBQ19DSEVDS19UT09MKFtPQ0FNTExFWERPVE9QVF0sW29jYW1s
bGV4Lm9wdF0sW25vXSkKKyAgICBpZiB0ZXN0ICIkT0NBTUxMRVhET1RPUFQiICE9ICJubyI7IHRo
ZW4KKwlPQ0FNTExFWD0kT0NBTUxMRVhET1RPUFQKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChb
T0NBTUxMRVhdKQorXSkKKworQUNfREVGVU4oW0FDX1BST0dfT0NBTUxZQUNDXSwKK1tkbmwKKyAg
QUNfQ0hFQ0tfVE9PTChbT0NBTUxZQUNDXSxbb2NhbWx5YWNjXSxbbm9dKQorICBBQ19TVUJTVChb
T0NBTUxZQUNDXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0dfQ0FNTFA0XSwKK1tkbmwKKyAg
QUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisKKyAgIyBjaGVja2luZyBmb3IgY2FtbHA0
CisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNF0sW2NhbWxwNF0sW25vXSkKKyAgaWYgdGVzdCAiJENB
TUxQNCIgIT0gIm5vIjsgdGhlbgorICAgICBUTVBWRVJTSU9OPWAkQ0FNTFA0IC12IDI+JjF8IHNl
ZCAtbiAtZSAnc3wuKnZlcnNpb24gKlwoLipcKSR8XDF8cCdgCisgICAgIGlmIHRlc3QgIiRUTVBW
RVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJQUNfTVNHX1JFU1VMVChbdmVyc2lv
bnMgZGlmZmVycyBmcm9tIG9jYW1sY10pCisgICAgICAgIENBTUxQND1ubworICAgICBmaQorICBm
aQorICBBQ19TVUJTVChbQ0FNTFA0XSkKKworICAjIGNoZWNraW5nIGZvciBjb21wYW5pb24gdG9v
bHMKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0Qk9PVF0sW2NhbWxwNGJvb3RdLFtub10pCisgIEFD
X0NIRUNLX1RPT0woW0NBTUxQNE9dLFtjYW1scDRvXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtD
QU1MUDRPRl0sW2NhbWxwNG9mXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRPT0ZdLFtj
YW1scDRvb2ZdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9SRl0sW2NhbWxwNG9yZl0s
W25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0UFJPRl0sW2NhbWxwNHByb2ZdLFtub10pCisg
IEFDX0NIRUNLX1RPT0woW0NBTUxQNFJdLFtjYW1scDRyXSxbbm9dKQorICBBQ19DSEVDS19UT09M
KFtDQU1MUDRSRl0sW2NhbWxwNHJmXSxbbm9dKQorICBBQ19TVUJTVChbQ0FNTFA0Qk9PVF0pCisg
IEFDX1NVQlNUKFtDQU1MUDRPXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9GXSkKKyAgQUNfU1VCU1Qo
W0NBTUxQNE9PRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRPUkZdKQorICBBQ19TVUJTVChbQ0FNTFA0
UFJPRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRSXSkKKyAgQUNfU1VCU1QoW0NBTUxQNFJGXSkKK10p
CisKKworQUNfREVGVU4oW0FDX1BST0dfRklORExJQl0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FD
X1BST0dfT0NBTUxdKWRubAorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZmluZAorICBBQ19DSEVD
S19UT09MKFtPQ0FNTEZJTkRdLFtvY2FtbGZpbmRdLFtub10pCisgIEFDX1NVQlNUKFtPQ0FNTEZJ
TkRdKQorXSkKKworCitkbmwgVGhhbmtzIHRvIEppbSBNZXllcmluZyBmb3Igd29ya2luZyB0aGlz
IG5leHQgYml0IG91dCBmb3IgdXMuCitkbmwgWFhYIFdlIHNob3VsZCBkZWZpbmUgQVNfVFJfU0gg
aWYgaXQncyBub3QgZGVmaW5lZCBhbHJlYWR5CitkbmwgKGVnLiBmb3Igb2xkIGF1dG9jb25mKS4K
K0FDX0RFRlVOKFtBQ19DSEVDS19PQ0FNTF9QS0ddLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19Q
Uk9HX0ZJTkRMSUJdKWRubAorCisgIEFDX01TR19DSEVDS0lORyhbZm9yIE9DYW1sIGZpbmRsaWIg
cGFja2FnZSAkMV0pCisKKyAgdW5zZXQgZm91bmQKKyAgdW5zZXQgcGtnCisgIGZvdW5kPW5vCisg
IGZvciBwa2cgaW4gJDEgJDIgOyBkbworICAgIGlmICRPQ0FNTEZJTkQgcXVlcnkgJHBrZyA+L2Rl
di9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBBQ19NU0dfUkVTVUxUKFtmb3VuZF0pCisg
ICAgICBBU19UUl9TSChbT0NBTUxfUEtHXyQxXSk9JHBrZworICAgICAgZm91bmQ9eWVzCisgICAg
ICBicmVhaworICAgIGZpCisgIGRvbmUKKyAgaWYgdGVzdCAiJGZvdW5kIiA9ICJubyIgOyB0aGVu
CisgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5kXSkKKyAgICBBU19UUl9TSChbT0NBTUxfUEtH
XyQxXSk9bm8KKyAgZmkKKworICBBQ19TVUJTVChBU19UUl9TSChbT0NBTUxfUEtHXyQxXSkpCitd
KQorCisKK0FDX0RFRlVOKFtBQ19DSEVDS19PQ0FNTF9NT0RVTEVdLAorW2RubAorICBBQ19NU0df
Q0hFQ0tJTkcoW2ZvciBPQ2FtbCBtb2R1bGUgJDJdKQorCisgIGNhdCA+IGNvbmZ0ZXN0Lm1sIDw8
RU9GCitvcGVuICQzCitFT0YKKyAgdW5zZXQgZm91bmQKKyAgZm9yICQxIGluICQkMSAkNCA7IGRv
CisgICAgaWYgJE9DQU1MQyAtYyAtSSAiJCQxIiBjb25mdGVzdC5tbCA+JjUgMj4mNSA7IHRoZW4K
KyAgICAgIGZvdW5kPXllcworICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisKKyAgaWYgdGVz
dCAiJGZvdW5kIiA7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFskJDFdKQorICBlbHNlCisgICAg
QUNfTVNHX1JFU1VMVChbbm90IGZvdW5kXSkKKyAgICAkMT1ubworICBmaQorICBBQ19TVUJTVChb
JDFdKQorXSkKKworCitkbmwgWFhYIENyb3NzLWNvbXBpbGluZworQUNfREVGVU4oW0FDX0NIRUNL
X09DQU1MX1dPUkRfU0laRV0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRu
bAorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBPQ2FtbCBjb21waWxlciB3b3JkIHNpemVdKQorICBj
YXQgPiBjb25mdGVzdC5tbCA8PEVPRgorICBwcmludF9lbmRsaW5lIChzdHJpbmdfb2ZfaW50IFN5
cy53b3JkX3NpemUpCisgIEVPRgorICBPQ0FNTF9XT1JEX1NJWkU9YCRPQ0FNTCBjb25mdGVzdC5t
bGAKKyAgQUNfTVNHX1JFU1VMVChbJE9DQU1MX1dPUkRfU0laRV0pCisgIEFDX1NVQlNUKFtPQ0FN
TF9XT1JEX1NJWkVdKQorXSkKKworQUNfREVGVU4oW0FDX0NIRUNLX09DQU1MX09TX1RZUEVdLAor
W2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlkbmwKKyAgQUNfTVNHX0NIRUNLSU5H
KFtPQ2FtbCBTeXMub3NfdHlwZV0pCisKKyAgY2F0ID4gY29uZnRlc3QubWwgPDxFT0YKKyAgcHJp
bnRfc3RyaW5nKFN5cy5vc190eXBlKTs7CitFT0YKKworICBPQ0FNTF9PU19UWVBFPWAkT0NBTUwg
Y29uZnRlc3QubWxgCisgIEFDX01TR19SRVNVTFQoWyRPQ0FNTF9PU19UWVBFXSkKKyAgQUNfU1VC
U1QoW09DQU1MX09TX1RZUEVdKQorXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3Zjlk
MDdkIHRvb2xzL200L3BhdGhfb3JfZmFpbC5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9wYXRoX29yX2ZhaWwubTQJVHVlIEZlYiAy
MSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAgKzEsNiBAQAorQUNfREVGVU4oW0FYX1BBVEhf
UFJPR19PUl9GQUlMXSwKK1tBQ19QQVRIX1BST0coWyQxXSwgWyQyXSwgW25vXSkKK2lmIHRlc3Qg
eCIkeyQxfSIgPT0geCJubyIgCit0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtVbmFibGUgdG8gZmlu
ZCAkMiwgcGxlYXNlIGluc3RhbGwgJDJdKQorZmldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAz
YmQ2YTdmOWQwN2QgdG9vbHMvbTQvcGtnLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3BrZy5tNAlUdWUgRmViIDIxIDAyOjI5OjA2
IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxNTcgQEAKKyMgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0
ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMg
c2VyaWFsIDEgKHBrZy1jb25maWctMC4yNCkKKyMgCisjIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0
IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4uCisjCisjIFRoaXMgcHJvZ3JhbSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisj
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFy
dCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdl
bmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1l
IGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJv
Z3JhbS4KKworIyBQS0dfUFJPR19QS0dfQ09ORklHKFtNSU4tVkVSU0lPTl0pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfUFJPR19QS0dfQ09ORklH
XSwKK1ttNF9wYXR0ZXJuX2ZvcmJpZChbXl8/UEtHX1tBLVpfXSskXSkKK200X3BhdHRlcm5fYWxs
b3coW15QS0dfQ09ORklHKF9QQVRIKT8kXSkKK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBbcGF0
aCB0byBwa2ctY29uZmlnIHV0aWxpdHldKQorQUNfQVJHX1ZBUihbUEtHX0NPTkZJR19QQVRIXSwg
W2RpcmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGhdKQorQUNfQVJH
X1ZBUihbUEtHX0NPTkZJR19MSUJESVJdLCBbcGF0aCBvdmVycmlkaW5nIHBrZy1jb25maWcncyBi
dWlsdC1pbiBzZWFyY2ggcGF0aF0pCisKK2lmIHRlc3QgIngkYWNfY3ZfZW52X1BLR19DT05GSUdf
c2V0IiAhPSAieHNldCI7IHRoZW4KKwlBQ19QQVRIX1RPT0woW1BLR19DT05GSUddLCBbcGtnLWNv
bmZpZ10pCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisJX3BrZ19taW5fdmVy
c2lvbj1tNF9kZWZhdWx0KFskMV0sIFswLjkuMF0pCisJQUNfTVNHX0NIRUNLSU5HKFtwa2ctY29u
ZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb25dKQorCWlmICRQS0dfQ09O
RklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbjsgdGhlbgor
CQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCWVsc2UKKwkJQUNfTVNHX1JFU1VMVChbbm9dKQorCQlQ
S0dfQ09ORklHPSIiCisJZmkKK2ZpW11kbmwKK10pIyBQS0dfUFJPR19QS0dfQ09ORklHCisKKyMg
UEtHX0NIRUNLX0VYSVNUUyhNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1O
T1QtRk9VTkRdKQorIworIyBDaGVjayB0byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9m
IG1vZHVsZXMgZXhpc3RzLiAgU2ltaWxhcgorIyB0byBQS0dfQ0hFQ0tfTU9EVUxFUygpLCBidXQg
ZG9lcyBub3Qgc2V0IHZhcmlhYmxlcyBvciBwcmludCBlcnJvcnMuCisjCisjIFBsZWFzZSByZW1l
bWJlciB0aGF0IG00IGV4cGFuZHMgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisj
IG9ubHkgYXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBpbiBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBm
aXJzdCBwbGFjZQorIyBpdCdzIGNhbGxlZCBtaWdodCBiZSBza2lwcGVkIChzdWNoIGFzIGlmIGl0
IGlzIHdpdGhpbiBhbiAiaWYiLCB5b3UKKyMgaGF2ZSB0byBjYWxsIFBLR19DSEVDS19FWElTVFMg
bWFudWFsbHkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfRVhJU1RTXSwKK1tBQ19SRVFV
SVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAm
JiBcCisgICAgQUNfUlVOX0xPRyhbJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMg
IiQxIl0pOyB0aGVuCisgIG00X2RlZmF1bHQoWyQyXSwgWzpdKQorbTRfaWZ2YWxuKFskM10sIFtl
bHNlCisgICQzXSlkbmwKK2ZpXSkKKworIyBfUEtHX0NPTkZJRyhbVkFSSUFCTEVdLCBbQ09NTUFO
RF0sIFtNT0RVTEVTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCittNF9kZWZpbmUoW19QS0dfQ09ORklHXSwKK1tpZiB0ZXN0IC1uICIkJDEiOyB0aGVu
CisgICAgcGtnX2N2X1tdJDE9IiQkMSIKKyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhl
bgorICAgIFBLR19DSEVDS19FWElTVFMoWyQzXSwKKyAgICAgICAgICAgICAgICAgICAgIFtwa2df
Y3ZfW10kMT1gJFBLR19DT05GSUcgLS1bXSQyICIkMyIgMj4vZGV2L251bGxgXSwKKwkJICAgICBb
cGtnX2ZhaWxlZD15ZXNdKQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2ZpW11kbmwK
K10pIyBfUEtHX0NPTkZJRworCisjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19QS0dfU0hPUlRfRVJST1JTX1NV
UFBPUlRFRF0sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCitpZiAkUEtHX0NP
TkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtn
X3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJy
b3JzX3N1cHBvcnRlZD1ubworZmlbXWRubAorXSkjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRF
RAorCisKKyMgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNU
SU9OLUlGLUZPVU5EXSwKKyMgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorIworIworIyBOb3RlIHRo
YXQgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGUgZmlyc3QgY2FsbCB0bworIyBQS0dfQ0hF
Q0tfTU9EVUxFUyBtaWdodCBub3QgaGFwcGVuLCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVk
ZSBhbgorIyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91ciBjb25m
aWd1cmUuYWMKKyMKKyMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfTU9EVUxFU10sCitb
QUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitBQ19BUkdfVkFSKFskMV1bX0NG
TEFHU10sIFtDIGNvbXBpbGVyIGZsYWdzIGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlk
bmwKK0FDX0FSR19WQVIoWyQxXVtfTElCU10sIFtsaW5rZXIgZmxhZ3MgZm9yICQxLCBvdmVycmlk
aW5nIHBrZy1jb25maWddKWRubAorCitwa2dfZmFpbGVkPW5vCitBQ19NU0dfQ0hFQ0tJTkcoW2Zv
ciAkMV0pCisKK19QS0dfQ09ORklHKFskMV1bX0NGTEFHU10sIFtjZmxhZ3NdLCBbJDJdKQorX1BL
R19DT05GSUcoWyQxXVtfTElCU10sIFtsaWJzXSwgWyQyXSkKKworbTRfZGVmaW5lKFtfUEtHX1RF
WFRdLCBbQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxl
cyAkMVtdX0NGTEFHUworYW5kICQxW11fTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBr
Zy1jb25maWcuCitTZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy5d
KQorCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisgICAJQUNfTVNHX1JFU1VMVChb
bm9dKQorICAgICAgICBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKyAgICAgICAgaWYgdGVz
dCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICAkMVtd
X1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzICIk
MiIgMj4mMWAKKyAgICAgICAgZWxzZSAKKwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19D
T05GSUcgLS1wcmludC1lcnJvcnMgIiQyIiAyPiYxYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBu
YXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8g
IiQkMVtdX1BLR19FUlJPUlMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKworCW00X2RlZmF1bHQoWyQ0
XSwgW0FDX01TR19FUlJPUigKK1tQYWNrYWdlIHJlcXVpcmVtZW50cyAoJDIpIHdlcmUgbm90IG1l
dDoKKworJCQxX1BLR19FUlJPUlMKKworQ29uc2lkZXIgYWRqdXN0aW5nIHRoZSBQS0dfQ09ORklH
X1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgeW91CitpbnN0YWxsZWQgc29mdHdhcmUgaW4g
YSBub24tc3RhbmRhcmQgcHJlZml4LgorCitfUEtHX1RFWFRdKWRubAorICAgICAgICBdKQorZWxp
ZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorICAgICAJQUNfTVNHX1JFU1VMVChb
bm9dKQorCW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19GQUlMVVJFKAorW1RoZSBwa2ctY29uZmln
IHNjcmlwdCBjb3VsZCBub3QgYmUgZm91bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAor
aXMgaW4geW91ciBQQVRIIG9yIHNldCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJs
ZSB0byB0aGUgZnVsbAorcGF0aCB0byBwa2ctY29uZmlnLgorCitfUEtHX1RFWFQKKworVG8gZ2V0
IHBrZy1jb25maWcsIHNlZSA8aHR0cDovL3BrZy1jb25maWcuZnJlZWRlc2t0b3Aub3JnLz4uXSlk
bmwKKyAgICAgICAgXSkKK2Vsc2UKKwkkMVtdX0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MK
KwkkMVtdX0xJQlM9JHBrZ19jdl9bXSQxW11fTElCUworICAgICAgICBBQ19NU0dfUkVTVUxUKFt5
ZXNdKQorCSQzCitmaVtdZG5sCitdKSMgUEtHX0NIRUNLX01PRFVMRVMKZGlmZiAtciBjYTgwZWNh
OWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL200L3B5dGhvbl9kZXZlbC5tNAotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9weXRob25f
ZGV2ZWwubTQJVHVlIEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTggQEAK
K0FDX0RFRlVOKFtBWF9DSEVDS19QWVRIT05fREVWRUxdLAorW0FDX01TR19DSEVDS0lORyhbZm9y
IHB5dGhvbiBkZXZlbF0pCisKK2AkUFlUSE9OIC1jICcKK2ltcG9ydCBvcy5wYXRoLCBzeXMKK2Zv
ciBwIGluIHN5cy5wYXRoOgorICAgIGlmIG9zLnBhdGguZXhpc3RzKHAgKyAiL2NvbmZpZy9NYWtl
ZmlsZSIpOgorICAgICAgICBzeXMuZXhpdCgwKQorc3lzLmV4aXQoMSkKKycgPiAvZGV2L251bGwg
Mj4mMWAKKworaWYgdGVzdCAiJD8iICE9ICIwIgordGhlbgorICAgIEFDX01TR19SRVNVTFQoW25v
XSkKKyAgICBBQ19NU0dfRVJST1IoW1B5dGhvbiBkZXZlbCBwYWNrYWdlIG5vdCBmb3VuZF0pCitl
bHNlCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciBjYTgwZWNhOWNmYTMg
LXIgM2JkNmE3ZjlkMDdkIHRvb2xzL200L3B5dGhvbl92ZXJzaW9uLm00Ci0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3B5dGhvbl92ZXJz
aW9uLm00CVR1ZSBGZWIgMjEgMDI6Mjk6MDYgMjAxMiArMDEwMApAQCAtMCwwICsxLDEyIEBACitB
Q19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX1ZFUlNJT05dLAorW0FDX01TR19DSEVDS0lORyhbZm9y
IHB5dGhvbiB2ZXJzaW9uID49ICQxLiQyIF0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHN5czsgZXhp
dChldmFsKCJzeXMudmVyc2lvbl9pbmZvIDwgKCQxLCAkMikiKSknYAoraWYgdGVzdCAiJD8iICE9
ICIwIgordGhlbgorICAgIHB5dGhvbl92ZXJzaW9uPWAkUFlUSE9OIC1WIDI+JjFgCisgICAgQUNf
TVNHX1JFU1VMVChbbm9dKQorICAgIEFDX01TR19FUlJPUigKKyAgICAgICAgWyRweXRob25fdmVy
c2lvbiBpcyB0b28gb2xkLCBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb24gaXMgJDEuJDJdKQorZWxz
ZQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IDNiZDZhN2Y5ZDA3ZCB0b29scy9tNC9weXRob25feG1sLm00Ci0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3B5dGhvbl94bWwubTQJVHVl
IEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTAgQEAKK0FDX0RFRlVOKFtB
WF9DSEVDS19QWVRIT05fWE1MXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24geG1sLmRv
bS5taW5pZG9tXSkKK2AkUFlUSE9OIC1jICdpbXBvcnQgeG1sLmRvbS5taW5pZG9tJ2AKK2lmIHRl
c3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNH
X0VSUk9SKFtVbmFibGUgdG8gZmluZCB4bWwuZG9tLm1pbmlkb20gbW9kdWxlXSkKK2Vsc2UKKyAg
ICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciAzYmQ2
YTdmOWQwN2QgdG9vbHMvbTQvc2V0X2NmbGFnc19sZGZsYWdzLm00Ci0tLSAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3NldF9jZmxhZ3NfbGRm
bGFncy5tNAlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwyMCBAQAor
QUNfREVGVU4oW0FYX1NFVF9GTEFHU10sCitbZm9yIGNmbGFnIGluICRQUkVQRU5EX0lOQ0xVREVT
CitkbworICAgIFBSRVBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBp
biAkUFJFUEVORF9MSUIKK2RvCisgICAgUFJFUEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2Rv
bmUKK2ZvciBjZmxhZyBpbiAkQVBQRU5EX0lOQ0xVREVTCitkbworICAgIEFQUEVORF9DRkxBR1Mr
PSIgLUkkY2ZsYWciCitkb25lCitmb3IgbGRmbGFnIGluICRBUFBFTkRfTElCCitkbworICAgIEFQ
UEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2RvbmUKK0NGTEFHUz0iJFBSRVBFTkRfQ0ZMQUdT
ICRDRkxBR1MgJEFQUEVORF9DRkxBR1MiCitMREZMQUdTPSIkUFJFUEVORF9MREZMQUdTICRMREZM
QUdTICRBUFBFTkRfTERGTEFHUyJdKQorCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5
ZDA3ZCB0b29scy9tNC91ZGV2Lm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCisrKyBiL3Rvb2xzL200L3VkZXYubTQJVHVlIEZlYiAyMSAwMjoyOTowNiAyMDEy
ICswMTAwCkBAIC0wLDAgKzEsMzIgQEAKK0FDX0RFRlVOKFtBWF9DSEVDS19VREVWXSwKK1tpZiB0
ZXN0ICJ4JGhvc3Rfb3MiID09ICJ4bGludXgtZ251IgordGhlbgorICAgIEFDX1BBVEhfUFJPRyhb
VURFVkFETV0sIFt1ZGV2YWRtXSwgW25vXSkKKyAgICBpZiB0ZXN0IHgiJHtVREVWQURNfSIgPT0g
eCJubyIgCisgICAgdGhlbgorICAgICAgICBBQ19QQVRIX1BST0coW1VERVZJTkZPXSwgW3VkZXZp
bmZvXSwgW25vXSkKKyAgICAgICAgaWYgdGVzdCB4IiR7VURFVklORk99IiA9PSB4Im5vIgorICAg
ICAgICB0aGVuCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoCisgICAgICAgICAgICAgICAgW1Vu
YWJsZSB0byBmaW5kIHVkZXZhZG0gb3IgdWRldmluZm8sIHBsZWFzZSBpbnN0YWxsIHVkZXZdKQor
ICAgICAgICBmaQorICAgICAgICB1ZGV2dmVyPWAke1VERVZJTkZPfSAtViB8IGF3ayAne3ByaW50
ICRORn0nYAorICAgIGVsc2UKKyAgICAgICAgdWRldnZlcj1gJHtVREVWQURNfSBpbmZvIC1WIHwg
YXdrICd7cHJpbnQgJE5GfSdgCisgICAgZmkKKyAgICBpZiB0ZXN0ICR7dWRldnZlcn0gLWx0IDU5
CisgICAgdGhlbgorICAgICAgICBBQ19QQVRIX1BST0coW0hPVFBMVUddLCBbaG90cGx1Z10sIFtu
b10pCisgICAgICAgIGlmIHRlc3QgeCIke0hPVFBMVUd9IiA9PSB4Im5vIgorICAgICAgICB0aGVu
CisgICAgICAgICAgICBBQ19NU0dfRVJST1IoW3VkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2
ZXJzaW9uIDU5IG9yIGxhdGVyXSkKKyAgICAgICAgZmkKKyAgICBmaQorZWxzZQorICAgIEFDX1BB
VEhfUFJPRyhbVk5DT05GSUddLCBbdm5jb25maWddLCBbbm9dKQorICAgIGlmIHRlc3QgeCIke1ZO
Q09ORklHfSIgPT0geCJubyIKKyAgICB0aGVuCisgICAgICAgIEFDX01TR19FUlJPUihbTm90IGEg
TGludXggc3lzdGVtIGFuZCB1bmFibGUgdG8gZmluZCB2bmRdKQorICAgIGZpCitmaQorXSkKZGlm
ZiAtciBjYTgwZWNhOWNmYTMgLXIgM2JkNmE3ZjlkMDdkIHRvb2xzL200L3V1aWQubTQKLS0tIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvdXVp
ZC5tNAlUdWUgRmViIDIxIDAyOjI5OjA2IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMCBAQAorQUNf
REVGVU4oW0FYX0NIRUNLX1VVSURdLAorW2lmIHRlc3QgIngkaG9zdF9vcyIgPT0gInhsaW51eC1n
bnUiCit0aGVuCisgICAgQUNfQ0hFQ0tfSEVBREVSKFt1dWlkL3V1aWQuaF0sLAorCSAgICBbQUNf
TVNHX0VSUk9SKFtjYW5ub3QgZmluZCB1dWlkIGhlYWRlcnNdKV0pCitlbHNlCisgICAgQUNfQ0hF
Q0tfSEVBREVSKFt1dWlkLmhdLCwKKwkgICAgW0FDX01TR19FUlJPUihbY2Fubm90IGZpbmQgdXVp
ZCBoZWFkZXJzXSldKQorZmkKK10pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIDNiZDZhN2Y5ZDA3
ZCB2ZXJzaW9uLnNoCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL3ZlcnNpb24uc2gJVHVlIEZlYiAyMSAwMjoyOTowNiAyMDEyICswMTAwCkBAIC0wLDAg
KzEsNSBAQAorIyEvYmluL3NoCisKK01BSk9SPWBncmVwICJleHBvcnQgWEVOX1ZFUlNJT04iICQx
IHwgc2VkICdzLy4qPS8vZycgfCB0ciAtcyAiICJgCitNSU5PUj1gZ3JlcCAiZXhwb3J0IFhFTl9T
VUJWRVJTSU9OIiAkMSB8IHNlZCAncy8uKj0vL2cnIHwgdHIgLXMgIiAiYAorcHJpbnRmICIlZC4l
ZCIgJE1BSk9SICRNSU5PUgo=

--===============3706650461757472180==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--===============3706650461757472180==--


From xen-devel-bounces@lists.xen.org Tue Feb 21 13:47:50 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Feb 2012 13:47:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1Rzq4E-0003da-Or; Tue, 21 Feb 2012 13:47:42 +0000
Received: from mail27.messagelabs.com ([193.109.254.147])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1RzWvG-0002yU-2t
	for xen-devel@lists.xen.org; Mon, 20 Feb 2012 17:21:11 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1329758416!55008265!1
X-Originating-IP: [209.85.212.173]
X-SpamReason: No, hits=0.0 required=7.0 tests=Mail larger than max spam size
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27502 invoked from network); 20 Feb 2012 17:20:16 -0000
Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com)
	(209.85.212.173)
	by server-6.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
	20 Feb 2012 17:20:16 -0000
Received: by wibhi20 with SMTP id hi20so2797393wib.32
	for <xen-devel@lists.xen.org>; Mon, 20 Feb 2012 09:21:08 -0800 (PST)
Received-SPF: pass (google.com: domain of royger@gmail.com designates
	10.180.107.67 as permitted sender) client-ip=10.180.107.67; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of royger@gmail.com
	designates 10.180.107.67 as permitted sender)
	smtp.mail=royger@gmail.com; dkim=pass header.i=royger@gmail.com
Received: from mr.google.com ([10.180.107.67])
	by 10.180.107.67 with SMTP id ha3mr18850394wib.8.1329758468300
	(num_hops = 1); Mon, 20 Feb 2012 09:21:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:content-transfer-encoding:subject
	:x-mercurial-node:message-id:user-agent:date:from:to:cc;
	bh=8ZVYTL1+wmeB4p1PV7BJB+zFyGjS01MYEsGbyKCD1IM=;
	b=vQhNlaz3My2yrEEfGH3Phdh3lI0cvq+8esL7rzvwP0PFMZq24yWMJlgp4/t2YDwwEd
	jfXjlBdGvBfeTlT9d78jr5ii0G8CxaNdWTUsCspYasgyi4OwCSq6E8eHt5IsH2Q5HiyO
	gIGG5uIVq8JUjt4fuvCqfy+2OKMAwDZkmXJyo=
Received: by 10.180.107.67 with SMTP id ha3mr15655793wib.8.1329758468032;
	Mon, 20 Feb 2012 09:21:08 -0800 (PST)
Received: from build.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id hs6sm8176629wib.2.2012.02.20.09.21.05
	(version=TLSv1/SSLv3 cipher=OTHER);
	Mon, 20 Feb 2012 09:21:06 -0800 (PST)
MIME-Version: 1.0
X-Mercurial-Node: ccdf9ed8a9141d2f5293580040605e95c6908b43
Message-Id: <ccdf9ed8a9141d2f5293.1329758445@build.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Mon, 20 Feb 2012 18:20:45 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xen.org
X-Mailman-Approved-At: Tue, 21 Feb 2012 13:47:40 +0000
Cc: ian.jackson@citrix.com
Subject: [Xen-devel] [PATCH] build: add autoconf to replace custom checks in
	tools/check
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI5NzU4NDI5IC0zNjAwCiMgTm9kZSBJRCBjY2RmOWVkOGE5
MTQxZDJmNTI5MzU4MDA0MDYwNWU5NWM2OTA4YjQzCiMgUGFyZW50ICA4NzIxOGJkMzY3YmVmY2E3
ZDM0ODhiYTFjZjRmZWIyYjEwZDVmMTRlCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwgY29uZmlnL1Rvb2xzLm1rCmFuZCBjb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMgaW5jbHVk
ZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRpb25zIHBy
ZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBhc3NpbmcK
cGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBleGVjdXRp
bmcgY29uZmlndXJlCnNjcmlwdC4KCmNvbmZpZy5oIGlzIHN0aWxsIG5vdCB1c2VkIGFueXdoZXJl
LCBhbmQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5CmF1dG9oZWFkZXIsIGFsdG91Z2ggdGhp
cyBtaWdoIGNoYW5nZSB3aGVuIHdlIHN0YXJ0IHRvIGluY2x1ZGUgdGhpcwpmaWxlLgoKSnVzdCBh
IGZpcnN0IHJlbGVhc2UsIGFuZCBzaW5jZSBpdCdzIG15IGZpcnN0IGF1dG9jb25mIHNjcmlwdCBJ
IGd1ZXNzCnRoZXJlIHdpbGwgYmUgbWFueSB0aGluZ3MgdG8gcG9saXNoIGhlcmUuLi4gUGxlYXNl
IHJldmlldyBhbmQgY29tbWVudC4KCkNoYW5nZXMgc2luY2UgdjQ6CgogKiBVcGRhdGVkIHRvIHRp
cC4KCiAqIEluY2x1ZGUgY29uZmlnLmggZnJvbSBjb21waWxlciBjb21tYW5kIGxpbmUgd2hlbiBi
dWlsZGluZyBsaWJ4bCBhbmQKICAgeGwgdG8gYXNzdXJlIHlhamxfdmVyc2lvbi5oIHByZXNlbmNl
IGFuZCBjb3JyZWN0bHkgZGV0ZWN0IHlhamwKICAgdmVyc2lvbi4KCiAqIEFkZGVkIGdsaWItMi4w
IGNoZWNrLgoKQ2hhbmdlcyBzaW5jZSB2MzoKCiAqIENvcGllZCBjb25maWcuZ3Vlc3MgYW5kIGNv
bmZpZy5zdWIgZnJvbSBhdXRvbWFrZSAxLjExLgoKICogQWRkZWQgYSB0ZXN0IHRvIGNoZWNrIGZv
ciB1dWlkLmggb24gQlNEIGFuZCB1dWlkL3V1aWQuaCBvbiBMaW51eC4KCkNoYW5nZXMgc2luY2Ug
djI6CgogKiBDaGFuZ2VkIG9yZGVyIG9mIGNvbmZpZy9Ub29scy5tayBpbmNsdWRlLgoKICogQWRk
ZWQgIi1lIiB0byBhdXRvZ2VuLnNoIHNoZWJhbmcuCgogKiBBZGRlZCBuZWNlc3NhcnkgZmlsZXMg
KGNvbmZpZy4qKSBhbmQgb3V0cHV0IGZyb20gQXV0b2hlYWRlciBhbmQKICAgQXV0b2NvbmYuCgog
KiBSZW1vdmVkIEF1dG9jb25mIGZyb20gYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCB1cGRhdGVkIFJF
QURNRS4KCkNoYW5nZXMgc2luY2UgdjE6CgogKiBNb3ZlZCBhdXRvY29uZiBzdHVmZiBpbnNpZGUg
dG9vbHMgZm9sZGVyLgoKICogQWRkIE1ha2VmaWxlIHJ1bGVzIGZvciBjbGVhbmluZy4KCiAqIFJl
bW92ZWQgQXV0b21ha2UgZGVwZW5kZW5jeS4KCiAqIENyZWF0ZSBhdXRvZ2VuLnNoIHRvIGF1dG9t
YXRpY2FsbHkgY3JlYXRlIGNvbmZpZ3VyZSBzY3JpcHQgd2hlbgogICBidWlsZGluZyBmcm9tIHNv
dXJjZSByZXBvc2l0b3J5LgoKICogQ2FjaGVkIHZhbHVlcyBvZiBvcHRpb25zIHBhc3NlZCBmcm9t
IGNvbW1hbmQgbGluZS4KCiAqIEFkZCBuZWNlc3NhcnkgaWdub3JlcyB0byAuaGdpZ25vcmUuCgog
KiBBZGRlZCBBdXRvY29uZiB0byB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMuCgogKiBDaGFuZ2Vk
IGh5cGVuIHRvIHVuZGVyc2NvcmUgaW4gWE1MMiBhbmQgQ1VSTCB2YXJpYWJsZSBuYW1lcy4KCiAq
IEFkZGVkIHNjcmlwdCB0byBnZXQgdmVyc2lvbiBmcm9tIHhlbi9NYWtlZmlsZS4KCiAqIFNldCBP
Y2FtbCB0b29scyB0byBvcHRpb25hbC4KCiAqIEFkZGVkIHByb2NlZGVuY2Ugb2YgbTQvb2NhbWwu
bTQuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubmUgPHJvZ2VyLnBhdUBlbnRlbC51cGMu
ZWR1PgoKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IC5oZ2lnbm9yZQotLS0g
YS8uaGdpZ25vcmUJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyBiLy5oZ2lnbm9y
ZQlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTMwMyw2ICszMDMsMTIgQEAKIF50
b29scy9vY2FtbC9saWJzL3hsL3hlbmxpZ2h0XC5tbCQKIF50b29scy9vY2FtbC9saWJzL3hsL3hl
bmxpZ2h0XC5tbGkkCiBedG9vbHMvb2NhbWwveGVuc3RvcmVkL294ZW5zdG9yZWQkCitedG9vbHMv
YXV0b200dGVcLmNhY2hlJAorXnRvb2xzL2NvbmZpZ1wuaCQKK150b29scy9jb25maWdcLmxvZyQK
K150b29scy9jb25maWdcLnN0YXR1cyQKK150b29scy9jb25maWdcLmNhY2hlJAorXmNvbmZpZy9U
b29sc1wubWskCiBeeGVuL1wuYmFubmVyLiokCiBeeGVuL0JMT0ckCiBeeGVuL1N5c3RlbS5tYXAk
CmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCBDb25maWcubWsKLS0tIGEvQ29u
ZmlnLm1rCUZyaSBGZWIgMTcgMTI6MjQ6MzggMjAxMiArMDAwMAorKysgYi9Db25maWcubWsJTW9u
IEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC03MCw5ICs3MCw2IEBAIEVYVFJBX0lOQ0xV
REVTICs9ICQoRVhUUkFfUFJFRklYKS9pbmNsdWQKIEVYVFJBX0xJQiArPSAkKEVYVFJBX1BSRUZJ
WCkvJChMSUJMRUFGRElSKQogZW5kaWYKIAotQklTT04JPz0gYmlzb24KLUZMRVgJPz0gZmxleAot
CiBQWVRIT04gICAgICA/PSBweXRob24KIFBZVEhPTl9QUkVGSVhfQVJHID89IC0tcHJlZml4PSIk
KFBSRUZJWCkiCiAjIFRoZSBhYm92ZSByZXF1aXJlcyB0aGF0IFBSRUZJWCBjb250YWlucyAqbm8g
c3BhY2VzKi4gVGhpcyB2YXJpYWJsZSBpcyBoZXJlCkBAIC0xNzUsMzIgKzE3Miw5IEBAIENGTEFH
UyArPSAkKGZvcmVhY2ggaSwgJChQUkVQRU5EX0lOQ0xVREUKIEFQUEVORF9MREZMQUdTICs9ICQo
Zm9yZWFjaCBpLCAkKEFQUEVORF9MSUIpLCAtTCQoaSkpCiBBUFBFTkRfQ0ZMQUdTICs9ICQoZm9y
ZWFjaCBpLCAkKEFQUEVORF9JTkNMVURFUyksIC1JJChpKSkKIAotQ0hFQ0tfTElCID0gJChFWFRS
QV9MSUIpICQoUFJFUEVORF9MSUIpICQoQVBQRU5EX0xJQikKLUNIRUNLX0lOQ0xVREVTID0gJChF
WFRSQV9JTkNMVURFUykgJChQUkVQRU5EX0lOQ0xVREVTKSAkKEFQUEVORF9JTkNMVURFUykKLQog
RU1CRURERURfRVhUUkFfQ0ZMQUdTIDo9IC1ub3BpZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtZm5v
LXN0YWNrLXByb3RlY3Rvci1hbGwKIEVNQkVEREVEX0VYVFJBX0NGTEFHUyArPSAtZm5vLWV4Y2Vw
dGlvbnMKIAotQ09ORklHX0xJQklDT05WICAgOj0gJChzaGVsbCBleHBvcnQgT1M9ImB1bmFtZSAt
c2AiOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydCBDSEVDS19MSUI9IiQoQ0hFQ0tf
TElCKSI7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgLiAkKFhFTl9ST09UKS90b29scy9jaGVj
ay9mdW5jcy5zaDsgXAotICAgICAgICAgICAgICAgICAgICAgICBoYXNfbGliIGxpYmljb252LnNv
ICYmIGVjaG8gJ3knIHx8IGVjaG8gJ24nKQotCi1DT05GSUdfWUFKTF9WRVJTSU9OIDo9ICQoc2hl
bGwgZXhwb3J0IE9TPSJgdW5hbWUgLXNgIjsgXAotICAgICAgICAgICAgICAgICAgICAgICBleHBv
cnQgQ0hFQ0tfSU5DTFVERVM9IiQoQ0hFQ0tfSU5DTFVERVMpIjsgXAotICAgICAgICAgICAgICAg
ICAgICAgICAuICQoWEVOX1JPT1QpL3Rvb2xzL2NoZWNrL2Z1bmNzLnNoOyBcCi0gICAgICAgICAg
ICAgICAgICAgICAgIGhhc19oZWFkZXIgeWFqbC95YWpsX3ZlcnNpb24uaCAmJiBlY2hvICd5JyB8
fCBlY2hvICduJykKLQotIyBFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVsZSAoYnkgZGVmYXVsdCwg
Rmxhc2spLgotWFNNX0VOQUJMRSA/PSBuCi1GTEFTS19FTkFCTEUgPz0gJChYU01fRU5BQkxFKQot
Ci0jIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhUVFAgb3IgR0lUJ3Mgb3duIHByb3Rv
Y29sPwotIyBHSVQncyBwcm90b2NvbCBpcyBmYXN0ZXIgYW5kIG1vcmUgcm9idXN0LCB3aGVuIGl0
IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCi0jIG1heSBibG9jayBpdCkuIFdlIG1ha2UgaXQgdGhl
IGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCByZXBvc2l0b3J5IGRvd25sb2FkcwotIyBmYWlsIG9y
IGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9IVFRQPXkgaW4geW91ciBlbnZpcm9ubWVudC4KLUdJ
VF9IVFRQID89IG4KLQogWEVOX0VYVEZJTEVTX1VSTD1odHRwOi8veGVuYml0cy54ZW5zb3VyY2Uu
Y29tL3hlbi1leHRmaWxlcwogIyBBbGwgdGhlIGZpbGVzIGF0IHRoYXQgbG9jYXRpb24gd2VyZSBk
b3dubG9hZGVkIGZyb20gZWxzZXdoZXJlIG9uCiAjIHRoZSBpbnRlcm5ldC4gIFRoZSBvcmlnaW5h
bCBkb3dubG9hZCBVUkwgaXMgcHJlc2VydmVkIGFzIGEgY29tbWVudApAQCAtMjM5LDE3ICsyMTMs
NCBAQCBRRU1VX1RBRyA/PSA0MTRiODc4ZThlYTE3YzY1Y2QwZDdmOWRmYzM4CiAjIFNob3J0IGFu
c3dlciAtLSBkbyBub3QgZW5hYmxlIHRoaXMgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZQog
IyBkb2luZyBhbmQgYXJlIHByZXBhcmVkIGZvciBzb21lIHBhaW4uCiAKLSMgT3B0aW9uYWwgY29t
cG9uZW50cwotWEVOU1RBVF9YRU5UT1AgICAgID89IHkKLVZUUE1fVE9PTFMgICAgICAgICA/PSBu
Ci1MSUJYRU5BUElfQklORElOR1MgPz0gbgotUFlUSE9OX1RPT0xTICAgICAgID89IHkKLU9DQU1M
X1RPT0xTICAgICAgICA/PSB5Ci1DT05GSUdfTUlOSVRFUk0gICAgPz0gbgotQ09ORklHX0xPTU9V
TlQgICAgID89IG4KLUNPTkZJR19TWVNURU1fTElCQUlPID89IHkKIENPTkZJR19URVNUUyAgICAg
ICA/PSB5Ci0KLWlmZXEgKCQoT0NBTUxfVE9PTFMpLHkpCi1PQ0FNTF9UT09MUyA6PSAkKHNoZWxs
IG9jYW1sb3B0IC12ID4gL2Rldi9udWxsIDI+JjEgJiYgZWNobyAieSIgfHwgZWNobyAibiIpCi1l
bmRpZgpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgTWFrZWZpbGUKLS0tIGEv
TWFrZWZpbGUJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyBiL01ha2VmaWxlCU1v
biBGZWIgMjAgMTg6MjA6MjkgMjAxMiArMDEwMApAQCAtNDAsMTEgKzQwLDkgQEAgZGlzdDogREVT
VERJUj0kKERJU1RESVIpL2luc3RhbGwKIGRpc3Q6IGRpc3QteGVuIGRpc3Qta2VybmVscyBkaXN0
LXRvb2xzIGRpc3Qtc3R1YmRvbSBkaXN0LWRvY3MgZGlzdC1taXNjCiAKIGRpc3QtbWlzYzoKLQkk
KElOU1RBTExfRElSKSAkKERJU1RESVIpL2NoZWNrCiAJJChJTlNUQUxMX0RBVEEpIC4vQ09QWUlO
RyAkKERJU1RESVIpCiAJJChJTlNUQUxMX0RBVEEpIC4vUkVBRE1FICQoRElTVERJUikKIAkkKElO
U1RBTExfUFJPRykgLi9pbnN0YWxsLnNoICQoRElTVERJUikKLQkkKElOU1RBTExfUFJPRykgdG9v
bHMvY2hlY2svY2hrIHRvb2xzL2NoZWNrL2NoZWNrXyogdG9vbHMvY2hlY2svZnVuY3Muc2ggJChE
SVNURElSKS9jaGVjawogZGlzdC0lOiBERVNURElSPSQoRElTVERJUikvaW5zdGFsbAogZGlzdC0l
OiBpbnN0YWxsLSUKIAlAOiAjIGRvIG5vdGhpbmcKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2Nk
ZjllZDhhOTE0IFJFQURNRQotLS0gYS9SRUFETUUJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICsw
MDAwCisrKyBiL1JFQURNRQlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTg5LDkg
Kzg5LDEzIEBAIDIuIGNkIHRvIHhlbi11bnN0YWJsZSAob3Igd2hhdGV2ZXIgeW91IHMKIDMuIEZv
ciB0aGUgdmVyeSBmaXJzdCBidWlsZCwgb3IgaWYgeW91IHdhbnQgdG8gZGVzdHJveSBidWlsZCB0
cmVlcywKICAgIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKIAorICAgICMgLi9jb25maWd1
cmUKICAgICAjIG1ha2Ugd29ybGQKICAgICAjIG1ha2UgaW5zdGFsbAogCisgICBJZiB5b3Ugd2Fu
dCwgeW91IGNhbiBydW4gLi9jb25maWd1cmUgLS1oZWxwIHRvIHNlZSB0aGUgbGlzdCBvZgorICAg
b3B0aW9ucyBhdmFpbGFibGUgb3B0aW9ucyB3aGVuIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIFhl
bi4KKwogICAgVGhpcyB3aWxsIGNyZWF0ZSBhbmQgaW5zdGFsbCBvbnRvIHRoZSBsb2NhbCBtYWNo
aW5lLiBJdCB3aWxsIGJ1aWxkCiAgICB0aGUgeGVuIGJpbmFyeSAoeGVuLmd6KSwgdGhlIHRvb2xz
IGFuZCB0aGUgZG9jdW1lbnRhdGlvbi4KIApkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVk
OGE5MTQgYXV0b2dlbi5zaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi9hdXRvZ2VuLnNoCU1vbiBGZWIgMjAgMTg6MjA6MjkgMjAxMiArMDEwMApAQCAt
MCwwICsxLDggQEAKKyMhL2Jpbi9zaCAtZQorcm0gLXJmIGNvbmZpZ3VyZQorY2QgdG9vbHMKK2F1
dG9jb25mCitjZCAuLgorZWNobyAiIyEvYmluL3NoIC1lIiA+PiBjb25maWd1cmUKK2VjaG8gImNk
IHRvb2xzICYmIC4vY29uZmlndXJlIFwkQCIgPj4gY29uZmlndXJlCitjaG1vZCAreCBjb25maWd1
cmUKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IGNvbmZpZy9Ub29scy5tay5p
bgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9jb25m
aWcvVG9vbHMubWsuaW4JTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEs
NTAgQEAKKyMgUHJlZml4IGFuZCBpbnN0YWxsIGZvbGRlcgorUFJFRklYICAgICAgICAgICAgICA6
PSBAcHJlZml4QAorTElCTEVBRkRJUl94ODZfNjQgICA6PSBATElCX1BBVEhACisKKyMgQSBkZWJ1
ZyBidWlsZCBvZiB0b29scz8KK2RlYnVnICAgICAgICAgICAgICAgOj0gQGRlYnVnQAorCisjIFRv
b2xzIHBhdGgKK0JJU09OICAgICAgICAgICAgICAgOj0gQEJJU09OQAorRkxFWCAgICAgICAgICAg
ICAgICA6PSBARkxFWEAKK1BZVEhPTiAgICAgICAgICAgICAgOj0gQFBZVEhPTkAKK1BZVEhPTl9Q
QVRIICAgICAgICAgOj0gQFBZVEhPTlBBVEhACitQRVJMICAgICAgICAgICAgICAgIDo9IEBQRVJM
QAorQlJDVEwgICAgICAgICAgICAgICA6PSBAQlJDVExACitJUCAgICAgICAgICAgICAgICAgIDo9
IEBJUEAKK0NVUkxfQ09ORklHICAgICAgICAgOj0gQENVUkxACitYTUwyX0NPTkZJRyAgICAgICAg
IDo9IEBYTUxACitCQVNIICAgICAgICAgICAgICAgIDo9IEBCQVNIQAorWEdFVFRURVhUICAgICAg
ICAgICA6PSBAWEdFVFRFWFRACisKKyMgRXh0cmEgZm9sZGVyIGZvciBsaWJzL2luY2x1ZGVzCitQ
UkVQRU5EX0lOQ0xVREVTICAgIDo9IEBQUkVQRU5EX0lOQ0xVREVTQAorUFJFUEVORF9MSUIgICAg
ICAgICA6PSBAUFJFUEVORF9MSUJACitBUFBFTkRfSU5DTFVERVMgICAgIDo9IEBBUFBFTkRfSU5D
TFVERVNACitBUFBFTkRfTElCICAgICAgICAgIDo9IEBBUFBFTkRfTElCQAorCisjIEVuYWJsZSBY
U00gc2VjdXJpdHkgbW9kdWxlIChieSBkZWZhdWx0LCBGbGFzaykuCitYU01fRU5BQkxFICAgICAg
ICAgIDo9IEB4c21ACitGTEFTS19FTkFCTEUgICAgICAgIDo9IEB4c21ACisKKyMgRG93bmxvYWQg
R0lUIHJlcG9zaXRvcmllcyB2aWEgSFRUUCBvciBHSVQncyBvd24gcHJvdG9jb2w/CisjIEdJVCdz
IHByb3RvY29sIGlzIGZhc3RlciBhbmQgbW9yZSByb2J1c3QsIHdoZW4gaXQgd29ya3MgYXQgYWxs
IChmaXJld2FsbHMKKyMgbWF5IGJsb2NrIGl0KS4gV2UgbWFrZSBpdCB0aGUgZGVmYXVsdCwgYnV0
IGlmIHlvdXIgR0lUIHJlcG9zaXRvcnkgZG93bmxvYWRzCisjIGZhaWwgb3IgaGFuZywgcGxlYXNl
IHNwZWNpZnkgR0lUX0hUVFA9eSBpbiB5b3VyIGVudmlyb25tZW50LgorR0lUX0hUVFAgICAgICAg
ICAgICA6PSBAZ2l0aHR0cEAKKworIyBPcHRpb25hbCBjb21wb25lbnRzCitYRU5TVEFUX1hFTlRP
UCAgICAgIDo9IEBtb25pdG9yc0AKK1ZUUE1fVE9PTFMgICAgICAgICAgOj0gQHZ0cG1ACitMSUJY
RU5BUElfQklORElOR1MgIDo9IEB4YXBpQAorUFlUSE9OX1RPT0xTICAgICAgICA6PSBAcHl0aG9u
dG9vbHNACitPQ0FNTF9UT09MUyAgICAgICAgIDo9IEBvY2FtbHRvb2xzQAorQ09ORklHX01JTklU
RVJNICAgICA6PSBAbWluaXRlcm1ACitDT05GSUdfTE9NT1VOVCAgICAgIDo9IEBsb21vdW50QAor
CisjU3lzdGVtIG9wdGlvbnMKK0NPTkZJR19TWVNURU1fTElCQUlPOj0gQHN5c3RlbV9haW9ACitD
T05GSUdfTElCSUNPTlYgICAgIDo9IEBsaWJpY29udkAKK0NPTkZJR19HQ1JZUFQgICAgICAgOj0g
QGxpYmdjcnlwdEAKK0NPTkZJR19FWFQyRlMgICAgICAgOj0gQGxpYmV4dDJmc0AKZGlmZiAtciA4
NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IGNvbmZpZ3VyZQotLS0gL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9jb25maWd1cmUJTW9uIEZlYiAyMCAxODoy
MDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoIC1lCitjZCB0b29scyAm
JiAuL2NvbmZpZ3VyZSAkQApkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9v
bHMvTWFrZWZpbGUKLS0tIGEvdG9vbHMvTWFrZWZpbGUJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEy
ICswMDAwCisrKyBiL3Rvb2xzL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MjA6MjkgMjAxMiArMDEw
MApAQCAtNiw3ICs2LDYgQEAgU1VCRElSUy1saWJhaW8gOj0gbGliYWlvCiBlbmRpZgogCiBTVUJE
SVJTLXkgOj0KLVNVQkRJUlMteSArPSBjaGVjawogU1VCRElSUy15ICs9IGluY2x1ZGUKIFNVQkRJ
UlMteSArPSBsaWJ4YwogU1VCRElSUy15ICs9IGZsYXNrCkBAIC03OSw2ICs3OCw4IEBAIGNsZWFu
OiBzdWJkaXJzLWNsZWFuCiBkaXN0Y2xlYW46IHN1YmRpcnMtZGlzdGNsZWFuCiAJcm0gLXJmIHFl
bXUteGVuLXRyYWRpdGlvbmFsLWRpciBxZW11LXhlbi10cmFkaXRpb25hbC1kaXItcmVtb3RlCiAJ
cm0gLXJmIHFlbXUteGVuLWRpciBxZW11LXhlbi1kaXItcmVtb3RlCisJcm0gLXJmIC4uL2NvbmZp
Zy9Ub29scy5tayBjb25maWcuaCBjb25maWcubG9nIGNvbmZpZy5zdGF0dXMgXAorCQljb25maWcu
Y2FjaGUgYXV0b200dGUuY2FjaGUKIAogaWZuZXEgKCQoWEVOX0NPTVBJTEVfQVJDSCksJChYRU5f
VEFSR0VUX0FSQ0gpKQogSU9FTVVfQ09ORklHVVJFX0NST1NTID89IC0tY3B1PSQoWEVOX1RBUkdF
VF9BUkNIKSBcCmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9SdWxl
cy5tawotLS0gYS90b29scy9SdWxlcy5tawlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAK
KysrIGIvdG9vbHMvUnVsZXMubWsJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC00
LDYgKzQsNyBAQAogYWxsOgogCiBpbmNsdWRlICQoWEVOX1JPT1QpL0NvbmZpZy5taworaW5jbHVk
ZSAkKFhFTl9ST09UKS9jb25maWcvVG9vbHMubWsKIAogZXhwb3J0IF9JTlNUQUxMIDo9ICQoSU5T
VEFMTCkKIElOU1RBTEwgPSAkKFhFTl9ST09UKS90b29scy9jcm9zcy1pbnN0YWxsCkBAIC04MCw4
ICs4MSw2IEBAIGNoZWNrLSQoQ09ORklHX1g4NikgPSAkKGNhbGwgY2MtdmVyLWNoZWMKICAgICAg
ICAgICAgICAgICAgICAgICAgICJYZW4gcmVxdWlyZXMgYXQgbGVhc3QgZ2NjLTMuNCIpCiAkKGV2
YWwgJChjaGVjay15KSkKIAotX1BZVEhPTl9QQVRIIDo9ICQoc2hlbGwgd2hpY2ggJChQWVRIT04p
KQotUFlUSE9OX1BBVEggPz0gJChfUFlUSE9OX1BBVEgpCiBJTlNUQUxMX1BZVEhPTl9QUk9HID0g
XAogCSQoWEVOX1JPT1QpL3Rvb2xzL3B5dGhvbi9pbnN0YWxsLXdyYXAgIiQoUFlUSE9OX1BBVEgp
IiAkKElOU1RBTExfUFJPRykKIApAQCAtMTA5LDMgKzEwOCw3IEBAIHN1YmRpci1hbGwtJSBzdWJk
aXItY2xlYW4tJSBzdWJkaXItaW5zdGEKIAogc3ViZGlyLWRpc3RjbGVhbi0lOiAucGhvbnkKIAkk
KE1BS0UpIC1DICQqIGNsZWFuCisKKyQoWEVOX1JPT1QpL2NvbmZpZy9Ub29scy5tazoKKwlAZWNo
byAiWW91IGhhdmUgdG8gcnVuIC4vY29uZmlndXJlIGJlZm9yZSBidWlsZGluZyBvciBpbnN0YWxs
aW5nIHRoZSB0b29scyIKKwlAZXhpdCAxCmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4
YTkxNCB0b29scy9ibGt0YXAvZHJpdmVycy9NYWtlZmlsZQotLS0gYS90b29scy9ibGt0YXAvZHJp
dmVycy9NYWtlZmlsZQlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMv
YmxrdGFwL2RyaXZlcnMvTWFrZWZpbGUJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBA
IC0xMyw3ICsxMyw3IEBAIENGTEFHUyAgICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQogQ0ZMQUdT
ICAgKz0gLUkgJChNRU1TSFJfRElSKQogQ0ZMQUdTICAgKz0gLURfR05VX1NPVVJDRQogCi1pZmVx
ICgkKHNoZWxsIC4gLi9jaGVja19nY3J5cHQgJChDQykpLHllcykKK2lmZXEgKCRDT05GSUdfR0NS
WVBULHkpCiBDRkxBR1MgKz0gLURVU0VfR0NSWVBUCiBDUllQVF9MSUIgOj0gLWxnY3J5cHQKIGVs
c2UKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2Jsa3RhcC9kcml2
ZXJzL2NoZWNrX2djcnlwdAotLS0gYS90b29scy9ibGt0YXAvZHJpdmVycy9jaGVja19nY3J5cHQJ
RnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE0ICswLDAgQEAKLSMhL2Jpbi9zaAotCi1jYXQgPiAu
Z2NyeXB0LmMgPDwgRU9GCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci1pbnQgbWFpbih2b2lkKSB7IHJl
dHVybiAwOyB9Ci1FT0YKLQotaWYgJDEgLW8gLmdjcnlwdCAuZ2NyeXB0LmMgLWxnY3J5cHQgMj4v
ZGV2L251bGwgOyB0aGVuCi0gIGVjaG8gInllcyIKLWVsc2UKLSAgZWNobyAibm8iCi1maQotCi1y
bSAtZiAuZ2NyeXB0KgpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMv
Y2hlY2svTWFrZWZpbGUKLS0tIGEvdG9vbHMvY2hlY2svTWFrZWZpbGUJRnJpIEZlYiAxNyAxMjoy
NDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCkBAIC0xLDI2ICswLDAgQEAKLVhFTl9ST09UID0gJChDVVJESVIpLy4uLy4uCi1pbmNsdWRl
ICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCi0KLSMgRXhwb3J0IHRoZSBuZWNlc3NhcnkgZW52
aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgdGVzdHMKLWV4cG9ydCBQWVRIT04KLWV4cG9ydCBM
SUJYRU5BUElfQklORElOR1MKLWV4cG9ydCBDSEVDS19JTkNMVURFUwotZXhwb3J0IENIRUNLX0xJ
QgotZXhwb3J0IENPTkZJR19TWVNURU1fTElCQUlPCi0KLS5QSE9OWTogYWxsIGluc3RhbGwKLWFs
bCBpbnN0YWxsOiBjaGVjay1idWlsZAotCi0jIENoZWNrIHRoaXMgbWFjaGluZSBpcyBPSyBmb3Ig
YnVpbGRpbmcgb24uCi0uUEhPTlk6IGNoZWNrLWJ1aWxkCi1jaGVjay1idWlsZDoKLQkuL2NoayBi
dWlsZAotCi0jIENoZWNrIHRoaXMgbWFjaGluZSBpcyBPSyBmb3IgaW5zdGFsbGluZyBvbi4KLS5Q
SE9OWTogY2hlY2staW5zdGFsbAotY2hlY2staW5zdGFsbDoKLQkuL2NoayBpbnN0YWxsCi0KLS5Q
SE9OWTogY2xlYW4KLWNsZWFuOgotCS4vY2hrIGNsZWFuCmRpZmYgLXIgODcyMThiZDM2N2JlIC1y
IGNjZGY5ZWQ4YTkxNCB0b29scy9jaGVjay9SRUFETUUKLS0tIGEvdG9vbHMvY2hlY2svUkVBRE1F
CUZyaSBGZWIgMTcgMTI6MjQ6MzggMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMCArMCwwIEBACi1DaGVja3MgZm9yIHRoZSBzdWl0
YWJpbGl0eSBvZiBhIG1hY2hpbmUgZm9yIFhlbiBidWlsZCBvciBpbnN0YWxsLgotVG8gY2hlY2sg
Zm9yIGJ1aWxkIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hrIGJ1aWxkCi0KLVRvIGNo
ZWNrIGZvciBpbnN0YWxsIHN1aXRhYmlsaXR5IHVzZQotCi0gICAgICAgIC4vY2hrIGluc3RhbGwK
LQotVGhlIGNoayBzY3JpcHQgd2lsbCBydW4gY2hlY2tzIGluIHRoaXMgZGlyZWN0b3J5IGFuZCBw
cmludAotdGhlIG9uZXMgdGhhdCBmYWlsZWQuIEl0IHByaW50cyBub3RoaW5nIGlmIGNoZWNrcyBz
dWNjZWVkLgotVGhlIGNoayBzY3JpcHQgZXhpdHMgd2l0aCAwIG9uIHN1Y2Nlc3MgYW5kIDEgb24g
ZmFpbHVyZS4KLQotVGhlIGNoayBzY3JpcHQgcnVucyBleGVjdXRhYmxlIGZpbGVzIGluIHRoaXMg
ZGlyZWN0b3J5IHdob3NlCi1uYW1lcyBiZWdpbiB3aXRoICdjaGVja18nLiBGaWxlcyBjb250YWlu
aW5nIENIRUNLLUJVSUxECi1hcmUgcnVuIGZvciB0aGUgYnVpbGQgY2hlY2ssIGFuZCBmaWxlcyBj
b250YWluaW5nIENIRUNLLUlOU1RBTEwKLWFyZSBydW4gZm9yIHRoZSBpbnN0YWxsIGNoZWNrLgot
Ci1EZXRhaWxlZCBvdXRwdXQgZnJvbSB0aGUgY2hlY2sgc2NyaXB0cyBpcyBpbiAuY2hrYnVpbGQg
Zm9yIGJ1aWxkCi1hbmQgLmNoa2luc3RhbGwgZm9yIGluc3RhbGwuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvY2hl
Y2svY2hlY2tfYnJjdGwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfYnJjdGwJRnJpIEZlYiAxNyAx
MjoyNDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1JTlNUQUxMCi0KLS4g
Li9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotT3BlbkJTRHxOZXRCU0R8RnJlZUJTRCkKLQloYXNf
b3JfZmFpbCBicmNvbmZpZyA7OwotTGludXgpCi0JaGFzX29yX2ZhaWwgYnJjdGwgOzsKLSopCi0J
ZmFpbCAidW5rbm93biBPUyIgOzsKLWVzYWMKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjll
ZDhhOTE0IHRvb2xzL2NoZWNrL2NoZWNrX2NyeXB0b19saWIKLS0tIGEvdG9vbHMvY2hlY2svY2hl
Y2tfY3J5cHRvX2xpYglGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTEgKzAsMCBAQAotIyEvYmlu
L3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWNhc2Ug
JE9TIGluCi1GcmVlQlNEfE5ldEJTRHxPcGVuQlNEKQotCWV4aXQgMCA7OwotZXNhYwotCi1oYXNf
bGliIGxpYmNyeXB0by5zbyB8fCBmYWlsICJtaXNzaW5nIGxpYmNyeXB0by5zbyIKZGlmZiAtciA4
NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2NoZWNrL2NoZWNrX2N1cmwKLS0tIGEv
dG9vbHMvY2hlY2svY2hlY2tfY3VybAlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysr
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTMgKzAsMCBA
QAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNo
Ci0KLWlmIFsgIiRMSUJYRU5BUElfQklORElOR1MiICE9ICJ5IiBdOyB0aGVuCi0JZWNobyAtbiAi
dW51c2VkLCAiCi0JZXhpdCAwCi1maQotCi1oYXNfb3JfZmFpbCBjdXJsLWNvbmZpZwotY3VybF9s
aWJzPWBjdXJsLWNvbmZpZyAtLWxpYnNgIHx8IGZhaWwgImN1cmwtY29uZmlnIC0tbGlicyBmYWls
ZWQiCi10ZXN0X2xpbmsgJGN1cmxfbGlicyB8fCBmYWlsICJkZXBlbmRlbmN5IGxpYnJhcmllcyBm
b3IgY3VybCBhcmUgbWlzc2luZyIKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0
IHRvb2xzL2NoZWNrL2NoZWNrX2lwcm91dGUKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfaXByb3V0
ZQlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTUgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNL
LUlOU1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLVBBVEg9L3NiaW46JFBBVEgKLQotY2FzZSAkT1Mg
aW4KLU9wZW5CU0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwgaWZjb25maWcgOzsKLUxp
bnV4KQotCWhhc19vcl9mYWlsIGlwIDs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiIDs7Ci1lc2Fj
CmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9jaGVjay9jaGVja19s
aWJhaW9fZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfbGliYWlvX2RldmVsCUZyaSBGZWIg
MTcgMTI6MjQ6MzggMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQot
LiAuL2Z1bmNzLnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9IFgieSIgXSA7
IHRoZW4KLSAgICBleGl0IDAKLWZpCi1pZiAhIGhhc19oZWFkZXIgbGliYWlvLmggOyB0aGVuCi0g
ICAgZmFpbCAiY2FuJ3QgZmluZCBsaWJhaW8gaGVhZGVycywgaW5zdGFsbCBsaWJhaW8gZGV2ZWwg
cGFja2FnZSBvciBzZXQgQ09ORklHX1NZU1RFTV9MSUJBSU89biIKLWZpCmRpZmYgLXIgODcyMThi
ZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9jaGVjay9jaGVja19saWJhaW9fbGliCi0tLSBh
L3Rvb2xzL2NoZWNrL2NoZWNrX2xpYmFpb19saWIJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICsw
MDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDkg
KzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQotLiAuL2Z1
bmNzLnNoCi0KLWlmIFsgWCR7Q09ORklHX1NZU1RFTV9MSUJBSU99ICE9IFgieSIgXSA7IHRoZW4K
LSAgICBleGl0IDAKLWZpCi1oYXNfbGliIGxpYmFpby5zbyB8fCBmYWlsICJjYW4ndCBmaW5kIGxp
YmFpbyIKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2NoZWNrL2No
ZWNrX29wZW5zc2xfZGV2ZWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfb3BlbnNzbF9kZXZlbAlG
cmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJ
TEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgb3BlbnNzbC9tZDUuaCB8fCBmYWlsICJt
aXNzaW5nIG9wZW5zc2wgaGVhZGVycyIKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhh
OTE0IHRvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbgotLS0gYS90b29scy9jaGVjay9jaGVja19weXRo
b24JRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVD
Sy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiB0ZXN0IC16ICR7UFlU
SE9OfTsgdGhlbgotICBQWVRIT049cHl0aG9uCi1maQotCi0ke1BZVEhPTn0gLWMgJwotaW1wb3J0
IHN5cwotc3lzLmV4aXQoc3lzLnZlcnNpb25faW5mb1swXSA8IDIgb3Igc3lzLnZlcnNpb25faW5m
b1sxXSA8IDMpCi0nIHx8IGZhaWwgIm5lZWQgcHl0aG9uIHZlcnNpb24gPj0gMi4zIgpkaWZmIC1y
IDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX2Rl
dmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl9kZXZlbAlGcmkgRmViIDE3IDEyOjI0
OjM4IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKQEAgLTEsMTcgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5j
cy5zaAotCi1pZiB0ZXN0IC16ICR7UFlUSE9OfTsgdGhlbgotICBQWVRIT049cHl0aG9uCi1maQot
aGFzX29yX2ZhaWwgJHtQWVRIT059Ci0KLSR7UFlUSE9OfSAtYyAnCi1pbXBvcnQgb3MucGF0aCwg
c3lzCi1mb3IgcCBpbiBzeXMucGF0aDoKLQlpZiBvcy5wYXRoLmV4aXN0cyhwICsgIi9jb25maWcv
TWFrZWZpbGUiKToKLQkJc3lzLmV4aXQoMCkKLXN5cy5leGl0KDEpCi0nIHx8IGZhaWwgImNhbid0
IGZpbmQgcHl0aG9uIGRldmVsIGZpbGVzIgpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVk
OGE5MTQgdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX3htbAotLS0gYS90b29scy9jaGVjay9jaGVj
a19weXRob25feG1sCUZyaSBGZWIgMTcgMTI6MjQ6MzggMjAxMiArMDAwMAorKysgL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBACi0jIS9iaW4v
c2gKLSMgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotaWYgdGVzdCAteiAke1BZVEhP
Tn07IHRoZW4KLSAgUFlUSE9OPXB5dGhvbgotZmkKLWhhc19vcl9mYWlsICR7UFlUSE9OfQotCi0k
e1BZVEhPTn0gLWMgJ2ltcG9ydCB4bWwuZG9tLm1pbmlkb20nIDI+L2Rldi9udWxsIHx8IFwKLWZh
aWwgImNhbid0IGltcG9ydCB4bWwuZG9tLm1pbmlkb20iCmRpZmYgLXIgODcyMThiZDM2N2JlIC1y
IGNjZGY5ZWQ4YTkxNCB0b29scy9jaGVjay9jaGVja191ZGV2Ci0tLSBhL3Rvb2xzL2NoZWNrL2No
ZWNrX3VkZXYJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIyICswLDAgQEAKLSMhL2Jpbi9zaAot
IyBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotT3BlbkJTRHxO
ZXRCU0R8RnJlZUJTRCkKLQloYXNfb3JfZmFpbCB2bmNvbmZpZwotCTs7Ci1MaW51eCkKLQloYXMg
L3NiaW4vdWRldmFkbSAmJiBcCi0JCXVkZXZ2ZXI9YC9zYmluL3VkZXZhZG0gaW5mbyAtViB8IGF3
ayAne3ByaW50ICRORn0nYAotCVsgLXogIiR1ZGV2dmVyIiBdICYmIGhhc19vcl9mYWlsIHVkZXZp
bmZvICYmIFwKLQkJdWRldnZlcj1gdWRldmluZm8gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKLQlb
ICIkdWRldnZlciIgLWdlIDU5IF0gMj4vZGV2L251bGwgfHwgXAotCQloYXMgaG90cGx1ZyB8fCBc
Ci0JCWZhaWwgInVkZXYgaXMgdG9vIG9sZCwgdXBncmFkZSB0byB2ZXJzaW9uIDU5IG9yIGxhdGVy
IgotCTs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiCi0JOzsKLWVzYWMKZGlmZiAtciA4NzIxOGJk
MzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2NoZWNrL2NoZWNrX3V1aWRfZGV2ZWwKLS0tIGEv
dG9vbHMvY2hlY2svY2hlY2tfdXVpZF9kZXZlbAlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAw
MDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNyAr
MCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19o
ZWFkZXIgdXVpZC5oIHx8IFwKLWhhc19oZWFkZXIgdXVpZC91dWlkLmggfHwgZmFpbCAibWlzc2lu
ZyB1dWlkIGhlYWRlcnMgKHBhY2thZ2UgdXVpZC1kZXYpIgpkaWZmIC1yIDg3MjE4YmQzNjdiZSAt
ciBjY2RmOWVkOGE5MTQgdG9vbHMvY2hlY2svY2hlY2tfeDExX2RldmVsCi0tLSBhL3Rvb2xzL2No
ZWNrL2NoZWNrX3gxMV9kZXZlbAlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOSArMCwwIEBACi0j
IS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19oZWFkZXIgWDEx
L2tleXN5bWRlZi5oIHx8IFwKLWhhc19oZWFkZXIgL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9rZXlz
eW1kZWYuaCB8fCBcCi1oYXNfaGVhZGVyIC91c3IvWDExUjcvaW5jbHVkZS9YMTEva2V5c3ltZGVm
LmggfHwgXAotd2FybmluZyAiY2FuJ3QgZmluZCBYMTEgaGVhZGVycyIKZGlmZiAtciA4NzIxOGJk
MzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2NoZWNrL2NoZWNrX3hnZXR0ZXh0Ci0tLSBhL3Rv
b2xzL2NoZWNrL2NoZWNrX3hnZXR0ZXh0CUZyaSBGZWIgMTcgMTI6MjQ6MzggMjAxMiArMDAwMAor
KysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw2ICswLDAg
QEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX29yX2Zh
aWwgeGdldHRleHQKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2No
ZWNrL2NoZWNrX3htbDIKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfeG1sMglGcmkgRmViIDE3IDEy
OjI0OjM4IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsMTQgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlO
U1RBTEwKLQotLiAuL2Z1bmNzLnNoCi0KLWlmIFsgISAiJExJQlhFTkFQSV9CSU5ESU5HUyIgPSAi
eSIgXQotdGhlbgotICAgIGVjaG8gLW4gInVudXNlZCwgIgotICAgIGV4aXQgMAotZmkKLQotaGFz
X29yX2ZhaWwgeG1sMi1jb25maWcKLXhtbDJfbGlicz1geG1sMi1jb25maWcgLS1saWJzYCB8fCBm
YWlsICJ4bWwyLWNvbmZpZyAtLWxpYnMgZmFpbGVkIgotdGVzdF9saW5rICR4bWwyX2xpYnMgfHwg
ZmFpbCAiZGVwZW5kZW5jeSBsaWJyYXJpZXMgZm9yIHhtbDIgYXJlIG1pc3NpbmciCmRpZmYgLXIg
ODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9jaGVjay9jaGVja195YWpsX2RldmVs
Ci0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3lhamxfZGV2ZWwJRnJpIEZlYiAxNyAxMjoyNDozOCAy
MDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBA
IC0xLDggKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAot
Ci1oYXNfaGVhZGVyIHlhamwveWFqbF9wYXJzZS5oIHx8IGZhaWwgImNhbid0IGZpbmQgeWFqbC95
YWpsX3BhcnNlLmgiCi1oYXNfaGVhZGVyIHlhamwveWFqbF9nZW4uaCB8fCBmYWlsICJjYW4ndCBm
aW5kIHlhamwveWFqbF9nZW4uaCIKLWhhc19saWIgbGlieWFqbC5zbyB8fCBmYWlsICJjYW4ndCBm
aW5kIGxpYnlhamwuc28iCmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29s
cy9jaGVjay9jaGVja196bGliX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3psaWJfZGV2
ZWwJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNL
LUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHpsaWIuaCB8fCBmYWlsICJjYW4n
dCBmaW5kIHpsaWIgaGVhZGVycyIKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0
IHRvb2xzL2NoZWNrL2NoZWNrX3psaWJfbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3psaWJf
bGliCUZyaSBGZWIgMTcgMTI6MjQ6MzggMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hF
Q0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAkT1MgaW4KLUZy
ZWVCU0R8TmV0QlNEfE9wZW5CU0QpCi0JZXhpdCAwCi0JOzsKLWVzYWMKLQotaGFzX2xpYiBsaWJ6
LnNvIHx8IGZhaWwgImNhbid0IGZpbmQgemxpYiIKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2Nk
ZjllZDhhOTE0IHRvb2xzL2NoZWNrL2NoawotLS0gYS90b29scy9jaGVjay9jaGsJRnJpIEZlYiAx
NyAxMjoyNDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDYzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1mdW5jX3VzYWdlICgpCi17
Ci0gICAgZWNobyAiVXNhZ2U6IgotICAgIGVjaG8gIgkkMCBbYnVpbGR8aW5zdGFsbHxjbGVhbl0i
Ci0gICAgZWNobwotICAgIGVjaG8gIkNoZWNrIHN1aXRhYmlsaXR5IGZvciBYZW4gYnVpbGQgb3Ig
aW5zdGFsbC4iCi0gICAgZWNobyAiRXhpdCB3aXRoIDAgaWYgT0ssIDEgaWYgbm90LiIKLSAgICBl
Y2hvCi0gICAgZWNobyAiQ2FsbGluZyB3aXRoICdjbGVhbicgcmVtb3ZlcyBnZW5lcmF0ZWQgZmls
ZXMuIgotICAgIGV4aXQgMQotfQotCi1QQVRIPSRQQVRIOi9zYmluOi91c3Ivc2JpbgotT1M9YHVu
YW1lIC1zYAotZXhwb3J0IFBBVEggT1MKLQotaWYgWyAiJE9TIiA9ICJTdW5PUyIgXTsgdGhlbgot
CWV4aXQgMAotZmkKLQotY2FzZSAkMSBpbgotICAgIGJ1aWxkKQotICAgICAgICBjaGVjaz0iQ0hF
Q0stQlVJTEQiCi0gICAgICAgIDs7Ci0gICAgaW5zdGFsbCkKLSAgICAgICAgY2hlY2s9IkNIRUNL
LUlOU1RBTEwiCi0gICAgICAgIDs7Ci0gICAgY2xlYW4pCi0gICAgICAgIGV4aXQgMAotICAgICAg
ICA7OwotICAgICopCi0gICAgICAgIGZ1bmNfdXNhZ2UKLSAgICAgICAgOzsKLWVzYWMKLQotZmFp
bGVkPTAKLQotZWNobyAiWGVuICR7Y2hlY2t9ICIgYGRhdGVgCi1mb3IgZiBpbiBjaGVja18qIDsg
ZG8KLSAgICBjYXNlICRmIGluCi0gICAgICAgICp+KQotICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICA7OwotICAgIGVzYWMKLSAgICBp
ZiAhIFsgLXggJGYgXSA7IHRoZW4KLSAgICAgICAgY29udGludWUKLSAgICBmaQotICAgIGlmICEg
Z3JlcCAtRnEgIiRjaGVjayIgJGYgOyB0aGVuCi0gICAgICAgIGNvbnRpbnVlCi0gICAgZmkKLSAg
ICBlY2hvIC1uICJDaGVja2luZyAkZjogIgotICAgIGlmIC4vJGYgMj4mMSA7IHRoZW4KLSAgICAg
ICAgZWNobyBPSwotICAgIGVsc2UKLSAgICAgICAgZmFpbGVkPTEKLSAgICBmaQotZG9uZQotCi1l
eGl0ICR7ZmFpbGVkfQpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMv
Y2hlY2svZnVuY3Muc2gKLS0tIGEvdG9vbHMvY2hlY2svZnVuY3Muc2gJRnJpIEZlYiAxNyAxMjoy
NDozOCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCkBAIC0xLDEwNiArMCwwIEBACi0jIGhhcyBpcyB0aGUgc2FtZSBhcyB3aGljaCwgZXhjZXB0
IGl0IGhhbmRsZXMgY3Jvc3MgZW52aXJvbm1lbnRzCi1oYXMoKSB7Ci0JaWYgWyAteiAiJENST1NT
X0NPTVBJTEUiIF07IHRoZW4KLQkJY29tbWFuZCB3aGljaCAiJEAiCi0JCXJldHVybiAkPwotCWZp
Ci0KLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50
IHBvbGx1dGlvbiBvZiBjYWxsZXIncyBJRlMKLQkoCi0JSUZTPToKLQlmb3IgcCBpbiAkUEFUSDsg
ZG8KLQkJaWYgWyAteCAiJENST1NTX1NZU19ST09ULyRwLyQxIiBdOyB0aGVuCi0JCQllY2hvICIk
Q1JPU1NfU1lTX1JPT1QvJHAvJDEiCi0JCQlyZXR1cm4gMAotCQlmaQotCWRvbmUKLQlyZXR1cm4g
MQotCSkKLX0KLQotaGFzX29yX2ZhaWwoKSB7Ci0JaGFzICIkMSIgPi9kZXYvbnVsbCB8fCBmYWls
ICJjYW4ndCBmaW5kICQxIgotfQotCi1oYXNfaGVhZGVyKCkgewotCWNoZWNrX3N5c19yb290IHx8
IHJldHVybiAxCi0KLQljYXNlICQxIGluCi0JCS8qKSA7OwotCQkqKQotCQlpZiBbIC1yICIkQ1JP
U1NfU1lTX1JPT1QvdXNyL2luY2x1ZGUvJDEiIF07IHRoZW4KLQkJCXJldHVybiAwCi0JCWZpCi0J
CWZvciBwYXRoIGluICR7Q0hFQ0tfSU5DTFVERVN9OyBkbwotCQkJaWYgWyAtciAiJENST1NTX1NZ
U19ST09UJHtwYXRofS8kMSIgXTsgdGhlbgotCQkJCXJldHVybiAwCi0JCQlmaQotCQlkb25lCi0J
CTs7Ci0JZXNhYwotCi0JcmV0dXJuIDEKLX0KLQotaGFzX2xpYigpIHsKLQljaGVja19zeXNfcm9v
dCB8fCByZXR1cm4gMQotCi0JIyBzdWJzaGVsbCB0byBwcmV2ZW50IHBvbGx1dGlvbiBvZiBjYWxs
ZXIncyBlbnZpcm9ubWVudAotCSgKLQlQQVRIPS9zYmluOiRQQVRIICAgICAgICAjIGZvciBsZGNv
bmZpZwotCUxJQlJBUklFUz0iJENIRUNLX0xJQiAvdXNyL2xpYiIKLQotCSMgVGhpcyByZWxhdGl2
ZWx5IGNvbW1vbiBpbiBhIHN5cy1yb290OyBsaWJzIGFyZSBpbnN0YWxsZWQgYnV0Ci0JIyBsZGNv
bmZpZyBoYXNuJ3QgcnVuIHRoZXJlLCBzbyBsZGNvbmZpZyAtcCB3b24ndCB3b3JrLgotCWlmIFsg
IiRPUyIgPSBMaW51eCAtYSAhIC1mICIkQ1JPU1NfU1lTX1JPT1QvZXRjL2xkLnNvLmNhY2hlIiBd
OyB0aGVuCi0JICAgIGVjaG8gIlBsZWFzZSBydW4gbGRjb25maWcgLXIgXCIkQ1JPU1NfU1lTX1JP
T1RcIiB0byBnZW5lcmF0ZSBsZC5zby5jYWNoZSIKLQkgICAgIyBmYWxsIHRocm91Z2g7IGxkY29u
ZmlnIHRlc3QgYmVsb3cgc2hvdWxkIGZhaWwKLQlmaQotCWlmIFsgIiR7T1N9IiA9ICJMaW51eCIg
XTsgdGhlbgotCQlsZGNvbmZpZyAtcCAke0NST1NTX1NZU19ST09UKy1yICIkQ1JPU1NfU1lTX1JP
T1QifSB8IGdyZXAgLUZxICIkMSIKLQkJcmV0dXJuICQ/Ci0JZmkKLQlpZiBbICIke09TfSIgPSAi
TmV0QlNEIiBdOyB0aGVuCi0JCWxzIC0xICR7TElCUkFSSUVTfSB8IGdyZXAgLUZxICIkMSIKLQkJ
cmV0dXJuICQ/Ci0JZmkKLQlyZXR1cm4gMQotCSkKLX0KLQotdGVzdF9saW5rKCkgewotCSMgc3Vi
c2hlbGwgdG8gdHJhcCByZW1vdmFsIG9mIHRtcGZpbGUKLQkoCi0JdW5zZXQgdG1wZmlsZQotCXRy
YXAgJ3JtIC1mICIkdG1wZmlsZSI7IGV4aXQnIDAgMSAyIDE1Ci0JdG1wZmlsZT1gbWt0ZW1wYCB8
fCByZXR1cm4gMQotCWxkICIkQCIgLW8gIiR0bXBmaWxlIiA+L2Rldi9udWxsIDI+JjEKLQlyZXR1
cm4gJD8KLQkpCi19Ci0KLSMgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGNvbW1vbmx5IGFib3ZlCi1j
aGVja19zeXNfcm9vdCgpIHsKLQlbIC16ICIkQ1JPU1NfQ09NUElMRSIgXSAmJiByZXR1cm4gMAot
CWlmIFsgLXogIiRDUk9TU19TWVNfUk9PVCIgXTsgdGhlbgotCQllY2hvICJwbGVhc2Ugc2V0IENS
T1NTX1NZU19ST09UIGluIHRoZSBlbnZpcm9ubWVudCIKLQkJcmV0dXJuIDEKLQlmaQotCWlmIFsg
ISAtZCAiJENST1NTX1NZU19ST09UIiBdOyB0aGVuCi0JCWVjaG8gIm5vIHN5cy1yb290IGZvdW5k
IGF0ICRDUk9TU19TWVNfUk9PVCIKLQkJcmV0dXJuIDEKLQlmaQotfQotCi13YXJuaW5nKCkgewot
CWVjaG8KLQllY2hvICIgKioqIGBiYXNlbmFtZSAiJDAiYCBGQUlMRUQkeyorOiAkKn0iCi19Ci0K
LWZhaWwoKSB7Ci0JZWNobwotCWVjaG8gIiAqKiogYGJhc2VuYW1lICIkMCJgIEZBSUxFRCR7Kis6
ICQqfSIKLQlleGl0IDEKLX0KZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRv
b2xzL2NvbmZpZy5ndWVzcwotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi90b29scy9jb25maWcuZ3Vlc3MJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICsw
MTAwCkBAIC0wLDAgKzEsMTUyMiBAQAorIyEgL2Jpbi9zaAorIyBBdHRlbXB0IHRvIGd1ZXNzIGEg
Y2Fub25pY2FsIHN5c3RlbSBuYW1lLgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5
NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3RpbWVzdGFtcD0nMjAxMS0xMS0xMScK
KworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQQorIyAwMjExMC0xMzAxLCBVU0EuCisjCisjIEFzIGEgc3BlY2lhbCBl
eGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlz
dHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisj
IGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNs
dWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2Ug
Zm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworCisjIE9yaWdpbmFsbHkgd3JpdHRlbiBi
eSBQZXIgQm90aG5lci4gIFBsZWFzZSBzZW5kIHBhdGNoZXMgKGNvbnRleHQKKyMgZGlmZiBmb3Jt
YXQpIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBhbmQgaW5jbHVkZSBhIENoYW5nZUxvZwor
IyBlbnRyeS4KKyMKKyMgVGhpcyBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3MgYSBjYW5vbmljYWwg
c3lzdGVtIG5hbWUgc2ltaWxhciB0bworIyBjb25maWcuc3ViLiAgSWYgaXQgc3VjY2VlZHMsIGl0
IHByaW50cyB0aGUgc3lzdGVtIG5hbWUgb24gc3Rkb3V0LCBhbmQKKyMgZXhpdHMgd2l0aCAwLiAg
T3RoZXJ3aXNlLCBpdCBleGl0cyB3aXRoIDEuCisjCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3Qg
dmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5v
cmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhF
QUQKKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2Fn
ZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5hbWUgb2YgdGhlIHN5
c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAg
ICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAg
cHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNp
b24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFu
ZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dO
VSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIg
Qm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5
NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5n
IGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIK
K1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21t
YW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10
aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4
aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhp
dCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhp
dCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0
OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7
OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiID4m
MgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2Rv
bmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1l
bnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1CisKKyMg
Q0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUgdGhhdCB0
aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24gaXMgZGlz
Y291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNyZWF0ZWQg
YW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBkZWFsIHdp
dGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZPUl9CVUlM
RCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9TVF9DQycg
aWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1wIGRpcmVj
dG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0X2NjX2Zv
cl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9u
dWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAwIDsKK3Ry
YXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxs
OyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1gKHVtYXNr
IDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYgdGVz
dCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIkUkFORE9N
IiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1w
KSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRt
cCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4m
MiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3Rv
cnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15IDsKK3Rt
cGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2FzZSAkQ0Nf
Rk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4gJGR1bW15
LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAtbyAkZHVt
bXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9SX0JVSUxE
PSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZPUl9CVUlM
RCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsKKwlmaQor
CTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JVSUxEPSRI
T1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlzIG5lZWRl
ZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1bml2
ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRlc3QgLWYg
Ly5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRIOi8uYXR0
YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkgMj4vZGV2
L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1y
KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNURU09YCh1
bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5BTUVfVkVS
U0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCisK
KyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBhcmUgbm90
IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtV
TkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6KikKKwkj
IE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1hdGNoIG9u
ZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwcGxlczogKi0qLW5ldGJzZGVsZiosICotKi1uZXRic2Rh
b3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRhcmdldHMg
dGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3VsZCBzZWxl
Y3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBib3RoIGZv
cndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20gZm9yIHNl
bGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBOZXRCU0Qg
ZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0aW9uIG9m
IHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3RsPSJzeXNj
dGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmluLyRzeXNj
dGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8
fCBlY2hvIHVua25vd24pYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAg
YXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OworCSAgICBhcm0qKSBtYWNoaW5lPWFybS11
bmtub3duIDs7CisJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CisJICAgIHNoM2Vi
KSBtYWNoaW5lPXNoLXVua25vd24gOzsKKwkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUtdW5rbm93
biA7OworCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duIDs7CisJ
ZXNhYworCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3JtYXQsIGlm
IGl0IGhhcyBzd2l0Y2hlZAorCSMgdG8gRUxGIHJlY2VudGx5LCBvciB3aWxsIGluIHRoZSBmdXR1
cmUuCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm0qfGkzODZ8bTY4
a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlpZiBl
Y2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJfCBncmVw
IC1xIF9fRUxGX18KKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2FuIGJlIEVD
T0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBSZXR1cm4g
bmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQorCQkgICAg
b3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJCW9zPW5ldGJzZAorCQk7OworCWVz
YWMKKwkjIFRoZSBPUyByZWxlYXNlCisJIyBEZWJpYW4gR05VL05ldEJTRCBtYWNoaW5lcyBoYXZl
IGEgZGlmZmVyZW50IHVzZXJsYW5kLCBhbmQKKwkjIHRodXMsIG5lZWQgYSBkaXN0aW5jdCB0cmlw
bGV0LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBuZWVkCisJIyBrZXJuZWwgdmVyc2lvbiBpbmZvcm1h
dGlvbiwgc28gaXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggYQorCSMgc3VpdGFibGUgdGFnLCBpbiB0
aGUgc3R5bGUgb2YgbGludXgtZ251LgorCWNhc2UgIiR7VU5BTUVfVkVSU0lPTn0iIGluCisJICAg
IERlYmlhbiopCisJCXJlbGVhc2U9Jy1nbnUnCisJCTs7CisJICAgICopCisJCXJlbGVhc2U9YGVj
aG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy1fXS4qL1wuLydgCisJCTs7CisJZXNhYwor
CSMgU2luY2UgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgor
CSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgorCSMg
Q1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KKwllY2hvICIk
e21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSIKKwlleGl0IDs7CisgICAgKjpPcGVuQlNEOio6KikK
KwlVTkFNRV9NQUNISU5FX0FSQ0g9YGFyY2ggfCBzZWQgJ3MvT3BlbkJTRC4vLydgCisJZWNobyAk
e1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4
aXQgOzsKKyAgICAqOmVra29CU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3du
LWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6U29saWRCU0Q6KjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXNvbGlkYnNkJHtVTkFNRV9SRUxFQVNFfQor
CWV4aXQgOzsKKyAgICBtYWNwcGM6TWlyQlNEOio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1t
aXJic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6TWlyQlNEOio6KikKKwllY2hv
ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1taXJic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7
OworICAgIGFscGhhOk9TRjE6KjoqKQorCWNhc2UgJFVOQU1FX1JFTEVBU0UgaW4KKwkqNC4wKQor
CQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAor
CQk7OworCSo1LiopCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAn
e3ByaW50ICQ0fSdgCisJCTs7CisJZXNhYworCSMgQWNjb3JkaW5nIHRvIENvbXBhcSwgL3Vzci9z
YmluL3BzcmluZm8gaGFzIGJlZW4gYXZhaWxhYmxlIG9uCisJIyBPU0YvMSBhbmQgVHJ1NjQgc3lz
dGVtcyBwcm9kdWNlZCBzaW5jZSAxOTk1LiAgSSBob3BlIHRoYXQKKwkjIGNvdmVycyBtb3N0IHN5
c3RlbXMgcnVubmluZyB0b2RheS4gIFRoaXMgY29kZSBwaXBlcyB0aGUgQ1BVCisJIyB0eXBlcyB0
aHJvdWdoIGhlYWQgLW4gMSwgc28gd2Ugb25seSBkZXRlY3QgdGhlIHR5cGUgb2YgQ1BVIDAuCisJ
QUxQSEFfQ1BVX1RZUEU9YC91c3Ivc2Jpbi9wc3JpbmZvIC12IHwgc2VkIC1uIC1lICdzL14gIFRo
ZSBhbHBoYSBcKC4qXCkgcHJvY2Vzc29yLiokL1wxL3AnIHwgaGVhZCAtbiAxYAorCWNhc2UgIiRB
TFBIQV9DUFVfVFlQRSIgaW4KKwkgICAgIkVWNCAoMjEwNjQpIikKKwkJVU5BTUVfTUFDSElORT0i
YWxwaGEiIDs7CisJICAgICJFVjQuNSAoMjEwNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEi
IDs7CisJICAgICJMQ0E0ICgyMTA2Ni8yMTA2OCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIg
OzsKKwkgICAgIkVWNSAoMjExNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjUiIDs7CisJ
ICAgICJFVjUuNiAoMjExNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1NiIgOzsKKwkg
ICAgIkVWNS42ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTYiIDs7CisJ
ICAgICJFVjUuNyAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU3IiA7Owor
CSAgICAiRVY2ICgyMTI2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NiIgOzsKKwkgICAg
IkVWNi43ICgyMTI2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY3IiA7OworCSAgICAi
RVY2LjhDQiAoMjEyNjRDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAg
IkVWNi44QUwgKDIxMjY0QikiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAg
ICJFVjYuOENYICgyMTI2NEQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAg
ICAiRVY2LjlBICgyMTI2NC9FVjY5QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjkiIDs7
CisJICAgICJFVjcgKDIxMzY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3IiA7OworCSAg
ICAiRVY3LjkgKDIxMzY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7CisJZXNh
YworCSMgQSBQbi5uIHZlcnNpb24gaXMgYSBwYXRjaGVkIHZlcnNpb24uCisJIyBBIFZuLm4gdmVy
c2lvbiBpcyBhIHJlbGVhc2VkIHZlcnNpb24uCisJIyBBIFRuLm4gdmVyc2lvbiBpcyBhIHJlbGVh
c2VkIGZpZWxkIHRlc3QgdmVyc2lvbi4KKwkjIEEgWG4ubiB2ZXJzaW9uIGlzIGFuIHVucmVsZWFz
ZWQgZXhwZXJpbWVudGFsIGJhc2VsZXZlbC4KKwkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAt
ci4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLW9zZmBlY2hvICR7VU5BTUVfUkVMRUFTRX0g
fCBzZWQgLWUgJ3MvXltQVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicg
J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKwkjIFJlc2V0IEVYSVQgdHJhcCBiZWZvcmUg
ZXhpdGluZyB0byBhdm9pZCBzcHVyaW91cyBub24temVybyBleGl0IGNvZGUuCisJZXhpdGNvZGU9
JD8KKwl0cmFwICcnIDAKKwlleGl0ICRleGl0Y29kZSA7OworICAgIEFscGhhXCAqOldpbmRvd3Nf
TlQqOiopCisJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdl
bmVyaWMgUE9TSVggc3Vic3lzdGVtPworCSMgU2hvdWxkIHdlIGNoYW5nZSBVTkFNRV9NQUNISU5F
IGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5hbWUgaW5zdGVhZAorCSMgb2YgdGhlIHNwZWNpZmlj
IEFscGhhIG1vZGVsPworCWVjaG8gYWxwaGEtcGMtaW50ZXJpeAorCWV4aXQgOzsKKyAgICAyMTA2
NDpXaW5kb3dzX05UOjUwOjMpCisJZWNobyBhbHBoYS1kZWMtd2lubnQzLjUKKwlleGl0IDs7Cisg
ICAgQW1pZ2EqOlVOSVhfU3lzdGVtX1Y6NC4wOiopCisJZWNobyBtNjhrLXVua25vd24tc3lzdjQK
KwlleGl0IDs7CisgICAgKjpbQWFdbWlnYVtPb11bU3NdOio6KikKKwllY2hvICR7VU5BTUVfTUFD
SElORX0tdW5rbm93bi1hbWlnYW9zCisJZXhpdCA7OworICAgICo6W01tXW9ycGhbT29dW1NzXToq
OiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbW9ycGhvcworCWV4aXQgOzsKKyAg
ICAqOk9TLzM5MDoqOiopCisJZWNobyBpMzcwLWlibS1vcGVuZWRpdGlvbgorCWV4aXQgOzsKKyAg
ICAqOnovVk06KjoqKQorCWVjaG8gczM5MC1pYm0tenZtb2UKKwlleGl0IDs7CisgICAgKjpPUzQw
MDoqOiopCisJZWNobyBwb3dlcnBjLWlibS1vczQwMAorCWV4aXQgOzsKKyAgICBhcm06UklTQyo6
MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCisJZWNobyBhcm0tYWNvcm4tcmlzY2l4
JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhcm06cmlzY29zOio6Knxhcm06UklTQ09T
Oio6KikKKwllY2hvIGFybS11bmtub3duLXJpc2NvcworCWV4aXQgOzsKKyAgICBTUjI/MDE6SEkt
VVgvTVBQOio6KiB8IFNSODAwMDpISS1VWC9NUFA6KjoqKQorCWVjaG8gaHBwYTEuMS1oaXRhY2hp
LWhpdXhtcHAKKwlleGl0IDs7CisgICAgUHlyYW1pZCo6T1N4KjoqOiogfCBNSVMqOk9TeCo6Kjoq
IHwgTUlTKjpTTVBfREMtT1N4KjoqOiopCisJIyBha2VlQHdwZGlzMDMud3BhZmIuYWYubWlsIChF
YXJsZSBGLiBBa2UpIGNvbnRyaWJ1dGVkIE1JUyBhbmQgTklMRS4KKwlpZiB0ZXN0ICJgKC9iaW4v
dW5pdmVyc2UpIDI+L2Rldi9udWxsYCIgPSBhdHQgOyB0aGVuCisJCWVjaG8gcHlyYW1pZC1weXJh
bWlkLXN5c3YzCisJZWxzZQorCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1ic2QKKwlmaQorCWV4aXQg
OzsKKyAgICBOSUxFKjoqOio6ZGNvc3gpCisJZWNobyBweXJhbWlkLXB5cmFtaWQtc3ZyNAorCWV4
aXQgOzsKKyAgICBEUlM/NjAwMDp1bml4OjQuMDo2KikKKwllY2hvIHNwYXJjLWljbC1ueDYKKwll
eGl0IDs7CisgICAgRFJTPzYwMDA6VU5JWF9TVjo0LjIqOjcqIHwgRFJTPzYwMDA6aXNpczo0LjIq
OjcqKQorCWNhc2UgYC91c3IvYmluL3VuYW1lIC1wYCBpbgorCSAgICBzcGFyYykgZWNobyBzcGFy
Yy1pY2wtbng3OyBleGl0IDs7CisJZXNhYyA7OworICAgIHMzOTB4OlN1bk9TOio6KikKKwllY2hv
ICR7VU5BTUVfTUFDSElORX0taWJtLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQg
LWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjRIOlN1bk9TOjUuKjoqKQorCWVjaG8g
c3BhcmMtaGFsLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSov
LydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjUuKjoqIHwgdGFkcG9sZSo6U3VuT1M6NS4q
OiopCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAt
ZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgaTg2cGM6QXVyb3JhVVg6NS4qOiogfCBpODZ4
ZW46QXVyb3JhVVg6NS4qOiopCisJZWNobyBpMzg2LXBjLWF1cm9yYXV4JHtVTkFNRV9SRUxFQVNF
fQorCWV4aXQgOzsKKyAgICBpODZwYzpTdW5PUzo1Lio6KiB8IGk4NnhlbjpTdW5PUzo1Lio6KikK
KwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJU1VOX0FSQ0g9ImkzODYiCisJIyBJZiB0aGVyZSBp
cyBhIGNvbXBpbGVyLCBzZWUgaWYgaXQgaXMgY29uZmlndXJlZCBmb3IgNjQtYml0IG9iamVjdHMu
CisJIyBOb3RlIHRoYXQgdGhlIFN1biBjYyBkb2VzIG5vdCB0dXJuIF9fTFA2NF9fIGludG8gMSBs
aWtlIGdjYyBkb2VzLgorCSMgVGhpcyB0ZXN0IHdvcmtzIGZvciBib3RoIGNvbXBpbGVycy4KKwlp
ZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSAnbm9fY29tcGlsZXJfZm91bmQnIF07IHRoZW4KKwkgICAg
aWYgKGVjaG8gJyNpZmRlZiBfX2FtZDY0JzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5k
aWYnKSB8IFwKKwkJKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwK
KwkJZ3JlcCBJU182NEJJVF9BUkNIID4vZGV2L251bGwKKwkgICAgdGhlbgorCQlTVU5fQVJDSD0i
eDg2XzY0IgorCSAgICBmaQorCWZpCisJZWNobyAke1NVTl9BUkNIfS1wYy1zb2xhcmlzMmBlY2hv
ICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40
KjpTdW5PUzo2KjoqKQorCSMgQWNjb3JkaW5nIHRvIGNvbmZpZy5zdWIsIHRoaXMgaXMgdGhlIHBy
b3BlciB3YXkgdG8gY2Fub25pY2FsaXplCisJIyBTdW5PUzYuICBIYXJkIHRvIGd1ZXNzIGV4YWN0
bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKKwkjIGl0J3MgbGlrZWx5IHRvIGJlIG1v
cmUgbGlrZSBTb2xhcmlzIHRoYW4gU3VuT1M0LgorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMzYGVj
aG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1
bjQqOlN1bk9TOio6KikKKwljYXNlICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCisJICAgIFNlcmll
cyp8UzQqKQorCQlVTkFNRV9SRUxFQVNFPWB1bmFtZSAtdmAKKwkJOzsKKwllc2FjCisJIyBKYXBh
bmVzZSBMYW5ndWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMt
SkwnLgorCWVjaG8gc3BhcmMtc3VuLXN1bm9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg
J3MvLS9fLydgCisJZXhpdCA7OworICAgIHN1bjMqOlN1bk9TOio6KikKKwllY2hvIG02OGstc3Vu
LXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzdW4qOio6NC4yQlNEOiopCisJ
VU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmludCBzdWJzdHIoJDUs
MSwzKX0nKSAyPi9kZXYvbnVsbGAKKwl0ZXN0ICJ4JHtVTkFNRV9SRUxFQVNFfSIgPSAieCIgJiYg
VU5BTUVfUkVMRUFTRT0zCisJY2FzZSAiYC9iaW4vYXJjaGAiIGluCisJICAgIHN1bjMpCisJCWVj
aG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJICAgIHN1bjQpCisJCWVj
aG8gc3BhcmMtc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCQk7OworCWVzYWMKKwlleGl0IDs7
CisgICAgYXVzaHA6U3VuT1M6KjoqKQorCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9S
RUxFQVNFfQorCWV4aXQgOzsKKyAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQgaXMgYSBsaXR0
bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQorICAgICMgY2FuIGJlIHZpcnR1YWxseSBl
dmVyeXRoaW5nIChldmVyeXRoaW5nIHdoaWNoIGlzIG5vdAorICAgICMgImF0YXJpc3QiIG9yICJh
dGFyaXN0ZSIgYXQgbGVhc3Qgc2hvdWxkIGhhdmUgYSBwcm9jZXNzb3IKKyAgICAjID4gbTY4MDAw
KS4gIFRoZSBzeXN0ZW0gbmFtZSByYW5nZXMgZnJvbSAiTWlOVCIgb3ZlciAiRnJlZU1pTlQiCisg
ICAgIyB0byB0aGUgbG93ZXJjYXNlIHZlcnNpb24gIm1pbnQiIChvciAiZnJlZW1pbnQiKS4gIEZp
bmFsbHkKKyAgICAjIHRoZSBzeXN0ZW0gbmFtZSAiVE9TIiBkZW5vdGVzIGEgc3lzdGVtIHdoaWNo
IGlzIGFjdHVhbGx5IG5vdAorICAgICMgTWlOVC4gIEJ1dCBNaU5UIGlzIGRvd253YXJkIGNvbXBh
dGlibGUgdG8gVE9TLCBzbyB0aGlzIHNob3VsZAorICAgICMgYmUgbm8gcHJvYmxlbS4KKyAgICBh
dGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToq
VE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7
CisgICAgYXRhcmkqOipNaU5UOio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipU
T1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsK
KyAgICAqZmFsY29uKjoqTWlOVDoqOiogfCAqZmFsY29uKjoqbWludDoqOiogfCAqZmFsY29uKjoq
VE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7
CisgICAgbWlsYW4qOipNaU5UOio6KiB8IG1pbGFuKjoqbWludDoqOiogfCAqbWlsYW4qOipUT1M6
KjoqKQorCWVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAg
ICBoYWRlcyo6Kk1pTlQ6KjoqIHwgaGFkZXMqOiptaW50Oio6KiB8ICpoYWRlcyo6KlRPUzoqOiop
CisJZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6
Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQorCWVjaG8gbTY4ay11bmtub3du
LW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG02OGs6bWFjaHRlbjoqOiopCisJ
ZWNobyBtNjhrLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHBv
d2VycGM6bWFjaHRlbjoqOiopCisJZWNobyBwb3dlcnBjLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JF
TEVBU0V9CisJZXhpdCA7OworICAgIFJJU0MqOk1hY2g6KjoqKQorCWVjaG8gbWlwcy1kZWMtbWFj
aF9ic2Q0LjMKKwlleGl0IDs7CisgICAgUklTQyo6VUxUUklYOio6KikKKwllY2hvIG1pcHMtZGVj
LXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgVkFYKjpVTFRSSVgqOio6KikK
KwllY2hvIHZheC1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAyMDIw
OkNMSVg6KjoqIHwgMjQzMDpDTElYOio6KikKKwllY2hvIGNsaXBwZXItaW50ZXJncmFwaC1jbGl4
JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaXBzOio6KjpVTUlQUyB8IG1pcHM6Kjoq
OlJJU0NvcykKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+
JGR1bW15LmMKKyNpZmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBmb3Ig
cHJpbnRmKCkgcHJvdG90eXBlICovCisJaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10p
IHsKKyNlbHNlCisJaW50IG1haW4gKGFyZ2MsIGFyZ3YpIGludCBhcmdjOyBjaGFyICphcmd2W107
IHsKKyNlbmRpZgorCSNpZiBkZWZpbmVkIChob3N0X21pcHMpICYmIGRlZmluZWQgKE1JUFNFQikK
KwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TWVNWKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2Nv
cyVzc3lzdlxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChT
WVNUWVBFX1NWUjQpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzdnI0XG4iLCBhcmd2
WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfQlNENDMpIHx8
IGRlZmluZWQoU1lTVFlQRV9CU0QpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNic2Rc
biIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjZW5kaWYKKwkgIGV4aXQgKC0xKTsK
Kwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJgorCSAgZHVtbXlh
cmc9YGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdzL1woWzAtOV0qXCkuKi9cMS9w
J2AgJiYKKwkgIFNZU1RFTV9OQU1FPWAkZHVtbXkgJGR1bW15YXJnYCAmJgorCSAgICB7IGVjaG8g
IiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hvIG1pcHMtbWlwcy1yaXNjb3Mke1VOQU1FX1JF
TEVBU0V9CisJZXhpdCA7OworICAgIE1vdG9yb2xhOlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBv
d2VycGMtbW90b3JvbGEtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTW90b3JvbGE6Kjo0LjM6UEw4
LSopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9I
YXdrOio6KjpQb3dlck1BWF9PUyB8IFN5bmVyZ3k6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93
ZXJwYy1oYXJyaXMtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTmlnaHRfSGF3azpQb3dlcl9VTklY
Oio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VydW5peAorCWV4aXQgOzsKKyAgICBtODhr
OkNYL1VYOjcqOiopCisJZWNobyBtODhrLWhhcnJpcy1jeHV4NworCWV4aXQgOzsKKyAgICBtODhr
Oio6NCo6UjQqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2NAorCWV4aXQgOzsKKyAgICBtODhr
Oio6Myo6UjMqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgOzsKKyAgICBBVmlp
T046ZGd1eDoqOiopCisJIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVy
ZXMKKwlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorCWlmIFsgJFVOQU1FX1BS
T0NFU1NPUiA9IG1jODgxMDAgXSB8fCBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTEwIF0KKwl0
aGVuCisJICAgIGlmIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0gbTg4a2RndXhlbGZ4
IF0gfHwgXAorCSAgICAgICBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IHggXQorCSAg
ICB0aGVuCisJCWVjaG8gbTg4ay1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCSAgICBlbHNlCisJ
CWVjaG8gbTg4ay1kZy1kZ3V4YmNzJHtVTkFNRV9SRUxFQVNFfQorCSAgICBmaQorCWVsc2UKKwkg
ICAgZWNobyBpNTg2LWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CisJZmkKKwlleGl0IDs7CisgICAg
TTg4KjpEb2xwaGluT1M6KjoqKQkjIERvbHBoaW5PUyAoU1ZSMykKKwllY2hvIG04OGstZG9scGhp
bi1zeXN2MworCWV4aXQgOzsKKyAgICBNODgqOio6UjMqOiopCisJIyBEZWx0YSA4OGsgc3lzdGVt
IHJ1bm5pbmcgU1ZSMworCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgOzsKKyAgICBY
RDg4KjoqOio6KikgIyBUZWt0cm9uaXggWEQ4OCBzeXN0ZW0gcnVubmluZyBVVGVrViAoU1ZSMykK
KwllY2hvIG04OGstdGVrdHJvbml4LXN5c3YzCisJZXhpdCA7OworICAgIFRlazQzWzAtOV1bMC05
XTpVVGVrOio6KikgIyBUZWt0cm9uaXggNDMwMCBzeXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCisJ
ZWNobyBtNjhrLXRla3Ryb25peC1ic2QKKwlleGl0IDs7CisgICAgKjpJUklYKjoqOiopCisJZWNo
byBtaXBzLXNnaS1pcml4YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fL2cnYAor
CWV4aXQgOzsKKyAgICA/Pz8/Pz8/PzpBSVg/OlsxMl0uMToyKSAgICMgQUlYIDIuMi4xIG9yIEFJ
WCAyLjEuMSBpcyBSVC9QQyBBSVguCisJZWNobyByb21wLWlibS1haXggICAgICMgdW5hbWUgLW0g
Z2l2ZXMgYW4gOCBoZXgtY29kZSBDUFUgaWQKKwlleGl0IDs7ICAgICAgICAgICAgICAgIyBOb3Rl
IHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2ZXMgJ0FJWCAnCisgICAgaSo4NjpBSVg6Kjoq
KQorCWVjaG8gaTM4Ni1pYm0tYWl4CisJZXhpdCA7OworICAgIGlhNjQ6QUlYOio6KikKKwlpZiBb
IC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZl
bGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJ
ZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7Cisg
ICAgKjpBSVg6MjozKQorCWlmIGdyZXAgYm9zMzI1IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2
L251bGwgMj4mMTsgdGhlbgorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCXNlZCAncy9eCQkv
LycgPDwgRU9GID4kZHVtbXkuYworCQkjaW5jbHVkZSA8c3lzL3N5c3RlbWNmZy5oPgorCisJCW1h
aW4oKQorCQkJeworCQkJaWYgKCFfX3Bvd2VyX3BjKCkpCisJCQkJZXhpdCgxKTsKKwkJCXB1dHMo
InBvd2VycGMtaWJtLWFpeDMuMi41Iik7CisJCQlleGl0KDApOworCQkJfQorRU9GCisJCWlmICRD
Q19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgCisJ
CXRoZW4KKwkJCWVjaG8gIiRTWVNURU1fTkFNRSIKKwkJZWxzZQorCQkJZWNobyByczYwMDAtaWJt
LWFpeDMuMi41CisJCWZpCisJZWxpZiBncmVwIGJvczMyNCAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+
L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJZWNobyByczYwMDAtaWJtLWFpeDMuMi40CisJZWxzZQor
CQllY2hvIHJzNjAwMC1pYm0tYWl4My4yCisJZmkKKwlleGl0IDs7CisgICAgKjpBSVg6KjpbNDU2
N10pCisJSUJNX0NQVV9JRD1gL3Vzci9zYmluL2xzZGV2IC1DIC1jIHByb2Nlc3NvciAtUyBhdmFp
bGFibGUgfCBzZWQgMXEgfCBhd2sgJ3sgcHJpbnQgJDEgfSdgCisJaWYgL3Vzci9zYmluL2xzYXR0
ciAtRWwgJHtJQk1fQ1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVu
CisJCUlCTV9BUkNIPXJzNjAwMAorCWVsc2UKKwkJSUJNX0FSQ0g9cG93ZXJwYworCWZpCisJaWYg
WyAteCAvdXNyL2Jpbi9vc2xldmVsIF0gOyB0aGVuCisJCUlCTV9SRVY9YC91c3IvYmluL29zbGV2
ZWxgCisJZWxzZQorCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQor
CWZpCisJZWNobyAke0lCTV9BUkNIfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAq
OkFJWDoqOiopCisJZWNobyByczYwMDAtaWJtLWFpeAorCWV4aXQgOzsKKyAgICBpYm1ydDo0LjRC
U0Q6Knxyb21wLWlibTpCU0Q6KikKKwllY2hvIHJvbXAtaWJtLWJzZDQuNAorCWV4aXQgOzsKKyAg
ICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNEOiopICAgICAgICAgICAgIyBjb3ZlcnMgUlQvUEMg
QlNEIGFuZAorCWVjaG8gcm9tcC1pYm0tYnNkJHtVTkFNRV9SRUxFQVNFfSAgICMgNC4zIHdpdGgg
dW5hbWUgYWRkZWQgdG8KKwlleGl0IDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJl
cG9ydDogcm9tcC1pYm0gQlNEIDQuMworICAgICo6Qk9TWDoqOiopCisJZWNobyByczYwMDAtYnVs
bC1ib3N4CisJZXhpdCA7OworICAgIERQWC8yPzAwOkIuTy5TLjoqOiopCisJZWNobyBtNjhrLWJ1
bGwtc3lzdjMKKwlleGl0IDs7CisgICAgOTAwMC9bMzRdPz86NC4zYnNkOjEuKjoqKQorCWVjaG8g
bTY4ay1ocC1ic2QKKwlleGl0IDs7CisgICAgaHAzMDA6NC40QlNEOio6KiB8IDkwMDAvWzM0XT8/
OjQuM2JzZDoyLio6KikKKwllY2hvIG02OGstaHAtYnNkNC40CisJZXhpdCA7OworICAgIDkwMDAv
WzM0Njc4XT8/OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNl
ZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAg
ICA5MDAwLzMxPyApICAgICAgICAgICAgSFBfQVJDSD1tNjgwMDAgOzsKKwkgICAgOTAwMC9bMzRd
Pz8gKSAgICAgICAgIEhQX0FSQ0g9bTY4ayA7OworCSAgICA5MDAwL1s2NzhdWzAtOV1bMC05XSkK
KwkJaWYgWyAteCAvdXNyL2Jpbi9nZXRjb25mIF07IHRoZW4KKwkJICAgIHNjX2NwdV92ZXJzaW9u
PWAvdXNyL2Jpbi9nZXRjb25mIFNDX0NQVV9WRVJTSU9OIDI+L2Rldi9udWxsYAorCQkgICAgc2Nf
a2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxg
CisJCSAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KKwkJICAgICAgNTIzKSBIUF9BUkNI
PSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCisJCSAgICAgIDUyOCkgSFBfQVJDSD0iaHBw
YTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorCQkgICAgICA1MzIpICAgICAgICAgICAgICAgICAg
ICAgICMgQ1BVX1BBX1JJU0MyXzAKKwkJCWNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgorCQkJ
ICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7CisJCQkgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIg
OzsKKwkJCSAgJycpIEhQX0FSQ0g9ImhwcGEyLjAiIDs7ICAgIyBIUC1VWCAxMC4yMAorCQkJZXNh
YyA7OworCQkgICAgZXNhYworCQlmaQorCQlpZiBbICIke0hQX0FSQ0h9IiA9ICIiIF07IHRoZW4K
KwkJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJICAgIHNlZCAncy9eCQkvLycgPDwgRU9G
ID4kZHVtbXkuYworCisJCSNkZWZpbmUgX0hQVVhfU09VUkNFCisJCSNpbmNsdWRlIDxzdGRsaWIu
aD4KKwkJI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisJCWludCBtYWluICgpCisJCXsKKwkJI2lmIGRl
ZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkgICAgbG9uZyBiaXRzID0gc3lzY29uZihfU0NfS0VS
TkVMX0JJVFMpOworCQkjZW5kaWYKKwkJICAgIGxvbmcgY3B1ICA9IHN5c2NvbmYgKF9TQ19DUFVf
VkVSU0lPTik7CisKKwkJICAgIHN3aXRjaCAoY3B1KQorCQkJeworCQkJY2FzZSBDUFVfUEFfUklT
QzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMV8xOiBw
dXRzICgiaHBwYTEuMSIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MyXzA6CisJCSNpZiBk
ZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJCSAgICBzd2l0Y2ggKGJpdHMpCisJCQkJeworCQkJ
CWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBicmVhazsKKwkJCQljYXNlIDMyOiBwdXRzICgi
aHBwYTIuMG4iKTsgYnJlYWs7CisJCQkJZGVmYXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7
CisJCQkJfSBicmVhazsKKwkJI2Vsc2UgIC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8K
KwkJCSAgICBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJI2VuZGlmCisJCQlkZWZhdWx0OiBw
dXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCX0KKwkJICAgIGV4aXQgKDApOworCQl9CitFT0YK
KwkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9u
dWxsKSAmJiBIUF9BUkNIPWAkZHVtbXlgCisJCSAgICB0ZXN0IC16ICIkSFBfQVJDSCIgJiYgSFBf
QVJDSD1ocHBhCisJCWZpIDs7CisJZXNhYworCWlmIFsgJHtIUF9BUkNIfSA9ICJocHBhMi4wdyIg
XQorCXRoZW4KKwkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCisJICAgICMgaHBwYTIuMHct
aHAtaHB1eCogaGFzIGEgNjQtYml0IGtlcm5lbCBhbmQgYSBjb21waWxlciBnZW5lcmF0aW5nCisJ
ICAgICMgMzItYml0IGNvZGUuICBocHBhNjQtaHAtaHB1eCogaGFzIHRoZSBzYW1lIGtlcm5lbCBh
bmQgYSBjb21waWxlcgorCSAgICAjIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuICBHTlUgYW5kIEhQ
IHVzZSBkaWZmZXJlbnQgbm9tZW5jbGF0dXJlOgorCSAgICAjCisJICAgICMgJCBDQ19GT1JfQlVJ
TEQ9Y2MgLi9jb25maWcuZ3Vlc3MKKwkgICAgIyA9PiBocHBhMi4wdy1ocC1ocHV4MTEuMjMKKwkg
ICAgIyAkIENDX0ZPUl9CVUlMRD0iY2MgK0RBMi4wdyIgLi9jb25maWcuZ3Vlc3MKKwkgICAgIyA9
PiBocHBhNjQtaHAtaHB1eDExLjIzCisKKwkgICAgaWYgZWNobyBfX0xQNjRfXyB8IChDQ09QVFM9
ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfAorCQlncmVwIC1xIF9fTFA2NF9fCisJ
ICAgIHRoZW4KKwkJSFBfQVJDSD0iaHBwYTIuMHciCisJICAgIGVsc2UKKwkJSFBfQVJDSD0iaHBw
YTY0IgorCSAgICBmaQorCWZpCisJZWNobyAke0hQX0FSQ0h9LWhwLWhwdXgke0hQVVhfUkVWfQor
CWV4aXQgOzsKKyAgICBpYTY0OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JF
TEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwllY2hvIGlhNjQtaHAtaHB1eCR7SFBV
WF9SRVZ9CisJZXhpdCA7OworICAgIDMwNTAqOkhJLVVYOio6KikKKwlldmFsICRzZXRfY2NfZm9y
X2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisJaW50CisJbWFpbiAoKQorCXsKKwkgIGxvbmcgY3B1ID0gc3lzY29uZiAoX1NDX0NQVV9W
RVJTSU9OKTsKKwkgIC8qIFRoZSBvcmRlciBtYXR0ZXJzLCBiZWNhdXNlIENQVV9JU19IUF9NQzY4
SyBlcnJvbmVvdXNseSByZXR1cm5zCisJICAgICB0cnVlIGZvciBDUFVfUEFfUklTQzFfMC4gIENQ
VV9JU19QQV9SSVNDIHJldHVybnMgY29ycmVjdAorCSAgICAgcmVzdWx0cywgaG93ZXZlci4gICov
CisJICBpZiAoQ1BVX0lTX1BBX1JJU0MgKGNwdSkpCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKGNw
dSkKKwkJeworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wLWhpdGFjaGkt
aGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEu
MS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzJfMDogcHV0
cyAoImhwcGEyLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGRlZmF1bHQ6IHB1dHMg
KCJocHBhLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJfQorCSAgICB9CisJICBlbHNlIGlm
IChDUFVfSVNfSFBfTUM2OEsgKGNwdSkpCisJICAgIHB1dHMgKCJtNjhrLWhpdGFjaGktaGl1eHdl
MiIpOworCSAgZWxzZSBwdXRzICgidW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGV4aXQg
KDApOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RF
TV9OQU1FPWAkZHVtbXlgICYmCisJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVj
aG8gdW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIKKwlleGl0IDs7CisgICAgOTAwMC83Pz86NC4zYnNk
Oio6KiB8IDkwMDAvOD9bNzldOjQuM2JzZDoqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1ic2QKKwll
eGl0IDs7CisgICAgOTAwMC84Pz86NC4zYnNkOio6KikKKwllY2hvIGhwcGExLjAtaHAtYnNkCisJ
ZXhpdCA7OworICAgICo5Pz8qOk1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKwllY2hv
IGhwcGExLjAtaHAtbXBlaXgKKwlleGl0IDs7CisgICAgaHA3Pz86T1NGMToqOiogfCBocDg/Wzc5
XTpPU0YxOio6KiApCisJZWNobyBocHBhMS4xLWhwLW9zZgorCWV4aXQgOzsKKyAgICBocDg/PzpP
U0YxOio6KikKKwllY2hvIGhwcGExLjAtaHAtb3NmCisJZXhpdCA7OworICAgIGkqODY6T1NGMToq
OiopCisJaWYgWyAteCAvdXNyL3NiaW4vc3lzdmVyc2lvbiBdIDsgdGhlbgorCSAgICBlY2hvICR7
VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxbWsKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9N
QUNISU5FfS11bmtub3duLW9zZjEKKwlmaQorCWV4aXQgOzsKKyAgICBwYXJpc2MqOkxpdGVzKjoq
OiopCisJZWNobyBocHBhMS4xLWhwLWxpdGVzCisJZXhpdCA7OworICAgIEMxKjpDb252ZXhPUzoq
OiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7
OworICAgIEMyKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCisJaWYgZ2V0
c3lzaW5mbyAtZiBzY2FsYXJfYWNjCisJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCisJZWxzZSBl
Y2hvIGMyLWNvbnZleC1ic2QKKwlmaQorCWV4aXQgOzsKKyAgICBDMzQqOkNvbnZleE9TOio6KiB8
IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisJZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsK
KyAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCisJZWNobyBj
MzgtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNv
bnZleE9TOkM0KjoqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDUkFZKlkt
TVA6KjoqOiopCisJZWNobyB5bXAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1l
ICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVj
aG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2Vk
IC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAn
cy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqVFM6KjoqOiopCisJZWNobyB0OTAt
Y3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwll
eGl0IDs7CisgICAgQ1JBWSpUM0U6KjoqOiopCisJZWNobyBhbHBoYWV2NS1jcmF5LXVuaWNvc21r
JHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAg
IENSQVkqU1YxOio6KjoqKQorCWVjaG8gc3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8
IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgICo6VU5JQ09TL21wOio6KikK
KwllY2hvIGNyYXludi1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9c
LlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBG
NzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQorCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisJ
RlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAn
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1Vf
UkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAiJHtG
VUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0
IDs7CisgICAgNTAwMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCUZVSklUU1VfU1lTPWB1bmFtZSAt
cCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JF
TEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gInNwYXJjLWZ1aml0c3UtJHtG
VUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDs7CisgICAgaSo4NjpCU0QvMzg2Oio6
KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCisJZWNobyAk
e1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHNw
YXJjKjpCU0QvT1M6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNF
fQorCWV4aXQgOzsKKyAgICAqOkJTRC9PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu
a25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpGcmVlQlNEOio6KikK
KwlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorCWNhc2UgJHtVTkFNRV9QUk9D
RVNTT1J9IGluCisJICAgIGFtZDY0KQorCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNo
byAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJICAgICopCisJCWVj
aG8gJHtVTkFNRV9QUk9DRVNTT1J9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFT
RX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwllc2FjCisJZXhpdCA7OworICAgIGkqOkNZR1dJ
Tio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtY3lnd2luCisJZXhpdCA7OworICAgICo6
TUlOR1cqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKKwlleGl0IDs7Cisg
ICAgaSo6TVNZUyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXN5cworCWV4aXQgOzsK
KyAgICBpKjp3aW5kb3dzMzIqOiopCisJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlz
IHN5c3RlbS4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tbWluZ3czMgorCWV4aXQgOzsKKyAgICBp
KjpQVyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcHczMgorCWV4aXQgOzsKKyAgICAq
OkludGVyaXgqOiopCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJICAgIHg4NikKKwkJZWNo
byBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwkgICAgYXV0aGVu
dGljYW1kIHwgZ2VudWluZWludGVsIHwgRU02NFQpCisJCWVjaG8geDg2XzY0LXVua25vd24taW50
ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBJQTY0KQorCQllY2hvIGlhNjQt
dW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJZXNhYyA7OworICAg
IFszNDVdODY6V2luZG93c185NToqIHwgWzM0NV04NjpXaW5kb3dzXzk4OiogfCBbMzQ1XTg2Oldp
bmRvd3NfTlQ6KikKKwllY2hvIGkke1VOQU1FX01BQ0hJTkV9LXBjLW1rcworCWV4aXQgOzsKKyAg
ICA4NjY0OldpbmRvd3NfTlQ6KikKKwllY2hvIHg4Nl82NC1wYy1ta3MKKwlleGl0IDs7CisgICAg
aSo6V2luZG93c19OVCo6KiB8IFBlbnRpdW0qOldpbmRvd3NfTlQqOiopCisJIyBIb3cgZG8gd2Ug
a25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVt
PworCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJ
Ti4gU2hvdWxkIHdlCisJIyBVTkFNRV9NQUNISU5FIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5h
bWUgaW5zdGVhZCBvZiBpMzg2PworCWVjaG8gaTU4Ni1wYy1pbnRlcml4CisJZXhpdCA7OworICAg
IGkqOlVXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXV3aW4KKwlleGl0IDs7Cisg
ICAgYW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoqOiopCisJZWNobyB4ODZfNjQt
dW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcCo6Q1lHV0lOKjoqKQorCWVjaG8gcG93ZXJw
Y2xlLXVua25vd24tY3lnd2luCisJZXhpdCA7OworICAgIHByZXAqOlN1bk9TOjUuKjoqKQorCWVj
aG8gcG93ZXJwY2xlLXVua25vd24tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAt
ZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgKjpHTlU6KjoqKQorCSMgdGhlIEdOVSBzeXN0
ZW0KKwllY2hvIGBlY2hvICR7VU5BTUVfTUFDSElORX18c2VkIC1lICdzLFstL10uKiQsLCdgLXVu
a25vd24tZ251YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MsLy4qJCwsJ2AKKwlleGl0
IDs7CisgICAgKjpHTlUvKjoqOiopCisJIyBvdGhlciBzeXN0ZW1zIHdpdGggR05VIGxpYmMgYW5k
IHVzZXJsYW5kCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtVTkFNRV9T
WVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAnW0EtWl0nICdbYS16XSdgYGVjaG8gJHtV
TkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYC1nbnUKKwlleGl0IDs7CisgICAgaSo4
NjpNaW5peDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CisJZXhpdCA7Owor
ICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBc
KC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9
YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENB
NTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9
YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVW
NjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9
YWxwaGFldjY4IDs7CisJZXNhYworCW9iamR1bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8
IGdyZXAgLXEgbGQuc28uMQorCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7
IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgt
Z251JHtMSUJDfQorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2Nf
Zm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4v
ZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hv
ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllbHNlCisJICAgIGlmIGVjaG8g
X19BUk1fUENTX1ZGUCB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCXwgZ3Jl
cCAtcSBfX0FSTV9QQ1NfVkZQCisJICAgIHRoZW4KKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVu
a25vd24tbGludXgtZ251ZWFiaQorCSAgICBlbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11
bmtub3duLWxpbnV4LWdudWVhYmloZgorCSAgICBmaQorCWZpCisJZXhpdCA7OworICAgIGF2cjMy
KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJ
ZXhpdCA7OworICAgIGNyaXM6TGludXg6KjoqKQorCWVjaG8gY3Jpcy1heGlzLWxpbnV4LWdudQor
CWV4aXQgOzsKKyAgICBjcmlzdjMyOkxpbnV4Oio6KikKKwllY2hvIGNyaXN2MzItYXhpcy1saW51
eC1nbnUKKwlleGl0IDs7CisgICAgZnJ2OkxpbnV4Oio6KikKKwllY2hvIGZydi11bmtub3duLWxp
bnV4LWdudQorCWV4aXQgOzsKKyAgICBoZXhhZ29uOkxpbnV4Oio6KikKKwllY2hvIGhleGFnb24t
dW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgaSo4NjpMaW51eDoqOiopCisJTElCQz1n
bnUKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15
LmMKKwkjaWZkZWYgX19kaWV0bGliY19fCisJTElCQz1kaWV0bGliYworCSNlbmRpZgorRU9GCisJ
ZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15MSUJD
J2AKKwllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iCisJZXhpdCA7Owor
ICAgIGlhNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4
LWdudQorCWV4aXQgOzsKKyAgICBtMzJyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJ
TkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG02OCo6TGludXg6KjoqKQorCWVj
aG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtaXBz
OkxpbnV4Oio6KiB8IG1pcHM2NDpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAor
CXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI3VuZGVmIENQVQorCSN1bmRlZiAke1VO
QU1FX01BQ0hJTkV9CisJI3VuZGVmICR7VU5BTUVfTUFDSElORX1lbAorCSNpZiBkZWZpbmVkKF9f
TUlQU0VMX18pIHx8IGRlZmluZWQoX19NSVBTRUwpIHx8IGRlZmluZWQoX01JUFNFTCkgfHwgZGVm
aW5lZChNSVBTRUwpCisJQ1BVPSR7VU5BTUVfTUFDSElORX1lbAorCSNlbHNlCisJI2lmIGRlZmlu
ZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8
fCBkZWZpbmVkKE1JUFNFQikKKwlDUFU9JHtVTkFNRV9NQUNISU5FfQorCSNlbHNlCisJQ1BVPQor
CSNlbmRpZgorCSNlbmRpZgorRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAy
Pi9kZXYvbnVsbCB8IGdyZXAgJ15DUFUnYAorCXRlc3QgeCIke0NQVX0iICE9IHggJiYgeyBlY2hv
ICIke0NQVX0tdW5rbm93bi1saW51eC1nbnUiOyBleGl0OyB9CisJOzsKKyAgICBvcjMyOkxpbnV4
Oio6KikKKwllY2hvIG9yMzItdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcGFkcmU6
TGludXg6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAg
cGFyaXNjNjQ6TGludXg6KjoqIHwgaHBwYTY0OkxpbnV4Oio6KikKKwllY2hvIGhwcGE2NC11bmtu
b3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYXJpc2M6TGludXg6KjoqIHwgaHBwYTpMaW51
eDoqOiopCisJIyBMb29rIGZvciBDUFUgbGV2ZWwKKwljYXNlIGBncmVwICdeY3B1W15hLXpdKjon
IC9wcm9jL2NwdWluZm8gMj4vZGV2L251bGwgfCBjdXQgLWQnICcgLWYyYCBpbgorCSAgUEE3Kikg
ZWNobyBocHBhMS4xLXVua25vd24tbGludXgtZ251IDs7CisJICBQQTgqKSBlY2hvIGhwcGEyLjAt
dW5rbm93bi1saW51eC1nbnUgOzsKKwkgICopICAgIGVjaG8gaHBwYS11bmtub3duLWxpbnV4LWdu
dSA7OworCWVzYWMKKwlleGl0IDs7CisgICAgcHBjNjQ6TGludXg6KjoqKQorCWVjaG8gcG93ZXJw
YzY0LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBwYzpMaW51eDoqOiopCisJZWNo
byBwb3dlcnBjLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHMzOTA6TGludXg6Kjoq
IHwgczM5MHg6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tbGludXgKKwll
eGl0IDs7CisgICAgc2g2NCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtu
b3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzaCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFN
RV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzcGFyYzpMaW51eDoq
OiogfCBzcGFyYzY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1s
aW51eC1nbnUKKwlleGl0IDs7CisgICAgdGlsZSo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB2YXg6TGludXg6KjoqKQor
CWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CisJZXhpdCA7OworICAgIHg4Nl82
NDpMaW51eDoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7Cisg
ICAgeHRlbnNhKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGlu
dXgtZ251CisJZXhpdCA7OworICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCisJIyBwdHggNC4wIGRv
ZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KKwkjIGVhcmxp
ZXIgdmVyc2lvbnMgYXJlIG1lc3NlZCB1cCBhbmQgcHV0IHRoZSBub2RlbmFtZSBpbiBib3RoCisJ
IyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KKwllY2hvIGkzODYtc2VxdWVudC1zeXN2NAorCWV4aXQg
OzsKKyAgICBpKjg2OlVOSVhfU1Y6NC4yTVA6Mi4qKQorCSMgVW5peHdhcmUgaXMgYW4gb2Zmc2hv
b3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKwkjIG51bWJlciBzZXJpZXMg
c3RhcnRpbmcgd2l0aCAyLi4uCisJIyBJIGFtIG5vdCBwb3NpdGl2ZSB0aGF0IG90aGVyIFNWUjQg
c3lzdGVtcyB3b24ndCBtYXRjaCB0aGlzLAorCSMgSSBqdXN0IGhhdmUgdG8gaG9wZS4gIC0tIHJt
cy4KKwkjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwllY2hv
ICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsK
KyAgICBpKjg2Ok9TLzI6KjoqKQorCSMgSWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmQgYHVuYW1lJywg
dGhlbiBFTVggVW5peCBjb21wYXRpYmlsaXR5CisJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCisJ
ZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW9zMi1lbXgKKwlleGl0IDs7CisgICAgaSo4NjpYVFMt
MzAwOio6U1RPUCkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zdG9wCisJZXhpdCA7
OworICAgIGkqODY6YXRoZW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1h
dGhlb3MKKwlleGl0IDs7CisgICAgaSo4NjpzeWxsYWJsZToqOiopCisJZWNobyAke1VOQU1FX01B
Q0hJTkV9LXBjLXN5bGxhYmxlCisJZXhpdCA7OworICAgIGkqODY6THlueE9TOjIuKjoqIHwgaSo4
NjpMeW54T1M6My5bMDFdKjoqIHwgaSo4NjpMeW54T1M6NC5bMDJdKjoqKQorCWVjaG8gaTM4Ni11
bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaSo4NjoqRE9TOio6
KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXNkb3NkamdwcAorCWV4aXQgOzsKKyAgICBp
Kjg2Oio6NC4qOiogfCBpKjg2OlNZU1RFTV9WOjQuKjoqKQorCVVOQU1FX1JFTD1gZWNobyAke1VO
QU1FX1JFTEVBU0V9IHwgc2VkICdzL1wvTVAkLy8nYAorCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5j
bHVkZS9saW5rLmggPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorCQllY2hvICR7VU5BTUVf
TUFDSElORX0tdW5pdmVsLXN5c3Yke1VOQU1FX1JFTH0KKwllbHNlCisJCWVjaG8gJHtVTkFNRV9N
QUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9CisJZmkKKwlleGl0IDs7CisgICAgaSo4NjoqOjU6
WzY3OF0qKQorCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCWNh
c2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAg
IFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5F
PWk1ODYgOzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwll
c2FjCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0k
e1VOQU1FX1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6KjozLjI6
KikKKwlpZiB0ZXN0IC1mIC91c3Ivb3B0aW9ucy9jYi5uYW1lOyB0aGVuCisJCVVOQU1FX1JFTD1g
c2VkIC1uICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKKwkJZWNobyAk
e1VOQU1FX01BQ0hJTkV9LXBjLWlzYyRVTkFNRV9SRUwKKwllbGlmIC9iaW4vdW5hbWUgLVggMj4v
ZGV2L251bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfUkVMPWAoL2Jpbi91bmFtZSAtWHxn
cmVwIFJlbGVhc2V8c2VkIC1lICdzLy4qPSAvLycpYAorCQkoL2Jpbi91bmFtZSAtWHxncmVwIGk4
MDQ4NiA+L2Rldi9udWxsKSAmJiBVTkFNRV9NQUNISU5FPWk0ODYKKwkJKC9iaW4vdW5hbWUgLVh8
Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJ
TkU9aTU4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudCAqSUknID4vZGV2
L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVw
ICdeTWFjaGluZS4qUGVudGl1bSBQcm8nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJ
TkU9aTY4NgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2NvJFVOQU1FX1JFTAorCWVsc2UK
KwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3YzMgorCWZpCisJZXhpdCA7OworICAgIHBj
Oio6KjoqKQorCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgorCSMgdW5hbWUgLW0gcHJp
bnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisJ
IyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5v
dGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcu
c3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3Vy
eSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2
LXBjLW1zZG9zZGpncHAKKwlleGl0IDs7CisgICAgSW50ZWw6TWFjaDozKjoqKQorCWVjaG8gaTM4
Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQorCWVjaG8gaTg2MC1pbnRl
bC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKwlpZiBncmVw
IFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYvbnVsbCAyPiYxIDsgdGhl
bgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVBU0V9ICMgU3RhcmRlbnQg
VmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVs
b3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11bmtub3duLXN5c3Yke1VO
QU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwlleGl0IDs7CisgICAgbWlu
aSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02ODAxMC1jb252ZXJnZW50
LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMuNTFtKQorCWVjaG8gbTY4
ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQtTklYOjUuMzoqKQorCWVj
aG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKwl0
ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnOyBleGl0OyB9IDs7
CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6My4wIHwgM1szNF0/Pywq
Oio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6NC4wOjMuMCB8IDQ4NTA6
Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDozLjAgfCBTSEcyOio6NC4w
OjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVzdCAtciAvZXRjLy5yZWxp
ZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiov
XDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4
NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBl
eGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9k
ZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsg
fSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorCS9iaW4vdW5h
bWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk0
ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CisgICAgTkNSKjoqOjQuMjoqIHwgTVBSQVMqOio6NC4y
OiopCisJT1NfUkVMPScuMycKKwl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKKwkgICAgJiYgT1NfUkVM
PS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5y
ZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwK
KwkgICAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmlu
L3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKKwkg
ICAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3Vu
YW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIHB0ZXJvbiA+L2Rldi9udWxsIFwKKwkgICAg
JiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKKyAgICBtNjgq
Okx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKKwllY2hvIG02OGstdW5rbm93bi1s
eW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1jNjgwMzA6VU5JWF9TeXN0ZW1f
Vjo0Lio6KikKKwllY2hvIG02OGstYXRhcmktc3lzdjQKKwlleGl0IDs7CisgICAgVFNVTkFNSTpM
eW54T1M6Mi4qOiopCisJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0K
KwlleGl0IDs7CisgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKKwllY2hvIHJzNjAwMC11bmtub3du
LWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXJQQzpMeW54T1M6Mi4q
OiogfCBQb3dlclBDOkx5bnhPUzozLlswMV0qOiogfCBQb3dlclBDOkx5bnhPUzo0LlswMl0qOiop
CisJZWNobyBwb3dlcnBjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsK
KyAgICBTTVtCRV1TOlVOSVhfU1Y6KjoqKQorCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVM
RUFTRX0KKwlleGl0IDs7CisgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQorCWVjaG8gbWlwcy1z
bmktc3lzdjQKKwlleGl0IDs7CisgICAgUk0qOlNJTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmkt
c3lzdjQKKwlleGl0IDs7CisgICAgKjpTSU5JWC0qOio6KikKKwlpZiB1bmFtZSAtcCAyPi9kZXYv
bnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rl
di9udWxsYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tc25pLXN5c3Y0CisJZWxzZQorCQllY2hv
IG5zMzJrLXNuaS1zeXN2CisJZmkKKwlleGl0IDs7CisgICAgUEVOVElVTToqOjQuMCo6KikJIyBV
bmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKKwkJCSMgc2F5cyA8
UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKwllY2hvIGk1ODYtdW5pc3lzLXN5
c3Y0CisJZXhpdCA7OworICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQorCSMgRnJvbSBHZXJh
bGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KKwkjIEhvdyBhYm91dCBkaWZmZXJlbnRp
YXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKwllY2hvIGhwcGExLjEt
c3RyYXR1cy1zeXN2NAorCWV4aXQgOzsKKyAgICAqOio6KjpGVFgqKQorCSMgRnJvbSBzZWFuZkBz
d2RjLnN0cmF0dXMuY29tLgorCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAg
IGkqODY6Vk9TOio6KikKKwkjIEZyb20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KKwllY2hvICR7
VU5BTUVfTUFDSElORX0tc3RyYXR1cy12b3MKKwlleGl0IDs7CisgICAgKjpWT1M6KjoqKQorCSMg
RnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcwor
CWV4aXQgOzsKKyAgICBtYzY4KjpBL1VYOio6KikKKwllY2hvIG02OGstYXBwbGUtYXV4JHtVTkFN
RV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBuZXdzKjpORVdTLU9TOjYqOiopCisJZWNobyBtaXBz
LXNvbnktbmV3c29zNgorCWV4aXQgOzsKKyAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0
MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKKwlpZiBbIC1kIC91c3IvbmVj
IF07IHRoZW4KKwkJZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWVsc2UKKwkJ
ZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWV4aXQgOzsKKyAg
ICBCZUJveDpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gaGFyZHdhcmUgbWFkZSBieSBCZSwg
UFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWJlLWJlb3MKKwlleGl0IDs7CisgICAgQmVNYWM6QmVP
UzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBvciBNYWMgY2xvbmUsIFBQQyBvbmx5LgorCWVj
aG8gcG93ZXJwYy1hcHBsZS1iZW9zCisJZXhpdCA7OworICAgIEJlUEM6QmVPUzoqOiopCSMgQmVP
UyBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWJlb3MKKwll
eGl0IDs7CisgICAgQmVQQzpIYWlrdToqOiopCSMgSGFpa3UgcnVubmluZyBvbiBJbnRlbCBQQyBj
b21wYXRpYmxlLgorCWVjaG8gaTU4Ni1wYy1oYWlrdQorCWV4aXQgOzsKKyAgICBTWC00OlNVUEVS
LVVYOio6KikKKwllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7
CisgICAgU1gtNTpTVVBFUi1VWDoqOiopCisJZWNobyBzeDUtbmVjLXN1cGVydXgke1VOQU1FX1JF
TEVBU0V9CisJZXhpdCA7OworICAgIFNYLTY6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g2LW5lYy1z
dXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC03OlNVUEVSLVVYOio6KikK
KwllY2hvIHN4Ny1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gt
ODpTVVBFUi1VWDoqOiopCisJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJ
ZXhpdCA7OworICAgIFNYLThSOlNVUEVSLVVYOio6KikKKwllY2hvIHN4OHItbmVjLXN1cGVydXgk
e1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFBvd2VyKjpSaGFwc29keToqOiopCisJZWNo
byBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAq
OlJoYXBzb2R5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXBwbGUtcmhhcHNvZHkke1VO
QU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RGFyd2luOio6KikKKwlVTkFNRV9QUk9DRVNT
T1I9YHVuYW1lIC1wYCB8fCBVTkFNRV9QUk9DRVNTT1I9dW5rbm93bgorCWNhc2UgJFVOQU1FX1BS
T0NFU1NPUiBpbgorCSAgICBpMzg2KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIFsg
IiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQkgIGlmIChl
Y2hvICcjaWZkZWYgX19MUDY0X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicp
IHwgXAorCQkgICAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwg
XAorCQkgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQkgIHRoZW4KKwkJICAg
ICAgVU5BTUVfUFJPQ0VTU09SPSJ4ODZfNjQiCisJCSAgZmkKKwkJZmkgOzsKKwkgICAgdW5rbm93
bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX1BST0NF
U1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOnByb2Nu
dG8qOio6KiB8ICo6UU5YOlswMTIzNDU2Nzg5XSo6KikKKwlVTkFNRV9QUk9DRVNTT1I9YHVuYW1l
IC1wYAorCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRoZW4KKwkJVU5BTUVf
UFJPQ0VTU09SPWkzODYKKwkJVU5BTUVfTUFDSElORT1wYworCWZpCisJZWNobyAke1VOQU1FX1BS
T0NFU1NPUn0tJHtVTkFNRV9NQUNISU5FfS1udG8tcW54JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQg
OzsKKyAgICAqOlFOWDoqOjQqKQorCWVjaG8gaTM4Ni1wYy1xbngKKwlleGl0IDs7CisgICAgTkVP
LT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbmVvLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVB
U0V9CisJZXhpdCA7OworICAgIE5TRS0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zZS10
YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBOU1ItPzpOT05TVE9QX0tF
Uk5FTDoqOiopCisJZWNobyBuc3ItdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7
CisgICAgKjpOb25TdG9wLVVYOio6KikKKwllY2hvIG1pcHMtY29tcGFxLW5vbnN0b3B1eAorCWV4
aXQgOzsKKyAgICBCUzIwMDA6UE9TSVgqOio6KikKKwllY2hvIGJzMjAwMC1zaWVtZW5zLXN5c3YK
KwlleGl0IDs7CisgICAgRFMvKjpVTklYX1N5c3RlbV9WOio6KikKKwllY2hvICR7VU5BTUVfTUFD
SElORX0tJHtVTkFNRV9TWVNURU19LSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpQ
bGFuOToqOiopCisJIyAidW5hbWUgLW0iIGlzIG5vdCBjb25zaXN0ZW50LCBzbyB1c2UgJGNwdXR5
cGUgaW5zdGVhZC4gMzg2CisJIyBpcyBjb252ZXJ0ZWQgdG8gaTM4NiBmb3IgY29uc2lzdGVuY3kg
d2l0aCBvdGhlciB4ODYKKwkjIG9wZXJhdGluZyBzeXN0ZW1zLgorCWlmIHRlc3QgIiRjcHV0eXBl
IiA9ICIzODYiOyB0aGVuCisJICAgIFVOQU1FX01BQ0hJTkU9aTM4NgorCWVsc2UKKwkgICAgVU5B
TUVfTUFDSElORT0iJGNwdXR5cGUiCisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93
bi1wbGFuOQorCWV4aXQgOzsKKyAgICAqOlRPUFMtMTA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93
bi10b3BzMTAKKwlleGl0IDs7CisgICAgKjpURU5FWDoqOiopCisJZWNobyBwZHAxMC11bmtub3du
LXRlbmV4CisJZXhpdCA7OworICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6Kjoq
IHwgVFlQRTQ6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC1kZWMtdG9wczIwCisJZXhpdCA7Owor
ICAgIFhLTC0xOlRPUFMtMjA6KjoqIHwgVFlQRTU6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC14
a2wtdG9wczIwCisJZXhpdCA7OworICAgICo6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC11bmtu
b3duLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOklUUzoqOiopCisJZWNobyBwZHAxMC11bmtub3du
LWl0cworCWV4aXQgOzsKKyAgICBTRUk6KjoqOlNFSVVYKQorCWVjaG8gbWlwcy1zZWktc2VpdXgk
e1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RHJhZ29uRmx5Oio6KikKKwllY2hvICR7
VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNl
ZCAtZSAncy9bLShdLiovLydgCisJZXhpdCA7OworICAgICo6KlZNUzoqOiopCisJVU5BTUVfTUFD
SElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBp
bgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBJKikgZWNobyBp
YTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1kZWMtdm1zIDsgZXhpdCA7
OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkzODYtcGMteGVuaXgKKwll
eGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNr
eW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4qJC8vJworCWV4aXQgOzsK
KyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCisJZXhp
dCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MK
KwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRw
dXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVfTUFDSElORX06JHtVTkFN
RV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgMT4mMgorCitldmFs
ICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisjaWZkZWYgX1NFUVVFTlRf
CisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2Vu
ZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBkZWZpbmVkIChNSVBTRUIp
CisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3MiLiAgUGVyaGFwcyBCRkQg
c2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4gICovCisgIHByaW50ZiAo
Im1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5jbHVkZSA8c3lzL3BhcmFt
Lmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNpZmRlZiBORVdTT1M0CisJ
IjQiCisjZWxzZQorCSIiCisjZW5kaWYKKwkpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisK
KyNpZiBkZWZpbmVkIChfX2FybSkgJiYgZGVmaW5lZCAoX19hY29ybikgJiYgZGVmaW5lZCAoX191
bml4KQorICBwcmludGYgKCJhcm0tYWNvcm4tcmlzY2l4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYK
KworI2lmIGRlZmluZWQgKGhwMzAwKSAmJiAhZGVmaW5lZCAoaHB1eCkKKyAgcHJpbnRmICgibTY4
ay1ocC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTmVYVCkKKyNp
ZiAhZGVmaW5lZCAoX19BUkNISVRFQ1RVUkVfXykKKyNkZWZpbmUgX19BUkNISVRFQ1RVUkVfXyAi
bTY4ayIKKyNlbmRpZgorICBpbnQgdmVyc2lvbjsKKyAgdmVyc2lvbj1gKGhvc3RpbmZvIHwgc2Vk
IC1uICdzLy4qTmVYVCBNYWNoIFwoWzAtOV0qXCkuKi9cMS9wJykgMj4vZGV2L251bGxgOworICBp
ZiAodmVyc2lvbiA8IDQpCisgICAgcHJpbnRmICgiJXMtbmV4dC1uZXh0c3RlcCVkXG4iLCBfX0FS
Q0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZWxzZQorICAgIHByaW50ZiAoIiVzLW5leHQtb3Bl
bnN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGV4aXQgKDApOworI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkIChNVUxUSU1BWCkgfHwgZGVmaW5lZCAobjE2KQorI2lmIGRlZmlu
ZWQgKFVNQVhWKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtc3lzdlxuIik7IGV4aXQgKDApOwor
I2Vsc2UKKyNpZiBkZWZpbmVkIChDTVUpCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1tYWNoXG4i
KTsgZXhpdCAoMCk7CisjZWxzZQorICBwcmludGYgKCJuczMyay1lbmNvcmUtYnNkXG4iKTsgZXhp
dCAoMCk7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfXzM4NkJTRF9f
KQorICBwcmludGYgKCJpMzg2LXBjLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBk
ZWZpbmVkIChzZXF1ZW50KQorI2lmIGRlZmluZWQgKGkzODYpCisgIHByaW50ZiAoImkzODYtc2Vx
dWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjaWYgZGVmaW5lZCAobnMzMjAwMCkK
KyAgcHJpbnRmICgibnMzMmstc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisj
ZW5kaWYKKworI2lmIGRlZmluZWQgKF9TRVFVRU5UXykKKyAgICBzdHJ1Y3QgdXRzbmFtZSB1bjsK
KworICAgIHVuYW1lKCZ1bik7CisKKyAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjIiLCAy
KSA9PSAwKSB7CisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDJcbiIpOyBleGl0ICgwKTsKKyAg
ICB9CisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYxIiwgMikgPT0gMCkgeyAvKiBYWFgg
aXMgVjEgY29ycmVjdD8gKi8KKwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MVxuIik7IGV4aXQg
KDApOworICAgIH0KKyAgICBwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4XG4iKTsgZXhpdCAoMCk7
CisKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAodmF4KQorIyBpZiAhZGVmaW5lZCAodWx0cml4KQor
IyAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjICBpZiBkZWZpbmVkIChCU0QpCisjICAgaWYgQlNE
ID09IDQzCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM1xuIik7IGV4aXQgKDApOworIyAg
IGVsc2UKKyMgICAgaWYgQlNEID09IDE5OTAwNgorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0
LjNyZW5vXG4iKTsgZXhpdCAoMCk7CisjICAgIGVsc2UKKyAgICAgIHByaW50ZiAoInZheC1kZWMt
YnNkXG4iKTsgZXhpdCAoMCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVsc2UKKyAgICBw
cmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgZW5kaWYKKyMgZWxzZQorICAg
IHByaW50ZiAoInZheC1kZWMtdWx0cml4XG4iKTsgZXhpdCAoMCk7CisjIGVuZGlmCisjZW5kaWYK
KworI2lmIGRlZmluZWQgKGFsbGlhbnQpICYmIGRlZmluZWQgKGk4NjApCisgIHByaW50ZiAoImk4
NjAtYWxsaWFudC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisgIGV4aXQgKDEpOworfQor
RU9GCisKKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsICYmIFNZ
U1RFTV9OQU1FPWAkZHVtbXlgICYmCisJeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisK
KyMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0eXBlIGluIHRoZSBlbnZpcm9ubWVudC4KKwordGVz
dCAtZCAvdXNyL2Fwb2xsbyAmJiB7IGVjaG8gJHtJU1B9LWFwb2xsby0ke1NZU1RZUEV9OyBleGl0
OyB9CisKKyMgQ29udmV4IHZlcnNpb25zIHRoYXQgcHJlZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5
c2luZm8oMSkKKworaWYgWyAteCAvdXNyL2NvbnZleC9nZXRzeXNpbmZvIF0KK3RoZW4KKyAgICBj
YXNlIGBnZXRzeXNpbmZvIC1mIGNwdV90eXBlYCBpbgorICAgIGMxKikKKwllY2hvIGMxLWNvbnZl
eC1ic2QKKwlleGl0IDs7CisgICAgYzIqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYwor
CXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkK
KwlleGl0IDs7CisgICAgYzM0KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAg
IGMzOCopCisJZWNobyBjMzgtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjNCopCisJZWNobyBj
NC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGVzYWMKK2ZpCisKK2NhdCA+JjIgPDxFT0YKKyQw
OiB1bmFibGUgdG8gZ3Vlc3Mgc3lzdGVtIHR5cGUKKworVGhpcyBzY3JpcHQsIGxhc3QgbW9kaWZp
ZWQgJHRpbWVzdGFtcCwgaGFzIGZhaWxlZCB0byByZWNvZ25pemUKK3RoZSBvcGVyYXRpbmcgc3lz
dGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKK2Rvd25sb2FkIHRoZSBt
b3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQorCisgIGh0
dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxh
aW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorYW5kCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251
Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhF
QUQKKworSWYgdGhlIHZlcnNpb24geW91IHJ1biAoJDApIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSwg
cGxlYXNlCitzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0
aGluayBtaWdodCBiZQorcGVydGluZW50IHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBpbiBv
cmRlciB0byBwcm92aWRlIHRoZSBuZWVkZWQKK2luZm9ybWF0aW9uIHRvIGhhbmRsZSB5b3VyIHN5
c3RlbS4KKworY29uZmlnLmd1ZXNzIHRpbWVzdGFtcCA9ICR0aW1lc3RhbXAKKwordW5hbWUgLW0g
PSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAo
dW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFt
ZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12
KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgv
dXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGxgCisvYmluL3VuYW1lIC1YICAgICA9IGAoL2Jp
bi91bmFtZSAtWCkgMj4vZGV2L251bGxgCisKK2hvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhv
c3RpbmZvKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5p
dmVyc2UpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IGAoL3Vzci9iaW4v
YXJjaCAtaykgMj4vZGV2L251bGxgCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2Fy
Y2gpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3Ns
ZXZlbCkgMj4vZGV2L251bGxgCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZl
eC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbGAKKworVU5BTUVfTUFDSElORSA9ICR7VU5BTUVfTUFD
SElORX0KK1VOQU1FX1JFTEVBU0UgPSAke1VOQU1FX1JFTEVBU0V9CitVTkFNRV9TWVNURU0gID0g
JHtVTkFNRV9TWVNURU19CitVTkFNRV9WRVJTSU9OID0gJHtVTkFNRV9WRVJTSU9OfQorRU9GCisK
K2V4aXQgMQorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1m
aWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSci
CisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6
ICInIgorIyBFbmQ6CmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9j
b25maWcuaC5pbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi90b29scy9jb25maWcuaC5pbglNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAg
LTAsMCArMSw0NDYgQEAKKy8qIGNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJl
LmFjIGJ5IGF1dG9oZWFkZXIuICAqLworCisvKiBEZWZpbmUgdG8gb25lIG9mIGBfZ2V0YjY3Jywg
YEdFVEI2NycsIGBnZXRiNjcnIGZvciBDcmF5LTIgYW5kIENyYXktWU1QCisgICBzeXN0ZW1zLiBU
aGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIGZvciBgYWxsb2NhLmMnIHN1cHBvcnQgb24gdGhvc2Ug
c3lzdGVtcy4KKyAgICovCisjdW5kZWYgQ1JBWV9TVEFDS1NFR19FTkQKKworLyogRGVmaW5lIHRv
IDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KKyN1bmRlZiBDX0FMTE9DQQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFsYXJtJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0FM
QVJNCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGBhbGxvY2EnLCBhcyBhIGZ1bmN0aW9u
IG9yIG1hY3JvLiAqLworI3VuZGVmIEhBVkVfQUxMT0NBCisKKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4K
KyAgICovCisjdW5kZWYgSEFWRV9BTExPQ0FfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPGFycGEvaW5ldC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0FSUEFfSU5F
VF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYXRleGl0JyBmdW5jdGlvbi4g
Ki8KKyN1bmRlZiBIQVZFX0FURVhJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YGJ6ZXJvJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JaRVJPCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFW
RV9DTE9DS19HRVRUSU1FCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZHVwMicg
ZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9EVVAyCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9GQ05UTF9ICisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmRhdGFzeW5jJyBmdW5jdGlvbi4gKi8K
KyN1bmRlZiBIQVZFX0ZEQVRBU1lOQworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YGZvcmsnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRk9SSworCisvKiBEZWZpbmUgdG8gMSBp
ZiBmc2Vla28gKGFuZCBwcmVzdW1hYmx5IGZ0ZWxsbykgZXhpc3RzIGFuZCBpcyBkZWNsYXJlZC4g
Ki8KKyN1bmRlZiBIQVZFX0ZTRUVLTworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YGZ0cnVuY2F0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVFJVTkNBVEUKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRjd2QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfR0VUQ1dECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aG9zdGJ5bmFt
ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aG9zdG5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB
VkVfR0VUSE9TVE5BTUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwYWdl
c2l6ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRQQUdFU0laRQorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHRpbWVvZmRheScgZnVuY3Rpb24uICovCisjdW5kZWYg
SEFWRV9HRVRUSU1FT0ZEQVkKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbmV0
X250b2EnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSU5FVF9OVE9BCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYg
SEFWRV9JTlRUWVBFU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaXNhc2Np
aScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9JU0FTQ0lJCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgY3J5cHRvJyBsaWJyYXJ5ICgtbGNyeXB0bykuICovCisjdW5kZWYgSEFW
RV9MSUJDUllQVE8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaWJpbnRsLmg+
IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElCSU5UTF9ICisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgcnQnIGxpYnJhcnkgKC1scnQpLiAqLworI3VuZGVmIEhBVkVfTElC
UlQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1dWlkJyBsaWJyYXJ5ICgtbHV1
aWQpLiAqLworI3VuZGVmIEhBVkVfTElCVVVJRAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYHlhamwnIGxpYnJhcnkgKC1seWFqbCkuICovCisjdW5kZWYgSEFWRV9MSUJZQUpMCisK
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgeicgbGlicmFyeSAoLWx6KS4gKi8KKyN1
bmRlZiBIQVZFX0xJQloKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMu
aD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU1JVFNfSAorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2FsdGltZV9yJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZF
X0xPQ0FMVElNRV9SCisKKy8qIERlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIGhhcyBhIEdOVSBs
aWJjIGNvbXBhdGlibGUgYG1hbGxvYycgZnVuY3Rpb24sIGFuZAorICAgdG8gMCBvdGhlcndpc2Uu
ICovCisjdW5kZWYgSEFWRV9NQUxMT0MKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IDxtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9NQUxMT0NfSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNocicgZnVuY3Rpb24uICovCisjdW5kZWYg
SEFWRV9NRU1DSFIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1tb3ZlJyBm
dW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01FTU1PVkUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9NRU1PUllf
SAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbXNldCcgZnVuY3Rpb24uICov
CisjdW5kZWYgSEFWRV9NRU1TRVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBt
a2RpcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0RJUgorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYG1rZmlmbycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0ZJRk8K
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGBtbWFwJyBzeXN0ZW0gY2Fs
bC4gKi8KKyN1bmRlZiBIQVZFX01NQVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBtdW5tYXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTVVOTUFQCisKKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0ZGIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFW
RV9ORVREQl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pbi5o
PiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSU5fSAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdGhjb25mJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZF
X1BBVEhDT05GCisKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBw
dHJkaWZmX3QnLiAqLworI3VuZGVmIEhBVkVfUFRSRElGRl9UCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdXIgc3lzdGVtIGhhcyBhIEdOVSBsaWJjIGNvbXBhdGlibGUgYHJlYWxsb2MnIGZ1bmN0aW9u
LAorICAgYW5kIHRvIDAgb3RoZXJ3aXNlLiAqLworI3VuZGVmIEhBVkVfUkVBTExPQworCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWxwYXRoJyBmdW5jdGlvbi4gKi8KKyN1bmRl
ZiBIQVZFX1JFQUxQQVRICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVnY29t
cCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUdDT01QCisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgcm1kaXInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUk1ESVIKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxlY3QnIGZ1bmN0aW9uLiAqLworI3Vu
ZGVmIEhBVkVfU0VMRUNUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0ZW52
JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFVEVOVgorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYHNvY2tldCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TT0NLRVQKKwor
LyogRGVmaW5lIHRvIDEgaWYgc3RkYm9vbC5oIGNvbmZvcm1zIHRvIEM5OS4gKi8KKyN1bmRlZiBI
QVZFX1NUREJPT0xfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGRlZi5o
PiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURERFRl9ICisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
U1RESU5UX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVh
ZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVERMSUJfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYHN0cmNhc2VjbXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSQ0FT
RUNNUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNocicgZnVuY3Rpb24u
ICovCisjdW5kZWYgSEFWRV9TVFJDSFIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBzdHJjc3BuJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkNTUE4KKworLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVf
U1RSRFVQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyZXJyb3InIGZ1bmN0
aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSRVJST1IKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1RSSU5HU19I
CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxl
LiAqLworI3VuZGVmIEhBVkVfU1RSSU5HX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBzdHJuZHVwJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUk5EVVAKKworLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJwYnJrJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBI
QVZFX1NUUlBCUksKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJyY2hyJyBm
dW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlJDSFIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBzdHJzcG4nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSU1BOCisKKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3Ryc3RyJyBmdW5jdGlvbi4gKi8KKyN1bmRl
ZiBIQVZFX1NUUlNUUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvbCcg
ZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJUT0wKKworLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBzdHJ0b3VsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlRPVUwKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsbCcgZnVuY3Rpb24uICovCisj
dW5kZWYgSEFWRV9TVFJUT1VMTAorCisvKiBEZWZpbmUgdG8gMSBpZiBgc3RfYmxrc2l6ZScgaXMg
YSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NU
X0JMS1NJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgYHN0X2Jsb2NrcycgaXMgYSBtZW1iZXIgb2Yg
YHN0cnVjdCBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMT0NLUworCisv
KiBEZWZpbmUgdG8gMSBpZiBgc3RfcmRldicgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4g
Ki8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX1JERVYKKworLyogRGVmaW5lIHRvIDEgaWYg
eW91ciBgc3RydWN0IHN0YXQnIGhhcyBgc3RfYmxvY2tzJy4gRGVwcmVjYXRlZCwgdXNlCisgICBg
SEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MnIGluc3RlYWQuICovCisjdW5kZWYgSEFWRV9TVF9C
TE9DS1MKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXNsb2cuaD4gaGVhZGVy
IGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNMT0dfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5cy9maWxlLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX0ZJ
TEVfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9pb2N0bC5oPiBoZWFk
ZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19JT0NUTF9ICisKKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSA8c3lzL21vdW50Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
U1lTX01PVU5UX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0u
aD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSAorCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5k
ZWYgSEFWRV9TWVNfU09DS0VUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxz
eXMvc3RhdHZmcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TVEFUVkZTX0gK
KworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmls
ZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TVEFUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzeXMvdGltZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19USU1F
X0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVy
IGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPHRlcm1pb3MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9URVJN
SU9TX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0enNldCcgZnVuY3Rpb24u
ICovCisjdW5kZWYgSEFWRV9UWlNFVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHVuYW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1VOQU1FCisKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVf
VU5JU1REX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB2Zm9yaycgZnVuY3Rp
b24uICovCisjdW5kZWYgSEFWRV9WRk9SSworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgPHZmb3JrLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfVkZPUktfSAorCisvKiBE
ZWZpbmUgdG8gMSBpZiBgZm9yaycgd29ya3MuICovCisjdW5kZWYgSEFWRV9XT1JLSU5HX0ZPUksK
KworLyogRGVmaW5lIHRvIDEgaWYgYHZmb3JrJyB3b3Jrcy4gKi8KKyN1bmRlZiBIQVZFX1dPUktJ
TkdfVkZPUksKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx5YWpsL3lhamxfdmVy
c2lvbi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1lBSkxfWUFKTF9WRVJTSU9OX0gK
KworLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYF9Cb29sJy4gKi8K
KyN1bmRlZiBIQVZFX19CT09MCisKKy8qIERlZmluZSB0byAxIGlmIGBsc3RhdCcgZGVyZWZlcmVu
Y2VzIGEgc3ltbGluayBzcGVjaWZpZWQgd2l0aCBhIHRyYWlsaW5nCisgICBzbGFzaC4gKi8KKyN1
bmRlZiBMU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSworCisvKiBEZWZpbmUgdG8gMSBpZiBg
bWFqb3InLCBgbWlub3InLCBhbmQgYG1ha2VkZXYnIGFyZSBkZWNsYXJlZCBpbiA8bWtkZXYuaD4u
CisgICAqLworI3VuZGVmIE1BSk9SX0lOX01LREVWCisKKy8qIERlZmluZSB0byAxIGlmIGBtYWpv
cicsIGBtaW5vcicsIGFuZCBgbWFrZWRldicgYXJlIGRlY2xhcmVkIGluCisgICA8c3lzbWFjcm9z
Lmg+LiAqLworI3VuZGVmIE1BSk9SX0lOX1NZU01BQ1JPUworCisvKiBEZWZpbmUgdG8gdGhlIGFk
ZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4g
Ki8KKyN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFt
ZSBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9OQU1FCisKKy8qIERlZmluZSB0
byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQ
QUNLQUdFX1NUUklORworCisvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBv
ZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9UQVJOQU1FCisKKy8qIERlZmluZSB0
byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9VUkwK
KworLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQ
QUNLQUdFX1ZFUlNJT04KKworLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxs
b2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCisgICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3Ro
IGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKKyAgIGF1dG9tYXRpY2FsbHkg
ZGVkdWNlZCBhdCBydW50aW1lLgorCVNUQUNLX0RJUkVDVElPTiA+IDAgPT4gZ3Jvd3MgdG93YXJk
IGhpZ2hlciBhZGRyZXNzZXMKKwlTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBs
b3dlciBhZGRyZXNzZXMKKwlTVEFDS19ESVJFQ1RJT04gPSAwID0+IGRpcmVjdGlvbiBvZiBncm93
dGggdW5rbm93biAqLworI3VuZGVmIFNUQUNLX0RJUkVDVElPTgorCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KKyN1bmRlZiBTVERDX0hFQURF
UlMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGNhbiBzYWZlbHkgaW5jbHVkZSBib3RoIDxzeXMv
dGltZS5oPiBhbmQgPHRpbWUuaD4uICovCisjdW5kZWYgVElNRV9XSVRIX1NZU19USU1FCisKKy8q
IERlZmluZSB0byAxIHRvIG1ha2UgZnNlZWtvIHZpc2libGUgb24gc29tZSBob3N0cyAoZS5nLiBn
bGliYyAyLjIpLiAqLworI3VuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisKKy8qIERlZmluZSB0byAx
IGlmIG9uIE1JTklYLiAqLworI3VuZGVmIF9NSU5JWAorCisvKiBEZWZpbmUgdG8gMiBpZiB0aGUg
c3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQgd2l0aAorICAg
dGhpcyBkZWZpbmVkLiAqLworI3VuZGVmIF9QT1NJWF8xX1NPVVJDRQorCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGluZ3MgdG8g
d29yay4gKi8KKyN1bmRlZiBfUE9TSVhfU09VUkNFCisKKy8qIERlZmluZSBmb3IgU29sYXJpcyAy
LjUuMSBzbyB0aGUgdWludDMyX3QgdHlwZWRlZiBmcm9tIDxzeXMvc3luY2guaD4sCisgICA8cHRo
cmVhZC5oPiwgb3IgPHNlbWFwaG9yZS5oPiBpcyBub3QgdXNlZC4gSWYgdGhlIHR5cGVkZWYgd2Vy
ZSBhbGxvd2VkLCB0aGUKKyAgICNkZWZpbmUgYmVsb3cgd291bGQgY2F1c2UgYSBzeW50YXggZXJy
b3IuICovCisjdW5kZWYgX1VJTlQzMl9UCisKKy8qIERlZmluZSBmb3IgU29sYXJpcyAyLjUuMSBz
byB0aGUgdWludDY0X3QgdHlwZWRlZiBmcm9tIDxzeXMvc3luY2guaD4sCisgICA8cHRocmVhZC5o
Piwgb3IgPHNlbWFwaG9yZS5oPiBpcyBub3QgdXNlZC4gSWYgdGhlIHR5cGVkZWYgd2VyZSBhbGxv
d2VkLCB0aGUKKyAgICNkZWZpbmUgYmVsb3cgd291bGQgY2F1c2UgYSBzeW50YXggZXJyb3IuICov
CisjdW5kZWYgX1VJTlQ2NF9UCisKKy8qIERlZmluZSBmb3IgU29sYXJpcyAyLjUuMSBzbyB0aGUg
dWludDhfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8
c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRo
ZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRl
ZiBfVUlOVDhfVAorCisvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0
IGRlZmluZS4gKi8KKyN1bmRlZiBnaWRfdAorCisvKiBEZWZpbmUgdG8gYF9faW5saW5lX18nIG9y
IGBfX2lubGluZScgaWYgdGhhdCdzIHdoYXQgdGhlIEMgY29tcGlsZXIKKyAgIGNhbGxzIGl0LCBv
ciB0byBub3RoaW5nIGlmICdpbmxpbmUnIGlzIG5vdCBzdXBwb3J0ZWQgdW5kZXIgYW55IG5hbWUu
ICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworI3VuZGVmIGlubGluZQorI2VuZGlmCisKKy8qIERl
ZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3Rs
eSAxNiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNs
dWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludDE2X3QKKworLyogRGVmaW5lIHRv
IHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJp
dHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRv
IG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50MzJfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5
cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgor
ICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRl
ZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQ2NF90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBh
IHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA4IGJpdHMgaWYgc3VjaAorICAg
YSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQu
ICovCisjdW5kZWYgaW50OF90CisKKy8qIERlZmluZSB0byBycGxfbWFsbG9jIGlmIHRoZSByZXBs
YWNlbWVudCBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZC4gKi8KKyN1bmRlZiBtYWxsb2MKKworLyog
RGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworI3Vu
ZGVmIG1vZGVfdAorCisvKiBEZWZpbmUgdG8gYGxvbmcgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRv
ZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBvZmZfdAorCisvKiBEZWZpbmUgdG8gYGludCcgaWYg
PHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgcGlkX3QKKworLyogRGVm
aW5lIHRvIHJwbF9yZWFsbG9jIGlmIHRoZSByZXBsYWNlbWVudCBmdW5jdGlvbiBzaG91bGQgYmUg
dXNlZC4gKi8KKyN1bmRlZiByZWFsbG9jCisKKy8qIERlZmluZSB0byB0aGUgZXF1aXZhbGVudCBv
ZiB0aGUgQzk5ICdyZXN0cmljdCcga2V5d29yZCwgb3IgdG8KKyAgIG5vdGhpbmcgaWYgdGhpcyBp
cyBub3Qgc3VwcG9ydGVkLiAgRG8gbm90IGRlZmluZSBpZiByZXN0cmljdCBpcworICAgc3VwcG9y
dGVkIGRpcmVjdGx5LiAgKi8KKyN1bmRlZiByZXN0cmljdAorLyogV29yayBhcm91bmQgYSBidWcg
aW4gU3VuIEMrKzogaXQgZG9lcyBub3Qgc3VwcG9ydCBfUmVzdHJpY3Qgb3IKKyAgIF9fcmVzdHJp
Y3RfXywgZXZlbiB0aG91Z2ggdGhlIGNvcnJlc3BvbmRpbmcgU3VuIEMgY29tcGlsZXIgZW5kcyB1
cCB3aXRoCisgICAiI2RlZmluZSByZXN0cmljdCBfUmVzdHJpY3QiIG9yICIjZGVmaW5lIHJlc3Ry
aWN0IF9fcmVzdHJpY3RfXyIgaW4gdGhlCisgICBwcmV2aW91cyBsaW5lLiAgUGVyaGFwcyBzb21l
IGZ1dHVyZSB2ZXJzaW9uIG9mIFN1biBDKysgd2lsbCB3b3JrIHdpdGgKKyAgIHJlc3RyaWN0OyBp
ZiBzbywgaG9wZWZ1bGx5IGl0IGRlZmluZXMgX19SRVNUUklDVCBsaWtlIFN1biBDIGRvZXMuICAq
LworI2lmIGRlZmluZWQgX19TVU5QUk9fQ0MgJiYgIWRlZmluZWQgX19SRVNUUklDVAorIyBkZWZp
bmUgX1Jlc3RyaWN0CisjIGRlZmluZSBfX3Jlc3RyaWN0X18KKyNlbmRpZgorCisvKiBEZWZpbmUg
dG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisj
dW5kZWYgc2l6ZV90CisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMg
bm90IGRlZmluZS4gKi8KKyN1bmRlZiBzc2l6ZV90CisKKy8qIERlZmluZSB0byBgaW50JyBpZiA8
c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLworI3VuZGVmIHVpZF90CisKKy8qIERlZmlu
ZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3Rs
eSAxNiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNs
dWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQxNl90CisKKy8qIERlZmluZSB0
byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAz
MiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRl
cyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQzMl90CisKKy8qIERlZmluZSB0byB0
aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBi
aXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBk
byBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQ2NF90CisKKy8qIERlZmluZSB0byB0aGUg
dHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA4IGJpdHMg
aWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5v
dCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDhfdAorCisvKiBEZWZpbmUgYXMgYGZvcmsnIGlm
IGB2Zm9yaycgZG9lcyBub3Qgd29yay4gKi8KKyN1bmRlZiB2Zm9yawpkaWZmIC1yIDg3MjE4YmQz
NjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvY29uZmlnLnN1YgotLS0gL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9jb25maWcuc3ViCU1vbiBGZWIg
MjAgMTg6MjA6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDE3NzEgQEAKKyMhIC9iaW4vc2gKKyMg
Q29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgorIyAgIENvcHlyaWdo
dCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMg
ICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwLAorIyAgIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3Rp
bWVzdGFtcD0nMjAxMS0xMS0xMScKKworIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29t
bW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCisjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4g
dGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKKyMgY2FuIGhhbmRsZSB0
aGF0IG1hY2hpbmUuICBJdCBkb2VzIG5vdCBpbXBseSBBTEwgR05VIHNvZnR3YXJlIGNhbi4KKyMK
KyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEKKyMgMDIxMTAtMTMwMSwgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3Ry
aWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBj
b25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVk
ZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZv
ciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRv
IDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKKyMgZGlmZiBhbmQg
YSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KKyMKKyMgQ29uZmlndXJh
dGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0
aW9uIHR5cGUuCisjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBh
biBhcmd1bWVudC4KKyMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2Fn
ZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisjIE90aGVyd2lzZSwgd2UgcHJpbnQg
dGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCisKKyMgWW91
IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6
Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47
Zj1jb25maWcuc3ViO2hiPUhFQUQKKworIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhl
IHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKKyMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0
eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCisjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0
aCAqYW55KiBHTlUgc29mdHdhcmUuCisjIEVhY2ggcGFja2FnZSBpcyByZXNwb25zaWJsZSBmb3Ig
cmVwb3J0aW5nIHdoaWNoIHZhbGlkIGNvbmZpZ3VyYXRpb25zCisjIGl0IGRvZXMgbm90IHN1cHBv
cnQuICBUaGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBkaXN0aW5ndWlzaAorIyBhIGZhaWx1cmUg
dG8gc3VwcG9ydCBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG1lYW5pbmdsZXNzCisjIGNv
bmZpZ3VyYXRpb24uCisKKyMgVGhlIGdvYWwgb2YgdGhpcyBmaWxlIGlzIHRvIG1hcCBhbGwgdGhl
IHZhcmlvdXMgdmFyaWF0aW9ucyBvZiBhIGdpdmVuCisjIG1hY2hpbmUgc3BlY2lmaWNhdGlvbiBp
bnRvIGEgc2luZ2xlIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm06CisjCUNQVV9UWVBFLU1BTlVG
QUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCisjIG9yIGluIHNvbWUgY2FzZXMsIHRoZSBuZXdlciBm
b3VyLXBhcnQgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdf
U1lTVEVNCisjIEl0IGlzIHdyb25nIHRvIGVjaG8gYW55IG90aGVyIHR5cGUgb2Ygc3BlY2lmaWNh
dGlvbi4KKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitV
c2FnZTogJDAgW09QVElPTl0gQ1BVLU1GUi1PUFNZUworICAgICAgICQwIFtPUFRJT05dIEFMSUFT
CisKK0Nhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gbmFtZS4KKworT3BlcmF0aW9uIG1vZGVz
OgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLXQs
IC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhp
dAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAor
CitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgor
Cit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKKworQ29weXJpZ2h0IChD
KSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAor
MjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBz
b2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlz
IE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9y
IG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAk
IyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwg
LXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8
IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1o
KiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBT
dG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMg
VXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVj
aG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIKKyAgICAgICBleGl0IDEgOzsKKworICAg
ICpsb2NhbCopCisgICAgICAgIyBGaXJzdCBwYXNzIHRocm91Z2ggYW55IGxvY2FsIG1hY2hpbmUg
dHlwZXMuCisgICAgICAgZWNobyAkMQorICAgICAgIGV4aXQgOzsKKworICAgICogKQorICAgICAg
IGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworY2FzZSAkIyBpbgorIDApIGVjaG8gIiRtZTogbWlz
c2luZyBhcmd1bWVudCRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworIDEpIDs7CisgKikgZWNobyAi
JG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKK2VzYWMKKwor
IyBTZXBhcmF0ZSB3aGF0IHRoZSB1c2VyIGdhdmUgaW50byBDUFUtQ09NUEFOWSBhbmQgT1Mgb3Ig
S0VSTkVMLU9TIChpZiBhbnkpLgorIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFs
aWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KK21heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15c
KC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAorY2FzZSAkbWF5YmVfb3MgaW4KKyAgbnRvLXFu
eCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4
LW5ld2xpYiogfCBcCisgIGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4
LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKKyAga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251
KiB8IFwKKyAga29wZW5zb2xhcmlzKi1nbnUqIHwgXAorICBzdG9ybS1jaGFvcyogfCBvczItZW14
KiB8IHJ0bWstbm92YSopCisgICAgb3M9LSRtYXliZV9vcworICAgIGJhc2ljX21hY2hpbmU9YGVj
aG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCisgICAgOzsKKyAg
KikKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzLy1bXi1dKiQvLydgCisgICAg
aWYgWyAkYmFzaWNfbWFjaGluZSAhPSAkMSBdCisgICAgdGhlbiBvcz1gZWNobyAkMSB8IHNlZCAn
cy8uKi0vLS8nYAorICAgIGVsc2Ugb3M9OyBmaQorICAgIDs7Citlc2FjCisKKyMjIyBMZXQncyBy
ZWNvZ25pemUgY29tbW9uIG1hY2hpbmVzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcyBz
bworIyMjIHRoYXQgdGhpbmdzIGxpa2UgY29uZmlnLnN1YiBkZWNzdGF0aW9uLTMxMDAgd29yay4g
IFdlIGFsc28KKyMjIyByZWNvZ25pemUgc29tZSBtYW51ZmFjdHVyZXJzIGFzIG5vdCBiZWluZyBv
cGVyYXRpbmcgc3lzdGVtcywgc28gd2UKKyMjIyBjYW4gcHJvdmlkZSBkZWZhdWx0IG9wZXJhdGlu
ZyBzeXN0ZW1zIGJlbG93LgorY2FzZSAkb3MgaW4KKwktc3VuKm9zKikKKwkJIyBQcmV2ZW50IGZv
bGxvd2luZyBjbGF1c2UgZnJvbSBoYW5kbGluZyB0aGlzIGludmFsaWQgaW5wdXQuCisJCTs7CisJ
LWRlYyogfCAtbWlwcyogfCAtc2VxdWVudCogfCAtZW5jb3JlKiB8IC1wYzUzMiogfCAtc2dpKiB8
IC1zb255KiB8IFwKKwktYXR0KiB8IC03MzAwKiB8IC0zMzAwKiB8IC1kZWx0YSogfCAtbW90b3Jv
bGEqIHwgLXN1blsyMzRdKiB8IFwKKwktdW5pY29tKiB8IC1pYm0qIHwgLW5leHQgfCAtaHAgfCAt
aXNpKiB8IC1hcG9sbG8gfCAtYWx0b3MqIHwgXAorCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5l
d3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCisJLWNbMTIzXSogfCAt
Y29udmV4KiB8IC1zdW4gfCAtY3JkcyB8IC1vbXJvbiogfCAtZGcgfCAtdWx0cmEgfCAtdHRpKiB8
IFwKKwktaGFycmlzIHwgLWRvbHBoaW4gfCAtaGlnaGxldmVsIHwgLWdvdWxkIHwgLWNibSB8IC1u
cyB8IC1tYXNzY29tcCB8IFwKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5IHwgLW1p
Y3JvYmxhemUpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWJsdWVnZW5lKikK
KwkJb3M9LWNuaworCQk7OworCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25k
KQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1zY291dCkKKwkJOzsKKwktd3Jz
KQorCQlvcz0tdnh3b3JrcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1c29zKikK
KwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVzcmRiKQor
CQlvcz0tY2hvcnVzcmRiCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktaGl1eCopCisJCW9z
PS1oaXV4d2UyCisJCTs7CisJLXNjbzYpCisJCW9zPS1zY281djYKKwkJYmFzaWNfbWFjaGluZT1g
ZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281KQorCQlvcz0t
c2NvMy4ydjUKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1w
Yy8nYAorCQk7OworCS1zY280KQorCQlvcz0tc2NvMy4ydjQKKwkJYmFzaWNfbWFjaGluZT1gZWNo
byAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjIuWzQtOV0qKQor
CQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3Mvc2NvMy4yLi9zY28zLjJ2LydgCisJCWJhc2ljX21h
Y2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4y
dls0LTldKikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdl
ci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAor
CQk7OworCS1zY281djYqKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0
IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2
LXBjLydgCisJCTs7CisJLXNjbyopCisJCW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNoaW5lPWBl
Y2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXVkayopCisJCWJhc2lj
X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktaXNj
KQorCQlvcz0taXNjMi4yCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYt
LiovODYtcGMvJ2AKKwkJOzsKKwktY2xpeCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1pbnRl
cmdyYXBoCisJCTs7CisJLWlzYyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUg
J3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwkt
cHR4KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1
ZW50LydgCisJCTs7CisJLXdpbmRvd3NudCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93
aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsKKwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1p
bnQgfCAtbWludFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50
CisJCTs7Citlc2FjCisKKyMgRGVjb2RlIGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkg
Y29tYmluYXRpb25zLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBi
YXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVk
IGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8
IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwg
YWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQt
OF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8
IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIz
NDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciB8IGF2cjMyIFwKKyAgICAgICAgfCBiZTMyIHwgYmU2
NCBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGNsaXBwZXIgXAorCXwgZDEwdiB8IGQzMHYgfCBkbHgg
fCBkc3AxNnh4IFwKKwl8IGVwaXBoYW55IFwKKwl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwKKwl8IGg4
MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8
IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAor
CXwgaXAyayB8IGlxMjAwMCBcCisJfCBsZTMyIHwgbGU2NCBcCisJfCBsbTMyIFwKKwl8IG0zMmMg
fCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAorCXwgbWF4cSB8IG1iIHwg
bWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXAorCXwgbWlwcyB8IG1pcHNiZSB8IG1p
cHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAorCXwgbWlwczY0IHwgbWlwczY0
ZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAorCXwgbWlwczY0b3Jpb24g
fCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisJfCBt
aXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwg
XAorCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAorCXwgbWlwczY0dnI1MDAwIHwg
bWlwczY0dnI1MDAwZWwgXAorCXwgbWlwczY0dnI1OTAwIHwgbWlwczY0dnI1OTAwZWwgXAorCXwg
bWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorCXwgbWlwc2lzYTMycjIgfCBtaXBzaXNhMzJyMmVs
IFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1pcHNpc2E2NHIyIHwgbWlwc2lz
YTY0cjJlbCBcCisJfCBtaXBzaXNhNjRzYjEgfCBtaXBzaXNhNjRzYjFlbCBcCisJfCBtaXBzaXNh
NjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAorCXwgbWlwc3R4MzkgfCBtaXBzdHgzOWVsIFwK
Kwl8IG1uMTAyMDAgfCBtbjEwMzAwIFwKKwl8IG1veGllIFwKKwl8IG10IFwKKwl8IG1zcDQzMCBc
CisJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKKwl8IG5pb3MgfCBuaW9zMiBcCisJfCBu
czE2ayB8IG5zMzJrIFwKKwl8IG9wZW44IFwKKwl8IG9yMzIgXAorCXwgcGRwMTAgfCBwZHAxMSB8
IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2Vy
cGNsZSBcCisJfCBweXJhbWlkIFwKKwl8IHJsNzggfCByeCBcCisJfCBzY29yZSBcCisJfCBzaCB8
IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNo
ZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2g2NCB8IHNoNjRs
ZSBcCisJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4Nngg
fCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCisJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjli
IHwgc3BhcmN2OXYgXAorCXwgc3B1IFwKKwl8IHRhaG9lIHwgdGljNHggfCB0aWM1NHggfCB0aWM1
NXggfCB0aWM2eCB8IHRpYzgwIHwgdHJvbiBcCisJfCB1Ymljb20zMiBcCisJfCB2ODUwIHwgdjg1
MGUgfCB2ODUwZTEgfCB2ODUwZTIgfCB2ODUwZXMgfCB2ODUwZTJ2MyBcCisJfCB3ZTMyayBcCisJ
fCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB6OGsgfCB6ODApCisJCWJh
c2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCWM1NHgpCisJCWJhc2lj
X21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJOzsKKwljNTV4KQorCQliYXNpY19tYWNoaW5lPXRp
YzU1eC11bmtub3duCisJCTs7CisJYzZ4KQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24K
KwkJOzsKKwltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBwaWNvY2hpcCkKKwkJ
IyBNb3Rvcm9sYSA2OEhDMTEvMTIuCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5r
bm93bgorCQlvcz0tbm9uZQorCQk7OworCW04ODExMCB8IG02ODBbMTIzNDZdMCB8IG02ODM/MiB8
IG02ODM2MCB8IG01MjAwIHwgdjcwIHwgdzY1IHwgejhrKQorCQk7OworCW1zMSkKKwkJYmFzaWNf
bWFjaGluZT1tdC11bmtub3duCisJCTs7CisKKwlzdHJvbmdhcm0gfCB0aHVtYiB8IHhzY2FsZSkK
KwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQk7OworCisJeHNjYWxlZWIpCisJCWJhc2lj
X21hY2hpbmU9YXJtZWItdW5rbm93bgorCQk7OworCisJeHNjYWxlZWwpCisJCWJhc2ljX21hY2hp
bmU9YXJtZWwtdW5rbm93bgorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5r
bm93bicKKwkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQK
KwkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNl
cnMuCisJaSo4NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtcGMK
KwkgIDs7CisJIyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29yZC4KKwkq
LSotKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJh
c2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworCSMgUmVj
b2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgwLSogXAor
CXwgYTI5ay0qIFwKKwl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1Ni0qIHwg
YWxwaGFldjZbNzhdLSogXAorCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8IGFscGhh
NjRldjU2LSogfCBhbHBoYTY0ZXY2Wzc4XS0qIFwKKwl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhh
NjRwY2E1WzY3XS0qIHwgYXJjLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBh
cm1lYi0qIHwgYXJtdiotKiBcCisJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmUzMi0qIHwgYmU2
NC0qIFwKKwl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRd
OTAtKiB8IGM0eC0qIFwKKwl8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCisJfCBk
MTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisJfCBlbHhzaS0qIFwKKwl8IGYzMFswMV0tKiB8IGY3
MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKKwl8IGg4MzAwLSogfCBo
ODUwMC0qIFwKKwl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBb
bnddLSogfCBocHBhNjQtKiBcCisJfCBoZXhhZ29uLSogXAorCXwgaSo4Ni0qIHwgaTg2MC0qIHwg
aTk2MC0qIHwgaWE2NC0qIFwKKwl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxlMzItKiB8IGxl
NjQtKiBcCisJfCBsbTMyLSogXAorCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAorCXwg
bTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0q
IFwKKwl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiB8IG1ldGFnLSogfCBt
aWNyb2JsYXplLSogXAorCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0q
IHwgbWlwc2xlLSogXAorCXwgbWlwczE2LSogXAorCXwgbWlwczY0LSogfCBtaXBzNjRlbC0qIFwK
Kwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCisJfCBtaXBzNjRvcmlvbi0q
IHwgbWlwczY0b3Jpb25lbC0qIFwKKwl8IG1pcHM2NHI1OTAwLSogfCBtaXBzNjRyNTkwMGVsLSog
XAorCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjR2cjQxMDAtKiB8IG1p
cHM2NHZyNDEwMGVsLSogXAorCXwgbWlwczY0dnI0MzAwLSogfCBtaXBzNjR2cjQzMDBlbC0qIFwK
Kwl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCisJfCBtaXBzNjR2cjU5MDAt
KiB8IG1pcHM2NHZyNTkwMGVsLSogXAorCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwK
Kwl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTY0LSogfCBt
aXBzaXNhNjRlbC0qIFwKKwl8IG1pcHNpc2E2NHIyLSogfCBtaXBzaXNhNjRyMmVsLSogXAorCXwg
bWlwc2lzYTY0c2IxLSogfCBtaXBzaXNhNjRzYjFlbC0qIFwKKwl8IG1pcHNpc2E2NHNyNzFrLSog
fCBtaXBzaXNhNjRzcjcxa2VsLSogXAorCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCisJ
fCBtbWl4LSogXAorCXwgbXQtKiBcCisJfCBtc3A0MzAtKiBcCisJfCBuZHMzMi0qIHwgbmRzMzJs
ZS0qIHwgbmRzMzJiZS0qIFwKKwl8IG5pb3MtKiB8IG5pb3MyLSogXAorCXwgbm9uZS0qIHwgbnAx
LSogfCBuczE2ay0qIHwgbnMzMmstKiBcCisJfCBvcGVuOC0qIFwKKwl8IG9yaW9uLSogXAorCXwg
cGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCisJfCBw
b3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiBcCisJ
fCBweXJhbWlkLSogXAorCXwgcmw3OC0qIHwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKKwl8
IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsyM11lLSog
fCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKKwl8IHNobGUtKiB8IHNoWzEyMzRdbGUt
KiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAorCXwgc3BhcmMtKiB8IHNwYXJjNjQt
KiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAor
CXwgc3BhcmNsaXRlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8
IHNwYXJjdjl2LSogfCBzdjEtKiB8IHN4Py0qIFwKKwl8IHRhaG9lLSogXAorCXwgdGljMzAtKiB8
IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogXAorCXwg
dGlsZSotKiBcCisJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCisJfCB2ODUwLSogfCB2ODUw
ZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBcCisJfCB2
YXgtKiBcCisJfCB3ZTMyay0qIFwKKwl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBz
MTAwLSogXAorCXwgeHN0b3JteTE2LSogfCB4dGVuc2EqLSogXAorCXwgeW1wLSogXAorCXwgejhr
LSogfCB6ODAtKikKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhv
dXQgY29tcGFueSBuYW1lLCB3aXRoIGdsb2IgbWF0Y2guCisJeHRlbnNhKikKKwkJYmFzaWNfbWFj
aGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJIyBSZWNvZ25pemUgdGhlIHZhcmlv
dXMgbWFjaGluZSBuYW1lcyBhbmQgYWxpYXNlcyB3aGljaCBzdGFuZAorCSMgZm9yIGEgQ1BVIHR5
cGUgYW5kIGEgY29tcGFueSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4gT1MuCisJMzg2YnNkKQorCQli
YXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tYnNkCisJCTs7CisJM2IxIHwgNzMwMCB8
IDczMDAtYXR0IHwgYXR0LTczMDAgfCBwYzczMDAgfCBzYWZhcmkgfCB1bml4cGMpCisJCWJhc2lj
X21hY2hpbmU9bTY4MDAwLWF0dAorCQk7OworCTNiKikKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1h
dHQKKwkJOzsKKwlhMjlraGlmKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkK
KwkJOzsKKwlhYmFjdXMpCisJCWJhc2ljX21hY2hpbmU9YWJhY3VzLXVua25vd24KKwkJOzsKKwlh
ZG9iZTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMTAtYWRvYmUKKwkJb3M9LXNjb3V0CisJCTs7
CisJYWxsaWFudCB8IGZ4ODApCisJCWJhc2ljX21hY2hpbmU9Zng4MC1hbGxpYW50CisJCTs7CisJ
YWx0b3MgfCBhbHRvczMwNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hbHRvcworCQk7OworCWFt
MjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstbm9uZQorCQlvcz0tYnNkCisJCTs7CisJYW1kNjQp
CisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LXBjCisJCTs7CisJYW1kNjQtKikKKwkJYmFzaWNfbWFj
aGluZT14ODZfNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJ
OzsKKwlhbWRhaGwpCisJCWJhc2ljX21hY2hpbmU9NTgwLWFtZGFobAorCQlvcz0tc3lzdgorCQk7
OworCWFtaWdhIHwgYW1pZ2EtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJOzsK
KwlhbWlnYW9zIHwgYW1pZ2Fkb3MpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9z
PS1hbWlnYW9zCisJCTs7CisJYW1pZ2F1bml4IHwgYW1peCkKKwkJYmFzaWNfbWFjaGluZT1tNjhr
LXVua25vd24KKwkJb3M9LXN5c3Y0CisJCTs7CisJYXBvbGxvNjgpCisJCWJhc2ljX21hY2hpbmU9
bTY4ay1hcG9sbG8KKwkJb3M9LXN5c3YKKwkJOzsKKwlhcG9sbG82OGJzZCkKKwkJYmFzaWNfbWFj
aGluZT1tNjhrLWFwb2xsbworCQlvcz0tYnNkCisJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGlu
ZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CisJYXV4KQorCQliYXNpY19tYWNoaW5lPW02OGst
YXBwbGUKKwkJb3M9LWF1eAorCQk7OworCWJhbGFuY2UpCisJCWJhc2ljX21hY2hpbmU9bnMzMmst
c2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwlibGFja2ZpbikKKwkJYmFzaWNfbWFjaGluZT1i
ZmluLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJYmxhY2tmaW4tKikKKwkJYmFzaWNfbWFj
aGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9z
PS1saW51eAorCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQor
CQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAk
YmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFz
aWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8v
J2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFj
aGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM5MCkKKwkJYmFzaWNfbWFjaGluZT1j
OTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY2VnY2MpCisJCWJhc2ljX21hY2hpbmU9YXJt
LXVua25vd24KKwkJb3M9LWNlZ2NjCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19tYWNoaW5l
PWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19tYWNoaW5l
PWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNfbWFjaGlu
ZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNpY19tYWNo
aW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJhc2ljX21h
Y2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJYmFzaWNf
bWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQliYXNpY19t
YWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTYgfCBjcjE2LSop
CisJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwljcmRzIHwg
dW5vcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWNyZHMKKwkJOzsKKwljcmlzdjMyIHwgY3Jpc3Yz
Mi0qIHwgZXRyYXhmcyopCisJCWJhc2ljX21hY2hpbmU9Y3Jpc3YzMi1heGlzCisJCTs7CisJY3Jp
cyB8IGNyaXMtKiB8IGV0cmF4KikKKwkJYmFzaWNfbWFjaGluZT1jcmlzLWF4aXMKKwkJOzsKKwlj
cngpCisJCWJhc2ljX21hY2hpbmU9Y3J4LXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWRhMzAg
fCBkYTMwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1kYTMwCisJCTs7CisJZGVjc3RhdGlvbiB8
IGRlY3N0YXRpb24tMzEwMCB8IHBtYXggfCBwbWF4LSogfCBwbWluIHwgZGVjMzEwMCB8IGRlY3N0
YXRuKQorCQliYXNpY19tYWNoaW5lPW1pcHMtZGVjCisJCTs7CisJZGVjc3lzdGVtMTAqIHwgZGVj
MTAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczEwCisJCTs7CisJZGVj
c3lzdGVtMjAqIHwgZGVjMjAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9w
czIwCisJCTs7CisJZGVsdGEgfCAzMzAwIHwgbW90b3JvbGEtMzMwMCB8IG1vdG9yb2xhLWRlbHRh
IFwKKwkgICAgICB8IDMzMDAtbW90b3JvbGEgfCBkZWx0YS1tb3Rvcm9sYSkKKwkJYmFzaWNfbWFj
aGluZT1tNjhrLW1vdG9yb2xhCisJCTs7CisJZGVsdGE4OCkKKwkJYmFzaWNfbWFjaGluZT1tODhr
LW1vdG9yb2xhCisJCW9zPS1zeXN2MworCQk7OworCWRpY29zKQorCQliYXNpY19tYWNoaW5lPWk2
ODYtcGMKKwkJb3M9LWRpY29zCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1w
YworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFzaWNfbWFj
aGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4MiotYnVsbCkK
KwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZWJtb24yOWsp
CisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LWVibW9uCisJCTs7CisJZWx4c2kpCisJ
CWJhc2ljX21hY2hpbmU9ZWx4c2ktZWx4c2kKKwkJb3M9LWJzZAorCQk7OworCWVuY29yZSB8IHVt
YXggfCBtbWF4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLWVuY29yZQorCQk7OworCWVzMTgwMCB8
IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9TRSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWVyaWNz
c29uCisJCW9zPS1vc2UKKwkJOzsKKwlmeDI4MDApCisJCWJhc2ljX21hY2hpbmU9aTg2MC1hbGxp
YW50CisJCTs7CisJZ2VuaXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstbnMKKwkJOzsKKwlnbWlj
cm8pCisJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KKwkJb3M9LXN5c3YKKwkJOzsKKwlnbzMy
KQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWdvMzIKKwkJOzsKKwloMzA1MHIqIHwg
aGl1eCopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJ
CTs7CisJaDgzMDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0taG1z
CisJCTs7CisJaDgzMDB4cmF5KQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9
LXhyYXkKKwkJOzsKKwloODUwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODUwMC1oaXRhY2hpCisJ
CW9zPS1obXMKKwkJOzsKKwloYXJyaXMpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJ
b3M9LXN5c3YzCisJCTs7CisJaHAzMDAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7
CisJaHAzMDBic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0tYnNkCisJCTs7CisJ
aHAzMDBocHV4KQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWhwdXgKKwkJOzsKKwlo
cDNrOVswLTldWzAtOV0gfCBocDlbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAt
aHAKKwkJOzsKKwlocDlrMlswLTldWzAtOV0gfCBocDlrMzFbMC05XSkKKwkJYmFzaWNfbWFjaGlu
ZT1tNjgwMDAtaHAKKwkJOzsKKwlocDlrM1syLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4
ay1ocAorCQk7OworCWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCisJCWJhc2ljX21h
Y2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03OV1bMC05
XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azc4WzAtOV0gfCBocDc4
WzAtOV0pCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBw
YTEuMS1ocAorCQk7OworCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0gfCBocDgw
WzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKKwkJIyBGSVhN
RTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJ
aHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCisJCWJhc2ljX21hY2hpbmU9aHBw
YTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTldWzAtOV0pCisJCWJhc2lj
X21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwcGEtbmV4dCkKKwkJb3M9LW5leHRzdGVwMwor
CQk7OworCWhwcGFvc2YpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tb3NmCisJ
CTs7CisJaHBwcm8pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tcHJvZWxmCisJ
CTs7CisJaTM3MC1pYm0qIHwgaWJtKikKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQk7Owor
IyBJJ20gbm90IHN1cmUgd2hhdCAiU3lzdjMyIiBtZWFucy4gIFNob3VsZCB0aGlzIGJlIHN5c3Yz
LjI/CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4q
Lzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5l
PWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJ
aSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8n
YAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQx
IHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1h
Y2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12
c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJ
OzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9z
IGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsK
KwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJ
CW9zPS1zeXN2CisJCTs7CisJbTY4a25vbW11KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93
bgorCQlvcz0tbGludXgKKwkJOzsKKwltNjhrbm9tbXUtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhr
LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAor
CQk7OworCW04OGstb21yb24qKQorCQliYXNpY19tYWNoaW5lPW04OGstb21yb24KKwkJOzsKKwlt
YWdudW0gfCBtMzIzMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLW1pcHMKKwkJb3M9LXN5c3YKKwkJ
OzsKKwltZXJsaW4pCisJCWJhc2ljX21hY2hpbmU9bnMzMmstdXRlaworCQlvcz0tc3lzdgorCQk7
OworCW1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsK
KwltaW5ndzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsK
KwltaW5ndzMyY2UpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LW1pbmd3MzJj
ZQorCQk7OworCW1pbmlmcmFtZSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVyZ2VudAor
CQk7OworCSptaW50IHwgLW1pbnRbMC05XSogfCAqTWlOVCB8ICpNaU5UWzAtOV0qKQorCQliYXNp
Y19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKKwltaXBzMyotKikKKwkJYmFz
aWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQv
J2AKKwkJOzsKKwltaXBzMyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUg
fCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgLXVua25vd24KKwkJOzsKKwltb25pdG9yKQorCQli
YXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJbW9ycGhvcykKKwkJ
YmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJb3M9LW1vcnBob3MKKwkJOzsKKwltc2Rv
cykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc2RvcworCQk7OworCW1zMS0qKQor
CQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21zMS0vbXQt
LydgCisJCTs7CisJbXN5cykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc3lzCisJ
CTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwlu
YWNsKQorCQliYXNpY19tYWNoaW5lPWxlMzItdW5rbm93bgorCQlvcz0tbmFjbAorCQk7OworCW5j
cjMwMDApCisJCWJhc2ljX21hY2hpbmU9aTQ4Ni1uY3IKKwkJb3M9LXN5c3Y0CisJCTs7CisJbmV0
YnNkMzg2KQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tbmV0YnNkCisJCTs7
CisJbmV0d2luZGVyKQorCQliYXNpY19tYWNoaW5lPWFybXY0bC1yZWJlbAorCQlvcz0tbGludXgK
KwkJOzsKKwluZXdzIHwgbmV3czcwMCB8IG5ld3M4MDAgfCBuZXdzOTAwKQorCQliYXNpY19tYWNo
aW5lPW02OGstc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3czEwMDApCisJCWJhc2ljX21h
Y2hpbmU9bTY4MDMwLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MtMzYwMCB8IHJpc2Mt
bmV3cykKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5l
Y3Y3MCkKKwkJYmFzaWNfbWFjaGluZT12NzAtbmVjCisJCW9zPS1zeXN2CisJCTs7CisJbmV4dCB8
IG0qLW5leHQgKQorCQliYXNpY19tYWNoaW5lPW02OGstbmV4dAorCQljYXNlICRvcyBpbgorCQkg
ICAgLW5leHRzdGVwKiApCisJCQk7OworCQkgICAgLW5zMiopCisJCSAgICAgIG9zPS1uZXh0c3Rl
cDIKKwkJCTs7CisJCSAgICAqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAzCisJCQk7OworCQllc2Fj
CisJCTs7CisJbmgzMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstaGFycmlzCisJCW9zPS1jeHV4
CisJCTs7CisJbmhbNDVdMDAwKQorCQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCisJCW9zPS1j
eHV4CisJCTs7CisJbmluZHk5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAorCQlvcz0t
bmluZHkKKwkJOzsKKwltb245NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAorCQlvcz0t
bW9uOTYwCisJCTs7CisJbm9uc3RvcHV4KQorCQliYXNpY19tYWNoaW5lPW1pcHMtY29tcGFxCisJ
CW9zPS1ub25zdG9wdXgKKwkJOzsKKwlucDEpCisJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCisJ
CTs7CisJbmVvLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uZW8tdGFuZGVtCisJCTs7CisJbnNl
LXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc2UtdGFuZGVtCisJCTs7CisJbnNyLXRhbmRlbSkK
KwkJYmFzaWNfbWFjaGluZT1uc3ItdGFuZGVtCisJCTs7CisJb3A1MG4tKiB8IG9wNjBjLSopCisJ
CWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJb3M9LXByb2VsZgorCQk7OworCW9wZW5yaXNj
IHwgb3BlbnJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1vcjMyLXVua25vd24KKwkJOzsKKwlvczQw
MCkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tb3M0MDAKKwkJOzsKKwlPU0U2
ODAwMCB8IG9zZTY4MDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1lcmljc3NvbgorCQlvcz0t
b3NlCisJCTs7CisJb3M2OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ub25lCisJCW9zPS1vczY4
aworCQk7OworCXBhLWhpdGFjaGkpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJ
CW9zPS1oaXV4d2UyCisJCTs7CisJcGFyYWdvbikKKwkJYmFzaWNfbWFjaGluZT1pODYwLWludGVs
CisJCW9zPS1vc2YKKwkJOzsKKwlwYXJpc2MpCisJCWJhc2ljX21hY2hpbmU9aHBwYS11bmtub3du
CisJCW9zPS1saW51eAorCQk7OworCXBhcmlzYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGEtYGVj
aG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7
CisJcGJkKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXR0aQorCQk7OworCXBiYikKKwkJYmFzaWNf
bWFjaGluZT1tNjhrLXR0aQorCQk7OworCXBjNTMyIHwgcGM1MzItKikKKwkJYmFzaWNfbWFjaGlu
ZT1uczMyay1wYzUzMgorCQk7OworCXBjOTgpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQk7
OworCXBjOTgtKikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwg
c2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bSB8IHA1IHwgazUgfCBrNiB8IG5leGdl
biB8IHZpYWMzKQorCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKwkJOzsKKwlwZW50aXVtcHJvIHwg
cDYgfCA2eDg2IHwgYXRobG9uIHwgYXRobG9uXyopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYwor
CQk7OworCXBlbnRpdW1paSB8IHBlbnRpdW0yIHwgcGVudGl1bWlpaSB8IHBlbnRpdW0zKQorCQli
YXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtNCkKKwkJYmFzaWNfbWFjaGluZT1p
Nzg2LXBjCisJCTs7CisJcGVudGl1bS0qIHwgcDUtKiB8IGs1LSogfCBrNi0qIHwgbmV4Z2VuLSog
fCB2aWFjMy0qKQorCQliYXNpY19tYWNoaW5lPWk1ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBz
ZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtcHJvLSogfCBwNi0qIHwgNng4Ni0qIHwg
YXRobG9uLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNl
ZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1paS0qIHwgcGVudGl1bTItKiB8IHBlbnRp
dW1paWktKiB8IHBlbnRpdW0zLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNf
bWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW00LSopCisJCWJhc2lj
X21hY2hpbmU9aTc4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAor
CQk7OworCXBuKQorCQliYXNpY19tYWNoaW5lPXBuLWdvdWxkCisJCTs7CisJcG93ZXIpCWJhc2lj
X21hY2hpbmU9cG93ZXItaWJtCisJCTs7CisJcHBjIHwgcHBjYmUpCWJhc2ljX21hY2hpbmU9cG93
ZXJwYy11bmtub3duCisJCTs7CisJcHBjLSogfCBwcGNiZS0qKQorCQliYXNpY19tYWNoaW5lPXBv
d2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlw
cGNsZSB8IHBvd2VycGNsaXR0bGUgfCBwcGMtbGUgfCBwb3dlcnBjLWxpdHRsZSkKKwkJYmFzaWNf
bWFjaGluZT1wb3dlcnBjbGUtdW5rbm93bgorCQk7OworCXBwY2xlLSogfCBwb3dlcnBjbGl0dGxl
LSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2Vk
ICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjQpCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LXVu
a25vd24KKwkJOzsKKwlwcGM2NC0qKSBiYXNpY19tYWNoaW5lPXBvd2VycGM2NC1gZWNobyAkYmFz
aWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0bGUgfCBwb3dlcnBj
NjRsaXR0bGUgfCBwcGM2NC1sZSB8IHBvd2VycGM2NC1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9
cG93ZXJwYzY0bGUtdW5rbm93bgorCQk7OworCXBwYzY0bGUtKiB8IHBvd2VycGM2NGxpdHRsZS0q
KQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2Vk
ICdzL15bXi1dKi0vLydgCisJCTs7CisJcHMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtaWJtCisJ
CTs7CisJcHczMikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXVua25vd24KKwkJb3M9LXB3MzIKKwkJ
OzsKKwlyZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LXJkb3MKKwkJOzsKKwly
b202OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwly
bVs0Nl0wMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNpZW1lbnMKKwkJOzsKKwlydHBjIHwgcnRw
Yy0qKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJczM5MCB8IHMzOTAtKikKKwkJ
YmFzaWNfbWFjaGluZT1zMzkwLWlibQorCQk7OworCXMzOTB4IHwgczM5MHgtKikKKwkJYmFzaWNf
bWFjaGluZT1zMzkweC1pYm0KKwkJOzsKKwlzYTI5MjAwKQorCQliYXNpY19tYWNoaW5lPWEyOWst
YW1kCisJCW9zPS11ZGkKKwkJOzsKKwlzYjEpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTY0c2Ix
LXVua25vd24KKwkJOzsKKwlzYjFlbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjFlbC11
bmtub3duCisJCTs7CisJc2RlKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2EzMi1zZGUKKwkJb3M9
LWVsZgorCQk7OworCXNlaSkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorCQlvcz0tc2VpdXgK
KwkJOzsKKwlzZXF1ZW50KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQk7OworCXNo
KQorCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCXNoNWVsKQor
CQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKwkJOzsKKwlzaDY0KQorCQliYXNpY19tYWNo
aW5lPXNoNjQtdW5rbm93bgorCQk7OworCXNwYXJjbGl0ZS13cnMgfCBzaW1zby13cnMpCisJCWJh
c2ljX21hY2hpbmU9c3BhcmNsaXRlLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXNwczcpCisJ
CWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MgorCQk7OworCXNwdXIpCisJCWJh
c2ljX21hY2hpbmU9c3B1ci11bmtub3duCisJCTs7CisJc3QyMDAwKQorCQliYXNpY19tYWNoaW5l
PW02OGstdGFuZGVtCisJCTs7CisJc3RyYXR1cykKKwkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0
dXMKKwkJb3M9LXN5c3Y0CisJCTs7CisJc3Ryb25nYXJtLSogfCB0aHVtYi0qKQorCQliYXNpY19t
YWNoaW5lPWFybS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7
OworCXN1bjIpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJvczMpCisJ
CWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuMm9zNCkK
KwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW4zb3Mz
KQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4zb3M0
KQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40b3Mz
KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuNG9z
NCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRz
b2wyKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlz
dW4zIHwgc3VuMy0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3VuNCkKKwkJ
YmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwgcm9hZHJ1
bm5lcikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFzaWNfbWFj
aGluZT1zdjEtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJhc2ljX21h
Y2hpbmU9aTM4Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFzaWNfbWFj
aGluZT1hbHBoYWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJhc2ljX21h
Y2hpbmU9dDkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpbGUqKQorCQliYXNpY19tYWNo
aW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LWxpbnV4LWdudQorCQk7OworCXR4Mzkp
CisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzktdW5rbm93bgorCQk7OworCXR4MzllbCkKKwkJYmFz
aWNfbWFjaGluZT1taXBzdHgzOWVsLXVua25vd24KKwkJOzsKKwl0b2FkMSkKKwkJYmFzaWNfbWFj
aGluZT1wZHAxMC14a2wKKwkJb3M9LXRvcHMyMAorCQk7OworCXRvd2VyIHwgdG93ZXItMzIpCisJ
CWJhc2ljX21hY2hpbmU9bTY4ay1uY3IKKwkJOzsKKwl0cGYpCisJCWJhc2ljX21hY2hpbmU9czM5
MHgtaWJtCisJCW9zPS10cGYKKwkJOzsKKwl1ZGkyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1h
bWQKKwkJb3M9LXVkaQorCQk7OworCXVsdHJhMykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW55dQor
CQlvcz0tc3ltMQorCQk7OworCXY4MTAgfCBuZWN2ODEwKQorCQliYXNpY19tYWNoaW5lPXY4MTAt
bmVjCisJCW9zPS1ub25lCisJCTs7CisJdmF4dikKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJ
CW9zPS1zeXN2CisJCTs7CisJdm1zKQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXZt
cworCQk7OworCXZwcCp8dnh8dngtKikKKwkJYmFzaWNfbWFjaGluZT1mMzAxLWZ1aml0c3UKKwkJ
OzsKKwl2eHdvcmtzOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtd3JzCisJCW9zPS12eHdvcmtz
CisJCTs7CisJdnh3b3JrczY4KQorCQliYXNpY19tYWNoaW5lPW02OGstd3JzCisJCW9zPS12eHdv
cmtzCisJCTs7CisJdnh3b3JrczI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLXdycworCQlvcz0t
dnh3b3JrcworCQk7OworCXc2NSopCisJCWJhc2ljX21hY2hpbmU9dzY1LXdkYworCQlvcz0tbm9u
ZQorCQk7OworCXc4OWstKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJb3M9
LXByb2VsZgorCQk7OworCXhib3gpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbWlu
Z3czMgorCQk7OworCXhwcyB8IHhwczEwMCkKKwkJYmFzaWNfbWFjaGluZT14cHMxMDAtaG9uZXl3
ZWxsCisJCTs7CisJeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qKQorCQliYXNpY19tYWNoaW5lPWBl
Y2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL154c2NhbGUvYXJtLydgCisJCTs7CisJeW1wKQor
CQliYXNpY19tYWNoaW5lPXltcC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl6OGstKi1jb2Zm
KQorCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwl6ODAtKi1j
b2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwlub25l
KQorCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQorCQlvcz0tbm9uZQorCQk7OworCisjIEhlcmUg
d2UgaGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0eXBlcy4g
IEl0IGlzIGluCisjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFudWZhY3R1cmVyLCBpbiBvdGhlcnMs
IGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCisJdzg5aykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4x
LXdpbmJvbmQKKwkJOzsKKwlvcDUwbikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7
OworCW9wNjBjKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJcm9tcCkKKwkJ
YmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCW1taXgpCisJCWJhc2ljX21hY2hpbmU9bW1p
eC1rbnV0aAorCQk7OworCXJzNjAwMCkKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtaWJtCisJCTs7
CisJdmF4KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJOzsKKwlwZHAxMCkKKwkJIyB0aGVy
ZSBhcmUgbWFueSBjbG9uZXMsIHNvIERFQyBpcyBub3QgYSBzYWZlIGJldAorCQliYXNpY19tYWNo
aW5lPXBkcDEwLXVua25vd24KKwkJOzsKKwlwZHAxMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMS1k
ZWMKKwkJOzsKKwl3ZTMyaykKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsKKwlzaFsx
MjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsy
M11lbGUpCisJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgorCQk7OworCXNwYXJjIHwgc3BhcmN2
OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQorCQliYXNpY19tYWNoaW5lPXNwYXJj
LXN1bgorCQk7OworCWN5ZHJhKQorCQliYXNpY19tYWNoaW5lPWN5ZHJhLWN5ZHJvbWUKKwkJOzsK
KwlvcmlvbikKKwkJYmFzaWNfbWFjaGluZT1vcmlvbi1oaWdobGV2ZWwKKwkJOzsKKwlvcmlvbjEw
NSkKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWhpZ2hsZXZlbAorCQk7OworCW1hYyB8IG1wdyB8
IG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQk7OworCXBtYWMgfCBwbWFj
LW1wdykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWFwcGxlCisJCTs7CisJKi11bmtub3duKQor
CQkjIE1ha2Ugc3VyZSB0byBtYXRjaCBhbiBhbHJlYWR5LWNhbm9uaWNhbGl6ZWQgbWFjaGluZSBu
YW1lLgorCQk7OworCSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFj
aGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJ
OzsKK2VzYWMKKworIyBIZXJlIHdlIGNhbm9uaWNhbGl6ZSBjZXJ0YWluIGFsaWFzZXMgZm9yIG1h
bnVmYWN0dXJlcnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi1kaWdpdGFsKikKKwkJYmFz
aWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9kaWdpdGFsLiovZGVjLydg
CisJCTs7CisJKi1jb21tb2RvcmUqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNo
aW5lIHwgc2VkICdzL2NvbW1vZG9yZS4qL2NibS8nYAorCQk7OworCSopCisJCTs7Citlc2FjCisK
KyMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBjZXJ0YWluIG9wZXJh
dGluZyBzeXN0ZW1zLgorCitpZiBbIHgiJG9zIiAhPSB4IiIgXQordGhlbgorY2FzZSAkb3MgaW4K
KwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBn
ZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyogaXMgYSBi
YXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQor
CQlvcz0tYXVyb3JhdXgKKwkJOzsKKwktc29sYXJpczEgfCAtc29sYXJpczEuKikKKwkJb3M9YGVj
aG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAorCQk7OworCS1zb2xhcmlzKQor
CQlvcz0tc29sYXJpczIKKwkJOzsKKwktc3ZyNCopCisJCW9zPS1zeXN2NAorCQk7OworCS11bml4
d2FyZSopCisJCW9zPS1zeXN2NC4ydXcKKwkJOzsKKwktZ251L2xpbnV4KikKKwkJb3M9YGVjaG8g
JG9zIHwgc2VkIC1lICdzfGdudS9saW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwkjIEZpcnN0IGFj
Y2VwdCB0aGUgYmFzaWMgc3lzdGVtIHR5cGVzLgorCSMgVGhlIHBvcnRhYmxlIHN5c3RlbXMgY29t
ZXMgZmlyc3QuCisJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2gg
YSB2ZXJzaW9uIG51bWJlci4KKwkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVz
IGxhdGVyLCBhZnRlciBzeXN2cjQuCisJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCog
fCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAorCSAgICAgIHwgLSp2bXMqIHwgLXNjbyog
fCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwK
KwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLWF1
cm9yYXV4KiB8IC1zb2xhcmlzKiBcCisJICAgICAgfCAtc3ltKiB8IC1rb3BlbnNvbGFyaXMqIFwK
KwkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3NvcyogfCAt
dW5pY29zKiB8IC1hb2YqIFwKKwkgICAgICB8IC1hb3MqIHwgLWFyb3MqIFwKKwkgICAgICB8IC1u
aW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXAor
CSAgICAgIHwgLWNsaXgqIHwgLXJpc2NvcyogfCAtdW5pcGx1cyogfCAtaXJpcyogfCAtcnR1KiB8
IC14ZW5peCogXAorCSAgICAgIHwgLWhpdXgqIHwgLTM4NmJzZCogfCAta25ldGJzZCogfCAtbWly
YnNkKiB8IC1uZXRic2QqIFwKKwkgICAgICB8IC1vcGVuYnNkKiB8IC1zb2xpZGJzZCogXAorCSAg
ICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5
bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8
IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13
aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1s
aXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwg
LWNob3J1c3JkYiogfCAtY2VnY2MqIFwKKwkgICAgICB8IC1jeWd3aW4qIHwgLW1zeXMqIHwgLXBl
KiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCisJICAgICAgfCAtbWlu
Z3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgt
bmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1t
cGVpeCogfCAtdWRrKiBcCisJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1y
aGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKwkgICAgICB8IC1vcGVuc3RlcCogfCAt
b3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKKwkgICAgICB8IC1zdG9y
bS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwKKwkgICAg
ICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCisJ
ICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13
aW5kaXNzKiBcCisJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAt
c2VpKiB8IC1kcmFnb25mbHkqIFwKKwkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3Mq
IHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyopCisJIyBSZW1lbWJlciwgZWFjaCBhbHRlcm5h
dGl2ZSBNVVNUIEVORCBJTiAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCQk7OworCS1x
bngqKQorCQljYXNlICRiYXNpY19tYWNoaW5lIGluCisJCSAgICB4ODYtKiB8IGkqODYtKikKKwkJ
CTs7CisJCSAgICAqKQorCQkJb3M9LW50byRvcworCQkJOzsKKwkJZXNhYworCQk7OworCS1udG8t
cW54KikKKwkJOzsKKwktbnRvKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8t
cW54fCdgCisJCTs7CisJLXNpbSB8IC1lczE4MDAqIHwgLWhtcyogfCAteHJheSB8IC1vczY4ayog
fCAtbm9uZSogfCAtdjg4ciogXAorCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVnIHwg
LW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogfCAtaGFpa3UqIFwKKwkgICAgICB8IC1tYWNvcyog
fCAtbXB3KiB8IC1tYWdpYyogfCAtbW1peHdhcmUqIHwgLW1vbjk2MCogfCAtbG5ld3MqKQorCQk7
OworCS1tYWMqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bWFjfG1hY29zfCdgCisJCTs7
CisJLWxpbnV4LWRpZXRsaWJjKQorCQlvcz0tbGludXgtZGlldGxpYmMKKwkJOzsKKwktbGludXgq
KQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bGludXh8bGludXgtZ251fCdgCisJCTs7CisJ
LXN1bm9zNSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczV8c29sYXJpczJ8J2AK
KwkJOzsKKwktc3Vub3M2KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNnxzb2xh
cmlzM3wnYAorCQk7OworCS1vcGVuZWQqKQorCQlvcz0tb3BlbmVkaXRpb24KKwkJOzsKKwktb3M0
MDAqKQorCQlvcz0tb3M0MDAKKwkJOzsKKwktd2luY2UqKQorCQlvcz0td2luY2UKKwkJOzsKKwkt
b3Nmcm9zZSopCisJCW9zPS1vc2Zyb3NlCisJCTs7CisJLW9zZiopCisJCW9zPS1vc2YKKwkJOzsK
KwktdXRlayopCisJCW9zPS1ic2QKKwkJOzsKKwktZHluaXgqKQorCQlvcz0tYnNkCisJCTs7CisJ
LWFjaXMqKQorCQlvcz0tYW9zCisJCTs7CisJLWF0aGVvcyopCisJCW9zPS1hdGhlb3MKKwkJOzsK
Kwktc3lsbGFibGUqKQorCQlvcz0tc3lsbGFibGUKKwkJOzsKKwktMzg2YnNkKQorCQlvcz0tYnNk
CisJCTs7CisJLWN0aXgqIHwgLXV0cyopCisJCW9zPS1zeXN2CisJCTs7CisJLW5vdmEqKQorCQlv
cz0tcnRtay1ub3ZhCisJCTs7CisJLW5zMiApCisJCW9zPS1uZXh0c3RlcDIKKwkJOzsKKwktbnNr
KikKKwkJb3M9LW5zaworCQk7OworCSMgUHJlc2VydmUgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHNp
bml4NS4KKwktc2luaXg1LiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzaW5peHxzeXN2
fCdgCisJCTs7CisJLXNpbml4KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXRwZiopCisJCW9zPS10
cGYKKwkJOzsKKwktdHJpdG9uKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJCW9zPS1z
eXN2MworCQk7OworCS1zdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJb3M9LXN5
c3YzCisJCTs7CisJLXN5c3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11c3QgY29t
ZSBhZnRlciAtc3lzdnI0LgorCS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9zZQorCQk7
OworCS1lczE4MDAqKQorCQlvcz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVuaXgKKwkJ
OzsKKwktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQlvcz0t
bWludAorCQk7OworCS1hcm9zKikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJCW9zPS1r
YW9zCisJCTs7CisJLXp2bW9lKQorCQlvcz0tenZtb2UKKwkJOzsKKwktZGljb3MqKQorCQlvcz0t
ZGljb3MKKwkJOzsKKwktbmFjbCopCisJCTs7CisJLW5vbmUpCisJCTs7CisJKikKKwkJIyBHZXQg
cmlkIG9mIHRoZSBgLScgYXQgdGhlIGJlZ2lubmluZyBvZiAkb3MuCisJCW9zPWBlY2hvICRvcyB8
IHNlZCAncy9bXi1dKi0vLydgCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzog
c3lzdGVtIFxgJG9zXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMK
K2Vsc2UKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyB0
aGF0IGNvbWUgd2l0aCB2YXJpb3VzIG1hY2hpbmVzLgorIyBUaGUgdmFsdWUgc2hvdWxkIGJlIHdo
YXQgdGhlIHZlbmRvciBjdXJyZW50bHkgc2hpcHMgb3V0IHRoZSBkb29yIHdpdGggdGhlaXIKKyMg
bWFjaGluZSBvciBwdXQgYW5vdGhlciB3YXksIHRoZSBtb3N0IHBvcHVsYXIgb3MgcHJvdmlkZWQg
d2l0aCB0aGUgbWFjaGluZS4KKworIyBOb3RlIHRoYXQgaWYgeW91J3JlIGdvaW5nIHRvIHRyeSB0
byBtYXRjaCAiLU1BTlVGQUNUVVJFUiIgaGVyZSAoc2F5LAorIyAiLXN1biIpLCB0aGVuIHlvdSBo
YXZlIHRvIHRlbGwgdGhlIGNhc2Ugc3RhdGVtZW50IHVwIHRvd2FyZHMgdGhlIHRvcAorIyB0aGF0
IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgT3RoZXJ3aXNlLCBjb2Rl
IGFib3ZlCisjIHdpbGwgc2lnbmFsIGFuIGVycm9yIHNheWluZyB0aGF0IE1BTlVGQUNUVVJFUiBp
c24ndCBhbiBvcGVyYXRpbmcKKyMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRvIHRoaXMg
cG9pbnQuCisKK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwlzY29yZS0qKQorCQlvcz0tZWxmCisJ
CTs7CisJc3B1LSopCisJCW9zPS1lbGYKKwkJOzsKKwkqLWFjb3JuKQorCQlvcz0tcmlzY2l4MS4y
CisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1pKQorCQlv
cz0tYW91dAorCQk7OworCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1
NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0
aWM2eC0qKQorCQlvcz0tY29mZgorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAq
LWRlYyBlbnRyeS4KKwlwZHAxMC0qKQorCQlvcz0tdG9wczIwCisJCTs7CisJcGRwMTEtKikKKwkJ
b3M9LW5vbmUKKwkJOzsKKwkqLWRlYyB8IHZheC0qKQorCQlvcz0tdWx0cml4NC4yCisJCTs7CisJ
bTY4Ki1hcG9sbG8pCisJCW9zPS1kb21haW4KKwkJOzsKKwlpMzg2LXN1bikKKwkJb3M9LXN1bm9z
NC4wLjIKKwkJOzsKKwltNjgwMDAtc3VuKQorCQlvcz0tc3Vub3MzCisJCSMgVGhpcyBhbHNvIGV4
aXN0cyBpbiB0aGUgY29uZmlndXJlIHByb2dyYW0sIGJ1dCB3YXMgbm90IHRoZQorCQkjIGRlZmF1
bHQuCisJCSMgb3M9LXN1bm9zNAorCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0CisJCTs7
CisJbWVwLSopCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi1jaXNjbykKKwkJb3M9LWVsZgorCQk7
OworCW1pcHMqLSopCisJCW9zPS1lbGYKKwkJOzsKKwlvcjMyLSopCisJCW9zPS1jb2ZmCisJCTs7
CisJKi10dGkpCSMgbXVzdCBiZSBiZWZvcmUgc3BhcmMgZW50cnkgb3Igd2UgZ2V0IHRoZSB3cm9u
ZyBvcy4KKwkJb3M9LXN5c3YzCisJCTs7CisJc3BhcmMtKiB8ICotc3VuKQorCQlvcz0tc3Vub3M0
LjEuMQorCQk7OworCSotYmUpCisJCW9zPS1iZW9zCisJCTs7CisJKi1oYWlrdSkKKwkJb3M9LWhh
aWt1CisJCTs7CisJKi1pYm0pCisJCW9zPS1haXgKKwkJOzsKKwkqLWtudXRoKQorCQlvcz0tbW1p
eHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkKKwkJ
b3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkKKwkJ
b3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0qIHwg
Ki1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQorCQlv
cz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJCW9z
PS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNjdXIp
CisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkqLW5l
eHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJOzsK
KwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7CisJ
aTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7
CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJzZAor
CQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4CisJ
CTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlvcz0t
cnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhwdgor
CQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNvZmYK
KwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9LW1p
bnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdlIGhh
bmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwgYnV0
IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFjdHVy
ZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93bikK
KwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7CisJ
CQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCopCisJCQkJ
dmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsKKwkJ
CS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5kb3I9
aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS11
bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9yPWRn
CisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdlbml4
KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2ZW5k
b3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQkt
cHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5kb3I9
aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJdmVu
ZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJ
LWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3MqKQor
CQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlO
VCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikKKwkJ
CQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAk
YmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMKKwor
ZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZh
bDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1w
LXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAy
ZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLXIgODcyMThiZDM2N2JlIC1y
IGNjZGY5ZWQ4YTkxNCB0b29scy9jb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvY29uZmlndXJlCU1vbiBGZWIgMjAgMTg6MjA6
MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDEwNDI5IEBACisjISAvYmluL3NoCisjIEd1ZXNzIHZh
bHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMu
CisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgWGVuIEh5cGVydmlzb3IgNC4y
LgorIworIyBSZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhlbnNvdXJjZS5jb20+Lgor
IworIworIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgs
IDE5OTksIDIwMDAsIDIwMDEsCisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisjCisj
CisjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRp
c3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBN
NHNoIEluaXRpYWxpemF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBC
ZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBm
b3IgTUtTIHNoCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNo
KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAj
IFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwg
d2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVy
ZS4KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCisgIHNldG9wdCBOT19HTE9CX1NVQlNU
CitlbHNlCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKAorICAqcG9zaXgqKSA6
CisgICAgc2V0IC1vIHBvc2l4IDs7ICMoCisgICopIDoKKyAgICAgOzsKK2VzYWMKK2ZpCisKKwor
YXNfbmw9JworJworZXhwb3J0IGFzX25sCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hl
cyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgorYXNfZWNobz0nXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRh
c19lY2hvJGFzX2VjaG8kYXNfZWNobworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8k
YXNfZWNobyRhc19lY2hvJGFzX2VjaG8KKyMgUHJlZmVyIGEga3NoIHNoZWxsIGJ1aWx0aW4gb3Zl
ciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLAorIyBidXQgd2l0aG91dCB3
YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KK2lmIHRlc3QgLXogIiRCQVNIX1ZFUlNJT04k
WlNIX1ZFUlNJT04iIFwKKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAtLSAkYXNfZWNob2AiID0g
IlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJwor
ICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKK2VsaWYgKHRlc3QgIlhgcHJpbnRmICVzICRhc19l
Y2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfZWNobz0ncHJpbnRm
ICVzXG4nCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJworZWxzZQorICBpZiB0ZXN0ICJYYCgvdXNy
L3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7
IHRoZW4KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEkYXNfbmwi
JworICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKKyAgZWxzZQorICAgIGFzX2VjaG9f
Ym9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCisgICAgYXNfZWNob19uX2JvZHk9
J2V2YWwKKyAgICAgIGFyZz0kMTsKKyAgICAgIGNhc2UgJGFyZyBpbiAjKAorICAgICAgKiIkYXNf
bmwiKikKKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKKwlhcmc9YGV4cHIgIlgk
YXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OworICAgICAgZXNhYzsKKyAgICAgIGV4cHIgIlgk
YXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKKyAgICAnCisgICAgZXhwb3J0IGFz
X2VjaG9fbl9ib2R5CisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNo
bycKKyAgZmkKKyAgZXhwb3J0IGFzX2VjaG9fYm9keQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNo
b19ib2R5IGFzX2VjaG8nCitmaQorCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRl
c3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgIFBBVEhfU0VQQVJBVE9S
PToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxs
IDI+JjEgJiYgeworICAgIChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikg
Pi9kZXYvbnVsbCAyPiYxIHx8CisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycKKyAgfQorZmkKKwor
CisjIElGUworIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkg
dGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20g
Y29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgorIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNh
bGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkCisjIHNwbGl0dGluZyBi
eSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCitJRlM9IiAiIgkkYXNfbmwiCisKKyMgRmlu
ZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9y
eSBzZXBhcmF0b3IuCithc19teXNlbGY9CitjYXNlICQwIGluICMoKAorICAqW1xcL10qICkgYXNf
bXlzZWxmPSQwIDs7CisgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK
K2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAi
JGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNl
bGY9JGFzX2Rpci8kMCAmJiBicmVhaworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgICAg
OzsKK2VzYWMKKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3
ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKKyMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJl
IGZvdW5kIGluIHRoZSBwYXRoLgoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgorICBh
c19teXNlbGY9JDAKK2ZpCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCisgICRhc19l
Y2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFu
IGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCisgIGV4aXQgMQorZmkKKworIyBVbnNldCB2YXJpYWJs
ZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbgorIyBw
cmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRo
ZSAifHwgZXhpdCAxIgorIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNz
YWdlIHRoZXJlLiAgJygoJyBjb3VsZAorIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUuMi4xNC4K
K2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKK2RvIGV2YWwgdGVzdCB4
XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCisgICYmICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQg
MSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwgOgorZG9uZQorUFMxPSckICcK
K1BTMj0nPiAnCitQUzQ9JysgJworCisjIE5MUyBudWlzYW5jZXMuCitMQ19BTEw9QworZXhwb3J0
IExDX0FMTAorTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFCisKKyMgQ0RQQVRILgorKHVuc2V0
IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCitpZiB0ZXN0ICJ4JENP
TkZJR19TSEVMTCIgPSB4OyB0aGVuCisgIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0IC1u
IFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7
IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFByZS00LjIgdmVyc2lvbnMg
b2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCisgICMgaXMg
Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCisgIGFsaWFzIC1n
ICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicKKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKK2Vsc2UK
KyAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygKKyAgKnBvc2l4KikgOgorICAg
IHNldCAtbyBwb3NpeCA7OyAjKAorICAqKSA6CisgICAgIDs7Citlc2FjCitmaQorIgorICBhc19y
ZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQorYXNfZm5fc3VjY2VzcyAo
KSB7IGFzX2ZuX3JldHVybiAwOyB9Cithc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0dXJuIDE7
IH0KK2FzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0KK2FzX2ZuX3JldF9mYWlsdXJl
ICgpIHsgcmV0dXJuIDE7IH0KKworZXhpdGNvZGU9MAorYXNfZm5fc3VjY2VzcyB8fCB7IGV4aXRj
b2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9Cithc19mbl9mYWlsdXJlICYmIHsg
ZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KK2FzX2ZuX3JldF9z
dWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfc3VjY2VzcyBmYWlsZWQuOyB9
Cithc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X2ZhaWx1
cmUgc3VjY2VlZGVkLjsgfQoraWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0
IHggPSBcIlwkMVwiICk7IHRoZW4gOgorCitlbHNlCisgIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRp
b25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLgorZmkKK3Rlc3QgeFwkZXhpdGNvZGUgPSB4
MCB8fCBleGl0IDEiCisgIGFzX3N1Z2dlc3RlZD0iICBhc19saW5lbm9fMT0iO2FzX3N1Z2dlc3Rl
ZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGlu
ZW5vXzFhPVwkTElORU5PCisgIGFzX2xpbmVub18yPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0
ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9XCRMSU5F
Tk8KKyAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwieFwkYXNf
bGluZW5vXzInXCRhc19ydW4nXCIgJiYKKyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdc
JGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4aXQg
MQordGVzdCBcJCgoIDEgKyAxICkpID0gMiB8fCBleGl0IDEiCisgIGlmIChldmFsICIkYXNfcmVx
dWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCitlbHNl
CisgIGFzX2hhdmVfcmVxdWlyZWQ9bm8KK2ZpCisgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVk
ID0geHllcyAmJiAoZXZhbCAiJGFzX3N1Z2dlc3RlZCIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKwor
ZWxzZQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCithc19mb3VuZD1m
YWxzZQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4kUEFUSF9TRVBB
UkFUT1IkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAm
JiBhc19kaXI9LgorICBhc19mb3VuZD06CisgIGNhc2UgJGFzX2RpciBpbiAjKAorCSAvKikKKwkg
ICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCisJICAgICAjIFRyeSBvbmx5IHNo
ZWxscyB0aGF0IGV4aXN0LCB0byBzYXZlIHNldmVyYWwgZm9ya3MuCisJICAgICBhc19zaGVsbD0k
YXNfZGlyLyRhc19iYXNlCisJICAgICBpZiB7IHRlc3QgLWYgIiRhc19zaGVsbCIgfHwgdGVzdCAt
ZiAiJGFzX3NoZWxsLmV4ZSI7IH0gJiYKKwkJICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29t
cGF0aWJsZSIiJGFzX3JlcXVpcmVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9u
dWxsOyB0aGVuIDoKKyAgQ09ORklHX1NIRUxMPSRhc19zaGVsbCBhc19oYXZlX3JlcXVpcmVkPXll
cworCQkgICBpZiB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19zdWdnZXN0
ZWQiIHwgYXNfcnVuPWEgIiRhc19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgorICBicmVh
ayAyCitmaQorZmkKKwkgICBkb25lOzsKKyAgICAgICBlc2FjCisgIGFzX2ZvdW5kPWZhbHNlCitk
b25lCiskYXNfZm91bmQgfHwgeyBpZiB7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNI
RUxMLmV4ZSI7IH0gJiYKKwkgICAgICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUi
IiRhc19yZXF1aXJlZCIgfCBhc19ydW49YSAiJFNIRUxMIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6
CisgIENPTkZJR19TSEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKK2ZpOyB9CitJRlM9
JGFzX3NhdmVfSUZTCisKKworICAgICAgaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiICE9IHg7IHRo
ZW4gOgorICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZl
IHRvIHByb3ZpZGUgYQorCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0
IHVuc2V0OyBhbmQgdGhpcyBhbHNvCisJIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90
IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKwkjIFByZXNlcnZlIC12IGFuZCAteCB0byB0
aGUgcmVwbGFjZW1lbnQgc2hlbGwuCisJQkFTSF9FTlY9L2Rldi9udWxsCisJRU5WPS9kZXYvbnVs
bAorCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVO
VgorCWV4cG9ydCBDT05GSUdfU0hFTEwKKwljYXNlICQtIGluICMgKCgoKAorCSAgKnYqeCogfCAq
eCp2KiApIGFzX29wdHM9LXZ4IDs7CisJICAqdiogKSBhc19vcHRzPS12IDs7CisJICAqeCogKSBh
c19vcHRzPS14IDs7CisJICAqICkgYXNfb3B0cz0gOzsKKwllc2FjCisJZXhlYyAiJENPTkZJR19T
SEVMTCIgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQorZmkKKworICAgIGlmIHRlc3Qg
eCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKKyAgJGFzX2VjaG8gIiQwOiBUaGlzIHNj
cmlwdCByZXF1aXJlcyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRoYW4gYWxsIgorICAkYXNfZWNobyAi
JDA6IHRoZSBzaGVsbHMgdGhhdCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiIKKyAgaWYgdGVzdCB4
JHtaU0hfVkVSU0lPTitzZXR9ID0geHNldCA7IHRoZW4KKyAgICAkYXNfZWNobyAiJDA6IEluIHBh
cnRpY3VsYXIsIHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCIKKyAgICAkYXNf
ZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iCisgIGVsc2UKKyAg
ICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFuZAorJDA6
IHhlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tIGFib3V0IHlvdXIgc3lzdGVtLAorJDA6IGlu
Y2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzCiskMDogbWVzc2Fn
ZS4gVGhlbiBpbnN0YWxsIGEgbW9kZXJuIHNoZWxsLCBvciBtYW51YWxseSBydW4KKyQwOiB0aGUg
c2NyaXB0IHVuZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuIgorICBmaQorICBl
eGl0IDEKK2ZpCitmaQorZmkKK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CitleHBvcnQg
U0hFTEwKKyMgVW5zZXQgbW9yZSB2YXJpYWJsZXMga25vd24gdG8gaW50ZXJmZXJlIHdpdGggYmVo
YXZpb3Igb2YgY29tbW9uIHRvb2xzLgorQ0xJQ09MT1JfRk9SQ0U9IEdSRVBfT1BUSU9OUz0KK3Vu
c2V0IENMSUNPTE9SX0ZPUkNFIEdSRVBfT1BUSU9OUworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0gIyMKKyMjIE00c2ggU2hlbGwgRnVuY3Rpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICMjCisjIGFzX2ZuX3Vuc2V0IFZBUgorIyAtLS0tLS0tLS0tLS0tLS0KKyMgUG9ydGFibHkg
dW5zZXQgVkFSLgorYXNfZm5fdW5zZXQgKCkKK3sKKyAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQor
fQorYXNfdW5zZXQ9YXNfZm5fdW5zZXQKKworIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUworIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtp
bmcuCithc19mbl9zZXRfc3RhdHVzICgpCit7CisgIHJldHVybiAkMQorfSAjIGFzX2ZuX3NldF9z
dGF0dXMKKworIyBhc19mbl9leGl0IFNUQVRVUworIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBFeGl0
IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUiIGNv
bnRleHQuCithc19mbl9leGl0ICgpCit7CisgIHNldCArZQorICBhc19mbl9zZXRfc3RhdHVzICQx
CisgIGV4aXQgJDEKK30gIyBhc19mbl9leGl0CisKKyMgYXNfZm5fbWtkaXJfcAorIyAtLS0tLS0t
LS0tLS0tCisjIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJl
bnRzIGlmIG5lY2Vzc2FyeS4KK2FzX2ZuX21rZGlyX3AgKCkKK3sKKworICBjYXNlICRhc19kaXIg
aW4gIygKKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7OworICBlc2FjCisgIHRlc3QgLWQgIiRhc19k
aXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgeworICAgIGFzX2RpcnM9CisgICAgd2hpbGUgOjsg
ZG8KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2Vj
aG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCisgICAgICAqKSBh
c19xZGlyPSRhc19kaXI7OworICAgICAgZXNhYworICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAk
YXNfZGlycyIKKyAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19kaXIiIHx8CiskYXNf
ZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgi
JGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcg
XHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2Vj
aG8gWCIkYXNfZGlyIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyok
L3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkg
ICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLwor
CSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9
CisJICBzLy4qLy4vOyBxJ2AKKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCisgICAg
ZG9uZQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKKyAg
fSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBk
aXJlY3RvcnkgJGFzX2RpciIKKworCit9ICMgYXNfZm5fbWtkaXJfcAorIyBhc19mbl9hcHBlbmQg
VkFSIFZBTFVFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIHRoZSB0ZXh0IGlu
IFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFr
ZQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9y
dGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2Yg
dGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCisjIGltcGxlbWVu
dGF0aW9ucy4KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9
IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCisgIHsK
KyAgICBldmFsICQxKz1cJDIKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXBwZW5kICgpCisgIHsKKyAg
ICBldmFsICQxPVwkJDFcJDIKKyAgfQorZmkgIyBhc19mbl9hcHBlbmQKKworIyBhc19mbl9hcml0
aCBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFs
dWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKKyMgZ2xvYmFs
ICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4g
VGhlIGFyZ3VtZW50cworIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4K
K2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgor
ICBldmFsICdhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPSQoKCAkKiApKQorICB9Jwor
ZWxzZQorICBhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVz
dCAkPyAtZXEgMWAKKyAgfQorZmkgIyBhc19mbl9hcml0aAorCisKKyMgYXNfZm5fZXJyb3IgU1RB
VFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBz
dGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQg
dGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCisj
IHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorYXNfZm5fZXJyb3Ig
KCkKK3sKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVz
PTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9
IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAorICBm
aQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgorICBhc19mbl9leGl0ICRhc19z
dGF0dXMKK30gIyBhc19mbl9lcnJvcgorCitpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwg
Mj4mMSAmJgorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRo
ZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK2lmIChiYXNl
bmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFg
IiA9ICJYLyI7IHRoZW4KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKK2Vsc2UKKyAgYXNfYmFzZW5h
bWU9ZmFsc2UKK2ZpCisKK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19k
aXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc19kaXJuYW1lPWRpcm5hbWUKK2Vs
c2UKKyAgYXNfZGlybmFtZT1mYWxzZQorZmkKKworYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAi
IHx8CiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAorCSBYIiQw
IiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwg
fHwKKyRhc19lY2hvIFgvIiQwIiB8CisgICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97
CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cL1wpJC97CisJICAgIHMv
L1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAg
IHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJh
Y3RlciBSYW5nZXMuCithc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicK
K2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJworYXNfY3JfTGV0dGVy
cz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODkn
Cithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKKworCisgIGFzX2xpbmVu
b18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8KKyAgYXNfbGluZW5vXzI9JExJTkVOTyBh
c19saW5lbm9fMmE9JExJTkVOTworICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4n
IiAhPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKKyAgdGVzdCAieGBleHByICRhc19saW5l
bm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgeworICAj
IEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkK
KyAgc2VkIC1uICcKKyAgICBwCisgICAgL1skXUxJTkVOTy89CisgICcgPCRhc19teXNlbGYgfAor
ICAgIHNlZCAnCisgICAgICBzL1skXUxJTkVOTy4qLyYtLworICAgICAgdCBsaW5lbm8KKyAgICAg
IGIKKyAgICAgIDpsaW5lbm8KKyAgICAgIE4KKyAgICAgIDpsb29wCisgICAgICBzL1skXUxJTkVO
T1woW14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KKyAgICAgIHQgbG9vcAor
ICAgICAgcy8tXG4uKi8vCisgICAgJyA+JGFzX21lLmxpbmVubyAmJgorICBjaG1vZCAreCAiJGFz
X21lLmxpbmVubyIgfHwKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3Jl
YXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBhc19mbl9l
eGl0IDE7IH0KKworICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1
c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcworICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5v
dCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKKyAgIyBvcmlnaW5hbCBhbmQgc28g
b24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4KKyAgLiAiLi8k
YXNfbWUubGluZW5vIgorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3QgY29tbWFu
ZC4KKyAgZXhpdAorfQorCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQorY2FzZSBgZWNobyAtbiB4
YCBpbiAjKCgoKCgKKy1uKikKKyAgY2FzZSBgZWNobyAneHlcYydgIGluCisgICpjKikgRUNIT19U
PScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgorICB4eSkgIEVDSE9fQz0n
XGMnOzsKKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVs
bAorICAgICAgIEVDSE9fVD0nCSc7OworICBlc2FjOzsKKyopCisgIEVDSE9fTj0nLW4nOzsKK2Vz
YWMKKworcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKK2lmIHRlc3QgLWQgY29u
ZiQkLmRpcjsgdGhlbgorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlCitlbHNlCisgIHJt
IC1mIGNvbmYkJC5kaXIKKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorZmkKK2lmIChl
Y2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KKyAgaWYgbG4gLXMgY29uZiQkLmZp
bGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz0nbG4gLXMnCisgICAgIyAu
Li4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxu
IC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgorICAgICMgMikgREpHUFAgPCAy
LjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxl
LgorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuCisg
ICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYg
Y29uZiQkLmV4ZSB8fAorICAgICAgYXNfbG5fcz0nY3AgLXAnCisgIGVsaWYgbG4gY29uZiQkLmZp
bGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz1sbgorICBlbHNlCisgICAg
YXNfbG5fcz0nY3AgLXAnCisgIGZpCitlbHNlCisgIGFzX2xuX3M9J2NwIC1wJworZmkKK3JtIC1m
IGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKK3Jt
ZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKKworaWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsg
dGhlbgorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRlc3QgLWQg
Li8tcCAmJiBybWRpciAuLy1wCisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKK2lmIHRlc3QgLXgg
LyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdGVzdF94PSd0ZXN0IC14JworZWxzZQorICBp
ZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBhc19sc19MX29wdGlvbj1MCisg
IGVsc2UKKyAgICBhc19sc19MX29wdGlvbj0KKyAgZmkKKyAgYXNfdGVzdF94PScKKyAgICBldmFs
IHNoIC1jICdcJycKKyAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorCXRlc3QgLWQgIiQxLy4i
OworICAgICAgZWxzZQorCWNhc2UgJDEgaW4gIygKKwktKilzZXQgIi4vJDEiOzsKKwllc2FjOwor
CWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKAor
CT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkKKyAgICAnXCcnIHNoCisgICcKK2ZpCithc19l
eGVjdXRhYmxlX3A9JGFzX3Rlc3RfeAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmlu
ZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3Jf
bGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisjIFNl
ZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4K
K2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisK
KwordGVzdCAtbiAiJERKRElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAorZXhlYyA2PiYxCisK
KyMgTmFtZSBvZiB0aGUgaG9zdC4KKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIs
IG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKKyMgc28gdW5hbWUg
Z2V0cyBydW4gdG9vLgorYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2
L251bGwgfCBzZWQgMXFgCisKKyMKKyMgSW5pdGlhbGl6YXRpb25zLgorIworYWNfZGVmYXVsdF9w
cmVmaXg9L3Vzci9sb2NhbAorYWNfY2xlYW5fZmlsZXM9CithY19jb25maWdfbGlib2JqX2Rpcj0u
CitMSUJPQkpTPQorY3Jvc3NfY29tcGlsaW5nPW5vCitzdWJkaXJzPQorTUZMQUdTPQorTUFLRUZM
QUdTPQorCisjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KK1BBQ0tBR0VfTkFNRT0nWGVuIEh5
cGVydmlzb3InCitQQUNLQUdFX1RBUk5BTUU9J3hlbi1oeXBlcnZpc29yJworUEFDS0FHRV9WRVJT
SU9OPSc0LjInCitQQUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgNC4yJworUEFDS0FHRV9C
VUdSRVBPUlQ9J3hlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tJworUEFDS0FHRV9VUkw9JycK
KworYWNfdW5pcXVlX2ZpbGU9ImxpYnhsL2xpYnhsLmMiCithY19kZWZhdWx0X3ByZWZpeD0vdXNy
CisjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCithY19pbmNsdWRl
c19kZWZhdWx0PSJcCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NZU19UWVBFU19I
CisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU1RBVF9I
CisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZmRlZiBTVERDX0hFQURFUlMKKyMg
aW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYg
SEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNp
ZmRlZiBIQVZFX1NUUklOR19ICisjIGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVk
IEhBVkVfTUVNT1JZX0gKKyMgIGluY2x1ZGUgPG1lbW9yeS5oPgorIyBlbmRpZgorIyBpbmNsdWRl
IDxzdHJpbmcuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1RSSU5HU19ICisjIGluY2x1ZGUgPHN0
cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorIyBpbmNsdWRlIDxpbnR0
eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVERJTlRfSAorIyBpbmNsdWRlIDxzdGRpbnQu
aD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+Cisj
ZW5kaWYiCisKK2FjX2hlYWRlcl9saXN0PQorYWNfZnVuY19saXN0PQorYWNfc3Vic3RfdmFycz0n
TFRMSUJPQkpTCitQT1dfTElCCitMSUJPQkpTCitBTExPQ0EKK2xpYmljb252CitsaWJnY3J5cHQK
K2xpYmV4dDJmcworc3lzdGVtX2FpbworTElCX1BBVEgKK2dsaWJfTElCUworZ2xpYl9DRkxBR1MK
K1BLR19DT05GSUdfTElCRElSCitQS0dfQ09ORklHX1BBVEgKK1BLR19DT05GSUcKK1ZOQ09ORklH
CitIT1RQTFVHCitVREVWSU5GTworVURFVkFETQorUFlUSE9OUEFUSAorT0NBTUxCVUlMRAorT0NB
TUxET0MKK09DQU1MTUtMSUIKK09DQU1MTUtUT1AKK09DQU1MREVQCitPQ0FNTAorT0NBTUxPUFRE
T1RPUFQKK09DQU1MQ0RPVE9QVAorT0NBTUxCRVNUCitPQ0FNTE9QVAorT0NBTUxMSUIKK09DQU1M
VkVSU0lPTgorT0NBTUxDCitJTlNUQUxMX0RBVEEKK0lOU1RBTExfU0NSSVBUCitJTlNUQUxMX1BS
T0dSQU0KK1NFVF9NQUtFCitMTl9TCitTRUQKK1hHRVRURVhUCitCQVNICitYTUwKK0NVUkwKK0ZM
RVgKK0JJU09OCitJUAorQlJDVEwKK1BFUkwKK1BZVEhPTgorQVBQRU5EX0xJQgorQVBQRU5EX0lO
Q0xVREVTCitQUkVQRU5EX0xJQgorUFJFUEVORF9JTkNMVURFUworZGVidWcKK2xvbW91bnQKK21p
bml0ZXJtCitvY2FtbHRvb2xzCitweXRob250b29scworeGFwaQordnRwbQorbW9uaXRvcnMKK2dp
dGh0dHAKK3hzbQoraG9zdF9vcworaG9zdF92ZW5kb3IKK2hvc3RfY3B1Citob3N0CitidWlsZF9v
cworYnVpbGRfdmVuZG9yCitidWlsZF9jcHUKK2J1aWxkCitFR1JFUAorR1JFUAorQ1BQCitPQkpF
WFQKK0VYRUVYVAorYWNfY3RfQ0MKK0NQUEZMQUdTCitMREZMQUdTCitDRkxBR1MKK0NDCit0YXJn
ZXRfYWxpYXMKK2hvc3RfYWxpYXMKK2J1aWxkX2FsaWFzCitMSUJTCitFQ0hPX1QKK0VDSE9fTgor
RUNIT19DCitERUZTCittYW5kaXIKK2xvY2FsZWRpcgorbGliZGlyCitwc2RpcgorcGRmZGlyCitk
dmlkaXIKK2h0bWxkaXIKK2luZm9kaXIKK2RvY2Rpcgorb2xkaW5jbHVkZWRpcgoraW5jbHVkZWRp
cgorbG9jYWxzdGF0ZWRpcgorc2hhcmVkc3RhdGVkaXIKK3N5c2NvbmZkaXIKK2RhdGFkaXIKK2Rh
dGFyb290ZGlyCitsaWJleGVjZGlyCitzYmluZGlyCitiaW5kaXIKK3Byb2dyYW1fdHJhbnNmb3Jt
X25hbWUKK3ByZWZpeAorZXhlY19wcmVmaXgKK1BBQ0tBR0VfVVJMCitQQUNLQUdFX0JVR1JFUE9S
VAorUEFDS0FHRV9TVFJJTkcKK1BBQ0tBR0VfVkVSU0lPTgorUEFDS0FHRV9UQVJOQU1FCitQQUNL
QUdFX05BTUUKK1BBVEhfU0VQQVJBVE9SCitTSEVMTCcKK2FjX3N1YnN0X2ZpbGVzPScnCithY191
c2VyX29wdHM9JworZW5hYmxlX29wdGlvbl9jaGVja2luZworZW5hYmxlX3hzbQorZW5hYmxlX2dp
dGh0dHAKK2VuYWJsZV9tb25pdG9ycworZW5hYmxlX3Z0cG0KK2VuYWJsZV94YXBpCitlbmFibGVf
cHl0aG9udG9vbHMKK2VuYWJsZV9vY2FtbHRvb2xzCitlbmFibGVfbWluaXRlcm0KK2VuYWJsZV9s
b21vdW50CitlbmFibGVfZGVidWcKKycKKyAgICAgIGFjX3ByZWNpb3VzX3ZhcnM9J2J1aWxkX2Fs
aWFzCitob3N0X2FsaWFzCit0YXJnZXRfYWxpYXMKK0NDCitDRkxBR1MKK0xERkxBR1MKK0xJQlMK
K0NQUEZMQUdTCitDUFAKK1BSRVBFTkRfSU5DTFVERVMKK1BSRVBFTkRfTElCCitBUFBFTkRfSU5D
TFVERVMKK0FQUEVORF9MSUIKK1BZVEhPTgorUEVSTAorQlJDVEwKK0lQCitCSVNPTgorRkxFWAor
Q1VSTAorWE1MCitCQVNICitYR0VUVEVYVAorUEtHX0NPTkZJRworUEtHX0NPTkZJR19QQVRICitQ
S0dfQ09ORklHX0xJQkRJUgorZ2xpYl9DRkxBR1MKK2dsaWJfTElCUycKKworCisjIEluaXRpYWxp
emUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuCithY19pbml0X2hlbHA9CithY19pbml0
X3ZlcnNpb249ZmFsc2UKK2FjX3VucmVjb2duaXplZF9vcHRzPQorYWNfdW5yZWNvZ25pemVkX3Nl
cD0KKyMgVGhlIHZhcmlhYmxlcyBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3
aXRoCisjIGRhc2hlcyBjaGFuZ2VkIHRvIHVuZGVybGluZXMuCitjYWNoZV9maWxlPS9kZXYvbnVs
bAorZXhlY19wcmVmaXg9Tk9ORQorbm9fY3JlYXRlPQorbm9fcmVjdXJzaW9uPQorcHJlZml4PU5P
TkUKK3Byb2dyYW1fcHJlZml4PU5PTkUKK3Byb2dyYW1fc3VmZml4PU5PTkUKK3Byb2dyYW1fdHJh
bnNmb3JtX25hbWU9cyx4LHgsCitzaWxlbnQ9CitzaXRlPQorc3JjZGlyPQordmVyYm9zZT0KK3hf
aW5jbHVkZXM9Tk9ORQoreF9saWJyYXJpZXM9Tk9ORQorCisjIEluc3RhbGxhdGlvbiBkaXJlY3Rv
cnkgb3B0aW9ucy4KKyMgVGhlc2UgYXJlIGxlZnQgdW5leHBhbmRlZCBzbyB1c2VycyBjYW4gIm1h
a2UgaW5zdGFsbCBleGVjX3ByZWZpeD0vZm9vIgorIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhh
dCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFzZWQgb24gZXhlY19wcmVmaXgKKyMgYnkgZGVmYXVsdCB3
aWxsIGFjdHVhbGx5IGNoYW5nZS4KKyMgVXNlIGJyYWNlcyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNh
dXNlIHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0IHRoZW0uCisjIChUaGUgbGlzdCBmb2xsb3dz
IHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkcy4pCitiaW5kaXI9JyR7
ZXhlY19wcmVmaXh9L2JpbicKK3NiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nCitsaWJleGVj
ZGlyPScke2V4ZWNfcHJlZml4fS9saWJleGVjJworZGF0YXJvb3RkaXI9JyR7cHJlZml4fS9zaGFy
ZScKK2RhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9Jworc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycK
K3NoYXJlZHN0YXRlZGlyPScke3ByZWZpeH0vY29tJworbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9
L3ZhcicKK2luY2x1ZGVkaXI9JyR7cHJlZml4fS9pbmNsdWRlJworb2xkaW5jbHVkZWRpcj0nL3Vz
ci9pbmNsdWRlJworZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdFX1RBUk5BTUV9
JworaW5mb2Rpcj0nJHtkYXRhcm9vdGRpcn0vaW5mbycKK2h0bWxkaXI9JyR7ZG9jZGlyfScKK2R2
aWRpcj0nJHtkb2NkaXJ9JworcGRmZGlyPScke2RvY2Rpcn0nCitwc2Rpcj0nJHtkb2NkaXJ9Jwor
bGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInCitsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xv
Y2FsZScKK21hbmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJworCithY19wcmV2PQorYWNfZGFzaGRh
c2g9Citmb3IgYWNfb3B0aW9uCitkbworICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMg
YW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KKyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisg
ICAgZXZhbCAkYWNfcHJldj1cJGFjX29wdGlvbgorICAgIGFjX3ByZXY9CisgICAgY29udGludWUK
KyAgZmkKKworICBjYXNlICRhY19vcHRpb24gaW4KKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJY
JGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7Owor
ICAqKSAgICBhY19vcHRhcmc9eWVzIDs7CisgIGVzYWMKKworICAjIEFjY2VwdCB0aGUgaW1wb3J0
YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgor
CisgIGNhc2UgJGFjX2Rhc2hkYXNoJGFjX29wdGlvbiBpbgorICAtLSkKKyAgICBhY19kYXNoZGFz
aD15ZXMgOzsKKworICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1i
aW4gfCAtLWJpKQorICAgIGFjX3ByZXY9YmluZGlyIDs7CisgIC1iaW5kaXI9KiB8IC0tYmluZGly
PSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSogfCAtLWJpPSopCisgICAgYmluZGly
PSRhY19vcHRhcmcgOzsKKworICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAt
LWJ1KQorICAgIGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsKKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSog
fCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAtLWJ1PSopCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFy
ZyA7OworCisgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNh
Y2hlLWZpIFwKKyAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAt
LWNhYyB8IC0tY2EgfCAtLWMpCisgICAgYWNfcHJldj1jYWNoZV9maWxlIDs7CisgIC1jYWNoZS1m
aWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAor
ICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1j
YWM9KiB8IC0tY2E9KiB8IC0tYz0qKQorICAgIGNhY2hlX2ZpbGU9JGFjX29wdGFyZyA7OworCisg
IC0tY29uZmlnLWNhY2hlIHwgLUMpCisgICAgY2FjaGVfZmlsZT1jb25maWcuY2FjaGUgOzsKKwor
ICAtZGF0YWRpciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCkKKyAgICBhY19wcmV2
PWRhdGFkaXIgOzsKKyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0t
ZGF0YWQ9KikKKyAgICBkYXRhZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGF0YXJvb3RkaXIgfCAt
LWRhdGFyb290ZGlyIHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwK
KyAgfCAtLWRhdGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpCisgICAgYWNfcHJldj1kYXRhcm9v
dGRpciA7OworICAtZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3Rk
aT0qIHwgLS1kYXRhcm9vdGQ9KiBcCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAt
LWRhdGFybz0qIHwgLS1kYXRhcj0qKQorICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsKKwor
ICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19v
cHRpb24iIDogJ3gtKmRpc2FibGUtXCguKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFy
ZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0
IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vy
cm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9w
dF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0
IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAg
KiIKKyJlbmFibGVfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXpl
ZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZGlzYWJs
ZS0kYWNfdXNlcm9wdF9vcmlnIgorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OworICAgIGVz
YWMKKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1ubyA7OworCisgIC1kb2NkaXIgfCAtLWRv
Y2RpciB8IC0tZG9jZGkgfCAtLWRvYyB8IC0tZG8pCisgICAgYWNfcHJldj1kb2NkaXIgOzsKKyAg
LWRvY2Rpcj0qIHwgLS1kb2NkaXI9KiB8IC0tZG9jZGk9KiB8IC0tZG9jPSogfCAtLWRvPSopCisg
ICAgZG9jZGlyPSRhY19vcHRhcmcgOzsKKworICAtZHZpZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRp
IHwgLS1kdmlkIHwgLS1kdmkgfCAtLWR2KQorICAgIGFjX3ByZXY9ZHZpZGlyIDs7CisgIC1kdmlk
aXI9KiB8IC0tZHZpZGlyPSogfCAtLWR2aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZpPSogfCAtLWR2
PSopCisgICAgZHZpZGlyPSRhY19vcHRhcmcgOzsKKworICAtZW5hYmxlLSogfCAtLWVuYWJsZS0q
KQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1d
KlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFi
bGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51
bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUg
bmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAg
YWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAor
ICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQi
CisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVk
X29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZW5hYmxlLSRhY191c2Vyb3B0X29yaWciCisJIGFj
X3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwgZW5hYmxlXyRhY191
c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CisKKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8
IC0tZXhlYy1wcmVmaXggfCAtLWV4ZWMtcHJlZmkgXAorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVj
LXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCisgIHwgLS1leGVjIHwgLS1l
eGUgfCAtLWV4KQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsKKyAgLWV4ZWMtcHJlZml4PSog
fCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCisg
IHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9
KiB8IC0tZXhlYy09KiBcCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorICAgIGV4
ZWNfcHJlZml4PSRhY19vcHRhcmcgOzsKKworICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQor
ICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgtZ2FzLgorICAgIHdpdGhfZ2FzPXllcyA7OworCisg
IC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpCisgICAgYWNfaW5pdF9oZWxwPWxv
bmcgOzsKKyAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIq
KQorICAgIGFjX2luaXRfaGVscD1yZWN1cnNpdmUgOzsKKyAgLWhlbHA9cyogfCAtLWhlbHA9cyog
fCAtLWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7Owor
CisgIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQorICAgIGFjX3ByZXY9aG9zdF9hbGlh
cyA7OworICAtaG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQorICAgIGhvc3Rf
YWxpYXM9JGFjX29wdGFyZyA7OworCisgIC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1odG1sZGkg
fCAtLWh0bWxkIHwgLS1odG1sIHwgLS1odG0gfCAtLWh0KQorICAgIGFjX3ByZXY9aHRtbGRpciA7
OworICAtaHRtbGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0bWxkaT0qIHwgLS1odG1sZD0qIHwg
LS1odG1sPSogfCAtLWh0bT0qIFwKKyAgfCAtLWh0PSopCisgICAgaHRtbGRpcj0kYWNfb3B0YXJn
IDs7CisKKyAgLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5j
bHVkZWQgfCAtLWluY2x1ZGUgXAorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0t
aW5jKQorICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7OworICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNs
dWRlZGlyPSogfCAtLWluY2x1ZGVkaT0qIHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAor
ICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCisgICAgaW5j
bHVkZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9k
aSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikKKyAgICBhY19wcmV2PWluZm9kaXIgOzsKKyAg
LWluZm9kaXI9KiB8IC0taW5mb2Rpcj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5m
bz0qIHwgLS1pbmY9KikKKyAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZGlyIHwg
LS1saWJkaXIgfCAtLWxpYmRpIHwgLS1saWJkKQorICAgIGFjX3ByZXY9bGliZGlyIDs7CisgIC1s
aWJkaXI9KiB8IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikKKyAgICBsaWJkaXI9
JGFjX29wdGFyZyA7OworCisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVj
ZGkgfCAtLWxpYmV4ZWNkIHwgLS1saWJleGVjIFwKKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAt
LWxpYmUpCisgICAgYWNfcHJldj1saWJleGVjZGlyIDs7CisgIC1saWJleGVjZGlyPSogfCAtLWxp
YmV4ZWNkaXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBc
CisgIHwgLS1saWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQorICAgIGxpYmV4ZWNkaXI9
JGFjX29wdGFyZyA7OworCisgIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkg
fCAtLWxvY2FsZWQgfCAtLWxvY2FsZSkKKyAgICBhY19wcmV2PWxvY2FsZWRpciA7OworICAtbG9j
YWxlZGlyPSogfCAtLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAt
LWxvY2FsZT0qKQorICAgIGxvY2FsZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxvY2Fsc3RhdGVk
aXIgfCAtLWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXAor
ICB8IC0tbG9jYWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCB8
IC0tbG9jYWxzKQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7OworICAtbG9jYWxzdGF0ZWRp
cj0qIHwgLS1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRl
ZD0qIFwKKyAgfCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSog
fCAtLWxvY2Fsc3Q9KiB8IC0tbG9jYWxzPSopCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJn
IDs7CisKKyAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwg
LS1tYSB8IC0tbSkKKyAgICBhY19wcmV2PW1hbmRpciA7OworICAtbWFuZGlyPSogfCAtLW1hbmRp
cj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCisg
ICAgbWFuZGlyPSRhY19vcHRhcmcgOzsKKworICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorICAgICMg
T2Jzb2xldGU7IHVzZSAtLXdpdGhvdXQtZnAuCisgICAgd2l0aF9mcD1ubyA7OworCisgIC1uby1j
cmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBc
CisgIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQorICAgIG5vX2NyZWF0ZT15ZXMgOzsKKworICAt
bm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1
cnNpIFwKKyAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJl
YyB8IC0tbm8tcmUgfCAtLW5vLXIpCisgICAgbm9fcmVjdXJzaW9uPXllcyA7OworCisgIC1vbGRp
bmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1
ZGVkIFwKKyAgfCAtLW9sZGluY2x1ZGUgfCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9s
ZGluY2wgfCAtLW9sZGluYyBcCisgIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8
IC0tbykKKyAgICBhY19wcmV2PW9sZGluY2x1ZGVkaXIgOzsKKyAgLW9sZGluY2x1ZGVkaXI9KiB8
IC0tb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBc
CisgIHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1v
bGRpbmNsPSogfCAtLW9sZGluYz0qIFwKKyAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xk
PSogfCAtLW9sPSogfCAtLW89KikKKyAgICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKKwor
ICAtcHJlZml4IHwgLS1wcmVmaXggfCAtLXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwg
LS1wKQorICAgIGFjX3ByZXY9cHJlZml4IDs7CisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAt
LXByZWZpPSogfCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtLXA9KikKKyAgICBwcmVm
aXg9JGFjX29wdGFyZyA7OworCisgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXgg
fCAtLXByb2dyYW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcCisgIHwgLS1wcm9ncmFtLXByZSB8
IC0tcHJvZ3JhbS1wciB8IC0tcHJvZ3JhbS1wKQorICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXgg
OzsKKyAgLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0t
cHJlZmk9KiBcCisgIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJv
Z3JhbS1wcj0qIHwgLS1wcm9ncmFtLXA9KikKKyAgICBwcm9ncmFtX3ByZWZpeD0kYWNfb3B0YXJn
IDs7CisKKyAgLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1z
dWZmaSB8IC0tcHJvZ3JhbS1zdWZmIFwKKyAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1
IHwgLS1wcm9ncmFtLXMpCisgICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7OworICAtcHJvZ3Jh
bS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKKyAg
fCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAt
LXByb2dyYW0tcz0qKQorICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJv
Z3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSBcCisgIHwgLS1w
cm9ncmFtLXRyYW5zZm9ybS1uYW0gfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hIFwKKyAgfCAtLXBy
b2dyYW0tdHJhbnNmb3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcCisgIHwgLS1wcm9ncmFt
LXRyYW5zZm9ybSB8IC0tcHJvZ3JhbS10cmFuc2ZvciBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8g
fCAtLXByb2dyYW0tdHJhbnNmIFwKKyAgfCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJh
biBcCisgIHwgLS1wcm9nci10cmEgfCAtLXByb2dyYW0tdHIgfCAtLXByb2dyYW0tdCkKKyAgICBh
Y19wcmV2PXByb2dyYW1fdHJhbnNmb3JtX25hbWUgOzsKKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5h
bWU9KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNm
b3JtLW5hbT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYT0qIFwKKyAgfCAtLXByb2dyYW0tdHJh
bnNmb3JtLW49KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSogXAorICB8IC0tcHJvZ3JhbS10cmFu
c2Zvcm09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0q
IHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3Jh
bS10cmFuPSogXAorICB8IC0tcHJvZ3ItdHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0tcHJvZ3Jh
bS10PSopCisgICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7CisKKyAgLXBk
ZmRpciB8IC0tcGRmZGlyIHwgLS1wZGZkaSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1wZCkKKyAgICBh
Y19wcmV2PXBkZmRpciA7OworICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwg
LS1wZGZkPSogfCAtLXBkZj0qIHwgLS1wZD0qKQorICAgIHBkZmRpcj0kYWNfb3B0YXJnIDs7CisK
KyAgLXBzZGlyIHwgLS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1wcykKKyAgICBhY19wcmV2
PXBzZGlyIDs7CisgIC1wc2Rpcj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwg
LS1wcz0qKQorICAgIHBzZGlyPSRhY19vcHRhcmcgOzsKKworICAtcSB8IC1xdWlldCB8IC0tcXVp
ZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8IC1zaWxlbnQgfCAtLXNpbGVu
dCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICBzaWxlbnQ9eWVzIDs7CisKKyAgLXNi
aW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8
IC0tc2IpCisgICAgYWNfcHJldj1zYmluZGlyIDs7CisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9
KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCisgIHwgLS1zYmk9KiB8IC0t
c2I9KikKKyAgICBzYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtc2hhcmVkc3RhdGVkaXIgfCAt
LXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKKyAgfCAtLXNoYXJlZHN0YXRlZCB8
IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0YSBcCisgIHwgLS1zaGFy
ZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcCisgIHwgLS1z
aGEgfCAtLXNoKQorICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsKKyAgLXNoYXJlZHN0YXRl
ZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcCisgIHwgLS1z
aGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFy
ZWRzdGE9KiBcCisgIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwg
LS1zaGFyZT0qIHwgLS1zaGFyPSogXAorICB8IC0tc2hhPSogfCAtLXNoPSopCisgICAgc2hhcmVk
c3RhdGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCisgICAg
YWNfcHJldj1zaXRlIDs7CisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCisgICAgc2l0
ZT0kYWNfb3B0YXJnIDs7CisKKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3Jj
ZCB8IC0tc3JjIHwgLS1zcikKKyAgICBhY19wcmV2PXNyY2RpciA7OworICAtc3JjZGlyPSogfCAt
LXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQorICAg
IHNyY2Rpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAt
LXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXAorICB8IC0tc3lzY29uIHwgLS1z
eXNjbyB8IC0tc3lzYyB8IC0tc3lzIHwgLS1zeSkKKyAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsK
KyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lz
Y29uZmQ9KiB8IC0tc3lzY29uZj0qIFwKKyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1z
eXNjPSogfCAtLXN5cz0qIHwgLS1zeT0qKQorICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7Owor
CisgIC10YXJnZXQgfCAtLXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEg
fCAtLXQpCisgICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKKyAgLXRhcmdldD0qIHwgLS10YXJn
ZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQor
ICAgIHRhcmdldF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVy
Ym9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKKyAgICB2ZXJib3NlPXllcyA7Owor
CisgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwg
LVYpCisgICAgYWNfaW5pdF92ZXJzaW9uPTogOzsKKworICAtd2l0aC0qIHwgLS13aXRoLSopCisg
ICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AK
KyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFt
ZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4v
ZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTog
JGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNl
cm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNh
c2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJ3aXRoXyRhY191c2Vyb3B0IgorIiopIDs7
CisgICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFj
X3VucmVjb2duaXplZF9zZXAtLXdpdGgtJGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25p
emVkX3NlcD0nLCAnOzsKKyAgICBlc2FjCisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNf
b3B0YXJnIDs7CisKKyAgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qKQorICAgIGFjX3VzZXJvcHQ9
YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCisgICAgIyBSZWplY3Qg
bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIg
IngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisg
ICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0Igor
ICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hv
ICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKKyAgICBjYXNlICRhY191c2VyX29w
dHMgaW4KKyAgICAgICoiCisid2l0aF8kYWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNf
dW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRf
c2VwLS13aXRob3V0LSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9Jywg
Jzs7CisgICAgZXNhYworICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7OworCisgIC0teCkK
KyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLXguCisgICAgd2l0aF94PXllcyA7OworCisgIC14
LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14
LWluY2x1IFwKKyAgfCAtLXgtaW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKKyAgICBh
Y19wcmV2PXhfaW5jbHVkZXMgOzsKKyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwg
LS14LWluY2x1ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKKyAgfCAtLXgtaW5j
bD0qIHwgLS14LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0qKQorICAgIHhfaW5jbHVkZXM9JGFj
X29wdGFyZyA7OworCisgIC14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFy
aWUgfCAtLXgtbGlicmFyaSBcCisgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJy
IHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsK
KyAgLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0t
eC1saWJyYXJpPSogXAorICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9
KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKKyAgICB4X2xpYnJhcmllcz0kYWNf
b3B0YXJnIDs7CisKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBc
YCRhY19vcHRpb24nCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgorICAg
IDs7CisKKyAgKj0qKQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFte
PV0qXCk9J2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFy
aWFibGUgbmFtZXMuCisgICAgY2FzZSAkYWNfZW52dmFyIGluICMoCisgICAgICAnJyB8IFswLTld
KiB8ICpbIV8kYXNfY3JfYWxudW1dKiApCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2
YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2YXInIiA7OworICAgIGVzYWMKKyAgICBldmFsICRhY19l
bnZ2YXI9XCRhY19vcHRhcmcKKyAgICBleHBvcnQgJGFjX2VudnZhciA7OworCisgICopCisgICAg
IyBGSVhNRTogc2hvdWxkIGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLgorICAgICRhc19lY2hv
ICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJn
ZXQiID4mMgorICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIg
Pi9kZXYvbnVsbCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBo
b3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgorICAgIDogIiR7YnVpbGRfYWxpYXM9JGFjX29wdGlv
bn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259Igor
ICAgIDs7CisKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKyAg
YWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAorICBhc19mbl9lcnJv
ciAkPyAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIgorZmkKKworaWYgdGVzdCAtbiAi
JGFjX3VucmVjb2duaXplZF9vcHRzIjsgdGhlbgorICBjYXNlICRlbmFibGVfb3B0aW9uX2NoZWNr
aW5nIGluCisgICAgbm8pIDs7CisgICAgZmF0YWwpIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6
ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA7OworICAgICopICAgICAkYXNfZWNo
byAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXpl
ZF9vcHRzIiA+JjIgOzsKKyAgZXNhYworZmkKKworIyBDaGVjayBhbGwgZGlyZWN0b3J5IGFyZ3Vt
ZW50cyBmb3IgY29uc2lzdGVuY3kuCitmb3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBi
aW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFyb290ZGlyIFwKKwkJZGF0YWRpciBzeXNjb25m
ZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgaW5jbHVkZWRpciBcCisJCW9sZGluY2x1
ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwKKwkJbGli
ZGlyIGxvY2FsZWRpciBtYW5kaXIKK2RvCisgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAjIFJl
bW92ZSB0cmFpbGluZyBzbGFzaGVzLgorICBjYXNlICRhY192YWwgaW4KKyAgICAqLyApCisgICAg
ICBhY192YWw9YGV4cHIgIlgkYWNfdmFsIiA6ICdYXCguKlteL11cKScgXHwgIlgkYWNfdmFsIiA6
ICdYXCguKlwpJ2AKKyAgICAgIGV2YWwgJGFjX3Zhcj1cJGFjX3ZhbDs7CisgIGVzYWMKKyAgIyBC
ZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWVzLgorICBjYXNlICRhY192YWwg
aW4KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7OworICAgIE5PTkUgfCAnJyAp
IGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkgY29udGludWU7OyBlc2FjOzsKKyAgZXNhYworICBh
c19mbl9lcnJvciAkPyAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0t
JGFjX3ZhcjogJGFjX3ZhbCIKK2RvbmUKKworIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRl
cGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0JworIyB1c2VkIHRvIGhvbGQg
dGhlIGFyZ3VtZW50IG9mIC0taG9zdCBldGMuCisjIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXku
CitidWlsZD0kYnVpbGRfYWxpYXMKK2hvc3Q9JGhvc3RfYWxpYXMKK3RhcmdldD0kdGFyZ2V0X2Fs
aWFzCisKKyMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KK2lmIHRlc3QgIngkaG9zdF9hbGlh
cyIgIT0geDsgdGhlbgorICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KKyAgICBj
cm9zc19jb21waWxpbmc9bWF5YmUKKyAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpZiB5
b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0LgorICAg
IElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUg
d2lsbCBiZSB1c2VkIiA+JjIKKyAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0
X2FsaWFzIjsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGluZz15ZXMKKyAgZmkKK2ZpCisKK2FjX3Rv
b2xfcHJlZml4PQordGVzdCAtbiAiJGhvc3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0
X2FsaWFzLQorCit0ZXN0ICIkc2lsZW50IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsCisKKwor
YWNfcHdkPWBwd2RgICYmIHRlc3QgLW4gIiRhY19wd2QiICYmCithY19sc19kaT1gbHMgLWRpIC5g
ICYmCithY19wd2RfbHNfZGk9YGNkICIkYWNfcHdkIiAmJiBscyAtZGkgLmAgfHwKKyAgYXNfZm5f
ZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgordGVzdCAi
WCRhY19sc19kaSIgPSAiWCRhY19wd2RfbHNfZGkiIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJwd2Qg
ZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiCisKKworIyBGaW5kIHRo
ZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0aW9uIHdhcyBub3Qgc3BlY2lmaWVkLgoraWYgdGVzdCAt
eiAiJHNyY2RpciI7IHRoZW4KKyAgYWNfc3JjZGlyX2RlZmF1bHRlZD15ZXMKKyAgIyBUcnkgdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgc2NyaXB0LCB0aGVuIHRoZSBwYXJlbnQgZGlyZWN0
b3J5LgorICBhY19jb25mZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX215c2VsZiIgfHwKKyRhc19l
eHByIFgiJGFzX215c2VsZiIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkg
WCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSBYIiRhc19teXNlbGYiIDogJ1hc
KC8vXCkkJyBcfCBcCisJIFgiJGFzX215c2VsZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxs
IHx8CiskYXNfZWNobyBYIiRhc19teXNlbGYiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wv
KlteL11bXi9dKlwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wv
XClbXi9dLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXCkkL3sK
KwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cKS4qL3sKKwkgICAgcy8vXDEv
CisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorICBzcmNkaXI9JGFjX2NvbmZkaXIKKyAg
aWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KKyAgICBzcmNkaXI9
Li4KKyAgZmkKK2Vsc2UKKyAgYWNfc3JjZGlyX2RlZmF1bHRlZD1ubworZmkKK2lmIHRlc3QgISAt
ciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCisgIHRlc3QgIiRhY19zcmNkaXJfZGVm
YXVsdGVkIiA9IHllcyAmJiBzcmNkaXI9IiRhY19jb25mZGlyIG9yIC4uIgorICBhc19mbl9lcnJv
ciAkPyAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgor
ZmkKK2FjX21zZz0ic291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9l
cyBub3Qgd29yayIKK2FjX2Fic19jb25mZGlyPWAoCisJY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIg
Ii4vJGFjX3VuaXF1ZV9maWxlIiB8fCBhc19mbl9lcnJvciAkPyAiJGFjX21zZyIKKwlwd2QpYAor
IyBXaGVuIGJ1aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGlyPS4KK2lmIHRlc3QgIiRhY19hYnNf
Y29uZmRpciIgPSAiJGFjX3B3ZCI7IHRoZW4KKyAgc3JjZGlyPS4KK2ZpCisjIFJlbW92ZSB1bm5l
Y2Vzc2FyeSB0cmFpbGluZyBzbGFzaGVzIGZyb20gc3JjZGlyLgorIyBEb3VibGUgc2xhc2hlcyBp
biBmaWxlIG5hbWVzIGluIG9iamVjdCBmaWxlIGRlYnVnZ2luZyBpbmZvCisjIG1lc3MgdXAgTS14
IGdkYiBpbiBFbWFjcy4KK2Nhc2UgJHNyY2RpciBpbgorKi8pIHNyY2Rpcj1gZXhwciAiWCRzcmNk
aXIiIDogJ1hcKC4qW14vXVwpJyBcfCAiWCRzcmNkaXIiIDogJ1hcKC4qXCknYDs7Citlc2FjCitm
b3IgYWNfdmFyIGluICRhY19wcmVjaW91c192YXJzOyBkbworICBldmFsIGFjX2Vudl8ke2FjX3Zh
cn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9CisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV92YWx1ZT1c
JCR7YWNfdmFyfQorICBldmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStz
ZXR9CisgIGV2YWwgYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQorZG9uZQor
CisjCisjIFJlcG9ydCB0aGUgLS1oZWxwIG1lc3NhZ2UuCisjCitpZiB0ZXN0ICIkYWNfaW5pdF9o
ZWxwIiA9ICJsb25nIjsgdGhlbgorICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBv
cHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KKyAgIyBUaGlzIG1lc3NhZ2Ug
aXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgorICBjYXQgPDxf
QUNFT0YKK1xgY29uZmlndXJlJyBjb25maWd1cmVzIFhlbiBIeXBlcnZpc29yIDQuMiB0byBhZGFw
dCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFS
PVZBTFVFXS4uLgorCitUbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywg
Q0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRl
c2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgorCitEZWZhdWx0cyBm
b3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KKworQ29uZmlndXJhdGlv
bjoKKyAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQK
KyAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRo
aXMgcGFja2FnZQorICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBo
ZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKKyAgLVYsIC0tdmVyc2lvbiAgICAgICAg
ICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC1xLCAtLXF1aWV0LCAt
LXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2FnZXMKKyAgICAgIC0t
Y2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQor
ICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmln
LmNhY2hlJworICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBm
aWxlcworICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBb
Y29uZmlndXJlIGRpciBvciBcYC4uJ10KKworSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAt
LXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBm
aWxlcyBpbiBQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3By
ZWZpeF0KKyAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVw
ZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJ
WF0KKworQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZp
bGVzIGluCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9s
aWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQorYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0
aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywKK2ZvciBpbnN0YW5j
ZSBcYC0tcHJlZml4PVwkSE9NRScuCisKK0ZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRp
b25zIGJlbG93LgorCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVz
OgorICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jp
bl0KKyAgLS1zYmluZGlyPURJUiAgICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtF
UFJFRklYL3NiaW5dCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJs
ZXMgW0VQUkVGSVgvbGliZXhlY10KKyAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5
IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCisgIC0tc2hhcmVkc3RhdGVkaXI9RElS
ICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21d
CisgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0
YSBbUFJFRklYL3Zhcl0KKyAgLS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGli
cmFyaWVzIFtFUFJFRklYL2xpYl0KKyAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIg
ZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQorICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRl
ciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQorICAtLWRhdGFyb290ZGlyPURJUiAg
ICAgICByZWFkLW9ubHkgYXJjaC4taW5kZXBlbmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVd
CisgIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBl
bmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8g
ZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10KKyAgLS1sb2NhbGVkaXI9RElSICAgICAg
ICAgbG9jYWxlLWRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUi9sb2NhbGVdCisgIC0tbWFuZGly
PURJUiAgICAgICAgICAgIG1hbiBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCisgIC0t
ZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9j
L3hlbi1oeXBlcnZpc29yXQorICAtLWh0bWxkaXI9RElSICAgICAgICAgICBodG1sIGRvY3VtZW50
YXRpb24gW0RPQ0RJUl0KKyAgLS1kdmlkaXI9RElSICAgICAgICAgICAgZHZpIGRvY3VtZW50YXRp
b24gW0RPQ0RJUl0KKyAgLS1wZGZkaXI9RElSICAgICAgICAgICAgcGRmIGRvY3VtZW50YXRpb24g
W0RPQ0RJUl0KKyAgLS1wc2Rpcj1ESVIgICAgICAgICAgICAgcHMgZG9jdW1lbnRhdGlvbiBbRE9D
RElSXQorX0FDRU9GCisKKyAgY2F0IDw8XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVp
bGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisg
IC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVu
IG9uIEhPU1QgW0JVSUxEXQorX0FDRU9GCitmaQorCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxw
IjsgdGhlbgorICBjYXNlICRhY19pbml0X2hlbHAgaW4KKyAgICAgc2hvcnQgfCByZWN1cnNpdmUg
KSBlY2hvICJDb25maWd1cmF0aW9uIG9mIFhlbiBIeXBlcnZpc29yIDQuMjoiOzsKKyAgIGVzYWMK
KyAgY2F0IDw8XF9BQ0VPRgorCitPcHRpb25hbCBGZWF0dXJlczoKKyAgLS1kaXNhYmxlLW9wdGlv
bi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucwor
ICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFz
IC0tZW5hYmxlLUZFQVRVUkU9bm8pCisgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUg
RkVBVFVSRSBbQVJHPXllc10KKyAgLS1lbmFibGUteHNtICAgICAgICAgICAgRW5hYmxlIFhTTSBz
ZWN1cml0eSBtb2R1bGUgKGJ5IGRlZmF1bHQsIEZsYXNrKQorICAtLWVuYWJsZS1naXRodHRwICAg
ICAgICBEb3dubG9hZCBHSVQgcmVwb3NpdG9yaWVzIHZpYSBIVFRQCisgIC0tZGlzYWJsZS1tb25p
dG9ycyAgICAgIERpc2FibGUgeGVuc3RhdCBhbmQgeGVudG9wIG1vbml0b3JpbmcgdG9vbHMKKyAg
LS1lbmFibGUtdnRwbSAgICAgICAgICAgRW5hYmxlIFZpcnR1YWwgVHJ1c3RlZCBQbGF0Zm9ybSBN
b2R1bGUKKyAgLS1lbmFibGUteGFwaSAgICAgICAgICAgRW5hYmxlIFhlbiBBUEkgQmluZGluZ3MK
KyAgLS1kaXNhYmxlLXB5dGhvbnRvb2xzICAgRGlzYWJsZSBQeXRob24gdG9vbHMKKyAgLS1kaXNh
YmxlLW9jYW1sdG9vbHMgICAgRGlzYWJsZSBPY2FtbCB0b29scworICAtLWVuYWJsZS1taW5pdGVy
bSAgICAgICBFbmFibGUgbWluaXRlcm0KKyAgLS1lbmFibGUtbG9tb3VudCAgICAgICAgRW5hYmxl
IGxvbW91bnQKKyAgLS1kaXNhYmxlLWRlYnVnICAgICAgICAgRGlzYWJsZSBkZWJ1ZyBidWlsZCBv
ZiBYZW4gYW5kIHRvb2xzCisKK1NvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVz
OgorICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKKyAgQ0ZMQUdTICAgICAgQyBjb21w
aWxlciBmbGFncworICBMREZMQUdTICAgICBsaW5rZXIgZmxhZ3MsIGUuZy4gLUw8bGliIGRpcj4g
aWYgeW91IGhhdmUgbGlicmFyaWVzIGluIGEKKyAgICAgICAgICAgICAgbm9uc3RhbmRhcmQgZGly
ZWN0b3J5IDxsaWIgZGlyPgorICBMSUJTICAgICAgICBsaWJyYXJpZXMgdG8gcGFzcyB0byB0aGUg
bGlua2VyLCBlLmcuIC1sPGxpYnJhcnk+CisgIENQUEZMQUdTICAgIChPYmplY3RpdmUpIEMvQysr
IHByZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKKyAgICAgICAgICAg
ICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBk
aXI+CisgIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29yCisgIFBSRVBFTkRfSU5DTFVERVMKKyAg
ICAgICAgICAgICAgTGlzdCBvZiBpbmNsdWRlIGZvbGRlcnMgdG8gcHJlcGVuZCB0byBDRkxBR1Mg
KHdpdGhvdXQgLUkpCisgIFBSRVBFTkRfTElCIExpc3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIHBy
ZXBlbmQgdG8gTERGTEFHUyAod2l0aG91dCAtTCkKKyAgQVBQRU5EX0lOQ0xVREVTCisgICAgICAg
ICAgICAgIExpc3Qgb2YgaW5jbHVkZSBmb2xkZXJzIHRvIGFwcGVuZCB0byBDRkxBR1MgKHdpdGhv
dXQgLUkpCisgIEFQUEVORF9MSUIgIExpc3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIGFwcGVuZCB0
byBMREZMQUdTICh3aXRob3V0IC1MKQorICBQWVRIT04gICAgICBQYXRoIHRvIHRoZSBQeXRob24g
cGFyc2VyCisgIFBFUkwgICAgICAgIFBhdGggdG8gUGVybCBwYXJzZXIKKyAgQlJDVEwgICAgICAg
UGF0aCB0byBicmN0bCB0b29sCisgIElQICAgICAgICAgIFBhdGggdG8gaXAgdG9vbAorICBCSVNP
TiAgICAgICBQYXRoIHRvIEJpc29uIHBhcnNlciBnZW5lcmF0b3IKKyAgRkxFWCAgICAgICAgUGF0
aCB0byBGbGV4IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yCisgIENVUkwgICAgICAgIFBhdGgg
dG8gY3VybC1jb25maWcgdG9vbAorICBYTUwgICAgICAgICBQYXRoIHRvIHhtbDItY29uZmlnIHRv
b2wKKyAgQkFTSCAgICAgICAgUGF0aCB0byBiYXNoIHNoZWxsCisgIFhHRVRURVhUICAgIFBhdGgg
dG8geGdldHR0ZXh0IHRvb2wKKyAgUEtHX0NPTkZJRyAgcGF0aCB0byBwa2ctY29uZmlnIHV0aWxp
dHkKKyAgUEtHX0NPTkZJR19QQVRICisgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHRvIGFkZCB0
byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGgKKyAgUEtHX0NPTkZJR19MSUJESVIKKyAgICAgICAg
ICAgICAgcGF0aCBvdmVycmlkaW5nIHBrZy1jb25maWcncyBidWlsdC1pbiBzZWFyY2ggcGF0aAor
ICBnbGliX0NGTEFHUyBDIGNvbXBpbGVyIGZsYWdzIGZvciBnbGliLCBvdmVycmlkaW5nIHBrZy1j
b25maWcKKyAgZ2xpYl9MSUJTICAgbGlua2VyIGZsYWdzIGZvciBnbGliLCBvdmVycmlkaW5nIHBr
Zy1jb25maWcKKworVXNlIHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBt
YWRlIGJ5IGBjb25maWd1cmUnIG9yIHRvIGhlbHAKK2l0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBw
cm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KKworUmVwb3J0IGJ1Z3Mg
dG8gPHhlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tPi4KK19BQ0VPRgorYWNfc3RhdHVzPSQ/
CitmaQorCitpZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCisgICMg
SWYgdGhlcmUgYXJlIHN1YmRpcnMsIHJlcG9ydCB0aGVpciBzcGVjaWZpYyAtLWhlbHAuCisgIGZv
ciBhY19kaXIgaW4gOiAkYWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNfZGlyIiA9IHg6ICYm
IGNvbnRpbnVlCisgICAgdGVzdCAtZCAiJGFjX2RpciIgfHwKKyAgICAgIHsgY2QgIiRzcmNkaXIi
ICYmIGFjX3B3ZD1gcHdkYCAmJiBzcmNkaXI9LiAmJiB0ZXN0IC1kICIkYWNfZGlyIjsgfSB8fAor
ICAgICAgY29udGludWUKKyAgICBhY19idWlsZGRpcj0uCisKK2Nhc2UgIiRhY19kaXIiIGluCisu
KSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZp
eD0gOzsKKyopCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8
XlwuW1xcL118fCdgCisgICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1
ZmZpeC4KKyAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8
IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9z
dWIgaW4KKyAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7
OworICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsKKyAg
ZXNhYyA7OworZXNhYworYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCithY19hYnNfYnVpbGRk
aXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4CisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ogor
YWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4CisKK2Nhc2UgJHNyY2RpciBpbgor
ICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCisgICAgYWNfc3JjZGlyPS4KKyAgICBh
Y190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9
JGFjX3B3ZCA7OworICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCisgICAg
YWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKKyAgICBhY190b3Bfc3JjZGlyPSRzcmNk
aXIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7CisgICopICMgUmVsYXRpdmUgbmFt
ZS4KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZm
aXgKKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgorICAgIGFj
X2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OworZXNhYworYWNfYWJzX3NyY2Rpcj0k
YWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAorCisgICAgY2QgIiRhY19kaXIiIHx8IHsg
YWNfc3RhdHVzPSQ/OyBjb250aW51ZTsgfQorICAgICMgQ2hlY2sgZm9yIGd1ZXN0ZWQgY29uZmln
dXJlLgorICAgIGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlLmdudSI7IHRoZW4KKyAg
ICAgIGVjaG8gJiYKKyAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IiAtLWhl
bHA9cmVjdXJzaXZlCisgICAgZWxpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZSI7IHRo
ZW4KKyAgICAgIGVjaG8gJiYKKyAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0t
aGVscD1yZWN1cnNpdmUKKyAgICBlbHNlCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H
OiBubyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19kaXIiID4mMgorICAgIGZp
IHx8IGFjX3N0YXR1cz0kPworICAgIGNkICIkYWNfcHdkIiB8fCB7IGFjX3N0YXR1cz0kPzsgYnJl
YWs7IH0KKyAgZG9uZQorZmkKKwordGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNf
c3RhdHVzCitpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCisgIGNhdCA8PFxfQUNFT0YKK1hlbiBI
eXBlcnZpc29yIGNvbmZpZ3VyZSA0LjIKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OAor
CitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlz
IGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBh
bmQgbW9kaWZ5IGl0LgorX0FDRU9GCisgIGV4aXQKK2ZpCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAjIworIyMgQXV0b2NvbmYgaW5pdGlhbGl6YXRpb24uICMjCisjIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKKworIyBhY19mbl9jX3RyeV9jb21waWxlIExJTkVOTworIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gY29tcGlsZSBjb25mdGVzdC4kYWNfZXh0
LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCithY19mbl9jX3RyeV9jb21waWxl
ICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNf
bGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4
dAorICBpZiB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZSIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAg
KlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9l
Y2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9
ID4mNQorICAoZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9
JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBj
b25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAg
bXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNf
c3RhdHVzID0gMDsgfSAmJiB7CisJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0
ZXN0ICEgLXMgY29uZnRlc3QuZXJyCisgICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19v
YmpleHQ7IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBm
YWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+
JjUKKworCWFjX3JldHZhbD0xCitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGlu
ZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKyAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0
dmFsCisKK30gIyBhY19mbl9jX3RyeV9jb21waWxlCisKKyMgYWNfZm5fY190cnlfY3BwIExJTkVO
TworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyeSB0byBwcmVwcm9jZXNzIGNvbmZ0ZXN0
LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KK2FjX2ZuX2NfdHJ5
X2NwcCAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNr
PWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIGlmIHsgeyBhY190cnk9IiRhY19j
cHAgY29uZnRlc3QuJGFjX2V4dCIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCog
fCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7
OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZh
bCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVz
PSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycg
Y29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAg
IG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFj
X3N0YXR1cyA9IDA7IH0gPiBjb25mdGVzdC5pICYmIHsKKwkgdGVzdCAteiAiJGFjX2NfcHJlcHJv
Y193YXJuX2ZsYWckYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVy
cgorICAgICAgIH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFz
X21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFj
X2V4dCA+JjUKKworICAgIGFjX3JldHZhbD0xCitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7
ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKyAgYXNfZm5fc2V0X3N0YXR1
cyAkYWNfcmV0dmFsCisKK30gIyBhY19mbl9jX3RyeV9jcHAKKworIyBhY19mbl9jX2NoZWNrX2hl
YWRlcl9tb25ncmVsIExJTkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhl
ciBIRUFERVIgZXhpc3RzLCBnaXZpbmcgYSB3YXJuaW5nIGlmIGl0IGNhbm5vdCBiZSBjb21waWxl
ZCB1c2luZworIyB0aGUgaW5jbHVkZSBmaWxlcyBpbiBJTkNMVURFUyBhbmQgc2V0dGluZyB0aGUg
Y2FjaGUgdmFyaWFibGUgVkFSCisjIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19oZWFkZXJf
bW9uZ3JlbCAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0
YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIGlmIGV2YWwgXCR7JDMrOn0g
ZmFsc2U7IHRoZW4gOgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+
JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8g
IiRhY19yZXMiID4mNjsgfQorZWxzZQorICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgdXNhYmls
aXR5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nICQyIHVzYWJpbGl0eS4uLiAiID4mNjsgfQor
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk
ZWZzLmguICAqLworJDQKKyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29t
cGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCitlbHNlCisg
IGFjX2hlYWRlcl9jb21waWxlcj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQorJGFzX2Vj
aG8gIiRhY19oZWFkZXJfY29tcGlsZXIiID4mNjsgfQorCisjIElzIHRoZSBoZWFkZXIgcHJlc2Vu
dD8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIg
cHJlc2VuY2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgJDIgcHJlc2VuY2UuLi4gIiA+JjY7
IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3Bw
ICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2hlYWRlcl9wcmVwcm9jPXllcworZWxzZQorICBhY19o
ZWFkZXJfcHJlcHJvYz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0
ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQorJGFzX2VjaG8gIiRhY19oZWFkZXJfcHJlcHJv
YyIgPiY2OyB9CisKKyMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPworY2FzZSAkYWNfaGVh
ZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYzokYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBp
biAjKCgKKyAgeWVzOm5vOiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBXQVJOSU5HOiAkMjogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBi
eSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjog
YWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIg
PiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J
Tkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjUKKyRhc19l
Y2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3Mg
cmVzdWx0IiA+JjI7fQorICAgIDs7CisgIG5vOnllczoqICkKKyAgICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3Qg
YmUgY29tcGlsZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByZXNlbnQg
YnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJl
cmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAg
ICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQorICAgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHNlZSB0
aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H
OiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7fQorICAgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6ICAgICBzZWN0aW9u
IFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mNQorJGFzX2VjaG8gIiRhc19t
ZTogV0FSTklORzogJDI6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBp
bGVkXCIiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1
CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21w
aWxlcidzIHJlc3VsdCIgPiYyO30KKyggJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBSZXBvcnQgdGhpcyB0byB4ZW4tZGV2ZWxA
bGlzdHMueGVuc291cmNlLmNvbSAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMiCisgICAgICkgfCBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAg
ICAvIiA+JjIKKyAgICA7OworZXNhYworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIkMz1cJGFjX2hlYWRlcl9jb21waWxl
ciIKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVz
IiA+JjY7IH0KK2ZpCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6
Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbAor
CisjIGFjX2ZuX2NfdHJ5X3J1biBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU
cnkgdG8gbGluayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNj
ZWVkZWQuIEFzc3VtZXMKKyMgdGhhdCBleGVjdXRhYmxlcyAqY2FuKiBiZSBydW4uCithY19mbl9j
X3RyeV9ydW4gKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19z
dGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBpZiB7IHsgYWNfdHJ5PSIk
YWNfbGluayIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190
cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZh
bCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2Vj
aG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsi
KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAm
JiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgeyBjYXNlICIoKCRhY190cnki
IGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBh
Y190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9l
Y2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnkiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitl
bHNlCisgICRhc19lY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19z
dGF0dXMiID4mNQorICAgICAgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoi
ID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgICAgYWNfcmV0
dmFsPSRhY19zdGF0dXMKK2ZpCisgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThf
Y29uZnRlc3Qub28KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazor
On0gdW5zZXQgYXNfbGluZW5vCisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMg
YWNfZm5fY190cnlfcnVuCisKKyMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSBMSU5FTk8g
SEVBREVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cyBhbmQg
Y2FuIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBpbmNsdWRlIGZpbGVzIGluCisjIElOQ0xVREVTLCBz
ZXR0aW5nIHRoZSBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9jX2NoZWNr
X2hlYWRlcl9jb21waWxlICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19s
aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFz
X2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLworJDQKKyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAi
JExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkMz15ZXMiCitlbHNlCisgIGV2YWwgIiQzPW5vIgor
ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
JGFjX2V4dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRh
Y19yZXMiID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNr
Ois6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUK
KworIyBhY19mbl9jX3RyeV9saW5rIExJTkVOTworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBUcnkgdG8gbGluayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBz
dWNjZWVkZWQuCithY19mbl9jX3RyeV9saW5rICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVu
by0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sK
KyAgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKKyAgaWYgeyB7
IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwg
KlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsK
K2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
JGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwg
IiRhY19saW5rIikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMg
Y29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25m
dGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVy
MSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYg
eworCSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0
LmVycgorICAgICAgIH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgeworCSB0ZXN0
ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyB8fAorCSAkYXNfdGVzdF94IGNvbmZ0ZXN0JGFjX2V4
ZWV4dAorICAgICAgIH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAi
JGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3Qu
JGFjX2V4dCA+JjUKKworCWFjX3JldHZhbD0xCitmaQorICAjIERlbGV0ZSB0aGUgSVBBL0lQTyAo
SW50ZXIgUHJvY2VkdXJhbCBBbmFseXNpcy9PcHRpbWl6YXRpb24pIGluZm9ybWF0aW9uCisgICMg
Y3JlYXRlZCBieSB0aGUgUEdJIGNvbXBpbGVyIChjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vKSwg
YXMgaXQgd291bGQKKyAgIyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFs
c28gZGVsZXRlIGEgZGlyZWN0b3J5IHRoYXQgaXMKKyAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdz
IGNvbXBpbGVyLiAgV2UgZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgorICBy
bSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwgJGFz
X2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBh
c19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2xpbmsKKworIyBh
Y19mbl9jX2NoZWNrX3R5cGUgTElORU5PIFRZUEUgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBUWVBFIGV4
aXN0cyBhZnRlciBoYXZpbmcgaW5jbHVkZWQgSU5DTFVERVMsIHNldHRpbmcgY2FjaGUKKyMgdmFy
aWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja190eXBlICgpCit7CisgIGFzX2xp
bmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRh
c19saW5lbm9fc3RhY2sKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIg
PiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgZXZhbCAiJDM9bm8iCisgIGNhdCBjb25mZGVmcy5oIC0gPDxf
QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQK
K21haW4gKCkKK3sKK2lmIChzaXplb2YgKCQyKSkKKwkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJu
IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoK
KyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNv
bmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoKCQyKSkpCisJ
ICAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3Ry
eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgZXZhbCAiJDM9eWVzIgorZmkK
K3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj
X2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QuJGFjX2V4dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2Vj
aG8gIiRhY19yZXMiID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5v
X3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQorCisj
IGFjX2ZuX2NfY2hlY2tfZnVuYyBMSU5FTk8gRlVOQyBWQVIKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIEZVTkMgZXhpc3RzLCBzZXR0aW5nIHRo
ZSBjYWNoZSB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkKK2FjX2ZuX2NfY2hlY2tfZnVuYyAoKQor
eworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVu
b19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv
ciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy8qIERlZmluZSAkMiB0
byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGltaXRzLmg+IGRlY2xhcmVzICQyLgor
ICAgRm9yIGV4YW1wbGUsIEhQLVVYIDExaSA8bGltaXRzLmg+IGRlY2xhcmVzIGdldHRpbWVvZmRh
eS4gICovCisjZGVmaW5lICQyIGlubm9jdW91c18kMgorCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRl
ZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hp
Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkMiAoKTsgYmVsb3cuCisgICAgUHJlZmVyIDxsaW1p
dHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAgIDxs
aW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCisKKyNp
ZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNlCisjIGluY2x1ZGUgPGFz
c2VydC5oPgorI2VuZGlmCisKKyN1bmRlZiAkMgorCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVy
bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50
IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhl
biBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyICQyICgpOworLyogVGhlIEdOVSBD
IGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwor
ICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVh
bGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwg
bmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCBfX3N0dWJfJDIgfHwgZGVmaW5lZCBf
X3N0dWJfX18kMgorY2hva2UgbWUKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3JldHVybiAk
MiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAi
JExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkMz15ZXMiCitlbHNlCisgIGV2YWwgIiQzPW5vIgor
ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMwor
CSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVu
b19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNf
Zm5fY19jaGVja19mdW5jCisKKyMgYWNfZm5fY19maW5kX2ludFhfdCBMSU5FTk8gQklUUyBWQVIK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRmluZHMgYSBzaWduZWQg
aW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIK
KyMgYWNjb3JkaW5nbHkuCithY19mbl9jX2ZpbmRfaW50WF90ICgpCit7CisgIGFzX2xpbmVubz0k
e2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5l
bm9fc3RhY2sKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyBmb3IgaW50JDJfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50JDJfdC4u
LiAiID4mNjsgfQoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPW5vIgorICAgICAjIE9yZGVyIGlzIGlt
cG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIK
KyAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KKyAgICAgZm9y
IGFjX3R5cGUgaW4gaW50JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKKwkgJ2xvbmcgbG9uZyBpbnQn
ICdzaG9ydCBpbnQnICdzaWduZWQgY2hhcic7IGRvCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8
PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2lu
Y2x1ZGVzX2RlZmF1bHQKKwkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWlu
ICgpCit7CitzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAo
KCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKK3Rlc3RfYXJyYXkg
WzBdID0gMAorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u
ZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1
bHQKKwkgICAgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OworaW50CittYWluICgpCit7Citz
dGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJGFjX3R5cGUpICgoKCgoJGFjX3R5cGUp
IDEgPDwgTikgPDwgTikgLSAxKSAqIDIgKyAxKQorCQkgPCAoJGFjX3R5cGUpICgoKCgoJGFjX3R5
cGUpIDEgPDwgTikgPDwgTikgLSAxKSAqIDIgKyAyKSldOwordGVzdF9hcnJheSBbMF0gPSAwCisK
KyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ
TkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGNhc2UgJGFjX3R5cGUgaW4gIygKKyAgaW50JDJfdCkg
OgorICAgIGV2YWwgIiQzPXllcyIgOzsgIygKKyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlw
ZSIgOzsKK2VzYWMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz
dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQi
JDMiXCIgPSB4Im5vIjsgdGhlbiA6CisKK2Vsc2UKKyAgYnJlYWsKK2ZpCisgICAgIGRvbmUKK2Zp
CitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7
IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQg
YXNfbGluZW5vCisKK30gIyBhY19mbl9jX2ZpbmRfaW50WF90CisKKyMgYWNfZm5fY19jaGVja19t
ZW1iZXIgTElORU5PIEFHR1IgTUVNQkVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyaWVzIHRvIGZpbmQgaWYg
dGhlIGZpZWxkIE1FTUJFUiBleGlzdHMgaW4gdHlwZSBBR0dSLCBhZnRlciBpbmNsdWRpbmcKKyMg
SU5DTFVERVMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5f
Y19jaGVja19tZW1iZXIgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xp
bmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMi4kMyIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuJDMuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDQr
On0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRl
ZnMuaC4gICovCiskNQoraW50CittYWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChh
Y19hZ2dyLiQzKQorcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDQ9eWVzIgorZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCiskNQoraW50CittYWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsK
K2lmIChzaXplb2YgYWNfYWdnci4kMykKK3JldHVybiAwOworICA7CisgIHJldHVybiAwOworfQor
X0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwg
IiQ0PXllcyIKK2Vsc2UKKyAgZXZhbCAiJDQ9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5l
cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBj
b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZh
bCBhY19yZXM9XCQkNAorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Cisg
IGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xp
bmVubworCit9ICMgYWNfZm5fY19jaGVja19tZW1iZXIKKworIyBhY19mbl9jX2ZpbmRfdWludFhf
dCBMSU5FTk8gQklUUyBWQVIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIEZpbmRzIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRp
bmcgY2FjaGUgdmFyaWFibGUgVkFSCisjIGFjY29yZGluZ2x5LgorYWNfZm5fY19maW5kX3VpbnRY
X3QgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1h
c19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1aW50JDJfdCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgdWludCQyX3QuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFs
c2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIk
Mz1ubyIKKyAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhh
dCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCisgICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3Rl
ZCB0YXJnZXQgd2lkdGguCisgICAgIGZvciBhY190eXBlIGluIHVpbnQkMl90ICd1bnNpZ25lZCBp
bnQnICd1bnNpZ25lZCBsb25nIGludCcgXAorCSAndW5zaWduZWQgbG9uZyBsb25nIGludCcgJ3Vu
c2lnbmVkIHNob3J0IGludCcgJ3Vuc2lnbmVkIGNoYXInOyBkbworICAgICAgIGNhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
KyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkKK3sKK3N0YXRpYyBpbnQgdGVzdF9h
cnJheSBbMSAtIDIgKiAhKCgoJGFjX3R5cGUpIC0xID4+ICgkMiAvIDIgLSAxKSkgPj4gKCQyIC8g
MiAtIDEpID09IDMpXTsKK3Rlc3RfYXJyYXkgWzBdID0gMAorCisgIDsKKyAgcmV0dXJuIDA7Cit9
CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgY2Fz
ZSAkYWNfdHlwZSBpbiAjKAorICB1aW50JDJfdCkgOgorICAgIGV2YWwgIiQzPXllcyIgOzsgIygK
KyAgKikgOgorICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKK2VzYWMKK2ZpCitybSAtZiBjb3Jl
IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAg
ICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6CisKK2Vsc2UKKyAgYnJl
YWsKK2ZpCisgICAgIGRvbmUKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRh
c19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xp
bmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2ZpbmRfdWludFhf
dAorY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCitUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3Nh
Z2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQorcnVubmluZyBjb25maWd1cmUsIHRvIGFp
ZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KKworSXQgd2FzIGNyZWF0
ZWQgYnkgWGVuIEh5cGVydmlzb3IgJGFzX21lIDQuMiwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkg
R05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKworICAkICQw
ICRACisKK19BQ0VPRgorZXhlYyA1Pj5jb25maWcubG9nCit7CitjYXQgPDxfQVNVTkFNRQorIyMg
LS0tLS0tLS0tICMjCisjIyBQbGF0Zm9ybS4gIyMKKyMjIC0tLS0tLS0tLSAjIworCitob3N0bmFt
ZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAordW5hbWUg
LW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9
IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1
bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1l
IC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0g
YCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorL2Jpbi91
bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVu
a25vd25gCisKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251
bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL2FyY2ggLWsgICAgICAg
PSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAK
Ky91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rl
di9udWxsIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL2hvc3RpbmZvICAgICAgPSBgKC91c3Iv
YmluL2hvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vbWFj
aGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8
IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2
ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vdW5pdmVyc2UgICAg
ICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5r
bm93bmAKKworX0FTVU5BTUUKKworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP
UgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16
ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICRhc19lY2hvICJQQVRIOiAkYXNfZGlyIgorICBk
b25lCitJRlM9JGFzX3NhdmVfSUZTCisKK30gPiY1CisKK2NhdCA+JjUgPDxfQUNFT0YKKworCisj
IyAtLS0tLS0tLS0tLSAjIworIyMgQ29yZSB0ZXN0cy4gIyMKKyMjIC0tLS0tLS0tLS0tICMjCisK
K19BQ0VPRgorCisKKyMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuCisjIFN0cmlw
IG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1
cC4KKyMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQg
aXQgZm9yIGZ1dHVyZSBydW5zLgorIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5pbmcgc2hl
bGwgbWV0YS1jaGFyYWN0ZXJzLgorIyBNYWtlIHR3byBwYXNzZXMgdG8gYWxsb3cgZm9yIHByb3Bl
ciBkdXBsaWNhdGUtYXJndW1lbnQgc3VwcHJlc3Npb24uCithY19jb25maWd1cmVfYXJncz0KK2Fj
X2NvbmZpZ3VyZV9hcmdzMD0KK2FjX2NvbmZpZ3VyZV9hcmdzMT0KK2FjX211c3Rfa2VlcF9uZXh0
PWZhbHNlCitmb3IgYWNfcGFzcyBpbiAxIDIKK2RvCisgIGZvciBhY19hcmcKKyAgZG8KKyAgICBj
YXNlICRhY19hcmcgaW4KKyAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vy
c2lvbiB8IC0tbm8tciopIGNvbnRpbnVlIDs7CisgICAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwg
LS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKKyAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8
IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICAgIGNvbnRpbnVlIDs7CisgICAgKlwnKikK
KyAgICAgIGFjX2FyZz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycv
ZyJgIDs7CisgICAgZXNhYworICAgIGNhc2UgJGFjX3Bhc3MgaW4KKyAgICAxKSBhc19mbl9hcHBl
bmQgYWNfY29uZmlndXJlX2FyZ3MwICIgJyRhY19hcmcnIiA7OworICAgIDIpCisgICAgICBhc19m
bl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MxICIgJyRhY19hcmcnIgorICAgICAgaWYgdGVzdCAk
YWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuCisJYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2Ug
IyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLgorICAgICAgZWxzZQorCWNhc2UgJGFjX2FyZyBp
bgorCSAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUt
KiBcCisJICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAt
LW5mKiBcCisJICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNpbCogfCAtdiB8
IC12ZXJiKiBcCisJICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhv
dXQtKiB8IC0teCkKKwkgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluCisJICAgICAg
IiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGludWUgOzsKKwkgICAg
ZXNhYworCSAgICA7OworCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVlIDs7CisJZXNhYwor
ICAgICAgZmkKKyAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJn
JyIKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCitkb25lCit7IGFjX2NvbmZpZ3VyZV9hcmdz
MD07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMDt9Cit7IGFjX2NvbmZpZ3VyZV9hcmdzMT07IHVu
c2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9CisKKyMgV2hlbiBpbnRlcnJ1cHRlZCBvciBleGl0J2Qs
IGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKKyMgY29uZmlnLmxvZy4gIFdl
IHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGluIHRoZXJlCisjIHdv
dWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KKyMgV0FSTklORzogVXNlICdcJycgdG8g
cmVwcmVzZW50IGFuIGFwb3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLgorIyBXQVJOSU5HOiBEbyBu
b3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRoIGEgbmV3bGluZSwgZHVlIHRvIGEgRnJlZUJTRCA0
LjAgYnVnLgordHJhcCAnZXhpdF9zdGF0dXM9JD8KKyAgIyBTYXZlIGludG8gY29uZmlnLmxvZyBz
b21lIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcuCisgIHsKKyAgICBl
Y2hvCisKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgQ2FjaGUgdmFy
aWFibGVzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKKyAgICBlY2hvCisgICAgIyBUaGUg
Zm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGlu
IHZhbHVlcywKKygKKyAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAnXCcncy9e
XChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdcJydgOyBkbworICAgIGV2YWwgYWNf
dmFsPVwkJGFjX3ZhcgorICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAorICAgICoke2FzX25sfSopCisg
ICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNv
bnRhaW5zIGEgbmV3bGluZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2
YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKKyAgICAgIGVzYWMK
KyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAor
ICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKyAgICAg
ICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7CisgICAgICBlc2FjIDs7Cisg
ICAgZXNhYworICBkb25lCisgIChzZXQpIDI+JjEgfAorICAgIGNhc2UgJGFzX25sYChhY19zcGFj
ZT0nXCcnICdcJyc7IHNldCkgMj4mMWAgaW4gIygKKyAgICAqJHthc19ubH1hY19zcGFjZT1cICop
CisgICAgICBzZWQgLW4gXAorCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9nOworCSAgcy9eXFwo
W18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXCcn
XFwyJ1wnJy9wIgorICAgICAgOzsgIygKKyAgICAqKQorICAgICAgc2VkIC1uICIvXltfJGFzX2Ny
X2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIKKyAgICAgIDs7CisgICAgZXNhYyB8Cisg
ICAgc29ydAorKQorICAgIGVjaG8KKworICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0t
LSAjIworIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjIgor
ICAgIGVjaG8KKyAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCisgICAgZG8KKyAgICAg
IGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAgICAgY2FzZSAkYWNfdmFsIGluCisgICAgICAqXCdc
JycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxc
XCdcJycnXCcnL2ciYDs7CisgICAgICBlc2FjCisgICAgICAkYXNfZWNobyAiJGFjX3Zhcj0nXCcn
JGFjX3ZhbCdcJyciCisgICAgZG9uZSB8IHNvcnQKKyAgICBlY2hvCisKKyAgICBpZiB0ZXN0IC1u
ICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLSAjIworIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLSAjIyIKKyAgICAgIGVjaG8KKyAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVz
CisgICAgICBkbworCWV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorCWNhc2UgJGFjX3ZhbCBpbgorCSpc
J1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxc
XFxcJ1wnJydcJycvZyJgOzsKKwllc2FjCisJJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwn
XCcnIgorICAgICAgZG9uZSB8IHNvcnQKKyAgICAgIGVjaG8KKyAgICBmaQorCisgICAgaWYgdGVz
dCAtcyBjb25mZGVmcy5oOyB0aGVuCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0gIyMK
KyMjIGNvbmZkZWZzLmguICMjCisjIyAtLS0tLS0tLS0tLSAjIyIKKyAgICAgIGVjaG8KKyAgICAg
IGNhdCBjb25mZGVmcy5oCisgICAgICBlY2hvCisgICAgZmkKKyAgICB0ZXN0ICIkYWNfc2lnbmFs
IiAhPSAwICYmCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWdu
YWwiCisgICAgJGFzX2VjaG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMiCisgIH0gPiY1Cisg
IHJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJgorICAgIHJtIC1mIC1yIGNvbmZ0
ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKKyAgICBleGl0ICRleGl0
X3N0YXR1cworJyAwCitmb3IgYWNfc2lnbmFsIGluIDEgMiAxMyAxNTsgZG8KKyAgdHJhcCAnYWNf
c2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFsCitkb25lCithY19z
aWduYWw9MAorCisjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGlt
aXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgorcm0gLWYgLXIgY29uZnRlc3QqIGNvbmZkZWZzLmgK
KworJGFzX2VjaG8gIi8qIGNvbmZkZWZzLmggKi8iID4gY29uZmRlZnMuaAorCisjIFByZWRlZmlu
ZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor
I2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiCitfQUNFT0YKKworY2F0ID4+Y29u
ZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgIiRQQUNLQUdFX1RBUk5B
TUUiCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdF
X1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8
PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIgorX0FDRU9G
CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQg
IiRQQUNLQUdFX0JVR1JFUE9SVCIKK19BQ0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CisjZGVmaW5lIFBBQ0tBR0VfVVJMICIkUEFDS0FHRV9VUkwiCitfQUNFT0YKKworCisjIExldCB0
aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0
by4KKyMgUHJlZmVyIGFuIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5
IHNlbGVjdGVkIG9uZXMuCithY19zaXRlX2ZpbGUxPU5PTkUKK2FjX3NpdGVfZmlsZTI9Tk9ORQor
aWYgdGVzdCAtbiAiJENPTkZJR19TSVRFIjsgdGhlbgorICAjIFdlIGRvIG5vdCB3YW50IGEgUEFU
SCBzZWFyY2ggZm9yIGNvbmZpZy5zaXRlLgorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgKKyAg
ICAtKikgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICAgICovKikgYWNfc2l0ZV9m
aWxlMT0kQ09ORklHX1NJVEU7OworICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lU
RTs7CisgIGVzYWMKK2VsaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisgIGFjX3Np
dGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQorICBhY19zaXRlX2ZpbGUyPSRwcmVm
aXgvZXRjL2NvbmZpZy5zaXRlCitlbHNlCisgIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRfcHJl
Zml4L3NoYXJlL2NvbmZpZy5zaXRlCisgIGFjX3NpdGVfZmlsZTI9JGFjX2RlZmF1bHRfcHJlZml4
L2V0Yy9jb25maWcuc2l0ZQorZmkKK2ZvciBhY19zaXRlX2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUx
IiAiJGFjX3NpdGVfZmlsZTIiCitkbworICB0ZXN0ICJ4JGFjX3NpdGVfZmlsZSIgPSB4Tk9ORSAm
JiBjb250aW51ZQorICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFjX3NpdGVfZmlsZSIgJiYgdGVz
dCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1Cisk
YXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9
CisgICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1CisgICAgLiAiJGFjX3NpdGVf
ZmlsZSIgXAorICAgICAgfHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjog
aW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiZmFpbGVkIHRvIGxvYWQgc2l0
ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWls
cyIgIiRMSU5FTk8iIDU7IH0KKyAgZmkKK2RvbmUKKworaWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUi
OyB0aGVuCisgICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2UgL2Rl
di9udWxsIChzcGVjaWFsIGZpbGVzCisgICMgYWN0dWFsbHkpLCBzbyB3ZSBhdm9pZCBkb2luZyB0
aGF0LiAgREpHUFAgZW11bGF0ZXMgaXQgYXMgYSByZWd1bGFyIGZpbGUuCisgIGlmIHRlc3QgL2Rl
di9udWxsICE9ICIkY2FjaGVfZmlsZSIgJiYgdGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuCisg
ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIGNhY2hl
ICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcgY2FjaGUgJGNhY2hl
X2ZpbGUiID4mNjt9CisgICAgY2FzZSAkY2FjaGVfZmlsZSBpbgorICAgICAgW1xcL10qIHwgPzpb
XFwvXSogKSAuICIkY2FjaGVfZmlsZSI7OworICAgICAgKikgICAgICAgICAgICAgICAgICAgICAg
LiAiLi8kY2FjaGVfZmlsZSI7OworICAgIGVzYWMKKyAgZmkKK2Vsc2UKKyAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30K
KyAgPiRjYWNoZV9maWxlCitmaQorCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3QgIiBzeXMv
dGltZS5oIgorYXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9saXN0ICIgdW5pc3RkLmgiCithc19mbl9h
cHBlbmQgYWNfZnVuY19saXN0ICIgYWxhcm0iCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3Qg
IiBzdGRsaWIuaCIKK2FzX2ZuX2FwcGVuZCBhY19oZWFkZXJfbGlzdCAiIHN5cy9wYXJhbS5oIgor
IyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhh
dmUga2VwdCB0aGUgc2FtZQorIyB2YWx1ZS4KK2FjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQorZm9y
IGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KKyAgZXZhbCBhY19vbGRfc2V0PVwkYWNf
Y3ZfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFy
fV9zZXQKKyAgZXZhbCBhY19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZQorICBl
dmFsIGFjX25ld192YWw9XCRhY19lbnZfJHthY192YXJ9X3ZhbHVlCisgIGNhc2UgJGFjX29sZF9z
ZXQsJGFjX25ld19zZXQgaW4KKyAgICBzZXQsKQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29s
ZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6
IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVu
IiA+JjI7fQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKKyAgICAsc2V0KQorICAgICAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy
JyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6
IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9
CisgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OworICAgICwpOzsKKyAgICAqKQorICAgICAg
aWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgorCSMgZGlmZmVy
ZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLgorCWFjX29sZF92YWxf
dz1gZWNobyB4ICRhY19vbGRfdmFsYAorCWFjX25ld192YWxfdz1gZWNobyB4ICRhY19uZXdfdmFs
YAorCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbgorCSAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy
JyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVu
OiIgPiYyO30KKwkgIGFjX2NhY2hlX2NvcnJ1cHRlZD06CisJZWxzZQorCSAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNl
IGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNf
ZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAk
YWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGV2YWwgJGFjX3Zhcj1c
JGFjX29sZF92YWwKKwlmaQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1CiskYXNfZWNobyAiJGFzX21l
OiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7fQorCXsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBjdXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFs
JyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwn
IiA+JjI7fQorICAgICAgZmk7OworICBlc2FjCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMg
dG8gY29uZmlnLnN0YXR1cy4KKyAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCisg
ICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgorICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNo
byAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgKikgYWNf
YXJnPSRhY192YXI9JGFjX25ld192YWwgOzsKKyAgICBlc2FjCisgICAgY2FzZSAiICRhY19jb25m
aWd1cmVfYXJncyAiIGluCisgICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4g
IFVzZSBvZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFjeS4KKyAgICAgICopIGFzX2ZuX2FwcGVuZCBh
Y19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIgOzsKKyAgICBlc2FjCisgIGZpCitkb25lCitp
ZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNf
bWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2Fu
IGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFu
Z2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9Cisg
IGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hl
X2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQorZmkKKyMjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCisjIyBNYWluIGJvZHkgb2Ygc2NyaXB0LiAjIworIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxl
PSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5r
PSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNv
bmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBp
bGVyX2dudQorCisKKworYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIC4uL2NvbmZp
Zy9Ub29scy5tayIKKworYWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBjb25m
aWcuaCIKKworCithY19hdXhfZGlyPQorZm9yIGFjX2RpciBpbiAuICIkc3JjZGlyIi8uOyBkbwor
ICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0k
YWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAg
ICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBh
Y19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxs
LnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVu
CisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIv
c2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRh
Y19hdXhfZGlyIjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1z
aCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIC4gXCIkc3JjZGlyXCIvLiIgIiRMSU5FTk8iIDUK
K2ZpCisKKyMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3Vw
cG9ydGVkLAorIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBB
dXRvY29uZiByZWxlYXNlLgorIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEg
YnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5CisjIHdob3NlIGZ1bGwgbmFt
ZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAk
YWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCith
Y19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRv
bid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZp
Z3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KKworCisKKyMgQ2hlY2sgaWYgQ0ZM
QUdTLCBMREZMQUdTLCBMSUJTLCBDUFBGTEFHUyBvciBDUFAgaXMgc2V0IGFuZCBwcmludCBhIHdh
cm5pbmcKKworaWYgdGVzdCAtbiAiJENDJENGTEFHUyRMREZMQUdTJExJQlMkQ1BQRkxBR1MkQ1BQ
IjsgdGhlbiA6CisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IFdBUk5JTkc6IFNldHRpbmcgQ0MsIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3Ig
Q1BQIGlzIG5vdCBcCityZWNvbW1lbmRlZCwgdXNlIFBSRVBFTkRfSU5DTFVERVMsIFBSRVBFTkRf
TElCLCBcCitBUFBFTkRfSU5DTFVERVMgYW5kIEFQUEVORF9MSUIgaW5zdGVhZCB3aGVuIHBvc3Np
YmxlLiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBTZXR0aW5nIENDLCBDRkxBR1Ms
IExERkxBR1MsIExJQlMsIENQUEZMQUdTIG9yIENQUCBpcyBub3QgXAorcmVjb21tZW5kZWQsIHVz
ZSBQUkVQRU5EX0lOQ0xVREVTLCBQUkVQRU5EX0xJQiwgXAorQVBQRU5EX0lOQ0xVREVTIGFuZCBB
UFBFTkRfTElCIGluc3RlYWQgd2hlbiBwb3NzaWJsZS4iID4mMjt9CisKK2ZpCisKK2FjX2V4dD1j
CithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQ
UEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFj
X2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJT
ID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2lmIHRlc3QgLW4g
IiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIk
e2FjX3Rvb2xfcHJlZml4fWdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1nY2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHth
Y19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0Mi
ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRh
c19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3Qg
LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJHthY190
b29sX3ByZWZpeH1nY2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgor
ICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2
X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7
IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16
ICIkYWNfY3ZfcHJvZ19DQyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgICMgRXh0cmFjdCB0aGUg
Zmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0ND
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
aWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNf
Y3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9J
RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAg
SUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZv
ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7
IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19j
dF9DQz0iZ2NjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv
dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkK
K2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0NDPSRhY19j
dl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQor
JGFzX2VjaG8gIiRhY19jdF9DQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsg
fQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAgICBDQz0iIgorICBl
bHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hv
ICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv
c3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENDPSRh
Y19jdF9DQworICBmaQorZWxzZQorICBDQz0iJGFjX2N2X3Byb2dfQ0MiCitmaQorCitpZiB0ZXN0
IC16ICIkQ0MiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4Ijsg
dGhlbgorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1j
YyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHth
Y190b29sX3ByZWZpeH1jYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFs
c2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0
IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3Zl
cnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB
VE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3Qg
LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l
eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgorICAg
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQor
SUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1u
ICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNo
byAibm8iID4mNjsgfQorZmkKKworCisgIGZpCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgor
ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQor
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2
X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor
ZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBM
ZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3Byb2dfcmVqZWN0ZWQ9
bm8KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4g
JFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf
ZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u
czsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAk
YXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGlm
IHRlc3QgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNiL2NjIjsgdGhl
bgorICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzCisgICAgICAgY29udGludWUKKyAgICAgZmkK
KyAgICBhY19jdl9wcm9nX0NDPSJjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBi
cmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworaWYgdGVzdCAk
YWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbgorICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhl
IHBhdGgsIHNvIG1ha2Ugc3VyZSB3ZSBuZXZlciB1c2UgaXQuCisgIHNldCBkdW1teSAkYWNfY3Zf
cHJvZ19DQworICBzaGlmdAorICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgICAjIFdlIGNob3Nl
IGEgZGlmZmVyZW50IGNvbXBpbGVyIGZyb20gdGhlIGJvZ3VzIG9uZS4KKyAgICAjIEhvd2V2ZXIs
IGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28gdGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuCisg
ICAgIyBmaXJzdCBpZiB3ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVs
bCBmaWxlIG5hbWUuCisgICAgc2hpZnQKKyAgICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193
b3JkJHsxKycgJ30kQCIKKyAgZmkKK2ZpCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0
ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Cisk
YXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgor
ICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGNs
LmV4ZQorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJl
Zml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0
IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Cisk
YXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zf
cHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl
bHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElG
Uz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2
ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19l
eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3By
ZWZpeCRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAg
ZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19jdl9w
cm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9
CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgdGVzdCAtbiAiJEND
IiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBhY19jdF9D
Qz0kQ0MKKyAgZm9yIGFjX3Byb2cgaW4gY2wuZXhlCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNf
Y3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9
IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9n
X2FjX2N0X0NDPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVh
ayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19j
dF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0
X0NDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g
Im5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQ0MiICYmIGJyZWFrCitkb25l
CisKKyAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCisgICAgQ0M9IiIKKyAgZWxzZQor
ICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3Nz
IHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFz
X21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRy
aXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDQz0kYWNfY3Rf
Q0MKKyAgZmkKK2ZpCisKK2ZpCisKKwordGVzdCAteiAiJENDIiAmJiB7IHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRh
c19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9y
ICQ/ICJubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICitTZWUgXGBjb25m
aWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorCisjIFByb3ZpZGUgc29t
ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCiskYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZXJzaW9uIiA+JjUKK3Nl
dCBYICRhY19jb21waWxlCithY19jb21waWxlcj0kMgorZm9yIGFjX29wdGlvbiBpbiAtLXZlcnNp
b24gLXYgLVYgLXF2ZXJzaW9uOyBkbworICB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZXIgJGFjX29w
dGlvbiA+JjUiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNf
dHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2
YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9l
Y2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21w
aWxlciAkYWNfb3B0aW9uID4mNSIpIDI+Y29uZnRlc3QuZXJyCisgIGFjX3N0YXR1cz0kPworICBp
ZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIHNlZCAnMTBhXAorLi4uIHJlc3Qgb2Yg
c3RkZXJyIG91dHB1dCBkZWxldGVkIC4uLgorICAgICAgICAgMTBxJyBjb25mdGVzdC5lcnIgPmNv
bmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgIGZpCisgIHJtIC1mIGNvbmZ0
ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KK2Rv
bmUKKworY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k
IGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOwor
fQorX0FDRU9GCithY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcworYWNfY2xlYW5f
ZmlsZXM9IiRhY19jbGVhbl9maWxlcyBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGIub3V0IgorIyBU
cnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgd2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEu
b3V0LgorIyBJdCB3aWxsIGhlbHAgdXMgZGlhZ25vc2UgYnJva2VuIGNvbXBpbGVycywgYW5kIGZp
bmRpbmcgb3V0IGFuIGludHVpdGlvbgorIyBvZiBleGVleHQuCit7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29y
a3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3Jr
cy4uLiAiID4mNjsgfQorYWNfbGlua19kZWZhdWx0PWAkYXNfZWNobyAiJGFjX2xpbmsiIHwgc2Vk
ICdzLyAtbyAqY29uZnRlc3RbXiBdKi8vJ2AKKworIyBUaGUgcG9zc2libGUgb3V0cHV0IGZpbGVz
OgorYWNfZmlsZXM9ImEub3V0IGNvbmZ0ZXN0LmV4ZSBjb25mdGVzdCBhLmV4ZSBhX291dC5leGUg
Yi5vdXQgY29uZnRlc3QuKiIKKworYWNfcm1maWxlcz0KK2ZvciBhY19maWxlIGluICRhY19maWxl
cworZG8KKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRk
cyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8
ICouZFNZTSB8ICoubyB8ICoub2JqICkgOzsKKyAgICAqICkgYWNfcm1maWxlcz0iJGFjX3JtZmls
ZXMgJGFjX2ZpbGUiOzsKKyAgZXNhYworZG9uZQorcm0gLWYgJGFjX3JtZmlsZXMKKworaWYgeyB7
IGFjX3RyeT0iJGFjX2xpbmtfZGVmYXVsdCIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8
ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRh
Y190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQor
ICAoZXZhbCAiJGFjX2xpbmtfZGVmYXVsdCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQor
ICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAgIyBBdXRvY29uZi0yLjEzIGNvdWxk
IHNldCB0aGUgYWNfY3ZfZXhlZXh0IHZhcmlhYmxlIHRvIGBubycuCisjIFNvIGlnbm9yZSBhIHZh
bHVlIG9mIGBubycsIG90aGVyd2lzZSB0aGlzIHdvdWxkIGxlYWQgdG8gYEVYRUVYVCA9IG5vJwor
IyBpbiBhIE1ha2VmaWxlLiAgV2Ugc2hvdWxkIG5vdCBvdmVycmlkZSBhY19jdl9leGVleHQgaWYg
aXQgd2FzIGNhY2hlZCwKKyMgc28gdGhhdCB0aGUgdXNlciBjYW4gc2hvcnQtY2lyY3VpdCB0aGlz
IHRlc3QgZm9yIGNvbXBpbGVycyB1bmtub3duIHRvCisjIEF1dG9jb25mLgorZm9yIGFjX2ZpbGUg
aW4gJGFjX2ZpbGVzICcnCitkbworICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKKyAg
Y2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8
ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8
ICoubyB8ICoub2JqICkKKwk7OworICAgIFthYl0ub3V0ICkKKwkjIFdlIGZvdW5kIHRoZSBkZWZh
dWx0IGV4ZWN1dGFibGUsIGJ1dCBleGVleHQ9JycgaXMgbW9zdAorCSMgY2VydGFpbmx5IHJpZ2h0
LgorCWJyZWFrOzsKKyAgICAqLiogKQorCWlmIHRlc3QgIiR7YWNfY3ZfZXhlZXh0K3NldH0iID0g
c2V0ICYmIHRlc3QgIiRhY19jdl9leGVleHQiICE9IG5vOworCXRoZW4gOjsgZWxzZQorCSAgIGFj
X2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAorCWZpCisJIyBX
ZSBzZXQgYWNfY3ZfZXhlZXh0IGhlcmUgYmVjYXVzZSB0aGUgbGF0ZXIgdGVzdCBmb3IgaXQgaXMg
bm90CisJIyBzYWZlOiBjcm9zcyBjb21waWxlcnMgbWF5IG5vdCBhZGQgdGhlIHN1ZmZpeCBpZiBn
aXZlbiBhbiBgLW8nCisJIyBhcmd1bWVudCwgc28gd2UgbWF5IG5lZWQgdG8ga25vdyBpdCBhdCB0
aGF0IHBvaW50IGFscmVhZHkuCisJIyBFdmVuIGlmIHRoaXMgc2VjdGlvbiBsb29rcyBjcnVmdHk6
IGl0IGhhcyB0aGUgYWR2YW50YWdlIG9mCisJIyBhY3R1YWxseSB3b3JraW5nLgorCWJyZWFrOzsK
KyAgICAqICkKKwlicmVhazs7CisgIGVzYWMKK2RvbmUKK3Rlc3QgIiRhY19jdl9leGVleHQiID0g
bm8gJiYgYWNfY3ZfZXhlZXh0PQorCitlbHNlCisgIGFjX2ZpbGU9JycKK2ZpCitpZiB0ZXN0IC16
ICIkYWNfZmlsZSI7IHRoZW4gOgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyRhc19lY2hvICIk
YXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4k
YWNfZXh0ID4mNQorCit7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
ZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBc
YCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJDIGNvbXBpbGVyIGNhbm5vdCBjcmVh
dGUgZXhlY3V0YWJsZXMKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElO
RU5PIiA1OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciBk
ZWZhdWx0IG91dHB1dCBmaWxlIG5hbWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEMg
Y29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLi4uICIgPiY2OyB9Cit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2ZpbGUiID4mNQorJGFz
X2VjaG8gIiRhY19maWxlIiA+JjY7IH0KK2FjX2V4ZWV4dD0kYWNfY3ZfZXhlZXh0CisKK3JtIC1m
IC1yIGEub3V0IGEub3V0LmRTWU0gYS5leGUgY29uZnRlc3QkYWNfY3ZfZXhlZXh0IGIub3V0Cith
Y19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMuLi4gIiA+
JjY7IH0KK2lmIHsgeyBhY190cnk9IiRhY19saW5rIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAq
XCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2Vj
aG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0g
PiY1CisgIChldmFsICIkYWNfbGluayIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0
ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKKyAgIyBJZiBib3RoIGBjb25mdGVzdC5leGUn
IGFuZCBgY29uZnRlc3QnIGFyZSBgcHJlc2VudCcgKHdlbGwsIG9ic2VydmFibGUpCisjIGNhdGNo
IGBjb25mdGVzdC5leGUnLiAgRm9yIGluc3RhbmNlIHdpdGggQ3lnd2luLCBgbHMgY29uZnRlc3Qn
IHdpbGwKKyMgd29yayBwcm9wZXJseSAoaS5lLiwgcmVmZXIgdG8gYGNvbmZ0ZXN0LmV4ZScpLCB3
aGlsZSBpdCB3b24ndCB3aXRoCisjIGBybScuCitmb3IgYWNfZmlsZSBpbiBjb25mdGVzdC5leGUg
Y29uZnRlc3QgY29uZnRlc3QuKjsgZG8KKyAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVl
CisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAq
LmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRT
WU0gfCAqLm8gfCAqLm9iaiApIDs7CisgICAgKi4qICkgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNf
ZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCisJICBicmVhazs7CisgICAgKiApIGJyZWFrOzsKKyAg
ZXNhYworZG9uZQorZWxzZQorICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9y
OiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBz
dWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCitTZWUgXGBjb25m
aWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorZmkKK3JtIC1mIGNvbmZ0
ZXN0IGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9leGVleHQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9l
eGVleHQiID4mNjsgfQorCitybSAtZiBjb25mdGVzdC4kYWNfZXh0CitFWEVFWFQ9JGFjX2N2X2V4
ZWV4dAorYWNfZXhlZXh0PSRFWEVFWFQKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgor
aW50CittYWluICgpCit7CitGSUxFICpmID0gZm9wZW4gKCJjb25mdGVzdC5vdXQiLCAidyIpOwor
IHJldHVybiBmZXJyb3IgKGYpIHx8IGZjbG9zZSAoZikgIT0gMDsKKworICA7CisgIHJldHVybiAw
OworfQorX0FDRU9GCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGNvbmZ0ZXN0Lm91
dCIKKyMgQ2hlY2sgdGhhdCB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2Fu
IHJ1bi4gIElmIG5vdCwgZWl0aGVyCisjIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNy
b3NzIGNvbXBpbGUuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyIgPiY1CiskYXNfZWNob19uICJj
aGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmcuLi4gIiA+JjY7IH0KK2lmIHRl
c3QgIiRjcm9zc19jb21waWxpbmciICE9IHllczsgdGhlbgorICB7IHsgYWNfdHJ5PSIkYWNfbGlu
ayIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNo
bz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190
cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIK
KyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1
CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICBpZiB7
IGFjX3RyeT0nLi9jb25mdGVzdCRhY19jdl9leGVleHQnCisgIHsgeyBjYXNlICIoKCRhY190cnki
IGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBh
Y190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9l
Y2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnkiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGlu
Zz1ubworICBlbHNlCisgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhl
bgorCWNyb3NzX2NvbXBpbGluZz15ZXMKKyAgICBlbHNlCisJeyB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNo
byAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAi
Y2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgorSWYgeW91IG1lYW50IHRvIGNyb3NzIGNv
bXBpbGUsIHVzZSBcYC0taG9zdCcuCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxz
IiAiJExJTkVOTyIgNTsgfQorICAgIGZpCisgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjcm9zc19jb21waWxpbmciID4mNQorJGFzX2Vj
aG8gIiRjcm9zc19jb21waWxpbmciID4mNjsgfQorCitybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNv
bmZ0ZXN0JGFjX2N2X2V4ZWV4dCBjb25mdGVzdC5vdXQKK2FjX2NsZWFuX2ZpbGVzPSRhY19jbGVh
bl9maWxlc19zYXZlCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNr
aW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X29i
amV4dCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30K
K19BQ0VPRgorcm0gLWYgY29uZnRlc3QubyBjb25mdGVzdC5vYmoKK2lmIHsgeyBhY190cnk9IiRh
Y19jb21waWxlIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFj
X3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitl
dmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlf
ZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY29t
cGlsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAw
OyB9OyB0aGVuIDoKKyAgZm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QubyBjb25mdGVzdC5vYmogY29u
ZnRlc3QuKjsgZG8KKyAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlOworICBjYXNlICRh
Y19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIg
fCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNICkgOzsKKyAg
ICAqKSBhY19jdl9vYmpleHQ9YGV4cHIgIiRhY19maWxlIiA6ICcuKlwuXCguKlwpJ2AKKyAgICAg
ICBicmVhazs7CisgIGVzYWMKK2RvbmUKK2Vsc2UKKyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVk
IHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisK
K3sgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAk
YWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjI7fQorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmls
ZXM6IGNhbm5vdCBjb21waWxlCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAi
JExJTkVOTyIgNTsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3Qu
JGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3Zfb2JqZXh0IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfb2JqZXh0IiA+JjY7IH0K
K09CSkVYVD0kYWNfY3Zfb2JqZXh0CithY19vYmpleHQ9JE9CSkVYVAoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0
aGUgR05VIEMgY29tcGlsZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBh
cmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfY29t
cGlsZXJfZ251Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
K2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog
ZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKyNpZm5kZWYgX19HTlVDX18K
KyAgICAgICBjaG9rZSBtZQorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgor
aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jb21waWxlcl9n
bnU9eWVzCitlbHNlCisgIGFjX2NvbXBpbGVyX2dudT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfY3ZfY19jb21w
aWxlcl9nbnU9JGFjX2NvbXBpbGVyX2dudQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1CiskYXNf
ZWNobyAiJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2NvbXBpbGVy
X2dudSA9IHllczsgdGhlbgorICBHQ0M9eWVzCitlbHNlCisgIEdDQz0KK2ZpCithY190ZXN0X0NG
TEFHUz0ke0NGTEFHUytzZXR9CithY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMg
LWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAi
ID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nf
d2Vycm9yX2ZsYWcKKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9eWVzCisgICBhY19jdl9wcm9nX2NjX2c9
bm8KKyAgIENGTEFHUz0iLWciCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F
Tk8iOyB0aGVuIDoKKyAgYWNfY3ZfcHJvZ19jY19nPXllcworZWxzZQorICBDRkxBR1M9IiIKKyAg
ICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30K
K19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNl
CisgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZworCSBDRkxBR1M9Ii1n
IgorCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9
CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNf
Y3ZfcHJvZ19jY19nPXllcworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv
bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgYWNfY193ZXJy
b3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ciID4mNQorJGFzX2Vj
aG8gIiRhY19jdl9wcm9nX2NjX2ciID4mNjsgfQoraWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiA9
IHNldDsgdGhlbgorICBDRkxBR1M9JGFjX3NhdmVfQ0ZMQUdTCitlbGlmIHRlc3QgJGFjX2N2X3By
b2dfY2NfZyA9IHllczsgdGhlbgorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIENG
TEFHUz0iLWcgLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPSItZyIKKyAgZmkKK2Vsc2UKKyAgaWYg
dGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1PMiIKKyAgZWxzZQorICAgIENG
TEFHUz0KKyAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5IiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5Li4uICIgPiY2OyB9
CitpZiAke2FjX2N2X3Byb2dfY2NfYzg5Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAi
KGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19jY19jODk9bm8KK2FjX3NhdmVfQ0M9
JENDCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLyogTW9zdCBv
ZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mgc3JjL2NvbmYu
c2guICAqLworc3RydWN0IGJ1ZiB7IGludCB4OyB9OworRklMRSAqICgqcmNzb3BlbikgKHN0cnVj
dCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKK3N0YXRpYyBjaGFyICplIChwLCBpKQorICAg
ICBjaGFyICoqcDsKKyAgICAgaW50IGk7Cit7CisgIHJldHVybiBwW2ldOworfQorc3RhdGljIGNo
YXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQpLCBjaGFyICoqcCwgLi4uKQoreworICBj
aGFyICpzOworICB2YV9saXN0IHY7CisgIHZhX3N0YXJ0ICh2LHApOworICBzID0gZyAocCwgdmFf
YXJnICh2LGludCkpOworICB2YV9lbmQgKHYpOworICByZXR1cm4gczsKK30KKworLyogT1NGIDQu
MCBDb21wYXEgY2MgaXMgc29tZSBzb3J0IG9mIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQuICBJdCBo
YXMKKyAgIGZ1bmN0aW9uIHByb3RvdHlwZXMgYW5kIHN0dWZmLCBidXQgbm90ICdceEhIJyBoZXgg
Y2hhcmFjdGVyIGNvbnN0YW50cy4KKyAgIFRoZXNlIGRvbid0IHByb3Zva2UgYW4gZXJyb3IgdW5m
b3J0dW5hdGVseSwgaW5zdGVhZCBhcmUgc2lsZW50bHkgdHJlYXRlZAorICAgYXMgJ3gnLiAgVGhl
IGZvbGxvd2luZyBpbmR1Y2VzIGFuIGVycm9yLCB1bnRpbCAtc3RkIGlzIGFkZGVkIHRvIGdldAor
ICAgcHJvcGVyIEFOU0kgbW9kZS4gIEN1cmlvdXNseSAnXHgwMCchPSd4JyBhbHdheXMgY29tZXMg
b3V0IHRydWUsIGZvciBhbgorICAgYXJyYXkgc2l6ZSBhdCBsZWFzdC4gIEl0J3MgbmVjZXNzYXJ5
IHRvIHdyaXRlICdceDAwJz09MCB0byBnZXQgc29tZXRoaW5nCisgICB0aGF0J3MgdHJ1ZSBvbmx5
IHdpdGggLXN0ZC4gICovCitpbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAgPyAxIDogLTFd
OworCisvKiBJQk0gQyA2IGZvciBBSVggaXMgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0
IHJlcGxhY2VzIG1hY3JvIHBhcmFtZXRlcnMKKyAgIGluc2lkZSBzdHJpbmdzIGFuZCBjaGFyYWN0
ZXIgY29uc3RhbnRzLiAgKi8KKyNkZWZpbmUgRk9PKHgpICd4JworaW50IHhsYzZfY2NfYXJyYXlb
Rk9PKGEpID09ICd4JyA/IDEgOiAtMV07CisKK2ludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOwor
c3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307CitzdHJ1Y3QgczIge2ludCAoKmYpIChkb3Vi
bGUgYSk7fTsKK2ludCBwYWlybmFtZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBi
dWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KSwgaW50LCBpbnQpOworaW50IGFyZ2M7CitjaGFyICoq
YXJndjsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9IGFyZ3ZbMF0g
IHx8ICBmIChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOworICA7CisgIHJldHVybiAwOworfQorX0FD
RU9GCitmb3IgYWNfYXJnIGluICcnIC1xbGFuZ2x2bD1leHRjODkgLXFsYW5nbHZsPWFuc2kgLXN0
ZCBcCisJLUFlICItQWEgLURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VYVEVOU0lPTlNfXyIKK2Rv
CisgIENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIgorICBpZiBhY19mbl9jX3RyeV9jb21waWxlICIk
TElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Byb2dfY2NfYzg5PSRhY19hcmcKK2ZpCitybSAtZiBj
b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CisgIHRlc3QgIngkYWNfY3ZfcHJv
Z19jY19jODkiICE9ICJ4bm8iICYmIGJyZWFrCitkb25lCitybSAtZiBjb25mdGVzdC4kYWNfZXh0
CitDQz0kYWNfc2F2ZV9DQworCitmaQorIyBBQ19DQUNIRV9WQUwKK2Nhc2UgIngkYWNfY3ZfcHJv
Z19jY19jODkiIGluCisgIHgpCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IG5vbmUgbmVlZGVkIiA+JjUKKyRhc19lY2hvICJub25lIG5lZWRlZCIg
PiY2OyB9IDs7CisgIHhubykKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogdW5zdXBwb3J0ZWQiID4mNQorJGFzX2VjaG8gInVuc3VwcG9ydGVkIiA+
JjY7IH0gOzsKKyAgKikKKyAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX2M4OSIKKyAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2df
Y2NfYzg5IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcHJvZ19jY19jODkiID4mNjsgfSA7OworZXNh
YworaWYgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0geG5vOyB0aGVuIDoKKworZmkKKwor
YWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENG
TEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29u
ZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19l
eHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisK
K2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRD
RkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNv
bmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNf
ZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJ1
biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJ1
biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gIiA+JjY7IH0KKyMgT24gU3Vucywgc29tZXRpbWVzICRD
UFAgbmFtZXMgYSBkaXJlY3RvcnkuCitpZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQ
IjsgdGhlbgorICBDUFA9CitmaQoraWYgdGVzdCAteiAiJENQUCI7IHRoZW4KKyAgaWYgJHthY19j
dl9wcm9nX0NQUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CitlbHNlCisgICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhw
YW5kZWQKKyAgICBmb3IgQ1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIg
Ii9saWIvY3BwIgorICAgIGRvCisgICAgICBhY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNfY19w
cmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhh
dCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJlc2gg
Y3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5o
PiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2
ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVu
cyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0
aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNl
CisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAgU3ludGF4IGVycm9yCitfQUNF
T0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgICMgQnJv
a2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNhbmUg
Y2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJl
IGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0
LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25leGlzdGVu
dC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKyAgIyBC
cm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgICMgUGFz
c2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCitkb25lCisjIEJlY2F1c2Ugb2Yg
YGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4K
K3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRhY19w
cmVwcm9jX29rOyB0aGVuIDoKKyAgYnJlYWsKK2ZpCisKKyAgICBkb25lCisgICAgYWNfY3ZfcHJv
Z19DUFA9JENQUAorCitmaQorICBDUFA9JGFjX2N2X3Byb2dfQ1BQCitlbHNlCisgIGFjX2N2X3By
b2dfQ1BQPSRDUFAKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJENQUCIgPiY1CiskYXNfZWNobyAiJENQUCIgPiY2OyB9CithY19wcmVwcm9jX29r
PWZhbHNlCitmb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNl
IGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMK
KyAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgUHJlZmVyIDxsaW1p
dHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAjIDxs
aW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KKyAgIyBPbiB0
aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNl
ciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBj
YXRjaCB0aGlzIGNhc2UuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRl
IDxsaW1pdHMuaD4KKyNlbHNlCisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAg
U3ludGF4IGVycm9yCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4g
OgorCitlbHNlCisgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitm
aQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCisgICMg
T0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBo
ZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNs
dWRlIDxhY19ub25leGlzdGVudC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5F
Tk8iOyB0aGVuIDoKKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRp
bnVlCitlbHNlCisgICMgUGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFr
CitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCitk
b25lCisjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcg
Y29kZSB3YXMgc2tpcHBlZC4KK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0
LiRhY19leHQKK2lmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKKworZWxzZQorICB7IHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2Zu
X2Vycm9yICQ/ICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKK1Nl
ZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitmaQorCith
Y19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZM
QUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25m
dGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4
dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKwor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3Jl
cCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9Citp
ZiAke2FjX2N2X3BhdGhfR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dS
RVBfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0
IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI
X1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9i
aW4KK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KKyAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4
dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9HUkVQ
PSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0
aF9HUkVQIiAmJiAkYXNfdGVzdF94ICIkYWNfcGF0aF9HUkVQIjsgfSB8fCBjb250aW51ZQorIyBD
aGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgor
ICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAorY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0t
dmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JF
UCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19u
IDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29u
ZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0
LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgor
ICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAi
IC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0
ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJj
b25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFj
X2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0
ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNh
dmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRo
X0dSRVA9IiRhY19wYXRoX0dSRVAiCisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAor
ICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVu
b3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1m
IGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNh
YworCisgICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRv
bmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9H
UkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQg
YmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIg
NQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKK2ZpCisKK2ZpCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfR1JF
UCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfR1JFUCIgPiY2OyB9CisgR1JFUD0iJGFjX2N2
X3BhdGhfR1JFUCIKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciBlZ3JlcCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZWdyZXAu
Li4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9FR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGVjaG8gYSB8ICRHUkVQIC1FICco
YXxiKScgPi9kZXYvbnVsbCAyPiYxCisgICB0aGVuIGFjX2N2X3BhdGhfRUdSRVA9IiRHUkVQIC1F
IgorICAgZWxzZQorICAgICBpZiB0ZXN0IC16ICIkRUdSRVAiOyB0aGVuCisgIGFjX3BhdGhfRUdS
RVBfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0
IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI
X1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9i
aW4KK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KKyAgICBmb3IgYWNfcHJvZyBpbiBlZ3JlcDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4g
JycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfRUdSRVA9IiRh
c19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICB7IHRlc3QgLWYgIiRhY19wYXRoX0VH
UkVQIiAmJiAkYXNfdGVzdF94ICIkYWNfcGF0aF9FR1JFUCI7IH0gfHwgY29udGludWUKKyMgQ2hl
Y2sgZm9yIEdOVSBhY19wYXRoX0VHUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisg
ICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9FR1JFUAorY2FzZSBgIiRhY19wYXRoX0VHUkVQIiAt
LXZlcnNpb24gMj4mMWAgaW4KKypHTlUqKQorICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9F
R1JFUCIgYWNfcGF0aF9FR1JFUF9mb3VuZD06OzsKKyopCisgIGFjX2NvdW50PTAKKyAgJGFzX2Vj
aG9fbiAwMTIzNDU2Nzg5ID4iY29uZnRlc3QuaW4iCisgIHdoaWxlIDoKKyAgZG8KKyAgICBjYXQg
ImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgorICAgIG12ICJjb25m
dGVzdC50bXAiICJjb25mdGVzdC5pbiIKKyAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5u
bCIKKyAgICAkYXNfZWNobyAnRUdSRVAnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhf
RUdSRVAiICdFR1JFUCQnIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251
bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYv
bnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19j
b3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9FR1JFUF9t
YXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxv
b2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9FR1JFUD0iJGFjX3BhdGhf
RUdSRVAiCisgICAgICBhY19wYXRoX0VHUkVQX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMg
MTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0
ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBj
b25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFj
X3BhdGhfRUdSRVBfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJ
RlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsgdGhlbgor
ICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxkIGJlIGZvdW5kIGlu
ICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vs
c2UKKyAgYWNfY3ZfcGF0aF9FR1JFUD0kRUdSRVAKK2ZpCisKKyAgIGZpCitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX0VHUkVQ
IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9FR1JFUCIgPiY2OyB9CisgRUdSRVA9IiRhY19j
dl9wYXRoX0VHUkVQIgorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfaGVh
ZGVyX3N0ZGMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor
ZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBl
bmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJn
Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmxvYXQuaD4KKworaW50CittYWlu
ICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29t
cGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKK2Vsc2UKKyAg
YWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz
dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0
ZGMgPSB5ZXM7IHRoZW4KKyAgIyBTdW5PUyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBt
ZW0qLCBjb250cmFyeSB0byBBTlNJLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAor
ICAkRUdSRVAgIm1lbWNociIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKworZWxzZQorICBhY19j
dl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQorCitpZiB0ZXN0ICRh
Y19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2Vz
IG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCisgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNs
dWRlIDxzdGRsaWIuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNf
ZXh0IikgMj4mNSB8CisgICRFR1JFUCAiZnJlZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKwor
ZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQor
CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIC9iaW4vY2MgaW4g
SXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2ku
CisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgOgorZWxzZQor
ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29u
ZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp
ZiAoKCcgJyAmIDB4MEZGKSA9PSAweDAyMCkKKyMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAo
YykgJiYgKGMpIDw9ICd6JykKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScg
KyAoKGMpIC0gJ2EnKSA6IChjKSkKKyNlbHNlCisjIGRlZmluZSBJU0xPV0VSKGMpIFwKKwkJICAg
KCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKKwkJICAgICB8fCAoJ2onIDw9IChjKSAmJiAo
YykgPD0gJ3InKSBcCisJCSAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCisjIGRl
ZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorI2VuZGlm
CisKKyNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCitp
bnQKK21haW4gKCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKyAg
ICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCisJfHwgdG91cHBlciAoaSkgIT0g
VE9VUFBFUiAoaSkpCisgICAgICByZXR1cm4gMjsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm
IGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRl
cl9zdGRjPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0
IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK2ZpCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUK
KyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfaGVh
ZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgU1REQ19IRUFERVJTIDEi
ID4+Y29uZmRlZnMuaAorCitmaQorCisjIE9uIElSSVggNS4zLCBzeXMvdHlwZXMgYW5kIGludHR5
cGVzLmggYXJlIGNvbmZsaWN0aW5nLgorZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMv
c3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCisJCSAgaW50dHlw
ZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJh
Y19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRl
cl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5j
bHVkZXNfZGVmYXVsdAorIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4
InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNf
ZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitk
b25lCisKKworCisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJtaW5p
eC9jb25maWcuaCIgImFjX2N2X2hlYWRlcl9taW5peF9jb25maWdfaCIgIiRhY19pbmNsdWRlc19k
ZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbWluaXhfY29uZmlnX2giID0geHllczsg
dGhlbiA6CisgIE1JTklYPXllcworZWxzZQorICBNSU5JWD0KK2ZpCisKKworICBpZiB0ZXN0ICIk
TUlOSVgiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMSIg
Pj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYXzFfU09VUkNFIDIiID4+
Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIF9NSU5JWCAxIiA+PmNvbmZkZWZzLmgK
KworICBmaQorCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyB3aGV0aGVyIGl0IGlzIHNhZmUgdG8gZGVmaW5lIF9fRVhURU5TSU9OU19fIiA+JjUK
KyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRF
TlNJT05TX18uLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNp
b25zX18rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisKKyMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorCSAgJGFjX2lu
Y2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9Citf
QUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zf
c2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX189eWVzCitlbHNlCisgIGFjX2N2X3NhZmVfdG9f
ZGVmaW5lX19fZXh0ZW5zaW9uc19fPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4
dGVuc2lvbnNfXyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5z
aW9uc19fIiA+JjY7IH0KKyAgdGVzdCAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25z
X18gPSB5ZXMgJiYKKyAgICAkYXNfZWNobyAiI2RlZmluZSBfX0VYVEVOU0lPTlNfXyAxIiA+PmNv
bmZkZWZzLmgKKworICAkYXNfZWNobyAiI2RlZmluZSBfQUxMX1NPVVJDRSAxIiA+PmNvbmZkZWZz
LmgKKworICAkYXNfZWNobyAiI2RlZmluZSBfR05VX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKwor
ICAkYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgMSIgPj5jb25mZGVm
cy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX1RBTkRFTV9TT1VSQ0UgMSIgPj5jb25mZGVmcy5o
CisKKworIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgorJFNIRUxMICIkYWNfYXV4
X2Rpci9jb25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAorICBhc19mbl9lcnJvciAk
PyAiY2Fubm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUK
KworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBidWls
ZCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlw
ZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9idWlsZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlh
cwordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFjX2J1aWxkX2FsaWFzPWAkU0hF
TEwgIiRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9
IHggJiYKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVz
dCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKK2FjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhf
ZGlyL2NvbmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwKKyAgYXNfZm5fZXJyb3IgJD8gIiRT
SEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElO
RU5PIiA1CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQor
Y2FzZSAkYWNfY3ZfYnVpbGQgaW4KKyotKi0qKSA7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFs
aWQgdmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7Citlc2FjCitidWlsZD0k
YWNfY3ZfYnVpbGQKK2FjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKK3NldCB4ICRhY19jdl9idWls
ZAorc2hpZnQKK2J1aWxkX2NwdT0kMQorYnVpbGRfdmVuZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMg
UmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQq
LAorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgorYnVpbGRfb3M9JCoKK0lGUz0kYWNfc2F2ZV9J
RlMKK2Nhc2UgJGJ1aWxkX29zIGluICpcICopIGJ1aWxkX29zPWBlY2hvICIkYnVpbGRfb3MiIHwg
c2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfaG9zdCs6fSBm
YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRl
c3QgIngkaG9zdF9hbGlhcyIgPSB4OyB0aGVuCisgIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkCitl
bHNlCisgIGFjX2N2X2hvc3Q9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3Rf
YWxpYXNgIHx8CisgICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcu
c3ViICRob3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKK2ZpCisKK2ZpCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hvc3QiID4mNQor
JGFzX2VjaG8gIiRhY19jdl9ob3N0IiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2hvc3QgaW4KKyotKi0q
KSA7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3Qi
ICIkTElORU5PIiA1OzsKK2VzYWMKK2hvc3Q9JGFjX2N2X2hvc3QKK2FjX3NhdmVfSUZTPSRJRlM7
IElGUz0nLScKK3NldCB4ICRhY19jdl9ob3N0CitzaGlmdAoraG9zdF9jcHU9JDEKK2hvc3RfdmVu
ZG9yPSQyCitzaGlmdDsgc2hpZnQKKyMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2Yg
SUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgoraG9z
dF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0X29z
PWBlY2hvICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCisKKyMgTTQgTWFj
cm8gaW5jbHVkZXMKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwor
CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKyMgRW5h
YmxlL2Rpc2FibGUgb3B0aW9ucworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXhzbSB3YXMgZ2l2
ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV94c20rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2
YWw9JGVuYWJsZV94c207CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX3hzbSIgPSAieHllcyI7
IHRoZW4gOgorCisgICAgYXhfY3ZfeHNtPSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxlX3hzbSIg
PSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl94c209Im4iCisKK2VsaWYgdGVzdCAteiAkYXhf
Y3ZfeHNtOyB0aGVuIDoKKworICAgIGF4X2N2X3hzbT0ibiIKKworZmkKK3hzbT0kYXhfY3ZfeHNt
CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1naXRodHRwIHdhcyBnaXZlbi4KK2lmIHRlc3Qg
IiR7ZW5hYmxlX2dpdGh0dHArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJs
ZV9naXRodHRwOworZmkKKworCitpZiB0ZXN0ICJ4JGVuYWJsZV9naXRodHRwIiA9ICJ4eWVzIjsg
dGhlbiA6CisKKyAgICBheF9jdl9naXRodHRwPSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxlX2dp
dGh0dHAiID0gInhubyI7IHRoZW4gOgorCisgICAgYXhfY3ZfZ2l0aHR0cD0ibiIKKworZWxpZiB0
ZXN0IC16ICRheF9jdl9naXRodHRwOyB0aGVuIDoKKworICAgIGF4X2N2X2dpdGh0dHA9Im4iCisK
K2ZpCitnaXRodHRwPSRheF9jdl9naXRodHRwCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1t
b25pdG9ycyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9tb25pdG9ycytzZXR9IiA9IHNl
dDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX21vbml0b3JzOworZmkKKworCitpZiB0ZXN0
ICJ4JGVuYWJsZV9tb25pdG9ycyIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9tb25pdG9y
cz0ibiIKKworZWxpZiB0ZXN0ICJ4JGVuYWJsZV9tb25pdG9ycyIgPSAieHllcyI7IHRoZW4gOgor
CisgICAgYXhfY3ZfbW9uaXRvcnM9InkiCisKK2VsaWYgdGVzdCAteiAkYXhfY3ZfbW9uaXRvcnM7
IHRoZW4gOgorCisgICAgYXhfY3ZfbW9uaXRvcnM9InkiCisKK2ZpCittb25pdG9ycz0kYXhfY3Zf
bW9uaXRvcnMKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXZ0cG0gd2FzIGdpdmVuLgoraWYg
dGVzdCAiJHtlbmFibGVfdnRwbStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5h
YmxlX3Z0cG07CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX3Z0cG0iID0gInh5ZXMiOyB0aGVu
IDoKKworICAgIGF4X2N2X3Z0cG09InkiCisKK2VsaWYgdGVzdCAieCRlbmFibGVfdnRwbSIgPSAi
eG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl92dHBtPSJuIgorCitlbGlmIHRlc3QgLXogJGF4X2N2
X3Z0cG07IHRoZW4gOgorCisgICAgYXhfY3ZfdnRwbT0ibiIKKworZmkKK3Z0cG09JGF4X2N2X3Z0
cG0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXhhcGkgd2FzIGdpdmVuLgoraWYgdGVzdCAi
JHtlbmFibGVfeGFwaStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3hh
cGk7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX3hhcGkiID0gInh5ZXMiOyB0aGVuIDoKKwor
ICAgIGF4X2N2X3hhcGk9InkiCisKK2VsaWYgdGVzdCAieCRlbmFibGVfeGFwaSIgPSAieG5vIjsg
dGhlbiA6CisKKyAgICBheF9jdl94YXBpPSJuIgorCitlbGlmIHRlc3QgLXogJGF4X2N2X3hhcGk7
IHRoZW4gOgorCisgICAgYXhfY3ZfeGFwaT0ibiIKKworZmkKK3hhcGk9JGF4X2N2X3hhcGkKKwor
IyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXB5dGhvbnRvb2xzIHdhcyBnaXZlbi4KK2lmIHRlc3Qg
IiR7ZW5hYmxlX3B5dGhvbnRvb2xzK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRl
bmFibGVfcHl0aG9udG9vbHM7CitmaQorCisKK2lmIHRlc3QgIngkZW5hYmxlX3B5dGhvbnRvb2xz
IiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X3B5dGhvbnRvb2xzPSJuIgorCitlbGlmIHRl
c3QgIngkZW5hYmxlX3B5dGhvbnRvb2xzIiA9ICJ4eWVzIjsgdGhlbiA6CisKKyAgICBheF9jdl9w
eXRob250b29scz0ieSIKKworZWxpZiB0ZXN0IC16ICRheF9jdl9weXRob250b29sczsgdGhlbiA6
CisKKyAgICBheF9jdl9weXRob250b29scz0ieSIKKworZmkKK3B5dGhvbnRvb2xzPSRheF9jdl9w
eXRob250b29scworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb2NhbWx0b29scyB3YXMgZ2l2
ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9vY2FtbHRvb2xzK3NldH0iID0gc2V0OyB0aGVuIDoKKyAg
ZW5hYmxldmFsPSRlbmFibGVfb2NhbWx0b29sczsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVf
b2NhbWx0b29scyIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9vY2FtbHRvb2xzPSJuIgor
CitlbGlmIHRlc3QgIngkZW5hYmxlX29jYW1sdG9vbHMiID0gInh5ZXMiOyB0aGVuIDoKKworICAg
IGF4X2N2X29jYW1sdG9vbHM9InkiCisKK2VsaWYgdGVzdCAteiAkYXhfY3Zfb2NhbWx0b29sczsg
dGhlbiA6CisKKyAgICBheF9jdl9vY2FtbHRvb2xzPSJ5IgorCitmaQorb2NhbWx0b29scz0kYXhf
Y3Zfb2NhbWx0b29scworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbWluaXRlcm0gd2FzIGdp
dmVuLgoraWYgdGVzdCAiJHtlbmFibGVfbWluaXRlcm0rc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBl
bmFibGV2YWw9JGVuYWJsZV9taW5pdGVybTsKK2ZpCisKKworaWYgdGVzdCAieCRlbmFibGVfbWlu
aXRlcm0iID0gInh5ZXMiOyB0aGVuIDoKKworICAgIGF4X2N2X21pbml0ZXJtPSJ5IgorCitlbGlm
IHRlc3QgIngkZW5hYmxlX21pbml0ZXJtIiA9ICJ4bm8iOyB0aGVuIDoKKworICAgIGF4X2N2X21p
bml0ZXJtPSJuIgorCitlbGlmIHRlc3QgLXogJGF4X2N2X21pbml0ZXJtOyB0aGVuIDoKKworICAg
IGF4X2N2X21pbml0ZXJtPSJuIgorCitmaQorbWluaXRlcm09JGF4X2N2X21pbml0ZXJtCisKKyMg
Q2hlY2sgd2hldGhlciAtLWVuYWJsZS1sb21vdW50IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5h
YmxlX2xvbW91bnQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9sb21v
dW50OworZmkKKworCitpZiB0ZXN0ICJ4JGVuYWJsZV9sb21vdW50IiA9ICJ4eWVzIjsgdGhlbiA6
CisKKyAgICBheF9jdl9sb21vdW50PSJ5IgorCitlbGlmIHRlc3QgIngkZW5hYmxlX2xvbW91bnQi
ID0gInhubyI7IHRoZW4gOgorCisgICAgYXhfY3ZfbG9tb3VudD0ibiIKKworZWxpZiB0ZXN0IC16
ICRheF9jdl9sb21vdW50OyB0aGVuIDoKKworICAgIGF4X2N2X2xvbW91bnQ9Im4iCisKK2ZpCits
b21vdW50PSRheF9jdl9sb21vdW50CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kZWJ1ZyB3
YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9kZWJ1ZytzZXR9IiA9IHNldDsgdGhlbiA6Cisg
IGVuYWJsZXZhbD0kZW5hYmxlX2RlYnVnOworZmkKKworCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZWJ1
ZyIgPSAieG5vIjsgdGhlbiA6CisKKyAgICBheF9jdl9kZWJ1Zz0ibiIKKworZWxpZiB0ZXN0ICJ4
JGVuYWJsZV9kZWJ1ZyIgPSAieHllcyI7IHRoZW4gOgorCisgICAgYXhfY3ZfZGVidWc9InkiCisK
K2VsaWYgdGVzdCAteiAkYXhfY3ZfZGVidWc7IHRoZW4gOgorCisgICAgYXhfY3ZfZGVidWc9Inki
CisKK2ZpCitkZWJ1Zz0kYXhfY3ZfZGVidWcKKworCisKKworCisKKworZm9yIGNmbGFnIGluICRQ
UkVQRU5EX0lOQ0xVREVTCitkbworICAgIFBSRVBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9u
ZQorZm9yIGxkZmxhZyBpbiAkUFJFUEVORF9MSUIKK2RvCisgICAgUFJFUEVORF9MREZMQUdTKz0i
IC1MJGxkZmxhZyIKK2RvbmUKK2ZvciBjZmxhZyBpbiAkQVBQRU5EX0lOQ0xVREVTCitkbworICAg
IEFQUEVORF9DRkxBR1MrPSIgLUkkY2ZsYWciCitkb25lCitmb3IgbGRmbGFnIGluICRBUFBFTkRf
TElCCitkbworICAgIEFQUEVORF9MREZMQUdTKz0iIC1MJGxkZmxhZyIKK2RvbmUKK0NGTEFHUz0i
JFBSRVBFTkRfQ0ZMQUdTICRDRkxBR1MgJEFQUEVORF9DRkxBR1MiCitMREZMQUdTPSIkUFJFUEVO
RF9MREZMQUdTICRMREZMQUdTICRBUFBFTkRfTERGTEFHUyIKKworCisKKworCisKKworCisKKwor
CisKKyMgQ2hlY2tzIGZvciBwcm9ncmFtcy4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0
cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRy
dW5jYXRlIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsg
dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICBh
Y19zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJi
YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCisgICAgIGZvciBhY19pIGluIDEgMiAzIDQgNSA2IDc7
IGRvCisgICAgICAgYWNfc2NyaXB0PSIkYWNfc2NyaXB0JGFzX25sJGFjX3NjcmlwdCIKKyAgICAg
ZG9uZQorICAgICBlY2hvICIkYWNfc2NyaXB0IiAyPi9kZXYvbnVsbCB8IHNlZCA5OXEgPmNvbmZ0
ZXN0LnNlZAorICAgICB7IGFjX3NjcmlwdD07IHVuc2V0IGFjX3NjcmlwdDt9CisgICAgIGlmIHRl
c3QgLXogIiRTRUQiOyB0aGVuCisgIGFjX3BhdGhfU0VEX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0
aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNU
CisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4g
JFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf
ZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19l
eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfU0VE
PSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0
aF9TRUQiICYmICRhc190ZXN0X3ggIiRhY19wYXRoX1NFRCI7IH0gfHwgY29udGludWUKKyMgQ2hl
Y2sgZm9yIEdOVSBhY19wYXRoX1NFRCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAj
IENoZWNrIGZvciBHTlUgJGFjX3BhdGhfU0VECitjYXNlIGAiJGFjX3BhdGhfU0VEIiAtLXZlcnNp
b24gMj4mMWAgaW4KKypHTlUqKQorICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIiBhY19w
YXRoX1NFRF9mb3VuZD06OzsKKyopCisgIGFjX2NvdW50PTAKKyAgJGFzX2VjaG9fbiAwMTIzNDU2
Nzg5ID4iY29uZnRlc3QuaW4iCisgIHdoaWxlIDoKKyAgZG8KKyAgICBjYXQgImNvbmZ0ZXN0Lmlu
IiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgorICAgIG12ICJjb25mdGVzdC50bXAiICJj
b25mdGVzdC5pbiIKKyAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKyAgICAkYXNf
ZWNobyAnJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX1NFRCIgLWYgY29uZnRlc3Qu
c2VkIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsK
KyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8
IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFs
CisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9TRURfbWF4LTB9OyB0aGVuCisg
ICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJl
dHRlciBvbmUKKyAgICAgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiCisgICAgICBhY19w
YXRoX1NFRF9tYXg9JGFjX2NvdW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBp
bnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYm
IGJyZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0
Lm5sIGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAgICAgICRhY19wYXRoX1NFRF9mb3VuZCAmJiBi
cmVhayAzCisgICAgZG9uZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYg
dGVzdCAteiAiJGFjX2N2X3BhdGhfU0VEIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBh
Y2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CisgIGZp
CitlbHNlCisgIGFjX2N2X3BhdGhfU0VEPSRTRUQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfU0VEIiA+JjUKKyRh
c19lY2hvICIkYWNfY3ZfcGF0aF9TRUQiID4mNjsgfQorIFNFRD0iJGFjX2N2X3BhdGhfU0VEIgor
ICBybSAtZiBjb25mdGVzdC5zZWQKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1Mn
CithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+
JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdT
ICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRh
Y19jdl9jX2NvbXBpbGVyX2dudQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgor
ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Z2NjIiwgc28g
aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xf
cHJlZml4fWdjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRo
ZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIk
Q0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg
dGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitm
b3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRh
c19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh
YmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07
IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKKyAgICAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0k
YXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJEND
IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5v
IiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgor
ICBhY19jdF9DQz0kQ0MKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBp
dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdjYzsgYWNfd29y
ZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg
PiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0
aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3Zl
cnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB
VE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3Qg
LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l
eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCisgICAgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3Qg
LW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7
IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNf
Y3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21w
aWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg
d2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcg
Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9v
bF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitlbHNlCisgIEND
PSIkYWNfY3ZfcHJvZ19DQyIKK2ZpCisKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgICAgICAg
ICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3Jk
PSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv
ciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3Zf
cHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2Fz
X3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgK
K2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4K
KyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8K
KyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVz
dF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3By
b2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Cisg
ICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitm
aQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNo
byAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAg
ZmkKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29y
ZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1
bW15IGNjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7
IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdC4KK2Vsc2UKKyAgYWNfcHJvZ19yZWplY3RlZD1ubworYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZl
X0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4
dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVuCisgICAgICAgYWNfcHJvZ19yZWplY3Rl
ZD15ZXMKKyAgICAgICBjb250aW51ZQorICAgICBmaQorICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgor
ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCitpZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVzOyB0
aGVuCisgICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5l
dmVyIHVzZSBpdC4KKyAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDCisgIHNoaWZ0CisgIGlmIHRl
c3QgJCMgIT0gMDsgdGhlbgorICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJv
bSB0aGUgYm9ndXMgb25lLgorICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1l
LCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KKyAgICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0
byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4KKyAgICBzaGlmdAor
ICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dvcmQkezErJyAnfSRAIgorICBmaQorZmkK
K2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1Cisk
YXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQor
CisKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3By
ZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gY2wuZXhlCisgIGRvCisgICAgIyBFeHRyYWN0
IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFj
X3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAk
YWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsg
dGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0
ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFz
X2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGly
IiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l
eHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVu
CisgICAgYWNfY3ZfcHJvZ19DQz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRh
Y19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFz
X3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIg
PiY2OyB9CitmaQorCisKKyAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitp
ZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgIGFjX2N0X0NDPSRDQworICBmb3IgYWNfcHJvZyBpbiBj
bC5leGUKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBp
dCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBh
Y193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu
Li4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9D
QyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNl
ciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T
RVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAg
dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg
JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRh
Y193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgorICAg
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQor
SUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0ND
CitpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19j
dF9DQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRl
c3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0ND
IiA9IHg7IHRoZW4KKyAgICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5n
OiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGgg
aG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3Nz
IHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2Fy
bmVkPXllcyA7OworZXNhYworICAgIENDPSRhY19jdF9DQworICBmaQorZmkKKworZmkKKworCit0
ZXN0IC16ICIkQ0MiICYmIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGlu
IFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21w
aWxlciBmb3VuZCBpbiBcJFBBVEgKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMi
ICIkTElORU5PIiA1OyB9CisKKyMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBj
b21waWxlci4KKyRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQorc2V0IFggJGFjX2NvbXBpbGUKK2FjX2NvbXBp
bGVyPSQyCitmb3IgYWNfb3B0aW9uIGluIC0tdmVyc2lvbiAtdiAtViAtcXZlcnNpb247IGRvCisg
IHsgeyBhY190cnk9IiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIKK2Nhc2UgIigoJGFjX3Ry
eSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICop
IGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5
X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1IikgMj5j
b25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0
aGVuCisgICAgc2VkICcxMGFcCisuLi4gcmVzdCBvZiBzdGRlcnIgb3V0cHV0IGRlbGV0ZWQgLi4u
CisgICAgICAgICAxMHEnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCisgICAgY2F0IGNvbmZ0
ZXN0LmVyMSA+JjUKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorZG9uZQorCit7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBH
TlUgQyBjb21waWxlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1
c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY19jb21waWxl
cl9nbnUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworI2lmbmRlZiBfX0dOVUNfXworICAg
ICAgIGNob2tlIG1lCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBh
Y19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2NvbXBpbGVyX2dudT15
ZXMKK2Vsc2UKKyAgYWNfY29tcGlsZXJfZ251PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5l
cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CithY19jdl9jX2NvbXBpbGVy
X2dudT0kYWNfY29tcGlsZXJfZ251CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUKKyRhc19lY2hv
ICIkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNjsgfQoraWYgdGVzdCAkYWNfY29tcGlsZXJfZ251
ID0geWVzOyB0aGVuCisgIEdDQz15ZXMKK2Vsc2UKKyAgR0NDPQorZmkKK2FjX3Rlc3RfQ0ZMQUdT
PSR7Q0ZMQUdTK3NldH0KK2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2
OyB9CitpZiAke2FjX2N2X3Byb2dfY2NfZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJy
b3JfZmxhZworICAgYWNfY193ZXJyb3JfZmxhZz15ZXMKKyAgIGFjX2N2X3Byb2dfY2NfZz1ubwor
ICAgQ0ZMQUdTPSItZyIKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOwor
ICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7
IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2c9eWVzCitlbHNlCisgIENGTEFHUz0iIgorICAgICAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk
ZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FD
RU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAg
YWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnCisJIENGTEFHUz0iLWciCisJ
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19B
Q0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9w
cm9nX2NjX2c9eWVzCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5l
cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgICBhY19jX3dlcnJvcl9m
bGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfZyIgPiY1CiskYXNfZWNobyAi
JGFjX2N2X3Byb2dfY2NfZyIgPiY2OyB9CitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0
OyB0aGVuCisgIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKK2VsaWYgdGVzdCAkYWNfY3ZfcHJvZ19j
Y19nID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdT
PSItZyAtTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9Ii1nIgorICBmaQorZWxzZQorICBpZiB0ZXN0
ICIkR0NDIiA9IHllczsgdGhlbgorICAgIENGTEFHUz0iLU8yIgorICBlbHNlCisgICAgQ0ZMQUdT
PQorICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkiID4mNQorJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KK2lm
ICR7YWNfY3ZfcHJvZ19jY19jODkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgorZWxzZQorICBhY19jdl9wcm9nX2NjX2M4OT1ubworYWNfc2F2ZV9DQz0kQ0MK
K2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisvKiBNb3N0IG9mIHRo
ZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4g
ICovCitzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CitGSUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1
ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOworc3RhdGljIGNoYXIgKmUgKHAsIGkpCisgICAgIGNo
YXIgKipwOworICAgICBpbnQgaTsKK3sKKyAgcmV0dXJuIHBbaV07Cit9CitzdGF0aWMgY2hhciAq
ZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCit7CisgIGNoYXIg
KnM7CisgIHZhX2xpc3QgdjsKKyAgdmFfc3RhcnQgKHYscCk7CisgIHMgPSBnIChwLCB2YV9hcmcg
KHYsaW50KSk7CisgIHZhX2VuZCAodik7CisgIHJldHVybiBzOworfQorCisvKiBPU0YgNC4wIENv
bXBhcSBjYyBpcyBzb21lIHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcwor
ICAgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFy
YWN0ZXIgY29uc3RhbnRzLgorICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1
bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRseSB0cmVhdGVkCisgICBhcyAneCcuICBUaGUgZm9s
bG93aW5nIGluZHVjZXMgYW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CisgICBw
cm9wZXIgQU5TSSBtb2RlLiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQg
dHJ1ZSwgZm9yIGFuCisgICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8g
d3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBzb21ldGhpbmcKKyAgIHRoYXQncyB0cnVlIG9ubHkgd2l0
aCAtc3RkLiAgKi8KK2ludCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CisK
Ky8qIElCTSBDIDYgZm9yIEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVw
bGFjZXMgbWFjcm8gcGFyYW1ldGVycworICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBj
b25zdGFudHMuICAqLworI2RlZmluZSBGT08oeCkgJ3gnCitpbnQgeGxjNl9jY19hcnJheVtGT08o
YSkgPT0gJ3gnID8gMSA6IC0xXTsKKworaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7CitzdHJ1
Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsKK3N0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBh
KTt9OworaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAq
LCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7CitpbnQgYXJnYzsKK2NoYXIgKiphcmd2
OworaW50CittYWluICgpCit7CityZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwg
IGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YK
K2ZvciBhY19hcmcgaW4gJycgLXFsYW5nbHZsPWV4dGM4OSAtcWxhbmdsdmw9YW5zaSAtc3RkIFwK
KwktQWUgIi1BYSAtRF9IUFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgorZG8KKyAg
Q0M9IiRhY19zYXZlX0NDICRhY19hcmciCisgIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F
Tk8iOyB0aGVuIDoKKyAgYWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZworZmkKK3JtIC1mIGNvcmUg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgdGVzdCAieCRhY19jdl9wcm9nX2Nj
X2M4OSIgIT0gInhubyIgJiYgYnJlYWsKK2RvbmUKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQKK0ND
PSRhY19zYXZlX0NDCisKK2ZpCisjIEFDX0NBQ0hFX1ZBTAorY2FzZSAieCRhY19jdl9wcm9nX2Nj
X2M4OSIgaW4KKyAgeCkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQorJGFzX2VjaG8gIm5vbmUgbmVlZGVkIiA+JjY7
IH0gOzsKKyAgeG5vKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiB1bnN1cHBvcnRlZCIgPiY1CiskYXNfZWNobyAidW5zdXBwb3J0ZWQiID4mNjsg
fSA7OworICAqKQorICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgorICAgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19j
ODkiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2M4OSIgPiY2OyB9IDs7Citlc2FjCitp
ZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSB4bm87IHRoZW4gOgorCitmaQorCithY19l
eHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdT
ICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVz
dCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAk
TElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBsbiAt
cyB3b3JrcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4u
ICIgPiY2OyB9CitMTl9TPSRhc19sbl9zCitpZiB0ZXN0ICIkTE5fUyIgPSAibG4gLXMiOyB0aGVu
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMi
ID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubywgdXNpbmcgJExOX1MiID4mNQorJGFzX2Vj
aG8gIm5vLCB1c2luZyAkTE5fUyIgPiY2OyB9CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQo
TUFLRSkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0
cyBcJChNQUtFKS4uLiAiID4mNjsgfQorc2V0IHggJHtNQUtFLW1ha2V9CithY19tYWtlPWAkYXNf
ZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKK2lmIGV2YWwg
XCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9B
Q0VPRgorU0hFTEwgPSAvYmluL3NoCithbGw6CisJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUl
JScKK19BQ0VPRgorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmlu
ZyAuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgorY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNv
bmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGxgIGluCisgICpAQEAlJSU9Pyo9QEBAJSUlKikKKyAgICBl
dmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXM7OworICAqKQorICAgIGV2YWwg
YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PW5vOzsKK2VzYWMKK3JtIC1mIGNvbmZ0ZXN0
Lm1ha2UKK2ZpCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQg
PSB5ZXM7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKyAgU0VUX01BS0U9CitlbHNl
CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFrZX0i
CitmaQorCisjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJv
Z3JhbSAoZmFzdGVyKSwKKyMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBC
dXQgYXZvaWQgdGhlIGJyb2tlbiBvcgorIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CisjIFN5c1Yg
L2V0Yy9pbnN0YWxsLCAvdXNyL3NiaW4vaW5zdGFsbAorIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxs
CisjIElSSVggL3NiaW4vaW5zdGFsbAorIyBBSVggL2Jpbi9pbnN0YWxsCisjIEFtaWdhT1MgL0Mv
aW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlzY3MKKyMgQUlY
IDQgL3Vzci9iaW4vaW5zdGFsbGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBm
bGFnCisjIEFGUyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4
aXN0ZW50IGFyZ3MKKyMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2Ug
dGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKKyMgT1MvMidzIHN5c3RlbSBpbnN0YWxsLCB3
aGljaCBoYXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZW1hbnRpYworIyAuL2luc3RhbGwsIHdo
aWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2gu
CisjIFJlamVjdCBpbnN0YWxsIHByb2dyYW1zIHRoYXQgY2Fubm90IGluc3RhbGwgbXVsdGlwbGUg
ZmlsZXMuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQoraWYgdGVzdCAteiAiJElO
U1RBTEwiOyB0aGVuCitpZiAke2FjX2N2X3BhdGhfaW5zdGFsbCs6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFzX3NhdmVfSUZTPSRJRlM7IElG
Uz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2
ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAjIEFjY291bnQgZm9y
IHBlb3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KK2Nhc2Ug
JGFzX2Rpci8gaW4gIygoCisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8IFwKKyAgL2V0Yy8qIHwgL3Vz
ci9zYmluLyogfCAvdXNyL2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogfCBcCisg
ID86W1xcL11vczJbXFwvXWluc3RhbGxbXFwvXSogfCA/OltcXC9dT1MyW1xcL11JTlNUQUxMW1xc
L10qIHwgXAorICAvdXNyL3VjYi8qICkgOzsKKyAgKikKKyAgICAjIE9TRjEgYW5kIFNDTyBPRFQg
My4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgorICAgICMgRG9uJ3QgdXNlIGlu
c3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAorICAgICMg
YnkgZGVmYXVsdC4KKyAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7
IGRvCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u
czsgZG8KKwlpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiICYmICRh
c190ZXN0X3ggIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB9OyB0aGVuCisJICBpZiB0
ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNf
cHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgQUlYIGluc3Rh
bGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KKwkgICAgOgor
CSAgZWxpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgorCSAgICBncmVwIHB3cGx1cyAiJGFz
X2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMg
cHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3Qg
dXNlLgorCSAgICA6CisJICBlbHNlCisJICAgIHJtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3Qu
dHdvIGNvbmZ0ZXN0LmRpcgorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQorCSAgICBlY2hv
IHR3byA+IGNvbmZ0ZXN0LnR3bworCSAgICBta2RpciBjb25mdGVzdC5kaXIKKwkgICAgaWYgIiRh
c19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28g
ImBwd2RgL2NvbmZ0ZXN0LmRpciIgJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0Lm9uZSAmJiB0
ZXN0IC1zIGNvbmZ0ZXN0LnR3byAmJgorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0
ZXN0Lm9uZSAmJgorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0LnR3bworCSAg
ICB0aGVuCisJICAgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4
ZWNfZXh0IC1jIgorCSAgICAgIGJyZWFrIDMKKwkgICAgZmkKKwkgIGZpCisJZmkKKyAgICAgIGRv
bmUKKyAgICBkb25lCisgICAgOzsKK2VzYWMKKworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisK
K3JtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcgorCitmaQorICBp
ZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbgorICAgIElOU1RB
TEw9JGFjX2N2X3BhdGhfaW5zdGFsbAorICBlbHNlCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1
c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQorICAgICMgdmFsdWUgZm9y
IElOU1RBTEwgd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKKyAg
ICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9y
eSBpcworICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4K
KyAgICBJTlNUQUxMPSRhY19pbnN0YWxsX3NoCisgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKKyRhc19lY2hvICIk
SU5TVEFMTCIgPiY2OyB9CisKKyMgVXNlIHRlc3QgLXogYmVjYXVzZSBTdW5PUzQgc2ggbWlzaGFu
ZGxlcyBicmFjZXMgaW4gJHt2YXItdmFsfS4KKyMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBi
cmFjZSBlbmRzIHRoZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCit0ZXN0IC16ICIkSU5TVEFMTF9Q
Uk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNU
QUxMX1NDUklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJ
TlNUQUxMX0RBVEEiICYmIElOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnCisKKyMgRXh0
cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGVybCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcGVybDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFz
X2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Bh
dGhfUEVSTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl
bHNlCisgIGNhc2UgJFBFUkwgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhf
UEVSTD0iJFBFUkwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRo
LgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitm
b3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRh
c19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh
YmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07
IHRoZW4KKyAgICBhY19jdl9wYXRoX1BFUkw9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
CisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBk
b25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfUEVSTCIgJiYg
YWNfY3ZfcGF0aF9QRVJMPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitQRVJMPSRhY19jdl9wYXRoX1BF
UkwKK2lmIHRlc3QgLW4gIiRQRVJMIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBFUkwiID4mNQorJGFzX2VjaG8gIiRQRVJMIiA+JjY7
IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3QgeCIke1BF
Ukx9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCBw
ZXJsLCBwbGVhc2UgaW5zdGFsbCBwZXJsIiAiJExJTkVOTyIgNQorZmkKKyMgRXh0cmFjdCB0aGUg
Zmlyc3Qgd29yZCBvZiAiYnJjdGwiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh
cmdzLgorc2V0IGR1bW15IGJyY3RsOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9CUkNU
TCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGNhc2UgJEJSQ1RMIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0JSQ1RM
PSIkQlJDVEwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgor
ICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3Ig
YXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19k
aXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl
X2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo
ZW4KKyAgICBhY19jdl9wYXRoX0JSQ1RMPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0Igor
ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0JSQ1RMIiAmJiBh
Y19jdl9wYXRoX0JSQ1RMPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitCUkNUTD0kYWNfY3ZfcGF0aF9C
UkNUTAoraWYgdGVzdCAtbiAiJEJSQ1RMIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEJSQ1RMIiA+JjUKKyRhc19lY2hvICIkQlJDVEwi
ID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCB4
IiR7QlJDVEx9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8g
ZmluZCBicmN0bCwgcGxlYXNlIGluc3RhbGwgYnJjdGwiICIkTElORU5PIiA1CitmaQorIyBFeHRy
YWN0IHRoZSBmaXJzdCB3b3JkIG9mICJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3
aXRoIGFyZ3MuCitzZXQgZHVtbXkgaXA7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hv
X24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0lQ
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
Y2FzZSAkSVAgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfSVA9IiRJUCIg
IyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICop
CisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4g
JFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf
ZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u
czsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAk
YXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFj
X2N2X3BhdGhfSVA9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3Nh
dmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfSVAiICYmIGFjX2N2X3BhdGhfSVA9Im5v
IgorICA7OworZXNhYworZmkKK0lQPSRhY19jdl9wYXRoX0lQCitpZiB0ZXN0IC1uICIkSVAiOyB0
aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
SVAiID4mNQorJGFzX2VjaG8gIiRJUCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4m
NjsgfQorZmkKKworCitpZiB0ZXN0IHgiJHtJUH0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5f
ZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kIGlwLCBwbGVhc2UgaW5zdGFsbCBpcCIgIiRMSU5FTk8i
IDUKK2ZpCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImJpc29uIiwgc28gaXQgY2FuIGJl
IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBiaXNvbjsgYWNfd29yZD0kMgor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj
X3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9
CitpZiAke2FjX2N2X3BhdGhfQklTT04rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRCSVNPTiBpbgorICBbXFwvXSogfCA/OltcXC9d
KikKKyAgYWNfY3ZfcGF0aF9CSVNPTj0iJEJJU09OIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0
aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZT
PSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZl
X0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4
dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRh
c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dv
cmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9CSVNPTj0iJGFzX2Rpci8k
YWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVh
ayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIk
YWNfY3ZfcGF0aF9CSVNPTiIgJiYgYWNfY3ZfcGF0aF9CSVNPTj0ibm8iCisgIDs7Citlc2FjCitm
aQorQklTT049JGFjX2N2X3BhdGhfQklTT04KK2lmIHRlc3QgLW4gIiRCSVNPTiI7IHRoZW4KKyAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCSVNPTiIg
PiY1CiskYXNfZWNobyAiJEJJU09OIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2
OyB9CitmaQorCisKK2lmIHRlc3QgeCIke0JJU09OfSIgPT0geCJubyIKK3RoZW4KKyAgICBhc19m
bl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgYmlzb24sIHBsZWFzZSBpbnN0YWxsIGJpc29uIiAi
JExJTkVOTyIgNQorZmkKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZmxleCIsIHNvIGl0
IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZmxleDsgYWNfd29y
ZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg
PiY2OyB9CitpZiAke2FjX2N2X3BhdGhfRkxFWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJEZMRVggaW4KKyAgW1xcL10qIHwgPzpb
XFwvXSopCisgIGFjX2N2X3BhdGhfRkxFWD0iJEZMRVgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRl
IHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJ
RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh
dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0ZMRVg9IiRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJl
YWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAi
JGFjX2N2X3BhdGhfRkxFWCIgJiYgYWNfY3ZfcGF0aF9GTEVYPSJubyIKKyAgOzsKK2VzYWMKK2Zp
CitGTEVYPSRhY19jdl9wYXRoX0ZMRVgKK2lmIHRlc3QgLW4gIiRGTEVYIjsgdGhlbgorICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEZMRVgiID4mNQor
JGFzX2VjaG8gIiRGTEVYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9Citm
aQorCisKK2lmIHRlc3QgeCIke0ZMRVh9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9y
ICQ/ICJVbmFibGUgdG8gZmluZCBmbGV4LCBwbGVhc2UgaW5zdGFsbCBmbGV4IiAiJExJTkVOTyIg
NQorZmkKK2lmIHRlc3QgIngkeGFwaSIgPSAieHkiOyB0aGVuIDoKKworICAgICMgRXh0cmFjdCB0
aGUgZmlyc3Qgd29yZCBvZiAiY3VybC1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5h
bWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGN1cmwtY29uZmlnOyBhY193b3JkPSQyCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7
YWNfY3ZfcGF0aF9DVVJMKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1VSTCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNf
Y3ZfcGF0aF9DVVJMPSIkQ1VSTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0
aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB
UkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVz
dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj
X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1VSTD0iJGFzX2Rpci8kYWNfd29yZCRhY19l
eGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu
ZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitk
b25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9D
VVJMIiAmJiBhY19jdl9wYXRoX0NVUkw9Im5vIgorICA7OworZXNhYworZmkKK0NVUkw9JGFjX2N2
X3BhdGhfQ1VSTAoraWYgdGVzdCAtbiAiJENVUkwiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1VSTCIgPiY1CiskYXNfZWNobyAiJENV
UkwiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVz
dCB4IiR7Q1VSTH0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0
byBmaW5kIGN1cmwtY29uZmlnLCBwbGVhc2UgaW5zdGFsbCBjdXJsLWNvbmZpZyIgIiRMSU5FTk8i
IDUKK2ZpCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ4bWwyLWNvbmZpZyIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgeG1sMi1jb25m
aWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNf
d29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1hNTCs6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFhNTCBpbgorICBbXFwv
XSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9YTUw9IiRYTUwiICMgTGV0IHRoZSB1c2VyIG92
ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9
JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFj
X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVz
dCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1hNTD0iJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0
IC16ICIkYWNfY3ZfcGF0aF9YTUwiICYmIGFjX2N2X3BhdGhfWE1MPSJubyIKKyAgOzsKK2VzYWMK
K2ZpCitYTUw9JGFjX2N2X3BhdGhfWE1MCitpZiB0ZXN0IC1uICIkWE1MIjsgdGhlbgorICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFhNTCIgPiY1Cisk
YXNfZWNobyAiJFhNTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkK
KworCitpZiB0ZXN0IHgiJHtYTUx9IiA9PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/
ICJVbmFibGUgdG8gZmluZCB4bWwyLWNvbmZpZywgcGxlYXNlIGluc3RhbGwgeG1sMi1jb25maWci
ICIkTElORU5PIiA1CitmaQorCitmaQoraWYgdGVzdCAieCRvY2FtbHRvb2xzIiA9ICJ4eSI7IHRo
ZW4gOgorCisgICAgICAjIGNoZWNraW5nIGZvciBvY2FtbGMKKyAgaWYgdGVzdCAtbiAiJGFjX3Rv
b2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9v
bF9wcmVmaXh9b2NhbWxjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4K
K3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sYzsgYWNfd29yZD0kMgoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2Fj
X2N2X3Byb2dfT0NBTUxDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE9DQU1MQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19P
Q0FNTEM9IiRPQ0FNTEMiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQor
YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFU
SAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9
LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk
bworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190
ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3Zf
cHJvZ19PQ0FNTEM9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjIgorICAgICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lG
UworCitmaQorZmkKK09DQU1MQz0kYWNfY3ZfcHJvZ19PQ0FNTEMKK2lmIHRlc3QgLW4gIiRPQ0FN
TEMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkT0NBTUxDIiA+JjUKKyRhc19lY2hvICIkT0NBTUxDIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19P
Q0FNTEMiOyB0aGVuCisgIGFjX2N0X09DQU1MQz0kT0NBTUxDCisgICMgRXh0cmFjdCB0aGUgZmly
c3Qgd29yZCBvZiAib2NhbWxjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4KK3NldCBkdW1teSBvY2FtbGM7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0
X09DQU1MQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl
bHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTEMiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNf
Y3RfT0NBTUxDPSIkYWNfY3RfT0NBTUxDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVz
dC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19k
aXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIg
JiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0
ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgor
ICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxDPSJvY2FtbGMiCisgICAgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZT
CisKK2ZpCitmaQorYWNfY3RfT0NBTUxDPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MQworaWYgdGVz
dCAtbiAiJGFjX2N0X09DQU1MQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTEMiID4mNQorJGFzX2VjaG8gIiRhY19j
dF9PQ0FNTEMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAg
aWYgdGVzdCAieCRhY19jdF9PQ0FNTEMiID0geDsgdGhlbgorICAgIE9DQU1MQz0ibm8iCisgIGVs
c2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBj
cm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8g
IiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9z
dCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxD
PSRhY19jdF9PQ0FNTEMKKyAgZmkKK2Vsc2UKKyAgT0NBTUxDPSIkYWNfY3ZfcHJvZ19PQ0FNTEMi
CitmaQorCisKKyAgaWYgdGVzdCAiJE9DQU1MQyIgIT0gIm5vIjsgdGhlbgorICAgICBPQ0FNTFZF
UlNJT049YCRPQ0FNTEMgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxw
J2AKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
IE9DYW1sIHZlcnNpb24gaXMgJE9DQU1MVkVSU0lPTiIgPiY1CiskYXNfZWNobyAiT0NhbWwgdmVy
c2lvbiBpcyAkT0NBTUxWRVJTSU9OIiA+JjY7IH0KKyAgICAgIyBJZiBPQ0FNTExJQiBpcyBzZXQs
IHVzZSBpdAorICAgICBpZiB0ZXN0ICIkT0NBTUxMSUIiID0gIiI7IHRoZW4KKyAgICAgICAgT0NB
TUxMSUI9YCRPQ0FNTEMgLXdoZXJlIDI+L2Rldi9udWxsIHx8ICRPQ0FNTEMgLXZ8dGFpbCAtMXxj
dXQgLWQgJyAnIC1mIDRgCisgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE9DQU1MTElCIHByZXZpb3VzbHkgc2V0OyBwcmVz
ZXJ2aW5nIGl0LiIgPiY1CiskYXNfZWNobyAiT0NBTUxMSUIgcHJldmlvdXNseSBzZXQ7IHByZXNl
cnZpbmcgaXQuIiA+JjY7IH0KKyAgICAgZmkKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE9DYW1sIGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUIi
ID4mNQorJGFzX2VjaG8gIk9DYW1sIGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUIiID4mNjsgfQor
CisKKworCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0CisgICAgIGlmIHRlc3QgLW4gIiRh
Y190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2Fj
X3Rvb2xfcHJlZml4fW9jYW1sb3B0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg
YXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0OyBhY193b3JkPSQyCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf
d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0K
K2lmICR7YWNfY3ZfcHJvZ19PQ0FNTE9QVCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTE9QVCI7IHRoZW4KKyAg
YWNfY3ZfcHJvZ19PQ0FNTE9QVD0iJE9DQU1MT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0
aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2Zv
ciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFz
X2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi
bGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsg
dGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxvcHQi
CisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp
ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBk
b25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorT0NBTUxPUFQ9JGFjX2N2X3Byb2dfT0NB
TUxPUFQKK2lmIHRlc3QgLW4gIiRPQ0FNTE9QVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FNTE9QVCIgPiY1CiskYXNfZWNobyAi
JE9DQU1MT1BUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisK
K2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTE9QVCI7IHRoZW4KKyAgYWNfY3RfT0NB
TUxPUFQ9JE9DQU1MT1BUCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxvcHQi
LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1s
b3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFj
X3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVCs6fSBmYWxz
ZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3Qg
LW4gIiRhY19jdF9PQ0FNTE9QVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVD0i
JGFjX2N0X09DQU1MT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UK
K2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBB
VEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg
ZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNf
dGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2
X3Byb2dfYWNfY3RfT0NBTUxPUFQ9Im9jYW1sb3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4m
NQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitm
aQorZmkKK2FjX2N0X09DQU1MT1BUPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MT1BUCitpZiB0ZXN0
IC1uICIkYWNfY3RfT0NBTUxPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxPUFQiID4mNQorJGFzX2VjaG8gIiRh
Y19jdF9PQ0FNTE9QVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkK
KworICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1MT1BUIiA9IHg7IHRoZW4KKyAgICBPQ0FNTE9QVD0i
bm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGlu
Cit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H
OiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQor
JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk
IHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisg
ICAgT0NBTUxPUFQ9JGFjX2N0X09DQU1MT1BUCisgIGZpCitlbHNlCisgIE9DQU1MT1BUPSIkYWNf
Y3ZfcHJvZ19PQ0FNTE9QVCIKK2ZpCisKKyAgICAgT0NBTUxCRVNUPWJ5dGUKKyAgICAgaWYgdGVz
dCAiJE9DQU1MT1BUIiA9ICJubyI7IHRoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IFdBUk5JTkc6IENhbm5vdCBmaW5kIG9jYW1sb3B0OyBieXRlY29kZSBjb21w
aWxhdGlvbiBvbmx5LiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDYW5ub3QgZmlu
ZCBvY2FtbG9wdDsgYnl0ZWNvZGUgY29tcGlsYXRpb24gb25seS4iID4mMjt9CisgICAgIGVsc2UK
KwlUTVBWRVJTSU9OPWAkT0NBTUxPUFQgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCgu
KlwpJHxcMXxwJyBgCisJaWYgdGVzdCAiJFRNUFZFUlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7
IHRoZW4KKwkgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6IHZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2NhcmRlZC4iID4m
NQorJGFzX2VjaG8gInZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2Nh
cmRlZC4iID4mNjsgfQorCSAgICBPQ0FNTE9QVD1ubworCWVsc2UKKwkgICAgT0NBTUxCRVNUPW9w
dAorCWZpCisgICAgIGZpCisKKworCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sYy5vcHQKKyAg
ICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZp
cnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjLm9wdCIsIHNvIGl0IGNhbiBiZSBh
IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2Ft
bGMub3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
JGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQrOn0gZmFs
c2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0
IC1uICIkT0NBTUxDRE9UT1BUIjsgdGhlbgorICBhY19jdl9wcm9nX09DQU1MQ0RPVE9QVD0iJE9D
QU1MQ0RPVE9QVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitk
bworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisg
ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisg
IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf
eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9n
X09DQU1MQ0RPVE9QVD0iJHthY190b29sX3ByZWZpeH1vY2FtbGMub3B0IgorICAgICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf
ZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19z
YXZlX0lGUworCitmaQorZmkKK09DQU1MQ0RPVE9QVD0kYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQK
K2lmIHRlc3QgLW4gIiRPQ0FNTENET1RPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxDRE9UT1BUIiA+JjUKKyRhc19lY2hv
ICIkT0NBTUxDRE9UT1BUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9Citm
aQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQiOyB0aGVuCisg
IGFjX2N0X09DQU1MQ0RPVE9QVD0kT0NBTUxDRE9UT1BUCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qg
d29yZCBvZiAib2NhbWxjLm9wdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgb2NhbWxjLm9wdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2df
YWNfY3RfT0NBTUxDRE9UT1BUKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MQ0RPVE9QVCI7IHRoZW4K
KyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTENET1RPUFQ9IiRhY19jdF9PQ0FNTENET1RPUFQiICMg
TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsg
SUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19z
YXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYg
IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTENE
T1RPUFQ9Im9jYW1sYy5vcHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsg
MgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3Rf
T0NBTUxDRE9UT1BUPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MQ0RPVE9QVAoraWYgdGVzdCAtbiAi
JGFjX2N0X09DQU1MQ0RPVE9QVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTENET1RPUFQiID4mNQorJGFzX2VjaG8g
IiRhY19jdF9PQ0FNTENET1RPUFQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTENET1RPUFQiID0geDsgdGhlbgorICAg
IE9DQU1MQ0RPVE9QVD0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFj
X3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0
IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9v
bHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9
eWVzIDs7Citlc2FjCisgICAgT0NBTUxDRE9UT1BUPSRhY19jdF9PQ0FNTENET1RPUFQKKyAgZmkK
K2Vsc2UKKyAgT0NBTUxDRE9UT1BUPSIkYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQiCitmaQorCisg
ICAgIGlmIHRlc3QgIiRPQ0FNTENET1RPUFQiICE9ICJubyI7IHRoZW4KKwlUTVBWRVJTSU9OPWAk
T0NBTUxDRE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcg
YAorCWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB2ZXJzaW9u
cyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbGMub3B0IGRpc2NhcmRlZC4iID4mNQorJGFzX2Vj
aG8gInZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sYy5vcHQgZGlzY2FyZGVkLiIg
PiY2OyB9CisJZWxzZQorCSAgICBPQ0FNTEM9JE9DQU1MQ0RPVE9QVAorCWZpCisgICAgIGZpCisK
KyAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxvcHQub3B0CisgICAgIGlmIHRlc3QgIiRPQ0FNTE9Q
VCIgIT0gIm5vIiA7IHRoZW4KKwlpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisg
ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbG9wdC5v
cHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7
YWNfdG9vbF9wcmVmaXh9b2NhbWxvcHQub3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNf
ZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJv
Z19PQ0FNTE9QVERPVE9QVCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTE9QVERPVE9QVCI7IHRoZW4KKyAgYWNf
Y3ZfcHJvZ19PQ0FNTE9QVERPVE9QVD0iJE9DQU1MT1BURE9UT1BUIiAjIExldCB0aGUgdXNlciBv
dmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB
UkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVz
dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj
X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQ9IiR7YWNfdG9vbF9w
cmVmaXh9b2NhbWxvcHQub3B0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFr
IDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09DQU1M
T1BURE9UT1BUPSRhY19jdl9wcm9nX09DQU1MT1BURE9UT1BUCitpZiB0ZXN0IC1uICIkT0NBTUxP
UFRET1RPUFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkT0NBTUxPUFRET1RPUFQiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE9QVERPVE9Q
VCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYg
dGVzdCAteiAiJGFjX2N2X3Byb2dfT0NBTUxPUFRET1RPUFQiOyB0aGVuCisgIGFjX2N0X09DQU1M
T1BURE9UT1BUPSRPQ0FNTE9QVERPVE9QVAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2Yg
Im9jYW1sb3B0Lm9wdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitz
ZXQgZHVtbXkgb2NhbWxvcHQub3B0OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19j
dF9PQ0FNTE9QVERPVE9QVCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE9QVERPVE9QVCI7IHRoZW4K
KyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9QVD0iJGFjX2N0X09DQU1MT1BURE9UT1BU
IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJ
RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0k
YXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNf
ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0
IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly
LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NB
TUxPUFRET1RPUFQ9Im9jYW1sb3B0Lm9wdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAg
ICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2Zp
CithY19jdF9PQ0FNTE9QVERPVE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9QVAor
aWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MT1BURE9UT1BUIjsgdGhlbgorICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MT1BURE9UT1BU
IiA+JjUKKyRhc19lY2hvICIkYWNfY3RfT0NBTUxPUFRET1RPUFQiID4mNjsgfQorZWxzZQorICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQor
JGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTE9QVERP
VE9QVCIgPSB4OyB0aGVuCisgICAgT0NBTUxPUFRET1RPUFQ9Im5vIgorICBlbHNlCisgICAgY2Fz
ZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMg
bm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdB
Uk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIg
PiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE9DQU1MT1BURE9UT1BUPSRh
Y19jdF9PQ0FNTE9QVERPVE9QVAorICBmaQorZWxzZQorICBPQ0FNTE9QVERPVE9QVD0iJGFjX2N2
X3Byb2dfT0NBTUxPUFRET1RPUFQiCitmaQorCisJaWYgdGVzdCAiJE9DQU1MT1BURE9UT1BUIiAh
PSAibm8iOyB0aGVuCisJICAgVE1QVkVSU0lPTj1gJE9DQU1MT1BURE9UT1BUIC12IHwgc2VkIC1u
IC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8XDF8cCcgYAorCSAgIGlmIHRlc3QgIiRUTVBWRVJT
SU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJICAgICAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHZlcnNpb24gZGlmZmVycyBmcm9tIG9jYW1s
Yzsgb2NhbWxvcHQub3B0IGRpc2NhcmRlZC4iID4mNQorJGFzX2VjaG8gInZlcnNpb24gZGlmZmVy
cyBmcm9tIG9jYW1sYzsgb2NhbWxvcHQub3B0IGRpc2NhcmRlZC4iID4mNjsgfQorCSAgIGVsc2UK
KwkgICAgICBPQ0FNTE9QVD0kT0NBTUxPUFRET1RPUFQKKwkgICBmaQorICAgICAgICBmaQorICAg
ICBmaQorCisKKyAgZmkKKworCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWwgdG9wbGV2ZWwKKyAg
aWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9b2NhbWwiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt
IG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWw7IGFjX3dv
cmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAi
ID4mNjsgfQoraWYgJHthY19jdl9wcm9nX09DQU1MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE9DQU1MIjsgdGhlbgor
ICBhY19jdl9wcm9nX09DQU1MPSIkT0NBTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0
ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFz
X2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGly
IiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l
eHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVu
CisgICAgYWNfY3ZfcHJvZ19PQ0FNTD0iJHthY190b29sX3ByZWZpeH1vY2FtbCIKKyAgICAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0k
YXNfc2F2ZV9JRlMKKworZmkKK2ZpCitPQ0FNTD0kYWNfY3ZfcHJvZ19PQ0FNTAoraWYgdGVzdCAt
biAiJE9DQU1MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJE9DQU1MIiA+JjUKKyRhc19lY2hvICIkT0NBTUwiID4mNjsgfQorZWxzZQor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m
NQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9w
cm9nX09DQU1MIjsgdGhlbgorICBhY19jdF9PQ0FNTD0kT0NBTUwKKyAgIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICJvY2FtbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy
Z3MuCitzZXQgZHVtbXkgb2NhbWw7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24g
ImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0
X09DQU1MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs
c2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0
X09DQU1MPSIkYWNfY3RfT0NBTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lgor
ZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBp
biAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBh
c19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNp
b25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYm
ICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAg
YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTD0ib2NhbWwiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1
CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2Zp
CitmaQorYWNfY3RfT0NBTUw9JGFjX2N2X3Byb2dfYWNfY3RfT0NBTUwKK2lmIHRlc3QgLW4gIiRh
Y19jdF9PQ0FNTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09DQU1MIiA+
JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngk
YWNfY3RfT0NBTUwiID0geDsgdGhlbgorICAgIE9DQU1MPSJubyIKKyAgZWxzZQorICAgIGNhc2Ug
JGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5v
dCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJO
SU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4m
Mjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBPQ0FNTD0kYWNfY3RfT0NBTUwK
KyAgZmkKK2Vsc2UKKyAgT0NBTUw9IiRhY19jdl9wcm9nX09DQU1MIgorZmkKKworCisgICMgY2hl
Y2tpbmcgZm9yIG9jYW1sZGVwCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4K
KyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZGVw
Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2Fj
X3Rvb2xfcHJlZml4fW9jYW1sZGVwOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19PQ0FN
TERFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGlmIHRlc3QgLW4gIiRPQ0FNTERFUCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTERFUD0i
JE9DQU1MREVQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3Nh
dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2Rv
CisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAg
ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAg
aWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94
ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2df
T0NBTUxERVA9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxkZXAiCisgICAgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZT
CisKK2ZpCitmaQorT0NBTUxERVA9JGFjX2N2X3Byb2dfT0NBTUxERVAKK2lmIHRlc3QgLW4gIiRP
Q0FNTERFUCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRPQ0FNTERFUCIgPiY1CiskYXNfZWNobyAiJE9DQU1MREVQIiA+JjY7IH0KK2Vs
c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNf
Y3ZfcHJvZ19PQ0FNTERFUCI7IHRoZW4KKyAgYWNfY3RfT0NBTUxERVA9JE9DQU1MREVQCisgICMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxkZXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9n
cmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sZGVwOyBhY193b3JkPSQyCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y
ZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lm
ICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTERFUCI7
IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERFUD0iJGFjX2N0X09DQU1MREVQIiAjIExl
dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElG
Uz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2
ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19l
eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193
b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVA9
Im9jYW1sZGVwIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv
dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkK
K2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09DQU1MREVQ
PSRhY19jdl9wcm9nX2FjX2N0X09DQU1MREVQCitpZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUxERVAi
OyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkYWNfY3RfT0NBTUxERVAiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTERFUCIgPiY2OyB9
CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0
X09DQU1MREVQIiA9IHg7IHRoZW4KKyAgICBPQ0FNTERFUD0ibm8iCisgIGVsc2UKKyAgICBjYXNl
ICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBu
b3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FS
TklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+
JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxERVA9JGFjX2N0X09D
QU1MREVQCisgIGZpCitlbHNlCisgIE9DQU1MREVQPSIkYWNfY3ZfcHJvZ19PQ0FNTERFUCIKK2Zp
CisKKworICAjIGNoZWNraW5nIGZvciBvY2FtbG1rdG9wCisgIGlmIHRlc3QgLW4gIiRhY190b29s
X3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xf
cHJlZml4fW9jYW1sbWt0b3AiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz
Lgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxta3RvcDsgYWNfd29yZD0kMgoreyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dv
cmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Citp
ZiAke2FjX2N2X3Byb2dfT0NBTUxNS1RPUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTE1LVE9QIjsgdGhlbgor
ICBhY19jdl9wcm9nX09DQU1MTUtUT1A9IiRPQ0FNTE1LVE9QIiAjIExldCB0aGUgdXNlciBvdmVy
cmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU
T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAt
eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4
ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxNS1RPUD0iJHthY190b29sX3ByZWZpeH1v
Y2FtbG1rdG9wIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv
dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkK
K2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09DQU1MTUtUT1A9JGFj
X2N2X3Byb2dfT0NBTUxNS1RPUAoraWYgdGVzdCAtbiAiJE9DQU1MTUtUT1AiOyB0aGVuCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxNS1RP
UCIgPiY1CiskYXNfZWNobyAiJE9DQU1MTUtUT1AiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g
Im5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX09DQU1MTUtU
T1AiOyB0aGVuCisgIGFjX2N0X09DQU1MTUtUT1A9JE9DQU1MTUtUT1AKKyAgIyBFeHRyYWN0IHRo
ZSBmaXJzdCB3b3JkIG9mICJvY2FtbG1rdG9wIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l
IHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbG1rdG9wOyBhY193b3JkPSQyCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNf
Y3ZfcHJvZ19hY19jdF9PQ0FNTE1LVE9QKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAi
KGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MTUtUT1AiOyB0
aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUD0iJGFjX2N0X09DQU1MTUtUT1AiICMg
TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsg
SUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19z
YXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYg
IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj
X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1L
VE9QPSJvY2FtbG1rdG9wIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIK
KyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X09D
QU1MTUtUT1A9JGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUAoraWYgdGVzdCAtbiAiJGFjX2N0
X09DQU1MTUtUT1AiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxNS1RPUCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X09D
QU1MTUtUT1AiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAg
aWYgdGVzdCAieCRhY19jdF9PQ0FNTE1LVE9QIiA9IHg7IHRoZW4KKyAgICBPQ0FNTE1LVE9QPSJu
byIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4K
K3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6
IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Cisk
YXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg
d2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAg
ICBPQ0FNTE1LVE9QPSRhY19jdF9PQ0FNTE1LVE9QCisgIGZpCitlbHNlCisgIE9DQU1MTUtUT1A9
IiRhY19jdl9wcm9nX09DQU1MTUtUT1AiCitmaQorCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxt
a2xpYgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0
aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2FtbG1rbGliIiwgc28gaXQgY2Fu
IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4
fW9jYW1sbWtsaWI7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX09DQU1MTUtMSUIrOn0g
ZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0
ZXN0IC1uICIkT0NBTUxNS0xJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19PQ0FNTE1LTElCPSIkT0NB
TUxNS0xJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbwor
ICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAg
Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlm
IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX09D
QU1MTUtMSUI9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxta2xpYiIKKyAgICAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9J
RlMKKworZmkKK2ZpCitPQ0FNTE1LTElCPSRhY19jdl9wcm9nX09DQU1MTUtMSUIKK2lmIHRlc3Qg
LW4gIiRPQ0FNTE1LTElCIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJE9DQU1MTUtMSUIiID4mNQorJGFzX2VjaG8gIiRPQ0FNTE1LTElC
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0
ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTE1LTElCIjsgdGhlbgorICBhY19jdF9PQ0FNTE1LTElC
PSRPQ0FNTE1LTElCCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxta2xpYiIs
IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgb2NhbWxt
a2xpYjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRh
Y193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS0xJQis6fSBm
YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRl
c3QgLW4gIiRhY19jdF9PQ0FNTE1LTElCIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X09DQU1M
TUtMSUI9IiRhY19jdF9PQ0FNTE1LTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVz
dC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19k
aXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIg
JiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0
ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgor
ICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS0xJQj0ib2NhbWxta2xpYiIKKyAgICAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNf
c2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9PQ0FNTE1LTElCPSRhY19jdl9wcm9nX2FjX2N0X09D
QU1MTUtMSUIKK2lmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE1LTElCIjsgdGhlbgorICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MTUtM
SUIiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FNTE1LTElCIiA+JjY7IH0KK2Vsc2UKKyAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRh
c19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfT0NBTUxNS0xJQiIg
PSB4OyB0aGVuCisgICAgT0NBTUxNS0xJQj0ibm8iCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19j
b21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4
ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNp
bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNf
dG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxNS0xJQj0kYWNfY3RfT0NBTUxNS0xJ
QgorICBmaQorZWxzZQorICBPQ0FNTE1LTElCPSIkYWNfY3ZfcHJvZ19PQ0FNTE1LTElCIgorZmkK
KworCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZG9jCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3By
ZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJl
Zml4fW9jYW1sZG9jIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3Nl
dCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sZG9jOyBhY193b3JkPSQyCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNf
Y3ZfcHJvZ19PQ0FNTERPQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTERPQyI7IHRoZW4KKyAgYWNfY3ZfcHJv
Z19PQ0FNTERPQz0iJE9DQU1MRE9DIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K
K2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIg
aW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg
YXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z
aW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm
JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAg
IGFjX2N2X3Byb2dfT0NBTUxET0M9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxkb2MiCisgICAgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9
JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorT0NBTUxET0M9JGFjX2N2X3Byb2dfT0NBTUxET0MKK2lm
IHRlc3QgLW4gIiRPQ0FNTERPQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FNTERPQyIgPiY1CiskYXNfZWNobyAiJE9DQU1MRE9D
IiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0
ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTERPQyI7IHRoZW4KKyAgYWNfY3RfT0NBTUxET0M9JE9D
QU1MRE9DCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxkb2MiLCBzbyBpdCBj
YW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG9jYW1sZG9jOyBhY193
b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4g
IiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERPQys6fSBmYWxzZTsgdGhlbiA6
CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19j
dF9PQ0FNTERPQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTERPQz0iJGFjX2N0X09D
QU1MRE9DIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNf
Y3RfT0NBTUxET0M9Im9jYW1sZG9jIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJy
ZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2Fj
X2N0X09DQU1MRE9DPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MRE9DCitpZiB0ZXN0IC1uICIkYWNf
Y3RfT0NBTUxET0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxET0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9PQ0FN
TERPQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0
ZXN0ICJ4JGFjX2N0X09DQU1MRE9DIiA9IHg7IHRoZW4KKyAgICBPQ0FNTERPQz0ibm8iCisgIGVs
c2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBj
cm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8g
IiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9z
dCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgT0NBTUxE
T0M9JGFjX2N0X09DQU1MRE9DCisgIGZpCitlbHNlCisgIE9DQU1MRE9DPSIkYWNfY3ZfcHJvZ19P
Q0FNTERPQyIKK2ZpCisKKworICAjIGNoZWNraW5nIGZvciBvY2FtbGJ1aWxkCisgIGlmIHRlc3Qg
LW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m
ICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sYnVpbGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5h
bWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxidWlsZDsgYWNf
d29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4u
ICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfT0NBTUxCVUlMRCs6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRPQ0FNTEJV
SUxEIjsgdGhlbgorICBhY19jdl9wcm9nX09DQU1MQlVJTEQ9IiRPQ0FNTEJVSUxEIiAjIExldCB0
aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0k
UEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9J
RlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQg
aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfT0NBTUxCVUlMRD0iJHthY190
b29sX3ByZWZpeH1vY2FtbGJ1aWxkIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJy
ZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK09D
QU1MQlVJTEQ9JGFjX2N2X3Byb2dfT0NBTUxCVUlMRAoraWYgdGVzdCAtbiAiJE9DQU1MQlVJTEQi
OyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkT0NBTUxCVUlMRCIgPiY1CiskYXNfZWNobyAiJE9DQU1MQlVJTEQiID4mNjsgfQorZWxzZQor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m
NQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9w
cm9nX09DQU1MQlVJTEQiOyB0aGVuCisgIGFjX2N0X09DQU1MQlVJTEQ9JE9DQU1MQlVJTEQKKyAg
IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJvY2FtbGJ1aWxkIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBvY2FtbGJ1aWxkOyBhY193b3JkPSQy
Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk
YWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7
IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEJVSUxEKzp9IGZhbHNlOyB0aGVuIDoKKyAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X09D
QU1MQlVJTEQiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRD0iJGFjX2N0X09D
QU1MQlVJTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2
ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8K
KyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAg
IGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBp
ZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gg
IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19h
Y19jdF9PQ0FNTEJVSUxEPSJvY2FtbGJ1aWxkIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQor
ICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQor
ZmkKK2FjX2N0X09DQU1MQlVJTEQ9JGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlMRAoraWYgdGVz
dCAtbiAiJGFjX2N0X09DQU1MQlVJTEQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfT0NBTUxCVUlMRCIgPiY1CiskYXNfZWNo
byAiJGFjX2N0X09DQU1MQlVJTEQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7
IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTEJVSUxEIiA9IHg7IHRoZW4KKyAgICBP
Q0FNTEJVSUxEPSJubyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9v
bF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJp
cGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBu
b3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMg
OzsKK2VzYWMKKyAgICBPQ0FNTEJVSUxEPSRhY19jdF9PQ0FNTEJVSUxECisgIGZpCitlbHNlCisg
IE9DQU1MQlVJTEQ9IiRhY19jdl9wcm9nX09DQU1MQlVJTEQiCitmaQorCisKKyAgICBpZiB0ZXN0
ICJ4JE9DQU1MQyIgPSAieG5vIjsgdGhlbiA6CisKKyAgICAgICAgaWYgdGVzdCAieCRlbmFibGVf
b2NhbWx0b29scyIgPSAieHllcyI7IHRoZW4gOgorCisgICAgICAgICAgICBhc19mbl9lcnJvciAk
PyAiT2NhbWwgdG9vbHMgZW5hYmxlZCwgYnV0IHVuYWJsZSB0byBmaW5kIE9jYW1sIiAiJExJTkVO
TyIgNQorZmkKKyAgICAgICAgb2NhbWx0b29scz0ibiIKKworZmkKKworZmkKKyMgRXh0cmFjdCB0
aGUgZmlyc3Qgd29yZCBvZiAiYmFzaCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo
IGFyZ3MuCitzZXQgZHVtbXkgYmFzaDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQkFT
SCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg
IGNhc2UgJEJBU0ggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfQkFTSD0i
JEJBU0giICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7
OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNf
ZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIi
ICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4
dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4
dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4K
KyAgICBhY19jdl9wYXRoX0JBU0g9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJ
RlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQkFTSCIgJiYgYWNfY3Zf
cGF0aF9CQVNIPSJubyIKKyAgOzsKK2VzYWMKK2ZpCitCQVNIPSRhY19jdl9wYXRoX0JBU0gKK2lm
IHRlc3QgLW4gIiRCQVNIIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJEJBU0giID4mNQorJGFzX2VjaG8gIiRCQVNIIiA+JjY7IH0KK2Vs
c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3QgeCIke0JBU0h9IiA9
PSB4Im5vIgordGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCBiYXNoLCBw
bGVhc2UgaW5zdGFsbCBiYXNoIiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3QgIngkcHl0aG9udG9v
bHMiID0gInh5IjsgdGhlbiA6CisKKyAgICBpZiBlY2hvICIkUFlUSE9OIiB8IGdyZXAgLXEgIl4v
IjsgdGhlbiA6CisKKyAgICAgICAgUFlUSE9OUEFUSD0kUFlUSE9OCisgICAgICAgIFBZVEhPTj1g
YmFzZW5hbWUgJFBZVEhPTlBBVEhgCisKK2VsaWYgdGVzdCAteiAiJFBZVEhPTiI7IHRoZW4gOgor
ICBQWVRIT049InB5dGhvbiIKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8gIlBZVEhPTiBzcGVjaWZp
ZWQsIGJ1dCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCIgIiRMSU5FTk8iIDUKK2ZpCisgICAgIyBF
eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkUFlUSE9OIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkUFlUSE9OOyBhY193b3JkPSQyCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7
YWNfY3ZfcGF0aF9QWVRIT05QQVRIKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUFlUSE9OUEFUSCBpbgorICBbXFwvXSogfCA/Oltc
XC9dKikKKyAgYWNfY3ZfcGF0aF9QWVRIT05QQVRIPSIkUFlUSE9OUEFUSCIgIyBMZXQgdGhlIHVz
ZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisg
IElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYg
eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk
YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfUFlU
SE9OUEFUSD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf
ZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9J
RlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QWVRIT05QQVRIIiAmJiBhY19jdl9wYXRoX1BZ
VEhPTlBBVEg9Im5vIgorICA7OworZXNhYworZmkKK1BZVEhPTlBBVEg9JGFjX2N2X3BhdGhfUFlU
SE9OUEFUSAoraWYgdGVzdCAtbiAiJFBZVEhPTlBBVEgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlUSE9OUEFUSCIgPiY1CiskYXNf
ZWNobyAiJFBZVEhPTlBBVEgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0K
K2ZpCisKKworaWYgdGVzdCB4IiR7UFlUSE9OUEFUSH0iID09IHgibm8iCit0aGVuCisgICAgYXNf
Zm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kICRQWVRIT04sIHBsZWFzZSBpbnN0YWxsICRQWVRI
T04iICIkTElORU5PIiA1CitmaQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yIHB5dGhvbiB2ZXJzaW9uID49IDIuMyAiID4mNQorJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiB2ZXJzaW9uID49IDIuMyAuLi4gIiA+JjY7IH0KK2Ak
UFlUSE9OIC1jICdpbXBvcnQgc3lzOyBleGl0KGV2YWwoInN5cy52ZXJzaW9uX2luZm8gPCAoMiwg
MykiKSknYAoraWYgdGVzdCAiJD8iICE9ICIwIgordGhlbgorICAgIHB5dGhvbl92ZXJzaW9uPWAk
UFlUSE9OIC1WIDI+JjFgCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgYXNfZm5fZXJy
b3IgJD8gIiRweXRob25fdmVyc2lvbiBpcyB0b28gb2xkLCBtaW5pbXVtIHJlcXVpcmVkIHZlcnNp
b24gaXMgMi4zIiAiJExJTkVOTyIgNQorZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9
CitmaQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yIHB5dGhvbiB4bWwuZG9tLm1pbmlkb20iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHB5dGhvbiB4bWwuZG9tLm1pbmlkb20uLi4gIiA+JjY7IH0KK2AkUFlUSE9OIC1jICdpbXBv
cnQgeG1sLmRvbS5taW5pZG9tJ2AKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFz
X2VjaG8gIm5vIiA+JjY7IH0KKyAgICBhc19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgeG1s
LmRvbS5taW5pZG9tIG1vZHVsZSIgIiRMSU5FTk8iIDUKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5
ZXMiID4mNjsgfQorZmkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIGZvciBweXRob24gZGV2ZWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHB5dGhvbiBkZXZlbC4uLiAiID4mNjsgfQorCitgJFBZVEhPTiAtYyAnCitpbXBvcnQgb3Mu
cGF0aCwgc3lzCitmb3IgcCBpbiBzeXMucGF0aDoKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhwICsg
Ii9jb25maWcvTWFrZWZpbGUiKToKKyAgICAgICAgc3lzLmV4aXQoMCkKK3N5cy5leGl0KDEpCisn
ID4gL2Rldi9udWxsIDI+JjFgCisKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFz
X2VjaG8gIm5vIiA+JjY7IH0KKyAgICBhc19mbl9lcnJvciAkPyAiUHl0aG9uIGRldmVsIHBhY2th
Z2Ugbm90IGZvdW5kIiAiJExJTkVOTyIgNQorZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2
OyB9CitmaQorCitmaQorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ4Z2V0dGV4dCIsIHNv
IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgeGdldHRleHQ7
IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y
ZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1hHRVRURVhUKzp9IGZhbHNlOyB0aGVuIDoK
KyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkWEdFVFRFWFQgaW4K
KyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfWEdFVFRFWFQ9IiRYR0VUVEVYVCIg
IyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICop
CisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4g
JFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf
ZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u
czsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAk
YXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFj
X2N2X3BhdGhfWEdFVFRFWFQ9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y
ZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9
JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfWEdFVFRFWFQiICYmIGFjX2N2
X3BhdGhfWEdFVFRFWFQ9Im5vIgorICA7OworZXNhYworZmkKK1hHRVRURVhUPSRhY19jdl9wYXRo
X1hHRVRURVhUCitpZiB0ZXN0IC1uICIkWEdFVFRFWFQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkWEdFVFRFWFQiID4mNQorJGFzX2Vj
aG8gIiRYR0VUVEVYVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkK
KworCitpZiB0ZXN0IHgiJHtYR0VUVEVYVH0iID09IHgibm8iCit0aGVuCisgICAgYXNfZm5fZXJy
b3IgJD8gIlVuYWJsZSB0byBmaW5kIHhnZXR0ZXh0LCBwbGVhc2UgaW5zdGFsbCB4Z2V0dGV4dCIg
IiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0ICJ4JGhvc3Rfb3MiID09ICJ4bGludXgtZ251IgordGhl
bgorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAidWRldmFkbSIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgdWRldmFkbTsgYWNfd29yZD0k
MgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CitpZiAke2FjX2N2X3BhdGhfVURFVkFETSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFVERVZBRE0gaW4KKyAgW1xcL10qIHwg
PzpbXFwvXSopCisgIGFjX2N2X3BhdGhfVURFVkFETT0iJFVERVZBRE0iICMgTGV0IHRoZSB1c2Vy
IG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ
RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9y
IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsg
dGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFz
X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1VERVZB
RE09IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg
PiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisK
KyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfVURFVkFETSIgJiYgYWNfY3ZfcGF0aF9VREVWQURNPSJu
byIKKyAgOzsKK2VzYWMKK2ZpCitVREVWQURNPSRhY19jdl9wYXRoX1VERVZBRE0KK2lmIHRlc3Qg
LW4gIiRVREVWQURNIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJFVERVZBRE0iID4mNQorJGFzX2VjaG8gIiRVREVWQURNIiA+JjY7IH0K
K2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICBpZiB0ZXN0IHgiJHtV
REVWQURNfSIgPT0geCJubyIKKyAgICB0aGVuCisgICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qg
d29yZCBvZiAidWRldmluZm8iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz
Lgorc2V0IGR1bW15IHVkZXZpbmZvOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9VREVW
SU5GTys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGNhc2UgJFVERVZJTkZPIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRo
X1VERVZJTkZPPSIkVURFVklORk8iICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdp
dGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQ
QVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRl
c3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh
Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1VERVZJTkZPPSIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAg
ZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9w
YXRoX1VERVZJTkZPIiAmJiBhY19jdl9wYXRoX1VERVZJTkZPPSJubyIKKyAgOzsKK2VzYWMKK2Zp
CitVREVWSU5GTz0kYWNfY3ZfcGF0aF9VREVWSU5GTworaWYgdGVzdCAtbiAiJFVERVZJTkZPIjsg
dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JFVERVZJTkZPIiA+JjUKKyRhc19lY2hvICIkVURFVklORk8iID4mNjsgfQorZWxzZQorICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFz
X2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICAgICAgICBpZiB0ZXN0IHgiJHtVREVWSU5GT30i
ID09IHgibm8iCisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFi
bGUgdG8gZmluZCB1ZGV2YWRtIG9yIHVkZXZpbmZvLCBwbGVhc2UgaW5zdGFsbCB1ZGV2IiAiJExJ
TkVOTyIgNQorICAgICAgICBmaQorICAgICAgICB1ZGV2dmVyPWAke1VERVZJTkZPfSAtViB8IGF3
ayAne3ByaW50ICRORn0nYAorICAgIGVsc2UKKyAgICAgICAgdWRldnZlcj1gJHtVREVWQURNfSBp
bmZvIC1WIHwgYXdrICd7cHJpbnQgJE5GfSdgCisgICAgZmkKKyAgICBpZiB0ZXN0ICR7dWRldnZl
cn0gLWx0IDU5CisgICAgdGhlbgorICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2Yg
ImhvdHBsdWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1
bW15IGhvdHBsdWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0hPVFBMVUcrOn0gZmFs
c2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRI
T1RQTFVHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0hPVFBMVUc9IiRI
T1RQTFVHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAg
OzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFz
X2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGly
IiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l
eHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l
eHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVu
CisgICAgYWNfY3ZfcGF0aF9IT1RQTFVHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0Igor
ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv
JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9u
ZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0hPVFBMVUciICYm
IGFjX2N2X3BhdGhfSE9UUExVRz0ibm8iCisgIDs7Citlc2FjCitmaQorSE9UUExVRz0kYWNfY3Zf
cGF0aF9IT1RQTFVHCitpZiB0ZXN0IC1uICIkSE9UUExVRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRIT1RQTFVHIiA+JjUKKyRhc19l
Y2hvICIkSE9UUExVRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkK
KworCisgICAgICAgIGlmIHRlc3QgeCIke0hPVFBMVUd9IiA9PSB4Im5vIgorICAgICAgICB0aGVu
CisgICAgICAgICAgICBhc19mbl9lcnJvciAkPyAidWRldiBpcyB0b28gb2xkLCB1cGdyYWRlIHRv
IHZlcnNpb24gNTkgb3IgbGF0ZXIiICIkTElORU5PIiA1CisgICAgICAgIGZpCisgICAgZmkKK2Vs
c2UKKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInZuY29uZmlnIiwgc28gaXQgY2Fu
IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSB2bmNvbmZpZzsgYWNfd29y
ZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIg
PiY2OyB9CitpZiAke2FjX2N2X3BhdGhfVk5DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRWTkNPTkZJRyBpbgorICBbXFwv
XSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9WTkNPTkZJRz0iJFZOQ09ORklHIiAjIExldCB0
aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAor
ZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgor
ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor
ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0
X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0
aF9WTkNPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2
ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9WTkNPTkZJRyIgJiYgYWNfY3ZfcGF0aF9W
TkNPTkZJRz0ibm8iCisgIDs7Citlc2FjCitmaQorVk5DT05GSUc9JGFjX2N2X3BhdGhfVk5DT05G
SUcKK2lmIHRlc3QgLW4gIiRWTkNPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRWTkNPTkZJRyIgPiY1CiskYXNfZWNobyAiJFZO
Q09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAg
ICBpZiB0ZXN0IHgiJHtWTkNPTkZJR30iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICBhc19m
bl9lcnJvciAkPyAiTm90IGEgTGludXggc3lzdGVtIGFuZCB1bmFibGUgdG8gZmluZCB2bmQiICIk
TElORU5PIiA1CisgICAgZmkKK2ZpCisKK2lmIHRlc3QgIngkaG9zdF9vcyIgPT0gInhsaW51eC1n
bnUiCit0aGVuCisgICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInV1
aWQvdXVpZC5oIiAiYWNfY3ZfaGVhZGVyX3V1aWRfdXVpZF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1
bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl91dWlkX3V1aWRfaCIgPSB4eWVzOyB0aGVuIDoK
KworZWxzZQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzIiAiJExJ
TkVOTyIgNQorZmkKKworCitlbHNlCisgICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAi
JExJTkVOTyIgInV1aWQuaCIgImFjX2N2X2hlYWRlcl91dWlkX2giICIkYWNfaW5jbHVkZXNfZGVm
YXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3V1aWRfaCIgPSB4eWVzOyB0aGVuIDoKKwor
ZWxzZQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzIiAiJExJTkVO
TyIgNQorZmkKKworCitmaQorCisKKworCisKKworCitpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0df
Q09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCisJaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4
IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9
cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQg
ZHVtbXkgJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNf
Y3ZfcGF0aF9QS0dfQ09ORklHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUEtHX0NPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9d
KikKKyAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIg
b3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZT
PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElG
Uz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig
YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0
ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfUEtHX0NP
TkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMK
KworICA7OworZXNhYworZmkKK1BLR19DT05GSUc9JGFjX2N2X3BhdGhfUEtHX0NPTkZJRworaWYg
dGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkUEtHX0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJFBLR19D
T05GSUciID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkK
K2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX1BLR19DT05GSUciOyB0aGVuCisgIGFjX3B0X1BLR19D
T05GSUc9JFBLR19DT05GSUcKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwa2ctY29u
ZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBw
a2ctY29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBm
b3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklH
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
Y2FzZSAkYWNfcHRfUEtHX0NPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3Zf
cGF0aF9hY19wdF9QS0dfQ09ORklHPSIkYWNfcHRfUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIg
b3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZT
PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElG
Uz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig
YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0
ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNf
ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfYWNfcHRf
UEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4
ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2
ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X1BLR19DT05GSUc9JGFjX2N2X3BhdGhfYWNf
cHRfUEtHX0NPTkZJRworaWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfUEtH
X0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJGFjX3B0X1BLR19DT05GSUciID4mNjsgfQorZWxzZQor
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m
NQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19wdF9QS0dfQ09O
RklHIiA9IHg7IHRoZW4KKyAgICBQS0dfQ09ORklHPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9z
c19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl
Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
dXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQor
YWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgUEtHX0NPTkZJRz0kYWNfcHRfUEtHX0NP
TkZJRworICBmaQorZWxzZQorICBQS0dfQ09ORklHPSIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIgor
ZmkKKworZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorCV9wa2dfbWluX3ZlcnNp
b249MC45LjAKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIHBrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9w
a2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KKwlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtn
Y29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KKwkJeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVz
IiA+JjY7IH0KKwllbHNlCisJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCQlQS0dfQ09ORklHPSIi
CisJZmkKK2ZpCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsaWIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIGdsaWIuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJGdsaWJfQ0ZMQUdTIjsgdGhlbgor
ICAgIHBrZ19jdl9nbGliX0NGTEFHUz0iJGdsaWJfQ0ZMQUdTIgorIGVsaWYgdGVzdCAtbiAiJFBL
R19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0t
ZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ2xpYi0yLjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJ
RyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiZ2xpYi0yLjAiKSAyPiY1CisgIGFjX3N0YXR1cz0k
PworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3Rh
dHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfZ2xpYl9D
RkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJnbGliLTIuMCIgMj4vZGV2L251bGxgCitlbHNl
CisgIHBrZ19mYWlsZWQ9eWVzCitmaQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2Zp
CitpZiB0ZXN0IC1uICIkZ2xpYl9MSUJTIjsgdGhlbgorICAgIHBrZ19jdl9nbGliX0xJQlM9IiRn
bGliX0xJQlMiCisgZWxpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0
IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJnbGli
LTIuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJn
bGliLTIuMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMg
PSAwOyB9OyB0aGVuCisgIHBrZ19jdl9nbGliX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiZ2xp
Yi0yLjAiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyBlbHNlCisg
ICAgcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHll
czsgdGhlbgorICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitpZiAkUEtHX0NPTkZJRyAtLWF0
bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vy
cm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBv
cnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVk
ID0geWVzOyB0aGVuCisJICAgICAgICBnbGliX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hv
cnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzICJnbGliLTIuMCIgMj4mMWAKKyAgICAgICAgZWxzZQor
CSAgICAgICAgZ2xpYl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXByaW50LWVycm9ycyAiZ2xp
Yi0yLjAiIDI+JjFgCisgICAgICAgIGZpCisJIyBQdXQgdGhlIG5hc3R5IGVycm9yIG1lc3NhZ2Ug
aW4gY29uZmlnLmxvZyB3aGVyZSBpdCBiZWxvbmdzCisJZWNobyAiJGdsaWJfUEtHX0VSUk9SUyIg
PiY1CisKKwlhc19mbl9lcnJvciAkPyAiUGFja2FnZSByZXF1aXJlbWVudHMgKGdsaWItMi4wKSB3
ZXJlIG5vdCBtZXQ6CisKKyRnbGliX1BLR19FUlJPUlMKKworQ29uc2lkZXIgYWRqdXN0aW5nIHRo
ZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgeW91CitpbnN0YWxsZWQg
c29mdHdhcmUgaW4gYSBub24tc3RhbmRhcmQgcHJlZml4LgorCitBbHRlcm5hdGl2ZWx5LCB5b3Ug
bWF5IHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGdsaWJfQ0ZMQUdTCithbmQgZ2xpYl9M
SUJTIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwgcGtnLWNvbmZpZy4KK1NlZSB0aGUgcGtnLWNv
bmZpZyBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDUKK2VsaWYgdGVzdCAk
cGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKyAgICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQor
CXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAk
YWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjI7fQorYXNfZm5fZXJyb3IgJD8gIlRoZSBwa2ctY29uZmlnIHNjcmlwdCBjb3VsZCBub3QgYmUg
Zm91bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAoraXMgaW4geW91ciBQQVRIIG9yIHNl
dCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAorcGF0aCB0
byBwa2ctY29uZmlnLgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNldCB0aGUgZW52aXJvbm1l
bnQgdmFyaWFibGVzIGdsaWJfQ0ZMQUdTCithbmQgZ2xpYl9MSUJTIHRvIGF2b2lkIHRoZSBuZWVk
IHRvIGNhbGwgcGtnLWNvbmZpZy4KK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCitUbyBnZXQgcGtnLWNvbmZpZywgc2VlIDxodHRwOi8vcGtnLWNvbmZpZy5m
cmVlZGVza3RvcC5vcmcvPi4KK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIk
TElORU5PIiA1OyB9CitlbHNlCisJZ2xpYl9DRkxBR1M9JHBrZ19jdl9nbGliX0NGTEFHUworCWds
aWJfTElCUz0kcGtnX2N2X2dsaWJfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsg
fQorCitmaQorCisjIENoZWNrIGxpYnJhcnkgcGF0aAoraWYgdGVzdCAtZCAiJHByZWZpeC9saWI2
NCI7IHRoZW4gOgorCisgICAgTElCX1BBVEg9ImxpYjY0IgorCitlbHNlCisKKyAgICBMSUJfUEFU
SD0ibGliIgorCitmaQorCisKKyMgQ2hlY2tzIGZvciBsaWJyYXJpZXMuCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpb19zZXR1cCBpbiAtbGFp
byIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaW9fc2V0dXAgaW4gLWxhaW8uLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3ZfbGliX2Fpb19pb19zZXR1cCs6fSBmYWxzZTsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9
JExJQlMKK0xJQlM9Ii1sYWlvICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv
bmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55
IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBi
ZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0
aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICov
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBpb19zZXR1cCAo
KTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGlvX3NldHVwICgpOworICA7CisgIHJldHVybiAw
OworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFj
X2N2X2xpYl9haW9faW9fc2V0dXA9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9haW9faW9fc2V0dXA9
bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAg
ICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGli
X3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfY3ZfbGliX2Fpb19pb19zZXR1cCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xp
Yl9haW9faW9fc2V0dXAiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfYWlvX2lvX3NldHVw
IiA9IHh5ZXM7IHRoZW4gOgorICBzeXN0ZW1fYWlvPSJ5IgorZWxzZQorICBzeXN0ZW1fYWlvPSJu
IgorZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciBNRDUgaW4gLWxjcnlwdG8iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE1E
NSBpbiAtbGNyeXB0by4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfY3J5cHRvX01ENSs6fSBm
YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sY3J5cHRvICAkTElCUyIKK2NhdCBjb25m
ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g
ZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5
cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3
b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNl
bmRpZgorY2hhciBNRDUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBNRDUgKCk7CisgIDsK
KyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0
aGVuIDoKKyAgYWNfY3ZfbGliX2NyeXB0b19NRDU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9jcnlw
dG9fTUQ1PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2No
ZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9jcnlwdG9fTUQ1IiA+JjUKKyRhc19lY2hvICIkYWNf
Y3ZfbGliX2NyeXB0b19NRDUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfY3J5cHRvX01E
NSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBI
QVZFX0xJQkNSWVBUTyAxCitfQUNFT0YKKworICBMSUJTPSItbGNyeXB0byAkTElCUyIKKworZWxz
ZQorICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZpbmQgbGliY3J5cHRvIiAiJExJTkVOTyIg
NQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgZXh0MmZzX29wZW4yIGluIC1sZXh0MmZzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5n
IGZvciBleHQyZnNfb3BlbjIgaW4gLWxleHQyZnMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGli
X2V4dDJmc19leHQyZnNfb3BlbjIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSIt
bGV4dDJmcyAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJu
YWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQg
bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVu
IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgZXh0MmZzX29wZW4yICgpOworaW50
CittYWluICgpCit7CityZXR1cm4gZXh0MmZzX29wZW4yICgpOworICA7CisgIHJldHVybiAwOwor
fQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2
X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yPXllcworZWxzZQorICBhY19jdl9saWJfZXh0MmZzX2V4
dDJmc19vcGVuMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRh
Y19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZXh0MmZzX2V4dDJmc19vcGVuMiIgPiY1Cisk
YXNfZWNobyAiJGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yIiA+JjY7IH0KK2lmIHRlc3Qg
IngkYWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIiID0geHllczsgdGhlbiA6CisgIGxpYmV4
dDJmcz0ieSIKK2Vsc2UKKyAgbGliZXh0MmZzPSJuIgorZmkKKworCit7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY3J5X21kX2hhc2hfYnVmZmVy
IGluIC1sZ2NyeXB0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY3J5X21kX2hhc2hf
YnVmZmVyIGluIC1sZ2NyeXB0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9nY3J5cHRfZ2Ny
eV9tZF9oYXNoX2J1ZmZlcis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZ2Ny
eXB0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBw
cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdo
dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRz
IGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBnY3J5X21kX2hhc2hfYnVmZmVyICgpOwor
aW50CittYWluICgpCit7CityZXR1cm4gZ2NyeV9tZF9oYXNoX2J1ZmZlciAoKTsKKyAgOworICBy
ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgorICBhY19jdl9saWJfZ2NyeXB0X2djcnlfbWRfaGFzaF9idWZmZXI9eWVzCitlbHNlCisgIGFj
X2N2X2xpYl9nY3J5cHRfZ2NyeV9tZF9oYXNoX2J1ZmZlcj1ubworZmkKK3JtIC1mIGNvcmUgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj
b25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZ2Ny
eXB0X2djcnlfbWRfaGFzaF9idWZmZXIiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfZ2NyeXB0
X2djcnlfbWRfaGFzaF9idWZmZXIiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfZ2NyeXB0
X2djcnlfbWRfaGFzaF9idWZmZXIiID0geHllczsgdGhlbiA6CisgIGxpYmdjcnlwdD0ieSIKK2Vs
c2UKKyAgbGliZ2NyeXB0PSJuIgorZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiAtbHB0aHJlYWQiID4m
NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZC4u
LiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZSs6fSBmYWxz
ZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNr
X2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scHRocmVhZCAgJExJQlMiCitjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov
CisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy
cm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBl
IG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291
bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5k
aWYKK2NoYXIgcHRocmVhZF9jcmVhdGUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBwdGhy
ZWFkX2NyZWF0ZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190
cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2Ny
ZWF0ZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGU9bm8KK2Zp
CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25m
dGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVf
TElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGUiID4mNQorJGFzX2VjaG8gIiRhY19j
dl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xp
Yl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlIiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisgIGFzX2Zu
X2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBsaWJwdGhyZWFkIiAiJExJTkVOTyIgNQorZmkKKwor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xv
Y2tfZ2V0dGltZSBpbiAtbHJ0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBjbG9ja19n
ZXR0aW1lIGluIC1scnQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRp
bWUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQor
ICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQg
YW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu
IHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw
ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIK
KyNlbmRpZgorY2hhciBjbG9ja19nZXR0aW1lICgpOworaW50CittYWluICgpCit7CityZXR1cm4g
Y2xvY2tfZ2V0dGltZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5f
Y190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGlt
ZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWU9bm8KK2ZpCitybSAtZiBj
b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19l
eGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkK
K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf
bGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcnRfY2xvY2tf
Z2V0dGltZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA9
IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVf
TElCUlQgMQorX0FDRU9GCisKKyAgTElCUz0iLWxydCAkTElCUyIKKworZmkKKworeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdXVpZF9jbGVhciBp
biAtbHV1aWQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHV1aWRfY2xlYXIgaW4gLWx1
dWlkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIrOn0gZmFsc2U7
IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19s
aWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHV1aWQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisv
KiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4K
KyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh
IEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0
aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitj
aGFyIHV1aWRfY2xlYXIgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiB1dWlkX2NsZWFyICgp
OworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElO
RU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXI9eWVzCitlbHNlCisgIGFj
X2N2X2xpYl91dWlkX3V1aWRfY2xlYXI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj
b25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFj
X2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3V1aWRfdXVpZF9jbGVh
ciIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIiID4mNjsgfQoraWYg
dGVzdCAieCRhY19jdl9saWJfdXVpZF91dWlkX2NsZWFyIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCVVVJRCAxCitfQUNFT0YKKwor
ICBMSUJTPSItbHV1aWQgJExJQlMiCisKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5v
dCBmaW5kIGxpYnV1aWQiICIkTElORU5PIiA1CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB5YWpsX2FsbG9jIGluIC1seWFqbCIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeWFqbF9hbGxvYyBpbiAtbHlhamwuLi4gIiA+JjY7
IH0KK2lmICR7YWNfY3ZfbGliX3lhamxfeWFqbF9hbGxvYys6fSBmYWxzZTsgdGhlbiA6CisgICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9
JExJQlMKK0xJQlM9Ii1seWFqbCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFu
eSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIg
YmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWls
dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAq
LworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgeWFqbF9hbGxv
YyAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHlhamxfYWxsb2MgKCk7CisgIDsKKyAgcmV0
dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoK
KyAgYWNfY3ZfbGliX3lhamxfeWFqbF9hbGxvYz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3lhamxf
eWFqbF9hbGxvYz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRh
Y19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfeWFqbF95YWpsX2FsbG9jIiA+JjUKKyRhc19l
Y2hvICIkYWNfY3ZfbGliX3lhamxfeWFqbF9hbGxvYyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2
X2xpYl95YWpsX3lhamxfYWxsb2MiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJZQUpMIDEKK19BQ0VPRgorCisgIExJQlM9Ii1seWFq
bCAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZpbmQgeWFqbCIg
IiRMSU5FTk8iIDUKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgZm9yIGRlZmxhdGVDb3B5IGluIC1seiIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyBmb3IgZGVmbGF0ZUNvcHkgaW4gLWx6Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl96
X2RlZmxhdGVDb3B5Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWx6ICAkTElC
UyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUg
dG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0
aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50
IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIKKyNlbmRpZgorY2hhciBkZWZsYXRlQ29weSAoKTsKK2ludAorbWFpbiAoKQorewor
cmV0dXJuIGRlZmxhdGVDb3B5ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBh
Y19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl96X2RlZmxhdGVD
b3B5PXllcworZWxzZQorICBhY19jdl9saWJfel9kZWZsYXRlQ29weT1ubworZmkKK3JtIC1mIGNv
cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4
ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9s
aWJfel9kZWZsYXRlQ29weSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5
IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3pfZGVmbGF0ZUNvcHkiID0geHllczsgdGhl
biA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJaIDEKK19B
Q0VPRgorCisgIExJQlM9Ii1seiAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiQ291
bGQgbm90IGZpbmQgemxpYiIgIiRMSU5FTk8iIDUKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxpYmljb252X29wZW4gaW4gLWxpY29u
diIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbGliaWNvbnZfb3BlbiBpbiAtbGljb252
Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9pY29udl9saWJpY29udl9vcGVuKzp9IGZhbHNl
OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tf
bGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxpY29udiAgJExJQlMiCitjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisK
Ky8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y
LgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9m
IGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg
c3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYK
K2NoYXIgbGliaWNvbnZfb3BlbiAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGxpYmljb252
X29wZW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xp
bmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2ljb252X2xpYmljb252X29wZW49eWVz
CitlbHNlCisgIGFjX2N2X2xpYl9pY29udl9saWJpY29udl9vcGVuPW5vCitmaQorcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhl
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xp
Yl9pY29udl9saWJpY29udl9vcGVuIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2ljb252X2xp
Ymljb252X29wZW4iID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfaWNvbnZfbGliaWNvbnZf
b3BlbiIgPSB4eWVzOyB0aGVuIDoKKyAgbGliaWNvbnY9InkiCitlbHNlCisgIGxpYmljb252PSJu
IgorZmkKKworCisKKyMgQXV0b3NjYW4gc3R1ZmYgKGV4Y2VwdCBmb3IgeWFqbC95YWpsX3ZlcnNp
b24uaCBjaGVjaykKKyMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCithY19mbl9jX2NoZWNrX3R5
cGUgIiRMSU5FTk8iICJzaXplX3QiICJhY19jdl90eXBlX3NpemVfdCIgIiRhY19pbmNsdWRlc19k
ZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl90eXBlX3NpemVfdCIgPSB4eWVzOyB0aGVuIDoKKwor
ZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIHNpemVfdCB1bnNpZ25l
ZCBpbnQKK19BQ0VPRgorCitmaQorCisjIFRoZSBVbHRyaXggNC4yIG1pcHMgYnVpbHRpbiBhbGxv
Y2EgZGVjbGFyZWQgYnkgYWxsb2NhLmggb25seSB3b3JrcworIyBmb3IgY29uc3RhbnQgYXJndW1l
bnRzLiAgVXNlbGVzcyEKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHdvcmtpbmcgYWxsb2NhLmguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfd29ya2luZ19hbGxv
Y2FfaCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhbGxvY2EuaD4KK2ludAorbWFpbiAoKQoreworY2hh
ciAqcCA9IChjaGFyICopIGFsbG9jYSAoMiAqIHNpemVvZiAoaW50KSk7CisJCQkgIGlmIChwKSBy
ZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGlu
ayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl93b3JraW5nX2FsbG9jYV9oPXllcworZWxzZQor
ICBhY19jdl93b3JraW5nX2FsbG9jYV9oPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg
Y29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGFjX2N2X3dvcmtpbmdfYWxsb2NhX2giID4mNQorJGFzX2VjaG8gIiRhY19jdl93b3JraW5n
X2FsbG9jYV9oIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3dvcmtpbmdfYWxsb2NhX2ggPSB5ZXM7
IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BTExPQ0FfSCAxIiA+PmNvbmZkZWZzLmgK
KworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgYWxsb2NhIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhbGxvY2EuLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MrOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19H
TlVDX18KKyMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCisjZWxzZQorIyBpZmRlZiBf
TVNDX1ZFUgorIyAgaW5jbHVkZSA8bWFsbG9jLmg+CisjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EK
KyMgZWxzZQorIyAgaWZkZWYgSEFWRV9BTExPQ0FfSAorIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgor
IyAgZWxzZQorIyAgIGlmZGVmIF9BSVgKKyAjcHJhZ21hIGFsbG9jYQorIyAgIGVsc2UKKyMgICAg
aWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVkIGJ5IEhQIGNjICtPbGliY2FsbHMgKi8KK3ZvaWQg
KmFsbG9jYSAoc2l6ZV90KTsKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5k
aWYKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK2NoYXIgKnAgPSAoY2hhciAqKSBhbGxvY2Eg
KDEpOworCQkJCSAgICBpZiAocCkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNF
T0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19h
bGxvY2Ffd29ya3M9eWVzCitlbHNlCisgIGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzPW5vCitmaQor
cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRl
c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA+JjUK
KyRhc19lY2hvICIkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MiID4mNjsgfQorCitpZiB0ZXN0ICRh
Y19jdl9mdW5jX2FsbG9jYV93b3JrcyA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBI
QVZFX0FMTE9DQSAxIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICAjIFRoZSBTVlIzIGxpYlBXIGFu
ZCBTVlI0IGxpYnVjYiBib3RoIGNvbnRhaW4gaW5jb21wYXRpYmxlIGZ1bmN0aW9ucworIyB0aGF0
IGNhdXNlIHRyb3VibGUuICBTb21lIHZlcnNpb25zIGRvIG5vdCBldmVuIGNvbnRhaW4gYWxsb2Nh
IG9yCisjIGNvbnRhaW4gYSBidWdneSB2ZXJzaW9uLiAgSWYgeW91IHN0aWxsIHdhbnQgdG8gdXNl
IHRoZWlyIGFsbG9jYSwKKyMgdXNlIGFyIHRvIGV4dHJhY3QgYWxsb2NhLm8gZnJvbSB0aGVtIGlu
c3RlYWQgb2YgY29tcGlsaW5nIGFsbG9jYS5jLgorCitBTExPQ0E9XCR7TElCT0JKRElSfWFsbG9j
YS4kYWNfb2JqZXh0CisKKyRhc19lY2hvICIjZGVmaW5lIENfQUxMT0NBIDEiID4+Y29uZmRlZnMu
aAorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
d2hldGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKKyRhc19lY2hvX24gImNo
ZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcy4uLiAiID4mNjsgfQor
aWYgJHthY19jdl9vc19jcmF5Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmIGRlZmluZWQgQ1JBWSAmJiAhIGRlZmlu
ZWQgQ1JBWTIKK3dlYmVjcmF5CisjZWxzZQord2Vub3RiZWNyYXkKKyNlbmRpZgorCitfQUNFT0YK
K2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJ3
ZWJlY3JheSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgYWNfY3Zfb3NfY3JheT15ZXMKK2Vs
c2UKKyAgYWNfY3Zfb3NfY3JheT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9vc19jcmF5
IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfb3NfY3JheSIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9v
c19jcmF5ID0geWVzOyB0aGVuCisgIGZvciBhY19mdW5jIGluIF9nZXRiNjcgR0VUQjY3IGdldGI2
NzsgZG8KKyAgICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRh
c190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2Fj
X3ZhciIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoK
KworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBDUkFZX1NUQUNLU0VHX0VORCAk
YWNfZnVuYworX0FDRU9GCisKKyAgICBicmVhaworZmkKKworICBkb25lCitmaQorCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlv
biBmb3IgQyBhbGxvY2EiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9u
IGZvciBDIGFsbG9jYS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbis6
fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlm
IHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfY19zdGFja19k
aXJlY3Rpb249MAorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50
CitmaW5kX3N0YWNrX2RpcmVjdGlvbiAoKQoreworICBzdGF0aWMgY2hhciAqYWRkciA9IDA7Cisg
IGF1dG8gY2hhciBkdW1teTsKKyAgaWYgKGFkZHIgPT0gMCkKKyAgICB7CisgICAgICBhZGRyID0g
JmR1bW15OworICAgICAgcmV0dXJuIGZpbmRfc3RhY2tfZGlyZWN0aW9uICgpOworICAgIH0KKyAg
ZWxzZQorICAgIHJldHVybiAoJmR1bW15ID4gYWRkcikgPyAxIDogLTE7Cit9CisKK2ludAorbWFp
biAoKQoreworICByZXR1cm4gZmluZF9zdGFja19kaXJlY3Rpb24gKCkgPCAwOworfQorX0FDRU9G
CitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY19zdGFja19k
aXJlY3Rpb249MQorZWxzZQorICBhY19jdl9jX3N0YWNrX2RpcmVjdGlvbj0tMQorZmkKK3JtIC1m
IGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNf
ZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRh
Y19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zf
Y19zdGFja19kaXJlY3Rpb24iID4mNjsgfQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2Rl
ZmluZSBTVEFDS19ESVJFQ1RJT04gJGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uCitfQUNFT0YKKwor
CitmaQorCitmb3IgYWNfaGVhZGVyIGluICBcCisgICAgICAgICAgICAgICAgYXJwYS9pbmV0Lmgg
ZmNudGwuaCBpbnR0eXBlcy5oIGxpYmludGwuaCBsaW1pdHMuaCBtYWxsb2MuaCBcCisgICAgICAg
ICAgICAgICAgbmV0ZGIuaCBuZXRpbmV0L2luLmggc3RkZGVmLmggc3RkaW50Lmggc3RkbGliLmgg
c3RyaW5nLmggXAorICAgICAgICAgICAgICAgIHN0cmluZ3MuaCBzeXMvZmlsZS5oIHN5cy9pb2N0
bC5oIHN5cy9tb3VudC5oIHN5cy9wYXJhbS5oIFwKKyAgICAgICAgICAgICAgICBzeXMvc29ja2V0
Lmggc3lzL3N0YXR2ZnMuaCBzeXMvdGltZS5oIHN5c2xvZy5oIHRlcm1pb3MuaCBcCisgICAgICAg
ICAgICAgICAgdW5pc3RkLmggeWFqbC95YWpsX3ZlcnNpb24uaCBcCisKK2RvIDoKKyAgYXNfYWNf
SGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAor
YWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNf
YWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFz
X2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQor
X0FDRU9GCisKK2ZpCisKK2RvbmUKKworCisjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVy
ZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdGRib29sLmggdGhhdCBjb25mb3JtcyB0
byBDOTkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0ZGJvb2wuaCB0aGF0IGNvbmZv
cm1zIHRvIEM5OS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9oZWFkZXJfc3RkYm9vbF9oKzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmgu
ICAqLworCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2lmbmRlZiBib29sCisgImVycm9yOiBib29s
IGlzIG5vdCBkZWZpbmVkIgorI2VuZGlmCisjaWZuZGVmIGZhbHNlCisgImVycm9yOiBmYWxzZSBp
cyBub3QgZGVmaW5lZCIKKyNlbmRpZgorI2lmIGZhbHNlCisgImVycm9yOiBmYWxzZSBpcyBub3Qg
MCIKKyNlbmRpZgorI2lmbmRlZiB0cnVlCisgImVycm9yOiB0cnVlIGlzIG5vdCBkZWZpbmVkIgor
I2VuZGlmCisjaWYgdHJ1ZSAhPSAxCisgImVycm9yOiB0cnVlIGlzIG5vdCAxIgorI2VuZGlmCisj
aWZuZGVmIF9fYm9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkCisgImVycm9yOiBfX2Jvb2xfdHJ1
ZV9mYWxzZV9hcmVfZGVmaW5lZCBpcyBub3QgZGVmaW5lZCIKKyNlbmRpZgorCisJc3RydWN0IHMg
eyBfQm9vbCBzOiAxOyBfQm9vbCB0OyB9IHM7CisKKwljaGFyIGFbdHJ1ZSA9PSAxID8gMSA6IC0x
XTsKKwljaGFyIGJbZmFsc2UgPT0gMCA/IDEgOiAtMV07CisJY2hhciBjW19fYm9vbF90cnVlX2Zh
bHNlX2FyZV9kZWZpbmVkID09IDEgPyAxIDogLTFdOworCWNoYXIgZFsoYm9vbCkgMC41ID09IHRy
dWUgPyAxIDogLTFdOworCS8qIFNlZSBib2R5IG9mIG1haW4gcHJvZ3JhbSBmb3IgJ2UnLiAgKi8K
KwljaGFyIGZbKF9Cb29sKSAwLjAgPT0gZmFsc2UgPyAxIDogLTFdOworCWNoYXIgZ1t0cnVlXTsK
KwljaGFyIGhbc2l6ZW9mIChfQm9vbCldOworCWNoYXIgaVtzaXplb2Ygcy50XTsKKwllbnVtIHsg
aiA9IGZhbHNlLCBrID0gdHJ1ZSwgbCA9IGZhbHNlICogdHJ1ZSwgbSA9IHRydWUgKiAyNTYgfTsK
KwkvKiBUaGUgZm9sbG93aW5nIGZhaWxzIGZvcgorCSAgIEhQIGFDKysvQU5TSSBDIEIzOTEwQiBB
LjA1LjU1IFtEZWMgMDQgMjAwM10uICovCisJX0Jvb2wgblttXTsKKwljaGFyIG9bc2l6ZW9mIG4g
PT0gbSAqIHNpemVvZiBuWzBdID8gMSA6IC0xXTsKKwljaGFyIHBbLTEgLSAoX0Jvb2wpIDAgPCAw
ICYmIC0xIC0gKGJvb2wpIDAgPCAwID8gMSA6IC0xXTsKKwkvKiBDYXRjaCBhIGJ1ZyBpbiBhbiBI
UC1VWCBDIGNvbXBpbGVyLiAgU2VlCisJICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRj
aGVzLzIwMDMtMTIvbXNnMDIzMDMuaHRtbAorCSAgIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hp
dmUvaHRtbC9idWctY29yZXV0aWxzLzIwMDUtMTEvbXNnMDAxNjEuaHRtbAorCSAqLworCV9Cb29s
IHEgPSB0cnVlOworCV9Cb29sICpwcSA9ICZxOworCitpbnQKK21haW4gKCkKK3sKKworCWJvb2wg
ZSA9ICZzOworCSpwcSB8PSBxOworCSpwcSB8PSAhIHE7CisJLyogUmVmZXIgdG8gZXZlcnkgZGVj
bGFyZWQgdmFsdWUsIHRvIGF2b2lkIGNvbXBpbGVyIG9wdGltaXphdGlvbnMuICAqLworCXJldHVy
biAoIWEgKyAhYiArICFjICsgIWQgKyAhZSArICFmICsgIWcgKyAhaCArICFpICsgISFqICsgIWsg
KyAhIWwKKwkJKyAhbSArICFuICsgIW8gKyAhcCArICFxICsgIXBxKTsKKworICA7CisgIHJldHVy
biAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6
CisgIGFjX2N2X2hlYWRlcl9zdGRib29sX2g9eWVzCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRi
b29sX2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRib29sX2giID4mNQorJGFzX2VjaG8gIiRh
Y19jdl9oZWFkZXJfc3RkYm9vbF9oIiA+JjY7IH0KK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVO
TyIgIl9Cb29sIiAiYWNfY3ZfdHlwZV9fQm9vbCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYg
dGVzdCAieCRhY19jdl90eXBlX19Cb29sIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVm
cy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfX0JPT0wgMQorX0FDRU9GCisKKworZmkKKworaWYg
dGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2Rl
ZmluZSBIQVZFX1NUREJPT0xfSCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5
cGVzLmgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVpZF90IGluIHN5cy90eXBlcy5o
Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X3R5cGVfdWlkX3QrOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4
dCIpIDI+JjUgfAorICAkRUdSRVAgInVpZF90IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBh
Y19jdl90eXBlX3VpZF90PXllcworZWxzZQorICBhY19jdl90eXBlX3VpZF90PW5vCitmaQorcm0g
LWYgY29uZnRlc3QqCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X3R5cGVfdWlkX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl90eXBl
X3VpZF90IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3R5cGVfdWlkX3QgPSBubzsgdGhlbgorCisk
YXNfZWNobyAiI2RlZmluZSB1aWRfdCBpbnQiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIj
ZGVmaW5lIGdpZF90IGludCIgPj5jb25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CiskYXNfZWNo
b19uICJjaGVja2luZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfaW5saW5l
Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg
YWNfY3ZfY19pbmxpbmU9bm8KK2ZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGlu
ZTsgZG8KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog
ZW5kIGNvbmZkZWZzLmguICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cwordHlwZWRlZiBpbnQgZm9v
X3Q7CitzdGF0aWMgJGFjX2t3IGZvb190IHN0YXRpY19mb28gKCkge3JldHVybiAwOyB9CiskYWNf
a3cgZm9vX3QgZm9vICgpIHtyZXR1cm4gMDsgfQorI2VuZGlmCisKK19BQ0VPRgoraWYgYWNfZm5f
Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX2lubGluZT0kYWNfa3cK
K2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0
LiRhY19leHQKKyAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyAmJiBicmVhaworZG9uZQor
CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh
Y19jdl9jX2lubGluZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfaW5saW5lIiA+JjY7IH0KKwor
Y2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KKyAgaW5saW5lIHwgeWVzKSA7OworICAqKQorICAgIGNh
c2UgJGFjX2N2X2NfaW5saW5lIGluCisgICAgICBubykgYWNfdmFsPTs7CisgICAgICAqKSBhY192
YWw9JGFjX2N2X2NfaW5saW5lOzsKKyAgICBlc2FjCisgICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgorI2lmbmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBpbmxpbmUgJGFjX3ZhbAorI2VuZGlm
CitfQUNFT0YKKyAgICA7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAi
MTYiICJhY19jdl9jX2ludDE2X3QiCitjYXNlICRhY19jdl9jX2ludDE2X3QgaW4gIygKKyAgbm98
eWVzKSA7OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGlu
dDE2X3QgJGFjX2N2X2NfaW50MTZfdAorX0FDRU9GCis7OworZXNhYworCithY19mbl9jX2ZpbmRf
aW50WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX2ludDMyX3QiCitjYXNlICRhY19jdl9jX2lu
dDMyX3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCisjZGVmaW5lIGludDMyX3QgJGFjX2N2X2NfaW50MzJfdAorX0FDRU9GCis7OworZXNh
YworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3Qi
CitjYXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCitj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRf
dAorX0FDRU9GCis7OworZXNhYworCithY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiOCIg
ImFjX2N2X2NfaW50OF90IgorY2FzZSAkYWNfY3ZfY19pbnQ4X3QgaW4gIygKKyAgbm98eWVzKSA7
OyAjKAorICAqKQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGludDhfdCAk
YWNfY3ZfY19pbnQ4X3QKK19BQ0VPRgorOzsKK2VzYWMKKworYWNfZm5fY19jaGVja190eXBlICIk
TElORU5PIiAibW9kZV90IiAiYWNfY3ZfdHlwZV9tb2RlX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVs
dCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9tb2RlX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UK
KworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBtb2RlX3QgaW50CitfQUNFT0YK
KworZmkKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAib2ZmX3QiICJhY19jdl90eXBl
X29mZl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfb2Zm
X3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor
I2RlZmluZSBvZmZfdCBsb25nIGludAorX0FDRU9GCisKK2ZpCisKK2FjX2ZuX2NfY2hlY2tfdHlw
ZSAiJExJTkVOTyIgInBpZF90IiAiYWNfY3ZfdHlwZV9waWRfdCIgIiRhY19pbmNsdWRlc19kZWZh
dWx0IgoraWYgdGVzdCAieCRhY19jdl90eXBlX3BpZF90IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNl
CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgcGlkX3QgaW50CitfQUNFT0YK
KworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBm
b3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9jX3Jlc3Ry
aWN0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgYWNfY3ZfY19yZXN0cmljdD1ubworICAgIyBUaGUgb3JkZXIgaGVyZSBjYXRlcnMgdG8gdGhl
IGZhY3QgdGhhdCBDKysgZG9lcyBub3QgcmVxdWlyZSByZXN0cmljdC4KKyAgIGZvciBhY19rdyBp
biBfX3Jlc3RyaWN0IF9fcmVzdHJpY3RfXyBfUmVzdHJpY3QgcmVzdHJpY3Q7IGRvCisgICAgIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KK3R5cGVkZWYgaW50ICogaW50X3B0cjsKKwlpbnQgZm9vIChpbnRfcHRyICRhY19r
dyBpcCkgeworCXJldHVybiBpcFswXTsKKyAgICAgICB9CitpbnQKK21haW4gKCkKK3sKK2ludCBz
WzFdOworCWludCAqICRhY19rdyB0ID0gczsKKwl0WzBdID0gMDsKKwlyZXR1cm4gZm9vKHQpCisg
IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F
Tk8iOyB0aGVuIDoKKyAgYWNfY3ZfY19yZXN0cmljdD0kYWNfa3cKK2ZpCitybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgdGVz
dCAiJGFjX2N2X2NfcmVzdHJpY3QiICE9IG5vICYmIGJyZWFrCisgICBkb25lCisKK2ZpCit7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfcmVz
dHJpY3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX3Jlc3RyaWN0IiA+JjY7IH0KKworIGNhc2Ug
JGFjX2N2X2NfcmVzdHJpY3QgaW4KKyAgIHJlc3RyaWN0KSA7OworICAgbm8pICRhc19lY2hvICIj
ZGVmaW5lIHJlc3RyaWN0IC8qKi8iID4+Y29uZmRlZnMuaAorIDs7CisgICAqKSAgY2F0ID4+Y29u
ZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSByZXN0cmljdCAkYWNfY3ZfY19yZXN0cmljdAorX0FD
RU9GCisgOzsKKyBlc2FjCisKK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNpemVfdCIg
ImFjX2N2X3R5cGVfc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFj
X2N2X3R5cGVfc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZz
LmggPDxfQUNFT0YKKyNkZWZpbmUgc2l6ZV90IHVuc2lnbmVkIGludAorX0FDRU9GCisKK2ZpCisK
K2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNzaXplX3QiICJhY19jdl90eXBlX3NzaXpl
X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90
IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNk
ZWZpbmUgc3NpemVfdCBpbnQKK19BQ0VPRgorCitmaQorCithY19mbl9jX2NoZWNrX21lbWJlciAi
JExJTkVOTyIgInN0cnVjdCBzdGF0IiAic3RfYmxrc2l6ZSIgImFjX2N2X21lbWJlcl9zdHJ1Y3Rf
c3RhdF9zdF9ibGtzaXplIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2
X21lbWJlcl9zdHJ1Y3Rfc3RhdF9zdF9ibGtzaXplIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5j
b25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRSAx
CitfQUNFT0YKKworCitmaQorCithY19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0cnVj
dCBzdGF0IiAic3RfYmxvY2tzIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X2Jsb2NrcyIg
IiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3N0
YXRfc3RfYmxvY2tzIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CisjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxPQ0tTIDEKK19BQ0VPRgorCisKKyRhc19l
Y2hvICIjZGVmaW5lIEhBVkVfU1RfQkxPQ0tTIDEiID4+Y29uZmRlZnMuaAorCitlbHNlCisgIGNh
c2UgIiAkTElCT0JKUyAiIGluCisgICoiIGZpbGVibG9ja3MuJGFjX29iamV4dCAiKiApIDs7Cisg
ICopIExJQk9CSlM9IiRMSUJPQkpTIGZpbGVibG9ja3MuJGFjX29iamV4dCIKKyA7OworZXNhYwor
CitmaQorCisKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHN0YXQiICJz
dF9yZGV2IiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X3JkZXYiICIkYWNfaW5jbHVkZXNf
ZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X3JkZXYiID0g
eHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9T
VFJVQ1RfU1RBVF9TVF9SREVWIDEKK19BQ0VPRgorCisKK2ZpCisKK2FjX2ZuX2NfZmluZF91aW50
WF90ICIkTElORU5PIiAiMTYiICJhY19jdl9jX3VpbnQxNl90IgorY2FzZSAkYWNfY3ZfY191aW50
MTZfdCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisgICopCisKKworY2F0ID4+Y29uZmRlZnMuaCA8
PF9BQ0VPRgorI2RlZmluZSB1aW50MTZfdCAkYWNfY3ZfY191aW50MTZfdAorX0FDRU9GCis7Owor
ICBlc2FjCisKK2FjX2ZuX2NfZmluZF91aW50WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX3Vp
bnQzMl90IgorY2FzZSAkYWNfY3ZfY191aW50MzJfdCBpbiAjKAorICBub3x5ZXMpIDs7ICMoCisg
ICopCisKKyRhc19lY2hvICIjZGVmaW5lIF9VSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKKworCitj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIHVpbnQzMl90ICRhY19jdl9jX3VpbnQz
Ml90CitfQUNFT0YKKzs7CisgIGVzYWMKKworYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8i
ICI2NCIgImFjX2N2X2NfdWludDY0X3QiCitjYXNlICRhY19jdl9jX3VpbnQ2NF90IGluICMoCisg
IG5vfHllcykgOzsgIygKKyAgKikKKworJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQ2NF9UIDEiID4+
Y29uZmRlZnMuaAorCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgdWludDY0
X3QgJGFjX2N2X2NfdWludDY0X3QKK19BQ0VPRgorOzsKKyAgZXNhYworCithY19mbl9jX2ZpbmRf
dWludFhfdCAiJExJTkVOTyIgIjgiICJhY19jdl9jX3VpbnQ4X3QiCitjYXNlICRhY19jdl9jX3Vp
bnQ4X3QgaW4gIygKKyAgbm98eWVzKSA7OyAjKAorICAqKQorCiskYXNfZWNobyAiI2RlZmluZSBf
VUlOVDhfVCAxIiA+PmNvbmZkZWZzLmgKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisj
ZGVmaW5lIHVpbnQ4X3QgJGFjX2N2X2NfdWludDhfdAorX0FDRU9GCis7OworICBlc2FjCisKK2Fj
X2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInB0cmRpZmZfdCIgImFjX2N2X3R5cGVfcHRyZGlm
Zl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcHRyZGlm
Zl90IiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5l
IEhBVkVfUFRSRElGRl9UIDEKK19BQ0VPRgorCisKK2ZpCisKKworIyBDaGVja3MgZm9yIGxpYnJh
cnkgZnVuY3Rpb25zLgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgZXJyb3JfYXRfbGluZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig
ZXJyb3JfYXRfbGluZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfZXJyb3JfYXRfbGluZSs6
fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KKyNpbmNsdWRlIDxlcnJvci5oPgoraW50CittYWluICgpCit7CitlcnJvcl9hdF9s
aW5lICgwLCAwLCAiIiwgMCwgImFuIGVycm9yIG9jY3VycmVkIik7CisgIDsKKyAgcmV0dXJuIDA7
Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNf
Y3ZfbGliX2Vycm9yX2F0X2xpbmU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9lcnJvcl9hdF9saW5l
PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisg
ICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9lcnJvcl9hdF9s
aW5lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUiID4mNjsgfQoraWYg
dGVzdCAkYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUgPSBubzsgdGhlbgorICBjYXNlICIgJExJQk9C
SlMgIiBpbgorICAqIiBlcnJvci4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJ
Qk9CSlMgZXJyb3IuJGFjX29iamV4dCIKKyA7OworZXNhYworCitmaQorCitmb3IgYWNfaGVhZGVy
IGluIHZmb3JrLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVO
TyIgInZmb3JrLmgiICJhY19jdl9oZWFkZXJfdmZvcmtfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0
IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfdmZvcmtfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0
ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1ZGT1JLX0ggMQorX0FDRU9GCisK
K2ZpCisKK2RvbmUKKworZm9yIGFjX2Z1bmMgaW4gZm9yayB2Zm9yaworZG8gOgorICBhc19hY192
YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKK2FjX2ZuX2Nf
Y2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKK2lmIGV2YWwgdGVz
dCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMu
aCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2Nw
cGAgMQorX0FDRU9GCisKK2ZpCitkb25lCisKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3JrIiA9
IHh5ZXM7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3Igd29ya2luZyBmb3JrIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3
b3JraW5nIGZvcmsuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY19mb3JrX3dvcmtzKzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX2Zvcmtfd29y
a3M9Y3Jvc3MKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAor
bWFpbiAoKQoreworCisJICAvKiBCeSBSdWVkaWdlciBLdWhsbWFubi4gKi8KKwkgIHJldHVybiBm
b3JrICgpIDwgMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3Ry
eV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPXllcworZWxz
ZQorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQor
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9m
dW5jX2Zvcmtfd29ya3MiID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID4m
NjsgfQorCitlbHNlCisgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz0kYWNfY3ZfZnVuY19mb3JrCitm
aQoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geGNyb3NzOyB0aGVuCisgIGNh
c2UgJGhvc3QgaW4KKyAgICAqLSotYW1pZ2FvcyogfCAqLSotbXNkb3NkamdwcCopCisgICAgICAj
IE92ZXJyaWRlLCBhcyB0aGVzZSBzeXN0ZW1zIGhhdmUgb25seSBhIGR1bW15IGZvcmsoKSBzdHVi
CisgICAgICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8KKyAgICAgIDs7CisgICAgKikKKyAgICAg
IGFjX2N2X2Z1bmNfZm9ya193b3Jrcz15ZXMKKyAgICAgIDs7CisgIGVzYWMKKyAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1
bmNfZm9ya193b3JrcyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4mNQor
JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogcmVzdWx0ICRhY19jdl9mdW5jX2Zvcmtfd29ya3Mg
Z3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjI7fQorZmkKK2FjX2N2X2Z1
bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY192
Zm9yayIgPSB4eWVzOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgdmZvcmsiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yIHdvcmtpbmcgdmZvcmsuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY192Zm9ya193
b3Jrcys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl
CisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfZnVu
Y192Zm9ya193b3Jrcz1jcm9zcworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisvKiBUaGFua3MgdG8gUGF1
bCBFZ2dlcnQgZm9yIHRoaXMgdGVzdC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAorI2luY2x1
ZGUgPHN5cy93YWl0Lmg+CisjaWZkZWYgSEFWRV9WRk9SS19ICisjIGluY2x1ZGUgPHZmb3JrLmg+
CisjZW5kaWYKKy8qIE9uIHNvbWUgc3BhcmMgc3lzdGVtcywgY2hhbmdlcyBieSB0aGUgY2hpbGQg
dG8gbG9jYWwgYW5kIGluY29taW5nCisgICBhcmd1bWVudCByZWdpc3RlcnMgYXJlIHByb3BhZ2F0
ZWQgYmFjayB0byB0aGUgcGFyZW50LiAgVGhlIGNvbXBpbGVyCisgICBpcyB0b2xkIGFib3V0IHRo
aXMgd2l0aCAjaW5jbHVkZSA8dmZvcmsuaD4sIGJ1dCBzb21lIGNvbXBpbGVycworICAgKGUuZy4g
Z2NjIC1PKSBkb24ndCBncm9rIDx2Zm9yay5oPi4gIFRlc3QgZm9yIHRoaXMgYnkgdXNpbmcgYQor
ICAgc3RhdGljIHZhcmlhYmxlIHdob3NlIGFkZHJlc3MgaXMgcHV0IGludG8gYSByZWdpc3RlciB0
aGF0IGlzCisgICBjbG9iYmVyZWQgYnkgdGhlIHZmb3JrLiAgKi8KK3N0YXRpYyB2b2lkCisjaWZk
ZWYgX19jcGx1c3BsdXMKK3NwYXJjX2FkZHJlc3NfdGVzdCAoaW50IGFyZykKKyMgZWxzZQorc3Bh
cmNfYWRkcmVzc190ZXN0IChhcmcpIGludCBhcmc7CisjZW5kaWYKK3sKKyAgc3RhdGljIHBpZF90
IGNoaWxkOworICBpZiAoIWNoaWxkKSB7CisgICAgY2hpbGQgPSB2Zm9yayAoKTsKKyAgICBpZiAo
Y2hpbGQgPCAwKSB7CisgICAgICBwZXJyb3IgKCJ2Zm9yayIpOworICAgICAgX2V4aXQoMik7Cisg
ICAgfQorICAgIGlmICghY2hpbGQpIHsKKyAgICAgIGFyZyA9IGdldHBpZCgpOworICAgICAgd3Jp
dGUoLTEsICIiLCAwKTsKKyAgICAgIF9leGl0IChhcmcpOworICAgIH0KKyAgfQorfQorCitpbnQK
K21haW4gKCkKK3sKKyAgcGlkX3QgcGFyZW50ID0gZ2V0cGlkICgpOworICBwaWRfdCBjaGlsZDsK
KworICBzcGFyY19hZGRyZXNzX3Rlc3QgKDApOworCisgIGNoaWxkID0gdmZvcmsgKCk7CisKKyAg
aWYgKGNoaWxkID09IDApIHsKKyAgICAvKiBIZXJlIGlzIGFub3RoZXIgdGVzdCBmb3Igc3BhcmMg
dmZvcmsgcmVnaXN0ZXIgcHJvYmxlbXMuICBUaGlzCisgICAgICAgdGVzdCB1c2VzIGxvdHMgb2Yg
bG9jYWwgdmFyaWFibGVzLCBhdCBsZWFzdCBhcyBtYW55IGxvY2FsCisgICAgICAgdmFyaWFibGVz
IGFzIG1haW4gaGFzIGFsbG9jYXRlZCBzbyBmYXIgaW5jbHVkaW5nIGNvbXBpbGVyCisgICAgICAg
dGVtcG9yYXJpZXMuICA0IGxvY2FscyBhcmUgZW5vdWdoIGZvciBnY2MgMS40MC4zIG9uIGEgU29s
YXJpcworICAgICAgIDQuMS4zIHNwYXJjLCBidXQgd2UgdXNlIDggdG8gYmUgc2FmZS4gIEEgYnVn
Z3kgY29tcGlsZXIgc2hvdWxkCisgICAgICAgcmV1c2UgdGhlIHJlZ2lzdGVyIG9mIHBhcmVudCBm
b3Igb25lIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMsCisgICAgICAgc2luY2UgaXQgd2lsbCB0aGlu
ayB0aGF0IHBhcmVudCBjYW4ndCBwb3NzaWJseSBiZSB1c2VkIGFueSBtb3JlCisgICAgICAgaW4g
dGhpcyByb3V0aW5lLiAgQXNzaWduaW5nIHRvIHRoZSBsb2NhbCB2YXJpYWJsZSB3aWxsIHRodXMK
KyAgICAgICBtdW5nZSBwYXJlbnQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgKi8KKyAgICBwaWRf
dAorICAgICAgcCA9IGdldHBpZCgpLCBwMSA9IGdldHBpZCgpLCBwMiA9IGdldHBpZCgpLCBwMyA9
IGdldHBpZCgpLAorICAgICAgcDQgPSBnZXRwaWQoKSwgcDUgPSBnZXRwaWQoKSwgcDYgPSBnZXRw
aWQoKSwgcDcgPSBnZXRwaWQoKTsKKyAgICAvKiBDb252aW5jZSB0aGUgY29tcGlsZXIgdGhhdCBw
Li5wNyBhcmUgbGl2ZTsgb3RoZXJ3aXNlLCBpdCBtaWdodAorICAgICAgIHVzZSB0aGUgc2FtZSBo
YXJkd2FyZSByZWdpc3RlciBmb3IgYWxsIDggbG9jYWwgdmFyaWFibGVzLiAgKi8KKyAgICBpZiAo
cCAhPSBwMSB8fCBwICE9IHAyIHx8IHAgIT0gcDMgfHwgcCAhPSBwNAorCXx8IHAgIT0gcDUgfHwg
cCAhPSBwNiB8fCBwICE9IHA3KQorICAgICAgX2V4aXQoMSk7CisKKyAgICAvKiBPbiBzb21lIHN5
c3RlbXMgKGUuZy4gSVJJWCAzLjMpLCB2Zm9yayBkb2Vzbid0IHNlcGFyYXRlIHBhcmVudAorICAg
ICAgIGZyb20gY2hpbGQgZmlsZSBkZXNjcmlwdG9ycy4gIElmIHRoZSBjaGlsZCBjbG9zZXMgYSBk
ZXNjcmlwdG9yCisgICAgICAgYmVmb3JlIGl0IGV4ZWNzIG9yIGV4aXRzLCB0aGlzIG11bmdlcyB0
aGUgcGFyZW50J3MgZGVzY3JpcHRvcgorICAgICAgIGFzIHdlbGwuICBUZXN0IGZvciB0aGlzIGJ5
IGNsb3Npbmcgc3Rkb3V0IGluIHRoZSBjaGlsZC4gICovCisgICAgX2V4aXQoY2xvc2UoZmlsZW5v
KHN0ZG91dCkpICE9IDApOworICB9IGVsc2UgeworICAgIGludCBzdGF0dXM7CisgICAgc3RydWN0
IHN0YXQgc3Q7CisKKyAgICB3aGlsZSAod2FpdCgmc3RhdHVzKSAhPSBjaGlsZCkKKyAgICAgIDsK
KyAgICByZXR1cm4gKAorCSAvKiBXYXMgdGhlcmUgc29tZSBwcm9ibGVtIHdpdGggdmZvcmtpbmc/
ICAqLworCSBjaGlsZCA8IDAKKworCSAvKiBEaWQgdGhlIGNoaWxkIGZhaWw/ICAoVGhpcyBzaG91
bGRuJ3QgaGFwcGVuLikgICovCisJIHx8IHN0YXR1cworCisJIC8qIERpZCB0aGUgdmZvcmsvY29t
cGlsZXIgYnVnIG9jY3VyPyAgKi8KKwkgfHwgcGFyZW50ICE9IGdldHBpZCgpCisKKwkgLyogRGlk
IHRoZSBmaWxlIGRlc2NyaXB0b3IgYnVnIG9jY3VyPyAgKi8KKwkgfHwgZnN0YXQoZmlsZW5vKHN0
ZG91dCksICZzdCkgIT0gMAorCSApOworICB9Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1
biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPXllcworZWxzZQor
ICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5j
b25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVz
dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVu
Y192Zm9ya193b3JrcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MiID4m
NjsgfQorCitmaTsKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA9IHhjcm9zczsg
dGhlbgorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPSRhY19jdl9mdW5jX3Zmb3JrCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogcmVzdWx0ICRhY19j
dl9mdW5jX3Zmb3JrX3dvcmtzIGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIg
PiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfdmZvcmtf
d29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjI7fQorZmkKKwor
aWYgdGVzdCAieCRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzIiA9IHh5ZXM7IHRoZW4KKworJGFzX2Vj
aG8gIiNkZWZpbmUgSEFWRV9XT1JLSU5HX1ZGT1JLIDEiID4+Y29uZmRlZnMuaAorCitlbHNlCisK
KyRhc19lY2hvICIjZGVmaW5lIHZmb3JrIGZvcmsiID4+Y29uZmRlZnMuaAorCitmaQoraWYgdGVz
dCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2Rl
ZmluZSBIQVZFX1dPUktJTkdfRk9SSyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFRklMRV9T
T1VSQ0UgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CiskYXNfZWNob19uICJjaGVj
a2luZyBmb3IgX0xBUkdFRklMRV9TT1VSQ0UgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4u
LiAiID4mNjsgfQoraWYgJHthY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZSs6fSBmYWxzZTsgdGhl
biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHdoaWxlIDo7IGRvCisg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLyogZm9yIG9mZl90ICovCisgICAg
ICNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitpbnQgKCpmcCkgKEZJTEUgKiwg
b2ZmX3QsIGludCkgPSBmc2Vla287CisgICAgIHJldHVybiBmc2Vla28gKHN0ZGluLCAwLCAwKSAm
JiBmcCAoc3RkaW4sIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19m
bl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3N5c19sYXJnZWZpbGVfc291
cmNlPW5vOyBicmVhaworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgMQorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PiAvKiBmb3Igb2ZmX3QgKi8KKyAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkK
K3sKK2ludCAoKmZwKSAoRklMRSAqLCBvZmZfdCwgaW50KSA9IGZzZWVrbzsKKyAgICAgcmV0dXJu
IGZzZWVrbyAoc3RkaW4sIDAsIDApICYmIGZwIChzdGRpbiwgMCwgMCk7CisgIDsKKyAgcmV0dXJu
IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAg
YWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2U9MTsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0
ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29u
ZnRlc3QuJGFjX2V4dAorICBhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT11bmtub3duCisgIGJy
ZWFrCitkb25lCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2
X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X3N5c19sYXJnZWZpbGVf
c291cmNlIGluICMoCisgIG5vIHwgdW5rbm93bikgOzsKKyAgKikKK2NhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgJGFjX2N2X3N5c19sYXJnZWZpbGVf
c291cmNlCitfQUNFT0YKKzs7Citlc2FjCitybSAtcmYgY29uZnRlc3QqCisKKyMgV2UgdXNlZCB0
byB0cnkgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRT01MDAgdG9vLCB0byB3b3JrIGFyb3VuZCBhIGJ1
ZworIyBpbiBnbGliYyAyLjEuMywgYnV0IHRoYXQgYnJlYWtzIHRvbyBtYW55IG90aGVyIHRoaW5n
cy4KKyMgSWYgeW91IHdhbnQgZnNlZWtvIGFuZCBmdGVsbG8gd2l0aCBnbGliYywgdXBncmFkZSB0
byBhIGZpeGVkIGdsaWJjLgoraWYgdGVzdCAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UgIT0g
dW5rbm93bjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0ZTRUVLTyAxIiA+PmNvbmZk
ZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyB3aGV0aGVyIGxzdGF0IGNvcnJlY3RseSBoYW5kbGVzIHRyYWlsaW5nIHNsYXNoIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMg
dHJhaWxpbmcgc2xhc2guLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVy
ZW5jZXNfc2xhc2hlZF9zeW1saW5rKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgcm0gLWYgY29uZnRlc3Quc3ltIGNvbmZ0ZXN0LmZpbGUKK2Vj
aG8gPmNvbmZ0ZXN0LmZpbGUKK2lmIHRlc3QgIiRhc19sbl9zIiA9ICJsbiAtcyIgJiYgbG4gLXMg
Y29uZnRlc3QuZmlsZSBjb25mdGVzdC5zeW07IHRoZW4KKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBp
bGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFz
aGVkX3N5bWxpbms9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQK
K2ludAorbWFpbiAoKQoreworc3RydWN0IHN0YXQgc2J1ZjsKKyAgICAgLyogTGludXggd2lsbCBk
ZXJlZmVyZW5jZSB0aGUgc3ltbGluayBhbmQgZmFpbCwgYXMgcmVxdWlyZWQgYnkgUE9TSVguCisJ
VGhhdCBpcyBiZXR0ZXIgaW4gdGhlIHNlbnNlIHRoYXQgaXQgbWVhbnMgd2Ugd2lsbCBub3QKKwlo
YXZlIHRvIGNvbXBpbGUgYW5kIHVzZSB0aGUgbHN0YXQgd3JhcHBlci4gICovCisgICAgIHJldHVy
biBsc3RhdCAoImNvbmZ0ZXN0LnN5bS8iLCAmc2J1ZikgPT0gMDsKKyAgOworICByZXR1cm4gMDsK
K30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2
X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXMKK2Vsc2UKKyAgYWNf
Y3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPW5vCitmaQorcm0gLWYg
Y29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19l
eGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj
X2V4dAorZmkKKworZWxzZQorICAjIElmIHRoZSBgbG4gLXMnIGNvbW1hbmQgZmFpbGVkLCB0aGVu
IHdlIHByb2JhYmx5IGRvbid0IGV2ZW4KKyAgIyBoYXZlIGFuIGxzdGF0IGZ1bmN0aW9uLgorICBh
Y19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KK2ZpCitybSAt
ZiBjb25mdGVzdC5zeW0gY29uZnRlc3QuZmlsZQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNl
c19zbGFzaGVkX3N5bWxpbmsiID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX2xzdGF0X2RlcmVm
ZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsiID4mNjsgfQorCit0ZXN0ICRhY19jdl9mdW5jX2xzdGF0
X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsgPSB5ZXMgJiYKKworY2F0ID4+Y29uZmRlZnMu
aCA8PF9BQ0VPRgorI2RlZmluZSBMU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSyAxCitfQUNF
T0YKKworCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRf
c3ltbGluayIgPSB4bm87IHRoZW4KKyAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgbHN0YXQu
JGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIGxzdGF0LiRhY19vYmpl
eHQiCisgOzsKK2VzYWMKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHN5cy90eXBlcy5oIGRlZmluZXMgbWFrZWRldiIgPiY1
CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHN5cy90eXBlcy5oIGRlZmluZXMgbWFrZWRl
di4uLiAiID4mNjsgfQoraWYgJHthY19jdl9oZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldis6fSBm
YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworcmV0dXJuIG1h
a2VkZXYoMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5
X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfaGVhZGVyX3N5c190eXBlc19oX21ha2Vk
ZXY9eWVzCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaF9tYWtlZGV2PW5vCitmaQor
cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRl
c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N5c190eXBlc19oX21h
a2VkZXYiID4mNQorJGFzX2VjaG8gIiRhY19jdl9oZWFkZXJfc3lzX3R5cGVzX2hfbWFrZWRldiIg
PiY2OyB9CisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaF9tYWtlZGV2ID0gbm87
IHRoZW4KK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzeXMvbWtkZXYu
aCIgImFjX2N2X2hlYWRlcl9zeXNfbWtkZXZfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYg
dGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21rZGV2X2giID0geHllczsgdGhlbiA6CisKKyRhc19l
Y2hvICIjZGVmaW5lIE1BSk9SX0lOX01LREVWIDEiID4+Y29uZmRlZnMuaAorCitmaQorCisKKwor
ICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX21rZGV2X2ggPSBubzsgdGhlbgorICAgIGFjX2Zu
X2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzeXMvc3lzbWFjcm9zLmgiICJhY19j
dl9oZWFkZXJfc3lzX3N5c21hY3Jvc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0
ICJ4JGFjX2N2X2hlYWRlcl9zeXNfc3lzbWFjcm9zX2giID0geHllczsgdGhlbiA6CisKKyRhc19l
Y2hvICIjZGVmaW5lIE1BSk9SX0lOX1NZU01BQ1JPUyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwor
CisgIGZpCitmaQorCitmb3IgYWNfaGVhZGVyIGluIHN0ZGxpYi5oCitkbyA6CisgIGFjX2ZuX2Nf
Y2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzdGRsaWIuaCIgImFjX2N2X2hlYWRlcl9z
dGRsaWJfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJf
c3RkbGliX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNk
ZWZpbmUgSEFWRV9TVERMSUJfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCit7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbGliYyBjb21w
YXRpYmxlIG1hbGxvYyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIGxpYmMgY29t
cGF0aWJsZSBtYWxsb2MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY19tYWxsb2NfMF9ub25u
dWxsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK
KyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5j
X21hbGxvY18wX25vbm51bGw9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+
Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmIGRlZmluZWQgU1RE
Q19IRUFERVJTIHx8IGRlZmluZWQgSEFWRV9TVERMSUJfSAorIyBpbmNsdWRlIDxzdGRsaWIuaD4K
KyNlbHNlCitjaGFyICptYWxsb2MgKCk7CisjZW5kaWYKKworaW50CittYWluICgpCit7CityZXR1
cm4gISBtYWxsb2MgKDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9j
X3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19tYWxsb2NfMF9ub25udWxs
PXllcworZWxzZQorICBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9bm8KK2ZpCitybSAtZiBj
b3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4
ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNf
ZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGwiID4mNQorJGFzX2VjaG8gIiRhY19j
dl9mdW5jX21hbGxvY18wX25vbm51bGwiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19tYWxs
b2NfMF9ub25udWxsID0geWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQUxM
T0MgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQUxM
T0MgMCIgPj5jb25mZGVmcy5oCisKKyAgIGNhc2UgIiAkTElCT0JKUyAiIGluCisgICoiIG1hbGxv
Yy4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgbWFsbG9jLiRhY19v
YmpleHQiCisgOzsKK2VzYWMKKworCiskYXNfZWNobyAiI2RlZmluZSBtYWxsb2MgcnBsX21hbGxv
YyIgPj5jb25mZGVmcy5oCisKK2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRpbWUuaCBhbmQgc3lzL3RpbWUuaCBtYXkgYm90
aCBiZSBpbmNsdWRlZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRpbWUuaCBh
bmQgc3lzL3RpbWUuaCBtYXkgYm90aCBiZSBpbmNsdWRlZC4uLiAiID4mNjsgfQoraWYgJHthY19j
dl9oZWFkZXJfdGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRl
IDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworaW50CittYWluICgpCit7CitpZiAo
KHN0cnVjdCB0bSAqKSAwKQorcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YK
K2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfaGVhZGVy
X3RpbWU9eWVzCitlbHNlCisgIGFjX2N2X2hlYWRlcl90aW1lPW5vCitmaQorcm0gLWYgY29yZSBj
b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oZWFk
ZXJfdGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hlYWRlcl90aW1lIiA+JjY7IH0KK2lmIHRl
c3QgJGFjX2N2X2hlYWRlcl90aW1lID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFRJ
TUVfV0lUSF9TWVNfVElNRSAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworCisKKworICBmb3IgYWNf
aGVhZGVyIGluICRhY19oZWFkZXJfbGlzdAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hv
ICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hl
YWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNf
aW5jbHVkZXNfZGVmYXVsdAorIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIg
PSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAk
YXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQor
Citkb25lCisKKworCisKKworCisKKworICBmb3IgYWNfZnVuYyBpbiAkYWNfZnVuY19saXN0Citk
byA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3Ry
X3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFy
IgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBj
YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVu
YyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2RvbmUKKworCisKKworCit7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIG1r
dGltZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2luZyBta3RpbWUuLi4gIiA+
JjY7IH0KK2lmICR7YWNfY3ZfZnVuY193b3JraW5nX21rdGltZSs6fSBmYWxzZTsgdGhlbiA6Cisg
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21w
aWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY193b3JraW5nX21rdGltZT1ubworZWxz
ZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQg
Y29uZmRlZnMuaC4gICovCisvKiBUZXN0IHByb2dyYW0gZnJvbSBQYXVsIEVnZ2VydCBhbmQgVG9u
eSBMZW5laXMuICAqLworI2lmZGVmIFRJTUVfV0lUSF9TWVNfVElNRQorIyBpbmNsdWRlIDxzeXMv
dGltZS5oPgorIyBpbmNsdWRlIDx0aW1lLmg+CisjZWxzZQorIyBpZmRlZiBIQVZFX1NZU19USU1F
X0gKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHRpbWUuaD4K
KyMgZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkbGli
Lmg+CisKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlm
CisKKyNpZm5kZWYgSEFWRV9BTEFSTQorIyBkZWZpbmUgYWxhcm0oWCkgLyogZW1wdHkgKi8KKyNl
bmRpZgorCisvKiBXb3JrIGFyb3VuZCByZWRlZmluaXRpb24gdG8gcnBsX3B1dGVudiBieSBvdGhl
ciBjb25maWcgdGVzdHMuICAqLworI3VuZGVmIHB1dGVudgorCitzdGF0aWMgdGltZV90IHRpbWVf
dF9tYXg7CitzdGF0aWMgdGltZV90IHRpbWVfdF9taW47CisKKy8qIFZhbHVlcyB3ZSdsbCB1c2Ug
dG8gc2V0IHRoZSBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCitzdGF0aWMgY29uc3QgY2hh
ciAqdHpfc3RyaW5nc1tdID0geworICAoY29uc3QgY2hhciAqKSAwLCAiVFo9R01UMCIsICJUWj1K
U1QtOSIsCisgICJUWj1FU1QrM0VEVCsyLE0xMC4xLjAvMDA6MDA6MDAsTTIuMy4wLzAwOjAwOjAw
IgorfTsKKyNkZWZpbmUgTl9TVFJJTkdTIChzaXplb2YgKHR6X3N0cmluZ3MpIC8gc2l6ZW9mICh0
el9zdHJpbmdzWzBdKSkKKworLyogUmV0dXJuIDAgaWYgbWt0aW1lIGZhaWxzIHRvIGNvbnZlcnQg
YSBkYXRlIGluIHRoZSBzcHJpbmctZm9yd2FyZCBnYXAuCisgICBCYXNlZCBvbiBhIHByb2JsZW0g
cmVwb3J0IGZyb20gQW5kcmVhcyBKYWVnZXIuICAqLworc3RhdGljIGludAorc3ByaW5nX2Zvcndh
cmRfZ2FwICgpCit7CisgIC8qIGdsaWJjICh1cCB0byBhYm91dCAxOTk4LTEwLTA3KSBmYWlsZWQg
dGhpcyB0ZXN0LiAqLworICBzdHJ1Y3QgdG0gdG07CisKKyAgLyogVXNlIHRoZSBwb3J0YWJsZSBQ
T1NJWC4xIHNwZWNpZmljYXRpb24gIlRaPVBTVDhQRFQsTTQuMS4wLE0xMC41LjAiCisgICAgIGlu
c3RlYWQgb2YgIlRaPUFtZXJpY2EvVmFuY291dmVyIiBpbiBvcmRlciB0byBkZXRlY3QgdGhlIGJ1
ZyBldmVuCisgICAgIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBPbHNvbiBleHRl
bnNpb24sIG9yIGRvbid0IGhhdmUgdGhlCisgICAgIGZ1bGwgem9uZWluZm8gdGFibGVzIGluc3Rh
bGxlZC4gICovCisgIHB1dGVudiAoKGNoYXIqKSAiVFo9UFNUOFBEVCxNNC4xLjAsTTEwLjUuMCIp
OworCisgIHRtLnRtX3llYXIgPSA5ODsKKyAgdG0udG1fbW9uID0gMzsKKyAgdG0udG1fbWRheSA9
IDU7CisgIHRtLnRtX2hvdXIgPSAyOworICB0bS50bV9taW4gPSAwOworICB0bS50bV9zZWMgPSAw
OworICB0bS50bV9pc2RzdCA9IC0xOworICByZXR1cm4gbWt0aW1lICgmdG0pICE9ICh0aW1lX3Qp
IC0xOworfQorCitzdGF0aWMgaW50Citta3RpbWVfdGVzdDEgKHRpbWVfdCBub3cpCit7CisgIHN0
cnVjdCB0bSAqbHQ7CisgIHJldHVybiAhIChsdCA9IGxvY2FsdGltZSAoJm5vdykpIHx8IG1rdGlt
ZSAobHQpID09IG5vdzsKK30KKworc3RhdGljIGludAorbWt0aW1lX3Rlc3QgKHRpbWVfdCBub3cp
Cit7CisgIHJldHVybiAobWt0aW1lX3Rlc3QxIChub3cpCisJICAmJiBta3RpbWVfdGVzdDEgKCh0
aW1lX3QpICh0aW1lX3RfbWF4IC0gbm93KSkKKwkgICYmIG1rdGltZV90ZXN0MSAoKHRpbWVfdCkg
KHRpbWVfdF9taW4gKyBub3cpKSk7Cit9CisKK3N0YXRpYyBpbnQKK2lyaXhfNl80X2J1ZyAoKQor
eworICAvKiBCYXNlZCBvbiBjb2RlIGZyb20gQXJpZWwgRmFpZ29uLiAgKi8KKyAgc3RydWN0IHRt
IHRtOworICB0bS50bV95ZWFyID0gOTY7CisgIHRtLnRtX21vbiA9IDM7CisgIHRtLnRtX21kYXkg
PSAwOworICB0bS50bV9ob3VyID0gMDsKKyAgdG0udG1fbWluID0gMDsKKyAgdG0udG1fc2VjID0g
MDsKKyAgdG0udG1faXNkc3QgPSAtMTsKKyAgbWt0aW1lICgmdG0pOworICByZXR1cm4gdG0udG1f
bW9uID09IDIgJiYgdG0udG1fbWRheSA9PSAzMTsKK30KKworc3RhdGljIGludAorYmlndGltZV90
ZXN0IChpbnQgaikKK3sKKyAgc3RydWN0IHRtIHRtOworICB0aW1lX3Qgbm93OworICB0bS50bV95
ZWFyID0gdG0udG1fbW9uID0gdG0udG1fbWRheSA9IHRtLnRtX2hvdXIgPSB0bS50bV9taW4gPSB0
bS50bV9zZWMgPSBqOworICBub3cgPSBta3RpbWUgKCZ0bSk7CisgIGlmIChub3cgIT0gKHRpbWVf
dCkgLTEpCisgICAgeworICAgICAgc3RydWN0IHRtICpsdCA9IGxvY2FsdGltZSAoJm5vdyk7Cisg
ICAgICBpZiAoISAobHQKKwkgICAgICYmIGx0LT50bV95ZWFyID09IHRtLnRtX3llYXIKKwkgICAg
ICYmIGx0LT50bV9tb24gPT0gdG0udG1fbW9uCisJICAgICAmJiBsdC0+dG1fbWRheSA9PSB0bS50
bV9tZGF5CisJICAgICAmJiBsdC0+dG1faG91ciA9PSB0bS50bV9ob3VyCisJICAgICAmJiBsdC0+
dG1fbWluID09IHRtLnRtX21pbgorCSAgICAgJiYgbHQtPnRtX3NlYyA9PSB0bS50bV9zZWMKKwkg
ICAgICYmIGx0LT50bV95ZGF5ID09IHRtLnRtX3lkYXkKKwkgICAgICYmIGx0LT50bV93ZGF5ID09
IHRtLnRtX3dkYXkKKwkgICAgICYmICgobHQtPnRtX2lzZHN0IDwgMCA/IC0xIDogMCA8IGx0LT50
bV9pc2RzdCkKKwkJICA9PSAodG0udG1faXNkc3QgPCAwID8gLTEgOiAwIDwgdG0udG1faXNkc3Qp
KSkpCisJcmV0dXJuIDA7CisgICAgfQorICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAoreWVh
cl8yMDUwX3Rlc3QgKCkKK3sKKyAgLyogVGhlIGNvcnJlY3QgYW5zd2VyIGZvciAyMDUwLTAyLTAx
IDAwOjAwOjAwIGluIFBhY2lmaWMgdGltZSwKKyAgICAgaWdub3JpbmcgbGVhcCBzZWNvbmRzLiAg
Ki8KKyAgdW5zaWduZWQgbG9uZyBpbnQgYW5zd2VyID0gMjUyNzMxNTIwMFVMOworCisgIHN0cnVj
dCB0bSB0bTsKKyAgdGltZV90IHQ7CisgIHRtLnRtX3llYXIgPSAyMDUwIC0gMTkwMDsKKyAgdG0u
dG1fbW9uID0gMiAtIDE7CisgIHRtLnRtX21kYXkgPSAxOworICB0bS50bV9ob3VyID0gdG0udG1f
bWluID0gdG0udG1fc2VjID0gMDsKKyAgdG0udG1faXNkc3QgPSAtMTsKKworICAvKiBVc2UgdGhl
IHBvcnRhYmxlIFBPU0lYLjEgc3BlY2lmaWNhdGlvbiAiVFo9UFNUOFBEVCxNNC4xLjAsTTEwLjUu
MCIKKyAgICAgaW5zdGVhZCBvZiAiVFo9QW1lcmljYS9WYW5jb3V2ZXIiIGluIG9yZGVyIHRvIGRl
dGVjdCB0aGUgYnVnIGV2ZW4KKyAgICAgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhl
IE9sc29uIGV4dGVuc2lvbiwgb3IgZG9uJ3QgaGF2ZSB0aGUKKyAgICAgZnVsbCB6b25laW5mbyB0
YWJsZXMgaW5zdGFsbGVkLiAgKi8KKyAgcHV0ZW52ICgoY2hhciopICJUWj1QU1Q4UERULE00LjEu
MCxNMTAuNS4wIik7CisKKyAgdCA9IG1rdGltZSAoJnRtKTsKKworICAvKiBDaGVjayB0aGF0IHRo
ZSByZXN1bHQgaXMgZWl0aGVyIGEgZmFpbHVyZSwgb3IgY2xvc2UgZW5vdWdoCisgICAgIHRvIHRo
ZSBjb3JyZWN0IGFuc3dlciB0aGF0IHdlIGNhbiBhc3N1bWUgdGhlIGRpc2NyZXBhbmN5IGlzCisg
ICAgIGR1ZSB0byBsZWFwIHNlY29uZHMuICAqLworICByZXR1cm4gKHQgPT0gKHRpbWVfdCkgLTEK
KwkgIHx8ICgwIDwgdCAmJiBhbnN3ZXIgLSAxMjAgPD0gdCAmJiB0IDw9IGFuc3dlciArIDEyMCkp
OworfQorCitpbnQKK21haW4gKCkKK3sKKyAgdGltZV90IHQsIGRlbHRhOworICBpbnQgaSwgajsK
KworICAvKiBUaGlzIHRlc3QgbWFrZXMgc29tZSBidWdneSBta3RpbWUgaW1wbGVtZW50YXRpb25z
IGxvb3AuCisgICAgIEdpdmUgdXAgYWZ0ZXIgNjAgc2Vjb25kczsgYSBta3RpbWUgc2xvd2VyIHRo
YW4gdGhhdAorICAgICBpc24ndCB3b3J0aCB1c2luZyBhbnl3YXkuICAqLworICBhbGFybSAoNjAp
OworCisgIGZvciAoOzspCisgICAgeworICAgICAgdCA9ICh0aW1lX3RfbWF4IDw8IDEpICsgMTsK
KyAgICAgIGlmICh0IDw9IHRpbWVfdF9tYXgpCisJYnJlYWs7CisgICAgICB0aW1lX3RfbWF4ID0g
dDsKKyAgICB9CisgIHRpbWVfdF9taW4gPSAtICgodGltZV90KSB+ICh0aW1lX3QpIDAgPT0gKHRp
bWVfdCkgLTEpIC0gdGltZV90X21heDsKKworICBkZWx0YSA9IHRpbWVfdF9tYXggLyA5OTc7IC8q
IGEgc3VpdGFibGUgcHJpbWUgbnVtYmVyICovCisgIGZvciAoaSA9IDA7IGkgPCBOX1NUUklOR1M7
IGkrKykKKyAgICB7CisgICAgICBpZiAodHpfc3RyaW5nc1tpXSkKKwlwdXRlbnYgKChjaGFyKikg
dHpfc3RyaW5nc1tpXSk7CisKKyAgICAgIGZvciAodCA9IDA7IHQgPD0gdGltZV90X21heCAtIGRl
bHRhOyB0ICs9IGRlbHRhKQorCWlmICghIG1rdGltZV90ZXN0ICh0KSkKKwkgIHJldHVybiAxOwor
ICAgICAgaWYgKCEgKG1rdGltZV90ZXN0ICgodGltZV90KSAxKQorCSAgICAgJiYgbWt0aW1lX3Rl
c3QgKCh0aW1lX3QpICg2MCAqIDYwKSkKKwkgICAgICYmIG1rdGltZV90ZXN0ICgodGltZV90KSAo
NjAgKiA2MCAqIDI0KSkpKQorCXJldHVybiAxOworCisgICAgICBmb3IgKGogPSAxOyA7IGogPDw9
IDEpCisJaWYgKCEgYmlndGltZV90ZXN0IChqKSkKKwkgIHJldHVybiAxOworCWVsc2UgaWYgKElO
VF9NQVggLyAyIDwgaikKKwkgIGJyZWFrOworICAgICAgaWYgKCEgYmlndGltZV90ZXN0IChJTlRf
TUFYKSkKKwlyZXR1cm4gMTsKKyAgICB9CisgIHJldHVybiAhIChpcml4XzZfNF9idWcgKCkgJiYg
c3ByaW5nX2ZvcndhcmRfZ2FwICgpICYmIHllYXJfMjA1MF90ZXN0ICgpKTsKK30KK19BQ0VPRgor
aWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfd29ya2lu
Z19ta3RpbWU9eWVzCitlbHNlCisgIGFjX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9bm8KK2ZpCity
bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVz
dC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lIiA+JjUKKyRhc19lY2hvICIk
YWNfY3ZfZnVuY193b3JraW5nX21rdGltZSIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9mdW5jX3dv
cmtpbmdfbWt0aW1lID0gbm87IHRoZW4KKyAgY2FzZSAiICRMSUJPQkpTICIgaW4KKyAgKiIgbWt0
aW1lLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBta3RpbWUuJGFj
X29iamV4dCIKKyA7OworZXNhYworCitmaQorCisKKworCisKKworZm9yIGFjX2Z1bmMgaW4gZ2V0
cGFnZXNpemUKK2RvIDoKKyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZ2V0cGFnZXNp
emUiICJhY19jdl9mdW5jX2dldHBhZ2VzaXplIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2dldHBh
Z2VzaXplIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVm
aW5lIEhBVkVfR0VUUEFHRVNJWkUgMQorX0FDRU9GCisKK2ZpCitkb25lCisKK3sgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcCIg
PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2luZyBtbWFwLi4uICIgPiY2OyB9Citp
ZiAke2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5n
IiA9IHllczsgdGhlbiA6CisgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9bm8KK2Vsc2UK
KyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNv
bmZkZWZzLmguICAqLworJGFjX2luY2x1ZGVzX2RlZmF1bHQKKy8qIG1hbGxvYyBtaWdodCBoYXZl
IGJlZW4gcmVuYW1lZCBhcyBycGxfbWFsbG9jLiAqLworI3VuZGVmIG1hbGxvYworCisvKiBUaGFu
a3MgdG8gTWlrZSBIYWVydGVsIGFuZCBKaW0gQXZlcmEgZm9yIHRoaXMgdGVzdC4KKyAgIEhlcmUg
aXMgYSBtYXRyaXggb2YgbW1hcCBwb3NzaWJpbGl0aWVzOgorCW1tYXAgcHJpdmF0ZSBub3QgZml4
ZWQKKwltbWFwIHByaXZhdGUgZml4ZWQgYXQgc29tZXdoZXJlIGN1cnJlbnRseSB1bm1hcHBlZAor
CW1tYXAgcHJpdmF0ZSBmaXhlZCBhdCBzb21ld2hlcmUgYWxyZWFkeSBtYXBwZWQKKwltbWFwIHNo
YXJlZCBub3QgZml4ZWQKKwltbWFwIHNoYXJlZCBmaXhlZCBhdCBzb21ld2hlcmUgY3VycmVudGx5
IHVubWFwcGVkCisJbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJlIGFscmVhZHkgbWFwcGVk
CisgICBGb3IgcHJpdmF0ZSBtYXBwaW5ncywgd2Ugc2hvdWxkIHZlcmlmeSB0aGF0IGNoYW5nZXMg
Y2Fubm90IGJlIHJlYWQoKQorICAgYmFjayBmcm9tIHRoZSBmaWxlLCBub3IgbW1hcCdzIGJhY2sg
ZnJvbSB0aGUgZmlsZSBhdCBhIGRpZmZlcmVudAorICAgYWRkcmVzcy4gIChUaGVyZSBoYXZlIGJl
ZW4gc3lzdGVtcyB3aGVyZSBwcml2YXRlIHdhcyBub3QgY29ycmVjdGx5CisgICBpbXBsZW1lbnRl
ZCBsaWtlIHRoZSBpbmZhbW91cyBpMzg2IHN2cjQuMCwgYW5kIHN5c3RlbXMgd2hlcmUgdGhlCisg
ICBWTSBwYWdlIGNhY2hlIHdhcyBub3QgY29oZXJlbnQgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYnVm
ZmVyIGNhY2hlCisgICBsaWtlIGVhcmx5IHZlcnNpb25zIG9mIEZyZWVCU0QgYW5kIHBvc3NpYmx5
IGNvbnRlbXBvcmFyeSBOZXRCU0QuKQorICAgRm9yIHNoYXJlZCBtYXBwaW5ncywgd2Ugc2hvdWxk
IGNvbnZlcnNlbHkgdmVyaWZ5IHRoYXQgY2hhbmdlcyBnZXQKKyAgIHByb3BhZ2F0ZWQgYmFjayB0
byBhbGwgdGhlIHBsYWNlcyB0aGV5J3JlIHN1cHBvc2VkIHRvIGJlLgorCisgICBHcmVwIHdhbnRz
IHByaXZhdGUgZml4ZWQgYWxyZWFkeSBtYXBwZWQuCisgICBUaGUgbWFpbiB0aGluZ3MgZ3JlcCBu
ZWVkcyB0byBrbm93IGFib3V0IG1tYXAgYXJlOgorICAgKiBkb2VzIGl0IGV4aXN0IGFuZCBpcyBp
dCBzYWZlIHRvIHdyaXRlIGludG8gdGhlIG1tYXAnZCBhcmVhCisgICAqIGhvdyB0byB1c2UgaXQg
KEJTRCB2YXJpYW50cykgICovCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9t
bWFuLmg+CisKKyNpZiAhZGVmaW5lZCBTVERDX0hFQURFUlMgJiYgIWRlZmluZWQgSEFWRV9TVERM
SUJfSAorY2hhciAqbWFsbG9jICgpOworI2VuZGlmCisKKy8qIFRoaXMgbWVzcyB3YXMgY29waWVk
IGZyb20gdGhlIEdOVSBnZXRwYWdlc2l6ZS5oLiAgKi8KKyNpZm5kZWYgSEFWRV9HRVRQQUdFU0la
RQorIyBpZmRlZiBfU0NfUEFHRVNJWkUKKyMgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIHN5c2NvbmYo
X1NDX1BBR0VTSVpFKQorIyBlbHNlIC8qIG5vIF9TQ19QQUdFU0laRSAqLworIyAgaWZkZWYgSEFW
RV9TWVNfUEFSQU1fSAorIyAgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorIyAgIGlmZGVmIEVYRUNf
UEFHRVNJWkUKKyMgICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgRVhFQ19QQUdFU0laRQorIyAgIGVs
c2UgLyogbm8gRVhFQ19QQUdFU0laRSAqLworIyAgICBpZmRlZiBOQlBHCisjICAgICBkZWZpbmUg
Z2V0cGFnZXNpemUoKSBOQlBHICogQ0xTSVpFCisjICAgICBpZm5kZWYgQ0xTSVpFCisjICAgICAg
ZGVmaW5lIENMU0laRSAxCisjICAgICBlbmRpZiAvKiBubyBDTFNJWkUgKi8KKyMgICAgZWxzZSAv
KiBubyBOQlBHICovCisjICAgICBpZmRlZiBOQlBDCisjICAgICAgZGVmaW5lIGdldHBhZ2VzaXpl
KCkgTkJQQworIyAgICAgZWxzZSAvKiBubyBOQlBDICovCisjICAgICAgaWZkZWYgUEFHRVNJWkUK
KyMgICAgICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgUEFHRVNJWkUKKyMgICAgICBlbmRpZiAvKiBQ
QUdFU0laRSAqLworIyAgICAgZW5kaWYgLyogbm8gTkJQQyAqLworIyAgICBlbmRpZiAvKiBubyBO
QlBHICovCisjICAgZW5kaWYgLyogbm8gRVhFQ19QQUdFU0laRSAqLworIyAgZWxzZSAvKiBubyBI
QVZFX1NZU19QQVJBTV9IICovCisjICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgODE5MgkvKiBwdW50
IHRvdGFsbHkgKi8KKyMgIGVuZGlmIC8qIG5vIEhBVkVfU1lTX1BBUkFNX0ggKi8KKyMgZW5kaWYg
Lyogbm8gX1NDX1BBR0VTSVpFICovCisKKyNlbmRpZiAvKiBubyBIQVZFX0dFVFBBR0VTSVpFICov
CisKK2ludAorbWFpbiAoKQoreworICBjaGFyICpkYXRhLCAqZGF0YTIsICpkYXRhMzsKKyAgY29u
c3QgY2hhciAqY2RhdGEyOworICBpbnQgaSwgcGFnZXNpemU7CisgIGludCBmZCwgZmQyOworCisg
IHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7CisKKyAgLyogRmlyc3QsIG1ha2UgYSBmaWxlIHdp
dGggc29tZSBrbm93biBnYXJiYWdlIGluIGl0LiAqLworICBkYXRhID0gKGNoYXIgKikgbWFsbG9j
IChwYWdlc2l6ZSk7CisgIGlmICghZGF0YSkKKyAgICByZXR1cm4gMTsKKyAgZm9yIChpID0gMDsg
aSA8IHBhZ2VzaXplOyArK2kpCisgICAgKihkYXRhICsgaSkgPSByYW5kICgpOworICB1bWFzayAo
MCk7CisgIGZkID0gY3JlYXQgKCJjb25mdGVzdC5tbWFwIiwgMDYwMCk7CisgIGlmIChmZCA8IDAp
CisgICAgcmV0dXJuIDI7CisgIGlmICh3cml0ZSAoZmQsIGRhdGEsIHBhZ2VzaXplKSAhPSBwYWdl
c2l6ZSkKKyAgICByZXR1cm4gMzsKKyAgY2xvc2UgKGZkKTsKKworICAvKiBOZXh0LCBjaGVjayB0
aGF0IHRoZSB0YWlsIG9mIGEgcGFnZSBpcyB6ZXJvLWZpbGxlZC4gIEZpbGUgbXVzdCBoYXZlCisg
ICAgIG5vbi16ZXJvIGxlbmd0aCwgb3RoZXJ3aXNlIHdlIHJpc2sgU0lHQlVTIGZvciBlbnRpcmUg
cGFnZS4gICovCisgIGZkMiA9IG9wZW4gKCJjb25mdGVzdC50eHQiLCBPX1JEV1IgfCBPX0NSRUFU
IHwgT19UUlVOQywgMDYwMCk7CisgIGlmIChmZDIgPCAwKQorICAgIHJldHVybiA0OworICBjZGF0
YTIgPSAiIjsKKyAgaWYgKHdyaXRlIChmZDIsIGNkYXRhMiwgMSkgIT0gMSkKKyAgICByZXR1cm4g
NTsKKyAgZGF0YTIgPSAoY2hhciAqKSBtbWFwICgwLCBwYWdlc2l6ZSwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSwgTUFQX1NIQVJFRCwgZmQyLCAwTCk7CisgIGlmIChkYXRhMiA9PSBNQVBfRkFJTEVE
KQorICAgIHJldHVybiA2OworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAgICBp
ZiAoKihkYXRhMiArIGkpKQorICAgICAgcmV0dXJuIDc7CisgIGNsb3NlIChmZDIpOworICBpZiAo
bXVubWFwIChkYXRhMiwgcGFnZXNpemUpKQorICAgIHJldHVybiA4OworCisgIC8qIE5leHQsIHRy
eSB0byBtbWFwIHRoZSBmaWxlIGF0IGEgZml4ZWQgYWRkcmVzcyB3aGljaCBhbHJlYWR5IGhhcwor
ICAgICBzb21ldGhpbmcgZWxzZSBhbGxvY2F0ZWQgYXQgaXQuICBJZiB3ZSBjYW4sIGFsc28gbWFr
ZSBzdXJlIHRoYXQKKyAgICAgd2Ugc2VlIHRoZSBzYW1lIGdhcmJhZ2UuICAqLworICBmZCA9IG9w
ZW4gKCJjb25mdGVzdC5tbWFwIiwgT19SRFdSKTsKKyAgaWYgKGZkIDwgMCkKKyAgICByZXR1cm4g
OTsKKyAgaWYgKGRhdGEyICE9IG1tYXAgKGRhdGEyLCBwYWdlc2l6ZSwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSwKKwkJICAgICBNQVBfUFJJVkFURSB8IE1BUF9GSVhFRCwgZmQsIDBMKSkKKyAgICBy
ZXR1cm4gMTA7CisgIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgIGlmICgqKGRh
dGEgKyBpKSAhPSAqKGRhdGEyICsgaSkpCisgICAgICByZXR1cm4gMTE7CisKKyAgLyogRmluYWxs
eSwgbWFrZSBzdXJlIHRoYXQgY2hhbmdlcyB0byB0aGUgbWFwcGVkIGFyZWEgZG8gbm90CisgICAg
IHBlcmNvbGF0ZSBiYWNrIHRvIHRoZSBmaWxlIGFzIHNlZW4gYnkgcmVhZCgpLiAgKFRoaXMgaXMg
YSBidWcgb24KKyAgICAgc29tZSB2YXJpYW50cyBvZiBpMzg2IHN2cjQuMC4pICAqLworICBmb3Ig
KGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAgICAqKGRhdGEyICsgaSkgPSAqKGRhdGEyICsg
aSkgKyAxOworICBkYXRhMyA9IChjaGFyICopIG1hbGxvYyAocGFnZXNpemUpOworICBpZiAoIWRh
dGEzKQorICAgIHJldHVybiAxMjsKKyAgaWYgKHJlYWQgKGZkLCBkYXRhMywgcGFnZXNpemUpICE9
IHBhZ2VzaXplKQorICAgIHJldHVybiAxMzsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyAr
K2kpCisgICAgaWYgKCooZGF0YSArIGkpICE9ICooZGF0YTMgKyBpKSkKKyAgICAgIHJldHVybiAx
NDsKKyAgY2xvc2UgKGZkKTsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5
X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXll
cworZWxzZQorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPW5vCitmaQorcm0gLWYgY29y
ZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVl
eHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4
dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2
X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4mNjsgfQoraWYgdGVzdCAkYWNfY3ZfZnVuY19tbWFw
X2ZpeGVkX21hcHBlZCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX01NQVAg
MSIgPj5jb25mZGVmcy5oCisKK2ZpCitybSAtZiBjb25mdGVzdC5tbWFwIGNvbmZ0ZXN0LnR4dAor
Citmb3IgYWNfaGVhZGVyIGluIHN0ZGxpYi5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVy
X21vbmdyZWwgIiRMSU5FTk8iICJzdGRsaWIuaCIgImFjX2N2X2hlYWRlcl9zdGRsaWJfaCIgIiRh
Y19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkbGliX2giID0g
eHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9T
VERMSUJfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCit7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbGliYyBjb21wYXRpYmxlIHJlYWxs
b2MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVSBsaWJjIGNvbXBhdGlibGUgcmVh
bGxvYy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsKzp9IGZh
bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVz
dCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX3JlYWxsb2Nf
MF9ub25udWxsPW5vCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0
LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZiBkZWZpbmVkIFNURENfSEVBREVS
UyB8fCBkZWZpbmVkIEhBVkVfU1RETElCX0gKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjZWxzZQor
Y2hhciAqcmVhbGxvYyAoKTsKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK3JldHVybiAhIHJl
YWxsb2MgKDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3Ry
eV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD15
ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD1ubworZmkKK3JtIC1mIGNv
cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhl
ZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19l
eHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGwiID4mNQorJGFzX2VjaG8gIiRhY19j
dl9mdW5jX3JlYWxsb2NfMF9ub25udWxsIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2Z1bmNfcmVh
bGxvY18wX25vbm51bGwgPSB5ZXM7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1JF
QUxMT0MgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9S
RUFMTE9DIDAiID4+Y29uZmRlZnMuaAorCisgICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBy
ZWFsbG9jLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyByZWFsbG9j
LiRhY19vYmpleHQiCisgOzsKK2VzYWMKKworCiskYXNfZWNobyAiI2RlZmluZSByZWFsbG9jIHJw
bF9yZWFsbG9jIiA+PmNvbmZkZWZzLmgKKworZmkKKworCisgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBzdHJubGVuIiA+JjUKKyRh
c19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIHN0cm5sZW4uLi4gIiA+JjY7IH0KK2lmICR7
YWNfY3ZfZnVuY19zdHJubGVuX3dvcmtpbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHll
czsgdGhlbiA6CisgICMgR3Vlc3Mgbm8gb24gQUlYIHN5c3RlbXMsIHllcyBvdGhlcndpc2UuCisJ
CWNhc2UgIiRob3N0X29zIiBpbgorCQkgIGFpeCopIGFjX2N2X2Z1bmNfc3Rybmxlbl93b3JraW5n
PW5vOzsKKwkJICAqKSAgICBhY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZz15ZXM7OworCQllc2Fj
CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkK
K3sKKworI2RlZmluZSBTICJmb29iYXIiCisjZGVmaW5lIFNfTEVOIChzaXplb2YgUyAtIDEpCisK
KyAgLyogQXQgbGVhc3Qgb25lIGltcGxlbWVudGF0aW9uIGlzIGJ1Z2d5OiB0aGF0IG9mIEFJWCA0
LjMgd291bGQKKyAgICAgZ2l2ZSBzdHJubGVuIChTLCAxKSA9PSAzLiAgKi8KKworICBpbnQgaTsK
KyAgZm9yIChpID0gMDsgaSA8IFNfTEVOICsgMTsgKytpKQorICAgIHsKKyAgICAgIGludCBleHBl
Y3RlZCA9IGkgPD0gU19MRU4gPyBpIDogU19MRU47CisgICAgICBpZiAoc3RybmxlbiAoUywgaSkg
IT0gZXhwZWN0ZWQpCisJcmV0dXJuIDE7CisgICAgfQorICByZXR1cm4gMDsKKworICA7CisgIHJl
dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoK
KyAgYWNfY3ZfZnVuY19zdHJubGVuX3dvcmtpbmc9eWVzCitlbHNlCisgIGFjX2N2X2Z1bmNfc3Ry
bmxlbl93b3JraW5nPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdt
b24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19zdHJubGVuX3dv
cmtpbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZyIgPiY2OyB9
Cit0ZXN0ICRhY19jdl9mdW5jX3N0cm5sZW5fd29ya2luZyA9IG5vICYmIGNhc2UgIiAkTElCT0JK
UyAiIGluCisgICoiIHN0cm5sZW4uJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRM
SUJPQkpTIHN0cm5sZW4uJGFjX29iamV4dCIKKyA7OworZXNhYworCisKK3sgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgc3RydG9kIiA+
JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIHN0cnRvZC4uLiAiID4mNjsgfQor
aWYgJHthY19jdl9mdW5jX3N0cnRvZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0
aGVuIDoKKyAgYWNfY3ZfZnVuY19zdHJ0b2Q9bm8KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8
PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCiskYWNf
aW5jbHVkZXNfZGVmYXVsdAorI2lmbmRlZiBzdHJ0b2QKK2RvdWJsZSBzdHJ0b2QgKCk7CisjZW5k
aWYKK2ludAorbWFpbigpCit7CisgIHsKKyAgICAvKiBTb21lIHZlcnNpb25zIG9mIExpbnV4IHN0
cnRvZCBtaXMtcGFyc2Ugc3RyaW5ncyB3aXRoIGxlYWRpbmcgJysnLiAgKi8KKyAgICBjaGFyICpz
dHJpbmcgPSAiICs2OSI7CisgICAgY2hhciAqdGVybTsKKyAgICBkb3VibGUgdmFsdWU7CisgICAg
dmFsdWUgPSBzdHJ0b2QgKHN0cmluZywgJnRlcm0pOworICAgIGlmICh2YWx1ZSAhPSA2OSB8fCB0
ZXJtICE9IChzdHJpbmcgKyA0KSkKKyAgICAgIHJldHVybiAxOworICB9CisKKyAgeworICAgIC8q
IFVuZGVyIFNvbGFyaXMgMi40LCBzdHJ0b2QgcmV0dXJucyB0aGUgd3JvbmcgdmFsdWUgZm9yIHRo
ZQorICAgICAgIHRlcm1pbmF0aW5nIGNoYXJhY3RlciB1bmRlciBzb21lIGNvbmRpdGlvbnMuICAq
LworICAgIGNoYXIgKnN0cmluZyA9ICJOYU4iOworICAgIGNoYXIgKnRlcm07CisgICAgc3RydG9k
IChzdHJpbmcsICZ0ZXJtKTsKKyAgICBpZiAodGVybSAhPSBzdHJpbmcgJiYgKih0ZXJtIC0gMSkg
PT0gMCkKKyAgICAgIHJldHVybiAxOworICB9CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lm
IGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9mdW5jX3N0cnRvZD15
ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19zdHJ0b2Q9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBj
b3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNv
bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitm
aQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j
dl9mdW5jX3N0cnRvZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Z1bmNfc3RydG9kIiA+JjY7IH0K
K2lmIHRlc3QgJGFjX2N2X2Z1bmNfc3RydG9kID0gbm87IHRoZW4KKyAgY2FzZSAiICRMSUJPQkpT
ICIgaW4KKyAgKiIgc3RydG9kLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElC
T0JKUyBzdHJ0b2QuJGFjX29iamV4dCIKKyA7OworZXNhYworCithY19mbl9jX2NoZWNrX2Z1bmMg
IiRMSU5FTk8iICJwb3ciICJhY19jdl9mdW5jX3BvdyIKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19w
b3ciID0geHllczsgdGhlbiA6CisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2Z1bmNfcG93ID0gbm87
IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgcG93IGluIC1sbSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgcG93IGluIC1s
bS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfbV9wb3crOn0gZmFsc2U7IHRoZW4gOgorICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJT
PSRMSUJTCitMSUJTPSItbG0gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u
ZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkg
R0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJl
Y2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRp
biBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8K
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHBvdyAoKTsKK2lu
dAorbWFpbiAoKQoreworcmV0dXJuIHBvdyAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VP
RgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfbV9w
b3c9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9tX3Bvdz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25m
dGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbV9wb3ci
ID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfbV9wb3ciID4mNjsgfQoraWYgdGVzdCAieCRhY19j
dl9saWJfbV9wb3ciID0geHllczsgdGhlbiA6CisgIFBPV19MSUI9LWxtCitlbHNlCisgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGZpbmQg
bGlicmFyeSBjb250YWluaW5nIGRlZmluaXRpb24gb2YgcG93IiA+JjUKKyRhc19lY2hvICIkYXNf
bWU6IFdBUk5JTkc6IGNhbm5vdCBmaW5kIGxpYnJhcnkgY29udGFpbmluZyBkZWZpbml0aW9uIG9m
IHBvdyIgPiYyO30KK2ZpCisKK2ZpCisKK2ZpCisKK2ZvciBhY19mdW5jIGluICBcCisgICAgICAg
ICAgICAgICAgYWxhcm0gYXRleGl0IGJ6ZXJvIGNsb2NrX2dldHRpbWUgZHVwMiBmZGF0YXN5bmMg
ZnRydW5jYXRlIFwKKyAgICAgICAgICAgICAgICBnZXRjd2QgZ2V0aG9zdGJ5bmFtZSBnZXRob3N0
bmFtZSBnZXRwYWdlc2l6ZSBnZXR0aW1lb2ZkYXkgXAorICAgICAgICAgICAgICAgIGluZXRfbnRv
YSBpc2FzY2lpIGxvY2FsdGltZV9yIG1lbWNociBtZW1tb3ZlIG1lbXNldCBta2RpciBcCisgICAg
ICAgICAgICAgICAgbWtmaWZvIG11bm1hcCBwYXRoY29uZiByZWFscGF0aCByZWdjb21wIHJtZGly
IHNlbGVjdCBzZXRlbnYgXAorICAgICAgICAgICAgICAgIHNvY2tldCBzdHJjYXNlY21wIHN0cmNo
ciBzdHJjc3BuIHN0cmR1cCBzdHJlcnJvciBzdHJuZHVwIFwKKyAgICAgICAgICAgICAgICBzdHJw
YnJrIHN0cnJjaHIgc3Ryc3BuIHN0cnN0ciBzdHJ0b2wgc3RydG91bCBzdHJ0b3VsbCB0enNldCBc
CisgICAgICAgICAgICAgICAgdW5hbWUgXAorCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8g
ImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIk
TElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19h
Y192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisj
ZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YK
KworZmkKK2RvbmUKKworCitjYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKKyMgVGhpcyBmaWxlIGlz
IGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQorIyB0
ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29u
ZmlndXJlCisjIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0
aW9uIC0tY29uZmlnLWNhY2hlLgorIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMu
ICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndAorIyB3YW50IHRvIGtlZXAsIHlvdSBt
YXkgcmVtb3ZlIG9yIGVkaXQgaXQuCisjCisjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVu
dGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdAorIyB0aGUgLS1yZWNoZWNrIG9w
dGlvbiB0byByZXJ1biBjb25maWd1cmUuCisjCisjIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMg
KHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4KKyMgbG9hZGluZyB0aGlzIGZp
bGUsIG90aGVyICp1bnNldCogYGFjX2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKKyMgZm9s
bG93aW5nIHZhbHVlcy4KKworX0FDRU9GCisKKyMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGlu
ZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCisjIGJ1dCB3ZSBrbm93
IG9mIG5vIHdvcmthcm91bmQgdGhhdCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50
LgorIyBTbywgd2Uga2lsbCB2YXJpYWJsZXMgY29udGFpbmluZyBuZXdsaW5lcy4KKyMgVWx0cml4
IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5
LAorIyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFz
c2lnbiB0byB0aGUgdmFycy4KKygKKyAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAt
biAncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdgOyBkbworICAgIGV2YWwg
YWNfdmFsPVwkJGFjX3ZhcgorICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAorICAgICoke2FzX25sfSop
CisgICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFy
IGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNo
ZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKKyAgICAgIGVz
YWMKKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAj
KAorICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKyAg
ICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7CisgICAgICBlc2FjIDs7
CisgICAgZXNhYworICBkb25lCisKKyAgKHNldCkgMj4mMSB8CisgICAgY2FzZSAkYXNfbmxgKGFj
X3NwYWNlPScgJzsgc2V0KSAyPiYxYCBpbiAjKAorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikK
KyAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBk
b3VibGUtcXVvdGUKKyAgICAgICMgc3Vic3RpdHV0aW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5k
IHNlZCB0dXJucyBcXCBpbnRvIFwuCisgICAgICBzZWQgLW4gXAorCSJzLycvJ1xcXFwnJy9nOwor
CSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwp
L1xcMT0nXFwyJy9wIgorICAgICAgOzsgIygKKyAgICAqKQorICAgICAgIyBgc2V0JyBxdW90ZXMg
Y29ycmVjdGx5IGFzIHJlcXVpcmVkIGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KKyAg
ICAgIHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCisg
ICAgICA7OworICAgIGVzYWMgfAorICAgIHNvcnQKKykgfAorICBzZWQgJworICAgICAvXmFjX2N2
X2Vudl8vYiBlbmQKKyAgICAgdCBjbGVhcgorICAgICA6Y2xlYXIKKyAgICAgcy9eXChbXj1dKlwp
PVwoLipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8fCAmLworICAgICB0IGVuZAor
ICAgICBzL15cKFtePV0qXCk9XCguKlwpJC9cMT0ke1wxPVwyfS8KKyAgICAgOmVuZCcgPj5jb25m
Y2FjaGUKK2lmIGRpZmYgIiRjYWNoZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0
aGVuIDo7IGVsc2UKKyAgaWYgdGVzdCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICAgaWYgdGVz
dCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCI7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUi
ID4mNQorJGFzX2VjaG8gIiRhc19tZTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9
CisgICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxlIiB8fCB0ZXN0IC1oICIkY2FjaGVfZmls
ZSI7IHRoZW4KKwljYXQgY29uZmNhY2hlID4iJGNhY2hlX2ZpbGUiCisgICAgICBlbHNlCisgICAg
ICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygKKyAgICAgICAgKi8qIHwgPzoqKQorCSAgbXYgLWYg
Y29uZmNhY2hlICIkY2FjaGVfZmlsZSIkJCAmJgorCSAgbXYgLWYgIiRjYWNoZV9maWxlIiQkICIk
Y2FjaGVfZmlsZSIgOzsgIygKKyAgICAgICAgKikKKwkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hl
X2ZpbGUiIDs7CisJZXNhYworICAgICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBj
YWNoZSAkY2FjaGVfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBub3QgdXBkYXRpbmcgdW53
cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAgZmkKK2ZpCitybSAtZiBjb25mY2Fj
aGUKKwordGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZp
eAorIyBMZXQgbWFrZSBleHBhbmQgZXhlY19wcmVmaXguCit0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9
IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCisKK0RFRlM9LURIQVZFX0NPTkZJR19I
CisKK2FjX2xpYm9ianM9CithY19sdGxpYm9ianM9CitVPQorZm9yIGFjX2kgaW4gOiAkTElCT0JK
UzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlCisgICMgMS4gUmVtb3ZlIHRoZSBl
eHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KKyAgYWNfc2NyaXB0PSdzL1wk
VVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nCisgIGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBz
ZWQgIiRhY19zY3JpcHQiYAorICAjIDIuIFByZXBlbmQgTElCT0JKRElSLiAgV2hlbiB1c2VkIHdp
dGggYXV0b21ha2U+PTEuMTAgTElCT0JKRElSCisgICMgICAgd2lsbCBiZSBzZXQgdG8gdGhlIGRp
cmVjdG9yeSB3aGVyZSBMSUJPQkpTIG9iamVjdHMgYXJlIGJ1aWx0LgorICBhc19mbl9hcHBlbmQg
YWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0IgorICBhc19mbl9h
cHBlbmQgYWNfbHRsaWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pIickVS5sbycKK2RvbmUKK0xJ
Qk9CSlM9JGFjX2xpYm9ianMKKworTFRMSUJPQkpTPSRhY19sdGxpYm9ianMKKworCisKKzogIiR7
Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9IgorYWNfd3JpdGVfZmFpbD0wCithY19jbGVh
bl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcworYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9m
aWxlcyAkQ09ORklHX1NUQVRVUyIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogY3Jl
YXRpbmcgJENPTkZJR19TVEFUVVMiID4mNjt9Cithc193cml0ZV9mYWlsPTAKK2NhdCA+JENPTkZJ
R19TVEFUVVMgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCisjISAkU0hFTEwKKyMgR2VuZXJh
dGVkIGJ5ICRhc19tZS4KKyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBj
b25maWd1cmF0aW9uLgorIyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1
c2VmdWwgZm9yIGRlYnVnZ2luZworIyBjb25maWd1cmUsIGlzIGluIGNvbmZpZy5sb2cgaWYgaXQg
ZXhpc3RzLgorCitkZWJ1Zz1mYWxzZQorYWNfY3NfcmVjaGVjaz1mYWxzZQorYWNfY3Nfc2lsZW50
PWZhbHNlCisKK1NIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9CitleHBvcnQgU0hFTEwKK19B
U0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQor
IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjCisj
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUK
K0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKK2lmIHRlc3QgLW4gIiR7
WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6
CisgIGVtdWxhdGUgc2gKKyAgTlVMTENNRD06CisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2gg
ZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAorICAjIGlzIGNvbnRyYXJ5IHRv
IG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgorICBhbGlhcyAtZyAnJHsxKyIkQCJ9
Jz0nIiRAIicKKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKK2Vsc2UKKyAgY2FzZSBgKHNldCAtbykg
Mj4vZGV2L251bGxgIGluICMoCisgICpwb3NpeCopIDoKKyAgICBzZXQgLW8gcG9zaXggOzsgIygK
KyAgKikgOgorICAgICA7OworZXNhYworZmkKKworCithc19ubD0nCisnCitleHBvcnQgYXNfbmwK
KyMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmlu
dGYuCithc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcJworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCith
c19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwor
IyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9n
cmFtIG9uIFNvbGFyaXMsCisjIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3MgZm9yIGJhc2ggb3Ig
enNoLgoraWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAorICAgICYmICh0
ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7
IHRoZW4KKyAgYXNfZWNobz0ncHJpbnQgLXIgLS0nCisgIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0t
JworZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9k
ZXYvbnVsbDsgdGhlbgorICBhc19lY2hvPSdwcmludGYgJXNcbicKKyAgYXNfZWNob19uPSdwcmlu
dGYgJXMnCitlbHNlCisgIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8p
IDI+L2Rldi9udWxsYCIgPSAiWC1uICRhc19lY2hvIjsgdGhlbgorICAgIGFzX2VjaG9fYm9keT0n
ZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInCisgICAgYXNfZWNob19uPScvdXNyL3Vj
Yi9lY2hvIC1uJworICBlbHNlCisgICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAi
WFxcKC4qXFwpIicKKyAgICBhc19lY2hvX25fYm9keT0nZXZhbAorICAgICAgYXJnPSQxOworICAg
ICAgY2FzZSAkYXJnIGluICMoCisgICAgICAqIiRhc19ubCIqKQorCWV4cHIgIlgkYXJnIiA6ICJY
XFwoLipcXCkkYXNfbmwiOworCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCki
YDs7CisgICAgICBlc2FjOworICAgICAgZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIgfCB0ciAt
ZCAiJGFzX25sIgorICAgICcKKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkKKyAgICBhc19lY2hv
X249J3NoIC1jICRhc19lY2hvX25fYm9keSBhc19lY2hvJworICBmaQorICBleHBvcnQgYXNfZWNo
b19ib2R5CisgIGFzX2VjaG89J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycKK2ZpCisKKyMg
VGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9
IiAhPSBzZXQ7IHRoZW4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsg
RlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7CisgICAgKFBBVEg9Jy9i
aW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAg
IFBBVEhfU0VQQVJBVE9SPSc7JworICB9CitmaQorCisKKyMgSUZTCisjIFdlIG5lZWQgc3BhY2Us
IHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcwor
IyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10
YWIuCisjIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3
b3VsZCBkaXNhYmxlIHdvcmQKKyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZh
bHVlLikKK0lGUz0iICIiCSRhc19ubCIKKworIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRo
ZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KK2FzX215c2VsZj0K
K2Nhc2UgJDAgaW4gIygoCisgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKKyAgKikgYXNfc2F2
ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8K
KyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAg
IHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCisg
IGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICAgICA7OworZXNhYworIyBXZSBkaWQgbm90IGZp
bmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwor
IyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguCitpZiB0
ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCisgIGFzX215c2VsZj0kMAorZmkKK2lmIHRlc3Qg
ISAtZiAiJGFzX215c2VsZiI7IHRoZW4KKyAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBj
YW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIK
KyAgZXhpdCAxCitmaQorCisjIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFu
ZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluCisjIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRv
IG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCisjIHN1cHByZXNz
ZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNvdWxkCisj
IHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0LgorZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBF
TlYgTUFJTCBNQUlMUEFUSAorZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0gPSB4c2V0IFwK
KyAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5z
ZXQgJGFzX3ZhciB8fCA6Citkb25lCitQUzE9JyQgJworUFMyPSc+ICcKK1BTND0nKyAnCisKKyMg
TkxTIG51aXNhbmNlcy4KK0xDX0FMTD1DCitleHBvcnQgTENfQUxMCitMQU5HVUFHRT1DCitleHBv
cnQgTEFOR1VBR0UKKworIyBDRFBBVEguCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEg
JiYgdW5zZXQgQ0RQQVRICisKKworIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBM
T0dfRkRdCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT3V0
cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFu
ZCBMT0dfRkQgYXJlCisjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZE
LCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKKyMgc2NyaXB0IHdpdGggU1RBVFVT
LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCithc19mbl9lcnJvciAoKQoreworICBhc19zdGF0dXM9
JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7
IHRoZW4KKyAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFz
X2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CisgIGZpCisgICRhc19lY2hvICIkYXNf
bWU6IGVycm9yOiAkMiIgPiYyCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cworfSAjIGFzX2ZuX2Vy
cm9yCisKKworIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUworIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuCithc19mbl9zZXRfc3Rh
dHVzICgpCit7CisgIHJldHVybiAkMQorfSAjIGFzX2ZuX3NldF9zdGF0dXMKKworIyBhc19mbl9l
eGl0IFNUQVRVUworIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNU
QVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUiIGNvbnRleHQuCithc19mbl9leGl0
ICgpCit7CisgIHNldCArZQorICBhc19mbl9zZXRfc3RhdHVzICQxCisgIGV4aXQgJDEKK30gIyBh
c19mbl9leGl0CisKKyMgYXNfZm5fdW5zZXQgVkFSCisjIC0tLS0tLS0tLS0tLS0tLQorIyBQb3J0
YWJseSB1bnNldCBWQVIuCithc19mbl91bnNldCAoKQoreworICB7IGV2YWwgJDE9OyB1bnNldCAk
MTt9Cit9Cithc191bnNldD1hc19mbl91bnNldAorIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRo
ZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQorIyBhZHZhbnRh
Z2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFy
IGdyb3d0aCBvdmVyCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwg
cXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCisjIGltcGxlbWVudGF0aW9ucy4KK2lm
IChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rl
di9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCisgIHsKKyAgICBldmFsICQx
Kz1cJDIKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXBwZW5kICgpCisgIHsKKyAgICBldmFsICQxPVwk
JDFcJDIKKyAgfQorZmkgIyBhc19mbl9hcHBlbmQKKworIyBhc19mbl9hcml0aCBBUkcuLi4KKyMg
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRo
ZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKKyMgZ2xvYmFsICRhc192YWwuIFRh
a2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50
cworIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KK2lmIChldmFsICJ0
ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgorICBldmFsICdhc19m
bl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPSQoKCAkKiApKQorICB9JworZWxzZQorICBhc19m
bl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWAK
KyAgfQorZmkgIyBhc19mbl9hcml0aAorCisKK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVs
bCAyPiYxICYmCisgICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsg
dGhlbgorICBhc19leHByPWV4cHIKK2Vsc2UKKyAgYXNfZXhwcj1mYWxzZQorZmkKKworaWYgKGJh
c2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4m
MWAiID0gIlgvIjsgdGhlbgorICBhc19iYXNlbmFtZT1iYXNlbmFtZQorZWxzZQorICBhc19iYXNl
bmFtZT1mYWxzZQorZmkKKworaWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFz
X2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFzX2Rpcm5hbWU9ZGlybmFtZQor
ZWxzZQorICBhc19kaXJuYW1lPWZhbHNlCitmaQorCithc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIk
MCIgfHwKKyRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcCisJIFgi
JDAiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVs
bCB8fAorJGFzX2VjaG8gWC8iJDAiIHwKKyAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyok
L3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwvXChcL1wvXCkkL3sKKwkgICAg
cy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwvXChcL1wpLioveworCSAgICBzLy9cMS8KKwkg
ICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisKKyMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hh
cmFjdGVyIFJhbmdlcy4KK2FzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
JworYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCithc19jcl9MZXR0
ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4
OScKK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cworCitFQ0hPX0M9IEVD
SE9fTj0gRUNIT19UPQorY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKKy1uKikKKyAgY2FzZSBg
ZWNobyAneHlcYydgIGluCisgICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0
YWIgY2hhcmFjdGVyLgorICB4eSkgIEVDSE9fQz0nXGMnOzsKKyAgKikgICBlY2hvIGBlY2hvIGtz
aDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbAorICAgICAgIEVDSE9fVD0nCSc7OworICBl
c2FjOzsKKyopCisgIEVDSE9fTj0nLW4nOzsKK2VzYWMKKworcm0gLWYgY29uZiQkIGNvbmYkJC5l
eGUgY29uZiQkLmZpbGUKK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgorICBybSAtZiBjb25m
JCQuZGlyL2NvbmYkJC5maWxlCitlbHNlCisgIHJtIC1mIGNvbmYkJC5kaXIKKyAgbWtkaXIgY29u
ZiQkLmRpciAyPi9kZXYvbnVsbAorZmkKK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251
bGw7IHRoZW4KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVu
CisgICAgYXNfbG5fcz0nbG4gLXMnCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hh
czoKKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUg
ZGlyJyBmYWlsLgorICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1z
JyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgorICAgICMgSW4gYm90aCBjYXNlcywgd2Ug
aGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuCisgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQk
LmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAorICAgICAgYXNfbG5f
cz0nY3AgLXAnCisgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVu
CisgICAgYXNfbG5fcz1sbgorICBlbHNlCisgICAgYXNfbG5fcz0nY3AgLXAnCisgIGZpCitlbHNl
CisgIGFzX2xuX3M9J2NwIC1wJworZmkKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5k
aXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKK3JtZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwK
KworCisjIGFzX2ZuX21rZGlyX3AKKyMgLS0tLS0tLS0tLS0tLQorIyBDcmVhdGUgIiRhc19kaXIi
IGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuCithc19mbl9t
a2Rpcl9wICgpCit7CisKKyAgY2FzZSAkYXNfZGlyIGluICMoCisgIC0qKSBhc19kaXI9Li8kYXNf
ZGlyOzsKKyAgZXNhYworICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8
IHsKKyAgICBhc19kaXJzPQorICAgIHdoaWxlIDo7IGRvCisgICAgICBjYXNlICRhc19kaXIgaW4g
IygKKyAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydc
XFxcXFxcXCcnL2ciYDs7ICMnKAorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKKyAgICAgIGVz
YWMKKyAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiCisgICAgICBhc19kaXI9YCRh
c19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAorJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlte
L11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBc
fCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgv
XCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgiJGFzX2RpciIgfAorICAgIHNlZCAn
L15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJ
ICB9CisJICAvXlhcKFwvXC9cKVteL10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJ
ICAvXlhcKFwvXC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wp
LioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgICAgICB0
ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhaworICAgIGRvbmUKKyAgICB0ZXN0IC16ICIkYXNfZGly
cyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwg
YXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCisKKworfSAj
IGFzX2ZuX21rZGlyX3AKK2lmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfbWtk
aXJfcD0nbWtkaXIgLXAgIiRhc19kaXIiJworZWxzZQorICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIg
Li8tcAorICBhc19ta2Rpcl9wPWZhbHNlCitmaQorCitpZiB0ZXN0IC14IC8gPi9kZXYvbnVsbCAy
PiYxOyB0aGVuCisgIGFzX3Rlc3RfeD0ndGVzdCAteCcKK2Vsc2UKKyAgaWYgbHMgLWRMIC8gPi9k
ZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgYXNfbHNfTF9vcHRpb249TAorICBlbHNlCisgICAgYXNf
bHNfTF9vcHRpb249CisgIGZpCisgIGFzX3Rlc3RfeD0nCisgICAgZXZhbCBzaCAtYyAnXCcnCisg
ICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4KKwl0ZXN0IC1kICIkMS8uIjsKKyAgICAgIGVsc2UK
KwljYXNlICQxIGluICMoCisJLSopc2V0ICIuLyQxIjs7CisJZXNhYzsKKwljYXNlIGBscyAtbGQn
JGFzX2xzX0xfb3B0aW9uJyAiJDEiIDI+L2Rldi9udWxsYCBpbiAjKCgKKwk/Pz9bc3hdKik6Ozsq
KWZhbHNlOztlc2FjO2ZpCisgICAgJ1wnJyBzaAorICAnCitmaQorYXNfZXhlY3V0YWJsZV9wPSRh
c190ZXN0X3gKKworIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlk
IENQUCBuYW1lLgorYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRhc19j
cl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKKworIyBTZWQgZXhwcmVzc2lvbiB0
byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCithc190cl9zaD0iZXZh
bCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisKK2V4ZWMgNj4mMQor
IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE1haW4gYm9keSBv
ZiAkQ09ORklHX1NUQVRVUyBzY3JpcHQuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAjIworX0FTRU9GCit0ZXN0ICRhc193cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAr
eCAkQ09ORklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTEKKworY2F0ID4+JENPTkZJR19TVEFU
VVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorIyBTYXZlIHRoZSBsb2cgbWVzc2FnZSwg
dG8ga2VlcCAkMCBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5kIHRvCisjIHJlcG9ydCBhY3R1YWwg
aW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKKyMgdmFs
dWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCithY19sb2c9IgorVGhpcyBmaWxlIHdhcyBleHRl
bmRlZCBieSBYZW4gSHlwZXJ2aXNvciAkYXNfbWUgNC4yLCB3aGljaCB3YXMKK2dlbmVyYXRlZCBi
eSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworCisgIENP
TkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKKyAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJ
R19IRUFERVJTCisgIENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdfTElOS1MKKyAgQ09ORklHX0NP
TU1BTkRTID0gJENPTkZJR19DT01NQU5EUworICAkICQwICRACisKK29uIGAoaG9zdG5hbWUgfHwg
dW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAorIgorCitfQUNFT0YKKworY2FzZSAkYWNf
Y29uZmlnX2ZpbGVzIGluICoiCisiKikgc2V0IHggJGFjX2NvbmZpZ19maWxlczsgc2hpZnQ7IGFj
X2NvbmZpZ19maWxlcz0kKjs7Citlc2FjCisKK2Nhc2UgJGFjX2NvbmZpZ19oZWFkZXJzIGluICoi
CisiKikgc2V0IHggJGFjX2NvbmZpZ19oZWFkZXJzOyBzaGlmdDsgYWNfY29uZmlnX2hlYWRlcnM9
JCo7OworZXNhYworCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRl
X2ZhaWw9MQorIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0dXMgd2FzIG1hZGUgZm9yLgorY29uZmln
X2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIgorY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVh
ZGVycyIKKworX0FDRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193
cml0ZV9mYWlsPTEKK2FjX2NzX3VzYWdlPSJcCitcYCRhc19tZScgaW5zdGFudGlhdGVzIGZpbGVz
IGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGFjdGlvbnMKK2Zyb20gdGVtcGxhdGVzIGFjY29yZGlu
ZyB0byB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiAgVW5sZXNzIHRoZSBmaWxlcworYW5kIGFj
dGlvbnMgYXJlIHNwZWNpZmllZCBhcyBUQUdzLCBhbGwgYXJlIGluc3RhbnRpYXRlZCBieSBkZWZh
dWx0LgorCitVc2FnZTogJDAgW09QVElPTl0uLi4gW1RBR10uLi4KKworICAtaCwgLS1oZWxwICAg
ICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC1WLCAtLXZlcnNpb24gICAgcHJpbnQg
dmVyc2lvbiBudW1iZXIgYW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIHRoZW4gZXhpdAorICAg
ICAgLS1jb25maWcgICAgIHByaW50IGNvbmZpZ3VyYXRpb24sIHRoZW4gZXhpdAorICAtcSwgLS1x
dWlldCwgLS1zaWxlbnQKKyAgICAgICAgICAgICAgICAgICBkbyBub3QgcHJpbnQgcHJvZ3Jlc3Mg
bWVzc2FnZXMKKyAgLWQsIC0tZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVz
CisgICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBieSByZWNvbmZpZ3VyaW5nIGluIHRo
ZSBzYW1lIGNvbmRpdGlvbnMKKyAgICAgIC0tZmlsZT1GSUxFWzpURU1QTEFURV0KKyAgICAgICAg
ICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIEZJTEUKKyAgICAg
IC0taGVhZGVyPUZJTEVbOlRFTVBMQVRFXQorICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRl
IHRoZSBjb25maWd1cmF0aW9uIGhlYWRlciBGSUxFCisKK0NvbmZpZ3VyYXRpb24gZmlsZXM6Cisk
Y29uZmlnX2ZpbGVzCisKK0NvbmZpZ3VyYXRpb24gaGVhZGVyczoKKyRjb25maWdfaGVhZGVycwor
CitSZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhlbnNvdXJjZS5jb20+LiIKKworX0FD
RU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2Fj
X2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87
IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCithY19jc192ZXJzaW9uPSJcXAorWGVuIEh5cGVydmlz
b3IgY29uZmlnLnN0YXR1cyA0LjIKK2NvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUg
QXV0b2NvbmYgMi42OCwKKyAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCisKK0Nv
cHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK1RoaXMgY29u
ZmlnLnN0YXR1cyBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBh
bmQgbW9kaWZ5IGl0LiIKKworYWNfcHdkPSckYWNfcHdkJworc3JjZGlyPSckc3JjZGlyJworSU5T
VEFMTD0nJElOU1RBTEwnCit0ZXN0IC1uICJcJEFXSyIgfHwgQVdLPWF3aworX0FDRU9GCisKK2Nh
dCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyMgVGhlIGRl
ZmF1bHQgbGlzdHMgYXBwbHkgaWYgdGhlIHVzZXIgZG9lcyBub3Qgc3BlY2lmeSBhbnkgZmlsZS4K
K2FjX25lZWRfZGVmYXVsdHM9Ogord2hpbGUgdGVzdCAkIyAhPSAwCitkbworICBjYXNlICQxIGlu
CisgIC0tKj0/KikKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAor
ICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdYW149XSo9XCguKlwpJ2AKKyAgICBhY19zaGlm
dD06CisgICAgOzsKKyAgLS0qPSkKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149
XSpcKT0nYAorICAgIGFjX29wdGFyZz0KKyAgICBhY19zaGlmdD06CisgICAgOzsKKyAgKikKKyAg
ICBhY19vcHRpb249JDEKKyAgICBhY19vcHRhcmc9JDIKKyAgICBhY19zaGlmdD1zaGlmdAorICAg
IDs7CisgIGVzYWMKKworICBjYXNlICRhY19vcHRpb24gaW4KKyAgIyBIYW5kbGluZyBvZiB0aGUg
b3B0aW9ucy4KKyAgLXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAt
LXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCisgICAgYWNfY3NfcmVjaGVjaz06IDs7CisgIC0t
dmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0t
diB8IC1WICkKKyAgICAkYXNfZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDs7CisgIC0tY29u
ZmlnIHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29uIHwgLS1jbyB8IC0tYyApCisgICAgJGFzX2Vj
aG8gIiRhY19jc19jb25maWciOyBleGl0IDs7CisgIC0tZGVidWcgfCAtLWRlYnUgfCAtLWRlYiB8
IC0tZGUgfCAtLWQgfCAtZCApCisgICAgZGVidWc9OiA7OworICAtLWZpbGUgfCAtLWZpbCB8IC0t
ZmkgfCAtLWYgKQorICAgICRhY19zaGlmdAorICAgIGNhc2UgJGFjX29wdGFyZyBpbgorICAgICpc
JyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxc
JycvZyJgIDs7CisgICAgJycpIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGZpbGUgYXJndW1lbnQi
IDs7CisgICAgZXNhYworICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFy
ZyciCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGVhZGVyIHwgLS1oZWFkZSB8
IC0taGVhZCB8IC0taGVhICkKKyAgICAkYWNfc2hpZnQKKyAgICBjYXNlICRhY19vcHRhcmcgaW4K
KyAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydc
XFxcXFxcXCcnL2ciYCA7OworICAgIGVzYWMKKyAgICBhc19mbl9hcHBlbmQgQ09ORklHX0hFQURF
UlMgIiAnJGFjX29wdGFyZyciCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGUg
fCAtLWgpCisgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKKyAgICBh
c19mbl9lcnJvciAkPyAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKK1RyeSBcYCQwIC0taGVscCcg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uIjs7CisgIC0taGVscCB8IC0taGVsIHwgLWggKQorICAgICRh
c19lY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDs7CisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8
IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwg
LS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKKyAgICBhY19jc19zaWxlbnQ9
OiA7OworCisgICMgVGhpcyBpcyBhbiBlcnJvci4KKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJl
Y29nbml6ZWQgb3B0aW9uOiBcYCQxJworVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4iIDs7CisKKyAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCisg
ICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsKKworICBlc2FjCisgIHNoaWZ0Citkb25lCisK
K2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQorCitpZiAkYWNfY3Nfc2lsZW50OyB0aGVuCisgIGV4
ZWMgNj4vZGV2L251bGwKKyAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1cmVf
ZXh0cmFfYXJncyAtLXNpbGVudCIKK2ZpCisKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMg
PDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitpZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KKyAg
c2V0IFggJyRTSEVMTCcgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0
cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgorICBzaGlmdAorICBcJGFzX2VjaG8g
InJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgorICBDT05GSUdfU0hFTEw9JyRT
SEVMTCcKKyAgZXhwb3J0IENPTkZJR19TSEVMTAorICBleGVjICJcJEAiCitmaQorCitfQUNFT0YK
K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2V4ZWMg
NT4+Y29uZmlnLmxvZworeworICBlY2hvCisgIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3Mv
Li4uJC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YCisjIyBSdW5uaW5nICRhc19tZS4gIyMKK19BU0JP
WAorICAkYXNfZWNobyAiJGFjX2xvZyIKK30gPiY1CisKK19BQ0VPRgorY2F0ID4+JENPTkZJR19T
VEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitfQUNFT0YKKworY2F0ID4+JENPTkZJ
R19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorCisjIEhhbmRsaW5nIG9mIGFy
Z3VtZW50cy4KK2ZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cworZG8K
KyAgY2FzZSAkYWNfY29uZmlnX3RhcmdldCBpbgorICAgICIuLi9jb25maWcvVG9vbHMubWsiKSBD
T05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgLi4vY29uZmlnL1Rvb2xzLm1rIiA7OworICAgICJj
b25maWcuaCIpIENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgY29uZmlnLmgiIDs7CisK
KyAgKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJn
ZXQnIiAiJExJTkVOTyIgNTs7CisgIGVzYWMKK2RvbmUKKworCisjIElmIHRoZSB1c2VyIGRpZCBu
b3QgdXNlIHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMgdG8gaW5zdGFudGlhdGUs
CisjIHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRo
YXQgYXJlIG5vdC4KKyMgV2UgdXNlIHRoZSBsb25nIGZvcm0gZm9yIHRoZSBkZWZhdWx0IGFzc2ln
bm1lbnQgYmVjYXVzZSBvZiBhbiBleHRyZW1lbHkKKyMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4x
LjMuCitpZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbgorICB0ZXN0ICIke0NPTkZJR19GSUxFUytz
ZXR9IiA9IHNldCB8fCBDT05GSUdfRklMRVM9JGNvbmZpZ19maWxlcworICB0ZXN0ICIke0NPTkZJ
R19IRUFERVJTK3NldH0iID0gc2V0IHx8IENPTkZJR19IRUFERVJTPSRjb25maWdfaGVhZGVycwor
ZmkKKworIyBIYXZlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgY29udmVuaWVuY2UuICBNYWtl
IGl0IGluIHRoZSBidWlsZCB0cmVlCisjIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlYXNv
biBhZ2FpbnN0IGhhdmluZyBpdCBoZXJlLCBhbmQgaW4gYWRkaXRpb24sCisjIGNyZWF0aW5nIGFu
ZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuCisj
IEhvb2sgZm9yIGl0cyByZW1vdmFsIHVubGVzcyBkZWJ1Z2dpbmcuCisjIE5vdGUgdGhhdCB0aGVy
ZSBpcyBhIHNtYWxsIHdpbmRvdyBpbiB3aGljaCB0aGUgZGlyZWN0b3J5IHdpbGwgbm90IGJlIGNs
ZWFuZWQ6CisjIGFmdGVyIGl0cyBjcmVhdGlvbiBidXQgYmVmb3JlIGl0cyBuYW1lIGhhcyBiZWVu
IGFzc2lnbmVkIHRvIGAkdG1wJy4KKyRkZWJ1ZyB8fAoreworICB0bXA9IGFjX3RtcD0KKyAgdHJh
cCAnZXhpdF9zdGF0dXM9JD8KKyAgOiAiJHthY190bXA6PSR0bXB9IgorICB7IHRlc3QgISAtZCAi
JGFjX3RtcCIgfHwgcm0gLWZyICIkYWNfdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cworJyAw
CisgIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1Cit9CisjIENyZWF0ZSBhIChzZWN1cmUp
IHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4KKworeworICB0bXA9YCh1bWFzayAwNzcgJiYg
bWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKKyAgdGVzdCAtZCAiJHRt
cCIKK30gIHx8Cit7CisgIHRtcD0uL2NvbmYkJC0kUkFORE9NCisgICh1bWFzayAwNzcgJiYgbWtk
aXIgIiR0bXAiKQorfSB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFy
eSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUKK2FjX3RtcD0kdG1wCisKKyMgU2V0IHVwIHRo
ZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2VjdGlvbi4KKyMgTm8gbmVlZCB0byBnZW5lcmF0
ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCisjIFRoaXMgaGFwcGVucyBmb3Ig
aW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oJy4KK2lmIHRlc3QgLW4gIiRD
T05GSUdfRklMRVMiOyB0aGVuCisKKworYWNfY3I9YGVjaG8gWCB8IHRyIFggJ1wwMTUnYAorIyBP
biBjeWd3aW4sIGJhc2ggY2FuIGVhdCBcciBpbnNpZGUgYGAgaWYgdGhlIHVzZXIgcmVxdWVzdGVk
IGlnbmNyLgorIyBCdXQgd2Uga25vdyBvZiBubyBvdGhlciBzaGVsbCB3aGVyZSBhY19jciB3b3Vs
ZCBiZSBlbXB0eSBhdCB0aGlzCisjIHBvaW50LCBzbyB3ZSBjYW4gdXNlIGEgYmFzaGlzbSBhcyBh
IGZhbGxiYWNrLgoraWYgdGVzdCAieCRhY19jciIgPSB4OyB0aGVuCisgIGV2YWwgYWNfY3I9XCRc
J1xcclwnCitmaQorYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJhXHJiIiB9JyA8
L2Rldi9udWxsIDI+L2Rldi9udWxsYAoraWYgdGVzdCAiJGFjX2NzX2F3a19jciIgPSAiYSR7YWNf
Y3J9YiI7IHRoZW4KKyAgYWNfY3NfYXdrX2NyPSdcXHInCitlbHNlCisgIGFjX2NzX2F3a19jcj0k
YWNfY3IKK2ZpCisKK2VjaG8gJ0JFR0lOIHsnID4iJGFjX3RtcC9zdWJzMS5hd2siICYmCitfQUNF
T0YKKworCit7CisgIGVjaG8gImNhdCA+Y29uZiQkc3Vicy5hd2sgPDxfQUNFT0YiICYmCisgIGVj
aG8gIiRhY19zdWJzdF92YXJzIiB8IHNlZCAncy8uKi8mISQmJGFjX2RlbGltLycgJiYKKyAgZWNo
byAiX0FDRU9GIgorfSA+Y29uZiQkc3Vicy5zaCB8fAorICBhc19mbl9lcnJvciAkPyAiY291bGQg
bm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CithY19kZWxpbV9udW09YGVjaG8g
IiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYAorYWNfZGVsaW09JyUhXyEjICcKK2ZvciBh
Y19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSA6OyBkbworICAuIC4v
Y29uZiQkc3Vicy5zaCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09O
RklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKworICBhY19kZWxpbV9uPWBzZWQgLW4gInMvLiokYWNf
ZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYAorICBpZiB0ZXN0ICRhY19k
ZWxpbV9uID0gJGFjX2RlbGltX251bTsgdGhlbgorICAgIGJyZWFrCisgIGVsaWYgJGFjX2xhc3Rf
dHJ5OyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RB
VFVTIiAiJExJTkVOTyIgNQorICBlbHNlCisgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVs
aW0gXyRhY19kZWxpbSEhICIKKyAgZmkKK2RvbmUKK3JtIC1mIGNvbmYkJHN1YnMuc2gKKworY2F0
ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitjYXQgPj4iXCRh
Y190bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCitfQUNFT0YKK3NlZCAtbiAnCitoCitzL14v
U1siLzsgcy8hLiovIl09LworcAorZworcy9eW14hXSohLy8KKzpyZXBsCit0IHJlcGwKK3MvJyIk
YWNfZGVsaW0iJyQvLwordCBkZWxpbQorOm5sCitoCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8KK3Qg
bW9yZTEKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcbiJcXC8KK3AKK24KK2IgcmVwbAor
Om1vcmUxCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwvCitwCitnCitzLy5cezE0OFx9
Ly8KK3QgbmwKKzpkZWxpbQoraAorcy9cKC5cezE0OFx9XCkuLiovXDEvCit0IG1vcmUyCitzL1si
XFxdL1xcJi9nOyBzL14vIi87IHMvJC8iLworcAorYgorOm1vcmUyCitzL1siXFxdL1xcJi9nOyBz
L14vIi87IHMvJC8iXFwvCitwCitnCitzLy5cezE0OFx9Ly8KK3QgZGVsaW0KKycgPGNvbmYkJHN1
YnMuYXdrIHwgc2VkICcKKy9eW14iIl0veworICBOCisgIHMvXG4vLworfQorJyA+PiRDT05GSUdf
U1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorcm0gLWYgY29uZiQkc3Vicy5hd2sKK2NhdCA+PiRD
T05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorX0FDQVdLCitjYXQgPj4i
XCRhY190bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJgorICBmb3IgKGtleSBpbiBTKSBTX2lzX3Nl
dFtrZXldID0gMQorICBGUyA9ICIHIgorCit9Cit7CisgIGxpbmUgPSAkIDAKKyAgbmZpZWxkcyA9
IHNwbGl0KGxpbmUsIGZpZWxkLCAiQCIpCisgIHN1YnN0ZWQgPSAwCisgIGxlbiA9IGxlbmd0aChm
aWVsZFsxXSkKKyAgZm9yIChpID0gMjsgaSA8IG5maWVsZHM7IGkrKykgeworICAgIGtleSA9IGZp
ZWxkW2ldCisgICAga2V5bGVuID0gbGVuZ3RoKGtleSkKKyAgICBpZiAoU19pc19zZXRba2V5XSkg
eworICAgICAgdmFsdWUgPSBTW2tleV0KKyAgICAgIGxpbmUgPSBzdWJzdHIobGluZSwgMSwgbGVu
KSAiIiB2YWx1ZSAiIiBzdWJzdHIobGluZSwgbGVuICsga2V5bGVuICsgMykKKyAgICAgIGxlbiAr
PSBsZW5ndGgodmFsdWUpICsgbGVuZ3RoKGZpZWxkWysraV0pCisgICAgICBzdWJzdGVkID0gMQor
ICAgIH0gZWxzZQorICAgICAgbGVuICs9IDEgKyBrZXlsZW4KKyAgfQorCisgIHByaW50IGxpbmUK
K30KKworX0FDQVdLCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh
Y193cml0ZV9mYWlsPTEKK2lmIHNlZCAicy8kYWNfY3IvLyIgPCAvZGV2L251bGwgPiAvZGV2L251
bGwgMj4mMTsgdGhlbgorICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19j
ci9nIgorZWxzZQorICBjYXQKK2ZpIDwgIiRhY190bXAvc3ViczEuYXdrIiA+ICIkYWNfdG1wL3N1
YnMuYXdrIiBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZp
bGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKK19BQ0VPRgorCisjIFZQQVRIIG1heSBjYXVzZSB0
cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlIHNvbGUgJChzcmNkaXIpLAorIyAk
e3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4i
LCBzdHJpcCBsZWFkaW5nIGFuZAorIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRo
ZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKKyMgKGFjdHVhbGx5IHdlIGxlYXZl
IGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KK2lmIHRlc3QgIngkc3Jj
ZGlyIiA9IHguOyB0aGVuCisgIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj1bCSBdKi97Cito
CitzLy8vCitzL14vOi8KK3MvWwkgXSokLzovCitzLzpcJChzcmNkaXIpOi86L2cKK3MvOlwke3Ny
Y2Rpcn06LzovZworcy86QHNyY2RpckA6LzovZworcy9eOiovLworcy86KiQvLworeAorcy9cKD1b
CSBdKlwpLiovXDEvCitHCitzL1xuLy8KK3MvXltePV0qPVsJIF0qJC8vCit9JworZmkKKworY2F0
ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorZmkgIyB0ZXN0
IC1uICIkQ09ORklHX0ZJTEVTIgorCisjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0hF
QURFUlMgc2VjdGlvbi4KKyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBu
byBDT05GSUdfSEVBREVSUy4KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2Nv
bmZpZy5zdGF0dXMgTWFrZWZpbGUnLgoraWYgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIjsgdGhl
bgorY2F0ID4iJGFjX3RtcC9kZWZpbmVzLmF3ayIgPDxcX0FDQVdLIHx8CitCRUdJTiB7CitfQUNF
T0YKKworIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIGFuIGF3ayBzY3JpcHQgYGRlZmluZXMu
YXdrJywgZW1iZWRkZWQgYXMKKyMgaGVyZS1kb2N1bWVudCBpbiBjb25maWcuc3RhdHVzLCB0aGF0
IHN1YnN0aXR1dGVzIHRoZSBwcm9wZXIgdmFsdWVzIGludG8KKyMgY29uZmlnLmguaW4gdG8gcHJv
ZHVjZSBjb25maWcuaC4KKworIyBDcmVhdGUgYSBkZWxpbWl0ZXIgc3RyaW5nIHRoYXQgZG9lcyBu
b3QgZXhpc3QgaW4gY29uZmRlZnMuaCwgdG8gZWFzZQorIyBoYW5kbGluZyBvZiBsb25nIGxpbmVz
LgorYWNfZGVsaW09JyUhXyEjICcKK2ZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSA6OyBk
bworICBhY190dD1gc2VkIC1uICIvJGFjX2RlbGltL3AiIGNvbmZkZWZzLmhgCisgIGlmIHRlc3Qg
LXogIiRhY190dCI7IHRoZW4KKyAgICBicmVhaworICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgor
ICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX0hFQURFUlMiICIkTElO
RU5PIiA1CisgIGVsc2UKKyAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2Rl
bGltISEgIgorICBmaQorZG9uZQorCisjIEZvciB0aGUgYXdrIHNjcmlwdCwgRCBpcyBhbiBhcnJh
eSBvZiBtYWNybyB2YWx1ZXMga2V5ZWQgYnkgbmFtZSwKKyMgbGlrZXdpc2UgUCBjb250YWlucyBt
YWNybyBwYXJhbWV0ZXJzIGlmIGFueS4gIFByZXNlcnZlIGJhY2tzbGFzaAorIyBuZXdsaW5lIHNl
cXVlbmNlcy4KKworYWNfd29yZF9yZT1bXyRhc19jcl9MZXR0ZXJzXVtfJGFzX2NyX2FsbnVtXSoK
K3NlZCAtbiAnCitzLy5cezE0OFx9LyYnIiRhY19kZWxpbSInL2cKK3QgcnNldAorOnJzZXQKK3Mv
XlsJIF0qI1sJIF0qZGVmaW5lWwkgXVsJIF0qLyAvCit0IGRlZgorZAorOmRlZgorcy9cXCQvLwor
dCBic25sCitzL1siXFxdL1xcJi9nCitzL14gXCgnIiRhY193b3JkX3JlIidcKVwoKFteKCldKilc
KVsJIF0qXCguKlwpL1BbIlwxIl09IlwyIlwKK0RbIlwxIl09IiBcMyIvcAorcy9eIFwoJyIkYWNf
d29yZF9yZSInXClbCSBdKlwoLipcKS9EWyJcMSJdPSIgXDIiL3AKK2QKKzpic25sCitzL1siXFxd
L1xcJi9nCitzL14gXCgnIiRhY193b3JkX3JlIidcKVwoKFteKCldKilcKVsJIF0qXCguKlwpL1Bb
IlwxIl09IlwyIlwKK0RbIlwxIl09IiBcM1xcXFxcXG4iXFwvcAordCBjb250CitzL14gXCgnIiRh
Y193b3JkX3JlIidcKVsJIF0qXCguKlwpL0RbIlwxIl09IiBcMlxcXFxcXG4iXFwvcAordCBjb250
CitkCis6Y29udAorbgorcy8uXHsxNDhcfS8mJyIkYWNfZGVsaW0iJy9nCit0IGNsZWFyCis6Y2xl
YXIKK3MvXFwkLy8KK3QgYnNubGMKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvcAorZAor
OmJzbmxjCitzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC9cXFxcXFxuIlxcL3AKK2IgY29udAor
JyA8Y29uZmRlZnMuaCB8IHNlZCAnCitzLyciJGFjX2RlbGltIicvIlxcXAorIi9nJyA+PiRDT05G
SUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9B
Q0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyAgZm9yIChrZXkgaW4gRCkgRF9pc19zZXRba2V5XSA9
IDEKKyAgRlMgPSAiByIKK30KKy9eW1x0IF0qI1tcdCBdKihkZWZpbmV8dW5kZWYpW1x0IF0rJGFj
X3dvcmRfcmUoW1x0IChdfFwkKS8geworICBsaW5lID0gXCQgMAorICBzcGxpdChsaW5lLCBhcmcs
ICIgIikKKyAgaWYgKGFyZ1sxXSA9PSAiIyIpIHsKKyAgICBkZWZ1bmRlZiA9IGFyZ1syXQorICAg
IG1hYzEgPSBhcmdbM10KKyAgfSBlbHNlIHsKKyAgICBkZWZ1bmRlZiA9IHN1YnN0cihhcmdbMV0s
IDIpCisgICAgbWFjMSA9IGFyZ1syXQorICB9CisgIHNwbGl0KG1hYzEsIG1hYzIsICIoIikgIykK
KyAgbWFjcm8gPSBtYWMyWzFdCisgIHByZWZpeCA9IHN1YnN0cihsaW5lLCAxLCBpbmRleChsaW5l
LCBkZWZ1bmRlZikgLSAxKQorICBpZiAoRF9pc19zZXRbbWFjcm9dKSB7CisgICAgIyBQcmVzZXJ2
ZSB0aGUgd2hpdGUgc3BhY2Ugc3Vycm91bmRpbmcgdGhlICIjIi4KKyAgICBwcmludCBwcmVmaXgg
ImRlZmluZSIsIG1hY3JvIFBbbWFjcm9dIERbbWFjcm9dCisgICAgbmV4dAorICB9IGVsc2Ugewor
ICAgICMgUmVwbGFjZSAjdW5kZWYgd2l0aCBjb21tZW50cy4gIFRoaXMgaXMgbmVjZXNzYXJ5LCBm
b3IgZXhhbXBsZSwKKyAgICAjIGluIHRoZSBjYXNlIG9mIF9QT1NJWF9TT1VSQ0UsIHdoaWNoIGlz
IHByZWRlZmluZWQgYW5kIHJlcXVpcmVkCisgICAgIyBvbiBzb21lIHN5c3RlbXMgd2hlcmUgY29u
ZmlndXJlIHdpbGwgbm90IGRlY2lkZSB0byBkZWZpbmUgaXQuCisgICAgaWYgKGRlZnVuZGVmID09
ICJ1bmRlZiIpIHsKKyAgICAgIHByaW50ICIvKiIsIHByZWZpeCBkZWZ1bmRlZiwgbWFjcm8sICIq
LyIKKyAgICAgIG5leHQKKyAgICB9CisgIH0KK30KK3sgcHJpbnQgfQorX0FDQVdLCitfQUNFT0YK
K2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyAgYXNf
Zm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgaGVhZGVycyBtYWNoaW5lcnkiICIk
TElORU5PIiA1CitmaSAjIHRlc3QgLW4gIiRDT05GSUdfSEVBREVSUyIKKworCitldmFsIHNldCBY
ICIgIDpGICRDT05GSUdfRklMRVMgIDpIICRDT05GSUdfSEVBREVSUyAgICAiCitzaGlmdAorZm9y
IGFjX3RhZworZG8KKyAgY2FzZSAkYWNfdGFnIGluCisgIDpbRkhMQ10pIGFjX21vZGU9JGFjX3Rh
ZzsgY29udGludWU7OworICBlc2FjCisgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCisgIDpbRkhM
XSo6Kik7OworICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdGFnIFxgJGFj
X3RhZyciICIkTElORU5PIiA1OzsKKyAgOltGSF0tKSBhY190YWc9LTotOzsKKyAgOltGSF0qKSBh
Y190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsKKyAgZXNhYworICBhY19zYXZlX0lGUz0kSUZTCisg
IElGUz06CisgIHNldCB4ICRhY190YWcKKyAgSUZTPSRhY19zYXZlX0lGUworICBzaGlmdAorICBh
Y19maWxlPSQxCisgIHNoaWZ0CisKKyAgY2FzZSAkYWNfbW9kZSBpbgorICA6TCkgYWNfc291cmNl
PSQxOzsKKyAgOltGSF0pCisgICAgYWNfZmlsZV9pbnB1dHM9CisgICAgZm9yIGFjX2YKKyAgICBk
bworICAgICAgY2FzZSAkYWNfZiBpbgorICAgICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7Owor
ICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhl
biBpbiB0aGUgc291cmNlIHRyZWUKKwkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4g
IFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCisJICMgYmVjYXVzZSAkYWNf
ZiBjYW5ub3QgY29udGFpbiBgOicuCisJIHRlc3QgLWYgIiRhY19mIiB8fAorCSAgIGNhc2UgJGFj
X2YgaW4KKwkgICBbXFwvJF0qKSBmYWxzZTs7CisJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNf
ZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OworCSAgIGVzYWMgfHwKKwkgICBhc19mbl9lcnJv
ciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OworICAg
ICAgZXNhYworICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2Yi
IHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYworICAgICAgYXNfZm5fYXBwZW5kIGFj
X2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKKyAgICBkb25lCisKKyAgICAjIExldCdzIHN0aWxsIHBy
ZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAor
ICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAg
ICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICAg
IGNvbmZpZ3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKKwkgICRhc19lY2hvICIkKiIgfCBz
ZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJworCWAnIGJ5IGNvbmZpZ3VyZS4nCisgICAg
aWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgICAgY29uZmlndXJlX2lucHV0PSIk
YWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYXNf
bWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQorICAgIGZpCisgICAgIyBOZXV0cmFsaXplIHNw
ZWNpYWwgY2hhcmFjdGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFjZW1lbnQgc3RyaW5n
cy4KKyAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygKKyAgICAqXCYqIHwgKlx8KiB8ICpc
XCogKQorICAgICAgIGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3VyZV9pbnB1
dCIgfAorICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAorICAgICopIGFjX3Nl
ZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7OworICAgIGVzYWMKKworICAgIGNhc2UgJGFj
X3RhZyBpbgorICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGluIiBcCisgICAgICB8
fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUg
OzsKKyAgICBlc2FjCisgICAgOzsKKyAgZXNhYworCisgIGFjX2Rpcj1gJGFzX2Rpcm5hbWUgLS0g
IiRhY19maWxlIiB8fAorJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9d
W14vXSovKiQnIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIk
YWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCAu
IDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhY19maWxlIiB8CisgICAgc2VkICcvXlhcKC4q
W14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkg
IC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwo
XC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJ
ICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgYXNfZGlyPSIkYWNf
ZGlyIjsgYXNfZm5fbWtkaXJfcAorICBhY19idWlsZGRpcj0uCisKK2Nhc2UgIiRhY19kaXIiIGlu
CisuKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3By
ZWZpeD0gOzsKKyopCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQg
J3N8XlwuW1xcL118fCdgCisgICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGly
X3N1ZmZpeC4KKyAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4
IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCisgIGNhc2UgJGFjX3RvcF9idWlsZGRp
cl9zdWIgaW4KKyAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4
PSA7OworICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsK
KyAgZXNhYyA7OworZXNhYworYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCithY19hYnNfYnVp
bGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4CisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
OgorYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4CisKK2Nhc2UgJHNyY2RpciBp
bgorICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCisgICAgYWNfc3JjZGlyPS4KKyAg
ICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCisgICAgYWNfYWJzX3RvcF9zcmNk
aXI9JGFjX3B3ZCA7OworICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCisg
ICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKKyAgICBhY190b3Bfc3JjZGlyPSRz
cmNkaXIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7CisgICopICMgUmVsYXRpdmUg
bmFtZS4KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9z
dWZmaXgKKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgorICAg
IGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OworZXNhYworYWNfYWJzX3NyY2Rp
cj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAorCisKKyAgY2FzZSAkYWNfbW9kZSBp
bgorICA6RikKKyAgIworICAjIENPTkZJR19GSUxFCisgICMKKworICBjYXNlICRJTlNUQUxMIGlu
CisgIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKKyAgKikgYWNf
SU5TVEFMTD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRJTlNUQUxMIDs7CisgIGVzYWMKK19BQ0VPRgor
CitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIElm
IHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBrbm93IGFib3V0IGRhdGFyb290ZGlyLCBleHBhbmQgaXQu
CisjIEZJWE1FOiBUaGlzIGhhY2sgc2hvdWxkIGJlIHJlbW92ZWQgYSBmZXcgeWVhcnMgYWZ0ZXIg
Mi42MC4KK2FjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQorYWNfc2Vk
X2RhdGFyb290PScKKy9kYXRhcm9vdGRpci8geworICBwCisgIHEKK30KKy9AZGF0YWRpckAvcAor
L0Bkb2NkaXJAL3AKKy9AaW5mb2RpckAvcAorL0Bsb2NhbGVkaXJAL3AKKy9AbWFuZGlyQC9wJwor
Y2FzZSBgZXZhbCAic2VkIC1uIFwiXCRhY19zZWRfZGF0YXJvb3RcIiAkYWNfZmlsZV9pbnB1dHMi
YCBpbgorKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7OworKkBkYXRhZGly
QCp8KkBkb2NkaXJAKnwqQGluZm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopCisgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGVf
aW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjUKKyRh
c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUg
dGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30KK19BQ0VPRgorY2F0ID4+JENPTkZJR19T
VEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisgIGFjX2RhdGFyb290ZGlyX2hhY2s9
JworICBzJkBkYXRhZGlyQCYkZGF0YWRpciZnCisgIHMmQGRvY2RpckAmJGRvY2RpciZnCisgIHMm
QGluZm9kaXJAJiRpbmZvZGlyJmcKKyAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcKKyAgcyZA
bWFuZGlyQCYkbWFuZGlyJmcKKyAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycg
OzsKK2VzYWMKK19BQ0VPRgorCisjIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNyY2RpcicgPSBg
LicuCisjIFNoZWxsIGNvZGUgaW4gY29uZmlndXJlLmFjIG1pZ2h0IHNldCBleHRyYXN1Yi4KKyMg
RklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8KK2NhdCA+
PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfc2VkX2V4dHJh
PSIkYWNfdnBzdWIKKyRleHRyYXN1YgorX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxf
QUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCis6dAorL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8h
Ygorc3xAY29uZmlndXJlX2lucHV0QHwkYWNfc2VkX2NvbmZfaW5wdXR8O3QgdAorcyZAdG9wX2J1
aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0CitzJkB0b3BfYnVpbGRfcHJlZml4QCYk
YWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0CitzJkBzcmNkaXJAJiRhY19zcmNkaXImO3QgdAorcyZA
YWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdAorcyZAdG9wX3NyY2RpckAmJGFjX3RvcF9z
cmNkaXImO3QgdAorcyZAYWJzX3RvcF9zcmNkaXJAJiRhY19hYnNfdG9wX3NyY2RpciY7dCB0Citz
JkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQKK3MmQGFic19idWlsZGRpckAmJGFjX2Fic19i
dWlsZGRpciY7dCB0CitzJkBhYnNfdG9wX2J1aWxkZGlyQCYkYWNfYWJzX3RvcF9idWlsZGRpciY7
dCB0CitzJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0CiskYWNfZGF0YXJvb3RkaXJfaGFjawor
IgorZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAt
ZiAiJGFjX3RtcC9zdWJzLmF3ayIgXAorICA+JGFjX3RtcC9vdXQgfHwgYXNfZm5fZXJyb3IgJD8g
ImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisKK3Rlc3QgLXogIiRhY19k
YXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCisgIHsgYWNfb3V0PWBzZWQg
LW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQi
OyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3An
IFwKKyAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgorICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNv
bnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJword2hpY2gg
c2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+
JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJl
bmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJword2hpY2ggc2VlbXMgdG8gYmUgdW5k
ZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjI7fQorCisgIHJtIC1m
ICIkYWNfdG1wL3N0ZGluIgorICBjYXNlICRhY19maWxlIGluCisgIC0pIGNhdCAiJGFjX3RtcC9v
dXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OworICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12
ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7CisgIGVzYWMgXAorICB8fCBhc19mbl9lcnJvciAk
PyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyA7OworICA6SCkKKyAg
IworICAjIENPTkZJR19IRUFERVIKKyAgIworICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0
aGVuCisgICAgeworICAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCisg
ICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lu
cHV0cyIKKyAgICB9ID4iJGFjX3RtcC9jb25maWcuaCIgXAorICAgICAgfHwgYXNfZm5fZXJyb3Ig
JD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgaWYgZGlmZiAi
JGFjX2ZpbGUiICIkYWNfdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX2ZpbGUgaXMgdW5j
aGFuZ2VkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2
O30KKyAgICBlbHNlCisgICAgICBybSAtZiAiJGFjX2ZpbGUiCisgICAgICBtdiAiJGFjX3RtcC9j
b25maWcuaCIgIiRhY19maWxlIiBcCisJfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVh
dGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgZmkKKyAgZWxzZQorICAgICRhc19lY2hvICIv
KiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJGFjX3Rt
cC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9y
ICQ/ICJjb3VsZCBub3QgY3JlYXRlIC0iICIkTElORU5PIiA1CisgIGZpCisgOzsKKworCisgIGVz
YWMKKworZG9uZSAjIGZvciBhY190YWcKKworCithc19mbl9leGl0IDAKK19BQ0VPRgorYWNfY2xl
YW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKKwordGVzdCAkYWNfd3JpdGVfZmFpbCA9IDAg
fHwKKyAgYXNfZm5fZXJyb3IgJD8gIndyaXRlIGZhaWx1cmUgY3JlYXRpbmcgJENPTkZJR19TVEFU
VVMiICIkTElORU5PIiA1CisKKworIyBjb25maWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9n
LCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLgorIyBjb25maWcuc3RhdHVzIGRvZXMgaXRz
IG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5nIHRvIGNvbmZpZy5sb2cuCisjIFVuZm9ydHVuYXRl
bHksIG9uIERPUyB0aGlzIGZhaWxzLCBhcyBjb25maWcubG9nIGlzIHN0aWxsIGtlcHQgb3Blbgor
IyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0
byBpdDsgaXRzCisjIG91dHB1dCBpcyBzaW1wbHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUg
RkQgdG8gL2Rldi9udWxsLAorIyBlZmZlY3RpdmVseSBjbG9zaW5nIGNvbmZpZy5sb2csIHNvIGl0
IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZAorIyBhcHBlbmRlZCB0byBieSBjb25maWcu
c3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0byBjb25maWd1cmUsIHdlCisjIG5lZWQgdG8gbWFr
ZSB0aGUgRkQgYXZhaWxhYmxlIGFnYWluLgoraWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0
aGVuCisgIGFjX2NzX3N1Y2Nlc3M9OgorICBhY19jb25maWdfc3RhdHVzX2FyZ3M9CisgIHRlc3Qg
IiRzaWxlbnQiID0geWVzICYmCisgICAgYWNfY29uZmlnX3N0YXR1c19hcmdzPSIkYWNfY29uZmln
X3N0YXR1c19hcmdzIC0tcXVpZXQiCisgIGV4ZWMgNT4vZGV2L251bGwKKyAgJFNIRUxMICRDT05G
SUdfU1RBVFVTICRhY19jb25maWdfc3RhdHVzX2FyZ3MgfHwgYWNfY3Nfc3VjY2Vzcz1mYWxzZQor
ICBleGVjIDU+PmNvbmZpZy5sb2cKKyAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGlu
ZyBmcm9tIHRoZSBpZiB3aXRoICQ/ID0gMSwgd2hpY2gKKyAgIyB3b3VsZCBtYWtlIGNvbmZpZ3Vy
ZSBmYWlsIGlmIHRoaXMgaXMgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24uCisgICRhY19jc19zdWNjZXNz
IHx8IGFzX2ZuX2V4aXQgMQorZmkKK2lmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyIg
JiYgdGVzdCAiJGVuYWJsZV9vcHRpb25fY2hlY2tpbmciICE9IG5vOyB0aGVuCisgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdW5yZWNvZ25pemVkIG9w
dGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJO
SU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjI7fQor
ZmkKKwpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvY29uZmlndXJl
LmFjCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rv
b2xzL2NvbmZpZ3VyZS5hYwlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTAsMCAr
MSwxOTIgQEAKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0qLSBBdXRvY29uZiAtKi0KKyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBw
cm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KKworQUNfUFJFUkVRKFsyLjY3XSkKK0FDX0lOSVQo
W1hlbiBIeXBlcnZpc29yXSwgbTRfZXN5c2NtZChbLi4vdmVyc2lvbi5zaCAuLi94ZW4vTWFrZWZp
bGVdKSwKKyAgICBbeGVuLWRldmVsQGxpc3RzLnhlbnNvdXJjZS5jb21dKQorQUNfQ09ORklHX1NS
Q0RJUihbbGlieGwvbGlieGwuY10pCitBQ19DT05GSUdfRklMRVMoWy4uL2NvbmZpZy9Ub29scy5t
a10pCitBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorQUNfUFJFRklYX0RFRkFVTFQoWy91
c3JdKQorQUNfQ09ORklHX0FVWF9ESVIoWy5dKQorCisjIENoZWNrIGlmIENGTEFHUywgTERGTEFH
UywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQIGlzIHNldCBhbmQgcHJpbnQgYSB3YXJuaW5nCisKK0FT
X0lGKFt0ZXN0IC1uICIkQ0MkQ0ZMQUdTJExERkxBR1MkTElCUyRDUFBGTEFHUyRDUFAiXSwgWwor
ICAgIEFDX01TR19XQVJOKAorW1NldHRpbmcgQ0MsIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQ
RkxBR1Mgb3IgQ1BQIGlzIG5vdCBcCityZWNvbW1lbmRlZCwgdXNlIFBSRVBFTkRfSU5DTFVERVMs
IFBSRVBFTkRfTElCLCBcCitBUFBFTkRfSU5DTFVERVMgYW5kIEFQUEVORF9MSUIgaW5zdGVhZCB3
aGVuIHBvc3NpYmxlLl0pCitdKQorCitBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKK0FDX0NBTk9O
SUNBTF9IT1NUCisKKyMgTTQgTWFjcm8gaW5jbHVkZXMKK200X2luY2x1ZGUoW200L2VuYWJsZV9m
ZWF0dXJlLm00XSkKK200X2luY2x1ZGUoW200L2Rpc2FibGVfZmVhdHVyZS5tNF0pCittNF9pbmNs
dWRlKFttNC9wYXRoX29yX2ZhaWwubTRdKQorbTRfaW5jbHVkZShbbTQvcHl0aG9uX3htbC5tNF0p
CittNF9pbmNsdWRlKFttNC9weXRob25fdmVyc2lvbi5tNF0pCittNF9pbmNsdWRlKFttNC9weXRo
b25fZGV2ZWwubTRdKQorbTRfaW5jbHVkZShbbTQvdWRldi5tNF0pCittNF9pbmNsdWRlKFttNC9v
Y2FtbC5tNF0pCittNF9pbmNsdWRlKFttNC9kZWZhdWx0X2xpYi5tNF0pCittNF9pbmNsdWRlKFtt
NC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTRdKQorbTRfaW5jbHVkZShbbTQvdXVpZC5tNF0pCisKKyMg
RW5hYmxlL2Rpc2FibGUgb3B0aW9ucworQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFt4c21dLAor
ICAgIFtFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVsZSAoYnkgZGVmYXVsdCwgRmxhc2spXSkKK0FY
X0FSR19FTkFCTEVfQU5EX0VYUE9SVChbZ2l0aHR0cF0sIFtEb3dubG9hZCBHSVQgcmVwb3NpdG9y
aWVzIHZpYSBIVFRQXSkKK0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlQoW21vbml0b3JzXSwKKyAg
ICBbRGlzYWJsZSB4ZW5zdGF0IGFuZCB4ZW50b3AgbW9uaXRvcmluZyB0b29sc10pCitBWF9BUkdf
RU5BQkxFX0FORF9FWFBPUlQoW3Z0cG1dLCBbRW5hYmxlIFZpcnR1YWwgVHJ1c3RlZCBQbGF0Zm9y
bSBNb2R1bGVdKQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFt4YXBpXSwgW0VuYWJsZSBYZW4g
QVBJIEJpbmRpbmdzXSkKK0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlQoW3B5dGhvbnRvb2xzXSwg
W0Rpc2FibGUgUHl0aG9uIHRvb2xzXSkKK0FYX0FSR19ESVNBQkxFX0FORF9FWFBPUlQoW29jYW1s
dG9vbHNdLCBbRGlzYWJsZSBPY2FtbCB0b29sc10pCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQo
W21pbml0ZXJtXSwgW0VuYWJsZSBtaW5pdGVybV0pCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQo
W2xvbW91bnRdLCBbRW5hYmxlIGxvbW91bnRdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChb
ZGVidWddLCBbRGlzYWJsZSBkZWJ1ZyBidWlsZCBvZiBYZW4gYW5kIHRvb2xzXSkKKworQUNfQVJH
X1ZBUihbUFJFUEVORF9JTkNMVURFU10sCisgICAgW0xpc3Qgb2YgaW5jbHVkZSBmb2xkZXJzIHRv
IHByZXBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKV0pCitBQ19BUkdfVkFSKFtQUkVQRU5EX0xJ
Ql0sCisgICAgW0xpc3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIHByZXBlbmQgdG8gTERGTEFHUyAo
d2l0aG91dCAtTCldKQorQUNfQVJHX1ZBUihbQVBQRU5EX0lOQ0xVREVTXSwKKyAgICBbTGlzdCBv
ZiBpbmNsdWRlIGZvbGRlcnMgdG8gYXBwZW5kIHRvIENGTEFHUyAod2l0aG91dCAtSSldKQorQUNf
QVJHX1ZBUihbQVBQRU5EX0xJQl0sCisgICAgW0xpc3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIGFw
cGVuZCB0byBMREZMQUdTICh3aXRob3V0IC1MKV0pCisKK0FYX1NFVF9GTEFHUworCitBQ19BUkdf
VkFSKFtQWVRIT05dLCBbUGF0aCB0byB0aGUgUHl0aG9uIHBhcnNlcl0pCitBQ19BUkdfVkFSKFtQ
RVJMXSwgW1BhdGggdG8gUGVybCBwYXJzZXJdKQorQUNfQVJHX1ZBUihbQlJDVExdLCBbUGF0aCB0
byBicmN0bCB0b29sXSkKK0FDX0FSR19WQVIoW0lQXSwgW1BhdGggdG8gaXAgdG9vbF0pCitBQ19B
UkdfVkFSKFtCSVNPTl0sIFtQYXRoIHRvIEJpc29uIHBhcnNlciBnZW5lcmF0b3JdKQorQUNfQVJH
X1ZBUihbRkxFWF0sIFtQYXRoIHRvIEZsZXggbGV4aWNhbCBhbmFseXNlciBnZW5lcmF0b3JdKQor
QUNfQVJHX1ZBUihbQ1VSTF0sIFtQYXRoIHRvIGN1cmwtY29uZmlnIHRvb2xdKQorQUNfQVJHX1ZB
UihbWE1MXSwgW1BhdGggdG8geG1sMi1jb25maWcgdG9vbF0pCitBQ19BUkdfVkFSKFtCQVNIXSwg
W1BhdGggdG8gYmFzaCBzaGVsbF0pCitBQ19BUkdfVkFSKFtYR0VUVEVYVF0sIFtQYXRoIHRvIHhn
ZXR0dGV4dCB0b29sXSkKKworIyBDaGVja3MgZm9yIHByb2dyYW1zLgorQUNfUFJPR19TRUQKK0FD
X1BST0dfQ0MKK0FDX1BST0dfTE5fUworQUNfUFJPR19NQUtFX1NFVAorQUNfUFJPR19JTlNUQUxM
CitBWF9QQVRIX1BST0dfT1JfRkFJTChbUEVSTF0sIFtwZXJsXSkKK0FYX1BBVEhfUFJPR19PUl9G
QUlMKFtCUkNUTF0sIFticmN0bF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbSVBdLCBbaXBdKQor
QVhfUEFUSF9QUk9HX09SX0ZBSUwoW0JJU09OXSwgW2Jpc29uXSkKK0FYX1BBVEhfUFJPR19PUl9G
QUlMKFtGTEVYXSwgW2ZsZXhdKQorQVNfSUYoW3Rlc3QgIngkeGFwaSIgPSAieHkiXSwgWworICAg
IEFYX1BBVEhfUFJPR19PUl9GQUlMKFtDVVJMXSwgW2N1cmwtY29uZmlnXSkKKyAgICBBWF9QQVRI
X1BST0dfT1JfRkFJTChbWE1MXSwgW3htbDItY29uZmlnXSkKK10pCitBU19JRihbdGVzdCAieCRv
Y2FtbHRvb2xzIiA9ICJ4eSJdLCBbCisgICAgQUNfUFJPR19PQ0FNTAorICAgIEFTX0lGKFt0ZXN0
ICJ4JE9DQU1MQyIgPSAieG5vIl0sIFsKKyAgICAgICAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX29j
YW1sdG9vbHMiID0gInh5ZXMiXSwgWworICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtPY2FtbCB0
b29scyBlbmFibGVkLCBidXQgdW5hYmxlIHRvIGZpbmQgT2NhbWxdKV0pCisgICAgICAgIG9jYW1s
dG9vbHM9Im4iCisgICAgXSkKK10pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQkFTSF0sIFtiYXNo
XSkKK0FTX0lGKFt0ZXN0ICJ4JHB5dGhvbnRvb2xzIiA9ICJ4eSJdLCBbCisgICAgQVNfSUYoW2Vj
aG8gIiRQWVRIT04iIHwgZ3JlcCAtcSAiXi8iXSwgWworICAgICAgICBQWVRIT05QQVRIPSRQWVRI
T04KKyAgICAgICAgUFlUSE9OPWBiYXNlbmFtZSAkUFlUSE9OUEFUSGAKKyAgICBdLFt0ZXN0IC16
ICIkUFlUSE9OIl0sIFtQWVRIT049InB5dGhvbiJdLAorICAgIFtBQ19NU0dfRVJST1IoW1BZVEhP
TiBzcGVjaWZpZWQsIGJ1dCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aF0pXSkKKyAgICBBWF9QQVRI
X1BST0dfT1JfRkFJTChbUFlUSE9OUEFUSF0sIFskUFlUSE9OXSkKKyAgICBBWF9DSEVDS19QWVRI
T05fVkVSU0lPTihbMl0sIFszXSkKKyAgICBBWF9DSEVDS19QWVRIT05fWE1MKCkKKyAgICBBWF9D
SEVDS19QWVRIT05fREVWRUwoKQorXSkKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtYR0VUVEVYVF0s
IFt4Z2V0dGV4dF0pCitBWF9DSEVDS19VREVWKFs1OV0pCitBWF9DSEVDS19VVUlECitQS0dfQ0hF
Q0tfTU9EVUxFUyhnbGliLCBnbGliLTIuMCkKKworIyBDaGVjayBsaWJyYXJ5IHBhdGgKK0FYX0RF
RkFVTFRfTElCCisKKyMgQ2hlY2tzIGZvciBsaWJyYXJpZXMuCitBQ19DSEVDS19MSUIoW2Fpb10s
IFtpb19zZXR1cF0sIFtzeXN0ZW1fYWlvPSJ5Il0sIFtzeXN0ZW1fYWlvPSJuIl0pCitBQ19TVUJT
VChzeXN0ZW1fYWlvKQorQUNfQ0hFQ0tfTElCKFtjcnlwdG9dLCBbTUQ1XSwgW10sIFtBQ19NU0df
RVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYmNyeXB0b10pXSkKK0FDX0NIRUNLX0xJQihbZXh0MmZz
XSwgW2V4dDJmc19vcGVuMl0sIFtsaWJleHQyZnM9InkiXSwgW2xpYmV4dDJmcz0ibiJdKQorQUNf
U1VCU1QobGliZXh0MmZzKQorQUNfQ0hFQ0tfTElCKFtnY3J5cHRdLCBbZ2NyeV9tZF9oYXNoX2J1
ZmZlcl0sIFtsaWJnY3J5cHQ9InkiXSwgW2xpYmdjcnlwdD0ibiJdKQorQUNfU1VCU1QobGliZ2Ny
eXB0KQorQUNfQ0hFQ0tfTElCKFtwdGhyZWFkXSwgW3B0aHJlYWRfY3JlYXRlXSwgW10gLAorICAg
IFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnB0aHJlYWRdKV0pCitBQ19DSEVDS19M
SUIoW3J0XSwgW2Nsb2NrX2dldHRpbWVdKQorQUNfQ0hFQ0tfTElCKFt1dWlkXSwgW3V1aWRfY2xl
YXJdLCBbXSwKKyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJ1dWlkXSldKQor
QUNfQ0hFQ0tfTElCKFt5YWpsXSwgW3lhamxfYWxsb2NdLCBbXSwKKyAgICBbQUNfTVNHX0VSUk9S
KFtDb3VsZCBub3QgZmluZCB5YWpsXSldKQorQUNfQ0hFQ0tfTElCKFt6XSwgW2RlZmxhdGVDb3B5
XSwgW10sIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIHpsaWJdKV0pCitBQ19DSEVDS19M
SUIoW2ljb252XSwgW2xpYmljb252X29wZW5dLCBbbGliaWNvbnY9InkiXSwgW2xpYmljb252PSJu
Il0pCitBQ19TVUJTVChsaWJpY29udikKKworIyBBdXRvc2NhbiBzdHVmZiAoZXhjZXB0IGZvciB5
YWpsL3lhamxfdmVyc2lvbi5oIGNoZWNrKQorIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KK0FD
X0ZVTkNfQUxMT0NBCitBQ19DSEVDS19IRUFERVJTKFsgXAorICAgICAgICAgICAgICAgIGFycGEv
aW5ldC5oIGZjbnRsLmggaW50dHlwZXMuaCBsaWJpbnRsLmggbGltaXRzLmggbWFsbG9jLmggXAor
ICAgICAgICAgICAgICAgIG5ldGRiLmggbmV0aW5ldC9pbi5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0
ZGxpYi5oIHN0cmluZy5oIFwKKyAgICAgICAgICAgICAgICBzdHJpbmdzLmggc3lzL2ZpbGUuaCBz
eXMvaW9jdGwuaCBzeXMvbW91bnQuaCBzeXMvcGFyYW0uaCBcCisgICAgICAgICAgICAgICAgc3lz
L3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3RpbWUuaCBzeXNsb2cuaCB0ZXJtaW9zLmggXAor
ICAgICAgICAgICAgICAgIHVuaXN0ZC5oIHlhamwveWFqbF92ZXJzaW9uLmggXAorICAgICAgICAg
ICAgICAgIF0pCisKKyMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBp
bGVyIGNoYXJhY3RlcmlzdGljcy4KK0FDX0hFQURFUl9TVERCT09MCitBQ19UWVBFX1VJRF9UCitB
Q19DX0lOTElORQorQUNfVFlQRV9JTlQxNl9UCitBQ19UWVBFX0lOVDMyX1QKK0FDX1RZUEVfSU5U
NjRfVAorQUNfVFlQRV9JTlQ4X1QKK0FDX1RZUEVfTU9ERV9UCitBQ19UWVBFX09GRl9UCitBQ19U
WVBFX1BJRF9UCitBQ19DX1JFU1RSSUNUCitBQ19UWVBFX1NJWkVfVAorQUNfVFlQRV9TU0laRV9U
CitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9ibGtzaXplXSkKK0FDX1NUUlVDVF9T
VF9CTE9DS1MKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X3JkZXZdKQorQUNfVFlQ
RV9VSU5UMTZfVAorQUNfVFlQRV9VSU5UMzJfVAorQUNfVFlQRV9VSU5UNjRfVAorQUNfVFlQRV9V
SU5UOF9UCitBQ19DSEVDS19UWVBFUyhbcHRyZGlmZl90XSkKKworIyBDaGVja3MgZm9yIGxpYnJh
cnkgZnVuY3Rpb25zLgorQUNfRlVOQ19FUlJPUl9BVF9MSU5FCitBQ19GVU5DX0ZPUksKK0FDX0ZV
TkNfRlNFRUtPCitBQ19GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LCitBQ19IRUFE
RVJfTUFKT1IKK0FDX0ZVTkNfTUFMTE9DCitBQ19GVU5DX01LVElNRQorQUNfRlVOQ19NTUFQCitB
Q19GVU5DX1JFQUxMT0MKK0FDX0ZVTkNfU1RSTkxFTgorQUNfRlVOQ19TVFJUT0QKK0FDX0NIRUNL
X0ZVTkNTKFsgXAorICAgICAgICAgICAgICAgIGFsYXJtIGF0ZXhpdCBiemVybyBjbG9ja19nZXR0
aW1lIGR1cDIgZmRhdGFzeW5jIGZ0cnVuY2F0ZSBcCisgICAgICAgICAgICAgICAgZ2V0Y3dkIGdl
dGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUgZ2V0cGFnZXNpemUgZ2V0dGltZW9mZGF5IFwKKyAgICAg
ICAgICAgICAgICBpbmV0X250b2EgaXNhc2NpaSBsb2NhbHRpbWVfciBtZW1jaHIgbWVtbW92ZSBt
ZW1zZXQgbWtkaXIgXAorICAgICAgICAgICAgICAgIG1rZmlmbyBtdW5tYXAgcGF0aGNvbmYgcmVh
bHBhdGggcmVnY29tcCBybWRpciBzZWxlY3Qgc2V0ZW52IFwKKyAgICAgICAgICAgICAgICBzb2Nr
ZXQgc3RyY2FzZWNtcCBzdHJjaHIgc3RyY3NwbiBzdHJkdXAgc3RyZXJyb3Igc3RybmR1cCBcCisg
ICAgICAgICAgICAgICAgc3RycGJyayBzdHJyY2hyIHN0cnNwbiBzdHJzdHIgc3RydG9sIHN0cnRv
dWwgc3RydG91bGwgdHpzZXQgXAorICAgICAgICAgICAgICAgIHVuYW1lIFwKKyAgICAgICAgICAg
ICAgICBdKQorCitBQ19PVVRQVVQoKQpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5
MTQgdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcvTWFrZWZpbGUKLS0tIGEvdG9vbHMvZGVidWdnZXIv
Z2Ric3gveGcvTWFrZWZpbGUJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyBiL3Rv
b2xzL2RlYnVnZ2VyL2dkYnN4L3hnL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MjA6MjkgMjAxMiAr
MDEwMApAQCAtMjEsNyArMjEsNiBAQCB4Z19hbGwuYTogJChYR19PQkpTKSBNYWtlZmlsZSAkKFhH
X0hEUlMpCiAjCSQoQ0MpIC1tMzIgLWMgLW8gJEAgJF4KIAogeGVuLWhlYWRlcnM6Ci0JJChNQUtF
KSAtQyAuLi8uLi8uLi9jaGVjayAKIAkkKE1BS0UpIC1DIC4uLy4uLy4uL2luY2x1ZGUKIAogIyB4
Z19tYWluLm86IHhnX21haW4uYyBNYWtlZmlsZSAkKFhHX0hEUlMpCmRpZmYgLXIgODcyMThiZDM2
N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9pbnN0YWxsLnNoCi0tLSAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2luc3RhbGwuc2gJTW9uIEZlYiAy
MCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMSBAQAorLi4vaW5zdGFsbC5zaApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhh
OTE0IHRvb2xzL2xpYmZzaW1hZ2UvTWFrZWZpbGUKLS0tIGEvdG9vbHMvbGliZnNpbWFnZS9NYWtl
ZmlsZQlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMvbGliZnNpbWFn
ZS9NYWtlZmlsZQlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTMsNyArMywxMSBA
QCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIFNVQkRJUlMteSA9IGNvbW1v
biB1ZnMgcmVpc2VyZnMgaXNvOTY2MCBmYXQgemZzCiBTVUJESVJTLSQoQ09ORklHX1g4NikgKz0g
eGZzCi1TVUJESVJTLXkgKz0gJChzaGVsbCBlbnYgQ0M9IiQoQ0MpIiAuL2NoZWNrLWxpYmV4dDJm
cykKK2lmZXEgKCQoQ09ORklHX0VYVDJGUyksIHkpCisgICAgU1VCRElSUy15ICs9IGV4dDJmcy1s
aWIKK2Vsc2UKKyAgICBTVUJESVJTLXkgKz0gZXh0MmZzCitlbmRpZgogCiAuUEhPTlk6IGFsbCBj
bGVhbiBpbnN0YWxsCiBhbGwgY2xlYW4gaW5zdGFsbDogJTogc3ViZGlycy0lCmRpZmYgLXIgODcy
MThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9saWJmc2ltYWdlL2NoZWNrLWxpYmV4dDJm
cwotLS0gYS90b29scy9saWJmc2ltYWdlL2NoZWNrLWxpYmV4dDJmcwlGcmkgRmViIDE3IDEyOjI0
OjM4IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAw
MDAKQEAgLTEsMjEgKzAsMCBAQAotIyEvYmluL3NoCi0KLWNhdCA+ZXh0Mi10ZXN0LmMgPDxFT0YK
LSNpbmNsdWRlIDxleHQyZnMvZXh0MmZzLmg+Ci0KLWludCBtYWluKCkKLXsKLQlleHQyZnNfb3Bl
bjI7Ci19Ci1FT0YKLQotJHtDQy1nY2N9IC1vIGV4dDItdGVzdCBleHQyLXRlc3QuYyAtbGV4dDJm
cyA+L2Rldi9udWxsIDI+JjEKLWlmIFsgJD8gPSAwIF07IHRoZW4KLQllY2hvIGV4dDJmcy1saWIK
LWVsc2UKLQllY2hvIGV4dDJmcwotZmkKLQotcm0gLWYgZXh0Mi10ZXN0IGV4dDItdGVzdC5jCi0K
LWV4aXQgMApkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvbGlieGVu
L01ha2VmaWxlCi0tLSBhL3Rvb2xzL2xpYnhlbi9NYWtlZmlsZQlGcmkgRmViIDE3IDEyOjI0OjM4
IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMvbGlieGVuL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MjA6
MjkgMjAxMiArMDEwMApAQCAtMjIsMTIgKzIyLDEyIEBAIE1BSk9SID0gMS4wCiBNSU5PUiA9IDAK
IAogQ0ZMQUdTICs9IC1JaW5jbHVkZSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAk
KHNoZWxsIHhtbDItY29uZmlnIC0tY2ZsYWdzKSBcCi0gICAgICAgICAgJChzaGVsbCBjdXJsLWNv
bmZpZyAtLWNmbGFncykgXAorICAgICAgICAgICQoc2hlbGwgJChYTUwyX0NPTkZJRykgLS1jZmxh
Z3MpIFwKKyAgICAgICAgICAkKHNoZWxsICQoQ1VSTF9DT05GSUcpIC0tY2ZsYWdzKSBcCiAgICAg
ICAgICAgLWZQSUMKIAotTERGTEFHUyArPSAkKHNoZWxsIHhtbDItY29uZmlnIC0tbGlicykgXAot
ICAgICAgICAgICAkKHNoZWxsIGN1cmwtY29uZmlnIC0tbGlicykKK0xERkxBR1MgKz0gJChzaGVs
bCAkKFhNTDJfQ09ORklHKSAtLWxpYnMpIFwKKyAgICAgICAgICAgJChzaGVsbCAkKENVUkxfQ09O
RklHKSAtLWxpYnMpCiAKIExJQlhFTkFQSV9IRFJTID0gJCh3aWxkY2FyZCBpbmNsdWRlL3hlbi9h
cGkvKi5oKSBpbmNsdWRlL3hlbi9hcGkveGVuX2FsbC5oCiBMSUJYRU5BUElfT0JKUyA9ICQocGF0
c3Vic3QgJS5jLCAlLm8sICQod2lsZGNhcmQgc3JjLyouYykpCmRpZmYgLXIgODcyMThiZDM2N2Jl
IC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9saWJ4bC9NYWtlZmlsZQotLS0gYS90b29scy9saWJ4bC9N
YWtlZmlsZQlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMvbGlieGwv
TWFrZWZpbGUJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0xOSwxMCArMTksNiBA
QCBpZmVxICgkKENPTkZJR19MaW51eCkseSkKIExJQlVVSURfTElCUyArPSAtbHV1aWQKIGVuZGlm
CiAKLWlmZXEgKCQoQ09ORklHX1lBSkxfVkVSU0lPTikseSkKLUNGTEFHUyArPSAtREhBVkVfWUFK
TF9WRVJTSU9OCi1lbmRpZgotCiBMSUJYTF9MSUJTID0KIExJQlhMX0xJQlMgPSAkKExETElCU19s
aWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQo
TERMSUJTX2xpYmJsa3RhcGN0bCkgJChVVElMX0xJQlMpICQoTElCVVVJRF9MSUJTKQogCkBAIC01
Niw3ICs1Miw3IEBAIExJQlhMX09CSlMgPSBmbGV4YXJyYXkubyBsaWJ4bC5vIGxpYnhsX2MKIAkJ
CWxpYnhsX3FtcC5vIGxpYnhsX2V2ZW50Lm8gJChMSUJYTF9PQkpTLXkpCiBMSUJYTF9PQkpTICs9
IF9saWJ4bF90eXBlcy5vIGxpYnhsX2ZsYXNrLm8gX2xpYnhsX3R5cGVzX2ludGVybmFsLm8KIAot
JChMSUJYTF9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xp
Ynhlbmd1ZXN0KSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChDRkxBR1NfbGliYmxrdGFwY3RsKQor
JChMSUJYTF9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xp
Ynhlbmd1ZXN0KSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChDRkxBR1NfbGliYmxrdGFwY3RsKSAt
aW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9jb25maWcuaAogCiBBVVRPSU5DUz0gbGlieGx1X2Nm
Z195LmggbGlieGx1X2NmZ19sLmggX2xpYnhsX2xpc3QuaAogQVVUT1NSQ1M9IGxpYnhsdV9jZmdf
eS5jIGxpYnhsdV9jZmdfbC5jCkBAIC02OSw2ICs2NSw3IEBAIENMSUVOVFMgPSB4bCB0ZXN0aWRs
CiBYTF9PQkpTID0geGwubyB4bF9jbWRpbXBsLm8geGxfY21kdGFibGUubyB4bF9zeHAubwogJChY
TF9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICMgRm9yIHhlbnRvb2xsb2cu
aAogJChYTF9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmxpZ2h0KQorJChYTF9PQkpT
KTogQ0ZMQUdTICs9IC1pbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL2NvbmZpZy5oICMgbGlieGxf
anNvbi5oIG5lZWRzIGl0LgogCiB0ZXN0aWRsLm86IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5j
dHJsKSAkKENGTEFHU19saWJ4ZW5saWdodCkKIHRlc3RpZGwuYzogbGlieGxfdHlwZXMuaWRsIGdl
bnRlc3QucHkgbGlieGwuaCAkKEFVVE9JTkNTKQpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2Rm
OWVkOGE5MTQgdG9vbHMvbGlieGwvbGlieGxfanNvbi5oCi0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs
X2pzb24uaAlGcmkgRmViIDE3IDEyOjI0OjM4IDIwMTIgKzAwMDAKKysrIGIvdG9vbHMvbGlieGwv
bGlieGxfanNvbi5oCU1vbiBGZWIgMjAgMTg6MjA6MjkgMjAxMiArMDEwMApAQCAtMTgsNyArMTgs
NyBAQAogI2luY2x1ZGUgPHlhamwveWFqbF9nZW4uaD4KICNpbmNsdWRlIDx5YWpsL3lhamxfcGFy
c2UuaD4KIAotI2lmZGVmIEhBVkVfWUFKTF9WRVJTSU9OCisjaWZkZWYgSEFWRV9ZQUpMX1lBSkxf
VkVSU0lPTl9ICiAjICBpbmNsdWRlIDx5YWpsL3lhamxfdmVyc2lvbi5oPgogI2VuZGlmCiAKZGlm
ZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2xpYnhsL2xpYnhsdV9jZmdf
eS5jCi0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9jZmdfeS5jCUZyaSBGZWIgMTcgMTI6MjQ6Mzgg
MjAxMiArMDAwMAorKysgYi90b29scy9saWJ4bC9saWJ4bHVfY2ZnX3kuYwlNb24gRmViIDIwIDE4
OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTEsMjQgKzEsMjEgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBt
YWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05V
IEJpc29uIDIuNS4gICovCiAKLS8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidz
IFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKLQotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAx
OTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8qIEJpc29uIGltcGxl
bWVudGF0aW9uIGZvciBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdo
dCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuCisgICAKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9u
KQotICAgYW55IGxhdGVyIHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
CiAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAK
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAg
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy8+LiAgKi8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBj
cmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUg
Qmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyAr
MjYsNyBAQAogICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxl
dG9uIGFuZCB0aGUgcmVzdWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5z
ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMg
c3BlY2lhbCBleGNlcHRpb24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMg
YWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIg
b2YgQmlzb24uICAqLwogCkBAIC00Nyw3ICs0NCw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAv
KiBCaXNvbiB2ZXJzaW9uLiAgKi8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVm
aW5lIFlZQklTT05fVkVSU0lPTiAiMi41IgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZp
bmUgWVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMiCkBAIC01NSw0MSArNTIsMjggQEAKIC8qIFB1cmUg
cGFyc2Vycy4gICovCiAjZGVmaW5lIFlZUFVSRSAxCiAKKy8qIFB1c2ggcGFyc2Vycy4gICovCisj
ZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVMTCAx
CisKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCiAjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIC8q
IFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovCi0jZGVmaW5l
IHl5cGFyc2UgeGx1X19jZmdfeXlwYXJzZQotI2RlZmluZSB5eWxleCAgIHhsdV9fY2ZnX3l5bGV4
Ci0jZGVmaW5lIHl5ZXJyb3IgeGx1X19jZmdfeXllcnJvcgotI2RlZmluZSB5eWx2YWwgIHhsdV9f
Y2ZnX3l5bHZhbAotI2RlZmluZSB5eWNoYXIgIHhsdV9fY2ZnX3l5Y2hhcgotI2RlZmluZSB5eWRl
YnVnIHhsdV9fY2ZnX3l5ZGVidWcKLSNkZWZpbmUgeXluZXJycyB4bHVfX2NmZ195eW5lcnJzCi0j
ZGVmaW5lIHl5bGxvYyB4bHVfX2NmZ195eWxsb2MKLQotLyogVG9rZW5zLiAgKi8KLSNpZm5kZWYg
WVlUT0tFTlRZUEUKLSMgZGVmaW5lIFlZVE9LRU5UWVBFCi0gICAvKiBQdXQgdGhlIHRva2VucyBp
bnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKLSAg
ICAgIGtub3cgYWJvdXQgdGhlbS4gICovCi0gICBlbnVtIHl5dG9rZW50eXBlIHsKLSAgICAgSURF
TlQgPSAyNTgsCi0gICAgIFNUUklORyA9IDI1OSwKLSAgICAgTlVNQkVSID0gMjYwLAotICAgICBO
RVdMSU5FID0gMjYxCi0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBJREVO
VCAyNTgKLSNkZWZpbmUgU1RSSU5HIDI1OQotI2RlZmluZSBOVU1CRVIgMjYwCi0jZGVmaW5lIE5F
V0xJTkUgMjYxCi0KLQotCisjZGVmaW5lIHl5cGFyc2UgICAgICAgICB4bHVfX2NmZ195eXBhcnNl
CisjZGVmaW5lIHl5bGV4ICAgICAgICAgICB4bHVfX2NmZ195eWxleAorI2RlZmluZSB5eWVycm9y
ICAgICAgICAgeGx1X19jZmdfeXllcnJvcgorI2RlZmluZSB5eWx2YWwgICAgICAgICAgeGx1X19j
ZmdfeXlsdmFsCisjZGVmaW5lIHl5Y2hhciAgICAgICAgICB4bHVfX2NmZ195eWNoYXIKKyNkZWZp
bmUgeXlkZWJ1ZyAgICAgICAgIHhsdV9fY2ZnX3l5ZGVidWcKKyNkZWZpbmUgeXluZXJycyAgICAg
ICAgIHhsdV9fY2ZnX3l5bmVycnMKKyNkZWZpbmUgeXlsbG9jICAgICAgICAgIHhsdV9fY2ZnX3l5
bGxvYwogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8K
KworLyogTGluZSAyNjggb2YgeWFjYy5jICAqLwogI2xpbmUgMTkgImxpYnhsdV9jZmdfeS55Igog
CiAjZGVmaW5lIFlZTEVYX1BBUkFNIGN0eC0+c2Nhbm5lcgpAQCAtOTcsNiArODEsOSBAQAogI2lu
Y2x1ZGUgImxpYnhsdV9jZmdfbC5oIgogCiAKKy8qIExpbmUgMjY4IG9mIHlhY2MuYyAgKi8KKyNs
aW5lIDg2ICJsaWJ4bHVfY2ZnX3kuYyIKKwogLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KICNpZm5k
ZWYgWVlERUJVRwogIyBkZWZpbmUgWVlERUJVRyAwCkBAIC0xMTUsMTkgKzEwMiw0MCBAQAogIyBk
ZWZpbmUgWVlUT0tFTl9UQUJMRSAwCiAjZW5kaWYKIAorCisvKiBUb2tlbnMuICAqLworI2lmbmRl
ZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9rZW5z
IGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vycwor
ICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tlbnR5cGUgeworICAgICBJ
REVOVCA9IDI1OCwKKyAgICAgU1RSSU5HID0gMjU5LAorICAgICBOVU1CRVIgPSAyNjAsCisgICAg
IE5FV0xJTkUgPSAyNjEKKyAgIH07CisjZW5kaWYKKworCisKICNpZiAhIGRlZmluZWQgWVlTVFlQ
RSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiB1bmlvbiBZWVNUWVBF
Cit7CisKKy8qIExpbmUgMjkzIG9mIHlhY2MuYyAgKi8KICNsaW5lIDI1ICJsaWJ4bHVfY2ZnX3ku
eSIKLXsKKwogICBjaGFyICpzdHJpbmc7CiAgIFhMVV9Db25maWdTZXR0aW5nICpzZXR0aW5nOwot
fQotLyogTGluZSAxODcgb2YgeWFjYy5jLiAgKi8KLSNsaW5lIDEyNyAibGlieGx1X2NmZ195LmMi
Ci0JWVlTVFlQRTsKKworCisKKy8qIExpbmUgMjkzIG9mIHlhY2MuYyAgKi8KKyNsaW5lIDEzNSAi
bGlieGx1X2NmZ195LmMiCit9IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwg
MQogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhk
cmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBF
X0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKICNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmlu
ZWQgWVlMVFlQRV9JU19ERUNMQVJFRApAQCAtMTQ3LDggKzE1NSw4IEBAIHR5cGVkZWYgc3RydWN0
IFlZTFRZUEUKIC8qIENvcHkgdGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAg
Ki8KIAogCi0vKiBMaW5lIDIxNiBvZiB5YWNjLmMuICAqLwotI2xpbmUgMTUyICJsaWJ4bHVfY2Zn
X3kuYyIKKy8qIExpbmUgMzQzIG9mIHlhY2MuYyAgKi8KKyNsaW5lIDE2MCAibGlieGx1X2NmZ195
LmMiCiAKICNpZmRlZiBzaG9ydAogIyB1bmRlZiBzaG9ydApAQCAtMTk4LDcgKzIwNiw3IEBAIHR5
cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKICNkZWZpbmUgWVlTSVpFX01BWElNVU0gKChZ
WVNJWkVfVCkgLTEpCiAKICNpZm5kZWYgWVlfCi0jIGlmIFlZRU5BQkxFX05MUworIyBpZiBkZWZp
bmVkIFlZRU5BQkxFX05MUyAmJiBZWUVOQUJMRV9OTFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBp
bmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMg
ICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKQEAg
LTIyMywxNCArMjMxLDE0IEBAIHR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKICNpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgaW50Ci1ZWUlEIChp
bnQgaSkKK1lZSUQgKGludCB5eWkpCiAjZWxzZQogc3RhdGljIGludAotWVlJRCAoaSkKLSAgICBp
bnQgaTsKK1lZSUQgKHl5aSkKKyAgICBpbnQgeXlpOwogI2VuZGlmCiB7Ci0gIHJldHVybiBpOwor
ICByZXR1cm4geXlpOwogfQogI2VuZGlmCiAKQEAgLTI1MSwxMSArMjU5LDExIEBAIFlZSUQgKGkp
CiAjICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQogIyAgIGVsc2UKICMgICAgZGVmaW5lIFlZU1RB
Q0tfQUxMT0MgYWxsb2NhCi0jICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVk
IF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XAorIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1Mg
JiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwg
ZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogIyAgICAgaW5jbHVkZSA8
c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICAgIGlmbmRl
ZiBfU1RETElCX0gKLSMgICAgICBkZWZpbmUgX1NURExJQl9IIDEKKyMgICAgIGlmbmRlZiBFWElU
X1NVQ0NFU1MKKyMgICAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICAgIGVuZGlmCiAjICAg
IGVuZGlmCiAjICAgZW5kaWYKQEAgLTI3OCwyNCArMjg2LDI0IEBAIFlZSUQgKGkpCiAjICBpZm5k
ZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCiAjICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TSBZWVNJWkVfTUFYSU1VTQogIyAgZW5kaWYKLSMgIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzICYm
ICEgZGVmaW5lZCBfU1RETElCX0ggXAorIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgISBk
ZWZpbmVkIEVYSVRfU1VDQ0VTUyBcCiAgICAgICAgJiYgISAoKGRlZmluZWQgWVlNQUxMT0MgfHwg
ZGVmaW5lZCBtYWxsb2MpIFwKIAkgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVkIGZy
ZWUpKSkKICMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBT
UEFDRSAqLwotIyAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgZGVmaW5lIF9TVERMSUJfSCAxCisj
ICAgaWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICBl
bmRpZgogIyAgZW5kaWYKICMgIGlmbmRlZiBZWU1BTExPQwogIyAgIGRlZmluZSBZWU1BTExPQyBt
YWxsb2MKLSMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYg
KGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyMgICBpZiAhIGRl
ZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogdm9pZCAqbWFsbG9jIChZWVNJWkVfVCk7IC8qIElORlJJ
TkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5kaWYKICMgIGlmbmRl
ZiBZWUZSRUUKICMgICBkZWZpbmUgWVlGUkVFIGZyZWUKLSMgICBpZiAhIGRlZmluZWQgZnJlZSAm
JiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCisjICAgaWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIEVYSVRfU1VD
Q0VTUyAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAg
ICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiB2b2lkIGZyZWUg
KHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgpA
QCAtMzEyLDkgKzMyMCw5IEBAIHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVT
RVIKIC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1i
ZXIuICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQ
RSB5eXZzOwotICAgIFlZTFRZUEUgeXlsczsKKyAgeXl0eXBlX2ludDE2IHl5c3NfYWxsb2M7Cisg
IFlZU1RZUEUgeXl2c19hbGxvYzsKKyAgWVlMVFlQRSB5eWxzX2FsbG9jOwogfTsKIAogLyogVGhl
IHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRo
ZSBuZXh0LiAgKi8KQEAgLTMyNiw2ICszMzQsMjcgQEAgdW5pb24geXlhbGxvYwogICAgICAoKE4p
ICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkgKyBzaXplb2YgKFlZ
TFRZUEUpKSBcCiAgICAgICArIDIgKiBZWVNUQUNLX0dBUF9NQVhJTVVNKQogCisjIGRlZmluZSBZ
WUNPUFlfTkVFREVEIDEKKworLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9u
IHRvIHRoZSBuZXcgb25lLiAgVGhlCisgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNU
QUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKKyAgIGVsZW1lbnRzIGluIHRo
ZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCisgICBzdGFj
ay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUg
bmV4dAorICAgc3RhY2suICAqLworIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFja19hbGxv
YywgU3RhY2spCQkJCVwKKyAgICBkbwkJCQkJCQkJCVwKKyAgICAgIHsJCQkJCQkJCQlcCisJWVlT
SVpFX1QgeXluZXdieXRlczsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBT
dGFjaywgeXlzaXplKTsJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAor
CXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQ
X01BWElNVU07IFwKKwl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlc
CisgICAgICB9CQkJCQkJCQkJXAorICAgIHdoaWxlIChZWUlEICgwKSkKKworI2VuZGlmCisKKyNp
ZiBkZWZpbmVkIFlZQ09QWV9ORUVERUQgJiYgWVlDT1BZX05FRURFRAogLyogQ29weSBDT1VOVCBv
YmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCiAg
ICBub3Qgb3ZlcmxhcC4gICovCiAjIGlmbmRlZiBZWUNPUFkKQEAgLTM0MywyNCArMzcyLDcgQEAg
dW5pb24geXlhbGxvYwogICAgICAgd2hpbGUgKFlZSUQgKDApKQogIyAgZW5kaWYKICMgZW5kaWYK
LQotLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25l
LiAgVGhlCi0gICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZlIHRo
ZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKLSAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZ
UFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCi0gICBzdGFjay4gIEFkdmFuY2UgWVlQ
VFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAotICAgc3RhY2su
ICAqLwotIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKLSAgICBkbwkJCQkJ
CQkJCVwKLSAgICAgIHsJCQkJCQkJCQlcCi0JWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0J
WVlDT1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5
cHRyLT5TdGFjazsJCQkJCQlcCi0JeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgq
U3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAotCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBz
aXplb2YgKCp5eXB0cik7CQkJCVwKLSAgICAgIH0JCQkJCQkJCQlcCi0gICAgd2hpbGUgKFlZSUQg
KDApKQotCi0jZW5kaWYKKyNlbmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLwogCiAvKiBZWUZJTkFM
IC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwogI2RlZmluZSBZ
WUZJTkFMICAyCkBAIC00NTEsNyArNDYzLDcgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5
eXJsaW5lW10gPQogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiB7CiAgICIk
ZW5kIiwgImVycm9yIiwgIiR1bmRlZmluZWQiLCAiSURFTlQiLCAiU1RSSU5HIiwgIk5VTUJFUiIs
ICJORVdMSU5FIiwKLSAgIic9JyIsICInOyciLCAiJ1snIiwgIiddJyIsICInLCciLCAiJGFjY2Vw
dCIsICJmaWxlIiwgInNldHRpbmciLCAiQDEiLAorICAiJz0nIiwgIic7JyIsICInWyciLCAiJ10n
IiwgIicsJyIsICIkYWNjZXB0IiwgImZpbGUiLCAic2V0dGluZyIsICIkQDEiLAogICAiZW5kc3Rt
dCIsICJ2YWx1ZSIsICJhdG9tIiwgInZhbHVlbGlzdCIsICJ2YWx1ZXMiLCAibmxvayIsIDAKIH07
CiAjZW5kaWYKQEAgLTQ4Miw4ICs0OTQsOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5
cjJbXSA9CiAgICAgICAgMgogfTsKIAotLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVs
dCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCi0gICBTVEFURS1OVU0gd2hlbiBZWVRBQkxF
IGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KKy8qIFlZREVGQUNU
W1NUQVRFLU5BTUVdIC0tIERlZmF1bHQgcmVkdWN0aW9uIG51bWJlciBpbiBzdGF0ZSBTVEFURS1O
VU0uCisgICBQZXJmb3JtZWQgd2hlbiBZWVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcg
ZWxzZSB0byBkby4gIFplcm8KICAgIG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8K
IHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9CiB7CkBAIC01MTYsOCArNTI4
LDcgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cGdvdG9bXSA9CiAKIC8qIFlZVEFCTEVb
WVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgog
ICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBy
dWxlIHdoaWNoCi0gICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZ
WURFRkFDVCBzYXlzLgotICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLworICAg
bnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAg
Ki8KICNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5
dGFibGVbXSA9CiB7CkBAIC01MjYsNiArNTM3LDEyIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDggeXl0YWJsZVtdID0KICAgICAgIDI1LCAgICAyNCwgICAgMTgsICAgIDIyCiB9OwogCisjZGVm
aW5lIHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0KHl5c3RhdGUpIFwKKyAgKCh5eXN0YXRlKSA9PSAo
LTE3KSkKKworI2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKHl5dGFibGVfdmFsdWUpIFwK
KyAgWVlJRCAoMCkKKwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eWNoZWNrW10gPQogewog
ICAgICAgMTYsICAgICAwLCAgICAgMSwgICAgIDYsICAgICAzLCAgICAxOSwgICAgIDYsICAgICA2
LCAgICAgOCwgICAgIDgsCkBAIC01NTQsOSArNTcxLDE4IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVf
dWludDggeXlzdG9zW10gPQogCiAvKiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNhbGwgeXllcnJv
ci4gIFRoaXMgcmVtYWlucyBoZXJlIHRlbXBvcmFyaWx5CiAgICB0byBlYXNlIHRoZSB0cmFuc2l0
aW9uIHRvIHRoZSBuZXcgbWVhbmluZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgotICAgT25jZSBHQ0Mg
dmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICAqLworICAg
T25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28u
ICBIb3dldmVyLAorICAgWVlGQUlMIGFwcGVhcnMgdG8gYmUgaW4gdXNlLiAgTmV2ZXJ0aGVsZXNz
LCBpdCBpcyBmb3JtYWxseSBkZXByZWNhdGVkCisgICBpbiBCaXNvbiAyLjQuMidzIE5FV1MgZW50
cnksIHdoZXJlIGEgcGxhbiB0byBwaGFzZSBpdCBvdXQgaXMKKyAgIGRpc2N1c3NlZC4gICovCiAK
ICNkZWZpbmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCisjaWYgZGVmaW5lZCBZWUZBSUwKKyAgLyog
VGhpcyBpcyBoZXJlIHRvIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIEdDQyBjcHAncworICAg
ICAtV3VudXNlZC1tYWNyb3MuICBOb3JtYWxseSB3ZSBkb24ndCB3b3JyeSBhYm91dCB0aGF0IHdh
cm5pbmcsIGJ1dAorICAgICBzb21lIHVzZXJzIGRvLCBhbmQgd2Ugd2FudCB0byBtYWtlIGl0IGVh
c3kgZm9yIHVzZXJzIHRvIHJlbW92ZQorICAgICBZWUZBSUwgdXNlcywgd2hpY2ggd2lsbCBwcm9k
dWNlIHdhcm5pbmdzIGZyb20gQmlzb24gMi41LiAgKi8KKyNlbmRpZgogCiAjZGVmaW5lIFlZUkVD
T1ZFUklORygpICAoISF5eWVycnN0YXR1cykKIApAQCAtNTY2LDcgKzU5Miw2IEBAIGRvCQkJCQkJ
CQlcCiAgICAgewkJCQkJCQkJXAogICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJCQlcCiAgICAg
ICB5eWx2YWwgPSAoVmFsdWUpOwkJCQkJCVwKLSAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAo
eXljaGFyKTsJCQkJXAogICAgICAgWVlQT1BTVEFDSyAoMSk7CQkJCQkJXAogICAgICAgZ290byB5
eWJhY2t1cDsJCQkJCQlcCiAgICAgfQkJCQkJCQkJXApAQCAtNjEzLDcgKzYzOCw3IEBAIHdoaWxl
IChZWUlEICgwKSkKICAgIHdlIHdvbid0IGJyZWFrIHVzZXIgY29kZTogd2hlbiB0aGVzZSBhcmUg
dGhlIGxvY2F0aW9ucyB3ZSBrbm93LiAgKi8KIAogI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAot
IyBpZiBZWUxUWVBFX0lTX1RSSVZJQUwKKyMgaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwg
JiYgWVlMVFlQRV9JU19UUklWSUFMCiAjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwg
TG9jKQkJCVwKICAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVkLSVkLiVkIiwJCQlcCiAJICAgICAg
KExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1uLAlcCkBAIC03MzIsMTcgKzc1Nywy
MCBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAjaWYgKGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBf
X2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3By
aW50ICh5eXR5cGVfaW50MTYgKmJvdHRvbSwgeXl0eXBlX2ludDE2ICp0b3ApCit5eV9zdGFja19w
cmludCAoeXl0eXBlX2ludDE2ICp5eWJvdHRvbSwgeXl0eXBlX2ludDE2ICp5eXRvcCkKICNlbHNl
CiBzdGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKGJvdHRvbSwgdG9wKQotICAgIHl5dHlwZV9p
bnQxNiAqYm90dG9tOwotICAgIHl5dHlwZV9pbnQxNiAqdG9wOworeXlfc3RhY2tfcHJpbnQgKHl5
Ym90dG9tLCB5eXRvcCkKKyAgICB5eXR5cGVfaW50MTYgKnl5Ym90dG9tOworICAgIHl5dHlwZV9p
bnQxNiAqeXl0b3A7CiAjZW5kaWYKIHsKICAgWVlGUFJJTlRGIChzdGRlcnIsICJTdGFjayBub3ci
KTsKLSAgZm9yICg7IGJvdHRvbSA8PSB0b3A7ICsrYm90dG9tKQotICAgIFlZRlBSSU5URiAoc3Rk
ZXJyLCAiICVkIiwgKmJvdHRvbSk7CisgIGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsgeXlib3R0
b20rKykKKyAgICB7CisgICAgICBpbnQgeXlib3QgPSAqeXlib3R0b207CisgICAgICBZWUZQUklO
VEYgKHN0ZGVyciwgIiAlZCIsIHl5Ym90KTsKKyAgICB9CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
XG4iKTsKIH0KIApAQCAtNzc4LDExICs4MDYsMTEgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
eXlsc3AsIHl5cnVsZSwgYwogICAvKiBUaGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLiAgKi8KICAg
Zm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQogICAgIHsKLSAgICAgIGZwcmludGYg
KHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIs
ICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5
eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAt
ICh5eW5yaHMpXSkKIAkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCQkg
ICAgICAgLCBjdHgpOwotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKyAgICAgIFlZRlBS
SU5URiAoc3RkZXJyLCAiXG4iKTsKICAgICB9CiB9CiAKQEAgLTgyMCw3ICs4NDgsNiBAQCBpbnQg
eXlkZWJ1ZzsKICNlbmRpZgogCiAKLQogI2lmIFlZRVJST1JfVkVSQk9TRQogCiAjIGlmbmRlZiB5
eXN0cmxlbgpAQCAtOTIyLDExNiArOTQ5LDE0MyBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBj
b25zdCBjaGFyICp5eXN0CiB9CiAjIGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBl
cnJvciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUg
aW4gc3RhdGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAg
IGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVs
bCwgZG8gbm90Ci0gICBjb3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5
dGVzIHRoYXQgd291bGQgYmUKLSAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4g
MCBpZiBhbiBvcmRpbmFyeSAic3ludGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0
dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2Fs
Y3VsYXRpb24uICAqLwotc3RhdGljIFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXly
ZXN1bHQsIGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywgd2hp
Y2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRo
ZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3Ag
aXMKKyAgIFlZU1NQLgorCisgICBSZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxseSB3
cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhv
bGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxMT0Mg
dG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAgcmVx
dWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0aWMg
aW50Cit5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltc2cs
CisgICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7Ci0g
IGludCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1l
cnIgKDAsIHl5dG5hbWVbeXl0b2tlbl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOwor
ICBZWVNJWkVfVCB5eXNpemUxOworICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1V
TSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8KKyAgY29u
c3QgY2hhciAqeXlmb3JtYXQgPSAwOworICAvKiBBcmd1bWVudHMgb2YgeXlmb3JtYXQuICovCisg
IGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOworICAvKiBO
dW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3RlZCIsIG9uZSBw
ZXIKKyAgICAgImV4cGVjdGVkIikuICovCisgIGludCB5eWNvdW50ID0gMDsKIAotICBpZiAoISAo
WVlQQUNUX05JTkYgPCB5eW4gJiYgeXluIDw9IFlZTEFTVCkpCi0gICAgcmV0dXJuIDA7Ci0gIGVs
c2UKKyAgLyogVGhlcmUgYXJlIG1hbnkgcG9zc2liaWxpdGllcyBoZXJlIHRvIGNvbnNpZGVyOgor
ICAgICAtIEFzc3VtZSBZWUZBSUwgaXMgbm90IHVzZWQuICBJdCdzIHRvbyBmbGF3ZWQgdG8gY29u
c2lkZXIuICBTZWUKKyAgICAgICA8aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2Jp
c29uLXBhdGNoZXMvMjAwOS0xMi9tc2cwMDAyNC5odG1sPgorICAgICAgIGZvciBkZXRhaWxzLiAg
WVlFUlJPUiBpcyBmaW5lIGFzIGl0IGRvZXMgbm90IGludm9rZSB0aGlzCisgICAgICAgZnVuY3Rp
b24uCisgICAgIC0gSWYgdGhpcyBzdGF0ZSBpcyBhIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRl
ZmF1bHQgYWN0aW9uLCB0aGVuCisgICAgICAgdGhlIG9ubHkgd2F5IHRoaXMgZnVuY3Rpb24gd2Fz
IGludm9rZWQgaXMgaWYgdGhlIGRlZmF1bHQgYWN0aW9uCisgICAgICAgaXMgYW4gZXJyb3IgYWN0
aW9uLiAgSW4gdGhhdCBjYXNlLCBkb24ndCBjaGVjayBmb3IgZXhwZWN0ZWQKKyAgICAgICB0b2tl
bnMgYmVjYXVzZSB0aGVyZSBhcmUgbm9uZS4KKyAgICAgLSBUaGUgb25seSB3YXkgdGhlcmUgY2Fu
IGJlIG5vIGxvb2thaGVhZCBwcmVzZW50IChpbiB5eWNoYXIpIGlzIGlmCisgICAgICAgdGhpcyBz
dGF0ZSBpcyBhIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLiAgVGh1cywK
KyAgICAgICBkZXRlY3RpbmcgdGhlIGFic2VuY2Ugb2YgYSBsb29rYWhlYWQgaXMgc3VmZmljaWVu
dCB0byBkZXRlcm1pbmUKKyAgICAgICB0aGF0IHRoZXJlIGlzIG5vIHVuZXhwZWN0ZWQgb3IgZXhw
ZWN0ZWQgdG9rZW4gdG8gcmVwb3J0LiAgSW4gdGhhdAorICAgICAgIGNhc2UsIGp1c3QgcmVwb3J0
IGEgc2ltcGxlICJzeW50YXggZXJyb3IiLgorICAgICAtIERvbid0IGFzc3VtZSB0aGVyZSBpc24n
dCBhIGxvb2thaGVhZCBqdXN0IGJlY2F1c2UgdGhpcyBzdGF0ZSBpcyBhCisgICAgICAgY29uc2lz
dGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaGVyZSBtaWdodCBoYXZlIGJlZW4g
YQorICAgICAgIHByZXZpb3VzIGluY29uc2lzdGVudCBzdGF0ZSwgY29uc2lzdGVudCBzdGF0ZSB3
aXRoIGEgbm9uLWRlZmF1bHQKKyAgICAgICBhY3Rpb24sIG9yIHVzZXIgc2VtYW50aWMgYWN0aW9u
IHRoYXQgbWFuaXB1bGF0ZWQgeXljaGFyLgorICAgICAtIE9mIGNvdXJzZSwgdGhlIGV4cGVjdGVk
IHRva2VuIGxpc3QgZGVwZW5kcyBvbiBzdGF0ZXMgdG8gaGF2ZQorICAgICAgIGNvcnJlY3QgbG9v
a2FoZWFkIGluZm9ybWF0aW9uLCBhbmQgaXQgZGVwZW5kcyBvbiB0aGUgcGFyc2VyIG5vdAorICAg
ICAgIHRvIHBlcmZvcm0gZXh0cmEgcmVkdWN0aW9ucyBhZnRlciBmZXRjaGluZyBhIGxvb2thaGVh
ZCBmcm9tIHRoZQorICAgICAgIHNjYW5uZXIgYW5kIGJlZm9yZSBkZXRlY3RpbmcgYSBzeW50YXgg
ZXJyb3IuICBUaHVzLCBzdGF0ZSBtZXJnaW5nCisgICAgICAgKGZyb20gTEFMUiBvciBJRUxSKSBh
bmQgZGVmYXVsdCByZWR1Y3Rpb25zIGNvcnJ1cHQgdGhlIGV4cGVjdGVkCisgICAgICAgdG9rZW4g
bGlzdC4gIEhvd2V2ZXIsIHRoZSBsaXN0IGlzIGNvcnJlY3QgZm9yIGNhbm9uaWNhbCBMUiB3aXRo
CisgICAgICAgb25lIGV4Y2VwdGlvbjogaXQgd2lsbCBzdGlsbCBjb250YWluIGFueSB0b2tlbiB0
aGF0IHdpbGwgbm90IGJlCisgICAgICAgYWNjZXB0ZWQgZHVlIHRvIGFuIGVycm9yIGFjdGlvbiBp
biBhIGxhdGVyIHN0YXRlLgorICAqLworICBpZiAoeXl0b2tlbiAhPSBZWUVNUFRZKQogICAgIHsK
LSAgICAgIGludCB5eXR5cGUgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKLSAgICAgIFlZU0laRV9U
IHl5c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl0eXBlXSk7Ci0gICAgICBZWVNJWkVf
VCB5eXNpemUgPSB5eXNpemUwOwotICAgICAgWVlTSVpFX1QgeXlzaXplMTsKLSAgICAgIGludCB5
eXNpemVfb3ZlcmZsb3cgPSAwOwotICAgICAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01B
WElNVU0gPSA1IH07Ci0gICAgICBjaGFyIGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJH
U19NQVhJTVVNXTsKLSAgICAgIGludCB5eXg7CisgICAgICBpbnQgeXluID0geXlwYWN0Wyp5eXNz
cF07CisgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAgICAgIGlm
ICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICAv
KiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVz
IGluCisgICAgICAgICAgICAgWVlDSEVDSy4gIEluIG90aGVyIHdvcmRzLCBza2lwIHRoZSBmaXJz
dCAtWVlOIGFjdGlvbnMgZm9yCisgICAgICAgICAgICAgdGhpcyBzdGF0ZSBiZWNhdXNlIHRoZXkg
YXJlIGRlZmF1bHQgYWN0aW9ucy4gICovCisgICAgICAgICAgaW50IHl5eGJlZ2luID0geXluIDwg
MCA/IC15eW4gOiAwOworICAgICAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5
Y2hlY2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNU
IC0geXluICsgMTsKKyAgICAgICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VO
UyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7CisgICAgICAgICAgaW50IHl5eDsKIAotIyBpZiAw
Ci0gICAgICAvKiBUaGlzIGlzIHNvIHhnZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJsZSBmb3Jt
YXRzIHRoYXQgYXJlCi0JIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkuICAqLwotICAgICAgWVlfKCJz
eW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1
bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1
bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKLSAgICAgIFlZ
Xygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMg
b3IgJXMiKTsKLSMgZW5kaWYKLSAgICAgIGNoYXIgKnl5Zm10OwotICAgICAgY2hhciBjb25zdCAq
eXlmOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzIjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhwZWN0aW5n
W10gPSAiLCBleHBlY3RpbmcgJXMiOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlvcltdID0g
IiBvciAlcyI7Ci0gICAgICBjaGFyIHl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQKLQkJICAg
ICsgc2l6ZW9mIHl5ZXhwZWN0aW5nIC0gMQotCQkgICAgKyAoKFlZRVJST1JfVkVSQk9TRV9BUkdT
X01BWElNVU0gLSAyKQotCQkgICAgICAgKiAoc2l6ZW9mIHl5b3IgLSAxKSldOwotICAgICAgY2hh
ciBjb25zdCAqeXlwcmVmaXggPSB5eWV4cGVjdGluZzsKKyAgICAgICAgICBmb3IgKHl5eCA9IHl5
eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tbeXl4
ICsgeXluXSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYgIXl5
dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19N
QVhJTVVNKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB5eWNvdW50
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeXlh
cmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAgICAgICB5eXNpemUxID0g
eXlzaXplICsgeXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5eF0pOworICAgICAgICAgICAgICAgIGlm
ICghICh5eXNpemUgPD0geXlzaXplMQorICAgICAgICAgICAgICAgICAgICAgICAmJiB5eXNpemUx
IDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICAgICAgICAgICAgICByZXR1cm4gMjsK
KyAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNpemUxOworICAgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CiAKLSAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRv
IGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KLQkgWVlDSEVDSy4gICovCi0gICAgICBpbnQgeXl4
YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7CisgIHN3aXRjaCAoeXljb3VudCkKKyAgICB7Cisj
IGRlZmluZSBZWUNBU0VfKE4sIFMpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGNhc2Ug
TjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eWZvcm1hdCA9IFM7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBicmVhaworICAgICAgWVlDQVNFXygwLCBZ
WV8oInN5bnRheCBlcnJvciIpKTsKKyAgICAgIFlZQ0FTRV8oMSwgWVlfKCJzeW50YXggZXJyb3Is
IHVuZXhwZWN0ZWQgJXMiKSk7CisgICAgICBZWUNBU0VfKDIsIFlZXygic3ludGF4IGVycm9yLCB1
bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKSk7CisgICAgICBZWUNBU0VfKDMsIFlZXygic3lu
dGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKSk7CisgICAgICBZ
WUNBU0VfKDQsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMg
b3IgJXMgb3IgJXMiKSk7CisgICAgICBZWUNBU0VfKDUsIFlZXygic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKSk7CisjIHVuZGVmIFlZ
Q0FTRV8KKyAgICB9CiAKLSAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hl
Y2sgYW5kIHl5dG5hbWUuICAqLwotICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW4g
KyAxOwotICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNr
bGltIDogWVlOVE9LRU5TOwotICAgICAgaW50IHl5Y291bnQgPSAxOworICB5eXNpemUxID0geXlz
aXplICsgeXlzdHJsZW4gKHl5Zm9ybWF0KTsKKyAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxICYm
IHl5c2l6ZTEgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICByZXR1cm4gMjsKKyAgeXlz
aXplID0geXlzaXplMTsKIAotICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5dHlwZV07Ci0gICAg
ICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsKKyAgaWYgKCp5eW1z
Z19hbGxvYyA8IHl5c2l6ZSkKKyAgICB7CisgICAgICAqeXltc2dfYWxsb2MgPSAyICogeXlzaXpl
OworICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKKyAgICAgICAgICAgICAmJiAq
eXltc2dfYWxsb2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgKnl5bXNnX2Fs
bG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOworICAgICAgcmV0dXJuIDE7CisgICAgfQogCi0g
ICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQotCWlmICh5eWNo
ZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUikKLQkgIHsKLQkgICAgaWYg
KHl5Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSkKLQkgICAgICB7Ci0JCXl5
Y291bnQgPSAxOwotCQl5eXNpemUgPSB5eXNpemUwOwotCQl5eWZvcm1hdFtzaXplb2YgeXl1bmV4
cGVjdGVkIC0gMV0gPSAnXDAnOwotCQlicmVhazsKLQkgICAgICB9Ci0JICAgIHl5YXJnW3l5Y291
bnQrK10gPSB5eXRuYW1lW3l5eF07Ci0JICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIg
KDAsIHl5dG5hbWVbeXl4XSk7Ci0JICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5
c2l6ZSk7Ci0JICAgIHl5c2l6ZSA9IHl5c2l6ZTE7Ci0JICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5
Zm10LCB5eXByZWZpeCk7Ci0JICAgIHl5cHJlZml4ID0geXlvcjsKLQkgIH0KLQotICAgICAgeXlm
ID0gWVlfKHl5Zm9ybWF0KTsKLSAgICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlm
KTsKLSAgICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0gICAgICB5
eXNpemUgPSB5eXNpemUxOwotCi0gICAgICBpZiAoeXlzaXplX292ZXJmbG93KQotCXJldHVybiBZ
WVNJWkVfTUFYSU1VTTsKLQotICAgICAgaWYgKHl5cmVzdWx0KQotCXsKLQkgIC8qIEF2b2lkIHNw
cmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KLQkgICAg
IERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCi0J
ICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAq
LwotCSAgY2hhciAqeXlwID0geXlyZXN1bHQ7Ci0JICBpbnQgeXlpID0gMDsKLQkgIHdoaWxlICgo
Knl5cCA9ICp5eWYpICE9ICdcMCcpCi0JICAgIHsKLQkgICAgICBpZiAoKnl5cCA9PSAnJScgJiYg
eXlmWzFdID09ICdzJyAmJiB5eWkgPCB5eWNvdW50KQotCQl7Ci0JCSAgeXlwICs9IHl5dG5hbWVy
ciAoeXlwLCB5eWFyZ1t5eWkrK10pOwotCQkgIHl5ZiArPSAyOwotCQl9Ci0JICAgICAgZWxzZQot
CQl7Ci0JCSAgeXlwKys7Ci0JCSAgeXlmKys7Ci0JCX0KLQkgICAgfQotCX0KLSAgICAgIHJldHVy
biB5eXNpemU7Ci0gICAgfQorICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0IGluZnJpbmdlcyBv
biB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCisgICAgIERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2
aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCisgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGgg
dGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCisgIHsKKyAgICBjaGFyICp5eXAgPSAqeXlt
c2c7CisgICAgaW50IHl5aSA9IDA7CisgICAgd2hpbGUgKCgqeXlwID0gKnl5Zm9ybWF0KSAhPSAn
XDAnKQorICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5Zm9ybWF0WzFdID09ICdzJyAmJiB5eWkg
PCB5eWNvdW50KQorICAgICAgICB7CisgICAgICAgICAgeXlwICs9IHl5dG5hbWVyciAoeXlwLCB5
eWFyZ1t5eWkrK10pOworICAgICAgICAgIHl5Zm9ybWF0ICs9IDI7CisgICAgICAgIH0KKyAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHl5cCsrOworICAgICAgICAgIHl5Zm9ybWF0Kys7
CisgICAgICAgIH0KKyAgfQorICByZXR1cm4gMDsKIH0KICNlbmRpZiAvKiBZWUVSUk9SX1ZFUkJP
U0UgKi8KIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLgogfCBSZWxlYXNlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwK
IGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0x
MDYyLDM5ICsxMTE2LDY3IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCB5
eWwKICAgc3dpdGNoICh5eXR5cGUpCiAgICAgewogICAgICAgY2FzZSAzOiAvKiAiSURFTlQiICov
CisKKy8qIExpbmUgMTM5MSBvZiB5YWNjLmMgICovCiAjbGluZSA0MCAibGlieGx1X2NmZ195Lnki
CiAJeyBmcmVlKCh5eXZhbHVlcC0+c3RyaW5nKSk7IH07Ci0jbGluZSAxMDY4ICJsaWJ4bHVfY2Zn
X3kuYyIKKworLyogTGluZSAxMzkxIG9mIHlhY2MuYyAgKi8KKyNsaW5lIDExMjYgImxpYnhsdV9j
ZmdfeS5jIgogCWJyZWFrOwogICAgICAgY2FzZSA0OiAvKiAiU1RSSU5HIiAqLworCisvKiBMaW5l
IDEzOTEgb2YgeWFjYy5jICAqLwogI2xpbmUgNDAgImxpYnhsdV9jZmdfeS55IgogCXsgZnJlZSgo
eXl2YWx1ZXAtPnN0cmluZykpOyB9OwotI2xpbmUgMTA3MyAibGlieGx1X2NmZ195LmMiCisKKy8q
IExpbmUgMTM5MSBvZiB5YWNjLmMgICovCisjbGluZSAxMTM1ICJsaWJ4bHVfY2ZnX3kuYyIKIAli
cmVhazsKICAgICAgIGNhc2UgNTogLyogIk5VTUJFUiIgKi8KKworLyogTGluZSAxMzkxIG9mIHlh
Y2MuYyAgKi8KICNsaW5lIDQwICJsaWJ4bHVfY2ZnX3kueSIKIAl7IGZyZWUoKHl5dmFsdWVwLT5z
dHJpbmcpKTsgfTsKLSNsaW5lIDEwNzggImxpYnhsdV9jZmdfeS5jIgorCisvKiBMaW5lIDEzOTEg
b2YgeWFjYy5jICAqLworI2xpbmUgMTE0NCAibGlieGx1X2NmZ195LmMiCiAJYnJlYWs7CiAgICAg
ICBjYXNlIDE3OiAvKiAidmFsdWUiICovCisKKy8qIExpbmUgMTM5MSBvZiB5YWNjLmMgICovCiAj
bGluZSA0MyAibGlieGx1X2NmZ195LnkiCiAJeyB4bHVfX2NmZ19zZXRfZnJlZSgoeXl2YWx1ZXAt
PnNldHRpbmcpKTsgfTsKLSNsaW5lIDEwODMgImxpYnhsdV9jZmdfeS5jIgorCisvKiBMaW5lIDEz
OTEgb2YgeWFjYy5jICAqLworI2xpbmUgMTE1MyAibGlieGx1X2NmZ195LmMiCiAJYnJlYWs7CiAg
ICAgICBjYXNlIDE4OiAvKiAiYXRvbSIgKi8KKworLyogTGluZSAxMzkxIG9mIHlhY2MuYyAgKi8K
ICNsaW5lIDQwICJsaWJ4bHVfY2ZnX3kueSIKIAl7IGZyZWUoKHl5dmFsdWVwLT5zdHJpbmcpKTsg
fTsKLSNsaW5lIDEwODggImxpYnhsdV9jZmdfeS5jIgorCisvKiBMaW5lIDEzOTEgb2YgeWFjYy5j
ICAqLworI2xpbmUgMTE2MiAibGlieGx1X2NmZ195LmMiCiAJYnJlYWs7CiAgICAgICBjYXNlIDE5
OiAvKiAidmFsdWVsaXN0IiAqLworCisvKiBMaW5lIDEzOTEgb2YgeWFjYy5jICAqLwogI2xpbmUg
NDMgImxpYnhsdV9jZmdfeS55IgogCXsgeGx1X19jZmdfc2V0X2ZyZWUoKHl5dmFsdWVwLT5zZXR0
aW5nKSk7IH07Ci0jbGluZSAxMDkzICJsaWJ4bHVfY2ZnX3kuYyIKKworLyogTGluZSAxMzkxIG9m
IHlhY2MuYyAgKi8KKyNsaW5lIDExNzEgImxpYnhsdV9jZmdfeS5jIgogCWJyZWFrOwogICAgICAg
Y2FzZSAyMDogLyogInZhbHVlcyIgKi8KKworLyogTGluZSAxMzkxIG9mIHlhY2MuYyAgKi8KICNs
aW5lIDQzICJsaWJ4bHVfY2ZnX3kueSIKIAl7IHhsdV9fY2ZnX3NldF9mcmVlKCh5eXZhbHVlcC0+
c2V0dGluZykpOyB9OwotI2xpbmUgMTA5OCAibGlieGx1X2NmZ195LmMiCisKKy8qIExpbmUgMTM5
MSBvZiB5YWNjLmMgICovCisjbGluZSAxMTgwICJsaWJ4bHVfY2ZnX3kuYyIKIAlicmVhazsKIAog
ICAgICAgZGVmYXVsdDoKQEAgLTExMDQsNyArMTE4Niw2IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5
eXR5cGUsIHl5dmFsdWVwLCB5eWwKIAogCiAvKiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdtaXNz
aW5nLXByb3RvdHlwZXMuICAqLwotCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQogI2lmIGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwogaW50IHl5cGFyc2UgKHZvaWQgKllZUEFS
U0VfUEFSQU0pOwpAQCAtMTEyMCwxMCArMTIwMSw2IEBAIGludCB5eXBhcnNlICgpOwogI2VuZGlm
IC8qICEgWVlQQVJTRV9QQVJBTSAqLwogCiAKLQotCi0KLQogLyotLS0tLS0tLS0tLgogfCB5eXBh
cnNlLiAgfAogYC0tLS0tLS0tLS0qLwpAQCAtMTE1MCwyNCArMTIyNyw1OSBAQCB5eXBhcnNlIChj
dHgpCiAjZW5kaWYKICNlbmRpZgogewotICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLwor
LyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFu
dGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCisvKiBUaGUgc2VtYW50aWMg
dmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwogWVlTVFlQRSB5eWx2YWw7CiAKLS8q
IE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCi1pbnQgeXluZXJyczsKLS8qIExv
Y2F0aW9uIGRhdGEgZm9yIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCisvKiBMb2NhdGlvbiBk
YXRhIGZvciB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBZWUxUWVBFIHl5bGxvYzsKIAotICBp
bnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLwor
ICAgIGludCB5eW5lcnJzOworCisgICAgaW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVyIG9mIHRv
a2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisgICAgaW50
IHl5ZXJyc3RhdHVzOworCisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6CisgICAg
ICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8g
c2VtYW50aWMgdmFsdWVzLgorICAgICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCisK
KyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFs
bG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8K
KworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZ
SU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5
eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQ
RSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5
eXZzcDsKKworICAgIC8qIFRoZSBsb2NhdGlvbiBzdGFjay4gICovCisgICAgWVlMVFlQRSB5eWxz
YVtZWUlOSVRERVBUSF07CisgICAgWVlMVFlQRSAqeXlsczsKKyAgICBZWUxUWVBFICp5eWxzcDsK
KworICAgIC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVk
LiAgKi8KKyAgICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbM107CisKKyAgICBZWVNJWkVfVCB5eXN0
YWNrc2l6ZTsKKwogICBpbnQgeXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0
b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQg
eXllcnJzdGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5z
bGF0ZWQpIHRva2VuIG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsKKyAgLyogTG9va2Fo
ZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwor
ICBpbnQgeXl0b2tlbjsKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRp
YyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8K
KyAgWVlTVFlQRSB5eXZhbDsKKyAgWVlMVFlQRSB5eWxvYzsKKwogI2lmIFlZRVJST1JfVkVSQk9T
RQogICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXpl
LiAgKi8KICAgY2hhciB5eW1zZ2J1ZlsxMjhdOwpAQCAtMTE3NSw2MyArMTI4NywzNyBAQCBZWUxU
WVBFIHl5bGxvYzsKICAgWVlTSVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CiAj
ZW5kaWYKIAotICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6
IHJlbGF0ZWQgdG8gc3RhdGVzLAotICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFs
dWVzLAotICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgotCi0gICAgIFJlZmVyIHRv
IHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwot
ICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KLQotICAvKiBUaGUgc3RhdGUg
c3RhY2suICAqLwotICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJTklUREVQVEhdOwotICB5eXR5cGVf
aW50MTYgKnl5c3MgPSB5eXNzYTsKLSAgeXl0eXBlX2ludDE2ICp5eXNzcDsKLQotICAvKiBUaGUg
c2VtYW50aWMgdmFsdWUgc3RhY2suICAqLwotICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsK
LSAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwotICBZWVNUWVBFICp5eXZzcDsKLQotICAvKiBUaGUg
bG9jYXRpb24gc3RhY2suICAqLwotICBZWUxUWVBFIHl5bHNhW1lZSU5JVERFUFRIXTsKLSAgWVlM
VFlQRSAqeXlscyA9IHl5bHNhOwotICBZWUxUWVBFICp5eWxzcDsKLSAgLyogVGhlIGxvY2F0aW9u
cyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQgZW5kZWQuICAqLwotICBZWUxUWVBFIHl5ZXJy
b3JfcmFuZ2VbMl07Ci0KICNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5
c3NwIC09IChOKSwgeXlsc3AgLT0gKE4pKQogCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJ
TklUREVQVEg7Ci0KLSAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2
YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKLSAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSAg
WVlTVFlQRSB5eXZhbDsKLSAgWVlMVFlQRSB5eWxvYzsKLQogICAvKiBUaGUgbnVtYmVyIG9mIHN5
bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8g
d2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAK
KyAgeXl0b2tlbiA9IDA7CisgIHl5c3MgPSB5eXNzYTsKKyAgeXl2cyA9IHl5dnNhOworICB5eWxz
ID0geXlsc2E7CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5eXN0YXRlID0gMDsKICAgeXllcnJz
dGF0dXMgPSAwOwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNl
IGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7IC8qIENhdXNlIGEg
dG9rZW4gdG8gYmUgcmVhZC4gICovCiAKICAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4K
ICAgICAgV2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCiAgICAg
IHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4K
ICAgICAgVGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLwotCiAg
IHl5c3NwID0geXlzczsKICAgeXl2c3AgPSB5eXZzOwogICB5eWxzcCA9IHl5bHM7Ci0jaWYgWVlM
VFlQRV9JU19UUklWSUFMCisKKyNpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxU
WVBFX0lTX1RSSVZJQUwKICAgLyogSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBsb2NhdGlvbiBiZWZv
cmUgcGFyc2luZyBzdGFydHMuICAqLwogICB5eWxsb2MuZmlyc3RfbGluZSAgID0geXlsbG9jLmxh
c3RfbGluZSAgID0gMTsKLSAgeXlsbG9jLmZpcnN0X2NvbHVtbiA9IHl5bGxvYy5sYXN0X2NvbHVt
biA9IDA7CisgIHl5bGxvYy5maXJzdF9jb2x1bW4gPSB5eWxsb2MubGFzdF9jb2x1bW4gPSAxOwog
I2VuZGlmCiAKICAgZ290byB5eXNldHN0YXRlOwpAQCAtMTI3MCw2ICsxMzU2LDcgQEAgWVlMVFlQ
RSB5eWxsb2M7CiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKIAkJICAg
ICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXplKTsK
KwogCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0geXlzczE7CiAJeXl2cyA9IHl5dnMxOwpAQCAtMTI5
MSw5ICsxMzc4LDkgQEAgWVlMVFlQRSB5eWxsb2M7CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNU
QUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQog
CSAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNU
QUNLX1JFTE9DQVRFICh5eXZzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsKKwlZWVNUQUNL
X1JFTE9DQVRFICh5eXNzX2FsbG9jLCB5eXNzKTsKKwlZWVNUQUNLX1JFTE9DQVRFICh5eXZzX2Fs
bG9jLCB5eXZzKTsKKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzX2FsbG9jLCB5eWxzKTsKICMgIHVu
ZGVmIFlZU1RBQ0tfUkVMT0NBVEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNLX0ZS
RUUgKHl5c3MxKTsKQEAgLTEzMTQsNiArMTQwMSw5IEBAIFlZTFRZUEUgeXlsbG9jOwogCiAgIFlZ
RFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0YXRlKSk7CiAKKyAg
aWYgKHl5c3RhdGUgPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKwogICBnb3RvIHl5YmFja3Vw
OwogCiAvKi0tLS0tLS0tLS0tLgpAQCAtMTMyMiwxNiArMTQxMiwxNiBAQCBZWUxUWVBFIHl5bGxv
YzsKIHl5YmFja3VwOgogCiAgIC8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhl
IGN1cnJlbnQgc3RhdGUuICBSZWFkIGEKLSAgICAgbG9vay1haGVhZCB0b2tlbiBpZiB3ZSBuZWVk
IG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgICAgIGxvb2thaGVhZCB0b2tl
biBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyog
Rmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2st
YWhlYWQgdG9rZW4uICAqLworICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0
aG91dCByZWZlcmVuY2UgdG8gbG9va2FoZWFkIHRva2VuLiAgKi8KICAgeXluID0geXlwYWN0W3l5
c3RhdGVdOwotICBpZiAoeXluID09IFlZUEFDVF9OSU5GKQorICBpZiAoeXlwYWN0X3ZhbHVlX2lz
X2RlZmF1bHQgKHl5bikpCiAgICAgZ290byB5eWRlZmF1bHQ7CiAKLSAgLyogTm90IGtub3duID0+
IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisg
IC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBo
YXZlIG9uZS4gICovCiAKLSAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9y
IGEgdmFsaWQgbG9vay1haGVhZCBzeW1ib2wuICAqLworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZ
RU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8KICAgaWYgKHl5
Y2hhciA9PSBZWUVNUFRZKQogICAgIHsKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRp
bmcgYSB0b2tlbjogIikpOwpAQCAtMTM1NywyNiArMTQ0NywyMiBAQCB5eWJhY2t1cDoKICAgeXlu
ID0geXl0YWJsZVt5eW5dOwogICBpZiAoeXluIDw9IDApCiAgICAgewotICAgICAgaWYgKHl5biA9
PSAwIHx8IHl5biA9PSBZWVRBQkxFX05JTkYpCi0JZ290byB5eWVycmxhYjsKKyAgICAgIGlmICh5
eXRhYmxlX3ZhbHVlX2lzX2Vycm9yICh5eW4pKQorICAgICAgICBnb3RvIHl5ZXJybGFiOwogICAg
ICAgeXluID0gLXl5bjsKICAgICAgIGdvdG8geXlyZWR1Y2U7CiAgICAgfQogCi0gIGlmICh5eW4g
PT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQogICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBz
aW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCiAgICAgIHN0YXR1cy4gICov
CiAgIGlmICh5eWVycnN0YXR1cykKICAgICB5eWVycnN0YXR1cy0tOwogCi0gIC8qIFNoaWZ0IHRo
ZSBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogU2hpZnQgdGhlIGxvb2thaGVhZCB0b2tlbi4g
ICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwgJnl5bHZhbCwgJnl5
bGxvYyk7CiAKLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxlc3MgaXQgaXMgZW9m
LiAgKi8KLSAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSAgICB5eWNoYXIgPSBZWUVNUFRZOworICAv
KiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuLiAgKi8KKyAgeXljaGFyID0gWVlFTVBUWTsKIAog
ICB5eXN0YXRlID0geXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKQEAgLTE0MTcsNjAgKzE1MDMs
OTIgQEAgeXlyZWR1Y2U6CiAgIHN3aXRjaCAoeXluKQogICAgIHsKICAgICAgICAgY2FzZSA0Ogor
CisvKiBMaW5lIDE4MDYgb2YgeWFjYy5jICAqLwogI2xpbmUgNTAgImxpYnhsdV9jZmdfeS55Igot
ICAgIHsgeGx1X19jZmdfc2V0X3N0b3JlKGN0eCwoeXl2c3BbKDEpIC0gKDMpXS5zdHJpbmcpLCh5
eXZzcFsoMykgLSAoMyldLnNldHRpbmcpLCh5eWxzcFsoMykgLSAoMyldKS5maXJzdF9saW5lKTsg
O30KKyAgICB7IHhsdV9fY2ZnX3NldF9zdG9yZShjdHgsKHl5dnNwWygxKSAtICgzKV0uc3RyaW5n
KSwoeXl2c3BbKDMpIC0gKDMpXS5zZXR0aW5nKSwoeXlsc3BbKDMpIC0gKDMpXSkuZmlyc3RfbGlu
ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDEwOgorCisvKiBMaW5lIDE4MDYgb2YgeWFjYy5j
ICAqLwogI2xpbmUgNTggImxpYnhsdV9jZmdfeS55IgotICAgIHsgKHl5dmFsLnNldHRpbmcpPSB4
bHVfX2NmZ19zZXRfbWsoY3R4LDEsKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSk7IDt9CisgICAg
eyAoeXl2YWwuc2V0dGluZyk9IHhsdV9fY2ZnX3NldF9tayhjdHgsMSwoeXl2c3BbKDEpIC0gKDEp
XS5zdHJpbmcpKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CisKKy8qIExpbmUgMTgwNiBv
ZiB5YWNjLmMgICovCiAjbGluZSA1OSAibGlieGx1X2NmZ195LnkiCi0gICAgeyAoeXl2YWwuc2V0
dGluZyk9ICh5eXZzcFsoMykgLSAoNCldLnNldHRpbmcpOyA7fQorICAgIHsgKHl5dmFsLnNldHRp
bmcpPSAoeXl2c3BbKDMpIC0gKDQpXS5zZXR0aW5nKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTI6CisKKy8qIExpbmUgMTgwNiBvZiB5YWNjLmMgICovCiAjbGluZSA2MSAibGlieGx1X2NmZ195
LnkiCi0gICAgeyAoeXl2YWwuc3RyaW5nKT0gKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKTsgO30K
KyAgICB7ICh5eXZhbC5zdHJpbmcpPSAoeXl2c3BbKDEpIC0gKDEpXS5zdHJpbmcpOyB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMzoKKworLyogTGluZSAxODA2IG9mIHlhY2MuYyAgKi8KICNsaW5l
IDYyICJsaWJ4bHVfY2ZnX3kueSIKLSAgICB7ICh5eXZhbC5zdHJpbmcpPSAoeXl2c3BbKDEpIC0g
KDEpXS5zdHJpbmcpOyA7fQorICAgIHsgKHl5dmFsLnN0cmluZyk9ICh5eXZzcFsoMSkgLSAoMSld
LnN0cmluZyk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE0OgorCisvKiBMaW5lIDE4MDYgb2Yg
eWFjYy5jICAqLwogI2xpbmUgNjQgImxpYnhsdV9jZmdfeS55IgotICAgIHsgKHl5dmFsLnNldHRp
bmcpPSB4bHVfX2NmZ19zZXRfbWsoY3R4LDAsMCk7IDt9CisgICAgeyAoeXl2YWwuc2V0dGluZyk9
IHhsdV9fY2ZnX3NldF9tayhjdHgsMCwwKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU6CisK
Ky8qIExpbmUgMTgwNiBvZiB5YWNjLmMgICovCiAjbGluZSA2NSAibGlieGx1X2NmZ195LnkiCi0g
ICAgeyAoeXl2YWwuc2V0dGluZyk9ICh5eXZzcFsoMSkgLSAoMSldLnNldHRpbmcpOyA7fQorICAg
IHsgKHl5dmFsLnNldHRpbmcpPSAoeXl2c3BbKDEpIC0gKDEpXS5zZXR0aW5nKTsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTY6CisKKy8qIExpbmUgMTgwNiBvZiB5YWNjLmMgICovCiAjbGluZSA2
NiAibGlieGx1X2NmZ195LnkiCi0gICAgeyAoeXl2YWwuc2V0dGluZyk9ICh5eXZzcFsoMSkgLSAo
MyldLnNldHRpbmcpOyA7fQorICAgIHsgKHl5dmFsLnNldHRpbmcpPSAoeXl2c3BbKDEpIC0gKDMp
XS5zZXR0aW5nKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc6CisKKy8qIExpbmUgMTgwNiBv
ZiB5YWNjLmMgICovCiAjbGluZSA2OCAibGlieGx1X2NmZ195LnkiCi0gICAgeyAoeXl2YWwuc2V0
dGluZyk9IHhsdV9fY2ZnX3NldF9tayhjdHgsMiwoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpKTsg
O30KKyAgICB7ICh5eXZhbC5zZXR0aW5nKT0geGx1X19jZmdfc2V0X21rKGN0eCwyLCh5eXZzcFso
MSkgLSAoMildLnN0cmluZykpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODoKKworLyogTGlu
ZSAxODA2IG9mIHlhY2MuYyAgKi8KICNsaW5lIDY5ICJsaWJ4bHVfY2ZnX3kueSIKLSAgICB7IHhs
dV9fY2ZnX3NldF9hZGQoY3R4LCh5eXZzcFsoMSkgLSAoNSldLnNldHRpbmcpLCh5eXZzcFsoNCkg
LSAoNSldLnN0cmluZykpOyAoeXl2YWwuc2V0dGluZyk9ICh5eXZzcFsoMSkgLSAoNSldLnNldHRp
bmcpOyA7fQorICAgIHsgeGx1X19jZmdfc2V0X2FkZChjdHgsKHl5dnNwWygxKSAtICg1KV0uc2V0
dGluZyksKHl5dnNwWyg0KSAtICg1KV0uc3RyaW5nKSk7ICh5eXZhbC5zZXR0aW5nKT0gKHl5dnNw
WygxKSAtICg1KV0uc2V0dGluZyk7IH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2Yg
eWFjYy5jLiAgKi8KLSNsaW5lIDE0NzIgImxpYnhsdV9jZmdfeS5jIgorCisvKiBMaW5lIDE4MDYg
b2YgeWFjYy5jICAqLworI2xpbmUgMTU3OSAibGlieGx1X2NmZ195LmMiCiAgICAgICBkZWZhdWx0
OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0aW9ucyBzb21ldGltZXMgYWx0
ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0IHl5dG9rZW4gYmUgdXBkYXRl
ZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRoZQorICAgICBhcHByb2FjaCBv
ZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5dG9rZW4uCisg
ICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJlIGFmdGVyIGV2ZXJ5IHNlbWFu
dGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24gd291bGQgYmUgbWlzc2VkIGlm
IHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFCT1JULCBZWUFDQ0VQVCwgb3Ig
WVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKKyAgICAgaWYgaXQg
aW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJPUlQgb3IgWVlBQ0NFUFQsIGFu
CisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlh
dGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAsIHN1YnNlcXVl
bnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBhbiBpbmNvcnJlY3QgZGVzdHJ1
Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3NhZ2UKKyAgICAgYmVmb3JlIHRo
ZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQk
ID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZWVBPUFNUQUNLICh5eWxlbik7
CkBAIC0xNDk5LDYgKzE2MTcsMTAgQEAgeXlyZWR1Y2U6CiB8IHl5ZXJybGFiIC0tIGhlcmUgb24g
ZGV0ZWN0aW5nIGVycm9yIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LwogeXllcnJsYWI6CisgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJh
bnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgdXNlciBzZW1hbnRpYyBhY3Rpb25zIGZv
ciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICB5eXRva2VuID0geXljaGFyID09IFlZRU1Q
VFkgPyBZWUVNUFRZIDogWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisKICAgLyogSWYgbm90IGFscmVh
ZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4gICovCiAgIGlm
ICgheXllcnJzdGF0dXMpCiAgICAgewpAQCAtMTUwNiw0NSArMTYyOCw0NCBAQCB5eWVycmxhYjoK
ICNpZiAhIFlZRVJST1JfVkVSQk9TRQogICAgICAgeXllcnJvciAoJnl5bGxvYywgY3R4LCBZWV8o
InN5bnRheCBlcnJvciIpKTsKICNlbHNlCisjIGRlZmluZSBZWVNZTlRBWF9FUlJPUiB5eXN5bnRh
eF9lcnJvciAoJnl5bXNnX2FsbG9jLCAmeXltc2csIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB5eXNzcCwgeXl0b2tlbikKICAgICAgIHsKLQlZWVNJWkVfVCB5eXNp
emUgPSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwgeXljaGFyKTsKLQlpZiAoeXltc2dfYWxs
b2MgPCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNUQUNLX0FMTE9DX01BWElNVU0pCi0JICB7
Ci0JICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlzaXplOwotCSAgICBpZiAoISAoeXlzaXpl
IDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQotCSAgICAg
IHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07Ci0JICAgIGlmICh5eW1zZyAhPSB5eW1z
Z2J1ZikKLQkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKLQkgICAgeXltc2cgPSAoY2hhciAq
KSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKLQkgICAgaWYgKHl5bXNnKQotCSAgICAgIHl5bXNn
X2FsbG9jID0geXlhbGxvYzsKLQkgICAgZWxzZQotCSAgICAgIHsKLQkJeXltc2cgPSB5eW1zZ2J1
ZjsKLQkJeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7Ci0JICAgICAgfQotCSAgfQotCi0J
aWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNnX2FsbG9jKQotCSAgewotCSAgICAodm9p
ZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRlLCB5eWNoYXIpOwotCSAgICB5eWVycm9y
ICgmeXlsbG9jLCBjdHgsIHl5bXNnKTsKLQkgIH0KLQllbHNlCi0JICB7Ci0JICAgIHl5ZXJyb3Ig
KCZ5eWxsb2MsIGN0eCwgWVlfKCJzeW50YXggZXJyb3IiKSk7Ci0JICAgIGlmICh5eXNpemUgIT0g
MCkKLQkgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCSAgfQorICAgICAgICBjaGFyIGNvbnN0
ICp5eW1zZ3AgPSBZWV8oInN5bnRheCBlcnJvciIpOworICAgICAgICBpbnQgeXlzeW50YXhfZXJy
b3Jfc3RhdHVzOworICAgICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSBZWVNZTlRBWF9FUlJP
UjsKKyAgICAgICAgaWYgKHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9PSAwKQorICAgICAgICAgIHl5
bXNncCA9IHl5bXNnOworICAgICAgICBlbHNlIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0g
MSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoeXltc2cgIT0geXltc2didWYpCisgICAg
ICAgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOworICAgICAgICAgICAgeXltc2cgPSAoY2hh
ciAqKSBZWVNUQUNLX0FMTE9DICh5eW1zZ19hbGxvYyk7CisgICAgICAgICAgICBpZiAoIXl5bXNn
KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeXltc2cgPSB5eW1zZ2J1ZjsKKyAg
ICAgICAgICAgICAgICB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyAgICAgICAgICAg
ICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSAyOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB5eXN5bnRheF9lcnJv
cl9zdGF0dXMgPSBZWVNZTlRBWF9FUlJPUjsKKyAgICAgICAgICAgICAgICB5eW1zZ3AgPSB5eW1z
ZzsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgeXllcnJvciAoJnl5bGxv
YywgY3R4LCB5eW1zZ3ApOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDIp
CisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKICAgICAgIH0KKyMgdW5kZWYgWVlTWU5U
QVhfRVJST1IKICNlbmRpZgogICAgIH0KIAotICB5eWVycm9yX3JhbmdlWzBdID0geXlsbG9jOwor
ICB5eWVycm9yX3JhbmdlWzFdID0geXlsbG9jOwogCiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQog
ICAgIHsKLSAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFo
ZWFkIHRva2VuIGFmdGVyIGFuCisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8g
cmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFuCiAJIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8K
IAogICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikKQEAgLTE1NjEsNyArMTY4Miw3IEBAIHl5ZXJy
bGFiOgogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFk
IHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJl
dXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4u
ICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAtMTU3Nyw3ICsxNjk4LDcgQEAgeXllcnJvcmxh
YjoKICAgaWYgKC8qQ09OU1RDT05EKi8gMCkKICAgICAgZ290byB5eWVycm9ybGFiOwogCi0gIHl5
ZXJyb3JfcmFuZ2VbMF0gPSB5eWxzcFsxLXl5bGVuXTsKKyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5
bHNwWzEteXlsZW5dOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVs
ZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9Q
U1RBQ0sgKHl5bGVuKTsKQEAgLTE1OTYsNyArMTcxNyw3IEBAIHl5ZXJybGFiMToKICAgZm9yICg7
OykKICAgICB7CiAgICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0gICAgICBpZiAoeXluICE9
IFlZUEFDVF9OSU5GKQorICAgICAgaWYgKCF5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkK
IAl7CiAJICB5eW4gKz0gWVlURVJST1I7CiAJICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFT
VCAmJiB5eWNoZWNrW3l5bl0gPT0gWVlURVJST1IpCkBAIC0xNjExLDcgKzE3MzIsNyBAQCB5eWVy
cmxhYjE6CiAgICAgICBpZiAoeXlzc3AgPT0geXlzcykKIAlZWUFCT1JUOwogCi0gICAgICB5eWVy
cm9yX3JhbmdlWzBdID0gKnl5bHNwOworICAgICAgeXllcnJvcl9yYW5nZVsxXSA9ICp5eWxzcDsK
ICAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCiAJCSAgeXlzdG9zW3l5c3RhdGVd
LCB5eXZzcCwgeXlsc3AsIGN0eCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKQEAgLTE2MTksMTUg
KzE3NDAsMTIgQEAgeXllcnJsYWIxOgogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3Nw
KTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgICor
K3l5dnNwID0geXlsdmFsOwogCi0gIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxsb2M7CisgIHl5ZXJy
b3JfcmFuZ2VbMl0gPSB5eWxsb2M7CiAgIC8qIFVzaW5nIFlZTExPQyBpcyB0ZW1wdGluZywgYnV0
IHdvdWxkIGNoYW5nZSB0aGUgbG9jYXRpb24gb2YKLSAgICAgdGhlIGxvb2stYWhlYWQuICBZWUxP
QyBpcyBhdmFpbGFibGUgdGhvdWdoLiAgKi8KLSAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXll
cnJvcl9yYW5nZSAtIDEpLCAyKTsKKyAgICAgdGhlIGxvb2thaGVhZC4gIFlZTE9DIGlzIGF2YWls
YWJsZSB0aG91Z2guICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsIHl5ZXJyb3JfcmFuZ2Us
IDIpOwogICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4g
ICovCkBAIC0xNjUxLDcgKzE3NjksNyBAQCB5eWFib3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAg
IGdvdG8geXlyZXR1cm47CiAKLSNpZm5kZWYgeXlvdmVyZmxvdworI2lmICFkZWZpbmVkKHl5b3Zl
cmZsb3cpIHx8IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVz
dGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwpAQCAtMTY2Miw5ICsxNzgwLDE0IEBAIHl5ZXhoYXVzdGVkbGFiOgog
I2VuZGlmCiAKIHl5cmV0dXJuOgotICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZ
WUVNUFRZKQotICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQi
LAotCQkgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY3R4KTsKKyAgaWYgKHl5Y2hhciAhPSBZ
WUVNUFRZKQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhl
YWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2VtYW50aWMg
YWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9rZW4gPSBZ
WVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJk
aW5nIGxvb2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsLCAmeXls
bG9jLCBjdHgpOworICAgIH0KICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhl
IHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZQUJPUlQgb3IgWVlBQ0NF
UFQuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC0xNjg5LDExICsxODEyLDMgQEAgeXly
ZXR1cm46CiAKIAogCi0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBj
LWJhc2ljLW9mZnNldDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8K
ZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL2xpYnhsL2xpYnhsdV9j
ZmdfeS5oCi0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9jZmdfeS5oCUZyaSBGZWIgMTcgMTI6MjQ6
MzggMjAxMiArMDAwMAorKysgYi90b29scy9saWJ4bC9saWJ4bHVfY2ZnX3kuaAlNb24gRmViIDIw
IDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTEsMjQgKzEsMjEgQEAKLS8qIEEgQmlzb24gcGFyc2Vy
LCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkg
R05VIEJpc29uIDIuNS4gICovCiAKLS8qIFNrZWxldG9uIGludGVyZmFjZSBmb3IgQmlzb24ncyBZ
YWNjLWxpa2UgcGFyc2VycyBpbiBDCi0KLSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5
MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvKiBCaXNvbiBpbnRlcmZh
Y2UgZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKyAgIAorICAgICAgQ29weXJpZ2h0IChDKSAx
OTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K
KyAgIAorICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0
aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu
c2VzLz4uICAqLwogCiAvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBh
IGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBw
YXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0yOSwxMCArMjYsMTEg
QEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBh
bmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNp
YWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZlcnNpb24gMi4yIG9mIEJp
c29uLiAgKi8KIAorCiAvKiBUb2tlbnMuICAqLwogI2lmbmRlZiBZWVRPS0VOVFlQRQogIyBkZWZp
bmUgWVlUT0tFTlRZUEUKQEAgLTQ1LDI4ICs0MywyNyBAQAogICAgICBORVdMSU5FID0gMjYxCiAg
ICB9OwogI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBJREVOVCAyNTgKLSNkZWZpbmUg
U1RSSU5HIDI1OQotI2RlZmluZSBOVU1CRVIgMjYwCi0jZGVmaW5lIE5FV0xJTkUgMjYxCi0KIAog
CiAKICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJF
RAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCit7CisKKy8qIExpbmUgMjA2OCBvZiB5YWNjLmMgICov
CiAjbGluZSAyNSAibGlieGx1X2NmZ195LnkiCi17CisKICAgY2hhciAqc3RyaW5nOwogICBYTFVf
Q29uZmlnU2V0dGluZyAqc2V0dGluZzsKLX0KLS8qIExpbmUgMTQ4OSBvZiB5YWNjLmMuICAqLwot
I2xpbmUgNjYgImxpYnhsdV9jZmdfeS5oIgotCVlZU1RZUEU7CisKKworCisvKiBMaW5lIDIwNjgg
b2YgeWFjYy5jICAqLworI2xpbmUgNjMgImxpYnhsdV9jZmdfeS5oIgorfSBZWVNUWVBFOworIyBk
ZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBv
YnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVD
TEFSRUQgMQotIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCiAKQEAgLTg2
LDEwICs4MywzIEBAIHR5cGVkZWYgc3RydWN0IFlZTFRZUEUKIAogCiAKLS8qCi0gKiBMb2NhbCB2
YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogaW5kZW50LXRh
YnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjll
ZDhhOTE0IHRvb2xzL2xpYnhsL2xpYnhsdV9kaXNrX2wuYwotLS0gYS90b29scy9saWJ4bC9saWJ4
bHVfZGlza19sLmMJRnJpIEZlYiAxNyAxMjoyNDozOCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2xp
YnhsL2xpYnhsdV9kaXNrX2wuYwlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTU0
LDYgKzU0LDcgQEAgdHlwZWRlZiBpbnQgZmxleF9pbnQzMl90OwogdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIGZsZXhfdWludDhfdDsgCiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBmbGV4X3VpbnQx
Nl90OwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgZmxleF91aW50MzJfdDsKKyNlbmRpZiAvKiAhIEM5
OSAqLwogCiAvKiBMaW1pdHMgb2YgaW50ZWdyYWwgdHlwZXMuICovCiAjaWZuZGVmIElOVDhfTUlO
CkBAIC04NCw4ICs4NSw2IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IGZsZXhfdWludDMyX3Q7CiAj
ZGVmaW5lIFVJTlQzMl9NQVggICAgICAgICAgICAgKDQyOTQ5NjcyOTVVKQogI2VuZGlmCiAKLSNl
bmRpZiAvKiAhIEM5OSAqLwotCiAjZW5kaWYgLyogISBGTEVYSU5UX0ggKi8KIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCkBAIC0xNTksMTUgKzE1OCw3IEBAIHR5cGVkZWYgdm9pZCogeXlzY2FuX3Q7CiAK
IC8qIFNpemUgb2YgZGVmYXVsdCBpbnB1dCBidWZmZXIuICovCiAjaWZuZGVmIFlZX0JVRl9TSVpF
Ci0jaWZkZWYgX19pYTY0X18KLS8qIE9uIElBLTY0LCB0aGUgYnVmZmVyIHNpemUgaXMgMTZrLCBu
b3QgOGsuCi0gKiBNb3Jlb3ZlciwgWVlfQlVGX1NJWkUgaXMgMipZWV9SRUFEX0JVRl9TSVpFIGlu
IHRoZSBnZW5lcmFsIGNhc2UuCi0gKiBEaXR0byBmb3IgdGhlIF9faWE2NF9fIGNhc2UgYWNjb3Jk
aW5nbHkuCi0gKi8KLSNkZWZpbmUgWVlfQlVGX1NJWkUgMzI3NjgKLSNlbHNlCiAjZGVmaW5lIFlZ
X0JVRl9TSVpFIDE2Mzg0Ci0jZW5kaWYgLyogX19pYTY0X18gKi8KICNlbmRpZgogCiAvKiBUaGUg
c3RhdGUgYnVmIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgb25lIHN0YXRlIHBlciBjaGFy
YWN0ZXIgaW4gdGhlIG1haW4gYnVmZmVyLgpAQCAtODYwLDcgKzg1MSw3IEBAIHN0YXRpYyB2b2lk
IHNldGJhY2tlbmR0eXBlKERpc2tQYXJzZUNvbnQKICNkZWZpbmUgREVQUkVDQVRFKHVzZXdoYXRp
bnN0ZWFkKSAvKiBub3QgY3VycmVudGx5IHJlcG9ydGVkICovCiAKIAotI2xpbmUgODY0ICJsaWJ4
bHVfZGlza19sLmMiCisjbGluZSA4NTUgImxpYnhsdV9kaXNrX2wuYyIKIAogI2RlZmluZSBJTklU
SUFMIDAKICNkZWZpbmUgTEVYRVJSIDEKQEAgLTk4OSwxMiArOTgwLDcgQEAgc3RhdGljIGludCBp
bnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKIC8qIEFtb3VudCBvZiBzdHVmZiB0byBzbHVy
cCB1cCB3aXRoIGVhY2ggcmVhZC4gKi8KICNpZm5kZWYgWVlfUkVBRF9CVUZfU0laRQotI2lmZGVm
IF9faWE2NF9fCi0vKiBPbiBJQS02NCwgdGhlIGJ1ZmZlciBzaXplIGlzIDE2aywgbm90IDhrICov
Ci0jZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgMTYzODQKLSNlbHNlCiAjZGVmaW5lIFlZX1JFQURf
QlVGX1NJWkUgODE5MgotI2VuZGlmIC8qIF9faWE2NF9fICovCiAjZW5kaWYKIAogLyogQ29weSB3
aGF0ZXZlciB0aGUgbGFzdCBydWxlIG1hdGNoZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gKi8K
QEAgLTEwMDIsNyArOTg4LDcgQEAgc3RhdGljIGludCBpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7CiAvKiBUaGlzIHVzZWQgdG8gYmUgYW4gZnB1dHMoKSwgYnV0IHNpbmNlIHRoZSBzdHJpbmcg
bWlnaHQgY29udGFpbiBOVUwncywKICAqIHdlIG5vdyB1c2UgZndyaXRlKCkuCiAgKi8KLSNkZWZp
bmUgRUNITyBkbyB7IGlmIChmd3JpdGUoIHl5dGV4dCwgeXlsZW5nLCAxLCB5eW91dCApKSB7fSB9
IHdoaWxlICgwKQorI2RlZmluZSBFQ0hPIGZ3cml0ZSggeXl0ZXh0LCB5eWxlbmcsIDEsIHl5b3V0
ICkKICNlbmRpZgogCiAvKiBHZXRzIGlucHV0IGFuZCBzdHVmZnMgaXQgaW50byAiYnVmIi4gIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQsIG9yIFlZX05VTEwsCkBAIC0xMDEzLDcgKzk5OSw3IEBA
IHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCWlmICggWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9pc19pbnRlcmFjdGl2ZSApIFwKIAkJeyBcCiAJCWludCBjID0g
JyonOyBcCi0JCXNpemVfdCBuOyBcCisJCWludCBuOyBcCiAJCWZvciAoIG4gPSAwOyBuIDwgbWF4
X3NpemUgJiYgXAogCQkJICAgICAoYyA9IGdldGMoIHl5aW4gKSkgIT0gRU9GICYmIGMgIT0gJ1xu
JzsgKytuICkgXAogCQkJYnVmW25dID0gKGNoYXIpIGM7IFwKQEAgLTExMDEsNyArMTA4Nyw3IEBA
IFlZX0RFQ0wKIAogIC8qLS0tLS0gdGhlIHNjYW5uZXIgcnVsZXMgd2hpY2ggZG8gdGhlIHBhcnNp
bmcgLS0tLS0qLwogCi0jbGluZSAxMTA1ICJsaWJ4bHVfZGlza19sLmMiCisjbGluZSAxMDkxICJs
aWJ4bHVfZGlza19sLmMiCiAKIAlpZiAoICF5eWctPnl5X2luaXQgKQogCQl7CkBAIC0xNDI0LDcg
KzE0MTAsNyBAQCBZWV9SVUxFX1NFVFVQCiAjbGluZSAyMjcgImxpYnhsdV9kaXNrX2wubCIKIFlZ
X0ZBVEFMX0VSUk9SKCAiZmxleCBzY2FubmVyIGphbW1lZCIgKTsKIAlZWV9CUkVBSwotI2xpbmUg
MTQyOCAibGlieGx1X2Rpc2tfbC5jIgorI2xpbmUgMTQxNCAibGlieGx1X2Rpc2tfbC5jIgogCQkJ
Y2FzZSBZWV9TVEFURV9FT0YoSU5JVElBTCk6CiAJCQljYXNlIFlZX1NUQVRFX0VPRihMRVhFUlIp
OgogCQkJCXl5dGVybWluYXRlKCk7CkBAIC0yMTI1LDggKzIxMTEsOCBAQCBZWV9CVUZGRVJfU1RB
VEUgeGx1X19kaXNrX3l5X3NjYW5fc3RyaW5nCiAKIC8qKiBTZXR1cCB0aGUgaW5wdXQgYnVmZmVy
IHN0YXRlIHRvIHNjYW4gdGhlIGdpdmVuIGJ5dGVzLiBUaGUgbmV4dCBjYWxsIHRvIHhsdV9fZGlz
a195eWxleCgpIHdpbGwKICAqIHNjYW4gZnJvbSBhIEBlIGNvcHkgb2YgQGEgYnl0ZXMuCi0gKiBA
cGFyYW0geXlieXRlcyB0aGUgYnl0ZSBidWZmZXIgdG8gc2NhbgotICogQHBhcmFtIF95eWJ5dGVz
X2xlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSBAYSBi
eXRlcy4KKyAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZSBidWZmZXIgdG8gc2NhbgorICogQHBhcmFt
IGxlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSBAYSBi
eXRlcy4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgogICogQHJldHVy
biB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBvYmplY3QuCiAgKi8KQEAgLTI1MTcs
MTEgKzI1MDMsMyBAQCB2b2lkIHhsdV9fZGlza195eWZyZWUgKHZvaWQgKiBwdHIgLCB5eXNjCiAj
ZGVmaW5lIFlZVEFCTEVTX05BTUUgInl5dGFibGVzIgogCiAjbGluZSAyMjcgImxpYnhsdV9kaXNr
X2wubCIKLQotLyoKLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIG1vZGU6IEMKLSAqIGMtYmFzaWMt
b2Zmc2V0OiA0Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC1y
IDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvbGlieGwvbGlieGx1X2Rpc2tfbC5o
Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9kaXNrX2wuaAlGcmkgRmViIDE3IDEyOjI0OjM4IDIw
MTIgKzAwMDAKKysrIGIvdG9vbHMvbGlieGwvbGlieGx1X2Rpc2tfbC5oCU1vbiBGZWIgMjAgMTg6
MjA6MjkgMjAxMiArMDEwMApAQCAtNTgsNiArNTgsNyBAQCB0eXBlZGVmIGludCBmbGV4X2ludDMy
X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZmxleF91aW50OF90OyAKIHR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IGZsZXhfdWludDE2X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGludCBmbGV4X3Vp
bnQzMl90OworI2VuZGlmIC8qICEgQzk5ICovCiAKIC8qIExpbWl0cyBvZiBpbnRlZ3JhbCB0eXBl
cy4gKi8KICNpZm5kZWYgSU5UOF9NSU4KQEAgLTg4LDggKzg5LDYgQEAgdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgZmxleF91aW50MzJfdDsKICNkZWZpbmUgVUlOVDMyX01BWCAgICAgICAgICAgICAoNDI5
NDk2NzI5NVUpCiAjZW5kaWYKIAotI2VuZGlmIC8qICEgQzk5ICovCi0KICNlbmRpZiAvKiAhIEZM
RVhJTlRfSCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEzMiwxNSArMTMxLDcgQEAgdHlw
ZWRlZiB2b2lkKiB5eXNjYW5fdDsKIAogLyogU2l6ZSBvZiBkZWZhdWx0IGlucHV0IGJ1ZmZlci4g
Ki8KICNpZm5kZWYgWVlfQlVGX1NJWkUKLSNpZmRlZiBfX2lhNjRfXwotLyogT24gSUEtNjQsIHRo
ZSBidWZmZXIgc2l6ZSBpcyAxNmssIG5vdCA4ay4KLSAqIE1vcmVvdmVyLCBZWV9CVUZfU0laRSBp
cyAyKllZX1JFQURfQlVGX1NJWkUgaW4gdGhlIGdlbmVyYWwgY2FzZS4KLSAqIERpdHRvIGZvciB0
aGUgX19pYTY0X18gY2FzZSBhY2NvcmRpbmdseS4KLSAqLwotI2RlZmluZSBZWV9CVUZfU0laRSAz
Mjc2OAotI2Vsc2UKICNkZWZpbmUgWVlfQlVGX1NJWkUgMTYzODQKLSNlbmRpZiAvKiBfX2lhNjRf
XyAqLwogI2VuZGlmCiAKICNpZm5kZWYgWVlfVFlQRURFRl9ZWV9CVUZGRVJfU1RBVEUKQEAgLTMw
MiwxMiArMjkzLDcgQEAgc3RhdGljIGludCB5eV9mbGV4X3N0cmxlbiAoeXljb25zdCBjaGFyIAog
CiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNoIHJlYWQuICovCiAjaWZu
ZGVmIFlZX1JFQURfQlVGX1NJWkUKLSNpZmRlZiBfX2lhNjRfXwotLyogT24gSUEtNjQsIHRoZSBi
dWZmZXIgc2l6ZSBpcyAxNmssIG5vdCA4ayAqLwotI2RlZmluZSBZWV9SRUFEX0JVRl9TSVpFIDE2
Mzg0Ci0jZWxzZQogI2RlZmluZSBZWV9SRUFEX0JVRl9TSVpFIDgxOTIKLSNlbmRpZiAvKiBfX2lh
NjRfXyAqLwogI2VuZGlmCiAKIC8qIE51bWJlciBvZiBlbnRyaWVzIGJ5IHdoaWNoIHN0YXJ0LWNv
bmRpdGlvbiBzdGFjayBncm93cy4gKi8KQEAgLTM0MiwxNCArMzI4LDYgQEAgZXh0ZXJuIGludCB4
bHVfX2Rpc2tfeXlsZXggKHl5c2Nhbl90IHl5cwogCiAjbGluZSAyMjcgImxpYnhsdV9kaXNrX2wu
bCIKIAotI2xpbmUgMzQ2ICJsaWJ4bHVfZGlza19sLmgiCisjbGluZSAzMzIgImxpYnhsdV9kaXNr
X2wuaCIKICN1bmRlZiB4bHVfX2Rpc2tfeXlJTl9IRUFERVIKICNlbmRpZiAvKiB4bHVfX2Rpc2tf
eXlIRUFERVJfSCAqLwotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICog
Yy1iYXNpYy1vZmZzZXQ6IDQKLSAqIGluZGVudC10YWJzLW1vZGU6IG5pbAotICogRW5kOgotICov
CmRpZmYgLXIgODcyMThiZDM2N2JlIC1yIGNjZGY5ZWQ4YTkxNCB0b29scy9tNC9kZWZhdWx0X2xp
Yi5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90
b29scy9tNC9kZWZhdWx0X2xpYi5tNAlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAg
LTAsMCArMSw4IEBACitBQ19ERUZVTihbQVhfREVGQVVMVF9MSUJdLAorW0FTX0lGKFt0ZXN0IC1k
ICIkcHJlZml4L2xpYjY0Il0sIFsKKyAgICBMSUJfUEFUSD0ibGliNjQiCitdLFsKKyAgICBMSUJf
UEFUSD0ibGliIgorXSkKK0FDX1NVQlNUKExJQl9QQVRIKV0pCisKZGlmZiAtciA4NzIxOGJkMzY3
YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL200L2Rpc2FibGVfZmVhdHVyZS5tNAotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9kaXNhYmxl
X2ZlYXR1cmUubTQJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTMg
QEAKK0FDX0RFRlVOKFtBWF9BUkdfRElTQUJMRV9BTkRfRVhQT1JUXSwKK1tBQ19BUkdfRU5BQkxF
KFskMV0sCisgICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS0kMV0sIFskMl0pKQorCitBU19J
RihbdGVzdCAieCRlbmFibGVfJDEiID0gInhubyJdLCBbCisgICAgYXhfY3ZfJDE9Im4iCitdLCBb
dGVzdCAieCRlbmFibGVfJDEiID0gInh5ZXMiXSwgWworICAgIGF4X2N2XyQxPSJ5IgorXSwgW3Rl
c3QgLXogJGF4X2N2XyQxXSwgWworICAgIGF4X2N2XyQxPSJ5IgorXSkKKyQxPSRheF9jdl8kMQor
QUNfU1VCU1QoJDEpXSkKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xz
L200L2VuYWJsZV9mZWF0dXJlLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCisrKyBiL3Rvb2xzL200L2VuYWJsZV9mZWF0dXJlLm00CU1vbiBGZWIgMjAgMTg6
MjA6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDEzIEBACitBQ19ERUZVTihbQVhfQVJHX0VOQUJM
RV9BTkRfRVhQT1JUXSwKK1tBQ19BUkdfRU5BQkxFKFskMV0sCisgICAgQVNfSEVMUF9TVFJJTkco
Wy0tZW5hYmxlLSQxXSwgWyQyXSkpCisKK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV8kMSIgPSAieHll
cyJdLCBbCisgICAgYXhfY3ZfJDE9InkiCitdLCBbdGVzdCAieCRlbmFibGVfJDEiID0gInhubyJd
LCBbCisgICAgYXhfY3ZfJDE9Im4iCitdLCBbdGVzdCAteiAkYXhfY3ZfJDFdLCBbCisgICAgYXhf
Y3ZfJDE9Im4iCitdKQorJDE9JGF4X2N2XyQxCitBQ19TVUJTVCgkMSldKQpkaWZmIC1yIDg3MjE4
YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvbTQvb2NhbWwubTQKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvb2NhbWwubTQJTW9u
IEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMjQxIEBACitkbmwgYXV0b2Nv
bmYgbWFjcm9zIGZvciBPQ2FtbAorZG5sIGZyb20gaHR0cDovL2ZvcmdlLm9jYW1sY29yZS5vcmcv
CitkbmwKK2RubCBDb3B5cmlnaHQgwqkgMjAwOSAgICAgIFJpY2hhcmQgVy5NLiBKb25lcworZG5s
IENvcHlyaWdodCDCqSAyMDA5ICAgICAgU3RlZmFubyBaYWNjaGlyb2xpCitkbmwgQ29weXJpZ2h0
IMKpIDIwMDAtMjAwNSBPbGl2aWVyIEFuZHJpZXUKK2RubCBDb3B5cmlnaHQgwqkgMjAwMC0yMDA1
IEplYW4tQ2hyaXN0b3BoZSBGaWxsacOidHJlCitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAwNSBH
ZW9yZ2VzIE1hcmlhbm8KK2RubAorZG5sIEZvciBkb2N1bWVudGF0aW9uLCBwbGVhc2UgcmVhZCB0
aGUgb2NhbWwubTQgbWFuIHBhZ2UuCisKK0FDX0RFRlVOKFtBQ19QUk9HX09DQU1MXSwKK1tkbmwK
KyAgIyBjaGVja2luZyBmb3Igb2NhbWxjCisgIEFDX0NIRUNLX1RPT0woW09DQU1MQ10sW29jYW1s
Y10sW25vXSkKKworICBpZiB0ZXN0ICIkT0NBTUxDIiAhPSAibm8iOyB0aGVuCisgICAgIE9DQU1M
VkVSU0lPTj1gJE9DQU1MQyAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwx
fHAnYAorICAgICBBQ19NU0dfUkVTVUxUKFtPQ2FtbCB2ZXJzaW9uIGlzICRPQ0FNTFZFUlNJT05d
KQorICAgICAjIElmIE9DQU1MTElCIGlzIHNldCwgdXNlIGl0CisgICAgIGlmIHRlc3QgIiRPQ0FN
TExJQiIgPSAiIjsgdGhlbgorICAgICAgICBPQ0FNTExJQj1gJE9DQU1MQyAtd2hlcmUgMj4vZGV2
L251bGwgfHwgJE9DQU1MQyAtdnx0YWlsIC0xfGN1dCAtZCAnICcgLWYgNGAKKyAgICAgZWxzZQor
ICAgICAgICBBQ19NU0dfUkVTVUxUKFtPQ0FNTExJQiBwcmV2aW91c2x5IHNldDsgcHJlc2Vydmlu
ZyBpdC5dKQorICAgICBmaQorICAgICBBQ19NU0dfUkVTVUxUKFtPQ2FtbCBsaWJyYXJ5IHBhdGgg
aXMgJE9DQU1MTElCXSkKKworICAgICBBQ19TVUJTVChbT0NBTUxWRVJTSU9OXSkKKyAgICAgQUNf
U1VCU1QoW09DQU1MTElCXSkKKworICAgICAjIGNoZWNraW5nIGZvciBvY2FtbG9wdAorICAgICBB
Q19DSEVDS19UT09MKFtPQ0FNTE9QVF0sW29jYW1sb3B0XSxbbm9dKQorICAgICBPQ0FNTEJFU1Q9
Ynl0ZQorICAgICBpZiB0ZXN0ICIkT0NBTUxPUFQiID0gIm5vIjsgdGhlbgorCUFDX01TR19XQVJO
KFtDYW5ub3QgZmluZCBvY2FtbG9wdDsgYnl0ZWNvZGUgY29tcGlsYXRpb24gb25seS5dKQorICAg
ICBlbHNlCisJVE1QVkVSU0lPTj1gJE9DQU1MT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lv
biogKlwoLipcKSR8XDF8cCcgYAorCWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVS
U0lPTiIgOyB0aGVuCisJICAgIEFDX01TR19SRVNVTFQoW3ZlcnNpb25zIGRpZmZlcnMgZnJvbSBv
Y2FtbGM7IG9jYW1sb3B0IGRpc2NhcmRlZC5dKQorCSAgICBPQ0FNTE9QVD1ubworCWVsc2UKKwkg
ICAgT0NBTUxCRVNUPW9wdAorCWZpCisgICAgIGZpCisKKyAgICAgQUNfU1VCU1QoW09DQU1MQkVT
VF0pCisKKyAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxjLm9wdAorICAgICBBQ19DSEVDS19UT09M
KFtPQ0FNTENET1RPUFRdLFtvY2FtbGMub3B0XSxbbm9dKQorICAgICBpZiB0ZXN0ICIkT0NBTUxD
RE9UT1BUIiAhPSAibm8iOyB0aGVuCisJVE1QVkVSU0lPTj1gJE9DQU1MQ0RPVE9QVCAtdiB8IHNl
ZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkkfFwxfHAnIGAKKwlpZiB0ZXN0ICIkVE1QVkVS
U0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsgdGhlbgorCSAgICBBQ19NU0dfUkVTVUxUKFt2ZXJz
aW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbGMub3B0IGRpc2NhcmRlZC5dKQorCWVsc2UK
KwkgICAgT0NBTUxDPSRPQ0FNTENET1RPUFQKKwlmaQorICAgICBmaQorCisgICAgICMgY2hlY2tp
bmcgZm9yIG9jYW1sb3B0Lm9wdAorICAgICBpZiB0ZXN0ICIkT0NBTUxPUFQiICE9ICJubyIgOyB0
aGVuCisJQUNfQ0hFQ0tfVE9PTChbT0NBTUxPUFRET1RPUFRdLFtvY2FtbG9wdC5vcHRdLFtub10p
CisJaWYgdGVzdCAiJE9DQU1MT1BURE9UT1BUIiAhPSAibm8iOyB0aGVuCisJICAgVE1QVkVSU0lP
Tj1gJE9DQU1MT1BURE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8
XDF8cCcgYAorCSAgIGlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0
aGVuCisJICAgICAgQUNfTVNHX1JFU1VMVChbdmVyc2lvbiBkaWZmZXJzIGZyb20gb2NhbWxjOyBv
Y2FtbG9wdC5vcHQgZGlzY2FyZGVkLl0pCisJICAgZWxzZQorCSAgICAgIE9DQU1MT1BUPSRPQ0FN
TE9QVERPVE9QVAorCSAgIGZpCisgICAgICAgIGZpCisgICAgIGZpCisKKyAgICAgQUNfU1VCU1Qo
W09DQU1MT1BUXSkKKyAgZmkKKworICBBQ19TVUJTVChbT0NBTUxDXSkKKworICAjIGNoZWNraW5n
IGZvciBvY2FtbCB0b3BsZXZlbAorICBBQ19DSEVDS19UT09MKFtPQ0FNTF0sW29jYW1sXSxbbm9d
KQorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZGVwCisgIEFDX0NIRUNLX1RPT0woW09DQU1MREVQ
XSxbb2NhbWxkZXBdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxta3RvcAorICBBQ19D
SEVDS19UT09MKFtPQ0FNTE1LVE9QXSxbb2NhbWxta3RvcF0sW25vXSkKKworICAjIGNoZWNraW5n
IGZvciBvY2FtbG1rbGliCisgIEFDX0NIRUNLX1RPT0woW09DQU1MTUtMSUJdLFtvY2FtbG1rbGli
XSxbbm9dKQorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sZG9jCisgIEFDX0NIRUNLX1RPT0woW09D
QU1MRE9DXSxbb2NhbWxkb2NdLFtub10pCisKKyAgIyBjaGVja2luZyBmb3Igb2NhbWxidWlsZAor
ICBBQ19DSEVDS19UT09MKFtPQ0FNTEJVSUxEXSxbb2NhbWxidWlsZF0sW25vXSkKK10pCisKKwor
QUNfREVGVU4oW0FDX1BST0dfT0NBTUxMRVhdLAorW2RubAorICAjIGNoZWNraW5nIGZvciBvY2Ft
bGxleAorICBBQ19DSEVDS19UT09MKFtPQ0FNTExFWF0sW29jYW1sbGV4XSxbbm9dKQorICBpZiB0
ZXN0ICIkT0NBTUxMRVgiICE9ICJubyI7IHRoZW4KKyAgICBBQ19DSEVDS19UT09MKFtPQ0FNTExF
WERPVE9QVF0sW29jYW1sbGV4Lm9wdF0sW25vXSkKKyAgICBpZiB0ZXN0ICIkT0NBTUxMRVhET1RP
UFQiICE9ICJubyI7IHRoZW4KKwlPQ0FNTExFWD0kT0NBTUxMRVhET1RPUFQKKyAgICBmaQorICBm
aQorICBBQ19TVUJTVChbT0NBTUxMRVhdKQorXSkKKworQUNfREVGVU4oW0FDX1BST0dfT0NBTUxZ
QUNDXSwKK1tkbmwKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxZQUNDXSxbb2NhbWx5YWNjXSxbbm9d
KQorICBBQ19TVUJTVChbT0NBTUxZQUNDXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0dfQ0FN
TFA0XSwKK1tkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisKKyAgIyBjaGVj
a2luZyBmb3IgY2FtbHA0CisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNF0sW2NhbWxwNF0sW25vXSkK
KyAgaWYgdGVzdCAiJENBTUxQNCIgIT0gIm5vIjsgdGhlbgorICAgICBUTVBWRVJTSU9OPWAkQ0FN
TFA0IC12IDI+JjF8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24gKlwoLipcKSR8XDF8cCdgCisgICAg
IGlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVuCisJQUNfTVNH
X1JFU1VMVChbdmVyc2lvbnMgZGlmZmVycyBmcm9tIG9jYW1sY10pCisgICAgICAgIENBTUxQND1u
bworICAgICBmaQorICBmaQorICBBQ19TVUJTVChbQ0FNTFA0XSkKKworICAjIGNoZWNraW5nIGZv
ciBjb21wYW5pb24gdG9vbHMKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0Qk9PVF0sW2NhbWxwNGJv
b3RdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9dLFtjYW1scDRvXSxbbm9dKQorICBB
Q19DSEVDS19UT09MKFtDQU1MUDRPRl0sW2NhbWxwNG9mXSxbbm9dKQorICBBQ19DSEVDS19UT09M
KFtDQU1MUDRPT0ZdLFtjYW1scDRvb2ZdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNE9S
Rl0sW2NhbWxwNG9yZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0UFJPRl0sW2NhbWxw
NHByb2ZdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNFJdLFtjYW1scDRyXSxbbm9dKQor
ICBBQ19DSEVDS19UT09MKFtDQU1MUDRSRl0sW2NhbWxwNHJmXSxbbm9dKQorICBBQ19TVUJTVChb
Q0FNTFA0Qk9PVF0pCisgIEFDX1NVQlNUKFtDQU1MUDRPXSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9G
XSkKKyAgQUNfU1VCU1QoW0NBTUxQNE9PRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRPUkZdKQorICBB
Q19TVUJTVChbQ0FNTFA0UFJPRl0pCisgIEFDX1NVQlNUKFtDQU1MUDRSXSkKKyAgQUNfU1VCU1Qo
W0NBTUxQNFJGXSkKK10pCisKKworQUNfREVGVU4oW0FDX1BST0dfRklORExJQl0sCitbZG5sCisg
IEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRubAorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1s
ZmluZAorICBBQ19DSEVDS19UT09MKFtPQ0FNTEZJTkRdLFtvY2FtbGZpbmRdLFtub10pCisgIEFD
X1NVQlNUKFtPQ0FNTEZJTkRdKQorXSkKKworCitkbmwgVGhhbmtzIHRvIEppbSBNZXllcmluZyBm
b3Igd29ya2luZyB0aGlzIG5leHQgYml0IG91dCBmb3IgdXMuCitkbmwgWFhYIFdlIHNob3VsZCBk
ZWZpbmUgQVNfVFJfU0ggaWYgaXQncyBub3QgZGVmaW5lZCBhbHJlYWR5CitkbmwgKGVnLiBmb3Ig
b2xkIGF1dG9jb25mKS4KK0FDX0RFRlVOKFtBQ19DSEVDS19PQ0FNTF9QS0ddLAorW2RubAorICBB
Q19SRVFVSVJFKFtBQ19QUk9HX0ZJTkRMSUJdKWRubAorCisgIEFDX01TR19DSEVDS0lORyhbZm9y
IE9DYW1sIGZpbmRsaWIgcGFja2FnZSAkMV0pCisKKyAgdW5zZXQgZm91bmQKKyAgdW5zZXQgcGtn
CisgIGZvdW5kPW5vCisgIGZvciBwa2cgaW4gJDEgJDIgOyBkbworICAgIGlmICRPQ0FNTEZJTkQg
cXVlcnkgJHBrZyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBBQ19NU0dfUkVT
VUxUKFtmb3VuZF0pCisgICAgICBBU19UUl9TSChbT0NBTUxfUEtHXyQxXSk9JHBrZworICAgICAg
Zm91bmQ9eWVzCisgICAgICBicmVhaworICAgIGZpCisgIGRvbmUKKyAgaWYgdGVzdCAiJGZvdW5k
IiA9ICJubyIgOyB0aGVuCisgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5kXSkKKyAgICBBU19U
Ul9TSChbT0NBTUxfUEtHXyQxXSk9bm8KKyAgZmkKKworICBBQ19TVUJTVChBU19UUl9TSChbT0NB
TUxfUEtHXyQxXSkpCitdKQorCisKK0FDX0RFRlVOKFtBQ19DSEVDS19PQ0FNTF9NT0RVTEVdLAor
W2RubAorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBPQ2FtbCBtb2R1bGUgJDJdKQorCisgIGNhdCA+
IGNvbmZ0ZXN0Lm1sIDw8RU9GCitvcGVuICQzCitFT0YKKyAgdW5zZXQgZm91bmQKKyAgZm9yICQx
IGluICQkMSAkNCA7IGRvCisgICAgaWYgJE9DQU1MQyAtYyAtSSAiJCQxIiBjb25mdGVzdC5tbCA+
JjUgMj4mNSA7IHRoZW4KKyAgICAgIGZvdW5kPXllcworICAgICAgYnJlYWsKKyAgICBmaQorICBk
b25lCisKKyAgaWYgdGVzdCAiJGZvdW5kIiA7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKFskJDFd
KQorICBlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5kXSkKKyAgICAkMT1ubworICBm
aQorICBBQ19TVUJTVChbJDFdKQorXSkKKworCitkbmwgWFhYIENyb3NzLWNvbXBpbGluZworQUNf
REVGVU4oW0FDX0NIRUNLX09DQU1MX1dPUkRfU0laRV0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FD
X1BST0dfT0NBTUxdKWRubAorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBPQ2FtbCBjb21waWxlciB3
b3JkIHNpemVdKQorICBjYXQgPiBjb25mdGVzdC5tbCA8PEVPRgorICBwcmludF9lbmRsaW5lIChz
dHJpbmdfb2ZfaW50IFN5cy53b3JkX3NpemUpCisgIEVPRgorICBPQ0FNTF9XT1JEX1NJWkU9YCRP
Q0FNTCBjb25mdGVzdC5tbGAKKyAgQUNfTVNHX1JFU1VMVChbJE9DQU1MX1dPUkRfU0laRV0pCisg
IEFDX1NVQlNUKFtPQ0FNTF9XT1JEX1NJWkVdKQorXSkKKworQUNfREVGVU4oW0FDX0NIRUNLX09D
QU1MX09TX1RZUEVdLAorW2RubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlkbmwKKyAg
QUNfTVNHX0NIRUNLSU5HKFtPQ2FtbCBTeXMub3NfdHlwZV0pCisKKyAgY2F0ID4gY29uZnRlc3Qu
bWwgPDxFT0YKKyAgcHJpbnRfc3RyaW5nKFN5cy5vc190eXBlKTs7CitFT0YKKworICBPQ0FNTF9P
U19UWVBFPWAkT0NBTUwgY29uZnRlc3QubWxgCisgIEFDX01TR19SRVNVTFQoWyRPQ0FNTF9PU19U
WVBFXSkKKyAgQUNfU1VCU1QoW09DQU1MX09TX1RZUEVdKQorXSkKZGlmZiAtciA4NzIxOGJkMzY3
YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL200L3BhdGhfb3JfZmFpbC5tNAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9wYXRoX29yX2Zh
aWwubTQJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsNiBAQAorQUNf
REVGVU4oW0FYX1BBVEhfUFJPR19PUl9GQUlMXSwKK1tBQ19QQVRIX1BST0coWyQxXSwgWyQyXSwg
W25vXSkKK2lmIHRlc3QgeCIkeyQxfSIgPT0geCJubyIgCit0aGVuCisgICAgQUNfTVNHX0VSUk9S
KFtVbmFibGUgdG8gZmluZCAkMiwgcGxlYXNlIGluc3RhbGwgJDJdKQorZmldKQpkaWZmIC1yIDg3
MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvbTQvcHl0aG9uX2RldmVsLm00Ci0tLSAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L3B5
dGhvbl9kZXZlbC5tNAlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwx
OCBAQAorQUNfREVGVU4oW0FYX0NIRUNLX1BZVEhPTl9ERVZFTF0sCitbQUNfTVNHX0NIRUNLSU5H
KFtmb3IgcHl0aG9uIGRldmVsXSkKKworYCRQWVRIT04gLWMgJworaW1wb3J0IG9zLnBhdGgsIHN5
cworZm9yIHAgaW4gc3lzLnBhdGg6CisgICAgaWYgb3MucGF0aC5leGlzdHMocCArICIvY29uZmln
L01ha2VmaWxlIik6CisgICAgICAgIHN5cy5leGl0KDApCitzeXMuZXhpdCgxKQorJyA+IC9kZXYv
bnVsbCAyPiYxYAorCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgQUNfTVNHX1JFU1VM
VChbbm9dKQorICAgIEFDX01TR19FUlJPUihbUHl0aG9uIGRldmVsIHBhY2thZ2Ugbm90IGZvdW5k
XSkKK2Vsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZmIC1yIDg3MjE4YmQz
NjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvbTQvcHl0aG9uX3ZlcnNpb24ubTQKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvcHl0aG9u
X3ZlcnNpb24ubTQJTW9uIEZlYiAyMCAxODoyMDoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTIg
QEAKK0FDX0RFRlVOKFtBWF9DSEVDS19QWVRIT05fVkVSU0lPTl0sCitbQUNfTVNHX0NIRUNLSU5H
KFtmb3IgcHl0aG9uIHZlcnNpb24gPj0gJDEuJDIgXSkKK2AkUFlUSE9OIC1jICdpbXBvcnQgc3lz
OyBleGl0KGV2YWwoInN5cy52ZXJzaW9uX2luZm8gPCAoJDEsICQyKSIpKSdgCitpZiB0ZXN0ICIk
PyIgIT0gIjAiCit0aGVuCisgICAgcHl0aG9uX3ZlcnNpb249YCRQWVRIT04gLVYgMj4mMWAKKyAg
ICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNHX0VSUk9SKAorICAgICAgICBbJHB5dGhv
bl92ZXJzaW9uIGlzIHRvbyBvbGQsIG1pbmltdW0gcmVxdWlyZWQgdmVyc2lvbiBpcyAkMS4kMl0p
CitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciA4NzIxOGJkMzY3
YmUgLXIgY2NkZjllZDhhOTE0IHRvb2xzL200L3B5dGhvbl94bWwubTQKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvcHl0aG9uX3htbC5t
NAlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMCBAQAorQUNfREVG
VU4oW0FYX0NIRUNLX1BZVEhPTl9YTUxdLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiB4
bWwuZG9tLm1pbmlkb21dKQorYCRQWVRIT04gLWMgJ2ltcG9ydCB4bWwuZG9tLm1pbmlkb20nYAor
aWYgdGVzdCAiJD8iICE9ICIwIgordGhlbgorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBB
Q19NU0dfRVJST1IoW1VuYWJsZSB0byBmaW5kIHhtbC5kb20ubWluaWRvbSBtb2R1bGVdKQorZWxz
ZQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRpZmYgLXIgODcyMThiZDM2N2JlIC1y
IGNjZGY5ZWQ4YTkxNCB0b29scy9tNC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTQKLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvc2V0X2NmbGFn
c19sZGZsYWdzLm00CU1vbiBGZWIgMjAgMTg6MjA6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDIw
IEBACitBQ19ERUZVTihbQVhfU0VUX0ZMQUdTXSwKK1tmb3IgY2ZsYWcgaW4gJFBSRVBFTkRfSU5D
TFVERVMKK2RvCisgICAgUFJFUEVORF9DRkxBR1MrPSIgLUkkY2ZsYWciCitkb25lCitmb3IgbGRm
bGFnIGluICRQUkVQRU5EX0xJQgorZG8KKyAgICBQUkVQRU5EX0xERkxBR1MrPSIgLUwkbGRmbGFn
IgorZG9uZQorZm9yIGNmbGFnIGluICRBUFBFTkRfSU5DTFVERVMKK2RvCisgICAgQVBQRU5EX0NG
TEFHUys9IiAtSSRjZmxhZyIKK2RvbmUKK2ZvciBsZGZsYWcgaW4gJEFQUEVORF9MSUIKK2RvCisg
ICAgQVBQRU5EX0xERkxBR1MrPSIgLUwkbGRmbGFnIgorZG9uZQorQ0ZMQUdTPSIkUFJFUEVORF9D
RkxBR1MgJENGTEFHUyAkQVBQRU5EX0NGTEFHUyIKK0xERkxBR1M9IiRQUkVQRU5EX0xERkxBR1Mg
JExERkxBR1MgJEFQUEVORF9MREZMQUdTIl0pCisKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2Nk
ZjllZDhhOTE0IHRvb2xzL200L3VkZXYubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvdWRldi5tNAlNb24gRmViIDIwIDE4OjIwOjI5
IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwzMiBAQAorQUNfREVGVU4oW0FYX0NIRUNLX1VERVZdLAor
W2lmIHRlc3QgIngkaG9zdF9vcyIgPT0gInhsaW51eC1nbnUiCit0aGVuCisgICAgQUNfUEFUSF9Q
Uk9HKFtVREVWQURNXSwgW3VkZXZhZG1dLCBbbm9dKQorICAgIGlmIHRlc3QgeCIke1VERVZBRE19
IiA9PSB4Im5vIiAKKyAgICB0aGVuCisgICAgICAgIEFDX1BBVEhfUFJPRyhbVURFVklORk9dLCBb
dWRldmluZm9dLCBbbm9dKQorICAgICAgICBpZiB0ZXN0IHgiJHtVREVWSU5GT30iID09IHgibm8i
CisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIEFDX01TR19FUlJPUigKKyAgICAgICAgICAgICAg
ICBbVW5hYmxlIHRvIGZpbmQgdWRldmFkbSBvciB1ZGV2aW5mbywgcGxlYXNlIGluc3RhbGwgdWRl
dl0pCisgICAgICAgIGZpCisgICAgICAgIHVkZXZ2ZXI9YCR7VURFVklORk99IC1WIHwgYXdrICd7
cHJpbnQgJE5GfSdgCisgICAgZWxzZQorICAgICAgICB1ZGV2dmVyPWAke1VERVZBRE19IGluZm8g
LVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKKyAgICBmaQorICAgIGlmIHRlc3QgJHt1ZGV2dmVyfSAt
bHQgNTkKKyAgICB0aGVuCisgICAgICAgIEFDX1BBVEhfUFJPRyhbSE9UUExVR10sIFtob3RwbHVn
XSwgW25vXSkKKyAgICAgICAgaWYgdGVzdCB4IiR7SE9UUExVR30iID09IHgibm8iCisgICAgICAg
IHRoZW4KKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbdWRldiBpcyB0b28gb2xkLCB1cGdyYWRl
IHRvIHZlcnNpb24gNTkgb3IgbGF0ZXJdKQorICAgICAgICBmaQorICAgIGZpCitlbHNlCisgICAg
QUNfUEFUSF9QUk9HKFtWTkNPTkZJR10sIFt2bmNvbmZpZ10sIFtub10pCisgICAgaWYgdGVzdCB4
IiR7Vk5DT05GSUd9IiA9PSB4Im5vIgorICAgIHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKFtO
b3QgYSBMaW51eCBzeXN0ZW0gYW5kIHVuYWJsZSB0byBmaW5kIHZuZF0pCisgICAgZmkKK2ZpCitd
KQpkaWZmIC1yIDg3MjE4YmQzNjdiZSAtciBjY2RmOWVkOGE5MTQgdG9vbHMvbTQvdXVpZC5tNAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9t
NC91dWlkLm00CU1vbiBGZWIgMjAgMTg6MjA6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDEwIEBA
CitBQ19ERUZVTihbQVhfQ0hFQ0tfVVVJRF0sCitbaWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxp
bnV4LWdudSIKK3RoZW4KKyAgICBBQ19DSEVDS19IRUFERVIoW3V1aWQvdXVpZC5oXSwsCisJICAg
IFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIHV1aWQgaGVhZGVyc10pXSkKK2Vsc2UKKyAgICBB
Q19DSEVDS19IRUFERVIoW3V1aWQuaF0sLAorCSAgICBbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmlu
ZCB1dWlkIGhlYWRlcnNdKV0pCitmaQorXSkKZGlmZiAtciA4NzIxOGJkMzY3YmUgLXIgY2NkZjll
ZDhhOTE0IHZlcnNpb24uc2gKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKKysrIGIvdmVyc2lvbi5zaAlNb24gRmViIDIwIDE4OjIwOjI5IDIwMTIgKzAxMDAKQEAg
LTAsMCArMSw1IEBACisjIS9iaW4vc2gKKworTUFKT1I9YGdyZXAgImV4cG9ydCBYRU5fVkVSU0lP
TiIgJDEgfCBzZWQgJ3MvLio9Ly9nJyB8IHRyIC1zICIgImAKK01JTk9SPWBncmVwICJleHBvcnQg
WEVOX1NVQlZFUlNJT04iICQxIHwgc2VkICdzLy4qPS8vZycgfCB0ciAtcyAiICJgCitwcmludGYg
IiVkLiVkIiAkTUFKT1IgJE1JTk9SCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v
cmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==

From xen-devel-bounces@lists.xen.org Tue Feb 21 14:08:06 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Feb 2012 14:08:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1RzqNp-0006lc-J3; Tue, 21 Feb 2012 14:07:57 +0000
Received: from mail21.messagelabs.com ([85.158.143.35])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <royger@gmail.com>) id 1RzqNn-0006kI-A3
	for xen-devel@lists.xen.org; Tue, 21 Feb 2012 14:07:55 +0000
X-Env-Sender: royger@gmail.com
X-Msg-Ref: server-7.tower-21.messagelabs.com!1329833266!12454364!1
X-Originating-IP: [74.125.82.173]
X-SpamReason: No, hits=1.6 required=7.0 tests=BODY_RANDOM_LONG,
	DATE_IN_PAST_06_12,RCVD_BY_IP,UPPERCASE_25_50
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24286 invoked from network); 21 Feb 2012 14:07:46 -0000
Received: from mail-we0-f173.google.com (HELO mail-we0-f173.google.com)
	(74.125.82.173)
	by server-7.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
	21 Feb 2012 14:07:46 -0000
Received: by werh12 with SMTP id h12so5072608wer.32
	for <xen-devel@lists.xen.org>; Tue, 21 Feb 2012 06:07:46 -0800 (PST)
Received-SPF: pass (google.com: domain of royger@gmail.com designates
	10.180.109.225 as permitted sender) client-ip=10.180.109.225; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of royger@gmail.com
	designates 10.180.109.225 as permitted sender)
	smtp.mail=royger@gmail.com; dkim=pass header.i=royger@gmail.com
Received: from mr.google.com ([10.180.109.225])
	by 10.180.109.225 with SMTP id hv1mr27070547wib.6.1329833266234
	(num_hops = 1); Tue, 21 Feb 2012 06:07:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=sender:content-type:mime-version:subject:x-mercurial-node
	:message-id:user-agent:date:from:to:cc;
	bh=wh0jcBaEIZ/Y8GnmUHxrdOw5alx3kQylyQ2eJ9LLOR4=;
	b=HFJDjccFnMB2lIIBSBtKGewwNo4JohsTcc4stbeGAACthDy2DzbNWyaWjbLqlcJp+n
	EEQgoXpF4dDiPeHnXS306OXyF3WCy/DnPtOZvAOtyPHLR5Fm1k/O3xTgnxVYyj/x2S7v
	KptvQqLgpct7Wpg62SGKJv/gMvuz3jbfOJSi8=
Received: by 10.180.109.225 with SMTP id hv1mr22630538wib.6.1329833266146;
	Tue, 21 Feb 2012 06:07:46 -0800 (PST)
Received: from build.localdomain (tina.upc.es. [147.83.39.243])
	by mx.google.com with ESMTPS id gf3sm21248143wib.6.2012.02.21.06.07.45
	(version=TLSv1/SSLv3 cipher=OTHER);
	Tue, 21 Feb 2012 06:07:45 -0800 (PST)
Content-Type: multipart/mixed; boundary="===============6369934646102767628=="
MIME-Version: 1.0
X-Mercurial-Node: c2f0820e48ae9cf0735c5ef81e6a6796f3d42e5a
Message-Id: <c2f0820e48ae9cf0735c.1329794352@build.localdomain>
User-Agent: Mercurial-patchbomb/2.0.2
Date: Tue, 21 Feb 2012 04:19:12 +0100
From: Roger Pau Monne <roger.pau@entel.upc.edu>
To: xen-devel@lists.xen.org
Cc: ian.jackson@citrix.com, ian.campbell@citrix.com
Subject: [Xen-devel] [PATCH v8] build: add autoconf to replace custom checks
	in tools/check
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--===============6369934646102767628==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Added autotools magic to replace custom check scripts. The previous
checks have been ported to autoconf, and some additional ones have
been added (plus the suggestions from running autoscan). Two files are
created as a result from executing configure script, config/Tools.mk
and config.h.

conf/Tools.mk is included by tools/Rules.mk, and contains most of the
options previously defined in .config, that can now be set passing
parameters or defining environment variables when executing configure
script.

config.h is only used by libxl/xl to detect yajl_version.h.

Changes since v7:

 * Fixed bug that prevented the creation of "dist" directory (Ian
   Campbell).

Changes since v6:

 * Readded autogen.sh.

Changes since v5:

 * Remove dummy configure generation from autogen.sh since it's
   already on the source tree.

 * Removed autogen.sh since it was only a wrapper for calling
   autoconf.

 * Remove comment regarding yajl_version.h from configure.ac.

Changes since v4:

 * Updated to tip.

 * Include config.h from compiler command line when building libxl and
   xl to assure yajl_version.h presence and correctly detect yajl
   version.

 * Added glib-2.0 check with appropiate m4 macros.

 * Purged config.h.in from unnecessary defines that could mess with
   the build system.

 * Removed tools/config.sub, tools/config.guess, tools/configure and
   configure to make the patch fit mailing list limit.

Changes since v3:

 * Copied config.guess and config.sub from automake 1.11.

 * Added a test to check for uuid.h on BSD and uuid/uuid.h on Linux.

Changes since v2:

 * Changed order of config/Tools.mk include.

 * Added "-e" to autogen.sh shebang.

 * Added necessary files (config.*) and output from Autoheader and
   Autoconf.

 * Removed Autoconf from build dependencies and updated README.

Changes since v1:

 * Moved autoconf stuff inside tools folder.

 * Add Makefile rules for cleaning.

 * Removed Automake dependency.

 * Create autogen.sh to automatically create configure script when
   building from source repository.

 * Cached values of options passed from command line.

 * Add necessary ignores to .hgignore.

 * Added Autoconf to the list of dependencies.

 * Changed hypen to underscore in XML2 and CURL variable names.

 * Added script to get version from xen/Makefile.

 * Set Ocaml tools to optional.

 * Added procedence of m4/ocaml.m4.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>


 .hgignore                         |    6 +
 Config.mk                         |   39 ------
 Makefile                          |    3 +-
 README                            |    4 +
 autogen.sh                        |    3 +
 config/Tools.mk.in                |   50 +++++++
 configure                         |    2 +
 tools/Makefile                    |    3 +-
 tools/Rules.mk                    |    7 +-
 tools/blktap/drivers/Makefile     |    2 +-
 tools/blktap/drivers/check_gcrypt |   14 --
 tools/check/Makefile              |   26 ----
 tools/check/README                |   20 ---
 tools/check/check_brctl           |   13 --
 tools/check/check_crypto_lib      |   11 -
 tools/check/check_curl            |   13 --
 tools/check/check_iproute         |   15 --
 tools/check/check_libaio_devel    |   11 -
 tools/check/check_libaio_lib      |    9 -
 tools/check/check_openssl_devel   |    6 -
 tools/check/check_python          |   13 --
 tools/check/check_python_devel    |   17 --
 tools/check/check_python_xml      |   12 -
 tools/check/check_udev            |   22 ---
 tools/check/check_uuid_devel      |    7 -
 tools/check/check_x11_devel       |    9 -
 tools/check/check_xgettext        |    6 -
 tools/check/check_xml2            |   14 --
 tools/check/check_yajl_devel      |    8 -
 tools/check/check_zlib_devel      |    6 -
 tools/check/check_zlib_lib        |   12 -
 tools/check/chk                   |   63 ---------
 tools/check/funcs.sh              |  106 ----------------
 tools/config.h.in                 |   16 ++
 tools/configure.ac                |  192 ++++++++++++++++++++++++++++++
 tools/debugger/gdbsx/xg/Makefile  |    1 -
 tools/install.sh                  |    1 +
 tools/libfsimage/Makefile         |    6 +-
 tools/libfsimage/check-libext2fs  |   21 ---
 tools/libxen/Makefile             |    8 +-
 tools/libxl/Makefile              |    7 +-
 tools/libxl/libxl_json.h          |    2 +-
 tools/m4/default_lib.m4           |    8 +
 tools/m4/disable_feature.m4       |   13 ++
 tools/m4/enable_feature.m4        |   13 ++
 tools/m4/ocaml.m4                 |  241 ++++++++++++++++++++++++++++++++++++++
 tools/m4/path_or_fail.m4          |    6 +
 tools/m4/pkg.m4                   |  157 ++++++++++++++++++++++++
 tools/m4/python_devel.m4          |   18 ++
 tools/m4/python_version.m4        |   12 +
 tools/m4/python_xml.m4            |   10 +
 tools/m4/set_cflags_ldflags.m4    |   20 +++
 tools/m4/udev.m4                  |   32 +++++
 tools/m4/uuid.m4                  |   10 +
 version.sh                        |    5 +
 55 files changed, 840 insertions(+), 511 deletions(-)



--===============6369934646102767628==
Content-Type: text/x-patch; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=xen-autoconf.patch

IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGVu
dGVsLnVwYy5lZHU+CiMgRGF0ZSAxMzI5Nzk0MzA5IC0zNjAwCiMgTm9kZSBJRCBjMmYwODIwZTQ4
YWU5Y2YwNzM1YzVlZjgxZTZhNjc5NmYzZDQyZTVhCiMgUGFyZW50ICBjYTgwZWNhOWNmYTM5ZDFi
NjBkMTIxNjk0OGRhYzU3MTFkNTUwYjgzCmJ1aWxkOiBhZGQgYXV0b2NvbmYgdG8gcmVwbGFjZSBj
dXN0b20gY2hlY2tzIGluIHRvb2xzL2NoZWNrCgpBZGRlZCBhdXRvdG9vbHMgbWFnaWMgdG8gcmVw
bGFjZSBjdXN0b20gY2hlY2sgc2NyaXB0cy4gVGhlIHByZXZpb3VzCmNoZWNrcyBoYXZlIGJlZW4g
cG9ydGVkIHRvIGF1dG9jb25mLCBhbmQgc29tZSBhZGRpdGlvbmFsIG9uZXMgaGF2ZQpiZWVuIGFk
ZGVkIChwbHVzIHRoZSBzdWdnZXN0aW9ucyBmcm9tIHJ1bm5pbmcgYXV0b3NjYW4pLiBUd28gZmls
ZXMgYXJlCmNyZWF0ZWQgYXMgYSByZXN1bHQgZnJvbSBleGVjdXRpbmcgY29uZmlndXJlIHNjcmlw
dCwgY29uZmlnL1Rvb2xzLm1rCmFuZCBjb25maWcuaC4KCmNvbmYvVG9vbHMubWsgaXMgaW5jbHVk
ZWQgYnkgdG9vbHMvUnVsZXMubWssIGFuZCBjb250YWlucyBtb3N0IG9mIHRoZQpvcHRpb25zIHBy
ZXZpb3VzbHkgZGVmaW5lZCBpbiAuY29uZmlnLCB0aGF0IGNhbiBub3cgYmUgc2V0IHBhc3NpbmcK
cGFyYW1ldGVycyBvciBkZWZpbmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hlbiBleGVjdXRp
bmcgY29uZmlndXJlCnNjcmlwdC4KCmNvbmZpZy5oIGlzIG9ubHkgdXNlZCBieSBsaWJ4bC94bCB0
byBkZXRlY3QgeWFqbF92ZXJzaW9uLmguCgpDaGFuZ2VzIHNpbmNlIHY3OgoKICogRml4ZWQgYnVn
IHRoYXQgcHJldmVudGVkIHRoZSBjcmVhdGlvbiBvZiAiZGlzdCIgZGlyZWN0b3J5IChJYW4KICAg
Q2FtcGJlbGwpLgoKQ2hhbmdlcyBzaW5jZSB2NjoKCiAqIFJlYWRkZWQgYXV0b2dlbi5zaC4KCkNo
YW5nZXMgc2luY2UgdjU6CgogKiBSZW1vdmUgZHVtbXkgY29uZmlndXJlIGdlbmVyYXRpb24gZnJv
bSBhdXRvZ2VuLnNoIHNpbmNlIGl0J3MKICAgYWxyZWFkeSBvbiB0aGUgc291cmNlIHRyZWUuCgog
KiBSZW1vdmVkIGF1dG9nZW4uc2ggc2luY2UgaXQgd2FzIG9ubHkgYSB3cmFwcGVyIGZvciBjYWxs
aW5nCiAgIGF1dG9jb25mLgoKICogUmVtb3ZlIGNvbW1lbnQgcmVnYXJkaW5nIHlhamxfdmVyc2lv
bi5oIGZyb20gY29uZmlndXJlLmFjLgoKQ2hhbmdlcyBzaW5jZSB2NDoKCiAqIFVwZGF0ZWQgdG8g
dGlwLgoKICogSW5jbHVkZSBjb25maWcuaCBmcm9tIGNvbXBpbGVyIGNvbW1hbmQgbGluZSB3aGVu
IGJ1aWxkaW5nIGxpYnhsIGFuZAogICB4bCB0byBhc3N1cmUgeWFqbF92ZXJzaW9uLmggcHJlc2Vu
Y2UgYW5kIGNvcnJlY3RseSBkZXRlY3QgeWFqbAogICB2ZXJzaW9uLgoKICogQWRkZWQgZ2xpYi0y
LjAgY2hlY2sgd2l0aCBhcHByb3BpYXRlIG00IG1hY3Jvcy4KCiAqIFB1cmdlZCBjb25maWcuaC5p
biBmcm9tIHVubmVjZXNzYXJ5IGRlZmluZXMgdGhhdCBjb3VsZCBtZXNzIHdpdGgKICAgdGhlIGJ1
aWxkIHN5c3RlbS4KCiAqIFJlbW92ZWQgdG9vbHMvY29uZmlnLnN1YiwgdG9vbHMvY29uZmlnLmd1
ZXNzLCB0b29scy9jb25maWd1cmUgYW5kCiAgIGNvbmZpZ3VyZSB0byBtYWtlIHRoZSBwYXRjaCBm
aXQgbWFpbGluZyBsaXN0IGxpbWl0LgoKQ2hhbmdlcyBzaW5jZSB2MzoKCiAqIENvcGllZCBjb25m
aWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgZnJvbSBhdXRvbWFrZSAxLjExLgoKICogQWRkZWQgYSB0
ZXN0IHRvIGNoZWNrIGZvciB1dWlkLmggb24gQlNEIGFuZCB1dWlkL3V1aWQuaCBvbiBMaW51eC4K
CkNoYW5nZXMgc2luY2UgdjI6CgogKiBDaGFuZ2VkIG9yZGVyIG9mIGNvbmZpZy9Ub29scy5tayBp
bmNsdWRlLgoKICogQWRkZWQgIi1lIiB0byBhdXRvZ2VuLnNoIHNoZWJhbmcuCgogKiBBZGRlZCBu
ZWNlc3NhcnkgZmlsZXMgKGNvbmZpZy4qKSBhbmQgb3V0cHV0IGZyb20gQXV0b2hlYWRlciBhbmQK
ICAgQXV0b2NvbmYuCgogKiBSZW1vdmVkIEF1dG9jb25mIGZyb20gYnVpbGQgZGVwZW5kZW5jaWVz
IGFuZCB1cGRhdGVkIFJFQURNRS4KCkNoYW5nZXMgc2luY2UgdjE6CgogKiBNb3ZlZCBhdXRvY29u
ZiBzdHVmZiBpbnNpZGUgdG9vbHMgZm9sZGVyLgoKICogQWRkIE1ha2VmaWxlIHJ1bGVzIGZvciBj
bGVhbmluZy4KCiAqIFJlbW92ZWQgQXV0b21ha2UgZGVwZW5kZW5jeS4KCiAqIENyZWF0ZSBhdXRv
Z2VuLnNoIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGNvbmZpZ3VyZSBzY3JpcHQgd2hlbgogICBi
dWlsZGluZyBmcm9tIHNvdXJjZSByZXBvc2l0b3J5LgoKICogQ2FjaGVkIHZhbHVlcyBvZiBvcHRp
b25zIHBhc3NlZCBmcm9tIGNvbW1hbmQgbGluZS4KCiAqIEFkZCBuZWNlc3NhcnkgaWdub3JlcyB0
byAuaGdpZ25vcmUuCgogKiBBZGRlZCBBdXRvY29uZiB0byB0aGUgbGlzdCBvZiBkZXBlbmRlbmNp
ZXMuCgogKiBDaGFuZ2VkIGh5cGVuIHRvIHVuZGVyc2NvcmUgaW4gWE1MMiBhbmQgQ1VSTCB2YXJp
YWJsZSBuYW1lcy4KCiAqIEFkZGVkIHNjcmlwdCB0byBnZXQgdmVyc2lvbiBmcm9tIHhlbi9NYWtl
ZmlsZS4KCiAqIFNldCBPY2FtbCB0b29scyB0byBvcHRpb25hbC4KCiAqIEFkZGVkIHByb2NlZGVu
Y2Ugb2YgbTQvb2NhbWwubTQuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubmUgPHJvZ2Vy
LnBhdUBlbnRlbC51cGMuZWR1PgoKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFl
IC5oZ2lnbm9yZQotLS0gYS8uaGdpZ25vcmUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAw
CisrKyBiLy5oZ2lnbm9yZQlUdWUgRmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTMwMyw2
ICszMDMsMTIgQEAKIF50b29scy9vY2FtbC9saWJzL3hsL3hlbmxpZ2h0XC5tbCQKIF50b29scy9v
Y2FtbC9saWJzL3hsL3hlbmxpZ2h0XC5tbGkkCiBedG9vbHMvb2NhbWwveGVuc3RvcmVkL294ZW5z
dG9yZWQkCitedG9vbHMvYXV0b200dGVcLmNhY2hlJAorXnRvb2xzL2NvbmZpZ1wuaCQKK150b29s
cy9jb25maWdcLmxvZyQKK150b29scy9jb25maWdcLnN0YXR1cyQKK150b29scy9jb25maWdcLmNh
Y2hlJAorXmNvbmZpZy9Ub29sc1wubWskCiBeeGVuL1wuYmFubmVyLiokCiBeeGVuL0JMT0ckCiBe
eGVuL1N5c3RlbS5tYXAkCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSBDb25m
aWcubWsKLS0tIGEvQ29uZmlnLm1rCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysg
Yi9Db25maWcubWsJVHVlIEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBAIC03MCw5ICs3MCw2
IEBAIEVYVFJBX0lOQ0xVREVTICs9ICQoRVhUUkFfUFJFRklYKS9pbmNsdWQKIEVYVFJBX0xJQiAr
PSAkKEVYVFJBX1BSRUZJWCkvJChMSUJMRUFGRElSKQogZW5kaWYKIAotQklTT04JPz0gYmlzb24K
LUZMRVgJPz0gZmxleAotCiBQWVRIT04gICAgICA/PSBweXRob24KIFBZVEhPTl9QUkVGSVhfQVJH
ID89IC0tcHJlZml4PSIkKFBSRUZJWCkiCiAjIFRoZSBhYm92ZSByZXF1aXJlcyB0aGF0IFBSRUZJ
WCBjb250YWlucyAqbm8gc3BhY2VzKi4gVGhpcyB2YXJpYWJsZSBpcyBoZXJlCkBAIC0xNzUsMzIg
KzE3Miw5IEBAIENGTEFHUyArPSAkKGZvcmVhY2ggaSwgJChQUkVQRU5EX0lOQ0xVREUKIEFQUEVO
RF9MREZMQUdTICs9ICQoZm9yZWFjaCBpLCAkKEFQUEVORF9MSUIpLCAtTCQoaSkpCiBBUFBFTkRf
Q0ZMQUdTICs9ICQoZm9yZWFjaCBpLCAkKEFQUEVORF9JTkNMVURFUyksIC1JJChpKSkKIAotQ0hF
Q0tfTElCID0gJChFWFRSQV9MSUIpICQoUFJFUEVORF9MSUIpICQoQVBQRU5EX0xJQikKLUNIRUNL
X0lOQ0xVREVTID0gJChFWFRSQV9JTkNMVURFUykgJChQUkVQRU5EX0lOQ0xVREVTKSAkKEFQUEVO
RF9JTkNMVURFUykKLQogRU1CRURERURfRVhUUkFfQ0ZMQUdTIDo9IC1ub3BpZSAtZm5vLXN0YWNr
LXByb3RlY3RvciAtZm5vLXN0YWNrLXByb3RlY3Rvci1hbGwKIEVNQkVEREVEX0VYVFJBX0NGTEFH
UyArPSAtZm5vLWV4Y2VwdGlvbnMKIAotQ09ORklHX0xJQklDT05WICAgOj0gJChzaGVsbCBleHBv
cnQgT1M9ImB1bmFtZSAtc2AiOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydCBDSEVD
S19MSUI9IiQoQ0hFQ0tfTElCKSI7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgLiAkKFhFTl9S
T09UKS90b29scy9jaGVjay9mdW5jcy5zaDsgXAotICAgICAgICAgICAgICAgICAgICAgICBoYXNf
bGliIGxpYmljb252LnNvICYmIGVjaG8gJ3knIHx8IGVjaG8gJ24nKQotCi1DT05GSUdfWUFKTF9W
RVJTSU9OIDo9ICQoc2hlbGwgZXhwb3J0IE9TPSJgdW5hbWUgLXNgIjsgXAotICAgICAgICAgICAg
ICAgICAgICAgICBleHBvcnQgQ0hFQ0tfSU5DTFVERVM9IiQoQ0hFQ0tfSU5DTFVERVMpIjsgXAot
ICAgICAgICAgICAgICAgICAgICAgICAuICQoWEVOX1JPT1QpL3Rvb2xzL2NoZWNrL2Z1bmNzLnNo
OyBcCi0gICAgICAgICAgICAgICAgICAgICAgIGhhc19oZWFkZXIgeWFqbC95YWpsX3ZlcnNpb24u
aCAmJiBlY2hvICd5JyB8fCBlY2hvICduJykKLQotIyBFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVs
ZSAoYnkgZGVmYXVsdCwgRmxhc2spLgotWFNNX0VOQUJMRSA/PSBuCi1GTEFTS19FTkFCTEUgPz0g
JChYU01fRU5BQkxFKQotCi0jIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhUVFAgb3Ig
R0lUJ3Mgb3duIHByb3RvY29sPwotIyBHSVQncyBwcm90b2NvbCBpcyBmYXN0ZXIgYW5kIG1vcmUg
cm9idXN0LCB3aGVuIGl0IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCi0jIG1heSBibG9jayBpdCku
IFdlIG1ha2UgaXQgdGhlIGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCByZXBvc2l0b3J5IGRvd25s
b2FkcwotIyBmYWlsIG9yIGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9IVFRQPXkgaW4geW91ciBl
bnZpcm9ubWVudC4KLUdJVF9IVFRQID89IG4KLQogWEVOX0VYVEZJTEVTX1VSTD1odHRwOi8veGVu
Yml0cy54ZW5zb3VyY2UuY29tL3hlbi1leHRmaWxlcwogIyBBbGwgdGhlIGZpbGVzIGF0IHRoYXQg
bG9jYXRpb24gd2VyZSBkb3dubG9hZGVkIGZyb20gZWxzZXdoZXJlIG9uCiAjIHRoZSBpbnRlcm5l
dC4gIFRoZSBvcmlnaW5hbCBkb3dubG9hZCBVUkwgaXMgcHJlc2VydmVkIGFzIGEgY29tbWVudApA
QCAtMjM5LDE3ICsyMTMsNCBAQCBRRU1VX1RBRyA/PSAxMjhkZTI1NDljNWYyNGU0YTQzN2I4NmJk
MmU0CiAjIFNob3J0IGFuc3dlciAtLSBkbyBub3QgZW5hYmxlIHRoaXMgdW5sZXNzIHlvdSBrbm93
IHdoYXQgeW91IGFyZQogIyBkb2luZyBhbmQgYXJlIHByZXBhcmVkIGZvciBzb21lIHBhaW4uCiAK
LSMgT3B0aW9uYWwgY29tcG9uZW50cwotWEVOU1RBVF9YRU5UT1AgICAgID89IHkKLVZUUE1fVE9P
TFMgICAgICAgICA/PSBuCi1MSUJYRU5BUElfQklORElOR1MgPz0gbgotUFlUSE9OX1RPT0xTICAg
ICAgID89IHkKLU9DQU1MX1RPT0xTICAgICAgICA/PSB5Ci1DT05GSUdfTUlOSVRFUk0gICAgPz0g
bgotQ09ORklHX0xPTU9VTlQgICAgID89IG4KLUNPTkZJR19TWVNURU1fTElCQUlPID89IHkKIENP
TkZJR19URVNUUyAgICAgICA/PSB5Ci0KLWlmZXEgKCQoT0NBTUxfVE9PTFMpLHkpCi1PQ0FNTF9U
T09MUyA6PSAkKHNoZWxsIG9jYW1sb3B0IC12ID4gL2Rldi9udWxsIDI+JjEgJiYgZWNobyAieSIg
fHwgZWNobyAibiIpCi1lbmRpZgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUg
TWFrZWZpbGUKLS0tIGEvTWFrZWZpbGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisr
KyBiL01ha2VmaWxlCVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtNDAsMTEgKzQw
LDEwIEBAIGRpc3Q6IERFU1RESVI9JChESVNURElSKS9pbnN0YWxsCiBkaXN0OiBkaXN0LXhlbiBk
aXN0LWtlcm5lbHMgZGlzdC10b29scyBkaXN0LXN0dWJkb20gZGlzdC1kb2NzIGRpc3QtbWlzYwog
CiBkaXN0LW1pc2M6Ci0JJChJTlNUQUxMX0RJUikgJChESVNURElSKS9jaGVjaworCSQoSU5TVEFM
TF9ESVIpICQoRElTVERJUikvCiAJJChJTlNUQUxMX0RBVEEpIC4vQ09QWUlORyAkKERJU1RESVIp
CiAJJChJTlNUQUxMX0RBVEEpIC4vUkVBRE1FICQoRElTVERJUikKIAkkKElOU1RBTExfUFJPRykg
Li9pbnN0YWxsLnNoICQoRElTVERJUikKLQkkKElOU1RBTExfUFJPRykgdG9vbHMvY2hlY2svY2hr
IHRvb2xzL2NoZWNrL2NoZWNrXyogdG9vbHMvY2hlY2svZnVuY3Muc2ggJChESVNURElSKS9jaGVj
awogZGlzdC0lOiBERVNURElSPSQoRElTVERJUikvaW5zdGFsbAogZGlzdC0lOiBpbnN0YWxsLSUK
IAlAOiAjIGRvIG5vdGhpbmcKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIFJF
QURNRQotLS0gYS9SRUFETUUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL1JF
QURNRQlUdWUgRmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTg5LDkgKzg5LDEzIEBAIDIu
IGNkIHRvIHhlbi11bnN0YWJsZSAob3Igd2hhdGV2ZXIgeW91IHMKIDMuIEZvciB0aGUgdmVyeSBm
aXJzdCBidWlsZCwgb3IgaWYgeW91IHdhbnQgdG8gZGVzdHJveSBidWlsZCB0cmVlcywKICAgIHBl
cmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKIAorICAgICMgLi9jb25maWd1cmUKICAgICAjIG1h
a2Ugd29ybGQKICAgICAjIG1ha2UgaW5zdGFsbAogCisgICBJZiB5b3Ugd2FudCwgeW91IGNhbiBy
dW4gLi9jb25maWd1cmUgLS1oZWxwIHRvIHNlZSB0aGUgbGlzdCBvZgorICAgb3B0aW9ucyBhdmFp
bGFibGUgb3B0aW9ucyB3aGVuIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIFhlbi4KKwogICAgVGhp
cyB3aWxsIGNyZWF0ZSBhbmQgaW5zdGFsbCBvbnRvIHRoZSBsb2NhbCBtYWNoaW5lLiBJdCB3aWxs
IGJ1aWxkCiAgICB0aGUgeGVuIGJpbmFyeSAoeGVuLmd6KSwgdGhlIHRvb2xzIGFuZCB0aGUgZG9j
dW1lbnRhdGlvbi4KIApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgYXV0b2dl
bi5zaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9h
dXRvZ2VuLnNoCVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDMgQEAK
KyMhL2Jpbi9zaCAtZQorY2QgdG9vbHMKK2F1dG9jb25mCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IGMyZjA4MjBlNDhhZSBjb25maWcvVG9vbHMubWsuaW4KLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvY29uZmlnL1Rvb2xzLm1rLmluCVR1ZSBGZWIgMjEg
MDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDUwIEBACisjIFByZWZpeCBhbmQgaW5zdGFs
bCBmb2xkZXIKK1BSRUZJWCAgICAgICAgICAgICAgOj0gQHByZWZpeEAKK0xJQkxFQUZESVJfeDg2
XzY0ICAgOj0gQExJQl9QQVRIQAorCisjIEEgZGVidWcgYnVpbGQgb2YgdG9vbHM/CitkZWJ1ZyAg
ICAgICAgICAgICAgIDo9IEBkZWJ1Z0AKKworIyBUb29scyBwYXRoCitCSVNPTiAgICAgICAgICAg
ICAgIDo9IEBCSVNPTkAKK0ZMRVggICAgICAgICAgICAgICAgOj0gQEZMRVhACitQWVRIT04gICAg
ICAgICAgICAgIDo9IEBQWVRIT05ACitQWVRIT05fUEFUSCAgICAgICAgIDo9IEBQWVRIT05QQVRI
QAorUEVSTCAgICAgICAgICAgICAgICA6PSBAUEVSTEAKK0JSQ1RMICAgICAgICAgICAgICAgOj0g
QEJSQ1RMQAorSVAgICAgICAgICAgICAgICAgICA6PSBASVBACitDVVJMX0NPTkZJRyAgICAgICAg
IDo9IEBDVVJMQAorWE1MMl9DT05GSUcgICAgICAgICA6PSBAWE1MQAorQkFTSCAgICAgICAgICAg
ICAgICA6PSBAQkFTSEAKK1hHRVRUVEVYVCAgICAgICAgICAgOj0gQFhHRVRURVhUQAorCisjIEV4
dHJhIGZvbGRlciBmb3IgbGlicy9pbmNsdWRlcworUFJFUEVORF9JTkNMVURFUyAgICA6PSBAUFJF
UEVORF9JTkNMVURFU0AKK1BSRVBFTkRfTElCICAgICAgICAgOj0gQFBSRVBFTkRfTElCQAorQVBQ
RU5EX0lOQ0xVREVTICAgICA6PSBAQVBQRU5EX0lOQ0xVREVTQAorQVBQRU5EX0xJQiAgICAgICAg
ICA6PSBAQVBQRU5EX0xJQkAKKworIyBFbmFibGUgWFNNIHNlY3VyaXR5IG1vZHVsZSAoYnkgZGVm
YXVsdCwgRmxhc2spLgorWFNNX0VOQUJMRSAgICAgICAgICA6PSBAeHNtQAorRkxBU0tfRU5BQkxF
ICAgICAgICA6PSBAeHNtQAorCisjIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlhIEhUVFAg
b3IgR0lUJ3Mgb3duIHByb3RvY29sPworIyBHSVQncyBwcm90b2NvbCBpcyBmYXN0ZXIgYW5kIG1v
cmUgcm9idXN0LCB3aGVuIGl0IHdvcmtzIGF0IGFsbCAoZmlyZXdhbGxzCisjIG1heSBibG9jayBp
dCkuIFdlIG1ha2UgaXQgdGhlIGRlZmF1bHQsIGJ1dCBpZiB5b3VyIEdJVCByZXBvc2l0b3J5IGRv
d25sb2FkcworIyBmYWlsIG9yIGhhbmcsIHBsZWFzZSBzcGVjaWZ5IEdJVF9IVFRQPXkgaW4geW91
ciBlbnZpcm9ubWVudC4KK0dJVF9IVFRQICAgICAgICAgICAgOj0gQGdpdGh0dHBACisKKyMgT3B0
aW9uYWwgY29tcG9uZW50cworWEVOU1RBVF9YRU5UT1AgICAgICA6PSBAbW9uaXRvcnNACitWVFBN
X1RPT0xTICAgICAgICAgIDo9IEB2dHBtQAorTElCWEVOQVBJX0JJTkRJTkdTICA6PSBAeGFwaUAK
K1BZVEhPTl9UT09MUyAgICAgICAgOj0gQHB5dGhvbnRvb2xzQAorT0NBTUxfVE9PTFMgICAgICAg
ICA6PSBAb2NhbWx0b29sc0AKK0NPTkZJR19NSU5JVEVSTSAgICAgOj0gQG1pbml0ZXJtQAorQ09O
RklHX0xPTU9VTlQgICAgICA6PSBAbG9tb3VudEAKKworI1N5c3RlbSBvcHRpb25zCitDT05GSUdf
U1lTVEVNX0xJQkFJTzo9IEBzeXN0ZW1fYWlvQAorQ09ORklHX0xJQklDT05WICAgICA6PSBAbGli
aWNvbnZACitDT05GSUdfR0NSWVBUICAgICAgIDo9IEBsaWJnY3J5cHRACitDT05GSUdfRVhUMkZT
ICAgICAgIDo9IEBsaWJleHQyZnNACmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhh
ZSBjb25maWd1cmUKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
KysrIGIvY29uZmlndXJlCVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsx
LDIgQEAKKyMhL2Jpbi9zaCAtZQorY2QgdG9vbHMgJiYgLi9jb25maWd1cmUgJEAKZGlmZiAtciBj
YTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL01ha2VmaWxlCi0tLSBhL3Rvb2xzL01h
a2VmaWxlCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9NYWtlZmls
ZQlUdWUgRmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTYsNyArNiw2IEBAIFNVQkRJUlMt
bGliYWlvIDo9IGxpYmFpbwogZW5kaWYKIAogU1VCRElSUy15IDo9Ci1TVUJESVJTLXkgKz0gY2hl
Y2sKIFNVQkRJUlMteSArPSBpbmNsdWRlCiBTVUJESVJTLXkgKz0gbGlieGMKIFNVQkRJUlMteSAr
PSBmbGFzawpAQCAtNzksNiArNzgsOCBAQCBjbGVhbjogc3ViZGlycy1jbGVhbgogZGlzdGNsZWFu
OiBzdWJkaXJzLWRpc3RjbGVhbgogCXJtIC1yZiBxZW11LXhlbi10cmFkaXRpb25hbC1kaXIgcWVt
dS14ZW4tdHJhZGl0aW9uYWwtZGlyLXJlbW90ZQogCXJtIC1yZiBxZW11LXhlbi1kaXIgcWVtdS14
ZW4tZGlyLXJlbW90ZQorCXJtIC1yZiAuLi9jb25maWcvVG9vbHMubWsgY29uZmlnLmggY29uZmln
LmxvZyBjb25maWcuc3RhdHVzIFwKKwkJY29uZmlnLmNhY2hlIGF1dG9tNHRlLmNhY2hlCiAKIGlm
bmVxICgkKFhFTl9DT01QSUxFX0FSQ0gpLCQoWEVOX1RBUkdFVF9BUkNIKSkKIElPRU1VX0NPTkZJ
R1VSRV9DUk9TUyA/PSAtLWNwdT0kKFhFTl9UQVJHRVRfQVJDSCkgXApkaWZmIC1yIGNhODBlY2E5
Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvUnVsZXMubWsKLS0tIGEvdG9vbHMvUnVsZXMubWsJ
TW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL1J1bGVzLm1rCVR1ZSBG
ZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtNCw2ICs0LDcgQEAKIGFsbDoKIAogaW5jbHVk
ZSAkKFhFTl9ST09UKS9Db25maWcubWsKK2luY2x1ZGUgJChYRU5fUk9PVCkvY29uZmlnL1Rvb2xz
Lm1rCiAKIGV4cG9ydCBfSU5TVEFMTCA6PSAkKElOU1RBTEwpCiBJTlNUQUxMID0gJChYRU5fUk9P
VCkvdG9vbHMvY3Jvc3MtaW5zdGFsbApAQCAtODAsOCArODEsNiBAQCBjaGVjay0kKENPTkZJR19Y
ODYpID0gJChjYWxsIGNjLXZlci1jaGVjCiAgICAgICAgICAgICAgICAgICAgICAgICAiWGVuIHJl
cXVpcmVzIGF0IGxlYXN0IGdjYy0zLjQiKQogJChldmFsICQoY2hlY2steSkpCiAKLV9QWVRIT05f
UEFUSCA6PSAkKHNoZWxsIHdoaWNoICQoUFlUSE9OKSkKLVBZVEhPTl9QQVRIID89ICQoX1BZVEhP
Tl9QQVRIKQogSU5TVEFMTF9QWVRIT05fUFJPRyA9IFwKIAkkKFhFTl9ST09UKS90b29scy9weXRo
b24vaW5zdGFsbC13cmFwICIkKFBZVEhPTl9QQVRIKSIgJChJTlNUQUxMX1BST0cpCiAKQEAgLTEw
OSwzICsxMDgsNyBAQCBzdWJkaXItYWxsLSUgc3ViZGlyLWNsZWFuLSUgc3ViZGlyLWluc3RhCiAK
IHN1YmRpci1kaXN0Y2xlYW4tJTogLnBob255CiAJJChNQUtFKSAtQyAkKiBjbGVhbgorCiskKFhF
Tl9ST09UKS9jb25maWcvVG9vbHMubWs6CisJQGVjaG8gIllvdSBoYXZlIHRvIHJ1biAuL2NvbmZp
Z3VyZSBiZWZvcmUgYnVpbGRpbmcgb3IgaW5zdGFsbGluZyB0aGUgdG9vbHMiCisJQGV4aXQgMQpk
aWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvYmxrdGFwL2RyaXZlcnMv
TWFrZWZpbGUKLS0tIGEvdG9vbHMvYmxrdGFwL2RyaXZlcnMvTWFrZWZpbGUJTW9uIEZlYiAyMCAx
ODozNDoxNCAyMDEyICswMDAwCisrKyBiL3Rvb2xzL2Jsa3RhcC9kcml2ZXJzL01ha2VmaWxlCVR1
ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMTMsNyArMTMsNyBAQCBDRkxBR1MgICAr
PSAkKENGTEFHU19saWJ4ZW5zdG9yZSkKIENGTEFHUyAgICs9IC1JICQoTUVNU0hSX0RJUikKIENG
TEFHUyAgICs9IC1EX0dOVV9TT1VSQ0UKIAotaWZlcSAoJChzaGVsbCAuIC4vY2hlY2tfZ2NyeXB0
ICQoQ0MpKSx5ZXMpCitpZmVxICgkQ09ORklHX0dDUllQVCx5KQogQ0ZMQUdTICs9IC1EVVNFX0dD
UllQVAogQ1JZUFRfTElCIDo9IC1sZ2NyeXB0CiBlbHNlCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IGMyZjA4MjBlNDhhZSB0b29scy9ibGt0YXAvZHJpdmVycy9jaGVja19nY3J5cHQKLS0tIGEvdG9v
bHMvYmxrdGFwL2RyaXZlcnMvY2hlY2tfZ2NyeXB0CU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiAr
MDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwx
NCArMCwwIEBACi0jIS9iaW4vc2gKLQotY2F0ID4gLmdjcnlwdC5jIDw8IEVPRgotI2luY2x1ZGUg
PGdjcnlwdC5oPgotaW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQotRU9GCi0KLWlmICQxIC1v
IC5nY3J5cHQgLmdjcnlwdC5jIC1sZ2NyeXB0IDI+L2Rldi9udWxsIDsgdGhlbgotICBlY2hvICJ5
ZXMiCi1lbHNlCi0gIGVjaG8gIm5vIgotZmkKLQotcm0gLWYgLmdjcnlwdCoKZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2NoZWNrL01ha2VmaWxlCi0tLSBhL3Rvb2xz
L2NoZWNrL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyNiArMCwwIEBACi1YRU5f
Uk9PVCA9ICQoQ1VSRElSKS8uLi8uLgotaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5t
awotCi0jIEV4cG9ydCB0aGUgbmVjZXNzYXJ5IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhl
IHRlc3RzCi1leHBvcnQgUFlUSE9OCi1leHBvcnQgTElCWEVOQVBJX0JJTkRJTkdTCi1leHBvcnQg
Q0hFQ0tfSU5DTFVERVMKLWV4cG9ydCBDSEVDS19MSUIKLWV4cG9ydCBDT05GSUdfU1lTVEVNX0xJ
QkFJTwotCi0uUEhPTlk6IGFsbCBpbnN0YWxsCi1hbGwgaW5zdGFsbDogY2hlY2stYnVpbGQKLQot
IyBDaGVjayB0aGlzIG1hY2hpbmUgaXMgT0sgZm9yIGJ1aWxkaW5nIG9uLgotLlBIT05ZOiBjaGVj
ay1idWlsZAotY2hlY2stYnVpbGQ6Ci0JLi9jaGsgYnVpbGQKLQotIyBDaGVjayB0aGlzIG1hY2hp
bmUgaXMgT0sgZm9yIGluc3RhbGxpbmcgb24uCi0uUEhPTlk6IGNoZWNrLWluc3RhbGwKLWNoZWNr
LWluc3RhbGw6Ci0JLi9jaGsgaW5zdGFsbAotCi0uUEhPTlk6IGNsZWFuCi1jbGVhbjoKLQkuL2No
ayBjbGVhbgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvY2hlY2sv
UkVBRE1FCi0tLSBhL3Rvb2xzL2NoZWNrL1JFQURNRQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIg
KzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MjAgKzAsMCBAQAotQ2hlY2tzIGZvciB0aGUgc3VpdGFiaWxpdHkgb2YgYSBtYWNoaW5lIGZvciBY
ZW4gYnVpbGQgb3IgaW5zdGFsbC4KLVRvIGNoZWNrIGZvciBidWlsZCBzdWl0YWJpbGl0eSB1c2UK
LQotICAgICAgICAuL2NoayBidWlsZAotCi1UbyBjaGVjayBmb3IgaW5zdGFsbCBzdWl0YWJpbGl0
eSB1c2UKLQotICAgICAgICAuL2NoayBpbnN0YWxsCi0KLVRoZSBjaGsgc2NyaXB0IHdpbGwgcnVu
IGNoZWNrcyBpbiB0aGlzIGRpcmVjdG9yeSBhbmQgcHJpbnQKLXRoZSBvbmVzIHRoYXQgZmFpbGVk
LiBJdCBwcmludHMgbm90aGluZyBpZiBjaGVja3Mgc3VjY2VlZC4KLVRoZSBjaGsgc2NyaXB0IGV4
aXRzIHdpdGggMCBvbiBzdWNjZXNzIGFuZCAxIG9uIGZhaWx1cmUuCi0KLVRoZSBjaGsgc2NyaXB0
IHJ1bnMgZXhlY3V0YWJsZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSB3aG9zZQotbmFtZXMgYmVn
aW4gd2l0aCAnY2hlY2tfJy4gRmlsZXMgY29udGFpbmluZyBDSEVDSy1CVUlMRAotYXJlIHJ1biBm
b3IgdGhlIGJ1aWxkIGNoZWNrLCBhbmQgZmlsZXMgY29udGFpbmluZyBDSEVDSy1JTlNUQUxMCi1h
cmUgcnVuIGZvciB0aGUgaW5zdGFsbCBjaGVjay4KLQotRGV0YWlsZWQgb3V0cHV0IGZyb20gdGhl
IGNoZWNrIHNjcmlwdHMgaXMgaW4gLmNoa2J1aWxkIGZvciBidWlsZAotYW5kIC5jaGtpbnN0YWxs
IGZvciBpbnN0YWxsLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtciBjYTgwZWNh
OWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2NoZWNrL2NoZWNrX2JyY3RsCi0tLSBhL3Rvb2xz
L2NoZWNrL2NoZWNrX2JyY3RsCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMyArMCwwIEBACi0j
IS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVuY3Muc2gKLQotY2FzZSAkT1MgaW4K
LU9wZW5CU0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2ZhaWwgYnJjb25maWcgOzsKLUxpbnV4
KQotCWhhc19vcl9mYWlsIGJyY3RsIDs7Ci0qKQotCWZhaWwgInVua25vd24gT1MiIDs7Ci1lc2Fj
CmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGVja19j
cnlwdG9fbGliCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2NyeXB0b19saWIJTW9uIEZlYiAyMCAx
ODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCkBAIC0xLDExICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1J
TlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1jYXNlICRPUyBpbgotRnJlZUJTRHxOZXRCU0R8T3Bl
bkJTRCkKLQlleGl0IDAgOzsKLWVzYWMKLQotaGFzX2xpYiBsaWJjcnlwdG8uc28gfHwgZmFpbCAi
bWlzc2luZyBsaWJjcnlwdG8uc28iCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhh
ZSB0b29scy9jaGVjay9jaGVja19jdXJsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2N1cmwJTW9u
IEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlM
RCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbICIkTElCWEVOQVBJX0JJTkRJ
TkdTIiAhPSAieSIgXTsgdGhlbgotCWVjaG8gLW4gInVudXNlZCwgIgotCWV4aXQgMAotZmkKLQot
aGFzX29yX2ZhaWwgY3VybC1jb25maWcKLWN1cmxfbGlicz1gY3VybC1jb25maWcgLS1saWJzYCB8
fCBmYWlsICJjdXJsLWNvbmZpZyAtLWxpYnMgZmFpbGVkIgotdGVzdF9saW5rICRjdXJsX2xpYnMg
fHwgZmFpbCAiZGVwZW5kZW5jeSBsaWJyYXJpZXMgZm9yIGN1cmwgYXJlIG1pc3NpbmciCmRpZmYg
LXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGVja19pcHJvdXRl
Ci0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX2lwcm91dGUJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEy
ICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0x
LDE1ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAot
Ci1QQVRIPS9zYmluOiRQQVRICi0KLWNhc2UgJE9TIGluCi1PcGVuQlNEfE5ldEJTRHxGcmVlQlNE
KQotCWhhc19vcl9mYWlsIGlmY29uZmlnIDs7Ci1MaW51eCkKLQloYXNfb3JfZmFpbCBpcCA7Owot
KikKLQlmYWlsICJ1bmtub3duIE9TIiA7OwotZXNhYwpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBj
MmYwODIwZTQ4YWUgdG9vbHMvY2hlY2svY2hlY2tfbGliYWlvX2RldmVsCi0tLSBhL3Rvb2xzL2No
ZWNrL2NoZWNrX2xpYmFpb19kZXZlbAlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysr
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTEgKzAsMCBA
QAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbIFgke0NP
TkZJR19TWVNURU1fTElCQUlPfSAhPSBYInkiIF0gOyB0aGVuCi0gICAgZXhpdCAwCi1maQotaWYg
ISBoYXNfaGVhZGVyIGxpYmFpby5oIDsgdGhlbgotICAgIGZhaWwgImNhbid0IGZpbmQgbGliYWlv
IGhlYWRlcnMsIGluc3RhbGwgbGliYWlvIGRldmVsIHBhY2thZ2Ugb3Igc2V0IENPTkZJR19TWVNU
RU1fTElCQUlPPW4iCi1maQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9v
bHMvY2hlY2svY2hlY2tfbGliYWlvX2xpYgotLS0gYS90b29scy9jaGVjay9jaGVja19saWJhaW9f
bGliCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw5ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVD
Sy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1pZiBbIFgke0NPTkZJR19T
WVNURU1fTElCQUlPfSAhPSBYInkiIF0gOyB0aGVuCi0gICAgZXhpdCAwCi1maQotaGFzX2xpYiBs
aWJhaW8uc28gfHwgZmFpbCAiY2FuJ3QgZmluZCBsaWJhaW8iCmRpZmYgLXIgY2E4MGVjYTljZmEz
IC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGVja19vcGVuc3NsX2RldmVsCi0tLSBhL3Rv
b2xzL2NoZWNrL2NoZWNrX29wZW5zc2xfZGV2ZWwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICsw
MDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDYg
KzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNf
aGVhZGVyIG9wZW5zc2wvbWQ1LmggfHwgZmFpbCAibWlzc2luZyBvcGVuc3NsIGhlYWRlcnMiCmRp
ZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGVja19weXRo
b24KLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAx
MiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSwxMyArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJTEQgQ0hFQ0stSU5TVEFMTAotCi0u
IC4vZnVuY3Muc2gKLQotaWYgdGVzdCAteiAke1BZVEhPTn07IHRoZW4KLSAgUFlUSE9OPXB5dGhv
bgotZmkKLQotJHtQWVRIT059IC1jICcKLWltcG9ydCBzeXMKLXN5cy5leGl0KHN5cy52ZXJzaW9u
X2luZm9bMF0gPCAyIG9yIHN5cy52ZXJzaW9uX2luZm9bMV0gPCAzKQotJyB8fCBmYWlsICJuZWVk
IHB5dGhvbiB2ZXJzaW9uID49IDIuMyIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0
OGFlIHRvb2xzL2NoZWNrL2NoZWNrX3B5dGhvbl9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVj
a19weXRob25fZGV2ZWwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE3ICswLDAgQEAKLSMhL2Jp
bi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaWYgdGVzdCAteiAke1BZVEhP
Tn07IHRoZW4KLSAgUFlUSE9OPXB5dGhvbgotZmkKLWhhc19vcl9mYWlsICR7UFlUSE9OfQotCi0k
e1BZVEhPTn0gLWMgJwotaW1wb3J0IG9zLnBhdGgsIHN5cwotZm9yIHAgaW4gc3lzLnBhdGg6Ci0J
aWYgb3MucGF0aC5leGlzdHMocCArICIvY29uZmlnL01ha2VmaWxlIik6Ci0JCXN5cy5leGl0KDAp
Ci1zeXMuZXhpdCgxKQotJyB8fCBmYWlsICJjYW4ndCBmaW5kIHB5dGhvbiBkZXZlbCBmaWxlcyIK
ZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2NoZWNrL2NoZWNrX3B5
dGhvbl94bWwKLS0tIGEvdG9vbHMvY2hlY2svY2hlY2tfcHl0aG9uX3htbAlNb24gRmViIDIwIDE4
OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsMTIgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUlOU1RBTEwKLQotLiAu
L2Z1bmNzLnNoCi0KLWlmIHRlc3QgLXogJHtQWVRIT059OyB0aGVuCi0gIFBZVEhPTj1weXRob24K
LWZpCi1oYXNfb3JfZmFpbCAke1BZVEhPTn0KLQotJHtQWVRIT059IC1jICdpbXBvcnQgeG1sLmRv
bS5taW5pZG9tJyAyPi9kZXYvbnVsbCB8fCBcCi1mYWlsICJjYW4ndCBpbXBvcnQgeG1sLmRvbS5t
aW5pZG9tIgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvY2hlY2sv
Y2hlY2tfdWRldgotLS0gYS90b29scy9jaGVjay9jaGVja191ZGV2CU1vbiBGZWIgMjAgMTg6MzQ6
MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAw
MApAQCAtMSwyMiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stSU5TVEFMTAotCi0uIC4vZnVu
Y3Muc2gKLQotY2FzZSAkT1MgaW4KLU9wZW5CU0R8TmV0QlNEfEZyZWVCU0QpCi0JaGFzX29yX2Zh
aWwgdm5jb25maWcKLQk7OwotTGludXgpCi0JaGFzIC9zYmluL3VkZXZhZG0gJiYgXAotCQl1ZGV2
dmVyPWAvc2Jpbi91ZGV2YWRtIGluZm8gLVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKLQlbIC16ICIk
dWRldnZlciIgXSAmJiBoYXNfb3JfZmFpbCB1ZGV2aW5mbyAmJiBcCi0JCXVkZXZ2ZXI9YHVkZXZp
bmZvIC1WIHwgYXdrICd7cHJpbnQgJE5GfSdgCi0JWyAiJHVkZXZ2ZXIiIC1nZSA1OSBdIDI+L2Rl
di9udWxsIHx8IFwKLQkJaGFzIGhvdHBsdWcgfHwgXAotCQlmYWlsICJ1ZGV2IGlzIHRvbyBvbGQs
IHVwZ3JhZGUgdG8gdmVyc2lvbiA1OSBvciBsYXRlciIKLQk7OwotKikKLQlmYWlsICJ1bmtub3du
IE9TIgotCTs7Ci1lc2FjCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29s
cy9jaGVjay9jaGVja191dWlkX2RldmVsCi0tLSBhL3Rvb2xzL2NoZWNrL2NoZWNrX3V1aWRfZGV2
ZWwJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDcgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNL
LUJVSUxECi0KLS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIHV1aWQuaCB8fCBcCi1oYXNfaGVh
ZGVyIHV1aWQvdXVpZC5oIHx8IGZhaWwgIm1pc3NpbmcgdXVpZCBoZWFkZXJzIChwYWNrYWdlIHV1
aWQtZGV2KSIKZGlmZiAtciBjYTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2NoZWNr
L2NoZWNrX3gxMV9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja194MTFfZGV2ZWwJTW9uIEZl
YiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDkgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxECi0K
LS4gLi9mdW5jcy5zaAotCi1oYXNfaGVhZGVyIFgxMS9rZXlzeW1kZWYuaCB8fCBcCi1oYXNfaGVh
ZGVyIC91c3IvWDExUjYvaW5jbHVkZS9YMTEva2V5c3ltZGVmLmggfHwgXAotaGFzX2hlYWRlciAv
dXNyL1gxMVI3L2luY2x1ZGUvWDExL2tleXN5bWRlZi5oIHx8IFwKLXdhcm5pbmcgImNhbid0IGZp
bmQgWDExIGhlYWRlcnMiCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29s
cy9jaGVjay9jaGVja194Z2V0dGV4dAotLS0gYS90b29scy9jaGVjay9jaGVja194Z2V0dGV4dAlN
b24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLSMgQ0hFQ0stQlVJ
TEQKLQotLiAuL2Z1bmNzLnNoCi0KLWhhc19vcl9mYWlsIHhnZXR0ZXh0CmRpZmYgLXIgY2E4MGVj
YTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGVja194bWwyCi0tLSBhL3Rvb2xz
L2NoZWNrL2NoZWNrX3htbDIJTW9uIEZlYiAyMCAxODozNDoxNCAyMDEyICswMDAwCisrKyAvZGV2
L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE0ICswLDAgQEAKLSMh
L2Jpbi9zaAotIyBDSEVDSy1CVUlMRCBDSEVDSy1JTlNUQUxMCi0KLS4gLi9mdW5jcy5zaAotCi1p
ZiBbICEgIiRMSUJYRU5BUElfQklORElOR1MiID0gInkiIF0KLXRoZW4KLSAgICBlY2hvIC1uICJ1
bnVzZWQsICIKLSAgICBleGl0IDAKLWZpCi0KLWhhc19vcl9mYWlsIHhtbDItY29uZmlnCi14bWwy
X2xpYnM9YHhtbDItY29uZmlnIC0tbGlic2AgfHwgZmFpbCAieG1sMi1jb25maWcgLS1saWJzIGZh
aWxlZCIKLXRlc3RfbGluayAkeG1sMl9saWJzIHx8IGZhaWwgImRlcGVuZGVuY3kgbGlicmFyaWVz
IGZvciB4bWwyIGFyZSBtaXNzaW5nIgpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4
YWUgdG9vbHMvY2hlY2svY2hlY2tfeWFqbF9kZXZlbAotLS0gYS90b29scy9jaGVjay9jaGVja195
YWpsX2RldmVsCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw4ICswLDAgQEAKLSMhL2Jpbi9zaAot
IyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQotaGFzX2hlYWRlciB5YWpsL3lhamxfcGFy
c2UuaCB8fCBmYWlsICJjYW4ndCBmaW5kIHlhamwveWFqbF9wYXJzZS5oIgotaGFzX2hlYWRlciB5
YWpsL3lhamxfZ2VuLmggfHwgZmFpbCAiY2FuJ3QgZmluZCB5YWpsL3lhamxfZ2VuLmgiCi1oYXNf
bGliIGxpYnlhamwuc28gfHwgZmFpbCAiY2FuJ3QgZmluZCBsaWJ5YWpsLnNvIgpkaWZmIC1yIGNh
ODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvY2hlY2svY2hlY2tfemxpYl9kZXZlbAot
LS0gYS90b29scy9jaGVjay9jaGVja196bGliX2RldmVsCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAx
MiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDSEVDSy1CVUlMRAotCi0uIC4vZnVuY3Muc2gKLQot
aGFzX2hlYWRlciB6bGliLmggfHwgZmFpbCAiY2FuJ3QgZmluZCB6bGliIGhlYWRlcnMiCmRpZmYg
LXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGVja196bGliX2xp
YgotLS0gYS90b29scy9jaGVjay9jaGVja196bGliX2xpYglNb24gRmViIDIwIDE4OjM0OjE0IDIw
MTIgKzAwMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg
LTEsMTIgKzAsMCBAQAotIyEvYmluL3NoCi0jIENIRUNLLUJVSUxEIENIRUNLLUlOU1RBTEwKLQot
LiAuL2Z1bmNzLnNoCi0KLWNhc2UgJE9TIGluCi1GcmVlQlNEfE5ldEJTRHxPcGVuQlNEKQotCWV4
aXQgMAotCTs7Ci1lc2FjCi0KLWhhc19saWIgbGliei5zbyB8fCBmYWlsICJjYW4ndCBmaW5kIHps
aWIiCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jaGVjay9jaGsK
LS0tIGEvdG9vbHMvY2hlY2svY2hrCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw2MyArMCwwIEBA
Ci0jIS9iaW4vc2gKLQotZnVuY191c2FnZSAoKQotewotICAgIGVjaG8gIlVzYWdlOiIKLSAgICBl
Y2hvICIJJDAgW2J1aWxkfGluc3RhbGx8Y2xlYW5dIgotICAgIGVjaG8KLSAgICBlY2hvICJDaGVj
ayBzdWl0YWJpbGl0eSBmb3IgWGVuIGJ1aWxkIG9yIGluc3RhbGwuIgotICAgIGVjaG8gIkV4aXQg
d2l0aCAwIGlmIE9LLCAxIGlmIG5vdC4iCi0gICAgZWNobwotICAgIGVjaG8gIkNhbGxpbmcgd2l0
aCAnY2xlYW4nIHJlbW92ZXMgZ2VuZXJhdGVkIGZpbGVzLiIKLSAgICBleGl0IDEKLX0KLQotUEFU
SD0kUEFUSDovc2JpbjovdXNyL3NiaW4KLU9TPWB1bmFtZSAtc2AKLWV4cG9ydCBQQVRIIE9TCi0K
LWlmIFsgIiRPUyIgPSAiU3VuT1MiIF07IHRoZW4KLQlleGl0IDAKLWZpCi0KLWNhc2UgJDEgaW4K
LSAgICBidWlsZCkKLSAgICAgICAgY2hlY2s9IkNIRUNLLUJVSUxEIgotICAgICAgICA7OwotICAg
IGluc3RhbGwpCi0gICAgICAgIGNoZWNrPSJDSEVDSy1JTlNUQUxMIgotICAgICAgICA7OwotICAg
IGNsZWFuKQotICAgICAgICBleGl0IDAKLSAgICAgICAgOzsKLSAgICAqKQotICAgICAgICBmdW5j
X3VzYWdlCi0gICAgICAgIDs7Ci1lc2FjCi0KLWZhaWxlZD0wCi0KLWVjaG8gIlhlbiAke2NoZWNr
fSAiIGBkYXRlYAotZm9yIGYgaW4gY2hlY2tfKiA7IGRvCi0gICAgY2FzZSAkZiBpbgotICAgICAg
ICAqfikKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICA7OwotICAgICAgICAqKQot
ICAgICAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgaWYgISBbIC14ICRmIF0gOyB0aGVuCi0gICAg
ICAgIGNvbnRpbnVlCi0gICAgZmkKLSAgICBpZiAhIGdyZXAgLUZxICIkY2hlY2siICRmIDsgdGhl
bgotICAgICAgICBjb250aW51ZQotICAgIGZpCi0gICAgZWNobyAtbiAiQ2hlY2tpbmcgJGY6ICIK
LSAgICBpZiAuLyRmIDI+JjEgOyB0aGVuCi0gICAgICAgIGVjaG8gT0sKLSAgICBlbHNlCi0gICAg
ICAgIGZhaWxlZD0xCi0gICAgZmkKLWRvbmUKLQotZXhpdCAke2ZhaWxlZH0KZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2NoZWNrL2Z1bmNzLnNoCi0tLSBhL3Rvb2xz
L2NoZWNrL2Z1bmNzLnNoCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMDYgKzAsMCBAQAotIyBo
YXMgaXMgdGhlIHNhbWUgYXMgd2hpY2gsIGV4Y2VwdCBpdCBoYW5kbGVzIGNyb3NzIGVudmlyb25t
ZW50cwotaGFzKCkgewotCWlmIFsgLXogIiRDUk9TU19DT01QSUxFIiBdOyB0aGVuCi0JCWNvbW1h
bmQgd2hpY2ggIiRAIgotCQlyZXR1cm4gJD8KLQlmaQotCi0JY2hlY2tfc3lzX3Jvb3QgfHwgcmV0
dXJuIDEKLQotCSMgc3Vic2hlbGwgdG8gcHJldmVudCBwb2xsdXRpb24gb2YgY2FsbGVyJ3MgSUZT
Ci0JKAotCUlGUz06Ci0JZm9yIHAgaW4gJFBBVEg7IGRvCi0JCWlmIFsgLXggIiRDUk9TU19TWVNf
Uk9PVC8kcC8kMSIgXTsgdGhlbgotCQkJZWNobyAiJENST1NTX1NZU19ST09ULyRwLyQxIgotCQkJ
cmV0dXJuIDAKLQkJZmkKLQlkb25lCi0JcmV0dXJuIDEKLQkpCi19Ci0KLWhhc19vcl9mYWlsKCkg
ewotCWhhcyAiJDEiID4vZGV2L251bGwgfHwgZmFpbCAiY2FuJ3QgZmluZCAkMSIKLX0KLQotaGFz
X2hlYWRlcigpIHsKLQljaGVja19zeXNfcm9vdCB8fCByZXR1cm4gMQotCi0JY2FzZSAkMSBpbgot
CQkvKikgOzsKLQkJKikKLQkJaWYgWyAtciAiJENST1NTX1NZU19ST09UL3Vzci9pbmNsdWRlLyQx
IiBdOyB0aGVuCi0JCQlyZXR1cm4gMAotCQlmaQotCQlmb3IgcGF0aCBpbiAke0NIRUNLX0lOQ0xV
REVTfTsgZG8KLQkJCWlmIFsgLXIgIiRDUk9TU19TWVNfUk9PVCR7cGF0aH0vJDEiIF07IHRoZW4K
LQkJCQlyZXR1cm4gMAotCQkJZmkKLQkJZG9uZQotCQk7OwotCWVzYWMKLQotCXJldHVybiAxCi19
Ci0KLWhhc19saWIoKSB7Ci0JY2hlY2tfc3lzX3Jvb3QgfHwgcmV0dXJuIDEKLQotCSMgc3Vic2hl
bGwgdG8gcHJldmVudCBwb2xsdXRpb24gb2YgY2FsbGVyJ3MgZW52aXJvbm1lbnQKLQkoCi0JUEFU
SD0vc2JpbjokUEFUSCAgICAgICAgIyBmb3IgbGRjb25maWcKLQlMSUJSQVJJRVM9IiRDSEVDS19M
SUIgL3Vzci9saWIiCi0KLQkjIFRoaXMgcmVsYXRpdmVseSBjb21tb24gaW4gYSBzeXMtcm9vdDsg
bGlicyBhcmUgaW5zdGFsbGVkIGJ1dAotCSMgbGRjb25maWcgaGFzbid0IHJ1biB0aGVyZSwgc28g
bGRjb25maWcgLXAgd29uJ3Qgd29yay4KLQlpZiBbICIkT1MiID0gTGludXggLWEgISAtZiAiJENS
T1NTX1NZU19ST09UL2V0Yy9sZC5zby5jYWNoZSIgXTsgdGhlbgotCSAgICBlY2hvICJQbGVhc2Ug
cnVuIGxkY29uZmlnIC1yIFwiJENST1NTX1NZU19ST09UXCIgdG8gZ2VuZXJhdGUgbGQuc28uY2Fj
aGUiCi0JICAgICMgZmFsbCB0aHJvdWdoOyBsZGNvbmZpZyB0ZXN0IGJlbG93IHNob3VsZCBmYWls
Ci0JZmkKLQlpZiBbICIke09TfSIgPSAiTGludXgiIF07IHRoZW4KLQkJbGRjb25maWcgLXAgJHtD
Uk9TU19TWVNfUk9PVCstciAiJENST1NTX1NZU19ST09UIn0gfCBncmVwIC1GcSAiJDEiCi0JCXJl
dHVybiAkPwotCWZpCi0JaWYgWyAiJHtPU30iID0gIk5ldEJTRCIgXTsgdGhlbgotCQlscyAtMSAk
e0xJQlJBUklFU30gfCBncmVwIC1GcSAiJDEiCi0JCXJldHVybiAkPwotCWZpCi0JcmV0dXJuIDEK
LQkpCi19Ci0KLXRlc3RfbGluaygpIHsKLQkjIHN1YnNoZWxsIHRvIHRyYXAgcmVtb3ZhbCBvZiB0
bXBmaWxlCi0JKAotCXVuc2V0IHRtcGZpbGUKLQl0cmFwICdybSAtZiAiJHRtcGZpbGUiOyBleGl0
JyAwIDEgMiAxNQotCXRtcGZpbGU9YG1rdGVtcGAgfHwgcmV0dXJuIDEKLQlsZCAiJEAiIC1vICIk
dG1wZmlsZSIgPi9kZXYvbnVsbCAyPiYxCi0JcmV0dXJuICQ/Ci0JKQotfQotCi0jIHRoaXMgZnVu
Y3Rpb24gaXMgdXNlZCBjb21tb25seSBhYm92ZQotY2hlY2tfc3lzX3Jvb3QoKSB7Ci0JWyAteiAi
JENST1NTX0NPTVBJTEUiIF0gJiYgcmV0dXJuIDAKLQlpZiBbIC16ICIkQ1JPU1NfU1lTX1JPT1Qi
IF07IHRoZW4KLQkJZWNobyAicGxlYXNlIHNldCBDUk9TU19TWVNfUk9PVCBpbiB0aGUgZW52aXJv
bm1lbnQiCi0JCXJldHVybiAxCi0JZmkKLQlpZiBbICEgLWQgIiRDUk9TU19TWVNfUk9PVCIgXTsg
dGhlbgotCQllY2hvICJubyBzeXMtcm9vdCBmb3VuZCBhdCAkQ1JPU1NfU1lTX1JPT1QiCi0JCXJl
dHVybiAxCi0JZmkKLX0KLQotd2FybmluZygpIHsKLQllY2hvCi0JZWNobyAiICoqKiBgYmFzZW5h
bWUgIiQwImAgRkFJTEVEJHsqKzogJCp9IgotfQotCi1mYWlsKCkgewotCWVjaG8KLQllY2hvICIg
KioqIGBiYXNlbmFtZSAiJDAiYCBGQUlMRUQkeyorOiAkKn0iCi0JZXhpdCAxCi19CmRpZmYgLXIg
Y2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9jb25maWcuaC5pbgotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9jb25maWcuaC5p
bglUdWUgRmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo
ZWQKKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMi4xIG9ubHku
IHdpdGggdGhlIHNwZWNpYWwKKyAqIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBm
aWxlIExJQ0VOU0UuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx5YWpsL3lhamxfdmVyc2lvbi5oPiBoZWFkZXIg
ZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1lBSkxfWUFKTF9WRVJTSU9OX0gKZGlmZiAtciBjYTgwZWNh
OWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2NvbmZpZ3VyZS5hYwotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9jb25maWd1cmUuYWMJVHVl
IEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTkyIEBACisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisj
IFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBz
Y3JpcHQuCisKK0FDX1BSRVJFUShbMi42N10pCitBQ19JTklUKFtYZW4gSHlwZXJ2aXNvcl0sIG00
X2VzeXNjbWQoWy4uL3ZlcnNpb24uc2ggLi4veGVuL01ha2VmaWxlXSksCisgICAgW3hlbi1kZXZl
bEBsaXN0cy54ZW5zb3VyY2UuY29tXSkKK0FDX0NPTkZJR19TUkNESVIoW2xpYnhsL2xpYnhsLmNd
KQorQUNfQ09ORklHX0ZJTEVTKFsuLi9jb25maWcvVG9vbHMubWtdKQorQUNfQ09ORklHX0hFQURF
UlMoW2NvbmZpZy5oXSkKK0FDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkKK0FDX0NPTkZJR19BVVhf
RElSKFsuXSkKKworIyBDaGVjayBpZiBDRkxBR1MsIExERkxBR1MsIExJQlMsIENQUEZMQUdTIG9y
IENQUCBpcyBzZXQgYW5kIHByaW50IGEgd2FybmluZworCitBU19JRihbdGVzdCAtbiAiJENDJENG
TEFHUyRMREZMQUdTJExJQlMkQ1BQRkxBR1MkQ1BQIl0sIFsKKyAgICBBQ19NU0dfV0FSTigKK1tT
ZXR0aW5nIENDLCBDRkxBR1MsIExERkxBR1MsIExJQlMsIENQUEZMQUdTIG9yIENQUCBpcyBub3Qg
XAorcmVjb21tZW5kZWQsIHVzZSBQUkVQRU5EX0lOQ0xVREVTLCBQUkVQRU5EX0xJQiwgXAorQVBQ
RU5EX0lOQ0xVREVTIGFuZCBBUFBFTkRfTElCIGluc3RlYWQgd2hlbiBwb3NzaWJsZS5dKQorXSkK
KworQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCitBQ19DQU5PTklDQUxfSE9TVAorCisjIE00IE1h
Y3JvIGluY2x1ZGVzCittNF9pbmNsdWRlKFttNC9lbmFibGVfZmVhdHVyZS5tNF0pCittNF9pbmNs
dWRlKFttNC9kaXNhYmxlX2ZlYXR1cmUubTRdKQorbTRfaW5jbHVkZShbbTQvcGF0aF9vcl9mYWls
Lm00XSkKK200X2luY2x1ZGUoW200L3B5dGhvbl94bWwubTRdKQorbTRfaW5jbHVkZShbbTQvcHl0
aG9uX3ZlcnNpb24ubTRdKQorbTRfaW5jbHVkZShbbTQvcHl0aG9uX2RldmVsLm00XSkKK200X2lu
Y2x1ZGUoW200L3VkZXYubTRdKQorbTRfaW5jbHVkZShbbTQvb2NhbWwubTRdKQorbTRfaW5jbHVk
ZShbbTQvZGVmYXVsdF9saWIubTRdKQorbTRfaW5jbHVkZShbbTQvc2V0X2NmbGFnc19sZGZsYWdz
Lm00XSkKK200X2luY2x1ZGUoW200L3V1aWQubTRdKQorbTRfaW5jbHVkZShbbTQvcGtnLm00XSkK
KworIyBFbmFibGUvZGlzYWJsZSBvcHRpb25zCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQoW3hz
bV0sCisgICAgW0VuYWJsZSBYU00gc2VjdXJpdHkgbW9kdWxlIChieSBkZWZhdWx0LCBGbGFzayld
KQorQVhfQVJHX0VOQUJMRV9BTkRfRVhQT1JUKFtnaXRodHRwXSwgW0Rvd25sb2FkIEdJVCByZXBv
c2l0b3JpZXMgdmlhIEhUVFBdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChbbW9uaXRvcnNd
LAorICAgIFtEaXNhYmxlIHhlbnN0YXQgYW5kIHhlbnRvcCBtb25pdG9yaW5nIHRvb2xzXSkKK0FY
X0FSR19FTkFCTEVfQU5EX0VYUE9SVChbdnRwbV0sIFtFbmFibGUgVmlydHVhbCBUcnVzdGVkIFBs
YXRmb3JtIE1vZHVsZV0pCitBWF9BUkdfRU5BQkxFX0FORF9FWFBPUlQoW3hhcGldLCBbRW5hYmxl
IFhlbiBBUEkgQmluZGluZ3NdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChbcHl0aG9udG9v
bHNdLCBbRGlzYWJsZSBQeXRob24gdG9vbHNdKQorQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVChb
b2NhbWx0b29sc10sIFtEaXNhYmxlIE9jYW1sIHRvb2xzXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VY
UE9SVChbbWluaXRlcm1dLCBbRW5hYmxlIG1pbml0ZXJtXSkKK0FYX0FSR19FTkFCTEVfQU5EX0VY
UE9SVChbbG9tb3VudF0sIFtFbmFibGUgbG9tb3VudF0pCitBWF9BUkdfRElTQUJMRV9BTkRfRVhQ
T1JUKFtkZWJ1Z10sIFtEaXNhYmxlIGRlYnVnIGJ1aWxkIG9mIFhlbiBhbmQgdG9vbHNdKQorCitB
Q19BUkdfVkFSKFtQUkVQRU5EX0lOQ0xVREVTXSwKKyAgICBbTGlzdCBvZiBpbmNsdWRlIGZvbGRl
cnMgdG8gcHJlcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpXSkKK0FDX0FSR19WQVIoW1BSRVBF
TkRfTElCXSwKKyAgICBbTGlzdCBvZiBsaWJyYXJ5IGZvbGRlcnMgdG8gcHJlcGVuZCB0byBMREZM
QUdTICh3aXRob3V0IC1MKV0pCitBQ19BUkdfVkFSKFtBUFBFTkRfSU5DTFVERVNdLAorICAgIFtM
aXN0IG9mIGluY2x1ZGUgZm9sZGVycyB0byBhcHBlbmQgdG8gQ0ZMQUdTICh3aXRob3V0IC1JKV0p
CitBQ19BUkdfVkFSKFtBUFBFTkRfTElCXSwKKyAgICBbTGlzdCBvZiBsaWJyYXJ5IGZvbGRlcnMg
dG8gYXBwZW5kIHRvIExERkxBR1MgKHdpdGhvdXQgLUwpXSkKKworQVhfU0VUX0ZMQUdTCisKK0FD
X0FSR19WQVIoW1BZVEhPTl0sIFtQYXRoIHRvIHRoZSBQeXRob24gcGFyc2VyXSkKK0FDX0FSR19W
QVIoW1BFUkxdLCBbUGF0aCB0byBQZXJsIHBhcnNlcl0pCitBQ19BUkdfVkFSKFtCUkNUTF0sIFtQ
YXRoIHRvIGJyY3RsIHRvb2xdKQorQUNfQVJHX1ZBUihbSVBdLCBbUGF0aCB0byBpcCB0b29sXSkK
K0FDX0FSR19WQVIoW0JJU09OXSwgW1BhdGggdG8gQmlzb24gcGFyc2VyIGdlbmVyYXRvcl0pCitB
Q19BUkdfVkFSKFtGTEVYXSwgW1BhdGggdG8gRmxleCBsZXhpY2FsIGFuYWx5c2VyIGdlbmVyYXRv
cl0pCitBQ19BUkdfVkFSKFtDVVJMXSwgW1BhdGggdG8gY3VybC1jb25maWcgdG9vbF0pCitBQ19B
UkdfVkFSKFtYTUxdLCBbUGF0aCB0byB4bWwyLWNvbmZpZyB0b29sXSkKK0FDX0FSR19WQVIoW0JB
U0hdLCBbUGF0aCB0byBiYXNoIHNoZWxsXSkKK0FDX0FSR19WQVIoW1hHRVRURVhUXSwgW1BhdGgg
dG8geGdldHR0ZXh0IHRvb2xdKQorCisjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCitBQ19QUk9HX1NF
RAorQUNfUFJPR19DQworQUNfUFJPR19MTl9TCitBQ19QUk9HX01BS0VfU0VUCitBQ19QUk9HX0lO
U1RBTEwKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtQRVJMXSwgW3BlcmxdKQorQVhfUEFUSF9QUk9H
X09SX0ZBSUwoW0JSQ1RMXSwgW2JyY3RsXSkKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtJUF0sIFtp
cF0pCitBWF9QQVRIX1BST0dfT1JfRkFJTChbQklTT05dLCBbYmlzb25dKQorQVhfUEFUSF9QUk9H
X09SX0ZBSUwoW0ZMRVhdLCBbZmxleF0pCitBU19JRihbdGVzdCAieCR4YXBpIiA9ICJ4eSJdLCBb
CisgICAgQVhfUEFUSF9QUk9HX09SX0ZBSUwoW0NVUkxdLCBbY3VybC1jb25maWddKQorICAgIEFY
X1BBVEhfUFJPR19PUl9GQUlMKFtYTUxdLCBbeG1sMi1jb25maWddKQorXSkKK0FTX0lGKFt0ZXN0
ICJ4JG9jYW1sdG9vbHMiID0gInh5Il0sIFsKKyAgICBBQ19QUk9HX09DQU1MCisgICAgQVNfSUYo
W3Rlc3QgIngkT0NBTUxDIiA9ICJ4bm8iXSwgWworICAgICAgICBBU19JRihbdGVzdCAieCRlbmFi
bGVfb2NhbWx0b29scyIgPSAieHllcyJdLCBbCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoW09j
YW1sIHRvb2xzIGVuYWJsZWQsIGJ1dCB1bmFibGUgdG8gZmluZCBPY2FtbF0pXSkKKyAgICAgICAg
b2NhbWx0b29scz0ibiIKKyAgICBdKQorXSkKK0FYX1BBVEhfUFJPR19PUl9GQUlMKFtCQVNIXSwg
W2Jhc2hdKQorQVNfSUYoW3Rlc3QgIngkcHl0aG9udG9vbHMiID0gInh5Il0sIFsKKyAgICBBU19J
RihbZWNobyAiJFBZVEhPTiIgfCBncmVwIC1xICJeLyJdLCBbCisgICAgICAgIFBZVEhPTlBBVEg9
JFBZVEhPTgorICAgICAgICBQWVRIT049YGJhc2VuYW1lICRQWVRIT05QQVRIYAorICAgIF0sW3Rl
c3QgLXogIiRQWVRIT04iXSwgW1BZVEhPTj0icHl0aG9uIl0sCisgICAgW0FDX01TR19FUlJPUihb
UFlUSE9OIHNwZWNpZmllZCwgYnV0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoXSldKQorICAgIEFY
X1BBVEhfUFJPR19PUl9GQUlMKFtQWVRIT05QQVRIXSwgWyRQWVRIT05dKQorICAgIEFYX0NIRUNL
X1BZVEhPTl9WRVJTSU9OKFsyXSwgWzNdKQorICAgIEFYX0NIRUNLX1BZVEhPTl9YTUwoKQorICAg
IEFYX0NIRUNLX1BZVEhPTl9ERVZFTCgpCitdKQorQVhfUEFUSF9QUk9HX09SX0ZBSUwoW1hHRVRU
RVhUXSwgW3hnZXR0ZXh0XSkKK0FYX0NIRUNLX1VERVYoWzU5XSkKK0FYX0NIRUNLX1VVSUQKK1BL
R19DSEVDS19NT0RVTEVTKGdsaWIsIGdsaWItMi4wKQorCisjIENoZWNrIGxpYnJhcnkgcGF0aAor
QVhfREVGQVVMVF9MSUIKKworIyBDaGVja3MgZm9yIGxpYnJhcmllcy4KK0FDX0NIRUNLX0xJQihb
YWlvXSwgW2lvX3NldHVwXSwgW3N5c3RlbV9haW89InkiXSwgW3N5c3RlbV9haW89Im4iXSkKK0FD
X1NVQlNUKHN5c3RlbV9haW8pCitBQ19DSEVDS19MSUIoW2NyeXB0b10sIFtNRDVdLCBbXSwgW0FD
X01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbGliY3J5cHRvXSldKQorQUNfQ0hFQ0tfTElCKFtl
eHQyZnNdLCBbZXh0MmZzX29wZW4yXSwgW2xpYmV4dDJmcz0ieSJdLCBbbGliZXh0MmZzPSJuIl0p
CitBQ19TVUJTVChsaWJleHQyZnMpCitBQ19DSEVDS19MSUIoW2djcnlwdF0sIFtnY3J5X21kX2hh
c2hfYnVmZmVyXSwgW2xpYmdjcnlwdD0ieSJdLCBbbGliZ2NyeXB0PSJuIl0pCitBQ19TVUJTVChs
aWJnY3J5cHQpCitBQ19DSEVDS19MSUIoW3B0aHJlYWRdLCBbcHRocmVhZF9jcmVhdGVdLCBbXSAs
CisgICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbGlicHRocmVhZF0pXSkKK0FDX0NI
RUNLX0xJQihbcnRdLCBbY2xvY2tfZ2V0dGltZV0pCitBQ19DSEVDS19MSUIoW3V1aWRdLCBbdXVp
ZF9jbGVhcl0sIFtdLAorICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnV1aWRd
KV0pCitBQ19DSEVDS19MSUIoW3lhamxdLCBbeWFqbF9hbGxvY10sIFtdLAorICAgIFtBQ19NU0df
RVJST1IoW0NvdWxkIG5vdCBmaW5kIHlhamxdKV0pCitBQ19DSEVDS19MSUIoW3pdLCBbZGVmbGF0
ZUNvcHldLCBbXSwgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgemxpYl0pXSkKK0FDX0NI
RUNLX0xJQihbaWNvbnZdLCBbbGliaWNvbnZfb3Blbl0sIFtsaWJpY29udj0ieSJdLCBbbGliaWNv
bnY9Im4iXSkKK0FDX1NVQlNUKGxpYmljb252KQorCisjIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVz
LgorQUNfRlVOQ19BTExPQ0EKK0FDX0NIRUNLX0hFQURFUlMoWyBcCisgICAgICAgICAgICAgICAg
YXJwYS9pbmV0LmggZmNudGwuaCBpbnR0eXBlcy5oIGxpYmludGwuaCBsaW1pdHMuaCBtYWxsb2Mu
aCBcCisgICAgICAgICAgICAgICAgbmV0ZGIuaCBuZXRpbmV0L2luLmggc3RkZGVmLmggc3RkaW50
Lmggc3RkbGliLmggc3RyaW5nLmggXAorICAgICAgICAgICAgICAgIHN0cmluZ3MuaCBzeXMvZmls
ZS5oIHN5cy9pb2N0bC5oIHN5cy9tb3VudC5oIHN5cy9wYXJhbS5oIFwKKyAgICAgICAgICAgICAg
ICBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvdGltZS5oIHN5c2xvZy5oIHRlcm1pb3Mu
aCBcCisgICAgICAgICAgICAgICAgdW5pc3RkLmggeWFqbC95YWpsX3ZlcnNpb24uaCBcCisgICAg
ICAgICAgICAgICAgXSkKKworIyBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQg
Y29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgorQUNfSEVBREVSX1NUREJPT0wKK0FDX1RZUEVfVUlE
X1QKK0FDX0NfSU5MSU5FCitBQ19UWVBFX0lOVDE2X1QKK0FDX1RZUEVfSU5UMzJfVAorQUNfVFlQ
RV9JTlQ2NF9UCitBQ19UWVBFX0lOVDhfVAorQUNfVFlQRV9NT0RFX1QKK0FDX1RZUEVfT0ZGX1QK
K0FDX1RZUEVfUElEX1QKK0FDX0NfUkVTVFJJQ1QKK0FDX1RZUEVfU0laRV9UCitBQ19UWVBFX1NT
SVpFX1QKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsa3NpemVdKQorQUNfU1RS
VUNUX1NUX0JMT0NLUworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfcmRldl0pCitB
Q19UWVBFX1VJTlQxNl9UCitBQ19UWVBFX1VJTlQzMl9UCitBQ19UWVBFX1VJTlQ2NF9UCitBQ19U
WVBFX1VJTlQ4X1QKK0FDX0NIRUNLX1RZUEVTKFtwdHJkaWZmX3RdKQorCisjIENoZWNrcyBmb3Ig
bGlicmFyeSBmdW5jdGlvbnMuCitBQ19GVU5DX0VSUk9SX0FUX0xJTkUKK0FDX0ZVTkNfRk9SSwor
QUNfRlVOQ19GU0VFS08KK0FDX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTksKK0FD
X0hFQURFUl9NQUpPUgorQUNfRlVOQ19NQUxMT0MKK0FDX0ZVTkNfTUtUSU1FCitBQ19GVU5DX01N
QVAKK0FDX0ZVTkNfUkVBTExPQworQUNfRlVOQ19TVFJOTEVOCitBQ19GVU5DX1NUUlRPRAorQUNf
Q0hFQ0tfRlVOQ1MoWyBcCisgICAgICAgICAgICAgICAgYWxhcm0gYXRleGl0IGJ6ZXJvIGNsb2Nr
X2dldHRpbWUgZHVwMiBmZGF0YXN5bmMgZnRydW5jYXRlIFwKKyAgICAgICAgICAgICAgICBnZXRj
d2QgZ2V0aG9zdGJ5bmFtZSBnZXRob3N0bmFtZSBnZXRwYWdlc2l6ZSBnZXR0aW1lb2ZkYXkgXAor
ICAgICAgICAgICAgICAgIGluZXRfbnRvYSBpc2FzY2lpIGxvY2FsdGltZV9yIG1lbWNociBtZW1t
b3ZlIG1lbXNldCBta2RpciBcCisgICAgICAgICAgICAgICAgbWtmaWZvIG11bm1hcCBwYXRoY29u
ZiByZWFscGF0aCByZWdjb21wIHJtZGlyIHNlbGVjdCBzZXRlbnYgXAorICAgICAgICAgICAgICAg
IHNvY2tldCBzdHJjYXNlY21wIHN0cmNociBzdHJjc3BuIHN0cmR1cCBzdHJlcnJvciBzdHJuZHVw
IFwKKyAgICAgICAgICAgICAgICBzdHJwYnJrIHN0cnJjaHIgc3Ryc3BuIHN0cnN0ciBzdHJ0b2wg
c3RydG91bCBzdHJ0b3VsbCB0enNldCBcCisgICAgICAgICAgICAgICAgdW5hbWUgXAorICAgICAg
ICAgICAgICAgIF0pCisKK0FDX09VVFBVVCgpCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4
MjBlNDhhZSB0b29scy9kZWJ1Z2dlci9nZGJzeC94Zy9NYWtlZmlsZQotLS0gYS90b29scy9kZWJ1
Z2dlci9nZGJzeC94Zy9NYWtlZmlsZQlNb24gRmViIDIwIDE4OjM0OjE0IDIwMTIgKzAwMDAKKysr
IGIvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcvTWFrZWZpbGUJVHVlIEZlYiAyMSAwNDoxODoyOSAy
MDEyICswMTAwCkBAIC0yMSw3ICsyMSw2IEBAIHhnX2FsbC5hOiAkKFhHX09CSlMpIE1ha2VmaWxl
ICQoWEdfSERSUykKICMJJChDQykgLW0zMiAtYyAtbyAkQCAkXgogCiB4ZW4taGVhZGVyczoKLQkk
KE1BS0UpIC1DIC4uLy4uLy4uL2NoZWNrIAogCSQoTUFLRSkgLUMgLi4vLi4vLi4vaW5jbHVkZQog
CiAjIHhnX21haW4ubzogeGdfbWFpbi5jIE1ha2VmaWxlICQoWEdfSERSUykKZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2luc3RhbGwuc2gKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvaW5zdGFsbC5zaAlUdWUg
RmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxIEBACisuLi9pbnN0YWxsLnNo
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYw
ODIwZTQ4YWUgdG9vbHMvbGliZnNpbWFnZS9NYWtlZmlsZQotLS0gYS90b29scy9saWJmc2ltYWdl
L01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9saWJm
c2ltYWdlL01ha2VmaWxlCVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMyw3ICsz
LDExIEBAIGluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIAogU1VCRElSUy15ID0g
Y29tbW9uIHVmcyByZWlzZXJmcyBpc285NjYwIGZhdCB6ZnMKIFNVQkRJUlMtJChDT05GSUdfWDg2
KSArPSB4ZnMKLVNVQkRJUlMteSArPSAkKHNoZWxsIGVudiBDQz0iJChDQykiIC4vY2hlY2stbGli
ZXh0MmZzKQoraWZlcSAoJChDT05GSUdfRVhUMkZTKSwgeSkKKyAgICBTVUJESVJTLXkgKz0gZXh0
MmZzLWxpYgorZWxzZQorICAgIFNVQkRJUlMteSArPSBleHQyZnMKK2VuZGlmCiAKIC5QSE9OWTog
YWxsIGNsZWFuIGluc3RhbGwKIGFsbCBjbGVhbiBpbnN0YWxsOiAlOiBzdWJkaXJzLSUKZGlmZiAt
ciBjYTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2xpYmZzaW1hZ2UvY2hlY2stbGli
ZXh0MmZzCi0tLSBhL3Rvb2xzL2xpYmZzaW1hZ2UvY2hlY2stbGliZXh0MmZzCU1vbiBGZWIgMjAg
MTg6MzQ6MTQgMjAxMiArMDAwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMApAQCAtMSwyMSArMCwwIEBACi0jIS9iaW4vc2gKLQotY2F0ID5leHQyLXRlc3QuYyA8
PEVPRgotI2luY2x1ZGUgPGV4dDJmcy9leHQyZnMuaD4KLQotaW50IG1haW4oKQotewotCWV4dDJm
c19vcGVuMjsKLX0KLUVPRgotCi0ke0NDLWdjY30gLW8gZXh0Mi10ZXN0IGV4dDItdGVzdC5jIC1s
ZXh0MmZzID4vZGV2L251bGwgMj4mMQotaWYgWyAkPyA9IDAgXTsgdGhlbgotCWVjaG8gZXh0MmZz
LWxpYgotZWxzZQotCWVjaG8gZXh0MmZzCi1maQotCi1ybSAtZiBleHQyLXRlc3QgZXh0Mi10ZXN0
LmMKLQotZXhpdCAwCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9s
aWJ4ZW4vTWFrZWZpbGUKLS0tIGEvdG9vbHMvbGlieGVuL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6
MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9saWJ4ZW4vTWFrZWZpbGUJVHVlIEZlYiAyMSAw
NDoxODoyOSAyMDEyICswMTAwCkBAIC0yMiwxMiArMjIsMTIgQEAgTUFKT1IgPSAxLjAKIE1JTk9S
ID0gMAogCiBDRkxBR1MgKz0gLUlpbmNsdWRlICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICAgICQoc2hlbGwgeG1sMi1jb25maWcgLS1jZmxhZ3MpIFwKLSAgICAgICAgICAkKHNoZWxsIGN1
cmwtY29uZmlnIC0tY2ZsYWdzKSBcCisgICAgICAgICAgJChzaGVsbCAkKFhNTDJfQ09ORklHKSAt
LWNmbGFncykgXAorICAgICAgICAgICQoc2hlbGwgJChDVVJMX0NPTkZJRykgLS1jZmxhZ3MpIFwK
ICAgICAgICAgICAtZlBJQwogCi1MREZMQUdTICs9ICQoc2hlbGwgeG1sMi1jb25maWcgLS1saWJz
KSBcCi0gICAgICAgICAgICQoc2hlbGwgY3VybC1jb25maWcgLS1saWJzKQorTERGTEFHUyArPSAk
KHNoZWxsICQoWE1MMl9DT05GSUcpIC0tbGlicykgXAorICAgICAgICAgICAkKHNoZWxsICQoQ1VS
TF9DT05GSUcpIC0tbGlicykKIAogTElCWEVOQVBJX0hEUlMgPSAkKHdpbGRjYXJkIGluY2x1ZGUv
eGVuL2FwaS8qLmgpIGluY2x1ZGUveGVuL2FwaS94ZW5fYWxsLmgKIExJQlhFTkFQSV9PQkpTID0g
JChwYXRzdWJzdCAlLmMsICUubywgJCh3aWxkY2FyZCBzcmMvKi5jKSkKZGlmZiAtciBjYTgwZWNh
OWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL2xpYnhsL01ha2VmaWxlCi0tLSBhL3Rvb2xzL2xp
YnhsL01ha2VmaWxlCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9s
aWJ4bC9NYWtlZmlsZQlUdWUgRmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTE5LDEwICsx
OSw2IEBAIGlmZXEgKCQoQ09ORklHX0xpbnV4KSx5KQogTElCVVVJRF9MSUJTICs9IC1sdXVpZAog
ZW5kaWYKIAotaWZlcSAoJChDT05GSUdfWUFKTF9WRVJTSU9OKSx5KQotQ0ZMQUdTICs9IC1ESEFW
RV9ZQUpMX1ZFUlNJT04KLWVuZGlmCi0KIExJQlhMX0xJQlMgPQogTElCWExfTElCUyA9ICQoTERM
SUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0KSAkKExETElCU19saWJ4ZW5zdG9y
ZSkgJChMRExJQlNfbGliYmxrdGFwY3RsKSAkKFVUSUxfTElCUykgJChMSUJVVUlEX0xJQlMpCiAK
QEAgLTU2LDcgKzUyLDcgQEAgTElCWExfT0JKUyA9IGZsZXhhcnJheS5vIGxpYnhsLm8gbGlieGxf
YwogCQkJbGlieGxfcW1wLm8gbGlieGxfZXZlbnQubyAkKExJQlhMX09CSlMteSkKIExJQlhMX09C
SlMgKz0gX2xpYnhsX3R5cGVzLm8gbGlieGxfZmxhc2subyBfbGlieGxfdHlwZXNfaW50ZXJuYWwu
bwogCi0kKExJQlhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxB
R1NfbGlieGVuZ3Vlc3QpICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKSAkKENGTEFHU19saWJibGt0YXBj
dGwpCiskKExJQlhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxB
R1NfbGlieGVuZ3Vlc3QpICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKSAkKENGTEFHU19saWJibGt0YXBj
dGwpIC1pbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL2NvbmZpZy5oCiAKIEFVVE9JTkNTPSBsaWJ4
bHVfY2ZnX3kuaCBsaWJ4bHVfY2ZnX2wuaCBfbGlieGxfbGlzdC5oCiBBVVRPU1JDUz0gbGlieGx1
X2NmZ195LmMgbGlieGx1X2NmZ19sLmMKQEAgLTY5LDYgKzY1LDcgQEAgQ0xJRU5UUyA9IHhsIHRl
c3RpZGwKIFhMX09CSlMgPSB4bC5vIHhsX2NtZGltcGwubyB4bF9jbWR0YWJsZS5vIHhsX3N4cC5v
CiAkKFhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgIyBGb3IgeGVudG9v
bGxvZy5oCiAkKFhMX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVubGlnaHQpCiskKFhM
X09CSlMpOiBDRkxBR1MgKz0gLWluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvY29uZmlnLmggIyBs
aWJ4bF9qc29uLmggbmVlZHMgaXQuCiAKIHRlc3RpZGwubzogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xp
YnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmxpZ2h0KQogdGVzdGlkbC5jOiBsaWJ4bF90eXBlcy5p
ZGwgZ2VudGVzdC5weSBsaWJ4bC5oICQoQVVUT0lOQ1MpCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1y
IGMyZjA4MjBlNDhhZSB0b29scy9saWJ4bC9saWJ4bF9qc29uLmgKLS0tIGEvdG9vbHMvbGlieGwv
bGlieGxfanNvbi5oCU1vbiBGZWIgMjAgMTg6MzQ6MTQgMjAxMiArMDAwMAorKysgYi90b29scy9s
aWJ4bC9saWJ4bF9qc29uLmgJVHVlIEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBAIC0xOCw3
ICsxOCw3IEBACiAjaW5jbHVkZSA8eWFqbC95YWpsX2dlbi5oPgogI2luY2x1ZGUgPHlhamwveWFq
bF9wYXJzZS5oPgogCi0jaWZkZWYgSEFWRV9ZQUpMX1ZFUlNJT04KKyNpZmRlZiBIQVZFX1lBSkxf
WUFKTF9WRVJTSU9OX0gKICMgIGluY2x1ZGUgPHlhamwveWFqbF92ZXJzaW9uLmg+CiAjZW5kaWYK
IApkaWZmIC1yIGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvbTQvZGVmYXVsdF9s
aWIubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
dG9vbHMvbTQvZGVmYXVsdF9saWIubTQJVHVlIEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBA
IC0wLDAgKzEsOCBAQAorQUNfREVGVU4oW0FYX0RFRkFVTFRfTElCXSwKK1tBU19JRihbdGVzdCAt
ZCAiJHByZWZpeC9saWI2NCJdLCBbCisgICAgTElCX1BBVEg9ImxpYjY0IgorXSxbCisgICAgTElC
X1BBVEg9ImxpYiIKK10pCitBQ19TVUJTVChMSUJfUEFUSCldKQorCmRpZmYgLXIgY2E4MGVjYTlj
ZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9tNC9kaXNhYmxlX2ZlYXR1cmUubTQKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvZGlzYWJs
ZV9mZWF0dXJlLm00CVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDEz
IEBACitBQ19ERUZVTihbQVhfQVJHX0RJU0FCTEVfQU5EX0VYUE9SVF0sCitbQUNfQVJHX0VOQUJM
RShbJDFdLAorICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtJDFdLCBbJDJdKSkKKworQVNf
SUYoW3Rlc3QgIngkZW5hYmxlXyQxIiA9ICJ4bm8iXSwgWworICAgIGF4X2N2XyQxPSJuIgorXSwg
W3Rlc3QgIngkZW5hYmxlXyQxIiA9ICJ4eWVzIl0sIFsKKyAgICBheF9jdl8kMT0ieSIKK10sIFt0
ZXN0IC16ICRheF9jdl8kMV0sIFsKKyAgICBheF9jdl8kMT0ieSIKK10pCiskMT0kYXhfY3ZfJDEK
K0FDX1NVQlNUKCQxKV0pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29s
cy9tNC9lbmFibGVfZmVhdHVyZS5tNAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi90b29scy9tNC9lbmFibGVfZmVhdHVyZS5tNAlUdWUgRmViIDIxIDA0
OjE4OjI5IDIwMTIgKzAxMDAKQEAgLTAsMCArMSwxMyBAQAorQUNfREVGVU4oW0FYX0FSR19FTkFC
TEVfQU5EX0VYUE9SVF0sCitbQUNfQVJHX0VOQUJMRShbJDFdLAorICAgIEFTX0hFTFBfU1RSSU5H
KFstLWVuYWJsZS0kMV0sIFskMl0pKQorCitBU19JRihbdGVzdCAieCRlbmFibGVfJDEiID0gInh5
ZXMiXSwgWworICAgIGF4X2N2XyQxPSJ5IgorXSwgW3Rlc3QgIngkZW5hYmxlXyQxIiA9ICJ4bm8i
XSwgWworICAgIGF4X2N2XyQxPSJuIgorXSwgW3Rlc3QgLXogJGF4X2N2XyQxXSwgWworICAgIGF4
X2N2XyQxPSJuIgorXSkKKyQxPSRheF9jdl8kMQorQUNfU1VCU1QoJDEpXSkKZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL200L29jYW1sLm00Ci0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL200L29jYW1sLm00CVR1
ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDI0MSBAQAorZG5sIGF1dG9j
b25mIG1hY3JvcyBmb3IgT0NhbWwKK2RubCBmcm9tIGh0dHA6Ly9mb3JnZS5vY2FtbGNvcmUub3Jn
LworZG5sCitkbmwgQ29weXJpZ2h0IMKpIDIwMDkgICAgICBSaWNoYXJkIFcuTS4gSm9uZXMKK2Ru
bCBDb3B5cmlnaHQgwqkgMjAwOSAgICAgIFN0ZWZhbm8gWmFjY2hpcm9saQorZG5sIENvcHlyaWdo
dCDCqSAyMDAwLTIwMDUgT2xpdmllciBBbmRyaWV1CitkbmwgQ29weXJpZ2h0IMKpIDIwMDAtMjAw
NSBKZWFuLUNocmlzdG9waGUgRmlsbGnDonRyZQorZG5sIENvcHlyaWdodCDCqSAyMDAwLTIwMDUg
R2VvcmdlcyBNYXJpYW5vCitkbmwKK2RubCBGb3IgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHJlYWQg
dGhlIG9jYW1sLm00IG1hbiBwYWdlLgorCitBQ19ERUZVTihbQUNfUFJPR19PQ0FNTF0sCitbZG5s
CisgICMgY2hlY2tpbmcgZm9yIG9jYW1sYworICBBQ19DSEVDS19UT09MKFtPQ0FNTENdLFtvY2Ft
bGNdLFtub10pCisKKyAgaWYgdGVzdCAiJE9DQU1MQyIgIT0gIm5vIjsgdGhlbgorICAgICBPQ0FN
TFZFUlNJT049YCRPQ0FNTEMgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxc
MXxwJ2AKKyAgICAgQUNfTVNHX1JFU1VMVChbT0NhbWwgdmVyc2lvbiBpcyAkT0NBTUxWRVJTSU9O
XSkKKyAgICAgIyBJZiBPQ0FNTExJQiBpcyBzZXQsIHVzZSBpdAorICAgICBpZiB0ZXN0ICIkT0NB
TUxMSUIiID0gIiI7IHRoZW4KKyAgICAgICAgT0NBTUxMSUI9YCRPQ0FNTEMgLXdoZXJlIDI+L2Rl
di9udWxsIHx8ICRPQ0FNTEMgLXZ8dGFpbCAtMXxjdXQgLWQgJyAnIC1mIDRgCisgICAgIGVsc2UK
KyAgICAgICAgQUNfTVNHX1JFU1VMVChbT0NBTUxMSUIgcHJldmlvdXNseSBzZXQ7IHByZXNlcnZp
bmcgaXQuXSkKKyAgICAgZmkKKyAgICAgQUNfTVNHX1JFU1VMVChbT0NhbWwgbGlicmFyeSBwYXRo
IGlzICRPQ0FNTExJQl0pCisKKyAgICAgQUNfU1VCU1QoW09DQU1MVkVSU0lPTl0pCisgICAgIEFD
X1NVQlNUKFtPQ0FNTExJQl0pCisKKyAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxvcHQKKyAgICAg
QUNfQ0hFQ0tfVE9PTChbT0NBTUxPUFRdLFtvY2FtbG9wdF0sW25vXSkKKyAgICAgT0NBTUxCRVNU
PWJ5dGUKKyAgICAgaWYgdGVzdCAiJE9DQU1MT1BUIiA9ICJubyI7IHRoZW4KKwlBQ19NU0dfV0FS
TihbQ2Fubm90IGZpbmQgb2NhbWxvcHQ7IGJ5dGVjb2RlIGNvbXBpbGF0aW9uIG9ubHkuXSkKKyAg
ICAgZWxzZQorCVRNUFZFUlNJT049YCRPQ0FNTE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNp
b24qICpcKC4qXCkkfFwxfHAnIGAKKwlpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZF
UlNJT04iIDsgdGhlbgorCSAgICBBQ19NU0dfUkVTVUxUKFt2ZXJzaW9ucyBkaWZmZXJzIGZyb20g
b2NhbWxjOyBvY2FtbG9wdCBkaXNjYXJkZWQuXSkKKwkgICAgT0NBTUxPUFQ9bm8KKwllbHNlCisJ
ICAgIE9DQU1MQkVTVD1vcHQKKwlmaQorICAgICBmaQorCisgICAgIEFDX1NVQlNUKFtPQ0FNTEJF
U1RdKQorCisgICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sYy5vcHQKKyAgICAgQUNfQ0hFQ0tfVE9P
TChbT0NBTUxDRE9UT1BUXSxbb2NhbWxjLm9wdF0sW25vXSkKKyAgICAgaWYgdGVzdCAiJE9DQU1M
Q0RPVE9QVCIgIT0gIm5vIjsgdGhlbgorCVRNUFZFUlNJT049YCRPQ0FNTENET1RPUFQgLXYgfCBz
ZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJyBgCisJaWYgdGVzdCAiJFRNUFZF
UlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRoZW4KKwkgICAgQUNfTVNHX1JFU1VMVChbdmVy
c2lvbnMgZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxjLm9wdCBkaXNjYXJkZWQuXSkKKwllbHNl
CisJICAgIE9DQU1MQz0kT0NBTUxDRE9UT1BUCisJZmkKKyAgICAgZmkKKworICAgICAjIGNoZWNr
aW5nIGZvciBvY2FtbG9wdC5vcHQKKyAgICAgaWYgdGVzdCAiJE9DQU1MT1BUIiAhPSAibm8iIDsg
dGhlbgorCUFDX0NIRUNLX1RPT0woW09DQU1MT1BURE9UT1BUXSxbb2NhbWxvcHQub3B0XSxbbm9d
KQorCWlmIHRlc3QgIiRPQ0FNTE9QVERPVE9QVCIgIT0gIm5vIjsgdGhlbgorCSAgIFRNUFZFUlNJ
T049YCRPQ0FNTE9QVERPVE9QVCAtdiB8IHNlZCAtbiAtZSAnc3wuKnZlcnNpb24qICpcKC4qXCkk
fFwxfHAnIGAKKwkgICBpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsg
dGhlbgorCSAgICAgIEFDX01TR19SRVNVTFQoW3ZlcnNpb24gZGlmZmVycyBmcm9tIG9jYW1sYzsg
b2NhbWxvcHQub3B0IGRpc2NhcmRlZC5dKQorCSAgIGVsc2UKKwkgICAgICBPQ0FNTE9QVD0kT0NB
TUxPUFRET1RPUFQKKwkgICBmaQorICAgICAgICBmaQorICAgICBmaQorCisgICAgIEFDX1NVQlNU
KFtPQ0FNTE9QVF0pCisgIGZpCisKKyAgQUNfU1VCU1QoW09DQU1MQ10pCisKKyAgIyBjaGVja2lu
ZyBmb3Igb2NhbWwgdG9wbGV2ZWwKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxdLFtvY2FtbF0sW25v
XSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbGRlcAorICBBQ19DSEVDS19UT09MKFtPQ0FNTERF
UF0sW29jYW1sZGVwXSxbbm9dKQorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sbWt0b3AKKyAgQUNf
Q0hFQ0tfVE9PTChbT0NBTUxNS1RPUF0sW29jYW1sbWt0b3BdLFtub10pCisKKyAgIyBjaGVja2lu
ZyBmb3Igb2NhbWxta2xpYgorICBBQ19DSEVDS19UT09MKFtPQ0FNTE1LTElCXSxbb2NhbWxta2xp
Yl0sW25vXSkKKworICAjIGNoZWNraW5nIGZvciBvY2FtbGRvYworICBBQ19DSEVDS19UT09MKFtP
Q0FNTERPQ10sW29jYW1sZG9jXSxbbm9dKQorCisgICMgY2hlY2tpbmcgZm9yIG9jYW1sYnVpbGQK
KyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxCVUlMRF0sW29jYW1sYnVpbGRdLFtub10pCitdKQorCisK
K0FDX0RFRlVOKFtBQ19QUk9HX09DQU1MTEVYXSwKK1tkbmwKKyAgIyBjaGVja2luZyBmb3Igb2Nh
bWxsZXgKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxMRVhdLFtvY2FtbGxleF0sW25vXSkKKyAgaWYg
dGVzdCAiJE9DQU1MTEVYIiAhPSAibm8iOyB0aGVuCisgICAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxM
RVhET1RPUFRdLFtvY2FtbGxleC5vcHRdLFtub10pCisgICAgaWYgdGVzdCAiJE9DQU1MTEVYRE9U
T1BUIiAhPSAibm8iOyB0aGVuCisJT0NBTUxMRVg9JE9DQU1MTEVYRE9UT1BUCisgICAgZmkKKyAg
ZmkKKyAgQUNfU1VCU1QoW09DQU1MTEVYXSkKK10pCisKK0FDX0RFRlVOKFtBQ19QUk9HX09DQU1M
WUFDQ10sCitbZG5sCisgIEFDX0NIRUNLX1RPT0woW09DQU1MWUFDQ10sW29jYW1seWFjY10sW25v
XSkKKyAgQUNfU1VCU1QoW09DQU1MWUFDQ10pCitdKQorCisKK0FDX0RFRlVOKFtBQ19QUk9HX0NB
TUxQNF0sCitbZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfT0NBTUxdKWRubAorCisgICMgY2hl
Y2tpbmcgZm9yIGNhbWxwNAorICBBQ19DSEVDS19UT09MKFtDQU1MUDRdLFtjYW1scDRdLFtub10p
CisgIGlmIHRlc3QgIiRDQU1MUDQiICE9ICJubyI7IHRoZW4KKyAgICAgVE1QVkVSU0lPTj1gJENB
TUxQNCAtdiAyPiYxfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uICpcKC4qXCkkfFwxfHAnYAorICAg
ICBpZiB0ZXN0ICIkVE1QVkVSU0lPTiIgIT0gIiRPQ0FNTFZFUlNJT04iIDsgdGhlbgorCUFDX01T
R19SRVNVTFQoW3ZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGNdKQorICAgICAgICBDQU1MUDQ9
bm8KKyAgICAgZmkKKyAgZmkKKyAgQUNfU1VCU1QoW0NBTUxQNF0pCisKKyAgIyBjaGVja2luZyBm
b3IgY29tcGFuaW9uIHRvb2xzCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNEJPT1RdLFtjYW1scDRi
b290XSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRPXSxbY2FtbHA0b10sW25vXSkKKyAg
QUNfQ0hFQ0tfVE9PTChbQ0FNTFA0T0ZdLFtjYW1scDRvZl0sW25vXSkKKyAgQUNfQ0hFQ0tfVE9P
TChbQ0FNTFA0T09GXSxbY2FtbHA0b29mXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRP
UkZdLFtjYW1scDRvcmZdLFtub10pCisgIEFDX0NIRUNLX1RPT0woW0NBTUxQNFBST0ZdLFtjYW1s
cDRwcm9mXSxbbm9dKQorICBBQ19DSEVDS19UT09MKFtDQU1MUDRSXSxbY2FtbHA0cl0sW25vXSkK
KyAgQUNfQ0hFQ0tfVE9PTChbQ0FNTFA0UkZdLFtjYW1scDRyZl0sW25vXSkKKyAgQUNfU1VCU1Qo
W0NBTUxQNEJPT1RdKQorICBBQ19TVUJTVChbQ0FNTFA0T10pCisgIEFDX1NVQlNUKFtDQU1MUDRP
Rl0pCisgIEFDX1NVQlNUKFtDQU1MUDRPT0ZdKQorICBBQ19TVUJTVChbQ0FNTFA0T1JGXSkKKyAg
QUNfU1VCU1QoW0NBTUxQNFBST0ZdKQorICBBQ19TVUJTVChbQ0FNTFA0Ul0pCisgIEFDX1NVQlNU
KFtDQU1MUDRSRl0pCitdKQorCisKK0FDX0RFRlVOKFtBQ19QUk9HX0ZJTkRMSUJdLAorW2RubAor
ICBBQ19SRVFVSVJFKFtBQ19QUk9HX09DQU1MXSlkbmwKKworICAjIGNoZWNraW5nIGZvciBvY2Ft
bGZpbmQKKyAgQUNfQ0hFQ0tfVE9PTChbT0NBTUxGSU5EXSxbb2NhbWxmaW5kXSxbbm9dKQorICBB
Q19TVUJTVChbT0NBTUxGSU5EXSkKK10pCisKKworZG5sIFRoYW5rcyB0byBKaW0gTWV5ZXJpbmcg
Zm9yIHdvcmtpbmcgdGhpcyBuZXh0IGJpdCBvdXQgZm9yIHVzLgorZG5sIFhYWCBXZSBzaG91bGQg
ZGVmaW5lIEFTX1RSX1NIIGlmIGl0J3Mgbm90IGRlZmluZWQgYWxyZWFkeQorZG5sIChlZy4gZm9y
IG9sZCBhdXRvY29uZikuCitBQ19ERUZVTihbQUNfQ0hFQ0tfT0NBTUxfUEtHXSwKK1tkbmwKKyAg
QUNfUkVRVUlSRShbQUNfUFJPR19GSU5ETElCXSlkbmwKKworICBBQ19NU0dfQ0hFQ0tJTkcoW2Zv
ciBPQ2FtbCBmaW5kbGliIHBhY2thZ2UgJDFdKQorCisgIHVuc2V0IGZvdW5kCisgIHVuc2V0IHBr
ZworICBmb3VuZD1ubworICBmb3IgcGtnIGluICQxICQyIDsgZG8KKyAgICBpZiAkT0NBTUxGSU5E
IHF1ZXJ5ICRwa2cgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgQUNfTVNHX1JF
U1VMVChbZm91bmRdKQorICAgICAgQVNfVFJfU0goW09DQU1MX1BLR18kMV0pPSRwa2cKKyAgICAg
IGZvdW5kPXllcworICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisgIGlmIHRlc3QgIiRmb3Vu
ZCIgPSAibm8iIDsgdGhlbgorICAgIEFDX01TR19SRVNVTFQoW25vdCBmb3VuZF0pCisgICAgQVNf
VFJfU0goW09DQU1MX1BLR18kMV0pPW5vCisgIGZpCisKKyAgQUNfU1VCU1QoQVNfVFJfU0goW09D
QU1MX1BLR18kMV0pKQorXSkKKworCitBQ19ERUZVTihbQUNfQ0hFQ0tfT0NBTUxfTU9EVUxFXSwK
K1tkbmwKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgT0NhbWwgbW9kdWxlICQyXSkKKworICBjYXQg
PiBjb25mdGVzdC5tbCA8PEVPRgorb3BlbiAkMworRU9GCisgIHVuc2V0IGZvdW5kCisgIGZvciAk
MSBpbiAkJDEgJDQgOyBkbworICAgIGlmICRPQ0FNTEMgLWMgLUkgIiQkMSIgY29uZnRlc3QubWwg
PiY1IDI+JjUgOyB0aGVuCisgICAgICBmb3VuZD15ZXMKKyAgICAgIGJyZWFrCisgICAgZmkKKyAg
ZG9uZQorCisgIGlmIHRlc3QgIiRmb3VuZCIgOyB0aGVuCisgICAgQUNfTVNHX1JFU1VMVChbJCQx
XSkKKyAgZWxzZQorICAgIEFDX01TR19SRVNVTFQoW25vdCBmb3VuZF0pCisgICAgJDE9bm8KKyAg
ZmkKKyAgQUNfU1VCU1QoWyQxXSkKK10pCisKKworZG5sIFhYWCBDcm9zcy1jb21waWxpbmcKK0FD
X0RFRlVOKFtBQ19DSEVDS19PQ0FNTF9XT1JEX1NJWkVdLAorW2RubAorICBBQ19SRVFVSVJFKFtB
Q19QUk9HX09DQU1MXSlkbmwKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgT0NhbWwgY29tcGlsZXIg
d29yZCBzaXplXSkKKyAgY2F0ID4gY29uZnRlc3QubWwgPDxFT0YKKyAgcHJpbnRfZW5kbGluZSAo
c3RyaW5nX29mX2ludCBTeXMud29yZF9zaXplKQorICBFT0YKKyAgT0NBTUxfV09SRF9TSVpFPWAk
T0NBTUwgY29uZnRlc3QubWxgCisgIEFDX01TR19SRVNVTFQoWyRPQ0FNTF9XT1JEX1NJWkVdKQor
ICBBQ19TVUJTVChbT0NBTUxfV09SRF9TSVpFXSkKK10pCisKK0FDX0RFRlVOKFtBQ19DSEVDS19P
Q0FNTF9PU19UWVBFXSwKK1tkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19PQ0FNTF0pZG5sCisg
IEFDX01TR19DSEVDS0lORyhbT0NhbWwgU3lzLm9zX3R5cGVdKQorCisgIGNhdCA+IGNvbmZ0ZXN0
Lm1sIDw8RU9GCisgIHByaW50X3N0cmluZyhTeXMub3NfdHlwZSk7OworRU9GCisKKyAgT0NBTUxf
T1NfVFlQRT1gJE9DQU1MIGNvbmZ0ZXN0Lm1sYAorICBBQ19NU0dfUkVTVUxUKFskT0NBTUxfT1Nf
VFlQRV0pCisgIEFDX1NVQlNUKFtPQ0FNTF9PU19UWVBFXSkKK10pCmRpZmYgLXIgY2E4MGVjYTlj
ZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9tNC9wYXRoX29yX2ZhaWwubTQKLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvdG9vbHMvbTQvcGF0aF9vcl9m
YWlsLm00CVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDYgQEAKK0FD
X0RFRlVOKFtBWF9QQVRIX1BST0dfT1JfRkFJTF0sCitbQUNfUEFUSF9QUk9HKFskMV0sIFskMl0s
IFtub10pCitpZiB0ZXN0IHgiJHskMX0iID09IHgibm8iIAordGhlbgorICAgIEFDX01TR19FUlJP
UihbVW5hYmxlIHRvIGZpbmQgJDIsIHBsZWFzZSBpbnN0YWxsICQyXSkKK2ZpXSkKZGlmZiAtciBj
YTgwZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL200L3BrZy5tNAotLS0gL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9wa2cubTQJVHVl
IEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBAIC0wLDAgKzEsMTU3IEBACisjIHBrZy5tNCAt
IE1hY3JvcyB0byBsb2NhdGUgYW5kIHV0aWxpc2UgcGtnLWNvbmZpZy4gICAgICAgICAgICAtKi0g
QXV0b2NvbmYgLSotCisjIHNlcmlhbCAxIChwa2ctY29uZmlnLTAuMjQpCisjIAorIyBDb3B5cmln
aHQgwqkgMjAwNCBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEBuZXRzcGxpdC5jb20+LgorIwor
IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
IHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUg
dGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1
cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1
bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUg
cmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKyMgUEtHX1BST0dfUEtHX0NPTkZJRyhbTUlOLVZFUlNJ
T05dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtH
X1BST0dfUEtHX0NPTkZJR10sCitbbTRfcGF0dGVybl9mb3JiaWQoW15fP1BLR19bQS1aX10rJF0p
CittNF9wYXR0ZXJuX2FsbG93KFteUEtHX0NPTkZJRyhfUEFUSCk/JF0pCitBQ19BUkdfVkFSKFtQ
S0dfQ09ORklHXSwgW3BhdGggdG8gcGtnLWNvbmZpZyB1dGlsaXR5XSkKK0FDX0FSR19WQVIoW1BL
R19DT05GSUdfUEFUSF0sIFtkaXJlY3RvcmllcyB0byBhZGQgdG8gcGtnLWNvbmZpZydzIHNlYXJj
aCBwYXRoXSkKK0FDX0FSR19WQVIoW1BLR19DT05GSUdfTElCRElSXSwgW3BhdGggb3ZlcnJpZGlu
ZyBwa2ctY29uZmlnJ3MgYnVpbHQtaW4gc2VhcmNoIHBhdGhdKQorCitpZiB0ZXN0ICJ4JGFjX2N2
X2Vudl9QS0dfQ09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCisJQUNfUEFUSF9UT09MKFtQS0df
Q09ORklHXSwgW3BrZy1jb25maWddKQorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhl
bgorCV9wa2dfbWluX3ZlcnNpb249bTRfZGVmYXVsdChbJDFdLCBbMC45LjBdKQorCUFDX01TR19D
SEVDS0lORyhbcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9u
XSkKKwlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJF9wa2dfbWlu
X3ZlcnNpb247IHRoZW4KKwkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKwllbHNlCisJCUFDX01TR19S
RVNVTFQoW25vXSkKKwkJUEtHX0NPTkZJRz0iIgorCWZpCitmaVtdZG5sCitdKSMgUEtHX1BST0df
UEtHX0NPTkZJRworCisjIFBLR19DSEVDS19FWElTVFMoTU9EVUxFUywgW0FDVElPTi1JRi1GT1VO
RF0sIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKKyMKKyMgQ2hlY2sgdG8gc2VlIHdoZXRoZXIgYSBw
YXJ0aWN1bGFyIHNldCBvZiBtb2R1bGVzIGV4aXN0cy4gIFNpbWlsYXIKKyMgdG8gUEtHX0NIRUNL
X01PRFVMRVMoKSwgYnV0IGRvZXMgbm90IHNldCB2YXJpYWJsZXMgb3IgcHJpbnQgZXJyb3JzLgor
IworIyBQbGVhc2UgcmVtZW1iZXIgdGhhdCBtNCBleHBhbmRzIEFDX1JFUVVJUkUoW1BLR19QUk9H
X1BLR19DT05GSUddKQorIyBvbmx5IGF0IHRoZSBmaXJzdCBvY2N1cmVuY2UgaW4gY29uZmlndXJl
LmFjLCBzbyBpZiB0aGUgZmlyc3QgcGxhY2UKKyMgaXQncyBjYWxsZWQgbWlnaHQgYmUgc2tpcHBl
ZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4gImlmIiwgeW91CisjIGhhdmUgdG8gY2FsbCBQ
S0dfQ0hFQ0tfRVhJU1RTIG1hbnVhbGx5CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtHX0NIRUNLX0VY
SVNUU10sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitpZiB0ZXN0IC1u
ICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIEFDX1JVTl9MT0coWyRQS0dfQ09ORklHIC0tZXhpc3Rz
IC0tcHJpbnQtZXJyb3JzICIkMSJdKTsgdGhlbgorICBtNF9kZWZhdWx0KFskMl0sIFs6XSkKK200
X2lmdmFsbihbJDNdLCBbZWxzZQorICAkM10pZG5sCitmaV0pCisKKyMgX1BLR19DT05GSUcoW1ZB
UklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfUEtHX0NPTkZJR10sCitbaWYgdGVz
dCAtbiAiJCQxIjsgdGhlbgorICAgIHBrZ19jdl9bXSQxPSIkJDEiCisgZWxpZiB0ZXN0IC1uICIk
UEtHX0NPTkZJRyI7IHRoZW4KKyAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskM10sCisgICAgICAgICAg
ICAgICAgICAgICBbcGtnX2N2X1tdJDE9YCRQS0dfQ09ORklHIC0tW10kMiAiJDMiIDI+L2Rldi9u
dWxsYF0sCisJCSAgICAgW3BrZ19mYWlsZWQ9eWVzXSkKKyBlbHNlCisgICAgcGtnX2ZhaWxlZD11
bnRyaWVkCitmaVtdZG5sCitdKSMgX1BLR19DT05GSUcKKworIyBfUEtHX1NIT1JUX0VSUk9SU19T
VVBQT1JURUQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfUEtH
X1NIT1JUX0VSUk9SU19TVVBQT1JURURdLAorW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05G
SUddKQoraWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRo
ZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAg
ICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpW11kbmwKK10pIyBfUEtHX1NIT1JU
X0VSUk9SU19TVVBQT1JURUQKKworCisjIFBLR19DSEVDS19NT0RVTEVTKFZBUklBQkxFLVBSRUZJ
WCwgTU9EVUxFUywgW0FDVElPTi1JRi1GT1VORF0sCisjIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkK
KyMKKyMKKyMgTm90ZSB0aGF0IGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNh
bGwgdG8KKyMgUEtHX0NIRUNLX01PRFVMRVMgbWlnaHQgbm90IGhhcHBlbiwgeW91IHNob3VsZCBi
ZSBzdXJlIHRvIGluY2x1ZGUgYW4KKyMgZXhwbGljaXQgY2FsbCB0byBQS0dfUFJPR19QS0dfQ09O
RklHIGluIHlvdXIgY29uZmlndXJlLmFjCisjCisjCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtHX0NI
RUNLX01PRFVMRVNdLAorW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAorQUNf
QVJHX1ZBUihbJDFdW19DRkxBR1NdLCBbQyBjb21waWxlciBmbGFncyBmb3IgJDEsIG92ZXJyaWRp
bmcgcGtnLWNvbmZpZ10pZG5sCitBQ19BUkdfVkFSKFskMV1bX0xJQlNdLCBbbGlua2VyIGZsYWdz
IGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKKworcGtnX2ZhaWxlZD1ubworQUNf
TVNHX0NIRUNLSU5HKFtmb3IgJDFdKQorCitfUEtHX0NPTkZJRyhbJDFdW19DRkxBR1NdLCBbY2Zs
YWdzXSwgWyQyXSkKK19QS0dfQ09ORklHKFskMV1bX0xJQlNdLCBbbGlic10sIFskMl0pCisKK200
X2RlZmluZShbX1BLR19URVhUXSwgW0FsdGVybmF0aXZlbHksIHlvdSBtYXkgc2V0IHRoZSBlbnZp
cm9ubWVudCB2YXJpYWJsZXMgJDFbXV9DRkxBR1MKK2FuZCAkMVtdX0xJQlMgdG8gYXZvaWQgdGhl
IG5lZWQgdG8gY2FsbCBwa2ctY29uZmlnLgorU2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdlIGZv
ciBtb3JlIGRldGFpbHMuXSkKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorICAg
CUFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgICAgX1BLR19TSE9SVF9FUlJPUlNfU1VQUE9SVEVE
CisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhl
bgorCSAgICAgICAgJDFbXV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAt
LXByaW50LWVycm9ycyAiJDIiIDI+JjFgCisgICAgICAgIGVsc2UgCisJICAgICAgICAkMVtdX1BL
R19FUlJPUlM9YCRQS0dfQ09ORklHIC0tcHJpbnQtZXJyb3JzICIkMiIgMj4mMWAKKyAgICAgICAg
ZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0
IGJlbG9uZ3MKKwllY2hvICIkJDFbXV9QS0dfRVJST1JTIiA+JkFTX01FU1NBR0VfTE9HX0ZECisK
KwltNF9kZWZhdWx0KFskNF0sIFtBQ19NU0dfRVJST1IoCitbUGFja2FnZSByZXF1aXJlbWVudHMg
KCQyKSB3ZXJlIG5vdCBtZXQ6CisKKyQkMV9QS0dfRVJST1JTCisKK0NvbnNpZGVyIGFkanVzdGlu
ZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQoraW5zdGFs
bGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KKworX1BLR19URVhUXSlkbmwK
KyAgICAgICAgXSkKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKyAgICAg
CUFDX01TR19SRVNVTFQoW25vXSkKKwltNF9kZWZhdWx0KFskNF0sIFtBQ19NU0dfRkFJTFVSRSgK
K1tUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQu
ICBNYWtlIHN1cmUgaXQKK2lzIGluIHlvdXIgUEFUSCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52
aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGZ1bGwKK3BhdGggdG8gcGtnLWNvbmZpZy4KKworX1BL
R19URVhUCisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVk
ZXNrdG9wLm9yZy8+Ll0pZG5sCisgICAgICAgIF0pCitlbHNlCisJJDFbXV9DRkxBR1M9JHBrZ19j
dl9bXSQxW11fQ0ZMQUdTCisJJDFbXV9MSUJTPSRwa2dfY3ZfW10kMVtdX0xJQlMKKyAgICAgICAg
QUNfTVNHX1JFU1VMVChbeWVzXSkKKwkkMworZmlbXWRubAorXSkjIFBLR19DSEVDS19NT0RVTEVT
CmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9tNC9weXRob25fZGV2
ZWwubTQKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
dG9vbHMvbTQvcHl0aG9uX2RldmVsLm00CVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApA
QCAtMCwwICsxLDE4IEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX0RFVkVMXSwKK1tBQ19N
U0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gZGV2ZWxdKQorCitgJFBZVEhPTiAtYyAnCitpbXBvcnQg
b3MucGF0aCwgc3lzCitmb3IgcCBpbiBzeXMucGF0aDoKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhw
ICsgIi9jb25maWcvTWFrZWZpbGUiKToKKyAgICAgICAgc3lzLmV4aXQoMCkKK3N5cy5leGl0KDEp
CisnID4gL2Rldi9udWxsIDI+JjFgCisKK2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBB
Q19NU0dfUkVTVUxUKFtub10pCisgICAgQUNfTVNHX0VSUk9SKFtQeXRob24gZGV2ZWwgcGFja2Fn
ZSBub3QgZm91bmRdKQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitmaV0pCmRpZmYg
LXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9tNC9weXRob25fdmVyc2lvbi5t
NAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29s
cy9tNC9weXRob25fdmVyc2lvbi5tNAlUdWUgRmViIDIxIDA0OjE4OjI5IDIwMTIgKzAxMDAKQEAg
LTAsMCArMSwxMiBAQAorQUNfREVGVU4oW0FYX0NIRUNLX1BZVEhPTl9WRVJTSU9OXSwKK1tBQ19N
U0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gdmVyc2lvbiA+PSAkMS4kMiBdKQorYCRQWVRIT04gLWMg
J2ltcG9ydCBzeXM7IGV4aXQoZXZhbCgic3lzLnZlcnNpb25faW5mbyA8ICgkMSwgJDIpIikpJ2AK
K2lmIHRlc3QgIiQ/IiAhPSAiMCIKK3RoZW4KKyAgICBweXRob25fdmVyc2lvbj1gJFBZVEhPTiAt
ViAyPiYxYAorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfRVJST1IoCisgICAg
ICAgIFskcHl0aG9uX3ZlcnNpb24gaXMgdG9vIG9sZCwgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9u
IGlzICQxLiQyXSkKK2Vsc2UKKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZmldKQpkaWZmIC1y
IGNhODBlY2E5Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvbTQvcHl0aG9uX3htbC5tNAotLS0g
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC9w
eXRob25feG1sLm00CVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDEw
IEBACitBQ19ERUZVTihbQVhfQ0hFQ0tfUFlUSE9OX1hNTF0sCitbQUNfTVNHX0NIRUNLSU5HKFtm
b3IgcHl0aG9uIHhtbC5kb20ubWluaWRvbV0pCitgJFBZVEhPTiAtYyAnaW1wb3J0IHhtbC5kb20u
bWluaWRvbSdgCitpZiB0ZXN0ICIkPyIgIT0gIjAiCit0aGVuCisgICAgQUNfTVNHX1JFU1VMVChb
bm9dKQorICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGZpbmQgeG1sLmRvbS5taW5pZG9tIG1v
ZHVsZV0pCitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2ZpXSkKZGlmZiAtciBjYTgw
ZWNhOWNmYTMgLXIgYzJmMDgyMGU0OGFlIHRvb2xzL200L3NldF9jZmxhZ3NfbGRmbGFncy5tNAot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9t
NC9zZXRfY2ZsYWdzX2xkZmxhZ3MubTQJVHVlIEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBA
IC0wLDAgKzEsMjAgQEAKK0FDX0RFRlVOKFtBWF9TRVRfRkxBR1NdLAorW2ZvciBjZmxhZyBpbiAk
UFJFUEVORF9JTkNMVURFUworZG8KKyAgICBQUkVQRU5EX0NGTEFHUys9IiAtSSRjZmxhZyIKK2Rv
bmUKK2ZvciBsZGZsYWcgaW4gJFBSRVBFTkRfTElCCitkbworICAgIFBSRVBFTkRfTERGTEFHUys9
IiAtTCRsZGZsYWciCitkb25lCitmb3IgY2ZsYWcgaW4gJEFQUEVORF9JTkNMVURFUworZG8KKyAg
ICBBUFBFTkRfQ0ZMQUdTKz0iIC1JJGNmbGFnIgorZG9uZQorZm9yIGxkZmxhZyBpbiAkQVBQRU5E
X0xJQgorZG8KKyAgICBBUFBFTkRfTERGTEFHUys9IiAtTCRsZGZsYWciCitkb25lCitDRkxBR1M9
IiRQUkVQRU5EX0NGTEFHUyAkQ0ZMQUdTICRBUFBFTkRfQ0ZMQUdTIgorTERGTEFHUz0iJFBSRVBF
TkRfTERGTEFHUyAkTERGTEFHUyAkQVBQRU5EX0xERkxBR1MiXSkKKwpkaWZmIC1yIGNhODBlY2E5
Y2ZhMyAtciBjMmYwODIwZTQ4YWUgdG9vbHMvbTQvdWRldi5tNAotLS0gL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9tNC91ZGV2Lm00CVR1ZSBGZWIg
MjEgMDQ6MTg6MjkgMjAxMiArMDEwMApAQCAtMCwwICsxLDMyIEBACitBQ19ERUZVTihbQVhfQ0hF
Q0tfVURFVl0sCitbaWYgdGVzdCAieCRob3N0X29zIiA9PSAieGxpbnV4LWdudSIKK3RoZW4KKyAg
ICBBQ19QQVRIX1BST0coW1VERVZBRE1dLCBbdWRldmFkbV0sIFtub10pCisgICAgaWYgdGVzdCB4
IiR7VURFVkFETX0iID09IHgibm8iIAorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9HKFtV
REVWSU5GT10sIFt1ZGV2aW5mb10sIFtub10pCisgICAgICAgIGlmIHRlc3QgeCIke1VERVZJTkZP
fSIgPT0geCJubyIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKAorICAg
ICAgICAgICAgICAgIFtVbmFibGUgdG8gZmluZCB1ZGV2YWRtIG9yIHVkZXZpbmZvLCBwbGVhc2Ug
aW5zdGFsbCB1ZGV2XSkKKyAgICAgICAgZmkKKyAgICAgICAgdWRldnZlcj1gJHtVREVWSU5GT30g
LVYgfCBhd2sgJ3twcmludCAkTkZ9J2AKKyAgICBlbHNlCisgICAgICAgIHVkZXZ2ZXI9YCR7VURF
VkFETX0gaW5mbyAtViB8IGF3ayAne3ByaW50ICRORn0nYAorICAgIGZpCisgICAgaWYgdGVzdCAk
e3VkZXZ2ZXJ9IC1sdCA1OQorICAgIHRoZW4KKyAgICAgICAgQUNfUEFUSF9QUk9HKFtIT1RQTFVH
XSwgW2hvdHBsdWddLCBbbm9dKQorICAgICAgICBpZiB0ZXN0IHgiJHtIT1RQTFVHfSIgPT0geCJu
byIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFt1ZGV2IGlzIHRvbyBv
bGQsIHVwZ3JhZGUgdG8gdmVyc2lvbiA1OSBvciBsYXRlcl0pCisgICAgICAgIGZpCisgICAgZmkK
K2Vsc2UKKyAgICBBQ19QQVRIX1BST0coW1ZOQ09ORklHXSwgW3ZuY29uZmlnXSwgW25vXSkKKyAg
ICBpZiB0ZXN0IHgiJHtWTkNPTkZJR30iID09IHgibm8iCisgICAgdGhlbgorICAgICAgICBBQ19N
U0dfRVJST1IoW05vdCBhIExpbnV4IHN5c3RlbSBhbmQgdW5hYmxlIHRvIGZpbmQgdm5kXSkKKyAg
ICBmaQorZmkKK10pCmRpZmYgLXIgY2E4MGVjYTljZmEzIC1yIGMyZjA4MjBlNDhhZSB0b29scy9t
NC91dWlkLm00Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisr
KyBiL3Rvb2xzL200L3V1aWQubTQJVHVlIEZlYiAyMSAwNDoxODoyOSAyMDEyICswMTAwCkBAIC0w
LDAgKzEsMTAgQEAKK0FDX0RFRlVOKFtBWF9DSEVDS19VVUlEXSwKK1tpZiB0ZXN0ICJ4JGhvc3Rf
b3MiID09ICJ4bGludXgtZ251IgordGhlbgorICAgIEFDX0NIRUNLX0hFQURFUihbdXVpZC91dWlk
LmhdLCwKKwkgICAgW0FDX01TR19FUlJPUihbY2Fubm90IGZpbmQgdXVpZCBoZWFkZXJzXSldKQor
ZWxzZQorICAgIEFDX0NIRUNLX0hFQURFUihbdXVpZC5oXSwsCisJICAgIFtBQ19NU0dfRVJST1Io
W2Nhbm5vdCBmaW5kIHV1aWQgaGVhZGVyc10pXSkKK2ZpCitdKQpkaWZmIC1yIGNhODBlY2E5Y2Zh
MyAtciBjMmYwODIwZTQ4YWUgdmVyc2lvbi5zaAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi92ZXJzaW9uLnNoCVR1ZSBGZWIgMjEgMDQ6MTg6MjkgMjAx
MiArMDEwMApAQCAtMCwwICsxLDUgQEAKKyMhL2Jpbi9zaAorCitNQUpPUj1gZ3JlcCAiZXhwb3J0
IFhFTl9WRVJTSU9OIiAkMSB8IHNlZCAncy8uKj0vL2cnIHwgdHIgLXMgIiAiYAorTUlOT1I9YGdy
ZXAgImV4cG9ydCBYRU5fU1VCVkVSU0lPTiIgJDEgfCBzZWQgJ3MvLio9Ly9nJyB8IHRyIC1zICIg
ImAKK3ByaW50ZiAiJWQuJWQiICRNQUpPUiAkTUlOT1IK

--===============6369934646102767628==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--===============6369934646102767628==--


From xen-devel-bounces@lists.xen.org Wed Feb 22 22:20:09 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Feb 2012 22:20:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1S0KXE-0006HO-CZ; Wed, 22 Feb 2012 22:19:40 +0000
Received: from mail174.messagelabs.com ([85.158.138.51])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <henrik@fixme.se>) id 1S0KXB-0006HI-MH
	for xen-devel@lists.xen.org; Wed, 22 Feb 2012 22:19:38 +0000
X-Env-Sender: henrik@fixme.se
X-Msg-Ref: server-5.tower-174.messagelabs.com!1329949165!14509752!1
X-Originating-IP: [209.85.212.45]
X-SpamReason: No, hits=0.8 required=7.0 tests=BODY_RANDOM_LONG,
  RCVD_BY_IP
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 15745 invoked from network); 22 Feb 2012 22:19:27 -0000
Received: from mail-vw0-f45.google.com (HELO mail-vw0-f45.google.com)
	(209.85.212.45)
	by server-5.tower-174.messagelabs.com with RC4-SHA encrypted SMTP;
	22 Feb 2012 22:19:27 -0000
Received: by vbal1 with SMTP id l1so520731vba.32
	for <xen-devel@lists.xen.org>; Wed, 22 Feb 2012 14:19:25 -0800 (PST)
Received-SPF: pass (google.com: domain of henrik@fixme.se designates
	10.220.7.208 as permitted sender) client-ip=10.220.7.208; 
Authentication-Results: mr.google.com;
	spf=pass (google.com: domain of henrik@fixme.se
	designates 10.220.7.208 as permitted sender)
	smtp.mail=henrik@fixme.se
Received: from mr.google.com ([10.220.7.208])
	by 10.220.7.208 with SMTP id e16mr18568057vce.0.1329949165540 (num_hops
	= 1); Wed, 22 Feb 2012 14:19:25 -0800 (PST)
MIME-Version: 1.0
Received: by 10.220.7.208 with SMTP id e16mr14982853vce.0.1329949165190; Wed,
	22 Feb 2012 14:19:25 -0800 (PST)
Received: by 10.220.198.133 with HTTP; Wed, 22 Feb 2012 14:19:25 -0800 (PST)
Date: Wed, 22 Feb 2012 23:19:25 +0100
Message-ID: <CAA_XowMLKy0JrcNvV=igA5NC-neTNs6WWZt-deccvG53148WWg@mail.gmail.com>
From: Henrik Olsson <henrik@fixme.se>
To: xen-devel@lists.xen.org
Content-Type: multipart/mixed; boundary=bcaec54faf688f7e2504b994eb2f
X-Gm-Message-State: ALoCoQk/jMDljUGhmg2cTVC4fpmKy97M30xAoqyntn72uqSRGVSXXA+bwm3JmVgHMalsRVh7iBxG
Subject: [Xen-devel] dom0 not seeing all of the assigned memory
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--bcaec54faf688f7e2504b994eb2f
Content-Type: text/plain; charset=ISO-8859-1

Hi, i'm having some trouble with assigning memory to my dom0.

I've added "dom0_mem=8192M" to the xen command line yet "free -m"
reports only 5686MB total.

Running Xen 4.1.2 with kernel 3.2.0-1-amd64, debian testing.

Attached are the outputs of dmesg, xm dmesg, xm info and xm list.

Regards,
Henrik Olsson

--bcaec54faf688f7e2504b994eb2f
Content-Type: text/plain; charset=US-ASCII; name="dmesg.txt"
Content-Disposition: attachment; filename="dmesg.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyyxbpfb0

WyAgICAwLjAwMDAwMF0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgY3B1c2V0ClsgICAgMC4w
MDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdQpbICAgIDAuMDAwMDAwXSBMaW51
eCB2ZXJzaW9uIDMuMi4wLTEtYW1kNjQgKERlYmlhbiAzLjIuNC0xKSAod2FsZGlAZGViaWFuLm9y
ZykgKGdjYyB2ZXJzaW9uIDQuNi4yIChEZWJpYW4gNC42LjItMTIpICkgIzEgU01QIFN1biBGZWIg
NSAxNToxNzoxNSBVVEMgMjAxMgpbICAgIDAuMDAwMDAwXSBDb21tYW5kIGxpbmU6IHBsYWNlaG9s
ZGVyIHJvb3Q9L2Rldi9tYXBwZXIvbXVhZGRpYi1yb290IHJvIHJkYmxhY2tsaXN0PXJhZGVvbiBy
YWRlb24ubW9kc2V0PTAgbWVtPTgxOTJNClsgICAgMC4wMDAwMDBdIEZyZWVpbmcgIDlkLTEwMCBw
Zm4gcmFuZ2U6IDk5IHBhZ2VzIGZyZWVkClsgICAgMC4wMDAwMDBdIDEtMSBtYXBwaW5nIG9uIDlk
LT4xMDAKWyAgICAwLjAwMDAwMF0gRnJlZWluZyAgMjAwMDAtMjAyMDAgcGZuIHJhbmdlOiA1MTIg
cGFnZXMgZnJlZWQKWyAgICAwLjAwMDAwMF0gMS0xIG1hcHBpbmcgb24gMjAwMDAtPjIwMjAwClsg
ICAgMC4wMDAwMDBdIEZyZWVpbmcgIDQwMDAwLTQwMjAwIHBmbiByYW5nZTogNTEyIHBhZ2VzIGZy
ZWVkClsgICAgMC4wMDAwMDBdIDEtMSBtYXBwaW5nIG9uIDQwMDAwLT40MDIwMApbICAgIDAuMDAw
MDAwXSBGcmVlaW5nICA2ZWQ2ZC02ZWRmMiBwZm4gcmFuZ2U6IDEzMyBwYWdlcyBmcmVlZApbICAg
IDAuMDAwMDAwXSAxLTEgbWFwcGluZyBvbiA2ZWQ2ZC0+NmVkZjIKWyAgICAwLjAwMDAwMF0gRnJl
ZWluZyAgNmVkZjMtNmVlN2IgcGZuIHJhbmdlOiAxMzYgcGFnZXMgZnJlZWQKWyAgICAwLjAwMDAw
MF0gMS0xIG1hcHBpbmcgb24gNmVkZjMtPjZlZTdiClsgICAgMC4wMDAwMDBdIEZyZWVpbmcgIDZm
MDAwLTEwMDAwMCBwZm4gcmFuZ2U6IDU5MzkyMCBwYWdlcyBmcmVlZApbICAgIDAuMDAwMDAwXSAx
LTEgbWFwcGluZyBvbiA2ZjAwMC0+MTAwMDAwClsgICAgMC4wMDAwMDBdIFJlbGVhc2VkIDU5NTMx
MiBwYWdlcyBvZiB1bnVzZWQgbWVtb3J5ClsgICAgMC4wMDAwMDBdIFNldCA1OTUzMTIgcGFnZShz
KSB0byAxLTEgbWFwcGluZwpbICAgIDAuMDAwMDAwXSBCSU9TLXByb3ZpZGVkIHBoeXNpY2FsIFJB
TSBtYXA6ClsgICAgMC4wMDAwMDBdICBYZW46IDAwMDAwMDAwMDAwMDAwMDAgLSAwMDAwMDAwMDAw
MDlkMDAwICh1c2FibGUpClsgICAgMC4wMDAwMDBdICBYZW46IDAwMDAwMDAwMDAwOWQ4MDAgLSAw
MDAwMDAwMDAwMTAwMDAwIChyZXNlcnZlZCkKWyAgICAwLjAwMDAwMF0gIFhlbjogMDAwMDAwMDAw
MDEwMDAwMCAtIDAwMDAwMDAwMjAwMDAwMDAgKHVzYWJsZSkKWyAgICAwLjAwMDAwMF0gIFhlbjog
MDAwMDAwMDAyMDAwMDAwMCAtIDAwMDAwMDAwMjAyMDAwMDAgKHJlc2VydmVkKQpbICAgIDAuMDAw
MDAwXSAgWGVuOiAwMDAwMDAwMDIwMjAwMDAwIC0gMDAwMDAwMDA0MDAwMDAwMCAodXNhYmxlKQpb
ICAgIDAuMDAwMDAwXSAgWGVuOiAwMDAwMDAwMDQwMDAwMDAwIC0gMDAwMDAwMDA0MDIwMDAwMCAo
cmVzZXJ2ZWQpClsgICAgMC4wMDAwMDBdICBYZW46IDAwMDAwMDAwNDAyMDAwMDAgLSAwMDAwMDAw
MDZlZDZkMDAwICh1c2FibGUpClsgICAgMC4wMDAwMDBdICBYZW46IDAwMDAwMDAwNmVkNmQwMDAg
LSAwMDAwMDAwMDZlZGJjMDAwIChBQ1BJIE5WUykKWyAgICAwLjAwMDAwMF0gIFhlbjogMDAwMDAw
MDA2ZWRiYzAwMCAtIDAwMDAwMDAwNmVkYzUwMDAgKEFDUEkgZGF0YSkKWyAgICAwLjAwMDAwMF0g
IFhlbjogMDAwMDAwMDA2ZWRjNTAwMCAtIDAwMDAwMDAwNmVkZjIwMDAgKHJlc2VydmVkKQpbICAg
IDAuMDAwMDAwXSAgWGVuOiAwMDAwMDAwMDZlZGYyMDAwIC0gMDAwMDAwMDA2ZWRmMzAwMCAodXNh
YmxlKQpbICAgIDAuMDAwMDAwXSAgWGVuOiAwMDAwMDAwMDZlZGYzMDAwIC0gMDAwMDAwMDA2ZWUw
MzAwMCAocmVzZXJ2ZWQpClsgICAgMC4wMDAwMDBdICBYZW46IDAwMDAwMDAwNmVlMDMwMDAgLSAw
MDAwMDAwMDZlZTEwMDAwIChBQ1BJIE5WUykKWyAgICAwLjAwMDAwMF0gIFhlbjogMDAwMDAwMDA2
ZWUxMDAwMCAtIDAwMDAwMDAwNmVlMzgwMDAgKHJlc2VydmVkKQpbICAgIDAuMDAwMDAwXSAgWGVu
OiAwMDAwMDAwMDZlZTM4MDAwIC0gMDAwMDAwMDA2ZWU3YjAwMCAoQUNQSSBOVlMpClsgICAgMC4w
MDAwMDBdICBYZW46IDAwMDAwMDAwNmVlN2IwMDAgLSAwMDAwMDAwMDZmMDAwMDAwICh1c2FibGUp
ClsgICAgMC4wMDAwMDBdICBYZW46IDAwMDAwMDAwNmY4MDAwMDAgLSAwMDAwMDAwMDdmYTAwMDAw
IChyZXNlcnZlZCkKWyAgICAwLjAwMDAwMF0gIFhlbjogMDAwMDAwMDBmZWMwMDAwMCAtIDAwMDAw
MDAwZmVjMDEwMDAgKHJlc2VydmVkKQpbICAgIDAuMDAwMDAwXSAgWGVuOiAwMDAwMDAwMGZlZDFj
MDAwIC0gMDAwMDAwMDBmZWQ0MDAwMCAocmVzZXJ2ZWQpClsgICAgMC4wMDAwMDBdICBYZW46IDAw
MDAwMDAwZmVlMDAwMDAgLSAwMDAwMDAwMGZlZTAxMDAwIChyZXNlcnZlZCkKWyAgICAwLjAwMDAw
MF0gIFhlbjogMDAwMDAwMDBmZjAwMDAwMCAtIDAwMDAwMDAxMDAwMDAwMDAgKHJlc2VydmVkKQpb
ICAgIDAuMDAwMDAwXSAgWGVuOiAwMDAwMDAwMTAwMDAwMDAwIC0gMDAwMDAwMDQ3ZmUwMDAwMCAo
dXNhYmxlKQpbICAgIDAuMDAwMDAwXSBlODIwIHJlbW92ZSByYW5nZTogMDAwMDAwMDIwMDAwMDAw
MCAtIGZmZmZmZmZmZmZmZmZmZmYgKHVzYWJsZSkKWyAgICAwLjAwMDAwMF0gTlggKEV4ZWN1dGUg
RGlzYWJsZSkgcHJvdGVjdGlvbjogYWN0aXZlClsgICAgMC4wMDAwMDBdIHVzZXItZGVmaW5lZCBw
aHlzaWNhbCBSQU0gbWFwOgpbICAgIDAuMDAwMDAwXSAgdXNlcjogMDAwMDAwMDAwMDAwMDAwMCAt
IDAwMDAwMDAwMDAwOWQwMDAgKHVzYWJsZSkKWyAgICAwLjAwMDAwMF0gIHVzZXI6IDAwMDAwMDAw
MDAwOWQ4MDAgLSAwMDAwMDAwMDAwMTAwMDAwIChyZXNlcnZlZCkKWyAgICAwLjAwMDAwMF0gIHVz
ZXI6IDAwMDAwMDAwMDAxMDAwMDAgLSAwMDAwMDAwMDIwMDAwMDAwICh1c2FibGUpClsgICAgMC4w
MDAwMDBdICB1c2VyOiAwMDAwMDAwMDIwMDAwMDAwIC0gMDAwMDAwMDAyMDIwMDAwMCAocmVzZXJ2
ZWQpClsgICAgMC4wMDAwMDBdICB1c2VyOiAwMDAwMDAwMDIwMjAwMDAwIC0gMDAwMDAwMDA0MDAw
MDAwMCAodXNhYmxlKQpbICAgIDAuMDAwMDAwXSAgdXNlcjogMDAwMDAwMDA0MDAwMDAwMCAtIDAw
MDAwMDAwNDAyMDAwMDAgKHJlc2VydmVkKQpbICAgIDAuMDAwMDAwXSAgdXNlcjogMDAwMDAwMDA0
MDIwMDAwMCAtIDAwMDAwMDAwNmVkNmQwMDAgKHVzYWJsZSkKWyAgICAwLjAwMDAwMF0gIHVzZXI6
IDAwMDAwMDAwNmVkNmQwMDAgLSAwMDAwMDAwMDZlZGJjMDAwIChBQ1BJIE5WUykKWyAgICAwLjAw
MDAwMF0gIHVzZXI6IDAwMDAwMDAwNmVkYmMwMDAgLSAwMDAwMDAwMDZlZGM1MDAwIChBQ1BJIGRh
dGEpClsgICAgMC4wMDAwMDBdICB1c2VyOiAwMDAwMDAwMDZlZGM1MDAwIC0gMDAwMDAwMDA2ZWRm
MjAwMCAocmVzZXJ2ZWQpClsgICAgMC4wMDAwMDBdICB1c2VyOiAwMDAwMDAwMDZlZGYyMDAwIC0g
MDAwMDAwMDA2ZWRmMzAwMCAodXNhYmxlKQpbICAgIDAuMDAwMDAwXSAgdXNlcjogMDAwMDAwMDA2
ZWRmMzAwMCAtIDAwMDAwMDAwNmVlMDMwMDAgKHJlc2VydmVkKQpbICAgIDAuMDAwMDAwXSAgdXNl
cjogMDAwMDAwMDA2ZWUwMzAwMCAtIDAwMDAwMDAwNmVlMTAwMDAgKEFDUEkgTlZTKQpbICAgIDAu
MDAwMDAwXSAgdXNlcjogMDAwMDAwMDA2ZWUxMDAwMCAtIDAwMDAwMDAwNmVlMzgwMDAgKHJlc2Vy
dmVkKQpbICAgIDAuMDAwMDAwXSAgdXNlcjogMDAwMDAwMDA2ZWUzODAwMCAtIDAwMDAwMDAwNmVl
N2IwMDAgKEFDUEkgTlZTKQpbICAgIDAuMDAwMDAwXSAgdXNlcjogMDAwMDAwMDA2ZWU3YjAwMCAt
IDAwMDAwMDAwNmYwMDAwMDAgKHVzYWJsZSkKWyAgICAwLjAwMDAwMF0gIHVzZXI6IDAwMDAwMDAw
NmY4MDAwMDAgLSAwMDAwMDAwMDdmYTAwMDAwIChyZXNlcnZlZCkKWyAgICAwLjAwMDAwMF0gIHVz
ZXI6IDAwMDAwMDAwZmVjMDAwMDAgLSAwMDAwMDAwMGZlYzAxMDAwIChyZXNlcnZlZCkKWyAgICAw
LjAwMDAwMF0gIHVzZXI6IDAwMDAwMDAwZmVkMWMwMDAgLSAwMDAwMDAwMGZlZDQwMDAwIChyZXNl
cnZlZCkKWyAgICAwLjAwMDAwMF0gIHVzZXI6IDAwMDAwMDAwZmVlMDAwMDAgLSAwMDAwMDAwMGZl
ZTAxMDAwIChyZXNlcnZlZCkKWyAgICAwLjAwMDAwMF0gIHVzZXI6IDAwMDAwMDAwZmYwMDAwMDAg
LSAwMDAwMDAwMTAwMDAwMDAwIChyZXNlcnZlZCkKWyAgICAwLjAwMDAwMF0gIHVzZXI6IDAwMDAw
MDAxMDAwMDAwMDAgLSAwMDAwMDAwMjAwMDAwMDAwICh1c2FibGUpClsgICAgMC4wMDAwMDBdIERN
SSAyLjcgcHJlc2VudC4KWyAgICAwLjAwMDAwMF0gRE1JOiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0u
IFRvIEJlIEZpbGxlZCBCeSBPLkUuTS4vWjY4IEV4dHJlbWU0IEdlbjMsIEJJT1MgUDEuMDAgMDcv
MDgvMjAxMQpbICAgIDAuMDAwMDAwXSBlODIwIHVwZGF0ZSByYW5nZTogMDAwMDAwMDAwMDAwMDAw
MCAtIDAwMDAwMDAwMDAwMTAwMDAgKHVzYWJsZSkgPT0+IChyZXNlcnZlZCkKWyAgICAwLjAwMDAw
MF0gZTgyMCByZW1vdmUgcmFuZ2U6IDAwMDAwMDAwMDAwYTAwMDAgLSAwMDAwMDAwMDAwMTAwMDAw
ICh1c2FibGUpClsgICAgMC4wMDAwMDBdIE5vIEFHUCBicmlkZ2UgZm91bmQKWyAgICAwLjAwMDAw
MF0gbGFzdF9wZm4gPSAweDIwMDAwMCBtYXhfYXJjaF9wZm4gPSAweDQwMDAwMDAwMApbICAgIDAu
MDAwMDAwXSB4MmFwaWMgZW5hYmxlZCBieSBCSU9TLCBzd2l0Y2hpbmcgdG8geDJhcGljIG9wcwpb
ICAgIDAuMDAwMDAwXSBsYXN0X3BmbiA9IDB4NmYwMDAgbWF4X2FyY2hfcGZuID0gMHg0MDAwMDAw
MDAKWyAgICAwLjAwMDAwMF0gZm91bmQgU01QIE1QLXRhYmxlIGF0IFtmZmZmODgwMDAwMGZkMjMw
XSBmZDIzMApbICAgIDAuMDAwMDAwXSBpbml0aWFsIG1lbW9yeSBtYXBwZWQgOiAwIC0gMDNhMmMw
MDAKWyAgICAwLjAwMDAwMF0gQmFzZSBtZW1vcnkgdHJhbXBvbGluZSBhdCBbZmZmZjg4MDAwMDA5
ODAwMF0gOTgwMDAgc2l6ZSAyMDQ4MApbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5n
OiAwMDAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwNmYwMDAwMDAKWyAgICAwLjAwMDAwMF0gIDAwMDAw
MDAwMDAgLSAwMDZmMDAwMDAwIHBhZ2UgNGsKWyAgICAwLjAwMDAwMF0ga2VybmVsIGRpcmVjdCBt
YXBwaW5nIHRhYmxlcyB1cCB0byA2ZjAwMDAwMCBAIGM4NTAwMC0xMDAwMDAwClsgICAgMC4wMDAw
MDBdIHhlbjogc2V0dGluZyBSVyB0aGUgcmFuZ2UgZmQ0MDAwIC0gMTAwMDAwMApbICAgIDAuMDAw
MDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiAwMDAwMDAwMTAwMDAwMDAwLTAwMDAwMDAyMDAwMDAw
MDAKWyAgICAwLjAwMDAwMF0gIDAxMDAwMDAwMDAgLSAwMjAwMDAwMDAwIHBhZ2UgNGsKWyAgICAw
LjAwMDAwMF0ga2VybmVsIGRpcmVjdCBtYXBwaW5nIHRhYmxlcyB1cCB0byAyMDAwMDAwMDAgQCA2
ZGQ2NDAwMC02ZWQ2ZDAwMApbICAgIDAuMDAwMDAwXSB4ZW46IHNldHRpbmcgUlcgdGhlIHJhbmdl
IDZlNTY4MDAwIC0gNmVkNmQwMDAKWyAgICAwLjAwMDAwMF0gUkFNRElTSzogMDE5M2EwMDAgLSAw
M2EyYzAwMApbICAgIDAuMDAwMDAwXSBBQ1BJOiBSU0RQIDAwMDAwMDAwMDAwZjA0NTAgMDAwMjQg
KHYwMiBBTEFTS0EpClsgICAgMC4wMDAwMDBdIEFDUEk6IFhTRFQgMDAwMDAwMDA2ZWRiYzA3MCAw
MDA1QyAodjAxIEFMQVNLQSAgICBBIE0gSSAwMTA3MjAwOSBBTUkgIDAwMDEwMDEzKQpbICAgIDAu
MDAwMDAwXSBBQ1BJOiBGQUNQIDAwMDAwMDAwNmVkYzQxNTggMDAwRjQgKHYwNCBBTEFTS0EgICAg
QSBNIEkgMDEwNzIwMDkgQU1JICAwMDAxMDAxMykKWyAgICAwLjAwMDAwMF0gQUNQSTogRFNEVCAw
MDAwMDAwMDZlZGJjMTU4IDA3RkZCICh2MDIgQUxBU0tBICAgIEEgTSBJIDAwMDAwMDAwIElOVEwg
MjAwNTExMTcpClsgICAgMC4wMDAwMDBdIEFDUEk6IEZBQ1MgMDAwMDAwMDA2ZWUwN2Y4MCAwMDA0
MApbICAgIDAuMDAwMDAwXSBBQ1BJOiBBUElDIDAwMDAwMDAwNmVkYzQyNTAgMDAwOTIgKHYwMyBB
TEFTS0EgICAgQSBNIEkgMDEwNzIwMDkgQU1JICAwMDAxMDAxMykKWyAgICAwLjAwMDAwMF0gQUNQ
STogU1NEVCAwMDAwMDAwMDZlZGM0MmU4IDAwMUQ2ICh2MDEgQU1JQ1BVICAgICBQUk9DIDAwMDAw
MDAxIE1TRlQgMDMwMDAwMDEpClsgICAgMC4wMDAwMDBdIEFDUEk6IE1DRkcgMDAwMDAwMDA2ZWRj
NDRjMCAwMDAzQyAodjAxIEFMQVNLQSAgICBBIE0gSSAwMTA3MjAwOSBNU0ZUIDAwMDAwMDk3KQpb
ICAgIDAuMDAwMDAwXSBBQ1BJOiBBQUZUIDAwMDAwMDAwNmVkYzQ1MDAgMDAwRDMgKHYwMSBBTEFT
S0EgT0VNQUFGVCAgMDEwNzIwMDkgTVNGVCAwMDAwMDA5NykKWyAgICAwLjAwMDAwMF0gQUNQSTog
SFBFVCAwMDAwMDAwMDZlZGM0NWQ4IDAwMDM4ICh2MDEgQUxBU0tBICAgIEEgTSBJIDAxMDcyMDA5
IEFNSS4gMDAwMDAwMDQpClsgICAgMC4wMDAwMDBdIEFDUEk6IFhNQVIgMDAwMDAwMDA2ZWRjNDYx
MCAwMDBFOCAodjAxIEFMQVNLQSAgICBBIE0gSSAwMDAwMDAwMSBJTlRMIDAwMDAwMDAxKQpbICAg
IDAuMDAwMDAwXSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMApbICAgIDAuMDAw
MDAwXSBTZXR0aW5nIEFQSUMgcm91dGluZyB0byBjbHVzdGVyIHgyYXBpYy4KWyAgICAwLjAwMDAw
MF0gTm8gTlVNQSBjb25maWd1cmF0aW9uIGZvdW5kClsgICAgMC4wMDAwMDBdIEZha2luZyBhIG5v
ZGUgYXQgMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDAwMjAwMDAwMDAwClsgICAgMC4wMDAwMDBdIElu
aXRtZW0gc2V0dXAgbm9kZSAwIDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwMDIwMDAwMDAwMApbICAg
IDAuMDAwMDAwXSAgIE5PREVfREFUQSBbMDAwMDAwMDFmZmZmYjAwMCAtIDAwMDAwMDAxZmZmZmZm
ZmZdClsgICAgMC4wMDAwMDBdIFpvbmUgUEZOIHJhbmdlczoKWyAgICAwLjAwMDAwMF0gICBETUEg
ICAgICAweDAwMDAwMDEwIC0+IDB4MDAwMDEwMDAKWyAgICAwLjAwMDAwMF0gICBETUEzMiAgICAw
eDAwMDAxMDAwIC0+IDB4MDAxMDAwMDAKWyAgICAwLjAwMDAwMF0gICBOb3JtYWwgICAweDAwMTAw
MDAwIC0+IDB4MDAyMDAwMDAKWyAgICAwLjAwMDAwMF0gTW92YWJsZSB6b25lIHN0YXJ0IFBGTiBm
b3IgZWFjaCBub2RlClsgICAgMC4wMDAwMDBdIGVhcmx5X25vZGVfbWFwWzddIGFjdGl2ZSBQRk4g
cmFuZ2VzClsgICAgMC4wMDAwMDBdICAgICAwOiAweDAwMDAwMDEwIC0+IDB4MDAwMDAwOWQKWyAg
ICAwLjAwMDAwMF0gICAgIDA6IDB4MDAwMDAxMDAgLT4gMHgwMDAyMDAwMApbICAgIDAuMDAwMDAw
XSAgICAgMDogMHgwMDAyMDIwMCAtPiAweDAwMDQwMDAwClsgICAgMC4wMDAwMDBdICAgICAwOiAw
eDAwMDQwMjAwIC0+IDB4MDAwNmVkNmQKWyAgICAwLjAwMDAwMF0gICAgIDA6IDB4MDAwNmVkZjIg
LT4gMHgwMDA2ZWRmMwpbICAgIDAuMDAwMDAwXSAgICAgMDogMHgwMDA2ZWU3YiAtPiAweDAwMDZm
MDAwClsgICAgMC4wMDAwMDBdICAgICAwOiAweDAwMTAwMDAwIC0+IDB4MDAyMDAwMDAKWyAgICAw
LjAwMDAwMF0gT24gbm9kZSAwIHRvdGFscGFnZXM6IDE1MDE4MjQKWyAgICAwLjAwMDAwMF0gICBE
TUEgem9uZTogNTYgcGFnZXMgdXNlZCBmb3IgbWVtbWFwClsgICAgMC4wMDAwMDBdICAgRE1BIHpv
bmU6IDg1MiBwYWdlcyByZXNlcnZlZApbICAgIDAuMDAwMDAwXSAgIERNQSB6b25lOiAzMDczIHBh
Z2VzLCBMSUZPIGJhdGNoOjAKWyAgICAwLjAwMDAwMF0gICBETUEzMiB6b25lOiAxNDI4MCBwYWdl
cyB1c2VkIGZvciBtZW1tYXAKWyAgICAwLjAwMDAwMF0gICBETUEzMiB6b25lOiA0MzQ5ODcgcGFn
ZXMsIExJRk8gYmF0Y2g6MzEKWyAgICAwLjAwMDAwMF0gICBOb3JtYWwgem9uZTogMTQzMzYgcGFn
ZXMgdXNlZCBmb3IgbWVtbWFwClsgICAgMC4wMDAwMDBdICAgTm9ybWFsIHpvbmU6IDEwMzQyNDAg
cGFnZXMsIExJRk8gYmF0Y2g6MzEKWyAgICAwLjAwMDAwMF0gQUNQSTogUE0tVGltZXIgSU8gUG9y
dDogMHg0MDgKWyAgICAwLjAwMDAwMF0gQUNQSTogTG9jYWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAw
MDAKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwMV0gbGFwaWNfaWRbMHgw
MF0gZW5hYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwMl0gbGFw
aWNfaWRbMHgwMl0gZW5hYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRb
MHgwM10gbGFwaWNfaWRbMHgwNF0gZW5hYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMg
KGFjcGlfaWRbMHgwNF0gbGFwaWNfaWRbMHgwNl0gZW5hYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQ
STogTEFQSUMgKGFjcGlfaWRbMHgwNV0gbGFwaWNfaWRbMHgwMV0gZW5hYmxlZCkKWyAgICAwLjAw
MDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwNl0gbGFwaWNfaWRbMHgwM10gZW5hYmxlZCkK
WyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwN10gbGFwaWNfaWRbMHgwNV0g
ZW5hYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwOF0gbGFwaWNf
aWRbMHgwN10gZW5hYmxlZCkKWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUNfTk1JIChhY3BpX2lk
WzB4ZmZdIGhpZ2ggZWRnZSBsaW50WzB4MV0pClsgICAgMC4wMDAwMDBdIEFDUEk6IElPQVBJQyAo
aWRbMHgwMF0gYWRkcmVzc1sweGZlYzAwMDAwXSBnc2lfYmFzZVswXSkKWyAgICAwLjAwMDAwMF0g
SU9BUElDWzBdOiBhcGljX2lkIDAsIHZlcnNpb24gMjU1LCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdT
SSAwLTI1NQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAw
IGdsb2JhbF9pcnEgMiBkZmwgZGZsKQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAo
YnVzIDAgYnVzX2lycSA5IGdsb2JhbF9pcnEgOSBoaWdoIGxldmVsKQpbICAgIDAuMDAwMDAwXSBB
Q1BJOiBJUlEwIHVzZWQgYnkgb3ZlcnJpZGUuClsgICAgMC4wMDAwMDBdIEFDUEk6IElSUTIgdXNl
ZCBieSBvdmVycmlkZS4KWyAgICAwLjAwMDAwMF0gQUNQSTogSVJROSB1c2VkIGJ5IG92ZXJyaWRl
LgpbICAgIDAuMDAwMDAwXSBVc2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNvbmZpZ3VyYXRpb24g
aW5mb3JtYXRpb24KWyAgICAwLjAwMDAwMF0gQUNQSTogSFBFVCBpZDogMHg4MDg2YTcwMSBiYXNl
OiAweGZlZDAwMDAwClsgICAgMC4wMDAwMDBdIFNNUDogQWxsb3dpbmcgOCBDUFVzLCAwIGhvdHBs
dWcgQ1BVcwpbICAgIDAuMDAwMDAwXSBucl9pcnFzX2dzaTogMjcyClsgICAgMC4wMDAwMDBdIFBN
OiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwMDAwOWQwMDAgLSAwMDAwMDAwMDAw
MDllMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAw
MDAwMDAwOWUwMDAgLSAwMDAwMDAwMDAwMTAwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3Rl
cmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwMjAwMDAwMDAgLSAwMDAwMDAwMDIwMjAwMDAwClsg
ICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwNDAwMDAw
MDAgLSAwMDAwMDAwMDQwMjAwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2
ZSBtZW1vcnk6IDAwMDAwMDAwNmVkNmQwMDAgLSAwMDAwMDAwMDZlZGJjMDAwClsgICAgMC4wMDAw
MDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwNmVkYmMwMDAgLSAwMDAw
MDAwMDZlZGM1MDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6
IDAwMDAwMDAwNmVkYzUwMDAgLSAwMDAwMDAwMDZlZGYyMDAwClsgICAgMC4wMDAwMDBdIFBNOiBS
ZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwNmVkZjMwMDAgLSAwMDAwMDAwMDZlZTAz
MDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAw
NmVlMDMwMDAgLSAwMDAwMDAwMDZlZTEwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVk
IG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwNmVlMTAwMDAgLSAwMDAwMDAwMDZlZTM4MDAwClsgICAg
MC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwNmVlMzgwMDAg
LSAwMDAwMDAwMDZlZTdiMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBt
ZW1vcnk6IDAwMDAwMDAwNmYwMDAwMDAgLSAwMDAwMDAwMDZmODAwMDAwClsgICAgMC4wMDAwMDBd
IFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwNmY4MDAwMDAgLSAwMDAwMDAw
MDdmYTAwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAw
MDAwMDAwN2ZhMDAwMDAgLSAwMDAwMDAwMGZlYzAwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdp
c3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwZmVjMDAwMDAgLSAwMDAwMDAwMGZlYzAxMDAw
ClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwZmVj
MDEwMDAgLSAwMDAwMDAwMGZlZDFjMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5v
c2F2ZSBtZW1vcnk6IDAwMDAwMDAwZmVkMWMwMDAgLSAwMDAwMDAwMGZlZDQwMDAwClsgICAgMC4w
MDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwZmVkNDAwMDAgLSAw
MDAwMDAwMGZlZTAwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1v
cnk6IDAwMDAwMDAwZmVlMDAwMDAgLSAwMDAwMDAwMGZlZTAxMDAwClsgICAgMC4wMDAwMDBdIFBN
OiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwZmVlMDEwMDAgLSAwMDAwMDAwMGZm
MDAwMDAwClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAw
MDAwZmYwMDAwMDAgLSAwMDAwMDAwMTAwMDAwMDAwClsgICAgMC4wMDAwMDBdIEFsbG9jYXRpbmcg
UENJIHJlc291cmNlcyBzdGFydGluZyBhdCA3ZmEwMDAwMCAoZ2FwOiA3ZmEwMDAwMDo3ZjIwMDAw
MCkKWyAgICAwLjAwMDAwMF0gQm9vdGluZyBwYXJhdmlydHVhbGl6ZWQga2VybmVsIG9uIFhlbgpb
ICAgIDAuMDAwMDAwXSBYZW4gdmVyc2lvbjogNC4xLjIgKHByZXNlcnZlLUFEKQpbICAgIDAuMDAw
MDAwXSBzZXR1cF9wZXJjcHU6IE5SX0NQVVM6NTEyIG5yX2NwdW1hc2tfYml0czo1MTIgbnJfY3B1
X2lkczo4IG5yX25vZGVfaWRzOjEKWyAgICAwLjAwMDAwMF0gUEVSQ1BVOiBFbWJlZGRlZCAyOCBw
YWdlcy9jcHUgQGZmZmY4ODAxZmZlY2EwMDAgczgyMzA0IHI4MTkyIGQyNDE5MiB1MTE0Njg4Clsg
ICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6IHM4MjMwNCByODE5MiBkMjQxOTIgdTExNDY4OCBhbGxv
Yz0yOCo0MDk2ClsgICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6IFswXSAwIFswXSAxIFswXSAyIFsw
XSAzIFswXSA0IFswXSA1IFswXSA2IFswXSA3IApbICAgIDQuMDQwMjc4XSBCdWlsdCAxIHpvbmVs
aXN0cyBpbiBab25lIG9yZGVyLCBtb2JpbGl0eSBncm91cGluZyBvbi4gIFRvdGFsIHBhZ2VzOiAx
NDcyMzAwClsgICAgNC4wNDAyNzldIFBvbGljeSB6b25lOiBOb3JtYWwKWyAgICA0LjA0MDI4MV0g
S2VybmVsIGNvbW1hbmQgbGluZTogcGxhY2Vob2xkZXIgcm9vdD0vZGV2L21hcHBlci9tdWFkZGli
LXJvb3Qgcm8gcmRibGFja2xpc3Q9cmFkZW9uIHJhZGVvbi5tb2RzZXQ9MCBtZW09ODE5Mk0KWyAg
ICA0LjA0MDMzMV0gUElEIGhhc2ggdGFibGUgZW50cmllczogNDA5NiAob3JkZXI6IDMsIDMyNzY4
IGJ5dGVzKQpbICAgIDQuMDU3MTkxXSBQbGFjaW5nIDY0TUIgc29mdHdhcmUgSU8gVExCIGJldHdl
ZW4gZmZmZjg4MDFmNWEwMDAwMCAtIGZmZmY4ODAxZjlhMDAwMDAKWyAgICA0LjA1NzE5M10gc29m
dHdhcmUgSU8gVExCIGF0IHBoeXMgMHgxZjVhMDAwMDAgLSAweDFmOWEwMDAwMApbICAgIDQuMDcz
MTExXSBNZW1vcnk6IDU3ODcyMjhrLzgzODg2MDhrIGF2YWlsYWJsZSAoMzM2OGsga2VybmVsIGNv
ZGUsIDIzODEzMTJrIGFic2VudCwgMjIwMDY4ayByZXNlcnZlZCwgMzM2MWsgZGF0YSwgNTY4ayBp
bml0KQpbICAgIDQuMDczMTc1XSBIaWVyYXJjaGljYWwgUkNVIGltcGxlbWVudGF0aW9uLgpbICAg
IDQuMDczMTc2XSAJUkNVIGR5bnRpY2staWRsZSBncmFjZS1wZXJpb2QgYWNjZWxlcmF0aW9uIGlz
IGVuYWJsZWQuClsgICAgNC4wNzMxODNdIE5SX0lSUVM6MzMwMjQgbnJfaXJxczoyMDQ4IDE2Clsg
ICAgNC4wNzMyMzRdIHhlbjogc2NpIG92ZXJyaWRlOiBnbG9iYWxfaXJxPTkgdHJpZ2dlcj0wIHBv
bGFyaXR5PTAKWyAgICA0LjA3MzIzN10geGVuOiByZWdpc3RlcmluZyBnc2kgOSB0cmlnZ2VyaW5n
IDAgcG9sYXJpdHkgMApbICAgIDQuMDczMjQzXSB4ZW46IC0tPiBwaXJxPTkgLT4gaXJxPTkgKGdz
aT05KQpbICAgIDQuMDczMjYyXSB4ZW46IGFjcGkgc2NpIDkKWyAgICA0LjA3MzI2NF0geGVuOiAt
LT4gcGlycT0xIC0+IGlycT0xIChnc2k9MSkKWyAgICA0LjA3MzI2N10geGVuOiAtLT4gcGlycT0y
IC0+IGlycT0yIChnc2k9MikKWyAgICA0LjA3MzI2OV0geGVuOiAtLT4gcGlycT0zIC0+IGlycT0z
IChnc2k9MykKWyAgICA0LjA3MzI3MV0geGVuOiAtLT4gcGlycT00IC0+IGlycT00IChnc2k9NCkK
WyAgICA0LjA3MzI3NF0geGVuOiAtLT4gcGlycT01IC0+IGlycT01IChnc2k9NSkKWyAgICA0LjA3
MzI3Nl0geGVuOiAtLT4gcGlycT02IC0+IGlycT02IChnc2k9NikKWyAgICA0LjA3MzI3OF0geGVu
OiAtLT4gcGlycT03IC0+IGlycT03IChnc2k9NykKWyAgICA0LjA3MzI4MV0geGVuOiAtLT4gcGly
cT04IC0+IGlycT04IChnc2k9OCkKWyAgICA0LjA3MzI4Ml0geGVuX21hcF9waXJxX2dzaTogcmV0
dXJuaW5nIGlycSA5IGZvciBnc2kgOQpbICAgIDQuMDczMjg0XSB4ZW46IC0tPiBwaXJxPTkgLT4g
aXJxPTkgKGdzaT05KQpbICAgIDQuMDczMjg2XSB4ZW46IC0tPiBwaXJxPTEwIC0+IGlycT0xMCAo
Z3NpPTEwKQpbICAgIDQuMDczMjg4XSB4ZW46IC0tPiBwaXJxPTExIC0+IGlycT0xMSAoZ3NpPTEx
KQpbICAgIDQuMDczMjkxXSB4ZW46IC0tPiBwaXJxPTEyIC0+IGlycT0xMiAoZ3NpPTEyKQpbICAg
IDQuMDczMjkzXSB4ZW46IC0tPiBwaXJxPTEzIC0+IGlycT0xMyAoZ3NpPTEzKQpbICAgIDQuMDcz
Mjk1XSB4ZW46IC0tPiBwaXJxPTE0IC0+IGlycT0xNCAoZ3NpPTE0KQpbICAgIDQuMDczMjk4XSB4
ZW46IC0tPiBwaXJxPTE1IC0+IGlycT0xNSAoZ3NpPTE1KQpbICAgIDQuMDc1MDYxXSBDb25zb2xl
OiBjb2xvdXIgVkdBKyA4MHgyNQpbICAgIDQuMDc5ODA3XSBjb25zb2xlIFt0dHkwXSBlbmFibGVk
ClsgICAgNC4wNzk4NThdIFhlbjogdXNpbmcgdmNwdW9wIHRpbWVyIGludGVyZmFjZQpbICAgIDQu
MDc5ODYxXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDAKWyAgICA0LjA3OTkwNF0gRGV0
ZWN0ZWQgMzM5Mi4zNzYgTUh6IHByb2Nlc3Nvci4KWyAgICA0LjA3OTkzOF0gQ2FsaWJyYXRpbmcg
ZGVsYXkgbG9vcCAoc2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQgdXNpbmcgdGltZXIgZnJlcXVl
bmN5Li4gNjc4NC43NSBCb2dvTUlQUyAobHBqPTEzNTY5NTA0KQpbICAgIDQuMDgwMDAxXSBwaWRf
bWF4OiBkZWZhdWx0OiAzMjc2OCBtaW5pbXVtOiAzMDEKWyAgICA0LjA4MDA2NV0gU2VjdXJpdHkg
RnJhbWV3b3JrIGluaXRpYWxpemVkClsgICAgNC4wODAwOTZdIEFwcEFybW9yOiBBcHBBcm1vciBk
aXNhYmxlZCBieSBib290IHRpbWUgcGFyYW1ldGVyClsgICAgNC4wODE3NDBdIERlbnRyeSBjYWNo
ZSBoYXNoIHRhYmxlIGVudHJpZXM6IDEwNDg1NzYgKG9yZGVyOiAxMSwgODM4ODYwOCBieXRlcykK
WyAgICA0LjA4MzczOV0gSW5vZGUtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA1MjQyODggKG9y
ZGVyOiAxMCwgNDE5NDMwNCBieXRlcykKWyAgICA0LjA4NDM3OV0gTW91bnQtY2FjaGUgaGFzaCB0
YWJsZSBlbnRyaWVzOiAyNTYKWyAgICA0LjA4NDUwNV0gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJz
eXMgY3B1YWNjdApbICAgIDQuMDg0NTM3XSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBtZW1v
cnkKWyAgICA0LjA4NDU3N10gSW5pdGlhbGl6aW5nIGNncm91cCBzdWJzeXMgZGV2aWNlcwpbICAg
IDQuMDg0NjA3XSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBmcmVlemVyClsgICAgNC4wODQ2
MzhdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIG5ldF9jbHMKWyAgICA0LjA4NDY2OV0gSW5p
dGlhbGl6aW5nIGNncm91cCBzdWJzeXMgYmxraW8KWyAgICA0LjA4NDc0OV0gRU5FUkdZX1BFUkZf
QklBUzogU2V0IHRvICdub3JtYWwnLCB3YXMgJ3BlcmZvcm1hbmNlJwpbICAgIDQuMDg0NzQ5XSBF
TkVSR1lfUEVSRl9CSUFTOiBWaWV3IGFuZCB1cGRhdGUgd2l0aCB4ODZfZW5lcmd5X3BlcmZfcG9s
aWN5KDgpClsgICAgNC4wODQ4MTddIENQVTogUGh5c2ljYWwgUHJvY2Vzc29yIElEOiAwClsgICAg
NC4wODQ4NDZdIENQVTogUHJvY2Vzc29yIENvcmUgSUQ6IDAKWyAgICA0LjA4NTMwNF0gQUNQSTog
Q29yZSByZXZpc2lvbiAyMDExMDYyMwpbICAgIDQuMDk1MjA4XSBQZXJmb3JtYW5jZSBFdmVudHM6
IHVuc3VwcG9ydGVkIHA2IENQVSBtb2RlbCA0MiBubyBQTVUgZHJpdmVyLCBzb2Z0d2FyZSBldmVu
dHMgb25seS4KWyAgICA0LjA5NTM3MV0gTk1JIHdhdGNoZG9nIGRpc2FibGVkIChjcHUwKTogaGFy
ZHdhcmUgZXZlbnRzIG5vdCBlbmFibGVkClsgICAgNC4wOTU0ODldIGluc3RhbGxpbmcgWGVuIHRp
bWVyIGZvciBDUFUgMQpbICAgIDQuMDk1NjI2XSBOTUkgd2F0Y2hkb2cgZGlzYWJsZWQgKGNwdTEp
OiBoYXJkd2FyZSBldmVudHMgbm90IGVuYWJsZWQKWyAgICA0LjA5NTY3OF0gQnJvdWdodCB1cCAy
IENQVXMKWyAgICA0LjA5NTg5N10gZGV2dG1wZnM6IGluaXRpYWxpemVkClsgICAgNC4wOTgwNzhd
IFBNOiBSZWdpc3RlcmluZyBBQ1BJIE5WUyByZWdpb24gYXQgNmVkNmQwMDAgKDMyMzU4NCBieXRl
cykKWyAgICA0LjA5ODEyOF0gUE06IFJlZ2lzdGVyaW5nIEFDUEkgTlZTIHJlZ2lvbiBhdCA2ZWUw
MzAwMCAoNTMyNDggYnl0ZXMpClsgICAgNC4wOTk0NjBdIFBNOiBSZWdpc3RlcmluZyBBQ1BJIE5W
UyByZWdpb24gYXQgNmVlMzgwMDAgKDI3NDQzMiBieXRlcykKWyAgICA0LjA5OTU3OF0gR3JhbnQg
dGFibGUgaW5pdGlhbGl6ZWQKWyAgICA0LjA5OTY2MF0gcHJpbnRfY29uc3RyYWludHM6IGR1bW15
OiAKWyAgICA0LjA5OTc0MF0gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAxNgpbICAg
IDQuMDk5OTI2XSBBQ1BJOiBidXMgdHlwZSBwY2kgcmVnaXN0ZXJlZApbICAgIDQuMTAwMDE4XSBQ
Q0k6IE1NQ09ORklHIGZvciBkb21haW4gMDAwMCBbYnVzIDAwLWZmXSBhdCBbbWVtIDB4ZTAwMDAw
MDAtMHhlZmZmZmZmZl0gKGJhc2UgMHhlMDAwMDAwMCkKWyAgICA0LjEwMDA2N10gUENJOiBub3Qg
dXNpbmcgTU1DT05GSUcKWyAgICA0LjEwMDA5N10gUENJOiBVc2luZyBjb25maWd1cmF0aW9uIHR5
cGUgMSBmb3IgYmFzZSBhY2Nlc3MKWyAgICA0LjEwMDc0OV0gYmlvOiBjcmVhdGUgc2xhYiA8Ymlv
LTA+IGF0IDAKWyAgICA0LjEwMDg4N10gQUNQSTogQWRkZWQgX09TSShNb2R1bGUgRGV2aWNlKQpb
ICAgIDQuMTAwOTE5XSBBQ1BJOiBBZGRlZCBfT1NJKFByb2Nlc3NvciBEZXZpY2UpClsgICAgNC4x
MDA5NTBdIEFDUEk6IEFkZGVkIF9PU0koMy4wIF9TQ1AgRXh0ZW5zaW9ucykKWyAgICA0LjEwMDk4
MV0gQUNQSTogQWRkZWQgX09TSShQcm9jZXNzb3IgQWdncmVnYXRvciBEZXZpY2UpClsgICAgNC4x
MDI3MDhdIEFDUEk6IEVDOiBMb29rIHVwIEVDIGluIERTRFQKWyAgICA0LjEwNDU0N10gQUNQSTog
RXhlY3V0ZWQgMSBibG9ja3Mgb2YgbW9kdWxlLWxldmVsIGV4ZWN1dGFibGUgQU1MIGNvZGUKWyAg
ICA0LjExMTgxOV0gQUNQSTogU1NEVCAwMDAwMDAwMDZlZTBmODk4IDAwNkY0ICh2MDEgICAgQU1J
ICAgICAgSVNUIDAwMDAwMDAxIE1TRlQgMDMwMDAwMDEpClsgICAgNC4xMTI1MThdIEFDUEk6IER5
bmFtaWMgT0VNIFRhYmxlIExvYWQ6ClsgICAgNC4xMTI1NzJdIEFDUEk6IFNTRFQgICAgICAgICAg
IChudWxsKSAwMDZGNCAodjAxICAgIEFNSSAgICAgIElTVCAwMDAwMDAwMSBNU0ZUIDAzMDAwMDAx
KQpbICAgIDQuMTEyNzA4XSBBQ1BJOiBTU0RUIDAwMDAwMDAwNmVlMDZkOTggMDAwRTQgKHYwMSAg
ICBBTUkgICAgICBDU1QgMDAwMDAwMDEgTVNGVCAwMzAwMDAwMSkKWyAgICA0LjExMzIzMV0gQUNQ
STogRHluYW1pYyBPRU0gVGFibGUgTG9hZDoKWyAgICA0LjExMzI4NV0gQUNQSTogU1NEVCAgICAg
ICAgICAgKG51bGwpIDAwMEU0ICh2MDEgICAgQU1JICAgICAgQ1NUIDAwMDAwMDAxIE1TRlQgMDMw
MDAwMDEpClsgICAgNC4xMTM4MzJdIEFDUEk6IEludGVycHJldGVyIGVuYWJsZWQKWyAgICA0LjEx
Mzg2M10gQUNQSTogKHN1cHBvcnRzIFMwIFMxIFMzIFM0IFM1KQpbICAgIDQuMTEzOTc1XSBBQ1BJ
OiBVc2luZyBJT0FQSUMgZm9yIGludGVycnVwdCByb3V0aW5nClsgICAgNC4xMTQwMzRdIFBDSTog
TU1DT05GSUcgZm9yIGRvbWFpbiAwMDAwIFtidXMgMDAtZmZdIGF0IFttZW0gMHhlMDAwMDAwMC0w
eGVmZmZmZmZmXSAoYmFzZSAweGUwMDAwMDAwKQpbICAgIDQuMTE0MTg3XSBQQ0k6IE1NQ09ORklH
IGF0IFttZW0gMHhlMDAwMDAwMC0weGVmZmZmZmZmXSByZXNlcnZlZCBpbiBBQ1BJIG1vdGhlcmJv
YXJkIHJlc291cmNlcwpbICAgIDQuMTY2ODUxXSBbRmlybXdhcmUgQnVnXTogQUNQSTogQklPUyBf
T1NJKExpbnV4KSBxdWVyeSBpZ25vcmVkClsgICAgNC4xNzQwNjVdIEFDUEk6IE5vIGRvY2sgZGV2
aWNlcyBmb3VuZC4KWyAgICA0LjE3NDA5Nl0gSEVTVDogVGFibGUgbm90IGZvdW5kLgpbICAgIDQu
MTc0MTI2XSBQQ0k6IFVzaW5nIGhvc3QgYnJpZGdlIHdpbmRvd3MgZnJvbSBBQ1BJOyBpZiBuZWNl
c3NhcnksIHVzZSAicGNpPW5vY3JzIiBhbmQgcmVwb3J0IGEgYnVnClsgICAgNC4xNzQ2MDRdIEFD
UEk6IFBDSSBSb290IEJyaWRnZSBbUENJMF0gKGRvbWFpbiAwMDAwIFtidXMgMDAtZmZdKQpbICAg
IDQuMTc1MDYzXSBwY2lfcm9vdCBQTlAwQTA4OjAwOiBob3N0IGJyaWRnZSB3aW5kb3cgW2lvICAw
eDAwMDAtMHgwM2FmXQpbICAgIDQuMTc1MDk4XSBwY2lfcm9vdCBQTlAwQTA4OjAwOiBob3N0IGJy
aWRnZSB3aW5kb3cgW2lvICAweDAzZTAtMHgwY2Y3XQpbICAgIDQuMTc1MTMyXSBwY2lfcm9vdCBQ
TlAwQTA4OjAwOiBob3N0IGJyaWRnZSB3aW5kb3cgW2lvICAweDAzYjAtMHgwM2RmXQpbICAgIDQu
MTc1MTY2XSBwY2lfcm9vdCBQTlAwQTA4OjAwOiBob3N0IGJyaWRnZSB3aW5kb3cgW2lvICAweDBk
MDAtMHhmZmZmXQpbICAgIDQuMTc1MjAwXSBwY2lfcm9vdCBQTlAwQTA4OjAwOiBob3N0IGJyaWRn
ZSB3aW5kb3cgW21lbSAweDAwMGEwMDAwLTB4MDAwYmZmZmZdClsgICAgNC4xNzUyNDVdIHBjaV9y
b290IFBOUDBBMDg6MDA6IGhvc3QgYnJpZGdlIHdpbmRvdyBbbWVtIDB4MDAwYzAwMDAtMHgwMDBk
ZmZmZl0KWyAgICA0LjE3NTI5MV0gcGNpX3Jvb3QgUE5QMEEwODowMDogaG9zdCBicmlkZ2Ugd2lu
ZG93IFttZW0gMHg3ZmEwMDAwMC0weGZmZmZmZmZmXQpbICAgIDQuMTc1MzUxXSBwY2kgMDAwMDow
MDowMC4wOiBbODA4NjowMTAwXSB0eXBlIDAgY2xhc3MgMHgwMDA2MDAKWyAgICA0LjE3NTQyOV0g
cGNpIDAwMDA6MDA6MDEuMDogWzgwODY6MDEwMV0gdHlwZSAxIGNsYXNzIDB4MDAwNjA0ClsgICAg
NC4xNzU1MDZdIHBjaSAwMDAwOjAwOjAxLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3Qg
RDNjb2xkClsgICAgNC4xNzU1MDldIHBjaSAwMDAwOjAwOjAxLjA6IFBNRSMgZGlzYWJsZWQKWyAg
ICA0LjE3NTU0OF0gcGNpIDAwMDA6MDA6MDIuMDogWzgwODY6MDEwMl0gdHlwZSAwIGNsYXNzIDB4
MDAwMzAwClsgICAgNC4xNzU1NzFdIHBjaSAwMDAwOjAwOjAyLjA6IHJlZyAxMDogW21lbSAweGZi
NDAwMDAwLTB4ZmI3ZmZmZmYgNjRiaXRdClsgICAgNC4xNzU1ODNdIHBjaSAwMDAwOjAwOjAyLjA6
IHJlZyAxODogW21lbSAweGIwMDAwMDAwLTB4YmZmZmZmZmYgNjRiaXQgcHJlZl0KWyAgICA0LjE3
NTU5Ml0gcGNpIDAwMDA6MDA6MDIuMDogcmVnIDIwOiBbaW8gIDB4ZjAwMC0weGYwM2ZdClsgICAg
NC4xNzU3MTNdIHBjaSAwMDAwOjAwOjE2LjA6IFs4MDg2OjFjM2FdIHR5cGUgMCBjbGFzcyAweDAw
MDc4MApbICAgIDQuMTc1NzU3XSBwY2kgMDAwMDowMDoxNi4wOiByZWcgMTA6IFttZW0gMHhmYmYw
NDAwMC0weGZiZjA0MDBmIDY0Yml0XQpbICAgIDQuMTc1OTA4XSBwY2kgMDAwMDowMDoxNi4wOiBQ
TUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDQuMTc1OTEzXSBwY2kgMDAw
MDowMDoxNi4wOiBQTUUjIGRpc2FibGVkClsgICAgNC4xNzU5NzZdIHBjaSAwMDAwOjAwOjFhLjA6
IFs4MDg2OjFjMmRdIHR5cGUgMCBjbGFzcyAweDAwMGMwMwpbICAgIDQuMTc2MDE1XSBwY2kgMDAw
MDowMDoxYS4wOiByZWcgMTA6IFttZW0gMHhmYmYwMzAwMC0weGZiZjAzM2ZmXQpbICAgIDQuMTc2
MTk3XSBwY2kgMDAwMDowMDoxYS4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29s
ZApbICAgIDQuMTc2MjAzXSBwY2kgMDAwMDowMDoxYS4wOiBQTUUjIGRpc2FibGVkClsgICAgNC4x
NzYyNDRdIHBjaSAwMDAwOjAwOjFjLjA6IFs4MDg2OjFjMTBdIHR5cGUgMSBjbGFzcyAweDAwMDYw
NApbICAgIDQuMTc2NDA5XSBwY2kgMDAwMDowMDoxYy4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQw
IEQzaG90IEQzY29sZApbICAgIDQuMTc2NDE1XSBwY2kgMDAwMDowMDoxYy4wOiBQTUUjIGRpc2Fi
bGVkClsgICAgNC4xNzY0NjZdIHBjaSAwMDAwOjAwOjFjLjQ6IFs4MDg2OjFjMThdIHR5cGUgMSBj
bGFzcyAweDAwMDYwNApbICAgIDQuMTc2NjMyXSBwY2kgMDAwMDowMDoxYy40OiBQTUUjIHN1cHBv
cnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDQuMTc2NjM4XSBwY2kgMDAwMDowMDoxYy40
OiBQTUUjIGRpc2FibGVkClsgICAgNC4xNzY2ODVdIHBjaSAwMDAwOjAwOjFjLjU6IFs4MDg2OjFj
MWFdIHR5cGUgMSBjbGFzcyAweDAwMDYwNApbICAgIDQuMTc2ODQ5XSBwY2kgMDAwMDowMDoxYy41
OiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDQuMTc2ODU1XSBwY2kg
MDAwMDowMDoxYy41OiBQTUUjIGRpc2FibGVkClsgICAgNC4xNzY5MDBdIHBjaSAwMDAwOjAwOjFj
LjY6IFs4MDg2OjFjMWNdIHR5cGUgMSBjbGFzcyAweDAwMDYwNApbICAgIDQuMTc3MDY0XSBwY2kg
MDAwMDowMDoxYy42OiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDQu
MTc3MDcwXSBwY2kgMDAwMDowMDoxYy42OiBQTUUjIGRpc2FibGVkClsgICAgNC4xNzcxMTZdIHBj
aSAwMDAwOjAwOjFjLjc6IFs4MDg2OjFjMWVdIHR5cGUgMSBjbGFzcyAweDAwMDYwNApbICAgIDQu
MTc3MjgyXSBwY2kgMDAwMDowMDoxYy43OiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQz
Y29sZApbICAgIDQuMTc3Mjg4XSBwY2kgMDAwMDowMDoxYy43OiBQTUUjIGRpc2FibGVkClsgICAg
NC4xNzczNDBdIHBjaSAwMDAwOjAwOjFkLjA6IFs4MDg2OjFjMjZdIHR5cGUgMCBjbGFzcyAweDAw
MGMwMwpbICAgIDQuMTc3MzgwXSBwY2kgMDAwMDowMDoxZC4wOiByZWcgMTA6IFttZW0gMHhmYmYw
MjAwMC0weGZiZjAyM2ZmXQpbICAgIDQuMTc3NTYxXSBwY2kgMDAwMDowMDoxZC4wOiBQTUUjIHN1
cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDQuMTc3NTY4XSBwY2kgMDAwMDowMDox
ZC4wOiBQTUUjIGRpc2FibGVkClsgICAgNC4xNzc2MDhdIHBjaSAwMDAwOjAwOjFmLjA6IFs4MDg2
OjFjNDRdIHR5cGUgMCBjbGFzcyAweDAwMDYwMQpbICAgIDQuMTc3ODQwXSBwY2kgMDAwMDowMDox
Zi4yOiBbODA4NjoxYzAyXSB0eXBlIDAgY2xhc3MgMHgwMDAxMDYKWyAgICA0LjE3Nzg4MV0gcGNp
IDAwMDA6MDA6MWYuMjogcmVnIDEwOiBbaW8gIDB4ZjBiMC0weGYwYjddClsgICAgNC4xNzc4OTdd
IHBjaSAwMDAwOjAwOjFmLjI6IHJlZyAxNDogW2lvICAweGYwYTAtMHhmMGEzXQpbICAgIDQuMTc3
OTEyXSBwY2kgMDAwMDowMDoxZi4yOiByZWcgMTg6IFtpbyAgMHhmMDkwLTB4ZjA5N10KWyAgICA0
LjE3NzkyOF0gcGNpIDAwMDA6MDA6MWYuMjogcmVnIDFjOiBbaW8gIDB4ZjA4MC0weGYwODNdClsg
ICAgNC4xNzc5NDNdIHBjaSAwMDAwOjAwOjFmLjI6IHJlZyAyMDogW2lvICAweGYwNjAtMHhmMDdm
XQpbICAgIDQuMTc3OTU5XSBwY2kgMDAwMDowMDoxZi4yOiByZWcgMjQ6IFttZW0gMHhmYmYwMTAw
MC0weGZiZjAxN2ZmXQpbICAgIDQuMTc4MDYyXSBwY2kgMDAwMDowMDoxZi4yOiBQTUUjIHN1cHBv
cnRlZCBmcm9tIEQzaG90ClsgICAgNC4xNzgwNjddIHBjaSAwMDAwOjAwOjFmLjI6IFBNRSMgZGlz
YWJsZWQKWyAgICA0LjE3ODA5OV0gcGNpIDAwMDA6MDA6MWYuMzogWzgwODY6MWMyMl0gdHlwZSAw
IGNsYXNzIDB4MDAwYzA1ClsgICAgNC4xNzgxMzBdIHBjaSAwMDAwOjAwOjFmLjM6IHJlZyAxMDog
W21lbSAweGZiZjAwMDAwLTB4ZmJmMDAwZmYgNjRiaXRdClsgICAgNC4xNzgxNzVdIHBjaSAwMDAw
OjAwOjFmLjM6IHJlZyAyMDogW2lvICAweGYwNDAtMHhmMDVmXQpbICAgIDQuMTc4MjkyXSBwY2kg
MDAwMDowMTowMC4wOiBbMTAwMjo2NzE5XSB0eXBlIDAgY2xhc3MgMHgwMDAzMDAKWyAgICA0LjE3
ODMxNF0gcGNpIDAwMDA6MDE6MDAuMDogcmVnIDEwOiBbbWVtIDB4YzAwMDAwMDAtMHhjZmZmZmZm
ZiA2NGJpdCBwcmVmXQpbICAgIDQuMTc4MzMxXSBwY2kgMDAwMDowMTowMC4wOiByZWcgMTg6IFtt
ZW0gMHhmYmUyMDAwMC0weGZiZTNmZmZmIDY0Yml0XQpbICAgIDQuMTc4MzQzXSBwY2kgMDAwMDow
MTowMC4wOiByZWcgMjA6IFtpbyAgMHhlMDAwLTB4ZTBmZl0KWyAgICA0LjE3ODM2NV0gcGNpIDAw
MDA6MDE6MDAuMDogcmVnIDMwOiBbbWVtIDB4ZmJlMDAwMDAtMHhmYmUxZmZmZiBwcmVmXQpbICAg
IDQuMTc4NDIxXSBwY2kgMDAwMDowMTowMC4wOiBzdXBwb3J0cyBEMSBEMgpbICAgIDQuMTc4NDU1
XSBwY2kgMDAwMDowMTowMC4xOiBbMTAwMjphYTgwXSB0eXBlIDAgY2xhc3MgMHgwMDA0MDMKWyAg
ICA0LjE3ODQ3Nl0gcGNpIDAwMDA6MDE6MDAuMTogcmVnIDEwOiBbbWVtIDB4ZmJlNDAwMDAtMHhm
YmU0M2ZmZiA2NGJpdF0KWyAgICA0LjE3ODU4M10gcGNpIDAwMDA6MDE6MDAuMTogc3VwcG9ydHMg
RDEgRDIKWyAgICA0LjE4NTM5MV0gcGNpIDAwMDA6MDA6MDEuMDogUENJIGJyaWRnZSB0byBbYnVz
IDAxLTAxXQpbICAgIDQuMTg1NDQ1XSBwY2kgMDAwMDowMDowMS4wOiAgIGJyaWRnZSB3aW5kb3cg
W2lvICAweGUwMDAtMHhlZmZmXQpbICAgIDQuMTg1NDQ5XSBwY2kgMDAwMDowMDowMS4wOiAgIGJy
aWRnZSB3aW5kb3cgW21lbSAweGZiZTAwMDAwLTB4ZmJlZmZmZmZdClsgICAgNC4xODU0NTVdIHBj
aSAwMDAwOjAwOjAxLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzAwMDAwMDAtMHhjZmZmZmZm
ZiA2NGJpdCBwcmVmXQpbICAgIDQuMTg1NTgxXSBwY2kgMDAwMDowMjowMC4wOiBbMTBiNTo4MTEy
XSB0eXBlIDEgY2xhc3MgMHgwMDA2MDQKWyAgICA0LjE4NTgzMV0gcGNpIDAwMDA6MDI6MDAuMDog
ZGlzYWJsaW5nIEFTUE0gb24gcHJlLTEuMSBQQ0llIGRldmljZS4gIFlvdSBjYW4gZW5hYmxlIGl0
IHdpdGggJ3BjaWVfYXNwbT1mb3JjZScKWyAgICA0LjE4NTg5N10gcGNpIDAwMDA6MDA6MWMuMDog
UENJIGJyaWRnZSB0byBbYnVzIDAyLTAzXQpbICAgIDQuMTg1OTMzXSBwY2kgMDAwMDowMDoxYy4w
OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGQwMDAtMHhkZmZmXQpbICAgIDQuMTg2MDkzXSBwY2kg
MDAwMDowMzowNC4wOiBbMTNmNjo4Nzg4XSB0eXBlIDAgY2xhc3MgMHgwMDA0MDEKWyAgICA0LjE4
NjE0NF0gcGNpIDAwMDA6MDM6MDQuMDogcmVnIDEwOiBbaW8gIDB4ZDAwMC0weGQwZmZdClsgICAg
NC4xODYzODldIHBjaSAwMDAwOjAzOjA0LjA6IHN1cHBvcnRzIEQxIEQyClsgICAgNC4xODY1MDZd
IHBjaSAwMDAwOjAyOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMy0wM10KWyAgICA0LjE4NjU0
NV0gcGNpIDAwMDA6MDI6MDAuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHhkMDAwLTB4ZGZmZl0K
WyAgICA0LjE4NjcwMF0gcGNpIDAwMDA6MDQ6MDAuMDogWzFiNGI6OTEyMF0gdHlwZSAwIGNsYXNz
IDB4MDAwMTA2ClsgICAgNC4xODY3MjhdIHBjaSAwMDAwOjA0OjAwLjA6IHJlZyAxMDogW2lvICAw
eGMwNDAtMHhjMDQ3XQpbICAgIDQuMTg2NzQ4XSBwY2kgMDAwMDowNDowMC4wOiByZWcgMTQ6IFtp
byAgMHhjMDMwLTB4YzAzM10KWyAgICA0LjE4Njc2OF0gcGNpIDAwMDA6MDQ6MDAuMDogcmVnIDE4
OiBbaW8gIDB4YzAyMC0weGMwMjddClsgICAgNC4xODY3ODldIHBjaSAwMDAwOjA0OjAwLjA6IHJl
ZyAxYzogW2lvICAweGMwMTAtMHhjMDEzXQpbICAgIDQuMTg2ODA5XSBwY2kgMDAwMDowNDowMC4w
OiByZWcgMjA6IFtpbyAgMHhjMDAwLTB4YzAwZl0KWyAgICA0LjE4NjgzMF0gcGNpIDAwMDA6MDQ6
MDAuMDogcmVnIDI0OiBbbWVtIDB4ZmJkMTAwMDAtMHhmYmQxMDdmZl0KWyAgICA0LjE4Njg1MV0g
cGNpIDAwMDA6MDQ6MDAuMDogcmVnIDMwOiBbbWVtIDB4ZmJkMDAwMDAtMHhmYmQwZmZmZiBwcmVm
XQpbICAgIDQuMTg2OTUwXSBwY2kgMDAwMDowNDowMC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQz
aG90ClsgICAgNC4xODY5NTddIHBjaSAwMDAwOjA0OjAwLjA6IFBNRSMgZGlzYWJsZWQKWyAgICA0
LjE4NzAyNF0gcGNpIDAwMDA6MDA6MWMuNDogUENJIGJyaWRnZSB0byBbYnVzIDA0LTA0XQpbICAg
IDQuMTg3MDYwXSBwY2kgMDAwMDowMDoxYy40OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGMwMDAt
MHhjZmZmXQpbICAgIDQuMTg3MDY2XSBwY2kgMDAwMDowMDoxYy40OiAgIGJyaWRnZSB3aW5kb3cg
W21lbSAweGZiZDAwMDAwLTB4ZmJkZmZmZmZdClsgICAgNC4xODcxOThdIHBjaSAwMDAwOjA1OjAw
LjA6IFsxYjZmOjcwMjNdIHR5cGUgMCBjbGFzcyAweDAwMGMwMwpbICAgIDQuMTg3MjQwXSBwY2kg
MDAwMDowNTowMC4wOiByZWcgMTA6IFttZW0gMHhmYmMwMDAwMC0weGZiYzA3ZmZmIDY0Yml0XQpb
ICAgIDQuMTg3NDQ3XSBwY2kgMDAwMDowNTowMC4wOiBzdXBwb3J0cyBEMSBEMgpbICAgIDQuMTg3
NDQ5XSBwY2kgMDAwMDowNTowMC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQxIEQyIEQzaG90
IEQzY29sZApbICAgIDQuMTg3NDU2XSBwY2kgMDAwMDowNTowMC4wOiBQTUUjIGRpc2FibGVkClsg
ICAgNC4xODc1MzVdIHBjaSAwMDAwOjAwOjFjLjU6IFBDSSBicmlkZ2UgdG8gW2J1cyAwNS0wNV0K
WyAgICA0LjE4NzU3Nl0gcGNpIDAwMDA6MDA6MWMuNTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhm
YmMwMDAwMC0weGZiY2ZmZmZmXQpbICAgIDQuMTg3NzA5XSBwY2kgMDAwMDowNjowMC4wOiBbMWI2
Zjo3MDIzXSB0eXBlIDAgY2xhc3MgMHgwMDBjMDMKWyAgICA0LjE4Nzc1MF0gcGNpIDAwMDA6MDY6
MDAuMDogcmVnIDEwOiBbbWVtIDB4ZmJiMDAwMDAtMHhmYmIwN2ZmZiA2NGJpdF0KWyAgICA0LjE4
Nzk1Nl0gcGNpIDAwMDA6MDY6MDAuMDogc3VwcG9ydHMgRDEgRDIKWyAgICA0LjE4Nzk1OF0gcGNp
IDAwMDA6MDY6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEMSBEMiBEM2hvdCBEM2NvbGQK
WyAgICA0LjE4Nzk2NV0gcGNpIDAwMDA6MDY6MDAuMDogUE1FIyBkaXNhYmxlZApbICAgIDQuMTg4
MDQ0XSBwY2kgMDAwMDowMDoxYy42OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDYtMDZdClsgICAgNC4x
ODgwODRdIHBjaSAwMDAwOjAwOjFjLjY6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmJiMDAwMDAt
MHhmYmJmZmZmZl0KWyAgICA0LjE4ODIxNV0gcGNpIDAwMDA6MDc6MDAuMDogWzEwYjU6ODYwOF0g
dHlwZSAxIGNsYXNzIDB4MDAwNjA0ClsgICAgNC4xODgyNDNdIHBjaSAwMDAwOjA3OjAwLjA6IHJl
ZyAxMDogW21lbSAweGZiYTAwMDAwLTB4ZmJhMWZmZmZdClsgICAgNC4xODg0MjJdIHBjaSAwMDAw
OjA3OjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgNC4xODg0
MjldIHBjaSAwMDAwOjA3OjAwLjA6IFBNRSMgZGlzYWJsZWQKWyAgICA0LjE4ODUyOV0gcGNpIDAw
MDA6MDA6MWMuNzogUENJIGJyaWRnZSB0byBbYnVzIDA3LTEwXQpbICAgIDQuMTg4NTY1XSBwY2kg
MDAwMDowMDoxYy43OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGIwMDAtMHhiZmZmXQpbICAgIDQu
MTg4NTcwXSBwY2kgMDAwMDowMDoxYy43OiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZiODAwMDAw
LTB4ZmJhZmZmZmZdClsgICAgNC4xODg1ODFdIHBjaSAwMDAwOjAwOjFjLjc6ICAgYnJpZGdlIHdp
bmRvdyBbbWVtIDB4ZDAwMDAwMDAtMHhkMDBmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuMTg4NzM4
XSBwY2kgMDAwMDowODowMS4wOiBbMTBiNTo4NjA4XSB0eXBlIDEgY2xhc3MgMHgwMDA2MDQKWyAg
ICA0LjE4ODk1MF0gcGNpIDAwMDA6MDg6MDEuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hv
dCBEM2NvbGQKWyAgICA0LjE4ODk1N10gcGNpIDAwMDA6MDg6MDEuMDogUE1FIyBkaXNhYmxlZApb
ICAgIDQuMTg5MDU0XSBwY2kgMDAwMDowODowNC4wOiBbMTBiNTo4NjA4XSB0eXBlIDEgY2xhc3Mg
MHgwMDA2MDQKWyAgICA0LjE4OTI2NF0gcGNpIDAwMDA6MDg6MDQuMDogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICA0LjE4OTI3MV0gcGNpIDAwMDA6MDg6MDQuMDogUE1F
IyBkaXNhYmxlZApbICAgIDQuMTg5MzYzXSBwY2kgMDAwMDowODowNS4wOiBbMTBiNTo4NjA4XSB0
eXBlIDEgY2xhc3MgMHgwMDA2MDQKWyAgICA0LjE4OTU3NF0gcGNpIDAwMDA6MDg6MDUuMDogUE1F
IyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICA0LjE4OTU4MV0gcGNpIDAwMDA6
MDg6MDUuMDogUE1FIyBkaXNhYmxlZApbICAgIDQuMTg5Njc4XSBwY2kgMDAwMDowODowNi4wOiBb
MTBiNTo4NjA4XSB0eXBlIDEgY2xhc3MgMHgwMDA2MDQKWyAgICA0LjE4OTg4N10gcGNpIDAwMDA6
MDg6MDYuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICA0LjE4OTg5
NV0gcGNpIDAwMDA6MDg6MDYuMDogUE1FIyBkaXNhYmxlZApbICAgIDQuMTg5OTk0XSBwY2kgMDAw
MDowODowNy4wOiBbMTBiNTo4NjA4XSB0eXBlIDEgY2xhc3MgMHgwMDA2MDQKWyAgICA0LjE5MDIw
M10gcGNpIDAwMDA6MDg6MDcuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQK
WyAgICA0LjE5MDIxMF0gcGNpIDAwMDA6MDg6MDcuMDogUE1FIyBkaXNhYmxlZApbICAgIDQuMTkw
MzExXSBwY2kgMDAwMDowODowOC4wOiBbMTBiNTo4NjA4XSB0eXBlIDEgY2xhc3MgMHgwMDA2MDQK
WyAgICA0LjE5MDUyMF0gcGNpIDAwMDA6MDg6MDguMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBE
M2hvdCBEM2NvbGQKWyAgICA0LjE5MDUyN10gcGNpIDAwMDA6MDg6MDguMDogUE1FIyBkaXNhYmxl
ZApbICAgIDQuMTkwNjMyXSBwY2kgMDAwMDowODowOS4wOiBbMTBiNTo4NjA4XSB0eXBlIDEgY2xh
c3MgMHgwMDA2MDQKWyAgICA0LjE5MDg0MV0gcGNpIDAwMDA6MDg6MDkuMDogUE1FIyBzdXBwb3J0
ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICA0LjE5MDg0OV0gcGNpIDAwMDA6MDg6MDkuMDog
UE1FIyBkaXNhYmxlZApbICAgIDQuMTkwOTgyXSBwY2kgMDAwMDowNzowMC4wOiBQQ0kgYnJpZGdl
IHRvIFtidXMgMDgtMTBdClsgICAgNC4xOTEwMjVdIHBjaSAwMDAwOjA3OjAwLjA6ICAgYnJpZGdl
IHdpbmRvdyBbaW8gIDB4YjAwMC0weGJmZmZdClsgICAgNC4xOTEwMzJdIHBjaSAwMDAwOjA3OjAw
LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmI4MDAwMDAtMHhmYjlmZmZmZl0KWyAgICA0LjE5
MTA0NV0gcGNpIDAwMDA6MDc6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhkMDAwMDAwMC0w
eGQwMGZmZmZmIDY0Yml0IHByZWZdClsgICAgNC4xOTExNjddIHBjaSAwMDAwOjA4OjAxLjA6IFBD
SSBicmlkZ2UgdG8gW2J1cyAwOS0wOV0KWyAgICA0LjE5MTM5M10gcGNpIDAwMDA6MGE6MDAuMDog
WzFiMjE6MTA4MF0gdHlwZSAxIGNsYXNzIDB4MDAwNjA0ClsgICAgNC4xOTE2NTldIHBjaSAwMDAw
OjBhOjAwLjA6IHN1cHBvcnRzIEQxIEQyClsgICAgNC4xOTE2NjBdIHBjaSAwMDAwOjBhOjAwLjA6
IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNob3QgRDNjb2xkClsgICAgNC4xOTE2Njld
IHBjaSAwMDAwOjBhOjAwLjA6IFBNRSMgZGlzYWJsZWQKWyAgICA0LjE5MTc2MF0gcGNpIDAwMDA6
MDg6MDQuMDogUENJIGJyaWRnZSB0byBbYnVzIDBhLTBiXQpbICAgIDQuMTkyMDkzXSBwY2kgMDAw
MDowYTowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGItMGJdClsgICAgNC4xOTIzNDFdIHBjaSAw
MDAwOjBjOjAwLjA6IFsxMTA2OjM0MDNdIHR5cGUgMCBjbGFzcyAweDAwMGMwMApbICAgIDQuMTky
Mzg5XSBwY2kgMDAwMDowYzowMC4wOiByZWcgMTA6IFttZW0gMHhmYjkwMDAwMC0weGZiOTAwN2Zm
IDY0Yml0XQpbICAgIDQuMTkyNDE0XSBwY2kgMDAwMDowYzowMC4wOiByZWcgMTg6IFtpbyAgMHhi
MDAwLTB4YjBmZl0KWyAgICA0LjE5MjYzMF0gcGNpIDAwMDA6MGM6MDAuMDogc3VwcG9ydHMgRDIK
WyAgICA0LjE5MjYzMl0gcGNpIDAwMDA6MGM6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMiBE
M2hvdCBEM2NvbGQKWyAgICA0LjE5MjY0MF0gcGNpIDAwMDA6MGM6MDAuMDogUE1FIyBkaXNhYmxl
ZApbICAgIDQuMTkyNzM0XSBwY2kgMDAwMDowODowNS4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGMt
MGNdClsgICAgNC4xOTI3NzZdIHBjaSAwMDAwOjA4OjA1LjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8g
IDB4YjAwMC0weGJmZmZdClsgICAgNC4xOTI3ODNdIHBjaSAwMDAwOjA4OjA1LjA6ICAgYnJpZGdl
IHdpbmRvdyBbbWVtIDB4ZmI5MDAwMDAtMHhmYjlmZmZmZl0KWyAgICA0LjE5Mjk3MF0gcGNpIDAw
MDA6MGQ6MDAuMDogWzE0ZTQ6MTZiMV0gdHlwZSAwIGNsYXNzIDB4MDAwMjAwClsgICAgNC4xOTMw
MjBdIHBjaSAwMDAwOjBkOjAwLjA6IHJlZyAxMDogW21lbSAweGQwMDEwMDAwLTB4ZDAwMWZmZmYg
NjRiaXQgcHJlZl0KWyAgICA0LjE5MzA2MF0gcGNpIDAwMDA6MGQ6MDAuMDogcmVnIDE4OiBbbWVt
IDB4ZDAwMDAwMDAtMHhkMDAwZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuMTkzMTM1XSBwY2kgMDAw
MDowZDowMC4wOiByZWcgMzA6IFttZW0gMHhmYjgwMDAwMC0weGZiODAwN2ZmIHByZWZdClsgICAg
NC4xOTMyODFdIHBjaSAwMDAwOjBkOjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3Qg
RDNjb2xkClsgICAgNC4xOTMyODldIHBjaSAwMDAwOjBkOjAwLjA6IFBNRSMgZGlzYWJsZWQKWyAg
ICA0LjE5MzQxMF0gcGNpIDAwMDA6MDg6MDYuMDogUENJIGJyaWRnZSB0byBbYnVzIDBkLTBkXQpb
ICAgIDQuMTkzNDU4XSBwY2kgMDAwMDowODowNi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZi
ODAwMDAwLTB4ZmI4ZmZmZmZdClsgICAgNC4xOTM0NzFdIHBjaSAwMDAwOjA4OjA2LjA6ICAgYnJp
ZGdlIHdpbmRvdyBbbWVtIDB4ZDAwMDAwMDAtMHhkMDBmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQu
MTkzNTk1XSBwY2kgMDAwMDowODowNy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGUtMGVdClsgICAg
NC4xOTM3NzZdIHBjaSAwMDAwOjA4OjA4LjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwZi0wZl0KWyAg
ICA0LjE5Mzk2Ml0gcGNpIDAwMDA6MDg6MDkuMDogUENJIGJyaWRnZSB0byBbYnVzIDEwLTEwXQpb
ICAgIDQuMTk0MTY5XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IFJvdXRpbmcgVGFibGUgW1xfU0JfLlBD
STAuX1BSVF0KWyAgICA0LjE5NDM1Ml0gQUNQSTogUENJIEludGVycnVwdCBSb3V0aW5nIFRhYmxl
IFtcX1NCXy5QQ0kwLlBFWDAuX1BSVF0KWyAgICA0LjE5NDQwNF0gQUNQSTogUENJIEludGVycnVw
dCBSb3V0aW5nIFRhYmxlIFtcX1NCXy5QQ0kwLlBFWDQuX1BSVF0KWyAgICA0LjE5NDQ0N10gQUNQ
STogUENJIEludGVycnVwdCBSb3V0aW5nIFRhYmxlIFtcX1NCXy5QQ0kwLlBFWDUuX1BSVF0KWyAg
ICA0LjE5NDQ5MF0gQUNQSTogUENJIEludGVycnVwdCBSb3V0aW5nIFRhYmxlIFtcX1NCXy5QQ0kw
LlBFWDYuX1BSVF0KWyAgICA0LjE5NDUzM10gQUNQSTogUENJIEludGVycnVwdCBSb3V0aW5nIFRh
YmxlIFtcX1NCXy5QQ0kwLlBFWDcuX1BSVF0KWyAgICA0LjE5NDU3OV0gQUNQSTogUENJIEludGVy
cnVwdCBSb3V0aW5nIFRhYmxlIFtcX1NCXy5QQ0kwLlBFWDcuQlIyMS5fUFJUXQpbICAgIDQuMTk0
NzY5XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IFJvdXRpbmcgVGFibGUgW1xfU0JfLlBDSTAuUEVYNy5C
UjIxLkJSMzEuX1BSVF0KWyAgICA0LjE5NDgxOF0gQUNQSTogUENJIEludGVycnVwdCBSb3V0aW5n
IFRhYmxlIFtcX1NCXy5QQ0kwLlBFWDcuQlIyMS5CUjM0Ll9QUlRdClsgICAgNC4xOTQ4NjhdIEFD
UEk6IFBDSSBJbnRlcnJ1cHQgUm91dGluZyBUYWJsZSBbXF9TQl8uUENJMC5QRVg3LkJSMjEuQlIz
NC5CUjIyLl9QUlRdClsgICAgNC4xOTQ5NDBdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgUm91dGluZyBU
YWJsZSBbXF9TQl8uUENJMC5QRVg3LkJSMjEuQlIzNS5fUFJUXQpbICAgIDQuMTk0OTg4XSBBQ1BJ
OiBQQ0kgSW50ZXJydXB0IFJvdXRpbmcgVGFibGUgW1xfU0JfLlBDSTAuUEVYNy5CUjIxLkJSMzYu
X1BSVF0KWyAgICA0LjE5NTAzNl0gQUNQSTogUENJIEludGVycnVwdCBSb3V0aW5nIFRhYmxlIFtc
X1NCXy5QQ0kwLlBFWDcuQlIyMS5CUjM3Ll9QUlRdClsgICAgNC4xOTUwODRdIEFDUEk6IFBDSSBJ
bnRlcnJ1cHQgUm91dGluZyBUYWJsZSBbXF9TQl8uUENJMC5QRVg3LkJSMjEuQlIzOC5fUFJUXQpb
ICAgIDQuMTk1MTMyXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IFJvdXRpbmcgVGFibGUgW1xfU0JfLlBD
STAuUEVYNy5CUjIxLkJSMzkuX1BSVF0KWyAgICA0LjE5NTE3NV0gQUNQSTogUENJIEludGVycnVw
dCBSb3V0aW5nIFRhYmxlIFtcX1NCXy5QQ0kwLlAwUDEuX1BSVF0KWyAgICA0LjE5NTM2OV0gIHBj
aTAwMDA6MDA6IFJlcXVlc3RpbmcgQUNQSSBfT1NDIGNvbnRyb2wgKDB4MWQpClsgICAgNC4xOTU3
OTRdICBwY2kwMDAwOjAwOiBBQ1BJIF9PU0MgY29udHJvbCAoMHgxYykgZ3JhbnRlZApbICAgIDQu
MjAyNjkwXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0FdIChJUlFzIDMgNCA1IDYgNyAx
MCAqMTEgMTIgMTQgMTUpClsgICAgNC4yMDI5MjZdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBb
TE5LQl0gKElSUXMgMyA0IDUgNiA3ICoxMCAxMSAxMiAxNCAxNSkKWyAgICA0LjIwMzE1OF0gQUNQ
STogUENJIEludGVycnVwdCBMaW5rIFtMTktDXSAoSVJRcyAzIDQgKjUgNiAxMCAxMSAxMiAxNCAx
NSkKWyAgICA0LjIwMzM3Nl0gQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTktEXSAoSVJRcyAq
MyA0IDUgNiAxMCAxMSAxMiAxNCAxNSkKWyAgICA0LjIwMzU5NV0gQUNQSTogUENJIEludGVycnVw
dCBMaW5rIFtMTktFXSAoSVJRcyAzIDQgNSA2IDcgMTAgMTEgMTIgMTQgMTUpICowClsgICAgNC4y
MDM4NDhdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LRl0gKElSUXMgMyA0IDUgNiA3IDEw
IDExIDEyIDE0IDE1KSAqMApbICAgIDQuMjA0MTAyXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsg
W0xOS0ddIChJUlFzIDMgNCA1IDYgNyAxMCAxMSAxMiAxNCAxNSkgKjAKWyAgICA0LjIwNDM1NV0g
QUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTktIXSAoSVJRcyAzIDQgNSA2ICo3IDEwIDExIDEy
IDE0IDE1KQpbICAgIDQuMjA0NTY0XSB4ZW4vYmFsbG9vbjogSW5pdGlhbGlzaW5nIGJhbGxvb24g
ZHJpdmVyLgpbICAgIDQuMjA0NjExXSB4ZW4tYmFsbG9vbjogSW5pdGlhbGlzaW5nIGJhbGxvb24g
ZHJpdmVyLgpbICAgIDQuMjA0NzA2XSB2Z2FhcmI6IGRldmljZSBhZGRlZDogUENJOjAwMDA6MDA6
MDIuMCxkZWNvZGVzPWlvK21lbSxvd25zPWlvK21lbSxsb2Nrcz1ub25lClsgICAgNC4yMDQ3NjJd
IHZnYWFyYjogZGV2aWNlIGFkZGVkOiBQQ0k6MDAwMDowMTowMC4wLGRlY29kZXM9aW8rbWVtLG93
bnM9bm9uZSxsb2Nrcz1ub25lClsgICAgNC4yMDQ4MTVdIHZnYWFyYjogbG9hZGVkClsgICAgNC4y
MDQ4NDJdIHZnYWFyYjogYnJpZGdlIGNvbnRyb2wgcG9zc2libGUgMDAwMDowMTowMC4wClsgICAg
NC4yMDQ4NzNdIHZnYWFyYjogbm8gYnJpZGdlIGNvbnRyb2wgcG9zc2libGUgMDAwMDowMDowMi4w
ClsgICAgNC4yMDQ5MzVdIFBDSTogVXNpbmcgQUNQSSBmb3IgSVJRIHJvdXRpbmcKWyAgICA0LjIx
OTQ5MF0gUENJOiBwY2lfY2FjaGVfbGluZV9zaXplIHNldCB0byA2NCBieXRlcwpbICAgIDQuMjE5
Njc0XSByZXNlcnZlIFJBTSBidWZmZXI6IDAwMDAwMDAwMDAwOWQwMDAgLSAwMDAwMDAwMDAwMDlm
ZmZmIApbICAgIDQuMjE5Njc2XSByZXNlcnZlIFJBTSBidWZmZXI6IDAwMDAwMDAwNmVkNmQwMDAg
LSAwMDAwMDAwMDZmZmZmZmZmIApbICAgIDQuMjE5NjgwXSByZXNlcnZlIFJBTSBidWZmZXI6IDAw
MDAwMDAwNmVkZjMwMDAgLSAwMDAwMDAwMDZmZmZmZmZmIApbICAgIDQuMjE5NjgzXSByZXNlcnZl
IFJBTSBidWZmZXI6IDAwMDAwMDAwNmYwMDAwMDAgLSAwMDAwMDAwMDZmZmZmZmZmIApbICAgIDQu
MjE5Nzg0XSBTd2l0Y2hpbmcgdG8gY2xvY2tzb3VyY2UgeGVuClsgICAgNC4yMjEzNDRdIHBucDog
UG5QIEFDUEkgaW5pdApbICAgIDQuMjIxMzgyXSBBQ1BJOiBidXMgdHlwZSBwbnAgcmVnaXN0ZXJl
ZApbICAgIDQuMjIxNjI5XSBwbnAgMDA6MDA6IFtidXMgMDAtZmZdClsgICAgNC4yMjE2MzFdIHBu
cCAwMDowMDogW2lvICAweDBjZjgtMHgwY2ZmXQpbICAgIDQuMjIxNjMzXSBwbnAgMDA6MDA6IFtp
byAgMHgwMDAwLTB4MDNhZiB3aW5kb3ddClsgICAgNC4yMjE2MzVdIHBucCAwMDowMDogW2lvICAw
eDAzZTAtMHgwY2Y3IHdpbmRvd10KWyAgICA0LjIyMTYzNl0gcG5wIDAwOjAwOiBbaW8gIDB4MDNi
MC0weDAzZGYgd2luZG93XQpbICAgIDQuMjIxNjM4XSBwbnAgMDA6MDA6IFtpbyAgMHgwZDAwLTB4
ZmZmZiB3aW5kb3ddClsgICAgNC4yMjE2NDBdIHBucCAwMDowMDogW21lbSAweDAwMGEwMDAwLTB4
MDAwYmZmZmYgd2luZG93XQpbICAgIDQuMjIxNjQxXSBwbnAgMDA6MDA6IFttZW0gMHgwMDBjMDAw
MC0weDAwMGRmZmZmIHdpbmRvd10KWyAgICA0LjIyMTY0M10gcG5wIDAwOjAwOiBbbWVtIDB4N2Zh
MDAwMDAtMHhmZmZmZmZmZiB3aW5kb3ddClsgICAgNC4yMjE2NDVdIHBucCAwMDowMDogW21lbSAw
eDAwMDAwMDAwIHdpbmRvd10KWyAgICA0LjIyMTY4N10gcG5wIDAwOjAwOiBQbHVnIGFuZCBQbGF5
IEFDUEkgZGV2aWNlLCBJRHMgUE5QMGEwOCBQTlAwYTAzIChhY3RpdmUpClsgICAgNC4yMjE3ODZd
IHBucCAwMDowMTogW21lbSAweGZlZDEwMDAwLTB4ZmVkMTlmZmZdClsgICAgNC4yMjE3ODddIHBu
cCAwMDowMTogW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZmZmZdClsgICAgNC4yMjE3ODldIHBucCAw
MDowMTogW21lbSAweGZlZDkwMDAwLTB4ZmVkOTNmZmZdClsgICAgNC4yMjE3OTFdIHBucCAwMDow
MTogW21lbSAweGZlZDIwMDAwLTB4ZmVkM2ZmZmZdClsgICAgNC4yMjE3OTJdIHBucCAwMDowMTog
W21lbSAweGZlZTAwMDAwLTB4ZmVlMGZmZmZdClsgICAgNC4yMjE4MzNdIHN5c3RlbSAwMDowMTog
W21lbSAweGZlZDEwMDAwLTB4ZmVkMTlmZmZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yMjE4
NjhdIHN5c3RlbSAwMDowMTogW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZmZmZdIGhhcyBiZWVuIHJl
c2VydmVkClsgICAgNC4yMjE5MDJdIHN5c3RlbSAwMDowMTogW21lbSAweGZlZDkwMDAwLTB4ZmVk
OTNmZmZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yMjE5MzddIHN5c3RlbSAwMDowMTogW21l
bSAweGZlZDIwMDAwLTB4ZmVkM2ZmZmZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yMjE5NzFd
IHN5c3RlbSAwMDowMTogW21lbSAweGZlZTAwMDAwLTB4ZmVlMGZmZmZdIGNvdWxkIG5vdCBiZSBy
ZXNlcnZlZApbICAgIDQuMjIyMDA2XSBzeXN0ZW0gMDA6MDE6IFBsdWcgYW5kIFBsYXkgQUNQSSBk
ZXZpY2UsIElEcyBQTlAwYzAxIChhY3RpdmUpClsgICAgNC4yMjIwOTBdIHBucCAwMDowMjogW2lv
ICAweDAwMDAtMHhmZmZmZmZmZmZmZmZmZmZmIGRpc2FibGVkXQpbICAgIDQuMjIyMDkyXSBwbnAg
MDA6MDI6IFtpbyAgMHgwMjkwLTB4MDI5Zl0KWyAgICA0LjIyMjA5M10gcG5wIDAwOjAyOiBbaW8g
IDB4MDAwMC0weGZmZmZmZmZmZmZmZmZmZmYgZGlzYWJsZWRdClsgICAgNC4yMjIxMzFdIHN5c3Rl
bSAwMDowMjogW2lvICAweDAyOTAtMHgwMjlmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMjIy
MTY1XSBzeXN0ZW0gMDA6MDI6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAwYzAy
IChhY3RpdmUpClsgICAgNC4yMjI2NDVdIHBucCAwMDowMzogW2RtYSA0XQpbICAgIDQuMjIyNjQ3
XSBwbnAgMDA6MDM6IFtpbyAgMHgwMDAwLTB4MDAwZl0KWyAgICA0LjIyMjY0OV0gcG5wIDAwOjAz
OiBbaW8gIDB4MDA4MS0weDAwODNdClsgICAgNC4yMjI2NTFdIHBucCAwMDowMzogW2lvICAweDAw
ODddClsgICAgNC4yMjI2NTNdIHBucCAwMDowMzogW2lvICAweDAwODktMHgwMDhiXQpbICAgIDQu
MjIyNjU0XSBwbnAgMDA6MDM6IFtpbyAgMHgwMDhmXQpbICAgIDQuMjIyNjU1XSBwbnAgMDA6MDM6
IFtpbyAgMHgwMGMwLTB4MDBkZl0KWyAgICA0LjIyMjY3N10gcG5wIDAwOjAzOiBQbHVnIGFuZCBQ
bGF5IEFDUEkgZGV2aWNlLCBJRHMgUE5QMDIwMCAoYWN0aXZlKQpbICAgIDQuMjIyNjg4XSBwbnAg
MDA6MDQ6IFtpbyAgMHgwMDcwLTB4MDA3MV0KWyAgICA0LjIyMjY5MF0geGVuOiByZWdpc3Rlcmlu
ZyBnc2kgOCB0cmlnZ2VyaW5nIDEgcG9sYXJpdHkgMApbICAgIDQuMjIyNjkzXSB4ZW5fbWFwX3Bp
cnFfZ3NpOiByZXR1cm5pbmcgaXJxIDggZm9yIGdzaSA4ClsgICAgNC4yMjI3MjVdIHhlbjogLS0+
IHBpcnE9OCAtPiBpcnE9OCAoZ3NpPTgpClsgICAgNC4yMjI3NDNdIHBucCAwMDowNDogW2lycSA4
XQpbICAgIDQuMjIyNzY0XSBwbnAgMDA6MDQ6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElE
cyBQTlAwYjAwIChhY3RpdmUpClsgICAgNC4yMjI3NzNdIHBucCAwMDowNTogW2lvICAweDAwNjFd
ClsgICAgNC4yMjI3OTNdIHBucCAwMDowNTogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURz
IFBOUDA4MDAgKGFjdGl2ZSkKWyAgICA0LjIyMjgxOV0gcG5wIDAwOjA2OiBbaW8gIDB4MDAxMC0w
eDAwMWZdClsgICAgNC4yMjI4MjFdIHBucCAwMDowNjogW2lvICAweDAwMjItMHgwMDNmXQpbICAg
IDQuMjIyODIyXSBwbnAgMDA6MDY6IFtpbyAgMHgwMDQ0LTB4MDA1Zl0KWyAgICA0LjIyMjgyNF0g
cG5wIDAwOjA2OiBbaW8gIDB4MDA2Mi0weDAwNjNdClsgICAgNC4yMjI4MjVdIHBucCAwMDowNjog
W2lvICAweDAwNjUtMHgwMDZmXQpbICAgIDQuMjIyODI3XSBwbnAgMDA6MDY6IFtpbyAgMHgwMDcy
LTB4MDA3Zl0KWyAgICA0LjIyMjgyOF0gcG5wIDAwOjA2OiBbaW8gIDB4MDA4MF0KWyAgICA0LjIy
MjgzMF0gcG5wIDAwOjA2OiBbaW8gIDB4MDA4NC0weDAwODZdClsgICAgNC4yMjI4MzFdIHBucCAw
MDowNjogW2lvICAweDAwODhdClsgICAgNC4yMjI4MzNdIHBucCAwMDowNjogW2lvICAweDAwOGMt
MHgwMDhlXQpbICAgIDQuMjIyODM0XSBwbnAgMDA6MDY6IFtpbyAgMHgwMDkwLTB4MDA5Zl0KWyAg
ICA0LjIyMjgzNV0gcG5wIDAwOjA2OiBbaW8gIDB4MDBhMi0weDAwYmZdClsgICAgNC4yMjI4Mzdd
IHBucCAwMDowNjogW2lvICAweDAwZTAtMHgwMGVmXQpbICAgIDQuMjIyODM4XSBwbnAgMDA6MDY6
IFtpbyAgMHgwNGQwLTB4MDRkMV0KWyAgICA0LjIyMjg4MV0gc3lzdGVtIDAwOjA2OiBbaW8gIDB4
MDRkMC0weDA0ZDFdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yMjI5MTVdIHN5c3RlbSAwMDow
NjogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBjMDIgKGFjdGl2ZSkKWyAgICA0
LjIyMjkyM10gcG5wIDAwOjA3OiBbaW8gIDB4MDBmMC0weDAwZmZdClsgICAgNC4yMjI5MjVdIHhl
bjogcmVnaXN0ZXJpbmcgZ3NpIDEzIHRyaWdnZXJpbmcgMSBwb2xhcml0eSAwClsgICAgNC4yMjI5
MjddIHhlbl9tYXBfcGlycV9nc2k6IHJldHVybmluZyBpcnEgMTMgZm9yIGdzaSAxMwpbICAgIDQu
MjIyOTU5XSB4ZW46IC0tPiBwaXJxPTEzIC0+IGlycT0xMyAoZ3NpPTEzKQpbICAgIDQuMjIyOTc2
XSBwbnAgMDA6MDc6IFtpcnEgMTNdClsgICAgNC4yMjI5OTldIHBucCAwMDowNzogUGx1ZyBhbmQg
UGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDBjMDQgKGFjdGl2ZSkKWyAgICA0LjIyMzM5Nl0gcG5w
IDAwOjA4OiBbaW8gIDB4MDNmOC0weDAzZmZdClsgICAgNC4yMjMzOThdIHhlbjogcmVnaXN0ZXJp
bmcgZ3NpIDQgdHJpZ2dlcmluZyAxIHBvbGFyaXR5IDAKWyAgICA0LjIyMzQwMF0geGVuX21hcF9w
aXJxX2dzaTogcmV0dXJuaW5nIGlycSA0IGZvciBnc2kgNApbICAgIDQuMjIzNDMyXSB4ZW46IC0t
PiBwaXJxPTQgLT4gaXJxPTQgKGdzaT00KQpbICAgIDQuMjIzNDQ4XSBwbnAgMDA6MDg6IFtpcnEg
NF0KWyAgICA0LjIyMzQ1MF0gcG5wIDAwOjA4OiBbZG1hIDAgZGlzYWJsZWRdClsgICAgNC4yMjM1
MDBdIHBucCAwMDowODogUGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURzIFBOUDA1MDEgKGFj
dGl2ZSkKWyAgICA0LjIyMzgxNV0gcG5wIDAwOjA5OiBbaW8gIDB4MDQwMC0weDA0NTNdClsgICAg
NC4yMjM4MTddIHBucCAwMDowOTogW2lvICAweDA0NTgtMHgwNDdmXQpbICAgIDQuMjIzODE4XSBw
bnAgMDA6MDk6IFtpbyAgMHgxMTgwLTB4MTE5Zl0KWyAgICA0LjIyMzgyMF0gcG5wIDAwOjA5OiBb
aW8gIDB4MDUwMC0weDA1N2ZdClsgICAgNC4yMjM4MjJdIHBucCAwMDowOTogW21lbSAweGZlZDFj
MDAwLTB4ZmVkMWZmZmZdClsgICAgNC4yMjM4MjNdIHBucCAwMDowOTogW21lbSAweGZlYzAwMDAw
LTB4ZmVjZmZmZmZdClsgICAgNC4yMjM4MjVdIHBucCAwMDowOTogW21lbSAweGZlZDA4MDAwLTB4
ZmVkMDhmZmZdClsgICAgNC4yMjM4MjZdIHBucCAwMDowOTogW21lbSAweGZmMDAwMDAwLTB4ZmZm
ZmZmZmZdClsgICAgNC4yMjM4NzFdIHN5c3RlbSAwMDowOTogW2lvICAweDA0MDAtMHgwNDUzXSBo
YXMgYmVlbiByZXNlcnZlZApbICAgIDQuMjIzOTA1XSBzeXN0ZW0gMDA6MDk6IFtpbyAgMHgwNDU4
LTB4MDQ3Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICA0LjIyMzkzOF0gc3lzdGVtIDAwOjA5OiBb
aW8gIDB4MTE4MC0weDExOWZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yMjM5NzFdIHN5c3Rl
bSAwMDowOTogW2lvICAweDA1MDAtMHgwNTdmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMjI0
MDA1XSBzeXN0ZW0gMDA6MDk6IFttZW0gMHhmZWQxYzAwMC0weGZlZDFmZmZmXSBoYXMgYmVlbiBy
ZXNlcnZlZApbICAgIDQuMjI0MDM5XSBzeXN0ZW0gMDA6MDk6IFttZW0gMHhmZWMwMDAwMC0weGZl
Y2ZmZmZmXSBjb3VsZCBub3QgYmUgcmVzZXJ2ZWQKWyAgICA0LjIyNDA3NF0gc3lzdGVtIDAwOjA5
OiBbbWVtIDB4ZmVkMDgwMDAtMHhmZWQwOGZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICA0LjIy
NDEwOF0gc3lzdGVtIDAwOjA5OiBbbWVtIDB4ZmYwMDAwMDAtMHhmZmZmZmZmZl0gaGFzIGJlZW4g
cmVzZXJ2ZWQKWyAgICA0LjIyNDE0Ml0gc3lzdGVtIDAwOjA5OiBQbHVnIGFuZCBQbGF5IEFDUEkg
ZGV2aWNlLCBJRHMgUE5QMGMwMSAoYWN0aXZlKQpbICAgIDQuMjI0MjAyXSBwbnAgMDA6MGE6IFtp
byAgMHgwNDU0LTB4MDQ1N10KWyAgICA0LjIyNDI0M10gc3lzdGVtIDAwOjBhOiBbaW8gIDB4MDQ1
NC0weDA0NTddIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yMjQyNzddIHN5c3RlbSAwMDowYTog
UGx1ZyBhbmQgUGxheSBBQ1BJIGRldmljZSwgSURzIElOVDNmMGQgUE5QMGMwMiAoYWN0aXZlKQpb
ICAgIDQuMjI0NDM4XSBwbnAgMDA6MGI6IFttZW0gMHhmZWQwMDAwMC0weGZlZDAwM2ZmXQpbICAg
IDQuMjI0NDc0XSBwbnAgMDA6MGI6IFBsdWcgYW5kIFBsYXkgQUNQSSBkZXZpY2UsIElEcyBQTlAw
MTAzIChhY3RpdmUpClsgICAgNC4yMjQ2ODVdIHBucDogUG5QIEFDUEk6IGZvdW5kIDEyIGRldmlj
ZXMKWyAgICA0LjIyNDcxNV0gQUNQSTogQUNQSSBidXMgdHlwZSBwbnAgdW5yZWdpc3RlcmVkClsg
ICAgNC4yMzAyNjhdIFBNLVRpbWVyIGZhaWxlZCBjb25zaXN0ZW5jeSBjaGVjayAgKDB4MHhmZmZm
ZmYpIC0gYWJvcnRpbmcuClsgICAgNC4yMzAzMThdIFBDSTogbWF4IGJ1cyBkZXB0aDogNCBwY2lf
dHJ5X251bTogNQpbICAgIDQuMjMwNTU5XSBwY2kgMDAwMDowMDowMS4wOiBQQ0kgYnJpZGdlIHRv
IFtidXMgMDEtMDFdClsgICAgNC4yMzA1OTJdIHBjaSAwMDAwOjAwOjAxLjA6ICAgYnJpZGdlIHdp
bmRvdyBbaW8gIDB4ZTAwMC0weGVmZmZdClsgICAgNC4yMzA2MjhdIHBjaSAwMDAwOjAwOjAxLjA6
ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmJlMDAwMDAtMHhmYmVmZmZmZl0KWyAgICA0LjIzMDY2
NF0gcGNpIDAwMDA6MDA6MDEuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDAwMDAwMC0weGNm
ZmZmZmZmIDY0Yml0IHByZWZdClsgICAgNC4yMzA3MTVdIHBjaSAwMDAwOjAyOjAwLjA6IFBDSSBi
cmlkZ2UgdG8gW2J1cyAwMy0wM10KWyAgICA0LjIzMDc1MF0gcGNpIDAwMDA6MDI6MDAuMDogICBi
cmlkZ2Ugd2luZG93IFtpbyAgMHhkMDAwLTB4ZGZmZl0KWyAgICA0LjIzMDgxNV0gcGNpIDAwMDA6
MDA6MWMuMDogUENJIGJyaWRnZSB0byBbYnVzIDAyLTAzXQpbICAgIDQuMjMwODQ5XSBwY2kgMDAw
MDowMDoxYy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweGQwMDAtMHhkZmZmXQpbICAgIDQuMjMw
OTAyXSBwY2kgMDAwMDowMDoxYy40OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDQtMDRdClsgICAgNC4y
MzA5MzVdIHBjaSAwMDAwOjAwOjFjLjQ6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4YzAwMC0weGNm
ZmZdClsgICAgNC4yMzA5NzVdIHBjaSAwMDAwOjAwOjFjLjQ6ICAgYnJpZGdlIHdpbmRvdyBbbWVt
IDB4ZmJkMDAwMDAtMHhmYmRmZmZmZl0KWyAgICA0LjIzMTAyMV0gcGNpIDAwMDA6MDA6MWMuNTog
UENJIGJyaWRnZSB0byBbYnVzIDA1LTA1XQpbICAgIDQuMjMxMDYwXSBwY2kgMDAwMDowMDoxYy41
OiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZiYzAwMDAwLTB4ZmJjZmZmZmZdClsgICAgNC4yMzEx
MDddIHBjaSAwMDAwOjAwOjFjLjY6IFBDSSBicmlkZ2UgdG8gW2J1cyAwNi0wNl0KWyAgICA0LjIz
MTE0NF0gcGNpIDAwMDA6MDA6MWMuNjogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmYmIwMDAwMC0w
eGZiYmZmZmZmXQpbICAgIDQuMjMxMTkyXSBwY2kgMDAwMDowODowMS4wOiBQQ0kgYnJpZGdlIHRv
IFtidXMgMDktMDldClsgICAgNC4yMzEyNDhdIHBjaSAwMDAwOjBhOjAwLjA6IFBDSSBicmlkZ2Ug
dG8gW2J1cyAwYi0wYl0KWyAgICA0LjIzMTMxMl0gcGNpIDAwMDA6MDg6MDQuMDogUENJIGJyaWRn
ZSB0byBbYnVzIDBhLTBiXQpbICAgIDQuMjMxMzY4XSBwY2kgMDAwMDowODowNS4wOiBQQ0kgYnJp
ZGdlIHRvIFtidXMgMGMtMGNdClsgICAgNC4yMzE0MDJdIHBjaSAwMDAwOjA4OjA1LjA6ICAgYnJp
ZGdlIHdpbmRvdyBbaW8gIDB4YjAwMC0weGJmZmZdClsgICAgNC4yMzE0NDRdIHBjaSAwMDAwOjA4
OjA1LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZmI5MDAwMDAtMHhmYjlmZmZmZl0KWyAgICA0
LjIzMTQ5NF0gcGNpIDAwMDA6MDg6MDYuMDogUENJIGJyaWRnZSB0byBbYnVzIDBkLTBkXQpbICAg
IDQuMjMxNTM0XSBwY2kgMDAwMDowODowNi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGZiODAw
MDAwLTB4ZmI4ZmZmZmZdClsgICAgNC4yMzE1NzNdIHBjaSAwMDAwOjA4OjA2LjA6ICAgYnJpZGdl
IHdpbmRvdyBbbWVtIDB4ZDAwMDAwMDAtMHhkMDBmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuMjMx
NjMwXSBwY2kgMDAwMDowODowNy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMGUtMGVdClsgICAgNC4y
MzE2ODddIHBjaSAwMDAwOjA4OjA4LjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwZi0wZl0KWyAgICA0
LjIzMTc0NF0gcGNpIDAwMDA6MDg6MDkuMDogUENJIGJyaWRnZSB0byBbYnVzIDEwLTEwXQpbICAg
IDQuMjMxODAwXSBwY2kgMDAwMDowNzowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDgtMTBdClsg
ICAgNC4yMzE4MzRdIHBjaSAwMDAwOjA3OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4YjAw
MC0weGJmZmZdClsgICAgNC4yMzE4NzZdIHBjaSAwMDAwOjA3OjAwLjA6ICAgYnJpZGdlIHdpbmRv
dyBbbWVtIDB4ZmI4MDAwMDAtMHhmYjlmZmZmZl0KWyAgICA0LjIzMTkxNV0gcGNpIDAwMDA6MDc6
MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhkMDAwMDAwMC0weGQwMGZmZmZmIDY0Yml0IHBy
ZWZdClsgICAgNC4yMzE5NzJdIHBjaSAwMDAwOjAwOjFjLjc6IFBDSSBicmlkZ2UgdG8gW2J1cyAw
Ny0xMF0KWyAgICA0LjIzMjAwNV0gcGNpIDAwMDA6MDA6MWMuNzogICBicmlkZ2Ugd2luZG93IFtp
byAgMHhiMDAwLTB4YmZmZl0KWyAgICA0LjIzMjA0NF0gcGNpIDAwMDA6MDA6MWMuNzogICBicmlk
Z2Ugd2luZG93IFttZW0gMHhmYjgwMDAwMC0weGZiYWZmZmZmXQpbICAgIDQuMjMyMDgzXSBwY2kg
MDAwMDowMDoxYy43OiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGQwMDAwMDAwLTB4ZDAwZmZmZmYg
NjRiaXQgcHJlZl0KWyAgICA0LjIzMjE0Ml0geGVuOiByZWdpc3RlcmluZyBnc2kgMTYgdHJpZ2dl
cmluZyAwIHBvbGFyaXR5IDEKWyAgICA0LjIzMjE1Ml0geGVuOiAtLT4gcGlycT0xNiAtPiBpcnE9
MTYgKGdzaT0xNikKWyAgICA0LjIzMjE2N10gcGNpIDAwMDA6MDA6MDEuMDogUENJIElOVCBBIC0+
IEdTSSAxNiAobGV2ZWwsIGxvdykgLT4gSVJRIDE2ClsgICAgNC4yMzIyMDRdIHBjaSAwMDAwOjAw
OjAxLjA6IHNldHRpbmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuMjMyMjEyXSB4ZW46IHJl
Z2lzdGVyaW5nIGdzaSAxNyB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuMjMyMjE2XSB4
ZW46IC0tPiBwaXJxPTE3IC0+IGlycT0xNyAoZ3NpPTE3KQpbICAgIDQuMjMyMjMxXSBwY2kgMDAw
MDowMDoxYy4wOiBQQ0kgSU5UIEEgLT4gR1NJIDE3IChsZXZlbCwgbG93KSAtPiBJUlEgMTcKWyAg
ICA0LjIzMjI2OV0gcGNpIDAwMDA6MDA6MWMuMDogc2V0dGluZyBsYXRlbmN5IHRpbWVyIHRvIDY0
ClsgICAgNC4yMzIyNzddIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE2IHRyaWdnZXJpbmcgMCBwb2xh
cml0eSAxClsgICAgNC4yMzIyNzhdIHhlbl9tYXBfcGlycV9nc2k6IHJldHVybmluZyBpcnEgMTYg
Zm9yIGdzaSAxNgpbICAgIDQuMjMyMzEwXSB4ZW46IC0tPiBwaXJxPTE2IC0+IGlycT0xNiAoZ3Np
PTE2KQpbICAgIDQuMjMyMzExXSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjE2ClsgICAgNC4yMzIz
NDBdIHBjaSAwMDAwOjAyOjAwLjA6IFBDSSBJTlQgQSAtPiBHU0kgMTYgKGxldmVsLCBsb3cpIC0+
IElSUSAxNgpbICAgIDQuMjMyMzgyXSBwY2kgMDAwMDowMjowMC4wOiBzZXR0aW5nIGxhdGVuY3kg
dGltZXIgdG8gNjQKWyAgICA0LjIzMjM5Ml0geGVuOiByZWdpc3RlcmluZyBnc2kgMTcgdHJpZ2dl
cmluZyAwIHBvbGFyaXR5IDEKWyAgICA0LjIzMjM5NF0geGVuX21hcF9waXJxX2dzaTogcmV0dXJu
aW5nIGlycSAxNyBmb3IgZ3NpIDE3ClsgICAgNC4yMzI0MjVdIHhlbjogLS0+IHBpcnE9MTcgLT4g
aXJxPTE3IChnc2k9MTcpClsgICAgNC4yMzI0MjZdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6MTcK
WyAgICA0LjIzMjQ1NV0gcGNpIDAwMDA6MDA6MWMuNDogUENJIElOVCBBIC0+IEdTSSAxNyAobGV2
ZWwsIGxvdykgLT4gSVJRIDE3ClsgICAgNC4yMzI0OTNdIHBjaSAwMDAwOjAwOjFjLjQ6IHNldHRp
bmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuMjMyNTAyXSB4ZW46IHJlZ2lzdGVyaW5nIGdz
aSAxNiB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuMjMyNTAzXSB4ZW5fbWFwX3BpcnFf
Z3NpOiByZXR1cm5pbmcgaXJxIDE2IGZvciBnc2kgMTYKWyAgICA0LjIzMjUzNV0geGVuOiAtLT4g
cGlycT0xNiAtPiBpcnE9MTYgKGdzaT0xNikKWyAgICA0LjIzMjUzNl0gQWxyZWFkeSBzZXR1cCB0
aGUgR1NJIDoxNgpbICAgIDQuMjMyNTY1XSBwY2kgMDAwMDowMDoxYy41OiBQQ0kgSU5UIEIgLT4g
R1NJIDE2IChsZXZlbCwgbG93KSAtPiBJUlEgMTYKWyAgICA0LjIzMjYwM10gcGNpIDAwMDA6MDA6
MWMuNTogc2V0dGluZyBsYXRlbmN5IHRpbWVyIHRvIDY0ClsgICAgNC4yMzI2MTJdIHhlbjogcmVn
aXN0ZXJpbmcgZ3NpIDE4IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAgNC4yMzI2MTZdIHhl
bjogLS0+IHBpcnE9MTggLT4gaXJxPTE4IChnc2k9MTgpClsgICAgNC4yMzI2MzFdIHBjaSAwMDAw
OjAwOjFjLjY6IFBDSSBJTlQgQyAtPiBHU0kgMTggKGxldmVsLCBsb3cpIC0+IElSUSAxOApbICAg
IDQuMjMyNjY5XSBwY2kgMDAwMDowMDoxYy42OiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQK
WyAgICA0LjIzMjY3OF0geGVuOiByZWdpc3RlcmluZyBnc2kgMTkgdHJpZ2dlcmluZyAwIHBvbGFy
aXR5IDEKWyAgICA0LjIzMjY4MV0geGVuOiAtLT4gcGlycT0xOSAtPiBpcnE9MTkgKGdzaT0xOSkK
WyAgICA0LjIzMjY5Nl0gcGNpIDAwMDA6MDA6MWMuNzogUENJIElOVCBEIC0+IEdTSSAxOSAobGV2
ZWwsIGxvdykgLT4gSVJRIDE5ClsgICAgNC4yMzI3MzNdIHBjaSAwMDAwOjAwOjFjLjc6IHNldHRp
bmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuMjMyNzQzXSB4ZW46IHJlZ2lzdGVyaW5nIGdz
aSAxOSB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuMjMyNzQ1XSB4ZW5fbWFwX3BpcnFf
Z3NpOiByZXR1cm5pbmcgaXJxIDE5IGZvciBnc2kgMTkKWyAgICA0LjIzMjc3N10geGVuOiAtLT4g
cGlycT0xOSAtPiBpcnE9MTkgKGdzaT0xOSkKWyAgICA0LjIzMjc3OF0gQWxyZWFkeSBzZXR1cCB0
aGUgR1NJIDoxOQpbICAgIDQuMjMyODA3XSBwY2kgMDAwMDowNzowMC4wOiBQQ0kgSU5UIEEgLT4g
R1NJIDE5IChsZXZlbCwgbG93KSAtPiBJUlEgMTkKWyAgICA0LjIzMjg0N10gcGNpIDAwMDA6MDc6
MDAuMDogc2V0dGluZyBsYXRlbmN5IHRpbWVyIHRvIDY0ClsgICAgNC4yMzI4NTddIHhlbjogcmVn
aXN0ZXJpbmcgZ3NpIDE2IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAgNC4yMzI4NTldIHhl
bl9tYXBfcGlycV9nc2k6IHJldHVybmluZyBpcnEgMTYgZm9yIGdzaSAxNgpbICAgIDQuMjMyODkw
XSB4ZW46IC0tPiBwaXJxPTE2IC0+IGlycT0xNiAoZ3NpPTE2KQpbICAgIDQuMjMyODkxXSBBbHJl
YWR5IHNldHVwIHRoZSBHU0kgOjE2ClsgICAgNC4yMzI5MjFdIHBjaSAwMDAwOjA4OjAxLjA6IFBD
SSBJTlQgQSAtPiBHU0kgMTYgKGxldmVsLCBsb3cpIC0+IElSUSAxNgpbICAgIDQuMjMyOTYwXSBw
Y2kgMDAwMDowODowMS4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjIzMjk3
MV0geGVuOiByZWdpc3RlcmluZyBnc2kgMTkgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICA0
LjIzMjk3Ml0geGVuX21hcF9waXJxX2dzaTogcmV0dXJuaW5nIGlycSAxOSBmb3IgZ3NpIDE5Clsg
ICAgNC4yMzMwMDRdIHhlbjogLS0+IHBpcnE9MTkgLT4gaXJxPTE5IChnc2k9MTkpClsgICAgNC4y
MzMwMDVdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6MTkKWyAgICA0LjIzMzAzNF0gcGNpIDAwMDA6
MDg6MDQuMDogUENJIElOVCBBIC0+IEdTSSAxOSAobGV2ZWwsIGxvdykgLT4gSVJRIDE5ClsgICAg
NC4yMzMwNzRdIHBjaSAwMDAwOjA4OjA0LjA6IHNldHRpbmcgbGF0ZW5jeSB0aW1lciB0byA2NApb
ICAgIDQuMjMzMDg2XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxOSB0cmlnZ2VyaW5nIDAgcG9sYXJp
dHkgMQpbICAgIDQuMjMzMDg3XSB4ZW5fbWFwX3BpcnFfZ3NpOiByZXR1cm5pbmcgaXJxIDE5IGZv
ciBnc2kgMTkKWyAgICA0LjIzMzExOV0geGVuOiAtLT4gcGlycT0xOSAtPiBpcnE9MTkgKGdzaT0x
OSkKWyAgICA0LjIzMzEyMF0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxOQpbICAgIDQuMjMzMTUw
XSBwY2kgMDAwMDowYTowMC4wOiBQQ0kgSU5UIEEgLT4gR1NJIDE5IChsZXZlbCwgbG93KSAtPiBJ
UlEgMTkKWyAgICA0LjIzMzE5MF0gcGNpIDAwMDA6MGE6MDAuMDogc2V0dGluZyBsYXRlbmN5IHRp
bWVyIHRvIDY0ClsgICAgNC4yMzMyMDJdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE2IHRyaWdnZXJp
bmcgMCBwb2xhcml0eSAxClsgICAgNC4yMzMyMDNdIHhlbl9tYXBfcGlycV9nc2k6IHJldHVybmlu
ZyBpcnEgMTYgZm9yIGdzaSAxNgpbICAgIDQuMjMzMjM1XSB4ZW46IC0tPiBwaXJxPTE2IC0+IGly
cT0xNiAoZ3NpPTE2KQpbICAgIDQuMjMzMjM2XSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjE2Clsg
ICAgNC4yMzQ1NjBdIHBjaSAwMDAwOjA4OjA1LjA6IFBDSSBJTlQgQSAtPiBHU0kgMTYgKGxldmVs
LCBsb3cpIC0+IElSUSAxNgpbICAgIDQuMjM0NTk5XSBwY2kgMDAwMDowODowNS4wOiBzZXR0aW5n
IGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjIzNDYxMF0geGVuOiByZWdpc3RlcmluZyBnc2kg
MTcgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICA0LjIzNDYxMV0geGVuX21hcF9waXJxX2dz
aTogcmV0dXJuaW5nIGlycSAxNyBmb3IgZ3NpIDE3ClsgICAgNC4yMzQ2NDNdIHhlbjogLS0+IHBp
cnE9MTcgLT4gaXJxPTE3IChnc2k9MTcpClsgICAgNC4yMzQ2NDRdIEFscmVhZHkgc2V0dXAgdGhl
IEdTSSA6MTcKWyAgICA0LjIzNDY3M10gcGNpIDAwMDA6MDg6MDYuMDogUENJIElOVCBBIC0+IEdT
SSAxNyAobGV2ZWwsIGxvdykgLT4gSVJRIDE3ClsgICAgNC4yMzQ3MTNdIHBjaSAwMDAwOjA4OjA2
LjA6IHNldHRpbmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuMjM0NzIzXSB4ZW46IHJlZ2lz
dGVyaW5nIGdzaSAxOCB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuMjM0NzI1XSB4ZW5f
bWFwX3BpcnFfZ3NpOiByZXR1cm5pbmcgaXJxIDE4IGZvciBnc2kgMTgKWyAgICA0LjIzNDc1Nl0g
eGVuOiAtLT4gcGlycT0xOCAtPiBpcnE9MTggKGdzaT0xOCkKWyAgICA0LjIzNDc1OF0gQWxyZWFk
eSBzZXR1cCB0aGUgR1NJIDoxOApbICAgIDQuMjM0Nzg3XSBwY2kgMDAwMDowODowNy4wOiBQQ0kg
SU5UIEEgLT4gR1NJIDE4IChsZXZlbCwgbG93KSAtPiBJUlEgMTgKWyAgICA0LjIzNDgyNl0gcGNp
IDAwMDA6MDg6MDcuMDogc2V0dGluZyBsYXRlbmN5IHRpbWVyIHRvIDY0ClsgICAgNC4yMzQ4Mzdd
IHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE5IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAgNC4y
MzQ4MzhdIHhlbl9tYXBfcGlycV9nc2k6IHJldHVybmluZyBpcnEgMTkgZm9yIGdzaSAxOQpbICAg
IDQuMjM0ODcwXSB4ZW46IC0tPiBwaXJxPTE5IC0+IGlycT0xOSAoZ3NpPTE5KQpbICAgIDQuMjM0
ODcxXSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjE5ClsgICAgNC4yMzQ5MDBdIHBjaSAwMDAwOjA4
OjA4LjA6IFBDSSBJTlQgQSAtPiBHU0kgMTkgKGxldmVsLCBsb3cpIC0+IElSUSAxOQpbICAgIDQu
MjM0OTM5XSBwY2kgMDAwMDowODowOC4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAg
ICA0LjIzNDk1MF0geGVuOiByZWdpc3RlcmluZyBnc2kgMTYgdHJpZ2dlcmluZyAwIHBvbGFyaXR5
IDEKWyAgICA0LjIzNDk1Ml0geGVuX21hcF9waXJxX2dzaTogcmV0dXJuaW5nIGlycSAxNiBmb3Ig
Z3NpIDE2ClsgICAgNC4yMzQ5ODNdIHhlbjogLS0+IHBpcnE9MTYgLT4gaXJxPTE2IChnc2k9MTYp
ClsgICAgNC4yMzQ5ODVdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6MTYKWyAgICA0LjIzNTAxM10g
cGNpIDAwMDA6MDg6MDkuMDogUENJIElOVCBBIC0+IEdTSSAxNiAobGV2ZWwsIGxvdykgLT4gSVJR
IDE2ClsgICAgNC4yMzUwNTNdIHBjaSAwMDAwOjA4OjA5LjA6IHNldHRpbmcgbGF0ZW5jeSB0aW1l
ciB0byA2NApbICAgIDQuMjM1MDU3XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDQgW2lvICAw
eDAwMDAtMHgwM2FmXQpbICAgIDQuMjM1MDU5XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDUg
W2lvICAweDAzZTAtMHgwY2Y3XQpbICAgIDQuMjM1MDYwXSBwY2lfYnVzIDAwMDA6MDA6IHJlc291
cmNlIDYgW2lvICAweDAzYjAtMHgwM2RmXQpbICAgIDQuMjM1MDYyXSBwY2lfYnVzIDAwMDA6MDA6
IHJlc291cmNlIDcgW2lvICAweDBkMDAtMHhmZmZmXQpbICAgIDQuMjM1MDYzXSBwY2lfYnVzIDAw
MDA6MDA6IHJlc291cmNlIDggW21lbSAweDAwMGEwMDAwLTB4MDAwYmZmZmZdClsgICAgNC4yMzUw
NjVdIHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgOSBbbWVtIDB4MDAwYzAwMDAtMHgwMDBkZmZm
Zl0KWyAgICA0LjIzNTA2N10gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSAxMCBbbWVtIDB4N2Zh
MDAwMDAtMHhmZmZmZmZmZl0KWyAgICA0LjIzNTA2OF0gcGNpX2J1cyAwMDAwOjAxOiByZXNvdXJj
ZSAwIFtpbyAgMHhlMDAwLTB4ZWZmZl0KWyAgICA0LjIzNTA3MF0gcGNpX2J1cyAwMDAwOjAxOiBy
ZXNvdXJjZSAxIFttZW0gMHhmYmUwMDAwMC0weGZiZWZmZmZmXQpbICAgIDQuMjM1MDcxXSBwY2lf
YnVzIDAwMDA6MDE6IHJlc291cmNlIDIgW21lbSAweGMwMDAwMDAwLTB4Y2ZmZmZmZmYgNjRiaXQg
cHJlZl0KWyAgICA0LjIzNTA3M10gcGNpX2J1cyAwMDAwOjAyOiByZXNvdXJjZSAwIFtpbyAgMHhk
MDAwLTB4ZGZmZl0KWyAgICA0LjIzNTA3NV0gcGNpX2J1cyAwMDAwOjAzOiByZXNvdXJjZSAwIFtp
byAgMHhkMDAwLTB4ZGZmZl0KWyAgICA0LjIzNTA3Nl0gcGNpX2J1cyAwMDAwOjA0OiByZXNvdXJj
ZSAwIFtpbyAgMHhjMDAwLTB4Y2ZmZl0KWyAgICA0LjIzNTA3OF0gcGNpX2J1cyAwMDAwOjA0OiBy
ZXNvdXJjZSAxIFttZW0gMHhmYmQwMDAwMC0weGZiZGZmZmZmXQpbICAgIDQuMjM1MDc5XSBwY2lf
YnVzIDAwMDA6MDU6IHJlc291cmNlIDEgW21lbSAweGZiYzAwMDAwLTB4ZmJjZmZmZmZdClsgICAg
NC4yMzUwODFdIHBjaV9idXMgMDAwMDowNjogcmVzb3VyY2UgMSBbbWVtIDB4ZmJiMDAwMDAtMHhm
YmJmZmZmZl0KWyAgICA0LjIzNTA4Ml0gcGNpX2J1cyAwMDAwOjA3OiByZXNvdXJjZSAwIFtpbyAg
MHhiMDAwLTB4YmZmZl0KWyAgICA0LjIzNTA4NF0gcGNpX2J1cyAwMDAwOjA3OiByZXNvdXJjZSAx
IFttZW0gMHhmYjgwMDAwMC0weGZiYWZmZmZmXQpbICAgIDQuMjM1MDg1XSBwY2lfYnVzIDAwMDA6
MDc6IHJlc291cmNlIDIgW21lbSAweGQwMDAwMDAwLTB4ZDAwZmZmZmYgNjRiaXQgcHJlZl0KWyAg
ICA0LjIzNTA4N10gcGNpX2J1cyAwMDAwOjA4OiByZXNvdXJjZSAwIFtpbyAgMHhiMDAwLTB4YmZm
Zl0KWyAgICA0LjIzNTA4OF0gcGNpX2J1cyAwMDAwOjA4OiByZXNvdXJjZSAxIFttZW0gMHhmYjgw
MDAwMC0weGZiOWZmZmZmXQpbICAgIDQuMjM1MDkwXSBwY2lfYnVzIDAwMDA6MDg6IHJlc291cmNl
IDIgW21lbSAweGQwMDAwMDAwLTB4ZDAwZmZmZmYgNjRiaXQgcHJlZl0KWyAgICA0LjIzNTA5Ml0g
cGNpX2J1cyAwMDAwOjBjOiByZXNvdXJjZSAwIFtpbyAgMHhiMDAwLTB4YmZmZl0KWyAgICA0LjIz
NTA5M10gcGNpX2J1cyAwMDAwOjBjOiByZXNvdXJjZSAxIFttZW0gMHhmYjkwMDAwMC0weGZiOWZm
ZmZmXQpbICAgIDQuMjM1MDk1XSBwY2lfYnVzIDAwMDA6MGQ6IHJlc291cmNlIDEgW21lbSAweGZi
ODAwMDAwLTB4ZmI4ZmZmZmZdClsgICAgNC4yMzUwOTddIHBjaV9idXMgMDAwMDowZDogcmVzb3Vy
Y2UgMiBbbWVtIDB4ZDAwMDAwMDAtMHhkMDBmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuMjM1MTQ5
XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDIKWyAgICA0LjIzNTYyNl0gSVAgcm91
dGUgY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyNjIxNDQgKG9yZGVyOiA5LCAyMDk3MTUyIGJ5
dGVzKQpbICAgIDQuMjM3NTIzXSBUQ1AgZXN0YWJsaXNoZWQgaGFzaCB0YWJsZSBlbnRyaWVzOiA1
MjQyODggKG9yZGVyOiAxMSwgODM4ODYwOCBieXRlcykKWyAgICA0LjIzODgzM10gVENQIGJpbmQg
aGFzaCB0YWJsZSBlbnRyaWVzOiA2NTUzNiAob3JkZXI6IDgsIDEwNDg1NzYgYnl0ZXMpClsgICAg
NC4yMzkwMDhdIFRDUDogSGFzaCB0YWJsZXMgY29uZmlndXJlZCAoZXN0YWJsaXNoZWQgNTI0Mjg4
IGJpbmQgNjU1MzYpClsgICAgNC4yMzkwNDJdIFRDUCByZW5vIHJlZ2lzdGVyZWQKWyAgICA0LjIz
OTA5OF0gVURQIGhhc2ggdGFibGUgZW50cmllczogNDA5NiAob3JkZXI6IDUsIDEzMTA3MiBieXRl
cykKWyAgICA0LjIzOTE3NF0gVURQLUxpdGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRl
cjogNSwgMTMxMDcyIGJ5dGVzKQpbICAgIDQuMjM5MzE4XSBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9j
b2wgZmFtaWx5IDEKWyAgICA0LjIzOTM2OF0gcGNpIDAwMDA6MDA6MDIuMDogQm9vdCB2aWRlbyBk
ZXZpY2UKWyAgICA0LjQ2Mzk5NV0gUENJOiBDTFMgNjQgYnl0ZXMsIGRlZmF1bHQgNjQKWyAgICA0
LjQ2NDAzNF0gVW5wYWNraW5nIGluaXRyYW1mcy4uLgpbICAgIDQuNDg5OTQyXSBGcmVlaW5nIGlu
aXRyZCBtZW1vcnk6IDMzNzM2ayBmcmVlZApbICAgIDQuNDk1NDI4XSBhdWRpdDogaW5pdGlhbGl6
aW5nIG5ldGxpbmsgc29ja2V0IChkaXNhYmxlZCkKWyAgICA0LjQ5NTQ3M10gdHlwZT0yMDAwIGF1
ZGl0KDEzMjk5NDg0NDEuNDc1OjEpOiBpbml0aWFsaXplZApbICAgIDQuNTExMjE1XSBIdWdlVExC
IHJlZ2lzdGVyZWQgMiBNQiBwYWdlIHNpemUsIHByZS1hbGxvY2F0ZWQgMCBwYWdlcwpbICAgIDQu
NTExNDgxXSBWRlM6IERpc2sgcXVvdGFzIGRxdW90XzYuNS4yClsgICAgNC41MTE1NDRdIERxdW90
LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNTEyIChvcmRlciAwLCA0MDk2IGJ5dGVzKQpbICAg
IDQuNTExNjU5XSBtc2dtbmkgaGFzIGJlZW4gc2V0IHRvIDExMzY5ClsgICAgNC41MTE4NTldIGFs
ZzogTm8gdGVzdCBmb3Igc3Rkcm5nIChrcm5nKQpbICAgIDQuNTExOTE5XSBCbG9jayBsYXllciBT
Q1NJIGdlbmVyaWMgKGJzZykgZHJpdmVyIHZlcnNpb24gMC40IGxvYWRlZCAobWFqb3IgMjUzKQpb
ICAgIDQuNTExOTY4XSBpbyBzY2hlZHVsZXIgbm9vcCByZWdpc3RlcmVkClsgICAgNC41MTE5OThd
IGlvIHNjaGVkdWxlciBkZWFkbGluZSByZWdpc3RlcmVkClsgICAgNC41MTIwNDJdIGlvIHNjaGVk
dWxlciBjZnEgcmVnaXN0ZXJlZCAoZGVmYXVsdCkKWyAgICA0LjUxMjE3OF0gcGNpZXBvcnQgMDAw
MDowMDowMS4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxMjMzNV0gcGNp
ZXBvcnQgMDAwMDowMDoxYy4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUx
MjU1Ml0gcGNpZXBvcnQgMDAwMDowMDoxYy40OiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQK
WyAgICA0LjUxMjc2OV0gcGNpZXBvcnQgMDAwMDowMDoxYy41OiBzZXR0aW5nIGxhdGVuY3kgdGlt
ZXIgdG8gNjQKWyAgICA0LjUxMjk4Nl0gcGNpZXBvcnQgMDAwMDowMDoxYy42OiBzZXR0aW5nIGxh
dGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxMzIwMl0gcGNpZXBvcnQgMDAwMDowMDoxYy43OiBz
ZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxMzQzN10gcGNpZXBvcnQgMDAwMDow
NzowMC4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxMzc0N10gcGNpZXBv
cnQgMDAwMDowODowMS4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxNDA1
OF0gcGNpZXBvcnQgMDAwMDowODowNC4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAg
ICA0LjUxNDM3MV0gcGNpZXBvcnQgMDAwMDowODowNS4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIg
dG8gNjQKWyAgICA0LjUxNDY4MV0gcGNpZXBvcnQgMDAwMDowODowNi4wOiBzZXR0aW5nIGxhdGVu
Y3kgdGltZXIgdG8gNjQKWyAgICA0LjUxNDk5Ml0gcGNpZXBvcnQgMDAwMDowODowNy4wOiBzZXR0
aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxNTMwM10gcGNpZXBvcnQgMDAwMDowODow
OC4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxNTYxNF0gcGNpZXBvcnQg
MDAwMDowODowOS4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0LjUxNTk1OF0g
cGNpZXBvcnQgMDAwMDowMDowMS4wOiBTaWduYWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50
ZXJydXB0ClsgICAgNC41MTU5OTRdIHBjaSAwMDAwOjAxOjAwLjA6IFNpZ25hbGluZyBQTUUgdGhy
b3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjAyOF0gcGNpIDAwMDA6MDE6MDAuMTog
U2lnbmFsaW5nIFBNRSB0aHJvdWdoIFBDSWUgUE1FIGludGVycnVwdApbICAgIDQuNTE2MDYzXSBw
Y2llX3BtZSAwMDAwOjAwOjAxLjA6cGNpZTAxOiBzZXJ2aWNlIGRyaXZlciBwY2llX3BtZSBsb2Fk
ZWQKWyAgICA0LjUxNjA5OF0gcGNpZXBvcnQgMDAwMDowMDoxYy4wOiBTaWduYWxpbmcgUE1FIHRo
cm91Z2ggUENJZSBQTUUgaW50ZXJydXB0ClsgICAgNC41MTYxMzJdIHBjaSAwMDAwOjAyOjAwLjA6
IFNpZ25hbGluZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjE2Nl0g
cGNpIDAwMDA6MDM6MDQuMDogU2lnbmFsaW5nIFBNRSB0aHJvdWdoIFBDSWUgUE1FIGludGVycnVw
dApbICAgIDQuNTE2MjA0XSBwY2llX3BtZSAwMDAwOjAwOjFjLjA6cGNpZTAxOiBzZXJ2aWNlIGRy
aXZlciBwY2llX3BtZSBsb2FkZWQKWyAgICA0LjUxNjIzOV0gcGNpZXBvcnQgMDAwMDowMDoxYy40
OiBTaWduYWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50ZXJydXB0ClsgICAgNC41MTYyNzRd
IHBjaSAwMDAwOjA0OjAwLjA6IFNpZ25hbGluZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1
cHQKWyAgICA0LjUxNjMxMl0gcGNpZV9wbWUgMDAwMDowMDoxYy40OnBjaWUwMTogc2VydmljZSBk
cml2ZXIgcGNpZV9wbWUgbG9hZGVkClsgICAgNC41MTYzNDddIHBjaWVwb3J0IDAwMDA6MDA6MWMu
NTogU2lnbmFsaW5nIFBNRSB0aHJvdWdoIFBDSWUgUE1FIGludGVycnVwdApbICAgIDQuNTE2Mzgx
XSBwY2kgMDAwMDowNTowMC4wOiBTaWduYWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50ZXJy
dXB0ClsgICAgNC41MTY0MTldIHBjaWVfcG1lIDAwMDA6MDA6MWMuNTpwY2llMDE6IHNlcnZpY2Ug
ZHJpdmVyIHBjaWVfcG1lIGxvYWRlZApbICAgIDQuNTE2NDUzXSBwY2llcG9ydCAwMDAwOjAwOjFj
LjY6IFNpZ25hbGluZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjQ4
OF0gcGNpIDAwMDA6MDY6MDAuMDogU2lnbmFsaW5nIFBNRSB0aHJvdWdoIFBDSWUgUE1FIGludGVy
cnVwdApbICAgIDQuNTE2NTI2XSBwY2llX3BtZSAwMDAwOjAwOjFjLjY6cGNpZTAxOiBzZXJ2aWNl
IGRyaXZlciBwY2llX3BtZSBsb2FkZWQKWyAgICA0LjUxNjU2MV0gcGNpZXBvcnQgMDAwMDowMDox
Yy43OiBTaWduYWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50ZXJydXB0ClsgICAgNC41MTY1
OTVdIHBjaWVwb3J0IDAwMDA6MDc6MDAuMDogU2lnbmFsaW5nIFBNRSB0aHJvdWdoIFBDSWUgUE1F
IGludGVycnVwdApbICAgIDQuNTE2NjI5XSBwY2llcG9ydCAwMDAwOjA4OjAxLjA6IFNpZ25hbGlu
ZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjY2M10gcGNpZXBvcnQg
MDAwMDowODowNC4wOiBTaWduYWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50ZXJydXB0Clsg
ICAgNC41MTY2OTddIHBjaSAwMDAwOjBhOjAwLjA6IFNpZ25hbGluZyBQTUUgdGhyb3VnaCBQQ0ll
IFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjczMV0gcGNpZXBvcnQgMDAwMDowODowNS4wOiBTaWdu
YWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50ZXJydXB0ClsgICAgNC41MTY3NjVdIHBjaSAw
MDAwOjBjOjAwLjA6IFNpZ25hbGluZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAg
ICA0LjUxNjc5OF0gcGNpZXBvcnQgMDAwMDowODowNi4wOiBTaWduYWxpbmcgUE1FIHRocm91Z2gg
UENJZSBQTUUgaW50ZXJydXB0ClsgICAgNC41MTY4MzJdIHBjaSAwMDAwOjBkOjAwLjA6IFNpZ25h
bGluZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjg2NV0gcGNpZXBv
cnQgMDAwMDowODowNy4wOiBTaWduYWxpbmcgUE1FIHRocm91Z2ggUENJZSBQTUUgaW50ZXJydXB0
ClsgICAgNC41MTY4OTldIHBjaWVwb3J0IDAwMDA6MDg6MDguMDogU2lnbmFsaW5nIFBNRSB0aHJv
dWdoIFBDSWUgUE1FIGludGVycnVwdApbICAgIDQuNTE2OTMzXSBwY2llcG9ydCAwMDAwOjA4OjA5
LjA6IFNpZ25hbGluZyBQTUUgdGhyb3VnaCBQQ0llIFBNRSBpbnRlcnJ1cHQKWyAgICA0LjUxNjk3
Ml0gcGNpZV9wbWUgMDAwMDowMDoxYy43OnBjaWUwMTogc2VydmljZSBkcml2ZXIgcGNpZV9wbWUg
bG9hZGVkClsgICAgNC41MTcwNjldIEVSU1Q6IFRhYmxlIGlzIG5vdCBmb3VuZCEKWyAgICA0LjUx
NzA5OF0gR0hFUzogSEVTVCBpcyBub3QgZW5hYmxlZCEKWyAgICA0LjUxNzQ5N10gU2VyaWFsOiA4
MjUwLzE2NTUwIGRyaXZlciwgNCBwb3J0cywgSVJRIHNoYXJpbmcgZW5hYmxlZApbICAgIDQuNTM4
MjUyXSBzZXJpYWw4MjUwOiB0dHlTMCBhdCBJL08gMHgzZjggKGlycSA9IDQpIGlzIGEgMTY1NTBB
ClsgICAgNC41ODg3NDRdIDAwOjA4OiB0dHlTMCBhdCBJL08gMHgzZjggKGlycSA9IDQpIGlzIGEg
MTY1NTBBClsgICAgNC42MDQxMDZdIGhwZXRfYWNwaV9hZGQ6IG5vIGFkZHJlc3Mgb3IgaXJxcyBp
biBfQ1JTClsgICAgNC42MDQxNDZdIExpbnV4IGFncGdhcnQgaW50ZXJmYWNlIHYwLjEwMwpbICAg
IDQuNjA0MjQ5XSBhZ3BnYXJ0LWludGVsIDAwMDA6MDA6MDAuMDogSW50ZWwgU2FuZHlicmlkZ2Ug
Q2hpcHNldApbICAgIDQuNjA0NDE4XSBhZ3BnYXJ0LWludGVsIDAwMDA6MDA6MDAuMDogZGV0ZWN0
ZWQgZ3R0IHNpemU6IDIwOTcxNTJLIHRvdGFsLCAyNjIxNDRLIG1hcHBhYmxlClsgICAgNC42MDU0
NjFdIGFncGdhcnQtaW50ZWwgMDAwMDowMDowMC4wOiBkZXRlY3RlZCAyNjIxNDRLIHN0b2xlbiBt
ZW1vcnkKWyAgICA0LjYwNTYzOF0gYWdwZ2FydC1pbnRlbCAwMDAwOjAwOjAwLjA6IEFHUCBhcGVy
dHVyZSBpcyAyNTZNIEAgMHhiMDAwMDAwMApbICAgIDQuNjA1NzcxXSBpODA0MjogUE5QOiBObyBQ
Uy8yIGNvbnRyb2xsZXIgZm91bmQuIFByb2JpbmcgcG9ydHMgZGlyZWN0bHkuClsgICAgNC42MDg2
OThdIHNlcmlvOiBpODA0MiBLQkQgcG9ydCBhdCAweDYwLDB4NjQgaXJxIDEKWyAgICA0LjYwODcz
NV0gc2VyaW86IGk4MDQyIEFVWCBwb3J0IGF0IDB4NjAsMHg2NCBpcnEgMTIKWyAgICA0LjYwODkx
MF0gbW91c2VkZXY6IFBTLzIgbW91c2UgZGV2aWNlIGNvbW1vbiBmb3IgYWxsIG1pY2UKWyAgICA0
LjYwODk5MV0gcnRjX2Ntb3MgMDA6MDQ6IFJUQyBjYW4gd2FrZSBmcm9tIFM0ClsgICAgNC42MDkx
ODZdIHJ0Y19jbW9zIDAwOjA0OiBydGMgY29yZTogcmVnaXN0ZXJlZCBydGNfY21vcyBhcyBydGMw
ClsgICAgNC42MDkyNzhdIHJ0YzA6IGFsYXJtcyB1cCB0byBvbmUgbW9udGgsIHkzaywgMTE0IGJ5
dGVzIG52cmFtClsgICAgNC42MDk0MzFdIFRDUCBjdWJpYyByZWdpc3RlcmVkClsgICAgNC42MDk1
MDJdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTAKWyAgICA0LjYwOTgwOV0gTW9i
aWxlIElQdjYKWyAgICA0LjYwOTgzN10gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAx
NwpbICAgIDQuNjA5ODY5XSBSZWdpc3RlcmluZyB0aGUgZG5zX3Jlc29sdmVyIGtleSB0eXBlClsg
ICAgNC42MTAwMzddIFBNOiBIaWJlcm5hdGlvbiBpbWFnZSBub3QgcHJlc2VudCBvciBjb3VsZCBu
b3QgYmUgbG9hZGVkLgpbICAgIDQuNjEwMDQ4XSByZWdpc3RlcmVkIHRhc2tzdGF0cyB2ZXJzaW9u
IDEKWyAgICA0LjYxMTA0OF0gcnRjX2Ntb3MgMDA6MDQ6IHNldHRpbmcgc3lzdGVtIGNsb2NrIHRv
IDIwMTItMDItMjIgMjI6MDc6MjAgVVRDICgxMzI5OTQ4NDQwKQpbICAgIDQuNjExMTUyXSBJbml0
aWFsaXppbmcgbmV0d29yayBkcm9wIG1vbml0b3Igc2VydmljZQpbICAgIDQuNjExMzgzXSBGcmVl
aW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA1NjhrIGZyZWVkClsgICAgNC42MTE0NjldIFdyaXRl
IHByb3RlY3RpbmcgdGhlIGtlcm5lbCByZWFkLW9ubHkgZGF0YTogNjE0NGsKWyAgICA0LjYxMzQy
OF0gRnJlZWluZyB1bnVzZWQga2VybmVsIG1lbW9yeTogNzEyayBmcmVlZApbICAgIDQuNjEzNzEx
XSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA2ODRrIGZyZWVkClsgICAgNC42MzM0NTVd
IHVkZXZkWzUwXTogc3RhcnRpbmcgdmVyc2lvbiAxNzUKWyAgICA0LjY2NzA2OV0gdXNiY29yZTog
cmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2JmcwpbICAgIDQuNjY3MTM0XSB1c2Jj
b3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIGh1YgpbICAgIDQuNjc3MDQ0XSBT
Q1NJIHN1YnN5c3RlbSBpbml0aWFsaXplZApbICAgIDQuNjc5NTQ5XSB1c2Jjb3JlOiByZWdpc3Rl
cmVkIG5ldyBkZXZpY2UgZHJpdmVyIHVzYgpbICAgIDQuNjgwMjg2XSB4ZW46IHJlZ2lzdGVyaW5n
IGdzaSAxNyB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuNjgwMjkyXSB4ZW5fbWFwX3Bp
cnFfZ3NpOiByZXR1cm5pbmcgaXJxIDE3IGZvciBnc2kgMTcKWyAgICA0LjY4MDMzMV0geGVuOiAt
LT4gcGlycT0xNyAtPiBpcnE9MTcgKGdzaT0xNykKWyAgICA0LjY4MDMzM10gQWxyZWFkeSBzZXR1
cCB0aGUgR1NJIDoxNwpbICAgIDQuNjgwMzcwXSB4aGNpX2hjZCAwMDAwOjA1OjAwLjA6IFBDSSBJ
TlQgQSAtPiBHU0kgMTcgKGxldmVsLCBsb3cpIC0+IElSUSAxNwpbICAgIDQuNjgwNDQxXSB4aGNp
X2hjZCAwMDAwOjA1OjAwLjA6IHNldHRpbmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuNjgw
NDQ3XSB4aGNpX2hjZCAwMDAwOjA1OjAwLjA6IHhIQ0kgSG9zdCBDb250cm9sbGVyClsgICAgNC42
ODA1MDNdIHhoY2lfaGNkIDAwMDA6MDU6MDAuMDogbmV3IFVTQiBidXMgcmVnaXN0ZXJlZCwgYXNz
aWduZWQgYnVzIG51bWJlciAxClsgICAgNC42ODA3NzBdIHhoY2lfaGNkIDAwMDA6MDU6MDAuMDog
aXJxIDE3LCBpbyBtZW0gMHhmYmMwMDAwMApbICAgIDQuNjgwODYwXSB4aGNpX2hjZCAwMDAwOjA1
OjAwLjA6IEZhaWxlZCB0byBlbmFibGUgTVNJLVgKWyAgICA0LjY4MTE0OV0gdXNiIHVzYjE6IE5l
dyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMgpbICAgIDQu
NjgxMTg5XSB1c2IgdXNiMTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9
MiwgU2VyaWFsTnVtYmVyPTEKWyAgICA0LjY4MTI0MV0gdXNiIHVzYjE6IFByb2R1Y3Q6IHhIQ0kg
SG9zdCBDb250cm9sbGVyClsgICAgNC42ODEyNzddIHVzYiB1c2IxOiBNYW51ZmFjdHVyZXI6IExp
bnV4IDMuMi4wLTEtYW1kNjQgeGhjaV9oY2QKWyAgICA0LjY4MTMxNV0gdXNiIHVzYjE6IFNlcmlh
bE51bWJlcjogMDAwMDowNTowMC4wClsgICAgNC42ODU0NzNdIHhIQ0kgeGhjaV9hZGRfZW5kcG9p
bnQgY2FsbGVkIGZvciByb290IGh1YgpbICAgIDQuNjg1NDc2XSB4SENJIHhoY2lfY2hlY2tfYmFu
ZHdpZHRoIGNhbGxlZCBmb3Igcm9vdCBodWIKWyAgICA0LjY4NTUxMF0gaHViIDEtMDoxLjA6IFVT
QiBodWIgZm91bmQKWyAgICA0LjY4NTU1NV0gaHViIDEtMDoxLjA6IDIgcG9ydHMgZGV0ZWN0ZWQK
WyAgICA0LjY4NTY4OF0geGhjaV9oY2QgMDAwMDowNTowMC4wOiB4SENJIEhvc3QgQ29udHJvbGxl
cgpbICAgIDQuNjg1NzMzXSB4aGNpX2hjZCAwMDAwOjA1OjAwLjA6IG5ldyBVU0IgYnVzIHJlZ2lz
dGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMgpbICAgIDQuNjg1ODMxXSB1c2IgdXNiMjogTmV3
IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAzClsgICAgNC42
ODU4NzRdIHVzYiB1c2IyOiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0y
LCBTZXJpYWxOdW1iZXI9MQpbICAgIDQuNjg1OTI2XSB1c2IgdXNiMjogUHJvZHVjdDogeEhDSSBI
b3N0IENvbnRyb2xsZXIKWyAgICA0LjY4NTk2M10gdXNiIHVzYjI6IE1hbnVmYWN0dXJlcjogTGlu
dXggMy4yLjAtMS1hbWQ2NCB4aGNpX2hjZApbICAgIDQuNjg2MDAxXSB1c2IgdXNiMjogU2VyaWFs
TnVtYmVyOiAwMDAwOjA1OjAwLjAKWyAgICA0LjY4ODMxOV0geEhDSSB4aGNpX2FkZF9lbmRwb2lu
dCBjYWxsZWQgZm9yIHJvb3QgaHViClsgICAgNC42ODgzMjJdIHhIQ0kgeGhjaV9jaGVja19iYW5k
d2lkdGggY2FsbGVkIGZvciByb290IGh1YgpbICAgIDQuNjg4MzU2XSBodWIgMi0wOjEuMDogVVNC
IGh1YiBmb3VuZApbICAgIDQuNjg4Mzk5XSBodWIgMi0wOjEuMDogMiBwb3J0cyBkZXRlY3RlZApb
ICAgIDQuNzAwNTE2XSBlaGNpX2hjZDogVVNCIDIuMCAnRW5oYW5jZWQnIEhvc3QgQ29udHJvbGxl
ciAoRUhDSSkgRHJpdmVyClsgICAgNC43MDA1ODNdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE2IHRy
aWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAgNC43MDA1ODldIHhlbl9tYXBfcGlycV9nc2k6IHJl
dHVybmluZyBpcnEgMTYgZm9yIGdzaSAxNgpbICAgIDQuNzAwNjI4XSB4ZW46IC0tPiBwaXJxPTE2
IC0+IGlycT0xNiAoZ3NpPTE2KQpbICAgIDQuNzAwNjMxXSBBbHJlYWR5IHNldHVwIHRoZSBHU0kg
OjE2ClsgICAgNC43MDA2NjddIGVoY2lfaGNkIDAwMDA6MDA6MWEuMDogUENJIElOVCBBIC0+IEdT
SSAxNiAobGV2ZWwsIGxvdykgLT4gSVJRIDE2ClsgICAgNC43MDA3MjhdIGVoY2lfaGNkIDAwMDA6
MDA6MWEuMDogc2V0dGluZyBsYXRlbmN5IHRpbWVyIHRvIDY0ClsgICAgNC43MDA3MzRdIGVoY2lf
aGNkIDAwMDA6MDA6MWEuMDogRUhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICA0LjcwMDc4MF0gZWhj
aV9oY2QgMDAwMDowMDoxYS4wOiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMg
bnVtYmVyIDMKWyAgICA0LjcwMDg4Ml0gZWhjaV9oY2QgMDAwMDowMDoxYS4wOiBkZWJ1ZyBwb3J0
IDIKWyAgICA0LjcwNDgyM10gZWhjaV9oY2QgMDAwMDowMDoxYS4wOiBjYWNoZSBsaW5lIHNpemUg
b2YgNjQgaXMgbm90IHN1cHBvcnRlZApbICAgIDQuNzA1MjU1XSBlaGNpX2hjZCAwMDAwOjAwOjFh
LjA6IGlycSAxNiwgaW8gbWVtIDB4ZmJmMDMwMDAKWyAgICA0LjcwNzk1M10geGVuOiByZWdpc3Rl
cmluZyBnc2kgMTggdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgICA0LjcwNzk1N10geGVuX21h
cF9waXJxX2dzaTogcmV0dXJuaW5nIGlycSAxOCBmb3IgZ3NpIDE4ClsgICAgNC43MDgwMjZdIHhl
bjogLS0+IHBpcnE9MTggLT4gaXJxPTE4IChnc2k9MTgpClsgICAgNC43MDgwMjhdIEFscmVhZHkg
c2V0dXAgdGhlIEdTSSA6MTgKWyAgICA0LjcwODA5N10geGhjaV9oY2QgMDAwMDowNjowMC4wOiBQ
Q0kgSU5UIEEgLT4gR1NJIDE4IChsZXZlbCwgbG93KSAtPiBJUlEgMTgKWyAgICA0LjcwODIwM10g
eGhjaV9oY2QgMDAwMDowNjowMC4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0
LjcwODIwOV0geGhjaV9oY2QgMDAwMDowNjowMC4wOiB4SENJIEhvc3QgQ29udHJvbGxlcgpbICAg
IDQuNzA4MjgxXSB4aGNpX2hjZCAwMDAwOjA2OjAwLjA6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQs
IGFzc2lnbmVkIGJ1cyBudW1iZXIgNApbICAgIDQuNzA4NjA5XSB4aGNpX2hjZCAwMDAwOjA2OjAw
LjA6IGlycSAxOCwgaW8gbWVtIDB4ZmJiMDAwMDAKWyAgICA0LjcwODc0MF0geGhjaV9oY2QgMDAw
MDowNjowMC4wOiBGYWlsZWQgdG8gZW5hYmxlIE1TSS1YClsgICAgNC43MDkwODhdIHVzYiB1c2I0
OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDIKWyAg
ICA0LjcwOTE2Ml0gdXNiIHVzYjQ6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9k
dWN0PTIsIFNlcmlhbE51bWJlcj0xClsgICAgNC43MDkyMjFdIHVzYiB1c2I0OiBQcm9kdWN0OiB4
SENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDQuNzA5MjU4XSB1c2IgdXNiNDogTWFudWZhY3R1cmVy
OiBMaW51eCAzLjIuMC0xLWFtZDY0IHhoY2lfaGNkClsgICAgNC43MDkyOTVdIHVzYiB1c2I0OiBT
ZXJpYWxOdW1iZXI6IDAwMDA6MDY6MDAuMApbICAgIDQuNzA5NDE2XSB4SENJIHhoY2lfYWRkX2Vu
ZHBvaW50IGNhbGxlZCBmb3Igcm9vdCBodWIKWyAgICA0LjcwOTQxOV0geEhDSSB4aGNpX2NoZWNr
X2JhbmR3aWR0aCBjYWxsZWQgZm9yIHJvb3QgaHViClsgICAgNC43MDk0NTNdIGh1YiA0LTA6MS4w
OiBVU0IgaHViIGZvdW5kClsgICAgNC43MDk0OTZdIGh1YiA0LTA6MS4wOiAyIHBvcnRzIGRldGVj
dGVkClsgICAgNC43MDk2MDhdIHhoY2lfaGNkIDAwMDA6MDY6MDAuMDogeEhDSSBIb3N0IENvbnRy
b2xsZXIKWyAgICA0LjcwOTY1MV0geGhjaV9oY2QgMDAwMDowNjowMC4wOiBuZXcgVVNCIGJ1cyBy
ZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDUKWyAgICA0LjcwOTcyOF0gdXNiIHVzYjU6
IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMwpbICAg
IDQuNzA5NzY4XSB1c2IgdXNiNTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1
Y3Q9MiwgU2VyaWFsTnVtYmVyPTEKWyAgICA0LjcwOTgxOV0gdXNiIHVzYjU6IFByb2R1Y3Q6IHhI
Q0kgSG9zdCBDb250cm9sbGVyClsgICAgNC43MDk4NTVdIHVzYiB1c2I1OiBNYW51ZmFjdHVyZXI6
IExpbnV4IDMuMi4wLTEtYW1kNjQgeGhjaV9oY2QKWyAgICA0LjcwOTg5M10gdXNiIHVzYjU6IFNl
cmlhbE51bWJlcjogMDAwMDowNjowMC4wClsgICAgNC43MTAwMzJdIGxpYmF0YSB2ZXJzaW9uIDMu
MDAgbG9hZGVkLgpbICAgIDQuNzEwMTM3XSB4SENJIHhoY2lfYWRkX2VuZHBvaW50IGNhbGxlZCBm
b3Igcm9vdCBodWIKWyAgICA0LjcxMDE0MF0geEhDSSB4aGNpX2NoZWNrX2JhbmR3aWR0aCBjYWxs
ZWQgZm9yIHJvb3QgaHViClsgICAgNC43MTAxNzFdIGh1YiA1LTA6MS4wOiBVU0IgaHViIGZvdW5k
ClsgICAgNC43MTAyMTRdIGh1YiA1LTA6MS4wOiAyIHBvcnRzIGRldGVjdGVkClsgICAgNC43Mjc5
MDZdIGVoY2lfaGNkIDAwMDA6MDA6MWEuMDogVVNCIDIuMCBzdGFydGVkLCBFSENJIDEuMDAKWyAg
ICA0LjcyNzk3N10gdXNiIHVzYjM6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZi
LCBpZFByb2R1Y3Q9MDAwMgpbICAgIDQuNzI4MDIyXSB1c2IgdXNiMzogTmV3IFVTQiBkZXZpY2Ug
c3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTEKWyAgICA0LjcyODA3N10g
dXNiIHVzYjM6IFByb2R1Y3Q6IEVIQ0kgSG9zdCBDb250cm9sbGVyClsgICAgNC43MjgxMTVdIHVz
YiB1c2IzOiBNYW51ZmFjdHVyZXI6IExpbnV4IDMuMi4wLTEtYW1kNjQgZWhjaV9oY2QKWyAgICA0
LjcyODE1NF0gdXNiIHVzYjM6IFNlcmlhbE51bWJlcjogMDAwMDowMDoxYS4wClsgICAgNC43Mjgz
MzVdIGh1YiAzLTA6MS4wOiBVU0IgaHViIGZvdW5kClsgICAgNC43MjgzNzRdIGh1YiAzLTA6MS4w
OiAyIHBvcnRzIGRldGVjdGVkClsgICAgNC43Mjg1MDRdIGFoY2kgMDAwMDowMDoxZi4yOiB2ZXJz
aW9uIDMuMApbICAgIDQuNzI4NTE5XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxOSB0cmlnZ2VyaW5n
IDAgcG9sYXJpdHkgMQpbICAgIDQuNzI4NTI3XSB4ZW5fbWFwX3BpcnFfZ3NpOiByZXR1cm5pbmcg
aXJxIDE5IGZvciBnc2kgMTkKWyAgICA0LjcyODU3M10geGVuOiAtLT4gcGlycT0xOSAtPiBpcnE9
MTkgKGdzaT0xOSkKWyAgICA0LjcyODU3Nl0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDoxOQpbICAg
IDQuNzI4NjEzXSBhaGNpIDAwMDA6MDA6MWYuMjogUENJIElOVCBCIC0+IEdTSSAxOSAobGV2ZWws
IGxvdykgLT4gSVJRIDE5ClsgICAgNC43NDE1ODFdIHRnMy5jOnYzLjEyMSAoTm92ZW1iZXIgMiwg
MjAxMSkKWyAgICA0Ljc0MTYzMl0geGVuOiByZWdpc3RlcmluZyBnc2kgMTcgdHJpZ2dlcmluZyAw
IHBvbGFyaXR5IDEKWyAgICA0Ljc0MTYzNl0geGVuX21hcF9waXJxX2dzaTogcmV0dXJuaW5nIGly
cSAxNyBmb3IgZ3NpIDE3ClsgICAgNC43NDE2NzRdIHhlbjogLS0+IHBpcnE9MTcgLT4gaXJxPTE3
IChnc2k9MTcpClsgICAgNC43NDE2NzZdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6MTcKWyAgICA0
Ljc0MTcxMV0gdGczIDAwMDA6MGQ6MDAuMDogUENJIElOVCBBIC0+IEdTSSAxNyAobGV2ZWwsIGxv
dykgLT4gSVJRIDE3ClsgICAgNC43NDE3NjJdIHRnMyAwMDAwOjBkOjAwLjA6IHNldHRpbmcgbGF0
ZW5jeSB0aW1lciB0byA2NApbICAgIDQuNzQzOTIwXSBhaGNpIDAwMDA6MDA6MWYuMjogQUhDSSAw
MDAxLjAzMDAgMzIgc2xvdHMgNiBwb3J0cyA2IEdicHMgMHgzZiBpbXBsIFNBVEEgbW9kZQpbICAg
IDQuNzQ1Mjc4XSBhaGNpIDAwMDA6MDA6MWYuMjogZmxhZ3M6IDY0Yml0IG5jcSBzbnRmIHBtIGxl
ZCBjbG8gcGlvIHNsdW0gcGFydCBlbXMgYXBzdCAKWyAgICA0Ljc0NTMzOF0gYWhjaSAwMDAwOjAw
OjFmLjI6IHNldHRpbmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuNzQ5OTYwXSB4ZW46IHJl
Z2lzdGVyaW5nIGdzaSAxNiB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuNzQ5OTY1XSB4
ZW5fbWFwX3BpcnFfZ3NpOiByZXR1cm5pbmcgaXJxIDE2IGZvciBnc2kgMTYKWyAgICA0Ljc1MDAw
M10geGVuOiAtLT4gcGlycT0xNiAtPiBpcnE9MTYgKGdzaT0xNikKWyAgICA0Ljc1MDAwNV0gQWxy
ZWFkeSBzZXR1cCB0aGUgR1NJIDoxNgpbICAgIDQuNzUwMDQxXSBmaXJld2lyZV9vaGNpIDAwMDA6
MGM6MDAuMDogUENJIElOVCBBIC0+IEdTSSAxNiAobGV2ZWwsIGxvdykgLT4gSVJRIDE2ClsgICAg
NC43NTAxMDJdIGZpcmV3aXJlX29oY2kgMDAwMDowYzowMC4wOiBzZXR0aW5nIGxhdGVuY3kgdGlt
ZXIgdG8gNjQKWyAgICA0Ljc2OTI5Ml0gdGczIDAwMDA6MGQ6MDAuMDogZXRoMDogVGlnb24zIFtw
YXJ0bm8oQkNNNTc3ODEpIHJldiA1Nzc4NTEwMF0gKFBDSSBFeHByZXNzKSBNQUMgYWRkcmVzcyAw
MDoyNToyMjpmNjpiOToyZQpbICAgIDQuNzY5MzY0XSB0ZzMgMDAwMDowZDowMC4wOiBldGgwOiBh
dHRhY2hlZCBQSFkgaXMgNTc3NjUgKDEwLzEwMC8xMDAwQmFzZS1UIEV0aGVybmV0KSAoV2lyZVNw
ZWVkWzFdLCBFRUVbMV0pClsgICAgNC43Njk0MjFdIHRnMyAwMDAwOjBkOjAwLjA6IGV0aDA6IFJY
Y3N1bXNbMV0gTGlua0NoZ1JFR1swXSBNSWlycVswXSBBU0ZbMF0gVFNPY2FwWzFdClsgICAgNC43
Njk0NzldIHRnMyAwMDAwOjBkOjAwLjA6IGV0aDA6IGRtYV9yd2N0cmxbMDAwMDAwMDFdIGRtYV9t
YXNrWzY0LWJpdF0KWyAgICA0Ljc4NDU1NF0gc2NzaTAgOiBhaGNpClsgICAgNC43ODQ2ODRdIHNj
c2kxIDogYWhjaQpbICAgIDQuNzg0Nzg4XSBzY3NpMiA6IGFoY2kKWyAgICA0Ljc4NDg5Ml0gc2Nz
aTMgOiBhaGNpClsgICAgNC43ODUwMTFdIHNjc2k0IDogYWhjaQpbICAgIDQuNzg1MTE3XSBzY3Np
NSA6IGFoY2kKWyAgICA0Ljc4NTM0MV0gYXRhMTogU0FUQSBtYXggVURNQS8xMzMgYWJhciBtMjA0
OEAweGZiZjAxMDAwIHBvcnQgMHhmYmYwMTEwMCBpcnEgMzAwClsgICAgNC43ODUzOTBdIGF0YTI6
IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTIwNDhAMHhmYmYwMTAwMCBwb3J0IDB4ZmJmMDExODAg
aXJxIDMwMApbICAgIDQuNzg1NDM3XSBhdGEzOiBTQVRBIG1heCBVRE1BLzEzMyBhYmFyIG0yMDQ4
QDB4ZmJmMDEwMDAgcG9ydCAweGZiZjAxMjAwIGlycSAzMDAKWyAgICA0Ljc4NTQ4NV0gYXRhNDog
U0FUQSBtYXggVURNQS8xMzMgYWJhciBtMjA0OEAweGZiZjAxMDAwIHBvcnQgMHhmYmYwMTI4MCBp
cnEgMzAwClsgICAgNC43ODU1MzNdIGF0YTU6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTIwNDhA
MHhmYmYwMTAwMCBwb3J0IDB4ZmJmMDEzMDAgaXJxIDMwMApbICAgIDQuNzg1NTgwXSBhdGE2OiBT
QVRBIG1heCBVRE1BLzEzMyBhYmFyIG0yMDQ4QDB4ZmJmMDEwMDAgcG9ydCAweGZiZjAxMzgwIGly
cSAzMDAKWyAgICA0Ljc4NTY1NV0geGVuOiByZWdpc3RlcmluZyBnc2kgMTYgdHJpZ2dlcmluZyAw
IHBvbGFyaXR5IDEKWyAgICA0Ljc4NTY1OV0geGVuX21hcF9waXJxX2dzaTogcmV0dXJuaW5nIGly
cSAxNiBmb3IgZ3NpIDE2ClsgICAgNC43ODU3MDBdIHhlbjogLS0+IHBpcnE9MTYgLT4gaXJxPTE2
IChnc2k9MTYpClsgICAgNC43ODU3MDJdIEFscmVhZHkgc2V0dXAgdGhlIEdTSSA6MTYKWyAgICA0
Ljc4NTc0MF0gYWhjaSAwMDAwOjA0OjAwLjA6IFBDSSBJTlQgQSAtPiBHU0kgMTYgKGxldmVsLCBs
b3cpIC0+IElSUSAxNgpbICAgIDQuNzg1OTkyXSBhaGNpIDAwMDA6MDQ6MDAuMDogQUhDSSAwMDAx
LjAwMDAgMzIgc2xvdHMgMiBwb3J0cyA2IEdicHMgMHgzIGltcGwgU0FUQSBtb2RlClsgICAgNC43
ODYwNDBdIGFoY2kgMDAwMDowNDowMC4wOiBmbGFnczogNjRiaXQgbmNxIHNudGYgbGVkIG9ubHkg
cG1wIGZicyBwaW8gc2x1bSBwYXJ0IHN4cyAKWyAgICA0Ljc4NjA5M10gYWhjaSAwMDAwOjA0OjAw
LjA6IHNldHRpbmcgbGF0ZW5jeSB0aW1lciB0byA2NApbICAgIDQuNzg2MzgzXSB4ZW46IHJlZ2lz
dGVyaW5nIGdzaSAyMyB0cmlnZ2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgIDQuNzg2MzkyXSB4ZW46
IC0tPiBwaXJxPTIzIC0+IGlycT0yMyAoZ3NpPTIzKQpbICAgIDQuNzg2NDA2XSBzY3NpNiA6IGFo
Y2kKWyAgICA0Ljc4NjQxMl0gZWhjaV9oY2QgMDAwMDowMDoxZC4wOiBQQ0kgSU5UIEEgLT4gR1NJ
IDIzIChsZXZlbCwgbG93KSAtPiBJUlEgMjMKWyAgICA0Ljc4NjQzNl0gZWhjaV9oY2QgMDAwMDow
MDoxZC4wOiBzZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgICA0Ljc4NjQ0MV0gZWhjaV9o
Y2QgMDAwMDowMDoxZC4wOiBFSENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDQuNzg2NDUzXSBlaGNp
X2hjZCAwMDAwOjAwOjFkLjA6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBu
dW1iZXIgNgpbICAgIDQuNzg2NTEyXSBlaGNpX2hjZCAwMDAwOjAwOjFkLjA6IGRlYnVnIHBvcnQg
MgpbICAgIDQuNzg2ODM0XSBzY3NpNyA6IGFoY2kKWyAgICA0Ljc4Njk0M10gYXRhNzogU0FUQSBt
YXggVURNQS8xMzMgYWJhciBtMjA0OEAweGZiZDEwMDAwIHBvcnQgMHhmYmQxMDEwMCBpcnEgMzAx
ClsgICAgNC43ODcwNDBdIGF0YTg6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTIwNDhAMHhmYmQx
MDAwMCBwb3J0IDB4ZmJkMTAxODAgaXJxIDMwMQpbICAgIDQuNzkwMzkxXSBlaGNpX2hjZCAwMDAw
OjAwOjFkLjA6IGNhY2hlIGxpbmUgc2l6ZSBvZiA2NCBpcyBub3Qgc3VwcG9ydGVkClsgICAgNC43
OTA0MzFdIGVoY2lfaGNkIDAwMDA6MDA6MWQuMDogaXJxIDIzLCBpbyBtZW0gMHhmYmYwMjAwMApb
ICAgIDQuODAzODkyXSBlaGNpX2hjZCAwMDAwOjAwOjFkLjA6IFVTQiAyLjAgc3RhcnRlZCwgRUhD
SSAxLjAwClsgICAgNC44MDM5NjZdIHVzYiB1c2I2OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRW
ZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDIKWyAgICA0LjgwNDAwMV0gdXNiIHVzYjY6IE5ldyBV
U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xClsgICAg
NC44MDQwNDZdIHVzYiB1c2I2OiBQcm9kdWN0OiBFSENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDQu
ODA0MDc3XSB1c2IgdXNiNjogTWFudWZhY3R1cmVyOiBMaW51eCAzLjIuMC0xLWFtZDY0IGVoY2lf
aGNkClsgICAgNC44MDQxMTBdIHVzYiB1c2I2OiBTZXJpYWxOdW1iZXI6IDAwMDA6MDA6MWQuMApb
ICAgIDQuODA0MjQ0XSBodWIgNi0wOjEuMDogVVNCIGh1YiBmb3VuZApbICAgIDQuODA0MjgxXSBo
dWIgNi0wOjEuMDogMiBwb3J0cyBkZXRlY3RlZApbICAgIDQuODExOTYxXSBmaXJld2lyZV9vaGNp
OiBBZGRlZCBmdy1vaGNpIGRldmljZSAwMDAwOjBjOjAwLjAsIE9IQ0kgdjEuMTAsIDQgSVIgKyA4
IElUIGNvbnRleHRzLCBxdWlya3MgMHgxMQpbICAgIDQuOTk1OTQyXSB1c2IgMS0yOiBuZXcgaGln
aC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAyIHVzaW5nIHhoY2lfaGNkClsgICAgNS4wMTMxOTZd
IHVzYiAxLTI6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0wNDA5LCBpZFByb2R1Y3Q9
MDA1YQpbICAgIDUuMDEzMjU0XSB1c2IgMS0yOiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9
MCwgUHJvZHVjdD0wLCBTZXJpYWxOdW1iZXI9MApbICAgIDUuMDEzNDgwXSBodWIgMS0yOjEuMDog
VVNCIGh1YiBmb3VuZApbICAgIDUuMDEzNjgyXSB4aGNpX2hjZCAwMDAwOjA1OjAwLjA6IFdBUk46
IHNob3J0IHRyYW5zZmVyIG9uIGNvbnRyb2wgZXAKWyAgICA1LjAxMzgxNl0gaHViIDEtMjoxLjA6
IDQgcG9ydHMgZGV0ZWN0ZWQKWyAgICA1LjEwMzkwNF0gYXRhMzogU0FUQSBsaW5rIGRvd24gKFNT
dGF0dXMgMCBTQ29udHJvbCAzMDApClsgICAgNS4xMDM5OTJdIGF0YTY6IFNBVEEgbGluayBkb3du
IChTU3RhdHVzIDAgU0NvbnRyb2wgMzAwKQpbICAgIDUuMTA0MDA2XSBhdGE3OiBTQVRBIGxpbmsg
ZG93biAoU1N0YXR1cyAwIFNDb250cm9sIDMzMCkKWyAgICA1LjEwNDA1NV0gYXRhODogU0FUQSBs
aW5rIGRvd24gKFNTdGF0dXMgMCBTQ29udHJvbCAzMzApClsgICAgNS4xMDQxNzBdIGF0YTE6IFNB
VEEgbGluayBkb3duIChTU3RhdHVzIDAgU0NvbnRyb2wgMzAwKQpbICAgIDUuMTA0MjMwXSBhdGE1
OiBTQVRBIGxpbmsgZG93biAoU1N0YXR1cyAwIFNDb250cm9sIDMwMCkKWyAgICA1LjExMTkxMF0g
YXRhNDogU0FUQSBsaW5rIGRvd24gKFNTdGF0dXMgMCBTQ29udHJvbCAzMDApClsgICAgNS4xMTE5
OTRdIGF0YTI6IFNBVEEgbGluayB1cCA2LjAgR2JwcyAoU1N0YXR1cyAxMzMgU0NvbnRyb2wgMzAw
KQpbICAgIDUuMTEyMzA0XSBhdGEyLjAwOiBBVEEtODogSU5URUwgU1NEU0MyTUgxMjBBMiwgUFBH
NCwgbWF4IFVETUEvMTMzClsgICAgNS4xMTIzNTVdIGF0YTIuMDA6IDIzNDQ0MTY0OCBzZWN0b3Jz
LCBtdWx0aSAxNjogTEJBNDggTkNRIChkZXB0aCAzMS8zMiksIEFBClsgICAgNS4xMTI3MDNdIGF0
YTIuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEvMTMzClsgICAgNS4xMTI4NTRdIHNjc2kgMTowOjA6
MDogRGlyZWN0LUFjY2VzcyAgICAgQVRBICAgICAgSU5URUwgU1NEU0MyTUgxMiBQUEc0IFBROiAw
IEFOU0k6IDUKWyAgICA1LjExNjc4Ml0gc2QgMTowOjA6MDogW3NkYV0gMjM0NDQxNjQ4IDUxMi1i
eXRlIGxvZ2ljYWwgYmxvY2tzOiAoMTIwIEdCLzExMSBHaUIpClsgICAgNS4xMTY5NTldIHNkIDE6
MDowOjA6IFtzZGFdIFdyaXRlIFByb3RlY3QgaXMgb2ZmClsgICAgNS4xMTY5OTFdIHNkIDE6MDow
OjA6IFtzZGFdIE1vZGUgU2Vuc2U6IDAwIDNhIDAwIDAwClsgICAgNS4xMTcwMjZdIHNkIDE6MDow
OjA6IFtzZGFdIFdyaXRlIGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBlbmFibGVkLCBkb2Vz
bid0IHN1cHBvcnQgRFBPIG9yIEZVQQpbICAgIDUuMTE5MDcwXSAgc2RhOiBzZGExIHNkYTIgc2Rh
MwpbICAgIDUuMTE5NDgwXSBzZCAxOjA6MDowOiBbc2RhXSBBdHRhY2hlZCBTQ1NJIGRpc2sKWyAg
ICA1LjEyMzg4N10gdXNiIDMtMTogbmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1
c2luZyBlaGNpX2hjZApbICAgIDUuMjU2MjM1XSB1c2IgMy0xOiBOZXcgVVNCIGRldmljZSBmb3Vu
ZCwgaWRWZW5kb3I9ODA4NywgaWRQcm9kdWN0PTAwMjQKWyAgICA1LjI1NjI5NF0gdXNiIDMtMTog
TmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTAsIFByb2R1Y3Q9MCwgU2VyaWFsTnVtYmVyPTAK
WyAgICA1LjI1NjUzNV0gaHViIDMtMToxLjA6IFVTQiBodWIgZm91bmQKWyAgICA1LjI1NjczNl0g
aHViIDMtMToxLjA6IDYgcG9ydHMgZGV0ZWN0ZWQKWyAgICA1LjMxMjI0M10gZmlyZXdpcmVfY29y
ZTogY3JlYXRlZCBkZXZpY2UgZncwOiBHVUlEIDAwOGYxMzAwNWQ2NTBmMDAsIFM0MDAKWyAgICA1
LjM2NzkwNF0gdXNiIDYtMTogbmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2lu
ZyBlaGNpX2hjZApbICAgIDUuMzg1ODY2XSBkZXZpY2UtbWFwcGVyOiB1ZXZlbnQ6IHZlcnNpb24g
MS4wLjMKWyAgICA1LjM4NTk3Nl0gZGV2aWNlLW1hcHBlcjogaW9jdGw6IDQuMjIuMC1pb2N0bCAo
MjAxMS0xMC0xOSkgaW5pdGlhbGlzZWQ6IGRtLWRldmVsQHJlZGhhdC5jb20KWyAgICA1LjUwMDIy
NV0gdXNiIDYtMTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTgwODcsIGlkUHJvZHVj
dD0wMDI0ClsgICAgNS41MDAyMzBdIHVzYiA2LTE6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1m
cj0wLCBQcm9kdWN0PTAsIFNlcmlhbE51bWJlcj0wClsgICAgNS41MDA1MTJdIGh1YiA2LTE6MS4w
OiBVU0IgaHViIGZvdW5kClsgICAgNS41MDA1OTVdIGh1YiA2LTE6MS4wOiA4IHBvcnRzIGRldGVj
dGVkClsgICAgNS41NzE5NzddIHVzYiAzLTEuNDogbmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBu
dW1iZXIgMyB1c2luZyBlaGNpX2hjZApbICAgIDUuNjY0NzIzXSB1c2IgMy0xLjQ6IE5ldyBVU0Ig
ZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0wNzgxLCBpZFByb2R1Y3Q9NTU2NwpbICAgIDUuNjY0NzI3
XSB1c2IgMy0xLjQ6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNl
cmlhbE51bWJlcj0zClsgICAgNS42NjQ3MzFdIHVzYiAzLTEuNDogUHJvZHVjdDogQ3J1emVyIEJs
YWRlClsgICAgNS42NjQ3MzRdIHVzYiAzLTEuNDogTWFudWZhY3R1cmVyOiBTYW5EaXNrClsgICAg
NS42NjQ3MzZdIHVzYiAzLTEuNDogU2VyaWFsTnVtYmVyOiAyMDA1MTUzNTgyMThCNUEzM0NCRQpb
ICAgIDUuNjY3MDYyXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVh
cwpbICAgIDUuNjY3NzcxXSBJbml0aWFsaXppbmcgVVNCIE1hc3MgU3RvcmFnZSBkcml2ZXIuLi4K
WyAgICA1LjY2Nzg4OF0gc2NzaTggOiB1c2Itc3RvcmFnZSAzLTEuNDoxLjAKWyAgICA1LjY2Nzk4
NF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2Itc3RvcmFnZQpb
ICAgIDUuNjY3OTg3XSBVU0IgTWFzcyBTdG9yYWdlIHN1cHBvcnQgcmVnaXN0ZXJlZC4KWyAgICA1
Ljc3MTk2N10gdXNiIDYtMS4xOiBuZXcgbG93LXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDMgdXNp
bmcgZWhjaV9oY2QKWyAgICA1Ljg4MjExNV0gdXNiIDYtMS4xOiBOZXcgVVNCIGRldmljZSBmb3Vu
ZCwgaWRWZW5kb3I9MDRkOSwgaWRQcm9kdWN0PTIyMjEKWyAgICA1Ljg4MjExOV0gdXNiIDYtMS4x
OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MCwgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9
MApbICAgIDUuODgyMTIzXSB1c2IgNi0xLjE6IFByb2R1Y3Q6IFVTQiBLZXlib2FyZApbICAgIDUu
ODk1NTMzXSBpbnB1dDogVVNCIEtleWJvYXJkIGFzIC9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDow
MDoxZC4wL3VzYjYvNi0xLzYtMS4xLzYtMS4xOjEuMC9pbnB1dC9pbnB1dDAKWyAgICA1Ljg5NTYw
NF0gZ2VuZXJpYy11c2IgMDAwMzowNEQ5OjIyMjEuMDAwMTogaW5wdXQsaGlkcmF3MDogVVNCIEhJ
RCB2MS4xMCBLZXlib2FyZCBbVVNCIEtleWJvYXJkXSBvbiB1c2ItMDAwMDowMDoxZC4wLTEuMS9p
bnB1dDAKWyAgICA1LjkxODYzNl0gaW5wdXQ6IFVTQiBLZXlib2FyZCBhcyAvZGV2aWNlcy9wY2kw
MDAwOjAwLzAwMDA6MDA6MWQuMC91c2I2LzYtMS82LTEuMS82LTEuMToxLjEvaW5wdXQvaW5wdXQx
ClsgICAgNS45MTg3MDhdIGdlbmVyaWMtdXNiIDAwMDM6MDREOToyMjIxLjAwMDI6IGlucHV0LGhp
ZHJhdzE6IFVTQiBISUQgdjEuMTAgRGV2aWNlIFtVU0IgS2V5Ym9hcmRdIG9uIHVzYi0wMDAwOjAw
OjFkLjAtMS4xL2lucHV0MQpbICAgIDUuOTE4NzI0XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBp
bnRlcmZhY2UgZHJpdmVyIHVzYmhpZApbICAgIDUuOTE4NzI2XSB1c2JoaWQ6IFVTQiBISUQgY29y
ZSBkcml2ZXIKWyAgICA1Ljk1MTk5MV0gdXNiIDYtMS4yOiBuZXcgZnVsbC1zcGVlZCBVU0IgZGV2
aWNlIG51bWJlciA0IHVzaW5nIGVoY2lfaGNkClsgICAgNi4wNDYzNTddIHVzYiA2LTEuMjogTmV3
IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTE1MzIsIGlkUHJvZHVjdD0wMDE1ClsgICAgNi4w
NDYzNjJdIHVzYiA2LTEuMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9
MiwgU2VyaWFsTnVtYmVyPTAKWyAgICA2LjA0NjM2Nl0gdXNiIDYtMS4yOiBQcm9kdWN0OiBSYXpl
ciBOYWdhClsgICAgNi4wNDYzNjhdIHVzYiA2LTEuMjogTWFudWZhY3R1cmVyOiBSYXplcgpbICAg
IDYuMDkyNjMwXSBpbnB1dDogUmF6ZXIgUmF6ZXIgTmFnYSBhcyAvZGV2aWNlcy9wY2kwMDAwOjAw
LzAwMDA6MDA6MWQuMC91c2I2LzYtMS82LTEuMi82LTEuMjoxLjAvaW5wdXQvaW5wdXQyClsgICAg
Ni4wOTI3NTRdIGdlbmVyaWMtdXNiIDAwMDM6MTUzMjowMDE1LjAwMDM6IGlucHV0LGhpZHJhdzI6
IFVTQiBISUQgdjEuMTEgTW91c2UgW1JhemVyIFJhemVyIE5hZ2FdIG9uIHVzYi0wMDAwOjAwOjFk
LjAtMS4yL2lucHV0MApbICAgIDYuMDkzODE1XSBpbnB1dDogUmF6ZXIgUmF6ZXIgTmFnYSBhcyAv
ZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MWQuMC91c2I2LzYtMS82LTEuMi82LTEuMjoxLjEv
aW5wdXQvaW5wdXQzClsgICAgNi4wOTM5MzRdIGdlbmVyaWMtdXNiIDAwMDM6MTUzMjowMDE1LjAw
MDQ6IGlucHV0LGhpZHJhdzM6IFVTQiBISUQgdjEuMTEgS2V5Ym9hcmQgW1JhemVyIFJhemVyIE5h
Z2FdIG9uIHVzYi0wMDAwOjAwOjFkLjAtMS4yL2lucHV0MQpbICAgIDYuNjY4NjM3XSBzY3NpIDg6
MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIFNhbkRpc2sgIENydXplciBCbGFkZSAgICAgMS4wMCBQ
UTogMCBBTlNJOiAyClsgICAgNi42Njk5NzZdIHNkIDg6MDowOjA6IFtzZGJdIDMxMjUwNDMyIDUx
Mi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMTYuMCBHQi8xNC45IEdpQikKWyAgICA2LjY3MDcyM10g
c2QgODowOjA6MDogW3NkYl0gV3JpdGUgUHJvdGVjdCBpcyBvZmYKWyAgICA2LjY3MDcyNl0gc2Qg
ODowOjA6MDogW3NkYl0gTW9kZSBTZW5zZTogMDMgMDAgMDAgMDAKWyAgICA2LjY3MTczOV0gc2Qg
ODowOjA6MDogW3NkYl0gTm8gQ2FjaGluZyBtb2RlIHBhZ2UgcHJlc2VudApbICAgIDYuNjcxNzQ0
XSBzZCA4OjA6MDowOiBbc2RiXSBBc3N1bWluZyBkcml2ZSBjYWNoZTogd3JpdGUgdGhyb3VnaApb
ICAgIDYuNjc0NjA3XSBzZCA4OjA6MDowOiBbc2RiXSBObyBDYWNoaW5nIG1vZGUgcGFnZSBwcmVz
ZW50ClsgICAgNi42NzQ2MTFdIHNkIDg6MDowOjA6IFtzZGJdIEFzc3VtaW5nIGRyaXZlIGNhY2hl
OiB3cml0ZSB0aHJvdWdoClsgICAgNi42NzUzNzNdICBzZGI6IHNkYjEKWyAgICA2LjY3ODIxOV0g
c2QgODowOjA6MDogW3NkYl0gTm8gQ2FjaGluZyBtb2RlIHBhZ2UgcHJlc2VudApbICAgIDYuNjc4
MjIyXSBzZCA4OjA6MDowOiBbc2RiXSBBc3N1bWluZyBkcml2ZSBjYWNoZTogd3JpdGUgdGhyb3Vn
aApbICAgIDYuNjc4MjI1XSBzZCA4OjA6MDowOiBbc2RiXSBBdHRhY2hlZCBTQ1NJIHJlbW92YWJs
ZSBkaXNrClsgICAxMS42OTY5MThdIGFsZzogTm8gdGVzdCBmb3IgX19nY20tYWVzLWFlc25pIChf
X2RyaXZlci1nY20tYWVzLWFlc25pKQpbICAgMTEuNzAwOTc2XSBhbGc6IE5vIHRlc3QgZm9yIF9f
Y2JjLWFlcy1hZXNuaSAoY3J5cHRkKF9fZHJpdmVyLWNiYy1hZXMtYWVzbmkpKQpbICAgMTIuMjgx
NTUzXSBFWFQ0LWZzIChkbS0xKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRh
IG1vZGUuIE9wdHM6IChudWxsKQpbICAgMTIuNTE5MTAzXSB1ZGV2ZFszODNdOiBzdGFydGluZyB2
ZXJzaW9uIDE3NQpbICAgMTIuNjEzODIwXSBpbnB1dDogUG93ZXIgQnV0dG9uIGFzIC9kZXZpY2Vz
L0xOWFNZU1RNOjAwL2RldmljZTowMC9QTlAwQzBDOjAwL2lucHV0L2lucHV0NApbICAgMTIuNjEz
ODg3XSBBQ1BJOiBQb3dlciBCdXR0b24gW1BXUkJdClsgICAxMi42MTM5NzFdIGlucHV0OiBQb3dl
ciBCdXR0b24gYXMgL2RldmljZXMvTE5YU1lTVE06MDAvTE5YUFdSQk46MDAvaW5wdXQvaW5wdXQ1
ClsgICAxMi42MTQwMjVdIEFDUEk6IFBvd2VyIEJ1dHRvbiBbUFdSRl0KWyAgIDEyLjY0MjA5MF0g
d21pOiBNYXBwZXIgbG9hZGVkClsgICAxMi42OTAwMzVdIFtkcm1dIEluaXRpYWxpemVkIGRybSAx
LjEuMCAyMDA2MDgxMApbICAgMTIuNzA0MDc5XSB4ZW46IHJlZ2lzdGVyaW5nIGdzaSAxNiB0cmln
Z2VyaW5nIDAgcG9sYXJpdHkgMQpbICAgMTIuNzA0MDg1XSB4ZW5fbWFwX3BpcnFfZ3NpOiByZXR1
cm5pbmcgaXJxIDE2IGZvciBnc2kgMTYKWyAgIDEyLjcwNDEyNF0geGVuOiAtLT4gcGlycT0xNiAt
PiBpcnE9MTYgKGdzaT0xNikKWyAgIDEyLjcwNDEyNl0gQWxyZWFkeSBzZXR1cCB0aGUgR1NJIDox
NgpbICAgMTIuNzA0MTYyXSBpOTE1IDAwMDA6MDA6MDIuMDogUENJIElOVCBBIC0+IEdTSSAxNiAo
bGV2ZWwsIGxvdykgLT4gSVJRIDE2ClsgICAxMi43MDQyMDZdIGk5MTUgMDAwMDowMDowMi4wOiBz
ZXR0aW5nIGxhdGVuY3kgdGltZXIgdG8gNjQKWyAgIDEyLjcwODgzOV0gcGNpX2hvdHBsdWc6IFBD
SSBIb3QgUGx1ZyBQQ0kgQ29yZSB2ZXJzaW9uOiAwLjUKWyAgIDEyLjc4NzYwOF0gaVRDT192ZW5k
b3Jfc3VwcG9ydDogdmVuZG9yLXN1cHBvcnQ9MApbICAgMTIuNzg5OTAxXSBpbnB1dDogUEMgU3Bl
YWtlciBhcyAvZGV2aWNlcy9wbGF0Zm9ybS9wY3Nwa3IvaW5wdXQvaW5wdXQ2ClsgICAxMi43OTA1
ODRdIGlUQ09fd2R0OiBJbnRlbCBUQ08gV2F0Y2hEb2cgVGltZXIgRHJpdmVyIHYxLjA3ClsgICAx
Mi43OTA3MDldIGlUQ09fd2R0OiBGb3VuZCBhIENvdWdhciBQb2ludCBUQ08gZGV2aWNlIChWZXJz
aW9uPTIsIFRDT0JBU0U9MHgwNDYwKQpbICAgMTIuNzkwODI2XSBpVENPX3dkdDogaW5pdGlhbGl6
ZWQuIGhlYXJ0YmVhdD0zMCBzZWMgKG5vd2F5b3V0PTApClsgICAxMi44NDAwNDZdIHhlbjogcmVn
aXN0ZXJpbmcgZ3NpIDE3IHRyaWdnZXJpbmcgMCBwb2xhcml0eSAxClsgICAxMi44NDAwNTJdIHhl
bl9tYXBfcGlycV9nc2k6IHJldHVybmluZyBpcnEgMTcgZm9yIGdzaSAxNwpbICAgMTIuODQwMDk0
XSB4ZW46IC0tPiBwaXJxPTE3IC0+IGlycT0xNyAoZ3NpPTE3KQpbICAgMTIuODQwMDk2XSBBbHJl
YWR5IHNldHVwIHRoZSBHU0kgOjE3ClsgICAxMi44NDAxMzNdIHNuZF9oZGFfaW50ZWwgMDAwMDow
MTowMC4xOiBQQ0kgSU5UIEIgLT4gR1NJIDE3IChsZXZlbCwgbG93KSAtPiBJUlEgMTcKWyAgIDEy
Ljg0MDM0MV0gc25kX2hkYV9pbnRlbCAwMDAwOjAxOjAwLjE6IHNldHRpbmcgbGF0ZW5jeSB0aW1l
ciB0byA2NApbICAgMTIuODU5Mjc5XSBbZHJtXSBNVFJSIGFsbG9jYXRpb24gZmFpbGVkLiAgR3Jh
cGhpY3MgcGVyZm9ybWFuY2UgbWF5IHN1ZmZlci4KWyAgIDEyLjg2MDQ5NF0gW2RybV0gU3VwcG9y
dHMgdmJsYW5rIHRpbWVzdGFtcCBjYWNoaW5nIFJldiAxICgxMC4xMC4yMDEwKS4KWyAgIDEyLjg2
MDUzNF0gW2RybV0gRHJpdmVyIHN1cHBvcnRzIHByZWNpc2UgdmJsYW5rIHRpbWVzdGFtcCBxdWVy
eS4KWyAgIDEyLjg2MDY1NV0gdmdhYXJiOiBkZXZpY2UgY2hhbmdlZCBkZWNvZGVzOiBQQ0k6MDAw
MDowMDowMi4wLG9sZGRlY29kZXM9aW8rbWVtLGRlY29kZXM9bm9uZTpvd25zPWlvK21lbQpbICAg
MTIuODYwNzExXSB2Z2FhcmI6IHRyYW5zZmVycmluZyBvd25lciBmcm9tIFBDSTowMDAwOjAwOjAy
LjAgdG8gUENJOjAwMDA6MDE6MDAuMApbICAgMTIuODYyOTQ3XSBIRE1JIHN0YXR1czogQ29kZWM9
MCBQaW49MyBQcmVzZW5jZV9EZXRlY3Q9MCBFTERfVmFsaWQ9MApbICAgMTIuODYzMDkwXSBpbnB1
dDogSEQtQXVkaW8gR2VuZXJpYyBIRE1JL0RQLHBjbT0zIGFzIC9kZXZpY2VzL3BjaTAwMDA6MDAv
MDAwMDowMDowMS4wLzAwMDA6MDE6MDAuMS9zb3VuZC9jYXJkMC9pbnB1dDcKWyAgIDEzLjYxMjI3
Nl0gZmJjb246IGludGVsZHJtZmIgKGZiMCkgaXMgcHJpbWFyeSBkZXZpY2UKWyAgIDEzLjk2MzYz
OV0gQ29uc29sZTogc3dpdGNoaW5nIHRvIGNvbG91ciBmcmFtZSBidWZmZXIgZGV2aWNlIDI0MHg2
NwpbICAgMTMuOTY4ODA0XSBmYjA6IGludGVsZHJtZmIgZnJhbWUgYnVmZmVyIGRldmljZQpbICAg
MTMuOTY4ODA1XSBkcm06IHJlZ2lzdGVyZWQgcGFuaWMgbm90aWZpZXIKWyAgIDEzLjk2ODg2Ml0g
Tm8gQUNQSSB2aWRlbyBidXMgZm91bmQKWyAgIDEzLjk2ODk0N10gW2RybV0gSW5pdGlhbGl6ZWQg
aTkxNSAxLjYuMCAyMDA4MDczMCBmb3IgMDAwMDowMDowMi4wIG9uIG1pbm9yIDAKWyAgIDEzLjk2
OTExOF0gc2hwY2hwOiBTdGFuZGFyZCBIb3QgUGx1ZyBQQ0kgQ29udHJvbGxlciBEcml2ZXIgdmVy
c2lvbjogMC40ClsgICAxMy45NjkxNDhdIHhlbjogcmVnaXN0ZXJpbmcgZ3NpIDE4IHRyaWdnZXJp
bmcgMCBwb2xhcml0eSAxClsgICAxMy45NjkxNTNdIHhlbl9tYXBfcGlycV9nc2k6IHJldHVybmlu
ZyBpcnEgMTggZm9yIGdzaSAxOApbICAgMTMuOTY5MTU1XSB4ZW46IC0tPiBwaXJxPTE4IC0+IGly
cT0xOCAoZ3NpPTE4KQpbICAgMTMuOTY5MTU4XSBBbHJlYWR5IHNldHVwIHRoZSBHU0kgOjE4Clsg
ICAxMy45NjkxNjJdIGk4MDFfc21idXMgMDAwMDowMDoxZi4zOiBQQ0kgSU5UIEMgLT4gR1NJIDE4
IChsZXZlbCwgbG93KSAtPiBJUlEgMTgKWyAgIDEzLjk4OTg0MF0geGVuOiByZWdpc3RlcmluZyBn
c2kgMTYgdHJpZ2dlcmluZyAwIHBvbGFyaXR5IDEKWyAgIDEzLjk4OTg0NV0geGVuX21hcF9waXJx
X2dzaTogcmV0dXJuaW5nIGlycSAxNiBmb3IgZ3NpIDE2ClsgICAxMy45ODk4ODRdIHhlbjogLS0+
IHBpcnE9MTYgLT4gaXJxPTE2IChnc2k9MTYpClsgICAxMy45ODk4ODZdIEFscmVhZHkgc2V0dXAg
dGhlIEdTSSA6MTYKWyAgIDEzLjk4OTkxM10gc25kX3ZpcnR1b3NvIDAwMDA6MDM6MDQuMDogUENJ
IElOVCBBIC0+IEdTSSAxNiAobGV2ZWwsIGxvdykgLT4gSVJRIDE2ClsgICAxNS40MDI2NDVdIEVY
VDQtZnMgKGRtLTEpOiByZS1tb3VudGVkLiBPcHRzOiAobnVsbCkKWyAgIDE1LjQyNzcyOV0gRVhU
NC1mcyAoZG0tMSk6IHJlLW1vdW50ZWQuIE9wdHM6IHVzZXJfeGF0dHIsZXJyb3JzPXJlbW91bnQt
cm8KWyAgIDE1LjU0NTkwOV0gbG9vcDogbW9kdWxlIGxvYWRlZApbICAgMTUuODk3MDAxXSBFWFQ0
LWZzIChzZGEyKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIE9w
dHM6IChudWxsKQpbICAgMTYuMDEzMTY3XSBCcmlkZ2UgZmlyZXdhbGxpbmcgcmVnaXN0ZXJlZApb
ICAgMTYuMDE4MjIzXSBkZXZpY2UgZXRoMCBlbnRlcmVkIHByb21pc2N1b3VzIG1vZGUKWyAgIDE2
LjE3NTM2OV0gQUREUkNPTkYoTkVUREVWX1VQKTogZXRoMDogbGluayBpcyBub3QgcmVhZHkKWyAg
IDE2LjE3OTU2MV0gQUREUkNPTkYoTkVUREVWX1VQKTogYnIwOiBsaW5rIGlzIG5vdCByZWFkeQpb
ICAgMTkuNTIxMDM2XSB0ZzMgMDAwMDowZDowMC4wOiBldGgwOiBMaW5rIGlzIHVwIGF0IDEwMDAg
TWJwcywgZnVsbCBkdXBsZXgKWyAgIDE5LjUyMjU5NF0gdGczIDAwMDA6MGQ6MDAuMDogZXRoMDog
RmxvdyBjb250cm9sIGlzIG9uIGZvciBUWCBhbmQgb24gZm9yIFJYClsgICAxOS41MjQxMzJdIHRn
MyAwMDAwOjBkOjAwLjA6IGV0aDA6IEVFRSBpcyBkaXNhYmxlZApbICAgMTkuNTI2MDQ0XSBBRERS
Q09ORihORVRERVZfQ0hBTkdFKTogZXRoMDogbGluayBiZWNvbWVzIHJlYWR5ClsgICAxOS41Mjc1
NzRdIGJyMDogdG9wb2xvZ3kgY2hhbmdlIGRldGVjdGVkLCBwcm9wYWdhdGluZwpbICAgMTkuNTI5
MDg5XSBicjA6IHBvcnQgMShldGgwKSBlbnRlcmluZyBmb3J3YXJkaW5nIHN0YXRlClsgICAxOS41
MzA2MDJdIGJyMDogcG9ydCAxKGV0aDApIGVudGVyaW5nIGZvcndhcmRpbmcgc3RhdGUKWyAgIDE5
LjUzMjQyOF0gQUREUkNPTkYoTkVUREVWX0NIQU5HRSk6IGJyMDogbGluayBiZWNvbWVzIHJlYWR5
ClsgICAyMi4zODY1NjVdIFJQQzogUmVnaXN0ZXJlZCBuYW1lZCBVTklYIHNvY2tldCB0cmFuc3Bv
cnQgbW9kdWxlLgpbICAgMjIuMzg4MDE5XSBSUEM6IFJlZ2lzdGVyZWQgdWRwIHRyYW5zcG9ydCBt
b2R1bGUuClsgICAyMi4zODk0NjhdIFJQQzogUmVnaXN0ZXJlZCB0Y3AgdHJhbnNwb3J0IG1vZHVs
ZS4KWyAgIDIyLjM5MDkwOF0gUlBDOiBSZWdpc3RlcmVkIHRjcCBORlN2NC4xIGJhY2tjaGFubmVs
IHRyYW5zcG9ydCBtb2R1bGUuClsgICAyMi4zOTgxNDBdIEZTLUNhY2hlOiBMb2FkZWQKWyAgIDIy
LjQwNzEzM10gRlMtQ2FjaGU6IE5ldGZzICduZnMnIHJlZ2lzdGVyZWQgZm9yIGNhY2hpbmcKWyAg
IDIyLjQxNDI1Ml0gSW5zdGFsbGluZyBrbmZzZCAoY29weXJpZ2h0IChDKSAxOTk2IG9raXJAbW9u
YWQuc3diLmRlKS4KWyAgIDIzLjM5MDMzNV0gZnVzZSBpbml0IChBUEkgdmVyc2lvbiA3LjE3KQpb
ICAgMjQuMTE0MTUyXSBCbHVldG9vdGg6IENvcmUgdmVyIDIuMTYKWyAgIDI0LjExNDE3Ml0gTkVU
OiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAzMQpbICAgMjQuMTE0MTczXSBCbHVldG9vdGg6
IEhDSSBkZXZpY2UgYW5kIGNvbm5lY3Rpb24gbWFuYWdlciBpbml0aWFsaXplZApbICAgMjQuMTE0
MTc1XSBCbHVldG9vdGg6IEhDSSBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgIDI0LjExNDE3
Nl0gQmx1ZXRvb3RoOiBMMkNBUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgIDI0LjExNDQz
NF0gQmx1ZXRvb3RoOiBTQ08gc29ja2V0IGxheWVyIGluaXRpYWxpemVkClsgICAyNC4xMjA5Nzld
IEJsdWV0b290aDogQk5FUCAoRXRoZXJuZXQgRW11bGF0aW9uKSB2ZXIgMS4zClsgICAyNC4xMjA5
ODFdIEJsdWV0b290aDogQk5FUCBmaWx0ZXJzOiBwcm90b2NvbCBtdWx0aWNhc3QKWyAgIDI0LjU2
MDQ1OF0gQmx1ZXRvb3RoOiBSRkNPTU0gVFRZIGxheWVyIGluaXRpYWxpemVkClsgICAyNC41NjA0
NjNdIEJsdWV0b290aDogUkZDT01NIHNvY2tldCBsYXllciBpbml0aWFsaXplZApbICAgMjQuNTYw
NDY0XSBCbHVldG9vdGg6IFJGQ09NTSB2ZXIgMS4xMQpbICAgMjYuMTYwNzAxXSBFdmVudC1jaGFu
bmVsIGRldmljZSBpbnN0YWxsZWQuClsgICAyNi4xOTczOTNdIFhFTkJVUzogVW5hYmxlIHRvIHJl
YWQgY3B1IHN0YXRlClsgICAyNi4xOTc1MzVdIFhFTkJVUzogVW5hYmxlIHRvIHJlYWQgY3B1IHN0
YXRlClsgICAyNi45MDc4ODhdIFtkcm06aW50ZWxfZGlzYWJsZV90cmFuc2NvZGVyXSAqRVJST1Iq
IGZhaWxlZCB0byBkaXNhYmxlIHRyYW5zY29kZXIgMQpbICAgNDkuNjc0MzI3XSBGQVQtZnMgKHNk
YjEpOiB1dGY4IGlzIG5vdCBhIHJlY29tbWVuZGVkIElPIGNoYXJzZXQgZm9yIEZBVCBmaWxlc3lz
dGVtcywgZmlsZXN5c3RlbSB3aWxsIGJlIGNhc2Ugc2Vuc2l0aXZlIQpbICAgODAuNDE4ODkxXSBX
QVJOSU5HISBwb3dlci9sZXZlbCBpcyBkZXByZWNhdGVkOyB1c2UgcG93ZXIvY29udHJvbCBpbnN0
ZWFkClsgICA4MC40OTYwODhdIHVzYiAzLTEuNDogVVNCIGRpc2Nvbm5lY3QsIGRldmljZSBudW1i
ZXIgMwo=
--bcaec54faf688f7e2504b994eb2f
Content-Type: text/plain; charset=US-ASCII; name="xm_dmesg.txt"
Content-Disposition: attachment; filename="xm_dmesg.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyyxc0691

KFhFTikgWGVuIHZlcnNpb24gNC4xLjIgKERlYmlhbiA0LjEuMi0yKSAod2FsZGlAZGViaWFuLm9y
ZykgKGdjYyB2ZXJzaW9uIDQuNi4yIChEZWJpYW4gNC42LjItNikgKSBTYXQgRGVjIDEwIDE5OjU4
OjIxIFVUQyAyMDExCihYRU4pIEJvb3Rsb2FkZXI6IEdSVUIgMS45OS0xNAooWEVOKSBDb21tYW5k
IGxpbmU6IHBsYWNlaG9sZGVyIGRvbTBfbWF4X3ZjcHVzPTIgZG9tMF92Y3B1c19waW4gZG9tMF9t
ZW09ODE5Mk0KKFhFTikgVmlkZW8gaW5mb3JtYXRpb246CihYRU4pICBWR0EgaXMgdGV4dCBtb2Rl
IDgweDI1LCBmb250IDh4MTYKKFhFTikgIFZCRS9EREMgbWV0aG9kczogVjI7IEVESUQgdHJhbnNm
ZXIgdGltZTogMSBzZWNvbmRzCihYRU4pIERpc2MgaW5mb3JtYXRpb246CihYRU4pICBGb3VuZCAy
IE1CUiBzaWduYXR1cmVzCihYRU4pICBGb3VuZCAyIEVERCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVz
CihYRU4pIFhlbi1lODIwIFJBTSBtYXA6CihYRU4pICAwMDAwMDAwMDAwMDAwMDAwIC0gMDAwMDAw
MDAwMDA5ZDgwMCAodXNhYmxlKQooWEVOKSAgMDAwMDAwMDAwMDA5ZDgwMCAtIDAwMDAwMDAwMDAw
YTAwMDAgKHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDAwMDBlMDAwMCAtIDAwMDAwMDAwMDAxMDAw
MDAgKHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDAwMDEwMDAwMCAtIDAwMDAwMDAwMjAwMDAwMDAg
KHVzYWJsZSkKKFhFTikgIDAwMDAwMDAwMjAwMDAwMDAgLSAwMDAwMDAwMDIwMjAwMDAwIChyZXNl
cnZlZCkKKFhFTikgIDAwMDAwMDAwMjAyMDAwMDAgLSAwMDAwMDAwMDQwMDAwMDAwICh1c2FibGUp
CihYRU4pICAwMDAwMDAwMDQwMDAwMDAwIC0gMDAwMDAwMDA0MDIwMDAwMCAocmVzZXJ2ZWQpCihY
RU4pICAwMDAwMDAwMDQwMjAwMDAwIC0gMDAwMDAwMDA2ZWQ2ZDAwMCAodXNhYmxlKQooWEVOKSAg
MDAwMDAwMDA2ZWQ2ZDAwMCAtIDAwMDAwMDAwNmVkYmMwMDAgKEFDUEkgTlZTKQooWEVOKSAgMDAw
MDAwMDA2ZWRiYzAwMCAtIDAwMDAwMDAwNmVkYzUwMDAgKEFDUEkgZGF0YSkKKFhFTikgIDAwMDAw
MDAwNmVkYzUwMDAgLSAwMDAwMDAwMDZlZGYyMDAwIChyZXNlcnZlZCkKKFhFTikgIDAwMDAwMDAw
NmVkZjIwMDAgLSAwMDAwMDAwMDZlZGYzMDAwICh1c2FibGUpCihYRU4pICAwMDAwMDAwMDZlZGYz
MDAwIC0gMDAwMDAwMDA2ZWUwMzAwMCAocmVzZXJ2ZWQpCihYRU4pICAwMDAwMDAwMDZlZTAzMDAw
IC0gMDAwMDAwMDA2ZWUxMDAwMCAoQUNQSSBOVlMpCihYRU4pICAwMDAwMDAwMDZlZTEwMDAwIC0g
MDAwMDAwMDA2ZWUzODAwMCAocmVzZXJ2ZWQpCihYRU4pICAwMDAwMDAwMDZlZTM4MDAwIC0gMDAw
MDAwMDA2ZWU3YjAwMCAoQUNQSSBOVlMpCihYRU4pICAwMDAwMDAwMDZlZTdiMDAwIC0gMDAwMDAw
MDA2ZjAwMDAwMCAodXNhYmxlKQooWEVOKSAgMDAwMDAwMDA2ZjgwMDAwMCAtIDAwMDAwMDAwN2Zh
MDAwMDAgKHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDBmZWQxYzAwMCAtIDAwMDAwMDAwZmVkNDAw
MDAgKHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDBmZjAwMDAwMCAtIDAwMDAwMDAxMDAwMDAwMDAg
KHJlc2VydmVkKQooWEVOKSAgMDAwMDAwMDEwMDAwMDAwMCAtIDAwMDAwMDA0N2ZlMDAwMDAgKHVz
YWJsZSkKKFhFTikgQUNQSTogUlNEUCAwMDBGMDQ1MCwgMDAyNCAocjIgQUxBU0tBKQooWEVOKSBB
Q1BJOiBYU0RUIDZFREJDMDcwLCAwMDVDIChyMSBBTEFTS0EgICAgQSBNIEkgIDEwNzIwMDkgQU1J
ICAgICAxMDAxMykKKFhFTikgQUNQSTogRkFDUCA2RURDNDE1OCwgMDBGNCAocjQgQUxBU0tBICAg
IEEgTSBJICAxMDcyMDA5IEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IERTRFQgNkVEQkMxNTgs
IDdGRkIgKHIyIEFMQVNLQSAgICBBIE0gSSAgICAgICAgMCBJTlRMIDIwMDUxMTE3KQooWEVOKSBB
Q1BJOiBGQUNTIDZFRTA3RjgwLCAwMDQwCihYRU4pIEFDUEk6IEFQSUMgNkVEQzQyNTAsIDAwOTIg
KHIzIEFMQVNLQSAgICBBIE0gSSAgMTA3MjAwOSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBT
U0RUIDZFREM0MkU4LCAwMUQ2IChyMSBBTUlDUFUgICAgIFBST0MgICAgICAgIDEgTVNGVCAgMzAw
MDAwMSkKKFhFTikgQUNQSTogTUNGRyA2RURDNDRDMCwgMDAzQyAocjEgQUxBU0tBICAgIEEgTSBJ
ICAxMDcyMDA5IE1TRlQgICAgICAgOTcpCihYRU4pIEFDUEk6IEFBRlQgNkVEQzQ1MDAsIDAwRDMg
KHIxIEFMQVNLQSBPRU1BQUZUICAgMTA3MjAwOSBNU0ZUICAgICAgIDk3KQooWEVOKSBBQ1BJOiBI
UEVUIDZFREM0NUQ4LCAwMDM4IChyMSBBTEFTS0EgICAgQSBNIEkgIDEwNzIwMDkgQU1JLiAgICAg
ICAgNCkKKFhFTikgQUNQSTogRE1BUiA2RURDNDYxMCwgMDBFOCAocjEgQUxBU0tBICAgIEEgTSBJ
ICAgICAgICAxIElOVEwgICAgICAgIDEpCihYRU4pIFN5c3RlbSBSQU06IDE2MTA0TUIgKDE2NDkx
MDcya0IpCihYRU4pIERvbWFpbiBoZWFwIGluaXRpYWxpc2VkCihYRU4pIEFDUEk6IDMyLzY0WCBG
QUNTIGFkZHJlc3MgbWlzbWF0Y2ggaW4gRkFEVCAtIDZlZTA3ZjgwLzAwMDAwMDAwMDAwMDAwMDAs
IHVzaW5nIDMyCihYRU4pIFByb2Nlc3NvciAjMCA2OjEwIEFQSUMgdmVyc2lvbiAyMQooWEVOKSBQ
cm9jZXNzb3IgIzIgNjoxMCBBUElDIHZlcnNpb24gMjEKKFhFTikgUHJvY2Vzc29yICM0IDY6MTAg
QVBJQyB2ZXJzaW9uIDIxCihYRU4pIFByb2Nlc3NvciAjNiA2OjEwIEFQSUMgdmVyc2lvbiAyMQoo
WEVOKSBQcm9jZXNzb3IgIzEgNjoxMCBBUElDIHZlcnNpb24gMjEKKFhFTikgUHJvY2Vzc29yICMz
IDY6MTAgQVBJQyB2ZXJzaW9uIDIxCihYRU4pIFByb2Nlc3NvciAjNSA2OjEwIEFQSUMgdmVyc2lv
biAyMQooWEVOKSBQcm9jZXNzb3IgIzcgNjoxMCBBUElDIHZlcnNpb24gMjEKKFhFTikgSU9BUElD
WzBdOiBhcGljX2lkIDAsIHZlcnNpb24gMzIsIGFkZHJlc3MgMHhmZWMwMDAwMCwgR1NJIDAtMjMK
KFhFTikgRW5hYmxpbmcgQVBJQyBtb2RlOiAgRmxhdC4gIFVzaW5nIDEgSS9PIEFQSUNzCihYRU4p
IFRhYmxlIGlzIG5vdCBmb3VuZCEKKFhFTikgU3dpdGNoZWQgdG8gQVBJQyBkcml2ZXIgeDJhcGlj
X2NsdXN0ZXIuCihYRU4pIFVzaW5nIHNjaGVkdWxlcjogU01QIENyZWRpdCBTY2hlZHVsZXIgKGNy
ZWRpdCkKKFhFTikgRGV0ZWN0ZWQgMzM5Mi4zNzYgTUh6IHByb2Nlc3Nvci4KKFhFTikgSW5pdGlu
ZyBtZW1vcnkgc2hhcmluZy4KKFhFTikgSW50ZWwgVlQtZCBTbm9vcCBDb250cm9sIG5vdCBlbmFi
bGVkLgooWEVOKSBJbnRlbCBWVC1kIERvbTAgRE1BIFBhc3N0aHJvdWdoIG5vdCBlbmFibGVkLgoo
WEVOKSBJbnRlbCBWVC1kIFF1ZXVlZCBJbnZhbGlkYXRpb24gZW5hYmxlZC4KKFhFTikgSW50ZWwg
VlQtZCBJbnRlcnJ1cHQgUmVtYXBwaW5nIGVuYWJsZWQuCihYRU4pIEludGVsIFZULWQgU2hhcmVk
IEVQVCB0YWJsZXMgbm90IGVuYWJsZWQuCihYRU4pIEkvTyB2aXJ0dWFsaXNhdGlvbiBlbmFibGVk
CihYRU4pICAtIERvbTAgbW9kZTogUmVsYXhlZAooWEVOKSBFbmFibGVkIGRpcmVjdGVkIEVPSSB3
aXRoIGlvYXBpY19hY2tfb2xkIG9uIQooWEVOKSBFTkFCTElORyBJTy1BUElDIElSUXMKKFhFTikg
IC0+IFVzaW5nIG9sZCBBQ0sgbWV0aG9kCihYRU4pIFBsYXRmb3JtIHRpbWVyIGlzIDE0LjMxOE1I
eiBIUEVUCihYRU4pIEFsbG9jYXRlZCBjb25zb2xlIHJpbmcgb2YgMTYgS2lCLgooWEVOKSBWTVg6
IFN1cHBvcnRlZCBhZHZhbmNlZCBmZWF0dXJlczoKKFhFTikgIC0gQVBJQyBNTUlPIGFjY2VzcyB2
aXJ0dWFsaXNhdGlvbgooWEVOKSAgLSBBUElDIFRQUiBzaGFkb3cKKFhFTikgIC0gRXh0ZW5kZWQg
UGFnZSBUYWJsZXMgKEVQVCkKKFhFTikgIC0gVmlydHVhbC1Qcm9jZXNzb3IgSWRlbnRpZmllcnMg
KFZQSUQpCihYRU4pICAtIFZpcnR1YWwgTk1JCihYRU4pICAtIE1TUiBkaXJlY3QtYWNjZXNzIGJp
dG1hcAooWEVOKSAgLSBVbnJlc3RyaWN0ZWQgR3Vlc3QKKFhFTikgRVBUIHN1cHBvcnRzIDJNQiBz
dXBlciBwYWdlLgooWEVOKSBIVk06IEFTSURzIGVuYWJsZWQuCihYRU4pIEhWTTogVk1YIGVuYWJs
ZWQKKFhFTikgSFZNOiBIYXJkd2FyZSBBc3Npc3RlZCBQYWdpbmcgZGV0ZWN0ZWQuCihYRU4pIEJy
b3VnaHQgdXAgOCBDUFVzCihYRU4pICoqKiBMT0FESU5HIERPTUFJTiAwICoqKgooWEVOKSAgWGVu
ICBrZXJuZWw6IDY0LWJpdCwgbHNiLCBjb21wYXQzMgooWEVOKSAgRG9tMCBrZXJuZWw6IDY0LWJp
dCwgUEFFLCBsc2IsIHBhZGRyIDB4MTAwMDAwMCAtPiAweDE5M2EwMDAKKFhFTikgUEhZU0lDQUwg
TUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAgRG9tMCBhbGxvYy46ICAgMDAwMDAwMDQ2YzAwMDAw
MC0+MDAwMDAwMDQ3MDAwMDAwMCAoMjA3MjMzNCBwYWdlcyB0byBiZSBhbGxvY2F0ZWQpCihYRU4p
ICBJbml0LiByYW1kaXNrOiAwMDAwMDAwNDdkZDBlMDAwLT4wMDAwMDAwNDdmZGZmZTAwCihYRU4p
IFZJUlRVQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAgTG9hZGVkIGtlcm5lbDogZmZmZmZm
ZmY4MTAwMDAwMC0+ZmZmZmZmZmY4MTkzYTAwMAooWEVOKSAgSW5pdC4gcmFtZGlzazogZmZmZmZm
ZmY4MTkzYTAwMC0+ZmZmZmZmZmY4M2EyYmUwMAooWEVOKSAgUGh5cy1NYWNoIG1hcDogZmZmZmZm
ZmY4M2EyYzAwMC0+ZmZmZmZmZmY4NGEyYzAwMAooWEVOKSAgU3RhcnQgaW5mbzogICAgZmZmZmZm
ZmY4NGEyYzAwMC0+ZmZmZmZmZmY4NGEyYzRiNAooWEVOKSAgUGFnZSB0YWJsZXM6ICAgZmZmZmZm
ZmY4NGEyZDAwMC0+ZmZmZmZmZmY4NGE1NjAwMAooWEVOKSAgQm9vdCBzdGFjazogICAgZmZmZmZm
ZmY4NGE1NjAwMC0+ZmZmZmZmZmY4NGE1NzAwMAooWEVOKSAgVE9UQUw6ICAgICAgICAgZmZmZmZm
ZmY4MDAwMDAwMC0+ZmZmZmZmZmY4NGMwMDAwMAooWEVOKSAgRU5UUlkgQUREUkVTUzogZmZmZmZm
ZmY4MTZhOTIwMAooWEVOKSBEb20wIGhhcyBtYXhpbXVtIDIgVkNQVXMKKFhFTikgU2NydWJiaW5n
IEZyZWUgUkFNOiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLmRvbmUuCihYRU4pIFhlbiB0cmFjZSBidWZm
ZXJzOiBkaXNhYmxlZAooWEVOKSBTdGQuIExvZ2xldmVsOiBFcnJvcnMgYW5kIHdhcm5pbmdzCihY
RU4pIEd1ZXN0IExvZ2xldmVsOiBOb3RoaW5nIChSYXRlLWxpbWl0ZWQ6IEVycm9ycyBhbmQgd2Fy
bmluZ3MpCihYRU4pIFhlbiBpcyByZWxpbnF1aXNoaW5nIFZHQSBjb25zb2xlLgooWEVOKSAqKiog
U2VyaWFsIGlucHV0IC0+IERPTTAgKHR5cGUgJ0NUUkwtYScgdGhyZWUgdGltZXMgdG8gc3dpdGNo
IGlucHV0IHRvIFhlbikKKFhFTikgRnJlZWQgMjE2a0IgaW5pdCBtZW1vcnkuCihYRU4pIHBoeXNk
ZXYuYzoxNTU6IGRvbTA6IHdyb25nIG1hcF9waXJxIHR5cGUgMwo=
--bcaec54faf688f7e2504b994eb2f
Content-Type: text/plain; charset=US-ASCII; name="xm_info.txt"
Content-Disposition: attachment; filename="xm_info.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyyxc7bs2

aG9zdCAgICAgICAgICAgICAgICAgICA6IG11YWRkaWIKcmVsZWFzZSAgICAgICAgICAgICAgICA6
IDMuMi4wLTEtYW1kNjQKdmVyc2lvbiAgICAgICAgICAgICAgICA6ICMxIFNNUCBTdW4gRmViIDUg
MTU6MTc6MTUgVVRDIDIwMTIKbWFjaGluZSAgICAgICAgICAgICAgICA6IHg4Nl82NApucl9jcHVz
ICAgICAgICAgICAgICAgIDogOApucl9ub2RlcyAgICAgICAgICAgICAgIDogMQpjb3Jlc19wZXJf
c29ja2V0ICAgICAgIDogNAp0aHJlYWRzX3Blcl9jb3JlICAgICAgIDogMgpjcHVfbWh6ICAgICAg
ICAgICAgICAgIDogMzM5Mgpod19jYXBzICAgICAgICAgICAgICAgIDogYmZlYmZiZmY6MjgxMDA4
MDA6MDAwMDAwMDA6MDAwMDNmNDA6MTNiYWUzZmY6MDAwMDAwMDA6MDAwMDAwMDE6MDAwMDAwMDAK
dmlydF9jYXBzICAgICAgICAgICAgICA6IGh2bSBodm1fZGlyZWN0aW8KdG90YWxfbWVtb3J5ICAg
ICAgICAgICA6IDE2MTA0CmZyZWVfbWVtb3J5ICAgICAgICAgICAgOiAxMDAyMgpmcmVlX2NwdXMg
ICAgICAgICAgICAgIDogMAp4ZW5fbWFqb3IgICAgICAgICAgICAgIDogNAp4ZW5fbWlub3IgICAg
ICAgICAgICAgIDogMQp4ZW5fZXh0cmEgICAgICAgICAgICAgIDogLjIKeGVuX2NhcHMgICAgICAg
ICAgICAgICA6IHhlbi0zLjAteDg2XzY0IHhlbi0zLjAteDg2XzMycCBodm0tMy4wLXg4Nl8zMiBo
dm0tMy4wLXg4Nl8zMnAgaHZtLTMuMC14ODZfNjQgCnhlbl9zY2hlZHVsZXIgICAgICAgICAgOiBj
cmVkaXQKeGVuX3BhZ2VzaXplICAgICAgICAgICA6IDQwOTYKcGxhdGZvcm1fcGFyYW1zICAgICAg
ICA6IHZpcnRfc3RhcnQ9MHhmZmZmODAwMDAwMDAwMDAwCnhlbl9jaGFuZ2VzZXQgICAgICAgICAg
OiB1bmF2YWlsYWJsZQp4ZW5fY29tbWFuZGxpbmUgICAgICAgIDogcGxhY2Vob2xkZXIgZG9tMF9t
YXhfdmNwdXM9MiBkb20wX3ZjcHVzX3BpbiBkb20wX21lbT04MTkyTQpjY19jb21waWxlciAgICAg
ICAgICAgIDogZ2NjIHZlcnNpb24gNC42LjIgKERlYmlhbiA0LjYuMi02KSAKY2NfY29tcGlsZV9i
eSAgICAgICAgICA6IHdhbGRpCmNjX2NvbXBpbGVfZG9tYWluICAgICAgOiBkZWJpYW4ub3JnCmNj
X2NvbXBpbGVfZGF0ZSAgICAgICAgOiBTYXQgRGVjIDEwIDE5OjU4OjIxIFVUQyAyMDExCnhlbmRf
Y29uZmlnX2Zvcm1hdCAgICAgOiA0Cg==
--bcaec54faf688f7e2504b994eb2f
Content-Type: text/plain; charset=US-ASCII; name="xm_list.txt"
Content-Disposition: attachment; filename="xm_list.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gyyxca7r3

TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRCAgIE1lbSBWQ1BV
cyAgICAgIFN0YXRlICAgVGltZShzKQpEb21haW4tMCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwICA1ODY2ICAgICAyICAgICByLS0tLS0gICAgMTE3LjAK
--bcaec54faf688f7e2504b994eb2f
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--bcaec54faf688f7e2504b994eb2f--


From xen-changelog-bounces@lists.xen.org Thu Feb 23 05:44:30 2012
Return-path: <xen-changelog-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Feb 2012 05:44:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-changelog-bounces@lists.xen.org>)
	id 1S0RTg-0006VX-MS; Thu, 23 Feb 2012 05:44:28 +0000
Received: from mail27.messagelabs.com ([193.109.254.147])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1S0RTd-0006Rm-Dr
	for xen-changelog@lists.xensource.com; Thu, 23 Feb 2012 05:44:26 +0000
X-Env-Sender: xen@xenbits.xen.org
X-Msg-Ref: server-12.tower-27.messagelabs.com!1329975808!53600419!1
X-Originating-IP: [50.57.168.107]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 8876 invoked from network); 23 Feb 2012 05:43:29 -0000
Received: from mail.xen.org (HELO mail.xen.org) (50.57.168.107)
	by server-12.tower-27.messagelabs.com with AES256-SHA encrypted SMTP;
	23 Feb 2012 05:43:29 -0000
Received: from xenbits.xen.org ([50.57.170.242])
	by mail.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1S0RTN-00056p-4x
	for xen-changelog@lists.xensource.com; Thu, 23 Feb 2012 05:44:09 +0000
Received: from xen by xenbits.xen.org with local (Exim 4.72)
	(envelope-from <xen@xenbits.xen.org>) id 1S0RTM-0000kK-U1
	for xen-changelog@lists.xensource.com; Thu, 23 Feb 2012 05:44:08 +0000
Message-Id: <E1S0RTM-0000kK-U1@xenbits.xen.org>
Date: Thu, 23 Feb 2012 05:44:08 +0000
From: Xen patchbot-unstable <patchbot@xen.org>
To: xen-changelog@lists.xensource.com
Subject: [Xen-changelog] [xen-unstable] build: add autoconf to replace
	custom checks in tools/check
X-BeenThere: xen-changelog@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
Reply-To: xen-devel@lists.xensource.com
List-Id: BK change log <xen-changelog.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-changelog>, 
	<mailto:xen-changelog-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xen.org>
List-Help: <mailto:xen-changelog-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-changelog>, 
	<mailto:xen-changelog-request@lists.xen.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6835735191746885487=="
Sender: xen-changelog-bounces@lists.xen.org
Errors-To: xen-changelog-bounces@lists.xen.org

--===============6835735191746885487==
Content-Type: text/plain

# HG changeset patch
# User Ian Jackson <ian.jackson@eu.citrix.com>
# Date 1329875703 0
# Node ID a19c6d90fd41379dd2ac12576eb7b1bbe4b0444d
# Parent  6a34a42a2b5da33e7e5687b04dd88a4704155ec6
build: add autoconf to replace custom checks in tools/check

Added autotools magic to replace custom check scripts. The previous
checks have been ported to autoconf, and some additional ones have
been added (plus the suggestions from running autoscan). Two files are
created as a result from executing configure script, config/Tools.mk
and config.h.

conf/Tools.mk is included by tools/Rules.mk, and contains most of the
options previously defined in .config, that can now be set passing
parameters or defining environment variables when executing configure
script.

config.h is only used by libxl/xl to detect yajl_version.h.

[ tools/config.sub and config.guess copied from
  autotools-dev 20100122.1 from Debian squeeze i386,
  which is GPLv2.

  tools/configure generated using the included ./autogen.sh
  which ran autoconf 2.67-2 from Debian squeeze i386.  autoconf
  is GPLv3+ but has a special exception for the autoconf output;
  this exception applies to us and exempts us from complying
  with GPLv3+ for configure, which is good as Xen is GPL2 only.

  - Ian Jackson ]

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Tested-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---


diff -r 6a34a42a2b5d -r a19c6d90fd41 .hgignore
--- a/.hgignore	Tue Feb 21 18:01:04 2012 +0000
+++ b/.hgignore	Wed Feb 22 01:55:03 2012 +0000
@@ -303,6 +303,12 @@
 ^tools/ocaml/libs/xl/xenlight\.ml$
 ^tools/ocaml/libs/xl/xenlight\.mli$
 ^tools/ocaml/xenstored/oxenstored$
+^tools/autom4te\.cache$
+^tools/config\.h$
+^tools/config\.log$
+^tools/config\.status$
+^tools/config\.cache$
+^config/Tools\.mk$
 ^xen/\.banner.*$
 ^xen/BLOG$
 ^xen/System.map$
diff -r 6a34a42a2b5d -r a19c6d90fd41 Config.mk
--- a/Config.mk	Tue Feb 21 18:01:04 2012 +0000
+++ b/Config.mk	Wed Feb 22 01:55:03 2012 +0000
@@ -70,9 +70,6 @@
 EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)
 endif
 
-BISON	?= bison
-FLEX	?= flex
-
 PYTHON      ?= python
 PYTHON_PREFIX_ARG ?= --prefix="$(PREFIX)"
 # The above requires that PREFIX contains *no spaces*. This variable is here
@@ -175,32 +172,9 @@
 APPEND_LDFLAGS += $(foreach i, $(APPEND_LIB), -L$(i))
 APPEND_CFLAGS += $(foreach i, $(APPEND_INCLUDES), -I$(i))
 
-CHECK_LIB = $(EXTRA_LIB) $(PREPEND_LIB) $(APPEND_LIB)
-CHECK_INCLUDES = $(EXTRA_INCLUDES) $(PREPEND_INCLUDES) $(APPEND_INCLUDES)
-
 EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all
 EMBEDDED_EXTRA_CFLAGS += -fno-exceptions
 
-CONFIG_LIBICONV   := $(shell export OS="`uname -s`"; \
-                       export CHECK_LIB="$(CHECK_LIB)"; \
-                       . $(XEN_ROOT)/tools/check/funcs.sh; \
-                       has_lib libiconv.so && echo 'y' || echo 'n')
-
-CONFIG_YAJL_VERSION := $(shell export OS="`uname -s`"; \
-                       export CHECK_INCLUDES="$(CHECK_INCLUDES)"; \
-                       . $(XEN_ROOT)/tools/check/funcs.sh; \
-                       has_header yajl/yajl_version.h && echo 'y' || echo 'n')
-
-# Enable XSM security module (by default, Flask).
-XSM_ENABLE ?= n
-FLASK_ENABLE ?= $(XSM_ENABLE)
-
-# Download GIT repositories via HTTP or GIT's own protocol?
-# GIT's protocol is faster and more robust, when it works at all (firewalls
-# may block it). We make it the default, but if your GIT repository downloads
-# fail or hang, please specify GIT_HTTP=y in your environment.
-GIT_HTTP ?= n
-
 XEN_EXTFILES_URL=http://xenbits.xensource.com/xen-extfiles
 # All the files at that location were downloaded from elsewhere on
 # the internet.  The original download URL is preserved as a comment
@@ -239,17 +213,4 @@
 # Short answer -- do not enable this unless you know what you are
 # doing and are prepared for some pain.
 
-# Optional components
-XENSTAT_XENTOP     ?= y
-VTPM_TOOLS         ?= n
-LIBXENAPI_BINDINGS ?= n
-PYTHON_TOOLS       ?= y
-OCAML_TOOLS        ?= y
-CONFIG_MINITERM    ?= n
-CONFIG_LOMOUNT     ?= n
-CONFIG_SYSTEM_LIBAIO ?= y
 CONFIG_TESTS       ?= y
-
-ifeq ($(OCAML_TOOLS),y)
-OCAML_TOOLS := $(shell ocamlopt -v > /dev/null 2>&1 && echo "y" || echo "n")
-endif
diff -r 6a34a42a2b5d -r a19c6d90fd41 Makefile
--- a/Makefile	Tue Feb 21 18:01:04 2012 +0000
+++ b/Makefile	Wed Feb 22 01:55:03 2012 +0000
@@ -40,11 +40,10 @@
 dist: dist-xen dist-kernels dist-tools dist-stubdom dist-docs dist-misc
 
 dist-misc:
-	$(INSTALL_DIR) $(DISTDIR)/check
+	$(INSTALL_DIR) $(DISTDIR)/
 	$(INSTALL_DATA) ./COPYING $(DISTDIR)
 	$(INSTALL_DATA) ./README $(DISTDIR)
 	$(INSTALL_PROG) ./install.sh $(DISTDIR)
-	$(INSTALL_PROG) tools/check/chk tools/check/check_* tools/check/funcs.sh $(DISTDIR)/check
 dist-%: DESTDIR=$(DISTDIR)/install
 dist-%: install-%
 	@: # do nothing
diff -r 6a34a42a2b5d -r a19c6d90fd41 README
--- a/README	Tue Feb 21 18:01:04 2012 +0000
+++ b/README	Wed Feb 22 01:55:03 2012 +0000
@@ -89,9 +89,13 @@
 3. For the very first build, or if you want to destroy build trees,
    perform the following steps:
 
+    # ./configure
     # make world
     # make install
 
+   If you want, you can run ./configure --help to see the list of
+   options available options when building and installing Xen.
+
    This will create and install onto the local machine. It will build
    the xen binary (xen.gz), the tools and the documentation.
 
diff -r 6a34a42a2b5d -r a19c6d90fd41 autogen.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/autogen.sh	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+cd tools
+autoconf
diff -r 6a34a42a2b5d -r a19c6d90fd41 config/Tools.mk.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/Tools.mk.in	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,50 @@
+# Prefix and install folder
+PREFIX              := @prefix@
+LIBLEAFDIR_x86_64   := @LIB_PATH@
+
+# A debug build of tools?
+debug               := @debug@
+
+# Tools path
+BISON               := @BISON@
+FLEX                := @FLEX@
+PYTHON              := @PYTHON@
+PYTHON_PATH         := @PYTHONPATH@
+PERL                := @PERL@
+BRCTL               := @BRCTL@
+IP                  := @IP@
+CURL_CONFIG         := @CURL@
+XML2_CONFIG         := @XML@
+BASH                := @BASH@
+XGETTTEXT           := @XGETTEXT@
+
+# Extra folder for libs/includes
+PREPEND_INCLUDES    := @PREPEND_INCLUDES@
+PREPEND_LIB         := @PREPEND_LIB@
+APPEND_INCLUDES     := @APPEND_INCLUDES@
+APPEND_LIB          := @APPEND_LIB@
+
+# Enable XSM security module (by default, Flask).
+XSM_ENABLE          := @xsm@
+FLASK_ENABLE        := @xsm@
+
+# Download GIT repositories via HTTP or GIT's own protocol?
+# GIT's protocol is faster and more robust, when it works at all (firewalls
+# may block it). We make it the default, but if your GIT repository downloads
+# fail or hang, please specify GIT_HTTP=y in your environment.
+GIT_HTTP            := @githttp@
+
+# Optional components
+XENSTAT_XENTOP      := @monitors@
+VTPM_TOOLS          := @vtpm@
+LIBXENAPI_BINDINGS  := @xapi@
+PYTHON_TOOLS        := @pythontools@
+OCAML_TOOLS         := @ocamltools@
+CONFIG_MINITERM     := @miniterm@
+CONFIG_LOMOUNT      := @lomount@
+
+#System options
+CONFIG_SYSTEM_LIBAIO:= @system_aio@
+CONFIG_LIBICONV     := @libiconv@
+CONFIG_GCRYPT       := @libgcrypt@
+CONFIG_EXT2FS       := @libext2fs@
diff -r 6a34a42a2b5d -r a19c6d90fd41 configure
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configure	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+cd tools && ./configure $@
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/Makefile
--- a/tools/Makefile	Tue Feb 21 18:01:04 2012 +0000
+++ b/tools/Makefile	Wed Feb 22 01:55:03 2012 +0000
@@ -6,7 +6,6 @@
 endif
 
 SUBDIRS-y :=
-SUBDIRS-y += check
 SUBDIRS-y += include
 SUBDIRS-y += libxc
 SUBDIRS-y += flask
@@ -79,6 +78,8 @@
 distclean: subdirs-distclean
 	rm -rf qemu-xen-traditional-dir qemu-xen-traditional-dir-remote
 	rm -rf qemu-xen-dir qemu-xen-dir-remote
+	rm -rf ../config/Tools.mk config.h config.log config.status \
+		config.cache autom4te.cache
 
 ifneq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
 IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TARGET_ARCH) \
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/Rules.mk
--- a/tools/Rules.mk	Tue Feb 21 18:01:04 2012 +0000
+++ b/tools/Rules.mk	Wed Feb 22 01:55:03 2012 +0000
@@ -4,6 +4,7 @@
 all:
 
 include $(XEN_ROOT)/Config.mk
+include $(XEN_ROOT)/config/Tools.mk
 
 export _INSTALL := $(INSTALL)
 INSTALL = $(XEN_ROOT)/tools/cross-install
@@ -80,8 +81,6 @@
                         "Xen requires at least gcc-3.4")
 $(eval $(check-y))
 
-_PYTHON_PATH := $(shell which $(PYTHON))
-PYTHON_PATH ?= $(_PYTHON_PATH)
 INSTALL_PYTHON_PROG = \
 	$(XEN_ROOT)/tools/python/install-wrap "$(PYTHON_PATH)" $(INSTALL_PROG)
 
@@ -109,3 +108,7 @@
 
 subdir-distclean-%: .phony
 	$(MAKE) -C $* clean
+
+$(XEN_ROOT)/config/Tools.mk:
+	@echo "You have to run ./configure before building or installing the tools"
+	@exit 1
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/blktap/drivers/Makefile
--- a/tools/blktap/drivers/Makefile	Tue Feb 21 18:01:04 2012 +0000
+++ b/tools/blktap/drivers/Makefile	Wed Feb 22 01:55:03 2012 +0000
@@ -13,7 +13,7 @@
 CFLAGS   += -I $(MEMSHR_DIR)
 CFLAGS   += -D_GNU_SOURCE
 
-ifeq ($(shell . ./check_gcrypt $(CC)),yes)
+ifeq ($CONFIG_GCRYPT,y)
 CFLAGS += -DUSE_GCRYPT
 CRYPT_LIB := -lgcrypt
 else
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/blktap/drivers/check_gcrypt
--- a/tools/blktap/drivers/check_gcrypt	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-cat > .gcrypt.c << EOF
-#include <gcrypt.h>
-int main(void) { return 0; }
-EOF
-
-if $1 -o .gcrypt .gcrypt.c -lgcrypt 2>/dev/null ; then
-  echo "yes"
-else
-  echo "no"
-fi
-
-rm -f .gcrypt*
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/Makefile
--- a/tools/check/Makefile	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-XEN_ROOT = $(CURDIR)/../..
-include $(XEN_ROOT)/tools/Rules.mk
-
-# Export the necessary environment variables for the tests
-export PYTHON
-export LIBXENAPI_BINDINGS
-export CHECK_INCLUDES
-export CHECK_LIB
-export CONFIG_SYSTEM_LIBAIO
-
-.PHONY: all install
-all install: check-build
-
-# Check this machine is OK for building on.
-.PHONY: check-build
-check-build:
-	./chk build
-
-# Check this machine is OK for installing on.
-.PHONY: check-install
-check-install:
-	./chk install
-
-.PHONY: clean
-clean:
-	./chk clean
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/README
--- a/tools/check/README	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-Checks for the suitability of a machine for Xen build or install.
-To check for build suitability use
-
-        ./chk build
-
-To check for install suitability use
-
-        ./chk install
-
-The chk script will run checks in this directory and print
-the ones that failed. It prints nothing if checks succeed.
-The chk script exits with 0 on success and 1 on failure.
-
-The chk script runs executable files in this directory whose
-names begin with 'check_'. Files containing CHECK-BUILD
-are run for the build check, and files containing CHECK-INSTALL
-are run for the install check.
-
-Detailed output from the check scripts is in .chkbuild for build
-and .chkinstall for install.
\ No newline at end of file
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_brctl
--- a/tools/check/check_brctl	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#!/bin/sh
-# CHECK-INSTALL
-
-. ./funcs.sh
-
-case $OS in
-OpenBSD|NetBSD|FreeBSD)
-	has_or_fail brconfig ;;
-Linux)
-	has_or_fail brctl ;;
-*)
-	fail "unknown OS" ;;
-esac
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_crypto_lib
--- a/tools/check/check_crypto_lib	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD CHECK-INSTALL
-
-. ./funcs.sh
-
-case $OS in
-FreeBSD|NetBSD|OpenBSD)
-	exit 0 ;;
-esac
-
-has_lib libcrypto.so || fail "missing libcrypto.so"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_curl
--- a/tools/check/check_curl	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD CHECK-INSTALL
-
-. ./funcs.sh
-
-if [ "$LIBXENAPI_BINDINGS" != "y" ]; then
-	echo -n "unused, "
-	exit 0
-fi
-
-has_or_fail curl-config
-curl_libs=`curl-config --libs` || fail "curl-config --libs failed"
-test_link $curl_libs || fail "dependency libraries for curl are missing"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_iproute
--- a/tools/check/check_iproute	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-#!/bin/sh
-# CHECK-INSTALL
-
-. ./funcs.sh
-
-PATH=/sbin:$PATH
-
-case $OS in
-OpenBSD|NetBSD|FreeBSD)
-	has_or_fail ifconfig ;;
-Linux)
-	has_or_fail ip ;;
-*)
-	fail "unknown OS" ;;
-esac
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_libaio_devel
--- a/tools/check/check_libaio_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-if [ X${CONFIG_SYSTEM_LIBAIO} != X"y" ] ; then
-    exit 0
-fi
-if ! has_header libaio.h ; then
-    fail "can't find libaio headers, install libaio devel package or set CONFIG_SYSTEM_LIBAIO=n"
-fi
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_libaio_lib
--- a/tools/check/check_libaio_lib	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD CHECK-INSTALL
-
-. ./funcs.sh
-
-if [ X${CONFIG_SYSTEM_LIBAIO} != X"y" ] ; then
-    exit 0
-fi
-has_lib libaio.so || fail "can't find libaio"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_openssl_devel
--- a/tools/check/check_openssl_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-has_header openssl/md5.h || fail "missing openssl headers"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_python
--- a/tools/check/check_python	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD CHECK-INSTALL
-
-. ./funcs.sh
-
-if test -z ${PYTHON}; then
-  PYTHON=python
-fi
-
-${PYTHON} -c '
-import sys
-sys.exit(sys.version_info[0] < 2 or sys.version_info[1] < 3)
-' || fail "need python version >= 2.3"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_python_devel
--- a/tools/check/check_python_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-if test -z ${PYTHON}; then
-  PYTHON=python
-fi
-has_or_fail ${PYTHON}
-
-${PYTHON} -c '
-import os.path, sys
-for p in sys.path:
-	if os.path.exists(p + "/config/Makefile"):
-		sys.exit(0)
-sys.exit(1)
-' || fail "can't find python devel files"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_python_xml
--- a/tools/check/check_python_xml	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#!/bin/sh
-# CHECK-INSTALL
-
-. ./funcs.sh
-
-if test -z ${PYTHON}; then
-  PYTHON=python
-fi
-has_or_fail ${PYTHON}
-
-${PYTHON} -c 'import xml.dom.minidom' 2>/dev/null || \
-fail "can't import xml.dom.minidom"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_udev
--- a/tools/check/check_udev	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#!/bin/sh
-# CHECK-INSTALL
-
-. ./funcs.sh
-
-case $OS in
-OpenBSD|NetBSD|FreeBSD)
-	has_or_fail vnconfig
-	;;
-Linux)
-	has /sbin/udevadm && \
-		udevver=`/sbin/udevadm info -V | awk '{print $NF}'`
-	[ -z "$udevver" ] && has_or_fail udevinfo && \
-		udevver=`udevinfo -V | awk '{print $NF}'`
-	[ "$udevver" -ge 59 ] 2>/dev/null || \
-		has hotplug || \
-		fail "udev is too old, upgrade to version 59 or later"
-	;;
-*)
-	fail "unknown OS"
-	;;
-esac
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_uuid_devel
--- a/tools/check/check_uuid_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-has_header uuid.h || \
-has_header uuid/uuid.h || fail "missing uuid headers (package uuid-dev)"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_x11_devel
--- a/tools/check/check_x11_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-has_header X11/keysymdef.h || \
-has_header /usr/X11R6/include/X11/keysymdef.h || \
-has_header /usr/X11R7/include/X11/keysymdef.h || \
-warning "can't find X11 headers"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_xgettext
--- a/tools/check/check_xgettext	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-has_or_fail xgettext
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_xml2
--- a/tools/check/check_xml2	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD CHECK-INSTALL
-
-. ./funcs.sh
-
-if [ ! "$LIBXENAPI_BINDINGS" = "y" ]
-then
-    echo -n "unused, "
-    exit 0
-fi
-
-has_or_fail xml2-config
-xml2_libs=`xml2-config --libs` || fail "xml2-config --libs failed"
-test_link $xml2_libs || fail "dependency libraries for xml2 are missing"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_yajl_devel
--- a/tools/check/check_yajl_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-has_header yajl/yajl_parse.h || fail "can't find yajl/yajl_parse.h"
-has_header yajl/yajl_gen.h || fail "can't find yajl/yajl_gen.h"
-has_lib libyajl.so || fail "can't find libyajl.so"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_zlib_devel
--- a/tools/check/check_zlib_devel	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD
-
-. ./funcs.sh
-
-has_header zlib.h || fail "can't find zlib headers"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/check_zlib_lib
--- a/tools/check/check_zlib_lib	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#!/bin/sh
-# CHECK-BUILD CHECK-INSTALL
-
-. ./funcs.sh
-
-case $OS in
-FreeBSD|NetBSD|OpenBSD)
-	exit 0
-	;;
-esac
-
-has_lib libz.so || fail "can't find zlib"
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/chk
--- a/tools/check/chk	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-func_usage ()
-{
-    echo "Usage:"
-    echo "	$0 [build|install|clean]"
-    echo
-    echo "Check suitability for Xen build or install."
-    echo "Exit with 0 if OK, 1 if not."
-    echo
-    echo "Calling with 'clean' removes generated files."
-    exit 1
-}
-
-PATH=$PATH:/sbin:/usr/sbin
-OS=`uname -s`
-export PATH OS
-
-if [ "$OS" = "SunOS" ]; then
-	exit 0
-fi
-
-case $1 in
-    build)
-        check="CHECK-BUILD"
-        ;;
-    install)
-        check="CHECK-INSTALL"
-        ;;
-    clean)
-        exit 0
-        ;;
-    *)
-        func_usage
-        ;;
-esac
-
-failed=0
-
-echo "Xen ${check} " `date`
-for f in check_* ; do
-    case $f in
-        *~)
-            continue
-            ;;
-        *)
-            ;;
-    esac
-    if ! [ -x $f ] ; then
-        continue
-    fi
-    if ! grep -Fq "$check" $f ; then
-        continue
-    fi
-    echo -n "Checking $f: "
-    if ./$f 2>&1 ; then
-        echo OK
-    else
-        failed=1
-    fi
-done
-
-exit ${failed}
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/check/funcs.sh
--- a/tools/check/funcs.sh	Tue Feb 21 18:01:04 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-# has is the same as which, except it handles cross environments
-has() {
-	if [ -z "$CROSS_COMPILE" ]; then
-		command which "$@"
-		return $?
-	fi
-
-	check_sys_root || return 1
-
-	# subshell to prevent pollution of caller's IFS
-	(
-	IFS=:
-	for p in $PATH; do
-		if [ -x "$CROSS_SYS_ROOT/$p/$1" ]; then
-			echo "$CROSS_SYS_ROOT/$p/$1"
-			return 0
-		fi
-	done
-	return 1
-	)
-}
-
-has_or_fail() {
-	has "$1" >/dev/null || fail "can't find $1"
-}
-
-has_header() {
-	check_sys_root || return 1
-
-	case $1 in
-		/*) ;;
-		*)
-		if [ -r "$CROSS_SYS_ROOT/usr/include/$1" ]; then
-			return 0
-		fi
-		for path in ${CHECK_INCLUDES}; do
-			if [ -r "$CROSS_SYS_ROOT${path}/$1" ]; then
-				return 0
-			fi
-		done
-		;;
-	esac
-
-	return 1
-}
-
-has_lib() {
-	check_sys_root || return 1
-
-	# subshell to prevent pollution of caller's environment
-	(
-	PATH=/sbin:$PATH        # for ldconfig
-	LIBRARIES="$CHECK_LIB /usr/lib"
-
-	# This relatively common in a sys-root; libs are installed but
-	# ldconfig hasn't run there, so ldconfig -p won't work.
-	if [ "$OS" = Linux -a ! -f "$CROSS_SYS_ROOT/etc/ld.so.cache" ]; then
-	    echo "Please run ldconfig -r \"$CROSS_SYS_ROOT\" to generate ld.so.cache"
-	    # fall through; ldconfig test below should fail
-	fi
-	if [ "${OS}" = "Linux" ]; then
-		ldconfig -p ${CROSS_SYS_ROOT+-r "$CROSS_SYS_ROOT"} | grep -Fq "$1"
-		return $?
-	fi
-	if [ "${OS}" = "NetBSD" ]; then
-		ls -1 ${LIBRARIES} | grep -Fq "$1"
-		return $?
-	fi
-	return 1
-	)
-}
-
-test_link() {
-	# subshell to trap removal of tmpfile
-	(
-	unset tmpfile
-	trap 'rm -f "$tmpfile"; exit' 0 1 2 15
-	tmpfile=`mktemp` || return 1
-	ld "$@" -o "$tmpfile" >/dev/null 2>&1
-	return $?
-	)
-}
-
-# this function is used commonly above
-check_sys_root() {
-	[ -z "$CROSS_COMPILE" ] && return 0
-	if [ -z "$CROSS_SYS_ROOT" ]; then
-		echo "please set CROSS_SYS_ROOT in the environment"
-		return 1
-	fi
-	if [ ! -d "$CROSS_SYS_ROOT" ]; then
-		echo "no sys-root found at $CROSS_SYS_ROOT"
-		return 1
-	fi
-}
-
-warning() {
-	echo
-	echo " *** `basename "$0"` FAILED${*+: $*}"
-}
-
-fail() {
-	echo
-	echo " *** `basename "$0"` FAILED${*+: $*}"
-	exit 1
-}
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/config.guess
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/config.guess	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,1502 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+#   Free Software Foundation, Inc.
+
+timestamp='2009-12-30'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[456])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+    	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	else
+	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/config.h.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/config.h.in	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2012
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; version 2.1 only. with the special
+ * exception on linking described in file LICENSE.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ */
+
+/* Define to 1 if you have the <yajl/yajl_version.h> header file. */
+#undef HAVE_YAJL_YAJL_VERSION_H
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/config.sub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/config.sub	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,1714 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+#   Free Software Foundation, Inc.
+
+timestamp='2010-01-22'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze)
+		os=
+		basic_machine=$1
+		;;
+        -bluegene*)
+	        os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile-* | tilegx-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+        cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+        microblaze)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+        # This must be matched before tile*.
+        tilegx*)
+		basic_machine=tilegx-unknown
+		os=-linux-gnu
+		;;
+	tile*)
+		basic_machine=tile-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+        -auroraux)
+	        os=-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+        -nacl*)
+	        ;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+        score-*)
+		os=-elf
+		;;
+        spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        c4x-* | tic4x-*)
+        	os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+        mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff -r 6a34a42a2b5d -r a19c6d90fd41 tools/configure
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/configure	Wed Feb 22 01:55:03 2012 +0000
@@ -0,0 +1,10469 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.67 for Xen Hypervisor 4.2.
+#
+# Report bugs to <xen-devel@lists.xensource.com>.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: xen-devel@lists.xensource.com about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Xen Hypervisor'
+PACKAGE_TARNAME='xen-hypervisor'
+PACKAGE_VERSION='4.2'
+PACKAGE_STRING='Xen Hypervisor 4.2'
+PACKAGE_BUGREPORT='xen-devel@lists.xensource.com'
+PACKAGE_URL=''
+
+ac_unique_file="libxl/libxl.c"
+ac_default_prefix=/usr
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_list=
+ac_func_list=
+ac_subst_vars='LTLIBOBJS
+POW_LIB
+LIBOBJS
+ALLOCA
+libiconv
+libgcrypt
+libext2fs
+system_aio
+LIB_PATH
+glib_LIBS
+glib_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+VNCONFIG
+HOTPLUG
+UDEVINFO
+UDEVADM
+PYTHONPATH
+OCAMLBUILD
+OCAMLDOC
+OCAMLMKLIB
+OCAMLMKTOP
+OCAMLDEP
+OCAML
+OCAMLOPTDOTOPT
+OCAMLCDOTOPT
+OCAMLBEST
+OCAMLOPT
+OCAMLLIB
+OCAMLVERSION
+OCAMLC
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+SET_MAKE
+LN_S
+SED
+XGETTEXT
+BASH
+XML
+CURL
+FLEX
+BISON
+IP
+BRCTL
+PERL
+PYTHON
+APPEND_LIB
+APPEND_INCLUDES
+PREPEND_LIB
+PREPEND_INCLUDES
+debug
+lomount
+miniterm
+ocamltools
+pythontools
+xapi
+vtpm
+monitors
+githttp
+xsm
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+EGREP
+GREP
+CPP
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_xsm
+enable_githttp
+enable_monitors
+enable_vtpm
+enable_xapi
+enable_pythontools
+enable_ocamltools
+enable_miniterm
+enable_lomount
+enable_debug
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PREPEND_INCLUDES
+PREPEND_LIB
+APPEND_INCLUDES
+APPEND_LIB
+PYTHON
+PERL
+BRCTL
+IP
+BISON
+FLEX
+CURL
+XML
+BASH
+XGETTEXT
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+glib_CFLAGS
+glib_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Xen Hypervisor 4.2 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/xen-hypervisor]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of Xen Hypervisor 4.2:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-xsm            Enable XSM security module (by default, Flask)
+  --enable-githttp        Download GIT repositories via HTTP
+  --disable-monitors      Disable xenstat and xentop monitoring tools
+  --enable-vtpm           Enable Virtual Trusted Platform Module
+  --enable-xapi           Enable Xen API Bindings
+  --disable-pythontools   Disable Python tools
+  --disable-ocamltools    Disable Ocaml tools
+  --enable-miniterm       Enable miniterm
+  --enable-lomount        Enable lomount
+  --disable-debug         Disable debug build of Xen and tools
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  PREPEND_INCLUDES
+              List of include folders to prepend to CFLAGS (without -I)
+  PREPEND_LIB List of library folders to prepend to LDFLAGS (without -L)
+  APPEND_INCLUDES
+              List of include folders to append to CFLAGS (without -I)
+  APPEND_LIB  List of library folders to append to LDFLAGS (without -L)
+  PYTHON      Path to the Python parser
+  PERL        Path to Perl parser
+  BRCTL       Path to brctl tool
+  IP          Path to ip tool
+  BISON       Path to Bison parser generator
+  FLEX        Path to Flex lexical analyser generator
+  CURL        Path to curl-config tool
+  XML         Path to xml2-config tool
+  BASH        Path to bash shell
+  XGETTEXT    Path to xgetttext tool
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  glib_CFLAGS C compiler flags for glib, overriding pkg-config
+  glib_LIBS   linker flags for glib, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <xen-devel@lists.xensource.com>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Xen Hypervisor configure 4.2
+generated by GNU Autoconf 2.67
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval "test \"\${$3+set}\"" = set; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------------------- ##
+## Report this to xen-devel@lists.xensource.com ##
+## -------------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_find_intX_t LINENO BITS VAR
+# -----------------------------------
+# Finds a signed integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_intX_t ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
+$as_echo_n "checking for int$2_t... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in int$2_t 'int' 'long int' \
+	 'long long int' 'short int' 'signed char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+	     enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+	        enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
+		 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  case $ac_type in #(
+  int$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_find_intX_t
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval "test \"\${$4+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_member
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+	 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  case $ac_type in #(
+  uint$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_find_uintX_t
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Xen Hypervisor $as_me 4.2, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+as_fn_append ac_header_list " sys/time.h"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_func_list " alarm"
+as_fn_append ac_header_list " stdlib.h"
+as_fn_append ac_header_list " sys/param.h"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_config_files="$ac_config_files ../config/Tools.mk"
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+ac_aux_dir=
+for ac_dir in . "$srcdir"/.; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+# Check if CFLAGS, LDFLAGS, LIBS, CPPFLAGS or CPP is set and print a warning
+
+if test -n "$CC$CFLAGS$LDFLAGS$LIBS$CPPFLAGS$CPP"; then :
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Setting CC, CFLAGS, LDFLAGS, LIBS, CPPFLAGS or CPP is not \
+recommended, use PREPEND_INCLUDES, PREPEND_LIB, \
+APPEND_INCLUDES and APPEND_LIB instead when possible." >&5
+$as_echo "$as_me: WARNING: Setting CC, CFLAGS, LDFLAGS, LIBS, CPPFLAGS or CPP is not \
+recommended, use PREPEND_INCLUDES, PREPEND_LIB, \
+APPEND_INCLUDES and APPEND_LIB instead when possible." >&2;}
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#	  define __EXTENSIONS__ 1
+	  $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+# M4 Macro includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+# PKG_CHECK_MODULES
+
+
+# Enable/disable options
+# Check whether --enable-xsm was given.
+if test "${enable_xsm+set}" = set; then :
+  enableval=$enable_xsm;
+fi
+
+
+if test "x$enable_xsm" = "xyes"; then :
+
+    ax_cv_xsm="y"
+
+elif test "x$enable_xsm" = "xno"; then :
+
+    ax_cv_xsm="n"
+
+elif test -z $ax_cv_xsm; then :
+
+    ax_cv_xsm="n"
+
+fi
+xsm=$ax_cv_xsm
+
+# Check whether --enable-githttp was given.
+if test "${enable_githttp+set}" = set; then :
+  enableval=$enable_githttp;
+fi
+
+
+if test "x$enable_githttp" = "xyes"; then :
+
+    ax_cv_githttp="y"
+
+elif test "x$enable_githttp" = "xno"; then :
+
+    ax_cv_githttp="n"
+
+elif test -z $ax_cv_githttp; then :
+
+    ax_cv_githttp="n"
+
+fi
+githttp=$ax_cv_githttp
+
+# Check whether --enable-monitors was given.
+if test "${enable_monitors+set}" = set; then :
+  enableval=$enable_monitors;
+fi
+
+
+if test "x$enable_monitors" = "xno"; then :
+
+    ax_cv_monitors="n"
+
+elif test "x$enable_monitors" = "xyes"; then :
+
+    ax_cv_monitors="y"
+
+elif test -z $ax_cv_monitors; then :
+
+    ax_cv_monitors="y"
+
+fi
+monitors=$ax_cv_monitors
+
+# Check whether --enable-vtpm was given.
+if test "${enable_vtpm+set}" = set; then :
+  enableval=$enable_vtpm;
+fi
+
+
+if test "x$enable_vtpm" = "xyes"; then :
+
+    ax_cv_vtpm="y"
+
+elif test "x$enable_vtpm" = "xno"; then :
+
+    ax_cv_vtpm="n"
+
+elif test -z $ax_cv_vtpm; then :
+
+    ax_cv_vtpm="n"
+
+fi
+vtpm=$ax_cv_vtpm
+
+# Check whether --enable-xapi was given.
+if test "${enable_xapi+set}" = set; then :
+  enableval=$enable_xapi;
+fi
+
+
+if test "x$enable_xapi" = "xyes"; then :
+
+    ax_cv_xapi="y"
+
+elif test "x$enable_xapi" = "xno"; then :
+
+    ax_cv_xapi="n"
+
+elif test -z $ax_cv_xapi; then :
+
+    ax_cv_xapi="n"
+
+fi
+xapi=$ax_cv_xapi
+
+# Check whether --enable-pythontools was given.
+if test "${enable_pythontools+set}" = set; then :
+  enableval=$enable_pythontools;
+fi
+
+
+if test "x$enable_pythontools" = "xno"; then :
+
+    ax_cv_pythontools="n"
+
+elif test "x$enable_pythontools" = "xyes"; then :
+
+    ax_cv_pythontools="y"
+
+elif test -z $ax_cv_pythontools; then :
+
+    ax_cv_pythontools="y"
+
+fi
+pythontools=$ax_cv_pythontools
+
+# Check whether --enable-ocamltools was given.
+if test "${enable_ocamltools+set}" = set; then :
+  enableval=$enable_ocamltools;
+fi
+
+
+if test "x$enable_ocamltools" = "xno"; then :
+
+    ax_cv_ocamltools="n"
+
+elif test "x$enable_ocamltools" = "xyes"; then :
+
+    ax_cv_ocamltools="y"
+
+elif test -z $ax_cv_ocamltools; then :
+
+    ax_cv_ocamltools="y"
+
+fi
+ocamltools=$ax_cv_ocamltools
+
+# Check whether --enable-miniterm was given.
+if test "${enable_miniterm+set}" = set; then :
+  enableval=$enable_miniterm;
+fi
+
+
+if test "x$enable_miniterm" = "xyes"; then :
+
+    ax_cv_miniterm="y"
+
+elif test "x$enable_miniterm" = "xno"; then :
+
+    ax_cv_miniterm="n"
+
+elif test -z $ax_cv_miniterm; then :
+
+    ax_cv_miniterm="n"
+
+fi
+miniterm=$ax_cv_miniterm
+
+# Check whether --enable-lomount was given.
+if test "${enable_lomount+set}" = set; then :
+  enableval=$enable_lomount;
+fi
+
+
+if test "x$enable_lomount" = "xyes"; then :
+
+    ax_cv_lomount="y"
+
+elif test "x$enable_lomount" = "xno"; then :
+
+    ax_cv_lomount="n"
+
+elif test -z $ax_cv_lomount; then :
+
+    ax_cv_lomount="n"
+
+fi
+lomount=$ax_cv_lomount
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug;
+fi
+
+
+if test "x$enable_debug" = "xno"; then :
+
+    ax_cv_debug="n"
+
+elif test "x$enable_debug" = "xyes"; then :
+
+    ax_cv_debug="y"
+
+elif test -z $ax_cv_debug; then :
+
+    ax_cv_debug="y"
+
+fi
+debug=$ax_cv_debug
+
+
+
+
+
+
+
+for cflag in $PREPEND_INCLUDES
+do
+    PREPEND_CFLAGS+=" -I$cflag"
+done
+for ldflag in $PREPEND_LIB
+do
+    PREPEND_LDFLAGS+=" -L$ldflag"
+done
+for cflag in $APPEND_INCLUDES
+do
+    APPEND_CFLAGS+=" -I$cflag"
+done
+for ldflag in $APPEND_LIB
+do
+    APPEND_LDFLAGS+=" -L$ldflag"
+done
+CFLAGS="$PREPEND_CFLAGS $CFLAGS $APPEND_CFLAGS"
+LDFLAGS="$PREPEND_LDFLAGS $LDFLAGS $APPEND_LDFLAGS"
+
+
+
+
+
+
+
+
+
+
+
+
+# Checks for programs.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PERL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${PERL}" == x"no"
+then
+    as_fn_error $? "Unable to find perl, please install perl" "$LINENO" 5
+fi
+# Extract the first word of "brctl", so it can be a program name with args.
+set dummy brctl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_BRCTL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $BRCTL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_BRCTL="$BRCTL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_BRCTL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_BRCTL" && ac_cv_path_BRCTL="no"
+  ;;
+esac
+fi
+BRCTL=$ac_cv_path_BRCTL
+if test -n "$BRCTL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BRCTL" >&5
+$as_echo "$BRCTL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${BRCTL}" == x"no"
+then
+    as_fn_error $? "Unable to find brctl, please install brctl" "$LINENO" 5
+fi
+# Extract the first word of "ip", so it can be a program name with args.
+set dummy ip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_IP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $IP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_IP="$IP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_IP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_IP" && ac_cv_path_IP="no"
+  ;;
+esac
+fi
+IP=$ac_cv_path_IP
+if test -n "$IP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IP" >&5
+$as_echo "$IP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${IP}" == x"no"
+then
+    as_fn_error $? "Unable to find ip, please install ip" "$LINENO" 5
+fi
+# Extract the first word of "bison", so it can be a program name with args.
+set dummy bison; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_BISON+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $BISON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_BISON="$BISON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="no"
+  ;;
+esac
+fi
+BISON=$ac_cv_path_BISON
+if test -n "$BISON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5
+$as_echo "$BISON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${BISON}" == x"no"
+then
+    as_fn_error $? "Unable to find bison, please install bison" "$LINENO" 5
+fi
+# Extract the first word of "flex", so it can be a program name with args.
+set dummy flex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_FLEX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $FLEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_FLEX="$FLEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_FLEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_FLEX" && ac_cv_path_FLEX="no"
+  ;;
+esac
+fi
+FLEX=$ac_cv_path_FLEX
+if test -n "$FLEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5
+$as_echo "$FLEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${FLEX}" == x"no"
+then
+    as_fn_error $? "Unable to find flex, please install flex" "$LINENO" 5
+fi
+if test "x$xapi" = "xy"; then :
+
+    # Extract the first word of "curl-config", so it can be a program name with args.
+set dummy curl-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_CURL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CURL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CURL="$CURL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CURL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_CURL" && ac_cv_path_CURL="no"
+  ;;
+esac
+fi
+CURL=$ac_cv_path_CURL
+if test -n "$CURL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5
+$as_echo "$CURL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${CURL}" == x"no"
+then
+    as_fn_error $? "Unable to find curl-config, please install curl-config" "$LINENO" 5
+fi
+    # Extract the first word of "xml2-config", so it can be a program name with args.
+set dummy xml2-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XML+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $XML in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XML="$XML" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_XML="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_XML" && ac_cv_path_XML="no"
+  ;;
+esac
+fi
+XML=$ac_cv_path_XML
+if test -n "$XML"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XML" >&5
+$as_echo "$XML" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x"${XML}" == x"no"
+then
+    as_fn_error $? "Unable to find xml2-config, please install xml2-config" "$LINENO" 5
+fi
+
+fi
+if test "x$ocamltools" = "xy"; then :
+
+      # checking for ocamlc
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocamlc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocamlc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAMLC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLC"; then
+  ac_cv_prog_OCAMLC="$OCAMLC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAMLC="${ac_tool_prefix}ocamlc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLC=$ac_cv_prog_OCAMLC
+if test -n "$OCAMLC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLC" >&5
+$as_echo "$OCAMLC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAMLC"; then
+  ac_ct_OCAMLC=$OCAMLC
+  # Extract the first word of "ocamlc", so it can be a program name with args.
+set dummy ocamlc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAMLC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAMLC"; then
+  ac_cv_prog_ac_ct_OCAMLC="$ac_ct_OCAMLC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAMLC="ocamlc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAMLC=$ac_cv_prog_ac_ct_OCAMLC
+if test -n "$ac_ct_OCAMLC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAMLC" >&5
+$as_echo "$ac_ct_OCAMLC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAMLC" = x; then
+    OCAMLC="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OCAMLC=$ac_ct_OCAMLC
+  fi
+else
+  OCAMLC="$ac_cv_prog_OCAMLC"
+fi
+
+
+  if test "$OCAMLC" != "no"; then
+     OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p'`
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: OCaml version is $OCAMLVERSION" >&5
+$as_echo "OCaml version is $OCAMLVERSION" >&6; }
+     # If OCAMLLIB is set, use it
+     if test "$OCAMLLIB" = ""; then
+        OCAMLLIB=`$OCAMLC -where 2>/dev/null || $OCAMLC -v|tail -1|cut -d ' ' -f 4`
+     else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: OCAMLLIB previously set; preserving it." >&5
+$as_echo "OCAMLLIB previously set; preserving it." >&6; }
+     fi
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: OCaml library path is $OCAMLLIB" >&5
+$as_echo "OCaml library path is $OCAMLLIB" >&6; }
+
+
+
+
+     # checking for ocamlopt
+     if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocamlopt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocamlopt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAMLOPT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLOPT"; then
+  ac_cv_prog_OCAMLOPT="$OCAMLOPT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAMLOPT="${ac_tool_prefix}ocamlopt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLOPT=$ac_cv_prog_OCAMLOPT
+if test -n "$OCAMLOPT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLOPT" >&5
+$as_echo "$OCAMLOPT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAMLOPT"; then
+  ac_ct_OCAMLOPT=$OCAMLOPT
+  # Extract the first word of "ocamlopt", so it can be a program name with args.
+set dummy ocamlopt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAMLOPT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAMLOPT"; then
+  ac_cv_prog_ac_ct_OCAMLOPT="$ac_ct_OCAMLOPT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAMLOPT="ocamlopt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAMLOPT=$ac_cv_prog_ac_ct_OCAMLOPT
+if test -n "$ac_ct_OCAMLOPT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAMLOPT" >&5
+$as_echo "$ac_ct_OCAMLOPT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAMLOPT" = x; then
+    OCAMLOPT="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OCAMLOPT=$ac_ct_OCAMLOPT
+  fi
+else
+  OCAMLOPT="$ac_cv_prog_OCAMLOPT"
+fi
+
+     OCAMLBEST=byte
+     if test "$OCAMLOPT" = "no"; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find ocamlopt; bytecode compilation only." >&5
+$as_echo "$as_me: WARNING: Cannot find ocamlopt; bytecode compilation only." >&2;}
+     else
+	TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+	if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: versions differs from ocamlc; ocamlopt discarded." >&5
+$as_echo "versions differs from ocamlc; ocamlopt discarded." >&6; }
+	    OCAMLOPT=no
+	else
+	    OCAMLBEST=opt
+	fi
+     fi
+
+
+
+     # checking for ocamlc.opt
+     if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocamlc.opt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocamlc.opt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAMLCDOTOPT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLCDOTOPT"; then
+  ac_cv_prog_OCAMLCDOTOPT="$OCAMLCDOTOPT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAMLCDOTOPT="${ac_tool_prefix}ocamlc.opt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLCDOTOPT=$ac_cv_prog_OCAMLCDOTOPT
+if test -n "$OCAMLCDOTOPT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLCDOTOPT" >&5
+$as_echo "$OCAMLCDOTOPT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAMLCDOTOPT"; then
+  ac_ct_OCAMLCDOTOPT=$OCAMLCDOTOPT
+  # Extract the first word of "ocamlc.opt", so it can be a program name with args.
+set dummy ocamlc.opt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAMLCDOTOPT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAMLCDOTOPT"; then
+  ac_cv_prog_ac_ct_OCAMLCDOTOPT="$ac_ct_OCAMLCDOTOPT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAMLCDOTOPT="ocamlc.opt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAMLCDOTOPT=$ac_cv_prog_ac_ct_OCAMLCDOTOPT
+if test -n "$ac_ct_OCAMLCDOTOPT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAMLCDOTOPT" >&5
+$as_echo "$ac_ct_OCAMLCDOTOPT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAMLCDOTOPT" = x; then
+    OCAMLCDOTOPT="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OCAMLCDOTOPT=$ac_ct_OCAMLCDOTOPT
+  fi
+else
+  OCAMLCDOTOPT="$ac_cv_prog_OCAMLCDOTOPT"
+fi
+
+     if test "$OCAMLCDOTOPT" != "no"; then
+	TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+	if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: versions differs from ocamlc; ocamlc.opt discarded." >&5
+$as_echo "versions differs from ocamlc; ocamlc.opt discarded." >&6; }
+	else
+	    OCAMLC=$OCAMLCDOTOPT
+	fi
+     fi
+
+     # checking for ocamlopt.opt
+     if test "$OCAMLOPT" != "no" ; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocamlopt.opt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocamlopt.opt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAMLOPTDOTOPT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLOPTDOTOPT"; then
+  ac_cv_prog_OCAMLOPTDOTOPT="$OCAMLOPTDOTOPT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAMLOPTDOTOPT="${ac_tool_prefix}ocamlopt.opt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLOPTDOTOPT=$ac_cv_prog_OCAMLOPTDOTOPT
+if test -n "$OCAMLOPTDOTOPT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLOPTDOTOPT" >&5
+$as_echo "$OCAMLOPTDOTOPT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAMLOPTDOTOPT"; then
+  ac_ct_OCAMLOPTDOTOPT=$OCAMLOPTDOTOPT
+  # Extract the first word of "ocamlopt.opt", so it can be a program name with args.
+set dummy ocamlopt.opt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAMLOPTDOTOPT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAMLOPTDOTOPT"; then
+  ac_cv_prog_ac_ct_OCAMLOPTDOTOPT="$ac_ct_OCAMLOPTDOTOPT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAMLOPTDOTOPT="ocamlopt.opt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAMLOPTDOTOPT=$ac_cv_prog_ac_ct_OCAMLOPTDOTOPT
+if test -n "$ac_ct_OCAMLOPTDOTOPT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAMLOPTDOTOPT" >&5
+$as_echo "$ac_ct_OCAMLOPTDOTOPT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAMLOPTDOTOPT" = x; then
+    OCAMLOPTDOTOPT="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OCAMLOPTDOTOPT=$ac_ct_OCAMLOPTDOTOPT
+  fi
+else
+  OCAMLOPTDOTOPT="$ac_cv_prog_OCAMLOPTDOTOPT"
+fi
+
+	if test "$OCAMLOPTDOTOPT" != "no"; then
+	   TMPVERSION=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+	   if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+	      { $as_echo "$as_me:${as_lineno-$LINENO}: result: version differs from ocamlc; ocamlopt.opt discarded." >&5
+$as_echo "version differs from ocamlc; ocamlopt.opt discarded." >&6; }
+	   else
+	      OCAMLOPT=$OCAMLOPTDOTOPT
+	   fi
+        fi
+     fi
+
+
+  fi
+
+
+
+  # checking for ocaml toplevel
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocaml", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocaml; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAML+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAML"; then
+  ac_cv_prog_OCAML="$OCAML" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAML="${ac_tool_prefix}ocaml"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAML=$ac_cv_prog_OCAML
+if test -n "$OCAML"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAML" >&5
+$as_echo "$OCAML" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAML"; then
+  ac_ct_OCAML=$OCAML
+  # Extract the first word of "ocaml", so it can be a program name with args.
+set dummy ocaml; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAML+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAML"; then
+  ac_cv_prog_ac_ct_OCAML="$ac_ct_OCAML" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAML="ocaml"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAML=$ac_cv_prog_ac_ct_OCAML
+if test -n "$ac_ct_OCAML"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAML" >&5
+$as_echo "$ac_ct_OCAML" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAML" = x; then
+    OCAML="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OCAML=$ac_ct_OCAML
+  fi
+else
+  OCAML="$ac_cv_prog_OCAML"
+fi
+
+
+  # checking for ocamldep
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocamldep", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocamldep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAMLDEP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLDEP"; then
+  ac_cv_prog_OCAMLDEP="$OCAMLDEP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAMLDEP="${ac_tool_prefix}ocamldep"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLDEP=$ac_cv_prog_OCAMLDEP
+if test -n "$OCAMLDEP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLDEP" >&5
+$as_echo "$OCAMLDEP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAMLDEP"; then
+  ac_ct_OCAMLDEP=$OCAMLDEP
+  # Extract the first word of "ocamldep", so it can be a program name with args.
+set dummy ocamldep; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAMLDEP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAMLDEP"; then
+  ac_cv_prog_ac_ct_OCAMLDEP="$ac_ct_OCAMLDEP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAMLDEP="ocamldep"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAMLDEP=$ac_cv_prog_ac_ct_OCAMLDEP
+if test -n "$ac_ct_OCAMLDEP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAMLDEP" >&5
+$as_echo "$ac_ct_OCAMLDEP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAMLDEP" = x; then
+    OCAMLDEP="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OCAMLDEP=$ac_ct_OCAMLDEP
+  fi
+else
+  OCAMLDEP="$ac_cv_prog_OCAMLDEP"
+fi
+
+
+  # checking for ocamlmktop
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ocamlmktop", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ocamlmktop; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OCAMLMKTOP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OCAMLMKTOP"; then
+  ac_cv_prog_OCAMLMKTOP="$OCAMLMKTOP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OCAMLMKTOP="${ac_tool_prefix}ocamlmktop"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OCAMLMKTOP=$ac_cv_prog_OCAMLMKTOP
+if test -n "$OCAMLMKTOP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCAMLMKTOP" >&5
+$as_echo "$OCAMLMKTOP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OCAMLMKTOP"; then
+  ac_ct_OCAMLMKTOP=$OCAMLMKTOP
+  # Extract the first word of "ocamlmktop", so it can be a program name with args.
+set dummy ocamlmktop; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OCAMLMKTOP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OCAMLMKTOP"; then
+  ac_cv_prog_ac_ct_OCAMLMKTOP="$ac_ct_OCAMLMKTOP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OCAMLMKTOP="ocamlmktop"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OCAMLMKTOP=$ac_cv_prog_ac_ct_OCAMLMKTOP
+if test -n "$ac_ct_OCAMLMKTOP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OCAMLMKTOP" >&5
+$as_echo "$ac_ct_OCAMLMKTOP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OCAMLMKTOP" = x; then
+    OCAMLMKTOP="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)


--===============6835735191746885487==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xen.org
http://lists.xensource.com/xen-changelog
--===============6835735191746885487==--

From xen-devel-bounces@lists.xen.org Fri Feb 24 02:12:55 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Feb 2012 02:12:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1S0kdv-0007U0-UE; Fri, 24 Feb 2012 02:12:19 +0000
Received: from mail174.messagelabs.com ([85.158.138.51])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <jaceksburghardt@gmail.com>) id 1S0kdt-0007Tv-8W
	for xen-devel@lists.xensource.com; Fri, 24 Feb 2012 02:12:18 +0000
X-Env-Sender: jaceksburghardt@gmail.com
X-Msg-Ref: server-10.tower-174.messagelabs.com!1330049530!14679173!1
X-Originating-IP: [74.125.82.43]
X-SpamReason: No, hits=1.5 required=7.0 tests=HTML_00_10,HTML_MESSAGE,
	ML_RADAR_SPEW_LINKS_14,RCVD_BY_IP,spamassassin: 
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 26831 invoked from network); 24 Feb 2012 02:12:10 -0000
Received: from mail-ww0-f43.google.com (HELO mail-ww0-f43.google.com)
	(74.125.82.43)
	by server-10.tower-174.messagelabs.com with RC4-SHA encrypted SMTP;
	24 Feb 2012 02:12:10 -0000
Received: by wgbdr13 with SMTP id dr13so1475216wgb.24
	for <xen-devel@lists.xensource.com>;
	Thu, 23 Feb 2012 18:12:10 -0800 (PST)
Received-SPF: pass (google.com: domain of jaceksburghardt@gmail.com designates
	10.180.99.7 as permitted sender) client-ip=10.180.99.7; 
Authentication-Results: mr.google.com; spf=pass (google.com: domain of
	jaceksburghardt@gmail.com designates 10.180.99.7 as permitted
	sender) smtp.mail=jaceksburghardt@gmail.com;
	dkim=pass header.i=jaceksburghardt@gmail.com
Received: from mr.google.com ([10.180.99.7])
	by 10.180.99.7 with SMTP id em7mr545789wib.7.1330049530062 (num_hops =
	1); Thu, 23 Feb 2012 18:12:10 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=mime-version:date:message-id:subject:from:to:content-type;
	bh=/Tj+iCmF0uNXmwE046N2qoWat+5Cng/Y9DlpTBIsFdU=;
	b=OojF0PP/e0Fbx2hlOdX7OcVsP+f+SHDUp+0wz0RzPdOC6xyZ+rbpASsKOyamWxeHzP
	FHoyveqOtvwA0fnobjHN8LGwKRBRWj/SIc8AZp4UkBPWFsQU/OIFDcy8e70WbdHtpNpf
	/RZxwKRmoB7OvBVNk9zlmguyiuOBMiAtIwyvM=
MIME-Version: 1.0
Received: by 10.180.99.7 with SMTP id em7mr451573wib.7.1330049529992; Thu, 23
	Feb 2012 18:12:09 -0800 (PST)
Received: by 10.180.106.99 with HTTP; Thu, 23 Feb 2012 18:12:09 -0800 (PST)
Date: Thu, 23 Feb 2012 19:12:09 -0700
Message-ID: <CAHyyzzTxGHVu02sP==Lm2Du2GSCK6Bct=8F98djP0-M4hhx5vQ@mail.gmail.com>
From: jacek burghardt <jaceksburghardt@gmail.com>
To: xen-devel@lists.xensource.com
Content-Type: multipart/mixed; boundary=f46d04182804c4d6b904b9ac494f
Subject: [Xen-devel] pvscsi patch
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

--f46d04182804c4d6b904b9ac494f
Content-Type: multipart/alternative; boundary=f46d04182804c4d6a204b9ac494d

--f46d04182804c4d6a204b9ac494d
Content-Type: text/plain; charset=ISO-8859-1

I had extracted this pvscsi patch to 3.3.0 kernel. from pvscsi git and
patched my kernel. both xenscsi-back front loads fine. If I start vm with
xm domU and hvm can see my blurey drive with it correct name but I get scsi
errors. I wonder if there is patch that gives direct access to scsi device.
esxi gives direct access so makemkv works perfectly.

--f46d04182804c4d6a204b9ac494d
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I had extracted this pvscsi patch to 3.3.0 kernel. from pvscsi git and patc=
hed my kernel. both xenscsi-back front loads fine. If I start vm with xm do=
mU and hvm can see my blurey drive with it correct name but I get scsi erro=
rs. I wonder if there is patch that gives direct access to scsi device. esx=
i gives direct access so makemkv works perfectly. <br>

--f46d04182804c4d6a204b9ac494d--
--f46d04182804c4d6b904b9ac494f
Content-Type: application/octet-stream; name="patch-pvscsi.diff"
Content-Disposition: attachment; filename="patch-pvscsi.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gz2tyvqr0

ZGlmZiAtcnVwTiB4ZW4vZHJpdmVycy9zY3NpL0tjb25maWcgeGVuYy9kcml2ZXJzL3Njc2kvS2Nv
bmZpZwotLS0geGVuL2RyaXZlcnMvc2NzaS9LY29uZmlnCTIwMTItMDItMjQgMTU6MTI6MzkuNzIy
MzExNjMzIC0wNzAwCisrKyB4ZW5jL2RyaXZlcnMvc2NzaS9LY29uZmlnCTIwMTItMDItMjQgMTU6
MTk6MzUuMzE1NjQ0OTMzIC0wNzAwCkBAIC0xODk3LDYgKzE4OTcsMjIgQEAgY29uZmlnIFNDU0lf
QkZBX0ZDCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo
ZXJlLiBUaGUgbW9kdWxlIHdpbGwKIAkgIGJlIGNhbGxlZCBiZmEuCiAKK2NvbmZpZyBYRU5fU0NT
SV9GUk9OVEVORAorICAgICAgICB0cmlzdGF0ZSAiWGVuIFBWU0NTSSBmcm9udGVuZCBkcml2ZXIi
CisgICAgICAgIGRlcGVuZHMgb24gWEVOICYmIFNDU0kKKyAgICAgICAgZGVmYXVsdCBtCisgICAg
ICAgIGhlbHAKKyAgICAgICAgICBUaGUgU0NTSSBmcm9udGVuZCBkcml2ZXIgYWxsb3dzIHRoZSBr
ZXJuZWwgdG8gYWNjZXNzIFNDU0kgRGV2aWNlcworICAgICAgICAgIHdpdGhpbiBhbm90aGVyIGd1
ZXN0IE9TLgorCitjb25maWcgWEVOX1NDU0lfQkFDS0VORAorICAgICAgICB0cmlzdGF0ZSAiWGVu
IFBWU0NTSSBiYWNrZW5kIGRyaXZlciIKKyAgICAgICAgZGVwZW5kcyBvbiBYRU5fQkFDS0VORCAm
JiBTQ1NJCisgICAgICAgIGRlZmF1bHQgbQorICAgICAgICBoZWxwCisgICAgICAgICAgVGhlIFBW
U0NTSSBiYWNrZW5kIGRyaXZlciBhbGxvd3MgdGhlIGtlcm5lbCB0byBleHBvcnQgaXRzIFNDU0kg
RGV2aWNlcworICAgICAgICAgIHRvIG90aGVyIFhlbiBndWVzdHMgdmlhIGEgaGlnaC1wZXJmb3Jt
YW5jZSBzaGFyZWQtbWVtb3J5IGludGVyZmFjZS4KKwogZW5kaWYgIyBTQ1NJX0xPV0xFVkVMCiAK
IHNvdXJjZSAiZHJpdmVycy9zY3NpL3BjbWNpYS9LY29uZmlnIgpkaWZmIC1ydXBOIHhlbi9kcml2
ZXJzL3Njc2kvS2NvbmZpZy5vcmlnIHhlbmMvZHJpdmVycy9zY3NpL0tjb25maWcub3JpZwotLS0g
eGVuL2RyaXZlcnMvc2NzaS9LY29uZmlnLm9yaWcJMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAw
MDAgLTA3MDAKKysrIHhlbmMvZHJpdmVycy9zY3NpL0tjb25maWcub3JpZwkyMDEyLTAyLTI0IDE1
OjEyOjM5LjcyMjMxMTYzMyAtMDcwMApAQCAtMCwwICsxLDE5MDggQEAKK21lbnUgIlNDU0kgZGV2
aWNlIHN1cHBvcnQiCisKK2NvbmZpZyBTQ1NJX01PRAorICAgICAgIHRyaXN0YXRlCisgICAgICAg
ZGVmYXVsdCB5IGlmIFNDU0k9biB8fCBTQ1NJPXkKKyAgICAgICBkZWZhdWx0IG0gaWYgU0NTST1t
CisKK2NvbmZpZyBSQUlEX0FUVFJTCisJdHJpc3RhdGUgIlJBSUQgVHJhbnNwb3J0IENsYXNzIgor
CWRlZmF1bHQgbgorCWRlcGVuZHMgb24gQkxPQ0sKKwlkZXBlbmRzIG9uIFNDU0lfTU9ECisJLS0t
aGVscC0tLQorCSAgUHJvdmlkZXMgUkFJRAorCitjb25maWcgU0NTSQorCXRyaXN0YXRlICJTQ1NJ
IGRldmljZSBzdXBwb3J0IgorCWRlcGVuZHMgb24gQkxPQ0sKKwlzZWxlY3QgU0NTSV9ETUEgaWYg
SEFTX0RNQQorCS0tLWhlbHAtLS0KKwkgIElmIHlvdSB3YW50IHRvIHVzZSBhIFNDU0kgaGFyZCBk
aXNrLCBTQ1NJIHRhcGUgZHJpdmUsIFNDU0kgQ0QtUk9NIG9yCisJICBhbnkgb3RoZXIgU0NTSSBk
ZXZpY2UgdW5kZXIgTGludXgsIHNheSBZIGFuZCBtYWtlIHN1cmUgdGhhdCB5b3Uga25vdworCSAg
dGhlIG5hbWUgb2YgeW91ciBTQ1NJIGhvc3QgYWRhcHRlciAodGhlIGNhcmQgaW5zaWRlIHlvdXIg
Y29tcHV0ZXIKKwkgIHRoYXQgInNwZWFrcyIgdGhlIFNDU0kgcHJvdG9jb2wsIGFsc28gY2FsbGVk
IFNDU0kgY29udHJvbGxlciksCisJICBiZWNhdXNlIHlvdSB3aWxsIGJlIGFza2VkIGZvciBpdC4K
KworCSAgWW91IGFsc28gbmVlZCB0byBzYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgZGV2aWNlIHdo
aWNoIHNwZWFrcworCSAgdGhlIFNDU0kgcHJvdG9jb2wuICBFeGFtcGxlcyBvZiB0aGlzIGluY2x1
ZGUgdGhlIHBhcmFsbGVsIHBvcnQKKwkgIHZlcnNpb24gb2YgdGhlIElPTUVHQSBaSVAgZHJpdmUs
IFVTQiBzdG9yYWdlIGRldmljZXMsIEZpYnJlCisJICBDaGFubmVsLCBhbmQgRmlyZVdpcmUgc3Rv
cmFnZS4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0g
aGVyZSBhbmQgcmVhZAorCSAgPGZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kudHh0Pi4KKwkg
IFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NzaV9tb2QuCisKKwkgIEhvd2V2ZXIsIGRvIG5v
dCBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUgaWYgeW91ciByb290IGZpbGUgc3lzdGVtCisJICAo
dGhlIG9uZSBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkgLykgaXMgbG9jYXRlZCBvbiBhIFNDU0kg
ZGV2aWNlLgorCitjb25maWcgU0NTSV9ETUEKKwlib29sCisJZGVmYXVsdCBuCisKK2NvbmZpZyBT
Q1NJX1RHVAorCXRyaXN0YXRlICJTQ1NJIHRhcmdldCBzdXBwb3J0IgorCWRlcGVuZHMgb24gU0NT
SSAmJiBFWFBFUklNRU5UQUwKKwktLS1oZWxwLS0tCisJICBJZiB5b3Ugd2FudCB0byB1c2UgU0NT
SSB0YXJnZXQgbW9kZSBkcml2ZXJzIGVuYWJsZSB0aGlzIG9wdGlvbi4KKwkgIElmIHlvdSBjaG9v
c2UgTSwgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY3NpX3RndC4KKworY29uZmlnIFNDU0lf
TkVUTElOSworCWJvb2wKKwlkZWZhdWx0CW4KKwlzZWxlY3QgTkVUCisKK2NvbmZpZyBTQ1NJX1BS
T0NfRlMKKwlib29sICJsZWdhY3kgL3Byb2Mvc2NzaS8gc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFND
U0kgJiYgUFJPQ19GUworCWRlZmF1bHQgeQorCS0tLWhlbHAtLS0KKwkgIFRoaXMgb3B0aW9uIGVu
YWJsZXMgc3VwcG9ydCBmb3IgdGhlIHZhcmlvdXMgZmlsZXMgaW4KKwkgIC9wcm9jL3Njc2kuICBJ
biBMaW51eCAyLjYgdGhpcyBoYXMgYmVlbiBzdXBlcnNlZGVkIGJ5CisJICBmaWxlcyBpbiBzeXNm
cyBidXQgbWFueSBsZWdhY3kgYXBwbGljYXRpb25zIHJlbHkgb24gdGhpcy4KKworCSAgSWYgdW5z
dXJlIHNheSBZLgorCitjb21tZW50ICJTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0Qt
Uk9NKSIKKwlkZXBlbmRzIG9uIFNDU0kKKworY29uZmlnIEJMS19ERVZfU0QKKwl0cmlzdGF0ZSAi
U0NTSSBkaXNrIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBTQ1NJCisJc2VsZWN0IENSQ19UMTBESUYg
aWYgQkxLX0RFVl9JTlRFR1JJVFkKKwktLS1oZWxwLS0tCisJICBJZiB5b3Ugd2FudCB0byB1c2Ug
U0NTSSBoYXJkIGRpc2tzLCBGaWJyZSBDaGFubmVsIGRpc2tzLAorCSAgU2VyaWFsIEFUQSAoU0FU
QSkgb3IgUGFyYWxsZWwgQVRBIChQQVRBKSBoYXJkIGRpc2tzLAorCSAgVVNCIHN0b3JhZ2Ugb3Ig
dGhlIFNDU0kgb3IgcGFyYWxsZWwgcG9ydCB2ZXJzaW9uIG9mCisJICB0aGUgSU9NRUdBIFpJUCBk
cml2ZSwgc2F5IFkgYW5kIHJlYWQgdGhlIFNDU0ktSE9XVE8sCisJICB0aGUgRGlzay1IT1dUTyBh
bmQgdGhlIE11bHRpLURpc2stSE9XVE8sIGF2YWlsYWJsZSBmcm9tCisJICA8aHR0cDovL3d3dy50
bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LiBUaGlzIGlzIE5PVCBmb3IgU0NTSQorCSAgQ0QtUk9N
cy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVy
ZSBhbmQgcmVhZAorCSAgPGZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kudHh0Pi4KKwkgIFRo
ZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2RfbW9kLgorCisJICBEbyBub3QgY29tcGlsZSB0aGlz
IGRyaXZlciBhcyBhIG1vZHVsZSBpZiB5b3VyIHJvb3QgZmlsZSBzeXN0ZW0KKwkgICh0aGUgb25l
IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeSAvKSBpcyBsb2NhdGVkIG9uIGEgU0NTSSBkaXNrLgor
CSAgSW4gdGhpcyBjYXNlLCBkbyBub3QgY29tcGlsZSB0aGUgZHJpdmVyIGZvciB5b3VyIFNDU0kg
aG9zdCBhZGFwdGVyCisJICAoYmVsb3cpIGFzIGEgbW9kdWxlIGVpdGhlci4KKworY29uZmlnIENI
Ul9ERVZfU1QKKwl0cmlzdGF0ZSAiU0NTSSB0YXBlIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBTQ1NJ
CisJLS0taGVscC0tLQorCSAgSWYgeW91IHdhbnQgdG8gdXNlIGEgU0NTSSB0YXBlIGRyaXZlIHVu
ZGVyIExpbnV4LCBzYXkgWSBhbmQgcmVhZCB0aGUKKwkgIFNDU0ktSE9XVE8sIGF2YWlsYWJsZSBm
cm9tCisJICA8aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LCBhbmQKKwkgIDxm
aWxlOkRvY3VtZW50YXRpb24vc2NzaS9zdC50eHQ+IGluIHRoZSBrZXJuZWwgc291cmNlLiAgVGhp
cyBpcyBOT1QKKwkgIGZvciBTQ1NJIENELVJPTXMuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2
ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUgYW5kIHJlYWQKKwkgIDxmaWxlOkRvY3VtZW50
YXRpb24vc2NzaS9zY3NpLnR4dD4uIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3QuCisKK2Nv
bmZpZyBDSFJfREVWX09TU1QKKwl0cmlzdGF0ZSAiU0NTSSBPblN0cmVhbSBTQy14MCB0YXBlIHN1
cHBvcnQiCisJZGVwZW5kcyBvbiBTQ1NJCisJLS0taGVscC0tLQorCSAgVGhlIE9uU3RyZWFtIFND
LXgwIFNDU0kgdGFwZSBkcml2ZXMgY2Fubm90IGJlIGRyaXZlbiBieSB0aGUKKwkgIHN0YW5kYXJk
IHN0IGRyaXZlciwgYnV0IGluc3RlYWQgbmVlZCB0aGlzIHNwZWNpYWwgb3NzdCBkcml2ZXIgYW5k
CisJICB1c2UgdGhlICAvZGV2L29zc3RYIGNoYXIgZGV2aWNlIG5vZGVzIChtYWpvciAyMDYpLiAg
VmlhIHVzYi1zdG9yYWdlLAorCSAgeW91IG1heSBiZSBhYmxlIHRvIGRyaXZlIHRoZSBVU0IteDAg
YW5kIERJLXgwIGRyaXZlcyBhcyB3ZWxsLgorCSAgTm90ZSB0aGF0IHRoZXJlIGlzIGFsc28gYSBz
ZWNvbmQgZ2VuZXJhdGlvbiBvZiBPblN0cmVhbQorCSAgdGFwZSBkcml2ZXMgKEFEUi14MCkgdGhh
dCBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgU0NTSS0yIGNvbW1hbmRzIGZvcgorCSAgdGFwZXMgKFFJ
Qy0xNTcpIGFuZCBjYW4gYmUgZHJpdmVuIGJ5IHRoZSBzdGFuZGFyZCBkcml2ZXIgc3QuCisJICBG
b3IgbW9yZSBpbmZvcm1hdGlvbiwgeW91IG1heSBoYXZlIGEgbG9vayBhdCB0aGUgU0NTSS1IT1dU
TworCSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvPiAgYW5kCisJICA8Zmls
ZTpEb2N1bWVudGF0aW9uL3Njc2kvb3NzdC50eHQ+ICBpbiB0aGUga2VybmVsIHNvdXJjZS4KKwkg
IE1vcmUgaW5mbyBvbiB0aGUgT25TdHJlYW0gZHJpdmVyIG1heSBiZSBmb3VuZCBvbgorCSAgPGh0
dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3NzdC8+CisJICBQbGVhc2UgYWxzbyBoYXZl
IGEgbG9vayBhdCB0aGUgc3RhbmRhcmQgc3QgZG9jdSwgYXMgbW9zdCBvZiBpdAorCSAgYXBwbGll
cyB0byBvc3N0IGFzIHdlbGwuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1
bGUsIGNob29zZSBNIGhlcmUgYW5kIHJlYWQKKwkgIDxmaWxlOkRvY3VtZW50YXRpb24vc2NzaS9z
Y3NpLnR4dD4uIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgb3NzdC4KKworY29uZmlnIEJMS19E
RVZfU1IKKwl0cmlzdGF0ZSAiU0NTSSBDRFJPTSBzdXBwb3J0IgorCWRlcGVuZHMgb24gU0NTSQor
CS0tLWhlbHAtLS0KKwkgIElmIHlvdSB3YW50IHRvIHVzZSBhIENEIG9yIERWRCBkcml2ZSBhdHRh
Y2hlZCB0byB5b3VyIGNvbXB1dGVyCisJICBieSBTQ1NJLCBGaXJlV2lyZSwgVVNCIG9yIEFUQVBJ
LCBzYXkgWSBhbmQgcmVhZCB0aGUgU0NTSS1IT1dUTworCSAgYW5kIHRoZSBDRFJPTS1IT1dUTyBh
dCA8aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LgorCisJICBNYWtlIHN1cmUg
dG8gc2F5IFkgb3IgTSB0byAiSVNPIDk2NjAgQ0QtUk9NIGZpbGUgc3lzdGVtIHN1cHBvcnQiLgor
CisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlIGFu
ZCByZWFkCisJICA8ZmlsZTpEb2N1bWVudGF0aW9uL3Njc2kvc2NzaS50eHQ+LgorCSAgVGhlIG1v
ZHVsZSB3aWxsIGJlIGNhbGxlZCBzcl9tb2QuCisKK2NvbmZpZyBCTEtfREVWX1NSX1ZFTkRPUgor
CWJvb2wgIkVuYWJsZSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucyAoZm9yIFNDU0kgQ0RST00p
IgorCWRlcGVuZHMgb24gQkxLX0RFVl9TUgorCWhlbHAKKwkgIFRoaXMgZW5hYmxlcyB0aGUgdXNh
Z2Ugb2YgdmVuZG9yIHNwZWNpZmljIFNDU0kgY29tbWFuZHMuIFRoaXMgaXMKKwkgIHJlcXVpcmVk
IHRvIHN1cHBvcnQgbXVsdGlzZXNzaW9uIENEcyB3aXRoIG9sZCBORUMvVE9TSElCQSBjZHJvbQor
CSAgZHJpdmVzIChhbmQgSFAgV3JpdGVycykuIElmIHlvdSBoYXZlIHN1Y2ggYSBkcml2ZSBhbmQg
Z2V0IHRoZSBmaXJzdAorCSAgc2Vzc2lvbiBvbmx5LCB0cnkgc2F5aW5nIFkgaGVyZTsgZXZlcnli
b2R5IGVsc2Ugc2F5cyBOLgorCitjb25maWcgQ0hSX0RFVl9TRworCXRyaXN0YXRlICJTQ1NJIGdl
bmVyaWMgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFNDU0kKKwktLS1oZWxwLS0tCisJICBJZiB5b3Ug
d2FudCB0byB1c2UgU0NTSSBzY2FubmVycywgc3ludGhlc2l6ZXJzIG9yIENELXdyaXRlcnMgb3Ig
anVzdAorCSAgYWJvdXQgYW55dGhpbmcgaGF2aW5nICJTQ1NJIiBpbiBpdHMgbmFtZSBvdGhlciB0
aGFuIGhhcmQgZGlza3MsCisJICBDRC1ST01zIG9yIHRhcGVzLCBzYXkgWSBoZXJlLiBUaGVzZSB3
b24ndCBiZSBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbAorCSAgZGlyZWN0bHksIHNvIHlvdSBuZWVk
IHNvbWUgYWRkaXRpb25hbCBzb2Z0d2FyZSB3aGljaCBrbm93cyBob3cgdG8KKwkgIHRhbGsgdG8g
dGhlc2UgZGV2aWNlcyB1c2luZyB0aGUgU0NTSSBwcm90b2NvbDoKKworCSAgRm9yIHNjYW5uZXJz
LCBsb29rIGF0IFNBTkUgKDxodHRwOi8vd3d3LnNhbmUtcHJvamVjdC5vcmcvPikuIEZvciBDRAor
CSAgd3JpdGVyIHNvZnR3YXJlIGxvb2sgYXQgQ2RydG9vbHMKKwkgICg8aHR0cDovL2NkcmVjb3Jk
LmJlcmxpb3MuZGUvcHJpdmF0ZS9jZHJlY29yZC5odG1sPikKKwkgIGFuZCBmb3IgYnVybmluZyBh
ICJkaXNrIGF0IG9uY2UiOiBDRFJEQU8KKwkgICg8aHR0cDovL2NkcmRhby5zb3VyY2Vmb3JnZS5u
ZXQvPikuIENkcGFyYW5vaWEgaXMgYSBoaWdoCisJICBxdWFsaXR5IGRpZ2l0YWwgcmVhZGVyIG9m
IGF1ZGlvIENEcyAoPGh0dHA6Ly93d3cueGlwaC5vcmcvcGFyYW5vaWEvPikuCisJICBGb3Igb3Ro
ZXIgZGV2aWNlcywgaXQncyBwb3NzaWJsZSB0aGF0IHlvdSdsbCBoYXZlIHRvIHdyaXRlIHRoZQor
CSAgZHJpdmVyIHNvZnR3YXJlIHlvdXJzZWxmLiBQbGVhc2UgcmVhZCB0aGUgZmlsZQorCSAgPGZp
bGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktZ2VuZXJpYy50eHQ+IGZvciBtb3JlIGluZm9ybWF0
aW9uLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo
ZXJlIGFuZCByZWFkCisJICA8ZmlsZTpEb2N1bWVudGF0aW9uL3Njc2kvc2NzaS50eHQ+LiBUaGUg
bW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNnLgorCisJICBJZiB1bnN1cmUsIHNheSBOLgorCitjb25m
aWcgQ0hSX0RFVl9TQ0gKKwl0cmlzdGF0ZSAiU0NTSSBtZWRpYSBjaGFuZ2VyIHN1cHBvcnQiCisJ
ZGVwZW5kcyBvbiBTQ1NJCisJLS0taGVscC0tLQorCSAgVGhpcyBpcyBhIGRyaXZlciBmb3IgU0NT
SSBtZWRpYSBjaGFuZ2Vycy4gIE1vc3QgY29tbW9uIGRldmljZXMgYXJlCisJICB0YXBlIGxpYnJh
cmllcyBhbmQgTU9EL0NEUk9NIGp1a2Vib3hlcy4gICpSZWFsKiBqdWtlYm94ZXMsIHlvdQorCSAg
ZG9uJ3QgbmVlZCB0aGlzIGZvciB0aG9zZSB0aW55IDYtc2xvdCBjZHJvbSBjaGFuZ2Vycy4gIE1l
ZGlhCisJICBjaGFuZ2VycyBhcmUgbGlzdGVkIGFzICJUeXBlOiBNZWRpdW0gQ2hhbmdlciIgaW4g
L3Byb2Mvc2NzaS9zY3NpLgorCSAgSWYgeW91IGhhdmUgc3VjaCBoYXJkd2FyZSBhbmQgd2FudCB0
byB1c2UgaXQgd2l0aCBsaW51eCwgc2F5IFkKKwkgIGhlcmUuICBDaGVjayA8ZmlsZTpEb2N1bWVu
dGF0aW9uL3Njc2kvc2NzaS1jaGFuZ2VyLnR4dD4gZm9yIGRldGFpbHMuCisJCisJICBJZiB5b3Ug
d2FudCB0byBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlCisJ
ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZl
ciB5b3Ugd2FudCksCisJICBzYXkgTSBoZXJlIGFuZCByZWFkIDxmaWxlOkRvY3VtZW50YXRpb24v
a2J1aWxkL21vZHVsZXMudHh0PiBhbmQKKwkgIDxmaWxlOkRvY3VtZW50YXRpb24vc2NzaS9zY3Np
LnR4dD4uIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2guby4KKwkgIElmIHVuc3VyZSwgc2F5
IE4uCisKK2NvbmZpZyBTQ1NJX0VOQ0xPU1VSRQorCXRyaXN0YXRlICJTQ1NJIEVuY2xvc3VyZSBT
dXBwb3J0IgorCWRlcGVuZHMgb24gU0NTSSAmJiBFTkNMT1NVUkVfU0VSVklDRVMKKwloZWxwCisJ
ICBFbmNsb3N1cmVzIGFyZSBkZXZpY2VzIHNpdHRpbmcgb24gb3IgaW4gU0NTSSBiYWNrcGxhbmVz
IHRoYXQKKwkgIG1hbmFnZSBkZXZpY2VzLiAgSWYgeW91IGhhdmUgYSBkaXNrIGNhZ2UsIHRoZSBj
aGFuY2VzIGFyZSB0aGF0CisJICBpdCBoYXMgYW4gZW5jbG9zdXJlIGRldmljZS4gIFNlbGVjdGlu
ZyB0aGlzIG9wdGlvbiB3aWxsIGp1c3QgYWxsb3cKKwkgIGNlcnRhaW4gZW5jbG9zdXJlIGNvbmRp
dGlvbnMgdG8gYmUgcmVwb3J0ZWQgYW5kIGlzIG5vdCByZXF1aXJlZC4KKworY29uZmlnIFNDU0lf
TVVMVElfTFVOCisJYm9vbCAiUHJvYmUgYWxsIExVTnMgb24gZWFjaCBTQ1NJIGRldmljZSIKKwlk
ZXBlbmRzIG9uIFNDU0kKKwloZWxwCisJICBTb21lIGRldmljZXMgc3VwcG9ydCBtb3JlIHRoYW4g
b25lIExVTiAoTG9naWNhbCBVbml0IE51bWJlcikgaW4gb3JkZXIKKwkgIHRvIGFsbG93IGFjY2Vz
cyB0byBzZXZlcmFsIG1lZGlhLCBlLmcuIENEIGp1a2Vib3gsIFVTQiBjYXJkIHJlYWRlciwKKwkg
IG1vYmlsZSBwaG9uZSBpbiBtYXNzIHN0b3JhZ2UgbW9kZS4gVGhpcyBvcHRpb24gZm9yY2VzIHRo
ZSBrZXJuZWwgdG8KKwkgIHByb2JlIGZvciBhbGwgTFVOcyBieSBkZWZhdWx0LiBUaGlzIHNldHRp
bmcgY2FuIGJlIG92ZXJyaWRlbiBieQorCSAgbWF4X2x1bnMgYm9vdC9tb2R1bGUgcGFyYW1ldGVy
LiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gZG9lcyBub3QgYWZmZWN0CisJICBkZXZpY2VzIGNvbmZv
cm1pbmcgdG8gU0NTSS0zIG9yIGhpZ2hlciBhcyB0aGV5IGNhbiBleHBsaWNpdGVseSByZXBvcnQK
KwkgIHRoZWlyIG51bWJlciBvZiBMVU5zLiBJdCBpcyBzYWZlIHRvIHNheSBZIGhlcmUgdW5sZXNz
IHlvdSBoYXZlIG9uZSBvZgorCSAgdGhvc2UgcmFyZSBkZXZpY2VzIHdoaWNoIHJlYWN0cyBpbiBh
biB1bmV4cGVjdGVkIHdheSB3aGVuIHByb2JlZCBmb3IKKwkgIG11bHRpcGxlIExVTnMuCisKK2Nv
bmZpZyBTQ1NJX0NPTlNUQU5UUworCWJvb2wgIlZlcmJvc2UgU0NTSSBlcnJvciByZXBvcnRpbmcg
KGtlcm5lbCBzaXplICs9MTJLKSIKKwlkZXBlbmRzIG9uIFNDU0kKKwloZWxwCisJICBUaGUgZXJy
b3IgbWVzc2FnZXMgcmVnYXJkaW5nIHlvdXIgU0NTSSBoYXJkd2FyZSB3aWxsIGJlIGVhc2llciB0
bworCSAgdW5kZXJzdGFuZCBpZiB5b3Ugc2F5IFkgaGVyZTsgaXQgd2lsbCBlbmxhcmdlIHlvdXIg
a2VybmVsIGJ5IGFib3V0CisJICAxMiBLQi4gSWYgaW4gZG91YnQsIHNheSBZLgorCitjb25maWcg
U0NTSV9MT0dHSU5HCisJYm9vbCAiU0NTSSBsb2dnaW5nIGZhY2lsaXR5IgorCWRlcGVuZHMgb24g
U0NTSQorCS0tLWhlbHAtLS0KKwkgIFRoaXMgdHVybnMgb24gYSBsb2dnaW5nIGZhY2lsaXR5IHRo
YXQgY2FuIGJlIHVzZWQgdG8gZGVidWcgYSBudW1iZXIKKwkgIG9mIFNDU0kgcmVsYXRlZCBwcm9i
bGVtcy4KKworCSAgSWYgeW91IHNheSBZIGhlcmUsIG5vIGxvZ2dpbmcgb3V0cHV0IHdpbGwgYXBw
ZWFyIGJ5IGRlZmF1bHQsIGJ1dCB5b3UKKwkgIGNhbiBlbmFibGUgbG9nZ2luZyBieSBzYXlpbmcg
WSB0byAiL3Byb2MgZmlsZSBzeXN0ZW0gc3VwcG9ydCIgYW5kCisJICAiU3lzY3RsIHN1cHBvcnQi
IGJlbG93IGFuZCBleGVjdXRpbmcgdGhlIGNvbW1hbmQKKworCSAgZWNobyA8Yml0bWFzaz4gPiAv
cHJvYy9zeXMvZGV2L3Njc2kvbG9nZ2luZ19sZXZlbAorCisJICB3aGVyZSA8Yml0bWFzaz4gaXMg
YSBmb3VyIGJ5dGUgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBsb2dnaW5nIHR5cGUKKwkgIGFuZCBs
b2dnaW5nIGxldmVsIGZvciBlYWNoIHR5cGUgb2YgbG9nZ2luZyBzZWxlY3RlZC4KKworCSAgVGhl
cmUgYXJlIGEgbnVtYmVyIG9mIGxvZ2dpbmcgdHlwZXMgYW5kIHlvdSBjYW4gZmluZCB0aGVtIGlu
IHRoZQorCSAgc291cmNlIGF0IDxmaWxlOmRyaXZlcnMvc2NzaS9zY3NpX2xvZ2dpbmcuaD4uIFRo
ZSBsb2dnaW5nIGxldmVscworCSAgYXJlIGFsc28gZGVzY3JpYmVkIGluIHRoYXQgZmlsZSBhbmQg
dGhleSBkZXRlcm1pbmUgdGhlIHZlcmJvc2l0eSBvZgorCSAgdGhlIGxvZ2dpbmcgZm9yIGVhY2gg
bG9nZ2luZyB0eXBlLgorCisJICBJZiB5b3Ugc2F5IE4gaGVyZSwgaXQgbWF5IGJlIGhhcmRlciB0
byB0cmFjayBkb3duIHNvbWUgdHlwZXMgb2YgU0NTSQorCSAgcHJvYmxlbXMuIElmIHlvdSBzYXkg
WSBoZXJlIHlvdXIga2VybmVsIHdpbGwgYmUgc29tZXdoYXQgbGFyZ2VyLCBidXQKKwkgIHRoZXJl
IHNob3VsZCBiZSBubyBub3RpY2VhYmxlIHBlcmZvcm1hbmNlIGltcGFjdCBhcyBsb25nIGFzIHlv
dSBoYXZlCisJICBsb2dnaW5nIHR1cm5lZCBvZmYuCisKK2NvbmZpZyBTQ1NJX1NDQU5fQVNZTkMK
Kwlib29sICJBc3luY2hyb25vdXMgU0NTSSBzY2FubmluZyIKKwlkZXBlbmRzIG9uIFNDU0kKKwlo
ZWxwCisJICBUaGUgU0NTSSBzdWJzeXN0ZW0gY2FuIHByb2JlIGZvciBkZXZpY2VzIHdoaWxlIHRo
ZSByZXN0IG9mIHRoZQorCSAgc3lzdGVtIGNvbnRpbnVlcyBib290aW5nLCBhbmQgZXZlbiBwcm9i
ZSBkZXZpY2VzIG9uIGRpZmZlcmVudAorCSAgYnVzc2VzIGluIHBhcmFsbGVsLCBsZWFkaW5nIHRv
IGEgc2lnbmlmaWNhbnQgc3BlZWQtdXAuCisKKwkgIElmIHlvdSBoYXZlIGJ1aWx0IFNDU0kgYXMg
bW9kdWxlcywgZW5hYmxpbmcgdGhpcyBvcHRpb24gY2FuCisJICBiZSBhIHByb2JsZW0gYXMgdGhl
IGRldmljZXMgbWF5IG5vdCBoYXZlIGJlZW4gZm91bmQgYnkgdGhlCisJICB0aW1lIHlvdXIgc3lz
dGVtIGV4cGVjdHMgdGhlbSB0byBoYXZlIGJlZW4uICBZb3UgY2FuIGxvYWQgdGhlCisJICBzY3Np
X3dhaXRfc2NhbiBtb2R1bGUgdG8gZW5zdXJlIHRoYXQgYWxsIHNjYW5zIGhhdmUgY29tcGxldGVk
LgorCSAgSWYgeW91IGJ1aWxkIHlvdXIgU0NTSSBkcml2ZXJzIGludG8gdGhlIGtlcm5lbCwgdGhl
biBldmVyeXRoaW5nCisJICB3aWxsIHdvcmsgZmluZSBpZiB5b3Ugc2F5IFkgaGVyZS4KKworCSAg
WW91IGNhbiBvdmVycmlkZSB0aGlzIGNob2ljZSBieSBzcGVjaWZ5aW5nICJzY3NpX21vZC5zY2Fu
PXN5bmMiCisJICBvciBhc3luYyBvbiB0aGUga2VybmVsJ3MgY29tbWFuZCBsaW5lLgorCitjb25m
aWcgU0NTSV9XQUlUX1NDQU4KKwl0cmlzdGF0ZSAgIyBObyBwcm9tcHQgaGVyZSwgdGhpcyBpcyBh
biBpbnZpc2libGUgc3ltYm9sLgorCWRlZmF1bHQgbQorCWRlcGVuZHMgb24gU0NTSQorCWRlcGVu
ZHMgb24gTU9EVUxFUworIyBzY3NpX3dhaXRfc2NhbiBpcyBhIGxvYWRhYmxlIG1vZHVsZSB3aGlj
aCB3YWl0cyB1bnRpbCBhbGwgdGhlIGFzeW5jIHNjYW5zIGFyZQorIyBjb21wbGV0ZS4gIFRoZSBp
ZGVhIGlzIHRvIHVzZSBpdCBpbiBpbml0cmQvIGluaXRyYW1mcyBzY3JpcHRzLiAgWW91IG1vZHBy
b2JlCisjIGl0IGFmdGVyIGFsbCB0aGUgbW9kcHJvYmVzIG9mIHRoZSByb290IFNDU0kgZHJpdmVy
cyBhbmQgaXQgd2lsbCB3YWl0IHVudGlsCisjIHRoZXkgaGF2ZSBhbGwgZmluaXNoZWQgc2Nhbm5p
bmcgdGhlaXIgYnVzZXMgYmVmb3JlIGFsbG93aW5nIHRoZSBib290IHRvCisjIHByb2NlZWQuICAo
VGhpcyBtZXRob2QgaXMgbm90IGFwcGxpY2FibGUgaWYgdGFyZ2V0cyBib290IGluZGVwZW5kZW50
bHkgaW4KKyMgcGFyYWxsZWwgd2l0aCB0aGUgaW5pdGlhdG9yLCBvciB3aXRoIHRyYW5zcG9ydHMg
d2l0aCBub24tZGV0ZXJtaW5pc3RpYyB0YXJnZXQKKyMgZGlzY292ZXJ5IHNjaGVtZXMsIG9yIGlm
IGEgdHJhbnNwb3J0IGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHNjc2lfd2FpdF9zY2FuLikKKyMK
KyMgVGhpcyBzeW1ib2wgaXMgbm90IGV4cG9zZWQgYXMgYSBwcm9tcHQgYmVjYXVzZSBsaXR0bGUg
aXMgdG8gYmUgZ2FpbmVkIGJ5CisjIGRpc2FibGluZyBpdCwgd2hlcmVhcyBwZW9wbGUgd2hvIGFj
Y2lkZW50YWxseSBzd2l0Y2ggaXQgb2ZmIG1heSB3b25kZXIgd2h5CisjIHRoZWlyIG1raW5pdHJk
IGdldHMgaW50byB0cm91YmxlLgorCittZW51ICJTQ1NJIFRyYW5zcG9ydHMiCisJZGVwZW5kcyBv
biBTQ1NJCisKK2NvbmZpZyBTQ1NJX1NQSV9BVFRSUworCXRyaXN0YXRlICJQYXJhbGxlbCBTQ1NJ
IChTUEkpIFRyYW5zcG9ydCBBdHRyaWJ1dGVzIgorCWRlcGVuZHMgb24gU0NTSQorCWhlbHAKKwkg
IElmIHlvdSB3aXNoIHRvIGV4cG9ydCB0cmFuc3BvcnQtc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJv
dXQKKwkgIGVhY2ggYXR0YWNoZWQgU0NTSSBkZXZpY2UgdG8gc3lzZnMsIHNheSBZLiAgT3RoZXJ3
aXNlLCBzYXkgTi4KKworY29uZmlnIFNDU0lfRkNfQVRUUlMKKwl0cmlzdGF0ZSAiRmliZXJDaGFu
bmVsIFRyYW5zcG9ydCBBdHRyaWJ1dGVzIgorCWRlcGVuZHMgb24gU0NTSQorCXNlbGVjdCBTQ1NJ
X05FVExJTksKKwloZWxwCisJICBJZiB5b3Ugd2lzaCB0byBleHBvcnQgdHJhbnNwb3J0LXNwZWNp
ZmljIGluZm9ybWF0aW9uIGFib3V0CisJICBlYWNoIGF0dGFjaGVkIEZpYmVyQ2hhbm5lbCBkZXZp
Y2UgdG8gc3lzZnMsIHNheSBZLgorCSAgT3RoZXJ3aXNlLCBzYXkgTi4KKworY29uZmlnIFNDU0lf
RkNfVEdUX0FUVFJTCisJYm9vbCAiU0NTSSB0YXJnZXQgc3VwcG9ydCBmb3IgRmliZXJDaGFubmVs
IFRyYW5zcG9ydCBBdHRyaWJ1dGVzIgorCWRlcGVuZHMgb24gU0NTSV9GQ19BVFRSUworCWRlcGVu
ZHMgb24gU0NTSV9UR1QgPSB5IHx8IFNDU0lfVEdUID0gU0NTSV9GQ19BVFRSUworCWhlbHAKKwkJ
SWYgeW91IHdhbnQgdG8gdXNlIFNDU0kgdGFyZ2V0IG1vZGUgZHJpdmVycyBlbmFibGUgdGhpcyBv
cHRpb24uCisKK2NvbmZpZyBTQ1NJX0lTQ1NJX0FUVFJTCisJdHJpc3RhdGUgImlTQ1NJIFRyYW5z
cG9ydCBBdHRyaWJ1dGVzIgorCWRlcGVuZHMgb24gU0NTSSAmJiBORVQKKwlzZWxlY3QgQkxLX0RF
Vl9CU0dMSUIKKwloZWxwCisJICBJZiB5b3Ugd2lzaCB0byBleHBvcnQgdHJhbnNwb3J0LXNwZWNp
ZmljIGluZm9ybWF0aW9uIGFib3V0CisJICBlYWNoIGF0dGFjaGVkIGlTQ1NJIGRldmljZSB0byBz
eXNmcywgc2F5IFkuCisJICBPdGhlcndpc2UsIHNheSBOLgorCitjb25maWcgU0NTSV9TQVNfQVRU
UlMKKwl0cmlzdGF0ZSAiU0FTIFRyYW5zcG9ydCBBdHRyaWJ1dGVzIgorCWRlcGVuZHMgb24gU0NT
SQorCXNlbGVjdCBCTEtfREVWX0JTRworCWhlbHAKKwkgIElmIHlvdSB3aXNoIHRvIGV4cG9ydCB0
cmFuc3BvcnQtc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQKKwkgIGVhY2ggYXR0YWNoZWQgU0FT
IGRldmljZSB0byBzeXNmcywgc2F5IFkuCisKK3NvdXJjZSAiZHJpdmVycy9zY3NpL2xpYnNhcy9L
Y29uZmlnIgorCitjb25maWcgU0NTSV9TUlBfQVRUUlMKKwl0cmlzdGF0ZSAiU1JQIFRyYW5zcG9y
dCBBdHRyaWJ1dGVzIgorCWRlcGVuZHMgb24gU0NTSQorCWhlbHAKKwkgIElmIHlvdSB3aXNoIHRv
IGV4cG9ydCB0cmFuc3BvcnQtc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQKKwkgIGVhY2ggYXR0
YWNoZWQgU1JQIGRldmljZSB0byBzeXNmcywgc2F5IFkuCisKK2NvbmZpZyBTQ1NJX1NSUF9UR1Rf
QVRUUlMKKwlib29sICJTQ1NJIHRhcmdldCBzdXBwb3J0IGZvciBTUlAgVHJhbnNwb3J0IEF0dHJp
YnV0ZXMiCisJZGVwZW5kcyBvbiBTQ1NJX1NSUF9BVFRSUworCWRlcGVuZHMgb24gU0NTSV9UR1Qg
PSB5IHx8IFNDU0lfVEdUID0gU0NTSV9TUlBfQVRUUlMKKwloZWxwCisJCUlmIHlvdSB3YW50IHRv
IHVzZSBTQ1NJIHRhcmdldCBtb2RlIGRyaXZlcnMgZW5hYmxlIHRoaXMgb3B0aW9uLgorCitlbmRt
ZW51CisKK21lbnVjb25maWcgU0NTSV9MT1dMRVZFTAorCWJvb2wgIlNDU0kgbG93LWxldmVsIGRy
aXZlcnMiCisJZGVwZW5kcyBvbiBTQ1NJIT1uCisJZGVmYXVsdCB5CisKK2lmIFNDU0lfTE9XTEVW
RUwgJiYgU0NTSQorCitjb25maWcgSVNDU0lfVENQCisJdHJpc3RhdGUgImlTQ1NJIEluaXRpYXRv
ciBvdmVyIFRDUC9JUCIKKwlkZXBlbmRzIG9uIFNDU0kgJiYgSU5FVAorCXNlbGVjdCBDUllQVE8K
KwlzZWxlY3QgQ1JZUFRPX01ENQorCXNlbGVjdCBDUllQVE9fQ1JDMzJDCisJc2VsZWN0IFNDU0lf
SVNDU0lfQVRUUlMKKwloZWxwCisJIFRoZSBpU0NTSSBEcml2ZXIgcHJvdmlkZXMgYSBob3N0IHdp
dGggdGhlIGFiaWxpdHkgdG8gYWNjZXNzIHN0b3JhZ2UKKwkgdGhyb3VnaCBhbiBJUCBuZXR3b3Jr
LiBUaGUgZHJpdmVyIHVzZXMgdGhlIGlTQ1NJIHByb3RvY29sIHRvIHRyYW5zcG9ydAorCSBTQ1NJ
IHJlcXVlc3RzIGFuZCByZXNwb25zZXMgb3ZlciBhIFRDUC9JUCBuZXR3b3JrIGJldHdlZW4gdGhl
IGhvc3QKKwkgKHRoZSAiaW5pdGlhdG9yIikgYW5kICJ0YXJnZXRzIi4gIEFyY2hpdGVjdHVyYWxs
eSwgdGhlIGlTQ1NJIGRyaXZlcgorCSBjb21iaW5lcyB3aXRoIHRoZSBob3N0J3MgVENQL0lQIHN0
YWNrLCBuZXR3b3JrIGRyaXZlcnMsIGFuZCBOZXR3b3JrCisJIEludGVyZmFjZSBDYXJkIChOSUMp
IHRvIHByb3ZpZGUgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIGEgU0NTSSBvciBhCisJIEZpYnJlIENo
YW5uZWwgKEZDKSBhZGFwdGVyIGRyaXZlciB3aXRoIGEgSG9zdCBCdXMgQWRhcHRlciAoSEJBKS4K
KworCSBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0
aGUKKwkgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGlzY3NpX3RjcC4KKworCSBUaGUgdXNlcnNwYWNl
IGNvbXBvbmVudCBuZWVkZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZHJpdmVyLCBkb2N1bWVudGF0aW9u
LAorCSBhbmQgc2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgY2FuIGJlIGZvdW5kIGhlcmU6CisK
KwkgaHR0cDovL29wZW4taXNjc2kub3JnCisKK2NvbmZpZyBJU0NTSV9CT09UX1NZU0ZTCisJdHJp
c3RhdGUgImlTQ1NJIEJvb3QgU3lzZnMgSW50ZXJmYWNlIgorCWRlZmF1bHQJbgorCWhlbHAKKwkg
IFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgZXhwb3NpbmcgaVNDU0kgYm9vdCBpbmZv
cm1hdGlvbgorCSAgdmlhIHN5c2ZzIHRvIHVzZXJzcGFjZS4gSWYgeW91IHdpc2ggdG8gZXhwb3J0
IHRoaXMgaW5mb3JtYXRpb24sCisJICBzYXkgWS4gT3RoZXJ3aXNlLCBzYXkgTi4KKworc291cmNl
ICJkcml2ZXJzL3Njc2kvY3hnYmkvS2NvbmZpZyIKK3NvdXJjZSAiZHJpdmVycy9zY3NpL2JueDJp
L0tjb25maWciCitzb3VyY2UgImRyaXZlcnMvc2NzaS9ibngyZmMvS2NvbmZpZyIKK3NvdXJjZSAi
ZHJpdmVycy9zY3NpL2JlMmlzY3NpL0tjb25maWciCisKK2NvbmZpZyBTR0lXRDkzX1NDU0kKKwl0
cmlzdGF0ZSAiU0dJIFdEOTNDOTMgU0NTSSBEcml2ZXIiCisJZGVwZW5kcyBvbiBTR0lfSEFTX1dE
OTMgJiYgU0NTSQorICAJaGVscAorCSAgSWYgeW91IGhhdmUgYSBXZXN0ZXJuIERpZ2l0YWwgV0Q5
MyBTQ1NJIGNvbnRyb2xsZXIgb24KKwkgIGFuIFNHSSBNSVBTIHN5c3RlbSwgc2F5IFkuICBPdGhl
cndpc2UsIHNheSBOLgorCitjb25maWcgQkxLX0RFVl8zV19YWFhYX1JBSUQKKwl0cmlzdGF0ZSAi
M3dhcmUgNS82LzcvOHh4eCBBVEEtUkFJRCBzdXBwb3J0IgorCWRlcGVuZHMgb24gUENJICYmIFND
U0kKKwloZWxwCisJICAzd2FyZSBpcyB0aGUgb25seSBoYXJkd2FyZSBBVEEtUmFpZCBwcm9kdWN0
IGluIExpbnV4IHRvIGRhdGUuCisJICBUaGlzIGNhcmQgaXMgMiw0LCBvciA4IGNoYW5uZWwgbWFz
dGVyIG1vZGUgc3VwcG9ydCBvbmx5LgorCSAgU0NTSSBzdXBwb3J0IHJlcXVpcmVkISEhCisKKwkg
IDxodHRwOi8vd3d3LjN3YXJlLmNvbS8+CisKKwkgIFBsZWFzZSByZWFkIHRoZSBjb21tZW50cyBh
dCB0aGUgdG9wIG9mCisJICA8ZmlsZTpkcml2ZXJzL3Njc2kvM3cteHh4eC5jPi4KKworY29uZmln
IFNDU0lfSFBTQQorCXRyaXN0YXRlICJIUCBTbWFydCBBcnJheSBTQ1NJIGRyaXZlciIKKwlkZXBl
bmRzIG9uIFBDSSAmJiBTQ1NJCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSFAgU21h
cnQgQXJyYXkgQ29udHJvbGxlcnMgKGNpcmNhIDIwMDkpLgorCSAgSXQgaXMgYSBTQ1NJIGFsdGVy
bmF0aXZlIHRvIHRoZSBjY2lzcyBkcml2ZXIsIHdoaWNoIGlzIGEgYmxvY2sKKwkgIGRyaXZlci4g
IEFueW9uZSB3aXNoaW5nIHRvIHVzZSBIUCBTbWFydCBBcnJheSBjb250cm9sbGVycyB3aG8KKwkg
IHdvdWxkIHByZWZlciB0aGUgZGV2aWNlcyBiZSBwcmVzZW50ZWQgdG8gbGludXggYXMgU0NTSSBk
ZXZpY2VzLAorCSAgcmF0aGVyIHRoYW4gYXMgZ2VuZXJpYyBibG9jayBkZXZpY2VzIHNob3VsZCBz
YXkgWSBoZXJlLgorCitjb25maWcgU0NTSV8zV185WFhYCisJdHJpc3RhdGUgIjN3YXJlIDl4eHgg
U0FUQS1SQUlEIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQorCWhlbHAKKwkgIFRo
aXMgZHJpdmVyIHN1cHBvcnRzIHRoZSA5MDAwIHNlcmllcyAzd2FyZSBTQVRBLVJBSUQgY2FyZHMu
CisKKwkgIDxodHRwOi8vd3d3LmFtY2MuY29tPgorCisJICBQbGVhc2UgcmVhZCB0aGUgY29tbWVu
dHMgYXQgdGhlIHRvcCBvZgorCSAgPGZpbGU6ZHJpdmVycy9zY3NpLzN3LTl4eHguYz4uCisKK2Nv
bmZpZyBTQ1NJXzNXX1NBUworCXRyaXN0YXRlICIzd2FyZSA5N3h4IFNBUy9TQVRBLVJBSUQgc3Vw
cG9ydCIKKwlkZXBlbmRzIG9uIFBDSSAmJiBTQ1NJCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3Vw
cG9ydHMgdGhlIExTSSAzd2FyZSA5NzUwIDZHYi9zIFNBUy9TQVRBLVJBSUQgY2FyZHMuCisKKwkg
IDxodHRwOi8vd3d3LmxzaS5jb20+CisKKwkgIFBsZWFzZSByZWFkIHRoZSBjb21tZW50cyBhdCB0
aGUgdG9wIG9mCisJICA8ZmlsZTpkcml2ZXJzL3Njc2kvM3ctc2FzLmM+LgorCitjb25maWcgU0NT
SV83MDAwRkFTU1QKKwl0cmlzdGF0ZSAiNzAwMEZBU1NUIFNDU0kgc3VwcG9ydCIKKwlkZXBlbmRz
IG9uIElTQSAmJiBTQ1NJICYmIElTQV9ETUFfQVBJCisJc2VsZWN0IENIRUNLX1NJR05BVFVSRQor
CWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBXZXN0ZXJuIERpZ2l0YWwgNzAwMCBT
Q1NJIGhvc3QgYWRhcHRlcgorCSAgZmFtaWx5LiAgU29tZSBpbmZvcm1hdGlvbiBpcyBpbiB0aGUg
c291cmNlOgorCSAgPGZpbGU6ZHJpdmVycy9zY3NpL3dkNzAwMC5jPi4KKworCSAgVG8gY29tcGls
ZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUg
d2lsbCBiZSBjYWxsZWQgd2Q3MDAwLgorCitjb25maWcgU0NTSV9BQ0FSRAorCXRyaXN0YXRlICJB
Q0FSRCBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQorCWhlbHAKKwkgIFRo
aXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBBQ0FSRCBTQ1NJIGhvc3QgYWRhcHRlci4KKwkgIFN1cHBv
cnQgQ2hpcCA8QVRQODcwIEFUUDg3NiBBVFA4ODAgQVRQODg1PgorCSAgVG8gY29tcGlsZSB0aGlz
IGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBi
ZSBjYWxsZWQgYXRwODcwdS4KKworY29uZmlnIFNDU0lfQUhBMTUyWAorCXRyaXN0YXRlICJBZGFw
dGVjIEFIQTE1MlgvMjgyNSBzdXBwb3J0IgorCWRlcGVuZHMgb24gSVNBICYmIFNDU0kgJiYgITY0
QklUCisJc2VsZWN0IFNDU0lfU1BJX0FUVFJTCisJc2VsZWN0IENIRUNLX1NJR05BVFVSRQorCS0t
LWhlbHAtLS0KKwkgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBBSEEtMTUxMCwgQUhBLTE1MjAs
IEFIQS0xNTIyLCBhbmQgQUhBLTI4MjUKKwkgIFNDU0kgaG9zdCBhZGFwdGVycy4gSXQgYWxzbyB3
b3JrcyBmb3IgdGhlIEFWQS0xNTA1LCBidXQgdGhlIElSUSBldGMuCisJICBtdXN0IGJlIG1hbnVh
bGx5IHNwZWNpZmllZCBpbiB0aGlzIGNhc2UuCisKKwkgIEl0IGlzIGV4cGxhaW5lZCBpbiBzZWN0
aW9uIDMuMyBvZiB0aGUgU0NTSS1IT1dUTywgYXZhaWxhYmxlIGZyb20KKwkgIDxodHRwOi8vd3d3
LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0bz4uIFlvdSBtaWdodCBhbHNvIHdhbnQgdG8KKwkgIHJl
YWQgdGhlIGZpbGUgPGZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL2FoYTE1MngudHh0Pi4KKworCSAg
VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJ
ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWhhMTUyeC4KKworY29uZmlnIFNDU0lfQUhBMTU0Mgor
CXRyaXN0YXRlICJBZGFwdGVjIEFIQTE1NDIgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIElTQSAmJiBT
Q1NJICYmIElTQV9ETUFfQVBJCisJLS0taGVscC0tLQorCSAgVGhpcyBpcyBzdXBwb3J0IGZvciBh
IFNDU0kgaG9zdCBhZGFwdGVyLiAgSXQgaXMgZXhwbGFpbmVkIGluIHNlY3Rpb24KKwkgIDMuNCBv
ZiB0aGUgU0NTSS1IT1dUTywgYXZhaWxhYmxlIGZyb20KKwkgIDxodHRwOi8vd3d3LnRsZHAub3Jn
L2RvY3MuaHRtbCNob3d0bz4uICBOb3RlIHRoYXQgVHJhbnRvciB3YXMKKwkgIHB1cmNoYXNlZCBi
eSBBZGFwdGVjLCBhbmQgc29tZSBmb3JtZXIgVHJhbnRvciBwcm9kdWN0cyBhcmUgYmVpbmcKKwkg
IHNvbGQgdW5kZXIgdGhlIEFkYXB0ZWMgbmFtZS4gIElmIGl0IGRvZXNuJ3Qgd29yayBvdXQgb2Yg
dGhlIGJveCwgeW91CisJICBtYXkgaGF2ZSB0byBjaGFuZ2Ugc29tZSBzZXR0aW5ncyBpbiA8Zmls
ZTpkcml2ZXJzL3Njc2kvYWhhMTU0Mi5oPi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh
cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQg
YWhhMTU0Mi4KKworY29uZmlnIFNDU0lfQUhBMTc0MAorCXRyaXN0YXRlICJBZGFwdGVjIEFIQTE3
NDAgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIEVJU0EgJiYgU0NTSQorCS0tLWhlbHAtLS0KKwkgIFRo
aXMgaXMgc3VwcG9ydCBmb3IgYSBTQ1NJIGhvc3QgYWRhcHRlci4gIEl0IGlzIGV4cGxhaW5lZCBp
biBzZWN0aW9uCisJICAzLjUgb2YgdGhlIFNDU0ktSE9XVE8sIGF2YWlsYWJsZSBmcm9tCisJICA8
aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LiAgSWYgaXQgZG9lc24ndCB3b3Jr
IG91dAorCSAgb2YgdGhlIGJveCwgeW91IG1heSBoYXZlIHRvIGNoYW5nZSBzb21lIHNldHRpbmdz
IGluCisJICA8ZmlsZTpkcml2ZXJzL3Njc2kvYWhhMTc0MC5oPi4KKworCSAgVG8gY29tcGlsZSB0
aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2ls
bCBiZSBjYWxsZWQgYWhhMTc0MC4KKworY29uZmlnIFNDU0lfQUFDUkFJRAorCXRyaXN0YXRlICJB
ZGFwdGVjIEFBQ1JBSUQgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFNDU0kgJiYgUENJCisJaGVscAor
CSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgYSB2YXJpZXR5IG9mIERlbGwsIEhQLCBBZGFwdGVjLCBJ
Qk0gYW5kCisJICBJQ1Agc3RvcmFnZSBwcm9kdWN0cy4gRm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQg
cHJvZHVjdHMsIHJlZmVyCisJICB0byA8ZmlsZTpEb2N1bWVudGF0aW9uL3Njc2kvYWFjcmFpZC50
eHQ+LgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo
ZXJlOiB0aGUgbW9kdWxlCisJICB3aWxsIGJlIGNhbGxlZCBhYWNyYWlkLgorCisKK3NvdXJjZSAi
ZHJpdmVycy9zY3NpL2FpYzd4eHgvS2NvbmZpZy5haWM3eHh4IgorCitjb25maWcgU0NTSV9BSUM3
WFhYX09MRAorCXRyaXN0YXRlICJBZGFwdGVjIEFJQzd4eHggc3VwcG9ydCAob2xkIGRyaXZlciki
CisJZGVwZW5kcyBvbiAoSVNBIHx8IEVJU0EgfHwgUENJICkgJiYgU0NTSQorCWhlbHAKKwkgIFdB
Uk5JTkcgVGhpcyBkcml2ZXIgaXMgYW4gb2xkZXIgYWljN3h4eCBkcml2ZXIgYW5kIGlzIG5vIGxv
bmdlcgorCSAgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LiAgQWRhcHRlYywgSW5jLiBpcyB3cml0
aW5nIGEgbmV3IGRyaXZlciB0bworCSAgdGFrZSB0aGUgcGxhY2Ugb2YgdGhpcyBvbmUsIGFuZCBp
dCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW5ldmVyCisJICBwb3NzaWJsZSwgcGVvcGxlIHNob3Vs
ZCB1c2UgdGhlIG5ldyBBZGFwdGVjIHdyaXR0ZW4gZHJpdmVyIGluc3RlYWQKKwkgIG9mIHRoaXMg
b25lLiAgVGhpcyBkcml2ZXIgd2lsbCBldmVudHVhbGx5IGJlIHBoYXNlZCBvdXQgZW50aXJlbHku
CisKKwkgIFRoaXMgaXMgc3VwcG9ydCBmb3IgdGhlIHZhcmlvdXMgYWljN3h4eCBiYXNlZCBBZGFw
dGVjIFNDU0kKKwkgIGNvbnRyb2xsZXJzLiBUaGVzZSBpbmNsdWRlIHRoZSAyNzR4IEVJU0EgY2Fy
ZHM7IDI4NHggVkxCIGNhcmRzOworCSAgMjkwMiwgMjkxMCwgMjkzeCwgMjk0eCwgMzk0eCwgMzk4
NSBhbmQgc2V2ZXJhbCBvdGhlciBQQ0kgYW5kCisJICBtb3RoZXJib2FyZCBiYXNlZCBTQ1NJIGNv
bnRyb2xsZXJzIGZyb20gQWRhcHRlYy4gSXQgZG9lcyBub3Qgc3VwcG9ydAorCSAgdGhlIEFBQS0x
M3ggUkFJRCBjb250cm9sbGVycyBmcm9tIEFkYXB0ZWMsIG5vciB3aWxsIGl0IGxpa2VseSBldmVy
CisJICBzdXBwb3J0IHRoZW0uIEl0IGRvZXMgbm90IHN1cHBvcnQgdGhlIDI5MjAgY2FyZHMgZnJv
bSBBZGFwdGVjIHRoYXQKKwkgIHVzZSB0aGUgRnV0dXJlIERvbWFpbiBTQ1NJIGNvbnRyb2xsZXIg
Y2hpcC4gRm9yIHRob3NlIGNhcmRzLCB5b3UKKwkgIG5lZWQgdGhlICJGdXR1cmUgRG9tYWluIDE2
eHggU0NTSSBzdXBwb3J0IiBkcml2ZXIuCisKKwkgIEluIGdlbmVyYWwsIGlmIHRoZSBjb250cm9s
bGVyIGlzIGJhc2VkIG9uIGFuIEFkYXB0ZWMgU0NTSSBjb250cm9sbGVyCisJICBjaGlwIGZyb20g
dGhlIGFpYzc3N3ggc2VyaWVzIG9yIHRoZSBhaWM3OHh4IHNlcmllcywgdGhpcyBkcml2ZXIKKwkg
IHNob3VsZCB3b3JrLiBUaGUgb25seSBleGNlcHRpb24gaXMgdGhlIDc4MTAgd2hpY2ggaXMgc3Bl
Y2lmaWNhbGx5CisJICBub3Qgc3VwcG9ydGVkICh0aGF0J3MgdGhlIFJBSUQgY29udHJvbGxlciBj
aGlwIG9uIHRoZSBBQUEtMTN4CisJICBjYXJkcykuCisKKwkgIE5vdGUgdGhhdCB0aGUgQUhBMjky
MCBTQ1NJIGhvc3QgYWRhcHRlciBpcyAqbm90KiBzdXBwb3J0ZWQgYnkgdGhpcworCSAgZHJpdmVy
OyBjaG9vc2UgIkZ1dHVyZSBEb21haW4gMTZ4eCBTQ1NJIHN1cHBvcnQiIGluc3RlYWQgaWYgeW91
IGhhdmUKKwkgIG9uZSBvZiB0aG9zZS4KKworCSAgSW5mb3JtYXRpb24gb24gdGhlIGNvbmZpZ3Vy
YXRpb24gb3B0aW9ucyBmb3IgdGhpcyBjb250cm9sbGVyIGNhbiBiZQorCSAgZm91bmQgYnkgY2hl
Y2tpbmcgdGhlIGhlbHAgZmlsZSBmb3IgZWFjaCBvZiB0aGUgYXZhaWxhYmxlCisJICBjb25maWd1
cmF0aW9uIG9wdGlvbnMuIFlvdSBzaG91bGQgcmVhZAorCSAgPGZpbGU6RG9jdW1lbnRhdGlvbi9z
Y3NpL2FpYzd4eHhfb2xkLnR4dD4gYXQgYSBtaW5pbXVtIGJlZm9yZQorCSAgY29udGFjdGluZyB0
aGUgbWFpbnRhaW5lciB3aXRoIGFueSBxdWVzdGlvbnMuICBUaGUgU0NTSS1IT1dUTywKKwkgIGF2
YWlsYWJsZSBmcm9tIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0bz4sIGNhbiBh
bHNvCisJICBiZSBvZiBncmVhdCBoZWxwLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFz
IGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBh
aWM3eHh4X29sZC4KKworc291cmNlICJkcml2ZXJzL3Njc2kvYWljN3h4eC9LY29uZmlnLmFpYzc5
eHgiCitzb3VyY2UgImRyaXZlcnMvc2NzaS9haWM5NHh4L0tjb25maWciCitzb3VyY2UgImRyaXZl
cnMvc2NzaS9tdnNhcy9LY29uZmlnIgorCitjb25maWcgU0NTSV9NVlVNSQorCXRyaXN0YXRlICJN
YXJ2ZWxsIFVNSSBkcml2ZXIiCisJZGVwZW5kcyBvbiBTQ1NJICYmIFBDSQorCWhlbHAKKwkgIE1v
ZHVsZSBmb3IgTWFydmVsbCBVbml2ZXJzYWwgTWVzc2FnZSBJbnRlcmZhY2UoVU1JKSBkcml2ZXIK
KworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTog
dGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbXZ1bWkuCisKK2NvbmZpZyBTQ1NJX0RQVF9J
Mk8KKwl0cmlzdGF0ZSAiQWRhcHRlYyBJMk8gUkFJRCBzdXBwb3J0ICIKKwlkZXBlbmRzIG9uIFND
U0kgJiYgUENJICYmIFZJUlRfVE9fQlVTCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMg
YWxsIG9mIEFkYXB0ZWMncyBJMk8gYmFzZWQgUkFJRCBjb250cm9sbGVycyBhcyAKKwkgIHdlbGwg
YXMgdGhlIERQVCBTbWFydFJhaWQgViBjYXJkcy4gIFRoaXMgaXMgYW4gQWRhcHRlYyBtYWludGFp
bmVkCisJICBkcml2ZXIgYnkgRGVhbm5hIEJvbmRzLiAgU2VlIDxmaWxlOkRvY3VtZW50YXRpb24v
c2NzaS9kcHRpLnR4dD4uCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUs
IGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGRwdF9pMm8uCisK
K2NvbmZpZyBTQ1NJX0FEVkFOU1lTCisJdHJpc3RhdGUgIkFkdmFuU3lzIFNDU0kgc3VwcG9ydCIK
KwlkZXBlbmRzIG9uIFNDU0kgJiYgVklSVF9UT19CVVMKKwlkZXBlbmRzIG9uIElTQSB8fCBFSVNB
IHx8IFBDSQorCWhlbHAKKwkgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIGFsbCBTQ1NJIGhvc3QgYWRh
cHRlcnMgbWFudWZhY3R1cmVkIGJ5CisJICBBZHZhblN5cy4gSXQgaXMgZG9jdW1lbnRlZCBpbiB0
aGUga2VybmVsIHNvdXJjZSBpbgorCSAgPGZpbGU6ZHJpdmVycy9zY3NpL2FkdmFuc3lzLmM+Lgor
CisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0
aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhZHZhbnN5cy4KKworY29uZmlnIFNDU0lfSU4y
MDAwCisJdHJpc3RhdGUgIkFsd2F5cyBJTjIwMDAgU0NTSSBzdXBwb3J0IgorCWRlcGVuZHMgb24g
SVNBICYmIFNDU0kKKwloZWxwCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIGFuIElTQSBidXMgU0NT
SSBob3N0IGFkYXB0ZXIuICBZb3UnbGwgZmluZCBtb3JlCisJICBpbmZvcm1hdGlvbiBpbiA8Zmls
ZTpEb2N1bWVudGF0aW9uL3Njc2kvaW4yMDAwLnR4dD4uIElmIGl0IGRvZXNuJ3Qgd29yaworCSAg
b3V0IG9mIHRoZSBib3gsIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2UgdGhlIGp1bXBlcnMgZm9yIElS
USBvcgorCSAgYWRkcmVzcyBzZWxlY3Rpb24uCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIg
YXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVk
IGluMjAwMC4KKworY29uZmlnIFNDU0lfQVJDTVNSCisJdHJpc3RhdGUgIkFSRUNBIChBUkMxMXh4
LzEyeHgvMTN4eC8xNnh4KSBTQVRBL1NBUyBSQUlEIEhvc3QgQWRhcHRlciIKKwlkZXBlbmRzIG9u
IFBDSSAmJiBTQ1NJCisJaGVscAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgYWxsIG9mIEFSRUNB
J3MgU0FUQS9TQVMgUkFJRCBjb250cm9sbGVyIGNhcmRzLgorCSAgVGhpcyBpcyBhbiBBUkVDQS1t
YWludGFpbmVkIGRyaXZlciBieSBFcmljaCBDaGVuLgorCSAgSWYgeW91IGhhdmUgYW55IHByb2Js
ZW1zLCBwbGVhc2UgbWFpbCB0bzogPGVyaWNoQGFyZWNhLmNvbS50dz4uCisJICBBcmVjYSBzdXBw
b3J0cyBMaW51eCBSQUlEIGNvbmZpZyB0b29scy4KKwkgIFBsZWFzZSBsaW5rIDxodHRwOi8vd3d3
LmFyZWNhLmNvbS50dz4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwg
Y2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYXJjbXNyIChtb2Rw
cm9iZSBhcmNtc3IpLgorCitzb3VyY2UgImRyaXZlcnMvc2NzaS9tZWdhcmFpZC9LY29uZmlnLm1l
Z2FyYWlkIgorc291cmNlICJkcml2ZXJzL3Njc2kvbXB0MnNhcy9LY29uZmlnIgorCitjb25maWcg
U0NTSV9IUFRJT1AKKwl0cmlzdGF0ZSAiSGlnaFBvaW50IFJvY2tldFJBSUQgM3h4eC80eHh4IENv
bnRyb2xsZXIgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFNDU0kgJiYgUENJCisJaGVscAorCSAgVGhp
cyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBIaWdoUG9pbnQgUm9ja2V0UkFJRCAzeHh4LzR4
eHgKKwkgIGNvbnRyb2xsZXJzLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9k
dWxlLCBjaG9vc2UgTSBoZXJlOyB0aGUgbW9kdWxlCisJICB3aWxsIGJlIGNhbGxlZCBocHRpb3Au
IElmIHVuc3VyZSwgc2F5IE4uCisKK2NvbmZpZyBTQ1NJX0JVU0xPR0lDCisJdHJpc3RhdGUgIkJ1
c0xvZ2ljIFNDU0kgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIChQQ0kgfHwgSVNBIHx8IE1DQSkgJiYg
U0NTSSAmJiBJU0FfRE1BX0FQSSAmJiBWSVJUX1RPX0JVUworCS0tLWhlbHAtLS0KKwkgIFRoaXMg
aXMgc3VwcG9ydCBmb3IgQnVzTG9naWMgTXVsdGlNYXN0ZXIgYW5kIEZsYXNoUG9pbnQgU0NTSSBI
b3N0CisJICBBZGFwdGVycy4gQ29uc3VsdCB0aGUgU0NTSS1IT1dUTywgYXZhaWxhYmxlIGZyb20K
KwkgIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0bz4sIGFuZCB0aGUgZmlsZXMK
KwkgIDxmaWxlOkRvY3VtZW50YXRpb24vc2NzaS9CdXNMb2dpYy50eHQ+IGFuZAorCSAgPGZpbGU6
RG9jdW1lbnRhdGlvbi9zY3NpL0ZsYXNoUG9pbnQudHh0PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
KwkgIE5vdGUgdGhhdCBzdXBwb3J0IGZvciBGbGFzaFBvaW50IGlzIG9ubHkgYXZhaWxhYmxlIGZv
ciAzMi1iaXQKKwkgIHg4NiBjb25maWd1cmF0aW9ucy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRy
aXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBj
YWxsZWQgQnVzTG9naWMuCisKK2NvbmZpZyBTQ1NJX0ZMQVNIUE9JTlQKKwlib29sICJGbGFzaFBv
aW50IHN1cHBvcnQiCisJZGVwZW5kcyBvbiBTQ1NJX0JVU0xPR0lDICYmIFBDSSAmJiBYODZfMzIK
KwloZWxwCisJICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGFkZCBGbGFzaFBvaW50IHN1cHBv
cnQgdG8gdGhlCisJICBCdXNMb2dpYyBTQ1NJIGRyaXZlci4gVGhlIEZsYXNoUG9pbnQgU0NDQiBN
YW5hZ2VyIGNvZGUgaXMKKwkgIHN1YnN0YW50aWFsLCBzbyB1c2VycyBvZiBNdWx0aU1hc3RlciBI
b3N0IEFkYXB0ZXJzIG1heSBub3QKKwkgIHdpc2ggdG8gaW5jbHVkZSBpdC4KKworY29uZmlnIFZN
V0FSRV9QVlNDU0kKKwl0cmlzdGF0ZSAiVk13YXJlIFBWU0NTSSBkcml2ZXIgc3VwcG9ydCIKKwlk
ZXBlbmRzIG9uIFBDSSAmJiBTQ1NJICYmIFg4NgorCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1cHBv
cnRzIFZNd2FyZSdzIHBhcmEgdmlydHVhbGl6ZWQgU0NTSSBIQkEuCisJICBUbyBjb21waWxlIHRo
aXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxs
IGJlIGNhbGxlZCB2bXdfcHZzY3NpLgorCitjb25maWcgTElCRkMKKwl0cmlzdGF0ZSAiTGliRkMg
bW9kdWxlIgorCXNlbGVjdCBTQ1NJX0ZDX0FUVFJTCisJc2VsZWN0IENSQzMyCisJLS0taGVscC0t
LQorCSAgRmlicmUgQ2hhbm5lbCBsaWJyYXJ5IG1vZHVsZQorCitjb25maWcgTElCRkNPRQorCXRy
aXN0YXRlICJMaWJGQ29FIG1vZHVsZSIKKwlzZWxlY3QgTElCRkMKKwktLS1oZWxwLS0tCisJICBM
aWJyYXJ5IGZvciBGaWJyZSBDaGFubmVsIG92ZXIgRXRoZXJuZXQgbW9kdWxlCisKK2NvbmZpZyBG
Q09FCisJdHJpc3RhdGUgIkZDb0UgbW9kdWxlIgorCWRlcGVuZHMgb24gUENJCisJc2VsZWN0IExJ
QkZDT0UKKwktLS1oZWxwLS0tCisJICBGaWJyZSBDaGFubmVsIG92ZXIgRXRoZXJuZXQgbW9kdWxl
CisKK2NvbmZpZyBGQ09FX0ZOSUMKKwl0cmlzdGF0ZSAiQ2lzY28gRk5JQyBEcml2ZXIiCisJZGVw
ZW5kcyBvbiBQQ0kgJiYgWDg2CisJc2VsZWN0IExJQkZDT0UKKwloZWxwCisJICBUaGlzIGlzIHN1
cHBvcnQgZm9yIHRoZSBDaXNjbyBQQ0ktRXhwcmVzcyBGQ29FIEhCQS4KKworCSAgVG8gY29tcGls
ZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZSBhbmQgcmVhZAorCSAgPGZp
bGU6RG9jdW1lbnRhdGlvbi9zY3NpL3Njc2kudHh0Pi4KKwkgIFRoZSBtb2R1bGUgd2lsbCBiZSBj
YWxsZWQgZm5pYy4KKworY29uZmlnIFNDU0lfRE1YMzE5MUQKKwl0cmlzdGF0ZSAiRE1YMzE5MUQg
U0NTSSBzdXBwb3J0IgorCWRlcGVuZHMgb24gUENJICYmIFNDU0kKKwlzZWxlY3QgU0NTSV9TUElf
QVRUUlMKKwloZWxwCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIERvbWV4IERNWDMxOTFEIFNDU0kg
SG9zdCBBZGFwdGVycy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwg
Y2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZG14MzE5MWQuCisK
K2NvbmZpZyBTQ1NJX0RUQzMyODAKKwl0cmlzdGF0ZSAiRFRDMzE4MC8zMjgwIFNDU0kgc3VwcG9y
dCIKKwlkZXBlbmRzIG9uIElTQSAmJiBTQ1NJCisJc2VsZWN0IFNDU0lfU1BJX0FUVFJTCisJc2Vs
ZWN0IENIRUNLX1NJR05BVFVSRQorCWhlbHAKKwkgIFRoaXMgaXMgc3VwcG9ydCBmb3IgRFRDIDMx
ODAvMzI4MCBTQ1NJIEhvc3QgQWRhcHRlcnMuICBQbGVhc2UgcmVhZAorCSAgdGhlIFNDU0ktSE9X
VE8sIGF2YWlsYWJsZSBmcm9tCisJICA8aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93
dG8+LCBhbmQgdGhlIGZpbGUKKwkgIDxmaWxlOkRvY3VtZW50YXRpb24vc2NzaS9kdGMzeDgwLnR4
dD4uCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhl
cmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGR0Yy4KKworY29uZmlnIFNDU0lfRUFU
QQorCXRyaXN0YXRlICJFQVRBIElTQS9FSVNBL1BDSSAoRFBUIGFuZCBnZW5lcmljIEVBVEEvRE1B
LWNvbXBsaWFudCBib2FyZHMpIHN1cHBvcnQiCisJZGVwZW5kcyBvbiAoSVNBIHx8IEVJU0EgfHwg
UENJKSAmJiBTQ1NJICYmIElTQV9ETUFfQVBJCisJLS0taGVscC0tLQorCSAgVGhpcyBkcml2ZXIg
c3VwcG9ydHMgYWxsIEVBVEEvRE1BLWNvbXBsaWFudCBTQ1NJIGhvc3QgYWRhcHRlcnMuICBEUFQK
KwkgIElTQSBhbmQgYWxsIEVJU0EgSS9PIGFkZHJlc3NlcyBhcmUgcHJvYmVkIGxvb2tpbmcgZm9y
IHRoZSAiRUFUQSIKKwkgIHNpZ25hdHVyZS4gVGhlIGFkZHJlc3NlcyBvZiBhbGwgdGhlIFBDSSBT
Q1NJIGNvbnRyb2xsZXJzIHJlcG9ydGVkCisgICAgICAgICAgYnkgdGhlIFBDSSBzdWJzeXN0ZW0g
YXJlIHByb2JlZCBhcyB3ZWxsLgorCisJICBZb3Ugd2FudCB0byByZWFkIHRoZSBzdGFydCBvZiA8
ZmlsZTpkcml2ZXJzL3Njc2kvZWF0YS5jPiBhbmQgdGhlCisJICBTQ1NJLUhPV1RPLCBhdmFpbGFi
bGUgZnJvbQorCSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvPi4KKworCSAg
VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJ
ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZWF0YS4KKworY29uZmlnIFNDU0lfRUFUQV9UQUdHRURf
UVVFVUUKKwlib29sICJlbmFibGUgdGFnZ2VkIGNvbW1hbmQgcXVldWVpbmciCisJZGVwZW5kcyBv
biBTQ1NJX0VBVEEKKwloZWxwCisJICBUaGlzIGlzIGEgZmVhdHVyZSBvZiBTQ1NJLTIgd2hpY2gg
aW1wcm92ZXMgcGVyZm9ybWFuY2U6IHRoZSBob3N0CisJICBhZGFwdGVyIGNhbiBzZW5kIHNldmVy
YWwgU0NTSSBjb21tYW5kcyB0byBhIGRldmljZSdzIHF1ZXVlIGV2ZW4gaWYKKwkgIHByZXZpb3Vz
IGNvbW1hbmRzIGhhdmVuJ3QgZmluaXNoZWQgeWV0LgorCSAgVGhpcyBpcyBlcXVpdmFsZW50IHRv
IHRoZSAiZWF0YT10Yzp5IiBib290IG9wdGlvbi4KKworY29uZmlnIFNDU0lfRUFUQV9MSU5LRURf
Q09NTUFORFMKKwlib29sICJlbmFibGUgZWxldmF0b3Igc29ydGluZyIKKwlkZXBlbmRzIG9uIFND
U0lfRUFUQQorCWhlbHAKKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgZWxldmF0b3Igc29ydGluZyBm
b3IgYWxsIHByb2JlZCBTQ1NJIGRpc2tzIGFuZAorCSAgQ0QtUk9Ncy4gSXQgZGVmaW5pdGVseSBy
ZWR1Y2VzIHRoZSBhdmVyYWdlIHNlZWsgZGlzdGFuY2Ugd2hlbiBkb2luZworCSAgcmFuZG9tIHNl
ZWtzLCBidXQgdGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSByZXN1bHQgaW4gYSBub3RpY2VhYmxl
CisJICBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudDogeW91ciBtaWxlYWdlIG1heSB2YXJ5Li4uCisJ
ICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlICJlYXRhPWxjOnkiIGJvb3Qgb3B0aW9uLgorCitj
b25maWcgU0NTSV9FQVRBX01BWF9UQUdTCisJaW50ICJtYXhpbXVtIG51bWJlciBvZiBxdWV1ZWQg
Y29tbWFuZHMiCisJZGVwZW5kcyBvbiBTQ1NJX0VBVEEKKwlkZWZhdWx0ICIxNiIKKwloZWxwCisJ
ICBUaGlzIHNwZWNpZmllcyBob3cgbWFueSBTQ1NJIGNvbW1hbmRzIGNhbiBiZSBtYXhpbWFsbHkg
cXVldWVkIGZvcgorCSAgZWFjaCBwcm9iZWQgU0NTSSBkZXZpY2UuIFlvdSBzaG91bGQgcmVkdWNl
IHRoZSBkZWZhdWx0IHZhbHVlIG9mIDE2CisJICBvbmx5IGlmIHlvdSBoYXZlIGRpc2tzIHdpdGgg
YnVnZ3kgb3IgbGltaXRlZCB0YWdnZWQgY29tbWFuZCBzdXBwb3J0LgorCSAgTWluaW11bSBpcyAy
IGFuZCBtYXhpbXVtIGlzIDYyLiBUaGlzIHZhbHVlIGlzIGFsc28gdGhlIHdpbmRvdyBzaXplCisJ
ICB1c2VkIGJ5IHRoZSBlbGV2YXRvciBzb3J0aW5nIG9wdGlvbiBhYm92ZS4gVGhlIGVmZmVjdGl2
ZSB2YWx1ZSB1c2VkCisJICBieSB0aGUgZHJpdmVyIGZvciBlYWNoIHByb2JlZCBTQ1NJIGRldmlj
ZSBpcyByZXBvcnRlZCBhdCBib290IHRpbWUuCisJICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhl
ICJlYXRhPW1xOjgiIGJvb3Qgb3B0aW9uLgorCitjb25maWcgU0NTSV9FQVRBX1BJTworCXRyaXN0
YXRlICJFQVRBLVBJTyAob2xkIERQVCBQTTIwMDEsIFBNMjAxMkEpIHN1cHBvcnQiCisJZGVwZW5k
cyBvbiAoSVNBIHx8IEVJU0EgfHwgUENJKSAmJiBTQ1NJICYmIEJST0tFTgorCS0tLWhlbHAtLS0K
KwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGFsbCBFQVRBLVBJTyBwcm90b2NvbCBjb21wbGlhbnQg
U0NTSSBIb3N0CisJICBBZGFwdGVycyBsaWtlIHRoZSBEUFQgUE0yMDAxIGFuZCB0aGUgUE0yMDEy
QS4gIEVBVEEtRE1BIGNvbXBsaWFudAorCSAgaG9zdCBhZGFwdGVycyBjb3VsZCBhbHNvIHVzZSB0
aGlzIGRyaXZlciBidXQgYXJlIGRpc2NvdXJhZ2VkIGZyb20KKwkgIGRvaW5nIHNvLCBzaW5jZSB0
aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIGhhcmQgZGlza3MgYW5kIGxhY2tzCisJICBudW1lcm91
cyBmZWF0dXJlcy4gIFlvdSBtaWdodCB3YW50IHRvIGhhdmUgYSBsb29rIGF0IHRoZSBTQ1NJLUhP
V1RPLAorCSAgYXZhaWxhYmxlIGZyb20gPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hv
d3RvPi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0g
aGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZWF0YV9waW8uCisKK2NvbmZpZyBT
Q1NJX0ZVVFVSRV9ET01BSU4KKwl0cmlzdGF0ZSAiRnV0dXJlIERvbWFpbiAxNnh4IFNDU0kvQUhB
LTI5MjBBIHN1cHBvcnQiCisJZGVwZW5kcyBvbiAoSVNBIHx8IFBDSSkgJiYgU0NTSQorCXNlbGVj
dCBDSEVDS19TSUdOQVRVUkUKKwktLS1oZWxwLS0tCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIEZ1
dHVyZSBEb21haW4ncyAxNi1iaXQgU0NTSSBob3N0IGFkYXB0ZXJzCisJICAoVE1DLTE2NjAvMTY4
MCwgVE1DLTE2NTAvMTY3MCwgVE1DLTMyNjAsIFRNQy0xNjEwTS9NRVIvTUVYKSBhbmQKKwkgIG90
aGVyIGFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBGdXR1cmUgRG9tYWluIGNoaXBzZXRzIChRdWFudHVt
CisJICBJU0EtMjAwUywgSVNBLTI1ME1HOyBBZGFwdGVjIEFIQS0yOTIwQTsgYW5kIGF0IGxlYXN0
IG9uZSBJQk0gYm9hcmQpLgorCSAgSXQgaXMgZXhwbGFpbmVkIGluIHNlY3Rpb24gMy43IG9mIHRo
ZSBTQ1NJLUhPV1RPLCBhdmFpbGFibGUgZnJvbQorCSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9j
cy5odG1sI2hvd3RvPi4KKworCSAgTk9URTogTmV3ZXIgQWRhcHRlYyBBSEEtMjkyMEMgYm9hcmRz
IHVzZSB0aGUgQWRhcHRlYyBBSUMtNzg1MCBjaGlwCisJICBhbmQgc2hvdWxkIHVzZSB0aGUgYWlj
N3h4eCBkcml2ZXIgKCJBZGFwdGVjIEFJQzd4eHggY2hpcHNldCBTQ1NJCisJICBjb250cm9sbGVy
IHN1cHBvcnQiKS4gVGhpcyBGdXR1cmUgRG9tYWluIGRyaXZlciB3b3JrcyB3aXRoIHRoZSBvbGRl
cgorCSAgQWRhcHRlYyBBSEEtMjkyMEEgYm9hcmRzIHdpdGggYSBGdXR1cmUgRG9tYWluIGNoaXAg
b24gdGhlbS4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3Nl
IE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZmRvbWFpbi4KKworY29uZmln
IFNDU0lfRkRfTUNTCisJdHJpc3RhdGUgIkZ1dHVyZSBEb21haW4gTUNTLTYwMC83MDAgU0NTSSBz
dXBwb3J0IgorCWRlcGVuZHMgb24gTUNBX0xFR0FDWSAmJiBTQ1NJCisJLS0taGVscC0tLQorCSAg
VGhpcyBpcyBzdXBwb3J0IGZvciBGdXR1cmUgRG9tYWluIE1DUyA2MDAvNzAwIE1DQSBTQ1NJIGFk
YXB0ZXJzLgorCSAgU29tZSBQUy8yIGNvbXB1dGVycyBhcmUgZXF1aXBwZWQgd2l0aCBJQk0gRmFz
dCBTQ1NJIEFkYXB0ZXIvQSB3aGljaAorCSAgaXMgaWRlbnRpY2FsIHRvIHRoZSBNQ1MgNzAwIGFu
ZCBoZW5jZSBhbHNvIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci4KKwkgIFRoaXMgZHJpdmVyIGFs
c28gc3VwcG9ydHMgdGhlIFJlcGx5IFNCMTYvU0NTSSBjYXJkICh0aGUgU0NTSSBwYXJ0KS4KKwkg
IEl0IHN1cHBvcnRzIG11bHRpcGxlIGFkYXB0ZXJzIGluIHRoZSBzYW1lIHN5c3RlbS4KKworCSAg
VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJ
ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZmRfbWNzLgorCitjb25maWcgU0NTSV9HRFRICisJdHJp
c3RhdGUgIkludGVsL0lDUCAoZm9ybWVyIEdEVCBTQ1NJIERpc2sgQXJyYXkpIFJBSUQgQ29udHJv
bGxlciBzdXBwb3J0IgorCWRlcGVuZHMgb24gKElTQSB8fCBFSVNBIHx8IFBDSSkgJiYgU0NTSSAm
JiBJU0FfRE1BX0FQSQorCS0tLWhlbHAtLS0KKwkgIEZvcm1lcmx5IGNhbGxlZCBHRFQgU0NTSSBE
aXNrIEFycmF5IENvbnRyb2xsZXIgU3VwcG9ydC4KKworCSAgVGhpcyBpcyBhIGRyaXZlciBmb3Ig
UkFJRC9TQ1NJIERpc2sgQXJyYXkgQ29udHJvbGxlcnMgKEVJU0EvSVNBL1BDSSkgCisJICBtYW51
ZmFjdHVyZWQgYnkgSW50ZWwgQ29ycG9yYXRpb24vSUNQIHZvcnRleCBHbWJILiBJdCBpcyBkb2N1
bWVudGVkCisJICBpbiB0aGUga2VybmVsIHNvdXJjZSBpbiA8ZmlsZTpkcml2ZXJzL3Njc2kvZ2R0
aC5jPiBhbmQKKwkgIDxmaWxlOmRyaXZlcnMvc2NzaS9nZHRoLmg+LgorCisJICBUbyBjb21waWxl
IHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3
aWxsIGJlIGNhbGxlZCBnZHRoLgorCitjb25maWcgU0NTSV9JU0NJCisJdHJpc3RhdGUgIkludGVs
KFIpIEM2MDAgU2VyaWVzIENoaXBzZXQgU0FTIENvbnRyb2xsZXIiCisJZGVwZW5kcyBvbiBQQ0kg
JiYgU0NTSQorCWRlcGVuZHMgb24gWDg2CisJc2VsZWN0IFNDU0lfU0FTX0xJQlNBUworCS0tLWhl
bHAtLS0KKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSA2R2IvcyBTQVMgY2FwYWJpbGl0aWVz
IG9mIHRoZSBzdG9yYWdlCisJICBjb250cm9sIHVuaXQgZm91bmQgaW4gdGhlIEludGVsKFIpIEM2
MDAgc2VyaWVzIGNoaXBzZXQuCisKK2NvbmZpZyBTQ1NJX0dFTkVSSUNfTkNSNTM4MAorCXRyaXN0
YXRlICJHZW5lcmljIE5DUjUzODAvNTNjNDAwIFNDU0kgUElPIHN1cHBvcnQiCisJZGVwZW5kcyBv
biBJU0EgJiYgU0NTSQorCXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCS0tLWhlbHAtLS0KKwkgIFRo
aXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBvbGQgTkNSIDUzYzgwIHNlcmllcyBvZiBTQ1NJIGNvbnRy
b2xsZXJzCisJICBvbiBib2FyZHMgdXNpbmcgUElPLiBNb3N0IGJvYXJkcyBzdWNoIGFzIHRoZSBU
cmFudG9yIFQxMzAgZml0IHRoaXMKKwkgIGNhdGVnb3J5LCBhbG9uZyB3aXRoIGEgbGFyZ2UgbnVt
YmVyIG9mIElTQSA4Yml0IGNvbnRyb2xsZXJzIHNoaXBwZWQKKwkgIGZvciBmcmVlIHdpdGggU0NT
SSBzY2FubmVycy4gSWYgeW91IGhhdmUgYSBQQVMxNiwgVDEyOCBvciBETVgzMTkxCisJICB5b3Ug
c2hvdWxkIHNlbGVjdCB0aGUgc3BlY2lmaWMgZHJpdmVyIGZvciB0aGF0IGNhcmQgcmF0aGVyIHRo
YW4KKwkgIGdlbmVyaWMgNTM4MCBzdXBwb3J0LgorCisJICBJdCBpcyBleHBsYWluZWQgaW4gc2Vj
dGlvbiAzLjggb2YgdGhlIFNDU0ktSE9XVE8sIGF2YWlsYWJsZSBmcm9tCisJICA8aHR0cDovL3d3
dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LiAgSWYgaXQgZG9lc24ndCB3b3JrIG91dAorCSAg
b2YgdGhlIGJveCwgeW91IG1heSBoYXZlIHRvIGNoYW5nZSBzb21lIHNldHRpbmdzIGluCisJICA8
ZmlsZTpkcml2ZXJzL3Njc2kvZ19OQ1I1MzgwLmg+LgorCisJICBUbyBjb21waWxlIHRoaXMgZHJp
dmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNh
bGxlZCBnX05DUjUzODAuCisKK2NvbmZpZyBTQ1NJX0dFTkVSSUNfTkNSNTM4MF9NTUlPCisJdHJp
c3RhdGUgIkdlbmVyaWMgTkNSNTM4MC81M2M0MDAgU0NTSSBNTUlPIHN1cHBvcnQiCisJZGVwZW5k
cyBvbiBJU0EgJiYgU0NTSQorCXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCS0tLWhlbHAtLS0KKwkg
IFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBvbGQgTkNSIDUzYzgwIHNlcmllcyBvZiBTQ1NJIGNv
bnRyb2xsZXJzCisJICBvbiBib2FyZHMgdXNpbmcgbWVtb3J5IG1hcHBlZCBJL08uIAorCSAgSXQg
aXMgZXhwbGFpbmVkIGluIHNlY3Rpb24gMy44IG9mIHRoZSBTQ1NJLUhPV1RPLCBhdmFpbGFibGUg
ZnJvbQorCSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvPi4gIElmIGl0IGRv
ZXNuJ3Qgd29yayBvdXQKKwkgIG9mIHRoZSBib3gsIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2Ugc29t
ZSBzZXR0aW5ncyBpbgorCSAgPGZpbGU6ZHJpdmVycy9zY3NpL2dfTkNSNTM4MC5oPi4KKworCSAg
VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJ
ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ19OQ1I1MzgwX21taW8uCisKK2NvbmZpZyBTQ1NJX0dF
TkVSSUNfTkNSNTNDNDAwCisJYm9vbCAiRW5hYmxlIE5DUjUzYzQwMCBleHRlbnNpb25zIgorCWRl
cGVuZHMgb24gU0NTSV9HRU5FUklDX05DUjUzODAKKwloZWxwCisJICBUaGlzIGVuYWJsZXMgY2Vy
dGFpbiBvcHRpbWl6YXRpb25zIGZvciB0aGUgTkNSNTNjNDAwIFNDU0kgY2FyZHMuCisJICBZb3Ug
bWlnaHQgYXMgd2VsbCB0cnkgaXQgb3V0LiAgTm90ZSB0aGF0IHRoaXMgZHJpdmVyIHdpbGwgb25s
eSBwcm9iZQorCSAgZm9yIHRoZSBUcmFudG9yIFQxMzBCIGluIGl0cyBkZWZhdWx0IGNvbmZpZ3Vy
YXRpb247IHlvdSBtaWdodCBoYXZlCisJICB0byBwYXNzIGEgY29tbWFuZCBsaW5lIG9wdGlvbiB0
byB0aGUga2VybmVsIGF0IGJvb3QgdGltZSBpZiBpdCBkb2VzCisJICBub3QgZGV0ZWN0IHlvdXIg
Y2FyZC4gIFNlZSB0aGUgZmlsZQorCSAgPGZpbGU6RG9jdW1lbnRhdGlvbi9zY3NpL2dfTkNSNTM4
MC50eHQ+IGZvciBkZXRhaWxzLgorCitjb25maWcgU0NTSV9JQk1NQ0EKKwl0cmlzdGF0ZSAiSUJN
TUNBIFNDU0kgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIE1DQSAmJiBTQ1NJCisJLS0taGVscC0tLQor
CSAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgSUJNIFNDU0kgYWRhcHRlciBmb3VuZCBpbiBtYW55
IG9mIHRoZSBQUy8yCisJICBzZXJpZXMgY29tcHV0ZXJzLiAgVGhlc2UgbWFjaGluZXMgaGF2ZSBh
biBNQ0EgYnVzLCBzbyB5b3UgbmVlZCB0bworCSAgYW5zd2VyIFkgdG8gIk1DQSBzdXBwb3J0IiBh
cyB3ZWxsIGFuZCByZWFkCisJICA8ZmlsZTpEb2N1bWVudGF0aW9uL21jYS50eHQ+LgorCisJICBJ
ZiB0aGUgYWRhcHRlciBpc24ndCBmb3VuZCBkdXJpbmcgYm9vdCAoYSBjb21tb24gcHJvYmxlbSBm
b3IgbW9kZWxzCisJICA1NiwgNTcsIDc2LCBhbmQgNzcpIHlvdSdsbCBuZWVkIHRvIHVzZSB0aGUg
J2libW1jYXNjc2k9PHB1bj4nIGtlcm5lbAorCSAgb3B0aW9uLCB3aGVyZSA8cHVuPiBpcyB0aGUg
aWQgb2YgdGhlIFNDU0kgc3Vic3lzdGVtICh1c3VhbGx5IDcsIGJ1dAorCSAgaWYgdGhhdCBkb2Vz
bid0IHdvcmsgY2hlY2sgeW91ciByZWZlcmVuY2UgZGlza2V0dGUpLiAgT3duZXJzIG9mCisJICBt
b2RlbCA5NSB3aXRoIGEgTEVELW1hdHJpeC1kaXNwbGF5IGNhbiBpbiBhZGRpdGlvbiBhY3RpdmF0
ZSBzb21lCisJICBhY3Rpdml0eSBpbmZvIGxpa2UgdW5kZXIgT1MvMiwgYnV0IG1vcmUgaW5mb3Jt
YXRpdmUsIGJ5IHNldHRpbmcKKwkgICdpYm1tY2FzY3NpPWRpc3BsYXknIGFzIGFuIGFkZGl0aW9u
YWwga2VybmVsIHBhcmFtZXRlci4gIFRyeSAibWFuCisJICBib290cGFyYW0iIG9yIHNlZSB0aGUg
ZG9jdW1lbnRhdGlvbiBvZiB5b3VyIGJvb3QgbG9hZGVyIGFib3V0IGhvdyB0bworCSAgcGFzcyBv
cHRpb25zIHRvIHRoZSBrZXJuZWwuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBt
b2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGlibW1j
YS4KKworY29uZmlnIElCTU1DQV9TQ1NJX09SREVSX1NUQU5EQVJECisJYm9vbCAiU3RhbmRhcmQg
U0NTSS1vcmRlciIKKwlkZXBlbmRzIG9uIFNDU0lfSUJNTUNBCisJLS0taGVscC0tLQorCSAgSW4g
dGhlIFBDLXdvcmxkIGFuZCBpbiBtb3N0IG1vZGVybiBTQ1NJLUJJT1Mtc2V0dXBzLCBTQ1NJLWhh
cmQgZGlza3MKKwkgIGFyZSBhc3NpZ25lZCB0byB0aGUgZHJpdmUgbGV0dGVycywgc3RhcnRpbmcg
d2l0aCB0aGUgbG93ZXN0IFNDU0ktaWQKKwkgIChwaHlzaWNhbCBudW1iZXIgLS0gcHVuKSB0byBi
ZSBkcml2ZSBDOiwgYXMgc2VlbiBmcm9tIERPUyBhbmQKKwkgIHNpbWlsYXIgb3BlcmF0aW5nIHN5
c3RlbXMuIFdoZW4gbG9va2luZyBpbnRvIHBhcGVycyBkZXNjcmliaW5nIHRoZQorCSAgQU5TSS1T
Q1NJLXN0YW5kYXJkLCB0aGlzIGFzc2lnbm1lbnQgb2YgZHJpdmVzIGFwcGVhcnMgdG8gYmUgd3Jv
bmcuCisJICBUaGUgU0NTSS1zdGFuZGFyZCBmb2xsb3dzIGEgaGFyZHdhcmUtaGllcmFyY2h5IHdo
aWNoIHNheXMgdGhhdCBpZCA3CisJICBoYXMgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgYW5kIGlkIDAg
dGhlIGxvd2VzdC4gVGhlcmVmb3JlLCB0aGUgaG9zdAorCSAgYWRhcHRlcnMgYXJlIHN0aWxsIHRv
ZGF5IGV2ZXJ5d2hlcmUgcGxhY2VkIGFzIFNDU0ktaWQgNyBieSBkZWZhdWx0LgorCSAgSW4gdGhl
IFNDU0ktc3RhbmRhcmQsIHRoZSBkcml2ZSBsZXR0ZXJzIGV4cHJlc3MgdGhlIHByaW9yaXR5IG9m
IHRoZQorCSAgZGlzay4gQzogc2hvdWxkIGJlIHRoZSBoYXJkIGRpc2ssIG9yIGEgcGFydGl0aW9u
IG9uIGl0LCB3aXRoIHRoZQorCSAgaGlnaGVzdCBwcmlvcml0eS4gVGhpcyBtdXN0IHRoZXJlZm9y
ZSBiZSB0aGUgZGlzayB3aXRoIHRoZSBoaWdoZXN0CisJICBTQ1NJLWlkIChlLmcuIDYpIGFuZCBu
b3QgdGhlIG9uZSB3aXRoIHRoZSBsb3dlc3QhIElCTS1CSU9TIGtlcHQgdGhlCisJICBvcmlnaW5h
bCBkZWZpbml0aW9uIG9mIHRoZSBTQ1NJLXN0YW5kYXJkIGFzIGFsc28gaW5kdXN0cmlhbC0gYW5k
CisJICBwcm9jZXNzLWNvbnRyb2wtbWFjaGluZXMsIGxpa2UgVk1FLUNQVXMgcnVubmluZyB1bmRl
ciByZWFsdGltZS1PU2VzCisJICAoZS5nLiBMeW54T1MsIE9TOSkgZG8uCisKKwkgIElmIHlvdSBs
aWtlIHRvIHJ1biBMaW51eCBvbiB5b3VyIE1DQS1tYWNoaW5lIHdpdGggdGhlIHNhbWUKKwkgIGFz
c2lnbm1lbnQgb2YgaGFyZCBkaXNrcyBhcyBzZWVuIGZyb20gZS5nLiBET1Mgb3IgT1MvMiBvbiB5
b3VyCisJICBtYWNoaW5lLCB3aGljaCBpcyBpbiBhZGRpdGlvbiBjb25mb3JtYW50IHRvIHRoZSBT
Q1NJLXN0YW5kYXJkLCB5b3UKKwkgIG11c3Qgc2F5IFkgaGVyZS4gVGhpcyBpcyBhbHNvIG5lY2Vz
c2FyeSBmb3IgTUNBLUxpbnV4IHVzZXJzIHdobyB3YW50CisJICB0byBrZWVwIGRvd253YXJkIGNv
bXBhdGliaWxpdHkgdG8gb2xkZXIgcmVsZWFzZXMgb2YgdGhlCisJICBJQk0tTUNBLVNDU0ktZHJp
dmVyIChvbGRlciB0aGFuIGRyaXZlci1yZWxlYXNlIDIuMDAgYW5kIG9sZGVyIHRoYW4KKwkgIEp1
bmUgMTk5NykuCisKKwkgIElmIHlvdSBsaWtlIHRvIGhhdmUgdGhlIGxvd2VzdCBTQ1NJLWlkIGFz
c2lnbmVkIGFzIGRyaXZlIEM6LCBhcworCSAgbW9kZXJuIFNDU0ktQklPU2VzIGRvLCB3aGljaCBk
b2VzIG5vdCBjb25mb3JtIHRvIHRoZSBzdGFuZGFyZCwgYnV0CisJICBpcyB3aWRlc3ByZWFkIGFu
ZCBjb21tb24gaW4gdGhlIFBDLXdvcmxkIG9mIHRvZGF5LCB5b3UgbXVzdCBzYXkgTgorCSAgaGVy
ZS4gSWYgdW5zdXJlLCBzYXkgWS4KKworY29uZmlnIElCTU1DQV9TQ1NJX0RFVl9SRVNFVAorCWJv
b2wgIlJlc2V0IFNDU0ktZGV2aWNlcyBhdCBib290dGltZSIKKwlkZXBlbmRzIG9uIFNDU0lfSUJN
TUNBCisJLS0taGVscC0tLQorCSAgQnkgZGVmYXVsdCwgU0NTSS1kZXZpY2VzIGFyZSByZXNldCB3
aGVuIHRoZSBtYWNoaW5lIGlzIHBvd2VyZWQgb24uCisJICBIb3dldmVyLCBzb21lIGRldmljZXMg
ZXhpc3QsIGxpa2Ugc3BlY2lhbC1jb250cm9sLWRldmljZXMsCisJICBTQ1NJLUNOQy1tYWNoaW5l
cywgU0NTSS1wcmludGVyIG9yIHNjYW5uZXJzIG9mIG9sZGVyIHR5cGUsIHRoYXQgZG8KKwkgIG5v
dCByZXNldCB3aGVuIHN3aXRjaGVkIG9uLiBJZiB5b3Ugc2F5IFkgaGVyZSwgZWFjaCBkZXZpY2Ug
Y29ubmVjdGVkCisJICB0byB5b3VyIFNDU0ktYnVzIHdpbGwgYmUgaXNzdWVkIGEgcmVzZXQtY29t
bWFuZCBhZnRlciBpdCBoYXMgYmVlbgorCSAgcHJvYmVkLCB3aGlsZSB0aGUga2VybmVsIGlzIGJv
b3RpbmcuIFRoaXMgbWF5IGNhdXNlIHByb2JsZW1zIHdpdGgKKwkgIG1vcmUgbW9kZXJuIGRldmlj
ZXMsIGxpa2UgaGFyZCBkaXNrcywgd2hpY2ggZG8gbm90IGFwcHJlY2lhdGUgdGhlc2UKKwkgIHJl
c2V0IGNvbW1hbmRzLCBhbmQgY2FuIGNhdXNlIHlvdXIgc3lzdGVtIHRvIGhhbmcuIFNvIHNheSBZ
IG9ubHkgaWYKKwkgIHlvdSBrbm93IHRoYXQgb25lIG9mIHlvdXIgb2xkZXIgZGV2aWNlcyBuZWVk
cyBpdDsgTiBpcyB0aGUgc2FmZQorCSAgYW5zd2VyLgorCitjb25maWcgU0NTSV9JUFMKKwl0cmlz
dGF0ZSAiSUJNIFNlcnZlUkFJRCBzdXBwb3J0IgorCWRlcGVuZHMgb24gUENJICYmIFNDU0kKKwkt
LS1oZWxwLS0tCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRoZSBJQk0gU2VydmVSQUlEIGhhcmR3
YXJlIFJBSUQgY29udHJvbGxlcnMuCisJICBTZWUgPGh0dHA6Ly93d3cuZGV2ZWxvcGVyLmlibS5j
b20vd2VsY29tZS9uZXRmaW5pdHkvc2VydmVyYWlkLmh0bWw+CisJICBhbmQgPGh0dHA6Ly93d3ct
OTQ3LmlibS5jb20vc3VwcG9ydC9lbnRyeS9wb3J0YWwvZG9jZGlzcGxheT9icmFuZD01MDAwMDA4
JmxuZG9jaWQ9U0VSVi1SQUlEPgorCSAgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBJZiB0aGlzIGRy
aXZlciBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseQorCSAgd2l0aG91dCBtb2RpZmljYXRpb24gcGxl
YXNlIGNvbnRhY3QgdGhlIGF1dGhvciBieSBlbWFpbCBhdAorCSAgPGlwc2xpbnV4QGFkYXB0ZWMu
Y29tPi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0g
aGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaXBzLgorCitjb25maWcgU0NTSV9J
Qk1WU0NTSQorCXRyaXN0YXRlICJJQk0gVmlydHVhbCBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBv
biBQUENfUFNFUklFUyB8fCBQUENfSVNFUklFUworCXNlbGVjdCBTQ1NJX1NSUF9BVFRSUworCXNl
bGVjdCBWSU9QQVRIIGlmIFBQQ19JU0VSSUVTCisJaGVscAorCSAgVGhpcyBpcyB0aGUgSUJNIFBP
V0VSIFZpcnR1YWwgU0NTSSBDbGllbnQKKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBh
IG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaWJt
dnNjc2ljLgorCitjb25maWcgU0NTSV9JQk1WU0NTSVMKKwl0cmlzdGF0ZSAiSUJNIFZpcnR1YWwg
U0NTSSBTZXJ2ZXIgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFBQQ19QU0VSSUVTICYmIFNDU0lfU1JQ
ICYmIFNDU0lfU1JQX1RHVF9BVFRSUworCWhlbHAKKwkgIFRoaXMgaXMgdGhlIFNSUCB0YXJnZXQg
ZHJpdmVyIGZvciBJQk0gcFNlcmllcyB2aXJ0dWFsIGVudmlyb25tZW50cy4KKworCSAgVGhlIHVz
ZXJzcGFjZSBjb21wb25lbnQgbmVlZGVkIHRvIGluaXRpYWxpemUgdGhlIGRyaXZlciBhbmQKKwkg
IGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kOgorCisJICBodHRwOi8vc3RndC5iZXJsaW9zLmRl
LworCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJl
OiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpYm12c3RndC4KKworY29uZmlnIFNDU0lf
SUJNVkZDCisJdHJpc3RhdGUgIklCTSBWaXJ0dWFsIEZDIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQ
UENfUFNFUklFUyAmJiBTQ1NJCisJc2VsZWN0IFNDU0lfRkNfQVRUUlMKKwloZWxwCisJICBUaGlz
IGlzIHRoZSBJQk0gUE9XRVIgVmlydHVhbCBGQyBDbGllbnQKKworCSAgVG8gY29tcGlsZSB0aGlz
IGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBi
ZSBjYWxsZWQgaWJtdmZjLgorCitjb25maWcgU0NTSV9JQk1WRkNfVFJBQ0UKKwlib29sICJlbmFi
bGUgZHJpdmVyIGludGVybmFsIHRyYWNlIgorCWRlcGVuZHMgb24gU0NTSV9JQk1WRkMKKwlkZWZh
dWx0IHkKKwloZWxwCisJICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlIGRyaXZlciB3aWxsIHRyYWNl
IGFsbCBjb21tYW5kcyBpc3N1ZWQKKwkgIHRvIHRoZSBhZGFwdGVyLiBQZXJmb3JtYW5jZSBpbXBh
Y3QgaXMgbWluaW1hbC4gVHJhY2UgY2FuIGJlCisJICBkdW1wZWQgdXNpbmcgL3N5cy9jbGFzcy9z
Y3NpX2hvc3QvaG9zdFhYL3RyYWNlLgorCitjb25maWcgU0NTSV9JTklUSU8KKwl0cmlzdGF0ZSAi
SW5pdGlvIDkxMDBVKFcpIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQorCWhlbHAK
KwkgIFRoaXMgaXMgc3VwcG9ydCBmb3IgdGhlIEluaXRpbyA5MVhYVShXKSBTQ1NJIGhvc3QgYWRh
cHRlci4gIFBsZWFzZQorCSAgcmVhZCB0aGUgU0NTSS1IT1dUTywgYXZhaWxhYmxlIGZyb20KKwkg
IDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0bz4uCisKKwkgIFRvIGNvbXBpbGUg
dGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdp
bGwgYmUgY2FsbGVkIGluaXRpby4KKworY29uZmlnIFNDU0lfSU5JQTEwMAorCXRyaXN0YXRlICJJ
bml0aW8gSU5JLUExMDBVMlcgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFBDSSAmJiBTQ1NJCisJaGVs
cAorCSAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgSW5pdGlvIElOSS1BMTAwVTJXIFNDU0kgaG9z
dCBhZGFwdGVyLgorCSAgUGxlYXNlIHJlYWQgdGhlIFNDU0ktSE9XVE8sIGF2YWlsYWJsZSBmcm9t
CisJICA8aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LgorCisJICBUbyBjb21w
aWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVs
ZSB3aWxsIGJlIGNhbGxlZCBhMTAwdTJ3LgorCitjb25maWcgU0NTSV9QUEEKKwl0cmlzdGF0ZSAi
SU9NRUdBIHBhcmFsbGVsIHBvcnQgKHBwYSAtIG9sZGVyIGRyaXZlcykiCisJZGVwZW5kcyBvbiBT
Q1NJICYmIFBBUlBPUlRfUEMKKwktLS1oZWxwLS0tCisJICBUaGlzIGRyaXZlciBzdXBwb3J0cyBv
bGRlciB2ZXJzaW9ucyBvZiBJT01FR0EncyBwYXJhbGxlbCBwb3J0IFpJUAorCSAgZHJpdmUgKGEg
MTAwIE1CIHJlbW92YWJsZSBtZWRpYSBkZXZpY2UpLgorCisJICBOb3RlIHRoYXQgeW91IGNhbiBz
YXkgTiBoZXJlIGlmIHlvdSBoYXZlIHRoZSBTQ1NJIHZlcnNpb24gb2YgdGhlIFpJUAorCSAgZHJp
dmU6IGl0IHdpbGwgYmUgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkgaWYgeW91IHNhaWQgWSB0byB0
aGUKKwkgIGdlbmVyaWMgIlNDU0kgZGlzayBzdXBwb3J0IiwgYWJvdmUuCisKKwkgIElmIHlvdSBo
YXZlIHRoZSBaSVAgUGx1cyBkcml2ZSBvciBhIG1vcmUgcmVjZW50IHBhcmFsbGVsIHBvcnQgWklQ
CisJICBkcml2ZSAoaWYgdGhlIHN1cHBsaWVkIGNhYmxlIHdpdGggdGhlIGRyaXZlIGlzIGxhYmVs
ZWQgIkF1dG9EZXRlY3QiKQorCSAgdGhlbiB5b3Ugc2hvdWxkIHNheSBOIGhlcmUgYW5kIFkgdG8g
IklPTUVHQSBwYXJhbGxlbCBwb3J0IChpbW0gLQorCSAgbmV3ZXIgZHJpdmVzKSIsIGJlbG93Lgor
CisJICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGRyaXZlciBhbmQgaG93IHRvIHVz
ZSBpdCB5b3Ugc2hvdWxkCisJICByZWFkIHRoZSBmaWxlIDxmaWxlOkRvY3VtZW50YXRpb24vc2Nz
aS9wcGEudHh0Pi4gIFlvdSBzaG91bGQgYWxzbyByZWFkCisJICB0aGUgU0NTSS1IT1dUTywgd2hp
Y2ggaXMgYXZhaWxhYmxlIGZyb20KKwkgIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNo
b3d0bz4uICBJZiB5b3UgdXNlIHRoaXMgZHJpdmVyLAorCSAgeW91IHdpbGwgc3RpbGwgYmUgYWJs
ZSB0byB1c2UgdGhlIHBhcmFsbGVsIHBvcnQgZm9yIG90aGVyIHRhc2tzLAorCSAgc3VjaCBhcyBh
IHByaW50ZXI7IGl0IGlzIHNhZmUgdG8gY29tcGlsZSBib3RoIGRyaXZlcnMgaW50byB0aGUKKwkg
IGtlcm5lbC4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3Nl
IE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcHBhLgorCitjb25maWcgU0NT
SV9JTU0KKwl0cmlzdGF0ZSAiSU9NRUdBIHBhcmFsbGVsIHBvcnQgKGltbSAtIG5ld2VyIGRyaXZl
cykiCisJZGVwZW5kcyBvbiBTQ1NJICYmIFBBUlBPUlRfUEMKKwktLS1oZWxwLS0tCisJICBUaGlz
IGRyaXZlciBzdXBwb3J0cyBuZXdlciB2ZXJzaW9ucyBvZiBJT01FR0EncyBwYXJhbGxlbCBwb3J0
IFpJUAorCSAgZHJpdmUgKGEgMTAwIE1CIHJlbW92YWJsZSBtZWRpYSBkZXZpY2UpLgorCisJICBO
b3RlIHRoYXQgeW91IGNhbiBzYXkgTiBoZXJlIGlmIHlvdSBoYXZlIHRoZSBTQ1NJIHZlcnNpb24g
b2YgdGhlIFpJUAorCSAgZHJpdmU6IGl0IHdpbGwgYmUgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkg
aWYgeW91IHNhaWQgWSB0byB0aGUKKwkgIGdlbmVyaWMgIlNDU0kgZGlzayBzdXBwb3J0IiwgYWJv
dmUuCisKKwkgIElmIHlvdSBoYXZlIHRoZSBaSVAgUGx1cyBkcml2ZSBvciBhIG1vcmUgcmVjZW50
IHBhcmFsbGVsIHBvcnQgWklQCisJICBkcml2ZSAoaWYgdGhlIHN1cHBsaWVkIGNhYmxlIHdpdGgg
dGhlIGRyaXZlIGlzIGxhYmVsZWQgIkF1dG9EZXRlY3QiKQorCSAgdGhlbiB5b3Ugc2hvdWxkIHNh
eSBZIGhlcmU7IGlmIHlvdSBoYXZlIGFuIG9sZGVyIFpJUCBkcml2ZSwgc2F5IE4KKwkgIGhlcmUg
YW5kIFkgdG8gIklPTUVHQSBQYXJhbGxlbCBQb3J0IChwcGEgLSBvbGRlciBkcml2ZXMpIiwgYWJv
dmUuCisKKwkgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZHJpdmVyIGFuZCBob3cg
dG8gdXNlIGl0IHlvdSBzaG91bGQKKwkgIHJlYWQgdGhlIGZpbGUgPGZpbGU6RG9jdW1lbnRhdGlv
bi9zY3NpL3BwYS50eHQ+LiAgWW91IHNob3VsZCBhbHNvIHJlYWQKKwkgIHRoZSBTQ1NJLUhPV1RP
LCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQorCSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5o
dG1sI2hvd3RvPi4gIElmIHlvdSB1c2UgdGhpcyBkcml2ZXIsCisJICB5b3Ugd2lsbCBzdGlsbCBi
ZSBhYmxlIHRvIHVzZSB0aGUgcGFyYWxsZWwgcG9ydCBmb3Igb3RoZXIgdGFza3MsCisJICBzdWNo
IGFzIGEgcHJpbnRlcjsgaXQgaXMgc2FmZSB0byBjb21waWxlIGJvdGggZHJpdmVycyBpbnRvIHRo
ZQorCSAga2VybmVsLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBj
aG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbW0uCisKK2NvbmZp
ZyBTQ1NJX0laSVBfRVBQMTYKKwlib29sICJwcGEvaW1tIG9wdGlvbiAtIFVzZSBzbG93IChidXQg
c2FmZSkgRVBQLTE2IgorCWRlcGVuZHMgb24gU0NTSV9QUEEgfHwgU0NTSV9JTU0KKwktLS1oZWxw
LS0tCisJICBFUFAgKEVuaGFuY2VkIFBhcmFsbGVsIFBvcnQpIGlzIGEgc3RhbmRhcmQgZm9yIHBh
cmFsbGVsIHBvcnRzIHdoaWNoCisJICBhbGxvd3MgdGhlbSB0byBhY3QgYXMgZXhwYW5zaW9uIGJ1
c2VzIHRoYXQgY2FuIGhhbmRsZSB1cCB0byA2NAorCSAgcGVyaXBoZXJhbCBkZXZpY2VzLgorCisJ
ICBTb21lIHBhcmFsbGVsIHBvcnQgY2hpcHNldHMgYXJlIHNsb3dlciB0aGFuIHRoZWlyIG1vdGhl
cmJvYXJkLCBhbmQKKwkgIHNvIHdlIGhhdmUgdG8gY29udHJvbCB0aGUgc3RhdGUgb2YgdGhlIGNo
aXBzZXQncyBGSUZPIHF1ZXVlIGV2ZXJ5CisJICBub3cgYW5kIHRoZW4gdG8gYXZvaWQgZGF0YSBs
b3NzLiBUaGlzIHdpbGwgYmUgZG9uZSBpZiB5b3Ugc2F5IFkKKwkgIGhlcmUuCisKKwkgIEdlbmVy
YWxseSwgc2F5aW5nIFkgaXMgdGhlIHNhZmUgb3B0aW9uIGFuZCBzbG93cyB0aGluZ3MgZG93biBh
IGJpdC4KKworY29uZmlnIFNDU0lfSVpJUF9TTE9XX0NUUgorCWJvb2wgInBwYS9pbW0gb3B0aW9u
IC0gQXNzdW1lIHNsb3cgcGFycG9ydCBjb250cm9sIHJlZ2lzdGVyIgorCWRlcGVuZHMgb24gU0NT
SV9QUEEgfHwgU0NTSV9JTU0KKwloZWxwCisJICBTb21lIHBhcmFsbGVsIHBvcnRzIGFyZSBrbm93
biB0byBoYXZlIGV4Y2Vzc2l2ZSBkZWxheXMgYmV0d2VlbgorCSAgY2hhbmdpbmcgdGhlIHBhcmFs
bGVsIHBvcnQgY29udHJvbCByZWdpc3RlciBhbmQgZ29vZCBkYXRhIGJlaW5nCisJICBhdmFpbGFi
bGUgb24gdGhlIHBhcmFsbGVsIHBvcnQgZGF0YS9zdGF0dXMgcmVnaXN0ZXIuIFRoaXMgb3B0aW9u
CisJICBmb3JjZXMgYSBzbWFsbCBkZWxheSAoMS4wIHVzZWMgdG8gYmUgZXhhY3QpIGFmdGVyIGNo
YW5naW5nIHRoZQorCSAgY29udHJvbCByZWdpc3RlciB0byBsZXQgdGhpbmdzIHNldHRsZSBvdXQu
IEVuYWJsaW5nIHRoaXMgb3B0aW9uIG1heQorCSAgcmVzdWx0IGluIGEgYmlnIGRyb3AgaW4gcGVy
Zm9ybWFuY2UgYnV0IHNvbWUgdmVyeSBvbGQgcGFyYWxsZWwgcG9ydHMKKwkgIChmb3VuZCBpbiAz
ODYgdmludGFnZSBtYWNoaW5lcykgd2lsbCBub3Qgd29yayBwcm9wZXJseS4KKworCSAgR2VuZXJh
bGx5LCBzYXlpbmcgTiBpcyBmaW5lLgorCitjb25maWcgU0NTSV9OQ1I1M0M0MDZBCisJdHJpc3Rh
dGUgIk5DUjUzYzQwNmEgU0NTSSBzdXBwb3J0IgorCWRlcGVuZHMgb24gSVNBICYmIFNDU0kKKwlo
ZWxwCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRoZSBOQ1I1M2M0MDZhIFNDU0kgaG9zdCBhZGFw
dGVyLiAgRm9yIHVzZXIKKwkgIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzLCBjaGVjayBvdXQgPGZp
bGU6ZHJpdmVycy9zY3NpL05DUjUzYzQwNmEuYz4KKwkgIGluIHRoZSBrZXJuZWwgc291cmNlLiAg
QWxzbyByZWFkIHRoZSBTQ1NJLUhPV1RPLCBhdmFpbGFibGUgZnJvbQorCSAgPGh0dHA6Ly93d3cu
dGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvPi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh
cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQg
TkNSNTNjNDA2LgorCitjb25maWcgU0NTSV9OQ1JfRDcwMAorCXRyaXN0YXRlICJOQ1IgRHVhbCA3
MDAgTUNBIFNDU0kgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIE1DQSAmJiBTQ1NJCisJc2VsZWN0IFND
U0lfU1BJX0FUVFJTCisJaGVscAorCSAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1pY3JvQ2hh
bm5lbCBEdWFsIDcwMCBjYXJkIHByb2R1Y2VkIGJ5CisJICBOQ1IgYW5kIGNvbW1vbmx5IHVzZWQg
aW4gMzQ1eC8zNXh4LzQxMDAgY2xhc3MgbWFjaGluZXMuICBJdCBhbHdheXMKKwkgIHRyaWVzIHRv
IG5lZ290aWF0ZSBzeW5jIGFuZCB1c2VzIHRhZyBjb21tYW5kIHF1ZXVlaW5nLgorCisJICBVbmxl
c3MgeW91IGhhdmUgYW4gTkNSIG1hbnVmYWN0dXJlZCBtYWNoaW5lLCB0aGUgY2hhbmNlcyBhcmUg
dGhhdAorCSAgeW91IGRvIG5vdCBoYXZlIHRoaXMgU0NTSSBjYXJkLCBzbyBzYXkgTi4KKworY29u
ZmlnIFNDU0lfTEFTSTcwMAorCXRyaXN0YXRlICJIUCBMYXNpIFNDU0kgc3VwcG9ydCBmb3IgNTNj
NzAwLzcxMCIKKwlkZXBlbmRzIG9uIEdTQyAmJiBTQ1NJCisJc2VsZWN0IFNDU0lfU1BJX0FUVFJT
CisJaGVscAorCSAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFNDU0kgY29udHJvbGxlciBpbiB0
aGUgTGFzaSBjaGlwIGZvdW5kIGluCisJICBtYW55IFBBLVJJU0Mgd29ya3N0YXRpb25zICYgc2Vy
dmVycy4gIElmIHlvdSBkbyBub3Qga25vdyB3aGV0aGVyIHlvdQorCSAgaGF2ZSBhIExhc2kgY2hp
cCwgaXQgaXMgc2FmZSB0byBzYXkgIlkiIGhlcmUuCisKK2NvbmZpZyBTQ1NJX1NOSV81M0M3MTAK
Kwl0cmlzdGF0ZSAiU05JIFJNIFNDU0kgc3VwcG9ydCBmb3IgNTNjNzEwIgorCWRlcGVuZHMgb24g
U05JX1JNICYmIFNDU0kKKwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwlzZWxlY3QgNTNDNzAwX0xF
X09OX0JFCisJaGVscAorCSAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIG9uYm9hcmQgU0NTSSBj
b250cm9sbGVyIGZvdW5kIGluIG9sZGVyCisJICBTTkkgUk0gd29ya3N0YXRpb25zICYgc2VydmVy
cy4KKworY29uZmlnIDUzQzcwMF9MRV9PTl9CRQorCWJvb2wKKwlkZXBlbmRzIG9uIFNDU0lfTEFT
STcwMAorCWRlZmF1bHQgeQorCitjb25maWcgU0NTSV9TVEVYCisJdHJpc3RhdGUgIlByb21pc2Ug
U3VwZXJUcmFrIEVYIFNlcmllcyBzdXBwb3J0IgorCWRlcGVuZHMgb24gUENJICYmIFNDU0kKKwkt
LS1oZWxwLS0tCisJICBUaGlzIGRyaXZlciBzdXBwb3J0cyBQcm9taXNlIFN1cGVyVHJhayBFWCBz
ZXJpZXMgc3RvcmFnZSBjb250cm9sbGVycy4KKworCSAgUHJvbWlzZSBwcm92aWRlcyBMaW51eCBS
QUlEIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgdGhlc2UKKwkgIGNvbnRyb2xsZXJzLiBQbGVh
c2UgdmlzaXQgPGh0dHA6Ly93d3cucHJvbWlzZS5jb20+IHRvIGRvd25sb2FkLgorCisJICBUbyBj
b21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1v
ZHVsZSB3aWxsIGJlIGNhbGxlZCBzdGV4LgorCitjb25maWcgNTNDNzAwX0JFX0JVUworCWJvb2wK
KwlkZXBlbmRzIG9uIFNDU0lfQTQwMDBUIHx8IFNDU0lfWk9SUk83WFggfHwgTVZNRTE2eF9TQ1NJ
IHx8IEJWTUU2MDAwX1NDU0kKKwlkZWZhdWx0IHkKKworY29uZmlnIFNDU0lfU1lNNTNDOFhYXzIK
Kwl0cmlzdGF0ZSAiU1lNNTNDOFhYIFZlcnNpb24gMiBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBv
biBQQ0kgJiYgU0NTSQorCXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCS0tLWhlbHAtLS0KKwkgIFRo
aXMgZHJpdmVyIHN1cHBvcnRzIHRoZSB3aG9sZSBOQ1I1M0M4WFgvU1lNNTNDOFhYIGZhbWlseSBv
ZgorCSAgUENJLVNDU0kgY29udHJvbGxlcnMuICBJdCBhbHNvIHN1cHBvcnRzIHRoZSBzdWJzZXQg
b2YgTFNJNTNDMTBYWAorCSAgVWx0cmEtMTYwIGNvbnRyb2xsZXJzIHRoYXQgYXJlIGJhc2VkIG9u
IHRoZSBTWU01M0M4WFggU0NSSVBUUworCSAgbGFuZ3VhZ2UuICBJdCBkb2VzIG5vdCBzdXBwb3J0
IExTSTUzQzEwWFggVWx0cmEtMzIwIFBDSS1YIFNDU0kKKwkgIGNvbnRyb2xsZXJzOyB5b3UgbmVl
ZCB0byB1c2UgdGhlIEZ1c2lvbiBNUFQgZHJpdmVyIGZvciB0aGF0LgorCisJICBQbGVhc2UgcmVh
ZCA8ZmlsZTpEb2N1bWVudGF0aW9uL3Njc2kvc3ltNTNjOHh4XzIudHh0PiBmb3IgbW9yZQorCSAg
aW5mb3JtYXRpb24uCisKK2NvbmZpZyBTQ1NJX1NZTTUzQzhYWF9ETUFfQUREUkVTU0lOR19NT0RF
CisJaW50ICJETUEgYWRkcmVzc2luZyBtb2RlIgorCWRlcGVuZHMgb24gU0NTSV9TWU01M0M4WFhf
MgorCWRlZmF1bHQgIjEiCisJLS0taGVscC0tLQorCSAgVGhpcyBvcHRpb24gb25seSBhcHBsaWVz
IHRvIFBDSS1TQ1NJIGNoaXBzIHRoYXQgYXJlIFBDSSBEQUMKKwkgIGNhcGFibGUgKDg3NUEsIDg5
NUEsIDg5NiwgMTAxMC0zMywgMTAxMC02NiwgMTAwMCkuCisKKwkgIFdoZW4gc2V0IHRvIDAsIHRo
ZSBkcml2ZXIgd2lsbCBwcm9ncmFtIHRoZSBjaGlwIHRvIG9ubHkgcGVyZm9ybQorCSAgMzItYml0
IERNQS4gIFdoZW4gc2V0IHRvIDEsIHRoZSBjaGlwIHdpbGwgYmUgYWJsZSB0byBwZXJmb3JtIERN
QQorCSAgdG8gYWRkcmVzc2VzIHVwIHRvIDFUQi4gIFdoZW4gc2V0IHRvIDIsIHRoZSBkcml2ZXIg
c3VwcG9ydHMgdGhlCisJICBmdWxsIDY0LWJpdCBETUEgYWRkcmVzcyByYW5nZSwgYnV0IGNhbiBv
bmx5IGFkZHJlc3MgMTYgc2VnbWVudHMKKwkgIG9mIDQgR0IgZWFjaC4gIFRoaXMgbGltaXRzIHRo
ZSB0b3RhbCBhZGRyZXNzYWJsZSByYW5nZSB0byA2NCBHQi4KKworCSAgTW9zdCBtYWNoaW5lcyB3
aXRoIGxlc3MgdGhhbiA0R0Igb2YgbWVtb3J5IHNob3VsZCB1c2UgYSBzZXR0aW5nCisJICBvZiAw
IGZvciBiZXN0IHBlcmZvcm1hbmNlLiAgSWYgeW91ciBtYWNoaW5lIGhhcyA0R0Igb2YgbWVtb3J5
CisJICBvciBtb3JlLCB5b3Ugc2hvdWxkIHNldCB0aGlzIG9wdGlvbiB0byAxICh0aGUgZGVmYXVs
dCkuCisKKwkgIFRoZSBzdGlsbCBleHBlcmltZW50YWwgdmFsdWUgMiAoNjQgYml0IERNQSBhZGRy
ZXNzaW5nIHdpdGggMTYKKwkgIHggNEdCIHNlZ21lbnRzIGxpbWl0YXRpb24pIGNhbiBiZSB1c2Vk
IG9uIHN5c3RlbXMgdGhhdCByZXF1aXJlCisJICBQQ0kgYWRkcmVzcyBiaXRzIHBhc3QgYml0IDM5
IHRvIGJlIHNldCBmb3IgdGhlIGFkZHJlc3Npbmcgb2YKKwkgIG1lbW9yeSB1c2luZyBQQ0kgREFD
IGN5Y2xlcy4KKworY29uZmlnIFNDU0lfU1lNNTNDOFhYX0RFRkFVTFRfVEFHUworCWludCAiRGVm
YXVsdCB0YWdnZWQgY29tbWFuZCBxdWV1ZSBkZXB0aCIKKwlkZXBlbmRzIG9uIFNDU0lfU1lNNTND
OFhYXzIKKwlkZWZhdWx0ICIxNiIKKwloZWxwCisJICBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVl
IG9mIHRoZSBjb21tYW5kIHF1ZXVlIGRlcHRoIHRoZQorCSAgZHJpdmVyIHdpbGwgYW5ub3VuY2Ug
dG8gdGhlIGdlbmVyaWMgU0NTSSBsYXllciBmb3IgZGV2aWNlcworCSAgdGhhdCBzdXBwb3J0IHRh
Z2dlZCBjb21tYW5kIHF1ZXVlaW5nLiBUaGlzIHZhbHVlIGNhbiBiZSBjaGFuZ2VkCisJICBmcm9t
IHRoZSBib290IGNvbW1hbmQgbGluZS4gIFRoaXMgaXMgYSBzb2Z0IGxpbWl0IHRoYXQgY2Fubm90
CisJICBleGNlZWQgQ09ORklHX1NDU0lfU1lNNTNDOFhYX01BWF9UQUdTLgorCitjb25maWcgU0NT
SV9TWU01M0M4WFhfTUFYX1RBR1MKKwlpbnQgIk1heGltdW0gbnVtYmVyIG9mIHF1ZXVlZCBjb21t
YW5kcyIKKwlkZXBlbmRzIG9uIFNDU0lfU1lNNTNDOFhYXzIKKwlkZWZhdWx0ICI2NCIKKwloZWxw
CisJICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVy
IG9mIGNvbW1hbmRzCisJICB0aGF0IGNhbiBiZSBxdWV1ZWQgdG8gYW55IGRldmljZSwgd2hlbiB0
YWdnZWQgY29tbWFuZCBxdWV1aW5nIGlzCisJICBwb3NzaWJsZS4gVGhlIGRyaXZlciBzdXBwb3J0
cyB1cCB0byAyNTYgcXVldWVkIGNvbW1hbmRzIHBlciBkZXZpY2UuCisJICBUaGlzIHZhbHVlIGlz
IHVzZWQgYXMgYSBjb21waWxlZC1pbiBoYXJkIGxpbWl0LgorCitjb25maWcgU0NTSV9TWU01M0M4
WFhfTU1JTworCWJvb2wgIlVzZSBtZW1vcnkgbWFwcGVkIElPIgorCWRlcGVuZHMgb24gU0NTSV9T
WU01M0M4WFhfMgorCWRlZmF1bHQgeQorCWhlbHAKKwkgIE1lbW9yeSBtYXBwZWQgSU8gaXMgZmFz
dGVyIHRoYW4gUG9ydCBJTy4gIE1vc3QgcGVvcGxlIHNob3VsZAorCSAgYW5zd2VyIFkgaGVyZSwg
YnV0IHNvbWUgbWFjaGluZXMgbWF5IGhhdmUgcHJvYmxlbXMuICBJZiB5b3UgaGF2ZQorCSAgdG8g
YW5zd2VyIE4gaGVyZSwgcGxlYXNlIHJlcG9ydCB0aGUgcHJvYmxlbSB0byB0aGUgbWFpbnRhaW5l
ci4KKworY29uZmlnIFNDU0lfSVBSCisJdHJpc3RhdGUgIklCTSBQb3dlciBMaW51eCBSQUlEIGFk
YXB0ZXIgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFBDSSAmJiBTQ1NJICYmIEFUQQorCXNlbGVjdCBG
V19MT0FERVIKKwktLS1oZWxwLS0tCisJICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSUJNIFBv
d2VyIExpbnV4IGZhbWlseSBSQUlEIGFkYXB0ZXJzLgorCSAgVGhpcyBpbmNsdWRlcyBJQk0gcFNl
cmllcyA1NzEyLCA1NzAzLCA1NzA5LCBhbmQgNTcwQSwgYXMgd2VsbAorCSAgYXMgSUJNIGlTZXJp
ZXMgNTcwMiwgNTcwMywgNTcwOSwgYW5kIDU3MEEuCisKK2NvbmZpZyBTQ1NJX0lQUl9UUkFDRQor
CWJvb2wgImVuYWJsZSBkcml2ZXIgaW50ZXJuYWwgdHJhY2UiCisJZGVwZW5kcyBvbiBTQ1NJX0lQ
UgorCWRlZmF1bHQgeQorCWhlbHAKKwkgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGUgZHJpdmVyIHdp
bGwgdHJhY2UgYWxsIGNvbW1hbmRzIGlzc3VlZAorCSAgdG8gdGhlIGFkYXB0ZXIuIFBlcmZvcm1h
bmNlIGltcGFjdCBpcyBtaW5pbWFsLiBUcmFjZSBjYW4gYmUKKwkgIGR1bXBlZCB1c2luZyAvc3lz
L2J1cy9jbGFzcy9zY3NpX2hvc3QvaG9zdFhYL3RyYWNlLgorCitjb25maWcgU0NTSV9JUFJfRFVN
UAorCWJvb2wgImVuYWJsZSBhZGFwdGVyIGR1bXAgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFNDU0lf
SVBSCisJZGVmYXVsdCB5CisJaGVscAorCSAgSWYgeW91IHNheSBZIGhlcmUsIHRoZSBkcml2ZXIg
d2lsbCBzdXBwb3J0IGFkYXB0ZXIgY3Jhc2ggZHVtcC4KKwkgIElmIHlvdSBlbmFibGUgdGhpcyBz
dXBwb3J0LCB0aGUgaXByZHVtcCBkYWVtb24gY2FuIGJlIHVzZWQKKwkgIHRvIGNhcHR1cmUgYWRh
cHRlciBmYWlsdXJlIGFuYWx5c2lzIGluZm9ybWF0aW9uLgorCitjb25maWcgU0NTSV9aQUxPTgor
CXRyaXN0YXRlICJaYWxvbiBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBHU0MgJiYgU0NTSQor
CXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCWhlbHAKKwkgIFRoZSBaYWxvbiBpcyBhIEdTQy9IU0Mg
YnVzIGludGVyZmFjZSBjaGlwIHRoYXQgc2l0cyBiZXR3ZWVuIHRoZQorCSAgUEEtUklTQyBwcm9j
ZXNzb3IgYW5kIHRoZSBOQ1IgNTNjNzIwIFNDU0kgY29udHJvbGxlciBvbiBDMTAwLAorCSAgQzEx
MCwgSjIwMCwgSjIxMCBhbmQgc29tZSBELCBLICYgUi1jbGFzcyBtYWNoaW5lcy4gIEl0J3MgYWxz
bworCSAgdXNlZCBvbiB0aGUgYWRkLWluIEJsdWVmaXNoLCBCYXJyYWN1ZGEgJiBTaHJpa2UgU0NT
SSBjYXJkcy4KKwkgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgb25lIG9mIHRoZXNlIG1hY2hpbmVz
IG9yIGNhcmRzLgorCitjb25maWcgU0NTSV9OQ1JfUTcyMAorCXRyaXN0YXRlICJOQ1IgUXVhZCA3
MjAgTUNBIFNDU0kgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIE1DQSAmJiBTQ1NJCisJc2VsZWN0IFND
U0lfU1BJX0FUVFJTCisJaGVscAorCSAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1pY3JvQ2hh
bm5lbCBRdWFkIDcyMCBjYXJkIHByb2R1Y2VkIGJ5CisJICBOQ1IgYW5kIGNvbW1vbmx5IHVzZWQg
aW4gMzQ1eC8zNXh4LzQxMDAgY2xhc3MgbWFjaGluZXMuICBJdCBhbHdheXMKKwkgIHRyaWVzIHRv
IG5lZ290aWF0ZSBzeW5jIGFuZCB1c2VzIHRhZyBjb21tYW5kIHF1ZXVlaW5nLgorCisJICBVbmxl
c3MgeW91IGhhdmUgYW4gTkNSIG1hbnVmYWN0dXJlZCBtYWNoaW5lLCB0aGUgY2hhbmNlcyBhcmUg
dGhhdAorCSAgeW91IGRvIG5vdCBoYXZlIHRoaXMgU0NTSSBjYXJkLCBzbyBzYXkgTi4KKworY29u
ZmlnIFNDU0lfTkNSNTNDOFhYX0RFRkFVTFRfVEFHUworCWludCAiZGVmYXVsdCB0YWdnZWQgY29t
bWFuZCBxdWV1ZSBkZXB0aCIKKwlkZXBlbmRzIG9uIFNDU0lfWkFMT04gfHwgU0NTSV9OQ1JfUTcy
MAorCWRlZmF1bHQgIjgiCisJLS0taGVscC0tLQorCSAgIlRhZ2dlZCBjb21tYW5kIHF1ZXVpbmci
IGlzIGEgZmVhdHVyZSBvZiBTQ1NJLTIgd2hpY2ggaW1wcm92ZXMKKwkgIHBlcmZvcm1hbmNlOiB0
aGUgaG9zdCBhZGFwdGVyIGNhbiBzZW5kIHNldmVyYWwgU0NTSSBjb21tYW5kcyB0byBhCisJICBk
ZXZpY2UncyBxdWV1ZSBldmVuIGlmIHByZXZpb3VzIGNvbW1hbmRzIGhhdmVuJ3QgZmluaXNoZWQg
eWV0LgorCSAgQmVjYXVzZSB0aGUgZGV2aWNlIGlzIGludGVsbGlnZW50LCBpdCBjYW4gb3B0aW1p
emUgaXRzIG9wZXJhdGlvbnMKKwkgIChsaWtlIGhlYWQgcG9zaXRpb25pbmcpIGJhc2VkIG9uIGl0
cyBvd24gcmVxdWVzdCBxdWV1ZS4gU29tZSBTQ1NJCisJICBkZXZpY2VzIGRvbid0IGltcGxlbWVu
dCB0aGlzIHByb3Blcmx5OyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMKKwkgIGZlYXR1cmUs
IGVudGVyIDAgb3IgMSBoZXJlIChpdCBkb2Vzbid0IG1hdHRlciB3aGljaCkuCisKKwkgIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzIDggYW5kIHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkgbW9zdCBoYXJkIGRp
c2tzLgorCSAgVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBmcm9tIHRoZSBib290IGNvbW1h
bmQgbGluZSB1c2luZyB0aGUKKwkgICd0YWdzJyBvcHRpb24gYXMgZm9sbG93cyAoZXhhbXBsZSk6
CisJICAnbmNyNTNjOHh4PXRhZ3M6NC90MnQzcTE2L3QwdTJxMTAnIHdpbGwgc2V0IGRlZmF1bHQg
cXVldWUgZGVwdGggdG8KKwkgIDQsIHNldCBxdWV1ZSBkZXB0aCB0byAxNiBmb3IgdGFyZ2V0IDIg
YW5kIHRhcmdldCAzIG9uIGNvbnRyb2xsZXIgMAorCSAgYW5kIHNldCBxdWV1ZSBkZXB0aCB0byAx
MCBmb3IgdGFyZ2V0IDAgLyBsdW4gMiBvbiBjb250cm9sbGVyIDEuCisKKwkgIFRoZSBub3JtYWwg
YW5zd2VyIHRoZXJlZm9yZSBpcyB0byBnbyB3aXRoIHRoZSBkZWZhdWx0IDggYW5kIHRvIHVzZQor
CSAgYSBib290IGNvbW1hbmQgbGluZSBvcHRpb24gZm9yIGRldmljZXMgdGhhdCBuZWVkIHRvIHVz
ZSBhIGRpZmZlcmVudAorCSAgY29tbWFuZCBxdWV1ZSBkZXB0aC4KKworCSAgVGhlcmUgaXMgbm8g
c2FmZSBvcHRpb24gb3RoZXIgdGhhbiB1c2luZyBnb29kIFNDU0kgZGV2aWNlcy4KKworY29uZmln
IFNDU0lfTkNSNTNDOFhYX01BWF9UQUdTCisJaW50ICJtYXhpbXVtIG51bWJlciBvZiBxdWV1ZWQg
Y29tbWFuZHMiCisJZGVwZW5kcyBvbiBTQ1NJX1pBTE9OIHx8IFNDU0lfTkNSX1E3MjAKKwlkZWZh
dWx0ICIzMiIKKwktLS1oZWxwLS0tCisJICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNwZWNp
ZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbW1hbmRzCisJICB0aGF0IGNhbiBiZSBxdWV1ZWQg
dG8gYW55IGRldmljZSwgd2hlbiB0YWdnZWQgY29tbWFuZCBxdWV1aW5nIGlzCisJICBwb3NzaWJs
ZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMzIuIE1pbmltdW0gaXMgMiwgbWF4aW11bSBpcyA2NC4K
KwkgIE1vZGVybiBoYXJkIGRpc2tzIGFyZSBhYmxlIHRvIHN1cHBvcnQgNjQgdGFncyBhbmQgZXZl
biBtb3JlLCBidXQKKwkgIGRvIG5vdCBzZWVtIHRvIGJlIGZhc3RlciB3aGVuIG1vcmUgdGhhbiAz
MiB0YWdzIGFyZSBiZWluZyB1c2VkLgorCisJICBTbywgdGhlIG5vcm1hbCBhbnN3ZXIgaGVyZSBp
cyB0byBnbyB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlIDMyIHVubGVzcworCSAgeW91IGFyZSB1c2lu
ZyB2ZXJ5IGxhcmdlIGhhcmQgZGlza3Mgd2l0aCBsYXJnZSBjYWNoZSAoPj0gMSBNQikgdGhhdAor
CSAgYXJlIGFibGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgbW9yZSB0aGFuIDMyIHRhZ2dlZCBjb21t
YW5kcy4KKworCSAgVGhlcmUgaXMgbm8gc2FmZSBvcHRpb24gYW5kIHRoZSBkZWZhdWx0IGFuc3dl
ciBpcyByZWNvbW1lbmRlZC4KKworY29uZmlnIFNDU0lfTkNSNTNDOFhYX1NZTkMKKwlpbnQgInN5
bmNocm9ub3VzIHRyYW5zZmVycyBmcmVxdWVuY3kgaW4gTUh6IgorCWRlcGVuZHMgb24gU0NTSV9a
QUxPTiB8fCBTQ1NJX05DUl9RNzIwCisJZGVmYXVsdCAiMjAiCisJLS0taGVscC0tLQorCSAgVGhl
IFNDU0kgUGFyYWxsZWwgSW50ZXJmYWNlLTIgU3RhbmRhcmQgZGVmaW5lcyA1IGNsYXNzZXMgb2Yg
dHJhbnNmZXIKKwkgIHJhdGVzOiBGQVNULTUsIEZBU1QtMTAsIEZBU1QtMjAsIEZBU1QtNDAgYW5k
IEZBU1QtODAuICBUaGUgbnVtYmVycworCSAgYXJlIHJlc3BlY3RpdmVseSB0aGUgbWF4aW11bSBk
YXRhIHRyYW5zZmVyIHJhdGVzIGluIG1lZ2EtdHJhbnNmZXJzCisJICBwZXIgc2Vjb25kIGZvciBl
YWNoIGNsYXNzLiAgRm9yIGV4YW1wbGUsIGEgRkFTVC0yMCBXaWRlIDE2IGRldmljZSBpcworCSAg
YWJsZSB0byB0cmFuc2ZlciBkYXRhIGF0IDIwIG1pbGxpb24gMTYgYml0IHBhY2tldHMgcGVyIHNl
Y29uZCBmb3IgYQorCSAgdG90YWwgcmF0ZSBvZiA0MCBNQi9zLgorCisJICBZb3UgbWF5IHNwZWNp
ZnkgMCBpZiB5b3Ugd2FudCB0byBvbmx5IHVzZSBhc3luY2hyb25vdXMgZGF0YQorCSAgdHJhbnNm
ZXJzLiBUaGlzIGlzIHRoZSBzYWZlc3QgYW5kIHNsb3dlc3Qgb3B0aW9uLiBPdGhlcndpc2UsIHNw
ZWNpZnkKKwkgIGEgdmFsdWUgYmV0d2VlbiA1IGFuZCA4MCwgZGVwZW5kaW5nIG9uIHRoZSBjYXBh
YmlsaXR5IG9mIHlvdXIgU0NTSQorCSAgY29udHJvbGxlci4gIFRoZSBoaWdoZXIgdGhlIG51bWJl
ciwgdGhlIGZhc3RlciB0aGUgZGF0YSB0cmFuc2Zlci4KKwkgIE5vdGUgdGhhdCA4MCBzaG91bGQg
bm9ybWFsbHkgYmUgb2sgc2luY2UgdGhlIGRyaXZlciBkZWNyZWFzZXMgdGhlCisJICB2YWx1ZSBh
dXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgY29udHJvbGxlcidzIGNhcGFiaWxpdGllcy4K
KworCSAgWW91ciBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBpcyBpZ25vcmVkIGZvciBjb250cm9s
bGVycyB3aXRoIE5WUkFNLAorCSAgc2luY2UgdGhlIGRyaXZlciB3aWxsIGdldCB0aGlzIGluZm9y
bWF0aW9uIGZyb20gdGhlIHVzZXIgc2V0LXVwLiAgSXQKKwkgIGFsc28gY2FuIGJlIG92ZXJyaWRk
ZW4gdXNpbmcgYSBib290IHNldHVwIG9wdGlvbiwgYXMgZm9sbG93cworCSAgKGV4YW1wbGUpOiAn
bmNyNTNjOHh4PXN5bmM6MTInIHdpbGwgYWxsb3cgdGhlIGRyaXZlciB0byBuZWdvdGlhdGUKKwkg
IGZvciBGQVNULTIwIHN5bmNocm9ub3VzIGRhdGEgdHJhbnNmZXIgKDIwIG1lZ2EtdHJhbnNmZXJz
IHBlcgorCSAgc2Vjb25kKS4KKworCSAgVGhlIG5vcm1hbCBhbnN3ZXIgdGhlcmVmb3JlIGlzIG5v
dCB0byBnbyB3aXRoIHRoZSBkZWZhdWx0IGJ1dCB0bworCSAgc2VsZWN0IHRoZSBtYXhpbXVtIHZh
bHVlIDgwIGFsbG93aW5nIHRoZSBkcml2ZXIgdG8gdXNlIHRoZSBtYXhpbXVtCisJICB2YWx1ZSBz
dXBwb3J0ZWQgYnkgZWFjaCBjb250cm9sbGVyLiBJZiB0aGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRo
CisJICB5b3VyIFNDU0kgZGV2aWNlcywgeW91IHNob3VsZCBjb21lIGJhY2sgYW5kIGRlY3JlYXNl
IHRoZSB2YWx1ZS4KKworCSAgVGhlcmUgaXMgbm8gc2FmZSBvcHRpb24gb3RoZXIgdGhhbiB1c2lu
ZyBnb29kIGNhYmxpbmcsIHJpZ2h0CisJICB0ZXJtaW5hdGlvbnMgYW5kIFNDU0kgY29uZm9ybWFu
dCBkZXZpY2VzLgorCitjb25maWcgU0NTSV9OQ1I1M0M4WFhfTk9fRElTQ09OTkVDVAorCWJvb2wg
Im5vdCBhbGxvdyB0YXJnZXRzIHRvIGRpc2Nvbm5lY3QiCisJZGVwZW5kcyBvbiAoU0NTSV9aQUxP
TiB8fCBTQ1NJX05DUl9RNzIwKSAmJiBTQ1NJX05DUjUzQzhYWF9ERUZBVUxUX1RBR1M9MAorCWhl
bHAKKwkgIFRoaXMgb3B0aW9uIGlzIG9ubHkgcHJvdmlkZWQgZm9yIHNhZmV0eSBpZiB5b3Ugc3Vz
cGVjdCBzb21lIFNDU0kKKwkgIGRldmljZSBvZiB5b3VycyB0byBub3Qgc3VwcG9ydCBwcm9wZXJs
eSB0aGUgdGFyZ2V0LWRpc2Nvbm5lY3QKKwkgIGZlYXR1cmUuIEluIHRoYXQgY2FzZSwgeW91IHdv
dWxkIHNheSBZIGhlcmUuIEluIGdlbmVyYWwgaG93ZXZlciwgdG8KKwkgIG5vdCBhbGxvdyB0YXJn
ZXRzIHRvIGRpc2Nvbm5lY3QgaXMgbm90IHJlYXNvbmFibGUgaWYgdGhlcmUgaXMgbW9yZQorCSAg
dGhhbiAxIGRldmljZSBvbiBhIFNDU0kgYnVzLiBUaGUgbm9ybWFsIGFuc3dlciB0aGVyZWZvcmUg
aXMgTi4KKworY29uZmlnIFNDU0lfUEFTMTYKKwl0cmlzdGF0ZSAiUEFTMTYgU0NTSSBzdXBwb3J0
IgorCWRlcGVuZHMgb24gSVNBICYmIFNDU0kKKwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwktLS1o
ZWxwLS0tCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIGEgU0NTSSBob3N0IGFkYXB0ZXIuICBJdCBp
cyBleHBsYWluZWQgaW4gc2VjdGlvbgorCSAgMy4xMCBvZiB0aGUgU0NTSS1IT1dUTywgYXZhaWxh
YmxlIGZyb20KKwkgIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0bz4uICBJZiBp
dCBkb2Vzbid0IHdvcmsgb3V0CisJICBvZiB0aGUgYm94LCB5b3UgbWF5IGhhdmUgdG8gY2hhbmdl
IHNvbWUgc2V0dGluZ3MgaW4KKwkgIDxmaWxlOmRyaXZlcnMvc2NzaS9wYXMxNi5oPi4KKworCSAg
VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJ
ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcGFzMTYuCisKK2NvbmZpZyBTQ1NJX1FMT0dJQ19GQVMK
Kwl0cmlzdGF0ZSAiUWxvZ2ljIEZBUyBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBJU0EgJiYg
U0NTSQorCS0tLWhlbHAtLS0KKwkgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBJU0EsIFZMQiwg
YW5kIFBDTUNJQSB2ZXJzaW9ucyBvZiB0aGUgUWxvZ2ljCisJICBGYXN0U0NTSSEgY2FyZHMgYXMg
d2VsbCBhcyBhbnkgb3RoZXIgY2FyZCBiYXNlZCBvbiB0aGUgRkFTWFggY2hpcAorCSAgKGluY2x1
ZGluZyB0aGUgQ29udHJvbCBDb25jZXB0cyBTQ1NJL0lERS9TSU8vUElPL0ZEQyBjYXJkcykuCisK
KwkgIFRoaXMgZHJpdmVyIGRvZXMgTk9UIHN1cHBvcnQgdGhlIFBDSSB2ZXJzaW9ucyBvZiB0aGVz
ZSBjYXJkcy4gVGhlCisJICBQQ0kgdmVyc2lvbnMgYXJlIHN1cHBvcnRlZCBieSB0aGUgUWxvZ2lj
IElTUCBkcml2ZXIgKCJRbG9naWMgSVNQCisJICBTQ1NJIHN1cHBvcnQiKSwgYmVsb3cuCisKKwkg
IEluZm9ybWF0aW9uIGFib3V0IHRoaXMgZHJpdmVyIGlzIGNvbnRhaW5lZCBpbgorCSAgPGZpbGU6
RG9jdW1lbnRhdGlvbi9zY3NpL3Fsb2dpY2Zhcy50eHQ+LiAgWW91IHNob3VsZCBhbHNvIHJlYWQg
dGhlCisJICBTQ1NJLUhPV1RPLCBhdmFpbGFibGUgZnJvbQorCSAgPGh0dHA6Ly93d3cudGxkcC5v
cmcvZG9jcy5odG1sI2hvd3RvPi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v
ZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcWxvZ2lj
ZmFzLgorCitjb25maWcgU0NTSV9RTE9HSUNfMTI4MAorCXRyaXN0YXRlICJRbG9naWMgUUxBIDEy
NDAvMXg4MC8xeDE2MCBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQorCWhl
bHAKKwkgIFNheSBZIGlmIHlvdSBoYXZlIGEgUUxvZ2ljIElTUDEyNDAvMXg4MC8xeDE2MCBTQ1NJ
IGhvc3QgYWRhcHRlci4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwg
Y2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcWxhMTI4MC4KKwor
Y29uZmlnIFNDU0lfUUxPR0lDUFRJCisJdHJpc3RhdGUgIlBUSSBRbG9naWMsIElTUCBEcml2ZXIi
CisJZGVwZW5kcyBvbiBTQlVTICYmIFNDU0kKKwloZWxwCisJICBUaGlzIGRyaXZlciBzdXBwb3J0
cyBTQlVTIFNDU0kgY29udHJvbGxlcnMgZnJvbSBQVEkgb3IgUUxvZ2ljLiBUaGVzZQorCSAgY29u
dHJvbGxlcnMgYXJlIGtub3duIHVuZGVyIFNvbGFyaXMgYXMgcXB0aSBhbmQgaW4gdGhlIG9wZW5w
cm9tIGFzCisJICBQVEkscHRpc3Agb3IgUUxHQyxpc3AuIE5vdGUgdGhhdCBQQ0kgUUxvZ2ljIFND
U0kgY29udHJvbGxlcnMgYXJlCisJICBkcml2ZW4gYnkgYSBkaWZmZXJlbnQgZHJpdmVyLgorCisJ
ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUK
KwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBxbG9naWNwdGkuCisKK3NvdXJjZSAiZHJpdmVycy9z
Y3NpL3FsYTJ4eHgvS2NvbmZpZyIKK3NvdXJjZSAiZHJpdmVycy9zY3NpL3FsYTR4eHgvS2NvbmZp
ZyIKKworY29uZmlnIFNDU0lfTFBGQworCXRyaXN0YXRlICJFbXVsZXggTGlnaHRQdWxzZSBGaWJy
ZSBDaGFubmVsIFN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQorCXNlbGVjdCBTQ1NJ
X0ZDX0FUVFJTCisJaGVscAorICAgICAgICAgIFRoaXMgbHBmYyBkcml2ZXIgc3VwcG9ydHMgdGhl
IEVtdWxleCBMaWdodFB1bHNlCisgICAgICAgICAgRmFtaWx5IG9mIEZpYnJlIENoYW5uZWwgUENJ
IGhvc3QgYWRhcHRlcnMuCisKK2NvbmZpZyBTQ1NJX0xQRkNfREVCVUdfRlMKKwlib29sICJFbXVs
ZXggTGlnaHRQdWxzZSBGaWJyZSBDaGFubmVsIGRlYnVnZnMgU3VwcG9ydCIKKwlkZXBlbmRzIG9u
IFNDU0lfTFBGQyAmJiBERUJVR19GUworCWhlbHAKKwkgIFRoaXMgbWFrZXMgZGVidWdnaW5nIGlu
Zm9ybWF0aW9uIGZyb20gdGhlIGxwZmMgZHJpdmVyCisJICBhdmFpbGFibGUgdmlhIHRoZSBkZWJ1
Z2ZzIGZpbGVzeXN0ZW0uCisKK2NvbmZpZyBTQ1NJX1NJTTcxMAorCXRyaXN0YXRlICJTaW1wbGUg
NTNjNzEwIFNDU0kgc3VwcG9ydCAoQ29tcGFxLCBOQ1IgbWFjaGluZXMpIgorCWRlcGVuZHMgb24g
KEVJU0EgfHwgTUNBKSAmJiBTQ1NJCisJc2VsZWN0IFNDU0lfU1BJX0FUVFJTCisJLS0taGVscC0t
LQorCSAgVGhpcyBkcml2ZXIgaXMgZm9yIE5DUjUzYzcxMCBiYXNlZCBTQ1NJIGhvc3QgYWRhcHRl
cnMuCisKKwkgIEl0IGN1cnJlbnRseSBzdXBwb3J0cyBDb21wYXEgRUlTQSBjYXJkcyBhbmQgTkNS
IE1DQSBjYXJkcworCitjb25maWcgU0NTSV9TWU01M0M0MTYKKwl0cmlzdGF0ZSAiU3ltYmlvcyA1
M2M0MTYgU0NTSSBzdXBwb3J0IgorCWRlcGVuZHMgb24gSVNBICYmIFNDU0kKKwktLS1oZWxwLS0t
CisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRoZSBzeW01M2M0MTYgU0NTSSBob3N0IGFkYXB0ZXIs
IHRoZSBTQ1NJCisJICBhZGFwdGVyIHRoYXQgY29tZXMgd2l0aCBzb21lIEhQIHNjYW5uZXJzLiBU
aGlzIGRyaXZlciByZXF1aXJlcyB0aGF0CisJICB0aGUgc3ltNTNjNDE2IGlzIGNvbmZpZ3VyZWQg
Zmlyc3QgdXNpbmcgc29tZSBzb3J0IG9mIFBuUAorCSAgY29uZmlndXJhdGlvbiBwcm9ncmFtIChl
LmcuIGlzYXBucCkgb3IgYnkgYSBQblAgYXdhcmUgQklPUy4gSWYgeW91CisJICBhcmUgdXNpbmcg
aXNhcG5wIHRoZW4geW91IG5lZWQgdG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZQor
CSAgYW5kIHRoZW4gbG9hZCBpdCB1c2luZyBpbnNtb2QgYWZ0ZXIgaXNhcG5wIGhhcyBydW4uIFRo
ZSBwYXJhbWV0ZXJzCisJICBvZiB0aGUgY29uZmlndXJlZCBjYXJkKHMpIHNob3VsZCBiZSBwYXNz
ZWQgdG8gdGhlIGRyaXZlci4gVGhlIGZvcm1hdAorCSAgaXM6CisKKwkgIGluc21vZCBzeW01M2M0
MTYgc3ltNTNjNDE2PTxiYXNlPiw8aXJxPiBbc3ltNTNjNDE2XzE9PGJhc2U+LDxpcnE+XQorCisJ
ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUK
KwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzeW01M2M0MTYuCisKK2NvbmZpZyBTQ1NJX0RDMzk1
eAorCXRyaXN0YXRlICJUZWtyYW0gREMzOTUoVS9VVy9GKSBhbmQgREMzMTUoVSkgU0NTSSBzdXBw
b3J0IChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gUENJICYmIFNDU0kgJiYgRVhQRVJJTUVO
VEFMCisJLS0taGVscC0tLQorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgUENJIFNDU0kgaG9zdCBh
ZGFwdGVycyBiYXNlZCBvbiB0aGUgQVNJQworCSAgVFJNLVMxMDQwIGNoaXAsIGUuZyBUZWtyYW0g
REMzOTUoVS9VVy9GKSBhbmQgREMzMTUoVSkgdmFyaWFudHMuCisKKwkgIFRoaXMgZHJpdmVyIHdv
cmtzLCBidXQgaXMgc3RpbGwgaW4gZXhwZXJpbWVudGFsIHN0YXR1cy4gU28gYmV0dGVyCisJICBo
YXZlIGEgYm9vdGFibGUgZGlzayBhbmQgYSBiYWNrdXAgaW4gY2FzZSBvZiBlbWVyZ2VuY3kuCisK
KwkgIERvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIGluIDxmaWxlOkRvY3VtZW50YXRpb24vc2Nz
aS9kYzM5NXgudHh0Pi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwg
Y2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZGMzOTV4LgorCitj
b25maWcgU0NTSV9EQzM5MFQKKwl0cmlzdGF0ZSAiVGVrcmFtIERDMzkwKFQpIGFuZCBBbTUzLzc5
Qzk3NCBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQorCS0tLWhlbHAtLS0K
KwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFBDSSBTQ1NJIGhvc3QgYWRhcHRlcnMgYmFzZWQgb24g
dGhlIEFtNTNDOTc0QQorCSAgY2hpcCwgZS5nLiBUZWtyYW0gREMzOTAoVCksIERhd2lDb250cm9s
IDI5NzQgYW5kIHNvbWUgb25ib2FyZAorCSAgUENzY3NpL1BDbmV0IChBbTUzLzc5Qzk3NCkgc29s
dXRpb25zLgorCisJICBEb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiA8ZmlsZTpEb2N1bWVu
dGF0aW9uL3Njc2kvdG1zY3NpbS50eHQ+LgorCisJICBOb3RlIHRoYXQgdGhpcyBkcml2ZXIgZG9l
cyBOT1Qgc3VwcG9ydCBUZWtyYW0gREMzOTBXL1UvRiwgd2hpY2ggYXJlCisJICBiYXNlZCBvbiBO
Q1IvU3ltYmlvcyBjaGlwcy4gVXNlICJOQ1I1M0M4WFggU0NTSSBzdXBwb3J0IiBmb3IgdGhvc2Uu
CisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6
IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRtc2NzaW0uCisKK2NvbmZpZyBTQ1NJX1Qx
MjgKKwl0cmlzdGF0ZSAiVHJhbnRvciBUMTI4L1QxMjhGL1QyMjggU0NTSSBzdXBwb3J0IgorCWRl
cGVuZHMgb24gSVNBICYmIFNDU0kKKwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwlzZWxlY3QgQ0hF
Q0tfU0lHTkFUVVJFCisJLS0taGVscC0tLQorCSAgVGhpcyBpcyBzdXBwb3J0IGZvciBhIFNDU0kg
aG9zdCBhZGFwdGVyLiBJdCBpcyBleHBsYWluZWQgaW4gc2VjdGlvbgorCSAgMy4xMSBvZiB0aGUg
U0NTSS1IT1dUTywgYXZhaWxhYmxlIGZyb20KKwkgIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3Mu
aHRtbCNob3d0bz4uICBJZiBpdCBkb2Vzbid0IHdvcmsgb3V0CisJICBvZiB0aGUgYm94LCB5b3Ug
bWF5IGhhdmUgdG8gY2hhbmdlIHNvbWUgc2V0dGluZ3MgaW4KKwkgIDxmaWxlOmRyaXZlcnMvc2Nz
aS90MTI4Lmg+LiAgTm90ZSB0aGF0IFRyYW50b3Igd2FzIHB1cmNoYXNlZCBieQorCSAgQWRhcHRl
YywgYW5kIHNvbWUgZm9ybWVyIFRyYW50b3IgcHJvZHVjdHMgYXJlIGJlaW5nIHNvbGQgdW5kZXIg
dGhlCisJICBBZGFwdGVjIG5hbWUuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBt
b2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHQxMjgu
CisKK2NvbmZpZyBTQ1NJX1UxNF8zNEYKKwl0cmlzdGF0ZSAiVWx0cmFTdG9yIDE0Ri8zNEYgc3Vw
cG9ydCIKKwlkZXBlbmRzIG9uIElTQSAmJiBTQ1NJICYmIElTQV9ETUFfQVBJCisJLS0taGVscC0t
LQorCSAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgVWx0cmFTdG9yIDE0RiBhbmQgMzRGIFNDU0kt
MiBob3N0IGFkYXB0ZXJzLgorCSAgVGhlIHNvdXJjZSBhdCA8ZmlsZTpkcml2ZXJzL3Njc2kvdTE0
LTM0Zi5jPiBjb250YWlucyBzb21lCisJICBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGhhcmR3YXJl
LiAgSWYgdGhlIGRyaXZlciBkb2Vzbid0IHdvcmsgb3V0IG9mCisJICB0aGUgYm94LCB5b3UgbWF5
IGhhdmUgdG8gY2hhbmdlIHNvbWUgc2V0dGluZ3MgaW4KKwkgIDxmaWxlOiBkcml2ZXJzL3Njc2kv
dTE0LTM0Zi5jPi4gIFJlYWQgdGhlIFNDU0ktSE9XVE8sIGF2YWlsYWJsZSBmcm9tCisJICA8aHR0
cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LiAgTm90ZSB0aGF0IHRoZXJlIGlzIGFs
c28KKwkgIGFub3RoZXIgZHJpdmVyIGZvciB0aGUgc2FtZSBoYXJkd2FyZTogIlVsdHJhU3RvciBT
Q1NJIHN1cHBvcnQiLAorCSAgYmVsb3cuICBZb3Ugc2hvdWxkIHNheSBZIHRvIGJvdGggb25seSBp
ZiB5b3Ugd2FudCAyNEYgc3VwcG9ydCBhcworCSAgd2VsbC4KKworCSAgVG8gY29tcGlsZSB0aGlz
IGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBi
ZSBjYWxsZWQgdTE0LTM0Zi4KKworY29uZmlnIFNDU0lfVTE0XzM0Rl9UQUdHRURfUVVFVUUKKwli
b29sICJlbmFibGUgdGFnZ2VkIGNvbW1hbmQgcXVldWVpbmciCisJZGVwZW5kcyBvbiBTQ1NJX1Ux
NF8zNEYKKwloZWxwCisJICBUaGlzIGlzIGEgZmVhdHVyZSBvZiBTQ1NJLTIgd2hpY2ggaW1wcm92
ZXMgcGVyZm9ybWFuY2U6IHRoZSBob3N0CisJICBhZGFwdGVyIGNhbiBzZW5kIHNldmVyYWwgU0NT
SSBjb21tYW5kcyB0byBhIGRldmljZSdzIHF1ZXVlIGV2ZW4gaWYKKwkgIHByZXZpb3VzIGNvbW1h
bmRzIGhhdmVuJ3QgZmluaXNoZWQgeWV0LgorCSAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSAi
dTE0LTM0Zj10Yzp5IiBib290IG9wdGlvbi4KKworY29uZmlnIFNDU0lfVTE0XzM0Rl9MSU5LRURf
Q09NTUFORFMKKwlib29sICJlbmFibGUgZWxldmF0b3Igc29ydGluZyIKKwlkZXBlbmRzIG9uIFND
U0lfVTE0XzM0RgorCWhlbHAKKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgZWxldmF0b3Igc29ydGlu
ZyBmb3IgYWxsIHByb2JlZCBTQ1NJIGRpc2tzIGFuZAorCSAgQ0QtUk9Ncy4gSXQgZGVmaW5pdGVs
eSByZWR1Y2VzIHRoZSBhdmVyYWdlIHNlZWsgZGlzdGFuY2Ugd2hlbiBkb2luZworCSAgcmFuZG9t
IHNlZWtzLCBidXQgdGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSByZXN1bHQgaW4gYSBub3RpY2Vh
YmxlCisJICBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudDogeW91ciBtaWxlYWdlIG1heSB2YXJ5Li4u
CisJICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlICJ1MTQtMzRmPWxjOnkiIGJvb3Qgb3B0aW9u
LgorCitjb25maWcgU0NTSV9VMTRfMzRGX01BWF9UQUdTCisJaW50ICJtYXhpbXVtIG51bWJlciBv
ZiBxdWV1ZWQgY29tbWFuZHMiCisJZGVwZW5kcyBvbiBTQ1NJX1UxNF8zNEYKKwlkZWZhdWx0ICI4
IgorCWhlbHAKKwkgIFRoaXMgc3BlY2lmaWVzIGhvdyBtYW55IFNDU0kgY29tbWFuZHMgY2FuIGJl
IG1heGltYWxseSBxdWV1ZWQgZm9yCisJICBlYWNoIHByb2JlZCBTQ1NJIGRldmljZS4gWW91IHNo
b3VsZCByZWR1Y2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgOAorCSAgb25seSBpZiB5b3UgaGF2ZSBk
aXNrcyB3aXRoIGJ1Z2d5IG9yIGxpbWl0ZWQgdGFnZ2VkIGNvbW1hbmQgc3VwcG9ydC4KKwkgIE1p
bmltdW0gaXMgMiBhbmQgbWF4aW11bSBpcyAxNC4gVGhpcyB2YWx1ZSBpcyBhbHNvIHRoZSB3aW5k
b3cgc2l6ZQorCSAgdXNlZCBieSB0aGUgZWxldmF0b3Igc29ydGluZyBvcHRpb24gYWJvdmUuIFRo
ZSBlZmZlY3RpdmUgdmFsdWUgdXNlZAorCSAgYnkgdGhlIGRyaXZlciBmb3IgZWFjaCBwcm9iZWQg
U0NTSSBkZXZpY2UgaXMgcmVwb3J0ZWQgYXQgYm9vdCB0aW1lLgorCSAgVGhpcyBpcyBlcXVpdmFs
ZW50IHRvIHRoZSAidTE0LTM0Zj1tcTo4IiBib290IG9wdGlvbi4KKworY29uZmlnIFNDU0lfVUxU
UkFTVE9SCisJdHJpc3RhdGUgIlVsdHJhU3RvciBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBY
ODYgJiYgSVNBICYmIFNDU0kKKwktLS1oZWxwLS0tCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRo
ZSBVbHRyYVN0b3IgMTRGLCAyNEYgYW5kIDM0RiBTQ1NJLTIgaG9zdAorCSAgYWRhcHRlciBmYW1p
bHkuICBUaGlzIGRyaXZlciBpcyBleHBsYWluZWQgaW4gc2VjdGlvbiAzLjEyIG9mIHRoZQorCSAg
U0NTSS1IT1dUTywgYXZhaWxhYmxlIGZyb20KKwkgIDxodHRwOi8vd3d3LnRsZHAub3JnL2RvY3Mu
aHRtbCNob3d0bz4uICBJZiBpdCBkb2Vzbid0IHdvcmsgb3V0CisJICBvZiB0aGUgYm94LCB5b3Ug
bWF5IGhhdmUgdG8gY2hhbmdlIHNvbWUgc2V0dGluZ3MgaW4KKwkgIDxmaWxlOmRyaXZlcnMvc2Nz
aS91bHRyYXN0b3IuaD4uCisKKwkgIE5vdGUgdGhhdCB0aGVyZSBpcyBhbHNvIGFub3RoZXIgZHJp
dmVyIGZvciB0aGUgc2FtZSBoYXJkd2FyZToKKwkgICJVbHRyYVN0b3IgMTRGLzM0RiBzdXBwb3J0
IiwgYWJvdmUuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29z
ZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVsdHJhc3Rvci4KKworY29u
ZmlnIFNDU0lfTlNQMzIKKwl0cmlzdGF0ZSAiV29ya2JpdCBOaW5qYVNDU0ktMzJCaS9VREUgc3Vw
cG9ydCIKKwlkZXBlbmRzIG9uIFBDSSAmJiBTQ1NJICYmICE2NEJJVAorCWhlbHAKKwkgIFRoaXMg
aXMgc3VwcG9ydCBmb3IgdGhlIFdvcmtiaXQgTmluamFTQ1NJLTMyQmkvVURFIFBDSS9DYXJkYnVz
CisJICBTQ1NJIGhvc3QgYWRhcHRlci4gUGxlYXNlIHJlYWQgdGhlIFNDU0ktSE9XVE8sIGF2YWls
YWJsZSBmcm9tCisJICA8aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LgorCisJ
ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUK
KwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBuc3AzMi4KKworY29uZmlnIFNDU0lfREVCVUcKKwl0
cmlzdGF0ZSAiU0NTSSBkZWJ1Z2dpbmcgaG9zdCBzaW11bGF0b3IiCisJZGVwZW5kcyBvbiBTQ1NJ
CisJc2VsZWN0IENSQ19UMTBESUYKKwloZWxwCisJICBUaGlzIGlzIGEgaG9zdCBhZGFwdGVyIHNp
bXVsYXRvciB0aGF0IGNhbiBzaW11bGF0ZSBtdWx0aXBsZSBob3N0cworCSAgZWFjaCB3aXRoIG11
bHRpcGxlIGR1bW15IFNDU0kgZGV2aWNlcyAoZGlza3MpLiBJdCBkZWZhdWx0cyB0byBvbmUKKwkg
IGhvc3QgYWRhcHRlciB3aXRoIG9uZSBkdW1teSBTQ1NJIGRpc2suIEVhY2ggZHVtbXkgZGlzayB1
c2VzIGtlcm5lbAorCSAgUkFNIGFzIHN0b3JhZ2UgKGkuZS4gaXQgaXMgYSByYW1kaXNrKS4gVG8g
c2F2ZSBzcGFjZSB3aGVuIG11bHRpcGxlCisJICBkdW1teSBkaXNrcyBhcmUgc2ltdWxhdGVkLCB0
aGV5IHNoYXJlIHRoZSBzYW1lIGtlcm5lbCBSQU0gZm9yIAorCSAgdGhlaXIgc3RvcmFnZS4gU2Vl
IDxodHRwOi8vc2cuZGFubnkuY3ovc2cvc2RlYnVnMjYuaHRtbD4gZm9yIG1vcmUKKwkgIGluZm9y
bWF0aW9uLiBUaGlzIGRyaXZlciBpcyBwcmltYXJpbHkgb2YgdXNlIHRvIHRob3NlIHRlc3Rpbmcg
dGhlCisJICBTQ1NJIGFuZCBibG9jayBzdWJzeXN0ZW1zLiBJZiB1bnN1cmUsIHNheSBOLgorCitj
b25maWcgU0NTSV9NRVNICisJdHJpc3RhdGUgIk1FU0ggKFBvd2VyIE1hYyBpbnRlcm5hbCBTQ1NJ
KSBzdXBwb3J0IgorCWRlcGVuZHMgb24gUFBDMzIgJiYgUFBDX1BNQUMgJiYgU0NTSQorCWhlbHAK
KwkgIE1hbnkgUG93ZXIgTWFjaW50b3NoZXMgYW5kIGNsb25lcyBoYXZlIGEgTUVTSCAoTWFjaW50
b3NoIEVuaGFuY2VkCisJICBTQ1NJIEhhcmR3YXJlKSBTQ1NJIGJ1cyBhZGFwdG9yICh0aGUgNzIw
MCBkb2Vzbid0LCBidXQgYWxsIG9mIHRoZQorCSAgb3RoZXIgUG93ZXIgTWFjaW50b3NoZXMgZG8p
LiBTYXkgWSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoaXMgU0NTSQorCSAgYWRhcHRvci4KKwor
CSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhl
CisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbWVzaC4KKworY29uZmlnIFNDU0lfTUVTSF9TWU5D
X1JBVEUKKwlpbnQgIm1heGltdW0gc3luY2hyb25vdXMgdHJhbnNmZXIgcmF0ZSAoTUIvcykgKDAg
PSBhc3luYykiCisJZGVwZW5kcyBvbiBTQ1NJX01FU0gKKwlkZWZhdWx0ICI1IgorCWhlbHAKKwkg
IE9uIFBvd2VyIE1hY2ludG9zaGVzIChhbmQgY2xvbmVzKSB3aGVyZSB0aGUgTUVTSCBTQ1NJIGJ1
cyBhZGFwdG9yCisJICBkcml2ZXMgYSBidXMgd2hpY2ggaXMgZW50aXJlbHkgaW50ZXJuYWwgdG8g
dGhlIG1hY2hpbmUgKHN1Y2ggYXMgdGhlCisJICA3NTAwLCA3NjAwLCA4NTAwLCBldGMuKSwgdGhl
IE1FU0ggaXMgY2FwYWJsZSBvZiBzeW5jaHJvbm91cworCSAgb3BlcmF0aW9uIGF0IHVwIHRvIDEw
IE1CL3MuIE9uIG1hY2hpbmVzIHdoZXJlIHRoZSBTQ1NJIGJ1cworCSAgY29udHJvbGxlZCBieSB0
aGUgTUVTSCBjYW4gaGF2ZSBleHRlcm5hbCBkZXZpY2VzIGNvbm5lY3RlZCwgaXQgaXMKKwkgIHVz
dWFsbHkgcmF0ZWQgYXQgNSBNQi9zLiA1IGlzIGEgc2FmZSB2YWx1ZSBoZXJlIHVubGVzcyB5b3Ug
a25vdyB0aGUKKwkgIE1FU0ggU0NTSSBidXMgaXMgaW50ZXJuYWwgb25seTsgaW4gdGhhdCBjYXNl
IHlvdSBjYW4gc2F5IDEwLiBTYXkgMAorCSAgdG8gZGlzYWJsZSBzeW5jaHJvbm91cyBvcGVyYXRp
b24uCisKK2NvbmZpZyBTQ1NJX01FU0hfUkVTRVRfREVMQVlfTVMKKwlpbnQgImluaXRpYWwgYnVz
IHJlc2V0IGRlbGF5IChtcykgKDAgPSBubyByZXNldCkiCisJZGVwZW5kcyBvbiBTQ1NJX01FU0gK
KwlkZWZhdWx0ICI0MDAwIgorCitjb25maWcgU0NTSV9NQUM1M0M5NAorCXRyaXN0YXRlICI1M0M5
NCAoUG93ZXIgTWFjIGV4dGVybmFsIFNDU0kpIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQUEMzMiAm
JiBQUENfUE1BQyAmJiBTQ1NJCisJaGVscAorCSAgT24gUG93ZXIgTWFjaW50b3NoZXMgKGFuZCBj
bG9uZXMpIHdpdGggdHdvIFNDU0kgYnVzZXMsIHRoZSBleHRlcm5hbAorCSAgU0NTSSBidXMgaXMg
dXN1YWxseSBjb250cm9sbGVkIGJ5IGEgNTNDOTQgU0NTSSBidXMgYWRhcHRvci4gT2xkZXIKKwkg
IG1hY2hpbmVzIHdoaWNoIG9ubHkgaGF2ZSBvbmUgU0NTSSBidXMsIHN1Y2ggYXMgdGhlIDcyMDAs
IGFsc28gdXNlCisJICB0aGUgNTNDOTQuIFNheSBZIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhl
IDUzQzk0LgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2Ug
TSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtYWM1M2M5NC4KKworc291cmNl
ICJkcml2ZXJzL3Njc2kvYXJtL0tjb25maWciCisKK2NvbmZpZyBKQVpaX0VTUAorCWJvb2wgIk1J
UFMgSkFaWiBGQVMyMTYgU0NTSSBzdXBwb3J0IgorCWRlcGVuZHMgb24gTUFDSF9KQVpaICYmIFND
U0kKKwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwloZWxwCisJICBUaGlzIGlzIHRoZSBkcml2ZXIg
Zm9yIHRoZSBvbmJvYXJkIFNDU0kgaG9zdCBhZGFwdGVyIG9mIE1JUFMgTWFnbnVtCisJICA0MDAw
LCBBY2VyIFBJQ0EsIE9saXZldHRpIE03MDAtMTAgYW5kIGEgZmV3IG90aGVyIGlkZW50aWNhbCBP
RU0KKwkgIHN5c3RlbXMuCisKK2NvbmZpZyBBMzAwMF9TQ1NJCisJdHJpc3RhdGUgIkEzMDAwIFdE
MzNDOTNBIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBTUlHQSAmJiBTQ1NJCisJaGVscAorCSAgSWYg
eW91IGhhdmUgYW4gQW1pZ2EgMzAwMCBhbmQgaGF2ZSBTQ1NJIGRldmljZXMgY29ubmVjdGVkIHRv
IHRoZQorCSAgYnVpbHQtaW4gU0NTSSBjb250cm9sbGVyLCBzYXkgWS4gT3RoZXJ3aXNlLCBzYXkg
Ti4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVy
ZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTMwMDAuCisKK2NvbmZpZyBBMjA5MV9T
Q1NJCisJdHJpc3RhdGUgIkEyMDkxL0E1OTAgV0QzM0M5M0Egc3VwcG9ydCIKKwlkZXBlbmRzIG9u
IFpPUlJPICYmIFNDU0kKKwloZWxwCisJICBJZiB5b3UgaGF2ZSBhIENvbW1vZG9yZSBBMjA5MSBT
Q1NJIGNvbnRyb2xsZXIsIHNheSBZLiBPdGhlcndpc2UsCisJICBzYXkgTi4KKworCSAgVG8gY29t
cGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJICBtb2R1
bGUgd2lsbCBiZSBjYWxsZWQgYTIwOTEuCisKK2NvbmZpZyBHVlAxMV9TQ1NJCisJdHJpc3RhdGUg
IkdWUCBTZXJpZXMgSUkgV0QzM0M5M0Egc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFpPUlJPICYmIFND
U0kKKwktLS1oZWxwLS0tCisJICBJZiB5b3UgaGF2ZSBhIEdyZWF0IFZhbGxleSBQcm9kdWN0cyBT
ZXJpZXMgSUkgU0NTSSBjb250cm9sbGVyLAorCSAgYW5zd2VyIFkuIEFsc28gc2F5IFkgaWYgeW91
IGhhdmUgYSBsYXRlciBtb2RlbCBvZiBHVlAgU0NTSQorCSAgY29udHJvbGxlciAoc3VjaCBhcyB0
aGUgR1ZQIEE0MDA4IG9yIGEgQ29tYm8gYm9hcmQpLiBPdGhlcndpc2UsCisJICBhbnN3ZXIgTi4g
VGhpcyBkcml2ZXIgZG9lcyBOT1Qgd29yayBmb3IgdGhlIFQtUmV4IHNlcmllcyBvZgorCSAgYWNj
ZWxlcmF0b3JzIGZyb20gVGVrTWFnaWMgYW5kIEdWUC1NLgorCisJICBUbyBjb21waWxlIHRoaXMg
ZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJl
IGNhbGxlZCBndnAxMS4KKworY29uZmlnIFNDU0lfQTQwMDBUCisJdHJpc3RhdGUgIkE0MDAwVCBO
Q1I1M2M3MTAgU0NTSSBzdXBwb3J0IChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gQU1JR0Eg
JiYgU0NTSSAmJiBFWFBFUklNRU5UQUwKKwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwloZWxwCisJ
ICBJZiB5b3UgaGF2ZSBhbiBBbWlnYSA0MDAwVCBhbmQgaGF2ZSBTQ1NJIGRldmljZXMgY29ubmVj
dGVkIHRvIHRoZQorCSAgYnVpbHQtaW4gU0NTSSBjb250cm9sbGVyLCBzYXkgWS4gT3RoZXJ3aXNl
LCBzYXkgTi4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3Nl
IE0gaGVyZTogdGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTQwMDB0LgorCitjb25maWcg
U0NTSV9aT1JSTzdYWAorCXRyaXN0YXRlICJab3JybyBOQ1I1M2M3MTAgU0NTSSBzdXBwb3J0IChF
WFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gWk9SUk8gJiYgU0NTSSAmJiBFWFBFUklNRU5UQUwK
KwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwloZWxwCisJICBTdXBwb3J0IGZvciB2YXJpb3VzIE5D
UjUzYzcxMC1iYXNlZCBTQ1NJIGNvbnRyb2xsZXJzIG9uIFpvcnJvCisJICBleHBhbnNpb24gYm9h
cmRzIGZvciB0aGUgQW1pZ2EuCisJICBUaGlzIGluY2x1ZGVzOgorCSAgICAtIHRoZSBBbWlnYSA0
MDkxIFpvcnJvIElJSSBTQ1NJLTIgY29udHJvbGxlciwKKwkgICAgLSB0aGUgTWFjcm9TeXN0ZW0g
RGV2ZWxvcG1lbnQncyBXYXJwRW5naW5lIEFtaWdhIFNDU0ktMiBjb250cm9sbGVyCisJICAgICAg
KGluZm8gYXQKKwkgICAgICA8aHR0cDovL3d3dy5seXNhdG9yLmxpdS5zZS9hbWlnYS9hci9ndWlk
ZS9hcjMxMC5ndWlkZT9GRUFUVVJFNT4pLAorCSAgICAtIHRoZSBTQ1NJIGNvbnRyb2xsZXIgb24g
dGhlIFBoYXNlNSBCbGl6emFyZCBQb3dlclVQIDYwM2UrCisJICAgICAgYWNjZWxlcmF0b3IgY2Fy
ZCBmb3IgdGhlIEFtaWdhIDEyMDAsCisJICAgIC0gdGhlIFNDU0kgY29udHJvbGxlciBvbiB0aGUg
R1ZQIFR1cmJvIDA0MC8wNjAgYWNjZWxlcmF0b3IuCisKK2NvbmZpZyBBVEFSSV9TQ1NJCisJdHJp
c3RhdGUgIkF0YXJpIG5hdGl2ZSBTQ1NJIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBVEFSSSAmJiBT
Q1NJCisJc2VsZWN0IFNDU0lfU1BJX0FUVFJTCisJc2VsZWN0IE5WUkFNCisJLS0taGVscC0tLQor
CSAgSWYgeW91IGhhdmUgYW4gQXRhcmkgd2l0aCBidWlsdC1pbiBOQ1I1MzgwIFNDU0kgY29udHJv
bGxlciAoVFQsCisJICBGYWxjb24sIC4uLikgc2F5IFkgdG8gZ2V0IGl0IHN1cHBvcnRlZC4gT2Yg
Y291cnNlIGFsc28sIGlmIHlvdSBoYXZlCisJICBhIGNvbXBhdGlibGUgU0NTSSBjb250cm9sbGVy
IChlLmcuIGZvciBNZWR1c2EpLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9k
dWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhdGFyaV9z
Y3NpLgorCisJICBUaGlzIGRyaXZlciBzdXBwb3J0cyBib3RoIHN0eWxlcyBvZiBOQ1IgaW50ZWdy
YXRpb24gaW50byB0aGUKKwkgIHN5c3RlbTogdGhlIFRUIHN0eWxlIChzZXBhcmF0ZSBETUEpLCBh
bmQgdGhlIEZhbGNvbiBzdHlsZSAodmlhCisJICBTVC1ETUEsIHJlcGxhY2luZyBBQ1NJKS4gIEl0
IGRvZXMgTk9UIHN1cHBvcnQgb3RoZXIgc2NoZW1lcywgbGlrZQorCSAgaW4gdGhlIEhhZGVzICh3
aXRob3V0IERNQSkuCisKK2NvbmZpZyBBVEFSSV9TQ1NJX1RPU0hJQkFfREVMQVkKKwlib29sICJM
b25nIGRlbGF5cyBmb3IgVG9zaGliYSBDRC1ST01zIgorCWRlcGVuZHMgb24gQVRBUklfU0NTSQor
CWhlbHAKKwkgIFRoaXMgb3B0aW9uIGluY3JlYXNlcyB0aGUgZGVsYXkgYWZ0ZXIgYSBTQ1NJIGFy
Yml0cmF0aW9uIHRvCisJICBhY2NvbW1vZGF0ZSBzb21lIGZsYWt5IFRvc2hpYmEgQ0QtUk9NIGRy
aXZlcy4gU2F5IFkgaWYgeW91IGludGVuZCB0bworCSAgdXNlIGEgVG9zaGliYSBDRC1ST00gZHJp
dmU7IG90aGVyd2lzZSwgdGhlIG9wdGlvbiBpcyBub3QgbmVlZGVkIGFuZAorCSAgd291bGQgaW1w
YWN0IHBlcmZvcm1hbmNlIGEgYml0LCBzbyBzYXkgTi4KKworY29uZmlnIEFUQVJJX1NDU0lfUkVT
RVRfQk9PVAorCWJvb2wgIlJlc2V0IFNDU0ktZGV2aWNlcyBhdCBib290dGltZSIKKwlkZXBlbmRz
IG9uIEFUQVJJX1NDU0kKKwloZWxwCisJICBSZXNldCB0aGUgZGV2aWNlcyBvbiB5b3VyIEF0YXJp
IHdoZW5ldmVyIGl0IGJvb3RzLiAgVGhpcyBtYWtlcyB0aGUKKwkgIGJvb3QgcHJvY2VzcyBmcmFj
dGlvbmFsbHkgbG9uZ2VyIGJ1dCBtYXkgYXNzaXN0IHJlY292ZXJ5IGZyb20gZXJyb3JzCisJICB0
aGF0IGxlYXZlIHRoZSBkZXZpY2VzIHdpdGggU0NTSSBvcGVyYXRpb25zIHBhcnR3YXkgY29tcGxl
dGVkLgorCitjb25maWcgTUFDX1NDU0kKKwlib29sICJNYWNpbnRvc2ggTkNSNTM4MCBTQ1NJIgor
CWRlcGVuZHMgb24gTUFDICYmIFNDU0k9eQorCXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCWhlbHAK
KwkgIFRoaXMgaXMgdGhlIE5DUiA1MzgwIFNDU0kgY29udHJvbGxlciBpbmNsdWRlZCBvbiBtb3N0
IG9mIHRoZSA2ODAzMAorCSAgYmFzZWQgTWFjaW50b3NoZXMuICBJZiB5b3UgaGF2ZSBvbmUgb2Yg
dGhlc2Ugc2F5IFkgYW5kIHJlYWQgdGhlCisJICBTQ1NJLUhPV1RPLCBhdmFpbGFibGUgZnJvbQor
CSAgPGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvPi4KKworY29uZmlnIFNDU0lf
TUFDX0VTUAorCXRyaXN0YXRlICJNYWNpbnRvc2ggTkNSNTNjOVs0Nl0gU0NTSSIKKwlkZXBlbmRz
IG9uIE1BQyAmJiBTQ1NJCisJc2VsZWN0IFNDU0lfU1BJX0FUVFJTCisJaGVscAorCSAgVGhpcyBp
cyB0aGUgTkNSIDUzYzl4IFNDU0kgY29udHJvbGxlciBmb3VuZCBvbiBtb3N0IG9mIHRoZSA2ODA0
MAorCSAgYmFzZWQgTWFjaW50b3NoZXMuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMg
YSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIG1h
Y19lc3AuCisKK2NvbmZpZyBNVk1FMTQ3X1NDU0kKKwlib29sICJXRDMzQzkzIFNDU0kgZHJpdmVy
IGZvciBNVk1FMTQ3IgorCWRlcGVuZHMgb24gTVZNRTE0NyAmJiBTQ1NJPXkKKwlzZWxlY3QgU0NT
SV9TUElfQVRUUlMKKwloZWxwCisJICBTdXBwb3J0IGZvciB0aGUgb24tYm9hcmQgU0NTSSBjb250
cm9sbGVyIG9uIHRoZSBNb3Rvcm9sYSBNVk1FMTQ3CisJICBzaW5nbGUtYm9hcmQgY29tcHV0ZXIu
CisKK2NvbmZpZyBNVk1FMTZ4X1NDU0kKKwl0cmlzdGF0ZSAiTkNSNTNDNzEwIFNDU0kgZHJpdmVy
IGZvciBNVk1FMTZ4IgorCWRlcGVuZHMgb24gTVZNRTE2eCAmJiBTQ1NJCisJc2VsZWN0IFNDU0lf
U1BJX0FUVFJTCisJaGVscAorCSAgVGhlIE1vdG9yb2xhIE1WTUUxNjIsIDE2NiwgMTY3LCAxNzIg
YW5kIDE3NyBib2FyZHMgdXNlIHRoZSBOQ1I1M0M3MTAKKwkgIFNDU0kgY29udHJvbGxlciBjaGlw
LiAgQWxtb3N0IGV2ZXJ5b25lIHVzaW5nIG9uZSBvZiB0aGVzZSBib2FyZHMKKwkgIHdpbGwgd2Fu
dCB0byBzYXkgWSB0byB0aGlzIHF1ZXN0aW9uLgorCitjb25maWcgQlZNRTYwMDBfU0NTSQorCXRy
aXN0YXRlICJOQ1I1M0M3MTAgU0NTSSBkcml2ZXIgZm9yIEJWTUU2MDAwIgorCWRlcGVuZHMgb24g
QlZNRTYwMDAgJiYgU0NTSQorCXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCWhlbHAKKwkgIFRoZSBC
Vk1FNDAwMCBhbmQgQlZNRTYwMDAgYm9hcmRzIGZyb20gQlZNIEx0ZCB1c2UgdGhlIE5DUjUzQzcx
MAorCSAgU0NTSSBjb250cm9sbGVyIGNoaXAuICBBbG1vc3QgZXZlcnlvbmUgdXNpbmcgb25lIG9m
IHRoZXNlIGJvYXJkcworCSAgd2lsbCB3YW50IHRvIHNheSBZIHRvIHRoaXMgcXVlc3Rpb24uCisK
K2NvbmZpZyBTVU4zX1NDU0kKKwl0cmlzdGF0ZSAiU3VuMyBOQ1I1MzgwIFNDU0kiCisJZGVwZW5k
cyBvbiBTVU4zICYmIFNDU0kKKwlzZWxlY3QgU0NTSV9TUElfQVRUUlMKKwloZWxwCisJICBUaGlz
IG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgT0JJTyAob25ib2FyZCBpbykgTkNS
NTM4MAorCSAgU0NTSSBjb250cm9sbGVyIGZvdW5kIGluIHRoZSBTdW4gMy81MCBhbmQgMy82MCwg
YXMgd2VsbCBhcyBmb3IKKwkgICJTdW4zIiB0eXBlIFZNRSBzY3NpIGNvbnRyb2xsZXJzIGFsc28g
YmFzZWQgb24gdGhlIE5DUjUzODAuCisJICBHZW5lcmFsIExpbnV4IGluZm9ybWF0aW9uIG9uIHRo
ZSBTdW4gMyBzZXJpZXMgKG5vdyBkaXNjb250aW51ZWQpCisJICBpcyBhdCA8aHR0cDovL3d3dy5h
bmdlbGZpcmUuY29tL2NhMi90ZWNoNjhrL3N1bjMuaHRtbD4uCisKK2NvbmZpZyBTVU4zWF9FU1AK
Kwlib29sICJTdW4zeCBFU1AgU0NTSSIKKwlkZXBlbmRzIG9uIFNVTjNYICYmIFNDU0k9eQorCXNl
bGVjdCBTQ1NJX1NQSV9BVFRSUworCWhlbHAKKwkgIFRoZSBFU1Agd2FzIGFuIG9uLWJvYXJkIFND
U0kgY29udHJvbGxlciB1c2VkIG9uIFN1biAzLzgwCisJICBtYWNoaW5lcy4gIFNheSBZIGhlcmUg
dG8gY29tcGlsZSBpbiBzdXBwb3J0IGZvciBpdC4KKworY29uZmlnIFNDU0lfU1VORVNQCisJdHJp
c3RhdGUgIlNwYXJjIEVTUCBTY3NpIERyaXZlciIKKwlkZXBlbmRzIG9uIFNCVVMgJiYgU0NTSQor
CXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCWhlbHAKKwkgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3Ig
dGhlIFN1biBFU1AgU0NTSSBob3N0IGFkYXB0ZXIuIFRoZSBFU1AKKwkgIGNoaXBzZXQgaXMgcHJl
c2VudCBpbiBtb3N0IFNQQVJDIFNCVVMtYmFzZWQgY29tcHV0ZXJzIGFuZAorCSAgc3VwcG9ydHMg
dGhlIEVtdWxleCBmYW1pbHkgb2YgRVNQIFNDU0kgY2hpcHMgKGVzcDEwMCwgZXNwMTAwQSwKKwkg
IGVzcDIzNiwgZmFzMTAxLCBmYXMyMzYpIGFzIHdlbGwgYXMgdGhlIFFsb2dpYyBmYXMzNjYgU0NT
SSBjaGlwLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2Ug
TSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzdW5fZXNwLgorCitjb25maWcg
WkZDUAorCXRyaXN0YXRlICJGQ1AgaG9zdCBidXMgYWRhcHRlciBkcml2ZXIgZm9yIElCTSBlU2Vy
dmVyIHpTZXJpZXMiCisJZGVwZW5kcyBvbiBTMzkwICYmIFFESU8gJiYgU0NTSQorCXNlbGVjdCBT
Q1NJX0ZDX0FUVFJTCisJaGVscAorICAgICAgICAgIElmIHlvdSB3YW50IHRvIGFjY2VzcyBTQ1NJ
IGRldmljZXMgYXR0YWNoZWQgdG8geW91ciBJQk0gZVNlcnZlcgorICAgICAgICAgIHpTZXJpZXMg
YnkgbWVhbnMgb2YgRmlicmUgQ2hhbm5lbCBpbnRlcmZhY2VzIHNheSBZLgorICAgICAgICAgIEZv
ciBkZXRhaWxzIHBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBwcm92aWRlZCBieSBJ
Qk0gYXQKKyAgICAgICAgICA8aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3Blcndv
cmtzL29wZW5zb3VyY2UvbGludXgzOTA+CisKKyAgICAgICAgICBUaGlzIGRyaXZlciBpcyBhbHNv
IGF2YWlsYWJsZSBhcyBhIG1vZHVsZS4gVGhpcyBtb2R1bGUgd2lsbCBiZQorICAgICAgICAgIGNh
bGxlZCB6ZmNwLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBzYXkgTSBo
ZXJlCisgICAgICAgICAgYW5kIHJlYWQgPGZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxl
cy50eHQ+LgorCitjb25maWcgU0NTSV9QTUNSQUlECisJdHJpc3RhdGUgIlBNQyBTSUVSUkEgTGlu
dXggTWF4UkFJRCBhZGFwdGVyIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSSAmJiBO
RVQKKwktLS1oZWxwLS0tCisJICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgUE1DIFNJRVJSQSBN
YXhSQUlEIGFkYXB0ZXJzLgorCitjb25maWcgU0NTSV9QTTgwMDEKKwl0cmlzdGF0ZSAiUE1DLVNp
ZXJyYSBTUEMgODAwMSBTQVMvU0FUQSBCYXNlZCBIb3N0IEFkYXB0ZXIgZHJpdmVyIgorCWRlcGVu
ZHMgb24gUENJICYmIFNDU0kKKwlzZWxlY3QgU0NTSV9TQVNfTElCU0FTCisJaGVscAorCSAgVGhp
cyBkcml2ZXIgc3VwcG9ydHMgUE1DLVNpZXJyYSBQQ0lFIFNBUy9TQVRBIDh4NkcgU1BDIDgwMDEg
Y2hpcAorCSAgYmFzZWQgaG9zdCBhZGFwdGVycy4KKworY29uZmlnIFNDU0lfU1JQCisJdHJpc3Rh
dGUgIlNDU0kgUkRNQSBQcm90b2NvbCBoZWxwZXIgbGlicmFyeSIKKwlkZXBlbmRzIG9uIFNDU0kg
JiYgUENJCisJc2VsZWN0IFNDU0lfVEdUCisJaGVscAorCSAgSWYgeW91IHdpc2ggdG8gdXNlIFNS
UCB0YXJnZXQgZHJpdmVycywgc2F5IFkuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMg
YSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxp
YnNycC4KKworY29uZmlnIFNDU0lfQkZBX0ZDCisJdHJpc3RhdGUgIkJyb2NhZGUgQkZBIEZpYnJl
IENoYW5uZWwgU3VwcG9ydCIKKwlkZXBlbmRzIG9uIFBDSSAmJiBTQ1NJCisJc2VsZWN0IFNDU0lf
RkNfQVRUUlMKKwloZWxwCisJICBUaGlzIGJmYSBkcml2ZXIgc3VwcG9ydHMgYWxsIEJyb2NhZGUg
UENJZSBGQy9GQ09FIGhvc3QgYWRhcHRlcnMuCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIg
YXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbAorCSAgYmUgY2FsbGVk
IGJmYS4KKworZW5kaWYgIyBTQ1NJX0xPV0xFVkVMCisKK3NvdXJjZSAiZHJpdmVycy9zY3NpL3Bj
bWNpYS9LY29uZmlnIgorCitzb3VyY2UgImRyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9LY29u
ZmlnIgorCitzb3VyY2UgImRyaXZlcnMvc2NzaS9vc2QvS2NvbmZpZyIKKworZW5kbWVudQpkaWZm
IC1ydXBOIHhlbi9kcml2ZXJzL3Njc2kvTWFrZWZpbGUgeGVuYy9kcml2ZXJzL3Njc2kvTWFrZWZp
bGUKLS0tIHhlbi9kcml2ZXJzL3Njc2kvTWFrZWZpbGUJMjAxMi0wMi0yNCAxNToxMjozOS43MjU2
NDQ5NjYgLTA3MDAKKysrIHhlbmMvZHJpdmVycy9zY3NpL01ha2VmaWxlCTIwMTItMDItMjQgMTU6
MTk6MzUuMzE1NjQ0OTMzIC0wNzAwCkBAIC0xNDEsNiArMTQxLDggQEAgb2JqLSQoQ09ORklHX1ND
U0lfQ1hHQjRfSVNDU0kpCSs9IGxpYmlzYwogb2JqLSQoQ09ORklHX1NDU0lfQk5YMl9JU0NTSSkJ
Kz0gbGliaXNjc2kubyBibngyaS8KIG9iai0kKENPTkZJR19CRTJJU0NTSSkJCSs9IGxpYmlzY3Np
Lm8gYmUyaXNjc2kvCiBvYmotJChDT05GSUdfU0NTSV9QTUNSQUlEKQkrPSBwbWNyYWlkLm8KK29i
ai0kKENPTkZJR19YRU5fU0NTSV9GUk9OVEVORCkJKz0geGVuLXNjc2lmcm9udC8KK29iai0kKENP
TkZJR19YRU5fU0NTSV9CQUNLRU5EKQkrPSB4ZW4tc2NzaWJhY2svCiBvYmotJChDT05GSUdfVk1X
QVJFX1BWU0NTSSkJKz0gdm13X3B2c2NzaS5vCiAKIG9iai0kKENPTkZJR19BUk0pCQkrPSBhcm0v
CmRpZmYgLXJ1cE4geGVuL2RyaXZlcnMvc2NzaS9NYWtlZmlsZS5vcmlnIHhlbmMvZHJpdmVycy9z
Y3NpL01ha2VmaWxlLm9yaWcKLS0tIHhlbi9kcml2ZXJzL3Njc2kvTWFrZWZpbGUub3JpZwkxOTY5
LTEyLTMxIDE3OjAwOjAwLjAwMDAwMDAwMCAtMDcwMAorKysgeGVuYy9kcml2ZXJzL3Njc2kvTWFr
ZWZpbGUub3JpZwkyMDEyLTAyLTI0IDE1OjEyOjM5LjcyNTY0NDk2NiAtMDcwMApAQCAtMCwwICsx
LDIwMCBAQAorIworIyBNYWtlZmlsZSBmb3IgbGludXgvZHJpdmVycy9zY3NpCisjCisjIDMwIE1h
eSAyMDAwLCBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGluZnJhZGVhZC5vcmc+CisjIFJld3JpdHRl
biB0byB1c2UgbGlzdHMgaW5zdGVhZCBvZiBpZi1zdGF0ZW1lbnRzLgorIworIyAyMCBTZXAgMjAw
MCwgVG9yYmVuIE1hdGhpYXNlbiA8dG1tQGltYWdlLmRrPgorIyBDaGFuZ2VkIGxpbmsgb3JkZXIg
dG8gcmVmbGVjdCBuZXcgc2NzaSBpbml0aWFsaXphdGlvbi4KKyMKKyMgKiEqISohKiEqISohKiEq
ISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqIQorIyBUaGUg
bGluayBvcmRlciBtdXN0IGJlLCBTQ1NJIENvcmUsIFNDU0kgSEJBIGRyaXZlcnMsIGFuZAorIyBs
YXN0bHkgU0NTSSBwZXJpcGhlcmFsIGRyaXZlcnMgKGRpc2svdGFwZS9jZHJvbS9ldGMuKSB0bwor
IyBzYXRpc2Z5IGNlcnRhaW4gaW5pdGlhbGl6YXRpb24gYXNzdW1wdGlvbnMgaW4gdGhlIFNDU0kg
bGF5ZXIuCisjICohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEqISohKiEq
ISohKiEqISohKiEqISohKiEKKworCitDRkxBR1NfYWhhMTUyeC5vID0gICAtREFIQTE1MlhfU1RB
VCAtREFVVE9DT05GCitDRkxBR1NfZ2R0aC5vICAgID0gIyAtRERFQlVHX0dEVEg9MiAtRF9fU0VS
SUFMX18gLURfX0NPTTJfXyAtREdEVEhfU1RBVElTVElDUworCitvYmotJChDT05GSUdfUENNQ0lB
KQkJKz0gcGNtY2lhLworCitvYmotJChDT05GSUdfU0NTSSkJCSs9IHNjc2lfbW9kLm8KK29iai0k
KENPTkZJR19TQ1NJX1RHVCkJCSs9IHNjc2lfdGd0Lm8KKworb2JqLSQoQ09ORklHX1JBSURfQVRU
UlMpCSs9IHJhaWRfY2xhc3MubworCisjIC0tLSBOT1RFIE9SREVSSU5HIEhFUkUgLS0tCisjIEZv
ciBrZXJuZWwgbm9uLW1vZHVsYXIgbGluaywgdHJhbnNwb3J0IGF0dHJpYnV0ZXMgbmVlZCB0bwor
IyBiZSBpbml0aWFsaXNlZCBiZWZvcmUgZHJpdmVycworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorb2JqLSQoQ09ORklHX1NDU0lfU1BJX0FUVFJTKQkrPSBzY3NpX3RyYW5zcG9ydF9zcGku
bworb2JqLSQoQ09ORklHX1NDU0lfRkNfQVRUUlMpIAkrPSBzY3NpX3RyYW5zcG9ydF9mYy5vCitv
YmotJChDT05GSUdfU0NTSV9JU0NTSV9BVFRSUykJKz0gc2NzaV90cmFuc3BvcnRfaXNjc2kubwor
b2JqLSQoQ09ORklHX1NDU0lfU0FTX0FUVFJTKQkrPSBzY3NpX3RyYW5zcG9ydF9zYXMubworb2Jq
LSQoQ09ORklHX1NDU0lfU0FTX0xJQlNBUykJKz0gbGlic2FzLworb2JqLSQoQ09ORklHX1NDU0lf
U1JQX0FUVFJTKQkrPSBzY3NpX3RyYW5zcG9ydF9zcnAubworb2JqLSQoQ09ORklHX1NDU0lfREgp
CQkrPSBkZXZpY2VfaGFuZGxlci8KKworb2JqLSQoQ09ORklHX0xJQkZDKQkJKz0gbGliZmMvCitv
YmotJChDT05GSUdfTElCRkNPRSkJCSs9IGZjb2UvCitvYmotJChDT05GSUdfRkNPRSkJCSs9IGZj
b2UvCitvYmotJChDT05GSUdfRkNPRV9GTklDKQkJKz0gZm5pYy8KK29iai0kKENPTkZJR19TQ1NJ
X0JOWDJYX0ZDT0UpCSs9IGxpYmZjLyBmY29lLyBibngyZmMvCitvYmotJChDT05GSUdfSVNDU0lf
VENQKSAJKz0gbGliaXNjc2kubwlsaWJpc2NzaV90Y3AubyBpc2NzaV90Y3Aubworb2JqLSQoQ09O
RklHX0lORklOSUJBTkRfSVNFUikgCSs9IGxpYmlzY3NpLm8KK29iai0kKENPTkZJR19JU0NTSV9C
T09UX1NZU0ZTKQkrPSBpc2NzaV9ib290X3N5c2ZzLm8KK29iai0kKENPTkZJR19TQ1NJX0E0MDAw
VCkJKz0gNTNjNzAwLm8JYTQwMDB0Lm8KK29iai0kKENPTkZJR19TQ1NJX1pPUlJPN1hYKQkrPSA1
M2M3MDAubwl6b3Jybzd4eC5vCitvYmotJChDT05GSUdfQTMwMDBfU0NTSSkJKz0gYTMwMDAubwl3
ZDMzYzkzLm8KK29iai0kKENPTkZJR19BMjA5MV9TQ1NJKQkrPSBhMjA5MS5vCXdkMzNjOTMubwor
b2JqLSQoQ09ORklHX0dWUDExX1NDU0kpCSs9IGd2cDExLm8Jd2QzM2M5My5vCitvYmotJChDT05G
SUdfTVZNRTE0N19TQ1NJKQkrPSBtdm1lMTQ3Lm8Jd2QzM2M5My5vCitvYmotJChDT05GSUdfU0dJ
V0Q5M19TQ1NJKQkrPSBzZ2l3ZDkzLm8Jd2QzM2M5My5vCitvYmotJChDT05GSUdfQVRBUklfU0NT
SSkJKz0gYXRhcmlfc2NzaS5vCitvYmotJChDT05GSUdfTUFDX1NDU0kpCQkrPSBtYWNfc2NzaS5v
CitvYmotJChDT05GSUdfU0NTSV9NQUNfRVNQKQkrPSBlc3Bfc2NzaS5vCW1hY19lc3Aubworb2Jq
LSQoQ09ORklHX1NVTjNfU0NTSSkJCSs9IHN1bjNfc2NzaS5vICBzdW4zX3Njc2lfdm1lLm8KK29i
ai0kKENPTkZJR19NVk1FMTZ4X1NDU0kpCSs9IDUzYzcwMC5vCW12bWUxNnhfc2NzaS5vCitvYmot
JChDT05GSUdfQlZNRTYwMDBfU0NTSSkJKz0gNTNjNzAwLm8JYnZtZTYwMDBfc2NzaS5vCitvYmot
JChDT05GSUdfU0NTSV9TSU03MTApCSs9IDUzYzcwMC5vCXNpbTcxMC5vCitvYmotJChDT05GSUdf
U0NTSV9BRFZBTlNZUykJKz0gYWR2YW5zeXMubworb2JqLSQoQ09ORklHX1NDU0lfQlVTTE9HSUMp
CSs9IEJ1c0xvZ2ljLm8KK29iai0kKENPTkZJR19TQ1NJX0RQVF9JMk8pCSs9IGRwdF9pMm8ubwor
b2JqLSQoQ09ORklHX1NDU0lfVTE0XzM0RikJKz0gdTE0LTM0Zi5vCitvYmotJChDT05GSUdfU0NT
SV9BUkNNU1IpCSs9IGFyY21zci8KK29iai0kKENPTkZJR19TQ1NJX1VMVFJBU1RPUikJKz0gdWx0
cmFzdG9yLm8KK29iai0kKENPTkZJR19TQ1NJX0FIQTE1MlgpCSs9IGFoYTE1Mngubworb2JqLSQo
Q09ORklHX1NDU0lfQUhBMTU0MikJKz0gYWhhMTU0Mi5vCitvYmotJChDT05GSUdfU0NTSV9BSEEx
NzQwKQkrPSBhaGExNzQwLm8KK29iai0kKENPTkZJR19TQ1NJX0FJQzdYWFgpCSs9IGFpYzd4eHgv
CitvYmotJChDT05GSUdfU0NTSV9BSUM3OVhYKQkrPSBhaWM3eHh4Lworb2JqLSQoQ09ORklHX1ND
U0lfQUFDUkFJRCkJKz0gYWFjcmFpZC8KK29iai0kKENPTkZJR19TQ1NJX0FJQzdYWFhfT0xEKQkr
PSBhaWM3eHh4X29sZC5vCitvYmotJChDT05GSUdfU0NTSV9BSUM5NFhYKQkrPSBhaWM5NHh4Lwor
b2JqLSQoQ09ORklHX1NDU0lfUE04MDAxKQkrPSBwbTgwMDEvCitvYmotJChDT05GSUdfU0NTSV9J
U0NJKQkJKz0gaXNjaS8KK29iai0kKENPTkZJR19TQ1NJX0lQUykJCSs9IGlwcy5vCitvYmotJChD
T05GSUdfU0NTSV9GRF9NQ1MpCSs9IGZkX21jcy5vCitvYmotJChDT05GSUdfU0NTSV9GVVRVUkVf
RE9NQUlOKSs9IGZkb21haW4ubworb2JqLSQoQ09ORklHX1NDU0lfSU4yMDAwKQkrPSBpbjIwMDAu
bworb2JqLSQoQ09ORklHX1NDU0lfR0VORVJJQ19OQ1I1MzgwKSArPSBnX05DUjUzODAubworb2Jq
LSQoQ09ORklHX1NDU0lfR0VORVJJQ19OQ1I1MzgwX01NSU8pICs9IGdfTkNSNTM4MF9tbWlvLm8K
K29iai0kKENPTkZJR19TQ1NJX05DUjUzQzQwNkEpCSs9IE5DUjUzYzQwNmEubworb2JqLSQoQ09O
RklHX1NDU0lfTkNSX0Q3MDApCSs9IDUzYzcwMC5vIE5DUl9ENzAwLm8KK29iai0kKENPTkZJR19T
Q1NJX05DUl9RNzIwKQkrPSBOQ1JfUTcyMF9tb2Qubworb2JqLSQoQ09ORklHX1NDU0lfU1lNNTND
NDE2KQkrPSBzeW01M2M0MTYubworb2JqLSQoQ09ORklHX1NDU0lfUUxPR0lDX0ZBUykJKz0gcWxv
Z2ljZmFzNDA4Lm8JcWxvZ2ljZmFzLm8KK29iai0kKENPTkZJR19QQ01DSUFfUUxPR0lDKQkrPSBx
bG9naWNmYXM0MDgubworb2JqLSQoQ09ORklHX1NDU0lfUUxPR0lDXzEyODApCSs9IHFsYTEyODAu
byAKK29iai0kKENPTkZJR19TQ1NJX1FMQV9GQykJKz0gcWxhMnh4eC8KK29iai0kKENPTkZJR19T
Q1NJX1FMQV9JU0NTSSkJKz0gbGliaXNjc2kubyBxbGE0eHh4Lworb2JqLSQoQ09ORklHX1NDU0lf
TFBGQykJCSs9IGxwZmMvCitvYmotJChDT05GSUdfU0NTSV9CRkFfRkMpCSs9IGJmYS8KK29iai0k
KENPTkZJR19TQ1NJX1BBUzE2KQkrPSBwYXMxNi5vCitvYmotJChDT05GSUdfU0NTSV9UMTI4KQkJ
Kz0gdDEyOC5vCitvYmotJChDT05GSUdfU0NTSV9ETVgzMTkxRCkJKz0gZG14MzE5MWQubworb2Jq
LSQoQ09ORklHX1NDU0lfSFBTQSkJCSs9IGhwc2Eubworb2JqLSQoQ09ORklHX1NDU0lfRFRDMzI4
MCkJKz0gZHRjLm8KK29iai0kKENPTkZJR19TQ1NJX1NZTTUzQzhYWF8yKQkrPSBzeW01M2M4eHhf
Mi8KK29iai0kKENPTkZJR19TQ1NJX1pBTE9OKQkrPSB6YWxvbjd4eC5vCitvYmotJChDT05GSUdf
U0NTSV9FQVRBX1BJTykJKz0gZWF0YV9waW8ubworb2JqLSQoQ09ORklHX1NDU0lfNzAwMEZBU1NU
KQkrPSB3ZDcwMDAubworb2JqLSQoQ09ORklHX1NDU0lfSUJNTUNBKQkrPSBpYm1tY2Eubworb2Jq
LSQoQ09ORklHX1NDU0lfRUFUQSkJCSs9IGVhdGEubworb2JqLSQoQ09ORklHX1NDU0lfREMzOTV4
KQkrPSBkYzM5NXgubworb2JqLSQoQ09ORklHX1NDU0lfREMzOTBUKQkrPSB0bXNjc2ltLm8KK29i
ai0kKENPTkZJR19NRUdBUkFJRF9MRUdBQ1kpCSs9IG1lZ2FyYWlkLm8KK29iai0kKENPTkZJR19N
RUdBUkFJRF9ORVdHRU4pCSs9IG1lZ2FyYWlkLworb2JqLSQoQ09ORklHX01FR0FSQUlEX1NBUykJ
Kz0gbWVnYXJhaWQvCitvYmotJChDT05GSUdfU0NTSV9NUFQyU0FTKQkrPSBtcHQyc2FzLworb2Jq
LSQoQ09ORklHX1NDU0lfQUNBUkQpCSs9IGF0cDg3MHUubworb2JqLSQoQ09ORklHX1NDU0lfU1VO
RVNQKQkrPSBlc3Bfc2NzaS5vCXN1bl9lc3Aubworb2JqLSQoQ09ORklHX1NDU0lfR0RUSCkJCSs9
IGdkdGgubworb2JqLSQoQ09ORklHX1NDU0lfSU5JVElPKQkrPSBpbml0aW8ubworb2JqLSQoQ09O
RklHX1NDU0lfSU5JQTEwMCkJKz0gYTEwMHUydy5vCitvYmotJChDT05GSUdfU0NTSV9RTE9HSUNQ
VEkpCSs9IHFsb2dpY3B0aS5vCitvYmotJChDT05GSUdfU0NTSV9NRVNIKQkJKz0gbWVzaC5vCitv
YmotJChDT05GSUdfU0NTSV9NQUM1M0M5NCkJKz0gbWFjNTNjOTQubworb2JqLSQoQ09ORklHX0JM
S19ERVZfM1dfWFhYWF9SQUlEKSArPSAzdy14eHh4Lm8KK29iai0kKENPTkZJR19TQ1NJXzNXXzlY
WFgpCSs9IDN3LTl4eHgubworb2JqLSQoQ09ORklHX1NDU0lfM1dfU0FTKQkrPSAzdy1zYXMubwor
b2JqLSQoQ09ORklHX1NDU0lfUFBBKQkJKz0gcHBhLm8KK29iai0kKENPTkZJR19TQ1NJX0lNTSkJ
CSs9IGltbS5vCitvYmotJChDT05GSUdfSkFaWl9FU1ApCQkrPSBlc3Bfc2NzaS5vCWphenpfZXNw
Lm8KK29iai0kKENPTkZJR19TVU4zWF9FU1ApCQkrPSBlc3Bfc2NzaS5vCXN1bjN4X2VzcC5vCitv
YmotJChDT05GSUdfU0NTSV9MQVNJNzAwKQkrPSA1M2M3MDAubyBsYXNpNzAwLm8KK29iai0kKENP
TkZJR19TQ1NJX1NOSV81M0M3MTApCSs9IDUzYzcwMC5vIHNuaV81M2M3MTAubworb2JqLSQoQ09O
RklHX1NDU0lfTlNQMzIpCSs9IG5zcDMyLm8KK29iai0kKENPTkZJR19TQ1NJX0lQUikJCSs9IGlw
ci5vCitvYmotJChDT05GSUdfU0NTSV9TUlApCQkrPSBsaWJzcnAubworb2JqLSQoQ09ORklHX1ND
U0lfSUJNVlNDU0kpCSs9IGlibXZzY3NpLworb2JqLSQoQ09ORklHX1NDU0lfSUJNVlNDU0lTKQkr
PSBpYm12c2NzaS8KK29iai0kKENPTkZJR19TQ1NJX0lCTVZGQykJKz0gaWJtdnNjc2kvCitvYmot
JChDT05GSUdfU0NTSV9IUFRJT1ApCSs9IGhwdGlvcC5vCitvYmotJChDT05GSUdfU0NTSV9TVEVY
KQkJKz0gc3RleC5vCitvYmotJChDT05GSUdfU0NTSV9NVlNBUykJKz0gbXZzYXMvCitvYmotJChD
T05GSUdfU0NTSV9NVlVNSSkJKz0gbXZ1bWkubworb2JqLSQoQ09ORklHX1BTM19ST00pCQkrPSBw
czNyb20ubworb2JqLSQoQ09ORklHX1NDU0lfQ1hHQjNfSVNDU0kpCSs9IGxpYmlzY3NpLm8gbGli
aXNjc2lfdGNwLm8gY3hnYmkvCitvYmotJChDT05GSUdfU0NTSV9DWEdCNF9JU0NTSSkJKz0gbGli
aXNjc2kubyBsaWJpc2NzaV90Y3AubyBjeGdiaS8KK29iai0kKENPTkZJR19TQ1NJX0JOWDJfSVND
U0kpCSs9IGxpYmlzY3NpLm8gYm54MmkvCitvYmotJChDT05GSUdfQkUySVNDU0kpCQkrPSBsaWJp
c2NzaS5vIGJlMmlzY3NpLworb2JqLSQoQ09ORklHX1NDU0lfUE1DUkFJRCkJKz0gcG1jcmFpZC5v
CitvYmotJChDT05GSUdfVk1XQVJFX1BWU0NTSSkJKz0gdm13X3B2c2NzaS5vCisKK29iai0kKENP
TkZJR19BUk0pCQkrPSBhcm0vCisKK29iai0kKENPTkZJR19DSFJfREVWX1NUKQkrPSBzdC5vCitv
YmotJChDT05GSUdfQ0hSX0RFVl9PU1NUKQkrPSBvc3N0Lm8KK29iai0kKENPTkZJR19CTEtfREVW
X1NEKQkrPSBzZF9tb2Qubworb2JqLSQoQ09ORklHX0JMS19ERVZfU1IpCSs9IHNyX21vZC5vCitv
YmotJChDT05GSUdfQ0hSX0RFVl9TRykJKz0gc2cubworb2JqLSQoQ09ORklHX0NIUl9ERVZfU0NI
KQkrPSBjaC5vCitvYmotJChDT05GSUdfU0NTSV9FTkNMT1NVUkUpCSs9IHNlcy5vCisKK29iai0k
KENPTkZJR19TQ1NJX09TRF9JTklUSUFUT1IpICs9IG9zZC8KKworIyBUaGlzIGdvZXMgbGFzdCwg
c28gdGhhdCAicmVhbCIgc2NzaSBkZXZpY2VzIHByb2JlIGVhcmxpZXIKK29iai0kKENPTkZJR19T
Q1NJX0RFQlVHKQkrPSBzY3NpX2RlYnVnLm8KKworb2JqLSQoQ09ORklHX1NDU0lfV0FJVF9TQ0FO
KQkrPSBzY3NpX3dhaXRfc2Nhbi5vCisKK3Njc2lfbW9kLXkJCQkrPSBzY3NpLm8gaG9zdHMubyBz
Y3NpX2lvY3RsLm8gY29uc3RhbnRzLm8gXAorCQkJCSAgIHNjc2ljYW0ubyBzY3NpX2Vycm9yLm8g
c2NzaV9saWIubworc2NzaV9tb2QtJChDT05GSUdfU0NTSV9ETUEpCSs9IHNjc2lfbGliX2RtYS5v
CitzY3NpX21vZC15CQkJKz0gc2NzaV9zY2FuLm8gc2NzaV9zeXNmcy5vIHNjc2lfZGV2aW5mby5v
CitzY3NpX21vZC0kKENPTkZJR19TQ1NJX05FVExJTkspCSs9IHNjc2lfbmV0bGluay5vCitzY3Np
X21vZC0kKENPTkZJR19TWVNDVEwpCSs9IHNjc2lfc3lzY3RsLm8KK3Njc2lfbW9kLSQoQ09ORklH
X1NDU0lfUFJPQ19GUykJKz0gc2NzaV9wcm9jLm8KK3Njc2lfbW9kLXkJCQkrPSBzY3NpX3RyYWNl
Lm8KK3Njc2lfbW9kLSQoQ09ORklHX1BNKQkJKz0gc2NzaV9wbS5vCisKK3Njc2lfdGd0LXkJCQkr
PSBzY3NpX3RndF9saWIubyBzY3NpX3RndF9pZi5vCisKK3NkX21vZC1vYmpzCTo9IHNkLm8KK3Nk
X21vZC0kKENPTkZJR19CTEtfREVWX0lOVEVHUklUWSkgKz0gc2RfZGlmLm8KKworc3JfbW9kLW9i
anMJOj0gc3IubyBzcl9pb2N0bC5vIHNyX3ZlbmRvci5vCituY3I1M2M4eHgtZmxhZ3MtJChDT05G
SUdfU0NTSV9aQUxPTikgXAorCQk6PSAtRENPTkZJR19OQ1I1M0M4WFhfUFJFRkVUQ0ggLURTQ1NJ
X05DUl9CSUdfRU5ESUFOIFwKKwkJCS1EQ09ORklHX1NDU0lfTkNSNTNDOFhYX05PX1dPUkRfVFJB
TlNGRVJTCitDRkxBR1NfbmNyNTNjOHh4Lm8JOj0gJChuY3I1M2M4eHgtZmxhZ3MteSkgJChuY3I1
M2M4eHgtZmxhZ3MtbSkKK3phbG9uN3h4LW9ianMJOj0gemFsb24ubyBuY3I1M2M4eHgubworTkNS
X1E3MjBfbW9kLW9ianMJOj0gTkNSX1E3MjAubyBuY3I1M2M4eHgubworb2t0YWdvbl9lc3BfbW9k
LW9ianMJOj0gb2t0YWdvbl9lc3AubyBva3RhZ29uX2lvLm8KKworIyBGaWxlcyBnZW5lcmF0ZWQg
dGhhdCBzaGFsbCBiZSByZW1vdmVkIHVwb24gbWFrZSBjbGVhbgorY2xlYW4tZmlsZXMgOj0JNTNj
NzAwX2QuaCA1M2M3MDBfdS5oCisKKyQob2JqKS81M2M3MDAubyAkKE1PRFZFUkRJUikvJChvYmop
LzUzYzcwMC52ZXI6ICQob2JqKS81M2M3MDBfZC5oCisKKyMgSWYgeW91IHdhbnQgdG8gcGxheSB3
aXRoIHRoZSBmaXJtd2FyZSwgdW5jb21tZW50CisjIEdFTkVSQVRFX0ZJUk1XQVJFIDo9IDEKKwor
aWZkZWYgR0VORVJBVEVfRklSTVdBUkUKKworJChvYmopLzUzYzcwMF9kLmg6ICQoc3JjKS81M2M3
MDAuc2NyICQoc3JjKS9zY3JpcHRfYXNtLnBsCisJJChQRVJMKSAtcyAkKHNyYykvc2NyaXB0X2Fz
bS5wbCAtbmNyN3gwX2ZhbWlseSAkQCAkKEA6X2QuaD1fdS5oKSA8ICQ8CisKK2VuZGlmCmRpZmYg
LXJ1cE4geGVuL2RyaXZlcnMvc2NzaS94ZW4tc2NzaWJhY2svTWFrZWZpbGUgeGVuYy9kcml2ZXJz
L3Njc2kveGVuLXNjc2liYWNrL01ha2VmaWxlCi0tLSB4ZW4vZHJpdmVycy9zY3NpL3hlbi1zY3Np
YmFjay9NYWtlZmlsZQkxOTY5LTEyLTMxIDE3OjAwOjAwLjAwMDAwMDAwMCAtMDcwMAorKysgeGVu
Yy9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL01ha2VmaWxlCTIwMTItMDItMjQgMTQ6NTY6MTMu
NTM4OTc4MzAwIC0wNzAwCkBAIC0wLDAgKzEsNCBAQAorb2JqLSQoQ09ORklHX1hFTl9TQ1NJX0JB
Q0tFTkQpIDo9IHhlbi1zY3NpYmFjay5vCisKK3hlbi1zY3NpYmFjay15CTo9IGludGVyZmFjZS5v
IHNjc2liYWNrLm8geGVuYnVzLm8gdHJhbnNsYXRlLm8gZW11bGF0ZS5vCisKZGlmZiAtcnVwTiB4
ZW4vZHJpdmVycy9zY3NpL3hlbi1zY3NpYmFjay9jb21tb24uaCB4ZW5jL2RyaXZlcnMvc2NzaS94
ZW4tc2NzaWJhY2svY29tbW9uLmgKLS0tIHhlbi9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL2Nv
bW1vbi5oCTE5NjktMTItMzEgMTc6MDA6MDAuMDAwMDAwMDAwIC0wNzAwCisrKyB4ZW5jL2RyaXZl
cnMvc2NzaS94ZW4tc2NzaWJhY2svY29tbW9uLmgJMjAxMi0wMi0yNCAxNDo1NjoxMy41Mzg5Nzgz
MDAgLTA3MDAKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEZV
SklUU1UgTGltaXRlZAorICoKKyAqIEJhc2VkIG9uIHRoZSBibGtiYWNrIGRyaXZlciBjb2RlLgor
ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IG9yLCB3aGVuIGRpc3RyaWJ1dGVkCisgKiBzZXBhcmF0ZWx5
IGZyb20gdGhlIExpbnV4IGtlcm5lbCBvciBpbmNvcnBvcmF0ZWQgaW50byBvdGhlcgorICogc29m
dHdhcmUgcGFja2FnZXMsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBsaWNlbnNlOgorICoKKyAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc291cmNlIGZpbGUgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm
eSwKKyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs
bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo
b20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF
QUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX1NDU0lJRl9fQkFD
S0VORF9fQ09NTU9OX0hfXworI2RlZmluZSBfX1NDU0lJRl9fQkFDS0VORF9fQ09NTU9OX0hfXwor
CisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor
I2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNp
bmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1
ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgorI2luY2x1ZGUg
PGxpbnV4L2Jsa2Rldi5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51
eC9rdGhyZWFkLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpLmg+CisjaW5jbHVkZSA8c2NzaS9zY3Np
X2NtbmQuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgorI2luY2x1ZGUgPHNjc2kvc2Nz
aV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfZGJnLmg+CisjaW5jbHVkZSA8c2NzaS9z
Y3NpX2VoLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+Cisj
aW5jbHVkZSA8YXNtL3BnYWxsb2MuaD4KKyNpbmNsdWRlIDxhc20vZGVsYXkuaD4KKyNpbmNsdWRl
IDx4ZW4vZXZ0Y2huLmg+CisjaW5jbHVkZSA8YXNtL2h5cGVydmlzb3IuaD4KKyNpbmNsdWRlIDx4
ZW4veGVuLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50cy5oPgorI2luY2x1ZGUgPHhlbi9ncmFudF90
YWJsZS5oPgorI2luY2x1ZGUgPHhlbi94ZW5idXMuaD4KKyNpbmNsdWRlIDx4ZW4vcGFnZS5oPgor
I2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9p
by9yaW5nLmg+CisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oPgorI2luY2x1
ZGUgPHhlbi9pbnRlcmZhY2UvaW8vdnNjc2lpZi5oPgorCisKKyNkZWZpbmUgRFBSSU5USyhfZiwg
X2EuLi4pCQkJXAorCXByX2RlYnVnKCIoZmlsZT0lcywgbGluZT0lZCkgIiBfZiwJXAorCQkgX19G
SUxFX18gLCBfX0xJTkVfXyAsICMjIF9hICkKKworc3RydWN0IGlkc190dXBsZSB7CisJdW5zaWdu
ZWQgaW50IGhzdDsJCS8qIGhvc3QgICAgKi8KKwl1bnNpZ25lZCBpbnQgY2huOwkJLyogY2hhbm5l
bCAqLworCXVuc2lnbmVkIGludCB0Z3Q7CQkvKiB0YXJnZXQgICovCisJdW5zaWduZWQgaW50IGx1
bjsJCS8qIExVTiAgICAgKi8KK307CisKK3N0cnVjdCB2MnBfZW50cnkgeworCXN0cnVjdCBpZHNf
dHVwbGUgdjsJCS8qIHRyYW5zbGF0ZSBmcm9tICovCisJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2
OwkvKiB0cmFuc2xhdGUgdG8gICAqLworCXN0cnVjdCBsaXN0X2hlYWQgbDsKK307CisKK3N0cnVj
dCB2c2NzaWJrX2luZm8geworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXY7CisKKwlkb21pZF90
IGRvbWlkOworCXVuc2lnbmVkIGludCBldnRjaG47CisJdW5zaWduZWQgaW50IGlycTsKKworCWlu
dCBmZWF0dXJlOworCisJc3RydWN0IHZzY3NpaWZfYmFja19yaW5nICByaW5nOworCXZvaWQgICpy
aW5nX2FyZWE7CisKKwlzcGlubG9ja190IHJpbmdfbG9jazsKKwlhdG9taWNfdCBucl91bnJlcGxp
ZWRfcmVxczsKKworCXNwaW5sb2NrX3QgdjJwX2xvY2s7CisJc3RydWN0IGxpc3RfaGVhZCB2MnBf
ZW50cnlfbGlzdHM7CisKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmt0aHJlYWQ7CisJd2FpdF9xdWV1
ZV9oZWFkX3Qgd2FpdGluZ190b19mcmVlOworCXdhaXRfcXVldWVfaGVhZF90IHdxOworCXVuc2ln
bmVkIGludCB3YWl0aW5nX3JlcXM7CisJc3RydWN0IHBhZ2UgKiptbWFwX3BhZ2VzOworCit9Owor
Cit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgY2hhciBhY3Q7CisJc3RydWN0IHZzY3NpYmtf
aW5mbyAqaW5mbzsKKwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7CisKKwl1aW50MTZfdCBycWlk
OworCisJdWludDE2X3Qgdl9jaG4sIHZfdGd0OworCisJdWludDhfdCBucl9zZWdtZW50czsKKwl1
aW50OF90IGNtbmRbVlNDU0lJRl9NQVhfQ09NTUFORF9TSVpFXTsKKwl1aW50OF90IGNtZF9sZW47
CisKKwl1aW50OF90IHNjX2RhdGFfZGlyZWN0aW9uOworCXVpbnQxNl90IHRpbWVvdXRfcGVyX2Nv
bW1hbmQ7CisKKwl1aW50MzJfdCByZXF1ZXN0X2J1ZmZsZW47CisJc3RydWN0IHNjYXR0ZXJsaXN0
ICpzZ2w7CisJZ3JhbnRfcmVmX3QgZ3JlZltWU0NTSUlGX1NHX1RBQkxFU0laRV07CisKKwlpbnQz
Ml90IHJzbHQ7CisJdWludDMyX3QgcmVzaWQ7CisJdWludDhfdCBzZW5zZV9idWZmZXJbVlNDU0lJ
Rl9TRU5TRV9CVUZGRVJTSVpFXTsKKworCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0OworfSBw
ZW5kaW5nX3JlcV90OworCisKKworI2RlZmluZSBzY3NpYmFja19nZXQoX2IpIChhdG9taWNfaW5j
KCYoX2IpLT5ucl91bnJlcGxpZWRfcmVxcykpCisjZGVmaW5lIHNjc2liYWNrX3B1dChfYikJCQkJ
XAorCWRvIHsJCQkJCQlcCisJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCYoX2IpLT5ucl91bnJl
cGxpZWRfcmVxcykpCVwKKwkJCXdha2VfdXAoJihfYiktPndhaXRpbmdfdG9fZnJlZSk7XAorCX0g
d2hpbGUgKDApCisKKyNkZWZpbmUgVlNDU0lJRl9USU1FT1VUCQkoOTAwKkhaKQorCisjZGVmaW5l
IFZTQ1NJX1RZUEVfSE9TVAkJMQorCitpcnFyZXR1cm5fdCBzY3NpYmFja19pbnRyKGludCwgdm9p
ZCAqKTsKK2ludCBzY3NpYmFja19pbml0X3NyaW5nKHN0cnVjdCB2c2NzaWJrX2luZm8gKmluZm8s
CisJCXVuc2lnbmVkIGxvbmcgcmluZ19yZWYsIHVuc2lnbmVkIGludCBldnRjaG4pOworaW50IHNj
c2liYWNrX3NjaGVkdWxlKHZvaWQgKmRhdGEpOworCisKK3N0cnVjdCB2c2NzaWJrX2luZm8gKnZz
Y3NpYmtfaW5mb19hbGxvYyhkb21pZF90IGRvbWlkKTsKK3ZvaWQgc2NzaWJhY2tfZnJlZShzdHJ1
Y3QgdnNjc2lia19pbmZvICppbmZvKTsKK3ZvaWQgc2NzaWJhY2tfZGlzY29ubmVjdChzdHJ1Y3Qg
dnNjc2lia19pbmZvICppbmZvKTsKK2ludCBfX2luaXQgc2NzaWJhY2tfaW50ZXJmYWNlX2luaXQo
dm9pZCk7Cit2b2lkIHNjc2liYWNrX2ludGVyZmFjZV9leGl0KHZvaWQpOworaW50IHNjc2liYWNr
X3hlbmJ1c19pbml0KHZvaWQpOwordm9pZCBzY3NpYmFja194ZW5idXNfdW5yZWdpc3Rlcih2b2lk
KTsKKwordm9pZCBzY3NpYmFja19pbml0X3RyYW5zbGF0aW9uX3RhYmxlKHN0cnVjdCB2c2NzaWJr
X2luZm8gKmluZm8pOworCitpbnQgc2NzaWJhY2tfYWRkX3RyYW5zbGF0aW9uX2VudHJ5KHN0cnVj
dCB2c2NzaWJrX2luZm8gKmluZm8sCisJCQlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIHN0cnVj
dCBpZHNfdHVwbGUgKnYpOworCitpbnQgc2NzaWJhY2tfZGVsX3RyYW5zbGF0aW9uX2VudHJ5KHN0
cnVjdCB2c2NzaWJrX2luZm8gKmluZm8sCisJCQkJc3RydWN0IGlkc190dXBsZSAqdik7CitzdHJ1
Y3Qgc2NzaV9kZXZpY2UgKnNjc2liYWNrX2RvX3RyYW5zbGF0aW9uKHN0cnVjdCB2c2NzaWJrX2lu
Zm8gKmluZm8sCisJCQlzdHJ1Y3QgaWRzX3R1cGxlICp2KTsKK3ZvaWQgc2NzaWJhY2tfcmVsZWFz
ZV90cmFuc2xhdGlvbl9lbnRyeShzdHJ1Y3QgdnNjc2lia19pbmZvICppbmZvKTsKKworCit2b2lk
IHNjc2liYWNrX2NtZF9leGVjKHBlbmRpbmdfcmVxX3QgKnBlbmRpbmdfcmVxKTsKK3ZvaWQgc2Nz
aWJhY2tfZG9fcmVzcF93aXRoX3NlbnNlKGNoYXIgKnNlbnNlX2J1ZmZlciwgaW50MzJfdCByZXN1
bHQsCisJCQl1aW50MzJfdCByZXNpZCwgcGVuZGluZ19yZXFfdCAqcGVuZGluZ19yZXEpOwordm9p
ZCBzY3NpYmFja19mYXN0X2ZsdXNoX2FyZWEocGVuZGluZ19yZXFfdCAqcmVxKTsKKwordm9pZCBz
Y3NpYmFja19yc3BfZW11bGF0aW9uKHBlbmRpbmdfcmVxX3QgKnBlbmRpbmdfcmVxKTsKK3ZvaWQg
c2NzaWJhY2tfcmVxX2VtdWxhdGlvbl9vcl9jbWRleGVjKHBlbmRpbmdfcmVxX3QgKnBlbmRpbmdf
cmVxKTsKK3ZvaWQgc2NzaWJhY2tfZW11bGF0aW9uX2luaXQodm9pZCk7CisKKworI2VuZGlmIC8q
IF9fU0NTSUlGX19CQUNLRU5EX19DT01NT05fSF9fICovCmRpZmYgLXJ1cE4geGVuL2RyaXZlcnMv
c2NzaS94ZW4tc2NzaWJhY2svZW11bGF0ZS5jIHhlbmMvZHJpdmVycy9zY3NpL3hlbi1zY3NpYmFj
ay9lbXVsYXRlLmMKLS0tIHhlbi9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL2VtdWxhdGUuYwkx
OTY5LTEyLTMxIDE3OjAwOjAwLjAwMDAwMDAwMCAtMDcwMAorKysgeGVuYy9kcml2ZXJzL3Njc2kv
eGVuLXNjc2liYWNrL2VtdWxhdGUuYwkyMDEyLTAyLTI0IDE0OjU2OjEzLjUzODk3ODMwMCAtMDcw
MApAQCAtMCwwICsxLDQ3OCBAQAorLyoKKyAqIFhlbiBTQ1NJIGJhY2tlbmQgZHJpdmVyCisgKgor
ICogQ29weXJpZ2h0IChjKSAyMDA4LCBGVUpJVFNVIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBvciwgd2hlbiBkaXN0cmlidXRlZAorICogc2VwYXJhdGVseSBmcm9tIHRoZSBMaW51eCBr
ZXJuZWwgb3IgaW5jb3Jwb3JhdGVkIGludG8gb3RoZXIKKyAqIHNvZnR3YXJlIHBhY2thZ2VzLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgbGljZW5zZToKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5CisgKiBvZiB0aGlzIHNvdXJjZSBmaWxlICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs
aW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksCisgKiBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwKKyAqIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp
cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK
KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U
SEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhF
IFNPRlRXQVJFLgorICovCisKKy8qCisqIFBhdGNoZWQgdG8gc3VwcG9ydCA+MlRCIGRyaXZlcyAr
IGFsbG93IHRhcGUgJiBhdXRvbG9hZGVyIG9wZXJhdGlvbnMKKyogMjAxMCwgU2FtdWVsIEt2YXNu
aWNhLCBJTVMgTmFub2ZhYnJpY2F0aW9uIEFHCisqLworCisjaW5jbHVkZSA8c2NzaS9zY3NpLmg+
CisjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfZGV2aWNl
Lmg+CisjaW5jbHVkZSAiY29tbW9uLmgiCisKKy8qIEZvbGxvd2luZyBTQ1NJIGNvbW1hbmRzIGFy
ZSBub3QgZGVmaW5lZCBpbiBzY3NpL3Njc2kuaCAqLworI2RlZmluZSBFWFRFTkRFRF9DT1BZCQkw
eDgzCS8qIEVYVEVOREVEIENPUFkgY29tbWFuZCAgICAgICAgKi8KKyNkZWZpbmUgUkVQT1JUX0FM
SUFTRVMJCTB4YTMJLyogUkVQT1JUIEFMSUFTRVMgY29tbWFuZCAgICAgICAqLworI2RlZmluZSBD
SEFOR0VfQUxJQVNFUwkJMHhhNAkvKiBDSEFOR0UgQUxJQVNFUyBjb21tYW5kICAgICAgICovCisj
ZGVmaW5lIFNFVF9QUklPUklUWQkJMHhhNAkvKiBTRVQgUFJJT1JJVFkgY29tbWFuZCAgICAgICAg
ICovCisKKworLyoKKyAgVGhlIGJpdG1hcCBpbiBvcmRlciB0byBjb250cm9sIGVtdWxhdGlvbi4K
KyAgKEJpdCAzIHRvIDcgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLikKKyovCisjZGVmaW5l
IFZTQ1NJSUZfTkVFRF9DTURfRVhFQwkJMHgwMQkvKiBJZiB0aGlzIGJpdCBpcyBzZXQsIGNtZCBl
eGVjCSovCisJCQkJCQkvKiBpcyByZXF1aXJlZC4JCQkqLworI2RlZmluZSBWU0NTSUlGX05FRURf
RU1VTEFURV9SRVFCVUYJMHgwMgkvKiBJZiB0aGlzIGJpdCBpcyBzZXQsIG5lZWQJKi8KKwkJCQkJ
CS8qIGVtdWxhdGlvbiByZXFlc3QgYnVmZiBiZWZvcmUJKi8KKwkJCQkJCS8qIGNtZCBleGVjLgkJ
CSovCisjZGVmaW5lIFZTQ1NJSUZfTkVFRF9FTVVMQVRFX1JTUEJVRgkweDA0CS8qIElmIHRoaXMg
Yml0IGlzIHNldCwgbmVlZAkqLworCQkJCQkJLyogZW11bGF0aW9uIHJlc3AgYnVmZiBhZnRlcgkq
LworCQkJCQkJLyogY21kIGV4ZWMuCQkJKi8KKworLyogQWRkaXRpb25hbCBTZW5zZSBDb2RlIChB
U0MpIHVzZWQgKi8KKyNkZWZpbmUgTk9fQURESVRJT05BTF9TRU5TRQkJMHgwCisjZGVmaW5lIExP
R0lDQUxfVU5JVF9OT1RfUkVBRFkJCTB4NAorI2RlZmluZSBVTlJFQ09WRVJFRF9SRUFEX0VSUgkJ
MHgxMQorI2RlZmluZSBQQVJBTUVURVJfTElTVF9MRU5HVEhfRVJSCTB4MWEKKyNkZWZpbmUgSU5W
QUxJRF9PUENPREUJCQkweDIwCisjZGVmaW5lIEFERFJfT1VUX09GX1JBTkdFCQkweDIxCisjZGVm
aW5lIElOVkFMSURfRklFTERfSU5fQ0RCCQkweDI0CisjZGVmaW5lIElOVkFMSURfRklFTERfSU5f
UEFSQU1fTElTVAkweDI2CisjZGVmaW5lIFBPV0VST05fUkVTRVQJCQkweDI5CisjZGVmaW5lIFNB
VklOR19QQVJBTVNfVU5TVVAJCTB4MzkKKyNkZWZpbmUgVEhSRVNIT0xEX0VYQ0VFREVECQkweDVk
CisjZGVmaW5lIExPV19QT1dFUl9DT05EX09OCQkweDVlCisKKworCisvKiBOdW1iZXIgb3MgU0NT
SSBvcF9jb2RlCSovCisjZGVmaW5lIFZTQ1NJX01BWF9TQ1NJX09QX0NPREUJCTI1Ngorc3RhdGlj
IHVuc2lnbmVkIGNoYXIgYml0bWFwW1ZTQ1NJX01BWF9TQ1NJX09QX0NPREVdOworCisjZGVmaW5l
IE5PX0VNVUxBVEUoY21kKSBcCisJYml0bWFwW2NtZF0gPSBWU0NTSUlGX05FRURfQ01EX0VYRUM7
IFwKKwlwcmVfZnVuY3Rpb25bY21kXSA9IE5VTEw7IFwKKwlwb3N0X2Z1bmN0aW9uW2NtZF0gPSBO
VUxMCisKKworCisvKgorICBFbXVsYXRpb24gcm91dGluZXMgZm9yIGVhY2ggU0NTSSBvcF9jb2Rl
LgorKi8KK3N0YXRpYyB2b2lkICgqcHJlX2Z1bmN0aW9uW1ZTQ1NJX01BWF9TQ1NJX09QX0NPREVd
KShwZW5kaW5nX3JlcV90ICosIHZvaWQgKik7CitzdGF0aWMgdm9pZCAoKnBvc3RfZnVuY3Rpb25b
VlNDU0lfTUFYX1NDU0lfT1BfQ09ERV0pKHBlbmRpbmdfcmVxX3QgKiwgdm9pZCAqKTsKKworCitz
dGF0aWMgY29uc3QgaW50IGNoZWNrX2NvbmRpdGlvbl9yZXN1bHQgPQorCQkoRFJJVkVSX1NFTlNF
IDw8IDI0KSB8IFNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTjsKKworc3RhdGljIHZvaWQgc2NzaWJh
Y2tfbWtfc2Vuc2VfYnVmZmVyKHVpbnQ4X3QgKmRhdGEsIHVpbnQ4X3Qga2V5LAorCQkJdWludDhf
dCBhc2MsIHVpbnQ4X3QgYXNxKQoreworCWRhdGFbMF0gPSAweDcwOyAgLyogZml4ZWQsIGN1cnJl
bnQgKi8KKwlkYXRhWzJdID0ga2V5OworCWRhdGFbN10gPSAweGE7CSAgLyogaW1wbGllcyAxOCBi
eXRlIHNlbnNlIGJ1ZmZlciAqLworCWRhdGFbMTJdID0gYXNjOworCWRhdGFbMTNdID0gYXNxOwor
fQorCitzdGF0aWMgdm9pZCByZXNwX25vdF9zdXBwb3J0ZWRfY21kKHBlbmRpbmdfcmVxX3QgKnBl
bmRpbmdfcmVxLCB2b2lkICpkYXRhKQoreworCXNjc2liYWNrX21rX3NlbnNlX2J1ZmZlcihwZW5k
aW5nX3JlcS0+c2Vuc2VfYnVmZmVyLCBJTExFR0FMX1JFUVVFU1QsCisJCUlOVkFMSURfT1BDT0RF
LCAwKTsKKwlwZW5kaW5nX3JlcS0+cmVzaWQgPSAwOworCXBlbmRpbmdfcmVxLT5yc2x0ICA9IGNo
ZWNrX2NvbmRpdGlvbl9yZXN1bHQ7Cit9CisKKworc3RhdGljIGludCBfX2NvcHlfdG9fc2coc3Ry
dWN0IHNjYXR0ZXJsaXN0ICpzZ2wsIHVuc2lnbmVkIGludCBucl9zZywKKwkgICAgICAgdm9pZCAq
YnVmLCB1bnNpZ25lZCBpbnQgYnVmbGVuKQoreworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJ
dm9pZCAqZnJvbSA9IGJ1ZjsKKwl2b2lkICp0bzsKKwl1bnNpZ25lZCBpbnQgZnJvbV9yZXN0ID0g
YnVmbGVuOworCXVuc2lnbmVkIGludCB0b19jYXBhOworCXVuc2lnbmVkIGludCBjb3B5X3NpemUg
PSAwOworCXVuc2lnbmVkIGludCBpOworCXVuc2lnbmVkIGxvbmcgcGZuOworCisJZm9yX2VhY2hf
c2cgKHNnbCwgc2csIG5yX3NnLCBpKSB7CisJCWlmIChzZ19wYWdlKHNnKSA9PSBOVUxMKSB7CisJ
CQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogaW5jb25zaXN0ZW50IGxlbmd0aCBmaWVsZCBpbiAi
CisJCQkgICAgICAgInNjYXR0ZXJsaXN0XG4iLCBfX0ZVTkNUSU9OX18pOworCQkJcmV0dXJuIC1F
Tk9NRU07CisJCX0KKworCQl0b19jYXBhICA9IHNnLT5sZW5ndGg7CisJCWNvcHlfc2l6ZSA9IG1p
bl90KHVuc2lnbmVkIGludCwgdG9fY2FwYSwgZnJvbV9yZXN0KTsKKworCQlwZm4gPSBwYWdlX3Rv
X3BmbihzZ19wYWdlKHNnKSk7CisJCXRvID0gcGZuX3RvX2thZGRyKHBmbikgKyAoc2ctPm9mZnNl
dCk7CisJCW1lbWNweSh0bywgZnJvbSwgY29weV9zaXplKTsKKworCQlmcm9tX3Jlc3QgIC09IGNv
cHlfc2l6ZTsKKwkJaWYgKGZyb21fcmVzdCA9PSAwKSB7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJ
CWZyb20gKz0gY29weV9zaXplOworCX0KKworCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBubyBz
cGFjZSBpbiBzY2F0dGVybGlzdFxuIiwKKwkgICAgICAgX19GVU5DVElPTl9fKTsKKwlyZXR1cm4g
LUVOT01FTTsKK30KKyNpZiAwCitzdGF0aWMgaW50IF9fY29weV9mcm9tX3NnKHN0cnVjdCBzY2F0
dGVybGlzdCAqc2dsLCB1bnNpZ25lZCBpbnQgbnJfc2csCisJCSB2b2lkICpidWYsIHVuc2lnbmVk
IGludCBidWZsZW4pCit7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwl2b2lkICpmcm9tOwor
CXZvaWQgKnRvID0gYnVmOworCXVuc2lnbmVkIGludCBmcm9tX3Jlc3Q7CisJdW5zaWduZWQgaW50
IHRvX2NhcGEgPSBidWZsZW47CisJdW5zaWduZWQgaW50IGNvcHlfc2l6ZTsKKwl1bnNpZ25lZCBp
bnQgaTsKKwl1bnNpZ25lZCBsb25nIHBmbjsKKworCWZvcl9lYWNoX3NnIChzZ2wsIHNnLCBucl9z
ZywgaSkgeworCQlpZiAoc2dfcGFnZShzZykgPT0gTlVMTCkgeworCQkJcHJpbnRrKEtFUk5fV0FS
TklORyAiJXM6IGluY29uc2lzdGVudCBsZW5ndGggZmllbGQgaW4gIgorCQkJICAgICAgICJzY2F0
dGVybGlzdFxuIiwgX19GVU5DVElPTl9fKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisKKwkJ
ZnJvbV9yZXN0ID0gc2ctPmxlbmd0aDsKKwkJaWYgKChmcm9tX3Jlc3QgPiAwKSAmJiAodG9fY2Fw
YSA8IGZyb21fcmVzdCkpIHsKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcKKwkJCSAgICAgICAiJXM6
IG5vIHNwYWNlIGluIGRlc3RpbmF0aW9uIGJ1ZmZlclxuIiwKKwkJCSAgICAgICBfX0ZVTkNUSU9O
X18pOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKwkJY29weV9zaXplID0gZnJvbV9yZXN0Owor
CisJCXBmbiA9IHBhZ2VfdG9fcGZuKHNnX3BhZ2Uoc2cpKTsKKwkJZnJvbSA9IHBmbl90b19rYWRk
cihwZm4pICsgKHNnLT5vZmZzZXQpOworCQltZW1jcHkodG8sIGZyb20sIGNvcHlfc2l6ZSk7CisK
KwkJdG9fY2FwYSAgLT0gY29weV9zaXplOworCQl0byArPSBjb3B5X3NpemU7CisJfQorCisJcmV0
dXJuIDA7Cit9CisjZW5kaWYKK3N0YXRpYyBpbnQgX19ucl9sdW5zX3VuZGVyX2hvc3Qoc3RydWN0
IHZzY3NpYmtfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgdjJwX2VudHJ5ICplbnRyeTsKKwlzdHJ1
Y3QgbGlzdF9oZWFkICpoZWFkID0gJihpbmZvLT52MnBfZW50cnlfbGlzdHMpOworCXVuc2lnbmVk
IGxvbmcgZmxhZ3M7CisJaW50IGx1bl9jbnQgPSAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmlu
Zm8tPnYycF9sb2NrLCBmbGFncyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgaGVhZCwg
bCkgeworCQkJbHVuX2NudCsrOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbmZvLT52
MnBfbG9jaywgZmxhZ3MpOworCisJcmV0dXJuIChsdW5fY250KTsKK30KKworCisvKiBSRVBPUlQg
TFVOUyBEZWZpbmUqLworI2RlZmluZSBWU0NTSV9SRVBPUlRfTFVOU19IRUFERVIJOAorI2RlZmlu
ZSBWU0NTSV9SRVBPUlRfTFVOU19SRVRSWQkJMworCisvKiBxdW90ZWQgc2NzaV9kZWJ1Zy5jL3Jl
c3BfcmVwb3J0X2x1bnMoKSAqLworc3RhdGljIHZvaWQgX19yZXBvcnRfbHVucyhwZW5kaW5nX3Jl
cV90ICpwZW5kaW5nX3JlcSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgdnNjc2lia19pbmZvICpp
bmZvICAgPSBwZW5kaW5nX3JlcS0+aW5mbzsKKwl1bnNpZ25lZCBpbnQgICAgICAgIGNoYW5uZWwg
PSBwZW5kaW5nX3JlcS0+dl9jaG47CisJdW5zaWduZWQgaW50ICAgICAgICB0YXJnZXQgID0gcGVu
ZGluZ19yZXEtPnZfdGd0OworCXVuc2lnbmVkIGludCAgICAgICAgbnJfc2VnICA9IHBlbmRpbmdf
cmVxLT5ucl9zZWdtZW50czsKKwl1bnNpZ25lZCBjaGFyICpjbWQgPSAodW5zaWduZWQgY2hhciAq
KXBlbmRpbmdfcmVxLT5jbW5kOworCisJdW5zaWduZWQgY2hhciAqYnVmZiA9IE5VTEw7CisJdW5z
aWduZWQgY2hhciBhbGxvY19sZW47CisJdW5zaWduZWQgaW50IGFsbG9jX2x1bnMgPSAwOworCXVu
c2lnbmVkIGludCByZXFfYnVmZmxlbiA9IDA7CisJdW5zaWduZWQgaW50IGFjdHVhbF9sZW4gPSAw
OworCXVuc2lnbmVkIGludCByZXRyeV9jbnQgPSAwOworCWludCBzZWxlY3RfcmVwb3J0ID0gKGlu
dCljbWRbMl07CisJaW50IGksIGx1bl9jbnQgPSAwLCBsdW4sIHVwcGVyLCBlcnIgPSAwOworCisJ
c3RydWN0IHYycF9lbnRyeSAqZW50cnk7CisJc3RydWN0IGxpc3RfaGVhZCAqaGVhZCA9ICYoaW5m
by0+djJwX2VudHJ5X2xpc3RzKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3RydWN0IHNj
c2lfbHVuICpvbmVfbHVuOworCisJcmVxX2J1ZmZsZW4gPSBjbWRbOV0gKyAoY21kWzhdIDw8IDgp
ICsgKGNtZFs3XSA8PCAxNikgKyAoY21kWzZdIDw8IDI0KTsKKwlpZiAoKHJlcV9idWZmbGVuIDwg
NCkgfHwgKHNlbGVjdF9yZXBvcnQgIT0gMCkpCisJCWdvdG8gZmFpbDsKKworCWFsbG9jX2x1bnMg
PSBfX25yX2x1bnNfdW5kZXJfaG9zdChpbmZvKTsKKwlhbGxvY19sZW4gID0gc2l6ZW9mKHN0cnVj
dCBzY3NpX2x1bikgKiBhbGxvY19sdW5zCisJCQkJKyBWU0NTSV9SRVBPUlRfTFVOU19IRUFERVI7
CityZXRyeToKKwlpZiAoKGJ1ZmYgPSBremFsbG9jKGFsbG9jX2xlbiwgR0ZQX0tFUk5FTCkpID09
IE5VTEwpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpYmFjazolcyBrbWFsbG9jIGVyclxuIiwg
X19GVU5DVElPTl9fKTsKKwkJZ290byBmYWlsOworCX0KKworCW9uZV9sdW4gPSAoc3RydWN0IHNj
c2lfbHVuICopICZidWZmWzhdOworCXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT52MnBfbG9jaywg
ZmxhZ3MpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIGhlYWQsIGwpIHsKKwkJaWYgKChl
bnRyeS0+di5jaG4gPT0gY2hhbm5lbCkgJiYKKwkJICAgIChlbnRyeS0+di50Z3QgPT0gdGFyZ2V0
KSkgeworCQkJLyogY2hlY2sgb3ZlcmZsb3cgKi8KKwkJCWlmIChsdW5fY250ID49IGFsbG9jX2x1
bnMpIHsKKwkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbmZvLT52MnBfbG9jaywKKwkJCQkJ
CQlmbGFncyk7CisKKwkJCQlpZiAocmV0cnlfY250IDwgVlNDU0lfUkVQT1JUX0xVTlNfUkVUUlkp
IHsKKwkJCQkJcmV0cnlfY250Kys7CisJCQkJCWlmIChidWZmKQorCQkJCQkJa2ZyZWUoYnVmZik7
CisJCQkJCWdvdG8gcmV0cnk7CisJCQkJfQorCisJCQkJZ290byBmYWlsOworCQkJfQorCisJCQls
dW4gPSBlbnRyeS0+di5sdW47CisJCQl1cHBlciA9IChsdW4gPj4gOCkgJiAweDNmOworCQkJaWYg
KHVwcGVyKQorCQkJCW9uZV9sdW5bbHVuX2NudF0uc2NzaV9sdW5bMF0gPSB1cHBlcjsKKwkJCW9u
ZV9sdW5bbHVuX2NudF0uc2NzaV9sdW5bMV0gPSBsdW4gJiAweGZmOworCQkJbHVuX2NudCsrOwor
CQl9CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+djJwX2xvY2ssIGZsYWdz
KTsKKworCWJ1ZmZbMl0gPSAoKHNpemVvZihzdHJ1Y3Qgc2NzaV9sdW4pICogbHVuX2NudCkgPj4g
OCkgJiAweGZmOworCWJ1ZmZbM10gPSAoc2l6ZW9mKHN0cnVjdCBzY3NpX2x1bikgKiBsdW5fY250
KSAmIDB4ZmY7CisKKwlhY3R1YWxfbGVuID0gbHVuX2NudCAqIHNpemVvZihzdHJ1Y3Qgc2NzaV9s
dW4pCisJCQkJKyBWU0NTSV9SRVBPUlRfTFVOU19IRUFERVI7CisJcmVxX2J1ZmZsZW4gPSAwOwor
CWZvciAoaSA9IDA7IGkgPCBucl9zZWc7IGkrKykKKwkJcmVxX2J1ZmZsZW4gKz0gcGVuZGluZ19y
ZXEtPnNnbFtpXS5sZW5ndGg7CisKKwllcnIgPSBfX2NvcHlfdG9fc2cocGVuZGluZ19yZXEtPnNn
bCwgbnJfc2VnLCBidWZmLAorCQkJCW1pbihyZXFfYnVmZmxlbiwgYWN0dWFsX2xlbikpOworCWlm
IChlcnIpCisJCWdvdG8gZmFpbDsKKworCW1lbXNldChwZW5kaW5nX3JlcS0+c2Vuc2VfYnVmZmVy
LCAwLCBWU0NTSUlGX1NFTlNFX0JVRkZFUlNJWkUpOworCXBlbmRpbmdfcmVxLT5yc2x0ID0gMHgw
MDsKKwlwZW5kaW5nX3JlcS0+cmVzaWQgPSByZXFfYnVmZmxlbiAtIG1pbihyZXFfYnVmZmxlbiwg
YWN0dWFsX2xlbik7CisKKwlrZnJlZShidWZmKTsKKwlyZXR1cm47CisKK2ZhaWw6CisJc2NzaWJh
Y2tfbWtfc2Vuc2VfYnVmZmVyKHBlbmRpbmdfcmVxLT5zZW5zZV9idWZmZXIsIElMTEVHQUxfUkVR
VUVTVCwKKwkJSU5WQUxJRF9GSUVMRF9JTl9DREIsIDApOworCXBlbmRpbmdfcmVxLT5yc2x0ICA9
IGNoZWNrX2NvbmRpdGlvbl9yZXN1bHQ7CisJcGVuZGluZ19yZXEtPnJlc2lkID0gMDsKKwlpZiAo
YnVmZikKKwkJa2ZyZWUoYnVmZik7CisJcmV0dXJuOworfQorCisKKworaW50IF9fcHJlX2RvX2Vt
dWxhdGlvbihwZW5kaW5nX3JlcV90ICpwZW5kaW5nX3JlcSwgdm9pZCAqZGF0YSkKK3sKKwl1aW50
OF90IG9wX2NvZGUgPSBwZW5kaW5nX3JlcS0+Y21uZFswXTsKKworCWlmICgoYml0bWFwW29wX2Nv
ZGVdICYgVlNDU0lJRl9ORUVEX0VNVUxBVEVfUkVRQlVGKSAmJgorCSAgICBwcmVfZnVuY3Rpb25b
b3BfY29kZV0gIT0gTlVMTCkgeworCQlwcmVfZnVuY3Rpb25bb3BfY29kZV0ocGVuZGluZ19yZXEs
IGRhdGEpOworCX0KKworCS8qCisJICAgIDA6IG5vIG5lZWQgZm9yIG5hdGl2ZSBkcml2ZXIgY2Fs
bCwgc28gc2hvdWxkIHJldHVybiBpbW1lZGlhdGVseS4KKwkgICAgMTogbm9uIGVtdWxhdGlvbiBv
ciBzaG91bGQgY2FsbCBuYXRpdmUgZHJpdmVyCisJICAgICAgIGFmdGVyIG1vZGlmaW5nIHRoZSBy
ZXF1ZXN0IGJ1ZmZlci4KKwkqLworCXJldHVybiAhIShiaXRtYXBbb3BfY29kZV0gJiBWU0NTSUlG
X05FRURfQ01EX0VYRUMpOworfQorCit2b2lkIHNjc2liYWNrX3JzcF9lbXVsYXRpb24ocGVuZGlu
Z19yZXFfdCAqcGVuZGluZ19yZXEpCit7CisJdWludDhfdCBvcF9jb2RlID0gcGVuZGluZ19yZXEt
PmNtbmRbMF07CisKKwlpZiAoKGJpdG1hcFtvcF9jb2RlXSAmIFZTQ1NJSUZfTkVFRF9FTVVMQVRF
X1JTUEJVRikgJiYKKwkgICAgcG9zdF9mdW5jdGlvbltvcF9jb2RlXSAhPSBOVUxMKSB7CisJCXBv
c3RfZnVuY3Rpb25bb3BfY29kZV0ocGVuZGluZ19yZXEsIE5VTEwpOworCX0KKworCXJldHVybjsK
K30KKworCit2b2lkIHNjc2liYWNrX3JlcV9lbXVsYXRpb25fb3JfY21kZXhlYyhwZW5kaW5nX3Jl
cV90ICpwZW5kaW5nX3JlcSkKK3sKKwlpZiAoX19wcmVfZG9fZW11bGF0aW9uKHBlbmRpbmdfcmVx
LCBOVUxMKSkgeworCQlzY3NpYmFja19jbWRfZXhlYyhwZW5kaW5nX3JlcSk7CisJfQorCWVsc2Ug
eworCQlzY3NpYmFja19mYXN0X2ZsdXNoX2FyZWEocGVuZGluZ19yZXEpOworCQlzY3NpYmFja19k
b19yZXNwX3dpdGhfc2Vuc2UocGVuZGluZ19yZXEtPnNlbnNlX2J1ZmZlciwKKwkJICBwZW5kaW5n
X3JlcS0+cnNsdCwgcGVuZGluZ19yZXEtPnJlc2lkLCBwZW5kaW5nX3JlcSk7CisJfQorfQorCisK
Ky8qCisgIEZvbGxvd2luZyBhcmUgbm90IGN1c3RvbWl6YWJsZSBmdW5jdGlvbnMuCisqLwordm9p
ZCBzY3NpYmFja19lbXVsYXRpb25faW5pdCh2b2lkKQoreworCWludCBpOworCisJLyogSW5pdGlh
bGl6ZSB0byBkZWZhdWx0IHN0YXRlICovCisJZm9yIChpID0gMDsgaSA8IFZTQ1NJX01BWF9TQ1NJ
X09QX0NPREU7IGkrKykgeworCQliaXRtYXBbaV0gICAgICAgID0gKFZTQ1NJSUZfTkVFRF9FTVVM
QVRFX1JFUUJVRiB8CisJCQkJCVZTQ1NJSUZfTkVFRF9FTVVMQVRFX1JTUEJVRik7CisJCXByZV9m
dW5jdGlvbltpXSAgPSByZXNwX25vdF9zdXBwb3J0ZWRfY21kOworCQlwb3N0X2Z1bmN0aW9uW2ld
ID0gTlVMTDsKKwkJLyogbWVhbnMsCisJCSAgIC0gbm8gbmVlZCBmb3IgcHJlLWVtdWxhdGlvbgor
CQkgICAtIG5vIG5lZWQgZm9yIHBvc3QtZW11bGF0aW9uCisJCSAgIC0gY2FsbCBuYXRpdmUgZHJp
dmVyCisJCSovCisJfQorCisJLyoKKwkgIFJlZ2lzdGVyIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucyBi
ZWxvdyBhcyB5b3UgbmVlZC4KKwkgIChTZWUgc2NzaS9zY3NpLmggZm9yIGRlZmluaXRpb24gb2Yg
U0NTSSBvcF9jb2RlLikKKwkqLworCisJLyoKKwkgIEZvbGxvd2luZyBjb21tYW5kcyBkbyBub3Qg
cmVxdWlyZSBlbXVsYXRpb24uCisJKi8KKwlOT19FTVVMQVRFKFRFU1RfVU5JVF9SRUFEWSk7ICAg
ICAgIC8qMHgwMCovIC8qIHNkLHN0ICovCisJTk9fRU1VTEFURShSRVpFUk9fVU5JVCk7ICAgICAg
ICAgICAvKjB4MDEqLyAvKiBzdCAqLworCU5PX0VNVUxBVEUoUkVRVUVTVF9TRU5TRSk7ICAgICAg
ICAgLyoweDAzKi8KKwlOT19FTVVMQVRFKEZPUk1BVF9VTklUKTsgICAgICAgICAgIC8qMHgwNCov
CisJTk9fRU1VTEFURShSRUFEX0JMT0NLX0xJTUlUUyk7ICAgICAvKjB4MDUqLyAvKiBzdCAqLwor
CS8qTk9fRU1VTEFURShSRUFTU0lHTl9CTE9DS1MpOyAgICAgICAqLy8qMHgwNyovCisJTk9fRU1V
TEFURShJTklUSUFMSVpFX0VMRU1FTlRfU1RBVFVTKTsgLyoweDA3Ki8gLyogY2ggKi8KKwlOT19F
TVVMQVRFKFJFQURfNik7ICAgICAgICAgICAgICAgIC8qMHgwOCovIC8qIHNkLHN0ICovCisJTk9f
RU1VTEFURShXUklURV82KTsgICAgICAgICAgICAgICAvKjB4MGEqLyAvKiBzZCxzdCAqLworCU5P
X0VNVUxBVEUoU0VFS182KTsgICAgICAgICAgICAgICAgLyoweDBiKi8KKwkvKk5PX0VNVUxBVEUo
UkVBRF9SRVZFUlNFKTsgICAgICAgICAgKi8vKjB4MGYqLworCU5PX0VNVUxBVEUoV1JJVEVfRklM
RU1BUktTKTsgICAgICAgLyoweDEwKi8gLyogc3QgKi8KKwlOT19FTVVMQVRFKFNQQUNFKTsgICAg
ICAgICAgICAgICAgIC8qMHgxMSovIC8qIHN0ICovCisJTk9fRU1VTEFURShJTlFVSVJZKTsgICAg
ICAgICAgICAgICAvKjB4MTIqLworCS8qTk9fRU1VTEFURShSRUNPVkVSX0JVRkZFUkVEX0RBVEEp
OyAqLy8qMHgxNCovCisJTk9fRU1VTEFURShNT0RFX1NFTEVDVCk7ICAgICAgICAgICAvKjB4MTUq
LyAvKiBzdCAqLworCU5PX0VNVUxBVEUoUkVTRVJWRSk7ICAgICAgICAgICAgICAgLyoweDE2Ki8K
KwlOT19FTVVMQVRFKFJFTEVBU0UpOyAgICAgICAgICAgICAgIC8qMHgxNyovCisJLypOT19FTVVM
QVRFKENPUFkpOyAgICAgICAgICAgICAgICAgICovLyoweDE4Ki8KKwlOT19FTVVMQVRFKEVSQVNF
KTsgICAgICAgICAgICAgICAgIC8qMHgxOSovIC8qIHN0ICovCisJTk9fRU1VTEFURShNT0RFX1NF
TlNFKTsgICAgICAgICAgICAvKjB4MWEqLyAvKiBzdCAqLworCU5PX0VNVUxBVEUoU1RBUlRfU1RP
UCk7ICAgICAgICAgICAgLyoweDFiKi8gLyogc2Qsc3QgKi8KKwlOT19FTVVMQVRFKFJFQ0VJVkVf
RElBR05PU1RJQyk7ICAgIC8qMHgxYyovCisJTk9fRU1VTEFURShTRU5EX0RJQUdOT1NUSUMpOyAg
ICAgICAvKjB4MWQqLworCU5PX0VNVUxBVEUoQUxMT1dfTUVESVVNX1JFTU9WQUwpOyAgLyoweDFl
Ki8KKworCS8qTk9fRU1VTEFURShTRVRfV0lORE9XKTsgICAgICAgICAgICAqLy8qMHgyNCovCisJ
Tk9fRU1VTEFURShSRUFEX0NBUEFDSVRZKTsgICAgICAgICAvKjB4MjUqLyAvKiBzZCAqLworCU5P
X0VNVUxBVEUoUkVBRF8xMCk7ICAgICAgICAgICAgICAgLyoweDI4Ki8gLyogc2QgKi8KKwlOT19F
TVVMQVRFKFdSSVRFXzEwKTsgICAgICAgICAgICAgIC8qMHgyYSovIC8qIHNkICovCisJTk9fRU1V
TEFURShTRUVLXzEwKTsgICAgICAgICAgICAgICAvKjB4MmIqLyAvKiBzdCAqLworCU5PX0VNVUxB
VEUoUE9TSVRJT05fVE9fRUxFTUVOVCk7ICAgLyoweDJiKi8gLyogY2ggKi8KKwkvKk5PX0VNVUxB
VEUoV1JJVEVfVkVSSUZZKTsgICAgICAgICAgKi8vKjB4MmUqLworCS8qTk9fRU1VTEFURShWRVJJ
RlkpOyAgICAgICAgICAgICAgICAqLy8qMHgyZiovCisJLypOT19FTVVMQVRFKFNFQVJDSF9ISUdI
KTsgICAgICAgICAgICovLyoweDMwKi8KKwkvKk5PX0VNVUxBVEUoU0VBUkNIX0VRVUFMKTsgICAg
ICAgICAgKi8vKjB4MzEqLworCS8qTk9fRU1VTEFURShTRUFSQ0hfTE9XKTsgICAgICAgICAgICAq
Ly8qMHgzMiovCisJTk9fRU1VTEFURShTRVRfTElNSVRTKTsgICAgICAgICAgICAvKjB4MzMqLwor
CU5PX0VNVUxBVEUoUFJFX0ZFVENIKTsgICAgICAgICAgICAgLyoweDM0Ki8gLyogc3QhICovCisJ
Tk9fRU1VTEFURShSRUFEX1BPU0lUSU9OKTsgICAgICAgICAgLyoweDM0Ki8gLyogc3QgKi8KKwlO
T19FTVVMQVRFKFNZTkNIUk9OSVpFX0NBQ0hFKTsgICAgICAvKjB4MzUqLyAvKiBzZCAqLworCU5P
X0VNVUxBVEUoTE9DS19VTkxPQ0tfQ0FDSEUpOyAgICAgLyoweDM2Ki8KKwlOT19FTVVMQVRFKFJF
QURfREVGRUNUX0RBVEEpOyAgICAgIC8qMHgzNyovCisJTk9fRU1VTEFURShNRURJVU1fU0NBTik7
ICAgICAgICAgICAvKjB4MzgqLworCS8qTk9fRU1VTEFURShDT01QQVJFKTsgICAgICAgICAgICAg
ICAqLy8qMHgzOSovCisJLypOT19FTVVMQVRFKENPUFlfVkVSSUZZKTsgICAgICAgICAgICovLyow
eDNhKi8KKwlOT19FTVVMQVRFKFdSSVRFX0JVRkZFUik7ICAgICAgICAgIC8qMHgzYiovCisJTk9f
RU1VTEFURShSRUFEX0JVRkZFUik7ICAgICAgICAgICAvKjB4M2MqLyAvKiBvc3N0ICovCisJLypO
T19FTVVMQVRFKFVQREFURV9CTE9DSyk7ICAgICAgICAgICovLyoweDNkKi8KKwkvKk5PX0VNVUxB
VEUoUkVBRF9MT05HKTsgICAgICAgICAgICAgKi8vKjB4M2UqLworCS8qTk9fRU1VTEFURShXUklU
RV9MT05HKTsgICAgICAgICAgICAqLy8qMHgzZiovCisJLypOT19FTVVMQVRFKENIQU5HRV9ERUZJ
TklUSU9OKTsgICAgICovLyoweDQwKi8KKwkvKk5PX0VNVUxBVEUoV1JJVEVfU0FNRSk7ICAgICAg
ICAgICAgKi8vKjB4NDEqLworCU5PX0VNVUxBVEUoUkVBRF9UT0MpOyAgICAgICAgICAgICAgLyow
eDQzKi8gLyogc3IgKi8KKwlOT19FTVVMQVRFKExPR19TRUxFQ1QpOyAgICAgICAgICAgIC8qMHg0
YyovCisJTk9fRU1VTEFURShMT0dfU0VOU0UpOyAgICAgICAgICAgICAvKjB4NGQqLyAvKiBzdCEg
Ki8KKwkvKk5PX0VNVUxBVEUoTU9ERV9TRUxFQ1RfMTApOyAgICAgICAgKi8vKjB4NTUqLworCS8q
Tk9fRU1VTEFURShSRVNFUlZFXzEwKTsgICAgICAgICAgICAqLy8qMHg1NiovCisJLypOT19FTVVM
QVRFKFJFTEVBU0VfMTApOyAgICAgICAgICAgICovLyoweDU3Ki8KKwlOT19FTVVMQVRFKE1PREVf
U0VOU0VfMTApOyAgICAgICAgIC8qMHg1YSovIC8qIHNjc2lfbGliICovCisJLypOT19FTVVMQVRF
KFBFUlNJU1RFTlRfUkVTRVJWRV9JTik7ICovLyoweDVlKi8KKwkvKk5PX0VNVUxBVEUoUEVSU0lT
VEVOVF9SRVNFUlZFX09VVCk7ICovLyoweDVmKi8KKwkvKiAgICAgICAgICAgUkVQT1JUX0xVTlMg
ICAgICAgICAgICAgKi8vKjB4YTAqLy8qRnVsbCBlbXVsYWl0b24qLworCU5PX0VNVUxBVEUoTUFJ
TlRFTkFOQ0VfSU4pOyAgICAgICAgICAgLyoweGEzKi8gLyogSUZUIGFsdWEgKi8KKwlOT19FTVVM
QVRFKE1BSU5URU5BTkNFX09VVCk7ICAgICAgIC8qMHhhNCovIC8qIElGVCBhbHVhICovCisJTk9f
RU1VTEFURShNT1ZFX01FRElVTSk7ICAgICAgICAgICAvKjB4YTUqLyAvKiBjaCAqLworCU5PX0VN
VUxBVEUoRVhDSEFOR0VfTUVESVVNKTsgICAgICAgLyoweGE2Ki8gLyogY2ggKi8KKwkvKk5PX0VN
VUxBVEUoUkVBRF8xMik7ICAgICAgICAgICAgICAgKi8vKjB4YTgqLworCS8qTk9fRU1VTEFURShX
UklURV8xMik7ICAgICAgICAgICAgICAqLy8qMHhhYSovCisJLypOT19FTVVMQVRFKFdSSVRFX1ZF
UklGWV8xMik7ICAgICAgICovLyoweGFlKi8KKwkvKk5PX0VNVUxBVEUoU0VBUkNIX0hJR0hfMTIp
OyAgICAgICAgKi8vKjB4YjAqLworCS8qTk9fRU1VTEFURShTRUFSQ0hfRVFVQUxfMTIpOyAgICAg
ICAqLy8qMHhiMSovCisJLypOT19FTVVMQVRFKFNFQVJDSF9MT1dfMTIpOyAgICAgICAgICovLyow
eGIyKi8KKwlOT19FTVVMQVRFKFJFQURfRUxFTUVOVF9TVEFUVVMpOyAgIC8qMHhiOCovIC8qIGNo
ICovCisJTk9fRU1VTEFURShTRU5EX1ZPTFVNRV9UQUcpOyAgICAgICAvKjB4YjYqLyAvKiBjaCAq
LworCS8qTk9fRU1VTEFURShXUklURV9MT05HXzIpOyAgICAgICAgICAqLy8qMHhlYSovCisJTk9f
RU1VTEFURShSRUFEXzE2KTsgICAgICAgICAgICAgICAvKjB4ODgqLyAvKiBzZCA+MlRCICovCisJ
Tk9fRU1VTEFURShXUklURV8xNik7ICAgICAgICAgICAgICAvKjB4OGEqLyAvKiBzZCA+MlRCICov
CisJTk9fRU1VTEFURShWRVJJRllfMTYpOwkgICAgICAgICAgIC8qMHg4ZiovCisJTk9fRU1VTEFU
RShTRVJWSUNFX0FDVElPTl9JTik7ICAgICAvKjB4OWUqLyAvKiBzZCA+MlRCICovCisKKy8qIHN0
OiBRRkFfUkVRVUVTVF9CTE9DSywgUUZBX1NFRUtfQkxPQ0sgbWlnaHQgYmUgbmVlZGVkID8gKi8K
KwkvKgorCSAgRm9sbG93aW5nIGNvbW1hbmRzIHJlcXVpcmUgZW11bGF0aW9uLgorCSovCisJcHJl
X2Z1bmN0aW9uW1JFUE9SVF9MVU5TXSA9IF9fcmVwb3J0X2x1bnM7CisJYml0bWFwW1JFUE9SVF9M
VU5TXSA9IChWU0NTSUlGX05FRURfRU1VTEFURV9SRVFCVUYgfAorCQkJCQlWU0NTSUlGX05FRURf
RU1VTEFURV9SU1BCVUYpOworCisJcmV0dXJuOworfQpkaWZmIC1ydXBOIHhlbi9kcml2ZXJzL3Nj
c2kveGVuLXNjc2liYWNrL2ludGVyZmFjZS5jIHhlbmMvZHJpdmVycy9zY3NpL3hlbi1zY3NpYmFj
ay9pbnRlcmZhY2UuYwotLS0geGVuL2RyaXZlcnMvc2NzaS94ZW4tc2NzaWJhY2svaW50ZXJmYWNl
LmMJMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAwMDAgLTA3MDAKKysrIHhlbmMvZHJpdmVycy9z
Y3NpL3hlbi1zY3NpYmFjay9pbnRlcmZhY2UuYwkyMDEyLTAyLTI0IDE0OjU2OjEzLjUzODk3ODMw
MCAtMDcwMApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIGludGVyZmFjZSBtYW5hZ2VtZW50Lgor
ICoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgRlVKSVRTVSBMaW1pdGVkCisgKgorICogQmFzZWQg
b24gdGhlIGJsa2JhY2sgZHJpdmVyIGNvZGUuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy
CisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgb3IsIHdo
ZW4gZGlzdHJpYnV0ZWQKKyAqIHNlcGFyYXRlbHkgZnJvbSB0aGUgTGludXgga2VybmVsIG9yIGlu
Y29ycG9yYXRlZCBpbnRvIG90aGVyCisgKiBzb2Z0d2FyZSBwYWNrYWdlcywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGxpY2Vuc2U6CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg
dGhpcyBzb3VyY2UgZmlsZSAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy
ZSB3aXRob3V0CisgKiByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LAorICogbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsCisg
KiBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor
ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv
bnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg
SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB
QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ
U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K
KyAqLworCisjaW5jbHVkZSA8c2NzaS9zY3NpLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2hvc3Qu
aD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfZGV2aWNlLmg+CisjaW5jbHVkZSAiY29tbW9uLmgiCisK
KyNpbmNsdWRlIDx4ZW4vZXZ0Y2huLmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgorI2lu
Y2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisKKworc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpzY3Np
YmFja19jYWNoZXA7CisKK3N0cnVjdCB2c2NzaWJrX2luZm8gKnZzY3NpYmtfaW5mb19hbGxvYyhk
b21pZF90IGRvbWlkKQoreworCXN0cnVjdCB2c2NzaWJrX2luZm8gKmluZm87CisKKwlpbmZvID0g
a21lbV9jYWNoZV96YWxsb2Moc2NzaWJhY2tfY2FjaGVwLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWlu
Zm8pCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJaW5mby0+ZG9taWQgPSBkb21pZDsK
KwlzcGluX2xvY2tfaW5pdCgmaW5mby0+cmluZ19sb2NrKTsKKwlhdG9taWNfc2V0KCZpbmZvLT5u
cl91bnJlcGxpZWRfcmVxcywgMCk7CisJaW5pdF93YWl0cXVldWVfaGVhZCgmaW5mby0+d3EpOwor
CWluaXRfd2FpdHF1ZXVlX2hlYWQoJmluZm8tPndhaXRpbmdfdG9fZnJlZSk7CisKKwlyZXR1cm4g
aW5mbzsKK30KKworaW50IHNjc2liYWNrX2luaXRfc3Jpbmcoc3RydWN0IHZzY3NpYmtfaW5mbyAq
aW5mbywKKwkJdW5zaWduZWQgbG9uZyByaW5nX3JlZiwgdW5zaWduZWQgaW50IGV2dGNobikKK3sK
KwlzdHJ1Y3QgdnNjc2lpZl9zcmluZyAqc3Jpbmc7CisJaW50IGVycjsKKworCWlmICghaW5mbykK
KwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoaW5mby0+aXJxKSB7CisJCXByaW50ayhLRVJOX0VS
UiAic2NzaWJhY2s6IEFscmVhZHkgY29ubmVjdGVkIHRocm91Z2g/XG4iKTsKKwkJcmV0dXJuIC0x
OworCX0KKworCWVyciA9IHhlbmJ1c19tYXBfcmluZ192YWxsb2MoaW5mby0+ZGV2LCByaW5nX3Jl
ZiwgJmluZm8tPnJpbmdfYXJlYSk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiAtRU5PTUVNOwor
CisJc3JpbmcgPSAoc3RydWN0IHZzY3NpaWZfc3JpbmcgKikgaW5mby0+cmluZ19hcmVhOworCUJB
Q0tfUklOR19JTklUKCZpbmZvLT5yaW5nLCBzcmluZywgUEFHRV9TSVpFKTsKKworCWVyciA9IGJp
bmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycWhhbmRsZXIoCisJCQlpbmZvLT5kb21pZCwgZXZ0
Y2huLAorCQkJc2NzaWJhY2tfaW50ciwgMCwgInZzY3NpaWYtYmFja2VuZCIsIGluZm8pOworCWlm
IChlcnIgPCAwKQorCQlnb3RvIHVubWFwX3BhZ2U7CisKKwlpbmZvLT5pcnEgPSBlcnI7CisKKwly
ZXR1cm4gMDsKKwordW5tYXBfcGFnZToKKwl4ZW5idXNfdW5tYXBfcmluZ192ZnJlZShpbmZvLT5k
ZXYsIGluZm8tPnJpbmdfYXJlYSk7CisKKwlyZXR1cm4gZXJyOworfQorCit2b2lkIHNjc2liYWNr
X2Rpc2Nvbm5lY3Qoc3RydWN0IHZzY3NpYmtfaW5mbyAqaW5mbykKK3sKKwlpZiAoaW5mby0+a3Ro
cmVhZCkgeworCQlrdGhyZWFkX3N0b3AoaW5mby0+a3RocmVhZCk7CisJCWluZm8tPmt0aHJlYWQg
PSBOVUxMOworCX0KKworCXdhaXRfZXZlbnQoaW5mby0+d2FpdGluZ190b19mcmVlLAorCQlhdG9t
aWNfcmVhZCgmaW5mby0+bnJfdW5yZXBsaWVkX3JlcXMpID09IDApOworCisJaWYgKGluZm8tPmly
cSkgeworCQl1bmJpbmRfZnJvbV9pcnFoYW5kbGVyKGluZm8tPmlycSwgaW5mbyk7CisJCWluZm8t
PmlycSA9IDA7CisJfQorCisJaWYgKGluZm8tPnJpbmcuc3JpbmcgfHwgaW5mby0+cmluZ19hcmVh
KSB7CisJCXhlbmJ1c191bm1hcF9yaW5nX3ZmcmVlKGluZm8tPmRldiwgaW5mby0+cmluZ19hcmVh
KTsKKwkJaW5mby0+cmluZy5zcmluZyA9IE5VTEw7CisJCWluZm8tPnJpbmdfYXJlYSA9IE5VTEw7
CisJfQorfQorCit2b2lkIHNjc2liYWNrX2ZyZWUoc3RydWN0IHZzY3NpYmtfaW5mbyAqaW5mbykK
K3sKKwlrbWVtX2NhY2hlX2ZyZWUoc2NzaWJhY2tfY2FjaGVwLCBpbmZvKTsKK30KKworaW50IF9f
aW5pdCBzY3NpYmFja19pbnRlcmZhY2VfaW5pdCh2b2lkKQoreworCXNjc2liYWNrX2NhY2hlcCA9
IGttZW1fY2FjaGVfY3JlYXRlKCJ2c2NzaWlmX2NhY2hlIiwKKwkJc2l6ZW9mKHN0cnVjdCB2c2Nz
aWJrX2luZm8pLCAwLCAwLCBOVUxMKTsKKwlpZiAoIXNjc2liYWNrX2NhY2hlcCkgeworCQlwcmlu
dGsoS0VSTl9FUlIgInNjc2liYWNrOiBjYW4ndCBpbml0IHNjc2kgY2FjaGVcbiIpOworCQlyZXR1
cm4gLUVOT01FTTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBzY3NpYmFja19pbnRlcmZh
Y2VfZXhpdCh2b2lkKQoreworCWttZW1fY2FjaGVfZGVzdHJveShzY3NpYmFja19jYWNoZXApOwor
fQpkaWZmIC1ydXBOIHhlbi9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL3Njc2liYWNrLmMgeGVu
Yy9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL3Njc2liYWNrLmMKLS0tIHhlbi9kcml2ZXJzL3Nj
c2kveGVuLXNjc2liYWNrL3Njc2liYWNrLmMJMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAwMDAg
LTA3MDAKKysrIHhlbmMvZHJpdmVycy9zY3NpL3hlbi1zY3NpYmFjay9zY3NpYmFjay5jCTIwMTIt
MDItMjQgMTQ6NTY6MTMuNTM4OTc4MzAwIC0wNzAwCkBAIC0wLDAgKzEsNzU3IEBACisvKgorICog
WGVuIFNDU0kgYmFja2VuZCBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEZVSklU
U1UgTGltaXRlZAorICoKKyAqIEJhc2VkIG9uIHRoZSBibGtiYWNrIGRyaXZlciBjb2RlLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IG9yLCB3aGVuIGRpc3RyaWJ1dGVkCisgKiBzZXBhcmF0ZWx5IGZy
b20gdGhlIExpbnV4IGtlcm5lbCBvciBpbmNvcnBvcmF0ZWQgaW50byBvdGhlcgorICogc29mdHdh
cmUgcGFja2FnZXMsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBsaWNlbnNlOgorICoKKyAqIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc291cmNlIGZpbGUgKHRoZSAiU29mdHdhcmUi
KSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwK
KyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg
U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK
KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2Nr
Lmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4K
KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPHhlbi9iYWxsb29uLmg+CisjaW5j
bHVkZSA8YXNtL2h5cGVydmlzb3IuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KKyNpbmNsdWRl
IDxzY3NpL3Njc2lfY21uZC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CisjaW5jbHVk
ZSA8c2NzaS9zY3NpX2RldmljZS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9kYmcuaD4KKyNpbmNs
dWRlIDxzY3NpL3Njc2lfZWguaD4KKworI2luY2x1ZGUgImNvbW1vbi5oIgorCisKK3N0cnVjdCBs
aXN0X2hlYWQgcGVuZGluZ19mcmVlOworREVGSU5FX1NQSU5MT0NLKHBlbmRpbmdfZnJlZV9sb2Nr
KTsKK0RFQ0xBUkVfV0FJVF9RVUVVRV9IRUFEKHBlbmRpbmdfZnJlZV93cSk7CisKK2ludCB2c2Nz
aWlmX3JlcXMgPSBWU0NTSUlGX0JBQ0tfTUFYX1BFTkRJTkdfUkVRUzsKK21vZHVsZV9wYXJhbV9u
YW1lZChyZXFzLCB2c2NzaWlmX3JlcXMsIGludCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKHJlcXMs
ICJOdW1iZXIgb2Ygc2NzaWJhY2sgcmVxdWVzdHMgdG8gYWxsb2NhdGUiKTsKKworc3RhdGljIHVu
c2lnbmVkIGludCBsb2dfcHJpbnRfc3RhdDsKK21vZHVsZV9wYXJhbShsb2dfcHJpbnRfc3RhdCwg
aW50LCAwNjQ0KTsKKworI2RlZmluZSBTQ1NJQkFDS19JTlZBTElEX0hBTkRMRSAofjApCisKK3N0
YXRpYyBwZW5kaW5nX3JlcV90ICpwZW5kaW5nX3JlcXM7CitzdGF0aWMgc3RydWN0IHBhZ2UgKipw
ZW5kaW5nX3BhZ2VzOworc3RhdGljIGdyYW50X2hhbmRsZV90ICpwZW5kaW5nX2dyYW50X2hhbmRs
ZXM7CisKK3N0YXRpYyBpbnQgdmFkZHJfcGFnZW5yKHBlbmRpbmdfcmVxX3QgKnJlcSwgaW50IHNl
ZykKK3sKKwlyZXR1cm4gKHJlcSAtIHBlbmRpbmdfcmVxcykgKiBWU0NTSUlGX1NHX1RBQkxFU0la
RSArIHNlZzsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgdmFkZHIocGVuZGluZ19yZXFfdCAq
cmVxLCBpbnQgc2VnKQoreworCXVuc2lnbmVkIGxvbmcgcGZuID0gcGFnZV90b19wZm4ocGVuZGlu
Z19wYWdlc1t2YWRkcl9wYWdlbnIocmVxLCBzZWcpXSk7CisJcmV0dXJuICh1bnNpZ25lZCBsb25n
KXBmbl90b19rYWRkcihwZm4pOworfQorCisjZGVmaW5lIHBlbmRpbmdfaGFuZGxlKF9yZXEsIF9z
ZWcpIFwKKwkocGVuZGluZ19ncmFudF9oYW5kbGVzW3ZhZGRyX3BhZ2VucihfcmVxLCBfc2VnKV0p
CisKKwordm9pZCBzY3NpYmFja19mYXN0X2ZsdXNoX2FyZWEocGVuZGluZ19yZXFfdCAqcmVxKQor
eworCXN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIHVubWFwW1ZTQ1NJSUZfU0dfVEFCTEVT
SVpFXTsKKwl1bnNpZ25lZCBpbnQgaSwgaW52Y291bnQgPSAwOworCWdyYW50X2hhbmRsZV90IGhh
bmRsZTsKKwlpbnQgZXJyOworCisJaWYgKHJlcS0+bnJfc2VnbWVudHMpIHsKKwkJZm9yIChpID0g
MDsgaSA8IHJlcS0+bnJfc2VnbWVudHM7IGkrKykgeworCQkJaGFuZGxlID0gcGVuZGluZ19oYW5k
bGUocmVxLCBpKTsKKwkJCWlmIChoYW5kbGUgPT0gU0NTSUJBQ0tfSU5WQUxJRF9IQU5ETEUpCisJ
CQkJY29udGludWU7CisJCQlnbnR0YWJfc2V0X3VubWFwX29wKCZ1bm1hcFtpXSwgdmFkZHIocmVx
LCBpKSwKKwkJCQkJCUdOVE1BUF9ob3N0X21hcCwgaGFuZGxlKTsKKwkJCXBlbmRpbmdfaGFuZGxl
KHJlcSwgaSkgPSBTQ1NJQkFDS19JTlZBTElEX0hBTkRMRTsKKwkJCWludmNvdW50Kys7CisJCX0K
KworCQllcnIgPSBIWVBFUlZJU09SX2dyYW50X3RhYmxlX29wKAorCQkJR05UVEFCT1BfdW5tYXBf
Z3JhbnRfcmVmLCB1bm1hcCwgaW52Y291bnQpOworCQlCVUdfT04oZXJyKTsKKwkJZm9yIChpID0g
MDsgaSA8aW52Y291bnQ7IGkrKykgeworCQkJZXJyID0gbTJwX3JlbW92ZV9vdmVycmlkZSgKKwkJ
CQl2aXJ0X3RvX3BhZ2UodW5tYXBbaV0uaG9zdF9hZGRyKSwgZmFsc2UpOworCQkJV0FSTl9PTihl
cnIpOworCQl9CisJCWtmcmVlKHJlcS0+c2dsKTsKKwl9CisKKwlyZXR1cm47Cit9CisKKworc3Rh
dGljIHBlbmRpbmdfcmVxX3QgKiBhbGxvY19yZXEoc3RydWN0IHZzY3NpYmtfaW5mbyAqaW5mbykK
K3sKKwlwZW5kaW5nX3JlcV90ICpyZXEgPSBOVUxMOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisK
KwlzcGluX2xvY2tfaXJxc2F2ZSgmcGVuZGluZ19mcmVlX2xvY2ssIGZsYWdzKTsKKwlpZiAoIWxp
c3RfZW1wdHkoJnBlbmRpbmdfZnJlZSkpIHsKKwkJcmVxID0gbGlzdF9lbnRyeShwZW5kaW5nX2Zy
ZWUubmV4dCwgcGVuZGluZ19yZXFfdCwgZnJlZV9saXN0KTsKKwkJbGlzdF9kZWwoJnJlcS0+ZnJl
ZV9saXN0KTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGVuZGluZ19mcmVlX2xvY2ss
IGZsYWdzKTsKKwlyZXR1cm4gcmVxOworfQorCisKK3N0YXRpYyB2b2lkIGZyZWVfcmVxKHBlbmRp
bmdfcmVxX3QgKnJlcSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCB3YXNfZW1wdHk7
CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcGVuZGluZ19mcmVlX2xvY2ssIGZsYWdzKTsKKwl3YXNf
ZW1wdHkgPSBsaXN0X2VtcHR5KCZwZW5kaW5nX2ZyZWUpOworCWxpc3RfYWRkKCZyZXEtPmZyZWVf
bGlzdCwgJnBlbmRpbmdfZnJlZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGVuZGluZ19m
cmVlX2xvY2ssIGZsYWdzKTsKKwlpZiAod2FzX2VtcHR5KQorCQl3YWtlX3VwKCZwZW5kaW5nX2Zy
ZWVfd3EpOworfQorCisKK3N0YXRpYyB2b2lkIHNjc2liYWNrX25vdGlmeV93b3JrKHN0cnVjdCB2
c2NzaWJrX2luZm8gKmluZm8pCit7CisJaW5mby0+d2FpdGluZ19yZXFzID0gMTsKKwl3YWtlX3Vw
KCZpbmZvLT53cSk7Cit9CisKK3ZvaWQgc2NzaWJhY2tfZG9fcmVzcF93aXRoX3NlbnNlKGNoYXIg
KnNlbnNlX2J1ZmZlciwgaW50MzJfdCByZXN1bHQsCisJCQl1aW50MzJfdCByZXNpZCwgcGVuZGlu
Z19yZXFfdCAqcGVuZGluZ19yZXEpCit7CisJdnNjc2lpZl9yZXNwb25zZV90ICpyaW5nX3JlczsK
KwlzdHJ1Y3QgdnNjc2lia19pbmZvICppbmZvID0gcGVuZGluZ19yZXEtPmluZm87CisJaW50IG5v
dGlmeTsKKwlpbnQgbW9yZV90b19kbyA9IDE7CisJc3RydWN0IHNjc2lfc2Vuc2VfaGRyIHNzaGRy
OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlEUFJJTlRLKCIlc1xuIixfX0ZVTkNUSU9OX18p
OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmluZm8tPnJpbmdfbG9jaywgZmxhZ3MpOworCisJcmlu
Z19yZXMgPSBSSU5HX0dFVF9SRVNQT05TRSgmaW5mby0+cmluZywgaW5mby0+cmluZy5yc3BfcHJv
ZF9wdnQpOworCWluZm8tPnJpbmcucnNwX3Byb2RfcHZ0Kys7CisKKwlyaW5nX3Jlcy0+cnNsdCAg
ID0gcmVzdWx0OworCXJpbmdfcmVzLT5ycWlkICAgPSBwZW5kaW5nX3JlcS0+cnFpZDsKKworCWlm
IChzZW5zZV9idWZmZXIgIT0gTlVMTCkgeworCQlpZiAoc2NzaV9ub3JtYWxpemVfc2Vuc2Uoc2Vu
c2VfYnVmZmVyLAorCQkJc2l6ZW9mKHNlbnNlX2J1ZmZlciksICZzc2hkcikpIHsKKworCQkJaW50
IGxlbiA9IDggKyBzZW5zZV9idWZmZXJbN107CisKKwkJCWlmIChsZW4gPiBWU0NTSUlGX1NFTlNF
X0JVRkZFUlNJWkUpCisJCQkJbGVuID0gVlNDU0lJRl9TRU5TRV9CVUZGRVJTSVpFOworCisJCQlt
ZW1jcHkocmluZ19yZXMtPnNlbnNlX2J1ZmZlciwgc2Vuc2VfYnVmZmVyLCBsZW4pOworCQkJcmlu
Z19yZXMtPnNlbnNlX2xlbiA9IGxlbjsKKwkJfQorCX0gZWxzZSB7CisJCXJpbmdfcmVzLT5zZW5z
ZV9sZW4gPSAwOworCX0KKworCXJpbmdfcmVzLT5yZXNpZHVhbF9sZW4gPSByZXNpZDsKKworCVJJ
TkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05PVElGWSgmaW5mby0+cmluZywgbm90aWZ5KTsK
KwlpZiAoaW5mby0+cmluZy5yc3BfcHJvZF9wdnQgPT0gaW5mby0+cmluZy5yZXFfY29ucykgewor
CQlSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNUUygmaW5mby0+cmluZywgbW9yZV90b19kbyk7
CisJfSBlbHNlIGlmIChSSU5HX0hBU19VTkNPTlNVTUVEX1JFUVVFU1RTKCZpbmZvLT5yaW5nKSkg
eworCQltb3JlX3RvX2RvID0gMTsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbmZv
LT5yaW5nX2xvY2ssIGZsYWdzKTsKKworCWlmIChtb3JlX3RvX2RvKQorCQlzY3NpYmFja19ub3Rp
Znlfd29yayhpbmZvKTsKKworCWlmIChub3RpZnkpCisJCW5vdGlmeV9yZW1vdGVfdmlhX2lycShp
bmZvLT5pcnEpOworCisJZnJlZV9yZXEocGVuZGluZ19yZXEpOworfQorCitzdGF0aWMgdm9pZCBz
Y3NpYmFja19wcmludF9zdGF0dXMoY2hhciAqc2Vuc2VfYnVmZmVyLCBpbnQgZXJyb3JzLAorCQkJ
CQlwZW5kaW5nX3JlcV90ICpwZW5kaW5nX3JlcSkKK3sKKwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNk
ZXYgPSBwZW5kaW5nX3JlcS0+c2RldjsKKworCXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6ICVk
OiVkOiVkOiVkICIsc2Rldi0+aG9zdC0+aG9zdF9ubywKKwkJCXNkZXYtPmNoYW5uZWwsIHNkZXYt
PmlkLCBzZGV2LT5sdW4pOworCXByaW50ayhLRVJOX0VSUiAic3RhdHVzID0gMHglMDJ4LCBtZXNz
YWdlID0gMHglMDJ4LCBob3N0ID0gMHglMDJ4LCBkcml2ZXIgPSAweCUwMnhcbiIsCisJCQlzdGF0
dXNfYnl0ZShlcnJvcnMpLCBtc2dfYnl0ZShlcnJvcnMpLAorCQkJaG9zdF9ieXRlKGVycm9ycyks
IGRyaXZlcl9ieXRlKGVycm9ycykpOworCisJcHJpbnRrKEtFUk5fRVJSICJzY3NpYmFjazogY21u
ZFswXT0weCUwMlhcbiIsCisJCQlwZW5kaW5nX3JlcS0+Y21uZFswXSk7CisKKwlpZiAoQ0hFQ0tf
Q09ORElUSU9OICYgc3RhdHVzX2J5dGUoZXJyb3JzKSkKKwkJX19zY3NpX3ByaW50X3NlbnNlKCJz
Y3NpYmFjayIsIHNlbnNlX2J1ZmZlciwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKTsKK30KKworCitz
dGF0aWMgdm9pZCBzY3NpYmFja19jbWRfZG9uZShzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBpbnQgdXB0
b2RhdGUpCit7CisJcGVuZGluZ19yZXFfdCAqcGVuZGluZ19yZXEgPSByZXEtPmVuZF9pb19kYXRh
OworCXVuc2lnbmVkIGNoYXIgKnNlbnNlX2J1ZmZlcjsKKwl1bnNpZ25lZCBpbnQgcmVzaWQ7CisJ
aW50IGVycm9yczsKKworCXNlbnNlX2J1ZmZlciA9IHJlcS0+c2Vuc2U7CisJcmVzaWQgICAgICAg
ID0gYmxrX3JxX2J5dGVzKHJlcSk7CisJZXJyb3JzICAgICAgID0gcmVxLT5lcnJvcnM7CisKKwlp
ZiAoZXJyb3JzICE9IDApIHsKKwkJaWYgKGxvZ19wcmludF9zdGF0KQorCQkJc2NzaWJhY2tfcHJp
bnRfc3RhdHVzKHNlbnNlX2J1ZmZlciwgZXJyb3JzLCBwZW5kaW5nX3JlcSk7CisJfQorCisJLyog
VGhlIEhvc3QgbW9kZSBpcyB0aHJvdWdoIGFzIGZvciBFbXVsYXRpb24uICovCisJaWYgKHBlbmRp
bmdfcmVxLT5pbmZvLT5mZWF0dXJlICE9IFZTQ1NJX1RZUEVfSE9TVCkKKwkJc2NzaWJhY2tfcnNw
X2VtdWxhdGlvbihwZW5kaW5nX3JlcSk7CisKKwlzY3NpYmFja19mYXN0X2ZsdXNoX2FyZWEocGVu
ZGluZ19yZXEpOworCXNjc2liYWNrX2RvX3Jlc3Bfd2l0aF9zZW5zZShzZW5zZV9idWZmZXIsIGVy
cm9ycywgcmVzaWQsIHBlbmRpbmdfcmVxKTsKKwlzY3NpYmFja19wdXQocGVuZGluZ19yZXEtPmlu
Zm8pOworCisJX19ibGtfcHV0X3JlcXVlc3QocmVxLT5xLCByZXEpOworfQorCisKK3N0YXRpYyBp
bnQgc2NzaWJhY2tfZ250dGFiX2RhdGFfbWFwKHZzY3NpaWZfcmVxdWVzdF90ICpyaW5nX3JlcSwK
KwkJCQkJcGVuZGluZ19yZXFfdCAqcGVuZGluZ19yZXEpCit7CisJdTMyIGZsYWdzOworCWludCB3
cml0ZTsKKwlpbnQgaSwgZXJyID0gMDsKKwl1bnNpZ25lZCBpbnQgZGF0YV9sZW4gPSAwOworCXN0
cnVjdCBnbnR0YWJfbWFwX2dyYW50X3JlZiBtYXBbVlNDU0lJRl9TR19UQUJMRVNJWkVdOworCXN0
cnVjdCB2c2NzaWJrX2luZm8gKmluZm8gICA9IHBlbmRpbmdfcmVxLT5pbmZvOworCisJaW50IGRh
dGFfZGlyID0gcGVuZGluZ19yZXEtPnNjX2RhdGFfZGlyZWN0aW9uOworCXVuc2lnbmVkIGludCBu
cl9zZWdtZW50cyA9ICh1bnNpZ25lZCBpbnQpcGVuZGluZ19yZXEtPm5yX3NlZ21lbnRzOworCisJ
d3JpdGUgPSAoZGF0YV9kaXIgPT0gRE1BX1RPX0RFVklDRSk7CisKKwlpZiAobnJfc2VnbWVudHMp
IHsKKwkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKworCQkvKiBmcmVlIG9mIChzZ2wpIGluIGZh
c3RfZmx1c2hfYXJlYSgpKi8KKwkJcGVuZGluZ19yZXEtPnNnbCA9IGttYWxsb2Moc2l6ZW9mKHN0
cnVjdCBzY2F0dGVybGlzdCkgKiBucl9zZWdtZW50cywKKwkJCQkJCUdGUF9LRVJORUwpOworCQlp
ZiAoIXBlbmRpbmdfcmVxLT5zZ2wpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6ICVz
OiBrbWFsbG9jKCkgZXJyb3IuXG4iLCBfX0ZVTkNUSU9OX18pOworCQkJcmV0dXJuIC1FTk9NRU07
CisJCX0KKworCQlzZ19pbml0X3RhYmxlKHBlbmRpbmdfcmVxLT5zZ2wsIG5yX3NlZ21lbnRzKTsK
KworCQlmb3IgKGkgPSAwOyBpIDwgbnJfc2VnbWVudHM7IGkrKykgeworCQkJZmxhZ3MgPSBHTlRN
QVBfaG9zdF9tYXA7CisJCQlpZiAod3JpdGUpCisJCQkJZmxhZ3MgfD0gR05UTUFQX3JlYWRvbmx5
OworCisJCQlnbnR0YWJfc2V0X21hcF9vcCgmbWFwW2ldLCB2YWRkcihwZW5kaW5nX3JlcSwgaSks
IGZsYWdzLAorCQkJCQkJcmluZ19yZXEtPnNlZ1tpXS5ncmVmLAorCQkJCQkJaW5mby0+ZG9taWQp
OworCQl9CisKKwkJZXJyID0gSFlQRVJWSVNPUl9ncmFudF90YWJsZV9vcChHTlRUQUJPUF9tYXBf
Z3JhbnRfcmVmLCBtYXAsIG5yX3NlZ21lbnRzKTsKKwkJQlVHX09OKGVycik7CisKKwkJLyogUmV0
cnkgbWFwcyB3aXRoIEdOVFNUX2VhZ2FpbiAqLworCQlmb3IoaT0wOyBpIDwgbnJfc2VnbWVudHM7
IGkrKykgeworCQkgICAgd2hpbGUodW5saWtlbHkobWFwW2ldLnN0YXR1cyA9PSBHTlRTVF9lYWdh
aW4pKQorCQkgICAgeworCQkJCW1zbGVlcCgxMCk7CisJCQkJZXJyID0gSFlQRVJWSVNPUl9ncmFu
dF90YWJsZV9vcChHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmLAorCQkJCQkJCSZtYXBbaV0sCisJCQkJ
CQkJMSk7CisJCQkJQlVHX09OKGVycik7CisJCSAgICB9CisJCX0KKworCQlmb3JfZWFjaF9zZyAo
cGVuZGluZ19yZXEtPnNnbCwgc2csIG5yX3NlZ21lbnRzLCBpKSB7CisJCQlzdHJ1Y3QgcGFnZSAq
cGc7CisKKwkJCWlmICh1bmxpa2VseShtYXBbaV0uc3RhdHVzICE9IDApKSB7CisJCQkJcHJpbnRr
KEtFUk5fRVJSICJzY3NpYmFjazogaW52YWxpZCBidWZmZXIgLS0gY291bGQgbm90IHJlbWFwIGl0
OiAiIFwKKwkJCQkJIiVkLyVkLCBlcnI6JWRcbiIsIGksIG5yX3NlZ21lbnRzLCBtYXBbaV0uc3Rh
dHVzKTsKKwkJCQltYXBbaV0uaGFuZGxlID0gU0NTSUJBQ0tfSU5WQUxJRF9IQU5ETEU7CisJCQkJ
ZXJyIHw9IDE7CisJCQl9CisKKwkJCXBlbmRpbmdfaGFuZGxlKHBlbmRpbmdfcmVxLCBpKSA9IG1h
cFtpXS5oYW5kbGU7CisKKwkJCWlmIChlcnIpCisJCQkJY29udGludWU7CisKKwkJCXBnID0gcGVu
ZGluZ19wYWdlc1t2YWRkcl9wYWdlbnIocGVuZGluZ19yZXEsIGkpXTsKKworCQkJbTJwX2FkZF9v
dmVycmlkZShQRk5fRE9XTihtYXBbaV0uZGV2X2J1c19hZGRyKSwgcGcsIGZhbHNlKTsKKwkJCXNn
X3NldF9wYWdlKHNnLCBwZywgcmluZ19yZXEtPnNlZ1tpXS5sZW5ndGgsCisJCQkJICAgIHJpbmdf
cmVxLT5zZWdbaV0ub2Zmc2V0KTsKKwkJCWRhdGFfbGVuICs9IHNnLT5sZW5ndGg7CisKKwkJCWJh
cnJpZXIoKTsKKwkJCWlmIChzZy0+b2Zmc2V0ID49IFBBR0VfU0laRSB8fAorCQkJICAgIHNnLT5s
ZW5ndGggPiBQQUdFX1NJWkUgfHwKKwkJCSAgICBzZy0+b2Zmc2V0ICsgc2ctPmxlbmd0aCA+IFBB
R0VfU0laRSkKKwkJCQllcnIgfD0gMTsKKworCQl9CisKKwkJaWYgKGVycikKKwkJCWdvdG8gZmFp
bF9mbHVzaDsKKwl9CisKKwlwZW5kaW5nX3JlcS0+cmVxdWVzdF9idWZmbGVuID0gZGF0YV9sZW47
CisKKwlyZXR1cm4gMDsKKworZmFpbF9mbHVzaDoKKwlzY3NpYmFja19mYXN0X2ZsdXNoX2FyZWEo
cGVuZGluZ19yZXEpOworCXJldHVybiAtRU5PTUVNOworfQorCisvKiBxdW90ZWQgc2NzaV9saWIu
Yy9zY3NpX2JpX2VuZGlvICovCitzdGF0aWMgdm9pZCBzY3NpYmFja19iaV9lbmRpbyhzdHJ1Y3Qg
YmlvICpiaW8sIGludCBlcnJvcikKK3sKKwliaW9fcHV0KGJpbyk7Cit9CisKKworCisvKiBxdW90
ZWQgc2NzaV9saWIuYy9zY3NpX3JlcV9tYXBfc2cgLiAqLworc3RhdGljIHN0cnVjdCBiaW8gKnJl
cXVlc3RfbWFwX3NnKHBlbmRpbmdfcmVxX3QgKnBlbmRpbmdfcmVxKQoreworCXN0cnVjdCByZXF1
ZXN0X3F1ZXVlICpxID0gcGVuZGluZ19yZXEtPnNkZXYtPnJlcXVlc3RfcXVldWU7CisJdW5zaWdu
ZWQgaW50IG5zZWdzID0gKHVuc2lnbmVkIGludClwZW5kaW5nX3JlcS0+bnJfc2VnbWVudHM7CisJ
dW5zaWduZWQgaW50IGksIGxlbiwgYnl0ZXMsIG9mZiwgbnJfcGFnZXMsIG5yX3ZlY3MgPSAwOwor
CXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJc3RydWN0IGJp
byAqYmlvID0gTlVMTCwgKmJpb19maXJzdCA9IE5VTEwsICpiaW9fbGFzdCA9IE5VTEw7CisJaW50
IGVycjsKKworCWZvcl9lYWNoX3NnIChwZW5kaW5nX3JlcS0+c2dsLCBzZywgbnNlZ3MsIGkpIHsK
KwkJcGFnZSA9IHNnX3BhZ2Uoc2cpOworCQlvZmYgPSBzZy0+b2Zmc2V0OworCQlsZW4gPSBzZy0+
bGVuZ3RoOworCisJCW5yX3BhZ2VzID0gKGxlbiArIG9mZiArIFBBR0VfU0laRSAtIDEpID4+IFBB
R0VfU0hJRlQ7CisJCXdoaWxlIChsZW4gPiAwKSB7CisJCQlieXRlcyA9IG1pbl90KHVuc2lnbmVk
IGludCwgbGVuLCBQQUdFX1NJWkUgLSBvZmYpOworCisJCQlpZiAoIWJpbykgeworCQkJCW5yX3Zl
Y3MgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIEJJT19NQVhfUEFHRVMsCisJCQkJCSAJbnJfcGFnZXMp
OworCQkJCW5yX3BhZ2VzIC09IG5yX3ZlY3M7CisJCQkJYmlvID0gYmlvX2FsbG9jKEdGUF9LRVJO
RUwsIG5yX3ZlY3MpOworCQkJCWlmICghYmlvKSB7CisJCQkJCWVyciA9IC1FTk9NRU07CisJCQkJ
CWdvdG8gZnJlZV9iaW9zOworCQkJCX0KKwkJCQliaW8tPmJpX2VuZF9pbyA9IHNjc2liYWNrX2Jp
X2VuZGlvOworCQkJCWlmIChiaW9fbGFzdCkKKwkJCQkJYmlvX2xhc3QtPmJpX25leHQgPSBiaW87
CisJCQkJZWxzZQorCQkJCQliaW9fZmlyc3QgPSBiaW87CisJCQkJYmlvX2xhc3QgPSBiaW87CisJ
CQl9CisKKwkJCWlmIChiaW9fYWRkX3BjX3BhZ2UocSwgYmlvLCBwYWdlLCBieXRlcywgb2ZmKSAh
PQorCQkJCQkJYnl0ZXMpIHsKKwkJCQliaW9fcHV0KGJpbyk7CisJCQkJZXJyID0gLUVJTlZBTDsK
KwkJCQlnb3RvIGZyZWVfYmlvczsKKwkJCX0KKworCQkJaWYgKGJpby0+YmlfdmNudCA+PSBucl92
ZWNzKSB7CisJCQkJYmlvLT5iaV9mbGFncyAmPSB+KDEgPDwgQklPX1NFR19WQUxJRCk7CisJCQkJ
aWYgKHBlbmRpbmdfcmVxLT5zY19kYXRhX2RpcmVjdGlvbiA9PSBXUklURSkKKwkJCQkJYmlvLT5i
aV9ydyB8PSBSRVFfV1JJVEU7CisJCQkJYmlvID0gTlVMTDsKKwkJCX0KKworCQkJcGFnZSsrOwor
CQkJbGVuIC09IGJ5dGVzOworCQkJb2ZmID0gMDsKKwkJfQorCX0KKworCXJldHVybiBiaW9fZmly
c3Q7CisKK2ZyZWVfYmlvczoKKwl3aGlsZSAoKGJpbyA9IGJpb19maXJzdCkgIT0gTlVMTCkgewor
CQliaW9fZmlyc3QgPSBiaW8tPmJpX25leHQ7CisJCWJpb19wdXQoYmlvKTsKKwl9CisKKwlyZXR1
cm4gRVJSX1BUUihlcnIpOworfQorCisKK3ZvaWQgc2NzaWJhY2tfY21kX2V4ZWMocGVuZGluZ19y
ZXFfdCAqcGVuZGluZ19yZXEpCit7CisJaW50IGNtZF9sZW4gID0gKGludClwZW5kaW5nX3JlcS0+
Y21kX2xlbjsKKwlpbnQgZGF0YV9kaXIgPSAoaW50KXBlbmRpbmdfcmVxLT5zY19kYXRhX2RpcmVj
dGlvbjsKKwl1bnNpZ25lZCBpbnQgdGltZW91dDsKKwlzdHJ1Y3QgcmVxdWVzdCAqcnE7CisJaW50
IHdyaXRlOworCisJRFBSSU5USygiJXNcbiIsX19GVU5DVElPTl9fKTsKKworCS8qIGJlY2F1c2Ug
aXQgZG9lc24ndCB0aW1lb3V0IGJhY2tlbmQgZWFybGllciB0aGFuIGZyb250ZW5kLiovCisJaWYg
KHBlbmRpbmdfcmVxLT50aW1lb3V0X3Blcl9jb21tYW5kKQorCQl0aW1lb3V0ID0gcGVuZGluZ19y
ZXEtPnRpbWVvdXRfcGVyX2NvbW1hbmQgKiBIWjsKKwllbHNlCisJCXRpbWVvdXQgPSBWU0NTSUlG
X1RJTUVPVVQ7CisKKwl3cml0ZSA9IChkYXRhX2RpciA9PSBETUFfVE9fREVWSUNFKTsKKwlpZiAo
cGVuZGluZ19yZXEtPm5yX3NlZ21lbnRzKSB7CisJCXN0cnVjdCBiaW8gKmJpbyA9IHJlcXVlc3Rf
bWFwX3NnKHBlbmRpbmdfcmVxKTsKKworCQlpZiAoSVNfRVJSKGJpbykpIHsKKwkJCXByaW50ayhL
RVJOX0VSUiAic2NzaWJhY2s6IFNHIFJlcXVlc3QgTWFwIEVycm9yXG4iKTsKKwkJCXJldHVybjsK
KwkJfQorCisJCXJxID0gYmxrX21ha2VfcmVxdWVzdChwZW5kaW5nX3JlcS0+c2Rldi0+cmVxdWVz
dF9xdWV1ZSwgYmlvLAorCQkJCSAgICAgIEdGUF9LRVJORUwpOworCQlpZiAoSVNfRVJSKHJxKSkg
eworCQkJcHJpbnRrKEtFUk5fRVJSICJzY3NpYmFjazogTWFrZSBSZXF1ZXN0IEVycm9yXG4iKTsK
KwkJCXJldHVybjsKKwkJfQorCisJCXJxLT5idWZmZXIgPSBOVUxMOworCX0gZWxzZSB7CisJCXJx
ID0gYmxrX2dldF9yZXF1ZXN0KHBlbmRpbmdfcmVxLT5zZGV2LT5yZXF1ZXN0X3F1ZXVlLCB3cml0
ZSwKKwkJCQkgICAgIEdGUF9LRVJORUwpOworCQlpZiAodW5saWtlbHkoIXJxKSkgeworCQkJcHJp
bnRrKEtFUk5fRVJSICJzY3NpYmFjazogR2V0IFJlcXVlc3QgRXJyb3JcbiIpOworCQkJcmV0dXJu
OworCQl9CisJfQorCisJcnEtPmNtZF90eXBlID0gUkVRX1RZUEVfQkxPQ0tfUEM7CisJcnEtPmNt
ZF9sZW4gPSBjbWRfbGVuOworCW1lbWNweShycS0+Y21kLCBwZW5kaW5nX3JlcS0+Y21uZCwgY21k
X2xlbik7CisKKwltZW1zZXQocGVuZGluZ19yZXEtPnNlbnNlX2J1ZmZlciwgMCwgVlNDU0lJRl9T
RU5TRV9CVUZGRVJTSVpFKTsKKwlycS0+c2Vuc2UgICAgICAgPSBwZW5kaW5nX3JlcS0+c2Vuc2Vf
YnVmZmVyOworCXJxLT5zZW5zZV9sZW4gPSAwOworCisJLyogbm90IGFsbG93ZWQgdG8gcmV0cnkg
aW4gYmFja2VuZC4gICAgICAgICAgICAgICAgICAgKi8KKwlycS0+cmV0cmllcyAgID0gMDsKKwly
cS0+dGltZW91dCAgID0gdGltZW91dDsKKwlycS0+ZW5kX2lvX2RhdGEgPSBwZW5kaW5nX3JlcTsK
KworCXNjc2liYWNrX2dldChwZW5kaW5nX3JlcS0+aW5mbyk7CisJYmxrX2V4ZWN1dGVfcnFfbm93
YWl0KHJxLT5xLCBOVUxMLCBycSwgMSwgc2NzaWJhY2tfY21kX2RvbmUpOworCisJcmV0dXJuIDsK
K30KKworCitzdGF0aWMgdm9pZCBzY3NpYmFja19kZXZpY2VfcmVzZXRfZXhlYyhwZW5kaW5nX3Jl
cV90ICpwZW5kaW5nX3JlcSkKK3sKKwlzdHJ1Y3QgdnNjc2lia19pbmZvICppbmZvID0gcGVuZGlu
Z19yZXEtPmluZm87CisJaW50IGVycjsKKwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYgPSBwZW5k
aW5nX3JlcS0+c2RldjsKKworCXNjc2liYWNrX2dldChpbmZvKTsKKwllcnIgPSBzY3NpX3Jlc2V0
X3Byb3ZpZGVyKHNkZXYsIFNDU0lfVFJZX1JFU0VUX0RFVklDRSk7CisKKwlzY3NpYmFja19kb19y
ZXNwX3dpdGhfc2Vuc2UoTlVMTCwgZXJyLCAwLCBwZW5kaW5nX3JlcSk7CisJc2NzaWJhY2tfcHV0
KGluZm8pOworCisJcmV0dXJuOworfQorCisKK2lycXJldHVybl90IHNjc2liYWNrX2ludHIoaW50
IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXNjc2liYWNrX25vdGlmeV93b3JrKChzdHJ1Y3QgdnNj
c2lia19pbmZvICopZGV2X2lkKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBp
bnQgcHJlcGFyZV9wZW5kaW5nX3JlcXMoc3RydWN0IHZzY3NpYmtfaW5mbyAqaW5mbywKKwkJdnNj
c2lpZl9yZXF1ZXN0X3QgKnJpbmdfcmVxLCBwZW5kaW5nX3JlcV90ICpwZW5kaW5nX3JlcSkKK3sK
KwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7CisJc3RydWN0IGlkc190dXBsZSB2aXI7CisJaW50
IGVyciA9IC1FSU5WQUw7CisKKwlEUFJJTlRLKCIlc1xuIixfX0ZVTkNUSU9OX18pOworCisJcGVu
ZGluZ19yZXEtPnJxaWQgICAgICAgPSByaW5nX3JlcS0+cnFpZDsKKwlwZW5kaW5nX3JlcS0+YWN0
ICAgICAgICA9IHJpbmdfcmVxLT5hY3Q7CisKKwlwZW5kaW5nX3JlcS0+aW5mbyAgICAgICA9IGlu
Zm87CisKKwlwZW5kaW5nX3JlcS0+dl9jaG4gPSB2aXIuY2huID0gcmluZ19yZXEtPmNoYW5uZWw7
CisJcGVuZGluZ19yZXEtPnZfdGd0ID0gdmlyLnRndCA9IHJpbmdfcmVxLT5pZDsKKwl2aXIubHVu
ID0gcmluZ19yZXEtPmx1bjsKKworCXJtYigpOworCXNkZXYgPSBzY3NpYmFja19kb190cmFuc2xh
dGlvbihpbmZvLCAmdmlyKTsKKwlpZiAoIXNkZXYpIHsKKwkJcGVuZGluZ19yZXEtPnNkZXYgPSBO
VUxMOworCQlEUFJJTlRLKCJzY3NpYmFjazogZG9lc24ndCBleGlzdC5cbiIpOworCQllcnIgPSAt
RU5PREVWOworCQlnb3RvIGludmFsaWRfdmFsdWU7CisJfQorCXBlbmRpbmdfcmVxLT5zZGV2ID0g
c2RldjsKKworCS8qIHJlcXVlc3QgcmFuZ2UgY2hlY2sgZnJvbSBmcm9udGVuZCAqLworCXBlbmRp
bmdfcmVxLT5zY19kYXRhX2RpcmVjdGlvbiA9IHJpbmdfcmVxLT5zY19kYXRhX2RpcmVjdGlvbjsK
KwliYXJyaWVyKCk7CisJaWYgKChwZW5kaW5nX3JlcS0+c2NfZGF0YV9kaXJlY3Rpb24gIT0gRE1B
X0JJRElSRUNUSU9OQUwpICYmCisJCShwZW5kaW5nX3JlcS0+c2NfZGF0YV9kaXJlY3Rpb24gIT0g
RE1BX1RPX0RFVklDRSkgJiYKKwkJKHBlbmRpbmdfcmVxLT5zY19kYXRhX2RpcmVjdGlvbiAhPSBE
TUFfRlJPTV9ERVZJQ0UpICYmCisJCShwZW5kaW5nX3JlcS0+c2NfZGF0YV9kaXJlY3Rpb24gIT0g
RE1BX05PTkUpKSB7CisJCURQUklOVEsoInNjc2liYWNrOiBpbnZhbGlkIHBhcmFtZXRlciBkYXRh
X2RpciA9ICVkXG4iLAorCQkJcGVuZGluZ19yZXEtPnNjX2RhdGFfZGlyZWN0aW9uKTsKKwkJZXJy
ID0gLUVJTlZBTDsKKwkJZ290byBpbnZhbGlkX3ZhbHVlOworCX0KKworCXBlbmRpbmdfcmVxLT5u
cl9zZWdtZW50cyA9IHJpbmdfcmVxLT5ucl9zZWdtZW50czsKKwliYXJyaWVyKCk7CisJaWYgKHBl
bmRpbmdfcmVxLT5ucl9zZWdtZW50cyA+IFZTQ1NJSUZfU0dfVEFCTEVTSVpFKSB7CisJCURQUklO
VEsoInNjc2liYWNrOiBpbnZhbGlkIHBhcmFtZXRlciBucl9zZWcgPSAlZFxuIiwKKwkJCXBlbmRp
bmdfcmVxLT5ucl9zZWdtZW50cyk7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gaW52YWxpZF92
YWx1ZTsKKwl9CisKKwlwZW5kaW5nX3JlcS0+Y21kX2xlbiA9IHJpbmdfcmVxLT5jbWRfbGVuOwor
CWJhcnJpZXIoKTsKKwlpZiAocGVuZGluZ19yZXEtPmNtZF9sZW4gPiBWU0NTSUlGX01BWF9DT01N
QU5EX1NJWkUpIHsKKwkJRFBSSU5USygic2NzaWJhY2s6IGludmFsaWQgcGFyYW1ldGVyIGNtZF9s
ZW4gPSAlZFxuIiwKKwkJCXBlbmRpbmdfcmVxLT5jbWRfbGVuKTsKKwkJZXJyID0gLUVJTlZBTDsK
KwkJZ290byBpbnZhbGlkX3ZhbHVlOworCX0KKwltZW1jcHkocGVuZGluZ19yZXEtPmNtbmQsIHJp
bmdfcmVxLT5jbW5kLCBwZW5kaW5nX3JlcS0+Y21kX2xlbik7CisKKwlwZW5kaW5nX3JlcS0+dGlt
ZW91dF9wZXJfY29tbWFuZCA9IHJpbmdfcmVxLT50aW1lb3V0X3Blcl9jb21tYW5kOworCisJaWYo
c2NzaWJhY2tfZ250dGFiX2RhdGFfbWFwKHJpbmdfcmVxLCBwZW5kaW5nX3JlcSkpIHsKKwkJRFBS
SU5USygic2NzaWJhY2s6IGludmFsaWQgYnVmZmVyXG4iKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJ
Z290byBpbnZhbGlkX3ZhbHVlOworCX0KKworCXJldHVybiAwOworCitpbnZhbGlkX3ZhbHVlOgor
CXJldHVybiBlcnI7Cit9CisKKworc3RhdGljIGludCBzY3NpYmFja19kb19jbWRfZm4oc3RydWN0
IHZzY3NpYmtfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgdnNjc2lpZl9iYWNrX3JpbmcgKnJpbmcg
PSAmaW5mby0+cmluZzsKKwl2c2NzaWlmX3JlcXVlc3RfdCAgKnJpbmdfcmVxOworCisJcGVuZGlu
Z19yZXFfdCAqcGVuZGluZ19yZXE7CisJUklOR19JRFggcmMsIHJwOworCWludCBlcnIsIG1vcmVf
dG9fZG8gPSAwOworCisJRFBSSU5USygiJXNcbiIsX19GVU5DVElPTl9fKTsKKworCXJjID0gcmlu
Zy0+cmVxX2NvbnM7CisJcnAgPSByaW5nLT5zcmluZy0+cmVxX3Byb2Q7CisJcm1iKCk7CisKKwl3
aGlsZSAoKHJjICE9IHJwKSkgeworCQlpZiAoUklOR19SRVFVRVNUX0NPTlNfT1ZFUkZMT1cocmlu
ZywgcmMpKQorCQkJYnJlYWs7CisJCXBlbmRpbmdfcmVxID0gYWxsb2NfcmVxKGluZm8pOworCQlp
ZiAoTlVMTCA9PSBwZW5kaW5nX3JlcSkgeworCQkJbW9yZV90b19kbyA9IDE7CisJCQlicmVhazsK
KwkJfQorCisJCXJpbmdfcmVxID0gUklOR19HRVRfUkVRVUVTVChyaW5nLCByYyk7CisJCXJpbmct
PnJlcV9jb25zID0gKytyYzsKKworCQllcnIgPSBwcmVwYXJlX3BlbmRpbmdfcmVxcyhpbmZvLCBy
aW5nX3JlcSwKKwkJCQkJCXBlbmRpbmdfcmVxKTsKKwkJaWYgKGVyciA9PSAtRUlOVkFMKSB7CisJ
CQlzY3NpYmFja19kb19yZXNwX3dpdGhfc2Vuc2UoTlVMTCwgKERSSVZFUl9FUlJPUiA8PCAyNCks
CisJCQkJMCwgcGVuZGluZ19yZXEpOworCQkJY29udGludWU7CisJCX0gZWxzZSBpZiAoZXJyID09
IC1FTk9ERVYpIHsKKwkJCXNjc2liYWNrX2RvX3Jlc3Bfd2l0aF9zZW5zZShOVUxMLCAoRElEX05P
X0NPTk5FQ1QgPDwgMTYpLAorCQkJCTAsIHBlbmRpbmdfcmVxKTsKKwkJCWNvbnRpbnVlOworCQl9
CisKKwkJaWYgKHBlbmRpbmdfcmVxLT5hY3QgPT0gVlNDU0lJRl9BQ1RfU0NTSV9DREIpIHsKKwor
CQkJLyogVGhlIEhvc3QgbW9kZSBpcyB0aHJvdWdoIGFzIGZvciBFbXVsYXRpb24uICovCisJCQlp
ZiAoaW5mby0+ZmVhdHVyZSA9PSBWU0NTSV9UWVBFX0hPU1QpCisJCQkJc2NzaWJhY2tfY21kX2V4
ZWMocGVuZGluZ19yZXEpOworCQkJZWxzZQorCQkJCXNjc2liYWNrX3JlcV9lbXVsYXRpb25fb3Jf
Y21kZXhlYyhwZW5kaW5nX3JlcSk7CisKKwkJfSBlbHNlIGlmIChwZW5kaW5nX3JlcS0+YWN0ID09
IFZTQ1NJSUZfQUNUX1NDU0lfUkVTRVQpIHsKKwkJCXNjc2liYWNrX2RldmljZV9yZXNldF9leGVj
KHBlbmRpbmdfcmVxKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6
IGludmFsaWQgcGFyYW1ldGVyIGZvciByZXF1ZXN0XG4iKTsKKwkJCXNjc2liYWNrX2RvX3Jlc3Bf
d2l0aF9zZW5zZShOVUxMLCAoRFJJVkVSX0VSUk9SIDw8IDI0KSwKKwkJCQkwLCBwZW5kaW5nX3Jl
cSk7CisJCQljb250aW51ZTsKKwkJfQorCX0KKworCWlmIChSSU5HX0hBU19VTkNPTlNVTUVEX1JF
UVVFU1RTKHJpbmcpKQorCQltb3JlX3RvX2RvID0gMTsKKworCS8qIFlpZWxkIHBvaW50IGZvciB0
aGlzIHVuYm91bmRlZCBsb29wLiAqLworCWNvbmRfcmVzY2hlZCgpOworCisJcmV0dXJuIG1vcmVf
dG9fZG87Cit9CisKKworaW50IHNjc2liYWNrX3NjaGVkdWxlKHZvaWQgKmRhdGEpCit7CisJc3Ry
dWN0IHZzY3NpYmtfaW5mbyAqaW5mbyA9IChzdHJ1Y3QgdnNjc2lia19pbmZvICopZGF0YTsKKwor
CURQUklOVEsoIiVzXG4iLF9fRlVOQ1RJT05fXyk7CisKKwl3aGlsZSAoIWt0aHJlYWRfc2hvdWxk
X3N0b3AoKSkgeworCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoCisJCQlpbmZvLT53cSwKKwkJ
CWluZm8tPndhaXRpbmdfcmVxcyB8fCBrdGhyZWFkX3Nob3VsZF9zdG9wKCkpOworCQl3YWl0X2V2
ZW50X2ludGVycnVwdGlibGUoCisJCQlwZW5kaW5nX2ZyZWVfd3EsCisJCQkhbGlzdF9lbXB0eSgm
cGVuZGluZ19mcmVlKSB8fCBrdGhyZWFkX3Nob3VsZF9zdG9wKCkpOworCisJCWluZm8tPndhaXRp
bmdfcmVxcyA9IDA7CisJCXNtcF9tYigpOworCisJCWlmIChzY3NpYmFja19kb19jbWRfZm4oaW5m
bykpCisJCQlpbmZvLT53YWl0aW5nX3JlcXMgPSAxOworCX0KKworCXJldHVybiAwOworfQorCisK
K3N0YXRpYyBpbnQgX19pbml0IHNjc2liYWNrX2luaXQodm9pZCkKK3sKKwlpbnQgaSwgbW1hcF9w
YWdlczsKKworCWlmICgheGVuX2RvbWFpbigpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCW1tYXBf
cGFnZXMgPSB2c2NzaWlmX3JlcXMgKiBWU0NTSUlGX1NHX1RBQkxFU0laRTsKKworCXBlbmRpbmdf
cmVxcyAgICAgICAgICA9IGt6YWxsb2Moc2l6ZW9mKHBlbmRpbmdfcmVxc1swXSkgKgorCQkJCQl2
c2NzaWlmX3JlcXMsIEdGUF9LRVJORUwpOworCXBlbmRpbmdfZ3JhbnRfaGFuZGxlcyA9IGttYWxs
b2Moc2l6ZW9mKHBlbmRpbmdfZ3JhbnRfaGFuZGxlc1swXSkgKgorCQkJCQltbWFwX3BhZ2VzLCBH
RlBfS0VSTkVMKTsKKwlwZW5kaW5nX3BhZ2VzICAgICAgICAgPSBremFsbG9jKHNpemVvZihwZW5k
aW5nX3BhZ2VzWzBdKSAqCisJCQkJCW1tYXBfcGFnZXMsIEdGUF9LRVJORUwpOworCisJaWYgKCFw
ZW5kaW5nX3JlcXMgfHwgIXBlbmRpbmdfZ3JhbnRfaGFuZGxlcyB8fCAhcGVuZGluZ19wYWdlcykK
KwkJZ290byBvdXRfb2ZfbWVtb3J5OworCisJZm9yIChpID0gMDsgaSA8IG1tYXBfcGFnZXM7IGkr
KykgeworCQlwZW5kaW5nX2dyYW50X2hhbmRsZXNbaV0gPSBTQ1NJQkFDS19JTlZBTElEX0hBTkRM
RTsKKwkJcGVuZGluZ19wYWdlc1tpXSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7CisJCWlmIChw
ZW5kaW5nX3BhZ2VzW2ldID09IE5VTEwpCisJCQlnb3RvIG91dF9vZl9tZW1vcnk7CisJfQorCWlm
IChzY3NpYmFja19pbnRlcmZhY2VfaW5pdCgpIDwgMCkKKwkJZ290byBvdXRfb2Zfa21lbTsKKwor
CW1lbXNldChwZW5kaW5nX3JlcXMsIDAsIHNpemVvZihwZW5kaW5nX3JlcXMpKTsKKwlJTklUX0xJ
U1RfSEVBRCgmcGVuZGluZ19mcmVlKTsKKworCWZvciAoaSA9IDA7IGkgPCB2c2NzaWlmX3JlcXM7
IGkrKykKKwkJbGlzdF9hZGRfdGFpbCgmcGVuZGluZ19yZXFzW2ldLmZyZWVfbGlzdCwgJnBlbmRp
bmdfZnJlZSk7CisKKwlpZiAoc2NzaWJhY2tfeGVuYnVzX2luaXQoKSkKKwkJZ290byBvdXRfb2Zf
eGVuYnVzOworCisJc2NzaWJhY2tfZW11bGF0aW9uX2luaXQoKTsKKworCXJldHVybiAwOworCitv
dXRfb2ZfeGVuYnVzOgorCXNjc2liYWNrX3hlbmJ1c191bnJlZ2lzdGVyKCk7CitvdXRfb2Zfa21l
bToKKwlzY3NpYmFja19pbnRlcmZhY2VfZXhpdCgpOworb3V0X29mX21lbW9yeToKKwlpZiAocGVu
ZGluZ19wYWdlcykgeworCQlmb3IgKGkgPSAwOyBpIDwgbW1hcF9wYWdlczsgaSsrKSB7CisJCQlp
ZiAocGVuZGluZ19wYWdlc1tpXSkKKwkJCQlfX2ZyZWVfcGFnZShwZW5kaW5nX3BhZ2VzW2ldKTsK
KwkJfQorCQlrZnJlZShwZW5kaW5nX3BhZ2VzKTsKKwl9CisJa2ZyZWUocGVuZGluZ19yZXFzKTsK
KwlrZnJlZShwZW5kaW5nX2dyYW50X2hhbmRsZXMpOworCXByaW50ayhLRVJOX0VSUiAic2NzaWJh
Y2s6ICVzOiBvdXQgb2YgbWVtb3J5XG4iLCBfX0ZVTkNUSU9OX18pOworCXJldHVybiAtRU5PTUVN
OworfQorCisKK3N0YXRpYyB2b2lkIF9fZXhpdCBzY3NpYmFja19leGl0KHZvaWQpCit7CisJc2Nz
aWJhY2tfeGVuYnVzX3VucmVnaXN0ZXIoKTsKKwlzY3NpYmFja19pbnRlcmZhY2VfZXhpdCgpOwor
CWtmcmVlKHBlbmRpbmdfcmVxcyk7CisJa2ZyZWUocGVuZGluZ19ncmFudF9oYW5kbGVzKTsKKwlp
ZiAocGVuZGluZ19wYWdlcykgeworCQl1bnNpZ25lZCBpbnQgaTsKKwkJdW5zaWduZWQgaW50IG1t
YXBfcGFnZXMgPSB2c2NzaWlmX3JlcXMgKiBWU0NTSUlGX1NHX1RBQkxFU0laRTsKKwkJZm9yIChp
ID0gMDsgaSA8IG1tYXBfcGFnZXM7IGkrKykgeworCQkJaWYgKHBlbmRpbmdfcGFnZXNbaV0pCisJ
CQkJX19mcmVlX3BhZ2UocGVuZGluZ19wYWdlc1tpXSk7CisJCX0KKwkJa2ZyZWUocGVuZGluZ19w
YWdlcyk7CisJfQorfQorCittb2R1bGVfaW5pdChzY3NpYmFja19pbml0KTsKK21vZHVsZV9leGl0
KHNjc2liYWNrX2V4aXQpOworCitNT0RVTEVfREVTQ1JJUFRJT04oIlhlbiBTQ1NJIGJhY2tlbmQg
ZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiRHVhbCBCU0QvR1BMIik7CmRpZmYgLXJ1cE4geGVu
L2RyaXZlcnMvc2NzaS94ZW4tc2NzaWJhY2svdHJhbnNsYXRlLmMgeGVuYy9kcml2ZXJzL3Njc2kv
eGVuLXNjc2liYWNrL3RyYW5zbGF0ZS5jCi0tLSB4ZW4vZHJpdmVycy9zY3NpL3hlbi1zY3NpYmFj
ay90cmFuc2xhdGUuYwkxOTY5LTEyLTMxIDE3OjAwOjAwLjAwMDAwMDAwMCAtMDcwMAorKysgeGVu
Yy9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL3RyYW5zbGF0ZS5jCTIwMTItMDItMjQgMTQ6NTY6
MTMuNTM4OTc4MzAwIC0wNzAwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogWGVuIFNDU0kgYmFj
a2VuZCBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEZVSklUU1UgTGltaXRlZAor
ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IG9yLCB3aGVuIGRpc3RyaWJ1dGVkCisgKiBzZXBhcmF0ZWx5
IGZyb20gdGhlIExpbnV4IGtlcm5lbCBvciBpbmNvcnBvcmF0ZWQgaW50byBvdGhlcgorICogc29m
dHdhcmUgcGFja2FnZXMsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBsaWNlbnNlOgorICoKKyAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc291cmNlIGZpbGUgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm
eSwKKyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs
bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo
b20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF
QUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2xpc3Qu
aD4KKyNpbmNsdWRlIDxsaW51eC9nZnAuaD4KKworI2luY2x1ZGUgImNvbW1vbi5oIgorCisvKgor
ICBJbml0aWFsaXplIHRoZSB0cmFuc2xhdGlvbiBlbnRyeSBsaXN0CisqLwordm9pZCBzY3NpYmFj
a19pbml0X3RyYW5zbGF0aW9uX3RhYmxlKHN0cnVjdCB2c2NzaWJrX2luZm8gKmluZm8pCit7CisJ
SU5JVF9MSVNUX0hFQUQoJmluZm8tPnYycF9lbnRyeV9saXN0cyk7CisJc3Bpbl9sb2NrX2luaXQo
JmluZm8tPnYycF9sb2NrKTsKK30KKworCisvKgorICBBZGQgYSBuZXcgdHJhbnNsYXRpb24gZW50
cnkKKyovCitpbnQgc2NzaWJhY2tfYWRkX3RyYW5zbGF0aW9uX2VudHJ5KHN0cnVjdCB2c2NzaWJr
X2luZm8gKmluZm8sCisJCQlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIHN0cnVjdCBpZHNfdHVw
bGUgKnYpCit7CisJaW50IGVyciA9IDA7CisJc3RydWN0IHYycF9lbnRyeSAqZW50cnk7CisJc3Ry
dWN0IHYycF9lbnRyeSAqbmV3OworCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQgPSAmKGluZm8tPnYy
cF9lbnRyeV9saXN0cyk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFz
YXZlKCZpbmZvLT52MnBfbG9jaywgZmxhZ3MpOworCisJLyogQ2hlY2sgZG91YmxlIGFzc2lnbm1l
bnQgdG8gaWRlbnRpY2FsIHZpcnR1YWwgSUQgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5
LCBoZWFkLCBsKSB7CisJCWlmICgoZW50cnktPnYuY2huID09IHYtPmNobikgJiYKKwkJICAgIChl
bnRyeS0+di50Z3QgPT0gdi0+dGd0KSAmJgorCQkgICAgKGVudHJ5LT52Lmx1biA9PSB2LT5sdW4p
KSB7CisJCQlwcmludGsoS0VSTl9XQVJOSU5HICJzY3NpYmFjazogVmlydHVhbCBJRCBpcyBhbHJl
YWR5IHVzZWQuICIKKwkJCSAgICAgICAiQXNzaWdubWVudCB3YXMgbm90IHBlcmZvcm1lZC5cbiIp
OworCQkJZXJyID0gLUVFWElTVDsKKwkJCWdvdG8gb3V0OworCQl9CisKKwl9CisKKwkvKiBDcmVh
dGUgYSBuZXcgdHJhbnNsYXRpb24gZW50cnkgYW5kIGFkZCB0byB0aGUgbGlzdCAqLworCWlmICgo
bmV3ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHYycF9lbnRyeSksIEdGUF9BVE9NSUMpKSA9PSBO
VUxMKSB7CisJCXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6ICVzOiBrbWFsbG9jKCkgZXJyb3Iu
XG4iLCBfX0ZVTkNUSU9OX18pOworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisJ
bmV3LT52ID0gKnY7CisJbmV3LT5zZGV2ID0gc2RldjsKKwlsaXN0X2FkZF90YWlsKCZuZXctPmws
IGhlYWQpOworCitvdXQ6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+djJwX2xvY2ss
IGZsYWdzKTsKKwlyZXR1cm4gZXJyOworfQorCisKKy8qCisgIERlbGV0ZSB0aGUgdHJhbnNsYXRp
b24gZW50cnkgc3BlY2ZpZWQKKyovCitpbnQgc2NzaWJhY2tfZGVsX3RyYW5zbGF0aW9uX2VudHJ5
KHN0cnVjdCB2c2NzaWJrX2luZm8gKmluZm8sCisJCQkJc3RydWN0IGlkc190dXBsZSAqdikKK3sK
KwlzdHJ1Y3QgdjJwX2VudHJ5ICplbnRyeTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0gJihp
bmZvLT52MnBfZW50cnlfbGlzdHMpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xv
Y2tfaXJxc2F2ZSgmaW5mby0+djJwX2xvY2ssIGZsYWdzKTsKKwkvKiBGaW5kIG91dCB0aGUgdHJh
bnNsYXRpb24gZW50cnkgc3BlY2lmaWVkICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwg
aGVhZCwgbCkgeworCQlpZiAoKGVudHJ5LT52LmNobiA9PSB2LT5jaG4pICYmCisJCSAgICAoZW50
cnktPnYudGd0ID09IHYtPnRndCkgJiYKKwkJICAgIChlbnRyeS0+di5sdW4gPT0gdi0+bHVuKSkg
eworCQkJZ290byBmb3VuZDsKKwkJfQorCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlu
Zm8tPnYycF9sb2NrLCBmbGFncyk7CisJcmV0dXJuIDE7CisKK2ZvdW5kOgorCS8qIERlbGV0ZSB0
aGUgdHJhbnNsYXRpb24gZW50cnkgc3BlY2ZpZWQgKi8KKwlzY3NpX2RldmljZV9wdXQoZW50cnkt
PnNkZXYpOworCWxpc3RfZGVsKCZlbnRyeS0+bCk7CisJa2ZyZWUoZW50cnkpOworCisJc3Bpbl91
bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+djJwX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gMDsKK30K
KworCisvKgorICBQZXJmb3JtIHZpcnR1YWwgdG8gcGh5c2ljYWwgdHJhbnNsYXRpb24KKyovCitz
dHJ1Y3Qgc2NzaV9kZXZpY2UgKnNjc2liYWNrX2RvX3RyYW5zbGF0aW9uKHN0cnVjdCB2c2NzaWJr
X2luZm8gKmluZm8sCisJCQlzdHJ1Y3QgaWRzX3R1cGxlICp2KQoreworCXN0cnVjdCB2MnBfZW50
cnkgKmVudHJ5OworCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQgPSAmKGluZm8tPnYycF9lbnRyeV9s
aXN0cyk7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2ID0gTlVMTDsKKwl1bnNpZ25lZCBsb25n
IGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmluZm8tPnYycF9sb2NrLCBmbGFncyk7CisJ
bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgaGVhZCwgbCkgeworCQlpZiAoKGVudHJ5LT52LmNo
biA9PSB2LT5jaG4pICYmCisJCSAgICAoZW50cnktPnYudGd0ID09IHYtPnRndCkgJiYKKwkJICAg
IChlbnRyeS0+di5sdW4gPT0gdi0+bHVuKSkgeworCQkJc2RldiA9IGVudHJ5LT5zZGV2OworCQkJ
Z290byBvdXQ7CisJCX0KKwl9CitvdXQ6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+
djJwX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gc2RldjsKK30KKworCisvKgorICBSZWxlYXNlIHRo
ZSB0cmFuc2xhdGlvbiBlbnRyeSBzcGVjZmllZAorKi8KK3ZvaWQgc2NzaWJhY2tfcmVsZWFzZV90
cmFuc2xhdGlvbl9lbnRyeShzdHJ1Y3QgdnNjc2lia19pbmZvICppbmZvKQoreworCXN0cnVjdCB2
MnBfZW50cnkgKmVudHJ5LCAqdG1wOworCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQgPSAmKGluZm8t
PnYycF9lbnRyeV9saXN0cyk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19p
cnFzYXZlKCZpbmZvLT52MnBfbG9jaywgZmxhZ3MpOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm
ZShlbnRyeSwgdG1wLCBoZWFkLCBsKSB7CisJCXNjc2lfZGV2aWNlX3B1dChlbnRyeS0+c2Rldik7
CisJCWxpc3RfZGVsKCZlbnRyeS0+bCk7CisJCWtmcmVlKGVudHJ5KTsKKwl9CisKKwlzcGluX3Vu
bG9ja19pcnFyZXN0b3JlKCZpbmZvLT52MnBfbG9jaywgZmxhZ3MpOworCXJldHVybjsKKworfQpk
aWZmIC1ydXBOIHhlbi9kcml2ZXJzL3Njc2kveGVuLXNjc2liYWNrL3hlbmJ1cy5jIHhlbmMvZHJp
dmVycy9zY3NpL3hlbi1zY3NpYmFjay94ZW5idXMuYwotLS0geGVuL2RyaXZlcnMvc2NzaS94ZW4t
c2NzaWJhY2sveGVuYnVzLmMJMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAwMDAgLTA3MDAKKysr
IHhlbmMvZHJpdmVycy9zY3NpL3hlbi1zY3NpYmFjay94ZW5idXMuYwkyMDEyLTAyLTI0IDE0OjU2
OjEzLjUzODk3ODMwMCAtMDcwMApAQCAtMCwwICsxLDM3MSBAQAorLyoKKyAqIFhlbiBTQ1NJIGJh
Y2tlbmQgZHJpdmVyCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBGVUpJVFNVIExpbWl0ZWQK
KyAqCisgKiBCYXNlZCBvbiB0aGUgYmxrYmFjayBkcml2ZXIgY29kZS4KKyAqCisgKiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBvciwgd2hlbiBkaXN0cmlidXRlZAorICogc2VwYXJhdGVseSBmcm9tIHRoZSBMaW51
eCBrZXJuZWwgb3IgaW5jb3Jwb3JhdGVkIGludG8gb3RoZXIKKyAqIHNvZnR3YXJlIHBhY2thZ2Vz
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgbGljZW5zZToKKyAqCisgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisgKiBvZiB0aGlzIHNvdXJjZSBmaWxlICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksCisgKiBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwKKyAqIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg
T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4g
VEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxsaW51
eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CisjaW5jbHVkZSA8c2NzaS9z
Y3NpLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2hvc3QuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lf
ZGV2aWNlLmg+CisKKyNpbmNsdWRlICJjb21tb24uaCIKKworc3RydWN0IGJhY2tlbmRfaW5mbwor
eworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXY7CisJc3RydWN0IHZzY3NpYmtfaW5mbyAqaW5m
bzsKK307CisKKworc3RhdGljIGludCBfX3ZzY3NpaWZfbmFtZShzdHJ1Y3QgYmFja2VuZF9pbmZv
ICpiZSwgY2hhciAqYnVmKQoreworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYgPSBiZS0+ZGV2
OworCXVuc2lnbmVkIGludCBkb21pZCwgaWQ7CisKKwlzc2NhbmYoZGV2LT5ub2RlbmFtZSwgImJh
Y2tlbmQvdnNjc2kvJXUvJXUiLCAmZG9taWQsICZpZCk7CisJc25wcmludGYoYnVmLCBUQVNLX0NP
TU1fTEVOLCAidnNjc2kuJXUuJXUiLCBiZS0+aW5mby0+ZG9taWQsIGlkKTsKKworCXJldHVybiAw
OworfQorCitzdGF0aWMgaW50IHNjc2liYWNrX21hcChzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSkK
K3sKKwlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2ID0gYmUtPmRldjsKKwl1bnNpZ25lZCBsb25n
IHJpbmdfcmVmID0gMDsKKwl1bnNpZ25lZCBpbnQgZXZ0Y2huID0gMDsKKwlpbnQgZXJyOworCWNo
YXIgbmFtZVtUQVNLX0NPTU1fTEVOXTsKKworCWVyciA9IHhlbmJ1c19nYXRoZXIoWEJUX05JTCwg
ZGV2LT5vdGhlcmVuZCwKKwkJCSJyaW5nLXJlZiIsICIlbHUiLCAmcmluZ19yZWYsCisJCQkiZXZl
bnQtY2hhbm5lbCIsICIldSIsICZldnRjaG4sIE5VTEwpOworCWlmIChlcnIpIHsKKwkJeGVuYnVz
X2Rldl9mYXRhbChkZXYsIGVyciwgInJlYWRpbmcgJXMgcmluZyIsIGRldi0+b3RoZXJlbmQpOwor
CQlyZXR1cm4gZXJyOworCX0KKwllcnIgPSBzY3NpYmFja19pbml0X3NyaW5nKGJlLT5pbmZvLCBy
aW5nX3JlZiwgZXZ0Y2huKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZXJyID0gX192
c2NzaWlmX25hbWUoYmUsIG5hbWUpOworCWlmIChlcnIpIHsKKwkJeGVuYnVzX2Rldl9lcnJvcihk
ZXYsIGVyciwgImdldCBzY3NpYmFjayBkZXYgbmFtZSIpOworCQlyZXR1cm4gZXJyOworCX0KKwor
CWJlLT5pbmZvLT5rdGhyZWFkID0ga3RocmVhZF9ydW4oc2NzaWJhY2tfc2NoZWR1bGUsIGJlLT5p
bmZvLCBuYW1lKTsKKwlpZiAoSVNfRVJSKGJlLT5pbmZvLT5rdGhyZWFkKSkgeworCQllcnIgPSBQ
VFJfRVJSKGJlLT5pbmZvLT5rdGhyZWFkKTsKKwkJYmUtPmluZm8tPmt0aHJlYWQgPSBOVUxMOwor
CQl4ZW5idXNfZGV2X2Vycm9yKGJlLT5kZXYsIGVyciwgInN0YXJ0IHZzY3NpaWYiKTsKKwkJcmV0
dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCitzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNj
c2liYWNrX2dldF9zY3NpX2RldmljZShzdHJ1Y3QgaWRzX3R1cGxlICpwaHkpCit7CisJc3RydWN0
IFNjc2lfSG9zdCAqc2hvc3Q7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2ID0gTlVMTDsKKwor
CXNob3N0ID0gc2NzaV9ob3N0X2xvb2t1cChwaHktPmhzdCk7CisJaWYgKElTX0VSUihzaG9zdCkp
IHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpYmFjazogaG9zdCVkIGRvZXNuJ3QgZXhpc3QuXG4i
LAorCQkJcGh5LT5oc3QpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJc2RldiAgID0gc2NzaV9kZXZp
Y2VfbG9va3VwKHNob3N0LCBwaHktPmNobiwgcGh5LT50Z3QsIHBoeS0+bHVuKTsKKwlpZiAoIXNk
ZXYpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpYmFjazogJWQ6JWQ6JWQ6JWQgZG9lc24ndCBl
eGlzdC5cbiIsCisJCQlwaHktPmhzdCwgcGh5LT5jaG4sIHBoeS0+dGd0LCBwaHktPmx1bik7CisJ
CXNjc2lfaG9zdF9wdXQoc2hvc3QpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlzY3NpX2hvc3Rf
cHV0KHNob3N0KTsKKwlyZXR1cm4gKHNkZXYpOworfQorCisjZGVmaW5lIFZTQ1NJQkFDS19PUF9B
RERfT1JfREVMX0xVTgkxCisjZGVmaW5lIFZTQ1NJQkFDS19PUF9VUERBVEVERVZfU1RBVEUJMgor
CisKK3N0YXRpYyB2b2lkIHNjc2liYWNrX2RvX2x1bl9ob3RwbHVnKHN0cnVjdCBiYWNrZW5kX2lu
Zm8gKmJlLCBpbnQgb3ApCit7CisJaW50IGksIGVyciA9IDA7CisJc3RydWN0IGlkc190dXBsZSBw
aHksIHZpcjsKKwlpbnQgZGV2aWNlX3N0YXRlOworCWNoYXIgc3RyWzY0XSwgc3RhdGVfc3RyWzY0
XTsKKwljaGFyICoqZGlyOworCXVuc2lnbmVkIGludCBkaXJfbiA9IDA7CisJc3RydWN0IHhlbmJ1
c19kZXZpY2UgKmRldiA9IGJlLT5kZXY7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2OworCisJ
ZGlyID0geGVuYnVzX2RpcmVjdG9yeShYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCAidnNjc2ktZGV2
cyIsICZkaXJfbik7CisJaWYgKElTX0VSUihkaXIpKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAw
OyBpIDwgZGlyX247IGkrKykgeworCQkvKiByZWFkIHN0YXR1cyAqLworCQlzbnByaW50ZihzdGF0
ZV9zdHIsIHNpemVvZihzdGF0ZV9zdHIpLCAidnNjc2ktZGV2cy8lcy9zdGF0ZSIsIGRpcltpXSk7
CisJCWVyciA9IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCBzdGF0ZV9zdHIs
ICIldSIsCisJCQkmZGV2aWNlX3N0YXRlKTsKKwkJaWYgKFhFTkJVU19FWElTVF9FUlIoZXJyKSkK
KwkJCWNvbnRpbnVlOworCisJCS8qIHBoeXNpY2FsIFNDU0kgZGV2aWNlICovCisJCXNucHJpbnRm
KHN0ciwgc2l6ZW9mKHN0ciksICJ2c2NzaS1kZXZzLyVzL3AtZGV2IiwgZGlyW2ldKTsKKwkJZXJy
ID0geGVuYnVzX3NjYW5mKFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsIHN0ciwKKwkJCSIldToldTol
dToldSIsICZwaHkuaHN0LCAmcGh5LmNobiwgJnBoeS50Z3QsICZwaHkubHVuKTsKKwkJaWYgKFhF
TkJVU19FWElTVF9FUlIoZXJyKSkgeworCQkJeGVuYnVzX3ByaW50ZihYQlRfTklMLCBkZXYtPm5v
ZGVuYW1lLCBzdGF0ZV9zdHIsCisJCQkJCSIlZCIsIFhlbmJ1c1N0YXRlQ2xvc2VkKTsKKwkJCWNv
bnRpbnVlOworCQl9CisKKwkJLyogdmlydHVhbCBTQ1NJIGRldmljZSAqLworCQlzbnByaW50Zihz
dHIsIHNpemVvZihzdHIpLCAidnNjc2ktZGV2cy8lcy92LWRldiIsIGRpcltpXSk7CisJCWVyciA9
IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCBzdHIsCisJCQkiJXU6JXU6JXU6
JXUiLCAmdmlyLmhzdCwgJnZpci5jaG4sICZ2aXIudGd0LCAmdmlyLmx1bik7CisJCWlmIChYRU5C
VVNfRVhJU1RfRVJSKGVycikpIHsKKwkJCXhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2Rl
bmFtZSwgc3RhdGVfc3RyLAorCQkJCQkiJWQiLCBYZW5idXNTdGF0ZUNsb3NlZCk7CisJCQljb250
aW51ZTsKKwkJfQorCisJCXN3aXRjaCAob3ApIHsKKwkJY2FzZSBWU0NTSUJBQ0tfT1BfQUREX09S
X0RFTF9MVU46CisJCQlpZiAoZGV2aWNlX3N0YXRlID09IFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5n
KSB7CisJCQkJc2RldiA9IHNjc2liYWNrX2dldF9zY3NpX2RldmljZSgmcGh5KTsKKwkJCQlpZiAo
IXNkZXYpCisJCQkJCXhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwgc3RhdGVf
c3RyLAorCQkJCQkJCSAgICAiJWQiLCBYZW5idXNTdGF0ZUNsb3NlZCk7CisJCQkJZWxzZSB7CisJ
CQkJCWVyciA9IHNjc2liYWNrX2FkZF90cmFuc2xhdGlvbl9lbnRyeShiZS0+aW5mbywgc2Rldiwg
JnZpcik7CisJCQkJCWlmICghZXJyKSB7CisJCQkJCQlpZiAoeGVuYnVzX3ByaW50ZihYQlRfTklM
LCBkZXYtPm5vZGVuYW1lLCBzdGF0ZV9zdHIsCisJCQkJCQkJCSAgICAiJWQiLCBYZW5idXNTdGF0
ZUluaXRpYWxpc2VkKSkgeworCQkJCQkJCXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6IHhlbmJ1
c19wcmludGYgZXJyb3IgJXNcbiIsIHN0YXRlX3N0cik7CisJCQkJCQkJc2NzaWJhY2tfZGVsX3Ry
YW5zbGF0aW9uX2VudHJ5KGJlLT5pbmZvLCAmdmlyKTsKKwkJCQkJCX0KKwkJCQkJfSBlbHNlIHsK
KwkJCQkJCXNjc2lfZGV2aWNlX3B1dChzZGV2KTsKKwkJCQkJCXhlbmJ1c19wcmludGYoWEJUX05J
TCwgZGV2LT5ub2RlbmFtZSwgc3RhdGVfc3RyLAorCQkJCQkJCQkgICAgIiVkIiwgWGVuYnVzU3Rh
dGVDbG9zZWQpOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlpZiAoZGV2aWNlX3N0YXRlID09
IFhlbmJ1c1N0YXRlQ2xvc2luZykgeworCQkJCWlmICghc2NzaWJhY2tfZGVsX3RyYW5zbGF0aW9u
X2VudHJ5KGJlLT5pbmZvLCAmdmlyKSkgeworCQkJCQlpZiAoeGVuYnVzX3ByaW50ZihYQlRfTklM
LCBkZXYtPm5vZGVuYW1lLCBzdGF0ZV9zdHIsCisJCQkJCQkJICAgICIlZCIsIFhlbmJ1c1N0YXRl
Q2xvc2VkKSkKKwkJCQkJCXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6IHhlbmJ1c19wcmludGYg
ZXJyb3IgJXNcbiIsIHN0YXRlX3N0cik7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2Fz
ZSBWU0NTSUJBQ0tfT1BfVVBEQVRFREVWX1NUQVRFOgorCQkJaWYgKGRldmljZV9zdGF0ZSA9PSBY
ZW5idXNTdGF0ZUluaXRpYWxpc2VkKSB7CisJCQkJLyogbW9kaWZ5IHZzY3NpLWRldnMvZGV2LXgv
c3RhdGUgKi8KKwkJCQlpZiAoeGVuYnVzX3ByaW50ZihYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCBz
dGF0ZV9zdHIsCisJCQkJCQkgICAgIiVkIiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpKSB7CisJCQkJ
CXByaW50ayhLRVJOX0VSUiAic2NzaWJhY2s6IHhlbmJ1c19wcmludGYgZXJyb3IgJXNcbiIsIHN0
YXRlX3N0cik7CisJCQkJCXNjc2liYWNrX2RlbF90cmFuc2xhdGlvbl9lbnRyeShiZS0+aW5mbywg
JnZpcik7CisJCQkJCXhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwgc3RhdGVf
c3RyLAorCQkJCQkJCSAgICAiJWQiLCBYZW5idXNTdGF0ZUNsb3NlZCk7CisJCQkJfQorCQkJfQor
CQkJYnJlYWs7CisJCS8qV2hlbiBpdCBpcyBuZWNlc3NhcnksIHByb2Nlc3NpbmcgaXMgYWRkZWQg
aGVyZS4qLworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwl9CisKKwlrZnJlZShkaXIpOwor
CXJldHVybiA7Cit9CisKKworc3RhdGljIHZvaWQgc2NzaWJhY2tfZnJvbnRlbmRfY2hhbmdlZChz
dHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAorCQkJCQllbnVtIHhlbmJ1c19zdGF0ZSBmcm9udGVu
ZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSA9IGRldl9nZXRfZHJ2ZGF0YSgm
ZGV2LT5kZXYpOworCWludCBlcnI7CisKKwlzd2l0Y2ggKGZyb250ZW5kX3N0YXRlKSB7CisJY2Fz
ZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZzoKKwkJYnJlYWs7CisJY2FzZSBYZW5idXNTdGF0ZUlu
aXRpYWxpc2VkOgorCQllcnIgPSBzY3NpYmFja19tYXAoYmUpOworCQlpZiAoZXJyKQorCQkJYnJl
YWs7CisKKwkJc2NzaWJhY2tfZG9fbHVuX2hvdHBsdWcoYmUsIFZTQ1NJQkFDS19PUF9BRERfT1Jf
REVMX0xVTik7CisJCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUNvbm5lY3Rl
ZCk7CisKKwkJYnJlYWs7CisJY2FzZSBYZW5idXNTdGF0ZUNvbm5lY3RlZDoKKworCQlzY3NpYmFj
a19kb19sdW5faG90cGx1ZyhiZSwgVlNDU0lCQUNLX09QX1VQREFURURFVl9TVEFURSk7CisKKwkJ
aWYgKGRldi0+c3RhdGUgPT0gWGVuYnVzU3RhdGVDb25uZWN0ZWQpCisJCQlicmVhazsKKworCQl4
ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOworCisJCWJyZWFr
OworCisJY2FzZSBYZW5idXNTdGF0ZUNsb3Npbmc6CisJCXNjc2liYWNrX2Rpc2Nvbm5lY3QoYmUt
PmluZm8pOworCQl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDbG9zaW5nKTsK
KwkJYnJlYWs7CisKKwljYXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOgorCQl4ZW5idXNfc3dpdGNoX3N0
YXRlKGRldiwgWGVuYnVzU3RhdGVDbG9zZWQpOworCQlpZiAoeGVuYnVzX2Rldl9pc19vbmxpbmUo
ZGV2KSkKKwkJCWJyZWFrOworCQkvKiBmYWxsIHRocm91Z2ggaWYgbm90IG9ubGluZSAqLworCWNh
c2UgWGVuYnVzU3RhdGVVbmtub3duOgorCQlkZXZpY2VfdW5yZWdpc3RlcigmZGV2LT5kZXYpOwor
CQlicmVhazsKKworCWNhc2UgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nOgorCQlzY3NpYmFja19k
b19sdW5faG90cGx1ZyhiZSwgVlNDU0lCQUNLX09QX0FERF9PUl9ERUxfTFVOKTsKKworCQl4ZW5i
dXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyZWQpOworCisJCWJyZWFr
OworCisJZGVmYXVsdDoKKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIC1FSU5WQUwsICJzYXcgc3Rh
dGUgJWQgYXQgZnJvbnRlbmQiLAorCQkJCQlmcm9udGVuZF9zdGF0ZSk7CisJCWJyZWFrOworCX0K
K30KKworCitzdGF0aWMgaW50IHNjc2liYWNrX3JlbW92ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAq
ZGV2KQoreworCXN0cnVjdCBiYWNrZW5kX2luZm8gKmJlID0gZGV2X2dldF9kcnZkYXRhKCZkZXYt
PmRldik7CisKKwlpZiAoYmUtPmluZm8pIHsKKwkJc2NzaWJhY2tfZGlzY29ubmVjdChiZS0+aW5m
byk7CisJCXNjc2liYWNrX3JlbGVhc2VfdHJhbnNsYXRpb25fZW50cnkoYmUtPmluZm8pOworCQlz
Y3NpYmFja19mcmVlKGJlLT5pbmZvKTsKKwkJYmUtPmluZm8gPSBOVUxMOworCX0KKworCWtmcmVl
KGJlKTsKKwlkZXZfc2V0X2RydmRhdGEoJmRldi0+ZGV2LCBOVUxMKTsKKworCXJldHVybiAwOwor
fQorCisKK3N0YXRpYyBpbnQgc2NzaWJhY2tfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRl
diwKKwkJCSAgIGNvbnN0IHN0cnVjdCB4ZW5idXNfZGV2aWNlX2lkICppZCkKK3sKKwlpbnQgZXJy
OworCXVuc2lnbmVkIHZhbCA9IDA7CisKKwlzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSA9IGt6YWxs
b2Moc2l6ZW9mKHN0cnVjdCBiYWNrZW5kX2luZm8pLAorCQkJCQkgIEdGUF9LRVJORUwpOworCisJ
aWYgKCFiZSkgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgLUVOT01FTSwKKwkJCQkgImFsbG9j
YXRpbmcgYmFja2VuZCBzdHJ1Y3R1cmUiKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCWJlLT5k
ZXYgPSBkZXY7CisJZGV2X3NldF9kcnZkYXRhKCZkZXYtPmRldiwgYmUpOworCisJYmUtPmluZm8g
PSB2c2NzaWJrX2luZm9fYWxsb2MoZGV2LT5vdGhlcmVuZF9pZCk7CisJaWYgKElTX0VSUihiZS0+
aW5mbykpIHsKKwkJZXJyID0gUFRSX0VSUihiZS0+aW5mbyk7CisJCWJlLT5pbmZvID0gTlVMTDsK
KwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgImNyZWF0aW5nIHNjc2lob3N0IGludGVyZmFj
ZSIpOworCQlnb3RvIGZhaWw7CisJfQorCisJYmUtPmluZm8tPmRldiA9IGRldjsKKwliZS0+aW5m
by0+aXJxID0gMDsKKwliZS0+aW5mby0+ZmVhdHVyZSA9IDA7CS8qZGVmYXVsdCBub3QgSE9TVE1P
REUuKi8KKworCXNjc2liYWNrX2luaXRfdHJhbnNsYXRpb25fdGFibGUoYmUtPmluZm8pOworCisJ
ZXJyID0geGVuYnVzX3NjYW5mKFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsCisJCQkJImZlYXR1cmUt
aG9zdCIsICIlZCIsICZ2YWwpOworCWlmIChYRU5CVVNfRVhJU1RfRVJSKGVycikpCisJCXZhbCA9
IDA7CisKKwlpZiAodmFsKQorCQliZS0+aW5mby0+ZmVhdHVyZSA9IFZTQ1NJX1RZUEVfSE9TVDsK
KworCWVyciA9IHhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUluaXRXYWl0KTsK
KwlpZiAoZXJyKQorCQlnb3RvIGZhaWw7CisKKwlyZXR1cm4gMDsKKworCitmYWlsOgorCXByaW50
ayhLRVJOX1dBUk5JTkcgInNjc2liYWNrOiAlcyBmYWlsZWRcbiIsX19mdW5jX18pOworCXNjc2li
YWNrX3JlbW92ZShkZXYpOworCisJcmV0dXJuIGVycjsKK30KKworCitzdGF0aWMgY29uc3Qgc3Ry
dWN0IHhlbmJ1c19kZXZpY2VfaWQgc2NzaWJhY2tfaWRzW10gPSB7CisJeyAidnNjc2kiIH0sCisJ
eyAiIiB9Cit9OworCitzdGF0aWMgREVGSU5FX1hFTkJVU19EUklWRVIoc2NzaWJhY2ssICwKKwku
cHJvYmUJCQk9IHNjc2liYWNrX3Byb2JlLAorCS5yZW1vdmUJCQk9IHNjc2liYWNrX3JlbW92ZSwK
Kwkub3RoZXJlbmRfY2hhbmdlZAk9IHNjc2liYWNrX2Zyb250ZW5kX2NoYW5nZWQKKyk7CisKK2lu
dCBzY3NpYmFja194ZW5idXNfaW5pdCh2b2lkKQoreworCXJldHVybiB4ZW5idXNfcmVnaXN0ZXJf
YmFja2VuZCgmc2NzaWJhY2tfZHJpdmVyKTsKK30KKwordm9pZCBzY3NpYmFja194ZW5idXNfdW5y
ZWdpc3Rlcih2b2lkKQoreworCXhlbmJ1c191bnJlZ2lzdGVyX2RyaXZlcigmc2NzaWJhY2tfZHJp
dmVyKTsKK30KZGlmZiAtcnVwTiB4ZW4vZHJpdmVycy9zY3NpL3hlbi1zY3NpZnJvbnQvTWFrZWZp
bGUgeGVuYy9kcml2ZXJzL3Njc2kveGVuLXNjc2lmcm9udC9NYWtlZmlsZQotLS0geGVuL2RyaXZl
cnMvc2NzaS94ZW4tc2NzaWZyb250L01ha2VmaWxlCTE5NjktMTItMzEgMTc6MDA6MDAuMDAwMDAw
MDAwIC0wNzAwCisrKyB4ZW5jL2RyaXZlcnMvc2NzaS94ZW4tc2NzaWZyb250L01ha2VmaWxlCTIw
MTItMDItMjQgMTQ6NTY6MTMuNTM4OTc4MzAwIC0wNzAwCkBAIC0wLDAgKzEsNCBAQAorCitvYmot
JChDT05GSUdfWEVOX1NDU0lfRlJPTlRFTkQpCTo9IHhlbi1zY3NpZnJvbnQubworeGVuLXNjc2lm
cm9udC1vYmpzIDo9IHNjc2lmcm9udC5vIHhlbmJ1cy5vCisKZGlmZiAtcnVwTiB4ZW4vZHJpdmVy
cy9zY3NpL3hlbi1zY3NpZnJvbnQvY29tbW9uLmggeGVuYy9kcml2ZXJzL3Njc2kveGVuLXNjc2lm
cm9udC9jb21tb24uaAotLS0geGVuL2RyaXZlcnMvc2NzaS94ZW4tc2NzaWZyb250L2NvbW1vbi5o
CTE5NjktMTItMzEgMTc6MDA6MDAuMDAwMDAwMDAwIC0wNzAwCisrKyB4ZW5jL2RyaXZlcnMvc2Nz
aS94ZW4tc2NzaWZyb250L2NvbW1vbi5oCTIwMTItMDItMjQgMTQ6NTY6MTMuNTM4OTc4MzAwIC0w
NzAwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogWGVuIFNDU0kgZnJvbnRlbmQgZHJpdmVyCisg
KgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBGVUpJVFNVIExpbWl0ZWQKKyAqCisgKiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBvciwgd2hlbiBkaXN0cmlidXRlZAorICogc2VwYXJhdGVseSBmcm9tIHRoZSBMaW51
eCBrZXJuZWwgb3IgaW5jb3Jwb3JhdGVkIGludG8gb3RoZXIKKyAqIHNvZnR3YXJlIHBhY2thZ2Vz
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgbGljZW5zZToKKyAqCisgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisgKiBvZiB0aGlzIHNvdXJjZSBmaWxlICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksCisgKiBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwKKyAqIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg
T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4g
VEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX19YRU5fRFJJVkVSU19TQ1NJRlJPTlRfSF9f
CisjZGVmaW5lIF9fWEVOX0RSSVZFUlNfU0NTSUZST05UX0hfXworCisjaW5jbHVkZSA8bGludXgv
dmVyc2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tl
cm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2t0aHJl
YWQuaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0
Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5o
PgorI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+
CisjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgor
I2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CisjaW5jbHVkZSA8YXNtL3hlbi9wYWdlLmg+Cisj
aW5jbHVkZSA8eGVuL3hlbmJ1cy5oPgorI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgorI2lu
Y2x1ZGUgPHhlbi9ldmVudHMuaD4KKyNpbmNsdWRlIDx4ZW4vZXZ0Y2huLmg+CisjaW5jbHVkZSA8
eGVuL2ludGVyZmFjZS94ZW4uaD4KKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3JpbmcuaD4K
KyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3ZzY3NpaWYuaD4KKyNpbmNsdWRlIDx4ZW4vaW50
ZXJmYWNlL2dyYW50X3RhYmxlLmg+CisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9pby9wcm90b2Nv
bHMuaD4KKyNpbmNsdWRlIDxhc20vZGVsYXkuaD4KKyNpbmNsdWRlIDxhc20vaHlwZXJ2aXNvci5o
PgorLyojaW5jbHVkZSA8YXNtL21hZGRyLmg+Ki8KKworI2lmZGVmIEhBVkVfWEVOX1BMQVRGT1JN
X0NPTVBBVF9ICisjaW5jbHVkZSA8eGVuL3BsYXRmb3JtLWNvbXBhdC5oPgorI2VuZGlmCisKKyNk
ZWZpbmUgR1JBTlRfSU5WQUxJRF9SRUYJMAorI2RlZmluZSBWU0NTSV9JTl9BQk9SVAkJMQorI2Rl
ZmluZSBWU0NTSV9JTl9SRVNFVAkJMgorCisvKiB0dW5pbmcgcG9pbnQqLworI2RlZmluZSBWU0NT
SUlGX0RFRkFVTFRfQ01EX1BFUl9MVU4gMTAKKyNkZWZpbmUgVlNDU0lJRl9NQVhfVEFSR0VUICAg
ICAgICAgIDY0CisjZGVmaW5lIFZTQ1NJSUZfTUFYX0xVTiAgICAgICAgICAgICAyNTUKKworI2Rl
ZmluZSBWU0NTSUlGX1JJTkdfU0laRQlfX0NPTlNUX1JJTkdfU0laRSh2c2NzaWlmLCBQQUdFX1NJ
WkUpCisjZGVmaW5lIFZTQ1NJSUZfTUFYX1JFUVMJVlNDU0lJRl9SSU5HX1NJWkUKKworc3RydWN0
IHZzY3NpZnJudF9zaGFkb3cgeworCXVpbnQxNl90IG5leHRfZnJlZTsKKworCS8qIGNvbW1hbmQg
YmV0d2VlbiBiYWNrZW5kIGFuZCBmcm9udGVuZAorCSAqIFZTQ1NJSUZfQUNUX1NDU0lfQ0RCIG9y
IFZTQ1NJSUZfQUNUX1NDU0lfUkVTRVQgKi8KKwl1bnNpZ25lZCBjaGFyIGFjdDsKKworCS8qIGRv
IHJlc2V0IGZ1bmN0aW9uICovCisJd2FpdF9xdWV1ZV9oZWFkX3Qgd3FfcmVzZXQ7CS8qIHJlc2V0
IHdvcmsgcXVldWUgICAgICAgICAgICovCisJaW50IHdhaXRfcmVzZXQ7CQkJLyogcmVzZXQgd29y
ayBxdWV1ZSBjb25kaXRpb24gKi8KKwlpbnQzMl90IHJzbHRfcmVzZXQ7CQkvKiByZXNldCByZXNw
b25zZSBzdGF0dXMgICAgICAqLworCQkJCQkvKiAoU1VDRVNTIG9yIEZBSUxFRCkgICAgICAgICAq
LworCisJLyogZm9yIERNQV9UT19ERVZJQ0UoMSksIERNQV9GUk9NX0RFVklDRSgyKSwgRE1BX05P
TkUoMykKKwkgICByZXF1ZXN0cyAqLworCXVuc2lnbmVkIGludCBzY19kYXRhX2RpcmVjdGlvbjsK
KworCS8qIE51bWJlciBvZiBwaWVjZXMgb2Ygc2NhdHRlci1nYXRoZXIgKi8KKwl1bnNpZ25lZCBp
bnQgbnJfc2VnbWVudHM7CisKKwkvKiByZXF1ZXN0ZWQgc3RydWN0IHNjc2lfY21uZCBpcyBzdG9y
ZWQgZnJvbSBrZXJuZWwgKi8KKwl1bnNpZ25lZCBsb25nIHJlcV9zY3NpX2NtbmQ7CisJaW50IGdy
ZWZbVlNDU0lJRl9TR19UQUJMRVNJWkVdOworfTsKKworc3RydWN0IHZzY3NpZnJudF9pbmZvIHsK
KwlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2OworCisJc3RydWN0IFNjc2lfSG9zdCAqaG9zdDsK
KworCXNwaW5sb2NrX3QgaW9fbG9jazsKKwlzcGlubG9ja190IHNoYWRvd19sb2NrOworCXVuc2ln
bmVkIGludCBldnRjaG47CisJdW5zaWduZWQgaW50IGlycTsKKworCWdyYW50X3JlZl90IHJpbmdf
cmVmOworCXN0cnVjdCB2c2NzaWlmX2Zyb250X3JpbmcgcmluZzsKKwlzdHJ1Y3QgdnNjc2lpZl9y
ZXNwb25zZQlyaW5nX3JlczsKKworCXN0cnVjdCB2c2NzaWZybnRfc2hhZG93IHNoYWRvd1tWU0NT
SUlGX01BWF9SRVFTXTsKKwl1aW50MzJfdCBzaGFkb3dfZnJlZTsKKworCXN0cnVjdCB0YXNrX3N0
cnVjdCAqa3RocmVhZDsKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3cTsKKwl1bnNpZ25lZCBpbnQgd2Fp
dGluZ19yZXNwOworCit9OworCisjZGVmaW5lIERQUklOVEsoX2YsIF9hLi4uKQkJCQlcCisJcHJf
ZGVidWcoIihmaWxlPSVzLCBsaW5lPSVkKSAiIF9mLAlcCisJCSBfX0ZJTEVfXyAsIF9fTElORV9f
ICwgIyMgX2EgKQorCitpbnQgc2NzaWZyb250X3hlbmJ1c19pbml0KHZvaWQpOwordm9pZCBzY3Np
ZnJvbnRfeGVuYnVzX3VucmVnaXN0ZXIodm9pZCk7CitpbnQgc2NzaWZyb250X3NjaGVkdWxlKHZv
aWQgKmRhdGEpOworaXJxcmV0dXJuX3Qgc2NzaWZyb250X2ludHIoaW50IGlycSwgdm9pZCAqZGV2
X2lkKTsKK2ludCBzY3NpZnJvbnRfY21kX2RvbmUoc3RydWN0IHZzY3NpZnJudF9pbmZvICppbmZv
KTsKKworCisjZW5kaWYgLyogX19YRU5fRFJJVkVSU19TQ1NJRlJPTlRfSF9fICAqLwpkaWZmIC1y
dXBOIHhlbi9kcml2ZXJzL3Njc2kveGVuLXNjc2lmcm9udC9zY3NpZnJvbnQuYyB4ZW5jL2RyaXZl
cnMvc2NzaS94ZW4tc2NzaWZyb250L3Njc2lmcm9udC5jCi0tLSB4ZW4vZHJpdmVycy9zY3NpL3hl
bi1zY3NpZnJvbnQvc2NzaWZyb250LmMJMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAwMDAgLTA3
MDAKKysrIHhlbmMvZHJpdmVycy9zY3NpL3hlbi1zY3NpZnJvbnQvc2NzaWZyb250LmMJMjAxMi0w
Mi0yNCAxNDo1NjoxMy41Mzg5NzgzMDAgLTA3MDAKQEAgLTAsMCArMSw0NjkgQEAKKy8qCisgKiBY
ZW4gU0NTSSBmcm9udGVuZCBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEZVSklU
U1UgTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IG9yLCB3aGVuIGRpc3RyaWJ1dGVkCisg
KiBzZXBhcmF0ZWx5IGZyb20gdGhlIExpbnV4IGtlcm5lbCBvciBpbmNvcnBvcmF0ZWQgaW50byBv
dGhlcgorICogc29mdHdhcmUgcGFja2FnZXMsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBsaWNl
bnNlOgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc291cmNlIGZpbGUg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2Us
IGNvcHksIG1vZGlmeSwKKyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0bworICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBG
Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUg
PGxpbnV4L3ZlcnNpb24uaD4KKyNpbmNsdWRlICJjb21tb24uaCIKKworc3RhdGljIGludCBnZXRf
aWRfZnJvbV9mcmVlbGlzdChzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8pCit7CisJdW5zaWdu
ZWQgbG9uZyBmbGFnczsKKwl1aW50MzJfdCBmcmVlOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmlu
Zm8tPnNoYWRvd19sb2NrLCBmbGFncyk7CisKKwlmcmVlID0gaW5mby0+c2hhZG93X2ZyZWU7CisJ
QlVHX09OKGZyZWUgPiBWU0NTSUlGX01BWF9SRVFTKTsKKwlpbmZvLT5zaGFkb3dfZnJlZSA9IGlu
Zm8tPnNoYWRvd1tmcmVlXS5uZXh0X2ZyZWU7CisJaW5mby0+c2hhZG93W2ZyZWVdLm5leHRfZnJl
ZSA9IDB4MGZmZjsKKworCWluZm8tPnNoYWRvd1tmcmVlXS53YWl0X3Jlc2V0ID0gMDsKKworCXNw
aW5fdW5sb2NrX2lycXJlc3RvcmUoJmluZm8tPnNoYWRvd19sb2NrLCBmbGFncyk7CisKKwlyZXR1
cm4gZnJlZTsKK30KKworc3RhdGljIHZvaWQgYWRkX2lkX3RvX2ZyZWVsaXN0KHN0cnVjdCB2c2Nz
aWZybnRfaW5mbyAqaW5mbywgdWludDMyX3QgaWQpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK
KworCXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5zaGFkb3dfbG9jaywgZmxhZ3MpOworCisJaW5m
by0+c2hhZG93W2lkXS5uZXh0X2ZyZWUgID0gaW5mby0+c2hhZG93X2ZyZWU7CisJaW5mby0+c2hh
ZG93W2lkXS5yZXFfc2NzaV9jbW5kID0gMDsKKwlpbmZvLT5zaGFkb3dfZnJlZSA9IGlkOworCisJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+c2hhZG93X2xvY2ssIGZsYWdzKTsKK30KKwor
CitzdHJ1Y3QgdnNjc2lpZl9yZXF1ZXN0ICogc2NzaWZyb250X3ByZV9yZXF1ZXN0KHN0cnVjdCB2
c2NzaWZybnRfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgdnNjc2lpZl9mcm9udF9yaW5nICpyaW5n
ID0gJihpbmZvLT5yaW5nKTsKKwl2c2NzaWlmX3JlcXVlc3RfdCAqcmluZ19yZXE7CisJdWludDMy
X3QgaWQ7CisKKwlyaW5nX3JlcSA9IFJJTkdfR0VUX1JFUVVFU1QoJihpbmZvLT5yaW5nKSwgcmlu
Zy0+cmVxX3Byb2RfcHZ0KTsKKworCXJpbmctPnJlcV9wcm9kX3B2dCsrOworCisJaWQgPSBnZXRf
aWRfZnJvbV9mcmVlbGlzdChpbmZvKTsJLyogdXNlIGlkIGJ5IHJlc3BvbnNlICovCisJcmluZ19y
ZXEtPnJxaWQgPSAodWludDE2X3QpaWQ7CisKKwlyZXR1cm4gcmluZ19yZXE7Cit9CisKKworc3Rh
dGljIHZvaWQgc2NzaWZyb250X25vdGlmeV93b3JrKHN0cnVjdCB2c2NzaWZybnRfaW5mbyAqaW5m
bykKK3sKKwlpbmZvLT53YWl0aW5nX3Jlc3AgPSAxOworCXdha2VfdXAoJmluZm8tPndxKTsKK30K
KworCitzdGF0aWMgdm9pZCBzY3NpZnJvbnRfZG9fcmVxdWVzdChzdHJ1Y3QgdnNjc2lmcm50X2lu
Zm8gKmluZm8pCit7CisJc3RydWN0IHZzY3NpaWZfZnJvbnRfcmluZyAqcmluZyA9ICYoaW5mby0+
cmluZyk7CisJdW5zaWduZWQgaW50IGlycSA9IGluZm8tPmlycTsKKwlpbnQgbm90aWZ5OworCisJ
UklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJRlkocmluZywgbm90aWZ5KTsKKwlpZiAo
bm90aWZ5KQorCQlub3RpZnlfcmVtb3RlX3ZpYV9pcnEoaXJxKTsKK30KKworaXJxcmV0dXJuX3Qg
c2NzaWZyb250X2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXNjc2lmcm9udF9ub3Rp
Znlfd29yaygoc3RydWN0IHZzY3NpZnJudF9pbmZvICopZGV2X2lkKTsKKwlyZXR1cm4gSVJRX0hB
TkRMRUQ7Cit9CisKKworc3RhdGljIHZvaWQgc2NzaWZyb250X2dudHRhYl9kb25lKHN0cnVjdCB2
c2NzaWZybnRfc2hhZG93ICpzLCB1aW50MzJfdCBpZCkKK3sKKwlpbnQgaTsKKworCWlmIChzLT5z
Y19kYXRhX2RpcmVjdGlvbiA9PSBETUFfTk9ORSkKKwkJcmV0dXJuOworCisJaWYgKHMtPm5yX3Nl
Z21lbnRzKSB7CisJCWZvciAoaSA9IDA7IGkgPCBzLT5ucl9zZWdtZW50czsgaSsrKSB7CisJCQlp
ZiAodW5saWtlbHkoZ250dGFiX3F1ZXJ5X2ZvcmVpZ25fYWNjZXNzKAorCQkJCXMtPmdyZWZbaV0p
ICE9IDApKSB7CisJCQkJcHJpbnRrKEtFUk5fQUxFUlQgInNjc2lmcm9udDogIgorCQkJCQkiZ3Jh
bnQgc3RpbGwgaW4gdXNlIGJ5IGJhY2tlbmQuXG4iKTsKKwkJCQlCVUcoKTsKKwkJCX0KKwkJCWdu
dHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3Mocy0+Z3JlZltpXSwgMCwgMFVMKTsKKwkJfQorCX0KKwor
CXJldHVybjsKK30KKworCitzdGF0aWMgdm9pZCBzY3NpZnJvbnRfY2RiX2NtZF9kb25lKHN0cnVj
dCB2c2NzaWZybnRfaW5mbyAqaW5mbywKKwkJICAgICAgIHZzY3NpaWZfcmVzcG9uc2VfdCAqcmlu
Z19yZXMpCit7CisJc3RydWN0IHNjc2lfY21uZCAqc2M7CisJdWludDMyX3QgaWQ7CisJdWludDhf
dCBzZW5zZV9sZW47CisKKwlpZCA9IHJpbmdfcmVzLT5ycWlkOworCXNjID0gKHN0cnVjdCBzY3Np
X2NtbmQgKilpbmZvLT5zaGFkb3dbaWRdLnJlcV9zY3NpX2NtbmQ7CisKKwlpZiAoc2MgPT0gTlVM
TCkKKwkJQlVHKCk7CisKKwlzY3NpZnJvbnRfZ250dGFiX2RvbmUoJmluZm8tPnNoYWRvd1tpZF0s
IGlkKTsKKwlhZGRfaWRfdG9fZnJlZWxpc3QoaW5mbywgaWQpOworCisJc2MtPnJlc3VsdCA9IHJp
bmdfcmVzLT5yc2x0OworCXNjc2lfc2V0X3Jlc2lkKHNjLCByaW5nX3Jlcy0+cmVzaWR1YWxfbGVu
KTsKKworCWlmIChyaW5nX3Jlcy0+c2Vuc2VfbGVuID4gVlNDU0lJRl9TRU5TRV9CVUZGRVJTSVpF
KQorCQlzZW5zZV9sZW4gPSBWU0NTSUlGX1NFTlNFX0JVRkZFUlNJWkU7CisJZWxzZQorCQlzZW5z
ZV9sZW4gPSByaW5nX3Jlcy0+c2Vuc2VfbGVuOworCisJaWYgKHNlbnNlX2xlbikKKwkJbWVtY3B5
KHNjLT5zZW5zZV9idWZmZXIsIHJpbmdfcmVzLT5zZW5zZV9idWZmZXIsIHNlbnNlX2xlbik7CisK
KwlzYy0+c2NzaV9kb25lKHNjKTsKKworCXJldHVybjsKK30KKworCitzdGF0aWMgdm9pZCBzY3Np
ZnJvbnRfc3luY19jbWRfZG9uZShzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8sCisJCQkJdnNj
c2lpZl9yZXNwb25zZV90ICpyaW5nX3JlcykKK3sKKwl1aW50MTZfdCBpZCA9IHJpbmdfcmVzLT5y
cWlkOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW5mby0+
c2hhZG93X2xvY2ssIGZsYWdzKTsKKwlpbmZvLT5zaGFkb3dbaWRdLndhaXRfcmVzZXQgPSAxOwor
CWluZm8tPnNoYWRvd1tpZF0ucnNsdF9yZXNldCA9IHJpbmdfcmVzLT5yc2x0OworCXNwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJmluZm8tPnNoYWRvd19sb2NrLCBmbGFncyk7CisKKwl3YWtlX3VwKCYo
aW5mby0+c2hhZG93W2lkXS53cV9yZXNldCkpOworfQorCisKK2ludCBzY3NpZnJvbnRfY21kX2Rv
bmUoc3RydWN0IHZzY3NpZnJudF9pbmZvICppbmZvKQoreworCXZzY3NpaWZfcmVzcG9uc2VfdCAq
cmluZ19yZXM7CisKKwlSSU5HX0lEWCBpLCBycDsKKwlpbnQgbW9yZV90b19kbyA9IDA7CisJdW5z
aWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5pb19sb2NrLCBm
bGFncyk7CisKKwlycCA9IGluZm8tPnJpbmcuc3JpbmctPnJzcF9wcm9kOworCXJtYigpOworCWZv
ciAoaSA9IGluZm8tPnJpbmcucnNwX2NvbnM7IGkgIT0gcnA7IGkrKykgeworCisJCXJpbmdfcmVz
ID0gUklOR19HRVRfUkVTUE9OU0UoJmluZm8tPnJpbmcsIGkpOworCisJCWlmIChpbmZvLT5zaGFk
b3dbcmluZ19yZXMtPnJxaWRdLmFjdCA9PSBWU0NTSUlGX0FDVF9TQ1NJX0NEQikKKwkJCXNjc2lm
cm9udF9jZGJfY21kX2RvbmUoaW5mbywgcmluZ19yZXMpOworCQllbHNlCisJCQlzY3NpZnJvbnRf
c3luY19jbWRfZG9uZShpbmZvLCByaW5nX3Jlcyk7CisJfQorCisJaW5mby0+cmluZy5yc3BfY29u
cyA9IGk7CisKKwlpZiAoaSAhPSBpbmZvLT5yaW5nLnJlcV9wcm9kX3B2dCkgeworCQlSSU5HX0ZJ
TkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMoJmluZm8tPnJpbmcsIG1vcmVfdG9fZG8pOworCX0gZWxz
ZSB7CisJCWluZm8tPnJpbmcuc3JpbmctPnJzcF9ldmVudCA9IGkgKyAxOworCX0KKworCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJmluZm8tPmlvX2xvY2ssIGZsYWdzKTsKKworCisJLyogWWllbGQg
cG9pbnQgZm9yIHRoaXMgdW5ib3VuZGVkIGxvb3AuICovCisJY29uZF9yZXNjaGVkKCk7CisKKwly
ZXR1cm4gbW9yZV90b19kbzsKK30KKworCisKKworaW50IHNjc2lmcm9udF9zY2hlZHVsZSh2b2lk
ICpkYXRhKQoreworCXN0cnVjdCB2c2NzaWZybnRfaW5mbyAqaW5mbyA9IChzdHJ1Y3QgdnNjc2lm
cm50X2luZm8gKilkYXRhOworCisJd2hpbGUgKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkpIHsKKwkJ
d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKAorCQkJaW5mby0+d3EsCisJCQlpbmZvLT53YWl0aW5n
X3Jlc3AgfHwga3RocmVhZF9zaG91bGRfc3RvcCgpKTsKKworCQlpbmZvLT53YWl0aW5nX3Jlc3Ag
PSAwOworCQlzbXBfbWIoKTsKKworCQlpZiAoc2NzaWZyb250X2NtZF9kb25lKGluZm8pKQorCQkJ
aW5mby0+d2FpdGluZ19yZXNwID0gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisKK3N0YXRp
YyBpbnQgbWFwX2RhdGFfZm9yX3JlcXVlc3Qoc3RydWN0IHZzY3NpZnJudF9pbmZvICppbmZvLAor
CQlzdHJ1Y3Qgc2NzaV9jbW5kICpzYywgdnNjc2lpZl9yZXF1ZXN0X3QgKnJpbmdfcmVxLCB1aW50
MzJfdCBpZCkKK3sKKwlncmFudF9yZWZfdCBncmVmX2hlYWQ7CisJaW50IGVyciwgcmVmLCByZWZf
Y250ID0gMDsKKwlpbnQgd3JpdGUgPSAoc2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19E
RVZJQ0UpOworCXVuc2lnbmVkIGludCBpLCBucl9wYWdlcywgb2ZmLCBsZW4sIGJ5dGVzOworCXVu
c2lnbmVkIGxvbmcgYnVmZmVyX21mbiwgYnVmZmVyX3BmbjsKKworCWlmIChzYy0+c2NfZGF0YV9k
aXJlY3Rpb24gPT0gRE1BX05PTkUpCisJCXJldHVybiAwOworCisJZXJyID0gZ250dGFiX2FsbG9j
X2dyYW50X3JlZmVyZW5jZXMoVlNDU0lJRl9TR19UQUJMRVNJWkUsICZncmVmX2hlYWQpOworCWlm
IChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpZnJvbnQ6IGdudHRhYl9hbGxvY19ncmFu
dF9yZWZlcmVuY2VzKCkgZXJyb3JcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpZiAo
c2NzaV9idWZmbGVuKHNjKSkgeworCQkvKiBxdW90ZWQgc2NzaV9saWIuYy9zY3NpX3JlcV9tYXBf
c2cgLiAqLworCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCAqc2dsID0gc2NzaV9zZ2xpc3Qoc2Mp
OworCQl1bnNpZ25lZCBpbnQgZGF0YV9sZW4gPSBzY3NpX2J1ZmZsZW4oc2MpOworCisJCW5yX3Bh
Z2VzID0gKGRhdGFfbGVuICsgc2dsLT5vZmZzZXQgKyBQQUdFX1NJWkUgLSAxKSA+PiBQQUdFX1NI
SUZUOworCQlpZiAobnJfcGFnZXMgPiBWU0NTSUlGX1NHX1RBQkxFU0laRSkgeworCQkJcHJpbnRr
KEtFUk5fRVJSICJzY3NpZnJvbnQ6IFVuYWJsZSB0byBtYXAgcmVxdWVzdF9idWZmZXIgZm9yIGNv
bW1hbmQhXG4iKTsKKwkJCXJlZl9jbnQgPSAoLUUyQklHKTsKKwkJCWdvdG8gYmlnX3RvX3NnOwor
CQl9CisKKwkJZm9yX2VhY2hfc2cgKHNnbCwgc2csIHNjc2lfc2dfY291bnQoc2MpLCBpKSB7CisJ
CQlvZmYgPSBzZy0+b2Zmc2V0OworCQkJbGVuID0gc2ctPmxlbmd0aDsKKworCQkJYnVmZmVyX3Bm
biA9IHBhZ2VfdG9fcGZuKHNnX3BhZ2Uoc2cpKTsKKwkJCXdoaWxlIChsZW4gPiAwICYmIGRhdGFf
bGVuID4gMCkgeworCQkJCS8qCisJCQkJICogc2cgc2VuZHMgYSBzY2F0dGVybGlzdCB0aGF0IGlz
IGxhcmdlciB0aGFuCisJCQkJICogdGhlIGRhdGFfbGVuIGl0IHdhbnRzIHRyYW5zZmVycmVkIGZv
ciBjZXJ0YWluCisJCQkJICogSU8gc2l6ZXMKKwkJCQkgKi8KKwkJCQlieXRlcyA9IG1pbl90KHVu
c2lnbmVkIGludCwgbGVuLCBQQUdFX1NJWkUgLSBvZmYpOworCQkJCWJ5dGVzID0gbWluKGJ5dGVz
LCBkYXRhX2xlbik7CisKKwkJCQlyZWYgPSBnbnR0YWJfY2xhaW1fZ3JhbnRfcmVmZXJlbmNlKCZn
cmVmX2hlYWQpOworCQkJCUJVR19PTihyZWYgPT0gLUVOT1NQQyk7CisKKwkJCQlidWZmZXJfbWZu
ID0gcGZuX3RvX21mbihidWZmZXJfcGZuKTsKKwkJCQlnbnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nl
c3NfcmVmKHJlZiwgaW5mby0+ZGV2LT5vdGhlcmVuZF9pZCwKKwkJCQkJYnVmZmVyX21mbiwgd3Jp
dGUpOworCisJCQkJaW5mby0+c2hhZG93W2lkXS5ncmVmW3JlZl9jbnRdICA9IHJlZjsKKwkJCQly
aW5nX3JlcS0+c2VnW3JlZl9jbnRdLmdyZWYgICAgID0gcmVmOworCQkJCXJpbmdfcmVxLT5zZWdb
cmVmX2NudF0ub2Zmc2V0ICAgPSAodWludDE2X3Qpb2ZmOworCQkJCXJpbmdfcmVxLT5zZWdbcmVm
X2NudF0ubGVuZ3RoICAgPSAodWludDE2X3QpYnl0ZXM7CisKKwkJCQlidWZmZXJfcGZuICsrOwor
CQkJCWxlbiAtPSBieXRlczsKKwkJCQlkYXRhX2xlbiAtPSBieXRlczsKKwkJCQlvZmYgPSAwOwor
CQkJCXJlZl9jbnQrKzsKKwkJCX0KKwkJfQorCX0KKworYmlnX3RvX3NnOgorCisJZ250dGFiX2Zy
ZWVfZ3JhbnRfcmVmZXJlbmNlcyhncmVmX2hlYWQpOworCisJcmV0dXJuIHJlZl9jbnQ7Cit9CisK
K3N0YXRpYyBpbnQgc2NzaWZyb250X3F1ZXVlY29tbWFuZChzdHJ1Y3QgU2NzaV9Ib3N0ICpoLCBz
dHJ1Y3Qgc2NzaV9jbW5kICpzYykKK3sKKwlzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8gPQor
CQkoc3RydWN0IHZzY3NpZnJudF9pbmZvICopIHNjLT5kZXZpY2UtPmhvc3QtPmhvc3RkYXRhOwor
CXZzY3NpaWZfcmVxdWVzdF90ICpyaW5nX3JlcTsKKwlpbnQgcmVmX2NudDsKKwl1aW50MTZfdCBy
cWlkOworCisJaWYgKFJJTkdfRlVMTCgmaW5mby0+cmluZykpIHsKKwkJZ290byBvdXRfaG9zdF9i
dXN5OworCX0KKworCXNjLT5yZXN1bHQgICAgPSAwOworCisJcmluZ19yZXEgICAgICAgICAgPSBz
Y3NpZnJvbnRfcHJlX3JlcXVlc3QoaW5mbyk7CisJcnFpZCAgICAgICAgICAgICAgPSByaW5nX3Jl
cS0+cnFpZDsKKwlyaW5nX3JlcS0+YWN0ICAgICA9IFZTQ1NJSUZfQUNUX1NDU0lfQ0RCOworCisJ
cmluZ19yZXEtPmlkICAgICAgPSBzYy0+ZGV2aWNlLT5pZDsKKwlyaW5nX3JlcS0+bHVuICAgICA9
IHNjLT5kZXZpY2UtPmx1bjsKKwlyaW5nX3JlcS0+Y2hhbm5lbCA9IHNjLT5kZXZpY2UtPmNoYW5u
ZWw7CisJcmluZ19yZXEtPmNtZF9sZW4gPSBzYy0+Y21kX2xlbjsKKworCUJVR19PTihzYy0+Y21k
X2xlbiA+IFZTQ1NJSUZfTUFYX0NPTU1BTkRfU0laRSk7CisKKwlpZiAoc2MtPmNtZF9sZW4pCisJ
CW1lbWNweShyaW5nX3JlcS0+Y21uZCwgc2MtPmNtbmQsIHNjLT5jbWRfbGVuKTsKKwllbHNlCisJ
CW1lbXNldChyaW5nX3JlcS0+Y21uZCwgMCwgVlNDU0lJRl9NQVhfQ09NTUFORF9TSVpFKTsKKwor
CXJpbmdfcmVxLT5zY19kYXRhX2RpcmVjdGlvbiAgID0gKHVpbnQ4X3Qpc2MtPnNjX2RhdGFfZGly
ZWN0aW9uOworCXJpbmdfcmVxLT50aW1lb3V0X3Blcl9jb21tYW5kID0gKHNjLT5yZXF1ZXN0LT50
aW1lb3V0IC8gSFopOworCisJaW5mby0+c2hhZG93W3JxaWRdLnJlcV9zY3NpX2NtbmQgICAgID0g
KHVuc2lnbmVkIGxvbmcpc2M7CisJaW5mby0+c2hhZG93W3JxaWRdLnNjX2RhdGFfZGlyZWN0aW9u
ID0gc2MtPnNjX2RhdGFfZGlyZWN0aW9uOworCWluZm8tPnNoYWRvd1tycWlkXS5hY3QgICAgICAg
ICAgICAgICA9IHJpbmdfcmVxLT5hY3Q7CisKKwlyZWZfY250ID0gbWFwX2RhdGFfZm9yX3JlcXVl
c3QoaW5mbywgc2MsIHJpbmdfcmVxLCBycWlkKTsKKwlpZiAocmVmX2NudCA8IDApIHsKKwkJYWRk
X2lkX3RvX2ZyZWVsaXN0KGluZm8sIHJxaWQpOworCQlpZiAocmVmX2NudCA9PSAoLUVOT01FTSkp
CisJCQlnb3RvIG91dF9ob3N0X2J1c3k7CisJCWVsc2UgeworCQkJc2MtPnJlc3VsdCA9IChESURf
RVJST1IgPDwgMTYpOworCQkJZ290byBvdXRfZmFpbF9jb21tYW5kOworCQl9CisJfQorCisJcmlu
Z19yZXEtPm5yX3NlZ21lbnRzICAgICAgICAgID0gKHVpbnQ4X3QpcmVmX2NudDsKKwlpbmZvLT5z
aGFkb3dbcnFpZF0ubnJfc2VnbWVudHMgPSByZWZfY250OworCisJc2NzaWZyb250X2RvX3JlcXVl
c3QoaW5mbyk7CisKKwlyZXR1cm4gMDsKKworb3V0X2hvc3RfYnVzeToKKwlyZXR1cm4gU0NTSV9N
TFFVRVVFX0hPU1RfQlVTWTsKKworb3V0X2ZhaWxfY29tbWFuZDoKKwlzYy0+c2NzaV9kb25lKHNj
KTsKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IHNjc2lmcm9udF9laF9hYm9ydF9oYW5k
bGVyKHN0cnVjdCBzY3NpX2NtbmQgKnNjKQoreworCXJldHVybiAoRkFJTEVEKTsKK30KKworLyog
dnNjc2kgc3VwcG9ydHMgb25seSBkZXZpY2VfcmVzZXQsIGJlY2F1c2UgaXQgaXMgZWFjaCBvZiBM
VU5zICovCitzdGF0aWMgaW50IHNjc2lmcm9udF9kZXZfcmVzZXRfaGFuZGxlcihzdHJ1Y3Qgc2Nz
aV9jbW5kICpzYykKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gc2MtPmRldmljZS0+aG9z
dDsKKwlzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8gPQorCQkoc3RydWN0IHZzY3NpZnJudF9p
bmZvICopIHNjLT5kZXZpY2UtPmhvc3QtPmhvc3RkYXRhOworCisJdnNjc2lpZl9yZXF1ZXN0X3Qg
KnJpbmdfcmVxOworCXVpbnQxNl90IHJxaWQ7CisJaW50IGVycjsKKworCXNwaW5fbG9ja19pcnEo
aG9zdC0+aG9zdF9sb2NrKTsKKworCXJpbmdfcmVxICAgICAgPSBzY3NpZnJvbnRfcHJlX3JlcXVl
c3QoaW5mbyk7CisJcmluZ19yZXEtPmFjdCA9IFZTQ1NJSUZfQUNUX1NDU0lfUkVTRVQ7CisKKwly
cWlkICAgICAgICAgID0gcmluZ19yZXEtPnJxaWQ7CisJaW5mby0+c2hhZG93W3JxaWRdLmFjdCA9
IFZTQ1NJSUZfQUNUX1NDU0lfUkVTRVQ7CisKKwlyaW5nX3JlcS0+Y2hhbm5lbCA9IHNjLT5kZXZp
Y2UtPmNoYW5uZWw7CisJcmluZ19yZXEtPmlkICAgICAgPSBzYy0+ZGV2aWNlLT5pZDsKKwlyaW5n
X3JlcS0+bHVuICAgICA9IHNjLT5kZXZpY2UtPmx1bjsKKwlyaW5nX3JlcS0+Y21kX2xlbiA9IHNj
LT5jbWRfbGVuOworCisJaWYgKCBzYy0+Y21kX2xlbiApCisJCW1lbWNweShyaW5nX3JlcS0+Y21u
ZCwgc2MtPmNtbmQsIHNjLT5jbWRfbGVuKTsKKwllbHNlCisJCW1lbXNldChyaW5nX3JlcS0+Y21u
ZCwgMCwgVlNDU0lJRl9NQVhfQ09NTUFORF9TSVpFKTsKKworCXJpbmdfcmVxLT5zY19kYXRhX2Rp
cmVjdGlvbiAgID0gKHVpbnQ4X3Qpc2MtPnNjX2RhdGFfZGlyZWN0aW9uOworCXJpbmdfcmVxLT50
aW1lb3V0X3Blcl9jb21tYW5kID0gKHNjLT5yZXF1ZXN0LT50aW1lb3V0IC8gSFopOworCXJpbmdf
cmVxLT5ucl9zZWdtZW50cyAgICAgICAgID0gMDsKKworCXNjc2lmcm9udF9kb19yZXF1ZXN0KGlu
Zm8pOworCisJc3Bpbl91bmxvY2tfaXJxKGhvc3QtPmhvc3RfbG9jayk7CisJd2FpdF9ldmVudF9p
bnRlcnJ1cHRpYmxlKGluZm8tPnNoYWRvd1tycWlkXS53cV9yZXNldCwKKwkJCSBpbmZvLT5zaGFk
b3dbcnFpZF0ud2FpdF9yZXNldCk7CisJc3Bpbl9sb2NrX2lycShob3N0LT5ob3N0X2xvY2spOwor
CisJZXJyID0gaW5mby0+c2hhZG93W3JxaWRdLnJzbHRfcmVzZXQ7CisKKwlhZGRfaWRfdG9fZnJl
ZWxpc3QoaW5mbywgcnFpZCk7CisKKwlzcGluX3VubG9ja19pcnEoaG9zdC0+aG9zdF9sb2NrKTsK
KwlyZXR1cm4gKGVycik7Cit9CisKKworc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBzY3NpZnJv
bnRfc2h0ID0geworCS5tb2R1bGUJCQk9IFRISVNfTU9EVUxFLAorCS5uYW1lCQkJPSAiWGVuIFND
U0kgZnJvbnRlbmQgZHJpdmVyIiwKKwkucXVldWVjb21tYW5kCQk9IHNjc2lmcm9udF9xdWV1ZWNv
bW1hbmQsCisJLmVoX2Fib3J0X2hhbmRsZXIJPSBzY3NpZnJvbnRfZWhfYWJvcnRfaGFuZGxlciwK
KwkuZWhfZGV2aWNlX3Jlc2V0X2hhbmRsZXI9IHNjc2lmcm9udF9kZXZfcmVzZXRfaGFuZGxlciwK
KwkuY21kX3Blcl9sdW4JCT0gVlNDU0lJRl9ERUZBVUxUX0NNRF9QRVJfTFVOLAorCS5jYW5fcXVl
dWUJCT0gVlNDU0lJRl9NQVhfUkVRUywKKwkudGhpc19pZCAJCT0gLTEsCisJLnNnX3RhYmxlc2l6
ZQkJPSBWU0NTSUlGX1NHX1RBQkxFU0laRSwKKwkudXNlX2NsdXN0ZXJpbmcJCT0gRElTQUJMRV9D
TFVTVEVSSU5HLAorCS5wcm9jX25hbWUJCT0gInNjc2lmcm9udCIsCit9OworCisKK3N0YXRpYyBp
bnQgX19pbml0IHNjc2lmcm9udF9pbml0KHZvaWQpCit7CisJaW50IGVycjsKKworCWlmICgheGVu
X2RvbWFpbigpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWVyciA9IHNjc2lmcm9udF94ZW5idXNf
aW5pdCgpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHNjc2lmcm9u
dF9leGl0KHZvaWQpCit7CisJc2NzaWZyb250X3hlbmJ1c191bnJlZ2lzdGVyKCk7Cit9CisKK21v
ZHVsZV9pbml0KHNjc2lmcm9udF9pbml0KTsKK21vZHVsZV9leGl0KHNjc2lmcm9udF9leGl0KTsK
KworTU9EVUxFX0RFU0NSSVBUSU9OKCJYZW4gU0NTSSBmcm9udGVuZCBkcml2ZXIiKTsKK01PRFVM
RV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtcnVwTiB4ZW4vZHJpdmVycy9zY3NpL3hlbi1zY3NpZnJv
bnQveGVuYnVzLmMgeGVuYy9kcml2ZXJzL3Njc2kveGVuLXNjc2lmcm9udC94ZW5idXMuYwotLS0g
eGVuL2RyaXZlcnMvc2NzaS94ZW4tc2NzaWZyb250L3hlbmJ1cy5jCTE5NjktMTItMzEgMTc6MDA6
MDAuMDAwMDAwMDAwIC0wNzAwCisrKyB4ZW5jL2RyaXZlcnMvc2NzaS94ZW4tc2NzaWZyb250L3hl
bmJ1cy5jCTIwMTItMDItMjQgMTQ6NTY6MTMuNTM4OTc4MzAwIC0wNzAwCkBAIC0wLDAgKzEsNDEx
IEBACisvKgorICogWGVuIFNDU0kgZnJvbnRlbmQgZHJpdmVyCisgKgorICogQ29weXJpZ2h0IChj
KSAyMDA4LCBGVUpJVFNVIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAq
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBvciwgd2hlbiBk
aXN0cmlidXRlZAorICogc2VwYXJhdGVseSBmcm9tIHRoZSBMaW51eCBrZXJuZWwgb3IgaW5jb3Jw
b3JhdGVkIGludG8gb3RoZXIKKyAqIHNvZnR3YXJlIHBhY2thZ2VzLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgbGljZW5zZToKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlz
IHNvdXJjZSBmaWxlICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQKKyAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksCisgKiBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwKKyAqIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO
Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICov
CisKKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSAiY29tbW9uLmgiCisKK2V4
dGVybiBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHNjc2lmcm9udF9zaHQ7CisKK3N0YXRpYyB2
b2lkIHNjc2lmcm9udF9mcmVlKHN0cnVjdCB2c2NzaWZybnRfaW5mbyAqaW5mbykKK3sKKwlzdHJ1
Y3QgU2NzaV9Ib3N0ICpob3N0ID0gaW5mby0+aG9zdDsKKworCWlmIChob3N0LT5zaG9zdF9zdGF0
ZSAhPSBTSE9TVF9ERUwpCisJCXNjc2lfcmVtb3ZlX2hvc3QoaW5mby0+aG9zdCk7CisKKwlpZiAo
aW5mby0+cmluZ19yZWYgIT0gR1JBTlRfSU5WQUxJRF9SRUYpIHsKKwkJZ250dGFiX2VuZF9mb3Jl
aWduX2FjY2VzcyhpbmZvLT5yaW5nX3JlZiwKKwkJCQkJMCwgKHVuc2lnbmVkIGxvbmcpaW5mby0+
cmluZy5zcmluZyk7CisJCWluZm8tPnJpbmdfcmVmID0gR1JBTlRfSU5WQUxJRF9SRUY7CisJCWlu
Zm8tPnJpbmcuc3JpbmcgPSBOVUxMOworCX0KKworCWlmIChpbmZvLT5pcnEpCisJCXVuYmluZF9m
cm9tX2lycWhhbmRsZXIoaW5mby0+aXJxLCBpbmZvKTsKKwlpbmZvLT5pcnEgPSAwOworCisJc2Nz
aV9ob3N0X3B1dChpbmZvLT5ob3N0KTsKK30KKworCitzdGF0aWMgaW50IHNjc2lmcm9udF9hbGxv
Y19yaW5nKHN0cnVjdCB2c2NzaWZybnRfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgeGVuYnVzX2Rl
dmljZSAqZGV2ID0gaW5mby0+ZGV2OworCXN0cnVjdCB2c2NzaWlmX3NyaW5nICpzcmluZzsKKwlp
bnQgZXJyID0gLUVOT01FTTsKKworCisJaW5mby0+cmluZ19yZWYgPSBHUkFOVF9JTlZBTElEX1JF
RjsKKworCS8qKioqKiBGcm9udGVuZCB0byBCYWNrZW5kIHJpbmcgc3RhcnQgKioqKiovCisJc3Jp
bmcgPSAoc3RydWN0IHZzY3NpaWZfc3JpbmcgKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwp
OworCWlmICghc3JpbmcpIHsKKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgImZhaWwgdG8g
YWxsb2NhdGUgc2hhcmVkIHJpbmcgKEZyb250IHRvIEJhY2spIik7CisJCXJldHVybiBlcnI7CisJ
fQorCVNIQVJFRF9SSU5HX0lOSVQoc3JpbmcpOworCUZST05UX1JJTkdfSU5JVCgmaW5mby0+cmlu
Zywgc3JpbmcsIFBBR0VfU0laRSk7CisKKwllcnIgPSB4ZW5idXNfZ3JhbnRfcmluZyhkZXYsIHZp
cnRfdG9fbWZuKHNyaW5nKSk7CisJaWYgKGVyciA8IDApIHsKKwkJZnJlZV9wYWdlKCh1bnNpZ25l
ZCBsb25nKSBzcmluZyk7CisJCWluZm8tPnJpbmcuc3JpbmcgPSBOVUxMOworCQl4ZW5idXNfZGV2
X2ZhdGFsKGRldiwgZXJyLCAiZmFpbCB0byBncmFudCBzaGFyZWQgcmluZyAoRnJvbnQgdG8gQmFj
aykiKTsKKwkJZ290byBmcmVlX3NyaW5nOworCX0KKwlpbmZvLT5yaW5nX3JlZiA9IGVycjsKKwor
CWVyciA9IHhlbmJ1c19hbGxvY19ldnRjaG4oZGV2LCAmaW5mby0+ZXZ0Y2huKTsKKwlpZiAoZXJy
KQorCQlnb3RvIGZyZWVfc3Jpbmc7CisKKwllcnIgPSBiaW5kX2V2dGNobl90b19pcnFoYW5kbGVy
KAorCQkJaW5mby0+ZXZ0Y2huLCBzY3NpZnJvbnRfaW50ciwKKwkJCUlSUUZfU0FNUExFX1JBTkRP
TSwgInNjc2lmcm9udCIsIGluZm8pOworCisJaWYgKGVyciA8PSAwKSB7CisJCXhlbmJ1c19kZXZf
ZmF0YWwoZGV2LCBlcnIsICJiaW5kX2V2dGNobl90b19pcnFoYW5kbGVyIik7CisJCWdvdG8gZnJl
ZV9zcmluZzsKKwl9CisJaW5mby0+aXJxID0gZXJyOworCisJcmV0dXJuIDA7CisKKy8qIGZyZWUg
cmVzb3VyY2UgKi8KK2ZyZWVfc3Jpbmc6CisJc2NzaWZyb250X2ZyZWUoaW5mbyk7CisKKwlyZXR1
cm4gZXJyOworfQorCisKK3N0YXRpYyBpbnQgc2NzaWZyb250X2luaXRfcmluZyhzdHJ1Y3QgdnNj
c2lmcm50X2luZm8gKmluZm8pCit7CisJc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IGluZm8t
PmRldjsKKwlzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHhidDsKKwlpbnQgZXJyOworCisJRFBS
SU5USygiJXNcbiIsX19GVU5DVElPTl9fKTsKKworCWVyciA9IHNjc2lmcm9udF9hbGxvY19yaW5n
KGluZm8pOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisJRFBSSU5USygiJXUgJXVcbiIsIGlu
Zm8tPnJpbmdfcmVmLCBpbmZvLT5ldnRjaG4pOworCithZ2FpbjoKKwllcnIgPSB4ZW5idXNfdHJh
bnNhY3Rpb25fc3RhcnQoJnhidCk7CisJaWYgKGVycikgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRl
diwgZXJyLCAic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKKwl9CisKKwllcnIgPSB4ZW5idXNfcHJp
bnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgInJpbmctcmVmIiwgIiV1IiwKKwkJCQlpbmZvLT5yaW5n
X3JlZik7CisJaWYgKGVycikgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiJXMiLCAi
d3JpdGluZyByaW5nLXJlZiIpOworCQlnb3RvIGZhaWw7CisJfQorCisJZXJyID0geGVuYnVzX3By
aW50Zih4YnQsIGRldi0+bm9kZW5hbWUsICJldmVudC1jaGFubmVsIiwgIiV1IiwKKwkJCQlpbmZv
LT5ldnRjaG4pOworCisJaWYgKGVycikgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAi
JXMiLCAid3JpdGluZyBldmVudC1jaGFubmVsIik7CisJCWdvdG8gZmFpbDsKKwl9CisKKwllcnIg
PSB4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhidCwgMCk7CisJaWYgKGVycikgeworCQlpZiAoZXJy
ID09IC1FQUdBSU4pCisJCQlnb3RvIGFnYWluOworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJy
LCAiY29tcGxldGluZyB0cmFuc2FjdGlvbiIpOworCQlnb3RvIGZyZWVfc3Jpbmc7CisJfQorCisJ
cmV0dXJuIDA7CisKK2ZhaWw6CisJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDEpOworZnJl
ZV9zcmluZzoKKwkvKiBmcmVlIHJlc291cmNlICovCisJc2NzaWZyb250X2ZyZWUoaW5mbyk7CisK
KwlyZXR1cm4gZXJyOworfQorCisKK3N0YXRpYyBpbnQgc2NzaWZyb250X3Byb2JlKHN0cnVjdCB4
ZW5idXNfZGV2aWNlICpkZXYsCisJCQkJY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZpY2VfaWQgKmlk
KQoreworCXN0cnVjdCB2c2NzaWZybnRfaW5mbyAqaW5mbzsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpo
b3N0OworCWludCBpLCBlcnIgPSAtRU5PTUVNOworCWNoYXIgbmFtZVtUQVNLX0NPTU1fTEVOXTsK
KworCWhvc3QgPSBzY3NpX2hvc3RfYWxsb2MoJnNjc2lmcm9udF9zaHQsIHNpemVvZigqaW5mbykp
OworCWlmICghaG9zdCkgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiZmFpbCB0byBh
bGxvY2F0ZSBzY3NpIGhvc3QiKTsKKwkJcmV0dXJuIGVycjsKKwl9CisJaW5mbyA9IChzdHJ1Y3Qg
dnNjc2lmcm50X2luZm8gKikgaG9zdC0+aG9zdGRhdGE7CisJaW5mby0+aG9zdCA9IGhvc3Q7CisK
KworCWRldl9zZXRfZHJ2ZGF0YSgmZGV2LT5kZXYsIGluZm8pOworCWluZm8tPmRldiAgPSBkZXY7
CisKKwlmb3IgKGkgPSAwOyBpIDwgVlNDU0lJRl9NQVhfUkVRUzsgaSsrKSB7CisJCWluZm8tPnNo
YWRvd1tpXS5uZXh0X2ZyZWUgPSBpICsgMTsKKwkJaW5pdF93YWl0cXVldWVfaGVhZCgmKGluZm8t
PnNoYWRvd1tpXS53cV9yZXNldCkpOworCQlpbmZvLT5zaGFkb3dbaV0ud2FpdF9yZXNldCA9IDA7
CisJfQorCWluZm8tPnNoYWRvd1tWU0NTSUlGX01BWF9SRVFTIC0gMV0ubmV4dF9mcmVlID0gMHgw
ZmZmOworCisJZXJyID0gc2NzaWZyb250X2luaXRfcmluZyhpbmZvKTsKKwlpZiAoZXJyKSB7CisJ
CXNjc2lfaG9zdF9wdXQoaG9zdCk7CisJCXJldHVybiBlcnI7CisJfQorCisJaW5pdF93YWl0cXVl
dWVfaGVhZCgmaW5mby0+d3EpOworCXNwaW5fbG9ja19pbml0KCZpbmZvLT5pb19sb2NrKTsKKwlz
cGluX2xvY2tfaW5pdCgmaW5mby0+c2hhZG93X2xvY2spOworCisJc25wcmludGYobmFtZSwgVEFT
S19DT01NX0xFTiwgInZzY3NpaWYuJWQiLCBpbmZvLT5ob3N0LT5ob3N0X25vKTsKKworCWluZm8t
Pmt0aHJlYWQgPSBrdGhyZWFkX3J1bihzY3NpZnJvbnRfc2NoZWR1bGUsIGluZm8sIG5hbWUpOwor
CWlmIChJU19FUlIoaW5mby0+a3RocmVhZCkpIHsKKwkJZXJyID0gUFRSX0VSUihpbmZvLT5rdGhy
ZWFkKTsKKwkJaW5mby0+a3RocmVhZCA9IE5VTEw7CisJCXByaW50ayhLRVJOX0VSUiAic2NzaWZy
b250OiBrdGhyZWFkIHN0YXJ0IGVyciAlZFxuIiwgZXJyKTsKKwkJZ290byBmcmVlX3NyaW5nOwor
CX0KKworCWhvc3QtPm1heF9pZCAgICAgID0gVlNDU0lJRl9NQVhfVEFSR0VUOworCWhvc3QtPm1h
eF9jaGFubmVsID0gMDsKKwlob3N0LT5tYXhfbHVuICAgICA9IFZTQ1NJSUZfTUFYX0xVTjsKKwlo
b3N0LT5tYXhfc2VjdG9ycyA9IChWU0NTSUlGX1NHX1RBQkxFU0laRSAtIDEpICogUEFHRV9TSVpF
IC8gNTEyOworCWhvc3QtPm1heF9jbWRfbGVuID0gVlNDU0lJRl9NQVhfQ09NTUFORF9TSVpFOwor
CisJZXJyID0gc2NzaV9hZGRfaG9zdChob3N0LCAmZGV2LT5kZXYpOworCWlmIChlcnIpIHsKKwkJ
cHJpbnRrKEtFUk5fRVJSICJzY3NpZnJvbnQ6IGZhaWwgdG8gYWRkIHNjc2kgaG9zdCAlZFxuIiwg
ZXJyKTsKKwkJZ290byBmcmVlX3NyaW5nOworCX0KKworCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2
LCBYZW5idXNTdGF0ZUluaXRpYWxpc2VkKTsKKworCXJldHVybiAwOworCitmcmVlX3NyaW5nOgor
CS8qIGZyZWUgcmVzb3VyY2UgKi8KKwlzY3NpZnJvbnRfZnJlZShpbmZvKTsKKwlyZXR1cm4gZXJy
OworfQorCitzdGF0aWMgaW50IHNjc2lmcm9udF9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2Ug
KmRldikKK3sKKwlzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8gPSBkZXZfZ2V0X2RydmRhdGEo
JmRldi0+ZGV2KTsKKworCURQUklOVEsoIiVzOiAlcyByZW1vdmVkXG4iLF9fRlVOQ1RJT05fXyAs
ZGV2LT5ub2RlbmFtZSk7CisKKwlpZiAoaW5mby0+a3RocmVhZCkgeworCQlrdGhyZWFkX3N0b3Ao
aW5mby0+a3RocmVhZCk7CisJCWluZm8tPmt0aHJlYWQgPSBOVUxMOworCX0KKworCXNjc2lmcm9u
dF9mcmVlKGluZm8pOworCisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBzY3NpZnJvbnRf
ZGlzY29ubmVjdChzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8pCit7CisJc3RydWN0IHhlbmJ1
c19kZXZpY2UgKmRldiA9IGluZm8tPmRldjsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gaW5m
by0+aG9zdDsKKworCURQUklOVEsoIiVzOiAlcyBkaXNjb25uZWN0XG4iLF9fRlVOQ1RJT05fXyAs
ZGV2LT5ub2RlbmFtZSk7CisKKwkvKgorCSAgV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVk
LCAgYWxsIGRldmljZXMgb2YKKwkgIEZyb250ZW5kIGhhdmUgYmVlbiBkZWxldGVkLgorCSAgVGhl
cmVmb3JlLCBpdCBuZWVkIG5vdCBibG9jayBJL08gYmVmb3JlIHJlbW92ZV9ob3N0LgorCSovCisK
KwlzY3NpX3JlbW92ZV9ob3N0KGhvc3QpOworCXhlbmJ1c19mcm9udGVuZF9jbG9zZWQoZGV2KTsK
KworCXJldHVybiAwOworfQorCisjZGVmaW5lIFZTQ1NJRlJPTlRfT1BfQUREX0xVTgkxCisjZGVm
aW5lIFZTQ1NJRlJPTlRfT1BfREVMX0xVTgkyCisKK3N0YXRpYyB2b2lkIHNjc2lmcm9udF9kb19s
dW5faG90cGx1ZyhzdHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8sIGludCBvcCkKK3sKKwlzdHJ1
Y3QgeGVuYnVzX2RldmljZSAqZGV2ID0gaW5mby0+ZGV2OworCWludCBpLCBlcnIgPSAwOworCWNo
YXIgc3RyWzY0XSwgc3RhdGVfc3RyWzY0XTsKKwljaGFyICoqZGlyOworCXVuc2lnbmVkIGludCBk
aXJfbiA9IDA7CisJdW5zaWduZWQgaW50IGRldmljZV9zdGF0ZTsKKwl1bnNpZ25lZCBpbnQgaHN0
LCBjaG4sIHRndCwgbHVuOworCXN0cnVjdCBzY3NpX2RldmljZSAqc2RldjsKKworCWRpciA9IHhl
bmJ1c19kaXJlY3RvcnkoWEJUX05JTCwgZGV2LT5vdGhlcmVuZCwgInZzY3NpLWRldnMiLCAmZGly
X24pOworCWlmIChJU19FUlIoZGlyKSkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSA8IGRp
cl9uOyBpKyspIHsKKwkJLyogcmVhZCBzdGF0dXMgKi8KKwkJc25wcmludGYoc3RyLCBzaXplb2Yo
c3RyKSwgInZzY3NpLWRldnMvJXMvc3RhdGUiLCBkaXJbaV0pOworCQllcnIgPSB4ZW5idXNfc2Nh
bmYoWEJUX05JTCwgZGV2LT5vdGhlcmVuZCwgc3RyLCAiJXUiLAorCQkJJmRldmljZV9zdGF0ZSk7
CisJCWlmIChYRU5CVVNfRVhJU1RfRVJSKGVycikpCisJCQljb250aW51ZTsKKworCQkvKiB2aXJ0
dWFsIFNDU0kgZGV2aWNlICovCisJCXNucHJpbnRmKHN0ciwgc2l6ZW9mKHN0ciksICJ2c2NzaS1k
ZXZzLyVzL3YtZGV2IiwgZGlyW2ldKTsKKwkJZXJyID0geGVuYnVzX3NjYW5mKFhCVF9OSUwsIGRl
di0+b3RoZXJlbmQsIHN0ciwKKwkJCSIldToldToldToldSIsICZoc3QsICZjaG4sICZ0Z3QsICZs
dW4pOworCQlpZiAoWEVOQlVTX0VYSVNUX0VSUihlcnIpKQorCQkJY29udGludWU7CisKKwkJLyog
ZnJvbnQgZGV2aWNlIHN0YXRlIHBhdGggKi8KKwkJc25wcmludGYoc3RhdGVfc3RyLCBzaXplb2Yo
c3RhdGVfc3RyKSwgInZzY3NpLWRldnMvJXMvc3RhdGUiLCBkaXJbaV0pOworCisJCXN3aXRjaCAo
b3ApIHsKKwkJY2FzZSBWU0NTSUZST05UX09QX0FERF9MVU46CisJCQlpZiAoZGV2aWNlX3N0YXRl
ID09IFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQpIHsKKwkJCQlzZGV2ID0gc2NzaV9kZXZpY2VfbG9v
a3VwKGluZm8tPmhvc3QsIGNobiwgdGd0LCBsdW4pOworCQkJCWlmIChzZGV2KSB7CisJCQkJCXBy
aW50ayhLRVJOX0VSUiAic2NzaWZyb250OiBEZXZpY2UgYWxyZWFkeSBpbiB1c2UuXG4iKTsKKwkJ
CQkJc2NzaV9kZXZpY2VfcHV0KHNkZXYpOworCQkJCQl4ZW5idXNfcHJpbnRmKFhCVF9OSUwsIGRl
di0+bm9kZW5hbWUsCisJCQkJCQlzdGF0ZV9zdHIsICIlZCIsIFhlbmJ1c1N0YXRlQ2xvc2VkKTsK
KwkJCQl9IGVsc2UgeworCQkJCQlzY3NpX2FkZF9kZXZpY2UoaW5mby0+aG9zdCwgY2huLCB0Z3Qs
IGx1bik7CisJCQkJCXhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwKKwkJCQkJ
CXN0YXRlX3N0ciwgIiVkIiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOworCQkJCX0KKwkJCX0KKwkJ
CWJyZWFrOworCQljYXNlIFZTQ1NJRlJPTlRfT1BfREVMX0xVTjoKKwkJCWlmIChkZXZpY2Vfc3Rh
dGUgPT0gWGVuYnVzU3RhdGVDbG9zaW5nKSB7CisJCQkJc2RldiA9IHNjc2lfZGV2aWNlX2xvb2t1
cChpbmZvLT5ob3N0LCBjaG4sIHRndCwgbHVuKTsKKwkJCQlpZiAoc2RldikgeworCQkJCQlzY3Np
X3JlbW92ZV9kZXZpY2Uoc2Rldik7CisJCQkJCXNjc2lfZGV2aWNlX3B1dChzZGV2KTsKKwkJCQkJ
eGVuYnVzX3ByaW50ZihYQlRfTklMLCBkZXYtPm5vZGVuYW1lLAorCQkJCQkJc3RhdGVfc3RyLCAi
JWQiLCBYZW5idXNTdGF0ZUNsb3NlZCk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1
bHQ6CisJCQlicmVhazsKKwkJfQorCX0KKworCWtmcmVlKGRpcik7CisJcmV0dXJuOworfQorCisK
KworCitzdGF0aWMgdm9pZCBzY3NpZnJvbnRfYmFja2VuZF9jaGFuZ2VkKHN0cnVjdCB4ZW5idXNf
ZGV2aWNlICpkZXYsCisJCQkJZW51bSB4ZW5idXNfc3RhdGUgYmFja2VuZF9zdGF0ZSkKK3sKKwlz
dHJ1Y3QgdnNjc2lmcm50X2luZm8gKmluZm8gPSBkZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsK
KworCURQUklOVEsoIiVwICV1ICV1XG4iLCBkZXYsIGRldi0+c3RhdGUsIGJhY2tlbmRfc3RhdGUp
OworCisJc3dpdGNoIChiYWNrZW5kX3N0YXRlKSB7CisJY2FzZSBYZW5idXNTdGF0ZVVua25vd246
CisJY2FzZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZzoKKwljYXNlIFhlbmJ1c1N0YXRlSW5pdFdh
aXQ6CisJY2FzZSBYZW5idXNTdGF0ZUNsb3NlZDoKKwkJYnJlYWs7CisKKwljYXNlIFhlbmJ1c1N0
YXRlSW5pdGlhbGlzZWQ6CisJCWJyZWFrOworCisJY2FzZSBYZW5idXNTdGF0ZUNvbm5lY3RlZDoK
KwkJaWYgKHhlbmJ1c19yZWFkX2RyaXZlcl9zdGF0ZShkZXYtPm5vZGVuYW1lKSA9PQorCQkJWGVu
YnVzU3RhdGVJbml0aWFsaXNlZCkgeworCQkJc2NzaWZyb250X2RvX2x1bl9ob3RwbHVnKGluZm8s
IFZTQ1NJRlJPTlRfT1BfQUREX0xVTik7CisJCX0KKworCQlpZiAoZGV2LT5zdGF0ZSA9PSBYZW5i
dXNTdGF0ZUNvbm5lY3RlZCkKKwkJCWJyZWFrOworCisJCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2
LCBYZW5idXNTdGF0ZUNvbm5lY3RlZCk7CisJCWJyZWFrOworCisJY2FzZSBYZW5idXNTdGF0ZUNs
b3Npbmc6CisJCXNjc2lmcm9udF9kaXNjb25uZWN0KGluZm8pOworCQlicmVhazsKKworCWNhc2Ug
WGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nOgorCQlzY3NpZnJvbnRfZG9fbHVuX2hvdHBsdWcoaW5m
bywgVlNDU0lGUk9OVF9PUF9ERUxfTFVOKTsKKwkJeGVuYnVzX3N3aXRjaF9zdGF0ZShkZXYsIFhl
bmJ1c1N0YXRlUmVjb25maWd1cmluZyk7CisJCWJyZWFrOworCisJY2FzZSBYZW5idXNTdGF0ZVJl
Y29uZmlndXJlZDoKKwkJc2NzaWZyb250X2RvX2x1bl9ob3RwbHVnKGluZm8sIFZTQ1NJRlJPTlRf
T1BfQUREX0xVTik7CisJCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUNvbm5l
Y3RlZCk7CisJCWJyZWFrOworCX0KK30KKworCitzdGF0aWMgY29uc3Qgc3RydWN0IHhlbmJ1c19k
ZXZpY2VfaWQgc2NzaWZyb250X2lkc1tdID0geworCXsgInZzY3NpIiB9LAorCXsgIiIgfQorfTsK
K01PRFVMRV9BTElBUygieGVuOnZzY3NpIik7CisKK3N0YXRpYyBERUZJTkVfWEVOQlVTX0RSSVZF
UihzY3NpZnJvbnQsICwKKwkucHJvYmUJCQk9IHNjc2lmcm9udF9wcm9iZSwKKwkucmVtb3ZlCQkJ
PSBzY3NpZnJvbnRfcmVtb3ZlLAorLyogCS5yZXN1bWUJCQk9IHNjc2lmcm9udF9yZXN1bWUsICov
CisJLm90aGVyZW5kX2NoYW5nZWQJPSBzY3NpZnJvbnRfYmFja2VuZF9jaGFuZ2VkLAorKTsKKwor
aW50IHNjc2lmcm9udF94ZW5idXNfaW5pdCh2b2lkKQoreworCXJldHVybiB4ZW5idXNfcmVnaXN0
ZXJfZnJvbnRlbmQoJnNjc2lmcm9udF9kcml2ZXIpOworfQorCit2b2lkIHNjc2lmcm9udF94ZW5i
dXNfdW5yZWdpc3Rlcih2b2lkKQoreworCXhlbmJ1c191bnJlZ2lzdGVyX2RyaXZlcigmc2NzaWZy
b250X2RyaXZlcik7Cit9CisKZGlmZiAtcnVwTiB4ZW4vaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2dy
YW50X3RhYmxlLmggeGVuYy9pbmNsdWRlL3hlbi9pbnRlcmZhY2UvZ3JhbnRfdGFibGUuaAotLS0g
eGVuL2luY2x1ZGUveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oCTIwMTItMDItMjQgMTU6MTI6
NDYuNTQ1NjQ0OTY2IC0wNzAwCisrKyB4ZW5jL2luY2x1ZGUveGVuL2ludGVyZmFjZS9ncmFudF90
YWJsZS5oCTIwMTItMDItMjQgMTU6MTk6MzUuMzM4OTc4Mjg1IC0wNzAwCkBAIC01MjAsNiArNTIw
LDggQEAgREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250dGFiX2dldF92ZQogI2RlZmluZSBH
TlRTVF9wZXJtaXNzaW9uX2RlbmllZCAoLTgpIC8qIE5vdCBlbm91Z2ggcHJpdmlsZWdlIGZvciBv
cGVyYXRpb24uICAqLwogI2RlZmluZSBHTlRTVF9iYWRfcGFnZSAgICAgICAgICgtOSkgLyogU3Bl
Y2lmaWVkIHBhZ2Ugd2FzIGludmFsaWQgZm9yIG9wLiAgICAqLwogI2RlZmluZSBHTlRTVF9iYWRf
Y29weV9hcmcgICAgKC0xMCkgLyogY29weSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeSAq
LworI2RlZmluZSBHTlRTVF9hZGRyZXNzX3Rvb19iaWcgKC0xMSkgLyogdHJhbnNmZXIgcGFnZSBh
ZGRyZXNzIHRvbyBsYXJnZS4gICAgICAqLworI2RlZmluZSBHTlRTVF9lYWdhaW4gICAgICAgICAg
KC0xMikgLyogQ291bGQgbm90IG1hcCBhdCB0aGUgbW9tZW50LiBSZXRyeS4gICAqLwogCiAjZGVm
aW5lIEdOVFRBQk9QX2Vycm9yX21zZ3MgeyAgICAgICAgICAgICAgICAgICBcCiAgICAgIm9rYXki
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC01MzMsNiArNTM1LDgg
QEAgREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250dGFiX2dldF92ZQogICAgICJwZXJtaXNz
aW9uIGRlbmllZCIsICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICJiYWQgcGFnZSIsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICJjb3B5IGFyZ3VtZW50cyBjcm9z
cyBwYWdlIGJvdW5kYXJ5IiAgICAgICAgXAorICAgICJwYWdlIGFkZHJlc3Mgc2l6ZSB0b28gbGFy
Z2UiLCAgICAgICAgICAgICAgXAorICAgICJjb3VsZCBub3QgbWFwIGF0IHRoZSBtb21lbnQsIHJl
dHJ5IiAgICAgICAgXAogfQogCiAjZW5kaWYgLyogX19YRU5fUFVCTElDX0dSQU5UX1RBQkxFX0hf
XyAqLwpkaWZmIC1ydXBOIHhlbi9pbmNsdWRlL3hlbi9pbnRlcmZhY2UvZ3JhbnRfdGFibGUuaC5v
cmlnIHhlbmMvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2dyYW50X3RhYmxlLmgub3JpZwotLS0geGVu
L2luY2x1ZGUveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oLm9yaWcJMTk2OS0xMi0zMSAxNzow
MDowMC4wMDAwMDAwMDAgLTA3MDAKKysrIHhlbmMvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2dyYW50
X3RhYmxlLmgub3JpZwkyMDEyLTAyLTI0IDE1OjEyOjQ2LjU0NTY0NDk2NiAtMDcwMApAQCAtMCww
ICsxLDUzOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogZ3JhbnRfdGFibGUuaAorICoK
KyAqIEludGVyZmFjZSBmb3IgZ3JhbnRpbmcgZm9yZWlnbiBhY2Nlc3MgdG8gcGFnZSBmcmFtZXMs
IGFuZCByZWNlaXZpbmcKKyAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4KKyAqCisgKiBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg
KgorICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJM
RV9IX18KKworI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CisKKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgorICogR1JBTlQgVEFCTEUgUkVQUkVTRU5UQVRJT04KKyAq
LworCisvKiBTb21lIHJvdWdoIGd1aWRlbGluZXMgb24gYWNjZXNzaW5nIGFuZCB1cGRhdGluZyBn
cmFudC10YWJsZSBlbnRyaWVzCisgKiBpbiBhIGNvbmN1cnJlbmN5LXNhZmUgbWFubmVyLiBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiwgTGludXggY29udGFpbnMgYQorICogcmVmZXJlbmNlIGltcGxlbWVu
dGF0aW9uIGZvciBndWVzdCBPU2VzIChhcmNoL3hlbi9rZXJuZWwvZ3JhbnRfdGFibGUuYykuCisg
KgorICogTkIuIFdNQiBpcyBhIG5vLW9wIG9uIGN1cnJlbnQtZ2VuZXJhdGlvbiB4ODYgcHJvY2Vz
c29ycy4gSG93ZXZlciwgYQorICogICAgIGNvbXBpbGVyIGJhcnJpZXIgd2lsbCBzdGlsbCBiZSBy
ZXF1aXJlZC4KKyAqCisgKiBJbnRyb2R1Y2luZyBhIHZhbGlkIGVudHJ5IGludG8gdGhlIGdyYW50
IHRhYmxlOgorICogIDEuIFdyaXRlIGVudC0+ZG9taWQuCisgKiAgMi4gV3JpdGUgZW50LT5mcmFt
ZToKKyAqICAgICAgR1RGX3Blcm1pdF9hY2Nlc3M6ICAgRnJhbWUgdG8gd2hpY2ggYWNjZXNzIGlz
IHBlcm1pdHRlZC4KKyAqICAgICAgR1RGX2FjY2VwdF90cmFuc2ZlcjogUHNldWRvLXBoeXMgZnJh
bWUgc2xvdCBiZWluZyBmaWxsZWQgYnkgbmV3CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lLCBvciB6ZXJvIGlmIG5vbmUuCisgKiAgMy4gV3JpdGUgbWVtb3J5IGJhcnJpZXIgKFdN
QikuCisgKiAgNC4gV3JpdGUgZW50LT5mbGFncywgaW5jLiB2YWxpZCB0eXBlLgorICoKKyAqIElu
dmFsaWRhdGluZyBhbiB1bnVzZWQgR1RGX3Blcm1pdF9hY2Nlc3MgZW50cnk6CisgKiAgMS4gZmxh
Z3MgPSBlbnQtPmZsYWdzLgorICogIDIuIE9ic2VydmUgdGhhdCAhKGZsYWdzICYgKEdURl9yZWFk
aW5nfEdURl93cml0aW5nKSkuCisgKiAgMy4gQ2hlY2sgcmVzdWx0IG9mIFNNUC1zYWZlIENNUFhD
SEcoJmVudC0+ZmxhZ3MsIGZsYWdzLCAwKS4KKyAqICBOQi4gTm8gbmVlZCBmb3IgV01CIGFzIHJl
dXNlIG9mIGVudHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50IG9uIHN1Y2Nlc3Mgb2YKKyAqICAgICAg
c3RlcCAzLCBhbmQgYWxsIGFyY2hpdGVjdHVyZXMgZ3VhcmFudGVlIG9yZGVyaW5nIG9mIGN0cmwt
ZGVwIHdyaXRlcy4KKyAqCisgKiBJbnZhbGlkYXRpbmcgYW4gaW4tdXNlIEdURl9wZXJtaXRfYWNj
ZXNzIGVudHJ5OgorICogIFRoaXMgY2Fubm90IGJlIGRvbmUgZGlyZWN0bHkuIFJlcXVlc3QgYXNz
aXN0YW5jZSBmcm9tIHRoZSBkb21haW4gY29udHJvbGxlcgorICogIHdoaWNoIGNhbiBzZXQgYSB0
aW1lb3V0IG9uIHRoZSB1c2Ugb2YgYSBncmFudCBlbnRyeSBhbmQgdGFrZSBuZWNlc3NhcnkKKyAq
ICBhY3Rpb24uIChOQi4gVGhpcyBpcyBub3QgeWV0IGltcGxlbWVudGVkISkuCisgKgorICogSW52
YWxpZGF0aW5nIGFuIHVudXNlZCBHVEZfYWNjZXB0X3RyYW5zZmVyIGVudHJ5OgorICogIDEuIGZs
YWdzID0gZW50LT5mbGFncy4KKyAqICAyLiBPYnNlcnZlIHRoYXQgIShmbGFncyAmIEdURl90cmFu
c2Zlcl9jb21taXR0ZWQpLiBbKl0KKyAqICAzLiBDaGVjayByZXN1bHQgb2YgU01QLXNhZmUgQ01Q
WENIRygmZW50LT5mbGFncywgZmxhZ3MsIDApLgorICogIE5CLiBObyBuZWVkIGZvciBXTUIgYXMg
cmV1c2Ugb2YgZW50cnkgaXMgY29udHJvbC1kZXBlbmRlbnQgb24gc3VjY2VzcyBvZgorICogICAg
ICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcgb2YgY3Ry
bC1kZXAgd3JpdGVzLgorICogIFsqXSBJZiBHVEZfdHJhbnNmZXJfY29tbWl0dGVkIGlzIHNldCB0
aGVuIHRoZSBncmFudCBlbnRyeSBpcyAnY29tbWl0dGVkJy4KKyAqICAgICAgVGhlIGd1ZXN0IG11
c3QgL25vdC8gbW9kaWZ5IHRoZSBncmFudCBlbnRyeSB1bnRpbCB0aGUgYWRkcmVzcyBvZiB0aGUK
KyAqICAgICAgdHJhbnNmZXJyZWQgZnJhbWUgaXMgd3JpdHRlbi4gSXQgaXMgc2FmZSBmb3IgdGhl
IGd1ZXN0IHRvIHNwaW4gd2FpdGluZworICogICAgICBmb3IgdGhpcyB0byBvY2N1ciAoZGV0ZWN0
IGJ5IG9ic2VydmluZyBHVEZfdHJhbnNmZXJfY29tcGxldGVkIGluCisgKiAgICAgIGVudC0+Zmxh
Z3MpLgorICoKKyAqIEludmFsaWRhdGluZyBhIGNvbW1pdHRlZCBHVEZfYWNjZXB0X3RyYW5zZmVy
IGVudHJ5OgorICogIDEuIFdhaXQgZm9yIChlbnQtPmZsYWdzICYgR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZCkuCisgKgorICogQ2hhbmdpbmcgYSBHVEZfcGVybWl0X2FjY2VzcyBmcm9tIHdyaXRhYmxl
IHRvIHJlYWQtb25seToKKyAqICBVc2UgU01QLXNhZmUgQ01QWENIRyB0byBzZXQgR1RGX3JlYWRv
bmx5LCB3aGlsZSBjaGVja2luZyAhR1RGX3dyaXRpbmcuCisgKgorICogQ2hhbmdpbmcgYSBHVEZf
cGVybWl0X2FjY2VzcyBmcm9tIHJlYWQtb25seSB0byB3cml0YWJsZToKKyAqICBVc2UgU01QLXNh
ZmUgYml0LXNldHRpbmcgaW5zdHJ1Y3Rpb24uCisgKi8KKworLyoKKyAqIFJlZmVyZW5jZSB0byBh
IGdyYW50IGVudHJ5IGluIGEgc3BlY2lmaWVkIGRvbWFpbidzIGdyYW50IHRhYmxlLgorICovCit0
eXBlZGVmIHVpbnQzMl90IGdyYW50X3JlZl90OworCisvKgorICogQSBncmFudCB0YWJsZSBjb21w
cmlzZXMgYSBwYWNrZWQgYXJyYXkgb2YgZ3JhbnQgZW50cmllcyBpbiBvbmUgb3IgbW9yZQorICog
cGFnZSBmcmFtZXMgc2hhcmVkIGJldHdlZW4gWGVuIGFuZCBhIGd1ZXN0LgorICogW1hFTl06IFRo
aXMgZmllbGQgaXMgd3JpdHRlbiBieSBYZW4gYW5kIHJlYWQgYnkgdGhlIHNoYXJpbmcgZ3Vlc3Qu
CisgKiBbR1NUXTogVGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5IHRoZSBndWVzdCBhbmQgcmVhZCBi
eSBYZW4uCisgKi8KKworLyoKKyAqIFZlcnNpb24gMSBvZiB0aGUgZ3JhbnQgdGFibGUgZW50cnkg
c3RydWN0dXJlIGlzIG1haW50YWluZWQgcHVyZWx5CisgKiBmb3IgYmFja3dhcmRzIGNvbXBhdGli
aWxpdHkuICBOZXcgZ3Vlc3RzIHNob3VsZCB1c2UgdmVyc2lvbiAyLgorICovCitzdHJ1Y3QgZ3Jh
bnRfZW50cnlfdjEgeworICAgIC8qIEdURl94eHg6IHZhcmlvdXMgdHlwZSBhbmQgZmxhZyBpbmZv
cm1hdGlvbi4gIFtYRU4sR1NUXSAqLworICAgIHVpbnQxNl90IGZsYWdzOworICAgIC8qIFRoZSBk
b21haW4gYmVpbmcgZ3JhbnRlZCBmb3JlaWduIHByaXZpbGVnZXMuIFtHU1RdICovCisgICAgZG9t
aWRfdCAgZG9taWQ7CisgICAgLyoKKyAgICAgKiBHVEZfcGVybWl0X2FjY2VzczogRnJhbWUgdGhh
dCBAZG9taWQgaXMgYWxsb3dlZCB0byBtYXAgYW5kIGFjY2Vzcy4gW0dTVF0KKyAgICAgKiBHVEZf
YWNjZXB0X3RyYW5zZmVyOiBGcmFtZSB3aG9zZSBvd25lcnNoaXAgdHJhbnNmZXJyZWQgYnkgQGRv
bWlkLiBbWEVOXQorICAgICAqLworICAgIHVpbnQzMl90IGZyYW1lOworfTsKKworLyoKKyAqIFR5
cGUgb2YgZ3JhbnQgZW50cnkuCisgKiAgR1RGX2ludmFsaWQ6IFRoaXMgZ3JhbnQgZW50cnkgZ3Jh
bnRzIG5vIHByaXZpbGVnZXMuCisgKiAgR1RGX3Blcm1pdF9hY2Nlc3M6IEFsbG93IEBkb21pZCB0
byBtYXAvYWNjZXNzIEBmcmFtZS4KKyAqICBHVEZfYWNjZXB0X3RyYW5zZmVyOiBBbGxvdyBAZG9t
aWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIG9uZSBwYWdlIGZyYW1lCisgKiAgICAgICAgICAg
ICAgICAgICAgICAgdG8gdGhpcyBndWVzdC4gWGVuIHdyaXRlcyB0aGUgcGFnZSBudW1iZXIgdG8g
QGZyYW1lLgorICogIEdURl90cmFuc2l0aXZlOiBBbGxvdyBAZG9taWQgdG8gdHJhbnNpdGl2ZWx5
IGFjY2VzcyBhIHN1YnJhbmdlIG9mCisgKiAgICAgICAgICAgICAgICAgIEB0cmFuc19ncmFudCBp
biBAdHJhbnNfZG9taWQuICBObyBtYXBwaW5ncyBhcmUgYWxsb3dlZC4KKyAqLworI2RlZmluZSBH
VEZfaW52YWxpZCAgICAgICAgICgwVTw8MCkKKyNkZWZpbmUgR1RGX3Blcm1pdF9hY2Nlc3MgICAo
MVU8PDApCisjZGVmaW5lIEdURl9hY2NlcHRfdHJhbnNmZXIgKDJVPDwwKQorI2RlZmluZSBHVEZf
dHJhbnNpdGl2ZSAgICAgICgzVTw8MCkKKyNkZWZpbmUgR1RGX3R5cGVfbWFzayAgICAgICAoM1U8
PDApCisKKy8qCisgKiBTdWJmbGFncyBmb3IgR1RGX3Blcm1pdF9hY2Nlc3MuCisgKiAgR1RGX3Jl
YWRvbmx5OiBSZXN0cmljdCBAZG9taWQgdG8gcmVhZC1vbmx5IG1hcHBpbmdzIGFuZCBhY2Nlc3Nl
cy4gW0dTVF0KKyAqICBHVEZfcmVhZGluZzogR3JhbnQgZW50cnkgaXMgY3VycmVudGx5IG1hcHBl
ZCBmb3IgcmVhZGluZyBieSBAZG9taWQuIFtYRU5dCisgKiAgR1RGX3dyaXRpbmc6IEdyYW50IGVu
dHJ5IGlzIGN1cnJlbnRseSBtYXBwZWQgZm9yIHdyaXRpbmcgYnkgQGRvbWlkLiBbWEVOXQorICog
IEdURl9zdWJfcGFnZTogR3JhbnQgYWNjZXNzIHRvIG9ubHkgYSBzdWJyYW5nZSBvZiB0aGUgcGFn
ZS4gIEBkb21pZAorICogICAgICAgICAgICAgICAgd2lsbCBvbmx5IGJlIGFsbG93ZWQgdG8gY29w
eSBmcm9tIHRoZSBncmFudCwgYW5kIG5vdAorICogICAgICAgICAgICAgICAgbWFwIGl0LiBbR1NU
XQorICovCisjZGVmaW5lIF9HVEZfcmVhZG9ubHkgICAgICAgKDIpCisjZGVmaW5lIEdURl9yZWFk
b25seSAgICAgICAgKDFVPDxfR1RGX3JlYWRvbmx5KQorI2RlZmluZSBfR1RGX3JlYWRpbmcgICAg
ICAgICgzKQorI2RlZmluZSBHVEZfcmVhZGluZyAgICAgICAgICgxVTw8X0dURl9yZWFkaW5nKQor
I2RlZmluZSBfR1RGX3dyaXRpbmcgICAgICAgICg0KQorI2RlZmluZSBHVEZfd3JpdGluZyAgICAg
ICAgICgxVTw8X0dURl93cml0aW5nKQorI2RlZmluZSBfR1RGX3N1Yl9wYWdlICAgICAgICg4KQor
I2RlZmluZSBHVEZfc3ViX3BhZ2UgICAgICAgICgxVTw8X0dURl9zdWJfcGFnZSkKKworLyoKKyAq
IFN1YmZsYWdzIGZvciBHVEZfYWNjZXB0X3RyYW5zZmVyOgorICogIEdURl90cmFuc2Zlcl9jb21t
aXR0ZWQ6IFhlbiBzZXRzIHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGl0IGlzIGNvbW1pdHRl
ZAorICogICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwIG9mIGEgcGFnZSBmcmFtZS4gV2hl
biBhIGd1ZXN0IHNlZXMgdGhpcyBmbGFnCisgKiAgICAgIGl0IG11c3QgL25vdC8gbW9kaWZ5IHRo
ZSBncmFudCBlbnRyeSB1bnRpbCBHVEZfdHJhbnNmZXJfY29tcGxldGVkIGlzCisgKiAgICAgIHNl
dCBieSBYZW4uCisgKiAgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZDogSXQgaXMgc2FmZSBmb3IgdGhl
IGd1ZXN0IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcKKyAqICAgICAgYWZ0ZXIgcmVhZGluZyBH
VEZfdHJhbnNmZXJfY29tbWl0dGVkLiBYZW4gd2lsbCBhbHdheXMgd3JpdGUgdGhlIGZyYW1lCisg
KiAgICAgIGFkZHJlc3MsIGZvbGxvd2VkIGJ5IE9SaW5nIHRoaXMgZmxhZywgaW4gYSB0aW1lbHkg
bWFubmVyLgorICovCisjZGVmaW5lIF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkICgyKQorI2RlZmlu
ZSBHVEZfdHJhbnNmZXJfY29tbWl0dGVkICAoMVU8PF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkKQor
I2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAoMykKKyNkZWZpbmUgR1RGX3RyYW5zZmVy
X2NvbXBsZXRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCkKKworLyoKKyAqIFZlcnNp
b24gMiBncmFudCB0YWJsZSBlbnRyaWVzLiAgVGhlc2UgZnVsZmlsIHRoZSBzYW1lIHJvbGUgYXMK
KyAqIHZlcnNpb24gMSBlbnRyaWVzLCBidXQgY2FuIHJlcHJlc2VudCBtb3JlIGNvbXBsaWNhdGVk
IG9wZXJhdGlvbnMuCisgKiBBbnkgZ2l2ZW4gZG9tYWluIHdpbGwgaGF2ZSBlaXRoZXIgYSB2ZXJz
aW9uIDEgb3IgYSB2ZXJzaW9uIDIgdGFibGUsCisgKiBhbmQgZXZlcnkgZW50cnkgaW4gdGhlIHRh
YmxlIHdpbGwgYmUgdGhlIHNhbWUgdmVyc2lvbi4KKyAqCisgKiBUaGUgaW50ZXJmYWNlIGJ5IHdo
aWNoIGRvbWFpbnMgdXNlIGdyYW50IHJlZmVyZW5jZXMgZG9lcyBub3QgZGVwZW5kCisgKiBvbiB0
aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiBpbiB1c2UgYnkgdGhlIG90aGVyIGRvbWFpbi4KKyAqLwor
CisvKgorICogVmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgZ3JhbnQgZW50cmllcyBzaGFyZSBhIGNv
bW1vbiBwcmVmaXguICBUaGUKKyAqIGZpZWxkcyBvZiB0aGUgcHJlZml4IGFyZSBkb2N1bWVudGVk
IGFzIHBhcnQgb2Ygc3RydWN0CisgKiBncmFudF9lbnRyeV92MS4KKyAqLworc3RydWN0IGdyYW50
X2VudHJ5X2hlYWRlciB7CisgICAgdWludDE2X3QgZmxhZ3M7CisgICAgZG9taWRfdCAgZG9taWQ7
Cit9OworCisvKgorICogVmVyc2lvbiAyIG9mIHRoZSBncmFudCBlbnRyeSBzdHJ1Y3R1cmUsIGhl
cmUgaXMgYW4gdW5pb24gYmVjYXVzZSB0aHJlZQorICogZGlmZmVyZW50IHR5cGVzIGFyZSBzdXBw
b3R0ZWQ6IGZ1bGxfcGFnZSwgc3ViX3BhZ2UgYW5kIHRyYW5zaXRpdmUuCisgKi8KK3VuaW9uIGdy
YW50X2VudHJ5X3YyIHsKKyAgICBzdHJ1Y3QgZ3JhbnRfZW50cnlfaGVhZGVyIGhkcjsKKworICAg
IC8qCisgICAgICogVGhpcyBtZW1iZXIgaXMgdXNlZCBmb3IgVjEtc3R5bGUgZnVsbCBwYWdlIGdy
YW50cywgd2hlcmUgZWl0aGVyOgorICAgICAqCisgICAgICogLS0gaGRyLnR5cGUgaXMgR1RGX2Fj
Y2VwdF90cmFuc2Zlciwgb3IKKyAgICAgKiAtLSBoZHIudHlwZSBpcyBHVEZfcGVybWl0X2FjY2Vz
cyBhbmQgR1RGX3N1Yl9wYWdlIGlzIG5vdCBzZXQuCisgICAgICoKKyAgICAgKiBJbiB0aGF0IGNh
c2UsIHRoZSBmcmFtZSBmaWVsZCBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZQorICAgICAq
IGZpZWxkIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIFYxIGVudHJ5IHN0cnVjdHVyZS4KKyAgICAg
Ki8KKyAgICBzdHJ1Y3QgeworCXN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgaGRyOworCXVpbnQz
Ml90IHBhZDA7CisJdWludDY0X3QgZnJhbWU7CisgICAgfSBmdWxsX3BhZ2U7CisKKyAgICAvKgor
ICAgICAqIElmIHRoZSBncmFudCB0eXBlIGlzIEdURl9ncmFudF9hY2Nlc3MgYW5kIEdURl9zdWJf
cGFnZSBpcyBzZXQsCisgICAgICogQGRvbWlkIGlzIGFsbG93ZWQgdG8gYWNjZXNzIGJ5dGVzIFtA
cGFnZV9vZmYsQHBhZ2Vfb2ZmK0BsZW5ndGgpCisgICAgICogaW4gZnJhbWUgQGZyYW1lLgorICAg
ICAqLworICAgIHN0cnVjdCB7CisJc3RydWN0IGdyYW50X2VudHJ5X2hlYWRlciBoZHI7CisJdWlu
dDE2X3QgcGFnZV9vZmY7CisJdWludDE2X3QgbGVuZ3RoOworCXVpbnQ2NF90IGZyYW1lOworICAg
IH0gc3ViX3BhZ2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCBpcyBHVEZfdHJhbnNp
dGl2ZSwgQGRvbWlkIGlzIGFsbG93ZWQgdG8gdXNlIHRoZQorICAgICAqIGdyYW50IEBncmVmIGlu
IGRvbWFpbiBAdHJhbnNfZG9taWQsIGFzIGlmIGl0IHdhcyB0aGUgbG9jYWwKKyAgICAgKiBkb21h
aW4uICBPYnZpb3VzbHksIHRoZSB0cmFuc2l0aXZlIGFjY2VzcyBtdXN0IGJlIGNvbXBhdGlibGUK
KyAgICAgKiB3aXRoIHRoZSBvcmlnaW5hbCBncmFudC4KKyAgICAgKi8KKyAgICBzdHJ1Y3Qgewor
CXN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgaGRyOworCWRvbWlkX3QgdHJhbnNfZG9taWQ7CisJ
dWludDE2X3QgcGFkMDsKKwlncmFudF9yZWZfdCBncmVmOworICAgIH0gdHJhbnNpdGl2ZTsKKwor
ICAgIHVpbnQzMl90IF9fc3BhY2VyWzRdOyAvKiBQYWQgdG8gYSBwb3dlciBvZiB0d28gKi8KK307
CisKK3R5cGVkZWYgdWludDE2X3QgZ3JhbnRfc3RhdHVzX3Q7CisKKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorICogR1JBTlQgVEFCTEUgUVVFUklFUyBBTkQgVVNFUworICov
CisKKy8qCisgKiBIYW5kbGUgdG8gdHJhY2sgYSBtYXBwaW5nIGNyZWF0ZWQgdmlhIGEgZ3JhbnQg
cmVmZXJlbmNlLgorICovCit0eXBlZGVmIHVpbnQzMl90IGdyYW50X2hhbmRsZV90OworCisvKgor
ICogR05UVEFCT1BfbWFwX2dyYW50X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4sPHJl
Zj4pIGZvciBhY2Nlc3MKKyAqIGJ5IGRldmljZXMgYW5kL29yIGhvc3QgQ1BVcy4gSWYgc3VjY2Vz
c2Z1bCwgPGhhbmRsZT4gaXMgYSB0cmFja2luZyBudW1iZXIKKyAqIHRoYXQgbXVzdCBiZSBwcmVz
ZW50ZWQgbGF0ZXIgdG8gZGVzdHJveSB0aGUgbWFwcGluZyhzKS4gT24gZXJyb3IsIDxoYW5kbGU+
CisgKiBpcyBhIG5lZ2F0aXZlIHN0YXR1cyBjb2RlLgorICogTk9URVM6CisgKiAgMS4gSWYgR05U
TUFQX2RldmljZV9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gPGRldl9idXNfYWRkcj4gaXMgdGhlIGFk
ZHJlc3MKKyAqICAgICB2aWEgd2hpY2ggSS9PIGRldmljZXMgbWF5IGFjY2VzcyB0aGUgZ3JhbnRl
ZCBmcmFtZS4KKyAqICAyLiBJZiBHTlRNQVBfaG9zdF9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gYSBt
YXBwaW5nIHdpbGwgYmUgYWRkZWQgYXQKKyAqICAgICBlaXRoZXIgYSBob3N0IHZpcnR1YWwgYWRk
cmVzcyBpbiB0aGUgY3VycmVudCBhZGRyZXNzIHNwYWNlLCBvciBhdAorICogICAgIGEgUFRFIGF0
IHRoZSBzcGVjaWZpZWQgbWFjaGluZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bwor
ICogICAgIHBlcmZvcm0gaXMgc2VsZWN0ZWQgdGhyb3VnaCB0aGUgR05UTUFQX2NvbnRhaW5zX3B0
ZSBmbGFnLCBhbmQgdGhlCisgKiAgICAgYWRkcmVzcyBpcyBzcGVjaWZpZWQgaW4gPGhvc3RfYWRk
cj4uCisgKiAgMy4gTWFwcGluZ3Mgc2hvdWxkIG9ubHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJP
UF91bm1hcF9ncmFudF9yZWYuIElmIGEKKyAqICAgICBob3N0IG1hcHBpbmcgaXMgZGVzdHJveWVk
IGJ5IG90aGVyIG1lYW5zIHRoZW4gaXQgaXMgKk5PVCogZ3VhcmFudGVlZAorICogICAgIHRvIGJl
IGFjY291bnRlZCB0byB0aGUgY29ycmVjdCBncmFudCByZWZlcmVuY2UhCisgKi8KKyNkZWZpbmUg
R05UVEFCT1BfbWFwX2dyYW50X3JlZiAgICAgICAgMAorc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRf
cmVmIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsK
KyAgICB1aW50MzJfdCBmbGFnczsgICAgICAgICAgICAgICAvKiBHTlRNQVBfKiAqLworICAgIGdy
YW50X3JlZl90IHJlZjsKKyAgICBkb21pZF90ICBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMu
ICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogR05UU1RfKiAqLworICAg
IGdyYW50X2hhbmRsZV90IGhhbmRsZTsKKyAgICB1aW50NjRfdCBkZXZfYnVzX2FkZHI7Cit9Owor
REVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250dGFiX21hcF9ncmFudF9yZWYpOworCisvKgor
ICogR05UVEFCT1BfdW5tYXBfZ3JhbnRfcmVmOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJl
ZmVyZW5jZSBtYXBwaW5ncworICogdHJhY2tlZCBieSA8aGFuZGxlPi4gSWYgPGhvc3RfYWRkcj4g
b3IgPGRldl9idXNfYWRkcj4gaXMgemVybywgdGhhdAorICogZmllbGQgaXMgaWdub3JlZC4gSWYg
bm9uLXplcm8sIHRoZXkgbXVzdCByZWZlciB0byBhIGRldmljZS9ob3N0IG1hcHBpbmcKKyAqIHRo
YXQgaXMgdHJhY2tlZCBieSA8aGFuZGxlPgorICogTk9URVM6CisgKiAgMS4gVGhlIGNhbGwgbWF5
IGZhaWwgaW4gYW4gdW5kZWZpbmVkIG1hbm5lciBpZiBlaXRoZXIgbWFwcGluZyBpcyBub3QKKyAq
ICAgICB0cmFja2VkIGJ5IDxoYW5kbGU+LgorICogIDMuIEFmdGVyIGV4ZWN1dGluZyBhIGJhdGNo
IG9mIHVubWFwcywgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIHN0YWxlCisgKiAgICAgbWFwcGlu
Z3Mgd2lsbCByZW1haW4gaW4gdGhlIGRldmljZSBvciBob3N0IFRMQnMuCisgKi8KKyNkZWZpbmUg
R05UVEFCT1BfdW5tYXBfZ3JhbnRfcmVmICAgICAgMQorc3RydWN0IGdudHRhYl91bm1hcF9ncmFu
dF9yZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDY0X3QgaG9zdF9hZGRy
OworICAgIHVpbnQ2NF90IGRldl9idXNfYWRkcjsKKyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7
CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAg
ICAgICAgLyogR05UU1RfKiAqLworfTsKK0RFRklORV9HVUVTVF9IQU5ETEVfU1RSVUNUKGdudHRh
Yl91bm1hcF9ncmFudF9yZWYpOworCisvKgorICogR05UVEFCT1Bfc2V0dXBfdGFibGU6IFNldCB1
cCBhIGdyYW50IHRhYmxlIGZvciA8ZG9tPiBjb21wcmlzaW5nIGF0IGxlYXN0CisgKiA8bnJfZnJh
bWVzPiBwYWdlcy4gVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgd3JpdHRlbiB0byB0aGUgPGZyYW1l
X2xpc3Q+LgorICogT25seSA8bnJfZnJhbWVzPiBhZGRyZXNzZXMgYXJlIHdyaXR0ZW4sIGV2ZW4g
aWYgdGhlIHRhYmxlIGlzIGxhcmdlci4KKyAqIE5PVEVTOgorICogIDEuIDxkb20+IG1heSBiZSBz
cGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAyLiBPbmx5IGEgc3VmZmljaWVudGx5LXByaXZp
bGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9IERPTUlEX1NFTEYuCisgKiAgMy4gWGVu
IG1heSBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gYSBzaW5nbGUgZ3JhbnQtdGFibGUgcGFnZSBwZXIg
ZG9tYWluLgorICovCisjZGVmaW5lIEdOVFRBQk9QX3NldHVwX3RhYmxlICAgICAgICAgIDIKK3N0
cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAg
ZG9taWRfdCAgZG9tOworICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKKyAgICAvKiBPVVQgcGFyYW1l
dGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiBHTlRTVF8qICov
CisgICAgR1VFU1RfSEFORExFKHVsb25nKSBmcmFtZV9saXN0OworfTsKK0RFRklORV9HVUVTVF9I
QU5ETEVfU1RSVUNUKGdudHRhYl9zZXR1cF90YWJsZSk7CisKKy8qCisgKiBHTlRUQUJPUF9kdW1w
X3RhYmxlOiBEdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JhbnQgdGFibGUgdG8gdGhlCisgKiB4
ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBvbmx5LgorICovCisjZGVmaW5lIEdOVFRBQk9QX2R1
bXBfdGFibGUgICAgICAgICAgIDMKK3N0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSB7CisgICAgLyog
SU4gcGFyYW1ldGVycy4gKi8KKyAgICBkb21pZF90IGRvbTsKKyAgICAvKiBPVVQgcGFyYW1ldGVy
cy4gKi8KKyAgICBpbnQxNl90IHN0YXR1czsgICAgICAgICAgICAgICAvKiBHTlRTVF8qICovCit9
OworREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250dGFiX2R1bXBfdGFibGUpOworCisvKgor
ICogR05UVEFCT1BfdHJhbnNmZXJfZ3JhbnRfcmVmOiBUcmFuc2ZlciA8ZnJhbWU+IHRvIGEgZm9y
ZWlnbiBkb21haW4uIFRoZQorICogZm9yZWlnbiBkb21haW4gaGFzIHByZXZpb3VzbHkgcmVnaXN0
ZXJlZCBpdHMgaW50ZXJlc3QgaW4gdGhlIHRyYW5zZmVyIHZpYQorICogPGRvbWlkLCByZWY+Lgor
ICoKKyAqIE5vdGUgdGhhdCwgZXZlbiBpZiB0aGUgdHJhbnNmZXIgZmFpbHMsIHRoZSBzcGVjaWZp
ZWQgcGFnZSBubyBsb25nZXIgYmVsb25ncworICogdG8gdGhlIGNhbGxpbmcgZG9tYWluICp1bmxl
c3MqIHRoZSBlcnJvciBpcyBHTlRTVF9iYWRfcGFnZS4KKyAqLworI2RlZmluZSBHTlRUQUJPUF90
cmFuc2ZlciAgICAgICAgICAgICAgICA0CitzdHJ1Y3QgZ250dGFiX3RyYW5zZmVyIHsKKyAgICAv
KiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIHVuc2lnbmVkIGxvbmcgbWZuOworICAgIGRvbWlkX3Qg
ICAgICAgZG9taWQ7CisgICAgZ3JhbnRfcmVmX3QgICByZWY7CisgICAgLyogT1VUIHBhcmFtZXRl
cnMuICovCisgICAgaW50MTZfdCAgICAgICBzdGF0dXM7Cit9OworREVGSU5FX0dVRVNUX0hBTkRM
RV9TVFJVQ1QoZ250dGFiX3RyYW5zZmVyKTsKKworLyoKKyAqIEdOVFRBQk9QX2NvcHk6IEh5cGVy
dmlzb3IgYmFzZWQgY29weQorICogc291cmNlIGFuZCBkZXN0aW5hdGlvbnMgY2FuIGJlIGVpdGhl
cnMgTUZOcyBvciwgZm9yIGZvcmVpZ24gZG9tYWlucywKKyAqIGdyYW50IHJlZmVyZW5jZXMuIHRo
ZSBmb3JlaWduIGRvbWFpbiBoYXMgdG8gZ3JhbnQgcmVhZC93cml0ZSBhY2Nlc3MKKyAqIGluIGl0
cyBncmFudCB0YWJsZS4KKyAqCisgKiBUaGUgZmxhZ3Mgc3BlY2lmeSB3aGF0IHR5cGUgc291cmNl
IGFuZCBkZXN0aW5hdGlvbnMgYXJlIChlaXRoZXIgTUZOCisgKiBvciBncmFudCByZWZlcmVuY2Up
LgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgdG8gY29weSBkYXRhIGJl
dHdlZW4gdHdvIGRvbWFpbnMKKyAqIHZpYSBhIHRoaXJkIHBhcnR5IGlmIHRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGRvbWFpbnMgaGFkIHByZXZpb3VzbHkKKyAqIGdyYW50IGFwcHJvcHJpYXRl
IGFjY2VzcyB0byB0aGVpciBwYWdlcyB0byB0aGUgdGhpcmQgcGFydHkuCisgKgorICogc291cmNl
X29mZnNldCBzcGVjaWZpZXMgYW4gb2Zmc2V0IGluIHRoZSBzb3VyY2UgZnJhbWUsIGRlc3Rfb2Zm
c2V0CisgKiB0aGUgb2Zmc2V0IGluIHRoZSB0YXJnZXQgZnJhbWUgYW5kICBsZW4gc3BlY2lmaWVz
IHRoZSBudW1iZXIgb2YKKyAqIGJ5dGVzIHRvIGJlIGNvcGllZC4KKyAqLworCisjZGVmaW5lIF9H
TlRDT1BZX3NvdXJjZV9ncmVmICAgICAgKDApCisjZGVmaW5lIEdOVENPUFlfc291cmNlX2dyZWYg
ICAgICAgKDE8PF9HTlRDT1BZX3NvdXJjZV9ncmVmKQorI2RlZmluZSBfR05UQ09QWV9kZXN0X2dy
ZWYgICAgICAgICgxKQorI2RlZmluZSBHTlRDT1BZX2Rlc3RfZ3JlZiAgICAgICAgICgxPDxfR05U
Q09QWV9kZXN0X2dyZWYpCisKKyNkZWZpbmUgR05UVEFCT1BfY29weSAgICAgICAgICAgICAgICAg
NQorc3RydWN0IGdudHRhYl9jb3B5IHsKKwkvKiBJTiBwYXJhbWV0ZXJzLiAqLworCXN0cnVjdCB7
CisJCXVuaW9uIHsKKwkJCWdyYW50X3JlZl90IHJlZjsKKwkJCXVuc2lnbmVkIGxvbmcgICBnbWZu
OworCQl9IHU7CisJCWRvbWlkX3QgIGRvbWlkOworCQl1aW50MTZfdCBvZmZzZXQ7CisJfSBzb3Vy
Y2UsIGRlc3Q7CisJdWludDE2X3QgICAgICBsZW47CisJdWludDE2X3QgICAgICBmbGFnczsgICAg
ICAgICAgLyogR05UQ09QWV8qICovCisJLyogT1VUIHBhcmFtZXRlcnMuICovCisJaW50MTZfdCAg
ICAgICBzdGF0dXM7Cit9OworREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250dGFiX2NvcHkp
OworCisvKgorICogR05UVEFCT1BfcXVlcnlfc2l6ZTogUXVlcnkgdGhlIGN1cnJlbnQgYW5kIG1h
eGltdW0gc2l6ZXMgb2YgdGhlIHNoYXJlZAorICogZ3JhbnQgdGFibGUuCisgKiBOT1RFUzoKKyAq
ICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlEX1NFTEYuCisgKiAgMi4gT25seSBh
IHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBtYXkgc3BlY2lmeSA8ZG9tPiAhPSBET01J
RF9TRUxGLgorICovCisjZGVmaW5lIEdOVFRBQk9QX3F1ZXJ5X3NpemUgICAgICAgICAgIDYKK3N0
cnVjdCBnbnR0YWJfcXVlcnlfc2l6ZSB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICBk
b21pZF90ICBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgbnJf
ZnJhbWVzOworICAgIHVpbnQzMl90IG1heF9ucl9mcmFtZXM7CisgICAgaW50MTZfdCAgc3RhdHVz
OyAgICAgICAgICAgICAgLyogR05UU1RfKiAqLworfTsKK0RFRklORV9HVUVTVF9IQU5ETEVfU1RS
VUNUKGdudHRhYl9xdWVyeV9zaXplKTsKKworLyoKKyAqIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBs
YWNlOiBEZXN0cm95IG9uZSBvciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncworICogdHJh
Y2tlZCBieSA8aGFuZGxlPiBidXQgYXRvbWljYWxseSByZXBsYWNlIHRoZSBwYWdlIHRhYmxlIGVu
dHJ5IHdpdGggb25lCisgKiBwb2ludGluZyB0byB0aGUgbWFjaGluZSBhZGRyZXNzIHVuZGVyIDxu
ZXdfYWRkcj4uICA8bmV3X2FkZHI+IHdpbGwgYmUKKyAqIHJlZGlyZWN0ZWQgdG8gdGhlIG51bGwg
ZW50cnkuCisgKiBOT1RFUzoKKyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmlu
ZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhh
bmRsZT4uCisgKiAgMi4gQWZ0ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBn
dWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0
aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KKyAqLworI2RlZmluZSBHTlRUQUJPUF91bm1hcF9hbmRf
cmVwbGFjZSAgICA3CitzdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIHsKKyAgICAvKiBJ
TiBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsKKyAgICB1aW50NjRfdCBu
ZXdfYWRkcjsKKyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7CisgICAgLyogT1VUIHBhcmFtZXRl
cnMuICovCisgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogR05UU1RfKiAqLwor
fTsKK0RFRklORV9HVUVTVF9IQU5ETEVfU1RSVUNUKGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZSk7
CisKKy8qCisgKiBHTlRUQUJPUF9zZXRfdmVyc2lvbjogUmVxdWVzdCBhIHBhcnRpY3VsYXIgdmVy
c2lvbiBvZiB0aGUgZ3JhbnQKKyAqIHRhYmxlIHNoYXJlZCB0YWJsZSBzdHJ1Y3R1cmUuICBUaGlz
IG9wZXJhdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQKKyAqIG9uY2UgaW4gYW55IGdpdmVuIGRv
bWFpbi4gIEl0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSBhbnkgZ3JhbnRzCisgKiBhcmUgYWN0
aXZhdGVkOyBvdGhlcndpc2UsIHRoZSBkb21haW4gd2lsbCBiZSBzdHVjayB3aXRoIHZlcnNpb24g
MS4KKyAqIFRoZSBvbmx5IGRlZmluZWQgdmVyc2lvbnMgYXJlIDEgYW5kIDIuCisgKi8KKyNkZWZp
bmUgR05UVEFCT1Bfc2V0X3ZlcnNpb24gICAgICAgICAgOAorc3RydWN0IGdudHRhYl9zZXRfdmVy
c2lvbiB7CisgICAgLyogSU4gcGFyYW1ldGVycyAqLworICAgIHVpbnQzMl90IHZlcnNpb247Cit9
OworREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250dGFiX3NldF92ZXJzaW9uKTsKKworLyoK
KyAqIEdOVFRBQk9QX2dldF9zdGF0dXNfZnJhbWVzOiBHZXQgdGhlIGxpc3Qgb2YgZnJhbWVzIHVz
ZWQgdG8gc3RvcmUgZ3JhbnQKKyAqIHN0YXR1cyBmb3IgPGRvbT4uIEluIGdyYW50IGZvcm1hdCB2
ZXJzaW9uIDIsIHRoZSBzdGF0dXMgaXMgc2VwYXJhdGVkCisgKiBmcm9tIHRoZSBvdGhlciBzaGFy
ZWQgZ3JhbnQgZmllbGRzIHRvIGFsbG93IG1vcmUgZWZmaWNpZW50IHN5bmNocm9uaXphdGlvbgor
ICogdXNpbmcgYmFycmllcnMgaW5zdGVhZCBvZiBhdG9taWMgY21wZXhjaCBvcGVyYXRpb25zLgor
ICogPG5yX2ZyYW1lcz4gc3BlY2lmeSB0aGUgc2l6ZSBvZiB2ZWN0b3IgPGZyYW1lX2xpc3Q+Lgor
ICogVGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIDxmcmFtZV9saXN0Pi4K
KyAqIE9ubHkgPG5yX2ZyYW1lcz4gYWRkcmVzc2VzIGFyZSByZXR1cm5lZCwgZXZlbiBpZiB0aGUg
dGFibGUgaXMgbGFyZ2VyLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmll
ZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdlZCBk
b21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAqLworI2RlZmluZSBHTlRU
QUJPUF9nZXRfc3RhdHVzX2ZyYW1lcyAgICAgOQorc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2Zy
YW1lcyB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50MzJfdCBucl9mcmFtZXM7
CisgICAgZG9taWRfdCAgZG9tOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIGludDE2
X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qIEdOVFNUXyogKi8KKyAgICBHVUVTVF9IQU5ETEUo
dWludDY0X3QpIGZyYW1lX2xpc3Q7Cit9OworREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QoZ250
dGFiX2dldF9zdGF0dXNfZnJhbWVzKTsKKworLyoKKyAqIEdOVFRBQk9QX2dldF92ZXJzaW9uOiBH
ZXQgdGhlIGdyYW50IHRhYmxlIHZlcnNpb24gd2hpY2ggaXMgaW4KKyAqIGVmZmVjdCBmb3IgZG9t
YWluIDxkb20+LgorICovCisjZGVmaW5lIEdOVFRBQk9QX2dldF92ZXJzaW9uICAgICAgICAgIDEw
CitzdHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzICovCisg
ICAgZG9taWRfdCBkb207CisgICAgdWludDE2X3QgcGFkOworICAgIC8qIE9VVCBwYXJhbWV0ZXJz
ICovCisgICAgdWludDMyX3QgdmVyc2lvbjsKK307CitERUZJTkVfR1VFU1RfSEFORExFX1NUUlVD
VChnbnR0YWJfZ2V0X3ZlcnNpb24pOworCisvKgorICogQml0ZmllbGQgdmFsdWVzIGZvciB1cGRh
dGVfcGluX3N0YXR1cy5mbGFncy4KKyAqLworIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9yIGFj
Y2VzcyBieSBJL08gZGV2aWNlcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9kZXZpY2VfbWFwICAgICAg
KDApCisjZGVmaW5lIEdOVE1BUF9kZXZpY2VfbWFwICAgICAgICgxPDxfR05UTUFQX2RldmljZV9t
YXApCisgLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5IGhvc3QgQ1BVcy4gKi8K
KyNkZWZpbmUgX0dOVE1BUF9ob3N0X21hcCAgICAgICAgKDEpCisjZGVmaW5lIEdOVE1BUF9ob3N0
X21hcCAgICAgICAgICgxPDxfR05UTUFQX2hvc3RfbWFwKQorIC8qIEFjY2Vzc2VzIHRvIHRoZSBn
cmFudGVkIGZyYW1lIHdpbGwgYmUgcmVzdHJpY3RlZCB0byByZWFkLW9ubHkgYWNjZXNzLiAqLwor
I2RlZmluZSBfR05UTUFQX3JlYWRvbmx5ICAgICAgICAoMikKKyNkZWZpbmUgR05UTUFQX3JlYWRv
bmx5ICAgICAgICAgKDE8PF9HTlRNQVBfcmVhZG9ubHkpCisgLyoKKyAgKiBHTlRNQVBfaG9zdF9t
YXAgc3ViZmxhZzoKKyAgKiAgMCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBvbmx5IGJ5
IHRoZSBndWVzdCBPUy4KKyAgKiAgMSA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBieSBn
dWVzdCBPUyArIGN1cnJlbnQgYXBwbGljYXRpb24uCisgICovCisjZGVmaW5lIF9HTlRNQVBfYXBw
bGljYXRpb25fbWFwICgzKQorI2RlZmluZSBHTlRNQVBfYXBwbGljYXRpb25fbWFwICAoMTw8X0dO
VE1BUF9hcHBsaWNhdGlvbl9tYXApCisKKyAvKgorICAqIEdOVE1BUF9jb250YWluc19wdGUgc3Vi
ZmxhZzoKKyAgKiAgMCA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIGEgaG9zdCB2aXJ0dWFs
IGFkZHJlc3MuCisgICogIDEgPT4gVGhpcyBtYXAgcmVxdWVzdCBjb250YWlucyB0aGUgbWFjaGlu
ZSBhZGRlc3Mgb2YgdGhlIFBURSB0byB1cGRhdGUuCisgICovCisjZGVmaW5lIF9HTlRNQVBfY29u
dGFpbnNfcHRlICAgICg0KQorI2RlZmluZSBHTlRNQVBfY29udGFpbnNfcHRlICAgICAoMTw8X0dO
VE1BUF9jb250YWluc19wdGUpCisKKy8qCisgKiBWYWx1ZXMgZm9yIGVycm9yIHN0YXR1cyByZXR1
cm5zLiBBbGwgZXJyb3JzIGFyZSAtdmUuCisgKi8KKyNkZWZpbmUgR05UU1Rfb2theSAgICAgICAg
ICAgICAoMCkgIC8qIE5vcm1hbCByZXR1cm4uICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNk
ZWZpbmUgR05UU1RfZ2VuZXJhbF9lcnJvciAgICAoLTEpIC8qIEdlbmVyYWwgdW5kZWZpbmVkIGVy
cm9yLiAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR05UU1RfYmFkX2RvbWFpbiAgICAgICAoLTIp
IC8qIFVucmVjb2duc2VkIGRvbWFpbiBpZC4gICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR05U
U1RfYmFkX2dudHJlZiAgICAgICAoLTMpIC8qIFVucmVjb2duaXNlZCBvciBpbmFwcHJvcHJpYXRl
IGdudHJlZi4gKi8KKyNkZWZpbmUgR05UU1RfYmFkX2hhbmRsZSAgICAgICAoLTQpIC8qIFVucmVj
b2duaXNlZCBvciBpbmFwcHJvcHJpYXRlIGhhbmRsZS4gKi8KKyNkZWZpbmUgR05UU1RfYmFkX3Zp
cnRfYWRkciAgICAoLTUpIC8qIEluYXBwcm9wcmlhdGUgdmlydHVhbCBhZGRyZXNzIHRvIG1hcC4g
Ki8KKyNkZWZpbmUgR05UU1RfYmFkX2Rldl9hZGRyICAgICAoLTYpIC8qIEluYXBwcm9wcmlhdGUg
ZGV2aWNlIGFkZHJlc3MgdG8gdW5tYXAuKi8KKyNkZWZpbmUgR05UU1Rfbm9fZGV2aWNlX3NwYWNl
ICAoLTcpIC8qIE91dCBvZiBzcGFjZSBpbiBJL08gTU1VLiAgICAgICAgICAgICAgKi8KKyNkZWZp
bmUgR05UU1RfcGVybWlzc2lvbl9kZW5pZWQgKC04KSAvKiBOb3QgZW5vdWdoIHByaXZpbGVnZSBm
b3Igb3BlcmF0aW9uLiAgKi8KKyNkZWZpbmUgR05UU1RfYmFkX3BhZ2UgICAgICAgICAoLTkpIC8q
IFNwZWNpZmllZCBwYWdlIHdhcyBpbnZhbGlkIGZvciBvcC4gICAgKi8KKyNkZWZpbmUgR05UU1Rf
YmFkX2NvcHlfYXJnICAgICgtMTApIC8qIGNvcHkgYXJndW1lbnRzIGNyb3NzIHBhZ2UgYm91bmRh
cnkgKi8KKworI2RlZmluZSBHTlRUQUJPUF9lcnJvcl9tc2dzIHsgICAgICAgICAgICAgICAgICAg
XAorICAgICJva2F5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICJ1bmRlZmluZWQgZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ1bnJl
Y29nbmlzZWQgZG9tYWluIGlkIiwgICAgICAgICAgICAgICAgICAgXAorICAgICJpbnZhbGlkIGdy
YW50IHJlZmVyZW5jZSIsICAgICAgICAgICAgICAgICAgXAorICAgICJpbnZhbGlkIG1hcHBpbmcg
aGFuZGxlIiwgICAgICAgICAgICAgICAgICAgXAorICAgICJpbnZhbGlkIHZpcnR1YWwgYWRkcmVz
cyIsICAgICAgICAgICAgICAgICAgXAorICAgICJpbnZhbGlkIGRldmljZSBhZGRyZXNzIiwgICAg
ICAgICAgICAgICAgICAgXAorICAgICJubyBzcGFyZSB0cmFuc2xhdGlvbiBzbG90IGluIHRoZSBJ
L08gTU1VIiwgXAorICAgICJwZXJtaXNzaW9uIGRlbmllZCIsICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICJiYWQgcGFnZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICJjb3B5IGFyZ3VtZW50cyBjcm9zcyBwYWdlIGJvdW5kYXJ5IiAgICAgICAgXAorfQorCisj
ZW5kaWYgLyogX19YRU5fUFVCTElDX0dSQU5UX1RBQkxFX0hfXyAqLwpkaWZmIC1ydXBOIHhlbi9p
bmNsdWRlL3hlbi9pbnRlcmZhY2UvaW8vdnNjc2lpZi5oIHhlbmMvaW5jbHVkZS94ZW4vaW50ZXJm
YWNlL2lvL3ZzY3NpaWYuaAotLS0geGVuL2luY2x1ZGUveGVuL2ludGVyZmFjZS9pby92c2NzaWlm
LmgJMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAwMDAgLTA3MDAKKysrIHhlbmMvaW5jbHVkZS94
ZW4vaW50ZXJmYWNlL2lvL3ZzY3NpaWYuaAkyMDEyLTAyLTI0IDE1OjE5OjM1LjMzODk3ODI4NSAt
MDcwMApAQCAtMCwwICsxLDEwNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogdnNjc2lp
Zi5oCisgKgorICogQmFzZWQgb24gdGhlIGJsa2lmLmggY29kZS4KKyAqCisgKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICog
Q29weXJpZ2h0KGMpIEZVSklUU1UgTGltaXRlZCAyMDA4LgorICovCisKKyNpZm5kZWYgX19YRU5f
X1BVQkxJQ19JT19TQ1NJX0hfXworI2RlZmluZSBfX1hFTl9fUFVCTElDX0lPX1NDU0lfSF9fCisK
KyNpbmNsdWRlICJyaW5nLmgiCisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKKworLyogY29t
bWFuZCBiZXR3ZWVuIGJhY2tlbmQgYW5kIGZyb250ZW5kICovCisjZGVmaW5lIFZTQ1NJSUZfQUNU
X1NDU0lfQ0RCICAgICAgICAgMSAgICAvKiBTQ1NJIENEQiBjb21tYW5kICovCisjZGVmaW5lIFZT
Q1NJSUZfQUNUX1NDU0lfQUJPUlQgICAgICAgMiAgICAvKiBTQ1NJIERldmljZShMdW4pIEFib3J0
Ki8KKyNkZWZpbmUgVlNDU0lJRl9BQ1RfU0NTSV9SRVNFVCAgICAgICAzICAgIC8qIFNDU0kgRGV2
aWNlKEx1bikgUmVzZXQqLworCisKKyNkZWZpbmUgVlNDU0lJRl9CQUNLX01BWF9QRU5ESU5HX1JF
UVMgICAgMTI4CisKKy8qCisgKiBNYXhpbXVtIHNjYXR0ZXIvZ2F0aGVyIHNlZ21lbnRzIHBlciBy
ZXF1ZXN0LgorICoKKyAqIENvbnNpZGVyaW5nIGJhbGFuY2UgYmV0d2VlbiBhbGxvY2F0aW5nIGFs
IGxlYXN0IDE2ICJ2c2NzaWlmX3JlcXVlc3QiCisgKiBzdHJ1Y3R1cmVzIG9uIG9uZSBwYWdlICg0
MDk2Ynl0ZXMpIGFuZCBudW1iZXIgb2Ygc2NhdHRlciBnYXRoZXIKKyAqIG5lZWRlZCwgd2UgZGVj
aWRlZCB0byB1c2UgMjYgYXMgYSBtYWdpYyBudW1iZXIuCisgKi8KKyNkZWZpbmUgVlNDU0lJRl9T
R19UQUJMRVNJWkUgICAgICAgICAgICAgMjYKKworLyoKKyAqIGJhc2Ugb24gbGludXgga2VybmVs
IDIuNi4xOAorICovCisjZGVmaW5lIFZTQ1NJSUZfTUFYX0NPTU1BTkRfU0laRSAgICAgICAgIDE2
CisjZGVmaW5lIFZTQ1NJSUZfU0VOU0VfQlVGRkVSU0laRSAgICAgICAgIDk2CisKKworc3RydWN0
IHZzY3NpaWZfcmVxdWVzdCB7CisgICAgdWludDE2X3QgcnFpZDsgICAgICAgICAgLyogcHJpdmF0
ZSBndWVzdCB2YWx1ZSwgZWNob2VkIGluIHJlc3AgICovCisgICAgdWludDhfdCBhY3Q7ICAgICAg
ICAgICAgLyogY29tbWFuZCBiZXR3ZWVuIGJhY2tlbmQgYW5kIGZyb250ZW5kICovCisgICAgdWlu
dDhfdCBjbWRfbGVuOworCisgICAgdWludDhfdCBjbW5kW1ZTQ1NJSUZfTUFYX0NPTU1BTkRfU0la
RV07CisgICAgdWludDE2X3QgdGltZW91dF9wZXJfY29tbWFuZDsgICAgIC8qIFRoZSBjb21tYW5k
IGlzIGlzc3VlZCBieSB0d2ljZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGUgdmFsdWUgaW4gQmFja2VuZC4gKi8KKyAgICB1aW50MTZfdCBjaGFubmVsLCBpZCwg
bHVuOworICAgIHVpbnQxNl90IHBhZGRpbmc7CisgICAgdWludDhfdCBzY19kYXRhX2RpcmVjdGlv
bjsgICAgICAgIC8qIGZvciBETUFfVE9fREVWSUNFKDEpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERNQV9GUk9NX0RFVklDRSgyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBETUFfTk9ORSgzKSByZXF1ZXN0cyAgKi8KKyAgICB1aW50
OF90IG5yX3NlZ21lbnRzOyAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIHBpZWNlcyBvZiBzY2F0
dGVyLWdhdGhlciAqLworCisgICAgc3RydWN0IHNjc2lpZl9yZXF1ZXN0X3NlZ21lbnQgeworICAg
ICAgICBncmFudF9yZWZfdCBncmVmOworICAgICAgICB1aW50MTZfdCBvZmZzZXQ7CisgICAgICAg
IHVpbnQxNl90IGxlbmd0aDsKKyAgICB9IHNlZ1tWU0NTSUlGX1NHX1RBQkxFU0laRV07CisgICAg
dWludDMyX3QgcmVzZXJ2ZWRbM107Cit9OwordHlwZWRlZiBzdHJ1Y3QgdnNjc2lpZl9yZXF1ZXN0
IHZzY3NpaWZfcmVxdWVzdF90OworCitzdHJ1Y3QgdnNjc2lpZl9yZXNwb25zZSB7CisgICAgdWlu
dDE2X3QgcnFpZDsKKyAgICB1aW50OF90IHBhZGRpbmc7CisgICAgdWludDhfdCBzZW5zZV9sZW47
CisgICAgdWludDhfdCBzZW5zZV9idWZmZXJbVlNDU0lJRl9TRU5TRV9CVUZGRVJTSVpFXTsKKyAg
ICBpbnQzMl90IHJzbHQ7CisgICAgdWludDMyX3QgcmVzaWR1YWxfbGVuOyAgICAgLyogcmVxdWVz
dCBidWZmbGVuIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhl
IHZhbHVlIGZyb20gcGh5c2ljYWwgZGV2aWNlICovCisgICAgdWludDMyX3QgcmVzZXJ2ZWRbMzZd
OworfTsKK3R5cGVkZWYgc3RydWN0IHZzY3NpaWZfcmVzcG9uc2UgdnNjc2lpZl9yZXNwb25zZV90
OworCitERUZJTkVfUklOR19UWVBFUyh2c2NzaWlmLCBzdHJ1Y3QgdnNjc2lpZl9yZXF1ZXN0LCBz
dHJ1Y3QgdnNjc2lpZl9yZXNwb25zZSk7CisKKworI2VuZGlmICAvKl9fWEVOX19QVUJMSUNfSU9f
U0NTSV9IX18qLworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtc2V0
LXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICog
aW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8K
--f46d04182804c4d6b904b9ac494f
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--f46d04182804c4d6b904b9ac494f--


From xen-devel-bounces@lists.xen.org Wed Feb 29 12:55:38 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Feb 2012 12:55:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1S2j3x-0002iN-G0; Wed, 29 Feb 2012 12:55:21 +0000
Received: from mail216.messagelabs.com ([85.158.143.99])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <carsten@schiers.de>) id 1S2j3v-0002iG-FT
	for xen-devel@lists.xensource.com; Wed, 29 Feb 2012 12:55:20 +0000
X-Env-Sender: carsten@schiers.de
X-Msg-Ref: server-13.tower-216.messagelabs.com!1330520110!16095062!1
X-Originating-IP: [194.117.254.36]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG,
	FROM_EXCESS_QP,HTML_MESSAGE
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24509 invoked from network); 29 Feb 2012 12:55:11 -0000
Received: from www.zeus06.de (HELO mail.zeus06.de) (194.117.254.36)
	by server-13.tower-216.messagelabs.com with DHE-RSA-AES256-SHA
	encrypted SMTP; 29 Feb 2012 12:55:11 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=mail.zeus06.de; h=subject
	:from:to:cc:date:mime-version:content-type:in-reply-to
	:references:message-id; s=beta; bh=cX/TnsRBFvorpSjDmC2NmlpLcIg+1
	yp9tVWxzLaAJCg=; b=Za1pdeKu2HFij4Vs4rrqT5QgEMt8Q8NVGuQ72KzC3Fvjx
	q48R7n17WA9kkIpKBlxH+aRujFCaZjLC7hB1j17x4VZIqq0xBGZZS3i3JsAOghXV
	0/asi/K5LqtGHapHOziqXIuGIoZOvDqs8bpv12+aTOX2dT601eQWDb+eT5JeSI=
Received: (qmail 21372 invoked from network); 29 Feb 2012 13:54:35 +0100
Received: from unknown (HELO uhura.zz) (l3s6271p1@46.59.158.253)
	by mail.zeus06.de with ESMTPA; 29 Feb 2012 13:54:35 +0100
Received: from localhost (localhost [127.0.0.1])
	by uhura.zz (Postfix) with ESMTP id 65AD92C5FD;
	Wed, 29 Feb 2012 13:56:16 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at schiers.de
Received: from uhura.zz ([127.0.0.1])
	by localhost (uhura.space.zz [127.0.0.1]) (amavisd-new, port 10024)
	with LMTP id XUcE-CvZtfba; Wed, 29 Feb 2012 13:56:09 +0100 (CET)
Received: from uhura.space.zz (localhost [127.0.0.1])
	by uhura.zz (Postfix) with ESMTP id E06392C5FC;
	Wed, 29 Feb 2012 13:56:09 +0100 (CET)
From: =?utf-8?Q?Carsten_Schiers?= <carsten@schiers.de>
To: =?utf-8?Q?Konrad_Rzeszutek_Wilk?= <konrad.wilk@oracle.com>
Date: Wed, 29 Feb 2012 13:56:09 +0100
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="=_F1yjpLocfe5Ra5tK65RmHGcdd2qVYzUzBxBqAXkQZGBAcVOw"
In-Reply-To: <zarafa.4f4e15b5.3926.5c7b11b715fbc27d@uhura.space.zz>
References: <zarafa.4f4e15b5.3926.5c7b11b715fbc27d@uhura.space.zz>
X-Priority: 3 (Normal)
X-Mailer: Zarafa 7.0.2-29470
Message-Id: <zarafa.4f4e2069.413c.75dd1c180ec000b7@uhura.space.zz>
Cc: =?utf-8?Q?Sander_Eikelenboom?= <linux@eikelenboom.it>,
	=?utf-8?Q?xen-devel?= <xen-devel@lists.xensource.com>,
	=?utf-8?Q?Jan_Beulich?= <jbeulich@suse.com>,
	=?utf-8?Q?Konrad_Rzeszutek_Wilk?= <konrad@darnok.org>
Subject: Re: [Xen-devel] Load increase after memory upgrade (part2)
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

This is a multi-part message in MIME format. Your mail reader does not
understand MIME message format.
--=_F1yjpLocfe5Ra5tK65RmHGcdd2qVYzUzBxBqAXkQZGBAcVOw
Content-Type: multipart/alternative; 
 boundary="=_F1yjPY0x5Rt03QtpR+eAjTruBumDA6U+Yn3CBd30zLybmgQg"

--=_F1yjPY0x5Rt03QtpR+eAjTruBumDA6U+Yn3CBd30zLybmgQg
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

I am very sorry. I accidently started the DomU with the wrong config file=
, thus it's clear why there is no difference=0D=0A=0D=0Abetween the two. =
And unfortunately, the DomU with the correct config file is having a BUG:=
=0D=0A=0D=0A=C2=A0=0D=0A=0D=0A=0A[   14.674883] BUG: unable to handle ker=
nel paging request at ffffc7fffffff000=0A[   14.674910] IP: [<ffffffff811=
b4c0b>] swiotlb_bounce+0x2e/0x31=0A[   14.674930] PGD 0=20=0A[   14.67494=
0] Oops: 0002 [#1] SMP=20=0A[   14.674952] CPU 0=20=0A[   14.674957] Modu=
les linked in: nfsd exportfs nfs lockd fscache auth_rpcgss nfs_acl sunrpc=
 tda10023 budget_av evdev saa7146_vv videodev v4l2_compat_ioctl32 videobu=
f_dma_sg videobuf_core budget_core snd_pcm dvb_core snd_timer saa7146 snd=
 ttpci_eeprom soundcore snd_page_alloc i2c_core pcspkr ext3 jbd mbcache x=
en_netfront xen_blkfront=0A[   14.675057]=20=0A[   14.675065] Pid: 0, com=
m: swapper/0 Not tainted 3.2.8-amd64 #1 =20=0A[   14.675079] RIP: e030:[<=
ffffffff811b4c0b>]  [<ffffffff811b4c0b>] swiotlb_bounce+0x2e/0x31=0A[   1=
4.675097] RSP: e02b:ffff880013fabe58  EFLAGS: 00010202=0A[   14.675106] R=
AX: ffff880012800000 RBX: 0000000000000001 RCX: 0000000000001000=0A[   14=
=2E675116] RDX: 0000000000001000 RSI: ffff880012800000 RDI: ffffc7fffffff=
000=0A[   14.675126] RBP: 0000000000000002 R08: ffffc7fffffff000 R09: fff=
f880013f98000=0A[   14.675137] R10: 0000000000000001 R11: ffff88000337600=
0 R12: ffff8800032c5090=0A[   14.675147] R13: 0000000000000149 R14: ffff8=
800033e0000 R15: ffffffff81601fd8=0A[   14.675163] FS:  00007f3ff9893700(=
0000) GS:ffff880013fa8000(0000) knlGS:0000000000000000=0A[   14.675175] C=
S:  e033 DS: 0000 ES: 0000 CR0: 000000008005003b=0A[   14.675184] CR2: ff=
ffc7fffffff000 CR3: 0000000012683000 CR4: 0000000000000660=0A[   14.67519=
5] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000=0A[ =
  14.675205] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 00000000000=
00400=0A[   14.675216] Process swapper/0 (pid: 0, threadinfo ffffffff8160=
0000, task ffffffff8160d020)=0A[   14.675227] Stack:=0A[   14.675232]  ff=
ffffff81211826 ffff880002eda000 0000000000000000 ffffc90000408000=0A[   1=
4.675251]  00000000000b0150 0000000000000006 ffffffffa013ec4a ffffffff810=
946cd=0A[   14.675270]  ffffffff81099203 ffff880003376000 000000000000000=
0 ffff880002eda4b0=0A[   14.675289] Call Trace:=0A[   14.675295]  <IRQ>=20=
=0A[   14.675307]  [<ffffffff81211826>] =3F xen_swiotlb_sync_sg_for_cpu+0=
x2e/0x47=0A[   14.675322]  [<ffffffffa013ec4a>] =3F vpeirq+0x7f/0x198 [bu=
dget_core]=0A[   14.675337]  [<ffffffff810946cd>] =3F handle_irq_event_pe=
rcpu+0x166/0x184=0A[   14.675350]  [<ffffffff81099203>] =3F __rcu_process=
_callbacks+0x71/0x2f8=0A[   14.675364]  [<ffffffff8104d175>] =3F tasklet_=
action+0x76/0xc5=0A[   14.675376]  [<ffffffff8120a9ac>] =3F eoi_pirq+0x5b=
/0x77=0A[   14.675388]  [<ffffffff8104cbc6>] =3F __do_softirq+0xc4/0x1a0=0A=
[   14.675400]  [<ffffffff8120a022>] =3F __xen_evtchn_do_upcall+0x1c7/0x2=
05=0A[   14.675412]  [<ffffffff8134b06c>] =3F call_softirq+0x1c/0x30=0A[ =
  14.675425]  [<ffffffff8100fa47>] =3F do_softirq+0x3f/0x79=0A[   14.6754=
36]  [<ffffffff8104c996>] =3F irq_exit+0x44/0xb5=0A[   14.675452]  [<ffff=
ffff8120b032>] =3F xen_evtchn_do_upcall+0x27/0x32=0A[   14.675464]  [<fff=
fffff8134b0be>] =3F xen_do_hypervisor_callback+0x1e/0x30=0A[   14.675473]=
  <EOI>=20=0D=0A=0D=0A=C2=A0=0D=0AComplete log is attached.=0D=0A=0D=0A=C2=
=A0=0D=0ABR, Carsten.=0D=0A=C2=A0=0D=0A-----Urspr=C3=BCngliche Nachricht-=
----=0D=0AAn:Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>;=20=0D=0ACC:K=
onrad Rzeszutek Wilk <konrad@darnok.org>; xen-devel <xen-devel@lists.xens=
ource.com>; Jan Beulich <jbeulich@suse.com>; Sander Eikelenboom <linux@ei=
kelenboom.it>;=20=0D=0AVon:Carsten Schiers <carsten@schiers.de>=0D=0AGese=
ndet:Mi 29.02.2012 13:16=0D=0ABetreff:Re: [Xen-devel] Load increase after=
 memory upgrade (part2)=0D=0AAnlage:inline.txt=0D=0A=20=0D=0A=0D=0AGreat =
news: it works and load is back to normal. In the attached graph you can =
see the peak=0D=0A=0D=0Ain blue (compilation of the patched 3.2.8 Kernel)=
 and then after 16.00 the going life of the=0D=0A=0D=0Avideo DomU. We are=
 below an avaerage of 7% usage (figures are in Permille).=0D=0A=0D=0A=0D=0A=
Thanks so much. Is that already "the final patch"=3F=0D=0A=0D=0A=C2=A0=0D=
=0ABR, Carsten.=0D=0A=0D=0A=C2=A0=0D=0A=0D=0A=C2=A0=0D=0A-----Urspr=C3=BC=
ngliche Nachricht-----=0D=0AAn:Konrad Rzeszutek Wilk <konrad.wilk@oracle.=
com>;=20=0D=0ACC:Sander Eikelenboom <linux@eikelenboom.it>; xen-devel <xe=
n-devel@lists.xensource.com>; Jan Beulich <jbeulich@suse.com>; Konrad Rze=
szutek Wilk <konrad@darnok.org>;=20=0D=0AVon:Carsten Schiers <carsten@sch=
iers.de>=0D=0AGesendet:Di 28.02.2012 15:39=0D=0ABetreff:Re: [Xen-devel] L=
oad increase after memory upgrade (part2)=0D=0AAnlage:inline.txt=0D=0A=20=
=0D=0A=0D=0AWell let me check for a longer period of time, and especially=
, whether the DomU is still=0D=0A=0D=0Aworking (can do that only from at =
home), but load looks pretty well after applying the=0D=0A=0D=0Apatch to =
3.2.8 :-D.=0D=0A=0D=0A=C2=A0=0D=0ABR,=0D=0A=0D=0ACarsten.=0D=0A=C2=A0=0D=0A=
-----Urspr=C3=BCngliche Nachricht-----=0D=0AAn:Jan Beulich <JBeulich@suse=
=2Ecom>;=20=0D=0ACC:Konrad Rzeszutek Wilk <konrad@darnok.org>; xen-devel =
<xen-devel@lists.xensource.com>; Carsten Schiers <carsten@schiers.de>; Sa=
nder Eikelenboom <linux@eikelenboom.it>;=20=0D=0AVon:Konrad Rzeszutek Wil=
k <konrad.wilk@oracle.com>=0D=0AGesendet:Fr 17.02.2012 16:18=0D=0ABetreff=
:Re: [Xen-devel] Load increase after memory upgrade (part2)=0D=0AOn Thu, =
Feb 16, 2012 at 08:56:53AM +0000, Jan Beulich wrote:=0D=0A> >>> On 15.02.=
12 at 20:28, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> wrote:=0D=0A>=
 >@@ -1550,7 +1552,11 @@ static void *__vmalloc_area_node(struct vm_struc=
t *area, gfp_t gfp_mask,=0D=0A> > struct page **pages;=0D=0A> > unsigned =
int nr_pages, array_size, i;=0D=0A> > gfp_t nested_gfp =3D (gfp_mask & GF=
P_RECLAIM_MASK) | __GFP_ZERO;=0D=0A> >-=0D=0A> >+gfp_t dma_mask =3D gfp_m=
ask & (__GFP_DMA | __GFP_DMA32);=0D=0A> >+if (xen_pv_domain()) {=0D=0A> >=
+if (dma_mask =3D=3D (__GFP_DMA | __GFP_DMA32))=0D=0A>=20=0D=0A> I didn't=
 spot where you force this normally invalid combination, without=0D=0A> w=
hich the change won't affect vmalloc32() in a 32-bit kernel.=0D=0A>=20=0D=
=0A> >+gfp_mask &=3D (__GFP_DMA | __GFP_DMA32);=0D=0A>=20=0D=0A> gfp_mask=
 &=3D ~(__GFP_DMA | __GFP_DMA32);=0D=0A>=20=0D=0A> Jan=0D=0A=0D=0ADuh!=0D=
=0AGood eyes. Thanks for catching that.=0D=0A=0D=0A>=20=0D=0A> >+}=0D=0A>=
 > nr_pages =3D (area->size - PAGE_SIZE) >> PAGE_SHIFT;=0D=0A> > array_si=
ze =3D (nr_pages * sizeof(struct page *));=0D=0A> >=20=0D=0A>=20=0D=0A=0D=
=0A_______________________________________________=0D=0AXen-devel mailing=
 list=0D=0AXen-devel@lists.xensource.com=0D=0Ahttp://lists.xensource.com/=
xen-devel=0D=0A=20=0D=0A=20=0D=0A=0D=0A=C2=A0=0D=0A
--=_F1yjPY0x5Rt03QtpR+eAjTruBumDA6U+Yn3CBd30zLybmgQg
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64

PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlv
bmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PGh0bWw+
CjxoZWFkPgogIDxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iWmFyYWZhIFdlYkFj
Y2VzcyB2Ny4wLjItMjk0NzAiPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KICA8dGl0bGU+QVc6IFtYZW4t
ZGV2ZWxdIExvYWQgaW5jcmVhc2UgYWZ0ZXIgbWVtb3J5IHVwZ3JhZGUgKHBhcnQyKTwvdGl0
bGU+CiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgYm9keQ0KICAgICAgew0KICAg
ICAgICBmb250LWZhbWlseTogQXJpYWwsIFZlcmRhbmEsIFNhbnMtU2VyaWYgISBpbXBvcnRh
bnQ7DQogICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgcGFkZGluZzogNXB4IDVw
eCA1cHggNXB4Ow0KICAgICAgICBtYXJnaW46IDBweDsNCiAgICAgICAgYm9yZGVyLXN0eWxl
OiBub25lOw0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgICAgfQ0K
DQogICAgICBwLCB1bCwgbGkNCiAgICAgIHsNCiAgICAgICAgbWFyZ2luLXRvcDogMHB4Ow0K
ICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7DQogICAgICB9DQogIDwvc3R5bGU+CjwvaGVh
ZD4KPGJvZHk+CjxwPkkgYW0gdmVyeSBzb3JyeS4gSSBhY2NpZGVudGx5IHN0YXJ0ZWQgdGhl
IERvbVUgd2l0aCB0aGUgd3JvbmcgY29uZmlnIGZpbGUsIHRodXMgaXQmIzM5O3MgY2xlYXIg
d2h5IHRoZXJlIGlzIG5vIGRpZmZlcmVuY2U8L3A+PHA+YmV0d2VlbiB0aGUgdHdvLiBBbmQg
dW5mb3J0dW5hdGVseSwgdGhlIERvbVUgd2l0aCB0aGUgY29ycmVjdCBjb25maWcgZmlsZSBp
cyBoYXZpbmcgYSBCVUc6PC9wPjxwPiZuYnNwOzwvcD48cHJlPgpbICAgMTQuNjc0ODgzXSBC
VUc6IHVuYWJsZSB0byBoYW5kbGUga2VybmVsIHBhZ2luZyByZXF1ZXN0IGF0IGZmZmZjN2Zm
ZmZmZmYwMDAKWyAgIDE0LjY3NDkxMF0gSVA6IFsmbHQ7ZmZmZmZmZmY4MTFiNGMwYiZndDtd
IHN3aW90bGJfYm91bmNlKzB4MmUvMHgzMQpbICAgMTQuNjc0OTMwXSBQR0QgMCAKWyAgIDE0
LjY3NDk0MF0gT29wczogMDAwMiBbIzFdIFNNUCAKWyAgIDE0LjY3NDk1Ml0gQ1BVIDAgClsg
ICAxNC42NzQ5NTddIE1vZHVsZXMgbGlua2VkIGluOiBuZnNkIGV4cG9ydGZzIG5mcyBsb2Nr
ZCBmc2NhY2hlIGF1dGhfcnBjZ3NzIG5mc19hY2wgc3VucnBjIHRkYTEwMDIzIGJ1ZGdldF9h
diBldmRldiBzYWE3MTQ2X3Z2IHZpZGVvZGV2IHY0bDJfY29tcGF0X2lvY3RsMzIgdmlkZW9i
dWZfZG1hX3NnIHZpZGVvYnVmX2NvcmUgYnVkZ2V0X2NvcmUgc25kX3BjbSBkdmJfY29yZSBz
bmRfdGltZXIgc2FhNzE0NiBzbmQgdHRwY2lfZWVwcm9tIHNvdW5kY29yZSBzbmRfcGFnZV9h
bGxvYyBpMmNfY29yZSBwY3Nwa3IgZXh0MyBqYmQgbWJjYWNoZSB4ZW5fbmV0ZnJvbnQgeGVu
X2Jsa2Zyb250ClsgICAxNC42NzUwNTddIApbICAgMTQuNjc1MDY1XSBQaWQ6IDAsIGNvbW06
IHN3YXBwZXIvMCBOb3QgdGFpbnRlZCAzLjIuOC1hbWQ2NCAjMSAgClsgICAxNC42NzUwNzld
IFJJUDogZTAzMDpbJmx0O2ZmZmZmZmZmODExYjRjMGImZ3Q7XSAgWyZsdDtmZmZmZmZmZjgx
MWI0YzBiJmd0O10gc3dpb3RsYl9ib3VuY2UrMHgyZS8weDMxClsgICAxNC42NzUwOTddIFJT
UDogZTAyYjpmZmZmODgwMDEzZmFiZTU4ICBFRkxBR1M6IDAwMDEwMjAyClsgICAxNC42NzUx
MDZdIFJBWDogZmZmZjg4MDAxMjgwMDAwMCBSQlg6IDAwMDAwMDAwMDAwMDAwMDEgUkNYOiAw
MDAwMDAwMDAwMDAxMDAwClsgICAxNC42NzUxMTZdIFJEWDogMDAwMDAwMDAwMDAwMTAwMCBS
U0k6IGZmZmY4ODAwMTI4MDAwMDAgUkRJOiBmZmZmYzdmZmZmZmZmMDAwClsgICAxNC42NzUx
MjZdIFJCUDogMDAwMDAwMDAwMDAwMDAwMiBSMDg6IGZmZmZjN2ZmZmZmZmYwMDAgUjA5OiBm
ZmZmODgwMDEzZjk4MDAwClsgICAxNC42NzUxMzddIFIxMDogMDAwMDAwMDAwMDAwMDAwMSBS
MTE6IGZmZmY4ODAwMDMzNzYwMDAgUjEyOiBmZmZmODgwMDAzMmM1MDkwClsgICAxNC42NzUx
NDddIFIxMzogMDAwMDAwMDAwMDAwMDE0OSBSMTQ6IGZmZmY4ODAwMDMzZTAwMDAgUjE1OiBm
ZmZmZmZmZjgxNjAxZmQ4ClsgICAxNC42NzUxNjNdIEZTOiAgMDAwMDdmM2ZmOTg5MzcwMCgw
MDAwKSBHUzpmZmZmODgwMDEzZmE4MDAwKDAwMDApIGtubEdTOjAwMDAwMDAwMDAwMDAwMDAK
WyAgIDE0LjY3NTE3NV0gQ1M6ICBlMDMzIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAw
MDA4MDA1MDAzYgpbICAgMTQuNjc1MTg0XSBDUjI6IGZmZmZjN2ZmZmZmZmYwMDAgQ1IzOiAw
MDAwMDAwMDEyNjgzMDAwIENSNDogMDAwMDAwMDAwMDAwMDY2MApbICAgMTQuNjc1MTk1XSBE
UjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjogMDAwMDAw
MDAwMDAwMDAwMApbICAgMTQuNjc1MjA1XSBEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAw
MDAwMDAwMGZmZmYwZmYwIERSNzogMDAwMDAwMDAwMDAwMDQwMApbICAgMTQuNjc1MjE2XSBQ
cm9jZXNzIHN3YXBwZXIvMCAocGlkOiAwLCB0aHJlYWRpbmZvIGZmZmZmZmZmODE2MDAwMDAs
IHRhc2sgZmZmZmZmZmY4MTYwZDAyMCkKWyAgIDE0LjY3NTIyN10gU3RhY2s6ClsgICAxNC42
NzUyMzJdICBmZmZmZmZmZjgxMjExODI2IGZmZmY4ODAwMDJlZGEwMDAgMDAwMDAwMDAwMDAw
MDAwMCBmZmZmYzkwMDAwNDA4MDAwClsgICAxNC42NzUyNTFdICAwMDAwMDAwMDAwMGIwMTUw
IDAwMDAwMDAwMDAwMDAwMDYgZmZmZmZmZmZhMDEzZWM0YSBmZmZmZmZmZjgxMDk0NmNkClsg
ICAxNC42NzUyNzBdICBmZmZmZmZmZjgxMDk5MjAzIGZmZmY4ODAwMDMzNzYwMDAgMDAwMDAw
MDAwMDAwMDAwMCBmZmZmODgwMDAyZWRhNGIwClsgICAxNC42NzUyODldIENhbGwgVHJhY2U6
ClsgICAxNC42NzUyOTVdICAmbHQ7SVJRJmd0OyAKWyAgIDE0LjY3NTMwN10gIFsmbHQ7ZmZm
ZmZmZmY4MTIxMTgyNiZndDtdID8geGVuX3N3aW90bGJfc3luY19zZ19mb3JfY3B1KzB4MmUv
MHg0NwpbICAgMTQuNjc1MzIyXSAgWyZsdDtmZmZmZmZmZmEwMTNlYzRhJmd0O10gPyB2cGVp
cnErMHg3Zi8weDE5OCBbYnVkZ2V0X2NvcmVdClsgICAxNC42NzUzMzddICBbJmx0O2ZmZmZm
ZmZmODEwOTQ2Y2QmZ3Q7XSA/IGhhbmRsZV9pcnFfZXZlbnRfcGVyY3B1KzB4MTY2LzB4MTg0
ClsgICAxNC42NzUzNTBdICBbJmx0O2ZmZmZmZmZmODEwOTkyMDMmZ3Q7XSA/IF9fcmN1X3By
b2Nlc3NfY2FsbGJhY2tzKzB4NzEvMHgyZjgKWyAgIDE0LjY3NTM2NF0gIFsmbHQ7ZmZmZmZm
ZmY4MTA0ZDE3NSZndDtdID8gdGFza2xldF9hY3Rpb24rMHg3Ni8weGM1ClsgICAxNC42NzUz
NzZdICBbJmx0O2ZmZmZmZmZmODEyMGE5YWMmZ3Q7XSA/IGVvaV9waXJxKzB4NWIvMHg3Nwpb
ICAgMTQuNjc1Mzg4XSAgWyZsdDtmZmZmZmZmZjgxMDRjYmM2Jmd0O10gPyBfX2RvX3NvZnRp
cnErMHhjNC8weDFhMApbICAgMTQuNjc1NDAwXSAgWyZsdDtmZmZmZmZmZjgxMjBhMDIyJmd0
O10gPyBfX3hlbl9ldnRjaG5fZG9fdXBjYWxsKzB4MWM3LzB4MjA1ClsgICAxNC42NzU0MTJd
ICBbJmx0O2ZmZmZmZmZmODEzNGIwNmMmZ3Q7XSA/IGNhbGxfc29mdGlycSsweDFjLzB4MzAK
WyAgIDE0LjY3NTQyNV0gIFsmbHQ7ZmZmZmZmZmY4MTAwZmE0NyZndDtdID8gZG9fc29mdGly
cSsweDNmLzB4NzkKWyAgIDE0LjY3NTQzNl0gIFsmbHQ7ZmZmZmZmZmY4MTA0Yzk5NiZndDtd
ID8gaXJxX2V4aXQrMHg0NC8weGI1ClsgICAxNC42NzU0NTJdICBbJmx0O2ZmZmZmZmZmODEy
MGIwMzImZ3Q7XSA/IHhlbl9ldnRjaG5fZG9fdXBjYWxsKzB4MjcvMHgzMgpbICAgMTQuNjc1
NDY0XSAgWyZsdDtmZmZmZmZmZjgxMzRiMGJlJmd0O10gPyB4ZW5fZG9faHlwZXJ2aXNvcl9j
YWxsYmFjaysweDFlLzB4MzAKWyAgIDE0LjY3NTQ3M10gICZsdDtFT0kmZ3Q7IDwvcHJlPjxw
PiZuYnNwOzwvcD48cD5Db21wbGV0ZSBsb2cgaXMgYXR0YWNoZWQuPC9wPjxwPiZuYnNwOzwv
cD48cD5CUiwgQ2Fyc3Rlbi48YnIgLz4mbmJzcDs8L3A+PGJsb2NrcXVvdGUgc3R5bGU9ImJv
cmRlci1sZWZ0OiAycHggc29saWQgIzMyNUZCQTsgcGFkZGluZy1sZWZ0OiA1cHg7bWFyZ2lu
LWxlZnQ6NXB4OyI+LS0tLS1VcnNwciZ1dW1sO25nbGljaGUgTmFjaHJpY2h0LS0tLS08YnIg
Lz48c3Ryb25nPkFuOjwvc3Ryb25nPglLb25yYWQgUnplc3p1dGVrIFdpbGsgJmx0O2tvbnJh
ZC53aWxrQG9yYWNsZS5jb20mZ3Q7OyA8YnIgLz48c3Ryb25nPkNDOjwvc3Ryb25nPglLb25y
YWQgUnplc3p1dGVrIFdpbGsgJmx0O2tvbnJhZEBkYXJub2sub3JnJmd0OzsgeGVuLWRldmVs
ICZsdDt4ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbSZndDs7IEphbiBCZXVsaWNoICZs
dDtqYmV1bGljaEBzdXNlLmNvbSZndDs7IFNhbmRlciBFaWtlbGVuYm9vbSAmbHQ7bGludXhA
ZWlrZWxlbmJvb20uaXQmZ3Q7OyA8YnIgLz48c3Ryb25nPlZvbjo8L3N0cm9uZz4JQ2Fyc3Rl
biBTY2hpZXJzICZsdDtjYXJzdGVuQHNjaGllcnMuZGUmZ3Q7PGJyIC8+PHN0cm9uZz5HZXNl
bmRldDo8L3N0cm9uZz4JTWkgMjkuMDIuMjAxMiAxMzoxNjxiciAvPjxzdHJvbmc+QmV0cmVm
Zjo8L3N0cm9uZz4JUmU6IFtYZW4tZGV2ZWxdIExvYWQgaW5jcmVhc2UgYWZ0ZXIgbWVtb3J5
IHVwZ3JhZGUgKHBhcnQyKTxiciAvPjxzdHJvbmc+QW5sYWdlOjwvc3Ryb25nPglpbmxpbmUu
dHh0PGJyIC8+PHN0eWxlIHR5cGU9InRleHQvY3NzIj5ib2R5IHsgZm9udC1mYW1pbHk6IG1v
bm9zcGFjZTsgfTwvc3R5bGU+ICAgICAgICAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4gICAgICAgLmJvZHljbGFzcyAgICAgICB7ICAgICAgICAgZm9udC1mYW1pbHk6IEFyaWFs
LCBWZXJkYW5hLCBTYW5zLVNlcmlmICEgaW1wb3J0YW50OyAgICAgICAgIGZvbnQtc2l6ZTog
MTJweDsgICAgICAgICBwYWRkaW5nOiA1cHggNXB4IDVweCA1cHg7ICAgICAgICAgbWFyZ2lu
OiAwcHg7ICAgICAgICAgYm9yZGVyLXN0eWxlOiBub25lOyAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6ICNmZmZmZmY7ICAgICAgIH0gICAgICAgIHAsIHVsLCBsaSAgICAgICB7ICAgICAg
ICAgbWFyZ2luLXRvcDogMHB4OyAgICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsgICAgICAg
fSAgIDwvc3R5bGU+ICA8ZGl2PjxwPkdyZWF0IG5ld3M6IGl0IHdvcmtzIGFuZCBsb2FkIGlz
IGJhY2sgdG8gbm9ybWFsLiBJbiB0aGUgYXR0YWNoZWQgZ3JhcGggeW91IGNhbiBzZWUgdGhl
IHBlYWs8L3A+PHA+aW4gYmx1ZSAoY29tcGlsYXRpb24gb2YgdGhlIHBhdGNoZWQgMy4yLjgg
S2VybmVsKSBhbmQgdGhlbiBhZnRlciAxNi4wMCB0aGUgZ29pbmcgbGlmZSBvZiB0aGU8L3A+
PHA+dmlkZW8gRG9tVS4gV2UgYXJlIGJlbG93IGFuIGF2YWVyYWdlIG9mIDclIHVzYWdlIChm
aWd1cmVzIGFyZSBpbiBQZXJtaWxsZSkuPC9wPjxwPjxiciAvPlRoYW5rcyBzbyBtdWNoLiBJ
cyB0aGF0IGFscmVhZHkgJnF1b3Q7dGhlIGZpbmFsIHBhdGNoJnF1b3Q7PzwvcD48cD4mbmJz
cDs8L3A+PHA+QlIsIENhcnN0ZW4uPC9wPjxwPiZuYnNwOzwvcD48cD48YnIgLz4mbmJzcDs8
aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFmRUFBQUdFQ0FJQUFBQ3B2NDVZQUFBZ0FFbEVRVlI0bk8yZGZYUVVWWjczYjBnQ0lTQUp3
U0JndGtuRWtKQTN6QVlWZlVhUGoyY2RIY2VET0lGbFpnQjNkcHhoUmtRajZLb2M1MkN2c0Rv
S0F6akJMRG1vWklOQk1OMkJCRmxmRUVrRTl4QUo2S0JFakx3NEtFaDNPcS8zbnozbitTUFBI
eGV1UmQycTZwdnVydXJxcXUvbjlPblRYWDNyM3Z1N2RldmJ2OXl1K29aOEJnQUF3QkcwdHJh
U2VQY0JBQUJBREdodGJYM2pqVGN1YVRvRkFBQ1F5THp4eGh2UWRBQUFjQWpRZEFBQWNBN1Fk
QUFBY0E3UWRBQUFTQ1FhQlpTZlF0TUJrSUlRRXU4dURJTlk5VGF4b25ZVmc0T0RUTTJoNmND
Qm1DYzl2R2J4UlV5cU5RbG91clBwNys4L2N1U0l6K2M3Zi81OFUxT1Q4aU5vdXF0WnVIRGhi
My83VytXV2YvM1hmMTIwYUZFMGRSSkNDQ0ZKU1VsWFhYVlZXVm5aOHVYTHo1NDlHMTAzWTR5
bVRvV1Y3Q2pWeldKeGhLWTdtTTdPenBhV2xyYTJ0cTZ1cnFhbXBpTkhqaWcvaGFhN21rQWdV
RlJVOU1ZYmI3QzNyNy8rZW5GeGNUQVlqS1pPcmdLQlFPRFFvVU1QUC96dzVNbVRUNXc0RVcx
Zll3YzAzZnA2UUF6NTZLT1B6cDgvci9jcE5OM3RIRDE2OUpwcnJqbDI3Tml4WThjbVRackVw
a0YvZi8rS0ZTdXV2dnJxMGFOSFYxWlcvdkRERDZ3d0lXVGp4bzBlanljMU5iV3NyT3lUVHo0
Ukt4UlY0T21ubi83bEwzL0pYbmQzZC8vTHYvekxWVmRkZGRWVlYvM21ONy9wN3U3bWUyM1lz
R0hxMUtralI0NmNNV1BHQng5OHNIbno1bW5UcHJHR0RoOCt6SXA5OGNVWFAvdlp6OGFNR1RO
cTFLaTc3cnJyekprenFrWWo2eUhmU0JTSU5Zc3Z4UEthUFRTbzFtQkF3Z1ppQUNGazllclYy
ZG5aNmVucGl4WXRDb1ZDbE5KYmI3MTE2OWF0dkV4blorZWtTWk5VNmhBS2hSWXVYSmllbmo1
eDRzUTFhOVlZeHlWVEliQVlhRHFncjczMlduRnhjWEZ4Y1YxZEhkdnlwei85NmM0Nzd6eDU4
dVFQUC95d2NPSEMzLzN1ZDJ3N0lhU3lzdkxycjc4T0JBTFBQdnRzUlVXRldKdW9tSjJkbmRk
Y2N3MTcvZGhqajkxOTk5MW56cHc1ZmZyMFAvM1RQMVZWVmZHOTVzeVo4OVZYWHdVQ2dlZWVl
MjdzMkxFUFBQQUFmM3ZqalRleVlvV0ZoZSs4ODA0d0dEeC8vdnpTcFVzWExGaWdhalN5SGxM
OVBGMW1QYjI2dXZxZWUrNlI3S0hxcmNHQWhBM0VBRUlJcS9iTW1UTjMzMzMzNDQ4L1RpbmR0
V3RYUVVIQndNQUFLL1BnZ3c4Ky8venpxaDJycXFwNGYrNjY2eTdlVDgyNFpDb0VNUWZYdllE
d2xKZVh6NW8xaTcvMWVEekhqaDFqcjArZlBqMXg0a1QybWhCeTd0dzU5am9RQ0tTa3BJaFZp
WkxYMjl1Ym1wcktYaytlUFBuenp6OW5yei83N0xNcFU2Ynd2ZjcrOTcvem1sVnZOUnNLQkFK
WFgzMjFxdEhJZWtpajBQU1dscGFaTTJmeVAyWEM5bEQxMW1CQXdnWmlBQ0hrYjMvN0czdjkr
ZWVmWDN2dHRleDFSVVhGNjYrL3pqY0dBZ0hWamxPbVRPRTdmdmJaWjVwanBZd3JiSVhBSkhE
ZEM5Qmw4K2JOTjl4d3d3MDMzUERhYTYreExTa3BLY3JsZ3FTa0pMWmRUNWlNTjdJL3lkbnI1
T1RrL3Y1KzlycXZyNDlMbFhITi9PMkhIMzU0eXkyM3BLZW42M1ZNcG9jalJvemdmV0QwOS9l
UEdESEN1QWJOSm80Y09USnQyalRscndWaGU2aDZHOW1BOEkzSzlSelZSNXJWN3RpeEl6OC92
NysvZi83OCtXdlhyaFYzVlBVbjdNaUhyUkNZQWE1N0Fib2NPWEprOHVUSlgzenh4ZkhqeHlk
UG5uejA2RkZLYVU1T3p0ZGZmeTBXamt6VG4zNzY2Vi85NmxmczllVEprNVZwNE9USmsyVnE1
bStuVEpsU1YxZDMvdno1d2NIQkN4Y3VoRTJpTlh2bzhYais1My8rUjdubDBLRkRIby9IdUFi
eHhaa3paL0x6OC9mdDI2Y3NIN2FIcXJlUkRVaFlsSG42My83Mk41NytEdzRPRmhjWFYxVlZl
VHllbnA0ZWNVZGxudjc1NTUrSEhmbXdGWUtZZyt0ZWdDNkJRR0RHakJsdnZmVVdlL3ZtbTIr
eTYxNmVlKzY1dSsrKysvang0MzE5ZlljUEg2NnNyR1FGaHFYcDdMcVhwVXVYS3E5N1diWnNH
Vi9udmV1dXV4NTk5RkdabXZuYjhlUEg3OWl4SXhRS2ZmSEZGNVdWbFpGcCtyLy8rNytYbDVk
LzlORkhvVkFvRkFydDM3OS81c3laYTlhc1laOW1aR1R3ZFNmTm12bUxHMis4Y2ZQbXphcks5
WHFvVjIxa0F4SVdRc2pQZnZhenMyZlBuajE3OXA1Nzd1SEw5SlRTdXJvNlFzaXJyNzZxdVdO
VlZSWGJrUzNFaHgzNXNCV0NtSVByWG9BdUN4Y3U1Q0xDZVBqaGh4Y3VYRGd3TU9EMWV0bEZG
MFZGUmZ5M1Uva0ZnYVNrcERGanhwU1dsajcrK09QODZoUkthVEFZWEx4NDhkaXhZOGVPSGJ0
NDhXSiszYVNrcHIvMTFsdTV1Ym5KeWNuLzhBLy9zSGJ0MnNnMGZYQndjTzNhdGNYRnhhTkdq
Um8xYWxSeGNmRmYvdklYL3VtcVZhdkdqQmxqVUxQeWhSTGpIdXBWRzltQWhJVW9ybnRadUhB
aHY1eUdVcnB0MjdacDA2YjE5ZlZwN3RqZDNmM3JYLzk2OU9qUjJkblp5dXRlOU9JS1d5R3dH
R2c2QU83aTNudnY1WGNrMkxOQ1lBeXVld0VBVUVycHdNQkFkWFYxWVdFaHYvclFiaFVDR1ZR
aURrMEh3S1VRUWp3ZVQydHJxMjByQkRJME5UWDE5dmF5MTcyOXZianVCUUFBRXBqVzF0WlBQ
LzIwcjYrdnI2L3YwMDgvYld0clUzNEtUUWNBZ0VTaXU3djd3SUVEZnIvZjcvZTN0cllxZndD
bjBIUUFBRWhvc0o0T0FBRE9BWm9PQUFBSmpJdXVaVHkrZCsveHZYdmozUXNBQUxBT3gycDZY
eWkwL3BaYjF0OXlTMThvRk8rK0FBQ0FSVGhXMHo5NDZTV3Z4K1AxZUQ1NDZhVjQ5d1VBQU9L
RFF6VDkvTW1UYS9Mem1hYXZ5YzgvZi9Ka3ZIc0VBQUNtRUF3R1cxdGIrYldNcW44MjZSQk5y
MSs4bUFrNmU5UXZYaHp2SGdFQWdDbnMyN2Z2MkxGanZiMjl2YjI5UjQ4ZVZiazlPMFRUR1U4
OTlaUk1zYTZ1THV1THlaZnM3ZWlJUzd1STE1cDJFYTgxN2RvODNtancrWHpjWUdkZ1lNRG44
eWsvZGFPbUh6eDQwUHBpOGlVdmJOb1VsM1lScnpYdElsNXIyclY1dk5IZ2lqeTl0N2YzeElr
VHYvM3RiNGVHaGs2ZlBtMzgvTC8vKzc5aHl3d05EWjA4ZVRLR3RjbVg3RHAyTEM3dElsN0Vp
M2d0aTNkb2FPanJyNzgrY2VLRS9COEtuRUFnNFB6MWRNWlRUejAxSk1HcFU2ZXNMeVpma3Jh
MXhhVmR4R3ROdTRqWG1uWnRIdStsd2liZ1JrMEhBQUE3RUpuUXVlSzZGd2J5OUdoS0lsNXIy
a1c4MXJScjgzZ3ZGWTRJTzY2bjE5ZlhGeFlXcHFhbWxwYVd0clMwOE8wclY2N2svK2Z3NjYr
L25qMTc5c2lSSTJmUG5zMytoNzI0UlFYeWRBQkFBaEdaZnRyeHVwY0hIbmlndmIyOXU3dDcw
NlpORXlaTVlCdmIydG9tVFpyRU5YM2V2SGtyVnF6bzd1NWVzV0xGL1Buek5iZW9RSjRlVFVu
RWEwMjdpTmVhZG0wZTc2WENFV0hIUEoxejRzUUpqOGRES2UzdTdpNHVMdDY3ZHkvWDlBa1RK
cHcrZlpwU2V2cjBhYWI3NGhZVnlOTUJBQWxFWkxKcDMrdGVUcDA2VlY1ZXZuUG5Ua3JwMHFW
TFgzenhSVW9wMS9RUkkwYXd2eS82Ky91VGs1TTF0M0Q2Ly83M0M2Kzg4dVR2ZjA4UEhCZ2FH
akorUHIxelo5Z3k5TUNCVTZkT3hiQTIrWkswclMwdTdTSmV4SXQ0TFl1WEhqancvMEtoQzYr
ODB0UGVIbHRkalp1bXQ3YTJlanllTFZ1MnNMZEpTVWxFQWFVMEt5dExsWldMVzFRZ1R3Y0FK
QkNSaWFjZC9kT3JxNnV6czdOMzc5NHRmc1R6OU1yS1NyNTZYbGxacWJsRkJkYlRveW1KZUsx
cEYvRmEwNjdONDcxVU9DSlVJcTRpUHBwT3J1VGl4WXZLajlpTHI3NzY2cWFiYmtwTlRiMzU1
cHRQbmp5cHVVVUY4blFBUUFJUm1YN2FVZE5OQW5sNk5DVVJyelh0SWw1cjJyVjV2SmNLUndR
MEhRQUE3SWdaTXVoR1RYZkc5N3piOGhyRUcyVkp4R3ROdS9CN2lRM0Q4bVhFTTU3eGpPZTRQ
MGZteS9qT08rKzB0N2VmUG4yNnY3OWZzNEJETkoyQlBEMmFrb2pYbW5ZUnJ6WHQyanplUzRX
SHo0VUxGNDRmUDc1Ly8vNm1wcWI5Ky9jZlAzNzh3b1VMeWdKdTFIUUFBTEFEMGNoZFgxL2Y2
ZE9uMjl2YjMzbm5IZVYyTjJxNk03N24zWmJYSU40b1N5SmVhOXAxNlhxNjZNc29ib0V2SXdE
QTJaaWhybmJ4WlJTM3dKZlI0bllScnpYdElsNXIyclY1dkpjS200QmRmQm5GTGZCbEJBQTRt
NWlvcUMzOFhoaW5GTDZNNGhiNE1zTEhEdkVpWHFmR1MyUG55MmdYVFZmNU1vcGI0TXNJQUhB
MmtZbG5Zdmd5aWx2Z3kyaHh1NGpYbW5ZUnJ6WHQyanplUzRWamdTMDBYZlJsRkxmQWx4RUE0
R3hpSXFlMjBIU1RRSjRlVFVuRWEwMjdpTmVhZG0wZTc2WENKdUJHVFFjQUFEc1FtZEFGZzBH
Yi9qL1NtSU04UFpxU2lOZWFkaEd2TmUzYVBONUxoU05pMzc1OXg0NGQ2KzN0N2UzdFBYcjA2
TDU5KzVTZk9rVFQ0Y3VJWnp6ak9iR2VJL05scEpUNmZENTJWVGVsZEdCZ3dPZnpLVDkxaUtZ
em5KZW5rdzJFYkNEV3RHdUhlSzFzRi9GYTB5N2lOU29jRWE3STB4bk9XMDgzMEhRQVFLSVRt
ZEFGQWdHc3AxOUJBbjNQZHd5UmppSGs2YWEwaTNpdGFSZnhHaFUyQWJ2NE1zcTRNTHJFbDFH
Wm05ZVMybHBTRzkvK0FBQk1Jakw5dE9OOXBKRzVNRHJQbDVGck45Tng5cGl6TW9mTGVnV3By
ZERSZExmbE5ZZzN5cEtJMTVwMkxjalRtWWh6S2JlRnBuT0c1Y0xvUEY5R2xhWVBFVUkyRUsv
WDJ6RkVXSHB1b09rQWdFUW5NdG4wKy8wLy9QQ0R6K2U3Y09IQ2hRc1hkdTNhcGZ6VUxyNk1N
aTZNenZObHJIL3NNZmJhNi9XMjVLeXFKYlV0T2F1YWM1NXJ5VmxWUVdycGdRTVZwSFo1enFx
WXQ1dUlQbmFJRi9FNktWNGFoUy9qcDU5KzJ0VFUxTm5aK2M0NzcvajkvaSsvL0ZMNXFWMThH
V1ZjR0ozbnk4alh5bXRKYllYd0dCb2FJa3Yya0NWNzR0cEhBSUJabUNHdGR2RmxsSEZoZEo0
dlk0V1dwbGZsUENlajZXNWJmMFM4VVpaRXZOYTBhODE2dXUxK0k0M01oZEY1dm94YzB5K0p1
SmZ3RjB6S2thY0Q0R0RNVUZkY24yNVJNYzJTU2sxbjhrMlc3Sm56NEVZdTVjalR6V3NYOFZy
VEx1STFLbXdDYnRSMCs4RDFtZ3U2OGpHRVBCMEFSMk9HRExwUjArM3pQYStwNmNqVHJXa1g4
VnJUTHVJMUttd0NEdEgwQlBWbEpFdjJzTmZGSzNhUUpYdFV6M3g3M1B1Slp6empPZWJQRWZz
eXdqOWRqWDIrNTVHbkR5R1BzNnBkeEd0TnUvQmxqQ1ZZVHdjQUpCQ1JDUjM4MDlYWTUzc2Vl
Zm9ROGppcjJrVzgxclRyMGp5ZFg1bk90elEwTk9UbDVTVW5KK2ZtNWpZME5GQjMrRElpVHdm
QXpVU21uL2IxVDFkcStyaHg0L3grZnlnVTh2bDhHUmtaMUNXK2pNalRrY2RaMVM3aXRhWmRW
MS8zb3RUMGtwSVN2OS9mMDlQajgvbkt5c3FvUzN3WmthY0Q0R0lpVTA0N2VnTXdsSnArNE1D
QmNlUEdFVUxHalJ0MzRNQUI2ZzVmeHJtTDE3UFhaTW1ldVl2WHMrYzVEMjVrci9uMm1MZWJp
RDUyaUJmeE9pbGVHb1V2bzMzOTA1V2FQbTNhTkw3MmN2MzExMU4zK0RJaVR3ZkF6VVNtbklt
aDZabVptWHp0WmZ6NDhkUWR2b3hreVo1TC85NEk2K21XdDR0NHJXa1g4Um9WamdnN2Fyckts
NUZTV2w5ZjcvRjRrcE9UcDA2ZCt1YWJiMUozK0RKcWFqcnlkQUJjUWt6azFCYWFiaEtKbUtl
ei95S05QTjM2ZGhHdk5lMGlYcVBDc1FDYWJpUElrajNNTUIxNU9nQXVKREtocys5MUx6RW5F
Zk4wVWRPUnAxdlRMdUsxcGwzRWExUTRGamhUMHhQWGwvSCs0cG9LVWd0ZlJqemoyVzNQRWZz
eXFuQ21wak1TTVU4WEg4alRyV2tYOFZyVEx1STFLbXdDYnRSMG02QjN1UXZXMHdGd0NaRUpI
ZGJUMWRqa2UxNVAwNUduVzlNdTRyV21YY1JyVk5nRTdPTExPREF3c0hMbHlzbVRKeWNsSmJI
dGp2ZGw3QmdLazZkejBZOTNUd0VBcGhDWmZ0bzNUMWRxK3FwVnE2WlBuOTdlM2o0NE9NaTJP
TjZYc1ZibkVrYWVwL01Dc1czWG1tTHlKWkhIV2RNdTRyV21YV3Z5OUo2ZW52ZmVlNitwcWVu
czJiT3FqK3lpNlI2UFIvWGZPaHp2eTZoM1dUcC9WQmhxT2dBZzBZbE1PWm1nSHp0MjdMdnZ2
dHU5ZS9mNTgrZVZuOXBGMDVPVGt4OTU1SkhSbzBkN1BKNGRPM1pRRi9neVZwQmE3c1ZJdEh3
WmwrZXNJdkJsUkx5STE0bngwaWg4R2Q5OTkxMHUxOTk4ODAxTFM0dnlVN3RvK29RSkUzdytI
L05sdlBycXE2a0xmQm1ScHdQZ2NpSlRUcFZXZi9ubGw4cTNZVFI5Mzc1OStmbjVTVWxKbE5J
RkN4YlUxZFZGMWdsTmxKbytmLzU4bjgvSGZCbXpzN09wQzN3WjlhU2NyNmNiYTdyYjFoOFJi
NVFsRWE4MTdWcmp5eGo1YjZUWFgzLzlybDI3bVBoKzlkVlhVNmRPamF3VEtrUmZ4cTZ1cnAv
ODVDZXBxYWw1ZVhsc1lkM3h2b3hoTG5xNThrSjFBSUR6aUV3L28vTGFUVTFORFlWQ1RIYlBu
VHVYbnA0ZVdTZXN3V0Y1dXJHbXV5MnZRYnhSbGtTODFyUnJkLy8wTys2NFkvUG16WVNRcnE2
dUJRc1d6Smt6SjdKT1dBUHlkQUJBQWhHWjBFV2w2VjFkWGZmZGQxOTZlbnA2ZXZxY09YTysv
ZmJieURwaERjalRveWxwODd3RzhVWlpFdkZhMDY1TDd5T05PWW5veTZqcHhhajViSWZlNGhu
UGVJN3RjOFMralBhOWp6VG1JRStQcHFUTjh4ckVHMlZKeEd0TnU1Ymw2WU9EZzZwRkdJYTJw
aE45b3VtRTJXQTlIUUNRUUVTc2RmMzkvVWVPSFBINWZPZlBuMjlxYWxKK2hEemRvbUppU2VU
cERPUngxclNMZUsxcDE0STh2Yk96czZXbHBhMnRyYXVycTZtcDZjaVJJOHBQN2VMTHlGaTVj
aVhmNkhoZlJ1VHBBTGljeVBUem80OCtVbm04S0lubjJvdXF0cmEydGttVEp2R05qdmRsUko3
T1FCNW5UYnVJMTVwMlhYM2RpMUxUdTd1N2k0dUw5KzdkeXpjNjNwY1JlVG9BTHNjTVhiV0xw
aTlkdXZURkYxOVViblM4THlNUkhCbkpsYjZNL0RtMjdjWXJYcjFuK1BZaFhoZkdTNlB3WlRS
R1Y5T1p0bHEyOXNMK3ZaR3lGY2Y3TWlKUEI4RGx4RkJPT1hiSjA4V044R1hFZXJxcDdTSmVh
OXBGdkVhRlRTRE8xNzJJdVQ5L0MxOUc1T2tBT0JzejFEV01wbS9mdnQzajhTZ1hSc3pvUkt4
QW5oNU5TWnZuTllnM3lwS0kxNXAyN1o2blQ1Z3dZZHUyYmYzOS9XYTBIWE9RcHdNQUVnZ3pa
RENNcG1kbVpnWUNBVE1hTmdQazZkR1V0SGxlZzNpakxJbDRyV25YN25uNnM4OCt1M0xseXU3
dWJqUGFqaUh3WmNRem52R2NXTThSK3pJYUUwYlRHeG9hUm8wYTVUQVBMNXQ4enlOUFp5Q1Bz
NlpkeEd0TnUzYlAwN096c3hzYUdyQ2ViZ1pZVHdmQTVaZ2hnMkUwZmR5NGNWaFBqMGt4c1NU
eWRBYnlPR3ZhUmJ6V3RHdjNQTjJrOVhSeEphZSt2cjZ3c0RBMU5iVzB0TFNscFlYQ2x4RjVP
Z0JPSjdhNnlnaWo2Wlo1QXp6d3dBUHQ3ZTNkM2QyYk5tMWk5LzNEbHhGNXVxbnRJbDVyMmtX
OFJvVk53SGJlQUNkT25QQjRQQlMrak1ySEJoTHZ6Z0lBWW84WnVocEcwNU9Ta3N4b2xTRnEr
cWxUcDhyTHkzZnUzRW5oeTZqY3ZvSEF4dzd4SWw0bnhVdXQ5MlZrVEpreTVlelpzN0Z0a3FQ
UzlOYldWby9IczJYTEZ2WVd2b3o4NGZWNjQ5MVpBRURzTVVOWHcyajZpeSsrK05CREQxMjhl
TkdNdHBXYVhsMWRuWjJkdlh2M2JyNEZ2b3o4VVV0cVk5aXVOY1hrUzJLOTFacDJFYTgxN2Rw
OVBkMmszMGpGT2xWYkxsNjhDRjlHWTAwSEFDUTZNWkZURmZIOGpUVG1PRFZQcjBDZWpuaWpM
b2w0clduWDdubDZZdUhVUEYxVDB3RUFpWTRaTWhoRzAvZnQyNWVmbjgrdWZsbXdZRUZkWFow
Wm5ZZ1Z5Tk9qNmFITjh4ckVHMlZKeEd0TnUzYlAwNisvL3ZwZHUzYXhKZSt2dnZwcTZ0U3Ba
blFpZWh6dXkvaCtjZHg3aTJjODR6bTJ6L0h4WlV4TlRRMkZRa3pUejUwN2w1NmVIdHZtWTR0
VDgvUWhyOFk5UjI3TGE2eU1WM21UbHh2aU5iVmR4R3RVMkFUQ2FQb2RkOXl4ZWZObVFraFhW
OWVDQlF2bXpKbGpSaWRpaFZQWDB3a3NYNndGTis0Q2F6QkRCc05vZWxkWDEzMzMzWmVlbnA2
ZW5qNW56cHh2di8zV2pFN0VDcWZtNlpxYTdyYThCbmw2bENWeGZLMXAxKzU1dWttSVY3dkx1
REM2MXBjUmVickZJRThIMW1DR3V0ckZ3MHZHaGRHMXZvekkwODFvRjNtNk5lMGlYcVBDSnFD
cjZSOSsrR0ZoWVdGS1NrcGhZZUZISDMxa1J0dEtUWmR4WVhTdkx5UHlkR3RCbmc2c3dReGQx
ZFgwb3FLaWwxOStPUkFJdlB6eXl5VWxKV2EwcmRSMEdSZEc5L295THRrREh6c3I0NTM3ZEk2
cjRuWGI4YlZEdk5SNlg4Yms1T1Nlbmg1S2FTZ1VVZ2xvckZCcXVvd0xvMnQ5R1pHbld3elpR
SkNxQXdzd1ExZDFOVjBwdUxIOTkwYWExY3E0TUxyV2x4SHI2V2EwYTd5ZXpqWGREZkdhMmk3
aU5TcHNBa2FhcmtsTVdoWHJsSEZoZEswdkkvSjBpMEdlRHF3aEpuS3F3bzBlWGpiNW5rZWV6
ckJoSG9jOFBZWWxFYTlSWVJOd282YmJCT1RwdGdWNU9yQUdNMlRRalpwdWsrOTU1T2tNRyta
eHlOTmpXQkx4R2hVMkFZZG91ck45R1l0WDdJaDdiMTMxVERhUTRnM3d3c1N6dWMveDhXVk1M
SkNuUjlORG0rYzF5Tk9qTEluamEwMjd5Tk5qQ2RiVFFVekFlanF3QmpOazBJMmFicFB2ZWVU
cERCdm1jY2pUWTFnUzhSb1ZOZ0c3YUhwRFEwTmVYbDV5Y25KdWJtNURRd09GTHlQeTlQaUJQ
QjFZZ3hsYWFoZE5IemR1bk4vdkQ0VkNQcDh2SXlPRHdwY1JlYnJKN1NKUHQ2WmR4R3RVMkFU
c291a2xKU1YrdjcrbnA4Zm44NVdWbFZINE1pSlBqeC9JMDRFMW1LR2xkdEgwQXdjT2pCczNq
aEF5YnR5NEF3Y09VUGd5d3BjeGZ2SE9mVHFIYkNEdWlkZHR4OWNPOFZMcmZSa3RadHEwYVh6
dDVmcnJyNmZ3WlVTZUhqK1Fwd05yTUVOTDdhTHBtWm1aZk8xbC9QanhGTDZNV0U4M3VWMnNw
MXZUTHVJMUttd0NkdEgwK3ZwNmo4ZVRuSnc4ZGVyVU45OThrOEtYRVhsNi9FQ2VEcXpCREMy
MWk2YkhCT1RwMGZUUTVua044dlFvUytMNFd0TXU4dlJZZ2p3ZHhBVGs2Y0FhekpCQk4ycTZU
Yjdua2FjemJKakhJVStQWVVuRWExVFlCQnlpNmZCbHhITU1uK0hMaUdjTG51SExHQjdrNmRI
MDBPWjVEZkwwS0V2aStGclRMdkwwV0lMMWRCQVRzSjRPekVDY1ZHYklvQnMxM1NiZjg4alRH
VGJNNDVDbng3QWs0dVc0UzlNSEJnWldybHc1ZWZMa3BLUWtRZ2lGTHlQeTlQaUJQQjJZZ2Jz
MGZkV3FWZE9uVDI5dmJ4OGNIR1JiNE10b2t6eGROUkhka01jaFQ0OWhTY1RMY1plbWV6d2Vu
OCtuM0FKZlJwdms2Y1BOV0IyUTVEb2dCR0JEM0tYcHljbkpqenp5eU9qUm96MGV6NDRkT3lo
OEdWWGJuODZKVmJ2RGpaYzdGRXJXUmpZUTF0dkU5ZTJETHlQaU5TTmUxVm5zY0YvR0NSTW0r
SHcrNXN0NDlkVlhVL2d5cWg1eFRCc0o4blFBWW9DNzh2VDU4K2Y3ZkQ3bXk1aWRuVTNoeTNq
bHcrdjF4cXJkNFJhckpiWERxNDBROWpXUXVPdXRXRStQWVVuRXkzR1hwbmQxZGYza0p6OUpU
VTNOeTh0akMrdndaVlErVk1KcUpjTnR1cGJVeHJHM01RRjVPakFEZDJsNlRIQndubDRocUtS
dDgzU3U2WW1ieHlGUGoyRkp4TXVCcGc4YkIrZnBvcVpiQnZKMEFHSUNOSDNZSUUrUHBvZGlN
VFlGa2FmSHRsMGJ4bXRxdTRpWEEwMGZCbzczWmF3Z3RYSG80WVppc29IVUZOY01hNithNHBy
YWVQUTJ0bEhEbHhIUE1YOG1HNGh5QzN3Wnc0TThQWm9laXNXOFhpL1pRTnlXcDdNa0hYbDZy
RW9pWGc3eTlHR1RRT3ZwWkFNWjN2WHA4YmlWdEpiVWRneXBOVjFtcjRSZVQxZHBPZ0N4QXBv
K2JCSW9UemZRZE0wOFhkUjBDL0lhcHM3R2VibzRUWkduRzJPM2VNMXVGL0Z5M0tqcEsxZXVa
S2FNMU9tK2pMV2tOaUh5OUxCSnQ0R21KeWpJMDRGSnVFN1QyOXJhSmsyYXhEWGQyYjZNQnBw
dWh6eWRpWnBNbmk3S04vSjBZK3dXcjludElsNk91elM5dTd1N3VMaDQ3OTY5WE5PZDZzdkk5
S0xDM25tNmdhYXJNTkQwQkNYaDh2UUU2cXJMY1plbUwxMjY5TVVYWDZTVWNrMTNxaS9qM0tk
enZGN3Y4cHhWWkZpK2pJdlhSOW51c09KbDNvcTFwTFlsWjFVdHFUV29UZlVwMjlLU3MwcStY
YnY1OXJIWUU4aVhjZG5UczZPSjEreHh0dHZ4aldPODd2SmxaUC9laUVPZDY4dm85WHByU2Ez
TjgzU3YxOHY2aVR6ZC9pVDBhTHNLZCtYcEhKNm5POVdYa1VtZWdhYmJZVDJkcS9tbHJpcm1J
dGJUbzJ3MzV2SFdsTlRFc0VMN3g0djFkR1BzcStsTzlXVzhKSGxlVzErZmJxRHBZa25OZlUz
dW9Ja2dUd2NtNFZKTmo0WkV5ZE9ORjE3TXk5T05wY280VDlmTFc1R25EN2RkNU9uV3RHdkRl
S0hwd3lZaDh2U0tpQmJUbzgvVHlRYkNWc25EWnFEOGlwZUt5dytEMU5VWmVib3lPaDVzb3FU
cXRZWi9TQUU3d0E0UU5IM1lKRVNlSGxiVFRjclR1VkxyL1M4NlhrelU5RnBTeTc4UFZKZXg2
Mm02cXFRQk1ubWNmRzFET2lNamFyUjRQYjd5TmQ5aS83eTFwcVNtWXlpOHB0c3dielcxWFZ2
RkMwMGZOZ25reTFoQmF1OHZyaUhTam93L1BrZm5GT2oxZXU4dnJxa2d0Y1kraThVYmlvY0lZ
U1haYy9IN3hiV2tscmt0cmxtelJsV25XTnVsdlRZVUQxMzJPSXpld1M1NmwwUlZUNVRPaTh4
N2tudEpjbDlHc2VjeDcxVk1ubXZESFZPN1BjZDMzT0xTT3BzNThHVWNOaEhrNlpMcnk1SzF5
WlNNT0U4WDAwek5KUUpWdnNsTEt2TnVnKzd4U3kxL1hIanBJTXFFWFZ4Mkg3cHlHUGx5RFd1
WC9TZFZnM0UyeUd1VURVV1RUMmtNRkNIdm55cTV0SVVRNVhxUlFaNnUvTWc0OFRjSXg0dzhY
V2F4Sys1NXEzSm1XdEN1d2U4bGVzV01sN0NRcDhlQkNOYlRJMWcybFN5dlZ5eXl4WFN5Wk04
UXVhS3JvcmlJaXFOOGhOVjB4aFhGT29oSzAxWFh3TlR5Mm9oYTA5bnlDMStIMFJ0blplY05R
bEJWb2hvSDQ2T2dYRTNTZkt1NkRGL1Y2SlhWYVdpNnpCUXlkYjNiZ2g4d1l0Si9BMDAzZFh6
azJ6S3ZHOUQwQ05IVWRIRTBXZjdJUDlYTHZQajZzbkd4a2cwbHh2bXlxdDJ3MnEyWHB5c2xp
V3dnSlJ0S2hnaGhPZVlWSFJOMHAyUkRTZTJWMHF3WEw5bEFWQms2ZXlnMzhuaUgrRFU4Vjhv
ZjEzVFc3cVdQaU1ib3NkZHpWdWFveDVhb0EyRzFzWGcxS3hISFdYblV2RjZ2TW5EV0s3WU1y
ZFIwMVY2c3ZQTDRLb2ZhNi9XcWdsS09qQXJsZWpkdGF4T25pbDRVTXZKblFaNnV1VjR2bjdl
U3kzOFA4ZHBVVVhpOVh0WGZuUWJ5S2grSWFnQTFhMVlXTTlaMHBXNm9VUGJjNFBpS0I5b01H
YlNMcHRmWDF4Y1dGcWFtcHBhV2xyYTB0TkJJZlJuRjRZdnlJVXFrWmhtWllwZHE2eGoybGVs
c2w0ckwwc004elZXL1lmS1BLa2h0eHhEaFpYaDVQVTFYUHJqMkdXaTZNdDRLaGFiL3VNYmlK
VVBlSDF1dlVDcW1ZcFZEYkoxMW00VXdSSWd5TGpGZXljT25HaXZXZ1FxZEI2dVdLUTZMam0z
aHZ3K0xxVDN2dG5FM1ZCM21vc2FIWFhYQ0t3ZUVYUGxOb3lwRHJ2eWJRMDlFTkN2Uks4RGpW
ZlZmVDh2MFpPdUthYThZQkRHckVBK29ja2hWYWl0NTZEVzZKSGVTUnY5UU5hUTNYUjJ1NlE4
ODhFQjdlM3QzZC9lbVRadllmZitSK1RMV0NpYzhreHYrMXV2MXZuK3FoRjMrd1EvQWoxcERM
dVZmUTRTdzlFZXBJRnhyT29aK1ROUFdyRm5ERllIdHlCNnNHS3VRRlQ1VlV2S2pVQTRyVDcr
czZjckgvU1UxZXRxa1daSzFPK1FsUXgySzFRWkZSc3k2cDFMelMzc3BaTDNtY3J0TWZKWEtl
Mm1RTDM4TjhKTDhVNjZuYkVEWU04M0pNZEJadlhpVjN5dEs1V1VMNVdIbFcyOEEyWUhqaDd1
QzFKNHFLUkcvbnpRZmJGNnBqcnR5YnJBdGMxYm1LS2NmRDRIdnlEYnl3OEcvRGxsMHJCaWZ0
ME9Fc0VDVSs3SmlGZnhmbWhEaTlYcjVuMDJzSkN2RGVzZ0ZsSTFlN1pXVG1idEVxQ1JKL0R0
TWVSN3hIaDV2eXhFSHR2YnlhUE12Uzk1dTdlVmpwL3dlVlo3Q2E5YXNxVlZNQUhXWmNPa0FB
Q0FBU1VSQlZQWnA3ZVdycy9nNHN3RmtKVlc1Z25KZmZueDVaN2d4QmcrZm43K3FBVlRHeTdm
VG5CemVCRzlYVkhiMlY0c1pXbW9YVGVlY09ISEM0L0hRU0gwWkpXVXVqbyt3bXE2ZHAxK1pM
RWZlcmtSVlExY0t1dkdPeWkrYlMyZDRMSG9iNTJPazBIUTg4SWorb1Z5bDVCdGRvZW1uVHAw
cUx5L2Z1WE1uamRTWGNYbk9xZ3BTYS96OC9Pdy9oUzJ6UEdmVi9TVTFNYXlObDV6N1JnN3BJ
SFBmeUNIeXZvd2RaTzRiT1RGcnQ0TVl4RHQwdVl6ZXM2cGRzVGJlVzhrZVZ1VThaOFk0UjNO
ODV6NmQwekZFVEdyWGh2R2EyaTdpVmM0cjVSYUgrekpTU2x0Yld6MGV6NVl0VzlqYnlId1pL
K0w5aFJ6MjhXUGFPOHc4ZmNnYlZlWW9tYWZyWmVoNisycHVTZlE4WFdZdENBODhodnZnYTJL
WDNqbzdUNit1cnM3T3p0NjllemZmRXBrdm84eklTcTVFeDdaWXhaWHIyZ2FhcnIyZUxnamwv
U1UxdklCeXUrYksrMUM0SlJTTjd1azhsUEhxcVR6YnlOb04rMVZVbGZPY0dlT3NQcDJ1L0ZW
QXBrSTJrbEcyYTAyOFF4SmZvaWJONXdqaTFleHR6TnUxVDd4NkQ0ZHJPcm1TaXhjdlJ1akxL
Snk2b3NacGJtUlhhNGdibFNVdlhhOHQ3Q3NLcTBHN1YwaWs4cTFPZW03R1kranlReU5laVR5
ZHg2dlVkRDU2eWxaNEFkNlc1bGlwZXNMZWlvZmowblg2M3ZESFYyUGZLNzkrcmhqenl5OVUx
K09UeXo5Tjg3bWhtZ3lhRTBhMVVXOWVpZkhxelVuMTRJUUx6YmhkWlcyNjdXck9EUzBoRmt2
cXpTdmx3TEszZXFNbkRxRE04ZFdOMXlzUnI4UXgwanZvbXZ1cW1oaTY4aFQ0Y2J1ek5UMG1Q
UFhVVXpLS1Z2SitpZlhGNUV2T2VYQ2pXdTR0YVRmNllrd3lkRXZxUkhRcFhzdkgyYUNZVWl0
amYzenJjb3dIaEcyL29qYit4Uk5OdkN0MkdCVzQvUFdtMGE2cURDOTV1Y0pMcVlEZThlWHhH
alN0R1lWbTY4cEFZaklzY3JNMGt1TXJWRnVoTk5udWNNMTFMOUVncWVsNDRHSDhxSkJZZzhJ
RGorRStWUE1LbWg0ZWgrVHBZZk1hYzlwRnZJZ1g4Vm9XTDRHbUc4TjlHVWtIS1g2L0dNOTR4
ak9lYmY0TVg4YndJRTlIdklnWDhTWkV2QVI1dWd4WVQ4Y0REendTNVFGTkR3L3lkTVNMZUJG
dlFzUkxvT2xVMHBkUmJqVHh3QU1QUE9MNzRKcGUvK0NEMzMvMVZheDBNcEUwWGNhWFVXWW9u
ZkU5NzdhOEJ2RWlYaWZGU3hTYTd2VjQxa3lmL3NGTEwvVjFkMGV2azRtazZUSytqSktqaVFj
ZWVPQVIzNGRTMDlsancvLzVQMzk3NTUwb2RUS1JORjNUbC9IbzBhTlBQUEhFaW1YTEhydnZ2
djk3NjYyUEwxejR4Qk5QR0QvLzd2Nzd3NVo1Zk9IQzMvem1OekdzVGI1azFTOStFWmQyRVMv
aVJieVd4ZnY0d29WTXRaYi85cmMvYXZxdHQvNXR6NTRvZFRLUk5GM0dsMUdtbmkrLy9OTDZZ
dklsdTk5L1B5N3RJbDVyMmtXODFyUnI4M2lWc0xXWDkvLzhaOWV0dmNqNE1zclUwOVBUWTMw
eCtaSVhObTJLUzd1STE1cDJFYTgxN2RvOFhpWDFpeGQvMzlrNTNMMzBTQ1JObC9GbHRMNVhN
YWYvN05sNGQ4RlNFSyt6UWJ3V2swaWFIcGIyV1AvSEVBQUFTQ3djcGVtSkFpRWszbDBBNW9K
RDdHenNmSHloNlNiQy9yL0hxRkdqcGsrZi90eHp6L1gzOXhzVVU4NlMrdnI2d3NMQzFOVFUw
dExTbHBZV1pXSHh4cXV3dDJJQmt5Q0UvTmQvL1JkLyt4Ly84Ujk2cC9xd2pob09zVTJRUDc2
Mk9vV2g2U2JDam5GdmIrL0hIMzk4NDQwMy90dS8vVnZZd293SEhuaWd2YjI5dTd0NzA2Wk5x
aXQ4eEJ1dnd0NktCVXlDRURKNzl1ekJ3VUZLYVc5dmIybHBxZDQ1UDZ5amhrTnNFK1NQTHkv
UFg4ZnhGSWFtbTRqeUdIZDBkRng3N2JYaWRzM0NuQk1uVG5nOEh1V240bzFYWVcvRkFpWkJD
UG5qSC8rNFk4Y09TdW5telp1ZmVPSUpmcGhVUjFQbXFPRVEydzM1NDJ1dzBmcFRHSnB1SXNw
ajNOdmJtNUtTSW03WExNdzRkZXBVZVhuNXpwMDdsUnZGRzY4MGI4VUNGa0FJT1g3OGVFVkZ4
ZURnWUdscDZjbVRKL1hPK1dFZE5SeGlteUIvZlBVMnh1VVVocWFiaVBJWUh6MTZOQ2NuUjl5
dVdaaFMydHJhNnZGNHRtelpvaW9tM25nVjlsWXNZQkxza04xMzMzMi8vLzN2Zi9HTFgxREZR
VlFkeldFZE5SeGlteUIvZkRVM3h1c1VocWFiQ0Y5UFAzVG8wT3pacy9sNmV0Z0pVVjFkbloy
ZHZYdjNickdZZU9OVjJGdXhnRW13US9iKysrOFRRdmJ0MjBmMXovbGhIVFVjWXBzZ2YzekZq
WEU4aGFIcEpzSitDaDg1Y2lTNzdxV3ZyNDl2RjRzcGZ6cFhiYmw0OFNMZlJienhLdXl0V01B
a3hCTmI3NXlYT1dvNHhIWkQvdmphNmhTR3BnTUFnSE9BcGdNQWdIT0FwZ01BZ0hPQXBnTUFn
SE9BcGdNQWdIT0FwZ01BZ0hPQXBnTUFnSE9BcGdPM1kyek1CRUJpQVUxUFlIcDZlcFl0VzNi
MTFWZVBIVHYyK2VlZmozZDM3QTRoNUlVWFhxQ0dwcW1BMDk3ZVRnakIvNW1Sd1ZaVEM1cWV3
Q3hmdnZ5KysrNzc1cHR2dnYvKyswY2ZmVFRlM2JFN2hKQ0Nnb0xCd2NIcDA2ZkgvY1N6UDJ2
V3JCa3hZc1NhTld2aTNaRUV3RlpUQzVxZXdFeVpNa1gxdjh5VjgwbDVIL1B5NWN2VDA5UEx5
c3JFWXU2QkVITExMYmVzV3JYcTFsdHZWUTZPYXRCZWZ2bmw4ZVBIWjJabWJycjh6NExkT1Z4
MzNISEhndzgrZU1jZGQ3QzNaV1ZsN0g4N05EYzN6NXc1azFMYTF0WldVRkNRbHBhMllzVUtZ
eU1VeHlOT0xUYXZVbEpTK1AvRStQM3ZmLy9yWC8rYVV2cXJYLzFxeVpJbGZNZVlkd2FhbnNB
a0p5ZXIvbmVTbnFhLzhNSUxnVURnb1ljZXNyUi9Ob01ROHNZYmI0d1lNV0xyMXEyYUE4VmVy
MSsvUGhnTU5qVTF1ZGtCTVJBSWpCa3o1cHR2dmhrelprd2dFS0NVcmwyN2x2OERoM1hyMWxG
S1MwcEtObTdjR0FnRU5tM2E1RTRwNStoTnJmNysvbjM3OWsyYU5JbFMydGZYZCtlZGQvN2hE
Mys0ODg0N3VmV1RHVURURXhpRFBMMnZyMCtwNmIyOXZWWjN6bjRZNkxqeXRaN1ZtcXRvYkd6
ay9sT05qWTJVMG5QbnptVmtaSHo1NVpjWkdSbmZmZmNkcFRRbEpTVVlERkpLZzhHZ204ZUth
azJuOWV2WGV6eWVFU05HRUVLU2twTFlSMjF0YllTUXRyWTJVenNEVFU5Z3FxcXE3cnZ2dmxP
blRwMC9mNzZxcW9wU09tSENoTjI3ZDNkM2QyL1lzTUhsZnc2TFNHcTY1bXUzc1dUSkV2YXIr
L1BQUDg4WENpb3JLMis0NFlaNTgrYXh0OFhGeFgvOTYxK0R3ZUIvL3VkL3VubXNxTmEwU1V0
TGEycHFDZ2FEUHArUGJRa0dnNldscFhmZmZYZHBhV2wzZDdkNW5ZR21KekNoVU9qaGh4K2VN
R0VDdis2bHVybzZJeU5qL1BqeDY5YXRNOUIwZDU2QjRvbW5hWkVxbG5maGNPWGw1UjArZkpo
U2V2anc0Ynk4UExheHVibVpFTkxjM016ZXRyYTI1dWZucDZXbFBmNzQ0eU5HakdBYlhUaFdW
R3ZhUFB2c3N4a1pHUmtaR2F0WHIyWmJGaTFhdEdEQkFrcnBQLy96UHk5ZXZGamNNVlpBMHdF
QWtUTXdNUERXVzI5Tm56NDkzaDBCbDRDbUF3QWloQzBXNStYbC9mZC8vM2U4K3dJdUFVMEhB
QURuQUUwSEFBRG5rQmlhN3M0ZlhnQUFZTGdNVDlPSkRwb2xrNUtTcnJubW1qLzg0US9zSWxZ
cjZlenN2T21tbTBhT0hIblRUVGQ5OWRWWEZyZHVHZUw0TnpRMHpKZ3hZK1RJa2VYbDVlKzk5
eDdia3BlWGw1eWNuSmVYdDMzN2RzMTZHaG9hUEI1UGFtcnFqVGZlZVB6NGNVcnBsaTFicnJ2
dXV0VFUxSmt6Wis3ZHU5ZWFjTXhHSEM1eFN5Z1VldVNSUjdLenMvVW1OdFVhWk9OeklSSFJD
OGZyOWZLTjRyU1JxVWM1VmxsWldTYjEzMkxFS1NGS2tJd29pZWVkeklSVU1YeE43eEFlT3Bv
K09EaDQ4dVRKK2ZQbi8vR1BmNVRwU2d5Wk8zZnVpaFVydXJ1N1Y2eFlVVmxaYVhIckZxTWMv
OHJLeW82T2psQW90SDM3OW9rVEoxSktNekl5ZHUzYUZRcUYvSDUvUmthR1pnMVpXVmt0TFMw
OVBUMCtuKy9uUC84NXBYVHUzTG1IRHgvdTd1N2VzbVdMdzI2bk5MNnlzNnFxcXF5c3JLT2pZ
M0J3VUs4R2NaQWRJK1VxVkhGOThza25URnpZVzNIYVNOYkRXTEpreVpOUFBobkQzc1lSY1Vx
SUVpUWpTdUo1SnpNaFZaaW82ZXpGeVpNbjJhMnhIMzc0WVdGaFlVcEtTbUZoNFljZmZzaksv
T00vL3VPOGVmTnljM1BaalF6c3UwaHBrc0EzS21zV0hUbFVaR1ZsblQ1OW1sSjYrdlJwaDBt
U2lEait3V0N3dnI2ZVhWNVdXbHJhM056YzA5T3plL2R1WnRNaGtwV1Z0V2ZQSG5aeWpoOC9Y
dm5SeVpNblUxTlRuWFFicXJHbVQ1NDgrZDEzMzVXcFJ6bkloSkNNakl6MDlQU2YvdlNuSjA2
Y2lHRnY0NHZxTDVpaW9xTFhYbnROcWVsNjA4YWdIc2IzMzMrZm1abloxZFVWOHo3SEVlV1VF
Q1ZvV0tMRXp6djVDY2t4WGRQNysvdFRVbElvcFFVRkJhKysrbW93R0t5dXJpNHNMR1JsdUov
bm1ERmorTDVLa3dSVmJWVE9rV1BFaUJFREF3TzMzSEpMZjM5L2NuS3l6RUFrTHFyeDUzL1ZI
ang0a0ZMYTJ0cWFtWmxKQ01uTXpOUzdLYm11cnU3YWE2OGRQWHIwNDQ4L3JoeXViNy85dHFL
aXdtR09qOGFhbnB5Y3ZHTEZpdlQwOUp5Y25HM2J0aGxVb2h4a3h0bXpaNnVxcW02NjZhYVk5
emxlS0VmbXNjY2UrOFV2ZnFIY3FEZHRqT3RockY2OW10MkE0eGhVVTBLVUlIbFJVcDUza2hO
U2lYVjVlbkp5TWx0WUR3UUNUT1dKNHM0OW9tK1NRQVZORCt2SWtaV1ZkZWJNR2VyV1BEMFFD
R3pkdXJXb3FJaFNtcCtmNy9mN1E2R1F6K2NyS0Nnd3JtcnYzcjFUcGt4aHJ3OGVQSmlibTd0
aXhZcUJnUUV6dWgwdmpEVTlNelBUNS9QMTlQUzB0TFFZci9ZcUI1blQzZDJkbXBvYXc5N0dG
K1hJc0xOU2M1MWRPVzNDMWtNcDdldnJ5OG5KTWR2MnhIcVVVMEtVSUVsUlVwMTM4aE9TWSs1
Nit0ZGZmLzNMWC82UytVVm81dW1xWjlFa2dkY1c5cldTKysrLy84a25ud3lGUWs4KytTUkxM
aHlNY2hBV0xWclUyZGtaQ29YcTYrdlpuOFBqeG8zeisvMDlQVDI3ZHUzU1cwK25sQTRPRGg0
OWVyU2twSVQ1eHRUVTFGUlVWTEFsTW9kaHJPbjMzbnN2UDRYMFRqeHhrQmsvL1BERHFsV3JL
aW9xWXQvcE9HR2NybEZoMmtqV1UxZFhOM3YyN0ZoMTBnNklVMEtVSUJsUkVzODdtUW1wd2tS
TlQwcEttamh4NHU5Kzl6dm0xYmx2Mzc2Q2dvTGs1T1NDZ2dLK25xNTZGazBTeUpWUU9VMC9j
ZUxFckZtejJDL3luWjJkTWdPUmlJaURVMXRibTV1Ym01S1NVbFJVNVBmN0thVjFkWFhzVDUr
cFU2ZlcxOWZ6SGNWNnNyT3pseTVkR2dxRnhKb3ZYcnhvZVhDeFIzTXVxYlljUDM1ODFxeFpL
U2twSG8rbm9hR0I3NmlzUnh4a3R2dW9VYU51di8zMnp6Ly8zUExJWW84NE1zcVBsR1dVMDRi
cVRDMVZQYk5telpKY1JrZ1V4Q2toU3BDbUtCa1AxOFdMRnpVbnBERm1YY3NJQUFEQWVoTGpu
aU1EOEFVREFBQ2NoTmQwQUFBQUhHZzZBQUE0QitzMFhXWlZCQ3NuQUFBUURkYjlSaHBEVFlm
MHl5QnpkUFE4S0pTMkhtNUF4b3RETENQanBaUFFpR1lqTWtaQVlobUgvZFlsaGlQT0JMMkJN
ajZ6WXVLOE5IeE5YN0pIL1lDbTJ4ampzZEwwb0ZEWmVyZ0JTUzhPVlJrWkw1MkVSalFia1RF
QzBpdmpzQm1sREVlY0NacURFUGJNaW9uemtsbWFmdWpRb1prelp5WW5KeFBGMWF3cW41YWpS
NC9lZlBQTnFhbXAwNlpONC81MmxOS3paOC9lZHR0dG16ZHZwam91TWFydlNiR2VXYk5tc2Yr
YTZMeTdHNGFMOFlra2VsQ0l0aDV1UU1hTFF5d2o0NldUMEJpWWpjZ1lBYW5LT0d4R0tjTXht
QWw4RUdUT3JKZzRMNW1sNlNVbEpldldyZU4zSWxBdG41Ynk4dkxYWDM4OUZBcnQyclZyMnJS
cHJFeEhSMGRaV1JrMzhCTHZQcVhDNUJEcjJicDFLek1GS3k4djM3bHpaOWk0SEl6eGlTUjZV
SWkySG01QXhvdERMQ1BqcFpQUTZKbU55QmdCaVdVY05xT1U0ZWpOQk9VZ3lKeFpNWEZlTWt2
VFUxSlMyTzJqeW4xVlBpMHBLU2s4NDJidUxvU1EwdExTN096czl2WjJWbEowaWFIQ29JajE5
UFgxWFhmZGRkdTJiU3NvS0pEM3FIUWtZZk4wbFFlRmdhMkhnNUh4NGhETERNdExKeEhSTkJ1
Uk1RTFNMT093NmFRTVIzTW1xQVpoV0dkV05NNUxabWw2Y1hIeHVuWHJlbnA2bFB1cVhsZFVW
RFEyTm5aM2R5dTNuemx6WnNlT0hibTV1ZXp2WE0wOGZlVElrVXBIVTdFZVN1bnp6eitmbnA2
dVo4YnJIb3huajRFSGhjUE9RR05rdkRqRU1wSmVPb21MYURZaVl3U2tWOFpoTTBvWmpqZ1RE
QWJLZUJ5aWQxNHlTOU0vL3ZqajB0SlM5dFVrUnNKZUh6dDI3UGJiYjA5TFMrTmZYTHhNVFUz
TnJGbXpnc0dnNkJKREtWMjJiQm5iaTcwVjY2R1UvdjN2ZjgvS3lyTCtYeXpaQjNJbGZLT3lq
SUV4anNQT1FHTmt2RGpFTXBwZU9rNUNOQnRSVFNwbUJLUWFLTEdNNWxSTVhNUnd4Sm1nT1ZC
OGQ4M1hmSzhvblplYzZmY3lNRER3bDcvOFpkbXlaZkh1Q0FBQVdJb3o3eU1saEpTVmxiSFZH
d0FBY0EvTzFIUUFBSEFuMEhRQUFIQU84SHNCQUFEbmtKQitMMEFlR2I4STBjbEV4di9Fa2No
TWFRd1hRMmFzUkFNVGNZdXJDT3Yzb3ZLTmlXQzRocTNwUTE3MUE1cHVaeVFOT2xST0pqTCtK
dzdHZUI1aXVKUVlqNVZvWUNKdWNROWgvVjVFMzVnSWhzc3NUVGZQNzRVN0J6UTNOenZTWk1N
a0RQd2lSQ2NUR2Y4VEJ4TldwekJjbkxCanBUSXdNYkEwY1RZeWZpK2liMHdFdzJXV3Bwdm45
N0oyN2RyNTgrZFRTdWZObTdkdTNUcVpJSUd4WDRUb1pDTGpmK0pnakhVS3c2WEVlS3hFQXhN
OVN4UEhJK1AzSXZyR1JEQmNabW02ZVg0djU4NmR5OGpJK1BMTEx6TXlNcjc3N2p1WklGMU9X
TDhJMGNsRXh2L0V3WVROUFRGY0hNbjFVcVdCaWQ0V1p5UGo5MkxnSUNRL1hHWnB1cWwrTDVX
VmxUZmNjQU56WGdUR3lQaEZpRTRtTXY0bkRzWllwekJjU3NKcXVzckFSSE9McXpBWU1VMEhv
ZUVPbDFtYWJxcmZTM056TXlHRU9hUURZMVJYS0drYWRJaE9KZ1krTU01Rzg0SXVESmNtTW1Q
RlBoSU5USlJiM0lhb2hCdzkzNWhoRFpjei9WNEFBTUNkNEQ1U0FBQndEdEIwQUFCd0R0QjBB
QUJ3RG1acE9oYlpBUURBZXN6NmpSU2FiaFBnOXpJc1pINzJ4M0F4WktaV1EwUERqQmt6Um80
Y1dWNWV6dTRWRDRWQ2p6enlDTHRGM3NFcUlVNGtwV0R5Zis2cWlkSVRKb0twTmZ4ckdUdlVE
Mmk2bllIZlN3UVl6MTRNRjBObWFsVldWblowZElSQ29lM2J0MCtjT0pGU1dsVlZWVlpXMXRI
UjRZWi8vcTQ1a1pZc1dmTGtrMC9xN2FMeWhJbGdhcG1yNlVybkZ0SGRaZTNhdFI2UGgzbkM0
RHZBYk9EM0lvL3hiTVJ3cVRDWVdveGdNRmhmWHo5OStuUks2ZVRKazk5OTkxMExleGRQeElu
MC9mZmZaMlptZG5WMWFaWVhQV0VpbUZvbWFyckt1VVYwZHhrelpvelg2KzNvNkZEZWJnck1B
SDR2dzhKWTB6RmNTb3luRnIyODVwQ1ZsWFh3NEVGS2FYSnk4b29WSzlMVDAzTnljclp0MjJa
aFQrT0FPSkZXcjE2OVlNRUN2ZktpSjB3RVU4dEVUVmM1dDRqdUxtKy8vZlk5OTl3emJkcTBz
V1BIUHZQTU16TGRCUkVBdjVmaEVqWlB4M0F4d2s0dFJpQVEyTHAxYTFGUkVhVTBNelBUNS9Q
MTlQUzB0TFFZTHlzN0FOVkU2dXZyeThuSlllWmNtb2llTUJGTUxSTTFYZVhjSXJxN01BWUdC
dmJ1M1p1ZW5pN1RYVEJjNFBjU0FjYWFqdUZpeUV5dFJZc1dkWFoyaGtLaCt2cDZaaFY3Nzcz
M2NrMTMvUGNmRVc3OW56MTc5ckIyakdCcW1mNGJLWGR1MFhSM0lZUXdjNE9OR3pmS2RCY01G
OVVWU3ZCN01VWTFYSHlqc2d5R2l5RXp0V3ByYTNOemMxTlNVb3FLaXZ4K1A2WDArUEhqczJi
TlNrbEo4WGc4RFEwTjhlbTYrV2hPcEZtelpxbVdtL1N5Qjc0OWdxa0Z2eGNBQUhBT3VJOFVB
QUNjQXpRZEFBQ2NBelFkQUFDY2c5V2FybHg4eDBJOEFBREVsbmorUmdwTmp6bWltVVpEUTBO
ZVhsNXljbkplWHQ3MjdkczE5MnBvYVBCNFBPeTM5ZVBIajJ2VzR4SmtQRXpFd1hHRDM0c1l0
VklCOUs0MEY2ZWZ6SVIwQU9JNUpUTkpZbUlsTkd4TnJ5QzFxZ2MwM1Q2SVpob1pHUm03ZHUw
S2hVSit2NS8vaDBNVldWbFpMUzB0UFQwOVBwL3Y1ei8vdVdZOUxrSEd3MFFjSERmNHZSaE1D
UU1ERTNINnlVeElCeUNlVXpLVEpDWldRaVpxT2lGaytmTGw2ZW5wWldWbGZJdTQ5bUxzQ2FO
WkQ5QkROTk1vTFMxdGJtN3U2ZW5adlh2M3pKa3pOZmZLeXNyYXMyY1BtMy9zeGhCWG1YSm9Z
dUJoSWc2T0cveGU5S2FFc1lHSk9QMWtKcVFERU04cG1Va1NFeXNoY3pYOWhSZGVDQVFDRHoz
MGtIS2o4blZZVHhpOWVvQW1vcGxHYTJ0clptWW1JU1F6TTFQdnB1UzZ1cnBycjcxMjlPalJq
ei8rT1BPVWNKVXBoNGl4aDRrNE9HN3dlOUdiRXNZR0p1TDBrNW1RRGtBOHAyUW1TVXlzaE16
VmRESE5VV2w2V0U4WXZYcUFKcUtaUm41K3Z0L3ZENFZDUHArdm9LREFlUGU5ZS9kT21USkZz
eDczRU5iRFJCd2NOL2k5YUU2SnNBWW00dlFiMW9SMEFQeWNrcGtrTWJFU01sZlRqVGNTT1U4
WUxMdkxJNXBwakJzM3p1LzM5L1QwN05xMXkyRDVjbkJ3OE9qUm95VWxKVlZWVlpyMXVBUVpE
eE54Y056Zzk2STVKY0lhbUlqVFQzSkNPZ0RWT1NVelNXSmlKV1NkcG91WHl2QUNCcDR3WWoz
QUFORk1vNjZ1enVQeE1GT2QrdnA2Vmt6ejBHUm5aeTlkdWpRVUNtblc0eEpVczFUVHcwUWNI
RGY0dldoT2liQUdKdUwwMDV5UXprTThwelFuaVdxNFltSWxCTDhYQUFCd0RyaVBGQUFBbkFN
MEhRQUFuQU0wSFFBQW5JTjFtajZzeTJQNFI4YnI5VmpLQndBQUpkYjlSaHF4L2tMVG8wSEd1
UVYrTHh5WldhMW53ZUgxZWgwOFZ1S3dORFEwekpneFkrVElrZVhsNWZ5dWJ4WGlXRG5TNzBX
MENSSW5rdVNacUJxY0NLNURHYmFtMTVKYTFRT2FibWRrbkZ2Zzk4S1JtVkdhRmh5ZmZQSUpP
MTNON1YrOFVRWllXVm5aMGRFUkNvVzJiOTgrY2VKRXpmTGlXRG5TNzBXMENSSm5nc3c1cFRj
NHR0RDB0V3ZYZWp5ZTVPUmsvaVZEQ0huNTVaZkhqeCtmbVptNWFkTW1YcUZ5ZHoyL0YyWE5y
YTJ0QlFVRmFXbHBWVlZWN0NPeExjQ1JjVzZCM3d1SEVKS1JrWkdlbnY3VG4vNzB4SWtUbW1W
RUM0NVFLRlJVVlBUYWE2ODVmdnFKQVFhRHdmcjYrdW5UcDJ1V0Y4ZksyWDR2M0NaSW5FZ3k1
NVRlNE5oQzA4ZU1HZVAxZWpzNk9ucDZldmkrNjlldkR3YURUVTFOeWxzVGxidnIrYjBvYTU0
eFkwWk5UVTB3R0h6bGxWZllSMkpiZ0NQajNBSy9GeFZuejU2dHFxcTY2YWFiTkQ4VkxUZ2Vl
K3d4ZG8rZjJ6U2RaVkZaV1ZrSER4N1VMQytPbFlQOVhrU2JJT1ZFa2ptbjlBYkhGcHIrOXR0
djMzUFBQZE9tVFJzN2R1d3p6enpEOXUzcjZ4TzdxSHl0NS9laXJEa2xKU1VZREZKS0E0RUEr
MGhzQzNDRzVkd0N2eGRPZDNkM2FtcXE1a2VpQmNlSUVTT0crL05TZ2lKR0Z3Z0V0bTdkV2xS
VXBGbGVIQ3VuK3IzbzJRVHhpU1J6VHVrTmppMDBuVEV3TUxCMzc5NzA5SFNxcitQSzE1cCtM
NU1tVFZKbUFVVkZSU3hQcjY2dVZ1NnJiQXR3SkoxYjRQZWk1SWNmZmxpMWFsVkZSWVhtcHdZ
V0hNNFdkSHBsZ0lzV0xlcnM3QXlGUXZYMTlXekpUa1FjSzBmNnZlalpCQ2tua3N3NXBUYzR0
dEIwbHJBd1Y0ZU5HemRTTFIwblYwSXAxZlI3K2V0Zi81cWVuczdmN3QrL1B6OC9QeTB0YmZu
eTVjcDZsRzBCanFaTmgrWmYwUEI3b1plSFl0U29VYmZmZnZ2bm4zL09OeXJMR0Zod09GalR4
Yk8xdHJZMk56YzNKU1dscUtqSTcvZnpZc3E5eExGeXBOK0xhbkF1WHJ3b1RpU1pNMUVjSEhI
WXd3Sy9Gd0FBY0E2NGp4UUFBSndETkIwQUFKd0ROQjBBQUp5RDNUVWRpL1VBQUNDUDNYOGpo
YVpIaWVoRUlTS2FjdWhabWpnZW1TbU40V0xJakpWb0plUkl2eGQ1akUyQnhNRVJCekFzdzli
MGppSDFBNXB1WjBRbkNzMHlLbE1PVFVzVDkyQTg2ekJjU296SFNyUVNjcVRmaXlSaFRZSEV3
UkVITUN4bWFicW0zMHRWVlZWYVd0cjA2ZE5iVzFzcHBSOSsrR0ZoWVdGS1NrcGhZU0c3WFAv
UW9VTXpaODVrZS9FV0thVm56NTY5N2JiYk5tL2VMQk1TMElRN1VZZ2ZpYVljNGhaWEVWYW5N
Rnljc0dPbHNoSnl0dCtMQVRLbVFPTGdpQU1ZRnJNMFhkUHZwYnE2T2hnTTF0VFVGQmNYVTBv
TENncGVmZlZWZGtkb1lXRWhwYlNrcEdUZHVuWHN0cGNmVyt6b0tDc3JhMmxwa1lrSGFDSTZV
U2dSVFRuRUxhN0NXS2N3WEVxTXgwcTBFbkt3MzRzeE1xWkE0dUNJQXhnV3N6UmQwKytGK2JR
RWcwRm1nSkNjbk15ZFcxSlNVaWlsS1NrcGdVQkExV0pwYVdsMmRuWjdlN3RNUEVCRXo0bUNJ
NXB5aUZ0Y1JkamNFOFBGa1Z3ZDVWWkNUdlY3Q1l1TUtaREI0UEFCREl1NTYra3F2eGVXbGRm
VTFNeVlNWU5xNWVuRnhjWHIxcTFUMmlzU1FzNmNPYk5qeDQ3YzNGejI1eTBZRm5wT0ZFcEVV
dzREU3hNM1lLeFRHQzRsWVRWZFpTWGtTTCtYWVdFd1lwcURveHJBc0ppbDZleTdTT1gzd3Ri
VDgvUHo5Ky9mVHluZHQyOWZRVUZCY25KeVFVRUJFNTJQUC82NHRMU1VmYUdwNHErcHFaazFh
eGJMNjRFOHFpdVVMbDY4U0NWTU9Rd3NUWnlONWdWZEdDNU5aTWFLZmFTMEVuS2szOHV3VUE2
UmFyajAvRjZVQXhpV0JQamZkUUFBQUNTSi8vK1lCZ0FBRUN2c2ZoOHBBQUFBZWFEcEFBRGdI
T3lvNlZpbEFRQ0F5RER4TjFKSXN4MW9hR2lZTVdQR3lKRWp5OHZMMzN2dlBjMHlNRERod0I1
SEhwbXgwck1yTWJZOWNUQmgvVjVVd3lVenlDcUdyZWxEd2dPYWJtY3FLeXM3T2pwQ29kRDI3
ZHNuVHB5b1dRWUdKaHpZNDhnak0xYWFkaVZoYlUrY1N0akF4ZUdTR1dRVlptbTZaaFpQQ0Zt
K2ZIbDZlbnBaV1JuVjhudmhPOHAwSGNnVERBYnI2K3VuVDUrdStTa01URVJnanlPUDhWaXA3
RXBrYkU4Y2lVemdCdTR1Qm9Pc3d0SThuUkR5d2dzdkJBS0JoeDU2aUdyZFI2cTNJNGdHOWpX
WmxaVjE4T0JCelFJd01GRUJleHg1ak1kS3RDdVJzVDF4SkRLQjY3bTdHQSt5Q3FzMVhmazlJ
L3E5Nk8wSW9pUVFDR3pkdXJXb3FFanpVeGlZS0lFOWpqeGh4NHJEN1Vwa2JFOGN5YkFDVjdx
N3lBOHl3MFJOSHpseTVJa1RKMVM3Szk4aVQ3ZUFSWXNXZFhaMmhrS2grdnA2UGE5T0dKaHdZ
SThqajh4WVVYMjdFdGVlNXNhQnE0WkxjcENWbUtqcHk1WXRTMHRMVTYybkt3dUlmaThSV0E0
QVkycHJhM056YzFOU1VvcUtpdngrUDl1b0dsc1ltSEJVTXhEMk9BYklqQlg3U05PdXhMVW51
SUVraXNPbE9jakcyUDEvMXdFQUFKREhqdmNjQVFBQWlBeG9PZ0FBT0Fkb09nQUFPQWU3YXpv
VzZ3RUFRQjY3KzcxQTA2TkU1bmRzR0pod01Genl5SXhWUTBORFhsNWVjbkp5WGw3ZTl1M2JK
ZmR5QUdLWWtzT2w4bnVKWUxpR3JlbGVBV2k2L1RFZVJoaVlxTUJ3eVdNOFZoa1pHYnQyN1Fx
RlFuNi9YL25mUjExeVhvdGhHZ2V1YVk4VGRpOFZabW02bU1VVDRhck1zckt5bHBZV1NtbHpj
L1BNbVRPcGxnTU1LM24yN05uYmJydHQ4K2JOOG9FQkpXRm5FZ3hNbEdDNDVERWVxOUxTMHVi
bTVwNmVudDI3ZDdOelhHWXZ4eENCcG12NnZkaEMwOFYraUpxK2R1M2ErZlBuVTBybnpadTNi
dDA2cW5WbktTR2tvNk9EcXorSURPTTVBUU1URlJndWVZekhxclcxTlRNemt4Q1NtWm5aMXRZ
bXVaZGpHSzZtNi9tOTJGM1QrL3I2Mk90ejU4NWxaR1I4K2VXWEdSa1ozMzMzSGRWeWdDR0Vs
SmFXWm1kbnQ3ZTN5MGNGVklUTkRtQmdvZ1RESlkveFdPWG41L3Y5L2xBbzVQUDVDZ29LSlBk
eURNUFZkSTdTNzBWK0w0YUptcTd5ZTVrd1ljTHUzYnU3dTdzM2JOakFkNm1zckx6aGhodm16
WnZIM21ybTZXZk9uTm14WTBkdWJpNzcvTXdGcGdBQUNIWkpSRUZVOHhaRWdQR2NnSUdKQ2d5
WFBNWmpOVzdjT0wvZjM5UFRzMnZYTHF5bmEyNVJvV21QWXhkTlYvbTlWRmRYWjJSa2pCOC9m
dDI2ZFh4amMzTXpJYVM1dVptOTFYU0FZUi9WMU5UTW1qV0xaZkZBSG5JbGZLT3lEQXhNT0Jn
dWVXVEdxcTZ1enVQeGpCZ3hZdXJVcWZYMTlYcDdPUTh4VEpuaFloOForTDNJTkEyL0Z3QUFj
QTUyditjSUFBQ0FQTkIwQUFCd0R0QjBBQUJ3RHRacE9wYmRBUURBYkt6N2pSU2FiZ0Y2UjhU
ZzhpVHFZbE1PRWVXc3pzckswaXlqNSs1aVBNaUp6cFl0VzY2NzdyclUxTlNaTTJmdTNidVhV
dHJRMERCanhveVJJMGVXbDVlLzk5NTdtbnVKRTBtc3h3R0laNURvM0NJVGVHU0RyR0w0bXI1
QmVFRFRiWVpxcUQvNTVKUHM3R3lEOFhlNUtZY21TNVlzZWZMSkp6VS8wblIzQ1R2SWljN2N1
WE1QSHo3YzNkMjlaY3NXZGw5VlpXVmxSMGRIS0JUYXZuMzd4SWtURGZaVkRvdFlqd01RenlE
UnVVVW04R2dHbVdPV3BpczM4c3N6WDM3NTVmSGp4MmRtWm03YXRFbXpESHV4ZlBueTlQVDBz
ckl5ZXZsN1BpVWxwYlMwRlBZQWtpZ0hOaFFLRlJVVnZmYmFhd1p5NDNKVERwSHZ2LzgrTXpP
enE2dEw4MVBSM1VWbWtCM0R5Wk1uVTFOVGUzdDcyZHRnTUZoZlh6OTkrblNEWFRTSFJWVlBR
aU9lUVhyT0xWUXU4QWdHbVdPcHBxOWZ2ejRZRERZMU5iRXpRVS9UWDNqaGhVQWc4TkJERC9G
UCsvdjc5KzNiTjJuU0pKbVFnSEpnSDN2c01YWm5vNEhjdU55VVEyVDE2dFVMRml6USsxUjBk
NUVaWkdmdzdiZmZWbFJVUFByb28rd3RYNlE2ZVBDZ3dWN2lzS2pxU1hURU0walB1VVVtOE1n
R21XTzZwbk4zRjBKSVgxK2Y4bE94RE51by9BWmJ2MzQ5dXcrTkVKS1VsQ1FURWxBZUVUWjB4
dXZqTGpmbFVOSFgxNWVUazZQOGJsTWh1cnZJRExJRE9IandZRzV1N29vVkt3WUdCdmpHUUND
d2RldldvcUlpZ3gxVlk2SlpUMEtqZHdiUks1MWJaQUtQZUpBNVptbTY2TzRpWnVXYURqQ3Ey
dExTMHBxYW1vTEJvTS9uYy9EWkVsdkMvdVdrd3VXbUhDcnE2dXBtejU1dFVNREEzY1hCSTFa
VFUxTlJVY0VjT3hpTEZpM3E3T3dNaFVMMTlmV3E1UVVWeW1FUjYzRUFtbWVReXJsRkp2Qm9C
cGxqbHFhTDdpNmlwbXM2d0tocWUvYlpaek15TWpJeU1sYXZYdTNnRXlaV2tDdFJmYVQ1bXJy
WWxFT1RXYk5tYmR1MlRibEZOUUlHN2k0T0hpdlZsTGg0OFdKdGJXMXVibTVLU2twUlVaSGY3
K2ZGRFBiU3JDY093Y1FhdlRQSXdMbUZCVzQ4WEhxRGJBejhYZ0FBd0RuZ1BsSUFBSEFPMEhR
QUFIQU8wSFFBQUhBTzBIUUFiSTNkZnErS3BqOTJpOFdSUU5NQjBDQmk5WW01YkJsVUdIMWIv
SjVZU3VtcFU2ZjBMRzVrR3BXNWJrS213NXFlSnlydkZJUFcrUllacHhUUnVrZlB6TWU0TFpt
clJjUzR4TGJFZWlLd3g0R21BNkNCU3pUOTVwdHZmdSs5OXlaUG5qeGx5cFIzMzMzWCtNSjg0
MFpsT2lOVFJ2UThFYjFUWk9xWGNVb1JyWHMwelh3a1l6R09Ub3hMcnkxbFBSSFk0MERUQWRC
QTg0d2xWMW9QclYyNzF1UHhKQ2NuODl4SzVnSmZWWDdIbnF1cXF0TFMwcVpQbjk3YTJrb3Bi
VzF0TFNnb1NFdExxNnFxVXRhc2JGMXM2K2pSb3pmZmZITnFhdXEwYWRONFptb3NOSXNXTFZx
OWV2WFVxVk05SHMrYU5Xc1dMMTZzV1kvWUg1a1JFK3NoaEN4ZnZuejA2TkU4VWdPNDU0bUJk
MHJZUHFpY1VsUUZST3NlY1l0bXRab2JKYjlpbFhHSmJlblZJMitQQTAwSFFBTzk4MU5wUFRS
bXpCaXYxOXZSMGRIVDB4TjJSODBDWEsrcnE2dUR3V0JOVFUxeGNUR2xkTWFNR1RVMU5jRmc4
SlZYWGxHV1Z4a2ZxZG9xTHk5Ly9mWFhRNkhRcmwyN3BrMmJKaFBtNnRXcmI3enh4bm56NWxW
V1Z0NTQ0NDFyMXF6UnJFZXZQNnE0VkY4ellqM0tTSTN2ZEZkNm51aDVwMmoyUWV5U2dWT0th
TjBqYnBGc1MzT0xjVng2YlluMURNc2VCNW9PZ0FiaWVTVmFENzM5OXR2MzNIUFB0R25UeG80
ZCs4d3p6K2p0cUZlejBnb3BHQXhTU29QQllHcHFLcVUwSlNXRmJRa0VBcXlNcHZHUnFxMlVs
QlF1cVpMbVNEdDI3RWhLU25ycHBaZisvT2MvSnlVbDdkeTVVN01lc1Q4eUl5YldJMGFxaVo0
dml0STdSYklQeGs0cG9uV1B1RVcrcmJDSFhoV1hYbHVxZW9acmp3Tk5CMEFEOGZ6VXN4NGFH
QmpZdTNkdmVubzZlenR5NU1nVEowNFkxS3hwaGZUcXE2K3k3SFhHakJtVTBxS2lJcFlYVjFk
WHN6S2FyYXZhcXFpb2FHeHM3Tzd1bGcvejJMRmpoSkFEQnc1ODlORkhoQkFtQW1JOVluOUV4
TzFpUGNwSTJWOGtJcHErS0NydkZEMlVmWkJ4U2hHdGV3ek1mTUxHYTZ6cFlseDZiU25yaWNB
ZUI1b09nQWJpU29Kb1BjUStZaTRmR3pkdVpEc3VXN1lzTFMzTjRQVFd0RUppNituNStmbjc5
KytubE83ZnZ6OC9Qejh0TFczNTh1VjZyWXR0SFR0MjdQYmJiMmRiK0Vaam9lbnQ3UjB6Wmt4
UFQwOG9GQm96Wmd4elRoWHJFZnVqT1dLcUxXSTl5a2oxMXROVkkzL3g0a1gyUXVtZEVuWXZT
cW1NSFkxbzNhTnA1cVBhUzJ4TDNDSVRsOWhXMkpwbDdIR2c2UURFR1dQWkJXQllRTk1CaURQ
UWRCQkRvT2tBQU9BY29Pa0FBT0Fjb09rQUFPQWNvT2tBQU9BY29Pa2dNV2hzYkd4cWF1cnY3
MjlxYW1wc2JKVGN4ZmhUdlFLQlFNRG44Mm1XTjlnTEFEc0FUUWVKUVdOajQvdnZ2Ly9aWjU5
OThNRUhzVkpWdlhvT0hUb2tmZ1FwQndrQk5CMGtCbzJOamNlT0hmUDcvY2VPSGVQeXFuclIy
TmpZM3Q3dTkvdVBIajJxdDFGVnA5alFEei84ME56Y3JLbnBmcjkvejU0OXAwNmRpbWxrQU1R
U2FEcElEQm9iRzgrZE84ZWYrVWJsaThiR3h1KysreTRRQ0xEN0JqVTNxdW9VRy9yNDQ0K1BI
eit1K2RIZzRPQ3BVNmQyNzk0ZHU3QUFpREhRZEpBWU5EWTJEZzRPdnZQT080T0RnMXh3L1g1
L0lCRGdLaTlLdkxoUlZhZG1RM3JyNW9PRGcyZk9uSUdtQXpzRFRRZUpnVkpoK2V1alI0LzYv
ZjcyOXZZSU5GMGwzT0tuNG92R3hzWTllL1o4ODgwM3NRd01nSmdDVFFjQUFPY0FUUWNBQU9j
QVRRY0FBT2NBVFFjQUFPY0FUUWNBQU9jQVRRY0FBT2Z3bzZhM3RyYStBUUFBSVBFaEVIUUFB
SEFNL3gvT2JoNTFrd0JER2dBQUFBQkpSVTVFcmtKZ2dnPT0iIGFsdD0iIiAvPjwvcD48Ymxv
Y2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMzI1RkJBOyBwYWRkaW5n
LWxlZnQ6IDVweDttYXJnaW4tbGVmdDo1cHg7Ij4tLS0tLVVyc3ByJnV1bWw7bmdsaWNoZSBO
YWNocmljaHQtLS0tLTxiciAvPjxzdHJvbmc+QW46PC9zdHJvbmc+CUtvbnJhZCBSemVzenV0
ZWsgV2lsayAmbHQ7a29ucmFkLndpbGtAb3JhY2xlLmNvbSZndDs7IDxiciAvPjxzdHJvbmc+
Q0M6PC9zdHJvbmc+CVNhbmRlciBFaWtlbGVuYm9vbSAmbHQ7bGludXhAZWlrZWxlbmJvb20u
aXQmZ3Q7OyB4ZW4tZGV2ZWwgJmx0O3hlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tJmd0
OzsgSmFuIEJldWxpY2ggJmx0O2piZXVsaWNoQHN1c2UuY29tJmd0OzsgS29ucmFkIFJ6ZXN6
dXRlayBXaWxrICZsdDtrb25yYWRAZGFybm9rLm9yZyZndDs7IDxiciAvPjxzdHJvbmc+Vm9u
Ojwvc3Ryb25nPglDYXJzdGVuIFNjaGllcnMgJmx0O2NhcnN0ZW5Ac2NoaWVycy5kZSZndDs8
YnIgLz48c3Ryb25nPkdlc2VuZGV0Ojwvc3Ryb25nPglEaSAyOC4wMi4yMDEyIDE1OjM5PGJy
IC8+PHN0cm9uZz5CZXRyZWZmOjwvc3Ryb25nPglSZTogW1hlbi1kZXZlbF0gTG9hZCBpbmNy
ZWFzZSBhZnRlciBtZW1vcnkgdXBncmFkZSAocGFydDIpPGJyIC8+PHN0cm9uZz5BbmxhZ2U6
PC9zdHJvbmc+CWlubGluZS50eHQ8YnIgLz48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5ib2R5
Y2xhc3MgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9PC9zdHlsZT4gICAgICAgICAgICAg
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAuYm9keWNsYXNzICAgICAgIHsgICAg
ICAgICBmb250LWZhbWlseTogQXJpYWwsIFZlcmRhbmEsIFNhbnMtU2VyaWYgISBpbXBvcnRh
bnQ7ICAgICAgICAgZm9udC1zaXplOiAxMnB4OyAgICAgICAgIHBhZGRpbmc6IDVweCA1cHgg
NXB4IDVweDsgICAgICAgICBtYXJnaW46IDBweDsgICAgICAgICBib3JkZXItc3R5bGU6IG5v
bmU7ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgICAgICAgfSAgICAgICAg
cCwgdWwsIGxpICAgICAgIHsgICAgICAgICBtYXJnaW4tdG9wOiAwcHg7ICAgICAgICAgbWFy
Z2luLWJvdHRvbTogMHB4OyAgICAgICB9ICAgPC9zdHlsZT4gIDxkaXY+PHA+V2VsbCBsZXQg
bWUgY2hlY2sgZm9yIGEgbG9uZ2VyIHBlcmlvZCBvZiB0aW1lLCBhbmQgZXNwZWNpYWxseSwg
d2hldGhlciB0aGUgRG9tVSBpcyBzdGlsbDwvcD48cD53b3JraW5nIChjYW4gZG8gdGhhdCBv
bmx5IGZyb20gYXQgaG9tZSksIGJ1dCBsb2FkIGxvb2tzIHByZXR0eSB3ZWxsIGFmdGVyIGFw
cGx5aW5nIHRoZTwvcD48cD5wYXRjaCB0byAzLjIuOCA6LUQuPC9wPjxwPiZuYnNwOzwvcD48
cD5CUiw8L3A+PHA+Q2Fyc3Rlbi48YnIgLz4mbmJzcDs8L3A+PGJsb2NrcXVvdGUgc3R5bGU9
ImJvcmRlci1sZWZ0OiAycHggc29saWQgIzMyNUZCQTsgcGFkZGluZy1sZWZ0OiA1cHg7bWFy
Z2luLWxlZnQ6NXB4OyI+LS0tLS1VcnNwciZ1dW1sO25nbGljaGUgTmFjaHJpY2h0LS0tLS08
YnIgLz48c3Ryb25nPkFuOjwvc3Ryb25nPglKYW4gQmV1bGljaCAmbHQ7SkJldWxpY2hAc3Vz
ZS5jb20mZ3Q7OyA8YnIgLz48c3Ryb25nPkNDOjwvc3Ryb25nPglLb25yYWQgUnplc3p1dGVr
IFdpbGsgJmx0O2tvbnJhZEBkYXJub2sub3JnJmd0OzsgeGVuLWRldmVsICZsdDt4ZW4tZGV2
ZWxAbGlzdHMueGVuc291cmNlLmNvbSZndDs7IENhcnN0ZW4gU2NoaWVycyAmbHQ7Y2Fyc3Rl
bkBzY2hpZXJzLmRlJmd0OzsgU2FuZGVyIEVpa2VsZW5ib29tICZsdDtsaW51eEBlaWtlbGVu
Ym9vbS5pdCZndDs7IDxiciAvPjxzdHJvbmc+Vm9uOjwvc3Ryb25nPglLb25yYWQgUnplc3p1
dGVrIFdpbGsgJmx0O2tvbnJhZC53aWxrQG9yYWNsZS5jb20mZ3Q7PGJyIC8+PHN0cm9uZz5H
ZXNlbmRldDo8L3N0cm9uZz4JRnIgMTcuMDIuMjAxMiAxNjoxODxiciAvPjxzdHJvbmc+QmV0
cmVmZjo8L3N0cm9uZz4JUmU6IFtYZW4tZGV2ZWxdIExvYWQgaW5jcmVhc2UgYWZ0ZXIgbWVt
b3J5IHVwZ3JhZGUgKHBhcnQyKTxiciAvPk9uIFRodSwgRmViIDE2LCAyMDEyIGF0IDA4OjU2
OjUzQU0gKzAwMDAsIEphbiBCZXVsaWNoIHdyb3RlOjxiciAvPiZndDsgJmd0OyZndDsmZ3Q7
IE9uIDE1LjAyLjEyIGF0IDIwOjI4LCBLb25yYWQgUnplc3p1dGVrIFdpbGsgJmx0O2tvbnJh
ZC53aWxrQG9yYWNsZS5jb20mZ3Q7IHdyb3RlOjxiciAvPiZndDsgJmd0O0BAIC0xNTUwLDcg
KzE1NTIsMTEgQEAgc3RhdGljIHZvaWQgKl9fdm1hbGxvY19hcmVhX25vZGUoc3RydWN0IHZt
X3N0cnVjdCAqYXJlYSwgZ2ZwX3QgZ2ZwX21hc2ssPGJyIC8+Jmd0OyAmZ3Q7IAlzdHJ1Y3Qg
cGFnZSAqKnBhZ2VzOzxiciAvPiZndDsgJmd0OyAJdW5zaWduZWQgaW50IG5yX3BhZ2VzLCBh
cnJheV9zaXplLCBpOzxiciAvPiZndDsgJmd0OyAJZ2ZwX3QgbmVzdGVkX2dmcCA9IChnZnBf
bWFzayAmYW1wOyBHRlBfUkVDTEFJTV9NQVNLKSB8IF9fR0ZQX1pFUk87PGJyIC8+Jmd0OyAm
Z3Q7LTxiciAvPiZndDsgJmd0OysJZ2ZwX3QgZG1hX21hc2sgPSBnZnBfbWFzayAmYW1wOyAo
X19HRlBfRE1BIHwgX19HRlBfRE1BMzIpOzxiciAvPiZndDsgJmd0OysJaWYgKHhlbl9wdl9k
b21haW4oKSkgezxiciAvPiZndDsgJmd0OysJCWlmIChkbWFfbWFzayA9PSAoX19HRlBfRE1B
IHwgX19HRlBfRE1BMzIpKTxiciAvPiZndDsgPGJyIC8+Jmd0OyBJIGRpZG4mIzM5O3Qgc3Bv
dCB3aGVyZSB5b3UgZm9yY2UgdGhpcyBub3JtYWxseSBpbnZhbGlkIGNvbWJpbmF0aW9uLCB3
aXRob3V0PGJyIC8+Jmd0OyB3aGljaCB0aGUgY2hhbmdlIHdvbiYjMzk7dCBhZmZlY3Qgdm1h
bGxvYzMyKCkgaW4gYSAzMi1iaXQga2VybmVsLjxiciAvPiZndDsgPGJyIC8+Jmd0OyAmZ3Q7
KwkJCWdmcF9tYXNrICZhbXA7PSAoX19HRlBfRE1BIHwgX19HRlBfRE1BMzIpOzxiciAvPiZn
dDsgPGJyIC8+Jmd0OyAJCQlnZnBfbWFzayAmYW1wOz0gfihfX0dGUF9ETUEgfCBfX0dGUF9E
TUEzMik7PGJyIC8+Jmd0OyA8YnIgLz4mZ3Q7IEphbjxiciAvPjxiciAvPkR1aCE8YnIgLz5H
b29kIGV5ZXMuIFRoYW5rcyBmb3IgY2F0Y2hpbmcgdGhhdC48YnIgLz48YnIgLz4mZ3Q7IDxi
ciAvPiZndDsgJmd0OysJfTxiciAvPiZndDsgJmd0OyAJbnJfcGFnZXMgPSAoYXJlYS0mZ3Q7
c2l6ZSAtIFBBR0VfU0laRSkgJmd0OyZndDsgUEFHRV9TSElGVDs8YnIgLz4mZ3Q7ICZndDsg
CWFycmF5X3NpemUgPSAobnJfcGFnZXMgKiBzaXplb2Yoc3RydWN0IHBhZ2UgKikpOzxiciAv
PiZndDsgJmd0OyA8YnIgLz4mZ3Q7IDxiciAvPjxiciAvPl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyIC8+WGVuLWRldmVsIG1haWxpbmcgbGlz
dDxiciAvPlhlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tPGJyIC8+aHR0cDovL2xpc3Rz
LnhlbnNvdXJjZS5jb20veGVuLWRldmVsPGJyIC8+PC9ibG9ja3F1b3RlPjwvZGl2PiAgIDwv
YmxvY2txdW90ZT48L2Rpdj4gICA8L2Jsb2NrcXVvdGU+PHA+Jm5ic3A7PC9wPgo8L2JvZHk+
CjwvaHRtbD4=
--=_F1yjPY0x5Rt03QtpR+eAjTruBumDA6U+Yn3CBd30zLybmgQg--

--=_F1yjpLocfe5Ra5tK65RmHGcdd2qVYzUzBxBqAXkQZGBAcVOw
Content-Type: application/octet-stream; name=debug.log
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=debug.log

VXNpbmcgY29uZmlnIGZpbGUgIi9ldGMveGVuL3Jpa2VyLjMyIi4KU3RhcnRlZCBkb21haW4g
cmlrZXIgKGlkPTE1KQpbICAgIDAuMDAwMDAwXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5
cyBjcHVzZXQNClsgICAgMC4wMDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNw
dQ0KWyAgICAwLjAwMDAwMF0gTGludXggdmVyc2lvbiAzLjIuOC1hbWQ2NCAocm9vdEBjaGVr
b3RleSkgKGdjYyB2ZXJzaW9uIDQuNC41IChEZWJpYW4gNC40LjUtOCkgKSAjMSBTTVAgVHVl
IEZlYiAyOCAxMTozMjoyNyBDRVQgMjAxMg0KWyAgICAwLjAwMDAwMF0gQ29tbWFuZCBsaW5l
OiByb290PS9kZXYveHZkYTEgcm8gaW9tbXU9c29mdCBzd2lvdGxiPTQwOTYgeGVuY29ucz10
dHkNClsgICAgMC4wMDAwMDBdIEFDUEkgaW4gdW5wcml2aWxlZ2VkIGRvbWFpbiBkaXNhYmxl
ZA0KWyAgICAwLjAwMDAwMF0gUmVsZWFzZWQgMCBwYWdlcyBvZiB1bnVzZWQgbWVtb3J5DQpb
ICAgIDAuMDAwMDAwXSBTZXQgMCBwYWdlKHMpIHRvIDEtMSBtYXBwaW5nDQpbICAgIDAuMDAw
MDAwXSBCSU9TLXByb3ZpZGVkIHBoeXNpY2FsIFJBTSBtYXA6DQpbICAgIDAuMDAwMDAwXSAg
WGVuOiAwMDAwMDAwMDAwMDAwMDAwIC0gMDAwMDAwMDAwMDBhMDAwMCAodXNhYmxlKQ0KWyAg
ICAwLjAwMDAwMF0gIFhlbjogMDAwMDAwMDAwMDBhMDAwMCAtIDAwMDAwMDAwMDAxMDAwMDAg
KHJlc2VydmVkKQ0KWyAgICAwLjAwMDAwMF0gIFhlbjogMDAwMDAwMDAwMDEwMDAwMCAtIDAw
MDAwMDAwMTQ4MDAwMDAgKHVzYWJsZSkNClsgICAgMC4wMDAwMDBdIE5YIChFeGVjdXRlIERp
c2FibGUpIHByb3RlY3Rpb246IGFjdGl2ZQ0KWyAgICAwLjAwMDAwMF0gRE1JIG5vdCBwcmVz
ZW50IG9yIGludmFsaWQuDQpbICAgIDAuMDAwMDAwXSBObyBBR1AgYnJpZGdlIGZvdW5kDQpb
ICAgIDAuMDAwMDAwXSBsYXN0X3BmbiA9IDB4MTQ4MDAgbWF4X2FyY2hfcGZuID0gMHg0MDAw
MDAwMDANClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IDAwMDAwMDAwMDAw
MDAwMDAtMDAwMDAwMDAxNDgwMDAwMA0KWyAgICAwLjAwMDAwMF0gUkFNRElTSzogMDE5Mjgw
MDAgLSAwMzUwYTAwMA0KWyAgICAwLjAwMDAwMF0gTm8gTlVNQSBjb25maWd1cmF0aW9uIGZv
dW5kDQpbICAgIDAuMDAwMDAwXSBGYWtpbmcgYSBub2RlIGF0IDAwMDAwMDAwMDAwMDAwMDAt
MDAwMDAwMDAxNDgwMDAwMA0KWyAgICAwLjAwMDAwMF0gSW5pdG1lbSBzZXR1cCBub2RlIDAg
MDAwMDAwMDAwMDAwMDAwMC0wMDAwMDAwMDE0ODAwMDAwDQpbICAgIDAuMDAwMDAwXSAgIE5P
REVfREFUQSBbMDAwMDAwMDAxM2ZmYjAwMCAtIDAwMDAwMDAwMTNmZmZmZmZdDQpbICAgIDAu
MDAwMDAwXSBab25lIFBGTiByYW5nZXM6DQpbICAgIDAuMDAwMDAwXSAgIERNQSAgICAgIDB4
MDAwMDAwMTAgLT4gMHgwMDAwMTAwMA0KWyAgICAwLjAwMDAwMF0gICBETUEzMiAgICAweDAw
MDAxMDAwIC0+IDB4MDAxMDAwMDANClsgICAgMC4wMDAwMDBdICAgTm9ybWFsICAgZW1wdHkN
ClsgICAgMC4wMDAwMDBdIE1vdmFibGUgem9uZSBzdGFydCBQRk4gZm9yIGVhY2ggbm9kZQ0K
WyAgICAwLjAwMDAwMF0gZWFybHlfbm9kZV9tYXBbMl0gYWN0aXZlIFBGTiByYW5nZXMNClsg
ICAgMC4wMDAwMDBdICAgICAwOiAweDAwMDAwMDEwIC0+IDB4MDAwMDAwYTANClsgICAgMC4w
MDAwMDBdICAgICAwOiAweDAwMDAwMTAwIC0+IDB4MDAwMTQ4MDANClsgICAgMC4wMDAwMDBd
IFNGSTogU2ltcGxlIEZpcm13YXJlIEludGVyZmFjZSB2MC44MSBodHRwOi8vc2ltcGxlZmly
bXdhcmUub3JnDQpbICAgIDAuMDAwMDAwXSBTTVA6IEFsbG93aW5nIDEgQ1BVcywgMCBob3Rw
bHVnIENQVXMNClsgICAgMC4wMDAwMDBdIE5vIGxvY2FsIEFQSUMgcHJlc2VudA0KWyAgICAw
LjAwMDAwMF0gQVBJQzogZGlzYWJsZSBhcGljIGZhY2lsaXR5DQpbICAgIDAuMDAwMDAwXSBB
UElDOiBzd2l0Y2hlZCB0byBhcGljIE5PT1ANClsgICAgMC4wMDAwMDBdIFBNOiBSZWdpc3Rl
cmVkIG5vc2F2ZSBtZW1vcnk6IDAwMDAwMDAwMDAwYTAwMDAgLSAwMDAwMDAwMDAwMTAwMDAw
DQpbICAgIDAuMDAwMDAwXSBBbGxvY2F0aW5nIFBDSSByZXNvdXJjZXMgc3RhcnRpbmcgYXQg
MTQ4MDAwMDAgKGdhcDogMTQ4MDAwMDA6ZWI4MDAwMDApDQpbICAgIDAuMDAwMDAwXSBCb290
aW5nIHBhcmF2aXJ0dWFsaXplZCBrZXJuZWwgb24gWGVuDQpbICAgIDAuMDAwMDAwXSBYZW4g
dmVyc2lvbjogNC4xLjIgKHByZXNlcnZlLUFEKQ0KWyAgICAwLjAwMDAwMF0gc2V0dXBfcGVy
Y3B1OiBOUl9DUFVTOjUxMiBucl9jcHVtYXNrX2JpdHM6NTEyIG5yX2NwdV9pZHM6MSBucl9u
b2RlX2lkczoxDQpbICAgIDAuMDAwMDAwXSBQRVJDUFU6IEVtYmVkZGVkIDI3IHBhZ2VzL2Nw
dSBAZmZmZjg4MDAxM2ZhODAwMCBzODE2MDAgcjgxOTIgZDIwODAwIHUxMTA1OTINClsgICAg
MC4wMDAwMDBdIEJ1aWx0IDEgem9uZWxpc3RzIGluIE5vZGUgb3JkZXIsIG1vYmlsaXR5IGdy
b3VwaW5nIG9uLiAgVG90YWwgcGFnZXM6IDgyNTM5DQpbICAgIDAuMDAwMDAwXSBQb2xpY3kg
em9uZTogRE1BMzINClsgICAgMC4wMDAwMDBdIEtlcm5lbCBjb21tYW5kIGxpbmU6IHJvb3Q9
L2Rldi94dmRhMSBybyBpb21tdT1zb2Z0IHN3aW90bGI9NDA5NiB4ZW5jb25zPXR0eQ0KWyAg
ICAwLjAwMDAwMF0gUElEIGhhc2ggdGFibGUgZW50cmllczogMjA0OCAob3JkZXI6IDIsIDE2
Mzg0IGJ5dGVzKQ0KWyAgICAwLjAwMDAwMF0gUGxhY2luZyA4TUIgc29mdHdhcmUgSU8gVExC
IGJldHdlZW4gZmZmZjg4MDAxMjgwMDAwMCAtIGZmZmY4ODAwMTMwMDAwMDANClsgICAgMC4w
MDAwMDBdIHNvZnR3YXJlIElPIFRMQiBhdCBwaHlzIDB4MTI4MDAwMDAgLSAweDEzMDAwMDAw
DQpbICAgIDAuMDAwMDAwXSBNZW1vcnk6IDI3NDM0OGsvMzM1ODcyayBhdmFpbGFibGUgKDMz
ODJrIGtlcm5lbCBjb2RlLCA0NDhrIGFic2VudCwgNjEwNzZrIHJlc2VydmVkLCAzMjkxayBk
YXRhLCA1NjhrIGluaXQpDQpbICAgIDAuMDAwMDAwXSBTTFVCOiBHZW5zbGFicz0xNSwgSFdh
bGlnbj02NCwgT3JkZXI9MC0zLCBNaW5PYmplY3RzPTAsIENQVXM9MSwgTm9kZXM9MQ0KWyAg
ICAwLjAwMDAwMF0gSGllcmFyY2hpY2FsIFJDVSBpbXBsZW1lbnRhdGlvbi4NClsgICAgMC4w
MDAwMDBdIE5SX0lSUVM6MzMwMjQgbnJfaXJxczoyNTYgMTYNClsgICAgMC4wMDAwMDBdIENv
bnNvbGU6IGNvbG91ciBkdW1teSBkZXZpY2UgODB4MjUNClsgICAgMC4wMDAwMDBdIGNvbnNv
bGUgW3R0eTBdIGVuYWJsZWQNClsgICAgMC4wMDAwMDBdIGNvbnNvbGUgW2h2YzBdIGVuYWJs
ZWQNClsgICAgMC4wMDAwMDBdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMA0KWyAg
ICAwLjAwMDAwMF0gRGV0ZWN0ZWQgMjIxMC4wMzggTUh6IHByb2Nlc3Nvci4NClsgICAgMC4w
MDQwMDBdIENhbGlicmF0aW5nIGRlbGF5IGxvb3AgKHNraXBwZWQpLCB2YWx1ZSBjYWxjdWxh
dGVkIHVzaW5nIHRpbWVyIGZyZXF1ZW5jeS4uIDQ0MjAuMDcgQm9nb01JUFMgKGxwaj04ODQw
MTUyKQ0KWyAgICAwLjAwNDAwMF0gcGlkX21heDogZGVmYXVsdDogMzI3NjggbWluaW11bTog
MzAxDQpbICAgIDAuMDA0MDAwXSBTZWN1cml0eSBGcmFtZXdvcmsgaW5pdGlhbGl6ZWQNClsg
ICAgMC4wMDQwMDBdIFNFTGludXg6ICBEaXNhYmxlZCBhdCBib290Lg0KWyAgICAwLjAwNDAw
MF0gRGVudHJ5IGNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNjU1MzYgKG9yZGVyOiA3LCA1
MjQyODggYnl0ZXMpDQpbICAgIDAuMDA0MDAwXSBJbm9kZS1jYWNoZSBoYXNoIHRhYmxlIGVu
dHJpZXM6IDMyNzY4IChvcmRlcjogNiwgMjYyMTQ0IGJ5dGVzKQ0KWyAgICAwLjAwNDAwMF0g
TW91bnQtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyNTYNClsgICAgMC4wMDQwMDBdIElu
aXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdWFjY3QNClsgICAgMC4wMDQwMDBdIEluaXRp
YWxpemluZyBjZ3JvdXAgc3Vic3lzIGRldmljZXMNClsgICAgMC4wMDQwMDBdIEluaXRpYWxp
emluZyBjZ3JvdXAgc3Vic3lzIGZyZWV6ZXINClsgICAgMC4wMDQwMDBdIEluaXRpYWxpemlu
ZyBjZ3JvdXAgc3Vic3lzIG5ldF9jbHMNClsgICAgMC4wMDQwMDBdIENQVTogUGh5c2ljYWwg
UHJvY2Vzc29yIElEOiAwDQpbICAgIDAuMDA0MDAwXSBDUFU6IFByb2Nlc3NvciBDb3JlIElE
OiAyDQpbICAgIDAuMDA0MDAwXSBTTVAgYWx0ZXJuYXRpdmVzOiBzd2l0Y2hpbmcgdG8gVVAg
Y29kZQ0KWyAgICAwLjAwNDAyNl0gRnJlZWluZyBTTVAgYWx0ZXJuYXRpdmVzOiAxNmsgZnJl
ZWQNClsgICAgMC4wMDQxNTFdIFBlcmZvcm1hbmNlIEV2ZW50czogDQpbICAgIDAuMDA0MTU4
XSBubyBBUElDLCBib290IHdpdGggdGhlICJsYXBpYyIgYm9vdCBwYXJhbWV0ZXIgdG8gZm9y
Y2UtZW5hYmxlIGl0Lg0KWyAgICAwLjAwNDE2Nl0gbm8gaGFyZHdhcmUgc2FtcGxpbmcgaW50
ZXJydXB0IGF2YWlsYWJsZS4NClsgICAgMC4wMDQxODRdIEJyb2tlbiBQTVUgaGFyZHdhcmUg
ZGV0ZWN0ZWQsIHVzaW5nIHNvZnR3YXJlIGV2ZW50cyBvbmx5Lg0KWyAgICAwLjAwNDQ0NV0g
QnJvdWdodCB1cCAxIENQVXMNClsgICAgMC4wMDQ2NDJdIGRldnRtcGZzOiBpbml0aWFsaXpl
ZA0KWyAgICAwLjAxMDU3OV0gR3JhbnQgdGFibGUgaW5pdGlhbGl6ZWQNClsgICAgMC4wMTA2
NDVdIHByaW50X2NvbnN0cmFpbnRzOiBkdW1teTogDQpbICAgIDAuMDEwNjkzXSBORVQ6IFJl
Z2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE2DQpbICAgIDAuMDEwODc2XSBFeHRlbmRlZCBD
b25maWcgU3BhY2UgZW5hYmxlZCBvbiAwIG5vZGVzDQpbICAgIDAuMDEwOTMyXSBQQ0k6IHNl
dHRpbmcgdXAgWGVuIFBDSSBmcm9udGVuZCBzdHViDQpbICAgIDAuMDEwOTMyXSBiaW86IGNy
ZWF0ZSBzbGFiIDxiaW8tMD4gYXQgMA0KWyAgICAwLjAxMDkzMl0gQUNQSTogSW50ZXJwcmV0
ZXIgZGlzYWJsZWQuDQpbICAgIDAuMDEyMDM0XSB4ZW4vYmFsbG9vbjogSW5pdGlhbGlzaW5n
IGJhbGxvb24gZHJpdmVyLg0KWyAgICAwLjAxMjA3M10geGVuLWJhbGxvb246IEluaXRpYWxp
c2luZyBiYWxsb29uIGRyaXZlci4NClsgICAgMC4wMTIwNzNdIHZnYWFyYjogbG9hZGVkDQpb
ICAgIDAuMDEyMTE2XSBQQ0k6IFN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IFBDSQ0KWyAgICAw
LjAxMjEyMl0gUENJOiBTeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBQQ0kNClsgICAgMC4wMTIy
MjhdIFN3aXRjaGluZyB0byBjbG9ja3NvdXJjZSB4ZW4NClsgICAgMC4wMTM2NjZdIHBucDog
UG5QIEFDUEk6IGRpc2FibGVkDQpbICAgIDAuMDE1MjcxXSBORVQ6IFJlZ2lzdGVyZWQgcHJv
dG9jb2wgZmFtaWx5IDINClsgICAgMC4wMTUzNTddIElQIHJvdXRlIGNhY2hlIGhhc2ggdGFi
bGUgZW50cmllczogNDA5NiAob3JkZXI6IDMsIDMyNzY4IGJ5dGVzKQ0KWyAgICAwLjAxNTYy
Ml0gVENQIGVzdGFibGlzaGVkIGhhc2ggdGFibGUgZW50cmllczogMTYzODQgKG9yZGVyOiA2
LCAyNjIxNDQgYnl0ZXMpDQpbICAgIDAuMDE1Nzk5XSBUQ1AgYmluZCBoYXNoIHRhYmxlIGVu
dHJpZXM6IDE2Mzg0IChvcmRlcjogNiwgMjYyMTQ0IGJ5dGVzKQ0KWyAgICAwLjAxNTg5Ml0g
VENQOiBIYXNoIHRhYmxlcyBjb25maWd1cmVkIChlc3RhYmxpc2hlZCAxNjM4NCBiaW5kIDE2
Mzg0KQ0KWyAgICAwLjAxNTkwMF0gVENQIHJlbm8gcmVnaXN0ZXJlZA0KWyAgICAwLjAxNTkx
NF0gVURQIGhhc2ggdGFibGUgZW50cmllczogMjU2IChvcmRlcjogMSwgODE5MiBieXRlcykN
ClsgICAgMC4wMTU5MjhdIFVEUC1MaXRlIGhhc2ggdGFibGUgZW50cmllczogMjU2IChvcmRl
cjogMSwgODE5MiBieXRlcykNClsgICAgMC4wMTYwMTFdIE5FVDogUmVnaXN0ZXJlZCBwcm90
b2NvbCBmYW1pbHkgMQ0KWyAgICAwLjAxNjExNl0gVW5wYWNraW5nIGluaXRyYW1mcy4uLg0K
WyAgICAwLjA1NjczMV0gRnJlZWluZyBpbml0cmQgbWVtb3J5OiAyODU1MmsgZnJlZWQNClsg
ICAgMC4wNjczMDhdIHBsYXRmb3JtIHJ0Y19jbW9zOiByZWdpc3RlcmVkIHBsYXRmb3JtIFJU
QyBkZXZpY2UgKG5vIFBOUCBkZXZpY2UgZm91bmQpDQpbICAgIDAuMDY3NTQ3XSBhdWRpdDog
aW5pdGlhbGl6aW5nIG5ldGxpbmsgc29ja2V0IChkaXNhYmxlZCkNClsgICAgMC4wNjc1NjNd
IHR5cGU9MjAwMCBhdWRpdCgxMzMwNTE5NDkzLjQ3MToxKTogaW5pdGlhbGl6ZWQNClsgICAg
MC4wNzk4MjldIEh1Z2VUTEIgcmVnaXN0ZXJlZCAyIE1CIHBhZ2Ugc2l6ZSwgcHJlLWFsbG9j
YXRlZCAwIHBhZ2VzDQpbICAgIDAuMDgxNzAxXSBWRlM6IERpc2sgcXVvdGFzIGRxdW90XzYu
NS4yDQpbICAgIDAuMDgxNzY2XSBEcXVvdC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUx
MiAob3JkZXIgMCwgNDA5NiBieXRlcykNClsgICAgMC4wODE4NjRdIG1zZ21uaSBoYXMgYmVl
biBzZXQgdG8gNTkxDQpbICAgIDAuMDgyMDc4XSBCbG9jayBsYXllciBTQ1NJIGdlbmVyaWMg
KGJzZykgZHJpdmVyIHZlcnNpb24gMC40IGxvYWRlZCAobWFqb3IgMjUzKQ0KWyAgICAwLjA4
MjA4N10gaW8gc2NoZWR1bGVyIG5vb3AgcmVnaXN0ZXJlZA0KWyAgICAwLjA4MjA5Ml0gaW8g
c2NoZWR1bGVyIGRlYWRsaW5lIHJlZ2lzdGVyZWQNClsgICAgMC4wODIxMjZdIGlvIHNjaGVk
dWxlciBjZnEgcmVnaXN0ZXJlZCAoZGVmYXVsdCkNClsgICAgMC4wOTg0MDRdIFNlcmlhbDog
ODI1MC8xNjU1MCBkcml2ZXIsIDQgcG9ydHMsIElSUSBzaGFyaW5nIGVuYWJsZWQNClsgICAg
MC4wOTg2OThdIExpbnV4IGFncGdhcnQgaW50ZXJmYWNlIHYwLjEwMw0KWyAgICAwLjA5OTIx
OV0gaTgwNDI6IFBOUDogTm8gUFMvMiBjb250cm9sbGVyIGZvdW5kLiBQcm9iaW5nIHBvcnRz
IGRpcmVjdGx5Lg0KWyAgICAwLjEwMDAzN10gaTgwNDI6IE5vIGNvbnRyb2xsZXIgZm91bmQN
ClsgICAgMC4xMDAxMjJdIG1vdXNlZGV2OiBQUy8yIG1vdXNlIGRldmljZSBjb21tb24gZm9y
IGFsbCBtaWNlDQpbICAgIDAuMTQwMTA3XSBydGNfY21vcyBydGNfY21vczogcnRjIGNvcmU6
IHJlZ2lzdGVyZWQgcnRjX2Ntb3MgYXMgcnRjMA0KWyAgICAwLjE0MDE4MV0gcnRjX2Ntb3M6
IHByb2JlIG9mIHJ0Y19jbW9zIGZhaWxlZCB3aXRoIGVycm9yIC0zOA0KWyAgICAwLjE0MDI2
NV0gcGNpZnJvbnQgcGNpLTA6IEluc3RhbGxpbmcgUENJIGZyb250ZW5kDQpbICAgIDAuMTQw
NDU4XSBwY2lmcm9udCBwY2ktMDogQ3JlYXRpbmcgUENJIEZyb250ZW5kIEJ1cyAwMDAwOjAw
DQpbICAgIDAuMTU2MzA3XSBUQ1AgY3ViaWMgcmVnaXN0ZXJlZA0KWyAgICAwLjE1NjQzNF0g
TkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAxMA0KWyAgICAwLjE1Njk5OV0gTW9i
aWxlIElQdjYNClsgICAgMC4xNTcwMTNdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1p
bHkgMTcNClsgICAgMC4xNTcwMjFdIFJlZ2lzdGVyaW5nIHRoZSBkbnNfcmVzb2x2ZXIga2V5
IHR5cGUNClsgICAgMC4xNTcxNjJdIHJlZ2lzdGVyZWQgdGFza3N0YXRzIHZlcnNpb24gMQ0K
WyAgICAwLjE2OTQ1NV0gcGNpZnJvbnQgcGNpLTA6IGNsYWltaW5nIHJlc291cmNlIDAwMDA6
MDA6MDAuMC8wDQpbICAgIDAuMTY5NDY3XSBwY2lmcm9udCBwY2ktMDogY2xhaW1pbmcgcmVz
b3VyY2UgMDAwMDowMDowMS4wLzANClsgICAgMC4xNjk0NzNdIHBjaWZyb250IHBjaS0wOiBj
bGFpbWluZyByZXNvdXJjZSAwMDAwOjAwOjAyLjAvMA0KWyAgICAwLjI1NjE1OF0gWEVOQlVT
OiBEZXZpY2Ugd2l0aCBubyBkcml2ZXI6IGRldmljZS92YmQvNTE3MTMNClsgICAgMC4yNTYx
OTNdIFhFTkJVUzogRGV2aWNlIHdpdGggbm8gZHJpdmVyOiBkZXZpY2UvdmJkLzUxNzE0DQpb
ICAgIDAuMjU2MjEwXSBYRU5CVVM6IERldmljZSB3aXRoIG5vIGRyaXZlcjogZGV2aWNlL3Zi
ZC81MTcyOQ0KWyAgICAwLjI1NjIyNV0gWEVOQlVTOiBEZXZpY2Ugd2l0aCBubyBkcml2ZXI6
IGRldmljZS92aWYvMA0KWyAgICAwLjI1NjIzOV0gWEVOQlVTOiBEZXZpY2Ugd2l0aCBubyBk
cml2ZXI6IGRldmljZS9jb25zb2xlLzANClsgICAgMC4yNTYyODldIGRyaXZlcnMvcnRjL2hj
dG9zeXMuYzogdW5hYmxlIHRvIG9wZW4gcnRjIGRldmljZSAocnRjMCkNClsgICAgMC4yNTYz
NjVdIEluaXRpYWxpemluZyBuZXR3b3JrIGRyb3AgbW9uaXRvciBzZXJ2aWNlDQpbICAgIDAu
MjU3MTkxXSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA1NjhrIGZyZWVkDQpbICAg
IDAuMjU3NTczXSBXcml0ZSBwcm90ZWN0aW5nIHRoZSBrZXJuZWwgcmVhZC1vbmx5IGRhdGE6
IDYxNDRrDQpbICAgIDAuMjY2NDUwXSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA2
OTZrIGZyZWVkDQpbICAgIDAuMjY4MDAzXSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5
OiA4NDRrIGZyZWVkDQpMb2FkaW5nLCBwbGVhc2Ugd2FpdC4uLg0KWyAgICAwLjMyNDM4NF0g
dWRldls0NF06IHN0YXJ0aW5nIHZlcnNpb24gMTY0DQpbICAgIDAuMzY2MDcxXSBJbml0aWFs
aXNpbmcgWGVuIHZpcnR1YWwgZXRoZXJuZXQgZHJpdmVyLg0KWyAgICAwLjQ3NzIxNF0gYmxr
ZnJvbnQ6IHh2ZGExOiBiYXJyaWVyOiBlbmFibGVkDQpbICAgIDAuNDkzNDI4XSBibGtmcm9u
dDogeHZkYTI6IGJhcnJpZXI6IGVuYWJsZWQNClsgICAgMC41MDE4NDVdIFNldHRpbmcgY2Fw
YWNpdHkgdG8gODM4ODYwOA0KWyAgICAwLjUwMTg2MF0geHZkYTE6IGRldGVjdGVkIGNhcGFj
aXR5IGNoYW5nZSBmcm9tIDAgdG8gNDI5NDk2NzI5Ng0KWyAgICAwLjUwMjcwMF0gYmxrZnJv
bnQ6IHh2ZGIxOiBiYXJyaWVyOiBlbmFibGVkDQpbICAgIDAuNTA2MTg2XSBTZXR0aW5nIGNh
cGFjaXR5IHRvIDIwOTcxNTINClsgICAgMC41MDYyMDNdIHh2ZGEyOiBkZXRlY3RlZCBjYXBh
Y2l0eSBjaGFuZ2UgZnJvbSAwIHRvIDEwNzM3NDE4MjQNClsgICAgMC41MDY1NzJdIFNldHRp
bmcgY2FwYWNpdHkgdG8gMjkzMDI3MjAwMg0KWyAgICAwLjUwNjU4MV0geHZkYjE6IGRldGVj
dGVkIGNhcGFjaXR5IGNoYW5nZSBmcm9tIDAgdG8gMTUwMDI5OTI2NTAyNA0KQmVnaW46IExv
YWRpbmcgZXNzZW50aWFsIGRyaXZlcnMgLi4uIGRvbmUuDQpCZWdpbjogUnVubmluZyAvc2Ny
aXB0cy9pbml0LXByZW1vdW50IC4uLiBkb25lLg0KQmVnaW46IE1vdW50aW5nIHJvb3QgZmls
ZSBzeXN0ZW0gLi4uIEJlZ2luOiBSdW5uaW5nIC9zY3JpcHRzL2xvY2FsLXRvcCAuLi4gZG9u
ZS4NCkJlZ2luOiBSdW5uaW5nIC9zY3JpcHRzL2xvY2FsLXByZW1vdW50IC4uLiBbICAgIDAu
Njk1NzM2XSBQTTogU3RhcnRpbmcgbWFudWFsIHJlc3VtZSBmcm9tIGRpc2sNCmRvbmUuDQpb
ICAgIDAuNzI5Njg4XSBram91cm5hbGQgc3RhcnRpbmcuICBDb21taXQgaW50ZXJ2YWwgNSBz
ZWNvbmRzDQpbICAgIDAuNzI5NzM1XSBFWFQzLWZzICh4dmRhMSk6IG1vdW50ZWQgZmlsZXN5
c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlDQpCZWdpbjogUnVubmluZyAvc2NyaXB0cy9s
b2NhbC1ib3R0b20gLi4uIGRvbmUuDQpkb25lLg0KQmVnaW46IFJ1bm5pbmcgL3NjcmlwdHMv
aW5pdC1ib3R0b20gLi4uIGRvbmUuDQoNSU5JVDogdmVyc2lvbiAyLjg4IGJvb3RpbmcNDQpV
c2luZyBtYWtlZmlsZS1zdHlsZSBjb25jdXJyZW50IGJvb3QgaW4gcnVubGV2ZWwgUy4NClN0
YXJ0aW5nIHRoZSBob3RwbHVnIGV2ZW50cyBkaXNwYXRjaGVyOiB1ZGV2ZFsgICAgMS42OTg2
NjVdIHVkZXZbMTU1XTogc3RhcnRpbmcgdmVyc2lvbiAxNjQNCi4NClN5bnRoZXNpemluZyB0
aGUgaW5pdGlhbCBob3RwbHVnIGV2ZW50cy4uLmRvbmUuDQpXYWl0aW5nIGZvciAvZGV2IHRv
IGJlIGZ1bGx5IHBvcHVsYXRlZC4uLlsgICAgMS45NTY1NDFdIGlucHV0OiBQQyBTcGVha2Vy
IGFzIC9kZXZpY2VzL3BsYXRmb3JtL3Bjc3Brci9pbnB1dC9pbnB1dDANClsgICAgMi4yODIw
MTZdIEVycm9yOiBEcml2ZXIgJ3Bjc3BrcicgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCBhYm9y
dGluZy4uLg0KWyAgICAyLjMzMTEyNl0gTGludXggdmlkZW8gY2FwdHVyZSBpbnRlcmZhY2U6
IHYyLjAwDQpbICAgIDIuMzUxOTgxXSBzYWE3MTQ2OiByZWdpc3RlciBleHRlbnNpb24gJ2J1
ZGdldF9hdicNClsgICAgMi4zNTI2MjJdIGJ1ZGdldF9hdiAwMDAwOjAwOjAwLjA6IGVuYWJs
aW5nIGRldmljZSAoMDAwMCAtPiAwMDAyKQ0KWyAgICAyLjM1MzYyOF0gYnVkZ2V0X2F2IDAw
MDA6MDA6MDAuMDogWGVuIFBDSSBtYXBwZWQgR1NJMTcgdG8gSVJRMjgNClsgICAgMi4zNTQz
MTZdIHNhYTcxNDY6IGZvdW5kIHNhYTcxNDYgQCBtZW0gZmZmZmM5MDAwMDQwNjAwMCAocmV2
aXNpb24gMSwgaXJxIDI4KSAoMHgxODk0LDB4MDAyOCkNClsgICAgMi4zNTQzNDRdIHNhYTcx
NDYgKDApOiBkbWEgYnVmZmVyIHNpemUgMTM0NzU4NA0KWyAgICAyLjM1NDM2MF0gRFZCOiBy
ZWdpc3RlcmluZyBuZXcgYWRhcHRlciAoS05DMSBEVkItQyBUREExMDAyNCkNClsgICAgMi4z
ODkzNzhdIGFkYXB0ZXIgZmFpbGVkIE1BQyBzaWduYXR1cmUgY2hlY2sNClsgICAgMi4zODk0
MDVdIGVuY29kZWQgTUFDIGZyb20gRUVQUk9NIHdhcyBmZjpmZjpmZjpmZjpmZjpmZjpmZjpm
ZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZg0KWyAgICAyLjY2MDU5NV0g
YnVkZ2V0X2F2OiBLTkMxLTA6IE1BQyBhZGRyID0gMDA6MDk6ZDY6NmQ6YjM6MGENClsgICAg
Mi44MjkxNzJdIERWQjogcmVnaXN0ZXJpbmcgYWRhcHRlciAwIGZyb250ZW5kIDAgKFBoaWxp
cHMgVERBMTAwMjMgRFZCLUMpLi4uDQpbICAgIDIuODI5ODQ3XSBidWRnZXRfYXY6IGNpIGlu
dGVyZmFjZSBpbml0aWFsaXNlZA0KWyAgICAyLjgzMDM3MV0gYnVkZ2V0X2F2IDAwMDA6MDA6
MDEuMDogWGVuIFBDSSBtYXBwZWQgR1NJMTggdG8gSVJRMjkNClsgICAgMi44MzExOTBdIHNh
YTcxNDY6IGZvdW5kIHNhYTcxNDYgQCBtZW0gZmZmZmM5MDAwMDY5ODAwMCAocmV2aXNpb24g
MSwgaXJxIDI5KSAoMHgxODk0LDB4MDAyYykNClsgICAgMi44MzEyMTddIHNhYTcxNDYgKDEp
OiBkbWEgYnVmZmVyIHNpemUgMTM0NzU4NA0KWyAgICAyLjgzMTIzM10gRFZCOiByZWdpc3Rl
cmluZyBuZXcgYWRhcHRlciAoU2F0ZWxjbyBFYXN5V2F0Y2ggRFZCLUMgTUszKQ0KWyAgICAy
Ljg2NjAwOV0gYWRhcHRlciBmYWlsZWQgTUFDIHNpZ25hdHVyZSBjaGVjaw0KWyAgICAyLjg2
NjAzNl0gZW5jb2RlZCBNQUMgZnJvbSBFRVBST00gd2FzIGZmOmZmOmZmOmZmOmZmOmZmOmZm
OmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmDQpbICAgIDMuMTQwNzM2
XSBidWRnZXRfYXY6IEtOQzEtMTogTUFDIGFkZHIgPSAwMDowOTpkNjo2ZDpiMDozMw0KWyAg
ICAzLjI4MTE3MF0gRFZCOiByZWdpc3RlcmluZyBhZGFwdGVyIDEgZnJvbnRlbmQgMCAoUGhp
bGlwcyBUREExMDAyMyBEVkItQykuLi4NClsgICAgMy4yODM3OTBdIGJ1ZGdldF9hdjogY2kg
aW50ZXJmYWNlIGluaXRpYWxpc2VkDQpbICAgIDMuMjg0NTA3XSBidWRnZXRfYXYgMDAwMDow
MDowMi4wOiBYZW4gUENJIG1hcHBlZCBHU0kxOSB0byBJUlEzMA0KWyAgICAzLjI4NTEyNV0g
c2FhNzE0NjogZm91bmQgc2FhNzE0NiBAIG1lbSBmZmZmYzkwMDAwOTI2MDAwIChyZXZpc2lv
biAxLCBpcnEgMzApICgweDE4OTQsMHgwMDIyKQ0KWyAgICAzLjI4NTE1NV0gc2FhNzE0NiAo
Mik6IGRtYSBidWZmZXIgc2l6ZSAxMzQ3NTg0DQpbICAgIDMuMjg1MTcxXSBEVkI6IHJlZ2lz
dGVyaW5nIG5ldyBhZGFwdGVyIChLTkMxIERWQi1DIE1LMykNClsgICAgMy4zMjE0MzddIGFk
YXB0ZXIgZmFpbGVkIE1BQyBzaWduYXR1cmUgY2hlY2sNClsgICAgMy4zMjE0NjZdIGVuY29k
ZWQgTUFDIGZyb20gRUVQUk9NIHdhcyBmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpm
ZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZjpmZg0KWyAgICAzLjU5NjYwMl0gYnVkZ2V0X2F2
OiBLTkMxLTI6IE1BQyBhZGRyID0gMDA6MDk6ZDY6NmQ6NmQ6N2ENClsgICAgMy43MzcxNjZd
IERWQjogcmVnaXN0ZXJpbmcgYWRhcHRlciAyIGZyb250ZW5kIDAgKFBoaWxpcHMgVERBMTAw
MjMgRFZCLUMpLi4uDQpbICAgIDMuNzM3ODI2XSBidWRnZXRfYXY6IGNpIGludGVyZmFjZSBp
bml0aWFsaXNlZA0KZG9uZS4NCkFjdGl2YXRpbmcgc3dhcC4uLlsgICAgMy45NzczNDJdIEFk
ZGluZyAxMDQ4NTcyayBzd2FwIG9uIC9kZXYveHZkYTIuICBQcmlvcml0eTotMSBleHRlbnRz
OjEgYWNyb3NzOjEwNDg1NzJrIFNTDQpkb25lLg0KWyAgICAzLjk4NTY1N10gRVhUMy1mcyAo
eHZkYTEpOiB3YXJuaW5nOiBtYXhpbWFsIG1vdW50IGNvdW50IHJlYWNoZWQsIHJ1bm5pbmcg
ZTJmc2NrIGlzIHJlY29tbWVuZGVkDQpbICAgIDMuOTg2MDYxXSBFWFQzLWZzICh4dmRhMSk6
IHVzaW5nIGludGVybmFsIGpvdXJuYWwNCkxvYWRpbmcga2VybmVsIG1vZHVsZXMuLi5kb25l
Lg0KQ2xlYW5pbmcgdXAgaWZ1cGRvd24uLi4uDQpTZXR0aW5nIHVwIG5ldHdvcmtpbmcuLi4u
DQpBY3RpdmF0aW5nIGx2bSBhbmQgbWQgc3dhcC4uLmRvbmUuDQpDaGVja2luZyBmaWxlIHN5
c3RlbXMuLi5mc2NrIGZyb20gdXRpbC1saW51eC1uZyAyLjE3LjINCmRvbmUuDQpNb3VudGlu
ZyBsb2NhbCBmaWxlc3lzdGVtcy4uLlsgICAgNC40Mjg1NDBdIGtqb3VybmFsZCBzdGFydGlu
Zy4gIENvbW1pdCBpbnRlcnZhbCA1IHNlY29uZHMNClsgICAgNC40Mjk2ODBdIEVYVDMtZnMg
KHh2ZGIxKTogd2FybmluZzogbWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5n
IGUyZnNjayBpcyByZWNvbW1lbmRlZA0KWyAgICA0LjQzMjM3MF0gRVhUMy1mcyAoeHZkYjEp
OiB1c2luZyBpbnRlcm5hbCBqb3VybmFsDQpbICAgIDQuNDMyMzk5XSBFWFQzLWZzICh4dmRi
MSk6IHJlY292ZXJ5IGNvbXBsZXRlDQpbICAgIDQuNDMyNDE5XSBFWFQzLWZzICh4dmRiMSk6
IG1vdW50ZWQgZmlsZXN5c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlDQpkb25lLg0KQWN0
aXZhdGluZyBzd2FwZmlsZSBzd2FwLi4uZG9uZS4NCkNsZWFuaW5nIHVwIHRlbXBvcmFyeSBm
aWxlcy4uLi4NCkNvbmZpZ3VyaW5nIG5ldHdvcmsgaW50ZXJmYWNlcy4uLlNldHRpbmcga2Vy
bmVsIHZhcmlhYmxlcyAuLi5lcnJvcjogInhlbi5pbmRlcGVuZGVudF93YWxsY2xvY2siIGlz
IGFuIHVua25vd24ga2V5DQobWzMxbWZhaWxlZC4bWzM5OzQ5bQ0KZG9uZS4NClN0YXJ0aW5n
IHBvcnRtYXAgZGFlbW9uLi4uLg0KU3RhcnRpbmcgTkZTIGNvbW1vbiB1dGlsaXRpZXM6IHN0
YXRkWyAgICA1LjQ2OTgxN10gUlBDOiBSZWdpc3RlcmVkIG5hbWVkIFVOSVggc29ja2V0IHRy
YW5zcG9ydCBtb2R1bGUuDQpbICAgIDUuNDY5ODU0XSBSUEM6IFJlZ2lzdGVyZWQgdWRwIHRy
YW5zcG9ydCBtb2R1bGUuDQpbICAgIDUuNDY5ODcwXSBSUEM6IFJlZ2lzdGVyZWQgdGNwIHRy
YW5zcG9ydCBtb2R1bGUuDQpbICAgIDUuNDY5ODg0XSBSUEM6IFJlZ2lzdGVyZWQgdGNwIE5G
U3Y0LjEgYmFja2NoYW5uZWwgdHJhbnNwb3J0IG1vZHVsZS4NClsgICAgNS41MzU3ODddIEZT
LUNhY2hlOiBMb2FkZWQNClsgICAgNS41NjY1NDJdIEZTLUNhY2hlOiBOZXRmcyAnbmZzJyBy
ZWdpc3RlcmVkIGZvciBjYWNoaW5nDQpbICAgIDUuNjAxNzU5XSBJbnN0YWxsaW5nIGtuZnNk
IChjb3B5cmlnaHQgKEMpIDE5OTYgb2tpckBtb25hZC5zd2IuZGUpLg0KIGlkbWFwZC4NCkNs
ZWFuaW5nIHVwIHRlbXBvcmFyeSBmaWxlcy4uLi4NClNldHRpbmcgY29uc29sZSBzY3JlZW4g
bW9kZXMgYW5kIGZvbnRzLg0KG11SY2Fubm90ICh1bilzZXQgcG93ZXJzYXZlIG1vZGUNChtb
OTszMF0bWzE0OzMwXQ1JTklUOiBFbnRlcmluZyBydW5sZXZlbDogMg0NClVzaW5nIG1ha2Vm
aWxlLXN0eWxlIGNvbmN1cnJlbnQgYm9vdCBpbiBydW5sZXZlbCAyLg0KU3RhcnRpbmcgcG9y
dG1hcCBkYWVtb24uLi5BbHJlYWR5IHJ1bm5pbmcuLg0KU3RhcnRpbmcgTkZTIGNvbW1vbiB1
dGlsaXRpZXM6IHN0YXRkIGlkbWFwZC4NClN0YXJ0aW5nIGVuaGFuY2VkIHN5c2xvZ2Q6IHJz
eXNsb2dkLg0KWyAgICA2LjUwMDgyM10gc3ZjOiBmYWlsZWQgdG8gcmVnaXN0ZXIgbG9ja2R2
MSBSUEMgc2VydmljZSAoZXJybm8gOTcpLg0KWyAgICA2LjUwNDM5OV0gTkZTRDogVXNpbmcg
L3Zhci9saWIvbmZzL3Y0cmVjb3ZlcnkgYXMgdGhlIE5GU3Y0IHN0YXRlIHJlY292ZXJ5IGRp
cmVjdG9yeQ0KWyAgICA2LjUyNjY4OF0gTkZTRDogc3RhcnRpbmcgOTAtc2Vjb25kIGdyYWNl
IHBlcmlvZA0KRXhwb3J0aW5nIGRpcmVjdG9yaWVzIGZvciBORlMga2VybmVsIGRhZW1vbi4u
Li4NClN0YXJ0aW5nIE5GUyBrZXJuZWwgZGFlbW9uOiBuZnNkIG1vdW50ZC4NClN0YXJ0aW5n
IHBlcmlvZGljIGNvbW1hbmQgc2NoZWR1bGVyOiBjcm9uLg0KU3RhcnRpbmcgc3lzdGVtIG1l
c3NhZ2UgYnVzOiBkYnVzLg0KU3RhcnRpbmcgTlRQIHNlcnZlcjogbnRwZC4NClN0YXJ0aW5n
IFNhbWJhIGRhZW1vbnM6IG5tYmQgc21iZC4NClN0YXJ0aW5nIE9wZW5CU0QgU2VjdXJlIFNo
ZWxsIHNlcnZlcjogc3NoZFsgICAgNy45NDE2NDldIHNzaGQgKDcwMyk6IC9wcm9jLzcwMy9v
b21fYWRqIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgL3Byb2MvNzAzL29vbV9zY29yZV9h
ZGogaW5zdGVhZC4NCi4NClN0YXJ0aW5nIExpbnV4IFZpZGVvIERpc2sgUmVjb3JkZXI6IHZk
cg0KU2VhcmNoaW5nIGZvciBwbHVnaW5zIChWRFIgMS43LjIxLzEuNy4yMSkgKGNhY2hlIGhp
dCk6dmRyYWRtaW4tYW06IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkNCiBlcGdzZWFyY2hv
bmx5IHh2ZHIgZXBnc2VhcmNoIHZvbXBzZXJ2ZXIgZmVtb24gcXVpY2tlcGdzZWFyY2ggY29u
ZmxpY3RjaGVja29ubHkgd2lyYmVsc2Nhbi4NClN0YXJ0aW5nIE11bmluLU5vZGU6IGRvbmUu
DQpzdGFydHBhcjogc2VydmljZShzKSByZXR1cm5lZCBmYWlsdXJlOiB2ZHJhZG1pbi1hbSAu
Li4gG1szMW1mYWlsZWQhG1szOTs0OW0NClsgICAxNC42NzQ4ODNdIEJVRzogdW5hYmxlIHRv
IGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgZmZmZmM3ZmZmZmZmZjAwMA0KWyAg
IDE0LjY3NDkxMF0gSVA6IFs8ZmZmZmZmZmY4MTFiNGMwYj5dIHN3aW90bGJfYm91bmNlKzB4
MmUvMHgzMQ0KWyAgIDE0LjY3NDkzMF0gUEdEIDAgDQpbICAgMTQuNjc0OTQwXSBPb3BzOiAw
MDAyIFsjMV0gU01QIA0KWyAgIDE0LjY3NDk1Ml0gQ1BVIDAgDQpbICAgMTQuNjc0OTU3XSBN
b2R1bGVzIGxpbmtlZCBpbjogbmZzZCBleHBvcnRmcyBuZnMgbG9ja2QgZnNjYWNoZSBhdXRo
X3JwY2dzcyBuZnNfYWNsIHN1bnJwYyB0ZGExMDAyMyBidWRnZXRfYXYgZXZkZXYgc2FhNzE0
Nl92diB2aWRlb2RldiB2NGwyX2NvbXBhdF9pb2N0bDMyIHZpZGVvYnVmX2RtYV9zZyB2aWRl
b2J1Zl9jb3JlIGJ1ZGdldF9jb3JlIHNuZF9wY20gZHZiX2NvcmUgc25kX3RpbWVyIHNhYTcx
NDYgc25kIHR0cGNpX2VlcHJvbSBzb3VuZGNvcmUgc25kX3BhZ2VfYWxsb2MgaTJjX2NvcmUg
cGNzcGtyIGV4dDMgamJkIG1iY2FjaGUgeGVuX25ldGZyb250IHhlbl9ibGtmcm9udA0KWyAg
IDE0LjY3NTA1N10gDQpbICAgMTQuNjc1MDY1XSBQaWQ6IDAsIGNvbW06IHN3YXBwZXIvMCBO
b3QgdGFpbnRlZCAzLjIuOC1hbWQ2NCAjMSAgDQpbICAgMTQuNjc1MDc5XSBSSVA6IGUwMzA6
WzxmZmZmZmZmZjgxMWI0YzBiPl0gIFs8ZmZmZmZmZmY4MTFiNGMwYj5dIHN3aW90bGJfYm91
bmNlKzB4MmUvMHgzMQ0KWyAgIDE0LjY3NTA5N10gUlNQOiBlMDJiOmZmZmY4ODAwMTNmYWJl
NTggIEVGTEFHUzogMDAwMTAyMDINClsgICAxNC42NzUxMDZdIFJBWDogZmZmZjg4MDAxMjgw
MDAwMCBSQlg6IDAwMDAwMDAwMDAwMDAwMDEgUkNYOiAwMDAwMDAwMDAwMDAxMDAwDQpbICAg
MTQuNjc1MTE2XSBSRFg6IDAwMDAwMDAwMDAwMDEwMDAgUlNJOiBmZmZmODgwMDEyODAwMDAw
IFJESTogZmZmZmM3ZmZmZmZmZjAwMA0KWyAgIDE0LjY3NTEyNl0gUkJQOiAwMDAwMDAwMDAw
MDAwMDAyIFIwODogZmZmZmM3ZmZmZmZmZjAwMCBSMDk6IGZmZmY4ODAwMTNmOTgwMDANClsg
ICAxNC42NzUxMzddIFIxMDogMDAwMDAwMDAwMDAwMDAwMSBSMTE6IGZmZmY4ODAwMDMzNzYw
MDAgUjEyOiBmZmZmODgwMDAzMmM1MDkwDQpbICAgMTQuNjc1MTQ3XSBSMTM6IDAwMDAwMDAw
MDAwMDAxNDkgUjE0OiBmZmZmODgwMDAzM2UwMDAwIFIxNTogZmZmZmZmZmY4MTYwMWZkOA0K
WyAgIDE0LjY3NTE2M10gRlM6ICAwMDAwN2YzZmY5ODkzNzAwKDAwMDApIEdTOmZmZmY4ODAw
MTNmYTgwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMA0KWyAgIDE0LjY3NTE3NV0g
Q1M6ICBlMDMzIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzYg0KWyAg
IDE0LjY3NTE4NF0gQ1IyOiBmZmZmYzdmZmZmZmZmMDAwIENSMzogMDAwMDAwMDAxMjY4MzAw
MCBDUjQ6IDAwMDAwMDAwMDAwMDA2NjANClsgICAxNC42NzUxOTVdIERSMDogMDAwMDAwMDAw
MDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAwDQpb
ICAgMTQuNjc1MjA1XSBEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmYw
ZmYwIERSNzogMDAwMDAwMDAwMDAwMDQwMA0KWyAgIDE0LjY3NTIxNl0gUHJvY2VzcyBzd2Fw
cGVyLzAgKHBpZDogMCwgdGhyZWFkaW5mbyBmZmZmZmZmZjgxNjAwMDAwLCB0YXNrIGZmZmZm
ZmZmODE2MGQwMjApDQpbICAgMTQuNjc1MjI3XSBTdGFjazoNClsgICAxNC42NzUyMzJdICBm
ZmZmZmZmZjgxMjExODI2IGZmZmY4ODAwMDJlZGEwMDAgMDAwMDAwMDAwMDAwMDAwMCBmZmZm
YzkwMDAwNDA4MDAwDQpbICAgMTQuNjc1MjUxXSAgMDAwMDAwMDAwMDBiMDE1MCAwMDAwMDAw
MDAwMDAwMDA2IGZmZmZmZmZmYTAxM2VjNGEgZmZmZmZmZmY4MTA5NDZjZA0KWyAgIDE0LjY3
NTI3MF0gIGZmZmZmZmZmODEwOTkyMDMgZmZmZjg4MDAwMzM3NjAwMCAwMDAwMDAwMDAwMDAw
MDAwIGZmZmY4ODAwMDJlZGE0YjANClsgICAxNC42NzUyODldIENhbGwgVHJhY2U6DQpbICAg
MTQuNjc1Mjk1XSAgPElSUT4gDQpbICAgMTQuNjc1MzA3XSAgWzxmZmZmZmZmZjgxMjExODI2
Pl0gPyB4ZW5fc3dpb3RsYl9zeW5jX3NnX2Zvcl9jcHUrMHgyZS8weDQ3DQpbICAgMTQuNjc1
MzIyXSAgWzxmZmZmZmZmZmEwMTNlYzRhPl0gPyB2cGVpcnErMHg3Zi8weDE5OCBbYnVkZ2V0
X2NvcmVdDQpbICAgMTQuNjc1MzM3XSAgWzxmZmZmZmZmZjgxMDk0NmNkPl0gPyBoYW5kbGVf
aXJxX2V2ZW50X3BlcmNwdSsweDE2Ni8weDE4NA0KWyAgIDE0LjY3NTM1MF0gIFs8ZmZmZmZm
ZmY4MTA5OTIwMz5dID8gX19yY3VfcHJvY2Vzc19jYWxsYmFja3MrMHg3MS8weDJmOA0KWyAg
IDE0LjY3NTM2NF0gIFs8ZmZmZmZmZmY4MTA0ZDE3NT5dID8gdGFza2xldF9hY3Rpb24rMHg3
Ni8weGM1DQpbICAgMTQuNjc1Mzc2XSAgWzxmZmZmZmZmZjgxMjBhOWFjPl0gPyBlb2lfcGly
cSsweDViLzB4NzcNClsgICAxNC42NzUzODhdICBbPGZmZmZmZmZmODEwNGNiYzY+XSA/IF9f
ZG9fc29mdGlycSsweGM0LzB4MWEwDQpbICAgMTQuNjc1NDAwXSAgWzxmZmZmZmZmZjgxMjBh
MDIyPl0gPyBfX3hlbl9ldnRjaG5fZG9fdXBjYWxsKzB4MWM3LzB4MjA1DQpbICAgMTQuNjc1
NDEyXSAgWzxmZmZmZmZmZjgxMzRiMDZjPl0gPyBjYWxsX3NvZnRpcnErMHgxYy8weDMwDQpb
ICAgMTQuNjc1NDI1XSAgWzxmZmZmZmZmZjgxMDBmYTQ3Pl0gPyBkb19zb2Z0aXJxKzB4M2Yv
MHg3OQ0KWyAgIDE0LjY3NTQzNl0gIFs8ZmZmZmZmZmY4MTA0Yzk5Nj5dID8gaXJxX2V4aXQr
MHg0NC8weGI1DQpbICAgMTQuNjc1NDUyXSAgWzxmZmZmZmZmZjgxMjBiMDMyPl0gPyB4ZW5f
ZXZ0Y2huX2RvX3VwY2FsbCsweDI3LzB4MzINClsgICAxNC42NzU0NjRdICBbPGZmZmZmZmZm
ODEzNGIwYmU+XSA/IHhlbl9kb19oeXBlcnZpc29yX2NhbGxiYWNrKzB4MWUvMHgzMA0KWyAg
IDE0LjY3NTQ3M10gIDxFT0k+IA0KWyAgIDE0LjY3NTQ4NF0gIFs8ZmZmZmZmZmY4MTAwNzM2
Zj5dID8geGVuX3Jlc3RvcmVfZmxfZGlyZWN0X3JlbG9jKzB4NC8weDQNClsgICAxNC42NzU0
OTZdICBbPGZmZmZmZmZmODEwMDEzYWE+XSA/IGh5cGVyY2FsbF9wYWdlKzB4M2FhLzB4MTAw
MA0KWyAgIDE0LjY3NTUwN10gIFs8ZmZmZmZmZmY4MTAwMTNhYT5dID8gaHlwZXJjYWxsX3Bh
Z2UrMHgzYWEvMHgxMDAwDQpbICAgMTQuNjc1NTIxXSAgWzxmZmZmZmZmZjgxMjZhZTE3Pl0g
PyBjcHVpZGxlX2lkbGVfY2FsbCsweDE2LzB4MWFmDQpbICAgMTQuNjc1NTMzXSAgWzxmZmZm
ZmZmZjgxMDA2ZDE0Pl0gPyB4ZW5fc2FmZV9oYWx0KzB4Yy8weDE1DQpbICAgMTQuNjc1NTQ1
XSAgWzxmZmZmZmZmZjgxMDE1MGEyPl0gPyBkZWZhdWx0X2lkbGUrMHg0Yi8weDg0DQpbICAg
MTQuNjc1NTU2XSAgWzxmZmZmZmZmZjgxMDBkZGY2Pl0gPyBjcHVfaWRsZSsweGI5LzB4ZWYN
ClsgICAxNC42NzU1NjhdICBbPGZmZmZmZmZmODE2OWFiZmY+XSA/IHN0YXJ0X2tlcm5lbCsw
eDM5NS8weDNhMA0KWyAgIDE0LjY3NTU4MF0gIFs8ZmZmZmZmZmY4MTY5YzhhNT5dID8geGVu
X3N0YXJ0X2tlcm5lbCsweDU5My8weDU5OA0KWyAgIDE0LjY3NTU4OV0gQ29kZTogODkgZjAg
NzUgMTMgNDggYmUgMDAgMDAgMDAgMDAgMDAgODggZmYgZmYgNDggOGQgMzQgMzcgNDggODkg
YzcgZWIgMTEgNDkgYjggMDAgMDAgMDAgMDAgMDAgODggZmYgZmYgNGUgOGQgMDQgMDcgNGMg
ODkgYzcgNDggODkgZDEgPGYzPiBhNCBjMyA0OCA4OSBmMCA0OCAyYiAwNSA3MCA5NiA2MiAw
MCA0YyA4YiAwZCA5OSA5NiA2MiAwMCA0OCANClsgICAxNC42NzU3MzVdIFJJUCAgWzxmZmZm
ZmZmZjgxMWI0YzBiPl0gc3dpb3RsYl9ib3VuY2UrMHgyZS8weDMxDQpbICAgMTQuNjc1NzQ4
XSAgUlNQIDxmZmZmODgwMDEzZmFiZTU4Pg0KWyAgIDE0LjY3NTc1NV0gQ1IyOiBmZmZmYzdm
ZmZmZmZmMDAwDQpbICAgMTQuNjc1NzY1XSAtLS1bIGVuZCB0cmFjZSA2Mjg4NzIyZmU5MTkw
OGNkIF0tLS0NClsgICAxNC42NzU3NzRdIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBG
YXRhbCBleGNlcHRpb24gaW4gaW50ZXJydXB0DQpbICAgMTQuNjc1Nzg0XSBQaWQ6IDAsIGNv
bW06IHN3YXBwZXIvMCBUYWludGVkOiBHICAgICAgRCAgICAgIDMuMi44LWFtZDY0ICMxDQpb
ICAgMTQuNjc1NzkzXSBDYWxsIFRyYWNlOg0KWyAgIDE0LjY3NTc5OV0gIDxJUlE+ICBbPGZm
ZmZmZmZmODEzNDBiYWM+XSA/IHBhbmljKzB4OTIvMHgxYTANClsgICAxNC42NzU4MTddICBb
PGZmZmZmZmZmODEwNDc5Njg+XSA/IGttc2dfZHVtcCsweDQxLzB4ZGQNClsgICAxNC42NzU4
MjhdICBbPGZmZmZmZmZmODEzNDM4NDE+XSA/IG9vcHNfZW5kKzB4YTkvMHhiNg0KWyAgIDE0
LjY3NTgzOV0gIFs8ZmZmZmZmZmY4MTAyZWM3NT5dID8gbm9fY29udGV4dCsweDFmZi8weDIw
Yw0KWyAgIDE0LjY3NTg1Ml0gIFs8ZmZmZmZmZmY4MTA0M2JmYT5dID8gdHJ5X3RvX3dha2Vf
dXArMHgxODEvMHgxOTENClsgICAxNC42NzU4NjNdICBbPGZmZmZmZmZmODEzNDU5MWQ+XSA/
IGRvX3BhZ2VfZmF1bHQrMHgxYWQvMHgzNGMNClsgICAxNC42NzU4NzVdICBbPGZmZmZmZmZm
ODEwMmMxMjI+XSA/IHB2Y2xvY2tfY2xvY2tzb3VyY2VfcmVhZCsweDQ2LzB4YjQNClsgICAx
NC42NzU4ODhdICBbPGZmZmZmZmZmODEwYjc2YzY+XSA/IHBlcmZfZXZlbnRfdGFza190aWNr
KzB4MjUvMHgyM2ENClsgICAxNC42NzU5MDFdICBbPGZmZmZmZmZmODEwNjMxYjg+XSA/IHJ1
bl9wb3NpeF9jcHVfdGltZXJzKzB4MjcvMHg2MWINClsgICAxNC42NzU5MTNdICBbPGZmZmZm
ZmZmODEwNmRmN2I+XSA/IHRpY2tfbm9oel9oYW5kbGVyKzB4Y2IvMHhjYg0KWyAgIDE0LjY3
NTkyNV0gIFs8ZmZmZmZmZmY4MTAxMzk2ZD5dID8gc2NoZWRfY2xvY2srMHg1LzB4OA0KWyAg
IDE0LjY3NTkzNl0gIFs8ZmZmZmZmZmY4MTAyYzEyMj5dID8gcHZjbG9ja19jbG9ja3NvdXJj
ZV9yZWFkKzB4NDYvMHhiNA0KWyAgIDE0LjY3NTk0OF0gIFs8ZmZmZmZmZmY4MTM0MmYzNT5d
ID8gcGFnZV9mYXVsdCsweDI1LzB4MzANClsgICAxNC42NzU5NTldICBbPGZmZmZmZmZmODEx
YjRjMGI+XSA/IHN3aW90bGJfYm91bmNlKzB4MmUvMHgzMQ0KWyAgIDE0LjY3NTk3MV0gIFs8
ZmZmZmZmZmY4MTIxMTgyNj5dID8geGVuX3N3aW90bGJfc3luY19zZ19mb3JfY3B1KzB4MmUv
MHg0Nw0KWyAgIDE0LjY3NTk4NV0gIFs8ZmZmZmZmZmZhMDEzZWM0YT5dID8gdnBlaXJxKzB4
N2YvMHgxOTggW2J1ZGdldF9jb3JlXQ0KWyAgIDE0LjY3NTk5N10gIFs8ZmZmZmZmZmY4MTA5
NDZjZD5dID8gaGFuZGxlX2lycV9ldmVudF9wZXJjcHUrMHgxNjYvMHgxODQNClsgICAxNC42
NzYwMDldICBbPGZmZmZmZmZmODEwOTkyMDM+XSA/IF9fcmN1X3Byb2Nlc3NfY2FsbGJhY2tz
KzB4NzEvMHgyZjgNClsgICAxNC42NzYwMjJdICBbPGZmZmZmZmZmODEwNGQxNzU+XSA/IHRh
c2tsZXRfYWN0aW9uKzB4NzYvMHhjNQ0KWyAgIDE0LjY3NjAzM10gIFs8ZmZmZmZmZmY4MTIw
YTlhYz5dID8gZW9pX3BpcnErMHg1Yi8weDc3DQpbICAgMTQuNjc2MDQ0XSAgWzxmZmZmZmZm
ZjgxMDRjYmM2Pl0gPyBfX2RvX3NvZnRpcnErMHhjNC8weDFhMA0KWyAgIDE0LjY3NjA1OV0g
IFs8ZmZmZmZmZmY4MTIwYTAyMj5dID8gX194ZW5fZXZ0Y2huX2RvX3VwY2FsbCsweDFjNy8w
eDIwNQ0KWyAgIDE0LjY3NjA3Ml0gIFs8ZmZmZmZmZmY4MTM0YjA2Yz5dID8gY2FsbF9zb2Z0
aXJxKzB4MWMvMHgzMA0KWyAgIDE0LjY3NjA4M10gIFs8ZmZmZmZmZmY4MTAwZmE0Nz5dID8g
ZG9fc29mdGlycSsweDNmLzB4NzkNClsgICAxNC42NzYwOTRdICBbPGZmZmZmZmZmODEwNGM5
OTY+XSA/IGlycV9leGl0KzB4NDQvMHhiNQ0KWyAgIDE0LjY3NjEwNl0gIFs8ZmZmZmZmZmY4
MTIwYjAzMj5dID8geGVuX2V2dGNobl9kb191cGNhbGwrMHgyNy8weDMyDQpbICAgMTQuNjc2
MTIwXSAgWzxmZmZmZmZmZjgxMzRiMGJlPl0gPyB4ZW5fZG9faHlwZXJ2aXNvcl9jYWxsYmFj
aysweDFlLzB4MzANClsgICAxNC42NzYxMjldICA8RU9JPiAgWzxmZmZmZmZmZjgxMDA3MzZm
Pl0gPyB4ZW5fcmVzdG9yZV9mbF9kaXJlY3RfcmVsb2MrMHg0LzB4NA0KWyAgIDE0LjY3NjE0
OV0gIFs8ZmZmZmZmZmY4MTAwMTNhYT5dID8gaHlwZXJjYWxsX3BhZ2UrMHgzYWEvMHgxMDAw
DQpbICAgMTQuNjc2MTYwXSAgWzxmZmZmZmZmZjgxMDAxM2FhPl0gPyBoeXBlcmNhbGxfcGFn
ZSsweDNhYS8weDEwMDANClsgICAxNC42NzYxNzJdICBbPGZmZmZmZmZmODEyNmFlMTc+XSA/
IGNwdWlkbGVfaWRsZV9jYWxsKzB4MTYvMHgxYWYNClsgICAxNC42NzYxODRdICBbPGZmZmZm
ZmZmODEwMDZkMTQ+XSA/IHhlbl9zYWZlX2hhbHQrMHhjLzB4MTUNClsgICAxNC42NzYxOTVd
ICBbPGZmZmZmZmZmODEwMTUwYTI+XSA/IGRlZmF1bHRfaWRsZSsweDRiLzB4ODQNClsgICAx
NC42NzYyMDZdICBbPGZmZmZmZmZmODEwMGRkZjY+XSA/IGNwdV9pZGxlKzB4YjkvMHhlZg0K
WyAgIDE0LjY3NjIxN10gIFs8ZmZmZmZmZmY4MTY5YWJmZj5dID8gc3RhcnRfa2VybmVsKzB4
Mzk1LzB4M2EwDQpbICAgMTQuNjc2MjI5XSAgWzxmZmZmZmZmZjgxNjljOGE1Pl0gPyB4ZW5f
c3RhcnRfa2VybmVsKzB4NTkzLzB4NTk4DQo=
--=_F1yjpLocfe5Ra5tK65RmHGcdd2qVYzUzBxBqAXkQZGBAcVOw
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--=_F1yjpLocfe5Ra5tK65RmHGcdd2qVYzUzBxBqAXkQZGBAcVOw--



From xen-devel-bounces@lists.xen.org Wed Feb 29 14:25:42 2012
Return-path: <xen-devel-bounces@lists.xen.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Feb 2012 14:25:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xen.org)
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <xen-devel-bounces@lists.xen.org>)
	id 1S2kSy-0004QD-TN; Wed, 29 Feb 2012 14:25:16 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
	by lists.xen.org with esmtp (Exim 4.72)
	(envelope-from <Ian.Campbell@citrix.com>) id 1S2kSw-0004Q8-MR
	for xen-devel@lists.xen.org; Wed, 29 Feb 2012 14:25:15 +0000
Received: from [85.158.139.83:19346] by server-12.bemta-5.messagelabs.com id
	04/87-05587-9453E4F4; Wed, 29 Feb 2012 14:25:13 +0000
X-Env-Sender: Ian.Campbell@citrix.com
X-Msg-Ref: server-15.tower-182.messagelabs.com!1330525509!17169629!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
	VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAxMjM3NzA=\n
X-StarScan-Version: 6.5.5; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10280 invoked from network); 29 Feb 2012 14:25:11 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
	by server-15.tower-182.messagelabs.com with RC4-SHA encrypted SMTP;
	29 Feb 2012 14:25:11 -0000
X-IronPort-AV: E=Sophos;i="4.73,502,1325480400"; d="scan'208";a="22562010"
Received: from ftlpmailmx02.citrite.net ([10.13.107.66])
	by FTLPIPO01.CITRIX.COM with ESMTP/TLS/RC4-MD5;
	29 Feb 2012 09:25:08 -0500
Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com
	(10.13.107.66) with Microsoft SMTP Server id 8.3.213.0;
	Wed, 29 Feb 2012 09:25:08 -0500
Received: from drall.uk.xensource.com ([10.80.227.107])	by
	ukmail1.uk.xensource.com with esmtp (Exim 4.69)	(envelope-from
	<ian.campbell@citrix.com>)	id 1S2kSp-0002MQ-Rb;
	Wed, 29 Feb 2012 14:25:07 +0000
From: Ian Campbell <ian.campbell@citrix.com>
To: Roger Pau Monne <roger.pau@entel.upc.edu>
Date: Wed, 29 Feb 2012 14:25:07 +0000
Message-ID: <1330525507-7833-1-git-send-email-ian.campbell@citrix.com>
X-Mailer: git-send-email 1.7.2.5
MIME-Version: 1.0
Cc: Ian Campbell <ian.campbell@citrix.com>, xen-devel@lists.xen.org
Subject: [Xen-devel] [PATCH] configure: do not require Bison
X-BeenThere: xen-devel@lists.xen.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: Xen developer discussion <xen-devel.lists.xen.org>
List-Unsubscribe: <http://lists.xen.org/cgi-bin/mailman/options/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xen.org>
List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help>
List-Subscribe: <http://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>,
	<mailto:xen-devel-request@lists.xen.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: xen-devel-bounces@lists.xen.org
Errors-To: xen-devel-bounces@lists.xen.org

I _think_ this isn't required because we also checkin the generated files. A
more complete fix might also allow the user to force regeneration but I didn't
both here.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
 tools/configure    |  559 +++++++++++++++++++++++++---------------------------
 tools/configure.ac |    1 -
 2 files changed, 268 insertions(+), 292 deletions(-)

diff --git a/tools/configure b/tools/configure
index 5fe72cf..96509b6 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Xen Hypervisor 4.2.
+# Generated by GNU Autoconf 2.67 for Xen Hypervisor 4.2.
 #
 # Report bugs to <xen-devel@lists.xensource.com>.
 #
@@ -91,7 +91,6 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -217,18 +216,11 @@ IFS=$as_save_IFS
   # We cannot yet assume a decent shell, so we have to provide a
 	# neutralization value for shells without unset; and this also
 	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
 	BASH_ENV=/dev/null
 	ENV=/dev/null
 	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
 	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
 fi
 
     if test x$as_have_required = xno; then :
@@ -633,6 +625,7 @@ OCAMLOPT
 OCAMLLIB
 OCAMLVERSION
 OCAMLC
+BISON
 INSTALL_DATA
 INSTALL_SCRIPT
 INSTALL_PROGRAM
@@ -644,7 +637,6 @@ BASH
 XML
 CURL
 FLEX
-BISON
 IP
 PERL
 PYTHON
@@ -748,7 +740,6 @@ APPEND_LIB
 PYTHON
 PERL
 IP
-BISON
 FLEX
 CURL
 XML
@@ -1163,7 +1154,7 @@ Try \`$0 --help' for more information"
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
   esac
@@ -1403,7 +1394,6 @@ Some influential environment variables:
   PYTHON      Path to the Python parser
   PERL        Path to Perl parser
   IP          Path to ip tool
-  BISON       Path to Bison parser generator
   FLEX        Path to Flex lexical analyser generator
   CURL        Path to curl-config tool
   XML         Path to xml2-config tool
@@ -1484,7 +1474,7 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 Xen Hypervisor configure 4.2
-generated by GNU Autoconf 2.68
+generated by GNU Autoconf 2.67
 
 Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
@@ -1530,7 +1520,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_retval=1
 fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_compile
@@ -1567,7 +1557,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
     ac_retval=1
 fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_cpp
@@ -1580,10 +1570,10 @@ fi
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
+  if eval "test \"\${$3+set}\"" = set; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=\$$3
@@ -1650,7 +1640,7 @@ $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
 esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=\$ac_header_compiler"
@@ -1659,7 +1649,7 @@ eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
 fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_header_mongrel
 
@@ -1700,7 +1690,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
        ac_retval=$ac_status
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_run
@@ -1714,7 +1704,7 @@ ac_fn_c_check_header_compile ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1732,7 +1722,7 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_header_compile
 
@@ -1777,65 +1767,11 @@ fi
   # interfere with the next link command; also delete a directory that is
   # left behind by Apple's compiler.  We do this before executing the actions.
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_link
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
 # ac_fn_c_check_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -1844,7 +1780,7 @@ ac_fn_c_check_func ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1899,10 +1835,64 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_func
 
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+
 # ac_fn_c_find_intX_t LINENO BITS VAR
 # -----------------------------------
 # Finds a signed integer type with width BITS, setting cache variable VAR
@@ -1912,7 +1902,7 @@ ac_fn_c_find_intX_t ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
 $as_echo_n "checking for int$2_t... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -1973,7 +1963,7 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_find_intX_t
 
@@ -1986,7 +1976,7 @@ ac_fn_c_check_member ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
 $as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
+if eval "test \"\${$4+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2030,7 +2020,7 @@ fi
 eval ac_res=\$$4
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_check_member
 
@@ -2043,7 +2033,7 @@ ac_fn_c_find_uintX_t ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
 $as_echo_n "checking for uint$2_t... " >&6; }
-if eval \${$3+:} false; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -2083,7 +2073,7 @@ fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
 } # ac_fn_c_find_uintX_t
 cat >config.log <<_ACEOF
@@ -2091,7 +2081,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by Xen Hypervisor $as_me 4.2, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -2349,7 +2339,7 @@ $as_echo "$as_me: loading site script $ac_site_file" >&6;}
       || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
   fi
 done
 
@@ -2504,7 +2494,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2544,7 +2534,7 @@ if test -z "$ac_cv_prog_CC"; then
 set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2597,7 +2587,7 @@ if test -z "$CC"; then
 set dummy ${ac_tool_prefix}cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2637,7 +2627,7 @@ if test -z "$CC"; then
 set dummy cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2696,7 +2686,7 @@ if test -z "$CC"; then
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2740,7 +2730,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2795,7 +2785,7 @@ fi
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -2910,7 +2900,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -2953,7 +2943,7 @@ else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest conftest$ac_cv_exeext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3012,7 +3002,7 @@ $as_echo "$ac_try_echo"; } >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
     fi
   fi
 fi
@@ -3023,7 +3013,7 @@ rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
 ac_clean_files=$ac_clean_files_save
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
 $as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
+if test "${ac_cv_objext+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3064,7 +3054,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
@@ -3074,7 +3064,7 @@ OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3111,7 +3101,7 @@ ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
+if test "${ac_cv_prog_cc_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
@@ -3189,7 +3179,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
@@ -3297,7 +3287,7 @@ if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
+  if test "${ac_cv_prog_CPP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -3413,7 +3403,7 @@ else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -3425,7 +3415,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
+if test "${ac_cv_path_GREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -3488,7 +3478,7 @@ $as_echo "$ac_cv_path_GREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
+if test "${ac_cv_path_EGREP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -3555,7 +3545,7 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
+if test "${ac_cv_header_stdc+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3684,7 +3674,7 @@ done
 
 
   ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
+if test "x$ac_cv_header_minix_config_h" = x""yes; then :
   MINIX=yes
 else
   MINIX=
@@ -3706,7 +3696,7 @@ $as_echo "#define _MINIX 1" >>confdefs.h
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3749,7 +3739,7 @@ $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
+if test "${ac_cv_build+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_build_alias=$build_alias
@@ -3765,7 +3755,7 @@ fi
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -3783,7 +3773,7 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
 $as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
+if test "${ac_cv_host+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "x$host_alias" = x; then
@@ -3798,7 +3788,7 @@ fi
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -4168,11 +4158,10 @@ LDFLAGS="$PREPEND_LDFLAGS $LDFLAGS $APPEND_LDFLAGS"
 
 
 
-
 # Checks for programs.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
+if test "${ac_cv_path_SED+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
@@ -4249,7 +4238,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4289,7 +4278,7 @@ if test -z "$ac_cv_prog_CC"; then
 set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4342,7 +4331,7 @@ if test -z "$CC"; then
 set dummy ${ac_tool_prefix}cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4382,7 +4371,7 @@ if test -z "$CC"; then
 set dummy cc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4441,7 +4430,7 @@ if test -z "$CC"; then
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if test "${ac_cv_prog_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -4485,7 +4474,7 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -4540,7 +4529,7 @@ fi
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -4569,7 +4558,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4606,7 +4595,7 @@ ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
+if test "${ac_cv_prog_cc_g+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
@@ -4684,7 +4673,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
@@ -4794,7 +4783,7 @@ fi
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -4838,7 +4827,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
 $as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
+if test "${ac_cv_path_install+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4918,7 +4907,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 set dummy perl; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
+if test "${ac_cv_path_PERL+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PERL in
@@ -4963,7 +4952,7 @@ fi
 set dummy ip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_IP+:} false; then :
+if test "${ac_cv_path_IP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $IP in
@@ -5008,7 +4997,7 @@ fi
 set dummy bison; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_BISON+:} false; then :
+if test "${ac_cv_path_BISON+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $BISON in
@@ -5053,7 +5042,7 @@ fi
 set dummy flex; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_FLEX+:} false; then :
+if test "${ac_cv_path_FLEX+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $FLEX in
@@ -5100,7 +5089,7 @@ if test "x$xapi" = "xy"; then :
 set dummy curl-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CURL+:} false; then :
+if test "${ac_cv_path_CURL+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $CURL in
@@ -5145,7 +5134,7 @@ fi
 set dummy xml2-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XML+:} false; then :
+if test "${ac_cv_path_XML+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $XML in
@@ -5196,7 +5185,7 @@ if test "x$ocamltools" = "xy"; then :
 set dummy ${ac_tool_prefix}ocamlc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLC+:} false; then :
+if test "${ac_cv_prog_OCAMLC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLC"; then
@@ -5236,7 +5225,7 @@ if test -z "$ac_cv_prog_OCAMLC"; then
 set dummy ocamlc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLC+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLC"; then
@@ -5307,7 +5296,7 @@ $as_echo "OCaml library path is $OCAMLLIB" >&6; }
 set dummy ${ac_tool_prefix}ocamlopt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLOPT+:} false; then :
+if test "${ac_cv_prog_OCAMLOPT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLOPT"; then
@@ -5347,7 +5336,7 @@ if test -z "$ac_cv_prog_OCAMLOPT"; then
 set dummy ocamlopt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLOPT+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLOPT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLOPT"; then
@@ -5417,7 +5406,7 @@ $as_echo "versions differs from ocamlc; ocamlopt discarded." >&6; }
 set dummy ${ac_tool_prefix}ocamlc.opt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLCDOTOPT+:} false; then :
+if test "${ac_cv_prog_OCAMLCDOTOPT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLCDOTOPT"; then
@@ -5457,7 +5446,7 @@ if test -z "$ac_cv_prog_OCAMLCDOTOPT"; then
 set dummy ocamlc.opt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLCDOTOPT+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLCDOTOPT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLCDOTOPT"; then
@@ -5521,7 +5510,7 @@ $as_echo "versions differs from ocamlc; ocamlc.opt discarded." >&6; }
 set dummy ${ac_tool_prefix}ocamlopt.opt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLOPTDOTOPT+:} false; then :
+if test "${ac_cv_prog_OCAMLOPTDOTOPT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLOPTDOTOPT"; then
@@ -5561,7 +5550,7 @@ if test -z "$ac_cv_prog_OCAMLOPTDOTOPT"; then
 set dummy ocamlopt.opt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLOPTDOTOPT+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLOPTDOTOPT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLOPTDOTOPT"; then
@@ -5630,7 +5619,7 @@ $as_echo "version differs from ocamlc; ocamlopt.opt discarded." >&6; }
 set dummy ${ac_tool_prefix}ocaml; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAML+:} false; then :
+if test "${ac_cv_prog_OCAML+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAML"; then
@@ -5670,7 +5659,7 @@ if test -z "$ac_cv_prog_OCAML"; then
 set dummy ocaml; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAML+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAML+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAML"; then
@@ -5724,7 +5713,7 @@ fi
 set dummy ${ac_tool_prefix}ocamldep; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLDEP+:} false; then :
+if test "${ac_cv_prog_OCAMLDEP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLDEP"; then
@@ -5764,7 +5753,7 @@ if test -z "$ac_cv_prog_OCAMLDEP"; then
 set dummy ocamldep; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLDEP+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLDEP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLDEP"; then
@@ -5818,7 +5807,7 @@ fi
 set dummy ${ac_tool_prefix}ocamlmktop; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLMKTOP+:} false; then :
+if test "${ac_cv_prog_OCAMLMKTOP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLMKTOP"; then
@@ -5858,7 +5847,7 @@ if test -z "$ac_cv_prog_OCAMLMKTOP"; then
 set dummy ocamlmktop; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLMKTOP+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLMKTOP+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLMKTOP"; then
@@ -5912,7 +5901,7 @@ fi
 set dummy ${ac_tool_prefix}ocamlmklib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLMKLIB+:} false; then :
+if test "${ac_cv_prog_OCAMLMKLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLMKLIB"; then
@@ -5952,7 +5941,7 @@ if test -z "$ac_cv_prog_OCAMLMKLIB"; then
 set dummy ocamlmklib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLMKLIB+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLMKLIB+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLMKLIB"; then
@@ -6006,7 +5995,7 @@ fi
 set dummy ${ac_tool_prefix}ocamldoc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLDOC+:} false; then :
+if test "${ac_cv_prog_OCAMLDOC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLDOC"; then
@@ -6046,7 +6035,7 @@ if test -z "$ac_cv_prog_OCAMLDOC"; then
 set dummy ocamldoc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLDOC+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLDOC+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLDOC"; then
@@ -6100,7 +6089,7 @@ fi
 set dummy ${ac_tool_prefix}ocamlbuild; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCAMLBUILD+:} false; then :
+if test "${ac_cv_prog_OCAMLBUILD+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$OCAMLBUILD"; then
@@ -6140,7 +6129,7 @@ if test -z "$ac_cv_prog_OCAMLBUILD"; then
 set dummy ocamlbuild; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OCAMLBUILD+:} false; then :
+if test "${ac_cv_prog_ac_ct_OCAMLBUILD+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_OCAMLBUILD"; then
@@ -6203,7 +6192,7 @@ fi
 set dummy bash; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_BASH+:} false; then :
+if test "${ac_cv_path_BASH+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $BASH in
@@ -6260,7 +6249,7 @@ fi
 set dummy $PYTHON; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHONPATH+:} false; then :
+if test "${ac_cv_path_PYTHONPATH+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PYTHONPATH in
@@ -6352,7 +6341,7 @@ fi
 set dummy xgettext; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XGETTEXT+:} false; then :
+if test "${ac_cv_path_XGETTEXT+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $XGETTEXT in
@@ -6396,7 +6385,7 @@ fi
 if test "x$host_os" == "xlinux-gnu"
 then
     ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
-if test "x$ac_cv_header_uuid_uuid_h" = xyes; then :
+if test "x$ac_cv_header_uuid_uuid_h" = x""yes; then :
 
 else
   as_fn_error $? "cannot find uuid headers" "$LINENO" 5
@@ -6405,7 +6394,7 @@ fi
 
 else
     ac_fn_c_check_header_mongrel "$LINENO" "uuid.h" "ac_cv_header_uuid_h" "$ac_includes_default"
-if test "x$ac_cv_header_uuid_h" = xyes; then :
+if test "x$ac_cv_header_uuid_h" = x""yes; then :
 
 else
   as_fn_error $? "cannot find uuid headers" "$LINENO" 5
@@ -6426,7 +6415,7 @@ if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $PKG_CONFIG in
@@ -6469,7 +6458,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
 set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   case $ac_pt_PKG_CONFIG in
@@ -6614,7 +6603,7 @@ and glib_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
 	glib_CFLAGS=$pkg_cv_glib_CFLAGS
 	glib_LIBS=$pkg_cv_glib_LIBS
@@ -6638,7 +6627,7 @@ fi
 # Checks for libraries.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for io_setup in -laio" >&5
 $as_echo_n "checking for io_setup in -laio... " >&6; }
-if ${ac_cv_lib_aio_io_setup+:} false; then :
+if test "${ac_cv_lib_aio_io_setup+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6672,7 +6661,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aio_io_setup" >&5
 $as_echo "$ac_cv_lib_aio_io_setup" >&6; }
-if test "x$ac_cv_lib_aio_io_setup" = xyes; then :
+if test "x$ac_cv_lib_aio_io_setup" = x""yes; then :
   system_aio="y"
 else
   system_aio="n"
@@ -6681,7 +6670,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MD5 in -lcrypto" >&5
 $as_echo_n "checking for MD5 in -lcrypto... " >&6; }
-if ${ac_cv_lib_crypto_MD5+:} false; then :
+if test "${ac_cv_lib_crypto_MD5+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6715,7 +6704,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_MD5" >&5
 $as_echo "$ac_cv_lib_crypto_MD5" >&6; }
-if test "x$ac_cv_lib_crypto_MD5" = xyes; then :
+if test "x$ac_cv_lib_crypto_MD5" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBCRYPTO 1
 _ACEOF
@@ -6728,7 +6717,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ext2fs_open2 in -lext2fs" >&5
 $as_echo_n "checking for ext2fs_open2 in -lext2fs... " >&6; }
-if ${ac_cv_lib_ext2fs_ext2fs_open2+:} false; then :
+if test "${ac_cv_lib_ext2fs_ext2fs_open2+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6762,7 +6751,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ext2fs_ext2fs_open2" >&5
 $as_echo "$ac_cv_lib_ext2fs_ext2fs_open2" >&6; }
-if test "x$ac_cv_lib_ext2fs_ext2fs_open2" = xyes; then :
+if test "x$ac_cv_lib_ext2fs_ext2fs_open2" = x""yes; then :
   libext2fs="y"
 else
   libext2fs="n"
@@ -6771,7 +6760,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcry_md_hash_buffer in -lgcrypt" >&5
 $as_echo_n "checking for gcry_md_hash_buffer in -lgcrypt... " >&6; }
-if ${ac_cv_lib_gcrypt_gcry_md_hash_buffer+:} false; then :
+if test "${ac_cv_lib_gcrypt_gcry_md_hash_buffer+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6805,7 +6794,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcrypt_gcry_md_hash_buffer" >&5
 $as_echo "$ac_cv_lib_gcrypt_gcry_md_hash_buffer" >&6; }
-if test "x$ac_cv_lib_gcrypt_gcry_md_hash_buffer" = xyes; then :
+if test "x$ac_cv_lib_gcrypt_gcry_md_hash_buffer" = x""yes; then :
   libgcrypt="y"
 else
   libgcrypt="n"
@@ -6814,7 +6803,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
 $as_echo_n "checking for pthread_create in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_create+:} false; then :
+if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6848,7 +6837,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5
 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then :
+if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then :
 
 else
   as_fn_error $? "Could not find libpthread" "$LINENO" 5
@@ -6856,7 +6845,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
 $as_echo_n "checking for clock_gettime in -lrt... " >&6; }
-if ${ac_cv_lib_rt_clock_gettime+:} false; then :
+if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6890,7 +6879,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
 $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
-if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
+if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBRT 1
 _ACEOF
@@ -6901,7 +6890,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_clear in -luuid" >&5
 $as_echo_n "checking for uuid_clear in -luuid... " >&6; }
-if ${ac_cv_lib_uuid_uuid_clear+:} false; then :
+if test "${ac_cv_lib_uuid_uuid_clear+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6935,7 +6924,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_clear" >&5
 $as_echo "$ac_cv_lib_uuid_uuid_clear" >&6; }
-if test "x$ac_cv_lib_uuid_uuid_clear" = xyes; then :
+if test "x$ac_cv_lib_uuid_uuid_clear" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBUUID 1
 _ACEOF
@@ -6948,7 +6937,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yajl_alloc in -lyajl" >&5
 $as_echo_n "checking for yajl_alloc in -lyajl... " >&6; }
-if ${ac_cv_lib_yajl_yajl_alloc+:} false; then :
+if test "${ac_cv_lib_yajl_yajl_alloc+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -6982,7 +6971,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_yajl_yajl_alloc" >&5
 $as_echo "$ac_cv_lib_yajl_yajl_alloc" >&6; }
-if test "x$ac_cv_lib_yajl_yajl_alloc" = xyes; then :
+if test "x$ac_cv_lib_yajl_yajl_alloc" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBYAJL 1
 _ACEOF
@@ -6995,7 +6984,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflateCopy in -lz" >&5
 $as_echo_n "checking for deflateCopy in -lz... " >&6; }
-if ${ac_cv_lib_z_deflateCopy+:} false; then :
+if test "${ac_cv_lib_z_deflateCopy+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -7029,7 +7018,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflateCopy" >&5
 $as_echo "$ac_cv_lib_z_deflateCopy" >&6; }
-if test "x$ac_cv_lib_z_deflateCopy" = xyes; then :
+if test "x$ac_cv_lib_z_deflateCopy" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBZ 1
 _ACEOF
@@ -7042,7 +7031,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libiconv_open in -liconv" >&5
 $as_echo_n "checking for libiconv_open in -liconv... " >&6; }
-if ${ac_cv_lib_iconv_libiconv_open+:} false; then :
+if test "${ac_cv_lib_iconv_libiconv_open+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -7076,7 +7065,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_libiconv_open" >&5
 $as_echo "$ac_cv_lib_iconv_libiconv_open" >&6; }
-if test "x$ac_cv_lib_iconv_libiconv_open" = xyes; then :
+if test "x$ac_cv_lib_iconv_libiconv_open" = x""yes; then :
   libiconv="y"
 else
   libiconv="n"
@@ -7085,22 +7074,11 @@ fi
 
 
 # Checks for header files.
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
 $as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
+if test "${ac_cv_working_alloca_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7133,7 +7111,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
 $as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
+if test "${ac_cv_func_alloca_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7152,7 +7130,7 @@ else
  #pragma alloca
 #   else
 #    ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
+char *alloca ();
 #    endif
 #   endif
 #  endif
@@ -7196,7 +7174,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs.h
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
+if test "${ac_cv_os_cray+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7237,7 +7215,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
 $as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
+if test "${ac_cv_c_stack_direction+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -7308,7 +7286,7 @@ done
 # Checks for typedefs, structures, and compiler characteristics.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if ${ac_cv_header_stdbool_h+:} false; then :
+if test "${ac_cv_header_stdbool_h+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7340,7 +7318,7 @@ else
 	char b[false == 0 ? 1 : -1];
 	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
 	char d[(bool) 0.5 == true ? 1 : -1];
-	/* See body of main program for 'e'.  */
+	bool e = &s;
 	char f[(_Bool) 0.0 == false ? 1 : -1];
 	char g[true];
 	char h[sizeof (_Bool)];
@@ -7351,6 +7329,25 @@ else
 	_Bool n[m];
 	char o[sizeof n == m * sizeof n[0] ? 1 : -1];
 	char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+#	if defined __xlc__ || defined __GNUC__
+	 /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+	    reported by James Lemley on 2005-10-05; see
+	    http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+	    This test is not quite right, since xlc is allowed to
+	    reject this program, as the initializer for xlcbug is
+	    not one of the forms that C requires support for.
+	    However, doing the test right would require a runtime
+	    test, and that would make cross-compilation harder.
+	    Let us hope that IBM fixes the xlc bug, and also adds
+	    support for this kind of constant expression.  In the
+	    meantime, this test will reject xlc, which is OK, since
+	    our stdbool.h substitute should suffice.  We also test
+	    this with GCC, where it should work, to detect more
+	    quickly whether someone messes up the test in the
+	    future.  */
+	 char digs[] = "0123456789";
+	 int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+#	endif
 	/* Catch a bug in an HP-UX C compiler.  See
 	   http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
 	   http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
@@ -7362,7 +7359,6 @@ int
 main ()
 {
 
-	bool e = &s;
 	*pq |= q;
 	*pq |= ! q;
 	/* Refer to every declared value, to avoid compiler optimizations.  */
@@ -7383,7 +7379,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
 ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
-if test "x$ac_cv_type__Bool" = xyes; then :
+if test "x$ac_cv_type__Bool" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE__BOOL 1
@@ -7400,7 +7396,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
 $as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
+if test "${ac_cv_type_uid_t+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7430,7 +7426,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
 $as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
+if test "${ac_cv_c_inline+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_c_inline=no
@@ -7515,7 +7511,7 @@ _ACEOF
 esac
 
 ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
-if test "x$ac_cv_type_mode_t" = xyes; then :
+if test "x$ac_cv_type_mode_t" = x""yes; then :
 
 else
 
@@ -7526,7 +7522,7 @@ _ACEOF
 fi
 
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+if test "x$ac_cv_type_off_t" = x""yes; then :
 
 else
 
@@ -7537,7 +7533,7 @@ _ACEOF
 fi
 
 ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
+if test "x$ac_cv_type_pid_t" = x""yes; then :
 
 else
 
@@ -7549,7 +7545,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
 $as_echo_n "checking for C/C++ restrict keyword... " >&6; }
-if ${ac_cv_c_restrict+:} false; then :
+if test "${ac_cv_c_restrict+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_c_restrict=no
@@ -7594,7 +7590,7 @@ _ACEOF
  esac
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = x""yes; then :
 
 else
 
@@ -7605,7 +7601,7 @@ _ACEOF
 fi
 
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
+if test "x$ac_cv_type_ssize_t" = x""yes; then :
 
 else
 
@@ -7616,7 +7612,7 @@ _ACEOF
 fi
 
 ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_blksize" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
@@ -7626,7 +7622,7 @@ _ACEOF
 fi
 
 ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_blocks" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_STAT_ST_BLOCKS 1
@@ -7646,7 +7642,7 @@ fi
 
 
 ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_rdev" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_rdev" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_STAT_ST_RDEV 1
@@ -7710,7 +7706,7 @@ _ACEOF
   esac
 
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+if test "x$ac_cv_type_ptrdiff_t" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_PTRDIFF_T 1
@@ -7723,7 +7719,7 @@ fi
 # Checks for library functions.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5
 $as_echo_n "checking for error_at_line... " >&6; }
-if ${ac_cv_lib_error_at_line+:} false; then :
+if test "${ac_cv_lib_error_at_line+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7759,7 +7755,7 @@ fi
 for ac_header in vfork.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
-if test "x$ac_cv_header_vfork_h" = xyes; then :
+if test "x$ac_cv_header_vfork_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_VFORK_H 1
 _ACEOF
@@ -7783,7 +7779,7 @@ done
 if test "x$ac_cv_func_fork" = xyes; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
 $as_echo_n "checking for working fork... " >&6; }
-if ${ac_cv_func_fork_works+:} false; then :
+if test "${ac_cv_func_fork_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -7836,7 +7832,7 @@ ac_cv_func_vfork_works=$ac_cv_func_vfork
 if test "x$ac_cv_func_vfork" = xyes; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
 $as_echo_n "checking for working vfork... " >&6; }
-if ${ac_cv_func_vfork_works+:} false; then :
+if test "${ac_cv_func_vfork_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -7971,7 +7967,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
+if test "${ac_cv_sys_largefile_source+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -8039,7 +8035,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
-if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then :
+if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   rm -f conftest.sym conftest.file
@@ -8101,7 +8097,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5
 $as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
-if ${ac_cv_header_sys_types_h_makedev+:} false; then :
+if test "${ac_cv_header_sys_types_h_makedev+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8129,7 +8125,7 @@ $as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
 
 if test $ac_cv_header_sys_types_h_makedev = no; then
 ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
+if test "x$ac_cv_header_sys_mkdev_h" = x""yes; then :
 
 $as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
 
@@ -8139,7 +8135,7 @@ fi
 
   if test $ac_cv_header_sys_mkdev_h = no; then
     ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
+if test "x$ac_cv_header_sys_sysmacros_h" = x""yes; then :
 
 $as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
 
@@ -8152,7 +8148,7 @@ fi
 for ac_header in stdlib.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdlib_h" = xyes; then :
+if test "x$ac_cv_header_stdlib_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_STDLIB_H 1
 _ACEOF
@@ -8163,7 +8159,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
 $as_echo_n "checking for GNU libc compatible malloc... " >&6; }
-if ${ac_cv_func_malloc_0_nonnull+:} false; then :
+if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -8218,7 +8214,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
+if test "${ac_cv_header_time+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8293,7 +8289,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
 $as_echo_n "checking for working mktime... " >&6; }
-if ${ac_cv_func_working_mktime+:} false; then :
+if test "${ac_cv_func_working_mktime+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -8522,7 +8518,7 @@ fi
 for ac_func in getpagesize
 do :
   ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
+if test "x$ac_cv_func_getpagesize" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETPAGESIZE 1
 _ACEOF
@@ -8532,7 +8528,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
 $as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -8699,7 +8695,7 @@ rm -f conftest.mmap conftest.txt
 for ac_header in stdlib.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdlib_h" = xyes; then :
+if test "x$ac_cv_header_stdlib_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_STDLIB_H 1
 _ACEOF
@@ -8710,7 +8706,7 @@ done
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5
 $as_echo_n "checking for GNU libc compatible realloc... " >&6; }
-if ${ac_cv_func_realloc_0_nonnull+:} false; then :
+if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -8763,17 +8759,13 @@ $as_echo "#define realloc rpl_realloc" >>confdefs.h
 fi
 
 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strnlen" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strnlen" >&5
 $as_echo_n "checking for working strnlen... " >&6; }
-if ${ac_cv_func_strnlen_working+:} false; then :
+if test "${ac_cv_func_strnlen_working+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
-  # Guess no on AIX systems, yes otherwise.
-		case "$host_os" in
-		  aix*) ac_cv_func_strnlen_working=no;;
-		  *)    ac_cv_func_strnlen_working=yes;;
-		esac
+  ac_cv_func_strnlen_working=no
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -8822,7 +8814,7 @@ esac
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5
 $as_echo_n "checking for working strtod... " >&6; }
-if ${ac_cv_func_strtod+:} false; then :
+if test "${ac_cv_func_strtod+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -8881,14 +8873,14 @@ if test $ac_cv_func_strtod = no; then
 esac
 
 ac_fn_c_check_func "$LINENO" "pow" "ac_cv_func_pow"
-if test "x$ac_cv_func_pow" = xyes; then :
+if test "x$ac_cv_func_pow" = x""yes; then :
 
 fi
 
 if test $ac_cv_func_pow = no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5
 $as_echo_n "checking for pow in -lm... " >&6; }
-if ${ac_cv_lib_m_pow+:} false; then :
+if test "${ac_cv_lib_m_pow+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8922,7 +8914,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5
 $as_echo "$ac_cv_lib_m_pow" >&6; }
-if test "x$ac_cv_lib_m_pow" = xyes; then :
+if test "x$ac_cv_lib_m_pow" = x""yes; then :
   POW_LIB=-lm
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5
@@ -9018,21 +9010,10 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
+    test "x$cache_file" != "x/dev/null" &&
       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
+    cat confcache >$cache_file
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -9064,7 +9045,7 @@ LTLIBOBJS=$ac_ltlibobjs
 
 
 
-: "${CONFIG_STATUS=./config.status}"
+: ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -9165,7 +9146,6 @@ fi
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9473,7 +9453,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # values after options handling.
 ac_log="
 This file was extended by Xen Hypervisor $as_me 4.2, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -9535,7 +9515,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 Xen Hypervisor config.status 4.2
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -9660,7 +9640,7 @@ do
     "../config/Xen.mk") CONFIG_FILES="$CONFIG_FILES ../config/Xen.mk" ;;
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
@@ -9682,10 +9662,9 @@ fi
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp= ac_tmp=
+  tmp=
   trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
 ' 0
   trap 'as_fn_exit 1' 1 2 13 15
 }
@@ -9693,13 +9672,12 @@ $debug ||
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
+  test -n "$tmp" && test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
 } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -9721,7 +9699,7 @@ else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
 _ACEOF
 
 
@@ -9749,7 +9727,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -9797,7 +9775,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = ""
 
@@ -9829,7 +9807,7 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
   || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
@@ -9863,7 +9841,7 @@ fi # test -n "$CONFIG_FILES"
 # No need to generate them if there are no CONFIG_HEADERS.
 # This happens for instance with `./config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+cat >"$tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
@@ -9875,8 +9853,8 @@ _ACEOF
 # handling of long lines.
 ac_delim='%!_!# '
 for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
     break
   elif $ac_last_try; then
     as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
@@ -9977,7 +9955,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -9996,7 +9974,7 @@ do
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
+      -) ac_f="$tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
 	 # because $ac_f cannot contain `:'.
@@ -10005,7 +9983,7 @@ do
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
@@ -10031,8 +10009,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -10162,22 +10140,21 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 s&@INSTALL@&$ac_INSTALL&;t t
 $ac_datarootdir_hack
 "
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$ac_tmp/stdin"
+  rm -f "$tmp/stdin"
   case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
   esac \
   || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
@@ -10188,20 +10165,20 @@ which seems to be undefined.  Please make sure it is defined" >&2;}
   if test x"$ac_file" != x-; then
     {
       $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
+      mv "$tmp/config.h" "$ac_file" \
 	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
  ;;
diff --git a/tools/configure.ac b/tools/configure.ac
index 5b2815d..b0668b4 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -64,7 +64,6 @@ AX_SET_FLAGS
 AC_ARG_VAR([PYTHON], [Path to the Python parser])
 AC_ARG_VAR([PERL], [Path to Perl parser])
 AC_ARG_VAR([IP], [Path to ip tool])
-AC_ARG_VAR([BISON], [Path to Bison parser generator])
 AC_ARG_VAR([FLEX], [Path to Flex lexical analyser generator])
 AC_ARG_VAR([CURL], [Path to curl-config tool])
 AC_ARG_VAR([XML], [Path to xml2-config tool])
-- 
1.7.2.5


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

