From mboxrd@z Thu Jan 1 00:00:00 1970 From: Efraim Flashner Subject: Re: Update MPlayer to 1.2 Date: Fri, 23 Oct 2015 12:20:01 +0300 Message-ID: <20151023122001.2370f137@debian-netbook> References: <20151020165655.70f422ac@debian-netbook> <20151023081424.GA7410@debian> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/8fKccYUnz=yMf=_+5.c9Qzg"; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpYWK-000755-L4 for guix-devel@gnu.org; Fri, 23 Oct 2015 05:20:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZpYWH-0001Oa-6I for guix-devel@gnu.org; Fri, 23 Oct 2015 05:20:20 -0400 Received: from flashner.co.il ([178.62.234.194]:59503) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpYWG-0001O3-50 for guix-devel@gnu.org; Fri, 23 Oct 2015 05:20:17 -0400 In-Reply-To: <20151023081424.GA7410@debian> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Andreas Enge Cc: guix-devel@gnu.org --Sig_/8fKccYUnz=yMf=_+5.c9Qzg Content-Type: multipart/mixed; boundary="MP_/w7RPkauRur=1M8kINbdXf=G" --MP_/w7RPkauRur=1M8kINbdXf=G Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Fri, 23 Oct 2015 10:14:24 +0200 Andreas Enge wrote: > Hello, >=20 > On Tue, Oct 20, 2015 at 04:56:55PM +0300, Efraim Flashner wrote: > > I saw that mplayer 1.2 came out recently. I wanted to make sure that th= e patch was good as is, and shouldn't be split. Since the last release, lib= dvdnav and libdvdcss are no longer packaged, so I added them to the inputs.= Also, I found the config flag to use the shared ffmpeg library, so I added= that in, and I took out the depreciated config flag that was there before. > > mplayer 1.2 will build with just the flag removed, but it seemed to me = that we didn't want to use the bundled ffmpeg so I tossed it and the two li= bdvds in. =20 >=20 > this is an overall useful patch! I executed > $ guix gc --references /gnu/store/wadr15hfyvcn4zg2zj2ygqb8ypkzsg48-mpl= ayer-1.2 > and indeed libvorbis is referenced, so the flag you removed is apparently > not needed any more. my first hint was the compile error it gave when I first tried to leave it = in :) >=20 > However, there is no trace of libdvd*. Looking at the build log on hydra: > http://hydra.gnu.org/build/756649/log/raw > I find: > Checking for DVD support (libdvdnav) ... no=20 > Could you have a look at what went wrong, and whether we need a configura= tion > flag? we shouldn't need to have one: efraim@debian-netbook:~/mplayer-export-2015-10-23$ grep dvd configure --disable-dvdnav disable libdvdnav [autodetect] --disable-dvdread disable libdvdread [autodetect] but later in the guts of configure ... echocheck "dvdread" if test "$_dvdread" =3D auto ; then _dvdread=3Dno _dvdreadcflags=3D$($_dvdreadconfig --cflags 2> /dev/null) _dvdreadlibs=3D$($_dvdreadconfig --libs 2> /dev/null) if statement_check dvdread/dvd_reader.h 'DVDOpen("test")' $_dvdreadcfla= gs $_dvdreadlibs ; then _dvdread=3Dyes extra_cflags=3D"$extra_cflags $_dvdreadcflags" extra_ldflags=3D"$extra_ldflags $_dvdreadlibs" fi fi if the spacing on "_dvdread=3Dno" is a problem then it skips the next few l= ines and never actually checks for dvdread/dvd_reader.h. (todo: create an alternate, fixed version to test theory, and pass patch upstream if necessa= ry) it turns out there are lots of --enable/--disable flags, for just about everything, so i'll pass it --enable-dvdread --enable-dvdnav and see how th= at works. >=20 > Maybe it would also be good to remove the bundled ffmpeg copy from the > source, using a snippet. the flag "--disable-ffmpeg_a" does work for disabling the bundled ffmpeg; t= he first time I built it I hadn't added the flag, and the build time was ~40 minutes instead of ~4. I think I just had poor/ambiguous phrasing in my ema= il. >=20 > Is there any other bundled software? looking in the source directory I see folders for libaf, libao2, libass (which I'm still sure I'm reading wrong), libmenu, libmcodecs, libmpdemux, libmpeg2 and libvo. from looking through the configure more, I found this snippet: if cc_check -lass ; then res_comment=3D"external" extra_ldflags=3D"$extra_ldflags -lass" elif test "$ass_internal" =3D auto ; then ass_internal=3Dyes else _ass=3Dno fi so it looks like there's still a considerable amount of work left to check for these and potentially other libraries. Looking at the source code quick= ly I don't see an ffmpeg folder dumped somewhere so I think I'm going to need = to read configure closely to see what else it tries to bundle. Bundling libraries makes the compiled binary larger, so I think I'll be building this a bunch more times taking out all the bundled libraries. I'll take another look at the configure file (wc -l configure=3D9501!!), bu= t it is pretty big so I'll attach it also for that whole more eyes thing. Its fr= om the most recent source snapshot, but its also only about 2 weeks after release, so it should be close enough to the one we're using. ACTUALLY, this is a big enough project that I've downloaded the 1.2 release to work against, and I see the ffmpeg folder now. I've included that configure instead of the snapshot one, and I think that's the only big difference. I'd go back and change the email to reflect that now I'm working on the correct snapshot (the release "snapshot"), but that's how I normally make my emails incomprehensible. :) >=20 > Thanks for your work! >=20 > Andreas >=20 Looking at the todo list, I feel like it was just part 1 to update the version number, but that we're probably not worse off with bundled libraries than we were before. --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --MP_/w7RPkauRur=1M8kINbdXf=G Content-Type: application/octet-stream; name=configure Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=configure IyEgL2Jpbi9zaAojCiMgT3JpZ2luYWwgdmVyc2lvbiAoQykgMjAwMCBQb250c2Noby9mcmVzaCFt aW5kd29ya3oKIyAgICAgICAgICAgICAgICAgICAgICBwb250c2Nob0BtYWthY3MucG9saW9kLmh1 CiMKIyBIaXN0b3J5IC8gQ29udHJpYnV0b3JzOiBDaGVjayB0aGUgU3VidmVyc2lvbiBsb2cuCiMK IyBDbGVhbnVwcyBhbGwgb3ZlciB0aGUgcGxhY2UgKGMpIDIwMDEgcGwKIwojCiMgVGhpcyBjb25m aWd1cmUgc2NyaXB0IGlzICpub3QqIGF1dG9jb25mLWJhc2VkIGFuZCBoYXMgZGlmZmVyZW50IHNl bWFudGljcy4KIyBJdCBhdHRlbXB0cyB0byBhdXRvZGV0ZWN0IGFsbCBzZXR0aW5ncyBhbmQgb3B0 aW9ucyB3aGVyZSBwb3NzaWJsZS4gSXQgaXMKIyBwb3NzaWJsZSB0byBvdmVycmlkZSBhdXRvZGV0 ZWN0aW9uIHdpdGggdGhlIC0tZW5hYmxlLW9wdGlvbi8tLWRpc2FibGUtb3B0aW9uCiMgY29tbWFu ZCBsaW5lIHBhcmFtZXRlcnMuICAtLWVuYWJsZS1vcHRpb24gZm9yY2VzIHRoZSBvcHRpb24gb24g c2tpcHBpbmcKIyBhdXRvZGV0ZWN0aW9uLiBZZXMsIHRoaXMgbWVhbnMgdGhhdCBjb21waWxhdGlv biBtYXkgZmFpbCBhbmQgeWVzLCB0aGlzIGlzIG5vdAojIGhvdyBhdXRvY29uZi1iYXNlZCBjb25m aWd1cmUgc2NyaXB0cyBiZWhhdmUuCiMKIyBjb25maWd1cmUgZ2VuZXJhdGVzIGEgc2VyaWVzIG9m IGNvbmZpZ3VyYXRpb24gZmlsZXM6CiMgIC0gY29uZmlnLmggY29udGFpbnMgI2RlZmluZXMgdGhh dCBhcmUgdXNlZCBpbiB0aGUgQyBjb2RlLgojICAtIGNvbmZpZy5tYWsgaXMgaW5jbHVkZWQgZnJv bSB0aGUgTWFrZWZpbGVzLgojCiMgSWYgeW91IHdhbnQgdG8gYWRkIGEgbmV3IGNoZWNrIGZvciAk ZmVhdHVyZSwgbG9vayBhdCB0aGUgZXhpc3RpbmcgY2hlY2tzCiMgYW5kIHRyeSB0byB1c2UgaGVs cGVyIGZ1bmN0aW9ucyB3aGVyZSB5b3UgY2FuLgojCiMgRnVydGhlcm1vcmUgeW91IG5lZWQgdG8g YWRkIHRoZSB2YXJpYWJsZSBfZmVhdHVyZSB0byB0aGUgbGlzdCBvZiBkZWZhdWx0CiMgc2V0dGlu Z3MgYW5kIHNldCBpdCB0byBvbmUgb2YgeWVzL25vL2F1dG8uIEFsc28gYWRkIGFwcHJvcHJpYXRl CiMgLS1lbmFibGUtZmVhdHVyZS8tLWRpc2FibGUtZmVhdHVyZSBjb21tYW5kIGxpbmUgb3B0aW9u cy4KIyBUaGUgcmVzdWx0cyBvZiB0aGUgY2hlY2sgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gY29uZmln LmggYW5kIGNvbmZpZy5tYWsKIyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LiBUaGUgdmFyaWFi bGUgbmFtZXMgdXNlZCBmb3IgdGhpcyBzaG91bGQgYmUKIyB1bmlmb3JtLCBpLmUuIGlmIHRoZSBv cHRpb24gaXMgbmFtZWQgJ2ZlYXR1cmUnOgojCiMgX2ZlYXR1cmUgICAgIDogc2hvdWxkIGhhdmUg YSB2YWx1ZSBvZiB5ZXMvbm8vYXV0bwojIGRlZl9mZWF0dXJlICA6ICcjZGVmaW5lIC4uLiAxJyBv ciAnI3VuZGVmIC4uLicgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uCiMgbGRfZmVhdHVyZSAg IDogJy1ML3BhdGgvZGlyIC1sZmVhdHVyZScgR0NDIG9wdGlvbnMKIwojIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwoKIyBQcmV2ZW50IGxvY2FsZSBub25zZW5zZSBmcm9tIGJyZWFraW5nIGJhc2ljIHRleHQg cHJvY2Vzc2luZyB1dGlsaXRpZXMKZXhwb3J0IExDX0FMTD1DCgojIFN0b3JlIHRoZSBjb25maWd1 cmUgbGluZSB0aGF0IHdhcyB1c2VkCmNvbmZpZ3VyYXRpb249IiQqIgoKIyB1dGlsaXR5IGZ1bmN0 aW9ucwp0b2xvd2VyKCkgewogIHRyICdbQS1aXScgJ1thLXpdJwp9Cgp0b3VwcGVyKCkgewogIHRy ICdbYS16XScgJ1tBLVpdJwp9CgojIFByZWZlciB0aGVzZSBtYWNyb3MgdG8gZnVsbCBsZW5ndGgg dGV4dCAhCiMgVGhlc2UgbWFjcm9zIG9ubHkgcmV0dXJuIGFuIGVycm9yIGNvZGUgLSBOTyBkaXNw bGF5IGlzIGRvbmUKY29tcGlsZV9jaGVjaygpIHsKICBzb3VyY2U9IiQxIgogIHNoaWZ0CiAgZWNo byA+PiAiJFRNUExPRyIKICBjYXQgIiRzb3VyY2UiID4+ICIkVE1QTE9HIgogIGVjaG8gPj4gIiRU TVBMT0ciCiAgZWNobyAiJF9jYyAkV0FSTkZMQUdTICRXQVJOX0NGTEFHUyAkQ0ZMQUdTICRzb3Vy Y2UgJGV4dHJhX2NmbGFncyAkbGRfc3RhdGljICRleHRyYV9sZGZsYWdzICRsaWJzX21wbGF5ZXIg JGxpYnNfbWVuY29kZXIgLW8gJFRNUEVYRSAkQCAkbGlibSIgPj4gIiRUTVBMT0ciCiAgcm0gLWYg IiRUTVBFWEUiCiAgJF9jYyAkV0FSTkZMQUdTICRXQVJOX0NGTEFHUyAkQ0ZMQUdTICIkc291cmNl IiAkZXh0cmFfY2ZsYWdzICRsZF9zdGF0aWMgJGV4dHJhX2xkZmxhZ3MgJGxpYnNfbXBsYXllciAk bGlic19tZW5jb2RlciAtbyAiJFRNUEVYRSIgIiRAIiAkbGlibSA+PiAiJFRNUExPRyIgMj4mMQog IFRNUFJFUz0iJD8iCiAgZWNobyA+PiAiJFRNUExPRyIKICBlY2hvID4+ICIkVE1QTE9HIgogIHJl dHVybiAiJFRNUFJFUyIKfQoKY2NfY2hlY2soKSB7CiAgY29tcGlsZV9jaGVjayAkVE1QQyAkQAp9 CgpjeHhfY2hlY2soKSB7CiAgY29tcGlsZV9jaGVjayAkVE1QQ1BQICRAIC1sc3RkYysrCn0KCmNw cF9jb25kaXRpb25fY2hlY2soKSB7CiAgaW5jPSIiCiAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgog ICAgaW5jPSIjaW5jbHVkZSA8JDE+IgogIGZpCiAgY2F0ID4gJFRNUEMgPDwgRU9GCiRpbmMKI2lm ICEoJDIpCiNlcnJvciBjb25kaXRpb24gbm90IHRydWU6ICQyCiNlbmRpZgppbnQgbWFpbih2b2lk KSB7IHJldHVybiAwOyB9CkVPRgogIHNoaWZ0IDIKICBjb21waWxlX2NoZWNrICRUTVBDICRACn0K CmNmbGFnX2NoZWNrKCkgewogIGNhdCA+ICRUTVBDIDw8IEVPRgppbnQgbWFpbih2b2lkKSB7IHJl dHVybiAwOyB9CkVPRgogIGNvbXBpbGVfY2hlY2sgJFRNUEMgJEAKfQoKaGVhZGVyX2NoZWNrKCkg ewogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8JDE+CmludCBtYWluKHZvaWQpIHsgcmV0 dXJuIDA7IH0KRU9GCiAgc2hpZnQKICBjb21waWxlX2NoZWNrICRUTVBDICRACn0KCnJldHVybl9j aGVjaygpIHsKICBjYXQgPiAkVE1QQyA8PCBFT0YKI2luY2x1ZGUgPCQxPgppbnQgbWFpbih2b2lk KSB7IHJldHVybiAkMjsgfQpFT0YKICBzaGlmdCAyCiAgY29tcGlsZV9jaGVjayAkVE1QQyAkQAp9 CgpzdGF0ZW1lbnRfY2hlY2soKSB7CiAgY2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRlIDwkMT4K aW50IG1haW4odm9pZCkgeyAkMjsgcmV0dXJuIDA7IH0KRU9GCiAgc2hpZnQKICBzaGlmdAogIGNv bXBpbGVfY2hlY2sgJFRNUEMgJEAKfQoKZGVmaW5lX3N0YXRlbWVudF9jaGVjaygpIHsKICBjYXQg PiAkVE1QQyA8PCBFT0YKI2RlZmluZSAkMQojaW5jbHVkZSA8JDI+CmludCBtYWluKHZvaWQpIHsg JDM7IHJldHVybiAwOyB9CkVPRgogIHNoaWZ0IDMKICBjb21waWxlX2NoZWNrICRUTVBDICRACn0K CnJldHVybl9zdGF0ZW1lbnRfY2hlY2soKSB7CiAgY2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRl IDwkMT4KaW50IG1haW4odm9pZCkgeyAkMjsgcmV0dXJuICQzOyB9CkVPRgogIHNoaWZ0IDMKICBj b21waWxlX2NoZWNrICRUTVBDICRACn0KCmlubGluZV9hc21fY2hlY2soKSB7CiAgY2F0ID4gJFRN UEMgPDwgRU9GCmludCBtYWluKHZvaWQpIHsgX19hc21fXyB2b2xhdGlsZSAoJDEpOyByZXR1cm4g MDsgfQpFT0YKICBzaGlmdAogIGNvbXBpbGVfY2hlY2sgJFRNUEMgJEAKfQoKIyBUaGUgZm9sbG93 aW5nIGNoZWNrcyBhcmUgc3BlY2lhbCBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIGJyb2tl biBhbmQKIyBub24tc2VsZi1zdWZmaWNpZW50IGhlYWRlcnMgdGhhdCBkbyBub3QgaW5jbHVkZSBh bGwgb2YgdGhlaXIgZGVwZW5kZW5jaWVzLgoKaGVhZGVyX2NoZWNrX2Jyb2tlbigpIHsKICBjYXQg PiAkVE1QQyA8PCBFT0YKI2luY2x1ZGUgPCQxPgojaW5jbHVkZSA8JDI+CmludCBtYWluKHZvaWQp IHsgcmV0dXJuIDA7IH0KRU9GCiAgc2hpZnQKICBzaGlmdAogIGNvbXBpbGVfY2hlY2sgJFRNUEMg JEAKfQoKc3RhdGVtZW50X2NoZWNrX2Jyb2tlbigpIHsKICBjYXQgPiAkVE1QQyA8PCBFT0YKI2lu Y2x1ZGUgPCQxPgojaW5jbHVkZSA8JDI+CmludCBtYWluKHZvaWQpIHsgJDM7IHJldHVybiAwOyB9 CkVPRgogIHNoaWZ0IDMKICBjb21waWxlX2NoZWNrICRUTVBDICRACn0KCnlhc21fY2hlY2soKSB7 CiAgZWNobyA+PiAiJFRNUExPRyIKICBjYXQgIiRUTVBTIiA+PiAiJFRNUExPRyIKICBlY2hvID4+ ICIkVE1QTE9HIgogIGVjaG8gIiRfeWFzbSAkWUFTTUZMQUdTIC1vICRUTVBFWEUgJFRNUFMgJEAi ID4+ICIkVE1QTE9HIgogIHJtIC1mICIkVE1QRVhFIgogICRfeWFzbSAkWUFTTUZMQUdTIC1vICIk VE1QRVhFIiAiJFRNUFMiICIkQCIgPj4gIiRUTVBMT0ciIDI+JjEKICBUTVBSRVM9IiQ/IgogIGVj aG8gPj4gIiRUTVBMT0ciCiAgZWNobyA+PiAiJFRNUExPRyIKICByZXR1cm4gIiRUTVBSRVMiCn0K CnRtcF9ydW4oKSB7CiAgIiRUTVBFWEUiID4+ICIkVE1QTE9HIiAyPiYxCn0KCiMgRGlzcGxheSBl cnJvciBtZXNzYWdlLCBmbHVzaCB0ZW1wb3JhcnkgZmlsZSwgZXhpdC4KZGllICgpIHsKICBlY2hv CiAgZWNobyAiRXJyb3I6ICRAIiA+JjIKICBlY2hvID4mMgogIHJtIC1mICIkVE1QRVhFIiAiJFRN UEMiICIkVE1QUyIgIiRUTVBDUFAiCiAgZWNobyAiQ2hlY2sgXCIkVE1QTE9HXCIgaWYgeW91IGRv IG5vdCB1bmRlcnN0YW5kIHdoeSBpdCBmYWlsZWQuIgogIGV4aXQgMQp9CgojIE9TIHRlc3QgYm9v bGVhbnMgZnVuY3Rpb25zCmlzc3lzdGVtKCkgewogIHRlc3QgIiQoZWNobyAkc3lzdGVtX25hbWUg fCB0b2xvd2VyKSIgPSAiJChlY2hvICQxIHwgdG9sb3dlcikiCn0KYWl4KCkgICAgICAgeyBpc3N5 c3RlbSAiQUlYIjsgfQphbWlnYW9zKCkgICB7IGlzc3lzdGVtICJBbWlnYU9TIjsgfQpic2Rvcygp ICAgICB7IGlzc3lzdGVtICJCU0QvT1MiOyB9CmN5Z3dpbigpICAgIHsgaXNzeXN0ZW0gIkNZR1dJ TiI7IH0KZGFyd2luKCkgICAgeyBpc3N5c3RlbSAiRGFyd2luIjsgfQpkcmFnb25mbHkoKSB7IGlz c3lzdGVtICJEcmFnb25GbHkiOyB9CmZyZWVic2QoKSAgIHsgaXNzeXN0ZW0gIkZyZWVCU0QiIHx8 IGlzc3lzdGVtICJHTlUva0ZyZWVCU0QiOyB9CmdudSgpICAgICAgIHsgaXNzeXN0ZW0gIkdOVSI7 IH0KaHB1eCgpICAgICAgeyBpc3N5c3RlbSAiSFAtVVgiOyB9CmlyaXgoKSAgICAgIHsgaXNzeXN0 ZW0gIklSSVgiOyB9CmxpbnV4KCkgICAgIHsgaXNzeXN0ZW0gIkxpbnV4IjsgfQptaW5ndzMyKCkg ICB7IGlzc3lzdGVtICJNSU5HVzMyIjsgfQptb3JwaG9zKCkgICB7IGlzc3lzdGVtICJNb3JwaE9T IjsgfQpuZXRic2QoKSAgICB7IGlzc3lzdGVtICJOZXRCU0QiOyB9Cm9wZW5ic2QoKSAgIHsgaXNz eXN0ZW0gIk9wZW5CU0QiOyB9Cm9zMigpICAgICAgIHsgaXNzeXN0ZW0gIk9TLzIiOyB9CnFueCgp ICAgICAgIHsgaXNzeXN0ZW0gIlFOWCI7IH0Kc3Vub3MoKSAgICAgeyBpc3N5c3RlbSAiU3VuT1Mi OyB9CndpbmUoKSAgICAgIHsgaXNzeXN0ZW0gIldpbmUiOyB9CndpbjMyKCkgICAgIHsgY3lnd2lu IHx8IG1pbmd3MzIgfHwgd2luZTsgfQoKIyBhcmNoIHRlc3QgYm9vbGVhbiBmdW5jdGlvbnMKIyB4 ODYveDg2cGMgaXMgdXNlZCBieSBRTlgKeDg2XzMyKCkgewogIGNhc2UgIiRob3N0X2FyY2giIGlu CiAgICBpWzMtOV04Nnx4ODZ8eDg2cGN8azV8azZ8azYtMnxrNi0zfHBlbnRpdW0qfGF0aGxvbip8 aTU4Ni1pNjg2KSByZXR1cm4gMCA7OwogICAgKikgcmV0dXJuIDEgOzsKICBlc2FjCn0KCng4Nl82 NCgpIHsKICBjYXNlICIkaG9zdF9hcmNoIiBpbgogICAgeDg2XzY0fGFtZDY0KSByZXR1cm4gMCA7 OwogICAgKikgcmV0dXJuIDEgOzsKICBlc2FjCn0KCng4NigpIHsKICB4ODZfMzIgfHwgeDg2XzY0 Cn0KCnBwYygpIHsKICBjYXNlICIkaG9zdF9hcmNoIiBpbgogICAgcHBjKnxwb3dlcnBjKikgcmV0 dXJuIDA7OwogICAgKikgcmV0dXJuIDE7OwogIGVzYWMKfQoKc3BhcmMoKSB7CiAgY2FzZSAiJGhv c3RfYXJjaCIgaW4KICAgIHNwYXJjKikgcmV0dXJuIDA7OwogICAgKikgcmV0dXJuIDE7OwogIGVz YWMKfQoKYWxwaGEoKSB7CiAgY2FzZSAiJGhvc3RfYXJjaCIgaW4KICAgIGFscGhhKikgcmV0dXJu IDA7OwogICAgKikgcmV0dXJuIDE7OwogIGVzYWMKfQoKYXJtKCkgewogIGNhc2UgIiRob3N0X2Fy Y2giIGluCiAgICBhcm0qKSByZXR1cm4gMDs7CiAgICAqKSByZXR1cm4gMTs7CiAgZXNhYwp9Cgoj IFVzZSB0aGlzIGJlZm9yZSBzdGFydGluZyBhIGNoZWNrCmVjaG9jaGVjaygpIHsKICBlY2hvICI9 PT09PT09PT09PT0gQ2hlY2tpbmcgZm9yICRAID09PT09PT09PT09PSIgPj4gIiRUTVBMT0ciCiAg ZWNobyAke19lY2hvX259ICJDaGVja2luZyBmb3IgJEAgLi4uICR7X2VjaG9fY30iCn0KCiMgVXNl IHRoaXMgdG8gZWNobyB0aGUgcmVzdWx0cyBvZiBhIGNoZWNrCmVjaG9yZXMoKSB7CiAgaWYgdGVz dCAiJHJlc19jb21tZW50IiA7IHRoZW4KICAgIHJlc19jb21tZW50PSIoJHJlc19jb21tZW50KSIK ICBmaQogIGVjaG8gIlJlc3VsdCBpczogJEAgJHJlc19jb21tZW50IiA+PiAiJFRNUExPRyIKICBl Y2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiID4+ICIkVE1Q TE9HIgogIGVjaG8gIiIgPj4gIiRUTVBMT0ciCiAgZWNobyAiJEAgJHJlc19jb21tZW50IgogIHJl c19jb21tZW50PSIiCn0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQ2hlY2sgaG93IGVjaG8gd29y a3MgaW4gdGhpcyAvYmluL3NoCmNhc2UgJChlY2hvIC1uKSBpbgogIC1uKSAgIF9lY2hvX249ICAg ICAgICBfZWNob19jPSdcYycgICAgOzsgICAgICAjIFN5c1YgZWNobwogICopICAgIF9lY2hvX249 Jy1uICcgICBfZWNob19jPSAgICAgICAgOzsgICAgICAjIEJTRCBlY2hvCmVzYWMKCm1zZ19sYW5n X2FsbD0kKGVjaG8gaGVscC9oZWxwX21wLT8/LmggaGVscC9oZWxwX21wLT8/Xz8/LmggfCBzZWQg LWUgInM6aGVscC9oZWxwX21wLVwoLi5cKS5oOlwxOmciIC1lICJzOmhlbHAvaGVscF9tcC1cKC4u Li4uXCkuaDpcMTpnIikKbWFuX2xhbmdfYWxsPSQoZWNobyBET0NTL21hbi8/Py9tcGxheWVyLjEg RE9DUy9tYW4vPz9fPz8vbXBsYXllci4xIHwgc2VkIC1lICJzOkRPQ1MvbWFuL1woLi5cKS9tcGxh eWVyLjE6XDE6ZyIgLWUgInM6RE9DUy9tYW4vXCguLl8uLlwpL21wbGF5ZXIuMTpcMTpnIikKZG9j X2xhbmdfYWxsPSQoZWNobyBET0NTL3htbC8/Py8gRE9DUy94bWwvPz9fPz8vIHwgc2VkIC1lICJz OkRPQ1MveG1sL1woLi5cKS86XDE6ZyIgLWUgInM6RE9DUy94bWwvXCguLl8uLlwpLzpcMTpnIikK CnNob3dfaGVscCgpewpjYXQgPDwgRU9GClVzYWdlOiAkMCBbT1BUSU9OU10uLi4KCkNvbmZpZ3Vy YXRpb246CiAgLWgsIC0taGVscCAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhp dAoKSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgogIC0tcHJlZml4PURJUiAgICAgICAgICAgcHJl Zml4IGRpcmVjdG9yeSBmb3IgaW5zdGFsbGF0aW9uIFsvdXNyL2xvY2FsXQogIC0tYmluZGlyPURJ UiAgICAgICAgICAgZGlyZWN0b3J5IGZvciBpbnN0YWxsaW5nIGJpbmFyaWVzIFtQUkVGSVgvYmlu XQogIC0tZGF0YWRpcj1ESVIgICAgICAgICAgZGlyZWN0b3J5IGZvciBpbnN0YWxsaW5nIG1hY2hp bmUgaW5kZXBlbmRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgZmlsZXMgKHNraW5z LCBldGMpIFtQUkVGSVgvc2hhcmUvbXBsYXllcl0KICAtLW1hbmRpcj1ESVIgICAgICAgICAgIGRp cmVjdG9yeSBmb3IgaW5zdGFsbGluZyBtYW4gcGFnZXMgW1BSRUZJWC9zaGFyZS9tYW5dCiAgLS1j b25mZGlyPURJUiAgICAgICAgICBkaXJlY3RvcnkgZm9yIGluc3RhbGxpbmcgY29uZmlndXJhdGlv biBmaWxlcwogICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWC9ldGMvbXBsYXllcl0KICAt LWxpYmRpcj1ESVIgICAgICAgICAgIGRpcmVjdG9yeSBmb3Igb2JqZWN0IGNvZGUgbGlicmFyaWVz IFtQUkVGSVgvbGliXQogIC0tY29kZWNzZGlyPURJUiAgICAgICAgZGlyZWN0b3J5IGZvciBiaW5h cnkgY29kZWNzIFtMSUJESVIvY29kZWNzXQoKT3B0aW9uYWwgZmVhdHVyZXM6CiAgLS1kaXNhYmxl LW1lbmNvZGVyICAgICBkaXNhYmxlIE1FbmNvZGVyIChBL1YgZW5jb2RlcikgY29tcGlsYXRpb24g W2VuYWJsZV0KICAtLWRpc2FibGUtbXBsYXllciAgICAgIGRpc2FibGUgTVBsYXllciBjb21waWxh dGlvbiBbZW5hYmxlXQogIC0tZW5hYmxlLWd1aSAgICAgICAgICAgZW5hYmxlIEdNUGxheWVyIGNv bXBpbGF0aW9uIChHVEsrIEdVSSkgW2Rpc2FibGVdCiAgLS1lbmFibGUtdGVybWNhcCAgICAgICB1 c2UgdGVybWNhcCBkYXRhYmFzZSBmb3Iga2V5IGNvZGVzIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxl LXRlcm1pb3MgICAgICAgdXNlIHRlcm1pb3MgZGF0YWJhc2UgZm9yIGtleSBjb2RlcyBbYXV0b2Rl dGVjdF0KICAtLWRpc2FibGUtaWNvbnYgICAgICAgIGRpc2FibGUgaWNvbnYgZm9yIGVuY29kaW5n IGNvbnZlcnNpb24gW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWxhbmdpbmZvICAgICBkbyBub3Qg dXNlIGxhbmdpbmZvIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWxpcmMgICAgICAgICAgZW5hYmxl IExJUkMgKHJlbW90ZSBjb250cm9sKSBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWxp cmNjICAgICAgICAgZW5hYmxlIExJUkNDRCAoTElSQyBjbGllbnQgZGFlbW9uKSBpbnB1dCBbYXV0 b2RldGVjdF0KICAtLWVuYWJsZS1qb3lzdGljayAgICAgIGVuYWJsZSBqb3lzdGljayBzdXBwb3J0 IFtkaXNhYmxlXQogIC0tZW5hYmxlLWFwcGxlLXJlbW90ZSAgZW5hYmxlIEFwcGxlIFJlbW90ZSBp bnB1dCAoTWFjIE9TIFggb25seSkgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtYXBwbGUtaXIgICAg ICBlbmFibGUgQXBwbGUgSVIgUmVtb3RlIGlucHV0IChMaW51eCBvbmx5KSBbYXV0b2RldGVjdF0K ICAtLWRpc2FibGUtdm0gICAgICAgICAgIGRpc2FibGUgWCB2aWRlbyBtb2RlIGV4dGVuc2lvbnMg W2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLXhmODZrZXlzeW0gICBkaXNhYmxlIHN1cHBvcnQgZm9y IG11bHRpbWVkaWEga2V5cyBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1yYWRpbyAgICAgICAgIGVu YWJsZSByYWRpbyBpbnRlcmZhY2UgW2Rpc2FibGVdCiAgLS1lbmFibGUtcmFkaW8tY2FwdHVyZSBl bmFibGUgcmFkaW8gY2FwdHVyZSAodGhyb3VnaCBQQ0kvbGluZS1pbikgW2Rpc2FibGVdCiAgLS1k aXNhYmxlLXJhZGlvLXY0bDIgICBkaXNhYmxlIFZpZGVvNExpbnV4MiByYWRpbyBpbnRlcmZhY2Ug W2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLXJhZGlvLWJzZGJ0ODQ4ICAgZGlzYWJsZSBCU0QgQlQ4 NDggcmFkaW8gaW50ZXJmYWNlIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS10diAgICAgICAgICAg ZGlzYWJsZSBUViBpbnRlcmZhY2UgKFRWL0RWQiBncmFiYmVycykgW2VuYWJsZV0KICAtLWRpc2Fi bGUtdHYtdjRsMSAgICAgIGRpc2FibGUgVmlkZW80TGludXggVFYgaW50ZXJmYWNlIFthdXRvZGV0 ZWN0XQogIC0tZGlzYWJsZS10di12NGwyICAgICAgZGlzYWJsZSBWaWRlbzRMaW51eDIgVFYgaW50 ZXJmYWNlIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS10di1ic2RidDg0OCAgZGlzYWJsZSBCU0Qg QlQ4NDggaW50ZXJmYWNlIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1wdnIgICAgICAgICAgZGlz YWJsZSBWaWRlbzRMaW51eDIgTVBFRyBQVlIgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLXJ0YyAg ICAgICAgICBkaXNhYmxlIFJUQyAoL2Rldi9ydGMpIG9uIExpbnV4IFthdXRvZGV0ZWN0XQogIC0t ZGlzYWJsZS1uZXR3b3JraW5nICAgZGlzYWJsZSBuZXR3b3JraW5nIFtlbmFibGVdCiAgLS1lbmFi bGUtd2luc29jazJfaCAgICBlbmFibGUgd2luc29jazJfaCBbYXV0b2RldGVjdF0KICAtLWVuYWJs ZS1zbWIgICAgICAgICAgIGVuYWJsZSBTYW1iYSAoU01CKSBpbnB1dCBbYXV0b2RldGVjdF0KICAt LWVuYWJsZS1saXZlICAgICAgICAgIGVuYWJsZSBMSVZFNTU1IFN0cmVhbWluZyBNZWRpYSBbYXV0 b2RldGVjdF0KICAtLWVuYWJsZS1uZW1lc2kgICAgICAgIGVuYWJsZSBOZW1lc2kgU3RyZWFtaW5n IE1lZGlhIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWxpYnJ0bXAgICAgICAgZW5hYmxlIFJUTVBE dW1wIFN0cmVhbWluZyBNZWRpYSBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtdmNkICAgICAgICAg IGRpc2FibGUgVkNEIHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWJsdXJheSAgICAg ICBkaXNhYmxlIEJsdS1yYXkgc3VwcG9ydCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtZHZkbmF2 ICAgICAgIGRpc2FibGUgbGliZHZkbmF2IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1kdmRyZWFk ICAgICAgZGlzYWJsZSBsaWJkdmRyZWFkIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1jZHBhcmFu b2lhICAgZGlzYWJsZSBjZHBhcmFub2lhIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1jZGRiICAg ICAgICAgZGlzYWJsZSBjZGRiIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1iaXRtYXAtZm9udCAg ZGlzYWJsZSBiaXRtYXAgZm9udCBzdXBwb3J0IFtlbmFibGVdCiAgLS1kaXNhYmxlLWZyZWV0eXBl ICAgICBkaXNhYmxlIEZyZWVUeXBlIDIgZm9udCByZW5kZXJpbmcgW2F1dG9kZXRlY3RdCiAgLS1k aXNhYmxlLWZvbnRjb25maWcgICBkaXNhYmxlIGZvbnRjb25maWcgZm9udCBsb29rdXAgW2F1dG9k ZXRlY3RdCiAgLS1kaXNhYmxlLXVucmFyZXhlYyAgICBkaXNhYmxlIHVzaW5nIG9mIFVuUkFSIGV4 ZWN1dGFibGUgW2VuYWJsZWRdCiAgLS1lbmFibGUtbWVudSAgICAgICAgICBlbmFibGUgT1NEIG1l bnUgKG5vdCBEVkQgbWVudSkgW2Rpc2FibGVkXQogIC0tZGlzYWJsZS1zb3J0c3ViICAgICAgZGlz YWJsZSBzdWJ0aXRsZSBzb3J0aW5nIFtlbmFibGVkXQogIC0tZW5hYmxlLWZyaWJpZGkgICAgICAg ZW5hYmxlIHRoZSBGcmlCaURpIGxpYnMgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWVuY2EgICAg ICAgICBkaXNhYmxlIEVOQ0EgY2hhcnNldCBvcmFjbGUgbGlicmFyeSBbYXV0b2RldGVjdF0KICAt LWRpc2FibGUtbWFlbW8gICAgICAgIGRpc2FibGUgbWFlbW8gc3BlY2lmaWMgZmVhdHVyZXMgW2F1 dG9kZXRlY3RdCiAgLS1lbmFibGUtbWFjb3N4LWZpbmRlciBlbmFibGUgTWFjIE9TIFggRmluZGVy IGludm9jYXRpb24gcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzaW5nIFtk aXNhYmxlZF0KICAtLWVuYWJsZS1tYWNvc3gtYnVuZGxlIGVuYWJsZSBNYWMgT1MgWCBidW5kbGUg ZmlsZSBsb2NhdGlvbnMgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWluZXQ2ICAgICAgICBkaXNh YmxlIElQdjYgc3VwcG9ydCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtc2N0cCAgICAgICAgIGRp c2FibGUgU0NUUCBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1nZXRob3N0YnluYW1l MiAgZ2V0aG9zdGJ5bmFtZTIgcGFydCBvZiB0aGUgQyBsaWJyYXJ5IFthdXRvZGV0ZWN0XQogIC0t ZGlzYWJsZS1mdHAgICAgICAgICAgZGlzYWJsZSBGVFAgc3VwcG9ydCBbZW5hYmxlZF0KICAtLWRp c2FibGUtdnN0cmVhbSAgICAgIGRpc2FibGUgVGlWbyB2c3RyZWFtIGNsaWVudCBzdXBwb3J0IFth dXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1wdGhyZWFkcyAgICAgZGlzYWJsZSBQb3NpeCB0aHJlYWRz IHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLXczMnRocmVhZHMgICBkaXNhYmxlIFdp bjMyIHRocmVhZHMgc3VwcG9ydCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtb3MydGhyZWFkcyAg IGRpc2FibGUgT1MvMiB0aHJlYWRzIHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtYXNz LWludGVybmFsICBlbmFibGUgaW50ZXJuYWwgU1NBL0FTUyBzdWJ0aXRsZSBzdXBwb3J0IFthdXRv ZGV0ZWN0XQogIC0tZGlzYWJsZS1hc3MgICAgICAgICAgZGlzYWJsZSBTU0EvQVNTIHN1YnRpdGxl IHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtcnBhdGggICAgICAgICBlbmFibGUgcnVu dGltZSBsaW5rZXIgcGF0aCBmb3IgZXh0cmEgbGlicyBbZGlzYWJsZWRdCiAgLS1kaXNhYmxlLWdu dXRscyAgICAgICBkaXNhYmxlIEdudVRMUyBbYXV0b2RldGVjdF0KCkNvZGVjczoKICAtLWVuYWJs ZS1naWYgICAgICAgICAgICAgIGVuYWJsZSBHSUYgc3VwcG9ydCBbYXV0b2RldGVjdF0KICAtLWVu YWJsZS1wbmcgICAgICAgICAgICAgIGVuYWJsZSBQTkcgaW5wdXQvb3V0cHV0IHN1cHBvcnQgW2F1 dG9kZXRlY3RdCiAgLS1lbmFibGUtbW5nICAgICAgICAgICAgICBlbmFibGUgTU5HIGlucHV0L291 dHB1dCBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWpwZWcgICAgICAgICAgICAgZW5h YmxlIEpQRUcgaW5wdXQvb3V0cHV0IHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtbGli Y2RpbyAgICAgICAgICBlbmFibGUgbGliY2RpbyBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZW5h YmxlLWxpYmx6byAgICAgICAgICAgZW5hYmxlIGxpYmx6byBzdXBwb3J0IFthdXRvZGV0ZWN0XQog IC0tZGlzYWJsZS13aW4zMmRsbCAgICAgICAgZGlzYWJsZSBXaW4zMiBETEwgc3VwcG9ydCBbYXV0 b2RldGVjdF0KICAtLWRpc2FibGUtcXR4ICAgICAgICAgICAgIGRpc2FibGUgUXVpY2tUaW1lIGNv ZGVjcyBzdXBwb3J0IFtlbmFibGVkXQogIC0tZGlzYWJsZS14YW5pbSAgICAgICAgICAgZGlzYWJs ZSBYQW5pbSBjb2RlY3Mgc3VwcG9ydCBbZW5hYmxlZF0KICAtLWRpc2FibGUtcmVhbCAgICAgICAg ICAgIGRpc2FibGUgUmVhbFBsYXllciBjb2RlY3Mgc3VwcG9ydCBbZW5hYmxlZF0KICAtLWRpc2Fi bGUteHZpZCAgICAgICAgICAgIGRpc2FibGUgWHZpZCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUt eHZpZC1sYXZjICAgICAgIGRpc2FibGUgWHZpZCBpbiBsaWJhdmNvZGVjIFthdXRvZGV0ZWN0XQog IC0tZGlzYWJsZS14MjY0ICAgICAgICAgICAgZGlzYWJsZSB4MjY0IFthdXRvZGV0ZWN0XQogIC0t ZGlzYWJsZS14MjY0LWxhdmMgICAgICAgZGlzYWJsZSB4MjY0IGluIGxpYmF2Y29kZWMgW2F1dG9k ZXRlY3RdCiAgLS1kaXNhYmxlLWxpYmRpcmFjLWxhdmMgICBkaXNhYmxlIERpcmFjIGluIGxpYmF2 Y29kZWMgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWxpYnNjaHJvZWRpbmdlci1sYXZjICAgZGlz YWJsZSBEaXJhYyBpbiBsaWJhdmNvZGVjIChTY2hyb2VkaW5nZXIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZWNvZGVyKSBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtbGlidnB4 LWxhdmMgICAgIGRpc2FibGUgbGlidnB4IGluIGxpYmF2Y29kZWMgW2F1dG9kZXRlY3RdCiAgLS1k aXNhYmxlLWxpYm51dCAgICAgICAgICBkaXNhYmxlIGxpYm51dCBbYXV0b2RldGVjdF0KICAtLWRp c2FibGUtZmZtcGVnX2EgICAgICAgIGRpc2FibGUgc3RhdGljIEZGbXBlZyBbYXV0b2RldGVjdF0K ICAtLWRpc2FibGUtZmZtcGVnX3NvICAgICAgIGRpc2FibGUgc2hhcmVkIEZGbXBlZyBbYXV0b2Rl dGVjdF0KICAtLWRpc2FibGUtcG9zdHByb2MgICAgICAgIGRpc2FibGUgbGlicG9zdHByb2MgW2F1 dG9kZXRlY3RdCiAgLS1lbmFibGUtdmYtbGF2ZmkgICAgICAgICBlbmFibGUgbGliYXZmaWx0ZXIg d3JhcHBlciBbZGlzYWJsZWRdCiAgLS1kaXNhYmxlLWxpYmF2Y29kZWNfbXBlZ2F1ZGlvX2hwIGRp c2FibGUgaGlnaCBwcmVjaXNpb24gYXVkaW8gZGVjb2RpbmcKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW4gbGliYXZjb2RlYyBbZW5hYmxlZF0KICAtLWVuYWJsZS10cmVtb3Ig ICAgICAgICAgIGVuYWJsZSBpbnRlZ2VyIGxpYnZvcmJpcyBbYXV0b2RldGVjdF0KICAtLWRpc2Fi bGUtbGlidm9yYmlzICAgICAgIGRpc2FibGUgbGlidm9yYmlzIHN1cHBvcnQgW2F1dG9kZXRlY3Rd CiAgLS1kaXNhYmxlLXNwZWV4ICAgICAgICAgICBkaXNhYmxlIFNwZWV4IHN1cHBvcnQgW2F1dG9k ZXRlY3RdCiAgLS1kaXNhYmxlLWxpYmdzbSAgICAgICAgICBkaXNhYmxlIGxpYmdzbSBzdXBwb3J0 IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLXRoZW9yYSAgICAgICAgICAgZW5hYmxlIE9nZ1RoZW9y YSBsaWJyYXJpZXMgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtZmFhZCAgICAgICAgICAgICBlbmFi bGUgRkFBRDIgKEFBQykgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWZhYWMgICAgICAgICAgICBk aXNhYmxlIHN1cHBvcnQgZm9yIEZBQUMgKEFBQyBlbmNvZGVyKSBbYXV0b2RldGVjdF0KICAtLWRp c2FibGUtZmFhYy1sYXZjICAgICAgIGRpc2FibGUgc3VwcG9ydCBmb3IgRkFBQyBpbiBsaWJhdmNv ZGVjIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1sYWRzcGEgICAgICAgICAgZGlzYWJsZSBMQURT UEEgcGx1Z2luIHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWxpYmJzMmIgICAgICAg ICBkaXNhYmxlIGxpYmJzMmIgYXVkaW8gZmlsdGVyIHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1k aXNhYmxlLWxpYmR2ICAgICAgICAgICBkaXNhYmxlIGxpYmR2IDAuOS41IGVuL2RlY29kaW5nIHN1 cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWxpYmlsYmMgICAgICAgICBkaXNhYmxlIGxp YmlsYmMgZGVjb2Rpbmcgc3VwcG9ydCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtbGlib3B1cyAg ICAgICAgIGRpc2FibGUgbGlib3B1cyBkZWNvZGluZyBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0t ZGlzYWJsZS1tcGcxMjMgICAgICAgICAgZGlzYWJsZSBsaWJtcGcxMjMgTVAzIGRlY29kaW5nIHN1 cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLW1hZCAgICAgICAgICAgICBkaXNhYmxlIGxp Ym1hZCAoTVBFRyBhdWRpbykgc3VwcG9ydCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtbXAzbGFt ZSAgICAgICAgIGRpc2FibGUgTEFNRSBNUDMgZW5jb2Rpbmcgc3VwcG9ydCBbYXV0b2RldGVjdF0K ICAtLWRpc2FibGUtbXAzbGFtZS1sYXZjICAgIGRpc2FibGUgTEFNRSBpbiBsaWJhdmNvZGVjIFth dXRvZGV0ZWN0XQogIC0tZGlzYWJsZS10b29sYW1lICAgICAgICAgZGlzYWJsZSBUb29sYW1lIChN UEVHIGxheWVyIDIpIGVuY29kaW5nIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS10d29sYW1lICAg ICAgICAgZGlzYWJsZSBUd29sYW1lIChNUEVHIGxheWVyIDIpIGVuY29kaW5nIFthdXRvZGV0ZWN0 XQogIC0tZW5hYmxlLXhtbXMgICAgICAgICAgICAgZW5hYmxlIFhNTVMgaW5wdXQgcGx1Z2luIHN1 cHBvcnQgW2Rpc2FibGVkXQogIC0tZW5hYmxlLWxpYmRjYSAgICAgICAgICAgZW5hYmxlIGxpYmRj YSBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1saWJhNTIgICAgICAgICAgZGlzYWJs ZSBsaWJhNTIgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWxpYm1wZWcyICAgICAgICBkaXNhYmxl IGxpYm1wZWcyIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWxpYm1wZWcyLWludGVybmFsIGVuYWJs ZSBidWlsdGluIGxpYm1wZWcyIFtkaXNhYmxlZF0KICAtLWVuYWJsZS1tdXNlcGFjayAgICAgICAg IGVuYWJsZSBsaWJtcGNkZWMgc3VwcG9ydCAoZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgbGliYXZj b2RlYykgW2Rpc2FibGVkXQogIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJuYiBkaXNhYmxlIGxp Ym9wZW5jb3JlX2FtciBuYXJyb3diYW5kIFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1saWJvcGVu Y29yZV9hbXJ3YiBkaXNhYmxlIGxpYm9wZW5jb3JlX2FtciB3aWRlYmFuZCBbYXV0b2RldGVjdF0K ICAtLWRpc2FibGUtbGlib3BlbmpwZWcgICAgIGRpc2FibGUgT3BlbkpQRUcgKEpQRUcgMjAwMCkg aW5wdXQvb3V0cHV0IHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWNyeXN0YWxoZCAg ICAgICBkaXNhYmxlIENyeXN0YWxIRCBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1k ZWNvZGVyPURFQ09ERVIgZGlzYWJsZSBzcGVjaWZpZWQgRkZtcGVnIGRlY29kZXIKICAtLWVuYWJs ZS1kZWNvZGVyPURFQ09ERVIgIGVuYWJsZSBzcGVjaWZpZWQgRkZtcGVnIGRlY29kZXIKICAtLWRp c2FibGUtZW5jb2Rlcj1FTkNPREVSIGRpc2FibGUgc3BlY2lmaWVkIEZGbXBlZyBlbmNvZGVyCiAg LS1lbmFibGUtZW5jb2Rlcj1FTkNPREVSICBlbmFibGUgc3BlY2lmaWVkIEZGbXBlZyBlbmNvZGVy CiAgLS1kaXNhYmxlLXBhcnNlcj1QQVJTRVIgICBkaXNhYmxlIHNwZWNpZmllZCBGRm1wZWcgcGFy c2VyCiAgLS1lbmFibGUtcGFyc2VyPVBBUlNFUiAgICBlbmFibGUgc3BlY2lmaWVkIEZGbXBlZyBw YXJzZXIKICAtLWRpc2FibGUtcHJvdG9jb2w9UFJPVE8gIGRpc2FibGUgc3BlY2lmaWVkIEZGbXBl ZyBwcm90b2NvbAogIC0tZW5hYmxlLXByb3RvY29sPVBST1RPICAgZW5hYmxlIHNwZWNpZmllZCBG Rm1wZWcgcHJvdG9jb2wKICAtLWRpc2FibGUtZGVtdXhlcj1ERU1VWEVSIGRpc2FibGUgc3BlY2lm aWVkIEZGbXBlZyBkZW11eGVyCiAgLS1lbmFibGUtZGVtdXhlcj1ERU1VWEVSICBlbmFibGUgc3Bl Y2lmaWVkIEZGbXBlZyBkZW11eGVyCiAgLS1kaXNhYmxlLW11eGVyPU1VWEVSICAgICBkaXNhYmxl IHNwZWNpZmllZCBGRm1wZWcgbXV4ZXIKICAtLWVuYWJsZS1tdXhlcj1NVVhFUiAgICAgIGVuYWJs ZSBzcGVjaWZpZWQgRkZtcGVnIG11eGVyCgpWaWRlbyBvdXRwdXQ6CiAgLS1kaXNhYmxlLXZpZGl4 ICAgICAgICAgIGRpc2FibGUgVklESVggW2ZvciB4ODYgKm5peF0KICAtLXdpdGgtdmlkaXgtZHJp dmVyc1s9Kl0gbGlzdCBvZiBWSURJWCBkcml2ZXJzIHRvIGJlIGNvbXBpbGVkIGluCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIEF2YWlsYWJsZTogY3liZXJibGFkZSwgaXZ0diwgbWFjaDY0LCBt Z2EsIG1nYV9jcnRjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZpZGlhLCBwbTIsIHBt MywgcmFkZW9uLCByYWdlMTI4LCBzMywgc2lzLCB1bmljaHJvbWUKICAtLWRpc2FibGUtdmlkaXgt cGNpZGIgICAgZGlzYWJsZSBWSURJWCBQQ0kgZGV2aWNlIG5hbWUgZGF0YWJhc2UKICAtLWVuYWJs ZS1kaGFoZWxwZXIgICAgICAgZW5hYmxlIFZJRElYIGRoYWhlbHBlciBzdXBwb3J0CiAgLS1lbmFi bGUtc3ZnYWxpYl9oZWxwZXIgIGVuYWJsZSBWSURJWCBzdmdhbGliX2hlbHBlciBzdXBwb3J0CiAg LS1lbmFibGUtZ2wgICAgICAgICAgICAgIGVuYWJsZSBPcGVuR0wgdmlkZW8gb3V0cHV0IFthdXRv ZGV0ZWN0XQogIC0tZGlzYWJsZS1tYXRyaXh2aWV3ICAgICBkaXNhYmxlIE9wZW5HTCBNYXRyaXhW aWV3IHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1kZ2EyICAgICAgICAgICAg ZW5hYmxlIERHQSAyIHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtZGdhMSAgICAgICAg ICAgIGVuYWJsZSBER0EgMSBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLXZlc2EgICAg ICAgICAgICBlbmFibGUgVkVTQSB2aWRlbyBvdXRwdXQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUt c3ZnYSAgICAgICAgICAgIGVuYWJsZSBTVkdBbGliIHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0K ICAtLWVuYWJsZS1zZGwgICAgICAgICAgICAgZW5hYmxlIFNETCB2aWRlbyBvdXRwdXQgW2F1dG9k ZXRlY3RdCiAgLS1lbmFibGUta3ZhICAgICAgICAgICAgIGVuYWJsZSBLVkEgdmlkZW8gb3V0cHV0 IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWFhICAgICAgICAgICAgICBlbmFibGUgQUFsaWIgdmlk ZW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWNhY2EgICAgICAgICAgICBlbmFibGUg Q0FDQSAgdmlkZW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWdnaSAgICAgICAgICAg ICBlbmFibGUgR0dJIHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1nZ2l3bWgg ICAgICAgICAgZW5hYmxlIEdHSSBsaWJnZ2l3bWggZXh0ZW5zaW9uIFthdXRvZGV0ZWN0XQogIC0t ZW5hYmxlLWRpcmVjdDNkICAgICAgICBlbmFibGUgRGlyZWN0M0QgdmlkZW8gb3V0cHV0IFthdXRv ZGV0ZWN0XQogIC0tZW5hYmxlLWRpcmVjdHggICAgICAgICBlbmFibGUgRGlyZWN0WCB2aWRlbyBv dXRwdXQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtZHhyMiAgICAgICAgICAgIGVuYWJsZSBEWFIy IHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1keHIzICAgICAgICAgICAgZW5h YmxlIERYUjMvSCsgdmlkZW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWl2dHYgICAg ICAgICAgICBlbmFibGUgSVZUViBUVi1PdXQgdmlkZW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0t ZW5hYmxlLXY0bDIgICAgICAgICAgICBlbmFibGUgVjRMMiBEZWNvZGVyIGF1ZGlvL3ZpZGVvIG91 dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1kdmIgICAgICAgICAgICAgZW5hYmxlIERWQiB2 aWRlbyBvdXRwdXQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtbWdhICAgICAgICAgICAgIGVuYWJs ZSBtZ2FfdmlkIHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS14bWdhICAgICAg ICAgICAgZW5hYmxlIG1nYV92aWQgWDExIHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVu YWJsZS14diAgICAgICAgICAgICAgZW5hYmxlIFh2IHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0K ICAtLWVuYWJsZS14dm1jICAgICAgICAgICAgZW5hYmxlIFh2TUMgYWNjZWxlcmF0aW9uIFtkaXNh YmxlXQogIC0tZW5hYmxlLXZkYSAgICAgICAgICAgICBlbmFibGUgVkRBIGFjY2VsZXJhdGlvbiBb YXV0b2RldGVjdF0KICAtLWVuYWJsZS12ZHBhdSAgICAgICAgICAgZW5hYmxlIFZEUEFVIGFjY2Vs ZXJhdGlvbiBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS12bSAgICAgICAgICAgICAgZW5hYmxlIFhG ODZWaWRNb2RlIHN1cHBvcnQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUteGluZXJhbWEgICAgICAg IGVuYWJsZSBYaW5lcmFtYSBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLXgxMSAgICAg ICAgICAgICBlbmFibGUgWDExIHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS14 c2hhcGUgICAgICAgICAgZW5hYmxlIFhTaGFwZSBzdXBwb3J0IFthdXRvZGV0ZWN0XQogIC0tZGlz YWJsZS14c3MgICAgICAgICAgICBkaXNhYmxlIHNjcmVlbnNhdmVyIHN1cHBvcnQgdmlhIHhzcyBb YXV0b2RldGVjdF0KICAtLWVuYWJsZS1mYmRldiAgICAgICAgICAgZW5hYmxlIEZCRGV2IHZpZGVv IG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1tbGliICAgICAgICAgICAgZW5hYmxlIG1l ZGlhTGliIHZpZGVvIG91dHB1dCAoU29sYXJpcykgW2Rpc2FibGVdCiAgLS1lbmFibGUtM2RmeCAg ICAgICAgICAgIGVuYWJsZSBvYnNvbGV0ZSAvZGV2LzNkZnggdmlkZW8gb3V0cHV0IFtkaXNhYmxl XQogIC0tZW5hYmxlLXRkZnhmYiAgICAgICAgICBlbmFibGUgdGRmeGZiIHZpZGVvIG91dHB1dCBb ZGlzYWJsZV0KICAtLWVuYWJsZS1zM2ZiICAgICAgICAgICAgZW5hYmxlIHMzZmIgKFMzIFZpUkdF KSB2aWRlbyBvdXRwdXQgW2Rpc2FibGVdCiAgLS1lbmFibGUtd2lpICAgICAgICAgICAgIGVuYWJs ZSBOaW50ZW5kbyBXaWkvR2FtZUN1YmUgdmlkZW8gb3V0cHV0IFtkaXNhYmxlXQogIC0tZW5hYmxl LWRpcmVjdGZiICAgICAgICBlbmFibGUgRGlyZWN0RkIgdmlkZW8gb3V0cHV0IFthdXRvZGV0ZWN0 XQogIC0tZW5hYmxlLXpyICAgICAgICAgICAgICBlbmFibGUgWlIzNjBbNTZdNy9aUjM2MDYwIHZp ZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1ibCAgICAgICAgICAgICAgZW5hYmxl IEJsaW5rZW5saWdodHMgdmlkZW8gb3V0cHV0IFtkaXNhYmxlXQogIC0tZW5hYmxlLXRkZnh2aWQg ICAgICAgICBlbmFibGUgdGRmeF92aWQgdmlkZW8gb3V0cHV0IFtkaXNhYmxlXQogIC0tZW5hYmxl LXh2cjEwMCAgICAgICAgICBlbmFibGUgU1VOIFhWUi0xMDAgdmlkZW8gb3V0cHV0IFthdXRvZGV0 ZWN0XQogIC0tZGlzYWJsZS10Z2EgICAgICAgICAgICBkaXNhYmxlIFRhcmdhIHZpZGVvIG91dHB1 dCBbZW5hYmxlXQogIC0tZGlzYWJsZS1wbm0gICAgICAgICAgICBkaXNhYmxlIFBOTSB2aWRlbyBv dXRwdXQgW2VuYWJsZV0KICAtLWRpc2FibGUtbWQ1c3VtICAgICAgICAgZGlzYWJsZSBtZDVzdW0g dmlkZW8gb3V0cHV0IFtlbmFibGVdCiAgLS1kaXNhYmxlLXl1djRtcGVnICAgICAgIGRpc2FibGUg eXV2NG1wZWcgdmlkZW8gb3V0cHV0IFtlbmFibGVdCiAgLS1kaXNhYmxlLWNvcmV2aWRlbyAgICAg IGRpc2FibGUgQ29yZVZpZGVvIHZpZGVvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUt cXVhcnR6ICAgICAgICAgZGlzYWJsZSBRdWFydHogdmlkZW8gb3V0cHV0IFthdXRvZGV0ZWN0XQoK QXVkaW8gb3V0cHV0OgogIC0tZGlzYWJsZS1hbHNhICAgICAgICAgZGlzYWJsZSBBTFNBIGF1ZGlv IG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtb3NzYXVkaW8gICAgIGRpc2FibGUgT1NT IGF1ZGlvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtYXJ0cyAgICAgICAgIGRpc2Fi bGUgYVJ0cyBhdWRpbyBvdXRwdXQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWVzZCAgICAgICAg ICBkaXNhYmxlIGVzZCBhdWRpbyBvdXRwdXQgW2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLXB1bHNl ICAgICAgICBkaXNhYmxlIFB1bHNlYXVkaW8gYXVkaW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0t ZGlzYWJsZS1qYWNrICAgICAgICAgZGlzYWJsZSBKQUNLIGF1ZGlvIG91dHB1dCBbYXV0b2RldGVj dF0KICAtLWRpc2FibGUtb3BlbmFsICAgICAgIGRpc2FibGUgT3BlbkFMIGF1ZGlvIG91dHB1dCBb YXV0b2RldGVjdF0KICAtLWRpc2FibGUtbmFzICAgICAgICAgIGRpc2FibGUgTkFTIGF1ZGlvIG91 dHB1dCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtc2dpYXVkaW8gICAgIGRpc2FibGUgU0dJIGF1 ZGlvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtc25kaW8gICAgICAgIGRpc2FibGUg c25kaW8gYXVkaW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1zdW5hdWRpbyAgICAg ZGlzYWJsZSBTdW4gYXVkaW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1rYWkgICAg ICAgICAgZGlzYWJsZSBLQUkgYXVkaW8gb3V0cHV0IFthdXRvZGV0ZWN0XQogIC0tZGlzYWJsZS1k YXJ0ICAgICAgICAgZGlzYWJsZSBEQVJUIGF1ZGlvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWRp c2FibGUtd2luMzJ3YXZlb3V0IGRpc2FibGUgV2luZG93cyB3YXZlb3V0IGF1ZGlvIG91dHB1dCBb YXV0b2RldGVjdF0KICAtLWRpc2FibGUtY29yZWF1ZGlvICAgIGRpc2FibGUgQ29yZUF1ZGlvIGF1 ZGlvIG91dHB1dCBbYXV0b2RldGVjdF0KICAtLWRpc2FibGUtc2VsZWN0ICAgICAgIGRpc2FibGUg dXNpbmcgc2VsZWN0KCkgb24gdGhlIGF1ZGlvIGRldmljZSBbZW5hYmxlXQoKTGFuZ3VhZ2Ugb3B0 aW9uczoKICAtLWNoYXJzZXQ9Y2hhcnNldCAgICAgIGNvbnZlcnQgdGhlIGNvbnNvbGUgbWVzc2Fn ZXMgdG8gdGhpcyBjaGFyYWN0ZXIgc2V0CiAgLS1sYW5ndWFnZS1kb2M9bGFuZyAgICBsYW5ndWFn ZSB0byB1c2UgZm9yIHRoZSBkb2N1bWVudGF0aW9uIFtlbl0KICAtLWxhbmd1YWdlLW1hbj1sYW5n ICAgIGxhbmd1YWdlIHRvIHVzZSBmb3IgdGhlIG1hbiBwYWdlcyBbZW5dCiAgLS1sYW5ndWFnZS1t c2c9bGFuZyAgICBsYW5ndWFnZSB0byB1c2UgZm9yIHRoZSBtZXNzYWdlcyBhbmQgdGhlIEdVSSBb ZW5dCiAgLS1sYW5ndWFnZT1sYW5nICAgICAgICBkZWZhdWx0IGxhbmd1YWdlIHRvIHVzZSBbZW5d ClNwZWNpZmljIG9wdGlvbnMgb3ZlcnJpZGUgLS1sYW5ndWFnZS4gWW91IGNhbiBwYXNzIGEgbGlz dCBvZiBsYW5ndWFnZXMgc2VwYXJhdGVkCmJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzIGluc3RlYWQg b2YgYSBzaW5nbGUgbGFuZ3VhZ2UuIE5vbmV4aXN0aW5nIHRyYW5zbGF0aW9ucwp3aWxsIGJlIGRy b3BwZWQgZnJvbSBlYWNoIGxpc3QuIEFsbCBkb2N1bWVudGF0aW9uIGFuZCBtYW4gcGFnZSB0cmFu c2xhdGlvbnMKYXZhaWxhYmxlIGluIHRoZSBsaXN0IHdpbGwgYmUgaW5zdGFsbGVkLCBmb3IgdGhl IG1lc3NhZ2VzIHRoZSBmaXJzdCBhdmFpbGFibGUKdHJhbnNsYXRpb24gd2lsbCBiZSB1c2VkLiBU aGUgdmFsdWUgImFsbCIgd2lsbCBhY3RpdmF0ZSBhbGwgdHJhbnNsYXRpb25zLiBUaGUKTElOR1VB UyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBob25vcmVkLiBJbiBhbGwgY2FzZXMgdGhlIGZhbGxi YWNrIGlzIEVuZ2xpc2guCkF2YWlsYWJsZSB2YWx1ZXMgYXJlOiBhbGwgJG1zZ19sYW5nX2FsbAoK TWlzY2VsbGFuZW91cyBvcHRpb25zOgogIC0tZW5hYmxlLXJ1bnRpbWUtY3B1ZGV0ZWN0aW9uICAg IGVuYWJsZSBydW50aW1lIENQVSBkZXRlY3Rpb24gW2Rpc2FibGVdCiAgLS1lbmFibGUtY3Jvc3Mt Y29tcGlsZSBlbmFibGUgY3Jvc3MtY29tcGlsYXRpb24gW2F1dG9kZXRlY3RdCiAgLS1jYz1DT01Q SUxFUiAgICAgICAgICBDIGNvbXBpbGVyIHRvIGJ1aWxkIE1QbGF5ZXIgW2djY10KICAtLWhvc3Qt Y2M9Q09NUElMRVIgICAgIEMgY29tcGlsZXIgZm9yIHRvb2xzIG5lZWRlZCB3aGlsZSBidWlsZGlu ZyBbZ2NjXQogIC0tYXM9QVNTRU1CTEVSICAgICAgICAgYXNzZW1ibGVyIHRvIGJ1aWxkIE1QbGF5 ZXIgW2FzXQogIC0tbm09Tk0gICAgICAgICAgICAgICAgbm0gdG9vbCB0byBidWlsZCBNUGxheWVy IFtubV0KICAtLXlhc209WUFTTSAgICAgICAgICAgIFlhc20gYXNzZW1ibGVyIHRvIGJ1aWxkIE1Q bGF5ZXIgW3lhc21dCiAgLS1hcj1BUiAgICAgICAgICAgICAgICBsaWJyYXJpYW4gdG8gYnVpbGQg TVBsYXllciBbYXJdCiAgLS1yYW5saWI9UkFOTElCICAgICAgICByYW5saWIgdG8gYnVpbGQgTVBs YXllciBbcmFubGliXQogIC0td2luZHJlcz1XSU5EUkVTICAgICAgd2luZHJlcyB0byBidWlsZCBN UGxheWVyIFt3aW5kcmVzXQogIC0tdGFyZ2V0PVBMQVRGT1JNICAgICAgdGFyZ2V0IHBsYXRmb3Jt IChpMzg2LWxpbnV4LCBhcm0tbGludXgsIGV0YykKICAtLWVuYWJsZS1zdGF0aWMgICAgICAgIGJ1 aWxkIGEgc3RhdGljYWxseSBsaW5rZWQgYmluYXJ5CiAgLS13aXRoLWluc3RhbGw9UEFUSCAgICBw YXRoIHRvIGEgY3VzdG9tIGluc3RhbGwgcHJvZ3JhbQoKQWR2YW5jZWQgb3B0aW9uczoKICAtLWVu YWJsZS1tbXggICAgICAgICAgICAgIGVuYWJsZSBNTVggW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUt bW14ZXh0ICAgICAgICAgICBlbmFibGUgTU1YMiAoUGVudGl1bSBJSUksIEF0aGxvbikgW2F1dG9k ZXRlY3RdCiAgLS1lbmFibGUtM2Rub3cgICAgICAgICAgICBlbmFibGUgM0ROb3chIFthdXRvZGV0 ZWN0XQogIC0tZW5hYmxlLTNkbm93ZXh0ICAgICAgICAgZW5hYmxlIGV4dGVuZGVkIDNETm93ISBb YXV0b2RldGVjdF0KICAtLWVuYWJsZS1zc2UgICAgICAgICAgICAgIGVuYWJsZSBTU0UgW2F1dG9k ZXRlY3RdCiAgLS1lbmFibGUtc3NlMiAgICAgICAgICAgICBlbmFibGUgU1NFMiBbYXV0b2RldGVj dF0KICAtLWVuYWJsZS1zc2UzICAgICAgICAgICAgIGVuYWJsZSBTU0UzIFthdXRvZGV0ZWN0XQog IC0tZW5hYmxlLXNzc2UzICAgICAgICAgICAgZW5hYmxlIFNTU0UzIFthdXRvZGV0ZWN0XQogIC0t ZW5hYmxlLXNzZTQgICAgICAgICAgICAgZW5hYmxlIFNTRTQgW2F1dG9kZXRlY3RdCiAgLS1lbmFi bGUtc3NlNDIgICAgICAgICAgICBlbmFibGUgU1NFNC4yIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxl LWF2eCAgICAgICAgICAgICAgZW5hYmxlIEFWWCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1hdngy ICAgICAgICAgICAgIGVuYWJsZSBBVlgyIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLXhvcCAgICAg ICAgICAgICAgZW5hYmxlIFhPUCBbYXV0b2RldGVjdF0KICAtLWVuYWJsZS1mbWEzICAgICAgICAg ICAgIGVuYWJsZSBGTUEzIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWZtYTQgICAgICAgICAgICAg ZW5hYmxlIEZNQTQgW2F1dG9kZXRlY3RdCiAgLS1lbmFibGUtc2htICAgICAgICAgICAgICBlbmFi bGUgc2htIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWFsdGl2ZWMgICAgICAgICAgZW5hYmxlIEFs dGlWZWMgKFBvd2VyUEMpIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWFybXY1dGUgICAgICAgICAg ZW5hYmxlIERTUCBleHRlbnNpb25zIChBUk0pIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWFybXY2 ICAgICAgICAgICAgZW5hYmxlIEFSTXY2IChBUk0pIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWFy bXY2dDIgICAgICAgICAgZW5hYmxlIEFSTXY2dDIgKEFSTSkgW2F1dG9kZXRlY3RdCiAgLS1lbmFi bGUtYXJtdmZwICAgICAgICAgICBlbmFibGUgQVJNIFZGUCAoQVJNKSBbYXV0b2RldGVjdF0KICAt LWVuYWJsZS12ZnB2MyAgICAgICAgICAgIGVuYWJsZSBBUk0gVkZQVjMgKEFSTSkgW2F1dG9kZXRl Y3RdCiAgLS1lbmFibGUtbmVvbiAgICAgICAgICAgICBlbmFibGUgTkVPTiAoQVJNKSBbYXV0b2Rl dGVjdF0KICAtLWVuYWJsZS10aHVtYiAgICAgICAgICAgIGVuYWJsZSBUSFVNQiAoQVJNKSBbYXV0 b2RldGVjdF0KICAtLWVuYWJsZS1pd21teHQgICAgICAgICAgIGVuYWJsZSBpV01NWHQgKEFSTSkg W2F1dG9kZXRlY3RdCiAgLS1kaXNhYmxlLWZhc3RtZW1jcHkgICAgICBkaXNhYmxlIDNETm93IS9T U0UvTU1YIG9wdGltaXplZCBtZW1jcHkgW2VuYWJsZV0KICAtLWVuYWJsZS1oYXJkY29kZWQtdGFi bGVzIHB1dCB0YWJsZXMgaW4gYmluYXJ5IGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlbSBhdCBz dGFydHVwIFtkaXNhYmxlXQogIC0tZW5hYmxlLWJpZy1lbmRpYW4gICAgICAgZm9yY2UgYnl0ZSBv cmRlciB0byBiaWctZW5kaWFuIFthdXRvZGV0ZWN0XQogIC0tZW5hYmxlLWRlYnVnWz0xLTNdICAg ICAgY29tcGlsZS1pbiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gW2Rpc2FibGVdCiAgLS1lbmFibGUt cHJvZmlsZSAgICAgICAgICBjb21waWxlLWluIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBbZGlzYWJs ZV0KICAtLWRpc2FibGUtc2lnaGFuZGxlciAgICAgIGRpc2FibGUgc2lnaGFuZGxlciBmb3IgY3Jh c2hlcyBbZW5hYmxlXQogIC0tZW5hYmxlLXJlbG9jYXRhYmxlICAgICAgZW5hYmxlIGNvbXBpbGlu ZyBhcyByZWxvY2F0YWJsZS9QSUUgZXhlY3V0YWJsZSBbYXV0b10KICAtLWVuYWJsZS1jcmFzaC1k ZWJ1ZyAgICAgIGVuYWJsZSBhdXRvbWF0aWMgZ2RiIGF0dGFjaCBvbiBjcmFzaCBbZGlzYWJsZV0K ICAtLWVuYWJsZS1keW5hbWljLXBsdWdpbnMgIGVuYWJsZSBkeW5hbWljIEEvViBwbHVnaW5zIFtk aXNhYmxlXQoKVXNlIHRoZXNlIG9wdGlvbnMgaWYgYXV0b2RldGVjdGlvbiBmYWlsczoKICAtLWV4 dHJhLWNmbGFncz1GTEFHUyAgICAgICAgZXh0cmEgQ0ZMQUdTCiAgLS1leHRyYS1sZGZsYWdzPUZM QUdTICAgICAgIGV4dHJhIExERkxBR1MKICAtLWV4dHJhLWxpYnM9RkxBR1MgICAgICAgICAgZXh0 cmEgbGlua2VyIGZsYWdzCiAgLS1leHRyYS1saWJzLW1wbGF5ZXI9RkxBR1MgIGV4dHJhIGxpbmtl ciBmbGFncyBmb3IgTVBsYXllcgogIC0tZXh0cmEtbGlicy1tZW5jb2Rlcj1GTEFHUyBleHRyYSBs aW5rZXIgZmxhZ3MgZm9yIE1FbmNvZGVyCiAgLS13aXRoLXh2bWNsaWI9TkFNRSAgICAgICAgIGFk YXB0ZXItc3BlY2lmaWMgbGlicmFyeSBuYW1lIChlLmcuIFh2TUNOVklESUEpCgogIC0td2l0aC1m cmVldHlwZS1jb25maWc9UEFUSCBwYXRoIHRvIGZyZWV0eXBlLWNvbmZpZwogIC0td2l0aC1zZGwt Y29uZmlnPVBBVEggICAgICBwYXRoIHRvIHNkbCotY29uZmlnCiAgLS13aXRoLWR2ZG5hdi1jb25m aWc9UEFUSCAgIHBhdGggdG8gZHZkbmF2LWNvbmZpZwogIC0td2l0aC1kdmRyZWFkLWNvbmZpZz1Q QVRIICBwYXRoIHRvIGR2ZHJlYWQtY29uZmlnCgpUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgTk9U IGF1dG9jb25mLWJhc2VkLCBldmVuIHRob3VnaCBpdHMgb3V0cHV0IGlzIHNpbWlsYXIuCkl0IHdp bGwgdHJ5IHRvIGF1dG9kZXRlY3QgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSWYgeW91IC0t ZW5hYmxlIGFuIG9wdGlvbgppdCB3aWxsIGJlIGZvcmNlZnVsbHkgdHVybmVkIG9uLCBza2lwcGlu ZyBhdXRvZGV0ZWN0aW9uLiBUaGlzIGNhbiBicmVhawpjb21waWxhdGlvbiwgc28geW91IG5lZWQg dG8ga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCkVPRgpleGl0IDAKfSAjc2hvd19oZWxwKCkKCiMg R09UQ0hBOiB0aGUgdmFyaWFibGVzIGJlbG93IGRlZmluZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Ig Zm9yIGF1dG9kZXRlY3Rpb24KIyBhbmQgaGF2ZSAtIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlIC0g YXQgbGVhc3QgMiBzdGF0ZXMgOiB5ZXMgbm8KIyBJZiBhdXRvZGV0ZWN0aW9uIGlzIGF2YWlsYWJs ZSB0aGVuIHRoZSB0aGlyZCBzdGF0ZSBpczogYXV0bwpfbW14PWF1dG8KXzNkbm93PWF1dG8KXzNk bm93ZXh0PWF1dG8KX21teGV4dD1hdXRvCl9zc2U9YXV0bwpfc3NlMj1hdXRvCl9zc2UzPWF1dG8K X3Nzc2UzPWF1dG8KX3NzZTRfMT1hdXRvCl9zc2U0XzI9YXV0bwpfYXZ4PWF1dG8KX2F2eDI9YXV0 bwpfeG9wPWF1dG8KX2ZtYTM9YXV0bwpfZm1hND1hdXRvCl9jbW92PWF1dG8KX2Zhc3RfY21vdj1h dXRvCl9mYXN0X2Nsej1hdXRvCl9hcm12NXRlPWF1dG8KX2FybXY2PWF1dG8KX2FybXY2dDI9YXV0 bwpfYXJtdmZwPWF1dG8KdmZwdjM9YXV0bwpzZXRlbmQ9YXV0bwpuZW9uPWF1dG8KYXJtdGh1bWI9 YXV0bwpfaXdtbXh0PWF1dG8KX210cnI9YXV0bwpfYWx0aXZlYz1hdXRvCl9pbnN0YWxsPWluc3Rh bGwKX3JhbmxpYj1yYW5saWIKX3dpbmRyZXM9d2luZHJlcwpfY2M9Y2MKX2FyPWFyCnRlc3QgIiRD QyIgJiYgX2NjPSIkQ0MiCl9hcz1hdXRvCl9ubT1hdXRvCl95YXNtPXlhc20KX3J1bnRpbWVfY3B1 ZGV0ZWN0aW9uPW5vCl9jcm9zc19jb21waWxlPWF1dG8KX3ByZWZpeD0iL3Vzci9sb2NhbCIKZmZt cGVnX2E9YXV0bwpmZm1wZWdfc289YXV0bwpwb3N0cHJvYz1hdXRvCl92Zl9sYXZmaT1ubwpfbGli YXZjb2RlY19tcGVnYXVkaW9faHA9eWVzCl9saWJvcGVuY29yZV9hbXJuYj1hdXRvCl9saWJvcGVu Y29yZV9hbXJ3Yj1hdXRvCmxpYm9wZW5qcGVnPWF1dG8KX21lbmNvZGVyPXllcwpfbXBsYXllcj15 ZXMKX3gxMT1hdXRvCl94c2hhcGU9YXV0bwpfeHNzPWF1dG8KX2RnYTE9YXV0bwpfZGdhMj1hdXRv Cl94dj1hdXRvCl94dm1jPW5vICAjYXV0byB3aGVuIGNvbXBsZXRlCl92ZGE9YXV0bwpfdmRwYXU9 YXV0bwpfc2RsPWF1dG8KX2t2YT1hdXRvCl9kaXJlY3QzZD1hdXRvCl9kaXJlY3R4PWF1dG8KX3dp bjMyd2F2ZW91dD1hdXRvCl9uYXM9YXV0bwpfcG5nPWF1dG8KX21uZz1hdXRvCl9qcGVnPWF1dG8K X3BubT15ZXMKX21kNXN1bT15ZXMKX3l1djRtcGVnPXllcwpfZ2lmPWF1dG8KX2dsPWF1dG8KbWF0 cml4dmlldz1hdXRvCl9nZ2k9YXV0bwpfZ2dpd21oPWF1dG8KX2FhPWF1dG8KX2NhY2E9YXV0bwpf c3ZnYT1hdXRvCl92ZXNhPWF1dG8KX2ZiZGV2PWF1dG8KX2R2Yj1hdXRvCl9keHIyPWF1dG8KX2R4 cjM9YXV0bwpfaXZ0dj1hdXRvCl92NGwyPWF1dG8KX2ljb252PWF1dG8KX2xhbmdpbmZvPWF1dG8K X3J0Yz1hdXRvCl9vc3NhdWRpbz1hdXRvCl9hcnRzPWF1dG8KX2VzZD1hdXRvCl9wdWxzZT1hdXRv Cl9qYWNrPWF1dG8KX2thaT1hdXRvCl9kYXJ0PWF1dG8KX29wZW5hbD1hdXRvCl9saWJjZGlvPWF1 dG8KX2xpYmx6bz1hdXRvCl9tYWQ9YXV0bwpfbXAzbGFtZT1hdXRvCl9tcDNsYW1lX2xhdmM9YXV0 bwpfdG9vbGFtZT1hdXRvCl90d29sYW1lPWF1dG8KX3RyZW1vcj1hdXRvCl9saWJ2b3JiaXM9YXV0 bwpfc3BlZXg9YXV0bwpfbGliZ3NtPWF1dG8KX3RoZW9yYT1hdXRvCl9tcGcxMjM9YXV0bwpfbGli YTUyPWF1dG8KX2xpYmRjYT1hdXRvCl9saWJtcGVnMj1hdXRvCl9saWJtcGVnMl9pbnRlcm5hbD1u bwpfZmFhZD1hdXRvCl9mYWFjPWF1dG8KX2ZhYWNfbGF2Yz1hdXRvCl9sYWRzcGE9YXV0bwpfbGli YnMyYj1hdXRvCl9saWJpbGJjPWF1dG8KX2xpYm9wdXM9YXV0bwpfeG1tcz1ubwpfdmNkPWF1dG8K X2JsdXJheT1hdXRvCl9kdmRuYXY9YXV0bwpfZHZkbmF2Y29uZmlnPSJwa2ctY29uZmlnIGR2ZG5h diIKdHlwZSBkdmRuYXYtY29uZmlnID4vZGV2L251bGwgMj4mMSAmJiBfZHZkbmF2Y29uZmlnPWR2 ZG5hdi1jb25maWcKX2R2ZHJlYWRjb25maWc9InBrZy1jb25maWcgZHZkcmVhZCIKdHlwZSBkdmRy ZWFkLWNvbmZpZyA+L2Rldi9udWxsIDI+JjEgJiYgX2R2ZHJlYWRjb25maWc9ZHZkcmVhZC1jb25m aWcKX2R2ZHJlYWQ9YXV0bwpfeGFuaW09YXV0bwpfcmVhbD1hdXRvCl9saXZlPWF1dG8KX25lbWVz aT1hdXRvCl9saWJydG1wPWF1dG8KX25hdGl2ZV9ydHNwPXllcwpfeGluZXJhbWE9YXV0bwpfbWdh PWF1dG8KX3htZ2E9YXV0bwpfdm09YXV0bwpfeGY4NmtleXN5bT1hdXRvCl9tbGliPW5vICNicm9r ZW4sIHRodXMgZGlzYWJsZWQKX3NnaWF1ZGlvPWF1dG8KX3NuZGlvPWF1dG8KX3N1bmF1ZGlvPWF1 dG8KX2Fsc2E9YXV0bwpfZmFzdG1lbWNweT15ZXMKaGFyZGNvZGVkX3RhYmxlcz1ubwpfdW5yYXJf ZXhlYz1hdXRvCl93aW4zMmRsbD1hdXRvCl9zZWxlY3Q9eWVzCl9yYWRpbz1ubwpfcmFkaW9fY2Fw dHVyZT1ubwpfcmFkaW9fdjRsPWF1dG8KX3JhZGlvX3Y0bDI9YXV0bwpfcmFkaW9fYnNkYnQ4NDg9 YXV0bwpfdHY9eWVzCl90dl92NGwxPWF1dG8KX3R2X3Y0bDI9YXV0bwpfdHZfYnNkYnQ4NDg9YXV0 bwpfdHZfZHNob3c9YXV0bwpfcHZyPWF1dG8KbmV0d29ya2luZz15ZXMKX3dpbnNvY2syX2g9YXV0 bwpfc3RydWN0X2FkZHJpbmZvPWF1dG8KX2dldGFkZHJpbmZvPWF1dG8KX3N0cnVjdF9zb2NrYWRk cl9zdG9yYWdlPWF1dG8KX3NtYj1hdXRvCl92aWRpeD1hdXRvCl92aWRpeF9wY2lkYj15ZXMKX2Ro YWhlbHBlcj1ubwpfc3ZnYWxpYl9oZWxwZXI9bm8KX2pveXN0aWNrPW5vCmNyeXN0YWxoZD1hdXRv Cl94dmlkPWF1dG8KX3h2aWRfbGF2Yz1hdXRvCl94MjY0PWF1dG8KX3gyNjRfbGF2Yz1hdXRvCl9s aWJkaXJhY19sYXZjPWF1dG8KX2xpYnNjaHJvZWRpbmdlcl9sYXZjPWF1dG8KX2xpYnZweF9sYXZj PWF1dG8KX2xpYm51dD1hdXRvCl9saXJjPWF1dG8KX2xpcmNjPWF1dG8KX2FwcGxlX3JlbW90ZT1h dXRvCl9hcHBsZV9pcj1hdXRvCl9ndWk9bm8KX3Rlcm1jYXA9YXV0bwpfdGVybWlvcz1hdXRvCl8z ZGZ4PW5vCl9zM2ZiPW5vCl93aWk9bm8KX3RkZnhmYj1ubwpfdGRmeHZpZD1ubwpfeHZyMTAwPWF1 dG8KX3RnYT15ZXMKX2RpcmVjdGZiPWF1dG8KX3pyPWF1dG8KX2JsPW5vCiNsYW5ndWFnZT1lbgpf c2htPWF1dG8KX2NoYXJzZXQ9IlVURi04IgpfZHluYW1pY19wbHVnaW5zPW5vCl9jcmFzaF9kZWJ1 Zz1ubwpfc2lnaGFuZGxlcj15ZXMKcmVsb2NhdGFibGU9YXV0bwpfbGliZHY9YXV0bwpfY2RwYXJh bm9pYT1hdXRvCl9jZGRiPWF1dG8KX2JpZ19lbmRpYW49YXV0bwpfYml0bWFwX2ZvbnQ9eWVzCl9m cmVldHlwZT1hdXRvCl9mb250Y29uZmlnPWF1dG8KX21lbnU9bm8KX3F0eD1hdXRvCl9tYWVtbz1h dXRvCl9jb3JlYXVkaW89YXV0bwpfY29yZXZpZGVvPWF1dG8KX3F1YXJ0ej1hdXRvCnF1aWNrdGlt ZT1hdXRvCl9tYWNvc3hfZmluZGVyPW5vCl9tYWNvc3hfYnVuZGxlPWF1dG8KX3NvcnRzdWI9eWVz Cl9mcmVldHlwZWNvbmZpZz0nZnJlZXR5cGUtY29uZmlnJwpfZnJpYmlkaT1hdXRvCl9lbmNhPWF1 dG8KX2luZXQ2PWF1dG8KX3NjdHA9YXV0bwpfZ2V0aG9zdGJ5bmFtZTI9YXV0bwpfZ251dGxzPWF1 dG8KX2Z0cD1hdXRvCl9tdXNlcGFjaz1ubwpfdnN0cmVhbT1hdXRvCl9wdGhyZWFkcz1hdXRvCl93 MzJ0aHJlYWRzPWF1dG8KX29zMnRocmVhZHM9YXV0bwpfYXNzPWF1dG8KYXNzX2ludGVybmFsPWF1 dG8KX3JwYXRoPW5vCl9hc21hbGlnbl9wb3Q9YXV0bwpfc3RyZWFtX2NhY2hlPXllcwpfcHJpb3Jp dHk9bm8KZGVmX2Rvc19wYXRocz0iI2RlZmluZSBIQVZFX0RPU19QQVRIUyAwIgpkZWZfc3RyZWFt X2NhY2hlPSIjZGVmaW5lIENPTkZJR19TVFJFQU1fQ0FDSEUgMSIKZGVmX3BhdGhfbWF4X2NoZWNr PSIjZGVmaW5lIENPTkZJR19QQVRIX01BWF9DSEVDSyAwIgpkZWZfcHJpb3JpdHk9IiN1bmRlZiBD T05GSUdfUFJJT1JJVFkiCmRlZl9wdGhyZWFkX2NhY2hlPSIjdW5kZWYgUFRIUkVBRF9DQUNIRSIK c2htZW09bm8KCm9wdGlvbl92YWx1ZSgpewogIGVjaG8gJChlY2hvICQqIHwgY3V0IC1kICc9JyAt ZiAyLSkKfQoKb3B0aW9uX3ZhbHVlX3VjKCl7CiAgZWNobyAkKG9wdGlvbl92YWx1ZSAkMSB8IHRv dXBwZXIpCn0KCmZvciBhY19vcHRpb24gZG8KICBjYXNlICIkYWNfb3B0aW9uIiBpbgogIC0taGVs cHwtaGVscHwtaCkKICAgIHNob3dfaGVscAogICAgOzsKICAtLXByZWZpeD0qKQogICAgX3ByZWZp eD0kKG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWJpbmRpcj0qKQogICAgX2Jp bmRpcj0kKG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWRhdGFkaXI9KikKICAg IF9kYXRhZGlyPSQob3B0aW9uX3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwogIC0tbWFuZGlyPSop CiAgICBfbWFuZGlyPSQob3B0aW9uX3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwogIC0tY29uZmRp cj0qKQogICAgX2NvbmZkaXI9JChvcHRpb25fdmFsdWUgJGFjX29wdGlvbikKICAgIDs7CiAgLS1s aWJkaXI9KikKICAgIF9saWJkaXI9JChvcHRpb25fdmFsdWUgJGFjX29wdGlvbikKICAgIDs7CiAg LS1jb2RlY3NkaXI9KikKICAgIF9jb2RlY3NkaXI9JChvcHRpb25fdmFsdWUgJGFjX29wdGlvbikK ICAgIDs7CgogIC0td2l0aC1pbnN0YWxsPSopCiAgICBfaW5zdGFsbD0kKG9wdGlvbl92YWx1ZSAk YWNfb3B0aW9uKQogICAgOzsKICAtLXdpdGgteHZtY2xpYj0qKQogICAgX3h2bWNsaWI9JChvcHRp b25fdmFsdWUgJGFjX29wdGlvbikKICAgIDs7CgogIC0td2l0aC1zZGwtY29uZmlnPSopCiAgICBf c2RsY29uZmlnPSQob3B0aW9uX3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwogIC0td2l0aC1mcmVl dHlwZS1jb25maWc9KikKICAgIF9mcmVldHlwZWNvbmZpZz0kKG9wdGlvbl92YWx1ZSAkYWNfb3B0 aW9uKQogICAgOzsKICAtLXdpdGgtZHZkbmF2LWNvbmZpZz0qKQogICAgX2R2ZG5hdmNvbmZpZz0k KG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLXdpdGgtZHZkcmVhZC1jb25maWc9 KikKICAgIF9kdmRyZWFkY29uZmlnPSQob3B0aW9uX3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwoK ICAtLWV4dHJhLWNmbGFncz0qKQogICAgZXh0cmFfY2ZsYWdzPSQob3B0aW9uX3ZhbHVlICRhY19v cHRpb24pCiAgICA7OwogIC0tZXh0cmEtbGRmbGFncz0qKQogICAgZXh0cmFfbGRmbGFncz0kKG9w dGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWV4dHJhLWxpYnM9KikKICAgIGV4dHJh X2xpYnM9JChvcHRpb25fdmFsdWUgJGFjX29wdGlvbikKICAgIDs7CiAgLS1leHRyYS1saWJzLW1w bGF5ZXI9KikKICAgIGxpYnNfbXBsYXllcj0kKG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAg OzsKICAtLWV4dHJhLWxpYnMtbWVuY29kZXI9KikKICAgIGxpYnNfbWVuY29kZXI9JChvcHRpb25f dmFsdWUgJGFjX29wdGlvbikKICAgIDs7CgogIC0tdGFyZ2V0PSopCiAgICBfdGFyZ2V0PSQob3B0 aW9uX3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwogIC0tY2M9KikKICAgIF9jYz0kKG9wdGlvbl92 YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWhvc3QtY2M9KikKICAgIF9ob3N0X2NjPSQob3B0 aW9uX3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwogIC0tYXM9KikKICAgIF9hcz0kKG9wdGlvbl92 YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLW5tPSopCiAgICBfbm09JChvcHRpb25fdmFsdWUg JGFjX29wdGlvbikKICAgIDs7CiAgLS15YXNtPSopCiAgICBfeWFzbT0kKG9wdGlvbl92YWx1ZSAk YWNfb3B0aW9uKQogICAgOzsKICAtLWFyPSopCiAgICBfYXI9JChvcHRpb25fdmFsdWUgJGFjX29w dGlvbikKICAgIDs7CiAgLS1yYW5saWI9KikKICAgIF9yYW5saWI9JChvcHRpb25fdmFsdWUgJGFj X29wdGlvbikKICAgIDs7CiAgLS13aW5kcmVzPSopCiAgICBfd2luZHJlcz0kKG9wdGlvbl92YWx1 ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWNoYXJzZXQ9KikKICAgIF9jaGFyc2V0PSQob3B0aW9u X3ZhbHVlICRhY19vcHRpb24pCiAgICA7OwogIC0tbGFuZ3VhZ2UtZG9jPSopCiAgICBsYW5ndWFn ZV9kb2M9JChvcHRpb25fdmFsdWUgJGFjX29wdGlvbikKICAgIDs7CiAgLS1sYW5ndWFnZS1tYW49 KikKICAgIGxhbmd1YWdlX21hbj0kKG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAt LWxhbmd1YWdlLW1zZz0qKQogICAgbGFuZ3VhZ2VfbXNnPSQob3B0aW9uX3ZhbHVlICRhY19vcHRp b24pCiAgICA7OwogIC0tbGFuZ3VhZ2U9KikKICAgIGxhbmd1YWdlPSQob3B0aW9uX3ZhbHVlICRh Y19vcHRpb24pCiAgICA7OwoKICAtLWVuYWJsZS1zdGF0aWMpCiAgICBsZF9zdGF0aWM9Jy1zdGF0 aWMnCiAgICA7OwogIC0tZGlzYWJsZS1zdGF0aWMpCiAgICBsZF9zdGF0aWM9JycKICAgIDs7CiAg LS1lbmFibGUtcHJvZmlsZSkKICAgIF9wcm9maWxlPSctcCcKICAgIDs7CiAgLS1kaXNhYmxlLXBy b2ZpbGUpCiAgICBfcHJvZmlsZT0KICAgIDs7CiAgLS1lbmFibGUtZGVidWcpCiAgICBfZGVidWc9 Jy1nJwogICAgOzsKICAtLWVuYWJsZS1kZWJ1Zz0qKQogICAgX2RlYnVnPSQoZWNobyAkX2VjaG9f biAnLWcnJF9lY2hvX2M7IG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWRpc2Fi bGUtZGVidWcpCiAgICBfZGVidWc9CiAgICA7OwogIC0tZW5hYmxlLXJ1bnRpbWUtY3B1ZGV0ZWN0 aW9uKSAgICBfcnVudGltZV9jcHVkZXRlY3Rpb249eWVzICAgOzsKICAtLWRpc2FibGUtcnVudGlt ZS1jcHVkZXRlY3Rpb24pICAgX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uPW5vICAgIDs7CiAgLS1lbmFi bGUtY3Jvc3MtY29tcGlsZSkgICAgICAgICAgIF9jcm9zc19jb21waWxlPXllcyAgICAgICAgICA7 OwogIC0tZGlzYWJsZS1jcm9zcy1jb21waWxlKSAgICAgICAgICBfY3Jvc3NfY29tcGlsZT1ubyAg ICAgICAgICAgOzsKICAtLWVuYWJsZS1tZW5jb2RlcikgICAgX21lbmNvZGVyPXllcyAgIDs7CiAg LS1kaXNhYmxlLW1lbmNvZGVyKSAgIF9tZW5jb2Rlcj1ubyAgICA7OwogIC0tZW5hYmxlLW1wbGF5 ZXIpICAgICBfbXBsYXllcj15ZXMgICAgOzsKICAtLWRpc2FibGUtbXBsYXllcikgICAgX21wbGF5 ZXI9bm8gICAgIDs7CiAgLS1lbmFibGUtZHluYW1pYy1wbHVnaW5zKSBfZHluYW1pY19wbHVnaW5z PXllcyA7OwogIC0tZGlzYWJsZS1keW5hbWljLXBsdWdpbnMpIF9keW5hbWljX3BsdWdpbnM9bm8g OzsKICAtLWVuYWJsZS14MTEpICAgICAgICAgX3gxMT15ZXMgICAgICAgIDs7CiAgLS1kaXNhYmxl LXgxMSkgICAgICAgIF94MTE9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLXhzaGFwZSkgICAgICBf eHNoYXBlPXllcyAgICAgOzsKICAtLWRpc2FibGUteHNoYXBlKSAgICAgX3hzaGFwZT1ubyAgICAg IDs7CiAgLS1lbmFibGUteHNzKSAgICAgICAgIF94c3M9eWVzICAgICAgICA7OwogIC0tZGlzYWJs ZS14c3MpICAgICAgICBfeHNzPW5vICAgICAgICAgOzsKICAtLWVuYWJsZS14dikgICAgICAgICAg X3h2PXllcyAgICAgICAgIDs7CiAgLS1kaXNhYmxlLXh2KSAgICAgICAgIF94dj1ubyAgICAgICAg ICA7OwogIC0tZW5hYmxlLXh2bWMpICAgICAgICBfeHZtYz15ZXMgICAgICAgOzsKICAtLWRpc2Fi bGUteHZtYykgICAgICAgX3h2bWM9bm8gICAgICAgIDs7CiAgLS1lbmFibGUtdmRhKSAgICAgICAg IF92ZGE9eWVzICAgICAgICA7OwogIC0tZGlzYWJsZS12ZGEpICAgICAgICBfdmRhPW5vICAgICAg ICAgOzsKICAtLWVuYWJsZS12ZHBhdSkgICAgICAgX3ZkcGF1PXllcyAgICAgIDs7CiAgLS1kaXNh YmxlLXZkcGF1KSAgICAgIF92ZHBhdT1ubyAgICAgICA7OwogIC0tZW5hYmxlLXNkbCkgICAgICAg ICBfc2RsPXllcyAgICAgICAgOzsKICAtLWRpc2FibGUtc2RsKSAgICAgICAgX3NkbD1ubyAgICAg ICAgIDs7CiAgLS1lbmFibGUta3ZhKSAgICAgICAgIF9rdmE9eWVzICAgICAgICA7OwogIC0tZGlz YWJsZS1rdmEpICAgICAgICBfa3ZhPW5vICAgICAgICAgOzsKICAtLWVuYWJsZS1kaXJlY3QzZCkg ICAgX2RpcmVjdDNkPXllcyAgIDs7CiAgLS1kaXNhYmxlLWRpcmVjdDNkKSAgIF9kaXJlY3QzZD1u byAgICA7OwogIC0tZW5hYmxlLWRpcmVjdHgpICAgICBfZGlyZWN0eD15ZXMgICAgOzsKICAtLWRp c2FibGUtZGlyZWN0eCkgICAgX2RpcmVjdHg9bm8gICAgIDs7CiAgLS1lbmFibGUtd2luMzJ3YXZl b3V0KSAgX3dpbjMyd2F2ZW91dD15ZXMgOzsKICAtLWRpc2FibGUtd2luMzJ3YXZlb3V0KSBfd2lu MzJ3YXZlb3V0PW5vICA7OwogIC0tZW5hYmxlLW5hcykgICAgICAgICBfbmFzPXllcyAgICAgICAg OzsKICAtLWRpc2FibGUtbmFzKSAgICAgICAgX25hcz1ubyAgICAgICAgIDs7CiAgLS1lbmFibGUt cG5nKSAgICAgICAgIF9wbmc9eWVzICAgICAgICA7OwogIC0tZGlzYWJsZS1wbmcpICAgICAgICBf cG5nPW5vICAgICAgICAgOzsKICAtLWVuYWJsZS1tbmcpICAgICAgICAgX21uZz15ZXMgICAgICAg IDs7CiAgLS1kaXNhYmxlLW1uZykgICAgICAgIF9tbmc9bm8gICAgICAgICA7OwogIC0tZW5hYmxl LWpwZWcpICAgICAgICBfanBlZz15ZXMgICAgICAgOzsKICAtLWRpc2FibGUtanBlZykgICAgICAg X2pwZWc9bm8gICAgICAgIDs7CiAgLS1lbmFibGUtbGlib3BlbmpwZWcpIGxpYm9wZW5qcGVnPXll cyA7OwogIC0tZGlzYWJsZS1saWJvcGVuanBlZylsaWJvcGVuanBlZz1ubyAgOzsKICAtLWVuYWJs ZS1wbm0pICAgICAgICAgX3BubT15ZXMgICAgICAgIDs7CiAgLS1kaXNhYmxlLXBubSkgICAgICAg IF9wbm09bm8gICAgICAgICA7OwogIC0tZW5hYmxlLW1kNXN1bSkgICAgICBfbWQ1c3VtPXllcyAg ICAgOzsKICAtLWRpc2FibGUtbWQ1c3VtKSAgICAgX21kNXN1bT1ubyAgICAgIDs7CiAgLS1lbmFi bGUteXV2NG1wZWcpICAgIF95dXY0bXBlZz15ZXMgICA7OwogIC0tZGlzYWJsZS15dXY0bXBlZykg ICBfeXV2NG1wZWc9bm8gICAgOzsKICAtLWVuYWJsZS1naWYpICAgICAgICAgX2dpZj15ZXMgICAg ICAgIDs7CiAgLS1kaXNhYmxlLWdpZikgICAgICAgIF9naWY9bm8gICAgICAgICA7OwogIC0tZW5h YmxlLWdsKSAgICAgICAgICBfZ2w9eWVzICAgICAgICAgOzsKICAtLWRpc2FibGUtZ2wpICAgICAg ICAgX2dsPW5vICAgICAgICAgIDs7CiAgLS1lbmFibGUtbWF0cml4dmlldykgIG1hdHJpeHZpZXc9 eWVzICA7OwogIC0tZGlzYWJsZS1tYXRyaXh2aWV3KSBtYXRyaXh2aWV3PW5vICAgOzsKICAtLWVu YWJsZS1nZ2kpICAgICAgICAgX2dnaT15ZXMgICAgICAgIDs7CiAgLS1kaXNhYmxlLWdnaSkgICAg ICAgIF9nZ2k9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLWdnaXdtaCkgICAgICBfZ2dpd21oPXll cyAgICAgOzsKICAtLWRpc2FibGUtZ2dpd21oKSAgICAgX2dnaXdtaD1ubyAgICAgIDs7CiAgLS1l bmFibGUtYWEpICAgICAgICAgIF9hYT15ZXMgICAgICAgICA7OwogIC0tZGlzYWJsZS1hYSkgICAg ICAgICBfYWE9bm8gICAgICAgICAgOzsKICAtLWVuYWJsZS1jYWNhKSAgICAgICAgX2NhY2E9eWVz ICAgICAgIDs7CiAgLS1kaXNhYmxlLWNhY2EpICAgICAgIF9jYWNhPW5vICAgICAgICA7OwogIC0t ZW5hYmxlLXN2Z2EpICAgICAgICBfc3ZnYT15ZXMgICAgICAgOzsKICAtLWRpc2FibGUtc3ZnYSkg ICAgICAgX3N2Z2E9bm8gICAgICAgIDs7CiAgLS1lbmFibGUtdmVzYSkgICAgICAgIF92ZXNhPXll cyAgICAgICA7OwogIC0tZGlzYWJsZS12ZXNhKSAgICAgICBfdmVzYT1ubyAgICAgICAgOzsKICAt LWVuYWJsZS1mYmRldikgICAgICAgX2ZiZGV2PXllcyAgICAgIDs7CiAgLS1kaXNhYmxlLWZiZGV2 KSAgICAgIF9mYmRldj1ubyAgICAgICA7OwogIC0tZW5hYmxlLWR2YikgICAgICAgICBfZHZiPXll cyAgICAgICAgOzsKICAtLWRpc2FibGUtZHZiKSAgICAgICAgX2R2Yj1ubyAgICAgICAgIDs7CiAg LS1lbmFibGUtZHhyMikgICAgICAgIF9keHIyPXllcyAgICAgICA7OwogIC0tZGlzYWJsZS1keHIy KSAgICAgICBfZHhyMj1ubyAgICAgICAgOzsKICAtLWVuYWJsZS1keHIzKSAgICAgICAgX2R4cjM9 eWVzICAgICAgIDs7CiAgLS1kaXNhYmxlLWR4cjMpICAgICAgIF9keHIzPW5vICAgICAgICA7Owog IC0tZW5hYmxlLWl2dHYpICAgICAgICBfaXZ0dj15ZXMgICAgICAgOzsKICAtLWRpc2FibGUtaXZ0 dikgICAgICAgX2l2dHY9bm8gICAgICAgIDs7CiAgLS1lbmFibGUtdjRsMikgICAgICAgIF92NGwy PXllcyAgICAgICA7OwogIC0tZGlzYWJsZS12NGwyKSAgICAgICBfdjRsMj1ubyAgICAgICAgOzsK ICAtLWVuYWJsZS1pY29udikgICAgICAgX2ljb252PXllcyAgICAgIDs7CiAgLS1kaXNhYmxlLWlj b252KSAgICAgIF9pY29udj1ubyAgICAgICA7OwogIC0tZW5hYmxlLWxhbmdpbmZvKSAgICBfbGFu Z2luZm89eWVzICAgOzsKICAtLWRpc2FibGUtbGFuZ2luZm8pICAgX2xhbmdpbmZvPW5vICAgIDs7 CiAgLS1lbmFibGUtcnRjKSAgICAgICAgIF9ydGM9eWVzICAgICAgICA7OwogIC0tZGlzYWJsZS1y dGMpICAgICAgICBfcnRjPW5vICAgICAgICAgOzsKICAtLWVuYWJsZS1saWJkdikgICAgICAgX2xp YmR2PXllcyAgICAgIDs7CiAgLS1kaXNhYmxlLWxpYmR2KSAgICAgIF9saWJkdj1ubyAgICAgICA7 OwogIC0tZW5hYmxlLW9zc2F1ZGlvKSAgICBfb3NzYXVkaW89eWVzICAgOzsKICAtLWRpc2FibGUt b3NzYXVkaW8pICAgX29zc2F1ZGlvPW5vICAgIDs7CiAgLS1lbmFibGUtYXJ0cykgICAgICAgIF9h cnRzPXllcyAgICAgICA7OwogIC0tZGlzYWJsZS1hcnRzKSAgICAgICBfYXJ0cz1ubyAgICAgICAg OzsKICAtLWVuYWJsZS1lc2QpICAgICAgICAgX2VzZD15ZXMgICAgICAgIDs7CiAgLS1kaXNhYmxl LWVzZCkgICAgICAgIF9lc2Q9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLXB1bHNlKSAgICAgICBf cHVsc2U9eWVzICAgICAgOzsKICAtLWRpc2FibGUtcHVsc2UpICAgICAgX3B1bHNlPW5vICAgICAg IDs7CiAgLS1lbmFibGUtamFjaykgICAgICAgIF9qYWNrPXllcyAgICAgICA7OwogIC0tZGlzYWJs ZS1qYWNrKSAgICAgICBfamFjaz1ubyAgICAgICAgOzsKICAtLWVuYWJsZS1vcGVuYWwpICAgICAg X29wZW5hbD15ZXMgICAgIDs7CiAgLS1kaXNhYmxlLW9wZW5hbCkgICAgIF9vcGVuYWw9bm8gICAg ICA7OwogIC0tZW5hYmxlLWthaSkgICAgICAgICBfa2FpPXllcyAgICAgICAgOzsKICAtLWRpc2Fi bGUta2FpKSAgICAgICAgX2thaT1ubyAgICAgICAgIDs7CiAgLS1lbmFibGUtZGFydCkgICAgICAg IF9kYXJ0PXllcyAgICAgICA7OwogIC0tZGlzYWJsZS1kYXJ0KSAgICAgICBfZGFydD1ubyAgICAg ICAgOzsKICAtLWVuYWJsZS1tYWQpICAgICAgICAgX21hZD15ZXMgICAgICAgIDs7CiAgLS1kaXNh YmxlLW1hZCkgICAgICAgIF9tYWQ9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLW1wM2xhbWUpICAg ICBfbXAzbGFtZT15ZXMgICAgOzsKICAtLWRpc2FibGUtbXAzbGFtZSkgICAgX21wM2xhbWU9bm8g ICAgIDs7CiAgLS1lbmFibGUtbXAzbGFtZS1sYXZjKSAgX21wM2xhbWVfbGF2Yz15ZXMgICAgICAg OzsKICAtLWRpc2FibGUtbXAzbGFtZS1sYXZjKSBfbXAzbGFtZV9sYXZjPW5vICAgICAgICA7Owog IC0tZW5hYmxlLXRvb2xhbWUpICAgICBfdG9vbGFtZT15ZXMgICAgOzsKICAtLWRpc2FibGUtdG9v bGFtZSkgICAgX3Rvb2xhbWU9bm8gICAgIDs7CiAgLS1lbmFibGUtdHdvbGFtZSkgICAgIF90d29s YW1lPXllcyAgICA7OwogIC0tZGlzYWJsZS10d29sYW1lKSAgICBfdHdvbGFtZT1ubyAgICAgOzsK ICAtLWVuYWJsZS1saWJjZGlvKSAgICAgX2xpYmNkaW89eWVzICAgIDs7CiAgLS1kaXNhYmxlLWxp YmNkaW8pICAgIF9saWJjZGlvPW5vICAgICA7OwogIC0tZW5hYmxlLWxpYmx6bykgICAgICBfbGli bHpvPXllcyAgICAgOzsKICAtLWRpc2FibGUtbGlibHpvKSAgICAgX2xpYmx6bz1ubyAgICAgIDs7 CiAgLS1lbmFibGUtbGlidm9yYmlzKSAgIF9saWJ2b3JiaXM9eWVzICA7OwogIC0tZGlzYWJsZS1s aWJ2b3JiaXMpICBfbGlidm9yYmlzPW5vICAgOzsKICAtLWVuYWJsZS1zcGVleCkgICAgICAgX3Nw ZWV4PXllcyAgICAgIDs7CiAgLS1kaXNhYmxlLXNwZWV4KSAgICAgIF9zcGVleD1ubyAgICAgICA7 OwogIC0tZW5hYmxlLWxpYmdzbSkgICAgICBfbGliZ3NtPXllcyAgICAgOzsKICAtLWRpc2FibGUt bGliZ3NtKSAgICAgX2xpYmdzbT1ubyAgICAgIDs7CiAgLS1lbmFibGUtdHJlbW9yKSAgICAgIF90 cmVtb3I9eWVzICAgICA7OwogIC0tZGlzYWJsZS10cmVtb3IpICAgICBfdHJlbW9yPW5vICAgICAg OzsKICAtLWVuYWJsZS10aGVvcmEpICAgICAgX3RoZW9yYT15ZXMgICAgIDs7CiAgLS1kaXNhYmxl LXRoZW9yYSkgICAgIF90aGVvcmE9bm8gICAgICA7OwogIC0tZW5hYmxlLW1wZzEyMykgICAgICBf bXBnMTIzPXllcyAgICAgOzsKICAtLWRpc2FibGUtbXBnMTIzKSAgICAgX21wZzEyMz1ubyAgICAg IDs7CiAgLS1lbmFibGUtbGliYTUyKSAgICAgIF9saWJhNTI9eWVzICAgICA7OwogIC0tZGlzYWJs ZS1saWJhNTIpICAgICBfbGliYTUyPW5vICAgICAgOzsKICAtLWVuYWJsZS1saWJkY2EpICAgICAg X2xpYmRjYT15ZXMgICAgIDs7CiAgLS1kaXNhYmxlLWxpYmRjYSkgICAgIF9saWJkY2E9bm8gICAg ICA7OwogIC0tZW5hYmxlLWxpYm1wZWcyKSAgICBfbGlibXBlZzI9eWVzICAgOzsKICAtLWRpc2Fi bGUtbGlibXBlZzIpICAgX2xpYm1wZWcyPW5vICAgIDs7CiAgLS1lbmFibGUtbGlibXBlZzItaW50 ZXJuYWwpICAgIF9saWJtcGVnMl9pbnRlcm5hbD15ZXMgICA7OwogIC0tZGlzYWJsZS1saWJtcGVn Mi1pbnRlcm5hbCkgICBfbGlibXBlZzJfaW50ZXJuYWw9bm8gICAgOzsKICAtLWVuYWJsZS1tdXNl cGFjaykgICAgX211c2VwYWNrPXllcyAgIDs7CiAgLS1kaXNhYmxlLW11c2VwYWNrKSAgIF9tdXNl cGFjaz1ubyAgICA7OwogIC0tZW5hYmxlLWZhYWQpICAgICAgICBfZmFhZD15ZXMgICAgICAgOzsK ICAtLWRpc2FibGUtZmFhZCkgICAgICAgX2ZhYWQ9bm8gICAgICAgIDs7CiAgLS1lbmFibGUtZmFh YykgICAgICAgIF9mYWFjPXllcyAgICAgICA7OwogIC0tZGlzYWJsZS1mYWFjKSAgICAgICBfZmFh Yz1ubyAgICAgICAgOzsKICAtLWVuYWJsZS1mYWFjLWxhdmMpICAgX2ZhYWNfbGF2Yz15ZXMgIDs7 CiAgLS1kaXNhYmxlLWZhYWMtbGF2YykgIF9mYWFjX2xhdmM9bm8gICA7OwogIC0tZW5hYmxlLWxh ZHNwYSkgICAgICBfbGFkc3BhPXllcyAgICAgOzsKICAtLWRpc2FibGUtbGFkc3BhKSAgICAgX2xh ZHNwYT1ubyAgICAgIDs7CiAgLS1lbmFibGUtbGliYnMyYikgICAgIF9saWJiczJiPXllcyAgICA7 OwogIC0tZGlzYWJsZS1saWJiczJiKSAgICBfbGliYnMyYj1ubyAgICAgOzsKICAtLWVuYWJsZS1s aWJpbGJjKSAgICAgX2xpYmlsYmM9eWVzICAgIDs7CiAgLS1kaXNhYmxlLWxpYmlsYmMpICAgIF9s aWJpbGJjPW5vICAgICA7OwogIC0tZW5hYmxlLWxpYm9wdXMpICAgICBfbGlib3B1cz15ZXMgICAg OzsKICAtLWRpc2FibGUtbGlib3B1cykgICAgX2xpYm9wdXM9bm8gICAgIDs7CiAgLS1lbmFibGUt eG1tcykgICAgICAgIF94bW1zPXllcyAgICAgICA7OwogIC0tZGlzYWJsZS14bW1zKSAgICAgICBf eG1tcz1ubyAgICAgICAgOzsKICAtLWVuYWJsZS12Y2QpICAgICAgICAgX3ZjZD15ZXMgICAgICAg IDs7CiAgLS1kaXNhYmxlLXZjZCkgICAgICAgIF92Y2Q9bm8gICAgICAgICA7OwogIC0tZW5hYmxl LWJsdXJheSkgICAgICBfYmx1cmF5PXllcyAgICAgOzsKICAtLWRpc2FibGUtYmx1cmF5KSAgICAg X2JsdXJheT1ubyAgICAgIDs7CiAgLS1lbmFibGUtZHZkcmVhZCkgICAgIF9kdmRyZWFkPXllcyAg ICA7OwogIC0tZGlzYWJsZS1kdmRyZWFkKSAgICBfZHZkcmVhZD1ubyAgICAgOzsKICAtLWVuYWJs ZS1kdmRuYXYpICAgICAgX2R2ZG5hdj15ZXMgICAgIDs7CiAgLS1kaXNhYmxlLWR2ZG5hdikgICAg IF9kdmRuYXY9bm8gICAgICA7OwogIC0tZW5hYmxlLXhhbmltKSAgICAgICBfeGFuaW09eWVzICAg ICAgOzsKICAtLWRpc2FibGUteGFuaW0pICAgICAgX3hhbmltPW5vICAgICAgIDs7CiAgLS1lbmFi bGUtcmVhbCkgICAgICAgIF9yZWFsPXllcyAgICAgICA7OwogIC0tZGlzYWJsZS1yZWFsKSAgICAg ICBfcmVhbD1ubyAgICAgICAgOzsKICAtLWVuYWJsZS1saXZlKSAgICAgICAgX2xpdmU9eWVzICAg ICAgIDs7CiAgLS1kaXNhYmxlLWxpdmUpICAgICAgIF9saXZlPW5vICAgICAgICA7OwogIC0tZW5h YmxlLW5lbWVzaSkgICAgICBfbmVtZXNpPXllcyAgICAgOzsKICAtLWRpc2FibGUtbmVtZXNpKSAg ICAgX25lbWVzaT1ubyAgICAgIDs7CiAgLS1lbmFibGUtbGlicnRtcCkgICAgIF9saWJydG1wPXll cyAgICA7OwogIC0tZGlzYWJsZS1saWJydG1wKSAgICBfbGlicnRtcD1ubyAgICAgOzsKICAtLWVu YWJsZS14aW5lcmFtYSkgICAgX3hpbmVyYW1hPXllcyAgIDs7CiAgLS1kaXNhYmxlLXhpbmVyYW1h KSAgIF94aW5lcmFtYT1ubyAgICA7OwogIC0tZW5hYmxlLW1nYSkgICAgICAgICBfbWdhPXllcyAg ICAgICAgOzsKICAtLWRpc2FibGUtbWdhKSAgICAgICAgX21nYT1ubyAgICAgICAgIDs7CiAgLS1l bmFibGUteG1nYSkgICAgICAgIF94bWdhPXllcyAgICAgICA7OwogIC0tZGlzYWJsZS14bWdhKSAg ICAgICBfeG1nYT1ubyAgICAgICAgOzsKICAtLWVuYWJsZS12bSkgICAgICAgICAgX3ZtPXllcyAg ICAgICAgIDs7CiAgLS1kaXNhYmxlLXZtKSAgICAgICAgIF92bT1ubyAgICAgICAgICA7OwogIC0t ZW5hYmxlLXhmODZrZXlzeW0pICBfeGY4NmtleXN5bT15ZXMgOzsKICAtLWRpc2FibGUteGY4Nmtl eXN5bSkgX3hmODZrZXlzeW09bm8gIDs7CiAgLS1lbmFibGUtbWxpYikgICAgICAgIF9tbGliPXll cyAgICAgICA7OwogIC0tZGlzYWJsZS1tbGliKSAgICAgICBfbWxpYj1ubyAgICAgICAgOzsKICAt LWVuYWJsZS1zdW5hdWRpbykgICAgX3N1bmF1ZGlvPXllcyAgIDs7CiAgLS1kaXNhYmxlLXN1bmF1 ZGlvKSAgIF9zdW5hdWRpbz1ubyAgICA7OwogIC0tZW5hYmxlLXNnaWF1ZGlvKSAgICBfc2dpYXVk aW89eWVzICAgOzsKICAtLWRpc2FibGUtc2dpYXVkaW8pICAgX3NnaWF1ZGlvPW5vICAgIDs7CiAg LS1lbmFibGUtc25kaW8pICAgICAgIF9zbmRpbz15ZXMgICAgICA7OwogIC0tZGlzYWJsZS1zbmRp bykgICAgICBfc25kaW89bm8gICAgICAgOzsKICAtLWVuYWJsZS1hbHNhKSAgICAgICAgX2Fsc2E9 eWVzICAgICAgIDs7CiAgLS1kaXNhYmxlLWFsc2EpICAgICAgIF9hbHNhPW5vICAgICAgICA7Owog IC0tZW5hYmxlLXR2KSAgICAgICAgICBfdHY9eWVzICAgICAgICAgOzsKICAtLWRpc2FibGUtdHYp ICAgICAgICAgX3R2PW5vICAgICAgICAgIDs7CiAgLS1lbmFibGUtdHYtYnNkYnQ4NDgpICBfdHZf YnNkYnQ4NDg9eWVzIDs7CiAgLS1kaXNhYmxlLXR2LWJzZGJ0ODQ4KSBfdHZfYnNkYnQ4NDg9bm8g IDs7CiAgLS1lbmFibGUtdHYtdjRsMSkgICAgIF90dl92NGwxPXllcyAgICA7OwogIC0tZGlzYWJs ZS10di12NGwxKSAgICBfdHZfdjRsMT1ubyAgICAgOzsKICAtLWVuYWJsZS10di12NGwyKSAgICAg X3R2X3Y0bDI9eWVzICAgIDs7CiAgLS1kaXNhYmxlLXR2LXY0bDIpICAgIF90dl92NGwyPW5vICAg ICA7OwogIC0tZW5hYmxlLXR2LWRzaG93KSAgICBfdHZfZHNob3c9eWVzICAgOzsKICAtLWRpc2Fi bGUtdHYtZHNob3cpICAgX3R2X2RzaG93PW5vICAgIDs7CiAgLS1lbmFibGUtcmFkaW8pICAgICAg IF9yYWRpbz15ZXMgICAgICA7OwogIC0tZW5hYmxlLXJhZGlvLWNhcHR1cmUpICAgICAgIF9yYWRp b19jYXB0dXJlPXllcyAgICAgIDs7CiAgLS1kaXNhYmxlLXJhZGlvLWNhcHR1cmUpICAgICAgX3Jh ZGlvX2NhcHR1cmU9bm8gICAgICAgOzsKICAtLWRpc2FibGUtcmFkaW8pICAgICAgX3JhZGlvPW5v ICAgICAgIDs7CiAgLS1lbmFibGUtcmFkaW8tdjRsKSAgIF9yYWRpb192NGw9eWVzICA7OwogIC0t ZGlzYWJsZS1yYWRpby12NGwpICBfcmFkaW9fdjRsPW5vICAgOzsKICAtLWVuYWJsZS1yYWRpby12 NGwyKSAgX3JhZGlvX3Y0bDI9eWVzIDs7CiAgLS1kaXNhYmxlLXJhZGlvLXY0bDIpIF9yYWRpb192 NGwyPW5vICA7OwogIC0tZW5hYmxlLXJhZGlvLWJzZGJ0ODQ4KSAgICAgIF9yYWRpb19ic2RidDg0 OD15ZXMgICAgIDs7CiAgLS1kaXNhYmxlLXJhZGlvLWJzZGJ0ODQ4KSAgICAgX3JhZGlvX2JzZGJ0 ODQ4PW5vICAgICAgOzsKICAtLWVuYWJsZS1wdnIpICAgICAgICAgX3B2cj15ZXMgICAgICAgIDs7 CiAgLS1kaXNhYmxlLXB2cikgICAgICAgIF9wdnI9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLWZh c3RtZW1jcHkpICBfZmFzdG1lbWNweT15ZXMgOzsKICAtLWRpc2FibGUtZmFzdG1lbWNweSkgX2Zh c3RtZW1jcHk9bm8gIDs7CiAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcykgIGhhcmRjb2RlZF90 YWJsZXM9eWVzIDs7CiAgLS1kaXNhYmxlLWhhcmRjb2RlZC10YWJsZXMpIGhhcmRjb2RlZF90YWJs ZXM9bm8gIDs7CiAgLS1lbmFibGUtbmV0d29ya2luZykgICAgIG5ldHdvcmtpbmc9eWVzICAgIDs7 CiAgLS1kaXNhYmxlLW5ldHdvcmtpbmcpICAgIG5ldHdvcmtpbmc9bm8gICAgIDs7CiAgLS1lbmFi bGUtd2luc29jazJfaCkgIF93aW5zb2NrMl9oPXllcyA7OwogIC0tZGlzYWJsZS13aW5zb2NrMl9o KSBfd2luc29jazJfaD1ubyAgOzsKICAtLWVuYWJsZS1zbWIpICAgICAgICAgX3NtYj15ZXMgICAg ICAgIDs7CiAgLS1kaXNhYmxlLXNtYikgICAgICAgIF9zbWI9bm8gOzsKICAtLWVuYWJsZS12aWRp eCkgICAgICAgX3ZpZGl4PXllcyAgICAgIDs7CiAgLS1kaXNhYmxlLXZpZGl4KSAgICAgIF92aWRp eD1ubyAgICAgICA7OwogIC0td2l0aC12aWRpeC1kcml2ZXJzPSopCiAgICBfdmlkaXhfZHJpdmVy cz0kKG9wdGlvbl92YWx1ZSAkYWNfb3B0aW9uKQogICAgOzsKICAtLWRpc2FibGUtdmlkaXgtcGNp ZGIpICBfdmlkaXhfcGNpZGI9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLWRoYWhlbHBlcikgICBf ZGhhaGVscGVyPXllcyAgOzsKICAtLWRpc2FibGUtZGhhaGVscGVyKSAgX2RoYWhlbHBlcj1ubyAg IDs7CiAgLS1lbmFibGUtc3ZnYWxpYl9oZWxwZXIpICAgICAgX3N2Z2FsaWJfaGVscGVyPXllcyAg ICAgOzsKICAtLWRpc2FibGUtc3ZnYWxpYl9oZWxwZXIpICAgICBfc3ZnYWxpYl9oZWxwZXI9bm8g ICAgICA7OwogIC0tZW5hYmxlLWpveXN0aWNrKSAgICBfam95c3RpY2s9eWVzICAgOzsKICAtLWRp c2FibGUtam95c3RpY2spICAgX2pveXN0aWNrPW5vICAgIDs7CiAgLS1lbmFibGUtY3J5c3RhbGhk KSAgIGNyeXN0YWxoZD15ZXMgIDs7CiAgLS1kaXNhYmxlLWNyeXN0YWxoZCkgIGNyeXN0YWxoZD1u byAgIDs7CiAgLS1lbmFibGUteHZpZCkgICAgICAgIF94dmlkPXllcyAgICAgICA7OwogIC0tZGlz YWJsZS14dmlkKSAgICAgICBfeHZpZD1ubyAgICAgICAgOzsKICAtLWVuYWJsZS14dmlkLWxhdmMp ICAgX3h2aWRfbGF2Yz15ZXMgIDs7CiAgLS1kaXNhYmxlLXh2aWQtbGF2YykgIF94dmlkX2xhdmM9 bm8gICA7OwogIC0tZW5hYmxlLXgyNjQpICAgICAgICBfeDI2ND15ZXMgICAgICAgOzsKICAtLWRp c2FibGUteDI2NCkgICAgICAgX3gyNjQ9bm8gICAgICAgIDs7CiAgLS1lbmFibGUteDI2NC1sYXZj KSAgIF94MjY0X2xhdmM9eWVzICA7OwogIC0tZGlzYWJsZS14MjY0LWxhdmMpICBfeDI2NF9sYXZj PW5vICAgOzsKICAtLWVuYWJsZS1saWJkaXJhYy1sYXZjKSAgIF9saWJkaXJhY19sYXZjPXllcyAg OzsKICAtLWRpc2FibGUtbGliZGlyYWMtbGF2YykgIF9saWJkaXJhY19sYXZjPW5vICAgOzsKICAt LWVuYWJsZS1saWJzY2hyb2VkaW5nZXItbGF2YykgICBfbGlic2Nocm9lZGluZ2VyX2xhdmM9eWVz ICA7OwogIC0tZGlzYWJsZS1saWJzY2hyb2VkaW5nZXItbGF2YykgIF9saWJzY2hyb2VkaW5nZXJf bGF2Yz1ubyAgIDs7CiAgLS1lbmFibGUtbGlidnB4LWxhdmMpICAgX2xpYnZweF9sYXZjPXllcyAg OzsKICAtLWRpc2FibGUtbGlidnB4LWxhdmMpICBfbGlidnB4X2xhdmM9bm8gICA7OwogIC0tZW5h YmxlLWxpYm51dCkgICAgICBfbGlibnV0PXllcyAgICAgOzsKICAtLWRpc2FibGUtbGlibnV0KSAg ICAgX2xpYm51dD1ubyAgICAgIDs7CiAgLS1lbmFibGUtbGlib3BlbmNvcmVfYW1ybmIpICAgX2xp Ym9wZW5jb3JlX2Ftcm5iPXllcyAgOzsKICAtLWRpc2FibGUtbGlib3BlbmNvcmVfYW1ybmIpICBf bGlib3BlbmNvcmVfYW1ybmI9bm8gICA7OwogIC0tZW5hYmxlLWxpYm9wZW5jb3JlX2FtcndiKSAg IF9saWJvcGVuY29yZV9hbXJ3Yj15ZXMgIDs7CiAgLS1kaXNhYmxlLWxpYm9wZW5jb3JlX2Ftcndi KSAgX2xpYm9wZW5jb3JlX2FtcndiPW5vICAgOzsKICAtLWVuYWJsZS1mZm1wZWdfYSkgICAgZmZt cGVnX2E9eWVzICAgIDs7CiAgLS1kaXNhYmxlLWZmbXBlZ19hKSAgIGZmbXBlZ19hPW5vICAgICA7 OwogIC0tZW5hYmxlLWZmbXBlZ19zbykgICBmZm1wZWdfc289eWVzICAgOzsKICAtLWRpc2FibGUt ZmZtcGVnX3NvKSAgZmZtcGVnX3NvPW5vICAgIDs7CiAgLS1lbmFibGUtcG9zdHByb2MpICAgIHBv c3Rwcm9jPXllcyAgICA7OwogIC0tZGlzYWJsZS1wb3N0cHJvYykgICBwb3N0cHJvYz1ubyAgICAg OzsKICAtLWVuYWJsZS12Zi1sYXZmaSkgICAgX3ZmX2xhdmZpPXllcyAgIDs7CiAgLS1kaXNhYmxl LXZmLWxhdmZpKSAgIF92Zl9sYXZmaT1ubyAgICA7OwogIC0tZW5hYmxlLWxpYmF2Y29kZWNfbXBl Z2F1ZGlvX2hwKSAgICAgX2xpYmF2Y29kZWNfbXBlZ2F1ZGlvX2hwPXllcyAgICA7OwogIC0tZGlz YWJsZS1saWJhdmNvZGVjX21wZWdhdWRpb19ocCkgICAgX2xpYmF2Y29kZWNfbXBlZ2F1ZGlvX2hw PW5vICAgICA7OwoKICAtLWVuYWJsZS1saXJjKSAgICAgICAgX2xpcmM9eWVzICAgICAgIDs7CiAg LS1kaXNhYmxlLWxpcmMpICAgICAgIF9saXJjPW5vICAgICAgICA7OwogIC0tZW5hYmxlLWxpcmNj KSAgICAgICBfbGlyY2M9eWVzICAgICAgOzsKICAtLWRpc2FibGUtbGlyY2MpICAgICAgX2xpcmNj PW5vICAgICAgIDs7CiAgLS1lbmFibGUtYXBwbGUtcmVtb3RlKSAgX2FwcGxlX3JlbW90ZT15ZXMg OzsKICAtLWRpc2FibGUtYXBwbGUtcmVtb3RlKSBfYXBwbGVfcmVtb3RlPW5vICA7OwogIC0tZW5h YmxlLWFwcGxlLWlyKSAgICBfYXBwbGVfaXI9eWVzICAgOzsKICAtLWRpc2FibGUtYXBwbGUtaXIp ICAgX2FwcGxlX2lyPW5vICAgIDs7CiAgLS1lbmFibGUtZ3VpKSAgICAgICAgIF9ndWk9eWVzICAg ICAgICA7OwogIC0tZGlzYWJsZS1ndWkpICAgICAgICBfZ3VpPW5vICAgICAgICAgOzsKICAtLWVu YWJsZS10ZXJtY2FwKSAgICAgX3Rlcm1jYXA9eWVzICAgIDs7CiAgLS1kaXNhYmxlLXRlcm1jYXAp ICAgIF90ZXJtY2FwPW5vICAgICA7OwogIC0tZW5hYmxlLXRlcm1pb3MpICAgICBfdGVybWlvcz15 ZXMgICAgOzsKICAtLWRpc2FibGUtdGVybWlvcykgICAgX3Rlcm1pb3M9bm8gICAgIDs7CiAgLS1l bmFibGUtM2RmeCkgICAgICAgIF8zZGZ4PXllcyAgICAgICA7OwogIC0tZGlzYWJsZS0zZGZ4KSAg ICAgICBfM2RmeD1ubyAgICAgICAgOzsKICAtLWVuYWJsZS1zM2ZiKSAgICAgICAgX3MzZmI9eWVz ICAgICAgIDs7CiAgLS1kaXNhYmxlLXMzZmIpICAgICAgIF9zM2ZiPW5vICAgICAgICA7OwogIC0t ZW5hYmxlLXdpaSkgICAgICAgICBfd2lpPXllcyAgICAgICAgOzsKICAtLWRpc2FibGUtd2lpKSAg ICAgICAgX3dpaT1ubyAgICAgICAgIDs7CiAgLS1lbmFibGUtdGRmeGZiKSAgICAgIF90ZGZ4ZmI9 eWVzICAgICA7OwogIC0tZGlzYWJsZS10ZGZ4ZmIpICAgICBfdGRmeGZiPW5vICAgICAgOzsKICAt LWRpc2FibGUtdGRmeHZpZCkgICAgX3RkZnh2aWQ9bm8gICAgIDs7CiAgLS1lbmFibGUtdGRmeHZp ZCkgICAgIF90ZGZ4dmlkPXllcyAgICA7OwogIC0tZGlzYWJsZS14dnIxMDApICAgICBfeHZyMTAw PW5vICAgICAgOzsKICAtLWVuYWJsZS14dnIxMDApICAgICAgX3h2cjEwMD15ZXMgICAgIDs7CiAg LS1kaXNhYmxlLXRnYSkgICAgICAgIF90Z2E9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLXRnYSkg ICAgICAgICBfdGdhPXllcyAgICAgICAgOzsKICAtLWVuYWJsZS1kaXJlY3RmYikgICAgX2RpcmVj dGZiPXllcyAgIDs7CiAgLS1kaXNhYmxlLWRpcmVjdGZiKSAgIF9kaXJlY3RmYj1ubyAgICA7Owog IC0tZW5hYmxlLXpyKSAgICAgICAgICBfenI9eWVzICAgICAgICAgOzsKICAtLWRpc2FibGUtenIp ICAgICAgICAgX3pyPW5vICAgICAgICAgIDs7CiAgLS1lbmFibGUtYmwpICAgICAgICAgIF9ibD15 ZXMgICAgICAgICA7OwogIC0tZGlzYWJsZS1ibCkgICAgICAgICBfYmw9bm8gICAgICAgICAgOzsK ICAtLWVuYWJsZS1tdHJyKSAgICAgICAgX210cnI9eWVzICAgICAgIDs7CiAgLS1kaXNhYmxlLW10 cnIpICAgICAgIF9tdHJyPW5vICAgICAgICA7OwogIC0tZW5hYmxlLXNobSkgICAgICAgICBfc2ht PXllcyAgICAgICAgOzsKICAtLWRpc2FibGUtc2htKSAgICAgICAgX3NobT1ubyAgICAgICAgIDs7 CiAgLS1lbmFibGUtc2VsZWN0KSAgICAgIF9zZWxlY3Q9eWVzICAgICA7OwogIC0tZGlzYWJsZS1z ZWxlY3QpICAgICBfc2VsZWN0PW5vICAgICAgOzsKICAtLWVuYWJsZS1jZHBhcmFub2lhKSAgX2Nk cGFyYW5vaWE9eWVzIDs7CiAgLS1kaXNhYmxlLWNkcGFyYW5vaWEpIF9jZHBhcmFub2lhPW5vICA7 OwogIC0tZW5hYmxlLWNkZGIpICAgICAgICBfY2RkYj15ZXMgICAgICAgOzsKICAtLWRpc2FibGUt Y2RkYikgICAgICAgX2NkZGI9bm8gICAgICAgIDs7CiAgLS1lbmFibGUtYmlnLWVuZGlhbikgIF9i aWdfZW5kaWFuPXllcyA7OwogIC0tZGlzYWJsZS1iaWctZW5kaWFuKSBfYmlnX2VuZGlhbj1ubyAg OzsKICAtLWVuYWJsZS1iaXRtYXAtZm9udCkgICAgX2JpdG1hcF9mb250PXllcyAgIDs7CiAgLS1k aXNhYmxlLWJpdG1hcC1mb250KSAgIF9iaXRtYXBfZm9udD1ubyAgICA7OwogIC0tZW5hYmxlLWZy ZWV0eXBlKSAgICBfZnJlZXR5cGU9eWVzICAgOzsKICAtLWRpc2FibGUtZnJlZXR5cGUpICAgX2Zy ZWV0eXBlPW5vICAgIDs7CiAgLS1lbmFibGUtZm9udGNvbmZpZykgIF9mb250Y29uZmlnPXllcyA7 OwogIC0tZGlzYWJsZS1mb250Y29uZmlnKSBfZm9udGNvbmZpZz1ubyAgOzsKICAtLWVuYWJsZS11 bnJhcmV4ZWMpICAgX3VucmFyX2V4ZWM9eWVzIDs7CiAgLS1kaXNhYmxlLXVucmFyZXhlYykgIF91 bnJhcl9leGVjPW5vICA7OwogIC0tZW5hYmxlLWZ0cCkgICAgICAgICBfZnRwPXllcyAgICAgICAg OzsKICAtLWRpc2FibGUtZnRwKSAgICAgICAgX2Z0cD1ubyAgICAgICAgIDs7CiAgLS1lbmFibGUt dnN0cmVhbSkgICAgIF92c3RyZWFtPXllcyAgICA7OwogIC0tZGlzYWJsZS12c3RyZWFtKSAgICBf dnN0cmVhbT1ubyAgICAgOzsKICAtLWVuYWJsZS1wdGhyZWFkcykgICAgX3B0aHJlYWRzPXllcyAg IDs7CiAgLS1kaXNhYmxlLXB0aHJlYWRzKSAgIF9wdGhyZWFkcz1ubyAgICA7OwogIC0tZW5hYmxl LXczMnRocmVhZHMpICBfdzMydGhyZWFkcz15ZXMgOzsKICAtLWRpc2FibGUtdzMydGhyZWFkcykg X3czMnRocmVhZHM9bm8gIDs7CiAgLS1lbmFibGUtb3MydGhyZWFkcykgIF9vczJ0aHJlYWRzPXll cyA7OwogIC0tZGlzYWJsZS1vczJ0aHJlYWRzKSBfb3MydGhyZWFkcz1ubyAgOzsKICAtLWVuYWJs ZS1hc3MpICAgICAgICAgX2Fzcz15ZXMgICAgICAgIDs7CiAgLS1kaXNhYmxlLWFzcykgICAgICAg IF9hc3M9bm8gICAgICAgICA7OwogIC0tZW5hYmxlLWFzcy1pbnRlcm5hbCkgIGFzc19pbnRlcm5h bD15ZXMgOzsKICAtLWRpc2FibGUtYXNzLWludGVybmFsKSBhc3NfaW50ZXJuYWw9bm8gIDs7CiAg LS1lbmFibGUtcnBhdGgpICAgICAgIF9ycGF0aD15ZXMgICAgICA7OwogIC0tZGlzYWJsZS1ycGF0 aCkgICAgICBfcnBhdGg9bm8gICAgICAgOzsKICAtLWVuYWJsZS1nbnV0bHMpICAgICAgIF9nbnV0 bHM9eWVzICAgIDs7CiAgLS1kaXNhYmxlLWdudXRscykgICAgICBfZ251dGxzPW5vICAgICA7OwoK ICAtLWVuYWJsZS1mcmliaWRpKSAgICAgX2ZyaWJpZGk9eWVzICAgIDs7CiAgLS1kaXNhYmxlLWZy aWJpZGkpICAgIF9mcmliaWRpPW5vICAgICA7OwoKICAtLWVuYWJsZS1lbmNhKSAgICAgICAgX2Vu Y2E9eWVzICAgICAgIDs7CiAgLS1kaXNhYmxlLWVuY2EpICAgICAgIF9lbmNhPW5vICAgICAgICA7 OwoKICAtLWVuYWJsZS1pbmV0NikgICAgICAgX2luZXQ2PXllcyAgICAgIDs7CiAgLS1kaXNhYmxl LWluZXQ2KSAgICAgIF9pbmV0Nj1ubyAgICAgICA7OwoKICAtLWVuYWJsZS1zY3RwKSAgICAgICAg X3NjdHA9eWVzICAgICAgIDs7CiAgLS1kaXNhYmxlLXNjdHApICAgICAgIF9zY3RwPW5vICAgICAg ICA7OwoKICAtLWVuYWJsZS1nZXRob3N0YnluYW1lMikgICAgICBfZ2V0aG9zdGJ5bmFtZTI9eWVz ICAgICA7OwogIC0tZGlzYWJsZS1nZXRob3N0YnluYW1lMikgICAgIF9nZXRob3N0YnluYW1lMj1u byAgICAgIDs7CgogIC0tZW5hYmxlLWRnYTEpIF9kZ2ExPXllcyA7OwogIC0tZGlzYWJsZS1kZ2Ex KSBfZGdhMT1ubyA7OwogIC0tZW5hYmxlLWRnYTIpIF9kZ2EyPXllcyA7OwogIC0tZGlzYWJsZS1k Z2EyKSBfZGdhMj1ubyA7OwoKICAtLWVuYWJsZS1tZW51KSBfbWVudT15ZXMgOzsKICAtLWRpc2Fi bGUtbWVudSkgX21lbnU9bm8gOzsKCiAgLS1lbmFibGUtcXR4KSBfcXR4PXllcyA7OwogIC0tZGlz YWJsZS1xdHgpIF9xdHg9bm8gOzsKCiAgLS1lbmFibGUtY29yZWF1ZGlvKSBfY29yZWF1ZGlvPXll cyA7OwogIC0tZGlzYWJsZS1jb3JlYXVkaW8pIF9jb3JlYXVkaW89bm8gOzsKICAtLWVuYWJsZS1j b3JldmlkZW8pIF9jb3JldmlkZW89eWVzIDs7CiAgLS1kaXNhYmxlLWNvcmV2aWRlbykgX2NvcmV2 aWRlbz1ubyA7OwogIC0tZW5hYmxlLXF1YXJ0eikgX3F1YXJ0ej15ZXMgOzsKICAtLWRpc2FibGUt cXVhcnR6KSBfcXVhcnR6PW5vIDs7CiAgLS1lbmFibGUtbWFjb3N4LWZpbmRlcikgX21hY29zeF9m aW5kZXI9eWVzIDs7CiAgLS1kaXNhYmxlLW1hY29zeC1maW5kZXIpIF9tYWNvc3hfZmluZGVyPW5v IDs7CiAgLS1lbmFibGUtbWFjb3N4LWJ1bmRsZSkgX21hY29zeF9idW5kbGU9eWVzIDs7CiAgLS1k aXNhYmxlLW1hY29zeC1idW5kbGUpIF9tYWNvc3hfYnVuZGxlPW5vIDs7CgogIC0tZW5hYmxlLW1h ZW1vKSBfbWFlbW89eWVzIDs7CiAgLS1kaXNhYmxlLW1hZW1vKSBfbWFlbW89bm8gOzsKCiAgLS1l bmFibGUtc29ydHN1YikgX3NvcnRzdWI9eWVzIDs7CiAgLS1kaXNhYmxlLXNvcnRzdWIpIF9zb3J0 c3ViPW5vIDs7CgogIC0tZW5hYmxlLWNyYXNoLWRlYnVnKSBfY3Jhc2hfZGVidWc9eWVzIDs7CiAg LS1kaXNhYmxlLWNyYXNoLWRlYnVnKSBfY3Jhc2hfZGVidWc9bm8gOzsKICAtLWVuYWJsZS1zaWdo YW5kbGVyKSAgX3NpZ2hhbmRsZXI9eWVzICA7OwogIC0tZGlzYWJsZS1zaWdoYW5kbGVyKSBfc2ln aGFuZGxlcj1ubyAgIDs7CiAgLS1lbmFibGUtcmVsb2NhdGFibGUpICByZWxvY2F0YWJsZT15ZXMg IDs7CiAgLS1kaXNhYmxlLXJlbG9jYXRhYmxlKSByZWxvY2F0YWJsZT1ubyAgIDs7CiAgLS1lbmFi bGUtd2luMzJkbGwpIF93aW4zMmRsbD15ZXMgOzsKICAtLWRpc2FibGUtd2luMzJkbGwpIF93aW4z MmRsbD1ubyA7OwoKICAtLWVuYWJsZS1zc2UpIF9zc2U9eWVzIDs7CiAgLS1kaXNhYmxlLXNzZSkg X3NzZT1ubyA7OwogIC0tZW5hYmxlLXNzZTIpIF9zc2UyPXllcyA7OwogIC0tZGlzYWJsZS1zc2Uy KSBfc3NlMj1ubyA7OwogIC0tZW5hYmxlLXNzZTMpIF9zc2UzPXllcyA7OwogIC0tZGlzYWJsZS1z c2UzKSBfc3NlMz1ubyA7OwogIC0tZW5hYmxlLXNzc2UzKSBfc3NzZTM9eWVzIDs7CiAgLS1kaXNh YmxlLXNzc2UzKSBfc3NzZTM9bm8gOzsKICAtLWVuYWJsZS1zc2U0KSBfc3NlNF8xPXllczs7CiAg LS1kaXNhYmxlLXNzZTQpIF9zc2U0XzE9bm87OwogIC0tZW5hYmxlLXNzZTQyKSBfc3NlNF8yPXll czs7CiAgLS1kaXNhYmxlLXNzZTQyKSBfc3NlNF8yPW5vOzsKICAtLWVuYWJsZS1hdngpIF9hdng9 eWVzOzsKICAtLWRpc2FibGUtYXZ4KSBfYXZ4PW5vOzsKICAtLWVuYWJsZS1hdngyKSBfYXZ4Mj15 ZXM7OwogIC0tZGlzYWJsZS1hdngyKSBfYXZ4Mj1ubzs7CiAgLS1lbmFibGUteG9wKSBfeG9wPXll czs7CiAgLS1kaXNhYmxlLXhvcCkgX3hvcD1ubzs7CiAgLS1lbmFibGUtZm1hMykgX2ZtYTM9eWVz OzsKICAtLWRpc2FibGUtZm1hMykgX2ZtYTM9bm87OwogIC0tZW5hYmxlLWZtYTQpIF9mbWE0PXll czs7CiAgLS1kaXNhYmxlLWZtYTQpIF9mbWE0PW5vOzsKICAtLWVuYWJsZS1tbXhleHQpIF9tbXhl eHQ9eWVzIDs7CiAgLS1kaXNhYmxlLW1teGV4dCkgX21teGV4dD1ubyA7OwogIC0tZW5hYmxlLTNk bm93KSBfM2Rub3c9eWVzIDs7CiAgLS1kaXNhYmxlLTNkbm93KSBfM2Rub3c9bm8gXzNkbm93ZXh0 PW5vIDs7CiAgLS1lbmFibGUtM2Rub3dleHQpIF8zZG5vdz15ZXMgXzNkbm93ZXh0PXllcyA7Owog IC0tZGlzYWJsZS0zZG5vd2V4dCkgXzNkbm93ZXh0PW5vIDs7CiAgLS1lbmFibGUtY21vdikgX2Nt b3Y9eWVzIDs7CiAgLS1kaXNhYmxlLWNtb3YpIF9jbW92PW5vIDs7CiAgLS1lbmFibGUtZmFzdC1j bW92KSBfZmFzdF9jbW92PXllcyA7OwogIC0tZGlzYWJsZS1mYXN0LWNtb3YpIF9mYXN0X2Ntb3Y9 bm8gOzsKICAtLWVuYWJsZS1mYXN0LWNseikgX2Zhc3RfY2x6PXllcyA7OwogIC0tZGlzYWJsZS1m YXN0LWNseikgX2Zhc3RfY2x6PW5vIDs7CiAgLS1lbmFibGUtYWx0aXZlYykgX2FsdGl2ZWM9eWVz IDs7CiAgLS1kaXNhYmxlLWFsdGl2ZWMpIF9hbHRpdmVjPW5vIDs7CiAgLS1lbmFibGUtYXJtdjV0 ZSkgX2FybXY1dGU9eWVzIDs7CiAgLS1kaXNhYmxlLWFybXY1dGUpIF9hcm12NXRlPW5vIDs7CiAg LS1lbmFibGUtYXJtdjYpIF9hcm12Nj15ZXMgOzsKICAtLWRpc2FibGUtYXJtdjYpIF9hcm12Nj1u byA7OwogIC0tZW5hYmxlLWFybXY2dDIpIF9hcm12NnQyPXllcyA7OwogIC0tZGlzYWJsZS1hcm12 NnQyKSBfYXJtdjZ0Mj1ubyA7OwogIC0tZW5hYmxlLWFybXZmcCkgX2FybXZmcD15ZXMgOzsKICAt LWRpc2FibGUtYXJtdmZwKSBfYXJtdmZwPW5vIDs7CiAgLS1lbmFibGUtdmZwdjMpIHZmcHYzPXll cyA7OwogIC0tZGlzYWJsZS12ZnB2MykgdmZwdjM9bm8gOzsKICAtLWVuYWJsZS1uZW9uKSBuZW9u PXllcyA7OwogIC0tZGlzYWJsZS1uZW9uKSBuZW9uPW5vIDs7CiAgLS1lbmFibGUtdGh1bWIpIGFy bXRodW1iPXllcyA7OwogIC0tZGlzYWJsZS10aHVtYikgYXJtdGh1bWI9bm8gOzsKICAtLWVuYWJs ZS1pd21teHQpIF9pd21teHQ9eWVzIDs7CiAgLS1kaXNhYmxlLWl3bW14dCkgX2l3bW14dD1ubyA7 OwogIC0tZW5hYmxlLW1teCkgX21teD15ZXMgOzsKICAtLWRpc2FibGUtbW14KSAjIDNETm93ISBh bmQgTU1YMiByZXF1aXJlIE1NWAogICAgICAgIF8zZG5vdz1ubyBfM2Rub3dleHQ9bm8gX21teD1u byBfbW14ZXh0PW5vIDs7CgogICMgSGFuZGxlIHRoZXNlIG9wdGlvbnMgaW4gYSBzZWNvbmQgcGFz cy4KICAtLSotZGVjb2Rlcj0qfC0tKi1lbmNvZGVyPSp8LS0qLXBhcnNlcj0qfC0tKi1wcm90b2Nv bD0qfC0tKi1kZW11eGVyPSp8LS0qLW11eGVyPSp8LS0qLWZpbHRlcj0qKSAgOzsKCiAgKikKICAg IGVjaG8gIlVua25vd24gcGFyYW1ldGVyOiAkYWNfb3B0aW9uIgogICAgZXhpdCAxCiAgICA7OwoK ICBlc2FjCmRvbmUKCiMgQXRtb3M6IG1vdmVkIHRoaXMgaGVyZSwgdG8gYmUgY29ycmVjdCwgaWYg LS1wcmVmaXggaXMgc3BlY2lmaWVkCnRlc3QgLXogIiRfYmluZGlyIiAgJiYgX2JpbmRpcj0iJF9w cmVmaXgvYmluIgp0ZXN0IC16ICIkX2RhdGFkaXIiICYmIF9kYXRhZGlyPSIkX3ByZWZpeC9zaGFy ZS9tcGxheWVyIgp0ZXN0IC16ICIkX21hbmRpciIgICYmIF9tYW5kaXI9IiRfcHJlZml4L3NoYXJl L21hbiIKdGVzdCAteiAiJF9jb25mZGlyIiAmJiBfY29uZmRpcj0iJF9wcmVmaXgvZXRjL21wbGF5 ZXIiCnRlc3QgLXogIiRfbGliZGlyIiAgJiYgX2xpYmRpcj0iJF9wcmVmaXgvbGliIgoKZm9yIHRt cGRpciBpbiAiJFRNUERJUiIgIiRURU1QRElSIiAiL3RtcCIgOyBkbwogIHRlc3QgIiR0bXBkaXIi ICYmIGJyZWFrCmRvbmUKCm1wbGF5ZXJfdG1wZGlyPSIkdG1wZGlyL21wbGF5ZXItY29uZmlndXJl LSRSQU5ET00tJCQiCm1rZGlyICRtcGxheWVyX3RtcGRpciB8fCBkaWUgIlVuYWJsZSB0byBjcmVh dGUgdG1wZGlyLiIKCmNsZWFudXAoKSB7CiAgcm0gLXJmICIkbXBsYXllcl90bXBkaXIiCn0KCnRy YXAgY2xlYW51cCBFWElUCgpUTVBMT0c9ImNvbmZpZy5sb2ciClRNUEM9IiRtcGxheWVyX3RtcGRp ci90bXAuYyIKVE1QQ1BQPSIkbXBsYXllcl90bXBkaXIvdG1wLmNwcCIKVE1QSD0iJG1wbGF5ZXJf dG1wZGlyL3RtcC5oIgpUTVBTPSIkbXBsYXllcl90bXBkaXIvdG1wLlMiCiMgV2Ugd2lsbCB1cGRh dGUgdGhpcyBsYXRlciBvbmNlIHdlIGtub3cgdGhlIGV4ZWN1dGFibGUgc3VmZml4ClRNUEVYRT0i JG1wbGF5ZXJfdG1wZGlyL3RtcCIKCnJtIC1mICIkVE1QTE9HIgplY2hvIGNvbmZpZ3VyYXRpb246 ICRjb25maWd1cmF0aW9uID4gIiRUTVBMT0ciCmVjaG8gPj4gIiRUTVBMT0ciCgoKIyBsb2NhbCBG Rm1wZWcgY2hlY2tvdXQgaGFuZGxpbmcKaWYgdGVzdCAtZSBmZm1wZWcvLnN2biA7IHRoZW4KICAg IGVjaG8gIllvdSBoYXZlIGFuIG91dGRhdGVkIEZGbXBlZyBTVk4gY2hlY2tvdXQgaW4gZmZtcGVn LywgcGxlYXNlIChyZSltb3ZlIG9yIHJlcGxhY2UgaXQiCiAgICBleGl0IDEKZmkKCkZGQlJBTkNI PW1hc3Rlcgp0ZXN0IC1lIEZGQlJBTkNIICYmIEZGQlJBTkNIPSQoY2F0IEZGTVBFR19CUkFOQ0gp CgppZiB0ZXN0IC1lIGZmbXBlZy9tcF9hdXRvX3B1bGwgOyB0aGVuCiAgICBlY2hvICJVcGRhdGlu ZyBGRm1wZWcsIChyZSltb3ZlIGZmbXBlZy9tcF9hdXRvX3B1bGwgdG8gZGlzYWJsZSIKICAgIChj ZCBmZm1wZWcgJiYgZ2l0IGNoZWNrb3V0ICRGRkJSQU5DSCkKICAgIGlmICEgKGNkIGZmbXBlZyAm JiBnaXQgcHVsbCAtLXJlYmFzZSAtLWZmLW9ubHkpIDsgdGhlbgogICAgICAgIGVjaG8gImdpdCBw dWxsIGZhaWxlZCwgKHJlKW1vdmUgZmZtcGVnL21wX2F1dG9fcHVsbCB0byBkaXNhYmxlIHB1bGxp bmciCiAgICAgICAgZXhpdCAxCiAgICBmaQpmaQoKaWYgdGVzdCAiJGZmbXBlZ19hIiAhPSAibm8i ICYmICEgdGVzdCAtZSBmZm1wZWcgOyB0aGVuCiAgICBlY2hvICJObyBGRm1wZWcgY2hlY2tvdXQs IHByZXNzIGVudGVyIHRvIGRvd25sb2FkIG9uZSB3aXRoIGdpdCBvciBDVFJMK0MgdG8gYWJvcnQi CiAgICByZWFkIHRtcAogICAgaWYgISBnaXQgY2xvbmUgLWIgJEZGQlJBTkNIIC0tZGVwdGggMSBn aXQ6Ly9zb3VyY2UuZmZtcGVnLm9yZy9mZm1wZWcuZ2l0IGZmbXBlZyA7IHRoZW4KICAgICAgICBy bSAtcmYgZmZtcGVnCiAgICAgICAgZWNobyAiRmFpbGVkIHRvIGdldCBhIEZGbXBlZyBjaGVja291 dCIKICAgICAgICBlY2hvICJQbGVhc2UgdHJ5IGFnYWluIG9yIHB1dCBGRm1wZWcgc291cmNlIGNv ZGUgY29weSBpbnRvIGZmbXBlZy8gbWFudWFsbHkuIgogICAgICAgIGVjaG8gIk5pZ2h0bHkgc25h cHNob3Q6IGh0dHA6Ly9mZm1wZWcub3JnL3JlbGVhc2VzL2ZmbXBlZy1zbmFwc2hvdC50YXIuYnoy IgogICAgICAgIGVjaG8gIlRvIHVzZSBhIGdpdGh1YiBtaXJyb3IgdmlhIGh0dHAgKGUuZy4gYmVj YXVzZSBhIGZpcmV3YWxsIGJsb2NrcyBnaXQpOiIKICAgICAgICBlY2hvICJnaXQgY2xvbmUgLS1k ZXB0aCAxIGh0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcvRkZtcGVnIGZmbXBlZzsgdG91Y2ggZmZt cGVnL21wX2F1dG9fcHVsbCIKICAgICAgICBleGl0IDEKICAgIGZpCiAgICB0b3VjaCBmZm1wZWcv bXBfYXV0b19wdWxsCmZpCgpsaXN0X3N1YnBhcnRzKCkgewogIHRlc3QgISAtZSBmZm1wZWcvbGli YXYkezN9ICYmIHJldHVybiAxCiAgcGF0dGVybj0icy9eW14jXSokezF9LiooW14gLF0qLCAqXChb XiAsKV0qXCkuKi9cMV8kezJ9L3AiCiAgc2VkIC1uICIkcGF0dGVybiIgZmZtcGVnL2xpYmF2JHsz fSB8IHRvdXBwZXIKICByZXR1cm4gMAp9CgplY2hvY2hlY2sgImZmbXBlZy9saWJhdmNvZGVjL2Fs bGNvZGVjcy5jIgpsaWJhdmRlY29kZXJzX2FsbD0kKGxpc3Rfc3VicGFydHMgIERFQyAgICAgIGRl Y29kZXIgIGNvZGVjL2FsbGNvZGVjcy5jKQpsaWJhdmVuY29kZXJzX2FsbD0kKGxpc3Rfc3VicGFy dHMgIEVOQyAgICAgIGVuY29kZXIgIGNvZGVjL2FsbGNvZGVjcy5jKQpsaWJhdnBhcnNlcnNfYWxs PSQobGlzdF9zdWJwYXJ0cyAgIFBBUlNFUiAgIHBhcnNlciAgIGNvZGVjL2FsbGNvZGVjcy5jKQps aWJhdmJzZnNfYWxsPSQobGlzdF9zdWJwYXJ0cyAgICAgIEJTRiAgICAgIGJzZiAgICAgIGNvZGVj L2FsbGNvZGVjcy5jKQpsaWJhdmh3YWNjZWxzX2FsbD0kKGxpc3Rfc3VicGFydHMgIEhXQUNDRUwg IGh3YWNjZWwgIGNvZGVjL2FsbGNvZGVjcy5jKQp0ZXN0ICQ/IC1lcSAwICYmIF9saXN0X3N1YnBh cnRzPWZvdW5kIHx8IF9saXN0X3N1YnBhcnRzPSJub3QgZm91bmQiCmVjaG9yZXMgIiRfbGlzdF9z dWJwYXJ0cyIKCmVjaG9jaGVjayAiZmZtcGVnL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyIKbGli YXZkZW11eGVyc19hbGw9JChsaXN0X3N1YnBhcnRzICBERU1VWCAgICBkZW11eGVyICBmb3JtYXQv YWxsZm9ybWF0cy5jKQpsaWJhdm11eGVyc19hbGw9JChsaXN0X3N1YnBhcnRzICAgIF9NVVggICAg IG11eGVyICAgIGZvcm1hdC9hbGxmb3JtYXRzLmMpCmxpYmF2cHJvdG9jb2xzX2FsbD0kKGxpc3Rf c3VicGFydHMgUFJPVE9DT0wgcHJvdG9jb2wgZm9ybWF0L2FsbGZvcm1hdHMuYykKdGVzdCAkPyAt ZXEgMCAmJiBfbGlzdF9zdWJwYXJ0cz1mb3VuZCB8fCBfbGlzdF9zdWJwYXJ0cz0ibm90IGZvdW5k IgplY2hvcmVzICIkX2xpc3Rfc3VicGFydHMiCgplY2hvY2hlY2sgImZmbXBlZy9saWJhdmZpbHRl ci9hbGxmaWx0ZXJzLmMiCmxpYmF2ZmlsdGVyc19hbGw9JChsaXN0X3N1YnBhcnRzICAgRklMVEVS ICAgZmlsdGVyICAgZmlsdGVyL2FsbGZpbHRlcnMuYykKdGVzdCAkPyAtZXEgMCAmJiBfbGlzdF9z dWJwYXJ0cz1mb3VuZCB8fCBfbGlzdF9zdWJwYXJ0cz0ibm90IGZvdW5kIgplY2hvcmVzICIkX2xp c3Rfc3VicGFydHMiCgpmaWx0ZXJfb3V0X2NvbXBvbmVudCgpIHsKICBldmFsIGxpc3Q9XCRsaWJh diR7MX1zCiAgdHlwZT0kKGVjaG8gJDEgfCB0b3VwcGVyKQogIHNoaWZ0CiAgZm9yIGl0ZW0gaW4g JEA7IGRvCiAgICBmaWx0ZXJfcGF0dGVybnM9IiRmaWx0ZXJfcGF0dGVybnMgLWUgcy9bXkEtWjAt OV9dJHtpdGVtfV8ke3R5cGV9Ly9nIgogIGRvbmUKICBlY2hvICIgJGxpc3QiIHwgc2VkICRmaWx0 ZXJfcGF0dGVybnMKfQoKbGliYXZkZWNvZGVycz0kKGVjaG8gJGxpYmF2ZGVjb2RlcnNfYWxsKQps aWJhdmVuY29kZXJzPSQoZWNobyAkbGliYXZlbmNvZGVyc19hbGwpCmxpYmF2cGFyc2Vycz0kKGVj aG8gJGxpYmF2cGFyc2Vyc19hbGwpCmxpYmF2YnNmcz0kKGVjaG8gJGxpYmF2YnNmc19hbGwpCiMg RGlzYWJsZSBhbGwgaGFyZHdhcmUgYWNjZWxlcmF0b3JzIGZvciBub3cuCmxpYmF2aHdhY2NlbHM9 CmxpYmF2ZGVtdXhlcnM9JChlY2hvICRsaWJhdmRlbXV4ZXJzX2FsbCkKbGliYXZtdXhlcnM9JChl Y2hvICRsaWJhdm11eGVyc19hbGwpCmxpYmF2cHJvdG9jb2xzPSQoZWNobyAkbGliYXZwcm90b2Nv bHNfYWxsKQpsaWJhdmZpbHRlcnM9JChlY2hvICRsaWJhdmZpbHRlcnNfYWxsKQoKbGliYXZkZWNv ZGVycz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IGRlY29kZXIgJ0xJQltBLVowLTlfXSogSDI2NF9R U1YgTUpQRUdfUVNWIE1QRUcyX1FTViBIRVZDX1FTViBWQzFfUVNWIEgyNjRfTU1BTCcpCmxpYmF2 ZW5jb2RlcnM9JChmaWx0ZXJfb3V0X2NvbXBvbmVudCBlbmNvZGVyICdMSUJbQS1aMC05X10qIEgy NjRfUVNWIE1KUEVHX1FTViBNUEVHMl9RU1YgSEVWQ19RU1YgVkMxX1FTViBOVkVOQ1tBLVowLTlf XSogSDI2NF9OVkVOQ1tBLVowLTlfXSogSEVWQ19OVkVOQ1tBLVowLTlfXSogSEFQJykKbGliYXZk ZW11eGVycz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IGRlbXV4ZXIgJ0FWSVNZTlRIIExJQltBLVow LTlfXSogUkVESVInKQpsaWJhdm11eGVycz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IG11eGVyICdM SUJbQS1aMC05X10qIFJUUCBSVFNQIFNBUCcpCmxpYmF2cHJvdG9jb2xzPSQoZmlsdGVyX291dF9j b21wb25lbnQgcHJvdG9jb2wgJ0JMVVJBWSBGRlJUTVBDUllQVCBIVFRQUyBMSUJbQS1aMC05X10q IFRMUyBUTFNfR05VVExTIFRMU19PUEVOU1NMIFRMU19TRUNVUkVUUkFOU1BPUlQnKQpsaWJhdmZp bHRlcnM9JChmaWx0ZXJfb3V0X2NvbXBvbmVudCBmaWx0ZXIgJ0ZSRUkwUltBLVowLTlfXSogTElC W0EtWjAtOV9dKiBNUCBPQ1YnKQoKIyBzZWNvbmQgcGFzcyBjb21tYW5kIGxpbmUgcGFyc2luZyBm b3Igb3B0aW9ucyBuZWVkaW5nIGxvY2FsIEZGbXBlZyBjaGVja291dApmb3IgYWNfb3B0aW9uIGRv CiAgY2FzZSAiJGFjX29wdGlvbiIgaW4KICAtLWVuYWJsZS1kZWNvZGVyPSopICAgbGliYXZkZWNv ZGVycz0iJGxpYmF2ZGVjb2RlcnMgICAkKG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0aW9uKSIgOzsK ICAtLWVuYWJsZS1lbmNvZGVyPSopICAgbGliYXZlbmNvZGVycz0iJGxpYmF2ZW5jb2RlcnMgICAk KG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0aW9uKSIgOzsKICAtLWVuYWJsZS1wYXJzZXI9KikgICAg bGliYXZwYXJzZXJzPSIkbGliYXZwYXJzZXJzICAgICAkKG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0 aW9uKSIgOzsKICAtLWVuYWJsZS1wcm90b2NvbD0qKSAgbGliYXZwcm90b2NvbHM9IiRsaWJhdnBy b3RvY29scyAkKG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0aW9uKSIgOzsKICAtLWVuYWJsZS1kZW11 eGVyPSopICAgbGliYXZkZW11eGVycz0iJGxpYmF2ZGVtdXhlcnMgICAkKG9wdGlvbl92YWx1ZV91 YyAkYWNfb3B0aW9uKSIgOzsKICAtLWVuYWJsZS1tdXhlcj0qKSAgICAgbGliYXZtdXhlcnM9IiRs aWJhdm11eGVycyAgICAgICAkKG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0aW9uKSIgOzsKICAtLWVu YWJsZS1maWx0ZXI9KikgICAgbGliYXZmaWx0ZXJzPSIkbGliYXZmaWx0ZXJzICAgICAkKG9wdGlv bl92YWx1ZV91YyAkYWNfb3B0aW9uKSIgOzsKCiAgLS1kaXNhYmxlLWRlY29kZXI9KikgIGxpYmF2 ZGVjb2RlcnM9JChmaWx0ZXJfb3V0X2NvbXBvbmVudCAgZGVjb2RlciAgIiQob3B0aW9uX3ZhbHVl X3VjICRhY19vcHRpb24pIikgOzsKICAtLWRpc2FibGUtZW5jb2Rlcj0qKSAgbGliYXZlbmNvZGVy cz0kKGZpbHRlcl9vdXRfY29tcG9uZW50ICBlbmNvZGVyICAiJChvcHRpb25fdmFsdWVfdWMgJGFj X29wdGlvbikiKSA7OwogIC0tZGlzYWJsZS1wYXJzZXI9KikgICBsaWJhdnBhcnNlcnM9JChmaWx0 ZXJfb3V0X2NvbXBvbmVudCAgIHBhcnNlciAgICIkKG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0aW9u KSIpIDs7CiAgLS1kaXNhYmxlLXByb3RvY29sPSopIGxpYmF2cHJvdG9jb2xzPSQoZmlsdGVyX291 dF9jb21wb25lbnQgcHJvdG9jb2wgIiQob3B0aW9uX3ZhbHVlX3VjICRhY19vcHRpb24pIikgOzsK ICAtLWRpc2FibGUtZGVtdXhlcj0qKSAgbGliYXZkZW11eGVycz0kKGZpbHRlcl9vdXRfY29tcG9u ZW50ICBkZW11eGVyICAiJChvcHRpb25fdmFsdWVfdWMgJGFjX29wdGlvbikiKSA7OwogIC0tZGlz YWJsZS1tdXhlcj0qKSAgICBsaWJhdm11eGVycz0kKGZpbHRlcl9vdXRfY29tcG9uZW50ICAgIG11 eGVyICAgICIkKG9wdGlvbl92YWx1ZV91YyAkYWNfb3B0aW9uKSIpIDs7CiAgLS1kaXNhYmxlLWZp bHRlcj0qKSAgIGxpYmF2ZmlsdGVycz0kKGZpbHRlcl9vdXRfY29tcG9uZW50ICAgZmlsdGVyICAg IiQob3B0aW9uX3ZhbHVlX3VjICRhY19vcHRpb24pIikgOzsKICBlc2FjCmRvbmUKCgojIENoZWNr aW5nIENDIHZlcnNpb24uLi4KIyBJbnRlbCBDKysgQ29tcGlsZXJzIChubyBhdXRvc2VsZWN0LCB1 c2UgQ0M9L3NvbWUvYmluYXJ5IC4vY29uZmlndXJlKQppZiB0ZXN0ICIkKGJhc2VuYW1lICRfY2Mp IiA9ICJpY2MiIHx8IHRlc3QgIiQoYmFzZW5hbWUgJF9jYykiID0gImVjYyI7IHRoZW4KICBlY2hv Y2hlY2sgIiRfY2MgdmVyc2lvbiIKICBjY192ZW5kb3I9aW50ZWwKICBjY19uYW1lPSQoJF9jYyAt ViAyPiYxIHwgaGVhZCAtbiAxIHwgY3V0IC1kICcsJyAtZiAxKQogIGNjX3ZlcnNpb249JCgkX2Nj IC1WIDI+JjEgfCBoZWFkIC1uIDEgfCBjdXQgLWQgJywnIC1mIDIgfCBjdXQgLWQgJyAnIC1mIDMp CiAgX2NjX21ham9yPSQoZWNobyAkY2NfdmVyc2lvbiB8IGN1dCAtZCAnLicgLWYgMSkKICBfY2Nf bWlub3I9JChlY2hvICRjY192ZXJzaW9uIHwgY3V0IC1kICcuJyAtZiAyKQogICMgVE9ETyB2ZXJp Znkgb2xkZXIgaWNjL2VjYyBjb21wYXRpYmlsaXR5CiAgY2FzZSAkY2NfdmVyc2lvbiBpbgogICAg JycpCiAgICAgIGNjX3ZlcnNpb249InYuID8uPz8sIGJhZCIKICAgICAgY2NfZmFpbD15ZXMKICAg ICAgOzsKICAgIDEwLjF8MTEuMXwxMi4qfDEzLiopCiAgICAgIGNjX3ZlcnNpb249IiRjY192ZXJz aW9uLCBvayIKICAgICAgOzsKICAgICopCiAgICAgIGNjX3ZlcnNpb249IiRjY192ZXJzaW9uLCBi YWQiCiAgICAgIGNjX2ZhaWw9eWVzCiAgICAgIDs7CiAgZXNhYwogIGVjaG9yZXMgIiRjY192ZXJz aW9uIgplbHNlCiAgZm9yIF9jYyBpbiAiJF9jYyIgZ2NjIGNjIDsgZG8KICAgIGNjX25hbWVfdG1w PSQoJF9jYyAtdiAyPiYxIHwgdGFpbCAtbiAxIHwgY3V0IC1kICcgJyAtZiAxKQogICAgaWYgdGVz dCAiJGNjX25hbWVfdG1wIiA9ICJnY2MiOyB0aGVuCiAgICAgIGNjX25hbWU9JGNjX25hbWVfdG1w CiAgICAgIGVjaG9jaGVjayAiJF9jYyB2ZXJzaW9uIgogICAgICBjY192ZW5kb3I9Z251CiAgICAg IGNjX3ZlcnNpb249JCgkX2NjIC1kdW1wdmVyc2lvbiAyPiYxKQogICAgICBjYXNlICRjY192ZXJz aW9uIGluCiAgICAgICAgMi45NiopCiAgICAgICAgICBjY19mYWlsPXllcwogICAgICAgICAgOzsK ICAgICAgICAqKQogICAgICAgICAgX2NjX21ham9yPSQoZWNobyAkY2NfdmVyc2lvbiB8IGN1dCAt ZCAnLicgLWYgMSkKICAgICAgICAgIF9jY19taW5vcj0kKGVjaG8gJGNjX3ZlcnNpb24gfCBjdXQg LWQgJy4nIC1mIDIpCiAgICAgICAgICBfY2NfbWluaT0kKGVjaG8gJGNjX3ZlcnNpb24gfCBjdXQg LWQgJy4nIC1mIDMpCiAgICAgICAgICA7OwogICAgICBlc2FjCiAgICAgIGVjaG9yZXMgIiRjY192 ZXJzaW9uIgogICAgICBicmVhawogICAgZmkKICAgIGlmICRfY2MgLXYgMj4mMSB8IGdyZXAgLXEg ImNsYW5nIjsgdGhlbgogICAgICBlY2hvY2hlY2sgIiRfY2MgdmVyc2lvbiIKICAgICAgY2NfdmVu ZG9yPWNsYW5nCiAgICAgIGNjX3ZlcnNpb249JCgkX2NjIC1kdW1wdmVyc2lvbiAyPiYxKQogICAg ICByZXNfY29tbWVudD0iZXhwZXJpbWVudGFsIHN1cHBvcnQgb25seSIKICAgICAgZWNob3JlcyAi Y2xhbmcgJGNjX3ZlcnNpb24iCiAgICAgIGJyZWFrCiAgICBmaQogICAgY2NfbmFtZV90bXA9JCgk X2NjIC1WIDI+JjEgfCBoZWFkIC1uIDEgfCBjdXQgLWQgJyAnIC1mIDIsMykKICAgIGlmIHRlc3Qg IiRjY19uYW1lX3RtcCIgPSAiU3VuIEMiOyB0aGVuCiAgICAgIGVjaG9jaGVjayAiJF9jYyB2ZXJz aW9uIgogICAgICBjY192ZW5kb3I9c3VuCiAgICAgIGNjX3ZlcnNpb249JCgkX2NjIC1WIDI+JjEg fCBoZWFkIC1uIDEgfCBjdXQgLWQgJyAnIC1mIDQpCiAgICAgIHJlc19jb21tZW50PSJleHBlcmlt ZW50YWwgc3VwcG9ydCBvbmx5IgogICAgICBlY2hvcmVzICJTdW4gQyAkY2NfdmVyc2lvbiIKICAg ICAgYnJlYWsKICAgIGZpCiAgZG9uZQpmaSAjIGljYwp0ZXN0ICIkY2NfZmFpbCIgPSB5ZXMgJiYg ZGllICJ1bnN1cHBvcnRlZCBjb21waWxlciB2ZXJzaW9uIgoKIyBEZXRlcm1pbmUgb3VyIE9TIG5h bWUgYW5kIENQVSBhcmNoaXRlY3R1cmUKaWYgdGVzdCAteiAiJF90YXJnZXQiIDsgdGhlbgogICMg T1MgbmFtZQogIHN5c3RlbV9uYW1lPSQodW5hbWUgLXMgMj4mMSkKICBjYXNlICIkc3lzdGVtX25h bWUiIGluCiAgTGludXh8RnJlZUJTRHxOZXRCU0R8T3BlbkJTRHxEcmFnb25GbHl8QlNEL09TfERh cndpbnxTdW5PU3xRTlh8R05VfE1vcnBoT1N8QUlYfEFtaWdhT1N8SGFpa3UpCiAgICA7OwogIElS SVgqKQogICAgc3lzdGVtX25hbWU9SVJJWAogICAgOzsKICBHTlUva0ZyZWVCU0QpCiAgICBzeXN0 ZW1fbmFtZT1GcmVlQlNECiAgICA7OwogIEhQLVVYKikKICAgIHN5c3RlbV9uYW1lPUhQLVVYCiAg ICA7OwogIFtjQ11beVldW2dHXVt3V11baUldW25OXSopCiAgICBzeXN0ZW1fbmFtZT1DWUdXSU4K ICAgIDs7CiAgTUlOR1czMiopCiAgICBzeXN0ZW1fbmFtZT1NSU5HVzMyCiAgICA7OwogIE9TLzIq KQogICAgc3lzdGVtX25hbWU9T1MvMgogICAgOzsKICAqKQogICAgc3lzdGVtX25hbWU9IiRzeXN0 ZW1fbmFtZS1VTktOT1dOIgogICAgOzsKICBlc2FjCiAgY3BwX2NvbmRpdGlvbl9jaGVjayAnJyAn ZGVmaW5lZChfX01JTkdXMzJfXyknICYmIHN5c3RlbV9uYW1lPU1JTkdXMzIKCgogICMgaG9zdCdz IENQVS9pbnN0cnVjdGlvbiBzZXQKICBzZXRfaG9zdF9hcmNoKCkgewogIGNhc2UgIiQxIiBpbgog ICAgICB4ODZfNjR8YW1kNjR8aVszLTldODYqfGk4NnBjfHg4Nnx4ODZwY3xrNXxrNnxrNl8yfGs2 XzN8azYtMnxrNi0zfHBlbnRpdW0qfGF0aGxvbip8aTU4Nl9pNjg2fGk1ODYtaTY4NikgaG9zdF9h cmNoPWkzODYgOzsKICAgICAgaWE2NCkgaG9zdF9hcmNoPWlhNjQgOzsKICAgICAgbWFjcHBjfHBw Yyp8UG93ZXIqKSBob3N0X2FyY2g9cHBjIDs7CiAgICAgIGFscGhhKSBob3N0X2FyY2g9YWxwaGEg OzsKICAgICAgc3VuNCp8c3BhcmMqKSBob3N0X2FyY2g9c3BhcmMgOzsKICAgICAgcGFyaXNjKnxo cHBhKnw5MDAwKikgaG9zdF9hcmNoPWhwcGEgOzsKICAgICAgYWFyY2g2NCopIGhvc3RfYXJjaD1h YXJjaDY0IDs7CiAgICAgIGFybSp8emF1cnVzfGNhdHMpIGhvc3RfYXJjaD1hcm0gOzsKICAgICAg c2gzfHNoNHxzaDRhKSBob3N0X2FyY2g9c2ggOzsKICAgICAgczM5MCkgaG9zdF9hcmNoPXMzOTAg OzsKICAgICAgczM5MHgpIGhvc3RfYXJjaD1zMzkweCA7OwogICAgICAqbWlwcyopIGhvc3RfYXJj aD1taXBzIDs7CiAgICAgIG5pb3MyKSBob3N0X2FyY2g9bmlvczIgOzsKICAgICAgdmF4KSBob3N0 X2FyY2g9dmF4IDs7CiAgICAgIHh0ZW5zYSopIGhvc3RfYXJjaD14dGVuc2EgOzsKICAgICAgKikg aG9zdF9hcmNoPVVOS05PV04gOzsKICBlc2FjCiAgfQogIHNldF9ob3N0X2FyY2ggIiQodW5hbWUg LW0gMj4mMSkiCiAgaWYgdGVzdCAiJGhvc3RfYXJjaCIgPSBVTktOT1dOIDsgdGhlbgogICAgc2V0 X2hvc3RfYXJjaCAiJCh1bmFtZSAtcCAyPiYxKSIKICBmaQplbHNlICMgaWYgdGVzdCAteiAiJF90 YXJnZXQiCiAgZm9yIGNvbXBvbmVudCBpbiAzIDI7IGRvCiAgICBzeXN0ZW1fbmFtZT0kKGVjaG8g JF90YXJnZXQgfCBjdXQgLWQgJy0nIC1mICRjb21wb25lbnQpCiAgICBjYXNlICIkKGVjaG8gJHN5 c3RlbV9uYW1lIHwgdG9sb3dlcikiIGluCiAgICAgIGxpbnV4KSBzeXN0ZW1fbmFtZT1MaW51eCA7 OwogICAgICBmcmVlYnNkKSBzeXN0ZW1fbmFtZT1GcmVlQlNEIDs7CiAgICAgIGdudS9rZnJlZWJz ZCkgc3lzdGVtX25hbWU9RnJlZUJTRCA7OwogICAgICBuZXRic2QpIHN5c3RlbV9uYW1lPU5ldEJT RCA7OwogICAgICBic2Qvb3MpIHN5c3RlbV9uYW1lPUJTRC9PUyA7OwogICAgICBvcGVuYnNkKSBz eXN0ZW1fbmFtZT1PcGVuQlNEIDs7CiAgICAgIGRyYWdvbmZseSkgc3lzdGVtX25hbWU9RHJhZ29u Rmx5IDs7CiAgICAgIHN1bm9zKSBzeXN0ZW1fbmFtZT1TdW5PUyA7OwogICAgICBxbngpIHN5c3Rl bV9uYW1lPVFOWCA7OwogICAgICBtb3JwaG9zKSBzeXN0ZW1fbmFtZT1Nb3JwaE9TIDs7CiAgICAg IGFtaWdhb3MpIHN5c3RlbV9uYW1lPUFtaWdhT1MgOzsKICAgICAgbWluZ3czMiopIHN5c3RlbV9u YW1lPU1JTkdXMzIgOzsKICAgICAgd2luZSkgc3lzdGVtX25hbWU9V2luZSA7OwogICAgZXNhYwog IGRvbmUKICAjIFdlIG5lZWQgdG8gY29udmVydCB1bmRlcnNjb3JlcyBzbyB0aGF0IHZhbHVlcyBs aWtlIGs2LTIgYW5kIHBlbnRpdW0tbW14IGNhbiBiZSBwYXNzZWQKICBob3N0X2FyY2g9JChlY2hv ICRfdGFyZ2V0IHwgY3V0IC1kICctJyAtZiAxKQogIGlmIHRlc3QgJChlY2hvICRob3N0X2FyY2gp ICE9ICJ4ODZfNjQiIDsgdGhlbgogICAgaG9zdF9hcmNoPSQoZWNobyAkaG9zdF9hcmNoIHwgdHIg J18nICctJykKICBmaQpmaQoKX3RpbWVyPXRpbWVyLWxpbnV4LmMKX2dldGNoPWdldGNoMi5jCgpp ZiBkYXJ3aW47IHRoZW4KICBleHRyYV9jZmxhZ3M9Ii1tZHluYW1pYy1uby1waWMgJGV4dHJhX2Nm bGFncyIKICBfdGltZXI9dGltZXItZGFyd2luLmMKZmkKCmlmIGFpeCA7IHRoZW4KICBleHRyYV9s ZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbEMiCmZpCgppZiBpcml4IDsgdGhlbgogIF9yYW5saWI9 J2FyIC1yJwplbGlmIGxpbnV4IDsgdGhlbgogIF9yYW5saWI9J3RydWUnCmZpCgppZiB3aW4zMiA7 IHRoZW4KICBfZXhlc3VmPSIuZXhlIgogIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAtZm5v LWNvbW1vbiIKICAjIC1sd2lubW0gaXMgYWx3YXlzIG5lZWRlZCBmb3Igb3NkZXAvdGltZXItd2lu Mi5jCiAgdGltZXJfbGlicz0tbHdpbm1tCiAgX3BlX2V4ZWN1dGFibGU9eWVzCiAgX3RpbWVyPXRp bWVyLXdpbjIuYwogIF9wcmlvcml0eT15ZXMKICBkZWZfZG9zX3BhdGhzPSIjZGVmaW5lIEhBVkVf RE9TX1BBVEhTIDEiCiAgZGVmX3ByaW9yaXR5PSIjZGVmaW5lIENPTkZJR19QUklPUklUWSAxIgpm aQoKaWYgbWluZ3czMiA7IHRoZW4KICBfZ2V0Y2g9Z2V0Y2gyLXdpbi5jCiAgc2htZW09eWVzCmZp CgppZiBhbWlnYW9zIDsgdGhlbgogIF9zZWxlY3Q9bm8KICBfc2lnaGFuZGxlcj1ubwogIF9zdHJl YW1fY2FjaGU9bm8KICBkZWZfc3RyZWFtX2NhY2hlPSIjdW5kZWYgQ09ORklHX1NUUkVBTV9DQUNI RSIKICBleHRyYV9jZmxhZ3M9Ii1ETkVXTElCIC1EX19VU0VfSU5MSU5FX18gJGV4dHJhX2NmbGFn cyIKZmkKCmlmIHFueCA7IHRoZW4KICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbHBo IgpmaQoKaWYgb3MyIDsgdGhlbgogIF9leGVzdWY9Ii5leGUiCiAgX2dldGNoPWdldGNoMi1vczIu YwogIHNobWVtPXllcwogIF9wcmlvcml0eT15ZXMKICBkZWZfZG9zX3BhdGhzPSIjZGVmaW5lIEhB VkVfRE9TX1BBVEhTIDEiCiAgZGVmX3ByaW9yaXR5PSIjZGVmaW5lIENPTkZJR19QUklPUklUWSAx IgogIGRlZl9wYXRoX21heF9jaGVjaz0iI2RlZmluZSBDT05GSUdfUEFUSF9NQVhfQ0hFQ0sgMSIK ICAjIE9uIE9TLzIsIHBhc3NpbmcgLXN0YXRpYyB0byBnY2MgZmFpbHMgYXQgbGlua2luZyB0aW1l IGJlY2F1c2UgbGlua2luZwogICMgc3RhdGljYWxseSBhZ2FpbnN0IGxpYmMgcnVudGltZSBpcyBw cmV2ZW50ZWQgb24gcHVycG9zZS4gVG8gYXZvaWQgdGhpcywKICAjIHBhc3MgLXN0YXRpYyB0byBh IGxpbmtlciBkaXJlY3RseS4KICAjIEFuZCBlbnN1cmUgdGhhdCAkbGRfc3RhdGljIHNob3VsZCBi ZSBhdCBmaXJzdCBpbiBhIGxpYnJhcnkgbGlzdCBiZWNhdXNlIGl0CiAgIyBoYXMgZWZmZWN0cyBv bmx5IGxpYnJhcmllcyBhZnRlciBpdC4KICB0ZXN0IC1uICIkbGRfc3RhdGljIiAmJiBsZF9zdGF0 aWM9Jy1XbCwtc3RhdGljJwpmaQoKaWYgd2luZSA7IHRoZW4KICBleHRyYV9jZmxhZ3M9Ii1mbm8t cGljIC1VV0lOMzIgLVVfV0lOMzIgLVVfX1dJTjMyIC1VX19XSU4zMl9fIC1EV0lORV9OT1dJTlNP Q0sgJGV4dHJhX2NmbGFncyIKZmkKCmlmIGRhcndpbiAmJiB0ZXN0ICIkY2NfdmVuZG9yIiAhPSAi Y2xhbmciIDsgdGhlbgogIGV4dHJhX2NmbGFncz0iLWZhbGlnbi1sb29wcz0xNiAtc2hhcmVkLWxp YmdjYyAkZXh0cmFfY2ZsYWdzIgpmaQoKVE1QRVhFPSIkbXBsYXllcl90bXBkaXIvdG1wJF9leGVz dWYiCgplY2hvY2hlY2sgIndvcmtpbmcgY29tcGlsZXIiCmNmbGFnX2NoZWNrICIiIHx8IGRpZSAi Q29tcGlsZXIgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gQ2hlY2sgeW91ciBpbnN0YWxs YXRpb24gYW5kIGN1c3RvbSBDRkxBR1MgJENGTEFHUyAuIgplY2hvICJ5ZXMiCgpjZmxhZ19jaGVj ayAiLWxtIiAmJiBsaWJtPSItbG0iCgppZiB0ZXN0IC16ICIkX3RhcmdldCIgOyB0aGVuCiAgY2F0 ID4gJFRNUEMgPDwgRU9GCmludCBtYWluKHZvaWQpIHsKICAgIGludCB0ZXN0WyhpbnQpc2l6ZW9m KGNoYXIgKiktN107CiAgICByZXR1cm4gMDsKfQpFT0YKaWYgeDg2IDsgdGhlbgogIGNjX2NoZWNr ICYmIGhvc3RfYXJjaD14ODZfNjQgfHwgaG9zdF9hcmNoPWkzODYKICAjIFRyZWF0IHgzMiBhcyBn ZW5lcmljIGFyY2hpdGVjdHVyZSB3aXRob3V0IGFueSBvcHRpbWl6YXRpb25zLgogIGlmIHRlc3Qg IiRob3N0X2FyY2giID0gJ2kzODYnICYmIGNwcF9jb25kaXRpb25fY2hlY2sgJycgJ2RlZmluZWQo X194ODZfNjRfXyknOyB0aGVuCiAgICAgIGhvc3RfYXJjaD1nZW5lcmljCiAgZmkKZmkKaWYgcHBj IDsgdGhlbgogIGNjX2NoZWNrICYmIGhvc3RfYXJjaD1wcGM2NCB8fCBob3N0X2FyY2g9cHBjCmZp CmlmIHNwYXJjIDsgdGhlbgogIGNjX2NoZWNrICYmIGhvc3RfYXJjaD1zcGFyYzY0IHx8IGhvc3Rf YXJjaD1zcGFyYwpmaQpmaQoKZWNobyAiRGV0ZWN0ZWQgb3BlcmF0aW5nIHN5c3RlbTogJHN5c3Rl bV9uYW1lIgplY2hvICJEZXRlY3RlZCBob3N0IGFyY2hpdGVjdHVyZTogJGhvc3RfYXJjaCIKCmlm IHRlc3QgIiRfcnVudGltZV9jcHVkZXRlY3Rpb24iID0geWVzICYmICEgeDg2ICYmICEgcHBjOyB0 aGVuCiAgZGllICJSdW50aW1lIENQVSBkZXRlY3Rpb24gb25seSB3b3JrcyBmb3IgeDg2LCB4ODYt NjQgYW5kIFBQQyEiCmZpCgplY2hvY2hlY2sgImNyb3NzIGNvbXBpbGF0aW9uIgppZiB0ZXN0ICRf Y3Jvc3NfY29tcGlsZSA9IGF1dG8gOyB0aGVuCiAgX2Nyb3NzX2NvbXBpbGU9eWVzCiAgY2ZsYWdf Y2hlY2sgIiIgJiYgIiRUTVBFWEUiIDI+IC9kZXYvbnVsbCAmJiBfY3Jvc3NfY29tcGlsZT1ubwpm aQplY2hvcmVzICRfY3Jvc3NfY29tcGlsZQoKaWYgdGVzdCAkX2Nyb3NzX2NvbXBpbGUgPSB5ZXM7 IHRoZW4KICB0bXBfcnVuKCkgewogICAgcmV0dXJuIDAKICB9CiAgdGVzdCAiJF9ob3N0X2NjIiB8 fCBfaG9zdF9jYz1jYwpmaQoKZWNob2NoZWNrICJob3N0IGNjIgp0ZXN0ICIkX2hvc3RfY2MiIHx8 IF9ob3N0X2NjPSRfY2MKZWNob3JlcyAkX2hvc3RfY2MKCiMgLS0tCgojIG5vdyB0aGF0IHdlIGtu b3cgd2hhdCBjb21waWxlciBzaG91bGQgYmUgdXNlZCBmb3IgY29tcGlsYXRpb24sIHRyeSB0byBm aW5kCiMgb3V0IHdoaWNoIGFzc2VtYmxlciBpcyB1c2VkIGJ5IHRoZSAkX2NjIGNvbXBpbGVyCmlm IHRlc3QgIiRfYXMiID0gYXV0byA7IHRoZW4KICBfYXM9JCgkX2NjIC1wcmludC1wcm9nLW5hbWU9 YXMpCiAgdGVzdCAteiAiJF9hcyIgJiYgX2FzPWFzCmZpCgppZiB0ZXN0ICIkX25tIiA9IGF1dG8g OyB0aGVuCiAgX25tPSQoJF9jYyAtcHJpbnQtcHJvZy1uYW1lPW5tKQogIHRlc3QgLXogIiRfbm0i ICYmIF9ubT1ubQpmaQoKIyBYWFg6IHRoaXMgc2hvdWxkIGJlIE9LLi4KX2NwdWluZm89ImVjaG8i CgppZiB0ZXN0ICIkX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uIiA9IG5vIDsgdGhlbgoKIyBDeWd3aW4g aGFzIC9wcm9jL2NwdWluZm8sIGJ1dCBvbmx5IHN1cHBvcnRzIEludGVsIENQVXMKIyBGSVhNRTog UmVtb3ZlIHRoZSBDeWd3aW4gY2hlY2sgb25jZSBBTUQgQ1BVcyBhcmUgc3VwcG9ydGVkCmlmIHRl c3QgLXIgL3Byb2MvY3B1aW5mbyAmJiAhIGN5Z3dpbjsgdGhlbgogICMgTGludXggd2l0aCAvcHJv YyBtb3VudGVkLCBleHRyYWN0IENQVSBpbmZvcm1hdGlvbiBmcm9tIGl0CiAgX2NwdWluZm89ImNh dCAvcHJvYy9jcHVpbmZvIgplbGlmIHRlc3QgLXIgL2NvbXBhdC9saW51eC9wcm9jL2NwdWluZm8g JiYgISB4ODYgOyB0aGVuCiAgIyBGcmVlQlNEIHdpdGggTGludXggZW11bGF0aW9uIC9wcm9jIG1v dW50ZWQsCiAgIyBleHRyYWN0IENQVSBpbmZvcm1hdGlvbiBmcm9tIGl0CiAgIyBEb24ndCB1c2Ug aXQgb24geDg2IHRob3VnaCwgaXQgbmV2ZXIgcmVwb3J0cyAzRE5vdyEKICBfY3B1aW5mbz0iY2F0 IC9jb21wYXQvbGludXgvcHJvYy9jcHVpbmZvIgplbGlmIGRhcndpbiAmJiAhIHg4NiA7IHRoZW4K ICAjIHVzZSBob3N0aW5mbyBvbiBEYXJ3aW4KICBfY3B1aW5mbz0iaG9zdGluZm8iCmVsaWYgYWl4 OyB0aGVuCiAgIyB1c2UgJ2xzYXR0cicgb24gQUlYCiAgX2NwdWluZm89ImxzYXR0ciAtRSAtbCBw cm9jMCAtYSB0eXBlIgplbGlmIHg4NjsgdGhlbgogICMgYWxsIG90aGVyIE9TZXMgdHJ5IHRvIGV4 dHJhY3QgQ1BVIGluZm9ybWF0aW9uIGZyb20gYSBzbWFsbCBoZWxwZXIKICAjIHByb2dyYW0gY3B1 aW5mbyBpbnN0ZWFkCiAgJF9ob3N0X2NjIC1vIGNwdWluZm8kX2V4ZXN1ZiBjcHVpbmZvLmMKICBf Y3B1aW5mbz0iLi9jcHVpbmZvJF9leGVzdWYiCmZpCgppZiB4ODYgOyB0aGVuCiAgIyBnYXRoZXIg bW9yZSBDUFUgaW5mb3JtYXRpb24KICBwbmFtZT0kKCRfY3B1aW5mbyB8IGdyZXAgJ21vZGVsIG5h bWUnIHwgY3V0IC1kICc6JyAtZiAyIHwgaGVhZCAtbiAxKQogIHB2ZW5kb3I9JCgkX2NwdWluZm8g fCBncmVwICd2ZW5kb3JfaWQnIHwgY3V0IC1kICc6JyAtZiAyICB8IGN1dCAtZCAnICcgLWYgMiB8 IGhlYWQgLW4gMSkKICBwZmFtaWx5PSQoJF9jcHVpbmZvIHwgZ3JlcCAnY3B1IGZhbWlseScgfCBj dXQgLWQgJzonIC1mIDIgfCBjdXQgLWQgJyAnIC1mIDIgfCBoZWFkIC1uIDEpCiAgcG1vZGVsPSQo JF9jcHVpbmZvIHwgZ3JlcCAtdiAnbW9kZWwgbmFtZScgfCBncmVwICdtb2RlbCcgfCBjdXQgLWQg JzonIC1mIDIgfCBjdXQgLWQgJyAnIC1mIDIgfCBoZWFkIC1uIDEpCiAgcHN0ZXBwaW5nPSQoJF9j cHVpbmZvIHwgZ3JlcCAnc3RlcHBpbmcnIHwgY3V0IC1kICc6JyAtZiAyIHwgY3V0IC1kICcgJyAt ZiAyIHwgaGVhZCAtbiAxKQoKICBleHRzPSQoJF9jcHVpbmZvIHwgZWdyZXAgJ2ZlYXR1cmVzfGZs YWdzJyB8IGN1dCAtZCAnOicgLWYgMiB8IGhlYWQgLW4gMSkKCiAgcHBhcmFtPSQoZWNobyAkZXh0 cyB8IHNlZCAtZSBzL2s2X210cnIvbXRyci8gLWUgcy9jeXJpeF9hcnIvbXRyci8gLWUgcy9jZW50 YXVyX21jci9tdHJyLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZSBzL3htbS9zc2Uv IC1lIHMva25pL3NzZS8gLWUgcy9wbmkvc3NlMy8pCiAgIyBTU0UgaW1wbGllcyBNTVgyLCBidXQg bm90IGFsbCBTU0UgcHJvY2Vzc29ycyByZXBvcnQgdGhlIG1teGV4dCBDUFUgZmxhZy4KICBwcGFy YW09JChlY2hvICRwcGFyYW0gfCBzZWQgLWUgJ3Mvc3NlL3NzZSBtbXhleHQvJykKCiAgZm9yIGV4 dCBpbiAkcHBhcmFtIDsgZG8KICAgIGV2YWwgdGVzdCBcIlwkXyRleHRcIiA9IGF1dG8gMj4vZGV2 L251bGwgJiYgZXZhbCBfJGV4dD1rZXJuZWxfY2hlY2sKICBkb25lCgogIGVjaG9jaGVjayAiQ1BV IHZlbmRvciIKICBlY2hvcmVzICIkcHZlbmRvciAoJHBmYW1pbHk6JHBtb2RlbDokcHN0ZXBwaW5n KSIKCiAgZWNob2NoZWNrICJDUFUgdHlwZSIKICBlY2hvcmVzICIkcG5hbWUiCmZpCgpmaSAjIHRl c3QgIiRfcnVudGltZV9jcHVkZXRlY3Rpb24iID0gbm8KCmlmIHg4NiAmJiB0ZXN0ICIkX3J1bnRp bWVfY3B1ZGV0ZWN0aW9uIiA9IG5vIDsgdGhlbgogIGV4dGNoZWNrKCkgewogICAgaWYgdGVzdCAi JDEiID0ga2VybmVsX2NoZWNrIDsgdGhlbgogICAgICBlY2hvY2hlY2sgImtlcm5lbCBzdXBwb3J0 IG9mICQyIgogICAgICBjYXQgPiAkVE1QQyA8PEVPRgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNs dWRlIDxzaWduYWwuaD4Kc3RhdGljIHZvaWQgY2F0Y2goaW50IHNpZykgeyBleGl0KDEpOyB9Cmlu dCBtYWluKHZvaWQpIHsKICBzaWduYWwoU0lHSUxMLCBjYXRjaCk7CiAgX19hc21fXyB2b2xhdGls ZSAoIiQzIjo6OiJtZW1vcnkiKTsgcmV0dXJuIDA7Cn0KRU9GCgogICAgICBpZiBjY19jaGVjayAm JiB0bXBfcnVuIDsgdGhlbgogICAgICAgIGV2YWwgXyQyPXllcwogICAgICAgIGVjaG9yZXMgInll cyIKICAgICAgICBfb3B0aW1pemluZz0iJF9vcHRpbWl6aW5nICQyIgogICAgICAgIHJldHVybiAw CiAgICAgIGVsc2UKICAgICAgICBldmFsIF8kMj1ubwogICAgICAgIGVjaG9yZXMgImZhaWxlZCIK ICAgICAgICBlY2hvICJJdCBzZWVtcyB0aGF0IHlvdXIga2VybmVsIGRvZXMgbm90IGNvcnJlY3Rs eSBzdXBwb3J0ICQyLiIKICAgICAgICBlY2hvICJUbyB1c2UgJDIgZXh0ZW5zaW9ucyBpbiBNUGxh eWVyLCB5b3UgaGF2ZSB0byB1cGdyYWRlL3JlY29tcGlsZSB5b3VyIGtlcm5lbCEiCiAgICAgICAg cmV0dXJuIDEKICAgICAgZmkKICAgIGZpCiAgICByZXR1cm4gMAogIH0KCiAgZXh0Y2hlY2sgJF9t bXggICAgICAnbW14JyAgICAgICdlbW1zJwogIGV4dGNoZWNrICRfbW14ZXh0ICAgJ21teGV4dCcg ICAnc2ZlbmNlJwogIGV4dGNoZWNrICRfM2Rub3cgICAgJzNkbm93JyAgICAnZmVtbXMnCiAgZXh0 Y2hlY2sgJF8zZG5vd2V4dCAnM2Rub3dleHQnICdwc3dhcGQgJSVtbTAsICUlbW0wJwogIGV4dGNo ZWNrICRfc3NlICAgICAgJ3NzZScgICAgICAneG9ycHMgJSV4bW0wLCAlJXhtbTAnIHx8IF9nY2Mz X2V4dD0iJF9nY2MzX2V4dCAtbW5vLXNzZSIKICBleHRjaGVjayAkX3NzZTIgICAgICdzc2UyJyAg ICAgJ3hvcnBkICUleG1tMCwgJSV4bW0wJyB8fCBfZ2NjM19leHQ9IiRfZ2NjM19leHQgLW1uby1z c2UyIgogIGV4dGNoZWNrICRfc3NlMyAgICAgJ3NzZTMnICAgICAnYWRkc3VicHMgJSV4bW0wLCAl JXhtbTAnCiAgZXh0Y2hlY2sgJF9zc3NlMyAgICAnc3NzZTMnICAgICdwYWJzZCAlJXhtbTAsICUl eG1tMCcKICBleHRjaGVjayAkX3NzZTRfMSAgICdzc2U0XzEnICAgJ3BtYXhzYiAlJXhtbTAsICUl eG1tMCcKICBleHRjaGVjayAkX3NzZTRfMiAgICdzc2U0XzInICAgJ3BjbXBndHEgJSV4bW0wLCAl JXhtbTAnCiAgZXh0Y2hlY2sgJF9hdnggICAgICAnYXZ4JyAgICAgICd2cGFic3cgJSV4bW0wLCAl JXhtbTAnCiAgZXh0Y2hlY2sgJF9hdngyICAgICAnYXZ4MicgICAgICd2ZXh0cmFjdGkxMjggJDAs ICUleW1tMCwgJSV4bW0wJwogIGV4dGNoZWNrICRfeG9wICAgICAgJ3hvcCcgICAgICAndnBtYWNz ZGQgJSV4bW0wLCAlJXhtbTEsICUleG1tMiwgJSV4bW0zJwogIGV4dGNoZWNrICRfZm1hMyAgICAg J2ZtYTMnICAgICAndmZtYWRkMTMycHMgJSV5bW0wLCAlJXltbTEsICUleW1tMicKICBleHRjaGVj ayAkX2ZtYTQgICAgICdmbWE0JyAgICAgJ3ZmbWFkZHBzICUleW1tMCwgJSV5bW0xLCAlJXltbTIs ICUleW1tMycKICBleHRjaGVjayAkX2Ntb3YgICAgICdjbW92JyAgICAgJ2Ntb3ZiICUlZWF4LCAg JSVlYngnCgogIGVjaG9jaGVjayAibXRyciBzdXBwb3J0IgogIGlmIHRlc3QgIiRfbXRyciIgPSBr ZXJuZWxfY2hlY2sgOyB0aGVuCiAgICBfbXRycj0ieWVzIgogICAgX29wdGltaXppbmc9IiRfb3B0 aW1pemluZyBtdHJyIgogIGZpCiAgZWNob3JlcyAiJF9tdHJyIgoKICBpZiB0ZXN0ICIkX2djYzNf ZXh0IiAhPSAiIjsgdGhlbgogICAgIyBJZiB3ZSBoYWQgdG8gZGlzYWJsZSBTU0UvU1NFMiBiZWNh dXNlIHRoZSBhY3RpdmUga2VybmVsIGRvZXMgbm90CiAgICAjIHN1cHBvcnQgdGhpcyBpbnN0cnVj dGlvbiBzZXQgZXh0ZW5zaW9uLCB3ZSBhbHNvIGhhdmUgdG8gdGVsbAogICAgIyBnY2MzIHRvIG5v dCBnZW5lcmF0ZSBTU0UvU1NFMiBpbnN0cnVjdGlvbnMgZm9yIG5vcm1hbCBDIGNvZGUuCiAgICBj ZmxhZ19jaGVjayAkX21hcmNoICRfZ2NjM19leHQgJiYgX21hcmNoPSIkX21hcmNoICRfZ2NjM19l eHQiCiAgZmkKCmZpCgoKZGVmX2Zhc3RfNjRiaXQ9JyNkZWZpbmUgSEFWRV9GQVNUXzY0QklUIDAn CmRlZl9mYXN0X3VuYWxpZ25lZD0nI2RlZmluZSBIQVZFX0ZBU1RfVU5BTElHTkVEIDAnCmRlZl9h dl9mYXN0X3VuYWxpZ25lZD0nI2RlZmluZSBBVl9IQVZFX0ZBU1RfVU5BTElHTkVEIDAnCmRlZl9s b2NhbF9hbGlnbmVkXzg9JyNkZWZpbmUgSEFWRV9MT0NBTF9BTElHTkVEXzggMCcKZGVmX2xvY2Fs X2FsaWduZWRfMTY9JyNkZWZpbmUgSEFWRV9MT0NBTF9BTElHTkVEXzE2IDAnCmRlZl9sb2NhbF9h bGlnbmVkXzMyPScjZGVmaW5lIEhBVkVfTE9DQUxfQUxJR05FRF8zMiAwJwphcmNoX2FsbD0nWDg2 IElBNjQgU1BBUkMgQVJNIEFWUjMyIFNINCBQUEMgQUxQSEEgTUlQUyBQQV9SSVNDIFMzOTAgUzM5 MFggVkFYIEJGSU4gWFRFTlNBIFRPTUkgR0VORVJJQyBBQVJDSDY0JwpzdWJhcmNoX2FsbD0nWDg2 XzMyIFg4Nl82NCBQUEM2NCcKY2FzZSAiJGhvc3RfYXJjaCIgaW4KICBpWzMtOV04Nnx4ODZ8eDg2 cGN8azV8azZ8azYtMnxrNi0zfHBlbnRpdW0qfGF0aGxvbip8aTU4Ni1pNjg2KQogIGFyY2g9J3g4 NicKICBzdWJhcmNoPSd4ODZfMzInCiAgZGVmX2Zhc3RfdW5hbGlnbmVkPScjZGVmaW5lIEhBVkVf RkFTVF9VTkFMSUdORUQgMScKICBkZWZfYXZfZmFzdF91bmFsaWduZWQ9JyNkZWZpbmUgQVZfSEFW RV9GQVNUX1VOQUxJR05FRCAxJwogIGRlZl9sb2NhbF9hbGlnbmVkXzg9JyNkZWZpbmUgSEFWRV9M T0NBTF9BTElHTkVEXzggMScKICBkZWZfbG9jYWxfYWxpZ25lZF8xNj0nI2RlZmluZSBIQVZFX0xP Q0FMX0FMSUdORURfMTYgMScKICBkZWZfbG9jYWxfYWxpZ25lZF8zMj0nI2RlZmluZSBIQVZFX0xP Q0FMX0FMSUdORURfMzIgMScKICBpcHJvYz00ODYKICBwcm9jPWk0ODYKCgogIGlmIHRlc3QgIiRf cnVudGltZV9jcHVkZXRlY3Rpb24iID0gbm8gOyB0aGVuCiAgY2FzZSAiJHB2ZW5kb3IiIGluCiAg QXV0aGVudGljQU1EKQogICAgY2FzZSAiJHBmYW1pbHkiIGluCiAgICAzKSBwcm9jPWkzODYgaXBy b2M9Mzg2IDs7CiAgICA0KSBwcm9jPWk0ODYgaXByb2M9NDg2IDs7CiAgICA1KSBpcHJvYz01ODYg ICAgICAgIyBMR0I6IG1vZGVscyBhcmU6IEs1L1NTQTUgSzUgSzUgSzUgPyA/IEs2IEs2IEs2LTIg SzYtMwogICAgICAgICMgSzYgbW9kZWwgMTMgYXJlIHRoZSBLNi0yKyBhbmQgSzYtSUlJKywgb25s eSBkaWZmZXJpbmcgaW4gY2FjaGUgc2l6ZS4KICAgICAgICBpZiB0ZXN0ICIkcG1vZGVsIiAtZXEg OSAtbyAiJHBtb2RlbCIgLWVxIDEzOyB0aGVuCiAgICAgICAgICAgIHByb2M9azYtMwogICAgICAg IGVsaWYgdGVzdCAiJHBtb2RlbCIgLWVxIDUgLW8gIiRwbW9kZWwiIC1lcSAxMDsgdGhlbgogICAg ICAgICAgICBwcm9jPWdlb2RlCiAgICAgICAgZWxpZiB0ZXN0ICIkcG1vZGVsIiAtZ2UgODsgdGhl bgogICAgICAgICAgICBwcm9jPWs2LTIKICAgICAgICBlbGlmIHRlc3QgIiRwbW9kZWwiIC1nZSA2 OyB0aGVuCiAgICAgICAgICAgIHByb2M9azYKICAgICAgICBlbHNlCiAgICAgICAgICAgIHByb2M9 aTU4NgogICAgICAgIGZpCiAgICAgICAgOzsKICAgIDYpIGlwcm9jPTY4NgogICAgICAgICMgSXQn cyBhIGJpdCBkaWZmaWN1bHQgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHR5cGUgb2YgRmFtaWx5 IDYKICAgICAgICAjIEFNRCBDUFVzIGp1c3QgZnJvbSB0aGVpciBzaWduYXR1cmUuIEluc3RlYWQs IHdlIGNoZWNrIGRpcmVjdGx5CiAgICAgICAgIyB3aGV0aGVyIGl0IHN1cHBvcnRzIFNTRS4KICAg ICAgICBpZiB0ZXN0ICIkX3NzZSIgPSB5ZXM7IHRoZW4KICAgICAgICAgICAgIyBnY2MgdHJlYXRz IGF0aGxvbi14cCwgYXRobG9uLTQgYW5kIGF0aGxvbi1tcCBzaW1pbGFybHkuCiAgICAgICAgICAg IHByb2M9YXRobG9uLXhwCiAgICAgICAgZWxzZQogICAgICAgICAgICAjIEFnYWluLCBnY2MgdHJl YXRzIGF0aGxvbiBhbmQgYXRobG9uLXRiaXJkIHNpbWlsYXJseS4KICAgICAgICAgICAgcHJvYz1h dGhsb24KICAgICAgICBmaQogICAgICAgIDs7CiAgICAxNSkgaXByb2M9Njg2CiAgICAgICAgIyBr OCBDUFUgdHlwZSBvbmx5IHN1cHBvcnRlZCBpbiBnY2MgPj0gMy40LjAsIGJ1dCB0aGF0IHdpbGwg YmUKICAgICAgICAjIGNhdWdodCBhbmQgcmVtZWRpZWQgaW4gdGhlIG9wdGltaXphdGlvbiB0ZXN0 cyBiZWxvdy4KICAgICAgICBwcm9jPWs4CiAgICAgICAgOzsKCiAgICAqKSBwcm9jPWFtZGZhbTEw IGlwcm9jPTY4NgogICAgICAgIHRlc3QgJF9mYXN0X2NseiA9ICJhdXRvIiAmJiBfZmFzdF9jbHo9 eWVzCiAgICAgICAgOzsKICAgIGVzYWMKICAgIDs7CiAgR2VudWluZUludGVsKQogICAgY2FzZSAi JHBmYW1pbHkiIGluCiAgICAzKSBwcm9jPWkzODYgaXByb2M9Mzg2IDs7CiAgICA0KSBwcm9jPWk0 ODYgaXByb2M9NDg2IDs7CiAgICA1KSBpcHJvYz01ODYKICAgICAgICBpZiB0ZXN0ICIkcG1vZGVs IiAtZXEgNCB8fCB0ZXN0ICIkcG1vZGVsIiAtZXEgODsgdGhlbgogICAgICAgICAgICBwcm9jPXBl bnRpdW0tbW14ICMgNCBpcyBkZXNrdG9wLCA4IGlzIG1vYmlsZQogICAgICAgIGVsc2UKICAgICAg ICAgICAgcHJvYz1pNTg2CiAgICAgICAgZmkKICAgICAgICA7OwogICAgNikgaXByb2M9Njg2CiAg ICAgICAgaWYgdGVzdCAiJHBtb2RlbCIgLWVxIDI4IC1vICIkcG1vZGVsIiAtZXEgMzggLW8gIiRw bW9kZWwiIC1lcSA1NDsgdGhlbgogICAgICAgICAgICBwcm9jPWF0b20KICAgICAgICBlbGlmIHRl c3QgIiRwbW9kZWwiIC1nZSAxNTsgdGhlbgogICAgICAgICAgICBwcm9jPWNvcmUyCiAgICAgICAg ZWxpZiB0ZXN0ICIkcG1vZGVsIiAtZXEgOSAtbyAiJHBtb2RlbCIgLWdlIDEzOyB0aGVuCiAgICAg ICAgICAgIHByb2M9cGVudGl1bS1tCiAgICAgICAgZWxpZiB0ZXN0ICIkcG1vZGVsIiAtZ2UgNzsg dGhlbgogICAgICAgICAgICBwcm9jPXBlbnRpdW0zCiAgICAgICAgZWxpZiB0ZXN0ICIkcG1vZGVs IiAtZ2UgMzsgdGhlbgogICAgICAgICAgICBwcm9jPXBlbnRpdW0yCiAgICAgICAgZWxzZQogICAg ICAgICAgICBwcm9jPWk2ODYKICAgICAgICBmaQogICAgICAgIHRlc3QgJF9mYXN0X2NseiA9ICJh dXRvIiAmJiBfZmFzdF9jbHo9eWVzCiAgICAgICAgOzsKICAgIDE1KSBpcHJvYz02ODYKICAgICAg ICAjIEEgbm9jb25hIGluIDMyLWJpdCBtb2RlIGhhcyBubyBtb3JlIGNhcGFiaWxpdGllcyB0aGFu IGEgcHJlc2NvdHQuCiAgICAgICAgaWYgdGVzdCAiJHBtb2RlbCIgLWdlIDM7IHRoZW4KICAgICAg ICAgICAgcHJvYz1wcmVzY290dAogICAgICAgIGVsc2UKICAgICAgICAgICAgcHJvYz1wZW50aXVt NAogICAgICAgICAgICB0ZXN0ICRfZmFzdF9jbHogPSAiYXV0byIgJiYgX2Zhc3RfY2x6PXllcwog ICAgICAgIGZpCiAgICAgICAgdGVzdCAkX2Zhc3RfY21vdiA9ICJhdXRvIiAmJiBfZmFzdF9jbW92 PW5vCiAgICAgICAgOzsKICAgICopIHByb2M9cHJlc2NvdHQgaXByb2M9Njg2IDs7CiAgICBlc2Fj CiAgICA7OwogIENlbnRhdXJIYXVscykKICAgIGNhc2UgIiRwZmFtaWx5IiBpbgogICAgNSkgaXBy b2M9NTg2CiAgICAgICAgaWYgdGVzdCAiJHBtb2RlbCIgLWdlIDg7IHRoZW4KICAgICAgICAgICAg cHJvYz13aW5jaGlwMgogICAgICAgIGVsaWYgdGVzdCAiJHBtb2RlbCIgLWdlIDQ7IHRoZW4KICAg ICAgICAgICAgcHJvYz13aW5jaGlwLWM2CiAgICAgICAgZWxzZQogICAgICAgICAgICBwcm9jPWk1 ODYKICAgICAgICBmaQogICAgICAgIDs7CiAgICA2KSBpcHJvYz02ODYKICAgICAgICBpZiB0ZXN0 ICIkcG1vZGVsIiAtZ2UgOTsgdGhlbgogICAgICAgICAgICBwcm9jPWMzLTIKICAgICAgICBlbHNl CiAgICAgICAgICAgIHByb2M9YzMKICAgICAgICAgICAgaXByb2M9NTg2CiAgICAgICAgZmkKICAg ICAgICA7OwogICAgKikgcHJvYz1pNjg2IGlwcm9jPWk2ODYgOzsKICAgIGVzYWMKICAgIDs7CiAg dW5rbm93bikKICAgIGNhc2UgIiRwZmFtaWx5IiBpbgogICAgMykgcHJvYz1pMzg2IGlwcm9jPTM4 NiA7OwogICAgNCkgcHJvYz1pNDg2IGlwcm9jPTQ4NiA7OwogICAgKikgcHJvYz1pNTg2IGlwcm9j PTU4NiA7OwogICAgZXNhYwogICAgOzsKICAqKQogICAgcHJvYz1pNTg2IGlwcm9jPTU4NiA7Owog IGVzYWMKICB0ZXN0ICRfZmFzdF9jbHogPSAiYXV0byIgJiYgX2Zhc3RfY2x6PW5vCiAgZmkgIyB0 ZXN0ICIkX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uIiA9IG5vCgoKICAgICMgY2hlY2sgdGhhdCBnY2Mg c3VwcG9ydHMgb3VyIENQVSwgaWYgbm90LCBmYWxsIGJhY2sgdG8gZWFybGllciBvbmVzCiAgICAj IExHQjogY2hlY2sgLW1jcHUgYW5kIC1tYXJjaCBzd2l0aGluZyBzdGVwIGJ5IHN0ZXAgd2l0aCBl bmFibGluZwogICAgIyB0byBmYWxsIGJhY2sgdGlsbCAzODYuCgogICAgIyBnY2MgPj0gMy40LjAg IGRvZXNuJ3Qgc3VwcG9ydCAtbWNwdSwgd2UgaGF2ZSB0byB1c2UgLW10dW5lIGluc3RlYWQKCiAg ICBpZiBbICIkY2NfdmVuZG9yIiA9ICJnbnUiIF0gJiYgKFsgIiRfY2NfbWFqb3IiIC1ndCAzIF0g fHwgKCBbICIkX2NjX21ham9yIiA9IDMgXSAmJiBbICIkX2NjX21pbm9yIiAtZ2UgNCBdKSkgOyB0 aGVuCiAgICAgICAgY3B1b3B0PS1tdHVuZQogICAgZWxzZQogICAgICAgIGNwdW9wdD0tbWNwdQog ICAgZmkKCiAgICBlY2hvY2hlY2sgIkdDQyAmIENQVSBvcHRpbWl6YXRpb24gYWJpbGl0aWVzIgog IGlmIHRlc3QgIiRfcnVudGltZV9jcHVkZXRlY3Rpb24iID0gbm8gOyB0aGVuCiAgICBpZiB0ZXN0 ICRjY192ZW5kb3IgIT0gImludGVsIiAmJiB0ZXN0ICRjY192ZW5kb3IgIT0gImNsYW5nIiA7IHRo ZW4KICAgICAgY2ZsYWdfY2hlY2sgLW1hcmNoPW5hdGl2ZSAmJiBwcm9jPW5hdGl2ZQogICAgZmkK ICAgIGlmIHRlc3QgIiRwcm9jIiA9ICJhbWRmYW0xMCI7IHRoZW4KICAgICAgY2ZsYWdfY2hlY2sg LW1hcmNoPSRwcm9jICRjcHVvcHQ9JHByb2MgfHwgcHJvYz1rOAogICAgZmkKICAgIGlmIHRlc3Qg IiRwcm9jIiA9ICJrOCI7IHRoZW4KICAgICAgY2ZsYWdfY2hlY2sgLW1hcmNoPSRwcm9jICRjcHVv cHQ9JHByb2MgfHwgcHJvYz1hdGhsb24teHAKICAgIGZpCiAgICBpZiB0ZXN0ICIkcHJvYyIgPSAi YXRobG9uLXhwIjsgdGhlbgogICAgICBjZmxhZ19jaGVjayAtbWFyY2g9JHByb2MgJGNwdW9wdD0k cHJvYyB8fCBwcm9jPWF0aGxvbgogICAgZmkKICAgIGlmIHRlc3QgIiRwcm9jIiA9ICJrNi0zIiB8 fCB0ZXN0ICIkcHJvYyIgPSAiazYtMiI7IHRoZW4KICAgICAgY2ZsYWdfY2hlY2sgLW1hcmNoPSRw cm9jICRjcHVvcHQ9JHByb2MgIHx8IHByb2M9azYKICAgIGZpCiAgICBpZiB0ZXN0ICIkcHJvYyIg PSAiazYiIHx8IHRlc3QgIiRwcm9jIiA9ICJjMyI7IHRoZW4KICAgICAgaWYgISBjZmxhZ19jaGVj ayAtbWFyY2g9JHByb2MgJGNwdW9wdD0kcHJvYzsgdGhlbgogICAgICAgIGlmIGNmbGFnX2NoZWNr IC1tYXJjaD1pNTg2ICRjcHVvcHQ9aTY4NjsgdGhlbgogICAgICAgICAgcHJvYz1pNTg2LWk2ODYK ICAgICAgICBlbHNlCiAgICAgICAgICBwcm9jPWk1ODYKICAgICAgICBmaQogICAgICBmaQogICAg ZmkKICAgIGlmIHRlc3QgIiRwcm9jIiA9ICJhdG9tIiA7IHRoZW4KICAgICAgY2ZsYWdfY2hlY2sg LW1hcmNoPSRwcm9jICRjcHVvcHQ9JHByb2MgfHwgcHJvYz1jb3JlMgogICAgZmkKICAgIGlmIHRl c3QgIiRwcm9jIiA9ICJwcmVzY290dCIgOyB0aGVuCiAgICAgIGNmbGFnX2NoZWNrIC1tYXJjaD0k cHJvYyAkY3B1b3B0PSRwcm9jIHx8IHByb2M9cGVudGl1bTQKICAgIGZpCiAgICBpZiB0ZXN0ICIk cHJvYyIgPSAiY29yZTIiIDsgdGhlbgogICAgICBjZmxhZ19jaGVjayAtbWFyY2g9JHByb2MgJGNw dW9wdD0kcHJvYyB8fCBwcm9jPXBlbnRpdW0tbQogICAgZmkKICAgIGlmIHRlc3QgIiRwcm9jIiA9 ICJwZW50aXVtNCIgfHwgdGVzdCAiJHByb2MiID0gInBlbnRpdW0tbSIgfHwgdGVzdCAiJHByb2Mi ID0gInBlbnRpdW0zIiB8fCB0ZXN0ICIkcHJvYyIgPSAicGVudGl1bTIiIHx8IHRlc3QgIiRwcm9j IiA9ICJhdGhsb24iIHx8IHRlc3QgIiRwcm9jIiA9ICJjMy0yIiB8fCB0ZXN0ICIkcHJvYyIgPSAi Z2VvZGUiOyB0aGVuCiAgICAgIGNmbGFnX2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1b3B0PSRwcm9j ICB8fCBwcm9jPWk2ODYKICAgIGZpCiAgICBpZiB0ZXN0ICIkcHJvYyIgPSAiaTY4NiIgfHwgdGVz dCAiJHByb2MiID0gInBlbnRpdW0tbW14IiB8fCB0ZXN0ICIkcHJvYyIgPSAid2luY2hpcC1jNiIg fHwgdGVzdCAiJHByb2MiID0gIndpbmNoaXAyIjsgdGhlbgogICAgICBjZmxhZ19jaGVjayAtbWFy Y2g9JHByb2MgJGNwdW9wdD0kcHJvYyAgfHwgcHJvYz1pNTg2CiAgICBmaQogICAgaWYgdGVzdCAi JHByb2MiID0gImk1ODYiOyB0aGVuCiAgICAgIGNmbGFnX2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1 b3B0PSRwcm9jICB8fCBwcm9jPWk0ODYKICAgIGZpCiAgICBpZiB0ZXN0ICIkcHJvYyIgPSAiaTQ4 NiIgOyB0aGVuCiAgICAgIGNmbGFnX2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1b3B0PSRwcm9jICB8 fCBwcm9jPWkzODYKICAgIGZpCiAgICBpZiB0ZXN0ICIkcHJvYyIgPSAiaTM4NiIgOyB0aGVuCiAg ICAgIGNmbGFnX2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1b3B0PSRwcm9jICB8fCBwcm9jPWVycm9y CiAgICBmaQogICAgaWYgdGVzdCAiJHByb2MiID0gImVycm9yIiA7IHRoZW4KICAgICAgICBlY2hv cmVzICJDUFUgb3B0aW1pemF0aW9uIGRpc2FibGVkLiBDUFUgbm90IHJlY29nbml6ZWQgb3IgeW91 ciBjb21waWxlciBpcyB0b28gb2xkLiIKICAgICAgX21jcHU9IiIKICAgICAgX21hcmNoPSIiCiAg ICAgIF9vcHRpbWl6aW5nPSIiCiAgICBlbGlmIHRlc3QgIiRwcm9jIiA9ICJpNTg2LWk2ODYiOyB0 aGVuCiAgICAgIF9tYXJjaD0iLW1hcmNoPWk1ODYiCiAgICAgIF9tY3B1PSIkY3B1b3B0PWk2ODYi CiAgICAgIF9vcHRpbWl6aW5nPSIkcHJvYyIKICAgIGVsc2UKICAgICAgX21hcmNoPSItbWFyY2g9 JHByb2MiCiAgICAgIF9tY3B1PSIkY3B1b3B0PSRwcm9jIgogICAgICBfb3B0aW1pemluZz0iJHBy b2MiCiAgICBmaQogIGVsc2UgIyBpZiB0ZXN0ICIkX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uIiA9IG5v CiAgICBfbWNwdT0iJGNwdW9wdD1nZW5lcmljIgogICAgIyBhdCBsZWFzdCBpNDg2IHJlcXVpcmVk LCBmb3IgYnN3YXAgaW5zdHJ1Y3Rpb24KICAgIF9tYXJjaD0iLW1hcmNoPWk0ODYiCiAgICBjZmxh Z19jaGVjayAkX21jcHUgfHwgX21jcHU9IiRjcHVvcHQ9aTY4NiIKICAgIGNmbGFnX2NoZWNrICRf bWNwdSB8fCBfbWNwdT0iIgogICAgY2ZsYWdfY2hlY2sgJF9tYXJjaCAkX21jcHUgfHwgX21hcmNo PSIiCiAgZmkKCiAgICAjIyBHYWJ1Y2lubyA6IC0tdGFyZ2V0IHRha2VzIGVmZmVjdCBoZXJlICho b3BlZnVsbHkuLi4pIGJ5IG92ZXJ3cml0aW5nCiAgICAjIyAgICAgICAgICAgICBhdXRvZGV0ZWN0 ZWQgbWNwdS9tYXJjaCBwYXJhbWV0ZXJzCiAgICBpZiB0ZXN0ICIkX3RhcmdldCIgOyB0aGVuCiAg ICAgICMgVE9ETzogaXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNoZWNrIEdDQyBhbmQgZmFsbCBi YWNrIGluIGFsbCBjYXNlcwogICAgICBpZiB0ZXN0ICIkaG9zdF9hcmNoIiA9ICJpNTg2LWk2ODYi OyB0aGVuCiAgICAgICAgX21hcmNoPSItbWFyY2g9aTU4NiIKICAgICAgICBfbWNwdT0iJGNwdW9w dD1pNjg2IgogICAgICBlbHNlCiAgICAgICAgX21hcmNoPSItbWFyY2g9JGhvc3RfYXJjaCIKICAg ICAgICBfbWNwdT0iJGNwdW9wdD0kaG9zdF9hcmNoIgogICAgICBmaQoKICAgICAgcHJvYz0iJGhv c3RfYXJjaCIKCiAgICAgIGNhc2UgIiRwcm9jIiBpbgogICAgICAgIGkzODYpIGlwcm9jPTM4NiA7 OwogICAgICAgIGk0ODYpIGlwcm9jPTQ4NiA7OwogICAgICAgIGk1ODZ8azV8azZ8azYtMnxrNi0z fHBlbnRpdW18cGVudGl1bS1tbXgpIGlwcm9jPTU4NiA7OwogICAgICAgIGk2ODZ8YXRobG9uKnxw ZW50aXVtKikgaXByb2M9Njg2IDs7CiAgICAgICAgKikgaXByb2M9NTg2IDs7CiAgICAgIGVzYWMK ICAgIGZpCgogICAgaWYgdGVzdCAkX2Ntb3YgPSAieWVzIiAmJiB0ZXN0ICRfZmFzdF9jbW92ID0g ImF1dG8iIDsgdGhlbgogICAgICAgIF9mYXN0X2Ntb3Y9InllcyIKICAgIGVsc2UKICAgICAgICBf ZmFzdF9jbW92PSJubyIKICAgIGZpCiAgICB0ZXN0ICRfZmFzdF9jbHogPSAiYXV0byIgJiYgX2Zh c3RfY2x6PXllcwoKICAgIGVjaG9yZXMgIiRwcm9jIgogICAgOzsKCiAgaWE2NCkKICAgIGFyY2g9 J2lhNjQnCiAgICBkZWZfZmFzdF82NGJpdD0nI2RlZmluZSBIQVZFX0ZBU1RfNjRCSVQgMScKICAg IGlwcm9jPSdpYTY0JwogICAgOzsKCiAgeDg2XzY0fGFtZDY0KQogICAgYXJjaD0neDg2JwogICAg c3ViYXJjaD0neDg2XzY0JwogICAgZGVmX2Zhc3RfdW5hbGlnbmVkPScjZGVmaW5lIEhBVkVfRkFT VF9VTkFMSUdORUQgMScKICAgIGRlZl9hdl9mYXN0X3VuYWxpZ25lZD0nI2RlZmluZSBBVl9IQVZF X0ZBU1RfVU5BTElHTkVEIDEnCiAgICBkZWZfbG9jYWxfYWxpZ25lZF84PScjZGVmaW5lIEhBVkVf TE9DQUxfQUxJR05FRF84IDEnCiAgICBkZWZfbG9jYWxfYWxpZ25lZF8xNj0nI2RlZmluZSBIQVZF X0xPQ0FMX0FMSUdORURfMTYgMScKICAgIGRlZl9sb2NhbF9hbGlnbmVkXzMyPScjZGVmaW5lIEhB VkVfTE9DQUxfQUxJR05FRF8zMiAxJwogICAgZGVmX2Zhc3RfNjRiaXQ9JyNkZWZpbmUgSEFWRV9G QVNUXzY0QklUIDEnCiAgICBpcHJvYz0neDg2XzY0JwoKICAgICMgZ2NjID49IDMuNC4wICBkb2Vz bid0IHN1cHBvcnQgLW1jcHUsIHdlIGhhdmUgdG8gdXNlIC1tdHVuZSBpbnN0ZWFkCiAgICBpZiB0 ZXN0ICIkY2NfdmVuZG9yIiA9ICJnbnUiICYmIHRlc3QgIiRfY2NfbWFqb3IiIC1ndCAzIC1vICIk X2NjX21ham9yIiAtZXEgMyAtYSAiJF9jY19taW5vciIgLWdlIDQgOyB0aGVuCiAgICAgICAgY3B1 b3B0PS1tdHVuZQogICAgZWxzZQogICAgICAgIGNwdW9wdD0tbWNwdQogICAgZmkKICAgIGlmIHRl c3QgIiRfcnVudGltZV9jcHVkZXRlY3Rpb24iID0gbm8gOyB0aGVuCiAgICAgIGNhc2UgIiRwdmVu ZG9yIiBpbgogICAgICBBdXRoZW50aWNBTUQpCiAgICAgICAgY2FzZSAiJHBmYW1pbHkiIGluCiAg ICAgICAgMTUpIHByb2M9azgKICAgICAgICAgIHRlc3QgJF9mYXN0X2NseiA9ICJhdXRvIiAmJiBf ZmFzdF9jbHo9bm8KICAgICAgICAgIDs7CiAgICAgICAgKikgcHJvYz1hbWRmYW0xMDs7CiAgICAg ICAgZXNhYwogICAgICAgIDs7CiAgICAgIEdlbnVpbmVJbnRlbCkKICAgICAgICBjYXNlICIkcGZh bWlseSIgaW4KICAgICAgICA2KQogICAgICAgICAgaWYgdGVzdCAiJHBtb2RlbCIgLWVxIDI4IC1v ICIkcG1vZGVsIiAtZXEgMzggLW8gIiRwbW9kZWwiIC1lcSA1NDsgdGhlbgogICAgICAgICAgICBw cm9jPWF0b20KICAgICAgICAgIGVsaWYgdGVzdCAiJHBtb2RlbCIgLWdlIDQyOyB0aGVuCiAgICAg ICAgICAgIHByb2M9Y29yZWk3LWF2eAogICAgICAgICAgZWxpZiB0ZXN0ICIkcG1vZGVsIiAtZ2Ug MjY7IHRoZW4KICAgICAgICAgICAgcHJvYz1jb3JlaTcKICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgcHJvYz1jb3JlMgogICAgICAgICAgZmkKICAgICAgICAgIDs7CiAgICAgICAgKikKICAgICAg ICAgICMgNjQtYml0IHByZXNjb3R0cyBleGlzdCwgYnV0IGFzIGZhciBhcyBHQ0MgaXMgY29uY2Vy bmVkIHRoZXkKICAgICAgICAgICMgaGF2ZSB0aGUgc2FtZSBjYXBhYmlsaXRpZXMgYXMgYSBub2Nv bmEuCiAgICAgICAgICBwcm9jPW5vY29uYQogICAgICAgICAgdGVzdCAkX2Zhc3RfY21vdiA9ICJh dXRvIiAmJiBfZmFzdF9jbW92PW5vCiAgICAgICAgICB0ZXN0ICRfZmFzdF9jbHogPSAiYXV0byIg JiYgX2Zhc3RfY2x6PW5vCiAgICAgICAgICA7OwogICAgICAgIGVzYWMKICAgICAgICA7OwogICAg ICAqKQogICAgICAgIHByb2M9ZXJyb3I7OwogICAgICBlc2FjCiAgICBmaSAjIHRlc3QgIiRfcnVu dGltZV9jcHVkZXRlY3Rpb24iID0gbm8KCiAgICBlY2hvY2hlY2sgIkdDQyAmIENQVSBvcHRpbWl6 YXRpb24gYWJpbGl0aWVzIgogICAgIyBUaGlzIGlzIGEgc3RyaXBwZWQtZG93biB2ZXJzaW9uIG9m IHRoZSBpMzg2IGZhbGxiYWNrLgogICAgaWYgdGVzdCAiJF9ydW50aW1lX2NwdWRldGVjdGlvbiIg PSBubyA7IHRoZW4KICAgICAgaWYgdGVzdCAkY2NfdmVuZG9yICE9ICJpbnRlbCIgJiYgdGVzdCAk Y2NfdmVuZG9yICE9ICJjbGFuZyIgOyB0aGVuCiAgICAgICAgY2ZsYWdfY2hlY2sgLW1hcmNoPW5h dGl2ZSAmJiBwcm9jPW5hdGl2ZQogICAgICBmaQogICAgICAjIC0tLSBBTUQgcHJvY2Vzc29ycyAt LS0KICAgICAgaWYgdGVzdCAiJHByb2MiID0gImFtZGZhbTEwIjsgdGhlbgogICAgICAgIGNmbGFn X2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1b3B0PSRwcm9jIHx8IHByb2M9azgKICAgICAgZmkKICAg ICAgaWYgdGVzdCAiJHByb2MiID0gIms4IjsgdGhlbgogICAgICAgIGNmbGFnX2NoZWNrIC1tYXJj aD0kcHJvYyAkY3B1b3B0PSRwcm9jIHx8IHByb2M9YXRobG9uLXhwCiAgICAgIGZpCiAgICAgICMg VGhpcyB3aWxsIGZhaWwgaWYgZ2NjIHZlcnNpb24gPCAzLjMsIHdoaWNoIGlzIE9LIGJlY2F1c2Ug ZWFybGllcgogICAgICAjIHZlcnNpb25zIGRvbid0IHJlYWxseSBzdXBwb3J0IDY0LWJpdCBvbiBh bWQ2NC4KICAgICAgIyBJcyB0aGlzIGEgdmFsaWQgYXNzdW1wdGlvbj8gLUNvcmV5CiAgICAgIGlm IHRlc3QgIiRwcm9jIiA9ICJhdGhsb24teHAiOyB0aGVuCiAgICAgICAgY2ZsYWdfY2hlY2sgLW1h cmNoPSRwcm9jICRjcHVvcHQ9JHByb2MgfHwgcHJvYz1lcnJvcgogICAgICBmaQogICAgICAjIC0t LSBJbnRlbCBwcm9jZXNzb3JzIC0tLQogICAgICBpZiB0ZXN0ICIkcHJvYyIgPSAiYXRvbSIgfHwg dGVzdCAiJHByb2MiID0gImNvcmVpNy1hdngiIHx8IHRlc3QgIiRwcm9jIiA9ICJjb3JlaTciOyB0 aGVuCiAgICAgICAgY2ZsYWdfY2hlY2sgLW1hcmNoPSRwcm9jICRjcHVvcHQ9JHByb2MgfHwgcHJv Yz1jb3JlMgogICAgICBmaQogICAgICBpZiB0ZXN0ICIkcHJvYyIgPSAiY29yZTIiOyB0aGVuCiAg ICAgICAgY2ZsYWdfY2hlY2sgLW1hcmNoPSRwcm9jICRjcHVvcHQ9JHByb2MgfHwgcHJvYz14ODYt NjQKICAgICAgZmkKICAgICAgaWYgdGVzdCAiJHByb2MiID0gIng4Ni02NCI7IHRoZW4KICAgICAg ICBjZmxhZ19jaGVjayAtbWFyY2g9JHByb2MgJGNwdW9wdD0kcHJvYyB8fCBwcm9jPW5vY29uYQog ICAgICBmaQogICAgICBpZiB0ZXN0ICIkcHJvYyIgPSAibm9jb25hIjsgdGhlbgogICAgICAgIGNm bGFnX2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1b3B0PSRwcm9jIHx8IHByb2M9cGVudGl1bTQKICAg ICAgZmkKICAgICAgaWYgdGVzdCAiJHByb2MiID0gInBlbnRpdW00IjsgdGhlbgogICAgICAgIGNm bGFnX2NoZWNrIC1tYXJjaD0kcHJvYyAkY3B1b3B0PSRwcm9jIHx8IHByb2M9ZXJyb3IKICAgICAg ZmkKCiAgICAgIF9tYXJjaD0iLW1hcmNoPSRwcm9jIgogICAgICBfbWNwdT0iJGNwdW9wdD0kcHJv YyIKICAgICAgaWYgdGVzdCAiJHByb2MiID0gImVycm9yIiA7IHRoZW4KICAgICAgICBlY2hvcmVz ICJDUFUgb3B0aW1pemF0aW9uIGRpc2FibGVkLiBDUFUgbm90IHJlY29nbml6ZWQgb3IgeW91ciBj b21waWxlciBpcyB0b28gb2xkLiIKICAgICAgICBfbWNwdT0iIgogICAgICAgIF9tYXJjaD0iIgog ICAgICBmaQogICAgZWxzZSAjIGlmIHRlc3QgIiRfcnVudGltZV9jcHVkZXRlY3Rpb24iID0gbm8K ICAgICAgIyB4ODYtNjQgaXMgYW4gdW5kb2N1bWVudGVkIG9wdGlvbiwgYW4gaW50ZXJzZWN0aW9u IG9mIGs4IGFuZCBub2NvbmEuCiAgICAgIF9tYXJjaD0iLW1hcmNoPXg4Ni02NCIKICAgICAgX21j cHU9IiRjcHVvcHQ9Z2VuZXJpYyIKICAgICAgY2ZsYWdfY2hlY2sgJF9tY3B1IHx8IF9tY3B1PSJ4 ODYtNjQiCiAgICAgIGNmbGFnX2NoZWNrICRfbWNwdSB8fCBfbWNwdT0iIgogICAgICBjZmxhZ19j aGVjayAkX21hcmNoICRfbWNwdSB8fCBfbWFyY2g9IiIKICAgIGZpCgogICAgX29wdGltaXppbmc9 IiRwcm9jIgogICAgdGVzdCAkX2Zhc3RfY21vdiA9ICJhdXRvIiAmJiBfZmFzdF9jbW92PXllcwog ICAgdGVzdCAkX2Zhc3RfY2x6ID0gImF1dG8iICYmIF9mYXN0X2Nsej15ZXMKCiAgICBlY2hvcmVz ICIkcHJvYyIKICAgIDs7CgogIHNwYXJjfHNwYXJjNjQpCiAgICBhcmNoPSdzcGFyYycKICAgIGlw cm9jPSdzcGFyYycKICAgIGlmIHRlc3QgIiRob3N0X2FyY2giID0gInNwYXJjNjQiIDsgdGhlbgog ICAgICBfdmlzPSd5ZXMnCiAgICAgIHByb2M9J3VsdHJhc3BhcmMnCiAgICAgIGRlZl9mYXN0XzY0 Yml0PScjZGVmaW5lIEhBVkVfRkFTVF82NEJJVCAxJwogICAgZWxpZiBzdW5vcyA7IHRoZW4KICAg ICAgICBlY2hvY2hlY2sgIkNQVSB0eXBlIgogICAgICAgIGthcmNoPSQodW5hbWUgLW0pCiAgICAg ICAgY2FzZSAiJChlY2hvICRrYXJjaCkiIGluCiAgICAgICAgICAgIHN1bjQpIHByb2M9djcgOzsK ICAgICAgICAgICAgc3VuNGMpIHByb2M9djcgOzsKICAgICAgICAgICAgc3VuNGQpIHByb2M9djgg OzsKICAgICAgICAgICAgc3VuNG0pIHByb2M9djggOzsKICAgICAgICAgICAgc3VuNHUpIHByb2M9 dWx0cmFzcGFyYyBfdmlzPSd5ZXMnIDs7CiAgICAgICAgICAgIHN1bjR2KSBwcm9jPXY5IDs7CiAg ICAgICAgICAgICopIHByb2M9djggOzsKICAgICAgICBlc2FjCiAgICAgICAgZWNob3JlcyAiJHBy b2MiCiAgICBlbHNlCiAgICAgICAgcHJvYz12OAogICAgZmkKICAgIF9tY3B1PSItbWNwdT0kcHJv YyIKICAgIF9vcHRpbWl6aW5nPSIkcHJvYyIKICAgIDs7CgogIGFhcmNoNjQpCiAgICBhcmNoPSdh YXJjaDY0JwogICAgaXByb2M9J2FhcmNoNjQnCiAgICA7OwoKICBhcm0qKQogICAgYXJjaD0nYXJt JwogICAgaXByb2M9J2FybScKICAgIGRlZl9mYXN0X3VuYWxpZ25lZD0nI2RlZmluZSBIQVZFX0ZB U1RfVU5BTElHTkVEIDEnCiAgICBkZWZfYXZfZmFzdF91bmFsaWduZWQ9JyNkZWZpbmUgQVZfSEFW RV9GQVNUX1VOQUxJR05FRCAxJwogICAgZGVmX2xvY2FsX2FsaWduZWRfOD0nI2RlZmluZSBIQVZF X0xPQ0FMX0FMSUdORURfOCAxJwogICAgZGVmX2xvY2FsX2FsaWduZWRfMTY9JyNkZWZpbmUgSEFW RV9MT0NBTF9BTElHTkVEXzE2IDEnCiAgICBkZWZfbG9jYWxfYWxpZ25lZF8zMj0nI2RlZmluZSBI QVZFX0xPQ0FMX0FMSUdORURfMzIgMScKICAgIHRlc3QgJF9mYXN0X2NseiA9ICJhdXRvIiAmJiBf ZmFzdF9jbHo9eWVzCiAgICA7OwoKICBhdnIzMikKICAgIGFyY2g9J2F2cjMyJwogICAgZGVmX2Zh c3RfdW5hbGlnbmVkPScjZGVmaW5lIEhBVkVfRkFTVF9VTkFMSUdORUQgMScKICAgIGRlZl9hdl9m YXN0X3VuYWxpZ25lZD0nI2RlZmluZSBBVl9IQVZFX0ZBU1RfVU5BTElHTkVEIDEnCiAgICBpcHJv Yz0nYXZyMzInCiAgICB0ZXN0ICRfZmFzdF9jbHogPSAiYXV0byIgJiYgX2Zhc3RfY2x6PXllcwog ICAgOzsKCiAgc2h8c2g0KQogICAgYXJjaD0nc2g0JwogICAgaXByb2M9J3NoNCcKICAgIDs7Cgog IHBwYyp8cG93ZXJwYyopCiAgICBhcmNoPSdwcGMnCiAgICBkZWZfZGNiemw9JyNkZWZpbmUgSEFW RV9EQ0JaTCAwJwogICAgZGVmX3ZzeD0nI2RlZmluZSBIQVZFX1ZTWCAwJwogICAgZGVmX2Zhc3Rf dW5hbGlnbmVkPScjZGVmaW5lIEhBVkVfRkFTVF9VTkFMSUdORUQgMScKICAgIGRlZl9hdl9mYXN0 X3VuYWxpZ25lZD0nI2RlZmluZSBBVl9IQVZFX0ZBU1RfVU5BTElHTkVEIDEnCiAgICBkZWZfbG9j YWxfYWxpZ25lZF84PScjZGVmaW5lIEhBVkVfTE9DQUxfQUxJR05FRF84IDEnCiAgICBkZWZfbG9j YWxfYWxpZ25lZF8xNj0nI2RlZmluZSBIQVZFX0xPQ0FMX0FMSUdORURfMTYgMScKICAgIGRlZl9s b2NhbF9hbGlnbmVkXzMyPScjZGVmaW5lIEhBVkVfTE9DQUxfQUxJR05FRF8zMiAxJwogICAgaXBy b2M9J3BwYycKCiAgICBpZiB0ZXN0ICIkaG9zdF9hcmNoIiA9ICJwcGM2NCIgOyB0aGVuCiAgICAg IHN1YmFyY2g9J3BwYzY0JwogICAgICBkZWZfZmFzdF82NGJpdD0nI2RlZmluZSBIQVZFX0ZBU1Rf NjRCSVQgMScKICAgIGZpCiAgICBlY2hvY2hlY2sgIkNQVSB0eXBlIgogICAgY2FzZSAkc3lzdGVt X25hbWUgaW4KICAgICAgTGludXgpCiAgICAgICAgcHJvYz0kKCRfY3B1aW5mbyB8IGdyZXAgJ2Nw dScgfCBjdXQgLWQgJzonIC1mIDIgfCBjdXQgLWQgJywnIC1mIDEgfCBjdXQgLWIgMi0gfCBoZWFk IC1uIDEpCiAgICAgICAgaWYgdGVzdCAtbiAiJCgkX2NwdWluZm8gfCBncmVwIGFsdGl2ZWMpIjsg dGhlbgogICAgICAgICAgICB0ZXN0ICRfYWx0aXZlYyA9IGF1dG8gJiYgX2FsdGl2ZWM9eWVzCiAg ICAgICAgZmkKICAgICAgICA7OwogICAgICBEYXJ3aW4pCiAgICAgICAgcHJvYz0kKCRfY3B1aW5m byB8IGdyZXAgIlByb2Nlc3NvciB0eXBlIiB8IGN1dCAtZiAzIC1kICcgJyB8IHNlZCAncy9wcGMv LycpCiAgICAgICAgaWYgWyAkKHN5c2N0bCAtbiBody52ZWN0b3J1bml0KSAtZXEgMSAtbyBcCiAg ICAgICAgICAgICIkKHN5c2N0bCAtbiBody5vcHRpb25hbC5hbHRpdmVjIDI+IC9kZXYvbnVsbCki ID0gIjEiIF07IHRoZW4KICAgICAgICAgICAgdGVzdCAkX2FsdGl2ZWMgPSBhdXRvICYmIF9hbHRp dmVjPXllcwogICAgICAgIGZpCiAgICAgICAgOzsKICAgICAgTmV0QlNEKQogICAgICAgICMgb25s eSBnY2MgMy40IHdvcmtzIHJlbGlhYmx5IHdpdGggQWx0aVZlYyBjb2RlIHVuZGVyIE5ldEJTRAog ICAgICAgIGNhc2UgJGNjX3ZlcnNpb24gaW4KICAgICAgICAgICAgMip8My4wKnwzLjEqfDMuMip8 My4zKikKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICBp ZiBbICQoc3lzY3RsIC1uIG1hY2hkZXAuYWx0aXZlYykgLWVxIDEgXTsgdGhlbgogICAgICAgICAg ICAgICAgICAgIHRlc3QgJF9hbHRpdmVjID0gYXV0byAmJiBfYWx0aXZlYz15ZXMKICAgICAgICAg ICAgICAgIGZpCiAgICAgICAgICAgICAgICA7OwogICAgICAgIGVzYWMKICAgICAgICA7OwogICAg ICBBSVgpCiAgICAgICAgcHJvYz0kKCRfY3B1aW5mbyB8IGdyZXAgJ3R5cGUnIHwgY3V0IC1mIDIg LWQgJyAnIHwgc2VkICdzL1Bvd2VyUENfLy8nKQogICAgICAgIDs7CiAgICBlc2FjCiAgICBpZiB0 ZXN0ICIkX2FsdGl2ZWMiID0geWVzOyB0aGVuCiAgICAgICAgZWNob3JlcyAiJHByb2MgYWx0aXZl YyIKICAgIGVsc2UKICAgICAgICBfYWx0aXZlYz1ubwogICAgICAgIGVjaG9yZXMgIiRwcm9jIgog ICAgZmkKCiAgICBlY2hvY2hlY2sgIkdDQyAmIENQVSBvcHRpbWl6YXRpb24gYWJpbGl0aWVzIgoK ICAgIGlmIHRlc3QgLW4gIiRwcm9jIjsgdGhlbgogICAgICAgIGNhc2UgIiRwcm9jIiBpbgogICAg ICAgICAgICA2MDEpIF9tYXJjaD0nLW1jcHU9NjAxJyBfbWNwdT0nLW10dW5lPTYwMScgOzsKICAg ICAgICAgICAgNjAzKSBfbWFyY2g9Jy1tY3B1PTYwMycgX21jcHU9Jy1tdHVuZT02MDMnIDs7CiAg ICAgICAgICAgIDYwM2V8NjAzZXYpIF9tYXJjaD0nLW1jcHU9NjAzZScgX21jcHU9Jy1tdHVuZT02 MDNlJyA7OwogICAgICAgICAgICA2MDR8NjA0ZXw2MDRyfDYwNGV2KSBfbWFyY2g9Jy1tY3B1PTYw NCcgX21jcHU9Jy1tdHVuZT02MDQnIDs7CiAgICAgICAgICAgIDc0MHw3NDAvNzUwfDc0NS83NTUp IF9tYXJjaD0nLW1jcHU9NzQwJyBfbWNwdT0nLW10dW5lPTc0MCcgOzsKICAgICAgICAgICAgNzUw fDc1MENYKSBfbWFyY2g9Jy1tY3B1PTc1MCcgX21jcHU9Jy1tdHVuZT03NTAnIDs7CiAgICAgICAg ICAgIFBPV0VSKSAgX21hcmNoPSctbWNwdT1wb3dlcicgIF9tY3B1PSctbXR1bmU9cG93ZXInICA7 OwogICAgICAgICAgICBQT1dFUjIpIF9tYXJjaD0nLW1jcHU9cG93ZXIyJyBfbWNwdT0nLW10dW5l PXBvd2VyMicgOzsKICAgICAgICAgICAgUE9XRVIzKSBfbWFyY2g9Jy1tY3B1PXBvd2VyMycgX21j cHU9Jy1tdHVuZT1wb3dlcjMnIDs7CiAgICAgICAgICAgICopIDs7CiAgICAgICAgZXNhYwogICAg ICAgICMgZ2NjIDMuMSguMSkgYW5kIHVwIHN1cHBvcnRzIDc0MDAgYW5kIDc0NTAKICAgICAgICBp ZiB0ZXN0ICIkX2NjX21ham9yIiAtZ2UgIjMiICYmIHRlc3QgIiRfY2NfbWlub3IiIC1nZSAiMSIg fHwgdGVzdCAiJF9jY19tYWpvciIgLWdlICI0IjsgdGhlbgogICAgICAgICAgICBjYXNlICIkcHJv YyIgaW4KICAgICAgICAgICAgICAgIDc0MDAqfDc0MTAqKSBfbWFyY2g9Jy1tY3B1PTc0MDAnIF9t Y3B1PSctbXR1bmU9NzQwMCcgOzsKICAgICAgICAgICAgICAgIDc0NDcqfDc0NTAqfDc0NTUqKSBf bWFyY2g9Jy1tY3B1PTc0NTAnIF9tY3B1PSctbXR1bmU9NzQ1MCcgOzsKICAgICAgICAgICAgICAg ICopIDs7CiAgICAgICAgICAgIGVzYWMKICAgICAgICBmaQogICAgICAgICMgZ2NjIDMuMiBhbmQg dXAgc3VwcG9ydHMgOTcwCiAgICAgICAgaWYgdGVzdCAiJF9jY19tYWpvciIgLWdlICIzIiAmJiB0 ZXN0ICIkX2NjX21pbm9yIiAtZ2UgIjMiIHx8IHRlc3QgIiRfY2NfbWFqb3IiIC1nZSAiNCI7IHRo ZW4KICAgICAgICAgICAgY2FzZSAiJHByb2MiIGluCiAgICAgICAgICAgICAgICA5NzAqfFBQQzk3 MCopIF9tYXJjaD0nLW1jcHU9OTcwJyBfbWNwdT0nLW10dW5lPTk3MCcKICAgICAgICAgICAgICAg ICAgICAgIGRlZl9kY2J6bD0nI2RlZmluZSBIQVZFX0RDQlpMIDEnIDs7CiAgICAgICAgICAgICAg ICAqKSA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAgZmkKICAgICAgICAjIGdjYyAzLjMgYW5k IHVwIHN1cHBvcnRzIFBPV0VSNAogICAgICAgIGlmIHRlc3QgIiRfY2NfbWFqb3IiIC1nZSAiMyIg JiYgdGVzdCAiJF9jY19taW5vciIgLWdlICIzIiB8fCB0ZXN0ICIkX2NjX21ham9yIiAtZ2UgIjQi OyB0aGVuCiAgICAgICAgICAgIGNhc2UgIiRwcm9jIiBpbgogICAgICAgICAgICAgICAgUE9XRVI0 KSBfbWFyY2g9Jy1tY3B1PXBvd2VyNCcgX21jcHU9Jy1tdHVuZT1wb3dlcjQnIDs7CiAgICAgICAg ICAgICAgICAqKSA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAgZmkKICAgICAgICAjIGdjYyAz LjQgYW5kIHVwIHN1cHBvcnRzIDQ0MCoKICAgICAgICBpZiB0ZXN0ICIkX2NjX21ham9yIiAtZ2Ug IjMiICYmIHRlc3QgIiRfY2NfbWlub3IiIC1nZSAiNCIgfHwgdGVzdCAiJF9jY19tYWpvciIgLWdl ICI0IjsgdGhlbgogICAgICAgICAgICBjYXNlICIkcHJvYyIgaW4KICAgICAgICAgICAgICAgIDQ0 MEVQKikgX21hcmNoPSctbWNwdT00NDBmcCcgX21jcHU9Jy1tdHVuZT00NDBmcCcgOzsKICAgICAg ICAgICAgICAgIDQ0MEcqICkgX21hcmNoPSctbWNwdT00NDAnICAgX21jcHU9Jy1tdHVuZT00NDAn ICAgOzsKICAgICAgICAgICAgICAgICopIDs7CiAgICAgICAgICAgIGVzYWMKICAgICAgICBmaQog ICAgICAgICMgZ2NjIDQuMCBhbmQgdXAgc3VwcG9ydHMgUE9XRVI1CiAgICAgICAgaWYgdGVzdCAi JF9jY19tYWpvciIgLWdlICI0IjsgdGhlbgogICAgICAgICAgICBjYXNlICIkcHJvYyIgaW4KICAg ICAgICAgICAgICAgIFBPV0VSNSopIF9tYXJjaD0nLW1jcHU9cG93ZXI1JyBfbWNwdT0nLW10dW5l PXBvd2VyNScgOzsKICAgICAgICAgICAgICAgICopIDs7CiAgICAgICAgICAgIGVzYWMKICAgICAg ICBmaQogICAgZmkKCiAgICBpZiB0ZXN0IC1uICIkX21jcHUiOyB0aGVuCiAgICAgICAgX29wdGlt aXppbmc9JChlY2hvICRfbWNwdSB8IGN1dCAtYyA4LSkKICAgICAgICBlY2hvcmVzICIkX29wdGlt aXppbmciCiAgICBlbHNlCiAgICAgICAgZWNob3JlcyAibm9uZSIKICAgIGZpCgogICAgdGVzdCAk X2Zhc3RfY2x6ID0gImF1dG8iICYmIF9mYXN0X2Nsej15ZXMKCiAgICA7OwoKICBhbHBoYSopCiAg ICBhcmNoPSdhbHBoYScKICAgIGlwcm9jPSdhbHBoYScKCiAgICBlY2hvY2hlY2sgIkNQVSB0eXBl IgogICAgY2F0ID4gJFRNUEMgPDwgRU9GCmludCBtYWluKHZvaWQpIHsKICAgIHVuc2lnbmVkIGxv bmcgdmVyLCBtYXNrOwogICAgX19hc21fXyAoImltcGx2ZXIgJTAiIDogIj1yIiAodmVyKSk7CiAg ICBfX2FzbV9fICgiYW1hc2sgJTEsICUwIiA6ICI9ciIgKG1hc2spIDogInIiICgtMSkpOwogICAg cHJpbnRmKCIlbGQtJXhcbiIsIHZlciwgfm1hc2spOwogICAgcmV0dXJuIDA7Cn0KRU9GCiAgICAk X2NjIC1vICIkVE1QRVhFIiAiJFRNUEMiCiAgICBjYXNlICQoIiRUTVBFWEUiKSBpbgoKICAgICAg ICAwLTApICAgIHByb2M9ImV2NCI7ICAgX212aT0iMCI7OwogICAgICAgIDEtMCkgICAgcHJvYz0i ZXY1IjsgICBfbXZpPSIwIjs7CiAgICAgICAgMS0xKSAgICBwcm9jPSJldjU2IjsgIF9tdmk9IjAi OzsKICAgICAgICAxLTEwMSkgIHByb2M9InBjYTU2IjsgX212aT0iMSI7OwogICAgICAgIDItMzAz KSAgcHJvYz0iZXY2IjsgICBfbXZpPSIxIjs7CiAgICAgICAgMi0zMDcpICBwcm9jPSJldjY3Ijsg IF9tdmk9IjEiOzsKICAgICAgICAyLTEzMDcpIHByb2M9ImV2NjgiOyAgX212aT0iMSI7OwogICAg ZXNhYwogICAgZWNob3JlcyAiJHByb2MiCgogICAgZWNob2NoZWNrICJHQ0MgJiBDUFUgb3B0aW1p emF0aW9uIGFiaWxpdGllcyIKICAgIGlmIHRlc3QgIiRwcm9jIiA9ICJldjY4IiA7IHRoZW4KICAg ICAgY2NfY2hlY2sgLW1jcHU9JHByb2MgfHwgcHJvYz1ldjY3CiAgICBmaQogICAgaWYgdGVzdCAi JHByb2MiID0gImV2NjciIDsgdGhlbgogICAgICBjY19jaGVjayAtbWNwdT0kcHJvYyB8fCBwcm9j PWV2NgogICAgZmkKICAgIF9tY3B1PSItbWNwdT0kcHJvYyIKICAgIGVjaG9yZXMgIiRwcm9jIgoK ICAgIHRlc3QgJF9mYXN0X2NseiA9ICJhdXRvIiAmJiBfZmFzdF9jbHo9eWVzCgogICAgX29wdGlt aXppbmc9IiRwcm9jIgogICAgOzsKCiAgbmlvczIpCiAgICBhcmNoPSduaW9zMicKICAgIGlwcm9j PSduaW9zMicKICAgIDs7CgogIG1pcHMqKQogICAgYXJjaD0nbWlwcycKICAgIGlwcm9jPSdtaXBz JwoKICAgIGlmIGlyaXggOyB0aGVuCiAgICAgICAgZWNob2NoZWNrICJDUFUgdHlwZSIKICAgICAg ICBwcm9jPSQoaGludiAtYyBwcm9jZXNzb3IgfCBncmVwIENQVSB8IGN1dCAtZCAiICIgLWYzKQog ICAgICAgIGNhc2UgIiQoZWNobyAkcHJvYykiIGluCiAgICAgICAgICAgIFIzMDAwKSBfbWFyY2g9 Jy1taXBzMScgX21jcHU9Jy1tdHVuZT1yMjAwMCcgOzsKICAgICAgICAgICAgUjQwMDApIF9tYXJj aD0nLW1pcHMzJyBfbWNwdT0nLW10dW5lPXI0MDAwJyA7OwogICAgICAgICAgICBSNDQwMCkgX21h cmNoPSctbWlwczMnIF9tY3B1PSctbXR1bmU9cjQ0MDAnIDs7CiAgICAgICAgICAgIFI0NjAwKSBf bWFyY2g9Jy1taXBzMycgX21jcHU9Jy1tdHVuZT1yNDYwMCcgOzsKICAgICAgICAgICAgUjUwMDAp IF9tYXJjaD0nLW1pcHM0JyBfbWNwdT0nLW10dW5lPXI1MDAwJyA7OwogICAgICAgICAgICBSODAw MHxSMTAwMDB8UjEyMDAwfFIxNDAwMHxSMTYwMDApIF9tYXJjaD0nLW1pcHM0JyBfbWNwdT0nLW10 dW5lPXI4MDAwJyA7OwogICAgICAgIGVzYWMKICAgICAgICAjIGdjYyA8IDMueCBkb2VzIG5vdCBz dXBwb3J0IC1tdHVuZS4KICAgICAgICBpZiB0ZXN0ICIkY2NfdmVuZG9yIiA9ICJnbnUiICYmIHRl c3QgIiRfY2NfbWFqb3IiIC1sdCAzIDsgdGhlbgogICAgICAgICAgICBfbWNwdT0nJwogICAgICAg IGZpCiAgICAgICAgZWNob3JlcyAiJHByb2MiCiAgICBmaQoKICAgIHRlc3QgJF9mYXN0X2NseiA9 ICJhdXRvIiAmJiBfZmFzdF9jbHo9eWVzCgogICAgOzsKCiAgaHBwYSkKICAgIGFyY2g9J3BhX3Jp c2MnCiAgICBpcHJvYz0nUEEtUklTQycKICAgIDs7CgogIHMzOTApCiAgICBhcmNoPSdzMzkwJwog ICAgaXByb2M9JzM5MCcKICAgIDs7CgogIHMzOTB4KQogICAgYXJjaD0nczM5MHgnCiAgICBpcHJv Yz0nMzkweCcKICAgIDs7CgogIHZheCkKICAgIGFyY2g9J3ZheCcKICAgIGlwcm9jPSd2YXgnCiAg ICA7OwoKICB4dGVuc2EpCiAgICBhcmNoPSd4dGVuc2EnCiAgICBpcHJvYz0neHRlbnNhJwogICAg OzsKCiAgZ2VuZXJpYykKICAgIGFyY2g9J2dlbmVyaWMnCiAgICA7OwogIGFyYykKICAgIGFyY2g9 J2FyYycKICAgIGlwcm9jPSdhcmMnCiAgICA7OwoKICAqKQogICAgZWNobyAiVGhlIGFyY2hpdGVj dHVyZSBvZiB5b3VyIENQVSAoJGhvc3RfYXJjaCkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNv bmZpZ3VyZSBzY3JpcHQiCiAgICBlY2hvICJJdCBzZWVtcyBub2JvZHkgaGFzIHBvcnRlZCBNUGxh eWVyIHRvIHlvdXIgT1Mgb3IgQ1BVIHR5cGUgeWV0LiIKICAgIGRpZSAidW5zdXBwb3J0ZWQgYXJj aGl0ZWN0dXJlICRob3N0X2FyY2giCiAgICA7Owplc2FjICMgY2FzZSAiJGhvc3RfYXJjaCIgaW4K CmlmIHRlc3QgIiRfcnVudGltZV9jcHVkZXRlY3Rpb24iID0geWVzIDsgdGhlbgogIGlmIHg4NiA7 IHRoZW4KICAgIHRlc3QgIiRfY21vdiIgICAgICE9IG5vICYmIF9jbW92PXllcwogICAgeDg2XzMy ICYmIF9jbW92PW5vCiAgICB0ZXN0ICIkX21teCIgICAgICAhPSBubyAmJiBfbW14PXllcwogICAg dGVzdCAiJF8zZG5vdyIgICAgIT0gbm8gJiYgXzNkbm93PXllcwogICAgdGVzdCAiJF8zZG5vd2V4 dCIgIT0gbm8gJiYgXzNkbm93ZXh0PXllcwogICAgdGVzdCAiJF9tbXhleHQiICAgIT0gbm8gJiYg X21teGV4dD15ZXMKICAgIHRlc3QgIiRfc3NlIiAgICAgICE9IG5vICYmIF9zc2U9eWVzCiAgICB0 ZXN0ICIkX3NzZTIiICAgICAhPSBubyAmJiBfc3NlMj15ZXMKICAgIHRlc3QgIiRfc3NlMyIgICAg ICE9IG5vICYmIF9zc2UzPXllcwogICAgdGVzdCAiJF9zc3NlMyIgICAgIT0gbm8gJiYgX3Nzc2Uz PXllcwogICAgdGVzdCAiJF9zc2U0XzEiICAgIT0gbm8gJiYgX3NzZTRfMT15ZXMKICAgIHRlc3Qg IiRfc3NlNF8yIiAgICE9IG5vICYmIF9zc2U0XzI9eWVzCiAgICB0ZXN0ICIkX2F2eCIgICAgICAh PSBubyAmJiBfYXZ4PXllcwogICAgdGVzdCAiJF9hdngyIiAgICAgIT0gbm8gJiYgX2F2eDI9eWVz CiAgICB0ZXN0ICIkX3hvcCIgICAgICAhPSBubyAmJiBfeG9wPXllcwogICAgdGVzdCAiJF9mbWEz IiAgICAgIT0gbm8gJiYgX2ZtYTM9eWVzCiAgICB0ZXN0ICIkX2ZtYTQiICAgICAhPSBubyAmJiBf Zm1hND15ZXMKICAgIHRlc3QgIiRfbXRyciIgICAgICE9IG5vICYmIF9tdHJyPXllcwogIGZpCiAg aWYgcHBjOyB0aGVuCiAgICBfYWx0aXZlYz15ZXMKICBmaQpmaQoKCiMgZW5kaWFuIHRlc3RpbmcK ZWNob2NoZWNrICJieXRlIG9yZGVyIgppZiB0ZXN0ICIkX2JpZ19lbmRpYW4iID0gYXV0byA7IHRo ZW4KICBjYXQgPiAkVE1QQyA8PEVPRgpzaG9ydCBhc2NpaV9uYW1lW10gPSB7CiAgJ00nIDw8IDgg fCAnUCcsICdsJyA8PCA4IHwgJ2EnLCAneScgPDwgOCB8ICdlJywgJ3InIDw8IDggfCAnQicsCiAg J2knIDw8IDggfCAnZycsICdFJyA8PCA4IHwgJ24nLCAnZCcgPDwgOCB8ICdpJywgJ2EnIDw8IDgg fCAnbicsIDAgfTsKaW50IG1haW4odm9pZCkgeyByZXR1cm4gKGxvbmcpYXNjaWlfbmFtZTsgfQpF T0YKICBpZiBjY19jaGVjayA7IHRoZW4KICAgICMgc3RkaW4gaXMgdXNlZCB0byBtYWtlICJzdHJp bmdzIiBub3QgdHJ5IHNvbWV0aGluZyBjbGV2ZXIgbGlrZQogICAgIyBwYXJzZSBleGVjdXRhYmxl IHNlY3Rpb24gaGVhZGVycyAoYW5kIHBvc3NpYmx5IGZhaWwgaW4gdGhlIHByb2Nlc3MpCiAgICBp ZiBzdHJpbmdzIDwgJFRNUEVYRSB8IGdyZXAgLXEgLWwgTVBsYXllckJpZ0VuZGlhbiA7IHRoZW4K ICAgICAgX2JpZ19lbmRpYW49eWVzCiAgICBlbHNlCiAgICAgIF9iaWdfZW5kaWFuPW5vCiAgICBm aQogIGVsc2UKICAgIGVjaG8gJHtfZWNob19ufSAiZmFpbGVkIHRvIGF1dG9kZXRlY3QgYnl0ZSBv cmRlciwgZGVmYXVsdGluZyB0byAke19lY2hvX2N9IgogIGZpCmZpCmlmIHRlc3QgIiRfYmlnX2Vu ZGlhbiIgPSB5ZXMgOyB0aGVuCiAgX2J5dGVfb3JkZXI9J2JpZy1lbmRpYW4nCiAgZGVmX2JpZ2Vu ZGlhbj0nI2RlZmluZSBIQVZFX0JJR0VORElBTiAxJwogIGRlZl9hdl9iaWdlbmRpYW49JyNkZWZp bmUgQVZfSEFWRV9CSUdFTkRJQU4gMScKZWxzZQogIF9ieXRlX29yZGVyPSdsaXR0bGUtZW5kaWFu JwogIGRlZl9iaWdlbmRpYW49JyNkZWZpbmUgSEFWRV9CSUdFTkRJQU4gMCcKICBkZWZfYXZfYmln ZW5kaWFuPScjZGVmaW5lIEFWX0hBVkVfQklHRU5ESUFOIDAnCmZpCmVjaG9yZXMgIiRfYnl0ZV9v cmRlciIKCgplY2hvY2hlY2sgImV4dGVybiBzeW1ib2wgcHJlZml4IgpjYXQgPiAkVE1QQyA8PCBF T0YKaW50IGZmX2V4dGVybjsKRU9GCmNjX2NoZWNrIC1jIHx8IGRpZSAiU3ltYm9sIG1hbmdsaW5n IGNoZWNrIGZhaWxlZC4iCnN5bT0kKCRfbm0gLVAgLWcgJFRNUEVYRSkKZXh0ZXJuX3ByZWZpeD0k e3N5bSUlZmZfZXh0ZXJuKn0KZGVmX2V4dGVybl9hc209IiNkZWZpbmUgRVhURVJOX0FTTSAkZXh0 ZXJuX3ByZWZpeCIKZGVmX2V4dGVybl9wcmVmaXg9IiNkZWZpbmUgRVhURVJOX1BSRUZJWCBcIiRl eHRlcm5fcHJlZml4XCIiCmVjaG9yZXMgJGV4dGVybl9wcmVmaXgKCgplY2hvY2hlY2sgImFzc2Vt YmxlciBzdXBwb3J0IG9mIC1waXBlIG9wdGlvbiIKIyAtSS4gaGVscHMgdG8gZGV0ZWN0IGNvbXBp bGVycyB0aGF0IGp1c3QgbWlzdW5kZXJzdGFuZCAtcGlwZSBsaWtlIFN1biBDCmNmbGFnX2NoZWNr IC1waXBlIC1JLiAmJiBfcGlwZT0iLXBpcGUiICYmIGVjaG9yZXMgInllcyIgfHwgZWNob3JlcyAi bm8iCgoKaWYgZGFyd2luICYmIHRlc3QgIiRjY192ZW5kb3IiID0gImdudSIgOyB0aGVuCmVjaG9j aGVjayAiR0NDIHN1cHBvcnQgb2YgLW1zdGFja3JlYWxpZ24iCiMgR0NDIDQuMiBhbmQgc29tZSBl YXJsaWVyIEFwcGxlIHZlcnNpb25zIHN1cHBvcnQgdGhpcyBmbGFnIG9uIHg4Ni4gU2luY2UKIyBN YWMgT1MgWC9JbnRlbCBoYXMgYW4gQUJJIGRpZmZlcmVudCBmcm9tIFdpbmRvd3MgdGhpcyBpcyBu ZWVkZWQgdG8gYXZvaWQKIyBjcmFzaGVzIHdoZW4gbG9hZGluZyBXaW4zMiBETExzLiBVbmZvcnR1 bmF0ZWx5IHNvbWUgZ2NjIHZlcnNpb25zIGNyZWF0ZQojIHdyb25nIGNvZGUgd2l0aCB0aGlzIGZs YWcsIGJ1dCB0aGlzIGNhbiBiZSB3b3JrZWQgYXJvdW5kIGJ5IGFkZGluZwojIC1mbm8tdW5pdC1h dC1hLXRpbWUgYXMgZGVzY3JpYmVkIGluIHRoZSBibG9nIHBvc3QgYXQKIyBodHRwOi8vd3d3LmRy aWJpbi5vcmcvZGF2ZS9ibG9nL2FyY2hpdmVzLzIwMDYvMTIvMDUvbWlzc2luZ190aGlyZF9wYXJh bS8KY2F0ID4gJFRNUEMgPDwgRU9GCl9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgc3RhdGljIGlu dCBmb28zKGludCBpMSwgaW50IGkyLCBpbnQgaTMpIHsgcmV0dXJuIGkzOyB9CmludCBtYWluKHZv aWQpIHsgcmV0dXJuIGZvbzMoMSwgMiwgMykgPT0gMyA/IDAgOiAxOyB9CkVPRgogIGNjX2NoZWNr IC1PNCAtbXN0YWNrcmVhbGlnbiAmJiB0bXBfcnVuICYmIGNmbGFnc19zdGFja3JlYWxpZ249LW1z dGFja3JlYWxpZ24KICB0ZXN0IC16ICIkY2ZsYWdzX3N0YWNrcmVhbGlnbiIgJiYgY2NfY2hlY2sg LU80IC1tc3RhY2tyZWFsaWduIC1mbm8tdW5pdC1hdC1hLXRpbWUgJiYKICAgIHRtcF9ydW4gJiYg Y2ZsYWdzX3N0YWNrcmVhbGlnbj0iLW1zdGFja3JlYWxpZ24gLWZuby11bml0LWF0LWEtdGltZSIK ICB0ZXN0IC1uICIkY2ZsYWdzX3N0YWNrcmVhbGlnbiIgJiYgZWNob3JlcyAieWVzIiB8fCBlY2hv cmVzICJubyIKZmkgIyBpZiBkYXJ3aW4gJiYgdGVzdCAiJGNjX3ZlbmRvciIgPSAiZ251IiA7IHRo ZW4KCgojIENoZWNraW5nIGZvciBDRkxBR1MKX2luc3RhbGxfc3RyaXA9Ii1zIgppZiB0ZXN0IC16 ICIkQ0ZMQUdTIiB8fCB0ZXN0ICIkX3Byb2ZpbGUiICE9ICIiIHx8IHRlc3QgIiRfZGVidWciICE9 ICIiOyB0aGVuCiAgaWYgdGVzdCAiJGNjX3ZlbmRvciIgPSAiaW50ZWwiIDsgdGhlbgogICAgQ0ZM QUdTPSItTzIgJF9tYXJjaCAkX21jcHUgJF9waXBlIC1mb21pdC1mcmFtZS1wb2ludGVyIgogICAg V0FSTkZMQUdTPSItd2QxNjcgLXdkNTU2IC13ZDE0NCIKICBlbGlmIHRlc3QgIiRjY192ZW5kb3Ii ID0gInN1biIgOyB0aGVuCiAgICBDRkxBR1M9Ii1PMiAkX21hcmNoICRfbWNwdSAkX3BpcGUgLXhj OTkgLXhyZWdzPWZyYW1lcHRyIgogIGVsaWYgdGVzdCAiJGNjX3ZlbmRvciIgPSAiY2xhbmciOyB0 aGVuCiAgICBDRkxBR1M9Ii1PMiAkX21hcmNoICRfcGlwZSIKICBlbGlmIHRlc3QgIiRjY192ZW5k b3IiICE9ICJnbnUiIDsgdGhlbgogICAgQ0ZMQUdTPSItTzIgJF9tYXJjaCAkX21jcHUgJF9waXBl IgogIGVsc2UKICAgIENGTEFHUz0iLU80ICRfbWFyY2ggJF9tY3B1ICRfcGlwZSAtZmZhc3QtbWF0 aCAtZm9taXQtZnJhbWUtcG9pbnRlciIKICAgIFdBUk5GTEFHUz0iLVdhbGwgLVduby1zd2l0Y2gg LVduby1wYXJlbnRoZXNlcyAtV3BvaW50ZXItYXJpdGggLVdyZWR1bmRhbnQtZGVjbHMgLVdlcnJv cj1mb3JtYXQtc2VjdXJpdHkiCiAgICBXQVJOX0NGTEFHUz0iLVdlcnJvci1pbXBsaWNpdC1mdW5j dGlvbi1kZWNsYXJhdGlvbiIKICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1mZmFz dC1tYXRoIgogIGZpCgogIGlmIHRlc3QgIiRfcHJvZmlsZSIgIT0gIiIgfHwgdGVzdCAiJF9kZWJ1 ZyIgIT0gIiI7IHRoZW4KICAgIENGTEFHUz0iLU8yICRfbWFyY2ggJF9tY3B1ICRfcGlwZSAkX2Rl YnVnICRfcHJvZmlsZSIKICAgIFdBUk5GTEFHUz0iLVcgLVdhbGwgJFdBUk5GTEFHUyIKICAgIF9p bnN0YWxsX3N0cmlwPQogIGZpCmVsc2UKICB3YXJuX2NmbGFncz15ZXMKZmkKCkNGTEFHUz0iLURf SVNPQzk5X1NPVVJDRSAtSS4gLUlmZm1wZWcgJENGTEFHUyIKSE9TVENGTEFHUz0iLURfSVNPQzk5 X1NPVVJDRSAtSS4gLUlmZm1wZWcgLU8zIgoKIyBPbiBnbGliYywgYWRkIHNvbWUgbW9yZSBDUFBG TEFHUyBmb3IgZW5hYmxpbmcgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eS4KY3BwX2NvbmRpdGlvbl9j aGVjayBmZWF0dXJlcy5oICJkZWZpbmVkIF9fR0xJQkNfXyIgJiYKICBDRkxBR1M9Ii1EX1BPU0lY X0NfU09VUkNFPTIwMDExMiAtRF9YT1BFTl9TT1VSQ0U9NjAwICRDRkxBR1MiICYmCiAgSE9TVENG TEFHUz0iLURfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyIC1EX1hPUEVOX1NPVVJDRT02MDAgJEhPU1RD RkxBR1MiCgppZiB0ZXN0ICIkY2NfdmVuZG9yIiA9ICJnbnUiIDsgdGhlbgogIGNmbGFnX2NoZWNr IC1mbm8tdHJlZS12ZWN0b3JpemUgJiYgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tdHJlZS12ZWN0b3Jp emUiCiAgY2ZsYWdfY2hlY2sgLVd1bmRlZiAmJiBXQVJORkxBR1M9Ii1XdW5kZWYgJFdBUk5GTEFH UyIKICBjZmxhZ19jaGVjayAtc3RkPWdudTk5ICYmIFdBUk5fQ0ZMQUdTPSItc3RkPWdudTk5ICRX QVJOX0NGTEFHUyIKICBjZmxhZ19jaGVjayAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAm JiBXQVJOX0NGTEFHUz0iLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgJFdBUk5fQ0ZMQUdT IgogIGNmbGFnX2NoZWNrIC1Xbm8tcG9pbnRlci1zaWduICYmIFdBUk5fQ0ZMQUdTPSItV25vLXBv aW50ZXItc2lnbiAkV0FSTl9DRkxBR1MiCiAgY2ZsYWdfY2hlY2sgLVdkaXNhYmxlZC1vcHRpbWl6 YXRpb24gJiYgV0FSTl9DRkxBR1M9Ii1XZGlzYWJsZWQtb3B0aW1pemF0aW9uICRXQVJOX0NGTEFH UyIKICBjZmxhZ19jaGVjayAtV21pc3NpbmctcHJvdG90eXBlcyAmJiBXQVJOX0NGTEFHUz0iLVdt aXNzaW5nLXByb3RvdHlwZXMgJFdBUk5fQ0ZMQUdTIgogIGNmbGFnX2NoZWNrIC1Xc3RyaWN0LXBy b3RvdHlwZXMgJiYgV0FSTl9DRkxBR1M9Ii1Xc3RyaWN0LXByb3RvdHlwZXMgJFdBUk5fQ0ZMQUdT IgpmaQoKY2ZsYWdfY2hlY2sgLW1uby1vbWl0LWxlYWYtZnJhbWUtcG9pbnRlciAmJiBjZmxhZ3Nf bm9fb21pdF9sZWFmX2ZyYW1lX3BvaW50ZXI9Ii1tbm8tb21pdC1sZWFmLWZyYW1lLXBvaW50ZXIi CmNmbGFnX2NoZWNrIC1NTUQgLU1QICYmIERFUEZMQUdTPSItTU1EIC1NUCIKCgppZiB0ZXN0IC1u ICIkTERGTEFHUyIgOyB0aGVuCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJExERkxB R1MiCiAgd2Fybl9jZmxhZ3M9eWVzCmVsaWYgdGVzdCAiJGNjX3ZlbmRvciIgPSAiaW50ZWwiIDsg dGhlbgogIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1pLXN0YXRpYyIKZmkKaWYgdGVz dCAtbiAiJENQUEZMQUdTIiA7IHRoZW4KICBleHRyYV9jZmxhZ3M9IiRleHRyYV9jZmxhZ3MgJENQ UEZMQUdTIgogIHdhcm5fY2ZsYWdzPXllcwpmaQoKCiMgdHJ5IHRvIGNyZWF0ZSBhIHJlbG9jYXRh YmxlIGJpbmFyeSBieSBkZWZhdWx0CmVjaG9jaGVjayAicmVsb2NhdGFibGUgYmluYXJ5IgppZiB0 ZXN0ICRyZWxvY2F0YWJsZSA9ICJhdXRvIiA7IHRoZW4KICBpZiB0ZXN0IC1uICIkbGRfc3RhdGlj IiA7IHRoZW4KICAgIHJlbG9jYXRhYmxlPW5vCiAgICByZXNfY29tbWVudD0iUElFICsgc3RhdGlj IGFzc3VtZWQgdG8gYmUgYnJva2VuIgogIGVsaWYgd2luMzIgJiYgISB3aW5lIDsgdGhlbgogICAg cmVsb2NhdGFibGU9bm8KICAgIHJlc19jb21tZW50PSJ1bm5lY2Vzc2FyeSBhbmQgYnJva2VuIG9u IHdpbjMyIgogIGVsaWYgeDg2XzMyICYmIGNmbGFnX2NoZWNrIC1waWUgOyB0aGVuCiAgICBleHRy YV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtcGllIgogICAgcmVsb2NhdGFibGU9eWVzCiAgICBy ZXNfY29tbWVudD0ibm9uLVBJQyIKICBlbGlmIHg4Nl82NCAmJiBjZmxhZ19jaGVjayAtZnBpZSAt cGllIDsgdGhlbgogICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWZwaWUgLXBpZSIK ICAgIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAtZnBpZSIKICAgIHJlbG9jYXRhYmxlPXll cwogICAgcmVzX2NvbW1lbnQ9ImZhc3QgUElDIgogIGVsc2UKICAgIHJlbG9jYXRhYmxlPW5vCiAg ICByZXNfY29tbWVudD0idW5hdmFpbGFibGUgb3IgdW50ZXN0ZWQgYXJjaGl0ZWN0dXJlIgogIGZp CmVsaWYgdGVzdCAkcmVsb2NhdGFibGUgPSAieWVzIiA7IHRoZW4KICBpZiByZXR1cm5fY2hlY2sg InN0ZGludC5oIiAnKGludHB0cl90KSJ0ZXN0IiA+PiAxNicgLXBpZSA7IHRoZW4KICAgIGV4dHJh X2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1waWUiCiAgICByZXNfY29tbWVudD0ibm9uLVBJQyIK ICBlbHNlCiAgICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtZnBpZSAtcGllIgogICAg ZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzIC1mcGllIgogICAgcmVzX2NvbW1lbnQ9InBvc3Np Ymx5IHNsb3cgUElDISIKICBmaQpmaQplY2hvcmVzICRyZWxvY2F0YWJsZQoKaWYgeDg2XzMyIDsg dGhlbgogICMgQ2hlY2tpbmcgYXNzZW1ibGVyIChfYXMpIGNvbXBhdGliaWxpdHkuLi4KICAjIEFk ZGVkIHdvcmthcm91bmQgZm9yIG9sZGVyIGFzIHRoYXQgcmVhZHMgZnJvbSBzdGRpbiBieSBkZWZh dWx0IC0gYXRtb3MKICBhc192ZXJzaW9uPSQoZWNobyAnJyB8ICRfYXMgLXZlcnNpb24gMj4mMSB8 IHNlZCAtbiAncy9eLiphc3NlbWJsZXIgXCh2ZXJzaW9uIFwpKlwoWzAtOS5dKlwpLiokL1wyL3An KQogIGVjaG9jaGVjayAiYXNzZW1ibGVyICgkX2FzICRhc192ZXJzaW9uKSIKCiAgX3ByZWZfYXNf dmVyc2lvbj0nMi45LjEnCiAgZWNobyAnbm9wJyA+ICRUTVBTCiAgaWYgdGVzdCAiJF9tbXgiID0g eWVzIDsgdGhlbgogICAgZWNobyAnZW1tcycgPj4gJFRNUFMKICBmaQogIGlmIHRlc3QgIiRfM2Ru b3ciID0geWVzIDsgdGhlbgogICAgX3ByZWZfYXNfdmVyc2lvbj0nMi4xMC4xJwogICAgZWNobyAn ZmVtbXMnID4+ICRUTVBTCiAgZmkKICBpZiB0ZXN0ICIkXzNkbm93ZXh0IiA9IHllcyA7IHRoZW4K ICAgIF9wcmVmX2FzX3ZlcnNpb249JzIuMTAuMScKICAgIGVjaG8gJ3Bzd2FwZCAlbW0wLCAlbW0w JyA+PiAkVE1QUwogIGZpCiAgaWYgdGVzdCAiJF9tbXhleHQiID0geWVzIDsgdGhlbgogICAgX3By ZWZfYXNfdmVyc2lvbj0nMi4xMC4xJwogICAgZWNobyAnbW92bnRxICVtbTAsICglZWF4KScgPj4g JFRNUFMKICBmaQogIGlmIHRlc3QgIiRfc3NlIiA9IHllcyA7IHRoZW4KICAgIF9wcmVmX2FzX3Zl cnNpb249JzIuMTAuMScKICAgIGVjaG8gJ3hvcnBzICV4bW0wLCAleG1tMCcgPj4gJFRNUFMKICBm aQogICNpZiB0ZXN0ICIkX3NzZTIiID0geWVzIDsgdGhlbgogICMgIF9wcmVmX2FzX3ZlcnNpb249 JzIuMTEnCiAgIyAgZWNobyAneG9ycGQgJXhtbTAsICV4bW0wJyA+PiAkVE1QUwogICNmaQogIGlm IHRlc3QgIiRfY21vdiIgPSB5ZXMgOyB0aGVuCiAgICBfcHJlZl9hc192ZXJzaW9uPScyLjEwLjEn CiAgICBlY2hvICdjbW92YiAlZWF4LCAlZWJ4JyA+PiAkVE1QUwogIGZpCiAgaWYgdGVzdCAiJF9z c3NlMyIgPSB5ZXMgOyB0aGVuCiAgICBfcHJlZl9hc192ZXJzaW9uPScyLjE2LjkyJwogICAgZWNo byAncGFic2QgJXhtbTAsICV4bW0xJyA+PiAkVE1QUwogIGZpCiAgJF9hcyAkVE1QUyAtbyAkVE1Q RVhFID4gL2Rldi9udWxsIDI+JjEgfHwgYXNfdmVyY19mYWlsPXllcwoKICBpZiB0ZXN0ICIkYXNf dmVyY19mYWlsIiAhPSB5ZXMgOyB0aGVuCiAgICBlY2hvcmVzICJvayIKICBlbHNlCiAgICByZXNf Y29tbWVudD0iVXBncmFkZSBiaW51dGlscyB0byAke19wcmVmX2FzX3ZlcnNpb259IG9yIHVzZSAt LWRpc2FibGUtc3NzZTMgZXRjLiIKICAgIGVjaG9yZXMgImZhaWxlZCIKICAgIGRpZSAib2Jzb2xl dGUgYmludXRpbHMgdmVyc2lvbiIKICBmaQoKZmkgI2lmIHg4Nl8zMgoKCiMgQ2hlY2sgaWYgd2Ug bmVlZCB0byBjb21waWxlIGFzIFBJQyBmb3IgdGhpcyBjb21iaW5hdGlvbiBvZiBhcmNoaXRlY3R1 cmUsIHRvb2xjaGFpbiwKIyBnY2MgY29uZmlndXJhdGlvbiAoZS5nLiBoYXJkZW5lZCBvciBub3Qp IGFuZCBjb21waWxlciBvcHRpb25zLgojIE5lZWRzIHRvIGJlIGFmdGVyIHRoZSByZWxvY2F0YWJs ZSBoYW5kbGluZywgc2luY2UgUElFIGNoYW5nZXMgd2hldGhlciB3ZSBuZWVkIFBJQyBvciBub3Qu CmVjaG9jaGVjayAiUElDIgpkZWZfcGljPScjZGVmaW5lIENPTkZJR19QSUMgMCcKcGljPW5vCmNw cF9jb25kaXRpb25fY2hlY2sgJycgJ2RlZmluZWQoX19QSUNfXykgfHwgZGVmaW5lZChfX3BpY19f KSB8fCBkZWZpbmVkKFBJQyknICYmIHBpYz15ZXMKIyBUaGlzIGNoZWNrIGlzIG5lZWRlZCB0byB3 b3JrIGFyb3VuZCBpc3N1ZXMgd2l0aCBjbGFuZyBvbiBPU1ggd2hlbiBjb21waWxpbmcgNjQgYml0 IHJlbG9jYXRhYmxlIGJpbmFyaWVzLgppZiB4ODZfNjQgJiYgdGVzdCAiJHJlbG9jYXRhYmxlIiA9 ICJ5ZXMiICYmIHRlc3QgIiRwaWMiID0gIm5vIjsgdGhlbgogIHJlc19jb21tZW50PSJCcm9rZW4g Y29tcGlsZXIgaW5jb3JyZWN0bHkgY2xhaW1zIFBJQyBub3QgbmVjZXNzYXJ5IGZvciBQSUUiCiAg cGljPXllcwpmaQplY2hvcmVzICRwaWMKaWYgdGVzdCAiJHBpYyIgPSAieWVzIiA7IHRoZW4KICBl eHRyYV9jZmxhZ3M9IiRleHRyYV9jZmxhZ3MgLURQSUMiICYmIGRlZl9waWM9JyNkZWZpbmUgQ09O RklHX1BJQyAxJwpmaQoKCmRlZl9ic3dhcD0nI2RlZmluZSBIQVZFX0JTV0FQIDAnCmRlZl9lYnhf YXZhaWxhYmxlPScjZGVmaW5lIEhBVkVfRUJYX0FWQUlMQUJMRSAwJwpkZWZfeG1tX2Nsb2JiZXJz PScjZGVmaW5lIEhBVkVfWE1NX0NMT0JCRVJTIDAnCgppZiB4ODZfNjQgOyB0aGVuCmlubGluZV9h c21fY2hlY2sgJyJtb3YgKCVlYXgpLCAlZWF4IicgfHwgZGllICJZb3VyIGJpbnV0aWxzIHZlcnNp b24gaXMgdG9vIG9sZCB0byBjb21waWxlIGZvciA2NC1iaXQgKG9uIE9TWCB0cnkgLS1jYz1jbGFu ZykiCmZpCgppZiB4ODYgOyB0aGVuCgplY2hvY2hlY2sgIi5hbGlnbiBpcyBhIHBvd2VyIG9mIHR3 byIKaWYgdGVzdCAiJF9hc21hbGlnbl9wb3QiID0gYXV0byA7IHRoZW4KX2FzbWFsaWduX3BvdD1u bwppbmxpbmVfYXNtX2NoZWNrICciLmFsaWduIDMiJyAmJiBfYXNtYWxpZ25fcG90PXllcwpmaQpp ZiB0ZXN0ICIkX2FzbWFsaWduX3BvdCIgPSAieWVzIiA7IHRoZW4KICBkZWZfYXNtYWxpZ25fcG90 PScjZGVmaW5lIEFTTUFMSUdOKFpFUk9CSVRTKSAiLmFsaWduICIgI1pFUk9CSVRTICJcblx0IicK ZWxzZQogIGRlZl9hc21hbGlnbl9wb3Q9JyNkZWZpbmUgQVNNQUxJR04oWkVST0JJVFMpICIuYWxp Z24gMTw8IiAjWkVST0JJVFMgIlxuXHQiJwpmaQplY2hvcmVzICRfYXNtYWxpZ25fcG90CgoKZWNo b2NoZWNrICJlYnggYXZhaWxhYmlsaXR5IgplYnhfYXZhaWxhYmxlPW5vCmNhdCA+ICRUTVBDIDw8 IEVPRgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgeDsKICAgIF9fYXNtX18gdm9sYXRpbGUoCiAg ICAgICAgInhvciAlMCwgJTAiCiAgICAgICAgOiI9YiIoeCkKICAgICAgICAvLyBqdXN0IGFkZGlu ZyBlYnggdG8gY2xvYmJlciBsaXN0IHNlZW1zIHVucmVsaWFibGUgd2l0aCBzb21lCiAgICAgICAg Ly8gY29tcGlsZXJzLCBlLmcuIEhhaWt1J3MgZ2NjIDIuOTUKICAgICk7CiAgICAvLyBhbmQgdGhl IGFib3ZlIGNoZWNrIGRvZXMgbm90IHdvcmsgZm9yIE9TWCA2NCBiaXQuLi4KICAgIF9fYXNtX18g dm9sYXRpbGUoIiI6OjoiJWVieCIpOwogICAgcmV0dXJuIDA7Cn0KRU9GCmNjX2NoZWNrICYmIGVi eF9hdmFpbGFibGU9eWVzICYmIGRlZl9lYnhfYXZhaWxhYmxlPScjZGVmaW5lIEhBVkVfRUJYX0FW QUlMQUJMRSAxJwplY2hvcmVzICRlYnhfYXZhaWxhYmxlCgoKZWNob2NoZWNrICJ5YXNtIgppZiB0 ZXN0IC16ICIkWUFTTUZMQUdTIiA7IHRoZW4KICBpZiBkYXJ3aW4gOyB0aGVuCiAgICB4ODZfNjQg JiYgb2JqZm9ybWF0PSJtYWNobzY0IiB8fCBvYmpmb3JtYXQ9Im1hY2hvIgogIGVsaWYgd2luMzIg JiYgISB3aW5lIDsgdGhlbgogICAgb2JqZm9ybWF0PSJ3aW4zMiIKICBlbGlmIG9zMiA7IHRoZW4K ICAgIF95YXNtPW5hc20KICAgIG9iamZvcm1hdD0iYW91dCIKICBlbHNlCiAgICBvYmpmb3JtYXQ9 ImVsZiIKICBmaQogIHlhc21kZWZpbmVzPSIiCiAgIyBjdXJyZW50bHkgdGVzdGVkIGZvciBMaW51 eCB4ODYsIHg4Nl82NAogIHRlc3QgIiRwaWMiID0gInllcyIgICAgICAmJiB5YXNtZGVmaW5lcz0i JHlhc21kZWZpbmVzIC1EUElDIgogIHRlc3QgLW4gIiRleHRlcm5fcHJlZml4IiAmJiB5YXNtZGVm aW5lcz0iJHlhc21kZWZpbmVzIC1EUFJFRklYIgoKICBZQVNNRkxBR1M9Ii1mICRvYmpmb3JtYXQg JHlhc21kZWZpbmVzIgogIHg4Nl82NCAmJiBZQVNNRkxBR1M9IiRZQVNNRkxBR1MgLW0gYW1kNjQi CiAgY2FzZSAiJG9iamZvcm1hdCIgaW4KICAgIGVsZikgdGVzdCAkX2RlYnVnICYmIFlBU01GTEFH Uz0iJFlBU01GTEFHUyAtZyBkd2FyZjIiIDs7CiAgZXNhYwplbHNlCiAgd2Fybl9jZmxhZ3M9eWVz CmZpCgplY2hvICJwZXh0cmQgW2VheF0sIHhtbTAsIDEiID4gJFRNUFMKeWFzbV9mZWF0dXJlc19h bGw9ImNwdW5vcCIKaWYgdGVzdCAiJF95YXNtIiA7IHRoZW4KICBpZiAhIHlhc21fY2hlY2sgOyB0 aGVuCiAgICBpZiB4ODZfNjQgOyB0aGVuCiAgICAgIGNhc2UgIiRvYmpmb3JtYXQiIGluCiAgICAg ICAgZWxmKSAgIG9iamZvcm1hdD1lbGY2NCA7OwogICAgICAgIHdpbjMyKSBvYmpmb3JtYXQ9d2lu NjQgOzsKICAgICAgZXNhYwogICAgZmkKICAgIFlBU01GTEFHUz0iLWYgJG9iamZvcm1hdCAkeWFz bWRlZmluZXMiCiAgICB5YXNtX2NoZWNrIHx8ICEgeDg2IHx8IGRpZSAieWFzbSBub3QgZm91bmQs IHVzZSAtLXlhc209JycgaWYgeW91IHJlYWxseSB3YW50IHRvIGNvbXBpbGUgd2l0aG91dCIKICAg IGVjaG8gIkNQVSBhbWRub3AiID4gJFRNUFMKICAgIHlhc21fY2hlY2sgJiYgeWFzbV9mZWF0dXJl cz0iY3B1bm9wIgogIGZpCmZpCmlmIHRlc3QgJF95YXNtIDsgdGhlbgogIGRlZl95YXNtPScjZGVm aW5lIEhBVkVfWUFTTSAxJwogIGhhdmVfeWFzbT0ieWVzIgogIGVjaG9yZXMgIiRfeWFzbSIKZWxz ZQogIGRlZl95YXNtPScjZGVmaW5lIEhBVkVfWUFTTSAwJwogIGhhdmVfeWFzbT0ibm8iCiAgZWNo b3JlcyAibm8iCmZpCgplY2hvY2hlY2sgImJzd2FwIgplY2hvICdic3dhcCAlZWF4JyA+ICRUTVBT CiRfYXMgJFRNUFMgLW8gJFRNUEVYRSA+IC9kZXYvbnVsbCAyPiYxICYmIGRlZl9ic3dhcD0nI2Rl ZmluZSBIQVZFX0JTV0FQIDEnICYmIGJzd2FwPXllcyB8fCBic3dhcD1ubwplY2hvcmVzICIkYnN3 YXAiCgoKZWNob2NoZWNrICJ4bW0gY2xvYmJlcnMiCmlubGluZV9hc21fY2hlY2sgJyIiOjo6IiV4 bW0wIicgJiYKICBkZWZfeG1tX2Nsb2JiZXJzPScjZGVmaW5lIEhBVkVfWE1NX0NMT0JCRVJTIDEn ICYmCiAgeG1tX2Nsb2JiZXJzPXllcyB8fCB4bW1fY2xvYmJlcnM9bm8KZWNob3JlcyAiJHhtbV9j bG9iYmVycyIKCmVsc2UKICBfeWFzbT0nJwogIGRlZl95YXNtPScjZGVmaW5lIEhBVkVfWUFTTSAw JwogIGhhdmVfeWFzbT0ibm8iCmZpICNpZiB4ODYKCiNGSVhNRTogVGhpcyBzaG91bGQgaGFwcGVu IGJlZm9yZSB0aGUgY2hlY2sgZm9yIENGTEFHUy4uCmRlZl9hbHRpdmVjX2g9JyNkZWZpbmUgSEFW RV9BTFRJVkVDX0ggMCcKaWYgcHBjICYmICggdGVzdCAiJF9hbHRpdmVjIiA9IHllcyB8fCB0ZXN0 ICIkX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uIiA9IHllcyApIDsgdGhlbgoKICAgICMgY2hlY2sgaWYg QWx0aVZlYyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgaG93IHRvIGVuYWJsZSBp dAogICAgZWNob2NoZWNrICJHQ0MgQWx0aVZlYyBmbGFncyIKICAgIGlmICQoY2ZsYWdfY2hlY2sg LW1hbHRpdmVjIC1tYWJpPWFsdGl2ZWMpIDsgdGhlbgogICAgX2FsdGl2ZWNfZ2NjX2ZsYWdzPSIt bWFsdGl2ZWMgLW1hYmk9YWx0aXZlYyIKICAgICMgY2hlY2sgaWYgPGFsdGl2ZWMuaD4gc2hvdWxk IGJlIGluY2x1ZGVkCiAgICAgICAgaWYgJChoZWFkZXJfY2hlY2sgYWx0aXZlYy5oICRfYWx0aXZl Y19nY2NfZmxhZ3MpIDsgdGhlbgogICAgICAgICAgICBkZWZfYWx0aXZlY19oPScjZGVmaW5lIEhB VkVfQUxUSVZFQ19IIDEnCiAgICAgICAgICAgIGluY19hbHRpdmVjX2g9JyNpbmNsdWRlIDxhbHRp dmVjLmg+JwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgJChjZmxhZ19jaGVjayAtZmFsdGl2 ZWMpIDsgdGhlbgogICAgICAgICAgICAgICAgX2FsdGl2ZWNfZ2NjX2ZsYWdzPSItZmFsdGl2ZWMi CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIF9hbHRpdmVjPW5vCiAgICAgICAgICAg ICAgICBfYWx0aXZlY19nY2NfZmxhZ3M9Im5vbmUsIEFsdGlWZWMgZGlzYWJsZWQiCiAgICAgICAg ICAgIGZpCiAgICAgICAgZmkKICAgIGZpCiAgICBlY2hvcmVzICIkX2FsdGl2ZWNfZ2NjX2ZsYWdz IgoKICAgICMgY2hlY2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGJyYWNlcyBmb3IgdmVjdG9y IGRlY2xhcmF0aW9ucwogICAgY2F0ID4gJFRNUEMgPDwgRU9GCiRpbmNfYWx0aXZlY19oCmludCBt YWluKHZvaWQpIHsgKHZlY3RvciBpbnQpIHsxfTsgcmV0dXJuIDA7IH0KRU9GCiAgICBjY19jaGVj ayAkX2FsdGl2ZWNfZ2NjX2ZsYWdzIHx8IGRpZSAiWW91IG5lZWQgYSBjb21waWxlciB0aGF0IHN1 cHBvcnRzIHt9IGluIEFsdGlWZWMgdmVjdG9yIGRlY2xhcmF0aW9ucy4iCgogICAgIyBEaXNhYmxl IHJ1bnRpbWUgY3B1ZGV0ZWN0aW9uIGlmIHdlIGNhbm5vdCBnZW5lcmF0ZSBBbHRpVmVjIGNvZGUg b3IKICAgICMgQWx0aVZlYyBpcyBkaXNhYmxlZCBieSB0aGUgdXNlci4KICAgIHRlc3QgIiRfcnVu dGltZV9jcHVkZXRlY3Rpb24iID0geWVzICYmIHRlc3QgIiRfYWx0aXZlYyIgPSBubyBcCiAgICAg ICAgJiYgX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uPW5vCgogICAgIyBTaG93IHRoYXQgd2UgYXJlIG9w dGltaXppbmcgZm9yIEFsdGlWZWMgKGlmIGVuYWJsZWQgYW5kIHN1cHBvcnRlZCkuCiAgICB0ZXN0 ICIkX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uIiA9IG5vICYmIHRlc3QgIiRfYWx0aXZlYyIgPSB5ZXMg XAogICAgICAgICYmIF9vcHRpbWl6aW5nPSIkX29wdGltaXppbmcgYWx0aXZlYyIKCiAgICAjIElm IEFsdGlWZWMgaXMgZW5hYmxlZCwgbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGZsYWdzIHR1cm4gdXAg aW4gQ0ZMQUdTLgogICAgdGVzdCAiJF9hbHRpdmVjIiA9IHllcyAmJiBDRkxBR1M9IiRDRkxBR1Mg JF9hbHRpdmVjX2djY19mbGFncyIKZmkKCmlmIHBwYyA7IHRoZW4KZGVmX3hmb3JtX2FzbT0nI2Rl ZmluZSBIQVZFX1hGT1JNX0FTTSAwJwp4Zm9ybV9hc209bm8KZWNob2NoZWNrICJYRk9STSBBU00g c3VwcG9ydCIKaW5saW5lX2FzbV9jaGVjayAnImx3enggJTEsICV5MCIgOjogIloiKCooaW50Kikw KSwgInIiKDApJyAmJgogIHhmb3JtX2FzbT15ZXMgJiYgZGVmX3hmb3JtX2FzbT0nI2RlZmluZSBI QVZFX1hGT1JNX0FTTSAxJwplY2hvcmVzICIkeGZvcm1fYXNtIgoKZGVmX2libV9hc209JyNkZWZp bmUgSEFWRV9JQk1fQVNNIDAnCmlibV9hc209bm8KZWNob2NoZWNrICJJQk0gQVNNIHN1cHBvcnQi CmlubGluZV9hc21fY2hlY2sgJyJhZGQgMCwgMCwgMCInICYmCiAgaWJtX2FzbT15ZXMgJiYgZGVm X2libV9hc209JyNkZWZpbmUgSEFWRV9JQk1fQVNNIDEnCmVjaG9yZXMgIiRpYm1fYXNtIgoKZGVm X2dudV9hcz0nI2RlZmluZSBIQVZFX0dOVV9BUyAwJwpnbnVfYXM9bm8KZWNob2NoZWNrICJHTlUg YXNzZW1ibGVyIgppbmxpbmVfYXNtX2NoZWNrICciLm1hY3JvIG0gblxuXFxuOi5pbnQgMFxuLmVu ZG1cbm0geCInICYmCiAgZ251X2FzPXllcyAmJiBkZWZfZ251X2FzPScjZGVmaW5lIEhBVkVfR05V X0FTIDEnCmVjaG9yZXMgIiRnbnVfYXMiCgpmaQoKaWYgYXJtIDsgdGhlbgogIGVjaG9jaGVjayAi QVJNdjVURSAoRW5oYW5jZWQgRFNQIEV4dGVuc2lvbnMpIgogIGlmIHRlc3QgJF9hcm12NXRlID0g ImF1dG8iIDsgdGhlbgogICAgX2FybXY1dGU9bm8KICAgIGlubGluZV9hc21fY2hlY2sgJyJxYWRk IHIwLCByMCwgcjAiJyAmJiBfYXJtdjV0ZT15ZXMKICBmaQogIGVjaG9yZXMgIiRfYXJtdjV0ZSIK CiAgdGVzdCAkX2FybXY1dGUgPSAieWVzIiAmJiB0ZXN0ICRfZmFzdF9jbHogPSAiYXV0byIgJiYg X2Zhc3RfY2x6PXllcwoKICBlY2hvY2hlY2sgIkFSTXY2IChTSU1EIGluc3RydWN0aW9ucykiCiAg aWYgdGVzdCAkX2FybXY2ID0gImF1dG8iIDsgdGhlbgogICAgX2FybXY2PW5vCiAgICBpbmxpbmVf YXNtX2NoZWNrICcic2FkZDE2IHIwLCByMCwgcjAiJyAmJiBfYXJtdjY9eWVzCiAgZmkKICBlY2hv cmVzICIkX2FybXY2IgoKICBlY2hvY2hlY2sgIkFSTXY2dDIgKFNJTUQgaW5zdHJ1Y3Rpb25zKSIK ICBpZiB0ZXN0ICRfYXJtdjZ0MiA9ICJhdXRvIiA7IHRoZW4KICAgIF9hcm12NnQyPW5vCiAgICBp bmxpbmVfYXNtX2NoZWNrICcibW92dCByMCwgIzAiJyAmJiBfYXJtdjZ0Mj15ZXMKICBmaQogIGVj aG9yZXMgIiRfYXJtdjZ0MiIKCiAgZWNob2NoZWNrICJBUk0gVkZQIgogIGlmIHRlc3QgJF9hcm12 ZnAgPSAiYXV0byIgOyB0aGVuCiAgICBfYXJtdmZwPW5vCiAgICBpbmxpbmVfYXNtX2NoZWNrICci ZmFkZHMgczAsIHMwLCBzMCInICYmIF9hcm12ZnA9eWVzCiAgZmkKICBlY2hvcmVzICIkX2FybXZm cCIKCiAgZWNob2NoZWNrICJBUk0gVkZQVjMiCiAgaWYgdGVzdCAkdmZwdjMgPSAiYXV0byIgOyB0 aGVuCiAgICB2ZnB2Mz1ubwogICAgaW5saW5lX2FzbV9jaGVjayAnInZtb3YuZjMyIHMwLCAjMS4w IicgJiYgdmZwdjM9eWVzCiAgZmkKICBlY2hvcmVzICIkdmZwdjMiCgogIGVjaG9jaGVjayAiQVJN IHNldGVuZCIKICBpZiB0ZXN0ICRzZXRlbmQgPSAiYXV0byIgOyB0aGVuCiAgICBzZXRlbmQ9bm8K ICAgIGlubGluZV9hc21fY2hlY2sgJyJzZXRlbmQgYmUiJyAmJiBzZXRlbmQ9eWVzCiAgZmkKICBl Y2hvcmVzICIkc2V0ZW5kIgoKICBlY2hvY2hlY2sgInNvZnRmbG9hdCBBQkkiCiAgc29mdGZsb2F0 PXllcwogIGNwcF9jb25kaXRpb25fY2hlY2sgJycgJ2RlZmluZWQoX19BUk1fUENTX1ZGUCkgfHwg KCFkZWZpbmVkKF9fQVJNX1BDUykgJiYgIWRlZmluZWQoX19TT0ZURlBfXykpJyAmJiBzb2Z0Zmxv YXQ9bm8KICBpZiB0ZXN0ICRzb2Z0ZmxvYXQgPSAieWVzIiA7IHRoZW4KICAgIGRlZl92ZnBfYXJn cz0nI2RlZmluZSBIQVZFX1ZGUF9BUkdTIDAnCiAgZWxzZQogICAgZGVmX3ZmcF9hcmdzPScjZGVm aW5lIEhBVkVfVkZQX0FSR1MgMScKICBmaQogIGVjaG9yZXMgIiRzb2Z0ZmxvYXQiCgogIGVjaG9j aGVjayAiQVJNIE5FT04iCiAgaWYgdGVzdCAkbmVvbiA9ICJhdXRvIiA7IHRoZW4KICAgIG5lb249 bm8KICAgIGlubGluZV9hc21fY2hlY2sgJyJ2YWRkLmkxNiBxMCwgcTAsIHEwIicgJiYgbmVvbj15 ZXMKICBmaQogIGVjaG9yZXMgIiRuZW9uIgoKICBlY2hvY2hlY2sgIkFSTSBUSFVNQiIKICBpZiB0 ZXN0ICRhcm10aHVtYiA9ICJhdXRvIiA7IHRoZW4KICAgIGFybXRodW1iPW5vCiAgZmkKICBpZiB0 ZXN0ICRhcm10aHVtYiA9ICJ5ZXMiIDsgdGhlbgogICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2Zs YWdzIC1tdGh1bWIiCiAgICBkZWZfYXJtdGh1bWI9JyNkZWZpbmUgQ09ORklHX1RIVU1CIDEnCiAg ZWxzZQogICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzIC1tYXJtIgogICAgZGVmX2FybXRo dW1iPScjZGVmaW5lIENPTkZJR19USFVNQiAwJwogIGZpCiAgZWNob3JlcyAiJGFybXRodW1iIgoK ICBlY2hvY2hlY2sgImlXTU1YdCAoSW50ZWwgWFNjYWxlIFNJTUQgaW5zdHJ1Y3Rpb25zKSIKICBp ZiB0ZXN0ICRfaXdtbXh0ID0gImF1dG8iIDsgdGhlbgogICAgX2l3bW14dD1ubwogICAgaW5saW5l X2FzbV9jaGVjayAnInd1bnBja2VsdWIgd3I2LCB3cjQiJyAmJiBfaXdtbXh0PXllcwogIGZpCiAg ZWNob3JlcyAiJF9pd21teHQiCmZpCgpjcHVleHRzX2FsbD0nQUxUSVZFQyBYT1AgQVZYIEFWWDIg Rk1BMyBGTUE0IE1NWCBNTVgyIE1NWEVYVCBBTUQzRE5PVyBBTUQzRE5PV0VYVCBTU0UgU1NFMiBT U0UzIFNTU0UzIFNTRTQgU1NFNDIgRkFTVF9DTU9WIEk2ODYgRkFTVF9DTFogQVJNVjVURSBBUk1W NiBBUk1WNlQyIFZGUCBWRlBWMyBTRVRFTkQgTkVPTiBJV01NWFQgTU1JIFZJUyBNVkknCnRlc3Qg IiRfYWx0aXZlYyIgICA9IHllcyAmJiBjcHVleHRzPSJBTFRJVkVDICRjcHVleHRzIgp0ZXN0ICIk X21teCIgICAgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iTU1YICRjcHVleHRzIgp0ZXN0ICIkX21teGV4 dCIgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iTU1YMiAkY3B1ZXh0cyIKdGVzdCAiJF9tbXhleHQiICAg ID0geWVzICYmIGNwdWV4dHM9Ik1NWEVYVCAkY3B1ZXh0cyIKdGVzdCAiJF8zZG5vdyIgICAgID0g eWVzICYmIGNwdWV4dHM9IkFNRDNETk9XICRjcHVleHRzIgp0ZXN0ICIkXzNkbm93ZXh0IiAgPSB5 ZXMgJiYgY3B1ZXh0cz0iQU1EM0ROT1dFWFQgJGNwdWV4dHMiCnRlc3QgIiRfc3NlIiAgICAgICA9 IHllcyAmJiBjcHVleHRzPSJTU0UgJGNwdWV4dHMiCnRlc3QgIiRfc3NlMiIgICAgICA9IHllcyAm JiBjcHVleHRzPSJTU0UyICRjcHVleHRzIgp0ZXN0ICIkX3NzZTMiICAgICAgPSB5ZXMgJiYgY3B1 ZXh0cz0iU1NFMyAkY3B1ZXh0cyIKdGVzdCAiJF9zc3NlMyIgICAgID0geWVzICYmIGNwdWV4dHM9 IlNTU0UzICRjcHVleHRzIgp0ZXN0ICIkX3NzZTRfMSIgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iU1NF NCAkY3B1ZXh0cyIKdGVzdCAiJF9zc2U0XzIiICAgID0geWVzICYmIGNwdWV4dHM9IlNTRTQyICRj cHVleHRzIgp0ZXN0ICIkX2F2eCIgICAgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iQVZYICRjcHVleHRz Igp0ZXN0ICIkX2F2eDIiICAgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iQVZYMiAkY3B1ZXh0cyIKdGVz dCAiJF94b3AiICAgICAgID0geWVzICYmIGNwdWV4dHM9IlhPUCAkY3B1ZXh0cyIKdGVzdCAiJF9m bWEzIiAgICAgID0geWVzICYmIGNwdWV4dHM9IkZNQTMgJGNwdWV4dHMiCnRlc3QgIiRfZm1hNCIg ICAgICA9IHllcyAmJiBjcHVleHRzPSJGTUE0ICRjcHVleHRzIgp0ZXN0ICIkX2Ntb3YiICAgICAg PSB5ZXMgJiYgY3B1ZXh0cz0iSTY4NiAkY3B1ZXh0cyIKdGVzdCAiJF9mYXN0X2Ntb3YiID0geWVz ICYmIGNwdWV4dHM9IkZBU1RfQ01PViAkY3B1ZXh0cyIKdGVzdCAiJF9mYXN0X2NseiIgID0geWVz ICYmIGNwdWV4dHM9IkZBU1RfQ0xaICRjcHVleHRzIgp0ZXN0ICIkX2FybXY1dGUiICAgPSB5ZXMg JiYgY3B1ZXh0cz0iQVJNVjVURSAkY3B1ZXh0cyIKdGVzdCAiJF9hcm12NiIgICAgID0geWVzICYm IGNwdWV4dHM9IkFSTVY2ICRjcHVleHRzIgp0ZXN0ICIkX2FybXY2dDIiICAgPSB5ZXMgJiYgY3B1 ZXh0cz0iQVJNVjZUMiAkY3B1ZXh0cyIKdGVzdCAiJF9hcm12ZnAiICAgID0geWVzICYmIGNwdWV4 dHM9IlZGUCAkY3B1ZXh0cyIKdGVzdCAiJHZmcHYzIiAgICAgID0geWVzICYmIGNwdWV4dHM9IlZG UFYzICRjcHVleHRzIgp0ZXN0ICIkc2V0ZW5kIiAgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iU0VURU5E ICRjcHVleHRzIgp0ZXN0ICIkbmVvbiIgICAgICAgPSB5ZXMgJiYgY3B1ZXh0cz0iTkVPTiAkY3B1 ZXh0cyIKdGVzdCAiJF9pd21teHQiICAgID0geWVzICYmIGNwdWV4dHM9IklXTU1YVCAkY3B1ZXh0 cyIKdGVzdCAiJF92aXMiICAgICAgID0geWVzICYmIGNwdWV4dHM9IlZJUyAkY3B1ZXh0cyIKdGVz dCAiJF9tdmkiICAgICAgID0geWVzICYmIGNwdWV4dHM9Ik1WSSAkY3B1ZXh0cyIKCiMgQ2hlY2tp bmcga2VybmVsIHZlcnNpb24uLi4KaWYgeDg2XzMyICYmIGxpbnV4IDsgdGhlbgogIF9rX3ZlcmNf cHJvYmxlbT1ubwogIGtlcm5lbF92ZXJzaW9uPSQodW5hbWUgLXIgMj4mMSkKICBlY2hvY2hlY2sg IiRzeXN0ZW1fbmFtZSBrZXJuZWwgdmVyc2lvbiIKICBjYXNlICIka2VybmVsX3ZlcnNpb24iIGlu CiAgICAnJykga2VybmVsX3ZlcnNpb249Ij8uPz8iOyBfa192ZXJjX2ZhaWw9eWVzOzsKICAgIFsw LTFdLlswLTldLlswLTldKnwyLlswLTNdLlswLTldKikKICAgICAgX2tfdmVyY19wcm9ibGVtPXll czs7CiAgZXNhYwogIGlmIHRlc3QgIiRfa192ZXJjX3Byb2JsZW0iID0geWVzICYmIHRlc3QgIiRf c3NlIiA9IHllcyA7IHRoZW4KICAgIF9rX3ZlcmNfZmFpbD15ZXMKICBmaQogIGlmIHRlc3QgIiRf a192ZXJjX2ZhaWwiIDsgdGhlbgogICAgZWNob3JlcyAiJGtlcm5lbF92ZXJzaW9uLCBmYWlsIgog ICAgZWNobyAiV0FSTklORyEgSWYgeW91IHdhbnQgdG8gcnVuIE1QbGF5ZXIgb24gdGhpcyBzeXN0 ZW0sIGdldCBwcmVwYXJlZCBmb3IgcHJvYmxlbXMhIgogICAgZWNobyAiMi4yLnggaGFzIGxpbWl0 ZWQgU1NFIHN1cHBvcnQuIFVwZ3JhZGUgdGhlIGtlcm5lbCBvciB1c2UgLS1kaXNhYmxlLXNzZSBp ZiB5b3UiCiAgICBlY2hvICJleHBlcmllbmNlIGNyYXNoZXMuIE1QbGF5ZXIgdHJpZXMgdG8gYXV0 b2RldGVjdCBpZiB5b3VyIGtlcm5lbCBjb3JyZWN0bHkiCiAgICBlY2hvICJzdXBwb3J0cyBTU0Us IGJ1dCB5b3UgaGF2ZSBiZWVuIHdhcm5lZCEgSWYgeW91IGFyZSB1c2luZyBhIGtlcm5lbCBvbGRl ciB0aGFuIgogICAgZWNobyAiMi4yLnggeW91IG11c3QgdXBncmFkZSBpdCB0byBnZXQgU1NFIHN1 cHBvcnQhIgojICAgIGRpZSAiWW91ciBrZXJuZWwgaXMgdG9vIG9sZCBmb3IgdGhpcyBDUFUuIiAj IHdvcmtzIGZpbmUgb24gc29tZSAyLjIueCBzbyBkb24ndCBkaWUgKGxhdGVyIGNoZWNrIHdpbGwg dGVzdCkKICBlbHNlCiAgICBlY2hvcmVzICIka2VybmVsX3ZlcnNpb24sIG9rIgogIGZpCmZpCgoj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgTUFJTiBURVNUUyBHTyBIRVJFICMKIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwoKCmVjaG9jaGVjayAibGFuZ2luZm8iCmlmIHRlc3QgIiRfbGFuZ2luZm8iID0g YXV0byA7IHRoZW4KICBfbGFuZ2luZm89bm8KICBzdGF0ZW1lbnRfY2hlY2sgbGFuZ2luZm8uaCAn bmxfbGFuZ2luZm8oQ09ERVNFVCknICYmIF9sYW5naW5mbz15ZXMKZmkKaWYgdGVzdCAiJF9sYW5n aW5mbyIgPSB5ZXMgOyB0aGVuCiAgZGVmX2xhbmdpbmZvPScjZGVmaW5lIEhBVkVfTEFOR0lORk8g MScKZWxzZQogIGRlZl9sYW5naW5mbz0nI3VuZGVmIEhBVkVfTEFOR0lORk8nCmZpCmVjaG9yZXMg IiRfbGFuZ2luZm8iCgoKZWNob2NoZWNrICJsYW5ndWFnZSIKIyBTZXQgcHJlZmVycmVkIGxhbmd1 YWdlcywgImFsbCIgdXNlcyBFbmdsaXNoIGFzIG1haW4gbGFuZ3VhZ2UuCnRlc3QgLXogIiRsYW5n dWFnZSIgJiYgbGFuZ3VhZ2U9JExJTkdVQVMKdGVzdCAteiAiJGxhbmd1YWdlX2RvYyIgJiYgbGFu Z3VhZ2VfZG9jPSRsYW5ndWFnZQp0ZXN0IC16ICIkbGFuZ3VhZ2VfbWFuIiAmJiBsYW5ndWFnZV9t YW49JGxhbmd1YWdlCnRlc3QgLXogIiRsYW5ndWFnZV9tc2ciICYmIGxhbmd1YWdlX21zZz0kbGFu Z3VhZ2UKbGFuZ3VhZ2VfZG9jPSQoZWNobyAkbGFuZ3VhZ2VfZG9jIHwgdHIgLCAiICIpCmxhbmd1 YWdlX21hbj0kKGVjaG8gJGxhbmd1YWdlX21hbiB8IHRyICwgIiAiKQpsYW5ndWFnZV9tc2c9JChl Y2hvICRsYW5ndWFnZV9tc2cgfCB0ciAsICIgIikKCnRlc3QgIiRsYW5ndWFnZV9kb2MiID0gImFs bCIgJiYgbGFuZ3VhZ2VfZG9jPSRkb2NfbGFuZ19hbGwKdGVzdCAiJGxhbmd1YWdlX21hbiIgPSAi YWxsIiAmJiBsYW5ndWFnZV9tYW49JG1hbl9sYW5nX2FsbAp0ZXN0ICIkbGFuZ3VhZ2VfbXNnIiA9 ICJhbGwiICYmIGxhbmd1YWdlX21zZz1lbgoKIyBQcnVuZSBub24tZXhpc3RpbmcgdHJhbnNsYXRp b25zIGZyb20gbGFuZ3VhZ2UgbGlzdHMuCiMgU2V0IG1lc3NhZ2UgdHJhbnNsYXRpb24gdG8gdGhl IGZpcnN0IGF2YWlsYWJsZSBsYW5ndWFnZS4KIyBGYWxsIGJhY2sgb24gRW5nbGlzaC4KZm9yIGxh bmcgaW4gJGxhbmd1YWdlX2RvYyA7IGRvCiAgdGVzdCAtZCBET0NTL3htbC8kbGFuZyAmJiB0bXBf bGFuZ3VhZ2VfZG9jPSIkdG1wX2xhbmd1YWdlX2RvYyAkbGFuZyIKZG9uZQpsYW5ndWFnZV9kb2M9 JHRtcF9sYW5ndWFnZV9kb2MKdGVzdCAteiAiJGxhbmd1YWdlX2RvYyIgJiYgbGFuZ3VhZ2VfZG9j PWVuCgpmb3IgbGFuZyBpbiAkbGFuZ3VhZ2VfbWFuIDsgZG8KICB0ZXN0IC1kIERPQ1MvbWFuLyRs YW5nICYmIHRtcF9sYW5ndWFnZV9tYW49IiR0bXBfbGFuZ3VhZ2VfbWFuICRsYW5nIgpkb25lCmxh bmd1YWdlX21hbj0kdG1wX2xhbmd1YWdlX21hbgp0ZXN0IC16ICIkbGFuZ3VhZ2VfbWFuIiAmJiBs YW5ndWFnZV9tYW49ZW4KCmZvciBsYW5nIGluICRsYW5ndWFnZV9tc2cgOyBkbwogIHRlc3QgLWYg ImhlbHAvaGVscF9tcC0ke2xhbmd9LmgiICYmIHRtcF9sYW5ndWFnZV9tc2c9JGxhbmcgJiYgYnJl YWsKZG9uZQpsYW5ndWFnZV9tc2c9JHRtcF9sYW5ndWFnZV9tc2cKdGVzdCAteiAiJGxhbmd1YWdl X21zZyIgJiYgbGFuZ3VhZ2VfbXNnPWVuCl9tcF9oZWxwPSJoZWxwL2hlbHBfbXAtJHtsYW5ndWFn ZV9tc2d9LmgiCmVjaG9yZXMgIm1lc3NhZ2VzOiAkbGFuZ3VhZ2VfbXNnIC0gbWFuIHBhZ2VzOiAk bGFuZ3VhZ2VfbWFuIC0gZG9jdW1lbnRhdGlvbjogJGxhbmd1YWdlX2RvYyIKCgplY2hvY2hlY2sg ImVuYWJsZSBzaWdoYW5kbGVyIgppZiB0ZXN0ICIkX3NpZ2hhbmRsZXIiID0geWVzIDsgdGhlbgog IGRlZl9zaWdoYW5kbGVyPScjZGVmaW5lIENPTkZJR19TSUdIQU5ETEVSIDEnCmVsc2UKICBkZWZf c2lnaGFuZGxlcj0nI3VuZGVmIENPTkZJR19TSUdIQU5ETEVSJwpmaQplY2hvcmVzICIkX3NpZ2hh bmRsZXIiCgplY2hvY2hlY2sgInJ1bnRpbWUgY3B1ZGV0ZWN0aW9uIgppZiB0ZXN0ICIkX3J1bnRp bWVfY3B1ZGV0ZWN0aW9uIiA9IHllcyA7IHRoZW4KICBfb3B0aW1pemluZz0iUnVudGltZSBDUFUt RGV0ZWN0aW9uIGVuYWJsZWQiCiAgZGVmX3J1bnRpbWVfY3B1ZGV0ZWN0aW9uPScjZGVmaW5lIENP TkZJR19SVU5USU1FX0NQVURFVEVDVCAxJwplbHNlCiAgZGVmX3J1bnRpbWVfY3B1ZGV0ZWN0aW9u PScjZGVmaW5lIENPTkZJR19SVU5USU1FX0NQVURFVEVDVCAwJwpmaQplY2hvcmVzICIkX3J1bnRp bWVfY3B1ZGV0ZWN0aW9uIgoKCmVjaG9jaGVjayAicmVzdHJpY3Qga2V5d29yZCIKZm9yIHJlc3Ry aWN0X2tleXdvcmQgaW4gcmVzdHJpY3QgX19yZXN0cmljdCBfX3Jlc3RyaWN0X18gOyBkbwogIGVj aG8gInZvaWQgZm9vKGNoYXIgKiAkcmVzdHJpY3Rfa2V5d29yZCBwKTsgaW50IG1haW4odm9pZCkg eyByZXR1cm4gMDsgfSIgPiAkVE1QQwogIGlmIGNjX2NoZWNrOyB0aGVuCiAgICBkZWZfcmVzdHJp Y3Rfa2V5d29yZD0kcmVzdHJpY3Rfa2V5d29yZAogICAgYnJlYWs7CiAgZmkKZG9uZQppZiBbIC1u ICIkZGVmX3Jlc3RyaWN0X2tleXdvcmQiIF07IHRoZW4KICBlY2hvcmVzICIkZGVmX3Jlc3RyaWN0 X2tleXdvcmQiCmVsc2UKICBlY2hvcmVzICJub25lIgpmaQojIEF2b2lkIGluZmluaXRlIHJlY3Vy c2lvbiBsb29wICgiI2RlZmluZSByZXN0cmljdCByZXN0cmljdCIpCmlmIFsgIiRkZWZfcmVzdHJp Y3Rfa2V5d29yZCIgIT0gInJlc3RyaWN0IiBdOyB0aGVuCiAgZGVmX3Jlc3RyaWN0X2tleXdvcmQ9 IiNkZWZpbmUgcmVzdHJpY3QgJGRlZl9yZXN0cmljdF9rZXl3b3JkIgplbHNlCiAgZGVmX3Jlc3Ry aWN0X2tleXdvcmQ9IiIKZmkKCgplY2hvY2hlY2sgIl9fYnVpbHRpbl9leHBlY3QiCiMgR0NDIGJy YW5jaCBwcmVkaWN0aW9uIGhpbnQKY2F0ID4gJFRNUEMgPDwgRU9GCnN0YXRpYyBpbnQgZm9vKGlu dCBhKSB7CiAgICBhID0gX19idWlsdGluX2V4cGVjdChhLCAxMCk7CiAgICByZXR1cm4gYSA9PSAx MCA/IDAgOiAxOwp9CmludCBtYWluKHZvaWQpIHsgcmV0dXJuIGZvbygxMCkgJiYgZm9vKDApOyB9 CkVPRgpfYnVpbHRpbl9leHBlY3Q9bm8KY2NfY2hlY2sgJiYgX2J1aWx0aW5fZXhwZWN0PXllcwpp ZiB0ZXN0ICIkX2J1aWx0aW5fZXhwZWN0IiA9IHllcyA7IHRoZW4KICBkZWZfYnVpbHRpbl9leHBl Y3Q9JyNkZWZpbmUgSEFWRV9CVUlMVElOX0VYUEVDVCAxJwplbHNlCiAgZGVmX2J1aWx0aW5fZXhw ZWN0PScjdW5kZWYgSEFWRV9CVUlMVElOX0VYUEVDVCcKZmkKZWNob3JlcyAiJF9idWlsdGluX2V4 cGVjdCIKCgplY2hvY2hlY2sgImtzdGF0Igpfa3N0YXQ9bm8Kc3RhdGVtZW50X2NoZWNrIGtzdGF0 LmggJ2tzdGF0X29wZW4oKScgLWxrc3RhdCAmJiBfa3N0YXQ9eWVzCmlmIHRlc3QgIiRfa3N0YXQi ID0geWVzIDsgdGhlbgogIGRlZl9rc3RhdD0iI2RlZmluZSBIQVZFX0xJQktTVEFUIDEiCiAgZXh0 cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxrc3RhdCIKZWxzZQogIGRlZl9rc3RhdD0iI3Vu ZGVmIEhBVkVfTElCS1NUQVQiCmZpCmVjaG9yZXMgIiRfa3N0YXQiCgoKZm9yIGZ1bmMgaW4gYXRh bmYgY2JydCBjYnJ0ZiBjb3NmIGV4cGYgZXhwMiBleHAyZiBpc25hbiBpc2luZiBsbHJpbnQgbGxy aW50ZiBsb2cyIGxvZzJmIGxvZzEwZiBscmludCBscmludGYgcmludCByb3VuZCByb3VuZGYgc2lu ZiB0cnVuYyB0cnVuY2Y7IGRvCmVjaG9jaGVjayAkZnVuYwpldmFsIF8kZnVuYz1ubwpzdGF0ZW1l bnRfY2hlY2sgbWF0aC5oICIke2Z1bmN9KDIuMCkiICYmIGV2YWwgXyRmdW5jPXllcwppZiBldmFs IHRlc3QgInhcJF8kZnVuYyIgPSAieHllcyI7IHRoZW4KICBldmFsIGRlZl8kZnVuYz0iXCIjZGVm aW5lIEhBVkVfJChlY2hvICRmdW5jIHwgdG91cHBlcikgMVwiIgogIGVjaG9yZXMgeWVzCmVsc2UK ICBldmFsIGRlZl8kZnVuYz0iXCIjZGVmaW5lIEhBVkVfJChlY2hvICRmdW5jIHwgdG91cHBlcikg MFwiIgogIGVjaG9yZXMgbm8KZmkKZG9uZQoKCmZvciBmdW5jIGluIGF0YW4yZiBmbWluZiBsZGV4 cGYgcG93ZjsgZG8KZWNob2NoZWNrICRmdW5jCmV2YWwgXyRmdW5jPW5vCnN0YXRlbWVudF9jaGVj ayBtYXRoLmggIiR7ZnVuY30oMS4wLDEuMCkiICYmIGV2YWwgXyRmdW5jPXllcwppZiBldmFsIHRl c3QgInhcJF8kZnVuYyIgPSAieHllcyI7IHRoZW4KICBldmFsIGRlZl8kZnVuYz0iXCIjZGVmaW5l IEhBVkVfJChlY2hvICRmdW5jIHwgdG91cHBlcikgMVwiIgogIGVjaG9yZXMgeWVzCmVsc2UKICBl dmFsIGRlZl8kZnVuYz0iXCIjZGVmaW5lIEhBVkVfJChlY2hvICRmdW5jIHwgdG91cHBlcikgMFwi IgogIGVjaG9yZXMgbm8KZmkKZG9uZQoKCmVjaG9jaGVjayAibWtzdGVtcCIKX21rc3RlbXA9bm8K c3RhdGVtZW50X2NoZWNrIHN0ZGxpYi5oICdta3N0ZW1wKCIiKScgJiYgX21rc3RlbXA9eWVzCmlm IHRlc3QgIiRfbWtzdGVtcCIgPSB5ZXMgOyB0aGVuCiAgZGVmX21rc3RlbXA9JyNkZWZpbmUgSEFW RV9NS1NURU1QIDEnCmVsc2UKICBkZWZfbWtzdGVtcD0nI2RlZmluZSBIQVZFX01LU1RFTVAgMCcK ZmkKZWNob3JlcyAiJF9ta3N0ZW1wIgoKZWNob2NoZWNrICJnbXRpbWVfciIKX2dtdGltZV9yPW5v CnN0YXRlbWVudF9jaGVjayB0aW1lLmggJ2dtdGltZV9yKDAsIDApJyAmJiBfZ210aW1lX3I9eWVz CmlmIHRlc3QgIiRfZ210aW1lX3IiID0geWVzIDsgdGhlbgogIGRlZl9nbXRpbWVfcj0nI2RlZmlu ZSBIQVZFX0dNVElNRV9SIDEnCmVsc2UKICBkZWZfZ210aW1lX3I9JyN1bmRlZiBIQVZFX0dNVElN RV9SJwpmaQplY2hvcmVzICIkX2dtdGltZV9yIgoKZWNob2NoZWNrICJsb2NhbHRpbWVfciIKX2xv Y2FsdGltZV9yPW5vCnN0YXRlbWVudF9jaGVjayB0aW1lLmggJ2xvY2FsdGltZV9yKDAsIDApJyAm JiBfbG9jYWx0aW1lX3I9eWVzCmlmIHRlc3QgIiRfbG9jYWx0aW1lX3IiID0geWVzIDsgdGhlbgog IGRlZl9sb2NhbHRpbWVfcj0nI2RlZmluZSBIQVZFX0xPQ0FMVElNRV9SIDEnCmVsc2UKICBkZWZf bG9jYWx0aW1lX3I9JyN1bmRlZiBIQVZFX0xPQ0FMVElNRV9SJwpmaQplY2hvcmVzICIkX2xvY2Fs dGltZV9yIgoKZWNob2NoZWNrICJuYW5vc2xlZXAiCl9uYW5vc2xlZXA9bm8Kc3RhdGVtZW50X2No ZWNrIHRpbWUuaCAnbmFub3NsZWVwKDAsIDApJyAmJiBfbmFub3NsZWVwPXllcwppZiB0ZXN0ICIk X25hbm9zbGVlcCIgPSB5ZXMgOyB0aGVuCiAgZGVmX25hbm9zbGVlcD0nI2RlZmluZSBIQVZFX05B Tk9TTEVFUCAxJwplbHNlCiAgZGVmX25hbm9zbGVlcD0nI3VuZGVmIEhBVkVfTkFOT1NMRUVQJwpm aQplY2hvcmVzICIkX25hbm9zbGVlcCIKCgplY2hvY2hlY2sgInNvY2tsaWIiCiMgZm9yIFNvbGFy aXMgKHNvY2tldCBzdHVmZiBpcyBpbiAtbHNvY2tldCwgZ2V0aG9zdGJ5bmFtZSBhbmQgZnJpZW5k cyBpbiAtbG5zbCk6CmNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8bmV0ZGIuaD4KI2luY2x1 ZGUgPHN5cy9zb2NrZXQuaD4KaW50IG1haW4odm9pZCkgeyBnZXRob3N0YnluYW1lKDApOyBzb2Nr ZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOyByZXR1cm4gMDsgfQpFT0YKX3NvY2tsaWI9bm8K Zm9yIGxkX3RtcCBpbiAiIiAiLWxzb2NrZXQgLWxkbmV0IiAiLWxzb2NrZXQgLWxuc2wiICItbG5z bCIgIi1sc29ja2V0IiA7IGRvCiAgY2NfY2hlY2sgJGxkX3RtcCAmJiBsZF9zb2NrPSIkbGRfdG1w IiAmJiBfc29ja2xpYj15ZXMgJiYgYnJlYWsKZG9uZQp0ZXN0ICRfc29ja2xpYiA9IHllcyAmJiB0 ZXN0ICRfd2luc29jazJfaCA9IGF1dG8gJiYgX3dpbnNvY2syX2g9bm8KaWYgdGVzdCAkX3dpbnNv Y2syX2ggPSBhdXRvIDsgdGhlbgogIF93aW5zb2NrMl9oPW5vCiAgc3RhdGVtZW50X2NoZWNrIHdp bnNvY2syLmggJ2dldGhvc3RieW5hbWUoMCknIC1sd3MyXzMyICYmIGxkX3NvY2s9Ii1sd3MyXzMy IiAmJiBfd2luc29jazJfaD15ZXMKZmkKdGVzdCAiJGxkX3NvY2siICYmIHJlc19jb21tZW50PSJ1 c2luZyAkbGRfc29jayIKZWNob3JlcyAiJF9zb2NrbGliIgoKCmlmIHRlc3QgJF93aW5zb2NrMl9o ID0geWVzIDsgdGhlbgogIGxkX3NvY2s9Ii1sd3MyXzMyIgogIGRlZl93aW5zb2NrMl9oPScjZGVm aW5lIEhBVkVfV0lOU09DSzJfSCAxJwogIGNjX2NoZWNrX3dpbnNvY2syX2g9Jy1ESEFWRV9XSU5T T0NLMl9IPTEnCmVsc2UKICBkZWZfd2luc29jazJfaD0nI2RlZmluZSBIQVZFX1dJTlNPQ0syX0gg MCcKICBjY19jaGVja193aW5zb2NrMl9oPSctREhBVkVfV0lOU09DSzJfSD0wJwpmaQoKCmVjaG9j aGVjayAibmV0ZGIuaCwgc3RydWN0IGFkZHJpbmZvIgppZiB0ZXN0ICIkX3N0cnVjdF9hZGRyaW5m byIgPSBhdXRvOyB0aGVuCiAgX3N0cnVjdF9hZGRyaW5mbz1ubwogIGNhdCA+ICRUTVBDIDw8IEVP RgojaWYgSEFWRV9XSU5TT0NLMl9ICiNpbmNsdWRlIDx3aW5zb2NrMi5oPgojaW5jbHVkZSA8d3My dGNwaXAuaD4KI2Vsc2UKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tl dC5oPgojaW5jbHVkZSA8bmV0ZGIuaD4KI2VuZGlmCmludCBtYWluKHZvaWQpIHsgc3RydWN0IGFk ZHJpbmZvIGFpOyByZXR1cm4gMDsgfQpFT0YKICBjY19jaGVjayAkY2NfY2hlY2tfd2luc29jazJf aCAmJiBfc3RydWN0X2FkZHJpbmZvPXllcwpmaQplY2hvcmVzICIkX3N0cnVjdF9hZGRyaW5mbyIK CmlmIHRlc3QgIiRfc3RydWN0X2FkZHJpbmZvIiA9IHllczsgdGhlbgogIGRlZl9zdHJ1Y3RfYWRk cmluZm89IiNkZWZpbmUgSEFWRV9TVFJVQ1RfQUREUklORk8gMSIKZWxzZQogIGRlZl9zdHJ1Y3Rf YWRkcmluZm89IiNkZWZpbmUgSEFWRV9TVFJVQ1RfQUREUklORk8gMCIKZmkKCgplY2hvY2hlY2sg Im5ldGRiLmgsIGdldGFkZHJpbmZvKCkiCmlmIHRlc3QgIiRfZ2V0YWRkcmluZm8iID0gYXV0bzsg dGhlbgogIF9nZXRhZGRyaW5mbz1ubwogIGNhdCA+ICRUTVBDIDw8IEVPRgojaWYgSEFWRV9XSU5T T0NLMl9ICiNpbmNsdWRlIDx3aW5zb2NrMi5oPgojZWxzZQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+ CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNpbmNsdWRlIDxuZXRkYi5oPgojZW5kaWYKaW50IG1h aW4odm9pZCkgeyBnZXRhZGRyaW5mbygwLCAwLCAwLCAwKTsgcmV0dXJuIDA7IH0KRU9GCiAgY2Nf Y2hlY2sgJGNjX2NoZWNrX3dpbnNvY2syX2ggJiYgX2dldGFkZHJpbmZvPXllcwpmaQplY2hvcmVz ICIkX2dldGFkZHJpbmZvIgoKaWYgdGVzdCAiJF9nZXRhZGRyaW5mbyIgPSB5ZXM7IHRoZW4KICBk ZWZfZ2V0YWRkcmluZm89IiNkZWZpbmUgSEFWRV9HRVRBRERSSU5GTyAxIgplbHNlCiAgZGVmX2dl dGFkZHJpbmZvPSIjZGVmaW5lIEhBVkVfR0VUQUREUklORk8gMCIKZmkKCgplY2hvY2hlY2sgInNv Y2thZGRyX3N0b3JhZ2UiCmlmIHRlc3QgIiRfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UiID0gYXV0 bzsgdGhlbgogIF9zdHJ1Y3Rfc29ja2FkZHJfc3RvcmFnZT1ubwogIGNhdCA+ICRUTVBDIDw8IEVP RgojaWYgSEFWRV9XSU5TT0NLMl9ICiNpbmNsdWRlIDx3aW5zb2NrMi5oPgojZWxzZQojaW5jbHVk ZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNlbmRpZgppbnQgbWFpbih2 b2lkKSB7IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNhczsgcmV0dXJuIDA7IH0KRU9GCiAgY2Nf Y2hlY2sgJGNjX2NoZWNrX3dpbnNvY2syX2ggJiYgX3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlPXll cwpmaQplY2hvcmVzICIkX3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlIgoKaWYgdGVzdCAiJF9zdHJ1 Y3Rfc29ja2FkZHJfc3RvcmFnZSIgPSB5ZXM7IHRoZW4KICBkZWZfc3RydWN0X3NvY2thZGRyX3N0 b3JhZ2U9IiNkZWZpbmUgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRSAxIgplbHNlCiAgZGVm X3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlPSIjZGVmaW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NU T1JBR0UgMCIKZmkKCgplY2hvY2hlY2sgInN0cnVjdCBpcHY2X21yZXEiCl9zdHJ1Y3RfaXB2Nl9t cmVxPW5vCmRlZl9zdHJ1Y3RfaXB2Nl9tcmVxPSIjZGVmaW5lIEhBVkVfU1RSVUNUX0lQVjZfTVJF USAwIgpmb3IgaGVhZGVyIGluICJuZXRpbmV0L2luLmgiICJ3czJ0Y3BpcC5oIiA7IGRvCiAgc3Rh dGVtZW50X2NoZWNrICRoZWFkZXIgJ3N0cnVjdCBpcHY2X21yZXEgbXJlcTYnICYmIF9zdHJ1Y3Rf aXB2Nl9tcmVxPXllcyAmJgogICAgZGVmX3N0cnVjdF9pcHY2X21yZXE9IiNkZWZpbmUgSEFWRV9T VFJVQ1RfSVBWNl9NUkVRIDEiICYmIGJyZWFrCmRvbmUKZWNob3JlcyAiJF9zdHJ1Y3RfaXB2Nl9t cmVxIgoKCmVjaG9jaGVjayAic3RydWN0IHNvY2thZGRyX2luNiIKX3N0cnVjdF9zb2NrYWRkcl9p bjY9bm8KZGVmX3N0cnVjdF9zb2NrYWRkcl9pbjY9IiNkZWZpbmUgSEFWRV9TVFJVQ1RfU09DS0FE RFJfSU42IDAiCmZvciBoZWFkZXIgaW4gIm5ldGluZXQvaW4uaCIgIndzMnRjcGlwLmgiIDsgZG8K ICBzdGF0ZW1lbnRfY2hlY2sgJGhlYWRlciAnc3RydWN0IHNvY2thZGRyX2luNiBhZGRyJyAmJiBf c3RydWN0X3NvY2thZGRyX2luNj15ZXMgJiYKICAgIGRlZl9zdHJ1Y3Rfc29ja2FkZHJfaW42PSIj ZGVmaW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX0lONiAxIiAmJiBicmVhawpkb25lCmVjaG9yZXMg IiRfc3RydWN0X3NvY2thZGRyX2luNiIKCgplY2hvY2hlY2sgInN0cnVjdCBzb2NrYWRkciBzYV9s ZW4iCl9zdHJ1Y3Rfc29ja2FkZHJfc2FfbGVuPW5vCmRlZl9zdHJ1Y3Rfc29ja2FkZHJfc2FfbGVu PSIjZGVmaW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NBX0xFTiAwIgpjYXQgPiAkVE1QQyA8PCBF T0YKI2lmIEhBVkVfV0lOU09DSzJfSAojaW5jbHVkZSA8d2luc29jazIuaD4KI2Vsc2UKI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojZW5kaWYKaW50IG1haW4o dm9pZCkgeyBjb25zdCB2b2lkICpwID0gJigoc3RydWN0IHNvY2thZGRyICopMCktPnNhX2xlbjsg cmV0dXJuIDA7IH0KRU9GCmNjX2NoZWNrICRjY19jaGVja193aW5zb2NrMl9oICYmIF9zdHJ1Y3Rf c29ja2FkZHJfc2FfbGVuPXllcyAmJgogIGRlZl9zdHJ1Y3Rfc29ja2FkZHJfc2FfbGVuPSIjZGVm aW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NBX0xFTiAxIgplY2hvcmVzICIkX3N0cnVjdF9zb2Nr YWRkcl9zYV9sZW4iCgoKZWNob2NoZWNrICJhcnBhL2luZXQuaCIKYXJwYV9pbmV0X2g9bm8KZGVm X2FycGFfaW5ldF9oPScjZGVmaW5lIEhBVkVfQVJQQV9JTkVUX0ggMCcKaGVhZGVyX2NoZWNrIGFy cGEvaW5ldC5oICYmIGFycGFfaW5ldF9oPXllcyAmJgogIGRlZl9hcnBhX2luZXRfaD0nI2RlZmlu ZSBIQVZFX0FSUEFfSU5FVF9IIDEnCmVjaG9yZXMgIiRhcnBhX2luZXRfaCIKCgplY2hvY2hlY2sg ImluZXRfcHRvbigpIgpkZWZfaW5ldF9wdG9uPScjZGVmaW5lIEhBVkVfSU5FVF9QVE9OIDAnCmlu ZXRfcHRvbj1ubwpmb3IgbGRfdG1wIGluICIkbGRfc29jayIgIiRsZF9zb2NrIC1scmVzb2x2IiA7 IGRvCiAgc3RhdGVtZW50X2NoZWNrIGFycGEvaW5ldC5oICdpbmV0X3B0b24oMCwgMCwgMCknICRs ZF90bXAgJiYgaW5ldF9wdG9uPXllcyAmJiBicmVhawpkb25lCmlmIHRlc3QgJGluZXRfcHRvbiA9 IHllcyA7IHRoZW4KICB0ZXN0ICIkbGRfdG1wIiAmJiByZXNfY29tbWVudD0idXNpbmcgJGxkX3Rt cCIKICBkZWZfaW5ldF9wdG9uPScjZGVmaW5lIEhBVkVfSU5FVF9QVE9OIDEnCmZpCmVjaG9yZXMg IiRpbmV0X3B0b24iCgoKZWNob2NoZWNrICJpbmV0X2F0b24oKSIKZGVmX2luZXRfYXRvbj0nI2Rl ZmluZSBIQVZFX0lORVRfQVRPTiAwJwppbmV0X2F0b249bm8KZm9yIGxkX3RtcCBpbiAiJGxkX3Nv Y2siICIkbGRfc29jayAtbHJlc29sdiIgOyBkbwogIHN0YXRlbWVudF9jaGVjayBhcnBhL2luZXQu aCAnaW5ldF9hdG9uKDAsIDApJyAkbGRfdG1wICYmIGluZXRfYXRvbj15ZXMgJiYgYnJlYWsKZG9u ZQppZiB0ZXN0ICRpbmV0X2F0b24gPSB5ZXMgOyB0aGVuCiAgdGVzdCAiJGxkX3RtcCIgJiYgcmVz X2NvbW1lbnQ9InVzaW5nICRsZF90bXAiCiAgZGVmX2luZXRfYXRvbj0nI2RlZmluZSBIQVZFX0lO RVRfQVRPTiAxJwpmaQplY2hvcmVzICIkaW5ldF9hdG9uIgoKCmVjaG9jaGVjayAic29ja2xlbl90 Igpfc29ja2xlbl90PW5vCmZvciBoZWFkZXIgaW4gInN5cy9zb2NrZXQuaCIgIndzMnRjcGlwLmgi ICJzeXMvdHlwZXMuaCIgOyBkbwogIHN0YXRlbWVudF9jaGVjayAkaGVhZGVyICdzb2NrbGVuX3Qg diA9IDAnICYmIF9zb2NrbGVuX3Q9eWVzICYmIGJyZWFrCmRvbmUKaWYgdGVzdCAiJF9zb2NrbGVu X3QiID0geWVzIDsgdGhlbgogIGRlZl9zb2NrbGVuX3Q9JyNkZWZpbmUgSEFWRV9TT0NLTEVOX1Qg MScKZWxzZQogIGRlZl9zb2NrbGVuX3Q9JyNkZWZpbmUgSEFWRV9TT0NLTEVOX1QgMCcKZmkKZWNo b3JlcyAiJF9zb2NrbGVuX3QiCgoKZWNob2NoZWNrICJjbG9zZXNvY2tldCgpIgpfY2xvc2Vzb2Nr ZXQ9bm8Kc3RhdGVtZW50X2NoZWNrIHdpbnNvY2syLmggJ2Nsb3Nlc29ja2V0KH4wKScgJGxkX3Nv Y2sgJiYgX2Nsb3Nlc29ja2V0PXllcwppZiB0ZXN0ICIkX2Nsb3Nlc29ja2V0IiA9IHllcyA7IHRo ZW4KICBkZWZfY2xvc2Vzb2NrZXQ9JyNkZWZpbmUgSEFWRV9DTE9TRVNPQ0tFVCAxJwplbHNlCiAg ZGVmX2Nsb3Nlc29ja2V0PScjZGVmaW5lIEhBVkVfQ0xPU0VTT0NLRVQgMCcKZmkKZWNob3JlcyAi JF9jbG9zZXNvY2tldCIKCgplY2hvY2hlY2sgIm5ldHdvcmtpbmciCnRlc3QgJF93aW5zb2NrMl9o ID0gbm8gJiYgdGVzdCAkaW5ldF9wdG9uID0gbm8gJiYKICB0ZXN0ICRpbmV0X2F0b24gPSBubyAm JiBuZXR3b3JraW5nPW5vCmlmIHRlc3QgIiRuZXR3b3JraW5nIiA9IHllcyA7IHRoZW4KICBkZWZf bmV0d29yaz0nI2RlZmluZSBDT05GSUdfTkVUV09SSyAxJwogIGRlZl9uZXR3b3JraW5nPScjZGVm aW5lIENPTkZJR19ORVRXT1JLSU5HIDEnCiAgZGVmX3J0cGRlYz0nI2RlZmluZSBDT05GSUdfUlRQ REVDIDEnCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJGxkX3NvY2siCiAgaW5wdXRt b2R1bGVzPSJuZXR3b3JraW5nICRpbnB1dG1vZHVsZXMiCmVsc2UKICBub2lucHV0bW9kdWxlcz0i bmV0d29ya2luZyAkbm9pbnB1dG1vZHVsZXMiCiAgZGVmX25ldHdvcms9JyNkZWZpbmUgQ09ORklH X05FVFdPUksgMCcKICBkZWZfbmV0d29ya2luZz0nI3VuZGVmIENPTkZJR19ORVRXT1JLSU5HJwog IGRlZl9ydHBkZWM9JyNkZWZpbmUgQ09ORklHX1JUUERFQyAwJwogIGxpYmF2cHJvdG9jb2xzPSQo ZmlsdGVyX291dF9jb21wb25lbnQgcHJvdG9jb2wgJ0dPUEhFUiBIVFRQIE1NU0ggTU1TVCBSVE1Q IFJUUCBTQ1RQIFRDUCBVRFAnKQogIGxpYmF2ZGVtdXhlcnM9JChmaWx0ZXJfb3V0X2NvbXBvbmVu dCBkZW11eGVyICdSVFAgUlRTUCBTQVAgU0RQJykKZmkKZWNob3JlcyAiJG5ldHdvcmtpbmciCgoK ZWNob2NoZWNrICJpbmV0NiIKaWYgdGVzdCAiJF9pbmV0NiIgPSBhdXRvIDsgdGhlbgogIGNhdCA+ ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpZiAhZGVmaW5lZChfV0lOMzIp CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiNlbHNlCiNp bmNsdWRlIDx3czJ0Y3BpcC5oPgojZW5kaWYKaW50IG1haW4odm9pZCkgeyBzdHJ1Y3Qgc29ja2Fk ZHJfaW42IHNpeDsgc29ja2V0KEFGX0lORVQ2LCBTT0NLX1NUUkVBTSwgQUZfSU5FVDYpOyByZXR1 cm4gMDsgfQpFT0YKICBfaW5ldDY9bm8KICBpZiBjY19jaGVjayAkbGRfc29jayA7IHRoZW4KICAg IF9pbmV0Nj15ZXMKICBmaQpmaQppZiB0ZXN0ICIkX2luZXQ2IiA9IHllcyA7IHRoZW4KICBkZWZf aW5ldDY9JyNkZWZpbmUgSEFWRV9BRl9JTkVUNiAxJwplbHNlCiAgZGVmX2luZXQ2PScjdW5kZWYg SEFWRV9BRl9JTkVUNicKZmkKZWNob3JlcyAiJF9pbmV0NiIKCgplY2hvY2hlY2sgImdldGhvc3Ri eW5hbWUyIgppZiB0ZXN0ICIkX2dldGhvc3RieW5hbWUyIiA9IGF1dG8gOyB0aGVuCmNhdCA+ICRU TVBDIDw8IEVPRgojZGVmaW5lIF9CU0RfU09VUkNFCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2lu Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPG5ldGRiLmg+CmludCBtYWluKHZvaWQpIHsg Z2V0aG9zdGJ5bmFtZTIoIiIsIEFGX0lORVQpOyByZXR1cm4gMDsgfQpFT0YKICBfZ2V0aG9zdGJ5 bmFtZTI9bm8KICBpZiBjY19jaGVjayA7IHRoZW4KICAgIF9nZXRob3N0YnluYW1lMj15ZXMKICBm aQpmaQppZiB0ZXN0ICIkX2dldGhvc3RieW5hbWUyIiA9IHllcyA7IHRoZW4KICBkZWZfZ2V0aG9z dGJ5bmFtZTI9JyNkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FMiAxJwplbHNlCiAgZGVmX2dldGhv c3RieW5hbWUyPScjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FMicKZmkKZWNob3JlcyAiJF9nZXRo b3N0YnluYW1lMiIKCmVjaG9jaGVjayAiU0NUUCIKaWYgdGVzdCAiJF9zY3RwIiA9IGF1dG8gOyB0 aGVuCiAgX3NjdHA9bm8KICBpZiBoZWFkZXJfY2hlY2sgbmV0aW5ldC9zY3RwLmg7IHRoZW4KICAg IF9zY3RwPXllcwogIGZpCmZpCmlmIHRlc3QgIiRfc2N0cCIgPSBubyA7IHRoZW4KICBsaWJhdnBy b3RvY29scz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IHByb3RvY29sICdTQ1RQJykKZmkKZWNob3Jl cyAiJF9zY3RwIgoKZWNob2NoZWNrICJzeXMvdW4uaCIKdW5faD1ubwpoZWFkZXJfY2hlY2sgc3lz L3VuLmggJiYgdW5faD15ZXMKaWYgdGVzdCAiJHVuX2giID0gIm5vIiA7IHRoZW4KICBsaWJhdnBy b3RvY29scz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IHByb3RvY29sICdVTklYJykKZmkKZWNob3Jl cyAiJHVuX2giCgplY2hvY2hlY2sgInN5cy9wb2xsLmgiCnBvbGxfaD1ubwpkZWZfcG9sbF9oPScj ZGVmaW5lIEhBVkVfUE9MTF9IIDAnCmhlYWRlcl9jaGVjayBzeXMvcG9sbC5oICYmIHBvbGxfaD15 ZXMgJiYKICBkZWZfcG9sbF9oPScjZGVmaW5lIEhBVkVfUE9MTF9IIDEnCmVjaG9yZXMgIiRwb2xs X2giCgoKZWNob2NoZWNrICJpbnR0eXBlcy5oIChyZXF1aXJlZCkiCl9pbnR0eXBlcz1ubwpoZWFk ZXJfY2hlY2sgaW50dHlwZXMuaCAmJiBfaW50dHlwZXM9eWVzCmVjaG9yZXMgIiRfaW50dHlwZXMi CgppZiB0ZXN0ICIkX2ludHR5cGVzIiA9IG5vIDsgdGhlbgogIGVjaG9jaGVjayAic3lzL2JpdHlw ZXMuaCAoaW50dHlwZXMuaCBwcmVkZWNlc3NvcikiCiAgaGVhZGVyX2NoZWNrIHN5cy9iaXR5cGVz LmggJiYgX2ludHR5cGVzPXllcwogIGlmIHRlc3QgIiRfaW50dHlwZXMiID0geWVzIDsgdGhlbgog ICAgZGllICJZb3UgZG9uJ3QgaGF2ZSBpbnR0eXBlcy5oLCBidXQgc3lzL2JpdHlwZXMuaCBpcyBw cmVzZW50LiBQbGVhc2UgY29weSBldGMvaW50dHlwZXMuaCBpbnRvIHRoZSBpbmNsdWRlIHBhdGgs IGFuZCByZS1ydW4gY29uZmlndXJlLiIKICBlbHNlCiAgICBkaWUgIkNhbm5vdCBmaW5kIGhlYWRl ciBlaXRoZXIgaW50dHlwZXMuaCBvciBiaXR5cGVzLmguIFRoZXJlIGlzIG5vIGNoYW5jZSBmb3Ig Y29tcGlsYXRpb24gdG8gc3VjY2VlZC4iCiAgZmkKZmkKCgplY2hvY2hlY2sgImludF9mYXN0WFlf dCBpbiBpbnR0eXBlcy5oIgpfZmFzdF9pbnR0eXBlcz1ubwpzdGF0ZW1lbnRfY2hlY2sgImludHR5 cGVzLmgiICd2b2xhdGlsZSBpbnRfZmFzdDE2X3QgdiA9IDAnICYmIF9mYXN0X2ludHR5cGVzPXll cwppZiB0ZXN0ICIkX2Zhc3RfaW50dHlwZXMiID0gbm8gOyB0aGVuCiAgZGVmX2Zhc3RfaW50dHlw ZXM9JwogICAgdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFzdDhfdDsKICAgIHR5cGVkZWYgc2ln bmVkIGludCAgaW50X2Zhc3QxNl90OwogICAgdHlwZWRlZiBzaWduZWQgaW50ICBpbnRfZmFzdDMy X3Q7CiAgICB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50X2Zhc3Q2NF90OwogICAgdHlwZWRl ZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFzdDhfdDsKICAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICB1 aW50X2Zhc3QxNl90OwogICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHVpbnRfZmFzdDMyX3Q7CiAg ICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50X2Zhc3Q2NF90OycKZmkKZWNob3JlcyAi JF9mYXN0X2ludHR5cGVzIgoKCmVjaG9jaGVjayAibWFsbG9jLmgiCl9tYWxsb2M9bm8KaGVhZGVy X2NoZWNrIG1hbGxvYy5oICYmIF9tYWxsb2M9eWVzCmlmIHRlc3QgIiRfbWFsbG9jIiA9IHllcyA7 IHRoZW4KICBkZWZfbWFsbG9jX2g9JyNkZWZpbmUgSEFWRV9NQUxMT0NfSCAxJwplbHNlCiAgZGVm X21hbGxvY19oPScjZGVmaW5lIEhBVkVfTUFMTE9DX0ggMCcKZmkKZWNob3JlcyAiJF9tYWxsb2Mi CgoKZWNob2NoZWNrICJhbGlnbmVkIG1hbGxvYyIKYWxpZ25lZF9tYWxsb2M9bm8KZGVmX2FsaWdu ZWRfbWFsbG9jPScjZGVmaW5lIEhBVkVfQUxJR05FRF9NQUxMT0MgMCcKc3RhdGVtZW50X2NoZWNr IG1hbGxvYy5oICdfYWxpZ25lZF9tYWxsb2MoMCknICYmIGFsaWduZWRfbWFsbG9jPXllcyAmJgog IGRlZl9hbGlnbmVkX21hbGxvYz0nI2RlZmluZSBIQVZFX0FMSUdORURfTUFMTE9DIDEnCmVjaG9y ZXMgIiRhbGlnbmVkX21hbGxvYyIKCgplY2hvY2hlY2sgIm1lbWFsaWduKCkiCiMgWFhYIHJlc3Ry aWN0IHRvIHg4NiA/IGV4dGVuZCB0byBvdGhlciBDUFVzL2NhY2hlbGluZSBzaXplcyA/CmRlZl9t ZW1hbGlnbl9oYWNrPScjZGVmaW5lIENPTkZJR19NRU1BTElHTl9IQUNLIDAnCl9tZW1hbGlnbj1u bwpzdGF0ZW1lbnRfY2hlY2sgbWFsbG9jLmggJ21lbWFsaWduKDY0LCBzaXplb2YoY2hhcikpJyAm JiBfbWVtYWxpZ249eWVzCmlmIHRlc3QgIiRfbWVtYWxpZ24iID0geWVzIDsgdGhlbgogIGRlZl9t ZW1hbGlnbj0nI2RlZmluZSBIQVZFX01FTUFMSUdOIDEnCmVsc2UKICBkZWZfbWVtYWxpZ249JyNk ZWZpbmUgSEFWRV9NRU1BTElHTiAwJwogIGRlZl9tYXBfbWVtYWxpZ249JyNkZWZpbmUgbWVtYWxp Z24oYSwgYikgbWFsbG9jKGIpJwogIGRhcndpbiB8fCBkZWZfbWVtYWxpZ25faGFjaz0nI2RlZmlu ZSBDT05GSUdfTUVNQUxJR05fSEFDSyAxJwpmaQplY2hvcmVzICIkX21lbWFsaWduIgoKCmVjaG9j aGVjayAicG9zaXhfbWVtYWxpZ24oKSIKcG9zaXhfbWVtYWxpZ249bm8KZGVmX3Bvc2l4X21lbWFs aWduPScjZGVmaW5lIEhBVkVfUE9TSVhfTUVNQUxJR04gMCcKc3RhdGVtZW50X2NoZWNrIHN0ZGxp Yi5oICdwb3NpeF9tZW1hbGlnbihOVUxMLCAwLCAwKScgJiYKICAgIHBvc2l4X21lbWFsaWduPXll cyAmJiBkZWZfcG9zaXhfbWVtYWxpZ249JyNkZWZpbmUgSEFWRV9QT1NJWF9NRU1BTElHTiAxJwpl Y2hvcmVzICIkcG9zaXhfbWVtYWxpZ24iCgoKZWNob2NoZWNrICJhbGxvY2EuaCIKX2FsbG9jYT1u bwpzdGF0ZW1lbnRfY2hlY2sgYWxsb2NhLmggJ2FsbG9jYSgwKScgJiYgX2FsbG9jYT15ZXMKaWYg dGVzdCAiJF9hbGxvY2EiID0geWVzIDsgdGhlbgogIGRlZl9hbGxvY2FfaD0nI2RlZmluZSBIQVZF X0FMTE9DQV9IIDEnCmVsc2UKICBkZWZfYWxsb2NhX2g9JyN1bmRlZiBIQVZFX0FMTE9DQV9IJwpm aQplY2hvcmVzICIkX2FsbG9jYSIKCgplY2hvY2hlY2sgImZhc3RtZW1jcHkiCmlmIHRlc3QgIiRf ZmFzdG1lbWNweSIgPSB5ZXMgOyB0aGVuCiAgZGVmX2Zhc3RtZW1jcHk9JyNkZWZpbmUgQ09ORklH X0ZBU1RNRU1DUFkgMScKZWxzZQogIGRlZl9mYXN0bWVtY3B5PScjdW5kZWYgQ09ORklHX0ZBU1RN RU1DUFknCmZpCmVjaG9yZXMgIiRfZmFzdG1lbWNweSIKCgplY2hvY2hlY2sgImhhcmQtY29kZWQg dGFibGVzIgppZiB0ZXN0ICIkaGFyZGNvZGVkX3RhYmxlcyIgPSB5ZXMgOyB0aGVuCiAgZGVmX2hh cmRjb2RlZF90YWJsZXM9JyNkZWZpbmUgQ09ORklHX0hBUkRDT0RFRF9UQUJMRVMgMScKICBtYWtf aGFyZGNvZGVkX3RhYmxlcz0nQ09ORklHX0hBUkRDT0RFRF9UQUJMRVMgPSB5ZXMnCmVsc2UKICBk ZWZfaGFyZGNvZGVkX3RhYmxlcz0nI2RlZmluZSBDT05GSUdfSEFSRENPREVEX1RBQkxFUyAwJwpm aQplY2hvcmVzICIkaGFyZGNvZGVkX3RhYmxlcyIKCgplY2hvY2hlY2sgIm1tYW4uaCIKX21tYW49 bm8Kc3RhdGVtZW50X2NoZWNrIHN5cy9tbWFuLmggJ21tYXAoMCwgMCwgMCwgMCwgMCwgMCknICYm IF9tbWFuPXllcwppZiB0ZXN0ICIkX21tYW4iID0geWVzIDsgdGhlbgogIGRlZl9tbWFwPScjZGVm aW5lIEhBVkVfTU1BUCAxJwogIGRlZl9tbWFuX2g9JyNkZWZpbmUgSEFWRV9TWVNfTU1BTl9IIDEn CmVsc2UKICBkZWZfbW1hcD0nI2RlZmluZSBIQVZFX01NQVAgMCcKICBkZWZfbW1hbl9oPScjZGVm aW5lIEhBVkVfU1lTX01NQU5fSCAwJwogIG9zMiAmJiBtbWFwPW5vCmZpCmVjaG9yZXMgIiRfbW1h biIKCl9tbWFuX2hhc19tYXBfZmFpbGVkPW5vCnN0YXRlbWVudF9jaGVjayBzeXMvbW1hbi5oICd2 b2lkICpwID0gTUFQX0ZBSUxFRCcgJiYgX21tYW5faGFzX21hcF9mYWlsZWQ9eWVzCmlmIHRlc3Qg IiRfbW1hbl9oYXNfbWFwX2ZhaWxlZCIgPSB5ZXMgOyB0aGVuCiAgZGVmX21tYW5faGFzX21hcF9m YWlsZWQ9JycKZWxzZQogIGRlZl9tbWFuX2hhc19tYXBfZmFpbGVkPScjZGVmaW5lIE1BUF9GQUlM RUQgKCh2b2lkICopIC0xKScKZmkKCgplY2hvY2hlY2sgIm1wcm90ZWN0IgptcHJvdGVjdD1ubwpk ZWZfbXByb3RlY3Q9JyNkZWZpbmUgSEFWRV9NUFJPVEVDVCAwJwpzdGF0ZW1lbnRfY2hlY2tfYnJv a2VuIHN0ZGRlZi5oIHN5cy9tbWFuLmggJ21wcm90ZWN0KE5VTEwsIDAsIDApJyAmJiBtcHJvdGVj dD15ZXMKZWNob3JlcyAiJG1wcm90ZWN0IgoKCmVjaG9jaGVjayAiZHluYW1pYyBsb2FkZXIiCl9k bD1ubwpmb3IgbGRfdG1wIGluICIiIC1sZGw7IGRvCiAgc3RhdGVtZW50X2NoZWNrIGRsZmNuLmgg J2Rsb3BlbigiIiwgMCknICRsZF90bXAgJiYgbGRfZGw9IiRsZF90bXAiICYmIF9kbD15ZXMgJiYg YnJlYWsKZG9uZQppZiB0ZXN0ICIkX2RsIiA9IHllcyA7IHRoZW4KICBkZWZfZGw9JyNkZWZpbmUg SEFWRV9MSUJETCAxJwplbHNlCiAgZGVmX2RsPScjdW5kZWYgSEFWRV9MSUJETCcKZmkKZWNob3Jl cyAiJF9kbCIKCgplY2hvY2hlY2sgImR5bmFtaWMgYS92IHBsdWdpbnMgc3VwcG9ydCIKaWYgdGVz dCAiJF9kbCIgPSBubyA7IHRoZW4KICBfZHluYW1pY19wbHVnaW5zPW5vCmZpCmlmIHRlc3QgIiRf ZHluYW1pY19wbHVnaW5zIiA9IHllcyA7IHRoZW4KICBkZWZfZHluYW1pY19wbHVnaW5zPScjZGVm aW5lIENPTkZJR19EWU5BTUlDX1BMVUdJTlMgMScKZWxzZQogIGRlZl9keW5hbWljX3BsdWdpbnM9 JyN1bmRlZiBDT05GSUdfRFlOQU1JQ19QTFVHSU5TJwpmaQplY2hvcmVzICIkX2R5bmFtaWNfcGx1 Z2lucyIKCgpkZWZfdGhyZWFkcz0nI2RlZmluZSBIQVZFX1RIUkVBRFMgMCcKZGVmX3B0aHJlYWRz PScjZGVmaW5lIEhBVkVfUFRIUkVBRFMgMCcKZGVmX3czMnRocmVhZHM9JyNkZWZpbmUgSEFWRV9X MzJUSFJFQURTIDAnCmRlZl9vczJ0aHJlYWRzPScjZGVmaW5lIEhBVkVfT1MyVEhSRUFEUyAwJwoK ZWNob2NoZWNrICJwdGhyZWFkIgppZiBsaW51eCA7IHRoZW4KICBUSFJFQURfQ0ZMQUdTPS1EX1JF RU5UUkFOVAplbGlmIGZyZWVic2QgfHwgbmV0YnNkIHx8IG9wZW5ic2QgfHwgYnNkb3MgOyB0aGVu CiAgVEhSRUFEX0NGTEFHUz0tRF9USFJFQURfU0FGRQpmaQppZiB0ZXN0ICIkX3B0aHJlYWRzIiA9 IGF1dG8gOyB0aGVuCmNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8cHRocmVhZC5oPgpzdGF0 aWMgdm9pZCAqZnVuYyh2b2lkICphcmcpIHsgcmV0dXJuIGFyZzsgfQppbnQgbWFpbih2b2lkKSB7 IHB0aHJlYWRfdCB0aWQ7IHJldHVybiBwdGhyZWFkX2NyZWF0ZSgmdGlkLCAwLCBmdW5jLCAwKSA9 PSAwID8gMCA6IDE7IH0KRU9GCl9wdGhyZWFkcz1ubwppZiAhIGhwdXggOyB0aGVuCiAgZm9yIGxk X3RtcCBpbiAiLWxwdGhyZWFkR0MyIiAiIiAiLWxwdGhyZWFkIiAiLXB0aHJlYWQiIDsgZG8KICAg ICMgZm9yIGNyb3NzY29tcGlsYXRpb24sIHdlIGNhbm5vdCBleGVjdXRlIHRoZSBwcm9ncmFtLCBi ZSBoYXBweSBpZiB3ZSBjYW4gbGluayBzdGF0aWNhbGx5CiAgICBjY19jaGVjayAkVEhSRUFEX0NG TEFHUyAkbGRfdG1wICYmICh0bXBfcnVuIHx8IHRlc3QgIiRsZF9zdGF0aWMiKSAmJiBsZF9wdGhy ZWFkPSIkbGRfdG1wIiAmJiBfcHRocmVhZHM9eWVzICYmIGJyZWFrCiAgZG9uZQpmaQpmaQppZiB0 ZXN0ICIkX3B0aHJlYWRzIiA9IHllcyA7IHRoZW4KICB0ZXN0ICRsZF9wdGhyZWFkICYmIHJlc19j b21tZW50PSJ1c2luZyAkbGRfcHRocmVhZCIKICBkZWZfcHRocmVhZHM9JyNkZWZpbmUgSEFWRV9Q VEhSRUFEUyAxJwogIGRlZl90aHJlYWRzPScjZGVmaW5lIEhBVkVfVEhSRUFEUyAxJwogIGV4dHJh X2NmbGFncz0iJGV4dHJhX2NmbGFncyAkVEhSRUFEX0NGTEFHUyIKZWxzZQogIHJlc19jb21tZW50 PSJ2NGwsIHY0bDIsIGFvX25hcywgd2luMzIgbG9hZGVyIGRpc2FibGVkIgogIGRlZl9wdGhyZWFk cz0nI2RlZmluZSBIQVZFX1BUSFJFQURTIDAnCiAgX25hcz1ubyA7IF90dl92NGwxPW5vIDsgX3R2 X3Y0bDI9bm8KICBtaW5ndzMyIHx8IF93aW4zMmRsbD1ubwpmaQplY2hvcmVzICIkX3B0aHJlYWRz IgoKcHRocmVhZF9jYW5jZWw9bm8KaWYgdGVzdCAiJF9wdGhyZWFkcyIgPSB5ZXMgOyB0aGVuCiAg ZWNob2NoZWNrICJwdGhyZWFkX2NhbmNlbCIKY2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRlIDxw dGhyZWFkLmg+CmludCBtYWluKHZvaWQpIHsgcHRocmVhZF90IHQ7IHJldHVybiBwdGhyZWFkX2Nh bmNlbCh0KTsgfQpFT0YKICBjY19jaGVjayAkbGRfcHRocmVhZCAmJiBwdGhyZWFkX2NhbmNlbD15 ZXMKICBlY2hvcmVzICIkcHRocmVhZF9jYW5jZWwiCmZpCmlmIHRlc3QgIiRwdGhyZWFkX2NhbmNl bCIgPSB5ZXMgOyB0aGVuCiAgZGVmX3B0aHJlYWRfY2FuY2VsPScjZGVmaW5lIEhBVkVfUFRIUkVB RF9DQU5DRUwgMScKZWxzZQogIGRlZl9wdGhyZWFkX2NhbmNlbD0nI2RlZmluZSBIQVZFX1BUSFJF QURfQ0FOQ0VMIDAnCmZpCgppZiBjeWd3aW4gOyB0aGVuCiAgaWYgdGVzdCAiJF9wdGhyZWFkcyIg PSB5ZXMgOyB0aGVuCiAgICBkZWZfcHRocmVhZF9jYWNoZT0iI2RlZmluZSBQVEhSRUFEX0NBQ0hF IDEiCiAgZWxzZQogICAgX3N0cmVhbV9jYWNoZT1ubwogICAgZGVmX3N0cmVhbV9jYWNoZT0iI3Vu ZGVmIENPTkZJR19TVFJFQU1fQ0FDSEUiCiAgZmkKZmkKCgppZiB3aW4zMjsgdGhlbgplY2hvY2hl Y2sgInczMnRocmVhZHMiCmlmIHRlc3QgIiRfcHRocmVhZHMiID0geWVzIDsgdGhlbgogIHJlc19j b21tZW50PSJ1c2luZyBwdGhyZWFkIGluc3RlYWQiCiAgX3czMnRocmVhZHM9bm8KZmkKaWYgdGVz dCAiJF93MzJ0aHJlYWRzIiA9IGF1dG8gOyB0aGVuCiAgX3czMnRocmVhZHM9bm8KICBtaW5ndzMy ICYmIF93MzJ0aHJlYWRzPXllcwpmaQp0ZXN0ICIkX3czMnRocmVhZHMiID0geWVzICYmIGRlZl90 aHJlYWRzPScjZGVmaW5lIEhBVkVfVEhSRUFEUyAxJyAmJiBkZWZfdzMydGhyZWFkcz0nI2RlZmlu ZSBIQVZFX1czMlRIUkVBRFMgMScKZWNob3JlcyAiJF93MzJ0aHJlYWRzIgpmaSAjaWYgd2luMzI7 IHRoZW4KCgplY2hvY2hlY2sgImRpcmVjdC5oIgpfZGlyZWN0X2g9bm8KZGVmX2RpcmVjdF9oPScj ZGVmaW5lIEhBVkVfRElSRUNUX0ggMCcKaGVhZGVyX2NoZWNrIGRpcmVjdC5oICYmIF9kaXJlY3Rf aD15ZXMgJiYgZGVmX2RpcmVjdF9oPScjZGVmaW5lIEhBVkVfRElSRUNUX0ggMScKZWNob3JlcyAi JF9kaXJlY3RfaCIKCgppZiBvczIgOyB0aGVuCmVjaG9jaGVjayAib3MydGhyZWFkcyIKaWYgdGVz dCAiJF9wdGhyZWFkcyIgPSB5ZXMgOyB0aGVuCiAgcmVzX2NvbW1lbnQ9InVzaW5nIHB0aHJlYWQg aW5zdGVhZCIKICBfb3MydGhyZWFkcz1ubwpmaQppZiB0ZXN0ICIkX29zMnRocmVhZHMiID0gYXV0 byA7IHRoZW4KICBfb3MydGhyZWFkcz1ubwogIG9zMiAmJiBfb3MydGhyZWFkcz15ZXMKZmkKdGVz dCAiJF9vczJ0aHJlYWRzIiA9IHllcyAmJiBkZWZfdGhyZWFkcz0nI2RlZmluZSBIQVZFX1RIUkVB RFMgMScgJiYgZGVmX29zMnRocmVhZHM9JyNkZWZpbmUgSEFWRV9PUzJUSFJFQURTIDEnCmVjaG9y ZXMgIiRfb3MydGhyZWFkcyIKZmkgI2lmIG9zMgoKaWYgdGVzdCAiJF9vczJ0aHJlYWRzIiA9IHll cyB8fCB0ZXN0ICIkX3czMnRocmVhZHMiID0geWVzIHx8IHRlc3QgIiRfcHRocmVhZHMiID0geWVz IDsgdGhlbgogICAgX3RocmVhZHM9eWVzCmVsc2UKICAgIF90aHJlYWRzPW5vCmZpCgplY2hvY2hl Y2sgIndpbmRvd3MuaCIKd2luZG93c19oPW5vCmRlZl93aW5kb3dzX2g9JyNkZWZpbmUgSEFWRV9X SU5ET1dTX0ggMCcKaGVhZGVyX2NoZWNrIHdpbmRvd3MuaCAmJiB3aW5kb3dzX2g9eWVzICYmIGRl Zl93aW5kb3dzX2g9JyNkZWZpbmUgSEFWRV9XSU5ET1dTX0ggMScKZWNob3JlcyAiJHdpbmRvd3Nf aCIKCgplY2hvY2hlY2sgImlvLmgiCl9pb19oPW5vCmhlYWRlcl9jaGVjayBpby5oICYmIF9pb19o PXllcwppZiBbICRfaW9faCA9IHllcyBdOyB0aGVuCiAgZGVmX2lvX2g9JyNkZWZpbmUgSEFWRV9J T19IIDEnCmVsc2UKICBkZWZfaW9faD0nI2RlZmluZSBIQVZFX0lPX0ggMCcKZmkKZWNob3JlcyAi JF9pb19oIgoKCmVjaG9jaGVjayAicnBhdGgiCmlmIHRlc3QgIiRfcnBhdGgiID0geWVzIDsgdGhl bgogIGZvciBJIGluICQoZWNobyAkZXh0cmFfbGRmbGFncyB8IHNlZCAncy8tTC8vZycpIDsgZG8K ICAgIHRtcD0iJHRtcCAkKGVjaG8gJEkgfCBzZWQgJ3MvLiovIC1MJiAtV2wsLVImLycpIgogIGRv bmUKZXh0cmFfbGRmbGFncz0kdG1wCmZpCmVjaG9yZXMgIiRfcnBhdGgiCgplY2hvY2hlY2sgImlj b252IgppZiB0ZXN0ICIkX2ljb252IiA9IGF1dG8gOyB0aGVuCiAgY2F0ID4gJFRNUEMgPDwgRU9G CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxpY29udi5o PgojZGVmaW5lIElOQlVGU0laRSAxMDI0CiNkZWZpbmUgT1VUQlVGU0laRSA0MDk2CgpjaGFyIGlu YnVmZmVyW0lOQlVGU0laRV07CmNoYXIgb3V0YnVmZmVyW09VVEJVRlNJWkVdOwoKaW50IG1haW4o dm9pZCkgewogIHNpemVfdCBudW1yZWFkOwogIGljb252X3QgaWNkc2M7CiAgY2hhciAqdG9jb2Rl PSJVVEYtOCI7CiAgY2hhciAqZnJvbWNvZGU9ImNwMTI1MCI7CiAgaWYgKChpY2RzYyA9IGljb252 X29wZW4odG9jb2RlLCBmcm9tY29kZSkpICE9IChpY29udl90KSgtMSkpIHsKICAgIHdoaWxlICgo bnVtcmVhZCA9IHJlYWQoMCwgaW5idWZmZXIsIElOQlVGU0laRSkpKSB7CiAgICAgIGNoYXIgKmlw dHI9aW5idWZmZXI7CiAgICAgIGNoYXIgKm9wdHI9b3V0YnVmZmVyOwogICAgICBzaXplX3QgaW5s ZWZ0PW51bXJlYWQ7CiAgICAgIHNpemVfdCBvdXRsZWZ0PU9VVEJVRlNJWkU7CiAgICAgIGlmIChp Y29udihpY2RzYywgJmlwdHIsICZpbmxlZnQsICZvcHRyLCAmb3V0bGVmdCkKICAgICAgICAgICE9 IChzaXplX3QpKC0xKSkgewogICAgICAgIHdyaXRlKDEsIG91dGJ1ZmZlciwgT1VUQlVGU0laRSAt IG91dGxlZnQpOwogICAgICB9CiAgICB9CiAgICBpZiAoaWNvbnZfY2xvc2UoaWNkc2MpID09IC0x KQogICAgICA7CiAgfQogIHJldHVybiAwOwp9CkVPRgogIF9pY29udj1ubwogICMgTk9URTogLUwv dXNyL2xpYiBpcyBhIGhhY2sgdG8gYXZvaWQgaXNzdWVzIGR1ZSB0byBhCiAgIyBicm9rZW4gbGli aWNvbnYgdGhhdCBlLmcuIG1hY3BvcnRzIGluc3RhbGxzIGludG8gL29wdC9sb2NhbC9saWIKICAj IHdoaWNoIG1pZ2h0IGdldCBhZGRkZWQgdG8gdGhlIHNlYXJjaCBwYXRoIGxhdGVyIGJ5IGUuZy4g U0RMCiAgZm9yIGxkX3RtcCBpbiAiIiAiLUwvdXNyL2xpYiAtbGljb252IiAiLWxpY29udiIgIi1s aWNvbnYgJGxkX2RsIiA7IGRvCiAgICBjY19jaGVjayAkbGRfdG1wICYmIGV4dHJhX2xkZmxhZ3M9 IiRleHRyYV9sZGZsYWdzICRsZF90bXAiICYmCiAgICAgIGxkX2ljb252PSIkbGRfdG1wIiAmJiBf aWNvbnY9eWVzICYmIGJyZWFrCiAgZG9uZQpmaQppZiB0ZXN0ICIkX2ljb252IiA9IHllcyA7IHRo ZW4KICBkZWZfaWNvbnY9JyNkZWZpbmUgQ09ORklHX0lDT05WIDEnCmVsc2UKICBkZWZfaWNvbnY9 JyN1bmRlZiBDT05GSUdfSUNPTlYnCmZpCmVjaG9yZXMgIiRfaWNvbnYiCgoKZWNob2NoZWNrICJz b3VuZGNhcmQuaCIKX3NvdW5kY2FyZF9oPW5vCmRlZl9zb3VuZGNhcmRfaD0nI3VuZGVmIEhBVkVf U09VTkRDQVJEX0gnCmRlZl9zeXNfc291bmRjYXJkX2g9JyN1bmRlZiBIQVZFX1NZU19TT1VORENB UkRfSCcKZm9yIF9zb3VuZGNhcmRfaGVhZGVyIGluICJzeXMvc291bmRjYXJkLmgiICJzb3VuZGNh cmQuaCI7IGRvCiAgaGVhZGVyX2NoZWNrICRfc291bmRjYXJkX2hlYWRlciAmJiBfc291bmRjYXJk X2g9eWVzICYmCiAgICByZXNfY29tbWVudD0iJF9zb3VuZGNhcmRfaGVhZGVyIiAmJiBicmVhawpk b25lCgppZiB0ZXN0ICIkX3NvdW5kY2FyZF9oIiA9IHllcyA7IHRoZW4KICBpZiB0ZXN0ICRfc291 bmRjYXJkX2hlYWRlciA9ICJzeXMvc291bmRjYXJkLmgiOyB0aGVuCiAgICBkZWZfc3lzX3NvdW5k Y2FyZF9oPScjZGVmaW5lIEhBVkVfU1lTX1NPVU5EQ0FSRF9IIDEnCiAgZWxzZQogICAgZGVmX3Nv dW5kY2FyZF9oPScjZGVmaW5lIEhBVkVfU09VTkRDQVJEX0ggMScKICBmaQpmaQplY2hvcmVzICIk X3NvdW5kY2FyZF9oIgoKCmVjaG9jaGVjayAidGVybWNhcCIKaWYgdGVzdCAiJF90ZXJtY2FwIiA9 IGF1dG8gOyB0aGVuCiAgX3Rlcm1jYXA9bm8KICBmb3IgbGRfdG1wIGluICItbG5jdXJzZXMiICIt bHRpbmZvIiAiLWx0ZXJtY2FwIjsgZG8KICAgIHN0YXRlbWVudF9jaGVjayB0ZXJtLmggJ3RnZXRl bnQoMCwgMCknICRsZF90bXAgJiYKICAgICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3Mg JGxkX3RtcCIgJiYKICAgICAgbGRfdGVybWNhcD0iJGxkX3RtcCIgJiYgX3Rlcm1jYXA9eWVzICYm IGJyZWFrCiAgZG9uZQpmaQppZiB0ZXN0ICIkX3Rlcm1jYXAiID0geWVzIDsgdGhlbgogIGRlZl90 ZXJtY2FwPScjZGVmaW5lIEhBVkVfVEVSTUNBUCAxJwogIHRlc3QgJGxkX3Rlcm1jYXAgJiYgcmVz X2NvbW1lbnQ9InVzaW5nICRsZF90ZXJtY2FwIgplbHNlCiAgZGVmX3Rlcm1jYXA9JyN1bmRlZiBI QVZFX1RFUk1DQVAnCmZpCmVjaG9yZXMgIiRfdGVybWNhcCIKCgplY2hvY2hlY2sgInRlcm1pb3Mi CmRlZl90ZXJtaW9zPScjdW5kZWYgSEFWRV9URVJNSU9TJwpkZWZfdGVybWlvc19oPScjdW5kZWYg SEFWRV9URVJNSU9TX0gnCmRlZl90ZXJtaW9zX3N5c19oPScjdW5kZWYgSEFWRV9TWVNfVEVSTUlP U19IJwppZiB0ZXN0ICIkX3Rlcm1pb3MiID0gYXV0byA7IHRoZW4KICBfdGVybWlvcz1ubwogIGZv ciBfdGVybWlvc19oZWFkZXIgaW4gInRlcm1pb3MuaCIgInN5cy90ZXJtaW9zLmgiOyBkbwogIGhl YWRlcl9jaGVjayAkX3Rlcm1pb3NfaGVhZGVyICYmIF90ZXJtaW9zPXllcyAmJgogICAgcmVzX2Nv bW1lbnQ9InVzaW5nICRfdGVybWlvc19oZWFkZXIiICYmIGJyZWFrCmRvbmUKZmkKCmlmIHRlc3Qg IiRfdGVybWlvcyIgPSB5ZXMgOyB0aGVuCiAgZGVmX3Rlcm1pb3M9JyNkZWZpbmUgSEFWRV9URVJN SU9TIDEnCiAgaWYgdGVzdCAiJF90ZXJtaW9zX2hlYWRlciIgPSAidGVybWlvcy5oIiA7IHRoZW4K ICAgIGRlZl90ZXJtaW9zX2g9JyNkZWZpbmUgSEFWRV9URVJNSU9TX0ggMScKICBlbHNlCiAgICBk ZWZfdGVybWlvc19zeXNfaD0nI2RlZmluZSBIQVZFX1NZU19URVJNSU9TX0ggMScKICBmaQpmaQpl Y2hvcmVzICIkX3Rlcm1pb3MiCgoKZWNob2NoZWNrICJzaG0iCmlmIHRlc3QgIiRfc2htIiA9IGF1 dG8gOyB0aGVuCiAgX3NobT1ubwogIHN0YXRlbWVudF9jaGVjayBzeXMvc2htLmggJ3NobWdldCgw LCAwLCAwKTsgc2htYXQoMCwgMCwgMCk7IHNobWN0bCgwLCAwLCAwKScgJiYgX3NobT15ZXMKZmkK aWYgdGVzdCAiJF9zaG0iID0geWVzIDsgdGhlbgogIGRlZl9zaG09JyNkZWZpbmUgSEFWRV9TSE0g MScKZWxzZQogIGRlZl9zaG09JyN1bmRlZiBIQVZFX1NITScKZmkKZWNob3JlcyAiJF9zaG0iCgoK ZWNob2NoZWNrICJzdHJzZXAoKSIKc3Ryc2VwPXllcwpkZWZfc3Ryc2VwPScjZGVmaW5lIEhBVkVf U1RSU0VQIDEnCmRlZmluZV9zdGF0ZW1lbnRfY2hlY2sgX0JTRF9TT1VSQ0Ugc3RyaW5nLmggJ2No YXIgKnMgPSAiSGVsbG8sIHdvcmxkISI7IHN0cnNlcCgmcywgIiwiKScgfHwKICAgIHsgc3Ryc2Vw PW5vIDsgZGVmX3N0cnNlcD0nI3VuZGVmIEhBVkVfU1RSU0VQJyA7IH0KZWNob3JlcyAiJHN0cnNl cCIKCgplY2hvY2hlY2sgInZzc2NhbmYoKSIKdnNzY2FuZj15ZXMKZGVmX3Zzc2NhbmY9JyNkZWZp bmUgSEFWRV9WU1NDQU5GIDEnCnN0YXRlbWVudF9jaGVja19icm9rZW4gc3RkYXJnLmggc3RkaW8u aCAndmFfbGlzdCBhcDsgdnNzY2FuZigiZm9vIiwgImJhciIsIGFwKScgfHwKICAgIHsgdnNzY2Fu Zj1ubyA7IGRlZl92c3NjYW5mPScjdW5kZWYgSEFWRV9WU1NDQU5GJyA7IH0KZWNob3JlcyAiJHZz c2NhbmYiCgoKZWNob2NoZWNrICJQT1NJWCBzZWxlY3QoKSIKY2F0ID4gJFRNUEMgPDwgRU9GCiNp bmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHVu aXN0ZC5oPgppbnQgbWFpbih2b2lkKSB7aW50IG5mZHMgPSAxOyBmZF9zZXQgcmVhZGZkczsgc3Ry dWN0IHRpbWV2YWwgdGltZW91dDsgc2VsZWN0KG5mZHMsICZyZWFkZmRzLCBOVUxMLCBOVUxMLCAm dGltZW91dCk7IHJldHVybiAwOyB9CkVPRgpfcG9zaXhfc2VsZWN0PW5vCmRlZl9wb3NpeF9zZWxl Y3Q9JyN1bmRlZiBIQVZFX1BPU0lYX1NFTEVDVCcKI3NlbGVjdCgpIG9mIGtMSUJDIChPUy8yKSBz dXBwb3J0cyBzb2NrZXQgb25seQohIG9zMiAmJiBjY19jaGVjayAmJiBfcG9zaXhfc2VsZWN0PXll cyAmJgogICAgZGVmX3Bvc2l4X3NlbGVjdD0nI2RlZmluZSBIQVZFX1BPU0lYX1NFTEVDVCAxJwpl Y2hvcmVzICIkX3Bvc2l4X3NlbGVjdCIKCgplY2hvY2hlY2sgImF1ZGlvIHNlbGVjdCgpIgppZiB0 ZXN0ICIkX3NlbGVjdCIgPSBubyA7IHRoZW4KICBkZWZfc2VsZWN0PScjdW5kZWYgSEFWRV9BVURJ T19TRUxFQ1QnCmVsaWYgdGVzdCAgIiRfc2VsZWN0IiA9IHllcyA7IHRoZW4KICBkZWZfc2VsZWN0 PScjZGVmaW5lIEhBVkVfQVVESU9fU0VMRUNUIDEnCmZpCmVjaG9yZXMgIiRfc2VsZWN0IgoKCmVj aG9jaGVjayAiZ2V0dGltZW9mZGF5KCkiCmdldHRpbWVvZmRheT15ZXMKZGVmX2dldHRpbWVvZmRh eT0nI2RlZmluZSBIQVZFX0dFVFRJTUVPRkRBWSAxJwpzdGF0ZW1lbnRfY2hlY2tfYnJva2VuIHN0 ZGRlZi5oIHN5cy90aW1lLmggJ3N0cnVjdCB0aW1ldmFsIHR2OyBnZXR0aW1lb2ZkYXkoJnR2LCBO VUxMKScgfHwKICAgIHsgZ2V0dGltZW9mZGF5PW5vIDsgZGVmX2dldHRpbWVvZmRheT0nI3VuZGVm IEhBVkVfR0VUVElNRU9GREFZJyA7IH0KZWNob3JlcyAiJGdldHRpbWVvZmRheSIKCgplY2hvY2hl Y2sgImNsb2NrX2dldHRpbWUoKSIKY2xvY2tfZ2V0dGltZT1ubwpkZWZfY2xvY2tfZ2V0dGltZT0n I3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRScKc3RhdGVtZW50X2NoZWNrX2Jyb2tlbiBzdGRkZWYu aCB0aW1lLmggJ3N0cnVjdCB0aW1lc3BlYyB0cDsgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9O SUMsICZ0cCknIC1scnQgJiYKICAgIHsgY2xvY2tfZ2V0dGltZT15ZXMgOyBkZWZfY2xvY2tfZ2V0 dGltZT0nI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMScgOyBleHRyYV9sZGZsYWdzPSIkZXh0 cmFfbGRmbGFncyAtbHJ0IiA7IH0KZWNob3JlcyAiJGNsb2NrX2dldHRpbWUiCgoKZWNob2NoZWNr ICJnbG9iKCkiCiMgZ2xvYl93aW4gZGlzYWJsZXMgYSBXaW5kb3dzLXNwZWNpZmljIGdsb2IoKSBy ZXBsYWNlbWVudC4KZ2xvYj15ZXMKZ2xvYl93aW49eWVzCmRlZl9nbG9iPScjZGVmaW5lIEhBVkVf R0xPQiAxJwpzdGF0ZW1lbnRfY2hlY2sgZ2xvYi5oICdnbG9iKCJmaWxlbmFtZSIsIDAsIDAsIDAp JyB8fAogICAgeyBnbG9iPW5vIDsgZGVmX2dsb2I9JyN1bmRlZiBIQVZFX0dMT0InIDsKICAgICAg bWluZ3czMiAmJiBnbG9iX3dpbj1ubyA7IH0KZWNob3JlcyAiJGdsb2IiCgoKZWNob2NoZWNrICJz ZXRlbnYoKSIKc2V0ZW52PXllcwpkZWZfc2V0ZW52PScjZGVmaW5lIEhBVkVfU0VURU5WIDEnCnN0 YXRlbWVudF9jaGVjayBzdGRsaWIuaCAnc2V0ZW52KCIiLCAiIiwgMCknIHx8CiAgICB7IHNldGVu dj1ubyA7IGRlZl9zZXRlbnY9JyNkZWZpbmUgSEFWRV9TRVRFTlYgMCcgOyB9CmVjaG9yZXMgIiRz ZXRlbnYiCgoKZWNob2NoZWNrICJzZXRtb2RlKCkiCl9zZXRtb2RlPW5vCmRlZl9zZXRtb2RlPScj ZGVmaW5lIEhBVkVfU0VUTU9ERSAwJwpzdGF0ZW1lbnRfY2hlY2sgaW8uaCAnc2V0bW9kZSgwLCAw KScgJiYgX3NldG1vZGU9eWVzICYmIGRlZl9zZXRtb2RlPScjZGVmaW5lIEhBVkVfU0VUTU9ERSAx JwplY2hvcmVzICIkX3NldG1vZGUiCgoKaWYgc3Vub3M7IHRoZW4KZWNob2NoZWNrICJzeXNpODYo KSIKX3N5c2k4Nj1ubwpkZWZfc3lzaTg2PScjZGVmaW5lIEhBVkVfU1lTSTg2IDAnCnN0YXRlbWVu dF9jaGVjayBzeXMvc3lzaTg2LmggJ2ludCBzeXNpODYoaW50LCB2b2lkKik7IHN5c2k4NigwKScg JiYKICBfc3lzaTg2PXllcyAmJiBkZWZfc3lzaTg2PScjZGVmaW5lIEhBVkVfU1lTSTg2IDEnCmVj aG9yZXMgIiRfc3lzaTg2IgpmaSAjaWYgc3Vub3MKCgplY2hvY2hlY2sgInN5cy9zeXNpbmZvLmgi Cl9zeXNfc3lzaW5mbz1ubwpzdGF0ZW1lbnRfY2hlY2sgc3lzL3N5c2luZm8uaCAnc3RydWN0IHN5 c2luZm8gc19pbmZvOyBzX2luZm8ubWVtX3VuaXQ9MDsgc3lzaW5mbygmc19pbmZvKScgJiYgX3N5 c19zeXNpbmZvPXllcwppZiB0ZXN0ICIkX3N5c19zeXNpbmZvIiA9IHllcyA7IHRoZW4KICBkZWZf c3lzX3N5c2luZm9faD0nI2RlZmluZSBIQVZFX1NZU19TWVNJTkZPX0ggMScKZWxzZQogIGRlZl9z eXNfc3lzaW5mb19oPScjdW5kZWYgSEFWRV9TWVNfU1lTSU5GT19IJwpmaQplY2hvcmVzICIkX3N5 c19zeXNpbmZvIgoKCmlmIGRhcndpbjsgdGhlbgoKZWNob2NoZWNrICJNYWMgT1MgWCBGaW5kZXIg U3VwcG9ydCIKZGVmX21hY29zeF9maW5kZXI9JyN1bmRlZiBDT05GSUdfTUFDT1NYX0ZJTkRFUicK aWYgdGVzdCAiJF9tYWNvc3hfZmluZGVyIiA9IHllcyA7IHRoZW4KICBkZWZfbWFjb3N4X2ZpbmRl cj0nI2RlZmluZSBDT05GSUdfTUFDT1NYX0ZJTkRFUiAxJwogIGV4dHJhX2xkZmxhZ3M9IiRleHRy YV9sZGZsYWdzIC1mcmFtZXdvcmsgQ2FyYm9uIgpmaQplY2hvcmVzICIkX21hY29zeF9maW5kZXIi CgplY2hvY2hlY2sgIk1hYyBPUyBYIEJ1bmRsZSBmaWxlIGxvY2F0aW9ucyIKZGVmX21hY29zeF9i dW5kbGU9JyN1bmRlZiBDT05GSUdfTUFDT1NYX0JVTkRMRScKdGVzdCAiJF9tYWNvc3hfYnVuZGxl IiA9IGF1dG8gJiYgX21hY29zeF9idW5kbGU9JF9tYWNvc3hfZmluZGVyCmlmIHRlc3QgIiRfbWFj b3N4X2J1bmRsZSIgPSB5ZXMgOyB0aGVuCiAgZGVmX21hY29zeF9idW5kbGU9JyNkZWZpbmUgQ09O RklHX01BQ09TWF9CVU5ETEUgMScKICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtZnJh bWV3b3JrIENhcmJvbiIKZmkKZWNob3JlcyAiJF9tYWNvc3hfYnVuZGxlIgoKZWNob2NoZWNrICJB cHBsZSBSZW1vdGUiCmlmIHRlc3QgIiRfYXBwbGVfcmVtb3RlIiA9IGF1dG8gOyB0aGVuCiAgX2Fw cGxlX3JlbW90ZT1ubwogIGNhdCA+ICRUTVBDIDw8RU9GCiNpbmNsdWRlIDxzdGRpby5oPgojaW5j bHVkZSA8SU9LaXQvSU9DRlBsdWdJbi5oPgppbnQgbWFpbih2b2lkKSB7CiAgaW9faXRlcmF0b3Jf dCBoaWRPYmplY3RJdGVyYXRvciA9IChpb19pdGVyYXRvcl90KU5VTEw7CiAgQ0ZNdXRhYmxlRGlj dGlvbmFyeVJlZiBoaWRNYXRjaERpY3Rpb25hcnk7CiAgSU9SZXR1cm4gaW9SZXR1cm5WYWx1ZTsK CiAgLy8gU2V0IHVwIGEgbWF0Y2hpbmcgZGljdGlvbmFyeSB0byBzZWFyY2ggdGhlIEkvTyBSZWdp c3RyeSBieSBjbGFzcy4KICAvLyBuYW1lIGZvciBhbGwgSElEIGNsYXNzIGRldmljZXMKICBoaWRN YXRjaERpY3Rpb25hcnkgPSBJT1NlcnZpY2VNYXRjaGluZygiQXBwbGVJUkNvbnRyb2xsZXIiKTsK CiAgLy8gTm93IHNlYXJjaCBJL08gUmVnaXN0cnkgZm9yIG1hdGNoaW5nIGRldmljZXMuCiAgaW9S ZXR1cm5WYWx1ZSA9IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMoa0lPTWFzdGVyUG9ydERl ZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICBoaWRNYXRjaERpY3Rpb25hcnksICZoaWRPYmpl Y3RJdGVyYXRvcik7CgogIC8vIElmIHNlYXJjaCBpcyB1bnN1Y2Nlc3NmdWwsIHJldHVybiBub256 ZXJvLgogIGlmIChpb1JldHVyblZhbHVlICE9IGtJT1JldHVyblN1Y2Nlc3MgfHwKICAgICAgICAg ICAgICAgICAgICAgICAhSU9JdGVyYXRvcklzVmFsaWQoaGlkT2JqZWN0SXRlcmF0b3IpKSB7CiAg ICByZXR1cm4gMTsKICB9CiAgcmV0dXJuIDA7Cn0KRU9GCiAgY2NfY2hlY2sgLWZyYW1ld29yayBJ T0tpdCAmJiBfYXBwbGVfcmVtb3RlPXllcwpmaQppZiB0ZXN0ICIkX2FwcGxlX3JlbW90ZSIgPSB5 ZXMgOyB0aGVuCiAgZGVmX2FwcGxlX3JlbW90ZT0nI2RlZmluZSBDT05GSUdfQVBQTEVfUkVNT1RF IDEnCiAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVyIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l d29yayBDb2NvYSIKZWxzZQogIGRlZl9hcHBsZV9yZW1vdGU9JyN1bmRlZiBDT05GSUdfQVBQTEVf UkVNT1RFJwpmaQplY2hvcmVzICIkX2FwcGxlX3JlbW90ZSIKCmZpICNpZiBkYXJ3aW4KCmlmIGxp bnV4OyB0aGVuCgplY2hvY2hlY2sgIkFwcGxlIElSIgppZiB0ZXN0ICIkX2FwcGxlX2lyIiA9IGF1 dG8gOyB0aGVuCiAgX2FwcGxlX2lyPW5vCiAgc3RhdGVtZW50X2NoZWNrIGxpbnV4L2lucHV0Lmgg J3N0cnVjdCBpbnB1dF9ldmVudCBldjsgc3RydWN0IGlucHV0X2lkIGlkJyAmJiBfYXBwbGVfaXI9 eWVzCmZpCmlmIHRlc3QgIiRfYXBwbGVfaXIiID0geWVzIDsgdGhlbgogIGRlZl9hcHBsZV9pcj0n I2RlZmluZSBDT05GSUdfQVBQTEVfSVIgMScKZWxzZQogIGRlZl9hcHBsZV9pcj0nI3VuZGVmIENP TkZJR19BUFBMRV9JUicKZmkKZWNob3JlcyAiJF9hcHBsZV9pciIKZmkgI2lmIGxpbnV4CgplY2hv Y2hlY2sgInBrZy1jb25maWciCl9wa2dfY29uZmlnPXBrZy1jb25maWcKaWYgJCgkX3BrZ19jb25m aWcgLS12ZXJzaW9uID4gL2Rldi9udWxsIDI+JjEpOyB0aGVuCiAgaWYgdGVzdCAiJGxkX3N0YXRp YyI7IHRoZW4KICAgIF9wa2dfY29uZmlnPSIkX3BrZ19jb25maWcgLS1zdGF0aWMiCiAgZmkKICBl Y2hvcmVzICJ5ZXMiCmVsc2UKICBfcGtnX2NvbmZpZz1mYWxzZQogIGVjaG9yZXMgIm5vIgpmaQoK CmVjaG9jaGVjayAiR251VExTIgppZiB0ZXN0ICIkX2dudXRscyIgPSBhdXRvIDsgdGhlbgogIF9n bnV0bHM9bm8KICBpZiAkX3BrZ19jb25maWcgLS1leGlzdHMgZ251dGxzIDsgdGhlbgoJICBzdGF0 ZW1lbnRfY2hlY2sgZ251dGxzL2dudXRscy5oICdnbnV0bHNfZ2xvYmFsX2luaXQoKScgJCgkX3Br Z19jb25maWcgLS1saWJzIC0tY2ZsYWdzIGdudXRscykgJiYKICAgICAgX2dudXRscz15ZXMKICBm aQpmaQppZiB0ZXN0ICIkX2dudXRscyIgPSB5ZXMgOyB0aGVuCiAgZGVmX2dudXRscz0nI2RlZmlu ZSBDT05GSUdfR05VVExTIDEnCiAgbGliYXZwcm90b2NvbHM9IiRsaWJhdnByb3RvY29scyBIVFRQ U19QUk9UT0NPTCBUTFNfUFJPVE9DT0wgVExTX0dOVVRMU19QUk9UT0NPTCIKICBleHRyYV9jZmxh Z3M9IiRleHRyYV9jZmxhZ3MgJCgkX3BrZ19jb25maWcgLS1jZmxhZ3MgZ251dGxzKSIKICBleHRy YV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAkKCRfcGtnX2NvbmZpZyAtLWxpYnMgZ251dGxzKSIK ZWxzZQogIGRlZl9nbnV0bHM9JyNkZWZpbmUgQ09ORklHX0dOVVRMUyAwJwpmaQplY2hvcmVzICIk X2dudXRscyIKCmVjaG9jaGVjayAiU2FtYmEgc3VwcG9ydCAobGlic21iY2xpZW50KSIKaWYgdGVz dCAiJF9zbWIiID0geWVzOyB0aGVuCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxz bWJjbGllbnQiCmZpCmlmIHRlc3QgIiRfc21iIiA9IGF1dG87IHRoZW4KICBfc21iPW5vCiAgcGtn X2luYz0kKCRfcGtnX2NvbmZpZyAtLWNmbGFncyBzbWJjbGllbnQgMj4vZGV2L251bGwpCiAgZm9y IGxkX3RtcCBpbiAiLWxzbWJjbGllbnQiICItbHNtYmNsaWVudCAkbGRfZGwiICItbHNtYmNsaWVu dCAkbGRfZGwgLWxuc2wiICItbHNtYmNsaWVudCAkbGRfZGwgLWxzc2wgLWxuc2wiIDsgZG8KICAg IHN0YXRlbWVudF9jaGVjayBsaWJzbWJjbGllbnQuaCAnc21iY19vcGVuZGlyKCJzbWI6Ly8iKScg JGxkX3RtcCAmJgogICAgICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAkbGRfdG1wIiAm JiBfc21iPXllcyAmJiBicmVhawogICAgc3RhdGVtZW50X2NoZWNrIGxpYnNtYmNsaWVudC5oICdz bWJjX29wZW5kaXIoInNtYjovLyIpJyAkbGRfdG1wICRwa2dfaW5jICYmCiAgICAgIGV4dHJhX2xk ZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRsZF90bXAiICYmIGV4dHJhX2NmbGFncz0iJGV4dHJhX2Nm bGFncyAkcGtnX2luYyIgJiYgX3NtYj15ZXMgJiYgYnJlYWsKICBkb25lCmZpCgppZiB0ZXN0ICIk X3NtYiIgPSB5ZXM7IHRoZW4KICAgIGRlZl9zbWI9IiNkZWZpbmUgQ09ORklHX0xJQlNNQkNMSUVO VCAxIgogICAgaW5wdXRtb2R1bGVzPSJzbWIgJGlucHV0bW9kdWxlcyIKZWxzZQogICAgZGVmX3Nt Yj0iI3VuZGVmIENPTkZJR19MSUJTTUJDTElFTlQiCiAgICBub2lucHV0bW9kdWxlcz0ic21iICRu b2lucHV0bW9kdWxlcyIKZmkKZWNob3JlcyAiJF9zbWIiCgoKIyMjIyMjIyMjCiMgVklERU8gIwoj IyMjIyMjIyMKCgplY2hvY2hlY2sgIi9kZXYvbWdhX3ZpZCIKaWYgdGVzdCAiJF9tZ2EiID0gYXV0 byA7IHRoZW4KICBfbWdhPW5vCiAgdGVzdCAtYyAvZGV2L21nYV92aWQgJiYgX21nYT15ZXMKZmkK aWYgdGVzdCAiJF9tZ2EiID0geWVzIDsgdGhlbgogIGRlZl9tZ2E9JyNkZWZpbmUgQ09ORklHX01H QSAxJwogIHZvbW9kdWxlcz0ibWdhICR2b21vZHVsZXMiCmVsc2UKICBkZWZfbWdhPScjdW5kZWYg Q09ORklHX01HQScKICBub3ZvbW9kdWxlcz0ibWdhICRub3ZvbW9kdWxlcyIKZmkKZWNob3JlcyAi JF9tZ2EiCgoKZWNob2NoZWNrICJ0ZGZ4ZmIiCmlmIHRlc3QgIiRfdGRmeGZiIiA9IHllcyA7IHRo ZW4KICBkZWZfdGRmeGZiPScjZGVmaW5lIENPTkZJR19UREZYRkIgMScKICB2b21vZHVsZXM9InRk ZnhmYiAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX3RkZnhmYj0nI3VuZGVmIENPTkZJR19UREZYRkIn CiAgbm92b21vZHVsZXM9InRkZnhmYiAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfdGRmeGZi IgoKZWNob2NoZWNrICJzM2ZiIgppZiB0ZXN0ICIkX3MzZmIiID0geWVzIDsgdGhlbgogIGRlZl9z M2ZiPScjZGVmaW5lIENPTkZJR19TM0ZCIDEnCiAgdm9tb2R1bGVzPSJzM2ZiICR2b21vZHVsZXMi CmVsc2UKICBkZWZfczNmYj0nI3VuZGVmIENPTkZJR19TM0ZCJwogIG5vdm9tb2R1bGVzPSJzM2Zi ICRub3ZvbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9zM2ZiIgoKZWNob2NoZWNrICJ3aWkiCmlmIHRl c3QgIiRfd2lpIiA9IHllcyA7IHRoZW4KICBkZWZfd2lpPScjZGVmaW5lIENPTkZJR19XSUkgMScK ICB2b21vZHVsZXM9IndpaSAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX3dpaT0nI3VuZGVmIENPTkZJ R19XSUknCiAgbm92b21vZHVsZXM9IndpaSAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfd2lp IgoKZWNob2NoZWNrICJ0ZGZ4dmlkIgppZiB0ZXN0ICIkX3RkZnh2aWQiID0geWVzIDsgdGhlbgog IGRlZl90ZGZ4dmlkPScjZGVmaW5lIENPTkZJR19UREZYX1ZJRCAxJwogIHZvbW9kdWxlcz0idGRm eF92aWQgJHZvbW9kdWxlcyIKZWxzZQogIGRlZl90ZGZ4dmlkPScjdW5kZWYgQ09ORklHX1RERlhf VklEJwogIG5vdm9tb2R1bGVzPSJ0ZGZ4X3ZpZCAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRf dGRmeHZpZCIKCmVjaG9jaGVjayAieHZyMTAwIgppZiB0ZXN0ICIkX3h2cjEwMCIgPSBhdXRvIDsg dGhlbgpjYXQgPiAkVE1QQyA8PCBFT0YKI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lz L2ZiaW8uaD4KI2luY2x1ZGUgPHN5cy92aXN1YWxfaW8uaD4KaW50IG1haW4odm9pZCkgewpzdHJ1 Y3QgdmlzX2lkZW50aWZpZXIgaWRlbnQ7CnN0cnVjdCBmYmdhdHRyIGF0dHI7CmlvY3RsKDAsIFZJ U19HRVRJREVOVElGSUVSLCAmaWRlbnQpOwppb2N0bCgwLCBGQklPR0FUVFIsICZhdHRyKTsKcmV0 dXJuIDA7Cn0KRU9GCiAgX3h2cjEwMD1ubwogIGNjX2NoZWNrICYmIF94dnIxMDA9eWVzCmZpCmlm IHRlc3QgIiRfeHZyMTAwIiA9IHllcyA7IHRoZW4KICBkZWZfeHZyMTAwPScjZGVmaW5lIENPTkZJ R19YVlIxMDAgMScKICB2b21vZHVsZXM9Inh2cjEwMCAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX3Rk Znh2aWQ9JyN1bmRlZiBDT05GSUdfWFZSMTAwJwogIG5vdm9tb2R1bGVzPSJ4dnIxMDAgJG5vdm9t b2R1bGVzIgpmaQplY2hvcmVzICIkX3h2cjEwMCIKCmVjaG9jaGVjayAidGdhIgppZiB0ZXN0ICIk X3RnYSIgPSB5ZXMgOyB0aGVuCiAgZGVmX3RnYT0nI2RlZmluZSBDT05GSUdfVEdBIDEnCiAgdm9t b2R1bGVzPSJ0Z2EgJHZvbW9kdWxlcyIKZWxzZQogIGRlZl90Z2E9JyN1bmRlZiBDT05GSUdfVEdB JwogIG5vdm9tb2R1bGVzPSJ0Z2EgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX3RnYSIKCgpl Y2hvY2hlY2sgIm1kNXN1bSBzdXBwb3J0IgppZiB0ZXN0ICIkX21kNXN1bSIgPSB5ZXM7IHRoZW4K ICBkZWZfbWQ1c3VtPSIjZGVmaW5lIENPTkZJR19NRDVTVU0gMSIKICB2b21vZHVsZXM9Im1kNXN1 bSAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX21kNXN1bT0iI3VuZGVmIENPTkZJR19NRDVTVU0iCiAg bm92b21vZHVsZXM9Im1kNXN1bSAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfbWQ1c3VtIgoK CmVjaG9jaGVjayAieXV2NG1wZWcgc3VwcG9ydCIKaWYgdGVzdCAiJF95dXY0bXBlZyIgPSB5ZXM7 IHRoZW4KICBkZWZfeXV2NG1wZWc9IiNkZWZpbmUgQ09ORklHX1lVVjRNUEVHIDEiCiAgdm9tb2R1 bGVzPSJ5dXY0bXBlZyAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX3l1djRtcGVnPSIjdW5kZWYgQ09O RklHX1lVVjRNUEVHIgogIG5vdm9tb2R1bGVzPSJ5dXY0bXBlZyAkbm92b21vZHVsZXMiCmZpCmVj aG9yZXMgIiRfeXV2NG1wZWciCgoKZWNob2NoZWNrICJibCIKaWYgdGVzdCAiJF9ibCIgPSB5ZXMg OyB0aGVuCiAgZGVmX2JsPScjZGVmaW5lIENPTkZJR19CTCAxJwogIHZvbW9kdWxlcz0iYmwgJHZv bW9kdWxlcyIKZWxzZQogIGRlZl9ibD0nI3VuZGVmIENPTkZJR19CTCcKICBub3ZvbW9kdWxlcz0i YmwgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX2JsIgoKCmVjaG9jaGVjayAiRGlyZWN0RkIi CmlmIHRlc3QgIiRfZGlyZWN0ZmIiID0gYXV0byA7IHRoZW4KICBfZGlyZWN0ZmI9bm8KICBjYXQg PiAkVE1QQyA8PCBFT0YKI2luY2x1ZGUgPGRpcmVjdGZiLmg+CiNpbmNsdWRlIDxkaXJlY3RmYl92 ZXJzaW9uLmg+CiNpZiAoRElSRUNURkJfTUFKT1JfVkVSU0lPTiA8PCAxNiB8IERJUkVDVEZCX01J Tk9SX1ZFUlNJT04gPDwgOCB8IERJUkVDVEZCX01JQ1JPX1ZFUlNJT04pIDwgKDAgPDwgMTYgfCA5 IDw8IDggfCAyMikKI2Vycm9yICJEaXJlY3RGQiB2ZXJzaW9uIHRvbyBvbGQuIgojZW5kaWYKaW50 IG1haW4odm9pZCkgeyBEaXJlY3RGQkluaXQoMCwgMCk7IHJldHVybiAwOyB9CkVPRgogIGZvciBp bmNfdG1wIGluICIiIC1JL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVjdGZiIC1JL3Vzci9pbmNsdWRl L2RpcmVjdGZiIC1JL3Vzci9sb2NhbC9pbmNsdWRlOyBkbwogICAgY2NfY2hlY2sgJGluY190bXAg LWxkaXJlY3RmYiAmJgogICAgICBfZGlyZWN0ZmI9eWVzICYmIGV4dHJhX2NmbGFncz0iJGV4dHJh X2NmbGFncyAkaW5jX3RtcCIgJiYgYnJlYWsKICBkb25lCmZpCmlmIHRlc3QgIiRfZGlyZWN0ZmIi ID0geWVzIDsgdGhlbgogIGRlZl9kaXJlY3RmYj0nI2RlZmluZSBDT05GSUdfRElSRUNURkIgMScK ICB2b21vZHVsZXM9ImRpcmVjdGZiIGRmYm1nYSAkdm9tb2R1bGVzIgogIGxpYnNfbXBsYXllcj0i JGxpYnNfbXBsYXllciAtbGRpcmVjdGZiIgplbHNlCiAgZGVmX2RpcmVjdGZiPScjdW5kZWYgQ09O RklHX0RJUkVDVEZCJwogIG5vdm9tb2R1bGVzPSJkaXJlY3RmYiBkZmJtZ2EgJG5vdm9tb2R1bGVz IgpmaQplY2hvcmVzICIkX2RpcmVjdGZiIgoKCmVjaG9jaGVjayAiWDExIGhlYWRlcnMgcHJlc2Vu Y2UiCiAgX3gxMV9oZWFkZXJzPSJubyIKICByZXNfY29tbWVudD0iY2hlY2sgaWYgdGhlIGRldihl bCkgcGFja2FnZXMgYXJlIGluc3RhbGxlZCIKICBmb3IgSSBpbiAkKGVjaG8gJGV4dHJhX2NmbGFn cyB8IHNlZCBzLy1JLy9nKSAvdXNyL2luY2x1ZGUgOyBkbwogICAgaWYgdGVzdCAtZiAiJEkvWDEx L1hsaWIuaCIgOyB0aGVuCiAgICAgIF94MTFfaGVhZGVycz0ieWVzIgogICAgICByZXNfY29tbWVu dD0iIgogICAgICBicmVhawogICAgZmkKICBkb25lCiAgaWYgdGVzdCAkX2Nyb3NzX2NvbXBpbGUg PSBubzsgdGhlbgogICAgZm9yIEkgaW4gL3Vzci9YMTEvaW5jbHVkZSAvdXNyL1gxMVI3L2luY2x1 ZGUgL3Vzci9sb2NhbC9pbmNsdWRlIC91c3IvWDExUjYvaW5jbHVkZSBcCiAgICAgICAgICAgICAv dXNyL2luY2x1ZGUvWDExUjYgL3Vzci9vcGVud2luL2luY2x1ZGUgOyBkbwogICAgICBpZiB0ZXN0 IC1mICIkSS9YMTEvWGxpYi5oIiA7IHRoZW4KICAgICAgICBleHRyYV9jZmxhZ3M9IiRleHRyYV9j ZmxhZ3MgLUkkSSIKICAgICAgICBfeDExX2hlYWRlcnM9InllcyIKICAgICAgICByZXNfY29tbWVu dD0idXNpbmcgJEkiCiAgICAgICAgYnJlYWsKICAgICAgZmkKICAgIGRvbmUKICBmaQplY2hvcmVz ICIkX3gxMV9oZWFkZXJzIgoKCmVjaG9jaGVjayAiWDExIgppZiB0ZXN0ICIkX3gxMSIgPSBhdXRv ICYmIHRlc3QgIiRfeDExX2hlYWRlcnMiID0geWVzIDsgdGhlbgogIGZvciBJIGluICIiIC1ML3Vz ci9YMTFSNy9saWIgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvWDExUjYvbGliIC1ML3Vzci9saWIv WDExUjYgXAogICAgICAgICAgIC1ML3Vzci9YMTEvbGliIC1ML3Vzci9saWIzMiAtTC91c3Ivb3Bl bndpbi9saWIgLUwvdXNyL2xvY2FsL2xpYjY0IC1ML3Vzci9YMTFSNi9saWI2NCBcCiAgICAgICAg ICAgLUwvdXNyL2xpYiA7IGRvCiAgICBpZiBuZXRic2Q7IHRoZW4KICAgICAgbGRfdG1wPSIkSSAt bFhleHQgLWxYMTEgJGxkX3B0aHJlYWQgLVdsLC1SJChlY2hvICRJIHwgc2VkIHMvXi1MLy8pIgog ICAgZWxzZQogICAgICBsZF90bXA9IiRJIC1sWGV4dCAtbFgxMSAkbGRfcHRocmVhZCIKICAgIGZp CiAgICBzdGF0ZW1lbnRfY2hlY2sgWDExL1h1dGlsLmggJ1hDcmVhdGVXaW5kb3coMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCknICRsZF90bXAgJiYKICAgICAgbGlic19tcGxheWVy PSIkbGlic19tcGxheWVyICRsZF90bXAiICYmIF94MTE9eWVzICYmIGJyZWFrCiAgZG9uZQpmaQpp ZiB0ZXN0ICIkX3gxMSIgPSB5ZXMgOyB0aGVuCiAgZGVmX3gxMT0nI2RlZmluZSBDT05GSUdfWDEx IDEnCiAgdm9tb2R1bGVzPSJ4MTEgeG92ZXIgJHZvbW9kdWxlcyIKZWxzZQogIF94MTE9bm8KICBk ZWZfeDExPScjdW5kZWYgQ09ORklHX1gxMScKICBub3ZvbW9kdWxlcz0ieDExICRub3ZvbW9kdWxl cyIKICByZXNfY29tbWVudD0iY2hlY2sgaWYgdGhlIGRldihlbCkgcGFja2FnZXMgYXJlIGluc3Rh bGxlZCIKZmkKZWNob3JlcyAiJF94MTEiCgplY2hvY2hlY2sgIlhzcyBzY3JlZW5zYXZlciBleHRl bnNpb25zIgppZiB0ZXN0ICIkX3hzcyIgPSBhdXRvIDsgdGhlbgogIF94c3M9bm8KICBzdGF0ZW1l bnRfY2hlY2sgIlgxMS9leHRlbnNpb25zL3Njcm5zYXZlci5oIiAnWFNjcmVlblNhdmVyU3VzcGVu ZChOVUxMLCBUcnVlKScgLWxYc3MgJiYgX3hzcz15ZXMKZmkKaWYgdGVzdCAiJF94c3MiID0geWVz IDsgdGhlbgogIGRlZl94c3M9JyNkZWZpbmUgQ09ORklHX1hTUyAxJwogIGxpYnNfbXBsYXllcj0i JGxpYnNfbXBsYXllciAtbFhzcyIKZWxzZQogIGRlZl94c3M9JyN1bmRlZiBDT05GSUdfWFNTJwpm aQplY2hvcmVzICIkX3hzcyIKCmVjaG9jaGVjayAiRFBNUyIKX3hkcG1zMz1ubwpfeGRwbXM0PW5v CmlmIHRlc3QgIiRfeDExIiA9IHllcyA7IHRoZW4KICBjYXQgPiAkVE1QQyA8PEVPRgojaW5jbHVk ZSA8WDExL1htZC5oPgojaW5jbHVkZSA8WDExL1hsaWIuaD4KI2luY2x1ZGUgPFgxMS9YdXRpbC5o PgojaW5jbHVkZSA8WDExL1hhdG9tLmg+CiNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9kcG1zLmg+ CmludCBtYWluKHZvaWQpIHsgRFBNU1F1ZXJ5RXh0ZW5zaW9uKDAsIDAsIDApOyByZXR1cm4gMDsg fQpFT0YKICBjY19jaGVjayAtbFhkcG1zICYmIF94ZHBtczM9eWVzCiAgc3RhdGVtZW50X2NoZWNr X2Jyb2tlbiBYMTEvWGxpYi5oIFgxMS9leHRlbnNpb25zL2RwbXMuaCAnRFBNU1F1ZXJ5RXh0ZW5z aW9uKDAsIDAsIDApJyAtbFhleHQgJiYgX3hkcG1zND15ZXMKZmkKaWYgdGVzdCAiJF94ZHBtczQi ID0geWVzIDsgdGhlbgogIGRlZl94ZHBtcz0nI2RlZmluZSBDT05GSUdfWERQTVMgMScKICByZXNf Y29tbWVudD0idXNpbmcgWGRwbXMgNCIKICBlY2hvcmVzICJ5ZXMiCmVsaWYgdGVzdCAiJF94ZHBt czMiID0geWVzIDsgdGhlbgogIGRlZl94ZHBtcz0nI2RlZmluZSBDT05GSUdfWERQTVMgMScKICBs aWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxYZHBtcyIKICByZXNfY29tbWVudD0idXNpbmcg WGRwbXMgMyIKICBlY2hvcmVzICJ5ZXMiCmVsc2UKICBkZWZfeGRwbXM9JyN1bmRlZiBDT05GSUdf WERQTVMnCiAgZWNob3JlcyAibm8iCmZpCgoKZWNob2NoZWNrICJYdiIKaWYgdGVzdCAiJF94diIg PSBhdXRvICYmIHRlc3QgIiRfeDExIiA9IHllcyA7IHRoZW4KICBfeHY9bm8KICBzdGF0ZW1lbnRf Y2hlY2tfYnJva2VuIFgxMS9YbGliLmggWDExL2V4dGVuc2lvbnMvWHZsaWIuaCAnWHZHZXRQb3J0 QXR0cmlidXRlKDAsIDAsIDAsIDApJyAtbFh2ICYmIF94dj15ZXMKZmkKCmlmIHRlc3QgIiRfeHYi ID0geWVzIDsgdGhlbgogIGRlZl94dj0nI2RlZmluZSBDT05GSUdfWFYgMScKICBsaWJzX21wbGF5 ZXI9IiRsaWJzX21wbGF5ZXIgLWxYdiIKICB2b21vZHVsZXM9Inh2ICR2b21vZHVsZXMiCmVsc2UK ICBkZWZfeHY9JyN1bmRlZiBDT05GSUdfWFYnCiAgbm92b21vZHVsZXM9Inh2ICRub3ZvbW9kdWxl cyIKZmkKZWNob3JlcyAiJF94diIKCgplY2hvY2hlY2sgIlh2TUMiCmlmIHRlc3QgIiRfeHZtYyIg IT0gbm8gICYmIHRlc3QgIiRfeHYiID0geWVzIDsgdGhlbgogIF94dm1jPW5vCiAgY2F0ID4gJFRN UEMgPDxFT0YKI2luY2x1ZGUgPFgxMS9YbGliLmg+CiNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9Y dmxpYi5oPgojaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWHZNQ2xpYi5oPgppbnQgbWFpbih2b2lk KSB7CiAgWHZNQ1F1ZXJ5RXh0ZW5zaW9uKDAsIDAsIDApOwogIFh2TUNDcmVhdGVDb250ZXh0KDAs IDAsIDAsIDAsIDAsIDAsIDApOwogIHJldHVybiAwOyB9CkVPRgogIGZvciBsZF90bXAgaW4gJF94 dm1jbGliIFh2TUNOVklESUEgWHZNQ1cgSTgxMFh2TUMgOyBkbwogICAgY2NfY2hlY2sgLWxYdk1D IC1sJGxkX3RtcCAmJiBfeHZtYz15ZXMgJiYgX3h2bWNsaWI9IiRsZF90bXAiICYmIGJyZWFrCiAg ZG9uZQpmaQppZiB0ZXN0ICIkX3h2bWMiID0geWVzIDsgdGhlbgogIGRlZl94dm1jPScjZGVmaW5l IENPTkZJR19YVk1DIDEnCiAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVyIC1sWHZNQyIKICB0 ZXN0IC1uICIkX3h2bWNsaWIiICYmIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbCRfeHZt Y2xpYiIKICB2b21vZHVsZXM9Inh2bWMgJHZvbW9kdWxlcyIKICByZXNfY29tbWVudD0idXNpbmcg JF94dm1jbGliIgogIGxpYmF2aHdhY2NlbHM9IiRsaWJhdmh3YWNjZWxzIE1QRUcxX1hWTUNfSFdB Q0NFTCBNUEVHMl9YVk1DX0hXQUNDRUwiCmVsc2UKICBkZWZfeHZtYz0nI2RlZmluZSBDT05GSUdf WFZNQyAwJwogIG5vdm9tb2R1bGVzPSJ4dm1jICRub3ZvbW9kdWxlcyIKICBsaWJhdmRlY29kZXJz PSQoZmlsdGVyX291dF9jb21wb25lbnQgZGVjb2RlciAnTVBFR19YVk1DJykKZmkKZWNob3JlcyAi JF94dm1jIgoKCmVjaG9jaGVjayAiVmlkZW8gRGVjb2RlIEFjY2VsZXJhdGlvbiAoVkRBKSIKaWYg dGVzdCAiJF92ZGEiID0gYXV0byA7IHRoZW4KICBfdmRhPW5vCiAgaGVhZGVyX2NoZWNrIFZpZGVv RGVjb2RlQWNjZWxlcmF0aW9uL1ZEQURlY29kZXIuaCAmJiBfdmRhPXllcwpmaQppZiB0ZXN0ICIk X3ZkYSIgPSB5ZXMgOyB0aGVuCiAgZGVmX3ZkYT0nI2RlZmluZSBDT05GSUdfVkRBIDEnCiAgZXh0 cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJh bWV3b3JrIFZpZGVvRGVjb2RlQWNjZWxlcmF0aW9uIC1mcmFtZXdvcmsgUXVhcnR6Q29yZSIKICBs aWJhdmh3YWNjZWxzPSIkbGliYXZod2FjY2VscyBIMjY0X1ZEQV9IV0FDQ0VMIEgyNjRfVkRBX09M RF9IV0FDQ0VMIgplbHNlCiAgZGVmX3ZkYT0nI2RlZmluZSBDT05GSUdfVkRBIDAnCiAgbGliYXZk ZWNvZGVycz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IGRlY29kZXIgJ1tBLVowLTldKl9WREEnKQpm aQplY2hvcmVzICIkX3ZkYSIKCgplY2hvY2hlY2sgIlZEUEFVIgppZiB0ZXN0ICIkX3ZkcGF1IiA9 IGF1dG8gJiYgdGVzdCAiJF94MTEiID0geWVzIDsgdGhlbgogIF92ZHBhdT1ubwogIGlmIHRlc3Qg IiRfZGwiID0geWVzIDsgdGhlbgogICAgcmV0dXJuX3N0YXRlbWVudF9jaGVjayB2ZHBhdS92ZHBh dV94MTEuaCAndmRwX2RldmljZV9jcmVhdGVfeDExKDAsIDAsIDAsIDApJyBWRFBfVklERU9fTUlY RVJfRkVBVFVSRV9ISUdIX1FVQUxJVFlfU0NBTElOR19MMSAtbHZkcGF1ICYmIF92ZHBhdT15ZXMK ICAgIHJldHVybl9zdGF0ZW1lbnRfY2hlY2sgdmRwYXUvdmRwYXVfeDExLmggJ3ZkcF9kZXZpY2Vf Y3JlYXRlX3gxMSgwLCAwLCAwLCAwKScgVkRQX0RFQ09ERVJfUFJPRklMRV9IRVZDX01BSU4gLWx2 ZHBhdSAmJiBfdmRwYXVfaGV2Yz15ZXMKICBmaQpmaQppZiB0ZXN0ICIkX3ZkcGF1IiA9IHllcyA7 IHRoZW4KICBkZWZfdmRwYXU9JyNkZWZpbmUgQ09ORklHX1ZEUEFVIDEnCiAgbGlic19tcGxheWVy PSIkbGlic19tcGxheWVyIC1sdmRwYXUiCiAgdm9tb2R1bGVzPSJ2ZHBhdSAkdm9tb2R1bGVzIgog IGxpYmF2aHdhY2NlbHM9IiRsaWJhdmh3YWNjZWxzIEgyNjNfVkRQQVVfSFdBQ0NFTCBIMjY0X1ZE UEFVX0hXQUNDRUwgTVBFRzFfVkRQQVVfSFdBQ0NFTCBNUEVHMl9WRFBBVV9IV0FDQ0VMIE1QRUc0 X1ZEUEFVX0hXQUNDRUwgVkMxX1ZEUEFVX0hXQUNDRUwgV01WM19WRFBBVV9IV0FDQ0VMIgogIGlm IHRlc3QgIiRfdmRwYXVfaGV2YyIgPSB5ZXMgOyB0aGVuCiAgICBsaWJhdmh3YWNjZWxzPSIkbGli YXZod2FjY2VscyBIRVZDX1ZEUEFVX0hXQUNDRUwiCiAgZmkKZWxzZQogIGRlZl92ZHBhdT0nI2Rl ZmluZSBDT05GSUdfVkRQQVUgMCcKICBub3ZvbW9kdWxlcz0idmRwYXUgJG5vdm9tb2R1bGVzIgog IGxpYmF2ZGVjb2RlcnM9JChmaWx0ZXJfb3V0X2NvbXBvbmVudCBkZWNvZGVyICdbQS1aMC05XSpf VkRQQVUnKQpmaQplY2hvcmVzICIkX3ZkcGF1IgoKCmVjaG9jaGVjayAiWGluZXJhbWEiCmlmIHRl c3QgIiRfeGluZXJhbWEiID0gYXV0byAmJiB0ZXN0ICIkX3gxMSIgPSB5ZXMgOyB0aGVuCiAgX3hp bmVyYW1hPW5vCiAgc3RhdGVtZW50X2NoZWNrIFgxMS9leHRlbnNpb25zL1hpbmVyYW1hLmggJ1hp bmVyYW1hSXNBY3RpdmUoMCknIC1sWGluZXJhbWEgJiYgX3hpbmVyYW1hPXllcwpmaQoKaWYgdGVz dCAiJF94aW5lcmFtYSIgPSB5ZXMgOyB0aGVuCiAgZGVmX3hpbmVyYW1hPScjZGVmaW5lIENPTkZJ R19YSU5FUkFNQSAxJwogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbFhpbmVyYW1hIgpl bHNlCiAgZGVmX3hpbmVyYW1hPScjdW5kZWYgQ09ORklHX1hJTkVSQU1BJwpmaQplY2hvcmVzICIk X3hpbmVyYW1hIgoKCiMgTm90ZTogdGhlIC1sWHhmODZ2bSBsaWJyYXJ5IGlzIHRoZSBWaWRlb01v ZGUgZXh0ZW5zaW9uIGFuZCB0aG91Z2ggaXQncyBub3QKIyBuZWVkZWQgZm9yIERHQSwgQUZBSUsg ZXZlcnkgZGlzdHJpYnV0aW9uIHBhY2thZ2VzIHRvZ2V0aGVyIHdpdGggREdBIHN0dWZmcwojIG5h bWVkICdYIGV4dGVuc2lvbnMnIG9yIHNvbWV0aGluZyBzaW1pbGFyLgojIFRoaXMgY2hlY2sgbWF5 IGJlIHVzZWZ1bCBmb3IgZnV0dXJlIE1QbGF5ZXIgdmVyc2lvbnMgKHRvIGNoYW5nZSByZXNvbHV0 aW9uKQojIElmIHlvdSBydW4gaW50byBwcm9ibGVtcywgcmVtb3ZlICctbFh4Zjg2dm0nLgplY2hv Y2hlY2sgIlh4Zjg2dm0iCmlmIHRlc3QgIiRfdm0iID0gYXV0byAmJiB0ZXN0ICIkX3gxMSIgPSB5 ZXMgOyB0aGVuCiAgX3ZtPW5vCiAgc3RhdGVtZW50X2NoZWNrX2Jyb2tlbiBYMTEvWGxpYi5oIFgx MS9leHRlbnNpb25zL3hmODZ2bW9kZS5oICdYRjg2VmlkTW9kZVF1ZXJ5RXh0ZW5zaW9uKDAsIDAs IDApJyAtbFh4Zjg2dm0gJiYgX3ZtPXllcwpmaQppZiB0ZXN0ICIkX3ZtIiA9IHllcyA7IHRoZW4K ICBkZWZfdm09JyNkZWZpbmUgQ09ORklHX1hGODZWTSAxJwogIGxpYnNfbXBsYXllcj0iJGxpYnNf bXBsYXllciAtbFh4Zjg2dm0iCmVsc2UKICBkZWZfdm09JyN1bmRlZiBDT05GSUdfWEY4NlZNJwpm aQplY2hvcmVzICIkX3ZtIgoKIyBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHNwZWNpYWwga2V5 Y29kZXMsIGxpa2UgYXVkaW8gY29udHJvbCBidXR0b25zCiMgdGhhdCBYRnJlZTg2IG1pZ2h0IGhh dmUuICBVc2VkIHRvIGJlIGJ1bmRsZWQgd2l0aCB0aGUgeGY4NnZtIGNoZWNrLCBidXQKIyBoYXMg bm90aGluZyB0byBkbyB3aXRoIHhmODZ2bSBhbmQgWEZyZWUgMy54IGhhcyB4Zjg2dm0gYnV0IGRv ZXMgTk9UCiMgaGF2ZSB0aGVzZSBuZXcga2V5Y29kZXMuCmVjaG9jaGVjayAiWEY4NmtleXN5bSIK aWYgdGVzdCAiJF94Zjg2a2V5c3ltIiA9IGF1dG8gJiYgdGVzdCAiJF94MTEiID0geWVzIDsgdGhl bgogIF94Zjg2a2V5c3ltPW5vCiAgcmV0dXJuX2NoZWNrIFgxMS9YRjg2a2V5c3ltLmggWEY4NlhL X0F1ZGlvUGF1c2UgJiYgX3hmODZrZXlzeW09eWVzCmZpCmlmIHRlc3QgIiRfeGY4NmtleXN5bSIg PSB5ZXMgOyB0aGVuCiAgZGVmX3hmODZrZXlzeW09JyNkZWZpbmUgQ09ORklHX1hGODZYSyAxJwpl bHNlCiAgZGVmX3hmODZrZXlzeW09JyN1bmRlZiBDT05GSUdfWEY4NlhLJwpmaQplY2hvcmVzICIk X3hmODZrZXlzeW0iCgplY2hvY2hlY2sgIkRHQSIKaWYgdGVzdCAiJF9kZ2EyIiA9IGF1dG8gJiYg dGVzdCAiJF94MTEiID0geWVzIDsgdGhlbgogIF9kZ2EyPW5vCiAgc3RhdGVtZW50X2NoZWNrX2Jy b2tlbiBYMTEvWGxpYi5oIFgxMS9leHRlbnNpb25zL3hmODZkZ2EuaCAnWERHQVNldFZpZXdwb3J0 KDAsIDAsIDAsIDAsIDApJyAtbFh4Zjg2ZGdhICYmIF9kZ2EyPXllcwpmaQppZiB0ZXN0ICIkX2Rn YTEiID0gYXV0byAmJiB0ZXN0ICIkX2RnYTIiID0gbm8gJiYgdGVzdCAiJF92bSIgPSB5ZXMgOyB0 aGVuCiAgX2RnYTE9bm8KICBzdGF0ZW1lbnRfY2hlY2tfYnJva2VuIFgxMS9YbGliLmggWDExL2V4 dGVuc2lvbnMveGY4NmRnYS5oICdYRjg2REdBU2V0Vmlld1BvcnQoMCwgMCwgMCwgMCknIC1sWHhm ODZkZ2EgLWxYeGY4NnZtICYmIF9kZ2ExPXllcwpmaQoKX2RnYT1ubwpkZWZfZGdhPScjdW5kZWYg Q09ORklHX0RHQScKZGVmX2RnYTE9JyN1bmRlZiBDT05GSUdfREdBMScKZGVmX2RnYTI9JyN1bmRl ZiBDT05GSUdfREdBMicKaWYgdGVzdCAiJF9kZ2ExIiA9IHllcyA7IHRoZW4KICBfZGdhPXllcwog IGRlZl9kZ2ExPScjZGVmaW5lIENPTkZJR19ER0ExIDEnCiAgcmVzX2NvbW1lbnQ9InVzaW5nIERH QSAxLjAiCmVsaWYgdGVzdCAiJF9kZ2EyIiA9IHllcyA7IHRoZW4KICBfZGdhPXllcwogIGRlZl9k Z2EyPScjZGVmaW5lIENPTkZJR19ER0EyIDEnCiAgcmVzX2NvbW1lbnQ9InVzaW5nIERHQSAyLjAi CmZpCmlmIHRlc3QgIiRfZGdhIiA9IHllcyA7IHRoZW4KICBkZWZfZGdhPScjZGVmaW5lIENPTkZJ R19ER0EgMScKICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxYeGY4NmRnYSIKICB2b21v ZHVsZXM9ImRnYSAkdm9tb2R1bGVzIgplbHNlCiAgbm92b21vZHVsZXM9ImRnYSAkbm92b21vZHVs ZXMiCmZpCmVjaG9yZXMgIiRfZGdhIgoKCmVjaG9jaGVjayAieG1nYSIKaWYgdGVzdCAiJF94bWdh IiA9IGF1dG8gOyB0aGVuCiAgX3htZ2E9bm8KICB0ZXN0ICIkX3gxMSIgPSB5ZXMgJiYgdGVzdCAi JF9tZ2EiID0geWVzICYmIF94bWdhPXllcwpmaQppZiB0ZXN0ICIkX3htZ2EiID0geWVzIDsgdGhl bgogIGRlZl94bWdhPScjZGVmaW5lIENPTkZJR19YTUdBIDEnCiAgdm9tb2R1bGVzPSJ4bWdhICR2 b21vZHVsZXMiCmVsc2UKICBkZWZfeG1nYT0nI3VuZGVmIENPTkZJR19YTUdBJwogIG5vdm9tb2R1 bGVzPSJ4bWdhICRub3ZvbW9kdWxlcyIKZmkKZWNob3JlcyAiJF94bWdhIgoKCmVjaG9jaGVjayAi M2RmeCIKaWYgdGVzdCAiJF8zZGZ4IiA9IHllcyAmJiB0ZXN0ICIkX2RnYSIgPSB5ZXMgOyB0aGVu CiAgZGVmXzNkZng9JyNkZWZpbmUgQ09ORklHXzNERlggMScKICB2b21vZHVsZXM9IjNkZnggJHZv bW9kdWxlcyIKZWxzZQogIGRlZl8zZGZ4PScjdW5kZWYgQ09ORklHXzNERlgnCiAgbm92b21vZHVs ZXM9IjNkZnggJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkXzNkZngiCgoKZWNob2NoZWNrICJW SURJWCIKZGVmX3ZpZGl4PScjdW5kZWYgQ09ORklHX1ZJRElYJwpkZWZfdmlkaXhfZHJ2X2N5YmVy YmxhZGU9JyN1bmRlZiBDT05GSUdfVklESVhfRFJWX0NZQkVSQkxBREUnCl92aWRpeF9kcnZfY3li ZXJibGFkZT1ubwpkZWZfdmlkaXhfZHJ2X2l2dHY9JyN1bmRlZiBDT05GSUdfVklESVhfRFJWX0lW VFYnCl92aWRpeF9kcnZfaXZ0dj1ubwpkZWZfdmlkaXhfZHJ2X21hY2g2ND0nI3VuZGVmIENPTkZJ R19WSURJWF9EUlZfTUFDSDY0JwpfdmlkaXhfZHJ2X21hY2g2ND1ubwpkZWZfdmlkaXhfZHJ2X21n YT0nI3VuZGVmIENPTkZJR19WSURJWF9EUlZfTUdBJwpfdmlkaXhfZHJ2X21nYT1ubwpkZWZfdmlk aXhfZHJ2X21nYV9jcnRjMj0nI3VuZGVmIENPTkZJR19WSURJWF9EUlZfTUdBX0NSVEMyJwpfdmlk aXhfZHJ2X21nYV9jcnRjMj1ubwpkZWZfdmlkaXhfZHJ2X252aWRpYT0nI3VuZGVmIENPTkZJR19W SURJWF9EUlZfTlZJRElBJwpfdmlkaXhfZHJ2X252aWRpYT1ubwpkZWZfdmlkaXhfZHJ2X3BtMj0n I3VuZGVmIENPTkZJR19WSURJWF9EUlZfUE0yJwpfdmlkaXhfZHJ2X3BtMj1ubwpkZWZfdmlkaXhf ZHJ2X3BtMz0nI3VuZGVmIENPTkZJR19WSURJWF9EUlZfUE0zJwpfdmlkaXhfZHJ2X3BtMz1ubwpk ZWZfdmlkaXhfZHJ2X3JhZGVvbj0nI3VuZGVmIENPTkZJR19WSURJWF9EUlZfUkFERU9OJwpfdmlk aXhfZHJ2X3JhZGVvbj1ubwpkZWZfdmlkaXhfZHJ2X3JhZ2UxMjg9JyN1bmRlZiBDT05GSUdfVklE SVhfRFJWX1JBR0UxMjgnCl92aWRpeF9kcnZfcmFnZTEyOD1ubwpkZWZfdmlkaXhfZHJ2X3MzPScj dW5kZWYgQ09ORklHX1ZJRElYX0RSVl9TMycKX3ZpZGl4X2Rydl9zMz1ubwpkZWZfdmlkaXhfZHJ2 X3NoX3ZldT0nI3VuZGVmIENPTkZJR19WSURJWF9EUlZfU0hfVkVVJwpfdmlkaXhfZHJ2X3NoX3Zl dT1ubwpkZWZfdmlkaXhfZHJ2X3Npcz0nI3VuZGVmIENPTkZJR19WSURJWF9EUlZfU0lTJwpfdmlk aXhfZHJ2X3Npcz1ubwpkZWZfdmlkaXhfZHJ2X3VuaWNocm9tZT0nI3VuZGVmIENPTkZJR19WSURJ WF9EUlZfVU5JQ0hST01FJwpfdmlkaXhfZHJ2X3VuaWNocm9tZT1ubwppZiB0ZXN0ICIkX3ZpZGl4 IiA9IGF1dG8gOyB0aGVuCiAgX3ZpZGl4PW5vCiAgeDg2ICYmIChsaW51eCB8fCBmcmVlYnNkIHx8 IG5ldGJzZCB8fCBvcGVuYnNkIHx8IGRyYWdvbmZseSB8fCBzdW5vcyB8fCB3aW4zMikgJiYgX3Zp ZGl4PXllcwogIHdpbjMyICYmICEgaGVhZGVyX2NoZWNrIGRkay9udGRkay5oICYmIF92aWRpeD1u bwogIHg4Nl82NCAmJiAhIGxpbnV4ICYmIF92aWRpeD1ubwogIChwcGMgfHwgYWxwaGEpICYmIGxp bnV4ICYmIF92aWRpeD15ZXMKZmkKZWNob3JlcyAiJF92aWRpeCIKCmlmIHRlc3QgIiRfdmlkaXgi ID0geWVzIDsgdGhlbgogIGRlZl92aWRpeD0nI2RlZmluZSBDT05GSUdfVklESVggMScKICB2b21v ZHVsZXM9ImN2aWRpeCAkdm9tb2R1bGVzIgogICMgRklYTUU6IGl2dHYgZHJpdmVyIHRlbXBvcmFy aWx5IGRpc2FibGVkIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgdGVzdAogICN0ZXN0ICIkX3ZpZGl4 X2RyaXZlcnMiIHx8IF92aWRpeF9kcml2ZXJzPSJjeWJlcmJsYWRlIGl2dHYgbWFjaDY0IG1nYSBt Z2FfY3J0YzIgbnZpZGlhIHBtMiBwbTMgcmFkZW9uIHJhZ2UxMjggczMgc2hfdmV1IHNpcyB1bmlj aHJvbWUiCiAgdGVzdCAiJF92aWRpeF9kcml2ZXJzIiB8fCBfdmlkaXhfZHJpdmVycz0iY3liZXJi bGFkZSBtYWNoNjQgbWdhIG1nYV9jcnRjMiBudmlkaWEgcG0yIHBtMyByYWRlb24gcmFnZTEyOCBz MyBzaF92ZXUgc2lzIHVuaWNocm9tZSIKCiAgIyBzb21lIFZJRElYIGRyaXZlcnMgYXJlIGFyY2hp dGVjdHVyZSBhbmQgb3Mtc3BlY2lmaWMsIGRpc2NhcmQgdGhlbSBlbHNld2hlcmUKICB4ODYgfHwg X3ZpZGl4X2RyaXZlcnM9JChlY2hvICRfdmlkaXhfZHJpdmVycyB8IHNlZCAtZSBzL2N5YmVyYmxh ZGUvLyAtZSBzL3Npcy8vIC1lIHMvdW5pY2hyb21lLy8gLWUgcy9zMy8vKQogICh0ZXN0ICRob3N0 X2FyY2ggPSAic2giICYmIGxpbnV4KSB8fCBfdmlkaXhfZHJpdmVycz0kKGVjaG8gJF92aWRpeF9k cml2ZXJzIHwgc2VkIHMvc2hfdmV1Ly8pCgogIGZvciBkcml2ZXIgaW4gJF92aWRpeF9kcml2ZXJz IDsgZG8KICAgIHVjX2RyaXZlcj0kKGVjaG8gJGRyaXZlciB8IHRvdXBwZXIpCiAgICBldmFsIF92 aWRpeF9kcnZfJHtkcml2ZXJ9PXllcwogICAgZXZhbCBkZWZfdmlkaXhfZHJ2XyR7ZHJpdmVyfT1c IlwjZGVmaW5lIENPTkZJR19WSURJWF9EUlZfJHt1Y19kcml2ZXJ9IDFcIgogIGRvbmUKCiAgZWNo b2NoZWNrICJWSURJWCBQQ0kgZGV2aWNlIG5hbWUgZGF0YWJhc2UiCiAgZWNob3JlcyAiJF92aWRp eF9wY2lkYiIKICBpZiB0ZXN0ICIkX3ZpZGl4X3BjaWRiIiA9IHllcyA7IHRoZW4KICAgIF92aWRp eF9wY2lkYl92YWw9MQogIGVsc2UKICAgIF92aWRpeF9wY2lkYl92YWw9MAogIGZpCgogIGVjaG9j aGVjayAiVklESVggZGhhaGVscGVyIHN1cHBvcnQiCiAgdGVzdCAiJF9kaGFoZWxwZXIiID0geWVz ICYmIGNmbGFnc19kaGFoZWxwZXI9LURDT05GSUdfREhBSEVMUEVSCiAgZWNob3JlcyAiJF9kaGFo ZWxwZXIiCgogIGVjaG9jaGVjayAiVklESVggc3ZnYWxpYl9oZWxwZXIgc3VwcG9ydCIKICB0ZXN0 ICIkX3N2Z2FsaWJfaGVscGVyIiA9IHllcyAmJiBjZmxhZ3Nfc3ZnYWxpYl9oZWxwZXI9LURDT05G SUdfU1ZHQUhFTFBFUgogIGVjaG9yZXMgIiRfc3ZnYWxpYl9oZWxwZXIiCgplbHNlCiAgbm92b21v ZHVsZXM9ImN2aWRpeCAkbm92b21vZHVsZXMiCmZpCgppZiB0ZXN0ICIkX3ZpZGl4IiA9IHllcyAm JiB3aW4zMjsgdGhlbgogIHdpbnZpZGl4PXllcwogIHZvbW9kdWxlcz0id2ludmlkaXggJHZvbW9k dWxlcyIKICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxnZGkzMiIKZWxzZQogIG5vdm9t b2R1bGVzPSJ3aW52aWRpeCAkbm92b21vZHVsZXMiCmZpCmlmIHRlc3QgIiRfdmlkaXgiID0geWVz ICYmIHRlc3QgIiRfeDExIiA9IHllczsgdGhlbgogIHh2aWRpeD15ZXMKICB2b21vZHVsZXM9Inh2 aWRpeCAkdm9tb2R1bGVzIgplbHNlCiAgbm92b21vZHVsZXM9Inh2aWRpeCAkbm92b21vZHVsZXMi CmZpCgoKZWNob2NoZWNrICJHR0kiCmlmIHRlc3QgIiRfZ2dpIiA9IGF1dG8gOyB0aGVuCiAgX2dn aT1ubwogIHN0YXRlbWVudF9jaGVjayBnZ2kvZ2dpLmggJ2dnaUluaXQoKScgLWxnZ2kgJiYgX2dn aT15ZXMKZmkKaWYgdGVzdCAiJF9nZ2kiID0geWVzIDsgdGhlbgogIGRlZl9nZ2k9JyNkZWZpbmUg Q09ORklHX0dHSSAxJwogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbGdnaSIKICB2b21v ZHVsZXM9ImdnaSAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX2dnaT0nI3VuZGVmIENPTkZJR19HR0kn CiAgbm92b21vZHVsZXM9ImdnaSAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfZ2dpIgoKZWNo b2NoZWNrICJHR0kgZXh0ZW5zaW9uOiBsaWJnZ2l3bWgiCmlmIHRlc3QgIiRfZ2dpd21oIiA9IGF1 dG8gOyB0aGVuCiAgX2dnaXdtaD1ubwogIHN0YXRlbWVudF9jaGVjayBnZ2kvd21oLmggJ2dnaVdt aEluaXQoKScgLWxnZ2kgLWxnZ2l3bWggJiYgX2dnaXdtaD15ZXMKZmkKIyBuZWVkZWQgdG8gZ2V0 IHJpZ2h0IG91dHB1dCBvbiBvYnNjdXJlIGNvbWJpbmF0aW9uCiMgbGlrZSAtLWRpc2FibGUtZ2dp IC0tZW5hYmxlLWdnaXdtaAppZiB0ZXN0ICIkX2dnaSIgPSB5ZXMgJiYgdGVzdCAiJF9nZ2l3bWgi ID0geWVzIDsgdGhlbgogIGRlZl9nZ2l3bWg9JyNkZWZpbmUgQ09ORklHX0dHSVdNSCAxJwogIGxp YnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbGdnaXdtaCIKZWxzZQogIF9nZ2l3bWg9bm8KICBk ZWZfZ2dpd21oPScjdW5kZWYgQ09ORklHX0dHSVdNSCcKZmkKZWNob3JlcyAiJF9nZ2l3bWgiCgoK ZWNob2NoZWNrICJBQSIKaWYgdGVzdCAiJF9hYSIgPSBhdXRvIDsgdGhlbgogIGNhdCA+ICRUTVBD IDw8IEVPRgojaW5jbHVkZSA8YWFsaWIuaD4KaW50IG1haW4odm9pZCkgewphYV9jb250ZXh0ICpj OwphYV9yZW5kZXJwYXJhbXMgKnA7CmFhX2luaXQoMCwgMCwgMCk7CmMgPSBhYV9hdXRvaW5pdCgm YWFfZGVmcGFyYW1zKTsKcCA9IGFhX2dldHJlbmRlcnBhcmFtcygpOwphYV9hdXRvaW5pdGtiZChj LCAwKTsKcmV0dXJuIDA7IH0KRU9GCiAgX2FhPW5vCiAgZm9yIGxkX3RtcCBpbiAiLWxhYSIgOyBk bwogICAgY2NfY2hlY2sgJGxkX3RtcCAmJiBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgJGxk X3RtcCIgJiYgX2FhPXllcyAmJiBicmVhawogIGRvbmUKZmkKaWYgdGVzdCAiJF9hYSIgPSB5ZXMg OyB0aGVuCiAgZGVmX2FhPScjZGVmaW5lIENPTkZJR19BQSAxJwogIGlmIGN5Z3dpbiA7IHRoZW4K ICAgIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAkKGFhbGliLWNvbmZpZyAtLWxpYnMgfCBj dXQgLWQgIiAiIC1mIDIsNSw2KSIKICBmaQogIHZvbW9kdWxlcz0iYWEgJHZvbW9kdWxlcyIKZWxz ZQogIGRlZl9hYT0nI3VuZGVmIENPTkZJR19BQScKICBub3ZvbW9kdWxlcz0iYWEgJG5vdm9tb2R1 bGVzIgpmaQplY2hvcmVzICIkX2FhIgoKCmVjaG9jaGVjayAiQ0FDQSIKaWYgdGVzdCAiJF9jYWNh IiA9IGF1dG8gOyB0aGVuCiAgX2NhY2E9bm8KICBpZiAoIGNhY2EtY29uZmlnIC0tdmVyc2lvbiAp ID4+ICIkVE1QTE9HIiAyPiYxIDsgdGhlbgogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8 Y2FjYS5oPgojaWZkZWYgQ0FDQV9BUElfVkVSU0lPTl8xCiAgI2luY2x1ZGUgPGNhY2EwLmg+CiNl bmRpZgppbnQgbWFpbih2b2lkKSB7IGNhY2FfaW5pdCgpOyByZXR1cm4gMDsgfQpFT0YKICBjY19j aGVjayAkKGNhY2EtY29uZmlnIC0tbGlicykgJiYgX2NhY2E9eWVzCiAgZmkKZmkKaWYgdGVzdCAi JF9jYWNhIiA9IHllcyA7IHRoZW4KICBkZWZfY2FjYT0nI2RlZmluZSBDT05GSUdfQ0FDQSAxJwog IGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkKGNhY2EtY29uZmlnIC0tY2ZsYWdzKSIKICBs aWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgJChjYWNhLWNvbmZpZyAtLWxpYnMpIgogIHZvbW9k dWxlcz0iY2FjYSAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX2NhY2E9JyN1bmRlZiBDT05GSUdfQ0FD QScKICBub3ZvbW9kdWxlcz0iY2FjYSAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfY2FjYSIK CgplY2hvY2hlY2sgIlNWR0FsaWIiCmlmIHRlc3QgIiRfc3ZnYSIgPSBhdXRvIDsgdGhlbgogIF9z dmdhPW5vCiAgaGVhZGVyX2NoZWNrIHZnYS5oIC1sdmdhICYmIF9zdmdhPXllcwpmaQppZiB0ZXN0 ICIkX3N2Z2EiID0geWVzIDsgdGhlbgogIGRlZl9zdmdhPScjZGVmaW5lIENPTkZJR19TVkdBTElC IDEnCiAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVyIC1sdmdhIgogIHZvbW9kdWxlcz0ic3Zn YSAkdm9tb2R1bGVzIgplbHNlCiAgZGVmX3N2Z2E9JyN1bmRlZiBDT05GSUdfU1ZHQUxJQicKICBu b3ZvbW9kdWxlcz0ic3ZnYSAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfc3ZnYSIKCgplY2hv Y2hlY2sgIkZCRGV2IgppZiB0ZXN0ICIkX2ZiZGV2IiA9IGF1dG8gOyB0aGVuCiAgX2ZiZGV2PW5v CiAgbGludXggJiYgX2ZiZGV2PXllcwpmaQppZiB0ZXN0ICIkX2ZiZGV2IiA9IHllcyA7IHRoZW4K ICBkZWZfZmJkZXY9JyNkZWZpbmUgQ09ORklHX0ZCREVWIDEnCiAgdm9tb2R1bGVzPSJmYmRldiAk dm9tb2R1bGVzIgplbHNlCiAgZGVmX2ZiZGV2PScjdW5kZWYgQ09ORklHX0ZCREVWJwogIG5vdm9t b2R1bGVzPSJmYmRldiAkbm92b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfZmJkZXYiCgoKCmVjaG9j aGVjayAiRFZCIgppZiB0ZXN0ICIkX2R2YiIgPSBhdXRvIDsgdGhlbgogIF9kdmI9bm8KY2F0ID4k VE1QQyA8PCBFT0YKI2luY2x1ZGUgPHBvbGwuaD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgojaW5j bHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5j bHVkZSA8bGludXgvZHZiL2RteC5oPgojaW5jbHVkZSA8bGludXgvZHZiL2Zyb250ZW5kLmg+CiNp bmNsdWRlIDxsaW51eC9kdmIvdmlkZW8uaD4KI2luY2x1ZGUgPGxpbnV4L2R2Yi9hdWRpby5oPgpp bnQgbWFpbih2b2lkKSB7cmV0dXJuIDA7fQpFT0YKICBmb3IgaW5jX3RtcCBpbiAiIiAiLUkvdXNy L3NyYy9EVkIvaW5jbHVkZSIgOyBkbwogICAgY2NfY2hlY2sgJGluY190bXAgJiYgX2R2Yj15ZXMg JiYKICAgICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICRpbmNfdG1wIiAmJiBicmVhawog IGRvbmUKZmkKZWNob3JlcyAiJF9kdmIiCmlmIHRlc3QgIiRfZHZiIiA9IHllcyA7IHRoZW4KICBf ZHZiaW49eWVzCiAgaW5wdXRtb2R1bGVzPSJkdmIgJGlucHV0bW9kdWxlcyIKICBkZWZfZHZiPScj ZGVmaW5lIENPTkZJR19EVkIgMScKICBkZWZfZHZiaW49JyNkZWZpbmUgQ09ORklHX0RWQklOIDEn CiAgYW9tb2R1bGVzPSJtcGVncGVzKGR2YikgJGFvbW9kdWxlcyIKICB2b21vZHVsZXM9Im1wZWdw ZXMoZHZiKSAkdm9tb2R1bGVzIgplbHNlCiAgX2R2YmluPW5vCiAgbm9pbnB1dG1vZHVsZXM9ImR2 YiAkbm9pbnB1dG1vZHVsZXMiCiAgZGVmX2R2Yj0nI3VuZGVmIENPTkZJR19EVkInCiAgZGVmX2R2 YmluPScjdW5kZWYgQ09ORklHX0RWQklOICcKICBhb21vZHVsZXM9Im1wZWdwZXMoZmlsZSkgJGFv bW9kdWxlcyIKICB2b21vZHVsZXM9Im1wZWdwZXMoZmlsZSkgJHZvbW9kdWxlcyIKZmkKCgppZiBk YXJ3aW47IHRoZW4KCmVjaG9jaGVjayAiUXVpY2tUaW1lIgppZiB0ZXN0ICIkcXVpY2t0aW1lIiA9 IGF1dG8gOyB0aGVuCiAgcXVpY2t0aW1lPW5vCiAgc3RhdGVtZW50X2NoZWNrIFF1aWNrVGltZS9R dWlja1RpbWUuaCAnSW1hZ2VEZXNjcmlwdGlvbiAqZGVzYzsgRW50ZXJNb3ZpZXMoKTsgRXhpdE1v dmllcygpJyAtZnJhbWV3b3JrIFF1aWNrVGltZSAmJiBxdWlja3RpbWU9eWVzCmZpCmlmIHRlc3Qg IiRxdWlja3RpbWUiID0geWVzIDsgdGhlbgogIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdz IC1mcmFtZXdvcmsgUXVpY2tUaW1lIgogIGRlZl9xdWlja3RpbWU9JyNkZWZpbmUgQ09ORklHX1FV SUNLVElNRSAxJwplbHNlCiAgZGVmX3F1aWNrdGltZT0nI3VuZGVmIENPTkZJR19RVUlDS1RJTUUn CiAgX3F1YXJ0ej1ubwpmaQplY2hvcmVzICRxdWlja3RpbWUKCmVjaG9jaGVjayAiUXVhcnR6Igpp ZiB0ZXN0ICIkX3F1YXJ0eiIgPSBhdXRvIDsgdGhlbgogIF9xdWFydHo9bm8KICBzdGF0ZW1lbnRf Y2hlY2sgQ2FyYm9uL0NhcmJvbi5oICdDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9vcERlZmF1 bHRNb2RlLCAwLCBmYWxzZSknIC1mcmFtZXdvcmsgQ2FyYm9uICYmIF9xdWFydHo9eWVzCmZpCmlm IHRlc3QgIiRfcXVhcnR6IiA9IHllcyA7IHRoZW4KICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5 ZXIgLWZyYW1ld29yayBDYXJib24iCiAgZGVmX3F1YXJ0ej0nI2RlZmluZSBDT05GSUdfUVVBUlRa IDEnCiAgdm9tb2R1bGVzPSJxdWFydHogJHZvbW9kdWxlcyIKZWxzZQogIGRlZl9xdWFydHo9JyN1 bmRlZiBDT05GSUdfUVVBUlRaJwogIG5vdm9tb2R1bGVzPSJxdWFydHogJG5vdm9tb2R1bGVzIgpm aQplY2hvcmVzICRfcXVhcnR6CgplY2hvY2hlY2sgIkNvcmVWaWRlbyIKaWYgdGVzdCAiJF9jb3Jl dmlkZW8iID0gYXV0byA7IHRoZW4KICBjYXQgPiAkVE1QQyA8PEVPRgojaW5jbHVkZSA8Q2FyYm9u L0NhcmJvbi5oPgojaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgojaW5jbHVk ZSA8T3BlbkdML09wZW5HTC5oPgojaW5jbHVkZSA8UXVhcnR6Q29yZS9Db3JlVmlkZW8uaD4KaW50 IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQpFT0YKICBfY29yZXZpZGVvPW5vCiAgY2NfY2hlY2sg LWZyYW1ld29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUg LWZyYW1ld29yayBPcGVuR0wgJiYgX2NvcmV2aWRlbz15ZXMKZmkKaWYgdGVzdCAiJF9jb3Jldmlk ZW8iID0geWVzIDsgdGhlbgogIHZvbW9kdWxlcz0iY29yZXZpZGVvICR2b21vZHVsZXMiCiAgbGli c19tcGxheWVyPSIkbGlic19tcGxheWVyIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29j b2EgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFtZXdvcmsgT3BlbkdMIgogIGRlZl9jb3Jldmlk ZW89JyNkZWZpbmUgQ09ORklHX0NPUkVWSURFTyAxJwplbHNlCiAgbm92b21vZHVsZXM9ImNvcmV2 aWRlbyAkbm92b21vZHVsZXMiCiAgZGVmX2NvcmV2aWRlbz0nI3VuZGVmIENPTkZJR19DT1JFVklE RU8nCmZpCmVjaG9yZXMgIiRfY29yZXZpZGVvIgoKZmkgI2lmIGRhcndpbgoKCmVjaG9jaGVjayAi UE5HIHN1cHBvcnQiCmlmIHRlc3QgIiRfcG5nIiA9IGF1dG8gOyB0aGVuCiAgX3BuZz1ubwogIGlm IGlyaXggOyB0aGVuCiAgICAjIERvbid0IGNoZWNrIGZvciAtbHBuZyBvbiBJUklYIHNpbmNlIGl0 IGhhcyBpdHMgb3duIGxpYnBuZwogICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgR05VIGxpYnBu ZwogICAgcmVzX2NvbW1lbnQ9ImRpc2FibGVkIG9uIGlyaXggKG5vdCBHTlUgbGlicG5nKSIKICBl bHNlCmNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmlu Zy5oPgojaW5jbHVkZSA8cG5nLmg+CmludCBtYWluKHZvaWQpIHsKICBwcmludGYoInBuZy5oIDog JXNcbiIsIFBOR19MSUJQTkdfVkVSX1NUUklORyk7CiAgcHJpbnRmKCJsaWJwbmc6ICVzXG4iLCBw bmdfbGlicG5nX3Zlcik7CiAgcmV0dXJuIHN0cmNtcChQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIHBu Z19saWJwbmdfdmVyKTsKfQpFT0YKICAgIGNjX2NoZWNrIC1scG5nIC1seiAmJiBfcG5nPXllcwog IGZpCmZpCmVjaG9yZXMgIiRfcG5nIgppZiB0ZXN0ICIkX3BuZyIgPSB5ZXMgOyB0aGVuCiAgZGVm X3BuZz0nI2RlZmluZSBDT05GSUdfUE5HIDEnCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxh Z3MgLWxwbmcgLWx6IgplbHNlCiAgZGVmX3BuZz0nI3VuZGVmIENPTkZJR19QTkcnCmZpCgplY2hv Y2hlY2sgIk1ORyBzdXBwb3J0IgppZiB0ZXN0ICIkX21uZyIgPSBhdXRvIDsgdGhlbgogIF9tbmc9 bm8KICBmb3IgbW5nbGlicyBpbiAnLWxtbmcgLWx6JyAnLWxtbmcgLWxqcGVnIC1seicgOyBkbwog ICAgcmV0dXJuX3N0YXRlbWVudF9jaGVjayBsaWJtbmcuaCAnY29uc3QgY2hhciAqIHBfdmVyID0g bW5nX3ZlcnNpb25fdGV4dCgpJyAnIXBfdmVyIHx8IHBfdmVyWzBdID09IDAnICRtbmdsaWJzICYm IF9tbmc9eWVzCiAgZG9uZQpmaQplY2hvcmVzICIkX21uZyIKaWYgdGVzdCAiJF9tbmciID0geWVz IDsgdGhlbgogIGRlZl9tbmc9JyNkZWZpbmUgQ09ORklHX01ORyAxJwogIGV4dHJhX2xkZmxhZ3M9 IiRleHRyYV9sZGZsYWdzICRtbmdsaWJzIgogIHZvbW9kdWxlcz0ibW5nICR2b21vZHVsZXMiCmVs c2UKICBkZWZfbW5nPScjdW5kZWYgQ09ORklHX01ORycKICBub3ZvbW9kdWxlcz0ibW5nICRub3Zv bW9kdWxlcyIKZmkKCmVjaG9jaGVjayAiSlBFRyBzdXBwb3J0IgppZiB0ZXN0ICIkX2pwZWciID0g YXV0byA7IHRoZW4KICBfanBlZz1ubwogIGhlYWRlcl9jaGVja19icm9rZW4gc3RkaW8uaCBqcGVn bGliLmggLWxqcGVnICYmIF9qcGVnPXllcwpmaQplY2hvcmVzICIkX2pwZWciCgppZiB0ZXN0ICIk X2pwZWciID0geWVzIDsgdGhlbgogIGRlZl9qcGVnPScjZGVmaW5lIENPTkZJR19KUEVHIDEnCiAg dm9tb2R1bGVzPSJqcGVnICR2b21vZHVsZXMiCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxh Z3MgLWxqcGVnIgplbHNlCiAgZGVmX2pwZWc9JyN1bmRlZiBDT05GSUdfSlBFRycKICBub3ZvbW9k dWxlcz0ianBlZyAkbm92b21vZHVsZXMiCmZpCgoKZWNob2NoZWNrICJPcGVuSlBFRyAoSlBFRyAy MDAwKSBzdXBwb3J0IgppZiB0ZXN0ICIkbGlib3BlbmpwZWciID0gYXV0byA7IHRoZW4KICBsaWJv cGVuanBlZz1ubwogIGRlZmluZV9zdGF0ZW1lbnRfY2hlY2sgT1BKX1NUQVRJQyBvcGVuanBlZy5o ICdvcGpfZHBhcmFtZXRlcnNfdCBkZWNfcGFyYW1zOyBvcGpfc2V0X2RlZmF1bHRfZGVjb2Rlcl9w YXJhbWV0ZXJzKCZkZWNfcGFyYW1zKTtvcGpfZGVjb2RlX3dpdGhfaW5mbygwLDAsMCknIC1sb3Bl bmpwZWcgJiYgbGlib3BlbmpwZWc9eWVzCmZpCmVjaG9yZXMgIiRsaWJvcGVuanBlZyIKaWYgdGVz dCAiJGxpYm9wZW5qcGVnIiA9IHllcyA7IHRoZW4KICBkZWZfbGlib3BlbmpwZWc9JyNkZWZpbmUg Q09ORklHX0xJQk9QRU5KUEVHIDEnCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxv cGVuanBlZyIKICBsaWJhdmRlY29kZXJzPSIkbGliYXZkZWNvZGVycyBMSUJPUEVOSlBFR19ERUNP REVSIgogIGxpYmF2ZW5jb2RlcnM9IiRsaWJhdmVuY29kZXJzIExJQk9QRU5KUEVHX0VOQ09ERVIi CiAgY29kZWNtb2R1bGVzPSJPcGVuSlBFRyAkY29kZWNtb2R1bGVzIgplbHNlCiAgZGVmX2xpYm9w ZW5qcGVnPScjZGVmaW5lIENPTkZJR19MSUJPUEVOSlBFRyAwJwogIG5vY29kZWNtb2R1bGVzPSJP cGVuSlBFRyAkbm9jb2RlY21vZHVsZXMiCmZpCgoKZWNob2NoZWNrICJQTk0gc3VwcG9ydCIKaWYg dGVzdCAiJF9wbm0iID0geWVzOyB0aGVuCiAgZGVmX3BubT0iI2RlZmluZSBDT05GSUdfUE5NIDEi CiAgdm9tb2R1bGVzPSJwbm0gJHZvbW9kdWxlcyIKZWxzZQogIGRlZl9wbm09IiN1bmRlZiBDT05G SUdfUE5NIgogIG5vdm9tb2R1bGVzPSJwbm0gJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX3Bu bSIKCgoKZWNob2NoZWNrICJHSUYgc3VwcG9ydCIKIyBUaGlzIGlzIHRvIGFwcGVhc2UgcGVvcGxl IHdobyB3YW50IHRvIGZvcmNlIEdJRiBzdXBwb3J0LgojIElmIGl0IGlzIGZvcmNlZCB0byB5ZXMs IHRoZW4gd2Ugc3RpbGwgZG8gY2hlY2tzIHRvIGRldGVybWluZQojIHdoaWNoIEdJRiBsaWJyYXJ5 IHRvIHVzZS4KaWYgdGVzdCAiJF9naWYiID0geWVzIDsgdGhlbgogIF9mb3JjZV9naWY9eWVzCiAg X2dpZj1hdXRvCmZpCgpnaWZfbmV3PW5vCmlmIHRlc3QgIiRfZ2lmIiA9IGF1dG8gOyB0aGVuCiAg X2dpZj1ubwogIGZvciBsZF9naWYgaW4gIi1sdW5naWYiICItbGdpZiIgOyBkbwogICAgc3RhdGVt ZW50X2NoZWNrIGdpZl9saWIuaCAnUXVhbnRpemVCdWZmZXIoMCwgMCwgMCwgMCwgMCwgMCwgMCwg MCknICRsZF9naWYgJiYgX2dpZj15ZXMgJiYgYnJlYWsKICAgIHN0YXRlbWVudF9jaGVja19icm9r ZW4gc3RkbGliLmggZ2lmX2xpYi5oICdHaWZRdWFudGl6ZUJ1ZmZlcigwLCAwLCAwLCAwLCAwLCAw LCAwLCAwKScgJGxkX2dpZiAmJiBfZ2lmPXllcyAmJiBnaWZfbmV3PXllcyAmJiBicmVhawogIGRv bmUKZmkKCiMgSWYgbm8gbGlicmFyeSB3YXMgZm91bmQsIGFuZCB0aGUgdXNlciB3YW50cyBzdXBw b3J0IGZvcmNlZCwKIyB0aGVuIHdlIGZvcmNlIGl0IG9uIHdpdGggbGliZ2lmLCBhcyB0aGlzIGlz IHRoZSBzYWZlc3QKIyBhc3N1bXB0aW9uIElNSE8uICAobGlidW5naWYgJiBsaWJyZWdpZiBib3Ro IGNyZWF0ZSBzeW1ib2xpYwojIGxpbmtzIHRvIGxpYmdpZi4gIFdlIGFsc28gYXNzdW1lIHRoYXQg bm8geDExIHN1cHBvcnQgaXMgbmVlZGVkLAojIGJlY2F1c2UgaWYgeW91IGFyZSBmb3JjaW5nIHRo aXMsIHRoZW4geW91IF9zaG91bGRfIGtub3cgd2hhdAojIHlvdSBhcmUgZG9pbmcuICBbIEJlc2lk ZXMsIHBhY2thZ2UgbWFpbnRhaW5lcnMgc2hvdWxkIG5ldmVyCiMgaGF2ZSBjb21waWxlZCB4MTEg ZGVwcyBpbnRvIGxpYnVuZ2lmIGluIHRoZSBmaXJzdCBwbGFjZS4gXSApCiMgPC9yYW50PgojICAg LS1Kb2V5CmlmIHRlc3QgIiRfZm9yY2VfZ2lmIiA9IHllcyAmJiB0ZXN0ICIkX2dpZiIgPSBubyA7 IHRoZW4KICBfZ2lmPXllcwogIGxkX2dpZj0iLWxnaWYiCmZpCgppZiB0ZXN0ICIkX2dpZiIgPSB5 ZXMgOyB0aGVuCiAgZGVmX2dpZj0nI2RlZmluZSBDT05GSUdfR0lGIDEnCiAgY29kZWNtb2R1bGVz PSJnaWYgJGNvZGVjbW9kdWxlcyIKICB2b21vZHVsZXM9ImdpZjg5YSAkdm9tb2R1bGVzIgogIHJl c19jb21tZW50PSIiCiAgZGVmX2dpZl80PScjdW5kZWYgQ09ORklHX0dJRl80JwogIGV4dHJhX2xk ZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRsZF9naWYiCgogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5j bHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNp bmNsdWRlIDxnaWZfbGliLmg+CnN0YXRpYyB2b2lkIGNhdGNoKGludCBzaWcpIHsgZXhpdCgxKTsg fQppbnQgbWFpbih2b2lkKSB7CiAgc2lnbmFsKFNJR1NFR1YsIGNhdGNoKTsgIC8vIGNhdGNoIHNl Z2ZhdWx0CiAgcHJpbnRmKCJFR2lmUHV0RXh0ZW5zaW9uRmlyc3QgaXMgYXQgYWRkcmVzcyAlcFxu IiwgRUdpZlB1dEV4dGVuc2lvbkZpcnN0KTsKICBFR2lmU2V0R2lmVmVyc2lvbigiODlhIik7ICAg Ly8gdGhpcyB3aWxsIHNlZ2ZhdWx0IGEgYnVnZ3kgZ2lmIGxpYi4KICByZXR1cm4gMDsKfQpFT0YK ICBpZiBjY19jaGVjayAiJGxkX2dpZiIgOyB0aGVuCiAgICBkZWZfZ2lmXzQ9JyNkZWZpbmUgQ09O RklHX0dJRl80IDEnCiAgZWxpZiB0ZXN0ICIkZ2lmX25ldyIgPSBubyA7IHRoZW4KICAgIHJlc19j b21tZW50PSJvbGQgdmVyc2lvbiwgc29tZSBlbmNvZGluZyBmdW5jdGlvbnMgZGlzYWJsZWQiCiAg ZmkKZWxzZQogIGRlZl9naWY9JyN1bmRlZiBDT05GSUdfR0lGJwogIGRlZl9naWZfND0nI3VuZGVm IENPTkZJR19HSUZfNCcKICBub3ZvbW9kdWxlcz0iZ2lmODlhICRub3ZvbW9kdWxlcyIKICBub2Nv ZGVjbW9kdWxlcz0iZ2lmICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9naWYiCgoKY2Fz ZSAiJF9naWYiIGluIHllcyopCiAgZWNob2NoZWNrICJicm9rZW4gZ2lmbGliIHdvcmthcm91bmQi CiAgZGVmX2dpZl90dnRfaGFjaz0nI2RlZmluZSBDT05GSUdfR0lGX1RWVF9IQUNLIDEnCiAgaWYg c3RhdGVtZW50X2NoZWNrX2Jyb2tlbiBzdGRpby5oIGdpZl9saWIuaCAnR2lmRmlsZVR5cGUgZ2lm ID0gey5Vc2VyRGF0YSA9IE5VTEx9OyBwcmludGYoIlVzZXJEYXRhIGlzIGF0IGFkZHJlc3MgJXBc biIsIGdpZi5Vc2VyRGF0YSknICIkbGRfZ2lmIiA7IHRoZW4KICAgIGRlZl9naWZfdHZ0X2hhY2s9 JyN1bmRlZiBDT05GSUdfR0lGX1RWVF9IQUNLJwogICAgZWNob3JlcyAiZGlzYWJsZWQiCiAgZWxz ZQogICAgZWNob3JlcyAiZW5hYmxlZCIKICBmaQogIDs7CmVzYWMKCgplY2hvY2hlY2sgIlZFU0Eg c3VwcG9ydCIKaWYgdGVzdCAiJF92ZXNhIiA9IGF1dG8gOyB0aGVuCiAgX3Zlc2E9bm8KICBzdGF0 ZW1lbnRfY2hlY2sgdmJlLmggJ3ZiZUluaXQoKScgLWx2YmUgLWxscm1pICYmIF92ZXNhPXllcwpm aQppZiB0ZXN0ICIkX3Zlc2EiID0geWVzIDsgdGhlbgogIGRlZl92ZXNhPScjZGVmaW5lIENPTkZJ R19WRVNBIDEnCiAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVyIC1sdmJlIC1sbHJtaSIKICB2 b21vZHVsZXM9InZlc2EgJHZvbW9kdWxlcyIKZWxzZQogIGRlZl92ZXNhPScjdW5kZWYgQ09ORklH X1ZFU0EnCiAgbm92b21vZHVsZXM9InZlc2EgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX3Zl c2EiCgojIyMjIyMjIyMjIyMjIyMjIwojIFZJREVPICsgQVVESU8gIwojIyMjIyMjIyMjIyMjIyMj IwoKCmVjaG9jaGVjayAiU0RMIgppbmNfdG1wPSIiCmxkX3RtcD0iIgpkZWZfc2RsX3NkbF9oPSIj dW5kZWYgQ09ORklHX1NETF9TRExfSCIKaWYgdGVzdCAteiAiJF9zZGxjb25maWciIDsgdGhlbgog IGlmICggc2RsLWNvbmZpZyAtLXZlcnNpb24gKSA+PiIkVE1QTE9HIiAyPiYxIDsgdGhlbgogICAg X3NkbGNvbmZpZz0ic2RsLWNvbmZpZyIKICBlbHNlCiAgICBfc2RsY29uZmlnPWZhbHNlCiAgZmkK ZmkKaWYgdGVzdCAiJF9zZGwiID0gYXV0byB8fCB0ZXN0ICIkX3NkbCIgPSB5ZXMgOyB0aGVuCiAg Y2F0ID4gJFRNUEMgPDwgRU9GCiNpZmRlZiBDT05GSUdfU0RMX1NETF9ICiNpbmNsdWRlIDxTREwv U0RMLmg+CiNlbHNlCiNpbmNsdWRlIDxTREwuaD4KI2VuZGlmCiNpZm5kZWYgX19BUFBMRV9fCi8v IHdlIGFsbG93IFNETCBoYWNraW5nIG91ciBtYWluKCkgb25seSBvbiBPU1gKI3VuZGVmIG1haW4K I2VuZGlmCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICBTRExfSW5pdChTRExf SU5JVF9WSURFT3xTRExfSU5JVF9OT1BBUkFDSFVURSk7CiAgcmV0dXJuIDA7Cn0KRU9GCiAgX3Nk bD1ubwogIGZvciBsZF90bXAgaW4gIi1sU0RMIiAiLWxTREwgLWxwdGhyZWFkIiAiLWxTREwgLWx3 aW5tbSAtbGdkaTMyIiAiLWxTREwgLWx3aW5tbSAtbGdkaTMyIC1sZHhndWlkIiA7IGRvCiAgICBp ZiBjY19jaGVjayAtRENPTkZJR19TRExfU0RMX0ggJGluY190bXAgJGxkX3RtcCA7IHRoZW4KICAg ICAgX3NkbD15ZXMKICAgICAgZGVmX3NkbF9zZGxfaD0iI2RlZmluZSBDT05GSUdfU0RMX1NETF9I IDEiCiAgICAgIGJyZWFrCiAgICBmaQogIGRvbmUKICBpZiB0ZXN0ICIkX3NkbCIgPSBubyAmJiAi JF9zZGxjb25maWciIC0tdmVyc2lvbiA+PiIkVE1QTE9HIiAyPiYxIDsgdGhlbgogICAgcmVzX2Nv bW1lbnQ9InVzaW5nICRfc2RsY29uZmlnIgogICAgaWYgY3lnd2luIDsgdGhlbgogICAgICBpbmNf dG1wPSIkKCRfc2RsY29uZmlnIC0tY2ZsYWdzIHwgY3V0IC1kICIgIiAtZiAxLDUsNiB8IHNlZCBz L25vLWN5Z3dpbi9jeWd3aW4vKSIKICAgICAgbGRfdG1wPSIkKCRfc2RsY29uZmlnIC0tbGlicyB8 IGN1dCAtZCAiICIgLWYgMSw0LDYgfCBzZWQgcy9uby1jeWd3aW4vY3lnd2luLykiCiAgICBlbGlm IG1pbmd3MzIgOyB0aGVuCiAgICAgIGluY190bXA9JCgkX3NkbGNvbmZpZyAtLWNmbGFncyB8IHNl ZCBzLy1EbWFpbj1TRExfbWFpbi8vKQogICAgICBsZF90bXA9JCgkX3NkbGNvbmZpZyAtLWxpYnMg fCBzZWQgLWUgcy8tbXdpbmRvd3MvLyAtZSBzLy1sbWluZ3czMi8vKQogICAgZWxzZQogICAgICBp bmNfdG1wPSIkKCRfc2RsY29uZmlnIC0tY2ZsYWdzKSIKICAgICAgbGRfdG1wPSIkKCRfc2RsY29u ZmlnIC0tbGlicykiCiAgICBmaQogICAgaWYgY2NfY2hlY2sgJGluY190bXAgJGxkX3RtcCA+PiIk VE1QTE9HIiAyPiYxIDsgdGhlbgogICAgICAgICAgX3NkbD15ZXMKICAgIGVsaWYgY2NfY2hlY2sg JGluY190bXAgJGxkX3RtcCAtbHN0ZGMrKyA+PiIkVE1QTE9HIiAyPiYxIDsgdGhlbgogICAgICAg ICAgIyBIQUNLIGZvciBIYWlrdSBTREwKICAgICAgICAgIGxkX3RtcD0iJGxkX3RtcCAtbHN0ZGMr KyIKICAgICAgICAgIF9zZGw9eWVzCiAgICAgZmkKICBmaQpmaQppZiB0ZXN0ICIkX3NkbCIgPSB5 ZXMgOyB0aGVuCiAgZGVmX3NkbD0nI2RlZmluZSBDT05GSUdfU0RMIDEnCiAgZXh0cmFfY2ZsYWdz PSIkZXh0cmFfY2ZsYWdzICRpbmNfdG1wIgogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAk bGRfdG1wIgogIHZvbW9kdWxlcz0ic2RsICR2b21vZHVsZXMiCiAgYW9tb2R1bGVzPSJzZGwgJGFv bW9kdWxlcyIKZWxzZQogIGRlZl9zZGw9JyN1bmRlZiBDT05GSUdfU0RMJwogIG5vdm9tb2R1bGVz PSJzZGwgJG5vdm9tb2R1bGVzIgogIG5vYW9tb2R1bGVzPSJzZGwgJG5vYW9tb2R1bGVzIgpmaQpl Y2hvcmVzICIkX3NkbCIKCgplY2hvY2hlY2sgIlNETCBpbWFnZSIKc2RsX2ltYWdlPW5vCmlmIHRl c3QgIiRfc2RsIiA9IHllcyA7IHRoZW4KICBoZWFkZXJfY2hlY2sgU0RML1NETF9pbWFnZS5oIC1s U0RMX2ltYWdlICYmIHNkbF9pbWFnZT15ZXMKZmkKZWNob3JlcyAiJHNkbF9pbWFnZSIKCgojIG1h a2Ugc3VyZSB0aGlzIHN0YXlzIGJlbG93IENvcmVWaWRlbyB0byBhdm9pZCBpc3N1ZXMgZHVlIHRv IG5hbWVzcGFjZQojIGNvbmZsaWN0cyBiZXR3ZWVuIC1sR0wgYW5kIC1mcmFtZXdvcmsgT3BlbkdM CmVjaG9jaGVjayAiT3BlbkdMIgojTm90ZTogdGhpcyB0ZXN0IGlzIHJ1biBldmVuIHdpdGggLS1l bmFibGUtZ2wgc2luY2Ugd2UgYXV0b2RldGVjdCBsaW5rZXIgZmxhZ3MKaWYgdGVzdCAiJF9nbCIg IT0gbm8gOyB0aGVuCiAgY2F0ID4gJFRNUEMgPDwgRU9GCiNpZmRlZiBHTF9XSU4zMgojaW5jbHVk ZSA8d2luZG93cy5oPgojaW5jbHVkZSA8R0wvZ2wuaD4KI2VsaWYgZGVmaW5lZChHTF9TREwpCiNp bmNsdWRlIDxHTC9nbC5oPgojaWZkZWYgQ09ORklHX1NETF9TRExfSAojaW5jbHVkZSA8U0RML1NE TC5oPgojZWxzZQojaW5jbHVkZSA8U0RMLmg+CiNlbmRpZgojaWZuZGVmIF9fQVBQTEVfXwovLyB3 ZSBhbGxvdyBTREwgaGFja2luZyBvdXIgbWFpbigpIG9ubHkgb24gT1NYCiN1bmRlZiBtYWluCiNl bmRpZgojZWxpZiBkZWZpbmVkKEdMX0VHTF9YMTEpCiNpbmNsdWRlIDxHTC9nbC5oPgojaW5jbHVk ZSA8WDExL1hsaWIuaD4KI2luY2x1ZGUgPEVHTC9lZ2wuaD4KI2VsaWYgZGVmaW5lZChHTF9FR0xf QU5EUk9JRCkKI2luY2x1ZGUgPEdMRVMvZ2wuaD4KI2luY2x1ZGUgPEVHTC9lZ2wuaD4KI2Vsc2UK I2luY2x1ZGUgPEdML2dsLmg+CiNpbmNsdWRlIDxYMTEvWGxpYi5oPgojaW5jbHVkZSA8R0wvZ2x4 Lmg+CiNlbmRpZgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiNpZmRlZiBHTF9X SU4zMgogIEhEQyBkYzsKICB3Z2xDcmVhdGVDb250ZXh0KGRjKTsKI2VsaWYgZGVmaW5lZChHTF9T REwpCiAgU0RMX0dMX1N3YXBCdWZmZXJzKCk7CiNlbGlmIGRlZmluZWQoR0xfRUdMX1gxMSkgfHwg ZGVmaW5lZChHTF9FR0xfQU5EUk9JRCkKICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBFR0xfTk9f RElTUExBWTsKICBlZ2xJbml0aWFsaXplKGVnbERpc3BsYXksIE5VTEwsIE5VTEwpOwojZWxzZQog IGdsWENyZWF0ZUNvbnRleHQoTlVMTCwgTlVMTCwgTlVMTCwgVHJ1ZSk7CiNlbmRpZgojaWYgIWRl ZmluZWQoR0xfRUdMX1gxMSkgJiYgIWRlZmluZWQoR0xfRUdMX0FORFJPSUQpCiAgZ2xGaW5pc2go KTsKI2VuZGlmCiAgcmV0dXJuIDA7Cn0KRU9GCiAgX2dsPW5vCiAgZm9yIGxkX3RtcCBpbiAiIiAt bEdMICItbEdMIC1sWGRhbWFnZSIgIi1sR0wgJGxkX3B0aHJlYWQiIDsgZG8KICAgIGlmIHRlc3Qg IiRfeDExIiA9IHllcyAmJiBjY19jaGVjayAkbGRfdG1wIDsgdGhlbgogICAgICBfZ2w9eWVzCiAg ICAgIF9nbF94MTE9eWVzCiAgICAgIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAkbGRfdG1w ICRsZF9kbCIKICAgICAgYnJlYWsKICAgIGZpCiAgZG9uZQogIGlmIHRlc3QgIiRfeDExIiA9IHll cyAmJiBjY19jaGVjayAtREdMX0VHTF9YMTEgLWxFR0wgOyB0aGVuCiAgICBfZ2w9eWVzCiAgICBf Z2xfZWdsX3gxMT15ZXMKICAgIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbEVHTCAkbGRf ZGwiCiAgZWxpZiBjY19jaGVjayAtREdMX0VHTF9BTkRST0lEIC1sRUdMIDsgdGhlbgogICAgX2ds PXllcwogICAgX2dsX2VnbF9hbmRyb2lkPXllcwogICAgbGlic19tcGxheWVyPSIkbGlic19tcGxh eWVyIC1sRUdMICRsZF9kbCIKICBmaQogIGlmIHdpbjMyICYmIGNjX2NoZWNrIC1ER0xfV0lOMzIg LWxvcGVuZ2wzMiA7IHRoZW4KICAgIF9nbD15ZXMKICAgIF9nbF93aW4zMj15ZXMKICAgIGxpYnNf bXBsYXllcj0iJGxpYnNfbXBsYXllciAtbG9wZW5nbDMyIC1sZ2RpMzIiCiAgZmkKICAjIGxhc3Qg c28gaXQgY2FuIHJldXNlIGFueSBsaW5rZXIgZXRjLiBmbGFncyBkZXRlY3RlZCBiZWZvcmUKICBp ZiB0ZXN0ICIkX3NkbCIgPSB5ZXMgOyB0aGVuCiAgICBpZiBjY19jaGVjayAtREdMX1NETCB8fAog ICAgICAgY2NfY2hlY2sgLURDT05GSUdfU0RMX1NETF9IIC1ER0xfU0RMIDsgdGhlbgogICAgICBf Z2w9eWVzCiAgICAgIF9nbF9zZGw9eWVzCiAgICBlbGlmIGNjX2NoZWNrIC1ER0xfU0RMIC1sR0wg fHwKICAgICAgIGNjX2NoZWNrIC1EQ09ORklHX1NETF9TRExfSCAtREdMX1NETCAtbEdMIDsgdGhl bgogICAgICBfZ2w9eWVzCiAgICAgIF9nbF9zZGw9eWVzCiAgICAgIGxpYnNfbXBsYXllcj0iJGxp YnNfbXBsYXllciAtbEdMIgogICAgZmkKICBmaQogIGlmIHRlc3QgIiRfY29yZXZpZGVvIiA9IHll cyA7IHRoZW4KICAgIF9nbD15ZXMKICAgIF9nbF9vc3g9eWVzCiAgZmkKZWxzZQogIF9nbD1ubwpm aQppZiB0ZXN0ICIkX2dsIiA9IHllcyA7IHRoZW4KICBkZWZfZ2w9JyNkZWZpbmUgQ09ORklHX0dM IDEnCiAgcmVzX2NvbW1lbnQ9ImJhY2tlbmRzOiIKICBpZiB0ZXN0ICIkX2dsX3dpbjMyIiA9IHll cyA7IHRoZW4KICAgIGRlZl9nbF93aW4zMj0nI2RlZmluZSBDT05GSUdfR0xfV0lOMzIgMScKICAg IHJlc19jb21tZW50PSIkcmVzX2NvbW1lbnQgd2luMzIiCiAgZmkKICBpZiB0ZXN0ICIkX2dsX3gx MSIgPSB5ZXMgOyB0aGVuCiAgICBkZWZfZ2xfeDExPScjZGVmaW5lIENPTkZJR19HTF9YMTEgMScK ICAgIHJlc19jb21tZW50PSIkcmVzX2NvbW1lbnQgeDExIgogIGZpCiAgaWYgdGVzdCAiJF9nbF9l Z2xfYW5kcm9pZCIgPSB5ZXMgOyB0aGVuCiAgICBkZWZfZ2xfZWdsX2FuZHJvaWQ9JyNkZWZpbmUg Q09ORklHX0dMX0VHTF9BTkRST0lEIDEnCiAgICByZXNfY29tbWVudD0iJHJlc19jb21tZW50IGVn bF9hbmRyb2lkIgogIGZpCiAgaWYgdGVzdCAiJF9nbF9lZ2xfeDExIiA9IHllcyA7IHRoZW4KICAg IGRlZl9nbF9lZ2xfeDExPScjZGVmaW5lIENPTkZJR19HTF9FR0xfWDExIDEnCiAgICByZXNfY29t bWVudD0iJHJlc19jb21tZW50IGVnbF94MTEiCiAgZmkKICBpZiB0ZXN0ICIkX2dsX3NkbCIgPSB5 ZXMgOyB0aGVuCiAgICBkZWZfZ2xfc2RsPScjZGVmaW5lIENPTkZJR19HTF9TREwgMScKICAgIHJl c19jb21tZW50PSIkcmVzX2NvbW1lbnQgc2RsIgogIGZpCiAgaWYgdGVzdCAiJF9nbF9vc3giID0g eWVzIDsgdGhlbgogICAgZGVmX2dsX29zeD0nI2RlZmluZSBDT05GSUdfR0xfT1NYIDEnCiAgICBy ZXNfY29tbWVudD0iJHJlc19jb21tZW50IG9zeCIKICBmaQogIHZvbW9kdWxlcz0ib3BlbmdsICR2 b21vZHVsZXMiCmVsc2UKICBkZWZfZ2w9JyN1bmRlZiBDT05GSUdfR0wnCiAgZGVmX2dsX3dpbjMy PScjdW5kZWYgQ09ORklHX0dMX1dJTjMyJwogIGRlZl9nbF94MTE9JyN1bmRlZiBDT05GSUdfR0xf WDExJwogIGRlZl9nbF9lZ2xfYW5kcm9pZD0nI3VuZGVmIENPTkZJR19HTF9FR0xfQU5EUk9JRCcK ICBkZWZfZ2xfZWdsX3gxMT0nI3VuZGVmIENPTkZJR19HTF9FR0xfWDExJwogIGRlZl9nbF9zZGw9 JyN1bmRlZiBDT05GSUdfR0xfU0RMJwogIGRlZl9nbF9vc3g9JyN1bmRlZiBDT05GSUdfR0xfT1NY JwogIG5vdm9tb2R1bGVzPSJvcGVuZ2wgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX2dsIgoK CmVjaG9jaGVjayAiTWF0cml4VmlldyIKaWYgdGVzdCAiJG1hdHJpeHZpZXciID0gYXV0byA7IHRo ZW4KICBtYXRyaXh2aWV3PSIkX2dsIgpmaQppZiB0ZXN0ICIkbWF0cml4dmlldyIgPSB5ZXMgOyB0 aGVuCiAgdm9tb2R1bGVzPSJtYXRyaXh2aWV3ICR2b21vZHVsZXMiCiAgZGVmX21hdHJpeHZpZXc9 JyNkZWZpbmUgQ09ORklHX01BVFJJWFZJRVcgMScKZWxzZQogIG5vdm9tb2R1bGVzPSJtYXRyaXh2 aWV3ICRub3ZvbW9kdWxlcyIKICBkZWZfbWF0cml4dmlldz0nI3VuZGVmIENPTkZJR19NQVRSSVhW SUVXJwpmaQplY2hvcmVzICIkbWF0cml4dmlldyIKCgppZiBvczIgOyB0aGVuCmVjaG9jaGVjayAi S1ZBIChTTkFQL1dhcnBPdmVybGF5IS9WTUFOL0RJVkUpIgppZiB0ZXN0ICIkX2t2YSIgPSBhdXRv OyB0aGVuCiAgX2t2YT1ubzsKICBoZWFkZXJfY2hlY2tfYnJva2VuIG9zMi5oIGt2YS5oIC1sa3Zh ICYmIF9rdmE9eWVzCmZpCmlmIHRlc3QgIiRfa3ZhIiA9IHllcyA7IHRoZW4KICBkZWZfa3ZhPScj ZGVmaW5lIENPTkZJR19LVkEgMScKICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxrdmEi CiAgdm9tb2R1bGVzPSJrdmEgJHZvbW9kdWxlcyIKZWxzZQogIGRlZl9rdmE9JyN1bmRlZiBDT05G SUdfS1ZBJwogIG5vdm9tb2R1bGVzPSJrdmEgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX2t2 YSIKZmkgI2lmIG9zMgoKCmlmIHdpbjMyOyB0aGVuCgplY2hvY2hlY2sgIldpbmRvd3Mgd2F2ZW91 dCIKaWYgdGVzdCAiJF93aW4zMndhdmVvdXQiID0gYXV0byA7IHRoZW4KICBfd2luMzJ3YXZlb3V0 PW5vCiAgaGVhZGVyX2NoZWNrX2Jyb2tlbiB3aW5kb3dzLmggbW1zeXN0ZW0uaCAtbHdpbm1tICYm IF93aW4zMndhdmVvdXQ9eWVzCmZpCmlmIHRlc3QgIiRfd2luMzJ3YXZlb3V0IiA9IHllcyA7IHRo ZW4KICBkZWZfd2luMzJ3YXZlb3V0PScjZGVmaW5lIENPTkZJR19XSU4zMldBVkVPVVQgMScKICBs aWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWx3aW5tbSIKICBhb21vZHVsZXM9IndpbjMyICRh b21vZHVsZXMiCmVsc2UKICBkZWZfd2luMzJ3YXZlb3V0PScjdW5kZWYgQ09ORklHX1dJTjMyV0FW RU9VVCcKICBub2FvbW9kdWxlcz0id2luMzIgJG5vYW9tb2R1bGVzIgpmaQplY2hvcmVzICIkX3dp bjMyd2F2ZW91dCIKCmVjaG9jaGVjayAiRGlyZWN0M0QiCmlmIHRlc3QgIiRfZGlyZWN0M2QiID0g YXV0byA7IHRoZW4KICBfZGlyZWN0M2Q9bm8KICBoZWFkZXJfY2hlY2sgZDNkOS5oICYmIF9kaXJl Y3QzZD15ZXMKZmkKaWYgdGVzdCAiJF9kaXJlY3QzZCIgPSB5ZXMgOyB0aGVuCiAgZGVmX2RpcmVj dDNkPScjZGVmaW5lIENPTkZJR19ESVJFQ1QzRCAxJwogIHZvbW9kdWxlcz0iZGlyZWN0M2QgJHZv bW9kdWxlcyIKZWxzZQogIGRlZl9kaXJlY3QzZD0nI3VuZGVmIENPTkZJR19ESVJFQ1QzRCcKICBu b3ZvbW9kdWxlcz0iZGlyZWN0M2QgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX2RpcmVjdDNk IgoKZWNob2NoZWNrICJEaXJlY3R4IgppZiB0ZXN0ICIkX2RpcmVjdHgiID0gYXV0byA7IHRoZW4K ICBjYXQgPiAkVE1QQyA8PCBFT0YKI2luY2x1ZGUgPHdpbmRvd3MuaD4KI2luY2x1ZGUgPGRkcmF3 Lmg+CiNpbmNsdWRlIDxkc291bmQuaD4KaW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQpFT0YK ICBfZGlyZWN0eD1ubwogIGNjX2NoZWNrIC1sZ2RpMzIgJiYgX2RpcmVjdHg9eWVzCmZpCmlmIHRl c3QgIiRfZGlyZWN0eCIgPSB5ZXMgOyB0aGVuCiAgZGVmX2RpcmVjdHg9JyNkZWZpbmUgQ09ORklH X0RJUkVDVFggMScKICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxnZGkzMiIKICB2b21v ZHVsZXM9ImRpcmVjdHggJHZvbW9kdWxlcyIKICBhb21vZHVsZXM9ImRzb3VuZCAkYW9tb2R1bGVz IgplbHNlCiAgZGVmX2RpcmVjdHg9JyN1bmRlZiBDT05GSUdfRElSRUNUWCcKICBub3ZvbW9kdWxl cz0iZGlyZWN0eCAkbm92b21vZHVsZXMiCiAgbm9hb21vZHVsZXM9ImRzb3VuZCAkbm9hb21vZHVs ZXMiCmZpCmVjaG9yZXMgIiRfZGlyZWN0eCIKCmZpICNpZiB3aW4zMjsgdGhlbgoKCmVjaG9jaGVj ayAiRFhSMiIKaWYgdGVzdCAiJF9keHIyIiA9IGF1dG87IHRoZW4KICBfZHhyMj1ubwogIGZvciBp bmNfdG1wIGluICIiIC1JL3Vzci9sb2NhbC9pbmNsdWRlL2R4cjIgLUkvdXNyL2luY2x1ZGUvZHhy MjsgZG8KICAgIGhlYWRlcl9jaGVjayBkeHIyaW9jdGwuaCAkaW5jX3RtcCAmJiBfZHhyMj15ZXMg JiYKICAgICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICRpbmNfdG1wIiAmJiBicmVhawog IGRvbmUKZmkKaWYgdGVzdCAiJF9keHIyIiA9IHllczsgdGhlbgogIGRlZl9keHIyPScjZGVmaW5l IENPTkZJR19EWFIyIDEnCiAgYW9tb2R1bGVzPSJkeHIyICRhb21vZHVsZXMiCiAgdm9tb2R1bGVz PSJkeHIyICR2b21vZHVsZXMiCmVsc2UKICBkZWZfZHhyMj0nI3VuZGVmIENPTkZJR19EWFIyJwog IG5vYW9tb2R1bGVzPSJkeHIyICRub2FvbW9kdWxlcyIKICBub3ZvbW9kdWxlcz0iZHhyMiAkbm92 b21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfZHhyMiIKCmVjaG9jaGVjayAiRFhSMy9IKyIKaWYgdGVz dCAiJF9keHIzIiA9IGF1dG8gOyB0aGVuCiAgX2R4cjM9bm8KICBoZWFkZXJfY2hlY2sgbGludXgv ZW04MzAwLmggJiYgX2R4cjM9eWVzCmZpCmlmIHRlc3QgIiRfZHhyMyIgPSB5ZXMgOyB0aGVuCiAg ZGVmX2R4cjM9JyNkZWZpbmUgQ09ORklHX0RYUjMgMScKICB2b21vZHVsZXM9ImR4cjMgJHZvbW9k dWxlcyIKZWxzZQogIGRlZl9keHIzPScjdW5kZWYgQ09ORklHX0RYUjMnCiAgbm92b21vZHVsZXM9 ImR4cjMgJG5vdm9tb2R1bGVzIgpmaQplY2hvcmVzICIkX2R4cjMiCgoKZWNob2NoZWNrICJJVlRW IFRWLU91dCAocHJlIGxpbnV4LTIuNi4yNCkiCmlmIHRlc3QgIiRfaXZ0diIgPSBhdXRvIDsgdGhl bgogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPGxp bnV4L3ZpZGVvZGV2Mi5oPgojaW5jbHVkZSA8bGludXgvaXZ0di5oPgojaW5jbHVkZSA8c3lzL2lv Y3RsLmg+CmludCBtYWluKHZvaWQpIHsKc3RydWN0IGl2dHZfY2ZnX3N0b3BfZGVjb2RlIHNkOwpz dHJ1Y3QgaXZ0dl9jZmdfc3RhcnRfZGVjb2RlIHNkMTsKaW9jdGwoMCwgSVZUVl9JT0NfU1RBUlRf REVDT0RFLCAmc2QxKTsKaW9jdGwoMCwgSVZUVl9JT0NfU1RPUF9ERUNPREUsICZzZCk7CnJldHVy biAwOyB9CkVPRgogIF9pdnR2PW5vCiAgY2NfY2hlY2sgJiYgX2l2dHY9eWVzCmZpCmlmIHRlc3Qg IiRfaXZ0diIgPSB5ZXMgOyB0aGVuCiAgZGVmX2l2dHY9JyNkZWZpbmUgQ09ORklHX0lWVFYgMScK ICB2b21vZHVsZXM9Iml2dHYgJHZvbW9kdWxlcyIKICBhb21vZHVsZXM9Iml2dHYgJGFvbW9kdWxl cyIKZWxzZQogIGRlZl9pdnR2PScjdW5kZWYgQ09ORklHX0lWVFYnCiAgbm92b21vZHVsZXM9Iml2 dHYgJG5vdm9tb2R1bGVzIgogIG5vYW9tb2R1bGVzPSJpdnR2ICRub2FvbW9kdWxlcyIKZmkKZWNo b3JlcyAiJF9pdnR2IgoKCmVjaG9jaGVjayAiVjRMMiBNUEVHIERlY29kZXIiCmlmIHRlc3QgIiRf djRsMiIgPSBhdXRvIDsgdGhlbgogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3lzL3Rp bWUuaD4KI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgojaW5jbHVkZSA8bGludXgvdmVyc2lv bi5oPgppbnQgbWFpbih2b2lkKSB7CiNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigyLDYsMjIpCiNlcnJvciBrZXJuZWwgaGVhZGVycyB0b28gb2xkLCBuZWVkIDIuNi4yMgoj ZW5kaWYKICBzdHJ1Y3QgdjRsMl9leHRfY29udHJvbHMgY3RybHM7CiAgY3RybHMuY3RybF9jbGFz cyA9IFY0TDJfQ1RSTF9DTEFTU19NUEVHOwogIHJldHVybiAwOwp9CkVPRgogIF92NGwyPW5vCiAg Y2NfY2hlY2sgJiYgX3Y0bDI9eWVzCmZpCmlmIHRlc3QgIiRfdjRsMiIgPSB5ZXMgOyB0aGVuCiAg ZGVmX3Y0bDI9JyNkZWZpbmUgQ09ORklHX1Y0TDJfREVDT0RFUiAxJwogIHZvbW9kdWxlcz0idjRs MiAkdm9tb2R1bGVzIgogIGFvbW9kdWxlcz0idjRsMiAkYW9tb2R1bGVzIgplbHNlCiAgZGVmX3Y0 bDI9JyN1bmRlZiBDT05GSUdfVjRMMl9ERUNPREVSJwogIG5vdm9tb2R1bGVzPSJ2NGwyICRub3Zv bW9kdWxlcyIKICBub2FvbW9kdWxlcz0idjRsMiAkbm9hb21vZHVsZXMiCmZpCmVjaG9yZXMgIiRf djRsMiIKCgoKIyMjIyMjIyMjCiMgQVVESU8gIwojIyMjIyMjIyMKCgplY2hvY2hlY2sgIk9TUyBB dWRpbyIKaWYgdGVzdCAiJF9vc3NhdWRpbyIgPSBhdXRvIDsgdGhlbgogIF9vc3NhdWRpbz1ubwog IHJldHVybl9jaGVjayAkX3NvdW5kY2FyZF9oZWFkZXIgU05EQ1RMX0RTUF9TRVRGUkFHTUVOVCAm JiBfb3NzYXVkaW89eWVzCmZpCmlmIHRlc3QgIiRfb3NzYXVkaW8iID0geWVzIDsgdGhlbgogIGRl Zl9vc3NhdWRpbz0nI2RlZmluZSBDT05GSUdfT1NTX0FVRElPIDEnCiAgYW9tb2R1bGVzPSJvc3Mg JGFvbW9kdWxlcyIKICBfcmVhbF9vc3NhdWRpbz1ubwogIGNwcF9jb25kaXRpb25fY2hlY2sgIiRf c291bmRjYXJkX2hlYWRlciIgT1BFTl9TT1VORF9TWVNURU0gJiYKICAgICAgX3JlYWxfb3NzYXVk aW89eWVzCiAgaWYgdGVzdCAiJF9yZWFsX29zc2F1ZGlvIiA9IHllczsgdGhlbgogICAgICBkZWZf b3NzYXVkaW9fZGV2ZHNwPScjZGVmaW5lIFBBVEhfREVWX0RTUCAiL2Rldi9kc3AiJwogIGVsaWYg bmV0YnNkIHx8IG9wZW5ic2QgOyB0aGVuCiAgICAgIGRlZl9vc3NhdWRpb19kZXZkc3A9JyNkZWZp bmUgUEFUSF9ERVZfRFNQICIvZGV2L3NvdW5kIicKICAgICAgZXh0cmFfbGRmbGFncz0iJGV4dHJh X2xkZmxhZ3MgLWxvc3NhdWRpbyIKICBlbHNlCiAgICAgIGRlZl9vc3NhdWRpb19kZXZkc3A9JyNk ZWZpbmUgUEFUSF9ERVZfRFNQICIvZGV2L2RzcCInCiAgZmkKICBkZWZfb3NzYXVkaW9fZGV2bWl4 ZXI9JyNkZWZpbmUgUEFUSF9ERVZfTUlYRVIgIi9kZXYvbWl4ZXIiJwplbHNlCiAgZGVmX29zc2F1 ZGlvPScjdW5kZWYgQ09ORklHX09TU19BVURJTycKICBkZWZfb3NzYXVkaW9fZGV2ZHNwPScjZGVm aW5lIFBBVEhfREVWX0RTUCAiIicKICBkZWZfb3NzYXVkaW9fZGV2bWl4ZXI9JyNkZWZpbmUgUEFU SF9ERVZfTUlYRVIgIiInCiAgbm9hb21vZHVsZXM9Im9zcyAkbm9hb21vZHVsZXMiCmZpCmVjaG9y ZXMgIiRfb3NzYXVkaW8iCgoKZWNob2NoZWNrICJhUnRzIgppZiB0ZXN0ICIkX2FydHMiID0gYXV0 byA7IHRoZW4KICBfYXJ0cz1ubwogIGlmICggYXJ0c2MtY29uZmlnIC0tdmVyc2lvbiApID4+ICIk VE1QTE9HIiAyPiYxIDsgdGhlbgogICAgc3RhdGVtZW50X2NoZWNrIGFydHNjLmggJ2FydHNfaW5p dCgpJyAkKGFydHNjLWNvbmZpZyAtLWxpYnMpICQoYXJ0c2MtY29uZmlnIC0tY2ZsYWdzKSAmJgog ICAgICBfYXJ0cz15ZXMKICBmaQpmaQoKaWYgdGVzdCAiJF9hcnRzIiA9IHllcyA7IHRoZW4KICBk ZWZfYXJ0cz0nI2RlZmluZSBDT05GSUdfQVJUUyAxJwogIGFvbW9kdWxlcz0iYXJ0cyAkYW9tb2R1 bGVzIgogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAkKGFydHNjLWNvbmZpZyAtLWxpYnMp IgogIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkKGFydHNjLWNvbmZpZyAtLWNmbGFncyki CmVsc2UKICBub2FvbW9kdWxlcz0iYXJ0cyAkbm9hb21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfYXJ0 cyIKCgplY2hvY2hlY2sgIkVzb3VuRCIKaWYgdGVzdCAiJF9lc2QiID0gYXV0byA7IHRoZW4KICBf ZXNkPW5vCiAgaWYgKCBlc2QtY29uZmlnIC0tdmVyc2lvbiApID4+ICIkVE1QTE9HIiAyPiYxIDsg dGhlbgogICAgc3RhdGVtZW50X2NoZWNrIGVzZC5oICdlc2Rfb3Blbl9zb3VuZCgidGVzdCIpJyAk KGVzZC1jb25maWcgLS1saWJzKSAkKGVzZC1jb25maWcgLS1jZmxhZ3MpICYmIF9lc2Q9eWVzCiAg ZmkKZmkKZWNob3JlcyAiJF9lc2QiCgppZiB0ZXN0ICIkX2VzZCIgPSB5ZXMgOyB0aGVuCiAgZGVm X2VzZD0nI2RlZmluZSBDT05GSUdfRVNEIDEnCiAgYW9tb2R1bGVzPSJlc2QgJGFvbW9kdWxlcyIK ICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgJChlc2QtY29uZmlnIC0tbGlicykiCiAgZXh0 cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICQoZXNkLWNvbmZpZyAtLWNmbGFncykiCgogIGVjaG9j aGVjayAiZXNkX2dldF9sYXRlbmN5KCkiCiAgc3RhdGVtZW50X2NoZWNrIGVzZC5oICdlc2RfZ2V0 X2xhdGVuY3koMCknICQoZXNkLWNvbmZpZyAtLWxpYnMpICQoZXNkLWNvbmZpZyAtLWNmbGFncykg JiYKICAgIF9lc2RfbGF0ZW5jeT15ZXMgJiYgZGVmX2VzZF9sYXRlbmN5PScjZGVmaW5lIENPTkZJ R19FU0RfTEFURU5DWSAxJwogIGVjaG9yZXMgIiRfZXNkX2xhdGVuY3kiCmVsc2UKICBkZWZfZXNk PScjdW5kZWYgQ09ORklHX0VTRCcKICBkZWZfZXNkX2xhdGVuY3k9JyN1bmRlZiBDT05GSUdfRVNE X0xBVEVOQ1knCiAgbm9hb21vZHVsZXM9ImVzZCAkbm9hb21vZHVsZXMiCmZpCgoKZWNob2NoZWNr ICJOQVMiCmlmIHRlc3QgIiRfbmFzIiA9IGF1dG8gOyB0aGVuCiAgX25hcz1ubwogIGhlYWRlcl9j aGVjayBhdWRpby9hdWRpb2xpYi5oIC1sYXVkaW8gLWxYdCAmJiBfbmFzPXllcwpmaQppZiB0ZXN0 ICIkX25hcyIgPSB5ZXMgOyB0aGVuCiAgZGVmX25hcz0nI2RlZmluZSBDT05GSUdfTkFTIDEnCiAg bGlic19tcGxheWVyPSIkbGlic19tcGxheWVyIC1sYXVkaW8gLWxYdCIKICBhb21vZHVsZXM9Im5h cyAkYW9tb2R1bGVzIgplbHNlCiAgbm9hb21vZHVsZXM9Im5hcyAkbm9hb21vZHVsZXMiCiAgZGVm X25hcz0nI3VuZGVmIENPTkZJR19OQVMnCmZpCmVjaG9yZXMgIiRfbmFzIgoKCmVjaG9jaGVjayAi cHVsc2UiCmlmIHRlc3QgIiRfcHVsc2UiID0gYXV0byA7IHRoZW4KICBfcHVsc2U9bm8KICBpZiAk X3BrZ19jb25maWcgLS1leGlzdHMgJ2xpYnB1bHNlID49IDAuOScgOyB0aGVuCiAgICBoZWFkZXJf Y2hlY2sgcHVsc2UvcHVsc2VhdWRpby5oICQoJF9wa2dfY29uZmlnIC0tbGlicyAtLWNmbGFncyBs aWJwdWxzZSkgJiYKICAgICAgX3B1bHNlPXllcwogIGZpCmZpCmVjaG9yZXMgIiRfcHVsc2UiCgpp ZiB0ZXN0ICIkX3B1bHNlIiA9IHllcyA7IHRoZW4KICBkZWZfcHVsc2U9JyNkZWZpbmUgQ09ORklH X1BVTFNFIDEnCiAgYW9tb2R1bGVzPSJwdWxzZSAkYW9tb2R1bGVzIgogIGxpYnNfbXBsYXllcj0i JGxpYnNfbXBsYXllciAkKCRfcGtnX2NvbmZpZyAtLWxpYnMgbGlicHVsc2UpIgogIGV4dHJhX2Nm bGFncz0iJGV4dHJhX2NmbGFncyAkKCRfcGtnX2NvbmZpZyAtLWNmbGFncyBsaWJwdWxzZSkiCmVs c2UKICBkZWZfcHVsc2U9JyN1bmRlZiBDT05GSUdfUFVMU0UnCiAgbm9hb21vZHVsZXM9InB1bHNl ICRub2FvbW9kdWxlcyIKZmkKCgplY2hvY2hlY2sgIkpBQ0siCmlmIHRlc3QgIiRfamFjayIgPSBh dXRvIDsgdGhlbgogIF9qYWNrPXllcwogIGlmIHN0YXRlbWVudF9jaGVjayBqYWNrL2phY2suaCAn amFja19jbGllbnRfb3BlbigidGVzdCIsIEphY2tVc2VFeGFjdE5hbWUsIE5VTEwpJyAtbGphY2sg OyB0aGVuCiAgICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxqYWNrIgogIGVsaWYgc3Rh dGVtZW50X2NoZWNrIGphY2svamFjay5oICdqYWNrX2NsaWVudF9vcGVuKCJ0ZXN0IiwgSmFja1Vz ZUV4YWN0TmFtZSwgTlVMTCknICQoJF9wa2dfY29uZmlnIC0tbGlicyAtLWNmbGFncyAtLXNpbGVu Y2UtZXJyb3JzIGphY2spIDsgdGhlbgogICAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVyICQo JF9wa2dfY29uZmlnIC0tbGlicyBqYWNrKSIKICAgIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFn cyAiJCgkX3BrZ19jb25maWcgLS1jZmxhZ3MgamFjaykiIgogIGVsc2UKICAgIF9qYWNrPW5vCiAg ZmkKZmkKCmlmIHRlc3QgIiRfamFjayIgPSB5ZXMgOyB0aGVuCiAgZGVmX2phY2s9JyNkZWZpbmUg Q09ORklHX0pBQ0sgMScKICBhb21vZHVsZXM9ImphY2sgJGFvbW9kdWxlcyIKZWxzZQogIG5vYW9t b2R1bGVzPSJqYWNrICRub2FvbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9qYWNrIgoKZWNob2NoZWNr ICJPcGVuQUwiCmlmIHRlc3QgIiRfb3BlbmFsIiA9IGF1dG8gOyB0aGVuCiAgX29wZW5hbD1ubwpj YXQgPiAkVE1QQyA8PCBFT0YKI2lmZGVmIE9QRU5BTF9BTF9ICiNpbmNsdWRlIDxPcGVuQUwvYWwu aD4KI2Vsc2UKI2luY2x1ZGUgPEFML2FsLmg+CiNlbmRpZgppbnQgbWFpbih2b2lkKSB7CiAgYWxT b3VyY2VRdWV1ZUJ1ZmZlcnMoMCwgMCwgMCk7CiAgcmV0dXJuIDA7Cn0KRU9GCiAgZm9yIEkgaW4g Ii1sb3BlbmFsIiAiLWxvcGVuYWwzMiIgIi1mcmFtZXdvcmsgT3BlbkFMIiA7IGRvCiAgICBjY19j aGVjayAkSSAmJiBfb3BlbmFsPXllcyAmJiBicmVhawogICAgY2NfY2hlY2sgLURPUEVOQUxfQUxf SD0xICRJICYmIGRlZl9vcGVuYWxfaD0nI2RlZmluZSBPUEVOQUxfQUxfSCAxJyAmJiBfb3BlbmFs PXllcyAmJiBicmVhawogIGRvbmUKICB0ZXN0ICIkX29wZW5hbCIgPSB5ZXMgJiYgbGlic19tcGxh eWVyPSIkbGlic19tcGxheWVyICRJIgpmaQppZiB0ZXN0ICIkX29wZW5hbCIgPSB5ZXMgOyB0aGVu CiAgZGVmX29wZW5hbD0nI2RlZmluZSBDT05GSUdfT1BFTkFMIDEnCiAgYW9tb2R1bGVzPSJvcGVu YWwgJGFvbW9kdWxlcyIKZWxzZQogIG5vYW9tb2R1bGVzPSJvcGVuYWwgJG5vYW9tb2R1bGVzIgpm aQplY2hvcmVzICIkX29wZW5hbCIKCgplY2hvY2hlY2sgIkFMU0EgYXVkaW8iCmlmIHRlc3QgIiRf YWxsb2NhIiA9IHllcyAmJiB0ZXN0ICIkX2Fsc2EiID0gYXV0byA7IHRoZW4KICBfYWxzYT1ubwog IGhlYWRlcl9jaGVjayBhbHNhL2Fzb3VuZGxpYi5oIC1sYXNvdW5kICRsZF9kbCAkbGRfcHRocmVh ZCAmJiBfYWxzYT15ZXMKZmkKaWYgdGVzdCAiJF9hbHNhIiA9IHllcyA7IHRoZW4KICBhb21vZHVs ZXM9ImFsc2EgJGFvbW9kdWxlcyIKICBkZWZfYWxzYT0nI2RlZmluZSBDT05GSUdfQUxTQSAxJwog IGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1sYXNvdW5kICRsZF9kbCAkbGRfcHRocmVh ZCIKZWxzZQogIG5vYW9tb2R1bGVzPSJhbHNhICRub2FvbW9kdWxlcyIKICBkZWZfYWxzYT0nI3Vu ZGVmIENPTkZJR19BTFNBJwpmaQplY2hvcmVzICIkX2Fsc2EiCgoKZWNob2NoZWNrICJTdW4gYXVk aW8iCmlmIHRlc3QgIiRfc3VuYXVkaW8iID0gYXV0byA7IHRoZW4KICBjYXQgPiAkVE1QQyA8PCBF T0YKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL2F1ZGlvaW8uaD4KaW50IG1h aW4odm9pZCkgeyBhdWRpb19pbmZvX3QgaW5mbzsgQVVESU9fSU5JVElORk8oJmluZm8pOyByZXR1 cm4gMDsgfQpFT0YKICBfc3VuYXVkaW89bm8KICBjY19jaGVjayAmJiBfc3VuYXVkaW89eWVzCmZp CmlmIHRlc3QgIiRfc3VuYXVkaW8iID0geWVzIDsgdGhlbgogIGRlZl9zdW5hdWRpbz0nI2RlZmlu ZSBDT05GSUdfU1VOX0FVRElPIDEnCiAgYW9tb2R1bGVzPSJzdW4gJGFvbW9kdWxlcyIKZWxzZQog IGRlZl9zdW5hdWRpbz0nI3VuZGVmIENPTkZJR19TVU5fQVVESU8nCiAgbm9hb21vZHVsZXM9InN1 biAkbm9hb21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfc3VuYXVkaW8iCgoKZGVmX21saWI9JyNkZWZp bmUgQ09ORklHX01MSUIgMCcKaWYgc3Vub3M7IHRoZW4KZWNob2NoZWNrICJTdW4gbWVkaWFMaWIi CmlmIHRlc3QgIiRfbWxpYiIgPSBhdXRvIDsgdGhlbgogIF9tbGliPW5vCiAgY2NfY2hlY2sgbWxp Yi5oICJtbGliX1ZpZGVvQ29sb3JZVVYyQUJHUjQyMCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw KSIgLWxtbGliICYmCiAgICBfbWxpYj15ZXMgJiYgZGVmX21saWI9JyNkZWZpbmUgQ09ORklHX01M SUIgMScKZmkKZWNob3JlcyAiJF9tbGliIgpmaSAjaWYgc3Vub3MKCgppZiBkYXJ3aW47IHRoZW4K ZWNob2NoZWNrICJDb3JlQXVkaW8iCmlmIHRlc3QgIiRfY29yZWF1ZGlvIiA9IGF1dG8gOyB0aGVu CiAgY2F0ID4gJFRNUEMgPDxFT0YKI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW8uaD4KI2lu Y2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1Rvb2xib3guaD4KI2luY2x1ZGUgPEF1ZGlvVW5pdC9B dWRpb1VuaXQuaD4KaW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQpFT0YKICBfY29yZWF1ZGlv PW5vCiAgY2NfY2hlY2sgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBBdWRpb1VuaXQg LWZyYW1ld29yayBBdWRpb1Rvb2xib3ggJiYgX2NvcmVhdWRpbz15ZXMKZmkKaWYgdGVzdCAiJF9j b3JlYXVkaW8iID0geWVzIDsgdGhlbgogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtZnJh bWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIEF1ZGlvVW5pdCAtZnJhbWV3b3JrIEF1ZGlvVG9v bGJveCIKICBkZWZfY29yZWF1ZGlvPScjZGVmaW5lIENPTkZJR19DT1JFQVVESU8gMScKICBhb21v ZHVsZXM9ImNvcmVhdWRpbyAkYW9tb2R1bGVzIgplbHNlCiAgZGVmX2NvcmVhdWRpbz0nI3VuZGVm IENPTkZJR19DT1JFQVVESU8nCiAgbm9hb21vZHVsZXM9ImNvcmVhdWRpbyAkbm9hb21vZHVsZXMi CmZpCmVjaG9yZXMgJF9jb3JlYXVkaW8KZmkgI2lmIGRhcndpbgoKCmlmIGlyaXg7IHRoZW4KZWNo b2NoZWNrICJTR0kgYXVkaW8iCmlmIHRlc3QgIiRfc2dpYXVkaW8iID0gYXV0byA7IHRoZW4KICBf c2dpYXVkaW89bm8KICBoZWFkZXJfY2hlY2sgZG1lZGlhL2F1ZGlvLmggJiYgX3NnaWF1ZGlvPXll cwpmaQppZiB0ZXN0ICIkX3NnaWF1ZGlvIiA9ICJ5ZXMiIDsgdGhlbgogIGRlZl9zZ2lhdWRpbz0n I2RlZmluZSBDT05GSUdfU0dJX0FVRElPIDEnCiAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVy IC1sYXVkaW8iCiAgYW9tb2R1bGVzPSJzZ2kgJGFvbW9kdWxlcyIKZWxzZQogIGRlZl9zZ2lhdWRp bz0nI3VuZGVmIENPTkZJR19TR0lfQVVESU8nCiAgbm9hb21vZHVsZXM9InNnaSAkbm9hb21vZHVs ZXMiCmZpCmVjaG9yZXMgIiRfc2dpYXVkaW8iCmZpICNpZiBpcml4CgoKZWNob2NoZWNrICJzbmRp byBhdWRpbyIKaWYgdGVzdCAiJF9zbmRpbyIgPSBhdXRvIDsgdGhlbgogIF9zbmRpbz1ubwogIHN0 YXRlbWVudF9jaGVjayBzbmRpby5oICdzaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUExBWSwgMCkn IC1sc25kaW8gJiYgX3NuZGlvPXllcwpmaQppZiB0ZXN0ICIkX3NuZGlvIiA9IHllcyA7IHRoZW4K ICBkZWZfc25kaW89JyNkZWZpbmUgQ09ORklHX1NORElPX0FVRElPIDEnCiAgYW9tb2R1bGVzPSJz bmRpbyAkYW9tb2R1bGVzIgogIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1sc25kaW8i CmVsc2UKICBkZWZfc25kaW89JyN1bmRlZiBDT05GSUdfU05ESU9fQVVESU8nCiAgbm9hb21vZHVs ZXM9InNuZGlvICRub2FvbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9zbmRpbyIKCgppZiBvczIgOyB0 aGVuCmVjaG9jaGVjayAiS0FJIChVTklBVUQvREFSVCkiCmlmIHRlc3QgIiRfa2FpIiA9IGF1dG87 IHRoZW4KICBfa2FpPW5vOwogIGhlYWRlcl9jaGVja19icm9rZW4gb3MyLmgga2FpLmggLWxrYWkg JiYgX2thaT15ZXMKZmkKaWYgdGVzdCAiJF9rYWkiID0geWVzIDsgdGhlbgogIGRlZl9rYWk9JyNk ZWZpbmUgQ09ORklHX0tBSSAxJwogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbGthaSIK ICBhb21vZHVsZXM9ImthaSAkYW9tb2R1bGVzIgplbHNlCiAgZGVmX2thaT0nI3VuZGVmIENPTkZJ R19LQUknCiAgbm9hb21vZHVsZXM9ImthaSAkbm9hb21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfa2Fp IgoKZWNob2NoZWNrICJEQVJUIgppZiB0ZXN0ICIkX2RhcnQiID0gYXV0bzsgdGhlbgogIF9kYXJ0 PW5vOwogIGhlYWRlcl9jaGVja19icm9rZW4gb3MyLmggZGFydC5oIC1sZGFydCAmJiBfZGFydD15 ZXMKZmkKaWYgdGVzdCAiJF9kYXJ0IiA9IHllcyA7IHRoZW4KICBkZWZfZGFydD0nI2RlZmluZSBD T05GSUdfREFSVCAxJwogIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAtbGRhcnQiCiAgYW9t b2R1bGVzPSJkYXJ0ICRhb21vZHVsZXMiCmVsc2UKICBkZWZfZGFydD0nI3VuZGVmIENPTkZJR19E QVJUJwogIG5vYW9tb2R1bGVzPSJkYXJ0ICRub2FvbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9kYXJ0 IgpmaSAjaWYgb3MyCgoKIyBzZXQgZGVmYXVsdCBDRC9EVkQgZGV2aWNlcwppZiB3aW4zMiB8fCBv czIgOyB0aGVuCiAgZGVmYXVsdF9jZHJvbV9kZXZpY2U9IkQ6IgplbGlmIGRhcndpbiA7IHRoZW4K ICBkZWZhdWx0X2Nkcm9tX2RldmljZT0iL2Rldi9kaXNrMSIKZWxpZiBkcmFnb25mbHkgOyB0aGVu CiAgZGVmYXVsdF9jZHJvbV9kZXZpY2U9Ii9kZXYvY2QwIgplbGlmIGZyZWVic2QgOyB0aGVuCiAg ZGVmYXVsdF9jZHJvbV9kZXZpY2U9Ii9kZXYvYWNkMCIKZWxpZiBvcGVuYnNkIDsgdGhlbgogIGRl ZmF1bHRfY2Ryb21fZGV2aWNlPSIvZGV2L3JjZDBjIgplbGlmIHN1bm9zIDsgdGhlbgogIGRlZmF1 bHRfY2Ryb21fZGV2aWNlPSIvdm9sL2Rldi9hbGlhc2VzL2Nkcm9tMCIKICAjIFNvbGFyaXMgMTAg YW5kIG5ld2VyIHVzZSBIQUwgaW5zdGVhZCBvZiB0aGUgdm9sZCBkYWVtb24uCiAgdGVzdCAkKHVu YW1lIC1yIHwgc2VkICdzL141XC4vLycpIC1ndCAxMCAmJiBkZWZhdWx0X2Nkcm9tX2RldmljZT0i L2Nkcm9tL2Nkcm9tMCIKZWxpZiBhbWlnYW9zIDsgdGhlbgogIGRlZmF1bHRfY2Ryb21fZGV2aWNl PSJhMWlkZS5kZXZpY2U6MiIKZWxzZQogIGRlZmF1bHRfY2Ryb21fZGV2aWNlPSIvZGV2L2Nkcm9t IgpmaQoKaWYgd2luMzIgfHwgb3MyIHx8IGRyYWdvbmZseSB8fCBmcmVlYnNkIHx8IG9wZW5ic2Qg fHwgc3Vub3MgfHwgYW1pZ2FvcyA7IHRoZW4KICBkZWZhdWx0X2R2ZF9kZXZpY2U9JGRlZmF1bHRf Y2Ryb21fZGV2aWNlCmVsaWYgZGFyd2luIDsgdGhlbgogIGRlZmF1bHRfZHZkX2RldmljZT0iL2Rl di9yZGlza04iCmVsc2UKICBkZWZhdWx0X2R2ZF9kZXZpY2U9Ii9kZXYvZHZkIgpmaQoKCmVjaG9j aGVjayAiVkNEIHN1cHBvcnQiCmlmIHRlc3QgIiRfdmNkIiA9IGF1dG87IHRoZW4KICBfdmNkPW5v CiAgaWYgbGludXggfHwgZnJlZWJzZCB8fCBuZXRic2QgfHwgb3BlbmJzZCB8fCBkcmFnb25mbHkg fHwgYnNkb3MgfHwgZGFyd2luIHx8IHN1bm9zIHx8IG9zMjsgdGhlbgogICAgX3ZjZD15ZXMKICBl bGlmIG1pbmd3MzI7IHRoZW4KICBoZWFkZXJfY2hlY2sgZGRrL250ZGRjZHJtLmggJiYgX3ZjZD15 ZXMKICBmaQpmaQppZiB0ZXN0ICIkX3ZjZCIgPSB5ZXM7IHRoZW4KICBpbnB1dG1vZHVsZXM9InZj ZCAkaW5wdXRtb2R1bGVzIgogIGRlZl92Y2Q9JyNkZWZpbmUgQ09ORklHX1ZDRCAxJwplbHNlCiAg ZGVmX3ZjZD0nI3VuZGVmIENPTkZJR19WQ0QnCiAgbm9pbnB1dG1vZHVsZXM9InZjZCAkbm9pbnB1 dG1vZHVsZXMiCiAgcmVzX2NvbW1lbnQ9Im5vdCBzdXBwb3J0ZWQgb24gdGhpcyBPUyIKZmkKZWNo b3JlcyAiJF92Y2QiCgoKCmVjaG9jaGVjayAiQmx1LXJheSBzdXBwb3J0IgppZiB0ZXN0ICIkX2Js dXJheSIgPSBhdXRvIDsgdGhlbgogIF9ibHVyYXk9bm8KICBzdGF0ZW1lbnRfY2hlY2sgbGliYmx1 cmF5L2JsdXJheS5oICdiZF9nZXRfdGl0bGVfaW5mbygwLCAwLCAwKScgLWxibHVyYXkgJiYgX2Js dXJheT15ZXMKZmkKaWYgdGVzdCAiJF9ibHVyYXkiID0geWVzIDsgdGhlbgogIGRlZl9ibHVyYXk9 JyNkZWZpbmUgQ09ORklHX0xJQkJMVVJBWSAxJwogIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZs YWdzIC1sYmx1cmF5IgogIGlucHV0bW9kdWxlcz0iYmx1cmF5ICRpbnB1dG1vZHVsZXMiCmVsc2UK ICBkZWZfYmx1cmF5PScjdW5kZWYgQ09ORklHX0xJQkJMVVJBWScKICBub2lucHV0bW9kdWxlcz0i Ymx1cmF5ICRub2lucHV0bW9kdWxlcyIKZmkKZWNob3JlcyAiJF9ibHVyYXkiCgplY2hvY2hlY2sg ImR2ZHJlYWQiCmlmIHRlc3QgIiRfZHZkcmVhZCIgPSBhdXRvIDsgdGhlbgogIF9kdmRyZWFkPW5v CiAgICBfZHZkcmVhZGNmbGFncz0kKCRfZHZkcmVhZGNvbmZpZyAtLWNmbGFncyAyPiAvZGV2L251 bGwpCiAgICBfZHZkcmVhZGxpYnM9JCgkX2R2ZHJlYWRjb25maWcgLS1saWJzIDI+IC9kZXYvbnVs bCkKICAgIGlmIHN0YXRlbWVudF9jaGVjayBkdmRyZWFkL2R2ZF9yZWFkZXIuaCAnRFZET3Blbigi dGVzdCIpJyAkX2R2ZHJlYWRjZmxhZ3MgJF9kdmRyZWFkbGlicyA7IHRoZW4KICAgICAgX2R2ZHJl YWQ9eWVzCiAgICAgIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkX2R2ZHJlYWRjZmxhZ3Mi CiAgICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRfZHZkcmVhZGxpYnMiCiAgICBm aQpmaQoKaWYgdGVzdCAiJF9kdmRyZWFkIiA9IHllczsgdGhlbgogIGRlZl9kdmRyZWFkPScjZGVm aW5lIENPTkZJR19EVkRSRUFEIDEnCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MiCiAg aW5wdXRtb2R1bGVzPSJkdmRyZWFkICRpbnB1dG1vZHVsZXMiCmVsc2UKICBfZHZkbmF2PW5vCiAg ZGVmX2R2ZHJlYWQ9JyN1bmRlZiBDT05GSUdfRFZEUkVBRCcKICBub2lucHV0bW9kdWxlcz0iZHZk cmVhZCAkbm9pbnB1dG1vZHVsZXMiCmZpCmVjaG9yZXMgIiRfZHZkcmVhZCIKCgplY2hvY2hlY2sg ImxpYmNkaW8iCmhlYWRlcl9jaGVjayBjZGlvL2NkZGEuaCAmJiBfaW5jX3BhcmFub2lhPWNkaW8g fHwgX2luY19wYXJhbm9pYT1jZGlvL3BhcmFub2lhCmlmIHRlc3QgIiRfbGliY2RpbyIgPSBhdXRv IDsgdGhlbgogICAgICAgIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3RkaW8uaD4KI2lu Y2x1ZGUgPGNkaW8vdmVyc2lvbi5oPgojaW5jbHVkZSA8JF9pbmNfcGFyYW5vaWEvY2RkYS5oPgoj aW5jbHVkZSA8JF9pbmNfcGFyYW5vaWEvcGFyYW5vaWEuaD4KaW50IG1haW4odm9pZCkgewogICAg dm9pZCAqdGVzdCA9IGNkZGFfdmVyYm9zZV9zZXQ7CiAgICBwcmludGYoIiVzXG4iLCBDRElPX1ZF UlNJT04pOwogICAgcmV0dXJuIHRlc3QgPT0gKHZvaWQgKikxOwp9CkVPRgogICAgICAgIF9saWJj ZGlvPW5vCiAgICBmb3IgbGRfdG1wIGluICIiICItbHdpbm1tIiA7IGRvCiAgICAgICAgbGRfdG1w PSItbGNkaW9fY2RkYSAtbGNkaW8gLWxjZGlvX3BhcmFub2lhICRsZF90bXAiCiAgICAgICAgY2Nf Y2hlY2sgJGxkX3RtcCAmJiBfbGliY2Rpbz15ZXMgJiYKICAgICAgICAgICAgZXh0cmFfbGRmbGFn cz0iJGV4dHJhX2xkZmxhZ3MgJGxkX3RtcCIgJiYgYnJlYWsKICAgIGRvbmUKICAgIGlmIHRlc3Qg IiRfbGliY2RpbyIgPSBubyAmJiAkX3BrZ19jb25maWcgLS1leGlzdHMgbGliY2Rpb19wYXJhbm9p YSA7IHRoZW4KICAgICAgaW5jX3RtcD0kKCRfcGtnX2NvbmZpZyAtLWNmbGFncyBsaWJjZGlvX3Bh cmFub2lhKQogICAgICBsZF90bXA9JCgkX3BrZ19jb25maWcgLS1saWJzIGxpYmNkaW9fcGFyYW5v aWEpCiAgICAgIGNjX2NoZWNrICRpbmNfdG1wICRsZF90bXAgJiYgX2xpYmNkaW89eWVzICYmCiAg ICAgICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJGxkX3RtcCIgJiYgZXh0cmFfY2Zs YWdzPSIkZXh0cmFfY2ZsYWdzICRpbmNfdG1wIgogICAgZmkKZmkKaWYgdGVzdCAiJF9saWJjZGlv IiA9IHllcyA7IHRoZW4KICAgIF9jZGRhPSd5ZXMnCiAgICBfY2RwYXJhbm9pYT1ubwogICAgZGVm X2xpYmNkaW89JyNkZWZpbmUgQ09ORklHX0xJQkNESU8gMScKICAgIGlmIHRlc3QgIiRfaW5jX3Bh cmFub2lhIiA9IGNkaW8gOyB0aGVuCiAgICAgIGRlZl9jZGlvX3BhcmFub2lhX2g9JyNkZWZpbmUg SEFWRV9DRElPX1BBUkFOT0lBX0ggMScKICAgICAgZGVmX2NkaW9fcGFyYW5vaWFfcGFyYW5vaWFf aD0nI2RlZmluZSBIQVZFX0NESU9fUEFSQU5PSUFfUEFSQU5PSUFfSCAwJwogICAgZWxzZQogICAg ICBkZWZfY2Rpb19wYXJhbm9pYV9oPScjZGVmaW5lIEhBVkVfQ0RJT19QQVJBTk9JQV9IIDAnCiAg ICAgIGRlZl9jZGlvX3BhcmFub2lhX3BhcmFub2lhX2g9JyNkZWZpbmUgSEFWRV9DRElPX1BBUkFO T0lBX1BBUkFOT0lBX0ggMScKICAgIGZpCiAgICBkZWZfaGF2ZWxpYmNkaW89J3llcycKZWxzZQog ICAgX2xpYmNkaW89bm8KICAgIGRlZl9saWJjZGlvPScjdW5kZWYgQ09ORklHX0xJQkNESU8nCiAg ICBkZWZfY2Rpb19wYXJhbm9pYV9oPScjZGVmaW5lIEhBVkVfQ0RJT19QQVJBTk9JQV9IIDAnCiAg ICBkZWZfY2Rpb19wYXJhbm9pYV9wYXJhbm9pYV9oPScjZGVmaW5lIEhBVkVfQ0RJT19QQVJBTk9J QV9QQVJBTk9JQV9IIDAnCiAgICBkZWZfaGF2ZWxpYmNkaW89J25vJwpmaQplY2hvcmVzICIkX2xp YmNkaW8iCgplY2hvY2hlY2sgImNkcGFyYW5vaWEiCmlmIHRlc3QgIiRfY2RwYXJhbm9pYSIgPSBh dXRvIDsgdGhlbgogICAgX2NkcGFyYW5vaWE9bm8KICAgIGZvciBpbmNfdG1wIGluICIiICItSS91 c3IvaW5jbHVkZS9jZGRhIiAiLUkvdXNyL2xvY2FsL2luY2x1ZGUvY2RkYSIgOyBkbwogICAgICBz dGF0ZW1lbnRfY2hlY2tfYnJva2VuIGNkZGFfaW50ZXJmYWNlLmggY2RkYV9wYXJhbm9pYS5oICdw YXJhbm9pYV9jYWNoZW1vZGVsX3NpemUoTlVMTCwgMCknICRpbmNfdG1wIC1sY2RkYV9pbnRlcmZh Y2UgLWxjZGRhX3BhcmFub2lhICYmCiAgICAgICAgX2NkcGFyYW5vaWE9eWVzICYmIGV4dHJhX2Nm bGFncz0iJGV4dHJhX2NmbGFncyAkaW5jX3RtcCIgJiYgYnJlYWsKICAgIGRvbmUKZmkKaWYgdGVz dCAiJF9jZHBhcmFub2lhIiA9IHllcyA7IHRoZW4KICAgIF9jZGRhPSd5ZXMnCiAgICBleHRyYV9s ZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbGNkZGFfaW50ZXJmYWNlIC1sY2RkYV9wYXJhbm9pYSIK ICAgIG9wZW5ic2QgJiYgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWx1dGlsIgplbGlm IHRlc3QgIiRfbGliY2RpbyIgPSB5ZXMgOyB0aGVuCiAgICByZXNfY29tbWVudD0ndXNpbmcgbGli Y2RpbycKZmkKZWNob3JlcyAiJF9jZHBhcmFub2lhIgoKCmlmIHRlc3QgIiRfY2RkYSIgPSB5ZXMg OyB0aGVuCiAgICB0ZXN0ICRfY2RkYiA9IGF1dG8gJiYgdGVzdCAkbmV0d29ya2luZyA9IHllcyAm JiBfY2RkYj15ZXMKICAgIGRlZl9jZHBhcmFub2lhPScjZGVmaW5lIENPTkZJR19DRERBIDEnCiAg ICBpbnB1dG1vZHVsZXM9ImNkZGEgJGlucHV0bW9kdWxlcyIKZWxzZQogICAgZGVmX2NkcGFyYW5v aWE9JyN1bmRlZiBDT05GSUdfQ0REQScKICAgIG5vaW5wdXRtb2R1bGVzPSJjZGRhICRub2lucHV0 bW9kdWxlcyIKZmkKCmlmIHRlc3QgIiRfY2RkYiIgPSB5ZXMgOyB0aGVuCiAgICBkZWZfY2RkYj0n I2RlZmluZSBDT05GSUdfQ0REQiAxJwogICAgaW5wdXRtb2R1bGVzPSJjZGRiICRpbnB1dG1vZHVs ZXMiCmVsc2UKICAgIF9jZGRiPW5vCiAgICBkZWZfY2RkYj0nI3VuZGVmIENPTkZJR19DRERCJwog ICAgbm9pbnB1dG1vZHVsZXM9ImNkZGIgJG5vaW5wdXRtb2R1bGVzIgpmaQoKZWNob2NoZWNrICJi aXRtYXAgZm9udCBzdXBwb3J0IgppZiB0ZXN0ICIkX2JpdG1hcF9mb250IiA9IHllcyA7IHRoZW4K ICBkZWZfYml0bWFwX2ZvbnQ9IiNkZWZpbmUgQ09ORklHX0JJVE1BUF9GT05UIDEiCmVsc2UKICBk ZWZfYml0bWFwX2ZvbnQ9IiN1bmRlZiBDT05GSUdfQklUTUFQX0ZPTlQiCmZpCmVjaG9yZXMgIiRf Yml0bWFwX2ZvbnQiCgoKZWNob2NoZWNrICJmcmVldHlwZSA+PSAyLjAuOSIKCiMgZnJlZXR5cGUg ZGVwZW5kcyBvbiBpY29udgppZiB0ZXN0ICIkX2ljb252IiA9IG5vIDsgdGhlbgogICAgX2ZyZWV0 eXBlPW5vCiAgICByZXNfY29tbWVudD0iaWNvbnYgc3VwcG9ydCBuZWVkZWQiCmZpCgppZiB0ZXN0 ICIkX2ZyZWV0eXBlIiA9IGF1dG8gOyB0aGVuCiAgICBpZiAoICRfZnJlZXR5cGVjb25maWcgLS12 ZXJzaW9uICkgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgogICAgICAgIGNhdCA+ICRUTVBDIDw8IEVP RgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+CiNpbmNsdWRlIEZUX0ZS RUVUWVBFX0gKI2lmICgoRlJFRVRZUEVfTUFKT1IgPCAyKSB8fCAoKEZSRUVUWVBFX01JTk9SID09 IDApICYmIChGUkVFVFlQRV9QQVRDSCA8IDkpKSkKI2Vycm9yICJOZWVkIEZyZWVUeXBlIDIuMC45 IG9yIG5ld2VyIgojZW5kaWYKaW50IG1haW4odm9pZCkgewogICAgRlRfTGlicmFyeSBsaWJyYXJ5 OwogICAgRlRfSW5pdF9GcmVlVHlwZSgmbGlicmFyeSk7CiAgICByZXR1cm4gMDsKfQpFT0YKICAg ICAgICBfZnJlZXR5cGU9bm8KICAgICAgICBjY19jaGVjayAkKCRfZnJlZXR5cGVjb25maWcgLS1j ZmxhZ3MpICQoJF9mcmVldHlwZWNvbmZpZyAtLWxpYnMpICYmIF9mcmVldHlwZT15ZXMKICAgIGVs c2UKICAgICAgICBfZnJlZXR5cGU9bm8KICAgIGZpCmZpCmlmIHRlc3QgIiRfZnJlZXR5cGUiID0g eWVzIDsgdGhlbgogICAgZGVmX2ZyZWV0eXBlPScjZGVmaW5lIENPTkZJR19GUkVFVFlQRSAxJwog ICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICQoJF9mcmVldHlwZWNvbmZpZyAtLWNmbGFn cykiCiAgICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAkKCRfZnJlZXR5cGVjb25maWcg LS1saWJzKSIKZWxzZQogICAgZGVmX2ZyZWV0eXBlPScjdW5kZWYgQ09ORklHX0ZSRUVUWVBFJwpm aQplY2hvcmVzICIkX2ZyZWV0eXBlIgoKaWYgdGVzdCAiJF9mcmVldHlwZSIgPSBubyA7IHRoZW4K ICAgIF9mb250Y29uZmlnPW5vCiAgICByZXNfY29tbWVudD0iRnJlZVR5cGUgc3VwcG9ydCBuZWVk ZWQiCmZpCmVjaG9jaGVjayAiZm9udGNvbmZpZyIKaWYgdGVzdCAiJF9mb250Y29uZmlnIiA9IGF1 dG8gOyB0aGVuCiAgICAgICAgY2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRlIDxzdGRpby5oPgoj aW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KI2lm IEZDX1ZFUlNJT04gPCAyMDQwMgojZXJyb3IgQXQgbGVhc3QgdmVyc2lvbiAyLjQuMiBvZiBGb250 Y29uZmlnIHJlcXVpcmVkCiNlbmRpZgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgZXJyID0gRmNJ bml0KCk7CiAgICBpZiAoZXJyID09IEZjRmFsc2UpIHsKICAgICAgICBwcmludGYoIkNvdWxkIG5v dCBpbml0aWFsaXplIEZvbnRjb25maWcgbGlicmFyeS5cbiIpOwogICAgICAgIGV4aXQoZXJyKTsK ICAgIH0KICAgIHJldHVybiAwOwp9CkVPRgogIF9mb250Y29uZmlnPW5vCiAgZm9yIGxkX3RtcCBp biAiIiAiLWxleHBhdCAtbGZyZWV0eXBlIiAiLWxleHBhdCAtbGZyZWV0eXBlIC1seiIgIi1sZXhw YXQgLWxmcmVldHlwZSAtbHogLWxpY29udiIgOyBkbwogICAgbGRfdG1wPSItbGZvbnRjb25maWcg JGxkX3RtcCIKICAgIGNjX2NoZWNrICRsZF90bXAgJiYgX2ZvbnRjb25maWc9eWVzICYmIGV4dHJh X2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRsZF90bXAiICYmIGJyZWFrCiAgZG9uZQogIGlmIHRl c3QgIiRfZm9udGNvbmZpZyIgPSBubyAmJiAkX3BrZ19jb25maWcgLS1leGlzdHMgZm9udGNvbmZp ZyA7IHRoZW4KICAgIGluY190bXA9JCgkX3BrZ19jb25maWcgLS1jZmxhZ3MgZm9udGNvbmZpZykK ICAgIGxkX3RtcD0kKCRfcGtnX2NvbmZpZyAtLWxpYnMgZm9udGNvbmZpZykKICAgIGNjX2NoZWNr ICRpbmNfdG1wICRsZF90bXAgJiYgX2ZvbnRjb25maWc9eWVzICYmCiAgICAgIGV4dHJhX2xkZmxh Z3M9IiRleHRyYV9sZGZsYWdzICRsZF90bXAiICYmIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFn cyAkaW5jX3RtcCIKICBmaQpmaQppZiB0ZXN0ICIkX2ZvbnRjb25maWciID0geWVzIDsgdGhlbgog ICAgZGVmX2ZvbnRjb25maWc9JyNkZWZpbmUgQ09ORklHX0ZPTlRDT05GSUcgMScKZWxzZQogICAg ZGVmX2ZvbnRjb25maWc9JyN1bmRlZiBDT05GSUdfRk9OVENPTkZJRycKZmkKZWNob3JlcyAiJF9m b250Y29uZmlnIgoKCmVjaG9jaGVjayAiZnJpYmlkaSB3aXRoIGNoYXJzZXRzIgppZiB0ZXN0ICIk X2ZyaWJpZGkiID0gYXV0byA7IHRoZW4KICAgIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8 c3RkbGliLmg+CiNpbmNsdWRlIDxmcmliaWRpL2ZyaWJpZGkuaD4KRnJpQmlkaVBhclR5cGUgdGVz dDsKaW50IG1haW4odm9pZCkgewogICAgaWYgKGZyaWJpZGlfcGFyc2VfY2hhcnNldCgiVVRGLTgi KSAhPSBGUklCSURJX0NIQVJfU0VUX1VURjgpCiAgICAgICBleGl0KDEpOwogICAgcmV0dXJuIDA7 Cn0KRU9GCiAgICBfZnJpYmlkaT1ubwogICAgY2NfY2hlY2sgLWxmcmliaWRpICYmIF9mcmliaWRp PXllcyAmJiBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbGZyaWJpZGkiCiAgICBpZiAk X3BrZ19jb25maWcgLS1leGlzdHMgZnJpYmlkaSA+IC9kZXYvbnVsbCAyPiYxICYmCiAgICAgICB0 ZXN0ICIkX2ZyaWJpZGkiID0gbm8gOyB0aGVuCiAgICAgICAgaW5jX3RtcD0iJCgkX3BrZ19jb25m aWcgLS1jZmxhZ3MgZnJpYmlkaSkiCiAgICAgICAgbGRfdG1wPSIkKCRfcGtnX2NvbmZpZyAtLWxp YnMgZnJpYmlkaSkiCiAgICAgICAgY2NfY2hlY2sgJGluY190bXAgJGxkX3RtcCAmJiBfZnJpYmlk aT15ZXMgJiYKICAgICAgICAgICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICRpbmNfdG1w IiAmJgogICAgICAgICAgICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAkbGRfdG1wIgog ICAgZmkKZmkKaWYgdGVzdCAiJF9mcmliaWRpIiA9IHllcyA7IHRoZW4KICAgIGRlZl9mcmliaWRp PScjZGVmaW5lIENPTkZJR19GUklCSURJIDEnCmVsc2UKICAgIGRlZl9mcmliaWRpPScjdW5kZWYg Q09ORklHX0ZSSUJJREknCmZpCmVjaG9yZXMgIiRfZnJpYmlkaSIKCgplY2hvY2hlY2sgIlNTQS9B U1Mgc3VwcG9ydCIKIyBsaWJhc3MgZGVwZW5kcyBvbiBGcmVlVHlwZQppZiB0ZXN0ICIkX2ZyZWV0 eXBlIiA9IG5vIDsgdGhlbgogICAgX2Fzcz1ubwogICAgYXNzX2ludGVybmFsPW5vCiAgICByZXNf Y29tbWVudD0iRnJlZVR5cGUgYW5kIEZyaUJpRGkgc3VwcG9ydCBuZWVkZWQiCmZpCgppZiB0ZXN0 ICIkX2FzcyIgPSBhdXRvIDsgdGhlbgogICAgY2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRlIDxm dDJidWlsZC5oPgojaW5jbHVkZSBGVF9GUkVFVFlQRV9ICiNpZiAoKEZSRUVUWVBFX01BSk9SIDwg MikgfHwgKEZSRUVUWVBFX01JTk9SIDwgMikgfHwgKChGUkVFVFlQRV9NSU5PUiA9PSAyKSAmJiAo RlJFRVRZUEVfUEFUQ0ggPCAxKSkpCiNlcnJvciAiTmVlZCBGcmVlVHlwZSAyLjIuMSBvciBuZXdl ciIKI2VuZGlmCmludCBtYWluKHZvaWQpIHsgcmV0dXJuIDA7IH0KRU9GCiAgICBfYXNzPW5vCiAg ICBjY19jaGVjayAkKCRfZnJlZXR5cGVjb25maWcgLS1jZmxhZ3MpICQoJF9mcmVldHlwZWNvbmZp ZyAtLWxpYnMpICYmIF9hc3M9eWVzCiAgICBpZiB0ZXN0ICIkX2FzcyIgPSBubyA7IHRoZW4KICAg ICAgICByZXNfY29tbWVudD0iRnJlZVR5cGUgPj0gMi4yLjEgbmVlZGVkIgogICAgZWxpZiB0ZXN0 ICIkYXNzX2ludGVybmFsIiAhPSB5ZXMgOyB0aGVuCiAgICAgICAgY2F0ID4gJFRNUEMgPDwgRU9G CiNpbmNsdWRlIDxhc3MvYXNzLmg+CmludCBtYWluKHZvaWQpIHsKI2lmICFkZWZpbmVkKExJQkFT U19WRVJTSU9OKSB8fCBMSUJBU1NfVkVSU0lPTiA8IDB4MDA5MTAwMDAKI2Vycm9yICJsaWJhc3Mg dmVyc2lvbiB0b28gb2xkIgojZW5kaWYKICBhc3NfcHJvY2Vzc19mb3JjZV9zdHlsZSgwKTsKICBy ZXR1cm4gMDsKfQpFT0YKICAgICAgICBpZiBjY19jaGVjayAtbGFzcyA7IHRoZW4KICAgICAgICAg ICAgcmVzX2NvbW1lbnQ9ImV4dGVybmFsIgogICAgICAgICAgICBleHRyYV9sZGZsYWdzPSIkZXh0 cmFfbGRmbGFncyAtbGFzcyIKICAgICAgICBlbGlmIHRlc3QgIiRhc3NfaW50ZXJuYWwiID0gYXV0 byA7IHRoZW4KICAgICAgICAgICAgYXNzX2ludGVybmFsPXllcwogICAgICAgIGVsc2UKICAgICAg ICAgICAgX2Fzcz1ubwogICAgICAgIGZpCiAgICBmaQpmaQppZiB0ZXN0ICIkX2FzcyIgPSB5ZXMg OyB0aGVuCiAgICBkZWZfYXNzPScjZGVmaW5lIENPTkZJR19BU1MgMScKZWxzZQogICAgZGVmX2Fz cz0nI3VuZGVmIENPTkZJR19BU1MnCmZpCmlmIHRlc3QgIiRhc3NfaW50ZXJuYWwiID0geWVzIDsg dGhlbgogICAgZGVmX2Fzc19pbnRlcm5hbD0nI2RlZmluZSBDT05GSUdfQVNTX0lOVEVSTkFMIDEn CmVsc2UKICAgIGRlZl9hc3NfaW50ZXJuYWw9JyN1bmRlZiBDT05GSUdfQVNTX0lOVEVSTkFMJwog ICAgYXNzX2ludGVybmFsPW5vCmZpCmVjaG9yZXMgIiRfYXNzIgoKCmVjaG9jaGVjayAiRU5DQSIK aWYgdGVzdCAiJF9lbmNhIiA9IGF1dG8gOyB0aGVuCiAgICBfZW5jYT1ubwogICAgc3RhdGVtZW50 X2NoZWNrIGVuY2EuaCAnZW5jYV9nZXRfbGFuZ3VhZ2VzKE5VTEwpJyAtbGVuY2EgJiYgX2VuY2E9 eWVzCmZpCiAgICBpZiB0ZXN0ICIkX2VuY2EiID0geWVzIDsgdGhlbgogICAgICAgIGRlZl9lbmNh PScjZGVmaW5lIENPTkZJR19FTkNBIDEnCiAgICAgICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xk ZmxhZ3MgLWxlbmNhIgogICAgZWxzZQogICAgICAgIGRlZl9lbmNhPScjdW5kZWYgQ09ORklHX0VO Q0EnCiAgICBmaQplY2hvcmVzICIkX2VuY2EiCgoKZWNob2NoZWNrICJ6bGliIgpfemxpYj1ubwpz dGF0ZW1lbnRfY2hlY2sgemxpYi5oICdpbmZsYXRlKDAsIFpfTk9fRkxVU0gpJyAtbHogJiYgX3ps aWI9eWVzCmlmIHRlc3QgIiRfemxpYiIgPSB5ZXMgOyB0aGVuCiAgZGVmX3psaWI9JyNkZWZpbmUg Q09ORklHX1pMSUIgMScKICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbHoiCiAgZXh0 cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzIC1EWkxJQl9DT05TVCIKICAjIG5lY2Vzc2FyeSBmb3Ig dmZfc2NyZWVuc2hvdAogIG1wbGF5ZXJfZW5jb2RlcnM9IiRtcGxheWVyX2VuY29kZXJzIFBOR19F TkNPREVSIgplbHNlCiAgZGVmX3psaWI9JyNkZWZpbmUgQ09ORklHX1pMSUIgMCcKICBsaWJhdmRl Y29kZXJzPSQoZmlsdGVyX291dF9jb21wb25lbnQgZGVjb2RlciAnRkxBU0hTViBGTEFTSFNWMiBQ TkcgWk1CViBaTElCIERYQSBFWFIgRzJNIFRTQ0MgWkVST0NPREVDJykKICBsaWJhdmVuY29kZXJz PSQoZmlsdGVyX291dF9jb21wb25lbnQgZW5jb2RlciAnRkxBU0hTViBGTEFTSFNWMiBQTkcgWk1C ViBaTElCJykKZmkKZWNob3JlcyAiJF96bGliIgoKCmVjaG9jaGVjayAiYnpsaWIiCmJ6bGliPW5v CmRlZl9iemxpYj0nI2RlZmluZSBDT05GSUdfQlpMSUIgMCcKc3RhdGVtZW50X2NoZWNrIGJ6bGli LmggJ0JaMl9iemxpYlZlcnNpb24oKScgLWxiejIgJiYgYnpsaWI9eWVzCmlmIHRlc3QgIiRiemxp YiIgPSB5ZXMgOyB0aGVuCiAgZGVmX2J6bGliPScjZGVmaW5lIENPTkZJR19CWkxJQiAxJwogIGV4 dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1sYnoyIgpmaQplY2hvcmVzICIkYnpsaWIiCgoK ZWNob2NoZWNrICJSVEMiCmlmIHRlc3QgIiRfcnRjIiA9IGF1dG8gOyB0aGVuCiAgY2F0ID4gJFRN UEMgPDwgRU9GCiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2lmZGVmIF9fbGludXhfXwojaW5jbHVk ZSA8bGludXgvcnRjLmg+CiNlbHNlCiNpbmNsdWRlIDxydGMuaD4KI2RlZmluZSBSVENfUElFX09O IFJUQ0lPX1BJRV9PTgojZW5kaWYKaW50IG1haW4odm9pZCkgeyByZXR1cm4gUlRDX1BJRV9PTjsg fQpFT0YKICBfcnRjPW5vCiAgY2NfY2hlY2sgJiYgX3J0Yz15ZXMKICBwcGMgJiYgX3J0Yz1ubwpm aQppZiB0ZXN0ICIkX3J0YyIgPSB5ZXMgOyB0aGVuCiAgZGVmX3J0Yz0nI2RlZmluZSBIQVZFX1JU QyAxJwplbHNlCiAgZGVmX3J0Yz0nI3VuZGVmIEhBVkVfUlRDJwpmaQplY2hvcmVzICIkX3J0YyIK CgplY2hvY2hlY2sgImxpYmx6bzIgc3VwcG9ydCIKaWYgdGVzdCAiJF9saWJsem8iID0gYXV0byA7 IHRoZW4KICBfbGlibHpvPW5vCiAgc3RhdGVtZW50X2NoZWNrIGx6by9sem8xeC5oICdsem9faW5p dCgpJyAtbGx6bzIgJiYgX2xpYmx6bz15ZXMKZmkKaWYgdGVzdCAiJF9saWJsem8iID0geWVzIDsg dGhlbgogIGRlZl9saWJsem89JyNkZWZpbmUgQ09ORklHX0xJQkxaTyAxJwogIGV4dHJhX2xkZmxh Z3M9IiRleHRyYV9sZGZsYWdzIC1sbHpvMiIKICBjb2RlY21vZHVsZXM9ImxpYmx6byAkY29kZWNt b2R1bGVzIgplbHNlCiAgZGVmX2xpYmx6bz0nI3VuZGVmIENPTkZJR19MSUJMWk8nCiAgbm9jb2Rl Y21vZHVsZXM9ImxpYmx6byAkbm9jb2RlY21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfbGlibHpvIgoK CmVjaG9jaGVjayAibWFkIHN1cHBvcnQiCmlmIHRlc3QgIiRfbWFkIiA9IGF1dG8gOyB0aGVuCiAg X21hZD1ubwogIHN0YXRlbWVudF9jaGVjayBtYWQuaCAnbWFkX3N5bnRoX2luaXQoMCknIC1sbWFk ICYmIF9tYWQ9eWVzCmZpCmlmIHRlc3QgIiRfbWFkIiA9IHllcyA7IHRoZW4KICBkZWZfbWFkPScj ZGVmaW5lIENPTkZJR19MSUJNQUQgMScKICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAt bG1hZCIKICBjb2RlY21vZHVsZXM9ImxpYm1hZCAkY29kZWNtb2R1bGVzIgplbHNlCiAgZGVmX21h ZD0nI3VuZGVmIENPTkZJR19MSUJNQUQnCiAgbm9jb2RlY21vZHVsZXM9ImxpYm1hZCAkbm9jb2Rl Y21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfbWFkIgoKZWNob2NoZWNrICJUd29sYW1lIgppZiB0ZXN0 ICIkX3R3b2xhbWUiID0gYXV0byA7IHRoZW4KICBfdHdvbGFtZT1ubwogIHN0YXRlbWVudF9jaGVj ayB0d29sYW1lLmggJ3R3b2xhbWVfaW5pdCgpJyAtbHR3b2xhbWUgJiYgX3R3b2xhbWU9eWVzCmZp CmlmIHRlc3QgIiRfdHdvbGFtZSIgPSB5ZXMgOyB0aGVuCiAgZGVmX3R3b2xhbWU9JyNkZWZpbmUg Q09ORklHX1RXT0xBTUUgMScKICBsaWJzX21lbmNvZGVyPSIkbGlic19tZW5jb2RlciAtbHR3b2xh bWUiCiAgY29kZWNtb2R1bGVzPSJ0d29sYW1lICRjb2RlY21vZHVsZXMiCmVsc2UKICBkZWZfdHdv bGFtZT0nI3VuZGVmIENPTkZJR19UV09MQU1FJwogIG5vY29kZWNtb2R1bGVzPSJ0d29sYW1lICRu b2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF90d29sYW1lIgoKZWNob2NoZWNrICJUb29sYW1l IgppZiB0ZXN0ICIkX3Rvb2xhbWUiID0gYXV0byA7IHRoZW4KICBfdG9vbGFtZT1ubwppZiB0ZXN0 ICIkX3R3b2xhbWUiID0geWVzIDsgdGhlbgogIHJlc19jb21tZW50PSJkaXNhYmxlZCBieSB0d29s YW1lIgplbHNlCiAgc3RhdGVtZW50X2NoZWNrIHRvb2xhbWUuaCAndG9vbGFtZV9pbml0KCknIC1s dG9vbGFtZSAmJiBfdG9vbGFtZT15ZXMKZmkKZmkKaWYgdGVzdCAiJF90b29sYW1lIiA9IHllcyA7 IHRoZW4KICBkZWZfdG9vbGFtZT0nI2RlZmluZSBDT05GSUdfVE9PTEFNRSAxJwogIGxpYnNfbWVu Y29kZXI9IiRsaWJzX21lbmNvZGVyIC1sdG9vbGFtZSIKICBjb2RlY21vZHVsZXM9InRvb2xhbWUg JGNvZGVjbW9kdWxlcyIKZWxzZQogIGRlZl90b29sYW1lPScjdW5kZWYgQ09ORklHX1RPT0xBTUUn CiAgbm9jb2RlY21vZHVsZXM9InRvb2xhbWUgJG5vY29kZWNtb2R1bGVzIgpmaQppZiB0ZXN0ICIk X3Rvb2xhbWVkaXIiIDsgdGhlbgogIHJlc19jb21tZW50PSJ1c2luZyAkX3Rvb2xhbWVkaXIiCmZp CmVjaG9yZXMgIiRfdG9vbGFtZSIKCmVjaG9jaGVjayAiT2dnVm9yYmlzIHN1cHBvcnQiCmlmIHRl c3QgIiRfdHJlbW9yIiA9IGF1dG87IHRoZW4KICBfdHJlbW9yPW5vCiAgc3RhdGVtZW50X2NoZWNr IHRyZW1vci9pdm9yYmlzY29kZWMuaCAndm9yYmlzX3N5bnRoZXNpcygwLCAwKScgLWxvZ2cgLWx2 b3JiaXNpZGVjICYmIF90cmVtb3I9eWVzICYmIF9saWJ2b3JiaXM9bm8KZmkKaWYgdGVzdCAiJF9s aWJ2b3JiaXMiID0gYXV0bzsgdGhlbgogIF9saWJ2b3JiaXM9bm8KICBmb3Igdm9yYmlzbGlicyBp biAnLWx2b3JiaXNlbmMgLWx2b3JiaXMgLWxvZ2cnICctbHZvcmJpcyAtbG9nZycgOyBkbwogICAg c3RhdGVtZW50X2NoZWNrIHZvcmJpcy92b3JiaXNlbmMuaCAndm9yYmlzX2VuY29kZV9jdGwoMCwg MCwgMCk7IG9nZ19zdHJlYW1fY2xlYXIoMCknICR2b3JiaXNsaWJzICYmIF9saWJ2b3JiaXM9eWVz ICYmIGJyZWFrCiAgZG9uZQpmaQppZiB0ZXN0ICIkX3RyZW1vciIgPSB5ZXMgOyB0aGVuCiAgX3Zv cmJpcz15ZXMKICBkZWZfdm9yYmlzPScjZGVmaW5lIENPTkZJR19PR0dWT1JCSVMgMScKICBkZWZf dHJlbW9yPScjZGVmaW5lIENPTkZJR19UUkVNT1IgMScKICBjb2RlY21vZHVsZXM9InRyZW1vciAk Y29kZWNtb2R1bGVzIgogIHJlc19jb21tZW50PSJpbnRlZ2VyIGxpYnZvcmJpcyIKICBleHRyYV9s ZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbG9nZyAtbHZvcmJpc2lkZWMiCmVsaWYgdGVzdCAiJF9s aWJ2b3JiaXMiID0geWVzIDsgdGhlbgogIF92b3JiaXM9eWVzCiAgZGVmX3ZvcmJpcz0nI2RlZmlu ZSBDT05GSUdfT0dHVk9SQklTIDEnCiAgY29kZWNtb2R1bGVzPSJsaWJ2b3JiaXMgJGNvZGVjbW9k dWxlcyIKICByZXNfY29tbWVudD0ibGlidm9yYmlzIgogIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9s ZGZsYWdzICR2b3JiaXNsaWJzIgogIGxpYmF2ZW5jb2RlcnM9IiRsaWJhdmVuY29kZXJzIExJQlZP UkJJU19FTkNPREVSIgplbHNlCiAgX3ZvcmJpcz1ubwogIG5vY29kZWNtb2R1bGVzPSJsaWJ2b3Ji aXMgJG5vY29kZWNtb2R1bGVzIgpmaQplY2hvcmVzICIkX3ZvcmJpcyIKCmVjaG9jaGVjayAibGli c3BlZXggKHZlcnNpb24gPj0gMS4xIHJlcXVpcmVkKSIKaWYgdGVzdCAiJF9zcGVleCIgPSBhdXRv IDsgdGhlbgogIF9zcGVleD1ubwogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3RkZGVm Lmg+CiNpbmNsdWRlIDxzcGVleC9zcGVleC5oPgppbnQgbWFpbih2b2lkKSB7IFNwZWV4Qml0cyBi aXRzOyB2b2lkICpkZWMgPSBOVUxMOyBzcGVleF9kZWNvZGVfaW50KGRlYywgJmJpdHMsIGRlYyk7 IHJldHVybiAwOyB9CkVPRgogIGNjX2NoZWNrIC1sc3BlZXggJiYgX3NwZWV4PXllcwpmaQppZiB0 ZXN0ICIkX3NwZWV4IiA9IHllcyA7IHRoZW4KICBkZWZfc3BlZXg9JyNkZWZpbmUgQ09ORklHX1NQ RUVYIDEnCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxzcGVleCIKICBjb2RlY21v ZHVsZXM9InNwZWV4ICRjb2RlY21vZHVsZXMiCmVsc2UKICBkZWZfc3BlZXg9JyN1bmRlZiBDT05G SUdfU1BFRVgnCiAgbm9jb2RlY21vZHVsZXM9InNwZWV4ICRub2NvZGVjbW9kdWxlcyIKZmkKZWNo b3JlcyAiJF9zcGVleCIKCmVjaG9jaGVjayAibGliZ3NtIgppZiB0ZXN0ICIkX2xpYmdzbSIgPSBh dXRvIDsgdGhlbgogIF9saWJnc209bm8KICBzdGF0ZW1lbnRfY2hlY2sgZ3NtL2dzbS5oICdnc21f Y3JlYXRlKCknIC1sZ3NtICYmIF9saWJnc209eWVzCmZpCmlmIHRlc3QgIiRfbGliZ3NtIiA9IHll cyA7IHRoZW4KICBkZWZfbGliZ3NtPScjZGVmaW5lIENPTkZJR19MSUJHU00gMScKICBleHRyYV9s ZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbGdzbSIKICBsaWJhdmVuY29kZXJzPSIkbGliYXZlbmNv ZGVycyBMSUJHU01fRU5DT0RFUiBMSUJHU01fTVNfRU5DT0RFUiIKICBsaWJhdmRlY29kZXJzPSIk bGliYXZkZWNvZGVycyBMSUJHU01fREVDT0RFUiBMSUJHU01fTVNfREVDT0RFUiIKICBjb2RlY21v ZHVsZXM9ImxpYmdzbSAkY29kZWNtb2R1bGVzIgplbHNlCiAgZGVmX2xpYmdzbT0nI2RlZmluZSBD T05GSUdfTElCR1NNIDAnCiAgbm9jb2RlY21vZHVsZXM9ImxpYmdzbSAkbm9jb2RlY21vZHVsZXMi CmZpCmVjaG9yZXMgIiRfbGliZ3NtIgoKZWNob2NoZWNrICJPZ2dUaGVvcmEgc3VwcG9ydCIKaWYg dGVzdCAiJF90aGVvcmEiID0gYXV0byA7IHRoZW4KICBfdGhlb3JhPW5vCiAgbGRfdGhlb3JhPSIt bHRoZW9yYWRlYyAtbG9nZyIKICBzdGF0ZW1lbnRfY2hlY2sgdGhlb3JhL3RoZW9yYWRlYy5oICd0 aF9pbmZvX2luaXQoTlVMTCknICRsZF90aGVvcmEgJiYKICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRy YV9sZGZsYWdzICRsZF90aGVvcmEiICYmIF90aGVvcmE9eWVzCiAgaWYgdGVzdCBfdGhlb3JhID0g bm87IHRoZW4KICAgIGxkX3RoZW9yYT0kKCRfcGtnX2NvbmZpZyAtLXNpbGVuY2UtZXJyb3JzIC0t bGlicyB0aGVvcmFkZWMpCiAgICBpbmNfdGhlb3JhPSQoJF9wa2dfY29uZmlnIC0tc2lsZW5jZS1l cnJvcnMgLS1jZmxhZ3MgdGhlb3JhZGVjKQogICAgc3RhdGVtZW50X2NoZWNrIHRoZW9yYS90aGVv cmFkZWMuaCAndGhfaW5mb19pbml0KE5VTEwpJyAkaW5jX3RoZW9yYSAkbGRfdGhlb3JhICYmCiAg ICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRsZF90aGVvcmEiICYmCiAgICAgIGV4 dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkaW5jX3RoZW9yYSIgJiYgX3RoZW9yYT15ZXMKICBm aQpmaQppZiB0ZXN0ICIkX3RoZW9yYSIgPSB5ZXMgOyB0aGVuCiAgZGVmX3RoZW9yYT0nI2RlZmlu ZSBDT05GSUdfT0dHVEhFT1JBIDEnCiAgY29kZWNtb2R1bGVzPSJsaWJ0aGVvcmEgJGNvZGVjbW9k dWxlcyIKICAjIHdoZW4gLS1lbmFibGUtdGhlb3JhIGlzIGZvcmNlZCwgd2UnZCBiZXR0ZXIgcHJv dmlkZSBhIHByb2JhYmx5IHNhbmUKICAjICRsZF90aGVvcmEgdGhhbiBub3RoaW5nCiAgdGVzdCAt eiAiJGxkX3RoZW9yYSIgJiYgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWx0aGVvcmFk ZWMgLWxvZ2ciCmVsc2UKICBkZWZfdGhlb3JhPScjdW5kZWYgQ09ORklHX09HR1RIRU9SQScKICBu b2NvZGVjbW9kdWxlcz0ibGlidGhlb3JhICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF90 aGVvcmEiCgojIEFueSB2ZXJzaW9uIG9mIGxpYm1wZzEyMyB0aGF0IGtub3dzIE1QRzEyM19SRVNZ TkNfTElNSVQgc2hhbGwgYmUgZmluZS4KIyBUaGF0IGlzLCAxLjIuMCBvbndhcmRzLiBSZWNvbW1l bmVkIGlzIDEuMTQgb253YXJkcywgdGhvdWdoLgplY2hvY2hlY2sgIm1wZzEyMyBzdXBwb3J0Igpk ZWZfbXBnMTIzPScjdW5kZWYgQ09ORklHX01QRzEyMycKaWYgdGVzdCAiJF9tcGcxMjMiID0gYXV0 bzsgdGhlbgogIF9tcGcxMjM9bm8KICBzdGF0ZW1lbnRfY2hlY2sgbXBnMTIzLmggJ21wZzEyM19w YXJhbShOVUxMLCBNUEcxMjNfUkVTWU5DX0xJTUlULCAtMSwgMC4pJyAtbG1wZzEyMyAmJgogICAg ICBfbXBnMTIzPXllcyAmJiBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbG1wZzEyMyIK ZmkKaWYgdGVzdCAiJF9tcGcxMjMiID0geWVzIDsgdGhlbgogIGRlZl9tcGcxMjM9JyNkZWZpbmUg Q09ORklHX01QRzEyMyAxJwogIGNvZGVjbW9kdWxlcz0ibXBnMTIzICRjb2RlY21vZHVsZXMiCmVs c2UKICBub2NvZGVjbW9kdWxlcz0ibXBnMTIzICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAi JF9tcGcxMjMiCgplY2hvY2hlY2sgImxpYmE1MiBzdXBwb3J0IgpkZWZfbGliYTUyPScjdW5kZWYg Q09ORklHX0xJQkE1MicKaWYgdGVzdCAiJF9saWJhNTIiID0gYXV0byA7IHRoZW4KICBfbGliYTUy PW5vCiAgc3RhdGVtZW50X2NoZWNrX2Jyb2tlbiBpbnR0eXBlcy5oIGE1MmRlYy9hNTIuaCAnYTUy X3N0YXRlX3QgKnRlc3RIYW5kOyB0ZXN0SGFuZD1hNTJfaW5pdCgwKScgLWxhNTIgJiYKICAgIF9s aWJhNTI9eWVzICYmIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1sYTUyIgpmaQppZiB0 ZXN0ICIkX2xpYmE1MiIgPSB5ZXMgOyB0aGVuCiAgZGVmX2xpYmE1Mj0nI2RlZmluZSBDT05GSUdf TElCQTUyIDEnCiAgY29kZWNtb2R1bGVzPSJsaWJhNTIgJGNvZGVjbW9kdWxlcyIKZWxzZQogIG5v Y29kZWNtb2R1bGVzPSJsaWJhNTIgJG5vY29kZWNtb2R1bGVzIgpmaQplY2hvcmVzICIkX2xpYmE1 MiIKCgplY2hvY2hlY2sgImxpYm1wZWcyIHN1cHBvcnQiCmlmIHRlc3QgIiRfbGlibXBlZzJfaW50 ZXJuYWwiID0gYXV0byA7IHRoZW4KICBpZiBhbHBoYSAmJiB0ZXN0IGNjX3ZlbmRvcj1nbnU7IHRo ZW4KICAgIGNhc2UgJGNjX3ZlcnNpb24gaW4KICAgICAgMip8My4wKnwzLjEqKSAjIGNhbm5vdCBj b21waWxlIE1WSSBpbnN0cnVjdGlvbnMKICAgICAgICBfbGlibXBlZzJfaW50ZXJuYWw9bm8KICAg ICAgICA7OwogICAgZXNhYwogIGVsc2UKICAgIF9saWJtcGVnMj15ZXMKICAgIF9saWJtcGVnMl9p bnRlcm5hbD15ZXMKICAgIHJlc19jb21tZW50PSJpbnRlcm5hbCIKICBmaQpmaQppZiB0ZXN0ICIk X2xpYm1wZWcyIiA9IGF1dG8gOyB0aGVuCiAgX2xpYm1wZWcyPW5vCiAgaGVhZGVyX2NoZWNrX2Jy b2tlbiBzdGRpbnQuaCBtcGVnMmRlYy9tcGVnMi5oIC1sbXBlZzIgJiYKICAgIF9saWJtcGVnMj15 ZXMgJiYgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxtcGVnMiIKZmkKCmRlZl9saWJt cGVnMj0nI3VuZGVmIENPTkZJR19MSUJNUEVHMicKZGVmX2xpYm1wZWcyX2ludGVybmFsPScjdW5k ZWYgQ09ORklHX0xJQk1QRUcyX0lOVEVSTkFMJwppZiB0ZXN0ICIkX2xpYm1wZWcyIiA9IHllcyA7 IHRoZW4KICBkZWZfbGlibXBlZzI9JyNkZWZpbmUgQ09ORklHX0xJQk1QRUcyIDEnCiAgaWYgdGVz dCAiJF9saWJtcGVnMl9pbnRlcm5hbCIgPSB5ZXMgOyB0aGVuCiAgICBkZWZfbGlibXBlZzJfaW50 ZXJuYWw9JyNkZWZpbmUgQ09ORklHX0xJQk1QRUcyX0lOVEVSTkFMIDEnCiAgICBjb2RlY21vZHVs ZXM9ImxpYm1wZWcyKGludGVybmFsKSAkY29kZWNtb2R1bGVzIgogIGVsc2UKICAgIGNvZGVjbW9k dWxlcz0ibGlibXBlZzIgJGNvZGVjbW9kdWxlcyIKICBmaQplbHNlCiAgbm9jb2RlY21vZHVsZXM9 ImxpYm1wZWcyICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9saWJtcGVnMiIKCgplY2hv Y2hlY2sgImxpYmRjYSBzdXBwb3J0IgppZiB0ZXN0ICIkX2xpYmRjYSIgPSBhdXRvIDsgdGhlbgog IF9saWJkY2E9bm8KICBmb3IgbGRfZGNhIGluIC1sZGNhIC1sZHRzIDsgZG8KICAgIHN0YXRlbWVu dF9jaGVja19icm9rZW4gc3RkaW50LmggZGNhLmggJ2RjYV9pbml0KDApJyAkbGRfZGNhICYmCiAg ICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRsZF9kY2EiICYmIF9saWJkY2E9eWVz ICYmIGJyZWFrCiAgZG9uZQpmaQppZiB0ZXN0ICIkX2xpYmRjYSIgPSB5ZXMgOyB0aGVuCiAgZGVm X2xpYmRjYT0nI2RlZmluZSBDT05GSUdfTElCRENBIDEnCiAgY29kZWNtb2R1bGVzPSJsaWJkY2Eg JGNvZGVjbW9kdWxlcyIKZWxzZQogIGRlZl9saWJkY2E9JyN1bmRlZiBDT05GSUdfTElCRENBJwog IG5vY29kZWNtb2R1bGVzPSJsaWJkY2EgJG5vY29kZWNtb2R1bGVzIgpmaQplY2hvcmVzICIkX2xp YmRjYSIKCmVjaG9jaGVjayAibGlibXBjZGVjIChtdXNlcGFjaywgdmVyc2lvbiA+PSAxLjIuMSBy ZXF1aXJlZCkiCmlmIHRlc3QgIiRfbXVzZXBhY2siID0geWVzIDsgdGhlbgogIF9tdXNlcGFjaz1u bwogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxtcGNk ZWMvbXBjZGVjLmg+CmludCBtYWluKHZvaWQpIHsKICBtcGNfc3RyZWFtaW5mbyBpbmZvOwogIG1w Y19kZWNvZGVyIGRlY29kZXI7CiAgbXBjX2RlY29kZXJfc2V0X3N0cmVhbWluZm8oJmRlY29kZXIs ICZpbmZvKTsKICBtcGNfZGVjb2Rlcl9kZWNvZGVfZnJhbWUoJmRlY29kZXIsIE5VTEwsIDAsIE5V TEwpOwogIHJldHVybiAwOwp9CkVPRgogIGNjX2NoZWNrIC1sbXBjZGVjICYmIF9tdXNlcGFjaz15 ZXMKZmkKaWYgdGVzdCAiJF9tdXNlcGFjayIgPSB5ZXMgOyB0aGVuCiAgZGVmX211c2VwYWNrPScj ZGVmaW5lIENPTkZJR19NVVNFUEFDSyAxJwogIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdz IC1sbXBjZGVjIgogIGNvZGVjbW9kdWxlcz0ibXVzZXBhY2sgJGNvZGVjbW9kdWxlcyIKZWxzZQog IGRlZl9tdXNlcGFjaz0nI3VuZGVmIENPTkZJR19NVVNFUEFDSycKICBub2NvZGVjbW9kdWxlcz0i bXVzZXBhY2sgJG5vY29kZWNtb2R1bGVzIgpmaQplY2hvcmVzICIkX211c2VwYWNrIgoKCmVjaG9j aGVjayAiRkFBQyBzdXBwb3J0IgppZiB0ZXN0ICIkX2ZhYWMiID0gYXV0byAmJiB0ZXN0ICIkX21l bmNvZGVyIiA9IHllcyA7IHRoZW4KICBjYXQgPiAkVE1QQyA8PEVPRgojaW5jbHVkZSA8aW50dHlw ZXMuaD4KI2luY2x1ZGUgPGZhYWMuaD4KaW50IG1haW4odm9pZCkgeyB1bnNpZ25lZCBsb25nIHgs IHk7IGZhYWNFbmNPcGVuKDQ4MDAwLCAyLCAmeCwgJnkpOyByZXR1cm4gMDsgfQpFT0YKICBfZmFh Yz1ubwogIGZvciBsZF9mYWFjIGluICItbGZhYWMiICItbGZhYWMgLWxtcDR2MiAtbHN0ZGMrKyIg OyBkbwogICAgY2NfY2hlY2sgJGxkX2ZhYWMgJiYgbGlic19tZW5jb2Rlcj0iJGxpYnNfbWVuY29k ZXIgJGxkX2ZhYWMiICYmIF9mYWFjPXllcyAmJiBicmVhawogIGRvbmUKZmkKaWYgdGVzdCAiJF9m YWFjIiA9IHllcyA7IHRoZW4KICBkZWZfZmFhYz0iI2RlZmluZSBDT05GSUdfRkFBQyAxIgogIHRl c3QgIiRfZmFhY19sYXZjIiA9IGF1dG8gJiYgX2ZhYWNfbGF2Yz15ZXMKICBpZiB0ZXN0ICIkX2Zh YWNfbGF2YyIgPSB5ZXMgOyB0aGVuCiAgICBkZWZfZmFhY19sYXZjPSIjZGVmaW5lIENPTkZJR19M SUJGQUFDIDEiCiAgICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgJGxkX2ZhYWMiCiAgICBs aWJhdmVuY29kZXJzPSIkbGliYXZlbmNvZGVycyBMSUJGQUFDX0VOQ09ERVIiCiAgZmkKICBjb2Rl Y21vZHVsZXM9ImZhYWMgJGNvZGVjbW9kdWxlcyIKZWxzZQogIF9mYWFjX2xhdmM9bm8KICBkZWZf ZmFhYz0iI3VuZGVmIENPTkZJR19GQUFDIgogIGRlZl9mYWFjX2xhdmM9IiNkZWZpbmUgQ09ORklH X0xJQkZBQUMgMCIKICBub2NvZGVjbW9kdWxlcz0iZmFhYyAkbm9jb2RlY21vZHVsZXMiCmZpCnJl c19jb21tZW50PSJpbiBGRm1wZWc6ICRfZmFhY19sYXZjIgplY2hvcmVzICIkX2ZhYWMiCgoKZWNo b2NoZWNrICJGQUFEMiBzdXBwb3J0IgppZiB0ZXN0ICIkX2ZhYWQiID0gYXV0byA7IHRoZW4KICBf ZmFhZD1ubwogIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8ZmFhZC5oPgojaWZuZGVmIEZB QURfTUlOX1NUUkVBTVNJWkUKI2Vycm9yIFRvbyBvbGQgdmVyc2lvbgojZW5kaWYKaW50IG1haW4o dm9pZCkgeyBmYWFjRGVjSGFuZGxlIHRlc3RoYW5kOyBmYWFjRGVjRnJhbWVJbmZvIHRlc3RpbmZv OwogICAgdGVzdGhhbmQgPSBmYWFjRGVjT3BlbigpOyBmYWFjRGVjSW5pdCgwLCAwLCAwLCAwLCAw KTsgcmV0dXJuIDA7IH0KRU9GCiAgY2NfY2hlY2sgLWxmYWFkICYmIF9mYWFkPXllcwpmaQoKZGVm X2ZhYWQ9JyN1bmRlZiBDT05GSUdfRkFBRCcKaWYgdGVzdCAiJF9mYWFkIiA9IHllcyA7IHRoZW4K ICBkZWZfZmFhZD0nI2RlZmluZSBDT05GSUdfRkFBRCAxJwogIGV4dHJhX2xkZmxhZ3M9IiRleHRy YV9sZGZsYWdzIC1sZmFhZCIKICBjb2RlY21vZHVsZXM9ImZhYWQyICRjb2RlY21vZHVsZXMiCmVs c2UKICBub2NvZGVjbW9kdWxlcz0iZmFhZDIgJG5vY29kZWNtb2R1bGVzIgpmaQplY2hvcmVzICIk X2ZhYWQiCgoKZWNob2NoZWNrICJsaWJpbGJjIHN1cHBvcnQiCmlmIHRlc3QgIiRfbGliaWxiYyIg PSBhdXRvOyB0aGVuCiAgX2xpYmlsYmM9bm8KICBzdGF0ZW1lbnRfY2hlY2sgaWxiYy5oICdXZWJS dGNJbGJjZml4X0luaXREZWNvZGUoMCwgMCwgMCk7JyAtbGlsYmMgJiYgX2xpYmlsYmM9eWVzCmZp CmVjaG9yZXMgIiRfbGliaWxiYyIKaWYgdGVzdCAiJF9saWJpbGJjIiA9IHllcyA7IHRoZW4KICBk ZWZfbGliaWxiYz0nI2RlZmluZSBDT05GSUdfTElCSUxCQyAxJwogIGV4dHJhX2xkZmxhZ3M9IiRl eHRyYV9sZGZsYWdzIC1saWxiYyIKICBsaWJhdmRlY29kZXJzPSIkbGliYXZkZWNvZGVycyBMSUJJ TEJDX0RFQ09ERVIiCiAgY29kZWNtb2R1bGVzPSJpbGJjICRjb2RlY21vZHVsZXMiCmVsc2UKICBk ZWZfbGliaWxiYz0nI2RlZmluZSBDT05GSUdfSUxCQyAwJwogIG5vY29kZWNtb2R1bGVzPSJpbGJj ICRub2NvZGVjbW9kdWxlcyIKZmkKCgplY2hvY2hlY2sgImxpYm9wdXMgZGVjb2Rpbmcgc3VwcG9y dCIKaWYgdGVzdCAiJF9saWJvcHVzIiA9IGF1dG8gOyB0aGVuCiAgX2xpYm9wdXM9bm8KICBpZiAk X3BrZ19jb25maWcgLS1leGlzdHMgJ29wdXMnIDsgdGhlbgogICAgc3RhdGVtZW50X2NoZWNrIG9w dXNfbXVsdGlzdHJlYW0uaCAnb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2NyZWF0ZSgwLDAsMCww LDAsMCknICQoJF9wa2dfY29uZmlnIC0tbGlicyAtLWNmbGFncyBvcHVzKSAmJgogICAgICBfbGli b3B1cz15ZXMKICBmaQpmaQppZiB0ZXN0ICIkX2xpYm9wdXMiID0geWVzIDsgdGhlbgogIGRlZl9s aWJvcHVzPScjZGVmaW5lIENPTkZJR19MSUJPUFVTIDEnCiAgbGliYXZkZWNvZGVycz0iJGxpYmF2 ZGVjb2RlcnMgTElCT1BVU19ERUNPREVSIgogIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAk KCRfcGtnX2NvbmZpZyAtLWNmbGFncyBvcHVzKSIKICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRm bGFncyAkKCRfcGtnX2NvbmZpZyAtLWxpYnMgb3B1cykiCiAgY29kZWNtb2R1bGVzPSJsaWJvcHVz ICRjb2RlY21vZHVsZXMiCmVsc2UKICBub2NvZGVjbW9kdWxlcz0ibGlib3B1cyAkbm9jb2RlY21v ZHVsZXMiCiAgZGVmX2xpYm9wdXM9JyN1bmRlZiBDT05GSUdfTElCT1BVUycKZmkKZWNob3JlcyAi JF9saWJvcHVzIgoKCmVjaG9jaGVjayAiTEFEU1BBIHBsdWdpbiBzdXBwb3J0IgppZiB0ZXN0ICIk X2xhZHNwYSIgPSBhdXRvIDsgdGhlbgogIF9sYWRzcGE9bm8KICBzdGF0ZW1lbnRfY2hlY2sgbGFk c3BhLmggJ0xBRFNQQV9EZXNjcmlwdG9yIGxkID0gezB9JyAmJiBfbGFkc3BhPXllcwpmaQppZiB0 ZXN0ICIkX2xhZHNwYSIgPSB5ZXM7IHRoZW4KICBkZWZfbGFkc3BhPSIjZGVmaW5lIENPTkZJR19M QURTUEEgMSIKZWxzZQogIGRlZl9sYWRzcGE9IiN1bmRlZiBDT05GSUdfTEFEU1BBIgpmaQplY2hv cmVzICIkX2xhZHNwYSIKCgplY2hvY2hlY2sgImxpYmJzMmIgYXVkaW8gZmlsdGVyIHN1cHBvcnQi CmlmIHRlc3QgIiRfbGliYnMyYiIgPSBhdXRvIDsgdGhlbgogIGNhdCA+ICRUTVBDIDw8RU9GCiNp bmNsdWRlIDxiczJiLmg+CiNpZiBCUzJCX1ZFUlNJT05fTUFKT1IgPCAzCiNlcnJvciBQbGVhc2Ug dXNlIGxpYmJzMmIgPj0gMy4wLjAsIG9sZGVyIHZlcnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkLgoj ZW5kaWYKaW50IG1haW4odm9pZCkgewogICAgdF9iczJiZHAgZmlsdGVyOwogICAgZmlsdGVyPWJz MmJfb3BlbigpOwogICAgYnMyYl9jbG9zZShmaWx0ZXIpOwogICAgcmV0dXJuIDA7Cn0KRU9GCiAg X2xpYmJzMmI9bm8KICBpZiAkX3BrZ19jb25maWcgLS1leGlzdHMgbGliYnMyYiA7IHRoZW4KICAg IGluY190bXA9JCgkX3BrZ19jb25maWcgLS1jZmxhZ3MgbGliYnMyYikKICAgIGxkX3RtcD0kKCRf cGtnX2NvbmZpZyAtLWxpYnMgbGliYnMyYikKICAgIGNjX2NoZWNrICRpbmNfdG1wICRsZF90bXAg JiYgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJGxkX3RtcCIgJiYKICAgICAgZXh0cmFf Y2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICRpbmNfdG1wIiAmJiBfbGliYnMyYj15ZXMKICBlbHNlCiAg ICBmb3IgaW5jX3RtcCBpbiAiIiAtSS91c3IvaW5jbHVkZS9iczJiIC1JL3Vzci9sb2NhbC9pbmNs dWRlIFwKICAgICAgICAtSS91c3IvbG9jYWwvaW5jbHVkZS9iczJiIDsgZG8KICAgICAgaWYgY2Nf Y2hlY2sgJGluY190bXAgLWxiczJiIDsgdGhlbgogICAgICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRy YV9sZGZsYWdzIC1sYnMyYiIKICAgICAgICBleHRyYV9jZmxhZ3M9IiRleHRyYV9jZmxhZ3MgJGlu Y190bXAiCiAgICAgICAgX2xpYmJzMmI9eWVzCiAgICAgICAgYnJlYWsKICAgICAgZmkKICAgIGRv bmUKICBmaQpmaQpkZWZfbGliYnMyYj0iI3VuZGVmIENPTkZJR19MSUJCUzJCIgp0ZXN0ICIkX2xp YmJzMmIiID0geWVzICYmIGRlZl9saWJiczJiPSIjZGVmaW5lIENPTkZJR19MSUJCUzJCIDEiCmVj aG9yZXMgIiRfbGliYnMyYiIKCgppZiB0ZXN0IC16ICIkX2NvZGVjc2RpciIgOyB0aGVuCiAgZm9y IGRpciBpbiAiJF9saWJkaXIvY29kZWNzIiAiJF9saWJkaXIvd2luMzIiIC91c3IvbG9jYWwvbGli L2NvZGVjcyBcCiAgICAgICAgICAgICAvdXNyL2xpYi9jb2RlY3MgL3Vzci9sb2NhbC9saWIvd2lu MzIgL3Vzci9saWIvd2luMzIgOyBkbwogICAgaWYgdGVzdCAtZCAiJGRpciIgOyB0aGVuCiAgICAg IF9jb2RlY3NkaXI9IiRkaXIiCiAgICAgIGJyZWFrOwogICAgZmk7CiAgZG9uZQpmaQojIEZhbGwg YmFjayBvbiBkZWZhdWx0IGRpcmVjdG9yeS4KaWYgdGVzdCAteiAiJF9jb2RlY3NkaXIiIDsgdGhl bgogIF9jb2RlY3NkaXI9IiRfbGliZGlyL2NvZGVjcyIKICBtaW5ndzMyIHx8IG9zMiAmJiBfY29k ZWNzZGlyPSJjb2RlY3MiCmZpCgoKZWNob2NoZWNrICJXaW4zMiBjb2RlY3MiCmlmIHRlc3QgIiRf d2luMzJkbGwiID0gYXV0byA7IHRoZW4KICBfd2luMzJkbGw9bm8KICBpZiB4ODZfMzIgJiYgISBx bng7IHRoZW4KICAgIF93aW4zMmRsbD15ZXMKICBmaQpmaQpfd2luMzJfZW11bGF0aW9uPW5vCmlm IHRlc3QgIiRfd2luMzJkbGwiID0geWVzIDsgdGhlbgogIGRlZl93aW4zMmRsbD0nI2RlZmluZSBD T05GSUdfV0lOMzJETEwgMScKICBpZiAhIHdpbjMyIDsgdGhlbgogICAgZGVmX3dpbjMyX2xvYWRl cj0nI2RlZmluZSBXSU4zMl9MT0FERVIgMScKICAgIF93aW4zMl9lbXVsYXRpb249eWVzCiAgZWxz ZQogICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxhZHZhcGkzMiAtbG9sZTMyIgog ICAgcmVzX2NvbW1lbnQ9InVzaW5nIG5hdGl2ZSB3aW5kb3dzIgogIGZpCiAgY29kZWNtb2R1bGVz PSJ3aW4zMiAkY29kZWNtb2R1bGVzIgplbHNlCiAgZGVmX3dpbjMyZGxsPScjdW5kZWYgQ09ORklH X1dJTjMyRExMJwogIGRlZl93aW4zMl9sb2FkZXI9JyN1bmRlZiBXSU4zMl9MT0FERVInCiAgbm9j b2RlY21vZHVsZXM9IndpbjMyICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF93aW4zMmRs bCIKCgplY2hvY2hlY2sgIlhBbmltIGNvZGVjcyIKaWYgdGVzdCAiJF94YW5pbSIgPSBhdXRvIDsg dGhlbgogIF94YW5pbT1ubwogIHJlc19jb21tZW50PSJkeW5hbWljIGxvYWRlciBzdXBwb3J0IG5l ZWRlZCIKICBpZiB0ZXN0ICIkX2RsIiA9IHllcyA7IHRoZW4KICAgIF94YW5pbT15ZXMKICBmaQpm aQppZiB0ZXN0ICIkX3hhbmltIiA9IHllcyA7IHRoZW4KICBkZWZfeGFuaW09JyNkZWZpbmUgQ09O RklHX1hBTklNIDEnCiAgY29kZWNtb2R1bGVzPSJ4YW5pbSAkY29kZWNtb2R1bGVzIgplbHNlCiAg ZGVmX3hhbmltPScjdW5kZWYgQ09ORklHX1hBTklNJwogIG5vY29kZWNtb2R1bGVzPSJ4YW5pbSAk bm9jb2RlY21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfeGFuaW0iCgoKZWNob2NoZWNrICJSZWFsUGxh eWVyIGNvZGVjcyIKaWYgdGVzdCAiJF9yZWFsIiA9IGF1dG8gOyB0aGVuCiAgX3JlYWw9bm8KICBy ZXNfY29tbWVudD0iZHluYW1pYyBsb2FkZXIgc3VwcG9ydCBuZWVkZWQiCiAgaWYgdGVzdCAiJF9k bCIgPSB5ZXMgfHwgdGVzdCAiJF93aW4zMmRsbCIgPSB5ZXMgJiYKICAgICAobGludXggfHwgZnJl ZWJzZCB8fCBuZXRic2QgfHwgb3BlbmJzZCB8fCBkcmFnb25mbHkgfHwgZGFyd2luIHx8IHdpbjMy IHx8IG9zMikgOyB0aGVuCiAgICBfcmVhbD15ZXMKICBmaQpmaQppZiB0ZXN0ICIkX3JlYWwiID0g eWVzIDsgdGhlbgogIGRlZl9yZWFsPScjZGVmaW5lIENPTkZJR19SRUFMQ09ERUNTIDEnCiAgY29k ZWNtb2R1bGVzPSJyZWFsICRjb2RlY21vZHVsZXMiCmVsc2UKICBkZWZfcmVhbD0nI3VuZGVmIENP TkZJR19SRUFMQ09ERUNTJwogIG5vY29kZWNtb2R1bGVzPSJyZWFsICRub2NvZGVjbW9kdWxlcyIK ZmkKZWNob3JlcyAiJF9yZWFsIgoKCmVjaG9jaGVjayAiUXVpY2tUaW1lIGNvZGVjcyIKX3F0eF9l bXVsYXRpb249bm8KZGVmX3F0eF93aW4zMj0nI3VuZGVmIENPTkZJR19RVFhfQ09ERUNTX1dJTjMy JwppZiB0ZXN0ICIkX3F0eCIgPSBhdXRvIDsgdGhlbgogIHRlc3QgIiRfd2luMzJkbGwiID0geWVz IHx8IHRlc3QgIiRxdWlja3RpbWUiID0geWVzICYmIF9xdHg9eWVzCmZpCmlmIHRlc3QgIiRfcXR4 IiA9IHllcyA7IHRoZW4KICAgIGRlZl9xdHg9JyNkZWZpbmUgQ09ORklHX1FUWF9DT0RFQ1MgMScK ICAgIHdpbjMyICYmIF9xdHhfY29kZWNzX3dpbjMyPXllcyAmJiBkZWZfcXR4X3dpbjMyPScjZGVm aW5lIENPTkZJR19RVFhfQ09ERUNTX1dJTjMyIDEnCiAgICBjb2RlY21vZHVsZXM9InF0eCAkY29k ZWNtb2R1bGVzIgogICAgZGFyd2luIHx8IHdpbjMyIHx8IF9xdHhfZW11bGF0aW9uPXllcwplbHNl CiAgICBkZWZfcXR4PScjdW5kZWYgQ09ORklHX1FUWF9DT0RFQ1MnCiAgICBub2NvZGVjbW9kdWxl cz0icXR4ICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9xdHgiCgplY2hvY2hlY2sgIk5l bWVzaSBTdHJlYW1pbmcgTWVkaWEgbGlicmFyaWVzIgppZiB0ZXN0ICIkX25lbWVzaSIgPSBhdXRv ICAmJiB0ZXN0ICIkbmV0d29ya2luZyIgPSB5ZXMgOyB0aGVuCiAgICBfbmVtZXNpPW5vCiAgICBp ZiAkX3BrZ19jb25maWcgbGlibmVtZXNpIC0tYXRsZWFzdC12ZXJzaW9uPTAuNi4zIDsgdGhlbgog ICAgICAgIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkKCRfcGtnX2NvbmZpZyAtLWNmbGFn cyBsaWJuZW1lc2kpIgogICAgICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICQoJF9w a2dfY29uZmlnIC0tbGlicyBsaWJuZW1lc2kpIgogICAgICAgIF9uZW1lc2k9eWVzCiAgICBmaQpm aQppZiB0ZXN0ICIkX25lbWVzaSIgPSB5ZXM7IHRoZW4KICAgIF9uYXRpdmVfcnRzcD1ubwogICAg ZGVmX25lbWVzaT0nI2RlZmluZSBDT05GSUdfTElCTkVNRVNJIDEnCiAgICBpbnB1dG1vZHVsZXM9 Im5lbWVzaSAkaW5wdXRtb2R1bGVzIgplbHNlCiAgICBfbmF0aXZlX3J0c3A9IiRuZXR3b3JraW5n IgogICAgX25lbWVzaT1ubwogICAgZGVmX25lbWVzaT0nI3VuZGVmIENPTkZJR19MSUJORU1FU0kn CiAgICBub2lucHV0bW9kdWxlcz0ibmVtZXNpICRub2lucHV0bW9kdWxlcyIKZmkKZWNob3JlcyAi JF9uZW1lc2kiCgplY2hvY2hlY2sgIkxJVkU1NTUgU3RyZWFtaW5nIE1lZGlhIGxpYnJhcmllcyIK aWYgdGVzdCAiJF9saXZlIiA9IGF1dG8gICYmIHRlc3QgIiRuZXR3b3JraW5nIiA9IHllcyA7IHRo ZW4KICBjYXQgPiAkVE1QQ1BQIDw8IEVPRgojZGVmaW5lIFJUU1BDTElFTlRfU1lOQ0hST05PVVNf SU5URVJGQUNFIDEKI2luY2x1ZGUgPGxpdmVNZWRpYS5oaD4KI2lmIChMSVZFTUVESUFfTElCUkFS WV9WRVJTSU9OX0lOVCA8IDExNDEyNTc2MDApCiNlcnJvciBQbGVhc2UgdXBncmFkZSB0byB2ZXJz aW9uIDIwMDYuMDMuMDMgb3IgbGF0ZXIgb2YgdGhlICJMSVZFNTU1IFN0cmVhbWluZyBNZWRpYSIg bGlicmFyaWVzIC0gYXZhaWxhYmxlIGZyb20gPHd3dy5saXZlNTU1LmNvbS9saXZlTWVkaWEvPgoj ZW5kaWYKI2luY2x1ZGUgIkJhc2ljVXNhZ2VFbnZpcm9ubWVudC5oaCIKaW50IG1haW4odm9pZCkg eyBSVFNQQ2xpZW50OjpjcmVhdGVOZXcoKkJhc2ljVXNhZ2VFbnZpcm9ubWVudDo6Y3JlYXRlTmV3 KCpCYXNpY1Rhc2tTY2hlZHVsZXI6OmNyZWF0ZU5ldygpKSwgMCwgIiIsIDApOyByZXR1cm4gMDsg fQpFT0YKCiAgX2xpdmU9bm8KICBmb3IgSSBpbiAkZXh0cmFfY2ZsYWdzICItSSRfbGliZGlyL2xp dmUiICItSS91c3IvbGliL2xpdmUiICItSS91c3IvbGliNjQvbGl2ZSIgIi1JL3Vzci9sb2NhbC9s aXZlIiAiLUkvdXNyL2xvY2FsL2xpYi9saXZlIiA7IGRvCiAgICBfbGl2ZWxpYmRpcj0kKGVjaG8g JEl8IHNlZCBzLy1JLy8pCiAgICBpbmNfdG1wPSItSSRfbGl2ZWxpYmRpci9saXZlTWVkaWEvaW5j bHVkZSBcCiAgICAgICAgICAgICAtSSRfbGl2ZWxpYmRpci9Vc2FnZUVudmlyb25tZW50L2luY2x1 ZGUgXAogICAgICAgICAgICAgLUkkX2xpdmVsaWJkaXIvQmFzaWNVc2FnZUVudmlyb25tZW50L2lu Y2x1ZGUgXAogICAgICAgICAgICAgLUkkX2xpdmVsaWJkaXIvZ3JvdXBzb2NrL2luY2x1ZGUiCiAg ICBsZF90bXA9IiRfbGl2ZWxpYmRpci9saXZlTWVkaWEvbGlibGl2ZU1lZGlhLmEgXAogICAgICAg ICAgICAkX2xpdmVsaWJkaXIvQmFzaWNVc2FnZUVudmlyb25tZW50L2xpYkJhc2ljVXNhZ2VFbnZp cm9ubWVudC5hIFwKICAgICAgICAgICAgJF9saXZlbGliZGlyL1VzYWdlRW52aXJvbm1lbnQvbGli VXNhZ2VFbnZpcm9ubWVudC5hIFwKICAgICAgICAgICAgJF9saXZlbGliZGlyL2dyb3Vwc29jay9s aWJncm91cHNvY2suYSBcCiAgICAgICAgICAgIC1sc3RkYysrICRsZF9zb2NrIgogICAgdGVzdCAt ZSAiJF9saXZlbGliZGlyL0Jhc2ljVXNhZ2VFbnZpcm9ubWVudC9saWJCYXNpY1VzYWdlRW52aXJv bm1lbnQuYSIgJiYKICAgICAgICBjeHhfY2hlY2sgJGluY190bXAgJGxkX3RtcCAmJgogICAgICBl eHRyYV9sZGZsYWdzPSIkbGRfdG1wICRleHRyYV9sZGZsYWdzIiAmJgogICAgICBleHRyYV9jeHhm bGFncz0iJGluY190bXAiICYmCiAgICAgIF9saXZlPXllcyAmJiBicmVhawogIGRvbmUKICBpZiB0 ZXN0ICIkX2xpdmUiICE9IHllcyA7IHRoZW4KICAgICAgZm9yIGxkX3RtcCBpbiAiLWxsaXZlTWVk aWEgLWxncm91cHNvY2sgLWxCYXNpY1VzYWdlRW52aXJvbm1lbnQgLWxVc2FnZUVudmlyb25tZW50 IC1sc3RkYysrIiAiLWxsaXZlTWVkaWFfcGljIC1sZ3JvdXBzb2NrX3BpYyAtbEJhc2ljVXNhZ2VF bnZpcm9ubWVudF9waWMgLWxVc2FnZUVudmlyb25tZW50X3BpYyAtbHN0ZGMrKyIgOyBkbwogICAg ICAgICAgaW5jX3RtcD0iLUkvdXNyL2luY2x1ZGUvbGl2ZU1lZGlhIC1JL3Vzci9pbmNsdWRlL1Vz YWdlRW52aXJvbm1lbnQgLUkvdXNyL2luY2x1ZGUvQmFzaWNVc2FnZUVudmlyb25tZW50IC1JL3Vz ci9pbmNsdWRlL2dyb3Vwc29jayIKICAgICAgICAgIGN4eF9jaGVjayAkaW5jX3RtcCAkbGRfdG1w ICYmIF9saXZlX2Rpc3Q9eWVzICYmIGJyZWFrCiAgICAgIGRvbmUKICBmaQpmaQppZiB0ZXN0ICIk X2xpdmUiID0geWVzICYmIHRlc3QgIiRuZXR3b3JraW5nIiA9IHllczsgdGhlbgogIHRlc3QgJF9s aXZlbGliZGlyICYmIHJlc19jb21tZW50PSJ1c2luZyAkX2xpdmVsaWJkaXIiCiAgZGVmX2xpdmU9 JyNkZWZpbmUgQ09ORklHX0xJVkU1NTUgMScKIGlucHV0bW9kdWxlcz0ibGl2ZTU1NSAkaW5wdXRt b2R1bGVzIgplbGlmIHRlc3QgIiRfbGl2ZV9kaXN0IiA9IHllcyAmJiB0ZXN0ICIkbmV0d29ya2lu ZyIgPSB5ZXM7IHRoZW4KICByZXNfY29tbWVudD0idXNpbmcgZGlzdHJpYnV0aW9uIHZlcnNpb24i CiAgX2xpdmU9InllcyIKICBkZWZfbGl2ZT0nI2RlZmluZSBDT05GSUdfTElWRTU1NSAxJwogIGV4 dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRsZF90bXAiCiAgZXh0cmFfY3h4ZmxhZ3M9IiRp bmNfdG1wIgogaW5wdXRtb2R1bGVzPSJsaXZlNTU1ICRpbnB1dG1vZHVsZXMiCmVsc2UKICBfbGl2 ZT1ubwogIGRlZl9saXZlPScjdW5kZWYgQ09ORklHX0xJVkU1NTUnCiAgbm9pbnB1dG1vZHVsZXM9 ImxpdmU1NTUgJG5vaW5wdXRtb2R1bGVzIgpmaQplY2hvcmVzICIkX2xpdmUiCgplY2hvY2hlY2sg IlJUTVBEdW1wIFN0cmVhbWluZyBNZWRpYSBsaWJyYXJ5IgppZiB0ZXN0ICIkX2xpYnJ0bXAiID0g YXV0byAgJiYgdGVzdCAiJG5ldHdvcmtpbmciID0geWVzIDsgdGhlbgogIHN0YXRlbWVudF9jaGVj ayBsaWJydG1wL3J0bXAuaCAnUlRNUF9Tb2NrZXQoTlVMTCknIC1scnRtcCAmJgogICAgX2xpYnJ0 bXA9eWVzICYmIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1scnRtcCIKICBpZiB0ZXN0 ICIkX2xpYnJ0bXAiICE9IHllcyAmJiAkX3BrZ19jb25maWcgLS1leGlzdHMgbGlicnRtcCA7IHRo ZW4KICAgIGluY190bXA9JCgkX3BrZ19jb25maWcgLS1jZmxhZ3MgbGlicnRtcCkKICAgIGxkX3Rt cD0kKCRfcGtnX2NvbmZpZyAtLWxpYnMgbGlicnRtcCkKICAgIGNjX2NoZWNrICRpbmNfdG1wICRs ZF90bXAgJiYgX2xpYnJ0bXA9eWVzICYmCiAgICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZs YWdzICRsZF90bXAiICYmCiAgICAgIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkaW5jX3Rt cCIKICBmaQpmaQppZiB0ZXN0ICIkX2xpYnJ0bXAiID0geWVzICYmIHRlc3QgIiRuZXR3b3JraW5n IiA9IHllczsgdGhlbgogIG5vbGlicnRtcD1ubwogIGRlZl9saWJydG1wPScjZGVmaW5lIENPTkZJ R19MSUJSVE1QIDEnCiAgaW5wdXRtb2R1bGVzPSJsaWJydG1wICRpbnB1dG1vZHVsZXMiCmVsc2UK ICBub2xpYnJ0bXA9eWVzCiAgX2xpYnJ0bXA9bm8KICBkZWZfbGlicnRtcD0nI2RlZmluZSBDT05G SUdfTElCUlRNUCAwJwogIG5vaW5wdXRtb2R1bGVzPSJsaWJydG1wICRub2lucHV0bW9kdWxlcyIK ICBsaWJhdnByb3RvY29scz0kKGZpbHRlcl9vdXRfY29tcG9uZW50IHByb3RvY29sICdMSUJSVE1Q IExJQlJUTVBFIExJQlJUTVBTIExJQlJUTVBUIExJQlJUTVBURScpCmZpCmVjaG9yZXMgIiRfbGli cnRtcCIKCgplY2hvY2hlY2sgIkZGbXBlZyIKZmZtcGVnPW5vCmlmIHRlc3QgIiRmZm1wZWdfYSIg PSBhdXRvIDsgdGhlbgogIGZmbXBlZ19hPW5vCiAgdGVzdCAtZCBmZm1wZWcvbGliYXZjb2RlYyAm JiBmZm1wZWdfYT15ZXMgJiYgZmZtcGVnX3NvPW5vICYmIGZmbXBlZz15ZXMKZmkKaWYgdGVzdCAi JGZmbXBlZ19zbyIgPSBhdXRvIDsgdGhlbgogIGZmbXBlZ19zbz1ubwogIGlmICRfcGtnX2NvbmZp ZyAtLWV4aXN0cyBsaWJhdnV0aWwgOyB0aGVuCiAgICBpbmNfZmZtcGVnPSQoJF9wa2dfY29uZmln IC0tY2ZsYWdzIGxpYnN3c2NhbGUgbGliYXZmb3JtYXQgbGliYXZjb2RlYyBsaWJhdnV0aWwpCiAg ICBsZF90bXA9JCgkX3BrZ19jb25maWcgLS1saWJzIGxpYnN3c2NhbGUgbGliYXZmb3JtYXQgbGli YXZjb2RlYyBsaWJhdnV0aWwpCiAgICBoZWFkZXJfY2hlY2sgbGliYXZ1dGlsL2F2dXRpbC5oICRp bmNfZmZtcGVnICRsZF90bXAgJiYKICAgICAgZXh0cmFfY2ZsYWdzPSIkZXh0cmFfY2ZsYWdzICRp bmNfZmZtcGVnIiAmJgogICAgICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAkbGRfdG1w IiAmJiBmZm1wZWdfc289eWVzICYmIGZmbXBlZz15ZXMKICBlbGlmIGhlYWRlcl9jaGVjayBsaWJh dnV0aWwvYXZ1dGlsLmggLWxzd3NjYWxlIC1sYXZmb3JtYXQgLWxhdmNvZGVjIC1sYXZ1dGlsIDsg dGhlbgogICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxzd3NjYWxlIC1sYXZmb3Jt YXQgLWxhdmNvZGVjIC1sYXZ1dGlsIgogICAgZmZtcGVnX3NvPXllcwogICAgZmZtcGVnPXllcwog IGZpCmZpCgppZiB0ZXN0ICIkZmZtcGVnIiA9IHllczsgdGhlbgogIHRlc3QgLWUgY29uZmlnLmgg fHwgdG91Y2ggY29uZmlnLmgKICBoZWFkZXJfY2hlY2sgbGliYXZ1dGlsL3g4Ni9hc20uaCB8fCBk aWUgImxpYmF2dXRpbC94ODYvYXNtLmggaGVhZGVyIGlzIHJlcXVpcmVkIGZvciBzaGFyZWQgRkZt cGVnIgogIGRlZl9mZm1wZWc9JyNkZWZpbmUgQ09ORklHX0ZGTVBFRyAxJwogIGlmIHRlc3QgIiRm Zm1wZWdfYSIgPSB5ZXMgOyB0aGVuCiAgICBjb2RlY21vZHVsZXM9ImZmbXBlZyhpbnRlcm5hbCkg JGNvZGVjbW9kdWxlcyIKICAgIGRlZl9mZm1wZWdfYT0nI2RlZmluZSBDT05GSUdfRkZNUEVHX0Eg MScKICBlbGlmIHRlc3QgIiRmZm1wZWdfc28iID0geWVzIDsgdGhlbgogICAgY29kZWNtb2R1bGVz PSJmZm1wZWcgJGNvZGVjbW9kdWxlcyIKICAgIGRlZl9mZm1wZWdfc289JyNkZWZpbmUgQ09ORklH X0ZGTVBFR19TTyAxJwogICAgcmVzX2NvbW1lbnQ9InVzaW5nIHNoYXJlZCBGRm1wZWcsIGJ1dCBz dGF0aWMgRkZtcGVnIGlzIHJlY29tbWVuZGVkIgogIGZpCmVsc2UKICBkZWZfZmZtcGVnPScjdW5k ZWYgQ09ORklHX0ZGTVBFRycKICBkZWZfZmZtcGVnX2E9JyN1bmRlZiBDT05GSUdfRkZNUEVHX0En CiAgZGVmX2ZmbXBlZ19zbz0nI3VuZGVmIENPTkZJR19GRk1QRUdfU08nCiAgbm9jb2RlY21vZHVs ZXM9ImZmbXBlZyAkbm9jb2RlY21vZHVsZXMiCiAgZWNobyAiQ29tcGlsaW5nIHdpdGhvdXQgRkZt cGVnIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkL3dvcmtpbmcuIgogIGVjaG8gIlBsZWFzZSBj b250YWN0IHVzIGlmIHRoYXQgaXMgYW4gaXNzdWUgZm9yIHlvdS4iCiAgZGllICJib3RoIGludGVy bmFsIGFuZCBleHRlcm5hbCBGRm1wZWcgbWlzc2luZyIKZmkKdGVzdCAiJF92Zl9sYXZmaSIgPSB5 ZXMgJiYgZGVmX3ZmX2xhdmZpPScjZGVmaW5lIENPTkZJR19WRl9MQVZGSSAxJ3x8IGxpYmF2Zmls dGVycz0nJwp0ZXN0ICIkX2xpYmF2Y29kZWNfbXBlZ2F1ZGlvX2hwIiA9IHllcyAmJgogIGRlZl9s aWJhdmNvZGVjX21wZWdhdWRpb19ocD0nI2RlZmluZSBDT05GSUdfTVBFR0FVRElPX0hQIDEnICYm CiAgbWFrX2xpYmF2Y29kZWNfbXBlZ2F1ZGlvX2hwPSdDT05GSUdfTVBFR0FVRElPX0hQID0geWVz JwplY2hvcmVzICIkZmZtcGVnIgoKCmVjaG9jaGVjayAibGlicG9zdHByb2MiCmlmIHRlc3QgIiRw b3N0cHJvYyIgPSBhdXRvIDsgdGhlbgogIHBvc3Rwcm9jPW5vCiAgaWYgdGVzdCAiJGZmbXBlZ19h IiA9IHllcyAmJiB0ZXN0IC1kIGZmbXBlZy9saWJwb3N0cHJvYyA7IHRoZW4KICAgIHBvc3Rwcm9j PXllcwogIGVsaWYgJF9wa2dfY29uZmlnIC0tZXhpc3RzIGxpYnBvc3Rwcm9jIDsgdGhlbgogICAg aW5jX3Bvc3Rwcm9jPSQoJF9wa2dfY29uZmlnIC0tY2ZsYWdzIGxpYnBvc3Rwcm9jKQogICAgbGRf dG1wPSQoJF9wa2dfY29uZmlnIC0tbGlicyBsaWJwb3N0cHJvYykKICAgIGhlYWRlcl9jaGVjayBs aWJwb3N0cHJvYy9wb3N0cHJvY2Vzcy5oICRpbmNfcG9zdHByb2MgJGxkX3RtcCAmJgogICAgICBl eHRyYV9jZmxhZ3M9IiRleHRyYV9jZmxhZ3MgJGluY19wb3N0cHJvYyIgJiYKICAgICAgZXh0cmFf bGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJGxkX3RtcCIgJiYgcG9zdHByb2M9eWVzCiAgZWxpZiBo ZWFkZXJfY2hlY2sgbGlicG9zdHByb2MvcG9zdHByb2Nlc3MuaCAtbHBvc3Rwcm9jIDsgdGhlbgog ICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgLWxwb3N0cHJvYyIKICAgIHBvc3Rwcm9j PXllcwogIGZpCmZpCmlmIHRlc3QgIiRwb3N0cHJvYyIgPSB5ZXM7IHRoZW4KICBkZWZfcG9zdHBy b2M9JyNkZWZpbmUgQ09ORklHX1BPU1RQUk9DIDEnCmVsc2UKICBkZWZfcG9zdHByb2M9JyN1bmRl ZiBDT05GSUdfUE9TVFBST0MnCmZpCmVjaG9yZXMgIiRwb3N0cHJvYyIKCgplY2hvY2hlY2sgImxp Ym9wZW5jb3JlX2FtciBuYXJyb3diYW5kIgppZiB0ZXN0ICIkX2xpYm9wZW5jb3JlX2Ftcm5iIiA9 IGF1dG8gOyB0aGVuCiAgX2xpYm9wZW5jb3JlX2Ftcm5iPW5vCiAgc3RhdGVtZW50X2NoZWNrIG9w ZW5jb3JlLWFtcm5iL2ludGVyZl9kZWMuaCAnRGVjb2Rlcl9JbnRlcmZhY2VfaW5pdCgpJyAtbG9w ZW5jb3JlLWFtcm5iICYmIF9saWJvcGVuY29yZV9hbXJuYj15ZXMKICBpZiB0ZXN0ICIkZmZtcGVn X2EiICE9IHllcyA7IHRoZW4KICAgIF9saWJvcGVuY29yZV9hbXJuYj1ubwogICAgcmVzX2NvbW1l bnQ9ImZmbXBlZyAoc3RhdGljKSBpcyByZXF1aXJlZCBieSBsaWJvcGVuY29yZV9hbXJuYiwgc29y cnkiCiAgZmkKZmkKaWYgdGVzdCAiJF9saWJvcGVuY29yZV9hbXJuYiIgPSB5ZXMgOyB0aGVuCiAg X2xpYm9wZW5jb3JlX2Ftcj15ZXMKICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbG9w ZW5jb3JlLWFtcm5iIgogIGRlZl9saWJvcGVuY29yZV9hbXJuYj0nI2RlZmluZSBDT05GSUdfTElC T1BFTkNPUkVfQU1STkIgMScKICBsaWJhdmRlY29kZXJzPSIkbGliYXZkZWNvZGVycyBMSUJPUEVO Q09SRV9BTVJOQl9ERUNPREVSIgogIGxpYmF2ZW5jb2RlcnM9IiRsaWJhdmVuY29kZXJzIExJQk9Q RU5DT1JFX0FNUk5CX0VOQ09ERVIiCiAgY29kZWNtb2R1bGVzPSJsaWJvcGVuY29yZV9hbXJuYiAk Y29kZWNtb2R1bGVzIgplbHNlCiAgZGVmX2xpYm9wZW5jb3JlX2Ftcm5iPScjZGVmaW5lIENPTkZJ R19MSUJPUEVOQ09SRV9BTVJOQiAwJwogIG5vY29kZWNtb2R1bGVzPSJsaWJvcGVuY29yZV9hbXJu YiAkbm9jb2RlY21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfbGlib3BlbmNvcmVfYW1ybmIiCgoKZWNo b2NoZWNrICJsaWJvcGVuY29yZV9hbXIgd2lkZWJhbmQiCmlmIHRlc3QgIiRfbGlib3BlbmNvcmVf YW1yd2IiID0gYXV0byA7IHRoZW4KICBfbGlib3BlbmNvcmVfYW1yd2I9bm8KICBzdGF0ZW1lbnRf Y2hlY2sgb3BlbmNvcmUtYW1yd2IvZGVjX2lmLmggJ0RfSUZfaW5pdCgpJyAtbG9wZW5jb3JlLWFt cndiICYmIF9saWJvcGVuY29yZV9hbXJ3Yj15ZXMKICBpZiB0ZXN0ICIkZmZtcGVnX2EiICE9IHll cyA7IHRoZW4KICAgIF9saWJvcGVuY29yZV9hbXJ3Yj1ubwogICAgcmVzX2NvbW1lbnQ9ImZmbXBl ZyAoc3RhdGljKSBpcyByZXF1aXJlZCBieSBsaWJvcGVuY29yZV9hbXJ3Yiwgc29ycnkiCiAgZmkK ZmkKaWYgdGVzdCAiJF9saWJvcGVuY29yZV9hbXJ3YiIgPSB5ZXMgOyB0aGVuCiAgX2xpYm9wZW5j b3JlX2Ftcj15ZXMKICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbG9wZW5jb3JlLWFt cndiIgogIGRlZl9saWJvcGVuY29yZV9hbXJ3Yj0nI2RlZmluZSBDT05GSUdfTElCT1BFTkNPUkVf QU1SV0IgMScKICBsaWJhdmRlY29kZXJzPSIkbGliYXZkZWNvZGVycyBMSUJPUEVOQ09SRV9BTVJX Ql9ERUNPREVSIgogIGNvZGVjbW9kdWxlcz0ibGlib3BlbmNvcmVfYW1yd2IgJGNvZGVjbW9kdWxl cyIKZWxzZQogIGRlZl9saWJvcGVuY29yZV9hbXJ3Yj0nI2RlZmluZSBMSUJPUEVOQ09SRV9BTVJX QiAwJwogIG5vY29kZWNtb2R1bGVzPSJsaWJvcGVuY29yZV9hbXJ3YiAkbm9jb2RlY21vZHVsZXMi CmZpCmVjaG9yZXMgIiRfbGlib3BlbmNvcmVfYW1yd2IiCgoKZWNob2NoZWNrICJsaWJkdi0wLjku NSsiCmlmIHRlc3QgIiRfbGliZHYiID0gYXV0byA7IHRoZW4KICBfbGliZHY9bm8KICBzdGF0ZW1l bnRfY2hlY2sgbGliZHYvZHYuaCAnZHZfZW5jb2Rlcl9uZXcoMSwgMSwgMSknIC1sZHYgJGxkX3B0 aHJlYWQgJiYgX2xpYmR2PXllcwpmaQppZiB0ZXN0ICIkX2xpYmR2IiA9IHllcyA7IHRoZW4KICBk ZWZfbGliZHY9JyNkZWZpbmUgQ09ORklHX0xJQkRWMDk1IDEnCiAgZXh0cmFfbGRmbGFncz0iJGV4 dHJhX2xkZmxhZ3MgLWxkdiIKICBjb2RlY21vZHVsZXM9ImxpYmR2ICRjb2RlY21vZHVsZXMiCmVs c2UKICBkZWZfbGliZHY9JyN1bmRlZiBDT05GSUdfTElCRFYwOTUnCiAgbm9jb2RlY21vZHVsZXM9 ImxpYmR2ICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9saWJkdiIKCmVjaG9jaGVjayAi Q3J5c3RhbEhEIgppZiB0ZXN0ICIkY3J5c3RhbGhkIiA9IGF1dG8gOyB0aGVuCiAgIGNyeXN0YWxo ZD1ubwogICBzdGF0ZW1lbnRfY2hlY2tfYnJva2VuIGxpYmNyeXN0YWxoZC9iY19kdHNfdHlwZXMu aCBsaWJjcnlzdGFsaGQvbGliY3J5c3RhbGhkX2lmLmggJ0R0c0NyeXN0YWxIRFZlcnNpb24oMCwg MCknIC1sY3J5c3RhbGhkICYmIGNyeXN0YWxoZD15ZXMKZmkKCmlmIHRlc3QgIiRjcnlzdGFsaGQi ID0geWVzIDsgdGhlbgogICBleHRyYV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAtbGNyeXN0YWxo ZCIKICAgZGVmX2NyeXN0YWxoZD0iI2RlZmluZSBDT05GSUdfQ1JZU1RBTEhEIDEiCiAgIGNvZGVj bW9kdWxlcz0iY3J5c3RhbGhkICRjb2RlY21vZHVsZXMiCmVsc2UKICAgZGVmX2NyeXN0YWxoZD0i I2RlZmluZSBDT05GSUdfQ1JZU1RBTEhEIDAiCiAgIG5vY29kZWNtb2R1bGVzPSJjcnlzdGFsaGQg JG5vY29kZWNtb2R1bGVzIgogICBsaWJhdmRlY29kZXJzPSQoZmlsdGVyX291dF9jb21wb25lbnQg ZGVjb2RlciAnW0EtWjAtOV0qX0NSWVNUQUxIRCcpCmZpCmVjaG9yZXMgIiRjcnlzdGFsaGQiCgpl Y2hvY2hlY2sgIlh2aWQiCmlmIHRlc3QgIiRfeHZpZCIgPSBhdXRvIDsgdGhlbgogIF94dmlkPW5v CiAgZm9yIGxkX3RtcCBpbiAiLWx4dmlkY29yZSIgIi1seHZpZGNvcmUgJGxkX3B0aHJlYWQiIDsg ZG8KICAgIHN0YXRlbWVudF9jaGVjayB4dmlkLmggJ3h2aWRfcGx1Z2luX3NzaW1fdCB4czsgeHZp ZF9nbG9iYWwoMCwgMCwgMCwgMCknICRsZF90bXAgJiYKICAgICAgZXh0cmFfbGRmbGFncz0iJGV4 dHJhX2xkZmxhZ3MgJGxkX3RtcCIgJiYgX3h2aWQ9eWVzICYmIGJyZWFrCiAgZG9uZQpmaQoKaWYg dGVzdCAiJF94dmlkIiA9IHllcyA7IHRoZW4KICBkZWZfeHZpZD0nI2RlZmluZSBDT05GSUdfWFZJ RDQgMScKICBjb2RlY21vZHVsZXM9Inh2aWQgJGNvZGVjbW9kdWxlcyIKZWxzZQogIGRlZl94dmlk PScjdW5kZWYgQ09ORklHX1hWSUQ0JwogIG5vY29kZWNtb2R1bGVzPSJ4dmlkICRub2NvZGVjbW9k dWxlcyIKZmkKZWNob3JlcyAiJF94dmlkIgoKZWNob2NoZWNrICJYdmlkIHR3byBwYXNzIHBsdWdp biIKaWYgdGVzdCAiJF9tZW5jb2RlciIgPSB5ZXMgJiYgdGVzdCAiJF94dmlkIiA9IHllcyAmJiB0 ZXN0ICIkX3h2aWRfbGF2YyIgPSBhdXRvIDsgdGhlbgogIHN0YXRlbWVudF9jaGVjayB4dmlkLmgg J3h2aWRfcGx1Z2luXzJwYXNzMl90IHM7IHMudmJ2X3NpemUgPSAwJyAmJiBfeHZpZF9sYXZjPXll cwpmaQppZiB0ZXN0ICIkX3h2aWRfbGF2YyIgPSB5ZXMgOyB0aGVuCiAgZGVmX3h2aWRfbGF2Yz0n I2RlZmluZSBDT05GSUdfTElCWFZJRCAxJwogIGxpYmF2ZW5jb2RlcnM9IiRsaWJhdmVuY29kZXJz IExJQlhWSURfRU5DT0RFUiIKZWxzZQogIF94dmlkX2xhdmM9bm8KICBkZWZfeHZpZF9sYXZjPScj ZGVmaW5lIENPTkZJR19MSUJYVklEIDAnCmZpCmVjaG9yZXMgIiRfeHZpZF9sYXZjIgoKCmVjaG9j aGVjayAieDI2NCIKaWYgdGVzdCAiJF94MjY0IiA9IGF1dG8gJiYgdGVzdCAiJF9tZW5jb2RlciIg PSB5ZXMgOyB0aGVuCiAgY2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRlIDxpbnR0eXBlcy5oPgoj aW5jbHVkZSA8eDI2NC5oPgojaWYgIShYMjY0X0JVSUxEID49IDExOCkKI2Vycm9yIFdlIGRvIG5v dCBzdXBwb3J0IG9sZCB2ZXJzaW9ucyBvZiB4MjY0LiBHZXQgdGhlIGxhdGVzdCBmcm9tIGdpdC4K I2VuZGlmCmludCBtYWluKHZvaWQpIHsgeDI2NF9lbmNvZGVyX29wZW4oKHZvaWQqKTApOyByZXR1 cm4gMDsgfQpFT0YKICBfeDI2ND1ubwogIGZvciBsZF94MjY0IGluICItbHgyNjQgJGxkX3B0aHJl YWQiICItbHgyNjQgJGxkX3B0aHJlYWQiIDsgZG8KICAgIGNjX2NoZWNrICRsZF94MjY0ICYmIGxp YnNfbWVuY29kZXI9IiRsaWJzX21lbmNvZGVyICRsZF94MjY0IiAmJiBfeDI2ND15ZXMgJiYgYnJl YWsKICBkb25lCmZpCgppZiB0ZXN0ICIkX3gyNjQiID0geWVzIDsgdGhlbgogIGRlZl94MjY0PScj ZGVmaW5lIENPTkZJR19YMjY0IDEnCiAgY29kZWNtb2R1bGVzPSJ4MjY0ICRjb2RlY21vZHVsZXMi CiAgdGVzdCAiJF94MjY0X2xhdmMiID0gYXV0byAmJiBfeDI2NF9sYXZjPXllcwogIGlmIHRlc3Qg IiRfeDI2NF9sYXZjIiA9IHllcyA7IHRoZW4KICAgIGRlZl94MjY0X2xhdmM9JyNkZWZpbmUgQ09O RklHX0xJQlgyNjQgMScKICAgIGxpYnNfbXBsYXllcj0iJGxpYnNfbXBsYXllciAkbGRfeDI2NCIK ICAgIGxpYmF2ZW5jb2RlcnM9IiRsaWJhdmVuY29kZXJzIExJQlgyNjRfRU5DT0RFUiIKICBmaQpl bHNlCiAgX3gyNjRfbGF2Yz1ubwogIGRlZl94MjY0PScjdW5kZWYgQ09ORklHX1gyNjQnCiAgZGVm X3gyNjRfbGF2Yz0nI2RlZmluZSBDT05GSUdfTElCWDI2NCAwJwogIG5vY29kZWNtb2R1bGVzPSJ4 MjY0ICRub2NvZGVjbW9kdWxlcyIKZmkKcmVzX2NvbW1lbnQ9ImluIEZGbXBlZzogJF94MjY0X2xh dmMiCmVjaG9yZXMgIiRfeDI2NCIKCgplY2hvY2hlY2sgImxpYmRpcmFjIgppZiB0ZXN0ICIkX2xp YmRpcmFjX2xhdmMiID0gYXV0bzsgdGhlbgogIF9saWJkaXJhY19sYXZjPW5vCiAgaWYgdGVzdCAi JGZmbXBlZ19hIiAhPSB5ZXM7IHRoZW4KICAgIHJlc19jb21tZW50PSJmZm1wZWcgKHN0YXRpYykg aXMgcmVxdWlyZWQgYnkgbGliZGlyYWMsIHNvcnJ5IgogIGVsc2UKICAgIGNhdCA+ICRUTVBDIDw8 IEVPRgojaW5jbHVkZSA8bGliZGlyYWNfZW5jb2Rlci9kaXJhY19lbmNvZGVyLmg+CiNpbmNsdWRl IDxsaWJkaXJhY19kZWNvZGVyL2RpcmFjX3BhcnNlci5oPgppbnQgbWFpbih2b2lkKQp7CiAgICBk aXJhY19lbmNvZGVyX2NvbnRleHRfdCBlbmNfY3R4OwogICAgZGlyYWNfZGVjb2Rlcl90ICpkZWNf aGFuZGxlOwogICAgZGlyYWNfZW5jb2Rlcl9jb250ZXh0X2luaXQoJmVuY19jdHgsIFZJREVPX0ZP Uk1BVF9TRF81NzZJNTApOwogICAgZGVjX2hhbmRsZSA9IGRpcmFjX2RlY29kZXJfaW5pdCgwKTsK ICAgIGlmIChkZWNfaGFuZGxlKQogICAgICAgIGRpcmFjX2RlY29kZXJfY2xvc2UoZGVjX2hhbmRs ZSk7CiAgICByZXR1cm4gMDsKfQpFT0YKICAgIGlmICRfcGtnX2NvbmZpZyAtLWV4aXN0cyBkaXJh YyA7IHRoZW4KICAgICAgaW5jX2RpcmFjPSQoJF9wa2dfY29uZmlnIC0tc2lsZW5jZS1lcnJvcnMg LS1jZmxhZ3MgZGlyYWMpCiAgICAgIGxkX2RpcmFjPSQoJF9wa2dfY29uZmlnIC0tc2lsZW5jZS1l cnJvcnMgLS1saWJzIGRpcmFjKQogICAgICBjY19jaGVjayAkaW5jX2RpcmFjICRsZF9kaXJhYyAg ICAgICAgJiYKICAgICAgX2xpYmRpcmFjX2xhdmM9eWVzICAgICAgICAgICAgICAgICAgICYmCiAg ICAgIGV4dHJhX2NmbGFncz0iJGV4dHJhX2NmbGFncyAkaW5jX2RpcmFjIiAmJgogICAgICBleHRy YV9sZGZsYWdzPSIkZXh0cmFfbGRmbGFncyAkbGRfZGlyYWMiCiAgICBmaQogIGZpCmZpCmlmIHRl c3QgIiRfbGliZGlyYWNfbGF2YyIgPSB5ZXMgOyB0aGVuCiAgZGVmX2xpYmRpcmFjX2xhdmM9JyNk ZWZpbmUgQ09ORklHX0xJQkRJUkFDIDEnCiAgbGliYXZlbmNvZGVycz0iJGxpYmF2ZW5jb2RlcnMg TElCRElSQUNfRU5DT0RFUiIKICBsaWJhdmRlY29kZXJzPSIkbGliYXZkZWNvZGVycyBMSUJESVJB Q19ERUNPREVSIgogIGNvZGVjbW9kdWxlcz0ibGliZGlyYWMgJGNvZGVjbW9kdWxlcyIKZWxzZQog IGRlZl9saWJkaXJhY19sYXZjPScjZGVmaW5lIENPTkZJR19MSUJESVJBQyAwJwogIG5vY29kZWNt b2R1bGVzPSJsaWJkaXJhYyAkbm9jb2RlY21vZHVsZXMiCmZpCmVjaG9yZXMgIiRfbGliZGlyYWNf bGF2YyIKCgplY2hvY2hlY2sgImxpYnNjaHJvZWRpbmdlciIKaWYgdGVzdCAiJF9saWJzY2hyb2Vk aW5nZXJfbGF2YyIgPSBhdXRvIDsgdGhlbgogIF9saWJzY2hyb2VkaW5nZXJfbGF2Yz1ubwogIGlm IHRlc3QgIiRmZm1wZWdfYSIgIT0geWVzOyB0aGVuCiAgICByZXNfY29tbWVudD0iZmZtcGVnIChz dGF0aWMpIGlzIHJlcXVpcmVkIGJ5IGxpYnNjaHJvZWRpbmdlciwgc29ycnkiCiAgZWxzZQogICAg Y2F0ID4gJFRNUEMgPDwgRU9GCiNpbmNsdWRlIDxzY2hyb2VkaW5nZXIvc2Nocm8uaD4KaW50IG1h aW4odm9pZCkgeyBzY2hyb19pbml0KCk7IHJldHVybiBTQ0hST19FTkNPREVSX1JBVEVfQ09OVFJP TF9DT05TVEFOVF9RVUFMSVRZOyB9CkVPRgogICAgaWYgJF9wa2dfY29uZmlnIC0tZXhpc3RzIHNj aHJvZWRpbmdlci0xLjAgOyB0aGVuCiAgICAgIGluY19zY2hyb2VkaW5nZXI9JCgkX3BrZ19jb25m aWcgLS1zaWxlbmNlLWVycm9ycyAtLWNmbGFncyBzY2hyb2VkaW5nZXItMS4wKQogICAgICBsZF9z Y2hyb2VkaW5nZXI9JCgkX3BrZ19jb25maWcgLS1zaWxlbmNlLWVycm9ycyAtLWxpYnMgc2Nocm9l ZGluZ2VyLTEuMCkKICAgICAgY2NfY2hlY2sgJGluY19zY2hyb2VkaW5nZXIgJGxkX3NjaHJvZWRp bmdlciAgICYmCiAgICAgIF9saWJzY2hyb2VkaW5nZXJfbGF2Yz15ZXMgICAgICAgICAgICAgICAg ICAgICAmJgogICAgICBleHRyYV9jZmxhZ3M9IiRleHRyYV9jZmxhZ3MgJGluY19zY2hyb2VkaW5n ZXIiICAgJiYKICAgICAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJGxkX3NjaHJvZWRp bmdlciIKICAgIGZpCiAgZmkKZmkKaWYgdGVzdCAiJF9saWJzY2hyb2VkaW5nZXJfbGF2YyIgPSB5 ZXMgOyB0aGVuCiAgZGVmX2xpYnNjaHJvZWRpbmdlcl9sYXZjPScjZGVmaW5lIENPTkZJR19MSUJT Q0hST0VESU5HRVIgMScKICBsaWJhdmVuY29kZXJzPSIkbGliYXZlbmNvZGVycyBMSUJTQ0hST0VE SU5HRVJfRU5DT0RFUiIKICBsaWJhdmRlY29kZXJzPSIkbGliYXZkZWNvZGVycyBMSUJTQ0hST0VE SU5HRVJfREVDT0RFUiIKICBjb2RlY21vZHVsZXM9ImxpYnNjaHJvZWRpbmdlciAkY29kZWNtb2R1 bGVzIgplbHNlCiAgZGVmX2xpYnNjaHJvZWRpbmdlcl9sYXZjPScjZGVmaW5lIENPTkZJR19MSUJT Q0hST0VESU5HRVIgMCcKICBub2NvZGVjbW9kdWxlcz0ibGlic2Nocm9lZGluZ2VyICRub2NvZGVj bW9kdWxlcyIKZmkKZWNob3JlcyAiJF9saWJzY2hyb2VkaW5nZXJfbGF2YyIKCmVjaG9jaGVjayAi bGlidnB4IgppZiB0ZXN0ICIkX2xpYnZweF9sYXZjIiA9IGF1dG87IHRoZW4KICBfbGlidnB4X2xh dmM9bm8KICBpZiB0ZXN0ICIkZmZtcGVnX2EiICE9IHllczsgdGhlbgogICAgcmVzX2NvbW1lbnQ9 ImR5bmFtaWMgbGlua2luZyB0byBsaWJ2cHggaXMgaXJyZWxldmFudCB3aGVuIHVzaW5nIGR5bmFt aWMgRkZtcGVnIgogIGVsc2UKICAgIGNhdCA+ICRUTVBDIDw8IEVPRgojaW5jbHVkZSA8dnB4L3Zw eF9lbmNvZGVyLmg+CiNpbmNsdWRlIDx2cHgvdnB4X2RlY29kZXIuaD4KI2luY2x1ZGUgPHZweC92 cDhkeC5oPgojaW5jbHVkZSA8dnB4L3ZwOGN4Lmg+CnN0cnVjdCB2cHhfY29kZWNfY3R4IGRlY29k ZXI7CmludCBtYWluKHZvaWQpIHsKICB2cHhfY29kZWNfZGVjX2luaXQoTlVMTCwgJnZweF9jb2Rl Y192cDhfZHhfYWxnbywgTlVMTCwgMCk7CiAgdnB4X2NvZGVjX2VuY19pbml0KE5VTEwsICZ2cHhf Y29kZWNfdnA4X2R4X2FsZ28sIE5VTEwsIDApOwogIHJldHVybiBWUFhfQ1EgKyBWUDhFX1NFVF9N QVhfSU5UUkFfQklUUkFURV9QQ1Q7Cn0KRU9GCiAgICBjY19jaGVjayAtbHZweCAmJiBfbGlidnB4 X2xhdmM9eWVzICYmIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1sdnB4IgogIGZpCmZp CmlmIHRlc3QgIiRfbGlidnB4X2xhdmMiID0geWVzIDsgdGhlbgogIGRlZl9saWJ2cHhfbGF2Yz0n I2RlZmluZSBDT05GSUdfTElCVlBYIDEnCiAgbGliYXZkZWNvZGVycz0iJGxpYmF2ZGVjb2RlcnMg TElCVlBYX1ZQOF9ERUNPREVSIgogIGxpYmF2ZW5jb2RlcnM9IiRsaWJhdmVuY29kZXJzIExJQlZQ WF9WUDhfRU5DT0RFUiIKICBjb2RlY21vZHVsZXM9ImxpYnZweCAkY29kZWNtb2R1bGVzIgplbHNl CiAgZGVmX2xpYnZweF9sYXZjPScjZGVmaW5lIENPTkZJR19MSUJWUFggMCcKICBub2NvZGVjbW9k dWxlcz0ibGlidnB4ICRub2NvZGVjbW9kdWxlcyIKZmkKZWNob3JlcyAiJF9saWJ2cHhfbGF2YyIK CmVjaG9jaGVjayAibGlibnV0IgppZiB0ZXN0ICIkX2xpYm51dCIgPSBhdXRvIDsgdGhlbgogIF9s aWJudXQ9bm8KICAgc3RhdGVtZW50X2NoZWNrIGxpYm51dC5oICdudXRfY29udGV4dF90dCAqIG51 dDsgbnV0X2Vycm9yKDApJyAtbG51dCAmJiBfbGlibnV0PXllcwpmaQoKaWYgdGVzdCAiJF9saWJu dXQiID0geWVzIDsgdGhlbgogIGRlZl9saWJudXQ9JyNkZWZpbmUgQ09ORklHX0xJQk5VVCAxJwog IGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1sbnV0IgplbHNlCiAgZGVmX2xpYm51dD0n I3VuZGVmIENPTkZJR19MSUJOVVQnCmZpCmVjaG9yZXMgIiRfbGlibnV0IgoKI2NoZWNrIG11c3Qg YmUgZG9uZSBhZnRlciBGRm1wZWcgb25lCmVjaG9jaGVjayAienIiCmlmIHRlc3QgIiRfenIiID0g YXV0byAmJiB0ZXN0ICIkZmZtcGVnX2EiID0geWVzIDsgdGhlbgogICMzNjA2NydzIHNlZW0gdG8g aWRlbnRpZnkgdGhlbXNlbHZlcyBhcyAzNjA1N1BRQydzLCBzbyB0aGUgbGluZQogICNiZWxvdyBz aG91bGQgd29yayBmb3IgMzYwNjcncyBhbmQgMzYwNTcncy4KICBpZiBncmVwIC1xIC1zIC1lICJN dWx0aW1lZGlhIHZpZGVvIGNvbnRyb2xsZXI6IFpvcmFuIENvcnBvcmF0aW9uIFpSMzYwNTciIC9w cm9jL3BjaSA7IHRoZW4KICAgIF96cj15ZXMKICBlbHNlCiAgICBfenI9bm8KICBmaQpmaQppZiB0 ZXN0ICIkX3pyIiA9IHllcyA7IHRoZW4KICAgIGRlZl96cj0nI2RlZmluZSBDT05GSUdfWlIgMScK ICAgIHZvbW9kdWxlcz0ienIgenIyICR2b21vZHVsZXMiCiAgICBtcGxheWVyX2VuY29kZXJzPSIk bXBsYXllcl9lbmNvZGVycyBNSlBFR19FTkNPREVSIgplbHNlCiAgICBfenI9bm8KICAgIGRlZl96 cj0nI3VuZGVmIENPTkZJR19aUicKICAgIG5vdm9tb2R1bGVzPSJ6ciB6cjIgJG5vdm9tb2R1bGVz IgpmaQplY2hvcmVzICIkX3pyIgoKCmVjaG9jaGVjayAibGlibXAzbGFtZSIKZGVmX21wM2xhbWU9 JyN1bmRlZiBDT05GSUdfTVAzTEFNRScKZGVmX21wM2xhbWVfbGF2Yz0iI2RlZmluZSBDT05GSUdf TElCTVAzTEFNRSAwIgpkZWZfbXAzbGFtZV9wcmVzZXQ9JyN1bmRlZiBDT05GSUdfTVAzTEFNRV9Q UkVTRVQnCmRlZl9tcDNsYW1lX3ByZXNldF9tZWRpdW09JyN1bmRlZiBDT05GSUdfTVAzTEFNRV9Q UkVTRVRfTUVESVVNJwppZiB0ZXN0ICIkX21wM2xhbWUiID0gYXV0byAmJiB0ZXN0ICIkX21lbmNv ZGVyIiA9IHllczsgdGhlbgogIF9tcDNsYW1lPW5vCiAgc3RhdGVtZW50X2NoZWNrIGxhbWUvbGFt ZS5oICdsYW1lX3NldF9WQlJfcXVhbGl0eShOVUxMLCAwKScgLWxtcDNsYW1lICYmCiAgICBfbXAz bGFtZT15ZXMgJiYgX21wM2xhbWVfbGF2Yz15ZXMKZmkKaWYgdGVzdCAiJF9tcDNsYW1lIiA9IHll cyA7IHRoZW4KICBkZWZfbXAzbGFtZT0iI2RlZmluZSBDT05GSUdfTVAzTEFNRSAxIgogIGxkX21w M2xhbWU9LWxtcDNsYW1lCiAgbGlic19tZW5jb2Rlcj0iJGxpYnNfbWVuY29kZXIgJGxkX21wM2xh bWUiCiAgc3RhdGVtZW50X2NoZWNrIGxhbWUvbGFtZS5oICdsYW1lX3NldF9wcmVzZXQoTlVMTCwg U1RBTkRBUkRfRkFTVCknICRsZF9tcDNsYW1lICYmIGRlZl9tcDNsYW1lX3ByZXNldD0iI2RlZmlu ZSBDT05GSUdfTVAzTEFNRV9QUkVTRVQgMSIKICBzdGF0ZW1lbnRfY2hlY2sgbGFtZS9sYW1lLmgg J2xhbWVfc2V0X3ByZXNldChOVUxMLCAgIE1FRElVTV9GQVNUKScgJGxkX21wM2xhbWUgJiYgZGVm X21wM2xhbWVfcHJlc2V0X21lZGl1bT0iI2RlZmluZSBDT05GSUdfTVAzTEFNRV9QUkVTRVRfTUVE SVVNIDEiCiAgaWYgdGVzdCAiJF9tcDNsYW1lX2xhdmMiID0geWVzIDsgdGhlbgogICAgZGVmX21w M2xhbWVfbGF2Yz0iI2RlZmluZSBDT05GSUdfTElCTVAzTEFNRSAxIgogICAgbGliYXZlbmNvZGVy cz0iJGxpYmF2ZW5jb2RlcnMgTElCTVAzTEFNRV9FTkNPREVSIgogICAgbGlic19tcGxheWVyPSIk bGlic19tcGxheWVyICRsZF9tcDNsYW1lIgogIGZpCmVsc2UKICBfbXAzbGFtZV9sYXZjPW5vCmZp CnJlc19jb21tZW50PSJpbiBGRm1wZWc6ICRfbXAzbGFtZV9sYXZjIgplY2hvcmVzICIkX21wM2xh bWUiCgoKZWNob2NoZWNrICJtZW5jb2RlciIKaWYgdGVzdCAiJF9tZW5jb2RlciIgPSBubyA7IHRo ZW4KICAjIG1wZWcxdmlkZW8gZm9yIHZmX2xhdmMsIHNub3cgZm9yIHZmX3VzcHAgLyB2Zl9tY2Rl aW50LAogIGxpYmF2ZW5jb2RlcnM9IiRtcGxheWVyX2VuY29kZXJzIE1QRUcxVklERU9fRU5DT0RF UiBTTk9XX0VOQ09ERVIiCmZpCmVjaG9yZXMgIiRfbWVuY29kZXIiCgoKZWNob2NoZWNrICJVblJB UiBleGVjdXRhYmxlIgppZiB0ZXN0ICIkX3VucmFyX2V4ZWMiID0gYXV0byA7IHRoZW4KICAgIF91 bnJhcl9leGVjPSJ5ZXMiCiAgICBtaW5ndzMyICYmIF91bnJhcl9leGVjPSJubyIKZmkKaWYgdGVz dCAiJF91bnJhcl9leGVjIiA9IHllcyA7IHRoZW4KICAgIGRlZl91bnJhcl9leGVjPScjZGVmaW5l IENPTkZJR19VTlJBUl9FWEVDIDEnCmVsc2UKICAgIGRlZl91bnJhcl9leGVjPScjdW5kZWYgQ09O RklHX1VOUkFSX0VYRUMnCmZpCmVjaG9yZXMgIiRfdW5yYXJfZXhlYyIKCmVjaG9jaGVjayAiVFYg aW50ZXJmYWNlIgppZiB0ZXN0ICIkX3R2IiA9IHllcyA7IHRoZW4KICBkZWZfdHY9JyNkZWZpbmUg Q09ORklHX1RWIDEnCiAgaW5wdXRtb2R1bGVzPSJ0diAkaW5wdXRtb2R1bGVzIgplbHNlCiAgbm9p bnB1dG1vZHVsZXM9InR2ICRub2lucHV0bW9kdWxlcyIKICBkZWZfdHY9JyN1bmRlZiBDT05GSUdf VFYnCmZpCmVjaG9yZXMgIiRfdHYiCgoKaWYgZnJlZWJzZCB8fCBuZXRic2QgfHwgb3BlbmJzZCB8 fCBkcmFnb25mbHkgfHwgYnNkb3MgOyB0aGVuCiAgZWNob2NoZWNrICIqQlNEIEJUODQ4IGJ0OHh4 IGhlYWRlciIKICBfaW9jdGxfYnQ4NDhfaD1ubwogIGZvciBmaWxlIGluICJtYWNoaW5lL2lvY3Rs X2J0ODQ4LmgiIFwKICAgICAgICAgICAgImRldi9ia3RyL2lvY3RsX2J0ODQ4LmgiIFwKICAgICAg ICAgICAgImRldi92aWRlby9ia3RyL2lvY3RsX2J0ODQ4LmgiIFwKICAgICAgICAgICAgImRldi9p Yy9idDh4eC5oIiA7IGRvCiAgICBjYXQgPiAkVE1QQyA8PEVPRgojaW5jbHVkZSA8c3lzL3R5cGVz Lmg+CiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgPCRmaWxlPgppbnQgbWFpbih2b2lk KSB7IGlvY3RsKDAsIFRWVFVORVJfR0VURlJFUSwgMCk7IHJldHVybiAwOyB9CkVPRgogICAgaWYg Y2NfY2hlY2sgOyB0aGVuCiAgICAgX2lvY3RsX2J0ODQ4X2g9eWVzCiAgICAgX2lvY3RsX2J0ODQ4 X2hfbmFtZT0iJGZpbGUiCiAgICAgYnJlYWs7CiAgICBmaQogIGRvbmUKICBpZiB0ZXN0ICIkX2lv Y3RsX2J0ODQ4X2giID0geWVzIDsgdGhlbgogICAgZGVmX2lvY3RsX2J0ODQ4X2hfbmFtZT0iI2Rl ZmluZSBJT0NUTF9CVDg0OF9IX05BTUUgPCRfaW9jdGxfYnQ4NDhfaF9uYW1lPiIKICAgIHJlc19j b21tZW50PSJ1c2luZyAkX2lvY3RsX2J0ODQ4X2hfbmFtZSIKICBlbHNlCiAgICBkZWZfaW9jdGxf YnQ4NDhfaF9uYW1lPSIjdW5kZWYgSU9DVExfQlQ4NDhfSF9OQU1FIgogIGZpCiAgZWNob3JlcyAi JF9pb2N0bF9idDg0OF9oIgoKICBlY2hvY2hlY2sgIipCU0QgaW9jdGxfbWV0ZW9yLmgiCiAgX2lv Y3RsX21ldGVvcl9oPW5vCiAgZm9yIGlvY3RsX21ldGVvcl9oX3BhdGggaW4gIm1hY2hpbmUvaW9j dGxfbWV0ZW9yLmgiICJkZXYvYmt0ci9pb2N0bF9tZXRlb3IuaCIgImRldi92aWRlby9ia3RyL2lv Y3RsX21ldGVvci5oIiA7IGRvCiAgICBzdGF0ZW1lbnRfY2hlY2tfYnJva2VuICJzeXMvdHlwZXMu aCIgIiRpb2N0bF9tZXRlb3JfaF9wYXRoIiAnaW9jdGwoMCwgTUVURU9SU0lOUFVULCAwKScgJiYK ICAgICAgX2lvY3RsX21ldGVvcl9oPXllcyAmJiBicmVhawogIGRvbmUKICBpZiB0ZXN0ICIkX2lv Y3RsX21ldGVvcl9oIiA9IHllcyA7IHRoZW4KICAgIGRlZl9pb2N0bF9tZXRlb3JfaF9uYW1lPSIj ZGVmaW5lIElPQ1RMX01FVEVPUl9IX05BTUUgPCRpb2N0bF9tZXRlb3JfaF9wYXRoPiIKICAgIHJl c19jb21tZW50PSJ1c2luZyAkaW9jdGxfbWV0ZW9yX2hfcGF0aCIKICBlbHNlCiAgICBkZWZfaW9j dGxfbWV0ZW9yX2hfbmFtZT0iI3VuZGVmIElPQ1RMX01FVEVPUl9IX05BTUUiCiAgZmkKICBlY2hv cmVzICIkX2lvY3RsX21ldGVvcl9oIgoKICBlY2hvY2hlY2sgIipCU0QgQnJvb2tUcmVlIDg0OCBU ViBpbnRlcmZhY2UiCiAgaWYgdGVzdCAiJF90dl9ic2RidDg0OCIgPSBhdXRvIDsgdGhlbgogICAg X3R2X2JzZGJ0ODQ4PW5vCiAgICBpZiB0ZXN0ICIkX3R2IiA9IHllcyA7IHRoZW4KICAgICAgY2F0 ID4gJFRNUEMgPDxFT0YKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgokZGVmX2lvY3RsX21ldGVvcl9o X25hbWUKJGRlZl9pb2N0bF9idDg0OF9oX25hbWUKI2lmZGVmIElPQ1RMX01FVEVPUl9IX05BTUUK I2luY2x1ZGUgSU9DVExfTUVURU9SX0hfTkFNRQojZW5kaWYKI2lmZGVmIElPQ1RMX0JUODQ4X0hf TkFNRQojaW5jbHVkZSBJT0NUTF9CVDg0OF9IX05BTUUKI2VuZGlmCmludCBtYWluKHZvaWQpIHsK IGlvY3RsKDAsIE1FVEVPUlNJTlBVVCwgMCk7CiBpb2N0bCgwLCBUVlRVTkVSX0dFVEZSRVEsIDAp OwogcmV0dXJuIDA7Cn0KRU9GCiAgICAgIGNjX2NoZWNrICYmIF90dl9ic2RidDg0OD15ZXMKICAg IGZpCiAgZmkKICBpZiB0ZXN0ICIkX3R2X2JzZGJ0ODQ4IiA9IHllcyA7IHRoZW4KICAgIGRlZl90 dl9ic2RidDg0OD0nI2RlZmluZSBDT05GSUdfVFZfQlNEQlQ4NDggMScKICAgIGlucHV0bW9kdWxl cz0idHYtYnNkYnQ4NDggJGlucHV0bW9kdWxlcyIKICBlbHNlCiAgICBkZWZfdHZfYnNkYnQ4NDg9 JyN1bmRlZiBDT05GSUdfVFZfQlNEQlQ4NDgnCiAgICBub2lucHV0bW9kdWxlcz0idHYtYnNkYnQ4 NDggJG5vaW5wdXRtb2R1bGVzIgogIGZpCiAgZWNob3JlcyAiJF90dl9ic2RidDg0OCIKZmkgI2lm IGZyZWVic2QgfHwgbmV0YnNkIHx8IG9wZW5ic2QgfHwgZHJhZ29uZmx5IHx8IGJzZG9zCgoKZWNo b2NoZWNrICJEaXJlY3RTaG93IFRWIGludGVyZmFjZSIKaWYgdGVzdCAiJF90dl9kc2hvdyIgPSBh dXRvICYmIHRlc3QgIiRfdHYiID0geWVzICYmIHdpbjMyIDsgdGhlbgogICAgX3R2X2RzaG93PW5v CiAgICBzdGF0ZW1lbnRfY2hlY2sgb2xlMi5oICd2b2lkKiBwOyBDb0NyZWF0ZUluc3RhbmNlKChH VUlEKikmR1VJRF9OVUxMLCBOVUxMLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgJkdVSURfTlVMTCwg JnApJyAtbG9sZTMyIC1sdXVpZCAmJiBfdHZfZHNob3c9eWVzCmZpCmlmIHRlc3QgIiRfdHZfZHNo b3ciID0geWVzIDsgdGhlbgogIGlucHV0bW9kdWxlcz0idHYtZHNob3cgJGlucHV0bW9kdWxlcyIK ICBkZWZfdHZfZHNob3c9JyNkZWZpbmUgQ09ORklHX1RWX0RTSE9XIDEnCiAgZXh0cmFfbGRmbGFn cz0iJGV4dHJhX2xkZmxhZ3MgLWxvbGUzMiAtbHV1aWQiCmVsc2UKICBfdHZfZHNob3c9bm8KICBu b2lucHV0bW9kdWxlcz0idHYtZHNob3cgJG5vaW5wdXRtb2R1bGVzIgogIGRlZl90dl9kc2hvdz0n I3VuZGVmIENPTkZJR19UVl9EU0hPVycKZmkKZWNob3JlcyAiJF90dl9kc2hvdyIKCgplY2hvY2hl Y2sgIlZpZGVvIDQgTGludXggVFYgaW50ZXJmYWNlIgppZiB0ZXN0ICIkX3R2X3Y0bDEiID0gYXV0 byAmJiB0ZXN0ICIkX3R2IiA9IHllcyAmJiBsaW51eCA7IHRoZW4KICAgIF90dl92NGwxPW5vCiAg ICBoZWFkZXJfY2hlY2tfYnJva2VuIHN5cy90aW1lLmggbGludXgvdmlkZW9kZXYuaCAmJiBfdHZf djRsMT15ZXMKZmkKaWYgdGVzdCAiJF90dl92NGwxIiA9IHllcyA7IHRoZW4KICBfYXVkaW9faW5w dXQ9eWVzCiAgX3R2X3Y0bD15ZXMKICBkZWZfdHZfdjRsPScjZGVmaW5lIENPTkZJR19UVl9WNEwg MScKICBkZWZfdHZfdjRsMT0nI2RlZmluZSBDT05GSUdfVFZfVjRMMSAxJwogIGlucHV0bW9kdWxl cz0idHYtdjRsICRpbnB1dG1vZHVsZXMiCmVsc2UKICBfdHZfdjRsMT1ubwogIG5vaW5wdXRtb2R1 bGVzPSJ0di12NGwxICRub2lucHV0bW9kdWxlcyIKICBkZWZfdHZfdjRsPScjdW5kZWYgQ09ORklH X1RWX1Y0TCcKZmkKZWNob3JlcyAiJF90dl92NGwxIgoKCmVjaG9jaGVjayAiVmlkZW8gNCBMaW51 eCAyIFRWIGludGVyZmFjZSIKaWYgdGVzdCAiJF90dl92NGwyIiA9IGF1dG8gJiYgdGVzdCAiJF90 diIgPSB5ZXMgOyB0aGVuCiAgICBfdHZfdjRsMj1ubwogICAgaWYgbGludXggOyB0aGVuCiAgICAg ICAgaGVhZGVyX2NoZWNrX2Jyb2tlbiBzeXMvdGltZS5oIGxpbnV4L3ZpZGVvZGV2Mi5oICYmIF90 dl92NGwyPXllcwogICAgZWxzZQogICAgICAgIGhlYWRlcl9jaGVjayBzeXMvdmlkZW9pby5oICYm IF90dl92NGwyPXllcyAmJgogICAgICAgICAgICBkZWZfc3lzX3ZpZGVvaW9faD0nI2RlZmluZSBI QVZFX1NZU19WSURFT0lPX0ggMScKICAgIGZpCmZpCmlmIHRlc3QgIiRfdHZfdjRsMiIgPSB5ZXMg OyB0aGVuCiAgX2F1ZGlvX2lucHV0PXllcwogIF90dl92NGw9eWVzCiAgZGVmX3R2X3Y0bD0nI2Rl ZmluZSBDT05GSUdfVFZfVjRMIDEnCiAgZGVmX3R2X3Y0bDI9JyNkZWZpbmUgQ09ORklHX1RWX1Y0 TDIgMScKICBpbnB1dG1vZHVsZXM9InR2LXY0bDIgJGlucHV0bW9kdWxlcyIKZWxzZQogIG5vaW5w dXRtb2R1bGVzPSJ0di12NGwyICRub2lucHV0bW9kdWxlcyIKICBkZWZfdHZfdjRsMj0nI3VuZGVm IENPTkZJR19UVl9WNEwyJwpmaQplY2hvcmVzICIkX3R2X3Y0bDIiCgoKZWNob2NoZWNrICJSYWRp byBpbnRlcmZhY2UiCmlmIHRlc3QgIiRfcmFkaW8iID0geWVzIDsgdGhlbgogIGRlZl9yYWRpbz0n I2RlZmluZSBDT05GSUdfUkFESU8gMScKICBpbnB1dG1vZHVsZXM9InJhZGlvICRpbnB1dG1vZHVs ZXMiCiAgaWYgdGVzdCAiJF9hbHNhIiAhPSB5ZXMgLWEgIiRfb3NzYXVkaW8iICE9IHllcyA7IHRo ZW4KICAgIF9yYWRpb19jYXB0dXJlPW5vCiAgZmkKICBpZiB0ZXN0ICIkX3JhZGlvX2NhcHR1cmUi ID0geWVzIDsgdGhlbgogICAgX2F1ZGlvX2lucHV0PXllcwogICAgZGVmX3JhZGlvX2NhcHR1cmU9 IiNkZWZpbmUgQ09ORklHX1JBRElPX0NBUFRVUkUgMSIKICBlbHNlCiAgICBkZWZfcmFkaW9fY2Fw dHVyZT0iI3VuZGVmIENPTkZJR19SQURJT19DQVBUVVJFIgogIGZpCmVsc2UKICBub2lucHV0bW9k dWxlcz0icmFkaW8gJG5vaW5wdXRtb2R1bGVzIgogIGRlZl9yYWRpbz0nI3VuZGVmIENPTkZJR19S QURJTycKICBkZWZfcmFkaW9fY2FwdHVyZT0iI3VuZGVmIENPTkZJR19SQURJT19DQVBUVVJFIgog IF9yYWRpb19jYXB0dXJlPW5vCmZpCmVjaG9yZXMgIiRfcmFkaW8iCmVjaG9jaGVjayAiQ2FwdHVy ZSBmb3IgUmFkaW8gaW50ZXJmYWNlIgplY2hvcmVzICIkX3JhZGlvX2NhcHR1cmUiCgoKZWNob2No ZWNrICJWaWRlbyA0IExpbnV4IDIgUmFkaW8gaW50ZXJmYWNlIgppZiB0ZXN0ICIkX3JhZGlvX3Y0 bDIiID0gYXV0byAmJiB0ZXN0ICIkX3JhZGlvIiA9IHllcyAmJiBsaW51eCA7IHRoZW4KICAgIF9y YWRpb192NGwyPW5vCiAgICBoZWFkZXJfY2hlY2sgbGludXgvdmlkZW9kZXYyLmggJiYgX3JhZGlv X3Y0bDI9eWVzCmZpCmlmIHRlc3QgIiRfcmFkaW9fdjRsMiIgPSB5ZXMgOyB0aGVuCiAgZGVmX3Jh ZGlvX3Y0bDI9JyNkZWZpbmUgQ09ORklHX1JBRElPX1Y0TDIgMScKZWxzZQogIF9yYWRpb192NGwy PW5vCiAgZGVmX3JhZGlvX3Y0bDI9JyN1bmRlZiBDT05GSUdfUkFESU9fVjRMMicKZmkKZWNob3Jl cyAiJF9yYWRpb192NGwyIgoKCmVjaG9jaGVjayAiVmlkZW8gNCBMaW51eCBSYWRpbyBpbnRlcmZh Y2UiCmlmIHRlc3QgIiRfcmFkaW9fdjRsIiA9IGF1dG8gJiYgdGVzdCAiJF9yYWRpbyIgPSB5ZXMg JiYgbGludXggOyB0aGVuCiAgICBfcmFkaW9fdjRsPW5vCiAgICBoZWFkZXJfY2hlY2sgbGludXgv dmlkZW9kZXYuaCAmJiBfcmFkaW9fdjRsPXllcwpmaQppZiB0ZXN0ICIkX3JhZGlvX3Y0bCIgPSB5 ZXMgOyB0aGVuCiAgZGVmX3JhZGlvX3Y0bD0nI2RlZmluZSBDT05GSUdfUkFESU9fVjRMIDEnCmVs c2UKICBfcmFkaW9fdjRsPW5vCiAgZGVmX3JhZGlvX3Y0bD0nI3VuZGVmIENPTkZJR19SQURJT19W NEwnCmZpCmVjaG9yZXMgIiRfcmFkaW9fdjRsIgoKaWYgZnJlZWJzZCB8fCBuZXRic2QgfHwgb3Bl bmJzZCB8fCBkcmFnb25mbHkgfHwgYnNkb3MgJiYKICB0ZXN0ICIkX3JhZGlvIiA9IHllcyAmJiB0 ZXN0ICIkX3JhZGlvX2JzZGJ0ODQ4IiA9IGF1dG8gOyB0aGVuCmVjaG9jaGVjayAiKkJTRCBCcm9v a1RyZWUgODQ4IFJhZGlvIGludGVyZmFjZSIKICAgX3JhZGlvX2JzZGJ0ODQ4PW5vCiAgICBjYXQg PiAkVE1QQyA8PEVPRgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiRkZWZfaW9jdGxfYnQ4NDhfaF9u YW1lCiNpZmRlZiBJT0NUTF9CVDg0OF9IX05BTUUKI2luY2x1ZGUgSU9DVExfQlQ4NDhfSF9OQU1F CiNlbmRpZgppbnQgbWFpbih2b2lkKSB7IGlvY3RsKDAsIFJBRElPX0dFVEZSRVEsIDApOyByZXR1 cm4gMDsgfQpFT0YKICAgIGNjX2NoZWNrICYmIF9yYWRpb19ic2RidDg0OD15ZXMKZWNob3JlcyAi JF9yYWRpb19ic2RidDg0OCIKZmkgI2lmIGZyZWVic2QgfHwgbmV0YnNkIHx8IG9wZW5ic2QgfHwg ZHJhZ29uZmx5IHx8IGJzZG9zICYmIF9yYWRpbyAmJiBfcmFkaW9fYnNkYnQ4NDgKCmlmIHRlc3Qg IiRfcmFkaW9fYnNkYnQ4NDgiID0geWVzIDsgdGhlbgogIGRlZl9yYWRpb19ic2RidDg0OD0nI2Rl ZmluZSBDT05GSUdfUkFESU9fQlNEQlQ4NDggMScKZWxzZQogIF9yYWRpb19ic2RidDg0OD1ubwog IGRlZl9yYWRpb19ic2RidDg0OD0nI3VuZGVmIENPTkZJR19SQURJT19CU0RCVDg0OCcKZmkKCmlm IHRlc3QgIiRfcmFkaW9fdjRsIiA9IG5vICYmIHRlc3QgIiRfcmFkaW9fdjRsMiIgPSBubyAmJgog ICB0ZXN0ICIkX3JhZGlvX2JzZGJ0ODQ4IiA9IG5vICYmIHRlc3QgIiRfcmFkaW8iID0geWVzIDsg dGhlbgogICAgZGllICJSYWRpbyBkcml2ZXIgcmVxdWlyZXMgQlNEIEJUODQ4LCAgVjRMIG9yIFY0 TDIhIgpmaQoKZWNob2NoZWNrICJWaWRlbyA0IExpbnV4IDIgTVBFRyBQVlIgaW50ZXJmYWNlIgpp ZiB0ZXN0ICIkX3B2ciIgPSBhdXRvICYmIHRlc3QgIiRfdHZfdjRsMiIgPSB5ZXMgJiYgbGludXgg OyB0aGVuCiBfcHZyPW5vCiAgY2F0ID4gJFRNUEMgPDxFT0YKI2luY2x1ZGUgPHN5cy90aW1lLmg+ CiNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KaW50IG1haW4odm9pZCkgeyBzdHJ1Y3QgdjRs Ml9leHRfY29udHJvbHMgZXh0OyByZXR1cm4gZXh0LmNvbnRyb2xzLT52YWx1ZTsgfQpFT0YKICBj Y19jaGVjayAmJiBfcHZyPXllcwpmaQppZiB0ZXN0ICIkX3B2ciIgPSB5ZXMgOyB0aGVuCiAgZGVm X3B2cj0nI2RlZmluZSBDT05GSUdfUFZSIDEnCiAgaW5wdXRtb2R1bGVzPSJwdnIgJGlucHV0bW9k dWxlcyIKZWxzZQogIF9wdnI9bm8KICBub2lucHV0bW9kdWxlcz0icHZyICRub2lucHV0bW9kdWxl cyIKICBkZWZfcHZyPScjdW5kZWYgQ09ORklHX1BWUicKZmkKZWNob3JlcyAiJF9wdnIiCgoKZWNo b2NoZWNrICJmdHAiCmlmIHRlc3QgIiRfZnRwIiA9ICJhdXRvIiAmJiB0ZXN0ICIkbmV0d29ya2lu ZyIgPSAieWVzIiA7IHRoZW4KICAgIF9mdHA9eWVzCmZpCmlmIHRlc3QgIiRfZnRwIiA9IHllcyA7 IHRoZW4KICBkZWZfZnRwPScjZGVmaW5lIENPTkZJR19GVFAgMScKICBpbnB1dG1vZHVsZXM9ImZ0 cCAkaW5wdXRtb2R1bGVzIgplbHNlCiAgbm9pbnB1dG1vZHVsZXM9ImZ0cCAkbm9pbnB1dG1vZHVs ZXMiCiAgZGVmX2Z0cD0nI3VuZGVmIENPTkZJR19GVFAnCmZpCmVjaG9yZXMgIiRfZnRwIgoKZWNo b2NoZWNrICJ2c3RyZWFtIGNsaWVudCIKaWYgdGVzdCAiJF92c3RyZWFtIiA9IGF1dG8gOyB0aGVu CiAgX3ZzdHJlYW09bm8KICBjYXQgPiAkVE1QQyA8PEVPRgojaW5jbHVkZSA8dnN0cmVhbS1jbGll bnQuaD4Kdm9pZCB2c3RyZWFtX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uICkge30KaW50 IG1haW4odm9pZCkgeyB2c3RyZWFtX3N0YXJ0KCk7IHJldHVybiAwOyB9CkVPRgogIGNjX2NoZWNr IC1sdnN0cmVhbS1jbGllbnQgJiYgX3ZzdHJlYW09eWVzCmZpCmlmIHRlc3QgIiRfdnN0cmVhbSIg PSB5ZXMgOyB0aGVuCiAgZGVmX3ZzdHJlYW09JyNkZWZpbmUgQ09ORklHX1ZTVFJFQU0gMScKICBp bnB1dG1vZHVsZXM9InZzdHJlYW0gJGlucHV0bW9kdWxlcyIKICBleHRyYV9sZGZsYWdzPSIkZXh0 cmFfbGRmbGFncyAtbHZzdHJlYW0tY2xpZW50IgplbHNlCiAgbm9pbnB1dG1vZHVsZXM9InZzdHJl YW0gJG5vaW5wdXRtb2R1bGVzIgogIGRlZl92c3RyZWFtPScjdW5kZWYgQ09ORklHX1ZTVFJFQU0n CmZpCmVjaG9yZXMgIiRfdnN0cmVhbSIKCgplY2hvY2hlY2sgIk9TRCBtZW51IgppZiB0ZXN0ICIk X21lbnUiID0geWVzIDsgdGhlbgogICAgZGVmX21lbnU9JyNkZWZpbmUgQ09ORklHX01FTlUgMScK ICAgIHRlc3QgJF9kdmJpbiA9ICJ5ZXMiICYmIF9tZW51X2R2YmluPXllcwplbHNlCmRlZl9tZW51 PScjdW5kZWYgQ09ORklHX01FTlUnCiAgICBfbWVudV9kdmJpbj1ubwpmaQplY2hvcmVzICIkX21l bnUiCgoKZWNob2NoZWNrICJTdWJ0aXRsZXMgc29ydGluZyIKaWYgdGVzdCAiJF9zb3J0c3ViIiA9 IHllcyA7IHRoZW4KICAgIGRlZl9zb3J0c3ViPScjZGVmaW5lIENPTkZJR19TT1JUU1VCIDEnCmVs c2UKICAgIGRlZl9zb3J0c3ViPScjdW5kZWYgQ09ORklHX1NPUlRTVUInCmZpCmVjaG9yZXMgIiRf c29ydHN1YiIKCgplY2hvY2hlY2sgIlhNTVMgaW5wdXRwbHVnaW4gc3VwcG9ydCIKaWYgdGVzdCAi JF94bW1zIiA9IHllcyA7IHRoZW4KICBpZiAoIHhtbXMtY29uZmlnIC0tdmVyc2lvbiApID4vZGV2 L251bGwgMj4mMSA7IHRoZW4KICAgICAgX3htbXNwbHVnaW5kaXI9JCh4bW1zLWNvbmZpZyAtLWlu cHV0LXBsdWdpbi1kaXIpCiAgICAgIF94bW1zbGliZGlyPSQoeG1tcy1jb25maWcgLS1leGVjLXBy ZWZpeCkvbGliCiAgZWxzZQogICAgICBfeG1tc3BsdWdpbmRpcj0vdXNyL2xpYi94bW1zL0lucHV0 CiAgICAgIF94bW1zbGliZGlyPS91c3IvbGliCiAgZmkKCiAgZGVmX3htbXM9JyNkZWZpbmUgQ09O RklHX1hNTVMgMScKICBpZiBkYXJ3aW4gOyB0aGVuCiAgICAgZXh0cmFfbGRmbGFncz0iJGV4dHJh X2xkZmxhZ3MgJHtfeG1tc2xpYmRpcn0vbGlieG1tcy5keWxpYiIKICBlbHNlCiAgICAgZXh0cmFf bGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJHtfeG1tc2xpYmRpcn0vbGlieG1tcy5zby4xIC1leHBv cnQtZHluYW1pYyIKICBmaQplbHNlCiAgZGVmX3htbXM9JyN1bmRlZiBDT05GSUdfWE1NUycKZmkK ZWNob3JlcyAiJF94bW1zIgoKCiMgLS0tLS0tLS0tLS0tLS0tIEdVSSBzcGVjaWZpYyB0ZXN0cyBi ZWdpbiAtLS0tLS0tLS0tLS0tLS0tLS0tCmVjaG9jaGVjayAiR1VJIgplY2hvcmVzICIkX2d1aSIK aWYgdGVzdCAiJF9ndWkiID0geWVzIDsgdGhlbgoKICAjIFJlcXVpcmVkIGxpYnJhcmllcwogIHRl c3QgIiRmZm1wZWciICE9IHllcyAmJiBkaWUgIlRoZSBHVUkgcmVxdWlyZXMgRkZtcGVnLiIKICB0 ZXN0ICIkZmZtcGVnX3NvIiA9IHllcyB8fAogICAgY2FzZSAiJGxpYmF2ZGVjb2RlcnMiIGluCiAg ICAgICpQTkdfREVDT0RFUiopIDs7CiAgICAgICopIGRpZSAiVGhlIEdVSSByZXF1aXJlcyBsaWJh dmNvZGVjIHdpdGggUE5HIHN1cHBvcnQgKG5lZWRzIHpsaWIpLiIgOzsKICAgIGVzYWMKICB0ZXN0 ICIkX2ZyZWV0eXBlIiA9IG5vICYmIHRlc3QgIiRfYml0bWFwX2ZvbnQiID0gbm8gJiYKICAgIGRp ZSAiVGhlIEdVSSByZXF1aXJlcyBlaXRoZXIgRnJlZVR5cGUgb3IgYml0bWFwIGZvbnQgc3VwcG9y dC4iCgogIGlmICEgd2luMzIgOyB0aGVuCiAgICBfZ3VpX2d0az15ZXMKICAgIHRlc3QgIiRfeDEx IiAhPSB5ZXMgJiYgZGllICJUaGUgR1VJIHJlcXVpcmVzIFgxMS4iCgogICAgZWNob2NoZWNrICJY U2hhcGUgZXh0ZW5zaW9uIgogICAgaWYgdGVzdCAiJF94c2hhcGUiID0gYXV0byA7IHRoZW4KICAg ICAgX3hzaGFwZT1ubwogICAgICBjYXQgPiAkVE1QQyA8PCBFT0YKI2luY2x1ZGUgPFgxMS9YbGli Lmg+CiNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9zaGFwZS5oPgojaW5jbHVkZSA8c3RkbGliLmg+ CmludCBtYWluKHZvaWQpIHsKICBjaGFyICpuYW1lID0gIjowLjAiOwogIERpc3BsYXkgKndzRGlz cGxheTsKICBpbnQgZXhpdHZhciA9IDA7CiAgaW50IGV2ZW50YmFzZSwgZXJyb3JiYXNlOwogIGlm IChnZXRlbnYoIkRJU1BMQVkiKSkKICAgICAgbmFtZT1nZXRlbnYoIkRJU1BMQVkiKTsKICB3c0Rp c3BsYXk9WE9wZW5EaXNwbGF5KG5hbWUpOwogIGlmICghWFNoYXBlUXVlcnlFeHRlbnNpb24od3NE aXNwbGF5LCAmZXZlbnRiYXNlLCAmZXJyb3JiYXNlKSkKICAgICAgZXhpdHZhcj0xOwogIFhDbG9z ZURpc3BsYXkod3NEaXNwbGF5KTsKICByZXR1cm4gZXhpdHZhcjsKfQpFT0YKICAgICAgY2NfY2hl Y2sgLWxYZXh0ICYmIF94c2hhcGU9eWVzCiAgICBmaQogICAgaWYgdGVzdCAiJF94c2hhcGUiID0g eWVzIDsgdGhlbgogICAgICBkZWZfeHNoYXBlPScjZGVmaW5lIENPTkZJR19YU0hBUEUgMScKICAg IGVsc2UKICAgICAgZGVmX3hzaGFwZT0nI3VuZGVmIENPTkZJR19YU0hBUEUnCiAgICAgIHJlc19j b21tZW50PSJzb21lIHNraW5zIHdpbGwgbG9vayB1Z2x5IHdpdGhvdXQgaXQiCiAgICBmaQogICAg ZWNob3JlcyAiJF94c2hhcGUiCgogICAgIyBDaGVjayBmb3IgR1RLMgogICAgZWNob2NoZWNrICJH VEsrIHZlcnNpb24iCgogICAgaWYgJF9wa2dfY29uZmlnIC0tZXhpc3RzIGd0aystMi4wIDsgdGhl bgogICAgICBfZ3RrPSQoJF9wa2dfY29uZmlnIC0tbW9kdmVyc2lvbiAiZ3RrKy0yLjAgPj0gMi40 LjAiIDI+JjEpCiAgICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgogICAgICAgIGV4dHJhX2NmbGFn cz0iJGV4dHJhX2NmbGFncyAkKCRfcGtnX2NvbmZpZyAtLWNmbGFncyBndGsrLTIuMCAyPi9kZXYv bnVsbCkiCiAgICAgICAgbGlic19tcGxheWVyPSIkbGlic19tcGxheWVyICQoJF9wa2dfY29uZmln IC0tbGlicyBndGsrLTIuMCAyPi9kZXYvbnVsbCkiCiAgICAgICAgZWNob3JlcyAiJF9ndGsiCiAg ICAgIGVsc2UKICAgICAgICByZXNfY29tbWVudD0idG9vIG9sZCIKICAgICAgICBlY2hvcmVzICIk KCRfcGtnX2NvbmZpZyAtLW1vZHZlcnNpb24gZ3RrKy0yLjAgMj4vZGV2L251bGwpIgogICAgICAg IGRpZSAiJF9ndGsiCiAgICAgIGZpCgogICAgICAjIENoZWNrIGZvciBHTElCMgogICAgICBlY2hv Y2hlY2sgIkdMaWIgdmVyc2lvbiIKICAgICAgaWYgJF9wa2dfY29uZmlnIC0tZXhpc3RzIGdsaWIt Mi4wIDsgdGhlbgogICAgICAgIF9nbGliPSQoJF9wa2dfY29uZmlnIC0tbW9kdmVyc2lvbiAiZ2xp Yi0yLjAgPj0gMi42LjAiIDI+JjEpCiAgICAgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCiAgICAg ICAgICBsaWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgJCgkX3BrZ19jb25maWcgLS1saWJzIGds aWItMi4wIDI+L2Rldi9udWxsKSIKICAgICAgICAgIGVjaG9yZXMgIiRfZ2xpYiIKICAgICAgICBl bHNlCiAgICAgICAgICByZXNfY29tbWVudD0idG9vIG9sZCIKICAgICAgICAgIGVjaG9yZXMgIiQo JF9wa2dfY29uZmlnIC0tbW9kdmVyc2lvbiBnbGliLTIuMCAyPi9kZXYvbnVsbCkiCiAgICAgICAg ICBkaWUgIiRfZ2xpYiIKICAgICAgICBmaQoKICAgICAgICBkZWZfZ3VpPScjZGVmaW5lIENPTkZJ R19HVUkgMScKICAgICAgZWxzZQogICAgICAgIGVjaG9yZXMgIm5vIgogICAgICAgIGRpZSAiR0xp YiB2ZXJzaW9uIDIgZGV2ZWwgcGFja2FnZXMgd2VyZSBub3QgZm91bmQgKHJlcXVpcmVkIGZvciBH VUkpLiIKICAgICAgZmkKICAgIGVsc2UKICAgICAgZWNob3JlcyAibm8iCiAgICAgIGRpZSAiR1RL KyB2ZXJzaW9uIDIgZGV2ZWwgcGFja2FnZXMgd2VyZSBub3QgZm91bmQgKHJlcXVpcmVkIGZvciBH VUkpLiIKICAgIGZpCgogIGVsc2UgI2lmICEgd2luMzIKICAgIF9ndWlfd2luMzI9eWVzCiAgICBs aWJzX21wbGF5ZXI9IiRsaWJzX21wbGF5ZXIgLWxjb21kbGczMiAtbGNvbWN0bDMyIC1sc2hlbGwz MiAtbGtlcm5lbDMyIgogICAgZGVmX2d1aT0nI2RlZmluZSBDT05GSUdfR1VJIDEnCiAgZmkgI2lm ICEgd2luMzIKCmVsc2UgI2lmIHRlc3QgIiRfZ3VpIgogIGRlZl9ndWk9JyN1bmRlZiBDT05GSUdf R1VJJwpmaSAjaWYgdGVzdCAiJF9ndWkiCiMgLS0tLS0tLS0tLS0tLS0tIEdVSSBzcGVjaWZpYyB0 ZXN0cyBlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLQoKCmlmIHRlc3QgIiRfY2hhcnNldCIgIT0gIm5v Y29udiIgOyB0aGVuCiAgZGVmX2NoYXJzZXQ9IiNkZWZpbmUgTVNHX0NIQVJTRVQgXCIkX2NoYXJz ZXRcIiIKZWxzZQogIGRlZl9jaGFyc2V0PSIjdW5kZWYgTVNHX0NIQVJTRVQiCiAgX2NoYXJzZXQ9 IlVURi04IgpmaQoKaWYgdGVzdCAtbiAiJF9jaGFyc2V0IiAmJiB0ZXN0ICIkX2NoYXJzZXQiICE9 ICJVVEYtOCIgOyB0aGVuCmVjaG9jaGVjayAiaWNvbnYgcHJvZ3JhbSIKaWNvbnYgLWYgVVRGLTgg LXQgJF9jaGFyc2V0ICR7X21wX2hlbHB9ID4gL2Rldi9udWxsIDI+PiAiJFRNUExPRyIKaWYgdGVz dCAiJD8iIC1uZSAwIDsgdGhlbgogIGVjaG9yZXMgIm5vIgogICAgZWNobyAiTm8gd29ya2luZyBp Y29udiBwcm9ncmFtIGZvdW5kLCB1c2UgIgogICAgZWNobyAiLS1jaGFyc2V0PVVURi04IHRvIGNv bnRpbnVlIGFueXdheS4iCiAgICBlY2hvICJJZiB5b3UgYWxzbyBoYXZlIHByb2JsZW1zIHdpdGgg aWNvbnYgbGlicmFyeSBmdW5jdGlvbnMgdXNlIC0tY2hhcnNldD1ub2NvbnYuIgogICAgZWNobyAi TWVzc2FnZXMgaW4gdGhlIEdUSysgaW50ZXJmYWNlIHdpbGwgYmUgYnJva2VuIHRoZW4uIgogICAg ZXhpdCAxCmVsc2UKICBlY2hvcmVzICJ5ZXMiCmZpCmZpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoK ZWNob2NoZWNrICJhdXRvbWF0aWMgZ2RiIGF0dGFjaCIKaWYgdGVzdCAiJF9jcmFzaF9kZWJ1ZyIg PSB5ZXMgOyB0aGVuCiAgZGVmX2NyYXNoX2RlYnVnPScjZGVmaW5lIENPTkZJR19DUkFTSF9ERUJV RyAxJwplbHNlCiAgZGVmX2NyYXNoX2RlYnVnPScjdW5kZWYgQ09ORklHX0NSQVNIX0RFQlVHJwog IF9jcmFzaF9kZWJ1Zz1ubwpmaQplY2hvcmVzICIkX2NyYXNoX2RlYnVnIgoKZWNob2NoZWNrICJj b21waWxlciBzdXBwb3J0IGZvciBub2V4ZWNzdGFjayIKaWYgY2ZsYWdfY2hlY2sgLVdsLC16LG5v ZXhlY3N0YWNrIDsgdGhlbgogIGV4dHJhX2xkZmxhZ3M9Ii1XbCwteixub2V4ZWNzdGFjayAkZXh0 cmFfbGRmbGFncyIKICBlY2hvcmVzICJ5ZXMiCmVsc2UKICBlY2hvcmVzICJubyIKZmkKCmVjaG9j aGVjayAibGlua2VyIHN1cHBvcnQgZm9yIC0tbnhjb21wYXQgLS1uby1zZWggLS1keW5hbWljYmFz ZSIKaWYgY2ZsYWdfY2hlY2sgIi1XbCwtLW54Y29tcGF0IC1XbCwtLW5vLXNlaCAtV2wsLS1keW5h bWljYmFzZSIgOyB0aGVuCiAgZXh0cmFfbGRmbGFncz0iLVdsLC0tbnhjb21wYXQgLVdsLC0tbm8t c2VoIC1XbCwtLWR5bmFtaWNiYXNlICRleHRyYV9sZGZsYWdzIgogIGVjaG9yZXMgInllcyIKZWxz ZQogIGVjaG9yZXMgIm5vIgpmaQoKZWNob2NoZWNrICJsaW5rZXIgc3VwcG9ydCBmb3IgLS1sYXJn ZS1hZGRyZXNzLWF3YXJlIgppZiBjZmxhZ19jaGVjayAiLVdsLC0tbGFyZ2UtYWRkcmVzcy1hd2Fy ZSIgOyB0aGVuCiAgZXh0cmFfbGRmbGFncz0iLVdsLC0tbGFyZ2UtYWRkcmVzcy1hd2FyZSAkZXh0 cmFfbGRmbGFncyIKICBlY2hvcmVzICJ5ZXMiCmVsc2UKICBlY2hvcmVzICJubyIKZmkKCmVjaG9j aGVjayAibGlua2VyIHN1cHBvcnQgZm9yIC0tdmVyc2lvbi1zY3JpcHQiCmlmIGNmbGFnX2NoZWNr ICItV2wsLS12ZXJzaW9uLXNjcmlwdCxiaW5hcnkudmVyIiA7IHRoZW4KICBleHRyYV9sZGZsYWdz PSItV2wsLS12ZXJzaW9uLXNjcmlwdCxiaW5hcnkudmVyICRleHRyYV9sZGZsYWdzIgogIGVjaG9y ZXMgInllcyIKZWxzZQogIGVjaG9yZXMgIm5vIgpmaQoKCiMgRHluYW1pYyBsaW5raW5nIGZsYWdz CiMgKEZJWE1FOiAnZWNob2NoZWNrICJkeW5hbWljIGxpbmtpbmciJyBhYm92ZSBhbmQgbW9kaWZ5 IGhlcmUgYWNjb3JkaW5nbHkpCmxkX2RsX2R5bmFtaWM9JycKZnJlZWJzZCB8fCBuZXRic2QgfHwg b3BlbmJzZCB8fCBkcmFnb25mbHkgfHwgYnNkb3MgJiYgbGRfZGxfZHluYW1pYz0nLXJkeW5hbWlj JwppZiB0ZXN0ICIkX3JlYWwiID0geWVzIHx8IHRlc3QgIiRfeGFuaW0iID0geWVzICYmICEgd2lu MzIgJiYgISBxbnggJiYgISBkYXJ3aW4gJiYgISBvczIgJiYgISBzdW5vczsgdGhlbgogIGxkX2Rs X2R5bmFtaWM9Jy1yZHluYW1pYycKZmkKCmV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRs ZF9wdGhyZWFkICRsZF9kbCAkbGRfZGxfZHluYW1pYyIKYnNkb3MgJiYgZXh0cmFfbGRmbGFncz0i JGV4dHJhX2xkZmxhZ3MgLWxkdmQiCihuZXRic2QgfHwgb3BlbmJzZCkgJiYgeDg2XzMyICYmIGV4 dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzIC1saTM4NiIKCmRlZl9kZWJ1Zz0nI3VuZGVmIE1Q X0RFQlVHJwp0ZXN0ICIkX2RlYnVnIiAhPSAiIiAmJiBkZWZfZGVidWc9JyNkZWZpbmUgTVBfREVC VUcgMScKCgplY2hvY2hlY2sgImpveXN0aWNrIgpkZWZfam95c3RpY2s9JyN1bmRlZiBDT05GSUdf Sk9ZU1RJQ0snCmlmIHRlc3QgIiRfam95c3RpY2siID0geWVzIDsgdGhlbgogIGlmIGxpbnV4IHx8 IGZyZWVic2QgOyB0aGVuCiAgICAjIFRPRE8gYWRkIHNvbWUgY2hlY2sKICAgIGRlZl9qb3lzdGlj az0nI2RlZmluZSBDT05GSUdfSk9ZU1RJQ0sgMScKICBlbHNlCiAgICBfam95c3RpY2s9Im5vIgog ICAgcmVzX2NvbW1lbnQ9InVuc3VwcG9ydGVkIHVuZGVyICRzeXN0ZW1fbmFtZSIKICBmaQpmaQpl Y2hvcmVzICIkX2pveXN0aWNrIgoKZWNob2NoZWNrICJsaXJjIgppZiB0ZXN0ICIkX2xpcmMiID0g YXV0byA7IHRoZW4KICBfbGlyYz1ubwogIGhlYWRlcl9jaGVjayBsaXJjL2xpcmNfY2xpZW50Lmgg LWxsaXJjX2NsaWVudCAmJiBfbGlyYz15ZXMKZmkKaWYgdGVzdCAiJF9saXJjIiA9IHllcyA7IHRo ZW4KICBkZWZfbGlyYz0nI2RlZmluZSBDT05GSUdfTElSQyAxJwogIGxpYnNfbXBsYXllcj0iJGxp YnNfbXBsYXllciAtbGxpcmNfY2xpZW50IgplbHNlCiAgZGVmX2xpcmM9JyN1bmRlZiBDT05GSUdf TElSQycKZmkKZWNob3JlcyAiJF9saXJjIgoKZWNob2NoZWNrICJsaXJjYyIKaWYgdGVzdCAiJF9s aXJjYyIgPSBhdXRvIDsgdGhlbgogIF9saXJjYz1ubwogIGhlYWRlcl9jaGVjayBsaXJjL2xpcmNj LmggLWxsaXJjYyAmJiBfbGlyY2M9eWVzCmZpCmlmIHRlc3QgIiRfbGlyY2MiID0geWVzIDsgdGhl bgogIGRlZl9saXJjYz0nI2RlZmluZSBDT05GSUdfTElSQ0MgMScKICBsaWJzX21wbGF5ZXI9IiRs aWJzX21wbGF5ZXIgLWxsaXJjYyIKZWxzZQogIGRlZl9saXJjYz0nI3VuZGVmIENPTkZJR19MSVJD QycKZmkKZWNob3JlcyAiJF9saXJjYyIKCmlmIGFybTsgdGhlbgojIERldGVjdCBNYWVtbyBkZXZl bG9wbWVudCBwbGF0Zm9ybSBsaWJyYXJpZXMgYXZhaWxhYmlsaXR5IChodHRwOi8vd3d3Lm1hZW1v Lm9yZyksCiMgdGhleSBhcmUgdXNlZCB3aGVuIHJ1biBvbiBOb2tpYSA3NzB8OHgwCmVjaG9jaGVj ayAibWFlbW8gKE5va2lhIDc3MHw4eDApIgppZiB0ZXN0ICIkX21hZW1vIiA9IGF1dG8gOyB0aGVu CiAgX21hZW1vPW5vCiAgc3RhdGVtZW50X2NoZWNrIGxpYm9zc28uaCAnb3Nzb19pbml0aWFsaXpl KCcnLCAnJywgMCwgTlVMTCknICQoJF9wa2dfY29uZmlnIC0tY2ZsYWdzIC0tbGlicyBsaWJvc3Nv IDI+L2Rldi9udWxsKSAmJiBfbWFlbW89eWVzCmZpCmlmIHRlc3QgIiRfbWFlbW8iID0geWVzIDsg dGhlbgogIGRlZl9tYWVtbz0nI2RlZmluZSBDT05GSUdfTUFFTU8gMScKICBleHRyYV9jZmxhZ3M9 IiRleHRyYV9jZmxhZ3MgJCgkX3BrZ19jb25maWcgLS1jZmxhZ3MgbGlib3NzbykiCiAgZXh0cmFf bGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJCgkX3BrZ19jb25maWcgLS1saWJzIGxpYm9zc28pIC1s WHNwIgplbHNlCiAgZGVmX21hZW1vPScjdW5kZWYgQ09ORklHX01BRU1PJwpmaQplY2hvcmVzICIk X21hZW1vIgpmaQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgT24gT1MvMiBubSBzdXBwb3J0cyBv bmx5IGEub3V0LiBTbyB0aGUgLVpvbWYgY29tcGlsZXIgb3B0aW9uIHRvIGdlbmVyYXRlCiMgdGhl IE9NRiBmb3JtYXQgbmVlZHMgdG8gY29tZSBhZnRlciB0aGUgJ2V4dGVybiBzeW1ib2wgcHJlZml4 JyBjaGVjaywgd2hpY2gKIyB1c2VzIG5tLgppZiBvczIgOyB0aGVuCiAgZXh0cmFfbGRmbGFncz0i JGV4dHJhX2xkZmxhZ3MgLVpvbWYgLVpzdGFjayAxNjM4NCAtWmJpbi1maWxlcyAtWmFyZ3Mtd2ls ZCAtWmhpZ2gtbWVtIgpmaQoKIyBsaW5rZXIgcGF0aHMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBt ZW5jb2RlciBhbmQgbXBsYXllcgpsZF90bXA9IiIKZm9yIEkgaW4gJGxpYnNfbXBsYXllciA7IGRv CiAgX3RtcD0kKGVjaG8gJEkgfCBzZWQgLWUgJ3MvXi1MLiokLy8nKQogIGlmIHRlc3QgLXogIiRf dG1wIiA7IHRoZW4KICAgIGV4dHJhX2xkZmxhZ3M9IiRleHRyYV9sZGZsYWdzICRJIgogIGVsc2UK ICAgIGxkX3RtcD0iJGxkX3RtcCAkSSIKICBmaQpkb25lCmxpYnNfbXBsYXllcj0kbGRfdG1wCgoK IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKCkNGTEFHUz0iJENGTEFHUyAtRF9MQVJHRUZJTEVfU09VUkNF IC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFNjRfU09VUkNFIgoKQ1hYRkxBR1M9 IiAkQ0ZMQUdTIC1EX19TVERDX0NPTlNUQU5UX01BQ1JPUyAtRF9fU1REQ19GT1JNQVRfTUFDUk9T IC1EX19TVERDX0xJTUlUX01BQ1JPUyIKCmVjaG9jaGVjayAiRFZEIHN1cHBvcnQgKGxpYmR2ZG5h dikiCmlmIHRlc3QgIiRfZHZkbmF2IiA9IGF1dG8gOyB0aGVuCiAgX2R2ZG5hdj1ubwogIF9kdmRu YXZkaXI9JCgkX2R2ZG5hdmNvbmZpZyAtLWNmbGFncykKICBfZHZkbmF2bGlicz0kKCRfZHZkbmF2 Y29uZmlnIC0tbGlicykKICBzdGF0ZW1lbnRfY2hlY2tfYnJva2VuIHN0ZGludC5oIGR2ZG5hdi9k dmRuYXYuaCAnZHZkbmF2X3QgKmR2ZCA9IDA7IGR2ZG5hdl9vcGVuKCZkdmQsIDApJyAkX2R2ZG5h dmRpciAkX2R2ZG5hdmxpYnMgJGxkX2RsICRsZF9wdGhyZWFkICYmIF9kdmRuYXY9eWVzCmZpCmlm IHRlc3QgIiRfZHZkbmF2IiA9IHllcyA7IHRoZW4KICBkZWZfZHZkbmF2PScjZGVmaW5lIENPTkZJ R19EVkROQVYgMScKICBleHRyYV9jZmxhZ3M9IiRleHRyYV9jZmxhZ3MgJCgkX2R2ZG5hdmNvbmZp ZyAtLWNmbGFncykiCiAgZXh0cmFfbGRmbGFncz0iJGV4dHJhX2xkZmxhZ3MgJCgkX2R2ZG5hdmNv bmZpZyAtLWxpYnMpIgogIGlucHV0bW9kdWxlcz0iZHZkbmF2ICRpbnB1dG1vZHVsZXMiCmVsc2UK ICBkZWZfZHZkbmF2PScjdW5kZWYgQ09ORklHX0RWRE5BVicKICBub2lucHV0bW9kdWxlcz0iZHZk bmF2ICRub2lucHV0bW9kdWxlcyIKZmkKZWNob3JlcyAiJF9kdmRuYXYiCgpleHRyYV9sZGZsYWdz PSIkZXh0cmFfbGRmbGFncyAkbGlibSIKCiMgRE8gTk9UIEFERCBBTlkgVEVTVFMgVEhBVCBVU0Ug TElOS0VSIEZMQUdTIEhFUkUgKGxpa2UgY2NfY2hlY2spLgojIFJlYWQgZHZkbmF2IGNvbW1lbnQg YWJvdmUuCgoKIyBYTUwgZG9jdW1lbnRhdGlvbiB0ZXN0cwplY2hvY2hlY2sgIlhNTCBjYXRhbG9n cyIKZm9yIHRyeV9jYXRhbG9nIGluIFwKICAvZXRjL3NnbWwvY2F0YWxvZyBcCiAgL3Vzci9zaGFy ZS94bWwvZG9jYm9vay8qL2NhdGFsb2cueG1sIFwKICAvb3B0L2xvY2FsL3NoYXJlL3htbC9kb2Ni b29rLXhtbC8qL2NhdGFsb2cueG1sIFwKICAvb3B0L2xvY2FsL3NoYXJlL3htbC9kb2Nib29rLyov Y2F0YWxvZy54bWwgXAogIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rLyovKmNhdGFsb2cgXAogIC91 c3Ivc2hhcmUvYXBwcy9rc2dtbHRvb2xzMi9jdXN0b21pemF0aW9uL2VuL2NhdGFsb2cgXAogIC91 c3Ivc2hhcmUvc2dtbC9jYXRhbG9nIFwKICAvdXNyL2xvY2FsL3NoYXJlL3NnbWwvY2F0YWxvZyBc CiAgL3Vzci9saWIvc2dtbC9jYXRhbG9nIFwKICAvdXNyL2xvY2FsL2xpYi9zZ21sL2NhdGFsb2cg XAogIC91c3Ivc2hhcmUvZG9jYm9vay14bWw0Mi9jYXRhbG9nLnhtbCBcCiAgL3Vzci9zaGFyZS9z Z21sL2RvY2Jvb2sveG1sY2F0YWxvZzsgZG8KICBpZiB0ZXN0IC1mICIkdHJ5X2NhdGFsb2ciOyB0 aGVuCiAgICBjYXRhbG9nPSR0cnlfY2F0YWxvZwogICAgYnJlYWsKICBmaQpkb25lCgppZiB0ZXN0 IC1uICIkY2F0YWxvZyI7IHRoZW4KICBlY2hvcmVzICJTR01MIGNhdGFsb2ciCiAgY2F0YWxvZ19v cHRzPS0tY2F0YWxvZ3MKZWxzZQogIGVjaG9yZXMgIk5vIFNHTUwgY2F0YWxvZyBmb3VuZC4iCmZp CgplY2hvY2hlY2sgIlhNTCBjaHVua2VkIHN0eWxlc2hlZXQiCmZvciB0cnlfY2h1bmtfeHNsIGlu IFwKICAvdXNyL3NoYXJlL3htbC9kb2Nib29rLyovaHRtbC9jaHVuay54c2wgXAogIC91c3Ivc2hh cmUvc2dtbC9kb2Nib29rL3N0eWxlc2hlZXQveHNsL253YWxzaC9odG1sL2NodW5rLnhzbCBcCiAg L3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2sveWVscC9kb2Nib29rL2h0bWwvY2h1bmsueHNsIFwKICAv dXNyL2xvY2FsL3NoYXJlL3NnbWwvZG9jYm9vay9zdHlsZXNoZWV0L3hzbC9ud2Fsc2gvaHRtbC9j aHVuay54c2wgXAogIC91c3IvbG9jYWwvc2hhcmUvc2dtbC9kb2Nib29rL3llbHAvZG9jYm9vay9o dG1sL2NodW5rLnhzbCBcCiAgL3Vzci9zaGFyZS9kb2Nib29rLXhzbC9odG1sL2NodW5rLnhzbCBc CiAgL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzKi9odG1sL2NodW5rLnhz bCBcCiAgL3Vzci9zaGFyZS94bWwvZG9jYm9vay9zdHlsZXNoZWV0L253YWxzaC9jdXJyZW50L2h0 bWwvY2h1bmsueHNsIFwKICAvb3B0L2xvY2FsL3NoYXJlL3hzbC9kb2Nib29rLXhzbC9odG1sL2No dW5rLnhzbDsgZG8KICBpZiB0ZXN0IC1mICIkdHJ5X2NodW5rX3hzbCI7IHRoZW4KICAgIGNodW5r X3hzbD0kdHJ5X2NodW5rX3hzbAogICAgYnJlYWsKICBmaQpkb25lCgppZiB0ZXN0IC16ICIkY2h1 bmtfeHNsIjsgdGhlbgogIGNodW5rX3hzbD0vdXNyL3NoYXJlL3NnbWwvZG9jYm9vay9zdHlsZXNo ZWV0L3hzbC9ud2Fsc2gvaHRtbC9jaHVuay54c2wKICBlY2hvcmVzICJub3QgZm91bmQsIHVzaW5n IGRlZmF1bHQiCiAgZmFrZV9jaHVua194c2w9eWVzCmVsc2UKICBlY2hvcmVzICJjaHVuay54c2wi CmZpCgplY2hvY2hlY2sgIlhNTCBtb25vbGl0aGljIHN0eWxlc2hlZXQiCmZvciB0cnlfZG9jYm9v a194c2wgaW4gXAogIC91c3Ivc2hhcmUveG1sL2RvY2Jvb2svKi9odG1sL2RvY2Jvb2sueHNsIFwK ICAvdXNyL3NoYXJlL3NnbWwvZG9jYm9vay9zdHlsZXNoZWV0L3hzbC9ud2Fsc2gvaHRtbC9kb2Ni b29rLnhzbCBcCiAgL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2sveWVscC9kb2Nib29rL2h0bWwvZG9j Ym9vay54c2wgXAogIC91c3IvbG9jYWwvc2hhcmUvc2dtbC9kb2Nib29rL3N0eWxlc2hlZXQveHNs L253YWxzaC9odG1sL2RvY2Jvb2sueHNsIFwKICAvdXNyL2xvY2FsL3NoYXJlL3NnbWwvZG9jYm9v ay95ZWxwL2RvY2Jvb2svaHRtbC9kb2Nib29rLnhzbCBcCiAgL3Vzci9zaGFyZS9kb2Nib29rLXhz bC9odG1sL2RvY2Jvb2sueHNsIFwKICAvdXNyL3NoYXJlL3NnbWwvZG9jYm9vay94c2wtc3R5bGVz aGVldHMqL2h0bWwvZG9jYm9vay54c2wgXAogIC91c3Ivc2hhcmUveG1sL2RvY2Jvb2svc3R5bGVz aGVldC9ud2Fsc2gvY3VycmVudC9odG1sL2RvY2Jvb2sueHNsIFwKICAvb3B0L2xvY2FsL3NoYXJl L3hzbC9kb2Nib29rLXhzbC9odG1sL2RvY2Jvb2sueHNsOyBkbwogIGlmIHRlc3QgLWYgIiR0cnlf ZG9jYm9va194c2wiOyB0aGVuCiAgICBkb2Nib29rX3hzbD0kdHJ5X2RvY2Jvb2tfeHNsCiAgICBi cmVhawogIGZpCmRvbmUKCmlmIHRlc3QgLXogIiRkb2Nib29rX3hzbCI7IHRoZW4KICBkb2Nib29r X3hzbD0vdXNyL3NoYXJlL3NnbWwvZG9jYm9vay9zdHlsZXNoZWV0L3hzbC9ud2Fsc2gvaHRtbC9k b2Nib29rLnhzbAogIGVjaG9yZXMgIm5vdCBmb3VuZCwgdXNpbmcgZGVmYXVsdCIKZWxzZQogIGVj aG9yZXMgImRvY2Jvb2sueHNsIgpmaQoKY2F0ID4gRE9DUy94bWwvaHRtbC1jaHVuay54c2wgPDwg RU9GCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CjwhLS0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICBUaGlzIGZpbGUg aXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIERPIE5PVCBFRElULgogICAgICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgo8eHNsOnN0eWxlc2hl ZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCiAgICAg ICAgICAgICAgICB2ZXJzaW9uPSIxLjAiPgoKICA8eHNsOmltcG9ydCBocmVmPSIkY2h1bmtfeHNs Ii8+CiAgPHhzbDppbmNsdWRlIGhyZWY9Imh0bWwtY29tbW9uLnhzbCIvPgoKPC94c2w6c3R5bGVz aGVldD4KRU9GCgpjYXQgPiBET0NTL3htbC9odG1sLXNpbmdsZS54c2wgPDwgRU9GCjw/eG1sIHZl cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CjwhLS0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk IGF1dG9tYXRpY2FsbHkuIERPIE5PVCBFRElULgogICAgICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgo8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNs PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCiAgICAgICAgICAgICAgICB2 ZXJzaW9uPSIxLjAiPgoKICA8eHNsOmltcG9ydCBocmVmPSIkZG9jYm9va194c2wiLz4KICA8eHNs OmluY2x1ZGUgaHJlZj0iaHRtbC1jb21tb24ueHNsIi8+Cgo8L3hzbDpzdHlsZXNoZWV0PgpFT0YK CmVjaG9jaGVjayAiWE1MIERURCIKI0ZJWE1FOiBUaGlzIHNob3VsZCBwcmVmZXIgaGlnaGVyIHZl cnNpb24gbnVtYmVycywgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kIC4uCmZvciB0cnlfZHRkIGlu IFwKICAvdXNyL3NoYXJlL3htbC9kb2Nib29rLyovZHRkLzQqL2RvY2Jvb2t4LmR0ZCBcCiAgL3Vz ci9zaGFyZS94bWwvZG9jYm9vay8qL2RvY2Jvb2t4LmR0ZCBcCiAgL3Vzci9zaGFyZS9zZ21sL2Rv Y2Jvb2svKi9kb2Nib29reC5kdGQgXAogIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL2R0ZC8qL2Rv Y2Jvb2t4LmR0ZCBcCiAgL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svZHRkL3htbC8qL2RvY2Jvb2t4 LmR0ZCBcCiAgL3Vzci9zaGFyZS9kb2Nib29rLXhtbCovZG9jYm9va3guZHRkIFwKICAvb3B0L2xv Y2FsL3NoYXJlL3htbC9kb2Nib29rKi8qL2RvY2Jvb2t4LmR0ZCBcCiAgL3Vzci9zaGFyZS9hcHBz L2tzZ21sdG9vbHMyL2RvY2Jvb2svKi9kb2Nib29reC5kdGQ7IGRvCiAgaWYgdGVzdCAtZiAiJHRy eV9kdGQiOyB0aGVuCiAgICBkdGQ9JHRyeV9kdGQKICAgIGJyZWFrCiAgZmkKZG9uZQoKaWYgdGVz dCAteiAiJGR0ZCI7IHRoZW4KICBkdGQ9L3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svZHRkL3htbC80 LjEuMi9kb2Nib29reC5kdGQKICBlY2hvcmVzICJub3QgZm91bmQsIHVzaW5nIGRlZmF1bHQiCmVs c2UKICBlY2hvcmVzICJkb2Nib29reC5kdGQiCmZpCgpmb3IgbGFuZyBpbiAkbGFuZ3VhZ2VfZG9j OyBkbwogIGNhdCA+IERPQ1MveG1sLyRsYW5nL21haW4ueG1sIDw8IEVPRgo8P3htbCB2ZXJzaW9u PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KPCEtLSAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgIFRoaXMgZmlsZSBp cyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4gRE8gTk9UIEVESVQuCiAgICAgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CjwhRE9DVFlQRSBib29r IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgogICAgIiRkdGQi ClsKPCFFTlRJVFkgYnVncmVwb3J0cy54bWwgU1lTVEVNICJidWdyZXBvcnRzLnhtbCI+CjwhRU5U SVRZIGRvY3VtZW50YXRpb24ueG1sIFNZU1RFTSAiZG9jdW1lbnRhdGlvbi54bWwiPgo8IUVOVElU WSBlbmNvZGluZy1ndWlkZS54bWwgU1lTVEVNICJlbmNvZGluZy1ndWlkZS54bWwiPgo8IUVOVElU WSBmYXEueG1sIFNZU1RFTSAiZmFxLnhtbCI+CjwhRU5USVRZIGluc3RhbGwueG1sIFNZU1RFTSAi aW5zdGFsbC54bWwiPgo8IUVOVElUWSBtZW5jb2Rlci54bWwgU1lTVEVNICJtZW5jb2Rlci54bWwi Pgo8IUVOVElUWSBwb3J0cy54bWwgU1lTVEVNICJwb3J0cy54bWwiPgo8IUVOVElUWSBza2luLnht bCBTWVNURU0gInNraW4ueG1sIj4KPCFFTlRJVFkgdXNhZ2UueG1sIFNZU1RFTSAidXNhZ2UueG1s Ij4KPCFFTlRJVFkgdmlkZW8ueG1sIFNZU1RFTSAidmlkZW8ueG1sIj4KXT4KPGJvb2sgaWQ9Imlu ZGV4IiBsYW5nPSIkbGFuZyI+CiZkb2N1bWVudGF0aW9uLnhtbDsKJmluc3RhbGwueG1sOwomdXNh Z2UueG1sOwomdmlkZW8ueG1sOwomcG9ydHMueG1sOwombWVuY29kZXIueG1sOwomZW5jb2Rpbmct Z3VpZGUueG1sOwomZmFxLnhtbDsKJmJ1Z3JlcG9ydHMueG1sOwomc2tpbi54bWw7CjwvYm9vaz4K RU9GCgpkb25lCgplY2hvY2hlY2sgInZhbGlkIFhTTFQgcHJvY2Vzc29yIgppZiB4c2x0cHJvYyAt LXZlcnNpb24gPiAvZGV2L251bGwgMj4mMTsgdGhlbgogIGlmIHRlc3QgLXogIiRmYWtlX2NodW5r X3hzbCI7IHRoZW4KICAgIGVjaG9yZXMgInhzbHRwcm9jIgogICAgeHNsdGNvbW1hbmQ9InhzbHRw cm9jICRjYXRhbG9nX29wdHMgLW8iCiAgZWxzZQogICAgZWNob3JlcyAiRm91bmQgeHNsdHByb2Mg YnV0IG5vIHN0eWxlc2hlZXRzIG9uIHlvdXIgc3lzdGVtLiIKICAgIGVjaG9yZXMgInhzbHRwcm9j IGlzIHVudXNhYmxlIHdpdGhvdXQgc3R5bGVzaGVldHMuIgogIGZpCmVsc2UKICBlY2hvcmVzICJ4 c2x0cHJvYyBub3QgZm91bmQiCmZpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKbWFrX2VuYWJsZSAo KSB7Cmxpc3Q9JChlY2hvICQxIHwgdG91cHBlcikKaXRlbT0kKGVjaG8gJDIgfCB0b3VwcGVyKQpu cHJlZml4PSQzOwpmb3IgcGFydCBpbiAkbGlzdDsgZG8KICBpZiAkKGVjaG8gJGl0ZW0gfCBncmVw IC1xIC1FICIoXnwgKSRwYXJ0KCR8ICkiKTsgdGhlbgogICAgZWNobyAiJHtucHJlZml4fV8kcGFy dCA9IHllcyIKICBlbHNlCiAgICBlY2hvICIke25wcmVmaXh9XyRwYXJ0ID0gbm8iCiAgZmkKZG9u ZQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwplY2hvICJDcmVhdGluZyBjb25maWcubWFrIgpjYXQg PiBjb25maWcubWFrIDw8IEVPRgojIC0tLS0tLS0tIEdlbmVyYXRlZCBieSBjb25maWd1cmUgLS0t LS0tLS0tLS0KCiMgRW5zdXJlIHRoYXQgbG9jYWxlIHNldHRpbmdzIGRvIG5vdCBpbnRlcmZlcmUg d2l0aCBzaGVsbCBjb21tYW5kcy4KZXhwb3J0IExDX0FMTCA9IEMKCkNPTkZJR1VSQVRJT04gPSAk Y29uZmlndXJhdGlvbgoKQ0hBUlNFVCA9ICRfY2hhcnNldApET0NfTEFOR1MgPSAkbGFuZ3VhZ2Vf ZG9jCkRPQ19MQU5HX0FMTCA9ICRkb2NfbGFuZ19hbGwKTUFOX0xBTkdTID0gJGxhbmd1YWdlX21h bgpNQU5fTEFOR19BTEwgPSAkbWFuX2xhbmdfYWxsCgpDQVRBTE9HID0gJGNhdGFsb2cKWE1MTElO VF9DT01NQU5EID0geG1sbGludCAtLW5vb3V0IC0tbm9lbnQgLS1wb3N0dmFsaWQgJGNhdGFsb2df b3B0cwpYU0xUX0NPTU1BTkQgPSAkeHNsdGNvbW1hbmQKCnByZWZpeCAgPSBcJChERVNURElSKSRf cHJlZml4CkJJTkRJUiAgPSBcJChERVNURElSKSRfYmluZGlyCkRBVEFESVIgPSBcJChERVNURElS KSRfZGF0YWRpcgpMSUJESVIgID0gXCQoREVTVERJUikkX2xpYmRpcgpNQU5ESVIgID0gXCQoREVT VERJUikkX21hbmRpcgpDT05GRElSID0gXCQoREVTVERJUikkX2NvbmZkaXIKCkFSICAgICAgPSAk X2FyCkFSRkxBR1MgPSByYwpBUl9PICAgID0gXCRACkFTICAgICAgPSAkX2NjCkNDICAgICAgPSAk X2NjCkNYWCAgICAgPSAkX2NjCkhPU1RfQ0MgPSAkX2hvc3RfY2MKSU5TVEFMTCA9ICRfaW5zdGFs bApJTlNUQUxMU1RSSVAgPSAkX2luc3RhbGxfc3RyaXAKV0lORFJFUyA9ICRfd2luZHJlcwoKQ0ZM QUdTICAgPSAkV0FSTkZMQUdTICRXQVJOX0NGTEFHUyAkQ0ZMQUdTICRleHRyYV9jZmxhZ3MKQ1hY RkxBR1MgPSAkV0FSTkZMQUdTICRDWFhGTEFHUyAkZXh0cmFfY2ZsYWdzICRleHRyYV9jeHhmbGFn cwpDQ19ERVBGTEFHUyA9ICRERVBGTEFHUwoKQ0ZMQUdTX0RIQUhFTFBFUiAgICAgICAgID0gJGNm bGFnc19kaGFoZWxwZXIKQ0ZMQUdTX05PX09NSVRfTEVBRl9GUkFNRV9QT0lOVEVSID0gJGNmbGFn c19ub19vbWl0X2xlYWZfZnJhbWVfcG9pbnRlcgpDRkxBR1NfU1RBQ0tSRUFMSUdOICAgICAgPSAk Y2ZsYWdzX3N0YWNrcmVhbGlnbgpDRkxBR1NfU1ZHQUxJQl9IRUxQRVIgICAgPSAkY2ZsYWdzX3N2 Z2FsaWJfaGVscGVyCgpFWFRSQUxJQlMgICAgICAgICAgPSAkbGRfc3RhdGljICRleHRyYV9sZGZs YWdzICR0aW1lcl9saWJzICRleHRyYV9saWJzCkVYVFJBTElCU19NUExBWUVSICA9ICRsaWJzX21w bGF5ZXIKRVhUUkFMSUJTX01FTkNPREVSID0gJGxpYnNfbWVuY29kZXIKCk1QX01TR19MSUJTID0g JGxkX2ljb252ICRsZF90ZXJtY2FwICR0aW1lcl9saWJzCgpHRVRDSCA9ICRfZ2V0Y2gKSEVMUF9G SUxFID0gJF9tcF9oZWxwClRJTUVSID0gJF90aW1lcgoKRVhFU1VGICAgICAgPSAkX2V4ZXN1ZgpF WEVTVUZTX0FMTCA9IC5leGUKCkFSQ0ggPSAkYXJjaAokKG1ha19lbmFibGUgIiRhcmNoX2FsbCIg ICAgIiRhcmNoIiAgICBBUkNIKQokKG1ha19lbmFibGUgIiRzdWJhcmNoX2FsbCIgIiRzdWJhcmNo IiBBUkNIKQokKG1ha19lbmFibGUgIiRjcHVleHRzX2FsbCIgIiRjcHVleHRzIiBIQVZFKQoKTUVO Q09ERVIgPSAkX21lbmNvZGVyCk1QTEFZRVIgID0gJF9tcGxheWVyCgojIG9wZXJhdGluZyBzeXN0 ZW0gZmVhdHVyZXMgd2hpY2ggaGF2ZSBsb2NhbCBmYWxsYmFja3MKR0VUVElNRU9GREFZID0gJGdl dHRpbWVvZmRheQpHTE9CICAgICAgICAgPSAkZ2xvYgpHTE9CX1dJTiAgICAgPSAkZ2xvYl93aW4K TU1BUCAgICAgICAgID0gJG1tYXAKU0VURU5WICAgICAgID0gJHNldGVudgpTSE1FTSAgICAgICAg PSAkc2htZW0KU1RSU0VQICAgICAgID0gJHN0cnNlcApWU1NDQU5GICAgICAgPSAkdnNzY2FuZgoK IyBmZWF0dXJlcwozREZYID0gJF8zZGZ4CkFBID0gJF9hYQpBTFNBID0gJF9hbHNhCkFQUExFX0lS ID0gJF9hcHBsZV9pcgpBUFBMRV9SRU1PVEUgPSAkX2FwcGxlX3JlbW90ZQpBUlRTID0gJF9hcnRz CkFVRElPX0lOUFVUID0gJF9hdWRpb19pbnB1dApCSVRNQVBfRk9OVCA9ICRfYml0bWFwX2ZvbnQK QkwgPSAkX2JsCkNBQ0EgPSAkX2NhY2EKQ0REQSA9ICRfY2RkYQpDRERCID0gJF9jZGRiCkNPUkVB VURJTyA9ICRfY29yZWF1ZGlvCkNPUkVWSURFTyA9ICRfY29yZXZpZGVvCkRBUlQgPSAkX2RhcnQK REdBID0gJF9kZ2EKRElSRUNUM0QgPSAkX2RpcmVjdDNkCkRJUkVDVEZCID0gJF9kaXJlY3RmYgpE SVJFQ1RYID0gJF9kaXJlY3R4CkRWQklOID0gJF9kdmJpbgpEVkROQVYgPSAkX2R2ZG5hdgpEVkRS RUFEID0gJF9kdmRyZWFkCkRYUjIgPSAkX2R4cjIKRFhSMyA9ICRfZHhyMwpFU0QgPSAkX2VzZApG QUFDPSRfZmFhYwpGQUFEID0gJF9mYWFkCkZBU1RNRU1DUFkgPSAkX2Zhc3RtZW1jcHkKRkJERVYg PSAkX2ZiZGV2CkZSRUVUWVBFID0gJF9mcmVldHlwZQpGVFAgPSAkX2Z0cApHSUYgPSAkX2dpZgpH R0kgPSAkX2dnaQpHTCA9ICRfZ2wKR0xfV0lOMzIgPSAkX2dsX3dpbjMyCkdMX1gxMSA9ICRfZ2xf eDExCkdMX0VHTF9YMTEgPSAkX2dsX2VnbF94MTEKR0xfU0RMID0gJF9nbF9zZGwKR0xfT1NYID0g JF9nbF9vc3gKTUFUUklYVklFVyA9ICRtYXRyaXh2aWV3CkdVSSA9ICRfZ3VpCkdVSV9HVEsgPSAk X2d1aV9ndGsKR1VJX1dJTjMyID0gJF9ndWlfd2luMzIKSEFWRV9QT1NJWF9TRUxFQ1QgPSAkX3Bv c2l4X3NlbGVjdApIQVZFX1NZU19NTUFOX0ggPSAkX21tYW4KSEFWRV9XSU5ET1dTX0ggPSAkd2lu ZG93c19oCklWVFYgPSAkX2l2dHYKSkFDSyA9ICRfamFjawpKT1lTVElDSyA9ICRfam95c3RpY2sK SlBFRyA9ICRfanBlZwpLQUkgPSAkX2thaQpLVkEgPSAkX2t2YQpMQURTUEEgPSAkX2xhZHNwYQpM SUJBNTIgPSAkX2xpYmE1MgpMSUJBU1MgPSAkX2FzcwpMSUJBU1NfSU5URVJOQUwgPSAkYXNzX2lu dGVybmFsCkxJQkJMVVJBWSA9ICRfYmx1cmF5CkxJQkJTMkIgPSAkX2xpYmJzMmIKTElCRENBID0g JF9saWJkY2EKTElCRFYgPSAkX2xpYmR2CkxJQkxaTyA9ICRfbGlibHpvCkxJQk1BRCA9ICRfbWFk CkxJQk1FTlUgPSAkX21lbnUKTElCTUVOVV9EVkJJTiA9ICRfbWVudV9kdmJpbgpMSUJNUEVHMiA9 ICRfbGlibXBlZzIKTElCTVBFRzJfSU5URVJOQUwgPSAkX2xpYm1wZWcyX2ludGVybmFsCkxJQk5F TUVTSSA9ICRfbmVtZXNpCkxJQk5VVCA9ICRfbGlibnV0CkxJQlNNQkNMSUVOVCA9ICRfc21iCkxJ QlRIRU9SQSA9ICRfdGhlb3JhCkxJUkMgPSAkX2xpcmMKTElWRTU1NSA9ICRfbGl2ZQpNQUNPU1hf RklOREVSID0gJF9tYWNvc3hfZmluZGVyCk1ENVNVTSA9ICRfbWQ1c3VtCk1HQSA9ICRfbWdhCk1O RyA9ICRfbW5nCk1QM0xBTUUgPSAkX21wM2xhbWUKTVBHMTIzID0gJF9tcGcxMjMKTVVTRVBBQ0sg PSAkX211c2VwYWNrCk5BUyA9ICRfbmFzCk5BVElWRV9SVFNQID0gJF9uYXRpdmVfcnRzcApORVRX T1JLSU5HID0gJG5ldHdvcmtpbmcKT1BFTkFMID0gJF9vcGVuYWwKT1NTID0gJF9vc3NhdWRpbwpQ RV9FWEVDVVRBQkxFID0gJF9wZV9leGVjdXRhYmxlClBORyA9ICRfcG5nClBOTSA9ICRfcG5tClBP U1RQUk9DID0gJHBvc3Rwcm9jClBSSU9SSVRZID0gJF9wcmlvcml0eQpQVUxTRSA9ICRfcHVsc2UK UFZSID0gJF9wdnIKUVRYX0NPREVDUyA9ICRfcXR4ClFUWF9DT0RFQ1NfV0lOMzIgPSAkX3F0eF9j b2RlY3Nfd2luMzIKUVRYX0VNVUxBVElPTiA9ICRfcXR4X2VtdWxhdGlvbgpRVUFSVFogPSAkX3F1 YXJ0egpSQURJTz0kX3JhZGlvClJBRElPX0NBUFRVUkU9JF9yYWRpb19jYXB0dXJlClJFQUxfQ09E RUNTID0gJF9yZWFsClMzRkIgPSAkX3MzZmIKU0RMID0gJF9zZGwKU0RMX0lNQUdFID0gJHNkbF9p bWFnZQpTUEVFWCA9ICRfc3BlZXgKU1RSRUFNX0NBQ0hFID0gJF9zdHJlYW1fY2FjaGUKU0dJQVVE SU8gPSAkX3NnaWF1ZGlvClNORElPID0gJF9zbmRpbwpTVU5BVURJTyA9ICRfc3VuYXVkaW8KU1ZH QSA9ICRfc3ZnYQpUREZYRkIgPSAkX3RkZnhmYgpUREZYVklEID0gJF90ZGZ4dmlkClRHQSA9ICRf dGdhClRPT0xBTUU9JF90b29sYW1lClRWID0gJF90dgpUVl9CU0RCVDg0OCA9ICRfdHZfYnNkYnQ4 NDgKVFZfRFNIT1cgPSAkX3R2X2RzaG93ClRWX1Y0TCAgPSAkX3R2X3Y0bApUVl9WNEwxID0gJF90 dl92NGwxClRWX1Y0TDIgPSAkX3R2X3Y0bDIKVFdPTEFNRT0kX3R3b2xhbWUKVU5SQVJfRVhFQyA9 ICRfdW5yYXJfZXhlYwpWNEwyID0gJF92NGwyClZDRCA9ICRfdmNkClZEQSA9ICRfdmRhClZEUEFV ID0gJF92ZHBhdQpWRVNBID0gJF92ZXNhClZJRElYID0gJF92aWRpeApWSURJWF9QQ0lEQiA9ICRf dmlkaXhfcGNpZGJfdmFsClZJRElYX0NZQkVSQkxBREU9JF92aWRpeF9kcnZfY3liZXJibGFkZQpW SURJWF9JVlRWPSRfdmlkaXhfZHJ2X2l2dHYKVklESVhfTUFDSDY0PSRfdmlkaXhfZHJ2X21hY2g2 NApWSURJWF9NR0E9JF92aWRpeF9kcnZfbWdhClZJRElYX01HQV9DUlRDMj0kX3ZpZGl4X2Rydl9t Z2FfY3J0YzIKVklESVhfTlZJRElBPSRfdmlkaXhfZHJ2X252aWRpYQpWSURJWF9QTTI9JF92aWRp eF9kcnZfcG0yClZJRElYX1BNMz0kX3ZpZGl4X2Rydl9wbTMKVklESVhfUkFERU9OPSRfdmlkaXhf ZHJ2X3JhZGVvbgpWSURJWF9SQUdFMTI4PSRfdmlkaXhfZHJ2X3JhZ2UxMjgKVklESVhfUzM9JF92 aWRpeF9kcnZfczMKVklESVhfU0hfVkVVPSRfdmlkaXhfZHJ2X3NoX3ZldQpWSURJWF9TSVM9JF92 aWRpeF9kcnZfc2lzClZJRElYX1VOSUNIUk9NRT0kX3ZpZGl4X2Rydl91bmljaHJvbWUKVk9SQklT ID0gJF92b3JiaXMKVlNUUkVBTSA9ICRfdnN0cmVhbQpXSUkgPSAkX3dpaQpXSU4zMkRMTCA9ICRf d2luMzJkbGwKV0lOMzJXQVZFT1VUID0gJF93aW4zMndhdmVvdXQKV0lOMzJfRU1VTEFUSU9OID0g JF93aW4zMl9lbXVsYXRpb24KV0lOVklESVggPSAkd2ludmlkaXgKWDExID0gJF94MTEKWDI2NCA9 ICRfeDI2NApYQU5JTV9DT0RFQ1MgPSAkX3hhbmltClhNR0EgPSAkX3htZ2EKWE1NU19QTFVHSU5T ID0gJF94bW1zClhWID0gJF94dgpYVklENCA9ICRfeHZpZApYVklESVggPSAkeHZpZGl4ClhWTUMg PSAkX3h2bWMKWFZSMTAwID0gJF94dnIxMDAKWVVWNE1QRUcgPSAkX3l1djRtcGVnClpSID0gJF96 cgoKIyBGRm1wZWcKRkZNUEVHICAgICA9ICRmZm1wZWcKRkZNUEVHX0EgICA9ICRmZm1wZWdfYQoK Q09ORklHX0FWQ09ERUMgID0gJGZmbXBlZ19hCkNPTkZJR19BVkRFVklDRSA9ICRmZm1wZWdfYQpD T05GSUdfQVZGSUxURVIgPSAkZmZtcGVnX2EKQ09ORklHX0FWRk9STUFUID0gJGZmbXBlZ19hCkNP TkZJR19BVlVUSUwgICA9ICRmZm1wZWdfYQpDT05GSUdfUE9TVFBST0MgPSAkZmZtcGVnX2EKQ09O RklHX1NXU0NBTEUgID0gJGZmbXBlZ19hCkNPTkZJR19TV1JFU0FNUExFID0gJGZmbXBlZ19hCgpB U0ZMQUdTICAgID0gXCQoQ0ZMQUdTKQpBU19ERVBGTEFHUz0gJERFUEZMQUdTCkhPU1RDQyAgICAg PSBcJChIT1NUX0NDKQpIT1NUQ0ZMQUdTID0gJEhPU1RDRkxBR1MKSE9TVExJQlMgICA9ICRsaWJt CkFTX08gICAgICAgPSAtbyBcJEAKQ0NfTyAgICAgICA9IC1vIFwkQApDWFhfTyAgICAgID0gLW8g XCRACkFTX0MgICAgICAgPSAtYwpDQ19DICAgICAgID0gLWMKQ1hYX0MgICAgICA9IC1jCkxEICAg ICAgICAgPSBnY2MKUkFOTElCICAgICA9ICRfcmFubGliCllBU00gICAgICAgPSAkX3lhc20KREVQ WUFTTSAgICA9ICRfeWFzbQpZQVNNRkxBR1MgID0gJFlBU01GTEFHUwpTVFJJUCAgICAgID0gc3Ry aXAKCkNPTkZJR19GRlBST0JFICAgICAgID0gbm8KQ09ORklHX0xBVkZJX0lOREVWICAgPSBubwpD T05GSUdfQU1PVklFX0ZJTFRFUiA9IG5vCkNPTkZJR19NT1ZJRV9GSUxURVIgID0gbm8KQ09ORklH X1NDQUxFX0ZJTFRFUiAgPSBubwpDT05GSUdfU0VMRUNUX0ZJTFRFUiA9IG5vCgpDT05GSUdfU1RB VElDID0geWVzClNSQ19QQVRIICAgICAgPSAuCkxJQlBSRUYgICAgICAgPSBsaWIKTElCU1VGICAg ICAgICA9IC5hCkZVTExOQU1FICAgICAgPSBcJChOQU1FKVwkKEJVSUxEU1VGKQpMSUJOQU1FICAg ICAgID0gXCQoTElCUFJFRilcJChGVUxMTkFNRSlcJChMSUJTVUYpCgojIFRoZXNlIGFyZSBub3Qg bmVjZXNzYXJ5IGZvciBidWlsZGluZywgc2luY2Ugd2UgZG8gbm90IHVzZSBzaGFyZWQgbGlicmFy aWVzLAojIGJ1dCB3aXRob3V0IHRoZW0gdGFyZ2V0IG5hbWVzIGNsYXNoLCBjYXVzaW5nIE1ha2Ug d2FybmluZ3MgYnkgdGhlIGJvYXRsb2FkLgpTTElCTkFNRSAgICAgICAgICAgID0gXCQoU0xJQlBS RUYpXCQoRlVMTE5BTUUpXCQoU0xJQlNVRikKU0xJQk5BTUVfV0lUSF9NQUpPUiA9IFwkKFNMSUJO QU1FKS00MgoKIyBTb21lIEZGbXBlZyBjb2RlY3MgZGVwZW5kIG9uIHRoZXNlLiBFbmFibGUgdGhl bSB1bmNvbmRpdGlvbmFsbHkgZm9yIG5vdy4KQ09ORklHX0FBTkRDVFRBQkxFUyAgPSB5ZXMKQ09O RklHX0FVRElPRFNQID0geWVzCkNPTkZJR19BVURJT19GUkFNRV9RVUVVRSA9IHllcwpDT05GSUdf QkxPQ0tEU1A9IHllcwpDT05GSUdfQlNXQVBEU1A9IHllcwpDT05GSUdfQ0FCQUMgICA9IHllcwpD T05GSUdfRENUICAgICA9IHllcwpDT05GSUdfRFdUICAgICA9IHllcwpDT05GSUdfRVJST1JfUkVT SUxJRU5DRSA9IHllcwpDT05GSUdfRVhJRiAgICA9IHllcwpDT05GSUdfRkFBTkRDVCA9IHllcwpD T05GSUdfRkFBTklEQ1Q9IHllcwpDT05GSUdfRkRDVERTUCA9IHllcwpDT05GSUdfRkxBQ0RTUCA9 IHllcwpDT05GSUdfRk1UQ09OVkVSVCA9IHllcwpDT05GSUdfRlJBTUVfVEhSRUFEX0VOQ09ERVIg PSB5ZXMKQ09ORklHX0ZGVCAgICAgPSB5ZXMKQ09ORklHX0c3MjJEU1AgPSB5ZXMKQ09ORklHX0dP TE9NQiAgPSB5ZXMKQ09ORklHX0gyNjNEU1AgPSB5ZXMKQ09ORklHX0gyNjRDSFJPTUEgPSB5ZXMK Q09ORklHX0gyNjREU1AgPSB5ZXMKQ09ORklHX0gyNjRQUkVEPSB5ZXMKQ09ORklHX0gyNjRRUEVM PSB5ZXMKQ09ORklHX0hQRUxEU1AgPSB5ZXMKQ09ORklHX0lJUkZJTFRFUiA9IHllcwpDT05GSUdf SVZJRFNQID0geWVzCkNPTkZJR19KUEVHVEFCTEVTID0geWVzCkNPTkZJR19RUEVMRFNQID0geWVz CkNPTkZJR19RU1YgICAgID0gbm8KQ09ORklHX0hVRkZZVVZEU1AgPSB5ZXMKQ09ORklHX0hVRkZZ VVZFTkNEU1AgPSB5ZXMKQ09ORklHX0lEQ1REU1AgPSB5ZXMKQ09ORklHX1RQRUxEU1AgPSB5ZXMK Q09ORklHX0hVRkZNQU4gPSB5ZXMKQ09ORklHX0lNRENUMTUgPSB5ZXMKQ09ORklHX0lOVFJBWDgg PSB5ZXMKQ09ORklHX0xMQVVERFNQPSB5ZXMKQ09ORklHX0xMVklERFNQPSB5ZXMKQ09ORklHX0xQ QyAgICAgPSB5ZXMKQ09ORklHX0xTUCAgICAgPSB5ZXMKQ09ORklHX0xaTyAgICAgPSB5ZXMKQ09O RklHX01EQ1QgICAgPSB5ZXMKQ09ORklHX01FX0NNUCAgPSB5ZXMKQ09ORklHX01QRUdfRVIgPSB5 ZXMKQ09ORklHX01QRUdBVURJT0RTUCA9IHllcwpDT05GSUdfTVBFR1ZJREVPICAgID0geWVzCkNP TkZJR19NUEVHVklERU9FTkMgPSB5ZXMKQ09ORklHX01TUzM0RFNQID0geWVzCkNPTkZJR19QSVhC TE9DS0RTUCAgPSB5ZXMKQ09ORklHX1JBTkdFQ09ERVIgICA9IHllcwpDT05GSUdfUkRGVCAgICA9 IHllcwpDT05GSUdfUklGRkRFQyA9IHllcwpDT05GSUdfUklGRkVOQyA9IHllcwpDT05GSUdfUlRQ RU5DX0NIQUlOID0geWVzCkNPTkZJR19SVjM0RFNQID0geWVzCkNPTkZJR19TSU5FV0lOID0geWVz CkNPTkZJR19TTkFQUFkgPSB5ZXMKQ09ORklHX1NUQVJUQ09ERSA9IHllcwpDT05GSUdfVEVYVFVS RURTUCA9IHllcwpDT05GSUdfVklERU9EU1AgPSB5ZXMKQ09ORklHX1ZQM0RTUCAgPSB5ZXMKQ09O RklHX1ZQNTZEU1AgPSB5ZXMKQ09ORklHX1ZQOERTUCA9IHllcwpDT05GSUdfV01BX0ZSRVFTID0g eWVzCkNPTkZJR19XTVYyRFNQID0geWVzCgokbWFrX2hhcmRjb2RlZF90YWJsZXMKJG1ha19saWJh dmNvZGVjX21wZWdhdWRpb19ocAohQ09ORklHX0xJQlJUTVAgPSAkbm9saWJydG1wCkNPTkZJR19M SUJSVE1QICA9ICRfbGlicnRtcAoKQ09ORklHX0FDM0RTUCAgID0geWVzCkNPTkZJR19CWkxJQiAg ICA9ICRiemxpYgpDT05GSUdfQ1JZU1RBTEhEPSAkY3J5c3RhbGhkCkNPTkZJR19FTkNPREVSUyA9 IHllcwpDT05GSUdfR05VVExTICAgPSAkX2dudXRscwpDT05GSUdfR1BMICAgICAgPSB5ZXMKQ09O RklHX0lDT05WICAgID0gJF9pY29udgpDT05GSUdfTUxJQiAgICAgPSAkX21saWIKQ09ORklHX01Q RUdBVURJTz15ZXMKQ09ORklHX01VWEVSUyAgID0geWVzCkNPTkZJR19ORVRXT1JLICA9ICRuZXR3 b3JraW5nCkNPTkZJR19SVFBERUMgICA9ICRuZXR3b3JraW5nCkNPTkZJR19WRl9MQVZGSSA9ICRf dmZfbGF2ZmkKQ09ORklHX1ZEQSAgICAgID0gJF92ZGEKQ09ORklHX1ZEUEFVICAgID0gJF92ZHBh dQpDT05GSUdfWFZNQyAgICAgPSAkX3h2bWMKQ09ORklHX1pMSUIgICAgID0gJF96bGliCgpIQVZF X0dOVV9BUyAgICAgPSAkZ251X2FzCkhBVkVfT1MyVEhSRUFEUyA9ICRfb3MydGhyZWFkcwpIQVZF X1BUSFJFQURTICAgPSAkX3B0aHJlYWRzCkhBVkVfU0hNICAgICAgICA9ICRfc2htCkhBVkVfVzMy VEhSRUFEUyA9ICRfdzMydGhyZWFkcwpIQVZFX1RIUkVBRFMgICAgPSAkX3RocmVhZHMKSEFWRV9Z QVNNICAgICAgID0gJGhhdmVfeWFzbQpJTlRSSU5TSUNTICAgICAgPSBub25lCgpDT05GSUdfTElC WFZJRCA9ICRfeHZpZF9sYXZjCiQobWFrX2VuYWJsZSAiJGxpYmF2ZGVjb2RlcnNfYWxsIiAgIiRs aWJhdmRlY29kZXJzIiAgQ09ORklHKQokKG1ha19lbmFibGUgIiRsaWJhdmVuY29kZXJzX2FsbCIg ICIkbGliYXZlbmNvZGVycyIgIENPTkZJRykKJChtYWtfZW5hYmxlICIkbGliYXZwYXJzZXJzX2Fs bCIgICAiJGxpYmF2cGFyc2VycyIgICBDT05GSUcpCiQobWFrX2VuYWJsZSAiJGxpYmF2ZGVtdXhl cnNfYWxsIiAgIiRsaWJhdmRlbXV4ZXJzIiAgQ09ORklHKQokKG1ha19lbmFibGUgIiRsaWJhdm11 eGVyc19hbGwiICAgICIkbGliYXZtdXhlcnMiICAgIENPTkZJRykKJChtYWtfZW5hYmxlICIkbGli YXZwcm90b2NvbHNfYWxsIiAiJGxpYmF2cHJvdG9jb2xzIiBDT05GSUcpCiQobWFrX2VuYWJsZSAi JGxpYmF2YnNmc19hbGwiICAgICAgIiRsaWJhdmJzZnMiICAgICAgQ09ORklHKQokKG1ha19lbmFi bGUgIiRsaWJhdmh3YWNjZWxzX2FsbCIgICIkbGliYXZod2FjY2VscyIgIENPTkZJRykKJChtYWtf ZW5hYmxlICIkbGliYXZmaWx0ZXJzX2FsbCIgICAiJGxpYmF2ZmlsdGVycyIgICBDT05GSUcpCkVP RgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZmX2NvbmZpZ19lbmFibGUgKCkgewpsaXN0PSQoZWNo byAkMSB8IHRvdXBwZXIpCml0ZW09JChlY2hvICQyIHwgdG91cHBlcikKX25wcmVmaXg9JDQ7Cl9k ZWZpbmVwcmVmaXg9JDM7Cl9wb3N0Zml4PSQ1Owp0ZXN0IC16ICIkX25wcmVmaXgiICYmIF9ucHJl Zml4PSdDT05GSUcnCmZvciBwYXJ0IGluICRsaXN0OyBkbwogIGlmICQoZWNobyAkaXRlbSB8IGdy ZXAgLXEgLUUgIihefCApJHBhcnQoJHwgKSIpOyB0aGVuCiAgICBlY2hvICIke19kZWZpbmVwcmVm aXh9ZGVmaW5lICR7X25wcmVmaXh9XyR7cGFydH0ke19wb3N0Zml4fSAxIgogIGVsc2UKICAgIGVj aG8gIiR7X2RlZmluZXByZWZpeH1kZWZpbmUgJHtfbnByZWZpeH1fJHtwYXJ0fSR7X3Bvc3RmaXh9 IDAiCiAgZmkKZG9uZQp9CgplY2hvICJDcmVhdGluZyBjb25maWcuaCIKY2F0ID4gJFRNUEggPDwg RU9GCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqKiBUaGlzIGZpbGUgaGFzIGJlZW4gYXV0b21hdGlj YWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlIGFueSBjaGFuZ2VzIGluIGl0CioqIHdpbGwgYmUg bG9zdCB3aGVuIHlvdSBydW4gY29uZmlndXJlIGFnYWluLgoqKiBJbnN0ZWFkIG9mIG1vZGlmeWlu ZyBkZWZpbml0aW9ucyBoZXJlLCB1c2UgdGhlIC0tZW5hYmxlLy0tZGlzYWJsZSBvcHRpb25zCioq IG9mIHRoZSBjb25maWd1cmUgc2NyaXB0ISBTZWUgLi9jb25maWd1cmUgLS1oZWxwIGZvciBkZXRh aWxzLgoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpZm5kZWYgTVBMQVlFUl9DT05GSUdfSAojZGVm aW5lIE1QTEFZRVJfQ09ORklHX0gKCi8qIFVuZGVmaW5lIHRoaXMgaWYgeW91IGRvIG5vdCB3YW50 IHRvIHNlbGVjdCBtb25vIGF1ZGlvIChsZWZ0IG9yIHJpZ2h0KQogICB3aXRoIGEgc3RlcmVvIE1Q RUcgbGF5ZXIgMi8zIGF1ZGlvIHN0cmVhbS4gVGhlIGNvbW1hbmQgbGluZSBvcHRpb24KICAgLXN0 ZXJlbyBoYXMgdGhyZWUgcG9zc2libGUgdmFsdWVzICgwIGZvciBzdGVyZW8sIDEgZm9yIGxlZnQt b25seSwgMiBmb3IKICAgcmlnaHQtb25seSksIHdpdGggMCBiZWluZyB0aGUgZGVmYXVsdC4KICAg Ki8KI2RlZmluZSBDT05GSUdfRkFLRV9NT05PIDEKCi8qIHNldCB1cCBtYXguIG91dGJ1cnN0LiB1 c2UgMTMxMDcyIGZvciBUcnVlSEQgU1BESUYgcGFzcy10aHJvdWdoICovCiNkZWZpbmUgTUFYX09V VEJVUlNUIDEzMTA3MgoKLyogc2V0IHVwIGF1ZGlvIE9VVEJVUlNULiBEbyBub3QgY2hhbmdlIHRo aXMhICovCiNkZWZpbmUgT1VUQlVSU1QgNTEyCgovKiBFbmFibGUgZmFzdCBPU0QvU1VCIHJlbmRl cmVyIChsb29rcyB1Z2x5LCBidXQgdXNlcyBsZXNzIENQVSBwb3dlcikgKi8KI3VuZGVmIEZBU1Rf T1NECiN1bmRlZiBGQVNUX09TRF9UQUJMRQoKLyogUmVxdWlyZWQgZm9yIGxpYmR2ZGNzcyBhbmQg c29tZSBmaWxlcyBiZWxvdyBzdHJlYW0vLiAqLwojaWZuZGVmIE9fQklOQVJZCiNkZWZpbmUgT19C SU5BUlkgMAojZW5kaWYKCi8qIERlZmluZSB0aGlzIHRvIGVuYWJsZSBNUEVHLTEvMiBpbWFnZSBw b3N0cHJvY2Vzc2luZyBpbiBsaWJtcGVnMiAqLwojZGVmaW5lIE1QRUcxMl9QT1NUUFJPQyAxCiNk ZWZpbmUgQVRUUklCVVRFX0FMSUdORURfTUFYIDE2CgoKCiNkZWZpbmUgQ09ORklHVVJBVElPTiAi JGNvbmZpZ3VyYXRpb24iCgojZGVmaW5lIE1QTEFZRVJfREFUQURJUiAiJF9kYXRhZGlyIgojZGVm aW5lIE1QTEFZRVJfQ09ORkRJUiAiJF9jb25mZGlyIgojZGVmaW5lIE1QTEFZRVJfTElCRElSICIk X2xpYmRpciIKCi8qIGRlZmluaXRpb25zIG5lZWRlZCBieSBpbmNsdWRlZCBsaWJyYXJpZXMgKi8K LyogbGlibXBlZzIgKi8KJGRlZl9mYXN0X2ludHR5cGVzCi8qIGxpYmR2ZGNzcyAqLwojZGVmaW5l IEhBVkVfRVJSTk9fSCAxCiNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKI2RlZmluZSBIQVZFX1VO SVNURF9IIDEKJGRlZl9icm9rZW5fbWtkaXIKJGRlZl9jZGlvCiRkZWZfY2Ryb20KJGRlZl9kdmQK JGRlZl9kdmRfYnNkCiRkZWZfZHZkX2RhcndpbgokZGVmX2R2ZF9saW51eAokZGVmX2R2ZF9vcGVu YnNkCiRkZWZfZHZkY3NzCiRkZWZfZHZkaW8KJGRlZl9ocHV4X3Njc2lfaAokZGVmX3NvbF9zY3Np X2gKJGRlZl9zeXNfdWlvX2gKCi8qIGxpYmR2ZGNzcyArIGxpYmR2ZHJlYWQgKi8KI2RlZmluZSBI QVZFX0xJTUlUU19IIDEKLyogbGliZHZkcmVhZCAqLwojZGVmaW5lIEhBVkVfRExGQ05fSCAxCiNk ZWZpbmUgSEFWRV9NRU1DUFkgMQojZGVmaW5lIFNURENfSEVBREVSUyAxCi8qIGxpYmR2ZG5hdiAq LwojZGVmaW5lIFJFQURfQ0FDSEVfVFJBQ0UgMAoKCi8qIHN5c3RlbSBoZWFkZXJzICovCiRkZWZf YWxsb2NhX2gKJGRlZl9hbHRpdmVjX2gKJGRlZl9tYWxsb2NfaAokZGVmX21tYW5faAokZGVmX21t YW5faGFzX21hcF9mYWlsZWQKJGRlZl9zb3VuZGNhcmRfaAokZGVmX3N5c19zb3VuZGNhcmRfaAok ZGVmX3N5c19zeXNpbmZvX2gKJGRlZl9zeXNfdmlkZW9pb19oCiRkZWZfdGVybWlvc19oCiRkZWZf dGVybWlvc19zeXNfaAokZGVmX3dpbnNvY2syX2gKJGRlZl9jZGlvX3BhcmFub2lhX2gKJGRlZl9j ZGlvX3BhcmFub2lhX3BhcmFub2lhX2gKCgovKiBzeXN0ZW0gZnVuY3Rpb25zICovCiRkZWZfZ2V0 aG9zdGJ5bmFtZTIKJGRlZl9nZXR0aW1lb2ZkYXkKJGRlZl9jbG9ja19nZXR0aW1lCiRkZWZfZ2xv YgokZGVmX2dtdGltZV9yCiRkZWZfbGFuZ2luZm8KJGRlZl9sb2NhbHRpbWVfcgokZGVmX21hcF9t ZW1hbGlnbgokZGVmX21lbWFsaWduCiRkZWZfbmFub3NsZWVwCiRkZWZfcG9zaXhfc2VsZWN0CiRk ZWZfc2VsZWN0CiRkZWZfc2V0ZW52CiRkZWZfc2V0bW9kZQokZGVmX3NobQokZGVmX3N0cnNlcAok ZGVmX3N5c2k4NgokZGVmX3N5c2k4Nl9pdgokZGVmX3Rlcm1jYXAKJGRlZl90ZXJtaW9zCiRkZWZf dnNzY2FuZgoKCi8qIHN5c3RlbS1zcGVjaWZpYyBmZWF0dXJlcyAqLwokZGVmX2FzbWFsaWduX3Bv dAokZGVmX2J1aWx0aW5fZXhwZWN0CiRkZWZfZGwKJGRlZl9kb3NfcGF0aHMKJGRlZl9leHRlcm5f YXNtCiRkZWZfZXh0ZXJuX3ByZWZpeAokZGVmX2ljb252CiRkZWZfa3N0YXQKJGRlZl9tYWNvc3hf YnVuZGxlCiRkZWZfbWFjb3N4X2ZpbmRlcgokZGVmX21hZW1vCiRkZWZfbWVtYWxpZ25faGFjawok ZGVmX3BhdGhfbWF4X2NoZWNrCiRkZWZfcHJpb3JpdHkKJGRlZl9xdWlja3RpbWUKJGRlZl9yZXN0 cmljdF9rZXl3b3JkCiRkZWZfcnRjCiRkZWZfdW5yYXJfZXhlYwoKCi8qIGNvbmZpZ3VyYWJsZSBv cHRpb25zICovCiRkZWZfY2hhcnNldAokZGVmX2NyYXNoX2RlYnVnCiRkZWZfZGVidWcKJGRlZl9k eW5hbWljX3BsdWdpbnMKJGRlZl9mYXN0bWVtY3B5CiRkZWZfbWVudQokZGVmX3J1bnRpbWVfY3B1 ZGV0ZWN0aW9uCiRkZWZfc2lnaGFuZGxlcgokZGVmX3NvcnRzdWIKJGRlZl9zdHJlYW1fY2FjaGUK JGRlZl9wdGhyZWFkX2NhY2hlCgoKLyogQ1BVIHN0dWZmICovCiNkZWZpbmUgX19DUFVfXyAkaXBy b2MKJGRlZl9hcm10aHVtYgokZGVmX2JpZ2VuZGlhbgokZGVmX2VieF9hdmFpbGFibGUKJGRlZl92 ZnBfYXJncwokKGZmX2NvbmZpZ19lbmFibGUgIiRhcmNoX2FsbCIgIiRhcmNoIiAiIyIgIkFSQ0gi KQokKGZmX2NvbmZpZ19lbmFibGUgIiRzdWJhcmNoX2FsbCIgIiRzdWJhcmNoIiAiIyIgIkFSQ0gi KQokKGZmX2NvbmZpZ19lbmFibGUgIiRjcHVleHRzX2FsbCIgIiRjcHVleHRzIiAiIyIgIkhBVkUi KQokKGZmX2NvbmZpZ19lbmFibGUgIiRjcHVleHRzX2FsbCIgIiRjcHVleHRzIiAiIyIgIkhBVkUi ICJfRVhURVJOQUwiKQokKGZmX2NvbmZpZ19lbmFibGUgIiRjcHVleHRzX2FsbCIgIiRjcHVleHRz IiAiIyIgIkhBVkUiICJfSU5MSU5FIikKCgovKiBCbHUtcmF5L0RWRC9WQ0QvQ0QgKi8KI2RlZmlu ZSBERUZBVUxUX0NEUk9NX0RFVklDRSAiJGRlZmF1bHRfY2Ryb21fZGV2aWNlIgojZGVmaW5lIERF RkFVTFRfRFZEX0RFVklDRSAgICIkZGVmYXVsdF9kdmRfZGV2aWNlIgokZGVmX2JsdXJheQokZGVm X2NkZGIKJGRlZl9jZHBhcmFub2lhCiRkZWZfZHZkbmF2CiRkZWZfZHZkcmVhZAokZGVmX2xpYmNk aW8KJGRlZl92Y2QKCgovKiBjb2RlYyBsaWJyYXJpZXMgKi8KJGRlZl9mYWFjCiRkZWZfZmFhZAok ZGVmX2xpYmE1MgokZGVmX2xpYmRjYQokZGVmX2xpYmR2CiRkZWZfbGlibHpvCiRkZWZfbGlibXBl ZzIKJGRlZl9saWJtcGVnMl9pbnRlcm5hbAokZGVmX2xpYmlsYmMKJGRlZl9saWJvcHVzCiRkZWZf bWFkCiRkZWZfbXAzbGFtZQokZGVmX21wM2xhbWVfcHJlc2V0CiRkZWZfbXAzbGFtZV9wcmVzZXRf bWVkaXVtCiRkZWZfbXBnMTIzCiRkZWZfbXVzZXBhY2sKJGRlZl9zcGVleAokZGVmX3RoZW9yYQok ZGVmX3Rvb2xhbWUKJGRlZl90cmVtb3IKJGRlZl90d29sYW1lCiRkZWZfdm9yYmlzCiRkZWZfeDI2 NAokZGVmX3h2aWQKJGRlZl96bGliCgokZGVmX2xpYm51dAoKCi8qIGJpbmFyeSBjb2RlY3MgKi8K JGRlZl9xdHgKJGRlZl9xdHhfd2luMzIKJGRlZl9yZWFsCiRkZWZfd2luMzJfbG9hZGVyCiRkZWZf d2luMzJkbGwKJGRlZl94YW5pbQokZGVmX3htbXMKI2RlZmluZSBCSU5BUllfQ09ERUNTX1BBVEgg IiRfY29kZWNzZGlyIgojZGVmaW5lIFhNTVNfSU5QVVRfUExVR0lOX0RJUiAiJF94bW1zcGx1Z2lu ZGlyIgoKCi8qIEdVSSAqLwokZGVmX2d1aQokZGVmX3hzaGFwZQoKCi8qIEF1ZGlvIG91dHB1dCBk cml2ZXJzICovCiRkZWZfYWxzYQokZGVmX2FydHMKJGRlZl9jb3JlYXVkaW8KJGRlZl9kYXJ0CiRk ZWZfZXNkCiRkZWZfZXNkX2xhdGVuY3kKJGRlZl9qYWNrCiRkZWZfa2FpCiRkZWZfbmFzCiRkZWZf b3BlbmFsCiRkZWZfb3BlbmFsX2gKJGRlZl9vc3NhdWRpbwokZGVmX29zc2F1ZGlvX2RldmRzcAok ZGVmX29zc2F1ZGlvX2Rldm1peGVyCiRkZWZfcHVsc2UKJGRlZl9zZ2lhdWRpbwokZGVmX3NuZGlv CiRkZWZfc3VuYXVkaW8KJGRlZl93aW4zMndhdmVvdXQKCiRkZWZfbGFkc3BhCiRkZWZfbGliYnMy YgoKCi8qIGlucHV0ICovCiRkZWZfYXBwbGVfaXIKJGRlZl9hcHBsZV9yZW1vdGUKJGRlZl9pb2N0 bF9idDg0OF9oX25hbWUKJGRlZl9pb2N0bF9tZXRlb3JfaF9uYW1lCiRkZWZfam95c3RpY2sKJGRl Zl9saXJjCiRkZWZfbGlyY2MKJGRlZl9wdnIKJGRlZl9yYWRpbwokZGVmX3JhZGlvX2JzZGJ0ODQ4 CiRkZWZfcmFkaW9fY2FwdHVyZQokZGVmX3JhZGlvX3Y0bAokZGVmX3JhZGlvX3Y0bDIKJGRlZl90 dgokZGVmX3R2X2JzZGJ0ODQ4CiRkZWZfdHZfZHNob3cKJGRlZl90dl92NGwKJGRlZl90dl92NGwx CiRkZWZfdHZfdjRsMgoKCi8qIGZvbnQgc3R1ZmYgKi8KJGRlZl9hc3MKJGRlZl9hc3NfaW50ZXJu YWwKJGRlZl9iaXRtYXBfZm9udAokZGVmX2VuY2EKJGRlZl9mb250Y29uZmlnCiRkZWZfZnJlZXR5 cGUKJGRlZl9mcmliaWRpCgoKLyogbmV0d29ya2luZyAqLwokZGVmX2Nsb3Nlc29ja2V0CiRkZWZf ZnRwCiRkZWZfaW5ldDYKJGRlZl9pbmV0X2F0b24KJGRlZl9pbmV0X3B0b24KJGRlZl9saXZlCiRk ZWZfbmVtZXNpCiRkZWZfbmV0d29ya2luZwokZGVmX3NtYgokZGVmX3ZzdHJlYW0KCgovKiBsaWJ2 byBvcHRpb25zICovCiRkZWZfM2RmeAokZGVmX2FhCiRkZWZfYmwKJGRlZl9jYWNhCiRkZWZfY29y ZXZpZGVvCiRkZWZfZGdhCiRkZWZfZGdhMQokZGVmX2RnYTIKJGRlZl9kaXJlY3QzZAokZGVmX2Rp cmVjdGZiCiRkZWZfZGlyZWN0eAokZGVmX2R2YgokZGVmX2R2YmluCiRkZWZfZHhyMgokZGVmX2R4 cjMKJGRlZl9mYmRldgokZGVmX2dnaQokZGVmX2dnaXdtaAokZGVmX2dpZgokZGVmX2dpZl80CiRk ZWZfZ2lmX3R2dF9oYWNrCiRkZWZfZ2wKJGRlZl9nbF93aW4zMgokZGVmX2dsX3gxMQokZGVmX2ds X2VnbF9hbmRyb2lkCiRkZWZfZ2xfZWdsX3gxMQokZGVmX2dsX3NkbAokZGVmX2dsX29zeAokZGVm X21hdHJpeHZpZXcKJGRlZl9pdnR2CiRkZWZfanBlZwokZGVmX2t2YQokZGVmX21kNXN1bQokZGVm X21nYQokZGVmX21saWIKJGRlZl9tbmcKJGRlZl9wb3N0cHJvYwokZGVmX3BuZwokZGVmX3BubQok ZGVmX3F1YXJ0egokZGVmX3MzZmIKJGRlZl9zZGwKJGRlZl9zZGxfc2RsX2gKJGRlZl9zdmdhCiRk ZWZfdGRmeGZiCiRkZWZfdGRmeHZpZAokZGVmX3RnYQokZGVmX3Y0bDIKJGRlZl92ZHBhdQokZGVm X3Zlc2EKJGRlZl92aWRpeAokZGVmX3ZpZGl4X2Rydl9jeWJlcmJsYWRlCiRkZWZfdmlkaXhfZHJ2 X2l2dHYKJGRlZl92aWRpeF9kcnZfbWFjaDY0CiRkZWZfdmlkaXhfZHJ2X21nYQokZGVmX3ZpZGl4 X2Rydl9tZ2FfY3J0YzIKJGRlZl92aWRpeF9kcnZfbnZpZGlhCiRkZWZfdmlkaXhfZHJ2X3BtMwok ZGVmX3ZpZGl4X2Rydl9yYWRlb24KJGRlZl92aWRpeF9kcnZfcmFnZTEyOAokZGVmX3ZpZGl4X2Ry dl9zMwokZGVmX3ZpZGl4X2Rydl9zaF92ZXUKJGRlZl92aWRpeF9kcnZfc2lzCiRkZWZfdmlkaXhf ZHJ2X3VuaWNocm9tZQokZGVmX3ZpZGl4X3BmeAokZGVmX3ZtCiRkZWZfd2lpCiRkZWZfeDExCiRk ZWZfeGRwbXMKJGRlZl94Zjg2a2V5c3ltCiRkZWZfeGluZXJhbWEKJGRlZl94bWdhCiRkZWZfeHNz CiRkZWZfeHYKJGRlZl94dm1jCiRkZWZfeHZyMTAwCiRkZWZfeXV2NG1wZWcKJGRlZl96cgoKCi8q IEZGbXBlZyAqLwojZGVmaW5lIGF2X3Jlc3RyaWN0IHJlc3RyaWN0CgokZGVmX2ZmbXBlZwokZGVm X2ZmbXBlZ19hCiRkZWZfZmZtcGVnX3NvCgojZGVmaW5lIENPTkZJR19ERUNPREVSUyAxCiNkZWZp bmUgQ09ORklHX0VOQ09ERVJTIDEKI2RlZmluZSBDT05GSUdfREVNVVhFUlMgMQojZGVmaW5lIENP TkZJR19NVVhFUlMgMQokZGVmX3J0cGRlYwoKLyogc2VsZWN0YWJsZSBmZWF0dXJlcyAqLwokZGVm X2hhcmRjb2RlZF90YWJsZXMKJGRlZl9saWJhdmNvZGVjX21wZWdhdWRpb19ocAokZGVmX25ldHdv cmsKJGRlZl92Zl9sYXZmaQoKLyogaGVhZGVycyAqLwokZGVmX2FycGFfaW5ldF9oCiRkZWZfZGly ZWN0X2gKJGRlZl9pb19oCiRkZWZfcG9sbF9oCiRkZWZfd2luZG93c19oCgovKiBleHRlcm5hbCBs aWJyYXJpZXMgKi8KJGRlZl9iemxpYgokZGVmX2NyeXN0YWxoZAokZGVmX2ZhYWNfbGF2YwokZGVm X2xpYmRpcmFjX2xhdmMKJGRlZl9saWJnc20KJGRlZl9saWJvcGVuY29yZV9hbXJuYgokZGVmX2xp Ym9wZW5jb3JlX2FtcndiCiRkZWZfbGlib3BlbmpwZWcKJGRlZl9saWJydG1wCiRkZWZfbGlic2No cm9lZGluZ2VyX2xhdmMKJGRlZl9tcDNsYW1lX2xhdmMKJGRlZl94MjY0X2xhdmMKJGRlZl94dmlk X2xhdmMKCi8qIHN5c3RlbSBmZWF0dXJlcyAqLwokZGVmX2Zhc3RfNjRiaXQKJGRlZl9mYXN0X3Vu YWxpZ25lZAokZGVmX2dudV9hcwokZGVmX2libV9hc20KJGRlZl9sb2NhbF9hbGlnbmVkXzgKJGRl Zl9sb2NhbF9hbGlnbmVkXzE2CiRkZWZfbG9jYWxfYWxpZ25lZF8zMgokZGVmX29zMnRocmVhZHMK JGRlZl9waWMKJGRlZl9wdGhyZWFkcwokZGVmX3B0aHJlYWRfY2FuY2VsCiRkZWZfc29ja2xlbl90 CiRkZWZfc3RydWN0X2FkZHJpbmZvCiRkZWZfc3RydWN0X2lwdjZfbXJlcQokZGVmX3N0cnVjdF9z b2NrYWRkcl9pbjYKJGRlZl9zdHJ1Y3Rfc29ja2FkZHJfc2FfbGVuCiRkZWZfc3RydWN0X3NvY2th ZGRyX3N0b3JhZ2UKJGRlZl90aHJlYWRzCiRkZWZfdzMydGhyZWFkcwokZGVmX3hmb3JtX2FzbQok ZGVmX3htbV9jbG9iYmVycwokZGVmX3lhc20KCi8qIHN5c3RlbSBmdW5jdGlvbnMgKi8KJGRlZl9h bGlnbmVkX21hbGxvYwokZGVmX2Jzd2FwCiRkZWZfZGNiemwKJGRlZl92c3gKJGRlZl9hdGFuZgok ZGVmX2F0YW4yZgokZGVmX2NicnQKJGRlZl9jYnJ0ZgokZGVmX2Nvc2YKJGRlZl9leHBmCiRkZWZf ZXhwMgokZGVmX2V4cDJmCiRkZWZfZm1pbmYKJGRlZl9nZXRhZGRyaW5mbwokZGVmX2lzaW5mCiRk ZWZfaXNuYW4KJGRlZl9sZGV4cGYKJGRlZl9sbHJpbnQKJGRlZl9sbHJpbnRmCiRkZWZfbG9nMgok ZGVmX2xvZzJmCiRkZWZfbG9nMTBmCiRkZWZfbHJpbnQKJGRlZl9scmludGYKJGRlZl9ta3N0ZW1w CiRkZWZfbW1hcAokZGVmX3Bvc2l4X21lbWFsaWduCiRkZWZfcG93ZgokZGVmX21wcm90ZWN0CiRk ZWZfcmludAokZGVmX3JvdW5kCiRkZWZfcm91bmRmCiRkZWZfc2luZgokZGVmX3RydW5jCiRkZWZf dHJ1bmNmCgojZGVmaW5lIEhBVkVfSU5DT01QQVRJQkxFX0xJQkFWX0FCSSAwCiNkZWZpbmUgSEFW RV9NU1ZDUlQgMAojZGVmaW5lIEhBVkVfUFJBR01BX0RFUFJFQ0FURUQgMAojZGVmaW5lIENPTkZJ R19BVURJT19GTE9BVCAwCiNkZWZpbmUgQ09ORklHX0FWQ09ERUMgMQojZGVmaW5lIENPTkZJR19B VlNFUlZFUiAwCiNkZWZpbmUgQ09ORklHX0RYVkEyIDAKI2RlZmluZSBDT05GSUdfRkFTVERJViAw CiNkZWZpbmUgQ09ORklHX0ZGU0VSVkVSIDAKI2RlZmluZSBDT05GSUdfRlRSQVBWIDAKJGRlZl9n bnV0bHMKI2RlZmluZSBDT05GSUdfR1BMIDEKI2RlZmluZSBDT05GSUdfR1JBWSAwCiNkZWZpbmUg Q09ORklHX0xJQk1PRFBMVUcgMAojZGVmaW5lIENPTkZJR19MSUJWT1JCSVMgMAojZGVmaW5lIENP TkZJR19NRU1PUllfUE9JU09OSU5HIDAKI2RlZmluZSBDT05GSUdfT1BFTlNTTCAwCiNkZWZpbmUg Q09ORklHX1BPV0VSUENfUEVSRiAwCi8qIEZvciBub3cgcHJlZmVyIHNwZWVkIG92ZXIgYXZvaWRp bmcgcG90ZW50aWFsIGludmFsaWQgcmVhZHMgKi8KI2RlZmluZSBDT05GSUdfU0FGRV9CSVRTVFJF QU1fUkVBREVSIDAKI2RlZmluZSBDT05GSUdfU0hBUkVEIDAKI2RlZmluZSBDT05GSUdfU01BTEwg MAojZGVmaW5lIENPTkZJR19TV1NDQUxFX0FMUEhBIDEKI2RlZmluZSBTV1NfTUFYX0ZJTFRFUl9T SVpFIDI1NgojZGVmaW5lIENPTkZJR19RU1YgMAojZGVmaW5lIENPTkZJR19WQUFQSSAwCgojZGVm aW5lIEhBVkVfQUxJR05FRF9TVEFDSyAxCiNkZWZpbmUgSEFWRV9BU19ETl9ESVJFQ1RJVkUgMQoj ZGVmaW5lIEhBVkVfQVNfRlVOQyAxCiNkZWZpbmUgSEFWRV9BU01fTU9EX1EgMQojZGVmaW5lIEhB VkVfQVRPTUlDU19HQ0MgMQojZGVmaW5lIEhBVkVfU1lOQ19WQUxfQ09NUEFSRV9BTkRfU1dBUCAx CiNkZWZpbmUgSEFWRV9BVE9NSUNTX05BVElWRSAxCiNkZWZpbmUgSEFWRV9BVFRSSUJVVEVfUEFD S0VEIDEKI2RlZmluZSBIQVZFX0dFVEhSVElNRSAwCiNkZWZpbmUgSEFWRV9JTkxJTkVfQVNNIDEK I2RlZmluZSBIQVZFX0lOTElORV9BU01fTk9OTE9DQUxfTEFCRUxTIDEKI2RlZmluZSBIQVZFX0lO TElORV9BU01fRElSRUNUX1NZTUJPTF9SRUZTIDEKI2RlZmluZSBIQVZFX0lOVFJJTlNJQ1NfTkVP TiAwCiNkZWZpbmUgSEFWRV9JU0FUVFkgMAojZGVmaW5lIEhBVkVfTERCUlggMAojZGVmaW5lIEhB VkVfTElCQ19NU1ZDUlQgMAojZGVmaW5lIEhBVkVfTUFDSF9NQUNIX1RJTUVfSCAwCiNkZWZpbmUg SEFWRV9NQVBWSUVXT0ZGSUxFIDAKI2RlZmluZSBIQVZFX01JUFNEU1BSMSAwCiNkZWZpbmUgSEFW RV9NSVBTRlBVIDAKI2RlZmluZSBIQVZFX01NX0VNUFRZIDAKI2RlZmluZSBIQVZFX1BQQzRYWCAw CiNkZWZpbmUgSEFWRV9SRFRTQyAwCiNkZWZpbmUgSEFWRV9TRUNUSU9OX0RBVEFfUkVMX1JPIDAK I2RlZmluZSBIQVZFX1NJTURfQUxJR05fMTYgMQojZGVmaW5lIEhBVkVfU1RSRVJST1JfUiAwCiNk ZWZpbmUgSEFWRV9TVFJQVElNRSAwCiNkZWZpbmUgSEFWRV9TVFJVQ1RfUE9MTEZEIDAKI2RlZmlu ZSBIQVZFX1NZTVZFUl9BU01fTEFCRUwgMAojZGVmaW5lIEhBVkVfU1lNVkVSX0dOVV9BU00gMAoj ZGVmaW5lIEhBVkVfU1lOQ19TWU5DSFJPTklaRSAxCiNkZWZpbmUgSEFWRV9TWVNfU0VMRUNUX0gg MAojZGVmaW5lIEhBVkVfVklSVFVBTEFMTE9DIDAKCi8qIFNvbWUgRkZtcGVnIGNvZGVjcyBkZXBl bmQgb24gdGhlc2UuIEVuYWJsZSB0aGVtIHVuY29uZGl0aW9uYWxseSBmb3Igbm93LiAqLwojZGVm aW5lIENPTkZJR19BQU5EQ1RUQUJMRVMgMQojZGVmaW5lIENPTkZJR19BVURJT0RTUCAxCiNkZWZp bmUgQ09ORklHX0FVRElPX0ZSQU1FX1FVRVVFIDEKI2RlZmluZSBDT05GSUdfQkxPQ0tEU1AgMQoj ZGVmaW5lIENPTkZJR19CU1dBUERTUCAxCiNkZWZpbmUgQ09ORklHX0RDVCAxCiNkZWZpbmUgQ09O RklHX0RWUFJPRklMRSAxCiNkZWZpbmUgQ09ORklHX0RXVCAxCiNkZWZpbmUgQ09ORklHX0VSUk9S X1JFU0lMSUVOQ0UgMQojZGVmaW5lIENPTkZJR19FWElGIDEKI2RlZmluZSBDT05GSUdfRkFBTkRD VCAxCiNkZWZpbmUgQ09ORklHX0ZBQU5JRENUIDEKI2RlZmluZSBDT05GSUdfRkRDVERTUCAxCiNk ZWZpbmUgQ09ORklHX0ZMQUNEU1AgMQojZGVmaW5lIENPTkZJR19GTVRDT05WRVJUIDEKI2RlZmlu ZSBDT05GSUdfRlJBTUVfVEhSRUFEX0VOQ09ERVIgMQojZGVmaW5lIENPTkZJR19GRlQgMQojZGVm aW5lIENPTkZJR19HNzIyRFNQIDEKI2RlZmluZSBDT05GSUdfR09MT01CIDEKI2RlZmluZSBDT05G SUdfSDI2M0RTUCAxCiNkZWZpbmUgQ09ORklHX0gyNjRDSFJPTUEgMQojZGVmaW5lIENPTkZJR19I MjY0RFNQIDEKI2RlZmluZSBDT05GSUdfSDI2NFBSRUQgMQojZGVmaW5lIENPTkZJR19IMjY0UVBF TCAxCiNkZWZpbmUgQ09ORklHX0hVRkZNQU4gMQojZGVmaW5lIENPTkZJR19JRENURFNQIDEKI2Rl ZmluZSBDT05GSUdfSVZJRFNQIDEKI2RlZmluZSBDT05GSUdfTFBDIDEKI2RlZmluZSBDT05GSUdf TFpPIDEKI2RlZmluZSBDT05GSUdfTURDVCAxCiNkZWZpbmUgQ09ORklHX01FX0NNUCAxCiNkZWZp bmUgQ09ORklHX01QRUdfRVIgMQojZGVmaW5lIENPTkZJR19NUEVHVklERU8gMQojZGVmaW5lIENP TkZJR19NU1MzNERTUCAxCiNkZWZpbmUgQ09ORklHX1BJWEJMT0NLRFNQIDEKI2RlZmluZSBDT05G SUdfUkRGVCAxCiNkZWZpbmUgQ09ORklHX1JJRkZERUMgMQojZGVmaW5lIENPTkZJR19SSUZGRU5D IDEKI2RlZmluZSBDT05GSUdfUlYzNERTUCAxCiNkZWZpbmUgQ09ORklHX1NOQVBQWSAxCiNkZWZp bmUgQ09ORklHX1NUQVJUQ09ERSAxCiNkZWZpbmUgQ09ORklHX1RFWFRVUkVEU1AgMQojZGVmaW5l IENPTkZJR19WSURFT0RTUCAxCiNkZWZpbmUgQ09ORklHX1ZQNTZEU1AgMQojZGVmaW5lIENPTkZJ R19WUDhEU1AgMQojZGVmaW5lIENPTkZJR19XTUFfRlJFUVMgMQojZGVmaW5lIENPTkZJR19XTVYy RFNQIDEKCi8qIFVzZSB0aGVzZSByZWdpc3RlcnMgaW4gRkZtcGVnIHg4NiBpbmxpbmUgYXNtLiBO byBwcm9wZXIgZGV0ZWN0aW9uIHlldC4gKi8KI2lmbmRlZiBNUF9ERUJVRwojZGVmaW5lIEhBVkVf RUJQX0FWQUlMQUJMRSAxCiNlbHNlCiNkZWZpbmUgSEFWRV9FQlBfQVZBSUxBQkxFIDAKI2VuZGlm CgojZGVmaW5lIEZGTVBFR19DT05GSUdVUkFUSU9OICItLWVuYWJsZS1ncGwgLS1lbmFibGUtcG9z dHByb2MiCiNkZWZpbmUgRkZNUEVHX0xJQ0VOU0UgIkdQTCB2ZXJzaW9uIDIgb3IgbGF0ZXIiCgoj ZGVmaW5lIExJQkFWX0NPTkZJR1VSQVRJT04gRkZNUEVHX0NPTkZJR1VSQVRJT04KI2RlZmluZSBM SUJBVl9MSUNFTlNFIEZGTVBFR19MSUNFTlNFCgokKGZmX2NvbmZpZ19lbmFibGUgIiRsaWJhdmRl Y29kZXJzX2FsbCIgICIkbGliYXZkZWNvZGVycyIgIiMiKQokKGZmX2NvbmZpZ19lbmFibGUgIiRs aWJhdmVuY29kZXJzX2FsbCIgICIkbGliYXZlbmNvZGVycyIgIiMiKQokKGZmX2NvbmZpZ19lbmFi bGUgIiRsaWJhdnBhcnNlcnNfYWxsIiAgICIkbGliYXZwYXJzZXJzIiAiIyIpCiQoZmZfY29uZmln X2VuYWJsZSAiJGxpYmF2ZGVtdXhlcnNfYWxsIiAgIiRsaWJhdmRlbXV4ZXJzIiAiIyIpCiQoZmZf Y29uZmlnX2VuYWJsZSAiJGxpYmF2bXV4ZXJzX2FsbCIgICAgIiRsaWJhdm11eGVycyIgIiMiKQok KGZmX2NvbmZpZ19lbmFibGUgIiRsaWJhdnByb3RvY29sc19hbGwiICIkbGliYXZwcm90b2NvbHMi ICIjIikKJChmZl9jb25maWdfZW5hYmxlICIkbGliYXZic2ZzX2FsbCIgICAgICAiJGxpYmF2YnNm cyIgIiMiKQokKGZmX2NvbmZpZ19lbmFibGUgIiRsaWJhdmh3YWNjZWxzX2FsbCIgICIkbGliYXZo d2FjY2VscyIgIiMiKQokKGZmX2NvbmZpZ19lbmFibGUgIiRsaWJhdmZpbHRlcnNfYWxsIiAgICIk bGliYXZmaWx0ZXJzIiAiIyIpCgojZW5kaWYgLyogTVBMQVlFUl9DT05GSUdfSCAqLwpFT0YKCiMg RG8gbm90IG92ZXJ3cml0ZSBhbiB1bmNoYW5nZWQgY29uZmlnLmggdG8gYXZvaWQgc3VwZXJmbHVv dXMgcmVidWlsZHMuCmNtcCAtcyAiJFRNUEgiIGNvbmZpZy5oIHx8IG12IC1mICIkVE1QSCIgY29u ZmlnLmgKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQ3JlYXRlIGF2Y29uZmlnLmggZm9yIEZGbXBl Zy4KY2F0ID4gIiRUTVBIIiA8PCBFT0YKLyogR2VuZXJhdGVkIGJ5IG1wY29uZmlndXJlICovCiNp Zm5kZWYgQVZVVElMX0FWQ09ORklHX0gKI2RlZmluZSBBVlVUSUxfQVZDT05GSUdfSAokZGVmX2F2 X2JpZ2VuZGlhbgokZGVmX2F2X2Zhc3RfdW5hbGlnbmVkCiNkZWZpbmUgQVZfSEFWRV9JTkNPTVBB VElCTEVfTElCQVZfQUJJIDAKI2VuZGlmIC8qIEFWVVRJTF9BVkNPTkZJR19IICovCkVPRgoKIyBE byBub3Qgb3ZlcndyaXRlIGFuIHVuY2hhbmdlZCBhdmNvbmZpZy5oIHRvIGF2b2lkIHN1cGVyZmx1 b3VzIHJlYnVpbGRzLgpjbXAgLXMgIiRUTVBIIiBmZm1wZWcvbGliYXZ1dGlsL2F2Y29uZmlnLmgg fHwgbXYgLWYgIiRUTVBIIiBmZm1wZWcvbGliYXZ1dGlsL2F2Y29uZmlnLmgKCgppZiB4ODY7IHRo ZW4KIyBDcmVhdGUgYSBza2VsZXRvbiBjb25maWcuYXNtIHdpdGgganVzdCB0aGUgQVJDSF8gYW5k ICpDT0RFUiBkZWZpbml0aW9ucyBmb3IgRkZtcGVnLgo+ICIkVE1QUyIKZWNobyAiJWRlZmluZSBD T05GSUdfR1BMIDEiID4+ICIkVE1QUyIKZWNobyAiJWRlZmluZSBIQVZFX0FMSUdORURfU1RBQ0sg MSIgPj4gIiRUTVBTIgplY2hvICIkKGZmX2NvbmZpZ19lbmFibGUgIiRhcmNoX2FsbCIgIiRhcmNo IiAiJSIgIkFSQ0giKSIgPj4gIiRUTVBTIgplY2hvICIkKGZmX2NvbmZpZ19lbmFibGUgIiRzdWJh cmNoX2FsbCIgIiRzdWJhcmNoIiAiJSIgIkFSQ0giKSIgPj4gIiRUTVBTIgplY2hvICIkKGZmX2Nv bmZpZ19lbmFibGUgIiRjcHVleHRzX2FsbCIgIiRjcHVleHRzIiAiJSIgIkhBVkUiICJfRVhURVJO QUwiKSIgPj4gIiRUTVBTIgplY2hvICIkKGZmX2NvbmZpZ19lbmFibGUgIiR5YXNtX2ZlYXR1cmVz X2FsbCIgIiR5YXNtX2ZlYXR1cmVzIiAiJSIgIkhBVkUiKSIgPj4gIiRUTVBTIgplY2hvICIkKGZm X2NvbmZpZ19lbmFibGUgIiRsaWJhdmRlY29kZXJzX2FsbCIgICIkbGliYXZkZWNvZGVycyIgIiUi ICJDT05GSUciKSIgPj4gIiRUTVBTIgplY2hvICIkKGZmX2NvbmZpZ19lbmFibGUgIiRsaWJhdmVu Y29kZXJzX2FsbCIgICIkbGliYXZlbmNvZGVycyIgIiUiICJDT05GSUciKSIgPj4gIiRUTVBTIgoK Y21wIC1zICIkVE1QUyIgZmZtcGVnL2NvbmZpZy5hc20gfHwgbXYgLWYgIiRUTVBTIiBmZm1wZWcv Y29uZmlnLmFzbQpmaQoKCiMgQ3JlYXRlIGEgY29uZmlnLm1hayBmb3IgRkZtcGVnIHRoYXQgaW5j bHVkZXMgTVBsYXllcidzIGNvbmZpZy5tYWsuCmNhdCA+IGZmbXBlZy9jb25maWcubWFrIDw8IEVP RgppZm5kZWYgRkZNUEVHX0NPTkZJR19NQUsKRkZNUEVHX0NPTkZJR19NQUsgPSAxCmluY2x1ZGUg Li4vY29uZmlnLm1hawplbmRpZiAjIEZGTVBFR19DT05GSUdfTUFLCkVPRgoKY2F0ID4gZmZtcGVn L2NvbmZpZy5oIDw8IEVPRgojaW5jbHVkZSAiLi4vY29uZmlnLmgiCkVPRgp0b3VjaCBmZm1wZWcv LmNvbmZpZwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNhdCA8PCBFT0YKCkNvbmZpZyBmaWxlcyBz dWNjZXNzZnVsbHkgZ2VuZXJhdGVkIGJ5IC4vY29uZmlndXJlICRjb25maWd1cmF0aW9uICEKCiAg SW5zdGFsbCBwcmVmaXg6ICRfcHJlZml4CiAgRGF0YSBkaXJlY3Rvcnk6ICRfZGF0YWRpcgogIENv bmZpZyBkaXJlY3QuOiAkX2NvbmZkaXIKCiAgQnl0ZSBvcmRlcjogJF9ieXRlX29yZGVyCiAgT3B0 aW1pemluZyBmb3I6ICRfb3B0aW1pemluZwoKICBMYW5ndWFnZXM6CiAgICBNZXNzYWdlcy9HVUk6 ICRsYW5ndWFnZV9tc2cKICAgIE1hbnVhbCBwYWdlczogJGxhbmd1YWdlX21hbgogICAgRG9jdW1l bnRhdGlvbjogJGxhbmd1YWdlX2RvYwoKICBFbmFibGVkIG9wdGlvbmFsIGRyaXZlcnM6CiAgICBJ bnB1dDogJGlucHV0bW9kdWxlcwogICAgQ29kZWNzOiAkY29kZWNtb2R1bGVzCiAgICBBdWRpbyBv dXRwdXQ6ICRhb21vZHVsZXMKICAgIFZpZGVvIG91dHB1dDogJHZvbW9kdWxlcwoKICBEaXNhYmxl ZCBvcHRpb25hbCBkcml2ZXJzOgogICAgSW5wdXQ6ICRub2lucHV0bW9kdWxlcwogICAgQ29kZWNz OiAkbm9jb2RlY21vZHVsZXMKICAgIEF1ZGlvIG91dHB1dDogJG5vYW9tb2R1bGVzCiAgICBWaWRl byBvdXRwdXQ6ICRub3ZvbW9kdWxlcwoKJ2NvbmZpZy5oJyBhbmQgJ2NvbmZpZy5tYWsnIGNvbnRh aW4geW91ciBjb25maWd1cmF0aW9uIG9wdGlvbnMuCk5vdGU6IElmIHlvdSBhbHRlciB0aGVzZXMg ZmlsZXMgKGZvciBpbnN0YW5jZSBDRkxBR1MpIE1QbGF5ZXIgbWF5IG5vIGxvbmdlcgogICAgICBj b21waWxlICoqKiBETyBOT1QgUkVQT1JUIEJVR1MgaWYgeW91IHR3ZWFrIHRoZXNlIGZpbGVzICoq KgoKJ21ha2UnIHdpbGwgbm93IGNvbXBpbGUgTVBsYXllciBhbmQgJ21ha2UgaW5zdGFsbCcgd2ls bCBpbnN0YWxsIGl0LgpOb3RlOiBPbiBub24tTGludXggc3lzdGVtcyB5b3UgbWlnaHQgbmVlZCB0 byB1c2UgJ2dtYWtlJyBpbnN0ZWFkIG9mICdtYWtlJy4KCkVPRgoKCmlmIHRlc3QgIiRfbXRyciIg PSB5ZXMgOyB0aGVuCiAgZWNobyAiUGxlYXNlIGNoZWNrIE1UUlIgc2V0dGluZ3MgYXQgL3Byb2Mv bXRyciAoc2VlIERPQ1MvSFRNTC8kbGFuZ3VhZ2VfZG9jL3ZpZGVvLmh0bWwjbXRycikiCiAgZWNo bwpmaQoKaWYgISB4ODZfMzI7IHRoZW4KICBjYXQgPDxFT0YKTk9URTogV2luMzIgY29kZWMgRExM cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB5b3VyIENQVSAoJGhvc3RfYXJjaCkgb3IgeW91cgpvcGVy YXRpbmcgc3lzdGVtICgkc3lzdGVtX25hbWUpLiBZb3UgbWF5IGVuY291bnRlciBhIGZldyBmaWxl cyB0aGF0IGNhbm5vdApiZSBwbGF5ZWQgZHVlIHRvIG1pc3Npbmcgb3BlbiBzb3VyY2UgdmlkZW8v YXVkaW8gY29kZWMgc3VwcG9ydC4KCkVPRgpmaQoKCmNhdCA8PEVPRgpDaGVjayAkVE1QTE9HIGlm IHlvdSB3b25kZXIgd2h5IGFuIGF1dG9kZXRlY3Rpb24gZmFpbGVkIChtYWtlIHN1cmUKZGV2ZWxv cG1lbnQgaGVhZGVycy9wYWNrYWdlcyBhcmUgaW5zdGFsbGVkKS4KCk5PVEU6IFRoZSAtLWVuYWJs ZS0qIHBhcmFtZXRlcnMgdW5jb25kaXRpb25hbGx5IGZvcmNlIG9wdGlvbnMgb24sIGNvbXBsZXRl bHkKc2tpcHBpbmcgYXV0b2RldGVjdGlvbi4gVGhpcyBiZWhhdmlvciBpcyB1bmxpa2Ugd2hhdCB5 b3UgbWF5IGJlIHVzZWQgdG8gZnJvbQphdXRvY29uZi1iYXNlZCBjb25maWd1cmUgc2NyaXB0cyB0 aGF0IGNhbiBkZWNpZGUgdG8gb3ZlcnJpZGUgeW91LiBUaGlzIGdyZWF0ZXIKbGV2ZWwgb2YgY29u dHJvbCBjb21lcyBhdCBhIHByaWNlLiBZb3UgbWF5IGhhdmUgdG8gcHJvdmlkZSB0aGUgY29ycmVj dCBjb21waWxlcgphbmQgbGlua2VyIGZsYWdzIHlvdXJzZWxmLgpJZiB5b3UgdXNlZCBvbmUgb2Yg dGhlc2Ugb3B0aW9ucyAoZXhjZXB0IC0tZW5hYmxlLW1lbnUgYW5kIHNpbWlsYXIgb25lcyB0aGF0 CnR1cm4gb24gaW50ZXJuYWwgZmVhdHVyZXMpIGFuZCBleHBlcmllbmNlIGEgY29tcGlsYXRpb24g b3IgbGlua2luZyBmYWlsdXJlLAptYWtlIHN1cmUgeW91IGhhdmUgcGFzc2VkIHRoZSBuZWNlc3Nh cnkgY29tcGlsZXIvbGlua2VyIGZsYWdzIHRvIGNvbmZpZ3VyZS4KCklmIHlvdSBzdXNwZWN0IGEg YnVnLCBwbGVhc2UgcmVhZCBET0NTL0hUTUwvJGxhbmd1YWdlX2RvYy9idWdyZXBvcnRzLmh0bWwu CgpFT0YKCmlmIHRlc3QgIiR3YXJuX2NmbGFncyIgPSB5ZXM7IHRoZW4KICBjYXQgPDxFT0YKCk1Q bGF5ZXIgY29tcGlsYXRpb24gd2lsbCB1c2UgdGhlIENQUEZMQUdTL0NGTEFHUy9MREZMQUdTL1lB U01GTEFHUyBzZXQgYnkgeW91LApidXQ6CgogICAgKioqICoqKiAgRE8gTk9UIFJFUE9SVCBCVUdT IElGIElUIERPRVMgTk9UIENPTVBJTEUvV09SSyEgICoqKiAqKioKCkl0IGlzIHN0cm9uZ2x5IHJl Y29tbWVuZGVkIHRvIGxldCBNUGxheWVyIGNob29zZSB0aGUgY29ycmVjdCAqRkxBR1MhClRvIGRv IHNvLCByZW1vdmUgKkZMQUdTIGZyb20gdGhlIGVudmlyb25tZW50IGFuIHJlLXJ1biBjb25maWd1 cmUuCllvdSBjYW4gdXNlIC0tZXh0cmEtKmZsYWdzIHRvIGFkZCBjdXN0b20gZmxhZ3MgaWYgbmVj ZXNzYXJ5LgoKRU9GCmZpCgojIExhc3QgbW92ZToKY2xlYW51cAo= --MP_/w7RPkauRur=1M8kINbdXf=G-- --Sig_/8fKccYUnz=yMf=_+5.c9Qzg Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCgAGBQJWKfvCAAoJEPTB05F+rO6TzG8P/jlTahrwheBRV2qzTl9Px7Uw FRW2+9E4Hh+gI84JPTmAGqY1vqiBNr9KBPrOwY3WYNlQgfW+70CuI1R3jKhsZ11x Jf41lWJxmoiDgYZ7NiS26aTIn5Ia7p+H2ox+3X2ZZ4JjtQvhm56Yek19nBALfYpM 8zBu6XIceOR91HMuf3y/dZJIjIh81iLEAnwSlTxB6KeejbhUI4dEbeOlpxqLHqQp SonszdZglV+HQq78RMCiMSme8NUVj+3OkdKEhEYKuskqDGGa4oV4BDygQKM14uvJ lxst3oGhiZows/Jza2nF/f4k63s/OcMenVfDDiscRXk6aCPj5CPDdSwlJTic2QgB kj2a6PGDL33qujZ2clZtHDhc+NwG0gF2OUiGmw53LjDTxwF5cbcBzvdZxgtZhEb3 x5XJspl0poVUZ6UCxNSDyUC9GyzuBvTz5bsGG2gyBWW/vZV95Qp5fd5JOtI5hbVD yK8K08Yv1ECKrpWTtSFyGX5ZgMz0s7CAbQU7MCYWKA+/QMbkaq8mUM6zxPFwbnVa y9C7wyfpPiKtlHfNhMbfvFAKASsjK87grbgrrRrro1i9Tq5A5bCxlJ2RLRQMlM6k grc7pVMvZrH/5uFS8CVmBmd4kDyoWUBXtfOxQ9aU6zcYpXuaWncLBY26v7b19maN f/zdpBmk2NiA7CcCPQlK =+p6P -----END PGP SIGNATURE----- --Sig_/8fKccYUnz=yMf=_+5.c9Qzg--