Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752654AbdDIRe7 (ORCPT ); Sun, 9 Apr 2017 13:34:59 -0400 Received: from mx3.molgen.mpg.de ([141.14.17.11]:41571 "EHLO mx1.molgen.mpg.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752511AbdDIRew (ORCPT ); Sun, 9 Apr 2017 13:34:52 -0400 Message-ID: <1491759283.1152.12.camel@molgen.mpg.de> Subject: [Regression Linux 4.11] TPM module not loaded anymore (was: Regression between Linux 3.16 and 4.8/4.9 on Lenovo X60 with coreboot) From: Paul Menzel To: Jarkko Sakkinen , Bob Moore Cc: "Maciej S. Szmigiero" , linux-kernel@vger.kernel.org, Arthur Heymans , tpmdd-devel@lists.sourceforge.net, GNUtoo@no-log.org, Lv Zheng , "Rafael J. Wysocki" Date: Sun, 09 Apr 2017 19:34:43 +0200 In-Reply-To: References: <20170406165557.GD7657@obsidianresearch.com> <3d62bd7d4addc020c2f8e3c2edf3280e@molgen.mpg.de> <20170406191013.GA25011@obsidianresearch.com> <20170407201347.2qcyrdzgg2yikoen@intel.com> Content-Type: multipart/mixed; boundary="=-6NiuIYU3QnJEtYPGEdFB" X-Mailer: Evolution 3.12.9-1+b1 Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 196708 Lines: 2593 --=-6NiuIYU3QnJEtYPGEdFB Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Dear Linux folks, It turns out that stricter checks in the ACPI subsystem, introduced in commit 57707a9a77 (ACPICA: Resources: Not a valid resource if buffer length too long) [1], cause the TPM module not to be loaded anymore on the Lenovo X60 with coreboot [2]. Am Freitag, den 07.04.2017, 22:58 +0200 schrieb Paul Menzel: > On 2017-04-07 22:13, Jarkko Sakkinen wrote: > > On Thu, Apr 06, 2017 at 01:10:13PM -0600, Jason Gunthorpe wrote: > >> On Thu, Apr 06, 2017 at 08:26:22PM +0200, Paul Menzel wrote: > >> > >We added direct ACPI binding to the driver in addition to PNP, so if > >> > >you have an ACPI table it goes down that path and does some additional > >> > >validation of what is in the TPM. The BIOS must provide a > >> > >acpi_dev_resource_memory and a ACPI_SIG_TPM2 for the ACPI entry at a > >> > >minimum. > >> > > >> > Is it correct, that this is added in/for 4.11, so just recently? Testing > >> > with Linux 4.10.8, everything is detected just fine. > >> > >> No, it is quite a bit older.. And it should only go for TPM2, which I > >> don't think you have?? > >> > >> Maybe Jarkko has a guess, but sure sounds like something is recently > >> broken in 4.11 > > > > I'll come back to this. I have to re-read the whole mail thread to > > get back into the context. Lots of multitasking because of release > > and so forth. Sorry for the latency! > > I started bisecting this issue. This is the current state. […] Here are the results. ``` git bisect log # bad: [7a771ceac771d009f7203c40b256b0608d7ea2f8] Merge tag 'dm-4.11-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm # good: [c470abd4fde40ea6a0846a2beab642a578c0b8cd] Linux 4.10 git bisect start 'HEAD' 'v4.10' # good: [b3de5ad688f0f52457e73767f95a640ab4158d0d] Merge tag 'regmap-v4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap git bisect good b3de5ad688f0f52457e73767f95a640ab4158d0d # bad: [fd4a61e08aa79f2b7835b25c6f94f27bd2d65990] sched/core: Fix build paravirt build on arm and arm64 git bisect bad fd4a61e08aa79f2b7835b25c6f94f27bd2d65990 # good: [7aa7d608112baf63a0b1278955f9619427373807] Merge tag 'leds_for_4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds git bisect good 7aa7d608112baf63a0b1278955f9619427373807 # good: [02c3de1105228e367320e7fdeffbf511904f398c] Merge tag 'pm-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm git bisect good 02c3de1105228e367320e7fdeffbf511904f398c # bad: [6c24337f22115d669e24ce990842dab667371b4d] Merge tag 'fscrypt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/fscrypt git bisect bad 6c24337f22115d669e24ce990842dab667371b4d # bad: [a74d1cafc22e100a9b59c50943ca09c37e03dce8] Merge branches 'acpi-bus', 'acpi-sleep' and 'acpi-processor' git bisect bad a74d1cafc22e100a9b59c50943ca09c37e03dce8 # bad: [ce87e09dd88c61f9088768a7708828423549725c] ACPICA: Parser: Allow method invocations as target operands git bisect bad ce87e09dd88c61f9088768a7708828423549725c # good: [0fc5e8f4e4b33ddfa1d1d673fcd420d6e13eb076] ACPICA: Hardware: Add sleep register hooks git bisect good 0fc5e8f4e4b33ddfa1d1d673fcd420d6e13eb076 # good: [a654b8ca6d28736995de767ba62e801fd806a3b2] ACPICA: Disassembler: Add Switch/Case disassembly support git bisect good a654b8ca6d28736995de767ba62e801fd806a3b2 # bad: [57707a9a7780fab426b8ae9b4c7b65b912a748b3] ACPICA: Resources: Not a valid resource if buffer length too long git bisect bad 57707a9a7780fab426b8ae9b4c7b65b912a748b3 # good: [7225d0467c59e55566df396d6ecd5baf26ef3d9b] ACPICA: Utilities: Update debug output git bisect good 7225d0467c59e55566df396d6ecd5baf26ef3d9b # first bad commit: [57707a9a7780fab426b8ae9b4c7b65b912a748b3] ACPICA: Resources: Not a valid resource if buffer length too long ``` I suggest, that just a warning is printed in this case, or that an option is added to enable some kind of “strict mode” or a quirk table. Please find the decompiled DSDT attached. The code to generate the ASL coreboot code is available [3]. Please tell me, what information you need. Kind regards, Paul [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=57707a9a778 [2] https://review.coreboot.org/13410/ [3] https://review.coreboot.org/cgit/coreboot.git/tree/src/drivers/pc80/tpm/tpm.c --=-6NiuIYU3QnJEtYPGEdFB Content-Disposition: attachment; filename="DSDT.dsl" Content-Type: text/x-dsl; name="DSDT.dsl"; charset="UTF-8" Content-Transfer-Encoding: base64 LyoKICogSW50ZWwgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlCiAqIEFNTCBEaXNhc3NlbWJs ZXIgdmVyc2lvbiAyMDE0MDkyNi0zMiBbT2N0ICAxIDIwMTRdCiAqIENvcHlyaWdodCAoYykgMjAw MCAtIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KICogCiAqIERpc2Fzc2VtYmx5IG9mIERTRFQsIFN1 biBBcHIgIDkgMTk6MzA6MzQgMjAxNwogKgogKiBPcmlnaW5hbCBUYWJsZSBIZWFkZXI6CiAqICAg ICBTaWduYXR1cmUgICAgICAgICJEU0RUIgogKiAgICAgTGVuZ3RoICAgICAgICAgICAweDAwMDAy RTU4ICgxMTg2NCkKICogICAgIFJldmlzaW9uICAgICAgICAgMHgwMwogKiAgICAgQ2hlY2tzdW0g ICAgICAgICAweDE4CiAqICAgICBPRU0gSUQgICAgICAgICAgICJDT1JFdjQiCiAqICAgICBPRU0g VGFibGUgSUQgICAgICJDT1JFQk9PVCIKICogICAgIE9FTSBSZXZpc2lvbiAgICAgMHgyMDA5MDQx OSAoNTM3NDYxNzg1KQogKiAgICAgQ29tcGlsZXIgSUQgICAgICAiSU5UTCIKICogICAgIENvbXBp bGVyIFZlcnNpb24gMHgyMDE0MDkyNiAoNTM4MTgzOTc0KQogKi8KRGVmaW5pdGlvbkJsb2NrICgi RFNEVC5hbWwiLCAiRFNEVCIsIDMsICJDT1JFdjQiLCAiQ09SRUJPT1QiLCAweDIwMDkwNDE5KQp7 CgogICAgRXh0ZXJuYWwgKF9QUl8uQ1AwMCwgVW5rbm93bk9iaikKICAgIEV4dGVybmFsIChfUFJf LkNQMDEsIFVua25vd25PYmopCiAgICBFeHRlcm5hbCAoTENEMCwgVW5rbm93bk9iaikKICAgIEV4 dGVybmFsIChQREMwLCBVbmtub3duT2JqKQogICAgRXh0ZXJuYWwgKFBEQzEsIFVua25vd25PYmop CgogICAgU2NvcGUgKFwpCiAgICB7CiAgICAgICAgTmFtZSAoTlZTQSwgMHg3RjdGRTk4MCkKICAg IH0KCiAgICBNZXRob2QgKF9QVFMsIDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFRTOiBQcmVwYXJl IFRvIFNsZWVwCiAgICB7CiAgICAgICAgXF9TQi5QQ0kwLkxQQ0IuRUMuTVVURSAoT25lKQogICAg ICAgIFxfU0IuUENJMC5MUENCLkVDLlVTQlAgKFplcm8pCiAgICAgICAgXF9TQi5QQ0kwLkxQQ0Iu RUMuUkFESSAoWmVybykKICAgIH0KCiAgICBNZXRob2QgKF9XQUssIDEsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfV0FLOiBXYWtlCiAgICB7CiAgICAgICAgSWYgKExFcXVhbCAoQXJnMCwgMHgwMykpIHt9 CiAgICAgICAgSWYgKExFcXVhbCAoQXJnMCwgMHgwNCkpIHt9CiAgICAgICAgUmV0dXJuIChQYWNr YWdlICgweDAyKQogICAgICAgIHsKICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgIFplcm8K ICAgICAgICB9KQogICAgfQoKICAgIFNjb3BlIChfU0IpCiAgICB7CiAgICAgICAgTWV0aG9kIChf SU5JLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0lOSTogSW5pdGlhbGl6ZQogICAgICAgIHsKICAg ICAgICAgICAgR09TICgpCiAgICAgICAgICAgIElmIChMQW5kIChMRXF1YWwgKE9TWVMsIDB4MDdE MSksIE1QRU4pKSB7fQogICAgICAgIH0KICAgIH0KCiAgICBOYW1lIChQSUNNLCBaZXJvKQogICAg TmFtZSAoRFNFTiwgT25lKQogICAgT3BlcmF0aW9uUmVnaW9uIChHTlZTLCBTeXN0ZW1NZW1vcnks IE5WU0EsIDB4MDEwMCkKICAgIEZpZWxkIChHTlZTLCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZl KQogICAgewogICAgICAgIE9TWVMsICAgMTYsIAogICAgICAgIFNNSUYsICAgOCwgCiAgICAgICAg UFJNMCwgICA4LCAKICAgICAgICBQUk0xLCAgIDgsIAogICAgICAgIFNDSUYsICAgOCwgCiAgICAg ICAgUFJNMiwgICA4LCAKICAgICAgICBQUk0zLCAgIDgsIAogICAgICAgIExDS0YsICAgOCwgCiAg ICAgICAgUFJNNCwgICA4LCAKICAgICAgICBQUk01LCAgIDgsIAogICAgICAgIFA4MEQsICAgMzIs IAogICAgICAgIExJRFMsICAgOCwgCiAgICAgICAgUFdSUywgICA4LCAKICAgICAgICBEQkdTLCAg IDgsIAogICAgICAgIExJTlgsICAgOCwgCiAgICAgICAgRENLTiwgICA4LCAKICAgICAgICBBQ1RU LCAgIDgsIAogICAgICAgIFBTVlQsICAgOCwgCiAgICAgICAgVEMxViwgICA4LCAKICAgICAgICBU QzJWLCAgIDgsIAogICAgICAgIFRTUFYsICAgOCwgCiAgICAgICAgQ1JUVCwgICA4LCAKICAgICAg ICBEVFNFLCAgIDgsIAogICAgICAgIERUUzEsICAgOCwgCiAgICAgICAgRFRTMiwgICA4LCAKICAg ICAgICBPZmZzZXQgKDB4MUUpLCAKICAgICAgICBCTlVNLCAgIDgsIAogICAgICAgIEIwU0MsICAg OCwgCiAgICAgICAgQjFTQywgICA4LCAKICAgICAgICBCMlNDLCAgIDgsIAogICAgICAgIEIwU1Ms ICAgOCwgCiAgICAgICAgQjFTUywgICA4LCAKICAgICAgICBCMlNTLCAgIDgsIAogICAgICAgIE9m ZnNldCAoMHgyOCksIAogICAgICAgIEFQSUMsICAgOCwgCiAgICAgICAgTVBFTiwgICA4LCAKICAg ICAgICBQQ1AwLCAgIDgsIAogICAgICAgIFBDUDEsICAgOCwgCiAgICAgICAgUFBDTSwgICA4LCAK ICAgICAgICBPZmZzZXQgKDB4MzIpLCAKICAgICAgICBOQVRQLCAgIDgsIAogICAgICAgIENNQVAs ICAgOCwgCiAgICAgICAgQ01CUCwgICA4LCAKICAgICAgICBMUFRQLCAgIDgsIAogICAgICAgIEZE Q1AsICAgOCwgCiAgICAgICAgUkZEViwgICA4LCAKICAgICAgICBIT1RLLCAgIDgsIAogICAgICAg IFJUQ0YsICAgOCwgCiAgICAgICAgVVRJTCwgICA4LCAKICAgICAgICBBQ0lOLCAgIDgsIAogICAg ICAgIElHRFMsICAgOCwgCiAgICAgICAgVExTVCwgICA4LCAKICAgICAgICBDQURMLCAgIDgsIAog ICAgICAgIFBBREwsICAgOCwgCiAgICAgICAgQ1NURSwgICAxNiwgCiAgICAgICAgTlNURSwgICAx NiwgCiAgICAgICAgU1NURSwgICAxNiwgCiAgICAgICAgTkRJRCwgICA4LCAKICAgICAgICBESUQx LCAgIDMyLCAKICAgICAgICBESUQyLCAgIDMyLCAKICAgICAgICBESUQzLCAgIDMyLCAKICAgICAg ICBESUQ0LCAgIDMyLCAKICAgICAgICBESUQ1LCAgIDMyLCAKICAgICAgICBPZmZzZXQgKDB4NjQp LCAKICAgICAgICBCTENTLCAgIDgsIAogICAgICAgIEJSVEwsICAgOCwgCiAgICAgICAgT0REUywg ICA4LCAKICAgICAgICBPZmZzZXQgKDB4NkUpLCAKICAgICAgICBBTFNFLCAgIDgsIAogICAgICAg IEFMQUYsICAgOCwgCiAgICAgICAgTExPVywgICA4LCAKICAgICAgICBMSElILCAgIDgsIAogICAg ICAgIE9mZnNldCAoMHg3OCksIAogICAgICAgIEVNQUUsICAgOCwgCiAgICAgICAgRU1BUCwgICAx NiwgCiAgICAgICAgRU1BTCwgICAxNiwgCiAgICAgICAgT2Zmc2V0ICgweDgyKSwgCiAgICAgICAg TUVGRSwgICA4LCAKICAgICAgICBPZmZzZXQgKDB4OEMpLCAKICAgICAgICBUUE1QLCAgIDgsIAog ICAgICAgIFRQTUUsICAgOCwgCiAgICAgICAgT2Zmc2V0ICgweDk2KSwgCiAgICAgICAgR1RGMCwg ICA1NiwgCiAgICAgICAgR1RGMSwgICA1NiwgCiAgICAgICAgR1RGMiwgICA1NiwgCiAgICAgICAg SURFTSwgICA4LCAKICAgICAgICBJREVULCAgIDgsIAogICAgICAgIE9mZnNldCAoMHhCNCksIAog ICAgICAgIEFTTEIsICAgMzIsIAogICAgICAgIElCVFQsICAgOCwgCiAgICAgICAgSVBBVCwgICA4 LCAKICAgICAgICBJVFZGLCAgIDgsIAogICAgICAgIElUVk0sICAgOCwgCiAgICAgICAgSVBTQywg ICA4LCAKICAgICAgICBJQkxDLCAgIDgsIAogICAgICAgIElCSUEsICAgOCwgCiAgICAgICAgSVNT QywgICA4LCAKICAgICAgICBJNDA5LCAgIDgsIAogICAgICAgIEk1MDksICAgOCwgCiAgICAgICAg STYwOSwgICA4LCAKICAgICAgICBJNzA5LCAgIDgsIAogICAgICAgIElETU0sICAgOCwgCiAgICAg ICAgSURNUywgICA4LCAKICAgICAgICBJRjFFLCAgIDgsIAogICAgICAgIEhWQ08sICAgOCwgCiAg ICAgICAgTlhEMSwgICAzMiwgCiAgICAgICAgTlhEMiwgICAzMiwgCiAgICAgICAgTlhEMywgICAz MiwgCiAgICAgICAgTlhENCwgICAzMiwgCiAgICAgICAgTlhENSwgICAzMiwgCiAgICAgICAgTlhE NiwgICAzMiwgCiAgICAgICAgTlhENywgICAzMiwgCiAgICAgICAgTlhEOCwgICAzMiwgCiAgICAg ICAgT2Zmc2V0ICgweEYwKSwgCiAgICAgICAgRE9DSywgICA4LCAKICAgICAgICBCVEVOLCAgIDgK ICAgIH0KCiAgICBPcGVyYXRpb25SZWdpb24gKEFQTVAsIFN5c3RlbUlPLCAweEIyLCAweDAyKQog ICAgRmllbGQgKEFQTVAsIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICB7CiAgICAgICAg QVBNQywgICA4LCAKICAgICAgICBBUE1TLCAgIDgKICAgIH0KCiAgICBPcGVyYXRpb25SZWdpb24g KFBPU1QsIFN5c3RlbUlPLCAweDgwLCBPbmUpCiAgICBGaWVsZCAoUE9TVCwgQnl0ZUFjYywgTG9j aywgUHJlc2VydmUpCiAgICB7CiAgICAgICAgREJHMCwgICA4CiAgICB9CgogICAgTWV0aG9kIChU UkFQLCAxLCBTZXJpYWxpemVkKQogICAgewogICAgICAgIFN0b3JlIChBcmcwLCBTTUlGKSAvKiBc U01JRiAqLwogICAgICAgIFN0b3JlIChaZXJvLCBUUlAwKSAvKiBcVFJQMCAqLwogICAgICAgIFJl dHVybiAoU01JRikgLyogXFNNSUYgKi8KICAgIH0KCiAgICBNZXRob2QgKF9QSUMsIDEsIE5vdFNl cmlhbGl6ZWQpICAvLyBfUElDOiBJbnRlcnJ1cHQgTW9kZWwKICAgIHsKICAgICAgICBTdG9yZSAo QXJnMCwgUElDTSkgLyogXFBJQ00gKi8KICAgIH0KCiAgICBNZXRob2QgKEdPUywgMCwgTm90U2Vy aWFsaXplZCkKICAgIHsKICAgICAgICBTdG9yZSAoMHgwN0QwLCBPU1lTKSAvKiBcT1NZUyAqLwog ICAgICAgIElmIChDb25kUmVmT2YgKF9PU0kpKQogICAgICAgIHsKICAgICAgICAgICAgSWYgKF9P U0kgKCJMaW51eCIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdG9yZSAoT25lLCBM SU5YKSAvKiBcTElOWCAqLwogICAgICAgICAgICB9CgogICAgICAgICAgICBJZiAoX09TSSAoIldp bmRvd3MgMjAwMSIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdG9yZSAoMHgwN0Qx LCBPU1lTKSAvKiBcT1NZUyAqLwogICAgICAgICAgICB9CgogICAgICAgICAgICBJZiAoX09TSSAo IldpbmRvd3MgMjAwMSBTUDEiKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RvcmUg KDB4MDdEMSwgT1NZUykgLyogXE9TWVMgKi8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgSWYg KF9PU0kgKCJXaW5kb3dzIDIwMDEgU1AyIikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg IFN0b3JlICgweDA3RDIsIE9TWVMpIC8qIFxPU1lTICovCiAgICAgICAgICAgIH0KCiAgICAgICAg ICAgIElmIChfT1NJICgiV2luZG93cyAyMDA2IikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgIFN0b3JlICgweDA3RDYsIE9TWVMpIC8qIFxPU1lTICovCiAgICAgICAgICAgIH0KICAgICAg ICB9CiAgICB9CgogICAgU2NvcGUgKF9HUEUpCiAgICB7CiAgICAgICAgTWV0aG9kIChfTDE4LCAw LCBOb3RTZXJpYWxpemVkKSAgLy8gX0x4eDogTGV2ZWwtVHJpZ2dlcmVkIEdQRQogICAgICAgIHsK ICAgICAgICAgICAgU3RvcmUgKFxfU0IuUENJMC5MUENCLkVDLldBS0UsIExvY2FsMCkKICAgICAg ICAgICAgSW5jcmVtZW50IChMb2NhbDApCiAgICAgICAgfQogICAgfQoKICAgIE1ldGhvZCAoUE5P VCwgMCwgTm90U2VyaWFsaXplZCkKICAgIHsKICAgICAgICBJZiAoTVBFTikKICAgICAgICB7CiAg ICAgICAgICAgIElmIChBbmQgKFBEQzAsIDB4MDgpKQogICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICBOb3RpZnkgKFxfUFIuQ1AwMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAg ICAgICAgSWYgKEFuZCAoUERDMCwgMHgxMCkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgU2xlZXAgKDB4NjQpCiAgICAgICAgICAgICAgICAgICAgTm90aWZ5IChcX1BSLkNQ MDAsIDB4ODEpIC8vIEluZm9ybWF0aW9uIENoYW5nZQogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICB9CgogICAgICAgICAgICBJZiAoQW5kIChQREMxLCAweDA4KSkKICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgTm90aWZ5IChcX1BSLkNQMDEsIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UK ICAgICAgICAgICAgICAgIElmIChBbmQgKFBEQzEsIDB4MTApKQogICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgIFNsZWVwICgweDY0KQogICAgICAgICAgICAgICAgICAgIE5vdGlm eSAoXF9QUi5DUDAxLCAweDgxKSAvLyBJbmZvcm1hdGlvbiBDaGFuZ2UKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBFbHNlCiAgICAgICAgewogICAgICAg ICAgICBOb3RpZnkgKFxfUFIuQ1AwMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAg ICBTbGVlcCAoMHg2NCkKICAgICAgICAgICAgTm90aWZ5IChcX1BSLkNQMDAsIDB4ODEpIC8vIElu Zm9ybWF0aW9uIENoYW5nZQogICAgICAgIH0KICAgIH0KCiAgICBTY29wZSAoX1NCKQogICAgewog ICAgICAgIERldmljZSAoUENJMCkKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVp c2FJZCAoIlBOUDBBMDgiKSAvKiBQQ0kgRXhwcmVzcyBCdXMgKi8pICAvLyBfSElEOiBIYXJkd2Fy ZSBJRAogICAgICAgICAgICBOYW1lIChfQ0lELCBFaXNhSWQgKCJQTlAwQTAzIikgLyogUENJIEJ1 cyAqLykgIC8vIF9DSUQ6IENvbXBhdGlibGUgSUQKICAgICAgICAgICAgTmFtZSAoX0FEUiwgWmVy bykgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgTmFtZSAoX0JCTiwgWmVybykgIC8vIF9C Qk46IEJJT1MgQnVzIE51bWJlcgogICAgICAgICAgICBEZXZpY2UgKE1DSEMpCiAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIFplcm8pICAvLyBfQURSOiBBZGRyZXNzCiAg ICAgICAgICAgICAgICBPcGVyYXRpb25SZWdpb24gKE1DSFAsIFBDSV9Db25maWcsIFplcm8sIDB4 MDEwMCkKICAgICAgICAgICAgICAgIEZpZWxkIChNQ0hQLCBEV29yZEFjYywgTm9Mb2NrLCBQcmVz ZXJ2ZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4NDAp LCAKICAgICAgICAgICAgICAgICAgICBFUEVOLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAg ICAsICAgMTEsIAogICAgICAgICAgICAgICAgICAgIEVQQlIsICAgMjAsIAogICAgICAgICAgICAg ICAgICAgIE1IRU4sICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICwgICAxMywgCiAgICAg ICAgICAgICAgICAgICAgTUhCUiwgICAxOCwgCiAgICAgICAgICAgICAgICAgICAgUFhFTiwgICAx LCAKICAgICAgICAgICAgICAgICAgICBQWFNaLCAgIDIsIAogICAgICAgICAgICAgICAgICAgICAg ICAsICAgMjMsIAogICAgICAgICAgICAgICAgICAgIFBYQlIsICAgNiwgCiAgICAgICAgICAgICAg ICAgICAgRE1FTiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDExLCAKICAgICAg ICAgICAgICAgICAgICBETUJSLCAgIDIwLCAKICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4 OTApLCAKICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDQsIAogICAgICAgICAgICAgICAgICAg IFBNMEgsICAgMiwgCiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDkxKSwgCiAgICAgICAg ICAgICAgICAgICAgUE0xTCwgICAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAog ICAgICAgICAgICAgICAgICAgIFBNMUgsICAgMiwgCiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0 ICgweDkyKSwgCiAgICAgICAgICAgICAgICAgICAgUE0yTCwgICAyLCAKICAgICAgICAgICAgICAg ICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgIFBNMkgsICAgMiwgCiAgICAgICAg ICAgICAgICAgICAgT2Zmc2V0ICgweDkzKSwgCiAgICAgICAgICAgICAgICAgICAgUE0zTCwgICAy LCAKICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgIFBN M0gsICAgMiwgCiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDk0KSwgCiAgICAgICAgICAg ICAgICAgICAgUE00TCwgICAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAogICAg ICAgICAgICAgICAgICAgIFBNNEgsICAgMiwgCiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgw eDk1KSwgCiAgICAgICAgICAgICAgICAgICAgUE01TCwgICAyLCAKICAgICAgICAgICAgICAgICAg ICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgIFBNNUgsICAgMiwgCiAgICAgICAgICAg ICAgICAgICAgT2Zmc2V0ICgweDk2KSwgCiAgICAgICAgICAgICAgICAgICAgUE02TCwgICAyLCAK ICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgIFBNNkgs ICAgMiwgCiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDk3KSwgCiAgICAgICAgICAgICAg ICAgICAgT2Zmc2V0ICgweDlDKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICwgICAzLCAKICAg ICAgICAgICAgICAgICAgICBUTFVELCAgIDUsIAogICAgICAgICAgICAgICAgICAgIE9mZnNldCAo MHhBMCksIAogICAgICAgICAgICAgICAgICAgIFRPTSwgICAgMTYKICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgfQoKICAgICAgICAgICAgTmFtZSAoTUNSUywgUmVzb3VyY2VUZW1wbGF0ZSAo KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBXb3JkQnVzTnVtYmVyIChSZXNvdXJjZVBy b2R1Y2VyLCBNaW5GaXhlZCwgTWF4Rml4ZWQsIFBvc0RlY29kZSwKICAgICAgICAgICAgICAgICAg ICAweDAwMDAsICAgICAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAg MHgwMDAwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAg MHgwMEZGLCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAg MHgwMDAwLCAgICAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAg ICAgICAweDAxMDAsICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICws ICkKICAgICAgICAgICAgICAgIERXb3JkSU8gKFJlc291cmNlUHJvZHVjZXIsIE1pbkZpeGVkLCBN YXhGaXhlZCwgUG9zRGVjb2RlLCBFbnRpcmVSYW5nZSwKICAgICAgICAgICAgICAgICAgICAweDAw MDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDAw MDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAw MENGNywgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAw MDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAw eDAwMDAwQ0Y4LCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgVHlw ZVN0YXRpYykKICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAg ICAweDBDRjgsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAg ICAweDBDRjgsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAg ICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgIDB4 MDgsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgRFdvcmRJTyAoUmVzb3VyY2VQcm9kdWNlciwgTWluRml4ZWQsIE1heEZpeGVkLCBQ b3NEZWNvZGUsIEVudGlyZVJhbmdlLAogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAg ICAgICAgLy8gR3JhbnVsYXJpdHkKICAgICAgICAgICAgICAgICAgICAweDAwMDAwRDAwLCAgICAg ICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAweDAwMDBGRkZGLCAgICAg ICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAg ICAgIC8vIFRyYW5zbGF0aW9uIE9mZnNldAogICAgICAgICAgICAgICAgICAgIDB4MDAwMEYzMDAs ICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgLCwgLCBUeXBlU3RhdGljKQog ICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwg TWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAg ICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAg ICAgMHgwMDBBMDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAg ICAgMHgwMDBCRkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAg ICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAg ICAgICAgICAweDAwMDIwMDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAg ICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdv cmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVk LCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAg ICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDMDAwMCwgICAg ICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBDM0ZGRiwgICAg ICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAg ICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAw LCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVzc1Jhbmdl TWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNl UHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRX cml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFy aXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDNDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5p bXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBDN0ZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhp bXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlv biBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0 aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGlj KQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29k ZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAg ICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAg ICAgICAgMHgwMDBDODAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAg ICAgICAgMHgwMDBDQkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAg ICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAg ICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAg ICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAg RFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZp eGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAw LCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDQzAwMCwg ICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBDRkZGRiwg ICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwg ICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0 MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVzc1Jh bmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291 cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJl YWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51 bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBEMDAwMCwgICAgICAgICAvLyBSYW5nZSBN aW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBEM0ZGRiwgICAgICAgICAvLyBSYW5nZSBN YXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xh dGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExl bmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3Rh dGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0Rl Y29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAg ICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAg ICAgICAgICAgMHgwMDBENDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAg ICAgICAgICAgMHgwMDBEN0ZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAg ICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAg ICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAg ICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAg ICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1h eEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAw MDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBEODAw MCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBEQkZG RiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAw MCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAw MDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVz c1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJl c291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUs IFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdy YW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBEQzAwMCwgICAgICAgICAvLyBSYW5n ZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBERkZGRiwgICAgICAgICAvLyBSYW5n ZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFu c2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8v IExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBl U3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBv c0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAg ICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAg ICAgICAgICAgICAgMHgwMDBFMDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAg ICAgICAgICAgICAgMHgwMDBFM0ZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAg ICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAg ICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAg ICAgICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAg ICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQs IE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAw MDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBF NDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBF N0ZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAw MDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAw eDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRk cmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkg KFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFi bGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8v IEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBFODAwMCwgICAgICAgICAvLyBS YW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBFQkZGRiwgICAgICAgICAvLyBS YW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBU cmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAg IC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBU eXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIs IFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAg ICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAg ICAgICAgICAgICAgICAgMHgwMDBFQzAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAg ICAgICAgICAgICAgICAgMHgwMDBFRkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAg ICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQK ICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAg ICAgICAgICAgICAgICwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAg ICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4 ZWQsIE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAw eDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgw MDBGMDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgw MDBGRkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgw MDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAg ICAweDAwMDEwMDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsICwg QWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1v cnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBDYWNo ZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAg IC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAv LyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHhGRUJGRkZGRiwgICAgICAgICAv LyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAv LyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweEZFQzAwMDAwLCAgICAg ICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsIF9ZMDAsIEFkZHJlc3NSYW5nZU1l bW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAgICAgICAgIERXb3JkTWVtb3J5IChSZXNvdXJjZVBy b2R1Y2VyLCBQb3NEZWNvZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgQ2FjaGVhYmxlLCBSZWFkV3Jp dGUsCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBHcmFudWxhcml0 eQogICAgICAgICAgICAgICAgICAgIDB4RkVENDAwMDAsICAgICAgICAgLy8gUmFuZ2UgTWluaW11 bQogICAgICAgICAgICAgICAgICAgIDB4RkVENDRGRkYsICAgICAgICAgLy8gUmFuZ2UgTWF4aW11 bQogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gVHJhbnNsYXRpb24g T2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwNTAwMCwgICAgICAgICAvLyBMZW5ndGgK ICAgICAgICAgICAgICAgICAgICAsLCAsIEFkZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRpYykK ICAgICAgICAgICAgfSkKICAgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBTZXJpYWxpemVkKSAg Ly8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICBDcmVhdGVEV29yZEZpZWxkIChNQ1JTLCBcX1NCLlBDSTAuX1kwMC5fTUlOLCBQTUlO KSAgLy8gX01JTjogTWluaW11bSBCYXNlIEFkZHJlc3MKICAgICAgICAgICAgICAgIENyZWF0ZURX b3JkRmllbGQgKE1DUlMsIFxfU0IuUENJMC5fWTAwLl9NQVgsIFBNQVgpICAvLyBfTUFYOiBNYXhp bXVtIEJhc2UgQWRkcmVzcwogICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoTUNSUywg XF9TQi5QQ0kwLl9ZMDAuX0xFTiwgUExFTikgIC8vIF9MRU46IExlbmd0aAogICAgICAgICAgICAg ICAgU2hpZnRMZWZ0ICheTUNIQy5UTFVELCAweDFCLCBQTUlOKSAvKiBcX1NCXy5QQ0kwLl9DUlMu UE1JTiAqLwogICAgICAgICAgICAgICAgQWRkIChTdWJ0cmFjdCAoUE1BWCwgUE1JTiksIE9uZSwg UExFTikgLyogXF9TQl8uUENJMC5fQ1JTLlBMRU4gKi8KICAgICAgICAgICAgICAgIFJldHVybiAo TUNSUykgLyogXF9TQl8uUENJMC5NQ1JTICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1l dGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxl CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmIChQSUNNKQogICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgIFJldHVybiAoUGFja2FnZSAoMHgwRCkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMkZGRkYs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAKICAgICAgICAg ICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0 KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAwMUJGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEK ICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICBQYWNr YWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAwMUNGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDE0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMDFDRkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDE1CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFDRkZGRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgxNgogICAgICAgICAgICAgICAgICAgICAgICB9LCAK CiAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxQ0ZGRkYsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcKICAgICAgICAgICAgICAgICAg ICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMURGRkZG LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwCiAgICAgICAg ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwMDFERkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEx CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFj a2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDFERkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgxMgogICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAg ICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAxREZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MTMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUZGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3CiAgICAgICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFGRkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg WmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwCiAgICAgICAgICAgICAgICAg ICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFGRkZG RiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAogICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MEQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDJGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXkxQQ0IuTE5L QSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFCRkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgXkxQQ0IuTE5LQiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAg ICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAo MHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMDFDRkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF5MUENCLkxOS0UsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAg ICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAxQ0ZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5MUENCLkxOS0YsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxQ0ZGRkYsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeTFBD Qi5MTktHLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAg ICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUNG RkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgXkxQQ0IuTE5LSCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJv CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgUGFj a2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDFERkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5MUENCLkxOS0EsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAg ICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxREZGRkYsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5MUENCLkxOS0IsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICB9 LCAKCiAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxREZGRkYsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeTFBDQi5MTktDLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAg ICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0 KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAwMURGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgXkxQQ0IuTE5LRCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAg ICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDFGRkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5MUENCLkxOS0gsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAg ICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxRkZGRkYsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5MUENCLkxO S0EsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAg ICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxRkZGRkYs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeTFBDQi5MTktBLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAg ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX09TQywgNCwgTm90U2Vy aWFsaXplZCkgIC8vIF9PU0M6IE9wZXJhdGluZyBTeXN0ZW0gQ2FwYWJpbGl0aWVzCiAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzMsIFplcm8sIENEVzEp CiAgICAgICAgICAgICAgICBDcmVhdGVEV29yZEZpZWxkIChBcmczLCAweDA0LCBDRFcyKQogICAg ICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoQXJnMywgMHgwOCwgQ0RXMykKICAgICAgICAg ICAgICAgIElmIChMRXF1YWwgKEFyZzAsIFRvVVVJRCAoIjMzZGI0ZDViLTFmZjctNDAxYy05NjU3 LTc0NDFjMDNkZDc2NiIpIC8qIFBDSSBIb3N0IEJyaWRnZSBEZXZpY2UgKi8pKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgIFJldHVybiAoQXJnMykKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICBPciAoQ0RXMSwgMHgwNCwgQ0RXMSkgLyogXF9TQl8uUENJMC5fT1NDLkNEVzEgKi8KICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKEFyZzMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgIH0KCiAgICAgICAgICAgIERldmljZSAoUERSQykKICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMwMiIpIC8qIFBOUCBNb3RoZXJib2FyZCBS ZXNvdXJjZXMgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgTmFtZSAo X1VJRCwgT25lKSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgICAgICBOYW1lIChQRFJT LCBSZXNvdXJjZVRlbXBsYXRlICgpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgTWVtb3J5MzJGaXhlZCAoUmVhZFdyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAweEZF RDFDMDAwLCAgICAgICAgIC8vIEFkZHJlc3MgQmFzZQogICAgICAgICAgICAgICAgICAgICAgICAw eDAwMDA0MDAwLCAgICAgICAgIC8vIEFkZHJlc3MgTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAg ICAgICkKICAgICAgICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkIChSZWFkV3JpdGUsCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkVEMTQwMDAsICAgICAgICAgLy8gQWRkcmVzcyBCYXNlCiAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDQwMDAsICAgICAgICAgLy8gQWRkcmVzcyBMZW5n dGgKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIE1lbW9yeTMy Rml4ZWQgKFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRUQxODAwMCwgICAg ICAgICAvLyBBZGRyZXNzIEJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMCwg ICAgICAgICAvLyBBZGRyZXNzIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAg ICAgICAgICAgICAgICAgTWVtb3J5MzJGaXhlZCAoUmVhZFdyaXRlLAogICAgICAgICAgICAgICAg ICAgICAgICAweEZFRDE5MDAwLCAgICAgICAgIC8vIEFkZHJlc3MgQmFzZQogICAgICAgICAgICAg ICAgICAgICAgICAweDAwMDAxMDAwLCAgICAgICAgIC8vIEFkZHJlc3MgTGVuZ3RoCiAgICAgICAg ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkIChSZWFk V3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIDB4RjAwMDAwMDAsICAgICAgICAgLy8gQWRk cmVzcyBCYXNlCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwMDAwMDAsICAgICAgICAgLy8g QWRkcmVzcyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg ICAgIE1lbW9yeTMyRml4ZWQgKFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgMHhG RUQyMDAwMCwgICAgICAgICAvLyBBZGRyZXNzIEJhc2UKICAgICAgICAgICAgICAgICAgICAgICAg MHgwMDAyMDAwMCwgICAgICAgICAvLyBBZGRyZXNzIExlbmd0aAogICAgICAgICAgICAgICAgICAg ICAgICApCiAgICAgICAgICAgICAgICAgICAgTWVtb3J5MzJGaXhlZCAoUmVhZFdyaXRlLAogICAg ICAgICAgICAgICAgICAgICAgICAweEZFRDQwMDAwLCAgICAgICAgIC8vIEFkZHJlc3MgQmFzZQog ICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA1MDAwLCAgICAgICAgIC8vIEFkZHJlc3MgTGVu Z3RoCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBNZW1vcnkz MkZpeGVkIChSZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkVENDUwMDAsICAg ICAgICAgLy8gQWRkcmVzcyBCYXNlCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNEIwMDAs ICAgICAgICAgLy8gQWRkcmVzcyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgU2VyaWFsaXpl ZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBEUlMpIC8qIFxfU0JfLlBDSTAuUERSQy5QRFJT ICovCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERldmljZSAo UEVHUCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDAxMDAw MCkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90 U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgSWYgKFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdl ICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgxMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkK ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQYWNrYWdlICgweDA0 KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ YWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxOS0EsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktCLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXl5MUENCLkxOS0MsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpl cm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQQ0Iu TE5LRCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGV2 aWNlIChHRlgwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAw MDIwMDAwKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgTmFtZSAoQlJJRywgUGFj a2FnZSAoMHgxMikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAweDBGLCAK ICAgICAgICAgICAgICAgICAgICAweDBGLCAKICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAg ICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAg ICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAgICAgIDB4MDQsIAogICAgICAgICAg ICAgICAgICAgIDB4MDUsIAogICAgICAgICAgICAgICAgICAgIDB4MDYsIAogICAgICAgICAgICAg ICAgICAgIDB4MDcsIAogICAgICAgICAgICAgICAgICAgIDB4MDgsIAogICAgICAgICAgICAgICAg ICAgIDB4MDksIAogICAgICAgICAgICAgICAgICAgIDB4MEEsIAogICAgICAgICAgICAgICAgICAg IDB4MEIsIAogICAgICAgICAgICAgICAgICAgIDB4MEMsIAogICAgICAgICAgICAgICAgICAgIDB4 MEQsIAogICAgICAgICAgICAgICAgICAgIDB4MEUsIAogICAgICAgICAgICAgICAgICAgIDB4MEYK ICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICBNZXRob2QgKFhCQ00sIDEsIE5vdFNl cmlhbGl6ZWQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgU3RvcmUgKE9y IChTaGlmdExlZnQgKEFyZzAsIDB4MDQpLCAweDBGKSwgXl5EU1BDLkJSVEMpIC8qIFxfU0JfLlBD STAuRFNQQy5CUlRDICovCiAgICAgICAgICAgICAgICAgICAgVFJBUCAoMHgwMykKICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICBNZXRob2QgKFhCUUMsIDAsIE5vdFNlcmlhbGl6ZWQp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgU3RvcmUgKF5eRFNQQy5CUlRD LCBMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgU2hpZnRSaWdodCAoTG9jYWwwLCAweDA0LCBM b2NhbDApCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChMb2NhbDApCiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgTmFtZSAoQlJDVCwgWmVybykKICAgICAgICAgICAgICAgIE1l dGhvZCAoQlJJRCwgMSwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICBTdG9yZSAoTWF0Y2ggKEJSSUcsIE1FUSwgQXJnMCwgTVRSLCBaZXJvLCAweDAy KSwgTG9jYWwwKQogICAgICAgICAgICAgICAgICAgIElmIChMRXF1YWwgKExvY2FsMCwgT25lcykp CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFN1 YnRyYWN0IChTaXplT2YgKEJSSUcpLCBPbmUpKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgUmV0dXJuIChMb2NhbDApCiAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgTWV0aG9kIChYQkNMLCAwLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgIFN0b3JlIChPbmUsIEJSQ1QpIC8qIFxfU0JfLlBDSTAuR0ZY MC5CUkNUICovCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChCUklHKSAvKiBcX1NCXy5QQ0kw LkdGWDAuQlJJRyAqLwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE1ldGhvZCAo X0RPUywgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9ET1M6IERpc2FibGUgT3V0cHV0IFN3aXRjaGlu ZwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFN0b3JlIChBbmQgKEFyZzAs IDB4MDcpLCBEU0VOKSAvKiBcRFNFTiAqLwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIE1ldGhvZCAoREVDQiwgMCwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICBJZiAoQlJDVCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIE5vdGlmeSAoTENEMCwgMHg4NykgLy8gRGV2aWNlLVNwZWNpZmljCiAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChCUklEIChYQlFDICgpKSwg TG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICBJZiAoTE5vdEVxdWFsIChMb2NhbDAsIDB4 MDIpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEZWNyZW1lbnQgKExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgWEJDTSAoRGVyZWZPZiAoSW5kZXggKEJSSUcsIExvY2FsMCkpKQogICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBNZXRo b2QgKElOQ0IsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgSWYgKEJSQ1QpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICBOb3RpZnkgKExDRDAsIDB4ODYpIC8vIERldmljZS1TcGVjaWZpYwogICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoQlJJRCAoWEJRQyAoKSksIExvY2FsMCkK ICAgICAgICAgICAgICAgICAgICAgICAgSWYgKExOb3RFcXVhbCAoTG9jYWwwLCBTdWJ0cmFjdCAo U2l6ZU9mIChCUklHKSwgT25lKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluY3JlbWVudCAoTG9jYWwwKQogICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBYQkNNIChEZXJlZk9mIChJbmRleCAoQlJJ RywgTG9jYWwwKSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgIE1ldGhvZCAoWERDUywgMSwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICBUUkFQIChPbmUpCiAgICAgICAgICAgICAgICAgICAg SWYgKEFuZCAoQ1NURSwgU2hpZnRMZWZ0IChPbmUsIEFyZzApKSkKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgxRikKICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgxRCkKICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICBNZXRob2QgKFhER1MsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYgKEFuZCAoTlNURSwgU2hpZnRMZWZ0 IChPbmUsIEFyZzApKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE1ldGhv ZCAoWERTUywgMiwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBJZiAoTEVxdWFsIChBbmQgKEFyZzAsIDB4QzAwMDAwMDApLCAweEMwMDAwMDAwKSkK ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChOU1RF LCBDU1RFKSAvKiBcQ1NURSAqLwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGV2aWNlIChEU1BDKQogICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAwMDIwMDAxKSAgLy8gX0FEUjogQWRkcmVz cwogICAgICAgICAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChEU1BDLCBQQ0lfQ29uZmlnLCBaZXJv LCAweDAxMDApCiAgICAgICAgICAgICAgICBGaWVsZCAoRFNQQywgQnl0ZUFjYywgTm9Mb2NrLCBQ cmVzZXJ2ZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4 RjQpLCAKICAgICAgICAgICAgICAgICAgICBCUlRDLCAgIDgKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgfQoKICAgICAgICAgICAgU2NvcGUgKFwpCiAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoSU9fVCwgU3lzdGVtSU8sIDB4MDgwMCwgMHgxMCkKICAg ICAgICAgICAgICAgIEZpZWxkIChJT19ULCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgwOCksIAogICAgICAg ICAgICAgICAgICAgIFRSUDAsICAgOAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg IE9wZXJhdGlvblJlZ2lvbiAoUE1JTywgU3lzdGVtSU8sIDB4MDUwMCwgMHg4MCkKICAgICAgICAg ICAgICAgIEZpZWxkIChQTUlPLCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHg0MiksIAogICAgICAgICAgICAg ICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1BFQywgICAxLCAKICAgICAg ICAgICAgICAgICAgICAgICAgLCAgIDksIAogICAgICAgICAgICAgICAgICAgIFNDSVMsICAgMSwg CiAgICAgICAgICAgICAgICAgICAgICAgICwgICA2CiAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChHUElPLCBTeXN0ZW1JTywgMHgwNDgwLCAweDNDKQog ICAgICAgICAgICAgICAgRmllbGQgKEdQSU8sIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgR1UwMCwgICA4LCAKICAgICAgICAg ICAgICAgICAgICBHVTAxLCAgIDgsIAogICAgICAgICAgICAgICAgICAgIEdVMDIsICAgOCwgCiAg ICAgICAgICAgICAgICAgICAgR1UwMywgICA4LCAKICAgICAgICAgICAgICAgICAgICBHSU8wLCAg IDgsIAogICAgICAgICAgICAgICAgICAgIEdJTzEsICAgOCwgCiAgICAgICAgICAgICAgICAgICAg R0lPMiwgICA4LCAKICAgICAgICAgICAgICAgICAgICBHSU8zLCAgIDgsIAogICAgICAgICAgICAg ICAgICAgIE9mZnNldCAoMHgwQyksIAogICAgICAgICAgICAgICAgICAgIEdQMDAsICAgMSwgCiAg ICAgICAgICAgICAgICAgICAgR1AwMSwgICAxLCAKICAgICAgICAgICAgICAgICAgICBHUDAyLCAg IDEsIAogICAgICAgICAgICAgICAgICAgIEdQMDMsICAgMSwgCiAgICAgICAgICAgICAgICAgICAg R1AwNCwgICAxLCAKICAgICAgICAgICAgICAgICAgICBHUDA1LCAgIDEsIAogICAgICAgICAgICAg ICAgICAgIEdQMDYsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1AwNywgICAxLCAKICAgICAg ICAgICAgICAgICAgICBHUDA4LCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMDksICAgMSwg CiAgICAgICAgICAgICAgICAgICAgR1AxMCwgICAxLCAKICAgICAgICAgICAgICAgICAgICBHUDEx LCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMTIsICAgMSwgCiAgICAgICAgICAgICAgICAg ICAgR1AxMywgICAxLCAKICAgICAgICAgICAgICAgICAgICBHUDE0LCAgIDEsIAogICAgICAgICAg ICAgICAgICAgIEdQMTUsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1AxNiwgICAxLCAKICAg ICAgICAgICAgICAgICAgICBHUDE3LCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMTgsICAg MSwgCiAgICAgICAgICAgICAgICAgICAgR1AxOSwgICAxLCAKICAgICAgICAgICAgICAgICAgICBH UDIwLCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMjEsICAgMSwgCiAgICAgICAgICAgICAg ICAgICAgR1AyMiwgICAxLCAKICAgICAgICAgICAgICAgICAgICBHUDIzLCAgIDEsIAogICAgICAg ICAgICAgICAgICAgIEdQMjQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1AyNSwgICAxLCAK ICAgICAgICAgICAgICAgICAgICBHUDI2LCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMjcs ICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1AyOCwgICAxLCAKICAgICAgICAgICAgICAgICAg ICBHUDI5LCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMzAsICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgR1AzMSwgICAxLCAKICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4MTgpLCAK ICAgICAgICAgICAgICAgICAgICBHQjAwLCAgIDgsIAogICAgICAgICAgICAgICAgICAgIEdCMDEs ICAgOCwgCiAgICAgICAgICAgICAgICAgICAgR0IwMiwgICA4LCAKICAgICAgICAgICAgICAgICAg ICBHQjAzLCAgIDgsIAogICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgyQyksIAogICAgICAg ICAgICAgICAgICAgIEdJVjAsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgR0lWMSwgICA4LCAK ICAgICAgICAgICAgICAgICAgICBHSVYyLCAgIDgsIAogICAgICAgICAgICAgICAgICAgIEdJVjMs ICAgOCwgCiAgICAgICAgICAgICAgICAgICAgR1UwNCwgICA4LCAKICAgICAgICAgICAgICAgICAg ICBHVTA1LCAgIDgsIAogICAgICAgICAgICAgICAgICAgIEdVMDYsICAgOCwgCiAgICAgICAgICAg ICAgICAgICAgR1UwNywgICA4LCAKICAgICAgICAgICAgICAgICAgICBHSU80LCAgIDgsIAogICAg ICAgICAgICAgICAgICAgIEdJTzUsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgR0lPNiwgICA4 LCAKICAgICAgICAgICAgICAgICAgICBHSU83LCAgIDgsIAogICAgICAgICAgICAgICAgICAgIEdQ MzIsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1AzMywgICAxLCAKICAgICAgICAgICAgICAg ICAgICBHUDM0LCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEdQMzUsICAgMSwgCiAgICAgICAg ICAgICAgICAgICAgR1AzNiwgICAxLCAKICAgICAgICAgICAgICAgICAgICBHUDM3LCAgIDEsIAog ICAgICAgICAgICAgICAgICAgIEdQMzgsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgR1AzOSwg ICAxLCAKICAgICAgICAgICAgICAgICAgICBHTDA1LCAgIDgsIAogICAgICAgICAgICAgICAgICAg IEdMMDYsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgR0wwNywgICA4CiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChSQ1JCLCBTeXN0ZW1NZW1vcnks IDB4RkVEMUMwMDAsIDB4NDAwMCkKICAgICAgICAgICAgICAgIEZpZWxkIChSQ1JCLCBEV29yZEFj YywgTG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg T2Zmc2V0ICgweDEwMDApLCAKICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4MzAwMCksIAog ICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgzNDA0KSwgCiAgICAgICAgICAgICAgICAgICAg SFBBUywgICAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDUsIAogICAgICAgICAgICAg ICAgICAgIEhQVEUsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDM0MTgpLCAK ICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDEsIAogICAgICAgICAgICAgICAgICAgIFBBVEQs ICAgMSwgCiAgICAgICAgICAgICAgICAgICAgU0FURCwgICAxLCAKICAgICAgICAgICAgICAgICAg ICBTTUJELCAgIDEsIAogICAgICAgICAgICAgICAgICAgIEhEQUQsICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgQTk3RCwgICAxLCAKICAgICAgICAgICAgICAgICAgICBNOTdELCAgIDEsIAogICAg ICAgICAgICAgICAgICAgIElMTkQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgVVMxRCwgICAx LCAKICAgICAgICAgICAgICAgICAgICBVUzJELCAgIDEsIAogICAgICAgICAgICAgICAgICAgIFVT M0QsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgVVM0RCwgICAxLCAKICAgICAgICAgICAgICAg ICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgIExQQkQsICAgMSwgCiAgICAgICAg ICAgICAgICAgICAgRUhDRCwgICAxLCAKICAgICAgICAgICAgICAgICAgICBSUDFELCAgIDEsIAog ICAgICAgICAgICAgICAgICAgIFJQMkQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgUlAzRCwg ICAxLCAKICAgICAgICAgICAgICAgICAgICBSUDRELCAgIDEsIAogICAgICAgICAgICAgICAgICAg IFJQNUQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgUlA2RCwgICAxCiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERldmljZSAoSERFRikKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFCMDAwMCkgIC8vIF9BRFI6IEFkZHJl c3MKICAgICAgICAgICAgICAgIE5hbWUgKF9QUlcsIFBhY2thZ2UgKDB4MDIpICAvLyBfUFJXOiBQ b3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAweDA1LCAKICAgICAgICAgICAgICAgICAgICAweDA0CiAgICAgICAgICAgICAgICB9KQog ICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKFJQMDEpCiAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAxQzAwMDApICAvLyBfQURSOiBBZGRyZXNzCiAg ICAgICAgICAgICAgICBNZXRob2QgKF9QUlQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJUOiBQ Q0kgUm91dGluZyBUYWJsZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElm IChQSUNNKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmV0 dXJuIChQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9u ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgxMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgIFJldHVybiAoUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZG RkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktBLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeXkxQQ0IuTE5LQiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktDLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxOS0QsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERldmljZSAoUlAwMikKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFDMDAwMSkgIC8vIF9BRFI6IEFkZHJl c3MKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9Q UlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgSWYgKFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICBSZXR1cm4gKFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ YWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDEyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZG RiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgxMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgUmV0dXJuIChQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxOS0IsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF5eTFBDQi5MTktDLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJv CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxO S0QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4 MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5LQSwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGV2aWNlIChSUDAzKQogICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAwMUMwMDAyKSAgLy8gX0FEUjog QWRkcmVzcwogICAgICAgICAgICAgICAgTWV0aG9kIChfUFJULCAwLCBOb3RTZXJpYWxpemVkKSAg Ly8gX1BSVDogUENJIFJvdXRpbmcgVGFibGUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBJZiAoUElDTSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIFJldHVybiAoUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5LQywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXl5MUENCLkxOS0QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFplcm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQ Q0IuTE5LQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktCLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKFJQMDQpCiAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAxQzAwMDMpICAvLyBf QURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlQsIDAsIE5vdFNlcmlhbGl6 ZWQpICAvLyBfUFJUOiBQQ0kgUm91dGluZyBUYWJsZQogICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIElmIChQSUNNKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZG RiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgxMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE9uZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUGFja2FnZSAoMHgwNCkKICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAo MHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktELCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZG RiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5LQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5eTFBDQi5MTktCLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ YWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxOS0MsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERldmljZSAoUlAw NSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFDMDAwNCkg IC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2Vy aWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgSWYgKFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgxMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNr YWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxOS0EsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktCLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXl5MUENCLkxOS0MsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5L RCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGV2aWNl IChSUDA2KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAwMUMw MDA1KSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgTWV0aG9kIChfUFJULCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX1BSVDogUENJIFJvdXRpbmcgVGFibGUKICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICBJZiAoUElDTSkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2th Z2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDEzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAK CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9 KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4 MDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5LQiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxOS0MsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeXkxQQ0IuTE5LRCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBD Qi5MTktBLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBE ZXZpY2UgKFVTQjEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4 MDAxRDAwMDApICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICBPcGVyYXRpb25SZWdp b24gKFUwMVAsIFBDSV9Db25maWcsIFplcm8sIDB4MDEwMCkKICAgICAgICAgICAgICAgIEZpZWxk IChVMDFQLCBEV29yZEFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4QzQpLCAKICAgICAgICAgICAgICAgICAgICBVMVdF LCAgIDIKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBOYW1lIChfUFJXLCBQYWNr YWdlICgweDAyKSAgLy8gX1BSVzogUG93ZXIgUmVzb3VyY2VzIGZvciBXYWtlCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgMHgw NAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BTVywgMSwgTm90 U2VyaWFsaXplZCkgIC8vIF9QU1c6IFBvd2VyIFN0YXRlIFdha2UKICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICBJZiAoQXJnMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIFN0b3JlICgweDAzLCBVMVdFKSAvKiBcX1NCXy5QQ0kwLlVTQjEu VTFXRSAqLwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoWmVybywg VTFXRSkgLyogXF9TQl8uUENJMC5VU0IxLlUxV0UgKi8KICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTWV0aG9kIChfUzNELCAwLCBOb3RTZXJp YWxpemVkKSAgLy8gX1MzRDogUzMgRGV2aWNlIFN0YXRlCiAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgUmV0dXJuICgweDAyKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgIE1ldGhvZCAoX1M0RCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TNEQ6IFM0IERldmlj ZSBTdGF0ZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgw MikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGV2aWNlIChV U0IyKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAwMUQwMDAx KSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChVMDJQ LCBQQ0lfQ29uZmlnLCBaZXJvLCAweDAxMDApCiAgICAgICAgICAgICAgICBGaWVsZCAoVTAyUCwg RFdvcmRBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgT2Zmc2V0ICgweEM0KSwgCiAgICAgICAgICAgICAgICAgICAgVTJXRSwgICAyCiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTmFtZSAoX1BSVywgUGFja2FnZSAoMHgw MikgIC8vIF9QUlc6IFBvd2VyIFJlc291cmNlcyBmb3IgV2FrZQogICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAgICAgICAgIDB4MDQKICAgICAg ICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICBNZXRob2QgKF9QU1csIDEsIE5vdFNlcmlhbGl6 ZWQpICAvLyBfUFNXOiBQb3dlciBTdGF0ZSBXYWtlCiAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgSWYgKEFyZzApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICBTdG9yZSAoMHgwMywgVTJXRSkgLyogXF9TQl8uUENJMC5VU0IyLlUyV0UgKi8K ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKFplcm8sIFUyV0UpIC8q IFxfU0JfLlBDSTAuVVNCMi5VMldFICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1MzRCwgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9TM0Q6IFMzIERldmljZSBTdGF0ZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIFJldHVybiAoMHgwMikKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBN ZXRob2QgKF9TNEQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUzREOiBTNCBEZXZpY2UgU3RhdGUK ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDIpCiAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERldmljZSAoVVNCMykKICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFEMDAwMikgIC8vIF9B RFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoVTAzUCwgUENJX0Nv bmZpZywgWmVybywgMHgwMTAwKQogICAgICAgICAgICAgICAgRmllbGQgKFUwM1AsIERXb3JkQWNj LCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg IE9mZnNldCAoMHhDNCksIAogICAgICAgICAgICAgICAgICAgIFUzV0UsICAgMgogICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKF9QUlcsIFBhY2thZ2UgKDB4MDIpICAvLyBf UFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAweDAzLCAKICAgICAgICAgICAgICAgICAgICAweDA0CiAgICAgICAgICAgICAg ICB9KQogICAgICAgICAgICAgICAgTWV0aG9kIChfUFNXLCAxLCBOb3RTZXJpYWxpemVkKSAgLy8g X1BTVzogUG93ZXIgU3RhdGUgV2FrZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgIElmIChBcmcwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgU3RvcmUgKDB4MDMsIFUzV0UpIC8qIFxfU0JfLlBDSTAuVVNCMy5VM1dFICovCiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChaZXJvLCBVM1dFKSAvKiBcX1NCXy5Q Q0kwLlVTQjMuVTNXRSAqLwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICBNZXRob2QgKF9TM0QsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUzNE OiBTMyBEZXZpY2UgU3RhdGUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBS ZXR1cm4gKDB4MDIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTWV0aG9kIChf UzRELCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1M0RDogUzQgRGV2aWNlIFN0YXRlCiAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDAyKQogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKFVTQjQpCiAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAxRDAwMDMpICAvLyBfQURSOiBBZGRy ZXNzCiAgICAgICAgICAgICAgICBPcGVyYXRpb25SZWdpb24gKFUwNFAsIFBDSV9Db25maWcsIFpl cm8sIDB4MDEwMCkKICAgICAgICAgICAgICAgIEZpZWxkIChVMDRQLCBEV29yZEFjYywgTm9Mb2Nr LCBQcmVzZXJ2ZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBPZmZzZXQg KDB4QzQpLCAKICAgICAgICAgICAgICAgICAgICBVNFdFLCAgIDIKICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICBOYW1lIChfUFJXLCBQYWNrYWdlICgweDAyKSAgLy8gX1BSVzogUG93 ZXIgUmVzb3VyY2VzIGZvciBXYWtlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgMHgwNAogICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgIE1ldGhvZCAoX1BTVywgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9QU1c6IFBv d2VyIFN0YXRlIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJZiAo QXJnMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3Jl ICgweDAzLCBVNFdFKSAvKiBcX1NCXy5QQ0kwLlVTQjQuVTRXRSAqLwogICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBTdG9yZSAoWmVybywgVTRXRSkgLyogXF9TQl8uUENJMC5VU0I0 LlU0V0UgKi8KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgTWV0aG9kIChfUzNELCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1MzRDogUzMgRGV2 aWNlIFN0YXRlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgw eDAyKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1M0RCwgMCwg Tm90U2VyaWFsaXplZCkgIC8vIF9TNEQ6IFM0IERldmljZSBTdGF0ZQogICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwMikKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgfQoKICAgICAgICAgICAgRGV2aWNlIChFSEMxKQogICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICBOYW1lIChfQURSLCAweDAwMUQwMDA3KSAgLy8gX0FEUjogQWRkcmVzcwogICAg ICAgICAgICAgICAgTmFtZSAoX1BSVywgUGFja2FnZSAoMHgwMikgIC8vIF9QUlc6IFBvd2VyIFJl c291cmNlcyBmb3IgV2FrZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4 MEQsIAogICAgICAgICAgICAgICAgICAgIDB4MDQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAg ICAgICAgICBNZXRob2QgKF9TM0QsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUzNEOiBTMyBEZXZp Y2UgU3RhdGUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4 MDIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTWV0aG9kIChfUzRELCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX1M0RDogUzQgRGV2aWNlIFN0YXRlCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDAyKQogICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgIERldmljZSAoSFVCNykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBOYW1lIChfQURSLCBaZXJvKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAg ICAgICAgIERldmljZSAoUFJUMSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIE5hbWUgKF9BRFIsIE9uZSkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIERldmljZSAoUFJUMikKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDIpICAvLyBf QURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBE ZXZpY2UgKFBSVDMpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICBOYW1lIChfQURSLCAweDAzKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChQUlQ0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwNCkgIC8vIF9BRFI6IEFk ZHJlc3MKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIERldmljZSAo UFJUNSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUg KF9BRFIsIDB4MDUpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICBEZXZpY2UgKFBSVDYpCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDA2KSAgLy8gX0FEUjogQWRkcmVzcwog ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAg ICAgICAgICAgRGV2aWNlIChQQ0lCKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1l IChfQURSLCAweDAwMUUwMDAwKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgRGV2 aWNlIChTTFQxKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9B RFIsIFplcm8pICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX1BS VywgUGFja2FnZSAoMHgwMikgIC8vIF9QUlc6IFBvd2VyIFJlc291cmNlcyBmb3IgV2FrZQogICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHgwQiwgCiAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDQKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAoU0xUMikKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAwMDEwMDAwKSAgLy8gX0FEUjogQWRkcmVz cwogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9QUlcsIFBhY2thZ2UgKDB4MDIpICAvLyBfUFJX OiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIDB4MEIsIAogICAgICAgICAgICAgICAgICAgICAgICAweDA0CiAgICAg ICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZp Y2UgKFNMVDMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0FE UiwgMHgwMDAyMDAwMCkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgICAgICBOYW1l IChfUFJXLCBQYWNrYWdlICgweDAyKSAgLy8gX1BSVzogUG93ZXIgUmVzb3VyY2VzIGZvciBXYWtl CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAweDBCLCAKICAg ICAgICAgICAgICAgICAgICAgICAgMHgwNAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChTTFQ2KQogICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwNTAwMDApICAvLyBfQURSOiBB ZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX1BSVywgUGFja2FnZSAoMHgwMikgIC8v IF9QUlc6IFBvd2VyIFJlc291cmNlcyBmb3IgV2FrZQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHgwQiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQK ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg IERldmljZSAoTEFOQykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1l IChfQURSLCAweDAwMDgwMDAwKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAg IE5hbWUgKF9QUlcsIFBhY2thZ2UgKDB4MDIpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9y IFdha2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIs IAogICAgICAgICAgICAgICAgICAgICAgICAweDAzCiAgICAgICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKExBTlIpCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgWmVybykgIC8vIF9BRFI6IEFk ZHJlc3MKICAgICAgICAgICAgICAgICAgICBOYW1lIChfUFJXLCBQYWNrYWdlICgweDAyKSAgLy8g X1BSVzogUG93ZXIgUmVzb3VyY2VzIGZvciBXYWtlCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICAweDBCLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMwog ICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg TWV0aG9kIChfUFJULCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BSVDogUENJIFJvdXRpbmcgVGFi bGUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJZiAoUElDTSkKICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUGFja2FnZSAo MHgwNykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDAwMUZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpl cm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MTAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyRkZG RiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgxNQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDJGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpl cm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4 MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDA4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVy bywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgxNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICBSZXR1cm4gKFBhY2thZ2UgKDB4MDcpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeXkxQQ0IuTE5LQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVy bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9uZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5MUENCLkxO S0IsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4 MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5LQywgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwg CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDFG RkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeXkxQQ0IuTE5LQSwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDJGRkZGLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeXkxQQ0IuTE5LRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVy bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDJGRkZGLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBD Qi5MTktHLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdl ICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDAwOEZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eTFBDQi5MTktFLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEFVRDAp CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAxRTAwMDIpICAv LyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERldmljZSAoTU9ETSkK ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFFMDAwMykgIC8v IF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgIE5hbWUgKF9QUlcsIFBhY2thZ2UgKDB4MDIp ICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAweDA1LCAKICAgICAgICAgICAgICAgICAgICAweDA0CiAgICAgICAg ICAgICAgICB9KQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKExQQ0IpCiAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAxRjAwMDApICAvLyBfQURS OiBBZGRyZXNzCiAgICAgICAgICAgICAgICBPcGVyYXRpb25SZWdpb24gKExQQzAsIFBDSV9Db25m aWcsIFplcm8sIDB4MDEwMCkKICAgICAgICAgICAgICAgIEZpZWxkIChMUEMwLCBBbnlBY2MsIE5v TG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgT2Zm c2V0ICgweDQwKSwgCiAgICAgICAgICAgICAgICAgICAgUE1CUywgICAxNiwgCiAgICAgICAgICAg ICAgICAgICAgT2Zmc2V0ICgweDYwKSwgCiAgICAgICAgICAgICAgICAgICAgUFJUQSwgICA4LCAK ICAgICAgICAgICAgICAgICAgICBQUlRCLCAgIDgsIAogICAgICAgICAgICAgICAgICAgIFBSVEMs ICAgOCwgCiAgICAgICAgICAgICAgICAgICAgUFJURCwgICA4LCAKICAgICAgICAgICAgICAgICAg ICBPZmZzZXQgKDB4NjgpLCAKICAgICAgICAgICAgICAgICAgICBQUlRFLCAgIDgsIAogICAgICAg ICAgICAgICAgICAgIFBSVEYsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgUFJURywgICA4LCAK ICAgICAgICAgICAgICAgICAgICBQUlRILCAgIDgsIAogICAgICAgICAgICAgICAgICAgIE9mZnNl dCAoMHg4MCksIAogICAgICAgICAgICAgICAgICAgIElPRDAsICAgOCwgCiAgICAgICAgICAgICAg ICAgICAgSU9EMSwgICA4LCAKICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4RjApLCAKICAg ICAgICAgICAgICAgICAgICBSQ0VOLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICAsICAg MTMsIAogICAgICAgICAgICAgICAgICAgIFJDQkEsICAgMTgKICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICBEZXZpY2UgKExOS0EpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMwRiIpIC8qIFBDSSBJbnRlcnJ1cHQg TGluayBEZXZpY2UgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAg IE5hbWUgKF9VSUQsIE9uZSkgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICAgICAgICAg IE1ldGhvZCAoX0RJUywgMCwgU2VyaWFsaXplZCkgIC8vIF9ESVM6IERpc2FibGUgRGV2aWNlCiAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoMHg4MCwg UFJUQSkgLyogXF9TQl8uUENJMC5MUENCLlBSVEEgKi8KICAgICAgICAgICAgICAgICAgICB9Cgog ICAgICAgICAgICAgICAgICAgIE5hbWUgKF9QUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgIC8vIF9Q UlM6IFBvc3NpYmxlIFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBJUlEgKExldmVsLCBBY3RpdmVMb3csIFNoYXJlZCwgKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgezMsNCw1LDYsNywxMCwxMiwxNCwxNX0KICAgICAgICAg ICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgU2VyaWFs aXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFJUTEEsIFJlc291cmNlVGVtcGxh dGUgKCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgSVJRIChMZXZlbCwgQWN0aXZlTG93LCBTaGFyZWQsICkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7fQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAg ICAgICAgICBDcmVhdGVXb3JkRmllbGQgKFJUTEEsIE9uZSwgSVJRMCkKICAgICAgICAgICAgICAg ICAgICAgICAgU3RvcmUgKFplcm8sIElSUTApIC8qIFxfU0JfLlBDSTAuTFBDQi5MTktBLl9DUlMu SVJRMCAqLwogICAgICAgICAgICAgICAgICAgICAgICBTaGlmdExlZnQgKE9uZSwgQW5kIChQUlRB LCAweDBGKSwgSVJRMCkgLyogXF9TQl8uUENJMC5MUENCLkxOS0EuX0NSUy5JUlEwICovCiAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoUlRMQSkgLyogXF9TQl8uUENJMC5MUENCLkxOS0Eu X0NSUy5SVExBICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBN ZXRob2QgKF9TUlMsIDEsIFNlcmlhbGl6ZWQpICAvLyBfU1JTOiBTZXQgUmVzb3VyY2UgU2V0dGlu Z3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVdv cmRGaWVsZCAoQXJnMCwgT25lLCBJUlEwKQogICAgICAgICAgICAgICAgICAgICAgICBGaW5kU2V0 UmlnaHRCaXQgKElSUTAsIExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgRGVjcmVtZW50 IChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChMb2NhbDAsIFBSVEEpIC8q IFxfU0JfLlBDSTAuTFBDQi5QUlRBICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMK ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElmIChBbmQgKFBS VEEsIDB4ODApKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKDB4MDkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg RGV2aWNlIChMTktCKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUg KF9ISUQsIEVpc2FJZCAoIlBOUDBDMEYiKSAvKiBQQ0kgSW50ZXJydXB0IExpbmsgRGV2aWNlICov KSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgICAgICAgICBOYW1lIChfVUlELCAw eDAyKSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfRElT LCAwLCBTZXJpYWxpemVkKSAgLy8gX0RJUzogRGlzYWJsZSBEZXZpY2UKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlICgweDgwLCBQUlRCKSAvKiBcX1NC Xy5QQ0kwLkxQQ0IuUFJUQiAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgTmFtZSAoX1BSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSAgLy8gX1BSUzogUG9zc2libGUg UmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIElSUSAoTGV2ZWwsIEFjdGl2ZUxvdywgU2hhcmVkLCApCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7Myw0LDUsNiw3LDExLDEyLDE0LDE1fQogICAgICAgICAgICAgICAgICAgIH0p CiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBTZXJpYWxpemVkKSAgLy8gX0NS UzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgTmFtZSAoUlRMQiwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlEgKExldmVs LCBBY3RpdmVMb3csIFNoYXJlZCwgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9 CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0 ZVdvcmRGaWVsZCAoUlRMQiwgT25lLCBJUlEwKQogICAgICAgICAgICAgICAgICAgICAgICBTdG9y ZSAoWmVybywgSVJRMCkgLyogXF9TQl8uUENJMC5MUENCLkxOS0IuX0NSUy5JUlEwICovCiAgICAg ICAgICAgICAgICAgICAgICAgIFNoaWZ0TGVmdCAoT25lLCBBbmQgKFBSVEIsIDB4MEYpLCBJUlEw KSAvKiBcX1NCXy5QQ0kwLkxQQ0IuTE5LQi5fQ1JTLklSUTAgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgUmV0dXJuIChSVExCKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuTE5LQi5fQ1JTLlJUTEIgKi8K ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NSUywg MSwgU2VyaWFsaXplZCkgIC8vIF9TUlM6IFNldCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChBcmcw LCBPbmUsIElSUTApCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRTZXRSaWdodEJpdCAoSVJR MCwgTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICBEZWNyZW1lbnQgKExvY2FsMCkKICAg ICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKExvY2FsMCwgUFJUQikgLyogXF9TQl8uUENJMC5M UENCLlBSVEIgKi8KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1l dGhvZCAoX1NUQSwgMCwgU2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEFuZCAoUFJUQiwgMHg4MCkpCiAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoMHgwOSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg ICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoMHgwQikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKExOS0Mp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlk ICgiUE5QMEMwRiIpIC8qIFBDSSBJbnRlcnJ1cHQgTGluayBEZXZpY2UgKi8pICAvLyBfSElEOiBI YXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDMpICAvLyBfVUlE OiBVbmlxdWUgSUQKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIFNlcmlhbGl6 ZWQpICAvLyBfRElTOiBEaXNhYmxlIERldmljZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgU3RvcmUgKDB4ODAsIFBSVEMpIC8qIFxfU0JfLlBDSTAuTFBDQi5Q UlRDICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBOYW1lIChf UFJTLCBSZXNvdXJjZVRlbXBsYXRlICgpICAvLyBfUFJTOiBQb3NzaWJsZSBSZXNvdXJjZSBTZXR0 aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSVJRIChM ZXZlbCwgQWN0aXZlTG93LCBTaGFyZWQsICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsz LDQsNSw2LDcsMTAsMTIsMTQsMTV9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAg ICAgICAgICBNZXRob2QgKF9DUlMsIDAsIFNlcmlhbGl6ZWQpICAvLyBfQ1JTOiBDdXJyZW50IFJl c291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBOYW1lIChSVExDLCBSZXNvdXJjZVRlbXBsYXRlICgpCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUSAoTGV2ZWwsIEFjdGl2ZUxvdywg U2hhcmVkLCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KICAgICAgICAgICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChS VExDLCBPbmUsIElSUTApCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChaZXJvLCBJUlEw KSAvKiBcX1NCXy5QQ0kwLkxQQ0IuTE5LQy5fQ1JTLklSUTAgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgU2hpZnRMZWZ0IChPbmUsIEFuZCAoUFJUQywgMHgwRiksIElSUTApIC8qIFxfU0JfLlBD STAuTFBDQi5MTktDLl9DUlMuSVJRMCAqLwogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4g KFJUTEMpIC8qIFxfU0JfLlBDSTAuTFBDQi5MTktDLl9DUlMuUlRMQyAqLwogICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBTZXJpYWxpemVk KSAgLy8gX1NSUzogU2V0IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEFyZzAsIE9uZSwgSVJRMCkK ICAgICAgICAgICAgICAgICAgICAgICAgRmluZFNldFJpZ2h0Qml0IChJUlEwLCBMb2NhbDApCiAg ICAgICAgICAgICAgICAgICAgICAgIERlY3JlbWVudCAoTG9jYWwwKQogICAgICAgICAgICAgICAg ICAgICAgICBTdG9yZSAoTG9jYWwwLCBQUlRDKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuUFJUQyAqLwog ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAw LCBTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBJZiAoQW5kIChQUlRDLCAweDgwKSkKICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDA5KQogICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgw eDBCKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAoTE5LRCkKICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwQzBGIikg LyogUENJIEludGVycnVwdCBMaW5rIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAg ICAgICAgICAgICAgICAgICAgTmFtZSAoX1VJRCwgMHgwNCkgIC8vIF9VSUQ6IFVuaXF1ZSBJRAog ICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgU2VyaWFsaXplZCkgIC8vIF9ESVM6 IERpc2FibGUgRGV2aWNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBTdG9yZSAoMHg4MCwgUFJURCkgLyogXF9TQl8uUENJMC5MUENCLlBSVEQgKi8KICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9QUlMsIFJlc291cmNl VGVtcGxhdGUgKCkgIC8vIF9QUlM6IFBvc3NpYmxlIFJlc291cmNlIFNldHRpbmdzCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJUlEgKExldmVsLCBBY3RpdmVM b3csIFNoYXJlZCwgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgezMsNCw1LDYsNywxMSwx MiwxNCwxNX0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIE1ldGhv ZCAoX0NSUywgMCwgU2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGlu Z3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFJU TEQsIFJlc291cmNlVGVtcGxhdGUgKCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgSVJRIChMZXZlbCwgQWN0aXZlTG93LCBTaGFyZWQsICkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICAgICAgICAgICAgICB9 KQogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKFJUTEQsIE9uZSwgSVJR MCkKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKFplcm8sIElSUTApIC8qIFxfU0JfLlBD STAuTFBDQi5MTktELl9DUlMuSVJRMCAqLwogICAgICAgICAgICAgICAgICAgICAgICBTaGlmdExl ZnQgKE9uZSwgQW5kIChQUlRELCAweDBGKSwgSVJRMCkgLyogXF9TQl8uUENJMC5MUENCLkxOS0Qu X0NSUy5JUlEwICovCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUlRMRCkgLyogXF9T Ql8uUENJMC5MUENCLkxOS0QuX0NSUy5SVExEICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICBNZXRob2QgKF9TUlMsIDEsIFNlcmlhbGl6ZWQpICAvLyBfU1JTOiBT ZXQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQXJnMCwgT25lLCBJUlEwKQogICAgICAgICAgICAg ICAgICAgICAgICBGaW5kU2V0UmlnaHRCaXQgKElSUTAsIExvY2FsMCkKICAgICAgICAgICAgICAg ICAgICAgICAgRGVjcmVtZW50IChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3Jl IChMb2NhbDAsIFBSVEQpIC8qIFxfU0JfLlBDSTAuTFBDQi5QUlREICovCiAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIFNlcmlhbGl6ZWQp ICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIElmIChBbmQgKFBSVEQsIDB4ODApKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDkpCiAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEIpCiAgICAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgRGV2aWNlIChMTktFKQogICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEYiKSAvKiBQQ0kgSW50ZXJy dXB0IExpbmsgRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgICAg ICAgICBOYW1lIChfVUlELCAweDA1KSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgICAg ICAgICAgTWV0aG9kIChfRElTLCAwLCBTZXJpYWxpemVkKSAgLy8gX0RJUzogRGlzYWJsZSBEZXZp Y2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlICgw eDgwLCBQUlRFKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuUFJURSAqLwogICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX1BSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSAg Ly8gX1BSUzogUG9zc2libGUgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgIElSUSAoTGV2ZWwsIEFjdGl2ZUxvdywgU2hhcmVkLCAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Myw0LDUsNiw3LDEwLDEyLDE0LDE1fQogICAg ICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBT ZXJpYWxpemVkKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoUlRMRSwgUmVzb3VyY2VU ZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJUlEgKExldmVsLCBBY3RpdmVMb3csIFNoYXJlZCwgKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoUlRMRSwgT25lLCBJUlEwKQogICAgICAgICAg ICAgICAgICAgICAgICBTdG9yZSAoWmVybywgSVJRMCkgLyogXF9TQl8uUENJMC5MUENCLkxOS0Uu X0NSUy5JUlEwICovCiAgICAgICAgICAgICAgICAgICAgICAgIFNoaWZ0TGVmdCAoT25lLCBBbmQg KFBSVEUsIDB4MEYpLCBJUlEwKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuTE5LRS5fQ1JTLklSUTAgKi8K ICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChSVExFKSAvKiBcX1NCXy5QQ0kwLkxQQ0Iu TE5LRS5fQ1JTLlJUTEUgKi8KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoX1NSUywgMSwgU2VyaWFsaXplZCkgIC8vIF9TUlM6IFNldCBSZXNvdXJjZSBT ZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3Jl YXRlV29yZEZpZWxkIChBcmcwLCBPbmUsIElSUTApCiAgICAgICAgICAgICAgICAgICAgICAgIEZp bmRTZXRSaWdodEJpdCAoSVJRMCwgTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICBEZWNy ZW1lbnQgKExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKExvY2FsMCwgUFJU RSkgLyogXF9TQl8uUENJMC5MUENCLlBSVEUgKi8KICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgU2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0 YXR1cwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEFu ZCAoUFJURSwgMHg4MCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJldHVybiAoMHgwOSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwQikKICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICBEZXZpY2UgKExOS0YpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg TmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMwRiIpIC8qIFBDSSBJbnRlcnJ1cHQgTGluayBEZXZp Y2UgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9V SUQsIDB4MDYpICAvLyBfVUlEOiBVbmlxdWUgSUQKICAgICAgICAgICAgICAgICAgICBNZXRob2Qg KF9ESVMsIDAsIFNlcmlhbGl6ZWQpICAvLyBfRElTOiBEaXNhYmxlIERldmljZQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKDB4ODAsIFBSVEYpIC8q IFxfU0JfLlBDSTAuTFBDQi5QUlRGICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICBOYW1lIChfUFJTLCBSZXNvdXJjZVRlbXBsYXRlICgpICAvLyBfUFJTOiBQb3Nz aWJsZSBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgSVJRIChMZXZlbCwgQWN0aXZlTG93LCBTaGFyZWQsICkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHszLDQsNSw2LDcsMTEsMTIsMTQsMTV9CiAgICAgICAgICAgICAgICAg ICAgfSkKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIFNlcmlhbGl6ZWQpICAv LyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChSVExGLCBSZXNvdXJjZVRlbXBsYXRlICgpCiAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUSAo TGV2ZWwsIEFjdGl2ZUxvdywgU2hhcmVkLCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAge30KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAg Q3JlYXRlV29yZEZpZWxkIChSVExGLCBPbmUsIElSUTApCiAgICAgICAgICAgICAgICAgICAgICAg IFN0b3JlIChaZXJvLCBJUlEwKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuTE5LRi5fQ1JTLklSUTAgKi8K ICAgICAgICAgICAgICAgICAgICAgICAgU2hpZnRMZWZ0IChPbmUsIEFuZCAoUFJURiwgMHgwRiks IElSUTApIC8qIFxfU0JfLlBDSTAuTFBDQi5MTktGLl9DUlMuSVJRMCAqLwogICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKFJUTEYpIC8qIFxfU0JfLlBDSTAuTFBDQi5MTktGLl9DUlMuUlRM RiAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChf U1JTLCAxLCBTZXJpYWxpemVkKSAgLy8gX1NSUzogU2V0IFJlc291cmNlIFNldHRpbmdzCiAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQg KEFyZzAsIE9uZSwgSVJRMCkKICAgICAgICAgICAgICAgICAgICAgICAgRmluZFNldFJpZ2h0Qml0 IChJUlEwLCBMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAgIERlY3JlbWVudCAoTG9jYWww KQogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoTG9jYWwwLCBQUlRGKSAvKiBcX1NCXy5Q Q0kwLkxQQ0IuUFJURiAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChfU1RBLCAwLCBTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoQW5kIChQUlRGLCAweDgw KSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg UmV0dXJuICgweDA5KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg ICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmV0dXJuICgweDBCKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAo TE5LRykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfSElELCBF aXNhSWQgKCJQTlAwQzBGIikgLyogUENJIEludGVycnVwdCBMaW5rIERldmljZSAqLykgIC8vIF9I SUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX1VJRCwgMHgwNykgIC8v IF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgU2Vy aWFsaXplZCkgIC8vIF9ESVM6IERpc2FibGUgRGV2aWNlCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoMHg4MCwgUFJURykgLyogXF9TQl8uUENJMC5M UENCLlBSVEcgKi8KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE5h bWUgKF9QUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgIC8vIF9QUlM6IFBvc3NpYmxlIFJlc291cmNl IFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJ UlEgKExldmVsLCBBY3RpdmVMb3csIFNoYXJlZCwgKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgezMsNCw1LDYsNywxMCwxMiwxNCwxNX0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAg ICAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgU2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJl bnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIE5hbWUgKFJUTEcsIFJlc291cmNlVGVtcGxhdGUgKCkKICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJRIChMZXZlbCwgQWN0aXZl TG93LCBTaGFyZWQsICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQogICAgICAg ICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmll bGQgKFJUTEcsIE9uZSwgSVJRMCkKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKFplcm8s IElSUTApIC8qIFxfU0JfLlBDSTAuTFBDQi5MTktHLl9DUlMuSVJRMCAqLwogICAgICAgICAgICAg ICAgICAgICAgICBTaGlmdExlZnQgKE9uZSwgQW5kIChQUlRHLCAweDBGKSwgSVJRMCkgLyogXF9T Ql8uUENJMC5MUENCLkxOS0cuX0NSUy5JUlEwICovCiAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoUlRMRykgLyogXF9TQl8uUENJMC5MUENCLkxOS0cuX0NSUy5SVExHICovCiAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9TUlMsIDEsIFNlcmlh bGl6ZWQpICAvLyBfU1JTOiBTZXQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQXJnMCwgT25lLCBJ UlEwKQogICAgICAgICAgICAgICAgICAgICAgICBGaW5kU2V0UmlnaHRCaXQgKElSUTAsIExvY2Fs MCkKICAgICAgICAgICAgICAgICAgICAgICAgRGVjcmVtZW50IChMb2NhbDApCiAgICAgICAgICAg ICAgICAgICAgICAgIFN0b3JlIChMb2NhbDAsIFBSVEcpIC8qIFxfU0JfLlBDSTAuTFBDQi5QUlRH ICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9T VEEsIDAsIFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgIElmIChBbmQgKFBSVEcsIDB4ODApKQogICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDkp CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQog ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1 cm4gKDB4MEIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChMTktIKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBD MEYiKSAvKiBQQ0kgSW50ZXJydXB0IExpbmsgRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUg SUQKICAgICAgICAgICAgICAgICAgICBOYW1lIChfVUlELCAweDA4KSAgLy8gX1VJRDogVW5pcXVl IElECiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfRElTLCAwLCBTZXJpYWxpemVkKSAgLy8g X0RJUzogRGlzYWJsZSBEZXZpY2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIFN0b3JlICgweDgwLCBQUlRIKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuUFJUSCAqLwog ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX1BSUywgUmVz b3VyY2VUZW1wbGF0ZSAoKSAgLy8gX1BSUzogUG9zc2libGUgUmVzb3VyY2UgU2V0dGluZ3MKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElSUSAoTGV2ZWwsIEFj dGl2ZUxvdywgU2hhcmVkLCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Myw0LDUsNiw3 LDExLDEyLDE0LDE1fQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAg TWV0aG9kIChfQ1JTLCAwLCBTZXJpYWxpemVkKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBT ZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFt ZSAoUlRMSCwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJUlEgKExldmVsLCBBY3RpdmVMb3csIFNoYXJlZCwg KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICAgICAgICAg ICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoUlRMSCwgT25l LCBJUlEwKQogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoWmVybywgSVJRMCkgLyogXF9T Ql8uUENJMC5MUENCLkxOS0guX0NSUy5JUlEwICovCiAgICAgICAgICAgICAgICAgICAgICAgIFNo aWZ0TGVmdCAoT25lLCBBbmQgKFBSVEgsIDB4MEYpLCBJUlEwKSAvKiBcX1NCXy5QQ0kwLkxQQ0Iu TE5LSC5fQ1JTLklSUTAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChSVExIKSAv KiBcX1NCXy5QQ0kwLkxQQ0IuTE5LSC5fQ1JTLlJUTEggKi8KICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgU2VyaWFsaXplZCkgIC8vIF9T UlM6IFNldCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChBcmcwLCBPbmUsIElSUTApCiAgICAgICAg ICAgICAgICAgICAgICAgIEZpbmRTZXRSaWdodEJpdCAoSVJRMCwgTG9jYWwwKQogICAgICAgICAg ICAgICAgICAgICAgICBEZWNyZW1lbnQgKExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAg U3RvcmUgKExvY2FsMCwgUFJUSCkgLyogXF9TQl8uUENJMC5MUENCLlBSVEggKi8KICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgU2VyaWFs aXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgSWYgKEFuZCAoUFJUSCwgMHg4MCkpCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwOSkKICAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwQikKICAg ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKEVDKQogICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMDkiKSAvKiBFbWJlZGRl ZCBDb250cm9sbGVyIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAg ICAgICAgICAgTmFtZSAoX1VJRCwgWmVybykgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAg ICAgICAgICAgIE5hbWUgKF9HUEUsIDB4MUMpICAvLyBfR1BFOiBHZW5lcmFsIFB1cnBvc2UgRXZl bnRzCiAgICAgICAgICAgICAgICAgICAgTXV0ZXggKEVDTEssIDB4MDApCiAgICAgICAgICAgICAg ICAgICAgT3BlcmF0aW9uUmVnaW9uIChFUkFNLCBFbWJlZGRlZENvbnRyb2wsIFplcm8sIDB4MDEw MCkKICAgICAgICAgICAgICAgICAgICBGaWVsZCAoRVJBTSwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVz ZXJ2ZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl dCAoMHgwMiksIAogICAgICAgICAgICAgICAgICAgICAgICBES1IxLCAgIDEsIAogICAgICAgICAg ICAgICAgICAgICAgICBPZmZzZXQgKDB4MDUpLCAKICAgICAgICAgICAgICAgICAgICAgICAgSFNQ QSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDBDKSwgCiAgICAgICAg ICAgICAgICAgICAgICAgIExFRFMsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl dCAoMHgwRiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDcsIAogICAgICAgICAg ICAgICAgICAgICAgICBUQlNXLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQg KDB4MUEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgREtSMiwgICAxLCAKICAgICAgICAgICAg ICAgICAgICAgICAgT2Zmc2V0ICgweDJBKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEVWTlQs ICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgzMCksIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgLCAgIDYsIAogICAgICAgICAgICAgICAgICAgICAgICBBTE1ULCAg IDEsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4M0EpLCAKICAgICAgICAgICAg ICAgICAgICAgICAgQU1VVCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgICAz LCAKICAgICAgICAgICAgICAgICAgICAgICAgQlRFQiwgICAxLCAKICAgICAgICAgICAgICAgICAg ICAgICAgV0xFQiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgV1dFQiwgICAxLCAKICAg ICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDNCKSwgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEtCTFQsICAgMSwgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAsICAgMiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFVT UFcsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHg0RSksIAogICAgICAg ICAgICAgICAgICAgICAgICBXQUtFLCAgIDE2LCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zm c2V0ICgweDc4KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFRNUDAsICAgOCwgCiAgICAgICAg ICAgICAgICAgICAgICAgIFRNUDEsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl dCAoMHg4MSksIAogICAgICAgICAgICAgICAgICAgICAgICBQQUdFLCAgIDgsIAogICAgICAgICAg ICAgICAgICAgICAgICBPZmZzZXQgKDB4RkUpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgICA0LCAKICAgICAgICAgICAgICAgICAgICAgICAgREtSMywgICAxCiAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6 ZWQpICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChFQ01ELCBSZXNvdXJjZVRlbXBsYXRl ICgpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNjIsICAg ICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAwNjIsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg SU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA2NiwgICAg ICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDA2NiwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoRUNNRCkgLyogXF9TQl8uUENJMC5MUENCLkVD X18uX0NSUy5FQ01EICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKFRMRUQsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoQXJnMCwgTEVEUykgLyogXF9TQl8uUENJMC5M UENCLkVDX18uTEVEUyAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChMRUQsIDIsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBUTEVEIChPciAoQXJnMCwgQXJnMSkpCiAgICAgICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9JTkksIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfSU5JOiBJbml0aWFsaXplCiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChNVVRFLCAxLCBOb3RT ZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg U3RvcmUgKEFyZzAsIEFNVVQpIC8qIFxfU0JfLlBDSTAuTFBDQi5FQ19fLkFNVVQgKi8KICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoUkFESSwgMSwgTm90 U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg IFN0b3JlIChBcmcwLCBXTEVCKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5XTEVCICovCiAgICAg ICAgICAgICAgICAgICAgICAgIFN0b3JlIChBcmcwLCBXV0VCKSAvKiBcX1NCXy5QQ0kwLkxQQ0Iu RUNfXy5XV0VCICovCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChBcmcwLCBCVEVCKSAv KiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5CVEVCICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICBNZXRob2QgKFVTQlAsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoQXJnMCwgVVNQVykg LyogXF9TQl8uUENJMC5MUENCLkVDX18uVVNQVyAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTEzLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4 eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg IE5vdGlmeSAoU0xQQiwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTE0LCAwLCBOb3RTZXJpYWxpemVkKSAg Ly8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIF5eXkdGWDAuSU5DQiAoKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgTWV0aG9kIChfUTE1LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVl cnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIF5eXkdGWDAu REVDQiAoKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChfUTE2LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAoR0ZYMCwgMHg4MikgLy8g RGV2aWNlLVNwZWNpZmljIENoYW5nZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgTWV0aG9kIChfUTI2LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVl cnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAo QUMsIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgICAgIE1ldGhvZCAoX1EyNywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVD IFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOb3Rp ZnkgKEFDLCAweDgwKSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgIFN0 b3JlICgweDUwLCBFVk5UKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5FVk5UICovCiAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9RMkEsIDAsIE5vdFNl cmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgTm90aWZ5IChMSUQsIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UKICAg ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1EyQiwgMCwg Tm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkgKExJRCwgMHg4MCkgLy8gU3RhdHVzIENoYW5n ZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTEw LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIF5IS0VZLlJISyAoT25lKQogICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTExLCAwLCBOb3RTZXJpYWxp emVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgIF5IS0VZLlJISyAoMHgwMikKICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoX1ExMiwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6 IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBe SEtFWS5SSEsgKDB4MDMpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKF9RNjQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgXkhLRVkuUkhLICgweDA1 KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTY1 LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIF5IS0VZLlJISyAoMHgwNikKICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1ExNywgMCwgTm90U2VyaWFs aXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBeSEtFWS5SSEsgKDB4MDgpCiAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICBNZXRob2QgKF9RNjYsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4 OiBFQyBRdWVyeQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg XkhLRVkuUkhLICgweDBBKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChfUTZBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIF5IS0VZLlJISyAoMHgx QikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1Ex QSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICBeSEtFWS5SSEsgKDB4MEIpCiAgICAgICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9RMUIsIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgXkhLRVkuUkhLICgweDBDKQogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTYyLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4 eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg IF5IS0VZLlJISyAoMHgwRCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoX1E2MCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBeSEtFWS5SSEsgKDB4 MEUpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9R NjEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgXkhLRVkuUkhLICgweDBGKQogICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTFGLCAwLCBOb3RTZXJp YWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIF5IS0VZLlJISyAoMHgxMikKICAgICAgICAgICAgICAgICAgICB9Cgog ICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1E2NywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9R eHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICBeSEtFWS5SSEsgKDB4MTMpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICBNZXRob2QgKF9RNjMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgXkhLRVkuUkhLICgw eDE0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChf UTE5LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIF5IS0VZLlJISyAoMHgxOCkKICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1ExQywgMCwgTm90U2Vy aWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICBeSEtFWS5SSEsgKDB4MTkpCiAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9RMUQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBf UXh4OiBFQyBRdWVyeQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgXkhLRVkuUkhLICgweDFBKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgTWV0aG9kIChfUTVDLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkK ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIF5IS0VZLlJUQUIg KDB4MEIpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2Qg KF9RNUQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgXkhLRVkuUlRBQiAoMHgwQykKICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1E1RSwgMCwgTm90 U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBeSEtFWS5SVEFCICgweDA5KQogICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTVGLCAwLCBOb3RTZXJpYWxpemVkKSAg Ly8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIF5IS0VZLlJUQUIgKDB4MEEpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICBEZXZpY2UgKEhLRVkpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJJQk0wMDY4IikpICAvLyBfSElEOiBI YXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChCVE4sIFplcm8pCiAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKEJUQUIsIFplcm8pCiAgICAgICAgICAgICAgICAgICAg ICAgIE5hbWUgKERIS04sIDB4MDgwQykKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoRU1T SywgWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoRVRBQiwgWmVybykKICAgICAg ICAgICAgICAgICAgICAgICAgTmFtZSAoRU4sIFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAg IE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4 MEYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIE1l dGhvZCAoTUhLUCwgMCwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKEJUTiwgTG9jYWwwKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgKExOb3RFcXVhbCAoTG9jYWwwLCBaZXJvKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9y ZSAoWmVybywgQlROKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5IS0VZLkJUTl8gKi8KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgKExvY2FsMCwgMHgxMDAwLCBMb2NhbDApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChMb2NhbDApCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKEJU QUIsIExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChMTm90RXF1YWwgKExv Y2FsMCwgWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RvcmUgKFplcm8sIEJUQUIpIC8qIFxfU0JfLlBDSTAuTFBDQi5F Q19fLkhLRVkuQlRBQiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCAoTG9j YWwwLCAweDUwMDAsIExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1 cm4gKExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoUkhLLCAxLCBOb3RTZXJpYWxpemVkKQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGlmdExl ZnQgKE9uZSwgU3VidHJhY3QgKEFyZzAsIE9uZSksIExvY2FsMCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElmIChBbmQgKEVNU0ssIExvY2FsMCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKEFyZzAsIEJUTikg LyogXF9TQl8uUENJMC5MUENCLkVDX18uSEtFWS5CVE5fICovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTm90aWZ5IChIS0VZLCAweDgwKSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoUlRBQiwgMSwgTm90U2VyaWFsaXplZCkKICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hpZnRMZWZ0IChP bmUsIFN1YnRyYWN0IChBcmcwLCBPbmUpLCBMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiAoQW5kIChFVEFCLCBMb2NhbDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChBcmcwLCBCVEFCKSAvKiBc X1NCXy5QQ0kwLkxQQ0IuRUNfXy5IS0VZLkJUQUIgKi8KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOb3RpZnkgKEhLRVksIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgTWV0aG9kIChNSEtDLCAxLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoQXJnMCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT dG9yZSAoREhLTiwgRU1TSykgLyogXF9TQl8uUENJMC5MUENCLkVDX18uSEtFWS5FTVNLICovCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKE9uZXMsIEVUQUIpIC8qIFxfU0Jf LlBDSTAuTFBDQi5FQ19fLkhLRVkuRVRBQiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChaZXJvLCBFTVNL KSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5IS0VZLkVNU0sgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdG9yZSAoWmVybywgRVRBQikgLyogXF9TQl8uUENJMC5MUENCLkVDX18u SEtFWS5FVEFCICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RvcmUgKEFyZzAsIEVOKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5I S0VZLkVOX18gKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgTWV0aG9kIChNSEtNLCAyLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoTExlc3NFcXVhbCAoQXJnMCwg MHgyMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2hpZnRMZWZ0IChPbmUsIFN1YnRyYWN0IChBcmcwLCBPbmUpLCBMb2NhbDAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEFyZzEpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP ciAoREhLTiwgTG9jYWwwLCBESEtOKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5IS0VZLkRIS04g Ki8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5kIChESEtOLCBOb3QgKExvY2FsMCksIERI S04pIC8qIFxfU0JfLlBDSTAuTFBDQi5FQ19fLkhLRVkuREhLTiAqLwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEVO KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RvcmUgKERIS04sIEVNU0spIC8qIFxfU0JfLlBDSTAuTFBDQi5FQ19f LkhLRVkuRU1TSyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgTWV0aG9kIChNSEtBLCAwLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDdG RkZGRkYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg IE1ldGhvZCAoTUhLRywgMCwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChTaGlmdExlZnQgKFRCU1csIDB4 MDMpKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBN ZXRob2QgKFNTTVMsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChBcmcwLCBBTE1UKSAvKiBcX1NCXy5Q Q0kwLkxQQ0IuRUNfXy5BTE1UICovCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoTU1UUywgMSwgTm90U2VyaWFsaXplZCkKICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEFyZzApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVExFRCAoMHg4RSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUTEVEICgweDBFKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg ICAgICBNZXRob2QgKE1IS1YsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwMTAwKQogICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICBGaWVsZCAoRVJBTSwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHg0NiksIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCAgIDQsIAogICAgICAgICAgICAgICAgICAgICAgICBIUEFD LCAgIDEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIERldmljZSAo QUMpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChf SElELCAiQUNQSTAwMDMiIC8qIFBvd2VyIFNvdXJjZSBEZXZpY2UgKi8pICAvLyBfSElEOiBIYXJk d2FyZSBJRAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChfVUlELCBaZXJvKSAgLy8gX1VJ RDogVW5pcXVlIElECiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9QQ0wsIFBhY2thZ2Ug KDB4MDEpICAvLyBfUENMOiBQb3dlciBDb25zdW1lciBMaXN0CiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9TQgogICAgICAgICAgICAgICAgICAg ICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9QU1IsIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfUFNSOiBQb3dlciBTb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChIUEFDKSAvKiBcX1NCXy5QQ0kwLkxQ Q0IuRUNfXy5IUEFDICovCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1 cwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgIEZpZWxkIChFUkFNLCBCeXRlQWNjLCBOb0xvY2ssIFBy ZXNlcnZlKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgT2Zm c2V0ICgweDM4KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIwU1QsICAgNCwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIwQ0gs ICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIwREksICAgMSwgCiAgICAgICAgICAgICAg ICAgICAgICAgIEIwUFIsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxU1QsICAgNCwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIEIxQ0gsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxREksICAgMSwgCiAgICAg ICAgICAgICAgICAgICAgICAgIEIxUFIsICAgMQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgRmllbGQgKEVSQU0sIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4QTAp LCAKICAgICAgICAgICAgICAgICAgICAgICAgQkFSQywgICAxNiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIEJBRkMsICAgMTYsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4QTgp LCAKICAgICAgICAgICAgICAgICAgICAgICAgQkFQUiwgICAxNiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIEJBVk8sICAgMTYKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg ICAgIEZpZWxkIChFUkFNLCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweEEwKSwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAsICAgMTUsIAogICAgICAgICAgICAgICAgICAgICAgICBCQU1B LCAgIDEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIEZpZWxkIChF UkFNLCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweEEwKSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIEJBREMsICAgMTYsIAogICAgICAgICAgICAgICAgICAgICAgICBCQURWLCAgIDE2LCAKICAg ICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweEE2KSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIE9mZnNldCAoMHhBOCksIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4QUEp LCAKICAgICAgICAgICAgICAgICAgICAgICAgQkFTTiwgICAxNgogICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgRmllbGQgKEVSQU0sIEJ5dGVBY2MsIE5vTG9jaywgUHJl c2VydmUpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBPZmZz ZXQgKDB4QTApLCAKICAgICAgICAgICAgICAgICAgICAgICAgQkFUWSwgICAzMgogICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgRmllbGQgKEVSQU0sIEJ5dGVBY2MsIE5v TG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBPZmZzZXQgKDB4QTApLCAKICAgICAgICAgICAgICAgICAgICAgICAgQkFPRSwgICAxMjgK ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIEZpZWxkIChFUkFNLCBC eXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgT2Zmc2V0ICgweEEwKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEJB TkEsICAgMTI4CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRo b2QgKEJQQUcsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICBTdG9yZSAoQXJnMCwgUEFHRSkgLyogXF9TQl8uUENJMC5MUENCLkVD X18uUEFHRSAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0 aG9kIChCU1RBLCA0LCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgQWNxdWlyZSAoRUNMSywgMHhGRkZGKQogICAgICAgICAgICAgICAg ICAgICAgICBTdG9yZSAoWmVybywgTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICBCUEFH IChPciAoT25lLCBBcmcwKSkKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKEJBTUEsIExv Y2FsMSkKICAgICAgICAgICAgICAgICAgICAgICAgQlBBRyAoQXJnMCkKICAgICAgICAgICAgICAg ICAgICAgICAgU3RvcmUgKEJBUFIsIExvY2FsMikKICAgICAgICAgICAgICAgICAgICAgICAgSWYg KEFyZzIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9yICgweDAyLCBMb2NhbDAsIExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElmIChBcmczKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yIChPbmUsIExvY2FsMCwg TG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YnRyYWN0ICgweDAwMDEw MDAwLCBMb2NhbDIsIExvY2FsMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoWmVybywgTG9jYWwyKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgICAgICBJZiAoTEdyZWF0ZXJFcXVhbCAoTG9jYWwyLCAweDgwMDApKQog ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9y ZSAoWmVybywgTG9jYWwyKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgICAgICBTdG9yZSAoTG9jYWwwLCBJbmRleCAoQXJnMSwgWmVybykpCiAgICAgICAgICAg ICAgICAgICAgICAgIElmIChMb2NhbDEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGx5IChCQVJDLCAweDBBLCBJbmRleCAoQXJnMSwg MHgwMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBseSAoTG9jYWwyLCBCQVZP LCBMb2NhbDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXZpZGUgKExvY2FsMiwgMHgw M0U4LCAsIEluZGV4IChBcmcxLCBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKEJBUkMsIEluZGV4IChBcmcxLCAweDAyKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChMb2NhbDIsIEluZGV4IChBcmcxLCBPbmUp KQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBTdG9y ZSAoQkFWTywgSW5kZXggKEFyZzEsIDB4MDMpKQogICAgICAgICAgICAgICAgICAgICAgICBSZWxl YXNlIChFQ0xLKQogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKEFyZzEpCiAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKEJJTkYsIDIsIE5vdFNl cmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBB Y3F1aXJlIChFQ0xLLCAweEZGRkYpCiAgICAgICAgICAgICAgICAgICAgICAgIEJQQUcgKE9yIChP bmUsIEFyZzEpKQogICAgICAgICAgICAgICAgICAgICAgICBYT3IgKEJBTUEsIE9uZSwgSW5kZXgg KEFyZzAsIFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoQkFNQSwgTG9jYWww KQogICAgICAgICAgICAgICAgICAgICAgICBCUEFHIChBcmcxKQogICAgICAgICAgICAgICAgICAg ICAgICBTdG9yZSAoQkFGQywgTG9jYWwyKQogICAgICAgICAgICAgICAgICAgICAgICBCUEFHIChP ciAoMHgwMiwgQXJnMSkpCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChCQURDLCBMb2Nh bDEpCiAgICAgICAgICAgICAgICAgICAgICAgIElmIChMb2NhbDApCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGx5IChMb2NhbDEsIDB4 MEEsIExvY2FsMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGx5IChMb2NhbDIs IDB4MEEsIExvY2FsMikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICAgICAgU3RvcmUgKExvY2FsMSwgSW5kZXggKEFyZzAsIE9uZSkpCiAgICAgICAgICAgICAg ICAgICAgICAgIFN0b3JlIChMb2NhbDIsIEluZGV4IChBcmcwLCAweDAyKSkKICAgICAgICAgICAg ICAgICAgICAgICAgU3RvcmUgKEJBRFYsIEluZGV4IChBcmcwLCAweDA0KSkKICAgICAgICAgICAg ICAgICAgICAgICAgRGl2aWRlIChMb2NhbDIsIDB4MTQsIExvY2FsMCwgSW5kZXggKEFyZzAsIDB4 MDUpKQogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoQkFTTiwgTG9jYWwwKQogICAgICAg ICAgICAgICAgICAgICAgICBOYW1lIChTRVJOLCBCdWZmZXIgKDB4MDYpCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICIKICAgICAgICAg ICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKDB4MDQsIExv Y2FsMSkKICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgKExvY2FsMCkKICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGl2aWRlIChMb2NhbDAs IDB4MEEsIExvY2FsMiwgTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkIChM b2NhbDIsIDB4MzAsIEluZGV4IChTRVJOLCBMb2NhbDEpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgRGVjcmVtZW50IChMb2NhbDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgIFN0b3JlIChTRVJOLCBJbmRleCAoQXJnMCwgMHgwQSkpCiAgICAg ICAgICAgICAgICAgICAgICAgIEJQQUcgKE9yICgweDA0LCBBcmcxKSkKICAgICAgICAgICAgICAg ICAgICAgICAgTmFtZSAoVFlQRSwgQnVmZmVyICgweDA1KQogICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCAgICAgICAgICAgICAgICAgICAgIC8qIC4uLi4uICovCiAgICAgICAgICAgICAgICAgICAg ICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChCQVRZLCBUWVBFKSAvKiBcX1NC Xy5QQ0kwLkxQQ0IuRUNfXy5CSU5GLlRZUEUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgU3Rv cmUgKFRZUEUsIEluZGV4IChBcmcwLCAweDBCKSkKICAgICAgICAgICAgICAgICAgICAgICAgQlBB RyAoT3IgKDB4MDUsIEFyZzEpKQogICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoQkFPRSwg SW5kZXggKEFyZzAsIDB4MEMpKQogICAgICAgICAgICAgICAgICAgICAgICBCUEFHIChPciAoMHgw NiwgQXJnMSkpCiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChCQU5BLCBJbmRleCAoQXJn MCwgMHgwOSkpCiAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKEVDTEspCiAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoQXJnMCkKICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIERldmljZSAoQkFUMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEEiKSAvKiBDb250 cm9sIE1ldGhvZCBCYXR0ZXJ5ICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoX1VJRCwgWmVybykgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAg ICAgICAgICAgICAgICAgICBOYW1lIChfUENMLCBQYWNrYWdlICgweDAxKSAgLy8gX1BDTDogUG93 ZXIgQ29uc3VtZXIgTGlzdAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfU0IKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoQkFUUywgUGFja2FnZSAoMHgwRCkKICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweEZGRkZGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRkZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MkEzMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJv LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QzgsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKF9CSUYsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQklGOiBCYXR0ZXJ5IEluZm9y bWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoQklORiAoQkFUUywgWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKEJBVEksIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQlNULCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX0JTVDogQmF0dGVyeSBTdGF0dXMKICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEIwUFIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChCU1RBIChaZXJvLCBCQVRJLCBCMENILCBCMERJKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2th Z2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfU1RB LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChCMFBSKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAo MHgxRikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIERldmljZSAoQkFUMSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEEiKSAvKiBDb250 cm9sIE1ldGhvZCBCYXR0ZXJ5ICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoX1VJRCwgWmVybykgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAg ICAgICAgICAgICAgICAgICBOYW1lIChfUENMLCBQYWNrYWdlICgweDAxKSAgLy8gX1BDTDogUG93 ZXIgQ29uc3VtZXIgTGlzdAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfU0IKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoQkFUUywgUGFja2FnZSAoMHgwRCkKICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweEZGRkZGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRkZGRkYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MkEzMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJv LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QzgsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKF9CSUYsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQklGOiBCYXR0ZXJ5IEluZm9y bWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoQklORiAoQkFUUywgMHgxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKEJBVEksIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQlNULCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX0JTVDogQmF0dGVyeSBTdGF0dXMKICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEIxUFIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChCU1RBICgweDEwLCBCQVRJLCBCMUNILCBCMURJKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2th Z2UgKDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfU1RB LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChCMVBSKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAo MHgxRikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoX1EyNCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6 IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBO b3RpZnkgKEJBVDAsIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UKICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1EyNSwgMCwgTm90U2VyaWFsaXplZCkgIC8v IF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBOb3RpZnkgKEJBVDEsIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UKICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1E0QSwgMCwgTm90U2VyaWFsaXpl ZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICBOb3RpZnkgKEJBVDAsIDB4ODEpIC8vIEluZm9ybWF0aW9uIENoYW5nZQogICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTRCLCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAoQkFUMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5n ZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTRD LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAoQkFUMSwgMHg4MSkgLy8gSW5mb3Jt YXRpb24gQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBN ZXRob2QgKF9RNEQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5IChCQVQxLCAweDgw KSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICBGaWVsZCAoRVJBTSwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgzMiksIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCAgIDQsIAogICAgICAgICAgICAgICAgICAgICAgICBXS0ZO LCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4ODMpLCAKICAgICAgICAg ICAgICAgICAgICAgICAgRk5LWSwgICA4CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICBEZXZpY2UgKFNMUEIpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwQzBFIikgLyogU2xlZXAgQnV0 dG9uIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoX1BSVywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlc6IFBvd2VyIFJlc291 cmNlcyBmb3IgV2FrZQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDIpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkK ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChfUFNXLCAxLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BTVzogUG93ZXIgU3RhdGUgV2FrZQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoQXJn MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTdG9yZSAoMHgwNiwgRk5LWSkgLyogXF9TQl8uUENJMC5MUENCLkVDX18uRk5LWSAq LwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChPbmUsIFdLRk4pIC8qIFxf U0JfLlBDSTAuTFBDQi5FQ19fLldLRk4gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSAoWmVybywgRk5LWSkg LyogXF9TQl8uUENJMC5MUENCLkVDX18uRk5LWSAqLwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0b3JlIChaZXJvLCBXS0ZOKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5XS0ZOICov CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIEZpZWxkIChFUkFNLCBC eXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgT2Zmc2V0ICgweDMyKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsICAgMiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFdLTEQsICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgICAgIE9mZnNldCAoMHg0NiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg LCAgIDIsIAogICAgICAgICAgICAgICAgICAgICAgICBMSURTLCAgIDEKICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgIERldmljZSAoTElEKQogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgIlBOUDBDMEQiIC8qIExp ZCBEZXZpY2UgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKF9MSUQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfTElEOiBMaWQgU3RhdHVzCiAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoTElEUykgLyogXF9TQl8uUENJMC5MUENCLkVDX18uTElEUyAqLwogICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNl cmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQYWNrYWdl ICgweDAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MTgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BTVywgMSwgTm90U2VyaWFsaXplZCkg IC8vIF9QU1c6IFBvd2VyIFN0YXRlIFdha2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEFyZzApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgKE9uZSwgV0tMRCkg LyogXF9TQl8uUENJMC5MUENCLkVDX18uV0tMRCAqLwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIChaZXJvLCBX S0xEKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuRUNfXy5XS0xEICovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgIEZpZWxkIChFUkFNLCBCeXRlQWNjLCBOb0xvY2ssIFByZXNl cnZlKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0 ICgweDA2KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFNORFMsICAgOAogICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChCRUVQLCAxLCBOb3RTZXJpYWxp emVkKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUg KEFyZzAsIFNORFMpIC8qIFxfU0JfLlBDSTAuTFBDQi5FQ19fLlNORFMgKi8KICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIFNjb3BlIChcX1RaKQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChDMkssIDEsIE5vdFNlcmlh bGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE11bHRpcGx5IChBcmcwLCAweDBBLCBMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBZGQgKExvY2FsMCwgMHgwQUFDLCBMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiAoTExlc3NFcXVhbCAoTG9jYWwwLCAweDBBQUMpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwQkI4 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmIChMR3JlYXRlciAoTG9jYWwwLCAweDBGQUMpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwQkI4KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJldHVybiAoTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgICAgICBUaGVybWFsWm9uZSAoVEhNMCkKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQ1JULCAwLCBOb3RTZXJpYWxpemVk KSAgLy8gX0NSVDogQ3JpdGljYWwgVGVtcGVyYXR1cmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKEMySyAoMHg3Rikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChfVE1QLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1RNUDogVGVtcGVyYXR1cmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZXR1cm4gKEMySyAoXF9TQi5QQ0kwLkxQQ0IuRUMuVE1QMCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgIFRoZXJtYWxab25lIChUSE0xKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9DUlQsIDAsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfQ1JUOiBDcml0aWNhbCBUZW1wZXJhdHVyZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQzJLICgweDYzKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKF9QU1YsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFNWOiBQYXNzaXZlIFRlbXBl cmF0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChDMksgKDB4NUUpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1RNUCwgMCwgTm90U2Vy aWFsaXplZCkgIC8vIF9UTVA6IFRlbXBlcmF0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChDMksgKFxfU0IuUENJ MC5MUENCLkVDLlRNUDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICBTY29wZSAoXF9TSSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoX1NTVCwgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9TU1Q6IFN5c3RlbSBTdGF0 dXMKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYgKExFcXVhbCAoQXJnMCwgWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9TQi5QQ0kwLkxQQ0IuRUMuVExFRCAoWmVy bykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX1NCLlBDSTAuTFBDQi5FQy5UTEVE ICgweDA3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElmIChMRXF1YWwgKEFyZzAsIE9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9TQi5QQ0kwLkxQQ0IuRUMu VExFRCAoMHg4MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX1NCLlBDSTAuTFBD Qi5FQy5UTEVEICgweDA3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElmIChMRXF1YWwgKEFyZzAsIDB4MDIpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfU0IuUENJ MC5MUENCLkVDLlRMRUQgKDB4ODApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9T Qi5QQ0kwLkxQQ0IuRUMuVExFRCAoMHhDNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoTEVxdWFsIChBcmcwLCAweDAzKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcX1NCLlBDSTAuTFBDQi5FQy5UTEVEICgweEEwKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFxfU0IuUENJMC5MUENCLkVDLlRMRUQgKDB4ODcpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChETUFDKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDAy MDAiKSAvKiBQQy1jbGFzcyBETUEgQ29udHJvbGxlciAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElE CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSAgLy8g X0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMDAwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDAwMDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAgICAgICAgICAgICAgIC8vIExlbmd0aAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBJTyAo RGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODEsICAgICAgICAgICAg IC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4MSwgICAg ICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MTEsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDA5MywgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDkzLCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVt CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdu bWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRCwgICAgICAgICAgICAgICAvLyBM ZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAg ICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEMwLCAgICAg ICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAw QzAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDIwLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBETUEgKENvbXBhdGliaWxpdHksIE5v dEJ1c01hc3RlciwgVHJhbnNmZXI4XzE2LCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 NH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIERldmljZSAoRldIKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5h bWUgKF9ISUQsIEVpc2FJZCAoIklOVDA4MDAiKSAvKiBJbnRlbCA4MjgwMiBGaXJtd2FyZSBIdWIg RGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgICAgICAgICBOYW1l IChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNl dHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBNZW1v cnkzMkZpeGVkIChSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYwMDAw MDAsICAgICAgICAgLy8gQWRkcmVzcyBCYXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAxMDAwMDAwLCAgICAgICAgIC8vIEFkZHJlc3MgTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICBEZXZpY2UgKEhQRVQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMDEwMyIpIC8qIEhQRVQgU3lzdGVtIFRpbWVy ICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgICAgICAgICBOYW1lIChfQ0lE LCBFaXNhSWQgKCJQTlAwQzAxIikgLyogU3lzdGVtIEJvYXJkICovKSAgLy8gX0NJRDogQ29tcGF0 aWJsZSBJRAogICAgICAgICAgICAgICAgICAgIE5hbWUgKEJVRjAsIFJlc291cmNlVGVtcGxhdGUg KCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeTMy Rml4ZWQgKFJlYWRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRUQwMDAwMCwg ICAgICAgICAvLyBBZGRyZXNzIEJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAw MDA0MDAsICAgICAgICAgLy8gQWRkcmVzcyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9ZMDEpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICBNZXRo b2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElmIChIUFRFKQogICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoTEdyZWF0ZXJFcXVh bCAoT1NZUywgMHgwN0QxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgw eDBCKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIFNlcmlhbGl6ZWQp ICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoSFBURSkKICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoQlVGMCwg XF9TQi5QQ0kwLkxQQ0IuSFBFVC5fWTAxLl9CQVMsIEhQVDApICAvLyBfQkFTOiBCYXNlIEFkZHJl c3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChMRXF1YWwgKEhQQVMsIE9uZSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RvcmUgKDB4RkVEMDEwMDAsIEhQVDApIC8qIFxfU0JfLlBDSTAuTFBDQi5IUEVULl9DUlMu SFBUMCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElmIChMRXF1YWwgKEhQQVMsIDB4MDIpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlICgweEZFRDAyMDAw LCBIUFQwKSAvKiBcX1NCXy5QQ0kwLkxQQ0IuSFBFVC5fQ1JTLkhQVDAgKi8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoTEVxdWFs IChIUEFTLCAweDAzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTdG9yZSAoMHhGRUQwMzAwMCwgSFBUMCkgLyogXF9TQl8uUENJ MC5MUENCLkhQRVQuX0NSUy5IUFQwICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAo QlVGMCkgLyogXF9TQl8uUENJMC5MUENCLkhQRVQuQlVGMCAqLwogICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKFBJQykKICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAw MDAwIikgLyogODI1OS1jb21wYXRpYmxlIFByb2dyYW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxl ciAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NS UywgUmVzb3VyY2VUZW1wbGF0ZSAoKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5n cwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29k ZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwLCAgICAgICAgICAgICAvLyBS YW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMjAsICAgICAgICAg ICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAg ICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAy LCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQog ICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAwMjQsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDAyNCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsICAgICAgICAgICAgICAgLy8gTGVuZ3Ro CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElP IChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyOCwgICAgICAgICAg ICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDI4LCAg ICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMiwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDJDLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwMkMsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGlt dW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxp Z25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8v IExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMzAsICAg ICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAzMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDIsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDAzNCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11 bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDM0LCAgICAgICAgICAgICAvLyBSYW5n ZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAg IC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgICAgICAgICAg ICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MDM4LCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwMzgsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwM0MsICAgICAgICAgICAgIC8vIFJhbmdl IE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAzQywgICAgICAgICAgICAg Ly8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAg ICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsICAg ICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAg ICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDBBMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMEEwLCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERl Y29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEE0LCAgICAgICAgICAgICAv LyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwQTQsICAgICAg ICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEs ICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAyLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAg KQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwQTgsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDBBOCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1l bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsICAgICAgICAgICAgICAgLy8gTGVu Z3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAg IElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBBQywgICAgICAg ICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEFD LCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMiwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMEIwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwQjAsICAgICAgICAgICAgIC8vIFJhbmdlIE1h eGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8g QWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAg IC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg ICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwQjQs ICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDBCNCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDIsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBCOCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWlu aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEI4LCAgICAgICAgICAgICAvLyBS YW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAg ICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgICAgICAg ICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAg ICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwMEJDLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAwQkMsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2Rl MTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0RDAsICAgICAgICAgICAgIC8vIFJh bmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDREMCwgICAgICAgICAg ICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAg ICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIs ICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAg ICAgICAgICAgICAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsyfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgRGV2aWNlIChNQVRIKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMDQiKSAvKiB4ODctY29tcGF0aWJsZSBG bG9hdGluZyBQb2ludCBQcm9jZXNzaW5nIFVuaXQgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAog ICAgICAgICAgICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgIC8vIF9D UlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDBGMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMEYwLCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSVJRTm9G bGFncyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgezEzfQogICAgICAgICAgICAgICAg ICAgIH0pCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChMRFJDKQog ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAo IlBOUDBDMDIiKSAvKiBQTlAgTW90aGVyYm9hcmQgUmVzb3VyY2VzICovKSAgLy8gX0hJRDogSGFy ZHdhcmUgSUQKICAgICAgICAgICAgICAgICAgICBOYW1lIChfVUlELCAweDAyKSAgLy8gX1VJRDog VW5pcXVlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0 ZSAoKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDJFLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwMkUsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGlt dW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxp Z25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8v IExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNEUsICAg ICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDA0RSwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDIsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDA2MSwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11 bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDYxLCAgICAgICAgICAgICAvLyBSYW5n ZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAg IC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAg ICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MDYzLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwNjMsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNjUsICAgICAgICAgICAgIC8vIFJhbmdl IE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA2NSwgICAgICAgICAgICAg Ly8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAg ICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAg ICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAg ICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDA2NywgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDY3LCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERl Y29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDgwLCAgICAgICAgICAgICAv LyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAsICAgICAg ICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEs ICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAxLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAg KQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwOTIsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDA5MiwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1l bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVu Z3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAg IElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBCMiwgICAgICAg ICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEIy LCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMiwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwODAwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1h eGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8g QWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAgICAgICAgICAgICAg IC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg ICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA1MDAs ICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDUwMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4ODAsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ4MCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWlu aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDgwLCAgICAgICAgICAgICAvLyBS YW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAg ICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgICAgICAg ICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAg ICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAo UlRDKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVp c2FJZCAoIlBOUDBCMDAiKSAvKiBBVCBSZWFsLVRpbWUgQ2xvY2sgKi8pICAvLyBfSElEOiBIYXJk d2FyZSBJRAogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUg KCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDA3MCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDcwLCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVt CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdu bWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwOCwgICAgICAgICAgICAgICAvLyBM ZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB9 KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAoVElNUikKICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAw MTAwIikgLyogUEMtY2xhc3MgU3lzdGVtIFRpbWVyICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQK ICAgICAgICAgICAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpICAvLyBf Q1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwNDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDA0MCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChE ZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA1MCwgICAgICAgICAgICAg Ly8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDUwLCAgICAg ICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEw LCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwNCwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgICAgSVJRTm9GbGFncyAoKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgezB9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICBEZXZpY2UgKFBTMkspCiAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMDMwMyIpIC8qIElCTSBFbmhhbmNl ZCBLZXlib2FyZCAoMTAxLzEwMi1rZXksIFBTLzIgTW91c2UpICovKSAgLy8gX0hJRDogSGFyZHdh cmUgSUQKICAgICAgICAgICAgICAgICAgICBOYW1lIChfQ0lELCBFaXNhSWQgKCJQTlAwMzBCIikp ICAvLyBfQ0lEOiBDb21wYXRpYmxlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywg UmVzb3VyY2VUZW1wbGF0ZSAoKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDYwLCAgICAgICAgICAgICAvLyBSYW5n ZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNjAsICAgICAgICAgICAg IC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAg ICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAg ICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAg ICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwNjQsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDA2NCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElSUSAo RWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlLCApCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7MX0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAo X1NUQSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDBGKQogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKFBTMk0p CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlk ICgiUE5QMEYxMyIpIC8qIFBTLzIgTW91c2UgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAg ICAgICAgICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgIC8vIF9DUlM6 IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIElSUSAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlLCApCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7MTJ9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAg ICAgICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBT dGF0dXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoMHgwRikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgIH0KCiAgICAgICAgICAgIERldmljZSAoUEFUQSkKICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgTmFtZSAoX0FEUiwgMHgwMDFGMDAwMSkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAg ICAgICAgIERldmljZSAoUFJJRCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICBOYW1lIChfQURSLCBaZXJvKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAg IE1ldGhvZCAoX0dUTSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9HVE06IEdldCBUaW1pbmcgTW9k ZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoUEJV RiwgQnVmZmVyICgweDE0KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiAwMDAwICovICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAgLyogLi4uLi4uLi4gKi8KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIDAwMDggKi8gIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsICAvKiAuLi4uLi4uLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAx MCAqLyAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IC4uLi4gKi8KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAg ICAgQ3JlYXRlRFdvcmRGaWVsZCAoUEJVRiwgWmVybywgUElPMCkKICAgICAgICAgICAgICAgICAg ICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoUEJVRiwgMHgwNCwgRE1BMCkKICAgICAgICAgICAgICAg ICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoUEJVRiwgMHgwOCwgUElPMSkKICAgICAgICAgICAg ICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoUEJVRiwgMHgwQywgRE1BMSkKICAgICAgICAg ICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoUEJVRiwgMHgxMCwgRkxBRykKICAgICAg ICAgICAgICAgICAgICAgICAgUmV0dXJuIChQQlVGKSAvKiBcX1NCXy5QQ0kwLlBBVEEuUFJJRC5f R1RNLlBCVUYgKi8KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1l dGhvZCAoX1NUTSwgMywgTm90U2VyaWFsaXplZCkgIC8vIF9TVE06IFNldCBUaW1pbmcgTW9kZQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRG aWVsZCAoQXJnMCwgWmVybywgUElPMCkKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdv cmRGaWVsZCAoQXJnMCwgMHgwNCwgRE1BMCkKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRl RFdvcmRGaWVsZCAoQXJnMCwgMHgwOCwgUElPMSkKICAgICAgICAgICAgICAgICAgICAgICAgQ3Jl YXRlRFdvcmRGaWVsZCAoQXJnMCwgMHgwQywgRE1BMSkKICAgICAgICAgICAgICAgICAgICAgICAg Q3JlYXRlRFdvcmRGaWVsZCAoQXJnMCwgMHgxMCwgRkxBRykKICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgIERldmljZSAoRFNLMCkKICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIFplcm8pICAvLyBfQURSOiBBZGRy ZXNzCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKERT SzEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChf QURSLCBPbmUpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKFNBVEEpCiAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAxRjAwMDIpICAvLyBfQURS OiBBZGRyZXNzCiAgICAgICAgICAgICAgICBEZXZpY2UgKFBSSUQpCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgWmVybykgIC8vIF9BRFI6IEFkZHJlc3MK ICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9HVE0sIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBf R1RNOiBHZXQgVGltaW5nIE1vZGUKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIE5hbWUgKFBCVUYsIEJ1ZmZlciAoMHgxNCkKICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAwMCAqLyAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8qIC4uLi4uLi4uICovCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDA4ICovICAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLyogLi4uLi4uLi4gKi8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIDAwMTAgKi8gIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiAuLi4uICovCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAg ICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKFBCVUYsIFplcm8sIFBJTzAp CiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKFBCVUYsIDB4MDQsIERN QTApCiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKFBCVUYsIDB4MDgs IFBJTzEpCiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKFBCVUYsIDB4 MEMsIERNQTEpCiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKFBCVUYs IDB4MTAsIEZMQUcpCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUEJVRikgLyogXF9T Ql8uUENJMC5TQVRBLlBSSUQuX0dUTS5QQlVGICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICBNZXRob2QgKF9TVE0sIDMsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RN OiBTZXQgVGltaW5nIE1vZGUKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzAsIFplcm8sIFBJTzApCiAgICAgICAgICAgICAg ICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzAsIDB4MDQsIERNQTApCiAgICAgICAgICAg ICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzAsIDB4MDgsIFBJTzEpCiAgICAgICAg ICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzAsIDB4MEMsIERNQTEpCiAgICAg ICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzAsIDB4MTAsIEZMQUcpCiAg ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKERTSzApCiAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCBa ZXJvKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgRGV2aWNlIChEU0sxKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoX0FEUiwgT25lKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAg RGV2aWNlIChTQlVTKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAw eDAwMUYwMDAzKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg fQoKICAgIE5hbWUgKF9TMCwgUGFja2FnZSAoMHgwNCkgIC8vIF9TMF86IFMwIFN5c3RlbSBTdGF0 ZQogICAgewogICAgICAgIFplcm8sIAogICAgICAgIFplcm8sIAogICAgICAgIFplcm8sIAogICAg ICAgIFplcm8KICAgIH0pCiAgICBOYW1lIChfUzMsIFBhY2thZ2UgKDB4MDQpICAvLyBfUzNfOiBT MyBTeXN0ZW0gU3RhdGUKICAgIHsKICAgICAgICAweDA1LCAKICAgICAgICAweDA1LCAKICAgICAg ICBaZXJvLCAKICAgICAgICBaZXJvCiAgICB9KQogICAgTmFtZSAoX1M0LCBQYWNrYWdlICgweDA0 KSAgLy8gX1M0XzogUzQgU3lzdGVtIFN0YXRlCiAgICB7CiAgICAgICAgMHgwNiwgCiAgICAgICAg MHgwNiwgCiAgICAgICAgWmVybywgCiAgICAgICAgWmVybwogICAgfSkKICAgIE5hbWUgKF9TNSwg UGFja2FnZSAoMHgwNCkgIC8vIF9TNV86IFM1IFN5c3RlbSBTdGF0ZQogICAgewogICAgICAgIDB4 MDcsIAogICAgICAgIDB4MDcsIAogICAgICAgIFplcm8sIAogICAgICAgIFplcm8KICAgIH0pCiAg ICBTY29wZSAoX1NCKQogICAgewogICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoRExQQywgU3lzdGVt SU8sIDB4MTY0QywgT25lKQogICAgICAgIEZpZWxkIChETFBDLCBCeXRlQWNjLCBOb0xvY2ssIFBy ZXNlcnZlKQogICAgICAgIHsKICAgICAgICAgICAgICAgICwgICAzLCAKICAgICAgICAgICAgRFNU QSwgICAxCiAgICAgICAgfQoKICAgICAgICBEZXZpY2UgKERPQ0spCiAgICAgICAgewogICAgICAg ICAgICBOYW1lIChfSElELCAiQUNQSTAwMDMiIC8qIFBvd2VyIFNvdXJjZSBEZXZpY2UgKi8pICAv LyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICBOYW1lIChfVUlELCBaZXJvKSAgLy8gX1VJ RDogVW5pcXVlIElECiAgICAgICAgICAgIE5hbWUgKF9QQ0wsIFBhY2thZ2UgKDB4MDEpICAvLyBf UENMOiBQb3dlciBDb25zdW1lciBMaXN0CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIF9T QgogICAgICAgICAgICB9KQogICAgICAgICAgICBNZXRob2QgKF9EQ0ssIDEsIE5vdFNlcmlhbGl6 ZWQpICAvLyBfRENLOiBEb2NrIFByZXNlbnQKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg SWYgKEFyZzApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVFJBUCAoT25l KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgIFRSQVAgKDB4MDIpCiAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgWE9yIChBcmcwLCBEU1RBLCBMb2NhbDApCiAgICAgICAgICAgICAgICBSZXR1 cm4gKExvY2FsMCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgIFJldHVybiAoRFNUQSkgLyogXF9TQl8uRFNUQSAqLwogICAgICAgICAgICB9CiAgICAgICAg fQogICAgfQoKICAgIFNjb3BlIChfU0IuUENJMC5MUENCLkVDKQogICAgewogICAgICAgIE1ldGhv ZCAoX1ExOCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgewog ICAgICAgICAgICBOb3RpZnkgKERPQ0ssIDB4MDMpIC8vIEVqZWN0IFJlcXVlc3QKICAgICAgICB9 CgogICAgICAgIE1ldGhvZCAoX1E1MCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1 ZXJ5CiAgICAgICAgewogICAgICAgICAgICBOb3RpZnkgKERPQ0ssIDB4MDMpIC8vIEVqZWN0IFJl cXVlc3QKICAgICAgICB9CgogICAgICAgIE1ldGhvZCAoX1E1OCwgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgewogICAgICAgICAgICBOb3RpZnkgKERPQ0ssIFpl cm8pIC8vIEJ1cyBDaGVjawogICAgICAgIH0KICAgIH0KfQoK --=-6NiuIYU3QnJEtYPGEdFB--