From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic306-47.consmr.mail.gq1.yahoo.com (sonic306-47.consmr.mail.gq1.yahoo.com [98.137.68.110]) by sourceware.org (Postfix) with ESMTPS id 65DD93938C23 for ; Fri, 1 May 2020 19:02:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 65DD93938C23 X-YMail-OSG: D4zTmLMVM1mSno6.nVUIMEpSoCHUjTuhqZs4Fx.V1XGj7CQBf1v88Cki59bFtPi dYaxS9o48rnLwXDWVSuPOwh.Tw6jKlamwTDvoJgT5Q.Rpb5HLwytBaWO9sUFpcZAdLUmDhURCaB0 j0i8SNvcBKVTcqcNkYw6qqjQfr_udLbXAgBYTAftkmWJ9fPY8jWOEx_HBI9Dfwn80nQdRZQyHHqK McKDxrvIwLGE4KdXcETmI5f5P_6TfW7ywQKI3d5qDU_Aq8uXWQwx7bofJoVSn0LC.hy0AaeYw7ET Ds07SmIRnXKcwyNtQbVippW9GHpDw_zOKm2sOPfkbq0Pya5dRY1JLToqdWbOmfjNjMf.owOprdU7 djQuiLoQ3_aicceEUu9oIaRAhY9omp9f7CJ_KV_HBdvBfImM7RAzkamHJS6rO6wTtNtt6DLG4FJ. 4iHCiEtq5FbYy._lsVqsDhjE1rZvbeTQ58H8xB8gVUIWedNJkEG3Qp4HsmX.nZrC0Sr7ZQjkf4LJ ae1OV7T13deDzWcI6mCS7sBHS6lk.cqcgR.TXWzEk_F6beXGdGSRjSxwWhAT.epd9kWnfO_zKORe 0.GMQKK8UOSpwT0VwXZXOP8gbhh7.O1AB00JPrwaoOTI28zUlgeZYSLvYZHstf4RfYhEQgFCxbzL 2dRmI6Cgftd3JAI.verWk4SZq0R3ETnsyMLQ5DowBhZgkh2h9tiUBr7NI5m4CYKwmT5XuP_oskEC QkmZBN6PrTMnutuMBq9KWg8KjJuk7O9VCLyEkvMVeCako8bN.72qmY8G6NCn6MCZo.HSiEH6h.Dj kbgLm2RXfT2TnFDmfD3mFMUNKJNGoV4KoO2vjkAkAGb8g7zcy1Sk_bpS3UIdTgywgWzrKAluKBX4 qkCOfwp6Y_m3nudyWNn61yCtd2enKQcf41oejr78jmWuOi_5Md9e9fb_tRlUcvExXICVAkSUFr0F H7oFh4RtUT.yyrh7Fyt2dCPHrZb7FnFJhs4t3TLvRoA7XhIm5PhI.Nv9OXEsGm0kAOqsdL6YbPvG 2eCvppLqjy9evX7_dd1g.egtV8kHhHiFwuSiyIsY6mCkhoD2SVaTngMqI8h76lSklKtCm31nHCZh XEYZaIXT_7STZTCl.nlRBFYBT2uIpf4Xi0DL7Vxn0f49eTdBDw.JNmy9yfrqktm.6.t7IW2WZLx. Ncuj9t2tQDqsprVNeRmYFNUHcfGzT4DAHI0ER8qIGeF.yb7.Z3i9JXoHr_1FktdmQN.I75kwJKEi k8BNrq8Imbke.hRahTJJA0NWD0KYU5e8xHIAWL.bHZEH6WAttobQ.TDRX_xkOM2g_YXo.eGXmx0O 5VXtrsjUY48gv20MgvVcXjqoMlJjB5jB6icifjDLTpLUZJJTMSILev.ehzVuEFTMkxu.LcVw2Zp2 D2U4wnhrAwIpqD4zm9vvLDQkc3Y2Q36Ex9DPyLTPocsPdFarYR1jeInng1gM5NaVnKA-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.gq1.yahoo.com with HTTP; Fri, 1 May 2020 19:02:04 +0000 Date: Fri, 1 May 2020 19:00:02 +0000 (UTC) From: Murugan Saivam To: "crossgcc@sourceware.org" Message-ID: <1125080959.521606.1588359602716@mail.yahoo.com> Subject: crosstool-ng hangs on running make command MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_521605_543489725.1588359602716" References: <1125080959.521606.1588359602716.ref@mail.yahoo.com> X-Mailer: WebService/1.1.15820 YMailNorrin Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36 X-Spam-Status: No, score=1.5 required=5.0 tests=BAYES_50, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: crossgcc@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: crossgcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 May 2020 19:02:09 -0000 ------=_Part_521605_543489725.1588359602716 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, I installed cygwinx86_64 with packages as given in crosstool-ng.org documen= tation. i downloaded crosstool-ng tar ball and extracted it. i executed bootstrap, configure and make.i get below result and no further = progress even after 2hours =C2=A0make/usr/bin/make=C2=A0 all-recursivemake[1]: Entering directory '/cy= gdrive/c/cygwin64/crosstool-ng'Making all in kconfigmake[2]: Entering direc= tory '/cygdrive/c/cygwin64/crosstool-ng/kconfig'/usr/bin/make=C2=A0 all-amm= ake[3]: Entering directory '/cygdrive/c/cygwin64/crosstool-ng/kconfig'depba= se=3D`echo conf.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\gcc -DHAVE_CONFIG_H = -I. -I..=C2=A0 -include config.h -DCONFIG_=3D\"CT_\"=C2=A0 =C2=A0-g -O2 -MT= conf.o -MD -MP -MF $depbase.Tpo -c -o conf.o conf.c &&\mv -f $depbase.Tpo = $depbase.Podepbase=3D`echo zconf.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\gcc= -DHAVE_CONFIG_H -I. -I..=C2=A0 -include config.h -DCONFIG_=3D\"CT_\"=C2=A0= =C2=A0-g -O2 -MT zconf.o -MD -MP -MF $depbase.Tpo -c -o zconf.o zconf.c &&= \mv -f $depbase.Tpo $depbase.Po/cygdrive/c/MinGW/bin/libtool=C2=A0 --tag CC= =C2=A0 --mode=3Dlink gcc=C2=A0 -g -O2=C2=A0 =C2=A0-o conf.exe conf.o zconf.= o -lintl i attached log file. Please guide and help me resolving this issue. thanking you Regards, Murugan,, +919791019531 . ------=_Part_521605_543489725.1588359602716 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.log" Content-ID: <9209172e-159d-5582-235e-ad050b5b5920@yahoo.com> VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hp bGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2Vz IGEgbWlzdGFrZS4KCkl0IHdhcyBjcmVhdGVkIGJ5IGNyb3NzdG9vbC1ORyBjb25maWd1cmUgMS4y NC4wLjEwNV81NjU5MzY2LCB3aGljaCB3YXMKZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5 LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCgogICQgLi9jb25maWd1cmUgLS1wcmVmaXg9 L2N5Z2RyaXZlL2MvY3lnd2luNjQvY3Jvc3N0b29sLW5nCgojIyAtLS0tLS0tLS0gIyMKIyMgUGxh dGZvcm0uICMjCiMjIC0tLS0tLS0tLSAjIwoKaG9zdG5hbWUgPSBWQUlPLVZBSU8KdW5hbWUgLW0g PSB4ODZfNjQKdW5hbWUgLXIgPSAzLjEuNCgwLjM0MC81LzMpCnVuYW1lIC1zID0gQ1lHV0lOX05U LTYuMQp1bmFtZSAtdiA9IDIwMjAtMDItMTkgMDg6NDkKCi91c3IvYmluL3VuYW1lIC1wID0gdW5r bm93bgovYmluL3VuYW1lIC1YICAgICA9IHVua25vd24KCi9iaW4vYXJjaCAgICAgICAgICAgICAg PSB4ODZfNjQKL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IHVua25vd24KL3Vzci9jb252ZXgvZ2V0 c3lzaW5mbyA9IHVua25vd24KL3Vzci9iaW4vaG9zdGluZm8gICAgICA9IHVua25vd24KL2Jpbi9t YWNoaW5lICAgICAgICAgICA9IHVua25vd24KL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IHVua25v d24KL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IHVua25vd24KClBBVEg6IC91c3IvbG9jYWwvYmlu ClBBVEg6IC91c3IvYmluClBBVEg6IC9jeWdkcml2ZS9jL1Byb2dyYW0gRmlsZXMgKHg4NikvUHl0 aG9uMzgtMzIvU2NyaXB0cwpQQVRIOiAvY3lnZHJpdmUvYy9Qcm9ncmFtIEZpbGVzICh4ODYpL1B5 dGhvbjM4LTMyClBBVEg6IC9jeWdkcml2ZS9jL1VzZXJzL1ZBSU8vQXBwRGF0YS9Mb2NhbC9Qcm9n cmFtcy9QeXRob24vUHl0aG9uMzctMzIKUEFUSDogIEMKUEFUSDogL1Byb2dyYW0gRmlsZXMvQ29t bW9uIEZpbGVzL01pY3Jvc29mdCBTaGFyZWQvV2luZG93cyBMaXZlClBBVEg6IC9jeWdkcml2ZS9j L1Byb2dyYW0gRmlsZXMgKHg4NikvQ29tbW9uIEZpbGVzL01pY3Jvc29mdCBTaGFyZWQvV2luZG93 cyBMaXZlClBBVEg6IC9jeWdkcml2ZS9jL1dpbmRvd3Mvc3lzdGVtMzIKUEFUSDogL2N5Z2RyaXZl L2MvV2luZG93cwpQQVRIOiAvY3lnZHJpdmUvYy9XaW5kb3dzL1N5c3RlbTMyL1diZW0KUEFUSDog L2N5Z2RyaXZlL2MvV2luZG93cy9TeXN0ZW0zMi9XaW5kb3dzUG93ZXJTaGVsbC92MS4wClBBVEg6 IC9jeWdkcml2ZS9jL1Byb2dyYW0gRmlsZXMgKHg4NikvU29ueS9WQUlPIFN0YXJ0dXAgU2V0dGlu ZyBUb29sClBBVEg6IC9jeWdkcml2ZS9jL1Byb2dyYW0gRmlsZXMgKHg4NikvV2luZG93cyBMaXZl L1NoYXJlZApQQVRIOiAvY3lnZHJpdmUvYy9Qcm9ncmFtIEZpbGVzICh4ODYpL0lWSSBGb3VuZGF0 aW9uL1ZJU0EvV2luTlQvQmluClBBVEg6IC9jeWdkcml2ZS9jL1Byb2dyYW0gRmlsZXMvSVZJIEZv dW5kYXRpb24vVklTQS9XaW42NC9CaW4KUEFUSDogL2N5Z2RyaXZlL2MvUHJvZ3JhbSBGaWxlcyAo eDg2KS9JVkkgRm91bmRhdGlvbi9WSVNBL1dpbk5UL0JpbgpQQVRIOiAvY3lnZHJpdmUvYy9Qcm9n cmFtIEZpbGVzICh4ODYpL01pY3Jvc29mdCBTUUwgU2VydmVyLzEwMC9Ub29scy9CaW5uClBBVEg6 IC9jeWdkcml2ZS9jL1Byb2dyYW0gRmlsZXMvTWljcm9zb2Z0IFNRTCBTZXJ2ZXIvMTAwL1Rvb2xz L0Jpbm4KUEFUSDogL2N5Z2RyaXZlL2MvUHJvZ3JhbSBGaWxlcy9NaWNyb3NvZnQgU1FMIFNlcnZl ci8xMDAvRFRTL0Jpbm4KUEFUSDogL2N5Z2RyaXZlL2MvUHJvZ3JhbSBGaWxlcyAoeDg2KS9NaWNy b3NvZnQgVmlzdWFsIFN0dWRpbyAxMC4wL1ZDL2JpbgpQQVRIOiAvY3lnZHJpdmUvYy9Qcm9ncmFt IEZpbGVzICh4ODYpL01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLzIwMTkvQ29tbXVuaXR5L0NvbW1v bjcvSURFClBBVEg6IC9jeWdkcml2ZS9jL1Byb2dyYW0gRmlsZXMgKHg4NikvTWljcm9zb2Z0IFZp c3VhbCBTdHVkaW8gMTAuMC9Db21tb243L0lERQpQQVRIOiAvY3lnZHJpdmUvYy9NaW5HVy9iaW4K UEFUSDogL3Vzci9saWIvbGFwYWNrCgoKIyMgLS0tLS0tLS0tLS0gIyMKIyMgQ29yZSB0ZXN0cy4g IyMKIyMgLS0tLS0tLS0tLS0gIyMKCmNvbmZpZ3VyZToyNTUzOiBjaGVja2luZyBmb3IgYSBCU0Qt Y29tcGF0aWJsZSBpbnN0YWxsCmNvbmZpZ3VyZToyNjIxOiByZXN1bHQ6IC91c3IvYmluL2luc3Rh bGwgLWMKY29uZmlndXJlOjI2MzI6IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQg aXMgc2FuZQpjb25maWd1cmU6MjY4NzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjI4Mzg6IGNoZWNr aW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGlyIC1wCmNvbmZpZ3VyZToyODc3OiByZXN1bHQ6IC91 c3IvYmluL21rZGlyIC1wCmNvbmZpZ3VyZToyODg0OiBjaGVja2luZyBmb3IgZ2F3awpjb25maWd1 cmU6MjkwMDogZm91bmQgL3Vzci9iaW4vZ2F3awpjb25maWd1cmU6MjkxMTogcmVzdWx0OiBnYXdr CmNvbmZpZ3VyZToyOTIyOiBjaGVja2luZyB3aGV0aGVyIG1ha2Ugc2V0cyAkKE1BS0UpCmNvbmZp Z3VyZToyOTQ0OiByZXN1bHQ6IHllcwpjb25maWd1cmU6Mjk3MzogY2hlY2tpbmcgd2hldGhlciBt YWtlIHN1cHBvcnRzIG5lc3RlZCB2YXJpYWJsZXMKY29uZmlndXJlOjI5OTA6IHJlc3VsdDogeWVz CmNvbmZpZ3VyZTozMDY5OiBjaGVja2luZyBob3cgdG8gY3JlYXRlIGEgcGF4IHRhciBhcmNoaXZl CmNvbmZpZ3VyZTozMDgwOiB0YXIgLS12ZXJzaW9uCnRhciAoR05VIHRhcikgMS4yOQpQYWNrYWdl ZCBieSBDeWd3aW4gKDEuMjktMSkKQ29weXJpZ2h0IChDKSAyMDE1IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgpMaWNlbnNlIEdQTHYzKzogR05VIEdQTCB2ZXJzaW9uIDMgb3IgbGF0ZXIg PGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sPi4KVGhpcyBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFuZCByZWRpc3RyaWJ1dGUgaXQuClRoZXJlIGlzIE5P IFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcuCgpXcml0dGVuIGJ5IEpv aG4gR2lsbW9yZSBhbmQgSmF5IEZlbmxhc29uLgpjb25maWd1cmU6MzA4MzogJD8gPSAwCmNvbmZp Z3VyZTozMTIzOiB0YXJkaXI9Y29uZnRlc3QuZGlyICYmIGV2YWwgdGFyIC0tZm9ybWF0PXBvc2l4 IC1jaGYgLSAiJHRhcmRpciIgPmNvbmZ0ZXN0LnRhcgpjb25maWd1cmU6MzEyNjogJD8gPSAwCmNv bmZpZ3VyZTozMTMwOiB0YXIgLXhmIC0gPGNvbmZ0ZXN0LnRhcgpjb25maWd1cmU6MzEzMzogJD8g PSAwCmNvbmZpZ3VyZTozMTM1OiBjYXQgY29uZnRlc3QuZGlyL2ZpbGUKR3JlcE1lCmNvbmZpZ3Vy ZTozMTM4OiAkPyA9IDAKY29uZmlndXJlOjMxNTE6IHJlc3VsdDogZ251dGFyCmNvbmZpZ3VyZToz MjA0OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRp b25zIG9mIE1ha2VmaWxlcwpjb25maWd1cmU6MzIxMzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjMy NzY6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTozMjkwOiByZXN1bHQ6IHg4 Nl82NC1wYy1jeWd3aW4KY29uZmlndXJlOjMzMTA6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUK Y29uZmlndXJlOjMzMjM6IHJlc3VsdDogeDg2XzY0LXBjLWN5Z3dpbgpjb25maWd1cmU6MzM1Mjog Y2hlY2tpbmcgd2hldGhlciBsbiAtcyB3b3Jrcwpjb25maWd1cmU6MzM1NjogcmVzdWx0OiB5ZXMK Y29uZmlndXJlOjMzNzM6IGNoZWNraW5nIHdoZXRoZXIgaW5zdGFsbCB0YWtlcyAtLXN0cmlwLXBy b2dyYW0gb3B0aW9uCmNvbmZpZ3VyZTozMzg5OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MzQ3Mzog Y2hlY2tpbmcgZm9yIGdncmVwCmNvbmZpZ3VyZTozNTAzOiByZXN1bHQ6IG5vCmNvbmZpZ3VyZToz NDczOiBjaGVja2luZyBmb3IgZ3JlcApjb25maWd1cmU6MzQ4OTogZm91bmQgL3Vzci9iaW4vZ3Jl cApjb25maWd1cmU6MzUwMDogcmVzdWx0OiBncmVwCmNvbmZpZ3VyZTozNTMwOiBtdXN0IGRldGVy bWluZSBhYnNvbHV0ZSBwYXRoIGZvciAnJEdSRVAnOgp8IGdyZXAKY29uZmlndXJlOjM1NDk6IGNo ZWNraW5nIGZvciBhYnNvbHV0ZSBwYXRoIHRvIGdyZXAKY29uZmlndXJlOjM1NTI6IHJlc3VsdDog L3Vzci9iaW4vZ3JlcApjb25maWd1cmU6MzYwNzogY2hlY2tpbmcgZm9yIGdlZ3JlcApjb25maWd1 cmU6MzYzNzogcmVzdWx0OiBubwpjb25maWd1cmU6MzYwNzogY2hlY2tpbmcgZm9yIGVncmVwCmNv bmZpZ3VyZTozNjIzOiBmb3VuZCAvdXNyL2Jpbi9lZ3JlcApjb25maWd1cmU6MzYzNDogcmVzdWx0 OiBlZ3JlcApjb25maWd1cmU6MzY2NDogbXVzdCBkZXRlcm1pbmUgYWJzb2x1dGUgcGF0aCBmb3Ig JyRFR1JFUCc6CnwgZWdyZXAKY29uZmlndXJlOjM2ODM6IGNoZWNraW5nIGZvciBhYnNvbHV0ZSBw YXRoIHRvIGVncmVwCmNvbmZpZ3VyZTozNjg2OiByZXN1bHQ6IC91c3IvYmluL2VncmVwCmNvbmZp Z3VyZTozNjkxOiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQg LWUKY29uZmlndXJlOjM3NDk6IHJlc3VsdDogL3Vzci9iaW4vZ3JlcApjb25maWd1cmU6Mzc1NDog Y2hlY2tpbmcgZm9yIGVncmVwCmNvbmZpZ3VyZTozODE2OiByZXN1bHQ6IC91c3IvYmluL2dyZXAg LUUKY29uZmlndXJlOjM5MDg6IGNoZWNraW5nIGZvciBzZWQKY29uZmlndXJlOjM5Mjc6IGNoZWNr aW5nIFNFRCBhdDoKfCAvdXNyL2Jpbi9zZWQKY29uZmlndXJlOjM5NDE6IGxvb2tpbmcgZm9yICdH TlUgc2VkW14wLTldKiBbNC05XVwuJyByZWdleHAgaW4KY29uZmlndXJlOjM5NDQ6IHZlcnNpb24g aW5mbzoKfCAvdXNyL2Jpbi9zZWQgKEdOVSBzZWQpIDQuNAp8IFBhY2thZ2VkIGJ5IEN5Z3dpbiAo NC40LTEpCnwgQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j Lgp8IExpY2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciA8aHR0cDovL2du dS5vcmcvbGljZW5zZXMvZ3BsLmh0bWw+Lgp8IFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFy ZSBmcmVlIHRvIGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0Lgp8IFRoZXJlIGlzIE5PIFdBUlJB TlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcuCnwgCnwgV3JpdHRlbiBieSBKYXkg RmVubGFzb24sIFRvbSBMb3JkLCBLZW4gUGl6emluaSwKfCBhbmQgUGFvbG8gQm9uemluaS4KfCBH TlUgc2VkIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zZWQvPi4KfCBH ZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhl bHAvPi4KfCBFLW1haWwgYnVnIHJlcG9ydHMgdG86IDxidWctc2VkQGdudS5vcmc+Lgpjb25maWd1 cmU6Mzk3MzogcmVzdWx0OiAvdXNyL2Jpbi9zZWQKY29uZmlndXJlOjM5NzY6IGNoZWNraW5nIGZv ciBHTlUgc2VkID49IDQuMApjb25maWd1cmU6Mzk3OTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQw NjE6IGNoZWNraW5nIGZvciBnY2MKY29uZmlndXJlOjQwNzc6IGZvdW5kIC91c3IvYmluL2djYwpj b25maWd1cmU6NDA4ODogcmVzdWx0OiBnY2MKY29uZmlndXJlOjQzMTc6IGNoZWNraW5nIGZvciBD IGNvbXBpbGVyIHZlcnNpb24KY29uZmlndXJlOjQzMjY6IGdjYyAtLXZlcnNpb24gPiY1CmdjYyAo R0NDKSA5LjMuMApDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29u ZGl0aW9ucy4gIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKY29uZmlndXJlOjQzMzc6 ICQ/ID0gMApjb25maWd1cmU6NDMyNjogZ2NjIC12ID4mNQpVc2luZyBidWlsdC1pbiBzcGVjcy4K Q09MTEVDVF9HQ0M9Z2NjCkNPTExFQ1RfTFRPX1dSQVBQRVI9L3Vzci9saWIvZ2NjL3g4Nl82NC1w Yy1jeWd3aW4vOS4zLjAvbHRvLXdyYXBwZXIuZXhlClRhcmdldDogeDg2XzY0LXBjLWN5Z3dpbgpD b25maWd1cmVkIHdpdGg6IC9jeWdkcml2ZS9pL3N6c3ovdG1wcC9nY2MvZ2NjLTkuMy4wLTIueDg2 XzY0L3NyYy9nY2MtOS4zLjAvY29uZmlndXJlIC0tc3JjZGlyPS9jeWdkcml2ZS9pL3N6c3ovdG1w cC9nY2MvZ2NjLTkuMy4wLTIueDg2XzY0L3NyYy9nY2MtOS4zLjAgLS1wcmVmaXg9L3VzciAtLWV4 ZWMtcHJlZml4PS91c3IgLS1sb2NhbHN0YXRlZGlyPS92YXIgLS1zeXNjb25mZGlyPS9ldGMgLS1k b2NkaXI9L3Vzci9zaGFyZS9kb2MvZ2NjIC0taHRtbGRpcj0vdXNyL3NoYXJlL2RvYy9nY2MvaHRt bCAtQyAtLWJ1aWxkPXg4Nl82NC1wYy1jeWd3aW4gLS1ob3N0PXg4Nl82NC1wYy1jeWd3aW4gLS10 YXJnZXQ9eDg2XzY0LXBjLWN5Z3dpbiAtLXdpdGhvdXQtbGliaWNvbnYtcHJlZml4IC0td2l0aG91 dC1saWJpbnRsLXByZWZpeCAtLWxpYmV4ZWNkaXI9L3Vzci9saWIgLS1lbmFibGUtc2hhcmVkIC0t ZW5hYmxlLXNoYXJlZC1saWJnY2MgLS1lbmFibGUtc3RhdGljIC0tZW5hYmxlLXZlcnNpb24tc3Bl Y2lmaWMtcnVudGltZS1saWJzIC0tZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1fX2N4YV9hdGV4 aXQgLS13aXRoLWR3YXJmMiAtLXdpdGgtdHVuZT1nZW5lcmljIC0tZW5hYmxlLWxhbmd1YWdlcz1j LGMrKyxmb3J0cmFuLGx0byxvYmpjLG9iai1jKysgLS1lbmFibGUtZ3JhcGhpdGUgLS1lbmFibGUt dGhyZWFkcz1wb3NpeCAtLWVuYWJsZS1saWJhdG9taWMgLS1lbmFibGUtbGliZ29tcCAtLWVuYWJs ZS1saWJxdWFkbWF0aCAtLWVuYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0IC0tZGlzYWJsZS1saWJz c3AgLS1lbmFibGUtbGliYWRhIC0tZGlzYWJsZS1zeW12ZXJzIC0td2l0aC1nbnUtbGQgLS13aXRo LWdudS1hcyAtLXdpdGgtY2xvb2ctaW5jbHVkZT0vdXNyL2luY2x1ZGUvY2xvb2ctaXNsIC0td2l0 aG91dC1saWJpY29udi1wcmVmaXggLS13aXRob3V0LWxpYmludGwtcHJlZml4IC0td2l0aC1zeXN0 ZW0temxpYiAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgLS13aXRoLWRlZmF1bHQtbGlic3RkY3h4 LWFiaT1nY2M0LWNvbXBhdGlibGUgLS1lbmFibGUtbGlic3RkY3h4LWZpbGVzeXN0ZW0tdHMKVGhy ZWFkIG1vZGVsOiBwb3NpeApnY2MgdmVyc2lvbiA5LjMuMCAoR0NDKSAKY29uZmlndXJlOjQzMzc6 ICQ/ID0gMApjb25maWd1cmU6NDMyNjogZ2NjIC1WID4mNQpnY2M6IGVycm9yOiB1bnJlY29nbml6 ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiAnLVYnCmdjYzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZp bGVzCmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3VyZTo0MzM3OiAkPyA9IDEKY29uZmln dXJlOjQzMjY6IGdjYyAtcXZlcnNpb24gPiY1CmdjYzogZXJyb3I6IHVucmVjb2duaXplZCBjb21t YW5kIGxpbmUgb3B0aW9uICctcXZlcnNpb24nOyBkaWQgeW91IG1lYW4gJy0tdmVyc2lvbic/Cmdj YzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZpbGVzCmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNv bmZpZ3VyZTo0MzM3OiAkPyA9IDEKY29uZmlndXJlOjQzNTc6IGNoZWNraW5nIHdoZXRoZXIgdGhl IEMgY29tcGlsZXIgd29ya3MKY29uZmlndXJlOjQzNzk6IGdjYyAgICBjb25mdGVzdC5jICA+JjUK Y29uZmlndXJlOjQzODM6ICQ/ID0gMApjb25maWd1cmU6NDQzMTogcmVzdWx0OiB5ZXMKY29uZmln dXJlOjQ0MzQ6IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFt ZQpjb25maWd1cmU6NDQzNjogcmVzdWx0OiBhLmV4ZQpjb25maWd1cmU6NDQ0MjogY2hlY2tpbmcg Zm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcwpjb25maWd1cmU6NDQ0OTogZ2NjIC1vIGNvbmZ0ZXN0 LmV4ZSAgICBjb25mdGVzdC5jICA+JjUKY29uZmlndXJlOjQ0NTM6ICQ/ID0gMApjb25maWd1cmU6 NDQ3NTogcmVzdWx0OiAuZXhlCmNvbmZpZ3VyZTo0NDk3OiBjaGVja2luZyB3aGV0aGVyIHdlIGFy ZSBjcm9zcyBjb21waWxpbmcKY29uZmlndXJlOjQ1MDU6IGdjYyAtbyBjb25mdGVzdC5leGUgICAg Y29uZnRlc3QuYyAgPiY1CmNvbmZpZ3VyZTo0NTA5OiAkPyA9IDAKY29uZmlndXJlOjQ1MTY6IC4v Y29uZnRlc3QuZXhlCmNvbmZpZ3VyZTo0NTIwOiAkPyA9IDAKY29uZmlndXJlOjQ1MzU6IHJlc3Vs dDogbm8KY29uZmlndXJlOjQ1NDA6IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVz CmNvbmZpZ3VyZTo0NTYyOiBnY2MgLWMgICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6NDU2Njog JD8gPSAwCmNvbmZpZ3VyZTo0NTg3OiByZXN1bHQ6IG8KY29uZmlndXJlOjQ1OTE6IGNoZWNraW5n IHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlcgpjb25maWd1cmU6NDYxMDog Z2NjIC1jICAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjQ2MTA6ICQ/ID0gMApjb25maWd1cmU6 NDYxOTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQ2Mjg6IGNoZWNraW5nIHdoZXRoZXIgZ2NjIGFj Y2VwdHMgLWcKY29uZmlndXJlOjQ2NDg6IGdjYyAtYyAtZyAgY29uZnRlc3QuYyA+JjUKY29uZmln dXJlOjQ2NDg6ICQ/ID0gMApjb25maWd1cmU6NDY4OTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQ3 MDY6IGNoZWNraW5nIGZvciBnY2Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5CmNvbmZpZ3VyZTo0 NzY5OiBnY2MgIC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjQ3Njk6ICQ/ID0g MApjb25maWd1cmU6NDc4MjogcmVzdWx0OiBub25lIG5lZWRlZApjb25maWd1cmU6NDgwNzogY2hl Y2tpbmcgd2hldGhlciBnY2MgdW5kZXJzdGFuZHMgLWMgYW5kIC1vIHRvZ2V0aGVyCmNvbmZpZ3Vy ZTo0ODI5OiBnY2MgLWMgY29uZnRlc3QuYyAtbyBjb25mdGVzdDIubwpjb25maWd1cmU6NDgzMjog JD8gPSAwCmNvbmZpZ3VyZTo0ODI5OiBnY2MgLWMgY29uZnRlc3QuYyAtbyBjb25mdGVzdDIubwpj b25maWd1cmU6NDgzMjogJD8gPSAwCmNvbmZpZ3VyZTo0ODQ0OiByZXN1bHQ6IHllcwpjb25maWd1 cmU6NDg2NDogY2hlY2tpbmcgd2hldGhlciBtYWtlIHN1cHBvcnRzIHRoZSBpbmNsdWRlIGRpcmVj dGl2ZQpjb25maWd1cmU6NDg3OTogbWFrZSAtZiBjb25mbWYuR05VICYmIGNhdCBjb25maW5jLm91 dAp0aGlzIGlzIHRoZSBhbV9fZG9pdCB0YXJnZXQKY29uZmlndXJlOjQ4ODI6ICQ/ID0gMApjb25m aWd1cmU6NDkwMTogcmVzdWx0OiB5ZXMgKEdOVSBzdHlsZSkKY29uZmlndXJlOjQ5MjY6IGNoZWNr aW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgZ2NjCmNvbmZpZ3VyZTo1MDM3OiByZXN1bHQ6IGdjYzMK Y29uZmlndXJlOjUxMTI6IGNoZWNraW5nIGZvciBnKysKY29uZmlndXJlOjUxMjg6IGZvdW5kIC91 c3IvYmluL2crKwpjb25maWd1cmU6NTEzOTogcmVzdWx0OiBnKysKY29uZmlndXJlOjUxNjY6IGNo ZWNraW5nIGZvciBDKysgY29tcGlsZXIgdmVyc2lvbgpjb25maWd1cmU6NTE3NTogZysrIC0tdmVy c2lvbiA+JjUKZysrIChHQ0MpIDkuMy4wCkNvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBm b3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZv ciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCgpj b25maWd1cmU6NTE4NjogJD8gPSAwCmNvbmZpZ3VyZTo1MTc1OiBnKysgLXYgPiY1ClVzaW5nIGJ1 aWx0LWluIHNwZWNzLgpDT0xMRUNUX0dDQz1nKysKQ09MTEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xp Yi9nY2MveDg2XzY0LXBjLWN5Z3dpbi85LjMuMC9sdG8td3JhcHBlci5leGUKVGFyZ2V0OiB4ODZf NjQtcGMtY3lnd2luCkNvbmZpZ3VyZWQgd2l0aDogL2N5Z2RyaXZlL2kvc3pzei90bXBwL2djYy9n Y2MtOS4zLjAtMi54ODZfNjQvc3JjL2djYy05LjMuMC9jb25maWd1cmUgLS1zcmNkaXI9L2N5Z2Ry aXZlL2kvc3pzei90bXBwL2djYy9nY2MtOS4zLjAtMi54ODZfNjQvc3JjL2djYy05LjMuMCAtLXBy ZWZpeD0vdXNyIC0tZXhlYy1wcmVmaXg9L3VzciAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLXN5c2Nv bmZkaXI9L2V0YyAtLWRvY2Rpcj0vdXNyL3NoYXJlL2RvYy9nY2MgLS1odG1sZGlyPS91c3Ivc2hh cmUvZG9jL2djYy9odG1sIC1DIC0tYnVpbGQ9eDg2XzY0LXBjLWN5Z3dpbiAtLWhvc3Q9eDg2XzY0 LXBjLWN5Z3dpbiAtLXRhcmdldD14ODZfNjQtcGMtY3lnd2luIC0td2l0aG91dC1saWJpY29udi1w cmVmaXggLS13aXRob3V0LWxpYmludGwtcHJlZml4IC0tbGliZXhlY2Rpcj0vdXNyL2xpYiAtLWVu YWJsZS1zaGFyZWQgLS1lbmFibGUtc2hhcmVkLWxpYmdjYyAtLWVuYWJsZS1zdGF0aWMgLS1lbmFi bGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMgLS1lbmFibGUtYm9vdHN0cmFwIC0tZW5h YmxlLV9fY3hhX2F0ZXhpdCAtLXdpdGgtZHdhcmYyIC0td2l0aC10dW5lPWdlbmVyaWMgLS1lbmFi bGUtbGFuZ3VhZ2VzPWMsYysrLGZvcnRyYW4sbHRvLG9iamMsb2JqLWMrKyAtLWVuYWJsZS1ncmFw aGl0ZSAtLWVuYWJsZS10aHJlYWRzPXBvc2l4IC0tZW5hYmxlLWxpYmF0b21pYyAtLWVuYWJsZS1s aWJnb21wIC0tZW5hYmxlLWxpYnF1YWRtYXRoIC0tZW5hYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQg LS1kaXNhYmxlLWxpYnNzcCAtLWVuYWJsZS1saWJhZGEgLS1kaXNhYmxlLXN5bXZlcnMgLS13aXRo LWdudS1sZCAtLXdpdGgtZ251LWFzIC0td2l0aC1jbG9vZy1pbmNsdWRlPS91c3IvaW5jbHVkZS9j bG9vZy1pc2wgLS13aXRob3V0LWxpYmljb252LXByZWZpeCAtLXdpdGhvdXQtbGliaW50bC1wcmVm aXggLS13aXRoLXN5c3RlbS16bGliIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCAtLXdpdGgtZGVm YXVsdC1saWJzdGRjeHgtYWJpPWdjYzQtY29tcGF0aWJsZSAtLWVuYWJsZS1saWJzdGRjeHgtZmls ZXN5c3RlbS10cwpUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2ZXJzaW9uIDkuMy4wIChHQ0MpIApj b25maWd1cmU6NTE4NjogJD8gPSAwCmNvbmZpZ3VyZTo1MTc1OiBnKysgLVYgPiY1CmcrKzogZXJy b3I6IHVucmVjb2duaXplZCBjb21tYW5kIGxpbmUgb3B0aW9uICctVicKZysrOiBmYXRhbCBlcnJv cjogbm8gaW5wdXQgZmlsZXMKY29tcGlsYXRpb24gdGVybWluYXRlZC4KY29uZmlndXJlOjUxODY6 ICQ/ID0gMQpjb25maWd1cmU6NTE3NTogZysrIC1xdmVyc2lvbiA+JjUKZysrOiBlcnJvcjogdW5y ZWNvZ25pemVkIGNvbW1hbmQgbGluZSBvcHRpb24gJy1xdmVyc2lvbic7IGRpZCB5b3UgbWVhbiAn LS12ZXJzaW9uJz8KZysrOiBmYXRhbCBlcnJvcjogbm8gaW5wdXQgZmlsZXMKY29tcGlsYXRpb24g dGVybWluYXRlZC4KY29uZmlndXJlOjUxODY6ICQ/ID0gMQpjb25maWd1cmU6NTE5MDogY2hlY2tp bmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDKysgY29tcGlsZXIKY29uZmlndXJlOjUy MDk6IGcrKyAtYyAgIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmlndXJlOjUyMDk6ICQ/ID0gMApjb25m aWd1cmU6NTIxODogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjUyMjc6IGNoZWNraW5nIHdoZXRoZXIg ZysrIGFjY2VwdHMgLWcKY29uZmlndXJlOjUyNDc6IGcrKyAtYyAtZyAgY29uZnRlc3QuY3BwID4m NQpjb25maWd1cmU6NTI0NzogJD8gPSAwCmNvbmZpZ3VyZTo1Mjg4OiByZXN1bHQ6IHllcwpjb25m aWd1cmU6NTMxMzogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiBnKysKY29uZmlndXJlOjU0 MjQ6IHJlc3VsdDogZ2NjMwpjb25maWd1cmU6NTQ0NDogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUg QyBwcmVwcm9jZXNzb3IKY29uZmlndXJlOjU0NzU6IGdjYyAtRSAgY29uZnRlc3QuYwpjb25maWd1 cmU6NTQ3NTogJD8gPSAwCmNvbmZpZ3VyZTo1NDg5OiBnY2MgLUUgIGNvbmZ0ZXN0LmMKY29uZnRl c3QuYzoxMToxMDogZmF0YWwgZXJyb3I6IGFjX25vbmV4aXN0ZW50Lmg6IE5vIHN1Y2ggZmlsZSBv ciBkaXJlY3RvcnkKICAgMTEgfCAjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KICAgICAgfCAg ICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn4KY29tcGlsYXRpb24gdGVybWluYXRlZC4KY29uZmln dXJlOjU0ODk6ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25m ZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImNyb3NzdG9vbC1ORyIKfCAjZGVmaW5l IFBBQ0tBR0VfVEFSTkFNRSAiY3Jvc3N0b29sLW5nIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9O ICIxLjI0LjAuMTA1XzU2NTkzNjYiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiY3Jvc3N0b29s LU5HIDEuMjQuMC4xMDVfNTY1OTM2NiIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJjcm9z c2djY0Bzb3VyY2V3YXJlLm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICJodHRwOi8vY3Jvc3N0 b29sLW5nLm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0UgImNyb3NzdG9vbC1uZyIKfCAjZGVmaW5lIFZF UlNJT04gIjEuMjQuMC4xMDVfNTY1OTM2NiIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2lu Y2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CmNvbmZpZ3VyZTo1NTE0OiByZXN1bHQ6IGdjYyAtRQpj b25maWd1cmU6NTUzNDogZ2NjIC1FICBjb25mdGVzdC5jCmNvbmZpZ3VyZTo1NTM0OiAkPyA9IDAK Y29uZmlndXJlOjU1NDg6IGdjYyAtRSAgY29uZnRlc3QuYwpjb25mdGVzdC5jOjExOjEwOiBmYXRh bCBlcnJvcjogYWNfbm9uZXhpc3RlbnQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQogICAx MSB8ICNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgogICAgICB8ICAgICAgICAgIF5+fn5+fn5+ fn5+fn5+fn5+fgpjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgpjb25maWd1cmU6NTU0ODogJD8gPSAx CmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVm aW5lIFBBQ0tBR0VfTkFNRSAiY3Jvc3N0b29sLU5HIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1F ICJjcm9zc3Rvb2wtbmciCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuMjQuMC4xMDVfNTY1 OTM2NiIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJjcm9zc3Rvb2wtTkcgMS4yNC4wLjEwNV81 NjU5MzY2Igp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImNyb3NzZ2NjQHNvdXJjZXdhcmUu b3JnIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgImh0dHA6Ly9jcm9zc3Rvb2wtbmcub3JnIgp8ICNk ZWZpbmUgUEFDS0FHRSAiY3Jvc3N0b29sLW5nIgp8ICNkZWZpbmUgVkVSU0lPTiAiMS4yNC4wLjEw NV81NjU5MzY2Igp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8YWNfbm9uZXhp c3RlbnQuaD4KY29uZmlndXJlOjU1ODE6IGNoZWNraW5nIGZvciBmbGV4CmNvbmZpZ3VyZTo1NTk3 OiBmb3VuZCAvdXNyL2Jpbi9mbGV4CmNvbmZpZ3VyZTo1NjA4OiByZXN1bHQ6IGZsZXgKY29uZmln dXJlOjU2NDY6IGZsZXggY29uZnRlc3QubApjb25maWd1cmU6NTY1MDogJD8gPSAwCmNvbmZpZ3Vy ZTo1NjUyOiBjaGVja2luZyBsZXggb3V0cHV0IGZpbGUgcm9vdApjb25maWd1cmU6NTY2NjogcmVz dWx0OiBsZXgueXkKY29uZmlndXJlOjU2NzE6IGNoZWNraW5nIGxleCBsaWJyYXJ5CmNvbmZpZ3Vy ZTo1Njg1OiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMgICA+JjUKL3Vz ci9saWIvZ2NjL3g4Nl82NC1wYy1jeWd3aW4vOS4zLjAvLi4vLi4vLi4vLi4veDg2XzY0LXBjLWN5 Z3dpbi9iaW4vbGQ6IC90bXAvY2MyaVNWZ0wubzogaW4gZnVuY3Rpb24gYGlucHV0JzoKL2N5Z2Ry aXZlL2MvY3lnd2luNjQvY3Jvc3N0b29sLW5nL2xleC55eS5jOjExNzk6IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYHl5d3JhcCcKL2N5Z2RyaXZlL2MvY3lnd2luNjQvY3Jvc3N0b29sLW5nL2xleC55 eS5jOjExNzk6KC50ZXh0KzB4ZjUxKTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX1g4 Nl82NF9QQzMyIGFnYWluc3QgdW5kZWZpbmVkIHN5bWJvbCBgeXl3cmFwJwovdXNyL2xpYi9nY2Mv eDg2XzY0LXBjLWN5Z3dpbi85LjMuMC8uLi8uLi8uLi8uLi94ODZfNjQtcGMtY3lnd2luL2Jpbi9s ZDogL3RtcC9jYzJpU1ZnTC5vOiBpbiBmdW5jdGlvbiBgeXlsZXgnOgovY3lnZHJpdmUvYy9jeWd3 aW42NC9jcm9zc3Rvb2wtbmcvbGV4Lnl5LmM6ODcwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB5 eXdyYXAnCi9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9sZXgueXkuYzo4NzA6KC50 ZXh0KzB4MTExOSk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9YODZfNjRfUEMzMiBh Z2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYHl5d3JhcCcKL3Vzci9saWIvZ2NjL3g4Nl82NC1wYy1j eWd3aW4vOS4zLjAvLi4vLi4vLi4vLi4veDg2XzY0LXBjLWN5Z3dpbi9iaW4vbGQ6IC90bXAvY2My aVNWZ0wubzogaW4gZnVuY3Rpb24gYG1haW4nOgovY3lnZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rv b2wtbmcvY29uZnRlc3QubDoxNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeXl3cmFwJwovY3ln ZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rvb2wtbmcvY29uZnRlc3QubDoxNzooLnRleHQuc3RhcnR1 cCsweDEyKTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX1g4Nl82NF9QQzMyIGFnYWlu c3QgdW5kZWZpbmVkIHN5bWJvbCBgeXl3cmFwJwpjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVk IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOjU2ODU6ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBw cm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImNy b3NzdG9vbC1ORyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiY3Jvc3N0b29sLW5nIgp8ICNk ZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIxLjI0LjAuMTA1XzU2NTkzNjYiCnwgI2RlZmluZSBQQUNL QUdFX1NUUklORyAiY3Jvc3N0b29sLU5HIDEuMjQuMC4xMDVfNTY1OTM2NiIKfCAjZGVmaW5lIFBB Q0tBR0VfQlVHUkVQT1JUICJjcm9zc2djY0Bzb3VyY2V3YXJlLm9yZyIKfCAjZGVmaW5lIFBBQ0tB R0VfVVJMICJodHRwOi8vY3Jvc3N0b29sLW5nLm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0UgImNyb3Nz dG9vbC1uZyIKfCAjZGVmaW5lIFZFUlNJT04gIjEuMjQuMC4xMDVfNTY1OTM2NiIKfCAvKiBlbmQg Y29uZmRlZnMuaC4gICovCnwgCnwgI2xpbmUgMiAibGV4Lnl5LmMiCnwgCnwgI2RlZmluZSAgWVlf SU5UX0FMSUdORUQgc2hvcnQgaW50CnwgCnwgLyogQSBsZXhpY2FsIHNjYW5uZXIgZ2VuZXJhdGVk IGJ5IGZsZXggKi8KfCAKfCAjZGVmaW5lIEZMRVhfU0NBTk5FUgp8ICNkZWZpbmUgWVlfRkxFWF9N QUpPUl9WRVJTSU9OIDIKfCAjZGVmaW5lIFlZX0ZMRVhfTUlOT1JfVkVSU0lPTiA2CnwgI2RlZmlu ZSBZWV9GTEVYX1NVQk1JTk9SX1ZFUlNJT04gNAp8ICNpZiBZWV9GTEVYX1NVQk1JTk9SX1ZFUlNJ T04gPiAwCnwgI2RlZmluZSBGTEVYX0JFVEEKfCAjZW5kaWYKfCAKfCAvKiBGaXJzdCwgd2UgZGVh bCB3aXRoICBwbGF0Zm9ybS1zcGVjaWZpYyBvciBjb21waWxlci1zcGVjaWZpYyBpc3N1ZXMuICov CnwgCnwgLyogYmVnaW4gc3RhbmRhcmQgQyBoZWFkZXJzLiAqLwp8ICNpbmNsdWRlIDxzdGRpby5o Pgp8ICNpbmNsdWRlIDxzdHJpbmcuaD4KfCAjaW5jbHVkZSA8ZXJybm8uaD4KfCAjaW5jbHVkZSA8 c3RkbGliLmg+CnwgCnwgLyogZW5kIHN0YW5kYXJkIEMgaGVhZGVycy4gKi8KfCAKfCAvKiBmbGV4 IGludGVnZXIgdHlwZSBkZWZpbml0aW9ucyAqLwp8IAp8ICNpZm5kZWYgRkxFWElOVF9ICnwgI2Rl ZmluZSBGTEVYSU5UX0gKfCAKfCAvKiBDOTkgc3lzdGVtcyBoYXZlIDxpbnR0eXBlcy5oPi4gTm9u LUM5OSBzeXN0ZW1zIG1heSBvciBtYXkgbm90LiAqLwp8IAp8ICNpZiBkZWZpbmVkIChfX1NURENf VkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKfCAKfCAvKiBDOTkgc2F5 cyB0byBkZWZpbmUgX19TVERDX0xJTUlUX01BQ1JPUyBiZWZvcmUgaW5jbHVkaW5nIHN0ZGludC5o LAp8ICAqIGlmIHlvdSB3YW50IHRoZSBsaW1pdCAobWF4L21pbikgbWFjcm9zIGZvciBpbnQgdHlw ZXMuIAp8ICAqLwp8ICNpZm5kZWYgX19TVERDX0xJTUlUX01BQ1JPUwp8ICNkZWZpbmUgX19TVERD X0xJTUlUX01BQ1JPUyAxCnwgI2VuZGlmCnwgCnwgI2luY2x1ZGUgPGludHR5cGVzLmg+CnwgdHlw ZWRlZiBpbnQ4X3QgZmxleF9pbnQ4X3Q7CnwgdHlwZWRlZiB1aW50OF90IGZsZXhfdWludDhfdDsK fCB0eXBlZGVmIGludDE2X3QgZmxleF9pbnQxNl90Owp8IHR5cGVkZWYgdWludDE2X3QgZmxleF91 aW50MTZfdDsKfCB0eXBlZGVmIGludDMyX3QgZmxleF9pbnQzMl90Owp8IHR5cGVkZWYgdWludDMy X3QgZmxleF91aW50MzJfdDsKfCAjZWxzZQp8IHR5cGVkZWYgc2lnbmVkIGNoYXIgZmxleF9pbnQ4 X3Q7CnwgdHlwZWRlZiBzaG9ydCBpbnQgZmxleF9pbnQxNl90Owp8IHR5cGVkZWYgaW50IGZsZXhf aW50MzJfdDsKfCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZmxleF91aW50OF90OyAKfCB0eXBlZGVm IHVuc2lnbmVkIHNob3J0IGludCBmbGV4X3VpbnQxNl90Owp8IHR5cGVkZWYgdW5zaWduZWQgaW50 IGZsZXhfdWludDMyX3Q7CnwgCnwgLyogTGltaXRzIG9mIGludGVncmFsIHR5cGVzLiAqLwp8ICNp Zm5kZWYgSU5UOF9NSU4KfCAjZGVmaW5lIElOVDhfTUlOICAgICAgICAgICAgICAgKC0xMjgpCnwg I2VuZGlmCnwgI2lmbmRlZiBJTlQxNl9NSU4KfCAjZGVmaW5lIElOVDE2X01JTiAgICAgICAgICAg ICAgKC0zMjc2Ny0xKQp8ICNlbmRpZgp8ICNpZm5kZWYgSU5UMzJfTUlOCnwgI2RlZmluZSBJTlQz Ml9NSU4gICAgICAgICAgICAgICgtMjE0NzQ4MzY0Ny0xKQp8ICNlbmRpZgp8ICNpZm5kZWYgSU5U OF9NQVgKfCAjZGVmaW5lIElOVDhfTUFYICAgICAgICAgICAgICAgKDEyNykKfCAjZW5kaWYKfCAj aWZuZGVmIElOVDE2X01BWAp8ICNkZWZpbmUgSU5UMTZfTUFYICAgICAgICAgICAgICAoMzI3Njcp CnwgI2VuZGlmCnwgI2lmbmRlZiBJTlQzMl9NQVgKfCAjZGVmaW5lIElOVDMyX01BWCAgICAgICAg ICAgICAgKDIxNDc0ODM2NDcpCnwgI2VuZGlmCnwgI2lmbmRlZiBVSU5UOF9NQVgKfCAjZGVmaW5l IFVJTlQ4X01BWCAgICAgICAgICAgICAgKDI1NVUpCnwgI2VuZGlmCnwgI2lmbmRlZiBVSU5UMTZf TUFYCnwgI2RlZmluZSBVSU5UMTZfTUFYICAgICAgICAgICAgICg2NTUzNVUpCnwgI2VuZGlmCnwg I2lmbmRlZiBVSU5UMzJfTUFYCnwgI2RlZmluZSBVSU5UMzJfTUFYICAgICAgICAgICAgICg0Mjk0 OTY3Mjk1VSkKfCAjZW5kaWYKfCAKfCAjaWZuZGVmIFNJWkVfTUFYCnwgI2RlZmluZSBTSVpFX01B WCAgICAgICAgICAgICAgICh+KHNpemVfdCkwKQp8ICNlbmRpZgp8IAp8ICNlbmRpZiAvKiAhIEM5 OSAqLwp8IAp8ICNlbmRpZiAvKiAhIEZMRVhJTlRfSCAqLwp8IAp8IC8qIGJlZ2luIHN0YW5kYXJk IEMrKyBoZWFkZXJzLiAqLwp8IAp8IC8qIFRPRE86IHRoaXMgaXMgYWx3YXlzIGRlZmluZWQsIHNv IGlubGluZSBpdCAqLwp8ICNkZWZpbmUgeXljb25zdCBjb25zdAp8IAp8ICNpZiBkZWZpbmVkKF9f R05VQ19fKSAmJiBfX0dOVUNfXyA+PSAzCnwgI2RlZmluZSB5eW5vcmV0dXJuIF9fYXR0cmlidXRl X18oKF9fbm9yZXR1cm5fXykpCnwgI2Vsc2UKfCAjZGVmaW5lIHl5bm9yZXR1cm4KfCAjZW5kaWYK fCAKfCAvKiBSZXR1cm5lZCB1cG9uIGVuZC1vZi1maWxlLiAqLwp8ICNkZWZpbmUgWVlfTlVMTCAw CnwgCnwgLyogUHJvbW90ZXMgYSBwb3NzaWJseSBuZWdhdGl2ZSwgcG9zc2libHkgc2lnbmVkIGNo YXIgdG8gYW4KfCAgKiAgIGludGVnZXIgaW4gcmFuZ2UgWzAuLjI1NV0gZm9yIHVzZSBhcyBhbiBh cnJheSBpbmRleC4KfCAgKi8KfCAjZGVmaW5lIFlZX1NDX1RPX1VJKGMpICgoWVlfQ0hBUikgKGMp KQp8IAp8IC8qIEVudGVyIGEgc3RhcnQgY29uZGl0aW9uLiAgVGhpcyBtYWNybyByZWFsbHkgb3Vn aHQgdG8gdGFrZSBhIHBhcmFtZXRlciwKfCAgKiBidXQgd2UgZG8gaXQgdGhlIGRpc2d1c3Rpbmcg Y3J1ZnR5IHdheSBmb3JjZWQgb24gdXMgYnkgdGhlICgpLWxlc3MKfCAgKiBkZWZpbml0aW9uIG9m IEJFR0lOLgp8ICAqLwp8ICNkZWZpbmUgQkVHSU4gKHl5X3N0YXJ0KSA9IDEgKyAyICoKfCAvKiBU cmFuc2xhdGUgdGhlIGN1cnJlbnQgc3RhcnQgc3RhdGUgaW50byBhIHZhbHVlIHRoYXQgY2FuIGJl IGxhdGVyIGhhbmRlZAp8ICAqIHRvIEJFR0lOIHRvIHJldHVybiB0byB0aGUgc3RhdGUuICBUaGUg WVlTVEFURSBhbGlhcyBpcyBmb3IgbGV4CnwgICogY29tcGF0aWJpbGl0eS4KfCAgKi8KfCAjZGVm aW5lIFlZX1NUQVJUICgoKHl5X3N0YXJ0KSAtIDEpIC8gMikKfCAjZGVmaW5lIFlZU1RBVEUgWVlf U1RBUlQKfCAvKiBBY3Rpb24gbnVtYmVyIGZvciBFT0YgcnVsZSBvZiBhIGdpdmVuIHN0YXJ0IHN0 YXRlLiAqLwp8ICNkZWZpbmUgWVlfU1RBVEVfRU9GKHN0YXRlKSAoWVlfRU5EX09GX0JVRkZFUiAr IHN0YXRlICsgMSkKfCAvKiBTcGVjaWFsIGFjdGlvbiBtZWFuaW5nICJzdGFydCBwcm9jZXNzaW5n IGEgbmV3IGZpbGUiLiAqLwp8ICNkZWZpbmUgWVlfTkVXX0ZJTEUgeXlyZXN0YXJ0KCB5eWluICAp CnwgI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVIgMAp8IAp8IC8qIFNpemUgb2YgZGVmYXVs dCBpbnB1dCBidWZmZXIuICovCnwgI2lmbmRlZiBZWV9CVUZfU0laRQp8ICNpZmRlZiBfX2lhNjRf Xwp8IC8qIE9uIElBLTY0LCB0aGUgYnVmZmVyIHNpemUgaXMgMTZrLCBub3QgOGsuCnwgICogTW9y ZW92ZXIsIFlZX0JVRl9TSVpFIGlzIDIqWVlfUkVBRF9CVUZfU0laRSBpbiB0aGUgZ2VuZXJhbCBj YXNlLgp8ICAqIERpdHRvIGZvciB0aGUgX19pYTY0X18gY2FzZSBhY2NvcmRpbmdseS4KfCAgKi8K fCAjZGVmaW5lIFlZX0JVRl9TSVpFIDMyNzY4CnwgI2Vsc2UKfCAjZGVmaW5lIFlZX0JVRl9TSVpF IDE2Mzg0CnwgI2VuZGlmIC8qIF9faWE2NF9fICovCnwgI2VuZGlmCnwgCnwgLyogVGhlIHN0YXRl IGJ1ZiBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIG9uZSBzdGF0ZSBwZXIgY2hhcmFjdGVy IGluIHRoZSBtYWluIGJ1ZmZlci4KfCAgKi8KfCAjZGVmaW5lIFlZX1NUQVRFX0JVRl9TSVpFICAg KChZWV9CVUZfU0laRSArIDIpICogc2l6ZW9mKHl5X3N0YXRlX3R5cGUpKQp8IAp8ICNpZm5kZWYg WVlfVFlQRURFRl9ZWV9CVUZGRVJfU1RBVEUKfCAjZGVmaW5lIFlZX1RZUEVERUZfWVlfQlVGRkVS X1NUQVRFCnwgdHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7 CnwgI2VuZGlmCnwgCnwgI2lmbmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAp8ICNkZWZpbmUgWVlf VFlQRURFRl9ZWV9TSVpFX1QKfCB0eXBlZGVmIHNpemVfdCB5eV9zaXplX3Q7CnwgI2VuZGlmCnwg CnwgZXh0ZXJuIGludCB5eWxlbmc7CnwgCnwgZXh0ZXJuIEZJTEUgKnl5aW4sICp5eW91dDsKfCAK fCAjZGVmaW5lIEVPQl9BQ1RfQ09OVElOVUVfU0NBTiAwCnwgI2RlZmluZSBFT0JfQUNUX0VORF9P Rl9GSUxFIDEKfCAjZGVmaW5lIEVPQl9BQ1RfTEFTVF9NQVRDSCAyCnwgICAgIAp8ICAgICAjZGVm aW5lIFlZX0xFU1NfTElORU5PKG4pCnwgICAgICNkZWZpbmUgWVlfTElORU5PX1JFV0lORF9UTyhw dHIpCnwgICAgIAp8IC8qIFJldHVybiBhbGwgYnV0IHRoZSBmaXJzdCAibiIgbWF0Y2hlZCBjaGFy YWN0ZXJzIGJhY2sgdG8gdGhlIGlucHV0IHN0cmVhbS4gKi8KfCAjZGVmaW5lIHl5bGVzcyhuKSBc CnwgCWRvIFwKfCAJCXsgXAp8IAkJLyogVW5kbyBlZmZlY3RzIG9mIHNldHRpbmcgdXAgeXl0ZXh0 LiAqLyBcCnwgICAgICAgICBpbnQgeXlsZXNzX21hY3JvX2FyZyA9IChuKTsgXAp8ICAgICAgICAg WVlfTEVTU19MSU5FTk8oeXlsZXNzX21hY3JvX2FyZyk7XAp8IAkJKnl5X2NwID0gKHl5X2hvbGRf Y2hhcik7IFwKfCAJCVlZX1JFU1RPUkVfWVlfTU9SRV9PRkZTRVQgXAp8IAkJKHl5X2NfYnVmX3Ap ID0geXlfY3AgPSB5eV9icCArIHl5bGVzc19tYWNyb19hcmcgLSBZWV9NT1JFX0FESjsgXAp8IAkJ WVlfRE9fQkVGT1JFX0FDVElPTjsgLyogc2V0IHVwIHl5dGV4dCBhZ2FpbiAqLyBcCnwgCQl9IFwK fCAJd2hpbGUgKCAwICkKfCAjZGVmaW5lIHVucHV0KGMpIHl5dW5wdXQoIGMsICh5eXRleHRfcHRy KSAgKQp8IAp8ICNpZm5kZWYgWVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURQp8ICNkZWZpbmUgWVlf U1RSVUNUX1lZX0JVRkZFUl9TVEFURQp8IHN0cnVjdCB5eV9idWZmZXJfc3RhdGUKfCAJewp8IAlG SUxFICp5eV9pbnB1dF9maWxlOwp8IAp8IAljaGFyICp5eV9jaF9idWY7CQkvKiBpbnB1dCBidWZm ZXIgKi8KfCAJY2hhciAqeXlfYnVmX3BvczsJCS8qIGN1cnJlbnQgcG9zaXRpb24gaW4gaW5wdXQg YnVmZmVyICovCnwgCnwgCS8qIFNpemUgb2YgaW5wdXQgYnVmZmVyIGluIGJ5dGVzLCBub3QgaW5j bHVkaW5nIHJvb20gZm9yIEVPQgp8IAkgKiBjaGFyYWN0ZXJzLgp8IAkgKi8KfCAJaW50IHl5X2J1 Zl9zaXplOwp8IAp8IAkvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIGludG8geXlfY2hfYnVm LCBub3QgaW5jbHVkaW5nIEVPQgp8IAkgKiBjaGFyYWN0ZXJzLgp8IAkgKi8KfCAJaW50IHl5X25f Y2hhcnM7CnwgCnwgCS8qIFdoZXRoZXIgd2UgIm93biIgdGhlIGJ1ZmZlciAtIGkuZS4sIHdlIGtu b3cgd2UgY3JlYXRlZCBpdCwKfCAJICogYW5kIGNhbiByZWFsbG9jKCkgaXQgdG8gZ3JvdyBpdCwg YW5kIHNob3VsZCBmcmVlKCkgaXQgdG8KfCAJICogZGVsZXRlIGl0Lgp8IAkgKi8KfCAJaW50IHl5 X2lzX291cl9idWZmZXI7CnwgCnwgCS8qIFdoZXRoZXIgdGhpcyBpcyBhbiAiaW50ZXJhY3RpdmUi IGlucHV0IHNvdXJjZTsgaWYgc28sIGFuZAp8IAkgKiBpZiB3ZSdyZSB1c2luZyBzdGRpbyBmb3Ig aW5wdXQsIHRoZW4gd2Ugd2FudCB0byB1c2UgZ2V0YygpCnwgCSAqIGluc3RlYWQgb2YgZnJlYWQo KSwgdG8gbWFrZSBzdXJlIHdlIHN0b3AgZmV0Y2hpbmcgaW5wdXQgYWZ0ZXIKfCAJICogZWFjaCBu ZXdsaW5lLgp8IAkgKi8KfCAJaW50IHl5X2lzX2ludGVyYWN0aXZlOwp8IAp8IAkvKiBXaGV0aGVy IHdlJ3JlIGNvbnNpZGVyZWQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuCnwgCSAq IElmIHNvLCAnXicgcnVsZXMgd2lsbCBiZSBhY3RpdmUgb24gdGhlIG5leHQgbWF0Y2gsIG90aGVy d2lzZQp8IAkgKiBub3QuCnwgCSAqLwp8IAlpbnQgeXlfYXRfYm9sOwp8IAp8ICAgICBpbnQgeXlf YnNfbGluZW5vOyAvKio8IFRoZSBsaW5lIGNvdW50LiAqLwp8ICAgICBpbnQgeXlfYnNfY29sdW1u OyAvKio8IFRoZSBjb2x1bW4gY291bnQuICovCnwgCnwgCS8qIFdoZXRoZXIgdG8gdHJ5IHRvIGZp bGwgdGhlIGlucHV0IGJ1ZmZlciB3aGVuIHdlIHJlYWNoIHRoZQp8IAkgKiBlbmQgb2YgaXQuCnwg CSAqLwp8IAlpbnQgeXlfZmlsbF9idWZmZXI7CnwgCnwgCWludCB5eV9idWZmZXJfc3RhdHVzOwp8 IAp8ICNkZWZpbmUgWVlfQlVGRkVSX05FVyAwCnwgI2RlZmluZSBZWV9CVUZGRVJfTk9STUFMIDEK fCAJLyogV2hlbiBhbiBFT0YncyBiZWVuIHNlZW4gYnV0IHRoZXJlJ3Mgc3RpbGwgc29tZSB0ZXh0 IHRvIHByb2Nlc3MKfCAJICogdGhlbiB3ZSBtYXJrIHRoZSBidWZmZXIgYXMgWVlfRU9GX1BFTkRJ TkcsIHRvIGluZGljYXRlIHRoYXQgd2UKfCAJICogc2hvdWxkbid0IHRyeSByZWFkaW5nIGZyb20g dGhlIGlucHV0IHNvdXJjZSBhbnkgbW9yZS4gIFdlIG1pZ2h0CnwgCSAqIHN0aWxsIGhhdmUgYSBi dW5jaCBvZiB0b2tlbnMgdG8gbWF0Y2gsIHRob3VnaCwgYmVjYXVzZSBvZgp8IAkgKiBwb3NzaWJs ZSBiYWNraW5nLXVwLgp8IAkgKgp8IAkgKiBXaGVuIHdlIGFjdHVhbGx5IHNlZSB0aGUgRU9GLCB3 ZSBjaGFuZ2UgdGhlIHN0YXR1cyB0byAibmV3Igp8IAkgKiAodmlhIHl5cmVzdGFydCgpKSwgc28g dGhhdCB0aGUgdXNlciBjYW4gY29udGludWUgc2Nhbm5pbmcgYnkKfCAJICoganVzdCBwb2ludGlu ZyB5eWluIGF0IGEgbmV3IGlucHV0IGZpbGUuCnwgCSAqLwp8ICNkZWZpbmUgWVlfQlVGRkVSX0VP Rl9QRU5ESU5HIDIKfCAKfCAJfTsKfCAjZW5kaWYgLyogIVlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RB VEUgKi8KfCAKfCAvKiBTdGFjayBvZiBpbnB1dCBidWZmZXJzLiAqLwp8IHN0YXRpYyBzaXplX3Qg eXlfYnVmZmVyX3N0YWNrX3RvcCA9IDA7IC8qKjwgaW5kZXggb2YgdG9wIG9mIHN0YWNrLiAqLwp8 IHN0YXRpYyBzaXplX3QgeXlfYnVmZmVyX3N0YWNrX21heCA9IDA7IC8qKjwgY2FwYWNpdHkgb2Yg c3RhY2suICovCnwgc3RhdGljIFlZX0JVRkZFUl9TVEFURSAqIHl5X2J1ZmZlcl9zdGFjayA9IE5V TEw7IC8qKjwgU3RhY2sgYXMgYW4gYXJyYXkuICovCnwgCnwgLyogV2UgcHJvdmlkZSBtYWNyb3Mg Zm9yIGFjY2Vzc2luZyBidWZmZXIgc3RhdGVzIGluIGNhc2UgaW4gdGhlCnwgICogZnV0dXJlIHdl IHdhbnQgdG8gcHV0IHRoZSBidWZmZXIgc3RhdGVzIGluIGEgbW9yZSBnZW5lcmFsCnwgICogInNj YW5uZXIgc3RhdGUiLgp8ICAqCnwgICogUmV0dXJucyB0aGUgdG9wIG9mIHRoZSBzdGFjaywgb3Ig TlVMTC4KfCAgKi8KfCAjZGVmaW5lIFlZX0NVUlJFTlRfQlVGRkVSICggKHl5X2J1ZmZlcl9zdGFj aykgXAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoeXlfYnVmZmVyX3N0YWNrKVsoeXlf YnVmZmVyX3N0YWNrX3RvcCldIFwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCkK fCAvKiBTYW1lIGFzIHByZXZpb3VzIG1hY3JvLCBidXQgdXNlZnVsIHdoZW4gd2Uga25vdyB0aGF0 IHRoZSBidWZmZXIgc3RhY2sgaXMgbm90CnwgICogTlVMTCBvciB3aGVuIHdlIG5lZWQgYW4gbHZh bHVlLiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCnwgICovCnwgI2RlZmluZSBZWV9DVVJSRU5UX0JV RkZFUl9MVkFMVUUgKHl5X2J1ZmZlcl9zdGFjaylbKHl5X2J1ZmZlcl9zdGFja190b3ApXQp8IAp8 IC8qIHl5X2hvbGRfY2hhciBob2xkcyB0aGUgY2hhcmFjdGVyIGxvc3Qgd2hlbiB5eXRleHQgaXMg Zm9ybWVkLiAqLwp8IHN0YXRpYyBjaGFyIHl5X2hvbGRfY2hhcjsKfCBzdGF0aWMgaW50IHl5X25f Y2hhcnM7CQkvKiBudW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIGludG8geXlfY2hfYnVmICovCnwg aW50IHl5bGVuZzsKfCAKfCAvKiBQb2ludHMgdG8gY3VycmVudCBjaGFyYWN0ZXIgaW4gYnVmZmVy LiAqLwp8IHN0YXRpYyBjaGFyICp5eV9jX2J1Zl9wID0gTlVMTDsKfCBzdGF0aWMgaW50IHl5X2lu aXQgPSAwOwkJLyogd2hldGhlciB3ZSBuZWVkIHRvIGluaXRpYWxpemUgKi8KfCBzdGF0aWMgaW50 IHl5X3N0YXJ0ID0gMDsJLyogc3RhcnQgc3RhdGUgbnVtYmVyICovCnwgCnwgLyogRmxhZyB3aGlj aCBpcyB1c2VkIHRvIGFsbG93IHl5d3JhcCgpJ3MgdG8gZG8gYnVmZmVyIHN3aXRjaGVzCnwgICog aW5zdGVhZCBvZiBzZXR0aW5nIHVwIGEgZnJlc2ggeXlpbi4gIEEgYml0IG9mIGEgaGFjayAuLi4K fCAgKi8KfCBzdGF0aWMgaW50IHl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZjsKfCAKfCB2b2lk IHl5cmVzdGFydCAoIEZJTEUgKmlucHV0X2ZpbGUgICk7Cnwgdm9pZCB5eV9zd2l0Y2hfdG9fYnVm ZmVyICggWVlfQlVGRkVSX1NUQVRFIG5ld19idWZmZXIgICk7CnwgWVlfQlVGRkVSX1NUQVRFIHl5 X2NyZWF0ZV9idWZmZXIgKCBGSUxFICpmaWxlLCBpbnQgc2l6ZSAgKTsKfCB2b2lkIHl5X2RlbGV0 ZV9idWZmZXIgKCBZWV9CVUZGRVJfU1RBVEUgYiAgKTsKfCB2b2lkIHl5X2ZsdXNoX2J1ZmZlciAo IFlZX0JVRkZFUl9TVEFURSBiICApOwp8IHZvaWQgeXlwdXNoX2J1ZmZlcl9zdGF0ZSAoIFlZX0JV RkZFUl9TVEFURSBuZXdfYnVmZmVyICApOwp8IHZvaWQgeXlwb3BfYnVmZmVyX3N0YXRlICggdm9p ZCApOwp8IAp8IHN0YXRpYyB2b2lkIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjayAoIHZvaWQgKTsKfCBz dGF0aWMgdm9pZCB5eV9sb2FkX2J1ZmZlcl9zdGF0ZSAoIHZvaWQgKTsKfCBzdGF0aWMgdm9pZCB5 eV9pbml0X2J1ZmZlciAoIFlZX0JVRkZFUl9TVEFURSBiLCBGSUxFICpmaWxlICApOwp8ICNkZWZp bmUgWVlfRkxVU0hfQlVGRkVSIHl5X2ZsdXNoX2J1ZmZlciggWVlfQ1VSUkVOVF9CVUZGRVIgKQp8 IAp8IFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J1ZmZlciAoIGNoYXIgKmJhc2UsIHl5X3NpemVf dCBzaXplICApOwp8IFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX3N0cmluZyAoIGNvbnN0IGNoYXIg Knl5X3N0ciAgKTsKfCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAoIGNvbnN0IGNoYXIg KmJ5dGVzLCBpbnQgbGVuICApOwp8IAp8IHZvaWQgKnl5YWxsb2MgKCB5eV9zaXplX3QgICk7Cnwg dm9pZCAqeXlyZWFsbG9jICggdm9pZCAqLCB5eV9zaXplX3QgICk7Cnwgdm9pZCB5eWZyZWUgKCB2 b2lkICogICk7CnwgCnwgI2RlZmluZSB5eV9uZXdfYnVmZmVyIHl5X2NyZWF0ZV9idWZmZXIKfCAj ZGVmaW5lIHl5X3NldF9pbnRlcmFjdGl2ZShpc19pbnRlcmFjdGl2ZSkgXAp8IAl7IFwKfCAJaWYg KCAhIFlZX0NVUlJFTlRfQlVGRkVSICl7IFwKfCAgICAgICAgIHl5ZW5zdXJlX2J1ZmZlcl9zdGFj ayAoKTsgXAp8IAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFID0gICAgXAp8ICAgICAgICAgICAg IHl5X2NyZWF0ZV9idWZmZXIoIHl5aW4sIFlZX0JVRl9TSVpFICk7IFwKfCAJfSBcCnwgCVlZX0NV UlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaXNfaW50ZXJhY3RpdmUgPSBpc19pbnRlcmFjdGl2ZTsg XAp8IAl9CnwgI2RlZmluZSB5eV9zZXRfYm9sKGF0X2JvbCkgXAp8IAl7IFwKfCAJaWYgKCAhIFlZ X0NVUlJFTlRfQlVGRkVSICl7XAp8ICAgICAgICAgeXllbnN1cmVfYnVmZmVyX3N0YWNrICgpOyBc CnwgCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUgPSAgICBcCnwgICAgICAgICAgICAgeXlfY3Jl YXRlX2J1ZmZlciggeXlpbiwgWVlfQlVGX1NJWkUgKTsgXAp8IAl9IFwKfCAJWVlfQ1VSUkVOVF9C VUZGRVJfTFZBTFVFLT55eV9hdF9ib2wgPSBhdF9ib2w7IFwKfCAJfQp8ICNkZWZpbmUgWVlfQVRf Qk9MKCkgKFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYXRfYm9sKQp8IAp8IC8qIEJlZ2lu IHVzZXIgc2VjdDMgKi8KfCB0eXBlZGVmIGZsZXhfdWludDhfdCBZWV9DSEFSOwp8IAp8IEZJTEUg Knl5aW4gPSBOVUxMLCAqeXlvdXQgPSBOVUxMOwp8IAp8IHR5cGVkZWYgaW50IHl5X3N0YXRlX3R5 cGU7CnwgCnwgZXh0ZXJuIGludCB5eWxpbmVubzsKfCBpbnQgeXlsaW5lbm8gPSAxOwp8IAp8IGV4 dGVybiBjaGFyICp5eXRleHQ7CnwgI2lmZGVmIHl5dGV4dF9wdHIKfCAjdW5kZWYgeXl0ZXh0X3B0 cgp8ICNlbmRpZgp8ICNkZWZpbmUgeXl0ZXh0X3B0ciB5eXRleHQKfCAKfCBzdGF0aWMgeXlfc3Rh dGVfdHlwZSB5eV9nZXRfcHJldmlvdXNfc3RhdGUgKCB2b2lkICk7Cnwgc3RhdGljIHl5X3N0YXRl X3R5cGUgeXlfdHJ5X05VTF90cmFucyAoIHl5X3N0YXRlX3R5cGUgY3VycmVudF9zdGF0ZSAgKTsK fCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoIHZvaWQgKTsKfCBzdGF0aWMgdm9pZCB5 eW5vcmV0dXJuIHl5X2ZhdGFsX2Vycm9yICggY29uc3QgY2hhciogbXNnICApOwp8IAp8IC8qIERv bmUgYWZ0ZXIgdGhlIGN1cnJlbnQgcGF0dGVybiBoYXMgYmVlbiBtYXRjaGVkIGFuZCBiZWZvcmUg dGhlCnwgICogY29ycmVzcG9uZGluZyBhY3Rpb24gLSBzZXRzIHVwIHl5dGV4dC4KfCAgKi8KfCAj ZGVmaW5lIFlZX0RPX0JFRk9SRV9BQ1RJT04gXAp8IAkoeXl0ZXh0X3B0cikgPSB5eV9icDsgXAp8 IAkoeXl0ZXh0X3B0cikgLT0gKHl5X21vcmVfbGVuKTsgXAp8IAl5eWxlbmcgPSAoaW50KSAoeXlf Y3AgLSAoeXl0ZXh0X3B0cikpOyBcCnwgCSh5eV9ob2xkX2NoYXIpID0gKnl5X2NwOyBcCnwgCSp5 eV9jcCA9ICdcMCc7IFwKfCAJKHl5X2NfYnVmX3ApID0geXlfY3A7CnwgI2RlZmluZSBZWV9OVU1f UlVMRVMgOAp8ICNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiA5CnwgLyogVGhpcyBzdHJ1Y3QgaXMg bm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAp8ICAgIGJ1dCBpdHMgcHJlc2VuY2UgaXMgbmVjZXNz YXJ5LiAqLwp8IHN0cnVjdCB5eV90cmFuc19pbmZvCnwgCXsKfCAJZmxleF9pbnQzMl90IHl5X3Zl cmlmeTsKfCAJZmxleF9pbnQzMl90IHl5X254dDsKfCAJfTsKfCBzdGF0aWMgY29uc3QgZmxleF9p bnQxNl90IHl5X2FjY2xpc3RbMjNdID0KfCAgICAgeyAgIDAsCnwgICAgICAgICA5LCAgICA3LCAg ICA4LCAgICA4LCAgICAxLCAgICA3LCAgICA4LCAgICAyLCAgICA3LCAgICA4LAp8ICAgICAgICAg MywgICAgNywgICAgOCwgICAgNCwgICAgNywgICAgOCwgICAgNSwgICAgNywgICAgOCwgICAgNiwK fCAgICAgICAgIDcsICAgIDgKfCAgICAgfSA7CnwgCnwgc3RhdGljIGNvbnN0IGZsZXhfaW50MTZf dCB5eV9hY2NlcHRbMTRdID0KfCAgICAgeyAgIDAsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAg ICAyLCAgICA0LCAgICA1LCAgICA4LCAgIDExLCAgIDE0LCAgIDE3LAp8ICAgICAgICAyMCwgICAy MywgICAyMwp8ICAgICB9IDsKfCAKfCBzdGF0aWMgY29uc3QgWVlfQ0hBUiB5eV9lY1syNTZdID0K fCAgICAgeyAgIDAsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg ICAxLCAgICAxLCAgICAxLCAgICAyLAp8ICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKfCAgICAgICAgIDEsICAgIDEsICAgIDEs ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCnwgICAgICAgICAxLCAg ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAp8ICAg ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg ICAgMSwKfCAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg IDEsICAgIDEsICAgIDEsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx LCAgICAxLCAgICAxLCAgICAxLCAgICAxLAp8ICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKfCAgICAgICAgIDEsICAgIDEsICAg IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCnwgICAgICAgICAx LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICA0LCAgICA1LCAgICA2LAp8 IAp8ICAgICAgICAgNywgICAgOCwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg ICAgMSwgICAgMSwKfCAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg IDEsICAgIDEsICAgIDEsICAgIDEsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAp8ICAgICAgICAgMSwgICAgMSwgICAgMSwg ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKfCAgICAgICAgIDEsICAg IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCnwgICAg ICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg ICAxLAp8ICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg MSwgICAgMSwgICAgMSwKfCAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs ICAgIDEsICAgIDEsICAgIDEsICAgIDEsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAp8ICAgICAgICAgMSwgICAgMSwgICAg MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKfCAKfCAgICAgICAg IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs CnwgICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg ICAxLCAgICAxLAp8ICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg MSwgICAgMSwgICAgMSwgICAgMSwKfCAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAg ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAp8ICAgICAgICAgMSwgICAg MSwgICAgMSwgICAgMSwgICAgMQp8ICAgICB9IDsKfCAKfCBzdGF0aWMgY29uc3QgWVlfQ0hBUiB5 eV9tZXRhWzldID0KfCAgICAgeyAgIDAsCnwgICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg ICAxLCAgICAxLCAgICAxLCAgICAxCnwgICAgIH0gOwp8IAp8IHN0YXRpYyBjb25zdCBmbGV4X2lu dDE2X3QgeXlfYmFzZVsxM10gPQp8ICAgICB7ICAgMCwKfCAgICAgICAgIDAsICAgIDAsICAgIDks ICAgMTAsICAgMTAsICAgMTAsICAgMTAsICAgMTAsICAgMTAsICAgMTAsCnwgICAgICAgIDEwLCAg IDEwCnwgICAgIH0gOwp8IAp8IHN0YXRpYyBjb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzEzXSA9 CnwgICAgIHsgICAwLAp8ICAgICAgICAxMiwgICAgMSwgICAxMiwgICAxMiwgICAxMiwgICAxMiwg ICAxMiwgICAxMiwgICAxMiwgICAxMiwKfCAgICAgICAgMTIsICAgIDAKfCAgICAgfSA7CnwgCnwg c3RhdGljIGNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbMTldID0KfCAgICAgeyAgIDAsCnwgICAg ICAgICA0LCAgICA1LCAgICA2LCAgICA3LCAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAg ICAzLAp8ICAgICAgICAxMiwgICAxMiwgICAxMiwgICAxMiwgICAxMiwgICAxMiwgICAxMiwgICAx Mgp8ICAgICB9IDsKfCAKfCBzdGF0aWMgY29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1sxOV0gPQp8 ICAgICB7ICAgMCwKfCAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg IDEsICAgIDEsICAgIDMsICAgMTIsCnwgICAgICAgIDEyLCAgIDEyLCAgIDEyLCAgIDEyLCAgIDEy LCAgIDEyLCAgIDEyLCAgIDEyCnwgICAgIH0gOwp8IAp8IGV4dGVybiBpbnQgeXlfZmxleF9kZWJ1 ZzsKfCBpbnQgeXlfZmxleF9kZWJ1ZyA9IDA7CnwgCnwgc3RhdGljIHl5X3N0YXRlX3R5cGUgKnl5 X3N0YXRlX2J1Zj0wLCAqeXlfc3RhdGVfcHRyPTA7Cnwgc3RhdGljIGNoYXIgKnl5X2Z1bGxfbWF0 Y2g7Cnwgc3RhdGljIGludCB5eV9scDsKfCAjZGVmaW5lIFJFSkVDVCBcCnwgeyBcCnwgKnl5X2Nw ID0gKHl5X2hvbGRfY2hhcik7IC8qIHVuZG8gZWZmZWN0cyBvZiBzZXR0aW5nIHVwIHl5dGV4dCAq LyBcCnwgeXlfY3AgPSAoeXlfZnVsbF9tYXRjaCk7IC8qIHJlc3RvcmUgcG9zcy4gYmFja2VkLW92 ZXIgdGV4dCAqLyBcCnwgKysoeXlfbHApOyBcCnwgZ290byBmaW5kX3J1bGU7IFwKfCB9CnwgCnwg c3RhdGljIGludCB5eV9tb3JlX2ZsYWcgPSAwOwp8IHN0YXRpYyBpbnQgeXlfbW9yZV9sZW4gPSAw Owp8ICNkZWZpbmUgeXltb3JlKCkgKCh5eV9tb3JlX2ZsYWcpID0gMSkKfCAjZGVmaW5lIFlZX01P UkVfQURKICh5eV9tb3JlX2xlbikKfCAjZGVmaW5lIFlZX1JFU1RPUkVfWVlfTU9SRV9PRkZTRVQK fCBjaGFyICp5eXRleHQ7CnwgI2xpbmUgMSAiY29uZnRlc3QubCIKfCAjbGluZSA0NTkgImxleC55 eS5jIgp8IAp8ICNkZWZpbmUgSU5JVElBTCAwCnwgCnwgI2lmbmRlZiBZWV9OT19VTklTVERfSAp8 IC8qIFNwZWNpYWwgY2FzZSBmb3IgInVuaXN0ZC5oIiwgc2luY2UgaXQgaXMgbm9uLUFOU0kuIFdl IGluY2x1ZGUgaXQgd2F5CnwgICogZG93biBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGUgdXNlcidz IHNlY3Rpb24gMSB0byBoYXZlIGJlZW4gc2Nhbm5lZCBmaXJzdC4KfCAgKiBUaGUgdXNlciBoYXMg YSBjaGFuY2UgdG8gb3ZlcnJpZGUgaXQgd2l0aCBhbiBvcHRpb24uCnwgICovCnwgI2luY2x1ZGUg PHVuaXN0ZC5oPgp8ICNlbmRpZgp8IAp8ICNpZm5kZWYgWVlfRVhUUkFfVFlQRQp8ICNkZWZpbmUg WVlfRVhUUkFfVFlQRSB2b2lkICoKfCAjZW5kaWYKfCAKfCBzdGF0aWMgaW50IHl5X2luaXRfZ2xv YmFscyAoIHZvaWQgKTsKfCAKfCAvKiBBY2Nlc3NvciBtZXRob2RzIHRvIGdsb2JhbHMuCnwgICAg VGhlc2UgYXJlIG1hZGUgdmlzaWJsZSB0byBub24tcmVlbnRyYW50IHNjYW5uZXJzIGZvciBjb252 ZW5pZW5jZS4gKi8KfCAKfCBpbnQgeXlsZXhfZGVzdHJveSAoIHZvaWQgKTsKfCAKfCBpbnQgeXln ZXRfZGVidWcgKCB2b2lkICk7CnwgCnwgdm9pZCB5eXNldF9kZWJ1ZyAoIGludCBkZWJ1Z19mbGFn ICApOwp8IAp8IFlZX0VYVFJBX1RZUEUgeXlnZXRfZXh0cmEgKCB2b2lkICk7CnwgCnwgdm9pZCB5 eXNldF9leHRyYSAoIFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkICApOwp8IAp8IEZJTEUgKnl5 Z2V0X2luICggdm9pZCApOwp8IAp8IHZvaWQgeXlzZXRfaW4gICggRklMRSAqIF9pbl9zdHIgICk7 CnwgCnwgRklMRSAqeXlnZXRfb3V0ICggdm9pZCApOwp8IAp8IHZvaWQgeXlzZXRfb3V0ICAoIEZJ TEUgKiBfb3V0X3N0ciAgKTsKfCAKfCAJCQlpbnQgeXlnZXRfbGVuZyAoIHZvaWQgKTsKfCAKfCBj aGFyICp5eWdldF90ZXh0ICggdm9pZCApOwp8IAp8IGludCB5eWdldF9saW5lbm8gKCB2b2lkICk7 CnwgCnwgdm9pZCB5eXNldF9saW5lbm8gKCBpbnQgX2xpbmVfbnVtYmVyICApOwp8IAp8IC8qIE1h Y3JvcyBhZnRlciB0aGlzIHBvaW50IGNhbiBhbGwgYmUgb3ZlcnJpZGRlbiBieSB1c2VyIGRlZmlu aXRpb25zIGluCnwgICogc2VjdGlvbiAxLgp8ICAqLwp8IAp8ICNpZm5kZWYgWVlfU0tJUF9ZWVdS QVAKfCAjaWZkZWYgX19jcGx1c3BsdXMKfCBleHRlcm4gIkMiIGludCB5eXdyYXAgKCB2b2lkICk7 CnwgI2Vsc2UKfCBleHRlcm4gaW50IHl5d3JhcCAoIHZvaWQgKTsKfCAjZW5kaWYKfCAjZW5kaWYK fCAKfCAjaWZuZGVmIFlZX05PX1VOUFVUCnwgICAgIAp8ICAgICBzdGF0aWMgdm9pZCB5eXVucHV0 ICggaW50IGMsIGNoYXIgKmJ1Zl9wdHIgICk7CnwgICAgIAp8ICNlbmRpZgp8IAp8ICNpZm5kZWYg eXl0ZXh0X3B0cgp8IHN0YXRpYyB2b2lkIHl5X2ZsZXhfc3RybmNweSAoIGNoYXIgKiwgY29uc3Qg Y2hhciAqLCBpbnQgKTsKfCAjZW5kaWYKfCAKfCAjaWZkZWYgWVlfTkVFRF9TVFJMRU4KfCBzdGF0 aWMgaW50IHl5X2ZsZXhfc3RybGVuICggY29uc3QgY2hhciAqICk7CnwgI2VuZGlmCnwgCnwgI2lm bmRlZiBZWV9OT19JTlBVVAp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IHN0YXRpYyBpbnQgeXlpbnB1 dCAoIHZvaWQgKTsKfCAjZWxzZQp8IHN0YXRpYyBpbnQgaW5wdXQgKCB2b2lkICk7CnwgI2VuZGlm CnwgCnwgI2VuZGlmCnwgCnwgLyogQW1vdW50IG9mIHN0dWZmIHRvIHNsdXJwIHVwIHdpdGggZWFj aCByZWFkLiAqLwp8ICNpZm5kZWYgWVlfUkVBRF9CVUZfU0laRQp8ICNpZmRlZiBfX2lhNjRfXwp8 IC8qIE9uIElBLTY0LCB0aGUgYnVmZmVyIHNpemUgaXMgMTZrLCBub3QgOGsgKi8KfCAjZGVmaW5l IFlZX1JFQURfQlVGX1NJWkUgMTYzODQKfCAjZWxzZQp8ICNkZWZpbmUgWVlfUkVBRF9CVUZfU0la RSA4MTkyCnwgI2VuZGlmIC8qIF9faWE2NF9fICovCnwgI2VuZGlmCnwgCnwgLyogQ29weSB3aGF0 ZXZlciB0aGUgbGFzdCBydWxlIG1hdGNoZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gKi8KfCAj aWZuZGVmIEVDSE8KfCAvKiBUaGlzIHVzZWQgdG8gYmUgYW4gZnB1dHMoKSwgYnV0IHNpbmNlIHRo ZSBzdHJpbmcgbWlnaHQgY29udGFpbiBOVUwncywKfCAgKiB3ZSBub3cgdXNlIGZ3cml0ZSgpLgp8 ICAqLwp8ICNkZWZpbmUgRUNITyBkbyB7IGlmIChmd3JpdGUoIHl5dGV4dCwgKHNpemVfdCkgeXls ZW5nLCAxLCB5eW91dCApKSB7fSB9IHdoaWxlICgwKQp8ICNlbmRpZgp8IAp8IC8qIEdldHMgaW5w dXQgYW5kIHN0dWZmcyBpdCBpbnRvICJidWYiLiAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCwg b3IgWVlfTlVMTCwKfCAgKiBpcyByZXR1cm5lZCBpbiAicmVzdWx0Ii4KfCAgKi8KfCAjaWZuZGVm IFlZX0lOUFVUCnwgI2RlZmluZSBZWV9JTlBVVChidWYscmVzdWx0LG1heF9zaXplKSBcCnwgCWlm ICggWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9pc19pbnRlcmFjdGl2ZSApIFwKfCAJCXsg XAp8IAkJaW50IGMgPSAnKic7IFwKfCAJCWludCBuOyBcCnwgCQlmb3IgKCBuID0gMDsgbiA8IG1h eF9zaXplICYmIFwKfCAJCQkgICAgIChjID0gZ2V0YyggeXlpbiApKSAhPSBFT0YgJiYgYyAhPSAn XG4nOyArK24gKSBcCnwgCQkJYnVmW25dID0gKGNoYXIpIGM7IFwKfCAJCWlmICggYyA9PSAnXG4n ICkgXAp8IAkJCWJ1ZltuKytdID0gKGNoYXIpIGM7IFwKfCAJCWlmICggYyA9PSBFT0YgJiYgZmVy cm9yKCB5eWluICkgKSBcCnwgCQkJWVlfRkFUQUxfRVJST1IoICJpbnB1dCBpbiBmbGV4IHNjYW5u ZXIgZmFpbGVkIiApOyBcCnwgCQlyZXN1bHQgPSBuOyBcCnwgCQl9IFwKfCAJZWxzZSBcCnwgCQl7 IFwKfCAJCWVycm5vPTA7IFwKfCAJCXdoaWxlICggKHJlc3VsdCA9IChpbnQpIGZyZWFkKGJ1Ziwg MSwgKHl5X3NpemVfdCkgbWF4X3NpemUsIHl5aW4pKSA9PSAwICYmIGZlcnJvcih5eWluKSkgXAp8 IAkJCXsgXAp8IAkJCWlmKCBlcnJubyAhPSBFSU5UUikgXAp8IAkJCQl7IFwKfCAJCQkJWVlfRkFU QUxfRVJST1IoICJpbnB1dCBpbiBmbGV4IHNjYW5uZXIgZmFpbGVkIiApOyBcCnwgCQkJCWJyZWFr OyBcCnwgCQkJCX0gXAp8IAkJCWVycm5vPTA7IFwKfCAJCQljbGVhcmVycih5eWluKTsgXAp8IAkJ CX0gXAp8IAkJfVwKfCBcCnwgCnwgI2VuZGlmCnwgCnwgLyogTm8gc2VtaS1jb2xvbiBhZnRlciBy ZXR1cm47IGNvcnJlY3QgdXNhZ2UgaXMgdG8gd3JpdGUgInl5dGVybWluYXRlKCk7IiAtCnwgICog d2UgZG9uJ3Qgd2FudCBhbiBleHRyYSAnOycgYWZ0ZXIgdGhlICJyZXR1cm4iIGJlY2F1c2UgdGhh dCB3aWxsIGNhdXNlCnwgICogc29tZSBjb21waWxlcnMgdG8gY29tcGxhaW4gYWJvdXQgdW5yZWFj aGFibGUgc3RhdGVtZW50cy4KfCAgKi8KfCAjaWZuZGVmIHl5dGVybWluYXRlCnwgI2RlZmluZSB5 eXRlcm1pbmF0ZSgpIHJldHVybiBZWV9OVUxMCnwgI2VuZGlmCnwgCnwgLyogTnVtYmVyIG9mIGVu dHJpZXMgYnkgd2hpY2ggc3RhcnQtY29uZGl0aW9uIHN0YWNrIGdyb3dzLiAqLwp8ICNpZm5kZWYg WVlfU1RBUlRfU1RBQ0tfSU5DUgp8ICNkZWZpbmUgWVlfU1RBUlRfU1RBQ0tfSU5DUiAyNQp8ICNl bmRpZgp8IAp8IC8qIFJlcG9ydCBhIGZhdGFsIGVycm9yLiAqLwp8ICNpZm5kZWYgWVlfRkFUQUxf RVJST1IKfCAjZGVmaW5lIFlZX0ZBVEFMX0VSUk9SKG1zZykgeXlfZmF0YWxfZXJyb3IoIG1zZyAp CnwgI2VuZGlmCnwgCnwgLyogZW5kIHRhYmxlcyBzZXJpYWxpemF0aW9uIHN0cnVjdHVyZXMgYW5k IHByb3RvdHlwZXMgKi8KfCAKfCAvKiBEZWZhdWx0IGRlY2xhcmF0aW9uIG9mIGdlbmVyYXRlZCBz Y2FubmVyIC0gYSBkZWZpbmUgc28gdGhlIHVzZXIgY2FuCnwgICogZWFzaWx5IGFkZCBwYXJhbWV0 ZXJzLgp8ICAqLwp8ICNpZm5kZWYgWVlfREVDTAp8ICNkZWZpbmUgWVlfREVDTF9JU19PVVJTIDEK fCAKfCBleHRlcm4gaW50IHl5bGV4ICh2b2lkKTsKfCAKfCAjZGVmaW5lIFlZX0RFQ0wgaW50IHl5 bGV4ICh2b2lkKQp8ICNlbmRpZiAvKiAhWVlfREVDTCAqLwp8IAp8IC8qIENvZGUgZXhlY3V0ZWQg YXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCnwg ICogaGF2ZSBiZWVuIHNldCB1cC4KfCAgKi8KfCAjaWZuZGVmIFlZX1VTRVJfQUNUSU9OCnwgI2Rl ZmluZSBZWV9VU0VSX0FDVElPTgp8ICNlbmRpZgp8IAp8IC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhl IGVuZCBvZiBlYWNoIHJ1bGUuICovCnwgI2lmbmRlZiBZWV9CUkVBSwp8ICNkZWZpbmUgWVlfQlJF QUsgLypMSU5URUQqL2JyZWFrOwp8ICNlbmRpZgp8IAp8ICNkZWZpbmUgWVlfUlVMRV9TRVRVUCBc CnwgCVlZX1VTRVJfQUNUSU9OCnwgCnwgLyoqIFRoZSBtYWluIHNjYW5uZXIgZnVuY3Rpb24gd2hp Y2ggZG9lcyBhbGwgdGhlIHdvcmsuCnwgICovCnwgWVlfREVDTAp8IHsKfCAJeXlfc3RhdGVfdHlw ZSB5eV9jdXJyZW50X3N0YXRlOwp8IAljaGFyICp5eV9jcCwgKnl5X2JwOwp8IAlpbnQgeXlfYWN0 Owp8ICAgICAKfCAJaWYgKCAhKHl5X2luaXQpICkKfCAJCXsKfCAJCSh5eV9pbml0KSA9IDE7Cnwg CnwgI2lmZGVmIFlZX1VTRVJfSU5JVAp8IAkJWVlfVVNFUl9JTklUOwp8ICNlbmRpZgp8IAp8ICAg ICAgICAgLyogQ3JlYXRlIHRoZSByZWplY3QgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBzYXZlIG9u ZSBzdGF0ZSBwZXIgYWxsb3dlZCBjaGFyYWN0ZXIuICovCnwgICAgICAgICBpZiAoICEgKHl5X3N0 YXRlX2J1ZikgKQp8ICAgICAgICAgICAgICh5eV9zdGF0ZV9idWYpID0gKHl5X3N0YXRlX3R5cGUg Kil5eWFsbG9jKFlZX1NUQVRFX0JVRl9TSVpFICApOwp8ICAgICAgICAgICAgIGlmICggISAoeXlf c3RhdGVfYnVmKSApCnwgICAgICAgICAgICAgICAgIFlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5 bmFtaWMgbWVtb3J5IGluIHl5bGV4KCkiICk7CnwgCnwgCQlpZiAoICEgKHl5X3N0YXJ0KSApCnwg CQkJKHl5X3N0YXJ0KSA9IDE7CS8qIGZpcnN0IHN0YXJ0IHN0YXRlICovCnwgCnwgCQlpZiAoICEg eXlpbiApCnwgCQkJeXlpbiA9IHN0ZGluOwp8IAp8IAkJaWYgKCAhIHl5b3V0ICkKfCAJCQl5eW91 dCA9IHN0ZG91dDsKfCAKfCAJCWlmICggISBZWV9DVVJSRU5UX0JVRkZFUiApIHsKfCAJCQl5eWVu c3VyZV9idWZmZXJfc3RhY2sgKCk7CnwgCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFID0KfCAJ CQkJeXlfY3JlYXRlX2J1ZmZlciggeXlpbiwgWVlfQlVGX1NJWkUgKTsKfCAJCX0KfCAKfCAJCXl5 X2xvYWRfYnVmZmVyX3N0YXRlKCAgKTsKfCAJCX0KfCAKfCAJewp8ICNsaW5lIDEgImNvbmZ0ZXN0 LmwiCnwgCnwgI2xpbmUgNjg0ICJsZXgueXkuYyIKfCAKfCAJd2hpbGUgKCAvKkNPTlNUQ09ORCov MSApCQkvKiBsb29wcyB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkICovCnwgCQl7CnwgCQko eXlfbW9yZV9sZW4pID0gMDsKfCAJCWlmICggKHl5X21vcmVfZmxhZykgKQp8IAkJCXsKfCAJCQko eXlfbW9yZV9sZW4pID0gKGludCkgKCh5eV9jX2J1Zl9wKSAtICh5eXRleHRfcHRyKSk7CnwgCQkJ KHl5X21vcmVfZmxhZykgPSAwOwp8IAkJCX0KfCAJCXl5X2NwID0gKHl5X2NfYnVmX3ApOwp8IAp8 IAkJLyogU3VwcG9ydCBvZiB5eXRleHQuICovCnwgCQkqeXlfY3AgPSAoeXlfaG9sZF9jaGFyKTsK fCAKfCAJCS8qIHl5X2JwIHBvaW50cyB0byB0aGUgcG9zaXRpb24gaW4geXlfY2hfYnVmIG9mIHRo ZSBzdGFydCBvZgp8IAkJICogdGhlIGN1cnJlbnQgcnVuLgp8IAkJICovCnwgCQl5eV9icCA9IHl5 X2NwOwp8IAp8IAkJeXlfY3VycmVudF9zdGF0ZSA9ICh5eV9zdGFydCk7CnwgCnwgCQkoeXlfc3Rh dGVfcHRyKSA9ICh5eV9zdGF0ZV9idWYpOwp8IAkJKih5eV9zdGF0ZV9wdHIpKysgPSB5eV9jdXJy ZW50X3N0YXRlOwp8IAp8IHl5X21hdGNoOgp8IAkJZG8KfCAJCQl7CnwgCQkJWVlfQ0hBUiB5eV9j ID0geXlfZWNbWVlfU0NfVE9fVUkoKnl5X2NwKV0gOwp8IAkJCXdoaWxlICggeXlfY2hrW3l5X2Jh c2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKfCAJCQkJ ewp8IAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVd Owp8IAkJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gMTMgKQp8IAkJCQkJeXlfYyA9IHl5X21l dGFbeXlfY107CnwgCQkJCX0KfCAJCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2Vb eXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXTsKfCAJCQkqKHl5X3N0YXRlX3B0cikrKyA9IHl5X2N1 cnJlbnRfc3RhdGU7CnwgCQkJKyt5eV9jcDsKfCAJCQl9CnwgCQl3aGlsZSAoIHl5X2Jhc2VbeXlf Y3VycmVudF9zdGF0ZV0gIT0gMTAgKTsKfCAKfCB5eV9maW5kX2FjdGlvbjoKfCAJCXl5X2N1cnJl bnRfc3RhdGUgPSAqLS0oeXlfc3RhdGVfcHRyKTsKfCAJCSh5eV9scCkgPSB5eV9hY2NlcHRbeXlf Y3VycmVudF9zdGF0ZV07CnwgCnwgZmluZF9ydWxlOiAvKiB3ZSBicmFuY2ggdG8gdGhpcyBsYWJl bCB3aGVuIGJhY2tpbmcgdXAgKi8KfCAKfCAJCWZvciAoIDsgOyApIC8qIHVudGlsIHdlIGZpbmQg d2hhdCBydWxlIHdlIG1hdGNoZWQgKi8KfCAJCQl7CnwgCQkJaWYgKCAoeXlfbHApICYmICh5eV9s cCkgPCB5eV9hY2NlcHRbeXlfY3VycmVudF9zdGF0ZSArIDFdICkKfCAJCQkJewp8IAkJCQl5eV9h Y3QgPSB5eV9hY2NsaXN0Wyh5eV9scCldOwp8IAkJCQkJewp8IAkJCQkJKHl5X2Z1bGxfbWF0Y2gp ID0geXlfY3A7CnwgCQkJCQlicmVhazsKfCAJCQkJCX0KfCAJCQkJfQp8IAkJCS0teXlfY3A7Cnwg CQkJeXlfY3VycmVudF9zdGF0ZSA9ICotLSh5eV9zdGF0ZV9wdHIpOwp8IAkJCSh5eV9scCkgPSB5 eV9hY2NlcHRbeXlfY3VycmVudF9zdGF0ZV07CnwgCQkJfQp8IAp8IAkJWVlfRE9fQkVGT1JFX0FD VElPTjsKfCAKfCBkb19hY3Rpb246CS8qIFRoaXMgbGFiZWwgaXMgdXNlZCBvbmx5IHRvIGFjY2Vz cyBFT0YgYWN0aW9ucy4gKi8KfCAKfCAJCXN3aXRjaCAoIHl5X2FjdCApCnwgCXsgLyogYmVnaW5u aW5nIG9mIGFjdGlvbiBzd2l0Y2ggKi8KfCBjYXNlIDE6CnwgWVlfUlVMRV9TRVRVUAp8ICNsaW5l IDIgImNvbmZ0ZXN0LmwiCnwgeyBFQ0hPOyB9CnwgCVlZX0JSRUFLCnwgY2FzZSAyOgp8IFlZX1JV TEVfU0VUVVAKfCAjbGluZSAzICJjb25mdGVzdC5sIgp8IHsgUkVKRUNUOyB9CnwgCVlZX0JSRUFL CnwgY2FzZSAzOgp8IFlZX1JVTEVfU0VUVVAKfCAjbGluZSA0ICJjb25mdGVzdC5sIgp8IHsgeXlt b3JlICgpOyB9CnwgCVlZX0JSRUFLCnwgY2FzZSA0Ogp8IFlZX1JVTEVfU0VUVVAKfCAjbGluZSA1 ICJjb25mdGVzdC5sIgp8IHsgeXlsZXNzICgxKTsgfQp8IAlZWV9CUkVBSwp8IGNhc2UgNToKfCBZ WV9SVUxFX1NFVFVQCnwgI2xpbmUgNiAiY29uZnRlc3QubCIKfCB7IC8qIElSSVggNi41IGZsZXgg Mi41LjQgdW5kZXJxdW90ZXMgaXRzIHl5bGVzcyBhcmd1bWVudC4gICovCnwgICAgIHl5bGVzcyAo KGlucHV0ICgpICE9IDApKTsgfQp8IAlZWV9CUkVBSwp8IGNhc2UgNjoKfCBZWV9SVUxFX1NFVFVQ CnwgI2xpbmUgOCAiY29uZnRlc3QubCIKfCB7IHVucHV0ICh5eXRleHRbMF0pOyB9CnwgCVlZX0JS RUFLCnwgY2FzZSA3Ogp8IFlZX1JVTEVfU0VUVVAKfCAjbGluZSA5ICJjb25mdGVzdC5sIgp8IHsg QkVHSU4gSU5JVElBTDsgfQp8IAlZWV9CUkVBSwp8IGNhc2UgODoKfCBZWV9SVUxFX1NFVFVQCnwg I2xpbmUgMTAgImNvbmZ0ZXN0LmwiCnwgRUNITzsKfCAJWVlfQlJFQUsKfCAjbGluZSA3OTMgImxl eC55eS5jIgp8IAkJCWNhc2UgWVlfU1RBVEVfRU9GKElOSVRJQUwpOgp8IAkJCQl5eXRlcm1pbmF0 ZSgpOwp8IAp8IAljYXNlIFlZX0VORF9PRl9CVUZGRVI6CnwgCQl7CnwgCQkvKiBBbW91bnQgb2Yg dGV4dCBtYXRjaGVkIG5vdCBpbmNsdWRpbmcgdGhlIEVPQiBjaGFyLiAqLwp8IAkJaW50IHl5X2Ft b3VudF9vZl9tYXRjaGVkX3RleHQgPSAoaW50KSAoeXlfY3AgLSAoeXl0ZXh0X3B0cikpIC0gMTsK fCAKfCAJCS8qIFVuZG8gdGhlIGVmZmVjdHMgb2YgWVlfRE9fQkVGT1JFX0FDVElPTi4gKi8KfCAJ CSp5eV9jcCA9ICh5eV9ob2xkX2NoYXIpOwp8IAkJWVlfUkVTVE9SRV9ZWV9NT1JFX09GRlNFVAp8 IAp8IAkJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1ZmZlcl9zdGF0dXMgPT0g WVlfQlVGRkVSX05FVyApCnwgCQkJewp8IAkJCS8qIFdlJ3JlIHNjYW5uaW5nIGEgbmV3IGZpbGUg b3IgaW5wdXQgc291cmNlLiAgSXQncwp8IAkJCSAqIHBvc3NpYmxlIHRoYXQgdGhpcyBoYXBwZW5l ZCBiZWNhdXNlIHRoZSB1c2VyCnwgCQkJICoganVzdCBwb2ludGVkIHl5aW4gYXQgYSBuZXcgc291 cmNlIGFuZCBjYWxsZWQKfCAJCQkgKiB5eWxleCgpLiAgSWYgc28sIHRoZW4gd2UgaGF2ZSB0byBh c3N1cmUKfCAJCQkgKiBjb25zaXN0ZW5jeSBiZXR3ZWVuIFlZX0NVUlJFTlRfQlVGRkVSIGFuZCBv dXIKfCAJCQkgKiBnbG9iYWxzLiAgSGVyZSBpcyB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gc28sIGJl Y2F1c2UKfCAJCQkgKiB0aGlzIGlzIHRoZSBmaXJzdCBhY3Rpb24gKG90aGVyIHRoYW4gcG9zc2li bHkgYQp8IAkJCSAqIGJhY2stdXApIHRoYXQgd2lsbCBtYXRjaCBmb3IgdGhlIG5ldyBpbnB1dCBz b3VyY2UuCnwgCQkJICovCnwgCQkJKHl5X25fY2hhcnMpID0gWVlfQ1VSUkVOVF9CVUZGRVJfTFZB TFVFLT55eV9uX2NoYXJzOwp8IAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaW5wdXRf ZmlsZSA9IHl5aW47CnwgCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZmZXJfc3Rh dHVzID0gWVlfQlVGRkVSX05PUk1BTDsKfCAJCQl9CnwgCnwgCQkvKiBOb3RlIHRoYXQgaGVyZSB3 ZSB0ZXN0IGZvciB5eV9jX2J1Zl9wICI8PSIgdG8gdGhlIHBvc2l0aW9uCnwgCQkgKiBvZiB0aGUg Zmlyc3QgRU9CIGluIHRoZSBidWZmZXIsIHNpbmNlIHl5X2NfYnVmX3Agd2lsbAp8IAkJICogYWxy ZWFkeSBoYXZlIGJlZW4gaW5jcmVtZW50ZWQgcGFzdCB0aGUgTlVMIGNoYXJhY3Rlcgp8IAkJICog KHNpbmNlIGFsbCBzdGF0ZXMgbWFrZSB0cmFuc2l0aW9ucyBvbiBFT0IgdG8gdGhlCnwgCQkgKiBl bmQtb2YtYnVmZmVyIHN0YXRlKS4gIENvbnRyYXN0IHRoaXMgd2l0aCB0aGUgdGVzdAp8IAkJICog aW4gaW5wdXQoKS4KfCAJCSAqLwp8IAkJaWYgKCAoeXlfY19idWZfcCkgPD0gJllZX0NVUlJFTlRf QlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmWyh5eV9uX2NoYXJzKV0gKQp8IAkJCXsgLyogVGhpcyB3 YXMgcmVhbGx5IGEgTlVMLiAqLwp8IAkJCXl5X3N0YXRlX3R5cGUgeXlfbmV4dF9zdGF0ZTsKfCAK fCAJCQkoeXlfY19idWZfcCkgPSAoeXl0ZXh0X3B0cikgKyB5eV9hbW91bnRfb2ZfbWF0Y2hlZF90 ZXh0Owp8IAp8IAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9nZXRfcHJldmlvdXNfc3RhdGUoICAp Owp8IAp8IAkJCS8qIE9rYXksIHdlJ3JlIG5vdyBwb3NpdGlvbmVkIHRvIG1ha2UgdGhlIE5VTAp8 IAkJCSAqIHRyYW5zaXRpb24uICBXZSBjb3VsZG4ndCBoYXZlCnwgCQkJICogeXlfZ2V0X3ByZXZp b3VzX3N0YXRlKCkgZ28gYWhlYWQgYW5kIGRvIGl0CnwgCQkJICogZm9yIHVzIGJlY2F1c2UgaXQg ZG9lc24ndCBrbm93IGhvdyB0byBkZWFsCnwgCQkJICogd2l0aCB0aGUgcG9zc2liaWxpdHkgb2Yg amFtbWluZyAoYW5kIHdlIGRvbid0CnwgCQkJICogd2FudCB0byBidWlsZCBqYW1taW5nIGludG8g aXQgYmVjYXVzZSB0aGVuIGl0CnwgCQkJICogd2lsbCBydW4gbW9yZSBzbG93bHkpLgp8IAkJCSAq Lwp8IAp8IAkJCXl5X25leHRfc3RhdGUgPSB5eV90cnlfTlVMX3RyYW5zKCB5eV9jdXJyZW50X3N0 YXRlICk7CnwgCnwgCQkJeXlfYnAgPSAoeXl0ZXh0X3B0cikgKyBZWV9NT1JFX0FESjsKfCAKfCAJ CQlpZiAoIHl5X25leHRfc3RhdGUgKQp8IAkJCQl7CnwgCQkJCS8qIENvbnN1bWUgdGhlIE5VTC4g Ki8KfCAJCQkJeXlfY3AgPSArKyh5eV9jX2J1Zl9wKTsKfCAJCQkJeXlfY3VycmVudF9zdGF0ZSA9 IHl5X25leHRfc3RhdGU7CnwgCQkJCWdvdG8geXlfbWF0Y2g7CnwgCQkJCX0KfCAKfCAJCQllbHNl CnwgCQkJCXsKfCAJCQkJeXlfY3AgPSAoeXlfY19idWZfcCk7CnwgCQkJCWdvdG8geXlfZmluZF9h Y3Rpb247CnwgCQkJCX0KfCAJCQl9CnwgCnwgCQllbHNlIHN3aXRjaCAoIHl5X2dldF9uZXh0X2J1 ZmZlciggICkgKQp8IAkJCXsKfCAJCQljYXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6CnwgCQkJCXsK fCAJCQkJKHl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZikgPSAwOwp8IAp8IAkJCQlpZiAoIHl5 d3JhcCggICkgKQp8IAkJCQkJewp8IAkJCQkJLyogTm90ZTogYmVjYXVzZSB3ZSd2ZSB0YWtlbiBj YXJlIGluCnwgCQkJCQkgKiB5eV9nZXRfbmV4dF9idWZmZXIoKSB0byBoYXZlIHNldCB1cAp8IAkJ CQkJICogeXl0ZXh0LCB3ZSBjYW4gbm93IHNldCB1cAp8IAkJCQkJICogeXlfY19idWZfcCBzbyB0 aGF0IGlmIHNvbWUgdG90YWwKfCAJCQkJCSAqIGhvc2VyIChsaWtlIGZsZXggaXRzZWxmKSB3YW50 cyB0bwp8IAkJCQkJICogY2FsbCB0aGUgc2Nhbm5lciBhZnRlciB3ZSByZXR1cm4gdGhlCnwgCQkJ CQkgKiBZWV9OVUxMLCBpdCdsbCBzdGlsbCB3b3JrIC0gYW5vdGhlcgp8IAkJCQkJICogWVlfTlVM TCB3aWxsIGdldCByZXR1cm5lZC4KfCAJCQkJCSAqLwp8IAkJCQkJKHl5X2NfYnVmX3ApID0gKHl5 dGV4dF9wdHIpICsgWVlfTU9SRV9BREo7CnwgCnwgCQkJCQl5eV9hY3QgPSBZWV9TVEFURV9FT0Yo WVlfU1RBUlQpOwp8IAkJCQkJZ290byBkb19hY3Rpb247CnwgCQkJCQl9CnwgCnwgCQkJCWVsc2UK fCAJCQkJCXsKfCAJCQkJCWlmICggISAoeXlfZGlkX2J1ZmZlcl9zd2l0Y2hfb25fZW9mKSApCnwg CQkJCQkJWVlfTkVXX0ZJTEU7CnwgCQkJCQl9CnwgCQkJCWJyZWFrOwp8IAkJCQl9CnwgCnwgCQkJ Y2FzZSBFT0JfQUNUX0NPTlRJTlVFX1NDQU46CnwgCQkJCSh5eV9jX2J1Zl9wKSA9CnwgCQkJCQko eXl0ZXh0X3B0cikgKyB5eV9hbW91bnRfb2ZfbWF0Y2hlZF90ZXh0Owp8IAp8IAkJCQl5eV9jdXJy ZW50X3N0YXRlID0geXlfZ2V0X3ByZXZpb3VzX3N0YXRlKCAgKTsKfCAKfCAJCQkJeXlfY3AgPSAo eXlfY19idWZfcCk7CnwgCQkJCXl5X2JwID0gKHl5dGV4dF9wdHIpICsgWVlfTU9SRV9BREo7Cnwg CQkJCWdvdG8geXlfbWF0Y2g7CnwgCnwgCQkJY2FzZSBFT0JfQUNUX0xBU1RfTUFUQ0g6CnwgCQkJ CSh5eV9jX2J1Zl9wKSA9CnwgCQkJCSZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1 ZlsoeXlfbl9jaGFycyldOwp8IAp8IAkJCQl5eV9jdXJyZW50X3N0YXRlID0geXlfZ2V0X3ByZXZp b3VzX3N0YXRlKCAgKTsKfCAKfCAJCQkJeXlfY3AgPSAoeXlfY19idWZfcCk7CnwgCQkJCXl5X2Jw ID0gKHl5dGV4dF9wdHIpICsgWVlfTU9SRV9BREo7CnwgCQkJCWdvdG8geXlfZmluZF9hY3Rpb247 CnwgCQkJfQp8IAkJYnJlYWs7CnwgCQl9CnwgCnwgCWRlZmF1bHQ6CnwgCQlZWV9GQVRBTF9FUlJP UigKfCAJCQkiZmF0YWwgZmxleCBzY2FubmVyIGludGVybmFsIGVycm9yLS1ubyBhY3Rpb24gZm91 bmQiICk7CnwgCX0gLyogZW5kIG9mIGFjdGlvbiBzd2l0Y2ggKi8KfCAJCX0gLyogZW5kIG9mIHNj YW5uaW5nIG9uZSB0b2tlbiAqLwp8IAl9IC8qIGVuZCBvZiB1c2VyJ3MgZGVjbGFyYXRpb25zICov CnwgfSAvKiBlbmQgb2YgeXlsZXggKi8KfCAKfCAvKiB5eV9nZXRfbmV4dF9idWZmZXIgLSB0cnkg dG8gcmVhZCBpbiBhIG5ldyBidWZmZXIKfCAgKgp8ICAqIFJldHVybnMgYSBjb2RlIHJlcHJlc2Vu dGluZyBhbiBhY3Rpb246CnwgICoJRU9CX0FDVF9MQVNUX01BVENIIC0KfCAgKglFT0JfQUNUX0NP TlRJTlVFX1NDQU4gLSBjb250aW51ZSBzY2FubmluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb24KfCAg KglFT0JfQUNUX0VORF9PRl9GSUxFIC0gZW5kIG9mIGZpbGUKfCAgKi8KfCBzdGF0aWMgaW50IHl5 X2dldF9uZXh0X2J1ZmZlciAodm9pZCkKfCB7CnwgICAgIAljaGFyICpkZXN0ID0gWVlfQ1VSUkVO VF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWY7CnwgCWNoYXIgKnNvdXJjZSA9ICh5eXRleHRfcHRy KTsKfCAJaW50IG51bWJlcl90b19tb3ZlLCBpOwp8IAlpbnQgcmV0X3ZhbDsKfCAKfCAJaWYgKCAo eXlfY19idWZfcCkgPiAmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbKHl5X25f Y2hhcnMpICsgMV0gKQp8IAkJWVlfRkFUQUxfRVJST1IoCnwgCQkiZmF0YWwgZmxleCBzY2FubmVy IGludGVybmFsIGVycm9yLS1lbmQgb2YgYnVmZmVyIG1pc3NlZCIgKTsKfCAKfCAJaWYgKCBZWV9D VVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2ZpbGxfYnVmZmVyID09IDAgKQp8IAkJeyAvKiBEb24n dCB0cnkgdG8gZmlsbCB0aGUgYnVmZmVyLCBzbyB0aGlzIGlzIGFuIEVPRi4gKi8KfCAJCWlmICgg KHl5X2NfYnVmX3ApIC0gKHl5dGV4dF9wdHIpIC0gWVlfTU9SRV9BREogPT0gMSApCnwgCQkJewp8 IAkJCS8qIFdlIG1hdGNoZWQgYSBzaW5nbGUgY2hhcmFjdGVyLCB0aGUgRU9CLCBzbwp8IAkJCSAq IHRyZWF0IHRoaXMgYXMgYSBmaW5hbCBFT0YuCnwgCQkJICovCnwgCQkJcmV0dXJuIEVPQl9BQ1Rf RU5EX09GX0ZJTEU7CnwgCQkJfQp8IAp8IAkJZWxzZQp8IAkJCXsKfCAJCQkvKiBXZSBtYXRjaGVk IHNvbWUgdGV4dCBwcmlvciB0byB0aGUgRU9CLCBmaXJzdAp8IAkJCSAqIHByb2Nlc3MgaXQuCnwg CQkJICovCnwgCQkJcmV0dXJuIEVPQl9BQ1RfTEFTVF9NQVRDSDsKfCAJCQl9CnwgCQl9CnwgCnwg CS8qIFRyeSB0byByZWFkIG1vcmUgZGF0YS4gKi8KfCAKfCAJLyogRmlyc3QgbW92ZSBsYXN0IGNo YXJzIHRvIHN0YXJ0IG9mIGJ1ZmZlci4gKi8KfCAJbnVtYmVyX3RvX21vdmUgPSAoaW50KSAoKHl5 X2NfYnVmX3ApIC0gKHl5dGV4dF9wdHIpIC0gMSk7CnwgCnwgCWZvciAoIGkgPSAwOyBpIDwgbnVt YmVyX3RvX21vdmU7ICsraSApCnwgCQkqKGRlc3QrKykgPSAqKHNvdXJjZSsrKTsKfCAKfCAJaWYg KCBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1ZmZlcl9zdGF0dXMgPT0gWVlfQlVGRkVS X0VPRl9QRU5ESU5HICkKfCAJCS8qIGRvbid0IGRvIHRoZSByZWFkLCBpdCdzIG5vdCBndWFyYW50 ZWVkIHRvIHJldHVybiBhbiBFT0YsCnwgCQkgKiBqdXN0IGZvcmNlIGFuIEVPRgp8IAkJICovCnwg CQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSAoeXlfbl9jaGFycykgPSAw Owp8IAp8IAllbHNlCnwgCQl7CnwgCQkJaW50IG51bV90b19yZWFkID0KfCAJCQlZWV9DVVJSRU5U X0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOwp8IAp8IAkJ d2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKfCAJCQl7IC8qIE5vdCBlbm91Z2ggcm9vbSBpbiB0 aGUgYnVmZmVyIC0gZ3JvdyBpdC4gKi8KfCAKfCAJCQlZWV9GQVRBTF9FUlJPUigKfCAiaW5wdXQg YnVmZmVyIG92ZXJmbG93LCBjYW4ndCBlbmxhcmdlIGJ1ZmZlciBiZWNhdXNlIHNjYW5uZXIgdXNl cyBSRUpFQ1QiICk7CnwgCnwgCQkJfQp8IAp8IAkJaWYgKCBudW1fdG9fcmVhZCA+IFlZX1JFQURf QlVGX1NJWkUgKQp8IAkJCW51bV90b19yZWFkID0gWVlfUkVBRF9CVUZfU0laRTsKfCAKfCAJCS8q IFJlYWQgaW4gbW9yZSBkYXRhLiAqLwp8IAkJWVlfSU5QVVQoICgmWVlfQ1VSUkVOVF9CVUZGRVJf TFZBTFVFLT55eV9jaF9idWZbbnVtYmVyX3RvX21vdmVdKSwKfCAJCQkoeXlfbl9jaGFycyksIG51 bV90b19yZWFkICk7CnwgCnwgCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMg PSAoeXlfbl9jaGFycyk7CnwgCQl9CnwgCnwgCWlmICggKHl5X25fY2hhcnMpID09IDAgKQp8IAkJ ewp8IAkJaWYgKCBudW1iZXJfdG9fbW92ZSA9PSBZWV9NT1JFX0FESiApCnwgCQkJewp8IAkJCXJl dF92YWwgPSBFT0JfQUNUX0VORF9PRl9GSUxFOwp8IAkJCXl5cmVzdGFydCggeXlpbiAgKTsKfCAJ CQl9CnwgCnwgCQllbHNlCnwgCQkJewp8IAkJCXJldF92YWwgPSBFT0JfQUNUX0xBU1RfTUFUQ0g7 CnwgCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZmZXJfc3RhdHVzID0KfCAJCQkJ WVlfQlVGRkVSX0VPRl9QRU5ESU5HOwp8IAkJCX0KfCAJCX0KfCAKfCAJZWxzZQp8IAkJcmV0X3Zh bCA9IEVPQl9BQ1RfQ09OVElOVUVfU0NBTjsKfCAKfCAJaWYgKCgoeXlfbl9jaGFycykgKyBudW1i ZXJfdG9fbW92ZSkgPiBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplKSB7Cnwg CQkvKiBFeHRlbmQgdGhlIGFycmF5IGJ5IDUwJSwgcGx1cyB0aGUgbnVtYmVyIHdlIHJlYWxseSBu ZWVkLiAqLwp8IAkJaW50IG5ld19zaXplID0gKHl5X25fY2hhcnMpICsgbnVtYmVyX3RvX21vdmUg KyAoKHl5X25fY2hhcnMpID4+IDEpOwp8IAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9j aF9idWYgPSAoY2hhciAqKSB5eXJlYWxsb2MoCnwgCQkJKHZvaWQgKikgWVlfQ1VSUkVOVF9CVUZG RVJfTFZBTFVFLT55eV9jaF9idWYsICh5eV9zaXplX3QpIG5ld19zaXplICApOwp8IAkJaWYgKCAh IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmICkKfCAJCQlZWV9GQVRBTF9FUlJP UiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9nZXRfbmV4dF9idWZmZXIoKSIgKTsKfCAJ CS8qICItIDIiIHRvIHRha2UgY2FyZSBvZiBFT0IncyAqLwp8IAkJWVlfQ1VSUkVOVF9CVUZGRVJf TFZBTFVFLT55eV9idWZfc2l6ZSA9IChpbnQpIChuZXdfc2l6ZSAtIDIpOwp8IAl9CnwgCnwgCSh5 eV9uX2NoYXJzKSArPSBudW1iZXJfdG9fbW92ZTsKfCAJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVF LT55eV9jaF9idWZbKHl5X25fY2hhcnMpXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKfCAJWVlf Q1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbKHl5X25fY2hhcnMpICsgMV0gPSBZWV9F TkRfT0ZfQlVGRkVSX0NIQVI7CnwgCnwgCSh5eXRleHRfcHRyKSA9ICZZWV9DVVJSRU5UX0JVRkZF Ul9MVkFMVUUtPnl5X2NoX2J1ZlswXTsKfCAKfCAJcmV0dXJuIHJldF92YWw7CnwgfQp8IAp8IC8q IHl5X2dldF9wcmV2aW91c19zdGF0ZSAtIGdldCB0aGUgc3RhdGUganVzdCBiZWZvcmUgdGhlIEVP QiBjaGFyIHdhcyByZWFjaGVkICovCnwgCnwgICAgIHN0YXRpYyB5eV9zdGF0ZV90eXBlIHl5X2dl dF9wcmV2aW91c19zdGF0ZSAodm9pZCkKfCB7CnwgCXl5X3N0YXRlX3R5cGUgeXlfY3VycmVudF9z dGF0ZTsKfCAJY2hhciAqeXlfY3A7CnwgICAgIAp8IAl5eV9jdXJyZW50X3N0YXRlID0gKHl5X3N0 YXJ0KTsKfCAKfCAJKHl5X3N0YXRlX3B0cikgPSAoeXlfc3RhdGVfYnVmKTsKfCAJKih5eV9zdGF0 ZV9wdHIpKysgPSB5eV9jdXJyZW50X3N0YXRlOwp8IAp8IAlmb3IgKCB5eV9jcCA9ICh5eXRleHRf cHRyKSArIFlZX01PUkVfQURKOyB5eV9jcCA8ICh5eV9jX2J1Zl9wKTsgKyt5eV9jcCApCnwgCQl7 CnwgCQlZWV9DSEFSIHl5X2MgPSAoKnl5X2NwID8geXlfZWNbWVlfU0NfVE9fVUkoKnl5X2NwKV0g OiAxKTsKfCAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9j XSAhPSB5eV9jdXJyZW50X3N0YXRlICkKfCAJCQl7CnwgCQkJeXlfY3VycmVudF9zdGF0ZSA9IChp bnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKfCAJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUg Pj0gMTMgKQp8IAkJCQl5eV9jID0geXlfbWV0YVt5eV9jXTsKfCAJCQl9CnwgCQl5eV9jdXJyZW50 X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXTsKfCAJCSoo eXlfc3RhdGVfcHRyKSsrID0geXlfY3VycmVudF9zdGF0ZTsKfCAJCX0KfCAKfCAJcmV0dXJuIHl5 X2N1cnJlbnRfc3RhdGU7CnwgfQp8IAp8IC8qIHl5X3RyeV9OVUxfdHJhbnMgLSB0cnkgdG8gbWFr ZSBhIHRyYW5zaXRpb24gb24gdGhlIE5VTCBjaGFyYWN0ZXIKfCAgKgp8ICAqIHN5bm9wc2lzCnwg ICoJbmV4dF9zdGF0ZSA9IHl5X3RyeV9OVUxfdHJhbnMoIGN1cnJlbnRfc3RhdGUgKTsKfCAgKi8K fCAgICAgc3RhdGljIHl5X3N0YXRlX3R5cGUgeXlfdHJ5X05VTF90cmFucyAgKHl5X3N0YXRlX3R5 cGUgeXlfY3VycmVudF9zdGF0ZSApCnwgewp8IAlpbnQgeXlfaXNfamFtOwp8ICAgICAKfCAJWVlf Q0hBUiB5eV9jID0gMTsKfCAJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRl XSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQp8IAkJewp8IAkJeXlfY3VycmVudF9zdGF0 ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKfCAJCWlmICggeXlfY3VycmVudF9z dGF0ZSA+PSAxMyApCnwgCQkJeXlfYyA9IHl5X21ldGFbeXlfY107CnwgCQl9CnwgCXl5X2N1cnJl bnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdOwp8IAl5 eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSAxMik7CnwgCWlmICggISB5eV9pc19qYW0g KQp8IAkJKih5eV9zdGF0ZV9wdHIpKysgPSB5eV9jdXJyZW50X3N0YXRlOwp8IAp8IAkJcmV0dXJu IHl5X2lzX2phbSA/IDAgOiB5eV9jdXJyZW50X3N0YXRlOwp8IH0KfCAKfCAjaWZuZGVmIFlZX05P X1VOUFVUCnwgCnwgICAgIHN0YXRpYyB2b2lkIHl5dW5wdXQgKGludCBjLCBjaGFyICogeXlfYnAg KQp8IHsKfCAJY2hhciAqeXlfY3A7CnwgICAgIAp8ICAgICB5eV9jcCA9ICh5eV9jX2J1Zl9wKTsK fCAKfCAJLyogdW5kbyBlZmZlY3RzIG9mIHNldHRpbmcgdXAgeXl0ZXh0ICovCnwgCSp5eV9jcCA9 ICh5eV9ob2xkX2NoYXIpOwp8IAp8IAlpZiAoIHl5X2NwIDwgWVlfQ1VSUkVOVF9CVUZGRVJfTFZB TFVFLT55eV9jaF9idWYgKyAyICkKfCAJCXsgLyogbmVlZCB0byBzaGlmdCB0aGluZ3MgdXAgdG8g bWFrZSByb29tICovCnwgCQkvKiArMiBmb3IgRU9CIGNoYXJzLiAqLwp8IAkJaW50IG51bWJlcl90 b19tb3ZlID0gKHl5X25fY2hhcnMpICsgMjsKfCAJCWNoYXIgKmRlc3QgPSAmWVlfQ1VSUkVOVF9C VUZGRVJfTFZBTFVFLT55eV9jaF9idWZbCnwgCQkJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUt Pnl5X2J1Zl9zaXplICsgMl07CnwgCQljaGFyICpzb3VyY2UgPQp8IAkJCQkmWVlfQ1VSUkVOVF9C VUZGRVJfTFZBTFVFLT55eV9jaF9idWZbbnVtYmVyX3RvX21vdmVdOwp8IAp8IAkJd2hpbGUgKCBz b3VyY2UgPiBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZiApCnwgCQkJKi0tZGVz dCA9ICotLXNvdXJjZTsKfCAKfCAJCXl5X2NwICs9IChpbnQpIChkZXN0IC0gc291cmNlKTsKfCAJ CXl5X2JwICs9IChpbnQpIChkZXN0IC0gc291cmNlKTsKfCAJCVlZX0NVUlJFTlRfQlVGRkVSX0xW QUxVRS0+eXlfbl9jaGFycyA9CnwgCQkJKHl5X25fY2hhcnMpID0gKGludCkgWVlfQ1VSUkVOVF9C VUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZTsKfCAKfCAJCWlmICggeXlfY3AgPCBZWV9DVVJSRU5U X0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZiArIDIgKQp8IAkJCVlZX0ZBVEFMX0VSUk9SKCAiZmxl eCBzY2FubmVyIHB1c2gtYmFjayBvdmVyZmxvdyIgKTsKfCAJCX0KfCAKfCAJKi0teXlfY3AgPSAo Y2hhcikgYzsKfCAKfCAJKHl5dGV4dF9wdHIpID0geXlfYnA7CnwgCSh5eV9ob2xkX2NoYXIpID0g Knl5X2NwOwp8IAkoeXlfY19idWZfcCkgPSB5eV9jcDsKfCB9CnwgCnwgI2VuZGlmCnwgCnwgI2lm bmRlZiBZWV9OT19JTlBVVAp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8ICAgICBzdGF0aWMgaW50IHl5 aW5wdXQgKHZvaWQpCnwgI2Vsc2UKfCAgICAgc3RhdGljIGludCBpbnB1dCAgKHZvaWQpCnwgI2Vu ZGlmCnwgCnwgewp8IAlpbnQgYzsKfCAgICAgCnwgCSooeXlfY19idWZfcCkgPSAoeXlfaG9sZF9j aGFyKTsKfCAKfCAJaWYgKCAqKHl5X2NfYnVmX3ApID09IFlZX0VORF9PRl9CVUZGRVJfQ0hBUiAp CnwgCQl7CnwgCQkvKiB5eV9jX2J1Zl9wIG5vdyBwb2ludHMgdG8gdGhlIGNoYXJhY3RlciB3ZSB3 YW50IHRvIHJldHVybi4KfCAJCSAqIElmIHRoaXMgb2NjdXJzICpiZWZvcmUqIHRoZSBFT0IgY2hh cmFjdGVycywgdGhlbiBpdCdzIGEKfCAJCSAqIHZhbGlkIE5VTDsgaWYgbm90LCB0aGVuIHdlJ3Zl IGhpdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCnwgCQkgKi8KfCAJCWlmICggKHl5X2NfYnVmX3Ap IDwgJllZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmWyh5eV9uX2NoYXJzKV0gKQp8 IAkJCS8qIFRoaXMgd2FzIHJlYWxseSBhIE5VTC4gKi8KfCAJCQkqKHl5X2NfYnVmX3ApID0gJ1ww JzsKfCAKfCAJCWVsc2UKfCAJCQl7IC8qIG5lZWQgbW9yZSBpbnB1dCAqLwp8IAkJCWludCBvZmZz ZXQgPSAoaW50KSAoKHl5X2NfYnVmX3ApIC0gKHl5dGV4dF9wdHIpKTsKfCAJCQkrKyh5eV9jX2J1 Zl9wKTsKfCAKfCAJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoICApICkKfCAJCQkJewp8 IAkJCQljYXNlIEVPQl9BQ1RfTEFTVF9NQVRDSDoKfCAJCQkJCS8qIFRoaXMgaGFwcGVucyBiZWNh dXNlIHl5X2dfbl9iKCkKfCAJCQkJCSAqIHNlZXMgdGhhdCB3ZSd2ZSBhY2N1bXVsYXRlZCBhCnwg CQkJCQkgKiB0b2tlbiBhbmQgZmxhZ3MgdGhhdCB3ZSBuZWVkIHRvCnwgCQkJCQkgKiB0cnkgbWF0 Y2hpbmcgdGhlIHRva2VuIGJlZm9yZQp8IAkJCQkJICogcHJvY2VlZGluZy4gIEJ1dCBmb3IgaW5w dXQoKSwKfCAJCQkJCSAqIHRoZXJlJ3Mgbm8gbWF0Y2hpbmcgdG8gY29uc2lkZXIuCnwgCQkJCQkg KiBTbyBjb252ZXJ0IHRoZSBFT0JfQUNUX0xBU1RfTUFUQ0gKfCAJCQkJCSAqIHRvIEVPQl9BQ1Rf RU5EX09GX0ZJTEUuCnwgCQkJCQkgKi8KfCAKfCAJCQkJCS8qIFJlc2V0IGJ1ZmZlciBzdGF0dXMu ICovCnwgCQkJCQl5eXJlc3RhcnQoIHl5aW4gKTsKfCAKfCAJCQkJCS8qRkFMTFRIUk9VR0gqLwp8 IAp8IAkJCQljYXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6CnwgCQkJCQl7CnwgCQkJCQlpZiAoIHl5 d3JhcCggICkgKQp8IAkJCQkJCXJldHVybiAwOwp8IAp8IAkJCQkJaWYgKCAhICh5eV9kaWRfYnVm ZmVyX3N3aXRjaF9vbl9lb2YpICkKfCAJCQkJCQlZWV9ORVdfRklMRTsKfCAjaWZkZWYgX19jcGx1 c3BsdXMKfCAJCQkJCXJldHVybiB5eWlucHV0KCk7CnwgI2Vsc2UKfCAJCQkJCXJldHVybiBpbnB1 dCgpOwp8ICNlbmRpZgp8IAkJCQkJfQp8IAp8IAkJCQljYXNlIEVPQl9BQ1RfQ09OVElOVUVfU0NB TjoKfCAJCQkJCSh5eV9jX2J1Zl9wKSA9ICh5eXRleHRfcHRyKSArIG9mZnNldDsKfCAJCQkJCWJy ZWFrOwp8IAkJCQl9CnwgCQkJfQp8IAkJfQp8IAp8IAljID0gKih1bnNpZ25lZCBjaGFyICopICh5 eV9jX2J1Zl9wKTsJLyogY2FzdCBmb3IgOC1iaXQgY2hhcidzICovCnwgCSooeXlfY19idWZfcCkg PSAnXDAnOwkvKiBwcmVzZXJ2ZSB5eXRleHQgKi8KfCAJKHl5X2hvbGRfY2hhcikgPSAqKysoeXlf Y19idWZfcCk7CnwgCnwgCXJldHVybiBjOwp8IH0KfCAjZW5kaWYJLyogaWZuZGVmIFlZX05PX0lO UFVUICovCnwgCnwgLyoqIEltbWVkaWF0ZWx5IHN3aXRjaCB0byBhIGRpZmZlcmVudCBpbnB1dCBz dHJlYW0uCnwgICogQHBhcmFtIGlucHV0X2ZpbGUgQSByZWFkYWJsZSBzdHJlYW0uCnwgICogCnwg ICogQG5vdGUgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXNldCB0aGUgc3RhcnQgY29uZGl0aW9u IHRvIEBjIElOSVRJQUwgLgp8ICAqLwp8ICAgICB2b2lkIHl5cmVzdGFydCAgKEZJTEUgKiBpbnB1 dF9maWxlICkKfCB7CnwgICAgIAp8IAlpZiAoICEgWVlfQ1VSUkVOVF9CVUZGRVIgKXsKfCAgICAg ICAgIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjayAoKTsKfCAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxV RSA9CnwgICAgICAgICAgICAgeXlfY3JlYXRlX2J1ZmZlciggeXlpbiwgWVlfQlVGX1NJWkUgKTsK fCAJfQp8IAp8IAl5eV9pbml0X2J1ZmZlciggWVlfQ1VSUkVOVF9CVUZGRVIsIGlucHV0X2ZpbGUg KTsKfCAJeXlfbG9hZF9idWZmZXJfc3RhdGUoICApOwp8IH0KfCAKfCAvKiogU3dpdGNoIHRvIGEg ZGlmZmVyZW50IGlucHV0IGJ1ZmZlci4KfCAgKiBAcGFyYW0gbmV3X2J1ZmZlciBUaGUgbmV3IGlu cHV0IGJ1ZmZlci4KfCAgKiAKfCAgKi8KfCAgICAgdm9pZCB5eV9zd2l0Y2hfdG9fYnVmZmVyICAo WVlfQlVGRkVSX1NUQVRFICBuZXdfYnVmZmVyICkKfCB7CnwgICAgIAp8IAkvKiBUT0RPLiBXZSBz aG91bGQgYmUgYWJsZSB0byByZXBsYWNlIHRoaXMgZW50aXJlIGZ1bmN0aW9uIGJvZHkKfCAJICog d2l0aAp8IAkgKgkJeXlwb3BfYnVmZmVyX3N0YXRlKCk7CnwgCSAqCQl5eXB1c2hfYnVmZmVyX3N0 YXRlKG5ld19idWZmZXIpOwp8ICAgICAgKi8KfCAJeXllbnN1cmVfYnVmZmVyX3N0YWNrICgpOwp8 IAlpZiAoIFlZX0NVUlJFTlRfQlVGRkVSID09IG5ld19idWZmZXIgKQp8IAkJcmV0dXJuOwp8IAp8 IAlpZiAoIFlZX0NVUlJFTlRfQlVGRkVSICkKfCAJCXsKfCAJCS8qIEZsdXNoIG91dCBpbmZvcm1h dGlvbiBmb3Igb2xkIGJ1ZmZlci4gKi8KfCAJCSooeXlfY19idWZfcCkgPSAoeXlfaG9sZF9jaGFy KTsKfCAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3BvcyA9ICh5eV9jX2J1Zl9w KTsKfCAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9ICh5eV9uX2NoYXJz KTsKfCAJCX0KfCAKfCAJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFID0gbmV3X2J1ZmZlcjsKfCAJ eXlfbG9hZF9idWZmZXJfc3RhdGUoICApOwp8IAp8IAkvKiBXZSBkb24ndCBhY3R1YWxseSBrbm93 IHdoZXRoZXIgd2UgZGlkIHRoaXMgc3dpdGNoIGR1cmluZwp8IAkgKiBFT0YgKHl5d3JhcCgpKSBw cm9jZXNzaW5nLCBidXQgdGhlIG9ubHkgdGltZSB0aGlzIGZsYWcKfCAJICogaXMgbG9va2VkIGF0 IGlzIGFmdGVyIHl5d3JhcCgpIGlzIGNhbGxlZCwgc28gaXQncyBzYWZlCnwgCSAqIHRvIGdvIGFo ZWFkIGFuZCBhbHdheXMgc2V0IGl0Lgp8IAkgKi8KfCAJKHl5X2RpZF9idWZmZXJfc3dpdGNoX29u X2VvZikgPSAxOwp8IH0KfCAKfCBzdGF0aWMgdm9pZCB5eV9sb2FkX2J1ZmZlcl9zdGF0ZSAgKHZv aWQpCnwgewp8ICAgICAJKHl5X25fY2hhcnMpID0gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55 eV9uX2NoYXJzOwp8IAkoeXl0ZXh0X3B0cikgPSAoeXlfY19idWZfcCkgPSBZWV9DVVJSRU5UX0JV RkZFUl9MVkFMVUUtPnl5X2J1Zl9wb3M7CnwgCXl5aW4gPSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFM VUUtPnl5X2lucHV0X2ZpbGU7CnwgCSh5eV9ob2xkX2NoYXIpID0gKih5eV9jX2J1Zl9wKTsKfCB9 CnwgCnwgLyoqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIGlucHV0IGJ1ZmZlciBzdGF0ZS4K fCAgKiBAcGFyYW0gZmlsZSBBIHJlYWRhYmxlIHN0cmVhbS4KfCAgKiBAcGFyYW0gc2l6ZSBUaGUg Y2hhcmFjdGVyIGJ1ZmZlciBzaXplIGluIGJ5dGVzLiBXaGVuIGluIGRvdWJ0LCB1c2UgQGMgWVlf QlVGX1NJWkUuCnwgICogCnwgICogQHJldHVybiB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZS4K fCAgKi8KfCAgICAgWVlfQlVGRkVSX1NUQVRFIHl5X2NyZWF0ZV9idWZmZXIgIChGSUxFICogZmls ZSwgaW50ICBzaXplICkKfCB7CnwgCVlZX0JVRkZFUl9TVEFURSBiOwp8ICAgICAKfCAJYiA9IChZ WV9CVUZGRVJfU1RBVEUpIHl5YWxsb2MoIHNpemVvZiggc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAp ICApOwp8IAlpZiAoICEgYiApCnwgCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5hbWljIG1l bW9yeSBpbiB5eV9jcmVhdGVfYnVmZmVyKCkiICk7CnwgCnwgCWItPnl5X2J1Zl9zaXplID0gc2l6 ZTsKfCAKfCAJLyogeXlfY2hfYnVmIGhhcyB0byBiZSAyIGNoYXJhY3RlcnMgbG9uZ2VyIHRoYW4g dGhlIHNpemUgZ2l2ZW4gYmVjYXVzZQp8IAkgKiB3ZSBuZWVkIHRvIHB1dCBpbiAyIGVuZC1vZi1i dWZmZXIgY2hhcmFjdGVycy4KfCAJICovCnwgCWItPnl5X2NoX2J1ZiA9IChjaGFyICopIHl5YWxs b2MoICh5eV9zaXplX3QpIChiLT55eV9idWZfc2l6ZSArIDIpICApOwp8IAlpZiAoICEgYi0+eXlf Y2hfYnVmICkKfCAJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5 X2NyZWF0ZV9idWZmZXIoKSIgKTsKfCAKfCAJYi0+eXlfaXNfb3VyX2J1ZmZlciA9IDE7CnwgCnwg CXl5X2luaXRfYnVmZmVyKCBiLCBmaWxlICk7CnwgCnwgCXJldHVybiBiOwp8IH0KfCAKfCAvKiog RGVzdHJveSB0aGUgYnVmZmVyLgp8ICAqIEBwYXJhbSBiIGEgYnVmZmVyIGNyZWF0ZWQgd2l0aCB5 eV9jcmVhdGVfYnVmZmVyKCkKfCAgKiAKfCAgKi8KfCAgICAgdm9pZCB5eV9kZWxldGVfYnVmZmVy IChZWV9CVUZGRVJfU1RBVEUgIGIgKQp8IHsKfCAgICAgCnwgCWlmICggISBiICkKfCAJCXJldHVy bjsKfCAKfCAJaWYgKCBiID09IFlZX0NVUlJFTlRfQlVGRkVSICkgLyogTm90IHN1cmUgaWYgd2Ug c2hvdWxkIHBvcCBoZXJlLiAqLwp8IAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFID0gKFlZX0JV RkZFUl9TVEFURSkgMDsKfCAKfCAJaWYgKCBiLT55eV9pc19vdXJfYnVmZmVyICkKfCAJCXl5ZnJl ZSggKHZvaWQgKikgYi0+eXlfY2hfYnVmICApOwp8IAp8IAl5eWZyZWUoICh2b2lkICopIGIgICk7 CnwgfQp8IAp8IC8qIEluaXRpYWxpemVzIG9yIHJlaW5pdGlhbGl6ZXMgYSBidWZmZXIuCnwgICog VGhpcyBmdW5jdGlvbiBpcyBzb21ldGltZXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIG9uIHRoZSBz YW1lIGJ1ZmZlciwKfCAgKiBzdWNoIGFzIGR1cmluZyBhIHl5cmVzdGFydCgpIG9yIGF0IEVPRi4K fCAgKi8KfCAgICAgc3RhdGljIHZvaWQgeXlfaW5pdF9idWZmZXIgIChZWV9CVUZGRVJfU1RBVEUg IGIsIEZJTEUgKiBmaWxlICkKfCAKfCB7CnwgCWludCBvZXJybm8gPSBlcnJubzsKfCAgICAgCnwg CXl5X2ZsdXNoX2J1ZmZlciggYiApOwp8IAp8IAliLT55eV9pbnB1dF9maWxlID0gZmlsZTsKfCAJ Yi0+eXlfZmlsbF9idWZmZXIgPSAxOwp8IAp8ICAgICAvKiBJZiBiIGlzIHRoZSBjdXJyZW50IGJ1 ZmZlciwgdGhlbiB5eV9pbml0X2J1ZmZlciB3YXMgX3Byb2JhYmx5Xwp8ICAgICAgKiBjYWxsZWQg ZnJvbSB5eXJlc3RhcnQoKSBvciB0aHJvdWdoIHl5X2dldF9uZXh0X2J1ZmZlci4KfCAgICAgICog SW4gdGhhdCBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIHJlc2V0IHRoZSBsaW5lbm8gb3IgY29sdW1u Lgp8ICAgICAgKi8KfCAgICAgaWYgKGIgIT0gWVlfQ1VSUkVOVF9CVUZGRVIpewp8ICAgICAgICAg Yi0+eXlfYnNfbGluZW5vID0gMTsKfCAgICAgICAgIGItPnl5X2JzX2NvbHVtbiA9IDA7CnwgICAg IH0KfCAKfCAgICAgICAgIGItPnl5X2lzX2ludGVyYWN0aXZlID0gZmlsZSA/IChpc2F0dHkoIGZp bGVubyhmaWxlKSApID4gMCkgOiAwOwp8ICAgICAKfCAJZXJybm8gPSBvZXJybm87CnwgfQp8IAp8 IC8qKiBEaXNjYXJkIGFsbCBidWZmZXJlZCBjaGFyYWN0ZXJzLiBPbiB0aGUgbmV4dCBzY2FuLCBZ WV9JTlBVVCB3aWxsIGJlIGNhbGxlZC4KfCAgKiBAcGFyYW0gYiB0aGUgYnVmZmVyIHN0YXRlIHRv IGJlIGZsdXNoZWQsIHVzdWFsbHkgQGMgWVlfQ1VSUkVOVF9CVUZGRVIuCnwgICogCnwgICovCnwg ICAgIHZvaWQgeXlfZmx1c2hfYnVmZmVyIChZWV9CVUZGRVJfU1RBVEUgIGIgKQp8IHsKfCAgICAg CWlmICggISBiICkKfCAJCXJldHVybjsKfCAKfCAJYi0+eXlfbl9jaGFycyA9IDA7CnwgCnwgCS8q IFdlIGFsd2F5cyBuZWVkIHR3byBlbmQtb2YtYnVmZmVyIGNoYXJhY3RlcnMuICBUaGUgZmlyc3Qg Y2F1c2VzCnwgCSAqIGEgdHJhbnNpdGlvbiB0byB0aGUgZW5kLW9mLWJ1ZmZlciBzdGF0ZS4gIFRo ZSBzZWNvbmQgY2F1c2VzCnwgCSAqIGEgamFtIGluIHRoYXQgc3RhdGUuCnwgCSAqLwp8IAliLT55 eV9jaF9idWZbMF0gPSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVI7CnwgCWItPnl5X2NoX2J1ZlsxXSA9 IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKfCAKfCAJYi0+eXlfYnVmX3BvcyA9ICZiLT55eV9jaF9i dWZbMF07CnwgCnwgCWItPnl5X2F0X2JvbCA9IDE7CnwgCWItPnl5X2J1ZmZlcl9zdGF0dXMgPSBZ WV9CVUZGRVJfTkVXOwp8IAp8IAlpZiAoIGIgPT0gWVlfQ1VSUkVOVF9CVUZGRVIgKQp8IAkJeXlf bG9hZF9idWZmZXJfc3RhdGUoICApOwp8IH0KfCAKfCAvKiogUHVzaGVzIHRoZSBuZXcgc3RhdGUg b250byB0aGUgc3RhY2suIFRoZSBuZXcgc3RhdGUgYmVjb21lcwp8ICAqICB0aGUgY3VycmVudCBz dGF0ZS4gVGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHRoZSBzdGFjawp8ICAqICBpZiBuZWNl c3NhcnkuCnwgICogIEBwYXJhbSBuZXdfYnVmZmVyIFRoZSBuZXcgc3RhdGUuCnwgICogIAp8ICAq Lwp8IHZvaWQgeXlwdXNoX2J1ZmZlcl9zdGF0ZSAoWVlfQlVGRkVSX1NUQVRFIG5ld19idWZmZXIg KQp8IHsKfCAgICAgCWlmIChuZXdfYnVmZmVyID09IE5VTEwpCnwgCQlyZXR1cm47CnwgCnwgCXl5 ZW5zdXJlX2J1ZmZlcl9zdGFjaygpOwp8IAp8IAkvKiBUaGlzIGJsb2NrIGlzIGNvcGllZCBmcm9t IHl5X3N3aXRjaF90b19idWZmZXIuICovCnwgCWlmICggWVlfQ1VSUkVOVF9CVUZGRVIgKQp8IAkJ ewp8IAkJLyogRmx1c2ggb3V0IGluZm9ybWF0aW9uIGZvciBvbGQgYnVmZmVyLiAqLwp8IAkJKih5 eV9jX2J1Zl9wKSA9ICh5eV9ob2xkX2NoYXIpOwp8IAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVF LT55eV9idWZfcG9zID0gKHl5X2NfYnVmX3ApOwp8IAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVF LT55eV9uX2NoYXJzID0gKHl5X25fY2hhcnMpOwp8IAkJfQp8IAp8IAkvKiBPbmx5IHB1c2ggaWYg dG9wIGV4aXN0cy4gT3RoZXJ3aXNlLCByZXBsYWNlIHRvcC4gKi8KfCAJaWYgKFlZX0NVUlJFTlRf QlVGRkVSKQp8IAkJKHl5X2J1ZmZlcl9zdGFja190b3ApKys7CnwgCVlZX0NVUlJFTlRfQlVGRkVS X0xWQUxVRSA9IG5ld19idWZmZXI7CnwgCnwgCS8qIGNvcGllZCBmcm9tIHl5X3N3aXRjaF90b19i dWZmZXIuICovCnwgCXl5X2xvYWRfYnVmZmVyX3N0YXRlKCAgKTsKfCAJKHl5X2RpZF9idWZmZXJf c3dpdGNoX29uX2VvZikgPSAxOwp8IH0KfCAKfCAvKiogUmVtb3ZlcyBhbmQgZGVsZXRlcyB0aGUg dG9wIG9mIHRoZSBzdGFjaywgaWYgcHJlc2VudC4KfCAgKiAgVGhlIG5leHQgZWxlbWVudCBiZWNv bWVzIHRoZSBuZXcgdG9wLgp8ICAqICAKfCAgKi8KfCB2b2lkIHl5cG9wX2J1ZmZlcl9zdGF0ZSAo dm9pZCkKfCB7CnwgICAgIAlpZiAoIVlZX0NVUlJFTlRfQlVGRkVSKQp8IAkJcmV0dXJuOwp8IAp8 IAl5eV9kZWxldGVfYnVmZmVyKFlZX0NVUlJFTlRfQlVGRkVSICk7CnwgCVlZX0NVUlJFTlRfQlVG RkVSX0xWQUxVRSA9IE5VTEw7CnwgCWlmICgoeXlfYnVmZmVyX3N0YWNrX3RvcCkgPiAwKQp8IAkJ LS0oeXlfYnVmZmVyX3N0YWNrX3RvcCk7CnwgCnwgCWlmIChZWV9DVVJSRU5UX0JVRkZFUikgewp8 IAkJeXlfbG9hZF9idWZmZXJfc3RhdGUoICApOwp8IAkJKHl5X2RpZF9idWZmZXJfc3dpdGNoX29u X2VvZikgPSAxOwp8IAl9CnwgfQp8IAp8IC8qIEFsbG9jYXRlcyB0aGUgc3RhY2sgaWYgaXQgZG9l cyBub3QgZXhpc3QuCnwgICogIEd1YXJhbnRlZXMgc3BhY2UgZm9yIGF0IGxlYXN0IG9uZSBwdXNo Lgp8ICAqLwp8IHN0YXRpYyB2b2lkIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjayAodm9pZCkKfCB7Cnwg CXl5X3NpemVfdCBudW1fdG9fYWxsb2M7CnwgICAgIAp8IAlpZiAoISh5eV9idWZmZXJfc3RhY2sp KSB7CnwgCnwgCQkvKiBGaXJzdCBhbGxvY2F0aW9uIGlzIGp1c3QgZm9yIDIgZWxlbWVudHMsIHNp bmNlIHdlIGRvbid0IGtub3cgaWYgdGhpcwp8IAkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBh IHN0YWNrLiBXZSB1c2UgMiBpbnN0ZWFkIG9mIDEgdG8gYXZvaWQgYW4KfCAJCSAqIGltbWVkaWF0 ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuCnwgICAgICAgICAgKi8KfCAgICAgICBudW1fdG9f YWxsb2MgPSAxOyAvKiBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3 YXlzLi4uICovCnwgCQkoeXlfYnVmZmVyX3N0YWNrKSA9IChzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRl KiopeXlhbGxvYwp8IAkJCQkJCQkJKG51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1Y3QgeXlfYnVm ZmVyX3N0YXRlKikKfCAJCQkJCQkJCSk7CnwgCQlpZiAoICEgKHl5X2J1ZmZlcl9zdGFjaykgKQp8 IAkJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5ZW5zdXJlX2J1 ZmZlcl9zdGFjaygpIiApOwp8IAp8IAkJbWVtc2V0KCh5eV9idWZmZXJfc3RhY2spLCAwLCBudW1f dG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopKTsKfCAKfCAJCSh5eV9i dWZmZXJfc3RhY2tfbWF4KSA9IG51bV90b19hbGxvYzsKfCAJCSh5eV9idWZmZXJfc3RhY2tfdG9w KSA9IDA7CnwgCQlyZXR1cm47CnwgCX0KfCAKfCAJaWYgKCh5eV9idWZmZXJfc3RhY2tfdG9wKSA+ PSAoKHl5X2J1ZmZlcl9zdGFja19tYXgpKSAtIDEpewp8IAp8IAkJLyogSW5jcmVhc2UgdGhlIGJ1 ZmZlciB0byBwcmVwYXJlIGZvciBhIHBvc3NpYmxlIHB1c2guICovCnwgCQl5eV9zaXplX3QgZ3Jv d19zaXplID0gOCAvKiBhcmJpdHJhcnkgZ3JvdyBzaXplICovOwp8IAp8IAkJbnVtX3RvX2FsbG9j ID0gKHl5X2J1ZmZlcl9zdGFja19tYXgpICsgZ3Jvd19zaXplOwp8IAkJKHl5X2J1ZmZlcl9zdGFj aykgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5cmVhbGxvYwp8IAkJCQkJCQkJKCh5eV9i dWZmZXJfc3RhY2spLAp8IAkJCQkJCQkJbnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9i dWZmZXJfc3RhdGUqKQp8IAkJCQkJCQkJKTsKfCAJCWlmICggISAoeXlfYnVmZmVyX3N0YWNrKSAp CnwgCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4geXllbnN1cmVf YnVmZmVyX3N0YWNrKCkiICk7CnwgCnwgCQkvKiB6ZXJvIG9ubHkgdGhlIG5ldyBzbG90cy4qLwp8 IAkJbWVtc2V0KCh5eV9idWZmZXJfc3RhY2spICsgKHl5X2J1ZmZlcl9zdGFja19tYXgpLCAwLCBn cm93X3NpemUgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopKTsKfCAJCSh5eV9idWZm ZXJfc3RhY2tfbWF4KSA9IG51bV90b19hbGxvYzsKfCAJfQp8IH0KfCAKfCAvKiogU2V0dXAgdGhl IGlucHV0IGJ1ZmZlciBzdGF0ZSB0byBzY2FuIGRpcmVjdGx5IGZyb20gYSB1c2VyLXNwZWNpZmll ZCBjaGFyYWN0ZXIgYnVmZmVyLgp8ICAqIEBwYXJhbSBiYXNlIHRoZSBjaGFyYWN0ZXIgYnVmZmVy CnwgICogQHBhcmFtIHNpemUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGNoYXJhY3RlciBidWZm ZXIKfCAgKiAKfCAgKiBAcmV0dXJuIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyIHN0YXRlIG9i amVjdC4KfCAgKi8KfCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9idWZmZXIgIChjaGFyICogYmFz ZSwgeXlfc2l6ZV90ICBzaXplICkKfCB7CnwgCVlZX0JVRkZFUl9TVEFURSBiOwp8ICAgICAKfCAJ aWYgKCBzaXplIDwgMiB8fAp8IAkgICAgIGJhc2Vbc2l6ZS0yXSAhPSBZWV9FTkRfT0ZfQlVGRkVS X0NIQVIgfHwKfCAJICAgICBiYXNlW3NpemUtMV0gIT0gWVlfRU5EX09GX0JVRkZFUl9DSEFSICkK fCAJCS8qIFRoZXkgZm9yZ290IHRvIGxlYXZlIHJvb20gZm9yIHRoZSBFT0Incy4gKi8KfCAJCXJl dHVybiBOVUxMOwp8IAp8IAliID0gKFlZX0JVRkZFUl9TVEFURSkgeXlhbGxvYyggc2l6ZW9mKCBz dHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICkgICk7CnwgCWlmICggISBiICkKfCAJCVlZX0ZBVEFMX0VS Uk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X3NjYW5fYnVmZmVyKCkiICk7CnwgCnwg CWItPnl5X2J1Zl9zaXplID0gKGludCkgKHNpemUgLSAyKTsJLyogIi0gMiIgdG8gdGFrZSBjYXJl IG9mIEVPQidzICovCnwgCWItPnl5X2J1Zl9wb3MgPSBiLT55eV9jaF9idWYgPSBiYXNlOwp8IAli LT55eV9pc19vdXJfYnVmZmVyID0gMDsKfCAJYi0+eXlfaW5wdXRfZmlsZSA9IE5VTEw7CnwgCWIt Pnl5X25fY2hhcnMgPSBiLT55eV9idWZfc2l6ZTsKfCAJYi0+eXlfaXNfaW50ZXJhY3RpdmUgPSAw Owp8IAliLT55eV9hdF9ib2wgPSAxOwp8IAliLT55eV9maWxsX2J1ZmZlciA9IDA7CnwgCWItPnl5 X2J1ZmZlcl9zdGF0dXMgPSBZWV9CVUZGRVJfTkVXOwp8IAp8IAl5eV9zd2l0Y2hfdG9fYnVmZmVy KCBiICApOwp8IAp8IAlyZXR1cm4gYjsKfCB9CnwgCnwgLyoqIFNldHVwIHRoZSBpbnB1dCBidWZm ZXIgc3RhdGUgdG8gc2NhbiBhIHN0cmluZy4gVGhlIG5leHQgY2FsbCB0byB5eWxleCgpIHdpbGwK fCAgKiBzY2FuIGZyb20gYSBAZSBjb3B5IG9mIEBhIHN0ci4KfCAgKiBAcGFyYW0geXlzdHIgYSBO VUwtdGVybWluYXRlZCBzdHJpbmcgdG8gc2Nhbgp8ICAqIAp8ICAqIEByZXR1cm4gdGhlIG5ld2x5 IGFsbG9jYXRlZCBidWZmZXIgc3RhdGUgb2JqZWN0Lgp8ICAqIEBub3RlIElmIHlvdSB3YW50IHRv IHNjYW4gYnl0ZXMgdGhhdCBtYXkgY29udGFpbiBOVUwgdmFsdWVzLCB0aGVuIHVzZQp8ICAqICAg ICAgIHl5X3NjYW5fYnl0ZXMoKSBpbnN0ZWFkLgp8ICAqLwp8IFlZX0JVRkZFUl9TVEFURSB5eV9z Y2FuX3N0cmluZyAoY29uc3QgY2hhciAqIHl5c3RyICkKfCB7CnwgICAgIAp8IAlyZXR1cm4geXlf c2Nhbl9ieXRlcyggeXlzdHIsIChpbnQpIHN0cmxlbih5eXN0cikgKTsKfCB9CnwgCnwgLyoqIFNl dHVwIHRoZSBpbnB1dCBidWZmZXIgc3RhdGUgdG8gc2NhbiB0aGUgZ2l2ZW4gYnl0ZXMuIFRoZSBu ZXh0IGNhbGwgdG8geXlsZXgoKSB3aWxsCnwgICogc2NhbiBmcm9tIGEgQGUgY29weSBvZiBAYSBi eXRlcy4KfCAgKiBAcGFyYW0geXlieXRlcyB0aGUgYnl0ZSBidWZmZXIgdG8gc2Nhbgp8ICAqIEBw YXJhbSBfeXlieXRlc19sZW4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgYnVmZmVyIHBvaW50 ZWQgdG8gYnkgQGEgYnl0ZXMuCnwgICogCnwgICogQHJldHVybiB0aGUgbmV3bHkgYWxsb2NhdGVk IGJ1ZmZlciBzdGF0ZSBvYmplY3QuCnwgICovCnwgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0 ZXMgIChjb25zdCBjaGFyICogeXlieXRlcywgaW50ICBfeXlieXRlc19sZW4gKQp8IHsKfCAJWVlf QlVGRkVSX1NUQVRFIGI7CnwgCWNoYXIgKmJ1ZjsKfCAJeXlfc2l6ZV90IG47CnwgCWludCBpOwp8 ICAgICAKfCAJLyogR2V0IG1lbW9yeSBmb3IgZnVsbCBidWZmZXIsIGluY2x1ZGluZyBzcGFjZSBm b3IgdHJhaWxpbmcgRU9CJ3MuICovCnwgCW4gPSAoeXlfc2l6ZV90KSAoX3l5Ynl0ZXNfbGVuICsg Mik7CnwgCWJ1ZiA9IChjaGFyICopIHl5YWxsb2MoIG4gICk7CnwgCWlmICggISBidWYgKQp8IAkJ WVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4geXlfc2Nhbl9ieXRlcygp IiApOwp8IAp8IAlmb3IgKCBpID0gMDsgaSA8IF95eWJ5dGVzX2xlbjsgKytpICkKfCAJCWJ1Zltp XSA9IHl5Ynl0ZXNbaV07CnwgCnwgCWJ1ZltfeXlieXRlc19sZW5dID0gYnVmW195eWJ5dGVzX2xl bisxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKfCAKfCAJYiA9IHl5X3NjYW5fYnVmZmVyKCBi dWYsIG4gKTsKfCAJaWYgKCAhIGIgKQp8IAkJWVlfRkFUQUxfRVJST1IoICJiYWQgYnVmZmVyIGlu IHl5X3NjYW5fYnl0ZXMoKSIgKTsKfCAKfCAJLyogSXQncyBva2F5IHRvIGdyb3cgZXRjLiB0aGlz IGJ1ZmZlciwgYW5kIHdlIHNob3VsZCB0aHJvdyBpdAp8IAkgKiBhd2F5IHdoZW4gd2UncmUgZG9u ZS4KfCAJICovCnwgCWItPnl5X2lzX291cl9idWZmZXIgPSAxOwp8IAp8IAlyZXR1cm4gYjsKfCB9 CnwgCnwgI2lmbmRlZiBZWV9FWElUX0ZBSUxVUkUKfCAjZGVmaW5lIFlZX0VYSVRfRkFJTFVSRSAy CnwgI2VuZGlmCnwgCnwgc3RhdGljIHZvaWQgeXlub3JldHVybiB5eV9mYXRhbF9lcnJvciAoY29u c3QgY2hhciogbXNnICkKfCB7CnwgCQkJZnByaW50Ziggc3RkZXJyLCAiJXNcbiIsIG1zZyApOwp8 IAlleGl0KCBZWV9FWElUX0ZBSUxVUkUgKTsKfCB9CnwgCnwgLyogUmVkZWZpbmUgeXlsZXNzKCkg c28gaXQgd29ya3MgaW4gc2VjdGlvbiAzIGNvZGUuICovCnwgCnwgI3VuZGVmIHl5bGVzcwp8ICNk ZWZpbmUgeXlsZXNzKG4pIFwKfCAJZG8gXAp8IAkJeyBcCnwgCQkvKiBVbmRvIGVmZmVjdHMgb2Yg c2V0dGluZyB1cCB5eXRleHQuICovIFwKfCAgICAgICAgIGludCB5eWxlc3NfbWFjcm9fYXJnID0g KG4pOyBcCnwgICAgICAgICBZWV9MRVNTX0xJTkVOTyh5eWxlc3NfbWFjcm9fYXJnKTtcCnwgCQl5 eXRleHRbeXlsZW5nXSA9ICh5eV9ob2xkX2NoYXIpOyBcCnwgCQkoeXlfY19idWZfcCkgPSB5eXRl eHQgKyB5eWxlc3NfbWFjcm9fYXJnOyBcCnwgCQkoeXlfaG9sZF9jaGFyKSA9ICooeXlfY19idWZf cCk7IFwKfCAJCSooeXlfY19idWZfcCkgPSAnXDAnOyBcCnwgCQl5eWxlbmcgPSB5eWxlc3NfbWFj cm9fYXJnOyBcCnwgCQl9IFwKfCAJd2hpbGUgKCAwICkKfCAKfCAvKiBBY2Nlc3NvciAgbWV0aG9k cyAoZ2V0L3NldCBmdW5jdGlvbnMpIHRvIHN0cnVjdCBtZW1iZXJzLiAqLwp8IAp8IC8qKiBHZXQg dGhlIGN1cnJlbnQgbGluZSBudW1iZXIuCnwgICogCnwgICovCnwgaW50IHl5Z2V0X2xpbmVubyAg KHZvaWQpCnwgewp8ICAgICAKfCAgICAgcmV0dXJuIHl5bGluZW5vOwp8IH0KfCAKfCAvKiogR2V0 IHRoZSBpbnB1dCBzdHJlYW0uCnwgICogCnwgICovCnwgRklMRSAqeXlnZXRfaW4gICh2b2lkKQp8 IHsKfCAgICAgICAgIHJldHVybiB5eWluOwp8IH0KfCAKfCAvKiogR2V0IHRoZSBvdXRwdXQgc3Ry ZWFtLgp8ICAqIAp8ICAqLwp8IEZJTEUgKnl5Z2V0X291dCAgKHZvaWQpCnwgewp8ICAgICAgICAg cmV0dXJuIHl5b3V0Owp8IH0KfCAKfCAvKiogR2V0IHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQg dG9rZW4uCnwgICogCnwgICovCnwgaW50IHl5Z2V0X2xlbmcgICh2b2lkKQp8IHsKfCAgICAgICAg IHJldHVybiB5eWxlbmc7CnwgfQp8IAp8IC8qKiBHZXQgdGhlIGN1cnJlbnQgdG9rZW4uCnwgICog CnwgICovCnwgCnwgY2hhciAqeXlnZXRfdGV4dCAgKHZvaWQpCnwgewp8ICAgICAgICAgcmV0dXJu IHl5dGV4dDsKfCB9CnwgCnwgLyoqIFNldCB0aGUgY3VycmVudCBsaW5lIG51bWJlci4KfCAgKiBA cGFyYW0gX2xpbmVfbnVtYmVyIGxpbmUgbnVtYmVyCnwgICogCnwgICovCnwgdm9pZCB5eXNldF9s aW5lbm8gKGludCAgX2xpbmVfbnVtYmVyICkKfCB7CnwgICAgIAp8ICAgICB5eWxpbmVubyA9IF9s aW5lX251bWJlcjsKfCB9CnwgCnwgLyoqIFNldCB0aGUgaW5wdXQgc3RyZWFtLiBUaGlzIGRvZXMg bm90IGRpc2NhcmQgdGhlIGN1cnJlbnQKfCAgKiBpbnB1dCBidWZmZXIuCnwgICogQHBhcmFtIF9p bl9zdHIgQSByZWFkYWJsZSBzdHJlYW0uCnwgICogCnwgICogQHNlZSB5eV9zd2l0Y2hfdG9fYnVm ZmVyCnwgICovCnwgdm9pZCB5eXNldF9pbiAoRklMRSAqICBfaW5fc3RyICkKfCB7CnwgICAgICAg ICB5eWluID0gX2luX3N0ciA7CnwgfQp8IAp8IHZvaWQgeXlzZXRfb3V0IChGSUxFICogIF9vdXRf c3RyICkKfCB7CnwgICAgICAgICB5eW91dCA9IF9vdXRfc3RyIDsKfCB9CnwgCnwgaW50IHl5Z2V0 X2RlYnVnICAodm9pZCkKfCB7CnwgICAgICAgICByZXR1cm4geXlfZmxleF9kZWJ1ZzsKfCB9Cnwg Cnwgdm9pZCB5eXNldF9kZWJ1ZyAoaW50ICBfYmRlYnVnICkKfCB7CnwgICAgICAgICB5eV9mbGV4 X2RlYnVnID0gX2JkZWJ1ZyA7CnwgfQp8IAp8IHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh2 b2lkKQp8IHsKfCAgICAgICAgIC8qIEluaXRpYWxpemF0aW9uIGlzIHRoZSBzYW1lIGFzIGZvciB0 aGUgbm9uLXJlZW50cmFudCBzY2FubmVyLgp8ICAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCBmcm9tIHl5bGV4X2Rlc3Ryb3koKSwgc28gZG9uJ3QgYWxsb2NhdGUgaGVyZS4KfCAgICAgICov CnwgCnwgICAgICh5eV9idWZmZXJfc3RhY2spID0gTlVMTDsKfCAgICAgKHl5X2J1ZmZlcl9zdGFj a190b3ApID0gMDsKfCAgICAgKHl5X2J1ZmZlcl9zdGFja19tYXgpID0gMDsKfCAgICAgKHl5X2Nf YnVmX3ApID0gTlVMTDsKfCAgICAgKHl5X2luaXQpID0gMDsKfCAgICAgKHl5X3N0YXJ0KSA9IDA7 CnwgCnwgICAgICh5eV9zdGF0ZV9idWYpID0gMDsKfCAgICAgKHl5X3N0YXRlX3B0cikgPSAwOwp8 ICAgICAoeXlfZnVsbF9tYXRjaCkgPSAwOwp8ICAgICAoeXlfbHApID0gMDsKfCAKfCAvKiBEZWZp bmVkIGluIG1haW4uYyAqLwp8ICNpZmRlZiBZWV9TVERJTklUCnwgICAgIHl5aW4gPSBzdGRpbjsK fCAgICAgeXlvdXQgPSBzdGRvdXQ7CnwgI2Vsc2UKfCAgICAgeXlpbiA9IE5VTEw7CnwgICAgIHl5 b3V0ID0gTlVMTDsKfCAjZW5kaWYKfCAKfCAgICAgLyogRm9yIGZ1dHVyZSByZWZlcmVuY2U6IFNl dCBlcnJubyBvbiBlcnJvciwgc2luY2Ugd2UgYXJlIGNhbGxlZCBieQp8ICAgICAgKiB5eWxleF9p bml0KCkKfCAgICAgICovCnwgICAgIHJldHVybiAwOwp8IH0KfCAKfCAvKiB5eWxleF9kZXN0cm95 IGlzIGZvciBib3RoIHJlZW50cmFudCBhbmQgbm9uLXJlZW50cmFudCBzY2FubmVycy4gKi8KfCBp bnQgeXlsZXhfZGVzdHJveSAgKHZvaWQpCnwgewp8ICAgICAKfCAgICAgLyogUG9wIHRoZSBidWZm ZXIgc3RhY2ssIGRlc3Ryb3lpbmcgZWFjaCBlbGVtZW50LiAqLwp8IAl3aGlsZShZWV9DVVJSRU5U X0JVRkZFUil7CnwgCQl5eV9kZWxldGVfYnVmZmVyKCBZWV9DVVJSRU5UX0JVRkZFUiAgKTsKfCAJ CVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRSA9IE5VTEw7CnwgCQl5eXBvcF9idWZmZXJfc3RhdGUo KTsKfCAJfQp8IAp8IAkvKiBEZXN0cm95IHRoZSBzdGFjayBpdHNlbGYuICovCnwgCXl5ZnJlZSgo eXlfYnVmZmVyX3N0YWNrKSApOwp8IAkoeXlfYnVmZmVyX3N0YWNrKSA9IE5VTEw7CnwgCnwgICAg IHl5ZnJlZSAoICh5eV9zdGF0ZV9idWYpICk7CnwgICAgICh5eV9zdGF0ZV9idWYpICA9IE5VTEw7 CnwgCnwgICAgIC8qIFJlc2V0IHRoZSBnbG9iYWxzLiBUaGlzIGlzIGltcG9ydGFudCBpbiBhIG5v bi1yZWVudHJhbnQgc2Nhbm5lciBzbyB0aGUgbmV4dCB0aW1lCnwgICAgICAqIHl5bGV4KCkgaXMg Y2FsbGVkLCBpbml0aWFsaXphdGlvbiB3aWxsIG9jY3VyLiAqLwp8ICAgICB5eV9pbml0X2dsb2Jh bHMoICk7CnwgCnwgICAgIHJldHVybiAwOwp8IH0KfCAKfCAvKgp8ICAqIEludGVybmFsIHV0aWxp dHkgcm91dGluZXMuCnwgICovCnwgCnwgI2lmbmRlZiB5eXRleHRfcHRyCnwgc3RhdGljIHZvaWQg eXlfZmxleF9zdHJuY3B5IChjaGFyKiBzMSwgY29uc3QgY2hhciAqIHMyLCBpbnQgbiApCnwgewp8 IAkJCnwgCWludCBpOwp8IAlmb3IgKCBpID0gMDsgaSA8IG47ICsraSApCnwgCQlzMVtpXSA9IHMy W2ldOwp8IH0KfCAjZW5kaWYKfCAKfCAjaWZkZWYgWVlfTkVFRF9TVFJMRU4KfCBzdGF0aWMgaW50 IHl5X2ZsZXhfc3RybGVuIChjb25zdCBjaGFyICogcyApCnwgewp8IAlpbnQgbjsKfCAJZm9yICgg biA9IDA7IHNbbl07ICsrbiApCnwgCQk7CnwgCnwgCXJldHVybiBuOwp8IH0KfCAjZW5kaWYKfCAK fCB2b2lkICp5eWFsbG9jICh5eV9zaXplX3QgIHNpemUgKQp8IHsKfCAJCQlyZXR1cm4gbWFsbG9j KHNpemUpOwp8IH0KfCAKfCB2b2lkICp5eXJlYWxsb2MgICh2b2lkICogcHRyLCB5eV9zaXplX3Qg IHNpemUgKQp8IHsKfCAJCQp8IAkvKiBUaGUgY2FzdCB0byAoY2hhciAqKSBpbiB0aGUgZm9sbG93 aW5nIGFjY29tbW9kYXRlcyBib3RoCnwgCSAqIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZSBjaGFy KiBnZW5lcmljIHBvaW50ZXJzLCBhbmQgdGhvc2UKfCAJICogdGhhdCB1c2Ugdm9pZCogZ2VuZXJp YyBwb2ludGVycy4gIEl0IHdvcmtzIHdpdGggdGhlIGxhdHRlcgp8IAkgKiBiZWNhdXNlIGJvdGgg QU5TSSBDIGFuZCBDKysgYWxsb3cgY2FzdGxlc3MgYXNzaWdubWVudCBmcm9tCnwgCSAqIGFueSBw b2ludGVyIHR5cGUgdG8gdm9pZCosIGFuZCBkZWFsIHdpdGggYXJndW1lbnQgY29udmVyc2lvbnMK fCAJICogYXMgdGhvdWdoIGRvaW5nIGFuIGFzc2lnbm1lbnQuCnwgCSAqLwp8IAlyZXR1cm4gcmVh bGxvYyhwdHIsIHNpemUpOwp8IH0KfCAKfCB2b2lkIHl5ZnJlZSAodm9pZCAqIHB0ciApCnwgewp8 IAkJCWZyZWUoIChjaGFyICopIHB0ciApOwkvKiBzZWUgeXlyZWFsbG9jKCkgZm9yIChjaGFyICop IGNhc3QgKi8KfCB9CnwgCnwgI2RlZmluZSBZWVRBQkxFU19OQU1FICJ5eXRhYmxlcyIKfCAKfCAj bGluZSAxMCAiY29uZnRlc3QubCIKfCAKfCAjaWZkZWYgWVlURVhUX1BPSU5URVIKfCBleHRlcm4g Y2hhciAqeXl0ZXh0Owp8ICNlbmRpZgp8IGludAp8IG1haW4gKHZvaWQpCnwgewp8ICAgcmV0dXJu ICEgeXlsZXggKCkgKyAhIHl5d3JhcCAoKTsKfCB9CmNvbmZpZ3VyZTo1Njg1OiBnY2MgLW8gY29u ZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMgLWxmbCAgPiY1CmNvbmZpZ3VyZTo1Njg1OiAk PyA9IDAKY29uZmlndXJlOjU2OTU6IHJlc3VsdDogLWxmbApjb25maWd1cmU6NTcwMTogY2hlY2tp bmcgd2hldGhlciB5eXRleHQgaXMgYSBwb2ludGVyCmNvbmZpZ3VyZTo1NzE4OiBnY2MgLW8gY29u ZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMgLWxmbCAgPiY1CmNvbmZpZ3VyZTo1NzE4OiAk PyA9IDAKY29uZmlndXJlOjU3MjY6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo1NzQwOiBjaGVja2lu ZyBmb3IgYmlzb24KY29uZmlndXJlOjU3NTY6IGZvdW5kIC91c3IvYmluL2Jpc29uCmNvbmZpZ3Vy ZTo1NzY3OiByZXN1bHQ6IGJpc29uIC15CmNvbmZpZ3VyZTo1Nzk2OiBjaGVja2luZyB3aGV0aGVy IGcrKyBzdXBwb3J0cyBDKysxMSBmZWF0dXJlcyB3aXRoIC1zdGQ9Z251KysxMQpjb25maWd1cmU6 NjA5MjogZysrIC1zdGQ9Z251KysxMSAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmln dXJlOjYwOTI6ICQ/ID0gMApjb25maWd1cmU6NjEwMTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjY0 NzI6IGNoZWNraW5nIGlmIGdjYyBjYW4gc3RhdGljIGxpbmsKY29uZmlndXJlOjY0Nzg6IHJlc3Vs dDogeWVzCmNvbmZpZ3VyZTo2NTM3OiBjaGVja2luZyBmb3IgcmFubGliCmNvbmZpZ3VyZTo2NTUz OiBmb3VuZCAvdXNyL2Jpbi9yYW5saWIKY29uZmlndXJlOjY1NjQ6IHJlc3VsdDogcmFubGliCmNv bmZpZ3VyZTo2NjM2OiBjaGVja2luZyBmb3IgZ29iamNvcHkKY29uZmlndXJlOjY2NjY6IHJlc3Vs dDogbm8KY29uZmlndXJlOjY2MzY6IGNoZWNraW5nIGZvciBvYmpjb3B5CmNvbmZpZ3VyZTo2NjUy OiBmb3VuZCAvdXNyL2Jpbi9vYmpjb3B5CmNvbmZpZ3VyZTo2NjYzOiByZXN1bHQ6IG9iamNvcHkK Y29uZmlndXJlOjY2OTM6IG11c3QgZGV0ZXJtaW5lIGFic29sdXRlIHBhdGggZm9yICckT0JKQ09Q WSc6Cnwgb2JqY29weQpjb25maWd1cmU6NjcxMjogY2hlY2tpbmcgZm9yIGFic29sdXRlIHBhdGgg dG8gb2JqY29weQpjb25maWd1cmU6NjcxNTogcmVzdWx0OiAvdXNyL2Jpbi9vYmpjb3B5CmNvbmZp Z3VyZTo2NzcwOiBjaGVja2luZyBmb3IgZ29iamR1bXAKY29uZmlndXJlOjY4MDA6IHJlc3VsdDog bm8KY29uZmlndXJlOjY3NzA6IGNoZWNraW5nIGZvciBvYmpkdW1wCmNvbmZpZ3VyZTo2Nzg2OiBm b3VuZCAvdXNyL2Jpbi9vYmpkdW1wCmNvbmZpZ3VyZTo2Nzk3OiByZXN1bHQ6IG9iamR1bXAKY29u ZmlndXJlOjY4Mjc6IG11c3QgZGV0ZXJtaW5lIGFic29sdXRlIHBhdGggZm9yICckT0JKRFVNUCc6 Cnwgb2JqZHVtcApjb25maWd1cmU6Njg0NjogY2hlY2tpbmcgZm9yIGFic29sdXRlIHBhdGggdG8g b2JqZHVtcApjb25maWd1cmU6Njg0OTogcmVzdWx0OiAvdXNyL2Jpbi9vYmpkdW1wCmNvbmZpZ3Vy ZTo2OTA0OiBjaGVja2luZyBmb3IgZ3JlYWRlbGYKY29uZmlndXJlOjY5MzQ6IHJlc3VsdDogbm8K Y29uZmlndXJlOjY5MDQ6IGNoZWNraW5nIGZvciByZWFkZWxmCmNvbmZpZ3VyZTo2OTIwOiBmb3Vu ZCAvdXNyL2Jpbi9yZWFkZWxmCmNvbmZpZ3VyZTo2OTMxOiByZXN1bHQ6IHJlYWRlbGYKY29uZmln dXJlOjY5NjE6IG11c3QgZGV0ZXJtaW5lIGFic29sdXRlIHBhdGggZm9yICckUkVBREVMRic6Cnwg cmVhZGVsZgpjb25maWd1cmU6Njk4MDogY2hlY2tpbmcgZm9yIGFic29sdXRlIHBhdGggdG8gcmVh ZGVsZgpjb25maWd1cmU6Njk4MzogcmVzdWx0OiAvdXNyL2Jpbi9yZWFkZWxmCmNvbmZpZ3VyZTo2 OTkzOiBjaGVja2luZyBmb3IgZmxleApjb25maWd1cmU6NzAwOTogZm91bmQgL3Vzci9iaW4vZmxl eApjb25maWd1cmU6NzAyMDogcmVzdWx0OiBmbGV4CmNvbmZpZ3VyZTo3MDM5OiBjaGVja2luZyBm b3IgbWFrZWluZm8KY29uZmlndXJlOjcwNTU6IGZvdW5kIC91c3IvYmluL21ha2VpbmZvCmNvbmZp Z3VyZTo3MDY2OiByZXN1bHQ6IG1ha2VpbmZvCmNvbmZpZ3VyZTo3MDg1OiBjaGVja2luZyBmb3Ig Y3V0CmNvbmZpZ3VyZTo3MTAxOiBmb3VuZCAvdXNyL2Jpbi9jdXQKY29uZmlndXJlOjcxMTI6IHJl c3VsdDogY3V0CmNvbmZpZ3VyZTo3MTMxOiBjaGVja2luZyBmb3IgcmVhZGxpbmsKY29uZmlndXJl OjcxNDc6IGZvdW5kIC91c3IvYmluL3JlYWRsaW5rCmNvbmZpZ3VyZTo3MTU4OiByZXN1bHQ6IHJl YWRsaW5rCmNvbmZpZ3VyZTo3MTc3OiBjaGVja2luZyBmb3IgdGFyCmNvbmZpZ3VyZTo3MTkzOiBm b3VuZCAvdXNyL2Jpbi90YXIKY29uZmlndXJlOjcyMDQ6IHJlc3VsdDogdGFyCmNvbmZpZ3VyZTo3 MjIzOiBjaGVja2luZyBmb3IgZ3ppcApjb25maWd1cmU6NzIzOTogZm91bmQgL3Vzci9iaW4vZ3pp cApjb25maWd1cmU6NzI1MDogcmVzdWx0OiBnemlwCmNvbmZpZ3VyZTo3MjY5OiBjaGVja2luZyBm b3IgYnppcDIKY29uZmlndXJlOjcyODU6IGZvdW5kIC91c3IvYmluL2J6aXAyCmNvbmZpZ3VyZTo3 Mjk2OiByZXN1bHQ6IGJ6aXAyCmNvbmZpZ3VyZTo3MzE1OiBjaGVja2luZyBmb3IgeHoKY29uZmln dXJlOjczMzE6IGZvdW5kIC91c3IvYmluL3h6CmNvbmZpZ3VyZTo3MzQyOiByZXN1bHQ6IHh6CmNv bmZpZ3VyZTo3MzYxOiBjaGVja2luZyBmb3IgdW56aXAKY29uZmlndXJlOjczNzc6IGZvdW5kIC91 c3IvYmluL3VuemlwCmNvbmZpZ3VyZTo3Mzg4OiByZXN1bHQ6IHVuemlwCmNvbmZpZ3VyZTo3NDA3 OiBjaGVja2luZyBmb3IgaGVscDJtYW4KY29uZmlndXJlOjc0MjM6IGZvdW5kIC91c3IvYmluL2hl bHAybWFuCmNvbmZpZ3VyZTo3NDM0OiByZXN1bHQ6IGhlbHAybWFuCmNvbmZpZ3VyZTo3NDUzOiBj aGVja2luZyBmb3IgZmlsZQpjb25maWd1cmU6NzQ2OTogZm91bmQgL3Vzci9iaW4vZmlsZQpjb25m aWd1cmU6NzQ4MDogcmVzdWx0OiBmaWxlCmNvbmZpZ3VyZTo3NDk5OiBjaGVja2luZyBmb3Igd2hp Y2gKY29uZmlndXJlOjc1MTU6IGZvdW5kIC91c3IvYmluL3doaWNoCmNvbmZpZ3VyZTo3NTI2OiBy ZXN1bHQ6IHdoaWNoCmNvbmZpZ3VyZTo3NTU0OiBjaGVja2luZyBmb3IgbHppcApjb25maWd1cmU6 NzU4NDogcmVzdWx0OiBubwpjb25maWd1cmU6NzYwODogY2hlY2tpbmcgZm9yIHdnZXQKY29uZmln dXJlOjc2MjQ6IGZvdW5kIC91c3IvYmluL3dnZXQKY29uZmlndXJlOjc2MzU6IHJlc3VsdDogd2dl dApjb25maWd1cmU6NzY2MDogY2hlY2tpbmcgZm9yIGN1cmwKY29uZmlndXJlOjc2OTA6IHJlc3Vs dDogbm8KY29uZmlndXJlOjc3MDg6IGNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIGdldGNvbmYgb3Ig c3lzY3RsIHRvIGNvdW50IENQVXMKY29uZmlndXJlOjc3MTg6IHJlc3VsdDogZ2V0Y29uZiBfTlBS T0NFU1NPUlNfT05MTgpjb25maWd1cmU6Nzc3NDogY2hlY2tpbmcgZm9yIGdwYXRjaApjb25maWd1 cmU6NzgwNDogcmVzdWx0OiBubwpjb25maWd1cmU6Nzc3NDogY2hlY2tpbmcgZm9yIHBhdGNoCmNv bmZpZ3VyZTo3NzkwOiBmb3VuZCAvdXNyL2Jpbi9wYXRjaApjb25maWd1cmU6NzgwMTogcmVzdWx0 OiBwYXRjaApjb25maWd1cmU6NzgzMTogbXVzdCBkZXRlcm1pbmUgYWJzb2x1dGUgcGF0aCBmb3Ig JyRQQVRDSCc6CnwgcGF0Y2gKY29uZmlndXJlOjc4NTA6IGNoZWNraW5nIGZvciBhYnNvbHV0ZSBw YXRoIHRvIHBhdGNoCmNvbmZpZ3VyZTo3ODUzOiByZXN1bHQ6IC91c3IvYmluL3BhdGNoCmNvbmZp Z3VyZTo3OTQxOiBjaGVja2luZyBmb3IgYmFzaApjb25maWd1cmU6Nzk2MDogY2hlY2tpbmcgQkFT SF9TSEVMTCBhdDoKfCAvdXNyL2Jpbi9iYXNoCmNvbmZpZ3VyZTo3OTc0OiBsb29raW5nIGZvciAn XkdOVSBiYXNoLCB2ZXJzaW9uICgzXC5bMS05XXw0fDUpJyByZWdleHAgaW4KY29uZmlndXJlOjc5 Nzc6IHZlcnNpb24gaW5mbzoKfCBHTlUgYmFzaCwgdmVyc2lvbiA0LjQuMTIoMyktcmVsZWFzZSAo eDg2XzY0LXVua25vd24tY3lnd2luKQp8IENvcHlyaWdodCAoQykgMjAxNiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KfCBMaWNlbnNlIEdQTHYzKzogR05VIEdQTCB2ZXJzaW9uIDMgb3Ig bGF0ZXIgPGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sPgp8IAp8IFRoaXMgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0Lgp8 IFRoZXJlIGlzIE5PIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcuCmNv bmZpZ3VyZTo4MDA2OiByZXN1bHQ6IC91c3IvYmluL2Jhc2gKY29uZmlndXJlOjgwMDk6IGNoZWNr aW5nIGZvciBHTlUgYmFzaCA+PSAzLjEKY29uZmlndXJlOjgwMTI6IHJlc3VsdDogeWVzCmNvbmZp Z3VyZTo4MDYxOiBtdXN0IGRldGVybWluZSBhYnNvbHV0ZSBwYXRoIGZvciAnJGFjX2N2X3BhdGhf QVdLJzoKfCBnYXdrCmNvbmZpZ3VyZTo4MDgwOiBjaGVja2luZyBmb3IgYWJzb2x1dGUgcGF0aCB0 byBnYXdrCmNvbmZpZ3VyZTo4MDgzOiByZXN1bHQ6IC91c3IvYmluL2dhd2sKY29uZmlndXJlOjgw OTc6IHZhcmlhYmxlIGFjX2N2X3BhdGhfQVdLIGlzIHNldCB0bzoKfCAvdXNyL2Jpbi9nYXdrCmNv bmZpZ3VyZTo4MTA0OiBsb29raW5nIGZvciAnXkdOVSBBd2sgJyByZWdleHAgaW4KY29uZmlndXJl OjgxMDc6IHZlcnNpb24gaW5mbyBmb3IgJGFjX2N2X3BhdGhfQVdLOgp8IEdOVSBBd2sgNS4xLjAs IEFQSTogMy4wIChHTlUgTVBGUiA0LjAuMi1wNiwgR05VIE1QIDYuMi4wKQp8IENvcHlyaWdodCAo QykgMTk4OSwgMTk5MS0yMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KfCAKfCBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQp8IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CnwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKfCAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgp8IAp8IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAp8IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCnwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQp8IEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCnwgCnwgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKfCBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy4KY29u ZmlndXJlOjgxOTE6IGNoZWNraW5nIGZvciBHTlUgYXdrCmNvbmZpZ3VyZTo4MTk0OiByZXN1bHQ6 IHllcwpjb25maWd1cmU6ODMxMTogY2hlY2tpbmcgZm9yIG1ha2UKY29uZmlndXJlOjgzMzA6IGNo ZWNraW5nIE1BS0UgYXQ6CnwgL3Vzci9iaW4vbWFrZQpjb25maWd1cmU6ODM0NDogbG9va2luZyBm b3IgJ15HTlUgTWFrZSAoM1wuOFsxLTldfDNcLjlbMC05XXxbNC05XVwuKScgcmVnZXhwIGluCmNv bmZpZ3VyZTo4MzQ3OiB2ZXJzaW9uIGluZm86CnwgR05VIE1ha2UgNC4zCnwgQnVpbHQgZm9yIHg4 Nl82NC1wYy1jeWd3aW4KfCBDb3B5cmlnaHQgKEMpIDE5ODgtMjAyMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KfCBMaWNlbnNlIEdQTHYzKzogR05VIEdQTCB2ZXJzaW9uIDMgb3IgbGF0 ZXIgPGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sPgp8IFRoaXMgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0Lgp8IFRoZXJl IGlzIE5PIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcuCmNvbmZpZ3Vy ZTo4Mzc2OiByZXN1bHQ6IC91c3IvYmluL21ha2UKY29uZmlndXJlOjgzNzk6IGNoZWNraW5nIGZv ciBHTlUgbWFrZSA+PSAzLjgxCmNvbmZpZ3VyZTo4MzgyOiByZXN1bHQ6IHllcwpjb25maWd1cmU6 ODQzMDogbXVzdCBkZXRlcm1pbmUgYWJzb2x1dGUgcGF0aCBmb3IgJyRhY19jdl9wYXRoX01BS0Un Ogp8IC91c3IvYmluL21ha2UKY29uZmlndXJlOjg0NjY6IHZhcmlhYmxlIGFjX2N2X3BhdGhfTUFL RSBpcyBzZXQgdG86CnwgL3Vzci9iaW4vbWFrZQpjb25maWd1cmU6ODQ3MzogbG9va2luZyBmb3Ig J15HTlUgTWFrZSBbNC05XVwuJyByZWdleHAgaW4KY29uZmlndXJlOjg0NzY6IHZlcnNpb24gaW5m byBmb3IgJGFjX2N2X3BhdGhfTUFLRToKfCBHTlUgTWFrZSA0LjMKfCBCdWlsdCBmb3IgeDg2XzY0 LXBjLWN5Z3dpbgp8IENvcHlyaWdodCAoQykgMTk4OC0yMDIwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgp8IExpY2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciA8 aHR0cDovL2dudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWw+CnwgVGhpcyBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFuZCByZWRpc3RyaWJ1dGUgaXQuCnwgVGhlcmUgaXMg Tk8gV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy4KY29uZmlndXJlOjg1 NjA6IGNoZWNraW5nIGZvciBHTlUgbWFrZSA+PSA0LjAKY29uZmlndXJlOjg1NjM6IHJlc3VsdDog eWVzCmNvbmZpZ3VyZTo4Njc0OiBjaGVja2luZyBmb3IgbGlidG9vbApjb25maWd1cmU6ODY5Mzog Y2hlY2tpbmcgTElCVE9PTCBhdDoKfCAvY3lnZHJpdmUvYy9NaW5HVy9iaW4vbGlidG9vbApjb25m aWd1cmU6ODcwNzogbG9va2luZyBmb3IgJ1woR05VIGxpYnRvb2xcKSAoWzMtOV1cLnwyLls0LTld fDIuWzEtM11bMC05XSknIHJlZ2V4cCBpbgpjb25maWd1cmU6ODcxMDogdmVyc2lvbiBpbmZvOgp8 IGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKfCBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0 IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5Ngp8IAp8IENvcHlyaWdodCAoQykgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KfCBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0 aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwp8IHdhcnJhbnR5 OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLgpjb25maWd1cmU6ODczOTogcmVzdWx0OiAvY3lnZHJpdmUvYy9NaW5HVy9iaW4v bGlidG9vbApjb25maWd1cmU6ODc0MjogY2hlY2tpbmcgZm9yIEdOVSBsaWJ0b29sID49IDIuNApj b25maWd1cmU6ODc0NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjg4NTU6IGNoZWNraW5nIGZvciBs aWJ0b29saXplCmNvbmZpZ3VyZTo4ODc0OiBjaGVja2luZyBMSUJUT09MSVpFIGF0Ogp8IC9jeWdk cml2ZS9jL01pbkdXL2Jpbi9saWJ0b29saXplCmNvbmZpZ3VyZTo4ODg4OiBsb29raW5nIGZvciAn XChHTlUgbGlidG9vbFwpIChbMy05XVwufDIuWzQtOV18Mi5bMS0zXVswLTldKScgcmVnZXhwIGlu CmNvbmZpZ3VyZTo4ODkxOiB2ZXJzaW9uIGluZm86CnwgbGlidG9vbGl6ZSAoR05VIGxpYnRvb2wp IDIuNAp8IFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuIDxnYXJ5QGdudS5vcmc+LCAyMDAzCnwg CnwgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgp8IFRo aXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9u cy4gIFRoZXJlIGlzIE5PCnwgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCmNvbmZpZ3VyZTo4OTIwOiByZXN1 bHQ6IC9jeWdkcml2ZS9jL01pbkdXL2Jpbi9saWJ0b29saXplCmNvbmZpZ3VyZTo4OTIzOiBjaGVj a2luZyBmb3IgR05VIGxpYnRvb2xpemUgPj0gMi40CmNvbmZpZ3VyZTo4OTI2OiByZXN1bHQ6IHll cwpjb25maWd1cmU6ODk3NDogbXVzdCBkZXRlcm1pbmUgYWJzb2x1dGUgcGF0aCBmb3IgJyRhY19j dl9wYXRoX0FVVE9DT05GJzoKfCAke1NIRUxMfSAvY3lnZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rv b2wtbmcvc2NyaXB0cy9taXNzaW5nIGF1dG9jb25mCmNvbmZpZ3VyZTo5MDEwOiB2YXJpYWJsZSBh Y19jdl9wYXRoX0FVVE9DT05GIGlzIHNldCB0bzoKfCAke1NIRUxMfSAvY3lnZHJpdmUvYy9jeWd3 aW42NC9jcm9zc3Rvb2wtbmcvc2NyaXB0cy9taXNzaW5nIGF1dG9jb25mCmNvbmZpZ3VyZTo5MDE3 OiBsb29raW5nIGZvciAnXChHTlUgQXV0b2NvbmZcKSAoWzMtOV1cLnwyXC5bNy05XVswLTldfDJc LjZbNS05XSknIHJlZ2V4cCBpbgpjb25maWd1cmU6OTAyMDogdmVyc2lvbiBpbmZvIGZvciAkYWNf Y3ZfcGF0aF9BVVRPQ09ORjoKfCBhdXRvY29uZiAoR05VIEF1dG9jb25mKSAyLjY5CnwgQ29weXJp Z2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgp8IExpY2Vuc2UgR1BM djMrL0F1dG9jb25mOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlcgp8IDxodHRwOi8vZ251Lm9y Zy9saWNlbnNlcy9ncGwuaHRtbD4sIDxodHRwOi8vZ251Lm9yZy9saWNlbnNlcy9leGNlcHRpb25z Lmh0bWw+CnwgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFu ZCByZWRpc3RyaWJ1dGUgaXQuCnwgVGhlcmUgaXMgTk8gV0FSUkFOVFksIHRvIHRoZSBleHRlbnQg cGVybWl0dGVkIGJ5IGxhdy4KfCAKfCBXcml0dGVuIGJ5IERhdmlkIEouIE1hY0tlbnppZSBhbmQg QWtpbSBEZW1haWxsZS4KY29uZmlndXJlOjkxMDQ6IGNoZWNraW5nIGZvciBHTlUgYXV0b2NvbmYg Pj0gMi42NQpjb25maWd1cmU6OTEwNzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjkyMTM6IGNoZWNr aW5nIGZvciBhdXRvcmVjb25mCmNvbmZpZ3VyZTo5MjMyOiBjaGVja2luZyBBVVRPUkVDT05GIGF0 Ogp8IC91c3IvYmluL2F1dG9yZWNvbmYKY29uZmlndXJlOjkyNDY6IGxvb2tpbmcgZm9yICdcKEdO VSBBdXRvY29uZlwpIChbMy05XVwufDJcLls3LTldWzAtOV18MlwuNls1LTldKScgcmVnZXhwIGlu CmNvbmZpZ3VyZTo5MjQ5OiB2ZXJzaW9uIGluZm86CnwgYXV0b3JlY29uZiAoR05VIEF1dG9jb25m KSAyLjY5CnwgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j Lgp8IExpY2Vuc2UgR1BMdjMrL0F1dG9jb25mOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlcgp8 IDxodHRwOi8vZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbD4sIDxodHRwOi8vZ251Lm9yZy9saWNl bnNlcy9leGNlcHRpb25zLmh0bWw+CnwgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgYXJlIGZy ZWUgdG8gY2hhbmdlIGFuZCByZWRpc3RyaWJ1dGUgaXQuCnwgVGhlcmUgaXMgTk8gV0FSUkFOVFks IHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy4KfCAKfCBXcml0dGVuIGJ5IERhdmlkIEou IE1hY0tlbnppZSBhbmQgQWtpbSBEZW1haWxsZS4KY29uZmlndXJlOjkyNzg6IHJlc3VsdDogL3Vz ci9iaW4vYXV0b3JlY29uZgpjb25maWd1cmU6OTI4MTogY2hlY2tpbmcgZm9yIEdOVSBhdXRvcmVj b25mID49IDIuNjMKY29uZmlndXJlOjkyODQ6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MzI4OiBt dXN0IGRldGVybWluZSBhYnNvbHV0ZSBwYXRoIGZvciAnJGFjX2N2X3BhdGhfQVVUT01BS0UnOgp8 ICR7U0hFTEx9IC9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9zY3JpcHRzL21pc3Np bmcgYXV0b21ha2UtMS4xNgpjb25maWd1cmU6OTM2NDogdmFyaWFibGUgYWNfY3ZfcGF0aF9BVVRP TUFLRSBpcyBzZXQgdG86CnwgJHtTSEVMTH0gL2N5Z2RyaXZlL2MvY3lnd2luNjQvY3Jvc3N0b29s LW5nL3NjcmlwdHMvbWlzc2luZyBhdXRvbWFrZS0xLjE2CmNvbmZpZ3VyZTo5MzcxOiBsb29raW5n IGZvciAnXChHTlUgYXV0b21ha2VcKSAoWzItOV1cLnwxXC5bMi05XVswLTldfDFcLjFbNS05XSkn IHJlZ2V4cCBpbgpjb25maWd1cmU6OTM3NDogdmVyc2lvbiBpbmZvIGZvciAkYWNfY3ZfcGF0aF9B VVRPTUFLRToKfCBhdXRvbWFrZSAoR05VIGF1dG9tYWtlKSAxLjE2LjEKfCBDb3B5cmlnaHQgKEMp IDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCnwgTGljZW5zZSBHUEx2Mis6IEdO VSBHUEwgdmVyc2lvbiAyIG9yIGxhdGVyIDxodHRwczovL2dudS5vcmcvbGljZW5zZXMvZ3BsLTIu MC5odG1sPgp8IFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBh bmQgcmVkaXN0cmlidXRlIGl0Lgp8IFRoZXJlIGlzIE5PIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50 IHBlcm1pdHRlZCBieSBsYXcuCnwgCnwgV3JpdHRlbiBieSBUb20gVHJvbWV5IDx0cm9tZXlAcmVk aGF0LmNvbT4KfCAgICAgICAgYW5kIEFsZXhhbmRyZSBEdXJldC1MdXR6IDxhZGxAZ251Lm9yZz4u CmNvbmZpZ3VyZTo5NDU4OiBjaGVja2luZyBmb3IgR05VIGF1dG9tYWtlID49IDEuMTUKY29uZmln dXJlOjk0NjE6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5NTY3OiBjaGVja2luZyBmb3IgbTQKY29u ZmlndXJlOjk1ODY6IGNoZWNraW5nIE00IGF0Ogp8IC91c3IvYmluL200CmNvbmZpZ3VyZTo5NjAw OiBsb29raW5nIGZvciAnXChHTlUgTTRcKSAoWzItOV1cLnwxXC5bNS05XXwxXC5bMS00XVswLTld fDFcLjRcLlsyLTldWzAtOV18MVwuNFwuMVsyLTldKScgcmVnZXhwIGluCmNvbmZpZ3VyZTo5NjAz OiB2ZXJzaW9uIGluZm86CnwgbTQgKEdOVSBNNCkgMS40LjE4CnwgUGFja2FnZWQgYnkgQ3lnd2lu ICgxLjQuMTgtMSkKfCBDb3B5cmlnaHQgKEMpIDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCnwgTGljZW5zZSBHUEx2Mys6IEdOVSBHUEwgdmVyc2lvbiAzIG9yIGxhdGVyIDxodHRw Oi8vZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbD4uCnwgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFuZCByZWRpc3RyaWJ1dGUgaXQuCnwgVGhlcmUgaXMgTk8g V0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy4KfCAKfCBXcml0dGVuIGJ5 IFJlbmUnIFNlaW5kYWwuCmNvbmZpZ3VyZTo5NjMyOiByZXN1bHQ6IC91c3IvYmluL200CmNvbmZp Z3VyZTo5NjM1OiBjaGVja2luZyBmb3IgR05VIG00ID49IDEuNC4xMgpjb25maWd1cmU6OTYzODog cmVzdWx0OiB5ZXMKY29uZmlndXJlOjk3NDQ6IGNoZWNraW5nIGZvciBweXRob24KY29uZmlndXJl Ojk3NjM6IGNoZWNraW5nIFBZVEhPTiBhdDoKfCAvdXNyL2Jpbi9weXRob24zLjYKY29uZmlndXJl Ojk3Nzc6IGxvb2tpbmcgZm9yICdeUHl0aG9uIFsyM11cLicgcmVnZXhwIGluCmNvbmZpZ3VyZTo5 NzgwOiB2ZXJzaW9uIGluZm86CnwgUHl0aG9uIDMuNi45CmNvbmZpZ3VyZTo5ODA5OiByZXN1bHQ6 IC91c3IvYmluL3B5dGhvbjMuNgpjb25maWd1cmU6OTgxMjogY2hlY2tpbmcgZm9yIFB5dGhvbgpj b25maWd1cmU6OTgxNTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjk4NTk6IG11c3QgZGV0ZXJtaW5l IGFic29sdXRlIHBhdGggZm9yICckYWNfY3ZfcGF0aF9QWVRIT04nOgp8IC91c3IvYmluL3B5dGhv bjMuNgpjb25maWd1cmU6OTg5NTogdmFyaWFibGUgYWNfY3ZfcGF0aF9QWVRIT04gaXMgc2V0IHRv Ogp8IC91c3IvYmluL3B5dGhvbjMuNgpjb25maWd1cmU6OTkwMjogbG9va2luZyBmb3IgJ15QeXRo b24gM1wuKFs0LTldfFsxLTldWzAtOV0rKVwuJyByZWdleHAgaW4KY29uZmlndXJlOjk5MDU6IHZl cnNpb24gaW5mbyBmb3IgJGFjX2N2X3BhdGhfUFlUSE9OOgp8IFB5dGhvbiAzLjYuOQpjb25maWd1 cmU6OTk4OTogY2hlY2tpbmcgZm9yIFB5dGhvbiA+PSAzLjQKY29uZmlndXJlOjk5OTI6IHJlc3Vs dDogeWVzCmNvbmZpZ3VyZToxMDA5ODogY2hlY2tpbmcgZm9yIGJpc29uCmNvbmZpZ3VyZToxMDEx NzogY2hlY2tpbmcgQklTT04gYXQ6CnwgL3Vzci9iaW4vYmlzb24KY29uZmlndXJlOjEwMTMxOiBs b29raW5nIGZvciAnXChHTlUgQmlzb25cKSAoMlwuWzctOV18MlwuWzEtOV1bMC05XXxbMy05XVwu KScgcmVnZXhwIGluCmNvbmZpZ3VyZToxMDEzNDogdmVyc2lvbiBpbmZvOgp8IGJpc29uIChHTlUg Qmlzb24pIDMuMC40CnwgV3JpdHRlbiBieSBSb2JlcnQgQ29yYmV0dCBhbmQgUmljaGFyZCBTdGFs bG1hbi4KfCAKfCBDb3B5cmlnaHQgKEMpIDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCnwgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBj b25kaXRpb25zLiAgVGhlcmUgaXMgTk8KfCB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KY29uZmlndXJlOjEw MTYzOiByZXN1bHQ6IC91c3IvYmluL2Jpc29uCmNvbmZpZ3VyZToxMDE2NjogY2hlY2tpbmcgZm9y IGJpc29uID49IDIuNwpjb25maWd1cmU6MTAxNjk6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMDIw MDogY2hlY2tpbmcgZm9yIGR0Ywpjb25maWd1cmU6MTAyMzA6IHJlc3VsdDogbm8KY29uZmlndXJl OjEwMjUxOiBjaGVja2luZyBmb3IgY3ZzCmNvbmZpZ3VyZToxMDI4MTogcmVzdWx0OiBubwpjb25m aWd1cmU6MTAzMDI6IGNoZWNraW5nIGZvciBzdm4KY29uZmlndXJlOjEwMzMyOiByZXN1bHQ6IG5v CmNvbmZpZ3VyZToxMDM1MzogY2hlY2tpbmcgZm9yIGdpdApjb25maWd1cmU6MTAzNjk6IGZvdW5k IC91c3IvYmluL2dpdApjb25maWd1cmU6MTAzODA6IHJlc3VsdDogZ2l0CmNvbmZpZ3VyZToxMDQw NTogY2hlY2tpbmcgZm9yIGdtZDVzdW0KY29uZmlndXJlOjEwNDM4OiByZXN1bHQ6IG5vCmNvbmZp Z3VyZToxMDQwNTogY2hlY2tpbmcgZm9yIG1kNXN1bQpjb25maWd1cmU6MTA0MjM6IGZvdW5kIC91 c3IvYmluL21kNXN1bQpjb25maWd1cmU6MTA0MzU6IHJlc3VsdDogL3Vzci9iaW4vbWQ1c3VtCmNv bmZpZ3VyZToxMDQ1MDogY2hlY2tpbmcgZm9yIGdzaGExc3VtCmNvbmZpZ3VyZToxMDQ4MzogcmVz dWx0OiBubwpjb25maWd1cmU6MTA0NTA6IGNoZWNraW5nIGZvciBzaGExc3VtCmNvbmZpZ3VyZTox MDQ2ODogZm91bmQgL3Vzci9iaW4vc2hhMXN1bQpjb25maWd1cmU6MTA0ODA6IHJlc3VsdDogL3Vz ci9iaW4vc2hhMXN1bQpjb25maWd1cmU6MTA0OTU6IGNoZWNraW5nIGZvciBnc2hhMjU2c3VtCmNv bmZpZ3VyZToxMDUyODogcmVzdWx0OiBubwpjb25maWd1cmU6MTA0OTU6IGNoZWNraW5nIGZvciBz aGEyNTZzdW0KY29uZmlndXJlOjEwNTEzOiBmb3VuZCAvdXNyL2Jpbi9zaGEyNTZzdW0KY29uZmln dXJlOjEwNTI1OiByZXN1bHQ6IC91c3IvYmluL3NoYTI1NnN1bQpjb25maWd1cmU6MTA1NDA6IGNo ZWNraW5nIGZvciBnc2hhNTEyc3VtCmNvbmZpZ3VyZToxMDU3MzogcmVzdWx0OiBubwpjb25maWd1 cmU6MTA1NDA6IGNoZWNraW5nIGZvciBzaGE1MTJzdW0KY29uZmlndXJlOjEwNTU4OiBmb3VuZCAv dXNyL2Jpbi9zaGE1MTJzdW0KY29uZmlndXJlOjEwNTcwOiByZXN1bHQ6IC91c3IvYmluL3NoYTUx MnN1bQpjb25maWd1cmU6MTA2MTU6IGNoZWNraW5nIGZvciBpbmxpbmUKY29uZmlndXJlOjEwNjMx OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6MTA2MzE6ICQ/ID0gMApj b25maWd1cmU6MTA2Mzk6IHJlc3VsdDogaW5saW5lCmNvbmZpZ3VyZToxMDY1ODogY2hlY2tpbmcg Zm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMKY29uZmlndXJlOjEwNjc4OiBnY2MgLWMgLWcgLU8yICBj b25mdGVzdC5jID4mNQpjb25maWd1cmU6MTA2Nzg6ICQ/ID0gMApjb25maWd1cmU6MTA3NTE6IGdj YyAtbyBjb25mdGVzdC5leGUgLWcgLU8yICAgY29uZnRlc3QuYyAgPiY1CmNvbmZpZ3VyZToxMDc1 MTogJD8gPSAwCmNvbmZpZ3VyZToxMDc1MTogLi9jb25mdGVzdC5leGUKY29uZmlndXJlOjEwNzUx OiAkPyA9IDAKY29uZmlndXJlOjEwNzYyOiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTA3NzU6IGNo ZWNraW5nIGZvciBzeXMvdHlwZXMuaApjb25maWd1cmU6MTA3NzU6IGdjYyAtYyAtZyAtTzIgIGNv bmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZToxMDc3NTogJD8gPSAwCmNvbmZpZ3VyZToxMDc3NTogcmVz dWx0OiB5ZXMKY29uZmlndXJlOjEwNzc1OiBjaGVja2luZyBmb3Igc3lzL3N0YXQuaApjb25maWd1 cmU6MTA3NzU6IGdjYyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZToxMDc3NTog JD8gPSAwCmNvbmZpZ3VyZToxMDc3NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjEwNzc1OiBjaGVj a2luZyBmb3Igc3RkbGliLmgKY29uZmlndXJlOjEwNzc1OiBnY2MgLWMgLWcgLU8yICBjb25mdGVz dC5jID4mNQpjb25maWd1cmU6MTA3NzU6ICQ/ID0gMApjb25maWd1cmU6MTA3NzU6IHJlc3VsdDog eWVzCmNvbmZpZ3VyZToxMDc3NTogY2hlY2tpbmcgZm9yIHN0cmluZy5oCmNvbmZpZ3VyZToxMDc3 NTogZ2NjIC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjEwNzc1OiAkPyA9IDAK Y29uZmlndXJlOjEwNzc1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTA3NzU6IGNoZWNraW5nIGZv ciBtZW1vcnkuaApjb25maWd1cmU6MTA3NzU6IGdjYyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmMgPiY1 CmNvbmZpZ3VyZToxMDc3NTogJD8gPSAwCmNvbmZpZ3VyZToxMDc3NTogcmVzdWx0OiB5ZXMKY29u ZmlndXJlOjEwNzc1OiBjaGVja2luZyBmb3Igc3RyaW5ncy5oCmNvbmZpZ3VyZToxMDc3NTogZ2Nj IC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjEwNzc1OiAkPyA9IDAKY29uZmln dXJlOjEwNzc1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTA3NzU6IGNoZWNraW5nIGZvciBpbnR0 eXBlcy5oCmNvbmZpZ3VyZToxMDc3NTogZ2NjIC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29u ZmlndXJlOjEwNzc1OiAkPyA9IDAKY29uZmlndXJlOjEwNzc1OiByZXN1bHQ6IHllcwpjb25maWd1 cmU6MTA3NzU6IGNoZWNraW5nIGZvciBzdGRpbnQuaApjb25maWd1cmU6MTA3NzU6IGdjYyAtYyAt ZyAtTzIgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZToxMDc3NTogJD8gPSAwCmNvbmZpZ3VyZTox MDc3NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjEwNzc1OiBjaGVja2luZyBmb3IgdW5pc3RkLmgK Y29uZmlndXJlOjEwNzc1OiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6 MTA3NzU6ICQ/ID0gMApjb25maWd1cmU6MTA3NzU6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMDc4 OTogY2hlY2tpbmcgZm9yIHN0ZGxpYi5oCmNvbmZpZ3VyZToxMDc4OTogcmVzdWx0OiB5ZXMKY29u ZmlndXJlOjEwNzk5OiBjaGVja2luZyBmb3IgR05VIGxpYmMgY29tcGF0aWJsZSBtYWxsb2MKY29u ZmlndXJlOjEwODIzOiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMgID4m NQpjb25maWd1cmU6MTA4MjM6ICQ/ID0gMApjb25maWd1cmU6MTA4MjM6IC4vY29uZnRlc3QuZXhl CmNvbmZpZ3VyZToxMDgyMzogJD8gPSAwCmNvbmZpZ3VyZToxMDgzMzogcmVzdWx0OiB5ZXMKY29u ZmlndXJlOjEwODU2OiBjaGVja2luZyBmb3Igc3RkbGliLmgKY29uZmlndXJlOjEwODU2OiByZXN1 bHQ6IHllcwpjb25maWd1cmU6MTA4NjY6IGNoZWNraW5nIGZvciBHTlUgbGliYyBjb21wYXRpYmxl IHJlYWxsb2MKY29uZmlndXJlOjEwODkwOiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgIGNv bmZ0ZXN0LmMgID4mNQpjb25maWd1cmU6MTA4OTA6ICQ/ID0gMApjb25maWd1cmU6MTA4OTA6IC4v Y29uZnRlc3QuZXhlCmNvbmZpZ3VyZToxMDg5MDogJD8gPSAwCmNvbmZpZ3VyZToxMDkwMDogcmVz dWx0OiB5ZXMKY29uZmlndXJlOjEwOTIxOiBjaGVja2luZyBmb3Igc2l6ZV90CmNvbmZpZ3VyZTox MDkyMTogZ2NjIC1jIC1nIC1PMiAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjEwOTIxOiAkPyA9 IDAKY29uZmlndXJlOjEwOTIxOiBnY2MgLWMgLWcgLU8yICBjb25mdGVzdC5jID4mNQpjb25mdGVz dC5jOiBJbiBmdW5jdGlvbiAnbWFpbic6CmNvbmZ0ZXN0LmM6NjM6MjE6IGVycm9yOiBleHBlY3Rl ZCBleHByZXNzaW9uIGJlZm9yZSAnKScgdG9rZW4KICAgNjMgfCBpZiAoc2l6ZW9mICgoc2l6ZV90 KSkpCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICBeCmNvbmZpZ3VyZToxMDkyMTogJD8gPSAx CmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVm aW5lIFBBQ0tBR0VfTkFNRSAiY3Jvc3N0b29sLU5HIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1F ICJjcm9zc3Rvb2wtbmciCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuMjQuMC4xMDVfNTY1 OTM2NiIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJjcm9zc3Rvb2wtTkcgMS4yNC4wLjEwNV81 NjU5MzY2Igp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImNyb3NzZ2NjQHNvdXJjZXdhcmUu b3JnIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgImh0dHA6Ly9jcm9zc3Rvb2wtbmcub3JnIgp8ICNk ZWZpbmUgUEFDS0FHRSAiY3Jvc3N0b29sLW5nIgp8ICNkZWZpbmUgVkVSU0lPTiAiMS4yNC4wLjEw NV81NjU5MzY2Igp8ICNkZWZpbmUgWVlURVhUX1BPSU5URVIgMQp8ICNkZWZpbmUgSEFWRV9DWFgx MSAxCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAx CnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwg I2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZp bmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5l IEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBIQVZF X1NURExJQl9IIDEKfCAjZGVmaW5lIEhBVkVfTUFMTE9DIDEKfCAjZGVmaW5lIEhBVkVfU1RETElC X0ggMQp8ICNkZWZpbmUgSEFWRV9SRUFMTE9DIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwg I2luY2x1ZGUgPHN0ZGlvLmg+CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUg PHN5cy90eXBlcy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1 ZGUgPHN5cy9zdGF0Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVk ZSA8c3RkbGliLmg+CnwgIyBpbmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFW RV9TVERMSUJfSAp8ICMgIGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAj aWZkZWYgSEFWRV9TVFJJTkdfSAp8ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmlu ZWQgSEFWRV9NRU1PUllfSAp8ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGlu Y2x1ZGUgPHN0cmluZy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5j bHVkZSA8c3RyaW5ncy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGlu Y2x1ZGUgPGludHR5cGVzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGlu Y2x1ZGUgPHN0ZGludC5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNs dWRlIDx1bmlzdGQuaD4KfCAjZW5kaWYKfCBpbnQKfCBtYWluICgpCnwgewp8IGlmIChzaXplb2Yg KChzaXplX3QpKSkKfCAJICAgIHJldHVybiAwOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQpjb25m aWd1cmU6MTA5MjE6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMDkzNDogY2hlY2tpbmcgZm9yIHdv cmtpbmcgYWxsb2NhLmgKY29uZmlndXJlOjEwOTUxOiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1P MiAgIGNvbmZ0ZXN0LmMgID4mNQpjb25maWd1cmU6MTA5NTE6ICQ/ID0gMApjb25maWd1cmU6MTA5 NTk6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMDk2NzogY2hlY2tpbmcgZm9yIGFsbG9jYQpjb25m aWd1cmU6MTEwMDQ6IGdjYyAtbyBjb25mdGVzdC5leGUgLWcgLU8yICAgY29uZnRlc3QuYyAgPiY1 CmNvbmZpZ3VyZToxMTAwNDogJD8gPSAwCmNvbmZpZ3VyZToxMTAxMjogcmVzdWx0OiB5ZXMKY29u ZmlndXJlOjExMTYxOiBjaGVja2luZyBmb3IgbGQgdXNlZCBieSBnY2MKY29uZmlndXJlOjExMjI4 OiByZXN1bHQ6IC91c3IveDg2XzY0LXBjLWN5Z3dpbi9iaW4vbGQuZXhlCmNvbmZpZ3VyZToxMTIz NTogY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoL3Vzci94ODZfNjQtcGMtY3lnd2luL2Jpbi9sZC5l eGUpIGlzIEdOVSBsZApjb25maWd1cmU6MTEyNTA6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMTI1 NzogY2hlY2tpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbgpjb25maWd1cmU6 MTEyNzA6IHJlc3VsdDogZG9uZQpjb25maWd1cmU6MTE4MTk6IGNoZWNraW5nIHdoZXRoZXIgTkxT IGlzIHJlcXVlc3RlZApjb25maWd1cmU6MTE4Mjg6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMTg1 NjogY2hlY2tpbmcgZm9yIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUKY29uZmlndXJlOjExODc0 OiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1XbCwtZnJhbWV3b3Jr IC1XbCxDb3JlRm91bmRhdGlvbiA+JjUKY29uZnRlc3QuYzoyOToxMDogZmF0YWwgZXJyb3I6IENv cmVGb3VuZGF0aW9uL0NGUHJlZmVyZW5jZXMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQog ICAyOSB8ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlByZWZlcmVuY2VzLmg+CiAgICAgIHwg ICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KY29tcGlsYXRpb24gdGVy bWluYXRlZC4KY29uZmlndXJlOjExODc0OiAkPyA9IDEKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJjcm9zc3Rv b2wtTkciCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImNyb3NzdG9vbC1uZyIKfCAjZGVmaW5l IFBBQ0tBR0VfVkVSU0lPTiAiMS4yNC4wLjEwNV81NjU5MzY2Igp8ICNkZWZpbmUgUEFDS0FHRV9T VFJJTkcgImNyb3NzdG9vbC1ORyAxLjI0LjAuMTA1XzU2NTkzNjYiCnwgI2RlZmluZSBQQUNLQUdF X0JVR1JFUE9SVCAiY3Jvc3NnY2NAc291cmNld2FyZS5vcmciCnwgI2RlZmluZSBQQUNLQUdFX1VS TCAiaHR0cDovL2Nyb3NzdG9vbC1uZy5vcmciCnwgI2RlZmluZSBQQUNLQUdFICJjcm9zc3Rvb2wt bmciCnwgI2RlZmluZSBWRVJTSU9OICIxLjI0LjAuMTA1XzU2NTkzNjYiCnwgI2RlZmluZSBZWVRF WFRfUE9JTlRFUiAxCnwgI2RlZmluZSBIQVZFX0NYWDExIDEKfCAjZGVmaW5lIFNURENfSEVBREVS UyAxCnwgI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1NUQVRf SCAxCnwgI2RlZmluZSBIQVZFX1NURExJQl9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQp8 ICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCnwgI2Rl ZmluZSBIQVZFX0lOVFRZUEVTX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCnwgI2RlZmlu ZSBIQVZFX1VOSVNURF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFW RV9NQUxMT0MgMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1JFQUxM T0MgMQp8ICNkZWZpbmUgSEFWRV9BTExPQ0FfSCAxCnwgI2RlZmluZSBIQVZFX0FMTE9DQSAxCnwg LyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlByZWZl cmVuY2VzLmg+CnwgaW50CnwgbWFpbiAoKQp8IHsKfCBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVl KE5VTEwsIE5VTEwpCnwgICA7CnwgICByZXR1cm4gMDsKfCB9CmNvbmZpZ3VyZToxMTg4MzogcmVz dWx0OiBubwpjb25maWd1cmU6MTE4OTA6IGNoZWNraW5nIGZvciBDRkxvY2FsZUNvcHlDdXJyZW50 CmNvbmZpZ3VyZToxMTkwODogZ2NjIC1vIGNvbmZ0ZXN0LmV4ZSAtZyAtTzIgICBjb25mdGVzdC5j ICAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24gPiY1CmNvbmZ0ZXN0LmM6Mjk6MTA6 IGZhdGFsIGVycm9yOiBDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oOiBObyBzdWNoIGZpbGUgb3Ig ZGlyZWN0b3J5CiAgIDI5IHwgI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmg+CiAg ICAgIHwgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CmNvbXBpbGF0aW9uIHRl cm1pbmF0ZWQuCmNvbmZpZ3VyZToxMTkwODogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dy YW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiY3Jvc3N0 b29sLU5HIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJjcm9zc3Rvb2wtbmciCnwgI2RlZmlu ZSBQQUNLQUdFX1ZFUlNJT04gIjEuMjQuMC4xMDVfNTY1OTM2NiIKfCAjZGVmaW5lIFBBQ0tBR0Vf U1RSSU5HICJjcm9zc3Rvb2wtTkcgMS4yNC4wLjEwNV81NjU5MzY2Igp8ICNkZWZpbmUgUEFDS0FH RV9CVUdSRVBPUlQgImNyb3NzZ2NjQHNvdXJjZXdhcmUub3JnIgp8ICNkZWZpbmUgUEFDS0FHRV9V UkwgImh0dHA6Ly9jcm9zc3Rvb2wtbmcub3JnIgp8ICNkZWZpbmUgUEFDS0FHRSAiY3Jvc3N0b29s LW5nIgp8ICNkZWZpbmUgVkVSU0lPTiAiMS4yNC4wLjEwNV81NjU5MzY2Igp8ICNkZWZpbmUgWVlU RVhUX1BPSU5URVIgMQp8ICNkZWZpbmUgSEFWRV9DWFgxMSAxCnwgI2RlZmluZSBTVERDX0hFQURF UlMgMQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFU X0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEK fCAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNk ZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZp bmUgSEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBIQVZFX1NURExJQl9IIDEKfCAjZGVmaW5lIEhB VkVfTUFMTE9DIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9SRUFM TE9DIDEKfCAjZGVmaW5lIEhBVkVfQUxMT0NBX0ggMQp8ICNkZWZpbmUgSEFWRV9BTExPQ0EgMQp8 IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZMb2Nh bGUuaD4KfCBpbnQKfCBtYWluICgpCnwgewp8IENGTG9jYWxlQ29weUN1cnJlbnQoKTsKfCAgIDsK fCAgIHJldHVybiAwOwp8IH0KY29uZmlndXJlOjExOTE3OiByZXN1bHQ6IG5vCmNvbmZpZ3VyZTox MTk2NjogY2hlY2tpbmcgZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmMKY29uZmlndXJlOjExOTk1OiBn Y2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMgID4mNQovdXNyL2xpYi9nY2Mv eDg2XzY0LXBjLWN5Z3dpbi85LjMuMC8uLi8uLi8uLi8uLi94ODZfNjQtcGMtY3lnd2luL2Jpbi9s ZDogL3RtcC9jY1JHaURaUy5vOiBpbiBmdW5jdGlvbiBgbWFpbic6Ci9jeWdkcml2ZS9jL2N5Z3dp bjY0L2Nyb3NzdG9vbC1uZy9jb25mdGVzdC5jOjQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBs aWJpbnRsX2JpbmR0ZXh0ZG9tYWluJwovY3lnZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rvb2wtbmcv Y29uZnRlc3QuYzo0NDooLnRleHQuc3RhcnR1cCsweDE0KTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQg dG8gZml0OiBSX1g4Nl82NF9QQzMyIGFnYWluc3QgdW5kZWZpbmVkIHN5bWJvbCBgbGliaW50bF9i aW5kdGV4dGRvbWFpbicKL3Vzci9saWIvZ2NjL3g4Nl82NC1wYy1jeWd3aW4vOS4zLjAvLi4vLi4v Li4vLi4veDg2XzY0LXBjLWN5Z3dpbi9iaW4vbGQ6IC9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3Nz dG9vbC1uZy9jb25mdGVzdC5jOjQ1OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsaWJpbnRsX2dl dHRleHQnCi9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9jb25mdGVzdC5jOjQ1Oigu dGV4dC5zdGFydHVwKzB4MjApOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfWDg2XzY0 X1BDMzIgYWdhaW5zdCB1bmRlZmluZWQgc3ltYm9sIGBsaWJpbnRsX2dldHRleHQnCmNvbGxlY3Qy OiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6MTE5OTU6ICQ/ID0g MQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2Rl ZmluZSBQQUNLQUdFX05BTUUgImNyb3NzdG9vbC1ORyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFN RSAiY3Jvc3N0b29sLW5nIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIxLjI0LjAuMTA1XzU2 NTkzNjYiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiY3Jvc3N0b29sLU5HIDEuMjQuMC4xMDVf NTY1OTM2NiIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJjcm9zc2djY0Bzb3VyY2V3YXJl Lm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICJodHRwOi8vY3Jvc3N0b29sLW5nLm9yZyIKfCAj ZGVmaW5lIFBBQ0tBR0UgImNyb3NzdG9vbC1uZyIKfCAjZGVmaW5lIFZFUlNJT04gIjEuMjQuMC4x MDVfNTY1OTM2NiIKfCAjZGVmaW5lIFlZVEVYVF9QT0lOVEVSIDEKfCAjZGVmaW5lIEhBVkVfQ1hY MTEgMQp8ICNkZWZpbmUgU1REQ19IRUFERVJTIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0gg MQp8ICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8 ICNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCnwgI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKfCAjZGVm aW5lIEhBVkVfU1RSSU5HU19IIDEKfCAjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCnwgI2RlZmlu ZSBIQVZFX1NURElOVF9IIDEKfCAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQp8ICNkZWZpbmUgSEFW RV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX01BTExPQyAxCnwgI2RlZmluZSBIQVZFX1NURExJ Ql9IIDEKfCAjZGVmaW5lIEhBVkVfUkVBTExPQyAxCnwgI2RlZmluZSBIQVZFX0FMTE9DQV9IIDEK fCAjZGVmaW5lIEhBVkVfQUxMT0NBIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgCnwgI2lu Y2x1ZGUgPGxpYmludGwuaD4KfCAjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklT SU9OCnwgZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwp8IGV4dGVybiBpbnQgKl9ubF9kb21h aW5fYmluZGluZ3M7CnwgI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIChf bmxfbXNnX2NhdF9jbnRyICsgKl9ubF9kb21haW5fYmluZGluZ3MpCnwgI2Vsc2UKfCAjZGVmaW5l IF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAp8ICNlbmRpZgp8IAp8IAp8IGludAp8 IG1haW4gKCkKfCB7CnwgCnwgYmluZHRleHRkb21haW4gKCIiLCAiIik7CnwgcmV0dXJuICogZ2V0 dGV4dCAoIiIpICsgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTgp8IAp8ICAgOwp8ICAg cmV0dXJuIDA7CnwgfQpjb25maWd1cmU6MTIwMDQ6IHJlc3VsdDogbm8KY29uZmlndXJlOjEyMDM4 OiBjaGVja2luZyBmb3IgaWNvbnYKY29uZmlndXJlOjEyMDYyOiBnY2MgLW8gY29uZnRlc3QuZXhl IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgID4mNQovdXNyL2xpYi9nY2MveDg2XzY0LXBjLWN5Z3dpbi85 LjMuMC8uLi8uLi8uLi8uLi94ODZfNjQtcGMtY3lnd2luL2Jpbi9sZDogL3RtcC9jY0tTSHNHYy5v OiBpbiBmdW5jdGlvbiBgbWFpbic6Ci9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9j b25mdGVzdC5jOjM2OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsaWJpY29udl9vcGVuJwovY3ln ZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rvb2wtbmcvY29uZnRlc3QuYzozNjooLnRleHQuc3RhcnR1 cCsweDE2KTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX1g4Nl82NF9QQzMyIGFnYWlu c3QgdW5kZWZpbmVkIHN5bWJvbCBgbGliaWNvbnZfb3BlbicKL3Vzci9saWIvZ2NjL3g4Nl82NC1w Yy1jeWd3aW4vOS4zLjAvLi4vLi4vLi4vLi4veDg2XzY0LXBjLWN5Z3dpbi9iaW4vbGQ6IC9jeWdk cml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9jb25mdGVzdC5jOjM3OiB1bmRlZmluZWQgcmVm ZXJlbmNlIHRvIGBsaWJpY29udicKL2N5Z2RyaXZlL2MvY3lnd2luNjQvY3Jvc3N0b29sLW5nL2Nv bmZ0ZXN0LmM6Mzc6KC50ZXh0LnN0YXJ0dXArMHgzMik6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRv IGZpdDogUl9YODZfNjRfUEMzMiBhZ2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYGxpYmljb252Jwov dXNyL2xpYi9nY2MveDg2XzY0LXBjLWN5Z3dpbi85LjMuMC8uLi8uLi8uLi8uLi94ODZfNjQtcGMt Y3lnd2luL2Jpbi9sZDogL2N5Z2RyaXZlL2MvY3lnd2luNjQvY3Jvc3N0b29sLW5nL2NvbmZ0ZXN0 LmM6Mzg6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxpYmljb252X2Nsb3NlJwovY3lnZHJpdmUv Yy9jeWd3aW42NC9jcm9zc3Rvb2wtbmcvY29uZnRlc3QuYzozODooLnRleHQuc3RhcnR1cCsweDNh KTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX1g4Nl82NF9QQzMyIGFnYWluc3QgdW5k ZWZpbmVkIHN5bWJvbCBgbGliaWNvbnZfY2xvc2UnCmNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJu ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6MTIwNjI6ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxl ZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUg ImNyb3NzdG9vbC1ORyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiY3Jvc3N0b29sLW5nIgp8 ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIxLjI0LjAuMTA1XzU2NTkzNjYiCnwgI2RlZmluZSBQ QUNLQUdFX1NUUklORyAiY3Jvc3N0b29sLU5HIDEuMjQuMC4xMDVfNTY1OTM2NiIKfCAjZGVmaW5l IFBBQ0tBR0VfQlVHUkVQT1JUICJjcm9zc2djY0Bzb3VyY2V3YXJlLm9yZyIKfCAjZGVmaW5lIFBB Q0tBR0VfVVJMICJodHRwOi8vY3Jvc3N0b29sLW5nLm9yZyIKfCAjZGVmaW5lIFBBQ0tBR0UgImNy b3NzdG9vbC1uZyIKfCAjZGVmaW5lIFZFUlNJT04gIjEuMjQuMC4xMDVfNTY1OTM2NiIKfCAjZGVm aW5lIFlZVEVYVF9QT0lOVEVSIDEKfCAjZGVmaW5lIEhBVkVfQ1hYMTEgMQp8ICNkZWZpbmUgU1RE Q19IRUFERVJTIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8ICNkZWZpbmUgSEFWRV9T WVNfU1RBVF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJ TkdfSCAxCnwgI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HU19I IDEKfCAjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NURElOVF9IIDEK fCAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2Rl ZmluZSBIQVZFX01BTExPQyAxCnwgI2RlZmluZSBIQVZFX1NURExJQl9IIDEKfCAjZGVmaW5lIEhB VkVfUkVBTExPQyAxCnwgI2RlZmluZSBIQVZFX0FMTE9DQV9IIDEKfCAjZGVmaW5lIEhBVkVfQUxM T0NBIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgCnwgI2luY2x1ZGUgPHN0ZGxpYi5oPgp8 ICNpbmNsdWRlIDxpY29udi5oPgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgaWNvbnZfdCBjZCA9 IGljb252X29wZW4oIiIsIiIpOwp8ICAgICAgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEws TlVMTCk7CnwgICAgICAgICAgICBpY29udl9jbG9zZShjZCk7CnwgICA7CnwgICByZXR1cm4gMDsK fCB9CmNvbmZpZ3VyZToxMjA4NjogZ2NjIC1vIGNvbmZ0ZXN0LmV4ZSAtZyAtTzIgICBjb25mdGVz dC5jICAtbGljb252ID4mNQpjb25maWd1cmU6MTIwODY6ICQ/ID0gMApjb25maWd1cmU6MTIwOTY6 IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMjA5OTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgaWNvbnYK Y29uZmlndXJlOjEyMjI4OiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgIGNvbmZ0ZXN0LmMg IC1saWNvbnYgPiY1CmNvbmZpZ3VyZToxMjIyODogJD8gPSAwCmNvbmZpZ3VyZToxMjIyODogLi9j b25mdGVzdC5leGUKY29uZmlndXJlOjEyMjI4OiAkPyA9IDAKY29uZmlndXJlOjEyMjQwOiByZXN1 bHQ6IHllcwpjb25maWd1cmU6MTIyNTU6IGNoZWNraW5nIGhvdyB0byBsaW5rIHdpdGggbGliaWNv bnYKY29uZmlndXJlOjEyMjU3OiByZXN1bHQ6IC1saWNvbnYKY29uZmlndXJlOjEyNzI5OiBjaGVj a2luZyBmb3IgR05VIGdldHRleHQgaW4gbGliaW50bApjb25maWd1cmU6MTI3NjY6IGdjYyAtbyBj b25mdGVzdC5leGUgLWcgLU8yICAgIGNvbmZ0ZXN0LmMgIC1saW50bCA+JjUKY29uZmlndXJlOjEy NzY2OiAkPyA9IDAKY29uZmlndXJlOjEyODE2OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTI4NTE6 IGNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIE5MUwpjb25maWd1cmU6MTI4NTM6IHJlc3VsdDogeWVz CmNvbmZpZ3VyZToxMjg1NjogY2hlY2tpbmcgd2hlcmUgdGhlIGdldHRleHQgZnVuY3Rpb24gY29t ZXMgZnJvbQpjb25maWd1cmU6MTI4Njc6IHJlc3VsdDogZXh0ZXJuYWwgbGliaW50bApjb25maWd1 cmU6MTI4NzU6IGNoZWNraW5nIGhvdyB0byBsaW5rIHdpdGggbGliaW50bApjb25maWd1cmU6MTI4 Nzc6IHJlc3VsdDogLWxpbnRsCmNvbmZpZ3VyZToxMjk4MzogY2hlY2tpbmcgZm9yIHBrZy1jb25m aWcKY29uZmlndXJlOjEzMDAxOiBmb3VuZCAvdXNyL2Jpbi9wa2ctY29uZmlnCmNvbmZpZ3VyZTox MzAxMzogcmVzdWx0OiAvdXNyL2Jpbi9wa2ctY29uZmlnCmNvbmZpZ3VyZToxMzAzODogY2hlY2tp bmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uIDAuOS4wCmNvbmZpZ3VyZToxMzA0MTog cmVzdWx0OiB5ZXMKY29uZmlndXJlOjEzMDg0OiBjaGVja2luZyBmb3IgbmN1cnNlc3cgdmlhIHBr Zy1jb25maWcKY29uZmlndXJlOjEzMDkzOiAkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVy cm9ycyAibmN1cnNlc3ciCmNvbmZpZ3VyZToxMzA5NjogJD8gPSAwCmNvbmZpZ3VyZToxMzExMDog JFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIm5jdXJzZXN3Igpjb25maWd1cmU6 MTMxMTM6ICQ/ID0gMApjb25maWd1cmU6MTMyNDY6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMzI3 NTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbmN1cnNlc3cvY3Vyc2VzLmgKY29uZmlndXJlOjEzMzA4 OiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgLURfR05VX1NPVVJDRSAtRF9ERUZBVUxUX1NP VVJDRSAgIGNvbmZ0ZXN0LmMgIC1sbmN1cnNlc3cgID4mNQpjb25maWd1cmU6MTMzMDg6ICQ/ID0g MApjb25maWd1cmU6MTMzMTc6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMzMzOTogY2hlY2tpbmcg Zm9yIHdvcmtpbmcgbmN1cnNlc3cuaApjb25maWd1cmU6MTMzNzI6IGdjYyAtbyBjb25mdGVzdC5l eGUgLWcgLU8yICAtRF9HTlVfU09VUkNFIC1EX0RFRkFVTFRfU09VUkNFICAgY29uZnRlc3QuYyAg LWxuY3Vyc2VzdyAgPiY1CmNvbmZ0ZXN0LmM6NDE6MzQ6IGZhdGFsIGVycm9yOiBuY3Vyc2Vzdy5o OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiAgIDQxIHwgICAgICAgICAgICAgICAgICAgICAg ICAgI2luY2x1ZGUgPG5jdXJzZXN3Lmg+CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXn5+fn5+fn5+fn5+CmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCmNvbmZpZ3VyZTox MzM3MjogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZz LmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiY3Jvc3N0b29sLU5HIgp8ICNkZWZpbmUgUEFD S0FHRV9UQVJOQU1FICJjcm9zc3Rvb2wtbmciCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEu MjQuMC4xMDVfNTY1OTM2NiIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJjcm9zc3Rvb2wtTkcg MS4yNC4wLjEwNV81NjU5MzY2Igp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImNyb3NzZ2Nj QHNvdXJjZXdhcmUub3JnIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgImh0dHA6Ly9jcm9zc3Rvb2wt bmcub3JnIgp8ICNkZWZpbmUgUEFDS0FHRSAiY3Jvc3N0b29sLW5nIgp8ICNkZWZpbmUgVkVSU0lP TiAiMS4yNC4wLjEwNV81NjU5MzY2Igp8ICNkZWZpbmUgWVlURVhUX1BPSU5URVIgMQp8ICNkZWZp bmUgSEFWRV9DWFgxMSAxCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9T WVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8ICNkZWZpbmUgSEFWRV9T VERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVmaW5lIEhBVkVfTUVNT1JZ X0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUgSEFWRV9JTlRUWVBFU19I IDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFWRV9VTklTVERfSCAxCnwg I2RlZmluZSBIQVZFX1NURExJQl9IIDEKfCAjZGVmaW5lIEhBVkVfTUFMTE9DIDEKfCAjZGVmaW5l IEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9SRUFMTE9DIDEKfCAjZGVmaW5lIEhBVkVf QUxMT0NBX0ggMQp8ICNkZWZpbmUgSEFWRV9BTExPQ0EgMQp8ICNkZWZpbmUgSEFWRV9JQ09OViAx CnwgI2RlZmluZSBFTkFCTEVfTkxTIDEKfCAjZGVmaW5lIEhBVkVfR0VUVEVYVCAxCnwgI2RlZmlu ZSBIQVZFX0RDR0VUVEVYVCAxCnwgI2RlZmluZSBIQVZFX05DVVJTRVNXIDEKfCAjZGVmaW5lIEhB VkVfQ1VSU0VTIDEKfCAjZGVmaW5lIEhBVkVfQ1VSU0VTX0VOSEFOQ0VEIDEKfCAjZGVmaW5lIEhB VkVfQ1VSU0VTX0NPTE9SIDEKfCAjZGVmaW5lIEhBVkVfQ1VSU0VTX09CU09MRVRFIDEKfCAjZGVm aW5lIEhBVkVfTkNVUlNFU1dfQ1VSU0VTX0ggMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAK fCAgICAgICAgICAgICAgICAgICAgICAgICAjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQg MQp8ICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxuY3Vyc2Vzdy5oPgp8IAp8IGlu dAp8IG1haW4gKCkKfCB7CnwgCnwgICAgICAgICAgICAgICAgICAgICAgICAgY2h0eXBlIGEgPSBB X0JPTEQ7CnwgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGIgPSBLRVlfTEVGVDsKfCAgICAg ICAgICAgICAgICAgICAgICAgICBjaHR5cGUgYyA9IENPTE9SX1BBSVIoMSkgJiBBX0NPTE9SOwp8 ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJfdCBkID0gV0FfTk9STUFMOwp8ICAgICAgICAg ICAgICAgICAgICAgICAgIGNjaGFyX3QgZTsKfCAgICAgICAgICAgICAgICAgICAgICAgICB3aW50 X3QgZjsKfCAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZyA9IGdldGF0dHJzKHN0ZHNjcik7 CnwgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGggPSBnZXRjdXJ4KHN0ZHNjcikgKyBnZXRt YXh4KHN0ZHNjcik7CnwgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHNjcigpOwp8ICAgICAg ICAgICAgICAgICAgICAgICAgIGluaXRfcGFpcigxLCBDT0xPUl9XSElURSwgQ09MT1JfUkVEKTsK fCAgICAgICAgICAgICAgICAgICAgICAgICB3YXR0cl9zZXQoc3Rkc2NyLCBkLCAwLCBOVUxMKTsK fCAgICAgICAgICAgICAgICAgICAgICAgICB3Z2V0X3djaChzdGRzY3IsICZmKTsKfCAKfCAgIDsK fCAgIHJldHVybiAwOwp8IH0KY29uZmlndXJlOjEzMzgxOiByZXN1bHQ6IG5vCmNvbmZpZ3VyZTox MzQwMzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbmN1cnNlcy5oCmNvbmZpZ3VyZToxMzQzNjogZ2Nj IC1vIGNvbmZ0ZXN0LmV4ZSAtZyAtTzIgIC1EX0dOVV9TT1VSQ0UgLURfREVGQVVMVF9TT1VSQ0Ug ICBjb25mdGVzdC5jICAtbG5jdXJzZXN3ICA+JjUKY29uZmlndXJlOjEzNDM2OiAkPyA9IDAKY29u ZmlndXJlOjEzNDQ1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTQxNzk6IGNoZWNraW5nIGZvciBD dXJzZXMgUGFuZWwgbGlicmFyeSB3aXRoIG5jdXJzZXN3L3BhbmVsLmgKY29uZmlndXJlOjE0MjAz OiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgLURfR05VX1NPVVJDRSAtRF9ERUZBVUxUX1NP VVJDRSAgIGNvbmZ0ZXN0LmMgIC1scGFuZWx3IC1sbmN1cnNlc3cgID4mNQpjb25maWd1cmU6MTQy MDM6ICQ/ID0gMApjb25maWd1cmU6MTQyMTI6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxNDYyMzog Y2hlY2tpbmcgZm9yIEN1cnNlcyBNZW51IGxpYnJhcnkgd2l0aCBuY3Vyc2Vzdy9tZW51LmgKY29u ZmlndXJlOjE0NjQ3OiBnY2MgLW8gY29uZnRlc3QuZXhlIC1nIC1PMiAgLURfR05VX1NPVVJDRSAt RF9ERUZBVUxUX1NPVVJDRSAgIGNvbmZ0ZXN0LmMgIC1sbWVudXcgLWxuY3Vyc2VzdyAgPiY1CmNv bmZpZ3VyZToxNDY0NzogJD8gPSAwCmNvbmZpZ3VyZToxNDY1NjogcmVzdWx0OiB5ZXMKY29uZmln dXJlOjE0OTgzOiBjaGVja2luZyBmb3IgYnVpbGQgdGltZQpjb25maWd1cmU6MTQ5OTc6IHJlc3Vs dDogRnJpIE1heSAgMSAyMzo1NzoxOSAyMDIwCmNvbmZpZ3VyZToxNTAxMDogY2hlY2tpbmcgaWYg dGhlIG1hbnVhbCBuZWVkcyB0byBiZSBpbnN0YWxsZWQKY29uZmlndXJlOjE1MDE2OiByZXN1bHQ6 IG5vCmNvbmZpZ3VyZToxNTEzMjogY2hlY2tpbmcgdGhhdCBnZW5lcmF0ZWQgZmlsZXMgYXJlIG5l d2VyIHRoYW4gY29uZmlndXJlCmNvbmZpZ3VyZToxNTEzODogcmVzdWx0OiBkb25lCmNvbmZpZ3Vy ZToxNTE3NzogY3JlYXRpbmcgLi9jb25maWcuc3RhdHVzCgojIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tICMjCiMjIFJ1bm5pbmcgY29uZmlnLnN0YXR1cy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAjIwoKVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBjcm9zc3Rvb2wtTkcgY29uZmlnLnN0 YXR1cyAxLjI0LjAuMTA1XzU2NTkzNjYsIHdoaWNoIHdhcwpnZW5lcmF0ZWQgYnkgR05VIEF1dG9j b25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKCiAgQ09ORklHX0ZJTEVTICAg ID0gCiAgQ09ORklHX0hFQURFUlMgID0gCiAgQ09ORklHX0xJTktTICAgID0gCiAgQ09ORklHX0NP TU1BTkRTID0gCiAgJCAuL2NvbmZpZy5zdGF0dXMgCgpvbiBWQUlPLVZBSU8KCmNvbmZpZy5zdGF0 dXM6MTAwMjogY3JlYXRpbmcgTWFrZWZpbGUKY29uZmlnLnN0YXR1czoxMDAyOiBjcmVhdGluZyBw YXRocy5zaApjb25maWcuc3RhdHVzOjEwMDI6IGNyZWF0aW5nIGtjb25maWcvTWFrZWZpbGUKY29u ZmlnLnN0YXR1czoxMDAyOiBjcmVhdGluZyBjb25maWcvY29uZmlndXJlLmluCmNvbmZpZy5zdGF0 dXM6MTAwMjogY3JlYXRpbmcgY29uZmlnLmgKY29uZmlnLnN0YXR1czoxMjMxOiBleGVjdXRpbmcg ZGVwZmlsZXMgY29tbWFuZHMKY29uZmlnLnN0YXR1czoxMzA4OiBjZCBrY29uZmlnICAgICAgICYm IHNlZCAtZSAnLyMgYW0tLWluY2x1ZGUtbWFya2VyL2QnIE1ha2VmaWxlICAgICAgICAgfCAvdXNy L2Jpbi9tYWtlIC1mIC0gYW0tLWRlcGZpbGVzCm1ha2U6IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3Ig J2FtLS1kZXBmaWxlcycuCmNvbmZpZy5zdGF0dXM6MTMxMzogJD8gPSAwCgojIyAtLS0tLS0tLS0t LS0tLS0tICMjCiMjIENhY2hlIHZhcmlhYmxlcy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwoK YWNfY3ZfYnVpbGQ9eDg2XzY0LXBjLWN5Z3dpbgphY19jdl9jX2NvbXBpbGVyX2dudT15ZXMKYWNf Y3ZfY19pbmxpbmU9aW5saW5lCmFjX2N2X2N4eF9jb21waWxlcl9nbnU9eWVzCmFjX2N2X2Vudl9B VVRPQ09ORl9zZXQ9CmFjX2N2X2Vudl9BVVRPQ09ORl92YWx1ZT0KYWNfY3ZfZW52X0FVVE9NQUtF X3NldD0KYWNfY3ZfZW52X0FVVE9NQUtFX3ZhbHVlPQphY19jdl9lbnZfQVVUT1JFQ09ORl9zZXQ9 CmFjX2N2X2Vudl9BVVRPUkVDT05GX3ZhbHVlPQphY19jdl9lbnZfQVdLX3NldD0KYWNfY3ZfZW52 X0FXS192YWx1ZT0KYWNfY3ZfZW52X0JBU0hfU0hFTExfc2V0PQphY19jdl9lbnZfQkFTSF9TSEVM TF92YWx1ZT0KYWNfY3ZfZW52X0JJU09OX3NldD0KYWNfY3ZfZW52X0JJU09OX3ZhbHVlPQphY19j dl9lbnZfQ0NDX3NldD0KYWNfY3ZfZW52X0NDQ192YWx1ZT0KYWNfY3ZfZW52X0NDX3NldD0KYWNf Y3ZfZW52X0NDX3ZhbHVlPQphY19jdl9lbnZfQ0ZMQUdTX3NldD0KYWNfY3ZfZW52X0NGTEFHU192 YWx1ZT0KYWNfY3ZfZW52X0NQUEZMQUdTX3NldD0KYWNfY3ZfZW52X0NQUEZMQUdTX3ZhbHVlPQph Y19jdl9lbnZfQ1BQX3NldD0KYWNfY3ZfZW52X0NQUF92YWx1ZT0KYWNfY3ZfZW52X0NVUlNFU19D RkxBR1Nfc2V0PQphY19jdl9lbnZfQ1VSU0VTX0NGTEFHU192YWx1ZT0KYWNfY3ZfZW52X0NVUlNF U19MSUJTX3NldD0KYWNfY3ZfZW52X0NVUlNFU19MSUJTX3ZhbHVlPQphY19jdl9lbnZfQ1hYRkxB R1Nfc2V0PQphY19jdl9lbnZfQ1hYRkxBR1NfdmFsdWU9CmFjX2N2X2Vudl9DWFhfc2V0PQphY19j dl9lbnZfQ1hYX3ZhbHVlPQphY19jdl9lbnZfRUdSRVBfc2V0PQphY19jdl9lbnZfRUdSRVBfdmFs dWU9CmFjX2N2X2Vudl9HUkVQX3NldD0KYWNfY3ZfZW52X0dSRVBfdmFsdWU9CmFjX2N2X2Vudl9J TlNUQUxMX3NldD0KYWNfY3ZfZW52X0lOU1RBTExfdmFsdWU9CmFjX2N2X2Vudl9MREZMQUdTX3Nl dD0KYWNfY3ZfZW52X0xERkxBR1NfdmFsdWU9CmFjX2N2X2Vudl9MSUJTX3NldD0KYWNfY3ZfZW52 X0xJQlNfdmFsdWU9CmFjX2N2X2Vudl9MSUJUT09MSVpFX3NldD0KYWNfY3ZfZW52X0xJQlRPT0xJ WkVfdmFsdWU9CmFjX2N2X2Vudl9MSUJUT09MX3NldD0KYWNfY3ZfZW52X0xJQlRPT0xfdmFsdWU9 CmFjX2N2X2Vudl9NNF9zZXQ9CmFjX2N2X2Vudl9NNF92YWx1ZT0KYWNfY3ZfZW52X01BS0Vfc2V0 PQphY19jdl9lbnZfTUFLRV92YWx1ZT0KYWNfY3ZfZW52X01FTlVfTElCU19zZXQ9CmFjX2N2X2Vu dl9NRU5VX0xJQlNfdmFsdWU9CmFjX2N2X2Vudl9PQkpDT1BZX3NldD0KYWNfY3ZfZW52X09CSkNP UFlfdmFsdWU9CmFjX2N2X2Vudl9PQkpEVU1QX3NldD0KYWNfY3ZfZW52X09CSkRVTVBfdmFsdWU9 CmFjX2N2X2Vudl9QQU5FTF9MSUJTX3NldD0KYWNfY3ZfZW52X1BBTkVMX0xJQlNfdmFsdWU9CmFj X2N2X2Vudl9QQVRDSF9zZXQ9CmFjX2N2X2Vudl9QQVRDSF92YWx1ZT0KYWNfY3ZfZW52X1BLR19D T05GSUdfTElCRElSX3NldD0KYWNfY3ZfZW52X1BLR19DT05GSUdfTElCRElSX3ZhbHVlPQphY19j dl9lbnZfUEtHX0NPTkZJR19QQVRIX3NldD0KYWNfY3ZfZW52X1BLR19DT05GSUdfUEFUSF92YWx1 ZT0KYWNfY3ZfZW52X1BLR19DT05GSUdfc2V0PQphY19jdl9lbnZfUEtHX0NPTkZJR192YWx1ZT0K YWNfY3ZfZW52X1BZVEhPTl9zZXQ9CmFjX2N2X2Vudl9QWVRIT05fdmFsdWU9CmFjX2N2X2Vudl9S RUFERUxGX3NldD0KYWNfY3ZfZW52X1JFQURFTEZfdmFsdWU9CmFjX2N2X2Vudl9TRURfc2V0PQph Y19jdl9lbnZfU0VEX3ZhbHVlPQphY19jdl9lbnZfWUFDQ19zZXQ9CmFjX2N2X2Vudl9ZQUNDX3Zh bHVlPQphY19jdl9lbnZfWUZMQUdTX3NldD0KYWNfY3ZfZW52X1lGTEFHU192YWx1ZT0KYWNfY3Zf ZW52X2J1aWxkX2FsaWFzX3NldD0KYWNfY3ZfZW52X2J1aWxkX2FsaWFzX3ZhbHVlPQphY19jdl9l bnZfaG9zdF9hbGlhc19zZXQ9CmFjX2N2X2Vudl9ob3N0X2FsaWFzX3ZhbHVlPQphY19jdl9lbnZf dGFyZ2V0X2FsaWFzX3NldD0KYWNfY3ZfZW52X3RhcmdldF9hbGlhc192YWx1ZT0KYWNfY3ZfZXhl ZXh0PS5leGUKYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9eWVzCmFjX2N2X2Z1bmNfbWFsbG9jXzBf bm9ubnVsbD15ZXMKYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD15ZXMKYWNfY3ZfaGVhZGVy X2ludHR5cGVzX2g9eWVzCmFjX2N2X2hlYWRlcl9tZW1vcnlfaD15ZXMKYWNfY3ZfaGVhZGVyX3N0 ZGM9eWVzCmFjX2N2X2hlYWRlcl9zdGRpbnRfaD15ZXMKYWNfY3ZfaGVhZGVyX3N0ZGxpYl9oPXll cwphY19jdl9oZWFkZXJfc3RyaW5nX2g9eWVzCmFjX2N2X2hlYWRlcl9zdHJpbmdzX2g9eWVzCmFj X2N2X2hlYWRlcl9zeXNfc3RhdF9oPXllcwphY19jdl9oZWFkZXJfc3lzX3R5cGVzX2g9eWVzCmFj X2N2X2hlYWRlcl91bmlzdGRfaD15ZXMKYWNfY3ZfaG9zdD14ODZfNjQtcGMtY3lnd2luCmFjX2N2 X2xpYl9sZXg9LWxmbAphY19jdl9vYmpleHQ9bwphY19jdl9wYXRoX0FVVE9DT05GPScke1NIRUxM fSAvY3lnZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rvb2wtbmcvc2NyaXB0cy9taXNzaW5nIGF1dG9j b25mJwphY19jdl9wYXRoX0FVVE9NQUtFPScke1NIRUxMfSAvY3lnZHJpdmUvYy9jeWd3aW42NC9j cm9zc3Rvb2wtbmcvc2NyaXB0cy9taXNzaW5nIGF1dG9tYWtlLTEuMTYnCmFjX2N2X3BhdGhfQVVU T1JFQ09ORj0vdXNyL2Jpbi9hdXRvcmVjb25mCmFjX2N2X3BhdGhfQVdLPS91c3IvYmluL2dhd2sK YWNfY3ZfcGF0aF9CQVNIX1NIRUxMPS91c3IvYmluL2Jhc2gKYWNfY3ZfcGF0aF9CSVNPTj0vdXNy L2Jpbi9iaXNvbgphY19jdl9wYXRoX0VHUkVQPScvdXNyL2Jpbi9ncmVwIC1FJwphY19jdl9wYXRo X0dSRVA9L3Vzci9iaW4vZ3JlcAphY19jdl9wYXRoX0xJQlRPT0w9L2N5Z2RyaXZlL2MvTWluR1cv YmluL2xpYnRvb2wKYWNfY3ZfcGF0aF9MSUJUT09MSVpFPS9jeWdkcml2ZS9jL01pbkdXL2Jpbi9s aWJ0b29saXplCmFjX2N2X3BhdGhfTTQ9L3Vzci9iaW4vbTQKYWNfY3ZfcGF0aF9NQUtFPS91c3Iv YmluL21ha2UKYWNfY3ZfcGF0aF9QWVRIT049L3Vzci9iaW4vcHl0aG9uMy42CmFjX2N2X3BhdGhf U0VEPS91c3IvYmluL3NlZAphY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9L3Vzci9iaW4vcGtn LWNvbmZpZwphY19jdl9wYXRoX2luc3RhbGw9Jy91c3IvYmluL2luc3RhbGwgLWMnCmFjX2N2X3Bh dGhfbWQ1c3VtPS91c3IvYmluL21kNXN1bQphY19jdl9wYXRoX21rZGlyPS91c3IvYmluL21rZGly CmFjX2N2X3BhdGhfc2hhMXN1bT0vdXNyL2Jpbi9zaGExc3VtCmFjX2N2X3BhdGhfc2hhMjU2c3Vt PS91c3IvYmluL3NoYTI1NnN1bQphY19jdl9wYXRoX3NoYTUxMnN1bT0vdXNyL2Jpbi9zaGE1MTJz dW0KYWNfY3ZfcHJvZ19BV0s9Z2F3awphY19jdl9wcm9nX0NQUD0nZ2NjIC1FJwphY19jdl9wcm9n X0xFWD1mbGV4CmFjX2N2X3Byb2dfWUFDQz0nYmlzb24gLXknCmFjX2N2X3Byb2dfYWNfY3RfQ0M9 Z2NjCmFjX2N2X3Byb2dfYWNfY3RfQ1hYPWcrKwphY19jdl9wcm9nX2FjX2N0X0VHUkVQPWVncmVw CmFjX2N2X3Byb2dfYWNfY3RfR1JFUD1ncmVwCmFjX2N2X3Byb2dfYWNfY3RfT0JKQ09QWT1vYmpj b3B5CmFjX2N2X3Byb2dfYWNfY3RfT0JKRFVNUD1vYmpkdW1wCmFjX2N2X3Byb2dfYWNfY3RfUEFU Q0g9cGF0Y2gKYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9cmFubGliCmFjX2N2X3Byb2dfYWNfY3Rf UkVBREVMRj1yZWFkZWxmCmFjX2N2X3Byb2dfYnppcDI9YnppcDIKYWNfY3ZfcHJvZ19jY19jODk9 CmFjX2N2X3Byb2dfY2NfZz15ZXMKYWNfY3ZfcHJvZ19jdXQ9Y3V0CmFjX2N2X3Byb2dfY3h4X2c9 eWVzCmFjX2N2X3Byb2dfZmlsZT1maWxlCmFjX2N2X3Byb2dfZmxleD1mbGV4CmFjX2N2X3Byb2df Z2l0PWdpdAphY19jdl9wcm9nX2d6aXA9Z3ppcAphY19jdl9wcm9nX2hlbHAybWFuPWhlbHAybWFu CmFjX2N2X3Byb2dfbGV4X3Jvb3Q9bGV4Lnl5CmFjX2N2X3Byb2dfbGV4X3l5dGV4dF9wb2ludGVy PXllcwphY19jdl9wcm9nX21ha2VfbWFrZV9zZXQ9eWVzCmFjX2N2X3Byb2dfbWFrZWluZm89bWFr ZWluZm8KYWNfY3ZfcHJvZ19yZWFkbGluaz1yZWFkbGluawphY19jdl9wcm9nX3Rhcj10YXIKYWNf Y3ZfcHJvZ191bnppcD11bnppcAphY19jdl9wcm9nX3dnZXQ9d2dldAphY19jdl9wcm9nX3doaWNo PXdoaWNoCmFjX2N2X3Byb2dfeHo9eHoKYWNfY3ZfdHlwZV9zaXplX3Q9eWVzCmFjX2N2X3dvcmtp bmdfYWxsb2NhX2g9eWVzCmFjbF9jdl9wYXRoX0xEPS91c3IveDg2XzY0LXBjLWN5Z3dpbi9iaW4v bGQuZXhlCmFjbF9jdl9wcm9nX2dudV9sZD15ZXMKYWNsX2N2X3JwYXRoPWRvbmUKYW1fY3ZfQ0Nf ZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9Z2NjMwphbV9jdl9DWFhfZGVwZW5kZW5jaWVzX2Nv bXBpbGVyX3R5cGU9Z2NjMwphbV9jdl9mdW5jX2ljb252PXllcwphbV9jdl9mdW5jX2ljb252X3dv cmtzPXllcwphbV9jdl9saWJfaWNvbnY9eWVzCmFtX2N2X21ha2Vfc3VwcG9ydF9uZXN0ZWRfdmFy aWFibGVzPXllcwphbV9jdl9wcm9nX2NjX2Nfbz15ZXMKYW1fY3ZfcHJvZ190YXJfcGF4PWdudXRh cgpheF9jdl9jdXJzZXM9eWVzCmF4X2N2X2N1cnNlc19jb2xvcj15ZXMKYXhfY3ZfY3Vyc2VzX2Vu aGFuY2VkPXllcwpheF9jdl9jdXJzZXNfb2Jzb2xldGU9eWVzCmF4X2N2X2N1cnNlc193aGljaD1u Y3Vyc2VzdwpheF9jdl9jeHhfY29tcGlsZV9jeHgxMV9fc3RkX2dudXBwMTE9eWVzCmF4X2N2X2hl YWRlcl9uY3Vyc2VzX2hfd2l0aF9uY3Vyc2Vzdz15ZXMKYXhfY3ZfaGVhZGVyX25jdXJzZXN3X2N1 cnNlc19oPXllcwpheF9jdl9oZWFkZXJfbmN1cnNlc3dfaD1ubwpheF9jdl9oZWFkZXJfbmN1cnNl c3dfbWVudV9oPXllcwpheF9jdl9oZWFkZXJfbmN1cnNlc3dfcGFuZWxfaD15ZXMKYXhfY3ZfbWVu dT15ZXMKYXhfY3ZfbmN1cnNlc3c9eWVzCmF4X2N2X3BhbmVsPXllcwpjdG5nX2N2X2NwdV9jb3Vu dD0nZ2V0Y29uZiBfTlBST0NFU1NPUlNfT05MTicKY3RuZ19jdl9pbnN0YWxsX3dpdGhfc3RyaXBf cHJvZ3JhbT15ZXMKZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50PW5vCmd0X2N2X2Z1bmNf Q0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT1ubwpndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9 bm8KZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJpbnRsPXllcwoKIyMgLS0tLS0tLS0tLS0tLS0t LS0gIyMKIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKCkFD TE9DQUw9JyR7U0hFTEx9IC9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9zY3JpcHRz L21pc3NpbmcgYWNsb2NhbC0xLjE2JwpBTExPQ0E9JycKQU1ERVBCQUNLU0xBU0g9J1wnCkFNREVQ X0ZBTFNFPScjJwpBTURFUF9UUlVFPScnCkFNVEFSPSckJHtUQVItdGFyfScKQU1fQkFDS1NMQVNI PSdcJwpBTV9ERUZBVUxUX1Y9JyQoQU1fREVGQVVMVF9WRVJCT1NJVFkpJwpBTV9ERUZBVUxUX1ZF UkJPU0lUWT0nMScKQU1fVj0nJChWKScKQVVUT0NPTkY9JyR7U0hFTEx9IC9jeWdkcml2ZS9jL2N5 Z3dpbjY0L2Nyb3NzdG9vbC1uZy9zY3JpcHRzL21pc3NpbmcgYXV0b2NvbmYnCkFVVE9IRUFERVI9 JyR7U0hFTEx9IC9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9zY3JpcHRzL21pc3Np bmcgYXV0b2hlYWRlcicKQVVUT01BS0U9JyR7U0hFTEx9IC9jeWdkcml2ZS9jL2N5Z3dpbjY0L2Ny b3NzdG9vbC1uZy9zY3JpcHRzL21pc3NpbmcgYXV0b21ha2UtMS4xNicKQVVUT1JFQ09ORj0nL3Vz ci9iaW4vYXV0b3JlY29uZicKQVdLPScvdXNyL2Jpbi9nYXdrJwpCQVNIX0NPTVBMRVRJT05fRElS PScke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucycKQkFTSF9TSEVMTD0nL3Vz ci9iaW4vYmFzaCcKQklTT049Jy91c3IvYmluL2Jpc29uJwpDQz0nZ2NjJwpDQ0RFUE1PREU9J2Rl cG1vZGU9Z2NjMycKQ0ZMQUdTPSctZyAtTzInCkNQUD0nZ2NjIC1FJwpDUFBGTEFHUz0nJwpDUFVf Q09VTlQ9J2dldGNvbmYgX05QUk9DRVNTT1JTX09OTE4nCkNVUlNFU19DRkxBR1M9Jy1EX0dOVV9T T1VSQ0UgLURfREVGQVVMVF9TT1VSQ0UgJwpDVVJTRVNfTElCUz0nLWxuY3Vyc2VzdyAnCkNYWD0n ZysrIC1zdGQ9Z251KysxMScKQ1hYREVQTU9ERT0nZGVwbW9kZT1nY2MzJwpDWFhGTEFHUz0nLWcg LU8yJwpDWUdQQVRIX1c9J2N5Z3BhdGggLXcnCkRBVEU9J0ZyaSBNYXkgIDEgMjM6NTc6MTkgMjAy MCcKREVGUz0nLURIQVZFX0NPTkZJR19IJwpERVBESVI9Jy5kZXBzJwpFQ0hPX0M9JycKRUNIT19O PSctbicKRUNIT19UPScnCkVHUkVQPScvdXNyL2Jpbi9ncmVwIC1FJwpFWEVFWFQ9Jy5leGUnCkdS RVA9Jy91c3IvYmluL2dyZXAnCkhBVkVfQ1hYMTE9JzEnCklOU1RBTEw9Jy91c3IvYmluL2luc3Rh bGwgLWMnCklOU1RBTExfQkFTSF9DT01QTEVUSU9OX0ZBTFNFPScjJwpJTlNUQUxMX0JBU0hfQ09N UExFVElPTl9UUlVFPScnCklOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnCklOU1RBTExf UFJPR1JBTT0nJHtJTlNUQUxMfScKSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCklOU1RBTExf U1RSSVBfUFJPR1JBTT0nJChpbnN0YWxsX3NoKSAtYyAtcycKSU5TVEFMTF9VU0VSX01BTlVBTF9G QUxTRT0nJwpJTlNUQUxMX1VTRVJfTUFOVUFMX1RSVUU9JyMnCklOVExMSUJTPSctbGludGwnCklO VExfTUFDT1NYX0xJQlM9JycKS0NPTkZJR189JycKS0NPTkZJR19hdXRvY29uZl8yXzY1X29yX25l d2VyPSdkZWZfYm9vbCB5JwpLQ09ORklHX2F1dG9tYWtlXzFfMTVfb3JfbmV3ZXI9J2RlZl9ib29s IHknCktDT05GSUdfYXV0b3JlY29uZl8yXzY1X29yX25ld2VyPSdkZWZfYm9vbCB5JwpLQ09ORklH X2Jpc29uXzJfN19vcl9uZXdlcj0nZGVmX2Jvb2wgeScKS0NPTkZJR19jdXJsPSdib29sJwpLQ09O RklHX2N2cz0nYm9vbCcKS0NPTkZJR19kdGM9J2Jvb2wnCktDT05GSUdfZ2l0PSdkZWZfYm9vbCB5 JwpLQ09ORklHX2dudV9tNF8xXzRfMTJfb3JfbmV3ZXI9J2RlZl9ib29sIHknCktDT05GSUdfaGFz X2N4eDExPSdkZWZfYm9vbCB5JwpLQ09ORklHX2luc3RhbGxfd2l0aF9zdHJpcF9wcm9ncmFtPSdk ZWZfYm9vbCB5JwpLQ09ORklHX2xpYnRvb2xfMl80X29yX25ld2VyPSdkZWZfYm9vbCB5JwpLQ09O RklHX2xpYnRvb2xpemVfMl80X29yX25ld2VyPSdkZWZfYm9vbCB5JwpLQ09ORklHX2x6aXA9J2Jv b2wnCktDT05GSUdfbWFrZV8zXzgxX29yX25ld2VyPSdkZWZfYm9vbCB5JwpLQ09ORklHX21ha2Vf NF8wX29yX25ld2VyPSdkZWZfYm9vbCB5JwpLQ09ORklHX21kNXN1bT0nZGVmX2Jvb2wgeScKS0NP TkZJR19weXRob249J2RlZl9ib29sIHknCktDT05GSUdfcHl0aG9uXzNfNF9vcl9uZXdlcj0nZGVm X2Jvb2wgeScKS0NPTkZJR19zaGExc3VtPSdkZWZfYm9vbCB5JwpLQ09ORklHX3NoYTI1NnN1bT0n ZGVmX2Jvb2wgeScKS0NPTkZJR19zaGE1MTJzdW09J2RlZl9ib29sIHknCktDT05GSUdfc3RhdGlj X2xpbms9J2RlZl9ib29sIHknCktDT05GSUdfc3ZuPSdib29sJwpLQ09ORklHX3dnZXQ9J2RlZl9i b29sIHknCkxERkxBR1M9JycKTEVYPSdmbGV4JwpMRVhMSUI9Jy1sZmwnCkxFWF9PVVRQVVRfUk9P VD0nbGV4Lnl5JwpMSUJJQ09OVj0nLWxpY29udicKTElCSU5UTD0nLWxpbnRsJwpMSUJPQkpTPScn CkxJQlM9JycKTElCVE9PTD0nL2N5Z2RyaXZlL2MvTWluR1cvYmluL2xpYnRvb2wnCkxJQlRPT0xJ WkU9Jy9jeWdkcml2ZS9jL01pbkdXL2Jpbi9saWJ0b29saXplJwpMTl9TPSdsbiAtcycKTFRMSUJJ Q09OVj0nLWxpY29udicKTFRMSUJJTlRMPSctbGludGwnCkxUTElCT0JKUz0nJwpNND0nL3Vzci9i aW4vbTQnCk1BSU5UPScnCk1BSU5UQUlORVJfTU9ERV9GQUxTRT0nIycKTUFJTlRBSU5FUl9NT0RF X1RSVUU9JycKTUFLRT0nL3Vzci9iaW4vbWFrZScKTUFLRUlORk89JyR7U0hFTEx9IC9jeWdkcml2 ZS9jL2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZy9zY3JpcHRzL21pc3NpbmcgbWFrZWluZm8nCk1FTlVf TElCUz0nLWxtZW51dycKTUtESVJfUD0nL3Vzci9iaW4vbWtkaXIgLXAnCk9CSkNPUFk9Jy91c3Iv YmluL29iamNvcHknCk9CSkRVTVA9Jy91c3IvYmluL29iamR1bXAnCk9CSkVYVD0nbycKUEFDS0FH RT0nY3Jvc3N0b29sLW5nJwpQQUNLQUdFX0JVR1JFUE9SVD0nY3Jvc3NnY2NAc291cmNld2FyZS5v cmcnClBBQ0tBR0VfTkFNRT0nY3Jvc3N0b29sLU5HJwpQQUNLQUdFX1NUUklORz0nY3Jvc3N0b29s LU5HIDEuMjQuMC4xMDVfNTY1OTM2NicKUEFDS0FHRV9UQVJOQU1FPSdjcm9zc3Rvb2wtbmcnClBB Q0tBR0VfVVJMPSdodHRwOi8vY3Jvc3N0b29sLW5nLm9yZycKUEFDS0FHRV9WRVJTSU9OPScxLjI0 LjAuMTA1XzU2NTkzNjYnClBBTkVMX0xJQlM9Jy1scGFuZWx3JwpQQVRDSD0nL3Vzci9iaW4vcGF0 Y2gnClBBVEhfU0VQQVJBVE9SPSc6JwpQS0dfQ09ORklHPScvdXNyL2Jpbi9wa2ctY29uZmlnJwpQ S0dfQ09ORklHX0xJQkRJUj0nJwpQS0dfQ09ORklHX1BBVEg9JycKUE9TVUI9J3BvJwpQWVRIT049 Jy91c3IvYmluL3B5dGhvbjMuNicKUkFOTElCPSdyYW5saWInClJFQURFTEY9Jy91c3IvYmluL3Jl YWRlbGYnClNFRD0nL3Vzci9iaW4vc2VkJwpTRVRfTUFLRT0nJwpTSEVMTD0nL2Jpbi9zaCcKU1RS SVA9JycKVVNFX05MUz0neWVzJwpWRVJTSU9OPScxLjI0LjAuMTA1XzU2NTkzNjYnCllBQ0M9J2Jp c29uIC15JwpZRkxBR1M9JycKYWNfY3RfQ0M9J2djYycKYWNfY3RfQ1hYPSdnKysnCmFjX2N0X0VH UkVQPSdlZ3JlcCcKYWNfY3RfR1JFUD0nZ3JlcCcKYWNfY3RfT0JKQ09QWT0nb2JqY29weScKYWNf Y3RfT0JKRFVNUD0nb2JqZHVtcCcKYWNfY3RfUEFUQ0g9J3BhdGNoJwphY19jdF9SRUFERUxGPSdy ZWFkZWxmJwphbV9fRVhFRVhUX0ZBTFNFPScjJwphbV9fRVhFRVhUX1RSVUU9JycKYW1fX2Zhc3Rk ZXBDQ19GQUxTRT0nIycKYW1fX2Zhc3RkZXBDQ19UUlVFPScnCmFtX19mYXN0ZGVwQ1hYX0ZBTFNF PScjJwphbV9fZmFzdGRlcENYWF9UUlVFPScnCmFtX19pbmNsdWRlPSdpbmNsdWRlJwphbV9faXNy Yz0nJwphbV9fbGVhZGluZ19kb3Q9Jy4nCmFtX19ub2RlcD0nX25vJwphbV9fcXVvdGU9JycKYW1f X3Rhcj0ndGFyIC0tZm9ybWF0PXBvc2l4IC1jaGYgLSAiJCR0YXJkaXIiJwphbV9fdW50YXI9J3Rh ciAteGYgLScKYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCmJ1aWxkPSd4ODZfNjQtcGMtY3ln d2luJwpidWlsZF9hbGlhcz0nJwpidWlsZF9jcHU9J3g4Nl82NCcKYnVpbGRfb3M9J2N5Z3dpbicK YnVpbGRfdmVuZG9yPSdwYycKYnppcDI9J2J6aXAyJwpjdXJsPScnCmN1dD0nY3V0JwpjdnM9JycK ZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCmRhdGFyb290ZGlyPScke3ByZWZpeH0vc2hhcmUnCmRv Y2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FHRV9UQVJOQU1FfScKZHRjPScnCmR2aWRp cj0nJHtkb2NkaXJ9JwplbmFibGVfbG9jYWw9J25vJwpleGVjX3ByZWZpeD0nJHtwcmVmaXh9Jwpm aWxlPSdmaWxlJwpmbGV4PSdmbGV4JwpnaXQ9J2dpdCcKZ3ppcD0nZ3ppcCcKaGVscDJtYW49J2hl bHAybWFuJwpob3N0PSd4ODZfNjQtcGMtY3lnd2luJwpob3N0X2FsaWFzPScnCmhvc3RfY3B1PSd4 ODZfNjQnCmhvc3Rfb3M9J2N5Z3dpbicKaG9zdF92ZW5kb3I9J3BjJwpodG1sZGlyPScke2RvY2Rp cn0nCmluY2x1ZGVkaXI9JyR7cHJlZml4fS9pbmNsdWRlJwppbmZvZGlyPScke2RhdGFyb290ZGly fS9pbmZvJwppbnN0YWxsX3NoPScke1NIRUxMfSAvY3lnZHJpdmUvYy9jeWd3aW42NC9jcm9zc3Rv b2wtbmcvc2NyaXB0cy9pbnN0YWxsLXNoJwprY29uZmlnX29wdGlvbnM9JycKbGliZGlyPScke2V4 ZWNfcHJlZml4fS9saWInCmxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCmxvY2Fs ZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJwpsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFy JwpsemlwPScnCm1ha2VpbmZvPSdtYWtlaW5mbycKbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4n Cm1kNXN1bT0nL3Vzci9iaW4vbWQ1c3VtJwpta2Rpcl9wPSckKE1LRElSX1ApJwpvbGRpbmNsdWRl ZGlyPScvdXNyL2luY2x1ZGUnCnBkZmRpcj0nJHtkb2NkaXJ9JwpwcmVmaXg9Jy9jeWdkcml2ZS9j L2N5Z3dpbjY0L2Nyb3NzdG9vbC1uZycKcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0ncyx4LHgsJwpw c2Rpcj0nJHtkb2NkaXJ9JwpyZWFkbGluaz0ncmVhZGxpbmsnCnJ1bnN0YXRlZGlyPScke2xvY2Fs c3RhdGVkaXJ9L3J1bicKc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKc2hhMXN1bT0nL3Vz ci9iaW4vc2hhMXN1bScKc2hhMjU2c3VtPScvdXNyL2Jpbi9zaGEyNTZzdW0nCnNoYTUxMnN1bT0n L3Vzci9iaW4vc2hhNTEyc3VtJwpzaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKc3ZuPScn CnN5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnCnRhcj0ndGFyJwp0YXJnZXRfYWxpYXM9JycKdW56 aXA9J3VuemlwJwp3Z2V0PSd3Z2V0Jwp3aGljaD0nd2hpY2gnCnh6PSd4eicKCiMjIC0tLS0tLS0t LS0tICMjCiMjIGNvbmZkZWZzLmguICMjCiMjIC0tLS0tLS0tLS0tICMjCgovKiBjb25mZGVmcy5o ICovCiNkZWZpbmUgUEFDS0FHRV9OQU1FICJjcm9zc3Rvb2wtTkciCiNkZWZpbmUgUEFDS0FHRV9U QVJOQU1FICJjcm9zc3Rvb2wtbmciCiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIxLjI0LjAuMTA1 XzU2NTkzNjYiCiNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImNyb3NzdG9vbC1ORyAxLjI0LjAuMTA1 XzU2NTkzNjYiCiNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImNyb3NzZ2NjQHNvdXJjZXdhcmUu b3JnIgojZGVmaW5lIFBBQ0tBR0VfVVJMICJodHRwOi8vY3Jvc3N0b29sLW5nLm9yZyIKI2RlZmlu ZSBQQUNLQUdFICJjcm9zc3Rvb2wtbmciCiNkZWZpbmUgVkVSU0lPTiAiMS4yNC4wLjEwNV81NjU5 MzY2IgojZGVmaW5lIFlZVEVYVF9QT0lOVEVSIDEKI2RlZmluZSBIQVZFX0NYWDExIDEKI2RlZmlu ZSBTVERDX0hFQURFUlMgMQojZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQojZGVmaW5lIEhBVkVf U1lTX1NUQVRfSCAxCiNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCiNkZWZpbmUgSEFWRV9TVFJJTkdf SCAxCiNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCiNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQojZGVm aW5lIEhBVkVfSU5UVFlQRVNfSCAxCiNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCiNkZWZpbmUgSEFW RV9VTklTVERfSCAxCiNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCiNkZWZpbmUgSEFWRV9NQUxMT0Mg MQojZGVmaW5lIEhBVkVfU1RETElCX0ggMQojZGVmaW5lIEhBVkVfUkVBTExPQyAxCiNkZWZpbmUg SEFWRV9BTExPQ0FfSCAxCiNkZWZpbmUgSEFWRV9BTExPQ0EgMQojZGVmaW5lIEhBVkVfSUNPTlYg MQojZGVmaW5lIEVOQUJMRV9OTFMgMQojZGVmaW5lIEhBVkVfR0VUVEVYVCAxCiNkZWZpbmUgSEFW RV9EQ0dFVFRFWFQgMQojZGVmaW5lIEhBVkVfTkNVUlNFU1cgMQojZGVmaW5lIEhBVkVfQ1VSU0VT IDEKI2RlZmluZSBIQVZFX0NVUlNFU19FTkhBTkNFRCAxCiNkZWZpbmUgSEFWRV9DVVJTRVNfQ09M T1IgMQojZGVmaW5lIEhBVkVfQ1VSU0VTX09CU09MRVRFIDEKI2RlZmluZSBIQVZFX05DVVJTRVNX X0NVUlNFU19IIDEKI2RlZmluZSBIQVZFX0NVUlNFU19FTkhBTkNFRCAxCiNkZWZpbmUgSEFWRV9D VVJTRVNfQ09MT1IgMQojZGVmaW5lIEhBVkVfQ1VSU0VTX09CU09MRVRFIDEKI2RlZmluZSBIQVZF X05DVVJTRVNfSCAxCiNkZWZpbmUgSEFWRV9QQU5FTCAxCiNkZWZpbmUgSEFWRV9OQ1VSU0VTV19Q QU5FTF9IIDEKI2RlZmluZSBIQVZFX01FTlUgMQojZGVmaW5lIEhBVkVfTkNVUlNFU1dfTUVOVV9I IDEKCmNvbmZpZ3VyZTogZXhpdCAwCg== ------=_Part_521605_543489725.1588359602716--