GNU bug report logs - #24108
CLONE_NEWUSER tests fail with EPERM instead of being skipped on Grsecurity kernels

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix; Reported by: sapientech@HIDDEN; dated Fri, 29 Jul 2016 23:51:01 UTC; Maintainer for guix is bug-guix@HIDDEN.
Changed bug title to 'CLONE_NEWUSER tests fail with EPERM instead of being skipped on Grsecurity kernels' from 'guix make tests failure' Request was from ludo@HIDDEN (Ludovic Courtès) to control <at> debbugs.gnu.org. Full text available.

Message received at 24108 <at> debbugs.gnu.org:


Received: (at 24108) by debbugs.gnu.org; 31 Jul 2016 10:53:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 31 06:53:45 2016
Received: from localhost ([127.0.0.1]:51943 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bToNN-0002O5-K7
	for submit <at> debbugs.gnu.org; Sun, 31 Jul 2016 06:53:45 -0400
Received: from eggs.gnu.org ([208.118.235.92]:43558)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1bToNL-0002No-AF
 for 24108 <at> debbugs.gnu.org; Sun, 31 Jul 2016 06:53:43 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1bToNA-0008Mk-PY
 for 24108 <at> debbugs.gnu.org; Sun, 31 Jul 2016 06:53:37 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:56491)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1bToNA-0008MV-Ll; Sun, 31 Jul 2016 06:53:32 -0400
Received: from reverse-83.fdn.fr ([80.67.176.83]:34838 helo=pluto)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1bToN8-0004wF-1Q; Sun, 31 Jul 2016 06:53:30 -0400
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Dylan Jeffers <sapientech@HIDDEN>
Subject: Re: bug#24108: guix make tests failure
References: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
 <874m77e0ky.fsf@HIDDEN> <20160730104312.2166ffa5@HIDDEN>
 <87bn1ebynp.fsf@HIDDEN> <20160730174027.0551e855@HIDDEN>
 <20160730185305.0c8cfe59@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 14 Thermidor an 224 de la =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-unknown-linux-gnu
Date: Sun, 31 Jul 2016 12:53:26 +0200
In-Reply-To: <20160730185305.0c8cfe59@HIDDEN> (Dylan Jeffers's
 message of "Sat, 30 Jul 2016 18:53:05 -0700")
Message-ID: <87d1lu84ex.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -6.3 (------)
X-Debbugs-Envelope-To: 24108
Cc: 24108 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.3 (------)

Hello,

Dylan Jeffers <sapientech@HIDDEN> skribis:

[...]

> > > These tests are skipped when user namespaces are not supported, as
> > > per this condition:
> > >=20
> > >   (define perform-container-tests?
> > >     (and (user-namespace-supported?)
> > >          (unprivileged-user-namespace-supported?)))
> > >=20
> > > =E2=80=A6 which is true iff (1) /proc/self/ns/user exists, and (2)
> > > /proc/sys/kernel/unprivileged_userns_clone does not exist, or it
> > > exists and contains =E2=80=9C1=E2=80=9D.
> > >=20
> > > Do these files exist on this system?=20=20
>>
>> (1) /proc/self/ns/user exists, and
>> (2) /proc/sys/kernel/unpriviledged_userns_clone D.N.E

They do not exist now with the new =E2=80=98test-suite.log=E2=80=99 that yo=
u posted, but
they did exist before (with the Grsec kernel), otherwise the user
namespaces tests would have been skipped.

>> Ideas on the best approach to allow the build to succeed?
>>=20
>> I also have had issues with qemu, so it makes sense that vm/container
>> stuff both have issues. I have a feeling its due to the
>> grsec kernel.
>> https://wiki.archlinux.org/index.php/Grsecurity_Patchset talks a
>> bit about userspace/namespace hardening + issues with xen and
>> virtbox. Going to reboot with an lts kernel and try again. Will post
>> update...
>>=20
>> Best,
>> Dylan
>>=20
>> Best,
>> Dylan
>
> After changing kernel, and stopping paxd.service, build still
> failed :(

[...]

> test-name: clone
> location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
> source:
> + (test-assert
> +   "clone"
> +   (match (clone (logior CLONE_NEWUSER SIGCHLD))
> +          (0 (primitive-exit 42))
> +          (pid (and (not (equal?
> +                           (readlink (user-namespace pid))
> +                           (readlink (user-namespace (getpid)))))
> +                    (match (waitpid pid)
> +                           ((_ . status) (=3D 42 (status:exit-val status=
))))))))
> result: SKIP

This and other container-related tests are now properly skipped.

> test-name: home-page: host not found
> location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:393
> source:
> + (test-assert
> +   "home-page: host not found"
> +   (->bool
> +     (string-contains
> +       (with-warnings
> +         (let ((pkg (package
> +                      (inherit (dummy-package "x"))
> +                      (home-page "http://does-not-exist"))))
> +           (check-home-page pkg)))
> +       "domain not found")))
> actual-value: #f
> result: FAIL

This and the remaining failures are due to DNS hijacking, so nothing we
can do about it.  You=E2=80=99d have to use a well-behaved DNS server (e.g.,
=E2=80=9Cecho nameserver 8.8.8.8 > /etc/resolv.conf=E2=80=9D to use Google=
=E2=80=99s name
server) to work around that.

Thanks,
Ludo=E2=80=99.




Information forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.

Message received at 24108 <at> debbugs.gnu.org:


Received: (at 24108) by debbugs.gnu.org; 31 Jul 2016 01:54:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 30 21:54:21 2016
Received: from localhost ([127.0.0.1]:51883 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bTfxN-0006D2-Nz
	for submit <at> debbugs.gnu.org; Sat, 30 Jul 2016 21:54:21 -0400
Received: from mail.openmailbox.org ([62.4.1.34]:54092)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <sapientech@HIDDEN>) id 1bTfxL-0006Cp-6h
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 21:54:19 -0400
Received: by mail.openmailbox.org (Postfix, from userid 20002)
 id 28ED220651E; Sun, 31 Jul 2016 03:53:37 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469930017;
 bh=avj2IuzDe3Ri0qXFIRr6YhIjvP/yPCg1aUDD4lxybCU=;
 h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
 b=RECv6AW04tqoDYk1kq5VNXeOlpgucRry4DrarRILdCbPJV7CmewUH4ZVFssRg75tU
 bE7cvC3Dksu9BJ0PrgA8cxY+H9RoR1Pwwdpe9ZSEbsmjr6fHfsX120iNYbpCZ/CVCC
 UPkWJiAwgxfLqrg9CpopffMLhXvCetCJ/R8ngL5s=
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on h4
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=NO_RECEIVED,NO_RELAYS,
 T_DKIM_INVALID,T_FILL_THIS_FORM_SHORT,URIBL_BLOCKED autolearn=no
 autolearn_force=no version=3.4.0
Date: Sat, 30 Jul 2016 18:53:05 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469930009;
 bh=avj2IuzDe3Ri0qXFIRr6YhIjvP/yPCg1aUDD4lxybCU=;
 h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
 b=nYoI7mOJq23jSIIn2z9Ao0S1LFkzIXvJLCbggAmZrqaN44mAde7qO7AV435FQPaSF
 e0+IXWC1PbCKJEEGsi4Orp8shHJzFp8A1jAstefUq5knfvzSDdhowasYCIk8SPUjof
 cb0tSBYjJnIj2mbLD4mBmQlWO6osVHnun3j7OSI4=
From: Dylan Jeffers <sapientech@HIDDEN>
To: ludo@HIDDEN (Ludovic =?UTF-8?B?Q291cnTDqHM=?=)
Subject: Re: bug#24108: guix make tests failure
Message-ID: <20160730185305.0c8cfe59@HIDDEN>
In-Reply-To: <20160730174027.0551e855@HIDDEN>
References: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
 <874m77e0ky.fsf@HIDDEN> <20160730104312.2166ffa5@HIDDEN>
 <87bn1ebynp.fsf@HIDDEN> <20160730174027.0551e855@HIDDEN>
X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.28; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_/RfwZ3bl.=e6TtpTaWZdR65C"
X-Debbugs-Envelope-To: 24108
Cc: 24108 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--MP_/RfwZ3bl.=e6TtpTaWZdR65C
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On Sat, 30 Jul 2016 17:40:27 -0700
Dylan Jeffers <sapientech@HIDDEN> wrote:

> On Sat, 30 Jul 2016 23:31:54 +0200
> ludo@HIDDEN (Ludovic Court=C3=A8s) wrote:
>=20
> > Dylan Jeffers <sapientech@HIDDEN> skribis:
> >  =20
> > > On Sat, 30 Jul 2016 15:07:25 +0200
> > > ludo@HIDDEN (Ludovic Court=C3=A8s) wrote:   =20
> >=20
> > [...]
> >  =20
> > >> > test-name: clone
> > >> > location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
> > >> > source:
> > >> > + (test-assert
> > >> > +   "clone"
> > >> > +   (match (clone (logior CLONE_NEWUSER SIGCHLD))
> > >> > +          (0 (primitive-exit 42))
> > >> > +          (pid (and (not (equal?
> > >> > +                           (readlink (user-namespace pid))
> > >> > +                           (readlink (user-namespace
> > >> > (getpid)))))
> > >> > +                    (match (waitpid pid)
> > >> > +                           ((_ . status) (=3D 42
> > >> > (status:exit-val status)))))))) actual-value: #f
> > >> > actual-error:
> > >> > + (system-error
> > >> > +   "clone"
> > >> > +   "~d: ~A"
> > >> > +   (268435473 "Operation not permitted")
> > >> > +   (1))
> > >> > result: FAIL     =20
> > >>=20
> > >> What does =E2=80=9Cuname -srv=E2=80=9D report on this machine?  It s=
eems this
> > >> kernel does not support namespaces.
> > >>=20
> > >> Thanks,
> > >> Ludo=E2=80=99.   =20
> > >
> > > Hi Ludo,
> > >
> > > Thanks for getting back so quick.
> > > Output of uname -srv: Linux 4.6.4-gnu-201607192040-1-grsec #1 SMP
> > > PREEMPT Wed Jul 20 15:37:34 UYT 2016   =20
> >=20
> > These tests are skipped when user namespaces are not supported, as
> > per this condition:
> >=20
> >   (define perform-container-tests?
> >     (and (user-namespace-supported?)
> >          (unprivileged-user-namespace-supported?)))
> >=20
> > =E2=80=A6 which is true iff (1) /proc/self/ns/user exists, and (2)
> > /proc/sys/kernel/unprivileged_userns_clone does not exist, or it
> > exists and contains =E2=80=9C1=E2=80=9D.
> >=20
> > Do these files exist on this system? =20
>=20
> (1) /proc/self/ns/user exists, and
> (2) /proc/sys/kernel/unpriviledged_userns_clone D.N.E
>=20
> Ideas on the best approach to allow the build to succeed?
>=20
> I also have had issues with qemu, so it makes sense that vm/container
> stuff both have issues. I have a feeling its due to the
> grsec kernel.
> https://wiki.archlinux.org/index.php/Grsecurity_Patchset talks a
> bit about userspace/namespace hardening + issues with xen and
> virtbox. Going to reboot with an lts kernel and try again. Will post
> update...
>=20
> Best,
> Dylan
>=20
> Best,
> Dylan

After changing kernel, and stopping paxd.service, build still
failed :(

It looks like the failed tests are different though (see attachment)

Dylan

--MP_/RfwZ3bl.=e6TtpTaWZdR65C
Content-Type: text/x-log
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=config.log

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by GNU Guix configure 0.10.0, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = freetop
uname -m = x86_64
uname -r = 4.6.4-gnu-1
uname -s = Linux
uname -v = #1 SMP PREEMPT Wed Jul 20 05:58:11 UYT 2016

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin
PATH: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/sbin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /usr/lib/jvm/default/bin
PATH: /usr/bin/site_perl
PATH: /usr/bin/vendor_perl
PATH: /usr/bin/core_perl
PATH: /home/sapientech/.guix-profile/bin
PATH: /home/sapientech/.guix-profile/sbin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2574: checking for a BSD-compatible install
configure:2642: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/install -c
configure:2653: checking whether build environment is sane
configure:2708: result: yes
configure:2859: checking for a thread-safe mkdir -p
configure:2898: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/mkdir -p
configure:2905: checking for gawk
configure:2921: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/gawk
configure:2932: result: gawk
configure:2943: checking whether make sets $(MAKE)
configure:2965: result: yes
configure:2994: checking whether make supports nested variables
configure:3011: result: yes
configure:3150: checking whether make supports nested variables
configure:3167: result: yes
configure:3194: checking for style of include used by make
configure:3222: result: GNU
configure:3293: checking for gcc
configure:3309: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/gcc
configure:3320: result: gcc
configure:3549: checking for C compiler version
configure:3558: gcc --version >&5
gcc (GCC) 4.9.3
Copyright (C) 2015 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.

configure:3569: $? = 0
configure:3558: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/gnu/store/sjvcirri2bg7q5hlrkaywhmxllik0cfx-gcc-4.9.3/libexec/gcc/x86_64-unknown-linux-gnu/4.9.3/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: 
Thread model: posix
gcc version 4.9.3 (GCC) 
configure:3569: $? = 0
configure:3558: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3569: $? = 1
configure:3558: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:3569: $? = 1
configure:3589: checking whether the C compiler works
configure:3611: gcc    conftest.c  >&5
configure:3615: $? = 0
configure:3663: result: yes
configure:3666: checking for C compiler default output file name
configure:3668: result: a.out
configure:3674: checking for suffix of executables
configure:3681: gcc -o conftest    conftest.c  >&5
configure:3685: $? = 0
configure:3707: result: 
configure:3729: checking whether we are cross compiling
configure:3737: gcc -o conftest    conftest.c  >&5
configure:3741: $? = 0
configure:3748: ./conftest
configure:3752: $? = 0
configure:3767: result: no
configure:3772: checking for suffix of object files
configure:3794: gcc -c   conftest.c >&5
configure:3798: $? = 0
configure:3819: result: o
configure:3823: checking whether we are using the GNU C compiler
configure:3842: gcc -c   conftest.c >&5
configure:3842: $? = 0
configure:3851: result: yes
configure:3860: checking whether gcc accepts -g
configure:3880: gcc -c -g  conftest.c >&5
configure:3880: $? = 0
configure:3921: result: yes
configure:3938: checking for gcc option to accept ISO C89
configure:4001: gcc  -c -g -O2  conftest.c >&5
configure:4001: $? = 0
configure:4014: result: none needed
configure:4039: checking whether gcc understands -c and -o together
configure:4061: gcc -c conftest.c -o conftest2.o
configure:4064: $? = 0
configure:4061: gcc -c conftest.c -o conftest2.o
configure:4064: $? = 0
configure:4076: result: yes
configure:4095: checking dependency style of gcc
configure:4206: result: gcc3
configure:4227: checking how to run the C preprocessor
configure:4258: gcc -E  conftest.c
configure:4258: $? = 0
configure:4272: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
 #include <ac_nonexistent.h>
                            ^
compilation terminated.
configure:4272: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4297: result: gcc -E
configure:4317: gcc -E  conftest.c
configure:4317: $? = 0
configure:4331: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
 #include <ac_nonexistent.h>
                            ^
compilation terminated.
configure:4331: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4360: checking for grep that handles long lines and -e
configure:4418: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/grep
configure:4423: checking for egrep
configure:4485: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/grep -E
configure:4490: checking for ANSI C header files
configure:4510: gcc -c -g -O2  conftest.c >&5
configure:4510: $? = 0
configure:4583: gcc -o conftest -g -O2   conftest.c  >&5
configure:4583: $? = 0
configure:4583: ./conftest
configure:4583: $? = 0
configure:4594: result: yes
configure:4607: checking for sys/types.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for sys/stat.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for stdlib.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for string.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for memory.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for strings.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for inttypes.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for stdint.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4607: checking for unistd.h
configure:4607: gcc -c -g -O2  conftest.c >&5
configure:4607: $? = 0
configure:4607: result: yes
configure:4620: checking minix/config.h usability
configure:4620: gcc -c -g -O2  conftest.c >&5
conftest.c:54:26: fatal error: minix/config.h: No such file or directory
 #include <minix/config.h>
                          ^
compilation terminated.
configure:4620: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #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
| #include <minix/config.h>
configure:4620: result: no
configure:4620: checking minix/config.h presence
configure:4620: gcc -E  conftest.c
conftest.c:21:26: fatal error: minix/config.h: No such file or directory
 #include <minix/config.h>
                          ^
compilation terminated.
configure:4620: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <minix/config.h>
configure:4620: result: no
configure:4620: checking for minix/config.h
configure:4620: result: no
configure:4641: checking whether it is safe to define __EXTENSIONS__
configure:4659: gcc -c -g -O2  conftest.c >&5
configure:4659: $? = 0
configure:4666: result: yes
configure:4689: checking whether NLS is requested
configure:4698: result: yes
configure:4739: checking for msgfmt
configure: trying /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt...
0 translated messages.
configure:4771: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt
configure:4780: checking for gmsgfmt
configure:4811: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt
configure:4862: checking for xgettext
configure: trying /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xgettext...
/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xgettext: warning: file '/dev/null' extension '' is unknown; will try C
configure:4894: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xgettext
configure:4940: checking for msgmerge
configure: trying /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgmerge...
configure:4971: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgmerge
configure:5008: checking build system type
configure:5022: result: x86_64-unknown-linux-gnu
configure:5042: checking host system type
configure:5055: result: x86_64-unknown-linux-gnu
configure:5099: checking for ld used by GCC
configure:5163: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/ld
configure:5170: checking if the linker (/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/ld) is GNU ld
configure:5183: result: yes
configure:5190: checking for shared library run path origin
configure:5203: result: done
configure:5775: checking for CFPreferencesCopyAppValue
configure:5793: gcc -o conftest -g -O2   conftest.c  -Wl,-framework -Wl,CoreFoundation >&5
conftest.c:26:42: fatal error: CoreFoundation/CFPreferences.h: No such file or directory
 #include <CoreFoundation/CFPreferences.h>
                                          ^
compilation terminated.
configure:5793: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| /* end confdefs.h.  */
| #include <CoreFoundation/CFPreferences.h>
| int
| main ()
| {
| CFPreferencesCopyAppValue(NULL, NULL)
|   ;
|   return 0;
| }
configure:5802: result: no
configure:5809: checking for CFLocaleCopyCurrent
configure:5827: gcc -o conftest -g -O2   conftest.c  -Wl,-framework -Wl,CoreFoundation >&5
conftest.c:26:37: fatal error: CoreFoundation/CFLocale.h: No such file or directory
 #include <CoreFoundation/CFLocale.h>
                                     ^
compilation terminated.
configure:5827: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| /* end confdefs.h.  */
| #include <CoreFoundation/CFLocale.h>
| int
| main ()
| {
| CFLocaleCopyCurrent();
|   ;
|   return 0;
| }
configure:5836: result: no
configure:5885: checking for GNU gettext in libc
configure:5905: gcc -o conftest -g -O2   conftest.c  >&5
configure:5905: $? = 0
configure:5914: result: yes
configure:6705: checking whether to use NLS
configure:6707: result: yes
configure:6710: checking where the gettext function comes from
configure:6721: result: libc
configure:6787: checking for sed
configure:6805: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/sed
configure:6817: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/sed
configure:6867: checking for the Guix system type
configure:6869: result: x86_64-linux
configure:6923: checking for the store directory
configure:6925: result: /gnu/store
configure:6947: checking the length of the installed socket file name
configure:6954: result: 40
configure:6958: checking for unit test root directory
configure:6965: result: /home/sapientech/Dev/guix/guix_wip/test-tmp
configure:6970: checking the length of the socket file name used in tests
configure:6977: result: 75
configure:6981: checking the length of a typical hash bang line
configure:6988: result: 73
configure:6993: checking the length of a hash bang line used in tests
configure:7000: result: 112
configure:7094: checking for pkg-config
configure:7112: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/pkg-config
configure:7124: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/pkg-config
configure:7149: checking pkg-config is at least version 0.9.0
configure:7152: result: yes
configure:7162: checking for GUILE
configure:7169: $PKG_CONFIG --exists --print-errors "guile-2.0 >= 2.0.7"
configure:7172: $? = 0
configure:7186: $PKG_CONFIG --exists --print-errors "guile-2.0 >= 2.0.7"
configure:7189: $? = 0
configure:7247: result: yes
configure:7253: checking for guile
configure:7271: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile
configure:7283: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile
configure:7293: checking for guild
configure:7311: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guild
configure:7323: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guild
configure:7337: checking for guile
configure:7367: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile
configure:7396: checking for Guile version >= 2.0
configure:7417: result: 2.0.11
configure:7422: checking for guild
configure:7452: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guild
configure:7464: checking for guile-config
configure:7482: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile-config
configure:7494: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile-config
configure:7549: checking if (json) is available
configure:7556: result: yes
configure:7572: checking whether /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile provides feature 'regex'
configure:7576: result: yes
configure:7572: checking whether /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile provides feature 'posix'
configure:7576: result: yes
configure:7572: checking whether /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile provides feature 'socket'
configure:7576: result: yes
configure:7572: checking whether /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile provides feature 'net-db'
configure:7576: result: yes
configure:7572: checking whether /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile provides feature 'threads'
configure:7576: result: yes
configure:7587: checking whether (srfi srfi-37) is affected by http://bugs.gnu.org/13176
configure:7603: result: no
configure:7616: checking whether libc provides 'mount'
configure:7631: result: yes
configure:7645: checking for gzip
configure:7663: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/gzip
configure:7675: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/gzip
configure:7685: checking for bzip2
configure:7703: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/bzip2
configure:7715: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/bzip2
configure:7725: checking for xz
configure:7743: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xz
configure:7755: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xz
configure:7783: checking for nix-instantiate
configure:7816: result: no
configure:7823: checking for nix-hash
configure:7856: result: no
configure:7881: checking for Nixpkgs source tree
configure:7888: result: not found
configure:7932: checking for libgcrypt-config
configure:7950: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/libgcrypt-config
configure:7962: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/libgcrypt-config
configure:7970: checking libgcrypt's library directory
configure:7981: result: /gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib
configure:7993: checking for libgcrypt shared library name
configure:7995: result: /gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib/libgcrypt
configure:8001: checking whether /gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib/libgcrypt can be dynamically loaded
configure:8016: result: yes
configure:8025: checking zlib's library directory
configure:8032: result: /gnu/store/hsxhfmjgh8m4c0pavq3gd3gcrn8zrgxj-zlib-1.2.8/lib
configure:8041: checking for zlib's shared library name
configure:8043: result: /gnu/store/hsxhfmjgh8m4c0pavq3gd3gcrn8zrgxj-zlib-1.2.8/lib/libz
configure:8134: checking whether to build daemon
configure:8136: result: yes
configure:8197: checking for g++
configure:8213: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/g++
configure:8224: result: g++
configure:8251: checking for C++ compiler version
configure:8260: g++ --version >&5
g++ (GCC) 4.9.3
Copyright (C) 2015 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.

configure:8271: $? = 0
configure:8260: g++ -v >&5
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/gnu/store/sjvcirri2bg7q5hlrkaywhmxllik0cfx-gcc-4.9.3/libexec/gcc/x86_64-unknown-linux-gnu/4.9.3/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: 
Thread model: posix
gcc version 4.9.3 (GCC) 
configure:8271: $? = 0
configure:8260: g++ -V >&5
g++: error: unrecognized command line option '-V'
g++: fatal error: no input files
compilation terminated.
configure:8271: $? = 1
configure:8260: g++ -qversion >&5
g++: error: unrecognized command line option '-qversion'
g++: fatal error: no input files
compilation terminated.
configure:8271: $? = 1
configure:8275: checking whether we are using the GNU C++ compiler
configure:8294: g++ -c   conftest.cpp >&5
configure:8294: $? = 0
configure:8303: result: yes
configure:8312: checking whether g++ accepts -g
configure:8332: g++ -c -g  conftest.cpp >&5
configure:8332: $? = 0
configure:8373: result: yes
configure:8398: checking dependency style of g++
configure:8509: result: gcc3
configure:8537: checking whether g++ supports C++11
configure:8561: g++ -c -std=c++11 -g -O2  conftest.cpp >&5
configure:8561: $? = 0
configure:8570: result: yes
configure:8621: checking for ranlib
configure:8637: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/ranlib
configure:8648: result: ranlib
configure:8680: checking for special C compiler options needed for large files
configure:8725: result: no
configure:8731: checking for _FILE_OFFSET_BITS value needed for large files
configure:8756: g++ -c -g -O2  conftest.cpp >&5
configure:8756: $? = 0
configure:8788: result: no
configure:8874: checking for BZ2_bzWriteOpen in -lbz2
configure:8899: g++ -o conftest -g -O2   conftest.cpp -lbz2   >&5
configure:8899: $? = 0
configure:8908: result: yes
configure:8921: checking how to run the C++ preprocessor
configure:8948: g++ -E  conftest.cpp
configure:8948: $? = 0
configure:8962: g++ -E  conftest.cpp
conftest.cpp:29:28: fatal error: ac_nonexistent.h: No such file or directory
 #include <ac_nonexistent.h>
                            ^
compilation terminated.
configure:8962: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define ENABLE_NLS 1
| #define HAVE_GETTEXT 1
| #define HAVE_DCGETTEXT 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:8987: result: g++ -E
configure:9007: g++ -E  conftest.cpp
configure:9007: $? = 0
configure:9021: g++ -E  conftest.cpp
conftest.cpp:29:28: fatal error: ac_nonexistent.h: No such file or directory
 #include <ac_nonexistent.h>
                            ^
compilation terminated.
configure:9021: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Guix"
| #define PACKAGE_TARNAME "guix"
| #define PACKAGE_VERSION "0.10.0"
| #define PACKAGE_STRING "GNU Guix 0.10.0"
| #define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
| #define PACKAGE_URL "http://www.gnu.org/software/guix/"
| #define PACKAGE "guix"
| #define VERSION "0.10.0"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define ENABLE_NLS 1
| #define HAVE_GETTEXT 1
| #define HAVE_DCGETTEXT 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:9052: checking bzlib.h usability
configure:9052: g++ -c -g -O2  conftest.cpp >&5
configure:9052: $? = 0
configure:9052: result: yes
configure:9052: checking bzlib.h presence
configure:9052: g++ -E  conftest.cpp
configure:9052: $? = 0
configure:9052: result: yes
configure:9052: checking for bzlib.h
configure:9052: result: yes
configure:9067: checking for SQLITE3
configure:9074: $PKG_CONFIG --exists --print-errors "sqlite3 >= 3.6.19"
configure:9077: $? = 0
configure:9091: $PKG_CONFIG --exists --print-errors "sqlite3 >= 3.6.19"
configure:9094: $? = 0
configure:9152: result: yes
configure:9193: checking for gcry_md_open in -lgcrypt
configure:9218: g++ -o conftest -g -O2    conftest.cpp -lgcrypt   >&5
configure:9218: $? = 0
configure:9227: result: yes
configure:9235: checking gcrypt.h usability
configure:9235: g++ -c -g -O2  conftest.cpp >&5
configure:9235: $? = 0
configure:9235: result: yes
configure:9235: checking gcrypt.h presence
configure:9235: g++ -E  conftest.cpp
configure:9235: $? = 0
configure:9235: result: yes
configure:9235: checking for gcrypt.h
configure:9235: result: yes
configure:9253: checking for chroot
configure:9253: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9253: $? = 0
configure:9253: result: yes
configure:9253: checking for unshare
configure:9253: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9253: $? = 0
configure:9253: result: yes
configure:9265: checking sched.h usability
configure:9265: g++ -c -g -O2  conftest.cpp >&5
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking sched.h presence
configure:9265: g++ -E  conftest.cpp
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking for sched.h
configure:9265: result: yes
configure:9265: checking sys/param.h usability
configure:9265: g++ -c -g -O2  conftest.cpp >&5
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking sys/param.h presence
configure:9265: g++ -E  conftest.cpp
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking for sys/param.h
configure:9265: result: yes
configure:9265: checking sys/mount.h usability
configure:9265: g++ -c -g -O2  conftest.cpp >&5
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking sys/mount.h presence
configure:9265: g++ -E  conftest.cpp
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking for sys/mount.h
configure:9265: result: yes
configure:9265: checking sys/syscall.h usability
configure:9265: g++ -c -g -O2  conftest.cpp >&5
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking sys/syscall.h presence
configure:9265: g++ -E  conftest.cpp
configure:9265: $? = 0
configure:9265: result: yes
configure:9265: checking for sys/syscall.h
configure:9265: result: yes
configure:9284: checking for lutimes
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9284: checking for lchown
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9284: checking for posix_fallocate
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9284: checking for sched_setaffinity
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9284: checking for statvfs
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9284: checking for nanosleep
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9284: checking for strsignal
configure:9284: g++ -o conftest -g -O2   conftest.cpp  >&5
configure:9284: $? = 0
configure:9284: result: yes
configure:9294: checking whether it is possible to create a link to a symlink
configure:9298: result: yes
configure:9317: checking locale usability
configure:9317: g++ -c -g -O2  conftest.cpp >&5
configure:9317: $? = 0
configure:9317: result: yes
configure:9317: checking locale presence
configure:9317: g++ -E  conftest.cpp
configure:9317: $? = 0
configure:9317: result: yes
configure:9317: checking for locale
configure:9317: result: yes
configure:9337: checking sys/personality.h usability
configure:9337: g++ -c -g -O2  conftest.cpp >&5
configure:9337: $? = 0
configure:9337: result: yes
configure:9337: checking sys/personality.h presence
configure:9337: g++ -E  conftest.cpp
configure:9337: $? = 0
configure:9337: result: yes
configure:9337: checking for sys/personality.h
configure:9337: result: yes
configure:9350: checking linux/fs.h usability
configure:9350: g++ -c -g -O2  conftest.cpp >&5
configure:9350: $? = 0
configure:9350: result: yes
configure:9350: checking linux/fs.h presence
configure:9350: g++ -E  conftest.cpp
configure:9350: $? = 0
configure:9350: result: yes
configure:9350: checking for linux/fs.h
configure:9350: result: yes
configure:9361: checking if (gnutls) is available
configure:9368: result: yes
configure:9379: checking for default substitute URLs
configure:9381: result: https://mirror.hydra.gnu.org
configure:9391: checking whether Guile's custom binary input ports support 'setvbuf'
configure:9405: result: yes
configure:9417: checking for unit test root directory
configure:9424: result: /home/sapientech/Dev/guix/guix_wip/test-tmp
configure:9433: checking for guile
configure:9463: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile
configure:9471: checking the current installation's localstatedir
configure:9485: result: /usr/local/var
configure:9563: checking for dot
configure:9581: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/dot
configure:9594: result: /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/dot
configure:9609: checking for emacs
configure:9625: found /gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/emacs
configure:9636: result: emacs
configure:9660: checking where .elc files should go
configure:9673: $EMACS -batch -Q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out
configure:9676: $? = 0
configure:9689: result: ${datadir}/emacs/site-lisp
configure:9820: checking that generated files are newer than configure
configure:9826: result: done
configure:9881: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by GNU Guix config.status 0.10.0, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on freetop

config.status:992: creating nix/scripts/list-runtime-roots
config.status:992: creating nix/scripts/substitute
config.status:992: creating nix/scripts/guix-authenticate
config.status:992: creating nix/scripts/offload
config.status:992: creating Makefile
config.status:992: creating po/guix/Makefile.in
config.status:992: creating po/packages/Makefile.in
config.status:992: creating guix/config.scm
config.status:992: creating scripts/guix
config.status:992: creating test-env
config.status:992: creating pre-inst-env
config.status:992: creating emacs/guix-config.el
config.status:992: creating emacs/guix-helper.scm
config.status:992: creating nix/config.h
config.status:1173: nix/config.h is unchanged
config.status:1221: executing depfiles commands
config.status:1221: executing po-directories commands

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_cxx_compiler_gnu=yes
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_EMACSLOADPATH_set=
ac_cv_env_EMACSLOADPATH_value=
ac_cv_env_EMACS_set=
ac_cv_env_EMACS_value=
ac_cv_env_GUILE_CFLAGS_set=
ac_cv_env_GUILE_CFLAGS_value=
ac_cv_env_GUILE_LIBS_set=
ac_cv_env_GUILE_LIBS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_PKG_CONFIG_LIBDIR_set=
ac_cv_env_PKG_CONFIG_LIBDIR_value=
ac_cv_env_PKG_CONFIG_PATH_set=set
ac_cv_env_PKG_CONFIG_PATH_value=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/lib/pkgconfig::/home/sapientech/.guix-profile/lib/pkgconfig
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_SQLITE3_CFLAGS_set=
ac_cv_env_SQLITE3_CFLAGS_value=
ac_cv_env_SQLITE3_LIBS_set=
ac_cv_env_SQLITE3_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_func_chroot=yes
ac_cv_func_lchown=yes
ac_cv_func_lutimes=yes
ac_cv_func_nanosleep=yes
ac_cv_func_posix_fallocate=yes
ac_cv_func_sched_setaffinity=yes
ac_cv_func_statvfs=yes
ac_cv_func_strsignal=yes
ac_cv_func_unshare=yes
ac_cv_guix_cbips_support_setvbuf=yes
ac_cv_guix_cxx11_support=yes
ac_cv_guix_hash_bang_length=73
ac_cv_guix_socket_file_name_length=40
ac_cv_guix_srfi_37_broken=no
ac_cv_guix_test_hash_bang_length=112
ac_cv_guix_test_root=/home/sapientech/Dev/guix/guix_wip/test-tmp
ac_cv_guix_test_socket_file_name_length=75
ac_cv_header_bzlib_h=yes
ac_cv_header_gcrypt_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_linux_fs_h=yes
ac_cv_header_locale=yes
ac_cv_header_memory_h=yes
ac_cv_header_minix_config_h=no
ac_cv_header_sched_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_mount_h=yes
ac_cv_header_sys_param_h=yes
ac_cv_header_sys_personality_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_syscall_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_lib_bz2_BZ2_bzWriteOpen=yes
ac_cv_lib_gcrypt_gcry_md_open=yes
ac_cv_objext=o
ac_cv_path_BZIP2=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/bzip2
ac_cv_path_DOT_USER_PROGRAM=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/dot
ac_cv_path_EGREP='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/grep -E'
ac_cv_path_GMSGFMT=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt
ac_cv_path_GREP=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/grep
ac_cv_path_GUILD=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guild
ac_cv_path_GUILE=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile
ac_cv_path_GUILE_CONFIG=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile-config
ac_cv_path_GZIP=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/gzip
ac_cv_path_LIBGCRYPT_CONFIG=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/libgcrypt-config
ac_cv_path_MSGFMT=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt
ac_cv_path_MSGMERGE=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgmerge
ac_cv_path_SED=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/sed
ac_cv_path_XGETTEXT=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xgettext
ac_cv_path_XZ=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xz
ac_cv_path_ac_pt_PKG_CONFIG=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/pkg-config
ac_cv_path_install='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/install -c'
ac_cv_path_mkdir=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_CXXCPP='g++ -E'
ac_cv_prog_EMACS=emacs
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_CXX=g++
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_cxx_g=yes
ac_cv_prog_make_make_set=yes
ac_cv_safe_to_define___extensions__=yes
ac_cv_sys_file_offset_bits=no
ac_cv_sys_largefile_CC=no
acl_cv_hardcode_direct=no
acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
acl_cv_hardcode_libdir_separator=
acl_cv_hardcode_minus_L=no
acl_cv_libext=a
acl_cv_libname_spec='lib$name'
acl_cv_library_names_spec='$libname$shrext'
acl_cv_path_LD=/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/ld
acl_cv_prog_gnu_ld=yes
acl_cv_rpath=done
acl_cv_shlibext=so
acl_cv_wl=-Wl,
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_CXX_dependencies_compiler_type=gcc3
am_cv_lispdir='${datadir}/emacs/site-lisp'
am_cv_make_support_nested_variables=yes
am_cv_prog_cc_c_o=yes
gt_cv_func_CFLocaleCopyCurrent=no
gt_cv_func_CFPreferencesCopyAppValue=no
gt_cv_func_gnugettext1_libc=yes
guix_cv_current_localstatedir=/usr/local/var
guix_cv_libc_has_mount=yes
guix_cv_libgcrypt_libdir=/gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib
guix_cv_libgcrypt_usable_p=yes
guix_cv_libz_libdir=/gnu/store/hsxhfmjgh8m4c0pavq3gd3gcrn8zrgxj-zlib-1.2.8/lib
pkg_cv_GUILE_CFLAGS='-pthread -I/gnu/store/hyk2i7b8mwbrbiyqk5sgrfgds9zvcrn5-guile-2.0.11/include/guile/2.0'
pkg_cv_GUILE_LIBS='-L/gnu/store/hyk2i7b8mwbrbiyqk5sgrfgds9zvcrn5-guile-2.0.11/lib -L/gnu/store/my4az71gz8iqd4w8kb34kq7vlk3fcvhm-libgc-7.4.2/lib -lguile-2.0 -lgc'
pkg_cv_SQLITE3_CFLAGS=-I/gnu/store/y7h8gf890qaj6f23ryshwxd3r9y96cnc-sqlite-3.10.0/include
pkg_cv_SQLITE3_LIBS='-L/gnu/store/y7h8gf890qaj6f23ryshwxd3r9y96cnc-sqlite-3.10.0/lib -lsqlite3'

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing aclocal-1.15'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='0'
AM_V='$(V)'
AUTOCONF='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing autoconf'
AUTOHEADER='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing autoheader'
AUTOMAKE='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing automake-1.15'
AWK='gawk'
BUILD_DAEMON_FALSE='#'
BUILD_DAEMON_OFFLOAD_FALSE='#'
BUILD_DAEMON_OFFLOAD_TRUE=''
BUILD_DAEMON_TRUE=''
BUILD_SYSCALLS_MODULE_FALSE='#'
BUILD_SYSCALLS_MODULE_TRUE=''
BZIP2='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/bzip2'
CAN_RUN_TESTS_FALSE='#'
CAN_RUN_TESTS_TRUE=''
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2'
CPP='gcc -E'
CPPFLAGS=''
CXX='g++'
CXXCPP='g++ -E'
CXXDEPMODE='depmode=gcc3'
CXXFLAGS='-g -O2'
CYGPATH_W='echo'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DOT='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing dot'
DOT_USER_PROGRAM='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/dot'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/grep -E'
EMACS='emacs'
EMACSLOADPATH=''
EXEEXT=''
GETTEXT_MACRO_VERSION='0.18'
GMSGFMT='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt'
GMSGFMT_015='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt'
GREP='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/grep'
GUILD='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guild'
GUILE='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile'
GUILE_CFLAGS='-pthread -I/gnu/store/hyk2i7b8mwbrbiyqk5sgrfgds9zvcrn5-guile-2.0.11/include/guile/2.0'
GUILE_CONFIG='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guile-config'
GUILE_LIBS='-L/gnu/store/hyk2i7b8mwbrbiyqk5sgrfgds9zvcrn5-guile-2.0.11/lib -L/gnu/store/my4az71gz8iqd4w8kb34kq7vlk3fcvhm-libgc-7.4.2/lib -lguile-2.0 -lgc'
GUILE_TOOLS='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/guild'
GUIX_TEST_ROOT='/home/sapientech/Dev/guix/guix_wip/test-tmp'
GZIP='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/gzip'
HAVE_EMACS_FALSE='#'
HAVE_EMACS_TRUE=''
HAVE_GUILE_JSON_FALSE='#'
HAVE_GUILE_JSON_TRUE=''
HELP2MAN='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing help2man'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_SRFI_37_FALSE=''
INSTALL_SRFI_37_TRUE='#'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
INTLLIBS=''
INTL_MACOSX_LIBS=''
LDFLAGS=''
LIBGCRYPT='/gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib/libgcrypt'
LIBGCRYPT_CFLAGS=''
LIBGCRYPT_CONFIG='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/libgcrypt-config'
LIBGCRYPT_LIBDIR='/gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib'
LIBGCRYPT_LIBS='-L/gnu/store/7wfbprp1b9b25crlidg6h7b6hpib2b99-libgcrypt-1.6.5/lib -lgcrypt'
LIBGCRYPT_PREFIX='no'
LIBICONV='-liconv'
LIBINTL=''
LIBOBJS=''
LIBS=''
LIBZ='/gnu/store/hsxhfmjgh8m4c0pavq3gd3gcrn8zrgxj-zlib-1.2.8/lib/libz'
LTLIBICONV='-liconv'
LTLIBINTL=''
LTLIBOBJS=''
MAKEINFO='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/missing makeinfo'
MKDIR_P='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/mkdir -p'
MSGFMT='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt'
MSGFMT_015='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgfmt'
MSGMERGE='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/msgmerge'
NIXPKGS=''
NIX_HASH=''
NIX_INSTANTIATE='nix-instantiate'
NIX_PREFIX=''
OBJEXT='o'
PACKAGE='guix'
PACKAGE_BUGREPORT='bug-guix@HIDDEN'
PACKAGE_NAME='GNU Guix'
PACKAGE_STRING='GNU Guix 0.10.0'
PACKAGE_TARNAME='guix'
PACKAGE_URL='http://www.gnu.org/software/guix/'
PACKAGE_VERSION='0.10.0'
PATH_SEPARATOR=':'
PKG_CONFIG='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/pkg-config'
PKG_CONFIG_LIBDIR=''
PKG_CONFIG_PATH='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/lib/pkgconfig::/home/sapientech/.guix-profile/lib/pkgconfig'
POSUB='po'
RANLIB='ranlib'
SED='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/sed'
SET_MAKE=''
SHELL='/bin/sh'
SQLITE3_CFLAGS='-I/gnu/store/y7h8gf890qaj6f23ryshwxd3r9y96cnc-sqlite-3.10.0/include'
SQLITE3_LIBS='-L/gnu/store/y7h8gf890qaj6f23ryshwxd3r9y96cnc-sqlite-3.10.0/lib -lsqlite3'
STRIP=''
USE_NLS='yes'
VERSION='0.10.0'
XGETTEXT='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xgettext'
XGETTEXT_015='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xgettext'
XGETTEXT_EXTRA_OPTIONS=''
XZ='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/xz'
ac_ct_CC='gcc'
ac_ct_CXX='g++'
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE='#'
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE='#'
am__fastdepCXX_TRUE=''
am__include='include'
am__isrc=''
am__leading_dot='.'
am__nodep='_no'
am__quote=''
am__tar='$${TAR-tar} chof - "$$tardir"'
am__untar='$${TAR-tar} xf -'
bashcompletiondir='${sysconfdir}/bash_completion.d'
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
emacsuidir='${prefix}/share/guile/site/2.0/guix/emacs'
exec_prefix='${prefix}'
guilemoduledir='${prefix}/share/guile/site/2.0'
guix_localstatedir='/usr/local/var'
guix_sbindir='/usr/local/sbin'
guix_sysconfdir='/usr/local/etc'
guix_system='x86_64-linux'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /home/sapientech/Dev/guix/guix_wip/build-aux/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
lispdir='${datadir}/emacs/site-lisp'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='/gnu/store/20qsgil18h1k3znqx52wjzy1kfiwqgdp-profile/bin/mkdir -p'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
storedir='/gnu/store'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "GNU Guix"
#define PACKAGE_TARNAME "guix"
#define PACKAGE_VERSION "0.10.0"
#define PACKAGE_STRING "GNU Guix 0.10.0"
#define PACKAGE_BUGREPORT "bug-guix@HIDDEN"
#define PACKAGE_URL "http://www.gnu.org/software/guix/"
#define PACKAGE "guix"
#define VERSION "0.10.0"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define __EXTENSIONS__ 1
#define _ALL_SOURCE 1
#define _GNU_SOURCE 1
#define _POSIX_PTHREAD_SEMANTICS 1
#define _TANDEM_SOURCE 1
#define ENABLE_NLS 1
#define HAVE_GETTEXT 1
#define HAVE_DCGETTEXT 1
#define HAVE_BZLIB_H 1
#define NIX_VERSION "0.0.0"
#define SYSTEM "x86_64-linux"
#define HAVE_CHROOT 1
#define HAVE_UNSHARE 1
#define HAVE_SCHED_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_MOUNT_H 1
#define HAVE_SYS_SYSCALL_H 1
#define HAVE_LUTIMES 1
#define HAVE_LCHOWN 1
#define HAVE_POSIX_FALLOCATE 1
#define HAVE_SCHED_SETAFFINITY 1
#define HAVE_STATVFS 1
#define HAVE_NANOSLEEP 1
#define HAVE_STRSIGNAL 1
#define CAN_LINK_SYMLINK 1
#define HAVE_LOCALE 1
#define HAVE_SYS_PERSONALITY_H 1
#define HAVE_LINUX_FS_H 1
#define GUIX_SUBSTITUTE_URLS "https://mirror.hydra.gnu.org"
#define HAVE_DAEMON_OFFLOAD_HOOK 1

configure: exit 0

--MP_/RfwZ3bl.=e6TtpTaWZdR65C
Content-Type: application/octet-stream; name=config.status
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=config.status

IyEgL2Jpbi9zaAojIEdlbmVyYXRlZCBieSBjb25maWd1cmUuCiMgUnVuIHRoaXMgZmlsZSB0byBy
ZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgojIENvbXBpbGVyIG91dHB1dCBwcm9k
dWNlZCBieSBjb25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nCiMgY29uZmlndXJlLCBpcyBp
biBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4KCmRlYnVnPWZhbHNlCmFjX2NzX3JlY2hlY2s9ZmFs
c2UKYWNfY3Nfc2lsZW50PWZhbHNlCgpTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQpleHBv
cnQgU0hFTEwKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgTTRzaCBJbml0aWFsaXphdGlv
bi4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKCiMgQmUgbW9yZSBCb3VybmUgY29tcGF0
aWJsZQpEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCmlmIHRlc3QgLW4g
IiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhl
biA6CiAgZW11bGF0ZSBzaAogIE5VTExDTUQ9OgogICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2gg
ZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAogICMgaXMgY29udHJhcnkgdG8g
b3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCiAgYWxpYXMgLWcgJyR7MSsiJEAifSc9
JyIkQCInCiAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKZWxzZQogIGNhc2UgYChzZXQgLW8pIDI+L2Rl
di9udWxsYCBpbiAjKAogICpwb3NpeCopIDoKICAgIHNldCAtbyBwb3NpeCA7OyAjKAogICopIDoK
ICAgICA7Owplc2FjCmZpCgoKYXNfbmw9JwonCmV4cG9ydCBhc19ubAojIFByaW50aW5nIGEgbG9u
ZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgphc19lY2hvPSdcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJwphc19lY2hvPSRhc19l
Y2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KYXNfZWNobz0kYXNfZWNobyRhc19l
Y2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KIyBQcmVmZXIgYSBrc2ggc2hlbGwg
YnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uIFNvbGFyaXMsCiMgYnV0
IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCmlmIHRlc3QgLXogIiRCQVNI
X1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwKICAgICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19l
Y2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KICBhc19lY2hvPSdwcmludCAt
ciAtLScKICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKZWxpZiAodGVzdCAiWGBwcmludGYgJXMg
JGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgogIGFzX2VjaG89J3By
aW50ZiAlc1xuJwogIGFzX2VjaG9fbj0ncHJpbnRmICVzJwplbHNlCiAgaWYgdGVzdCAiWGAoL3Vz
ci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8i
OyB0aGVuCiAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEkYXNfbmwi
JwogICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1uJwogIGVsc2UKICAgIGFzX2VjaG9fYm9k
eT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCiAgICBhc19lY2hvX25fYm9keT0nZXZh
bAogICAgICBhcmc9JDE7CiAgICAgIGNhc2UgJGFyZyBpbiAjKAogICAgICAqIiRhc19ubCIqKQoJ
ZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7Cglhcmc9YGV4cHIgIlgkYXJnIiA6ICIu
KiRhc19ubFxcKC4qXFwpImA7OwogICAgICBlc2FjOwogICAgICBleHByICJYJGFyZyIgOiAiWFxc
KC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiCiAgICAnCiAgICBleHBvcnQgYXNfZWNob19uX2JvZHkK
ICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCiAgZmkKICBleHBv
cnQgYXNfZWNob19ib2R5CiAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJwpm
aQoKIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCmlmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Ir
c2V0fSIgIT0gc2V0OyB0aGVuCiAgUEFUSF9TRVBBUkFUT1I9OgogIChQQVRIPScvYmluOy9iaW4n
OyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKICAgIChQQVRIPScv
YmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8CiAgICAg
IFBBVEhfU0VQQVJBVE9SPSc7JwogIH0KZmkKCgojIElGUwojIFdlIG5lZWQgc3BhY2UsIHRhYiBh
bmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcwojIHRoZXJl
IHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4KIyAo
SWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlz
YWJsZSB3b3JkCiMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikKSUZT
PSIgIiIJJGFzX25sIgoKIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdl
IGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KYXNfbXlzZWxmPQpjYXNlICQwIGluICMo
KAogICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9
JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9JGFzX3NhdmVfSUZT
CiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIHRlc3QgLXIgIiRhc19kaXIvJDAi
ICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCiAgZG9uZQpJRlM9JGFzX3NhdmVfSUZT
CgogICAgIDs7CmVzYWMKIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5
IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwojIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0
byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KaWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgog
IGFzX215c2VsZj0kMApmaQppZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCiAgJGFzX2Vj
aG8gIiRhc19teXNlbGY6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4g
YWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIKICBleGl0IDEKZmkKCiMgVW5zZXQgdmFyaWFibGVzIHRo
YXQgd2UgZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KIyBwcmUtMy4w
IFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwg
ZXhpdCAxIgojIHN1cHByZXNzZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhl
cmUuICAnKCgnIGNvdWxkCiMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCmZvciBhc192
YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFy
K3NldH0gPSB4c2V0IFwKICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251
bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKZG9uZQpQUzE9JyQgJwpQUzI9Jz4gJwpQUzQ9
JysgJwoKIyBOTFMgbnVpc2FuY2VzLgpMQ19BTEw9QwpleHBvcnQgTENfQUxMCkxBTkdVQUdFPUMK
ZXhwb3J0IExBTkdVQUdFCgojIENEUEFUSC4KKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYx
ICYmIHVuc2V0IENEUEFUSAoKCiMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9H
X0ZEXQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBPdXRwdXQg
ImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExP
R19GRCBhcmUKIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVm
ZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCiMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2lu
ZyAxIGlmIHRoYXQgd2FzIDAuCmFzX2ZuX2Vycm9yICgpCnsKICBhc19zdGF0dXM9JDE7IHRlc3Qg
JGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQogIGlmIHRlc3QgIiQ0IjsgdGhlbgogICAg
YXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3Rh
Y2s9JGFzX2xpbmVub19zdGFjawogICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogZXJyb3I6ICQyIiA+JiQ0CiAgZmkKICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIi
ID4mMgogIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwp9ICMgYXNfZm5fZXJyb3IKCgojIGFzX2ZuX3Nl
dF9zdGF0dXMgU1RBVFVTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTZXQgJD8gdG8gU1RB
VFVTLCB3aXRob3V0IGZvcmtpbmcuCmFzX2ZuX3NldF9zdGF0dXMgKCkKewogIHJldHVybiAkMQp9
ICMgYXNfZm5fc2V0X3N0YXR1cwoKIyBhc19mbl9leGl0IFNUQVRVUwojIC0tLS0tLS0tLS0tLS0t
LS0tCiMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAi
c2V0IC1lIiBjb250ZXh0Lgphc19mbl9leGl0ICgpCnsKICBzZXQgK2UKICBhc19mbl9zZXRfc3Rh
dHVzICQxCiAgZXhpdCAkMQp9ICMgYXNfZm5fZXhpdAoKIyBhc19mbl91bnNldCBWQVIKIyAtLS0t
LS0tLS0tLS0tLS0KIyBQb3J0YWJseSB1bnNldCBWQVIuCmFzX2ZuX3Vuc2V0ICgpCnsKICB7IGV2
YWwgJDE9OyB1bnNldCAkMTt9Cn0KYXNfdW5zZXQ9YXNfZm5fdW5zZXQKIyBhc19mbl9hcHBlbmQg
VkFSIFZBTFVFCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFwcGVuZCB0aGUgdGV4dCBpbiBW
QUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UK
IyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6
ZWQgbGluZWFyIGdyb3d0aCBvdmVyCiMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUg
dHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKIyBpbXBsZW1lbnRhdGlv
bnMuCmlmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIp
IDI+L2Rldi9udWxsOyB0aGVuIDoKICBldmFsICdhc19mbl9hcHBlbmQgKCkKICB7CiAgICBldmFs
ICQxKz1cJDIKICB9JwplbHNlCiAgYXNfZm5fYXBwZW5kICgpCiAgewogICAgZXZhbCAkMT1cJCQx
XCQyCiAgfQpmaSAjIGFzX2ZuX2FwcGVuZAoKIyBhc19mbl9hcml0aCBBUkcuLi4KIyAtLS0tLS0t
LS0tLS0tLS0tLS0KIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJHcywg
YW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCiMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50
YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cwojIG11c3Qg
YmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgppZiAoZXZhbCAidGVzdCBcJCgoIDEg
KyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKICBldmFsICdhc19mbl9hcml0aCAoKQog
IHsKICAgIGFzX3ZhbD0kKCggJCogKSkKICB9JwplbHNlCiAgYXNfZm5fYXJpdGggKCkKICB7CiAg
ICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYAogIH0KZmkgIyBhc19mbl9hcml0
aAoKCmlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmCiAgIHRlc3QgIlhgZXhw
ciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCiAgYXNfZXhwcj1leHByCmVsc2UK
ICBhc19leHByPWZhbHNlCmZpCgppZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYm
IHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCiAgYXNfYmFzZW5hbWU9
YmFzZW5hbWUKZWxzZQogIGFzX2Jhc2VuYW1lPWZhbHNlCmZpCgppZiAoYXNfZGlyPWBkaXJuYW1l
IC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICBh
c19kaXJuYW1lPWRpcm5hbWUKZWxzZQogIGFzX2Rpcm5hbWU9ZmFsc2UKZmkKCmFzX21lPWAkYXNf
YmFzZW5hbWUgLS0gIiQwIiB8fAokYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8q
JCcgXHwgXAoJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCgkgWCIkMCIgOiAnWFwoL1wpJyBcfCAu
IDI+L2Rldi9udWxsIHx8CiRhc19lY2hvIFgvIiQwIiB8CiAgICBzZWQgJy9eLipcL1woW14vXVte
L10qXClcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXC9cKFwvXC9cKSQvewoJ
ICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcL1woXC9cKS4qL3sKCSAgICBzLy9cMS8KCSAg
ICBxCgkgIH0KCSAgcy8uKi8uLzsgcSdgCgojIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3Rl
ciBSYW5nZXMuCmFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jwphc19j
cl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKYXNfY3JfTGV0dGVycz0kYXNf
Y3JfbGV0dGVycyRhc19jcl9MRVRURVJTCmFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKYXNfY3Jf
YWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCgpFQ0hPX0M9IEVDSE9fTj0gRUNIT19U
PQpjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAotbiopCiAgY2FzZSBgZWNobyAneHlcYydgIGlu
CiAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuCiAg
eHkpICBFQ0hPX0M9J1xjJzs7CiAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4x
YCA+IC9kZXYvbnVsbAogICAgICAgRUNIT19UPScJJzs7CiAgZXNhYzs7CiopCiAgRUNIT19OPSct
bic7Owplc2FjCgpybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQppZiB0ZXN0IC1k
IGNvbmYkJC5kaXI7IHRoZW4KICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlCmVsc2UKICBy
bSAtZiBjb25mJCQuZGlyCiAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbApmaQppZiAoZWNo
byA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCiAgaWYgbG4gLXMgY29uZiQkLmZpbGUg
Y29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCiAgICBhc19sbl9zPSdsbiAtcycKICAgICMgLi4uIGJ1
dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6CiAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZp
bGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgogICAgIyAyKSBESkdQUCA8IDIuMDQgaGFz
IG5vIHN5bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCiAgICAj
IEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXBSJy4KICAgIGxuIC1z
IGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5l
eGUgfHwKICAgICAgYXNfbG5fcz0nY3AgLXBSJwogIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQk
IDI+L2Rldi9udWxsOyB0aGVuCiAgICBhc19sbl9zPWxuCiAgZWxzZQogICAgYXNfbG5fcz0nY3Ag
LXBSJwogIGZpCmVsc2UKICBhc19sbl9zPSdjcCAtcFInCmZpCnJtIC1mIGNvbmYkJCBjb25mJCQu
ZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKcm1kaXIgY29uZiQkLmRpciAy
Pi9kZXYvbnVsbAoKCiMgYXNfZm5fbWtkaXJfcAojIC0tLS0tLS0tLS0tLS0KIyBDcmVhdGUgIiRh
c19kaXIiIGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuCmFz
X2ZuX21rZGlyX3AgKCkKewoKICBjYXNlICRhc19kaXIgaW4gIygKICAtKikgYXNfZGlyPS4vJGFz
X2Rpcjs7CiAgZXNhYwogIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwg
ewogICAgYXNfZGlycz0KICAgIHdoaWxlIDo7IGRvCiAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAog
ICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8nXFxcXFxc
XFwnJy9nImA7OyAjJygKICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKICAgICAgZXNhYwogICAg
ICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgogICAgICBhc19kaXI9YCRhc19kaXJuYW1l
IC0tICIkYXNfZGlyIiB8fAokYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14v
XVteL10qLyokJyBcfCBcCgkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwgXAoJIFgiJGFz
X2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9k
ZXYvbnVsbCB8fAokYXNfZWNobyBYIiRhc19kaXIiIHwKICAgIHNlZCAnL15YXCguKlteL11cKVwv
XC8qW14vXVteL10qXC8qJC97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cL1wp
W14vXS4qL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wvXCkkL3sKCSAgICBz
Ly9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wpLiovewoJICAgIHMvL1wxLwoJICAgIHEKCSAg
fQoJICBzLy4qLy4vOyBxJ2AKICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKICAgIGRv
bmUKICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKICB9IHx8
IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVj
dG9yeSAkYXNfZGlyIgoKCn0gIyBhc19mbl9ta2Rpcl9wCmlmIG1rZGlyIC1wIC4gMj4vZGV2L251
bGw7IHRoZW4KICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCmVsc2UKICB0ZXN0IC1k
IC4vLXAgJiYgcm1kaXIgLi8tcAogIGFzX21rZGlyX3A9ZmFsc2UKZmkKCgojIGFzX2ZuX2V4ZWN1
dGFibGVfcCBGSUxFCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUZXN0IGlmIEZJTEUgaXMg
YW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCmFzX2ZuX2V4ZWN1dGFibGVfcCAoKQp7CiAgdGVz
dCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgp9ICMgYXNfZm5fZXhlY3V0YWJsZV9wCmFzX3Rlc3Rf
eD0ndGVzdCAteCcKYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4ZWN1dGFibGVfcAoKIyBTZWQgZXhw
cmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgphc190cl9jcHA9
ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2Ny
X2FsbnVtXSVfJWcnIgoKIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZh
bGlkIHZhcmlhYmxlIG5hbWUuCmFzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNf
Y3JfYWxudW1dJV8lZyciCgoKZXhlYyA2PiYxCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICMjCiMjIE1haW4gYm9keSBvZiAkQ09ORklHX1NUQVRVUyBzY3JpcHQuICMjCiMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMgU2F2ZSB0aGUgbG9nIG1l
c3NhZ2UsIHRvIGtlZXAgJDAgYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bwojIHJlcG9ydCBh
Y3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIK
IyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KYWNfbG9nPSIKVGhpcyBmaWxlIHdhcyBl
eHRlbmRlZCBieSBHTlUgR3VpeCAkYXNfbWUgMC4xMC4wLCB3aGljaCB3YXMKZ2VuZXJhdGVkIGJ5
IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCgogIENPTkZJ
R19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hF
QURFUlMKICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklHX0xJTktTCiAgQ09ORklHX0NPTU1BTkRT
ID0gJENPTkZJR19DT01NQU5EUwogICQgJDAgJEAKCm9uIGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4p
IDI+L2Rldi9udWxsIHwgc2VkIDFxYAoiCgojIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMg
bWFkZSBmb3IuCmNvbmZpZ19maWxlcz0iIG5peC9zY3JpcHRzL2xpc3QtcnVudGltZS1yb290cyBu
aXgvc2NyaXB0cy9zdWJzdGl0dXRlIG5peC9zY3JpcHRzL2d1aXgtYXV0aGVudGljYXRlIG5peC9z
Y3JpcHRzL29mZmxvYWQgTWFrZWZpbGUgcG8vZ3VpeC9NYWtlZmlsZS5pbiBwby9wYWNrYWdlcy9N
YWtlZmlsZS5pbiBndWl4L2NvbmZpZy5zY20gc2NyaXB0cy9ndWl4IHRlc3QtZW52OmJ1aWxkLWF1
eC90ZXN0LWVudi5pbiBwcmUtaW5zdC1lbnY6YnVpbGQtYXV4L3ByZS1pbnN0LWVudi5pbiBlbWFj
cy9ndWl4LWNvbmZpZy5lbCBlbWFjcy9ndWl4LWhlbHBlci5zY20iCmNvbmZpZ19oZWFkZXJzPSIg
bml4L2NvbmZpZy5oIgpjb25maWdfY29tbWFuZHM9IiBkZXBmaWxlcyBwby1kaXJlY3RvcmllcyIK
CmFjX2NzX3VzYWdlPSJcClxgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90aGVyIGNv
bmZpZ3VyYXRpb24gYWN0aW9ucwpmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJl
bnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUgZmlsZXMKYW5kIGFjdGlvbnMgYXJlIHNwZWNp
ZmllZCBhcyBUQUdzLCBhbGwgYXJlIGluc3RhbnRpYXRlZCBieSBkZWZhdWx0LgoKVXNhZ2U6ICQw
IFtPUFRJT05dLi4uIFtUQUddLi4uCgogIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhpcyBoZWxw
LCB0aGVuIGV4aXQKICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyIGFuZCBj
b25maWd1cmF0aW9uIHNldHRpbmdzLCB0aGVuIGV4aXQKICAgICAgLS1jb25maWcgICAgIHByaW50
IGNvbmZpZ3VyYXRpb24sIHRoZW4gZXhpdAogIC1xLCAtLXF1aWV0LCAtLXNpbGVudAogICAgICAg
ICAgICAgICAgICAgZG8gbm90IHByaW50IHByb2dyZXNzIG1lc3NhZ2VzCiAgLWQsIC0tZGVidWcg
ICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzCiAgICAgIC0tcmVjaGVjayAgICB1cGRh
dGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUgY29uZGl0aW9ucwogICAgICAt
LWZpbGU9RklMRVs6VEVNUExBVEVdCiAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUg
Y29uZmlndXJhdGlvbiBmaWxlIEZJTEUKICAgICAgLS1oZWFkZXI9RklMRVs6VEVNUExBVEVdCiAg
ICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFkZXIgRklM
RQoKQ29uZmlndXJhdGlvbiBmaWxlczoKJGNvbmZpZ19maWxlcwoKQ29uZmlndXJhdGlvbiBoZWFk
ZXJzOgokY29uZmlnX2hlYWRlcnMKCkNvbmZpZ3VyYXRpb24gY29tbWFuZHM6CiRjb25maWdfY29t
bWFuZHMKClJlcG9ydCBidWdzIHRvIDxidWctZ3VpeEBnbnUub3JnPi4KR05VIEd1aXggaG9tZSBw
YWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2d1aXgvPi4KR2VuZXJhbCBoZWxwIHVz
aW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uIgoKYWNfY3Nf
Y29uZmlnPSInUEtHX0NPTkZJR19QQVRIPS9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndq
enkxa2Zpd3FnZHAtcHJvZmlsZS9saWIvcGtnY29uZmlnOjovaG9tZS9zYXBpZW50ZWNoLy5ndWl4
LXByb2ZpbGUvbGliL3BrZ2NvbmZpZyciCmFjX2NzX3ZlcnNpb249IlwKR05VIEd1aXggY29uZmln
LnN0YXR1cyAwLjEwLjAKY29uZmlndXJlZCBieSAuL2NvbmZpZ3VyZSwgZ2VuZXJhdGVkIGJ5IEdO
VSBBdXRvY29uZiAyLjY5LAogIHdpdGggb3B0aW9ucyBcIiRhY19jc19jb25maWdcIgoKQ29weXJp
Z2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpUaGlzIGNvbmZpZy5z
dGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24KZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9k
aWZ5IGl0LiIKCmFjX3B3ZD0nL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcCcKc3Jj
ZGlyPScuJwpJTlNUQUxMPScvZ251L3N0b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3anp5MWtmaXdx
Z2RwLXByb2ZpbGUvYmluL2luc3RhbGwgLWMnCk1LRElSX1A9Jy9nbnUvc3RvcmUvMjBxc2dpbDE4
aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9iaW4vbWtkaXIgLXAnCkFXSz0nZ2F3aycK
dGVzdCAtbiAiJEFXSyIgfHwgQVdLPWF3awojIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRo
ZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuCmFjX25lZWRfZGVmYXVsdHM9Ogp3aGls
ZSB0ZXN0ICQjICE9IDAKZG8KICBjYXNlICQxIGluCiAgLS0qPT8qKQogICAgYWNfb3B0aW9uPWBl
eHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdY
W149XSo9XCguKlwpJ2AKICAgIGFjX3NoaWZ0PToKICAgIDs7CiAgLS0qPSkKICAgIGFjX29wdGlv
bj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCiAgICBhY19vcHRhcmc9CiAgICBhY19zaGlm
dD06CiAgICA7OwogICopCiAgICBhY19vcHRpb249JDEKICAgIGFjX29wdGFyZz0kMgogICAgYWNf
c2hpZnQ9c2hpZnQKICAgIDs7CiAgZXNhYwoKICBjYXNlICRhY19vcHRpb24gaW4KICAjIEhhbmRs
aW5nIG9mIHRoZSBvcHRpb25zLgogIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAt
LXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQogICAgYWNfY3NfcmVjaGVjaz06
IDs7CiAgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAt
LXZlIHwgLS12IHwgLVYgKQogICAgJGFzX2VjaG8gIiRhY19jc192ZXJzaW9uIjsgZXhpdCA7Owog
IC0tY29uZmlnIHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29uIHwgLS1jbyB8IC0tYyApCiAgICAk
YXNfZWNobyAiJGFjX2NzX2NvbmZpZyI7IGV4aXQgOzsKICAtLWRlYnVnIHwgLS1kZWJ1IHwgLS1k
ZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQogICAgZGVidWc9OiA7OwogIC0tZmlsZSB8IC0tZmlsIHwg
LS1maSB8IC0tZiApCiAgICAkYWNfc2hpZnQKICAgIGNhc2UgJGFjX29wdGFyZyBpbgogICAgKlwn
KikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwn
Jy9nImAgOzsKICAgICcnKSBhc19mbl9lcnJvciAkPyAibWlzc2luZyBmaWxlIGFyZ3VtZW50IiA7
OwogICAgZXNhYwogICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNfb3B0YXJnJyIK
ICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwogIC0taGVhZGVyIHwgLS1oZWFkZSB8IC0taGVh
ZCB8IC0taGVhICkKICAgICRhY19zaGlmdAogICAgY2FzZSAkYWNfb3B0YXJnIGluCiAgICAqXCcq
KSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcn
L2ciYCA7OwogICAgZXNhYwogICAgYXNfZm5fYXBwZW5kIENPTkZJR19IRUFERVJTICIgJyRhY19v
cHRhcmcnIgogICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CiAgLS1oZSB8IC0taCkKICAgICMg
Q29uZmxpY3QgYmV0d2VlbiAtLWhlbHAgYW5kIC0taGVhZGVyCiAgICBhc19mbl9lcnJvciAkPyAi
YW1iaWd1b3VzIG9wdGlvbjogXGAkMScKVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4iOzsKICAtLWhlbHAgfCAtLWhlbCB8IC1oICkKICAgICRhc19lY2hvICIkYWNfY3NfdXNh
Z2UiOyBleGl0IDs7CiAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAt
LXF1IHwgLS1xIFwKICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAt
LXNpbCB8IC0tc2kgfCAtLXMpCiAgICBhY19jc19zaWxlbnQ9OiA7OwoKICAjIFRoaXMgaXMgYW4g
ZXJyb3IuCiAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJwpU
cnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgOzsKCiAgKikgYXNfZm5fYXBw
ZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCiAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZSA7
OwoKICBlc2FjCiAgc2hpZnQKZG9uZQoKYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9CgppZiAkYWNf
Y3Nfc2lsZW50OyB0aGVuCiAgZXhlYyA2Pi9kZXYvbnVsbAogIGFjX2NvbmZpZ3VyZV9leHRyYV9h
cmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCmZpCgppZiAkYWNfY3NfcmVj
aGVjazsgdGhlbgogIHNldCBYIC9iaW4vc2ggJy4vY29uZmlndXJlJyAgJ1BLR19DT05GSUdfUEFU
SD0vZ251L3N0b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3anp5MWtmaXdxZ2RwLXByb2ZpbGUvbGli
L3BrZ2NvbmZpZzo6L2hvbWUvc2FwaWVudGVjaC8uZ3VpeC1wcm9maWxlL2xpYi9wa2djb25maWcn
ICRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgogIHNo
aWZ0CiAgJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPS9iaW4vc2ggJCoiID4mNgogIENP
TkZJR19TSEVMTD0nL2Jpbi9zaCcKICBleHBvcnQgQ09ORklHX1NIRUxMCiAgZXhlYyAiJEAiCmZp
CgpleGVjIDU+PmNvbmZpZy5sb2cKewogIGVjaG8KICBzZWQgJ2g7cy8uLy0vZztzL14uLi4vIyMg
LztzLy4uLiQvICMjLztwO3g7cDt4JyA8PF9BU0JPWAojIyBSdW5uaW5nICRhc19tZS4gIyMKX0FT
Qk9YCiAgJGFzX2VjaG8gIiRhY19sb2ciCn0gPiY1CgojCiMgSU5JVC1DT01NQU5EUwojCkFNREVQ
X1RSVUU9IiIgYWNfYXV4X2Rpcj0iYnVpbGQtYXV4IgojIENhcHR1cmUgdGhlIHZhbHVlIG9mIG9i
c29sZXRlIEFMTF9MSU5HVUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlCiAgICAjIFBP
RklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMsIENBVEFMT0dTLiBC
dXQgaGlkZSBpdAogICAgIyBmcm9tIGF1dG9tYWtlIDwgMS41LgogICAgZXZhbCAnT0JTT0xFVEVf
QUxMX0xJTkdVQVMnJz0iIicKICAgICMgQ2FwdHVyZSB0aGUgdmFsdWUgb2YgTElOR1VBUyBiZWNh
dXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZSBDQVRBTE9HUy4KICAgIExJTkdVQVM9IiVVTlNFVCUi
CgoKCiMgSGFuZGxpbmcgb2YgYXJndW1lbnRzLgpmb3IgYWNfY29uZmlnX3RhcmdldCBpbiAkYWNf
Y29uZmlnX3RhcmdldHMKZG8KICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluCiAgICAiZGVwZmls
ZXMiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVwZmlsZXMiIDs7CiAgICAi
cG8tZGlyZWN0b3JpZXMiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgcG8tZGly
ZWN0b3JpZXMiIDs7CiAgICAibml4L2NvbmZpZy5oIikgQ09ORklHX0hFQURFUlM9IiRDT05GSUdf
SEVBREVSUyBuaXgvY29uZmlnLmgiIDs7CiAgICAibml4L3NjcmlwdHMvbGlzdC1ydW50aW1lLXJv
b3RzIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG5peC9zY3JpcHRzL2xpc3QtcnVudGlt
ZS1yb290cyIgOzsKICAgICJuaXgvc2NyaXB0cy9zdWJzdGl0dXRlIikgQ09ORklHX0ZJTEVTPSIk
Q09ORklHX0ZJTEVTIG5peC9zY3JpcHRzL3N1YnN0aXR1dGUiIDs7CiAgICAibml4L3NjcmlwdHMv
Z3VpeC1hdXRoZW50aWNhdGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbml4L3Njcmlw
dHMvZ3VpeC1hdXRoZW50aWNhdGUiIDs7CiAgICAibml4L3NjcmlwdHMvb2ZmbG9hZCIpIENPTkZJ
R19GSUxFUz0iJENPTkZJR19GSUxFUyBuaXgvc2NyaXB0cy9vZmZsb2FkIiA7OwogICAgIk1ha2Vm
aWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7OwogICAgInBvL2d1
aXgvTWFrZWZpbGUuaW4iKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcG8vZ3VpeC9NYWtl
ZmlsZS5pbiIgOzsKICAgICJwby9wYWNrYWdlcy9NYWtlZmlsZS5pbiIpIENPTkZJR19GSUxFUz0i
JENPTkZJR19GSUxFUyBwby9wYWNrYWdlcy9NYWtlZmlsZS5pbiIgOzsKICAgICJndWl4L2NvbmZp
Zy5zY20iKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3VpeC9jb25maWcuc2NtIiA7Owog
ICAgInNjcmlwdHMvZ3VpeCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzY3JpcHRzL2d1
aXgiIDs7CiAgICAidGVzdC1lbnYiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdC1l
bnY6YnVpbGQtYXV4L3Rlc3QtZW52LmluIiA7OwogICAgInByZS1pbnN0LWVudiIpIENPTkZJR19G
SUxFUz0iJENPTkZJR19GSUxFUyBwcmUtaW5zdC1lbnY6YnVpbGQtYXV4L3ByZS1pbnN0LWVudi5p
biIgOzsKICAgICJlbWFjcy9ndWl4LWNvbmZpZy5lbCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19G
SUxFUyBlbWFjcy9ndWl4LWNvbmZpZy5lbCIgOzsKICAgICJlbWFjcy9ndWl4LWhlbHBlci5zY20i
KSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZW1hY3MvZ3VpeC1oZWxwZXIuc2NtIiA7OwoK
ICAqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3Rhcmdl
dCciICIkTElORU5PIiA1OzsKICBlc2FjCmRvbmUKCgojIElmIHRoZSB1c2VyIGRpZCBub3QgdXNl
IHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMgdG8gaW5zdGFudGlhdGUsCiMgdGhl
biB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUg
bm90LgojIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IGJl
Y2F1c2Ugb2YgYW4gZXh0cmVtZWx5CiMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4xLjMuCmlmICRh
Y19uZWVkX2RlZmF1bHRzOyB0aGVuCiAgdGVzdCAiJHtDT05GSUdfRklMRVMrc2V0fSIgPSBzZXQg
fHwgQ09ORklHX0ZJTEVTPSRjb25maWdfZmlsZXMKICB0ZXN0ICIke0NPTkZJR19IRUFERVJTK3Nl
dH0iID0gc2V0IHx8IENPTkZJR19IRUFERVJTPSRjb25maWdfaGVhZGVycwogIHRlc3QgIiR7Q09O
RklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENPTkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1h
bmRzCmZpCgojIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1h
a2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUKIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFz
b24gYWdhaW5zdCBoYXZpbmcgaXQgaGVyZSwgYW5kIGluIGFkZGl0aW9uLAojIGNyZWF0aW5nIGFu
ZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuCiMg
SG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KIyBOb3RlIHRoYXQgdGhlcmUg
aXMgYSBzbWFsbCB3aW5kb3cgaW4gd2hpY2ggdGhlIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVh
bmVkOgojIGFmdGVyIGl0cyBjcmVhdGlvbiBidXQgYmVmb3JlIGl0cyBuYW1lIGhhcyBiZWVuIGFz
c2lnbmVkIHRvIGAkdG1wJy4KJGRlYnVnIHx8CnsKICB0bXA9IGFjX3RtcD0KICB0cmFwICdleGl0
X3N0YXR1cz0kPwogIDogIiR7YWNfdG1wOj0kdG1wfSIKICB7IHRlc3QgISAtZCAiJGFjX3RtcCIg
fHwgcm0gLWZyICIkYWNfdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cwonIDAKICB0cmFwICdh
c19mbl9leGl0IDEnIDEgMiAxMyAxNQp9CiMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9y
eSBmb3IgdG1wIGZpbGVzLgoKewogIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29u
ZlhYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgogIHRlc3QgLWQgIiR0bXAiCn0gIHx8CnsKICB0bXA9
Li9jb25mJCQtJFJBTkRPTQogICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0bXAiKQp9IHx8IGFzX2Zu
X2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJ
TkVOTyIgNQphY190bXA9JHRtcAoKIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19GSUxF
UyBzZWN0aW9uLgojIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09O
RklHX0ZJTEVTLgojIFRoaXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3Rh
dHVzIGNvbmZpZy5oJy4KaWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4KCgphY19jcj1g
ZWNobyBYIHwgdHIgWCAnXDAxNSdgCiMgT24gY3lnd2luLCBiYXNoIGNhbiBlYXQgXHIgaW5zaWRl
IGBgIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpZ25jci4KIyBCdXQgd2Uga25vdyBvZiBubyBvdGhl
ciBzaGVsbCB3aGVyZSBhY19jciB3b3VsZCBiZSBlbXB0eSBhdCB0aGlzCiMgcG9pbnQsIHNvIHdl
IGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suCmlmIHRlc3QgIngkYWNfY3IiID0geDsg
dGhlbgogIGV2YWwgYWNfY3I9XCRcJ1xcclwnCmZpCmFjX2NzX2F3a19jcj1gJEFXSyAnQkVHSU4g
eyBwcmludCAiYVxyYiIgfScgPC9kZXYvbnVsbCAyPi9kZXYvbnVsbGAKaWYgdGVzdCAiJGFjX2Nz
X2F3a19jciIgPSAiYSR7YWNfY3J9YiI7IHRoZW4KICBhY19jc19hd2tfY3I9J1xccicKZWxzZQog
IGFjX2NzX2F3a19jcj0kYWNfY3IKZmkKCmVjaG8gJ0JFR0lOIHsnID4iJGFjX3RtcC9zdWJzMS5h
d2siICYmCmNhdCA+PiIkYWNfdG1wL3N1YnMxLmF3ayIgPDxcX0FDQVdLICYmClNbImFtX19FWEVF
WFRfRkFMU0UiXT0iIgpTWyJhbV9fRVhFRVhUX1RSVUUiXT0iIyIKU1siTFRMSUJPQkpTIl09IiIK
U1siTElCT0JKUyJdPSIiClNbImVtYWNzdWlkaXIiXT0iJHtwcmVmaXh9L3NoYXJlL2d1aWxlL3Np
dGUvMi4wL2d1aXgvZW1hY3MiClNbIkhBVkVfRU1BQ1NfRkFMU0UiXT0iIyIKU1siSEFWRV9FTUFD
U19UUlVFIl09IiIKU1sibGlzcGRpciJdPSIke2RhdGFkaXJ9L2VtYWNzL3NpdGUtbGlzcCIKU1si
RU1BQ1NMT0FEUEFUSCJdPSIiClNbIkVNQUNTIl09ImVtYWNzIgpTWyJET1RfVVNFUl9QUk9HUkFN
Il09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9i
aW4vZG90IgpTWyJIRUxQMk1BTiJdPSIke1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL2J1aWxkLWF1eC9taXNzaW5nIGhlbHAybWFuIgpTWyJET1QiXT0iJHtTSEVMTH0g
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC9idWlsZC1hdXgvbWlzc2luZyBkb3Qi
ClNbIkJVSUxEX0RBRU1PTl9PRkZMT0FEX0ZBTFNFIl09IiMiClNbIkJVSUxEX0RBRU1PTl9PRkZM
T0FEX1RSVUUiXT0iIgpTWyJCVUlMRF9EQUVNT05fRkFMU0UiXT0iIyIKU1siQlVJTERfREFFTU9O
X1RSVUUiXT0iIgpTWyJHVUlYX1RFU1RfUk9PVCJdPSIvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL3Rlc3QtdG1wIgpTWyJMSUJHQ1JZUFRfTElCUyJdPSItTC9nbnUvc3RvcmUvN3dm
YnBycDFiOWIyNWNybGlkZzZoN2I2aHBpYjJiOTktbGliZ2NyeXB0LTEuNi41L2xpYiAtbGdjcnlw
dCIKU1siTElCR0NSWVBUX0NGTEFHUyJdPSIiClNbIlNRTElURTNfTElCUyJdPSItTC9nbnUvc3Rv
cmUveTdoOGdmODkwcWFqNmYyM3J5c2h3eGQzcjl5OTZjbmMtc3FsaXRlLTMuMTAuMC9saWIgLWxz
cWxpdGUzIgpTWyJTUUxJVEUzX0NGTEFHUyJdPSItSS9nbnUvc3RvcmUveTdoOGdmODkwcWFqNmYy
M3J5c2h3eGQzcjl5OTZjbmMtc3FsaXRlLTMuMTAuMC9pbmNsdWRlIgpTWyJDWFhDUFAiXT0iZysr
IC1FIgpTWyJSQU5MSUIiXT0icmFubGliIgpTWyJhbV9fZmFzdGRlcENYWF9GQUxTRSJdPSIjIgpT
WyJhbV9fZmFzdGRlcENYWF9UUlVFIl09IiIKU1siQ1hYREVQTU9ERSJdPSJkZXBtb2RlPWdjYzMi
ClNbImFjX2N0X0NYWCJdPSJnKysiClNbIkNYWEZMQUdTIl09Ii1nIC1PMiIKU1siQ1hYIl09Imcr
KyIKU1siTElCWiJdPSIvZ251L3N0b3JlL2hzeGhmbWpnaDhtNGMwcGF2cTNnZDNnY3JuOHpyZ3hq
LXpsaWItMS4yLjgvbGliL2xpYnoiClNbIkxJQkdDUllQVF9MSUJESVIiXT0iL2dudS9zdG9yZS83
d2ZicHJwMWI5YjI1Y3JsaWRnNmg3YjZocGliMmI5OS1saWJnY3J5cHQtMS42LjUvbGliIgpTWyJM
SUJHQ1JZUFRfUFJFRklYIl09Im5vIgpTWyJMSUJHQ1JZUFQiXT0iL2dudS9zdG9yZS83d2ZicHJw
MWI5YjI1Y3JsaWRnNmg3YjZocGliMmI5OS1saWJnY3J5cHQtMS42LjUvbGliL2xpYmdjcnlwdCIK
U1siTElCR0NSWVBUX0NPTkZJRyJdPSIvZ251L3N0b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3anp5
MWtmaXdxZ2RwLXByb2ZpbGUvYmluL2xpYmdjcnlwdC1jb25maWciClNbIk5JWFBLR1MiXT0iIgpT
WyJOSVhfSEFTSCJdPSIiClNbIk5JWF9JTlNUQU5USUFURSJdPSJuaXgtaW5zdGFudGlhdGUiClNb
Ik5JWF9QUkVGSVgiXT0iIgpTWyJYWiJdPSIvZ251L3N0b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3
anp5MWtmaXdxZ2RwLXByb2ZpbGUvYmluL3h6IgpTWyJCWklQMiJdPSIvZ251L3N0b3JlLzIwcXNn
aWwxOGgxazN6bnF4NTJ3anp5MWtmaXdxZ2RwLXByb2ZpbGUvYmluL2J6aXAyIgpTWyJHWklQIl09
Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9iaW4v
Z3ppcCIKU1siQlVJTERfU1lTQ0FMTFNfTU9EVUxFX0ZBTFNFIl09IiMiClNbIkJVSUxEX1NZU0NB
TExTX01PRFVMRV9UUlVFIl09IiIKU1siSU5TVEFMTF9TUkZJXzM3X0ZBTFNFIl09IiIKU1siSU5T
VEFMTF9TUkZJXzM3X1RSVUUiXT0iIyIKU1siSEFWRV9HVUlMRV9KU09OX0ZBTFNFIl09IiMiClNb
IkhBVkVfR1VJTEVfSlNPTl9UUlVFIl09IiIKU1siR1VJTEVfVE9PTFMiXT0iL2dudS9zdG9yZS8y
MHFzZ2lsMThoMWszem5xeDUyd2p6eTFrZml3cWdkcC1wcm9maWxlL2Jpbi9ndWlsZCIKU1siR1VJ
TEVfQ09ORklHIl09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAt
cHJvZmlsZS9iaW4vZ3VpbGUtY29uZmlnIgpTWyJHVUlMRCJdPSIvZ251L3N0b3JlLzIwcXNnaWwx
OGgxazN6bnF4NTJ3anp5MWtmaXdxZ2RwLXByb2ZpbGUvYmluL2d1aWxkIgpTWyJHVUlMRSJdPSIv
Z251L3N0b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3anp5MWtmaXdxZ2RwLXByb2ZpbGUvYmluL2d1
aWxlIgpTWyJHVUlMRV9MSUJTIl09Ii1ML2dudS9zdG9yZS9oeWsyaTdiOG13YnJiaXlxazVzZ3Jm
Z2RzOXp2Y3JuNS1ndWlsZS0yLjAuMTEvbGliIC1ML2dudS9zdG9yZS9teTRhejcxZ3o4aXFkNHc4
a2IzNGtxN3ZsazNmY3ZobS1saWJnYy03LjQuMi9saWIgLWxndWlsZS0yLjAgLWxnYyIKU1siR1VJ
TEVfQ0ZMQUdTIl09Ii1wdGhyZWFkIC1JL2dudS9zdG9yZS9oeWsyaTdiOG13YnJiaXlxazVzZ3Jm
Z2RzOXp2Y3JuNS1ndWlsZS0yLjAuMTEvaW5jbHVkZS9ndWlsZS8yLjAiClNbIlBLR19DT05GSUdf
TElCRElSIl09IiIKU1siUEtHX0NPTkZJR19QQVRIIl09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFr
M3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9saWIvcGtnY29uZmlnOjovaG9tZS9zYXBpZW50
ZWNoLy5ndWl4LXByb2ZpbGUvbGliL3BrZ2NvbmZpZyIKU1siUEtHX0NPTkZJRyJdPSIvZ251L3N0
b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3anp5MWtmaXdxZ2RwLXByb2ZpbGUvYmluL3BrZy1jb25m
aWciClNbIkNBTl9SVU5fVEVTVFNfRkFMU0UiXT0iIyIKU1siQ0FOX1JVTl9URVNUU19UUlVFIl09
IiIKU1siZ3VpeF9zYmluZGlyIl09Ii91c3IvbG9jYWwvc2JpbiIKU1siZ3VpeF9zeXNjb25mZGly
Il09Ii91c3IvbG9jYWwvZXRjIgpTWyJndWl4X2xvY2Fsc3RhdGVkaXIiXT0iL3Vzci9sb2NhbC92
YXIiClNbImJhc2hjb21wbGV0aW9uZGlyIl09IiR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9u
LmQiClNbInN0b3JlZGlyIl09Ii9nbnUvc3RvcmUiClNbImd1aXhfc3lzdGVtIl09Ing4Nl82NC1s
aW51eCIKU1siU0VEIl09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3Fn
ZHAtcHJvZmlsZS9iaW4vc2VkIgpTWyJndWlsZW1vZHVsZWRpciJdPSIke3ByZWZpeH0vc2hhcmUv
Z3VpbGUvc2l0ZS8yLjAiClNbIlBPU1VCIl09InBvIgpTWyJMVExJQklOVEwiXT0iIgpTWyJMSUJJ
TlRMIl09IiIKU1siSU5UTExJQlMiXT0iIgpTWyJMVExJQklDT05WIl09Ii1saWNvbnYiClNbIkxJ
QklDT05WIl09Ii1saWNvbnYiClNbIklOVExfTUFDT1NYX0xJQlMiXT0iIgpTWyJob3N0X29zIl09
ImxpbnV4LWdudSIKU1siaG9zdF92ZW5kb3IiXT0idW5rbm93biIKU1siaG9zdF9jcHUiXT0ieDg2
XzY0IgpTWyJob3N0Il09Ing4Nl82NC11bmtub3duLWxpbnV4LWdudSIKU1siYnVpbGRfb3MiXT0i
bGludXgtZ251IgpTWyJidWlsZF92ZW5kb3IiXT0idW5rbm93biIKU1siYnVpbGRfY3B1Il09Ing4
Nl82NCIKU1siYnVpbGQiXT0ieDg2XzY0LXVua25vd24tbGludXgtZ251IgpTWyJYR0VUVEVYVF9F
WFRSQV9PUFRJT05TIl09IiIKU1siTVNHTUVSR0UiXT0iL2dudS9zdG9yZS8yMHFzZ2lsMThoMWsz
em5xeDUyd2p6eTFrZml3cWdkcC1wcm9maWxlL2Jpbi9tc2dtZXJnZSIKU1siWEdFVFRFWFRfMDE1
Il09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9i
aW4veGdldHRleHQiClNbIlhHRVRURVhUIl09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1
Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9iaW4veGdldHRleHQiClNbIkdNU0dGTVRfMDE1Il09Ii9n
bnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9iaW4vbXNn
Zm10IgpTWyJNU0dGTVRfMDE1Il09Ii9nbnUvc3RvcmUvMjBxc2dpbDE4aDFrM3pucXg1Mndqenkx
a2Zpd3FnZHAtcHJvZmlsZS9iaW4vbXNnZm10IgpTWyJHTVNHRk1UIl09Ii9nbnUvc3RvcmUvMjBx
c2dpbDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9iaW4vbXNnZm10IgpTWyJNU0dG
TVQiXT0iL2dudS9zdG9yZS8yMHFzZ2lsMThoMWszem5xeDUyd2p6eTFrZml3cWdkcC1wcm9maWxl
L2Jpbi9tc2dmbXQiClNbIkdFVFRFWFRfTUFDUk9fVkVSU0lPTiJdPSIwLjE4IgpTWyJVU0VfTkxT
Il09InllcyIKU1siRUdSRVAiXT0iL2dudS9zdG9yZS8yMHFzZ2lsMThoMWszem5xeDUyd2p6eTFr
Zml3cWdkcC1wcm9maWxlL2Jpbi9ncmVwIC1FIgpTWyJHUkVQIl09Ii9nbnUvc3RvcmUvMjBxc2dp
bDE4aDFrM3pucXg1Mndqenkxa2Zpd3FnZHAtcHJvZmlsZS9iaW4vZ3JlcCIKU1siQ1BQIl09Imdj
YyAtRSIKU1siYW1fX2Zhc3RkZXBDQ19GQUxTRSJdPSIjIgpTWyJhbV9fZmFzdGRlcENDX1RSVUUi
XT0iIgpTWyJDQ0RFUE1PREUiXT0iZGVwbW9kZT1nY2MzIgpTWyJhbV9fbm9kZXAiXT0iX25vIgpT
WyJBTURFUEJBQ0tTTEFTSCJdPSJcXCIKU1siQU1ERVBfRkFMU0UiXT0iIyIKU1siQU1ERVBfVFJV
RSJdPSIiClNbImFtX19xdW90ZSJdPSIiClNbImFtX19pbmNsdWRlIl09ImluY2x1ZGUiClNbIkRF
UERJUiJdPSIuZGVwcyIKU1siT0JKRVhUIl09Im8iClNbIkVYRUVYVCJdPSIiClNbImFjX2N0X0ND
Il09ImdjYyIKU1siQ1BQRkxBR1MiXT0iIgpTWyJMREZMQUdTIl09IiIKU1siQ0ZMQUdTIl09Ii1n
IC1PMiIKU1siQ0MiXT0iZ2NjIgpTWyJBTV9CQUNLU0xBU0giXT0iXFwiClNbIkFNX0RFRkFVTFRf
VkVSQk9TSVRZIl09IjAiClNbIkFNX0RFRkFVTFRfViJdPSIkKEFNX0RFRkFVTFRfVkVSQk9TSVRZ
KSIKU1siQU1fViJdPSIkKFYpIgpTWyJhbV9fdW50YXIiXT0iJCR7VEFSLXRhcn0geGYgLSIKU1si
YW1fX3RhciJdPSIkJHtUQVItdGFyfSBjaG9mIC0gXCIkJHRhcmRpclwiIgpTWyJBTVRBUiJdPSIk
JHtUQVItdGFyfSIKU1siYW1fX2xlYWRpbmdfZG90Il09Ii4iClNbIlNFVF9NQUtFIl09IiIKU1si
QVdLIl09Imdhd2siClNbIm1rZGlyX3AiXT0iL2dudS9zdG9yZS8yMHFzZ2lsMThoMWszem5xeDUy
d2p6eTFrZml3cWdkcC1wcm9maWxlL2Jpbi9ta2RpciAtcCIKU1siTUtESVJfUCJdPSIvZ251L3N0
b3JlLzIwcXNnaWwxOGgxazN6bnF4NTJ3anp5MWtmaXdxZ2RwLXByb2ZpbGUvYmluL21rZGlyIC1w
IgpTWyJJTlNUQUxMX1NUUklQX1BST0dSQU0iXT0iJChpbnN0YWxsX3NoKSAtYyAtcyIKU1siU1RS
SVAiXT0iIgpTWyJpbnN0YWxsX3NoIl09IiR7U0hFTEx9IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1
aXgvZ3VpeF93aXAvYnVpbGQtYXV4L2luc3RhbGwtc2giClNbIk1BS0VJTkZPIl09IiR7U0hFTEx9
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvYnVpbGQtYXV4L21pc3NpbmcgbWFr
ZWluZm8iClNbIkFVVE9IRUFERVIiXT0iJHtTSEVMTH0gL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC9idWlsZC1hdXgvbWlzc2luZyBhdXRvaGVhZGVyIgpTWyJBVVRPTUFLRSJdPSIk
e1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL2J1aWxkLWF1eC9taXNz
aW5nIGF1dG9tYWtlLTEuMTUiClNbIkFVVE9DT05GIl09IiR7U0hFTEx9IC9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvYnVpbGQtYXV4L21pc3NpbmcgYXV0b2NvbmYiClNbIkFDTE9D
QUwiXT0iJHtTSEVMTH0gL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC9idWlsZC1h
dXgvbWlzc2luZyBhY2xvY2FsLTEuMTUiClNbIlZFUlNJT04iXT0iMC4xMC4wIgpTWyJQQUNLQUdF
Il09Imd1aXgiClNbIkNZR1BBVEhfVyJdPSJlY2hvIgpTWyJhbV9faXNyYyJdPSIiClNbIklOU1RB
TExfREFUQSJdPSIke0lOU1RBTEx9IC1tIDY0NCIKU1siSU5TVEFMTF9TQ1JJUFQiXT0iJHtJTlNU
QUxMfSIKU1siSU5TVEFMTF9QUk9HUkFNIl09IiR7SU5TVEFMTH0iClNbInRhcmdldF9hbGlhcyJd
PSIiClNbImhvc3RfYWxpYXMiXT0iIgpTWyJidWlsZF9hbGlhcyJdPSIiClNbIkxJQlMiXT0iIgpT
WyJFQ0hPX1QiXT0iIgpTWyJFQ0hPX04iXT0iLW4iClNbIkVDSE9fQyJdPSIiClNbIkRFRlMiXT0i
LURIQVZFX0NPTkZJR19IIgpTWyJtYW5kaXIiXT0iJHtkYXRhcm9vdGRpcn0vbWFuIgpTWyJsb2Nh
bGVkaXIiXT0iJHtkYXRhcm9vdGRpcn0vbG9jYWxlIgpTWyJsaWJkaXIiXT0iJHtleGVjX3ByZWZp
eH0vbGliIgpTWyJwc2RpciJdPSIke2RvY2Rpcn0iClNbInBkZmRpciJdPSIke2RvY2Rpcn0iClNb
ImR2aWRpciJdPSIke2RvY2Rpcn0iClNbImh0bWxkaXIiXT0iJHtkb2NkaXJ9IgpTWyJpbmZvZGly
Il09IiR7ZGF0YXJvb3RkaXJ9L2luZm8iClNbImRvY2RpciJdPSIke2RhdGFyb290ZGlyfS9kb2Mv
JHtQQUNLQUdFX1RBUk5BTUV9IgpTWyJvbGRpbmNsdWRlZGlyIl09Ii91c3IvaW5jbHVkZSIKU1si
aW5jbHVkZWRpciJdPSIke3ByZWZpeH0vaW5jbHVkZSIKU1sibG9jYWxzdGF0ZWRpciJdPSIke3By
ZWZpeH0vdmFyIgpTWyJzaGFyZWRzdGF0ZWRpciJdPSIke3ByZWZpeH0vY29tIgpTWyJzeXNjb25m
ZGlyIl09IiR7cHJlZml4fS9ldGMiClNbImRhdGFkaXIiXT0iJHtkYXRhcm9vdGRpcn0iClNbImRh
dGFyb290ZGlyIl09IiR7cHJlZml4fS9zaGFyZSIKU1sibGliZXhlY2RpciJdPSIke2V4ZWNfcHJl
Zml4fS9saWJleGVjIgpTWyJzYmluZGlyIl09IiR7ZXhlY19wcmVmaXh9L3NiaW4iClNbImJpbmRp
ciJdPSIke2V4ZWNfcHJlZml4fS9iaW4iClNbInByb2dyYW1fdHJhbnNmb3JtX25hbWUiXT0icyx4
LHgsIgpTWyJwcmVmaXgiXT0iL3Vzci9sb2NhbCIKU1siZXhlY19wcmVmaXgiXT0iJHtwcmVmaXh9
IgpTWyJQQUNLQUdFX1VSTCJdPSJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ3VpeC8iClNb
IlBBQ0tBR0VfQlVHUkVQT1JUIl09ImJ1Zy1ndWl4QGdudS5vcmciClNbIlBBQ0tBR0VfU1RSSU5H
Il09IkdOVSBHdWl4IDAuMTAuMCIKU1siUEFDS0FHRV9WRVJTSU9OIl09IjAuMTAuMCIKU1siUEFD
S0FHRV9UQVJOQU1FIl09Imd1aXgiClNbIlBBQ0tBR0VfTkFNRSJdPSJHTlUgR3VpeCIKU1siUEFU
SF9TRVBBUkFUT1IiXT0iOiIKU1siU0hFTEwiXT0iL2Jpbi9zaCIKX0FDQVdLCmNhdCA+PiIkYWNf
dG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sgJiYKICBmb3IgKGtleSBpbiBTKSBTX2lzX3NldFtrZXld
ID0gMQogIEZTID0gIgciCgp9CnsKICBsaW5lID0gJCAwCiAgbmZpZWxkcyA9IHNwbGl0KGxpbmUs
IGZpZWxkLCAiQCIpCiAgc3Vic3RlZCA9IDAKICBsZW4gPSBsZW5ndGgoZmllbGRbMV0pCiAgZm9y
IChpID0gMjsgaSA8IG5maWVsZHM7IGkrKykgewogICAga2V5ID0gZmllbGRbaV0KICAgIGtleWxl
biA9IGxlbmd0aChrZXkpCiAgICBpZiAoU19pc19zZXRba2V5XSkgewogICAgICB2YWx1ZSA9IFNb
a2V5XQogICAgICBsaW5lID0gc3Vic3RyKGxpbmUsIDEsIGxlbikgIiIgdmFsdWUgIiIgc3Vic3Ry
KGxpbmUsIGxlbiArIGtleWxlbiArIDMpCiAgICAgIGxlbiArPSBsZW5ndGgodmFsdWUpICsgbGVu
Z3RoKGZpZWxkWysraV0pCiAgICAgIHN1YnN0ZWQgPSAxCiAgICB9IGVsc2UKICAgICAgbGVuICs9
IDEgKyBrZXlsZW4KICB9CgogIHByaW50IGxpbmUKfQoKX0FDQVdLCmlmIHNlZCAicy8kYWNfY3Iv
LyIgPCAvZGV2L251bGwgPiAvZGV2L251bGwgMj4mMTsgdGhlbgogIHNlZCAicy8kYWNfY3JcJC8v
OyBzLyRhY19jci8kYWNfY3NfYXdrX2NyL2ciCmVsc2UKICBjYXQKZmkgPCAiJGFjX3RtcC9zdWJz
MS5hd2siID4gIiRhY190bXAvc3Vicy5hd2siIFwKICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQg
bm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1CmZpICMgdGVzdCAt
biAiJENPTkZJR19GSUxFUyIKCiMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfSEVBREVS
UyBzZWN0aW9uLgojIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09O
RklHX0hFQURFUlMuCiMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5z
dGF0dXMgTWFrZWZpbGUnLgppZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCmNhdCA+
IiRhY190bXAvZGVmaW5lcy5hd2siIDw8XF9BQ0FXSyB8fApCRUdJTiB7CkRbIlBBQ0tBR0VfTkFN
RSJdPSIgXCJHTlUgR3VpeFwiIgpEWyJQQUNLQUdFX1RBUk5BTUUiXT0iIFwiZ3VpeFwiIgpEWyJQ
QUNLQUdFX1ZFUlNJT04iXT0iIFwiMC4xMC4wXCIiCkRbIlBBQ0tBR0VfU1RSSU5HIl09IiBcIkdO
VSBHdWl4IDAuMTAuMFwiIgpEWyJQQUNLQUdFX0JVR1JFUE9SVCJdPSIgXCJidWctZ3VpeEBnbnUu
b3JnXCIiCkRbIlBBQ0tBR0VfVVJMIl09IiBcImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9n
dWl4L1wiIgpEWyJQQUNLQUdFIl09IiBcImd1aXhcIiIKRFsiVkVSU0lPTiJdPSIgXCIwLjEwLjBc
IiIKRFsiU1REQ19IRUFERVJTIl09IiAxIgpEWyJIQVZFX1NZU19UWVBFU19IIl09IiAxIgpEWyJI
QVZFX1NZU19TVEFUX0giXT0iIDEiCkRbIkhBVkVfU1RETElCX0giXT0iIDEiCkRbIkhBVkVfU1RS
SU5HX0giXT0iIDEiCkRbIkhBVkVfTUVNT1JZX0giXT0iIDEiCkRbIkhBVkVfU1RSSU5HU19IIl09
IiAxIgpEWyJIQVZFX0lOVFRZUEVTX0giXT0iIDEiCkRbIkhBVkVfU1RESU5UX0giXT0iIDEiCkRb
IkhBVkVfVU5JU1REX0giXT0iIDEiCkRbIl9fRVhURU5TSU9OU19fIl09IiAxIgpEWyJfQUxMX1NP
VVJDRSJdPSIgMSIKRFsiX0dOVV9TT1VSQ0UiXT0iIDEiCkRbIl9QT1NJWF9QVEhSRUFEX1NFTUFO
VElDUyJdPSIgMSIKRFsiX1RBTkRFTV9TT1VSQ0UiXT0iIDEiCkRbIkVOQUJMRV9OTFMiXT0iIDEi
CkRbIkhBVkVfR0VUVEVYVCJdPSIgMSIKRFsiSEFWRV9EQ0dFVFRFWFQiXT0iIDEiCkRbIkhBVkVf
QlpMSUJfSCJdPSIgMSIKRFsiTklYX1ZFUlNJT04iXT0iIFwiMC4wLjBcIiIKRFsiU1lTVEVNIl09
IiBcIng4Nl82NC1saW51eFwiIgpEWyJIQVZFX0NIUk9PVCJdPSIgMSIKRFsiSEFWRV9VTlNIQVJF
Il09IiAxIgpEWyJIQVZFX1NDSEVEX0giXT0iIDEiCkRbIkhBVkVfU1lTX1BBUkFNX0giXT0iIDEi
CkRbIkhBVkVfU1lTX01PVU5UX0giXT0iIDEiCkRbIkhBVkVfU1lTX1NZU0NBTExfSCJdPSIgMSIK
RFsiSEFWRV9MVVRJTUVTIl09IiAxIgpEWyJIQVZFX0xDSE9XTiJdPSIgMSIKRFsiSEFWRV9QT1NJ
WF9GQUxMT0NBVEUiXT0iIDEiCkRbIkhBVkVfU0NIRURfU0VUQUZGSU5JVFkiXT0iIDEiCkRbIkhB
VkVfU1RBVFZGUyJdPSIgMSIKRFsiSEFWRV9OQU5PU0xFRVAiXT0iIDEiCkRbIkhBVkVfU1RSU0lH
TkFMIl09IiAxIgpEWyJDQU5fTElOS19TWU1MSU5LIl09IiAxIgpEWyJIQVZFX0xPQ0FMRSJdPSIg
MSIKRFsiSEFWRV9TWVNfUEVSU09OQUxJVFlfSCJdPSIgMSIKRFsiSEFWRV9MSU5VWF9GU19IIl09
IiAxIgpEWyJHVUlYX1NVQlNUSVRVVEVfVVJMUyJdPSIgXCJodHRwczovL21pcnJvci5oeWRyYS5n
bnUub3JnXCIiCkRbIkhBVkVfREFFTU9OX09GRkxPQURfSE9PSyJdPSIgMSIKICBmb3IgKGtleSBp
biBEKSBEX2lzX3NldFtrZXldID0gMQogIEZTID0gIgciCn0KL15bXHQgXSojW1x0IF0qKGRlZmlu
ZXx1bmRlZilbXHQgXStbX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVpdW19hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaMDEyMzQ1Njc4OV0qKFtcdCAoXXwkKS8gewogIGxpbmUgPSAkIDAKICBzcGxpdChs
aW5lLCBhcmcsICIgIikKICBpZiAoYXJnWzFdID09ICIjIikgewogICAgZGVmdW5kZWYgPSBhcmdb
Ml0KICAgIG1hYzEgPSBhcmdbM10KICB9IGVsc2UgewogICAgZGVmdW5kZWYgPSBzdWJzdHIoYXJn
WzFdLCAyKQogICAgbWFjMSA9IGFyZ1syXQogIH0KICBzcGxpdChtYWMxLCBtYWMyLCAiKCIpICMp
CiAgbWFjcm8gPSBtYWMyWzFdCiAgcHJlZml4ID0gc3Vic3RyKGxpbmUsIDEsIGluZGV4KGxpbmUs
IGRlZnVuZGVmKSAtIDEpCiAgaWYgKERfaXNfc2V0W21hY3JvXSkgewogICAgIyBQcmVzZXJ2ZSB0
aGUgd2hpdGUgc3BhY2Ugc3Vycm91bmRpbmcgdGhlICIjIi4KICAgIHByaW50IHByZWZpeCAiZGVm
aW5lIiwgbWFjcm8gUFttYWNyb10gRFttYWNyb10KICAgIG5leHQKICB9IGVsc2UgewogICAgIyBS
ZXBsYWNlICN1bmRlZiB3aXRoIGNvbW1lbnRzLiAgVGhpcyBpcyBuZWNlc3NhcnksIGZvciBleGFt
cGxlLAogICAgIyBpbiB0aGUgY2FzZSBvZiBfUE9TSVhfU09VUkNFLCB3aGljaCBpcyBwcmVkZWZp
bmVkIGFuZCByZXF1aXJlZAogICAgIyBvbiBzb21lIHN5c3RlbXMgd2hlcmUgY29uZmlndXJlIHdp
bGwgbm90IGRlY2lkZSB0byBkZWZpbmUgaXQuCiAgICBpZiAoZGVmdW5kZWYgPT0gInVuZGVmIikg
ewogICAgICBwcmludCAiLyoiLCBwcmVmaXggZGVmdW5kZWYsIG1hY3JvLCAiKi8iCiAgICAgIG5l
eHQKICAgIH0KICB9Cn0KeyBwcmludCB9Cl9BQ0FXSwogIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBu
b3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQpmaSAjIHRlc3Qg
LW4gIiRDT05GSUdfSEVBREVSUyIKCgpldmFsIHNldCBYICIgIDpGICRDT05GSUdfRklMRVMgIDpI
ICRDT05GSUdfSEVBREVSUyAgICA6QyAkQ09ORklHX0NPTU1BTkRTIgpzaGlmdApmb3IgYWNfdGFn
CmRvCiAgY2FzZSAkYWNfdGFnIGluCiAgOltGSExDXSkgYWNfbW9kZT0kYWNfdGFnOyBjb250aW51
ZTs7CiAgZXNhYwogIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCiAgOltGSExdKjoqKTs7CiAgOkwq
IHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJTkVO
TyIgNTs7CiAgOltGSF0tKSBhY190YWc9LTotOzsKICA6W0ZIXSopIGFjX3RhZz0kYWNfdGFnOiRh
Y190YWcuaW47OwogIGVzYWMKICBhY19zYXZlX0lGUz0kSUZTCiAgSUZTPToKICBzZXQgeCAkYWNf
dGFnCiAgSUZTPSRhY19zYXZlX0lGUwogIHNoaWZ0CiAgYWNfZmlsZT0kMQogIHNoaWZ0CgogIGNh
c2UgJGFjX21vZGUgaW4KICA6TCkgYWNfc291cmNlPSQxOzsKICA6W0ZIXSkKICAgIGFjX2ZpbGVf
aW5wdXRzPQogICAgZm9yIGFjX2YKICAgIGRvCiAgICAgIGNhc2UgJGFjX2YgaW4KICAgICAgLSkg
YWNfZj0iJGFjX3RtcC9zdGRpbiI7OwogICAgICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0
IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3VyY2UgdHJlZQoJICMgKGlmIHRoZSBw
YXRoIGlzIG5vdCBhYnNvbHV0ZSkuICBUaGUgYWJzb2x1dGUgcGF0aCBjYW5ub3QgYmUgRE9TLXN0
eWxlLAoJICMgYmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuCgkgdGVzdCAtZiAiJGFj
X2YiIHx8CgkgICBjYXNlICRhY19mIGluCgkgICBbXFwvJF0qKSBmYWxzZTs7CgkgICAqKSB0ZXN0
IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIkc3JjZGlyLyRhY19mIjs7CgkgICBlc2FjIHx8
CgkgICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRM
SU5FTk8iIDU7OwogICAgICBlc2FjCiAgICAgIGNhc2UgJGFjX2YgaW4gKlwnKikgYWNfZj1gJGFz
X2VjaG8gIiRhY19mIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7IGVzYWMKICAgICAgYXNf
Zm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKICAgIGRvbmUKCiAgICAjIExldCdz
IHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUu
LCBkb24ndAogICAgIyB1c2UgJGFzX21lKSwgcGVvcGxlIHdvdWxkIGJlIHN1cnByaXNlZCB0byBy
ZWFkOgogICAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAg
Ki8KICAgIGNvbmZpZ3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKCSAgJGFzX2VjaG8gIiQq
IiB8IHNlZCAnc3xeW146XSovfHw7c3w6W146XSovfCwgfGcnCglgJyBieSBjb25maWd1cmUuJwog
ICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgogICAgICBjb25maWd1cmVfaW5wdXQ9
IiRhY19maWxlLiAgJGNvbmZpZ3VyZV9pbnB1dCIKICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1CiRhc19lY2hvICIkYXNf
bWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQogICAgZmkKICAgICMgTmV1dHJhbGl6ZSBzcGVj
aWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxhY2VtZW50IHN0cmluZ3Mu
CiAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygKICAgICpcJiogfCAqXHwqIHwgKlxcKiAp
CiAgICAgICBhY19zZWRfY29uZl9pbnB1dD1gJGFzX2VjaG8gIiRjb25maWd1cmVfaW5wdXQiIHwK
ICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAogICAgKikgYWNfc2VkX2NvbmZf
aW5wdXQ9JGNvbmZpZ3VyZV9pbnB1dDs7CiAgICBlc2FjCgogICAgY2FzZSAkYWNfdGFnIGluCiAg
ICAqOi06KiB8ICo6LSkgY2F0ID4iJGFjX3RtcC9zdGRpbiIgXAogICAgICB8fCBhc19mbl9lcnJv
ciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgOzsKICAgIGVzYWMK
ICAgIDs7CiAgZXNhYwoKICBhY19kaXI9YCRhc19kaXJuYW1lIC0tICIkYWNfZmlsZSIgfHwKJGFz
X2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKCSBY
IiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAoJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkk
JyBcfCBcCgkgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiRhc19l
Y2hvIFgiJGFjX2ZpbGUiIHwKICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8q
JC97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cL1wpW14vXS4qL3sKCSAgICBz
Ly9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wvXCkkL3sKCSAgICBzLy9cMS8KCSAgICBxCgkg
IH0KCSAgL15YXChcL1wpLiovewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICBzLy4qLy4vOyBx
J2AKICBhc19kaXI9IiRhY19kaXIiOyBhc19mbl9ta2Rpcl9wCiAgYWNfYnVpbGRkaXI9LgoKY2Fz
ZSAiJGFjX2RpciIgaW4KLikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFj
X3RvcF9idWlsZF9wcmVmaXg9IDs7CiopCiAgYWNfZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNf
ZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AKICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3Rvcnkg
aW4gJGFjX2Rpcl9zdWZmaXguCiAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19k
aXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCiAgY2FzZSAkYWNfdG9w
X2J1aWxkZGlyX3N1YiBpbgogICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxk
X3ByZWZpeD0gOzsKICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1
Yi8gOzsKICBlc2FjIDs7CmVzYWMKYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCmFjX2Fic19i
dWlsZGRpcj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgKIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0
eToKYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4CgpjYXNlICRzcmNkaXIgaW4K
ICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCiAgICBhY19zcmNkaXI9LgogICAgYWNf
dG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1YgogICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFj
X3B3ZCA7OwogIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KICAgIGFjX3Ny
Y2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7CiAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIKICAg
IGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsKICAqKSAjIFJlbGF0aXZlIG5hbWUuCiAgICBh
Y19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZmaXgKICAgIGFj
X3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCiAgICBhY19hYnNfdG9wX3Ny
Y2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsKZXNhYwphY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3Ny
Y2RpciRhY19kaXJfc3VmZml4CgoKICBjYXNlICRhY19tb2RlIGluCiAgOkYpCiAgIwogICMgQ09O
RklHX0ZJTEUKICAjCgogIGNhc2UgJElOU1RBTEwgaW4KICBbXFwvJF0qIHwgPzpbXFwvXSogKSBh
Y19JTlNUQUxMPSRJTlNUQUxMIDs7CiAgKikgYWNfSU5TVEFMTD0kYWNfdG9wX2J1aWxkX3ByZWZp
eCRJTlNUQUxMIDs7CiAgZXNhYwogIGFjX01LRElSX1A9JE1LRElSX1AKICBjYXNlICRNS0RJUl9Q
IGluCiAgW1xcLyRdKiB8ID86W1xcL10qICkgOzsKICAqLyopIGFjX01LRElSX1A9JGFjX3RvcF9i
dWlsZF9wcmVmaXgkTUtESVJfUCA7OwogIGVzYWMKIyBJZiB0aGUgdGVtcGxhdGUgZG9lcyBub3Qg
a25vdyBhYm91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0LgojIEZJWE1FOiBUaGlzIGhhY2sgc2hv
dWxkIGJlIHJlbW92ZWQgYSBmZXcgeWVhcnMgYWZ0ZXIgMi42MC4KYWNfZGF0YXJvb3RkaXJfaGFj
az07IGFjX2RhdGFyb290ZGlyX3NlZW49CmFjX3NlZF9kYXRhcm9vdD0nCi9kYXRhcm9vdGRpci8g
ewogIHAKICBxCn0KL0BkYXRhZGlyQC9wCi9AZG9jZGlyQC9wCi9AaW5mb2RpckAvcAovQGxvY2Fs
ZWRpckAvcAovQG1hbmRpckAvcCcKY2FzZSBgZXZhbCAic2VkIC1uIFwiXCRhY19zZWRfZGF0YXJv
b3RcIiAkYWNfZmlsZV9pbnB1dHMiYCBpbgoqZGF0YXJvb3RkaXIqKSBhY19kYXRhcm9vdGRpcl9z
ZWVuPXllczs7CipAZGF0YWRpckAqfCpAZG9jZGlyQCp8KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJA
KnwqQG1hbmRpckAqKQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
V0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRp
ciBzZXR0aW5nIiA+JjUKJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRz
IHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjI7fQogIGFjX2Rh
dGFyb290ZGlyX2hhY2s9JwogIHMmQGRhdGFkaXJAJiR7ZGF0YXJvb3RkaXJ9JmcKICBzJkBkb2Nk
aXJAJiR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0mZwogIHMmQGluZm9kaXJA
JiR7ZGF0YXJvb3RkaXJ9L2luZm8mZwogIHMmQGxvY2FsZWRpckAmJHtkYXRhcm9vdGRpcn0vbG9j
YWxlJmcKICBzJkBtYW5kaXJAJiR7ZGF0YXJvb3RkaXJ9L21hbiZnCiAgcyZcJHtkYXRhcm9vdGRp
cn0mJHtwcmVmaXh9L3NoYXJlJmcnIDs7CmVzYWMKYWNfc2VkX2V4dHJhPSIvXlsJIF0qVlBBVEhb
CSBdKj1bCSBdKi97CmgKcy8vLwpzL14vOi8Kcy9bCSBdKiQvOi8Kcy86XCQoc3JjZGlyKTovOi9n
CnMvOlwke3NyY2Rpcn06LzovZwpzLzpAc3JjZGlyQDovOi9nCnMvXjoqLy8Kcy86KiQvLwp4CnMv
XCg9WwkgXSpcKS4qL1wxLwpHCnMvXG4vLwpzL15bXj1dKj1bCSBdKiQvLwp9Cgo6dAovQFthLXpB
LVpfXVthLXpBLVpfMC05XSpALyFiCnN8QGNvbmZpZ3VyZV9pbnB1dEB8JGFjX3NlZF9jb25mX2lu
cHV0fDt0IHQKcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0CnMmQHRv
cF9idWlsZF9wcmVmaXhAJiRhY190b3BfYnVpbGRfcHJlZml4Jjt0IHQKcyZAc3JjZGlyQCYkYWNf
c3JjZGlyJjt0IHQKcyZAYWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdApzJkB0b3Bfc3Jj
ZGlyQCYkYWNfdG9wX3NyY2RpciY7dCB0CnMmQGFic190b3Bfc3JjZGlyQCYkYWNfYWJzX3RvcF9z
cmNkaXImO3QgdApzJkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQKcyZAYWJzX2J1aWxkZGly
QCYkYWNfYWJzX2J1aWxkZGlyJjt0IHQKcyZAYWJzX3RvcF9idWlsZGRpckAmJGFjX2Fic190b3Bf
YnVpbGRkaXImO3QgdApzJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0CnMmQE1LRElSX1BAJiRh
Y19NS0RJUl9QJjt0IHQKJGFjX2RhdGFyb290ZGlyX2hhY2sKIgpldmFsIHNlZCBcIlwkYWNfc2Vk
X2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiBc
CiAgPiRhY190bXAvb3V0IHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19m
aWxlIiAiJExJTkVOTyIgNQoKdGVzdCAteiAiJGFjX2RhdGFyb290ZGlyX2hhY2skYWNfZGF0YXJv
b3RkaXJfc2VlbiIgJiYKICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIk
YWNfdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJgogIHsgYWNfb3V0PWBzZWQgLW4g
Jy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3AnIFwKICAgICAgIiRhY190bXAvb3V0ImA7IHRl
c3QgLXogIiRhY19vdXQiOyB9ICYmCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFy
aWFibGUgXGBkYXRhcm9vdGRpcicKd2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNl
IG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjUKJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
JGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3Rk
aXInCndoaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMg
ZGVmaW5lZCIgPiYyO30KCiAgcm0gLWYgIiRhY190bXAvc3RkaW4iCiAgY2FzZSAkYWNfZmlsZSBp
bgogIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OwogICopIHJt
IC1mICIkYWNfZmlsZSIgJiYgbXYgIiRhY190bXAvb3V0IiAiJGFjX2ZpbGUiOzsKICBlc2FjIFwK
ICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8i
IDUKIDs7CiAgOkgpCiAgIwogICMgQ09ORklHX0hFQURFUgogICMKICBpZiB0ZXN0IHgiJGFjX2Zp
bGUiICE9IHgtOyB0aGVuCiAgICB7CiAgICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0
ICAqLyIgXAogICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRh
Y19maWxlX2lucHV0cyIKICAgIH0gPiIkYWNfdG1wL2NvbmZpZy5oIiBcCiAgICAgIHx8IGFzX2Zu
X2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQogICAgaWYg
ZGlmZiAiJGFjX2ZpbGUiICIkYWNfdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4K
ICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfZmlsZSBp
cyB1bmNoYW5nZWQiID4mNQokYXNfZWNobyAiJGFzX21lOiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQi
ID4mNjt9CiAgICBlbHNlCiAgICAgIHJtIC1mICIkYWNfZmlsZSIKICAgICAgbXYgIiRhY190bXAv
Y29uZmlnLmgiICIkYWNfZmlsZSIgXAoJfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVh
dGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgICBmaQogIGVsc2UKICAgICRhc19lY2hvICIvKiAk
Y29uZmlndXJlX2lucHV0ICAqLyIgXAogICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2Rl
ZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAogICAgICB8fCBhc19mbl9lcnJvciAkPyAi
Y291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQogIGZpCiMgQ29tcHV0ZSAiJGFjX2ZpbGUi
J3MgaW5kZXggaW4gJGNvbmZpZ19oZWFkZXJzLgpfYW1fYXJnPSIkYWNfZmlsZSIKX2FtX3N0YW1w
X2NvdW50PTEKZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJzIDo7IGRvCiAgY2FzZSAk
X2FtX2hlYWRlciBpbgogICAgJF9hbV9hcmcgfCAkX2FtX2FyZzoqICkKICAgICAgYnJlYWsgOzsK
ICAgICogKQogICAgICBfYW1fc3RhbXBfY291bnQ9YGV4cHIgJF9hbV9zdGFtcF9jb3VudCArIDFg
IDs7CiAgZXNhYwpkb25lCmVjaG8gInRpbWVzdGFtcCBmb3IgJF9hbV9hcmciID5gJGFzX2Rpcm5h
bWUgLS0gIiRfYW1fYXJnIiB8fAokYXNfZXhwciBYIiRfYW1fYXJnIiA6ICdYXCguKlteL11cKS8v
KlteL11bXi9dKi8qJCcgXHwgXAoJIFgiJF9hbV9hcmciIDogJ1hcKC8vXClbXi9dJyBcfCBcCgkg
WCIkX2FtX2FyZyIgOiAnWFwoLy9cKSQnIFx8IFwKCSBYIiRfYW1fYXJnIiA6ICdYXCgvXCknIFx8
IC4gMj4vZGV2L251bGwgfHwKJGFzX2VjaG8gWCIkX2FtX2FyZyIgfAogICAgc2VkICcvXlhcKC4q
W14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15Y
XChcL1wvXClbXi9dLiovewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXC9cKSQv
ewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXCkuKi97CgkgICAgcy8vXDEvCgkg
ICAgcQoJICB9CgkgIHMvLiovLi87IHEnYC9zdGFtcC1oJF9hbV9zdGFtcF9jb3VudAogOzsKCiAg
OkMpICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4ZWN1dGluZyAk
YWNfZmlsZSBjb21tYW5kcyIgPiY1CiRhc19lY2hvICIkYXNfbWU6IGV4ZWN1dGluZyAkYWNfZmls
ZSBjb21tYW5kcyIgPiY2O30KIDs7CiAgZXNhYwoKCiAgY2FzZSAkYWNfZmlsZSRhY19tb2RlIGlu
CiAgICAiZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IHsKICAjIE9s
ZGVyIEF1dG9jb25mIHF1b3RlcyAtLWZpbGUgYXJndW1lbnRzIGZvciBldmFsLCBidXQgbm90IHdo
ZW4gZmlsZXMKICAjIGFyZSBsaXN0ZWQgd2l0aG91dCAtLWZpbGUuICBMZXQncyBwbGF5IHNhZmUg
YW5kIG9ubHkgZW5hYmxlIHRoZSBldmFsCiAgIyBpZiB3ZSBkZXRlY3QgdGhlIHF1b3RpbmcuCiAg
Y2FzZSAkQ09ORklHX0ZJTEVTIGluCiAgKlwnKikgZXZhbCBzZXQgeCAiJENPTkZJR19GSUxFUyIg
OzsKICAqKSAgIHNldCB4ICRDT05GSUdfRklMRVMgOzsKICBlc2FjCiAgc2hpZnQKICBmb3IgbWYK
ICBkbwogICAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmls
ZS4KICAgIG1mPWBlY2hvICIkbWYiIHwgc2VkIC1lICdzLzouKiQvLydgCiAgICAjIENoZWNrIHdo
ZXRoZXIgdGhpcyBpcyBhbiBBdXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgb3Igbm90LgogICAg
IyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkICdNYWtlZmlsZS5pbicsIGJ1
dAogICAgIyBzb21lIHBlb3BsZSByZW5hbWUgdGhlbTsgc28gaW5zdGVhZCB3ZSBsb29rIGF0IHRo
ZSBmaWxlIGNvbnRlbnQuCiAgICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBsaW5lIGlzIG5vdCBlbm91
Z2g6IHNvbWUgcGVvcGxlIHBvc3QtcHJvY2VzcwogICAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBh
ZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4KICAgICMgR3JlcCdp
bmcgdGhlIHdob2xlIGZpbGUgaXMgbm90IGdvb2QgZWl0aGVyOiBBSVggZ3JlcCBoYXMgYSBsaW5l
CiAgICAjIGxpbWl0IG9mIDIwNDgsIGJ1dCBhbGwgc2VkJ3Mgd2Uga25vdyBoYXZlIHVuZGVyc3Rh
bmQgYXQgbGVhc3QgNDAwMC4KICAgIGlmIHNlZCAtbiAncyxeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9t
YWtlLiosWCxwJyAiJG1mIiB8IGdyZXAgWCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgZGly
cGFydD1gJGFzX2Rpcm5hbWUgLS0gIiRtZiIgfHwKJGFzX2V4cHIgWCIkbWYiIDogJ1hcKC4qW14v
XVwpLy8qW14vXVteL10qLyokJyBcfCBcCgkgWCIkbWYiIDogJ1hcKC8vXClbXi9dJyBcfCBcCgkg
WCIkbWYiIDogJ1hcKC8vXCkkJyBcfCBcCgkgWCIkbWYiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYv
bnVsbCB8fAokYXNfZWNobyBYIiRtZiIgfAogICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9d
W14vXSpcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wvXClbXi9dLiov
ewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXC9cKSQvewoJICAgIHMvL1wxLwoJ
ICAgIHEKCSAgfQoJICAvXlhcKFwvXCkuKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIHMv
LiovLi87IHEnYAogICAgZWxzZQogICAgICBjb250aW51ZQogICAgZmkKICAgICMgRXh0cmFjdCB0
aGUgZGVmaW5pdGlvbiBvZiBERVBESVIsIGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlCiAgICAj
IGZyb20gdGhlIE1ha2VmaWxlIHdpdGhvdXQgcnVubmluZyAnbWFrZScuCiAgICBERVBESVI9YHNl
ZCAtbiAncy9eREVQRElSID0gLy9wJyA8ICIkbWYiYAogICAgdGVzdCAteiAiJERFUERJUiIgJiYg
Y29udGludWUKICAgIGFtX19pbmNsdWRlPWBzZWQgLW4gJ3MvXmFtX19pbmNsdWRlID0gLy9wJyA8
ICIkbWYiYAogICAgdGVzdCAteiAiJGFtX19pbmNsdWRlIiAmJiBjb250aW51ZQogICAgYW1fX3F1
b3RlPWBzZWQgLW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImAKICAgICMgRmluZCBhbGwg
ZGVwZW5kZW5jeSBvdXRwdXQgZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZpbGVzIHdpdGgKICAg
ICMgJChERVBESVIpIGluIHRoZWlyIG5hbWVzLiAgV2UgaW52b2tlIHNlZCB0d2ljZSBiZWNhdXNl
IGl0IGlzIHRoZQogICAgIyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikg
dG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUKICAgICMgZXhwYW5zaW9uLgogICAgZm9yIGZpbGUg
aW4gYHNlZCAtbiAiCiAgICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBESVIp
LipcKSRhbV9fcXVvdGUiJyQvXDEvcCcgPCIkbWYiIHwgXAoJIHNlZCAtZSAncy9cJChERVBESVIp
LyciJERFUERJUiInL2cnYDsgZG8KICAgICAgIyBNYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBleGlz
dHMuCiAgICAgIHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAmJiBjb250aW51ZQogICAgICBmZGly
PWAkYXNfZGlybmFtZSAtLSAiJGZpbGUiIHx8CiRhc19leHByIFgiJGZpbGUiIDogJ1hcKC4qW14v
XVwpLy8qW14vXVteL10qLyokJyBcfCBcCgkgWCIkZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwK
CSBYIiRmaWxlIiA6ICdYXCgvL1wpJCcgXHwgXAoJIFgiJGZpbGUiIDogJ1hcKC9cKScgXHwgLiAy
Pi9kZXYvbnVsbCB8fAokYXNfZWNobyBYIiRmaWxlIiB8CiAgICBzZWQgJy9eWFwoLipbXi9dXClc
L1wvKlteL11bXi9dKlwvKiQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXC9c
KVteL10uKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cL1wpJC97CgkgICAg
cy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cKS4qL3sKCSAgICBzLy9cMS8KCSAgICBxCgkg
IH0KCSAgcy8uKi8uLzsgcSdgCiAgICAgIGFzX2Rpcj0kZGlycGFydC8kZmRpcjsgYXNfZm5fbWtk
aXJfcAogICAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIgogICAgICBlY2hvICcj
IGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSIKICAgIGRvbmUKICBkb25lCn0KIDs7CiAgICAicG8t
ZGlyZWN0b3JpZXMiOkMpCiAgICBmb3IgYWNfZmlsZSBpbiAkQ09ORklHX0ZJTEVTOyBkbwogICAg
ICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iCiAgICAgIGNhc2UgIiRh
Y19maWxlIiBpbgogICAgICAgICo6KikgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6
LiolJSdgIDs7CiAgICAgIGVzYWMKICAgICAgIyBQTyBkaXJlY3RvcmllcyBoYXZlIGEgTWFrZWZp
bGUuaW4gZ2VuZXJhdGVkIGZyb20gTWFrZWZpbGUuaW4uaW4uCiAgICAgIGNhc2UgIiRhY19maWxl
IiBpbiAqL01ha2VmaWxlLmluKQogICAgICAgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLgog
ICAgICAgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKICAg
ICAgICBhY19kaXJfc3VmZml4PSIvYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYCIKICAg
ICAgICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydg
CiAgICAgICAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGly
LgogICAgICAgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KICAgICAg
ICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIi
CiAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KICAgICAgICAgIC4pICB0b3Bfc3Jj
ZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKICAgICAgICAgIC8qKSB0b3Bfc3Jj
ZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OwogICAgICAgICAgKikgIHRvcF9zcmNkaXI9IiRhY19k
b3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKICAgICAgICBlc2FjCiAgICAgICAgIyBUcmVhdCBhIGRp
cmVjdG9yeSBhcyBhIFBPIGRpcmVjdG9yeSBpZiBhbmQgb25seSBpZiBpdCBoYXMgYQogICAgICAg
ICMgUE9URklMRVMuaW4gZmlsZS4gVGhpcyBhbGxvd3MgcGFja2FnZXMgdG8gaGF2ZSBtdWx0aXBs
ZSBQTwogICAgICAgICMgZGlyZWN0b3JpZXMgdW5kZXIgZGlmZmVyZW50IG5hbWVzIG9yIGluIGRp
ZmZlcmVudCBsb2NhdGlvbnMuCiAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8k
YWNfZGlyL1BPVEZJTEVTLmluIjsgdGhlbgogICAgICAgICAgcm0gLWYgIiRhY19kaXIvUE9URklM
RVMiCiAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcg
JGFjX2Rpci9QT1RGSUxFUyIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIKICAg
ICAgICAgIGNhdCAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIiB8IHNlZCAt
ZSAiL14jL2QiIC1lICIvXlsgCV0qXCQvZCIgLWUgInMsLiosICAgICAkdG9wX3NyY2Rpci8mIFxc
XFwsIiB8IHNlZCAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgPiAiJGFjX2Rpci9QT1RGSUxFUyIK
ICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSJQT1RGSUxFUy5pbiIKICAgICAgICAgICMgQUxMX0xJ
TkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVw
ZW5kCiAgICAgICAgICAjIG9uICRhY19kaXIgYnV0IGRvbid0IGRlcGVuZCBvbiB1c2VyLXNwZWNp
ZmllZCBjb25maWd1cmF0aW9uCiAgICAgICAgICAjIHBhcmFtZXRlcnMuCiAgICAgICAgICBpZiB0
ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KICAgICAgICAg
ICAgIyBUaGUgTElOR1VBUyBmaWxlIGNvbnRhaW5zIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1
YWdlcy4KICAgICAgICAgICAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhl
bgogICAgICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5n
IEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGlu
ZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCiAgICAgICAgICAgIGZp
CiAgICAgICAgICAgIEFMTF9MSU5HVUFTXz1gc2VkIC1lICIvXiMvZCIgLWUgInMvIy4qLy8iICIk
YWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyJgCiAgICAgICAgICAgICMgSGlkZSB0aGUg
QUxMX0xJTkdVQVMgYXNzaWdtZW50IGZyb20gYXV0b21ha2UgPCAxLjUuCiAgICAgICAgICAgIGV2
YWwgJ0FMTF9MSU5HVUFTJyc9JEFMTF9MSU5HVUFTXycKICAgICAgICAgICAgUE9NQUtFRklMRURF
UFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgogICAgICAgICAgZWxzZQogICAgICAgICAgICAj
IFRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcyB3YXMgZ2l2ZW4gaW4gY29uZmlndXJlLmlu
LgogICAgICAgICAgICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbWVudCBmcm9tIGF1dG9t
YWtlIDwgMS41LgogICAgICAgICAgICBldmFsICdBTExfTElOR1VBUycnPSRPQlNPTEVURV9BTExf
TElOR1VBUycKICAgICAgICAgIGZpCiAgICAgICAgICAjIENvbXB1dGUgUE9GSUxFUwogICAgICAg
ICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQo
bGFuZykucG8pCiAgICAgICAgICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUwogICAgICAgICAgIyBh
cyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUp
CiAgICAgICAgICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCiAgICAgICAgICAjIGFzICAgICAgJChm
b3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKICAgICAgICAgICMgQ29t
cHV0ZSBHTU9GSUxFUwogICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9M
SU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQogICAgICAgICAgY2FzZSAiJGFjX2dpdmVu
X3NyY2RpciIgaW4KICAgICAgICAgICAgLikgc3JjZGlycHJlPSA7OwogICAgICAgICAgICAqKSBz
cmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CiAgICAgICAgICBlc2FjCiAgICAgICAgICBQT0ZJTEVT
PQogICAgICAgICAgVVBEQVRFUE9GSUxFUz0KICAgICAgICAgIERVTU1ZUE9GSUxFUz0KICAgICAg
ICAgIEdNT0ZJTEVTPQogICAgICAgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwogICAg
ICAgICAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCiAgICAgICAgICAg
IFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKICAgICAgICAg
ICAgRFVNTVlQT0ZJTEVTPSIkRFVNTVlQT0ZJTEVTICRsYW5nLm5vcCIKICAgICAgICAgICAgR01P
RklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgogICAgICAgICAgZG9uZQogICAg
ICAgICAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBM
SU5HVUFTCiAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICAgSU5TVF9M
SU5HVUFTPQogICAgICAgICAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgogICAgICAg
ICAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwogICAgICAgICAgICAgIHVz
ZWl0PW5vCiAgICAgICAgICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhl
bgogICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCiAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgog
ICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVk
bGFuZ3VhZ2VzOyBkbwogICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFs
b2cgaWYgZGVzaXJlZGxhbmcgaXMKICAgICAgICAgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVz
ZW50bGFuZywgb3IKICAgICAgICAgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxh
bmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAogICAgICAgICAgICAgICAgIyAgICAgIHByZXNlbnRs
YW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCiAgICAgICAgICAgICAg
ICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRh
bG9nKS4KICAgICAgICAgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KICAgICAgICAgICAg
ICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OwogICAgICAgICAgICAgICAgZXNhYwog
ICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhl
bgogICAgICAgICAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFu
ZyIKICAgICAgICAgICAgICBmaQogICAgICAgICAgICBkb25lCiAgICAgICAgICBmaQogICAgICAg
ICAgQ0FUQUxPR1M9CiAgICAgICAgICBpZiB0ZXN0IC1uICIkSU5TVF9MSU5HVUFTIjsgdGhlbgog
ICAgICAgICAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbwogICAgICAgICAgICAgIENB
VEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgogICAgICAgICAgICBkb25lCiAgICAgICAgICBm
aQogICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRh
Y19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiCiAgICAg
ICAgICBzZWQgLWUgIi9eUE9URklMRVMgPS9yICRhY19kaXIvUE9URklMRVMiIC1lICIvXiMgTWFr
ZXZhcnMvciAkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTWFrZXZhcnMiIC1lICJzfEBQT0ZJTEVT
QHwkUE9GSUxFU3xnIiAtZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUg
InN8QERVTU1ZUE9GSUxFU0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9G
SUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xAUE9NQUtFRklMRURF
UFNAfCRQT01BS0VGSUxFREVQU3xnIiAiJGFjX2Rpci9NYWtlZmlsZS5pbiIgPiAiJGFjX2Rpci9N
YWtlZmlsZSIKICAgICAgICAgIGZvciBmIGluICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIiL1J1
bGVzLSo7IGRvCiAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgogICAgICAgICAgICAg
IGNhc2UgIiRmIiBpbgogICAgICAgICAgICAgICAgKi5vcmlnIHwgKi5iYWsgfCAqfikgOzsKICAg
ICAgICAgICAgICAgICopIGNhdCAiJGYiID4+ICIkYWNfZGlyL01ha2VmaWxlIiA7OwogICAgICAg
ICAgICAgIGVzYWMKICAgICAgICAgICAgZmkKICAgICAgICAgIGRvbmUKICAgICAgICBmaQogICAg
ICAgIDs7CiAgICAgIGVzYWMKICAgIGRvbmUgOzsKICAgICJuaXgvc2NyaXB0cy9saXN0LXJ1bnRp
bWUtcm9vdHMiOkYpIGNobW9kICt4IG5peC9zY3JpcHRzL2xpc3QtcnVudGltZS1yb290cyA7Owog
ICAgIm5peC9zY3JpcHRzL3N1YnN0aXR1dGUiOkYpIGNobW9kICt4IG5peC9zY3JpcHRzL3N1YnN0
aXR1dGUgOzsKICAgICJuaXgvc2NyaXB0cy9ndWl4LWF1dGhlbnRpY2F0ZSI6RikgY2htb2QgK3gg
bml4L3NjcmlwdHMvZ3VpeC1hdXRoZW50aWNhdGUgOzsKICAgICJuaXgvc2NyaXB0cy9vZmZsb2Fk
IjpGKSBjaG1vZCAreCBuaXgvc2NyaXB0cy9vZmZsb2FkIDs7CiAgICAic2NyaXB0cy9ndWl4IjpG
KSBjaG1vZCAreCBzY3JpcHRzL2d1aXggOzsKICAgICJ0ZXN0LWVudiI6RikgY2htb2QgK3ggdGVz
dC1lbnYgOzsKICAgICJwcmUtaW5zdC1lbnYiOkYpIGNobW9kICt4IHByZS1pbnN0LWVudiA7OwoK
ICBlc2FjCmRvbmUgIyBmb3IgYWNfdGFnCgoKYXNfZm5fZXhpdCAwCg==

--MP_/RfwZ3bl.=e6TtpTaWZdR65C
Content-Type: text/x-log
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=test-suite.log

=======================================
   GNU Guix 0.10.0: ./test-suite.log
=======================================

# TOTAL: 604
# PASS:  582
# SKIP:  19
# XFAIL: 0
# FAIL:  3
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

SKIP: tests/base32
==================

sh: nix-hash: command not found
test-name: bytevector->base32-string
location: /home/sapientech/Dev/guix/guix_wip/tests/base32.scm:48
source:
+ (test-assert
+   "bytevector->base32-string"
+   (fold (lambda (bv expected result)
+           (and result
+                (string=?
+                  (bytevector->base32-string bv)
+                  expected)))
+         #t
+         (map string->utf8
+              '("" "f" "fo" "foo" "foob" "fooba" "foobar"))
+         '(""
+           "my"
+           "mzxq"
+           "mzxw6"
+           "mzxw6yq"
+           "mzxw6ytb"
+           "mzxw6ytboi")))
actual-value: #t
result: PASS

test-name: base32-string->bytevector
location: /home/sapientech/Dev/guix/guix_wip/tests/base32.scm:65
source:
+ (test-assert
+   "base32-string->bytevector"
+   (every (lambda (bv)
+            (equal?
+              (base32-string->bytevector
+                (bytevector->base32-string bv))
+              bv))
+          (map string->utf8
+               '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
actual-value: #t
result: PASS

test-name: nix-base32-string->bytevector
location: /home/sapientech/Dev/guix/guix_wip/tests/base32.scm:73
source:
+ (test-assert
+   "nix-base32-string->bytevector"
+   (every (lambda (bv)
+            (equal?
+              (nix-base32-string->bytevector
+                (bytevector->nix-base32-string bv))
+              bv))
+          (map string->utf8
+               '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
actual-value: #t
result: PASS

test-name: &invalid-base32-character
location: /home/sapientech/Dev/guix/guix_wip/tests/base32.scm:81
source:
+ (test-equal
+   "&invalid-base32-character"
+   #\e
+   (guard (c ((invalid-base32-character? c)
+              (invalid-base32-character-value c)))
+          (nix-base32-string->bytevector
+            (string-append (make-string 51 #\a) "e"))))
expected-value: e
actual-value: e
result: PASS

test-name: sha256 & bytevector->nix-base32-string
location: /home/sapientech/Dev/guix/guix_wip/tests/base32.scm:92
source:
+ (test-assert
+   "sha256 & bytevector->nix-base32-string"
+   (let ((file (search-path %load-path "tests/test.drv")))
+     (equal?
+       (bytevector->nix-base32-string
+         (sha256
+           (call-with-input-file file get-bytevector-all)))
+       (let* ((c (format
+                   #f
+                   "~a --type sha256 --base32 --flat \"~a\""
+                   %nix-hash
+                   file))
+              (p (open-input-pipe c))
+              (l (read-line p)))
+         (close-pipe p)
+         l))))
result: SKIP


SKIP: tests/cpio
================

test-name: file->cpio-header + write-cpio-header + read-cpio-header
location: /home/sapientech/Dev/guix/guix_wip/tests/cpio.scm:37
source:
+ (test-assert
+   "file->cpio-header + write-cpio-header + read-cpio-header"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (header (file->cpio-header file)))
+     (call-with-values
+       (lambda () (open-bytevector-output-port))
+       (lambda (port get-bv)
+         (write-cpio-header header port)
+         (let ((port (open-bytevector-input-port (get-bv))))
+           (equal? header (read-cpio-header port)))))))
actual-value: #t
result: PASS

test-name: bit-identical to GNU cpio's output
location: /home/sapientech/Dev/guix/guix_wip/tests/cpio.scm:49
source:
+ (test-assert
+   "bit-identical to GNU cpio's output"
+   (call-with-temporary-output-file
+     (lambda (link _)
+       (delete-file link)
+       (symlink "chbouib" link)
+       (let ((files (cons* "/"
+                           (canonicalize-path
+                             (dirname (search-path %load-path "guix.scm")))
+                           link
+                           (map (compose
+                                  canonicalize-path
+                                  (cut search-path %load-path <>))
+                                '("guix.scm"
+                                  "guix/build/syscalls.scm"
+                                  "guix/packages.scm")))))
+         (call-with-temporary-output-file
+           (lambda (ref-file _)
+             (let ((pipe (open-pipe*
+                           OPEN_WRITE
+                           %cpio-program
+                           "-o"
+                           "-O"
+                           ref-file
+                           "-H"
+                           "newc"
+                           "--null")))
+               (for-each
+                 (lambda (file) (format pipe "~a\x00" file))
+                 files)
+               (and (zero? (close-pipe pipe))
+                    (call-with-temporary-output-file
+                      (lambda (file port)
+                        (write-cpio-archive files port)
+                        (close-port port)
+                        (or (file=? ref-file file)
+                            (throw 'cpio-archives-differ
+                                   files
+                                   ref-file
+                                   file
+                                   (stat:size (stat ref-file))
+                                   (stat:size (stat file))))))))))))))
result: SKIP

random seed for tests: 1469939214

SKIP: tests/snix
================

test-name: factorize-uri
location: /home/sapientech/Dev/guix/guix_wip/tests/snix.scm:36
source:
+ (test-assert
+   "factorize-uri"
+   (every?
+     (match-lambda
+       ((uri version '-> expected)
+        (equal? (factorize-uri uri version) expected)))
+     '(("http://example.com/foo.tgz"
+        "1.0"
+        ->
+        "http://example.com/foo.tgz")
+       ("http://example.com/foo-2.8.tgz"
+        "2.8"
+        ->
+        ("http://example.com/foo-" version ".tgz"))
+       ("http://example.com/2.8/foo-2.8.tgz"
+        "2.8"
+        ->
+        ("http://example.com/"
+         version
+         "/foo-"
+         version
+         ".tgz")))))
actual-value: #t
result: PASS

test-name: nixpkgs->guix-package
location: /home/sapientech/Dev/guix/guix_wip/tests/snix.scm:54
source:
+ (test-assert
+   "nixpkgs->guix-package"
+   (match (nixpkgs->guix-package
+            %nixpkgs-directory
+            "guile")
+          (('package
+            ('name "guile")
+            ('version (? string?))
+            ('source ('origin _ ...))
+            ('build-system _)
+            ('inputs ('quasiquote (inputs ...)))
+            ('propagated-inputs ('quasiquote (pinputs ...)))
+            ('home-page (? string?))
+            ('synopsis (? string?))
+            ('description (? string?))
+            ('license (? symbol?)))
+           (and (member '("libffi" ,libffi) inputs)
+                (member '("gmp" ,gmp) pinputs)
+                #t))
+          (x (pk 'fail x #f))))
result: SKIP


FAIL: tests/store
=================

test-name: store-path-hash-part
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:51
source:
+ (test-equal
+   "store-path-hash-part"
+   "283gqy39v3g9dxjy26rynl0zls82fmcg"
+   (store-path-hash-part
+     (string-append
+       (%store-prefix)
+       "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7")))
expected-value: 283gqy39v3g9dxjy26rynl0zls82fmcg
actual-value: 283gqy39v3g9dxjy26rynl0zls82fmcg
result: PASS

test-name: store-path-hash-part #f
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:57
source:
+ (test-equal
+   "store-path-hash-part #f"
+   #f
+   (store-path-hash-part
+     (string-append
+       (%store-prefix)
+       "/foo/bar/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7")))
expected-value: #f
actual-value: #f
result: PASS

test-name: store-path-package-name
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:63
source:
+ (test-equal
+   "store-path-package-name"
+   "guile-2.0.7"
+   (store-path-package-name
+     (string-append
+       (%store-prefix)
+       "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7")))
expected-value: guile-2.0.7
actual-value: guile-2.0.7
result: PASS

test-name: store-path-package-name #f
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:69
source:
+ (test-equal
+   "store-path-package-name #f"
+   #f
+   (store-path-package-name
+     "/foo/bar/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7"))
expected-value: #f
actual-value: #f
result: PASS

test-name: direct-store-path?
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:74
source:
+ (test-assert
+   "direct-store-path?"
+   (and (direct-store-path?
+          (string-append
+            (%store-prefix)
+            "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7"))
+        (not (direct-store-path?
+               (string-append
+                 (%store-prefix)
+                 "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7/bin/guile")))
+        (not (direct-store-path? (%store-prefix)))))
actual-value: #t
result: PASS

test-name: valid-path? live
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:86
source:
+ (test-assert
+   "valid-path? live"
+   (let ((p (add-text-to-store %store "hello" "hello, world")))
+     (valid-path? %store p)))
actual-value: #t
result: PASS

test-name: valid-path? false
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:90
source:
+ (test-assert
+   "valid-path? false"
+   (not (valid-path?
+          %store
+          (string-append
+            (%store-prefix)
+            "/"
+            (make-string 32 #\e)
+            "-foobar"))))
actual-value: #t
result: PASS

test-name: valid-path? error
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:95
source:
+ (test-assert
+   "valid-path? error"
+   (with-store
+     s
+     (guard (c ((nix-protocol-error? c) #t))
+            (valid-path? s "foo")
+            #f)))
actual-value: #t
result: PASS

test-name: valid-path? recovery
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:101
source:
+ (test-assert
+   "valid-path? recovery"
+   (with-store
+     s
+     (let-syntax ((true-if-error
+                    (syntax-rules ()
+                      ((_ exp)
+                       (guard (c ((nix-protocol-error? c) #t)) exp #f)))))
+       (and (true-if-error (valid-path? s "foo"))
+            (true-if-error (valid-path? s "bar"))
+            (true-if-error (valid-path? s "baz"))
+            (true-if-error (valid-path? s "chbouib"))
+            (valid-path?
+              s
+              (add-text-to-store s "valid" "yeah"))))))
actual-value: #t
result: PASS

test-name: hash-part->path
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:118
source:
+ (test-assert
+   "hash-part->path"
+   (let ((p (add-text-to-store %store "hello" "hello, world")))
+     (equal?
+       (hash-part->path %store (store-path-hash-part p))
+       p)))
actual-value: #t
result: PASS

test-name: dead-paths
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:123
source:
+ (test-assert
+   "dead-paths"
+   (let ((p (add-text-to-store
+              %store
+              "random-text"
+              (random-text))))
+     (->bool (member p (dead-paths %store)))))
random seed for tests: 1469938959
finding garbage collector roots...
removing stale temporary roots file `/home/sapientech/Dev/guix/guix_wip/test-tmp/var/11072/temproots/11095'
determining live/dead paths...
actual-value: #t
result: PASS

test-name: permanent root
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:144
source:
+ (test-assert
+   "permanent root"
+   (let* ((p (with-store
+               store
+               (let ((p (add-text-to-store
+                          store
+                          "random-text"
+                          (random-text))))
+                 (add-permanent-root p)
+                 (add-permanent-root p)
+                 p))))
+     (and (member p (live-paths %store))
+          (begin
+            (remove-permanent-root p)
+            (->bool (member p (dead-paths %store)))))))
finding garbage collector roots...
determining live/dead paths...
finding garbage collector roots...
determining live/dead paths...
actual-value: #t
result: PASS

test-name: dead path can be explicitly collected
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:156
source:
+ (test-assert
+   "dead path can be explicitly collected"
+   (let ((p (add-text-to-store
+              %store
+              "random-text"
+              (random-text)
+              '())))
+     (let-values
+       (((paths freed) (delete-paths %store (list p))))
+       (and (equal? paths (list p))
+            (> freed 0)
+            (not (file-exists? p))))))
finding garbage collector roots...
deleting unused links...
actual-value: #t
result: PASS

test-name: add-text-to-store vs. delete-paths
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:164
source:
+ (test-assert
+   "add-text-to-store vs. delete-paths"
+   (with-store
+     store
+     (let* ((text (random-text))
+            (path (add-text-to-store store "delete-me" text))
+            (deleted (delete-paths store (list path)))
+            (path2 (add-text-to-store store "delete-me" text)))
+       (and (string=? path path2)
+            (equal? deleted (list path))
+            (valid-path? store path)
+            (file-exists? path)))))
finding garbage collector roots...
removing stale temporary roots file `/home/sapientech/Dev/guix/guix_wip/test-tmp/var/11072/temproots/11111'
deleting `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/r11ng87nwwzjwb5qxkyg8nbayhwrqfxr-delete-me'
deleting `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/trash'
deleting unused links...
note: currently hard linking saves 26.30 MiB
actual-value: #t
result: PASS

test-name: add-to-store vs. delete-paths
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:177
source:
+ (test-assert
+   "add-to-store vs. delete-paths"
+   (with-store
+     store
+     (let* ((file (search-path %load-path "guix.scm"))
+            (path (add-to-store store "delete-me" #t "sha256" file))
+            (deleted (delete-paths store (list path)))
+            (path2 (add-to-store store "delete-me" #t "sha256" file)))
+       (and (string=? path path2)
+            (equal? deleted (list path))
+            (valid-path? store path)
+            (file-exists? path)))))
finding garbage collector roots...
removing stale temporary roots file `/home/sapientech/Dev/guix/guix_wip/test-tmp/var/11072/temproots/11115'
deleting `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/57nhqlbqv5kh4zwr2vvdk3xyh741ynri-delete-me'
deleting `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/trash'
deleting unused links...
note: currently hard linking saves 26.30 MiB
actual-value: #t
result: PASS

test-name: references
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:189
source:
+ (test-assert
+   "references"
+   (let* ((t1 (add-text-to-store
+                %store
+                "random1"
+                (random-text)))
+          (t2 (add-text-to-store
+                %store
+                "random2"
+                (random-text)
+                (list t1))))
+     (and (equal? (list t1) (references %store t2))
+          (equal? (list t2) (referrers %store t1))
+          (null? (references %store t1))
+          (null? (referrers %store t2)))))
actual-value: #t
result: PASS

test-name: references/substitutes missing reference info
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:199
source:
+ (test-assert
+   "references/substitutes missing reference info"
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #f)
+     (guard (c ((nix-protocol-error? c) #t))
+            (let* ((b (add-to-store
+                        s
+                        "bash"
+                        #t
+                        "sha256"
+                        (search-bootstrap-binary
+                          "bash"
+                          (%current-system))))
+                   (d (derivation
+                        s
+                        "the-thing"
+                        b
+                        '("--help")
+                        #:inputs
+                        `((,b)))))
+              (references/substitutes
+                s
+                (list (derivation->output-path d) b))
+              #f))))
actual-value: #t
result: PASS

test-name: references/substitutes with substitute info
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:211
source:
+ (test-assert
+   "references/substitutes with substitute info"
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #t)
+     (let* ((t1 (add-text-to-store s "random1" (random-text)))
+            (t2 (add-text-to-store
+                  s
+                  "random2"
+                  (random-text)
+                  (list t1)))
+            (t3 (add-text-to-store
+                  s
+                  "build"
+                  "echo -n $t2 > $out"))
+            (b (add-to-store
+                 s
+                 "bash"
+                 #t
+                 "sha256"
+                 (search-bootstrap-binary
+                   "bash"
+                   (%current-system))))
+            (d (derivation
+                 s
+                 "the-thing"
+                 b
+                 `("-e" ,t3)
+                 #:inputs
+                 `((,b) (,t3) (,t2))
+                 #:env-vars
+                 `(("t2" unquote t2))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (sha256 => (sha256 (string->utf8 t2)))
+         (references => (list t2))
+         (equal?
+           (references/substitutes s (list o t3 t2 t1))
+           `((,t2) () (,t1) ()))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
actual-value: #t
result: PASS

test-name: substitutable-path-info when substitutes are turned off
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:235
source:
+ (test-equal
+   "substitutable-path-info when substitutes are turned off"
+   '()
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #f)
+     (let* ((b (add-to-store
+                 s
+                 "bash"
+                 #t
+                 "sha256"
+                 (search-bootstrap-binary
+                   "bash"
+                   (%current-system))))
+            (d (derivation
+                 s
+                 "the-thing"
+                 b
+                 '("--version")
+                 #:inputs
+                 `((,b))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (substitutable-path-info s (list o))))))
expected-value: ()
actual-value: ()
result: PASS

test-name: substitutable-paths when substitutes are turned off
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:248
source:
+ (test-equal
+   "substitutable-paths when substitutes are turned off"
+   '()
+   (with-store
+     s
+     (set-build-options s #:use-substitutes? #f)
+     (let* ((b (add-to-store
+                 s
+                 "bash"
+                 #t
+                 "sha256"
+                 (search-bootstrap-binary
+                   "bash"
+                   (%current-system))))
+            (d (derivation
+                 s
+                 "the-thing"
+                 b
+                 '("--version")
+                 #:inputs
+                 `((,b))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (substitutable-paths s (list o))))))
expected-value: ()
actual-value: ()
result: PASS

test-name: requisites
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:261
source:
+ (test-assert
+   "requisites"
+   (let* ((t1 (add-text-to-store
+                %store
+                "random1"
+                (random-text)
+                '()))
+          (t2 (add-text-to-store
+                %store
+                "random2"
+                (random-text)
+                (list t1)))
+          (t3 (add-text-to-store
+                %store
+                "random3"
+                (random-text)
+                (list t2)))
+          (t4 (add-text-to-store
+                %store
+                "random4"
+                (random-text)
+                (list t1 t3))))
+     (define (same? x y)
+       (and (= (length x) (length y))
+            (lset= equal? x y)))
+     (and (same? (requisites %store (list t1)) (list t1))
+          (same? (requisites %store (list t2))
+                 (list t1 t2))
+          (same? (requisites %store (list t3))
+                 (list t1 t2 t3))
+          (same? (requisites %store (list t4))
+                 (list t1 t2 t3 t4))
+          (same? (requisites %store (list t1 t2 t3 t4))
+                 (list t1 t2 t3 t4)))))
actual-value: #t
result: PASS

test-name: derivers
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:281
source:
+ (test-assert
+   "derivers"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s))))
+          (o (derivation->output-path d)))
+     (and (build-derivations %store (list d))
+          (equal?
+            (query-derivation-outputs
+              %store
+              (derivation-file-name d))
+            (list o))
+          (equal?
+            (valid-derivers %store o)
+            (list (derivation-file-name d))))))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/v90wk11vk033yirgdz1lwq3j5rharim2-the-thing.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/v9//0wk11vk033yirgdz1lwq3j5rharim2-the-thing.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/v90wk11vk033yirgdz1lwq3j5rharim2-the-thing.drv -
actual-value: #t
result: PASS

test-name: topologically-sorted, one item
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:297
source:
+ (test-assert
+   "topologically-sorted, one item"
+   (let* ((a (add-text-to-store %store "a" "a"))
+          (b (add-text-to-store %store "b" "b" (list a)))
+          (c (add-text-to-store %store "c" "c" (list b)))
+          (d (add-text-to-store %store "d" "d" (list c)))
+          (s (topologically-sorted %store (list d))))
+     (equal? s (list a b c d))))
actual-value: #t
result: PASS

test-name: topologically-sorted, several items
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:305
source:
+ (test-assert
+   "topologically-sorted, several items"
+   (let* ((a (add-text-to-store %store "a" "a"))
+          (b (add-text-to-store %store "b" "b" (list a)))
+          (c (add-text-to-store %store "c" "c" (list b)))
+          (d (add-text-to-store %store "d" "d" (list c)))
+          (s1 (topologically-sorted %store (list d a c b)))
+          (s2 (topologically-sorted %store (list b d c a b d))))
+     (equal? s1 s2 (list a b c d))))
actual-value: #t
result: PASS

test-name: topologically-sorted, more difficult
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:314
source:
+ (test-assert
+   "topologically-sorted, more difficult"
+   (let* ((a (add-text-to-store %store "a" "a"))
+          (b (add-text-to-store %store "b" "b" (list a)))
+          (c (add-text-to-store %store "c" "c" (list b)))
+          (d (add-text-to-store %store "d" "d" (list c)))
+          (w (add-text-to-store %store "w" "w"))
+          (x (add-text-to-store %store "x" "x" (list w)))
+          (y (add-text-to-store %store "y" "y" (list x d)))
+          (s1 (topologically-sorted %store (list y)))
+          (s2 (topologically-sorted %store (list c y)))
+          (s3 (topologically-sorted
+                %store
+                (cons y (references %store y)))))
+     (let* ((x-then-d?
+              (equal? (references %store y) (list x d))))
+       (and (equal?
+              s1
+              (if x-then-d?
+                (list w x a b c d y)
+                (list a b c d w x y)))
+            (equal?
+              s2
+              (if x-then-d?
+                (list a b c w x d y)
+                (list a b c d w x y)))
+            (lset= string=? s1 s3)))))
actual-value: #t
result: PASS

test-name: current-build-output-port, UTF-8
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:338
source:
+ (test-assert
+   "current-build-output-port, UTF-8"
+   (string-contains
+     (with-fluids
+       ((%default-port-encoding "UTF-8"))
+       (call-with-output-string
+         (lambda (port)
+           (parameterize
+             ((current-build-output-port port))
+             (let* ((s "Here\u2019s a Greek letter: \u03bb.")
+                    (d (build-expression->derivation
+                         %store
+                         "foo"
+                         `(display ,s)
+                         #:guile-for-build
+                         (package-derivation
+                           s
+                           %bootstrap-guile
+                           (%current-system)))))
+               (guard (c ((nix-protocol-error? c) #t))
+                      (build-derivations %store (list d))))))))
+     "Here\u2019s a Greek letter: \u03bb."))
actual-value: 231
result: PASS

test-name: current-build-output-port, UTF-8 + garbage
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:354
source:
+ (test-assert
+   "current-build-output-port, UTF-8 + garbage"
+   (string-contains
+     (with-fluids
+       ((%default-port-encoding "UTF-8"))
+       (call-with-output-string
+         (lambda (port)
+           (parameterize
+             ((current-build-output-port port))
+             (let ((d (build-expression->derivation
+                        %store
+                        "foo"
+                        `(begin
+                           (use-modules (rnrs io ports))
+                           (display "garbage: ")
+                           (put-bytevector (current-output-port) #vu8(128))
+                           (display "lambda: \u03bb\n"))
+                        #:guile-for-build
+                        (package-derivation %store %bootstrap-guile))))
+               (guard (c ((nix-protocol-error? c) #t))
+                      (build-derivations %store (list d))))))))
+     "garbage: ?lambda: \u03bb"))
actual-value: 231
result: PASS

test-name: log-file, derivation
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:374
source:
+ (test-assert
+   "log-file, derivation"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s)))))
+     (and (build-derivations %store (list d))
+          (file-exists?
+            (pk (log-file %store (derivation-file-name d)))))))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/rhr8cv3lsaggxr61wc87j2gji63fg5dg-the-thing.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/rh//r8cv3lsaggxr61wc87j2gji63fg5dg-the-thing.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/rhr8cv3lsaggxr61wc87j2gji63fg5dg-the-thing.drv -

;;; ("/home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/rh/r8cv3lsaggxr61wc87j2gji63fg5dg-the-thing.drv.bz2")
actual-value: #t
result: PASS

test-name: log-file, output file name
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:386
source:
+ (test-assert
+   "log-file, output file name"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s))))
+          (o (derivation->output-path d)))
+     (and (build-derivations %store (list d))
+          (file-exists? (pk (log-file %store o)))
+          (string=?
+            (log-file %store (derivation-file-name d))
+            (log-file %store o)))))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/fraav0ksxx6cj46x708wp3vqfr6n81p3-the-thing.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/fr//aav0ksxx6cj46x708wp3vqfr6n81p3-the-thing.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/fraav0ksxx6cj46x708wp3vqfr6n81p3-the-thing.drv -

;;; ("/home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/fr/aav0ksxx6cj46x708wp3vqfr6n81p3-the-thing.drv.bz2")
actual-value: #t
result: PASS

test-name: no substitutes
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:401
source:
+ (test-assert
+   "no substitutes"
+   (with-store
+     s
+     (let* ((d1 (package-derivation
+                  s
+                  %bootstrap-guile
+                  (%current-system)))
+            (d2 (package-derivation
+                  s
+                  %bootstrap-glibc
+                  (%current-system)))
+            (o (map derivation->output-path (list d1 d2))))
+       (set-build-options s #:use-substitutes? #f)
+       (and (not (has-substitutes? s (derivation-file-name d1)))
+            (not (has-substitutes? s (derivation-file-name d2)))
+            (null? (substitutable-paths s o))
+            (null? (substitutable-path-info s o))))))
actual-value: #t
result: PASS

test-name: build-things with output path
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:412
source:
+ (test-assert
+   "build-things with output path"
+   (with-store
+     s
+     (let* ((c (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (display ,c p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (set-build-options s #:use-substitutes? #f)
+       (build-things s (list o))
+       (not (valid-path? s o)))))
actual-value: #t
result: PASS

test-name: substitute query
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:432
source:
+ (test-assert
+   "substitute query"
+   (with-store
+     s
+     (let* ((d (package-derivation
+                 s
+                 %bootstrap-guile
+                 (%current-system)))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (false-if-exception
+           (delete-file-recursively
+             (string-append
+               (getenv "XDG_CACHE_HOME")
+               "/guix/substitute")))
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (equal?
+                (list o)
+                (substitutable-paths s (list o)))
+              (match (pk 'spi (substitutable-path-info s (list o)))
+                     (((? substitutable? s))
+                      (and (string=?
+                             (substitutable-deriver s)
+                             (derivation-file-name d))
+                           (null? (substitutable-references s))
+                           (equal? (substitutable-nar-size s) 1234)))))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable

;;; (spi (#<<substitutable> path: "/home/sapientech/Dev/guix/guix_wip/test-tmp/store/0vxgvlx03qscrds88s65hrs70n5jkw2g-guile-bootstrap-2.0" deriver: "/home/sapientech/Dev/guix/guix_wip/test-tmp/store/bjihchailclirz3310dqypibjg0happm-guile-bootstrap-2.0.drv" refs: () dl-size: 0 nar-size: 1234>))
actual-value: #t
result: PASS

test-name: substitute query, alternating URLs
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:456
source:
+ (test-assert
+   "substitute query, alternating URLs"
+   (let* ((d (with-store
+               s
+               (package-derivation
+                 s
+                 %bootstrap-guile
+                 (%current-system))))
+          (o (derivation->output-path d)))
+     (with-derivation-narinfo
+       d
+       (false-if-exception
+         (delete-file-recursively
+           (string-append
+             (getenv "XDG_CACHE_HOME")
+             "/guix/substitute")))
+       (and (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                (%test-substitute-urls))
+              (has-substitutes? s o))
+            (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                (list "http://does-not-exist"))
+              (not (has-substitutes? s o)))
+            (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                (%test-substitute-urls))
+              (has-substitutes? s o))
+            (with-store
+              s
+              (set-build-options
+                s
+                #:use-substitutes?
+                #t
+                #:substitute-urls
+                '())
+              (not (has-substitutes? s o)))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
substitute: Backtrace:
substitute: In ice-9/boot-9.scm:
substitute:  157: 9 [catch #t #<catch-closure 1c08740> ...]
substitute: In unknown file:
substitute:    ?: 8 [apply-smob/1 #<catch-closure 1c08740>]
substitute: In ice-9/boot-9.scm:
substitute:   63: 7 [call-with-prompt prompt0 ...]
substitute: In ice-9/eval.scm:
substitute:  432: 6 [eval # #]
substitute: In ice-9/boot-9.scm:
substitute: 2401: 5 [save-module-excursion #<procedure 1c26940 at ice-9/boot-9.scm:4045:3 ()>]
substitute: 4050: 4 [#<procedure 1c26940 at ice-9/boot-9.scm:4045:3 ()>]
substitute: 1724: 3 [%start-stack load-stack ...]
substitute: 1729: 2 [#<procedure 1c3dea0 ()>]
substitute: In unknown file:
substitute:    ?: 1 [primitive-load "/home/sapientech/Dev/guix/guix_wip/scripts/guix"]
substitute: In guix/ui.scm:
substitute: 1209: 0 [run-guix-command substitute "--query"]
substitute: 
substitute: guix/ui.scm:1209:6: In procedure run-guix-command:
substitute: guix/ui.scm:1209:6: unmatched line "<html><head><meta http-equiv=\"refresh\" content=\"0;url=http://www.dnsrsearch.com/index.php?origURL=http://does-not-exist/nix-cache-info&bc=\"/></head><body><script type=\"text/javascript\">window.location=\"http://www.dnsrsearch.com/index.php?origURL=\"+escape(window.location)+\"&r=\"+escape(document.referrer)+\"&bc=\";</script></body></html>"
actual-value: #f
actual-error:
+ (srfi-34
+   #<condition &nix-protocol-error [message: "substituter `substitute' died unexpectedly" status: 1] 3e10540>)
result: FAIL

test-name: substitute
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:488
source:
+ (test-assert
+   "substitute"
+   (with-store
+     s
+     (let* ((c (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (exit 1) (display ,c p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-substitute
+         d
+         c
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (build-derivations s (list d))
+              (equal?
+                c
+                (call-with-input-file o get-string-all)))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/9m7hnf6014kkxv5s5blpc2vj1q02i5iw-substitute-me /home/sapientech/Dev/guix/guix_wip/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading /home/sapientech/Dev/guix/guix_wip/test-tmp/store/9m7hnf6014kkxv5s5blpc2vj1q02i5iw-substitute-me (1KiB installed)...

 example.nar  176B                     0B/s 00:00 [####################] 100.0%
@ substituter-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/9m7hnf6014kkxv5s5blpc2vj1q02i5iw-substitute-me
actual-value: #t
result: PASS

test-name: substitute + build-things with output path
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:507
source:
+ (test-assert
+   "substitute + build-things with output path"
+   (with-store
+     s
+     (let* ((c (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (exit 1) (display ,c p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-substitute
+         d
+         c
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (build-things s (list o))
+              (valid-path? s o)
+              (equal?
+                c
+                (call-with-input-file o get-string-all)))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/np2fa5ssidgms7n82jiz1rdnpsarvi8m-substitute-me /home/sapientech/Dev/guix/guix_wip/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading /home/sapientech/Dev/guix/guix_wip/test-tmp/store/np2fa5ssidgms7n82jiz1rdnpsarvi8m-substitute-me (1KiB installed)...

 example.nar  176B                     0B/s 00:00 [####################] 100.0%
@ substituter-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/np2fa5ssidgms7n82jiz1rdnpsarvi8m-substitute-me
actual-value: #t
result: PASS

test-name: substitute, corrupt output hash
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:527
source:
+ (test-assert
+   "substitute, corrupt output hash"
+   (with-store
+     s
+     (let* ((c "hello, world")
+            (d (build-expression->derivation
+                 s
+                 "corrupt-substitute"
+                 `(mkdir %output)
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-substitute
+         d
+         c
+         (sha256 => (make-bytevector 32 0))
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:fallback?
+           #f
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (guard (c ((nix-protocol-error? c)
+                         (pk 'corrupt c)
+                         (not (zero? (nix-protocol-error-status c)))))
+                     (build-derivations s (list d))
+                     #f))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/bmdlmicms7mw571siq7gsjip4as64586-corrupt-substitute /home/sapientech/Dev/guix/guix_wip/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading /home/sapientech/Dev/guix/guix_wip/test-tmp/store/bmdlmicms7mw571siq7gsjip4as64586-corrupt-substitute (1KiB installed)...

 example.nar  128B                     0B/s 00:00 [####################] 100.0%
@ substituter-failed /home/sapientech/Dev/guix/guix_wip/test-tmp/store/bmdlmicms7mw571siq7gsjip4as64586-corrupt-substitute 0 hash mismatch in downloaded path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/bmdlmicms7mw571siq7gsjip4as64586-corrupt-substitute': expected 0000000000000000000000000000000000000000000000000000000000000000, got b8f73a6eb280e63169b1de2a5b5e154676fe1ada685f1e5c7183cbb2c1dcd535

;;; (corrupt #<condition &nix-protocol-error [message: "some substitutes for the outputs of derivation `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/yp3pfg2510b5dm7ilsl1nrry1j5q3ww3-corrupt-substitute.drv' failed (usually happens due to networking issues); try `--fallback' to build derivation from source " status: 1] 2f87840>)
actual-value: #t
result: PASS

test-name: substitute --fallback
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:557
source:
+ (test-assert
+   "substitute --fallback"
+   (with-store
+     s
+     (let* ((t (random-text))
+            (d (build-expression->derivation
+                 s
+                 "substitute-me-not"
+                 `(call-with-output-file
+                    %output
+                    (lambda (p) (display ,t p)))
+                 #:guile-for-build
+                 (package-derivation
+                   s
+                   %bootstrap-guile
+                   (%current-system))))
+            (o (derivation->output-path d)))
+       (with-derivation-narinfo
+         d
+         (set-build-options
+           s
+           #:use-substitutes?
+           #t
+           #:substitute-urls
+           (%test-substitute-urls))
+         (and (has-substitutes? s o)
+              (guard (c ((nix-protocol-error? c)
+                         (set-build-options
+                           s
+                           #:use-substitutes?
+                           #t
+                           #:substitute-urls
+                           (%test-substitute-urls)
+                           #:fallback?
+                           #t)
+                         (and (build-derivations s (list d))
+                              (equal?
+                                t
+                                (call-with-input-file o get-string-all)))))
+                     (build-derivations s (list d))
+                     #f))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
@ substituter-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not /home/sapientech/Dev/guix/guix_wip/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading /home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not (1KiB installed)...
guix substitute: error: open-file: No such file or directory: "/home/sapientech/Dev/guix/guix_wip/test-tmp/var/11072/substituter-data/example.nar"
@ substituter-failed /home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not 256 fetching path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not' failed with exit code 1
@ substituter-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not /home/sapientech/Dev/guix/guix_wip/nix/scripts/substitute
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading /home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not (1KiB installed)...
guix substitute: error: open-file: No such file or directory: "/home/sapientech/Dev/guix/guix_wip/test-tmp/var/11072/substituter-data/example.nar"
@ substituter-failed /home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not 256 fetching path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/mkppidiyv2nwgq5d7gywffzd3l7zvk02-substitute-me-not' failed with exit code 1
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/5gni6qwzkn84rzf3zyg83pwgnh1y26mr-substitute-me-not.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/5g//ni6qwzkn84rzf3zyg83pwgnh1y26mr-substitute-me-not.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/5gni6qwzkn84rzf3zyg83pwgnh1y26mr-substitute-me-not.drv -
actual-value: #t
result: PASS

test-name: export/import several paths
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:589
source:
+ (test-assert
+   "export/import several paths"
+   (let* ((texts (unfold
+                   (cut >= <> 10)
+                   (lambda _ (random-text))
+                   #{1+}#
+                   0))
+          (files (map (cut add-text-to-store %store "text" <>)
+                      texts))
+          (dump (call-with-bytevector-output-port
+                  (cut export-paths %store files <>))))
+     (delete-paths %store files)
+     (and (every (negate file-exists?) files)
+          (let* ((source (open-bytevector-input-port dump))
+                 (imported (import-paths %store source)))
+            (and (equal? imported files)
+                 (every file-exists? files)
+                 (equal?
+                   texts
+                   (map (lambda (file)
+                          (call-with-input-file file get-string-all))
+                        files)))))))
finding garbage collector roots...
deleting unused links...
actual-value: #t
result: PASS

test-name: export/import paths, ensure topological order
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:609
source:
+ (test-assert
+   "export/import paths, ensure topological order"
+   (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+          (file1 (add-text-to-store
+                   %store
+                   "foo"
+                   (random-text)
+                   (list file0)))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1)))
+          (files (list file1 file2))
+          (dump1 (call-with-bytevector-output-port
+                   (cute export-paths %store (list file1 file2) <>)))
+          (dump2 (call-with-bytevector-output-port
+                   (cute export-paths %store (list file2 file1) <>))))
+     (delete-paths %store files)
+     (and (every (negate file-exists?) files)
+          (bytevector=? dump1 dump2)
+          (let* ((source (open-bytevector-input-port dump1))
+                 (imported (import-paths %store source)))
+            (and (equal? imported (list file1 file2))
+                 (every file-exists? files)
+                 (equal? (list file0) (references %store file1))
+                 (equal? (list file1) (references %store file2)))))))
finding garbage collector roots...
deleting unused links...
actual-value: #t
result: PASS

test-name: export/import incomplete
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:631
source:
+ (test-assert
+   "export/import incomplete"
+   (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+          (file1 (add-text-to-store
+                   %store
+                   "foo"
+                   (random-text)
+                   (list file0)))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1)))
+          (dump (call-with-bytevector-output-port
+                  (cute export-paths %store (list file2) <>))))
+     (delete-paths %store (list file0 file1 file2))
+     (guard (c ((nix-protocol-error? c)
+                (and (not (zero? (nix-protocol-error-status c)))
+                     (string-contains
+                       (nix-protocol-error-message c)
+                       "not valid"))))
+            (import-paths
+              %store
+              (open-bytevector-input-port dump)))))
finding garbage collector roots...
deleting unused links...
actual-value: 97
result: PASS

test-name: export/import recursive
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:648
source:
+ (test-assert
+   "export/import recursive"
+   (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+          (file1 (add-text-to-store
+                   %store
+                   "foo"
+                   (random-text)
+                   (list file0)))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1)))
+          (dump (call-with-bytevector-output-port
+                  (cute export-paths
+                        %store
+                        (list file2)
+                        <>
+                        #:recursive?
+                        #t))))
+     (delete-paths %store (list file0 file1 file2))
+     (let ((imported
+             (import-paths
+               %store
+               (open-bytevector-input-port dump))))
+       (and (equal? imported (list file0 file1 file2))
+            (every file-exists? (list file0 file1 file2))
+            (equal? (list file0) (references %store file1))
+            (equal? (list file1) (references %store file2))))))
finding garbage collector roots...
deleting unused links...
actual-value: #t
result: PASS

test-name: write-file & export-path yield the same result
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:664
source:
+ (test-assert
+   "write-file & export-path yield the same result"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((drv1 (package->derivation %bootstrap-guile))
+             (out1 -> (derivation->output-path drv1))
+             (data ->
+                   (unfold
+                     (cut >= <> 26)
+                     (lambda (i) (random-bytevector 128))
+                     #{1+}#
+                     0))
+             (build ->
+                    (gexp (begin
+                            (use-modules (rnrs io ports) (srfi srfi-1))
+                            (let ()
+                              (define letters
+                                (map (lambda (i)
+                                       (string
+                                         (integer->char
+                                           (+ i (char->integer #\a)))))
+                                     (iota 26)))
+                              (define (touch file data)
+                                (call-with-output-file
+                                  file
+                                  (lambda (port) (put-bytevector port data))))
+                              (mkdir (ungexp output))
+                              (chdir (ungexp output))
+                              (for-each
+                                touch
+                                (append (drop letters 10) (take letters 10))
+                                (list (ungexp-splicing data)))
+                              #t))))
+             (drv2 (gexp->derivation "bunch" build))
+             (out2 -> (derivation->output-path drv2))
+             (item-info -> (store-lift query-path-info)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv1 drv2))
+              (foldm %store-monad
+                     (lambda (item result)
+                       (define ref-hash
+                         (let-values
+                           (((port get) (open-sha256-port)))
+                           (write-file item port)
+                           (close-port port)
+                           (get)))
+                       (>>= (item-info item)
+                            (lambda (info)
+                              (return
+                                (and result
+                                     (bytevector=?
+                                       (path-info-hash info)
+                                       ref-hash))))))
+                     #t
+                     (list out1 out2))))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/dfxcp3x2qxk908lrmd58zgwalqapacnr-bunch.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/df//xcp3x2qxk908lrmd58zgwalqapacnr-bunch.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/dfxcp3x2qxk908lrmd58zgwalqapacnr-bunch.drv -
actual-value: #t
result: PASS

test-name: import corrupt path
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:730
source:
+ (test-assert
+   "import corrupt path"
+   (let* ((text (random-text))
+          (file (add-text-to-store %store "text" text))
+          (dump (call-with-bytevector-output-port
+                  (cut export-paths %store (list file) <>))))
+     (delete-paths %store (list file))
+     (let* ((index (quotient (bytevector-length dump) 4))
+            (byte (bytevector-u8-ref dump index)))
+       (bytevector-u8-set! dump index (logxor 255 byte)))
+     (and (not (file-exists? file))
+          (guard (c ((nix-protocol-error? c)
+                     (pk 'c c)
+                     (and (not (zero? (nix-protocol-error-status c)))
+                          (string-contains
+                            (nix-protocol-error-message c)
+                            "corrupt"))))
+                 (let* ((source (open-bytevector-input-port dump))
+                        (imported (import-paths %store source)))
+                   (pk 'corrupt-imported imported)
+                   #f)))))
finding garbage collector roots...
deleting unused links...

;;; (c #<condition &nix-protocol-error [message: "signed hash doesn't match actual contents of imported archive; archive could be corrupt, or someone is trying to import a Trojan horse" status: 1] 3550660>)
actual-value: 80
result: PASS

test-name: register-path
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:753
source:
+ (test-assert
+   "register-path"
+   (let ((file (string-append
+                 (%store-prefix)
+                 "/"
+                 (make-string 32 #\f)
+                 "-fake")))
+     (when (valid-path? %store file)
+           (delete-paths %store (list file)))
+     (false-if-exception (delete-file file))
+     (let ((ref (add-text-to-store
+                  %store
+                  "ref-of-fake"
+                  (random-text)))
+           (drv (string-append file ".drv")))
+       (call-with-output-file
+         file
+         (cut display "This is a fake store item.\n" <>))
+       (register-path
+         file
+         #:references
+         (list ref)
+         #:deriver
+         drv)
+       (and (valid-path? %store file)
+            (equal? (references %store file) (list ref))
+            (null? (valid-derivers %store file))
+            (null? (referrers %store file))))))
finding garbage collector roots...
deleting unused links...
actual-value: #t
result: PASS

test-name: verify-store
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:773
source:
+ (test-assert
+   "verify-store"
+   (let* ((text (random-text))
+          (file1 (add-text-to-store %store "foo" text))
+          (file2 (add-text-to-store
+                   %store
+                   "bar"
+                   (random-text)
+                   (list file1))))
+     (and (pk 'verify1 (verify-store %store))
+          (begin
+            (delete-file file1)
+            (not (pk 'verify2 (verify-store %store))))
+          (begin
+            (call-with-output-file
+              file1
+              (lambda (port) (display text port)))
+            (pk 'verify3 (verify-store %store))))))
reading the Nix store...

;;; (verify1 #t)
reading the Nix store...
path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/b2x6jn5drxda6ym1kbwyqfjhdn3qr4xc-foo' disappeared, but it still has valid referrers!

;;; (verify2 #f)
reading the Nix store...

;;; (verify3 #t)
actual-value: #t
result: PASS

test-name: verify-store + check-contents
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:790
source:
+ (test-assert
+   "verify-store + check-contents"
+   (with-store
+     s
+     (let* ((text (random-text))
+            (drv (build-expression->derivation
+                   s
+                   "corrupt"
+                   `(let ((out (assoc-ref %outputs "out")))
+                      (call-with-output-file
+                        out
+                        (lambda (port) (display ,text port)))
+                      #t)
+                   #:guile-for-build
+                   (package-derivation
+                     s
+                     %bootstrap-guile
+                     (%current-system))))
+            (file (derivation->output-path drv)))
+       (with-derivation-substitute
+         drv
+         text
+         (and (build-derivations s (list drv))
+              (verify-store s #:check-contents? #t)
+              (begin
+                (chmod file 420)
+                (call-with-output-file
+                  file
+                  (lambda (port) (display "corrupt!" port)))
+                #t)
+              (not (verify-store s #:check-contents? #t))
+              (delete-paths s (list file)))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
fetching path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/1x27y6gc0pxd2z6731c3nlfmnkpsnjlz-corrupt'...
warning: authentication and authorization of substitutes disabled!
guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
Downloading /home/sapientech/Dev/guix/guix_wip/test-tmp/store/1x27y6gc0pxd2z6731c3nlfmnkpsnjlz-corrupt (1KiB installed)...

 example.nar  176B                      0B/s 00:00 [####################] 100.0%
reading the Nix store...
checking path existence...
checking hashes...
reading the Nix store...
checking path existence...
checking hashes...
path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/1x27y6gc0pxd2z6731c3nlfmnkpsnjlz-corrupt' was modified! expected hash `03b9a1aa33de49627f23936e1d4298f852a8b2df398441ffcef3a1e9a0dbda19', got `e09c480e2e93336cd3c45aa129f81a0d7ba56c410b849d7779a8136074413b3d'
finding garbage collector roots...
removing stale temporary roots file `/home/sapientech/Dev/guix/guix_wip/test-tmp/var/11072/temproots/11405'
deleting `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/1x27y6gc0pxd2z6731c3nlfmnkpsnjlz-corrupt'
deleting `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/trash'
deleting unused links...
note: currently hard linking saves 26.30 MiB
actual-value: (/home/sapientech/Dev/guix/guix_wip/test-tmp/store/1x27y6gc0pxd2z6731c3nlfmnkpsnjlz-corrupt)
result: PASS

test-name: build-things, check mode
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:827
source:
+ (test-assert
+   "build-things, check mode"
+   (with-store
+     store
+     (call-with-temporary-output-file
+       (lambda (entropy entropy-port)
+         (write (random-text) entropy-port)
+         (force-output entropy-port)
+         (let* ((drv (build-expression->derivation
+                       store
+                       "non-deterministic"
+                       `(begin
+                          (use-modules (rnrs io ports))
+                          (let ((out (assoc-ref %outputs "out")))
+                            (call-with-output-file
+                              out
+                              (lambda (port)
+                                (display
+                                  (call-with-input-file
+                                    ,entropy
+                                    get-string-all)
+                                  port)))
+                            #t))
+                       #:guile-for-build
+                       (package-derivation
+                         store
+                         %bootstrap-guile
+                         (%current-system))))
+                (file (derivation->output-path drv)))
+           (and (build-things
+                  store
+                  (list (derivation-file-name drv)))
+                (begin
+                  (write (random-text) entropy-port)
+                  (force-output entropy-port)
+                  (guard (c ((nix-protocol-error? c)
+                             (pk 'determinism-exception c)
+                             (and (not (zero? (nix-protocol-error-status c)))
+                                  (string-contains
+                                    (nix-protocol-error-message c)
+                                    "deterministic"))))
+                         (build-things
+                           store
+                           (list (derivation-file-name drv))
+                           (build-mode check))
+                         #f))))))))
substitute: warning: authentication and authorization of substitutes disabled!
substitute: guix substitute: warning: ACL for archive imports seems to be uninitialized, substitutes may be unavailable
building path(s) `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/3k339gx6rl9lsa74p4il7yvfi1jiv8xh-non-deterministic'
checking path(s) `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/3k339gx6rl9lsa74p4il7yvfi1jiv8xh-non-deterministic'
warning: rewriting hashes in `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/3k339gx6rl9lsa74p4il7yvfi1jiv8xh-non-deterministic'; cross fingers

;;; (determinism-exception #<condition &nix-protocol-error [message: "derivation `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/xdxb5hy9syb2y0r65bj5fz7yg8bn80g9-non-deterministic.drv' may not be deterministic: output `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/3k339gx6rl9lsa74p4il7yvfi1jiv8xh-non-deterministic' differs" status: 1] 47cf450>)
actual-value: 99
result: PASS

test-name: build multiple times
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:864
source:
+ (test-assert
+   "build multiple times"
+   (with-store
+     store
+     (set-build-options
+       store
+       #:rounds
+       2
+       #:use-substitutes?
+       #f)
+     (call-with-temporary-output-file
+       (lambda (entropy entropy-port)
+         (write (random-text) entropy-port)
+         (force-output entropy-port)
+         (let* ((drv (build-expression->derivation
+                       store
+                       "non-deterministic"
+                       `(begin
+                          (use-modules (rnrs io ports))
+                          (let ((out (assoc-ref %outputs "out")))
+                            (call-with-output-file
+                              out
+                              (lambda (port)
+                                (display
+                                  (call-with-input-file
+                                    ,entropy
+                                    get-string-all)
+                                  port)
+                                (call-with-output-file
+                                  ,entropy
+                                  (lambda (port) (write 'foobar port)))))
+                            #t))
+                       #:guile-for-build
+                       (package-derivation
+                         store
+                         %bootstrap-guile
+                         (%current-system))))
+                (file (derivation->output-path drv)))
+           (guard (c ((nix-protocol-error? c)
+                      (pk 'multiple-build c)
+                      (and (not (zero? (nix-protocol-error-status c)))
+                           (string-contains
+                             (nix-protocol-error-message c)
+                             "deterministic"))))
+                  (current-build-output-port (current-error-port))
+                  (build-things
+                    store
+                    (list (derivation-file-name drv)))
+                  #f))))))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/yvsdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/yv//sdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv.bz2
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/yvsdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/yv//sdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv.bz2
output ?/home/sapientech/Dev/guix/guix_wip/test-tmp/store/8l03iryrwim00ydbifhfja8cgi8fyc8c-non-deterministic? of ?/home/sapientech/Dev/guix/guix_wip/test-tmp/store/yvsdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv? differs from previous round
@ build-failed /home/sapientech/Dev/guix/guix_wip/test-tmp/store/yvsdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv - 1 output ?/home/sapientech/Dev/guix/guix_wip/test-tmp/store/8l03iryrwim00ydbifhfja8cgi8fyc8c-non-deterministic? of ?/home/sapientech/Dev/guix/guix_wip/test-tmp/store/yvsdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv? differs from previous round

;;; (multiple-build #<condition &nix-protocol-error [message: "build of `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/yvsdm01vn5yzikz2lpz5hyrxq6av9mdx-non-deterministic.drv' failed" status: 1] 4526f30>)
actual-value: 97
result: PASS

test-name: store-lower
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:902
source:
+ (test-equal
+   "store-lower"
+   "Lowered."
+   (let* ((add (store-lower text-file))
+          (file (add %store "foo" "Lowered.")))
+     (call-with-input-file file get-string-all)))
expected-value: Lowered.
actual-value: Lowered.
result: PASS

test-name: current-system
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:908
source:
+ (test-equal
+   "current-system"
+   "bar"
+   (parameterize
+     ((%current-system "frob"))
+     (run-with-store
+       %store
+       (mbegin
+         %store-monad
+         (set-current-system "bar")
+         (current-system))
+       #:system
+       "foo")))
expected-value: bar
actual-value: bar
result: PASS

test-name: query-path-info
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:917
source:
+ (test-assert
+   "query-path-info"
+   (let* ((ref (add-text-to-store %store "ref" "foo"))
+          (item (add-text-to-store
+                  %store
+                  "item"
+                  "bar"
+                  (list ref)))
+          (info (query-path-info %store item)))
+     (and (equal? (path-info-references info) (list ref))
+          (equal?
+            (path-info-hash info)
+            (sha256
+              (string->utf8
+                (call-with-output-string
+                  (cut write-file item <>))))))))
actual-value: #t
result: PASS

test-name: path-info-deriver
location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:927
source:
+ (test-assert
+   "path-info-deriver"
+   (let* ((b (add-text-to-store
+               %store
+               "build"
+               "echo $foo > $out"
+               '()))
+          (s (add-to-store
+               %store
+               "bash"
+               #t
+               "sha256"
+               (search-bootstrap-binary
+                 "bash"
+                 (%current-system))))
+          (d (derivation
+               %store
+               "the-thing"
+               s
+               `("-e" ,b)
+               #:env-vars
+               `(("foo" unquote (random-text)))
+               #:inputs
+               `((,b) (,s))))
+          (o (derivation->output-path d)))
+     (and (build-derivations %store (list d))
+          (not (path-info-deriver (query-path-info %store b)))
+          (string=?
+            (derivation-file-name d)
+            (path-info-deriver (query-path-info %store o))))))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/9n78vph0n1dn1fwxfnkn7apqv6afpff7-the-thing.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/9n//78vph0n1dn1fwxfnkn7apqv6afpff7-the-thing.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/9n78vph0n1dn1fwxfnkn7apqv6afpff7-the-thing.drv -
actual-value: #t
result: PASS


SKIP: tests/gexp
================

test-name: no refs
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:71
source:
+ (test-equal
+   "no refs"
+   '(display "hello!")
+   (let ((exp (gexp (display "hello!"))))
+     (and (gexp? exp)
+          (null? (gexp-inputs exp))
+          (gexp->sexp* exp))))
expected-value: (display hello!)
actual-value: (display hello!)
result: PASS

test-name: unquote
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:78
source:
+ (test-equal
+   "unquote"
+   '(display `(foo ,(+ 2 3)))
+   (let ((exp (gexp (display `(foo ,(+ 2 3))))))
+     (and (gexp? exp)
+          (null? (gexp-inputs exp))
+          (gexp->sexp* exp))))
expected-value: (display (quasiquote (foo (unquote (+ 2 3)))))
actual-value: (display (quasiquote (foo (unquote (+ 2 3)))))
result: PASS

test-name: one input package
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:85
source:
+ (test-assert
+   "one input package"
+   (let ((exp (gexp (display (ungexp coreutils)))))
+     (and (gexp? exp)
+          (match (gexp-inputs exp)
+                 (((p "out")) (eq? p coreutils)))
+          (equal?
+            `(display
+               ,(derivation->output-path
+                  (package-derivation %store coreutils)))
+            (gexp->sexp* exp)))))
actual-value: #t
result: PASS

test-name: one input origin
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:95
source:
+ (test-assert
+   "one input origin"
+   (let ((exp (gexp (display (ungexp (package-source coreutils))))))
+     (and (gexp? exp)
+          (match (gexp-inputs exp)
+                 (((o "out")) (eq? o (package-source coreutils))))
+          (equal?
+            `(display
+               ,(derivation->output-path
+                  (package-source-derivation
+                    %store
+                    (package-source coreutils))))
+            (gexp->sexp* exp)))))
actual-value: #t
result: PASS

test-name: one local file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:106
source:
+ (test-assert
+   "one local file"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (local (local-file file))
+          (exp (gexp (display (ungexp local))))
+          (intd (add-to-store
+                  %store
+                  (basename file)
+                  #f
+                  "sha256"
+                  file)))
+     (and (gexp? exp)
+          (match (gexp-inputs exp)
+                 (((x "out")) (eq? x local)))
+          (equal? `(display ,intd) (gexp->sexp* exp)))))
actual-value: #t
result: PASS

test-name: one local file, symlink
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:118
source:
+ (test-assert
+   "one local file, symlink"
+   (let ((file (search-path %load-path "guix.scm"))
+         (link (tmpnam)))
+     (dynamic-wind
+       (const #t)
+       (lambda ()
+         (symlink (canonicalize-path file) link)
+         (let* ((local (local-file link "my-file" #:recursive? #f))
+                (exp (gexp (display (ungexp local))))
+                (intd (add-to-store %store "my-file" #f "sha256" file)))
+           (and (gexp? exp)
+                (match (gexp-inputs exp)
+                       (((x "out")) (eq? x local)))
+                (equal? `(display ,intd) (gexp->sexp* exp)))))
+       (lambda ()
+         (false-if-exception (delete-file link))))))
actual-value: #t
result: PASS

test-name: local-file, relative file name
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:137
source:
+ (test-equal
+   "local-file, relative file name"
+   (canonicalize-path
+     (search-path %load-path "guix/base32.scm"))
+   (let ((directory
+           (dirname
+             (search-path
+               %load-path
+               "guix/build-system/gnu.scm"))))
+     (with-directory-excursion
+       directory
+       (let ((file (local-file "../guix/base32.scm")))
+         (local-file-absolute-file-name file)))))
expected-value: /home/sapientech/Dev/guix/guix_wip/guix/base32.scm
actual-value: /home/sapientech/Dev/guix/guix_wip/guix/base32.scm
result: PASS

test-name: local-file, #:select?
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:145
source:
+ (test-assert
+   "local-file, #:select?"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((select?
+               ->
+               (lambda (file stat)
+                 (member
+                   (basename file)
+                   '("guix.scm" "tests" "gexp.scm"))))
+             (file ->
+                   (local-file
+                     ".."
+                     "directory"
+                     #:recursive?
+                     #t
+                     #:select?
+                     select?))
+             (dir (lower-object file)))
+            (return
+              (and (store-path? dir)
+                   (equal?
+                     (scandir dir)
+                     '("." ".." "guix.scm" "tests"))
+                   (equal?
+                     (scandir (string-append dir "/tests"))
+                     '("." ".." "gexp.scm")))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: one plain file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:160
source:
+ (test-assert
+   "one plain file"
+   (let* ((file (plain-file "hi" "Hello, world!"))
+          (exp (gexp (display (ungexp file))))
+          (expected
+            (add-text-to-store %store "hi" "Hello, world!")))
+     (and (gexp? exp)
+          (match (gexp-inputs exp)
+                 (((x "out")) (eq? x file)))
+          (equal? `(display ,expected) (gexp->sexp* exp)))))
actual-value: #t
result: PASS

test-name: same input twice
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:170
source:
+ (test-assert
+   "same input twice"
+   (let ((exp (gexp (begin
+                      (display (ungexp coreutils))
+                      (display (ungexp coreutils))))))
+     (and (gexp? exp)
+          (match (gexp-inputs exp)
+                 (((p "out")) (eq? p coreutils)))
+          (let ((e `(display
+                      ,(derivation->output-path
+                         (package-derivation %store coreutils)))))
+            (equal? `(begin ,e ,e) (gexp->sexp* exp))))))
actual-value: #t
result: PASS

test-name: two input packages, one derivation, one file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:182
source:
+ (test-assert
+   "two input packages, one derivation, one file"
+   (let* ((drv (build-expression->derivation
+                 %store
+                 "foo"
+                 'bar
+                 #:guile-for-build
+                 (package-derivation %store %bootstrap-guile)))
+          (txt (add-text-to-store %store "foo" "Hello, world!"))
+          (exp (gexp (begin
+                       (display (ungexp coreutils))
+                       (display (ungexp %bootstrap-guile))
+                       (display (ungexp drv))
+                       (display (ungexp txt))))))
+     (define (match-input thing)
+       (match-lambda
+         ((drv-or-pkg _ ...) (eq? thing drv-or-pkg))))
+     (and (gexp? exp)
+          (= 4 (length (gexp-inputs exp)))
+          (every (lambda (input)
+                   (find (match-input input) (gexp-inputs exp)))
+                 (list drv coreutils %bootstrap-guile txt))
+          (let ((e0 `(display
+                       ,(derivation->output-path
+                          (package-derivation %store coreutils))))
+                (e1 `(display
+                       ,(derivation->output-path
+                          (package-derivation %store %bootstrap-guile))))
+                (e2 `(display ,(derivation->output-path drv)))
+                (e3 `(display ,txt)))
+            (equal?
+              `(begin ,e0 ,e1 ,e2 ,e3)
+              (gexp->sexp* exp))))))
actual-value: #t
result: PASS

test-name: ungexp + ungexp-native
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:210
source:
+ (test-assert
+   "ungexp + ungexp-native"
+   (let* ((exp (gexp (list (ungexp-native %bootstrap-guile)
+                           (ungexp coreutils)
+                           (ungexp-native glibc)
+                           (ungexp binutils))))
+          (target "mips64el-linux")
+          (guile (derivation->output-path
+                   (package-derivation %store %bootstrap-guile)))
+          (cu (derivation->output-path
+                (package-cross-derivation
+                  %store
+                  coreutils
+                  target)))
+          (libc (derivation->output-path
+                  (package-derivation %store glibc)))
+          (bu (derivation->output-path
+                (package-cross-derivation %store binutils target))))
+     (and (lset= equal?
+                 `((,%bootstrap-guile "out") (,glibc "out"))
+                 (gexp-native-inputs exp))
+          (lset= equal?
+                 `((,coreutils "out") (,binutils "out"))
+                 (gexp-inputs exp))
+          (equal?
+            `(list ,guile ,cu ,libc ,bu)
+            (gexp->sexp* exp target)))))
actual-value: #t
result: PASS

test-name: ungexp + ungexp-native, nested
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:233
source:
+ (test-equal
+   "ungexp + ungexp-native, nested"
+   (list `((,%bootstrap-guile "out"))
+         '<>
+         `((,coreutils "out")))
+   (let* ((exp (gexp (list (ungexp-native (gexp (ungexp coreutils)))
+                           (ungexp %bootstrap-guile)))))
+     (list (gexp-inputs exp)
+           '<>
+           (gexp-native-inputs exp))))
expected-value: (((#<package guile-bootstrap@HIDDEN gnu/packages/bootstrap.scm:277 1eab0c0> out)) <> ((#<package coreutils@HIDDEN gnu/packages/base.scm:244 2f1cf00> out)))
actual-value: (((#<package guile-bootstrap@HIDDEN gnu/packages/bootstrap.scm:277 1eab0c0> out)) <> ((#<package coreutils@HIDDEN gnu/packages/base.scm:244 2f1cf00> out)))
result: PASS

test-name: input list
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:239
source:
+ (test-assert
+   "input list"
+   (let ((exp (gexp (display
+                      '(ungexp (list %bootstrap-guile coreutils)))))
+         (guile (derivation->output-path
+                  (package-derivation %store %bootstrap-guile)))
+         (cu (derivation->output-path
+               (package-derivation %store coreutils))))
+     (and (lset= equal?
+                 `((,%bootstrap-guile "out") (,coreutils "out"))
+                 (gexp-inputs exp))
+          (equal?
+            `(display '(,guile ,cu))
+            (gexp->sexp* exp)))))
actual-value: #t
result: PASS

test-name: input list + ungexp-native
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:252
source:
+ (test-assert
+   "input list + ungexp-native"
+   (let* ((target "mips64el-linux")
+          (exp (gexp (display
+                       (cons '(ungexp-native
+                                (list %bootstrap-guile coreutils))
+                             '(ungexp (list glibc binutils))))))
+          (guile (derivation->output-path
+                   (package-derivation %store %bootstrap-guile)))
+          (cu (derivation->output-path
+                (package-derivation %store coreutils)))
+          (xlibc (derivation->output-path
+                   (package-cross-derivation %store glibc target)))
+          (xbu (derivation->output-path
+                 (package-cross-derivation %store binutils target))))
+     (and (lset= equal?
+                 `((,%bootstrap-guile "out") (,coreutils "out"))
+                 (gexp-native-inputs exp))
+          (lset= equal?
+                 `((,glibc "out") (,binutils "out"))
+                 (gexp-inputs exp))
+          (equal?
+            `(display (cons '(,guile ,cu) '(,xlibc ,xbu)))
+            (gexp->sexp* exp target)))))
actual-value: #t
result: PASS

test-name: input list splicing
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:274
source:
+ (test-assert
+   "input list splicing"
+   (let* ((inputs
+            (list (gexp-input glibc "debug")
+                  %bootstrap-guile))
+          (outputs
+            (list (derivation->output-path
+                    (package-derivation %store glibc)
+                    "debug")
+                  (derivation->output-path
+                    (package-derivation %store %bootstrap-guile))))
+          (exp (gexp (list (ungexp-splicing (cons (+ 2 3) inputs))))))
+     (and (lset= equal?
+                 `((,glibc "debug") (,%bootstrap-guile "out"))
+                 (gexp-inputs exp))
+          (equal?
+            (gexp->sexp* exp)
+            `(list ,@(cons 5 outputs))))))
actual-value: #t
result: PASS

test-name: input list splicing + ungexp-native-splicing
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:288
source:
+ (test-assert
+   "input list splicing + ungexp-native-splicing"
+   (let* ((inputs
+            (list (gexp-input glibc "debug")
+                  %bootstrap-guile))
+          (exp (gexp (list (ungexp-native-splicing (cons (+ 2 3) inputs))))))
+     (and (lset= equal?
+                 `((,glibc "debug") (,%bootstrap-guile "out"))
+                 (gexp-native-inputs exp))
+          (null? (gexp-inputs exp))
+          (equal?
+            (gexp->sexp* exp)
+            (gexp->sexp* exp "mips64el-linux")))))
actual-value: #t
result: PASS

test-name: output list
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:298
source:
+ (test-equal
+   "output list"
+   2
+   (let ((exp (gexp (begin
+                      (mkdir (ungexp output))
+                      (mkdir (ungexp output "bar"))))))
+     (length (gexp-outputs exp))))
expected-value: 2
actual-value: 2
result: PASS

test-name: output list, combined gexps
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:304
source:
+ (test-assert
+   "output list, combined gexps"
+   (let* ((exp0 (gexp (mkdir (ungexp output))))
+          (exp1 (gexp (mkdir (ungexp output "foo"))))
+          (exp2 (gexp (begin
+                        (display "hi!")
+                        (ungexp exp0)
+                        (ungexp exp1)))))
+     (and (lset= equal?
+                 (append (gexp-outputs exp0) (gexp-outputs exp1))
+                 (gexp-outputs exp2))
+          (= 2 (length (gexp-outputs exp2))))))
actual-value: #t
result: PASS

test-name: output list, combined gexps, duplicate output
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:313
source:
+ (test-equal
+   "output list, combined gexps, duplicate output"
+   1
+   (let* ((exp0 (gexp (mkdir (ungexp output))))
+          (exp1 (gexp (begin (mkdir (ungexp output)) (ungexp exp0))))
+          (exp2 (gexp (begin (mkdir (ungexp output)) (ungexp exp1)))))
+     (length (gexp-outputs exp2))))
expected-value: 1
actual-value: 1
result: PASS

test-name: output list + ungexp-splicing list, combined gexps
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:320
source:
+ (test-assert
+   "output list + ungexp-splicing list, combined gexps"
+   (let* ((exp0 (gexp (mkdir (ungexp output))))
+          (exp1 (gexp (mkdir (ungexp output "foo"))))
+          (exp2 (gexp (begin
+                        (display "hi!")
+                        (ungexp-splicing (list exp0 exp1))))))
+     (and (lset= equal?
+                 (append (gexp-outputs exp0) (gexp-outputs exp1))
+                 (gexp-outputs exp2))
+          (= 2 (length (gexp-outputs exp2))))))
actual-value: #t
result: PASS

test-name: gexp->file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:330
source:
+ (test-assert
+   "gexp->file"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((exp ->
+                  (gexp (display (ungexp %bootstrap-guile))))
+             (guile (package-file %bootstrap-guile))
+             (sexp (gexp->sexp exp))
+             (drv (gexp->file "foo" exp))
+             (out -> (derivation->output-path drv))
+             (done (built-derivations (list drv)))
+             (refs ((store-lift references) out)))
+            (return
+              (and (equal? sexp (call-with-input-file out read))
+                   (equal? (list guile) refs))))
+     #:guile-for-build
+     (%guile-for-build)))
random seed for tests: 1469938558
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/br6cmbmw2d0y578fhk2041nmjya1xbn3-foo.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/br//6cmbmw2d0y578fhk2041nmjya1xbn3-foo.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/br6cmbmw2d0y578fhk2041nmjya1xbn3-foo.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:341
source:
+ (test-assert
+   "gexp->derivation"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((file (text-file "foo" "Hello, world!"))
+             (exp ->
+                  (gexp (begin
+                          (mkdir (ungexp output))
+                          (chdir (ungexp output))
+                          (symlink
+                            (string-append
+                              (ungexp %bootstrap-guile)
+                              "/bin/guile")
+                            "foo")
+                          (symlink (ungexp file) (ungexp output "2nd")))))
+             (drv (gexp->derivation "foo" exp))
+             (out -> (derivation->output-path drv))
+             (out2 -> (derivation->output-path drv "2nd"))
+             (done (built-derivations (list drv)))
+             (refs ((store-lift references) out))
+             (refs2 ((store-lift references) out2))
+             (guile (package-file %bootstrap-guile "bin/guile")))
+            (return
+              (and (string=?
+                     (readlink (string-append out "/foo"))
+                     guile)
+                   (string=? (readlink out2) file)
+                   (equal? refs (list (dirname (dirname guile))))
+                   (equal? refs2 (list file)))))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/zmhmw968wgivsjlvw5qw3l2xlq5icaz6-foo.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/zm//hmw968wgivsjlvw5qw3l2xlq5icaz6-foo.drv.bz2
warning: rewriting hashes in `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/pysmjhfk9v7lfq97asqxzn1fxk5rqykr-foo'; cross fingers
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/zmhmw968wgivsjlvw5qw3l2xlq5icaz6-foo.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation vs. grafts
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:365
source:
+ (test-assert
+   "gexp->derivation vs. grafts"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((graft? (set-grafting #f))
+             (p0 ->
+                 (dummy-package
+                   "dummy"
+                   (arguments '(#:implicit-inputs? #f))))
+             (r -> (package (inherit p0) (name "DuMMY")))
+             (p1 -> (package (inherit p0) (replacement r)))
+             (exp0 ->
+                   (gexp (frob (ungexp p0) (ungexp output))))
+             (exp1 ->
+                   (gexp (frob (ungexp p1) (ungexp output))))
+             (void (set-guile-for-build %bootstrap-guile))
+             (drv0 (gexp->derivation "t" exp0 #:graft? #t))
+             (drv1 (gexp->derivation "t" exp1 #:graft? #t))
+             (drv1* (gexp->derivation "t" exp1 #:graft? #f))
+             (_ (set-grafting graft?)))
+            (return
+              (and (not (string=?
+                          (derivation->output-path drv0)
+                          (derivation->output-path drv1)))
+                   (string=?
+                     (derivation->output-path drv0)
+                     (derivation->output-path drv1*)))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation, composed gexps
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:384
source:
+ (test-assert
+   "gexp->derivation, composed gexps"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((exp0 ->
+                   (gexp (begin
+                           (mkdir (ungexp output))
+                           (chdir (ungexp output)))))
+             (exp1 ->
+                   (gexp (symlink
+                           (string-append
+                             (ungexp %bootstrap-guile)
+                             "/bin/guile")
+                           "foo")))
+             (exp ->
+                  (gexp (begin (ungexp exp0) (ungexp exp1))))
+             (drv (gexp->derivation "foo" exp))
+             (out -> (derivation->output-path drv))
+             (done (built-derivations (list drv)))
+             (guile (package-file %bootstrap-guile "bin/guile")))
+            (return
+              (string=?
+                (readlink (string-append out "/foo"))
+                guile)))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/d7a8qlyp2svnz3ayq1g38bx4lcymb4h6-foo.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/d7//a8qlyp2svnz3ayq1g38bx4lcymb4h6-foo.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/d7a8qlyp2svnz3ayq1g38bx4lcymb4h6-foo.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation, default system
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:400
source:
+ (test-assert
+   "gexp->derivation, default system"
+   (run-with-store
+     %store
+     (let ((system (%current-system))
+           (mdrv (parameterize
+                   ((%current-system "foobar64-linux"))
+                   (gexp->derivation
+                     "foo"
+                     (gexp (mkdir (ungexp output)))))))
+       (mlet %store-monad
+             ((drv mdrv))
+             (return
+               (string=? system (derivation-system drv)))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation, local-file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:411
source:
+ (test-assert
+   "gexp->derivation, local-file"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((file -> (search-path %load-path "guix.scm"))
+             (intd (interned-file file #:recursive? #f))
+             (local -> (local-file file))
+             (exp ->
+                  (gexp (begin
+                          (stat (ungexp local))
+                          (symlink (ungexp local) (ungexp output)))))
+             (drv (gexp->derivation "local-file" exp)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv))
+              (return
+                (string=?
+                  (readlink (derivation->output-path drv))
+                  intd))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation, cross-compilation
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:425
source:
+ (test-assert
+   "gexp->derivation, cross-compilation"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((target -> "mips64el-linux")
+             (exp ->
+                  (gexp (list (ungexp coreutils) (ungexp output))))
+             (xdrv (gexp->derivation "foo" exp #:target target))
+             (refs ((store-lift references)
+                    (derivation-file-name xdrv)))
+             (xcu (package->cross-derivation coreutils target))
+             (cu (package->derivation coreutils)))
+            (return
+              (and (member (derivation-file-name xcu) refs)
+                   (not (member (derivation-file-name cu) refs)))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation, ungexp-native
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:439
source:
+ (test-assert
+   "gexp->derivation, ungexp-native"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((target -> "mips64el-linux")
+             (exp ->
+                  (gexp (list (ungexp-native coreutils) (ungexp output))))
+             (xdrv (gexp->derivation "foo" exp #:target target))
+             (drv (gexp->derivation "foo" exp)))
+            (return
+              (string=?
+                (derivation-file-name drv)
+                (derivation-file-name xdrv))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation, ungexp + ungexp-native
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:449
source:
+ (test-assert
+   "gexp->derivation, ungexp + ungexp-native"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((target -> "mips64el-linux")
+             (exp ->
+                  (gexp (list (ungexp-native coreutils)
+                              (ungexp glibc)
+                              (ungexp output))))
+             (xdrv (gexp->derivation "foo" exp #:target target))
+             (refs ((store-lift references)
+                    (derivation-file-name xdrv)))
+             (xglibc (package->cross-derivation glibc target))
+             (cu (package->derivation coreutils)))
+            (return
+              (and (member (derivation-file-name cu) refs)
+                   (member (derivation-file-name xglibc) refs))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: (/home/sapientech/Dev/guix/guix_wip/test-tmp/store/izq9lrpv4z9xaaslk79ayidcv5lisn90-glibc-2.22.drv /home/sapientech/Dev/guix/guix_wip/test-tmp/store/sajnfz79nhdi4l8a464c9hhv4vf0gay2-coreutils-8.24.drv)
result: PASS

test-name: gexp->derivation, ungexp-native + composed gexps
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:463
source:
+ (test-assert
+   "gexp->derivation, ungexp-native + composed gexps"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((target -> "mips64el-linux")
+             (exp0 -> (gexp (list 1 2 (ungexp coreutils))))
+             (exp -> (gexp (list 0 (ungexp-native exp0))))
+             (xdrv (gexp->derivation "foo" exp #:target target))
+             (drv (gexp->derivation "foo" exp)))
+            (return
+              (string=?
+                (derivation-file-name drv)
+                (derivation-file-name xdrv))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation, store copy
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:474
source:
+ (test-assert
+   "gexp->derivation, store copy"
+   (run-with-store
+     %store
+     (let ((build-one
+             (gexp (call-with-output-file
+                     (ungexp output)
+                     (lambda (port) (display "This is the one." port)))))
+           (build-two
+             (lambda (one)
+               (gexp (begin
+                       (mkdir (ungexp output))
+                       (symlink
+                         (ungexp one)
+                         (string-append (ungexp output) "/one"))
+                       (call-with-output-file
+                         (string-append (ungexp output) "/two")
+                         (lambda (port)
+                           (display "This is the second one." port)))))))
+           (build-drv
+             (gexp (begin
+                     (use-modules (guix build store-copy))
+                     (mkdir (ungexp output))
+                     (populate-store '("graph") (ungexp output))))))
+       (mlet* %store-monad
+              ((one (gexp->derivation "one" build-one))
+               (two (gexp->derivation "two" (build-two one)))
+               (drv (gexp->derivation
+                      "store-copy"
+                      build-drv
+                      #:references-graphs
+                      `(("graph" ,two))
+                      #:modules
+                      '((guix build store-copy) (guix build utils))))
+               (ok? (built-derivations (list drv)))
+               (out -> (derivation->output-path drv)))
+              (let ((one (derivation->output-path one))
+                    (two (derivation->output-path two)))
+                (return
+                  (and ok?
+                       (file-exists? (string-append out "/" one))
+                       (file-exists? (string-append out "/" two))
+                       (file-exists? (string-append out "/" two "/two"))
+                       (string=?
+                         (readlink (string-append out "/" two "/one"))
+                         one))))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: imported-files
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:509
source:
+ (test-assert
+   "imported-files"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((files ->
+                    `(("x"
+                       unquote
+                       (search-path %load-path "ice-9/q.scm"))
+                      ("a/b/c"
+                       unquote
+                       (search-path %load-path "guix/derivations.scm"))
+                      ("p/q"
+                       unquote
+                       (search-path %load-path "guix.scm"))
+                      ("p/z"
+                       unquote
+                       (search-path %load-path "guix/store.scm"))))
+             (drv (imported-files files)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv))
+              (let ((dir (derivation->output-path drv)))
+                (return
+                  (every (match-lambda
+                           ((path . source)
+                            (equal?
+                              (call-with-input-file
+                                (string-append dir "/" path)
+                                get-bytevector-all)
+                              (call-with-input-file
+                                source
+                                get-bytevector-all))))
+                         files)))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp-modules & ungexp
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:529
source:
+ (test-equal
+   "gexp-modules & ungexp"
+   '((bar) (foo))
+   ((@@ (guix gexp) gexp-modules)
+    (gexp (foo (ungexp
+                 (with-imported-modules '((foo)) (gexp +)))
+               (ungexp-native
+                 (with-imported-modules '((bar)) (gexp -)))))))
expected-value: ((bar) (foo))
actual-value: ((bar) (foo))
result: PASS

test-name: gexp-modules & ungexp-splicing
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:535
source:
+ (test-equal
+   "gexp-modules & ungexp-splicing"
+   '((foo) (bar))
+   ((@@ (guix gexp) gexp-modules)
+    (gexp (foo (ungexp-splicing
+                 (list (with-imported-modules '((foo)) (gexp +))
+                       (with-imported-modules '((bar)) (gexp -))))))))
expected-value: ((foo) (bar))
actual-value: ((foo) (bar))
result: PASS

test-name: gexp->derivation #:modules
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:541
source:
+ (test-assert
+   "gexp->derivation #:modules"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((build ->
+                    (gexp (begin
+                            (use-modules (guix build utils))
+                            (mkdir-p
+                              (string-append
+                                (ungexp output)
+                                "/guile/guix/nix"))
+                            #t)))
+             (drv (gexp->derivation
+                    "test-with-modules"
+                    build
+                    #:modules
+                    '((guix build utils)))))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv))
+              (let* ((p (derivation->output-path drv))
+                     (s (stat (string-append p "/guile/guix/nix"))))
+                (return (eq? (stat:type s) 'directory)))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation & with-imported-modules
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:555
source:
+ (test-assert
+   "gexp->derivation & with-imported-modules"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((build ->
+                    (with-imported-modules
+                      '((guix build utils))
+                      (gexp (begin
+                              (use-modules (guix build utils))
+                              (mkdir-p
+                                (string-append
+                                  (ungexp output)
+                                  "/guile/guix/nix"))
+                              #t))))
+             (drv (gexp->derivation "test-with-modules" build)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv))
+              (let* ((p (derivation->output-path drv))
+                     (s (stat (string-append p "/guile/guix/nix"))))
+                (return (eq? (stat:type s) 'directory)))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation & nested with-imported-modules
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:570
source:
+ (test-assert
+   "gexp->derivation & nested with-imported-modules"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((build1
+               ->
+               (with-imported-modules
+                 '((guix build utils))
+                 (gexp (begin
+                         (use-modules (guix build utils))
+                         (mkdir-p
+                           (string-append (ungexp output) "/guile/guix/nix"))
+                         #t))))
+             (build2
+               ->
+               (with-imported-modules
+                 '((guix build bournish))
+                 (gexp (begin
+                         (use-modules
+                           (guix build bournish)
+                           (system base compile))
+                         (ungexp-native build1)
+                         (call-with-output-file
+                           (string-append (ungexp output) "/b")
+                           (lambda (port)
+                             (write (read-and-compile
+                                      (open-input-string "cd /foo")
+                                      #:from
+                                      %bournish-language
+                                      #:to
+                                      'scheme)
+                                    port)))))))
+             (drv (gexp->derivation "test-with-modules" build2)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv))
+              (let* ((p (derivation->output-path drv))
+                     (s (stat (string-append p "/guile/guix/nix")))
+                     (b (string-append p "/b")))
+                (return
+                  (and (eq? (stat:type s) 'directory)
+                       (equal?
+                         '(chdir "/foo")
+                         (call-with-input-file b read)))))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation #:references-graphs
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:599
source:
+ (test-assert
+   "gexp->derivation #:references-graphs"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((one (text-file "one" (random-text)))
+             (two (gexp->derivation
+                    "two"
+                    (gexp (symlink (ungexp one) (ungexp output "chbouib")))))
+             (build ->
+                    (with-imported-modules
+                      '((guix build store-copy) (guix build utils))
+                      (gexp (begin
+                              (use-modules (guix build store-copy))
+                              (with-output-to-file
+                                (ungexp output)
+                                (lambda ()
+                                  (write (call-with-input-file
+                                           "guile"
+                                           read-reference-graph))))
+                              (with-output-to-file
+                                (ungexp output "one")
+                                (lambda ()
+                                  (write (call-with-input-file
+                                           "one"
+                                           read-reference-graph))))
+                              (with-output-to-file
+                                (ungexp output "two")
+                                (lambda ()
+                                  (write (call-with-input-file
+                                           "two"
+                                           read-reference-graph))))))))
+             (drv (gexp->derivation
+                    "ref-graphs"
+                    build
+                    #:references-graphs
+                    `(("one" ,one)
+                      ("two" ,two "chbouib")
+                      ("guile" ,%bootstrap-guile))))
+             (ok? (built-derivations (list drv)))
+             (guile-drv
+               (package->derivation %bootstrap-guile))
+             (bash (interned-file
+                     (search-bootstrap-binary
+                       "bash"
+                       (%current-system))
+                     "bash"
+                     #:recursive?
+                     #t))
+             (g-one -> (derivation->output-path drv "one"))
+             (g-two -> (derivation->output-path drv "two"))
+             (g-guile -> (derivation->output-path drv)))
+            (return
+              (and ok?
+                   (equal?
+                     (call-with-input-file g-one read)
+                     (list one))
+                   (lset= string=?
+                          (call-with-input-file g-two read)
+                          (list one
+                                (derivation->output-path two "chbouib")))
+                   (lset= string=?
+                          (call-with-input-file g-guile read)
+                          (list (derivation->output-path guile-drv) bash)))))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/gnc6nwd3yi5vdbldw4xvb21hyqypj2qk-two.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/gn//c6nwd3yi5vdbldw4xvb21hyqypj2qk-two.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/gnc6nwd3yi5vdbldw4xvb21hyqypj2qk-two.drv -
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/drinqd82fbs5xmay5xii7lgivxl6bb1a-ref-graphs.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/dr//inqd82fbs5xmay5xii7lgivxl6bb1a-ref-graphs.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/drinqd82fbs5xmay5xii7lgivxl6bb1a-ref-graphs.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation #:allowed-references
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:643
source:
+ (test-assert
+   "gexp->derivation #:allowed-references"
+   (run-with-store
+     %store
+     (mlet %store-monad
+           ((drv (gexp->derivation
+                   "allowed-refs"
+                   (gexp (begin
+                           (mkdir (ungexp output))
+                           (chdir (ungexp output))
+                           (symlink (ungexp output) "self")
+                           (symlink (ungexp %bootstrap-guile) "guile")))
+                   #:allowed-references
+                   (list "out" %bootstrap-guile))))
+           (built-derivations (list drv)))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/qr3plan0zxv637d52f8kg7picirmdmmc-allowed-refs.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/qr//3plan0zxv637d52f8kg7picirmdmmc-allowed-refs.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/qr3plan0zxv637d52f8kg7picirmdmmc-allowed-refs.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation #:allowed-references, specific output
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:655
source:
+ (test-assert
+   "gexp->derivation #:allowed-references, specific output"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((in (gexp->derivation
+                   "thing"
+                   (gexp (begin
+                           (mkdir (ungexp output "ok"))
+                           (mkdir (ungexp output "not-ok"))))))
+             (drv (gexp->derivation
+                    "allowed-refs"
+                    (gexp (begin
+                            (pk (ungexp in "not-ok"))
+                            (mkdir (ungexp output))
+                            (chdir (ungexp output))
+                            (symlink (ungexp output) "self")
+                            (symlink (ungexp in "ok") "ok")))
+                    #:allowed-references
+                    (list "out" (gexp-input in "ok")))))
+            (built-derivations (list drv)))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: gexp->derivation #:allowed-references, disallowed
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:672
source:
+ (test-assert
+   "gexp->derivation #:allowed-references, disallowed"
+   (let ((drv (run-with-store
+                %store
+                (gexp->derivation
+                  "allowed-refs"
+                  (gexp (begin
+                          (mkdir (ungexp output))
+                          (chdir (ungexp output))
+                          (symlink (ungexp %bootstrap-guile) "guile")))
+                  #:allowed-references
+                  '()))))
+     (guard (c ((nix-protocol-error? c) #t))
+            (build-derivations %store (list drv))
+            #f)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/f2wbs6skpgnmljv4cddzx05gcx26b6n5-allowed-refs.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/f2//wbs6skpgnmljv4cddzx05gcx26b6n5-allowed-refs.drv.bz2
output (`/home/sapientech/Dev/guix/guix_wip/test-tmp/store/ilzqy6rrlwdwsa939k1z5maipa1g202i-allowed-refs') is not allowed to refer to path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/0vxgvlx03qscrds88s65hrs70n5jkw2g-guile-bootstrap-2.0'
@ build-failed /home/sapientech/Dev/guix/guix_wip/test-tmp/store/f2wbs6skpgnmljv4cddzx05gcx26b6n5-allowed-refs.drv - 1 output (`/home/sapientech/Dev/guix/guix_wip/test-tmp/store/ilzqy6rrlwdwsa939k1z5maipa1g202i-allowed-refs') is not allowed to refer to path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/0vxgvlx03qscrds88s65hrs70n5jkw2g-guile-bootstrap-2.0'
actual-value: #t
result: PASS

test-name: gexp->derivation #:disallowed-references, allowed
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:684
source:
+ (test-assert
+   "gexp->derivation #:disallowed-references, allowed"
+   (run-with-store
+     %store
+     (mlet %store-monad
+           ((drv (gexp->derivation
+                   "disallowed-refs"
+                   (gexp (begin
+                           (mkdir (ungexp output))
+                           (chdir (ungexp output))
+                           (symlink (ungexp output) "self")
+                           (symlink (ungexp %bootstrap-guile) "guile")))
+                   #:disallowed-references
+                   '())))
+           (built-derivations (list drv)))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/n3hhcjzignj7czh53scbwjm7mcxa27yk-disallowed-refs.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/n3//hhcjzignj7czh53scbwjm7mcxa27yk-disallowed-refs.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/n3hhcjzignj7czh53scbwjm7mcxa27yk-disallowed-refs.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation #:disallowed-references
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:696
source:
+ (test-assert
+   "gexp->derivation #:disallowed-references"
+   (let ((drv (run-with-store
+                %store
+                (gexp->derivation
+                  "disallowed-refs"
+                  (gexp (begin
+                          (mkdir (ungexp output))
+                          (chdir (ungexp output))
+                          (symlink (ungexp %bootstrap-guile) "guile")))
+                  #:disallowed-references
+                  (list %bootstrap-guile)))))
+     (guard (c ((nix-protocol-error? c) #t))
+            (build-derivations %store (list drv))
+            #f)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/y6h6i2d0vb4whn8bfvyl5vff17h9rs19-disallowed-refs.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/y6//h6i2d0vb4whn8bfvyl5vff17h9rs19-disallowed-refs.drv.bz2
output (`/home/sapientech/Dev/guix/guix_wip/test-tmp/store/jz1q32n6qxyvi6dkywl028y6fvdfsi1k-disallowed-refs') is not allowed to refer to path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/0vxgvlx03qscrds88s65hrs70n5jkw2g-guile-bootstrap-2.0'
@ build-failed /home/sapientech/Dev/guix/guix_wip/test-tmp/store/y6h6i2d0vb4whn8bfvyl5vff17h9rs19-disallowed-refs.drv - 1 output (`/home/sapientech/Dev/guix/guix_wip/test-tmp/store/jz1q32n6qxyvi6dkywl028y6fvdfsi1k-disallowed-refs') is not allowed to refer to path `/home/sapientech/Dev/guix/guix_wip/test-tmp/store/0vxgvlx03qscrds88s65hrs70n5jkw2g-guile-bootstrap-2.0'
actual-value: #t
result: PASS

test-name: gexp->script
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:716
source:
+ (test-assert
+   "gexp->script"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((n -> (random (expt 2 50)))
+             (exp ->
+                  (gexp (system*
+                          (string-append
+                            (ungexp %bootstrap-guile)
+                            "/bin/guile")
+                          "-c"
+                          (object->string '(display (expt (ungexp n) 2))))))
+             (drv (gexp->script
+                    "guile-thing"
+                    exp
+                    #:guile
+                    %bootstrap-guile))
+             (out -> (derivation->output-path drv))
+             (done (built-derivations (list drv))))
+            (let* ((pipe (open-input-pipe out))
+                   (str (get-string-all pipe)))
+              (return
+                (and (zero? (close-pipe pipe))
+                     (= (expt n 2) (string->number str))))))
+     #:guile-for-build
+     (%guile-for-build)))
result: SKIP

test-name: program-file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:733
source:
+ (test-assert
+   "program-file"
+   (run-with-store
+     %store
+     (let* ((n (random (expt 2 50)))
+            (exp (with-imported-modules
+                   '((guix build utils))
+                   (gexp (begin
+                           (use-modules (guix build utils))
+                           (display (ungexp n))))))
+            (file (program-file
+                    "program"
+                    exp
+                    #:guile
+                    %bootstrap-guile)))
+       (mlet* %store-monad
+              ((drv (lower-object file))
+               (out -> (derivation->output-path drv)))
+              (mbegin
+                %store-monad
+                (built-derivations (list drv))
+                (let* ((pipe (open-input-pipe out))
+                       (str (get-string-all pipe)))
+                  (return
+                    (and (zero? (close-pipe pipe))
+                         (= n (string->number str))))))))
+     #:guile-for-build
+     (%guile-for-build)))
result: SKIP

test-name: scheme-file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:750
source:
+ (test-assert
+   "scheme-file"
+   (run-with-store
+     %store
+     (let* ((text (plain-file "foo" "Hello, world!"))
+            (scheme
+              (scheme-file
+                "bar"
+                (gexp (list "foo" (ungexp text))))))
+       (mlet* %store-monad
+              ((drv (lower-object scheme))
+               (text (lower-object text))
+               (out -> (derivation->output-path drv)))
+              (mbegin
+                %store-monad
+                (built-derivations (list drv))
+                (mlet %store-monad
+                      ((refs ((store-lift references) out)))
+                      (return
+                        (and (equal? refs (list text))
+                             (equal?
+                               `(list "foo" ,text)
+                               (call-with-input-file out read))))))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: text-file*
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:763
source:
+ (test-assert
+   "text-file*"
+   (let ((references (store-lift references)))
+     (run-with-store
+       %store
+       (mlet* %store-monad
+              ((drv (package->derivation %bootstrap-guile))
+               (guile -> (derivation->output-path drv))
+               (file (text-file "bar" "This is bar."))
+               (text (text-file*
+                       "foo"
+                       %bootstrap-guile
+                       "/bin/guile "
+                       (gexp-input %bootstrap-guile "out")
+                       "/bin/guile "
+                       drv
+                       "/bin/guile "
+                       file))
+               (done (built-derivations (list text)))
+               (out -> (derivation->output-path text))
+               (refs (references out)))
+              (return
+                (and (lset= string=? refs (list guile file))
+                     (equal?
+                       (call-with-input-file out get-string-all)
+                       (string-append
+                         guile
+                         "/bin/guile "
+                         guile
+                         "/bin/guile "
+                         guile
+                         "/bin/guile "
+                         file)))))
+       #:guile-for-build
+       (package-derivation %store %bootstrap-guile))))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/hkndxm5i5l1zczbiavqbk84qrdmilz6g-foo.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/hk//ndxm5i5l1zczbiavqbk84qrdmilz6g-foo.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/hkndxm5i5l1zczbiavqbk84qrdmilz6g-foo.drv -
actual-value: #t
result: PASS

test-name: mixed-text-file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:787
source:
+ (test-assert
+   "mixed-text-file"
+   (run-with-store
+     %store
+     (mlet* %store-monad
+            ((file ->
+                   (mixed-text-file
+                     "mixed"
+                     "export PATH="
+                     %bootstrap-guile
+                     "/bin"))
+             (drv (lower-object file))
+             (out -> (derivation->output-path drv))
+             (guile-drv
+               (package->derivation %bootstrap-guile))
+             (guile -> (derivation->output-path guile-drv)))
+            (mbegin
+              %store-monad
+              (built-derivations (list drv))
+              (mlet %store-monad
+                    ((refs ((store-lift references) out)))
+                    (return
+                      (and (string=?
+                             (string-append "export PATH=" guile "/bin")
+                             (call-with-input-file out get-string-all))
+                           (equal? refs (list guile)))))))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/h3cn1cfdzpsbzn9cyfg47jbs8744gmwf-mixed.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/h3//cn1cfdzpsbzn9cyfg47jbs8744gmwf-mixed.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/h3cn1cfdzpsbzn9cyfg47jbs8744gmwf-mixed.drv -
actual-value: #t
result: PASS

test-name: gexp->derivation vs. %current-target-system
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:802
source:
+ (test-assert
+   "gexp->derivation vs. %current-target-system"
+   (let ((mval (gexp->derivation
+                 "foo"
+                 (gexp (begin
+                         (mkdir (ungexp output))
+                         (foo (ungexp-native gnu-make))))
+                 #:target
+                 #f)))
+     (parameterize
+       ((%current-target-system "fooooo"))
+       (derivation? (run-with-store %store mval)))))
actual-value: #t
result: PASS

test-name: lower-object
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:813
source:
+ (test-assert
+   "lower-object"
+   (run-with-store
+     %store
+     (mlet %store-monad
+           ((drv1 (lower-object %bootstrap-guile))
+            (drv2 (lower-object (package-source coreutils)))
+            (item (lower-object (plain-file "foo" "Hello!"))))
+           (return
+             (and (derivation? drv1)
+                  (derivation? drv2)
+                  (store-path? item))))
+     #:guile-for-build
+     (%guile-for-build)))
actual-value: #t
result: PASS

test-name: lower-object, computed-file
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:820
source:
+ (test-assert
+   "lower-object, computed-file"
+   (run-with-store
+     %store
+     (let* ((text (plain-file "foo" "Hello!"))
+            (exp (gexp (begin
+                         (mkdir (ungexp output))
+                         (symlink
+                           (ungexp %bootstrap-guile)
+                           (string-append (ungexp output) "/guile"))
+                         (symlink
+                           (ungexp text)
+                           (string-append (ungexp output) "/text")))))
+            (computed (computed-file "computed" exp)))
+       (mlet* %store-monad
+              ((text (lower-object text))
+               (guile-drv (lower-object %bootstrap-guile))
+               (comp-drv (lower-object computed))
+               (comp -> (derivation->output-path comp-drv)))
+              (mbegin
+                %store-monad
+                (built-derivations (list comp-drv))
+                (return
+                  (and (string=?
+                         (readlink (string-append comp "/guile"))
+                         (derivation->output-path guile-drv))
+                       (string=?
+                         (readlink (string-append comp "/text"))
+                         text))))))
+     #:guile-for-build
+     (%guile-for-build)))
@ build-started /home/sapientech/Dev/guix/guix_wip/test-tmp/store/fdhli6nzdk7643skliaca0flzvrf2xx8-computed.drv - x86_64-linux /home/sapientech/Dev/guix/guix_wip/test-tmp/var/log/guix/drvs/fd//hli6nzdk7643skliaca0flzvrf2xx8-computed.drv.bz2
@ build-succeeded /home/sapientech/Dev/guix/guix_wip/test-tmp/store/fdhli6nzdk7643skliaca0flzvrf2xx8-computed.drv -
actual-value: #t
result: PASS

test-name: printer
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:839
source:
+ (test-assert
+   "printer"
+   (string-match
+     "^#<gexp \\(string-append .*#<package coreutils.* \"/bin/uname\"\\) [[:xdigit:]]+>$"
+     (with-output-to-string
+       (lambda ()
+         (write (gexp (string-append (ungexp coreutils) "/bin/uname")))))))
actual-value: #(#<gexp (string-append #<gexp-input #<package coreutils@HIDDEN gnu/packages/base.scm:244 2f1cf00>:out> "/bin/uname") 5c2f630> (0 . 122))
result: PASS

test-name: printer vs. ungexp-splicing
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:848
source:
+ (test-assert
+   "printer vs. ungexp-splicing"
+   (string-match
+     "^#<gexp .* [[:xdigit:]]+>$"
+     (with-output-to-string
+       (lambda ()
+         (write (gexp (begin (ungexp-splicing (gexp ())))))))))
actual-value: #(#<gexp  58dc150> (0 . 16))
result: PASS

test-name: sugar
location: /home/sapientech/Dev/guix/guix_wip/tests/gexp.scm:856
source:
+ (test-equal
+   "sugar"
+   '(gexp (foo (ungexp bar)
+               (ungexp baz "out")
+               (ungexp (chbouib 42))
+               (ungexp-splicing (list x y z))
+               (ungexp-native foo)
+               (ungexp-native foo "out")
+               (ungexp-native (chbouib 42))
+               (ungexp-native-splicing (list x y z))))
+   '(gexp (foo (ungexp bar)
+               (ungexp baz "out")
+               (ungexp (chbouib 42))
+               (ungexp-splicing (list x y z))
+               (ungexp-native foo)
+               (ungexp-native foo "out")
+               (ungexp-native (chbouib 42))
+               (ungexp-native-splicing (list x y z)))))
expected-value: (gexp (foo (ungexp bar) (ungexp baz out) (ungexp (chbouib 42)) (ungexp-splicing (list x y z)) (ungexp-native foo) (ungexp-native foo out) (ungexp-native (chbouib 42)) (ungexp-native-splicing (list x y z))))
actual-value: (gexp (foo (ungexp bar) (ungexp baz out) (ungexp (chbouib 42)) (ungexp-splicing (list x y z)) (ungexp-native foo) (ungexp-native foo out) (ungexp-native (chbouib 42)) (ungexp-native-splicing (list x y z))))
result: PASS


SKIP: tests/syscalls
====================

test-name: mount, ENOENT
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:38
source:
+ (test-equal
+   "mount, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda ()
+            (mount "/dev/null" "/does-not-exist" "ext2")
+            #f)
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: umount, ENOENT/EPERM
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:46
source:
+ (test-assert
+   "umount, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (umount "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: mount-points
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:55
source:
+ (test-assert
+   "mount-points"
+   (any (cute member <> (mount-points))
+        '("/" "/proc" "/sys" "/dev")))
actual-value: (/ /sys/kernel/security /dev/shm /dev/pts /sys/fs/cgroup /sys/fs/cgroup/systemd /sys/fs/pstore /sys/fs/cgroup/freezer /sys/fs/cgroup/cpuset /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/blkio /sys/fs/cgroup/memory /sys/fs/cgroup/net_cls /sys/fs/cgroup/pids /sys/fs/cgroup/devices /proc/sys/fs/binfmt_misc /dev/mqueue /sys/kernel/debug /dev/hugepages /sys/kernel/config /tmp /run/user/1000)
result: PASS

test-name: swapon, ENOENT/EPERM
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:61
source:
+ (test-assert
+   "swapon, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (swapon "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: swapoff, ENOENT/EINVAL/EPERM
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:69
source:
+ (test-assert
+   "swapoff, ENOENT/EINVAL/EPERM"
+   (catch 'system-error
+          (lambda () (swapoff "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM EINVAL ENOENT)))))
actual-value: (1 22 2)
result: PASS

test-name: mkdtemp!
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:77
source:
+ (test-assert
+   "mkdtemp!"
+   (let* ((tmp (or (getenv "TMPDIR") "/tmp"))
+          (dir (mkdtemp!
+                 (string-append tmp "/guix-test-XXXXXX"))))
+     (and (file-exists? dir) (begin (rmdir dir) #t))))
actual-value: #t
result: PASS

test-name: statfs, ENOENT
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:85
source:
+ (test-equal
+   "statfs, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda () (statfs "/does-not-exist"))
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: statfs
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:92
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+     (and (file-system? fs)
+          (> (file-system-block-size fs) 0)
+          (>= (file-system-blocks-available fs) 0)
+          (>= (file-system-blocks-free fs)
+              (file-system-blocks-available fs)))))
actual-value: #t
result: PASS

test-name: clone
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
source:
+ (test-assert
+   "clone"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+          (0 (primitive-exit 42))
+          (pid (and (not (equal?
+                           (readlink (user-namespace pid))
+                           (readlink (user-namespace (getpid)))))
+                    (match (waitpid pid)
+                           ((_ . status) (= 42 (status:exit-val status))))))))
result: SKIP

test-name: setns
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:122
source:
+ (test-assert
+   "setns"
+   (match (clone (logior CLONE_NEWUSER SIGCHLD))
+          (0 (primitive-exit 0))
+          (clone-pid
+            (match (pipe)
+                   ((in . out)
+                    (match (primitive-fork)
+                           (0
+                            (close in)
+                            (call-with-input-file
+                              (user-namespace clone-pid)
+                              (lambda (port) (setns (port->fdes port) 0)))
+                            (write 'done out)
+                            (close out)
+                            (primitive-exit 0))
+                           (fork-pid
+                             (close out)
+                             (read in)
+                             (let ((result
+                                     (and (equal?
+                                            (readlink
+                                              (user-namespace clone-pid))
+                                            (readlink
+                                              (user-namespace fork-pid))))))
+                               (waitpid clone-pid)
+                               (waitpid fork-pid)
+                               result))))))))
result: SKIP

test-name: pivot-root
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:151
source:
+ (test-assert
+   "pivot-root"
+   (match (pipe)
+          ((in . out)
+           (match (clone (logior CLONE_NEWUSER CLONE_NEWNS SIGCHLD))
+                  (0
+                   (close in)
+                   (call-with-temporary-directory
+                     (lambda (root)
+                       (let ((put-old (string-append root "/real-root")))
+                         (mount "none" root "tmpfs")
+                         (mkdir put-old)
+                         (call-with-output-file
+                           (string-append root "/test")
+                           (lambda (port) (display "testing\n" port)))
+                         (pivot-root root put-old)
+                         (write (file-exists? "/test") out)
+                         (close out))))
+                   (primitive-exit 0))
+                  (pid (close out)
+                       (let ((result (read in)))
+                         (close in)
+                         (and (zero? (match (waitpid pid)
+                                            ((_ . status)
+                                             (status:exit-val status))))
+                              (eq? #t result))))))))
result: SKIP

test-name: fcntl-flock wait
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:180
source:
+ (test-equal
+   "fcntl-flock wait"
+   42
+   (let ((file (open-file temp-file "w0b")))
+     (fcntl-flock file 'write-lock)
+     (match (primitive-fork)
+            (0
+             (dynamic-wind
+               (const #t)
+               (lambda ()
+                 (let ((file (open-file temp-file "r0b")))
+                   (fcntl-flock file 'read-lock)
+                   (primitive-exit (read file)))
+                 (primitive-exit 1))
+               (lambda () (primitive-exit 2))))
+            (pid (display "hello, world!" file)
+                 (force-output file)
+                 (sleep 1)
+                 (seek file 0 SEEK_SET)
+                 (truncate-file file 0)
+                 (write 42 file)
+                 (force-output file)
+                 (fcntl-flock file 'unlock)
+                 (match (waitpid pid)
+                        ((_ . status)
+                         (let ((result (status:exit-val status)))
+                           (close-port file)
+                           result)))))))
expected-value: 42
actual-value: 42
result: PASS

test-name: fcntl-flock non-blocking
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:219
source:
+ (test-equal
+   "fcntl-flock non-blocking"
+   EAGAIN
+   (match (pipe)
+          ((input . output)
+           (match (primitive-fork)
+                  (0
+                   (dynamic-wind
+                     (const #t)
+                     (lambda ()
+                       (close-port output)
+                       (read-char input)
+                       (let ((file (open-file temp-file "w0")))
+                         (catch 'flock-error
+                                (lambda ()
+                                  (fcntl-flock file 'write-lock #:wait? #f))
+                                (lambda (key errno)
+                                  (primitive-exit (pk 'errno errno)))))
+                       (primitive-exit -1))
+                     (lambda () (primitive-exit -2))))
+                  (pid (close-port input)
+                       (let ((file (open-file temp-file "w0")))
+                         (fcntl-flock file 'write-lock)
+                         (write 'green-light output)
+                         (force-output output)
+                         (match (waitpid pid)
+                                ((_ . status)
+                                 (let ((result (status:exit-val status)))
+                                   (fcntl-flock file 'unlock)
+                                   (close-port file)
+                                   result)))))))))

;;; (errno 11)
expected-value: 11
actual-value: 11
result: PASS

test-name: all-network-interface-names
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:261
source:
+ (test-assert
+   "all-network-interface-names"
+   (match (all-network-interface-names)
+          (((? string? names) ..1) (member "lo" names))))
actual-value: (lo enp0s25 wlp2s0)
result: PASS

test-name: network-interface-names
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:266
source:
+ (test-assert
+   "network-interface-names"
+   (match (network-interface-names)
+          (((? string? names) ..1)
+           (lset<=
+             string=?
+             names
+             (all-network-interface-names)))))
actual-value: #t
result: PASS

test-name: network-interface-flags
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:271
source:
+ (test-assert
+   "network-interface-flags"
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (flags (network-interface-flags sock "lo")))
+     (close-port sock)
+     (and (not (zero? (logand flags IFF_LOOPBACK)))
+          (not (zero? (logand flags IFF_UP))))))
actual-value: #t
result: PASS

test-name: loopback-network-interface?
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:278
source:
+ (test-equal
+   "loopback-network-interface?"
+   ENODEV
+   (and (loopback-network-interface? "lo")
+        (catch 'system-error
+               (lambda ()
+                 (loopback-network-interface? "nonexistent")
+                 #f)
+               (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS

test-name: set-network-interface-flags
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:289
source:
+ (test-assert
+   "set-network-interface-flags"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-flags sock "lo" IFF_UP))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-address lo
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:299
source:
+ (test-equal
+   "network-interface-address lo"
+   (make-socket-address
+     AF_INET
+     (inet-pton AF_INET "127.0.0.1")
+     0)
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (addr (network-interface-address sock "lo")))
+     (close-port sock)
+     addr))
expected-value: #(2 2130706433 0)
actual-value: #(2 2130706433 0)
result: PASS

test-name: set-network-interface-address
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:307
source:
+ (test-assert
+   "set-network-interface-address"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-address
+                sock
+                "nonexistent"
+                (make-socket-address
+                  AF_INET
+                  (inet-pton AF_INET "127.12.14.15")
+                  0)))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interfaces returns one or more interfaces
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:321
source:
+ (test-equal
+   "network-interfaces returns one or more interfaces"
+   '(#t #t #t)
+   (match (network-interfaces)
+          ((interfaces ..1)
+           (list (every interface? interfaces)
+                 (every string? (map interface-name interfaces))
+                 (every (lambda (sockaddr)
+                          (or (vector? sockaddr) (not sockaddr)))
+                        (map interface-address interfaces))))))
expected-value: (#t #t #t)
actual-value: (#t #t #t)
result: PASS

test-name: network-interfaces returns "lo"
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:333
source:
+ (test-equal
+   "network-interfaces returns \"lo\""
+   (list #t
+         (make-socket-address
+           AF_INET
+           (inet-pton AF_INET "127.0.0.1")
+           0))
+   (match (filter
+            (lambda (interface)
+              (string=? "lo" (interface-name interface)))
+            (network-interfaces))
+          ((loopbacks ..1)
+           (list (every (lambda (lo)
+                          (not (zero? (logand
+                                        IFF_LOOPBACK
+                                        (interface-flags lo)))))
+                        loopbacks)
+                 (match (find (lambda (lo)
+                                (= AF_INET
+                                   (sockaddr:fam (interface-address lo))))
+                              loopbacks)
+                        (#f #f)
+                        (lo (interface-address lo)))))))
expected-value: (#t #(2 2130706433 0))
actual-value: (#t #(2 2130706433 0))
result: PASS

test-name: tcgetattr ENOTTY
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:348
source:
+ (test-equal
+   "tcgetattr ENOTTY"
+   ENOTTY
+   (catch 'system-error
+          (lambda ()
+            (call-with-input-file
+              "/dev/null"
+              (lambda (port) (tcgetattr (fileno port)))))
+          (compose system-error-errno list)))
expected-value: 25
actual-value: 25
result: PASS

test-name: tcgetattr
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:362
source:
+ (test-assert
+   "tcgetattr"
+   (let ((termios (tcgetattr 0)))
+     (and (termios? termios)
+          (> (termios-input-speed termios) 0)
+          (> (termios-output-speed termios) 0))))
actual-value: #t
result: PASS

test-name: tcsetattr
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:368
source:
+ (test-assert
+   "tcsetattr"
+   (let ((first (tcgetattr 0)))
+     (tcsetattr 0 (tcsetattr-action TCSANOW) first)
+     (equal? first (tcgetattr 0))))
actual-value: #t
result: PASS

test-name: terminal-window-size ENOTTY
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:373
source:
+ (test-assert
+   "terminal-window-size ENOTTY"
+   (call-with-input-file
+     "/dev/null"
+     (lambda (port)
+       (catch 'system-error
+              (lambda () (terminal-window-size port))
+              (lambda args
+                (memv (system-error-errno args)
+                      (list ENOTTY EINVAL)))))))
actual-value: (25 22)
result: PASS

test-name: terminal-columns
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:384
source:
+ (test-assert
+   "terminal-columns"
+   (> (terminal-columns) 0))
actual-value: #t
result: PASS

test-name: terminal-columns non-file port
location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:387
source:
+ (test-assert
+   "terminal-columns non-file port"
+   (> (terminal-columns
+        (open-input-string
+          "Join us now, share the software!"))
+      0))
actual-value: #t
result: PASS


SKIP: tests/gremlin
===================

test-name: elf-dynamic-info-needed, executable
location: /home/sapientech/Dev/guix/guix_wip/tests/gremlin.scm:44
source:
+ (test-assert
+   "elf-dynamic-info-needed, executable"
+   (let* ((elf (call-with-input-file %guile-executable read-elf))
+          (dyninfo (elf-dynamic-info elf)))
+     (or (not dyninfo)
+         (lset<=
+           string=?
+           (list (string-append "libguile-" (effective-version))
+                 "libgc"
+                 "libunistring"
+                 "libffi")
+           (map (lambda (lib)
+                  (string-take lib (string-contains lib ".so")))
+                (elf-dynamic-info-needed dyninfo))))))
result: SKIP

test-name: expand-origin
location: /home/sapientech/Dev/guix/guix_wip/tests/gremlin.scm:55
source:
+ (test-equal
+   "expand-origin"
+   '("OOO/../lib"
+     "OOO"
+     "../OOO/bar/OOO/baz"
+     "ORIGIN/foo")
+   (map (cut expand-origin <> "OOO")
+        '("$ORIGIN/../lib"
+          "${ORIGIN}"
+          "../${ORIGIN}/bar/$ORIGIN/baz"
+          "ORIGIN/foo")))
expected-value: (OOO/../lib OOO ../OOO/bar/OOO/baz ORIGIN/foo)
actual-value: (OOO/../lib OOO ../OOO/bar/OOO/baz ORIGIN/foo)
result: PASS


FAIL: tests/lint
================

test-name: description: not a string
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:145
source:
+ (test-assert
+   "description: not a string"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (description 'foobar))))
+           (check-description-style pkg)))
+       "invalid description")))
actual-value: #t
result: PASS

test-name: description: not empty
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:153
source:
+ (test-assert
+   "description: not empty"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (description ""))))
+           (check-description-style pkg)))
+       "description should not be empty")))
actual-value: #t
result: PASS

test-name: description: valid Texinfo markup
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:161
source:
+ (test-assert
+   "description: valid Texinfo markup"
+   (->bool
+     (string-contains
+       (with-warnings
+         (check-description-style
+           (dummy-package "x" (description "f{oo}b@r"))))
+       "Texinfo markup in description is invalid")))
actual-value: #t
result: PASS

test-name: description: does not start with an upper-case letter
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:168
source:
+ (test-assert
+   "description: does not start with an upper-case letter"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (description "bad description."))))
+           (check-description-style pkg)))
+       "description should start with an upper-case letter")))
actual-value: #t
result: PASS

test-name: description: may start with a digit
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:176
source:
+ (test-assert
+   "description: may start with a digit"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package
+                    "x"
+                    (description "2-component library."))))
+         (check-description-style pkg)))))
actual-value: #t
result: PASS

test-name: description: may start with lower-case package name
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:183
source:
+ (test-assert
+   "description: may start with lower-case package name"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package
+                    "x"
+                    (description "x is a dummy package."))))
+         (check-description-style pkg)))))
actual-value: #t
result: PASS

test-name: description: two spaces after end of sentence
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:190
source:
+ (test-assert
+   "description: two spaces after end of sentence"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (description "Bad. Quite bad."))))
+           (check-description-style pkg)))
+       "sentences in description should be followed by two spaces")))
actual-value: #t
result: PASS

test-name: description: end-of-sentence detection with abbreviations
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:198
source:
+ (test-assert
+   "description: end-of-sentence detection with abbreviations"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package
+                    "x"
+                    (description
+                      "E.g. Foo, i.e. Bar resp. Baz (a.k.a. DVD)."))))
+         (check-description-style pkg)))))
actual-value: #t
result: PASS

test-name: synopsis: not a string
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:206
source:
+ (test-assert
+   "synopsis: not a string"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (synopsis #f))))
+           (check-synopsis-style pkg)))
+       "invalid synopsis")))
actual-value: #t
result: PASS

test-name: synopsis: not empty
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:214
source:
+ (test-assert
+   "synopsis: not empty"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (synopsis ""))))
+           (check-synopsis-style pkg)))
+       "synopsis should not be empty")))
actual-value: #t
result: PASS

test-name: synopsis: does not start with an upper-case letter
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:222
source:
+ (test-assert
+   "synopsis: does not start with an upper-case letter"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (synopsis "bad synopsis."))))
+           (check-synopsis-style pkg)))
+       "synopsis should start with an upper-case letter")))
actual-value: #t
result: PASS

test-name: synopsis: may start with a digit
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:230
source:
+ (test-assert
+   "synopsis: may start with a digit"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package
+                    "x"
+                    (synopsis "5-dimensional frobnicator"))))
+         (check-synopsis-style pkg)))))
actual-value: #t
result: PASS

test-name: synopsis: ends with a period
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:237
source:
+ (test-assert
+   "synopsis: ends with a period"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (synopsis "Bad synopsis."))))
+           (check-synopsis-style pkg)))
+       "no period allowed at the end of the synopsis")))
actual-value: #t
result: PASS

test-name: synopsis: ends with 'etc.'
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:245
source:
+ (test-assert
+   "synopsis: ends with 'etc.'"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package "x" (synopsis "Foo, bar, etc."))))
+         (check-synopsis-style pkg)))))
actual-value: #t
result: PASS

test-name: synopsis: starts with 'A'
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:251
source:
+ (test-assert
+   "synopsis: starts with 'A'"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (synopsis "A bad synop\u015dis"))))
+           (check-synopsis-style pkg)))
+       "no article allowed at the beginning of the synopsis")))
actual-value: #t
result: PASS

test-name: synopsis: starts with 'An'
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:259
source:
+ (test-assert
+   "synopsis: starts with 'An'"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (synopsis "An awful synopsis"))))
+           (check-synopsis-style pkg)))
+       "no article allowed at the beginning of the synopsis")))
actual-value: #t
result: PASS

test-name: synopsis: starts with 'a'
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:267
source:
+ (test-assert
+   "synopsis: starts with 'a'"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package "x" (synopsis "a bad synopsis"))))
+           (check-synopsis-style pkg)))
+       "no article allowed at the beginning of the synopsis")))
actual-value: #t
result: PASS

test-name: synopsis: starts with 'an'
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:275
source:
+ (test-assert
+   "synopsis: starts with 'an'"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (synopsis "an awful synopsis"))))
+           (check-synopsis-style pkg)))
+       "no article allowed at the beginning of the synopsis")))
actual-value: #t
result: PASS

test-name: synopsis: too long
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:283
source:
+ (test-assert
+   "synopsis: too long"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (synopsis (make-string 80 #\x)))))
+           (check-synopsis-style pkg)))
+       "synopsis should be less than 80 characters long")))
actual-value: #t
result: PASS

test-name: synopsis: start with package name
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:291
source:
+ (test-assert
+   "synopsis: start with package name"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (name "foo")
+                      (synopsis "foo, a nice package"))))
+           (check-synopsis-style pkg)))
+       "synopsis should not start with the package name")))
actual-value: #t
result: PASS

test-name: synopsis: start with package name prefix
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:300
source:
+ (test-assert
+   "synopsis: start with package name prefix"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package
+                    "arb"
+                    (synopsis "Arbitrary precision"))))
+         (check-synopsis-style pkg)))))
actual-value: #t
result: PASS

test-name: synopsis: start with abbreviation
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:307
source:
+ (test-assert
+   "synopsis: start with abbreviation"
+   (string-null?
+     (with-warnings
+       (let ((pkg (dummy-package
+                    "uucp"
+                    (synopsis "UUCP implementation")
+                    (description "Imagine this is Taylor UUCP."))))
+         (check-synopsis-style pkg)))))
actual-value: #t
result: PASS

test-name: inputs: pkg-config is probably a native input
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:316
source:
+ (test-assert
+   "inputs: pkg-config is probably a native input"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (inputs `(("pkg-config" ,pkg-config))))))
+           (check-inputs-should-be-native pkg)))
+       "'pkg-config' should probably be a native input")))
actual-value: #t
result: PASS

test-name: inputs: glib:bin is probably a native input
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:325
source:
+ (test-assert
+   "inputs: glib:bin is probably a native input"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (inputs `(("glib" ,glib "bin"))))))
+           (check-inputs-should-be-native pkg)))
+       "'glib:bin' should probably be a native input")))
actual-value: #t
result: PASS

test-name: patches: file names
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:334
source:
+ (test-assert
+   "patches: file names"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (source
+                        (dummy-origin
+                          (patches (list "/path/to/y.patch")))))))
+           (check-patch-file-names pkg)))
+       "file names of patches should start with the package name")))
actual-value: #t
result: PASS

test-name: patches: not found
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:345
source:
+ (test-assert
+   "patches: not found"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (source
+                        (dummy-origin
+                          (patches
+                            (list (search-patch
+                                    "this-patch-does-not-exist!"))))))))
+           (check-patch-file-names pkg)))
+       "patch not found")))
actual-value: #t
result: PASS

test-name: derivation: invalid arguments
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:357
source:
+ (test-assert
+   "derivation: invalid arguments"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (arguments
+                        '(#:imported-modules (invalid-module))))))
+           (check-derivation pkg)))
+       "failed to create derivation")))
actual-value: #t
result: PASS

test-name: license: invalid license
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:367
source:
+ (test-assert
+   "license: invalid license"
+   (string-contains
+     (with-warnings
+       (check-license (dummy-package "x" (license #f))))
+     "invalid license"))
actual-value: 63
result: PASS

test-name: home-page: wrong home-page
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:373
source:
+ (test-assert
+   "home-page: wrong home-page"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (package
+                      (inherit (dummy-package "x"))
+                      (home-page #f))))
+           (check-home-page pkg)))
+       "invalid")))
actual-value: #t
result: PASS

test-name: home-page: invalid URI
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:383
source:
+ (test-assert
+   "home-page: invalid URI"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (package
+                      (inherit (dummy-package "x"))
+                      (home-page "foobar"))))
+           (check-home-page pkg)))
+       "invalid home page URL")))
actual-value: #t
result: PASS

test-name: home-page: host not found
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:393
source:
+ (test-assert
+   "home-page: host not found"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (package
+                      (inherit (dummy-package "x"))
+                      (home-page "http://does-not-exist"))))
+           (check-home-page pkg)))
+       "domain not found")))
actual-value: #f
result: FAIL

test-name: home-page: Connection refused
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:404
source:
+ (test-assert
+   "home-page: Connection refused"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (package
+                      (inherit (dummy-package "x"))
+                      (home-page %local-url))))
+           (check-home-page pkg)))
+       "Connection refused")))
actual-value: #t
result: PASS

test-name: home-page: 200
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:415
source:
+ (test-equal
+   "home-page: 200"
+   ""
+   (with-warnings
+     (with-http-server
+       200
+       %long-string
+       (let ((pkg (package
+                    (inherit (dummy-package "x"))
+                    (home-page %local-url))))
+         (check-home-page pkg)))))
expected-value: 
actual-value: 
result: PASS

test-name: home-page: 200 but short length
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:425
source:
+ (test-assert
+   "home-page: 200 but short length"
+   (->bool
+     (string-contains
+       (with-warnings
+         (with-http-server
+           200
+           "This is too small."
+           (let ((pkg (package
+                        (inherit (dummy-package "x"))
+                        (home-page %local-url))))
+             (check-home-page pkg))))
+       "suspiciously small")))
actual-value: #t
result: PASS

test-name: home-page: 404
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:437
source:
+ (test-assert
+   "home-page: 404"
+   (->bool
+     (string-contains
+       (with-warnings
+         (with-http-server
+           404
+           %long-string
+           (let ((pkg (package
+                        (inherit (dummy-package "x"))
+                        (home-page %local-url))))
+             (check-home-page pkg))))
+       "not reachable: 404")))
actual-value: #t
result: PASS

test-name: source-file-name
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:448
source:
+ (test-assert
+   "source-file-name"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (version "3.2.1")
+                      (source
+                        (origin
+                          (method url-fetch)
+                          (uri "http://www.example.com/3.2.1.tar.gz")
+                          (sha256 %null-sha256))))))
+           (check-source-file-name pkg)))
+       "file name should contain the package name")))
actual-value: #t
result: PASS

test-name: source-file-name: v prefix
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:462
source:
+ (test-assert
+   "source-file-name: v prefix"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (version "3.2.1")
+                      (source
+                        (origin
+                          (method url-fetch)
+                          (uri "http://www.example.com/v3.2.1.tar.gz")
+                          (sha256 %null-sha256))))))
+           (check-source-file-name pkg)))
+       "file name should contain the package name")))
actual-value: #t
result: PASS

test-name: source-file-name: bad checkout
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:476
source:
+ (test-assert
+   "source-file-name: bad checkout"
+   (->bool
+     (string-contains
+       (with-warnings
+         (let ((pkg (dummy-package
+                      "x"
+                      (version "3.2.1")
+                      (source
+                        (origin
+                          (method git-fetch)
+                          (uri (git-reference
+                                 (url "http://www.example.com/x.git")
+                                 (commit "0")))
+                          (sha256 %null-sha256))))))
+           (check-source-file-name pkg)))
+       "file name should contain the package name")))
actual-value: #t
result: PASS

test-name: source-file-name: good checkout
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:492
source:
+ (test-assert
+   "source-file-name: good checkout"
+   (not (->bool
+          (string-contains
+            (with-warnings
+              (let ((pkg (dummy-package
+                           "x"
+                           (version "3.2.1")
+                           (source
+                             (origin
+                               (method git-fetch)
+                               (uri (git-reference
+                                      (url "http://git.example.com/x.git")
+                                      (commit "0")))
+                               (file-name (string-append "x-" version))
+                               (sha256 %null-sha256))))))
+                (check-source-file-name pkg)))
+            "file name should contain the package name"))))
actual-value: #t
result: PASS

test-name: source-file-name: valid
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:510
source:
+ (test-assert
+   "source-file-name: valid"
+   (not (->bool
+          (string-contains
+            (with-warnings
+              (let ((pkg (dummy-package
+                           "x"
+                           (version "3.2.1")
+                           (source
+                             (origin
+                               (method url-fetch)
+                               (uri "http://www.example.com/x-3.2.1.tar.gz")
+                               (sha256 %null-sha256))))))
+                (check-source-file-name pkg)))
+            "file name should contain the package name"))))
actual-value: #t
result: PASS

test-name: source: 200
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:526
source:
+ (test-equal
+   "source: 200"
+   ""
+   (with-warnings
+     (with-http-server
+       200
+       %long-string
+       (let ((pkg (package
+                    (inherit (dummy-package "x"))
+                    (source
+                      (origin
+                        (method url-fetch)
+                        (uri %local-url)
+                        (sha256 %null-sha256))))))
+         (check-source pkg)))))
expected-value: 
actual-value: 
result: PASS

test-name: source: 200 but short length
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:539
source:
+ (test-assert
+   "source: 200 but short length"
+   (->bool
+     (string-contains
+       (with-warnings
+         (with-http-server
+           200
+           "This is too small."
+           (let ((pkg (package
+                        (inherit (dummy-package "x"))
+                        (source
+                          (origin
+                            (method url-fetch)
+                            (uri %local-url)
+                            (sha256 %null-sha256))))))
+             (check-source pkg))))
+       "suspiciously small")))
actual-value: #t
result: PASS

test-name: source: 404
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:554
source:
+ (test-assert
+   "source: 404"
+   (->bool
+     (string-contains
+       (with-warnings
+         (with-http-server
+           404
+           %long-string
+           (let ((pkg (package
+                        (inherit (dummy-package "x"))
+                        (source
+                          (origin
+                            (method url-fetch)
+                            (uri %local-url)
+                            (sha256 %null-sha256))))))
+             (check-source pkg))))
+       "not reachable: 404")))
actual-value: #t
result: PASS

test-name: cve
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:568
source:
+ (test-assert
+   "cve"
+   (mock ((guix scripts lint)
+          package-vulnerabilities
+          (const '()))
+         (string-null?
+           (with-warnings
+             (check-vulnerabilities (dummy-package "x"))))))
actual-value: #t
result: PASS

test-name: cve: one vulnerability
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:573
source:
+ (test-assert
+   "cve: one vulnerability"
+   (mock ((guix scripts lint)
+          package-vulnerabilities
+          (lambda (package)
+            (list (make-struct
+                    (@@ (guix cve) <vulnerability>)
+                    0
+                    "CVE-2015-1234"
+                    (list (cons (package-name package)
+                                (package-version package)))))))
+         (string-contains
+           (with-warnings
+             (check-vulnerabilities
+               (dummy-package "pi" (version "3.14"))))
+           "vulnerable to CVE-2015-1234")))
actual-value: 76
result: PASS

test-name: cve: one patched vulnerability
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:585
source:
+ (test-assert
+   "cve: one patched vulnerability"
+   (mock ((guix scripts lint)
+          package-vulnerabilities
+          (lambda (package)
+            (list (make-struct
+                    (@@ (guix cve) <vulnerability>)
+                    0
+                    "CVE-2015-1234"
+                    (list (cons (package-name package)
+                                (package-version package)))))))
+         (string-null?
+           (with-warnings
+             (check-vulnerabilities
+               (dummy-package
+                 "pi"
+                 (version "3.14")
+                 (source
+                   (dummy-origin
+                     (patches (list "/a/b/pi-CVE-2015-1234.patch"))))))))))
actual-value: #t
result: PASS

test-name: cve: patched vulnerability in replacement
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:602
source:
+ (test-assert
+   "cve: patched vulnerability in replacement"
+   (mock ((guix scripts lint)
+          package-vulnerabilities
+          (lambda (package)
+            (list (make-struct
+                    (@@ (guix cve) <vulnerability>)
+                    0
+                    "CVE-2015-1234"
+                    (list (cons (package-name package)
+                                (package-version package)))))))
+         (string-null?
+           (with-warnings
+             (check-vulnerabilities
+               (dummy-package
+                 "pi"
+                 (version "3.14")
+                 (source (dummy-origin))
+                 (replacement
+                   (dummy-package
+                     "pi"
+                     (version "3.14")
+                     (source
+                       (dummy-origin
+                         (patches
+                           (list "/a/b/pi-CVE-2015-1234.patch"))))))))))))
actual-value: #t
result: PASS

test-name: formatting: lonely parentheses
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:621
source:
+ (test-assert
+   "formatting: lonely parentheses"
+   (string-contains
+     (with-warnings
+       (check-formatting
+         (dummy-package "ugly as hell!")))
+     "lonely"))
actual-value: 101
result: PASS

test-name: formatting: tabulation
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:631
source:
+ (test-assert
+   "formatting: tabulation"
+   (string-contains
+     (with-warnings
+       (check-formatting
+         (dummy-package "leave the tab here:\t")))
+     "tabulation"))
actual-value: 82
result: PASS

test-name: formatting: trailing white space
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:637
source:
+ (test-assert
+   "formatting: trailing white space"
+   (string-contains
+     (with-warnings
+       (check-formatting (dummy-package "x")))
+     "trailing white space"))
actual-value: 63
result: PASS

test-name: formatting: long line
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:644
source:
+ (test-assert
+   "formatting: long line"
+   (string-contains
+     (with-warnings
+       (check-formatting (dummy-package "x")))
+     "too long"))
actual-value: 78
result: PASS

test-name: formatting: alright
location: /home/sapientech/Dev/guix/guix_wip/tests/lint.scm:652
source:
+ (test-assert
+   "formatting: alright"
+   (string-null?
+     (with-warnings
+       (check-formatting (dummy-package "x")))))
actual-value: #t
result: PASS

random seed for tests: 1469937910

SKIP: tests/containers
======================

test-name: call-with-container, exit with 0 when there is no error
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:40
source:
+ (test-assert
+   "call-with-container, exit with 0 when there is no error"
+   (zero? (call-with-container
+            '()
+            (const #t)
+            #:namespaces
+            '(user))))
result: SKIP

test-name: call-with-container, user namespace
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:45
source:
+ (test-assert
+   "call-with-container, user namespace"
+   (zero? (call-with-container
+            '()
+            (lambda ()
+              (assert-exit
+                (and (zero? (getuid)) (zero? (getgid)))))
+            #:namespaces
+            '(user))))
result: SKIP

test-name: call-with-container, uts namespace
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:54
source:
+ (test-assert
+   "call-with-container, uts namespace"
+   (zero? (call-with-container
+            '()
+            (lambda ()
+              (sethostname "test-container")
+              (primitive-exit 0))
+            #:namespaces
+            '(user uts))))
result: SKIP

test-name: call-with-container, pid namespace
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:65
source:
+ (test-assert
+   "call-with-container, pid namespace"
+   (zero? (call-with-container
+            '()
+            (lambda ()
+              (match (primitive-fork)
+                     (0 (assert-exit (= 2 (getpid))))
+                     (pid (primitive-exit
+                            (match (waitpid pid)
+                                   ((_ . status)
+                                    (status:exit-val status)))))))
+            #:namespaces
+            '(user pid))))
result: SKIP

test-name: call-with-container, mnt namespace
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:81
source:
+ (test-assert
+   "call-with-container, mnt namespace"
+   (zero? (call-with-container
+            '(("none" device "/testing" "tmpfs" () #f #f))
+            (lambda ()
+              (assert-exit (file-exists? "/testing")))
+            #:namespaces
+            '(user mnt))))
result: SKIP

test-name: call-with-container, mnt namespace, wrong bind mount
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:89
source:
+ (test-equal
+   "call-with-container, mnt namespace, wrong bind mount"
+   `(system-error ,ENOENT)
+   (catch 'system-error
+          (lambda ()
+            (call-with-container
+              '(("/does-not-exist"
+                 device
+                 "/foo"
+                 "none"
+                 (bind-mount)
+                 #f
+                 #f))
+              (const #t)
+              #:namespaces
+              '(user mnt)))
+          (lambda args
+            (list 'system-error (system-error-errno args)))))
result: SKIP

test-name: call-with-container, all namespaces
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:102
source:
+ (test-assert
+   "call-with-container, all namespaces"
+   (zero? (call-with-container
+            '()
+            (lambda () (primitive-exit 0)))))
result: SKIP

test-name: container-excursion
location: /home/sapientech/Dev/guix/guix_wip/tests/containers.scm:109
source:
+ (test-assert
+   "container-excursion"
+   (call-with-temporary-directory
+     (lambda (root)
+       (match (list (pipe) (pipe))
+              (((start-in . start-out) (end-in . end-out))
+               (define (container)
+                 (close end-out)
+                 (close start-in)
+                 (write 'ready start-out)
+                 (close start-out)
+                 (read end-in)
+                 (close end-in))
+               (define (namespaces pid)
+                 (let ((pid (number->string pid)))
+                   (map (lambda (ns)
+                          (readlink (string-append "/proc/" pid "/ns/" ns)))
+                        '("user" "ipc" "uts" "net" "pid" "mnt"))))
+               (let* ((pid (run-container root '() %namespaces 1 container))
+                      (container-namespaces (namespaces pid))
+                      (result
+                        (begin
+                          (close start-out)
+                          (read start-in)
+                          (close start-in)
+                          (container-excursion
+                            pid
+                            (lambda ()
+                              (match (primitive-fork)
+                                     (0
+                                      (assert-exit
+                                        (equal?
+                                          container-namespaces
+                                          (namespaces (getpid)))))
+                                     (fork-pid
+                                       (match (waitpid fork-pid)
+                                              ((_ . status)
+                                               (primitive-exit
+                                                 (status:exit-val
+                                                   status)))))))))))
+                 (close end-in)
+                 (write 'done end-out)
+                 (close end-out)
+                 (waitpid pid)
+                 (zero? result)))))))
result: SKIP


SKIP: tests/pypi
================

test-name: guix-package->pypi-name, old URL style
location: /home/sapientech/Dev/guix/guix_wip/tests/pypi.scm:76
source:
+ (test-equal
+   "guix-package->pypi-name, old URL style"
+   "psutil"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri "https://pypi.io/packages/source/p/psutil/psutil-4.3.0.tar.gz"))))))
expected-value: psutil
actual-value: psutil
result: PASS

test-name: guix-package->pypi-name, new URL style
location: /home/sapientech/Dev/guix/guix_wip/tests/pypi.scm:84
source:
+ (test-equal
+   "guix-package->pypi-name, new URL style"
+   "certbot"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri "https://pypi.python.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
expected-value: certbot
actual-value: certbot
result: PASS

test-name: pypi->guix-package
location: /home/sapientech/Dev/guix/guix_wip/tests/pypi.scm:92
source:
+ (test-assert
+   "pypi->guix-package"
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://pypi.python.org/pypi/foo/json"
+                    (with-output-to-file
+                      file-name
+                      (lambda () (display test-json))))
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (begin
+                      (mkdir "foo-1.0.0")
+                      (with-output-to-file
+                        "foo-1.0.0/requirements.txt"
+                        (lambda () (display test-requirements)))
+                      (system* "tar" "czvf" file-name "foo-1.0.0/")
+                      (delete-file-recursively "foo-1.0.0")
+                      (set! test-source-hash
+                        (call-with-input-file file-name port-sha256))))
+                   ("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    #f)
+                   (_ (error "Unexpected URL: " url)))))
+         (match (pypi->guix-package "foo")
+                (('package
+                  ('name "python-foo")
+                  ('version "1.0.0")
+                  ('source
+                   ('origin
+                    ('method 'url-fetch)
+                    ('uri
+                     (string-append
+                       "https://example.com/foo-"
+                       version
+                       ".tar.gz"))
+                    ('sha256 ('base32 (? string? hash)))))
+                  ('build-system 'python-build-system)
+                  ('inputs
+                   ('quasiquote
+                    (("python-bar" ('unquote 'python-bar))
+                     ("python-baz" ('unquote 'python-baz))
+                     ("python-setuptools"
+                      ('unquote 'python-setuptools)))))
+                  ('home-page "http://example.com")
+                  ('synopsis "summary")
+                  ('description "summary")
+                  ('license 'lgpl2.0))
+                 (string=?
+                   (bytevector->nix-base32-string test-source-hash)
+                   hash))
+                (x (pk 'fail x #f)))))
foo-1.0.0/
foo-1.0.0/requirements.txt
actual-value: #t
result: PASS

test-name: pypi->guix-package, wheels
location: /home/sapientech/Dev/guix/guix_wip/tests/pypi.scm:141
source:
+ (test-assert
+   "pypi->guix-package, wheels"
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://pypi.python.org/pypi/foo/json"
+                    (with-output-to-file
+                      file-name
+                      (lambda () (display test-json))))
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (begin
+                      (mkdir "foo-1.0.0")
+                      (with-output-to-file
+                        "foo-1.0.0/requirements.txt"
+                        (lambda () (display test-requirements)))
+                      (system* "tar" "czvf" file-name "foo-1.0.0/")
+                      (delete-file-recursively "foo-1.0.0")
+                      (set! test-source-hash
+                        (call-with-input-file file-name port-sha256))))
+                   ("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    (begin
+                      (mkdir "foo-1.0.0.dist-info")
+                      (with-output-to-file
+                        "foo-1.0.0.dist-info/metadata.json"
+                        (lambda () (display test-metadata)))
+                      (let ((zip-file (string-append file-name ".zip")))
+                        (system*
+                          "zip"
+                          zip-file
+                          "foo-1.0.0.dist-info/metadata.json")
+                        (rename-file zip-file file-name))
+                      (delete-file-recursively "foo-1.0.0.dist-info")))
+                   (_ (error "Unexpected URL: " url)))))
+         (match (pypi->guix-package "foo")
+                (('package
+                  ('name "python-foo")
+                  ('version "1.0.0")
+                  ('source
+                   ('origin
+                    ('method 'url-fetch)
+                    ('uri
+                     (string-append
+                       "https://example.com/foo-"
+                       version
+                       ".tar.gz"))
+                    ('sha256 ('base32 (? string? hash)))))
+                  ('build-system 'python-build-system)
+                  ('inputs
+                   ('quasiquote
+                    (("python-bar" ('unquote 'python-bar))
+                     ("python-baz" ('unquote 'python-baz))
+                     ("python-setuptools"
+                      ('unquote 'python-setuptools)))))
+                  ('home-page "http://example.com")
+                  ('synopsis "summary")
+                  ('description "summary")
+                  ('license 'lgpl2.0))
+                 (string=?
+                   (bytevector->nix-base32-string test-source-hash)
+                   hash))
+                (x (pk 'fail x #f)))))
result: SKIP

random seed for tests: 1469933106

FAIL: tests/guix-download
=========================

+ guix download --version
guix download (GNU Guix) 0.10.0
Copyright (C) 2016 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ guix download http://does.not/exist
accepted connection from pid 13292, user sapientech

Starting download of /tmp/guix-file.zUVDhl
From http://does.not/exist...

 exist                                               0B/s 00:00 | 0B transferred
 exist                                         320KiB/s 00:00 | 319B transferred
/home/sapientech/Dev/guix/guix_wip/test-tmp/store/hi5hmfl117bri5c79i96fb7ymip4cb43-exist
1ipmbjjgif1f6a77j91s2y989y6sgk3fh4jiycbqqs6v2i827l7s
+ false
./test-env: line 1: 13275 Terminated              "/home/sapientech/Dev/guix/guix_wip/pre-inst-env" "/home/sapientech/Dev/guix/guix_wip/guix-daemon" --disable-chroot --substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL"
FAIL tests/guix-download.sh (exit status: 1)

SKIP: tests/guix-environment-container
======================================

+ set -e
+ guix environment --version
guix environment (GNU Guix) 0.10.0
Copyright (C) 2016 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ guile -c '((@@ (guix scripts environment) assert-container-features))'
error: cannot create container: user namespaces unavailable
error: is your kernel version < 3.10?
+ exit 77
./test-env: line 1: 15698 Terminated              "/home/sapientech/Dev/guix/guix_wip/pre-inst-env" "/home/sapientech/Dev/guix/guix_wip/guix-daemon" --disable-chroot --substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL"
SKIP tests/guix-environment-container.sh (exit status: 77)


--MP_/RfwZ3bl.=e6TtpTaWZdR65C--




Information forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.

Message received at 24108 <at> debbugs.gnu.org:


Received: (at 24108) by debbugs.gnu.org; 31 Jul 2016 00:40:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 30 20:40:51 2016
Received: from localhost ([127.0.0.1]:51876 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bTeoE-0004Sp-Vd
	for submit <at> debbugs.gnu.org; Sat, 30 Jul 2016 20:40:51 -0400
Received: from mail2.openmailbox.org ([62.4.1.33]:41991)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <sapientech@HIDDEN>) id 1bTeoC-0004Sf-Oz
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 20:40:49 -0400
Received: by mail2.openmailbox.org (Postfix, from userid 1001)
 id 725C7109CE7; Sun, 31 Jul 2016 02:40:47 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469925647;
 bh=4+8a6YTFebjhXBt+RPBUBKDYWB7i2A5wJo43iZHwOdc=;
 h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
 b=ghJc92IWKwRY9W7jRPdNN3kRGd76/rFkwlKFIwk/NLZu4fSPXXafArfiQILO2fj3f
 WiTa7JjTfDsPQ+Ln61qqqdpv5T32Re/fxEQEqr0oQtkZ+qTtoMMJin+q1yAFhISbUZ
 kqJqTIUM0AyCXD+fLJHzIRnCa5K8BlMfqiikkwBc=
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on h3
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=NO_RECEIVED,NO_RELAYS,
 T_DKIM_INVALID,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0
Date: Sat, 30 Jul 2016 17:40:27 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469925646;
 bh=4+8a6YTFebjhXBt+RPBUBKDYWB7i2A5wJo43iZHwOdc=;
 h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
 b=Y+nKHMQMt+FJMWu9Rth8k/ZLvo2TcdCoJks/gwTc9cbF886hq6QycX/4ao9hHlTkz
 0x40Q+mBPbKiDc9kD7mUysXnUvDDroZq9YPwZxQqRyV2lUXLkI4YRvSMuYmkMqOXZu
 MXMXWec6PJhLNFlPdkFtriPpyk+5unKlj4f9ZF+o=
From: Dylan Jeffers <sapientech@HIDDEN>
To: ludo@HIDDEN (Ludovic =?UTF-8?B?Q291cnTDqHM=?=)
Subject: Re: bug#24108: guix make tests failure
Message-ID: <20160730174027.0551e855@HIDDEN>
In-Reply-To: <87bn1ebynp.fsf@HIDDEN>
References: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
 <874m77e0ky.fsf@HIDDEN> <20160730104312.2166ffa5@HIDDEN>
 <87bn1ebynp.fsf@HIDDEN>
X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.28; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.0 (--)
X-Debbugs-Envelope-To: 24108
Cc: 24108 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.0 (--)

On Sat, 30 Jul 2016 23:31:54 +0200
ludo@HIDDEN (Ludovic Court=C3=A8s) wrote:

> Dylan Jeffers <sapientech@HIDDEN> skribis:
>=20
> > On Sat, 30 Jul 2016 15:07:25 +0200
> > ludo@HIDDEN (Ludovic Court=C3=A8s) wrote: =20
>=20
> [...]
>=20
> >> > test-name: clone
> >> > location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
> >> > source:
> >> > + (test-assert
> >> > +   "clone"
> >> > +   (match (clone (logior CLONE_NEWUSER SIGCHLD))
> >> > +          (0 (primitive-exit 42))
> >> > +          (pid (and (not (equal?
> >> > +                           (readlink (user-namespace pid))
> >> > +                           (readlink (user-namespace
> >> > (getpid)))))
> >> > +                    (match (waitpid pid)
> >> > +                           ((_ . status) (=3D 42 (status:exit-val
> >> > status)))))))) actual-value: #f
> >> > actual-error:
> >> > + (system-error
> >> > +   "clone"
> >> > +   "~d: ~A"
> >> > +   (268435473 "Operation not permitted")
> >> > +   (1))
> >> > result: FAIL   =20
> >>=20
> >> What does =E2=80=9Cuname -srv=E2=80=9D report on this machine?  It see=
ms this
> >> kernel does not support namespaces.
> >>=20
> >> Thanks,
> >> Ludo=E2=80=99. =20
> >
> > Hi Ludo,
> >
> > Thanks for getting back so quick.
> > Output of uname -srv: Linux 4.6.4-gnu-201607192040-1-grsec #1 SMP
> > PREEMPT Wed Jul 20 15:37:34 UYT 2016 =20
>=20
> These tests are skipped when user namespaces are not supported, as per
> this condition:
>=20
>   (define perform-container-tests?
>     (and (user-namespace-supported?)
>          (unprivileged-user-namespace-supported?)))
>=20
> =E2=80=A6 which is true iff (1) /proc/self/ns/user exists, and (2)
> /proc/sys/kernel/unprivileged_userns_clone does not exist, or it
> exists and contains =E2=80=9C1=E2=80=9D.
>=20
> Do these files exist on this system?

(1) /proc/self/ns/user exists, and
(2) /proc/sys/kernel/unpriviledged_userns_clone D.N.E

Ideas on the best approach to allow the build to succeed?

I also have had issues with qemu, so it makes sense that vm/container
stuff both have issues. I have a feeling its due to the
grsec kernel.
https://wiki.archlinux.org/index.php/Grsecurity_Patchset talks a
bit about userspace/namespace hardening + issues with xen and
virtbox. Going to reboot with an lts kernel and try again. Will post
update...

Best,
Dylan

Best,
Dylan




Information forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.

Message received at 24108 <at> debbugs.gnu.org:


Received: (at 24108) by debbugs.gnu.org; 30 Jul 2016 21:32:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 30 17:32:10 2016
Received: from localhost ([127.0.0.1]:51863 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bTbre-0000Dh-AP
	for submit <at> debbugs.gnu.org; Sat, 30 Jul 2016 17:32:10 -0400
Received: from eggs.gnu.org ([208.118.235.92]:58481)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1bTbrc-0000DU-Kk
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 17:32:09 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1bTbrT-00064t-Ez
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 17:32:03 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50138)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1bTbrT-00064p-Br; Sat, 30 Jul 2016 17:31:59 -0400
Received: from reverse-83.fdn.fr ([80.67.176.83]:60278 helo=pluto)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1bTbrQ-0007gf-TN; Sat, 30 Jul 2016 17:31:57 -0400
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Dylan Jeffers <sapientech@HIDDEN>
Subject: Re: bug#24108: guix make tests failure
References: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
 <874m77e0ky.fsf@HIDDEN> <20160730104312.2166ffa5@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 13 Thermidor an 224 de la =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-unknown-linux-gnu
Date: Sat, 30 Jul 2016 23:31:54 +0200
In-Reply-To: <20160730104312.2166ffa5@HIDDEN> (Dylan Jeffers's
 message of "Sat, 30 Jul 2016 10:43:12 -0700")
Message-ID: <87bn1ebynp.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -6.3 (------)
X-Debbugs-Envelope-To: 24108
Cc: 24108 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.3 (------)

Dylan Jeffers <sapientech@HIDDEN> skribis:

> On Sat, 30 Jul 2016 15:07:25 +0200
> ludo@HIDDEN (Ludovic Court=C3=A8s) wrote:

[...]

>> > test-name: clone
>> > location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
>> > source:
>> > + (test-assert
>> > +   "clone"
>> > +   (match (clone (logior CLONE_NEWUSER SIGCHLD))
>> > +          (0 (primitive-exit 42))
>> > +          (pid (and (not (equal?
>> > +                           (readlink (user-namespace pid))
>> > +                           (readlink (user-namespace (getpid)))))
>> > +                    (match (waitpid pid)
>> > +                           ((_ . status) (=3D 42 (status:exit-val
>> > status)))))))) actual-value: #f
>> > actual-error:
>> > + (system-error
>> > +   "clone"
>> > +   "~d: ~A"
>> > +   (268435473 "Operation not permitted")
>> > +   (1))
>> > result: FAIL=20=20
>>=20
>> What does =E2=80=9Cuname -srv=E2=80=9D report on this machine?  It seems=
 this kernel
>> does not support namespaces.
>>=20
>> Thanks,
>> Ludo=E2=80=99.
>
> Hi Ludo,
>
> Thanks for getting back so quick.
> Output of uname -srv: Linux 4.6.4-gnu-201607192040-1-grsec #1 SMP
> PREEMPT Wed Jul 20 15:37:34 UYT 2016

These tests are skipped when user namespaces are not supported, as per
this condition:

  (define perform-container-tests?
    (and (user-namespace-supported?)
         (unprivileged-user-namespace-supported?)))

=E2=80=A6 which is true iff (1) /proc/self/ns/user exists, and (2)
/proc/sys/kernel/unprivileged_userns_clone does not exist, or it exists
and contains =E2=80=9C1=E2=80=9D.

Do these files exist on this system?

Maybe we should just ignore EPERM from (clone CLONE_NEWUSER) but it=E2=80=
=99s
annoying to annotate every single test that uses it.

From a user viewpoint, this test failure simply mean that you cannot use
the =E2=80=98--container=E2=80=99 option =E2=80=98guix environment=E2=80=99=
 on your system.

Thanks,
Ludo=E2=80=99.




Information forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.

Message received at 24108 <at> debbugs.gnu.org:


Received: (at 24108) by debbugs.gnu.org; 30 Jul 2016 17:44:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 30 13:44:18 2016
Received: from localhost ([127.0.0.1]:51665 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bTYJ8-0003Gx-8c
	for submit <at> debbugs.gnu.org; Sat, 30 Jul 2016 13:44:18 -0400
Received: from mail.openmailbox.org ([62.4.1.34]:41197)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <sapientech@HIDDEN>) id 1bTYJ6-0003Go-0e
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 13:44:17 -0400
Received: by mail.openmailbox.org (Postfix, from userid 20002)
 id 7ED54206572; Sat, 30 Jul 2016 19:43:34 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469900614;
 bh=PRKGjXWPebuQ/BBXgGMnsJnahwyHWDYsuQ+JxRTMZ98=;
 h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
 b=T0eSSn5OGD6DCbQyPJE5qQE1qxqGx2TiFKwD3f3GuBWkfnc33Qsdcge8TIht2Gewm
 1oZI2gjSswAgFayqUkyd0Xq1Th1uFVPKMFJqiaFdsqH8v9NmBSV+irNsDe1WTQJdcO
 7eOI2vORYaYki4vBMNQk0skwOcRPBDPBtc0PGM64=
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on h3
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=NO_RECEIVED,NO_RELAYS,
 T_DKIM_INVALID,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0
Date: Sat, 30 Jul 2016 10:43:12 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469900612;
 bh=PRKGjXWPebuQ/BBXgGMnsJnahwyHWDYsuQ+JxRTMZ98=;
 h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
 b=HtgacKJ68gOgcqQV38/69E9rh54xsmT6wJlMMnThkCU6OecbOUA2Y9xGgA3F0K+tV
 Nfe7GiwOSSgqxS3FwkzEK4d2LXAfT9MXKUBe/5WiGfDxuDCPA4YlagvOMwb7iPm/3o
 e5g2UAiNwGnv26uOQ2aqdrlJdsEZmco4uxUmnGXE=
From: Dylan Jeffers <sapientech@HIDDEN>
To: ludo@HIDDEN (Ludovic =?UTF-8?B?Q291cnTDqHM=?=)
Subject: Re: bug#24108: guix make tests failure
Message-ID: <20160730104312.2166ffa5@HIDDEN>
In-Reply-To: <874m77e0ky.fsf@HIDDEN>
References: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
 <874m77e0ky.fsf@HIDDEN>
X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.28; x86_64-unknown-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.0 (--)
X-Debbugs-Envelope-To: 24108
Cc: 24108 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.0 (--)

On Sat, 30 Jul 2016 15:07:25 +0200
ludo@HIDDEN (Ludovic Court=C3=A8s) wrote:

> Hi,
>=20
> sapientech@HIDDEN skribis:
>=20
> > test-name: substitute query, alternating URLs
> > location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:456 =20
>=20
> [...]
>=20
> > substitute: guix/ui.scm:1209:6: In procedure run-guix-command:
> > substitute: guix/ui.scm:1209:6: unmatched line "<html><head><meta
> > http-equiv=3D\"refresh\"
> > content=3D\"0;url=3Dhttp://www.dnsrsearch.com/index.php?origURL=3Dhttp:=
//does-not-exist/nix-cache-info&bc=3D\"/></head><body><script
> > type=3D\"text/javascript\">window.location=3D\"http://www.dnsrsearch.co=
m/index.php?origURL=3D\"+escape(window.location)+\"&r=3D\"+escape(document.=
referrer)+\"&bc=3D\";</script></body></html>" =20
>=20
> It seems there=E2=80=99s a DNS hijacker in place where domain names such =
as
> =E2=80=9Cdoes-not-exist=E2=80=9D (used in this and other tests) are resol=
ved to some
> ISP-specific host or something.  This explains this and more of the
> other test failures you are seeing; this is unsupported.
>=20
> > test-name: clone
> > location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
> > source:
> > + (test-assert
> > +   "clone"
> > +   (match (clone (logior CLONE_NEWUSER SIGCHLD))
> > +          (0 (primitive-exit 42))
> > +          (pid (and (not (equal?
> > +                           (readlink (user-namespace pid))
> > +                           (readlink (user-namespace (getpid)))))
> > +                    (match (waitpid pid)
> > +                           ((_ . status) (=3D 42 (status:exit-val
> > status)))))))) actual-value: #f
> > actual-error:
> > + (system-error
> > +   "clone"
> > +   "~d: ~A"
> > +   (268435473 "Operation not permitted")
> > +   (1))
> > result: FAIL =20
>=20
> What does =E2=80=9Cuname -srv=E2=80=9D report on this machine?  It seems =
this kernel
> does not support namespaces.
>=20
> Thanks,
> Ludo=E2=80=99.

Hi Ludo,

Thanks for getting back so quick.
Output of uname -srv: Linux 4.6.4-gnu-201607192040-1-grsec #1 SMP
PREEMPT Wed Jul 20 15:37:34 UYT 2016
It is a security enhanced kernel, so that may be the issue. Let me know
if there is a workaround for this kernel, or whether i should fall-back
to an lts, or standard kernel.

Best,
Dylan




Information forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.

Message received at 24108 <at> debbugs.gnu.org:


Received: (at 24108) by debbugs.gnu.org; 30 Jul 2016 13:07:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 30 09:07:40 2016
Received: from localhost ([127.0.0.1]:51256 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bTTzQ-0005PR-Fk
	for submit <at> debbugs.gnu.org; Sat, 30 Jul 2016 09:07:40 -0400
Received: from eggs.gnu.org ([208.118.235.92]:40081)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1bTTzO-0005PE-L7
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 09:07:40 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1bTTzE-00040N-SO
 for 24108 <at> debbugs.gnu.org; Sat, 30 Jul 2016 09:07:33 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44777)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1bTTzE-00040J-OX; Sat, 30 Jul 2016 09:07:28 -0400
Received: from reverse-83.fdn.fr ([80.67.176.83]:59926 helo=pluto)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1bTTzE-0005wI-1r; Sat, 30 Jul 2016 09:07:28 -0400
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: sapientech@HIDDEN
Subject: Re: bug#24108: guix make tests failure
References: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 13 Thermidor an 224 de la =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-unknown-linux-gnu
Date: Sat, 30 Jul 2016 15:07:25 +0200
In-Reply-To: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
 (sapientech@HIDDEN's message of "Fri, 29 Jul 2016 19:26:10
 -0400")
Message-ID: <874m77e0ky.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -6.3 (------)
X-Debbugs-Envelope-To: 24108
Cc: 24108 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.3 (------)

Hi,

sapientech@HIDDEN skribis:

> test-name: substitute query, alternating URLs
> location: /home/sapientech/Dev/guix/guix_wip/tests/store.scm:456

[...]

> substitute: guix/ui.scm:1209:6: In procedure run-guix-command:
> substitute: guix/ui.scm:1209:6: unmatched line "<html><head><meta http-eq=
uiv=3D\"refresh\" content=3D\"0;url=3Dhttp://www.dnsrsearch.com/index.php?o=
rigURL=3Dhttp://does-not-exist/nix-cache-info&bc=3D\"/></head><body><script=
 type=3D\"text/javascript\">window.location=3D\"http://www.dnsrsearch.com/i=
ndex.php?origURL=3D\"+escape(window.location)+\"&r=3D\"+escape(document.ref=
errer)+\"&bc=3D\";</script></body></html>"

It seems there=E2=80=99s a DNS hijacker in place where domain names such as
=E2=80=9Cdoes-not-exist=E2=80=9D (used in this and other tests) are resolve=
d to some
ISP-specific host or something.  This explains this and more of the
other test failures you are seeing; this is unsupported.

> test-name: clone
> location: /home/sapientech/Dev/guix/guix_wip/tests/syscalls.scm:109
> source:
> + (test-assert
> +   "clone"
> +   (match (clone (logior CLONE_NEWUSER SIGCHLD))
> +          (0 (primitive-exit 42))
> +          (pid (and (not (equal?
> +                           (readlink (user-namespace pid))
> +                           (readlink (user-namespace (getpid)))))
> +                    (match (waitpid pid)
> +                           ((_ . status) (=3D 42 (status:exit-val status=
))))))))
> actual-value: #f
> actual-error:
> + (system-error
> +   "clone"
> +   "~d: ~A"
> +   (268435473 "Operation not permitted")
> +   (1))
> result: FAIL

What does =E2=80=9Cuname -srv=E2=80=9D report on this machine?  It seems th=
is kernel
does not support namespaces.

Thanks,
Ludo=E2=80=99.




Information forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 29 Jul 2016 23:50:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 29 19:50:48 2016
Received: from localhost ([127.0.0.1]:51012 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bTHYG-0000dN-DK
	for submit <at> debbugs.gnu.org; Fri, 29 Jul 2016 19:50:48 -0400
Received: from eggs.gnu.org ([208.118.235.92]:38264)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <sapientech@HIDDEN>) id 1bTHBX-00006t-BK
 for submit <at> debbugs.gnu.org; Fri, 29 Jul 2016 19:27:19 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <sapientech@HIDDEN>) id 1bTHBB-0004gV-HS
 for submit <at> debbugs.gnu.org; Fri, 29 Jul 2016 19:27:14 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID,
 T_FILL_THIS_FORM_SHORT autolearn=disabled version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:60985)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <sapientech@HIDDEN>) id 1bTHBB-0004ff-AZ
 for submit <at> debbugs.gnu.org; Fri, 29 Jul 2016 19:26:57 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:57321)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <sapientech@HIDDEN>) id 1bTHAu-0000fT-Jn
 for bug-guix@HIDDEN; Fri, 29 Jul 2016 19:26:56 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <sapientech@HIDDEN>) id 1bTHAd-0004cG-RN
 for bug-guix@HIDDEN; Fri, 29 Jul 2016 19:26:39 -0400
Received: from mail2.openmailbox.org ([62.4.1.33]:59341)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <sapientech@HIDDEN>) id 1bTHAc-0004bb-Ll
 for bug-guix@HIDDEN; Fri, 29 Jul 2016 19:26:23 -0400
Received: by mail2.openmailbox.org (Postfix, from userid 1001)
 id C5DA2108E46; Sat, 30 Jul 2016 01:26:20 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=openmailbox.org;
 s=openmailbox; t=1469834780;
 bh=HWV6RHDsgrbXfJQwxQAL1/U9f8BM4ESoX6sZt2nWd0w=;
 h=Date:From:To:Subject:From;
 b=Jgg1Zf6EOkOGvqg067ERLLsjaM/hmR5wdgfrEEEeV8gBdkMwkdN+Jy1UtVJaohYg7
 sNA7GvEKNnzdGLuuWIr5yjPEEosff8FaTZhlRW/EuNWplhARXDEFfHlc7WFOSoFTXw
 zOmhb73gw4O1sBtFABg64p7YJP/pEO/LrWueQvWU=
Received: from www.openmailbox.org (unknown [10.91.130.51])
 by mail2.openmailbox.org (Postfix) with ESMTP id B5885109F24
 for <bug-guix@HIDDEN>; Sat, 30 Jul 2016 01:26:10 +0200 (CEST)
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="=_e9a6df70a27b00c7c1a80573c06d6b2d"
Date: Fri, 29 Jul 2016 19:26:10 -0400
From: sapientech@HIDDEN
To: bug-guix@HIDDEN
Subject: guix make tests failure
Message-ID: <4c03321977ef605cc34a23986d83ce47@HIDDEN>
X-Sender: sapientech@HIDDEN
User-Agent: Roundcube Webmail/1.0.6
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Fri, 29 Jul 2016 19:50:46 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--=_e9a6df70a27b00c7c1a80573c06d6b2d
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
 format=flowed

Hi all,

Attached is the output log of `make tests`. Commands leading up to make 
tests:

$ guix environment guix --ad-hoc git vim
$ ./bootstrap
$ ./configure
$ make tests
--=_e9a6df70a27b00c7c1a80573c06d6b2d
Content-Transfer-Encoding: base64
Content-Type: text/plain;
 name=config.log
Content-Disposition: attachment;
 filename=config.log;
 size=46318

VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hp
bGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2Vz
IGEgbWlzdGFrZS4KCkl0IHdhcyBjcmVhdGVkIGJ5IEdOVSBHdWl4IGNvbmZpZ3VyZSAwLjEwLjAs
IHdoaWNoIHdhcwpnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNv
bW1hbmQgbGluZSB3YXMKCiAgJCAuL2NvbmZpZ3VyZSAKCiMjIC0tLS0tLS0tLSAjIwojIyBQbGF0
Zm9ybS4gIyMKIyMgLS0tLS0tLS0tICMjCgpob3N0bmFtZSA9IGZyZWV0b3AKdW5hbWUgLW0gPSB4
ODZfNjQKdW5hbWUgLXIgPSA0LjYuNC1nbnUtMjAxNjA3MTkyMDQwLTEtZ3JzZWMKdW5hbWUgLXMg
PSBMaW51eAp1bmFtZSAtdiA9ICMxIFNNUCBQUkVFTVBUIFdlZCBKdWwgMjAgMTU6Mzc6MzQgVVlU
IDIwMTYKCi91c3IvYmluL3VuYW1lIC1wID0gdW5rbm93bgovYmluL3VuYW1lIC1YICAgICA9IHVu
a25vd24KCi9iaW4vYXJjaCAgICAgICAgICAgICAgPSB1bmtub3duCi91c3IvYmluL2FyY2ggLWsg
ICAgICAgPSB1bmtub3duCi91c3IvY29udmV4L2dldHN5c2luZm8gPSB1bmtub3duCi91c3IvYmlu
L2hvc3RpbmZvICAgICAgPSB1bmtub3duCi9iaW4vbWFjaGluZSAgICAgICAgICAgPSB1bmtub3du
Ci91c3IvYmluL29zbGV2ZWwgICAgICAgPSB1bmtub3duCi9iaW4vdW5pdmVyc2UgICAgICAgICAg
PSB1bmtub3duCgpQQVRIOiAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgw
cmg3LXByb2ZpbGUvYmluClBBVEg6IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYz
cjM5eDByaDctcHJvZmlsZS9zYmluClBBVEg6IC91c3IvbG9jYWwvc2JpbgpQQVRIOiAvdXNyL2xv
Y2FsL2JpbgpQQVRIOiAvdXNyL2JpbgpQQVRIOiAvdXNyL2xpYi9qdm0vZGVmYXVsdC9iaW4KUEFU
SDogL3Vzci9iaW4vc2l0ZV9wZXJsClBBVEg6IC91c3IvYmluL3ZlbmRvcl9wZXJsClBBVEg6IC91
c3IvYmluL2NvcmVfcGVybApQQVRIOiAvaG9tZS9zYXBpZW50ZWNoLy5ndWl4LXByb2ZpbGUvYmlu
ClBBVEg6IC9ob21lL3NhcGllbnRlY2gvLmd1aXgtcHJvZmlsZS9zYmluCgoKIyMgLS0tLS0tLS0t
LS0gIyMKIyMgQ29yZSB0ZXN0cy4gIyMKIyMgLS0tLS0tLS0tLS0gIyMKCmNvbmZpZ3VyZToyNTc0
OiBjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsCmNvbmZpZ3VyZToyNjQyOiBy
ZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmls
ZS9iaW4vaW5zdGFsbCAtYwpjb25maWd1cmU6MjY1MzogY2hlY2tpbmcgd2hldGhlciBidWlsZCBl
bnZpcm9ubWVudCBpcyBzYW5lCmNvbmZpZ3VyZToyNzA4OiByZXN1bHQ6IHllcwpjb25maWd1cmU6
Mjg1OTogY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAKY29uZmlndXJlOjI4OTg6
IHJlc3VsdDogL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9m
aWxlL2Jpbi9ta2RpciAtcApjb25maWd1cmU6MjkwNTogY2hlY2tpbmcgZm9yIGdhd2sKY29uZmln
dXJlOjI5MjE6IGZvdW5kIC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDBy
aDctcHJvZmlsZS9iaW4vZ2F3awpjb25maWd1cmU6MjkzMjogcmVzdWx0OiBnYXdrCmNvbmZpZ3Vy
ZToyOTQzOiBjaGVja2luZyB3aGV0aGVyIG1ha2Ugc2V0cyAkKE1BS0UpCmNvbmZpZ3VyZToyOTY1
OiByZXN1bHQ6IHllcwpjb25maWd1cmU6Mjk5NDogY2hlY2tpbmcgd2hldGhlciBtYWtlIHN1cHBv
cnRzIG5lc3RlZCB2YXJpYWJsZXMKY29uZmlndXJlOjMwMTE6IHJlc3VsdDogeWVzCmNvbmZpZ3Vy
ZTozMTUwOiBjaGVja2luZyB3aGV0aGVyIG1ha2Ugc3VwcG9ydHMgbmVzdGVkIHZhcmlhYmxlcwpj
b25maWd1cmU6MzE2NzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjMxOTQ6IGNoZWNraW5nIGZvciBz
dHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgbWFrZQpjb25maWd1cmU6MzIyMjogcmVzdWx0OiBHTlUK
Y29uZmlndXJlOjMyOTM6IGNoZWNraW5nIGZvciBnY2MKY29uZmlndXJlOjMzMDk6IGZvdW5kIC9n
bnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ2Nj
CmNvbmZpZ3VyZTozMzIwOiByZXN1bHQ6IGdjYwpjb25maWd1cmU6MzU0OTogY2hlY2tpbmcgZm9y
IEMgY29tcGlsZXIgdmVyc2lvbgpjb25maWd1cmU6MzU1ODogZ2NjIC0tdmVyc2lvbiA+JjUKZ2Nj
IChHQ0MpIDQuOS4zCkNvcHlyaWdodCAoQykgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBj
b25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCgpjb25maWd1cmU6MzU2
OTogJD8gPSAwCmNvbmZpZ3VyZTozNTU4OiBnY2MgLXYgPiY1ClVzaW5nIGJ1aWx0LWluIHNwZWNz
LgpDT0xMRUNUX0dDQz1nY2MKQ09MTEVDVF9MVE9fV1JBUFBFUj0vZ251L3N0b3JlL3NqdmNpcnJp
MmJnN3E1aGxya2F5d2hteGxsaWswY2Z4LWdjYy00LjkuMy9saWJleGVjL2djYy94ODZfNjQtdW5r
bm93bi1saW51eC1nbnUvNC45LjMvbHRvLXdyYXBwZXIKVGFyZ2V0OiB4ODZfNjQtdW5rbm93bi1s
aW51eC1nbnUKQ29uZmlndXJlZCB3aXRoOiAKVGhyZWFkIG1vZGVsOiBwb3NpeApnY2MgdmVyc2lv
biA0LjkuMyAoR0NDKSAKY29uZmlndXJlOjM1Njk6ICQ/ID0gMApjb25maWd1cmU6MzU1ODogZ2Nj
IC1WID4mNQpnY2M6IGVycm9yOiB1bnJlY29nbml6ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiAnLVYn
CmdjYzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZpbGVzCmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQu
CmNvbmZpZ3VyZTozNTY5OiAkPyA9IDEKY29uZmlndXJlOjM1NTg6IGdjYyAtcXZlcnNpb24gPiY1
CmdjYzogZXJyb3I6IHVucmVjb2duaXplZCBjb21tYW5kIGxpbmUgb3B0aW9uICctcXZlcnNpb24n
CmdjYzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZpbGVzCmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQu
CmNvbmZpZ3VyZTozNTY5OiAkPyA9IDEKY29uZmlndXJlOjM1ODk6IGNoZWNraW5nIHdoZXRoZXIg
dGhlIEMgY29tcGlsZXIgd29ya3MKY29uZmlndXJlOjM2MTE6IGdjYyAgICBjb25mdGVzdC5jICA+
JjUKY29uZmlndXJlOjM2MTU6ICQ/ID0gMApjb25maWd1cmU6MzY2MzogcmVzdWx0OiB5ZXMKY29u
ZmlndXJlOjM2NjY6IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUg
bmFtZQpjb25maWd1cmU6MzY2ODogcmVzdWx0OiBhLm91dApjb25maWd1cmU6MzY3NDogY2hlY2tp
bmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcwpjb25maWd1cmU6MzY4MTogZ2NjIC1vIGNvbmZ0
ZXN0ICAgIGNvbmZ0ZXN0LmMgID4mNQpjb25maWd1cmU6MzY4NTogJD8gPSAwCmNvbmZpZ3VyZToz
NzA3OiByZXN1bHQ6IApjb25maWd1cmU6MzcyOTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jv
c3MgY29tcGlsaW5nCmNvbmZpZ3VyZTozNzM3OiBnY2MgLW8gY29uZnRlc3QgICAgY29uZnRlc3Qu
YyAgPiY1CmNvbmZpZ3VyZTozNzQxOiAkPyA9IDAKY29uZmlndXJlOjM3NDg6IC4vY29uZnRlc3QK
Y29uZmlndXJlOjM3NTI6ICQ/ID0gMApjb25maWd1cmU6Mzc2NzogcmVzdWx0OiBubwpjb25maWd1
cmU6Mzc3MjogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMKY29uZmlndXJlOjM3
OTQ6IGdjYyAtYyAgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZTozNzk4OiAkPyA9IDAKY29uZmln
dXJlOjM4MTk6IHJlc3VsdDogbwpjb25maWd1cmU6MzgyMzogY2hlY2tpbmcgd2hldGhlciB3ZSBh
cmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyCmNvbmZpZ3VyZTozODQyOiBnY2MgLWMgICBjb25m
dGVzdC5jID4mNQpjb25maWd1cmU6Mzg0MjogJD8gPSAwCmNvbmZpZ3VyZTozODUxOiByZXN1bHQ6
IHllcwpjb25maWd1cmU6Mzg2MDogY2hlY2tpbmcgd2hldGhlciBnY2MgYWNjZXB0cyAtZwpjb25m
aWd1cmU6Mzg4MDogZ2NjIC1jIC1nICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6Mzg4MDogJD8g
PSAwCmNvbmZpZ3VyZTozOTIxOiByZXN1bHQ6IHllcwpjb25maWd1cmU6MzkzODogY2hlY2tpbmcg
Zm9yIGdjYyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkKY29uZmlndXJlOjQwMDE6IGdjYyAgLWMg
LWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6NDAwMTogJD8gPSAwCmNvbmZpZ3VyZTo0
MDE0OiByZXN1bHQ6IG5vbmUgbmVlZGVkCmNvbmZpZ3VyZTo0MDM5OiBjaGVja2luZyB3aGV0aGVy
IGdjYyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIKY29uZmlndXJlOjQwNjE6IGdjYyAt
YyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Mi5vCmNvbmZpZ3VyZTo0MDY0OiAkPyA9IDAKY29uZmln
dXJlOjQwNjE6IGdjYyAtYyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Mi5vCmNvbmZpZ3VyZTo0MDY0
OiAkPyA9IDAKY29uZmlndXJlOjQwNzY6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo0MDk1OiBjaGVj
a2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mIGdjYwpjb25maWd1cmU6NDIwNjogcmVzdWx0OiBnY2Mz
CmNvbmZpZ3VyZTo0MjI3OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvcgpj
b25maWd1cmU6NDI1ODogZ2NjIC1FICBjb25mdGVzdC5jCmNvbmZpZ3VyZTo0MjU4OiAkPyA9IDAK
Y29uZmlndXJlOjQyNzI6IGdjYyAtRSAgY29uZnRlc3QuYwpjb25mdGVzdC5jOjExOjI4OiBmYXRh
bCBlcnJvcjogYWNfbm9uZXhpc3RlbnQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQogI2lu
Y2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCmNv
bXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3VyZTo0MjcyOiAkPyA9IDEKY29uZmlndXJlOiBm
YWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9O
QU1FICJHTlUgR3VpeCIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiZ3VpeCIKfCAjZGVmaW5l
IFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4wIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIkdOVSBH
dWl4IDAuMTAuMCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJidWctZ3VpeEBnbnUub3Jn
Igp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ndWl4
LyIKfCAjZGVmaW5lIFBBQ0tBR0UgImd1aXgiCnwgI2RlZmluZSBWRVJTSU9OICIwLjEwLjAiCnwg
LyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgpjb25m
aWd1cmU6NDI5NzogcmVzdWx0OiBnY2MgLUUKY29uZmlndXJlOjQzMTc6IGdjYyAtRSAgY29uZnRl
c3QuYwpjb25maWd1cmU6NDMxNzogJD8gPSAwCmNvbmZpZ3VyZTo0MzMxOiBnY2MgLUUgIGNvbmZ0
ZXN0LmMKY29uZnRlc3QuYzoxMToyODogZmF0YWwgZXJyb3I6IGFjX25vbmV4aXN0ZW50Lmg6IE5v
IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKICNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXgpjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgpjb25maWd1
cmU6NDMzMTogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZk
ZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiR05VIEd1aXgiCnwgI2RlZmluZSBQQUNL
QUdFX1RBUk5BTUUgImd1aXgiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjAuMTAuMCIKfCAj
ZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHTlUgR3VpeCAwLjEwLjAiCnwgI2RlZmluZSBQQUNLQUdF
X0JVR1JFUE9SVCAiYnVnLWd1aXhAZ251Lm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICJodHRw
Oi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ3VpeC8iCnwgI2RlZmluZSBQQUNLQUdFICJndWl4Igp8
ICNkZWZpbmUgVkVSU0lPTiAiMC4xMC4wIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5j
bHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KY29uZmlndXJlOjQzNjA6IGNoZWNraW5nIGZvciBncmVw
IHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZQpjb25maWd1cmU6NDQxODogcmVzdWx0OiAv
Z251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2dy
ZXAKY29uZmlndXJlOjQ0MjM6IGNoZWNraW5nIGZvciBlZ3JlcApjb25maWd1cmU6NDQ4NTogcmVz
dWx0OiAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUv
YmluL2dyZXAgLUUKY29uZmlndXJlOjQ0OTA6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZp
bGVzCmNvbmZpZ3VyZTo0NTEwOiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1
cmU6NDUxMDogJD8gPSAwCmNvbmZpZ3VyZTo0NTgzOiBnY2MgLW8gY29uZnRlc3QgLWcgLU8yICAg
Y29uZnRlc3QuYyAgPiY1CmNvbmZpZ3VyZTo0NTgzOiAkPyA9IDAKY29uZmlndXJlOjQ1ODM6IC4v
Y29uZnRlc3QKY29uZmlndXJlOjQ1ODM6ICQ/ID0gMApjb25maWd1cmU6NDU5NDogcmVzdWx0OiB5
ZXMKY29uZmlndXJlOjQ2MDc6IGNoZWNraW5nIGZvciBzeXMvdHlwZXMuaApjb25maWd1cmU6NDYw
NzogZ2NjIC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjQ2MDc6ICQ/ID0gMApj
b25maWd1cmU6NDYwNzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQ2MDc6IGNoZWNraW5nIGZvciBz
eXMvc3RhdC5oCmNvbmZpZ3VyZTo0NjA3OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpj
b25maWd1cmU6NDYwNzogJD8gPSAwCmNvbmZpZ3VyZTo0NjA3OiByZXN1bHQ6IHllcwpjb25maWd1
cmU6NDYwNzogY2hlY2tpbmcgZm9yIHN0ZGxpYi5oCmNvbmZpZ3VyZTo0NjA3OiBnY2MgLWMgLWcg
LU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6NDYwNzogJD8gPSAwCmNvbmZpZ3VyZTo0NjA3
OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NDYwNzogY2hlY2tpbmcgZm9yIHN0cmluZy5oCmNvbmZp
Z3VyZTo0NjA3OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6NDYwNzog
JD8gPSAwCmNvbmZpZ3VyZTo0NjA3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NDYwNzogY2hlY2tp
bmcgZm9yIG1lbW9yeS5oCmNvbmZpZ3VyZTo0NjA3OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5j
ID4mNQpjb25maWd1cmU6NDYwNzogJD8gPSAwCmNvbmZpZ3VyZTo0NjA3OiByZXN1bHQ6IHllcwpj
b25maWd1cmU6NDYwNzogY2hlY2tpbmcgZm9yIHN0cmluZ3MuaApjb25maWd1cmU6NDYwNzogZ2Nj
IC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjQ2MDc6ICQ/ID0gMApjb25maWd1
cmU6NDYwNzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQ2MDc6IGNoZWNraW5nIGZvciBpbnR0eXBl
cy5oCmNvbmZpZ3VyZTo0NjA3OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1
cmU6NDYwNzogJD8gPSAwCmNvbmZpZ3VyZTo0NjA3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NDYw
NzogY2hlY2tpbmcgZm9yIHN0ZGludC5oCmNvbmZpZ3VyZTo0NjA3OiBnY2MgLWMgLWcgLU8yICBj
b25mdGVzdC5jID4mNQpjb25maWd1cmU6NDYwNzogJD8gPSAwCmNvbmZpZ3VyZTo0NjA3OiByZXN1
bHQ6IHllcwpjb25maWd1cmU6NDYwNzogY2hlY2tpbmcgZm9yIHVuaXN0ZC5oCmNvbmZpZ3VyZTo0
NjA3OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6NDYwNzogJD8gPSAw
CmNvbmZpZ3VyZTo0NjA3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NDYyMDogY2hlY2tpbmcgbWlu
aXgvY29uZmlnLmggdXNhYmlsaXR5CmNvbmZpZ3VyZTo0NjIwOiBnY2MgLWMgLWcgLU8yICBjb25m
dGVzdC5jID4mNQpjb25mdGVzdC5jOjU0OjI2OiBmYXRhbCBlcnJvcjogbWluaXgvY29uZmlnLmg6
IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKICNpbmNsdWRlIDxtaW5peC9jb25maWcuaD4KICAg
ICAgICAgICAgICAgICAgICAgICAgICBeCmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3Vy
ZTo0NjIwOiAkPyA9IDEKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRl
ZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJHTlUgR3VpeCIKfCAjZGVmaW5lIFBBQ0tB
R0VfVEFSTkFNRSAiZ3VpeCIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4wIgp8ICNk
ZWZpbmUgUEFDS0FHRV9TVFJJTkcgIkdOVSBHdWl4IDAuMTAuMCIKfCAjZGVmaW5lIFBBQ0tBR0Vf
QlVHUkVQT1JUICJidWctZ3VpeEBnbnUub3JnIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgImh0dHA6
Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ndWl4LyIKfCAjZGVmaW5lIFBBQ0tBR0UgImd1aXgiCnwg
I2RlZmluZSBWRVJTSU9OICIwLjEwLjAiCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZp
bmUgSEFWRV9TWVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8ICNkZWZp
bmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVmaW5lIEhB
VkVfTUVNT1JZX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUgSEFWRV9J
TlRUWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFWRV9VTklT
VERfSCAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxzdGRpby5oPgp8ICNp
ZmRlZiBIQVZFX1NZU19UWVBFU19ICnwgIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KfCAjZW5kaWYK
fCAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICnwgIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgp8ICNlbmRp
Zgp8ICNpZmRlZiBTVERDX0hFQURFUlMKfCAjIGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgaW5jbHVk
ZSA8c3RkZGVmLmg+CnwgI2Vsc2UKfCAjIGlmZGVmIEhBVkVfU1RETElCX0gKfCAjICBpbmNsdWRl
IDxzdGRsaWIuaD4KfCAjIGVuZGlmCnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RSSU5HX0gKfCAj
IGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKfCAjICBp
bmNsdWRlIDxtZW1vcnkuaD4KfCAjIGVuZGlmCnwgIyBpbmNsdWRlIDxzdHJpbmcuaD4KfCAjZW5k
aWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdTX0gKfCAjIGluY2x1ZGUgPHN0cmluZ3MuaD4KfCAjZW5k
aWYKfCAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICnwgIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgp8ICNl
bmRpZgp8ICNpZmRlZiBIQVZFX1NURElOVF9ICnwgIyBpbmNsdWRlIDxzdGRpbnQuaD4KfCAjZW5k
aWYKfCAjaWZkZWYgSEFWRV9VTklTVERfSAp8ICMgaW5jbHVkZSA8dW5pc3RkLmg+CnwgI2VuZGlm
CnwgI2luY2x1ZGUgPG1pbml4L2NvbmZpZy5oPgpjb25maWd1cmU6NDYyMDogcmVzdWx0OiBubwpj
b25maWd1cmU6NDYyMDogY2hlY2tpbmcgbWluaXgvY29uZmlnLmggcHJlc2VuY2UKY29uZmlndXJl
OjQ2MjA6IGdjYyAtRSAgY29uZnRlc3QuYwpjb25mdGVzdC5jOjIxOjI2OiBmYXRhbCBlcnJvcjog
bWluaXgvY29uZmlnLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKICNpbmNsdWRlIDxtaW5p
eC9jb25maWcuaD4KICAgICAgICAgICAgICAgICAgICAgICAgICBeCmNvbXBpbGF0aW9uIHRlcm1p
bmF0ZWQuCmNvbmZpZ3VyZTo0NjIwOiAkPyA9IDEKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3
YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJHTlUgR3VpeCIK
fCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiZ3VpeCIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lP
TiAiMC4xMC4wIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIkdOVSBHdWl4IDAuMTAuMCIKfCAj
ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJidWctZ3VpeEBnbnUub3JnIgp8ICNkZWZpbmUgUEFD
S0FHRV9VUkwgImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ndWl4LyIKfCAjZGVmaW5lIFBB
Q0tBR0UgImd1aXgiCnwgI2RlZmluZSBWRVJTSU9OICIwLjEwLjAiCnwgI2RlZmluZSBTVERDX0hF
QURFUlMgMQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19T
VEFUX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19I
IDEKfCAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8
ICNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNk
ZWZpbmUgSEFWRV9VTklTVERfSCAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRl
IDxtaW5peC9jb25maWcuaD4KY29uZmlndXJlOjQ2MjA6IHJlc3VsdDogbm8KY29uZmlndXJlOjQ2
MjA6IGNoZWNraW5nIGZvciBtaW5peC9jb25maWcuaApjb25maWd1cmU6NDYyMDogcmVzdWx0OiBu
bwpjb25maWd1cmU6NDY0MTogY2hlY2tpbmcgd2hldGhlciBpdCBpcyBzYWZlIHRvIGRlZmluZSBf
X0VYVEVOU0lPTlNfXwpjb25maWd1cmU6NDY1OTogZ2NjIC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+
JjUKY29uZmlndXJlOjQ2NTk6ICQ/ID0gMApjb25maWd1cmU6NDY2NjogcmVzdWx0OiB5ZXMKY29u
ZmlndXJlOjQ2ODk6IGNoZWNraW5nIHdoZXRoZXIgTkxTIGlzIHJlcXVlc3RlZApjb25maWd1cmU6
NDY5ODogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQ3Mzk6IGNoZWNraW5nIGZvciBtc2dmbXQKY29u
ZmlndXJlOiB0cnlpbmcgL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJo
Ny1wcm9maWxlL2Jpbi9tc2dmbXQuLi4KMCB0cmFuc2xhdGVkIG1lc3NhZ2VzLgpjb25maWd1cmU6
NDc3MTogcmVzdWx0OiAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3
LXByb2ZpbGUvYmluL21zZ2ZtdApjb25maWd1cmU6NDc4MDogY2hlY2tpbmcgZm9yIGdtc2dmbXQK
Y29uZmlndXJlOjQ4MTE6IHJlc3VsdDogL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejds
ZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9tc2dmbXQKY29uZmlndXJlOjQ4NjI6IGNoZWNraW5nIGZv
ciB4Z2V0dGV4dApjb25maWd1cmU6IHRyeWluZyAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2Jx
Mnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL3hnZXR0ZXh0Li4uCi9nbnUvc3RvcmUvMzJuY3dr
aGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4veGdldHRleHQ6IHdhcm5pbmc6
IGZpbGUgJy9kZXYvbnVsbCcgZXh0ZW5zaW9uICcnIGlzIHVua25vd247IHdpbGwgdHJ5IEMKY29u
ZmlndXJlOjQ4OTQ6IHJlc3VsdDogL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNy
Mzl4MHJoNy1wcm9maWxlL2Jpbi94Z2V0dGV4dApjb25maWd1cmU6NDk0MDogY2hlY2tpbmcgZm9y
IG1zZ21lcmdlCmNvbmZpZ3VyZTogdHJ5aW5nIC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEy
eHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vbXNnbWVyZ2UuLi4KY29uZmlndXJlOjQ5NzE6IHJl
c3VsdDogL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxl
L2Jpbi9tc2dtZXJnZQpjb25maWd1cmU6NTAwODogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUK
Y29uZmlndXJlOjUwMjI6IHJlc3VsdDogeDg2XzY0LXVua25vd24tbGludXgtZ251CmNvbmZpZ3Vy
ZTo1MDQyOiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo1MDU1OiByZXN1bHQ6
IHg4Nl82NC11bmtub3duLWxpbnV4LWdudQpjb25maWd1cmU6NTA5OTogY2hlY2tpbmcgZm9yIGxk
IHVzZWQgYnkgR0NDCmNvbmZpZ3VyZTo1MTYzOiByZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGpt
enlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vbGQKY29uZmlndXJlOjUxNzA6IGNo
ZWNraW5nIGlmIHRoZSBsaW5rZXIgKC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYz
cjM5eDByaDctcHJvZmlsZS9iaW4vbGQpIGlzIEdOVSBsZApjb25maWd1cmU6NTE4MzogcmVzdWx0
OiB5ZXMKY29uZmlndXJlOjUxOTA6IGNoZWNraW5nIGZvciBzaGFyZWQgbGlicmFyeSBydW4gcGF0
aCBvcmlnaW4KY29uZmlndXJlOjUyMDM6IHJlc3VsdDogZG9uZQpjb25maWd1cmU6NTc3NTogY2hl
Y2tpbmcgZm9yIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUKY29uZmlndXJlOjU3OTM6IGdjYyAt
byBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZv
dW5kYXRpb24gPiY1CmNvbmZ0ZXN0LmM6MjY6NDI6IGZhdGFsIGVycm9yOiBDb3JlRm91bmRhdGlv
bi9DRlByZWZlcmVuY2VzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKICNpbmNsdWRlIDxD
b3JlRm91bmRhdGlvbi9DRlByZWZlcmVuY2VzLmg+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KY29tcGlsYXRpb24gdGVybWluYXRlZC4KY29uZmlndXJlOjU3OTM6
ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICov
CnwgI2RlZmluZSBQQUNLQUdFX05BTUUgIkdOVSBHdWl4Igp8ICNkZWZpbmUgUEFDS0FHRV9UQVJO
QU1FICJndWl4Igp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIwLjEwLjAiCnwgI2RlZmluZSBQ
QUNLQUdFX1NUUklORyAiR05VIEd1aXggMC4xMC4wIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBP
UlQgImJ1Zy1ndWl4QGdudS5vcmciCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiaHR0cDovL3d3dy5n
bnUub3JnL3NvZnR3YXJlL2d1aXgvIgp8ICNkZWZpbmUgUEFDS0FHRSAiZ3VpeCIKfCAjZGVmaW5l
IFZFUlNJT04gIjAuMTAuMCIKfCAjZGVmaW5lIFNURENfSEVBREVSUyAxCnwgI2RlZmluZSBIQVZF
X1NZU19UWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCnwgI2RlZmluZSBIQVZF
X1NURExJQl9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQp8ICNkZWZpbmUgSEFWRV9NRU1P
UllfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCnwgI2RlZmluZSBIQVZFX0lOVFRZUEVT
X0ggMQp8ICNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCnwgI2RlZmluZSBIQVZFX1VOSVNURF9IIDEK
fCAjZGVmaW5lIF9fRVhURU5TSU9OU19fIDEKfCAjZGVmaW5lIF9BTExfU09VUkNFIDEKfCAjZGVm
aW5lIF9HTlVfU09VUkNFIDEKfCAjZGVmaW5lIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyAxCnwg
I2RlZmluZSBfVEFOREVNX1NPVVJDRSAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9DRlByZWZlcmVuY2VzLmg+CnwgaW50CnwgbWFpbiAoKQp8IHsK
fCBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKE5VTEwsIE5VTEwpCnwgICA7CnwgICByZXR1cm4g
MDsKfCB9CmNvbmZpZ3VyZTo1ODAyOiByZXN1bHQ6IG5vCmNvbmZpZ3VyZTo1ODA5OiBjaGVja2lu
ZyBmb3IgQ0ZMb2NhbGVDb3B5Q3VycmVudApjb25maWd1cmU6NTgyNzogZ2NjIC1vIGNvbmZ0ZXN0
IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiA+
JjUKY29uZnRlc3QuYzoyNjozNzogZmF0YWwgZXJyb3I6IENvcmVGb3VuZGF0aW9uL0NGTG9jYWxl
Lmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RkxvY2FsZS5oPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpjb21waWxh
dGlvbiB0ZXJtaW5hdGVkLgpjb25maWd1cmU6NTgyNzogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVk
IHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAi
R05VIEd1aXgiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImd1aXgiCnwgI2RlZmluZSBQQUNL
QUdFX1ZFUlNJT04gIjAuMTAuMCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHTlUgR3VpeCAw
LjEwLjAiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiYnVnLWd1aXhAZ251Lm9yZyIKfCAj
ZGVmaW5lIFBBQ0tBR0VfVVJMICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ3VpeC8iCnwg
I2RlZmluZSBQQUNLQUdFICJndWl4Igp8ICNkZWZpbmUgVkVSU0lPTiAiMC4xMC4wIgp8ICNkZWZp
bmUgU1REQ19IRUFERVJTIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8ICNkZWZpbmUg
SEFWRV9TWVNfU1RBVF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFW
RV9TVFJJTkdfSCAxCnwgI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKfCAjZGVmaW5lIEhBVkVfU1RS
SU5HU19IIDEKfCAjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NURElO
VF9IIDEKfCAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQp8ICNkZWZpbmUgX19FWFRFTlNJT05TX18g
MQp8ICNkZWZpbmUgX0FMTF9TT1VSQ0UgMQp8ICNkZWZpbmUgX0dOVV9TT1VSQ0UgMQp8ICNkZWZp
bmUgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEKfCAjZGVmaW5lIF9UQU5ERU1fU09VUkNFIDEK
fCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9j
YWxlLmg+CnwgaW50CnwgbWFpbiAoKQp8IHsKfCBDRkxvY2FsZUNvcHlDdXJyZW50KCk7CnwgICA7
CnwgICByZXR1cm4gMDsKfCB9CmNvbmZpZ3VyZTo1ODM2OiByZXN1bHQ6IG5vCmNvbmZpZ3VyZTo1
ODg1OiBjaGVja2luZyBmb3IgR05VIGdldHRleHQgaW4gbGliYwpjb25maWd1cmU6NTkwNTogZ2Nj
IC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgID4mNQpjb25maWd1cmU6NTkwNTogJD8g
PSAwCmNvbmZpZ3VyZTo1OTE0OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NjcwNTogY2hlY2tpbmcg
d2hldGhlciB0byB1c2UgTkxTCmNvbmZpZ3VyZTo2NzA3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6
NjcxMDogY2hlY2tpbmcgd2hlcmUgdGhlIGdldHRleHQgZnVuY3Rpb24gY29tZXMgZnJvbQpjb25m
aWd1cmU6NjcyMTogcmVzdWx0OiBsaWJjCmNvbmZpZ3VyZTo2Nzg3OiBjaGVja2luZyBmb3Igc2Vk
CmNvbmZpZ3VyZTo2ODA1OiBmb3VuZCAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xm
M3IzOXgwcmg3LXByb2ZpbGUvYmluL3NlZApjb25maWd1cmU6NjgxNzogcmVzdWx0OiAvZ251L3N0
b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL3NlZApjb25m
aWd1cmU6Njg2NzogY2hlY2tpbmcgZm9yIHRoZSBHdWl4IHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo2
ODY5OiByZXN1bHQ6IHg4Nl82NC1saW51eApjb25maWd1cmU6NjkyMzogY2hlY2tpbmcgZm9yIHRo
ZSBzdG9yZSBkaXJlY3RvcnkKY29uZmlndXJlOjY5MjU6IHJlc3VsdDogL2dudS9zdG9yZQpjb25m
aWd1cmU6Njk0NzogY2hlY2tpbmcgdGhlIGxlbmd0aCBvZiB0aGUgaW5zdGFsbGVkIHNvY2tldCBm
aWxlIG5hbWUKY29uZmlndXJlOjY5NTQ6IHJlc3VsdDogNDAKY29uZmlndXJlOjY5NTg6IGNoZWNr
aW5nIGZvciB1bml0IHRlc3Qgcm9vdCBkaXJlY3RvcnkKY29uZmlndXJlOjY5NjU6IHJlc3VsdDog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcApjb25maWd1cmU6Njk3
MDogY2hlY2tpbmcgdGhlIGxlbmd0aCBvZiB0aGUgc29ja2V0IGZpbGUgbmFtZSB1c2VkIGluIHRl
c3RzCmNvbmZpZ3VyZTo2OTc3OiByZXN1bHQ6IDc1CmNvbmZpZ3VyZTo2OTgxOiBjaGVja2luZyB0
aGUgbGVuZ3RoIG9mIGEgdHlwaWNhbCBoYXNoIGJhbmcgbGluZQpjb25maWd1cmU6Njk4ODogcmVz
dWx0OiA3Mwpjb25maWd1cmU6Njk5MzogY2hlY2tpbmcgdGhlIGxlbmd0aCBvZiBhIGhhc2ggYmFu
ZyBsaW5lIHVzZWQgaW4gdGVzdHMKY29uZmlndXJlOjcwMDA6IHJlc3VsdDogMTEyCmNvbmZpZ3Vy
ZTo3MDk0OiBjaGVja2luZyBmb3IgcGtnLWNvbmZpZwpjb25maWd1cmU6NzExMjogZm91bmQgL2du
dS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9wa2ct
Y29uZmlnCmNvbmZpZ3VyZTo3MTI0OiByZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3
YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vcGtnLWNvbmZpZwpjb25maWd1cmU6NzE0OTog
Y2hlY2tpbmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uIDAuOS4wCmNvbmZpZ3VyZTo3
MTUyOiByZXN1bHQ6IHllcwpjb25maWd1cmU6NzE2MjogY2hlY2tpbmcgZm9yIEdVSUxFCmNvbmZp
Z3VyZTo3MTY5OiAkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiZ3VpbGUtMi4w
ID49IDIuMC43Igpjb25maWd1cmU6NzE3MjogJD8gPSAwCmNvbmZpZ3VyZTo3MTg2OiAkUEtHX0NP
TkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiZ3VpbGUtMi4wID49IDIuMC43Igpjb25maWd1
cmU6NzE4OTogJD8gPSAwCmNvbmZpZ3VyZTo3MjQ3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NzI1
MzogY2hlY2tpbmcgZm9yIGd1aWxlCmNvbmZpZ3VyZTo3MjcxOiBmb3VuZCAvZ251L3N0b3JlLzMy
bmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d1aWxlCmNvbmZpZ3Vy
ZTo3MjgzOiByZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDBy
aDctcHJvZmlsZS9iaW4vZ3VpbGUKY29uZmlndXJlOjcyOTM6IGNoZWNraW5nIGZvciBndWlsZApj
b25maWd1cmU6NzMxMTogZm91bmQgL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNy
Mzl4MHJoNy1wcm9maWxlL2Jpbi9ndWlsZApjb25maWd1cmU6NzMyMzogcmVzdWx0OiAvZ251L3N0
b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d1aWxkCmNv
bmZpZ3VyZTo3MzM3OiBjaGVja2luZyBmb3IgZ3VpbGUKY29uZmlndXJlOjczNjc6IHJlc3VsdDog
L2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9n
dWlsZQpjb25maWd1cmU6NzM5NjogY2hlY2tpbmcgZm9yIEd1aWxlIHZlcnNpb24gPj0gMi4wCmNv
bmZpZ3VyZTo3NDE3OiByZXN1bHQ6IDIuMC4xMQpjb25maWd1cmU6NzQyMjogY2hlY2tpbmcgZm9y
IGd1aWxkCmNvbmZpZ3VyZTo3NDUyOiByZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3
YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ3VpbGQKY29uZmlndXJlOjc0NjQ6IGNoZWNr
aW5nIGZvciBndWlsZS1jb25maWcKY29uZmlndXJlOjc0ODI6IGZvdW5kIC9nbnUvc3RvcmUvMzJu
Y3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ3VpbGUtY29uZmlnCmNv
bmZpZ3VyZTo3NDk0OiByZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYz
cjM5eDByaDctcHJvZmlsZS9iaW4vZ3VpbGUtY29uZmlnCmNvbmZpZ3VyZTo3NTQ5OiBjaGVja2lu
ZyBpZiAoanNvbikgaXMgYXZhaWxhYmxlCmNvbmZpZ3VyZTo3NTU2OiByZXN1bHQ6IHllcwpjb25m
aWd1cmU6NzU3MjogY2hlY2tpbmcgd2hldGhlciAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2Jx
Mnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d1aWxlIHByb3ZpZGVzIGZlYXR1cmUgJ3JlZ2V4
Jwpjb25maWd1cmU6NzU3NjogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjc1NzI6IGNoZWNraW5nIHdo
ZXRoZXIgL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxl
L2Jpbi9ndWlsZSBwcm92aWRlcyBmZWF0dXJlICdwb3NpeCcKY29uZmlndXJlOjc1NzY6IHJlc3Vs
dDogeWVzCmNvbmZpZ3VyZTo3NTcyOiBjaGVja2luZyB3aGV0aGVyIC9nbnUvc3RvcmUvMzJuY3dr
aGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ3VpbGUgcHJvdmlkZXMgZmVh
dHVyZSAnc29ja2V0Jwpjb25maWd1cmU6NzU3NjogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjc1NzI6
IGNoZWNraW5nIHdoZXRoZXIgL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4
MHJoNy1wcm9maWxlL2Jpbi9ndWlsZSBwcm92aWRlcyBmZWF0dXJlICduZXQtZGInCmNvbmZpZ3Vy
ZTo3NTc2OiByZXN1bHQ6IHllcwpjb25maWd1cmU6NzU3MjogY2hlY2tpbmcgd2hldGhlciAvZ251
L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d1aWxl
IHByb3ZpZGVzIGZlYXR1cmUgJ3RocmVhZHMnCmNvbmZpZ3VyZTo3NTc2OiByZXN1bHQ6IHllcwpj
b25maWd1cmU6NzU4NzogY2hlY2tpbmcgd2hldGhlciAoc3JmaSBzcmZpLTM3KSBpcyBhZmZlY3Rl
ZCBieSBodHRwOi8vYnVncy5nbnUub3JnLzEzMTc2CmNvbmZpZ3VyZTo3NjAzOiByZXN1bHQ6IG5v
CmNvbmZpZ3VyZTo3NjE2OiBjaGVja2luZyB3aGV0aGVyIGxpYmMgcHJvdmlkZXMgJ21vdW50Jwpj
b25maWd1cmU6NzYzMTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjc2NDU6IGNoZWNraW5nIGZvciBn
emlwCmNvbmZpZ3VyZTo3NjYzOiBmb3VuZCAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6
N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d6aXAKY29uZmlndXJlOjc2NzU6IHJlc3VsdDogL2du
dS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9nemlw
CmNvbmZpZ3VyZTo3Njg1OiBjaGVja2luZyBmb3IgYnppcDIKY29uZmlndXJlOjc3MDM6IGZvdW5k
IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4v
YnppcDIKY29uZmlndXJlOjc3MTU6IHJlc3VsdDogL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdi
cTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9iemlwMgpjb25maWd1cmU6NzcyNTogY2hlY2tp
bmcgZm9yIHh6CmNvbmZpZ3VyZTo3NzQzOiBmb3VuZCAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdq
N2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL3h6CmNvbmZpZ3VyZTo3NzU1OiByZXN1bHQ6
IC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4v
eHoKY29uZmlndXJlOjc3ODM6IGNoZWNraW5nIGZvciBuaXgtaW5zdGFudGlhdGUKY29uZmlndXJl
Ojc4MTY6IHJlc3VsdDogbm8KY29uZmlndXJlOjc4MjM6IGNoZWNraW5nIGZvciBuaXgtaGFzaApj
b25maWd1cmU6Nzg1NjogcmVzdWx0OiBubwpjb25maWd1cmU6Nzg4MTogY2hlY2tpbmcgZm9yIE5p
eHBrZ3Mgc291cmNlIHRyZWUKY29uZmlndXJlOjc4ODg6IHJlc3VsdDogbm90IGZvdW5kCmNvbmZp
Z3VyZTo3OTMyOiBjaGVja2luZyBmb3IgbGliZ2NyeXB0LWNvbmZpZwpjb25maWd1cmU6Nzk1MDog
Zm91bmQgL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxl
L2Jpbi9saWJnY3J5cHQtY29uZmlnCmNvbmZpZ3VyZTo3OTYyOiByZXN1bHQ6IC9nbnUvc3RvcmUv
MzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vbGliZ2NyeXB0LWNv
bmZpZwpjb25maWd1cmU6Nzk3MDogY2hlY2tpbmcgbGliZ2NyeXB0J3MgbGlicmFyeSBkaXJlY3Rv
cnkKY29uZmlndXJlOjc5ODE6IHJlc3VsdDogL2dudS9zdG9yZS83d2ZicHJwMWI5YjI1Y3JsaWRn
Nmg3YjZocGliMmI5OS1saWJnY3J5cHQtMS42LjUvbGliCmNvbmZpZ3VyZTo3OTkzOiBjaGVja2lu
ZyBmb3IgbGliZ2NyeXB0IHNoYXJlZCBsaWJyYXJ5IG5hbWUKY29uZmlndXJlOjc5OTU6IHJlc3Vs
dDogL2dudS9zdG9yZS83d2ZicHJwMWI5YjI1Y3JsaWRnNmg3YjZocGliMmI5OS1saWJnY3J5cHQt
MS42LjUvbGliL2xpYmdjcnlwdApjb25maWd1cmU6ODAwMTogY2hlY2tpbmcgd2hldGhlciAvZ251
L3N0b3JlLzd3ZmJwcnAxYjliMjVjcmxpZGc2aDdiNmhwaWIyYjk5LWxpYmdjcnlwdC0xLjYuNS9s
aWIvbGliZ2NyeXB0IGNhbiBiZSBkeW5hbWljYWxseSBsb2FkZWQKY29uZmlndXJlOjgwMTY6IHJl
c3VsdDogeWVzCmNvbmZpZ3VyZTo4MDI1OiBjaGVja2luZyB6bGliJ3MgbGlicmFyeSBkaXJlY3Rv
cnkKY29uZmlndXJlOjgwMzI6IHJlc3VsdDogL2dudS9zdG9yZS9oc3hoZm1qZ2g4bTRjMHBhdnEz
Z2QzZ2Nybjh6cmd4ai16bGliLTEuMi44L2xpYgpjb25maWd1cmU6ODA0MTogY2hlY2tpbmcgZm9y
IHpsaWIncyBzaGFyZWQgbGlicmFyeSBuYW1lCmNvbmZpZ3VyZTo4MDQzOiByZXN1bHQ6IC9nbnUv
c3RvcmUvaHN4aGZtamdoOG00YzBwYXZxM2dkM2djcm44enJneGotemxpYi0xLjIuOC9saWIvbGli
egpjb25maWd1cmU6ODEzNDogY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCBkYWVtb24KY29uZmln
dXJlOjgxMzY6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo4MTk3OiBjaGVja2luZyBmb3IgZysrCmNv
bmZpZ3VyZTo4MjEzOiBmb3VuZCAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3Iz
OXgwcmg3LXByb2ZpbGUvYmluL2crKwpjb25maWd1cmU6ODIyNDogcmVzdWx0OiBnKysKY29uZmln
dXJlOjgyNTE6IGNoZWNraW5nIGZvciBDKysgY29tcGlsZXIgdmVyc2lvbgpjb25maWd1cmU6ODI2
MDogZysrIC0tdmVyc2lvbiA+JjUKZysrIChHQ0MpIDQuOS4zCkNvcHlyaWdodCAoQykgMjAxNSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUg
dGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7
IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuCgpjb25maWd1cmU6ODI3MTogJD8gPSAwCmNvbmZpZ3VyZTo4MjYwOiBnKysgLXYg
PiY1ClVzaW5nIGJ1aWx0LWluIHNwZWNzLgpDT0xMRUNUX0dDQz1nKysKQ09MTEVDVF9MVE9fV1JB
UFBFUj0vZ251L3N0b3JlL3NqdmNpcnJpMmJnN3E1aGxya2F5d2hteGxsaWswY2Z4LWdjYy00Ljku
My9saWJleGVjL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC45LjMvbHRvLXdyYXBwZXIK
VGFyZ2V0OiB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKQ29uZmlndXJlZCB3aXRoOiAKVGhyZWFk
IG1vZGVsOiBwb3NpeApnY2MgdmVyc2lvbiA0LjkuMyAoR0NDKSAKY29uZmlndXJlOjgyNzE6ICQ/
ID0gMApjb25maWd1cmU6ODI2MDogZysrIC1WID4mNQpnKys6IGVycm9yOiB1bnJlY29nbml6ZWQg
Y29tbWFuZCBsaW5lIG9wdGlvbiAnLVYnCmcrKzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZpbGVz
CmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3VyZTo4MjcxOiAkPyA9IDEKY29uZmlndXJl
OjgyNjA6IGcrKyAtcXZlcnNpb24gPiY1CmcrKzogZXJyb3I6IHVucmVjb2duaXplZCBjb21tYW5k
IGxpbmUgb3B0aW9uICctcXZlcnNpb24nCmcrKzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZpbGVz
CmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3VyZTo4MjcxOiAkPyA9IDEKY29uZmlndXJl
OjgyNzU6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQysrIGNvbXBpbGVy
CmNvbmZpZ3VyZTo4Mjk0OiBnKysgLWMgICBjb25mdGVzdC5jcHAgPiY1CmNvbmZpZ3VyZTo4Mjk0
OiAkPyA9IDAKY29uZmlndXJlOjgzMDM6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo4MzEyOiBjaGVj
a2luZyB3aGV0aGVyIGcrKyBhY2NlcHRzIC1nCmNvbmZpZ3VyZTo4MzMyOiBnKysgLWMgLWcgIGNv
bmZ0ZXN0LmNwcCA+JjUKY29uZmlndXJlOjgzMzI6ICQ/ID0gMApjb25maWd1cmU6ODM3MzogcmVz
dWx0OiB5ZXMKY29uZmlndXJlOjgzOTg6IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgZysr
CmNvbmZpZ3VyZTo4NTA5OiByZXN1bHQ6IGdjYzMKY29uZmlndXJlOjg1Mzc6IGNoZWNraW5nIHdo
ZXRoZXIgZysrIHN1cHBvcnRzIEMrKzExCmNvbmZpZ3VyZTo4NTYxOiBnKysgLWMgLXN0ZD1jKysx
MSAtZyAtTzIgIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmlndXJlOjg1NjE6ICQ/ID0gMApjb25maWd1
cmU6ODU3MDogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjg2MjE6IGNoZWNraW5nIGZvciByYW5saWIK
Y29uZmlndXJlOjg2Mzc6IGZvdW5kIC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYz
cjM5eDByaDctcHJvZmlsZS9iaW4vcmFubGliCmNvbmZpZ3VyZTo4NjQ4OiByZXN1bHQ6IHJhbmxp
Ygpjb25maWd1cmU6ODY4MDogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25z
IG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKY29uZmlndXJlOjg3MjU6IHJlc3VsdDogbm8KY29uZmln
dXJlOjg3MzE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9y
IGxhcmdlIGZpbGVzCmNvbmZpZ3VyZTo4NzU2OiBnKysgLWMgLWcgLU8yICBjb25mdGVzdC5jcHAg
PiY1CmNvbmZpZ3VyZTo4NzU2OiAkPyA9IDAKY29uZmlndXJlOjg3ODg6IHJlc3VsdDogbm8KY29u
ZmlndXJlOjg4NzQ6IGNoZWNraW5nIGZvciBCWjJfYnpXcml0ZU9wZW4gaW4gLWxiejIKY29uZmln
dXJlOjg4OTk6IGcrKyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jcHAgLWxiejIgICA+
JjUKY29uZmlndXJlOjg4OTk6ICQ/ID0gMApjb25maWd1cmU6ODkwODogcmVzdWx0OiB5ZXMKY29u
ZmlndXJlOjg5MjE6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMrKyBwcmVwcm9jZXNzb3IKY29u
ZmlndXJlOjg5NDg6IGcrKyAtRSAgY29uZnRlc3QuY3BwCmNvbmZpZ3VyZTo4OTQ4OiAkPyA9IDAK
Y29uZmlndXJlOjg5NjI6IGcrKyAtRSAgY29uZnRlc3QuY3BwCmNvbmZ0ZXN0LmNwcDoyOToyODog
ZmF0YWwgZXJyb3I6IGFjX25vbmV4aXN0ZW50Lmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkK
ICNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Xgpjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgpjb25maWd1cmU6ODk2MjogJD8gPSAxCmNvbmZpZ3Vy
ZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tB
R0VfTkFNRSAiR05VIEd1aXgiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImd1aXgiCnwgI2Rl
ZmluZSBQQUNLQUdFX1ZFUlNJT04gIjAuMTAuMCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJH
TlUgR3VpeCAwLjEwLjAiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiYnVnLWd1aXhAZ251
Lm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUv
Z3VpeC8iCnwgI2RlZmluZSBQQUNLQUdFICJndWl4Igp8ICNkZWZpbmUgVkVSU0lPTiAiMC4xMC4w
Igp8ICNkZWZpbmUgU1REQ19IRUFERVJTIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8
ICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNk
ZWZpbmUgSEFWRV9TVFJJTkdfSCAxCnwgI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKfCAjZGVmaW5l
IEhBVkVfU1RSSU5HU19IIDEKfCAjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCnwgI2RlZmluZSBI
QVZFX1NURElOVF9IIDEKfCAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQp8ICNkZWZpbmUgX19FWFRF
TlNJT05TX18gMQp8ICNkZWZpbmUgX0FMTF9TT1VSQ0UgMQp8ICNkZWZpbmUgX0dOVV9TT1VSQ0Ug
MQp8ICNkZWZpbmUgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEKfCAjZGVmaW5lIF9UQU5ERU1f
U09VUkNFIDEKfCAjZGVmaW5lIEVOQUJMRV9OTFMgMQp8ICNkZWZpbmUgSEFWRV9HRVRURVhUIDEK
fCAjZGVmaW5lIEhBVkVfRENHRVRURVhUIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2lu
Y2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CmNvbmZpZ3VyZTo4OTg3OiByZXN1bHQ6IGcrKyAtRQpj
b25maWd1cmU6OTAwNzogZysrIC1FICBjb25mdGVzdC5jcHAKY29uZmlndXJlOjkwMDc6ICQ/ID0g
MApjb25maWd1cmU6OTAyMTogZysrIC1FICBjb25mdGVzdC5jcHAKY29uZnRlc3QuY3BwOjI5OjI4
OiBmYXRhbCBlcnJvcjogYWNfbm9uZXhpc3RlbnQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9y
eQogI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3VyZTo5MDIxOiAkPyA9IDEKY29uZmln
dXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFD
S0FHRV9OQU1FICJHTlUgR3VpeCIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiZ3VpeCIKfCAj
ZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4wIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcg
IkdOVSBHdWl4IDAuMTAuMCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJidWctZ3VpeEBn
bnUub3JnIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2Fy
ZS9ndWl4LyIKfCAjZGVmaW5lIFBBQ0tBR0UgImd1aXgiCnwgI2RlZmluZSBWRVJTSU9OICIwLjEw
LjAiCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAx
CnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwg
I2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZp
bmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5l
IEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBfX0VY
VEVOU0lPTlNfXyAxCnwgI2RlZmluZSBfQUxMX1NPVVJDRSAxCnwgI2RlZmluZSBfR05VX1NPVVJD
RSAxCnwgI2RlZmluZSBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgMQp8ICNkZWZpbmUgX1RBTkRF
TV9TT1VSQ0UgMQp8ICNkZWZpbmUgRU5BQkxFX05MUyAxCnwgI2RlZmluZSBIQVZFX0dFVFRFWFQg
MQp8ICNkZWZpbmUgSEFWRV9EQ0dFVFRFWFQgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAj
aW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KY29uZmlndXJlOjkwNTI6IGNoZWNraW5nIGJ6bGli
LmggdXNhYmlsaXR5CmNvbmZpZ3VyZTo5MDUyOiBnKysgLWMgLWcgLU8yICBjb25mdGVzdC5jcHAg
PiY1CmNvbmZpZ3VyZTo5MDUyOiAkPyA9IDAKY29uZmlndXJlOjkwNTI6IHJlc3VsdDogeWVzCmNv
bmZpZ3VyZTo5MDUyOiBjaGVja2luZyBiemxpYi5oIHByZXNlbmNlCmNvbmZpZ3VyZTo5MDUyOiBn
KysgLUUgIGNvbmZ0ZXN0LmNwcApjb25maWd1cmU6OTA1MjogJD8gPSAwCmNvbmZpZ3VyZTo5MDUy
OiByZXN1bHQ6IHllcwpjb25maWd1cmU6OTA1MjogY2hlY2tpbmcgZm9yIGJ6bGliLmgKY29uZmln
dXJlOjkwNTI6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MDY3OiBjaGVja2luZyBmb3IgU1FMSVRF
Mwpjb25maWd1cmU6OTA3NDogJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgInNx
bGl0ZTMgPj0gMy42LjE5Igpjb25maWd1cmU6OTA3NzogJD8gPSAwCmNvbmZpZ3VyZTo5MDkxOiAk
UEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAic3FsaXRlMyA+PSAzLjYuMTkiCmNv
bmZpZ3VyZTo5MDk0OiAkPyA9IDAKY29uZmlndXJlOjkxNTI6IHJlc3VsdDogeWVzCmNvbmZpZ3Vy
ZTo5MTkzOiBjaGVja2luZyBmb3IgZ2NyeV9tZF9vcGVuIGluIC1sZ2NyeXB0CmNvbmZpZ3VyZTo5
MjE4OiBnKysgLW8gY29uZnRlc3QgLWcgLU8yICAgIGNvbmZ0ZXN0LmNwcCAtbGdjcnlwdCAgID4m
NQpjb25maWd1cmU6OTIxODogJD8gPSAwCmNvbmZpZ3VyZTo5MjI3OiByZXN1bHQ6IHllcwpjb25m
aWd1cmU6OTIzNTogY2hlY2tpbmcgZ2NyeXB0LmggdXNhYmlsaXR5CmNvbmZpZ3VyZTo5MjM1OiBn
KysgLWMgLWcgLU8yICBjb25mdGVzdC5jcHAgPiY1CmNvbmZpZ3VyZTo5MjM1OiAkPyA9IDAKY29u
ZmlndXJlOjkyMzU6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MjM1OiBjaGVja2luZyBnY3J5cHQu
aCBwcmVzZW5jZQpjb25maWd1cmU6OTIzNTogZysrIC1FICBjb25mdGVzdC5jcHAKY29uZmlndXJl
OjkyMzU6ICQ/ID0gMApjb25maWd1cmU6OTIzNTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjkyMzU6
IGNoZWNraW5nIGZvciBnY3J5cHQuaApjb25maWd1cmU6OTIzNTogcmVzdWx0OiB5ZXMKY29uZmln
dXJlOjkyNTM6IGNoZWNraW5nIGZvciBjaHJvb3QKY29uZmlndXJlOjkyNTM6IGcrKyAtbyBjb25m
dGVzdCAtZyAtTzIgICBjb25mdGVzdC5jcHAgID4mNQpjb25maWd1cmU6OTI1MzogJD8gPSAwCmNv
bmZpZ3VyZTo5MjUzOiByZXN1bHQ6IHllcwpjb25maWd1cmU6OTI1MzogY2hlY2tpbmcgZm9yIHVu
c2hhcmUKY29uZmlndXJlOjkyNTM6IGcrKyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5j
cHAgID4mNQpjb25maWd1cmU6OTI1MzogJD8gPSAwCmNvbmZpZ3VyZTo5MjUzOiByZXN1bHQ6IHll
cwpjb25maWd1cmU6OTI2NTogY2hlY2tpbmcgc2NoZWQuaCB1c2FiaWxpdHkKY29uZmlndXJlOjky
NjU6IGcrKyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmlndXJlOjkyNjU6ICQ/ID0g
MApjb25maWd1cmU6OTI2NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjkyNjU6IGNoZWNraW5nIHNj
aGVkLmggcHJlc2VuY2UKY29uZmlndXJlOjkyNjU6IGcrKyAtRSAgY29uZnRlc3QuY3BwCmNvbmZp
Z3VyZTo5MjY1OiAkPyA9IDAKY29uZmlndXJlOjkyNjU6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5
MjY1OiBjaGVja2luZyBmb3Igc2NoZWQuaApjb25maWd1cmU6OTI2NTogcmVzdWx0OiB5ZXMKY29u
ZmlndXJlOjkyNjU6IGNoZWNraW5nIHN5cy9wYXJhbS5oIHVzYWJpbGl0eQpjb25maWd1cmU6OTI2
NTogZysrIC1jIC1nIC1PMiAgY29uZnRlc3QuY3BwID4mNQpjb25maWd1cmU6OTI2NTogJD8gPSAw
CmNvbmZpZ3VyZTo5MjY1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6OTI2NTogY2hlY2tpbmcgc3lz
L3BhcmFtLmggcHJlc2VuY2UKY29uZmlndXJlOjkyNjU6IGcrKyAtRSAgY29uZnRlc3QuY3BwCmNv
bmZpZ3VyZTo5MjY1OiAkPyA9IDAKY29uZmlndXJlOjkyNjU6IHJlc3VsdDogeWVzCmNvbmZpZ3Vy
ZTo5MjY1OiBjaGVja2luZyBmb3Igc3lzL3BhcmFtLmgKY29uZmlndXJlOjkyNjU6IHJlc3VsdDog
eWVzCmNvbmZpZ3VyZTo5MjY1OiBjaGVja2luZyBzeXMvbW91bnQuaCB1c2FiaWxpdHkKY29uZmln
dXJlOjkyNjU6IGcrKyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmlndXJlOjkyNjU6
ICQ/ID0gMApjb25maWd1cmU6OTI2NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjkyNjU6IGNoZWNr
aW5nIHN5cy9tb3VudC5oIHByZXNlbmNlCmNvbmZpZ3VyZTo5MjY1OiBnKysgLUUgIGNvbmZ0ZXN0
LmNwcApjb25maWd1cmU6OTI2NTogJD8gPSAwCmNvbmZpZ3VyZTo5MjY1OiByZXN1bHQ6IHllcwpj
b25maWd1cmU6OTI2NTogY2hlY2tpbmcgZm9yIHN5cy9tb3VudC5oCmNvbmZpZ3VyZTo5MjY1OiBy
ZXN1bHQ6IHllcwpjb25maWd1cmU6OTI2NTogY2hlY2tpbmcgc3lzL3N5c2NhbGwuaCB1c2FiaWxp
dHkKY29uZmlndXJlOjkyNjU6IGcrKyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmln
dXJlOjkyNjU6ICQ/ID0gMApjb25maWd1cmU6OTI2NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjky
NjU6IGNoZWNraW5nIHN5cy9zeXNjYWxsLmggcHJlc2VuY2UKY29uZmlndXJlOjkyNjU6IGcrKyAt
RSAgY29uZnRlc3QuY3BwCmNvbmZpZ3VyZTo5MjY1OiAkPyA9IDAKY29uZmlndXJlOjkyNjU6IHJl
c3VsdDogeWVzCmNvbmZpZ3VyZTo5MjY1OiBjaGVja2luZyBmb3Igc3lzL3N5c2NhbGwuaApjb25m
aWd1cmU6OTI2NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjkyODQ6IGNoZWNraW5nIGZvciBsdXRp
bWVzCmNvbmZpZ3VyZTo5Mjg0OiBnKysgLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuY3Bw
ICA+JjUKY29uZmlndXJlOjkyODQ6ICQ/ID0gMApjb25maWd1cmU6OTI4NDogcmVzdWx0OiB5ZXMK
Y29uZmlndXJlOjkyODQ6IGNoZWNraW5nIGZvciBsY2hvd24KY29uZmlndXJlOjkyODQ6IGcrKyAt
byBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jcHAgID4mNQpjb25maWd1cmU6OTI4NDogJD8g
PSAwCmNvbmZpZ3VyZTo5Mjg0OiByZXN1bHQ6IHllcwpjb25maWd1cmU6OTI4NDogY2hlY2tpbmcg
Zm9yIHBvc2l4X2ZhbGxvY2F0ZQpjb25maWd1cmU6OTI4NDogZysrIC1vIGNvbmZ0ZXN0IC1nIC1P
MiAgIGNvbmZ0ZXN0LmNwcCAgPiY1CmNvbmZpZ3VyZTo5Mjg0OiAkPyA9IDAKY29uZmlndXJlOjky
ODQ6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5Mjg0OiBjaGVja2luZyBmb3Igc2NoZWRfc2V0YWZm
aW5pdHkKY29uZmlndXJlOjkyODQ6IGcrKyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5j
cHAgID4mNQpjb25maWd1cmU6OTI4NDogJD8gPSAwCmNvbmZpZ3VyZTo5Mjg0OiByZXN1bHQ6IHll
cwpjb25maWd1cmU6OTI4NDogY2hlY2tpbmcgZm9yIHN0YXR2ZnMKY29uZmlndXJlOjkyODQ6IGcr
KyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jcHAgID4mNQpjb25maWd1cmU6OTI4NDog
JD8gPSAwCmNvbmZpZ3VyZTo5Mjg0OiByZXN1bHQ6IHllcwpjb25maWd1cmU6OTI4NDogY2hlY2tp
bmcgZm9yIG5hbm9zbGVlcApjb25maWd1cmU6OTI4NDogZysrIC1vIGNvbmZ0ZXN0IC1nIC1PMiAg
IGNvbmZ0ZXN0LmNwcCAgPiY1CmNvbmZpZ3VyZTo5Mjg0OiAkPyA9IDAKY29uZmlndXJlOjkyODQ6
IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5Mjg0OiBjaGVja2luZyBmb3Igc3Ryc2lnbmFsCmNvbmZp
Z3VyZTo5Mjg0OiBnKysgLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuY3BwICA+JjUKY29u
ZmlndXJlOjkyODQ6ICQ/ID0gMApjb25maWd1cmU6OTI4NDogcmVzdWx0OiB5ZXMKY29uZmlndXJl
OjkyOTQ6IGNoZWNraW5nIHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIGEgbGluayB0
byBhIHN5bWxpbmsKY29uZmlndXJlOjkyOTg6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MzE3OiBj
aGVja2luZyBsb2NhbGUgdXNhYmlsaXR5CmNvbmZpZ3VyZTo5MzE3OiBnKysgLWMgLWcgLU8yICBj
b25mdGVzdC5jcHAgPiY1CmNvbmZpZ3VyZTo5MzE3OiAkPyA9IDAKY29uZmlndXJlOjkzMTc6IHJl
c3VsdDogeWVzCmNvbmZpZ3VyZTo5MzE3OiBjaGVja2luZyBsb2NhbGUgcHJlc2VuY2UKY29uZmln
dXJlOjkzMTc6IGcrKyAtRSAgY29uZnRlc3QuY3BwCmNvbmZpZ3VyZTo5MzE3OiAkPyA9IDAKY29u
ZmlndXJlOjkzMTc6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MzE3OiBjaGVja2luZyBmb3IgbG9j
YWxlCmNvbmZpZ3VyZTo5MzE3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6OTMzNzogY2hlY2tpbmcg
c3lzL3BlcnNvbmFsaXR5LmggdXNhYmlsaXR5CmNvbmZpZ3VyZTo5MzM3OiBnKysgLWMgLWcgLU8y
ICBjb25mdGVzdC5jcHAgPiY1CmNvbmZpZ3VyZTo5MzM3OiAkPyA9IDAKY29uZmlndXJlOjkzMzc6
IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MzM3OiBjaGVja2luZyBzeXMvcGVyc29uYWxpdHkuaCBw
cmVzZW5jZQpjb25maWd1cmU6OTMzNzogZysrIC1FICBjb25mdGVzdC5jcHAKY29uZmlndXJlOjkz
Mzc6ICQ/ID0gMApjb25maWd1cmU6OTMzNzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjkzMzc6IGNo
ZWNraW5nIGZvciBzeXMvcGVyc29uYWxpdHkuaApjb25maWd1cmU6OTMzNzogcmVzdWx0OiB5ZXMK
Y29uZmlndXJlOjkzNTA6IGNoZWNraW5nIGxpbnV4L2ZzLmggdXNhYmlsaXR5CmNvbmZpZ3VyZTo5
MzUwOiBnKysgLWMgLWcgLU8yICBjb25mdGVzdC5jcHAgPiY1CmNvbmZpZ3VyZTo5MzUwOiAkPyA9
IDAKY29uZmlndXJlOjkzNTA6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MzUwOiBjaGVja2luZyBs
aW51eC9mcy5oIHByZXNlbmNlCmNvbmZpZ3VyZTo5MzUwOiBnKysgLUUgIGNvbmZ0ZXN0LmNwcApj
b25maWd1cmU6OTM1MDogJD8gPSAwCmNvbmZpZ3VyZTo5MzUwOiByZXN1bHQ6IHllcwpjb25maWd1
cmU6OTM1MDogY2hlY2tpbmcgZm9yIGxpbnV4L2ZzLmgKY29uZmlndXJlOjkzNTA6IHJlc3VsdDog
eWVzCmNvbmZpZ3VyZTo5MzYxOiBjaGVja2luZyBpZiAoZ251dGxzKSBpcyBhdmFpbGFibGUKY29u
ZmlndXJlOjkzNjg6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5Mzc5OiBjaGVja2luZyBmb3IgZGVm
YXVsdCBzdWJzdGl0dXRlIFVSTHMKY29uZmlndXJlOjkzODE6IHJlc3VsdDogaHR0cHM6Ly9taXJy
b3IuaHlkcmEuZ251Lm9yZwpjb25maWd1cmU6OTM5MTogY2hlY2tpbmcgd2hldGhlciBHdWlsZSdz
IGN1c3RvbSBiaW5hcnkgaW5wdXQgcG9ydHMgc3VwcG9ydCAnc2V0dmJ1ZicKY29uZmlndXJlOjk0
MDU6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5NDE3OiBjaGVja2luZyBmb3IgdW5pdCB0ZXN0IHJv
b3QgZGlyZWN0b3J5CmNvbmZpZ3VyZTo5NDI0OiByZXN1bHQ6IC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAKY29uZmlndXJlOjk0MzM6IGNoZWNraW5nIGZvciBndWls
ZQpjb25maWd1cmU6OTQ2MzogcmVzdWx0OiAvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6
N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d1aWxlCmNvbmZpZ3VyZTo5NDcxOiBjaGVja2luZyB0
aGUgY3VycmVudCBpbnN0YWxsYXRpb24ncyBsb2NhbHN0YXRlZGlyCmNvbmZpZ3VyZTo5NDg1OiBy
ZXN1bHQ6IG5vbmUKY29uZmlndXJlOjk1NjM6IGNoZWNraW5nIGZvciBkb3QKY29uZmlndXJlOjk1
ODE6IGZvdW5kIC9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJv
ZmlsZS9iaW4vZG90CmNvbmZpZ3VyZTo5NTk0OiByZXN1bHQ6IC9nbnUvc3RvcmUvMzJuY3draGpt
enlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZG90CmNvbmZpZ3VyZTo5NjA5OiBj
aGVja2luZyBmb3IgZW1hY3MKY29uZmlndXJlOjk2MjU6IGZvdW5kIC9nbnUvc3RvcmUvMzJuY3dr
aGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZW1hY3MKY29uZmlndXJlOjk2
MzY6IHJlc3VsdDogZW1hY3MKY29uZmlndXJlOjk2NjA6IGNoZWNraW5nIHdoZXJlIC5lbGMgZmls
ZXMgc2hvdWxkIGdvCmNvbmZpZ3VyZTo5NjczOiAkRU1BQ1MgLWJhdGNoIC1RIC1ldmFsICcod2hp
bGUgbG9hZC1wYXRoIChwcmluYyAoY29uY2F0IChjYXIgbG9hZC1wYXRoKSAiXG4iKSkgKHNldHEg
bG9hZC1wYXRoIChjZHIgbG9hZC1wYXRoKSkpJyA8L2Rldi9udWxsID5jb25mdGVzdC5vdXQKY29u
ZmlndXJlOjk2NzY6ICQ/ID0gMApjb25maWd1cmU6OTY4OTogcmVzdWx0OiAke2RhdGFkaXJ9L2Vt
YWNzL3NpdGUtbGlzcApjb25maWd1cmU6OTgyMDogY2hlY2tpbmcgdGhhdCBnZW5lcmF0ZWQgZmls
ZXMgYXJlIG5ld2VyIHRoYW4gY29uZmlndXJlCmNvbmZpZ3VyZTo5ODI2OiByZXN1bHQ6IGRvbmUK
Y29uZmlndXJlOjk4ODE6IGNyZWF0aW5nIC4vY29uZmlnLnN0YXR1cwoKIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAjIwojIyBSdW5uaW5nIGNvbmZpZy5zdGF0dXMuICMjCiMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gIyMKClRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgR05VIEd1aXggY29uZmln
LnN0YXR1cyAwLjEwLjAsIHdoaWNoIHdhcwpnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjku
ICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKCiAgQ09ORklHX0ZJTEVTICAgID0gCiAgQ09O
RklHX0hFQURFUlMgID0gCiAgQ09ORklHX0xJTktTICAgID0gCiAgQ09ORklHX0NPTU1BTkRTID0g
CiAgJCAuL2NvbmZpZy5zdGF0dXMgCgpvbiBmcmVldG9wCgpjb25maWcuc3RhdHVzOjk5MjogY3Jl
YXRpbmcgbml4L3NjcmlwdHMvbGlzdC1ydW50aW1lLXJvb3RzCmNvbmZpZy5zdGF0dXM6OTkyOiBj
cmVhdGluZyBuaXgvc2NyaXB0cy9zdWJzdGl0dXRlCmNvbmZpZy5zdGF0dXM6OTkyOiBjcmVhdGlu
ZyBuaXgvc2NyaXB0cy9ndWl4LWF1dGhlbnRpY2F0ZQpjb25maWcuc3RhdHVzOjk5MjogY3JlYXRp
bmcgbml4L3NjcmlwdHMvb2ZmbG9hZApjb25maWcuc3RhdHVzOjk5MjogY3JlYXRpbmcgTWFrZWZp
bGUKY29uZmlnLnN0YXR1czo5OTI6IGNyZWF0aW5nIHBvL2d1aXgvTWFrZWZpbGUuaW4KY29uZmln
LnN0YXR1czo5OTI6IGNyZWF0aW5nIHBvL3BhY2thZ2VzL01ha2VmaWxlLmluCmNvbmZpZy5zdGF0
dXM6OTkyOiBjcmVhdGluZyBndWl4L2NvbmZpZy5zY20KY29uZmlnLnN0YXR1czo5OTI6IGNyZWF0
aW5nIHNjcmlwdHMvZ3VpeApjb25maWcuc3RhdHVzOjk5MjogY3JlYXRpbmcgdGVzdC1lbnYKY29u
ZmlnLnN0YXR1czo5OTI6IGNyZWF0aW5nIHByZS1pbnN0LWVudgpjb25maWcuc3RhdHVzOjk5Mjog
Y3JlYXRpbmcgZW1hY3MvZ3VpeC1jb25maWcuZWwKY29uZmlnLnN0YXR1czo5OTI6IGNyZWF0aW5n
IGVtYWNzL2d1aXgtaGVscGVyLnNjbQpjb25maWcuc3RhdHVzOjk5MjogY3JlYXRpbmcgbml4L2Nv
bmZpZy5oCmNvbmZpZy5zdGF0dXM6MTIyMTogZXhlY3V0aW5nIGRlcGZpbGVzIGNvbW1hbmRzCmNv
bmZpZy5zdGF0dXM6MTIyMTogZXhlY3V0aW5nIHBvLWRpcmVjdG9yaWVzIGNvbW1hbmRzCgojIyAt
LS0tLS0tLS0tLS0tLS0tICMjCiMjIENhY2hlIHZhcmlhYmxlcy4gIyMKIyMgLS0tLS0tLS0tLS0t
LS0tLSAjIwoKYWNfY3ZfYnVpbGQ9eDg2XzY0LXVua25vd24tbGludXgtZ251CmFjX2N2X2NfY29t
cGlsZXJfZ251PXllcwphY19jdl9jeHhfY29tcGlsZXJfZ251PXllcwphY19jdl9lbnZfQ0NDX3Nl
dD0KYWNfY3ZfZW52X0NDQ192YWx1ZT0KYWNfY3ZfZW52X0NDX3NldD0KYWNfY3ZfZW52X0NDX3Zh
bHVlPQphY19jdl9lbnZfQ0ZMQUdTX3NldD0KYWNfY3ZfZW52X0NGTEFHU192YWx1ZT0KYWNfY3Zf
ZW52X0NQUEZMQUdTX3NldD0KYWNfY3ZfZW52X0NQUEZMQUdTX3ZhbHVlPQphY19jdl9lbnZfQ1BQ
X3NldD0KYWNfY3ZfZW52X0NQUF92YWx1ZT0KYWNfY3ZfZW52X0NYWENQUF9zZXQ9CmFjX2N2X2Vu
dl9DWFhDUFBfdmFsdWU9CmFjX2N2X2Vudl9DWFhGTEFHU19zZXQ9CmFjX2N2X2Vudl9DWFhGTEFH
U192YWx1ZT0KYWNfY3ZfZW52X0NYWF9zZXQ9CmFjX2N2X2Vudl9DWFhfdmFsdWU9CmFjX2N2X2Vu
dl9FTUFDU0xPQURQQVRIX3NldD0KYWNfY3ZfZW52X0VNQUNTTE9BRFBBVEhfdmFsdWU9CmFjX2N2
X2Vudl9FTUFDU19zZXQ9CmFjX2N2X2Vudl9FTUFDU192YWx1ZT0KYWNfY3ZfZW52X0dVSUxFX0NG
TEFHU19zZXQ9CmFjX2N2X2Vudl9HVUlMRV9DRkxBR1NfdmFsdWU9CmFjX2N2X2Vudl9HVUlMRV9M
SUJTX3NldD0KYWNfY3ZfZW52X0dVSUxFX0xJQlNfdmFsdWU9CmFjX2N2X2Vudl9MREZMQUdTX3Nl
dD0KYWNfY3ZfZW52X0xERkxBR1NfdmFsdWU9CmFjX2N2X2Vudl9MSUJTX3NldD0KYWNfY3ZfZW52
X0xJQlNfdmFsdWU9CmFjX2N2X2Vudl9QS0dfQ09ORklHX0xJQkRJUl9zZXQ9CmFjX2N2X2Vudl9Q
S0dfQ09ORklHX0xJQkRJUl92YWx1ZT0KYWNfY3ZfZW52X1BLR19DT05GSUdfUEFUSF9zZXQ9c2V0
CmFjX2N2X2Vudl9QS0dfQ09ORklHX1BBVEhfdmFsdWU9L2dudS9zdG9yZS8zMm5jd2toam16eXE3
ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2xpYi9wa2djb25maWc6Oi9ob21lL3NhcGllbnRl
Y2gvLmd1aXgtcHJvZmlsZS9saWIvcGtnY29uZmlnCmFjX2N2X2Vudl9QS0dfQ09ORklHX3NldD0K
YWNfY3ZfZW52X1BLR19DT05GSUdfdmFsdWU9CmFjX2N2X2Vudl9TUUxJVEUzX0NGTEFHU19zZXQ9
CmFjX2N2X2Vudl9TUUxJVEUzX0NGTEFHU192YWx1ZT0KYWNfY3ZfZW52X1NRTElURTNfTElCU19z
ZXQ9CmFjX2N2X2Vudl9TUUxJVEUzX0xJQlNfdmFsdWU9CmFjX2N2X2Vudl9idWlsZF9hbGlhc19z
ZXQ9CmFjX2N2X2Vudl9idWlsZF9hbGlhc192YWx1ZT0KYWNfY3ZfZW52X2hvc3RfYWxpYXNfc2V0
PQphY19jdl9lbnZfaG9zdF9hbGlhc192YWx1ZT0KYWNfY3ZfZW52X3RhcmdldF9hbGlhc19zZXQ9
CmFjX2N2X2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9CmFjX2N2X2Z1bmNfY2hyb290PXllcwphY19j
dl9mdW5jX2xjaG93bj15ZXMKYWNfY3ZfZnVuY19sdXRpbWVzPXllcwphY19jdl9mdW5jX25hbm9z
bGVlcD15ZXMKYWNfY3ZfZnVuY19wb3NpeF9mYWxsb2NhdGU9eWVzCmFjX2N2X2Z1bmNfc2NoZWRf
c2V0YWZmaW5pdHk9eWVzCmFjX2N2X2Z1bmNfc3RhdHZmcz15ZXMKYWNfY3ZfZnVuY19zdHJzaWdu
YWw9eWVzCmFjX2N2X2Z1bmNfdW5zaGFyZT15ZXMKYWNfY3ZfZ3VpeF9jYmlwc19zdXBwb3J0X3Nl
dHZidWY9eWVzCmFjX2N2X2d1aXhfY3h4MTFfc3VwcG9ydD15ZXMKYWNfY3ZfZ3VpeF9oYXNoX2Jh
bmdfbGVuZ3RoPTczCmFjX2N2X2d1aXhfc29ja2V0X2ZpbGVfbmFtZV9sZW5ndGg9NDAKYWNfY3Zf
Z3VpeF9zcmZpXzM3X2Jyb2tlbj1ubwphY19jdl9ndWl4X3Rlc3RfaGFzaF9iYW5nX2xlbmd0aD0x
MTIKYWNfY3ZfZ3VpeF90ZXN0X3Jvb3Q9L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0LXRtcAphY19jdl9ndWl4X3Rlc3Rfc29ja2V0X2ZpbGVfbmFtZV9sZW5ndGg9NzUKYWNf
Y3ZfaGVhZGVyX2J6bGliX2g9eWVzCmFjX2N2X2hlYWRlcl9nY3J5cHRfaD15ZXMKYWNfY3ZfaGVh
ZGVyX2ludHR5cGVzX2g9eWVzCmFjX2N2X2hlYWRlcl9saW51eF9mc19oPXllcwphY19jdl9oZWFk
ZXJfbG9jYWxlPXllcwphY19jdl9oZWFkZXJfbWVtb3J5X2g9eWVzCmFjX2N2X2hlYWRlcl9taW5p
eF9jb25maWdfaD1ubwphY19jdl9oZWFkZXJfc2NoZWRfaD15ZXMKYWNfY3ZfaGVhZGVyX3N0ZGM9
eWVzCmFjX2N2X2hlYWRlcl9zdGRpbnRfaD15ZXMKYWNfY3ZfaGVhZGVyX3N0ZGxpYl9oPXllcwph
Y19jdl9oZWFkZXJfc3RyaW5nX2g9eWVzCmFjX2N2X2hlYWRlcl9zdHJpbmdzX2g9eWVzCmFjX2N2
X2hlYWRlcl9zeXNfbW91bnRfaD15ZXMKYWNfY3ZfaGVhZGVyX3N5c19wYXJhbV9oPXllcwphY19j
dl9oZWFkZXJfc3lzX3BlcnNvbmFsaXR5X2g9eWVzCmFjX2N2X2hlYWRlcl9zeXNfc3RhdF9oPXll
cwphY19jdl9oZWFkZXJfc3lzX3N5c2NhbGxfaD15ZXMKYWNfY3ZfaGVhZGVyX3N5c190eXBlc19o
PXllcwphY19jdl9oZWFkZXJfdW5pc3RkX2g9eWVzCmFjX2N2X2hvc3Q9eDg2XzY0LXVua25vd24t
bGludXgtZ251CmFjX2N2X2xpYl9iejJfQloyX2J6V3JpdGVPcGVuPXllcwphY19jdl9saWJfZ2Ny
eXB0X2djcnlfbWRfb3Blbj15ZXMKYWNfY3Zfb2JqZXh0PW8KYWNfY3ZfcGF0aF9CWklQMj0vZ251
L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2J6aXAy
CmFjX2N2X3BhdGhfRE9UX1VTRVJfUFJPR1JBTT0vZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2Jx
Mnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2RvdAphY19jdl9wYXRoX0VHUkVQPScvZ251L3N0
b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2dyZXAgLUUn
CmFjX2N2X3BhdGhfR01TR0ZNVD0vZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3Iz
OXgwcmg3LXByb2ZpbGUvYmluL21zZ2ZtdAphY19jdl9wYXRoX0dSRVA9L2dudS9zdG9yZS8zMm5j
d2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9ncmVwCmFjX2N2X3BhdGhf
R1VJTEQ9L2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxl
L2Jpbi9ndWlsZAphY19jdl9wYXRoX0dVSUxFPS9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEy
eHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ3VpbGUKYWNfY3ZfcGF0aF9HVUlMRV9DT05GSUc9
L2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9n
dWlsZS1jb25maWcKYWNfY3ZfcGF0aF9HWklQPS9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEy
eHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ3ppcAphY19jdl9wYXRoX0xJQkdDUllQVF9DT05G
SUc9L2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jp
bi9saWJnY3J5cHQtY29uZmlnCmFjX2N2X3BhdGhfTVNHRk1UPS9nbnUvc3RvcmUvMzJuY3draGpt
enlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vbXNnZm10CmFjX2N2X3BhdGhfTVNH
TUVSR0U9L2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxl
L2Jpbi9tc2dtZXJnZQphY19jdl9wYXRoX1NFRD0vZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2Jx
Mnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL3NlZAphY19jdl9wYXRoX1hHRVRURVhUPS9nbnUv
c3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4veGdldHRl
eHQKYWNfY3ZfcGF0aF9YWj0vZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgw
cmg3LXByb2ZpbGUvYmluL3h6CmFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0vZ251L3N0b3Jl
LzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL3BrZy1jb25maWcK
YWNfY3ZfcGF0aF9pbnN0YWxsPScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3Iz
OXgwcmg3LXByb2ZpbGUvYmluL2luc3RhbGwgLWMnCmFjX2N2X3BhdGhfbWtkaXI9L2dudS9zdG9y
ZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9ta2RpcgphY19j
dl9wcm9nX0FXSz1nYXdrCmFjX2N2X3Byb2dfQ1BQPSdnY2MgLUUnCmFjX2N2X3Byb2dfQ1hYQ1BQ
PSdnKysgLUUnCmFjX2N2X3Byb2dfRU1BQ1M9ZW1hY3MKYWNfY3ZfcHJvZ19hY19jdF9DQz1nY2MK
YWNfY3ZfcHJvZ19hY19jdF9DWFg9ZysrCmFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPXJhbmxpYgph
Y19jdl9wcm9nX2NjX2M4OT0KYWNfY3ZfcHJvZ19jY19nPXllcwphY19jdl9wcm9nX2N4eF9nPXll
cwphY19jdl9wcm9nX21ha2VfbWFrZV9zZXQ9eWVzCmFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0
ZW5zaW9uc19fPXllcwphY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubwphY19jdl9zeXNfbGFy
Z2VmaWxlX0NDPW5vCmFjbF9jdl9oYXJkY29kZV9kaXJlY3Q9bm8KYWNsX2N2X2hhcmRjb2RlX2xp
YmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKYWNsX2N2X2hhcmRjb2Rl
X2xpYmRpcl9zZXBhcmF0b3I9CmFjbF9jdl9oYXJkY29kZV9taW51c19MPW5vCmFjbF9jdl9saWJl
eHQ9YQphY2xfY3ZfbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKYWNsX2N2X2xpYnJhcnlfbmFtZXNf
c3BlYz0nJGxpYm5hbWUkc2hyZXh0JwphY2xfY3ZfcGF0aF9MRD0vZ251L3N0b3JlLzMybmN3a2hq
bXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2xkCmFjbF9jdl9wcm9nX2dudV9s
ZD15ZXMKYWNsX2N2X3JwYXRoPWRvbmUKYWNsX2N2X3NobGliZXh0PXNvCmFjbF9jdl93bD0tV2ws
CmFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPWdjYzMKYW1fY3ZfQ1hYX2RlcGVu
ZGVuY2llc19jb21waWxlcl90eXBlPWdjYzMKYW1fY3ZfbGlzcGRpcj0nJHtkYXRhZGlyfS9lbWFj
cy9zaXRlLWxpc3AnCmFtX2N2X21ha2Vfc3VwcG9ydF9uZXN0ZWRfdmFyaWFibGVzPXllcwphbV9j
dl9wcm9nX2NjX2Nfbz15ZXMKZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50PW5vCmd0X2N2
X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT1ubwpndF9jdl9mdW5jX2dudWdldHRleHQx
X2xpYmM9eWVzCmd1aXhfY3ZfY3VycmVudF9sb2NhbHN0YXRlZGlyPW5vbmUKZ3VpeF9jdl9saWJj
X2hhc19tb3VudD15ZXMKZ3VpeF9jdl9saWJnY3J5cHRfbGliZGlyPS9nbnUvc3RvcmUvN3dmYnBy
cDFiOWIyNWNybGlkZzZoN2I2aHBpYjJiOTktbGliZ2NyeXB0LTEuNi41L2xpYgpndWl4X2N2X2xp
YmdjcnlwdF91c2FibGVfcD15ZXMKZ3VpeF9jdl9saWJ6X2xpYmRpcj0vZ251L3N0b3JlL2hzeGhm
bWpnaDhtNGMwcGF2cTNnZDNnY3JuOHpyZ3hqLXpsaWItMS4yLjgvbGliCnBrZ19jdl9HVUlMRV9D
RkxBR1M9Jy1wdGhyZWFkIC1JL2dudS9zdG9yZS9oeWsyaTdiOG13YnJiaXlxazVzZ3JmZ2RzOXp2
Y3JuNS1ndWlsZS0yLjAuMTEvaW5jbHVkZS9ndWlsZS8yLjAnCnBrZ19jdl9HVUlMRV9MSUJTPSct
TC9nbnUvc3RvcmUvaHlrMmk3Yjhtd2JyYml5cWs1c2dyZmdkczl6dmNybjUtZ3VpbGUtMi4wLjEx
L2xpYiAtTC9nbnUvc3RvcmUvbXk0YXo3MWd6OGlxZDR3OGtiMzRrcTd2bGszZmN2aG0tbGliZ2Mt
Ny40LjIvbGliIC1sZ3VpbGUtMi4wIC1sZ2MnCnBrZ19jdl9TUUxJVEUzX0NGTEFHUz0tSS9nbnUv
c3RvcmUveTdoOGdmODkwcWFqNmYyM3J5c2h3eGQzcjl5OTZjbmMtc3FsaXRlLTMuMTAuMC9pbmNs
dWRlCnBrZ19jdl9TUUxJVEUzX0xJQlM9Jy1ML2dudS9zdG9yZS95N2g4Z2Y4OTBxYWo2ZjIzcnlz
aHd4ZDNyOXk5NmNuYy1zcWxpdGUtMy4xMC4wL2xpYiAtbHNxbGl0ZTMnCgojIyAtLS0tLS0tLS0t
LS0tLS0tLSAjIwojIyBPdXRwdXQgdmFyaWFibGVzLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLSAj
IwoKQUNMT0NBTD0nJHtTSEVMTH0gL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC9i
dWlsZC1hdXgvbWlzc2luZyBhY2xvY2FsLTEuMTUnCkFNREVQQkFDS1NMQVNIPSdcJwpBTURFUF9G
QUxTRT0nIycKQU1ERVBfVFJVRT0nJwpBTVRBUj0nJCR7VEFSLXRhcn0nCkFNX0JBQ0tTTEFTSD0n
XCcKQU1fREVGQVVMVF9WPSckKEFNX0RFRkFVTFRfVkVSQk9TSVRZKScKQU1fREVGQVVMVF9WRVJC
T1NJVFk9JzAnCkFNX1Y9JyQoViknCkFVVE9DT05GPScke1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNo
L0Rldi9ndWl4L2d1aXhfd2lwL2J1aWxkLWF1eC9taXNzaW5nIGF1dG9jb25mJwpBVVRPSEVBREVS
PScke1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL2J1aWxkLWF1eC9t
aXNzaW5nIGF1dG9oZWFkZXInCkFVVE9NQUtFPScke1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL2J1aWxkLWF1eC9taXNzaW5nIGF1dG9tYWtlLTEuMTUnCkFXSz0nZ2F3
aycKQlVJTERfREFFTU9OX0ZBTFNFPScjJwpCVUlMRF9EQUVNT05fT0ZGTE9BRF9GQUxTRT0nIycK
QlVJTERfREFFTU9OX09GRkxPQURfVFJVRT0nJwpCVUlMRF9EQUVNT05fVFJVRT0nJwpCVUlMRF9T
WVNDQUxMU19NT0RVTEVfRkFMU0U9JyMnCkJVSUxEX1NZU0NBTExTX01PRFVMRV9UUlVFPScnCkJa
SVAyPScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUv
YmluL2J6aXAyJwpDQU5fUlVOX1RFU1RTX0ZBTFNFPScjJwpDQU5fUlVOX1RFU1RTX1RSVUU9JycK
Q0M9J2djYycKQ0NERVBNT0RFPSdkZXBtb2RlPWdjYzMnCkNGTEFHUz0nLWcgLU8yJwpDUFA9J2dj
YyAtRScKQ1BQRkxBR1M9JycKQ1hYPSdnKysnCkNYWENQUD0nZysrIC1FJwpDWFhERVBNT0RFPSdk
ZXBtb2RlPWdjYzMnCkNYWEZMQUdTPSctZyAtTzInCkNZR1BBVEhfVz0nZWNobycKREVGUz0nLURI
QVZFX0NPTkZJR19IJwpERVBESVI9Jy5kZXBzJwpET1Q9JyR7U0hFTEx9IC9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvYnVpbGQtYXV4L21pc3NpbmcgZG90JwpET1RfVVNFUl9QUk9H
UkFNPScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUv
YmluL2RvdCcKRUNIT19DPScnCkVDSE9fTj0nLW4nCkVDSE9fVD0nJwpFR1JFUD0nL2dudS9zdG9y
ZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9ncmVwIC1FJwpF
TUFDUz0nZW1hY3MnCkVNQUNTTE9BRFBBVEg9JycKRVhFRVhUPScnCkdFVFRFWFRfTUFDUk9fVkVS
U0lPTj0nMC4xOCcKR01TR0ZNVD0nL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNy
Mzl4MHJoNy1wcm9maWxlL2Jpbi9tc2dmbXQnCkdNU0dGTVRfMDE1PScvZ251L3N0b3JlLzMybmN3
a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL21zZ2ZtdCcKR1JFUD0nL2du
dS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9ncmVw
JwpHVUlMRD0nL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9m
aWxlL2Jpbi9ndWlsZCcKR1VJTEU9Jy9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYz
cjM5eDByaDctcHJvZmlsZS9iaW4vZ3VpbGUnCkdVSUxFX0NGTEFHUz0nLXB0aHJlYWQgLUkvZ251
L3N0b3JlL2h5azJpN2I4bXdicmJpeXFrNXNncmZnZHM5enZjcm41LWd1aWxlLTIuMC4xMS9pbmNs
dWRlL2d1aWxlLzIuMCcKR1VJTEVfQ09ORklHPScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2Jx
Mnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL2d1aWxlLWNvbmZpZycKR1VJTEVfTElCUz0nLUwv
Z251L3N0b3JlL2h5azJpN2I4bXdicmJpeXFrNXNncmZnZHM5enZjcm41LWd1aWxlLTIuMC4xMS9s
aWIgLUwvZ251L3N0b3JlL215NGF6NzFnejhpcWQ0dzhrYjM0a3E3dmxrM2ZjdmhtLWxpYmdjLTcu
NC4yL2xpYiAtbGd1aWxlLTIuMCAtbGdjJwpHVUlMRV9UT09MUz0nL2dudS9zdG9yZS8zMm5jd2to
am16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9ndWlsZCcKR1VJWF9URVNUX1JP
T1Q9Jy9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAnCkdaSVA9Jy9n
bnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vZ3pp
cCcKSEFWRV9FTUFDU19GQUxTRT0nIycKSEFWRV9FTUFDU19UUlVFPScnCkhBVkVfR1VJTEVfSlNP
Tl9GQUxTRT0nIycKSEFWRV9HVUlMRV9KU09OX1RSVUU9JycKSEVMUDJNQU49JyR7U0hFTEx9IC9o
b21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvYnVpbGQtYXV4L21pc3NpbmcgaGVscDJt
YW4nCklOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnCklOU1RBTExfUFJPR1JBTT0nJHtJ
TlNUQUxMfScKSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCklOU1RBTExfU1JGSV8zN19GQUxT
RT0nJwpJTlNUQUxMX1NSRklfMzdfVFJVRT0nIycKSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSckKGlu
c3RhbGxfc2gpIC1jIC1zJwpJTlRMTElCUz0nJwpJTlRMX01BQ09TWF9MSUJTPScnCkxERkxBR1M9
JycKTElCR0NSWVBUPScvZ251L3N0b3JlLzd3ZmJwcnAxYjliMjVjcmxpZGc2aDdiNmhwaWIyYjk5
LWxpYmdjcnlwdC0xLjYuNS9saWIvbGliZ2NyeXB0JwpMSUJHQ1JZUFRfQ0ZMQUdTPScnCkxJQkdD
UllQVF9DT05GSUc9Jy9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDct
cHJvZmlsZS9iaW4vbGliZ2NyeXB0LWNvbmZpZycKTElCR0NSWVBUX0xJQkRJUj0nL2dudS9zdG9y
ZS83d2ZicHJwMWI5YjI1Y3JsaWRnNmg3YjZocGliMmI5OS1saWJnY3J5cHQtMS42LjUvbGliJwpM
SUJHQ1JZUFRfTElCUz0nLUwvZ251L3N0b3JlLzd3ZmJwcnAxYjliMjVjcmxpZGc2aDdiNmhwaWIy
Yjk5LWxpYmdjcnlwdC0xLjYuNS9saWIgLWxnY3J5cHQnCkxJQkdDUllQVF9QUkVGSVg9J25vJwpM
SUJJQ09OVj0nLWxpY29udicKTElCSU5UTD0nJwpMSUJPQkpTPScnCkxJQlM9JycKTElCWj0nL2du
dS9zdG9yZS9oc3hoZm1qZ2g4bTRjMHBhdnEzZ2QzZ2Nybjh6cmd4ai16bGliLTEuMi44L2xpYi9s
aWJ6JwpMVExJQklDT05WPSctbGljb252JwpMVExJQklOVEw9JycKTFRMSUJPQkpTPScnCk1BS0VJ
TkZPPScke1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL2J1aWxkLWF1
eC9taXNzaW5nIG1ha2VpbmZvJwpNS0RJUl9QPScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2Jx
Mnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvYmluL21rZGlyIC1wJwpNU0dGTVQ9Jy9nbnUvc3RvcmUv
MzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vbXNnZm10JwpNU0dG
TVRfMDE1PScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2Zp
bGUvYmluL21zZ2ZtdCcKTVNHTUVSR0U9Jy9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3
bGYzcjM5eDByaDctcHJvZmlsZS9iaW4vbXNnbWVyZ2UnCk5JWFBLR1M9JycKTklYX0hBU0g9JycK
TklYX0lOU1RBTlRJQVRFPSduaXgtaW5zdGFudGlhdGUnCk5JWF9QUkVGSVg9JycKT0JKRVhUPSdv
JwpQQUNLQUdFPSdndWl4JwpQQUNLQUdFX0JVR1JFUE9SVD0nYnVnLWd1aXhAZ251Lm9yZycKUEFD
S0FHRV9OQU1FPSdHTlUgR3VpeCcKUEFDS0FHRV9TVFJJTkc9J0dOVSBHdWl4IDAuMTAuMCcKUEFD
S0FHRV9UQVJOQU1FPSdndWl4JwpQQUNLQUdFX1VSTD0naHR0cDovL3d3dy5nbnUub3JnL3NvZnR3
YXJlL2d1aXgvJwpQQUNLQUdFX1ZFUlNJT049JzAuMTAuMCcKUEFUSF9TRVBBUkFUT1I9JzonClBL
R19DT05GSUc9Jy9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJv
ZmlsZS9iaW4vcGtnLWNvbmZpZycKUEtHX0NPTkZJR19MSUJESVI9JycKUEtHX0NPTkZJR19QQVRI
PScvZ251L3N0b3JlLzMybmN3a2hqbXp5cTdqN2JxMnh6N2xmM3IzOXgwcmg3LXByb2ZpbGUvbGli
L3BrZ2NvbmZpZzo6L2hvbWUvc2FwaWVudGVjaC8uZ3VpeC1wcm9maWxlL2xpYi9wa2djb25maWcn
ClBPU1VCPSdwbycKUkFOTElCPSdyYW5saWInClNFRD0nL2dudS9zdG9yZS8zMm5jd2toam16eXE3
ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9zZWQnClNFVF9NQUtFPScnClNIRUxMPScv
YmluL3NoJwpTUUxJVEUzX0NGTEFHUz0nLUkvZ251L3N0b3JlL3k3aDhnZjg5MHFhajZmMjNyeXNo
d3hkM3I5eTk2Y25jLXNxbGl0ZS0zLjEwLjAvaW5jbHVkZScKU1FMSVRFM19MSUJTPSctTC9nbnUv
c3RvcmUveTdoOGdmODkwcWFqNmYyM3J5c2h3eGQzcjl5OTZjbmMtc3FsaXRlLTMuMTAuMC9saWIg
LWxzcWxpdGUzJwpTVFJJUD0nJwpVU0VfTkxTPSd5ZXMnClZFUlNJT049JzAuMTAuMCcKWEdFVFRF
WFQ9Jy9nbnUvc3RvcmUvMzJuY3draGptenlxN2o3YnEyeHo3bGYzcjM5eDByaDctcHJvZmlsZS9i
aW4veGdldHRleHQnClhHRVRURVhUXzAxNT0nL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4
ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi94Z2V0dGV4dCcKWEdFVFRFWFRfRVhUUkFfT1BUSU9O
Uz0nJwpYWj0nL2dudS9zdG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9m
aWxlL2Jpbi94eicKYWNfY3RfQ0M9J2djYycKYWNfY3RfQ1hYPSdnKysnCmFtX19FWEVFWFRfRkFM
U0U9JycKYW1fX0VYRUVYVF9UUlVFPScjJwphbV9fZmFzdGRlcENDX0ZBTFNFPScjJwphbV9fZmFz
dGRlcENDX1RSVUU9JycKYW1fX2Zhc3RkZXBDWFhfRkFMU0U9JyMnCmFtX19mYXN0ZGVwQ1hYX1RS
VUU9JycKYW1fX2luY2x1ZGU9J2luY2x1ZGUnCmFtX19pc3JjPScnCmFtX19sZWFkaW5nX2RvdD0n
LicKYW1fX25vZGVwPSdfbm8nCmFtX19xdW90ZT0nJwphbV9fdGFyPSckJHtUQVItdGFyfSBjaG9m
IC0gIiQkdGFyZGlyIicKYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJwpiYXNoY29tcGxldGlv
bmRpcj0nJHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZCcKYmluZGlyPScke2V4ZWNfcHJl
Zml4fS9iaW4nCmJ1aWxkPSd4ODZfNjQtdW5rbm93bi1saW51eC1nbnUnCmJ1aWxkX2FsaWFzPScn
CmJ1aWxkX2NwdT0neDg2XzY0JwpidWlsZF9vcz0nbGludXgtZ251JwpidWlsZF92ZW5kb3I9J3Vu
a25vd24nCmRhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9JwpkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3No
YXJlJwpkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nCmR2aWRp
cj0nJHtkb2NkaXJ9JwplbWFjc3VpZGlyPScke3ByZWZpeH0vc2hhcmUvZ3VpbGUvc2l0ZS8yLjAv
Z3VpeC9lbWFjcycKZXhlY19wcmVmaXg9JyR7cHJlZml4fScKZ3VpbGVtb2R1bGVkaXI9JyR7cHJl
Zml4fS9zaGFyZS9ndWlsZS9zaXRlLzIuMCcKZ3VpeF9sb2NhbHN0YXRlZGlyPScvdXNyL2xvY2Fs
L3ZhcicKZ3VpeF9zYmluZGlyPScvdXNyL2xvY2FsL3NiaW4nCmd1aXhfc3lzY29uZmRpcj0nL3Vz
ci9sb2NhbC9ldGMnCmd1aXhfc3lzdGVtPSd4ODZfNjQtbGludXgnCmhvc3Q9J3g4Nl82NC11bmtu
b3duLWxpbnV4LWdudScKaG9zdF9hbGlhcz0nJwpob3N0X2NwdT0neDg2XzY0Jwpob3N0X29zPSds
aW51eC1nbnUnCmhvc3RfdmVuZG9yPSd1bmtub3duJwpodG1sZGlyPScke2RvY2Rpcn0nCmluY2x1
ZGVkaXI9JyR7cHJlZml4fS9pbmNsdWRlJwppbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJwpp
bnN0YWxsX3NoPScke1NIRUxMfSAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL2J1
aWxkLWF1eC9pbnN0YWxsLXNoJwpsaWJkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYicKbGliZXhlY2Rp
cj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycKbGlzcGRpcj0nJHtkYXRhZGlyfS9lbWFjcy9zaXRl
LWxpc3AnCmxvY2FsZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJwpsb2NhbHN0YXRlZGlyPSck
e3ByZWZpeH0vdmFyJwptYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicKbWtkaXJfcD0nL2dudS9z
dG9yZS8zMm5jd2toam16eXE3ajdicTJ4ejdsZjNyMzl4MHJoNy1wcm9maWxlL2Jpbi9ta2RpciAt
cCcKb2xkaW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJwpwZGZkaXI9JyR7ZG9jZGlyfScKcHJlZml4
PScvdXNyL2xvY2FsJwpwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSdzLHgseCwnCnBzZGlyPScke2Rv
Y2Rpcn0nCnNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nCnNoYXJlZHN0YXRlZGlyPScke3By
ZWZpeH0vY29tJwpzdG9yZWRpcj0nL2dudS9zdG9yZScKc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0
YycKdGFyZ2V0X2FsaWFzPScnCgojIyAtLS0tLS0tLS0tLSAjIwojIyBjb25mZGVmcy5oLiAjIwoj
IyAtLS0tLS0tLS0tLSAjIwoKLyogY29uZmRlZnMuaCAqLwojZGVmaW5lIFBBQ0tBR0VfTkFNRSAi
R05VIEd1aXgiCiNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJndWl4IgojZGVmaW5lIFBBQ0tBR0Vf
VkVSU0lPTiAiMC4xMC4wIgojZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHTlUgR3VpeCAwLjEwLjAi
CiNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImJ1Zy1ndWl4QGdudS5vcmciCiNkZWZpbmUgUEFD
S0FHRV9VUkwgImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ndWl4LyIKI2RlZmluZSBQQUNL
QUdFICJndWl4IgojZGVmaW5lIFZFUlNJT04gIjAuMTAuMCIKI2RlZmluZSBTVERDX0hFQURFUlMg
MQojZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQojZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCiNk
ZWZpbmUgSEFWRV9TVERMSUJfSCAxCiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCiNkZWZpbmUgSEFW
RV9NRU1PUllfSCAxCiNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQojZGVmaW5lIEhBVkVfSU5UVFlQ
RVNfSCAxCiNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCiNkZWZpbmUgSEFWRV9VTklTVERfSCAxCiNk
ZWZpbmUgX19FWFRFTlNJT05TX18gMQojZGVmaW5lIF9BTExfU09VUkNFIDEKI2RlZmluZSBfR05V
X1NPVVJDRSAxCiNkZWZpbmUgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEKI2RlZmluZSBfVEFO
REVNX1NPVVJDRSAxCiNkZWZpbmUgRU5BQkxFX05MUyAxCiNkZWZpbmUgSEFWRV9HRVRURVhUIDEK
I2RlZmluZSBIQVZFX0RDR0VUVEVYVCAxCiNkZWZpbmUgSEFWRV9CWkxJQl9IIDEKI2RlZmluZSBO
SVhfVkVSU0lPTiAiMC4wLjAiCiNkZWZpbmUgU1lTVEVNICJ4ODZfNjQtbGludXgiCiNkZWZpbmUg
SEFWRV9DSFJPT1QgMQojZGVmaW5lIEhBVkVfVU5TSEFSRSAxCiNkZWZpbmUgSEFWRV9TQ0hFRF9I
IDEKI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKI2RlZmluZSBIQVZFX1NZU19NT1VOVF9IIDEK
I2RlZmluZSBIQVZFX1NZU19TWVNDQUxMX0ggMQojZGVmaW5lIEhBVkVfTFVUSU1FUyAxCiNkZWZp
bmUgSEFWRV9MQ0hPV04gMQojZGVmaW5lIEhBVkVfUE9TSVhfRkFMTE9DQVRFIDEKI2RlZmluZSBI
QVZFX1NDSEVEX1NFVEFGRklOSVRZIDEKI2RlZmluZSBIQVZFX1NUQVRWRlMgMQojZGVmaW5lIEhB
VkVfTkFOT1NMRUVQIDEKI2RlZmluZSBIQVZFX1NUUlNJR05BTCAxCiNkZWZpbmUgQ0FOX0xJTktf
U1lNTElOSyAxCiNkZWZpbmUgSEFWRV9MT0NBTEUgMQojZGVmaW5lIEhBVkVfU1lTX1BFUlNPTkFM
SVRZX0ggMQojZGVmaW5lIEhBVkVfTElOVVhfRlNfSCAxCiNkZWZpbmUgR1VJWF9TVUJTVElUVVRF
X1VSTFMgImh0dHBzOi8vbWlycm9yLmh5ZHJhLmdudS5vcmciCiNkZWZpbmUgSEFWRV9EQUVNT05f
T0ZGTE9BRF9IT09LIDEKCmNvbmZpZ3VyZTogZXhpdCAwCg==
--=_e9a6df70a27b00c7c1a80573c06d6b2d
Content-Transfer-Encoding: base64
Content-Type: text/plain;
 name=test-suite.log
Content-Disposition: attachment;
 filename=test-suite.log;
 size=194521

PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEdOVSBHdWl4IDAuMTAu
MDogLi90ZXN0LXN1aXRlLmxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KCiMgVE9UQUw6IDYwNAojIFBBU1M6ICA1ODIKIyBTS0lQOiAgNwojIFhGQUlMOiAwCiMgRkFJ
TDogIDE1CiMgWFBBU1M6IDAKIyBFUlJPUjogMAoKLi4gY29udGVudHM6OiA6ZGVwdGg6IDIKClNL
SVA6IHRlc3RzL2Jhc2UzMgo9PT09PT09PT09PT09PT09PT0KCnNoOiBuaXgtaGFzaDogY29tbWFu
ZCBub3QgZm91bmQKdGVzdC1uYW1lOiBieXRldmVjdG9yLT5iYXNlMzItc3RyaW5nCmxvY2F0aW9u
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2Jhc2UzMi5zY206NDgK
c291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImJ5dGV2ZWN0b3ItPmJhc2UzMi1zdHJpbmciCisg
ICAoZm9sZCAobGFtYmRhIChidiBleHBlY3RlZCByZXN1bHQpCisgICAgICAgICAgIChhbmQgcmVz
dWx0CisgICAgICAgICAgICAgICAgKHN0cmluZz0/CisgICAgICAgICAgICAgICAgICAoYnl0ZXZl
Y3Rvci0+YmFzZTMyLXN0cmluZyBidikKKyAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKSkpCisg
ICAgICAgICAjdAorICAgICAgICAgKG1hcCBzdHJpbmctPnV0ZjgKKyAgICAgICAgICAgICAgJygi
IiAiZiIgImZvIiAiZm9vIiAiZm9vYiIgImZvb2JhIiAiZm9vYmFyIikpCisgICAgICAgICAnKCIi
CisgICAgICAgICAgICJteSIKKyAgICAgICAgICAgIm16eHEiCisgICAgICAgICAgICJtenh3NiIK
KyAgICAgICAgICAgIm16eHc2eXEiCisgICAgICAgICAgICJtenh3Nnl0YiIKKyAgICAgICAgICAg
Im16eHc2eXRib2kiKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6
IGJhc2UzMi1zdHJpbmctPmJ5dGV2ZWN0b3IKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdHMvYmFzZTMyLnNjbTo2NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0
CisgICAiYmFzZTMyLXN0cmluZy0+Ynl0ZXZlY3RvciIKKyAgIChldmVyeSAobGFtYmRhIChidikK
KyAgICAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgICAgKGJhc2UzMi1zdHJpbmctPmJ5dGV2
ZWN0b3IKKyAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+YmFzZTMyLXN0cmluZyBidikpCisg
ICAgICAgICAgICAgIGJ2KSkKKyAgICAgICAgICAobWFwIHN0cmluZy0+dXRmOAorICAgICAgICAg
ICAgICAgJygiIiAiZiIgImZvIiAiZm9vIiAiZm9vYiIgImZvb2JhIiAiZm9vYmFyIikpKSkKYWN0
dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbml4LWJhc2UzMi1zdHJpbmct
PmJ5dGV2ZWN0b3IKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdHMvYmFzZTMyLnNjbTo3Mwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAibml4LWJhc2Uz
Mi1zdHJpbmctPmJ5dGV2ZWN0b3IiCisgICAoZXZlcnkgKGxhbWJkYSAoYnYpCisgICAgICAgICAg
ICAoZXF1YWw/CisgICAgICAgICAgICAgIChuaXgtYmFzZTMyLXN0cmluZy0+Ynl0ZXZlY3Rvcgor
ICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZyBidikpCisgICAg
ICAgICAgICAgIGJ2KSkKKyAgICAgICAgICAobWFwIHN0cmluZy0+dXRmOAorICAgICAgICAgICAg
ICAgJygiIiAiZiIgImZvIiAiZm9vIiAiZm9vYiIgImZvb2JhIiAiZm9vYmFyIikpKSkKYWN0dWFs
LXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogJmludmFsaWQtYmFzZTMyLWNoYXJh
Y3Rlcgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9i
YXNlMzIuc2NtOjgxCnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAgIiZpbnZhbGlkLWJhc2UzMi1j
aGFyYWN0ZXIiCisgICAjXGUKKyAgIChndWFyZCAoYyAoKGludmFsaWQtYmFzZTMyLWNoYXJhY3Rl
cj8gYykKKyAgICAgICAgICAgICAgKGludmFsaWQtYmFzZTMyLWNoYXJhY3Rlci12YWx1ZSBjKSkp
CisgICAgICAgICAgKG5peC1iYXNlMzItc3RyaW5nLT5ieXRldmVjdG9yCisgICAgICAgICAgICAo
c3RyaW5nLWFwcGVuZCAobWFrZS1zdHJpbmcgNTEgI1xhKSAiZSIpKSkpCmV4cGVjdGVkLXZhbHVl
OiBlCmFjdHVhbC12YWx1ZTogZQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogc2hhMjU2ICYgYnl0
ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmcKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdHMvYmFzZTMyLnNjbTo5Mgpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0
CisgICAic2hhMjU2ICYgYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmciCisgICAobGV0ICgo
ZmlsZSAoc2VhcmNoLXBhdGggJWxvYWQtcGF0aCAidGVzdHMvdGVzdC5kcnYiKSkpCisgICAgIChl
cXVhbD8KKyAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmcKKyAgICAgICAgIChz
aGEyNTYKKyAgICAgICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGZpbGUgZ2V0LWJ5dGV2ZWN0
b3ItYWxsKSkpCisgICAgICAgKGxldCogKChjIChmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAj
ZgorICAgICAgICAgICAgICAgICAgICJ+YSAtLXR5cGUgc2hhMjU2IC0tYmFzZTMyIC0tZmxhdCBc
In5hXCIiCisgICAgICAgICAgICAgICAgICAgJW5peC1oYXNoCisgICAgICAgICAgICAgICAgICAg
ZmlsZSkpCisgICAgICAgICAgICAgIChwIChvcGVuLWlucHV0LXBpcGUgYykpCisgICAgICAgICAg
ICAgIChsIChyZWFkLWxpbmUgcCkpKQorICAgICAgICAgKGNsb3NlLXBpcGUgcCkKKyAgICAgICAg
IGwpKSkpCnJlc3VsdDogU0tJUAoKClNLSVA6IHRlc3RzL2NwaW8KPT09PT09PT09PT09PT09PQoK
dGVzdC1uYW1lOiBmaWxlLT5jcGlvLWhlYWRlciArIHdyaXRlLWNwaW8taGVhZGVyICsgcmVhZC1j
cGlvLWhlYWRlcgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0cy9jcGlvLnNjbTozNwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZmlsZS0+Y3Bpby1o
ZWFkZXIgKyB3cml0ZS1jcGlvLWhlYWRlciArIHJlYWQtY3Bpby1oZWFkZXIiCisgICAobGV0KiAo
KGZpbGUgKHNlYXJjaC1wYXRoICVsb2FkLXBhdGggImd1aXguc2NtIikpCisgICAgICAgICAgKGhl
YWRlciAoZmlsZS0+Y3Bpby1oZWFkZXIgZmlsZSkpKQorICAgICAoY2FsbC13aXRoLXZhbHVlcwor
ICAgICAgIChsYW1iZGEgKCkgKG9wZW4tYnl0ZXZlY3Rvci1vdXRwdXQtcG9ydCkpCisgICAgICAg
KGxhbWJkYSAocG9ydCBnZXQtYnYpCisgICAgICAgICAod3JpdGUtY3Bpby1oZWFkZXIgaGVhZGVy
IHBvcnQpCisgICAgICAgICAobGV0ICgocG9ydCAob3Blbi1ieXRldmVjdG9yLWlucHV0LXBvcnQg
KGdldC1idikpKSkKKyAgICAgICAgICAgKGVxdWFsPyBoZWFkZXIgKHJlYWQtY3Bpby1oZWFkZXIg
cG9ydCkpKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogYml0
LWlkZW50aWNhbCB0byBHTlUgY3BpbydzIG91dHB1dApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9jcGlvLnNjbTo0OQpzb3VyY2U6CisgKHRlc3QtYXNz
ZXJ0CisgICAiYml0LWlkZW50aWNhbCB0byBHTlUgY3BpbydzIG91dHB1dCIKKyAgIChjYWxsLXdp
dGgtdGVtcG9yYXJ5LW91dHB1dC1maWxlCisgICAgIChsYW1iZGEgKGxpbmsgXykKKyAgICAgICAo
ZGVsZXRlLWZpbGUgbGluaykKKyAgICAgICAoc3ltbGluayAiY2hib3VpYiIgbGluaykKKyAgICAg
ICAobGV0ICgoZmlsZXMgKGNvbnMqICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNh
bm9uaWNhbGl6ZS1wYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXJuYW1lIChz
ZWFyY2gtcGF0aCAlbG9hZC1wYXRoICJndWl4LnNjbSIpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXAgKGNvbXBvc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5vbmljYWxpemUtcGF0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXQgc2VhcmNoLXBhdGggJWxvYWQtcGF0aCA8
PikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoImd1aXguc2NtIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJndWl4L2J1aWxkL3N5c2NhbGxzLnNjbSIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3VpeC9wYWNrYWdlcy5zY20iKSkpKSkK
KyAgICAgICAgIChjYWxsLXdpdGgtdGVtcG9yYXJ5LW91dHB1dC1maWxlCisgICAgICAgICAgIChs
YW1iZGEgKHJlZi1maWxlIF8pCisgICAgICAgICAgICAgKGxldCAoKHBpcGUgKG9wZW4tcGlwZSoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QRU5fV1JJVEUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICVjcGlvLXByb2dyYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICItbyIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICItTyIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZi1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUgiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibmV3YyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW51
bGwiKSkpCisgICAgICAgICAgICAgICAoZm9yLWVhY2gKKyAgICAgICAgICAgICAgICAgKGxhbWJk
YSAoZmlsZSkgKGZvcm1hdCBwaXBlICJ+YVx4MDAiIGZpbGUpKQorICAgICAgICAgICAgICAgICBm
aWxlcykKKyAgICAgICAgICAgICAgIChhbmQgKHplcm8/IChjbG9zZS1waXBlIHBpcGUpKQorICAg
ICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLXRlbXBvcmFyeS1vdXRwdXQtZmlsZQorICAgICAg
ICAgICAgICAgICAgICAgIChsYW1iZGEgKGZpbGUgcG9ydCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICh3cml0ZS1jcGlvLWFyY2hpdmUgZmlsZXMgcG9ydCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChjbG9zZS1wb3J0IHBvcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGZpbGU9
PyByZWYtZmlsZSBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnY3Bp
by1hcmNoaXZlcy1kaWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLWZpbGUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3RhdDpzaXplIChzdGF0IHJlZi1maWxlKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN0YXQ6c2l6ZSAoc3RhdCBmaWxlKSkpKSkpKSkpKSkpKSkKcmVz
dWx0OiBTS0lQCgpyYW5kb20gc2VlZCBmb3IgdGVzdHM6IDE0Njk4MDkzMTEKClNLSVA6IHRlc3Rz
L3NuaXgKPT09PT09PT09PT09PT09PQoKdGVzdC1uYW1lOiBmYWN0b3JpemUtdXJpCmxvY2F0aW9u
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3NuaXguc2NtOjM2CnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJmYWN0b3JpemUtdXJpIgorICAgKGV2ZXJ5PworICAg
ICAobWF0Y2gtbGFtYmRhCisgICAgICAgKCh1cmkgdmVyc2lvbiAnLT4gZXhwZWN0ZWQpCisgICAg
ICAgIChlcXVhbD8gKGZhY3Rvcml6ZS11cmkgdXJpIHZlcnNpb24pIGV4cGVjdGVkKSkpCisgICAg
ICcoKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLnRneiIKKyAgICAgICAgIjEuMCIKKyAgICAgICAg
LT4KKyAgICAgICAgImh0dHA6Ly9leGFtcGxlLmNvbS9mb28udGd6IikKKyAgICAgICAoImh0dHA6
Ly9leGFtcGxlLmNvbS9mb28tMi44LnRneiIKKyAgICAgICAgIjIuOCIKKyAgICAgICAgLT4KKyAg
ICAgICAgKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLSIgdmVyc2lvbiAiLnRneiIpKQorICAgICAg
ICgiaHR0cDovL2V4YW1wbGUuY29tLzIuOC9mb28tMi44LnRneiIKKyAgICAgICAgIjIuOCIKKyAg
ICAgICAgLT4KKyAgICAgICAgKCJodHRwOi8vZXhhbXBsZS5jb20vIgorICAgICAgICAgdmVyc2lv
bgorICAgICAgICAgIi9mb28tIgorICAgICAgICAgdmVyc2lvbgorICAgICAgICAgIi50Z3oiKSkp
KSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbml4cGtncy0+Z3Vp
eC1wYWNrYWdlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3RzL3NuaXguc2NtOjU0CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJuaXhwa2dzLT5ndWl4
LXBhY2thZ2UiCisgICAobWF0Y2ggKG5peHBrZ3MtPmd1aXgtcGFja2FnZQorICAgICAgICAgICAg
JW5peHBrZ3MtZGlyZWN0b3J5CisgICAgICAgICAgICAiZ3VpbGUiKQorICAgICAgICAgICgoJ3Bh
Y2thZ2UKKyAgICAgICAgICAgICgnbmFtZSAiZ3VpbGUiKQorICAgICAgICAgICAgKCd2ZXJzaW9u
ICg/IHN0cmluZz8pKQorICAgICAgICAgICAgKCdzb3VyY2UgKCdvcmlnaW4gXyAuLi4pKQorICAg
ICAgICAgICAgKCdidWlsZC1zeXN0ZW0gXykKKyAgICAgICAgICAgICgnaW5wdXRzICgncXVhc2lx
dW90ZSAoaW5wdXRzIC4uLikpKQorICAgICAgICAgICAgKCdwcm9wYWdhdGVkLWlucHV0cyAoJ3F1
YXNpcXVvdGUgKHBpbnB1dHMgLi4uKSkpCisgICAgICAgICAgICAoJ2hvbWUtcGFnZSAoPyBzdHJp
bmc/KSkKKyAgICAgICAgICAgICgnc3lub3BzaXMgKD8gc3RyaW5nPykpCisgICAgICAgICAgICAo
J2Rlc2NyaXB0aW9uICg/IHN0cmluZz8pKQorICAgICAgICAgICAgKCdsaWNlbnNlICg/IHN5bWJv
bD8pKSkKKyAgICAgICAgICAgKGFuZCAobWVtYmVyICcoImxpYmZmaSIgLGxpYmZmaSkgaW5wdXRz
KQorICAgICAgICAgICAgICAgIChtZW1iZXIgJygiZ21wIiAsZ21wKSBwaW5wdXRzKQorICAgICAg
ICAgICAgICAgICN0KSkKKyAgICAgICAgICAoeCAocGsgJ2ZhaWwgeCAjZikpKSkKcmVzdWx0OiBT
S0lQCgoKRkFJTDogdGVzdHMvc3RvcmUKPT09PT09PT09PT09PT09PT0KCnRlc3QtbmFtZTogc3Rv
cmUtcGF0aC1oYXNoLXBhcnQKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3Vp
eF93aXAvdGVzdHMvc3RvcmUuc2NtOjUxCnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAgInN0b3Jl
LXBhdGgtaGFzaC1wYXJ0IgorICAgIjI4M2dxeTM5djNnOWR4ankyNnJ5bmwwemxzODJmbWNnIgor
ICAgKHN0b3JlLXBhdGgtaGFzaC1wYXJ0CisgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgKCVz
dG9yZS1wcmVmaXgpCisgICAgICAgIi8yODNncXkzOXYzZzlkeGp5MjZyeW5sMHpsczgyZm1jZy1n
dWlsZS0yLjAuNyIpKSkKZXhwZWN0ZWQtdmFsdWU6IDI4M2dxeTM5djNnOWR4ankyNnJ5bmwwemxz
ODJmbWNnCmFjdHVhbC12YWx1ZTogMjgzZ3F5Mzl2M2c5ZHhqeTI2cnlubDB6bHM4MmZtY2cKcmVz
dWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN0b3JlLXBhdGgtaGFzaC1wYXJ0ICNmCmxvY2F0aW9uOiAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo1Nwpzb3Vy
Y2U6CisgKHRlc3QtZXF1YWwKKyAgICJzdG9yZS1wYXRoLWhhc2gtcGFydCAjZiIKKyAgICNmCisg
ICAoc3RvcmUtcGF0aC1oYXNoLXBhcnQKKyAgICAgKHN0cmluZy1hcHBlbmQKKyAgICAgICAoJXN0
b3JlLXByZWZpeCkKKyAgICAgICAiL2Zvby9iYXIvMjgzZ3F5Mzl2M2c5ZHhqeTI2cnlubDB6bHM4
MmZtY2ctZ3VpbGUtMi4wLjciKSkpCmV4cGVjdGVkLXZhbHVlOiAjZgphY3R1YWwtdmFsdWU6ICNm
CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzdG9yZS1wYXRoLXBhY2thZ2UtbmFtZQpsb2NhdGlv
bjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206NjMK
c291cmNlOgorICh0ZXN0LWVxdWFsCisgICAic3RvcmUtcGF0aC1wYWNrYWdlLW5hbWUiCisgICAi
Z3VpbGUtMi4wLjciCisgICAoc3RvcmUtcGF0aC1wYWNrYWdlLW5hbWUKKyAgICAgKHN0cmluZy1h
cHBlbmQKKyAgICAgICAoJXN0b3JlLXByZWZpeCkKKyAgICAgICAiLzI4M2dxeTM5djNnOWR4anky
NnJ5bmwwemxzODJmbWNnLWd1aWxlLTIuMC43IikpKQpleHBlY3RlZC12YWx1ZTogZ3VpbGUtMi4w
LjcKYWN0dWFsLXZhbHVlOiBndWlsZS0yLjAuNwpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogc3Rv
cmUtcGF0aC1wYWNrYWdlLW5hbWUgI2YKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1
aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjY5CnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAg
InN0b3JlLXBhdGgtcGFja2FnZS1uYW1lICNmIgorICAgI2YKKyAgIChzdG9yZS1wYXRoLXBhY2th
Z2UtbmFtZQorICAgICAiL2Zvby9iYXIvMjgzZ3F5Mzl2M2c5ZHhqeTI2cnlubDB6bHM4MmZtY2ct
Z3VpbGUtMi4wLjciKSkKZXhwZWN0ZWQtdmFsdWU6ICNmCmFjdHVhbC12YWx1ZTogI2YKcmVzdWx0
OiBQQVNTCgp0ZXN0LW5hbWU6IGRpcmVjdC1zdG9yZS1wYXRoPwpsb2NhdGlvbjogL2hvbWUvc2Fw
aWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206NzQKc291cmNlOgorICh0
ZXN0LWFzc2VydAorICAgImRpcmVjdC1zdG9yZS1wYXRoPyIKKyAgIChhbmQgKGRpcmVjdC1zdG9y
ZS1wYXRoPworICAgICAgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgICAgICAoJXN0b3JlLXBy
ZWZpeCkKKyAgICAgICAgICAgICIvMjgzZ3F5Mzl2M2c5ZHhqeTI2cnlubDB6bHM4MmZtY2ctZ3Vp
bGUtMi4wLjciKSkKKyAgICAgICAgKG5vdCAoZGlyZWN0LXN0b3JlLXBhdGg/CisgICAgICAgICAg
ICAgICAoc3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAoJXN0b3JlLXByZWZpeCkKKyAg
ICAgICAgICAgICAgICAgIi8yODNncXkzOXYzZzlkeGp5MjZyeW5sMHpsczgyZm1jZy1ndWlsZS0y
LjAuNy9iaW4vZ3VpbGUiKSkpCisgICAgICAgIChub3QgKGRpcmVjdC1zdG9yZS1wYXRoPyAoJXN0
b3JlLXByZWZpeCkpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6
IHZhbGlkLXBhdGg/IGxpdmUKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3Vp
eF93aXAvdGVzdHMvc3RvcmUuc2NtOjg2CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJ2YWxp
ZC1wYXRoPyBsaXZlIgorICAgKGxldCAoKHAgKGFkZC10ZXh0LXRvLXN0b3JlICVzdG9yZSAiaGVs
bG8iICJoZWxsbywgd29ybGQiKSkpCisgICAgICh2YWxpZC1wYXRoPyAlc3RvcmUgcCkpKQphY3R1
YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiB2YWxpZC1wYXRoPyBmYWxzZQps
b2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5z
Y206OTAKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInZhbGlkLXBhdGg/IGZhbHNlIgorICAg
KG5vdCAodmFsaWQtcGF0aD8KKyAgICAgICAgICAlc3RvcmUKKyAgICAgICAgICAoc3RyaW5nLWFw
cGVuZAorICAgICAgICAgICAgKCVzdG9yZS1wcmVmaXgpCisgICAgICAgICAgICAiLyIKKyAgICAg
ICAgICAgIChtYWtlLXN0cmluZyAzMiAjXGUpCisgICAgICAgICAgICAiLWZvb2JhciIpKSkpCmFj
dHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHZhbGlkLXBhdGg/IGVycm9y
CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3Jl
LnNjbTo5NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAidmFsaWQtcGF0aD8gZXJyb3IiCisg
ICAod2l0aC1zdG9yZQorICAgICBzCisgICAgIChndWFyZCAoYyAoKG5peC1wcm90b2NvbC1lcnJv
cj8gYykgI3QpKQorICAgICAgICAgICAgKHZhbGlkLXBhdGg/IHMgImZvbyIpCisgICAgICAgICAg
ICAjZikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiB2YWxpZC1w
YXRoPyByZWNvdmVyeQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0cy9zdG9yZS5zY206MTAxCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJ2YWxpZC1w
YXRoPyByZWNvdmVyeSIKKyAgICh3aXRoLXN0b3JlCisgICAgIHMKKyAgICAgKGxldC1zeW50YXgg
KCh0cnVlLWlmLWVycm9yCisgICAgICAgICAgICAgICAgICAgIChzeW50YXgtcnVsZXMgKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAoKF8gZXhwKQorICAgICAgICAgICAgICAgICAgICAgICAoZ3Vh
cmQgKGMgKChuaXgtcHJvdG9jb2wtZXJyb3I/IGMpICN0KSkgZXhwICNmKSkpKSkKKyAgICAgICAo
YW5kICh0cnVlLWlmLWVycm9yICh2YWxpZC1wYXRoPyBzICJmb28iKSkKKyAgICAgICAgICAgICh0
cnVlLWlmLWVycm9yICh2YWxpZC1wYXRoPyBzICJiYXIiKSkKKyAgICAgICAgICAgICh0cnVlLWlm
LWVycm9yICh2YWxpZC1wYXRoPyBzICJiYXoiKSkKKyAgICAgICAgICAgICh0cnVlLWlmLWVycm9y
ICh2YWxpZC1wYXRoPyBzICJjaGJvdWliIikpCisgICAgICAgICAgICAodmFsaWQtcGF0aD8KKyAg
ICAgICAgICAgICAgcworICAgICAgICAgICAgICAoYWRkLXRleHQtdG8tc3RvcmUgcyAidmFsaWQi
ICJ5ZWFoIikpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBo
YXNoLXBhcnQtPnBhdGgKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvc3RvcmUuc2NtOjExOApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiaGFzaC1w
YXJ0LT5wYXRoIgorICAgKGxldCAoKHAgKGFkZC10ZXh0LXRvLXN0b3JlICVzdG9yZSAiaGVsbG8i
ICJoZWxsbywgd29ybGQiKSkpCisgICAgIChlcXVhbD8KKyAgICAgICAoaGFzaC1wYXJ0LT5wYXRo
ICVzdG9yZSAoc3RvcmUtcGF0aC1oYXNoLXBhcnQgcCkpCisgICAgICAgcCkpKQphY3R1YWwtdmFs
dWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBkZWFkLXBhdGhzCmxvY2F0aW9uOiAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbToxMjMKc291cmNl
OgorICh0ZXN0LWFzc2VydAorICAgImRlYWQtcGF0aHMiCisgICAobGV0ICgocCAoYWRkLXRleHQt
dG8tc3RvcmUKKyAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICJyYW5kb20tdGV4
dCIKKyAgICAgICAgICAgICAgKHJhbmRvbS10ZXh0KSkpKQorICAgICAoLT5ib29sIChtZW1iZXIg
cCAoZGVhZC1wYXRocyAlc3RvcmUpKSkpKQpyYW5kb20gc2VlZCBmb3IgdGVzdHM6IDE0Njk4Mjg3
NDEKZmluZGluZyBnYXJiYWdlIGNvbGxlY3RvciByb290cy4uLgpyZW1vdmluZyBzdGFsZSB0ZW1w
b3Jhcnkgcm9vdHMgZmlsZSBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0
LXRtcC92YXIvNDU3OC90ZW1wcm9vdHMvNDU5MycKZGV0ZXJtaW5pbmcgbGl2ZS9kZWFkIHBhdGhz
Li4uCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHBlcm1hbmVudCBy
b290CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0
b3JlLnNjbToxNDQKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInBlcm1hbmVudCByb290Igor
ICAgKGxldCogKChwICh3aXRoLXN0b3JlCisgICAgICAgICAgICAgICBzdG9yZQorICAgICAgICAg
ICAgICAgKGxldCAoKHAgKGFkZC10ZXh0LXRvLXN0b3JlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyYW5kb20tdGV4dCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHJhbmRvbS10ZXh0KSkpKQorICAgICAgICAgICAgICAgICAo
YWRkLXBlcm1hbmVudC1yb290IHApCisgICAgICAgICAgICAgICAgIChhZGQtcGVybWFuZW50LXJv
b3QgcCkKKyAgICAgICAgICAgICAgICAgcCkpKSkKKyAgICAgKGFuZCAobWVtYmVyIHAgKGxpdmUt
cGF0aHMgJXN0b3JlKSkKKyAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgIChyZW1vdmUtcGVy
bWFuZW50LXJvb3QgcCkKKyAgICAgICAgICAgICgtPmJvb2wgKG1lbWJlciBwIChkZWFkLXBhdGhz
ICVzdG9yZSkpKSkpKSkKZmluZGluZyBnYXJiYWdlIGNvbGxlY3RvciByb290cy4uLgpkZXRlcm1p
bmluZyBsaXZlL2RlYWQgcGF0aHMuLi4KZmluZGluZyBnYXJiYWdlIGNvbGxlY3RvciByb290cy4u
LgpkZXRlcm1pbmluZyBsaXZlL2RlYWQgcGF0aHMuLi4KYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6
IFBBU1MKCnRlc3QtbmFtZTogZGVhZCBwYXRoIGNhbiBiZSBleHBsaWNpdGx5IGNvbGxlY3RlZAps
b2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5z
Y206MTU2CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJkZWFkIHBhdGggY2FuIGJlIGV4cGxp
Y2l0bHkgY29sbGVjdGVkIgorICAgKGxldCAoKHAgKGFkZC10ZXh0LXRvLXN0b3JlCisgICAgICAg
ICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAicmFuZG9tLXRleHQiCisgICAgICAgICAgICAg
IChyYW5kb20tdGV4dCkKKyAgICAgICAgICAgICAgJygpKSkpCisgICAgIChsZXQtdmFsdWVzCisg
ICAgICAgKCgocGF0aHMgZnJlZWQpIChkZWxldGUtcGF0aHMgJXN0b3JlIChsaXN0IHApKSkpCisg
ICAgICAgKGFuZCAoZXF1YWw/IHBhdGhzIChsaXN0IHApKQorICAgICAgICAgICAgKD4gZnJlZWQg
MCkKKyAgICAgICAgICAgIChub3QgKGZpbGUtZXhpc3RzPyBwKSkpKSkpCmZpbmRpbmcgZ2FyYmFn
ZSBjb2xsZWN0b3Igcm9vdHMuLi4KZGVsZXRpbmcgdW51c2VkIGxpbmtzLi4uCmFjdHVhbC12YWx1
ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGFkZC10ZXh0LXRvLXN0b3JlIHZzLiBkZWxl
dGUtcGF0aHMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dHMvc3RvcmUuc2NtOjE2NApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiYWRkLXRleHQtdG8t
c3RvcmUgdnMuIGRlbGV0ZS1wYXRocyIKKyAgICh3aXRoLXN0b3JlCisgICAgIHN0b3JlCisgICAg
IChsZXQqICgodGV4dCAocmFuZG9tLXRleHQpKQorICAgICAgICAgICAgKHBhdGggKGFkZC10ZXh0
LXRvLXN0b3JlIHN0b3JlICJkZWxldGUtbWUiIHRleHQpKQorICAgICAgICAgICAgKGRlbGV0ZWQg
KGRlbGV0ZS1wYXRocyBzdG9yZSAobGlzdCBwYXRoKSkpCisgICAgICAgICAgICAocGF0aDIgKGFk
ZC10ZXh0LXRvLXN0b3JlIHN0b3JlICJkZWxldGUtbWUiIHRleHQpKSkKKyAgICAgICAoYW5kIChz
dHJpbmc9PyBwYXRoIHBhdGgyKQorICAgICAgICAgICAgKGVxdWFsPyBkZWxldGVkIChsaXN0IHBh
dGgpKQorICAgICAgICAgICAgKHZhbGlkLXBhdGg/IHN0b3JlIHBhdGgpCisgICAgICAgICAgICAo
ZmlsZS1leGlzdHM/IHBhdGgpKSkpKQpmaW5kaW5nIGdhcmJhZ2UgY29sbGVjdG9yIHJvb3RzLi4u
CnJlbW92aW5nIHN0YWxlIHRlbXBvcmFyeSByb290cyBmaWxlIGAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci80NTc4L3RlbXByb290cy80NjA5JwpkZWxldGlu
ZyBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9nemcz
NW5rajBkYWZheTdkZHluYjlicXg1MDFkeWs2cy1kZWxldGUtbWUnCmRlbGV0aW5nIGAvaG9tZS9z
YXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3RyYXNoJwpkZWxldGlu
ZyB1bnVzZWQgbGlua3MuLi4Kbm90ZTogY3VycmVudGx5IGhhcmQgbGlua2luZyBzYXZlcyAxOS42
NiBNaUIKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogYWRkLXRvLXN0
b3JlIHZzLiBkZWxldGUtcGF0aHMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgv
Z3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjE3Nwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAi
YWRkLXRvLXN0b3JlIHZzLiBkZWxldGUtcGF0aHMiCisgICAod2l0aC1zdG9yZQorICAgICBzdG9y
ZQorICAgICAobGV0KiAoKGZpbGUgKHNlYXJjaC1wYXRoICVsb2FkLXBhdGggImd1aXguc2NtIikp
CisgICAgICAgICAgICAocGF0aCAoYWRkLXRvLXN0b3JlIHN0b3JlICJkZWxldGUtbWUiICN0ICJz
aGEyNTYiIGZpbGUpKQorICAgICAgICAgICAgKGRlbGV0ZWQgKGRlbGV0ZS1wYXRocyBzdG9yZSAo
bGlzdCBwYXRoKSkpCisgICAgICAgICAgICAocGF0aDIgKGFkZC10by1zdG9yZSBzdG9yZSAiZGVs
ZXRlLW1lIiAjdCAic2hhMjU2IiBmaWxlKSkpCisgICAgICAgKGFuZCAoc3RyaW5nPT8gcGF0aCBw
YXRoMikKKyAgICAgICAgICAgIChlcXVhbD8gZGVsZXRlZCAobGlzdCBwYXRoKSkKKyAgICAgICAg
ICAgICh2YWxpZC1wYXRoPyBzdG9yZSBwYXRoKQorICAgICAgICAgICAgKGZpbGUtZXhpc3RzPyBw
YXRoKSkpKSkKZmluZGluZyBnYXJiYWdlIGNvbGxlY3RvciByb290cy4uLgpyZW1vdmluZyBzdGFs
ZSB0ZW1wb3Jhcnkgcm9vdHMgZmlsZSBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0LXRtcC92YXIvNDU3OC90ZW1wcm9vdHMvNDYyMScKZGVsZXRpbmcgYC9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvNTduaHFsYnF2NWtoNHp3cjJ2
dmRrM3h5aDc0MXlucmktZGVsZXRlLW1lJwpkZWxldGluZyBgL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS90cmFzaCcKZGVsZXRpbmcgdW51c2VkIGxpbmtz
Li4uCm5vdGU6IGN1cnJlbnRseSBoYXJkIGxpbmtpbmcgc2F2ZXMgMTkuNjYgTWlCCmFjdHVhbC12
YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHJlZmVyZW5jZXMKbG9jYXRpb246IC9o
b21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjE4OQpzb3Vy
Y2U6CisgKHRlc3QtYXNzZXJ0CisgICAicmVmZXJlbmNlcyIKKyAgIChsZXQqICgodDEgKGFkZC10
ZXh0LXRvLXN0b3JlCisgICAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAgInJh
bmRvbTEiCisgICAgICAgICAgICAgICAgKHJhbmRvbS10ZXh0KSkpCisgICAgICAgICAgKHQyIChh
ZGQtdGV4dC10by1zdG9yZQorICAgICAgICAgICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAg
ICJyYW5kb20yIgorICAgICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAgICAgICAgICAgICAg
ICAobGlzdCB0MSkpKSkKKyAgICAgKGFuZCAoZXF1YWw/IChsaXN0IHQxKSAocmVmZXJlbmNlcyAl
c3RvcmUgdDIpKQorICAgICAgICAgIChlcXVhbD8gKGxpc3QgdDIpIChyZWZlcnJlcnMgJXN0b3Jl
IHQxKSkKKyAgICAgICAgICAobnVsbD8gKHJlZmVyZW5jZXMgJXN0b3JlIHQxKSkKKyAgICAgICAg
ICAobnVsbD8gKHJlZmVycmVycyAlc3RvcmUgdDIpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3Vs
dDogUEFTUwoKdGVzdC1uYW1lOiByZWZlcmVuY2VzL3N1YnN0aXR1dGVzIG1pc3NpbmcgcmVmZXJl
bmNlIGluZm8KbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dHMvc3RvcmUuc2NtOjE5OQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAicmVmZXJlbmNlcy9z
dWJzdGl0dXRlcyBtaXNzaW5nIHJlZmVyZW5jZSBpbmZvIgorICAgKHdpdGgtc3RvcmUKKyAgICAg
cworICAgICAoc2V0LWJ1aWxkLW9wdGlvbnMgcyAjOnVzZS1zdWJzdGl0dXRlcz8gI2YpCisgICAg
IChndWFyZCAoYyAoKG5peC1wcm90b2NvbC1lcnJvcj8gYykgI3QpKQorICAgICAgICAgICAgKGxl
dCogKChiIChhZGQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJiYXNoIgorICAgICAgICAgICAgICAgICAgICAgICAgI3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJzaGEyNTYiCisgICAgICAgICAgICAgICAgICAgICAgICAoc2Vh
cmNoLWJvb3RzdHJhcC1iaW5hcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhc2giCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICglY3VycmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAg
ICAgICAgICAgKGQgKGRlcml2YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ0aGUtdGhpbmciCisgICAgICAgICAgICAgICAgICAgICAgICBi
CisgICAgICAgICAgICAgICAgICAgICAgICAnKCItLWhlbHAiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIzppbnB1dHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGAoKCxiKSkpKSkKKyAgICAg
ICAgICAgICAgKHJlZmVyZW5jZXMvc3Vic3RpdHV0ZXMKKyAgICAgICAgICAgICAgICBzCisgICAg
ICAgICAgICAgICAgKGxpc3QgKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGQpIGIpKQorICAgICAg
ICAgICAgICAjZikpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTog
cmVmZXJlbmNlcy9zdWJzdGl0dXRlcyB3aXRoIHN1YnN0aXR1dGUgaW5mbwpsb2NhdGlvbjogL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206MjExCnNvdXJj
ZToKKyAodGVzdC1hc3NlcnQKKyAgICJyZWZlcmVuY2VzL3N1YnN0aXR1dGVzIHdpdGggc3Vic3Rp
dHV0ZSBpbmZvIgorICAgKHdpdGgtc3RvcmUKKyAgICAgcworICAgICAoc2V0LWJ1aWxkLW9wdGlv
bnMgcyAjOnVzZS1zdWJzdGl0dXRlcz8gI3QpCisgICAgIChsZXQqICgodDEgKGFkZC10ZXh0LXRv
LXN0b3JlIHMgInJhbmRvbTEiIChyYW5kb20tdGV4dCkpKQorICAgICAgICAgICAgKHQyIChhZGQt
dGV4dC10by1zdG9yZQorICAgICAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAgInJh
bmRvbTIiCisgICAgICAgICAgICAgICAgICAocmFuZG9tLXRleHQpCisgICAgICAgICAgICAgICAg
ICAobGlzdCB0MSkpKQorICAgICAgICAgICAgKHQzIChhZGQtdGV4dC10by1zdG9yZQorICAgICAg
ICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAgImJ1aWxkIgorICAgICAgICAgICAgICAg
ICAgImVjaG8gLW4gJHQyID4gJG91dCIpKQorICAgICAgICAgICAgKGIgKGFkZC10by1zdG9yZQor
ICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICJiYXNoIgorICAgICAgICAgICAg
ICAgICAjdAorICAgICAgICAgICAgICAgICAic2hhMjU2IgorICAgICAgICAgICAgICAgICAoc2Vh
cmNoLWJvb3RzdHJhcC1iaW5hcnkKKyAgICAgICAgICAgICAgICAgICAiYmFzaCIKKyAgICAgICAg
ICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpKQorICAgICAgICAgICAgKGQgKGRlcml2YXRp
b24KKyAgICAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAidGhlLXRoaW5nIgorICAg
ICAgICAgICAgICAgICBiCisgICAgICAgICAgICAgICAgIGAoIi1lIiAsdDMpCisgICAgICAgICAg
ICAgICAgICM6aW5wdXRzCisgICAgICAgICAgICAgICAgIGAoKCxiKSAoLHQzKSAoLHQyKSkKKyAg
ICAgICAgICAgICAgICAgIzplbnYtdmFycworICAgICAgICAgICAgICAgICBgKCgidDIiIHVucXVv
dGUgdDIpKSkpCisgICAgICAgICAgICAobyAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZCkpKQor
ICAgICAgICh3aXRoLWRlcml2YXRpb24tbmFyaW5mbworICAgICAgICAgZAorICAgICAgICAgKHNo
YTI1NiA9PiAoc2hhMjU2IChzdHJpbmctPnV0ZjggdDIpKSkKKyAgICAgICAgIChyZWZlcmVuY2Vz
ID0+IChsaXN0IHQyKSkKKyAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgKHJlZmVyZW5jZXMv
c3Vic3RpdHV0ZXMgcyAobGlzdCBvIHQzIHQyIHQxKSkKKyAgICAgICAgICAgYCgoLHQyKSAoKSAo
LHQxKSAoKSkpKSkpKQpzdWJzdGl0dXRlOiB3YXJuaW5nOiBhdXRoZW50aWNhdGlvbiBhbmQgYXV0
aG9yaXphdGlvbiBvZiBzdWJzdGl0dXRlcyBkaXNhYmxlZCEKc3Vic3RpdHV0ZTogZ3VpeCBzdWJz
dGl0dXRlOiB3YXJuaW5nOiBBQ0wgZm9yIGFyY2hpdmUgaW1wb3J0cyBzZWVtcyB0byBiZSB1bmlu
aXRpYWxpemVkLCBzdWJzdGl0dXRlcyBtYXkgYmUgdW5hdmFpbGFibGUKYWN0dWFsLXZhbHVlOiAj
dApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogc3Vic3RpdHV0YWJsZS1wYXRoLWluZm8gd2hlbiBz
dWJzdGl0dXRlcyBhcmUgdHVybmVkIG9mZgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206MjM1CnNvdXJjZToKKyAodGVzdC1lcXVhbAor
ICAgInN1YnN0aXR1dGFibGUtcGF0aC1pbmZvIHdoZW4gc3Vic3RpdHV0ZXMgYXJlIHR1cm5lZCBv
ZmYiCisgICAnKCkKKyAgICh3aXRoLXN0b3JlCisgICAgIHMKKyAgICAgKHNldC1idWlsZC1vcHRp
b25zIHMgIzp1c2Utc3Vic3RpdHV0ZXM/ICNmKQorICAgICAobGV0KiAoKGIgKGFkZC10by1zdG9y
ZQorICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICJiYXNoIgorICAgICAgICAg
ICAgICAgICAjdAorICAgICAgICAgICAgICAgICAic2hhMjU2IgorICAgICAgICAgICAgICAgICAo
c2VhcmNoLWJvb3RzdHJhcC1iaW5hcnkKKyAgICAgICAgICAgICAgICAgICAiYmFzaCIKKyAgICAg
ICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpKQorICAgICAgICAgICAgKGQgKGRlcml2
YXRpb24KKyAgICAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAidGhlLXRoaW5nIgor
ICAgICAgICAgICAgICAgICBiCisgICAgICAgICAgICAgICAgICcoIi0tdmVyc2lvbiIpCisgICAg
ICAgICAgICAgICAgICM6aW5wdXRzCisgICAgICAgICAgICAgICAgIGAoKCxiKSkpKQorICAgICAg
ICAgICAgKG8gKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGQpKSkKKyAgICAgICAod2l0aC1kZXJp
dmF0aW9uLW5hcmluZm8KKyAgICAgICAgIGQKKyAgICAgICAgIChzdWJzdGl0dXRhYmxlLXBhdGgt
aW5mbyBzIChsaXN0IG8pKSkpKSkKZXhwZWN0ZWQtdmFsdWU6ICgpCmFjdHVhbC12YWx1ZTogKCkK
cmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN1YnN0aXR1dGFibGUtcGF0aHMgd2hlbiBzdWJzdGl0
dXRlcyBhcmUgdHVybmVkIG9mZgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0cy9zdG9yZS5zY206MjQ4CnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAgInN1
YnN0aXR1dGFibGUtcGF0aHMgd2hlbiBzdWJzdGl0dXRlcyBhcmUgdHVybmVkIG9mZiIKKyAgICco
KQorICAgKHdpdGgtc3RvcmUKKyAgICAgcworICAgICAoc2V0LWJ1aWxkLW9wdGlvbnMgcyAjOnVz
ZS1zdWJzdGl0dXRlcz8gI2YpCisgICAgIChsZXQqICgoYiAoYWRkLXRvLXN0b3JlCisgICAgICAg
ICAgICAgICAgIHMKKyAgICAgICAgICAgICAgICAgImJhc2giCisgICAgICAgICAgICAgICAgICN0
CisgICAgICAgICAgICAgICAgICJzaGEyNTYiCisgICAgICAgICAgICAgICAgIChzZWFyY2gtYm9v
dHN0cmFwLWJpbmFyeQorICAgICAgICAgICAgICAgICAgICJiYXNoIgorICAgICAgICAgICAgICAg
ICAgICglY3VycmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAgICAoZCAoZGVyaXZhdGlvbgorICAg
ICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICJ0aGUtdGhpbmciCisgICAgICAgICAg
ICAgICAgIGIKKyAgICAgICAgICAgICAgICAgJygiLS12ZXJzaW9uIikKKyAgICAgICAgICAgICAg
ICAgIzppbnB1dHMKKyAgICAgICAgICAgICAgICAgYCgoLGIpKSkpCisgICAgICAgICAgICAobyAo
ZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZCkpKQorICAgICAgICh3aXRoLWRlcml2YXRpb24tbmFy
aW5mbworICAgICAgICAgZAorICAgICAgICAgKHN1YnN0aXR1dGFibGUtcGF0aHMgcyAobGlzdCBv
KSkpKSkpCmV4cGVjdGVkLXZhbHVlOiAoKQphY3R1YWwtdmFsdWU6ICgpCnJlc3VsdDogUEFTUwoK
dGVzdC1uYW1lOiByZXF1aXNpdGVzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbToyNjEKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAg
InJlcXVpc2l0ZXMiCisgICAobGV0KiAoKHQxIChhZGQtdGV4dC10by1zdG9yZQorICAgICAgICAg
ICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAgICJyYW5kb20xIgorICAgICAgICAgICAgICAg
IChyYW5kb20tdGV4dCkKKyAgICAgICAgICAgICAgICAnKCkpKQorICAgICAgICAgICh0MiAoYWRk
LXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAgICAgICAgICAgICAi
cmFuZG9tMiIKKyAgICAgICAgICAgICAgICAocmFuZG9tLXRleHQpCisgICAgICAgICAgICAgICAg
KGxpc3QgdDEpKSkKKyAgICAgICAgICAodDMgKGFkZC10ZXh0LXRvLXN0b3JlCisgICAgICAgICAg
ICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAgInJhbmRvbTMiCisgICAgICAgICAgICAgICAg
KHJhbmRvbS10ZXh0KQorICAgICAgICAgICAgICAgIChsaXN0IHQyKSkpCisgICAgICAgICAgKHQ0
IChhZGQtdGV4dC10by1zdG9yZQorICAgICAgICAgICAgICAgICVzdG9yZQorICAgICAgICAgICAg
ICAgICJyYW5kb200IgorICAgICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAgICAgICAgICAg
ICAgICAobGlzdCB0MSB0MykpKSkKKyAgICAgKGRlZmluZSAoc2FtZT8geCB5KQorICAgICAgIChh
bmQgKD0gKGxlbmd0aCB4KSAobGVuZ3RoIHkpKQorICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyB4
IHkpKSkKKyAgICAgKGFuZCAoc2FtZT8gKHJlcXVpc2l0ZXMgJXN0b3JlIChsaXN0IHQxKSkgKGxp
c3QgdDEpKQorICAgICAgICAgIChzYW1lPyAocmVxdWlzaXRlcyAlc3RvcmUgKGxpc3QgdDIpKQor
ICAgICAgICAgICAgICAgICAobGlzdCB0MSB0MikpCisgICAgICAgICAgKHNhbWU/IChyZXF1aXNp
dGVzICVzdG9yZSAobGlzdCB0MykpCisgICAgICAgICAgICAgICAgIChsaXN0IHQxIHQyIHQzKSkK
KyAgICAgICAgICAoc2FtZT8gKHJlcXVpc2l0ZXMgJXN0b3JlIChsaXN0IHQ0KSkKKyAgICAgICAg
ICAgICAgICAgKGxpc3QgdDEgdDIgdDMgdDQpKQorICAgICAgICAgIChzYW1lPyAocmVxdWlzaXRl
cyAlc3RvcmUgKGxpc3QgdDEgdDIgdDMgdDQpKQorICAgICAgICAgICAgICAgICAobGlzdCB0MSB0
MiB0MyB0NCkpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGRl
cml2ZXJzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3Rz
L3N0b3JlLnNjbToyODEKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImRlcml2ZXJzIgorICAg
KGxldCogKChiIChhZGQtdGV4dC10by1zdG9yZQorICAgICAgICAgICAgICAgJXN0b3JlCisgICAg
ICAgICAgICAgICAiYnVpbGQiCisgICAgICAgICAgICAgICAiZWNobyAkZm9vID4gJG91dCIKKyAg
ICAgICAgICAgICAgICcoKSkpCisgICAgICAgICAgKHMgKGFkZC10by1zdG9yZQorICAgICAgICAg
ICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAiYmFzaCIKKyAgICAgICAgICAgICAgICN0Cisg
ICAgICAgICAgICAgICAic2hhMjU2IgorICAgICAgICAgICAgICAgKHNlYXJjaC1ib290c3RyYXAt
YmluYXJ5CisgICAgICAgICAgICAgICAgICJiYXNoIgorICAgICAgICAgICAgICAgICAoJWN1cnJl
bnQtc3lzdGVtKSkpKQorICAgICAgICAgIChkIChkZXJpdmF0aW9uCisgICAgICAgICAgICAgICAl
c3RvcmUKKyAgICAgICAgICAgICAgICJ0aGUtdGhpbmciCisgICAgICAgICAgICAgICBzCisgICAg
ICAgICAgICAgICBgKCItZSIgLGIpCisgICAgICAgICAgICAgICAjOmVudi12YXJzCisgICAgICAg
ICAgICAgICBgKCgiZm9vIiB1bnF1b3RlIChyYW5kb20tdGV4dCkpKQorICAgICAgICAgICAgICAg
IzppbnB1dHMKKyAgICAgICAgICAgICAgIGAoKCxiKSAoLHMpKSkpCisgICAgICAgICAgKG8gKGRl
cml2YXRpb24tPm91dHB1dC1wYXRoIGQpKSkKKyAgICAgKGFuZCAoYnVpbGQtZGVyaXZhdGlvbnMg
JXN0b3JlIChsaXN0IGQpKQorICAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgIChxdWVyeS1k
ZXJpdmF0aW9uLW91dHB1dHMKKyAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAgIChk
ZXJpdmF0aW9uLWZpbGUtbmFtZSBkKSkKKyAgICAgICAgICAgIChsaXN0IG8pKQorICAgICAgICAg
IChlcXVhbD8KKyAgICAgICAgICAgICh2YWxpZC1kZXJpdmVycyAlc3RvcmUgbykKKyAgICAgICAg
ICAgIChsaXN0IChkZXJpdmF0aW9uLWZpbGUtbmFtZSBkKSkpKSkpCkAgYnVpbGQtc3RhcnRlZCAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2tiYXpxMTNr
dzA2aWoybXM0YXZid2JqeXg1d2ZmZjFuLXRoZS10aGluZy5kcnYgLSB4ODZfNjQtbGludXggL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2
cy9rYi8vYXpxMTNrdzA2aWoybXM0YXZid2JqeXg1d2ZmZjFuLXRoZS10aGluZy5kcnYuYnoyCkAg
YnVpbGQtc3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10
bXAvc3RvcmUva2JhenExM2t3MDZpajJtczRhdmJ3Ymp5eDV3ZmZmMW4tdGhlLXRoaW5nLmRydiAt
CmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHRvcG9sb2dpY2FsbHkt
c29ydGVkLCBvbmUgaXRlbQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4
X3dpcC90ZXN0cy9zdG9yZS5zY206Mjk3CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJ0b3Bv
bG9naWNhbGx5LXNvcnRlZCwgb25lIGl0ZW0iCisgICAobGV0KiAoKGEgKGFkZC10ZXh0LXRvLXN0
b3JlICVzdG9yZSAiYSIgImEiKSkKKyAgICAgICAgICAoYiAoYWRkLXRleHQtdG8tc3RvcmUgJXN0
b3JlICJiIiAiYiIgKGxpc3QgYSkpKQorICAgICAgICAgIChjIChhZGQtdGV4dC10by1zdG9yZSAl
c3RvcmUgImMiICJjIiAobGlzdCBiKSkpCisgICAgICAgICAgKGQgKGFkZC10ZXh0LXRvLXN0b3Jl
ICVzdG9yZSAiZCIgImQiIChsaXN0IGMpKSkKKyAgICAgICAgICAocyAodG9wb2xvZ2ljYWxseS1z
b3J0ZWQgJXN0b3JlIChsaXN0IGQpKSkpCisgICAgIChlcXVhbD8gcyAobGlzdCBhIGIgYyBkKSkp
KQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiB0b3BvbG9naWNhbGx5
LXNvcnRlZCwgc2V2ZXJhbCBpdGVtcwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206MzA1CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAg
ICJ0b3BvbG9naWNhbGx5LXNvcnRlZCwgc2V2ZXJhbCBpdGVtcyIKKyAgIChsZXQqICgoYSAoYWRk
LXRleHQtdG8tc3RvcmUgJXN0b3JlICJhIiAiYSIpKQorICAgICAgICAgIChiIChhZGQtdGV4dC10
by1zdG9yZSAlc3RvcmUgImIiICJiIiAobGlzdCBhKSkpCisgICAgICAgICAgKGMgKGFkZC10ZXh0
LXRvLXN0b3JlICVzdG9yZSAiYyIgImMiIChsaXN0IGIpKSkKKyAgICAgICAgICAoZCAoYWRkLXRl
eHQtdG8tc3RvcmUgJXN0b3JlICJkIiAiZCIgKGxpc3QgYykpKQorICAgICAgICAgIChzMSAodG9w
b2xvZ2ljYWxseS1zb3J0ZWQgJXN0b3JlIChsaXN0IGQgYSBjIGIpKSkKKyAgICAgICAgICAoczIg
KHRvcG9sb2dpY2FsbHktc29ydGVkICVzdG9yZSAobGlzdCBiIGQgYyBhIGIgZCkpKSkKKyAgICAg
KGVxdWFsPyBzMSBzMiAobGlzdCBhIGIgYyBkKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDog
UEFTUwoKdGVzdC1uYW1lOiB0b3BvbG9naWNhbGx5LXNvcnRlZCwgbW9yZSBkaWZmaWN1bHQKbG9j
YXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2Nt
OjMxNApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAidG9wb2xvZ2ljYWxseS1zb3J0ZWQsIG1v
cmUgZGlmZmljdWx0IgorICAgKGxldCogKChhIChhZGQtdGV4dC10by1zdG9yZSAlc3RvcmUgImEi
ICJhIikpCisgICAgICAgICAgKGIgKGFkZC10ZXh0LXRvLXN0b3JlICVzdG9yZSAiYiIgImIiIChs
aXN0IGEpKSkKKyAgICAgICAgICAoYyAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJjIiAiYyIg
KGxpc3QgYikpKQorICAgICAgICAgIChkIChhZGQtdGV4dC10by1zdG9yZSAlc3RvcmUgImQiICJk
IiAobGlzdCBjKSkpCisgICAgICAgICAgKHcgKGFkZC10ZXh0LXRvLXN0b3JlICVzdG9yZSAidyIg
InciKSkKKyAgICAgICAgICAoeCAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJ4IiAieCIgKGxp
c3QgdykpKQorICAgICAgICAgICh5IChhZGQtdGV4dC10by1zdG9yZSAlc3RvcmUgInkiICJ5IiAo
bGlzdCB4IGQpKSkKKyAgICAgICAgICAoczEgKHRvcG9sb2dpY2FsbHktc29ydGVkICVzdG9yZSAo
bGlzdCB5KSkpCisgICAgICAgICAgKHMyICh0b3BvbG9naWNhbGx5LXNvcnRlZCAlc3RvcmUgKGxp
c3QgYyB5KSkpCisgICAgICAgICAgKHMzICh0b3BvbG9naWNhbGx5LXNvcnRlZAorICAgICAgICAg
ICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAgIChjb25zIHkgKHJlZmVyZW5jZXMgJXN0b3Jl
IHkpKSkpKQorICAgICAobGV0KiAoKHgtdGhlbi1kPworICAgICAgICAgICAgICAoZXF1YWw/IChy
ZWZlcmVuY2VzICVzdG9yZSB5KSAobGlzdCB4IGQpKSkpCisgICAgICAgKGFuZCAoZXF1YWw/Cisg
ICAgICAgICAgICAgIHMxCisgICAgICAgICAgICAgIChpZiB4LXRoZW4tZD8KKyAgICAgICAgICAg
ICAgICAobGlzdCB3IHggYSBiIGMgZCB5KQorICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQg
dyB4IHkpKSkKKyAgICAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgICAgczIKKyAgICAgICAg
ICAgICAgKGlmIHgtdGhlbi1kPworICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIHcgeCBkIHkp
CisgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMgZCB3IHggeSkpKQorICAgICAgICAgICAgKGxz
ZXQ9IHN0cmluZz0/IHMxIHMzKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRl
c3QtbmFtZTogY3VycmVudC1idWlsZC1vdXRwdXQtcG9ydCwgVVRGLTgKbG9jYXRpb246IC9ob21l
L3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjMzOApzb3VyY2U6
CisgKHRlc3QtYXNzZXJ0CisgICAiY3VycmVudC1idWlsZC1vdXRwdXQtcG9ydCwgVVRGLTgiCisg
ICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICh3aXRoLWZsdWlkcworICAgICAgICgoJWRlZmF1bHQt
cG9ydC1lbmNvZGluZyAiVVRGLTgiKSkKKyAgICAgICAoY2FsbC13aXRoLW91dHB1dC1zdHJpbmcK
KyAgICAgICAgIChsYW1iZGEgKHBvcnQpCisgICAgICAgICAgIChwYXJhbWV0ZXJpemUKKyAgICAg
ICAgICAgICAoKGN1cnJlbnQtYnVpbGQtb3V0cHV0LXBvcnQgcG9ydCkpCisgICAgICAgICAgICAg
KGxldCogKChzICJIZXJlXHUyMDE5cyBhIEdyZWVrIGxldHRlcjogXHUwM2JiLiIpCisgICAgICAg
ICAgICAgICAgICAgIChkIChidWlsZC1leHByZXNzaW9uLT5kZXJpdmF0aW9uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgImZvbyIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBgKGRpc3BsYXkgLHMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIzpndWlsZS1mb3ItYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAocGFja2Fn
ZS1kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlYm9vdHN0cmFwLWd1aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoJWN1cnJlbnQtc3lzdGVtKSkpKSkKKyAgICAgICAgICAgICAgIChndWFyZCAoYyAoKG5peC1w
cm90b2NvbC1lcnJvcj8gYykgI3QpKQorICAgICAgICAgICAgICAgICAgICAgIChidWlsZC1kZXJp
dmF0aW9ucyAlc3RvcmUgKGxpc3QgZCkpKSkpKSkpCisgICAgICJIZXJlXHUyMDE5cyBhIEdyZWVr
IGxldHRlcjogXHUwM2JiLiIpKQphY3R1YWwtdmFsdWU6IDIzMQpyZXN1bHQ6IFBBU1MKCnRlc3Qt
bmFtZTogY3VycmVudC1idWlsZC1vdXRwdXQtcG9ydCwgVVRGLTggKyBnYXJiYWdlCmxvY2F0aW9u
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTozNTQK
c291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImN1cnJlbnQtYnVpbGQtb3V0cHV0LXBvcnQsIFVU
Ri04ICsgZ2FyYmFnZSIKKyAgIChzdHJpbmctY29udGFpbnMKKyAgICAgKHdpdGgtZmx1aWRzCisg
ICAgICAgKCglZGVmYXVsdC1wb3J0LWVuY29kaW5nICJVVEYtOCIpKQorICAgICAgIChjYWxsLXdp
dGgtb3V0cHV0LXN0cmluZworICAgICAgICAgKGxhbWJkYSAocG9ydCkKKyAgICAgICAgICAgKHBh
cmFtZXRlcml6ZQorICAgICAgICAgICAgICgoY3VycmVudC1idWlsZC1vdXRwdXQtcG9ydCBwb3J0
KSkKKyAgICAgICAgICAgICAobGV0ICgoZCAoYnVpbGQtZXhwcmVzc2lvbi0+ZGVyaXZhdGlvbgor
ICAgICAgICAgICAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAi
Zm9vIgorICAgICAgICAgICAgICAgICAgICAgICAgYChiZWdpbgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHVzZS1tb2R1bGVzIChybnJzIGlvIHBvcnRzKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChkaXNwbGF5ICJnYXJiYWdlOiAiKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHB1dC1ieXRldmVjdG9yIChjdXJyZW50LW91dHB1dC1wb3J0KSAjdnU4KDEyOCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZGlzcGxheSAibGFtYmRhOiBcdTAzYmJcbiIpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgIzpndWlsZS1mb3ItYnVpbGQKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChwYWNrYWdlLWRlcml2YXRpb24gJXN0b3JlICVib290c3RyYXAtZ3VpbGUpKSkpCisg
ICAgICAgICAgICAgICAoZ3VhcmQgKGMgKChuaXgtcHJvdG9jb2wtZXJyb3I/IGMpICN0KSkKKyAg
ICAgICAgICAgICAgICAgICAgICAoYnVpbGQtZGVyaXZhdGlvbnMgJXN0b3JlIChsaXN0IGQpKSkp
KSkpKQorICAgICAiZ2FyYmFnZTogP2xhbWJkYTogXHUwM2JiIikpCmFjdHVhbC12YWx1ZTogMjMx
CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBsb2ctZmlsZSwgZGVyaXZhdGlvbgpsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206Mzc0CnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJsb2ctZmlsZSwgZGVyaXZhdGlvbiIKKyAgIChsZXQq
ICgoYiAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICVzdG9yZQorICAgICAgICAg
ICAgICAgImJ1aWxkIgorICAgICAgICAgICAgICAgImVjaG8gJGZvbyA+ICRvdXQiCisgICAgICAg
ICAgICAgICAnKCkpKQorICAgICAgICAgIChzIChhZGQtdG8tc3RvcmUKKyAgICAgICAgICAgICAg
ICVzdG9yZQorICAgICAgICAgICAgICAgImJhc2giCisgICAgICAgICAgICAgICAjdAorICAgICAg
ICAgICAgICAgInNoYTI1NiIKKyAgICAgICAgICAgICAgIChzZWFyY2gtYm9vdHN0cmFwLWJpbmFy
eQorICAgICAgICAgICAgICAgICAiYmFzaCIKKyAgICAgICAgICAgICAgICAgKCVjdXJyZW50LXN5
c3RlbSkpKSkKKyAgICAgICAgICAoZCAoZGVyaXZhdGlvbgorICAgICAgICAgICAgICAgJXN0b3Jl
CisgICAgICAgICAgICAgICAidGhlLXRoaW5nIgorICAgICAgICAgICAgICAgcworICAgICAgICAg
ICAgICAgYCgiLWUiICxiKQorICAgICAgICAgICAgICAgIzplbnYtdmFycworICAgICAgICAgICAg
ICAgYCgoImZvbyIgdW5xdW90ZSAocmFuZG9tLXRleHQpKSkKKyAgICAgICAgICAgICAgICM6aW5w
dXRzCisgICAgICAgICAgICAgICBgKCgsYikgKCxzKSkpKSkKKyAgICAgKGFuZCAoYnVpbGQtZGVy
aXZhdGlvbnMgJXN0b3JlIChsaXN0IGQpKQorICAgICAgICAgIChmaWxlLWV4aXN0cz8KKyAgICAg
ICAgICAgIChwayAobG9nLWZpbGUgJXN0b3JlIChkZXJpdmF0aW9uLWZpbGUtbmFtZSBkKSkpKSkp
KQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0
LXRtcC9zdG9yZS9zcGdtM3hncThzZjhwbjJyNnM0c3N3cWQxNDk0OXkyNi10aGUtdGhpbmcuZHJ2
IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10
bXAvdmFyL2xvZy9ndWl4L2RydnMvc3AvL2dtM3hncThzZjhwbjJyNnM0c3N3cWQxNDk0OXkyNi10
aGUtdGhpbmcuZHJ2LmJ6MgpAIGJ1aWxkLXN1Y2NlZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3NwZ20zeGdxOHNmOHBuMnI2czRzc3dxZDE0OTQ5
eTI2LXRoZS10aGluZy5kcnYgLQoKOzs7ICgiL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4
X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2cy9zcC9nbTN4Z3E4c2Y4cG4ycjZzNHNzd3Fk
MTQ5NDl5MjYtdGhlLXRoaW5nLmRydi5iejIiKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFT
UwoKdGVzdC1uYW1lOiBsb2ctZmlsZSwgb3V0cHV0IGZpbGUgbmFtZQpsb2NhdGlvbjogL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206Mzg2CnNvdXJjZToK
KyAodGVzdC1hc3NlcnQKKyAgICJsb2ctZmlsZSwgb3V0cHV0IGZpbGUgbmFtZSIKKyAgIChsZXQq
ICgoYiAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICVzdG9yZQorICAgICAgICAg
ICAgICAgImJ1aWxkIgorICAgICAgICAgICAgICAgImVjaG8gJGZvbyA+ICRvdXQiCisgICAgICAg
ICAgICAgICAnKCkpKQorICAgICAgICAgIChzIChhZGQtdG8tc3RvcmUKKyAgICAgICAgICAgICAg
ICVzdG9yZQorICAgICAgICAgICAgICAgImJhc2giCisgICAgICAgICAgICAgICAjdAorICAgICAg
ICAgICAgICAgInNoYTI1NiIKKyAgICAgICAgICAgICAgIChzZWFyY2gtYm9vdHN0cmFwLWJpbmFy
eQorICAgICAgICAgICAgICAgICAiYmFzaCIKKyAgICAgICAgICAgICAgICAgKCVjdXJyZW50LXN5
c3RlbSkpKSkKKyAgICAgICAgICAoZCAoZGVyaXZhdGlvbgorICAgICAgICAgICAgICAgJXN0b3Jl
CisgICAgICAgICAgICAgICAidGhlLXRoaW5nIgorICAgICAgICAgICAgICAgcworICAgICAgICAg
ICAgICAgYCgiLWUiICxiKQorICAgICAgICAgICAgICAgIzplbnYtdmFycworICAgICAgICAgICAg
ICAgYCgoImZvbyIgdW5xdW90ZSAocmFuZG9tLXRleHQpKSkKKyAgICAgICAgICAgICAgICM6aW5w
dXRzCisgICAgICAgICAgICAgICBgKCgsYikgKCxzKSkpKQorICAgICAgICAgIChvIChkZXJpdmF0
aW9uLT5vdXRwdXQtcGF0aCBkKSkpCisgICAgIChhbmQgKGJ1aWxkLWRlcml2YXRpb25zICVzdG9y
ZSAobGlzdCBkKSkKKyAgICAgICAgICAoZmlsZS1leGlzdHM/IChwayAobG9nLWZpbGUgJXN0b3Jl
IG8pKSkKKyAgICAgICAgICAoc3RyaW5nPT8KKyAgICAgICAgICAgIChsb2ctZmlsZSAlc3RvcmUg
KGRlcml2YXRpb24tZmlsZS1uYW1lIGQpKQorICAgICAgICAgICAgKGxvZy1maWxlICVzdG9yZSBv
KSkpKSkKQCBidWlsZC1zdGFydGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdC10bXAvc3RvcmUvNjg4aWo4bnhmaGE3Mnc4eHdza2I1a21nandneTk0aXYtdGhlLXRoaW5n
LmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzLzY4Ly84aWo4bnhmaGE3Mnc4eHdza2I1a21nandneTk0
aXYtdGhlLXRoaW5nLmRydi5iejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS82ODhpajhueGZoYTcydzh4d3NrYjVrbWdq
d2d5OTRpdi10aGUtdGhpbmcuZHJ2IC0KCjs7OyAoIi9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgv
Z3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvNjgvOGlqOG54ZmhhNzJ3OHh3c2ti
NWttZ2p3Z3k5NGl2LXRoZS10aGluZy5kcnYuYnoyIikKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6
IFBBU1MKCnRlc3QtbmFtZTogbm8gc3Vic3RpdHV0ZXMKbG9jYXRpb246IC9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjQwMQpzb3VyY2U6CisgKHRlc3Qt
YXNzZXJ0CisgICAibm8gc3Vic3RpdHV0ZXMiCisgICAod2l0aC1zdG9yZQorICAgICBzCisgICAg
IChsZXQqICgoZDEgKHBhY2thZ2UtZGVyaXZhdGlvbgorICAgICAgICAgICAgICAgICAgcworICAg
ICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAgICAgICAgICAgICAgICAgKCVjdXJy
ZW50LXN5c3RlbSkpKQorICAgICAgICAgICAgKGQyIChwYWNrYWdlLWRlcml2YXRpb24KKyAgICAg
ICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICAgICAgICVib290c3RyYXAtZ2xpYmMKKyAgICAg
ICAgICAgICAgICAgICglY3VycmVudC1zeXN0ZW0pKSkKKyAgICAgICAgICAgIChvIChtYXAgZGVy
aXZhdGlvbi0+b3V0cHV0LXBhdGggKGxpc3QgZDEgZDIpKSkpCisgICAgICAgKHNldC1idWlsZC1v
cHRpb25zIHMgIzp1c2Utc3Vic3RpdHV0ZXM/ICNmKQorICAgICAgIChhbmQgKG5vdCAoaGFzLXN1
YnN0aXR1dGVzPyBzIChkZXJpdmF0aW9uLWZpbGUtbmFtZSBkMSkpKQorICAgICAgICAgICAgKG5v
dCAoaGFzLXN1YnN0aXR1dGVzPyBzIChkZXJpdmF0aW9uLWZpbGUtbmFtZSBkMikpKQorICAgICAg
ICAgICAgKG51bGw/IChzdWJzdGl0dXRhYmxlLXBhdGhzIHMgbykpCisgICAgICAgICAgICAobnVs
bD8gKHN1YnN0aXR1dGFibGUtcGF0aC1pbmZvIHMgbykpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJl
c3VsdDogUEFTUwoKdGVzdC1uYW1lOiBidWlsZC10aGluZ3Mgd2l0aCBvdXRwdXQgcGF0aApsb2Nh
dGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206
NDEyCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJidWlsZC10aGluZ3Mgd2l0aCBvdXRwdXQg
cGF0aCIKKyAgICh3aXRoLXN0b3JlCisgICAgIHMKKyAgICAgKGxldCogKChjIChyYW5kb20tdGV4
dCkpCisgICAgICAgICAgICAoZCAoYnVpbGQtZXhwcmVzc2lvbi0+ZGVyaXZhdGlvbgorICAgICAg
ICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICJzdWJzdGl0dXRlLW1lIgorICAgICAgICAg
ICAgICAgICBgKGNhbGwtd2l0aC1vdXRwdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAlb3V0
cHV0CisgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHApIChkaXNwbGF5ICxjIHApKSkKKyAg
ICAgICAgICAgICAgICAgIzpndWlsZS1mb3ItYnVpbGQKKyAgICAgICAgICAgICAgICAgKHBhY2th
Z2UtZGVyaXZhdGlvbgorICAgICAgICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICAgICAgICAl
Ym9vdHN0cmFwLWd1aWxlCisgICAgICAgICAgICAgICAgICAgKCVjdXJyZW50LXN5c3RlbSkpKSkK
KyAgICAgICAgICAgIChvIChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkKSkpCisgICAgICAgKHNl
dC1idWlsZC1vcHRpb25zIHMgIzp1c2Utc3Vic3RpdHV0ZXM/ICNmKQorICAgICAgIChidWlsZC10
aGluZ3MgcyAobGlzdCBvKSkKKyAgICAgICAobm90ICh2YWxpZC1wYXRoPyBzIG8pKSkpKQphY3R1
YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzdWJzdGl0dXRlIHF1ZXJ5Cmxv
Y2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNj
bTo0MzIKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInN1YnN0aXR1dGUgcXVlcnkiCisgICAo
d2l0aC1zdG9yZQorICAgICBzCisgICAgIChsZXQqICgoZCAocGFja2FnZS1kZXJpdmF0aW9uCisg
ICAgICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAg
ICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpCisgICAgICAgICAgICAobyAoZGVyaXZh
dGlvbi0+b3V0cHV0LXBhdGggZCkpKQorICAgICAgICh3aXRoLWRlcml2YXRpb24tbmFyaW5mbwor
ICAgICAgICAgZAorICAgICAgICAgKGZhbHNlLWlmLWV4Y2VwdGlvbgorICAgICAgICAgICAoZGVs
ZXRlLWZpbGUtcmVjdXJzaXZlbHkKKyAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAorICAgICAg
ICAgICAgICAgKGdldGVudiAiWERHX0NBQ0hFX0hPTUUiKQorICAgICAgICAgICAgICAgIi9ndWl4
L3N1YnN0aXR1dGUiKSkpCisgICAgICAgICAoc2V0LWJ1aWxkLW9wdGlvbnMKKyAgICAgICAgICAg
cworICAgICAgICAgICAjOnVzZS1zdWJzdGl0dXRlcz8KKyAgICAgICAgICAgI3QKKyAgICAgICAg
ICAgIzpzdWJzdGl0dXRlLXVybHMKKyAgICAgICAgICAgKCV0ZXN0LXN1YnN0aXR1dGUtdXJscykp
CisgICAgICAgICAoYW5kIChoYXMtc3Vic3RpdHV0ZXM/IHMgbykKKyAgICAgICAgICAgICAgKGVx
dWFsPworICAgICAgICAgICAgICAgIChsaXN0IG8pCisgICAgICAgICAgICAgICAgKHN1YnN0aXR1
dGFibGUtcGF0aHMgcyAobGlzdCBvKSkpCisgICAgICAgICAgICAgIChtYXRjaCAocGsgJ3NwaSAo
c3Vic3RpdHV0YWJsZS1wYXRoLWluZm8gcyAobGlzdCBvKSkpCisgICAgICAgICAgICAgICAgICAg
ICAoKCg/IHN1YnN0aXR1dGFibGU/IHMpKQorICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHN0
cmluZz0/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdGl0dXRhYmxlLWRlcml2
ZXIgcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2YXRpb24tZmlsZS1uYW1l
IGQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGw/IChzdWJzdGl0dXRhYmxlLXJl
ZmVyZW5jZXMgcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWw/IChzdWJzdGl0
dXRhYmxlLW5hci1zaXplIHMpIDEyMzQpKSkpKSkpKSkKc3Vic3RpdHV0ZTogd2FybmluZzogYXV0
aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gb2Ygc3Vic3RpdHV0ZXMgZGlzYWJsZWQhCnN1
YnN0aXR1dGU6IGd1aXggc3Vic3RpdHV0ZTogd2FybmluZzogQUNMIGZvciBhcmNoaXZlIGltcG9y
dHMgc2VlbXMgdG8gYmUgdW5pbml0aWFsaXplZCwgc3Vic3RpdHV0ZXMgbWF5IGJlIHVuYXZhaWxh
YmxlCgo7OzsgKHNwaSAoIzw8c3Vic3RpdHV0YWJsZT4gcGF0aDogIi9ob21lL3NhcGllbnRlY2gv
RGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvMHZ4Z3ZseDAzcXNjcmRzODhzNjVocnM3
MG41amt3MmctZ3VpbGUtYm9vdHN0cmFwLTIuMCIgZGVyaXZlcjogIi9ob21lL3NhcGllbnRlY2gv
RGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvYmppaGNoYWlsY2xpcnozMzEwZHF5cGli
amcwaGFwcG0tZ3VpbGUtYm9vdHN0cmFwLTIuMC5kcnYiIHJlZnM6ICgpIGRsLXNpemU6IDAgbmFy
LXNpemU6IDEyMzQ+KSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTog
c3Vic3RpdHV0ZSBxdWVyeSwgYWx0ZXJuYXRpbmcgVVJMcwpsb2NhdGlvbjogL2hvbWUvc2FwaWVu
dGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206NDU2CnNvdXJjZToKKyAodGVz
dC1hc3NlcnQKKyAgICJzdWJzdGl0dXRlIHF1ZXJ5LCBhbHRlcm5hdGluZyBVUkxzIgorICAgKGxl
dCogKChkICh3aXRoLXN0b3JlCisgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAocGFj
a2FnZS1kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICAgICAgJWJv
b3RzdHJhcC1ndWlsZQorICAgICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpKQorICAg
ICAgICAgIChvIChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkKSkpCisgICAgICh3aXRoLWRlcml2
YXRpb24tbmFyaW5mbworICAgICAgIGQKKyAgICAgICAoZmFsc2UtaWYtZXhjZXB0aW9uCisgICAg
ICAgICAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkKKyAgICAgICAgICAgKHN0cmluZy1hcHBlbmQK
KyAgICAgICAgICAgICAoZ2V0ZW52ICJYREdfQ0FDSEVfSE9NRSIpCisgICAgICAgICAgICAgIi9n
dWl4L3N1YnN0aXR1dGUiKSkpCisgICAgICAgKGFuZCAod2l0aC1zdG9yZQorICAgICAgICAgICAg
ICBzCisgICAgICAgICAgICAgIChzZXQtYnVpbGQtb3B0aW9ucworICAgICAgICAgICAgICAgIHMK
KyAgICAgICAgICAgICAgICAjOnVzZS1zdWJzdGl0dXRlcz8KKyAgICAgICAgICAgICAgICAjdAor
ICAgICAgICAgICAgICAgICM6c3Vic3RpdHV0ZS11cmxzCisgICAgICAgICAgICAgICAgKCV0ZXN0
LXN1YnN0aXR1dGUtdXJscykpCisgICAgICAgICAgICAgIChoYXMtc3Vic3RpdHV0ZXM/IHMgbykp
CisgICAgICAgICAgICAod2l0aC1zdG9yZQorICAgICAgICAgICAgICBzCisgICAgICAgICAgICAg
IChzZXQtYnVpbGQtb3B0aW9ucworICAgICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICAgICAj
OnVzZS1zdWJzdGl0dXRlcz8KKyAgICAgICAgICAgICAgICAjdAorICAgICAgICAgICAgICAgICM6
c3Vic3RpdHV0ZS11cmxzCisgICAgICAgICAgICAgICAgKGxpc3QgImh0dHA6Ly9kb2VzLW5vdC1l
eGlzdCIpKQorICAgICAgICAgICAgICAobm90IChoYXMtc3Vic3RpdHV0ZXM/IHMgbykpKQorICAg
ICAgICAgICAgKHdpdGgtc3RvcmUKKyAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAoc2V0
LWJ1aWxkLW9wdGlvbnMKKyAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgIzp1c2Ut
c3Vic3RpdHV0ZXM/CisgICAgICAgICAgICAgICAgI3QKKyAgICAgICAgICAgICAgICAjOnN1YnN0
aXR1dGUtdXJscworICAgICAgICAgICAgICAgICgldGVzdC1zdWJzdGl0dXRlLXVybHMpKQorICAg
ICAgICAgICAgICAoaGFzLXN1YnN0aXR1dGVzPyBzIG8pKQorICAgICAgICAgICAgKHdpdGgtc3Rv
cmUKKyAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAoc2V0LWJ1aWxkLW9wdGlvbnMKKyAg
ICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgIzp1c2Utc3Vic3RpdHV0ZXM/CisgICAg
ICAgICAgICAgICAgI3QKKyAgICAgICAgICAgICAgICAjOnN1YnN0aXR1dGUtdXJscworICAgICAg
ICAgICAgICAgICcoKSkKKyAgICAgICAgICAgICAgKG5vdCAoaGFzLXN1YnN0aXR1dGVzPyBzIG8p
KSkpKSkpCnN1YnN0aXR1dGU6IHdhcm5pbmc6IGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0
aW9uIG9mIHN1YnN0aXR1dGVzIGRpc2FibGVkIQpzdWJzdGl0dXRlOiBndWl4IHN1YnN0aXR1dGU6
IHdhcm5pbmc6IEFDTCBmb3IgYXJjaGl2ZSBpbXBvcnRzIHNlZW1zIHRvIGJlIHVuaW5pdGlhbGl6
ZWQsIHN1YnN0aXR1dGVzIG1heSBiZSB1bmF2YWlsYWJsZQpzdWJzdGl0dXRlOiB3YXJuaW5nOiBh
dXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBvZiBzdWJzdGl0dXRlcyBkaXNhYmxlZCEK
c3Vic3RpdHV0ZTogZ3VpeCBzdWJzdGl0dXRlOiB3YXJuaW5nOiBBQ0wgZm9yIGFyY2hpdmUgaW1w
b3J0cyBzZWVtcyB0byBiZSB1bmluaXRpYWxpemVkLCBzdWJzdGl0dXRlcyBtYXkgYmUgdW5hdmFp
bGFibGUKc3Vic3RpdHV0ZTogQmFja3RyYWNlOgpzdWJzdGl0dXRlOiBJbiBpY2UtOS9ib290LTku
c2NtOgpzdWJzdGl0dXRlOiAgMTU3OiA5IFtjYXRjaCAjdCAjPGNhdGNoLWNsb3N1cmUgOGM4M2Uw
PiAuLi5dCnN1YnN0aXR1dGU6IEluIHVua25vd24gZmlsZToKc3Vic3RpdHV0ZTogICAgPzogOCBb
YXBwbHktc21vYi8xICM8Y2F0Y2gtY2xvc3VyZSA4YzgzZTA+XQpzdWJzdGl0dXRlOiBJbiBpY2Ut
OS9ib290LTkuc2NtOgpzdWJzdGl0dXRlOiAgIDYzOiA3IFtjYWxsLXdpdGgtcHJvbXB0IHByb21w
dDAgLi4uXQpzdWJzdGl0dXRlOiBJbiBpY2UtOS9ldmFsLnNjbToKc3Vic3RpdHV0ZTogIDQzMjog
NiBbZXZhbCAjICNdCnN1YnN0aXR1dGU6IEluIGljZS05L2Jvb3QtOS5zY206CnN1YnN0aXR1dGU6
IDI0MDE6IDUgW3NhdmUtbW9kdWxlLWV4Y3Vyc2lvbiAjPHByb2NlZHVyZSA4ZTg5NDAgYXQgaWNl
LTkvYm9vdC05LnNjbTo0MDQ1OjMgKCk+XQpzdWJzdGl0dXRlOiA0MDUwOiA0IFsjPHByb2NlZHVy
ZSA4ZTg5NDAgYXQgaWNlLTkvYm9vdC05LnNjbTo0MDQ1OjMgKCk+XQpzdWJzdGl0dXRlOiAxNzI0
OiAzIFslc3RhcnQtc3RhY2sgbG9hZC1zdGFjayAjPHByb2NlZHVyZSA4ZmE4MjAgYXQgaWNlLTkv
Ym9vdC05LnNjbTo0MDQxOjEwICgpPl0Kc3Vic3RpdHV0ZTogMTcyOTogMiBbIzxwcm9jZWR1cmUg
OGZmZWEwICgpPl0Kc3Vic3RpdHV0ZTogSW4gdW5rbm93biBmaWxlOgpzdWJzdGl0dXRlOiAgICA/
OiAxIFtwcmltaXRpdmUtbG9hZCAiL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC9z
Y3JpcHRzL2d1aXgiXQpzdWJzdGl0dXRlOiBJbiBndWl4L3VpLnNjbToKc3Vic3RpdHV0ZTogMTIw
OTogMCBbcnVuLWd1aXgtY29tbWFuZCBzdWJzdGl0dXRlICItLXF1ZXJ5Il0Kc3Vic3RpdHV0ZTog
CnN1YnN0aXR1dGU6IGd1aXgvdWkuc2NtOjEyMDk6NjogSW4gcHJvY2VkdXJlIHJ1bi1ndWl4LWNv
bW1hbmQ6CnN1YnN0aXR1dGU6IGd1aXgvdWkuc2NtOjEyMDk6NjogdW5tYXRjaGVkIGxpbmUgIjxo
dG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJyZWZyZXNoXCIgY29udGVudD1cIjA7dXJsPWh0
dHA6Ly93d3cuZG5zcnNlYXJjaC5jb20vaW5kZXgucGhwP29yaWdVUkw9aHR0cDovL2RvZXMtbm90
LWV4aXN0L25peC1jYWNoZS1pbmZvJmJjPVwiLz48L2hlYWQ+PGJvZHk+PHNjcmlwdCB0eXBlPVwi
dGV4dC9qYXZhc2NyaXB0XCI+d2luZG93LmxvY2F0aW9uPVwiaHR0cDovL3d3dy5kbnNyc2VhcmNo
LmNvbS9pbmRleC5waHA/b3JpZ1VSTD1cIitlc2NhcGUod2luZG93LmxvY2F0aW9uKStcIiZyPVwi
K2VzY2FwZShkb2N1bWVudC5yZWZlcnJlcikrXCImYmM9XCI7PC9zY3JpcHQ+PC9ib2R5PjwvaHRt
bD4iCmFjdHVhbC12YWx1ZTogI2YKYWN0dWFsLWVycm9yOgorIChzcmZpLTM0CisgICAjPGNvbmRp
dGlvbiAmbml4LXByb3RvY29sLWVycm9yIFttZXNzYWdlOiAic3Vic3RpdHV0ZXIgYHN1YnN0aXR1
dGUnIGRpZWQgdW5leHBlY3RlZGx5IiBzdGF0dXM6IDFdIGFjNmU0MD4pCnJlc3VsdDogRkFJTAoK
dGVzdC1uYW1lOiBzdWJzdGl0dXRlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo0ODgKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAg
InN1YnN0aXR1dGUiCisgICAod2l0aC1zdG9yZQorICAgICBzCisgICAgIChsZXQqICgoYyAocmFu
ZG9tLXRleHQpKQorICAgICAgICAgICAgKGQgKGJ1aWxkLWV4cHJlc3Npb24tPmRlcml2YXRpb24K
KyAgICAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAic3Vic3RpdHV0ZS1tZSIKKyAg
ICAgICAgICAgICAgICAgYChjYWxsLXdpdGgtb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAg
ICAgJW91dHB1dAorICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChwKSAoZXhpdCAxKSAoZGlz
cGxheSAsYyBwKSkpCisgICAgICAgICAgICAgICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICAg
ICAgICAgICAgIChwYWNrYWdlLWRlcml2YXRpb24KKyAgICAgICAgICAgICAgICAgICBzCisgICAg
ICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAgICAgICAgICAgICAgICAgICglY3Vy
cmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAgICAobyAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGgg
ZCkpKQorICAgICAgICh3aXRoLWRlcml2YXRpb24tc3Vic3RpdHV0ZQorICAgICAgICAgZAorICAg
ICAgICAgYworICAgICAgICAgKHNldC1idWlsZC1vcHRpb25zCisgICAgICAgICAgIHMKKyAgICAg
ICAgICAgIzp1c2Utc3Vic3RpdHV0ZXM/CisgICAgICAgICAgICN0CisgICAgICAgICAgICM6c3Vi
c3RpdHV0ZS11cmxzCisgICAgICAgICAgICgldGVzdC1zdWJzdGl0dXRlLXVybHMpKQorICAgICAg
ICAgKGFuZCAoaGFzLXN1YnN0aXR1dGVzPyBzIG8pCisgICAgICAgICAgICAgIChidWlsZC1kZXJp
dmF0aW9ucyBzIChsaXN0IGQpKQorICAgICAgICAgICAgICAoZXF1YWw/CisgICAgICAgICAgICAg
ICAgYworICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBvIGdldC1zdHJpbmct
YWxsKSkpKSkpKQpzdWJzdGl0dXRlOiB3YXJuaW5nOiBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9y
aXphdGlvbiBvZiBzdWJzdGl0dXRlcyBkaXNhYmxlZCEKc3Vic3RpdHV0ZTogZ3VpeCBzdWJzdGl0
dXRlOiB3YXJuaW5nOiBBQ0wgZm9yIGFyY2hpdmUgaW1wb3J0cyBzZWVtcyB0byBiZSB1bmluaXRp
YWxpemVkLCBzdWJzdGl0dXRlcyBtYXkgYmUgdW5hdmFpbGFibGUKQCBzdWJzdGl0dXRlci1zdGFy
dGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvMnl6
ZDZjbXk3Zmg5emFqdnk4aGIwa2kzajYxa3E2eHEtc3Vic3RpdHV0ZS1tZSAvaG9tZS9zYXBpZW50
ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL25peC9zY3JpcHRzL3N1YnN0aXR1dGUKd2FybmluZzogYXV0
aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gb2Ygc3Vic3RpdHV0ZXMgZGlzYWJsZWQhCmd1
aXggc3Vic3RpdHV0ZTogd2FybmluZzogQUNMIGZvciBhcmNoaXZlIGltcG9ydHMgc2VlbXMgdG8g
YmUgdW5pbml0aWFsaXplZCwgc3Vic3RpdHV0ZXMgbWF5IGJlIHVuYXZhaWxhYmxlCkRvd25sb2Fk
aW5nIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvMnl6
ZDZjbXk3Zmg5emFqdnk4aGIwa2kzajYxa3E2eHEtc3Vic3RpdHV0ZS1tZSAoMUtpQiBpbnN0YWxs
ZWQpLi4uCg0bW0sgZXhhbXBsZS5uYXIgIDE3NkIgICAgICAgICAgICAgICAgICAgICAwQi9zIDAw
OjAwIFsjIyMjIyMjIyMjIyMjIyMjIyMjI10gMTAwLjAlCkAgc3Vic3RpdHV0ZXItc3VjY2VlZGVk
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvMnl6ZDZj
bXk3Zmg5emFqdnk4aGIwa2kzajYxa3E2eHEtc3Vic3RpdHV0ZS1tZQphY3R1YWwtdmFsdWU6ICN0
CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzdWJzdGl0dXRlICsgYnVpbGQtdGhpbmdzIHdpdGgg
b3V0cHV0IHBhdGgKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdHMvc3RvcmUuc2NtOjUwNwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3Vic3RpdHV0
ZSArIGJ1aWxkLXRoaW5ncyB3aXRoIG91dHB1dCBwYXRoIgorICAgKHdpdGgtc3RvcmUKKyAgICAg
cworICAgICAobGV0KiAoKGMgKHJhbmRvbS10ZXh0KSkKKyAgICAgICAgICAgIChkIChidWlsZC1l
eHByZXNzaW9uLT5kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgIHMKKyAgICAgICAgICAgICAg
ICAgInN1YnN0aXR1dGUtbWUiCisgICAgICAgICAgICAgICAgIGAoY2FsbC13aXRoLW91dHB1dC1m
aWxlCisgICAgICAgICAgICAgICAgICAgICVvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgKGxh
bWJkYSAocCkgKGV4aXQgMSkgKGRpc3BsYXkgLGMgcCkpKQorICAgICAgICAgICAgICAgICAjOmd1
aWxlLWZvci1idWlsZAorICAgICAgICAgICAgICAgICAocGFja2FnZS1kZXJpdmF0aW9uCisgICAg
ICAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAgICVib290c3RyYXAtZ3VpbGUKKyAg
ICAgICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpKQorICAgICAgICAgICAgKG8gKGRl
cml2YXRpb24tPm91dHB1dC1wYXRoIGQpKSkKKyAgICAgICAod2l0aC1kZXJpdmF0aW9uLXN1YnN0
aXR1dGUKKyAgICAgICAgIGQKKyAgICAgICAgIGMKKyAgICAgICAgIChzZXQtYnVpbGQtb3B0aW9u
cworICAgICAgICAgICBzCisgICAgICAgICAgICM6dXNlLXN1YnN0aXR1dGVzPworICAgICAgICAg
ICAjdAorICAgICAgICAgICAjOnN1YnN0aXR1dGUtdXJscworICAgICAgICAgICAoJXRlc3Qtc3Vi
c3RpdHV0ZS11cmxzKSkKKyAgICAgICAgIChhbmQgKGhhcy1zdWJzdGl0dXRlcz8gcyBvKQorICAg
ICAgICAgICAgICAoYnVpbGQtdGhpbmdzIHMgKGxpc3QgbykpCisgICAgICAgICAgICAgICh2YWxp
ZC1wYXRoPyBzIG8pCisgICAgICAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgICAgICBjCisg
ICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIG8gZ2V0LXN0cmluZy1hbGwpKSkp
KSkpCnN1YnN0aXR1dGU6IHdhcm5pbmc6IGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9u
IG9mIHN1YnN0aXR1dGVzIGRpc2FibGVkIQpzdWJzdGl0dXRlOiBndWl4IHN1YnN0aXR1dGU6IHdh
cm5pbmc6IEFDTCBmb3IgYXJjaGl2ZSBpbXBvcnRzIHNlZW1zIHRvIGJlIHVuaW5pdGlhbGl6ZWQs
IHN1YnN0aXR1dGVzIG1heSBiZSB1bmF2YWlsYWJsZQpAIHN1YnN0aXR1dGVyLXN0YXJ0ZWQgL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9hbnJqeWpxbjNn
OG5ua3dyaGxzOG5kNWJnMHI1azA4Mi1zdWJzdGl0dXRlLW1lIC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvbml4L3NjcmlwdHMvc3Vic3RpdHV0ZQp3YXJuaW5nOiBhdXRoZW50aWNh
dGlvbiBhbmQgYXV0aG9yaXphdGlvbiBvZiBzdWJzdGl0dXRlcyBkaXNhYmxlZCEKZ3VpeCBzdWJz
dGl0dXRlOiB3YXJuaW5nOiBBQ0wgZm9yIGFyY2hpdmUgaW1wb3J0cyBzZWVtcyB0byBiZSB1bmlu
aXRpYWxpemVkLCBzdWJzdGl0dXRlcyBtYXkgYmUgdW5hdmFpbGFibGUKRG93bmxvYWRpbmcgL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9hbnJqeWpxbjNn
OG5ua3dyaGxzOG5kNWJnMHI1azA4Mi1zdWJzdGl0dXRlLW1lICgxS2lCIGluc3RhbGxlZCkuLi4K
DRtbSyBleGFtcGxlLm5hciAgMTc2QiAgICAgICAgICAgICAgICAgICAgIDBCL3MgMDA6MDAgWyMj
IyMjIyMjIyMjIyMjIyMjIyMjXSAxMDAuMCUKQCBzdWJzdGl0dXRlci1zdWNjZWVkZWQgL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9hbnJqeWpxbjNnOG5u
a3dyaGxzOG5kNWJnMHI1azA4Mi1zdWJzdGl0dXRlLW1lCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0
OiBQQVNTCgp0ZXN0LW5hbWU6IHN1YnN0aXR1dGUsIGNvcnJ1cHQgb3V0cHV0IGhhc2gKbG9jYXRp
b246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjUy
Nwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3Vic3RpdHV0ZSwgY29ycnVwdCBvdXRwdXQg
aGFzaCIKKyAgICh3aXRoLXN0b3JlCisgICAgIHMKKyAgICAgKGxldCogKChjICJoZWxsbywgd29y
bGQiKQorICAgICAgICAgICAgKGQgKGJ1aWxkLWV4cHJlc3Npb24tPmRlcml2YXRpb24KKyAgICAg
ICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAiY29ycnVwdC1zdWJzdGl0dXRlIgorICAg
ICAgICAgICAgICAgICBgKG1rZGlyICVvdXRwdXQpCisgICAgICAgICAgICAgICAgICM6Z3VpbGUt
Zm9yLWJ1aWxkCisgICAgICAgICAgICAgICAgIChwYWNrYWdlLWRlcml2YXRpb24KKyAgICAgICAg
ICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAgICAg
ICAgICAgICAgICAgICglY3VycmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAgICAobyAoZGVyaXZh
dGlvbi0+b3V0cHV0LXBhdGggZCkpKQorICAgICAgICh3aXRoLWRlcml2YXRpb24tc3Vic3RpdHV0
ZQorICAgICAgICAgZAorICAgICAgICAgYworICAgICAgICAgKHNoYTI1NiA9PiAobWFrZS1ieXRl
dmVjdG9yIDMyIDApKQorICAgICAgICAgKHNldC1idWlsZC1vcHRpb25zCisgICAgICAgICAgIHMK
KyAgICAgICAgICAgIzp1c2Utc3Vic3RpdHV0ZXM/CisgICAgICAgICAgICN0CisgICAgICAgICAg
ICM6ZmFsbGJhY2s/CisgICAgICAgICAgICNmCisgICAgICAgICAgICM6c3Vic3RpdHV0ZS11cmxz
CisgICAgICAgICAgICgldGVzdC1zdWJzdGl0dXRlLXVybHMpKQorICAgICAgICAgKGFuZCAoaGFz
LXN1YnN0aXR1dGVzPyBzIG8pCisgICAgICAgICAgICAgIChndWFyZCAoYyAoKG5peC1wcm90b2Nv
bC1lcnJvcj8gYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAocGsgJ2NvcnJ1cHQgYykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAobm90ICh6ZXJvPyAobml4LXByb3RvY29sLWVycm9yLXN0
YXR1cyBjKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgIChidWlsZC1kZXJpdmF0aW9ucyBzIChs
aXN0IGQpKQorICAgICAgICAgICAgICAgICAgICAgI2YpKSkpKSkKc3Vic3RpdHV0ZTogd2Fybmlu
ZzogYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gb2Ygc3Vic3RpdHV0ZXMgZGlzYWJs
ZWQhCnN1YnN0aXR1dGU6IGd1aXggc3Vic3RpdHV0ZTogd2FybmluZzogQUNMIGZvciBhcmNoaXZl
IGltcG9ydHMgc2VlbXMgdG8gYmUgdW5pbml0aWFsaXplZCwgc3Vic3RpdHV0ZXMgbWF5IGJlIHVu
YXZhaWxhYmxlCkAgc3Vic3RpdHV0ZXItc3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2JtZGxtaWNtczdtdzU3MXNpcTdnc2ppcDRhczY0NTg2
LWNvcnJ1cHQtc3Vic3RpdHV0ZSAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL25p
eC9zY3JpcHRzL3N1YnN0aXR1dGUKd2FybmluZzogYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6
YXRpb24gb2Ygc3Vic3RpdHV0ZXMgZGlzYWJsZWQhCmd1aXggc3Vic3RpdHV0ZTogd2FybmluZzog
QUNMIGZvciBhcmNoaXZlIGltcG9ydHMgc2VlbXMgdG8gYmUgdW5pbml0aWFsaXplZCwgc3Vic3Rp
dHV0ZXMgbWF5IGJlIHVuYXZhaWxhYmxlCkRvd25sb2FkaW5nIC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvYm1kbG1pY21zN213NTcxc2lxN2dzamlwNGFz
NjQ1ODYtY29ycnVwdC1zdWJzdGl0dXRlICgxS2lCIGluc3RhbGxlZCkuLi4KDRtbSyBleGFtcGxl
Lm5hciAgMTI4QiAgICAgICAgICAgICAgICAgICAgIDBCL3MgMDA6MDAgWyMjIyMjIyMjIyMjIyMj
IyMjIyMjXSAxMDAuMCUKQCBzdWJzdGl0dXRlci1mYWlsZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9ibWRsbWljbXM3bXc1NzFzaXE3Z3NqaXA0YXM2
NDU4Ni1jb3JydXB0LXN1YnN0aXR1dGUgMCBoYXNoIG1pc21hdGNoIGluIGRvd25sb2FkZWQgcGF0
aCBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9ibWRs
bWljbXM3bXc1NzFzaXE3Z3NqaXA0YXM2NDU4Ni1jb3JydXB0LXN1YnN0aXR1dGUnOiBleHBlY3Rl
ZCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLCBnb3QgYjhmNzNhNmViMjgwZTYzMTY5YjFkZTJhNWI1ZTE1NDY3NmZlMWFkYTY4
NWYxZTVjNzE4M2NiYjJjMWRjZDUzNQoKOzs7IChjb3JydXB0ICM8Y29uZGl0aW9uICZuaXgtcHJv
dG9jb2wtZXJyb3IgW21lc3NhZ2U6ICJzb21lIHN1YnN0aXR1dGVzIGZvciB0aGUgb3V0cHV0cyBv
ZiBkZXJpdmF0aW9uIGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1w
L3N0b3JlL3lwM3BmZzI1MTBiNWRtN2lsc2wxbnJyeTFqNXEzd3czLWNvcnJ1cHQtc3Vic3RpdHV0
ZS5kcnYnIGZhaWxlZCAodXN1YWxseSBoYXBwZW5zIGR1ZSB0byBuZXR3b3JraW5nIGlzc3Vlcyk7
IHRyeSBgLS1mYWxsYmFjaycgdG8gYnVpbGQgZGVyaXZhdGlvbiBmcm9tIHNvdXJjZSAiIHN0YXR1
czogMV0gMWFmYTdiMD4pCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6
IHN1YnN0aXR1dGUgLS1mYWxsYmFjawpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206NTU3CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAg
ICJzdWJzdGl0dXRlIC0tZmFsbGJhY2siCisgICAod2l0aC1zdG9yZQorICAgICBzCisgICAgIChs
ZXQqICgodCAocmFuZG9tLXRleHQpKQorICAgICAgICAgICAgKGQgKGJ1aWxkLWV4cHJlc3Npb24t
PmRlcml2YXRpb24KKyAgICAgICAgICAgICAgICAgcworICAgICAgICAgICAgICAgICAic3Vic3Rp
dHV0ZS1tZS1ub3QiCisgICAgICAgICAgICAgICAgIGAoY2FsbC13aXRoLW91dHB1dC1maWxlCisg
ICAgICAgICAgICAgICAgICAgICVvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo
cCkgKGRpc3BsYXkgLHQgcCkpKQorICAgICAgICAgICAgICAgICAjOmd1aWxlLWZvci1idWlsZAor
ICAgICAgICAgICAgICAgICAocGFja2FnZS1kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgICAg
cworICAgICAgICAgICAgICAgICAgICVib290c3RyYXAtZ3VpbGUKKyAgICAgICAgICAgICAgICAg
ICAoJWN1cnJlbnQtc3lzdGVtKSkpKQorICAgICAgICAgICAgKG8gKGRlcml2YXRpb24tPm91dHB1
dC1wYXRoIGQpKSkKKyAgICAgICAod2l0aC1kZXJpdmF0aW9uLW5hcmluZm8KKyAgICAgICAgIGQK
KyAgICAgICAgIChzZXQtYnVpbGQtb3B0aW9ucworICAgICAgICAgICBzCisgICAgICAgICAgICM6
dXNlLXN1YnN0aXR1dGVzPworICAgICAgICAgICAjdAorICAgICAgICAgICAjOnN1YnN0aXR1dGUt
dXJscworICAgICAgICAgICAoJXRlc3Qtc3Vic3RpdHV0ZS11cmxzKSkKKyAgICAgICAgIChhbmQg
KGhhcy1zdWJzdGl0dXRlcz8gcyBvKQorICAgICAgICAgICAgICAoZ3VhcmQgKGMgKChuaXgtcHJv
dG9jb2wtZXJyb3I/IGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1idWlsZC1vcHRp
b25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjOnVzZS1zdWJzdGl0dXRlcz8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjOnN1YnN0aXR1dGUtdXJscworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCV0ZXN0LXN1YnN0aXR1dGUtdXJscykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICM6ZmFsbGJhY2s/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAjdCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChidWlsZC1kZXJpdmF0aW9ucyBzIChsaXN0IGQp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsPworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxs
LXdpdGgtaW5wdXQtZmlsZSBvIGdldC1zdHJpbmctYWxsKSkpKSkKKyAgICAgICAgICAgICAgICAg
ICAgIChidWlsZC1kZXJpdmF0aW9ucyBzIChsaXN0IGQpKQorICAgICAgICAgICAgICAgICAgICAg
I2YpKSkpKSkKc3Vic3RpdHV0ZTogd2FybmluZzogYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6
YXRpb24gb2Ygc3Vic3RpdHV0ZXMgZGlzYWJsZWQhCnN1YnN0aXR1dGU6IGd1aXggc3Vic3RpdHV0
ZTogd2FybmluZzogQUNMIGZvciBhcmNoaXZlIGltcG9ydHMgc2VlbXMgdG8gYmUgdW5pbml0aWFs
aXplZCwgc3Vic3RpdHV0ZXMgbWF5IGJlIHVuYXZhaWxhYmxlCkAgc3Vic3RpdHV0ZXItc3RhcnRl
ZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2Qyamhi
a2l4dzQ3NWFsc2s3MzhoZmlxMmp5d2Fnc2htLXN1YnN0aXR1dGUtbWUtbm90IC9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvbml4L3NjcmlwdHMvc3Vic3RpdHV0ZQp3YXJuaW5nOiBh
dXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBvZiBzdWJzdGl0dXRlcyBkaXNhYmxlZCEK
Z3VpeCBzdWJzdGl0dXRlOiB3YXJuaW5nOiBBQ0wgZm9yIGFyY2hpdmUgaW1wb3J0cyBzZWVtcyB0
byBiZSB1bmluaXRpYWxpemVkLCBzdWJzdGl0dXRlcyBtYXkgYmUgdW5hdmFpbGFibGUKRG93bmxv
YWRpbmcgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9k
MmpoYmtpeHc0NzVhbHNrNzM4aGZpcTJqeXdhZ3NobS1zdWJzdGl0dXRlLW1lLW5vdCAoMUtpQiBp
bnN0YWxsZWQpLi4uCmd1aXggc3Vic3RpdHV0ZTogZXJyb3I6IG9wZW4tZmlsZTogTm8gc3VjaCBm
aWxlIG9yIGRpcmVjdG9yeTogIi9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dC10bXAvdmFyLzQ1Nzgvc3Vic3RpdHV0ZXItZGF0YS9leGFtcGxlLm5hciIKQCBzdWJzdGl0dXRl
ci1mYWlsZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9y
ZS9kMmpoYmtpeHc0NzVhbHNrNzM4aGZpcTJqeXdhZ3NobS1zdWJzdGl0dXRlLW1lLW5vdCAyNTYg
ZmV0Y2hpbmcgcGF0aCBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRt
cC9zdG9yZS9kMmpoYmtpeHc0NzVhbHNrNzM4aGZpcTJqeXdhZ3NobS1zdWJzdGl0dXRlLW1lLW5v
dCcgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDEKQCBzdWJzdGl0dXRlci1zdGFydGVkIC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvZDJqaGJraXh3NDc1YWxz
azczOGhmaXEyanl3YWdzaG0tc3Vic3RpdHV0ZS1tZS1ub3QgL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC9uaXgvc2NyaXB0cy9zdWJzdGl0dXRlCndhcm5pbmc6IGF1dGhlbnRpY2F0
aW9uIGFuZCBhdXRob3JpemF0aW9uIG9mIHN1YnN0aXR1dGVzIGRpc2FibGVkIQpndWl4IHN1YnN0
aXR1dGU6IHdhcm5pbmc6IEFDTCBmb3IgYXJjaGl2ZSBpbXBvcnRzIHNlZW1zIHRvIGJlIHVuaW5p
dGlhbGl6ZWQsIHN1YnN0aXR1dGVzIG1heSBiZSB1bmF2YWlsYWJsZQpEb3dubG9hZGluZyAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2Qyamhia2l4dzQ3
NWFsc2s3MzhoZmlxMmp5d2Fnc2htLXN1YnN0aXR1dGUtbWUtbm90ICgxS2lCIGluc3RhbGxlZCku
Li4KZ3VpeCBzdWJzdGl0dXRlOiBlcnJvcjogb3Blbi1maWxlOiBObyBzdWNoIGZpbGUgb3IgZGly
ZWN0b3J5OiAiL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIv
NDU3OC9zdWJzdGl0dXRlci1kYXRhL2V4YW1wbGUubmFyIgpAIHN1YnN0aXR1dGVyLWZhaWxlZCAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2Qyamhia2l4
dzQ3NWFsc2s3MzhoZmlxMmp5d2Fnc2htLXN1YnN0aXR1dGUtbWUtbm90IDI1NiBmZXRjaGluZyBw
YXRoIGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2Qy
amhia2l4dzQ3NWFsc2s3MzhoZmlxMmp5d2Fnc2htLXN1YnN0aXR1dGUtbWUtbm90JyBmYWlsZWQg
d2l0aCBleGl0IGNvZGUgMQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9kbjQ0ejloZHYxZmhwdzRjY3JzMmtjaXMzcDNmczht
bS1zdWJzdGl0dXRlLW1lLW5vdC5kcnYgLSB4ODZfNjQtbGludXggL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2cy9kbi8vNDR6OWhkdjFm
aHB3NGNjcnMya2NpczNwM2ZzOG1tLXN1YnN0aXR1dGUtbWUtbm90LmRydi5iejIKQCBidWlsZC1z
dWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9y
ZS9kbjQ0ejloZHYxZmhwdzRjY3JzMmtjaXMzcDNmczhtbS1zdWJzdGl0dXRlLW1lLW5vdC5kcnYg
LQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBleHBvcnQvaW1wb3J0
IHNldmVyYWwgcGF0aHMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvc3RvcmUuc2NtOjU4OQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZXhwb3J0
L2ltcG9ydCBzZXZlcmFsIHBhdGhzIgorICAgKGxldCogKCh0ZXh0cyAodW5mb2xkCisgICAgICAg
ICAgICAgICAgICAgKGN1dCA+PSA8PiAxMCkKKyAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8g
KHJhbmRvbS10ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAjezErfSMKKyAgICAgICAgICAgICAg
ICAgICAwKSkKKyAgICAgICAgICAoZmlsZXMgKG1hcCAoY3V0IGFkZC10ZXh0LXRvLXN0b3JlICVz
dG9yZSAidGV4dCIgPD4pCisgICAgICAgICAgICAgICAgICAgICAgdGV4dHMpKQorICAgICAgICAg
IChkdW1wIChjYWxsLXdpdGgtYnl0ZXZlY3Rvci1vdXRwdXQtcG9ydAorICAgICAgICAgICAgICAg
ICAgKGN1dCBleHBvcnQtcGF0aHMgJXN0b3JlIGZpbGVzIDw+KSkpKQorICAgICAoZGVsZXRlLXBh
dGhzICVzdG9yZSBmaWxlcykKKyAgICAgKGFuZCAoZXZlcnkgKG5lZ2F0ZSBmaWxlLWV4aXN0cz8p
IGZpbGVzKQorICAgICAgICAgIChsZXQqICgoc291cmNlIChvcGVuLWJ5dGV2ZWN0b3ItaW5wdXQt
cG9ydCBkdW1wKSkKKyAgICAgICAgICAgICAgICAgKGltcG9ydGVkIChpbXBvcnQtcGF0aHMgJXN0
b3JlIHNvdXJjZSkpKQorICAgICAgICAgICAgKGFuZCAoZXF1YWw/IGltcG9ydGVkIGZpbGVzKQor
ICAgICAgICAgICAgICAgICAoZXZlcnkgZmlsZS1leGlzdHM/IGZpbGVzKQorICAgICAgICAgICAg
ICAgICAoZXF1YWw/CisgICAgICAgICAgICAgICAgICAgdGV4dHMKKyAgICAgICAgICAgICAgICAg
ICAobWFwIChsYW1iZGEgKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLXdp
dGgtaW5wdXQtZmlsZSBmaWxlIGdldC1zdHJpbmctYWxsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbGVzKSkpKSkpKQpmaW5kaW5nIGdhcmJhZ2UgY29sbGVjdG9yIHJvb3RzLi4uCmRlbGV0
aW5nIHVudXNlZCBsaW5rcy4uLgphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1u
YW1lOiBleHBvcnQvaW1wb3J0IHBhdGhzLCBlbnN1cmUgdG9wb2xvZ2ljYWwgb3JkZXIKbG9jYXRp
b246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjYw
OQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZXhwb3J0L2ltcG9ydCBwYXRocywgZW5zdXJl
IHRvcG9sb2dpY2FsIG9yZGVyIgorICAgKGxldCogKChmaWxlMCAoYWRkLXRleHQtdG8tc3RvcmUg
JXN0b3JlICJiYXoiIChyYW5kb20tdGV4dCkpKQorICAgICAgICAgIChmaWxlMSAoYWRkLXRleHQt
dG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAgICAgICAgICAgICAgICAi
Zm9vIgorICAgICAgICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAgICAgICAgICAgICAgICAg
ICAobGlzdCBmaWxlMCkpKQorICAgICAgICAgIChmaWxlMiAoYWRkLXRleHQtdG8tc3RvcmUKKyAg
ICAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAgICAgICAgICAgICAgICAiYmFyIgorICAgICAg
ICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBmaWxl
MSkpKQorICAgICAgICAgIChmaWxlcyAobGlzdCBmaWxlMSBmaWxlMikpCisgICAgICAgICAgKGR1
bXAxIChjYWxsLXdpdGgtYnl0ZXZlY3Rvci1vdXRwdXQtcG9ydAorICAgICAgICAgICAgICAgICAg
IChjdXRlIGV4cG9ydC1wYXRocyAlc3RvcmUgKGxpc3QgZmlsZTEgZmlsZTIpIDw+KSkpCisgICAg
ICAgICAgKGR1bXAyIChjYWxsLXdpdGgtYnl0ZXZlY3Rvci1vdXRwdXQtcG9ydAorICAgICAgICAg
ICAgICAgICAgIChjdXRlIGV4cG9ydC1wYXRocyAlc3RvcmUgKGxpc3QgZmlsZTIgZmlsZTEpIDw+
KSkpKQorICAgICAoZGVsZXRlLXBhdGhzICVzdG9yZSBmaWxlcykKKyAgICAgKGFuZCAoZXZlcnkg
KG5lZ2F0ZSBmaWxlLWV4aXN0cz8pIGZpbGVzKQorICAgICAgICAgIChieXRldmVjdG9yPT8gZHVt
cDEgZHVtcDIpCisgICAgICAgICAgKGxldCogKChzb3VyY2UgKG9wZW4tYnl0ZXZlY3Rvci1pbnB1
dC1wb3J0IGR1bXAxKSkKKyAgICAgICAgICAgICAgICAgKGltcG9ydGVkIChpbXBvcnQtcGF0aHMg
JXN0b3JlIHNvdXJjZSkpKQorICAgICAgICAgICAgKGFuZCAoZXF1YWw/IGltcG9ydGVkIChsaXN0
IGZpbGUxIGZpbGUyKSkKKyAgICAgICAgICAgICAgICAgKGV2ZXJ5IGZpbGUtZXhpc3RzPyBmaWxl
cykKKyAgICAgICAgICAgICAgICAgKGVxdWFsPyAobGlzdCBmaWxlMCkgKHJlZmVyZW5jZXMgJXN0
b3JlIGZpbGUxKSkKKyAgICAgICAgICAgICAgICAgKGVxdWFsPyAobGlzdCBmaWxlMSkgKHJlZmVy
ZW5jZXMgJXN0b3JlIGZpbGUyKSkpKSkpKQpmaW5kaW5nIGdhcmJhZ2UgY29sbGVjdG9yIHJvb3Rz
Li4uCmRlbGV0aW5nIHVudXNlZCBsaW5rcy4uLgphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFT
UwoKdGVzdC1uYW1lOiBleHBvcnQvaW1wb3J0IGluY29tcGxldGUKbG9jYXRpb246IC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjYzMQpzb3VyY2U6Cisg
KHRlc3QtYXNzZXJ0CisgICAiZXhwb3J0L2ltcG9ydCBpbmNvbXBsZXRlIgorICAgKGxldCogKChm
aWxlMCAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJiYXoiIChyYW5kb20tdGV4dCkpKQorICAg
ICAgICAgIChmaWxlMSAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAlc3Rv
cmUKKyAgICAgICAgICAgICAgICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAgIChyYW5kb20t
dGV4dCkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBmaWxlMCkpKQorICAgICAgICAgIChmaWxl
MiAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAgICAg
ICAgICAgICAgICAiYmFyIgorICAgICAgICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAgICAg
ICAgICAgICAgICAgICAobGlzdCBmaWxlMSkpKQorICAgICAgICAgIChkdW1wIChjYWxsLXdpdGgt
Ynl0ZXZlY3Rvci1vdXRwdXQtcG9ydAorICAgICAgICAgICAgICAgICAgKGN1dGUgZXhwb3J0LXBh
dGhzICVzdG9yZSAobGlzdCBmaWxlMikgPD4pKSkpCisgICAgIChkZWxldGUtcGF0aHMgJXN0b3Jl
IChsaXN0IGZpbGUwIGZpbGUxIGZpbGUyKSkKKyAgICAgKGd1YXJkIChjICgobml4LXByb3RvY29s
LWVycm9yPyBjKQorICAgICAgICAgICAgICAgIChhbmQgKG5vdCAoemVybz8gKG5peC1wcm90b2Nv
bC1lcnJvci1zdGF0dXMgYykpKQorICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1jb250YWlu
cworICAgICAgICAgICAgICAgICAgICAgICAobml4LXByb3RvY29sLWVycm9yLW1lc3NhZ2UgYykK
KyAgICAgICAgICAgICAgICAgICAgICAgIm5vdCB2YWxpZCIpKSkpCisgICAgICAgICAgICAoaW1w
b3J0LXBhdGhzCisgICAgICAgICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAob3Blbi1ieXRl
dmVjdG9yLWlucHV0LXBvcnQgZHVtcCkpKSkpCmZpbmRpbmcgZ2FyYmFnZSBjb2xsZWN0b3Igcm9v
dHMuLi4KZGVsZXRpbmcgdW51c2VkIGxpbmtzLi4uCmFjdHVhbC12YWx1ZTogOTcKcmVzdWx0OiBQ
QVNTCgp0ZXN0LW5hbWU6IGV4cG9ydC9pbXBvcnQgcmVjdXJzaXZlCmxvY2F0aW9uOiAvaG9tZS9z
YXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo2NDgKc291cmNlOgor
ICh0ZXN0LWFzc2VydAorICAgImV4cG9ydC9pbXBvcnQgcmVjdXJzaXZlIgorICAgKGxldCogKChm
aWxlMCAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJiYXoiIChyYW5kb20tdGV4dCkpKQorICAg
ICAgICAgIChmaWxlMSAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAlc3Rv
cmUKKyAgICAgICAgICAgICAgICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAgIChyYW5kb20t
dGV4dCkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBmaWxlMCkpKQorICAgICAgICAgIChmaWxl
MiAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAgICAg
ICAgICAgICAgICAiYmFyIgorICAgICAgICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAgICAg
ICAgICAgICAgICAgICAobGlzdCBmaWxlMSkpKQorICAgICAgICAgIChkdW1wIChjYWxsLXdpdGgt
Ynl0ZXZlY3Rvci1vdXRwdXQtcG9ydAorICAgICAgICAgICAgICAgICAgKGN1dGUgZXhwb3J0LXBh
dGhzCisgICAgICAgICAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChsaXN0IGZpbGUyKQorICAgICAgICAgICAgICAgICAgICAgICAgPD4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICM6cmVjdXJzaXZlPworICAgICAgICAgICAgICAgICAgICAgICAgI3QpKSkp
CisgICAgIChkZWxldGUtcGF0aHMgJXN0b3JlIChsaXN0IGZpbGUwIGZpbGUxIGZpbGUyKSkKKyAg
ICAgKGxldCAoKGltcG9ydGVkCisgICAgICAgICAgICAgKGltcG9ydC1wYXRocworICAgICAgICAg
ICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAob3Blbi1ieXRldmVjdG9yLWlucHV0LXBvcnQg
ZHVtcCkpKSkKKyAgICAgICAoYW5kIChlcXVhbD8gaW1wb3J0ZWQgKGxpc3QgZmlsZTAgZmlsZTEg
ZmlsZTIpKQorICAgICAgICAgICAgKGV2ZXJ5IGZpbGUtZXhpc3RzPyAobGlzdCBmaWxlMCBmaWxl
MSBmaWxlMikpCisgICAgICAgICAgICAoZXF1YWw/IChsaXN0IGZpbGUwKSAocmVmZXJlbmNlcyAl
c3RvcmUgZmlsZTEpKQorICAgICAgICAgICAgKGVxdWFsPyAobGlzdCBmaWxlMSkgKHJlZmVyZW5j
ZXMgJXN0b3JlIGZpbGUyKSkpKSkpCmZpbmRpbmcgZ2FyYmFnZSBjb2xsZWN0b3Igcm9vdHMuLi4K
ZGVsZXRpbmcgdW51c2VkIGxpbmtzLi4uCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0
ZXN0LW5hbWU6IHdyaXRlLWZpbGUgJiBleHBvcnQtcGF0aCB5aWVsZCB0aGUgc2FtZSByZXN1bHQK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUu
c2NtOjY2NApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAid3JpdGUtZmlsZSAmIGV4cG9ydC1w
YXRoIHlpZWxkIHRoZSBzYW1lIHJlc3VsdCIKKyAgIChydW4td2l0aC1zdG9yZQorICAgICAlc3Rv
cmUKKyAgICAgKG1sZXQqICVzdG9yZS1tb25hZAorICAgICAgICAgICAgKChkcnYxIChwYWNrYWdl
LT5kZXJpdmF0aW9uICVib290c3RyYXAtZ3VpbGUpKQorICAgICAgICAgICAgIChvdXQxIC0+IChk
ZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkcnYxKSkKKyAgICAgICAgICAgICAoZGF0YSAtPgorICAg
ICAgICAgICAgICAgICAgICh1bmZvbGQKKyAgICAgICAgICAgICAgICAgICAgIChjdXQgPj0gPD4g
MjYpCisgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpKSAocmFuZG9tLWJ5dGV2ZWN0b3Ig
MTI4KSkKKyAgICAgICAgICAgICAgICAgICAgICN7MSt9IworICAgICAgICAgICAgICAgICAgICAg
MCkpCisgICAgICAgICAgICAgKGJ1aWxkIC0+CisgICAgICAgICAgICAgICAgICAgIChnZXhwIChi
ZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2UtbW9kdWxlcyAocm5ycyBpbyBw
b3J0cykgKHNyZmkgc3JmaS0xKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lIGxldHRlcnMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50ZWdlci0+Y2hhcgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgrIGkgKGNoYXItPmludGVnZXIgI1xhKSkpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW90YSAyNikpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGRlZmluZSAodG91Y2ggZmlsZSBkYXRhKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsYW1iZGEgKHBvcnQpIChwdXQtYnl0ZXZlY3RvciBwb3J0IGRhdGEpKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBvdXRwdXQpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNoZGlyICh1bmdleHAgb3V0cHV0KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChmb3ItZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b3VjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChkcm9wIGxl
dHRlcnMgMTApICh0YWtlIGxldHRlcnMgMTApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobGlzdCAodW5nZXhwLXNwbGljaW5nIGRhdGEpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICN0KSkpKQorICAgICAgICAgICAgIChkcnYyIChnZXhwLT5kZXJpdmF0aW9uICJi
dW5jaCIgYnVpbGQpKQorICAgICAgICAgICAgIChvdXQyIC0+IChkZXJpdmF0aW9uLT5vdXRwdXQt
cGF0aCBkcnYyKSkKKyAgICAgICAgICAgICAoaXRlbS1pbmZvIC0+IChzdG9yZS1saWZ0IHF1ZXJ5
LXBhdGgtaW5mbykpKQorICAgICAgICAgICAgKG1iZWdpbgorICAgICAgICAgICAgICAlc3RvcmUt
bW9uYWQKKyAgICAgICAgICAgICAgKGJ1aWx0LWRlcml2YXRpb25zIChsaXN0IGRydjEgZHJ2Mikp
CisgICAgICAgICAgICAgIChmb2xkbSAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICAgICAgICAg
IChsYW1iZGEgKGl0ZW0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lIHJl
Zi1oYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxldC12YWx1ZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgoKHBvcnQgZ2V0KSAob3Blbi1zaGEyNTYtcG9ydCkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHdyaXRlLWZpbGUgaXRlbSBwb3J0KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNsb3NlLXBvcnQgcG9ydCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChnZXQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKD4+PSAoaXRlbS1pbmZvIGl0ZW0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaW5mbykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChyZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGFuZCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0
ZXZlY3Rvcj0/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGF0aC1p
bmZvLWhhc2ggaW5mbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Zi1oYXNoKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAjdAorICAgICAgICAgICAgICAgICAg
ICAgKGxpc3Qgb3V0MSBvdXQyKSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAoJWd1
aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9uMXBrbWFiNXc0bjFhaGF6NTgwaG42OWthcG4zNmps
OS1idW5jaC5kcnYgLSB4ODZfNjQtbGludXggL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4
X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2cy9uMS8vcGttYWI1dzRuMWFoYXo1ODBobjY5
a2FwbjM2amw5LWJ1bmNoLmRydi5iejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9uMXBrbWFiNXc0bjFhaGF6NTgwaG42
OWthcG4zNmpsOS1idW5jaC5kcnYgLQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVz
dC1uYW1lOiBpbXBvcnQgY29ycnVwdCBwYXRoCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo3MzAKc291cmNlOgorICh0ZXN0LWFzc2Vy
dAorICAgImltcG9ydCBjb3JydXB0IHBhdGgiCisgICAobGV0KiAoKHRleHQgKHJhbmRvbS10ZXh0
KSkKKyAgICAgICAgICAoZmlsZSAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJ0ZXh0IiB0ZXh0
KSkKKyAgICAgICAgICAoZHVtcCAoY2FsbC13aXRoLWJ5dGV2ZWN0b3Itb3V0cHV0LXBvcnQKKyAg
ICAgICAgICAgICAgICAgIChjdXQgZXhwb3J0LXBhdGhzICVzdG9yZSAobGlzdCBmaWxlKSA8Pikp
KSkKKyAgICAgKGRlbGV0ZS1wYXRocyAlc3RvcmUgKGxpc3QgZmlsZSkpCisgICAgIChsZXQqICgo
aW5kZXggKHF1b3RpZW50IChieXRldmVjdG9yLWxlbmd0aCBkdW1wKSA0KSkKKyAgICAgICAgICAg
IChieXRlIChieXRldmVjdG9yLXU4LXJlZiBkdW1wIGluZGV4KSkpCisgICAgICAgKGJ5dGV2ZWN0
b3ItdTgtc2V0ISBkdW1wIGluZGV4IChsb2d4b3IgMjU1IGJ5dGUpKSkKKyAgICAgKGFuZCAobm90
IChmaWxlLWV4aXN0cz8gZmlsZSkpCisgICAgICAgICAgKGd1YXJkIChjICgobml4LXByb3RvY29s
LWVycm9yPyBjKQorICAgICAgICAgICAgICAgICAgICAgKHBrICdjIGMpCisgICAgICAgICAgICAg
ICAgICAgICAoYW5kIChub3QgKHplcm8/IChuaXgtcHJvdG9jb2wtZXJyb3Itc3RhdHVzIGMpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChuaXgtcHJvdG9jb2wtZXJyb3ItbWVzc2FnZSBjKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjb3JydXB0IikpKSkKKyAgICAgICAgICAgICAgICAgKGxldCog
KChzb3VyY2UgKG9wZW4tYnl0ZXZlY3Rvci1pbnB1dC1wb3J0IGR1bXApKQorICAgICAgICAgICAg
ICAgICAgICAgICAgKGltcG9ydGVkIChpbXBvcnQtcGF0aHMgJXN0b3JlIHNvdXJjZSkpKQorICAg
ICAgICAgICAgICAgICAgIChwayAnY29ycnVwdC1pbXBvcnRlZCBpbXBvcnRlZCkKKyAgICAgICAg
ICAgICAgICAgICAjZikpKSkpCmZpbmRpbmcgZ2FyYmFnZSBjb2xsZWN0b3Igcm9vdHMuLi4KZGVs
ZXRpbmcgdW51c2VkIGxpbmtzLi4uCgo7OzsgKGMgIzxjb25kaXRpb24gJm5peC1wcm90b2NvbC1l
cnJvciBbbWVzc2FnZTogInNpZ25lZCBoYXNoIGRvZXNuJ3QgbWF0Y2ggYWN0dWFsIGNvbnRlbnRz
IG9mIGltcG9ydGVkIGFyY2hpdmU7IGFyY2hpdmUgY291bGQgYmUgY29ycnVwdCwgb3Igc29tZW9u
ZSBpcyB0cnlpbmcgdG8gaW1wb3J0IGEgVHJvamFuIGhvcnNlIiBzdGF0dXM6IDFdIDE3MzE3ZTA+
KQphY3R1YWwtdmFsdWU6IDgwCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiByZWdpc3Rlci1wYXRo
CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3Jl
LnNjbTo3NTMKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInJlZ2lzdGVyLXBhdGgiCisgICAo
bGV0ICgoZmlsZSAoc3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAoJXN0b3JlLXByZWZp
eCkKKyAgICAgICAgICAgICAgICAgIi8iCisgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAz
MiAjXGYpCisgICAgICAgICAgICAgICAgICItZmFrZSIpKSkKKyAgICAgKHdoZW4gKHZhbGlkLXBh
dGg/ICVzdG9yZSBmaWxlKQorICAgICAgICAgICAoZGVsZXRlLXBhdGhzICVzdG9yZSAobGlzdCBm
aWxlKSkpCisgICAgIChmYWxzZS1pZi1leGNlcHRpb24gKGRlbGV0ZS1maWxlIGZpbGUpKQorICAg
ICAobGV0ICgocmVmIChhZGQtdGV4dC10by1zdG9yZQorICAgICAgICAgICAgICAgICAgJXN0b3Jl
CisgICAgICAgICAgICAgICAgICAicmVmLW9mLWZha2UiCisgICAgICAgICAgICAgICAgICAocmFu
ZG9tLXRleHQpKSkKKyAgICAgICAgICAgKGRydiAoc3RyaW5nLWFwcGVuZCBmaWxlICIuZHJ2Iikp
KQorICAgICAgIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUKKyAgICAgICAgIGZpbGUKKyAgICAgICAg
IChjdXQgZGlzcGxheSAiVGhpcyBpcyBhIGZha2Ugc3RvcmUgaXRlbS5cbiIgPD4pKQorICAgICAg
IChyZWdpc3Rlci1wYXRoCisgICAgICAgICBmaWxlCisgICAgICAgICAjOnJlZmVyZW5jZXMKKyAg
ICAgICAgIChsaXN0IHJlZikKKyAgICAgICAgICM6ZGVyaXZlcgorICAgICAgICAgZHJ2KQorICAg
ICAgIChhbmQgKHZhbGlkLXBhdGg/ICVzdG9yZSBmaWxlKQorICAgICAgICAgICAgKGVxdWFsPyAo
cmVmZXJlbmNlcyAlc3RvcmUgZmlsZSkgKGxpc3QgcmVmKSkKKyAgICAgICAgICAgIChudWxsPyAo
dmFsaWQtZGVyaXZlcnMgJXN0b3JlIGZpbGUpKQorICAgICAgICAgICAgKG51bGw/IChyZWZlcnJl
cnMgJXN0b3JlIGZpbGUpKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3Qt
bmFtZTogdmVyaWZ5LXN0b3JlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1
aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo3NzMKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInZl
cmlmeS1zdG9yZSIKKyAgIChsZXQqICgodGV4dCAocmFuZG9tLXRleHQpKQorICAgICAgICAgIChm
aWxlMSAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJmb28iIHRleHQpKQorICAgICAgICAgIChm
aWxlMiAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICAgICAlc3RvcmUKKyAgICAg
ICAgICAgICAgICAgICAiYmFyIgorICAgICAgICAgICAgICAgICAgIChyYW5kb20tdGV4dCkKKyAg
ICAgICAgICAgICAgICAgICAobGlzdCBmaWxlMSkpKSkKKyAgICAgKGFuZCAocGsgJ3ZlcmlmeTEg
KHZlcmlmeS1zdG9yZSAlc3RvcmUpKQorICAgICAgICAgIChiZWdpbgorICAgICAgICAgICAgKGRl
bGV0ZS1maWxlIGZpbGUxKQorICAgICAgICAgICAgKG5vdCAocGsgJ3ZlcmlmeTIgKHZlcmlmeS1z
dG9yZSAlc3RvcmUpKSkpCisgICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAoY2FsbC13aXRo
LW91dHB1dC1maWxlCisgICAgICAgICAgICAgIGZpbGUxCisgICAgICAgICAgICAgIChsYW1iZGEg
KHBvcnQpIChkaXNwbGF5IHRleHQgcG9ydCkpKQorICAgICAgICAgICAgKHBrICd2ZXJpZnkzICh2
ZXJpZnktc3RvcmUgJXN0b3JlKSkpKSkpCnJlYWRpbmcgdGhlIE5peCBzdG9yZS4uLgoKOzs7ICh2
ZXJpZnkxICN0KQpyZWFkaW5nIHRoZSBOaXggc3RvcmUuLi4KcGF0aCBgL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS82N2dkYzhycW4xcTBqN2FxcjBrNWNu
aHlreGZuNXNhaS1mb28nIGRpc2FwcGVhcmVkLCBidXQgaXQgc3RpbGwgaGFzIHZhbGlkIHJlZmVy
cmVycyEKCjs7OyAodmVyaWZ5MiAjZikKcmVhZGluZyB0aGUgTml4IHN0b3JlLi4uCgo7OzsgKHZl
cmlmeTMgI3QpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHZlcmlm
eS1zdG9yZSArIGNoZWNrLWNvbnRlbnRzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo3OTAKc291cmNlOgorICh0ZXN0LWFzc2VydAor
ICAgInZlcmlmeS1zdG9yZSArIGNoZWNrLWNvbnRlbnRzIgorICAgKHdpdGgtc3RvcmUKKyAgICAg
cworICAgICAobGV0KiAoKHRleHQgKHJhbmRvbS10ZXh0KSkKKyAgICAgICAgICAgIChkcnYgKGJ1
aWxkLWV4cHJlc3Npb24tPmRlcml2YXRpb24KKyAgICAgICAgICAgICAgICAgICBzCisgICAgICAg
ICAgICAgICAgICAgImNvcnJ1cHQiCisgICAgICAgICAgICAgICAgICAgYChsZXQgKChvdXQgKGFz
c29jLXJlZiAlb3V0cHV0cyAib3V0IikpKQorICAgICAgICAgICAgICAgICAgICAgIChjYWxsLXdp
dGgtb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dAorICAgICAgICAgICAg
ICAgICAgICAgICAgKGxhbWJkYSAocG9ydCkgKGRpc3BsYXkgLHRleHQgcG9ydCkpKQorICAgICAg
ICAgICAgICAgICAgICAgICN0KQorICAgICAgICAgICAgICAgICAgICM6Z3VpbGUtZm9yLWJ1aWxk
CisgICAgICAgICAgICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAgcworICAgICAgICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAgICAgICAg
ICAgICAgICAgICAgKCVjdXJyZW50LXN5c3RlbSkpKSkKKyAgICAgICAgICAgIChmaWxlIChkZXJp
dmF0aW9uLT5vdXRwdXQtcGF0aCBkcnYpKSkKKyAgICAgICAod2l0aC1kZXJpdmF0aW9uLXN1YnN0
aXR1dGUKKyAgICAgICAgIGRydgorICAgICAgICAgdGV4dAorICAgICAgICAgKGFuZCAoYnVpbGQt
ZGVyaXZhdGlvbnMgcyAobGlzdCBkcnYpKQorICAgICAgICAgICAgICAodmVyaWZ5LXN0b3JlIHMg
IzpjaGVjay1jb250ZW50cz8gI3QpCisgICAgICAgICAgICAgIChiZWdpbgorICAgICAgICAgICAg
ICAgIChjaG1vZCBmaWxlIDQyMCkKKyAgICAgICAgICAgICAgICAoY2FsbC13aXRoLW91dHB1dC1m
aWxlCisgICAgICAgICAgICAgICAgICBmaWxlCisgICAgICAgICAgICAgICAgICAobGFtYmRhIChw
b3J0KSAoZGlzcGxheSAiY29ycnVwdCEiIHBvcnQpKSkKKyAgICAgICAgICAgICAgICAjdCkKKyAg
ICAgICAgICAgICAgKG5vdCAodmVyaWZ5LXN0b3JlIHMgIzpjaGVjay1jb250ZW50cz8gI3QpKQor
ICAgICAgICAgICAgICAoZGVsZXRlLXBhdGhzIHMgKGxpc3QgZmlsZSkpKSkpKSkKc3Vic3RpdHV0
ZTogd2FybmluZzogYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gb2Ygc3Vic3RpdHV0
ZXMgZGlzYWJsZWQhCnN1YnN0aXR1dGU6IGd1aXggc3Vic3RpdHV0ZTogd2FybmluZzogQUNMIGZv
ciBhcmNoaXZlIGltcG9ydHMgc2VlbXMgdG8gYmUgdW5pbml0aWFsaXplZCwgc3Vic3RpdHV0ZXMg
bWF5IGJlIHVuYXZhaWxhYmxlCmZldGNoaW5nIHBhdGggYC9ob21lL3NhcGllbnRlY2gvRGV2L2d1
aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvOWpqNmhmbWt3aHlubHNqcHIyNnFsZjZ3eDMwOHIz
MjItY29ycnVwdCcuLi4Kd2FybmluZzogYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24g
b2Ygc3Vic3RpdHV0ZXMgZGlzYWJsZWQhCmd1aXggc3Vic3RpdHV0ZTogd2FybmluZzogQUNMIGZv
ciBhcmNoaXZlIGltcG9ydHMgc2VlbXMgdG8gYmUgdW5pbml0aWFsaXplZCwgc3Vic3RpdHV0ZXMg
bWF5IGJlIHVuYXZhaWxhYmxlCkRvd25sb2FkaW5nIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgv
Z3VpeF93aXAvdGVzdC10bXAvc3RvcmUvOWpqNmhmbWt3aHlubHNqcHIyNnFsZjZ3eDMwOHIzMjIt
Y29ycnVwdCAoMUtpQiBpbnN0YWxsZWQpLi4uCg0bW0sgZXhhbXBsZS5uYXIgIDE3NkIgICAgICAg
ICAgICAgICAgICAgICAgMEIvcyAwMDowMCBbIyMjIyMjIyMjIyMjIyMjIyMjIyNdIDEwMC4wJQpy
ZWFkaW5nIHRoZSBOaXggc3RvcmUuLi4KY2hlY2tpbmcgcGF0aCBleGlzdGVuY2UuLi4KY2hlY2tp
bmcgaGFzaGVzLi4uCnJlYWRpbmcgdGhlIE5peCBzdG9yZS4uLgpjaGVja2luZyBwYXRoIGV4aXN0
ZW5jZS4uLgpjaGVja2luZyBoYXNoZXMuLi4KcGF0aCBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS85amo2aGZta3doeW5sc2pwcjI2cWxmNnd4MzA4cjMy
Mi1jb3JydXB0JyB3YXMgbW9kaWZpZWQhIGV4cGVjdGVkIGhhc2ggYDNmZmI3NzFkOGMzY2JhYzk4
ZDU0NWJmMmIwZWFhN2MwYWFiNjkxYWZkMWNmMDJmNGI4ODA4Mjc4NDgzN2I2YzMnLCBnb3QgYGUw
OWM0ODBlMmU5MzMzNmNkM2M0NWFhMTI5ZjgxYTBkN2JhNTZjNDEwYjg0OWQ3Nzc5YTgxMzYwNzQ0
MTNiM2QnCmZpbmRpbmcgZ2FyYmFnZSBjb2xsZWN0b3Igcm9vdHMuLi4KcmVtb3Zpbmcgc3RhbGUg
dGVtcG9yYXJ5IHJvb3RzIGZpbGUgYC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdC10bXAvdmFyLzQ1NzgvdGVtcHJvb3RzLzQ5MjAnCmRlbGV0aW5nIGAvaG9tZS9zYXBpZW50
ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlLzlqajZoZm1rd2h5bmxzanByMjZx
bGY2d3gzMDhyMzIyLWNvcnJ1cHQnCmRlbGV0aW5nIGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3RyYXNoJwpkZWxldGluZyB1bnVzZWQgbGlua3MuLi4K
bm90ZTogY3VycmVudGx5IGhhcmQgbGlua2luZyBzYXZlcyAxOS42NiBNaUIKYWN0dWFsLXZhbHVl
OiAoL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS85amo2
aGZta3doeW5sc2pwcjI2cWxmNnd4MzA4cjMyMi1jb3JydXB0KQpyZXN1bHQ6IFBBU1MKCnRlc3Qt
bmFtZTogYnVpbGQtdGhpbmdzLCBjaGVjayBtb2RlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNo
L0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo4MjcKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgImJ1aWxkLXRoaW5ncywgY2hlY2sgbW9kZSIKKyAgICh3aXRoLXN0b3JlCisgICAg
IHN0b3JlCisgICAgIChjYWxsLXdpdGgtdGVtcG9yYXJ5LW91dHB1dC1maWxlCisgICAgICAgKGxh
bWJkYSAoZW50cm9weSBlbnRyb3B5LXBvcnQpCisgICAgICAgICAod3JpdGUgKHJhbmRvbS10ZXh0
KSBlbnRyb3B5LXBvcnQpCisgICAgICAgICAoZm9yY2Utb3V0cHV0IGVudHJvcHktcG9ydCkKKyAg
ICAgICAgIChsZXQqICgoZHJ2IChidWlsZC1leHByZXNzaW9uLT5kZXJpdmF0aW9uCisgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICJub24tZGV0ZXJt
aW5pc3RpYyIKKyAgICAgICAgICAgICAgICAgICAgICAgYChiZWdpbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAodXNlLW1vZHVsZXMgKHJucnMgaW8gcG9ydHMpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAobGV0ICgob3V0IChhc3NvYy1yZWYgJW91dHB1dHMgIm91dCIpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
YW1iZGEgKHBvcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsZW50cm9weQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0LXN0cmluZy1hbGwpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9ydCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIzpndWlsZS1mb3ItYnVpbGQKKyAgICAgICAgICAg
ICAgICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg
IHN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICglY3VycmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAgICAgICAg
KGZpbGUgKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGRydikpKQorICAgICAgICAgICAoYW5kIChi
dWlsZC10aGluZ3MKKyAgICAgICAgICAgICAgICAgIHN0b3JlCisgICAgICAgICAgICAgICAgICAo
bGlzdCAoZGVyaXZhdGlvbi1maWxlLW5hbWUgZHJ2KSkpCisgICAgICAgICAgICAgICAgKGJlZ2lu
CisgICAgICAgICAgICAgICAgICAod3JpdGUgKHJhbmRvbS10ZXh0KSBlbnRyb3B5LXBvcnQpCisg
ICAgICAgICAgICAgICAgICAoZm9yY2Utb3V0cHV0IGVudHJvcHktcG9ydCkKKyAgICAgICAgICAg
ICAgICAgIChndWFyZCAoYyAoKG5peC1wcm90b2NvbC1lcnJvcj8gYykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHBrICdkZXRlcm1pbmlzbS1leGNlcHRpb24gYykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGFuZCAobm90ICh6ZXJvPyAobml4LXByb3RvY29sLWVycm9yLXN0
YXR1cyBjKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1jb250
YWlucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5peC1wcm90b2NvbC1l
cnJvci1tZXNzYWdlIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV0
ZXJtaW5pc3RpYyIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1aWxkLXRoaW5ncwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChsaXN0IChkZXJpdmF0aW9uLWZpbGUtbmFtZSBkcnYpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGJ1aWxkLW1vZGUgY2hlY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICNm
KSkpKSkpKSkKc3Vic3RpdHV0ZTogd2FybmluZzogYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6
YXRpb24gb2Ygc3Vic3RpdHV0ZXMgZGlzYWJsZWQhCnN1YnN0aXR1dGU6IGd1aXggc3Vic3RpdHV0
ZTogd2FybmluZzogQUNMIGZvciBhcmNoaXZlIGltcG9ydHMgc2VlbXMgdG8gYmUgdW5pbml0aWFs
aXplZCwgc3Vic3RpdHV0ZXMgbWF5IGJlIHVuYXZhaWxhYmxlCmJ1aWxkaW5nIHBhdGgocykgYC9o
b21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvc2pjbTJ6bDBi
eGJ6a3dwYm5qbGI5a3pmZnNsMjA1OGotbm9uLWRldGVybWluaXN0aWMnCmNoZWNraW5nIHBhdGgo
cykgYC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvc2pj
bTJ6bDBieGJ6a3dwYm5qbGI5a3pmZnNsMjA1OGotbm9uLWRldGVybWluaXN0aWMnCndhcm5pbmc6
IHJld3JpdGluZyBoYXNoZXMgaW4gYC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdC10bXAvc3RvcmUvc2pjbTJ6bDBieGJ6a3dwYm5qbGI5a3pmZnNsMjA1OGotbm9uLWRldGVy
bWluaXN0aWMnOyBjcm9zcyBmaW5nZXJzCgo7OzsgKGRldGVybWluaXNtLWV4Y2VwdGlvbiAjPGNv
bmRpdGlvbiAmbml4LXByb3RvY29sLWVycm9yIFttZXNzYWdlOiAiZGVyaXZhdGlvbiBgL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS95eGk1a3Yxc3pxOGNh
MzB4ZGJqc3M4Z2RwcjB2cWZhay1ub24tZGV0ZXJtaW5pc3RpYy5kcnYnIG1heSBub3QgYmUgZGV0
ZXJtaW5pc3RpYzogb3V0cHV0IGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3QtdG1wL3N0b3JlL3NqY20yemwwYnhiemt3cGJuamxiOWt6ZmZzbDIwNThqLW5vbi1kZXRlcm1p
bmlzdGljJyBkaWZmZXJzIiBzdGF0dXM6IDFdIDI0MDUzZjA+KQphY3R1YWwtdmFsdWU6IDk5CnJl
c3VsdDogUEFTUwoKdGVzdC1uYW1lOiBidWlsZCBtdWx0aXBsZSB0aW1lcwpsb2NhdGlvbjogL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9yZS5zY206ODY0CnNvdXJj
ZToKKyAodGVzdC1hc3NlcnQKKyAgICJidWlsZCBtdWx0aXBsZSB0aW1lcyIKKyAgICh3aXRoLXN0
b3JlCisgICAgIHN0b3JlCisgICAgIChzZXQtYnVpbGQtb3B0aW9ucworICAgICAgIHN0b3JlCisg
ICAgICAgIzpyb3VuZHMKKyAgICAgICAyCisgICAgICAgIzp1c2Utc3Vic3RpdHV0ZXM/CisgICAg
ICAgI2YpCisgICAgIChjYWxsLXdpdGgtdGVtcG9yYXJ5LW91dHB1dC1maWxlCisgICAgICAgKGxh
bWJkYSAoZW50cm9weSBlbnRyb3B5LXBvcnQpCisgICAgICAgICAod3JpdGUgKHJhbmRvbS10ZXh0
KSBlbnRyb3B5LXBvcnQpCisgICAgICAgICAoZm9yY2Utb3V0cHV0IGVudHJvcHktcG9ydCkKKyAg
ICAgICAgIChsZXQqICgoZHJ2IChidWlsZC1leHByZXNzaW9uLT5kZXJpdmF0aW9uCisgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICJub24tZGV0ZXJt
aW5pc3RpYyIKKyAgICAgICAgICAgICAgICAgICAgICAgYChiZWdpbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAodXNlLW1vZHVsZXMgKHJucnMgaW8gcG9ydHMpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAobGV0ICgob3V0IChhc3NvYy1yZWYgJW91dHB1dHMgIm91dCIpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
YW1iZGEgKHBvcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsZW50cm9weQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0LXN0cmluZy1hbGwpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9ydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNhbGwtd2l0aC1vdXRwdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICxlbnRyb3B5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocG9y
dCkgKHdyaXRlICdmb29iYXIgcG9ydCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
I3QpKQorICAgICAgICAgICAgICAgICAgICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAgICAg
ICAgICAgICAgICAgICAocGFja2FnZS1kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAlYm9vdHN0cmFwLWd1aWxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKCVjdXJyZW50LXN5c3RlbSkpKSkKKyAgICAgICAgICAgICAg
ICAoZmlsZSAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZHJ2KSkpCisgICAgICAgICAgIChndWFy
ZCAoYyAoKG5peC1wcm90b2NvbC1lcnJvcj8gYykKKyAgICAgICAgICAgICAgICAgICAgICAocGsg
J211bHRpcGxlLWJ1aWxkIGMpCisgICAgICAgICAgICAgICAgICAgICAgKGFuZCAobm90ICh6ZXJv
PyAobml4LXByb3RvY29sLWVycm9yLXN0YXR1cyBjKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuaXgt
cHJvdG9jb2wtZXJyb3ItbWVzc2FnZSBjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGV0ZXJtaW5pc3RpYyIpKSkpCisgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWlsZC1vdXRw
dXQtcG9ydCAoY3VycmVudC1lcnJvci1wb3J0KSkKKyAgICAgICAgICAgICAgICAgIChidWlsZC10
aGluZ3MKKyAgICAgICAgICAgICAgICAgICAgc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgKGxp
c3QgKGRlcml2YXRpb24tZmlsZS1uYW1lIGRydikpKQorICAgICAgICAgICAgICAgICAgI2YpKSkp
KSkKQCBidWlsZC1zdGFydGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dC10bXAvc3RvcmUvc2w1MjJpazBqaTNtOGNpN3hsZGZicDU2cGxuNHp6dnAtbm9uLWRldGVybWlu
aXN0aWMuZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvc2wvLzUyMmlrMGppM204Y2k3eGxkZmJwNTZw
bG40enp2cC1ub24tZGV0ZXJtaW5pc3RpYy5kcnYuYnoyCkAgYnVpbGQtc3RhcnRlZCAvaG9tZS9z
YXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3NsNTIyaWswamkzbThj
aTd4bGRmYnA1NnBsbjR6enZwLW5vbi1kZXRlcm1pbmlzdGljLmRydiAtIHg4Nl82NC1saW51eCAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9k
cnZzL3NsLy81MjJpazBqaTNtOGNpN3hsZGZicDU2cGxuNHp6dnAtbm9uLWRldGVybWluaXN0aWMu
ZHJ2LmJ6MgpvdXRwdXQgPy9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10
bXAvc3RvcmUvYXNnMzBobG1jcGo0Y3hhanN2bWJ6azZoY3JnOHhuajYtbm9uLWRldGVybWluaXN0
aWM/IG9mID8vaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L3NsNTIyaWswamkzbThjaTd4bGRmYnA1NnBsbjR6enZwLW5vbi1kZXRlcm1pbmlzdGljLmRydj8g
ZGlmZmVycyBmcm9tIHByZXZpb3VzIHJvdW5kCkAgYnVpbGQtZmFpbGVkIC9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvc2w1MjJpazBqaTNtOGNpN3hsZGZi
cDU2cGxuNHp6dnAtbm9uLWRldGVybWluaXN0aWMuZHJ2IC0gMSBvdXRwdXQgPy9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvYXNnMzBobG1jcGo0Y3hhanN2
bWJ6azZoY3JnOHhuajYtbm9uLWRldGVybWluaXN0aWM/IG9mID8vaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3NsNTIyaWswamkzbThjaTd4bGRmYnA1NnBs
bjR6enZwLW5vbi1kZXRlcm1pbmlzdGljLmRydj8gZGlmZmVycyBmcm9tIHByZXZpb3VzIHJvdW5k
Cgo7OzsgKG11bHRpcGxlLWJ1aWxkICM8Y29uZGl0aW9uICZuaXgtcHJvdG9jb2wtZXJyb3IgW21l
c3NhZ2U6ICJidWlsZCBvZiBgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0
LXRtcC9zdG9yZS9zbDUyMmlrMGppM204Y2k3eGxkZmJwNTZwbG40enp2cC1ub24tZGV0ZXJtaW5p
c3RpYy5kcnYnIGZhaWxlZCIgc3RhdHVzOiAxXSAxYWU3YTIwPikKYWN0dWFsLXZhbHVlOiA5Nwpy
ZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogc3RvcmUtbG93ZXIKbG9jYXRpb246IC9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3RvcmUuc2NtOjkwMgpzb3VyY2U6CisgKHRl
c3QtZXF1YWwKKyAgICJzdG9yZS1sb3dlciIKKyAgICJMb3dlcmVkLiIKKyAgIChsZXQqICgoYWRk
IChzdG9yZS1sb3dlciB0ZXh0LWZpbGUpKQorICAgICAgICAgIChmaWxlIChhZGQgJXN0b3JlICJm
b28iICJMb3dlcmVkLiIpKSkKKyAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGZpbGUgZ2V0LXN0
cmluZy1hbGwpKSkKZXhwZWN0ZWQtdmFsdWU6IExvd2VyZWQuCmFjdHVhbC12YWx1ZTogTG93ZXJl
ZC4KcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGN1cnJlbnQtc3lzdGVtCmxvY2F0aW9uOiAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N0b3JlLnNjbTo5MDgKc291cmNl
OgorICh0ZXN0LWVxdWFsCisgICAiY3VycmVudC1zeXN0ZW0iCisgICAiYmFyIgorICAgKHBhcmFt
ZXRlcml6ZQorICAgICAoKCVjdXJyZW50LXN5c3RlbSAiZnJvYiIpKQorICAgICAocnVuLXdpdGgt
c3RvcmUKKyAgICAgICAlc3RvcmUKKyAgICAgICAobWJlZ2luCisgICAgICAgICAlc3RvcmUtbW9u
YWQKKyAgICAgICAgIChzZXQtY3VycmVudC1zeXN0ZW0gImJhciIpCisgICAgICAgICAoY3VycmVu
dC1zeXN0ZW0pKQorICAgICAgICM6c3lzdGVtCisgICAgICAgImZvbyIpKSkKZXhwZWN0ZWQtdmFs
dWU6IGJhcgphY3R1YWwtdmFsdWU6IGJhcgpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogcXVlcnkt
cGF0aC1pbmZvCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3RzL3N0b3JlLnNjbTo5MTcKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInF1ZXJ5LXBhdGgt
aW5mbyIKKyAgIChsZXQqICgocmVmIChhZGQtdGV4dC10by1zdG9yZSAlc3RvcmUgInJlZiIgImZv
byIpKQorICAgICAgICAgIChpdGVtIChhZGQtdGV4dC10by1zdG9yZQorICAgICAgICAgICAgICAg
ICAgJXN0b3JlCisgICAgICAgICAgICAgICAgICAiaXRlbSIKKyAgICAgICAgICAgICAgICAgICJi
YXIiCisgICAgICAgICAgICAgICAgICAobGlzdCByZWYpKSkKKyAgICAgICAgICAoaW5mbyAocXVl
cnktcGF0aC1pbmZvICVzdG9yZSBpdGVtKSkpCisgICAgIChhbmQgKGVxdWFsPyAocGF0aC1pbmZv
LXJlZmVyZW5jZXMgaW5mbykgKGxpc3QgcmVmKSkKKyAgICAgICAgICAoZXF1YWw/CisgICAgICAg
ICAgICAocGF0aC1pbmZvLWhhc2ggaW5mbykKKyAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAg
ICAgICAgKHN0cmluZy0+dXRmOAorICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtb3V0cHV0LXN0
cmluZworICAgICAgICAgICAgICAgICAgKGN1dCB3cml0ZS1maWxlIGl0ZW0gPD4pKSkpKSkpKQph
Y3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBwYXRoLWluZm8tZGVyaXZl
cgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zdG9y
ZS5zY206OTI3CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJwYXRoLWluZm8tZGVyaXZlciIK
KyAgIChsZXQqICgoYiAoYWRkLXRleHQtdG8tc3RvcmUKKyAgICAgICAgICAgICAgICVzdG9yZQor
ICAgICAgICAgICAgICAgImJ1aWxkIgorICAgICAgICAgICAgICAgImVjaG8gJGZvbyA+ICRvdXQi
CisgICAgICAgICAgICAgICAnKCkpKQorICAgICAgICAgIChzIChhZGQtdG8tc3RvcmUKKyAgICAg
ICAgICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAgImJhc2giCisgICAgICAgICAgICAgICAj
dAorICAgICAgICAgICAgICAgInNoYTI1NiIKKyAgICAgICAgICAgICAgIChzZWFyY2gtYm9vdHN0
cmFwLWJpbmFyeQorICAgICAgICAgICAgICAgICAiYmFzaCIKKyAgICAgICAgICAgICAgICAgKCVj
dXJyZW50LXN5c3RlbSkpKSkKKyAgICAgICAgICAoZCAoZGVyaXZhdGlvbgorICAgICAgICAgICAg
ICAgJXN0b3JlCisgICAgICAgICAgICAgICAidGhlLXRoaW5nIgorICAgICAgICAgICAgICAgcwor
ICAgICAgICAgICAgICAgYCgiLWUiICxiKQorICAgICAgICAgICAgICAgIzplbnYtdmFycworICAg
ICAgICAgICAgICAgYCgoImZvbyIgdW5xdW90ZSAocmFuZG9tLXRleHQpKSkKKyAgICAgICAgICAg
ICAgICM6aW5wdXRzCisgICAgICAgICAgICAgICBgKCgsYikgKCxzKSkpKQorICAgICAgICAgIChv
IChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkKSkpCisgICAgIChhbmQgKGJ1aWxkLWRlcml2YXRp
b25zICVzdG9yZSAobGlzdCBkKSkKKyAgICAgICAgICAobm90IChwYXRoLWluZm8tZGVyaXZlciAo
cXVlcnktcGF0aC1pbmZvICVzdG9yZSBiKSkpCisgICAgICAgICAgKHN0cmluZz0/CisgICAgICAg
ICAgICAoZGVyaXZhdGlvbi1maWxlLW5hbWUgZCkKKyAgICAgICAgICAgIChwYXRoLWluZm8tZGVy
aXZlciAocXVlcnktcGF0aC1pbmZvICVzdG9yZSBvKSkpKSkpCkAgYnVpbGQtc3RhcnRlZCAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2o1YXBkMTVkM21h
OXNoMzFwMzE3cWZzMXl3Yncwa2ptLXRoZS10aGluZy5kcnYgLSB4ODZfNjQtbGludXggL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2cy9q
NS8vYXBkMTVkM21hOXNoMzFwMzE3cWZzMXl3Yncwa2ptLXRoZS10aGluZy5kcnYuYnoyCkAgYnVp
bGQtc3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAv
c3RvcmUvajVhcGQxNWQzbWE5c2gzMXAzMTdxZnMxeXdidzBram0tdGhlLXRoaW5nLmRydiAtCmFj
dHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgoKU0tJUDogdGVzdHMvZ2V4cAo9PT09PT09PT09
PT09PT09Cgp0ZXN0LW5hbWU6IG5vIHJlZnMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206NzEKc291cmNlOgorICh0ZXN0LWVxdWFsCisg
ICAibm8gcmVmcyIKKyAgICcoZGlzcGxheSAiaGVsbG8hIikKKyAgIChsZXQgKChleHAgKGdleHAg
KGRpc3BsYXkgImhlbGxvISIpKSkpCisgICAgIChhbmQgKGdleHA/IGV4cCkKKyAgICAgICAgICAo
bnVsbD8gKGdleHAtaW5wdXRzIGV4cCkpCisgICAgICAgICAgKGdleHAtPnNleHAqIGV4cCkpKSkK
ZXhwZWN0ZWQtdmFsdWU6IChkaXNwbGF5IGhlbGxvISkKYWN0dWFsLXZhbHVlOiAoZGlzcGxheSBo
ZWxsbyEpCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiB1bnF1b3RlCmxvY2F0aW9uOiAvaG9tZS9z
YXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjc4CnNvdXJjZToKKyAo
dGVzdC1lcXVhbAorICAgInVucXVvdGUiCisgICAnKGRpc3BsYXkgYChmb28gLCgrIDIgMykpKQor
ICAgKGxldCAoKGV4cCAoZ2V4cCAoZGlzcGxheSBgKGZvbyAsKCsgMiAzKSkpKSkpCisgICAgIChh
bmQgKGdleHA/IGV4cCkKKyAgICAgICAgICAobnVsbD8gKGdleHAtaW5wdXRzIGV4cCkpCisgICAg
ICAgICAgKGdleHAtPnNleHAqIGV4cCkpKSkKZXhwZWN0ZWQtdmFsdWU6IChkaXNwbGF5IChxdWFz
aXF1b3RlIChmb28gKHVucXVvdGUgKCsgMiAzKSkpKSkKYWN0dWFsLXZhbHVlOiAoZGlzcGxheSAo
cXVhc2lxdW90ZSAoZm9vICh1bnF1b3RlICgrIDIgMykpKSkpCnJlc3VsdDogUEFTUwoKdGVzdC1u
YW1lOiBvbmUgaW5wdXQgcGFja2FnZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo4NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAi
b25lIGlucHV0IHBhY2thZ2UiCisgICAobGV0ICgoZXhwIChnZXhwIChkaXNwbGF5ICh1bmdleHAg
Y29yZXV0aWxzKSkpKSkKKyAgICAgKGFuZCAoZ2V4cD8gZXhwKQorICAgICAgICAgIChtYXRjaCAo
Z2V4cC1pbnB1dHMgZXhwKQorICAgICAgICAgICAgICAgICAoKChwICJvdXQiKSkgKGVxPyBwIGNv
cmV1dGlscykpKQorICAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgIGAoZGlzcGxheQorICAg
ICAgICAgICAgICAgLChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aAorICAgICAgICAgICAgICAgICAg
KHBhY2thZ2UtZGVyaXZhdGlvbiAlc3RvcmUgY29yZXV0aWxzKSkpCisgICAgICAgICAgICAoZ2V4
cC0+c2V4cCogZXhwKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFt
ZTogb25lIGlucHV0IG9yaWdpbgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo5NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAib25l
IGlucHV0IG9yaWdpbiIKKyAgIChsZXQgKChleHAgKGdleHAgKGRpc3BsYXkgKHVuZ2V4cCAocGFj
a2FnZS1zb3VyY2UgY29yZXV0aWxzKSkpKSkpCisgICAgIChhbmQgKGdleHA/IGV4cCkKKyAgICAg
ICAgICAobWF0Y2ggKGdleHAtaW5wdXRzIGV4cCkKKyAgICAgICAgICAgICAgICAgKCgobyAib3V0
IikpIChlcT8gbyAocGFja2FnZS1zb3VyY2UgY29yZXV0aWxzKSkpKQorICAgICAgICAgIChlcXVh
bD8KKyAgICAgICAgICAgIGAoZGlzcGxheQorICAgICAgICAgICAgICAgLChkZXJpdmF0aW9uLT5v
dXRwdXQtcGF0aAorICAgICAgICAgICAgICAgICAgKHBhY2thZ2Utc291cmNlLWRlcml2YXRpb24K
KyAgICAgICAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAgICAgICAgIChwYWNrYWdl
LXNvdXJjZSBjb3JldXRpbHMpKSkpCisgICAgICAgICAgICAoZ2V4cC0+c2V4cCogZXhwKSkpKSkK
YWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogb25lIGxvY2FsIGZpbGUK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5z
Y206MTA2CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJvbmUgbG9jYWwgZmlsZSIKKyAgIChs
ZXQqICgoZmlsZSAoc2VhcmNoLXBhdGggJWxvYWQtcGF0aCAiZ3VpeC5zY20iKSkKKyAgICAgICAg
ICAobG9jYWwgKGxvY2FsLWZpbGUgZmlsZSkpCisgICAgICAgICAgKGV4cCAoZ2V4cCAoZGlzcGxh
eSAodW5nZXhwIGxvY2FsKSkpKQorICAgICAgICAgIChpbnRkIChhZGQtdG8tc3RvcmUKKyAgICAg
ICAgICAgICAgICAgICVzdG9yZQorICAgICAgICAgICAgICAgICAgKGJhc2VuYW1lIGZpbGUpCisg
ICAgICAgICAgICAgICAgICAjZgorICAgICAgICAgICAgICAgICAgInNoYTI1NiIKKyAgICAgICAg
ICAgICAgICAgIGZpbGUpKSkKKyAgICAgKGFuZCAoZ2V4cD8gZXhwKQorICAgICAgICAgIChtYXRj
aCAoZ2V4cC1pbnB1dHMgZXhwKQorICAgICAgICAgICAgICAgICAoKCh4ICJvdXQiKSkgKGVxPyB4
IGxvY2FsKSkpCisgICAgICAgICAgKGVxdWFsPyBgKGRpc3BsYXkgLGludGQpIChnZXhwLT5zZXhw
KiBleHApKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBvbmUg
bG9jYWwgZmlsZSwgc3ltbGluawpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0cy9nZXhwLnNjbToxMTgKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgIm9u
ZSBsb2NhbCBmaWxlLCBzeW1saW5rIgorICAgKGxldCAoKGZpbGUgKHNlYXJjaC1wYXRoICVsb2Fk
LXBhdGggImd1aXguc2NtIikpCisgICAgICAgICAobGluayAodG1wbmFtKSkpCisgICAgIChkeW5h
bWljLXdpbmQKKyAgICAgICAoY29uc3QgI3QpCisgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAg
KHN5bWxpbmsgKGNhbm9uaWNhbGl6ZS1wYXRoIGZpbGUpIGxpbmspCisgICAgICAgICAobGV0KiAo
KGxvY2FsIChsb2NhbC1maWxlIGxpbmsgIm15LWZpbGUiICM6cmVjdXJzaXZlPyAjZikpCisgICAg
ICAgICAgICAgICAgKGV4cCAoZ2V4cCAoZGlzcGxheSAodW5nZXhwIGxvY2FsKSkpKQorICAgICAg
ICAgICAgICAgIChpbnRkIChhZGQtdG8tc3RvcmUgJXN0b3JlICJteS1maWxlIiAjZiAic2hhMjU2
IiBmaWxlKSkpCisgICAgICAgICAgIChhbmQgKGdleHA/IGV4cCkKKyAgICAgICAgICAgICAgICAo
bWF0Y2ggKGdleHAtaW5wdXRzIGV4cCkKKyAgICAgICAgICAgICAgICAgICAgICAgKCgoeCAib3V0
IikpIChlcT8geCBsb2NhbCkpKQorICAgICAgICAgICAgICAgIChlcXVhbD8gYChkaXNwbGF5ICxp
bnRkKSAoZ2V4cC0+c2V4cCogZXhwKSkpKSkKKyAgICAgICAobGFtYmRhICgpCisgICAgICAgICAo
ZmFsc2UtaWYtZXhjZXB0aW9uIChkZWxldGUtZmlsZSBsaW5rKSkpKSkpCmFjdHVhbC12YWx1ZTog
I3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGxvY2FsLWZpbGUsIHJlbGF0aXZlIGZpbGUgbmFt
ZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhw
LnNjbToxMzcKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAibG9jYWwtZmlsZSwgcmVsYXRpdmUg
ZmlsZSBuYW1lIgorICAgKGNhbm9uaWNhbGl6ZS1wYXRoCisgICAgIChzZWFyY2gtcGF0aCAlbG9h
ZC1wYXRoICJndWl4L2Jhc2UzMi5zY20iKSkKKyAgIChsZXQgKChkaXJlY3RvcnkKKyAgICAgICAg
ICAgKGRpcm5hbWUKKyAgICAgICAgICAgICAoc2VhcmNoLXBhdGgKKyAgICAgICAgICAgICAgICVs
b2FkLXBhdGgKKyAgICAgICAgICAgICAgICJndWl4L2J1aWxkLXN5c3RlbS9nbnUuc2NtIikpKSkK
KyAgICAgKHdpdGgtZGlyZWN0b3J5LWV4Y3Vyc2lvbgorICAgICAgIGRpcmVjdG9yeQorICAgICAg
IChsZXQgKChmaWxlIChsb2NhbC1maWxlICIuLi9ndWl4L2Jhc2UzMi5zY20iKSkpCisgICAgICAg
ICAobG9jYWwtZmlsZS1hYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSkpKSkpCmV4cGVjdGVkLXZhbHVl
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL2d1aXgvYmFzZTMyLnNjbQphY3R1
YWwtdmFsdWU6IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvZ3VpeC9iYXNlMzIu
c2NtCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBsb2NhbC1maWxlLCAjOnNlbGVjdD8KbG9jYXRp
b246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206MTQ1
CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJsb2NhbC1maWxlLCAjOnNlbGVjdD8iCisgICAo
cnVuLXdpdGgtc3RvcmUKKyAgICAgJXN0b3JlCisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAg
ICAgICAgICAgICgoc2VsZWN0PworICAgICAgICAgICAgICAgLT4KKyAgICAgICAgICAgICAgIChs
YW1iZGEgKGZpbGUgc3RhdCkKKyAgICAgICAgICAgICAgICAgKG1lbWJlcgorICAgICAgICAgICAg
ICAgICAgIChiYXNlbmFtZSBmaWxlKQorICAgICAgICAgICAgICAgICAgICcoImd1aXguc2NtIiAi
dGVzdHMiICJnZXhwLnNjbSIpKSkpCisgICAgICAgICAgICAgKGZpbGUgLT4KKyAgICAgICAgICAg
ICAgICAgICAobG9jYWwtZmlsZQorICAgICAgICAgICAgICAgICAgICAgIi4uIgorICAgICAgICAg
ICAgICAgICAgICAgImRpcmVjdG9yeSIKKyAgICAgICAgICAgICAgICAgICAgICM6cmVjdXJzaXZl
PworICAgICAgICAgICAgICAgICAgICAgI3QKKyAgICAgICAgICAgICAgICAgICAgICM6c2VsZWN0
PworICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PykpCisgICAgICAgICAgICAgKGRpciAobG93
ZXItb2JqZWN0IGZpbGUpKSkKKyAgICAgICAgICAgIChyZXR1cm4KKyAgICAgICAgICAgICAgKGFu
ZCAoc3RvcmUtcGF0aD8gZGlyKQorICAgICAgICAgICAgICAgICAgIChlcXVhbD8KKyAgICAgICAg
ICAgICAgICAgICAgIChzY2FuZGlyIGRpcikKKyAgICAgICAgICAgICAgICAgICAgICcoIi4iICIu
LiIgImd1aXguc2NtIiAidGVzdHMiKSkKKyAgICAgICAgICAgICAgICAgICAoZXF1YWw/CisgICAg
ICAgICAgICAgICAgICAgICAoc2NhbmRpciAoc3RyaW5nLWFwcGVuZCBkaXIgIi90ZXN0cyIpKQor
ICAgICAgICAgICAgICAgICAgICAgJygiLiIgIi4uIiAiZ2V4cC5zY20iKSkpKSkKKyAgICAgIzpn
dWlsZS1mb3ItYnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKYWN0dWFsLXZhbHVlOiAj
dApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogb25lIHBsYWluIGZpbGUKbG9jYXRpb246IC9ob21l
L3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206MTYwCnNvdXJjZToK
KyAodGVzdC1hc3NlcnQKKyAgICJvbmUgcGxhaW4gZmlsZSIKKyAgIChsZXQqICgoZmlsZSAocGxh
aW4tZmlsZSAiaGkiICJIZWxsbywgd29ybGQhIikpCisgICAgICAgICAgKGV4cCAoZ2V4cCAoZGlz
cGxheSAodW5nZXhwIGZpbGUpKSkpCisgICAgICAgICAgKGV4cGVjdGVkCisgICAgICAgICAgICAo
YWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJoaSIgIkhlbGxvLCB3b3JsZCEiKSkpCisgICAgIChh
bmQgKGdleHA/IGV4cCkKKyAgICAgICAgICAobWF0Y2ggKGdleHAtaW5wdXRzIGV4cCkKKyAgICAg
ICAgICAgICAgICAgKCgoeCAib3V0IikpIChlcT8geCBmaWxlKSkpCisgICAgICAgICAgKGVxdWFs
PyBgKGRpc3BsYXkgLGV4cGVjdGVkKSAoZ2V4cC0+c2V4cCogZXhwKSkpKSkKYWN0dWFsLXZhbHVl
OiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogc2FtZSBpbnB1dCB0d2ljZQpsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbToxNzAKc291
cmNlOgorICh0ZXN0LWFzc2VydAorICAgInNhbWUgaW5wdXQgdHdpY2UiCisgICAobGV0ICgoZXhw
IChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5ICh1bmdleHAgY29y
ZXV0aWxzKSkKKyAgICAgICAgICAgICAgICAgICAgICAoZGlzcGxheSAodW5nZXhwIGNvcmV1dGls
cykpKSkpKQorICAgICAoYW5kIChnZXhwPyBleHApCisgICAgICAgICAgKG1hdGNoIChnZXhwLWlu
cHV0cyBleHApCisgICAgICAgICAgICAgICAgICgoKHAgIm91dCIpKSAoZXE/IHAgY29yZXV0aWxz
KSkpCisgICAgICAgICAgKGxldCAoKGUgYChkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgICAg
LChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgIChwYWNr
YWdlLWRlcml2YXRpb24gJXN0b3JlIGNvcmV1dGlscykpKSkpCisgICAgICAgICAgICAoZXF1YWw/
IGAoYmVnaW4gLGUgLGUpIChnZXhwLT5zZXhwKiBleHApKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApy
ZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogdHdvIGlucHV0IHBhY2thZ2VzLCBvbmUgZGVyaXZhdGlv
biwgb25lIGZpbGUKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdHMvZ2V4cC5zY206MTgyCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJ0d28gaW5wdXQg
cGFja2FnZXMsIG9uZSBkZXJpdmF0aW9uLCBvbmUgZmlsZSIKKyAgIChsZXQqICgoZHJ2IChidWls
ZC1leHByZXNzaW9uLT5kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgICVzdG9yZQorICAgICAg
ICAgICAgICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAnYmFyCisgICAgICAgICAgICAgICAg
ICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICAgICAgICAgICAgIChwYWNrYWdlLWRlcml2YXRpb24g
JXN0b3JlICVib290c3RyYXAtZ3VpbGUpKSkKKyAgICAgICAgICAodHh0IChhZGQtdGV4dC10by1z
dG9yZSAlc3RvcmUgImZvbyIgIkhlbGxvLCB3b3JsZCEiKSkKKyAgICAgICAgICAoZXhwIChnZXhw
IChiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAoZGlzcGxheSAodW5nZXhwIGNvcmV1dGls
cykpCisgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5ICh1bmdleHAgJWJvb3RzdHJhcC1n
dWlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5ICh1bmdleHAgZHJ2KSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXkgKHVuZ2V4cCB0eHQpKSkpKSkKKyAgICAgKGRl
ZmluZSAobWF0Y2gtaW5wdXQgdGhpbmcpCisgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAg
KChkcnYtb3ItcGtnIF8gLi4uKSAoZXE/IHRoaW5nIGRydi1vci1wa2cpKSkpCisgICAgIChhbmQg
KGdleHA/IGV4cCkKKyAgICAgICAgICAoPSA0IChsZW5ndGggKGdleHAtaW5wdXRzIGV4cCkpKQor
ICAgICAgICAgIChldmVyeSAobGFtYmRhIChpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAoZmlu
ZCAobWF0Y2gtaW5wdXQgaW5wdXQpIChnZXhwLWlucHV0cyBleHApKSkKKyAgICAgICAgICAgICAg
ICAgKGxpc3QgZHJ2IGNvcmV1dGlscyAlYm9vdHN0cmFwLWd1aWxlIHR4dCkpCisgICAgICAgICAg
KGxldCAoKGUwIGAoZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAsKGRlcml2YXRpb24t
Pm91dHB1dC1wYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLWRlcml2YXRp
b24gJXN0b3JlIGNvcmV1dGlscykpKSkKKyAgICAgICAgICAgICAgICAoZTEgYChkaXNwbGF5Cisg
ICAgICAgICAgICAgICAgICAgICAgICwoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiAlc3RvcmUgJWJvb3RzdHJhcC1n
dWlsZSkpKSkKKyAgICAgICAgICAgICAgICAoZTIgYChkaXNwbGF5ICwoZGVyaXZhdGlvbi0+b3V0
cHV0LXBhdGggZHJ2KSkpCisgICAgICAgICAgICAgICAgKGUzIGAoZGlzcGxheSAsdHh0KSkpCisg
ICAgICAgICAgICAoZXF1YWw/CisgICAgICAgICAgICAgIGAoYmVnaW4gLGUwICxlMSAsZTIgLGUz
KQorICAgICAgICAgICAgICAoZ2V4cC0+c2V4cCogZXhwKSkpKSkpCmFjdHVhbC12YWx1ZTogI3QK
cmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHVuZ2V4cCArIHVuZ2V4cC1uYXRpdmUKbG9jYXRpb246
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206MjEwCnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJ1bmdleHAgKyB1bmdleHAtbmF0aXZlIgorICAgKGxl
dCogKChleHAgKGdleHAgKGxpc3QgKHVuZ2V4cC1uYXRpdmUgJWJvb3RzdHJhcC1ndWlsZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh1bmdleHAgY29yZXV0aWxzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHVuZ2V4cC1uYXRpdmUgZ2xpYmMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodW5nZXhwIGJpbnV0aWxzKSkpKQorICAgICAgICAgICh0YXJnZXQgIm1pcHM2NGVs
LWxpbnV4IikKKyAgICAgICAgICAoZ3VpbGUgKGRlcml2YXRpb24tPm91dHB1dC1wYXRoCisgICAg
ICAgICAgICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiAlc3RvcmUgJWJvb3RzdHJhcC1ndWls
ZSkpKQorICAgICAgICAgIChjdSAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGgKKyAgICAgICAgICAg
ICAgICAocGFja2FnZS1jcm9zcy1kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgICAlc3RvcmUK
KyAgICAgICAgICAgICAgICAgIGNvcmV1dGlscworICAgICAgICAgICAgICAgICAgdGFyZ2V0KSkp
CisgICAgICAgICAgKGxpYmMgKGRlcml2YXRpb24tPm91dHB1dC1wYXRoCisgICAgICAgICAgICAg
ICAgICAocGFja2FnZS1kZXJpdmF0aW9uICVzdG9yZSBnbGliYykpKQorICAgICAgICAgIChidSAo
ZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGgKKyAgICAgICAgICAgICAgICAocGFja2FnZS1jcm9zcy1k
ZXJpdmF0aW9uICVzdG9yZSBiaW51dGlscyB0YXJnZXQpKSkpCisgICAgIChhbmQgKGxzZXQ9IGVx
dWFsPworICAgICAgICAgICAgICAgICBgKCgsJWJvb3RzdHJhcC1ndWlsZSAib3V0IikgKCxnbGli
YyAib3V0IikpCisgICAgICAgICAgICAgICAgIChnZXhwLW5hdGl2ZS1pbnB1dHMgZXhwKSkKKyAg
ICAgICAgICAobHNldD0gZXF1YWw/CisgICAgICAgICAgICAgICAgIGAoKCxjb3JldXRpbHMgIm91
dCIpICgsYmludXRpbHMgIm91dCIpKQorICAgICAgICAgICAgICAgICAoZ2V4cC1pbnB1dHMgZXhw
KSkKKyAgICAgICAgICAoZXF1YWw/CisgICAgICAgICAgICBgKGxpc3QgLGd1aWxlICxjdSAsbGli
YyAsYnUpCisgICAgICAgICAgICAoZ2V4cC0+c2V4cCogZXhwIHRhcmdldCkpKSkpCmFjdHVhbC12
YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHVuZ2V4cCArIHVuZ2V4cC1uYXRpdmUs
IG5lc3RlZApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0
cy9nZXhwLnNjbToyMzMKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAidW5nZXhwICsgdW5nZXhw
LW5hdGl2ZSwgbmVzdGVkIgorICAgKGxpc3QgYCgoLCVib290c3RyYXAtZ3VpbGUgIm91dCIpKQor
ICAgICAgICAgJzw+CisgICAgICAgICBgKCgsY29yZXV0aWxzICJvdXQiKSkpCisgICAobGV0KiAo
KGV4cCAoZ2V4cCAobGlzdCAodW5nZXhwLW5hdGl2ZSAoZ2V4cCAodW5nZXhwIGNvcmV1dGlscykp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuZ2V4cCAlYm9vdHN0cmFwLWd1aWxlKSkp
KSkKKyAgICAgKGxpc3QgKGdleHAtaW5wdXRzIGV4cCkKKyAgICAgICAgICAgJzw+CisgICAgICAg
ICAgIChnZXhwLW5hdGl2ZS1pbnB1dHMgZXhwKSkpKQpleHBlY3RlZC12YWx1ZTogKCgoIzxwYWNr
YWdlIGd1aWxlLWJvb3RzdHJhcEAyLjAgZ251L3BhY2thZ2VzL2Jvb3RzdHJhcC5zY206Mjc3IDEx
MTQwYzA+IG91dCkpIDw+ICgoIzxwYWNrYWdlIGNvcmV1dGlsc0A4LjI0IGdudS9wYWNrYWdlcy9i
YXNlLnNjbToyNDQgMmRmMDZjMD4gb3V0KSkpCmFjdHVhbC12YWx1ZTogKCgoIzxwYWNrYWdlIGd1
aWxlLWJvb3RzdHJhcEAyLjAgZ251L3BhY2thZ2VzL2Jvb3RzdHJhcC5zY206Mjc3IDExMTQwYzA+
IG91dCkpIDw+ICgoIzxwYWNrYWdlIGNvcmV1dGlsc0A4LjI0IGdudS9wYWNrYWdlcy9iYXNlLnNj
bToyNDQgMmRmMDZjMD4gb3V0KSkpCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBpbnB1dCBsaXN0
CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAu
c2NtOjIzOQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiaW5wdXQgbGlzdCIKKyAgIChsZXQg
KChleHAgKGdleHAgKGRpc3BsYXkKKyAgICAgICAgICAgICAgICAgICAgICAnKHVuZ2V4cCAobGlz
dCAlYm9vdHN0cmFwLWd1aWxlIGNvcmV1dGlscykpKSkpCisgICAgICAgICAoZ3VpbGUgKGRlcml2
YXRpb24tPm91dHB1dC1wYXRoCisgICAgICAgICAgICAgICAgICAocGFja2FnZS1kZXJpdmF0aW9u
ICVzdG9yZSAlYm9vdHN0cmFwLWd1aWxlKSkpCisgICAgICAgICAoY3UgKGRlcml2YXRpb24tPm91
dHB1dC1wYXRoCisgICAgICAgICAgICAgICAocGFja2FnZS1kZXJpdmF0aW9uICVzdG9yZSBjb3Jl
dXRpbHMpKSkpCisgICAgIChhbmQgKGxzZXQ9IGVxdWFsPworICAgICAgICAgICAgICAgICBgKCgs
JWJvb3RzdHJhcC1ndWlsZSAib3V0IikgKCxjb3JldXRpbHMgIm91dCIpKQorICAgICAgICAgICAg
ICAgICAoZ2V4cC1pbnB1dHMgZXhwKSkKKyAgICAgICAgICAoZXF1YWw/CisgICAgICAgICAgICBg
KGRpc3BsYXkgJygsZ3VpbGUgLGN1KSkKKyAgICAgICAgICAgIChnZXhwLT5zZXhwKiBleHApKSkp
KQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBpbnB1dCBsaXN0ICsg
dW5nZXhwLW5hdGl2ZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0cy9nZXhwLnNjbToyNTIKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImlucHV0IGxp
c3QgKyB1bmdleHAtbmF0aXZlIgorICAgKGxldCogKCh0YXJnZXQgIm1pcHM2NGVsLWxpbnV4IikK
KyAgICAgICAgICAoZXhwIChnZXhwIChkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgICAgIChj
b25zICcodW5nZXhwLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlz
dCAlYm9vdHN0cmFwLWd1aWxlIGNvcmV1dGlscykpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcodW5nZXhwIChsaXN0IGdsaWJjIGJpbnV0aWxzKSkpKSkpCisgICAgICAgICAgKGd1aWxl
IChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aAorICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLWRl
cml2YXRpb24gJXN0b3JlICVib290c3RyYXAtZ3VpbGUpKSkKKyAgICAgICAgICAoY3UgKGRlcml2
YXRpb24tPm91dHB1dC1wYXRoCisgICAgICAgICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiAl
c3RvcmUgY29yZXV0aWxzKSkpCisgICAgICAgICAgKHhsaWJjIChkZXJpdmF0aW9uLT5vdXRwdXQt
cGF0aAorICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLWNyb3NzLWRlcml2YXRpb24gJXN0b3Jl
IGdsaWJjIHRhcmdldCkpKQorICAgICAgICAgICh4YnUgKGRlcml2YXRpb24tPm91dHB1dC1wYXRo
CisgICAgICAgICAgICAgICAgIChwYWNrYWdlLWNyb3NzLWRlcml2YXRpb24gJXN0b3JlIGJpbnV0
aWxzIHRhcmdldCkpKSkKKyAgICAgKGFuZCAobHNldD0gZXF1YWw/CisgICAgICAgICAgICAgICAg
IGAoKCwlYm9vdHN0cmFwLWd1aWxlICJvdXQiKSAoLGNvcmV1dGlscyAib3V0IikpCisgICAgICAg
ICAgICAgICAgIChnZXhwLW5hdGl2ZS1pbnB1dHMgZXhwKSkKKyAgICAgICAgICAobHNldD0gZXF1
YWw/CisgICAgICAgICAgICAgICAgIGAoKCxnbGliYyAib3V0IikgKCxiaW51dGlscyAib3V0Iikp
CisgICAgICAgICAgICAgICAgIChnZXhwLWlucHV0cyBleHApKQorICAgICAgICAgIChlcXVhbD8K
KyAgICAgICAgICAgIGAoZGlzcGxheSAoY29ucyAnKCxndWlsZSAsY3UpICcoLHhsaWJjICx4YnUp
KSkKKyAgICAgICAgICAgIChnZXhwLT5zZXhwKiBleHAgdGFyZ2V0KSkpKSkKYWN0dWFsLXZhbHVl
OiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogaW5wdXQgbGlzdCBzcGxpY2luZwpsb2NhdGlv
bjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbToyNzQK
c291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImlucHV0IGxpc3Qgc3BsaWNpbmciCisgICAobGV0
KiAoKGlucHV0cworICAgICAgICAgICAgKGxpc3QgKGdleHAtaW5wdXQgZ2xpYmMgImRlYnVnIikK
KyAgICAgICAgICAgICAgICAgICVib290c3RyYXAtZ3VpbGUpKQorICAgICAgICAgIChvdXRwdXRz
CisgICAgICAgICAgICAobGlzdCAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGgKKyAgICAgICAgICAg
ICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiAlc3RvcmUgZ2xpYmMpCisgICAgICAgICAgICAg
ICAgICAgICJkZWJ1ZyIpCisgICAgICAgICAgICAgICAgICAoZGVyaXZhdGlvbi0+b3V0cHV0LXBh
dGgKKyAgICAgICAgICAgICAgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiAlc3RvcmUgJWJvb3Rz
dHJhcC1ndWlsZSkpKSkKKyAgICAgICAgICAoZXhwIChnZXhwIChsaXN0ICh1bmdleHAtc3BsaWNp
bmcgKGNvbnMgKCsgMiAzKSBpbnB1dHMpKSkpKSkKKyAgICAgKGFuZCAobHNldD0gZXF1YWw/Cisg
ICAgICAgICAgICAgICAgIGAoKCxnbGliYyAiZGVidWciKSAoLCVib290c3RyYXAtZ3VpbGUgIm91
dCIpKQorICAgICAgICAgICAgICAgICAoZ2V4cC1pbnB1dHMgZXhwKSkKKyAgICAgICAgICAoZXF1
YWw/CisgICAgICAgICAgICAoZ2V4cC0+c2V4cCogZXhwKQorICAgICAgICAgICAgYChsaXN0ICxA
KGNvbnMgNSBvdXRwdXRzKSkpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0
LW5hbWU6IGlucHV0IGxpc3Qgc3BsaWNpbmcgKyB1bmdleHAtbmF0aXZlLXNwbGljaW5nCmxvY2F0
aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjI4
OApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiaW5wdXQgbGlzdCBzcGxpY2luZyArIHVuZ2V4
cC1uYXRpdmUtc3BsaWNpbmciCisgICAobGV0KiAoKGlucHV0cworICAgICAgICAgICAgKGxpc3Qg
KGdleHAtaW5wdXQgZ2xpYmMgImRlYnVnIikKKyAgICAgICAgICAgICAgICAgICVib290c3RyYXAt
Z3VpbGUpKQorICAgICAgICAgIChleHAgKGdleHAgKGxpc3QgKHVuZ2V4cC1uYXRpdmUtc3BsaWNp
bmcgKGNvbnMgKCsgMiAzKSBpbnB1dHMpKSkpKSkKKyAgICAgKGFuZCAobHNldD0gZXF1YWw/Cisg
ICAgICAgICAgICAgICAgIGAoKCxnbGliYyAiZGVidWciKSAoLCVib290c3RyYXAtZ3VpbGUgIm91
dCIpKQorICAgICAgICAgICAgICAgICAoZ2V4cC1uYXRpdmUtaW5wdXRzIGV4cCkpCisgICAgICAg
ICAgKG51bGw/IChnZXhwLWlucHV0cyBleHApKQorICAgICAgICAgIChlcXVhbD8KKyAgICAgICAg
ICAgIChnZXhwLT5zZXhwKiBleHApCisgICAgICAgICAgICAoZ2V4cC0+c2V4cCogZXhwICJtaXBz
NjRlbC1saW51eCIpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1l
OiBvdXRwdXQgbGlzdApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0cy9nZXhwLnNjbToyOTgKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAib3V0cHV0IGxp
c3QiCisgICAyCisgICAobGV0ICgoZXhwIChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAg
ICAgIChta2RpciAodW5nZXhwIG91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAgKG1rZGly
ICh1bmdleHAgb3V0cHV0ICJiYXIiKSkpKSkpCisgICAgIChsZW5ndGggKGdleHAtb3V0cHV0cyBl
eHApKSkpCmV4cGVjdGVkLXZhbHVlOiAyCmFjdHVhbC12YWx1ZTogMgpyZXN1bHQ6IFBBU1MKCnRl
c3QtbmFtZTogb3V0cHV0IGxpc3QsIGNvbWJpbmVkIGdleHBzCmxvY2F0aW9uOiAvaG9tZS9zYXBp
ZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjMwNApzb3VyY2U6CisgKHRl
c3QtYXNzZXJ0CisgICAib3V0cHV0IGxpc3QsIGNvbWJpbmVkIGdleHBzIgorICAgKGxldCogKChl
eHAwIChnZXhwIChta2RpciAodW5nZXhwIG91dHB1dCkpKSkKKyAgICAgICAgICAoZXhwMSAoZ2V4
cCAobWtkaXIgKHVuZ2V4cCBvdXRwdXQgImZvbyIpKSkpCisgICAgICAgICAgKGV4cDIgKGdleHAg
KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAoZGlzcGxheSAiaGkhIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICh1bmdleHAgZXhwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICh1
bmdleHAgZXhwMSkpKSkpCisgICAgIChhbmQgKGxzZXQ9IGVxdWFsPworICAgICAgICAgICAgICAg
ICAoYXBwZW5kIChnZXhwLW91dHB1dHMgZXhwMCkgKGdleHAtb3V0cHV0cyBleHAxKSkKKyAgICAg
ICAgICAgICAgICAgKGdleHAtb3V0cHV0cyBleHAyKSkKKyAgICAgICAgICAoPSAyIChsZW5ndGgg
KGdleHAtb3V0cHV0cyBleHAyKSkpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0
ZXN0LW5hbWU6IG91dHB1dCBsaXN0LCBjb21iaW5lZCBnZXhwcywgZHVwbGljYXRlIG91dHB1dAps
b2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNj
bTozMTMKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAib3V0cHV0IGxpc3QsIGNvbWJpbmVkIGdl
eHBzLCBkdXBsaWNhdGUgb3V0cHV0IgorICAgMQorICAgKGxldCogKChleHAwIChnZXhwIChta2Rp
ciAodW5nZXhwIG91dHB1dCkpKSkKKyAgICAgICAgICAoZXhwMSAoZ2V4cCAoYmVnaW4gKG1rZGly
ICh1bmdleHAgb3V0cHV0KSkgKHVuZ2V4cCBleHAwKSkpKQorICAgICAgICAgIChleHAyIChnZXhw
IChiZWdpbiAobWtkaXIgKHVuZ2V4cCBvdXRwdXQpKSAodW5nZXhwIGV4cDEpKSkpKQorICAgICAo
bGVuZ3RoIChnZXhwLW91dHB1dHMgZXhwMikpKSkKZXhwZWN0ZWQtdmFsdWU6IDEKYWN0dWFsLXZh
bHVlOiAxCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBvdXRwdXQgbGlzdCArIHVuZ2V4cC1zcGxp
Y2luZyBsaXN0LCBjb21iaW5lZCBnZXhwcwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTozMjAKc291cmNlOgorICh0ZXN0LWFzc2VydAor
ICAgIm91dHB1dCBsaXN0ICsgdW5nZXhwLXNwbGljaW5nIGxpc3QsIGNvbWJpbmVkIGdleHBzIgor
ICAgKGxldCogKChleHAwIChnZXhwIChta2RpciAodW5nZXhwIG91dHB1dCkpKSkKKyAgICAgICAg
ICAoZXhwMSAoZ2V4cCAobWtkaXIgKHVuZ2V4cCBvdXRwdXQgImZvbyIpKSkpCisgICAgICAgICAg
KGV4cDIgKGdleHAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAoZGlzcGxheSAiaGkh
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bmdleHAtc3BsaWNpbmcgKGxpc3QgZXhwMCBl
eHAxKSkpKSkpCisgICAgIChhbmQgKGxzZXQ9IGVxdWFsPworICAgICAgICAgICAgICAgICAoYXBw
ZW5kIChnZXhwLW91dHB1dHMgZXhwMCkgKGdleHAtb3V0cHV0cyBleHAxKSkKKyAgICAgICAgICAg
ICAgICAgKGdleHAtb3V0cHV0cyBleHAyKSkKKyAgICAgICAgICAoPSAyIChsZW5ndGggKGdleHAt
b3V0cHV0cyBleHAyKSkpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5h
bWU6IGdleHAtPmZpbGUKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvZ2V4cC5zY206MzMwCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5m
aWxlIgorICAgKHJ1bi13aXRoLXN0b3JlCisgICAgICVzdG9yZQorICAgICAobWxldCogJXN0b3Jl
LW1vbmFkCisgICAgICAgICAgICAoKGV4cCAtPgorICAgICAgICAgICAgICAgICAgKGdleHAgKGRp
c3BsYXkgKHVuZ2V4cCAlYm9vdHN0cmFwLWd1aWxlKSkpKQorICAgICAgICAgICAgIChndWlsZSAo
cGFja2FnZS1maWxlICVib290c3RyYXAtZ3VpbGUpKQorICAgICAgICAgICAgIChzZXhwIChnZXhw
LT5zZXhwIGV4cCkpCisgICAgICAgICAgICAgKGRydiAoZ2V4cC0+ZmlsZSAiZm9vIiBleHApKQor
ICAgICAgICAgICAgIChvdXQgLT4gKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGRydikpCisgICAg
ICAgICAgICAgKGRvbmUgKGJ1aWx0LWRlcml2YXRpb25zIChsaXN0IGRydikpKQorICAgICAgICAg
ICAgIChyZWZzICgoc3RvcmUtbGlmdCByZWZlcmVuY2VzKSBvdXQpKSkKKyAgICAgICAgICAgIChy
ZXR1cm4KKyAgICAgICAgICAgICAgKGFuZCAoZXF1YWw/IHNleHAgKGNhbGwtd2l0aC1pbnB1dC1m
aWxlIG91dCByZWFkKSkKKyAgICAgICAgICAgICAgICAgICAoZXF1YWw/IChsaXN0IGd1aWxlKSBy
ZWZzKSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAoJWd1aWxlLWZvci1idWlsZCkp
KQpyYW5kb20gc2VlZCBmb3IgdGVzdHM6IDE0Njk4MjgxNzkKQCBidWlsZC1zdGFydGVkIC9ob21l
L3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvYnI2Y21ibXcyZDB5
NTc4ZmhrMjA0MW5tanlhMXhibjMtZm9vLmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBpZW50
ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzL2JyLy82Y21i
bXcyZDB5NTc4ZmhrMjA0MW5tanlhMXhibjMtZm9vLmRydi5iejIKQCBidWlsZC1zdWNjZWVkZWQg
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9icjZjbWJt
dzJkMHk1NzhmaGsyMDQxbm1qeWExeGJuMy1mb28uZHJ2IC0KYWN0dWFsLXZhbHVlOiAjdApyZXN1
bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC0+ZGVyaXZhdGlvbgpsb2NhdGlvbjogL2hvbWUvc2Fw
aWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTozNDEKc291cmNlOgorICh0
ZXN0LWFzc2VydAorICAgImdleHAtPmRlcml2YXRpb24iCisgICAocnVuLXdpdGgtc3RvcmUKKyAg
ICAgJXN0b3JlCisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICgoZmlsZSAo
dGV4dC1maWxlICJmb28iICJIZWxsbywgd29ybGQhIikpCisgICAgICAgICAgICAgKGV4cCAtPgor
ICAgICAgICAgICAgICAgICAgKGdleHAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAg
IChta2RpciAodW5nZXhwIG91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGRp
ciAodW5nZXhwIG91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW1saW5rCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh1bmdleHAgJWJvb3RzdHJhcC1ndWlsZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIvYmluL2d1aWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZm9vIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsgKHVuZ2V4cCBmaWxl
KSAodW5nZXhwIG91dHB1dCAiMm5kIikpKSkpCisgICAgICAgICAgICAgKGRydiAoZ2V4cC0+ZGVy
aXZhdGlvbiAiZm9vIiBleHApKQorICAgICAgICAgICAgIChvdXQgLT4gKGRlcml2YXRpb24tPm91
dHB1dC1wYXRoIGRydikpCisgICAgICAgICAgICAgKG91dDIgLT4gKGRlcml2YXRpb24tPm91dHB1
dC1wYXRoIGRydiAiMm5kIikpCisgICAgICAgICAgICAgKGRvbmUgKGJ1aWx0LWRlcml2YXRpb25z
IChsaXN0IGRydikpKQorICAgICAgICAgICAgIChyZWZzICgoc3RvcmUtbGlmdCByZWZlcmVuY2Vz
KSBvdXQpKQorICAgICAgICAgICAgIChyZWZzMiAoKHN0b3JlLWxpZnQgcmVmZXJlbmNlcykgb3V0
MikpCisgICAgICAgICAgICAgKGd1aWxlIChwYWNrYWdlLWZpbGUgJWJvb3RzdHJhcC1ndWlsZSAi
YmluL2d1aWxlIikpKQorICAgICAgICAgICAgKHJldHVybgorICAgICAgICAgICAgICAoYW5kIChz
dHJpbmc9PworICAgICAgICAgICAgICAgICAgICAgKHJlYWRsaW5rIChzdHJpbmctYXBwZW5kIG91
dCAiL2ZvbyIpKQorICAgICAgICAgICAgICAgICAgICAgZ3VpbGUpCisgICAgICAgICAgICAgICAg
ICAgKHN0cmluZz0/IChyZWFkbGluayBvdXQyKSBmaWxlKQorICAgICAgICAgICAgICAgICAgIChl
cXVhbD8gcmVmcyAobGlzdCAoZGlybmFtZSAoZGlybmFtZSBndWlsZSkpKSkKKyAgICAgICAgICAg
ICAgICAgICAoZXF1YWw/IHJlZnMyIChsaXN0IGZpbGUpKSkpKQorICAgICAjOmd1aWxlLWZvci1i
dWlsZAorICAgICAoJWd1aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2Fw
aWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS96bWhtdzk2OHdnaXZzamx2
dzVxdzNsMnhscTVpY2F6Ni1mb28uZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gv
RGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvem0vL2htdzk2OHdn
aXZzamx2dzVxdzNsMnhscTVpY2F6Ni1mb28uZHJ2LmJ6MgpAIGJ1aWxkLXN1Y2NlZWRlZCAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3ptaG13OTY4d2dp
dnNqbHZ3NXF3M2wyeGxxNWljYXo2LWZvby5kcnYgLQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDog
UEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0aW9uIHZzLiBncmFmdHMKbG9jYXRpb246IC9o
b21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206MzY1CnNvdXJj
ZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0aW9uIHZzLiBncmFmdHMiCisgICAo
cnVuLXdpdGgtc3RvcmUKKyAgICAgJXN0b3JlCisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAg
ICAgICAgICAgICgoZ3JhZnQ/IChzZXQtZ3JhZnRpbmcgI2YpKQorICAgICAgICAgICAgIChwMCAt
PgorICAgICAgICAgICAgICAgICAoZHVtbXktcGFja2FnZQorICAgICAgICAgICAgICAgICAgICJk
dW1teSIKKyAgICAgICAgICAgICAgICAgICAoYXJndW1lbnRzICcoIzppbXBsaWNpdC1pbnB1dHM/
ICNmKSkpKQorICAgICAgICAgICAgIChyIC0+IChwYWNrYWdlIChpbmhlcml0IHAwKSAobmFtZSAi
RHVNTVkiKSkpCisgICAgICAgICAgICAgKHAxIC0+IChwYWNrYWdlIChpbmhlcml0IHAwKSAocmVw
bGFjZW1lbnQgcikpKQorICAgICAgICAgICAgIChleHAwIC0+CisgICAgICAgICAgICAgICAgICAg
KGdleHAgKGZyb2IgKHVuZ2V4cCBwMCkgKHVuZ2V4cCBvdXRwdXQpKSkpCisgICAgICAgICAgICAg
KGV4cDEgLT4KKyAgICAgICAgICAgICAgICAgICAoZ2V4cCAoZnJvYiAodW5nZXhwIHAxKSAodW5n
ZXhwIG91dHB1dCkpKSkKKyAgICAgICAgICAgICAodm9pZCAoc2V0LWd1aWxlLWZvci1idWlsZCAl
Ym9vdHN0cmFwLWd1aWxlKSkKKyAgICAgICAgICAgICAoZHJ2MCAoZ2V4cC0+ZGVyaXZhdGlvbiAi
dCIgZXhwMCAjOmdyYWZ0PyAjdCkpCisgICAgICAgICAgICAgKGRydjEgKGdleHAtPmRlcml2YXRp
b24gInQiIGV4cDEgIzpncmFmdD8gI3QpKQorICAgICAgICAgICAgIChkcnYxKiAoZ2V4cC0+ZGVy
aXZhdGlvbiAidCIgZXhwMSAjOmdyYWZ0PyAjZikpCisgICAgICAgICAgICAgKF8gKHNldC1ncmFm
dGluZyBncmFmdD8pKSkKKyAgICAgICAgICAgIChyZXR1cm4KKyAgICAgICAgICAgICAgKGFuZCAo
bm90IChzdHJpbmc9PworICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZhdGlvbi0+b3V0
cHV0LXBhdGggZHJ2MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2YXRpb24tPm91
dHB1dC1wYXRoIGRydjEpKSkKKyAgICAgICAgICAgICAgICAgICAoc3RyaW5nPT8KKyAgICAgICAg
ICAgICAgICAgICAgIChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkcnYwKQorICAgICAgICAgICAg
ICAgICAgICAgKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGRydjEqKSkpKSkKKyAgICAgIzpndWls
ZS1mb3ItYnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKYWN0dWFsLXZhbHVlOiAjdApy
ZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC0+ZGVyaXZhdGlvbiwgY29tcG9zZWQgZ2V4cHMK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5z
Y206Mzg0CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0aW9uLCBjb21w
b3NlZCBnZXhwcyIKKyAgIChydW4td2l0aC1zdG9yZQorICAgICAlc3RvcmUKKyAgICAgKG1sZXQq
ICVzdG9yZS1tb25hZAorICAgICAgICAgICAgKChleHAwIC0+CisgICAgICAgICAgICAgICAgICAg
KGdleHAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBv
dXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoZGlyICh1bmdleHAgb3V0cHV0
KSkpKSkKKyAgICAgICAgICAgICAoZXhwMSAtPgorICAgICAgICAgICAgICAgICAgIChnZXhwIChz
eW1saW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodW5nZXhwICVib290c3RyYXAtZ3VpbGUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIvYmluL2d1aWxlIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmb28iKSkpCisgICAgICAgICAgICAgKGV4cCAtPgorICAgICAgICAgICAgICAgICAg
KGdleHAgKGJlZ2luICh1bmdleHAgZXhwMCkgKHVuZ2V4cCBleHAxKSkpKQorICAgICAgICAgICAg
IChkcnYgKGdleHAtPmRlcml2YXRpb24gImZvbyIgZXhwKSkKKyAgICAgICAgICAgICAob3V0IC0+
IChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkcnYpKQorICAgICAgICAgICAgIChkb25lIChidWls
dC1kZXJpdmF0aW9ucyAobGlzdCBkcnYpKSkKKyAgICAgICAgICAgICAoZ3VpbGUgKHBhY2thZ2Ut
ZmlsZSAlYm9vdHN0cmFwLWd1aWxlICJiaW4vZ3VpbGUiKSkpCisgICAgICAgICAgICAocmV0dXJu
CisgICAgICAgICAgICAgIChzdHJpbmc9PworICAgICAgICAgICAgICAgIChyZWFkbGluayAoc3Ry
aW5nLWFwcGVuZCBvdXQgIi9mb28iKSkKKyAgICAgICAgICAgICAgICBndWlsZSkpKQorICAgICAj
Omd1aWxlLWZvci1idWlsZAorICAgICAoJWd1aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0
ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9kN2E4
cWx5cDJzdm56M2F5cTFnMzhieDRsY3ltYjRoNi1mb28uZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21l
L3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMv
ZDcvL2E4cWx5cDJzdm56M2F5cTFnMzhieDRsY3ltYjRoNi1mb28uZHJ2LmJ6MgpAIGJ1aWxkLXN1
Y2NlZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L2Q3YThxbHlwMnN2bnozYXlxMWczOGJ4NGxjeW1iNGg2LWZvby5kcnYgLQphY3R1YWwtdmFsdWU6
ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0aW9uLCBkZWZhdWx0IHN5
c3RlbQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9n
ZXhwLnNjbTo0MDAKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImdleHAtPmRlcml2YXRpb24s
IGRlZmF1bHQgc3lzdGVtIgorICAgKHJ1bi13aXRoLXN0b3JlCisgICAgICVzdG9yZQorICAgICAo
bGV0ICgoc3lzdGVtICglY3VycmVudC1zeXN0ZW0pKQorICAgICAgICAgICAobWRydiAocGFyYW1l
dGVyaXplCisgICAgICAgICAgICAgICAgICAgKCglY3VycmVudC1zeXN0ZW0gImZvb2JhcjY0LWxp
bnV4IikpCisgICAgICAgICAgICAgICAgICAgKGdleHAtPmRlcml2YXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgICJmb28iCisgICAgICAgICAgICAgICAgICAgICAoZ2V4cCAobWtkaXIgKHVuZ2V4
cCBvdXRwdXQpKSkpKSkpCisgICAgICAgKG1sZXQgJXN0b3JlLW1vbmFkCisgICAgICAgICAgICAg
KChkcnYgbWRydikpCisgICAgICAgICAgICAgKHJldHVybgorICAgICAgICAgICAgICAgKHN0cmlu
Zz0/IHN5c3RlbSAoZGVyaXZhdGlvbi1zeXN0ZW0gZHJ2KSkpKSkKKyAgICAgIzpndWlsZS1mb3It
YnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6
IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC0+ZGVyaXZhdGlvbiwgbG9jYWwtZmlsZQpsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo0MTEKc291
cmNlOgorICh0ZXN0LWFzc2VydAorICAgImdleHAtPmRlcml2YXRpb24sIGxvY2FsLWZpbGUiCisg
ICAocnVuLXdpdGgtc3RvcmUKKyAgICAgJXN0b3JlCisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQK
KyAgICAgICAgICAgICgoZmlsZSAtPiAoc2VhcmNoLXBhdGggJWxvYWQtcGF0aCAiZ3VpeC5zY20i
KSkKKyAgICAgICAgICAgICAoaW50ZCAoaW50ZXJuZWQtZmlsZSBmaWxlICM6cmVjdXJzaXZlPyAj
ZikpCisgICAgICAgICAgICAgKGxvY2FsIC0+IChsb2NhbC1maWxlIGZpbGUpKQorICAgICAgICAg
ICAgIChleHAgLT4KKyAgICAgICAgICAgICAgICAgIChnZXhwIChiZWdpbgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RhdCAodW5nZXhwIGxvY2FsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN5bWxpbmsgKHVuZ2V4cCBsb2NhbCkgKHVuZ2V4cCBvdXRwdXQpKSkpKQorICAgICAg
ICAgICAgIChkcnYgKGdleHAtPmRlcml2YXRpb24gImxvY2FsLWZpbGUiIGV4cCkpKQorICAgICAg
ICAgICAgKG1iZWdpbgorICAgICAgICAgICAgICAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICAg
KGJ1aWx0LWRlcml2YXRpb25zIChsaXN0IGRydikpCisgICAgICAgICAgICAgIChyZXR1cm4KKyAg
ICAgICAgICAgICAgICAoc3RyaW5nPT8KKyAgICAgICAgICAgICAgICAgIChyZWFkbGluayAoZGVy
aXZhdGlvbi0+b3V0cHV0LXBhdGggZHJ2KSkKKyAgICAgICAgICAgICAgICAgIGludGQpKSkpCisg
ICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICglZ3VpbGUtZm9yLWJ1aWxkKSkpCkAgYnVpbGQt
c3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L2g5MWFyZ3hjazcweWhuM2szOHFjbHFyN2IxbWNxa3k3LWxvY2FsLWZpbGUuZHJ2IC0geDg2XzY0
LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xv
Zy9ndWl4L2RydnMvaDkvLzFhcmd4Y2s3MHlobjNrMzhxY2xxcjdiMW1jcWt5Ny1sb2NhbC1maWxl
LmRydi5iejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4
X3dpcC90ZXN0LXRtcC9zdG9yZS9oOTFhcmd4Y2s3MHlobjNrMzhxY2xxcjdiMW1jcWt5Ny1sb2Nh
bC1maWxlLmRydiAtCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGdl
eHAtPmRlcml2YXRpb24sIGNyb3NzLWNvbXBpbGF0aW9uCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50
ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjQyNQpzb3VyY2U6CisgKHRlc3Qt
YXNzZXJ0CisgICAiZ2V4cC0+ZGVyaXZhdGlvbiwgY3Jvc3MtY29tcGlsYXRpb24iCisgICAocnVu
LXdpdGgtc3RvcmUKKyAgICAgJXN0b3JlCisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAgICAg
ICAgICAgICgodGFyZ2V0IC0+ICJtaXBzNjRlbC1saW51eCIpCisgICAgICAgICAgICAgKGV4cCAt
PgorICAgICAgICAgICAgICAgICAgKGdleHAgKGxpc3QgKHVuZ2V4cCBjb3JldXRpbHMpICh1bmdl
eHAgb3V0cHV0KSkpKQorICAgICAgICAgICAgICh4ZHJ2IChnZXhwLT5kZXJpdmF0aW9uICJmb28i
IGV4cCAjOnRhcmdldCB0YXJnZXQpKQorICAgICAgICAgICAgIChyZWZzICgoc3RvcmUtbGlmdCBy
ZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICAoZGVyaXZhdGlvbi1maWxlLW5hbWUgeGRy
dikpKQorICAgICAgICAgICAgICh4Y3UgKHBhY2thZ2UtPmNyb3NzLWRlcml2YXRpb24gY29yZXV0
aWxzIHRhcmdldCkpCisgICAgICAgICAgICAgKGN1IChwYWNrYWdlLT5kZXJpdmF0aW9uIGNvcmV1
dGlscykpKQorICAgICAgICAgICAgKHJldHVybgorICAgICAgICAgICAgICAoYW5kIChtZW1iZXIg
KGRlcml2YXRpb24tZmlsZS1uYW1lIHhjdSkgcmVmcykKKyAgICAgICAgICAgICAgICAgICAobm90
IChtZW1iZXIgKGRlcml2YXRpb24tZmlsZS1uYW1lIGN1KSByZWZzKSkpKSkKKyAgICAgIzpndWls
ZS1mb3ItYnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKYWN0dWFsLXZhbHVlOiAjdApy
ZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC0+ZGVyaXZhdGlvbiwgdW5nZXhwLW5hdGl2ZQps
b2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNj
bTo0MzkKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImdleHAtPmRlcml2YXRpb24sIHVuZ2V4
cC1uYXRpdmUiCisgICAocnVuLXdpdGgtc3RvcmUKKyAgICAgJXN0b3JlCisgICAgIChtbGV0KiAl
c3RvcmUtbW9uYWQKKyAgICAgICAgICAgICgodGFyZ2V0IC0+ICJtaXBzNjRlbC1saW51eCIpCisg
ICAgICAgICAgICAgKGV4cCAtPgorICAgICAgICAgICAgICAgICAgKGdleHAgKGxpc3QgKHVuZ2V4
cC1uYXRpdmUgY29yZXV0aWxzKSAodW5nZXhwIG91dHB1dCkpKSkKKyAgICAgICAgICAgICAoeGRy
diAoZ2V4cC0+ZGVyaXZhdGlvbiAiZm9vIiBleHAgIzp0YXJnZXQgdGFyZ2V0KSkKKyAgICAgICAg
ICAgICAoZHJ2IChnZXhwLT5kZXJpdmF0aW9uICJmb28iIGV4cCkpKQorICAgICAgICAgICAgKHJl
dHVybgorICAgICAgICAgICAgICAoc3RyaW5nPT8KKyAgICAgICAgICAgICAgICAoZGVyaXZhdGlv
bi1maWxlLW5hbWUgZHJ2KQorICAgICAgICAgICAgICAgIChkZXJpdmF0aW9uLWZpbGUtbmFtZSB4
ZHJ2KSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAoJWd1aWxlLWZvci1idWlsZCkp
KQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0
aW9uLCB1bmdleHAgKyB1bmdleHAtbmF0aXZlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjQ0OQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0
CisgICAiZ2V4cC0+ZGVyaXZhdGlvbiwgdW5nZXhwICsgdW5nZXhwLW5hdGl2ZSIKKyAgIChydW4t
d2l0aC1zdG9yZQorICAgICAlc3RvcmUKKyAgICAgKG1sZXQqICVzdG9yZS1tb25hZAorICAgICAg
ICAgICAgKCh0YXJnZXQgLT4gIm1pcHM2NGVsLWxpbnV4IikKKyAgICAgICAgICAgICAoZXhwIC0+
CisgICAgICAgICAgICAgICAgICAoZ2V4cCAobGlzdCAodW5nZXhwLW5hdGl2ZSBjb3JldXRpbHMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5nZXhwIGdsaWJjKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHVuZ2V4cCBvdXRwdXQpKSkpCisgICAgICAgICAgICAgKHhk
cnYgKGdleHAtPmRlcml2YXRpb24gImZvbyIgZXhwICM6dGFyZ2V0IHRhcmdldCkpCisgICAgICAg
ICAgICAgKHJlZnMgKChzdG9yZS1saWZ0IHJlZmVyZW5jZXMpCisgICAgICAgICAgICAgICAgICAg
IChkZXJpdmF0aW9uLWZpbGUtbmFtZSB4ZHJ2KSkpCisgICAgICAgICAgICAgKHhnbGliYyAocGFj
a2FnZS0+Y3Jvc3MtZGVyaXZhdGlvbiBnbGliYyB0YXJnZXQpKQorICAgICAgICAgICAgIChjdSAo
cGFja2FnZS0+ZGVyaXZhdGlvbiBjb3JldXRpbHMpKSkKKyAgICAgICAgICAgIChyZXR1cm4KKyAg
ICAgICAgICAgICAgKGFuZCAobWVtYmVyIChkZXJpdmF0aW9uLWZpbGUtbmFtZSBjdSkgcmVmcykK
KyAgICAgICAgICAgICAgICAgICAobWVtYmVyIChkZXJpdmF0aW9uLWZpbGUtbmFtZSB4Z2xpYmMp
IHJlZnMpKSkpCisgICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICglZ3VpbGUtZm9yLWJ1aWxk
KSkpCmFjdHVhbC12YWx1ZTogKC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dC10bXAvc3RvcmUvaXpxOWxycHY0ejl4YWFzbGs3OWF5aWRjdjVsaXNuOTAtZ2xpYmMtMi4yMi5k
cnYgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9zYWpu
Zno3OW5oZGk0bDhhNDY0YzloaHY0dmYwZ2F5Mi1jb3JldXRpbHMtOC4yNC5kcnYpCnJlc3VsdDog
UEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0aW9uLCB1bmdleHAtbmF0aXZlICsgY29tcG9z
ZWQgZ2V4cHMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dHMvZ2V4cC5zY206NDYzCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0
aW9uLCB1bmdleHAtbmF0aXZlICsgY29tcG9zZWQgZ2V4cHMiCisgICAocnVuLXdpdGgtc3RvcmUK
KyAgICAgJXN0b3JlCisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICgodGFy
Z2V0IC0+ICJtaXBzNjRlbC1saW51eCIpCisgICAgICAgICAgICAgKGV4cDAgLT4gKGdleHAgKGxp
c3QgMSAyICh1bmdleHAgY29yZXV0aWxzKSkpKQorICAgICAgICAgICAgIChleHAgLT4gKGdleHAg
KGxpc3QgMCAodW5nZXhwLW5hdGl2ZSBleHAwKSkpKQorICAgICAgICAgICAgICh4ZHJ2IChnZXhw
LT5kZXJpdmF0aW9uICJmb28iIGV4cCAjOnRhcmdldCB0YXJnZXQpKQorICAgICAgICAgICAgIChk
cnYgKGdleHAtPmRlcml2YXRpb24gImZvbyIgZXhwKSkpCisgICAgICAgICAgICAocmV0dXJuCisg
ICAgICAgICAgICAgIChzdHJpbmc9PworICAgICAgICAgICAgICAgIChkZXJpdmF0aW9uLWZpbGUt
bmFtZSBkcnYpCisgICAgICAgICAgICAgICAgKGRlcml2YXRpb24tZmlsZS1uYW1lIHhkcnYpKSkp
CisgICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICglZ3VpbGUtZm9yLWJ1aWxkKSkpCmFjdHVh
bC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGdleHAtPmRlcml2YXRpb24sIHN0
b3JlIGNvcHkKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dHMvZ2V4cC5zY206NDc0CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0
aW9uLCBzdG9yZSBjb3B5IgorICAgKHJ1bi13aXRoLXN0b3JlCisgICAgICVzdG9yZQorICAgICAo
bGV0ICgoYnVpbGQtb25lCisgICAgICAgICAgICAgKGdleHAgKGNhbGwtd2l0aC1vdXRwdXQtZmls
ZQorICAgICAgICAgICAgICAgICAgICAgKHVuZ2V4cCBvdXRwdXQpCisgICAgICAgICAgICAgICAg
ICAgICAobGFtYmRhIChwb3J0KSAoZGlzcGxheSAiVGhpcyBpcyB0aGUgb25lLiIgcG9ydCkpKSkp
CisgICAgICAgICAgIChidWlsZC10d28KKyAgICAgICAgICAgICAobGFtYmRhIChvbmUpCisgICAg
ICAgICAgICAgICAoZ2V4cCAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgKG1rZGlyICh1
bmdleHAgb3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAodW5nZXhwIG9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo
c3RyaW5nLWFwcGVuZCAodW5nZXhwIG91dHB1dCkgIi9vbmUiKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgKGNhbGwtd2l0aC1vdXRwdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgIChz
dHJpbmctYXBwZW5kICh1bmdleHAgb3V0cHV0KSAiL3R3byIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKGxhbWJkYSAocG9ydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5
ICJUaGlzIGlzIHRoZSBzZWNvbmQgb25lLiIgcG9ydCkpKSkpKSkKKyAgICAgICAgICAgKGJ1aWxk
LWRydgorICAgICAgICAgICAgIChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAgICAgKHVz
ZS1tb2R1bGVzIChndWl4IGJ1aWxkIHN0b3JlLWNvcHkpKQorICAgICAgICAgICAgICAgICAgICAg
KG1rZGlyICh1bmdleHAgb3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgIChwb3B1bGF0ZS1z
dG9yZSAnKCJncmFwaCIpICh1bmdleHAgb3V0cHV0KSkpKSkpCisgICAgICAgKG1sZXQqICVzdG9y
ZS1tb25hZAorICAgICAgICAgICAgICAoKG9uZSAoZ2V4cC0+ZGVyaXZhdGlvbiAib25lIiBidWls
ZC1vbmUpKQorICAgICAgICAgICAgICAgKHR3byAoZ2V4cC0+ZGVyaXZhdGlvbiAidHdvIiAoYnVp
bGQtdHdvIG9uZSkpKQorICAgICAgICAgICAgICAgKGRydiAoZ2V4cC0+ZGVyaXZhdGlvbgorICAg
ICAgICAgICAgICAgICAgICAgICJzdG9yZS1jb3B5IgorICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkLWRydgorICAgICAgICAgICAgICAgICAgICAgICM6cmVmZXJlbmNlcy1ncmFwaHMKKyAgICAg
ICAgICAgICAgICAgICAgICBgKCgiZ3JhcGgiICx0d28pKQorICAgICAgICAgICAgICAgICAgICAg
ICM6bW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICcoKGd1aXggYnVpbGQgc3RvcmUtY29w
eSkgKGd1aXggYnVpbGQgdXRpbHMpKSkpCisgICAgICAgICAgICAgICAob2s/IChidWlsdC1kZXJp
dmF0aW9ucyAobGlzdCBkcnYpKSkKKyAgICAgICAgICAgICAgIChvdXQgLT4gKGRlcml2YXRpb24t
Pm91dHB1dC1wYXRoIGRydikpKQorICAgICAgICAgICAgICAobGV0ICgob25lIChkZXJpdmF0aW9u
LT5vdXRwdXQtcGF0aCBvbmUpKQorICAgICAgICAgICAgICAgICAgICAodHdvIChkZXJpdmF0aW9u
LT5vdXRwdXQtcGF0aCB0d28pKSkKKyAgICAgICAgICAgICAgICAocmV0dXJuCisgICAgICAgICAg
ICAgICAgICAoYW5kIG9rPworICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1leGlzdHM/IChz
dHJpbmctYXBwZW5kIG91dCAiLyIgb25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUt
ZXhpc3RzPyAoc3RyaW5nLWFwcGVuZCBvdXQgIi8iIHR3bykpCisgICAgICAgICAgICAgICAgICAg
ICAgIChmaWxlLWV4aXN0cz8gKHN0cmluZy1hcHBlbmQgb3V0ICIvIiB0d28gIi90d28iKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZz0/CisgICAgICAgICAgICAgICAgICAgICAgICAg
KHJlYWRsaW5rIChzdHJpbmctYXBwZW5kIG91dCAiLyIgdHdvICIvb25lIikpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgb25lKSkpKSkpCisgICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICgl
Z3VpbGUtZm9yLWJ1aWxkKSkpCkAgYnVpbGQtc3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlLzZxaDl2d3NhODZybW5jNHBxYjRmamFqM3lkYml5
MzAxLW1vZHVsZS1pbXBvcnQuZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvNnEvL2g5dndzYTg2cm1u
YzRwcWI0ZmphajN5ZGJpeTMwMS1tb2R1bGUtaW1wb3J0LmRydi5iejIKQCBidWlsZC1zdWNjZWVk
ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS82cWg5
dndzYTg2cm1uYzRwcWI0ZmphajN5ZGJpeTMwMS1tb2R1bGUtaW1wb3J0LmRydiAtCkAgYnVpbGQt
c3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
LzZ5Y2cyc3dsbXJhczh3NjAxbnN6dnBxY2FubGltZmI5LW9uZS5kcnYgLSB4ODZfNjQtbGludXgg
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgv
ZHJ2cy82eS8vY2cyc3dsbXJhczh3NjAxbnN6dnBxY2FubGltZmI5LW9uZS5kcnYuYnoyCkAgYnVp
bGQtc3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAv
c3RvcmUvNnljZzJzd2xtcmFzOHc2MDFuc3p2cHFjYW5saW1mYjktb25lLmRydiAtCkAgYnVpbGQt
c3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L3B4cGJnZnl4eWM4cWd6d3N3cjk1MGhtODRqajA0cGhtLW1vZHVsZS1pbXBvcnQtY29tcGlsZWQu
ZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dC10bXAvdmFyL2xvZy9ndWl4L2RydnMvcHgvL3BiZ2Z5eHljOHFnendzd3I5NTBobTg0amowNHBo
bS1tb2R1bGUtaW1wb3J0LWNvbXBpbGVkLmRydi5iejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9weHBiZ2Z5eHljOHFn
endzd3I5NTBobTg0amowNHBobS1tb2R1bGUtaW1wb3J0LWNvbXBpbGVkLmRydiAtCkAgYnVpbGQt
c3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L2hsejBmNzZ4c25nenhtMDk2c2s1Mm00MjFwM3BrNnZ4LXR3by5kcnYgLSB4ODZfNjQtbGludXgg
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgv
ZHJ2cy9obC8vejBmNzZ4c25nenhtMDk2c2s1Mm00MjFwM3BrNnZ4LXR3by5kcnYuYnoyCkAgYnVp
bGQtc3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAv
c3RvcmUvaGx6MGY3Nnhzbmd6eG0wOTZzazUybTQyMXAzcGs2dngtdHdvLmRydiAtCkAgYnVpbGQt
c3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L21manJ6ZjExcTcwcmMxOWpteXJyNmlpczUxc2oxMTMwLXN0b3JlLWNvcHkuZHJ2IC0geDg2XzY0
LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xv
Zy9ndWl4L2RydnMvbWYvL2pyemYxMXE3MHJjMTlqbXlycjZpaXM1MXNqMTEzMC1zdG9yZS1jb3B5
LmRydi5iejIKYC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3Rv
cmUvOTRscHMwdmtranBjYzRiMHJudzludmptMmp4eThkdzItb25lJyAtPiBgL2hvbWUvc2FwaWVu
dGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS8wbG5yeXE1a20xMjMyYWpxeXo5
YmlwdnA2bnJyOXNjZi1zdG9yZS1jb3B5L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0LXRtcC9zdG9yZS85NGxwczB2a2tqcGNjNGIwcm53OW52am0yanh5OGR3Mi1vbmUnCmAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2ZwNXF2ODQ4
eGRycXBmN2Z4Yng1bThydzQ2d2hxdzJkLXR3by9vbmUnIC0+IGAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlLzBsbnJ5cTVrbTEyMzJhanF5ejliaXB2cDZu
cnI5c2NmLXN0b3JlLWNvcHkvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3Qt
dG1wL3N0b3JlL2ZwNXF2ODQ4eGRycXBmN2Z4Yng1bThydzQ2d2hxdzJkLXR3by9vbmUnCmAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2ZwNXF2ODQ4eGRy
cXBmN2Z4Yng1bThydzQ2d2hxdzJkLXR3by90d28nIC0+IGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlLzBsbnJ5cTVrbTEyMzJhanF5ejliaXB2cDZucnI5
c2NmLXN0b3JlLWNvcHkvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1w
L3N0b3JlL2ZwNXF2ODQ4eGRycXBmN2Z4Yng1bThydzQ2d2hxdzJkLXR3by90d28nCkAgYnVpbGQt
c3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3Rv
cmUvbWZqcnpmMTFxNzByYzE5am15cnI2aWlzNTFzajExMzAtc3RvcmUtY29weS5kcnYgLQphY3R1
YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBpbXBvcnRlZC1maWxlcwpsb2Nh
dGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo1
MDkKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImltcG9ydGVkLWZpbGVzIgorICAgKHJ1bi13
aXRoLXN0b3JlCisgICAgICVzdG9yZQorICAgICAobWxldCogJXN0b3JlLW1vbmFkCisgICAgICAg
ICAgICAoKGZpbGVzIC0+CisgICAgICAgICAgICAgICAgICAgIGAoKCJ4IgorICAgICAgICAgICAg
ICAgICAgICAgICB1bnF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2gtcGF0aCAl
bG9hZC1wYXRoICJpY2UtOS9xLnNjbSIpKQorICAgICAgICAgICAgICAgICAgICAgICgiYS9iL2Mi
CisgICAgICAgICAgICAgICAgICAgICAgIHVucXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAg
KHNlYXJjaC1wYXRoICVsb2FkLXBhdGggImd1aXgvZGVyaXZhdGlvbnMuc2NtIikpCisgICAgICAg
ICAgICAgICAgICAgICAgKCJwL3EiCisgICAgICAgICAgICAgICAgICAgICAgIHVucXVvdGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRoICVsb2FkLXBhdGggImd1aXguc2NtIikp
CisgICAgICAgICAgICAgICAgICAgICAgKCJwL3oiCisgICAgICAgICAgICAgICAgICAgICAgIHVu
cXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRoICVsb2FkLXBhdGggImd1
aXgvc3RvcmUuc2NtIikpKSkKKyAgICAgICAgICAgICAoZHJ2IChpbXBvcnRlZC1maWxlcyBmaWxl
cykpKQorICAgICAgICAgICAgKG1iZWdpbgorICAgICAgICAgICAgICAlc3RvcmUtbW9uYWQKKyAg
ICAgICAgICAgICAgKGJ1aWx0LWRlcml2YXRpb25zIChsaXN0IGRydikpCisgICAgICAgICAgICAg
IChsZXQgKChkaXIgKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGRydikpKQorICAgICAgICAgICAg
ICAgIChyZXR1cm4KKyAgICAgICAgICAgICAgICAgIChldmVyeSAobWF0Y2gtbGFtYmRhCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoKHBhdGggLiBzb3VyY2UpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGVxdWFsPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwt
d2l0aC1pbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmct
YXBwZW5kIGRpciAiLyIgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
LWJ5dGV2ZWN0b3ItYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0
aC1pbnB1dC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQtYnl0ZXZlY3Rvci1hbGwpKSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsZXMpKSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAor
ICAgICAoJWd1aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS8xMzVrZzk4NnpsMm4yM3dnbmF5eGlr
NXpiN2s5M2szYi1maWxlLWltcG9ydC5kcnYgLSB4ODZfNjQtbGludXggL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2cy8xMy8vNWtnOTg2
emwybjIzd2duYXl4aWs1emI3azkzazNiLWZpbGUtaW1wb3J0LmRydi5iejIKQCBidWlsZC1zdWNj
ZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS8x
MzVrZzk4NnpsMm4yM3dnbmF5eGlrNXpiN2s5M2szYi1maWxlLWltcG9ydC5kcnYgLQphY3R1YWwt
dmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLW1vZHVsZXMgJiB1bmdleHAK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5z
Y206NTI5CnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAgImdleHAtbW9kdWxlcyAmIHVuZ2V4cCIK
KyAgICcoKGJhcikgKGZvbykpCisgICAoKEBAIChndWl4IGdleHApIGdleHAtbW9kdWxlcykKKyAg
ICAoZ2V4cCAoZm9vICh1bmdleHAKKyAgICAgICAgICAgICAgICAgKHdpdGgtaW1wb3J0ZWQtbW9k
dWxlcyAnKChmb28pKSAoZ2V4cCArKSkpCisgICAgICAgICAgICAgICAodW5nZXhwLW5hdGl2ZQor
ICAgICAgICAgICAgICAgICAod2l0aC1pbXBvcnRlZC1tb2R1bGVzICcoKGJhcikpIChnZXhwIC0p
KSkpKSkpCmV4cGVjdGVkLXZhbHVlOiAoKGJhcikgKGZvbykpCmFjdHVhbC12YWx1ZTogKChiYXIp
IChmb28pKQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC1tb2R1bGVzICYgdW5nZXhwLXNw
bGljaW5nCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3Rz
L2dleHAuc2NtOjUzNQpzb3VyY2U6CisgKHRlc3QtZXF1YWwKKyAgICJnZXhwLW1vZHVsZXMgJiB1
bmdleHAtc3BsaWNpbmciCisgICAnKChmb28pIChiYXIpKQorICAgKChAQCAoZ3VpeCBnZXhwKSBn
ZXhwLW1vZHVsZXMpCisgICAgKGdleHAgKGZvbyAodW5nZXhwLXNwbGljaW5nCisgICAgICAgICAg
ICAgICAgIChsaXN0ICh3aXRoLWltcG9ydGVkLW1vZHVsZXMgJygoZm9vKSkgKGdleHAgKykpCisg
ICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWltcG9ydGVkLW1vZHVsZXMgJygoYmFyKSkgKGdl
eHAgLSkpKSkpKSkpCmV4cGVjdGVkLXZhbHVlOiAoKGZvbykgKGJhcikpCmFjdHVhbC12YWx1ZTog
KChmb28pIChiYXIpKQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC0+ZGVyaXZhdGlvbiAj
Om1vZHVsZXMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dHMvZ2V4cC5zY206NTQxCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0
aW9uICM6bW9kdWxlcyIKKyAgIChydW4td2l0aC1zdG9yZQorICAgICAlc3RvcmUKKyAgICAgKG1s
ZXQqICVzdG9yZS1tb25hZAorICAgICAgICAgICAgKChidWlsZCAtPgorICAgICAgICAgICAgICAg
ICAgICAoZ2V4cCAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlLW1vZHVs
ZXMgKGd1aXggYnVpbGQgdXRpbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChta2Rp
ci1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodW5nZXhwIG91dHB1dCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi9ndWlsZS9ndWl4L25peCIpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICN0KSkpCisgICAgICAgICAgICAgKGRydiAoZ2V4cC0+ZGVyaXZhdGlvbgorICAg
ICAgICAgICAgICAgICAgICAidGVzdC13aXRoLW1vZHVsZXMiCisgICAgICAgICAgICAgICAgICAg
IGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICM6bW9kdWxlcworICAgICAgICAgICAgICAgICAg
ICAnKChndWl4IGJ1aWxkIHV0aWxzKSkpKSkKKyAgICAgICAgICAgIChtYmVnaW4KKyAgICAgICAg
ICAgICAgJXN0b3JlLW1vbmFkCisgICAgICAgICAgICAgIChidWlsdC1kZXJpdmF0aW9ucyAobGlz
dCBkcnYpKQorICAgICAgICAgICAgICAobGV0KiAoKHAgKGRlcml2YXRpb24tPm91dHB1dC1wYXRo
IGRydikpCisgICAgICAgICAgICAgICAgICAgICAocyAoc3RhdCAoc3RyaW5nLWFwcGVuZCBwICIv
Z3VpbGUvZ3VpeC9uaXgiKSkpKQorICAgICAgICAgICAgICAgIChyZXR1cm4gKGVxPyAoc3RhdDp0
eXBlIHMpICdkaXJlY3RvcnkpKSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAoJWd1
aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS82bHFwN2Y5NjR6Yml2aWluaTIwN2JsZnc0M2JjcDZq
ay10ZXN0LXdpdGgtbW9kdWxlcy5kcnYgLSB4ODZfNjQtbGludXggL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1aXgvZHJ2cy82bC8vcXA3Zjk2NHpi
aXZpaW5pMjA3YmxmdzQzYmNwNmprLXRlc3Qtd2l0aC1tb2R1bGVzLmRydi5iejIKQCBidWlsZC1z
dWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9y
ZS82bHFwN2Y5NjR6Yml2aWluaTIwN2JsZnc0M2JjcDZqay10ZXN0LXdpdGgtbW9kdWxlcy5kcnYg
LQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0
aW9uICYgd2l0aC1pbXBvcnRlZC1tb2R1bGVzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjU1NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0
CisgICAiZ2V4cC0+ZGVyaXZhdGlvbiAmIHdpdGgtaW1wb3J0ZWQtbW9kdWxlcyIKKyAgIChydW4t
d2l0aC1zdG9yZQorICAgICAlc3RvcmUKKyAgICAgKG1sZXQqICVzdG9yZS1tb25hZAorICAgICAg
ICAgICAgKChidWlsZCAtPgorICAgICAgICAgICAgICAgICAgICAod2l0aC1pbXBvcnRlZC1tb2R1
bGVzCisgICAgICAgICAgICAgICAgICAgICAgJygoZ3VpeCBidWlsZCB1dGlscykpCisgICAgICAg
ICAgICAgICAgICAgICAgKGdleHAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodXNlLW1vZHVsZXMgKGd1aXggYnVpbGQgdXRpbHMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG1rZGlyLXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu
Zy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5nZXhwIG91dHB1
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2d1aWxlL2d1aXgvbml4Iikp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdCkpKSkKKyAgICAgICAgICAgICAoZHJ2
IChnZXhwLT5kZXJpdmF0aW9uICJ0ZXN0LXdpdGgtbW9kdWxlcyIgYnVpbGQpKSkKKyAgICAgICAg
ICAgIChtYmVnaW4KKyAgICAgICAgICAgICAgJXN0b3JlLW1vbmFkCisgICAgICAgICAgICAgIChi
dWlsdC1kZXJpdmF0aW9ucyAobGlzdCBkcnYpKQorICAgICAgICAgICAgICAobGV0KiAoKHAgKGRl
cml2YXRpb24tPm91dHB1dC1wYXRoIGRydikpCisgICAgICAgICAgICAgICAgICAgICAocyAoc3Rh
dCAoc3RyaW5nLWFwcGVuZCBwICIvZ3VpbGUvZ3VpeC9uaXgiKSkpKQorICAgICAgICAgICAgICAg
IChyZXR1cm4gKGVxPyAoc3RhdDp0eXBlIHMpICdkaXJlY3RvcnkpKSkpKQorICAgICAjOmd1aWxl
LWZvci1idWlsZAorICAgICAoJWd1aWxlLWZvci1idWlsZCkpKQphY3R1YWwtdmFsdWU6ICN0CnJl
c3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0aW9uICYgbmVzdGVkIHdpdGgtaW1w
b3J0ZWQtbW9kdWxlcwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0cy9nZXhwLnNjbTo1NzAKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImdleHAtPmRl
cml2YXRpb24gJiBuZXN0ZWQgd2l0aC1pbXBvcnRlZC1tb2R1bGVzIgorICAgKHJ1bi13aXRoLXN0
b3JlCisgICAgICVzdG9yZQorICAgICAobWxldCogJXN0b3JlLW1vbmFkCisgICAgICAgICAgICAo
KGJ1aWxkMQorICAgICAgICAgICAgICAgLT4KKyAgICAgICAgICAgICAgICh3aXRoLWltcG9ydGVk
LW1vZHVsZXMKKyAgICAgICAgICAgICAgICAgJygoZ3VpeCBidWlsZCB1dGlscykpCisgICAgICAg
ICAgICAgICAgIChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICh1c2UtbW9k
dWxlcyAoZ3VpeCBidWlsZCB1dGlscykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKG1rZGly
LXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICh1bmdleHAgb3V0
cHV0KSAiL2d1aWxlL2d1aXgvbml4IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgI3QpKSkp
CisgICAgICAgICAgICAgKGJ1aWxkMgorICAgICAgICAgICAgICAgLT4KKyAgICAgICAgICAgICAg
ICh3aXRoLWltcG9ydGVkLW1vZHVsZXMKKyAgICAgICAgICAgICAgICAgJygoZ3VpeCBidWlsZCBi
b3VybmlzaCkpCisgICAgICAgICAgICAgICAgIChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICh1c2UtbW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aXgg
YnVpbGQgYm91cm5pc2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtIGJhc2Ug
Y29tcGlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVuZ2V4cC1uYXRpdmUgYnVpbGQx
KQorICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICh1bmdleHAgb3V0cHV0KSAiL2Ii
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocG9ydCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHdyaXRlIChyZWFkLWFuZC1jb21waWxlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyAiY2QgL2ZvbyIpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6ZnJvbQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAlYm91cm5pc2gtbGFuZ3VhZ2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp0bworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2NoZW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9ydCkpKSkpKSkKKyAgICAgICAgICAgICAoZHJ2IChnZXhwLT5kZXJpdmF0aW9uICJ0ZXN0
LXdpdGgtbW9kdWxlcyIgYnVpbGQyKSkpCisgICAgICAgICAgICAobWJlZ2luCisgICAgICAgICAg
ICAgICVzdG9yZS1tb25hZAorICAgICAgICAgICAgICAoYnVpbHQtZGVyaXZhdGlvbnMgKGxpc3Qg
ZHJ2KSkKKyAgICAgICAgICAgICAgKGxldCogKChwIChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBk
cnYpKQorICAgICAgICAgICAgICAgICAgICAgKHMgKHN0YXQgKHN0cmluZy1hcHBlbmQgcCAiL2d1
aWxlL2d1aXgvbml4IikpKQorICAgICAgICAgICAgICAgICAgICAgKGIgKHN0cmluZy1hcHBlbmQg
cCAiL2IiKSkpCisgICAgICAgICAgICAgICAgKHJldHVybgorICAgICAgICAgICAgICAgICAgKGFu
ZCAoZXE/IChzdGF0OnR5cGUgcykgJ2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAg
KGVxdWFsPworICAgICAgICAgICAgICAgICAgICAgICAgICcoY2hkaXIgIi9mb28iKQorICAgICAg
ICAgICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBiIHJlYWQpKSkpKSkpCisg
ICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICglZ3VpbGUtZm9yLWJ1aWxkKSkpCkAgYnVpbGQt
c3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L3IzaWNzYzhya2t4NDJncXljc2kyazQzcWRmamw1YTh6LW1vZHVsZS1pbXBvcnQuZHJ2IC0geDg2
XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFy
L2xvZy9ndWl4L2RydnMvcjMvL2ljc2M4cmtreDQyZ3F5Y3NpMms0M3FkZmpsNWE4ei1tb2R1bGUt
aW1wb3J0LmRydi5iejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9yM2ljc2M4cmtreDQyZ3F5Y3NpMms0M3FkZmpsNWE4
ei1tb2R1bGUtaW1wb3J0LmRydiAtCkAgYnVpbGQtc3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3doN2FwaWhyYzgyY3AyOGFybTJuNnhmeGN4
NjEyNXpjLW1vZHVsZS1pbXBvcnQtY29tcGlsZWQuZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvd2gv
LzdhcGlocmM4MmNwMjhhcm0ybjZ4ZnhjeDYxMjV6Yy1tb2R1bGUtaW1wb3J0LWNvbXBpbGVkLmRy
di5iejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0LXRtcC9zdG9yZS93aDdhcGlocmM4MmNwMjhhcm0ybjZ4ZnhjeDYxMjV6Yy1tb2R1bGUt
aW1wb3J0LWNvbXBpbGVkLmRydiAtCkAgYnVpbGQtc3RhcnRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3FtcXNoOHcxYmQ4cGJ4cnJtYzJrN3ZpeXlm
ZG0yanpiLXRlc3Qtd2l0aC1tb2R1bGVzLmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBpZW50
ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzL3FtLy9xc2g4
dzFiZDhwYnhycm1jMms3dml5eWZkbTJqemItdGVzdC13aXRoLW1vZHVsZXMuZHJ2LmJ6MgpAIGJ1
aWxkLXN1Y2NlZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1w
L3N0b3JlL3FtcXNoOHcxYmQ4cGJ4cnJtYzJrN3ZpeXlmZG0yanpiLXRlc3Qtd2l0aC1tb2R1bGVz
LmRydiAtCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGdleHAtPmRl
cml2YXRpb24gIzpyZWZlcmVuY2VzLWdyYXBocwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo1OTkKc291cmNlOgorICh0ZXN0LWFzc2Vy
dAorICAgImdleHAtPmRlcml2YXRpb24gIzpyZWZlcmVuY2VzLWdyYXBocyIKKyAgIChydW4td2l0
aC1zdG9yZQorICAgICAlc3RvcmUKKyAgICAgKG1sZXQqICVzdG9yZS1tb25hZAorICAgICAgICAg
ICAgKChvbmUgKHRleHQtZmlsZSAib25lIiAocmFuZG9tLXRleHQpKSkKKyAgICAgICAgICAgICAo
dHdvIChnZXhwLT5kZXJpdmF0aW9uCisgICAgICAgICAgICAgICAgICAgICJ0d28iCisgICAgICAg
ICAgICAgICAgICAgIChnZXhwIChzeW1saW5rICh1bmdleHAgb25lKSAodW5nZXhwIG91dHB1dCAi
Y2hib3VpYiIpKSkpKQorICAgICAgICAgICAgIChidWlsZCAtPgorICAgICAgICAgICAgICAgICAg
ICAod2l0aC1pbXBvcnRlZC1tb2R1bGVzCisgICAgICAgICAgICAgICAgICAgICAgJygoZ3VpeCBi
dWlsZCBzdG9yZS1jb3B5KSAoZ3VpeCBidWlsZCB1dGlscykpCisgICAgICAgICAgICAgICAgICAg
ICAgKGdleHAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlLW1vZHVs
ZXMgKGd1aXggYnVpbGQgc3RvcmUtY29weSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAod2l0aC1vdXRwdXQtdG8tZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dW5nZXhwIG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZSAoY2FsbC13aXRoLWlu
cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3Vp
bGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC1yZWZl
cmVuY2UtZ3JhcGgpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aC1vdXRw
dXQtdG8tZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5nZXhwIG91dHB1
dCAib25lIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZSAoY2FsbC13aXRoLWlucHV0LWZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25lIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQtcmVmZXJlbmNlLWdy
YXBoKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtb3V0cHV0LXRvLWZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuZ2V4cCBvdXRwdXQgInR3byIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAod3JpdGUgKGNhbGwtd2l0aC1pbnB1dC1maWxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3byIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkLXJlZmVyZW5jZS1ncmFwaCkpKSkp
KSkpCisgICAgICAgICAgICAgKGRydiAoZ2V4cC0+ZGVyaXZhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAicmVmLWdyYXBocyIKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQKKyAgICAgICAgICAg
ICAgICAgICAgIzpyZWZlcmVuY2VzLWdyYXBocworICAgICAgICAgICAgICAgICAgICBgKCgib25l
IiAsb25lKQorICAgICAgICAgICAgICAgICAgICAgICgidHdvIiAsdHdvICJjaGJvdWliIikKKyAg
ICAgICAgICAgICAgICAgICAgICAoImd1aWxlIiAsJWJvb3RzdHJhcC1ndWlsZSkpKSkKKyAgICAg
ICAgICAgICAob2s/IChidWlsdC1kZXJpdmF0aW9ucyAobGlzdCBkcnYpKSkKKyAgICAgICAgICAg
ICAoZ3VpbGUtZHJ2CisgICAgICAgICAgICAgICAocGFja2FnZS0+ZGVyaXZhdGlvbiAlYm9vdHN0
cmFwLWd1aWxlKSkKKyAgICAgICAgICAgICAoYmFzaCAoaW50ZXJuZWQtZmlsZQorICAgICAgICAg
ICAgICAgICAgICAgKHNlYXJjaC1ib290c3RyYXAtYmluYXJ5CisgICAgICAgICAgICAgICAgICAg
ICAgICJiYXNoIgorICAgICAgICAgICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkKKyAg
ICAgICAgICAgICAgICAgICAgICJiYXNoIgorICAgICAgICAgICAgICAgICAgICAgIzpyZWN1cnNp
dmU/CisgICAgICAgICAgICAgICAgICAgICAjdCkpCisgICAgICAgICAgICAgKGctb25lIC0+IChk
ZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBkcnYgIm9uZSIpKQorICAgICAgICAgICAgIChnLXR3byAt
PiAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZHJ2ICJ0d28iKSkKKyAgICAgICAgICAgICAoZy1n
dWlsZSAtPiAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZHJ2KSkpCisgICAgICAgICAgICAocmV0
dXJuCisgICAgICAgICAgICAgIChhbmQgb2s/CisgICAgICAgICAgICAgICAgICAgKGVxdWFsPwor
ICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGctb25lIHJlYWQpCisg
ICAgICAgICAgICAgICAgICAgICAobGlzdCBvbmUpKQorICAgICAgICAgICAgICAgICAgIChsc2V0
PSBzdHJpbmc9PworICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLWlucHV0LWZp
bGUgZy10d28gcmVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qgb25lCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCB0d28g
ImNoYm91aWIiKSkpCisgICAgICAgICAgICAgICAgICAgKGxzZXQ9IHN0cmluZz0/CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBnLWd1aWxlIHJlYWQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0aCBn
dWlsZS1kcnYpIGJhc2gpKSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAoJWd1aWxl
LWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0LXRtcC9zdG9yZS95aTBuaWc3NHluYnpqbTQ3ZnJkNHB2Z2wwaG1xODB3NS10
d28uZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMveWkvLzBuaWc3NHluYnpqbTQ3ZnJkNHB2Z2wwaG1x
ODB3NS10d28uZHJ2LmJ6MgpAIGJ1aWxkLXN1Y2NlZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3lpMG5pZzc0eW5iemptNDdmcmQ0cHZnbDBobXE4
MHc1LXR3by5kcnYgLQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0LXRtcC9zdG9yZS80aXdrbTBndzRxaGhubjZ4YXpzZ254N2xoYzZpd3phbS1y
ZWYtZ3JhcGhzLmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1
aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzLzRpLy93a20wZ3c0cWhobm42eGF6c2du
eDdsaGM2aXd6YW0tcmVmLWdyYXBocy5kcnYuYnoyCkAgYnVpbGQtc3VjY2VlZGVkIC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvNGl3a20wZ3c0cWhobm42
eGF6c2dueDdsaGM2aXd6YW0tcmVmLWdyYXBocy5kcnYgLQphY3R1YWwtdmFsdWU6ICN0CnJlc3Vs
dDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0aW9uICM6YWxsb3dlZC1yZWZlcmVuY2Vz
CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAu
c2NtOjY0Mwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZ2V4cC0+ZGVyaXZhdGlvbiAjOmFs
bG93ZWQtcmVmZXJlbmNlcyIKKyAgIChydW4td2l0aC1zdG9yZQorICAgICAlc3RvcmUKKyAgICAg
KG1sZXQgJXN0b3JlLW1vbmFkCisgICAgICAgICAgICgoZHJ2IChnZXhwLT5kZXJpdmF0aW9uCisg
ICAgICAgICAgICAgICAgICAgImFsbG93ZWQtcmVmcyIKKyAgICAgICAgICAgICAgICAgICAoZ2V4
cCAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChta2RpciAodW5nZXhwIG91dHB1
dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hkaXIgKHVuZ2V4cCBvdXRwdXQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsgKHVuZ2V4cCBvdXRwdXQpICJzZWxm
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW1saW5rICh1bmdleHAgJWJvb3RzdHJh
cC1ndWlsZSkgImd1aWxlIikpKQorICAgICAgICAgICAgICAgICAgICM6YWxsb3dlZC1yZWZlcmVu
Y2VzCisgICAgICAgICAgICAgICAgICAgKGxpc3QgIm91dCIgJWJvb3RzdHJhcC1ndWlsZSkpKSkK
KyAgICAgICAgICAgKGJ1aWx0LWRlcml2YXRpb25zIChsaXN0IGRydikpKQorICAgICAjOmd1aWxl
LWZvci1idWlsZAorICAgICAoJWd1aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9xcjNwbGFuMHp4
djYzN2Q1MmY4a2c3cGljaXJtZG1tYy1hbGxvd2VkLXJlZnMuZHJ2IC0geDg2XzY0LWxpbnV4IC9o
b21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2Ry
dnMvcXIvLzNwbGFuMHp4djYzN2Q1MmY4a2c3cGljaXJtZG1tYy1hbGxvd2VkLXJlZnMuZHJ2LmJ6
MgpAIGJ1aWxkLXN1Y2NlZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3QtdG1wL3N0b3JlL3FyM3BsYW4wenh2NjM3ZDUyZjhrZzdwaWNpcm1kbW1jLWFsbG93ZWQtcmVm
cy5kcnYgLQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5k
ZXJpdmF0aW9uICM6YWxsb3dlZC1yZWZlcmVuY2VzLCBzcGVjaWZpYyBvdXRwdXQKbG9jYXRpb246
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206NjU1CnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0aW9uICM6YWxsb3dlZC1yZWZl
cmVuY2VzLCBzcGVjaWZpYyBvdXRwdXQiCisgICAocnVuLXdpdGgtc3RvcmUKKyAgICAgJXN0b3Jl
CisgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICgoaW4gKGdleHAtPmRlcml2
YXRpb24KKyAgICAgICAgICAgICAgICAgICAidGhpbmciCisgICAgICAgICAgICAgICAgICAgKGdl
eHAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBvdXRw
dXQgIm9rIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBvdXRw
dXQgIm5vdC1vayIpKSkpKSkKKyAgICAgICAgICAgICAoZHJ2IChnZXhwLT5kZXJpdmF0aW9uCisg
ICAgICAgICAgICAgICAgICAgICJhbGxvd2VkLXJlZnMiCisgICAgICAgICAgICAgICAgICAgIChn
ZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwayAodW5nZXhwIGluICJu
b3Qtb2siKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBvdXRw
dXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGRpciAodW5nZXhwIG91dHB1dCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsgKHVuZ2V4cCBvdXRwdXQpICJz
ZWxmIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ltbGluayAodW5nZXhwIGluICJv
ayIpICJvayIpKSkKKyAgICAgICAgICAgICAgICAgICAgIzphbGxvd2VkLXJlZmVyZW5jZXMKKyAg
ICAgICAgICAgICAgICAgICAgKGxpc3QgIm91dCIgKGdleHAtaW5wdXQgaW4gIm9rIikpKSkpCisg
ICAgICAgICAgICAoYnVpbHQtZGVyaXZhdGlvbnMgKGxpc3QgZHJ2KSkpCisgICAgICM6Z3VpbGUt
Zm9yLWJ1aWxkCisgICAgICglZ3VpbGUtZm9yLWJ1aWxkKSkpCkAgYnVpbGQtc3RhcnRlZCAvaG9t
ZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3lrOTdidjdyY2J6
bHYzajc5YjltMnZyOHY3aDk5aHI3LXRoaW5nLmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBp
ZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzL3lrLy85
N2J2N3JjYnpsdjNqNzliOW0ydnI4djdoOTlocjctdGhpbmcuZHJ2LmJ6MgpAIGJ1aWxkLXN1Y2Nl
ZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL3lr
OTdidjdyY2J6bHYzajc5YjltMnZyOHY3aDk5aHI3LXRoaW5nLmRydiAtCkAgYnVpbGQtc3RhcnRl
ZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlL2Jmcmo0
cTE0cXhjNWJ2c3kxOTM4cWk2cmdiMHh6c3F5LWFsbG93ZWQtcmVmcy5kcnYgLSB4ODZfNjQtbGlu
dXggL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC92YXIvbG9nL2d1
aXgvZHJ2cy9iZi8vcmo0cTE0cXhjNWJ2c3kxOTM4cWk2cmdiMHh6c3F5LWFsbG93ZWQtcmVmcy5k
cnYuYnoyCgo7OzsgKCIvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1w
L3N0b3JlL2hsMmNtZDUxM2tuOXNhNnBiZjR6cjNrN3NhNzhxNWZmLXRoaW5nLW5vdC1vayIpCkAg
YnVpbGQtc3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10
bXAvc3RvcmUvYmZyajRxMTRxeGM1YnZzeTE5MzhxaTZyZ2IweHpzcXktYWxsb3dlZC1yZWZzLmRy
diAtCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGdleHAtPmRlcml2
YXRpb24gIzphbGxvd2VkLXJlZmVyZW5jZXMsIGRpc2FsbG93ZWQKbG9jYXRpb246IC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206NjcyCnNvdXJjZToKKyAo
dGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0aW9uICM6YWxsb3dlZC1yZWZlcmVuY2VzLCBk
aXNhbGxvd2VkIgorICAgKGxldCAoKGRydiAocnVuLXdpdGgtc3RvcmUKKyAgICAgICAgICAgICAg
ICAlc3RvcmUKKyAgICAgICAgICAgICAgICAoZ2V4cC0+ZGVyaXZhdGlvbgorICAgICAgICAgICAg
ICAgICAgImFsbG93ZWQtcmVmcyIKKyAgICAgICAgICAgICAgICAgIChnZXhwIChiZWdpbgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBvdXRwdXQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY2hkaXIgKHVuZ2V4cCBvdXRwdXQpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3ltbGluayAodW5nZXhwICVib290c3RyYXAtZ3VpbGUpICJndWlsZSIpKSkK
KyAgICAgICAgICAgICAgICAgICM6YWxsb3dlZC1yZWZlcmVuY2VzCisgICAgICAgICAgICAgICAg
ICAnKCkpKSkpCisgICAgIChndWFyZCAoYyAoKG5peC1wcm90b2NvbC1lcnJvcj8gYykgI3QpKQor
ICAgICAgICAgICAgKGJ1aWxkLWRlcml2YXRpb25zICVzdG9yZSAobGlzdCBkcnYpKQorICAgICAg
ICAgICAgI2YpKSkKQCBidWlsZC1zdGFydGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3Vp
eF93aXAvdGVzdC10bXAvc3RvcmUvZjJ3YnM2c2twZ25tbGp2NGNkZHp4MDVnY3gyNmI2bjUtYWxs
b3dlZC1yZWZzLmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1
aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzL2YyLy93YnM2c2twZ25tbGp2NGNkZHp4
MDVnY3gyNmI2bjUtYWxsb3dlZC1yZWZzLmRydi5iejIKb3V0cHV0IChgL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9pbHpxeTZycmx3ZHdzYTkzOWsxejVt
YWlwYTFnMjAyaS1hbGxvd2VkLXJlZnMnKSBpcyBub3QgYWxsb3dlZCB0byByZWZlciB0byBwYXRo
IGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlLzB2eGd2
bHgwM3FzY3Jkczg4czY1aHJzNzBuNWprdzJnLWd1aWxlLWJvb3RzdHJhcC0yLjAnCkAgYnVpbGQt
ZmFpbGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUv
ZjJ3YnM2c2twZ25tbGp2NGNkZHp4MDVnY3gyNmI2bjUtYWxsb3dlZC1yZWZzLmRydiAtIDEgb3V0
cHV0IChgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9p
bHpxeTZycmx3ZHdzYTkzOWsxejVtYWlwYTFnMjAyaS1hbGxvd2VkLXJlZnMnKSBpcyBub3QgYWxs
b3dlZCB0byByZWZlciB0byBwYXRoIGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lw
L3Rlc3QtdG1wL3N0b3JlLzB2eGd2bHgwM3FzY3Jkczg4czY1aHJzNzBuNWprdzJnLWd1aWxlLWJv
b3RzdHJhcC0yLjAnCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGdl
eHAtPmRlcml2YXRpb24gIzpkaXNhbGxvd2VkLXJlZmVyZW5jZXMsIGFsbG93ZWQKbG9jYXRpb246
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206Njg0CnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJnZXhwLT5kZXJpdmF0aW9uICM6ZGlzYWxsb3dlZC1y
ZWZlcmVuY2VzLCBhbGxvd2VkIgorICAgKHJ1bi13aXRoLXN0b3JlCisgICAgICVzdG9yZQorICAg
ICAobWxldCAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgKChkcnYgKGdleHAtPmRlcml2YXRpb24K
KyAgICAgICAgICAgICAgICAgICAiZGlzYWxsb3dlZC1yZWZzIgorICAgICAgICAgICAgICAgICAg
IChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1rZGlyICh1bmdleHAg
b3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGRpciAodW5nZXhwIG91dHB1
dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ltbGluayAodW5nZXhwIG91dHB1dCkg
InNlbGYiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsgKHVuZ2V4cCAlYm9v
dHN0cmFwLWd1aWxlKSAiZ3VpbGUiKSkpCisgICAgICAgICAgICAgICAgICAgIzpkaXNhbGxvd2Vk
LXJlZmVyZW5jZXMKKyAgICAgICAgICAgICAgICAgICAnKCkpKSkKKyAgICAgICAgICAgKGJ1aWx0
LWRlcml2YXRpb25zIChsaXN0IGRydikpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAo
JWd1aWxlLWZvci1idWlsZCkpKQpAIGJ1aWxkLXN0YXJ0ZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9uM2hoY2p6aWduajdjemg1M3NjYndqbTdtY3hh
Mjd5ay1kaXNhbGxvd2VkLXJlZnMuZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRlY2gv
RGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvbjMvL2hoY2p6aWdu
ajdjemg1M3NjYndqbTdtY3hhMjd5ay1kaXNhbGxvd2VkLXJlZnMuZHJ2LmJ6MgpAIGJ1aWxkLXN1
Y2NlZWRlZCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3Jl
L24zaGhjanppZ25qN2N6aDUzc2Nid2ptN21jeGEyN3lrLWRpc2FsbG93ZWQtcmVmcy5kcnYgLQph
Y3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBnZXhwLT5kZXJpdmF0aW9u
ICM6ZGlzYWxsb3dlZC1yZWZlcmVuY2VzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjY5Ngpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0Cisg
ICAiZ2V4cC0+ZGVyaXZhdGlvbiAjOmRpc2FsbG93ZWQtcmVmZXJlbmNlcyIKKyAgIChsZXQgKChk
cnYgKHJ1bi13aXRoLXN0b3JlCisgICAgICAgICAgICAgICAgJXN0b3JlCisgICAgICAgICAgICAg
ICAgKGdleHAtPmRlcml2YXRpb24KKyAgICAgICAgICAgICAgICAgICJkaXNhbGxvd2VkLXJlZnMi
CisgICAgICAgICAgICAgICAgICAoZ2V4cCAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG1rZGlyICh1bmdleHAgb3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNo
ZGlyICh1bmdleHAgb3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsg
KHVuZ2V4cCAlYm9vdHN0cmFwLWd1aWxlKSAiZ3VpbGUiKSkpCisgICAgICAgICAgICAgICAgICAj
OmRpc2FsbG93ZWQtcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgKGxpc3QgJWJvb3RzdHJh
cC1ndWlsZSkpKSkpCisgICAgIChndWFyZCAoYyAoKG5peC1wcm90b2NvbC1lcnJvcj8gYykgI3Qp
KQorICAgICAgICAgICAgKGJ1aWxkLWRlcml2YXRpb25zICVzdG9yZSAobGlzdCBkcnYpKQorICAg
ICAgICAgICAgI2YpKSkKQCBidWlsZC1zdGFydGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgv
Z3VpeF93aXAvdGVzdC10bXAvc3RvcmUveTZoNmkyZDB2YjR3aG44YmZ2eWw1dmZmMTdoOXJzMTkt
ZGlzYWxsb3dlZC1yZWZzLmRydiAtIHg4Nl82NC1saW51eCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3VpeC9kcnZzL3k2Ly9oNmkyZDB2YjR3aG44
YmZ2eWw1dmZmMTdoOXJzMTktZGlzYWxsb3dlZC1yZWZzLmRydi5iejIKb3V0cHV0IChgL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRtcC9zdG9yZS9qejFxMzJuNnF4eXZp
NmRreXdsMDI4eTZmdmRmc2kxay1kaXNhbGxvd2VkLXJlZnMnKSBpcyBub3QgYWxsb3dlZCB0byBy
ZWZlciB0byBwYXRoIGAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1w
L3N0b3JlLzB2eGd2bHgwM3FzY3Jkczg4czY1aHJzNzBuNWprdzJnLWd1aWxlLWJvb3RzdHJhcC0y
LjAnCkAgYnVpbGQtZmFpbGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVz
dC10bXAvc3RvcmUveTZoNmkyZDB2YjR3aG44YmZ2eWw1dmZmMTdoOXJzMTktZGlzYWxsb3dlZC1y
ZWZzLmRydiAtIDEgb3V0cHV0IChgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0LXRtcC9zdG9yZS9qejFxMzJuNnF4eXZpNmRreXdsMDI4eTZmdmRmc2kxay1kaXNhbGxvd2Vk
LXJlZnMnKSBpcyBub3QgYWxsb3dlZCB0byByZWZlciB0byBwYXRoIGAvaG9tZS9zYXBpZW50ZWNo
L0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3N0b3JlLzB2eGd2bHgwM3FzY3Jkczg4czY1aHJz
NzBuNWprdzJnLWd1aWxlLWJvb3RzdHJhcC0yLjAnCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQ
QVNTCgp0ZXN0LW5hbWU6IGdleHAtPnNjcmlwdApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo3MTYKc291cmNlOgorICh0ZXN0LWFzc2Vy
dAorICAgImdleHAtPnNjcmlwdCIKKyAgIChydW4td2l0aC1zdG9yZQorICAgICAlc3RvcmUKKyAg
ICAgKG1sZXQqICVzdG9yZS1tb25hZAorICAgICAgICAgICAgKChuIC0+IChyYW5kb20gKGV4cHQg
MiA1MCkpKQorICAgICAgICAgICAgIChleHAgLT4KKyAgICAgICAgICAgICAgICAgIChnZXhwIChz
eXN0ZW0qCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHVuZ2V4cCAlYm9vdHN0cmFwLWd1aWxlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIvYmluL2d1aWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi1jIgorICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0LT5zdHJpbmcgJyhkaXNw
bGF5IChleHB0ICh1bmdleHAgbikgMikpKSkpKQorICAgICAgICAgICAgIChkcnYgKGdleHAtPnNj
cmlwdAorICAgICAgICAgICAgICAgICAgICAiZ3VpbGUtdGhpbmciCisgICAgICAgICAgICAgICAg
ICAgIGV4cAorICAgICAgICAgICAgICAgICAgICAjOmd1aWxlCisgICAgICAgICAgICAgICAgICAg
ICVib290c3RyYXAtZ3VpbGUpKQorICAgICAgICAgICAgIChvdXQgLT4gKGRlcml2YXRpb24tPm91
dHB1dC1wYXRoIGRydikpCisgICAgICAgICAgICAgKGRvbmUgKGJ1aWx0LWRlcml2YXRpb25zIChs
aXN0IGRydikpKSkKKyAgICAgICAgICAgIChsZXQqICgocGlwZSAob3Blbi1pbnB1dC1waXBlIG91
dCkpCisgICAgICAgICAgICAgICAgICAgKHN0ciAoZ2V0LXN0cmluZy1hbGwgcGlwZSkpKQorICAg
ICAgICAgICAgICAocmV0dXJuCisgICAgICAgICAgICAgICAgKGFuZCAoemVybz8gKGNsb3NlLXBp
cGUgcGlwZSkpCisgICAgICAgICAgICAgICAgICAgICAoPSAoZXhwdCBuIDIpIChzdHJpbmctPm51
bWJlciBzdHIpKSkpKSkKKyAgICAgIzpndWlsZS1mb3ItYnVpbGQKKyAgICAgKCVndWlsZS1mb3It
YnVpbGQpKSkKcmVzdWx0OiBTS0lQCgp0ZXN0LW5hbWU6IHByb2dyYW0tZmlsZQpsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo3MzMKc291
cmNlOgorICh0ZXN0LWFzc2VydAorICAgInByb2dyYW0tZmlsZSIKKyAgIChydW4td2l0aC1zdG9y
ZQorICAgICAlc3RvcmUKKyAgICAgKGxldCogKChuIChyYW5kb20gKGV4cHQgMiA1MCkpKQorICAg
ICAgICAgICAgKGV4cCAod2l0aC1pbXBvcnRlZC1tb2R1bGVzCisgICAgICAgICAgICAgICAgICAg
JygoZ3VpeCBidWlsZCB1dGlscykpCisgICAgICAgICAgICAgICAgICAgKGdleHAgKGJlZ2luCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlLW1vZHVsZXMgKGd1aXggYnVpbGQgdXRpbHMp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXkgKHVuZ2V4cCBuKSkpKSkpCisg
ICAgICAgICAgICAoZmlsZSAocHJvZ3JhbS1maWxlCisgICAgICAgICAgICAgICAgICAgICJwcm9n
cmFtIgorICAgICAgICAgICAgICAgICAgICBleHAKKyAgICAgICAgICAgICAgICAgICAgIzpndWls
ZQorICAgICAgICAgICAgICAgICAgICAlYm9vdHN0cmFwLWd1aWxlKSkpCisgICAgICAgKG1sZXQq
ICVzdG9yZS1tb25hZAorICAgICAgICAgICAgICAoKGRydiAobG93ZXItb2JqZWN0IGZpbGUpKQor
ICAgICAgICAgICAgICAgKG91dCAtPiAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZHJ2KSkpCisg
ICAgICAgICAgICAgIChtYmVnaW4KKyAgICAgICAgICAgICAgICAlc3RvcmUtbW9uYWQKKyAgICAg
ICAgICAgICAgICAoYnVpbHQtZGVyaXZhdGlvbnMgKGxpc3QgZHJ2KSkKKyAgICAgICAgICAgICAg
ICAobGV0KiAoKHBpcGUgKG9wZW4taW5wdXQtcGlwZSBvdXQpKQorICAgICAgICAgICAgICAgICAg
ICAgICAoc3RyIChnZXQtc3RyaW5nLWFsbCBwaXBlKSkpCisgICAgICAgICAgICAgICAgICAocmV0
dXJuCisgICAgICAgICAgICAgICAgICAgIChhbmQgKHplcm8/IChjbG9zZS1waXBlIHBpcGUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICg9IG4gKHN0cmluZy0+bnVtYmVyIHN0cikpKSkpKSkp
CisgICAgICM6Z3VpbGUtZm9yLWJ1aWxkCisgICAgICglZ3VpbGUtZm9yLWJ1aWxkKSkpCnJlc3Vs
dDogU0tJUAoKdGVzdC1uYW1lOiBzY2hlbWUtZmlsZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo3NTAKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgInNjaGVtZS1maWxlIgorICAgKHJ1bi13aXRoLXN0b3JlCisgICAgICVzdG9yZQor
ICAgICAobGV0KiAoKHRleHQgKHBsYWluLWZpbGUgImZvbyIgIkhlbGxvLCB3b3JsZCEiKSkKKyAg
ICAgICAgICAgIChzY2hlbWUKKyAgICAgICAgICAgICAgKHNjaGVtZS1maWxlCisgICAgICAgICAg
ICAgICAgImJhciIKKyAgICAgICAgICAgICAgICAoZ2V4cCAobGlzdCAiZm9vIiAodW5nZXhwIHRl
eHQpKSkpKSkKKyAgICAgICAobWxldCogJXN0b3JlLW1vbmFkCisgICAgICAgICAgICAgICgoZHJ2
IChsb3dlci1vYmplY3Qgc2NoZW1lKSkKKyAgICAgICAgICAgICAgICh0ZXh0IChsb3dlci1vYmpl
Y3QgdGV4dCkpCisgICAgICAgICAgICAgICAob3V0IC0+IChkZXJpdmF0aW9uLT5vdXRwdXQtcGF0
aCBkcnYpKSkKKyAgICAgICAgICAgICAgKG1iZWdpbgorICAgICAgICAgICAgICAgICVzdG9yZS1t
b25hZAorICAgICAgICAgICAgICAgIChidWlsdC1kZXJpdmF0aW9ucyAobGlzdCBkcnYpKQorICAg
ICAgICAgICAgICAgIChtbGV0ICVzdG9yZS1tb25hZAorICAgICAgICAgICAgICAgICAgICAgICgo
cmVmcyAoKHN0b3JlLWxpZnQgcmVmZXJlbmNlcykgb3V0KSkpCisgICAgICAgICAgICAgICAgICAg
ICAgKHJldHVybgorICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXF1YWw/IHJlZnMgKGxp
c3QgdGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbD8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBgKGxpc3QgImZvbyIgLHRleHQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIG91dCByZWFkKSkpKSkpKSkK
KyAgICAgIzpndWlsZS1mb3ItYnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKQCBidWls
ZC1zdGFydGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3Rv
cmUvYzhpbDUwNjFqMHF3YmdqNmxyNXluMTBpdzFncDhqY2gtYmFyLmRydiAtIHg4Nl82NC1saW51
eCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9sb2cvZ3Vp
eC9kcnZzL2M4Ly9pbDUwNjFqMHF3YmdqNmxyNXluMTBpdzFncDhqY2gtYmFyLmRydi5iejIKQCBi
dWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0LXRt
cC9zdG9yZS9jOGlsNTA2MWowcXdiZ2o2bHI1eW4xMGl3MWdwOGpjaC1iYXIuZHJ2IC0KYWN0dWFs
LXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogdGV4dC1maWxlKgpsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo3NjMKc291
cmNlOgorICh0ZXN0LWFzc2VydAorICAgInRleHQtZmlsZSoiCisgICAobGV0ICgocmVmZXJlbmNl
cyAoc3RvcmUtbGlmdCByZWZlcmVuY2VzKSkpCisgICAgIChydW4td2l0aC1zdG9yZQorICAgICAg
ICVzdG9yZQorICAgICAgIChtbGV0KiAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICAgKChkcnYg
KHBhY2thZ2UtPmRlcml2YXRpb24gJWJvb3RzdHJhcC1ndWlsZSkpCisgICAgICAgICAgICAgICAo
Z3VpbGUgLT4gKGRlcml2YXRpb24tPm91dHB1dC1wYXRoIGRydikpCisgICAgICAgICAgICAgICAo
ZmlsZSAodGV4dC1maWxlICJiYXIiICJUaGlzIGlzIGJhci4iKSkKKyAgICAgICAgICAgICAgICh0
ZXh0ICh0ZXh0LWZpbGUqCisgICAgICAgICAgICAgICAgICAgICAgICJmb28iCisgICAgICAgICAg
ICAgICAgICAgICAgICVib290c3RyYXAtZ3VpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIi9i
aW4vZ3VpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAoZ2V4cC1pbnB1dCAlYm9vdHN0cmFw
LWd1aWxlICJvdXQiKQorICAgICAgICAgICAgICAgICAgICAgICAiL2Jpbi9ndWlsZSAiCisgICAg
ICAgICAgICAgICAgICAgICAgIGRydgorICAgICAgICAgICAgICAgICAgICAgICAiL2Jpbi9ndWls
ZSAiCisgICAgICAgICAgICAgICAgICAgICAgIGZpbGUpKQorICAgICAgICAgICAgICAgKGRvbmUg
KGJ1aWx0LWRlcml2YXRpb25zIChsaXN0IHRleHQpKSkKKyAgICAgICAgICAgICAgIChvdXQgLT4g
KGRlcml2YXRpb24tPm91dHB1dC1wYXRoIHRleHQpKQorICAgICAgICAgICAgICAgKHJlZnMgKHJl
ZmVyZW5jZXMgb3V0KSkpCisgICAgICAgICAgICAgIChyZXR1cm4KKyAgICAgICAgICAgICAgICAo
YW5kIChsc2V0PSBzdHJpbmc9PyByZWZzIChsaXN0IGd1aWxlIGZpbGUpKQorICAgICAgICAgICAg
ICAgICAgICAgKGVxdWFsPworICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLWlucHV0
LWZpbGUgb3V0IGdldC1zdHJpbmctYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n
LWFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgIGd1aWxlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIi9iaW4vZ3VpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgIGd1aWxlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIi9iaW4vZ3VpbGUgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIi9iaW4vZ3VpbGUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGUpKSkpKQorICAgICAgICM6Z3VpbGUtZm9yLWJ1aWxk
CisgICAgICAgKHBhY2thZ2UtZGVyaXZhdGlvbiAlc3RvcmUgJWJvb3RzdHJhcC1ndWlsZSkpKSkK
QCBidWlsZC1zdGFydGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10
bXAvc3RvcmUvaGtuZHhtNWk1bDF6Y3piaWF2cWJrODRxcmRtaWx6NmctZm9vLmRydiAtIHg4Nl82
NC1saW51eCAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3QtdG1wL3Zhci9s
b2cvZ3VpeC9kcnZzL2hrLy9uZHhtNWk1bDF6Y3piaWF2cWJrODRxcmRtaWx6NmctZm9vLmRydi5i
ejIKQCBidWlsZC1zdWNjZWVkZWQgL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0LXRtcC9zdG9yZS9oa25keG01aTVsMXpjemJpYXZxYms4NHFyZG1pbHo2Zy1mb28uZHJ2IC0K
YWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbWl4ZWQtdGV4dC1maWxl
CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAu
c2NtOjc4Nwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAibWl4ZWQtdGV4dC1maWxlIgorICAg
KHJ1bi13aXRoLXN0b3JlCisgICAgICVzdG9yZQorICAgICAobWxldCogJXN0b3JlLW1vbmFkCisg
ICAgICAgICAgICAoKGZpbGUgLT4KKyAgICAgICAgICAgICAgICAgICAobWl4ZWQtdGV4dC1maWxl
CisgICAgICAgICAgICAgICAgICAgICAibWl4ZWQiCisgICAgICAgICAgICAgICAgICAgICAiZXhw
b3J0IFBBVEg9IgorICAgICAgICAgICAgICAgICAgICAgJWJvb3RzdHJhcC1ndWlsZQorICAgICAg
ICAgICAgICAgICAgICAgIi9iaW4iKSkKKyAgICAgICAgICAgICAoZHJ2IChsb3dlci1vYmplY3Qg
ZmlsZSkpCisgICAgICAgICAgICAgKG91dCAtPiAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggZHJ2
KSkKKyAgICAgICAgICAgICAoZ3VpbGUtZHJ2CisgICAgICAgICAgICAgICAocGFja2FnZS0+ZGVy
aXZhdGlvbiAlYm9vdHN0cmFwLWd1aWxlKSkKKyAgICAgICAgICAgICAoZ3VpbGUgLT4gKGRlcml2
YXRpb24tPm91dHB1dC1wYXRoIGd1aWxlLWRydikpKQorICAgICAgICAgICAgKG1iZWdpbgorICAg
ICAgICAgICAgICAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICAgKGJ1aWx0LWRlcml2YXRpb25z
IChsaXN0IGRydikpCisgICAgICAgICAgICAgIChtbGV0ICVzdG9yZS1tb25hZAorICAgICAgICAg
ICAgICAgICAgICAoKHJlZnMgKChzdG9yZS1saWZ0IHJlZmVyZW5jZXMpIG91dCkpKQorICAgICAg
ICAgICAgICAgICAgICAocmV0dXJuCisgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoc3RyaW5n
PT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgImV4cG9ydCBQ
QVRIPSIgZ3VpbGUgIi9iaW4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC13
aXRoLWlucHV0LWZpbGUgb3V0IGdldC1zdHJpbmctYWxsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChlcXVhbD8gcmVmcyAobGlzdCBndWlsZSkpKSkpKSkKKyAgICAgIzpndWlsZS1mb3It
YnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKQCBidWlsZC1zdGFydGVkIC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvaDNjbjFjZmR6cHNiem45
Y3lmZzQ3amJzODc0NGdtd2YtbWl4ZWQuZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvaDMvL2NuMWNm
ZHpwc2J6bjljeWZnNDdqYnM4NzQ0Z213Zi1taXhlZC5kcnYuYnoyCkAgYnVpbGQtc3VjY2VlZGVk
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvaDNjbjFj
ZmR6cHNiem45Y3lmZzQ3amJzODc0NGdtd2YtbWl4ZWQuZHJ2IC0KYWN0dWFsLXZhbHVlOiAjdApy
ZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ2V4cC0+ZGVyaXZhdGlvbiB2cy4gJWN1cnJlbnQtdGFy
Z2V0LXN5c3RlbQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0cy9nZXhwLnNjbTo4MDIKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImdleHAtPmRlcml2
YXRpb24gdnMuICVjdXJyZW50LXRhcmdldC1zeXN0ZW0iCisgICAobGV0ICgobXZhbCAoZ2V4cC0+
ZGVyaXZhdGlvbgorICAgICAgICAgICAgICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAoZ2V4
cCAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAobWtkaXIgKHVuZ2V4cCBvdXRwdXQp
KQorICAgICAgICAgICAgICAgICAgICAgICAgIChmb28gKHVuZ2V4cC1uYXRpdmUgZ251LW1ha2Up
KSkpCisgICAgICAgICAgICAgICAgICM6dGFyZ2V0CisgICAgICAgICAgICAgICAgICNmKSkpCisg
ICAgIChwYXJhbWV0ZXJpemUKKyAgICAgICAoKCVjdXJyZW50LXRhcmdldC1zeXN0ZW0gImZvb29v
byIpKQorICAgICAgIChkZXJpdmF0aW9uPyAocnVuLXdpdGgtc3RvcmUgJXN0b3JlIG12YWwpKSkp
KQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBsb3dlci1vYmplY3QK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5z
Y206ODEzCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJsb3dlci1vYmplY3QiCisgICAocnVu
LXdpdGgtc3RvcmUKKyAgICAgJXN0b3JlCisgICAgIChtbGV0ICVzdG9yZS1tb25hZAorICAgICAg
ICAgICAoKGRydjEgKGxvd2VyLW9iamVjdCAlYm9vdHN0cmFwLWd1aWxlKSkKKyAgICAgICAgICAg
IChkcnYyIChsb3dlci1vYmplY3QgKHBhY2thZ2Utc291cmNlIGNvcmV1dGlscykpKQorICAgICAg
ICAgICAgKGl0ZW0gKGxvd2VyLW9iamVjdCAocGxhaW4tZmlsZSAiZm9vIiAiSGVsbG8hIikpKSkK
KyAgICAgICAgICAgKHJldHVybgorICAgICAgICAgICAgIChhbmQgKGRlcml2YXRpb24/IGRydjEp
CisgICAgICAgICAgICAgICAgICAoZGVyaXZhdGlvbj8gZHJ2MikKKyAgICAgICAgICAgICAgICAg
IChzdG9yZS1wYXRoPyBpdGVtKSkpKQorICAgICAjOmd1aWxlLWZvci1idWlsZAorICAgICAoJWd1
aWxlLWZvci1idWlsZCkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1l
OiBsb3dlci1vYmplY3QsIGNvbXB1dGVkLWZpbGUKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gv
RGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvZ2V4cC5zY206ODIwCnNvdXJjZToKKyAodGVzdC1hc3Nl
cnQKKyAgICJsb3dlci1vYmplY3QsIGNvbXB1dGVkLWZpbGUiCisgICAocnVuLXdpdGgtc3RvcmUK
KyAgICAgJXN0b3JlCisgICAgIChsZXQqICgodGV4dCAocGxhaW4tZmlsZSAiZm9vIiAiSGVsbG8h
IikpCisgICAgICAgICAgICAoZXhwIChnZXhwIChiZWdpbgorICAgICAgICAgICAgICAgICAgICAg
ICAgIChta2RpciAodW5nZXhwIG91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN5
bWxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmdleHAgJWJvb3RzdHJhcC1ndWls
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICh1bmdleHAgb3V0
cHV0KSAiL2d1aWxlIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh1bmdleHAgdGV4dCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzdHJpbmctYXBwZW5kICh1bmdleHAgb3V0cHV0KSAiL3RleHQiKSkpKSkKKyAgICAg
ICAgICAgIChjb21wdXRlZCAoY29tcHV0ZWQtZmlsZSAiY29tcHV0ZWQiIGV4cCkpKQorICAgICAg
IChtbGV0KiAlc3RvcmUtbW9uYWQKKyAgICAgICAgICAgICAgKCh0ZXh0IChsb3dlci1vYmplY3Qg
dGV4dCkpCisgICAgICAgICAgICAgICAoZ3VpbGUtZHJ2IChsb3dlci1vYmplY3QgJWJvb3RzdHJh
cC1ndWlsZSkpCisgICAgICAgICAgICAgICAoY29tcC1kcnYgKGxvd2VyLW9iamVjdCBjb21wdXRl
ZCkpCisgICAgICAgICAgICAgICAoY29tcCAtPiAoZGVyaXZhdGlvbi0+b3V0cHV0LXBhdGggY29t
cC1kcnYpKSkKKyAgICAgICAgICAgICAgKG1iZWdpbgorICAgICAgICAgICAgICAgICVzdG9yZS1t
b25hZAorICAgICAgICAgICAgICAgIChidWlsdC1kZXJpdmF0aW9ucyAobGlzdCBjb21wLWRydikp
CisgICAgICAgICAgICAgICAgKHJldHVybgorICAgICAgICAgICAgICAgICAgKGFuZCAoc3RyaW5n
PT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAocmVhZGxpbmsgKHN0cmluZy1hcHBlbmQgY29t
cCAiL2d1aWxlIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2YXRpb24tPm91dHB1
dC1wYXRoIGd1aWxlLWRydikpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9PworICAg
ICAgICAgICAgICAgICAgICAgICAgIChyZWFkbGluayAoc3RyaW5nLWFwcGVuZCBjb21wICIvdGV4
dCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQpKSkpKSkKKyAgICAgIzpndWlsZS1m
b3ItYnVpbGQKKyAgICAgKCVndWlsZS1mb3ItYnVpbGQpKSkKQCBidWlsZC1zdGFydGVkIC9ob21l
L3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3RvcmUvZmRobGk2bnpkazc2
NDNza2xpYWNhMGZsenZyZjJ4eDgtY29tcHV0ZWQuZHJ2IC0geDg2XzY0LWxpbnV4IC9ob21lL3Nh
cGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvdmFyL2xvZy9ndWl4L2RydnMvZmQv
L2hsaTZuemRrNzY0M3NrbGlhY2EwZmx6dnJmMnh4OC1jb21wdXRlZC5kcnYuYnoyCkAgYnVpbGQt
c3VjY2VlZGVkIC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdC10bXAvc3Rv
cmUvZmRobGk2bnpkazc2NDNza2xpYWNhMGZsenZyZjJ4eDgtY29tcHV0ZWQuZHJ2IC0KYWN0dWFs
LXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogcHJpbnRlcgpsb2NhdGlvbjogL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9nZXhwLnNjbTo4MzkKc291cmNl
OgorICh0ZXN0LWFzc2VydAorICAgInByaW50ZXIiCisgICAoc3RyaW5nLW1hdGNoCisgICAgICJe
IzxnZXhwIFxcKHN0cmluZy1hcHBlbmQgLiojPHBhY2thZ2UgY29yZXV0aWxzLiogXCIvYmluL3Vu
YW1lXCJcXCkgW1s6eGRpZ2l0Ol1dKz4kIgorICAgICAod2l0aC1vdXRwdXQtdG8tc3RyaW5nCisg
ICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgKHdyaXRlIChnZXhwIChzdHJpbmctYXBwZW5kICh1
bmdleHAgY29yZXV0aWxzKSAiL2Jpbi91bmFtZSIpKSkpKSkpCmFjdHVhbC12YWx1ZTogIygjPGdl
eHAgKHN0cmluZy1hcHBlbmQgIzxnZXhwLWlucHV0ICM8cGFja2FnZSBjb3JldXRpbHNAOC4yNCBn
bnUvcGFja2FnZXMvYmFzZS5zY206MjQ0IDJkZjA2YzA+Om91dD4gIi9iaW4vdW5hbWUiKSAyYTZh
ZDIwPiAoMCAuIDEyMikpCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBwcmludGVyIHZzLiB1bmdl
eHAtc3BsaWNpbmcKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAv
dGVzdHMvZ2V4cC5zY206ODQ4CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJwcmludGVyIHZz
LiB1bmdleHAtc3BsaWNpbmciCisgICAoc3RyaW5nLW1hdGNoCisgICAgICJeIzxnZXhwIC4qIFtb
OnhkaWdpdDpdXSs+JCIKKyAgICAgKHdpdGgtb3V0cHV0LXRvLXN0cmluZworICAgICAgIChsYW1i
ZGEgKCkKKyAgICAgICAgICh3cml0ZSAoZ2V4cCAoYmVnaW4gKHVuZ2V4cC1zcGxpY2luZyAoZ2V4
cCAoKSkpKSkpKSkpKQphY3R1YWwtdmFsdWU6ICMoIzxnZXhwICAyNmIxY2MwPiAoMCAuIDE2KSkK
cmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN1Z2FyCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNo
L0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2dleHAuc2NtOjg1Ngpzb3VyY2U6CisgKHRlc3QtZXF1
YWwKKyAgICJzdWdhciIKKyAgICcoZ2V4cCAoZm9vICh1bmdleHAgYmFyKQorICAgICAgICAgICAg
ICAgKHVuZ2V4cCBiYXogIm91dCIpCisgICAgICAgICAgICAgICAodW5nZXhwIChjaGJvdWliIDQy
KSkKKyAgICAgICAgICAgICAgICh1bmdleHAtc3BsaWNpbmcgKGxpc3QgeCB5IHopKQorICAgICAg
ICAgICAgICAgKHVuZ2V4cC1uYXRpdmUgZm9vKQorICAgICAgICAgICAgICAgKHVuZ2V4cC1uYXRp
dmUgZm9vICJvdXQiKQorICAgICAgICAgICAgICAgKHVuZ2V4cC1uYXRpdmUgKGNoYm91aWIgNDIp
KQorICAgICAgICAgICAgICAgKHVuZ2V4cC1uYXRpdmUtc3BsaWNpbmcgKGxpc3QgeCB5IHopKSkp
CisgICAnKGdleHAgKGZvbyAodW5nZXhwIGJhcikKKyAgICAgICAgICAgICAgICh1bmdleHAgYmF6
ICJvdXQiKQorICAgICAgICAgICAgICAgKHVuZ2V4cCAoY2hib3VpYiA0MikpCisgICAgICAgICAg
ICAgICAodW5nZXhwLXNwbGljaW5nIChsaXN0IHggeSB6KSkKKyAgICAgICAgICAgICAgICh1bmdl
eHAtbmF0aXZlIGZvbykKKyAgICAgICAgICAgICAgICh1bmdleHAtbmF0aXZlIGZvbyAib3V0IikK
KyAgICAgICAgICAgICAgICh1bmdleHAtbmF0aXZlIChjaGJvdWliIDQyKSkKKyAgICAgICAgICAg
ICAgICh1bmdleHAtbmF0aXZlLXNwbGljaW5nIChsaXN0IHggeSB6KSkpKSkKZXhwZWN0ZWQtdmFs
dWU6IChnZXhwIChmb28gKHVuZ2V4cCBiYXIpICh1bmdleHAgYmF6IG91dCkgKHVuZ2V4cCAoY2hi
b3VpYiA0MikpICh1bmdleHAtc3BsaWNpbmcgKGxpc3QgeCB5IHopKSAodW5nZXhwLW5hdGl2ZSBm
b28pICh1bmdleHAtbmF0aXZlIGZvbyBvdXQpICh1bmdleHAtbmF0aXZlIChjaGJvdWliIDQyKSkg
KHVuZ2V4cC1uYXRpdmUtc3BsaWNpbmcgKGxpc3QgeCB5IHopKSkpCmFjdHVhbC12YWx1ZTogKGdl
eHAgKGZvbyAodW5nZXhwIGJhcikgKHVuZ2V4cCBiYXogb3V0KSAodW5nZXhwIChjaGJvdWliIDQy
KSkgKHVuZ2V4cC1zcGxpY2luZyAobGlzdCB4IHkgeikpICh1bmdleHAtbmF0aXZlIGZvbykgKHVu
Z2V4cC1uYXRpdmUgZm9vIG91dCkgKHVuZ2V4cC1uYXRpdmUgKGNoYm91aWIgNDIpKSAodW5nZXhw
LW5hdGl2ZS1zcGxpY2luZyAobGlzdCB4IHkgeikpKSkKcmVzdWx0OiBQQVNTCgoKRkFJTDogdGVz
dHMvc3lzY2FsbHMKPT09PT09PT09PT09PT09PT09PT0KCnRlc3QtbmFtZTogbW91bnQsIEVOT0VO
VApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zeXNj
YWxscy5zY206MzgKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAibW91bnQsIEVOT0VOVCIKKyAg
IEVOT0VOVAorICAgKGNhdGNoICdzeXN0ZW0tZXJyb3IKKyAgICAgICAgICAobGFtYmRhICgpCisg
ICAgICAgICAgICAobW91bnQgIi9kZXYvbnVsbCIgIi9kb2VzLW5vdC1leGlzdCIgImV4dDIiKQor
ICAgICAgICAgICAgI2YpCisgICAgICAgICAgKGNvbXBvc2Ugc3lzdGVtLWVycm9yLWVycm5vIGxp
c3QpKSkKZXhwZWN0ZWQtdmFsdWU6IDIKYWN0dWFsLXZhbHVlOiAyCnJlc3VsdDogUEFTUwoKdGVz
dC1uYW1lOiB1bW91bnQsIEVOT0VOVC9FUEVSTQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206NDYKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgInVtb3VudCwgRU5PRU5UL0VQRVJNIgorICAgKGNhdGNoICdzeXN0ZW0tZXJyb3IK
KyAgICAgICAgICAobGFtYmRhICgpICh1bW91bnQgIi9kb2VzLW5vdC1leGlzdCIpICNmKQorICAg
ICAgICAgIChsYW1iZGEgYXJncworICAgICAgICAgICAgKG1lbXYgKHN5c3RlbS1lcnJvci1lcnJu
byBhcmdzKQorICAgICAgICAgICAgICAgICAgKGxpc3QgRVBFUk0gRU5PRU5UKSkpKSkKYWN0dWFs
LXZhbHVlOiAoMSAyKQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbW91bnQtcG9pbnRzCmxvY2F0
aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNj
bTo1NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAibW91bnQtcG9pbnRzIgorICAgKGFueSAo
Y3V0ZSBtZW1iZXIgPD4gKG1vdW50LXBvaW50cykpCisgICAgICAgICcoIi8iICIvcHJvYyIgIi9z
eXMiICIvZGV2IikpKQphY3R1YWwtdmFsdWU6ICgvIC9zeXMva2VybmVsL3NlY3VyaXR5IC9kZXYv
c2htIC9kZXYvcHRzIC9zeXMvZnMvY2dyb3VwIC9zeXMvZnMvY2dyb3VwL3N5c3RlbWQgL3N5cy9m
cy9wc3RvcmUgL3N5cy9mcy9jZ3JvdXAvY3B1LGNwdWFjY3QgL3N5cy9mcy9jZ3JvdXAvY3B1c2V0
IC9zeXMvZnMvY2dyb3VwL25ldF9jbHMgL3N5cy9mcy9jZ3JvdXAvZGV2aWNlcyAvc3lzL2ZzL2Nn
cm91cC9mcmVlemVyIC9zeXMvZnMvY2dyb3VwL21lbW9yeSAvc3lzL2ZzL2Nncm91cC9waWRzIC9z
eXMvZnMvY2dyb3VwL2Jsa2lvIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYyAvZGV2L2h1Z2VwYWdl
cyAvZGV2L21xdWV1ZSAvc3lzL2tlcm5lbC9jb25maWcgL3RtcCAvcnVuL3VzZXIvMTAwMCAvbW50
IC9zeXMvZnMvZnVzZS9jb25uZWN0aW9ucykKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN3YXBv
biwgRU5PRU5UL0VQRVJNCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhf
d2lwL3Rlc3RzL3N5c2NhbGxzLnNjbTo2MQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3dh
cG9uLCBFTk9FTlQvRVBFUk0iCisgICAoY2F0Y2ggJ3N5c3RlbS1lcnJvcgorICAgICAgICAgIChs
YW1iZGEgKCkgKHN3YXBvbiAiL2RvZXMtbm90LWV4aXN0IikgI2YpCisgICAgICAgICAgKGxhbWJk
YSBhcmdzCisgICAgICAgICAgICAobWVtdiAoc3lzdGVtLWVycm9yLWVycm5vIGFyZ3MpCisgICAg
ICAgICAgICAgICAgICAobGlzdCBFUEVSTSBFTk9FTlQpKSkpKQphY3R1YWwtdmFsdWU6ICgxIDIp
CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzd2Fwb2ZmLCBFTk9FTlQvRUlOVkFML0VQRVJNCmxv
Y2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxz
LnNjbTo2OQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3dhcG9mZiwgRU5PRU5UL0VJTlZB
TC9FUEVSTSIKKyAgIChjYXRjaCAnc3lzdGVtLWVycm9yCisgICAgICAgICAgKGxhbWJkYSAoKSAo
c3dhcG9mZiAiL2RvZXMtbm90LWV4aXN0IikgI2YpCisgICAgICAgICAgKGxhbWJkYSBhcmdzCisg
ICAgICAgICAgICAobWVtdiAoc3lzdGVtLWVycm9yLWVycm5vIGFyZ3MpCisgICAgICAgICAgICAg
ICAgICAobGlzdCBFUEVSTSBFSU5WQUwgRU5PRU5UKSkpKSkKYWN0dWFsLXZhbHVlOiAoMSAyMiAy
KQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbWtkdGVtcCEKbG9jYXRpb246IC9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3lzY2FsbHMuc2NtOjc3CnNvdXJjZToKKyAo
dGVzdC1hc3NlcnQKKyAgICJta2R0ZW1wISIKKyAgIChsZXQqICgodG1wIChvciAoZ2V0ZW52ICJU
TVBESVIiKSAiL3RtcCIpKQorICAgICAgICAgIChkaXIgKG1rZHRlbXAhCisgICAgICAgICAgICAg
ICAgIChzdHJpbmctYXBwZW5kIHRtcCAiL2d1aXgtdGVzdC1YWFhYWFgiKSkpKQorICAgICAoYW5k
IChmaWxlLWV4aXN0cz8gZGlyKSAoYmVnaW4gKHJtZGlyIGRpcikgI3QpKSkpCmFjdHVhbC12YWx1
ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN0YXRmcywgRU5PRU5UCmxvY2F0aW9uOiAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNjbTo4NQpz
b3VyY2U6CisgKHRlc3QtZXF1YWwKKyAgICJzdGF0ZnMsIEVOT0VOVCIKKyAgIEVOT0VOVAorICAg
KGNhdGNoICdzeXN0ZW0tZXJyb3IKKyAgICAgICAgICAobGFtYmRhICgpIChzdGF0ZnMgIi9kb2Vz
LW5vdC1leGlzdCIpKQorICAgICAgICAgIChjb21wb3NlIHN5c3RlbS1lcnJvci1lcnJubyBsaXN0
KSkpCmV4cGVjdGVkLXZhbHVlOiAyCmFjdHVhbC12YWx1ZTogMgpyZXN1bHQ6IFBBU1MKCnRlc3Qt
bmFtZTogc3RhdGZzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lw
L3Rlc3RzL3N5c2NhbGxzLnNjbTo5Mgpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3RhdGZz
IgorICAgKGxldCAoKGZzIChzdGF0ZnMgIi8iKSkpCisgICAgIChhbmQgKGZpbGUtc3lzdGVtPyBm
cykKKyAgICAgICAgICAoPiAoZmlsZS1zeXN0ZW0tYmxvY2stc2l6ZSBmcykgMCkKKyAgICAgICAg
ICAoPj0gKGZpbGUtc3lzdGVtLWJsb2Nrcy1hdmFpbGFibGUgZnMpIDApCisgICAgICAgICAgKD49
IChmaWxlLXN5c3RlbS1ibG9ja3MtZnJlZSBmcykKKyAgICAgICAgICAgICAgKGZpbGUtc3lzdGVt
LWJsb2Nrcy1hdmFpbGFibGUgZnMpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoK
dGVzdC1uYW1lOiBjbG9uZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4
X3dpcC90ZXN0cy9zeXNjYWxscy5zY206MTA5CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJj
bG9uZSIKKyAgIChtYXRjaCAoY2xvbmUgKGxvZ2lvciBDTE9ORV9ORVdVU0VSIFNJR0NITEQpKQor
ICAgICAgICAgICgwIChwcmltaXRpdmUtZXhpdCA0MikpCisgICAgICAgICAgKHBpZCAoYW5kIChu
b3QgKGVxdWFsPworICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWRsaW5rICh1c2VyLW5h
bWVzcGFjZSBwaWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWRsaW5rICh1c2Vy
LW5hbWVzcGFjZSAoZ2V0cGlkKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh3YWl0
cGlkIHBpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXyAuIHN0YXR1cykgKD0gNDIg
KHN0YXR1czpleGl0LXZhbCBzdGF0dXMpKSkpKSkpKQphY3R1YWwtdmFsdWU6ICNmCmFjdHVhbC1l
cnJvcjoKKyAoc3lzdGVtLWVycm9yCisgICAiY2xvbmUiCisgICAifmQ6IH5BIgorICAgKDI2ODQz
NTQ3MyAiT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQiKQorICAgKDEpKQpyZXN1bHQ6IEZBSUwKCnRl
c3QtbmFtZTogc2V0bnMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvc3lzY2FsbHMuc2NtOjEyMgpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic2V0
bnMiCisgICAobWF0Y2ggKGNsb25lIChsb2dpb3IgQ0xPTkVfTkVXVVNFUiBTSUdDSExEKSkKKyAg
ICAgICAgICAoMCAocHJpbWl0aXZlLWV4aXQgMCkpCisgICAgICAgICAgKGNsb25lLXBpZAorICAg
ICAgICAgICAgKG1hdGNoIChwaXBlKQorICAgICAgICAgICAgICAgICAgICgoaW4gLiBvdXQpCisg
ICAgICAgICAgICAgICAgICAgIChtYXRjaCAocHJpbWl0aXZlLWZvcmspCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSBpbikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLWlucHV0LWZpbGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyLW5hbWVzcGFjZSBjbG9uZS1waWQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChwb3J0KSAoc2V0bnMgKHBvcnQtPmZk
ZXMgcG9ydCkgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZSAnZG9uZSBv
dXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlIG91dCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAocHJpbWl0aXZlLWV4aXQgMCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZm9yay1waWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlIG91
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWQgaW4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsZXQgKChyZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYW5kIChlcXVhbD8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHJlYWRsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHVzZXItbmFtZXNwYWNlIGNsb25lLXBpZCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkbGluaworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyLW5hbWVzcGFjZSBmb3JrLXBpZCkpKSkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3YWl0cGlkIGNsb25lLXBpZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2FpdHBpZCBmb3JrLXBpZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKSkpKSkpKQphY3R1YWwtdmFsdWU6ICNmCmFj
dHVhbC1lcnJvcjoKKyAoc3lzdGVtLWVycm9yCisgICAiY2xvbmUiCisgICAifmQ6IH5BIgorICAg
KDI2ODQzNTQ3MyAiT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQiKQorICAgKDEpKQpyZXN1bHQ6IEZB
SUwKCnRlc3QtbmFtZTogcGl2b3Qtcm9vdApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206MTUxCnNvdXJjZToKKyAodGVzdC1hc3Nl
cnQKKyAgICJwaXZvdC1yb290IgorICAgKG1hdGNoIChwaXBlKQorICAgICAgICAgICgoaW4gLiBv
dXQpCisgICAgICAgICAgIChtYXRjaCAoY2xvbmUgKGxvZ2lvciBDTE9ORV9ORVdVU0VSIENMT05F
X05FV05TIFNJR0NITEQpKQorICAgICAgICAgICAgICAgICAgKDAKKyAgICAgICAgICAgICAgICAg
ICAoY2xvc2UgaW4pCisgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC10ZW1wb3JhcnktZGly
ZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChyb290KQorICAgICAgICAgICAg
ICAgICAgICAgICAobGV0ICgocHV0LW9sZCAoc3RyaW5nLWFwcGVuZCByb290ICIvcmVhbC1yb290
IikpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VudCAibm9uZSIgcm9vdCAidG1wZnMi
KQorICAgICAgICAgICAgICAgICAgICAgICAgIChta2RpciBwdXQtb2xkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzdHJpbmctYXBwZW5kIHJvb3QgIi90ZXN0IikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChsYW1iZGEgKHBvcnQpIChkaXNwbGF5ICJ0ZXN0aW5nXG4iIHBvcnQpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAocGl2b3Qtcm9vdCByb290IHB1dC1vbGQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgKHdyaXRlIChmaWxlLWV4aXN0cz8gIi90ZXN0Iikgb3V0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgIChjbG9zZSBvdXQpKSkpCisgICAgICAgICAgICAgICAgICAgKHBy
aW1pdGl2ZS1leGl0IDApKQorICAgICAgICAgICAgICAgICAgKHBpZCAoY2xvc2Ugb3V0KQorICAg
ICAgICAgICAgICAgICAgICAgICAobGV0ICgocmVzdWx0IChyZWFkIGluKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNsb3NlIGluKQorICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQg
KHplcm8/IChtYXRjaCAod2FpdHBpZCBwaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgoXyAuIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzdGF0dXM6ZXhpdC12YWwgc3RhdHVzKSkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGVxPyAjdCByZXN1bHQpKSkpKSkpKQphY3R1YWwtdmFsdWU6
ICNmCmFjdHVhbC1lcnJvcjoKKyAoc3lzdGVtLWVycm9yCisgICAiY2xvbmUiCisgICAifmQ6IH5B
IgorICAgKDI2ODU2NjU0NSAiT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQiKQorICAgKDEpKQpyZXN1
bHQ6IEZBSUwKCnRlc3QtbmFtZTogZmNudGwtZmxvY2sgd2FpdApsb2NhdGlvbjogL2hvbWUvc2Fw
aWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206MTgwCnNvdXJjZToK
KyAodGVzdC1lcXVhbAorICAgImZjbnRsLWZsb2NrIHdhaXQiCisgICA0MgorICAgKGxldCAoKGZp
bGUgKG9wZW4tZmlsZSB0ZW1wLWZpbGUgIncwYiIpKSkKKyAgICAgKGZjbnRsLWZsb2NrIGZpbGUg
J3dyaXRlLWxvY2spCisgICAgIChtYXRjaCAocHJpbWl0aXZlLWZvcmspCisgICAgICAgICAgICAo
MAorICAgICAgICAgICAgIChkeW5hbWljLXdpbmQKKyAgICAgICAgICAgICAgIChjb25zdCAjdCkK
KyAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUg
KG9wZW4tZmlsZSB0ZW1wLWZpbGUgInIwYiIpKSkKKyAgICAgICAgICAgICAgICAgICAoZmNudGwt
ZmxvY2sgZmlsZSAncmVhZC1sb2NrKQorICAgICAgICAgICAgICAgICAgIChwcmltaXRpdmUtZXhp
dCAocmVhZCBmaWxlKSkpCisgICAgICAgICAgICAgICAgIChwcmltaXRpdmUtZXhpdCAxKSkKKyAg
ICAgICAgICAgICAgIChsYW1iZGEgKCkgKHByaW1pdGl2ZS1leGl0IDIpKSkpCisgICAgICAgICAg
ICAocGlkIChkaXNwbGF5ICJoZWxsbywgd29ybGQhIiBmaWxlKQorICAgICAgICAgICAgICAgICAo
Zm9yY2Utb3V0cHV0IGZpbGUpCisgICAgICAgICAgICAgICAgIChzbGVlcCAxKQorICAgICAgICAg
ICAgICAgICAoc2VlayBmaWxlIDAgU0VFS19TRVQpCisgICAgICAgICAgICAgICAgICh0cnVuY2F0
ZS1maWxlIGZpbGUgMCkKKyAgICAgICAgICAgICAgICAgKHdyaXRlIDQyIGZpbGUpCisgICAgICAg
ICAgICAgICAgIChmb3JjZS1vdXRwdXQgZmlsZSkKKyAgICAgICAgICAgICAgICAgKGZjbnRsLWZs
b2NrIGZpbGUgJ3VubG9jaykKKyAgICAgICAgICAgICAgICAgKG1hdGNoICh3YWl0cGlkIHBpZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICgoXyAuIHN0YXR1cykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAobGV0ICgocmVzdWx0IChzdGF0dXM6ZXhpdC12YWwgc3RhdHVzKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY2xvc2UtcG9ydCBmaWxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0KSkpKSkpKQpleHBlY3RlZC12YWx1ZTogNDIKYWN0dWFsLXZhbHVlOiA0
MgpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZmNudGwtZmxvY2sgbm9uLWJsb2NraW5nCmxvY2F0
aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNj
bToyMTkKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAiZmNudGwtZmxvY2sgbm9uLWJsb2NraW5n
IgorICAgRUFHQUlOCisgICAobWF0Y2ggKHBpcGUpCisgICAgICAgICAgKChpbnB1dCAuIG91dHB1
dCkKKyAgICAgICAgICAgKG1hdGNoIChwcmltaXRpdmUtZm9yaykKKyAgICAgICAgICAgICAgICAg
ICgwCisgICAgICAgICAgICAgICAgICAgKGR5bmFtaWMtd2luZAorICAgICAgICAgICAgICAgICAg
ICAgKGNvbnN0ICN0KQorICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAg
ICAgICAgICAgICAgICAoY2xvc2UtcG9ydCBvdXRwdXQpCisgICAgICAgICAgICAgICAgICAgICAg
IChyZWFkLWNoYXIgaW5wdXQpCisgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxlIChv
cGVuLWZpbGUgdGVtcC1maWxlICJ3MCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY2F0
Y2ggJ2Zsb2NrLWVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmNudGwtZmxvY2sgZmlsZSAn
d3JpdGUtbG9jayAjOndhaXQ/ICNmKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGxhbWJkYSAoa2V5IGVycm5vKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw
cmltaXRpdmUtZXhpdCAocGsgJ2Vycm5vIGVycm5vKSkpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgKHByaW1pdGl2ZS1leGl0IC0xKSkKKyAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkg
KHByaW1pdGl2ZS1leGl0IC0yKSkpKQorICAgICAgICAgICAgICAgICAgKHBpZCAoY2xvc2UtcG9y
dCBpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUgKG9wZW4tZmlsZSB0
ZW1wLWZpbGUgIncwIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChmY250bC1mbG9jayBm
aWxlICd3cml0ZS1sb2NrKQorICAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZSAnZ3JlZW4t
bGlnaHQgb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JjZS1vdXRwdXQgb3V0
cHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAod2FpdHBpZCBwaWQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXyAuIHN0YXR1cykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsZXQgKChyZXN1bHQgKHN0YXR1czpleGl0LXZhbCBzdGF0dXMp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZjbnRsLWZsb2NrIGZpbGUg
J3VubG9jaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlLXBvcnQg
ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkpKSkpKSkp
Cgo7OzsgKGVycm5vIDExKQpleHBlY3RlZC12YWx1ZTogMTEKYWN0dWFsLXZhbHVlOiAxMQpyZXN1
bHQ6IFBBU1MKCnRlc3QtbmFtZTogYWxsLW5ldHdvcmstaW50ZXJmYWNlLW5hbWVzCmxvY2F0aW9u
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNjbToy
NjEKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImFsbC1uZXR3b3JrLWludGVyZmFjZS1uYW1l
cyIKKyAgIChtYXRjaCAoYWxsLW5ldHdvcmstaW50ZXJmYWNlLW5hbWVzKQorICAgICAgICAgICgo
KD8gc3RyaW5nPyBuYW1lcykgLi4xKSAobWVtYmVyICJsbyIgbmFtZXMpKSkpCmFjdHVhbC12YWx1
ZTogKGxvIGVucDBzMjUgd2xwMnMwKQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbmV0d29yay1p
bnRlcmZhY2UtbmFtZXMKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvc3lzY2FsbHMuc2NtOjI2Ngpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAibmV0
d29yay1pbnRlcmZhY2UtbmFtZXMiCisgICAobWF0Y2ggKG5ldHdvcmstaW50ZXJmYWNlLW5hbWVz
KQorICAgICAgICAgICgoKD8gc3RyaW5nPyBuYW1lcykgLi4xKQorICAgICAgICAgICAobHNldDw9
CisgICAgICAgICAgICAgc3RyaW5nPT8KKyAgICAgICAgICAgICBuYW1lcworICAgICAgICAgICAg
IChhbGwtbmV0d29yay1pbnRlcmZhY2UtbmFtZXMpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3Vs
dDogUEFTUwoKdGVzdC1uYW1lOiBuZXR3b3JrLWludGVyZmFjZS1mbGFncwpsb2NhdGlvbjogL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206MjcxCnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJuZXR3b3JrLWludGVyZmFjZS1mbGFncyIKKyAgIChs
ZXQqICgoc29jayAoc29ja2V0IEFGX0lORVQgU09DS19TVFJFQU0gMCkpCisgICAgICAgICAgKGZs
YWdzIChuZXR3b3JrLWludGVyZmFjZS1mbGFncyBzb2NrICJsbyIpKSkKKyAgICAgKGNsb3NlLXBv
cnQgc29jaykKKyAgICAgKGFuZCAobm90ICh6ZXJvPyAobG9nYW5kIGZsYWdzIElGRl9MT09QQkFD
SykpKQorICAgICAgICAgIChub3QgKHplcm8/IChsb2dhbmQgZmxhZ3MgSUZGX1VQKSkpKSkpCmFj
dHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGxvb3BiYWNrLW5ldHdvcmst
aW50ZXJmYWNlPwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0cy9zeXNjYWxscy5zY206Mjc4CnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAgImxvb3BiYWNr
LW5ldHdvcmstaW50ZXJmYWNlPyIKKyAgIEVOT0RFVgorICAgKGFuZCAobG9vcGJhY2stbmV0d29y
ay1pbnRlcmZhY2U/ICJsbyIpCisgICAgICAgIChjYXRjaCAnc3lzdGVtLWVycm9yCisgICAgICAg
ICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgIChsb29wYmFjay1uZXR3b3JrLWlu
dGVyZmFjZT8gIm5vbmV4aXN0ZW50IikKKyAgICAgICAgICAgICAgICAgI2YpCisgICAgICAgICAg
ICAgICAobGFtYmRhIGFyZ3MgKHN5c3RlbS1lcnJvci1lcnJubyBhcmdzKSkpKSkKZXhwZWN0ZWQt
dmFsdWU6IDE5CmFjdHVhbC12YWx1ZTogMTkKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHNldC1u
ZXR3b3JrLWludGVyZmFjZS1mbGFncwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206Mjg5CnNvdXJjZToKKyAodGVzdC1hc3NlcnQK
KyAgICJzZXQtbmV0d29yay1pbnRlcmZhY2UtZmxhZ3MiCisgICAobGV0ICgoc29jayAoc29ja2V0
IEFGX0lORVQgU09DS19TVFJFQU0gMCkpKQorICAgICAoY2F0Y2ggJ3N5c3RlbS1lcnJvcgorICAg
ICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAoc2V0LW5ldHdvcmstaW50ZXJmYWNl
LWZsYWdzIHNvY2sgImxvIiBJRkZfVVApKQorICAgICAgICAgICAgKGxhbWJkYSBhcmdzCisgICAg
ICAgICAgICAgIChjbG9zZS1wb3J0IHNvY2spCisgICAgICAgICAgICAgIChtZW12IChzeXN0ZW0t
ZXJyb3ItZXJybm8gYXJncykKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgRVBFUk0gRUFDQ0VT
KSkpKSkpCmFjdHVhbC12YWx1ZTogKDEgMTMpCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBuZXR3
b3JrLWludGVyZmFjZS1hZGRyZXNzIGxvCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9n
dWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNjbToyOTkKc291cmNlOgorICh0ZXN0LWVxdWFs
CisgICAibmV0d29yay1pbnRlcmZhY2UtYWRkcmVzcyBsbyIKKyAgIChtYWtlLXNvY2tldC1hZGRy
ZXNzCisgICAgIEFGX0lORVQKKyAgICAgKGluZXQtcHRvbiBBRl9JTkVUICIxMjcuMC4wLjEiKQor
ICAgICAwKQorICAgKGxldCogKChzb2NrIChzb2NrZXQgQUZfSU5FVCBTT0NLX1NUUkVBTSAwKSkK
KyAgICAgICAgICAoYWRkciAobmV0d29yay1pbnRlcmZhY2UtYWRkcmVzcyBzb2NrICJsbyIpKSkK
KyAgICAgKGNsb3NlLXBvcnQgc29jaykKKyAgICAgYWRkcikpCmV4cGVjdGVkLXZhbHVlOiAjKDIg
MjEzMDcwNjQzMyAwKQphY3R1YWwtdmFsdWU6ICMoMiAyMTMwNzA2NDMzIDApCnJlc3VsdDogUEFT
UwoKdGVzdC1uYW1lOiBzZXQtbmV0d29yay1pbnRlcmZhY2UtYWRkcmVzcwpsb2NhdGlvbjogL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206MzA3CnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJzZXQtbmV0d29yay1pbnRlcmZhY2UtYWRkcmVzcyIK
KyAgIChsZXQgKChzb2NrIChzb2NrZXQgQUZfSU5FVCBTT0NLX1NUUkVBTSAwKSkpCisgICAgIChj
YXRjaCAnc3lzdGVtLWVycm9yCisgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAg
IChzZXQtbmV0d29yay1pbnRlcmZhY2UtYWRkcmVzcworICAgICAgICAgICAgICAgIHNvY2sKKyAg
ICAgICAgICAgICAgICAibm9uZXhpc3RlbnQiCisgICAgICAgICAgICAgICAgKG1ha2Utc29ja2V0
LWFkZHJlc3MKKyAgICAgICAgICAgICAgICAgIEFGX0lORVQKKyAgICAgICAgICAgICAgICAgIChp
bmV0LXB0b24gQUZfSU5FVCAiMTI3LjEyLjE0LjE1IikKKyAgICAgICAgICAgICAgICAgIDApKSkK
KyAgICAgICAgICAgIChsYW1iZGEgYXJncworICAgICAgICAgICAgICAoY2xvc2UtcG9ydCBzb2Nr
KQorICAgICAgICAgICAgICAobWVtdiAoc3lzdGVtLWVycm9yLWVycm5vIGFyZ3MpCisgICAgICAg
ICAgICAgICAgICAgIChsaXN0IEVQRVJNIEVBQ0NFUykpKSkpKQphY3R1YWwtdmFsdWU6ICgxIDEz
KQpyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbmV0d29yay1pbnRlcmZhY2VzIHJldHVybnMgb25l
IG9yIG1vcmUgaW50ZXJmYWNlcwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206MzIxCnNvdXJjZToKKyAodGVzdC1lcXVhbAorICAg
Im5ldHdvcmstaW50ZXJmYWNlcyByZXR1cm5zIG9uZSBvciBtb3JlIGludGVyZmFjZXMiCisgICAn
KCN0ICN0ICN0KQorICAgKG1hdGNoIChuZXR3b3JrLWludGVyZmFjZXMpCisgICAgICAgICAgKChp
bnRlcmZhY2VzIC4uMSkKKyAgICAgICAgICAgKGxpc3QgKGV2ZXJ5IGludGVyZmFjZT8gaW50ZXJm
YWNlcykKKyAgICAgICAgICAgICAgICAgKGV2ZXJ5IHN0cmluZz8gKG1hcCBpbnRlcmZhY2UtbmFt
ZSBpbnRlcmZhY2VzKSkKKyAgICAgICAgICAgICAgICAgKGV2ZXJ5IChsYW1iZGEgKHNvY2thZGRy
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHZlY3Rvcj8gc29ja2FkZHIpIChub3Qg
c29ja2FkZHIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChtYXAgaW50ZXJmYWNlLWFkZHJl
c3MgaW50ZXJmYWNlcykpKSkpKQpleHBlY3RlZC12YWx1ZTogKCN0ICN0ICN0KQphY3R1YWwtdmFs
dWU6ICgjdCAjdCAjdCkKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IG5ldHdvcmstaW50ZXJmYWNl
cyByZXR1cm5zICJsbyIKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvc3lzY2FsbHMuc2NtOjMzMwpzb3VyY2U6CisgKHRlc3QtZXF1YWwKKyAgICJuZXR3
b3JrLWludGVyZmFjZXMgcmV0dXJucyBcImxvXCIiCisgICAobGlzdCAjdAorICAgICAgICAgKG1h
a2Utc29ja2V0LWFkZHJlc3MKKyAgICAgICAgICAgQUZfSU5FVAorICAgICAgICAgICAoaW5ldC1w
dG9uIEFGX0lORVQgIjEyNy4wLjAuMSIpCisgICAgICAgICAgIDApKQorICAgKG1hdGNoIChmaWx0
ZXIKKyAgICAgICAgICAgIChsYW1iZGEgKGludGVyZmFjZSkKKyAgICAgICAgICAgICAgKHN0cmlu
Zz0/ICJsbyIgKGludGVyZmFjZS1uYW1lIGludGVyZmFjZSkpKQorICAgICAgICAgICAgKG5ldHdv
cmstaW50ZXJmYWNlcykpCisgICAgICAgICAgKChsb29wYmFja3MgLi4xKQorICAgICAgICAgICAo
bGlzdCAoZXZlcnkgKGxhbWJkYSAobG8pCisgICAgICAgICAgICAgICAgICAgICAgICAgIChub3Qg
KHplcm8/IChsb2dhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
RkZfTE9PUEJBQ0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50
ZXJmYWNlLWZsYWdzIGxvKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BiYWNrcykK
KyAgICAgICAgICAgICAgICAgKG1hdGNoIChmaW5kIChsYW1iZGEgKGxvKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoPSBBRl9JTkVUCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzb2NrYWRkcjpmYW0gKGludGVyZmFjZS1hZGRyZXNzIGxvKSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9vcGJhY2tzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgKCNmICNmKQorICAgICAgICAgICAgICAgICAgICAgICAgKGxvIChpbnRlcmZhY2UtYWRkcmVz
cyBsbykpKSkpKSkKZXhwZWN0ZWQtdmFsdWU6ICgjdCAjKDIgMjEzMDcwNjQzMyAwKSkKYWN0dWFs
LXZhbHVlOiAoI3QgIygyIDIxMzA3MDY0MzMgMCkpCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiB0
Y2dldGF0dHIgRU5PVFRZCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhf
d2lwL3Rlc3RzL3N5c2NhbGxzLnNjbTozNDgKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAidGNn
ZXRhdHRyIEVOT1RUWSIKKyAgIEVOT1RUWQorICAgKGNhdGNoICdzeXN0ZW0tZXJyb3IKKyAgICAg
ICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAoY2FsbC13aXRoLWlucHV0LWZpbGUKKyAgICAg
ICAgICAgICAgIi9kZXYvbnVsbCIKKyAgICAgICAgICAgICAgKGxhbWJkYSAocG9ydCkgKHRjZ2V0
YXR0ciAoZmlsZW5vIHBvcnQpKSkpKQorICAgICAgICAgIChjb21wb3NlIHN5c3RlbS1lcnJvci1l
cnJubyBsaXN0KSkpCmV4cGVjdGVkLXZhbHVlOiAyNQphY3R1YWwtdmFsdWU6IDI1CnJlc3VsdDog
UEFTUwoKdGVzdC1uYW1lOiB0Y2dldGF0dHIKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2
L2d1aXgvZ3VpeF93aXAvdGVzdHMvc3lzY2FsbHMuc2NtOjM2Mgpzb3VyY2U6CisgKHRlc3QtYXNz
ZXJ0CisgICAidGNnZXRhdHRyIgorICAgKGxldCAoKHRlcm1pb3MgKHRjZ2V0YXR0ciAwKSkpCisg
ICAgIChhbmQgKHRlcm1pb3M/IHRlcm1pb3MpCisgICAgICAgICAgKD4gKHRlcm1pb3MtaW5wdXQt
c3BlZWQgdGVybWlvcykgMCkKKyAgICAgICAgICAoPiAodGVybWlvcy1vdXRwdXQtc3BlZWQgdGVy
bWlvcykgMCkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogdGNz
ZXRhdHRyCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3Rz
L3N5c2NhbGxzLnNjbTozNjgKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInRjc2V0YXR0ciIK
KyAgIChsZXQgKChmaXJzdCAodGNnZXRhdHRyIDApKSkKKyAgICAgKHRjc2V0YXR0ciAwICh0Y3Nl
dGF0dHItYWN0aW9uIFRDU0FOT1cpIGZpcnN0KQorICAgICAoZXF1YWw/IGZpcnN0ICh0Y2dldGF0
dHIgMCkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogdGVybWlu
YWwtd2luZG93LXNpemUgRU5PVFRZCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4
L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNjbTozNzMKc291cmNlOgorICh0ZXN0LWFzc2VydAor
ICAgInRlcm1pbmFsLXdpbmRvdy1zaXplIEVOT1RUWSIKKyAgIChjYWxsLXdpdGgtaW5wdXQtZmls
ZQorICAgICAiL2Rldi9udWxsIgorICAgICAobGFtYmRhIChwb3J0KQorICAgICAgIChjYXRjaCAn
c3lzdGVtLWVycm9yCisgICAgICAgICAgICAgIChsYW1iZGEgKCkgKHRlcm1pbmFsLXdpbmRvdy1z
aXplIHBvcnQpKQorICAgICAgICAgICAgICAobGFtYmRhIGFyZ3MKKyAgICAgICAgICAgICAgICAo
bWVtdiAoc3lzdGVtLWVycm9yLWVycm5vIGFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgKGxp
c3QgRU5PVFRZIEVJTlZBTCkpKSkpKSkKYWN0dWFsLXZhbHVlOiAoMjUgMjIpCnJlc3VsdDogUEFT
UwoKdGVzdC1uYW1lOiB0ZXJtaW5hbC1jb2x1bW5zCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNo
L0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3N5c2NhbGxzLnNjbTozODQKc291cmNlOgorICh0ZXN0
LWFzc2VydAorICAgInRlcm1pbmFsLWNvbHVtbnMiCisgICAoPiAodGVybWluYWwtY29sdW1ucykg
MCkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHRlcm1pbmFsLWNv
bHVtbnMgbm9uLWZpbGUgcG9ydApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0cy9zeXNjYWxscy5zY206Mzg3CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAg
ICJ0ZXJtaW5hbC1jb2x1bW5zIG5vbi1maWxlIHBvcnQiCisgICAoPiAodGVybWluYWwtY29sdW1u
cworICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcKKyAgICAgICAgICAiSm9pbiB1cyBub3csIHNo
YXJlIHRoZSBzb2Z0d2FyZSEiKSkKKyAgICAgIDApKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDog
UEFTUwoKClNLSVA6IHRlc3RzL2dyZW1saW4KPT09PT09PT09PT09PT09PT09PQoKdGVzdC1uYW1l
OiBlbGYtZHluYW1pYy1pbmZvLW5lZWRlZCwgZXhlY3V0YWJsZQpsb2NhdGlvbjogL2hvbWUvc2Fw
aWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9ncmVtbGluLnNjbTo0NApzb3VyY2U6Cisg
KHRlc3QtYXNzZXJ0CisgICAiZWxmLWR5bmFtaWMtaW5mby1uZWVkZWQsIGV4ZWN1dGFibGUiCisg
ICAobGV0KiAoKGVsZiAoY2FsbC13aXRoLWlucHV0LWZpbGUgJWd1aWxlLWV4ZWN1dGFibGUgcmVh
ZC1lbGYpKQorICAgICAgICAgIChkeW5pbmZvIChlbGYtZHluYW1pYy1pbmZvIGVsZikpKQorICAg
ICAob3IgKG5vdCBkeW5pbmZvKQorICAgICAgICAgKGxzZXQ8PQorICAgICAgICAgICBzdHJpbmc9
PworICAgICAgICAgICAobGlzdCAoc3RyaW5nLWFwcGVuZCAibGliZ3VpbGUtIiAoZWZmZWN0aXZl
LXZlcnNpb24pKQorICAgICAgICAgICAgICAgICAibGliZ2MiCisgICAgICAgICAgICAgICAgICJs
aWJ1bmlzdHJpbmciCisgICAgICAgICAgICAgICAgICJsaWJmZmkiKQorICAgICAgICAgICAobWFw
IChsYW1iZGEgKGxpYikKKyAgICAgICAgICAgICAgICAgIChzdHJpbmctdGFrZSBsaWIgKHN0cmlu
Zy1jb250YWlucyBsaWIgIi5zbyIpKSkKKyAgICAgICAgICAgICAgICAoZWxmLWR5bmFtaWMtaW5m
by1uZWVkZWQgZHluaW5mbykpKSkpKQpyZXN1bHQ6IFNLSVAKCnRlc3QtbmFtZTogZXhwYW5kLW9y
aWdpbgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9n
cmVtbGluLnNjbTo1NQpzb3VyY2U6CisgKHRlc3QtZXF1YWwKKyAgICJleHBhbmQtb3JpZ2luIgor
ICAgJygiT09PLy4uL2xpYiIKKyAgICAgIk9PTyIKKyAgICAgIi4uL09PTy9iYXIvT09PL2JheiIK
KyAgICAgIk9SSUdJTi9mb28iKQorICAgKG1hcCAoY3V0IGV4cGFuZC1vcmlnaW4gPD4gIk9PTyIp
CisgICAgICAgICcoIiRPUklHSU4vLi4vbGliIgorICAgICAgICAgICIke09SSUdJTn0iCisgICAg
ICAgICAgIi4uLyR7T1JJR0lOfS9iYXIvJE9SSUdJTi9iYXoiCisgICAgICAgICAgIk9SSUdJTi9m
b28iKSkpCmV4cGVjdGVkLXZhbHVlOiAoT09PLy4uL2xpYiBPT08gLi4vT09PL2Jhci9PT08vYmF6
IE9SSUdJTi9mb28pCmFjdHVhbC12YWx1ZTogKE9PTy8uLi9saWIgT09PIC4uL09PTy9iYXIvT09P
L2JheiBPUklHSU4vZm9vKQpyZXN1bHQ6IFBBU1MKCgpGQUlMOiB0ZXN0cy9saW50Cj09PT09PT09
PT09PT09PT0KCnRlc3QtbmFtZTogZGVzY3JpcHRpb246IG5vdCBhIHN0cmluZwpsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToxNDUKc291
cmNlOgorICh0ZXN0LWFzc2VydAorICAgImRlc2NyaXB0aW9uOiBub3QgYSBzdHJpbmciCisgICAo
LT5ib29sCisgICAgIChzdHJpbmctY29udGFpbnMKKyAgICAgICAod2l0aC13YXJuaW5ncworICAg
ICAgICAgKGxldCAoKHBrZyAoZHVtbXktcGFja2FnZSAieCIgKGRlc2NyaXB0aW9uICdmb29iYXIp
KSkpCisgICAgICAgICAgIChjaGVjay1kZXNjcmlwdGlvbi1zdHlsZSBwa2cpKSkKKyAgICAgICAi
aW52YWxpZCBkZXNjcmlwdGlvbiIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRl
c3QtbmFtZTogZGVzY3JpcHRpb246IG5vdCBlbXB0eQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToxNTMKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgImRlc2NyaXB0aW9uOiBub3QgZW1wdHkiCisgICAoLT5ib29sCisgICAgIChzdHJp
bmctY29udGFpbnMKKyAgICAgICAod2l0aC13YXJuaW5ncworICAgICAgICAgKGxldCAoKHBrZyAo
ZHVtbXktcGFja2FnZSAieCIgKGRlc2NyaXB0aW9uICIiKSkpKQorICAgICAgICAgICAoY2hlY2st
ZGVzY3JpcHRpb24tc3R5bGUgcGtnKSkpCisgICAgICAgImRlc2NyaXB0aW9uIHNob3VsZCBub3Qg
YmUgZW1wdHkiKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGRl
c2NyaXB0aW9uOiB2YWxpZCBUZXhpbmZvIG1hcmt1cApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToxNjEKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgImRlc2NyaXB0aW9uOiB2YWxpZCBUZXhpbmZvIG1hcmt1cCIKKyAgICgtPmJvb2wK
KyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAo
Y2hlY2stZGVzY3JpcHRpb24tc3R5bGUKKyAgICAgICAgICAgKGR1bW15LXBhY2thZ2UgIngiIChk
ZXNjcmlwdGlvbiAiZntvb31iQHIiKSkpKQorICAgICAgICJUZXhpbmZvIG1hcmt1cCBpbiBkZXNj
cmlwdGlvbiBpcyBpbnZhbGlkIikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVz
dC1uYW1lOiBkZXNjcmlwdGlvbjogZG9lcyBub3Qgc3RhcnQgd2l0aCBhbiB1cHBlci1jYXNlIGxl
dHRlcgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9s
aW50LnNjbToxNjgKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImRlc2NyaXB0aW9uOiBkb2Vz
IG5vdCBzdGFydCB3aXRoIGFuIHVwcGVyLWNhc2UgbGV0dGVyIgorICAgKC0+Ym9vbAorICAgICAo
c3RyaW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChw
a2cgKGR1bW15LXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAg
ICAgICAgICAgICAoZGVzY3JpcHRpb24gImJhZCBkZXNjcmlwdGlvbi4iKSkpKQorICAgICAgICAg
ICAoY2hlY2stZGVzY3JpcHRpb24tc3R5bGUgcGtnKSkpCisgICAgICAgImRlc2NyaXB0aW9uIHNo
b3VsZCBzdGFydCB3aXRoIGFuIHVwcGVyLWNhc2UgbGV0dGVyIikpKQphY3R1YWwtdmFsdWU6ICN0
CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBkZXNjcmlwdGlvbjogbWF5IHN0YXJ0IHdpdGggYSBk
aWdpdApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9s
aW50LnNjbToxNzYKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImRlc2NyaXB0aW9uOiBtYXkg
c3RhcnQgd2l0aCBhIGRpZ2l0IgorICAgKHN0cmluZy1udWxsPworICAgICAod2l0aC13YXJuaW5n
cworICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAg
IngiCisgICAgICAgICAgICAgICAgICAgIChkZXNjcmlwdGlvbiAiMi1jb21wb25lbnQgbGlicmFy
eS4iKSkpKQorICAgICAgICAgKGNoZWNrLWRlc2NyaXB0aW9uLXN0eWxlIHBrZykpKSkpCmFjdHVh
bC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGRlc2NyaXB0aW9uOiBtYXkgc3Rh
cnQgd2l0aCBsb3dlci1jYXNlIHBhY2thZ2UgbmFtZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToxODMKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgImRlc2NyaXB0aW9uOiBtYXkgc3RhcnQgd2l0aCBsb3dlci1jYXNlIHBhY2thZ2Ug
bmFtZSIKKyAgIChzdHJpbmctbnVsbD8KKyAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAobGV0
ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICJ4IgorICAgICAgICAg
ICAgICAgICAgICAoZGVzY3JpcHRpb24gInggaXMgYSBkdW1teSBwYWNrYWdlLiIpKSkpCisgICAg
ICAgICAoY2hlY2stZGVzY3JpcHRpb24tc3R5bGUgcGtnKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApy
ZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZGVzY3JpcHRpb246IHR3byBzcGFjZXMgYWZ0ZXIgZW5k
IG9mIHNlbnRlbmNlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lw
L3Rlc3RzL2xpbnQuc2NtOjE5MApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZGVzY3JpcHRp
b246IHR3byBzcGFjZXMgYWZ0ZXIgZW5kIG9mIHNlbnRlbmNlIgorICAgKC0+Ym9vbAorICAgICAo
c3RyaW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChw
a2cgKGR1bW15LXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAg
ICAgICAgICAgICAoZGVzY3JpcHRpb24gIkJhZC4gUXVpdGUgYmFkLiIpKSkpCisgICAgICAgICAg
IChjaGVjay1kZXNjcmlwdGlvbi1zdHlsZSBwa2cpKSkKKyAgICAgICAic2VudGVuY2VzIGluIGRl
c2NyaXB0aW9uIHNob3VsZCBiZSBmb2xsb3dlZCBieSB0d28gc3BhY2VzIikpKQphY3R1YWwtdmFs
dWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBkZXNjcmlwdGlvbjogZW5kLW9mLXNlbnRl
bmNlIGRldGVjdGlvbiB3aXRoIGFiYnJldmlhdGlvbnMKbG9jYXRpb246IC9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5zY206MTk4CnNvdXJjZToKKyAodGVzdC1h
c3NlcnQKKyAgICJkZXNjcmlwdGlvbjogZW5kLW9mLXNlbnRlbmNlIGRldGVjdGlvbiB3aXRoIGFi
YnJldmlhdGlvbnMiCisgICAoc3RyaW5nLW51bGw/CisgICAgICh3aXRoLXdhcm5pbmdzCisgICAg
ICAgKGxldCAoKHBrZyAoZHVtbXktcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAieCIKKyAg
ICAgICAgICAgICAgICAgICAgKGRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgIkUu
Zy4gRm9vLCBpLmUuIEJhciByZXNwLiBCYXogKGEuay5hLiBEVkQpLiIpKSkpCisgICAgICAgICAo
Y2hlY2stZGVzY3JpcHRpb24tc3R5bGUgcGtnKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6
IFBBU1MKCnRlc3QtbmFtZTogc3lub3BzaXM6IG5vdCBhIHN0cmluZwpsb2NhdGlvbjogL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToyMDYKc291cmNlOgor
ICh0ZXN0LWFzc2VydAorICAgInN5bm9wc2lzOiBub3QgYSBzdHJpbmciCisgICAoLT5ib29sCisg
ICAgIChzdHJpbmctY29udGFpbnMKKyAgICAgICAod2l0aC13YXJuaW5ncworICAgICAgICAgKGxl
dCAoKHBrZyAoZHVtbXktcGFja2FnZSAieCIgKHN5bm9wc2lzICNmKSkpKQorICAgICAgICAgICAo
Y2hlY2stc3lub3BzaXMtc3R5bGUgcGtnKSkpCisgICAgICAgImludmFsaWQgc3lub3BzaXMiKSkp
CmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN5bm9wc2lzOiBub3Qg
ZW1wdHkKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMv
bGludC5zY206MjE0CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJzeW5vcHNpczogbm90IGVt
cHR5IgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2Fy
bmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2thZ2UgIngiIChzeW5vcHNpcyAi
IikpKSkKKyAgICAgICAgICAgKGNoZWNrLXN5bm9wc2lzLXN0eWxlIHBrZykpKQorICAgICAgICJz
eW5vcHNpcyBzaG91bGQgbm90IGJlIGVtcHR5IikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDog
UEFTUwoKdGVzdC1uYW1lOiBzeW5vcHNpczogZG9lcyBub3Qgc3RhcnQgd2l0aCBhbiB1cHBlci1j
YXNlIGxldHRlcgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0cy9saW50LnNjbToyMjIKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInN5bm9wc2lzOiBk
b2VzIG5vdCBzdGFydCB3aXRoIGFuIHVwcGVyLWNhc2UgbGV0dGVyIgorICAgKC0+Ym9vbAorICAg
ICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQg
KChwa2cgKGR1bW15LXBhY2thZ2UgIngiIChzeW5vcHNpcyAiYmFkIHN5bm9wc2lzLiIpKSkpCisg
ICAgICAgICAgIChjaGVjay1zeW5vcHNpcy1zdHlsZSBwa2cpKSkKKyAgICAgICAic3lub3BzaXMg
c2hvdWxkIHN0YXJ0IHdpdGggYW4gdXBwZXItY2FzZSBsZXR0ZXIiKSkpCmFjdHVhbC12YWx1ZTog
I3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN5bm9wc2lzOiBtYXkgc3RhcnQgd2l0aCBhIGRp
Z2l0CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xp
bnQuc2NtOjIzMApzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3lub3BzaXM6IG1heSBzdGFy
dCB3aXRoIGEgZGlnaXQiCisgICAoc3RyaW5nLW51bGw/CisgICAgICh3aXRoLXdhcm5pbmdzCisg
ICAgICAgKGxldCAoKHBrZyAoZHVtbXktcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAieCIK
KyAgICAgICAgICAgICAgICAgICAgKHN5bm9wc2lzICI1LWRpbWVuc2lvbmFsIGZyb2JuaWNhdG9y
IikpKSkKKyAgICAgICAgIChjaGVjay1zeW5vcHNpcy1zdHlsZSBwa2cpKSkpKQphY3R1YWwtdmFs
dWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzeW5vcHNpczogZW5kcyB3aXRoIGEgcGVy
aW9kCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xp
bnQuc2NtOjIzNwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3lub3BzaXM6IGVuZHMgd2l0
aCBhIHBlcmlvZCIKKyAgICgtPmJvb2wKKyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3
aXRoLXdhcm5pbmdzCisgICAgICAgICAobGV0ICgocGtnIChkdW1teS1wYWNrYWdlICJ4IiAoc3lu
b3BzaXMgIkJhZCBzeW5vcHNpcy4iKSkpKQorICAgICAgICAgICAoY2hlY2stc3lub3BzaXMtc3R5
bGUgcGtnKSkpCisgICAgICAgIm5vIHBlcmlvZCBhbGxvd2VkIGF0IHRoZSBlbmQgb2YgdGhlIHN5
bm9wc2lzIikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzeW5v
cHNpczogZW5kcyB3aXRoICdldGMuJwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToyNDUKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAg
InN5bm9wc2lzOiBlbmRzIHdpdGggJ2V0Yy4nIgorICAgKHN0cmluZy1udWxsPworICAgICAod2l0
aC13YXJuaW5ncworICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2thZ2UgIngiIChzeW5vcHNp
cyAiRm9vLCBiYXIsIGV0Yy4iKSkpKQorICAgICAgICAgKGNoZWNrLXN5bm9wc2lzLXN0eWxlIHBr
ZykpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN5bm9wc2lz
OiBzdGFydHMgd2l0aCAnQScKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3Vp
eF93aXAvdGVzdHMvbGludC5zY206MjUxCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJzeW5v
cHNpczogc3RhcnRzIHdpdGggJ0EnIgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5z
CisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2th
Z2UKKyAgICAgICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAgICAgICAgICAgICAoc3lu
b3BzaXMgIkEgYmFkIHN5bm9wXHUwMTVkaXMiKSkpKQorICAgICAgICAgICAoY2hlY2stc3lub3Bz
aXMtc3R5bGUgcGtnKSkpCisgICAgICAgIm5vIGFydGljbGUgYWxsb3dlZCBhdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBzeW5vcHNpcyIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRl
c3QtbmFtZTogc3lub3BzaXM6IHN0YXJ0cyB3aXRoICdBbicKbG9jYXRpb246IC9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5zY206MjU5CnNvdXJjZToKKyAodGVz
dC1hc3NlcnQKKyAgICJzeW5vcHNpczogc3RhcnRzIHdpdGggJ0FuJyIKKyAgICgtPmJvb2wKKyAg
ICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAobGV0
ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgIngiCisgICAgICAg
ICAgICAgICAgICAgICAgKHN5bm9wc2lzICJBbiBhd2Z1bCBzeW5vcHNpcyIpKSkpCisgICAgICAg
ICAgIChjaGVjay1zeW5vcHNpcy1zdHlsZSBwa2cpKSkKKyAgICAgICAibm8gYXJ0aWNsZSBhbGxv
d2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN5bm9wc2lzIikpKQphY3R1YWwtdmFsdWU6ICN0
CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzeW5vcHNpczogc3RhcnRzIHdpdGggJ2EnCmxvY2F0
aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjI2
Nwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3lub3BzaXM6IHN0YXJ0cyB3aXRoICdhJyIK
KyAgICgtPmJvb2wKKyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdz
CisgICAgICAgICAobGV0ICgocGtnIChkdW1teS1wYWNrYWdlICJ4IiAoc3lub3BzaXMgImEgYmFk
IHN5bm9wc2lzIikpKSkKKyAgICAgICAgICAgKGNoZWNrLXN5bm9wc2lzLXN0eWxlIHBrZykpKQor
ICAgICAgICJubyBhcnRpY2xlIGFsbG93ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3lub3Bz
aXMiKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN5bm9wc2lz
OiBzdGFydHMgd2l0aCAnYW4nCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1
aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjI3NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic3lu
b3BzaXM6IHN0YXJ0cyB3aXRoICdhbiciCisgICAoLT5ib29sCisgICAgIChzdHJpbmctY29udGFp
bnMKKyAgICAgICAod2l0aC13YXJuaW5ncworICAgICAgICAgKGxldCAoKHBrZyAoZHVtbXktcGFj
a2FnZQorICAgICAgICAgICAgICAgICAgICAgICJ4IgorICAgICAgICAgICAgICAgICAgICAgIChz
eW5vcHNpcyAiYW4gYXdmdWwgc3lub3BzaXMiKSkpKQorICAgICAgICAgICAoY2hlY2stc3lub3Bz
aXMtc3R5bGUgcGtnKSkpCisgICAgICAgIm5vIGFydGljbGUgYWxsb3dlZCBhdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBzeW5vcHNpcyIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRl
c3QtbmFtZTogc3lub3BzaXM6IHRvbyBsb25nCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjI4Mwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0
CisgICAic3lub3BzaXM6IHRvbyBsb25nIgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRh
aW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBh
Y2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAgICAgICAgICAgICAo
c3lub3BzaXMgKG1ha2Utc3RyaW5nIDgwICNceCkpKSkpCisgICAgICAgICAgIChjaGVjay1zeW5v
cHNpcy1zdHlsZSBwa2cpKSkKKyAgICAgICAic3lub3BzaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiA4
MCBjaGFyYWN0ZXJzIGxvbmciKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0
LW5hbWU6IHN5bm9wc2lzOiBzdGFydCB3aXRoIHBhY2thZ2UgbmFtZQpsb2NhdGlvbjogL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbToyOTEKc291cmNlOgor
ICh0ZXN0LWFzc2VydAorICAgInN5bm9wc2lzOiBzdGFydCB3aXRoIHBhY2thZ2UgbmFtZSIKKyAg
ICgtPmJvb2wKKyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdzCisg
ICAgICAgICAobGV0ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAg
IngiCisgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgImZvbyIpCisgICAgICAgICAgICAgICAg
ICAgICAgKHN5bm9wc2lzICJmb28sIGEgbmljZSBwYWNrYWdlIikpKSkKKyAgICAgICAgICAgKGNo
ZWNrLXN5bm9wc2lzLXN0eWxlIHBrZykpKQorICAgICAgICJzeW5vcHNpcyBzaG91bGQgbm90IHN0
YXJ0IHdpdGggdGhlIHBhY2thZ2UgbmFtZSIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBB
U1MKCnRlc3QtbmFtZTogc3lub3BzaXM6IHN0YXJ0IHdpdGggcGFja2FnZSBuYW1lIHByZWZpeAps
b2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNj
bTozMDAKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInN5bm9wc2lzOiBzdGFydCB3aXRoIHBh
Y2thZ2UgbmFtZSBwcmVmaXgiCisgICAoc3RyaW5nLW51bGw/CisgICAgICh3aXRoLXdhcm5pbmdz
CisgICAgICAgKGxldCAoKHBrZyAoZHVtbXktcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAi
YXJiIgorICAgICAgICAgICAgICAgICAgICAoc3lub3BzaXMgIkFyYml0cmFyeSBwcmVjaXNpb24i
KSkpKQorICAgICAgICAgKGNoZWNrLXN5bm9wc2lzLXN0eWxlIHBrZykpKSkpCmFjdHVhbC12YWx1
ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHN5bm9wc2lzOiBzdGFydCB3aXRoIGFiYnJl
dmlhdGlvbgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0
cy9saW50LnNjbTozMDcKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInN5bm9wc2lzOiBzdGFy
dCB3aXRoIGFiYnJldmlhdGlvbiIKKyAgIChzdHJpbmctbnVsbD8KKyAgICAgKHdpdGgtd2Fybmlu
Z3MKKyAgICAgICAobGV0ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAg
ICJ1dWNwIgorICAgICAgICAgICAgICAgICAgICAoc3lub3BzaXMgIlVVQ1AgaW1wbGVtZW50YXRp
b24iKQorICAgICAgICAgICAgICAgICAgICAoZGVzY3JpcHRpb24gIkltYWdpbmUgdGhpcyBpcyBU
YXlsb3IgVVVDUC4iKSkpKQorICAgICAgICAgKGNoZWNrLXN5bm9wc2lzLXN0eWxlIHBrZykpKSkp
CmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGlucHV0czogcGtnLWNv
bmZpZyBpcyBwcm9iYWJseSBhIG5hdGl2ZSBpbnB1dApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTozMTYKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgImlucHV0czogcGtnLWNvbmZpZyBpcyBwcm9iYWJseSBhIG5hdGl2ZSBpbnB1dCIK
KyAgICgtPmJvb2wKKyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdz
CisgICAgICAgICAobGV0ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAg
ICAgIngiCisgICAgICAgICAgICAgICAgICAgICAgKGlucHV0cyBgKCgicGtnLWNvbmZpZyIgLHBr
Zy1jb25maWcpKSkpKSkKKyAgICAgICAgICAgKGNoZWNrLWlucHV0cy1zaG91bGQtYmUtbmF0aXZl
IHBrZykpKQorICAgICAgICIncGtnLWNvbmZpZycgc2hvdWxkIHByb2JhYmx5IGJlIGEgbmF0aXZl
IGlucHV0IikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBpbnB1
dHM6IGdsaWI6YmluIGlzIHByb2JhYmx5IGEgbmF0aXZlIGlucHV0CmxvY2F0aW9uOiAvaG9tZS9z
YXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjMyNQpzb3VyY2U6Cisg
KHRlc3QtYXNzZXJ0CisgICAiaW5wdXRzOiBnbGliOmJpbiBpcyBwcm9iYWJseSBhIG5hdGl2ZSBp
bnB1dCIKKyAgICgtPmJvb2wKKyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdh
cm5pbmdzCisgICAgICAgICAobGV0ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAg
ICAgICAgICAgIngiCisgICAgICAgICAgICAgICAgICAgICAgKGlucHV0cyBgKCgiZ2xpYiIgLGds
aWIgImJpbiIpKSkpKSkKKyAgICAgICAgICAgKGNoZWNrLWlucHV0cy1zaG91bGQtYmUtbmF0aXZl
IHBrZykpKQorICAgICAgICInZ2xpYjpiaW4nIHNob3VsZCBwcm9iYWJseSBiZSBhIG5hdGl2ZSBp
bnB1dCIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogcGF0Y2hl
czogZmlsZSBuYW1lcwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0cy9saW50LnNjbTozMzQKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInBhdGNoZXM6
IGZpbGUgbmFtZXMiCisgICAoLT5ib29sCisgICAgIChzdHJpbmctY29udGFpbnMKKyAgICAgICAo
d2l0aC13YXJuaW5ncworICAgICAgICAgKGxldCAoKHBrZyAoZHVtbXktcGFja2FnZQorICAgICAg
ICAgICAgICAgICAgICAgICJ4IgorICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChkdW1teS1vcmlnaW4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHBhdGNoZXMgKGxpc3QgIi9wYXRoL3RvL3kucGF0Y2giKSkpKSkpKQorICAgICAgICAgICAo
Y2hlY2stcGF0Y2gtZmlsZS1uYW1lcyBwa2cpKSkKKyAgICAgICAiZmlsZSBuYW1lcyBvZiBwYXRj
aGVzIHNob3VsZCBzdGFydCB3aXRoIHRoZSBwYWNrYWdlIG5hbWUiKSkpCmFjdHVhbC12YWx1ZTog
I3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHBhdGNoZXM6IG5vdCBmb3VuZApsb2NhdGlvbjog
L2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTozNDUKc291
cmNlOgorICh0ZXN0LWFzc2VydAorICAgInBhdGNoZXM6IG5vdCBmb3VuZCIKKyAgICgtPmJvb2wK
KyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAo
bGV0ICgocGtnIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgIngiCisgICAg
ICAgICAgICAgICAgICAgICAgKHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgKGR1bW15
LW9yaWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsaXN0IChzZWFyY2gtcGF0Y2gKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ0aGlzLXBhdGNoLWRvZXMtbm90LWV4aXN0ISIpKSkpKSkpKQorICAg
ICAgICAgICAoY2hlY2stcGF0Y2gtZmlsZS1uYW1lcyBwa2cpKSkKKyAgICAgICAicGF0Y2ggbm90
IGZvdW5kIikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBkZXJp
dmF0aW9uOiBpbnZhbGlkIGFyZ3VtZW50cwpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTozNTcKc291cmNlOgorICh0ZXN0LWFzc2VydAor
ICAgImRlcml2YXRpb246IGludmFsaWQgYXJndW1lbnRzIgorICAgKC0+Ym9vbAorICAgICAoc3Ry
aW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cg
KGR1bW15LXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAgICAg
ICAgICAgICAoYXJndW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAnKCM6aW1wb3J0ZWQt
bW9kdWxlcyAoaW52YWxpZC1tb2R1bGUpKSkpKSkKKyAgICAgICAgICAgKGNoZWNrLWRlcml2YXRp
b24gcGtnKSkpCisgICAgICAgImZhaWxlZCB0byBjcmVhdGUgZGVyaXZhdGlvbiIpKSkKYWN0dWFs
LXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogbGljZW5zZTogaW52YWxpZCBsaWNl
bnNlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xp
bnQuc2NtOjM2Nwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAibGljZW5zZTogaW52YWxpZCBs
aWNlbnNlIgorICAgKHN0cmluZy1jb250YWlucworICAgICAod2l0aC13YXJuaW5ncworICAgICAg
IChjaGVjay1saWNlbnNlIChkdW1teS1wYWNrYWdlICJ4IiAobGljZW5zZSAjZikpKSkKKyAgICAg
ImludmFsaWQgbGljZW5zZSIpKQphY3R1YWwtdmFsdWU6IDYzCnJlc3VsdDogUEFTUwoKdGVzdC1u
YW1lOiBob21lLXBhZ2U6IHdyb25nIGhvbWUtcGFnZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVj
aC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTozNzMKc291cmNlOgorICh0ZXN0LWFz
c2VydAorICAgImhvbWUtcGFnZTogd3JvbmcgaG9tZS1wYWdlIgorICAgKC0+Ym9vbAorICAgICAo
c3RyaW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChw
a2cgKHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAoaW5oZXJpdCAoZHVtbXktcGFja2Fn
ZSAieCIpKQorICAgICAgICAgICAgICAgICAgICAgIChob21lLXBhZ2UgI2YpKSkpCisgICAgICAg
ICAgIChjaGVjay1ob21lLXBhZ2UgcGtnKSkpCisgICAgICAgImludmFsaWQiKSkpCmFjdHVhbC12
YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGhvbWUtcGFnZTogaW52YWxpZCBVUkkK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5z
Y206MzgzCnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJob21lLXBhZ2U6IGludmFsaWQgVVJJ
IgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICAgKHdpdGgtd2Fybmlu
Z3MKKyAgICAgICAgIChsZXQgKChwa2cgKHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAo
aW5oZXJpdCAoZHVtbXktcGFja2FnZSAieCIpKQorICAgICAgICAgICAgICAgICAgICAgIChob21l
LXBhZ2UgImZvb2JhciIpKSkpCisgICAgICAgICAgIChjaGVjay1ob21lLXBhZ2UgcGtnKSkpCisg
ICAgICAgImludmFsaWQgaG9tZSBwYWdlIFVSTCIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6
IFBBU1MKCnRlc3QtbmFtZTogaG9tZS1wYWdlOiBob3N0IG5vdCBmb3VuZApsb2NhdGlvbjogL2hv
bWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTozOTMKc291cmNl
OgorICh0ZXN0LWFzc2VydAorICAgImhvbWUtcGFnZTogaG9zdCBub3QgZm91bmQiCisgICAoLT5i
b29sCisgICAgIChzdHJpbmctY29udGFpbnMKKyAgICAgICAod2l0aC13YXJuaW5ncworICAgICAg
ICAgKGxldCAoKHBrZyAocGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgIChpbmhlcml0IChk
dW1teS1wYWNrYWdlICJ4IikpCisgICAgICAgICAgICAgICAgICAgICAgKGhvbWUtcGFnZSAiaHR0
cDovL2RvZXMtbm90LWV4aXN0IikpKSkKKyAgICAgICAgICAgKGNoZWNrLWhvbWUtcGFnZSBwa2cp
KSkKKyAgICAgICAiZG9tYWluIG5vdCBmb3VuZCIpKSkKYWN0dWFsLXZhbHVlOiAjZgpyZXN1bHQ6
IEZBSUwKCnRlc3QtbmFtZTogaG9tZS1wYWdlOiBDb25uZWN0aW9uIHJlZnVzZWQKbG9jYXRpb246
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5zY206NDA0CnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJob21lLXBhZ2U6IENvbm5lY3Rpb24gcmVmdXNlZCIK
KyAgICgtPmJvb2wKKyAgICAgKHN0cmluZy1jb250YWlucworICAgICAgICh3aXRoLXdhcm5pbmdz
CisgICAgICAgICAobGV0ICgocGtnIChwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgKGlu
aGVyaXQgKGR1bW15LXBhY2thZ2UgIngiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoaG9tZS1w
YWdlICVsb2NhbC11cmwpKSkpCisgICAgICAgICAgIChjaGVjay1ob21lLXBhZ2UgcGtnKSkpCisg
ICAgICAgIkNvbm5lY3Rpb24gcmVmdXNlZCIpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBB
U1MKCnRlc3QtbmFtZTogaG9tZS1wYWdlOiAyMDAKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gv
RGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5zY206NDE1CnNvdXJjZToKKyAodGVzdC1lcXVh
bAorICAgImhvbWUtcGFnZTogMjAwIgorICAgIiIKKyAgICh3aXRoLXdhcm5pbmdzCisgICAgICh3
aXRoLWh0dHAtc2VydmVyCisgICAgICAgMjAwCisgICAgICAgJWxvbmctc3RyaW5nCisgICAgICAg
KGxldCAoKHBrZyAocGFja2FnZQorICAgICAgICAgICAgICAgICAgICAoaW5oZXJpdCAoZHVtbXkt
cGFja2FnZSAieCIpKQorICAgICAgICAgICAgICAgICAgICAoaG9tZS1wYWdlICVsb2NhbC11cmwp
KSkpCisgICAgICAgICAoY2hlY2staG9tZS1wYWdlIHBrZykpKSkpCmV4cGVjdGVkLXZhbHVlOiAK
YWN0dWFsLXZhbHVlOiAKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGhvbWUtcGFnZTogMjAwIGJ1
dCBzaG9ydCBsZW5ndGgKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93
aXAvdGVzdHMvbGludC5zY206NDI1CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJob21lLXBh
Z2U6IDIwMCBidXQgc2hvcnQgbGVuZ3RoIgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRh
aW5zCisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgICh3aXRoLWh0dHAtc2VydmVyCisg
ICAgICAgICAgIDIwMAorICAgICAgICAgICAiVGhpcyBpcyB0b28gc21hbGwuIgorICAgICAgICAg
ICAobGV0ICgocGtnIChwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAoaW5oZXJpdCAo
ZHVtbXktcGFja2FnZSAieCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhvbWUtcGFnZSAl
bG9jYWwtdXJsKSkpKQorICAgICAgICAgICAgIChjaGVjay1ob21lLXBhZ2UgcGtnKSkpKQorICAg
ICAgICJzdXNwaWNpb3VzbHkgc21hbGwiKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNT
Cgp0ZXN0LW5hbWU6IGhvbWUtcGFnZTogNDA0CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rl
di9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjQzNwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0
CisgICAiaG9tZS1wYWdlOiA0MDQiCisgICAoLT5ib29sCisgICAgIChzdHJpbmctY29udGFpbnMK
KyAgICAgICAod2l0aC13YXJuaW5ncworICAgICAgICAgKHdpdGgtaHR0cC1zZXJ2ZXIKKyAgICAg
ICAgICAgNDA0CisgICAgICAgICAgICVsb25nLXN0cmluZworICAgICAgICAgICAobGV0ICgocGtn
IChwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAoaW5oZXJpdCAoZHVtbXktcGFja2Fn
ZSAieCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhvbWUtcGFnZSAlbG9jYWwtdXJsKSkp
KQorICAgICAgICAgICAgIChjaGVjay1ob21lLXBhZ2UgcGtnKSkpKQorICAgICAgICJub3QgcmVh
Y2hhYmxlOiA0MDQiKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6
IHNvdXJjZS1maWxlLW5hbWUKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3Vp
eF93aXAvdGVzdHMvbGludC5zY206NDQ4CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJzb3Vy
Y2UtZmlsZS1uYW1lIgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICAg
KHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2thZ2UKKyAgICAg
ICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAiMy4y
LjEiKQorICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChvcmlnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmkgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20v
My4yLjEudGFyLmd6IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoYTI1NiAlbnVsbC1z
aGEyNTYpKSkpKSkKKyAgICAgICAgICAgKGNoZWNrLXNvdXJjZS1maWxlLW5hbWUgcGtnKSkpCisg
ICAgICAgImZpbGUgbmFtZSBzaG91bGQgY29udGFpbiB0aGUgcGFja2FnZSBuYW1lIikpKQphY3R1
YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzb3VyY2UtZmlsZS1uYW1lOiB2
IHByZWZpeApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0
cy9saW50LnNjbTo0NjIKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgInNvdXJjZS1maWxlLW5h
bWU6IHYgcHJlZml4IgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICAg
KHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2thZ2UKKyAgICAg
ICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAiMy4y
LjEiKQorICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChvcmlnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmkgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20v
djMuMi4xLnRhci5neiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzaGEyNTYgJW51bGwt
c2hhMjU2KSkpKSkpCisgICAgICAgICAgIChjaGVjay1zb3VyY2UtZmlsZS1uYW1lIHBrZykpKQor
ICAgICAgICJmaWxlIG5hbWUgc2hvdWxkIGNvbnRhaW4gdGhlIHBhY2thZ2UgbmFtZSIpKSkKYWN0
dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogc291cmNlLWZpbGUtbmFtZTog
YmFkIGNoZWNrb3V0CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lw
L3Rlc3RzL2xpbnQuc2NtOjQ3Ngpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic291cmNlLWZp
bGUtbmFtZTogYmFkIGNoZWNrb3V0IgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5z
CisgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgIChsZXQgKChwa2cgKGR1bW15LXBhY2th
Z2UKKyAgICAgICAgICAgICAgICAgICAgICAieCIKKyAgICAgICAgICAgICAgICAgICAgICAodmVy
c2lvbiAiMy4yLjEiKQorICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChvcmlnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ldGhvZCBn
aXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20veC5naXQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCAi
MCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoYTI1NiAlbnVsbC1zaGEyNTYpKSkp
KSkKKyAgICAgICAgICAgKGNoZWNrLXNvdXJjZS1maWxlLW5hbWUgcGtnKSkpCisgICAgICAgImZp
bGUgbmFtZSBzaG91bGQgY29udGFpbiB0aGUgcGFja2FnZSBuYW1lIikpKQphY3R1YWwtdmFsdWU6
ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBzb3VyY2UtZmlsZS1uYW1lOiBnb29kIGNoZWNr
b3V0CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xp
bnQuc2NtOjQ5Mgpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAic291cmNlLWZpbGUtbmFtZTog
Z29vZCBjaGVja291dCIKKyAgIChub3QgKC0+Ym9vbAorICAgICAgICAgIChzdHJpbmctY29udGFp
bnMKKyAgICAgICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAgICAgIChsZXQgKChwa2cg
KGR1bW15LXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZlcnNpb24gIjMuMi4xIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yaWdpbgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cDovL2dpdC5leGFtcGxlLmNvbS94Lmdp
dCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21taXQgIjAiKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVu
ZCAieC0iIHZlcnNpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaGEyNTYg
JW51bGwtc2hhMjU2KSkpKSkpCisgICAgICAgICAgICAgICAgKGNoZWNrLXNvdXJjZS1maWxlLW5h
bWUgcGtnKSkpCisgICAgICAgICAgICAiZmlsZSBuYW1lIHNob3VsZCBjb250YWluIHRoZSBwYWNr
YWdlIG5hbWUiKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBz
b3VyY2UtZmlsZS1uYW1lOiB2YWxpZApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3Vp
eC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTo1MTAKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAg
InNvdXJjZS1maWxlLW5hbWU6IHZhbGlkIgorICAgKG5vdCAoLT5ib29sCisgICAgICAgICAgKHN0
cmluZy1jb250YWlucworICAgICAgICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgICAgICAg
KGxldCAoKHBrZyAoZHVtbXktcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIngi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAiMy4yLjEiKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
b3JpZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVyaSAiaHR0cDovL3d3dy5leGFtcGxl
LmNvbS94LTMuMi4xLnRhci5neiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNo
YTI1NiAlbnVsbC1zaGEyNTYpKSkpKSkKKyAgICAgICAgICAgICAgICAoY2hlY2stc291cmNlLWZp
bGUtbmFtZSBwa2cpKSkKKyAgICAgICAgICAgICJmaWxlIG5hbWUgc2hvdWxkIGNvbnRhaW4gdGhl
IHBhY2thZ2UgbmFtZSIpKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5h
bWU6IHNvdXJjZTogMjAwCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhf
d2lwL3Rlc3RzL2xpbnQuc2NtOjUyNgpzb3VyY2U6CisgKHRlc3QtZXF1YWwKKyAgICJzb3VyY2U6
IDIwMCIKKyAgICIiCisgICAod2l0aC13YXJuaW5ncworICAgICAod2l0aC1odHRwLXNlcnZlcgor
ICAgICAgIDIwMAorICAgICAgICVsb25nLXN0cmluZworICAgICAgIChsZXQgKChwa2cgKHBhY2th
Z2UKKyAgICAgICAgICAgICAgICAgICAgKGluaGVyaXQgKGR1bW15LXBhY2thZ2UgIngiKSkKKyAg
ICAgICAgICAgICAgICAgICAgKHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgIChvcmlnaW4K
KyAgICAgICAgICAgICAgICAgICAgICAgIChtZXRob2QgdXJsLWZldGNoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgKHVyaSAlbG9jYWwtdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNo
YTI1NiAlbnVsbC1zaGEyNTYpKSkpKSkKKyAgICAgICAgIChjaGVjay1zb3VyY2UgcGtnKSkpKSkK
ZXhwZWN0ZWQtdmFsdWU6IAphY3R1YWwtdmFsdWU6IApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTog
c291cmNlOiAyMDAgYnV0IHNob3J0IGxlbmd0aApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTo1MzkKc291cmNlOgorICh0ZXN0LWFzc2Vy
dAorICAgInNvdXJjZTogMjAwIGJ1dCBzaG9ydCBsZW5ndGgiCisgICAoLT5ib29sCisgICAgIChz
dHJpbmctY29udGFpbnMKKyAgICAgICAod2l0aC13YXJuaW5ncworICAgICAgICAgKHdpdGgtaHR0
cC1zZXJ2ZXIKKyAgICAgICAgICAgMjAwCisgICAgICAgICAgICJUaGlzIGlzIHRvbyBzbWFsbC4i
CisgICAgICAgICAgIChsZXQgKChwa2cgKHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IChpbmhlcml0IChkdW1teS1wYWNrYWdlICJ4IikpCisgICAgICAgICAgICAgICAgICAgICAgICAo
c291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmlnaW4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobWV0aG9kIHVybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodXJpICVsb2NhbC11cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoYTI1
NiAlbnVsbC1zaGEyNTYpKSkpKSkKKyAgICAgICAgICAgICAoY2hlY2stc291cmNlIHBrZykpKSkK
KyAgICAgICAic3VzcGljaW91c2x5IHNtYWxsIikpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDog
UEFTUwoKdGVzdC1uYW1lOiBzb3VyY2U6IDQwNApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9E
ZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTo1NTQKc291cmNlOgorICh0ZXN0LWFzc2Vy
dAorICAgInNvdXJjZTogNDA0IgorICAgKC0+Ym9vbAorICAgICAoc3RyaW5nLWNvbnRhaW5zCisg
ICAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAgICh3aXRoLWh0dHAtc2VydmVyCisgICAgICAg
ICAgIDQwNAorICAgICAgICAgICAlbG9uZy1zdHJpbmcKKyAgICAgICAgICAgKGxldCAoKHBrZyAo
cGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgKGluaGVyaXQgKGR1bW15LXBhY2thZ2Ug
IngiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG9yaWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXRob2QgdXJs
LWZldGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmkgJWxvY2FsLXVybCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hhMjU2ICVudWxsLXNoYTI1NikpKSkpKQorICAg
ICAgICAgICAgIChjaGVjay1zb3VyY2UgcGtnKSkpKQorICAgICAgICJub3QgcmVhY2hhYmxlOiA0
MDQiKSkpCmFjdHVhbC12YWx1ZTogI3QKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGN2ZQpsb2Nh
dGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTo1
NjgKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImN2ZSIKKyAgIChtb2NrICgoZ3VpeCBzY3Jp
cHRzIGxpbnQpCisgICAgICAgICAgcGFja2FnZS12dWxuZXJhYmlsaXRpZXMKKyAgICAgICAgICAo
Y29uc3QgJygpKSkKKyAgICAgICAgIChzdHJpbmctbnVsbD8KKyAgICAgICAgICAgKHdpdGgtd2Fy
bmluZ3MKKyAgICAgICAgICAgICAoY2hlY2stdnVsbmVyYWJpbGl0aWVzIChkdW1teS1wYWNrYWdl
ICJ4IikpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBjdmU6
IG9uZSB2dWxuZXJhYmlsaXR5CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1
aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjU3Mwpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiY3Zl
OiBvbmUgdnVsbmVyYWJpbGl0eSIKKyAgIChtb2NrICgoZ3VpeCBzY3JpcHRzIGxpbnQpCisgICAg
ICAgICAgcGFja2FnZS12dWxuZXJhYmlsaXRpZXMKKyAgICAgICAgICAobGFtYmRhIChwYWNrYWdl
KQorICAgICAgICAgICAgKGxpc3QgKG1ha2Utc3RydWN0CisgICAgICAgICAgICAgICAgICAgIChA
QCAoZ3VpeCBjdmUpIDx2dWxuZXJhYmlsaXR5PikKKyAgICAgICAgICAgICAgICAgICAgMAorICAg
ICAgICAgICAgICAgICAgICAiQ1ZFLTIwMTUtMTIzNCIKKyAgICAgICAgICAgICAgICAgICAgKGxp
c3QgKGNvbnMgKHBhY2thZ2UtbmFtZSBwYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocGFja2FnZS12ZXJzaW9uIHBhY2thZ2UpKSkpKSkpCisgICAgICAgICAoc3RyaW5n
LWNvbnRhaW5zCisgICAgICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAgICAgKGNoZWNr
LXZ1bG5lcmFiaWxpdGllcworICAgICAgICAgICAgICAgKGR1bW15LXBhY2thZ2UgInBpIiAodmVy
c2lvbiAiMy4xNCIpKSkpCisgICAgICAgICAgICJ2dWxuZXJhYmxlIHRvIENWRS0yMDE1LTEyMzQi
KSkpCmFjdHVhbC12YWx1ZTogNzYKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGN2ZTogb25lIHBh
dGNoZWQgdnVsbmVyYWJpbGl0eQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9n
dWl4X3dpcC90ZXN0cy9saW50LnNjbTo1ODUKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImN2
ZTogb25lIHBhdGNoZWQgdnVsbmVyYWJpbGl0eSIKKyAgIChtb2NrICgoZ3VpeCBzY3JpcHRzIGxp
bnQpCisgICAgICAgICAgcGFja2FnZS12dWxuZXJhYmlsaXRpZXMKKyAgICAgICAgICAobGFtYmRh
IChwYWNrYWdlKQorICAgICAgICAgICAgKGxpc3QgKG1ha2Utc3RydWN0CisgICAgICAgICAgICAg
ICAgICAgIChAQCAoZ3VpeCBjdmUpIDx2dWxuZXJhYmlsaXR5PikKKyAgICAgICAgICAgICAgICAg
ICAgMAorICAgICAgICAgICAgICAgICAgICAiQ1ZFLTIwMTUtMTIzNCIKKyAgICAgICAgICAgICAg
ICAgICAgKGxpc3QgKGNvbnMgKHBhY2thZ2UtbmFtZSBwYWNrYWdlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAocGFja2FnZS12ZXJzaW9uIHBhY2thZ2UpKSkpKSkpCisgICAgICAg
ICAoc3RyaW5nLW51bGw/CisgICAgICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAgICAg
KGNoZWNrLXZ1bG5lcmFiaWxpdGllcworICAgICAgICAgICAgICAgKGR1bW15LXBhY2thZ2UKKyAg
ICAgICAgICAgICAgICAgInBpIgorICAgICAgICAgICAgICAgICAodmVyc2lvbiAiMy4xNCIpCisg
ICAgICAgICAgICAgICAgIChzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAoZHVtbXktb3JpZ2lu
CisgICAgICAgICAgICAgICAgICAgICAocGF0Y2hlcyAobGlzdCAiL2EvYi9waS1DVkUtMjAxNS0x
MjM0LnBhdGNoIikpKSkpKSkpKSkKYWN0dWFsLXZhbHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3Qt
bmFtZTogY3ZlOiBwYXRjaGVkIHZ1bG5lcmFiaWxpdHkgaW4gcmVwbGFjZW1lbnQKbG9jYXRpb246
IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5zY206NjAyCnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJjdmU6IHBhdGNoZWQgdnVsbmVyYWJpbGl0eSBpbiBy
ZXBsYWNlbWVudCIKKyAgIChtb2NrICgoZ3VpeCBzY3JpcHRzIGxpbnQpCisgICAgICAgICAgcGFj
a2FnZS12dWxuZXJhYmlsaXRpZXMKKyAgICAgICAgICAobGFtYmRhIChwYWNrYWdlKQorICAgICAg
ICAgICAgKGxpc3QgKG1ha2Utc3RydWN0CisgICAgICAgICAgICAgICAgICAgIChAQCAoZ3VpeCBj
dmUpIDx2dWxuZXJhYmlsaXR5PikKKyAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAg
ICAgICAgICAiQ1ZFLTIwMTUtMTIzNCIKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGNvbnMg
KHBhY2thZ2UtbmFtZSBwYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cGFja2FnZS12ZXJzaW9uIHBhY2thZ2UpKSkpKSkpCisgICAgICAgICAoc3RyaW5nLW51bGw/Cisg
ICAgICAgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgICAgICAgKGNoZWNrLXZ1bG5lcmFiaWxp
dGllcworICAgICAgICAgICAgICAgKGR1bW15LXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgInBp
IgorICAgICAgICAgICAgICAgICAodmVyc2lvbiAiMy4xNCIpCisgICAgICAgICAgICAgICAgIChz
b3VyY2UgKGR1bW15LW9yaWdpbikpCisgICAgICAgICAgICAgICAgIChyZXBsYWNlbWVudAorICAg
ICAgICAgICAgICAgICAgIChkdW1teS1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAicGki
CisgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAiMy4xNCIpCisgICAgICAgICAgICAgICAg
ICAgICAoc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgIChkdW1teS1vcmlnaW4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGxpc3QgIi9hL2IvcGktQ1ZFLTIwMTUtMTIzNC5wYXRjaCIpKSkpKSkpKSkpKSkKYWN0dWFsLXZh
bHVlOiAjdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZm9ybWF0dGluZzogbG9uZWx5IHBhcmVu
dGhlc2VzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3Rz
L2xpbnQuc2NtOjYyMQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZm9ybWF0dGluZzogbG9u
ZWx5IHBhcmVudGhlc2VzIgorICAgKHN0cmluZy1jb250YWlucworICAgICAod2l0aC13YXJuaW5n
cworICAgICAgIChjaGVjay1mb3JtYXR0aW5nCisgICAgICAgICAoZHVtbXktcGFja2FnZSAidWds
eSBhcyBoZWxsISIpKSkKKyAgICAgImxvbmVseSIpKQphY3R1YWwtdmFsdWU6IDEwMQpyZXN1bHQ6
IFBBU1MKCnRlc3QtbmFtZTogZm9ybWF0dGluZzogdGFidWxhdGlvbgpsb2NhdGlvbjogL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9saW50LnNjbTo2MzEKc291cmNlOgor
ICh0ZXN0LWFzc2VydAorICAgImZvcm1hdHRpbmc6IHRhYnVsYXRpb24iCisgICAoc3RyaW5nLWNv
bnRhaW5zCisgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgKGNoZWNrLWZvcm1hdHRpbmcKKyAg
ICAgICAgIChkdW1teS1wYWNrYWdlICJsZWF2ZSB0aGUgdGFiIGhlcmU6XHQiKSkpCisgICAgICJ0
YWJ1bGF0aW9uIikpCmFjdHVhbC12YWx1ZTogODIKcmVzdWx0OiBQQVNTCgp0ZXN0LW5hbWU6IGZv
cm1hdHRpbmc6IHRyYWlsaW5nIHdoaXRlIHNwYWNlCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNo
L0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xpbnQuc2NtOjYzNwpzb3VyY2U6CisgKHRlc3QtYXNz
ZXJ0CisgICAiZm9ybWF0dGluZzogdHJhaWxpbmcgd2hpdGUgc3BhY2UiCisgICAoc3RyaW5nLWNv
bnRhaW5zCisgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgKGNoZWNrLWZvcm1hdHRpbmcgKGR1
bW15LXBhY2thZ2UgIngiKSkpCisgICAgICJ0cmFpbGluZyB3aGl0ZSBzcGFjZSIpKQphY3R1YWwt
dmFsdWU6IDYzCnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBmb3JtYXR0aW5nOiBsb25nIGxpbmUK
bG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvbGludC5z
Y206NjQ0CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJmb3JtYXR0aW5nOiBsb25nIGxpbmUi
CisgICAoc3RyaW5nLWNvbnRhaW5zCisgICAgICh3aXRoLXdhcm5pbmdzCisgICAgICAgKGNoZWNr
LWZvcm1hdHRpbmcgKGR1bW15LXBhY2thZ2UgIngiKSkpCisgICAgICJ0b28gbG9uZyIpKQphY3R1
YWwtdmFsdWU6IDc4CnJlc3VsdDogUEFTUwoKdGVzdC1uYW1lOiBmb3JtYXR0aW5nOiBhbHJpZ2h0
CmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2xpbnQu
c2NtOjY1Mgpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiZm9ybWF0dGluZzogYWxyaWdodCIK
KyAgIChzdHJpbmctbnVsbD8KKyAgICAgKHdpdGgtd2FybmluZ3MKKyAgICAgICAoY2hlY2stZm9y
bWF0dGluZyAoZHVtbXktcGFja2FnZSAieCIpKSkpKQphY3R1YWwtdmFsdWU6ICN0CnJlc3VsdDog
UEFTUwoKcmFuZG9tIHNlZWQgZm9yIHRlc3RzOiAxNDY5ODI3NjQ3CgpGQUlMOiB0ZXN0cy9jb250
YWluZXJzCj09PT09PT09PT09PT09PT09PT09PT0KCnRlc3QtbmFtZTogY2FsbC13aXRoLWNvbnRh
aW5lciwgZXhpdCB3aXRoIDAgd2hlbiB0aGVyZSBpcyBubyBlcnJvcgpsb2NhdGlvbjogL2hvbWUv
c2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90ZXN0cy9jb250YWluZXJzLnNjbTo0MApzb3Vy
Y2U6CisgKHRlc3QtYXNzZXJ0CisgICAiY2FsbC13aXRoLWNvbnRhaW5lciwgZXhpdCB3aXRoIDAg
d2hlbiB0aGVyZSBpcyBubyBlcnJvciIKKyAgICh6ZXJvPyAoY2FsbC13aXRoLWNvbnRhaW5lcgor
ICAgICAgICAgICAgJygpCisgICAgICAgICAgICAoY29uc3QgI3QpCisgICAgICAgICAgICAjOm5h
bWVzcGFjZXMKKyAgICAgICAgICAgICcodXNlcikpKSkKYWN0dWFsLXZhbHVlOiAjZgphY3R1YWwt
ZXJyb3I6CisgKHN5c3RlbS1lcnJvcgorICAgImNsb25lIgorICAgIn5kOiB+QSIKKyAgICgyNjg0
MzU0NzMgIk9wZXJhdGlvbiBub3QgcGVybWl0dGVkIikKKyAgICgxKSkKcmVzdWx0OiBGQUlMCgp0
ZXN0LW5hbWU6IGNhbGwtd2l0aC1jb250YWluZXIsIHVzZXIgbmFtZXNwYWNlCmxvY2F0aW9uOiAv
aG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL2NvbnRhaW5lcnMuc2NtOjQ1
CnNvdXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJjYWxsLXdpdGgtY29udGFpbmVyLCB1c2VyIG5h
bWVzcGFjZSIKKyAgICh6ZXJvPyAoY2FsbC13aXRoLWNvbnRhaW5lcgorICAgICAgICAgICAgJygp
CisgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgIChhc3NlcnQtZXhpdAorICAg
ICAgICAgICAgICAgIChhbmQgKHplcm8/IChnZXR1aWQpKSAoemVybz8gKGdldGdpZCkpKSkpCisg
ICAgICAgICAgICAjOm5hbWVzcGFjZXMKKyAgICAgICAgICAgICcodXNlcikpKSkKYWN0dWFsLXZh
bHVlOiAjZgphY3R1YWwtZXJyb3I6CisgKHN5c3RlbS1lcnJvcgorICAgImNsb25lIgorICAgIn5k
OiB+QSIKKyAgICgyNjg0MzU0NzMgIk9wZXJhdGlvbiBub3QgcGVybWl0dGVkIikKKyAgICgxKSkK
cmVzdWx0OiBGQUlMCgp0ZXN0LW5hbWU6IGNhbGwtd2l0aC1jb250YWluZXIsIHV0cyBuYW1lc3Bh
Y2UKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvY29u
dGFpbmVycy5zY206NTQKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImNhbGwtd2l0aC1jb250
YWluZXIsIHV0cyBuYW1lc3BhY2UiCisgICAoemVybz8gKGNhbGwtd2l0aC1jb250YWluZXIKKyAg
ICAgICAgICAgICcoKQorICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAoc2V0
aG9zdG5hbWUgInRlc3QtY29udGFpbmVyIikKKyAgICAgICAgICAgICAgKHByaW1pdGl2ZS1leGl0
IDApKQorICAgICAgICAgICAgIzpuYW1lc3BhY2VzCisgICAgICAgICAgICAnKHVzZXIgdXRzKSkp
KQphY3R1YWwtdmFsdWU6ICNmCmFjdHVhbC1lcnJvcjoKKyAoc3lzdGVtLWVycm9yCisgICAiY2xv
bmUiCisgICAifmQ6IH5BIgorICAgKDMzNTU0NDMzNyAiT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQi
KQorICAgKDEpKQpyZXN1bHQ6IEZBSUwKCnRlc3QtbmFtZTogY2FsbC13aXRoLWNvbnRhaW5lciwg
cGlkIG5hbWVzcGFjZQpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dp
cC90ZXN0cy9jb250YWluZXJzLnNjbTo2NQpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiY2Fs
bC13aXRoLWNvbnRhaW5lciwgcGlkIG5hbWVzcGFjZSIKKyAgICh6ZXJvPyAoY2FsbC13aXRoLWNv
bnRhaW5lcgorICAgICAgICAgICAgJygpCisgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAg
ICAgICAgIChtYXRjaCAocHJpbWl0aXZlLWZvcmspCisgICAgICAgICAgICAgICAgICAgICAoMCAo
YXNzZXJ0LWV4aXQgKD0gMiAoZ2V0cGlkKSkpKQorICAgICAgICAgICAgICAgICAgICAgKHBpZCAo
cHJpbWl0aXZlLWV4aXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHdhaXRw
aWQgcGlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8gLiBzdGF0dXMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdHVzOmV4aXQtdmFsIHN0
YXR1cykpKSkpKSkKKyAgICAgICAgICAgICM6bmFtZXNwYWNlcworICAgICAgICAgICAgJyh1c2Vy
IHBpZCkpKSkKYWN0dWFsLXZhbHVlOiAjZgphY3R1YWwtZXJyb3I6CisgKHN5c3RlbS1lcnJvcgor
ICAgImNsb25lIgorICAgIn5kOiB+QSIKKyAgICg4MDUzMDYzODUgIk9wZXJhdGlvbiBub3QgcGVy
bWl0dGVkIikKKyAgICgxKSkKcmVzdWx0OiBGQUlMCgp0ZXN0LW5hbWU6IGNhbGwtd2l0aC1jb250
YWluZXIsIG1udCBuYW1lc3BhY2UKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgv
Z3VpeF93aXAvdGVzdHMvY29udGFpbmVycy5zY206ODEKc291cmNlOgorICh0ZXN0LWFzc2VydAor
ICAgImNhbGwtd2l0aC1jb250YWluZXIsIG1udCBuYW1lc3BhY2UiCisgICAoemVybz8gKGNhbGwt
d2l0aC1jb250YWluZXIKKyAgICAgICAgICAgICcoKCJub25lIiBkZXZpY2UgIi90ZXN0aW5nIiAi
dG1wZnMiICgpICNmICNmKSkKKyAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAg
KGFzc2VydC1leGl0IChmaWxlLWV4aXN0cz8gIi90ZXN0aW5nIikpKQorICAgICAgICAgICAgIzpu
YW1lc3BhY2VzCisgICAgICAgICAgICAnKHVzZXIgbW50KSkpKQphY3R1YWwtdmFsdWU6ICNmCmFj
dHVhbC1lcnJvcjoKKyAoc3lzdGVtLWVycm9yCisgICAiY2xvbmUiCisgICAifmQ6IH5BIgorICAg
KDI2ODU2NjU0NSAiT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQiKQorICAgKDEpKQpyZXN1bHQ6IEZB
SUwKCnRlc3QtbmFtZTogY2FsbC13aXRoLWNvbnRhaW5lciwgbW50IG5hbWVzcGFjZSwgd3Jvbmcg
YmluZCBtb3VudApsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0cy9jb250YWluZXJzLnNjbTo4OQpzb3VyY2U6CisgKHRlc3QtZXF1YWwKKyAgICJjYWxsLXdp
dGgtY29udGFpbmVyLCBtbnQgbmFtZXNwYWNlLCB3cm9uZyBiaW5kIG1vdW50IgorICAgYChzeXN0
ZW0tZXJyb3IgLEVOT0VOVCkKKyAgIChjYXRjaCAnc3lzdGVtLWVycm9yCisgICAgICAgICAgKGxh
bWJkYSAoKQorICAgICAgICAgICAgKGNhbGwtd2l0aC1jb250YWluZXIKKyAgICAgICAgICAgICAg
JygoIi9kb2VzLW5vdC1leGlzdCIKKyAgICAgICAgICAgICAgICAgZGV2aWNlCisgICAgICAgICAg
ICAgICAgICIvZm9vIgorICAgICAgICAgICAgICAgICAibm9uZSIKKyAgICAgICAgICAgICAgICAg
KGJpbmQtbW91bnQpCisgICAgICAgICAgICAgICAgICNmCisgICAgICAgICAgICAgICAgICNmKSkK
KyAgICAgICAgICAgICAgKGNvbnN0ICN0KQorICAgICAgICAgICAgICAjOm5hbWVzcGFjZXMKKyAg
ICAgICAgICAgICAgJyh1c2VyIG1udCkpKQorICAgICAgICAgIChsYW1iZGEgYXJncworICAgICAg
ICAgICAgKGxpc3QgJ3N5c3RlbS1lcnJvciAoc3lzdGVtLWVycm9yLWVycm5vIGFyZ3MpKSkpKQpl
eHBlY3RlZC12YWx1ZTogKHN5c3RlbS1lcnJvciAyKQphY3R1YWwtdmFsdWU6IChzeXN0ZW0tZXJy
b3IgMSkKcmVzdWx0OiBGQUlMCgp0ZXN0LW5hbWU6IGNhbGwtd2l0aC1jb250YWluZXIsIGFsbCBu
YW1lc3BhY2VzCmxvY2F0aW9uOiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3RzL2NvbnRhaW5lcnMuc2NtOjEwMgpzb3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAiY2FsbC13
aXRoLWNvbnRhaW5lciwgYWxsIG5hbWVzcGFjZXMiCisgICAoemVybz8gKGNhbGwtd2l0aC1jb250
YWluZXIKKyAgICAgICAgICAgICcoKQorICAgICAgICAgICAgKGxhbWJkYSAoKSAocHJpbWl0aXZl
LWV4aXQgMCkpKSkpCmFjdHVhbC12YWx1ZTogI2YKYWN0dWFsLWVycm9yOgorIChzeXN0ZW0tZXJy
b3IKKyAgICJjbG9uZSIKKyAgICJ+ZDogfkEiCisgICAoMjA4MDUwNTg3MyAiT3BlcmF0aW9uIG5v
dCBwZXJtaXR0ZWQiKQorICAgKDEpKQpyZXN1bHQ6IEZBSUwKCnRlc3QtbmFtZTogY29udGFpbmVy
LWV4Y3Vyc2lvbgpsb2NhdGlvbjogL2hvbWUvc2FwaWVudGVjaC9EZXYvZ3VpeC9ndWl4X3dpcC90
ZXN0cy9jb250YWluZXJzLnNjbToxMDkKc291cmNlOgorICh0ZXN0LWFzc2VydAorICAgImNvbnRh
aW5lci1leGN1cnNpb24iCisgICAoY2FsbC13aXRoLXRlbXBvcmFyeS1kaXJlY3RvcnkKKyAgICAg
KGxhbWJkYSAocm9vdCkKKyAgICAgICAobWF0Y2ggKGxpc3QgKHBpcGUpIChwaXBlKSkKKyAgICAg
ICAgICAgICAgKCgoc3RhcnQtaW4gLiBzdGFydC1vdXQpIChlbmQtaW4gLiBlbmQtb3V0KSkKKyAg
ICAgICAgICAgICAgIChkZWZpbmUgKGNvbnRhaW5lcikKKyAgICAgICAgICAgICAgICAgKGNsb3Nl
IGVuZC1vdXQpCisgICAgICAgICAgICAgICAgIChjbG9zZSBzdGFydC1pbikKKyAgICAgICAgICAg
ICAgICAgKHdyaXRlICdyZWFkeSBzdGFydC1vdXQpCisgICAgICAgICAgICAgICAgIChjbG9zZSBz
dGFydC1vdXQpCisgICAgICAgICAgICAgICAgIChyZWFkIGVuZC1pbikKKyAgICAgICAgICAgICAg
ICAgKGNsb3NlIGVuZC1pbikpCisgICAgICAgICAgICAgICAoZGVmaW5lIChuYW1lc3BhY2VzIHBp
ZCkKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBpZCAobnVtYmVyLT5zdHJpbmcgcGlkKSkpCisg
ICAgICAgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChucykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHJlYWRsaW5rIChzdHJpbmctYXBwZW5kICIvcHJvYy8iIHBpZCAiL25zLyIgbnMpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICcoInVzZXIiICJpcGMiICJ1dHMiICJuZXQiICJwaWQi
ICJtbnQiKSkpKQorICAgICAgICAgICAgICAgKGxldCogKChwaWQgKHJ1bi1jb250YWluZXIgcm9v
dCAnKCkgJW5hbWVzcGFjZXMgMSBjb250YWluZXIpKQorICAgICAgICAgICAgICAgICAgICAgIChj
b250YWluZXItbmFtZXNwYWNlcyAobmFtZXNwYWNlcyBwaWQpKQorICAgICAgICAgICAgICAgICAg
ICAgIChyZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2xvc2Ugc3RhcnQtb3V0KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAocmVhZCBzdGFydC1pbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlIHN0YXJ0
LWluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGFpbmVyLWV4Y3Vyc2lvbgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocHJpbWl0
aXZlLWZvcmspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc2VydC1leGl0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsPworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLW5hbWVzcGFjZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lc3BhY2VzIChnZXRwaWQpKSkpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JrLXBpZAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICh3YWl0cGlkIGZvcmstcGlkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXyAuIHN0YXR1
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW1p
dGl2ZS1leGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN0YXR1czpleGl0LXZhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzKSkpKSkpKSkpKSkKKyAgICAgICAgICAgICAgICAgKGNsb3Nl
IGVuZC1pbikKKyAgICAgICAgICAgICAgICAgKHdyaXRlICdkb25lIGVuZC1vdXQpCisgICAgICAg
ICAgICAgICAgIChjbG9zZSBlbmQtb3V0KQorICAgICAgICAgICAgICAgICAod2FpdHBpZCBwaWQp
CisgICAgICAgICAgICAgICAgICh6ZXJvPyByZXN1bHQpKSkpKSkpCmFjdHVhbC12YWx1ZTogI2YK
YWN0dWFsLWVycm9yOgorIChzeXN0ZW0tZXJyb3IKKyAgICJjbG9uZSIKKyAgICJ+ZDogfkEiCisg
ICAoMjA4MDUwNTg3MyAiT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQiKQorICAgKDEpKQpyZXN1bHQ6
IEZBSUwKCgpTS0lQOiB0ZXN0cy9weXBpCj09PT09PT09PT09PT09PT0KCnRlc3QtbmFtZTogZ3Vp
eC1wYWNrYWdlLT5weXBpLW5hbWUsIG9sZCBVUkwgc3R5bGUKbG9jYXRpb246IC9ob21lL3NhcGll
bnRlY2gvRGV2L2d1aXgvZ3VpeF93aXAvdGVzdHMvcHlwaS5zY206NzYKc291cmNlOgorICh0ZXN0
LWVxdWFsCisgICAiZ3VpeC1wYWNrYWdlLT5weXBpLW5hbWUsIG9sZCBVUkwgc3R5bGUiCisgICAi
cHN1dGlsIgorICAgKGd1aXgtcGFja2FnZS0+cHlwaS1uYW1lCisgICAgIChkdW1teS1wYWNrYWdl
CisgICAgICAgImZvbyIKKyAgICAgICAoc291cmNlCisgICAgICAgICAoZHVtbXktb3JpZ2luCisg
ICAgICAgICAgICh1cmkgImh0dHBzOi8vcHlwaS5pby9wYWNrYWdlcy9zb3VyY2UvcC9wc3V0aWwv
cHN1dGlsLTQuMy4wLnRhci5neiIpKSkpKSkKZXhwZWN0ZWQtdmFsdWU6IHBzdXRpbAphY3R1YWwt
dmFsdWU6IHBzdXRpbApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogZ3VpeC1wYWNrYWdlLT5weXBp
LW5hbWUsIG5ldyBVUkwgc3R5bGUKbG9jYXRpb246IC9ob21lL3NhcGllbnRlY2gvRGV2L2d1aXgv
Z3VpeF93aXAvdGVzdHMvcHlwaS5zY206ODQKc291cmNlOgorICh0ZXN0LWVxdWFsCisgICAiZ3Vp
eC1wYWNrYWdlLT5weXBpLW5hbWUsIG5ldyBVUkwgc3R5bGUiCisgICAiY2VydGJvdCIKKyAgIChn
dWl4LXBhY2thZ2UtPnB5cGktbmFtZQorICAgICAoZHVtbXktcGFja2FnZQorICAgICAgICJmb28i
CisgICAgICAgKHNvdXJjZQorICAgICAgICAgKGR1bW15LW9yaWdpbgorICAgICAgICAgICAodXJp
ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9hMi8zYi80NzU2ZTZhMGNlYjE0ZTA4
NDA0MmEyYTY1YzYxNWQ2OGQyNTYyMWM2ZmQ0NDZkMGZjMTBkMTRjNGNlN2QvY2VydGJvdC0wLjgu
MS50YXIuZ3oiKSkpKSkpCmV4cGVjdGVkLXZhbHVlOiBjZXJ0Ym90CmFjdHVhbC12YWx1ZTogY2Vy
dGJvdApyZXN1bHQ6IFBBU1MKCnRlc3QtbmFtZTogcHlwaS0+Z3VpeC1wYWNrYWdlCmxvY2F0aW9u
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3B5cGkuc2NtOjkyCnNv
dXJjZToKKyAodGVzdC1hc3NlcnQKKyAgICJweXBpLT5ndWl4LXBhY2thZ2UiCisgICAobW9jayAo
KGd1aXggaW1wb3J0IHV0aWxzKQorICAgICAgICAgIHVybC1mZXRjaAorICAgICAgICAgIChsYW1i
ZGEgKHVybCBmaWxlLW5hbWUpCisgICAgICAgICAgICAobWF0Y2ggdXJsCisgICAgICAgICAgICAg
ICAgICAgKCJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Zvby9qc29uIgorICAgICAgICAg
ICAgICAgICAgICAod2l0aC1vdXRwdXQtdG8tZmlsZQorICAgICAgICAgICAgICAgICAgICAgIGZp
bGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGRpc3BsYXkgdGVzdC1q
c29uKSkpKQorICAgICAgICAgICAgICAgICAgICgiaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28tMS4w
LjAudGFyLmd6IgorICAgICAgICAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgICAgICAg
ICAgICAobWtkaXIgImZvby0xLjAuMCIpCisgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtb3V0
cHV0LXRvLWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28tMS4wLjAvcmVxdWlyZW1l
bnRzLnR4dCIKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGRpc3BsYXkgdGVz
dC1yZXF1aXJlbWVudHMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtKiAidGFyIiAi
Y3p2ZiIgZmlsZS1uYW1lICJmb28tMS4wLjAvIikKKyAgICAgICAgICAgICAgICAgICAgICAoZGVs
ZXRlLWZpbGUtcmVjdXJzaXZlbHkgImZvby0xLjAuMCIpCisgICAgICAgICAgICAgICAgICAgICAg
KHNldCEgdGVzdC1zb3VyY2UtaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0
aC1pbnB1dC1maWxlIGZpbGUtbmFtZSBwb3J0LXNoYTI1NikpKSkKKyAgICAgICAgICAgICAgICAg
ICAoImh0dHBzOi8vZXhhbXBsZS5jb20vZm9vLTEuMC4wLXB5Mi5weTMtbm9uZS1hbnkud2hsIgor
ICAgICAgICAgICAgICAgICAgICAjZikKKyAgICAgICAgICAgICAgICAgICAoXyAoZXJyb3IgIlVu
ZXhwZWN0ZWQgVVJMOiAiIHVybCkpKSkpCisgICAgICAgICAobWF0Y2ggKHB5cGktPmd1aXgtcGFj
a2FnZSAiZm9vIikKKyAgICAgICAgICAgICAgICAoKCdwYWNrYWdlCisgICAgICAgICAgICAgICAg
ICAoJ25hbWUgInB5dGhvbi1mb28iKQorICAgICAgICAgICAgICAgICAgKCd2ZXJzaW9uICIxLjAu
MCIpCisgICAgICAgICAgICAgICAgICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgICAgICgnb3Jp
Z2luCisgICAgICAgICAgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0Y2gpCisgICAgICAgICAg
ICAgICAgICAgICgndXJpCisgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAorICAg
ICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28tIgorICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICIudGFyLmd6Iikp
CisgICAgICAgICAgICAgICAgICAgICgnc2hhMjU2ICgnYmFzZTMyICg/IHN0cmluZz8gaGFzaCkp
KSkpCisgICAgICAgICAgICAgICAgICAoJ2J1aWxkLXN5c3RlbSAncHl0aG9uLWJ1aWxkLXN5c3Rl
bSkKKyAgICAgICAgICAgICAgICAgICgnaW5wdXRzCisgICAgICAgICAgICAgICAgICAgKCdxdWFz
aXF1b3RlCisgICAgICAgICAgICAgICAgICAgICgoInB5dGhvbi1iYXIiICgndW5xdW90ZSAncHl0
aG9uLWJhcikpCisgICAgICAgICAgICAgICAgICAgICAoInB5dGhvbi1iYXoiICgndW5xdW90ZSAn
cHl0aG9uLWJheikpCisgICAgICAgICAgICAgICAgICAgICAoInB5dGhvbi1zZXR1cHRvb2xzIgor
ICAgICAgICAgICAgICAgICAgICAgICgndW5xdW90ZSAncHl0aG9uLXNldHVwdG9vbHMpKSkpKQor
ICAgICAgICAgICAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly9leGFtcGxlLmNvbSIpCisgICAg
ICAgICAgICAgICAgICAoJ3N5bm9wc2lzICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAgICAgICgn
ZGVzY3JpcHRpb24gInN1bW1hcnkiKQorICAgICAgICAgICAgICAgICAgKCdsaWNlbnNlICdsZ3Bs
Mi4wKSkKKyAgICAgICAgICAgICAgICAgKHN0cmluZz0/CisgICAgICAgICAgICAgICAgICAgKGJ5
dGV2ZWN0b3ItPm5peC1iYXNlMzItc3RyaW5nIHRlc3Qtc291cmNlLWhhc2gpCisgICAgICAgICAg
ICAgICAgICAgaGFzaCkpCisgICAgICAgICAgICAgICAgKHggKHBrICdmYWlsIHggI2YpKSkpKQpm
b28tMS4wLjAvCmZvby0xLjAuMC9yZXF1aXJlbWVudHMudHh0CmFjdHVhbC12YWx1ZTogI3QKcmVz
dWx0OiBQQVNTCgp0ZXN0LW5hbWU6IHB5cGktPmd1aXgtcGFja2FnZSwgd2hlZWxzCmxvY2F0aW9u
OiAvaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rlc3RzL3B5cGkuc2NtOjE0MQpz
b3VyY2U6CisgKHRlc3QtYXNzZXJ0CisgICAicHlwaS0+Z3VpeC1wYWNrYWdlLCB3aGVlbHMiCisg
ICAobW9jayAoKGd1aXggaW1wb3J0IHV0aWxzKQorICAgICAgICAgIHVybC1mZXRjaAorICAgICAg
ICAgIChsYW1iZGEgKHVybCBmaWxlLW5hbWUpCisgICAgICAgICAgICAobWF0Y2ggdXJsCisgICAg
ICAgICAgICAgICAgICAgKCJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Zvby9qc29uIgor
ICAgICAgICAgICAgICAgICAgICAod2l0aC1vdXRwdXQtdG8tZmlsZQorICAgICAgICAgICAgICAg
ICAgICAgIGZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGRpc3Bs
YXkgdGVzdC1qc29uKSkpKQorICAgICAgICAgICAgICAgICAgICgiaHR0cHM6Ly9leGFtcGxlLmNv
bS9mb28tMS4wLjAudGFyLmd6IgorICAgICAgICAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAg
ICAgICAgICAgICAgICAobWtkaXIgImZvby0xLjAuMCIpCisgICAgICAgICAgICAgICAgICAgICAg
KHdpdGgtb3V0cHV0LXRvLWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28tMS4wLjAv
cmVxdWlyZW1lbnRzLnR4dCIKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGRp
c3BsYXkgdGVzdC1yZXF1aXJlbWVudHMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVt
KiAidGFyIiAiY3p2ZiIgZmlsZS1uYW1lICJmb28tMS4wLjAvIikKKyAgICAgICAgICAgICAgICAg
ICAgICAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkgImZvby0xLjAuMCIpCisgICAgICAgICAgICAg
ICAgICAgICAgKHNldCEgdGVzdC1zb3VyY2UtaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg
KGNhbGwtd2l0aC1pbnB1dC1maWxlIGZpbGUtbmFtZSBwb3J0LXNoYTI1NikpKSkKKyAgICAgICAg
ICAgICAgICAgICAoImh0dHBzOi8vZXhhbXBsZS5jb20vZm9vLTEuMC4wLXB5Mi5weTMtbm9uZS1h
bnkud2hsIgorICAgICAgICAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgICAgICAgICAg
ICAobWtkaXIgImZvby0xLjAuMC5kaXN0LWluZm8iKQorICAgICAgICAgICAgICAgICAgICAgICh3
aXRoLW91dHB1dC10by1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vLTEuMC4wLmRp
c3QtaW5mby9tZXRhZGF0YS5qc29uIgorICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo
KSAoZGlzcGxheSB0ZXN0LW1ldGFkYXRhKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGxldCAo
KHppcC1maWxlIChzdHJpbmctYXBwZW5kIGZpbGUtbmFtZSAiLnppcCIpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChzeXN0ZW0qCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ6aXAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHppcC1maWxlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmb28tMS4wLjAuZGlzdC1pbmZvL21ldGFkYXRhLmpzb24iKQorICAgICAgICAgICAgICAg
ICAgICAgICAgKHJlbmFtZS1maWxlIHppcC1maWxlIGZpbGUtbmFtZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgKGRlbGV0ZS1maWxlLXJlY3Vyc2l2ZWx5ICJmb28tMS4wLjAuZGlzdC1pbmZvIikp
KQorICAgICAgICAgICAgICAgICAgIChfIChlcnJvciAiVW5leHBlY3RlZCBVUkw6ICIgdXJsKSkp
KSkKKyAgICAgICAgIChtYXRjaCAocHlwaS0+Z3VpeC1wYWNrYWdlICJmb28iKQorICAgICAgICAg
ICAgICAgICgoJ3BhY2thZ2UKKyAgICAgICAgICAgICAgICAgICgnbmFtZSAicHl0aG9uLWZvbyIp
CisgICAgICAgICAgICAgICAgICAoJ3ZlcnNpb24gIjEuMC4wIikKKyAgICAgICAgICAgICAgICAg
ICgnc291cmNlCisgICAgICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAg
ICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgICAgKCd1cmkKKyAgICAg
ICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICJo
dHRwczovL2V4YW1wbGUuY29tL2Zvby0iCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgIi50YXIuZ3oiKSkKKyAgICAgICAgICAgICAgICAgICAg
KCdzaGEyNTYgKCdiYXNlMzIgKD8gc3RyaW5nPyBoYXNoKSkpKSkKKyAgICAgICAgICAgICAgICAg
ICgnYnVpbGQtc3lzdGVtICdweXRob24tYnVpbGQtc3lzdGVtKQorICAgICAgICAgICAgICAgICAg
KCdpbnB1dHMKKyAgICAgICAgICAgICAgICAgICAoJ3F1YXNpcXVvdGUKKyAgICAgICAgICAgICAg
ICAgICAgKCgicHl0aG9uLWJhciIgKCd1bnF1b3RlICdweXRob24tYmFyKSkKKyAgICAgICAgICAg
ICAgICAgICAgICgicHl0aG9uLWJheiIgKCd1bnF1b3RlICdweXRob24tYmF6KSkKKyAgICAgICAg
ICAgICAgICAgICAgICgicHl0aG9uLXNldHVwdG9vbHMiCisgICAgICAgICAgICAgICAgICAgICAg
KCd1bnF1b3RlICdweXRob24tc2V0dXB0b29scykpKSkpCisgICAgICAgICAgICAgICAgICAoJ2hv
bWUtcGFnZSAiaHR0cDovL2V4YW1wbGUuY29tIikKKyAgICAgICAgICAgICAgICAgICgnc3lub3Bz
aXMgInN1bW1hcnkiKQorICAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbiAic3VtbWFyeSIp
CisgICAgICAgICAgICAgICAgICAoJ2xpY2Vuc2UgJ2xncGwyLjApKQorICAgICAgICAgICAgICAg
ICAoc3RyaW5nPT8KKyAgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1z
dHJpbmcgdGVzdC1zb3VyY2UtaGFzaCkKKyAgICAgICAgICAgICAgICAgICBoYXNoKSkKKyAgICAg
ICAgICAgICAgICAoeCAocGsgJ2ZhaWwgeCAjZikpKSkpCnJlc3VsdDogU0tJUAoKcmFuZG9tIHNl
ZWQgZm9yIHRlc3RzOiAxNDY5ODI3MTQ2CgpGQUlMOiB0ZXN0cy9ndWl4LWRvd25sb2FkCj09PT09
PT09PT09PT09PT09PT09PT09PT0KCisgZ3VpeCBkb3dubG9hZCAtLXZlcnNpb24KZ3VpeCBkb3du
bG9hZCAoR05VIEd1aXgpIDAuMTAuMApDb3B5cmlnaHQgKEMpIDIwMTYgdGhlIEd1aXggYXV0aG9y
cwpMaWNlbnNlIEdQTHYzKzogR05VIEdQTCB2ZXJzaW9uIDMgb3IgbGF0ZXIgPGh0dHA6Ly9nbnUu
b3JnL2xpY2Vuc2VzL2dwbC5odG1sPgpUaGlzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBhcmUgZnJl
ZSB0byBjaGFuZ2UgYW5kIHJlZGlzdHJpYnV0ZSBpdC4KVGhlcmUgaXMgTk8gV0FSUkFOVFksIHRv
IHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy4KKyBndWl4IGRvd25sb2FkIGh0dHA6Ly9kb2Vz
Lm5vdC9leGlzdAphY2NlcHRlZCBjb25uZWN0aW9uIGZyb20gcGlkIDY5ODksIHVzZXIgc2FwaWVu
dGVjaAoKU3RhcnRpbmcgZG93bmxvYWQgb2YgL3RtcC9ndWl4LWZpbGUuNTRPUVFOCkZyb20gaHR0
cDovL2RvZXMubm90L2V4aXN0Li4uCg0bW0sgZXhpc3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDBCL3MgMDA6MDAgfCAwQiB0cmFuc2ZlcnJlZA0bW0sgZXhp
c3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5MEtpQi9zIDAwOjAw
IHwgMzE5QiB0cmFuc2ZlcnJlZAovaG9tZS9zYXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3Rl
c3QtdG1wL3N0b3JlL2hpNWhtZmwxMTdicmk1Yzc5aTk2ZmI3eW1pcDRjYjQzLWV4aXN0CjFpcG1i
ampnaWYxZjZhNzdqOTFzMnk5ODl5NnNnazNmaDRqaXljYnFxczZ2Mmk4MjdsN3MKKyBmYWxzZQou
L3Rlc3QtZW52OiBsaW5lIDE6ICA2OTgwIFRlcm1pbmF0ZWQgICAgICAgICAgICAgICIvaG9tZS9z
YXBpZW50ZWNoL0Rldi9ndWl4L2d1aXhfd2lwL3ByZS1pbnN0LWVudiIgIi9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvZ3VpeC1kYWVtb24iIC0tZGlzYWJsZS1jaHJvb3QgLS1zdWJz
dGl0dXRlLXVybHM9IiRHVUlYX0JJTkFSWV9TVUJTVElUVVRFX1VSTCIKRkFJTCB0ZXN0cy9ndWl4
LWRvd25sb2FkLnNoIChleGl0IHN0YXR1czogMSkKCkZBSUw6IHRlc3RzL2d1aXgtZW52aXJvbm1l
bnQtY29udGFpbmVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgorIHNl
dCAtZQorIGd1aXggZW52aXJvbm1lbnQgLS12ZXJzaW9uCmd1aXggZW52aXJvbm1lbnQgKEdOVSBH
dWl4KSAwLjEwLjAKQ29weXJpZ2h0IChDKSAyMDE2IHRoZSBHdWl4IGF1dGhvcnMKTGljZW5zZSBH
UEx2Mys6IEdOVSBHUEwgdmVyc2lvbiAzIG9yIGxhdGVyIDxodHRwOi8vZ251Lm9yZy9saWNlbnNl
cy9ncGwuaHRtbD4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdl
IGFuZCByZWRpc3RyaWJ1dGUgaXQuClRoZXJlIGlzIE5PIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50
IHBlcm1pdHRlZCBieSBsYXcuCisgZ3VpbGUgLWMgJygoQEAgKGd1aXggc2NyaXB0cyBlbnZpcm9u
bWVudCkgYXNzZXJ0LWNvbnRhaW5lci1mZWF0dXJlcykpJworIHRtcGRpcj10LWd1aXgtZW52aXJv
bm1lbnQtMTEyOTgKKyB0cmFwICdybSAtciAiJHRtcGRpciInIEVYSVQKKyBta2RpciB0LWd1aXgt
ZW52aXJvbm1lbnQtMTEyOTgKKyBndWl4IGVudmlyb25tZW50IC0tY29udGFpbmVyIC0tYWQtaG9j
IC0tYm9vdHN0cmFwIGd1aWxlLWJvb3RzdHJhcCAtLSBndWlsZSAtYyAnKGV4aXQgNDIpJwphY2Nl
cHRlZCBjb25uZWN0aW9uIGZyb20gcGlkIDExMzEwLCB1c2VyIHNhcGllbnRlY2gKZ3VpeCBlbnZp
cm9ubWVudDogZXJyb3I6IGNsb25lOiAyMDgwNTA1ODczOiBPcGVyYXRpb24gbm90IHBlcm1pdHRl
ZAorIHRlc3QgMSA9IDQyCisgcm0gLXIgdC1ndWl4LWVudmlyb25tZW50LTExMjk4Ci4vdGVzdC1l
bnY6IGxpbmUgMTogMTEyOTcgVGVybWluYXRlZCAgICAgICAgICAgICAgIi9ob21lL3NhcGllbnRl
Y2gvRGV2L2d1aXgvZ3VpeF93aXAvcHJlLWluc3QtZW52IiAiL2hvbWUvc2FwaWVudGVjaC9EZXYv
Z3VpeC9ndWl4X3dpcC9ndWl4LWRhZW1vbiIgLS1kaXNhYmxlLWNocm9vdCAtLXN1YnN0aXR1dGUt
dXJscz0iJEdVSVhfQklOQVJZX1NVQlNUSVRVVEVfVVJMIgpGQUlMIHRlc3RzL2d1aXgtZW52aXJv
bm1lbnQtY29udGFpbmVyLnNoIChleGl0IHN0YXR1czogMSkKCg==
--=_e9a6df70a27b00c7c1a80573c06d6b2d--





Acknowledgement sent to sapientech@HIDDEN:
New bug report received and forwarded. Copy sent to bug-guix@HIDDEN. Full text available.
Report forwarded to bug-guix@HIDDEN:
bug#24108; Package guix. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 31 Jul 2016 11:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.