From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28733 invoked by alias); 21 Sep 2010 12:39:47 -0000 Received: (qmail 28610 invoked by uid 22791); 21 Sep 2010 12:39:46 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from va3ehsobe004.messaging.microsoft.com (HELO VA3EHSOBE004.bigfish.com) (216.32.180.14) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 21 Sep 2010 12:39:39 +0000 Received: from mail158-va3-R.bigfish.com (10.7.14.243) by VA3EHSOBE004.bigfish.com (10.7.40.24) with Microsoft SMTP Server id 8.1.340.0; Tue, 21 Sep 2010 12:39:35 +0000 Received: from mail158-va3 (localhost.localdomain [127.0.0.1]) by mail158-va3-R.bigfish.com (Postfix) with ESMTP id BB5C05A80A4 for ; Tue, 21 Sep 2010 12:39:35 +0000 (UTC) X-SpamScore: -2 X-BigFish: VPS-2(zz936eKzz1202hzz8275bhz32i2a8h34h61h) X-Spam-TCS-SCL: 0:0 Received: from mail158-va3 (localhost.localdomain [127.0.0.1]) by mail158-va3 (MessageSwitch) id 1285072775349460_8024; Tue, 21 Sep 2010 12:39:35 +0000 (UTC) Received: from VA3EHSMHS016.bigfish.com (unknown [10.7.14.244]) by mail158-va3.bigfish.com (Postfix) with ESMTP id 51CC11058051 for ; Tue, 21 Sep 2010 12:39:35 +0000 (UTC) Received: from Kcinpunhjhc01.kpit.com (203.197.93.240) by VA3EHSMHS016.bigfish.com (10.7.99.26) with Microsoft SMTP Server (TLS) id 14.0.482.44; Tue, 21 Sep 2010 12:39:19 +0000 Received: from Kcinpunhjcms01.kpit.com ([172.10.16.121]) by Kcinpunhjhc01.kpit.com ([172.10.16.123]) with mapi; Tue, 21 Sep 2010 18:09:16 +0530 From: Rathish C To: "gdb-patches@sourceware.org" CC: Gina Verlekar Date: Tue, 21 Sep 2010 19:55:00 -0000 Subject: [PATCH, V850] Add support for V850E2 and V850E2V3 Message-ID: <371569CBCFB2E745B891DBB88B2DFDDD19E5643B64@KCINPUNHJCMS01.kpit.com> Content-Type: multipart/mixed; boundary="_002_371569CBCFB2E745B891DBB88B2DFDDD19E5643B64KCINPUNHJCMS0_" MIME-Version: 1.0 X-Reverse-DNS: Kcinpunhjhc01.kpit.com Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-09/txt/msg00349.txt.bz2 --_002_371569CBCFB2E745B891DBB88B2DFDDD19E5643B64KCINPUNHJCMS0_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 2357 Hi, Please find attached the "v850-gdb-v850e2-v850e2v3-support.patch". The patch adds support for new target variants of V850 i.e. V850E2 and V850E2V3. These processors are upwardly compatible with earlier V850 targets already supported in the current binutils port. V850E2V3 target supports floating point operations. Hence, those instructions along with=20 registers supported by V850E2V3 are defined in the current patch. The GCC and Newlib part of the support have been posted and accepted. Please review the patch and let me know if there should be any=20 modifications in it.=20 2010-09-21 Rathish.C =09 * gdb/v850-tdep.c: Add the enum values for mpu and fpu registers (v850_register_name): Add the mpu and fpu register names. (v850e_register_name): Add the mpu and fpu register names. (v850e2_register_name): New function. (v850_gdbarch_init): Add case for bfd_mach_v850e2 and=20 bfd_mach_v850e2v3. * sim/common/sim-trace.c: Update the function prototype of=20 save_data_size. Move the enum data_fmt from here * sim/common/sim-trace.h: to here. Add function prototype of save_data * sim/v850/sim-main.h: Update the struct _v850_regs to include mpu and fpu system registers. Define the macros to access the mpu and fpu system registers. (SEXT3): Define. (TRACE_FP_INPUT_FPU1, TRACE_FP_INPUT_FPU2, TRACE_FP_INPUT_FPU3): Define. (TRACE_FP_INPUT_BOOL1_FPU2): Define. (TRACE_FP_INPUT_WORD2): Define. (TRACE_FP_RESULT_WORD1, TRACE_FP_RESULT_WORD2): Define. * sim/v850/simops.c: Update the function prototype of Add32 (update_fpsr): New function. (SignalException): New function. (SignalExceptionFPE): New function. (check_invalid_snan): New function. (v850_float_compare): New function. (v850_div): New function. (v850_divu): New function. (v850_sar): New function. (v850_shl): New function. (v850_shr): New function. (v850_satadd): New function. (v850_satsub): New function. (load_data_mem): New function. (store_data_mem): New function. (mpu_load_mem_test): New function. (mpu_store_mem_test): New function. * sim/v850/simops.h: Add function prototype for above mentioned functions. (check_cvt_fi, check_cvt_if, check_cvt_ff): Define. * sim/v850/v850-dc: Add entry for v850e2 and v850e2v3. * sim/v850/v850.igen: Add support for v850e2 and v850e2v3 Thanks & Regards, Rathish.C --_002_371569CBCFB2E745B891DBB88B2DFDDD19E5643B64KCINPUNHJCMS0_ Content-Type: application/octet-stream; name="v850-gdb-v850e2-v850e2v3-support.patch" Content-Description: v850-gdb-v850e2-v850e2v3-support.patch Content-Disposition: attachment; filename="v850-gdb-v850e2-v850e2v3-support.patch"; size=97130; creation-date="Tue, 21 Sep 2010 12:25:57 GMT"; modification-date="Tue, 21 Sep 2010 10:25:43 GMT" Content-Transfer-Encoding: base64 Content-length: 131667 ZGlmZiAtdXBOciBnZGItNy4yLjUwLW9yaWcvZ2RiL3Y4NTAtdGRlcC5jIGdk Yi03LjIuNTAtbW9kaWZpZWQvc3JjL2dkYi92ODUwLXRkZXAuYwotLS0gZ2Ri LTcuMi41MC1vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDEwLTA5LTEwIDA0OjM0 OjQ2LjAwMDAwMDAwMCArMDUzMAorKysgZ2RiLTcuMi41MC1tb2RpZmllZC9n ZGIvdjg1MC10ZGVwLmMJMjAxMC0wOS0xOCAxOTowNjozNC4wMDAwMDAwMDAg KzA1MzAKQEAgLTEwMCw4ICsxMDAsMTAwIEBAIGVudW0KICAgICBFX1I2MV9S RUdOVU0sCiAgICAgRV9SNjJfUkVHTlVNLAogICAgIEVfUjYzX1JFR05VTSwK LSAgICBFX1I2NF9SRUdOVU0sIEVfUENfUkVHTlVNID0gRV9SNjRfUkVHTlVN LAorCisgICAgLyogbXB1MCBzeXN0ZW0gcmVnaXN0ZXJzICovIAorICAgIEVf UjY0X1JFR05VTSwKICAgICBFX1I2NV9SRUdOVU0sCisgICAgRV9SNjZfUkVH TlVNLAorICAgIEVfUjY3X1JFR05VTSwKKyAgICBFX1I2OF9SRUdOVU0sCisg ICAgRV9SNjlfUkVHTlVNLAorICAgIEVfUjcwX1JFR05VTSwKKyAgICBFX1I3 MV9SRUdOVU0sCisgICAgRV9SNzJfUkVHTlVNLAorICAgIEVfUjczX1JFR05V TSwKKyAgICBFX1I3NF9SRUdOVU0sCisgICAgRV9SNzVfUkVHTlVNLAorICAg IEVfUjc2X1JFR05VTSwKKyAgICBFX1I3N19SRUdOVU0sCisgICAgRV9SNzhf UkVHTlVNLAorICAgIEVfUjc5X1JFR05VTSwKKyAgICBFX1I4MF9SRUdOVU0s CisgICAgRV9SODFfUkVHTlVNLAorICAgIEVfUjgyX1JFR05VTSwKKyAgICBF X1I4M19SRUdOVU0sCisgICAgRV9SODRfUkVHTlVNLAorICAgIEVfUjg1X1JF R05VTSwKKyAgICBFX1I4Nl9SRUdOVU0sCisgICAgRV9SODdfUkVHTlVNLAor ICAgIEVfUjg4X1JFR05VTSwKKyAgICBFX1I4OV9SRUdOVU0sCisgICAgRV9S OTBfUkVHTlVNLAorICAgIEVfUjkxX1JFR05VTSwKKworICAgIC8qIG1wdTEg c3lzdGVtIHJlZ2lzdGVycyAqLyAKKyAgICBFX1I5Ml9SRUdOVU0sCisgICAg RV9SOTNfUkVHTlVNLAorICAgIEVfUjk0X1JFR05VTSwKKyAgICBFX1I5NV9S RUdOVU0sCisgICAgRV9SOTZfUkVHTlVNLAorICAgIEVfUjk3X1JFR05VTSwK KyAgICBFX1I5OF9SRUdOVU0sCisgICAgRV9SOTlfUkVHTlVNLAorICAgIEVf UjEwMF9SRUdOVU0sCisgICAgRV9SMTAxX1JFR05VTSwKKyAgICBFX1IxMDJf UkVHTlVNLAorICAgIEVfUjEwM19SRUdOVU0sCisgICAgRV9SMTA0X1JFR05V TSwKKyAgICBFX1IxMDVfUkVHTlVNLAorICAgIEVfUjEwNl9SRUdOVU0sCisg ICAgRV9SMTA3X1JFR05VTSwKKyAgICBFX1IxMDhfUkVHTlVNLAorICAgIEVf UjEwOV9SRUdOVU0sCisgICAgRV9SMTEwX1JFR05VTSwKKyAgICBFX1IxMTFf UkVHTlVNLAorICAgIEVfUjExMl9SRUdOVU0sCisgICAgRV9SMTEzX1JFR05V TSwKKyAgICBFX1IxMTRfUkVHTlVNLAorICAgIEVfUjExNV9SRUdOVU0sCisg ICAgRV9SMTE2X1JFR05VTSwKKyAgICBFX1IxMTdfUkVHTlVNLAorICAgIEVf UjExOF9SRUdOVU0sCisgICAgRV9SMTE5X1JFR05VTSwKKworICAgIC8qIGZw dSBzeXN0ZW0gcmVnaXN0ZXJzICovIAorICAgIEVfUjEyMF9SRUdOVU0sCisg ICAgRV9SMTIxX1JFR05VTSwKKyAgICBFX1IxMjJfUkVHTlVNLAorICAgIEVf UjEyM19SRUdOVU0sCisgICAgRV9SMTI0X1JFR05VTSwKKyAgICBFX1IxMjVf UkVHTlVNLAorICAgIEVfUjEyNl9SRUdOVU0sIEVfRlBTUl9SRUdOVU0gPSBF X1IxMjZfUkVHTlVNLCAKKyAgICBFX1IxMjdfUkVHTlVNLCBFX0ZQRVBDX1JF R05VTSA9IEVfUjEyN19SRUdOVU0sIAorICAgIEVfUjEyOF9SRUdOVU0sIEVf RlBTVF9SRUdOVU0gPSBFX1IxMjhfUkVHTlVNLCAKKyAgICBFX1IxMjlfUkVH TlVNLCBFX0ZQQ0NfUkVHTlVNID0gRV9SMTI5X1JFR05VTSwgCisgICAgRV9S MTMwX1JFR05VTSwgRV9GUENGR19SRUdOVU0gPSBFX1IxMzBfUkVHTlVNLCAK KyAgICBFX1IxMzFfUkVHTlVNLAorICAgIEVfUjEzMl9SRUdOVU0sCisgICAg RV9SMTMzX1JFR05VTSwKKyAgICBFX1IxMzRfUkVHTlVNLAorICAgIEVfUjEz NV9SRUdOVU0sCisgICAgRV9SMTM2X1JFR05VTSwKKyAgICBFX1IxMzdfUkVH TlVNLAorICAgIEVfUjEzOF9SRUdOVU0sCisgICAgRV9SMTM5X1JFR05VTSwK KyAgICBFX1IxNDBfUkVHTlVNLAorICAgIEVfUjE0MV9SRUdOVU0sCisgICAg RV9SMTQyX1JFR05VTSwKKyAgICBFX1IxNDNfUkVHTlVNLAorICAgIEVfUjE0 NF9SRUdOVU0sCisgICAgRV9SMTQ1X1JFR05VTSwKKyAgICBFX1IxNDZfUkVH TlVNLAorICAgIEVfUjE0N19SRUdOVU0sCisKKyAgICAvKiBwYyBldGMuICov CisgICAgRV9SMTQ4X1JFR05VTSwgRV9QQ19SRUdOVU0gPSBFX1IxNDhfUkVH TlVNLAorICAgIEVfUjE0OV9SRUdOVU0sCiAgICAgRV9OVU1fUkVHUwogICB9 OwogCkBAIC0xNDIsMTQgKzIzNCwzMiBAQCBzdGF0aWMgY29uc3QgY2hhciAq CiB2ODUwX3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBpbnQgcmVnbnVtKQogewogICBzdGF0aWMgY29uc3QgY2hhciAqdjg1MF9y ZWdfbmFtZXNbXSA9Ci0gIHsgInIwIiwgInIxIiwgInIyIiwgInIzIiwgInI0 IiwgInI1IiwgInI2IiwgInI3IiwgCi0gICAgInI4IiwgInI5IiwgInIxMCIs ICJyMTEiLCAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IiwgCi0gICAgInIx NiIsICJyMTciLCAicjE4IiwgInIxOSIsICJyMjAiLCAicjIxIiwgInIyMiIs ICJyMjMiLCAKKyAgeworICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsICJy NCIsICJyNSIsICJyNiIsICJyNyIsCisgICAgInI4IiwgInI5IiwgInIxMCIs ICJyMTEiLCAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IiwKKyAgICAicjE2 IiwgInIxNyIsICJyMTgiLCAicjE5IiwgInIyMCIsICJyMjEiLCAicjIyIiwg InIyMyIsCiAgICAgInIyNCIsICJyMjUiLCAicjI2IiwgInIyNyIsICJyMjgi LCAicjI5IiwgInIzMCIsICJyMzEiLAorICAgIAogICAgICJlaXBjIiwgImVp cHN3IiwgImZlcGMiLCAiZmVwc3ciLCAiZWNyIiwgInBzdyIsICJzcjYiLCAi c3I3IiwKICAgICAic3I4IiwgInNyOSIsICJzcjEwIiwgInNyMTEiLCAic3Ix MiIsICJzcjEzIiwgInNyMTQiLCAic3IxNSIsCiAgICAgInNyMTYiLCAic3Ix NyIsICJzcjE4IiwgInNyMTkiLCAic3IyMCIsICJzcjIxIiwgInNyMjIiLCAi c3IyMyIsCiAgICAgInNyMjQiLCAic3IyNSIsICJzcjI2IiwgInNyMjciLCAi c3IyOCIsICJzcjI5IiwgInNyMzAiLCAic3IzMSIsCisKKyAgICAic3IzMiIs ICJzcjMzIiwgInNyMzQiLCAic3IzNSIsICJzcjM2IiwgInNyMzciLCAic3Iz OCIsICJzcjM5IiwKKyAgICAic3I0MCIsICJzcjQxIiwgInNyNDIiLCAic3I0 MyIsICJzcjQ0IiwgInNyNDUiLCAic3I0NiIsICJzcjQ3IiwKKyAgICAic3I0 OCIsICJzcjQ5IiwgInNyNTAiLCAic3I1MSIsICJzcjUyIiwgInNyNTMiLCAi c3I1NCIsICJzcjU1IiwKKyAgICAic3I1NiIsICJzcjU3IiwgInNyNTgiLCAi c3I1OSIsCisKKyAgICAic3I2MCIsICJzcjYxIiwgInNyNjIiLCAic3I2MyIs ICJzcjY0IiwgInNyNjUiLCAic3I2NiIsICJzcjY3IiwKKyAgICAic3I2OCIs ICJzcjY5IiwgInNyNzAiLCAic3I3MSIsICJzcjcyIiwgInNyNzMiLCAic3I3 NCIsICJzcjc1IiwKKyAgICAic3I3NiIsICJzcjc3IiwgInNyNzgiLCAic3I3 OSIsICJzcjgwIiwgInNyODEiLCAic3I4MiIsICJzcjgzIiwKKyAgICAic3I4 NCIsICJzcjg1IiwgInNyODYiLCAic3I4NyIsCisKKyAgICAic3I4OCIsICJz cjg5IiwgInNyOTAiLCAic3I5MSIsICJzcjkyIiwgInNyOTMiLCAic3I5NCIs ICJzcjk1IiwKKyAgICAic3I5NiIsICJzcjk3IiwgInNyOTgiLCAic3I5OSIs ICJzcjEwMCIsICJzcjEwMSIsICJzcjEwMiIsICJzcjEwMyIsCisgICAgInNy MTA0IiwgInNyMTA1IiwgInNyMTA2IiwgInNyMTA3IiwgInNyMTA4IiwgInNy MTA5IiwgInNyMTEwIiwgInNyMTExIiwKKyAgICAic3IxMTIiLCAic3IxMTMi LCAic3IxMTQiLCAic3IxMTUiLAorCiAgICAgInBjIiwgImZwIgogICB9Owog ICBpZiAocmVnbnVtIDwgMCB8fCByZWdudW0gPj0gRV9OVU1fUkVHUykKQEAg LTE2NiwxMCArMjc2LDI3IEBAIHY4NTBlX3JlZ2lzdGVyX25hbWUgKHN0cnVj dCBnZGJhcmNoICpnZGIKICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIs ICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiLAogICAgICJyMTYiLCAicjE3 IiwgInIxOCIsICJyMTkiLCAicjIwIiwgInIyMSIsICJyMjIiLCAicjIzIiwK ICAgICAicjI0IiwgInIyNSIsICJyMjYiLCAicjI3IiwgInIyOCIsICJyMjki LCAicjMwIiwgInIzMSIsCisKICAgICAiZWlwYyIsICJlaXBzdyIsICJmZXBj IiwgImZlcHN3IiwgImVjciIsICJwc3ciLCAic3I2IiwgInNyNyIsCiAgICAg InNyOCIsICJzcjkiLCAic3IxMCIsICJzcjExIiwgInNyMTIiLCAic3IxMyIs ICJzcjE0IiwgInNyMTUiLAogICAgICJjdHBjIiwgImN0cHN3IiwgImRicGMi LCAiZGJwc3ciLCAiY3RicCIsICJzcjIxIiwgInNyMjIiLCAic3IyMyIsCiAg ICAgInNyMjQiLCAic3IyNSIsICJzcjI2IiwgInNyMjciLCAic3IyOCIsICJz cjI5IiwgInNyMzAiLCAic3IzMSIsCisKKyAgICAic3IzMiIsICJzcjMzIiwg InNyMzQiLCAic3IzNSIsICJzcjM2IiwgInNyMzciLCAic3IzOCIsICJzcjM5 IiwKKyAgICAic3I0MCIsICJzcjQxIiwgInNyNDIiLCAic3I0MyIsICJzcjQ0 IiwgInNyNDUiLCAic3I0NiIsICJzcjQ3IiwKKyAgICAic3I0OCIsICJzcjQ5 IiwgInNyNTAiLCAic3I1MSIsICJzcjUyIiwgInNyNTMiLCAic3I1NCIsICJz cjU1IiwKKyAgICAic3I1NiIsICJzcjU3IiwgInNyNTgiLCAic3I1OSIsCisK KyAgICAic3I2MCIsICJzcjYxIiwgInNyNjIiLCAic3I2MyIsICJzcjY0Iiwg InNyNjUiLCAic3I2NiIsICJzcjY3IiwKKyAgICAic3I2OCIsICJzcjY5Iiwg InNyNzAiLCAic3I3MSIsICJzcjcyIiwgInNyNzMiLCAic3I3NCIsICJzcjc1 IiwKKyAgICAic3I3NiIsICJzcjc3IiwgInNyNzgiLCAic3I3OSIsICJzcjgw IiwgInNyODEiLCAic3I4MiIsICJzcjgzIiwKKyAgICAic3I4NCIsICJzcjg1 IiwgInNyODYiLCAic3I4NyIsCisKKyAgICAic3I4OCIsICJzcjg5IiwgInNy OTAiLCAic3I5MSIsICJzcjkyIiwgInNyOTMiLCAic3I5NCIsICJzcjk1IiwK KyAgICAic3I5NiIsICJzcjk3IiwgInNyOTgiLCAic3I5OSIsICJzcjEwMCIs ICJzcjEwMSIsICJzcjEwMiIsICJzcjEwMyIsCisgICAgInNyMTA0IiwgInNy MTA1IiwgInNyMTA2IiwgInNyMTA3IiwgInNyMTA4IiwgInNyMTA5IiwgInNy MTEwIiwgInNyMTExIiwKKyAgICAic3IxMTIiLCAic3IxMTMiLCAic3IxMTQi LCAic3IxMTUiLAorCiAgICAgInBjIiwgImZwIgogICB9OwogICBpZiAocmVn bnVtIDwgMCB8fCByZWdudW0gPj0gRV9OVU1fUkVHUykKQEAgLTE3Nyw2ICsz MDQsNDYgQEAgdjg1MGVfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2gg KmdkYgogICByZXR1cm4gdjg1MGVfcmVnX25hbWVzW3JlZ251bV07CiB9CiAK K3N0YXRpYyBjb25zdCBjaGFyICoKK3Y4NTBlMl9yZWdpc3Rlcl9uYW1lIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKK3sKKyAgc3Rh dGljIGNvbnN0IGNoYXIgKnY4NTBlMl9yZWdfbmFtZXNbXSA9CisgIHsKKyAg ICAicjAiLCAicjEiLCAicjIiLCAicjMiLCAicjQiLCAicjUiLCAicjYiLCAi cjciLAorICAgICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwgInIxMiIsICJy MTMiLCAicjE0IiwgInIxNSIsCisgICAgInIxNiIsICJyMTciLCAicjE4Iiwg InIxOSIsICJyMjAiLCAicjIxIiwgInIyMiIsICJyMjMiLAorICAgICJyMjQi LCAicjI1IiwgInIyNiIsICJyMjciLCAicjI4IiwgInIyOSIsICJyMzAiLCAi cjMxIiwKKworICAgICJlaXBjIiwgImVpcHN3IiwgImZlcGMiLCAiZmVwc3ci LCAiZWNyIiwgInBzdyIsICJzcjYiLCAic3I3IiwKKyAgICAic3I4IiwgInNy OSIsICJzcjEwIiwgInNyMTEiLCAic3IxMiIsICJzcjEzIiwgInNyMTQiLCAi c3IxNSIsCisgICAgImN0cGMiLCAiY3Rwc3ciLCAiZGJwYyIsICJkYnBzdyIs ICJjdGJwIiwgInNyMjEiLCAic3IyMiIsICJzcjIzIiwKKyAgICAic3IyNCIs ICJzcjI1IiwgInNyMjYiLCAic3IyNyIsICJzcjI4IiwgInNyMjkiLCAic3Iz MCIsICJzcjMxIiwKKworICAgIC8qIG1wdTAgc3lzdGVtIHJlZ2lzdGVycyAq LyAKKyAgICAidmlwIiwgInNyMzMiLCAic3IzNCIsICJzcjM1IiwgInZtZWNy IiwgInZtdGlkIiwgInZtYWRyIiwgInNyMzkiLAorICAgICJ2cGVjciIsICJ2 cHRpZCIsICJ2cGFkciIsICJzcjQzIiwgInZkZWNyIiwgInZkdGlkIiwgInNy NDYiLCAic3I0NyIsCisgICAgInNyNDgiLCAic3I0OSIsICJzcjUwIiwgInNy NTEiLCAic3I1MiIsICJzcjUzIiwgInNyNTQiLCAic3I1NSIsCisgICAgInNy NTYiLCAic3I1NyIsICJzcjU4IiwgInNyNTkiLAorCisgICAgLyogbXB1MSBz eXN0ZW0gcmVnaXN0ZXJzICovIAorICAgICJtcG0iLCAibXBjIiwgInRpZCIs ICJwcGEiLCAicHBtIiwgInBwYyIsICJkY2MiLCAiZGN2MCIsCisgICAgImRj djEiLCAic3I2OSIsICJzcGFsIiwgInNwYXUiLCAiaXBhMGwiLCAiaXBhMHUi LCAiaXBhMWwiLCAiaXBhMXUiLAorICAgICJpYXAybCIsICJpcGEydSIsICJp cGEzbCIsICJpcGEzdSIsICJkcGEwbCIsICJkcGEwdSIsICJkcGExbCIsICJk cGExdSIsCisgICAgImRwYTJsIiwgImRwYTJ1IiwgImRwYTNsIiwgImRwYTN1 IiwKKworICAgIC8qIGZwdSBzeXN0ZW0gcmVnaXN0ZXJzICovIAorICAgICJz cjg4IiwgInNyODkiLCAic3I5MCIsICJzcjkxIiwgInNyOTIiLCAic3I5MyIs ICJmcHNyIiwgImZwZXBjIiwKKyAgICAiZnBzdCIsICJmcGNjIiwgImZwY2Zn IiwgInNyOTkiLCAic3IxMDAiLCAic3IxMDEiLCAic3IxMDIiLCAic3IxMDMi LAorICAgICJzcjEwNCIsICJzcjEwNSIsICJzcjEwNiIsICJzcjEwNyIsICJz cjEwOCIsICJzcjEwOSIsICJzcjExMCIsICJzcjExMSIsCisgICAgInNyMTEy IiwgInNyMTEzIiwgInNyMTE0IiwgInNyMTE1IiwKKworICAgICJwYyIsICJm cCIKKyAgfTsKKyAgaWYgKHJlZ251bSA8IDAgfHwgcmVnbnVtID49IEVfTlVN X1JFR1MpCisgICAgcmV0dXJuIE5VTEw7CisgIHJldHVybiB2ODUwZTJfcmVn X25hbWVzW3JlZ251bV07Cit9CisKIC8qIFJldHVybnMgdGhlIGRlZmF1bHQg dHlwZSBmb3IgcmVnaXN0ZXIgTi4gICovCiAKIHN0YXRpYyBzdHJ1Y3QgdHlw ZSAqCkBAIC05OTYsNiArMTE2MywxMCBAQCB2ODUwX2dkYmFyY2hfaW5pdCAo c3RydWN0IGdkYmFyY2hfaW5mbyBpCiAgICAgY2FzZSBiZmRfbWFjaF92ODUw ZTE6CiAgICAgICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNo LCB2ODUwZV9yZWdpc3Rlcl9uYW1lKTsKICAgICAgIGJyZWFrOworICAgIGNh c2UgYmZkX21hY2hfdjg1MGUyOgorICAgIGNhc2UgYmZkX21hY2hfdjg1MGUy djM6CisgICAgICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNo LCB2ODUwZTJfcmVnaXN0ZXJfbmFtZSk7CisgICAgICBicmVhazsgCiAgICAg fQogCiAgIHNldF9nZGJhcmNoX251bV9yZWdzIChnZGJhcmNoLCBFX05VTV9S RUdTKTsKZGlmZiAtdXBOciBnZGItNy4yLjUwLW9yaWcvc2ltL2NvbW1vbi9z aW0tdHJhY2UuYyBnZGItNy4yLjUwLW1vZGlmaWVkL3NyYy9zaW0vY29tbW9u L3NpbS10cmFjZS5jCi0tLSBnZGItNy4yLjUwLW9yaWcvc2ltL2NvbW1vbi9z aW0tdHJhY2UuYwkyMDEwLTA0LTEyIDIyOjIzOjMzLjAwMDAwMDAwMCArMDUz MAorKysgZ2RiLTcuMi41MC1tb2RpZmllZC9zaW0vY29tbW9uL3NpbS10cmFj ZS5jCTIwMTAtMDktMTggMTk6NDc6MzUuMDAwMDAwMDAwICswNTMwCkBAIC00 ODYsMTcgKzQ4Niw2IEBAIHRyYWNlX3VuaW5zdGFsbCAoU0lNX0RFU0Mgc2Qp CiAgICAgfQogfQogDAotdHlwZWRlZiBlbnVtIHsKLSAgdHJhY2VfZm10X2lu dmFsaWQsCi0gIHRyYWNlX2ZtdF93b3JkLAotICB0cmFjZV9mbXRfZnAsCi0g IHRyYWNlX2ZtdF9mcHUsCi0gIHRyYWNlX2ZtdF9zdHJpbmcsCi0gIHRyYWNl X2ZtdF9ib29sLAotICB0cmFjZV9mbXRfYWRkciwKLSAgdHJhY2VfZm10X2lu c3RydWN0aW9uX2luY29tcGxldGUsCi19IGRhdGFfZm10OwotCiAvKiBjb21w dXRlIHRoZSBuciBvZiB0cmFjZSBkYXRhIHVuaXRzIGNvbnN1bWVkIGJ5IGRh dGEgKi8KIHN0YXRpYyBpbnQKIHNhdmVfZGF0YV9zaXplIChUUkFDRV9EQVRB ICpkYXRhLApAQCAtNTA4LDcgKzQ5Nyw3IEBAIHNhdmVfZGF0YV9zaXplIChU UkFDRV9EQVRBICpkYXRhLAogCiAKIC8qIEFyY2hpdmUgREFUQSBpbnRvIHRo ZSB0cmFjZSBidWZmZXIgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzYXZlX2Rh dGEgKFNJTV9ERVNDIHNkLAogCSAgIFRSQUNFX0RBVEEgKmRhdGEsCiAJICAg ZGF0YV9mbXQgZm10LApkaWZmIC11cE5yIGdkYi03LjIuNTAtb3JpZy9zaW0v Y29tbW9uL3NpbS10cmFjZS5oIGdkYi03LjIuNTAtbW9kaWZpZWQvc3JjL3Np bS9jb21tb24vc2ltLXRyYWNlLmgKLS0tIGdkYi03LjIuNTAtb3JpZy9zaW0v Y29tbW9uL3NpbS10cmFjZS5oCTIwMTAtMDEtMDEgMTU6MzM6MjcuMDAwMDAw MDAwICswNTMwCisrKyBnZGItNy4yLjUwLW1vZGlmaWVkL3NpbS9jb21tb24v c2ltLXRyYWNlLmgJMjAxMC0wOS0xOCAxOTo0Njo0Ni4wMDAwMDAwMDAgKzA1 MzAKQEAgLTI0Myw5ICsyNDMsMjYgQEAgZXh0ZXJuIHZvaWQgdHJhY2VfZ2Vu ZXJpYyBQQVJBTVMgKChTSU1fRAogCQkJCSAgIC4uLikpCiAgICAgIF9fYXR0 cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCA0LCA1KSkpOwogCit0eXBlZGVm IGVudW0geworICB0cmFjZV9mbXRfaW52YWxpZCwKKyAgdHJhY2VfZm10X3dv cmQsCisgIHRyYWNlX2ZtdF9mcCwKKyAgdHJhY2VfZm10X2ZwdSwKKyAgdHJh Y2VfZm10X3N0cmluZywKKyAgdHJhY2VfZm10X2Jvb2wsCisgIHRyYWNlX2Zt dF9hZGRyLAorICB0cmFjZV9mbXRfaW5zdHJ1Y3Rpb25faW5jb21wbGV0ZSwK K30gZGF0YV9mbXQ7CisKIC8qIFRyYWNlIGEgdmFyeWluZyBudW1iZXIgb2Yg d29yZCBzaXplZCBpbnB1dHMvb3V0cHV0cy4gIHRyYWNlX3Jlc3VsdCoKICAg IG11c3QgYmUgY2FsbGVkIHRvIGNsb3NlIHRoZSB0cmFjZSBvcGVyYXRpb24u ICovCiAKK2V4dGVybiB2b2lkIHNhdmVfZGF0YSBQQVJBTVMgKChTSU1fREVT QyBzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9E QVRBICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFfZm10IGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs b25nIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgdm9pZCAqYnVmKSk7CisKIGV4dGVybiB2b2lkIHRyYWNlX2lucHV0MCBQ QVJBTVMgKChTSU1fREVTQyBzZCwKIAkJCQkgIHNpbV9jcHUgKmNwdSwKIAkJ CQkgIGludCB0cmFjZV9pZHgpKTsKZGlmZiAtdXBOciBnZGItNy4yLjUwLW9y aWcvc2ltL3Y4NTAvc2ltLW1haW4uaCBnZGItNy4yLjUwLW1vZGlmaWVkL3Ny Yy9zaW0vdjg1MC9zaW0tbWFpbi5oCi0tLSBnZGItNy4yLjUwLW9yaWcvc2lt L3Y4NTAvc2ltLW1haW4uaAkyMDAyLTExLTMwIDIzOjMxOjMwLjAwMDAwMDAw MCArMDUzMAorKysgZ2RiLTcuMi41MC1tb2RpZmllZC9zaW0vdjg1MC9zaW0t bWFpbi5oCTIwMTAtMDktMTggMTk6NTQ6NDAuMDAwMDAwMDAwICswNTMwCkBA IC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJzaW0tYmFzaWNzLmgiCiAj aW5jbHVkZSAic2ltLXNpZ25hbC5oIgorI2luY2x1ZGUgInNpbS1mcHUuaCIK IAogdHlwZWRlZiBhZGRyZXNzX3dvcmQgc2ltX2NpYTsKIApAQCAtMzgsNiAr MzksOSBAQCB0eXBlZGVmIHVuc2lnbmVkMzIgcmVnX3Q7CiB0eXBlZGVmIHN0 cnVjdCBfdjg1MF9yZWdzIHsKICAgcmVnX3QgcmVnc1szMl07CQkvKiBnZW5l cmFsLXB1cnBvc2UgcmVnaXN0ZXJzICovCiAgIHJlZ190IHNyZWdzWzMyXTsJ CS8qIHN5c3RlbSByZWdpc3RlcnMsIGluY2x1ZGluZyBwc3cgKi8KKyAgcmVn X3QgbXB1MF9zcmVnc1syOF07ICAgICAgICAgLyogbXB1MCBzeXN0ZW0gcmVn aXN0ZXJzICovCisgIHJlZ190IG1wdTFfc3JlZ3NbMjhdOyAgICAgICAgIC8q IG1wdTEgc3lzdGVtIHJlZ2lzdGVycyAqLworICByZWdfdCBmcHVfc3JlZ3Nb MjhdOyAgICAgICAgICAvKiBmcHUgc3lzdGVtIHJlZ2lzdGVycyAqLwogICBy ZWdfdCBwYzsKICAgaW50IGR1bW15X21lbTsJCS8qIHdoZXJlIGludmFsaWQg YWNjZXNzZXMgZ28gKi8KIH0gdjg1MF9yZWdzOwpAQCAtNjEsNiArNjUsNyBA QCBzdHJ1Y3Qgc2ltX3N0YXRlIHsKICNkZWZpbmUgU1RBVEVfQ1BVKHNkLG4p ICgmKHNkKS0+Y3B1W25dKQogI2Vsc2UKICNkZWZpbmUgU1RBVEVfQ1BVKHNk LG4pICgmKHNkKS0+Y3B1WzBdKQorI2RlZmluZSBDUFUgKFNUQVRFX0NQVSAo c2QsIDApKQogI2VuZGlmCiAjaWYgMAogICBTSU1fQUREUiByb21fc2l6ZTsK QEAgLTEyMiwxMSArMTI3LDE1IEBAIG5pYSA9IFBDCiAvKiBuZXcgKi8KICNk ZWZpbmUgR1IgICgoQ1BVKS0+cmVnLnJlZ3MpCiAjZGVmaW5lIFNSICAoKENQ VSktPnJlZy5zcmVncykKKyNkZWZpbmUgTVBVMF9TUiAgKChDUFUpLT5yZWcu bXB1MF9zcmVncykKKyNkZWZpbmUgTVBVMV9TUiAgKChDUFUpLT5yZWcubXB1 MV9zcmVncykKKyNkZWZpbmUgRlBVX1NSICAgKChDUFUpLT5yZWcuZnB1X3Ny ZWdzKQogCiAvKiBvbGQgKi8KICNkZWZpbmUgU3RhdGUgICAgKFNUQVRFX0NQ VSAoc2ltdWxhdG9yLCAwKS0+cmVnKQogI2RlZmluZSBQQwkoU3RhdGUucGMp Ci0jZGVmaW5lIFNQCShTdGF0ZS5yZWdzWzNdKQorI2RlZmluZSBTUF9SRUdO TyAgICAgICAgMworI2RlZmluZSBTUCAgICAgIChTdGF0ZS5yZWdzW1NQX1JF R05PXSkKICNkZWZpbmUgRVAJKFN0YXRlLnJlZ3NbMzBdKQogCiAjZGVmaW5l IEVJUEMgIChTdGF0ZS5zcmVnc1swXSkKQEAgLTEzNSwxMSArMTQ0LDIwIEBA IG5pYSA9IFBDCiAjZGVmaW5lIEZFUFNXIChTdGF0ZS5zcmVnc1szXSkKICNk ZWZpbmUgRUNSICAgKFN0YXRlLnNyZWdzWzRdKQogI2RlZmluZSBQU1cgICAo U3RhdGUuc3JlZ3NbNV0pCisjZGVmaW5lIFBTV19SRUdOTyAgIDUKKyNkZWZp bmUgRUlJQyAgKFNSWzEzXSkKKyNkZWZpbmUgRkVJQyAgKFNSWzE0XSkKKyNk ZWZpbmUgREJJQyAgKFNSWzE1XSkKICNkZWZpbmUgQ1RQQyAgKFNSWzE2XSkK ICNkZWZpbmUgQ1RQU1cgKFNSWzE3XSkKICNkZWZpbmUgREJQQyAgKFN0YXRl LnNyZWdzWzE4XSkKICNkZWZpbmUgREJQU1cgKFN0YXRlLnNyZWdzWzE5XSkK ICNkZWZpbmUgQ1RCUCAgKFN0YXRlLnNyZWdzWzIwXSkKKyNkZWZpbmUgRElS ICAgKFNSWzIxXSkKKyNkZWZpbmUgRUlXUiAgKFNSWzI4XSkKKyNkZWZpbmUg RkVXUiAgKFNSWzI5XSkKKyNkZWZpbmUgREJXUiAgKFNSWzMwXSkKKyNkZWZp bmUgQlNFTCAgKFNSWzMxXSkKIAogI2RlZmluZSBQU1dfVVMgQklUMzIgKDgp CiAjZGVmaW5lIFBTV19OUCAweDgwCkBAIC0xNTEsNiArMTY5LDIxMCBAQCBu aWEgPSBQQwogI2RlZmluZSBQU1dfUyAweDIKICNkZWZpbmUgUFNXX1ogMHgx CiAKKyNkZWZpbmUgUFNXX05QVgkoMTw8MTgpCisjZGVmaW5lIFBTV19ETVAJ KDE8PDE3KQorI2RlZmluZSBQU1dfSU1QCSgxPDwxNikKKworI2RlZmluZSBF Q1JfRUlDQyAweDAwMDBmZmZmCisjZGVmaW5lIEVDUl9GRUNDIDB4ZmZmZjAw MDAKKworLyogRlBVICovCisKKyNkZWZpbmUgRlBTUiAgKEZQVV9TUls2XSkK KyNkZWZpbmUgRlBTUl9SRUdOTyA2CisjZGVmaW5lIEZQRVBDIChGUFVfU1Jb N10pCisjZGVmaW5lIEZQU1QgIChGUFVfU1JbOF0pCisjZGVmaW5lIEZQU1Rf UkVHTk8gOAorI2RlZmluZSBGUENDICAoRlBVX1NSWzldKQorI2RlZmluZSBG UENGRyAoRlBVX1NSWzEwXSkKKyNkZWZpbmUgRlBDRkdfUkVHTk8gMTAKKwor I2RlZmluZSBGUFNSX0RFTSAgMHgwMDIwMDAwMAorI2RlZmluZSBGUFNSX1NF TSAgMHgwMDEwMDAwMAorI2RlZmluZSBGUFNSX1JNICAgMHgwMDBjMDAwMAor I2RlZmluZSBGUFNSX1JOICAgMHgwMDAwMDAwMAorI2RlZmluZSBGUFNSX0ZT ICAgMHgwMDAyMDAwMAorI2RlZmluZSBGUFNSX1BSICAgMHgwMDAxMDAwMAor CisjZGVmaW5lIEZQU1JfWEMgICAweDAwMDBmYzAwCisjZGVmaW5lIEZQU1Jf WENFICAweDAwMDA4MDAwCisjZGVmaW5lIEZQU1JfWENWICAweDAwMDA0MDAw CisjZGVmaW5lIEZQU1JfWENaICAweDAwMDAyMDAwCisjZGVmaW5lIEZQU1Jf WENPICAweDAwMDAxMDAwCisjZGVmaW5lIEZQU1JfWENVICAweDAwMDAwODAw CisjZGVmaW5lIEZQU1JfWENJICAweDAwMDAwNDAwCisKKyNkZWZpbmUgRlBT Ul9YRSAgIDB4MDAwMDAzZTAKKyNkZWZpbmUgRlBTUl9YRVYgIDB4MDAwMDAy MDAKKyNkZWZpbmUgRlBTUl9YRVogIDB4MDAwMDAxMDAKKyNkZWZpbmUgRlBT Ul9YRU8gIDB4MDAwMDAwODAKKyNkZWZpbmUgRlBTUl9YRVUgIDB4MDAwMDAw NDAKKyNkZWZpbmUgRlBTUl9YRUkgIDB4MDAwMDAwMjAKKworI2RlZmluZSBG UFNSX1hQICAgMHgwMDAwMDAxZgorI2RlZmluZSBGUFNSX1hQViAgMHgwMDAw MDAxMAorI2RlZmluZSBGUFNSX1hQWiAgMHgwMDAwMDAwOAorI2RlZmluZSBG UFNSX1hQTyAgMHgwMDAwMDAwNAorI2RlZmluZSBGUFNSX1hQVSAgMHgwMDAw MDAwMgorI2RlZmluZSBGUFNSX1hQSSAgMHgwMDAwMDAwMQorCisjZGVmaW5l IEZQU1RfUFIgICAweDAwMDA4MDAwIAorI2RlZmluZSBGUFNUX1hDRSAgMHgw MDAwMjAwMCAKKyNkZWZpbmUgRlBTVF9YQ1YgIDB4MDAwMDEwMDAgCisjZGVm aW5lIEZQU1RfWENaICAweDAwMDAwODAwIAorI2RlZmluZSBGUFNUX1hDTyAg MHgwMDAwMDQwMCAKKyNkZWZpbmUgRlBTVF9YQ1UgIDB4MDAwMDAyMDAgCisj ZGVmaW5lIEZQU1RfWENJICAweDAwMDAwMTAwIAorCisjZGVmaW5lIEZQU1Rf WFBWICAweDAwMDAwMDEwIAorI2RlZmluZSBGUFNUX1hQWiAgMHgwMDAwMDAw OCAKKyNkZWZpbmUgRlBTVF9YUE8gIDB4MDAwMDAwMDQgCisjZGVmaW5lIEZQ U1RfWFBVICAweDAwMDAwMDAyIAorI2RlZmluZSBGUFNUX1hQSSAgMHgwMDAw MDAwMSAKKworI2RlZmluZSBGUENGR19STSAgIDB4MDAwMDAxODAgCisjZGVm aW5lIEZQQ0ZHX1hFViAgMHgwMDAwMDAxMCAKKyNkZWZpbmUgRlBDRkdfWEVa ICAweDAwMDAwMDA4IAorI2RlZmluZSBGUENGR19YRU8gIDB4MDAwMDAwMDQg CisjZGVmaW5lIEZQQ0ZHX1hFVSAgMHgwMDAwMDAwMiAKKyNkZWZpbmUgRlBD RkdfWEVJICAweDAwMDAwMDAxIAorCisjZGVmaW5lIEdFVF9GUENDKClcCisg KChGUFNSID4+IDI0KSAmMHhmKQorCisjZGVmaW5lIENMRUFSX0ZQQ0MoYmJi KVwKKyAgKEZQU1IgJj0gfigxIDw8IChiYmIrMjQpKSkKKworI2RlZmluZSBT RVRfRlBDQyhiYmIpXAorIChGUFNSIHw9IDEgPDwgKGJiYisyNCkpCisKKyNk ZWZpbmUgVEVTVF9GUENDKGJiYilcCisgICgoRlBTUiAmICgxIDw8IChiYmIr MjQpKSkgIT0gMCkKKworI2RlZmluZSBGUFNSX0dFVF9ST1VORCgpCQkJCQlc CisgICgoKEZQU1IgJiBGUFNSX1JNKSA9PSBGUFNSX1JOKSA/IHNpbV9mcHVf cm91bmRfbmVhcgkJXAorICAgOiAoKEZQU1IgJiBGUFNSX1JNKSA9PSAweDAw MDQwMDAwKSA/IHNpbV9mcHVfcm91bmRfdXAJXAorICAgOiAoKEZQU1IgJiBG UFNSX1JNKSA9PSAweDAwMDgwMDAwKSA/IHNpbV9mcHVfcm91bmRfZG93bglc CisgICA6IHNpbV9mcHVfcm91bmRfemVybykKKworCitlbnVtIEZQVV9DT01Q QVJFIHsKKyAgRlBVX0NNUF9GID0gMCwKKyAgRlBVX0NNUF9VTiwKKyAgRlBV X0NNUF9FUSwKKyAgRlBVX0NNUF9VRVEsCisgIEZQVV9DTVBfT0xULAorICBG UFVfQ01QX1VMVCwKKyAgRlBVX0NNUF9PTEUsCisgIEZQVV9DTVBfVUxFLAor ICBGUFVfQ01QX1NGLAorICBGUFVfQ01QX05HTEUsCisgIEZQVV9DTVBfU0VR LAorICBGUFVfQ01QX05HTCwKKyAgRlBVX0NNUF9MVCwKKyAgRlBVX0NNUF9O R0UsCisgIEZQVV9DTVBfTEUsCisgIEZQVV9DTVBfTkdUCit9OworCisKKy8q IE1QVSAqLworI2RlZmluZSBNUE0JKE1QVTFfU1JbMF0pCisjZGVmaW5lIE1Q QwkoTVBVMV9TUlsxXSkKKyNkZWZpbmUgTVBDX1JFR05PIDEKKyNkZWZpbmUg VElECShNUFUxX1NSWzJdKQorI2RlZmluZSBQUEEJKE1QVTFfU1JbM10pCisj ZGVmaW5lIFBQTQkoTVBVMV9TUls0XSkKKyNkZWZpbmUgUFBDCShNUFUxX1NS WzVdKQorI2RlZmluZSBEQ0MJKE1QVTFfU1JbNl0pCisjZGVmaW5lIERDVjAJ KE1QVTFfU1JbN10pCisjZGVmaW5lIERDVjEJKE1QVTFfU1JbOF0pCisjZGVm aW5lIFNQQUwJKE1QVTFfU1JbMTBdKQorI2RlZmluZSBTUEFVCShNUFUxX1NS WzExXSkKKyNkZWZpbmUgSVBBMEwJKE1QVTFfU1JbMTJdKQorI2RlZmluZSBJ UEEwVQkoTVBVMV9TUlsxM10pCisjZGVmaW5lIElQQTFMCShNUFUxX1NSWzE0 XSkKKyNkZWZpbmUgSVBBMVUJKE1QVTFfU1JbMTVdKQorI2RlZmluZSBJUEEy TAkoTVBVMV9TUlsxNl0pCisjZGVmaW5lIElQQTJVCShNUFUxX1NSWzE3XSkK KyNkZWZpbmUgSVBBM0wJKE1QVTFfU1JbMThdKQorI2RlZmluZSBJUEEzVQko TVBVMV9TUlsxOV0pCisjZGVmaW5lIERQQTBMCShNUFUxX1NSWzIwXSkKKyNk ZWZpbmUgRFBBMFUJKE1QVTFfU1JbMjFdKQorI2RlZmluZSBEUEExTAkoTVBV MV9TUlsyMl0pCisjZGVmaW5lIERQQTFVCShNUFUxX1NSWzIzXSkKKyNkZWZp bmUgRFBBMkwJKE1QVTFfU1JbMjRdKQorI2RlZmluZSBEUEEyVQkoTVBVMV9T UlsyNV0pCisjZGVmaW5lIERQQTNMCShNUFUxX1NSWzI2XSkKKyNkZWZpbmUg RFBBM1UJKE1QVTFfU1JbMjddKQorCisjZGVmaW5lIFBQQ19QUEUgMHgxCisj ZGVmaW5lIFNQQUxfU1BFIDB4MQorI2RlZmluZSBTUEFMX1NQUyAweDEwCisK KyNkZWZpbmUgVklQCShNUFUwX1NSWzBdKQorI2RlZmluZSBWTUVDUgkoTVBV MF9TUls0XSkKKyNkZWZpbmUgVk1USUQJKE1QVTBfU1JbNV0pCisjZGVmaW5l IFZNQURSCShNUFUwX1NSWzZdKQorI2RlZmluZSBWUEVDUgkoTVBVMF9TUls4 XSkKKyNkZWZpbmUgVlBUSUQJKE1QVTBfU1JbOV0pCisjZGVmaW5lIFZQQURS CShNUFUwX1NSWzEwXSkKKyNkZWZpbmUgVkRFQ1IJKE1QVTBfU1JbMTJdKQor I2RlZmluZSBWRFRJRAkoTVBVMF9TUlsxM10pCisKKyNkZWZpbmUgTVBNX0FV RQkweDIKKyNkZWZpbmUgTVBNX01QRQkweDEKKworI2RlZmluZSBWTUVDUl9W TVggICAweDIKKyNkZWZpbmUgVk1FQ1JfVk1SICAgMHg0CisjZGVmaW5lIFZN RUNSX1ZNVyAgIDB4OAorI2RlZmluZSBWTUVDUl9WTVMgICAweDEwCisjZGVm aW5lIFZNRUNSX1ZNUk1XIDB4MjAKKyNkZWZpbmUgVk1FQ1JfVk1NUyAgMHg0 MAorCisjZGVmaW5lIElQQTJBRERSKElQQSkJKChJUEEpICYgMHgxZmZmZmY4 MCkKKyNkZWZpbmUgSVBBX0lQRQkweDEgCisjZGVmaW5lIElQQV9JUFgJMHgy IAorI2RlZmluZSBJUEFfSVBSCTB4NCAKKyNkZWZpbmUgSVBFMAkoSVBBMEwg JiBJUEFfSVBFKQorI2RlZmluZSBJUEUxCShJUEExTCAmIElQQV9JUEUpCisj ZGVmaW5lIElQRTIJKElQQTJMICYgSVBBX0lQRSkKKyNkZWZpbmUgSVBFMwko SVBBM0wgJiBJUEFfSVBFKQorI2RlZmluZSBJUFgwCShJUEEwTCAmIElQQV9J UFgpCisjZGVmaW5lIElQWDEJKElQQTFMICYgSVBBX0lQWCkKKyNkZWZpbmUg SVBYMgkoSVBBMkwgJiBJUEFfSVBYKQorI2RlZmluZSBJUFgzCShJUEEzTCAm IElQQV9JUFgpCisjZGVmaW5lIElQUjAJKElQQTBMICYgSVBBX0lQUikKKyNk ZWZpbmUgSVBSMQkoSVBBMUwgJiBJUEFfSVBSKQorI2RlZmluZSBJUFIyCShJ UEEyTCAmIElQQV9JUFIpCisjZGVmaW5lIElQUjMJKElQQTNMICYgSVBBX0lQ UikKKworI2RlZmluZSBEUEEyQUREUihEUEEpCSgoRFBBKSAmIDB4MWZmZmZm ODApCisjZGVmaW5lIERQQV9EUEUgMHgxCQorI2RlZmluZSBEUEFfRFBSIDB4 NAkKKyNkZWZpbmUgRFBBX0RQVyAweDgJCisjZGVmaW5lIERQRTAJKERQQTBM ICYgRFBBX0RQRSkKKyNkZWZpbmUgRFBFMQkoRFBBMUwgJiBEUEFfRFBFKQor I2RlZmluZSBEUEUyCShEUEEyTCAmIERQQV9EUEUpCisjZGVmaW5lIERQRTMJ KERQQTNMICYgRFBBX0RQRSkKKyNkZWZpbmUgRFBSMAkoRFBBMEwgJiBEUEFf RFBSKQorI2RlZmluZSBEUFIxCShEUEExTCAmIERQQV9EUFIpCisjZGVmaW5l IERQUjIJKERQQTJMICYgRFBBX0RQUikKKyNkZWZpbmUgRFBSMwkoRFBBM0wg JiBEUEFfRFBSKQorI2RlZmluZSBEUFcwCShEUEEwTCAmIERQQV9EUFcpCisj ZGVmaW5lIERQVzEJKERQQTFMICYgRFBBX0RQVykKKyNkZWZpbmUgRFBXMgko RFBBMkwgJiBEUEFfRFBXKQorI2RlZmluZSBEUFczCShEUEEzTCAmIERQQV9E UFcpCisKKyNkZWZpbmUgRENDX0RDRTAgMHgxCisjZGVmaW5lIERDQ19EQ0Ux IDB4MTAwMDAKKworI2RlZmluZSBQUEEyQUREUihQUEEpCSgoUFBBKSAmIDB4 MWZmZmZmODApIAorI2RlZmluZSBQUENfUFBDIDB4ZmZmZmZmZmUKKyNkZWZp bmUgUFBDX1BQRSAweDEKKyNkZWZpbmUgUFBDX1BQTSAweDAwMDBmZmY4CisK KwogI2RlZmluZSBTRVhUMyh4KQkoKCgoeCkmMHg3KV4ofjB4MykpKzB4NCkJ CiAKIC8qIHNpZ24tZXh0ZW5kIGEgNC1iaXQgbnVtYmVyICovCkBAIC0zNDQs NiArNTY2LDc5IEBAIGRvIHsgXAogICB9IFwKIH0gd2hpbGUgKDApCiAKKyNk ZWZpbmUgVFJBQ0VfRlBfSU5QVVRfRlBVMShWMCkJXAorZG8geyBcCisgIGlm IChUUkFDRV9GUFVfUCAoQ1BVKSkgXAorICAgIHsgXAorICAgICAgdW5zaWdu ZWQ2NCBmMDsgXAorICAgICAgc2ltX2ZwdV90bzY0ICgmZjAsIChWMCkpOyBc CisgICAgICB0cmFjZV9pbnB1dF9mcDEgKFNELCBDUFUsIFRSQUNFX0ZQVV9J RFgsIGYwKTsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBU UkFDRV9GUF9JTlBVVF9GUFUyKFYwLCBWMSkgXAorZG8geyBcCisgIGlmIChU UkFDRV9GUFVfUCAoQ1BVKSkgXAorICAgIHsgXAorICAgICAgdW5zaWduZWQ2 NCBmMCwgZjE7IFwKKyAgICAgIHNpbV9mcHVfdG82NCAoJmYwLCAoVjApKTsg XAorICAgICAgc2ltX2ZwdV90bzY0ICgmZjEsIChWMSkpOyBcCisgICAgICB0 cmFjZV9pbnB1dF9mcDIgKFNELCBDUFUsIFRSQUNFX0ZQVV9JRFgsIGYwLCBm MSk7CVwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgVFJBQ0Vf RlBfSU5QVVRfRlBVMyhWMCwgVjEsIFYyKSBcCitkbyB7IFwKKyAgaWYgKFRS QUNFX0ZQVV9QIChDUFUpKSBcCisgICAgeyBcCisgICAgICB1bnNpZ25lZDY0 IGYwLCBmMSwgZjI7IFwKKyAgICAgIHNpbV9mcHVfdG82NCAoJmYwLCAoVjAp KTsgXAorICAgICAgc2ltX2ZwdV90bzY0ICgmZjEsIChWMSkpOyBcCisgICAg ICBzaW1fZnB1X3RvNjQgKCZmMiwgKFYyKSk7IFwKKyAgICAgIHRyYWNlX2lu cHV0X2ZwMyAoU0QsIENQVSwgVFJBQ0VfRlBVX0lEWCwgZjAsIGYxLCBmMik7 IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgVFJBQ0VfRlBf SU5QVVRfQk9PTDFfRlBVMihWMCwgVjEsIFYyKSBcCitkbyB7IFwKKyAgaWYg KFRSQUNFX0ZQVV9QIChDUFUpKSBcCisgICAgeyBcCisgICAgICBpbnQgZDAg PSAoVjApOyBcCisgICAgICB1bnNpZ25lZDY0IGYxLCBmMjsgXAorICAgICAg VFJBQ0VfREFUQSAqZGF0YSA9IENQVV9UUkFDRV9EQVRBIChDUFUpOyBcCisg ICAgICBUUkFDRV9JRFggKGRhdGEpID0gVFJBQ0VfRlBVX0lEWDsJXAorICAg ICAgc2ltX2ZwdV90bzY0ICgmZjEsIChWMSkpOyBcCisgICAgICBzaW1fZnB1 X3RvNjQgKCZmMiwgKFYyKSk7IFwKKyAgICAgIHNhdmVfZGF0YSAoU0QsIGRh dGEsIHRyYWNlX2ZtdF9ib29sLCBzaXplb2YgKGQwKSwgJmQwKTsgXAorICAg ICAgc2F2ZV9kYXRhIChTRCwgZGF0YSwgdHJhY2VfZm10X2ZwLCBzaXplb2Yg KGZwX3dvcmQpLCAmZjEpOyBcCisgICAgICBzYXZlX2RhdGEgKFNELCBkYXRh LCB0cmFjZV9mbXRfZnAsIHNpemVvZiAoZnBfd29yZCksICZmMik7IFwKKyAg ICB9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgVFJBQ0VfRlBfSU5QVVRf V09SRDIoVjAsIFYxKSBcCitkbyB7IFwKKyAgaWYgKFRSQUNFX0ZQVV9QIChD UFUpKSBcCisgICAgdHJhY2VfaW5wdXRfd29yZDIgKFNELCBDUFUsIFRSQUNF X0ZQVV9JRFgsIChWMCksIChWMSkpOyBcCit9IHdoaWxlICgwKQorCisjZGVm aW5lIFRSQUNFX0ZQX1JFU1VMVF9GUFUxKFIwKSBcCitkbyB7IFwKKyAgaWYg KFRSQUNFX0ZQVV9QIChDUFUpKSBcCisgICAgeyBcCisgICAgICB1bnNpZ25l ZDY0IGYwOyBcCisgICAgICBzaW1fZnB1X3RvNjQgKCZmMCwgKFIwKSk7CVwK KyAgICAgIHRyYWNlX3Jlc3VsdF9mcDEgKFNELCBDUFUsIFRSQUNFX0ZQVV9J RFgsIGYwKTsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBU UkFDRV9GUF9SRVNVTFRfV09SRDEoUjApIFRSQUNFX0ZQX1JFU1VMVF9XT1JE KFIwKQorCisjZGVmaW5lIFRSQUNFX0ZQX1JFU1VMVF9XT1JEMihSMCwgUjEp IFwKK2RvIHsgXAorICBpZiAoVFJBQ0VfRlBVX1AgKENQVSkpIFwKKyAgICB0 cmFjZV9yZXN1bHRfd29yZDIgKFNELCBDUFUsIFRSQUNFX0ZQVV9JRFgsIChS MCksIChSMSkpOyBcCit9IHdoaWxlICgwKQorCiAjZWxzZQogI2RlZmluZSB0 cmFjZV9pbnB1dChOQU1FLCBJTjEsIElOMikKICNkZWZpbmUgdHJhY2Vfb3V0 cHV0KFJFU1VMVCkKZGlmZiAtdXBOciBnZGItNy4yLjUwLW9yaWcvc2ltL3Y4 NTAvc2ltb3BzLmMgZ2RiLTcuMi41MC1tb2RpZmllZC9zcmMvc2ltL3Y4NTAv c2ltb3BzLmMKLS0tIGdkYi03LjIuNTAtb3JpZy9zaW0vdjg1MC9zaW1vcHMu YwkyMDA4LTAyLTA2IDEwOjExOjI2LjAwMDAwMDAwMCArMDUzMAorKysgZ2Ri LTcuMi41MC1tb2RpZmllZC9zaW0vdjg1MC9zaW1vcHMuYwkyMDEwLTA5LTE4 IDE5OjUzOjAwLjAwMDAwMDAwMCArMDUzMApAQCAtMzIwLDcgKzMyMCw3IEBA IGNvbmRpdGlvbl9tZXQgKHVuc2lnbmVkIGNvZGUpCiAgIHJldHVybiAxOwog fQogCi1zdGF0aWMgdW5zaWduZWQgbG9uZwordW5zaWduZWQgbG9uZwogQWRk MzIgKHVuc2lnbmVkIGxvbmcgYTEsIHVuc2lnbmVkIGxvbmcgYTIsIGludCAq IGNhcnJ5KQogewogICB1bnNpZ25lZCBsb25nIHJlc3VsdCA9IChhMSArIGEy KTsKQEAgLTI3NjEsMyArMjc2MSw3MTcgQEAgT1BfMzA3RTAgKHZvaWQpCiAg IHJldHVybiA0OwogfQogCisvKiBWODUwRTJSIEZQVSBmdW5jdGlvbnMgKi8K Ky8qCisgIHNpbV9mcHVfc3RhdHVzX2ludmFsaWRfc25hbiA9IDEsCQkJCS1W LS0tIChzaW0gc3BlYy4pCisgIHNpbV9mcHVfc3RhdHVzX2ludmFsaWRfcW5h biA9IDIsCQkJCS0tLS0tIChzaW0gc3BlYy4pCisgIHNpbV9mcHVfc3RhdHVz X2ludmFsaWRfaXNpID0gNCwgKGluZiAtIGluZikJCQktVi0tLQorICBzaW1f ZnB1X3N0YXR1c19pbnZhbGlkX2lkaSA9IDgsIChpbmYgLyBpbmYpCQkJLVYt LS0KKyAgc2ltX2ZwdV9zdGF0dXNfaW52YWxpZF96ZHogPSAxNiwgKDAgLyAw KQkJCS1WLS0tCisgIHNpbV9mcHVfc3RhdHVzX2ludmFsaWRfaW16ID0gMzIs IChpbmYgKiAwKQkJCS1WLS0tCisgIHNpbV9mcHVfc3RhdHVzX2ludmFsaWRf Y3ZpID0gNjQsIGNvbnZlcnQgdG8gaW50ZWdlcgkJLVYtLS0KKyAgc2ltX2Zw dV9zdGF0dXNfaW52YWxpZF9kaXYwID0gMTI4LCAoWCAvIDApCQkJLS1aLS0K KyAgc2ltX2ZwdV9zdGF0dXNfaW52YWxpZF9jbXAgPSAyNTYsIGNvbXBhcmUJ CQktLS0tLSAoc2ltIHNwZWMuKQorICBzaW1fZnB1X3N0YXR1c19pbnZhbGlk X3NxcnQgPSA1MTIsCQkJCS1WLS0tCisgIHNpbV9mcHVfc3RhdHVzX3JvdW5k ZWQgPSAxMDI0LAkJCQlJLS0tLQorICBzaW1fZnB1X3N0YXR1c19pbmV4YWN0 ID0gMjA0OCwJCQkJSS0tLS0gKHNpbSBzcGVjLikKKyAgc2ltX2ZwdV9zdGF0 dXNfb3ZlcmZsb3cgPSA0MDk2LAkJCQlJLS1PLQorICBzaW1fZnB1X3N0YXR1 c191bmRlcmZsb3cgPSA4MTkyLAkJCQlJLS0tVQorICBzaW1fZnB1X3N0YXR1 c19kZW5vcm0gPSAxNjM4NCwJCQkJLS0tLVUgKHNpbSBzcGVjLikKKyovICAK KyAgICAKK3ZvaWQgdXBkYXRlX2Zwc3IgKFNJTV9ERVNDIHNkLCBzaW1fZnB1 X3N0YXR1cyBzdGF0dXMsIHVuc2lnbmVkIGludCBtYXNrLCB1bnNpZ25lZCBp bnQgZG91YmxlX29wX3ApCit7CisgIHVuc2lnbmVkIGludCBmcHNyID0gRlBT UiAmIG1hc2s7CisKKyAgdW5zaWduZWQgaW50IGZsYWdzID0gMDsKKworICBp ZiAoZnBzciAmIEZQU1JfWEVJCisgICAgICAmJiAoKHN0YXR1cyAmIChzaW1f ZnB1X3N0YXR1c19yb3VuZGVkCisJCSAgICAgfCBzaW1fZnB1X3N0YXR1c19v dmVyZmxvdworCQkgICAgIHwgc2ltX2ZwdV9zdGF0dXNfaW5leGFjdCkpCisJ ICB8fCAoc3RhdHVzICYgc2ltX2ZwdV9zdGF0dXNfdW5kZXJmbG93CisJICAg ICAgJiYgKGZwc3IgJiAoRlBTUl9YRVUgfCBGUFNSX1hFSSkpID09IDAKKwkg ICAgICAmJiBmcHNyICYgRlBTUl9GUykpKQorICAgIHsKKyAgICAgIGZsYWdz IHw9IEZQU1JfWENJIHwgRlBTUl9YUEk7CisgICAgfQorCisgIGlmIChmcHNy ICYgRlBTUl9YRVYKKyAgICAgICYmIChzdGF0dXMgJiAoc2ltX2ZwdV9zdGF0 dXNfaW52YWxpZF9pc2kKKwkJICAgIHwgc2ltX2ZwdV9zdGF0dXNfaW52YWxp ZF9pbXoKKwkJICAgIHwgc2ltX2ZwdV9zdGF0dXNfaW52YWxpZF96ZHoKKwkJ ICAgIHwgc2ltX2ZwdV9zdGF0dXNfaW52YWxpZF9pZGkKKwkJICAgIHwgc2lt X2ZwdV9zdGF0dXNfaW52YWxpZF9jdmkKKwkJICAgIHwgc2ltX2ZwdV9zdGF0 dXNfaW52YWxpZF9zcXJ0CisJCSAgICB8IHNpbV9mcHVfc3RhdHVzX2ludmFs aWRfc25hbikpKQorICAgIHsKKyAgICAgIGZsYWdzIHw9IEZQU1JfWENWIHwg RlBTUl9YUFY7CisgICAgfQorCisgIGlmIChmcHNyICYgRlBTUl9YRVoKKyAg ICAgICYmIChzdGF0dXMgJiBzaW1fZnB1X3N0YXR1c19pbnZhbGlkX2RpdjAp KQorICAgIHsKKyAgICAgIGZsYWdzIHw9IEZQU1JfWENWIHwgRlBTUl9YUFY7 CisgICAgfQorCisgIGlmIChmcHNyICYgRlBTUl9YRU8KKyAgICAgICYmIChz dGF0dXMgJiBzaW1fZnB1X3N0YXR1c19vdmVyZmxvdykpCisgICAgeworICAg ICAgZmxhZ3MgfD0gRlBTUl9YQ08gfCBGUFNSX1hQTzsKKyAgICB9CisgICAg ICAKKyAgaWYgKCgoZnBzciAmIEZQU1JfWEVVKSB8fCAoZnBzciAmIEZQU1Jf RlMpID09IDApCisgICAgICAmJiAoc3RhdHVzICYgKHNpbV9mcHVfc3RhdHVz X3VuZGVyZmxvdworCQkgICAgfCBzaW1fZnB1X3N0YXR1c19kZW5vcm0pKSkK KyAgICB7CisgICAgICBmbGFncyB8PSBGUFNSX1hDVSB8IEZQU1JfWFBVOwor ICAgIH0KKworICBpZiAoZmxhZ3MpCisgICAgeworICAgICAgRlBTUiAmPSB+ RlBTUl9YQzsKKyAgICAgIEZQU1IgfD0gZmxhZ3M7CisKKyAgICAgIFNpZ25h bEV4Y2VwdGlvbkZQRShzZCwgZG91YmxlX29wX3ApOworICAgIH0KK30KKwor LyoKKyAgZXhjZXB0aW9uCisqLworCit2b2lkICBTaWduYWxFeGNlcHRpb24o U0lNX0RFU0Mgc2QpCit7CisgIGlmIChNUE0gJiBNUE1fQVVFKQorICAgIHsK KyAgICAgIFBTVyA9IFBTVyAmIH4oUFNXX05QViB8IFBTV19ETVAgfCBQU1df SU1QKTsKKyAgICB9Cit9CisKK3ZvaWQgU2lnbmFsRXhjZXB0aW9uRlBFKFNJ TV9ERVNDIHNkLCB1bnNpZ25lZCBpbnQgZG91YmxlX29wX3ApCit7CQkJCQkJ CQkKKyAgaWYgKCgoUFNXICYgKFBTV19OUHxQU1dfSUQpKSA9PSAwKQorICAg ICAgfHwgIShGUFNSICYgKGRvdWJsZV9vcF9wID8gRlBTUl9ERU0gOiBGUFNS X1NFTSkpKQkJCisgICAgewkJCQkJCQkJCisgICAgICBFSVBDID0gUEM7CQkJ CQkJCQorICAgICAgRUlQU1cgPSBQU1c7CQkJCQkJCisgICAgICBFSUlDID0g KEZQU1IgJiAoZG91YmxlX29wX3AgPyBGUFNSX0RFTSA6IEZQU1JfU0VNKSkg CQorCT8gMHg3MSA6IDB4NzI7CQkJCQkJCisgICAgICBQU1cgfD0gKFBTV19F UCB8IFBTV19JRCk7CisgICAgICBQQyA9IDB4NzA7CisKKyAgICAgIFNpZ25h bEV4Y2VwdGlvbihzZCk7CisgICAgfQkJCQkJCQkJCit9CisKKwordm9pZCBj aGVja19pbnZhbGlkX3NuYW4oU0lNX0RFU0Mgc2QsIHNpbV9mcHVfc3RhdHVz IHN0YXR1cywgdW5zaWduZWQgaW50IGRvdWJsZV9vcF9wKQoreworICBpZiAo KEZQU1IgJiBGUFNSX1hFSSkKKyAgICAgICYmIChzdGF0dXMgJiBzaW1fZnB1 X3N0YXR1c19pbnZhbGlkX3NuYW4pKQorICAgIHsKKyAgICAgIEZQU1IgJj0g fkZQU1JfWEM7CisgICAgICBGUFNSIHw9IEZQU1JfWENWOworICAgICAgRlBT UiB8PSBGUFNSX1hQVjsKKyAgICAgIFNpZ25hbEV4Y2VwdGlvbkZQRShzZCwg ZG91YmxlX29wX3ApOworICAgIH0KK30KKworaW50IHY4NTBfZmxvYXRfY29t cGFyZShTSU1fREVTQyBzZCwgaW50IGNtcCwgc2ltX2ZwdSB3b3AxLCBzaW1f ZnB1IHdvcDIsIGludCBkb3VibGVfb3BfcCkKK3sKKyAgaW50IHJlc3VsdCA9 IC0xOworICAKKyAgaWYgKHNpbV9mcHVfaXNfbmFuKCZ3b3AxKSB8fCBzaW1f ZnB1X2lzX25hbigmd29wMikpCisgICAgeworICAgICAgaWYgKGNtcCAmIDB4 OCkKKwl7CisJICBpZiAoRlBTUiAmIEZQU1JfWEVWKQorCSAgICB7CisJICAg ICAgRlBTUiB8PSBGUFNSX1hDViB8IEZQU1JfWFBWOworCSAgICAgIFNpZ25h bEV4Y2VwdGlvbkZQRShzZCwgZG91YmxlX29wX3ApOworCSAgICB9CisJfQor CisgICAgICBzd2l0Y2ggKGNtcCkKKwl7CisJY2FzZSBGUFVfQ01QX0Y6CisJ ICByZXN1bHQgPSAwOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1VOOgor CSAgcmVzdWx0ID0gMTsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9FUToK KwkgIHJlc3VsdCA9IDA7CisJICBicmVhazsKKwljYXNlIEZQVV9DTVBfVUVR OgorCSAgcmVzdWx0ID0gMTsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9P TFQ6CisJICByZXN1bHQgPSAwOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01Q X1VMVDoKKwkgIHJlc3VsdCA9IDE7CisJICBicmVhazsKKwljYXNlIEZQVV9D TVBfT0xFOgorCSAgcmVzdWx0ID0gMDsKKwkgIGJyZWFrOworCWNhc2UgRlBV X0NNUF9VTEU6CisJICByZXN1bHQgPSAxOworCSAgYnJlYWs7CisJY2FzZSBG UFVfQ01QX1NGOgorCSAgcmVzdWx0ID0gMDsKKwkgIGJyZWFrOworCWNhc2Ug RlBVX0NNUF9OR0xFOgorCSAgcmVzdWx0ID0gMTsKKwkgIGJyZWFrOworCWNh c2UgRlBVX0NNUF9TRVE6CisJICByZXN1bHQgPSAwOworCSAgYnJlYWs7CisJ Y2FzZSBGUFVfQ01QX05HTDoKKwkgIHJlc3VsdCA9IDE7CisJICBicmVhazsK KwljYXNlIEZQVV9DTVBfTFQ6CisJICByZXN1bHQgPSAwOworCSAgYnJlYWs7 CisJY2FzZSBGUFVfQ01QX05HRToKKwkgIHJlc3VsdCA9IDE7CisJICBicmVh azsKKwljYXNlIEZQVV9DTVBfTEU6CisJICByZXN1bHQgPSAwOworCSAgYnJl YWs7CisJY2FzZSBGUFVfQ01QX05HVDoKKwkgIHJlc3VsdCA9IDE7CisJICBi cmVhazsKKwlkZWZhdWx0OgorCSAgYWJvcnQoKTsKKwl9CisgICAgfQorICBl bHNlIGlmIChzaW1fZnB1X2lzX2luZmluaXR5KCZ3b3AxKSAmJiBzaW1fZnB1 X2lzX2luZmluaXR5KCZ3b3AyKQorCSAgICYmIHNpbV9mcHVfc2lnbigmd29w MSkgPT0gc2ltX2ZwdV9zaWduKCZ3b3AyKSkKKyAgICB7CisgICAgICBzd2l0 Y2ggKGNtcCkKKwl7CisJY2FzZSBGUFVfQ01QX0Y6CisJICByZXN1bHQgPSAw OworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1VOOgorCSAgcmVzdWx0ID0g MDsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9FUToKKwkgIHJlc3VsdCA9 IDE7CisJICBicmVhazsKKwljYXNlIEZQVV9DTVBfVUVROgorCSAgcmVzdWx0 ID0gMTsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9PTFQ6CisJICByZXN1 bHQgPSAwOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1VMVDoKKwkgIHJl c3VsdCA9IDA7CisJICBicmVhazsKKwljYXNlIEZQVV9DTVBfT0xFOgorCSAg cmVzdWx0ID0gMTsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9VTEU6CisJ ICByZXN1bHQgPSAxOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1NGOgor CSAgcmVzdWx0ID0gMDsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9OR0xF OgorCSAgcmVzdWx0ID0gMDsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9T RVE6CisJICByZXN1bHQgPSAxOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01Q X05HTDoKKwkgIHJlc3VsdCA9IDE7CisJICBicmVhazsKKwljYXNlIEZQVV9D TVBfTFQ6CisJICByZXN1bHQgPSAwOworCSAgYnJlYWs7CisJY2FzZSBGUFVf Q01QX05HRToKKwkgIHJlc3VsdCA9IDA7CisJICBicmVhazsKKwljYXNlIEZQ VV9DTVBfTEU6CisJICByZXN1bHQgPSAxOworCSAgYnJlYWs7CisJY2FzZSBG UFVfQ01QX05HVDoKKwkgIHJlc3VsdCA9IDE7CisJICBicmVhazsKKwlkZWZh dWx0OgorCSAgYWJvcnQoKTsKKwl9CisgICAgfQorICBlbHNlCisgICAgewor ICAgICAgaW50IGd0ID0gMCxsdCA9IDAsZXEgPSAwLCBzdGF0dXM7CisKKyAg ICAgIHN0YXR1cyA9IHNpbV9mcHVfY21wKCAmd29wMSwgJndvcDIgKTsKKwor ICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgIGNhc2UgU0lNX0ZQVV9J U19TTkFOOgorICAgICAgY2FzZSBTSU1fRlBVX0lTX1FOQU46CisJYWJvcnQo KTsKKwlicmVhazsKKworICAgICAgY2FzZSBTSU1fRlBVX0lTX05JTkY6CisJ bHQgPSAxOworCWJyZWFrOworICAgICAgY2FzZSBTSU1fRlBVX0lTX1BJTkY6 CisJZ3QgPSAxOworCWJyZWFrOworICAgICAgY2FzZSBTSU1fRlBVX0lTX05O VU1CRVI6CisJbHQgPSAxOworCWJyZWFrOworICAgICAgY2FzZSBTSU1fRlBV X0lTX1BOVU1CRVI6CisJZ3QgPSAxOworCWJyZWFrOworICAgICAgY2FzZSBT SU1fRlBVX0lTX05ERU5PUk06CisJbHQgPSAxOworCWJyZWFrOworICAgICAg Y2FzZSBTSU1fRlBVX0lTX1BERU5PUk06CisJZ3QgPSAxOworCWJyZWFrOwor ICAgICAgY2FzZSBTSU1fRlBVX0lTX05aRVJPOgorICAgICAgY2FzZSBTSU1f RlBVX0lTX1BaRVJPOgorCWVxID0gMTsKKwlicmVhazsKKyAgICAgIH0KKyAg CisgICAgICBzd2l0Y2ggKGNtcCkKKwl7CisJY2FzZSBGUFVfQ01QX0Y6CisJ ICByZXN1bHQgPSAwOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1VOOgor CSAgcmVzdWx0ID0gMDsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9FUToK KwkgIHJlc3VsdCA9IGVxOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1VF UToKKwkgIHJlc3VsdCA9IGVxOworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01Q X09MVDoKKwkgIHJlc3VsdCA9IGx0OworCSAgYnJlYWs7CisJY2FzZSBGUFVf Q01QX1VMVDoKKwkgIHJlc3VsdCA9IGx0OworCSAgYnJlYWs7CisJY2FzZSBG UFVfQ01QX09MRToKKwkgIHJlc3VsdCA9IGx0IHx8IGVxOworCSAgYnJlYWs7 CisJY2FzZSBGUFVfQ01QX1VMRToKKwkgIHJlc3VsdCA9IGx0IHx8IGVxOwor CSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX1NGOgorCSAgcmVzdWx0ID0gMDsK KwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9OR0xFOgorCSAgcmVzdWx0ID0g MDsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9TRVE6CisJICByZXN1bHQg PSBlcTsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9OR0w6CisJICByZXN1 bHQgPSBlcTsKKwkgIGJyZWFrOworCWNhc2UgRlBVX0NNUF9MVDoKKwkgIHJl c3VsdCA9IGx0OworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX05HRToKKwkg IHJlc3VsdCA9IGx0OworCSAgYnJlYWs7CisJY2FzZSBGUFVfQ01QX0xFOgor CSAgcmVzdWx0ID0gbHQgfHwgZXE7CisJICBicmVhazsKKwljYXNlIEZQVV9D TVBfTkdUOgorCSAgcmVzdWx0ID0gbHQgfHwgZXE7CisJICBicmVhazsKKwl9 CisgICAgfQorCisgIEFTU0VSVChyZXN1bHQgIT0gLTEpOworICByZXR1cm4g cmVzdWx0OworfQorCit2b2lkIHY4NTBfZGl2KFNJTV9ERVNDIHNkLCB1bnNp Z25lZCBpbnQgb3AwLCB1bnNpZ25lZCBpbnQgb3AxLCB1bnNpZ25lZCBpbnQg Km9wMnAsIHVuc2lnbmVkIGludCAqb3AzcCkKK3sKKyAgc2lnbmVkIGxvbmcg aW50IHF1b3RpZW50OworICBzaWduZWQgbG9uZyBpbnQgcmVtYWluZGVyOwor ICBzaWduZWQgbG9uZyBpbnQgZGl2aWRlX2J5OworICBzaWduZWQgbG9uZyBp bnQgZGl2aWRlX3RoaXM7CisgIGJmZF9ib29sZWFuICAgICBvdmVyZmxvdyA9 IEZBTFNFOworICAKKyAgLyogQ29tcHV0ZSB0aGUgcmVzdWx0LiAgKi8KKyAg ZGl2aWRlX2J5ICAgPSBvcDA7CisgIGRpdmlkZV90aGlzID0gb3AxOworICAK KyAgaWYgKGRpdmlkZV9ieSA9PSAwIHx8IChkaXZpZGVfYnkgPT0gLTEgJiYg ZGl2aWRlX3RoaXMgPT0gKDEgPDwgMzEpKSkKKyAgICB7CisgICAgICBvdmVy ZmxvdyAgPSBUUlVFOworICAgICAgZGl2aWRlX2J5ID0gMTsKKyAgICB9Cisg IAorICBxdW90aWVudCAgPSBkaXZpZGVfdGhpcyAvIGRpdmlkZV9ieTsKKyAg cmVtYWluZGVyID0gZGl2aWRlX3RoaXMgJSBkaXZpZGVfYnk7CisgIAorICAv KiBTZXQgY29uZGl0aW9uIGNvZGVzLiAgKi8KKyAgUFNXICY9IH4oUFNXX1og fCBQU1dfUyB8IFBTV19PVik7CisgIAorICBpZiAob3ZlcmZsb3cpICAgICAg UFNXIHw9IFBTV19PVjsKKyAgaWYgKHF1b3RpZW50ID09IDApIFBTVyB8PSBQ U1dfWjsKKyAgaWYgKHF1b3RpZW50IDwgIDApIFBTVyB8PSBQU1dfUzsKKyAg CisgICpvcDJwID0gcXVvdGllbnQ7CisgICpvcDNwID0gcmVtYWluZGVyOwor fQorCit2b2lkIHY4NTBfZGl2dShTSU1fREVTQyBzZCwgdW5zaWduZWQgaW50 IG9wMCwgdW5zaWduZWQgaW50IG9wMSwgdW5zaWduZWQgaW50ICpvcDJwLCB1 bnNpZ25lZCBpbnQgKm9wM3ApCit7CisgIHVuc2lnbmVkIGxvbmcgaW50IHF1 b3RpZW50OworICB1bnNpZ25lZCBsb25nIGludCByZW1haW5kZXI7CisgIHVu c2lnbmVkIGxvbmcgaW50IGRpdmlkZV9ieTsKKyAgdW5zaWduZWQgbG9uZyBp bnQgZGl2aWRlX3RoaXM7CisgIGJmZF9ib29sZWFuICAgICAgIG92ZXJmbG93 ID0gRkFMU0U7CisgIAorICAvKiBDb21wdXRlIHRoZSByZXN1bHQuICAqLwor ICAKKyAgZGl2aWRlX2J5ICAgPSBvcDA7CisgIGRpdmlkZV90aGlzID0gb3Ax OworICAKKyAgaWYgKGRpdmlkZV9ieSA9PSAwKQorICAgIHsKKyAgICAgIG92 ZXJmbG93ID0gVFJVRTsKKyAgICAgIGRpdmlkZV9ieSAgPSAxOworICAgIH0K KyAgCisgIHF1b3RpZW50ICA9IGRpdmlkZV90aGlzIC8gZGl2aWRlX2J5Owor ICByZW1haW5kZXIgPSBkaXZpZGVfdGhpcyAlIGRpdmlkZV9ieTsKKyAgCisg IC8qIFNldCBjb25kaXRpb24gY29kZXMuICAqLworICBQU1cgJj0gfihQU1df WiB8IFBTV19TIHwgUFNXX09WKTsKKyAgCisgIGlmIChvdmVyZmxvdykgICAg ICBQU1cgfD0gUFNXX09WOworICBpZiAocXVvdGllbnQgPT0gMCkgUFNXIHw9 IFBTV19aOworICBpZiAocXVvdGllbnQgJiAweDgwMDAwMDAwKSBQU1cgfD0g UFNXX1M7CisgIAorICAqb3AycCA9IHF1b3RpZW50OworICAqb3AzcCA9IHJl bWFpbmRlcjsKK30KKworCit2b2lkIHY4NTBfc2FyKFNJTV9ERVNDIHNkLCB1 bnNpZ25lZCBpbnQgb3AwLCB1bnNpZ25lZCBpbnQgb3AxLCB1bnNpZ25lZCBp bnQgKm9wMnApCit7CisgIHVuc2lnbmVkIGludCByZXN1bHQsIHosIHMsIGN5 OworCisgIG9wMCAmPSAweDFmOworICByZXN1bHQgPSAoc2lnbmVkKW9wMSA+ PiBvcDA7CisKKyAgLyogQ29tcHV0ZSB0aGUgY29uZGl0aW9uIGNvZGVzLiAg Ki8KKyAgeiA9IChyZXN1bHQgPT0gMCk7CisgIHMgPSAocmVzdWx0ICYgMHg4 MDAwMDAwMCk7CisgIGN5ID0gKG9wMSAmICgxIDw8IChvcDAgLSAxKSkpOwor CisgIC8qIFN0b3JlIHRoZSByZXN1bHQgYW5kIGNvbmRpdGlvbiBjb2Rlcy4g ICovCisgIFBTVyAmPSB+KFBTV19aIHwgUFNXX1MgfCBQU1dfT1YgfCBQU1df Q1kpOworICBQU1cgfD0gKCh6ID8gUFNXX1ogOiAwKSB8IChzID8gUFNXX1Mg OiAwKQorCQl8IChjeSA/IFBTV19DWSA6IDApKTsKKworICAqb3AycCA9IHJl c3VsdDsKK30KKwordm9pZCB2ODUwX3NobChTSU1fREVTQyBzZCwgdW5zaWdu ZWQgaW50IG9wMCwgdW5zaWduZWQgaW50IG9wMSwgdW5zaWduZWQgaW50ICpv cDJwKQoreworICB1bnNpZ25lZCBpbnQgcmVzdWx0LCB6LCBzLCBjeTsKKwor ICBvcDAgJj0gMHgxZjsKKyAgcmVzdWx0ID0gb3AxIDw8IG9wMDsKKworICAv KiBDb21wdXRlIHRoZSBjb25kaXRpb24gY29kZXMuICAqLworICB6ID0gKHJl c3VsdCA9PSAwKTsKKyAgcyA9IChyZXN1bHQgJiAweDgwMDAwMDAwKTsKKyAg Y3kgPSAob3AxICYgKDEgPDwgKDMyIC0gb3AwKSkpOworCisgIC8qIFN0b3Jl IHRoZSByZXN1bHQgYW5kIGNvbmRpdGlvbiBjb2Rlcy4gICovCisgIFBTVyAm PSB+KFBTV19aIHwgUFNXX1MgfCBQU1dfT1YgfCBQU1dfQ1kpOworICBQU1cg fD0gKCh6ID8gUFNXX1ogOiAwKSB8IChzID8gUFNXX1MgOiAwKQorCQl8IChj eSA/IFBTV19DWSA6IDApKTsKKworICAqb3AycCA9IHJlc3VsdDsKK30KKwor dm9pZCB2ODUwX3NocihTSU1fREVTQyBzZCwgdW5zaWduZWQgaW50IG9wMCwg dW5zaWduZWQgaW50IG9wMSwgdW5zaWduZWQgaW50ICpvcDJwKQoreworICB1 bnNpZ25lZCBpbnQgcmVzdWx0LCB6LCBzLCBjeTsKKworICBvcDAgJj0gIDB4 MWY7CisgIHJlc3VsdCA9IG9wMSA+PiBvcDA7CisKKyAgLyogQ29tcHV0ZSB0 aGUgY29uZGl0aW9uIGNvZGVzLiAgKi8KKyAgeiA9IChyZXN1bHQgPT0gMCk7 CisgIHMgPSAocmVzdWx0ICYgMHg4MDAwMDAwMCk7CisgIGN5ID0gKG9wMSAm ICgxIDw8IChvcDAgLSAxKSkpOworCisgIC8qIFN0b3JlIHRoZSByZXN1bHQg YW5kIGNvbmRpdGlvbiBjb2Rlcy4gICovCisgIFBTVyAmPSB+KFBTV19aIHwg UFNXX1MgfCBQU1dfT1YgfCBQU1dfQ1kpOworICBQU1cgfD0gKCh6ID8gUFNX X1ogOiAwKSB8IChzID8gUFNXX1MgOiAwKQorCQl8IChjeSA/IFBTV19DWSA6 IDApKTsKKworICAqb3AycCA9IHJlc3VsdDsKK30KKwordm9pZCB2ODUwX3Nh dGFkZChTSU1fREVTQyBzZCwgdW5zaWduZWQgaW50IG9wMCwgdW5zaWduZWQg aW50IG9wMSwgdW5zaWduZWQgaW50ICpvcDJwKQoreworICB1bnNpZ25lZCBp bnQgcmVzdWx0LCB6LCBzLCBjeSwgb3YsIHNhdDsKKworICByZXN1bHQgPSBv cDAgKyBvcDE7CisgIAorICAvKiBDb21wdXRlIHRoZSBjb25kaXRpb24gY29k ZXMuICAqLworICB6ID0gKHJlc3VsdCA9PSAwKTsKKyAgcyA9IChyZXN1bHQg JiAweDgwMDAwMDAwKTsKKyAgY3kgPSAocmVzdWx0IDwgb3AwIHx8IHJlc3Vs dCA8IG9wMSk7CisgIG92ID0gKChvcDAgJiAweDgwMDAwMDAwKSA9PSAob3Ax ICYgMHg4MDAwMDAwMCkKKwkmJiAob3AwICYgMHg4MDAwMDAwMCkgIT0gKHJl c3VsdCAmIDB4ODAwMDAwMDApKTsKKyAgc2F0ID0gb3Y7CisgIAorICAvKiBT dG9yZSB0aGUgcmVzdWx0IGFuZCBjb25kaXRpb24gY29kZXMuICAqLworICBQ U1cgJj0gfihQU1dfWiB8IFBTV19TIHwgUFNXX0NZIHwgUFNXX09WKTsKKyAg UFNXIHw9ICgoeiA/IFBTV19aIDogMCkgfCAocyA/IFBTV19TIDogMCkKKwkg IHwgKGN5ID8gUFNXX0NZIDogMCkgfCAob3YgPyBQU1dfT1YgOiAwKQorCSAg fCAoc2F0ID8gUFNXX1NBVCA6IDApKTsKKyAgCisgIC8qIEhhbmRsZSBzYXR1 cmF0ZWQgcmVzdWx0cy4gICovCisgIGlmIChzYXQgJiYgcykKKyAgICB7Cisg ICAgICByZXN1bHQgPSAweDdmZmZmZmZmOworICAgICAgUFNXICY9IH5QU1df UzsKKyAgICB9CisgIGVsc2UgaWYgKHNhdCkKKyAgICB7CisgICAgICByZXN1 bHQgPSAweDgwMDAwMDAwOworICAgICAgUFNXIHw9IFBTV19TOworICAgIH0K KworICAqb3AycCA9IHJlc3VsdDsKK30KKwordm9pZCB2ODUwX3NhdHN1YihT SU1fREVTQyBzZCwgdW5zaWduZWQgaW50IG9wMCwgdW5zaWduZWQgaW50IG9w MSwgdW5zaWduZWQgaW50ICpvcDJwKQoreworICB1bnNpZ25lZCBpbnQgcmVz dWx0LCB6LCBzLCBjeSwgb3YsIHNhdDsKKworICAvKiBDb21wdXRlIHRoZSBy ZXN1bHQuICAqLworICByZXN1bHQgPSBvcDEgLSBvcDA7CisgIAorICAvKiBD b21wdXRlIHRoZSBjb25kaXRpb24gY29kZXMuICAqLworICB6ID0gKHJlc3Vs dCA9PSAwKTsKKyAgcyA9IChyZXN1bHQgJiAweDgwMDAwMDAwKTsKKyAgY3kg PSAob3AxIDwgb3AwKTsKKyAgb3YgPSAoKG9wMSAmIDB4ODAwMDAwMDApICE9 IChvcDAgJiAweDgwMDAwMDAwKQorCSYmIChvcDEgJiAweDgwMDAwMDAwKSAh PSAocmVzdWx0ICYgMHg4MDAwMDAwMCkpOworICBzYXQgPSBvdjsKKyAgCisg IC8qIFN0b3JlIHRoZSByZXN1bHQgYW5kIGNvbmRpdGlvbiBjb2Rlcy4gICov CisgIFBTVyAmPSB+KFBTV19aIHwgUFNXX1MgfCBQU1dfQ1kgfCBQU1dfT1Yp OworICBQU1cgfD0gKCh6ID8gUFNXX1ogOiAwKSB8IChzID8gUFNXX1MgOiAw KQorCSAgfCAoY3kgPyBQU1dfQ1kgOiAwKSB8IChvdiA/IFBTV19PViA6IDAp CisJICB8IChzYXQgPyBQU1dfU0FUIDogMCkpOworCisgIC8qIEhhbmRsZSBz YXR1cmF0ZWQgcmVzdWx0cy4gICovCisgIGlmIChzYXQgJiYgcykKKyAgICB7 CisgICAgICByZXN1bHQgPSAweDdmZmZmZmZmOworICAgICAgUFNXICY9IH5Q U1dfUzsKKyAgICB9CisgIGVsc2UgaWYgKHNhdCkKKyAgICB7CisgICAgICBy ZXN1bHQgPSAweDgwMDAwMDAwOworICAgICAgUFNXIHw9IFBTV19TOworICAg IH0KKworICAqb3AycCA9IHJlc3VsdDsKK30KKwordW5zaWduZWQzMgorbG9h ZF9kYXRhX21lbShzZCwgYWRkciwgbGVuKQorICAgICBTSU1fREVTQyBzZDsK KyAgICAgU0lNX0FERFIgYWRkcjsKKyAgICAgaW50IGxlbjsKK3sKKyAgdWlu dDMyIGRhdGE7CisKKyAgc3dpdGNoIChsZW4pCisgICAgeworICAgIGNhc2Ug MToKKyAgICAgIGRhdGEgPSBzaW1fY29yZV9yZWFkX3VuYWxpZ25lZF8xIChT VEFURV9DUFUgKHNkLCAwKSwgCisJCQkJCVBDLCByZWFkX21hcCwgYWRkcik7 CisgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICBkYXRhID0gc2lt X2NvcmVfcmVhZF91bmFsaWduZWRfMiAoU1RBVEVfQ1BVIChzZCwgMCksIAor CQkJCQlQQywgcmVhZF9tYXAsIGFkZHIpOworICAgICAgYnJlYWs7CisgICAg Y2FzZSA0OgorICAgICAgZGF0YSA9IHNpbV9jb3JlX3JlYWRfdW5hbGlnbmVk XzQgKFNUQVRFX0NQVSAoc2QsIDApLCAKKwkJCQkJUEMsIHJlYWRfbWFwLCBh ZGRyKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBhYm9y dCAoKTsKKyAgICB9CisgIHJldHVybiBkYXRhOworfQorCit2b2lkCitzdG9y ZV9kYXRhX21lbShzZCwgYWRkciwgbGVuLCBkYXRhKQorICAgICBTSU1fREVT QyBzZDsKKyAgICAgU0lNX0FERFIgYWRkcjsKKyAgICAgaW50IGxlbjsKKyAg ICAgdW5zaWduZWQzMiBkYXRhOworeworICBzd2l0Y2ggKGxlbikKKyAgICB7 CisgICAgY2FzZSAxOgorICAgICAgc3RvcmVfbWVtKGFkZHIsIDEsIGRhdGEp OworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgc3RvcmVfbWVt KGFkZHIsIDIsIGRhdGEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSA0Ogor ICAgICAgc3RvcmVfbWVtKGFkZHIsIDQsIGRhdGEpOworICAgICAgYnJlYWs7 CisgICAgZGVmYXVsdDoKKyAgICAgIGFib3J0ICgpOworICAgIH0KK30KKwor aW50IG1wdV9sb2FkX21lbV90ZXN0KFNJTV9ERVNDIHNkLCB1bnNpZ25lZCBp bnQgYWRkciwgaW50IHNpemUsIGludCBiYXNlX3JlZykKK3sKKyAgaW50IHJl c3VsdCA9IDE7CisKKyAgaWYgKFBTVyAmIFBTV19ETVApCisgICAgeworICAg ICAgaWYgKElQRTAgJiYgYWRkciA+PSBJUEEyQUREUihJUEEwTCkgJiYgYWRk ciA8PSBJUEEyQUREUihJUEEwTCkgJiYgSVBSMCkKKwl7CisJICAvKiB0ZXh0 IGFyZWEgKi8KKwl9CisgICAgICBlbHNlIGlmIChJUEUxICYmIGFkZHIgPj0g SVBBMkFERFIoSVBBMUwpICYmIGFkZHIgPD0gSVBBMkFERFIoSVBBMUwpICYm IElQUjEpCisJeworCSAgLyogdGV4dCBhcmVhICovCisJfQorICAgICAgZWxz ZSBpZiAoSVBFMiAmJiBhZGRyID49IElQQTJBRERSKElQQTJMKSAmJiBhZGRy IDw9IElQQTJBRERSKElQQTJMKSAmJiBJUFIyKQorCXsKKwkgIC8qIHRleHQg YXJlYSAqLworCX0KKyAgICAgIGVsc2UgaWYgKElQRTMgJiYgYWRkciA+PSBJ UEEyQUREUihJUEEzTCkgJiYgYWRkciA8PSBJUEEyQUREUihJUEEzTCkgJiYg SVBSMykKKwl7CisJICAvKiB0ZXh0IGFyZWEgKi8KKwl9CisgICAgICBlbHNl IGlmIChhZGRyID49IFBQQTJBRERSKFBQQSAmIH5QUE0pICYmIGFkZHIgPD0g RFBBMkFERFIoUFBBIHwgUFBNKSkKKwl7CisJICAvKiBwcmVpZmFyYWxsZWwg YXJlYSAqLworCX0KKyAgICAgIGVsc2UgaWYgKGFkZHIgPj0gUFBBMkFERFIo U1BBTCkgJiYgYWRkciA8PSBEUEEyQUREUihTUEFVKSkKKwl7CisJICAvKiBz dGFjayBhcmVhICovCisJfQorICAgICAgZWxzZSBpZiAoRFBFMCAmJiBhZGRy ID49IERQQTJBRERSKERQQTBMKSAmJiBhZGRyIDw9IERQQTJBRERSKERQQTBM KSAmJiBEUFIwCisJICAgICAgICYmICgoU1BBTCAmIFNQQUxfU1BTKSA/IGJh c2VfcmVnID09IFNQX1JFR05PIDogMSkpCisJeworCSAgLyogZGF0YSBhcmVh ICovCisJfQorICAgICAgZWxzZSBpZiAoRFBFMSAmJiBhZGRyID49IERQQTJB RERSKERQQTFMKSAmJiBhZGRyIDw9IERQQTJBRERSKERQQTFMKSAmJiBEUFIx CisJICAgICAgICYmICgoU1BBTCAmIFNQQUxfU1BTKSA/IGJhc2VfcmVnID09 IFNQX1JFR05PIDogMSkpCisJeworCSAgLyogZGF0YSBhcmVhICovCisJfQor ICAgICAgZWxzZSBpZiAoRFBFMiAmJiBhZGRyID49IERQQTJBRERSKERQQTJM KSAmJiBhZGRyIDw9IERQQTJBRERSKERQQTJMKSAmJiBEUFIyCisJICAgICAg ICYmICgoU1BBTCAmIFNQQUxfU1BTKSA/IGJhc2VfcmVnID09IFNQX1JFR05P IDogMSkpCisJeworCSAgLyogZGF0YSBhcmVhICovCisJfQorICAgICAgZWxz ZSBpZiAoRFBFMyAmJiBhZGRyID49IERQQTJBRERSKERQQTNMKSAmJiBhZGRy IDw9IERQQTJBRERSKERQQTNMKSAmJiBEUFIzCisJICAgICAgICYmICgoU1BB TCAmIFNQQUxfU1BTKSA/IGJhc2VfcmVnID09IFNQX1JFR05PIDogMSkpCisJ eworCSAgLyogZGF0YSBhcmVhICovCisJfQorICAgICAgZWxzZQorCXsKKwkg IFZNRUNSICY9IH4oVk1FQ1JfVk1XIHwgVk1FQ1JfVk1YKTsKKwkgIFZNRUNS IHw9IFZNRUNSX1ZNUjsKKwkgIFZNQURSID0gYWRkcjsKKwkgIFZNVElEID0g VElEOworCSAgRkVJQyA9IDB4NDMxOworCisJICBQQyA9IDB4MzA7CisKKwkg IFNpZ25hbEV4Y2VwdGlvbihzZCk7CisJICByZXN1bHQgPSAwOworCX0KKyAg ICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IG1wdV9zdG9yZV9t ZW1fdGVzdChTSU1fREVTQyBzZCwgdW5zaWduZWQgaW50IGFkZHIsIGludCBz aXplLCBpbnQgYmFzZV9yZWcpCit7CisgIGludCByZXN1bHQgPSAxOworCisg IGlmIChQU1cgJiBQU1dfRE1QKQorICAgIHsKKyAgICAgIGlmIChhZGRyID49 IFBQQTJBRERSKFBQQSAmIH5QUE0pICYmIGFkZHIgPD0gRFBBMkFERFIoUFBB IHwgUFBNKSkKKwl7CisJICAvKiBwcmVpZmFyYWxsZWwgYXJlYSAqLworCX0K KyAgICAgIGVsc2UgaWYgKGFkZHIgPj0gUFBBMkFERFIoU1BBTCkgJiYgYWRk ciA8PSBEUEEyQUREUihTUEFVKSkKKwl7CisJICAvKiBzdGFjayBhcmVhICov CisJfQorICAgICAgZWxzZSBpZiAoRFBFMCAmJiBhZGRyID49IERQQTJBRERS KERQQTBMKSAmJiBhZGRyIDw9IERQQTJBRERSKERQQTBMKSAmJiBEUFcwCisJ ICAgICAgICYmICgoU1BBTCAmIFNQQUxfU1BTKSA/IGJhc2VfcmVnID09IFNQ X1JFR05PIDogMSkpCisJeworCSAgLyogZGF0YSBhcmVhICovCisJfQorICAg ICAgZWxzZSBpZiAoRFBFMSAmJiBhZGRyID49IERQQTJBRERSKERQQTFMKSAm JiBhZGRyIDw9IERQQTJBRERSKERQQTFMKSAmJiBEUFcxCisJICAgICAgICYm ICgoU1BBTCAmIFNQQUxfU1BTKSA/IGJhc2VfcmVnID09IFNQX1JFR05PIDog MSkpCisJeworCSAgLyogZGF0YSBhcmVhICovCisJfQorICAgICAgZWxzZSBp ZiAoRFBFMiAmJiBhZGRyID49IERQQTJBRERSKERQQTJMKSAmJiBhZGRyIDw9 IERQQTJBRERSKERQQTJMKSAmJiBEUFcyCisJICAgICAgICYmICgoU1BBTCAm IFNQQUxfU1BTKSA/IGJhc2VfcmVnID09IFNQX1JFR05PIDogMSkpCisJewor CSAgLyogZGF0YSBhcmVhICovCisJfQorICAgICAgZWxzZSBpZiAoRFBFMyAm JiBhZGRyID49IERQQTJBRERSKERQQTNMKSAmJiBhZGRyIDw9IERQQTJBRERS KERQQTNMKSAmJiBEUFczCisJICAgICAgICYmICgoU1BBTCAmIFNQQUxfU1BT KSA/IGJhc2VfcmVnID09IFNQX1JFR05PIDogMSkpCisJeworCSAgLyogZGF0 YSBhcmVhICovCisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChhZGRyID49 IFBQQTJBRERSKFBQQSAmIH5QUE0pICYmIGFkZHIgPD0gRFBBMkFERFIoUFBB IHwgUFBNKSkKKwkgICAgeworCSAgICAgIEZFSUMgPSAweDQzMjsKKwkgICAg ICBWUFRJRCA9IFRJRDsKKwkgICAgICBWUEFEUiA9IFBDOworI2lmZGVmIE5P VF9ZRVQKKwkgICAgICBWSVBfUFA7CisJICAgICAgVlBFQ1I7CisjZW5kaWYJ ICAgICAgCisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIEZFSUMg PSAweDQzMTsKKwkgICAgICBWTVRJRCA9IFRJRDsKKwkgICAgICBWTUFEUiA9 IFZNRUNSOworCSAgICAgIFZNRUNSICY9IH4oVk1FQ1JfVk1XIHwgVk1FQ1Jf Vk1YKTsKKwkgICAgICBWTUVDUiB8PSBWTUVDUl9WTVI7CisJICAgICAgUEMg PSAweDMwOworCSAgICB9CisJICByZXN1bHQgPSAwOworCX0KKyAgICB9CisK KyAgcmV0dXJuIHJlc3VsdDsKK30KKwpkaWZmIC11cE5yIGdkYi03LjIuNTAt b3JpZy9zaW0vdjg1MC9zaW1vcHMuaCBnZGItNy4yLjUwLW1vZGlmaWVkL3Ny Yy9zaW0vdjg1MC9zaW1vcHMuaAotLS0gZ2RiLTcuMi41MC1vcmlnL3NpbS92 ODUwL3NpbW9wcy5oCTIwMDMtMDQtMDYgMTQ6MjE6MDQuMDAwMDAwMDAwICsw NTMwCisrKyBnZGItNy4yLjUwLW1vZGlmaWVkL3NpbS92ODUwL3NpbW9wcy5o CTIwMTAtMDktMTggMTg6MTQ6NTYuMDAwMDAwMDAwICswNTMwCkBAIC03NSw0 ICs3NSw1MSBAQCBpbnQgT1BfMjIwMDdFMCAodm9pZCk7CiBpbnQgT1BfMzA3 RjAgKHZvaWQpOwogaW50IE9QXzEwN0YwICh2b2lkKTsKIGludCBPUF8zMDdF MCAodm9pZCk7CisKK2ludCB2ODUwX2Zsb2F0X2NvbXBhcmUoU0lNX0RFU0Mg c2QsIGludCBjbXAsIHNpbV9mcHUgd29wMSwgc2ltX2ZwdSB3b3AyLCBpbnQg ZG91YmxlX29wX3ApOworCisvKiBNRU1PUlkgQUNDRVNTICovCit1bnNpZ25l ZDMyIGxvYWRfZGF0YV9tZW0oU0lNX0RFU0Mgc2QsIFNJTV9BRERSIGFkZHIs IGludCBsZW4pOwordm9pZCBzdG9yZV9kYXRhX21lbShTSU1fREVTQyBzZCwg U0lNX0FERFIgYWRkciwgaW50IGxlbiwgdW5zaWduZWQzMiBkYXRhKTsKKwor dW5zaWduZWQgbG9uZyBBZGQzMiAodW5zaWduZWQgbG9uZyBhMSwgdW5zaWdu ZWQgbG9uZyBhMiwgaW50ICogY2FycnkpOworCisvKiBGUFUgKi8KKworLyoK KyAgRlBVOiB1cGRhdGUgRlBTUiBmbGFncworICBpbnZhbGlkLCBpbmV4YWN0 LCBvdmVyZmxvdywgdW5kZXJmbG93CisgKi8KKworZXh0ZXJuIHZvaWQgY2hl Y2tfaW52YWxpZF9zbmFuIChTSU1fREVTQyBzZCwgc2ltX2ZwdV9zdGF0dXMs IHVuc2lnbmVkIGludCk7CisKKyNkZWZpbmUgY2hlY2tfY3Z0X2ZpKHNkLCBz dGF0dXMsIGRvdWJsZV9vcF9wKSAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgIHVwZGF0ZV9mcHNyIChzZCwgc3RhdHVzLCBGUFNSX1hFViB8IEZQU1Jf WEVJLCBkb3VibGVfb3BfcCkKKworI2RlZmluZSBjaGVja19jdnRfaWYoc2Qs IHN0YXR1cywgZG91YmxlX29wX3ApICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgdXBkYXRlX2Zwc3IgKHNkLCBzdGF0dXMsIEZQU1JfWEVJLCBkb3Vi bGVfb3BfcCkKKworI2RlZmluZSBjaGVja19jdnRfZmYoc2QsIHN0YXR1cywg ZG91YmxlX29wX3ApICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdXBk YXRlX2Zwc3IgKHNkLCBzdGF0dXMsIEZQU1JfWEVWIHwgRlBTUl9YRUkgfCBG UFNSX1hFTyB8IEZQU1JfWEVVLCBkb3VibGVfb3BfcCkKKworZXh0ZXJuIHZv aWQgdXBkYXRlX2Zwc3IgKFNJTV9ERVNDIHNkLCBzaW1fZnB1X3N0YXR1cywg dW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOworCisKKy8qCisgIEV4Y2Vw dGlvbiAKKyAqLwordm9pZCAgU2lnbmFsRXhjZXB0aW9uIChTSU1fREVTQyBz ZCk7Cit2b2lkICBTaWduYWxFeGNlcHRpb25GUEUgKFNJTV9ERVNDIHNkLCB1 bnNpZ25lZCBpbnQgZG91YmxlX29wX3ApOworCitpbnQgbXB1X2xvYWRfbWVt X3Rlc3QgKFNJTV9ERVNDIHNkLCB1bnNpZ25lZCBpbnQgYWRkciwgaW50IGxl biwgaW50IGJhc2VfcmVnKTsKK2ludCBtcHVfc3RvcmVfbWVtX3Rlc3QgKFNJ TV9ERVNDIHNkLCB1bnNpZ25lZCBpbnQgYWRkciwgaW50IGxlbiwgaW50IGJh c2VfcmVnKTsKKwordm9pZCB2ODUwX3NhciAoU0lNX0RFU0Mgc2QsIHVuc2ln bmVkIGludCBvcDAsIHVuc2lnbmVkIGludCBvcDEsIHVuc2lnbmVkIGludCAq b3AycCk7Cit2b2lkIHY4NTBfc2hsIChTSU1fREVTQyBzZCwgdW5zaWduZWQg aW50IG9wMCwgdW5zaWduZWQgaW50IG9wMSwgdW5zaWduZWQgaW50ICpvcDJw KTsKK3ZvaWQgdjg1MF9zaHIgKFNJTV9ERVNDIHNkLCB1bnNpZ25lZCBpbnQg b3AwLCB1bnNpZ25lZCBpbnQgb3AxLCB1bnNpZ25lZCBpbnQgKm9wMnApOwor dm9pZCB2ODUwX3NhdGFkZCAoU0lNX0RFU0Mgc2QsIHVuc2lnbmVkIGludCBv cDAsIHVuc2lnbmVkIGludCBvcDEsIHVuc2lnbmVkIGludCAqb3AycCk7Cit2 b2lkIHY4NTBfc2F0c3ViIChTSU1fREVTQyBzZCwgdW5zaWduZWQgaW50IG9w MCwgdW5zaWduZWQgaW50IG9wMSwgdW5zaWduZWQgaW50ICpvcDJwKTsKK3Zv aWQgdjg1MF9kaXYgKFNJTV9ERVNDIHNkLCB1bnNpZ25lZCBpbnQgb3AwLCB1 bnNpZ25lZCBpbnQgb3AxLCB1bnNpZ25lZCBpbnQgKm9wMnAsIHVuc2lnbmVk IGludCAqb3AzcCk7Cit2b2lkIHY4NTBfZGl2dSAoU0lNX0RFU0Mgc2QsIHVu c2lnbmVkIGludCBvcDAsIHVuc2lnbmVkIGludCBvcDEsIHVuc2lnbmVkIGlu dCAqb3AycCwgdW5zaWduZWQgaW50ICpvcDNwKTsKKwogI2VuZGlmCmRpZmYg LXVwTnIgZ2RiLTcuMi41MC1vcmlnL3NpbS92ODUwL3Y4NTAtZGMgZ2RiLTcu Mi41MC1tb2RpZmllZC9zcmMvc2ltL3Y4NTAvdjg1MC1kYwotLS0gZ2RiLTcu Mi41MC1vcmlnL3NpbS92ODUwL3Y4NTAtZGMJMjAwMy0wOS0wNSAyMzoxNjo1 Mi4wMDAwMDAwMDAgKzA1MzAKKysrIGdkYi03LjIuNTAtbW9kaWZpZWQvc2lt L3Y4NTAvdjg1MC1kYwkyMDEwLTA5LTE4IDE3OjU2OjM2LjAwMDAwMDAwMCAr MDUzMApAQCAtMTIsNyArMTIsOSBAQAogICBzd2l0Y2gsY29tYmluZSAgICAg ICAgOiAgIDQgOiAgIDAgOiAgICA6ICAgIDogICAgOiAgICAxIDogVixWSUkg ICAgICAgOgogICBzd2l0Y2gsY29tYmluZSAgICAgICAgOiAgIDQgOiAgIDAg OiAgICA6ICAgIDogICAgOiAgICAxIDogVixYSUlJICAgICAgOiB2ODUwZQog ICBzd2l0Y2gsY29tYmluZSAgICAgICAgOiAgIDQgOiAgIDAgOiAgICA6ICAg IDogICAgOiAgICAxIDogVixYSUlJICAgICAgOiB2ODUwZTEKLQorICBzd2l0 Y2gsY29tYmluZSAgICAgICAgOiAgIDQgOiAgIDAgOiAgICA6ICAgIDogICAg OiAgICAxIDogVixYSUlJICAgICAgOiB2ODUwZTIKKyAgc3dpdGNoLGNvbWJp bmUgICAgICAgIDogICA0IDogICAwIDogICAgOiAgICA6ICAgIDogICAgMSA6 IFYsWElJSSAgICAgIDogdjg1MGUydjMKKyAgc3dpdGNoLGNvbWJpbmUgICAg ICAgIDogIDEwIDogICA1IDogICAgOiAgICA6ICAgIDogICAgMCA6IEZfSSAg ICAgICAgIDogdjg1MGUydjMKIAogIyBmb3Igb3Bjb2RlIDYzLCAxMjcsIDEw ODcgZXQuYWwuCiAKQEAgLTI3LDMgKzI5LDI4IEBACiAjIGZvciBvcGNvZGUg NjYgLSBkaXZoL2JyZWFrCiAKICAgc3dpdGNoLGNvbWJpbmUgICAgICAgIDog ICA0IDogICAwIDogICAgOiAgICA6ICAgIDogICAgMCA6IEkgICAgICAgICAg IDoKKworIyBmb3IgaWxnb3AsIG1hY3UKKyAgc3dpdGNoLGNvbWJpbmUgICAg ICAgIDogIDEwIDogICA5IDogICAgOiAgICA6ICAgIDogICAgMSA6IFgsWEkg ICAgICAgIDogdjg1MGUyCisgIHN3aXRjaCxjb21iaW5lICAgICAgICA6ICAx MCA6ICAgOSA6ICAgIDogICAgOiAgICA6ICAgIDEgOiBYLFhJICAgICAgICA6 IHY4NTBlMnYzCisKKyNmb3IgY21vdmYucywgc2V0ZgorICBzd2l0Y2gsY29t YmluZSAgICAgICAgOiAgMTAgOiAgIDEwIDogICAgOiAgICA6ICAgIDogICAg MSA6Rl9JLElYICAgICAgOiB2ODUwZTJ2MworICAKKyMgZm9yIGNtb3ZmLnMg dHJmc3IKKyAgc3dpdGNoLGNvbWJpbmUgICAgICAgIDogIDE1IDogICAxMSA6 ICAgIDogICAgOiAgICA6ICAgIDEgOkZfSSAgICAgICAgIDogdjg1MGUydjMK KworIyBmb3IgdHJuY2Yuc3csIGN2dGYuc3cKKyAgc3dpdGNoLGNvbWJpbmUg ICAgICAgIDogICAwIDogICAgMCA6ICAgIDogICAgOiAgICA6ICAgIDAgOkZf SSAgICAgICAgIDogdjg1MGUydjMKKyAgc3dpdGNoLGNvbWJpbmUgICAgICAg IDogICAzIDogICAgMyA6ICAgIDogICAgOiAgICA6ICAgIDAgOkZfSSAgICAg ICAgIDogdjg1MGUydjMKKworIyBmb3IgcnNxcnRmLnMsIHNxcnRmLnMKKyAg c3dpdGNoLGNvbWJpbmUgICAgICAgIDogICAxIDogICAgMSA6ICAgIDogICAg OiAgICA6ICAgIDAgOkZfSSAgICAgICAgIDogdjg1MGUydjMKKworIyBmb3Ig bWFkZGYucywgdHJhcCAKKyAgc3dpdGNoLGNvbWJpbmUgICAgICAgIDogICA4 IDogICAgOCA6ICAgIDogICAgOiAgICA6ICAgIDEgOkZfSSxYICAgICAgIDog djg1MGUydjMKKyAgc3dpdGNoLGNvbWJpbmUgICAgICAgIDogIDEwIDogICAx MCA6ICAgIDogICAgOiAgICA6ICAgIDEgOkZfSSxYICAgICAgIDogdjg1MGUy djMKKworIyBmb3IganIzMiBqYXJsMzIKKyAgc3dpdGNoLGNvbWJpbmUgICAg ICAgIDogIDQgOiAgIDAgOiAgICA6ICAgIDogICAgOiAgICAwIDpWSSAgICAg ICAgICAgIDogdjg1MGUyCisgIHN3aXRjaCxjb21iaW5lICAgICAgICA6ICA0 IDogICAwIDogICAgOiAgICA6ICAgIDogICAgMCA6VkkgICAgICAgICAgICA6 IHY4NTBlMnYzCmRpZmYgLXVwTnIgZ2RiLTcuMi41MC1vcmlnL3NpbS92ODUw L3Y4NTAuaWdlbiBnZGItNy4yLjUwLW1vZGlmaWVkL3NpbS92ODUwL3Y4NTAu aWdlbgotLS0gZ2RiLTcuMi41MC1vcmlnL3NpbS92ODUwL3Y4NTAuaWdlbgky MDA4LTAyLTA2IDEwOjExOjI2LjAwMDAwMDAwMCArMDUzMAorKysgZ2RiLTcu Mi41MC1tb2RpZmllZC9zaW0vdjg1MC92ODUwLmlnZW4JMjAxMC0wOS0yMCAx NDowNjo0MC4wMDAwMDAwMDAgKzA1MzAKQEAgLTYsNiArNiw3IEBACiA6b3B0 aW9uOjo6Zm9ybWF0LW5hbWVzOlhJLFhJSSxYSUlJCiA6b3B0aW9uOjo6Zm9y bWF0LW5hbWVzOlhJVixYVgogOm9wdGlvbjo6OmZvcm1hdC1uYW1lczpaCis6 b3B0aW9uOjo6Zm9ybWF0LW5hbWVzOkZfSQogCiAKIDptb2RlbDo6OnY4NTA6 djg1MDoKQEAgLTE0LDEyICsxNSwyMiBAQAogOm1vZGVsOjo6djg1MGU6djg1 MGU6CiA6b3B0aW9uOjo6bXVsdGktc2ltOnRydWUKIDptb2RlbDo6OnY4NTBl MTp2ODUwZTE6Cis6b3B0aW9uOjo6bXVsdGktc2ltOnRydWUKKzptb2RlbDo6 OnY4NTBlMjp2ODUwZTI6Cis6b3B0aW9uOjo6bXVsdGktc2ltOnRydWUKKzpt b2RlbDo6OnY4NTBlMnYzOnY4NTBlMnYzOgogCiAvLyBDYWNoZSBtYWNyb3MK IAogOmNhY2hlOjo6dW5zaWduZWQ6cmVnMTpSUlJSUjooUlJSUlIpCiA6Y2Fj aGU6Ojp1bnNpZ25lZDpyZWcyOnJycnJyOihycnJycikKIDpjYWNoZTo6OnVu c2lnbmVkOnJlZzM6d3d3d3c6KHd3d3d3KQorOmNhY2hlOjo6dW5zaWduZWQ6 cmVnNDpXLFdXV1c6KChXIDw8IDQpICsgV1dXVykKKworOmNhY2hlOjo6dW5z aWduZWQ6cmVnMWU6UlJSUjooUlJSUiA8PCAxKQorOmNhY2hlOjo6dW5zaWdu ZWQ6cmVnMmU6cnJycjoocnJyciA8PCAxKQorOmNhY2hlOjo6dW5zaWduZWQ6 cmVnM2U6d3d3dzood3d3dyA8PCAxKQorOmNhY2hlOjo6dW5zaWduZWQ6cmVn NGU6bW1tbToobW1tbSA8PCAxKQogCiA6Y2FjaGU6Ojp1bnNpZ25lZDpkaXNw NDpkZGRkOihkZGRkKQogOmNhY2hlOjo6dW5zaWduZWQ6ZGlzcDU6ZGRkZDoo ZGRkZCA8PCAxKQpAQCAtMjksNyArNDAsMTAgQEAKIDpjYWNoZTo6OnVuc2ln bmVkOmRpc3A5OmRkZGRkLGRkZDpTRVhUMzIgKChkZGRkZCA8PCA0KSArIChk ZGQgPDwgMSksIDkgLSAxKQogOmNhY2hlOjo6dW5zaWduZWQ6ZGlzcDE2OmRk ZGRkZGRkZGRkZGRkZGQ6RVhURU5EMTYgKGRkZGRkZGRkZGRkZGRkZGQpCiA6 Y2FjaGU6Ojp1bnNpZ25lZDpkaXNwMTY6ZGRkZGRkZGRkZGRkZGRkOiBFWFRF TkQxNiAoZGRkZGRkZGRkZGRkZGRkIDw8IDEpCis6Y2FjaGU6Ojp1bnNpZ25l ZDpkaXNwMTc6ZCxkZGRkZGRkZGRkZGRkZGQ6U0VYVDMyICgoKGQgPDwxNikg KyAoZGRkZGRkZGRkZGRkZGRkIDw8IDEpKSwgMTcgLSAxKQogOmNhY2hlOjo6 dW5zaWduZWQ6ZGlzcDIyOmRkZGRkZCxkZGRkZGRkZGRkZGRkZGQ6IFNFWFQz MiAoKGRkZGRkZCA8PCAxNikgKyAoZGRkZGRkZGRkZGRkZGRkIDw8IDEpLCAy MiAtIDEpCis6Y2FjaGU6Ojp1bnNpZ25lZDpkaXNwMjM6ZGRkZGRkZCxkZGRk ZGRkZGRkZGRkZGRkOiBTRVhUMzIgKChkZGRkZGRkKSArIChkZGRkZGRkZGRk ZGRkZGRkIDw8IDcpLCAyMyAtIDEpCis6Y2FjaGU6Ojp1bnNpZ25lZDpkaXNw MjM6ZGRkZGRkLGRkZGRkZGRkZGRkZGRkZGQ6IFNFWFQzMiAoKGRkZGRkZCA8 PCAxKSArIChkZGRkZGRkZGRkZGRkZGRkIDw8IDcpLCAyMyAtIDEpCiAKIDpj YWNoZTo6OnVuc2lnbmVkOmltbTU6aWlpaWk6U0VYVDMyIChpaWlpaSwgNCkK IDpjYWNoZTo6OnVuc2lnbmVkOmltbTY6aWlpaWlpOmlpaWlpaQpAQCAtNDYs NiArNjAsNyBAQAogOmNhY2hlOjo6dW5zaWduZWQ6bGlzdDE4OkxMTEwsTExM TExMTExMTExMOigoTExMTCA8PCAxMikgKyBMTExMTExMTExMTEwpCiAKIDpj YWNoZTo6OnVuc2lnbmVkOmJpdDM6YmJiOmJiYgorOmNhY2hlOjo6dW5zaWdu ZWQ6Yml0NDpiYmJiOmJiYmIKIAogCiAvLyBXaGF0IGRvIHdlIGRvIHdpdGgg YW4gaWxsZWdhbCBpbnN0cnVjdGlvbj8KQEAgLTU4LDggKzczLDcgQEAKIAog CiAKLS8vIEFkZAotCisvLyBBREQKIHJycnJyLDAwMTExMCxSUlJSUjpJOjo6 YWRkCiAiYWRkIHI8cmVnMT4sIHI8cmVnMj4iCiB7CkBAIC04Myw2ICs5Nywy MCBAQCBycnJyciwxMTAwMDAsUlJSUlIgKyBpaWlpaWlpaWlpaWlpaWlpOlZJ CiAKIAogCisvLyBBREYKK3JycnJyLDExMTExMSxSUlJSUiArIHd3d3d3LDAx MTEwMSxjY2NjITEzLDA6WEk6OjphZGYKKyp2ODUwZTIKKyp2ODUwZTJ2Mwor ImFkZiAlczxjY2NjPiwgcjxyZWcxPiwgcjxyZWcyPiwgcjxyZWczPiIKK3sK KyAgaW50IGNvbmQgPSBjb25kaXRpb25fbWV0IChjY2NjKTsKKyAgVFJBQ0Vf QUxVX0lOUFVUMyAoY29uZCwgR1JbcmVnMV0sIEdSW3JlZzJdKTsKKyAgR1Jb cmVnM10gPSBHUltyZWcxXSArIEdSW3JlZzJdICsgKGNvbmQgPyAxIDogMCk7 CisgIFRSQUNFX0FMVV9SRVNVTFQxIChHUltyZWczXSk7Cit9CisKKworCiAv LyBBTkQKIHJycnJyLDAwMTAxMCxSUlJSUjpJOjo6YW5kCiAiYW5kIHI8cmVn MT4sIHI8cmVnMj4iCkBAIC0xNTMsMTIgKzE4MSwyNyBAQCBkZGRkZCwxMDEx LGRkZCxjY2NjOklJSTo6OkJjb25kCiAgIH0KIH0KIAorMDAwMDAxMTExMTEs ZCxjY2NjICsgZGRkZGRkZGRkZGRkZGRkLDE6VklJOjo6QmNvbmQKKyJicmVh a3BvaW50IjooKGRpc3AxNyA9PSAwKSAmJiAoY2NjYyA9PSAweDA1KSkKKyJi JXM8Y2NjYz4gPGRpc3AxNz4iCisqdjg1MGUydjMKK3sKKyAgaW50IGNvbmQ7 CisgIGNvbmQgPSBjb25kaXRpb25fbWV0IChjY2NjKTsKKyAgaWYgKGNvbmQp CisgICAgbmlhID0gY2lhICsgZGlzcDE3OworICBUUkFDRV9CUkFOQ0hfSU5Q VVQxIChjb25kKTsKKyAgVFJBQ0VfQlJBTkNIX1JFU1VMVCAobmlhKTsKK30K KwogCiAKIC8vIEJTSAogcnJycnIsMTExMTExMDAwMDAgKyB3d3d3dywwMTEw MTAwMDAxMDpYSUk6Ojpic2gKICp2ODUwZQogKnY4NTBlMQorKnY4NTBlMgor KnY4NTBlMnYzCiAiYnNoIHI8cmVnMj4sIHI8cmVnMz4iCiB7CiAgIHVuc2ln bmVkMzIgdmFsdWU7CkBAIC0xNzgsMTAgKzIyMSwxNCBAQCBycnJyciwxMTEx MTEwMDAwMCArIHd3d3d3LDAxMTAxMDAwMDEwOlhJCiAgIFRSQUNFX0FMVV9S RVNVTFQgKEdSW3JlZzNdKTsKIH0KIAorCisKIC8vIEJTVwogcnJycnIsMTEx MTExMDAwMDAgKyB3d3d3dywwMTEwMTAwMDAwMDpYSUk6Ojpic3cKICp2ODUw ZQogKnY4NTBlMQorKnY4NTBlMgorKnY4NTBlMnYzCiAiYnN3IHI8cmVnMj4s IHI8cmVnMz4iCiB7CiAjZGVmaW5lIFdPUkRIQVNOVUxMQllURSh4KSAoKCh4 KSAtIDB4MDEwMTAxMDEpICYgfih4KSYweDgwODA4MDgwKQpAQCAtMjA0LDEw ICsyNTEsMTQgQEAgcnJycnIsMTExMTExMDAwMDAgKyB3d3d3dywwMTEwMTAw MDAwMDpYSQogICBUUkFDRV9BTFVfUkVTVUxUIChHUltyZWczXSk7CiB9CiAK KworCiAvLyBDQUxMVAogMDAwMDAwMTAwMCxpaWlpaWk6SUk6OjpjYWxsdAog KnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJjYWxsdCA8 aW1tNj4iCiB7CiAgIHVuc2lnbmVkMzIgYWRyOwpAQCAtMjIxLDYgKzI3Miw1 NSBAQCBycnJyciwxMTExMTEwMDAwMCArIHd3d3d3LDAxMTAxMDAwMDAwOlhJ CiB9CiAKIAorCisvLyBDQVhJCitycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3 dywwMDAxMTEwMTExMDpJWDo6OmNheGkKKyp2ODUwZTIKKyp2ODUwZTJ2Mwor ImNheGkgW3JlZzFdLCByZWcyLCByZWczIgoreworICB1bnNpZ25lZCBpbnQg eixzLGN5LG92OworICB1bnNpZ25lZDMyIGFkZHI7CisgIHVuc2lnbmVkMzIg dG9rZW4scmVzdWx0OworCisgIGFkZHIgPSBHUltyZWcxXTsKKworICBpZiAo bXB1X2xvYWRfbWVtX3Rlc3Qoc2QsIGFkZHIsIDQsIHJlZzEpIAorICAgICAg JiYgbXB1X3N0b3JlX21lbV90ZXN0KHNkLCBhZGRyLCA0LCByZWcxKSkKKyAg ICB7CisgICAgICB0b2tlbiA9IGxvYWRfZGF0YV9tZW0gKHNkLCBhZGRyLCA0 KTsKKworICAgICAgVFJBQ0VfQUxVX0lOUFVUMiAodG9rZW4sIEdSW3JlZzJd KTsKKworICAgICAgcmVzdWx0ID0gR1JbcmVnMl0gLSB0b2tlbjsKKworICAg ICAgeiA9IChyZXN1bHQgPT0gMCk7CisgICAgICBzID0gKHJlc3VsdCAmIDB4 ODAwMDAwMDApOworICAgICAgY3kgPSAoR1JbcmVnMl0gPCB0b2tlbik7Cisg ICAgICBvdiA9ICgoR1JbcmVnMl0gJiAweDgwMDAwMDAwKSAhPSAodG9rZW4g JiAweDgwMDAwMDAwKQorCSAgICAmJiAoR1JbcmVnMl0gJiAweDgwMDAwMDAw KSAhPSAocmVzdWx0ICYgMHg4MDAwMDAwMCkpOworCisgICAgICBpZiAocmVz dWx0ID09IDApCisJeworCSAgc3RvcmVfZGF0YV9tZW0gKHNkLCBhZGRyLCA0 LCBHUltyZWczXSk7CisJICBHUltyZWczXSA9IHRva2VuOworCX0KKyAgICAg IGVsc2UKKwl7CisJICBzdG9yZV9kYXRhX21lbSAoc2QsIGFkZHIsIDQsIHRv a2VuKTsKKwkgIEdSW3JlZzNdID0gdG9rZW47CisJfQorICAKKyAgICAgIC8q IFNldCBjb25kaXRpb24gY29kZXMuICAqLworICAgICAgUFNXICY9IH4oUFNX X1ogfCBQU1dfUyB8IFBTV19DWSB8IFBTV19PVik7CisgICAgICBQU1cgfD0g KCh6ID8gUFNXX1ogOiAwKSB8IChzID8gUFNXX1MgOiAwKQorCSAgICAgIHwg KGN5ID8gUFNXX0NZIDogMCkgfCAob3YgPyBQU1dfT1YgOiAwKSk7CisKKyAg ICAgIFRSQUNFX0FMVV9SRVNVTFQxIChHUltyZWczXSk7CisgICAgfQorfQor CisKIC8vIENMUjEKIDEwLGJiYiwxMTExMTAsUlJSUlIgKyBkZGRkZGRkZGRk ZGRkZGRkOlZJSUk6OjpjbHIxCiAiY2xyMSA8Yml0Mz4sIDxkaXNwMTY+W3I8 cmVnMT5dIgpAQCAtMjMxLDE2ICszMzEsMjEgQEAgcnJycnIsMTExMTExMDAw MDAgKyB3d3d3dywwMTEwMTAwMDAwMDpYSQogcnJycnIsMTExMTExLFJSUlJS ICsgMDAwMDAwMDAxMTEwMDEwMDpJWDo6OmNscjEKICp2ODUwZQogKnY4NTBl MQorKnY4NTBlMgorKnY4NTBlMnYzCiAiY2xyMSByPHJlZzI+LCBbcjxyZWcx Pl0iCiB7CiAgIENPTVBBVF8yIChPUF9FNDA3RTAgKCkpOwogfQogCiAKKwog Ly8gQ1RSRVQKIDAwMDAwMTExMTExMDAwMDAgKyAwMDAwMDAwMTAxMDAwMTAw Olg6OjpjdHJldAogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUy djMKICJjdHJldCIKIHsKICAgbmlhICA9IChDVFBDICYgfjEpOwpAQCAtMjQ4 LDEwICszNTMsMTQgQEAgcnJycnIsMTExMTExLFJSUlJSICsgMDAwMDAwMDAx MTEwMDEwMDpJWAogICBUUkFDRV9CUkFOQ0gxIChQU1cpOwogfQogCisKKwog Ly8gQ01PVgogcnJycnIsMTExMTExLFJSUlJSICsgd3d3d3csMDExMDAxLGNj Y2MsMDpYSTo6OmNtb3YKICp2ODUwZQogKnY4NTBlMQorKnY4NTBlMgorKnY4 NTBlMnYzCiAiY21vdiAlczxjY2NjPiwgcjxyZWcxPiwgcjxyZWcyPiwgcjxy ZWczPiIKIHsKICAgaW50IGNvbmQgPSBjb25kaXRpb25fbWV0IChjY2NjKTsK QEAgLTI2Myw2ICszNzIsOCBAQCBycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3 dywwMTEwMDEsY2NjYywwCiBycnJyciwxMTExMTEsaWlpaWkgKyB3d3d3dyww MTEwMDAsY2NjYywwOlhJSTo6OmNtb3YKICp2ODUwZQogKnY4NTBlMQorKnY4 NTBlMgorKnY4NTBlMnYzCiAiY21vdiAlczxjY2NjPiwgPGltbTU+LCByPHJl ZzI+LCByPHJlZzM+IgogewogICBpbnQgY29uZCA9IGNvbmRpdGlvbl9tZXQg KGNjY2MpOwpAQCAtMjcxLDYgKzM4Miw4IEBAIHJycnJyLDExMTExMSxpaWlp aSArIHd3d3d3LDAxMTAwMCxjY2NjLDAKICAgVFJBQ0VfQUxVX1JFU1VMVCAo R1JbcmVnM10pOwogfQogCisKKwogLy8gQ01QCiBycnJyciwwMDExMTEsUlJS UlI6STo6OmNtcAogImNtcCByPHJlZzE+LCByPHJlZzI+IgpAQCAtMzAxLDYg KzQxNCw4IEBAIHJycnJyLDAxMDAxMSxpaWlpaTpJSTo6OmNtcAogMDAwMDAx MTAwMSxpaWlpaSxMICsgTExMTExMTExMTEwsUlJSUlI6WElJSTo6OmRpc3Bv c2UKICp2ODUwZQogKnY4NTBlMQorKnY4NTBlMgorKnY4NTBlMnYzCiAiZGlz cG9zZSA8aW1tNT4sIDxsaXN0MTI+IjpSUlJSUiA9PSAwCiAiZGlzcG9zZSA8 aW1tNT4sIDxsaXN0MTI+LCBbcmVnMV0iCiB7CkBAIC0zMjksMTAgKzQ0NCwx MyBAQCBycnJyciwwMTAwMTEsaWlpaWk6SUk6OjpjbXAKIH0KIAogCisKIC8v IERJVgogcnJycnIsMTExMTExLFJSUlJSICsgd3d3d3csMDEwMTEwMDAwMDA6 WEk6OjpkaXYKICp2ODUwZQogKnY4NTBlMQorKnY4NTBlMgorKnY4NTBlMnYz CiAiZGl2IHI8cmVnMT4sIHI8cmVnMj4sIHI8cmVnMz4iCiB7CiAgIENPTVBB VF8yIChPUF8yQzAwN0UwICgpKTsKQEAgLTM5MCw2ICs1MDgsOCBAQCBycnJy ciEwLDAwMDAxMCxSUlJSUiEwOkk6OjpkaXZoCiBycnJyciwxMTExMTEsUlJS UlIgKyB3d3d3dywwMTAxMDAwMDAwMDpYSTo6OmRpdmgKICp2ODUwZQogKnY4 NTBlMQorKnY4NTBlMgorKnY4NTBlMnYzCiAiZGl2aCByPHJlZzE+LCByPHJl ZzI+LCByPHJlZzM+IgogewogICBDT01QQVRfMiAoT1BfMjgwMDdFMCAoKSk7 CkBAIC00MDAsNiArNTIwLDggQEAgcnJycnIsMTExMTExLFJSUlJSICsgd3d3 d3csMDEwMTAwMDAwMDA6WAogcnJycnIsMTExMTExLFJSUlJSICsgd3d3d3cs MDEwMTAwMDAwMTA6WEk6OjpkaXZodQogKnY4NTBlCiAqdjg1MGUxCisqdjg1 MGUyCisqdjg1MGUydjMKICJkaXZodSByPHJlZzE+LCByPHJlZzI+LCByPHJl ZzM+IgogewogICBDT01QQVRfMiAoT1BfMjgyMDdFMCAoKSk7CkBAIC00MTAs MTIgKzUzMiw2MCBAQCBycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3dywwMTAx MDAwMDAxMDpYCiBycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3dywwMTAxMTAw MDAxMDpYSTo6OmRpdnUKICp2ODUwZQogKnY4NTBlMQorKnY4NTBlMgorKnY4 NTBlMnYzCiAiZGl2dSByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+Igogewog ICBDT01QQVRfMiAoT1BfMkMyMDdFMCAoKSk7CiB9CiAKIAorLy8gRElWUQor cnJycnIsMTExMTExLFJSUlJSICsgd3d3d3csMDEwMTExMTExMDA6WEk6Ojpk aXZxCisqdjg1MGUyCisqdjg1MGUydjMKKyJkaXZxIHI8cmVnMT4sIHI8cmVn Mj4sIHI8cmVnMz4iCit7CisgIHVuc2lnbmVkIGludCBxdW90aWVudDsKKyAg dW5zaWduZWQgaW50IHJlbWFpbmRlcjsKKyAgdW5zaWduZWQgaW50IGRpdmlk ZV9ieTsKKyAgdW5zaWduZWQgaW50IGRpdmlkZV90aGlzOworCisgIFRSQUNF X0FMVV9JTlBVVDIgKEdSW3JlZzFdLCBHUltyZWcyXSk7CisKKyAgZGl2aWRl X2J5ICAgPSBHUltyZWcxXTsKKyAgZGl2aWRlX3RoaXMgPSBHUltyZWcyXTsK KyAgdjg1MF9kaXYgKHNkLCBkaXZpZGVfYnksIGRpdmlkZV90aGlzLCAmcXVv dGllbnQsICZyZW1haW5kZXIpOworICBHUltyZWcyXSA9IHF1b3RpZW50Owor ICBHUltyZWczXSA9IHJlbWFpbmRlcjsKKworICBUUkFDRV9BTFVfUkVTVUxU MiAoR1JbcmVnMl0sIEdSW3JlZzNdKTsKK30KKworCisvLyBESVZRVQorcnJy cnIsMTExMTExLFJSUlJSICsgd3d3d3csMDEwMTExMTExMTA6WEk6OjpkaXZx dQorKnY4NTBlMgorKnY4NTBlMnYzCisiZGl2cSByPHJlZzE+LCByPHJlZzI+ LCByPHJlZzM+IgoreworICB1bnNpZ25lZCBpbnQgcXVvdGllbnQ7CisgIHVu c2lnbmVkIGludCByZW1haW5kZXI7CisgIHVuc2lnbmVkIGludCBkaXZpZGVf Ynk7CisgIHVuc2lnbmVkIGludCBkaXZpZGVfdGhpczsKKworICBUUkFDRV9B TFVfSU5QVVQyIChHUltyZWcxXSwgR1JbcmVnMl0pOworICAKKyAgZGl2aWRl X2J5ICAgPSBHUltyZWcxXTsKKyAgZGl2aWRlX3RoaXMgPSBHUltyZWcyXTsK KyAgdjg1MF9kaXZ1IChzZCwgZGl2aWRlX2J5LCBkaXZpZGVfdGhpcywgJnF1 b3RpZW50LCAmcmVtYWluZGVyKTsKKyAgR1JbcmVnMl0gPSBxdW90aWVudDsK KyAgR1JbcmVnM10gPSByZW1haW5kZXI7CisKKyAgVFJBQ0VfQUxVX1JFU1VM VDIgKEdSW3JlZzJdLCBHUltyZWczXSk7Cit9CisKKwogLy8gRUkKIDEwMDAw MTExMTExMDAwMDAgKyAwMDAwMDAwMTAxMTAwMDAwOlg6OjplaQogImVpIgpA QCAtNDI1LDYgKzU5NSw3NiBAQCBycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3 dywwMTAxMTAwMDAxMDpYCiAKIAogCisvLyBFSVJFVAorMDAwMDAxMTExMTEw MDAwMCArIDAwMDAwMDAxMDEwMDEwMDA6WDo6OmVpcmV0CisiZWlyZXQiCisq djg1MGUyCisqdjg1MGUydjMKK3sKKyAgVFJBQ0VfQUxVX0lOUFVUMSAoTVBN ICYgTVBNX0FVRSk7CisKKyAgbmlhID0gRUlQQzsJLyogbmV4dCBQQyAqLwor ICBpZiAoTVBNICYgTVBNX0FVRSkKKyAgICB7CisgICAgICBQU1cgPSBFSVBT VzsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBQU1cgPSAoUFNXICYg KFBTV19OUFYgfCBQU1dfRE1QIHwgUFNXX0lNUCkpCisJfCAoRUlQU1cgJiB+ KFBTV19OUFYgfCBQU1dfRE1QIHwgUFNXX0lNUCkpOworICAgIH0KKworICBU UkFDRV9BTFVfUkVTVUxUMSAoUFNXKTsKKyAgVFJBQ0VfQlJBTkNIX1JFU1VM VCAobmlhKTsKK30KKworCisKKy8vIEZFUkVUCiswMDAwMDExMTExMTAwMDAw ICsgMDAwMDAwMDEwMTAwMTAxMDpYOjo6ZmVyZXQKKyJmZXJldCIKKyp2ODUw ZTIKKyp2ODUwZTJ2MworeworICBUUkFDRV9BTFVfSU5QVVQxIChNUE0gJiBN UE1fQVVFKTsKKworICBuaWEgPSBGRVBDOwkvKiBuZXh0IFBDICovCisgIGlm IChNUE0gJiBNUE1fQVVFKQorICAgIHsKKyAgICAgIFBTVyA9IEZFUFNXOwor ICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIFBTVyA9IChQU1cgJiAoUFNX X05QViB8IFBTV19ETVAgfCBQU1dfSU1QKSkKKwl8IChGRVBTVyAmIH4oUFNX X05QViB8IFBTV19ETVAgfCBQU1dfSU1QKSk7CisgICAgfQorCisgIFRSQUNF X0FMVV9SRVNVTFQxIChQU1cpOworICBUUkFDRV9CUkFOQ0hfUkVTVUxUIChu aWEpOworfQorCisKKy8vIEZFVFJBUAorMCxiYmJiITAsMDAwMDEwMDAwMDA6 STo6OmZldHJhcAorImZldHJhcCIKKyp2ODUwZTIKKyp2ODUwZTJ2Mworewor ICBUUkFDRV9BTFVfSU5QVVQwICgpOworCisgIEZFUEMgPSBQQyArIDI7Cisg IEZFUFNXID0gUFNXOworICBFQ1IgJj0gfkVDUl9GRUNDOworICBFQ1IgfD0g KDB4MzAgKyBiaXQ0KSA8PCAxNjsKKyAgRkVJQyA9IDB4MzAgKyBiaXQ0Owor ICBQU1cgfD0gUFNXX0VQIHwgUFNXX0lEIHwgUFNXX05QOworICBuaWEgPSAw eDMwOwkvKiBuZXh0IFBDICovCisKKyAgVFJBQ0VfQUxVX1JFU1VMVDEgKFBT Vyk7CisgIFRSQUNFX0JSQU5DSF9SRVNVTFQgKG5pYSk7Cit9CisKKwogLy8g SEFMVAogMDAwMDAxMTExMTEwMDAwMCArIDAwMDAwMDAxMDAxMDAwMDA6WDo6 OmhhbHQKICJoYWx0IgpAQCAtNDM0LDEwICs2NzQsMzMgQEAgcnJycnIsMTEx MTExLFJSUlJSICsgd3d3d3csMDEwMTEwMDAwMTA6WAogCiAKIAorLy8gSFNI CitycnJyciwxMTExMTEwMDAwMCArIHd3d3d3LDAxMTAxMDAwMTEwOlhJSTo6 OmhzaAorKnY4NTBlMgorKnY4NTBlMnYzCisiaHNoIHI8cmVnMj4sIHI8cmVn Mz4iCit7CisgIHVuc2lnbmVkMzIgdmFsdWU7CisgIFRSQUNFX0FMVV9JTlBV VDEgKEdSW3JlZzJdKTsKKworICB2YWx1ZSA9IDB4ZmZmZiAmIEdSW3JlZzJd OworICBHUltyZWczXSA9IEdSW3JlZzJdOworCisgIFBTVyAmPSB+KFBTV19a IHwgUFNXX1MgfCBQU1dfQ1kgfCBQU1dfT1YpOworCisgIGlmICh2YWx1ZSA9 PSAwKSB7IFBTVyB8PSBQU1dfWjsgUFNXIHw9IFBTV19DWTsgfQorICBpZiAo dmFsdWUgJiAweDgwMDAwMDAwKSBQU1cgfD0gUFNXX1M7CisKKyAgVFJBQ0Vf QUxVX1JFU1VMVDEgKEdSW3JlZzNdKTsKK30KKworCiAvLyBIU1cKIHJycnJy LDExMTExMTAwMDAwICsgd3d3d3csMDExMDEwMDAxMDA6WElJOjo6aHN3CiAq djg1MGUKICp2ODUwZTEKKyp2ODUwZTIKKyp2ODUwZTJ2MwogImhzdyByPHJl ZzI+LCByPHJlZzM+IgogewogICB1bnNpZ25lZDMyIHZhbHVlOwpAQCAtNDY5 LDYgKzczMiwxNiBAQCBycnJyciEwLDExMTEwLGRkZGRkZCArIGRkZGRkZGRk ZGRkZGRkZCwwCiAgIFRSQUNFX0JSQU5DSDEgKEdSW3JlZzJdKTsKIH0KIAor MDAwMDAwMTAxMTEsUlJSUlIhMCArIGlpaWlpaWlpaWlpaWlpaWkgKyBJSUlJ SUlJSUlJSUlJSUlJOlZJOjo6amFybDMyCisqdjg1MGUyCisqdjg1MGUydjMK KyJqYXJsIDxpbW0zMj4sIHI8cmVnMT4iCit7CisgIEdSW3JlZzFdID0gbmlh OworICBuaWEgPSAoY2lhICsgaW1tMzIpICYgfjE7CisKKyAgVFJBQ0VfQlJB TkNIX1JFU1VMVCAobmlhKTsKK30KIAogCiAvLyBKTVAKQEAgLTQ3OSw2ICs3 NTIsMTUgQEAgcnJycnIhMCwxMTExMCxkZGRkZGQgKyBkZGRkZGRkZGRkZGRk ZGQsMAogICBUUkFDRV9CUkFOQ0gwICgpOwogfQogCiswMDAwMDExMDExMSxS UlJSUiArIGlpaWlpaWlpaWlpaWlpaWkgKyBJSUlJSUlJSUlJSUlJSUlJOlZJ Ojo6am1wMzIKKyp2ODUwZTIKKyp2ODUwZTJ2MworImptcCA8aW1tMzI+W3I8 cmVnMT5dIgoreworICBuaWEgPSAoR1JbcmVnMV0gKyBpbW0zMikgJiB+MTsK KworICBUUkFDRV9CUkFOQ0hfUkVTVUxUIChuaWEpOworfQogCiAKIC8vIEpS CkBAIC00OTAsNiArNzcyLDE3IEBAIHJycnJyITAsMTExMTAsZGRkZGRkICsg ZGRkZGRkZGRkZGRkZGRkLDAKIH0KIAogCisvLyBKUjMyCiswMDAwMDAxMDEx MSwwMDAwMCArIGlpaWlpaWlpaWlpaWlpaWkgKyBJSUlJSUlJSUlJSUlJSUlJ OlZJOjo6anIzMgorKnY4NTBlMgorKnY4NTBlMnYzCisianIgPGltbTMyPiIK K3sKKyAgbmlhID0gKGNpYSArIGltbTMyKSAmIH4xOworCisgIFRSQUNFX0JS QU5DSF9SRVNVTFQgKG5pYSk7Cit9CisKIAogLy8gTEQKIHJycnJyLDExMTAw MCxSUlJSUiArIGRkZGRkZGRkZGRkZGRkZGQ6VklJOjo6bGQuYgpAQCAtNDk4 LDQ3ICs3OTEsMzY4IEBAIHJycnJyLDExMTAwMCxSUlJSUiArIGRkZGRkZGRk ZGRkZGRkZGQ6VkkKICAgQ09NUEFUXzIgKE9QXzcwMCAoKSk7CiB9CiAKKzAw MDAwMTExMTAwLFJSUlJSK3d3d3d3LGRkZGRkZGQsMDEwMStkZGRkZGRkZGRk ZGRkZGRkOlhJVjo6OmxkLmIKKyJsZC5iIDxkaXNwMjM+W3I8cmVnMT5dLCBy PHJlZzM+IgorKnY4NTBlMnYzCit7CisgIHVuc2lnbmVkMzIgYWRkciA9IEdS W3JlZzFdICsgZGlzcDIzOworICB1bnNpZ25lZDMyIHJlc3VsdCA9IEVYVEVO RDggKGxvYWRfZGF0YV9tZW0gKHNkLCBhZGRyLCAxKSk7CisgIEdSW3JlZzNd ID0gcmVzdWx0OworICBUUkFDRV9MRCAoYWRkciwgcmVzdWx0KTsKK30KKwog cnJycnIsMTExMDAxLFJSUlJSICsgZGRkZGRkZGRkZGRkZGRkLDA6VklJOjo6 bGQuaAogImxkLmggPGRpc3AxNj5bcjxyZWcxPl0sIHI8cmVnMj4iCiB7CiAg IENPTVBBVF8yIChPUF83MjAgKCkpOwogfQogCiswMDAwMDExMTEwMCxSUlJS Uit3d3d3dyxkZGRkZGQsMDAxMTErZGRkZGRkZGRkZGRkZGRkZDpYSVY6Ojps ZC5oCisqdjg1MGUydjMKKyJsZC5oIDxkaXNwMjM+W3I8cmVnMT5dLCByPHJl ZzM+IgoreworICB1bnNpZ25lZDMyIGFkZHIgPSBHUltyZWcxXSArIGRpc3Ay MzsKKyAgdW5zaWduZWQzMiByZXN1bHQgPSBFWFRFTkQxNiAobG9hZF9kYXRh X21lbSAoc2QsIGFkZHIsIDIpKTsKKyAgR1JbcmVnM10gPSByZXN1bHQ7Cisg IFRSQUNFX0xEIChhZGRyLCByZXN1bHQpOworfQorCiBycnJyciwxMTEwMDEs UlJSUlIgKyBkZGRkZGRkZGRkZGRkZGQsMTpWSUk6OjpsZC53CiAibGQudyA8 ZGlzcDE2PltyPHJlZzE+XSwgcjxyZWcyPiIKIHsKICAgQ09NUEFUXzIgKE9Q XzEwNzIwICgpKTsKIH0KIAorMDAwMDAxMTExMDAsUlJSUlIrd3d3d3csZGRk ZGRkLDAxMDAxK2RkZGRkZGRkZGRkZGRkZGQ6WElWOjo6bGQudworKnY4NTBl MnYzCisibGQudyA8ZGlzcDIzPltyPHJlZzE+XSwgcjxyZWczPiIKK3sKKyAg dW5zaWduZWQzMiBhZGRyID0gR1JbcmVnMV0gKyBkaXNwMjM7CisgIHVuc2ln bmVkMzIgcmVzdWx0ID0gbG9hZF9kYXRhX21lbSAoc2QsIGFkZHIsIDQpOwor ICBHUltyZWczXSA9IHJlc3VsdDsKKyAgVFJBQ0VfTEQgKGFkZHIsIHJlc3Vs dCk7Cit9CisKIHJycnJyITAsMTExMTAsYixSUlJSUiArIGRkZGRkZGRkZGRk ZGRkZCwxOlZJSTo6OmxkLmJ1CiAqdjg1MGUKICp2ODUwZTEKKyp2ODUwZTIK Kyp2ODUwZTJ2MwogImxkLmJ1IDxkaXNwMTY+W3I8cmVnMT5dLCByPHJlZzI+ IgogewogICBDT01QQVRfMiAoT1BfMTA3ODAgKCkpOwogfQogCiswMDAwMDEx MTEwMSxSUlJSUit3d3d3dyxkZGRkZGRkLDAxMDErZGRkZGRkZGRkZGRkZGRk ZDpYSVY6OjpsZC5idQorKnY4NTBlMnYzCisibGQuYnUgPGRpc3AyMz5bcjxy ZWcxPl0sIHI8cmVnMz4iCit7IAorICB1bnNpZ25lZDMyIGFkZHIgPSBHUlty ZWcxXSArIGRpc3AyMzsKKyAgdW5zaWduZWQzMiByZXN1bHQgPSBsb2FkX2Rh dGFfbWVtIChzZCwgYWRkciwgMSk7CisgIEdSW3JlZzNdID0gcmVzdWx0Owor ICBUUkFDRV9MRCAoYWRkciwgcmVzdWx0KTsKK30KKwogcnJycnIhMCwxMTEx MTEsUlJSUlIgKyBkZGRkZGRkZGRkZGRkZGQsMTpWSUk6OjpsZC5odQogKnY4 NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJsZC5odSA8ZGlz cDE2PltyPHJlZzE+XSwgcjxyZWcyPiIKIHsKICAgQ09NUEFUXzIgKE9QXzEw N0UwICgpKTsKIH0KIAorMDAwMDAxMTExMDEsUlJSUlIrd3d3d3csZGRkZGRk LDAwMTExK2RkZGRkZGRkZGRkZGRkZGQ6WElWOjo6bGQuaHUKKyp2ODUwZTJ2 MworImxkLmh1IDxkaXNwMjM+W3I8cmVnMT5dLCByPHJlZzM+IgoreworICB1 bnNpZ25lZDMyIGFkZHIgPSBHUltyZWcxXSArIGRpc3AyMzsKKyAgdW5zaWdu ZWQzMiByZXN1bHQgPSBsb2FkX2RhdGFfbWVtIChzZCwgYWRkciwgMik7Cisg IEdSW3JlZzNdID0gcmVzdWx0OworICBUUkFDRV9MRCAoYWRkciwgcmVzdWx0 KTsKK30KKworCiAKIC8vIExEU1IKIHJlZ0lELDExMTExMSxSUlJSUiArIDAw MDAwMDAwMDAxMDAwMDA6SVg6OjpsZHNyCiAibGRzciByPHJlZzE+LCBzPHJl Z0lEPiIKIHsKKyAgdWludDMyIHNyZWcgPSBHUltyZWcxXTsKICAgVFJBQ0Vf QUxVX0lOUFVUMSAoR1JbcmVnMV0pOwogICAKLSAgaWYgKCZQU1cgPT0gJlNS W3JlZ0lEXSkKLSAgICBQU1cgPSAoR1JbcmVnMV0gJiAoQ1BVKS0+cHN3X21h c2spOworICAgaWYgKChpZGVjb2RlX2lzc3VlID09IGlkZWNvZGVfdjg1MGUy X2lzc3VlCisgICAgICAgfHwgaWRlY29kZV9pc3N1ZSA9PSBpZGVjb2RlX3Y4 NTBlMnYzX2lzc3VlKQorICAgICAgJiYgcmVnSUQgPCAyOCkKKyAgICB7Cisg ICAgICBpbnQgcHJvdGVjdF9wID0gKFBTVyAmIFBTV19OUFYpID8gMSA6IDA7 CisKKyAgICAgIAorICAgICAgc3dpdGNoIChCU0VMICYgMHhmZmZmKQorCXsK KwljYXNlIDB4MDAwMDoKKwkgIGlmICgoUFNXICYgUFNXX05QVikKKwkgICAg ICAmJiAoKHJlZ0lEID49IDggJiYgcmVnSUQgPD0gMTIpCisJCSAgfHwgKHJl Z0lEID49IDIyICYmIHJlZ0lEIDw9IDI3KQorCQkgIHx8IHJlZ0lEID09IFBT V19SRUdOTykpCisJICAgIHsKKwkgICAgICBwcm90ZWN0X3AgPSAwOworCSAg ICB9CisJICBicmVhazsKKwljYXNlIDB4MTAwMDoJLyogTVBVMCAqLworCSAg YnJlYWs7CisJY2FzZSAweDEwMDE6CS8qIE1QVTEgKi8KKwkgIGJyZWFrOwor CWNhc2UgMHgyMDAwOgkvKiBGUFUgKi8KKwkgIGlmICgoUFNXICYgUFNXX05Q VikKKwkgICAgICAmJiAoKC8qIHJlZ0lEID49IDAgJiYgKi8gcmVnSUQgPD0g NSkKKwkJICB8fCByZWdJRCA9PSA4IAorCQkgIHx8IHJlZ0lEID09IDkgCisJ CSAgfHwgcmVnSUQgPT0gMTAgCisJCSAgfHwgKHJlZ0lEID49IDExICYmIHJl Z0lEIDw9IDI2KSkpCisJICAgIHsKKwkgICAgICBwcm90ZWN0X3AgPSAwOwor CSAgICB9CisJICBicmVhazsKKwljYXNlIDB4ZmYwMDoKKwkgIGlmICgoUFNX ICYgUFNXX05QVikKKwkgICAgICAgJiYgKHJlZ0lEID09IDYgCisJCSAgIHx8 IHJlZ0lEID09IDcgCisJCSAgIHx8IHJlZ0lEID09IDggCisJCSAgIHx8IHJl Z0lEID09IDkgCisJCSAgIHx8IHJlZ0lEID09IDEwIAorCQkgICB8fCAocmVn SUQgPj0gMTEgJiYgcmVnSUQgPD0gMTUpCisJCSAgIHx8IHJlZ0lEID09IDE4 IAorCQkgICB8fCByZWdJRCA9PSAxOSAKKwkJICAgfHwgKHJlZ0lEID49IDIx ICYmIHJlZ0lEIDw9IDI3KSkpCisJICAgIHsKKwkgICAgICBwcm90ZWN0X3Ag PSAwOworCSAgICB9CisJICBicmVhazsKKwljYXNlIDB4ZmZmZjoKKwkgIGlm ICgoUFNXICYgUFNXX05QVikKKwkgICAgICAgJiYgKHJlZ0lEID09IDYgCisJ CSAgIHx8IHJlZ0lEID09IDcgCisJCSAgIHx8IHJlZ0lEID09IDggCisJCSAg IHx8IHJlZ0lEID09IDkgCisJCSAgIHx8IHJlZ0lEID09IDEwIAorCQkgICB8 fCByZWdJRCA9PSAxMSAKKwkJICAgfHwgcmVnSUQgPT0gMTIgCisJCSAgIHx8 IHJlZ0lEID09IDE1IAorCQkgICB8fCByZWdJRCA9PSAxOCAKKwkJICAgfHwg cmVnSUQgPT0gMTkgCisJCSAgIHx8IChyZWdJRCA+PSAyMSAmJiByZWdJRCA8 PSAyNykpKQorCSAgICB7CisJICAgICAgcHJvdGVjdF9wID0gMDsKKwkgICAg fQorCSAgYnJlYWs7CisJfQorCisgICAgICBpZiAoIXByb3RlY3RfcCkKKwl7 CisJICBzd2l0Y2ggKEJTRUwgJiAweGZmZmYpCisJICAgIHsKKwkgICAgY2Fz ZSAweDAwMDA6CisJICAgIGNhc2UgMHhmZjAwOgkvKiB1c2VyMCBiYW5rICov CisJICAgIGNhc2UgMHhmZmZmOgkvKiB1c2VyMSBiYW5rICovCisJICAgICAg aWYocmVnSUQgPT0gUFNXX1JFR05PKQorCQl7CisJCSAgU1JbcmVnSURdID0g c3JlZyAmICgoUFNXICYgUFNXX05QVikgPyAweGYgOiB+MCk7CisJCX0KKwkg ICAgICBlbHNlCisJCXsKKwkJICBTUltyZWdJRF0gPSBzcmVnOworCQl9CisJ ICAgICAgYnJlYWs7CisJICAgIGNhc2UgMHgxMDAwOgorCSAgICAgIE1QVTBf U1JbcmVnSURdID0gc3JlZzsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSAw eDEwMDE6CisJICAgICAgaWYgKHJlZ0lEID09IE1QQ19SRUdOTykKKwkJewor CQkgIFBQQyAmPSB+UFBDX1BQRTsKKwkJICBTUEFMICY9IH5TUEFMX1NQRTsK KwkJICBJUEEwTCAmPSB+SVBBX0lQRTsKKwkJICBJUEExTCAmPSB+SVBBX0lQ RTsKKwkJICBJUEEyTCAmPSB+SVBBX0lQRTsKKwkJICBJUEEzTCAmPSB+SVBB X0lQRTsKKwkJICBEUEEwTCAmPSB+RFBBX0RQRTsKKwkJICBEUEExTCAmPSB+ RFBBX0RQRTsKKwkJICBEQ0MgJj0gfihEQ0NfRENFMCB8IERDQ19EQ0UxKTsK KwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIE1QVTFfU1JbcmVnSURdID0g c3JlZzsKKwkJfQorCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDB4MjAwMDoJ LyogRlBVICovCisJICAgICAgaWYgKHJlZ0lEID09IEZQU1RfUkVHTk8pCisJ CXsKKwkJICB1bnNpZ25lZCBpbnQgdmFsID0gRlBTUiAmIH4oRlBTUl9QUiB8 IEZQU1JfWEMgfCBGUFNSX1hQKTsKKwkgICAgICAKKwkJICB2YWwgfD0gKChz cmVnICYgRlBTVF9QUikgPyBGUFNSX1BSIDogMCkKKwkJICAgIHwgKChzcmVn ICYgRlBTVF9YQ0UpID8gRlBTUl9YQ0UgOiAwKQorCQkgICAgfCAoKHNyZWcg JiBGUFNUX1hDVikgPyBGUFNSX1hDViA6IDApCisJCSAgICB8ICgoc3JlZyAm IEZQU1RfWENaKSA/IEZQU1JfWENaIDogMCkKKwkJICAgIHwgKChzcmVnICYg RlBTVF9YQ08pID8gRlBTUl9YQ08gOiAwKQorCQkgICAgfCAoKHNyZWcgJiBG UFNUX1hDVSkgPyBGUFNSX1hDVSA6IDApCisJCSAgICB8ICgoc3JlZyAmIEZQ U1RfWENJKSA/IEZQU1JfWENJIDogMCkKKwkJICAgIHwgKChzcmVnICYgRlBT VF9YUFYpID8gRlBTUl9YUFYgOiAwKQorCQkgICAgfCAoKHNyZWcgJiBGUFNU X1hQWikgPyBGUFNSX1hQWiA6IDApCisJCSAgICB8ICgoc3JlZyAmIEZQU1Rf WFBPKSA/IEZQU1JfWFBPIDogMCkKKwkJICAgIHwgKChzcmVnICYgRlBTVF9Y UFUpID8gRlBTUl9YUFUgOiAwKQorCQkgICAgfCAoKHNyZWcgJiBGUFNUX1hQ SSkgPyBGUFNSX1hQSSA6IDApOworCQkgIEZQU1IgPSB2YWw7CisJCX0KKwkg ICAgICBlbHNlIGlmIChyZWdJRCA9PSBGUENGR19SRUdOTykKKwkJeworCQkg IHVuc2lnbmVkIGludCB2YWwgPSBGUFNSICYgfihGUFNSX1JNIHwgRlBTUl9Y RSk7CisKKwkJICB2YWwgfD0gKCgoc3JlZyAmIEZQQ0ZHX1JNKSA+PiA3KSA8 PCAxOCkKKwkJICAgIHwgKChzcmVnICYgRlBDRkdfWEVWKSA/IEZQU1JfWEVW IDogMCkKKwkJICAgIHwgKChzcmVnICYgRlBDRkdfWEVaKSA/IEZQU1JfWEVa IDogMCkKKwkJICAgIHwgKChzcmVnICYgRlBDRkdfWEVPKSA/IEZQU1JfWEVP IDogMCkKKwkJICAgIHwgKChzcmVnICYgRlBDRkdfWEVVKSA/IEZQU1JfWEVV IDogMCkKKwkJICAgIHwgKChzcmVnICYgRlBDRkdfWEVJKSA/IEZQU1JfWEVJ IDogMCk7CisJCSAgRlBTUiA9IHZhbDsKKwkJfQorCisJICAgICAgRlBVX1NS W3JlZ0lEXSA9IHNyZWc7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9Cisg ICAgfQogICBlbHNlCi0gICAgU1JbcmVnSURdID0gR1JbcmVnMV07CisgICAg eworICAgICAgU1JbcmVnSURdID0gc3JlZzsKKyAgICB9CisgCisgIFRSQUNF X0FMVV9SRVNVTFQgKHNyZWcpOworfQorCisKKworLy8gTUFDCitycnJyciwx MTExMTEsUlJSUlIgKyB3d3d3LDAwMTExMTAsbW1tbSwwOlhJOjo6bWFjCisq djg1MGUyCisqdjg1MGUydjMKKyJtYWMgcjxyZWcxPiwgcjxyZWcyPiwgcjxy ZWczZT4sIHI8cmVnNGU+IgoreworICB1bnNpZ25lZCBsb25nIG9wMDsKKyAg dW5zaWduZWQgbG9uZyBvcDE7CisgIHVuc2lnbmVkIGxvbmcgb3AyOworICB1 bnNpZ25lZCBsb25nIG9wMmhpOworICB1bnNpZ25lZCBsb25nIGxvOworICB1 bnNpZ25lZCBsb25nIG1pZDE7CisgIHVuc2lnbmVkIGxvbmcgbWlkMjsKKyAg dW5zaWduZWQgbG9uZyBoaTsKKyAgdW5zaWduZWQgbG9uZyBSZExvOworICB1 bnNpZ25lZCBsb25nIFJkSGk7CisgIGludCAgICAgICAgICAgY2Fycnk7Cisg IGJmZF9ib29sZWFuIHNpZ247CisKKyAgb3AwID0gR1JbcmVnMV07CisgIG9w MSA9IEdSW3JlZzJdOworICBvcDIgPSBHUltyZWczZV07CisgIG9wMmhpID0g R1JbcmVnM2UrMV07CisKKyAgVFJBQ0VfQUxVX0lOUFVUNCAob3AwLCBvcDEs IG9wMiwgb3AyaGkpOworCisgIHNpZ24gPSAob3AwIF4gb3AxKSAmIDB4ODAw MDAwMDA7CisJICAKKyAgaWYgKCgoc2lnbmVkIGxvbmcpIG9wMCkgPCAwKQor ICAgIG9wMCA9IC0gb3AwOworCSAgCisgIGlmICgoKHNpZ25lZCBsb25nKSBv cDEpIDwgMCkKKyAgICBvcDEgPSAtIG9wMTsKKyAgICAgIAorICAvKiBXZSBj YW4gc3BsaXQgdGhlIDMyeDMyIGludG8gZm91ciAxNngxNiBvcGVyYXRpb25z LiBUaGlzIGVuc3VyZXMKKyAgICAgdGhhdCB3ZSBkbyBub3QgbG9zZSBwcmVj aXNpb24gb24gMzJiaXQgb25seSBob3N0czogKi8KKyAgbG8gICA9ICggKG9w MCAgICAgICAgJiAweEZGRkYpICogIChvcDEgICAgICAgICYgMHhGRkZGKSk7 CisgIG1pZDEgPSAoIChvcDAgICAgICAgICYgMHhGRkZGKSAqICgob3AxID4+ IDE2KSAmIDB4RkZGRikpOworICBtaWQyID0gKCgob3AwID4+IDE2KSAmIDB4 RkZGRikgKiAgKG9wMSAgICAgICAgJiAweEZGRkYpKTsKKyAgaGkgICA9ICgo KG9wMCA+PiAxNikgJiAweEZGRkYpICogKChvcDEgPj4gMTYpICYgMHhGRkZG KSk7CisgIAorICAvKiBXZSBub3cgbmVlZCB0byBhZGQgYWxsIG9mIHRoZXNl IHJlc3VsdHMgdG9nZXRoZXIsIHRha2luZyBjYXJlCisgICAgIHRvIHByb3Bv Z2F0ZSB0aGUgY2FycmllcyBmcm9tIHRoZSBhZGRpdGlvbnM6ICovCisgIFJk TG8gPSBBZGQzMiAobG8sIChtaWQxIDw8IDE2KSwgJiBjYXJyeSk7CisgIFJk SGkgPSBjYXJyeTsKKyAgUmRMbyA9IEFkZDMyIChSZExvLCAobWlkMiA8PCAx NiksICYgY2FycnkpOworICBSZEhpICs9IChjYXJyeSArICgobWlkMSA+PiAx NikgJiAweEZGRkYpICsgKChtaWQyID4+IDE2KSAmIDB4RkZGRikgKyBoaSk7 CisKKyAgaWYgKHNpZ24pCisgICAgeworICAgICAgUmRMbyA9IH4gUmRMbzsK KyAgICAgIFJkSGkgPSB+IFJkSGk7CisgICAgICBpZiAoUmRMbyA9PSAweEZG RkZGRkZGKQorCXsKKwkgIFJkTG8gPSAwOworCSAgUmRIaSArPSAxOworCX0K KyAgICAgIGVsc2UKKwlSZExvICs9IDE7CisgICAgfQorCisgIFJkTG8gPSBB ZGQzMiAoUmRMbywgb3AyLCAmIGNhcnJ5KTsKKyAgUmRIaSArPSBjYXJyeSAr IG9wMmhpOyAKKworICAvKiBTdG9yZSB0aGUgcmVzdWx0IGFuZCBjb25kaXRp b24gY29kZXMuICAqLworICBHUltyZWczZV0gPSBSZExvOworICBHUltyZWcz ZSArIDEgXSA9IFJkSGk7CisKKyAgVFJBQ0VfQUxVX1JFU1VMVDIgKFJkTG8s IFJkSGkpOworfQorCisKKworLy8gTUFDVQorcnJycnIsMTExMTExLFJSUlJS ICsgd3d3dywwMDExMTExLG1tbW0sMDpYSTo6Om1hY3UKKyp2ODUwZTIKKyp2 ODUwZTJ2MworIm1hY3UgcjxyZWcxPiwgcjxyZWcyPiwgcjxyZWczZT4sIHI8 cmVnNGU+IgoreworICB1bnNpZ25lZCBsb25nIG9wMDsKKyAgdW5zaWduZWQg bG9uZyBvcDE7CisgIHVuc2lnbmVkIGxvbmcgb3AyOworICB1bnNpZ25lZCBs b25nIG9wMmhpOworICB1bnNpZ25lZCBsb25nIGxvOworICB1bnNpZ25lZCBs b25nIG1pZDE7CisgIHVuc2lnbmVkIGxvbmcgbWlkMjsKKyAgdW5zaWduZWQg bG9uZyBoaTsKKyAgdW5zaWduZWQgbG9uZyBSZExvOworICB1bnNpZ25lZCBs b25nIFJkSGk7CisgIGludCAgICAgICAgICAgY2Fycnk7CisgIAorICBvcDAg PSBHUltyZWcxXTsKKyAgb3AxID0gR1JbcmVnMl07CisgIG9wMiA9IEdSW3Jl ZzNlXTsKKyAgb3AyaGkgPSBHUltyZWczZSArIDFdOworCisgIFRSQUNFX0FM VV9JTlBVVDQgKG9wMCwgb3AxLCBvcDIsIG9wMmhpKTsKKworICAvKiBXZSBj YW4gc3BsaXQgdGhlIDMyeDMyIGludG8gZm91ciAxNngxNiBvcGVyYXRpb25z LiBUaGlzIGVuc3VyZXMKKyAgICAgdGhhdCB3ZSBkbyBub3QgbG9zZSBwcmVj aXNpb24gb24gMzJiaXQgb25seSBob3N0czogKi8KKyAgbG8gICA9ICggKG9w MCAgICAgICAgJiAweEZGRkYpICogIChvcDEgICAgICAgICYgMHhGRkZGKSk7 CisgIG1pZDEgPSAoIChvcDAgICAgICAgICYgMHhGRkZGKSAqICgob3AxID4+ IDE2KSAmIDB4RkZGRikpOworICBtaWQyID0gKCgob3AwID4+IDE2KSAmIDB4 RkZGRikgKiAgKG9wMSAgICAgICAgJiAweEZGRkYpKTsKKyAgaGkgICA9ICgo KG9wMCA+PiAxNikgJiAweEZGRkYpICogKChvcDEgPj4gMTYpICYgMHhGRkZG KSk7CiAgIAotICBUUkFDRV9BTFVfUkVTVUxUIChTUltyZWdJRF0pOworICAv KiBXZSBub3cgbmVlZCB0byBhZGQgYWxsIG9mIHRoZXNlIHJlc3VsdHMgdG9n ZXRoZXIsIHRha2luZyBjYXJlCisgICAgIHRvIHByb3BvZ2F0ZSB0aGUgY2Fy cmllcyBmcm9tIHRoZSBhZGRpdGlvbnM6ICovCisgIFJkTG8gPSBBZGQzMiAo bG8sIChtaWQxIDw8IDE2KSwgJiBjYXJyeSk7CisgIFJkSGkgPSBjYXJyeTsK KyAgUmRMbyA9IEFkZDMyIChSZExvLCAobWlkMiA8PCAxNiksICYgY2Fycnkp OworICBSZEhpICs9IChjYXJyeSArICgobWlkMSA+PiAxNikgJiAweEZGRkYp ICsgKChtaWQyID4+IDE2KSAmIDB4RkZGRikgKyBoaSk7CisKKyAgUmRMbyA9 IEFkZDMyIChSZExvLCBvcDIsICYgY2FycnkpOworICBSZEhpICs9IGNhcnJ5 ICsgb3AyaGk7IAorCisgIC8qIFN0b3JlIHRoZSByZXN1bHQgYW5kIGNvbmRp dGlvbiBjb2Rlcy4gICovCisgIEdSW3JlZzRlXSA9IFJkTG87CisgIEdSW3Jl ZzRlXSA9IFJkSGk7CisKKyAgVFJBQ0VfQUxVX1JFU1VMVDIgKFJkTG8sIFJk SGkpOwogfQogCiAKQEAgLTU1Miw3ICsxMTY2LDYgQEAgcnJycnIhMCwwMDAw MDAsUlJSUlI6STo6Om1vdgogICBUUkFDRV9BTFVfUkVTVUxUIChHUltyZWcy XSk7CiB9CiAKLQogcnJycnIhMCwwMTAwMDAsaWlpaWk6SUk6Ojptb3YKICJt b3YgPGltbTU+LCByPHJlZzI+IgogewpAQCAtNTYyLDYgKzExNzUsOCBAQCBy cnJyciEwLDAxMDAwMCxpaWlpaTpJSTo6Om1vdgogMDAwMDAxMTAwMDEsUlJS UlIgKyBpaWlpaWlpaWlpaWlpaWlpICsgSUlJSUlJSUlJSUlJSUlJSTpWSTo6 Om1vdgogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJt b3YgPGltbTMyPiwgcjxyZWcxPiIKIHsKICAgU0FWRV8yOwpAQCAtNTk2LDYg KzEyMTEsOCBAQCBycnJyciEwLDExMDAxMCxSUlJSUiArIGlpaWlpaWlpaWlp aWlpaWk6CiBycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3dywwMTAwMDEwMDAw MDpYSTo6Om11bAogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUy djMKICJtdWwgcjxyZWcxPiwgcjxyZWcyPiwgcjxyZWczPiIKIHsKICAgQ09N UEFUXzIgKE9QXzIyMDA3RTAgKCkpOwpAQCAtNjA0LDYgKzEyMjEsOCBAQCBy cnJyciwxMTExMTEsUlJSUlIgKyB3d3d3dywwMTAwMDEwMDAwMDpYCiBycnJy ciwxMTExMTEsaWlpaWkgKyB3d3d3dywwMTAwMSxJSUlJLDAwOlhJSTo6Om11 bAogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJtdWwg PGltbTk+LCByPHJlZzI+LCByPHJlZzM+IgogewogICBDT01QQVRfMiAoT1Bf MjQwMDdFMCAoKSk7CkBAIC02MzgsNiArMTI1Nyw4IEBAIHJycnJyITAsMTEw MTExLFJSUlJSICsgaWlpaWlpaWlpaWlpaWlpaToKIHJycnJyLDExMTExMSxS UlJSUiArIHd3d3d3LDAxMDAwMTAwMDEwOlhJOjo6bXVsdQogKnY4NTBlCiAq djg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJtdWx1IHI8cmVnMT4sIHI8 cmVnMj4sIHI8cmVnMz4iCiB7CiAgIENPTVBBVF8yIChPUF8yMjIwN0UwICgp KTsKQEAgLTY0Niw2ICsxMjY3LDggQEAgcnJycnIsMTExMTExLFJSUlJSICsg d3d3d3csMDEwMDAxMDAwMTA6WAogcnJycnIsMTExMTExLGlpaWlpICsgd3d3 d3csMDEwMDEsSUlJSSwxMDpYSUk6OjptdWx1CiAqdjg1MGUKICp2ODUwZTEK Kyp2ODUwZTIKKyp2ODUwZTJ2MwogIm11bHUgPGltbTk+LCByPHJlZzI+LCBy PHJlZzM+IgogewogICBDT01QQVRfMiAoT1BfMjQyMDdFMCAoKSk7CkBAIC02 ODEsNiArMTMwNCw4IEBAIHJycnJyLDAwMDAwMSxSUlJSUjpJOjo6bm90CiBy cnJyciwxMTExMTEsUlJSUlIgKyAwMDAwMDAwMDExMTAwMDEwOklYOjo6bm90 MQogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJub3Qx IHI8cmVnMj4sIHI8cmVnMT4iCiB7CiAgIENPTVBBVF8yIChPUF9FMjA3RTAg KCkpOwpAQCAtNzEwLDYgKzEzMzUsOCBAQCBycnJyciwxMTAxMDAsUlJSUlIg KyBpaWlpaWlpaWlpaWlpaWlpOlZJCiAwMDAwMDExMTEwLGlpaWlpLEwgKyBM TExMTExMTExMTCwwMDAwMTpYSUlJOjo6cHJlcGFyZQogKnY4NTBlCiAqdjg1 MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJwcmVwYXJlIDxsaXN0MTI+LCA8 aW1tNT4iCiB7CiAgIGludCAgaTsKQEAgLTczNSw2ICsxMzYyLDggQEAgcnJy cnIsMTEwMTAwLFJSUlJSICsgaWlpaWlpaWlpaWlpaWlpaTpWSQogMDAwMDAx MTExMCxpaWlpaSxMICsgTExMTExMTExMTEwsMDAwMTE6WElJSTo6OnByZXBh cmUwMAogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJw cmVwYXJlIDxsaXN0MTI+LCA8aW1tNT4sIHNwIgogewogICBDT01QQVRfMiAo T1BfMzA3ODAgKCkpOwpAQCAtNzQzLDYgKzEzNzIsOCBAQCBycnJyciwxMTAx MDAsUlJSUlIgKyBpaWlpaWlpaWlpaWlpaWlpOlZJCiAwMDAwMDExMTEwLGlp aWlpLEwgKyBMTExMTExMTExMTCwwMTAxMSArIGlpaWlpaWlpaWlpaWlpaWk6 WElJSTo6OnByZXBhcmUwMQogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisq djg1MGUydjMKICJwcmVwYXJlIDxsaXN0MTI+LCA8aW1tNT4sIDx1aW1tMTY+ IgogewogICBDT01QQVRfMiAoT1BfQjA3ODAgKCkpOwpAQCAtNzUxLDYgKzEz ODIsOCBAQCBycnJyciwxMTAxMDAsUlJSUlIgKyBpaWlpaWlpaWlpaWlpaWlp OlZJCiAwMDAwMDExMTEwLGlpaWlpLEwgKyBMTExMTExMTExMTCwxMDAxMSAr IGlpaWlpaWlpaWlpaWlpaWk6WElJSTo6OnByZXBhcmUxMAogKnY4NTBlCiAq djg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJwcmVwYXJlIDxsaXN0MTI+ LCA8aW1tNT4sIDx1aW1tMTY+IgogewogICBDT01QQVRfMiAoT1BfMTMwNzgw ICgpKTsKQEAgLTc1OSw2ICsxMzkyLDggQEAgcnJycnIsMTEwMTAwLFJSUlJS ICsgaWlpaWlpaWlpaWlpaWlpaTpWSQogMDAwMDAxMTExMCxpaWlpaSxMICsg TExMTExMTExMTEwsMTEwMTEgKyBpaWlpaWlpaWlpaWlpaWlpICsgZGRkZGRk ZGRkZGRkZGRkZDpYSUlJOjo6cHJlcGFyZTExCiAqdjg1MGUKICp2ODUwZTEK Kyp2ODUwZTIKKyp2ODUwZTJ2MwogInByZXBhcmUgPGxpc3QxMj4sIDxpbW01 PiwgPHVpbW0zMj4iCiB7CiAgIENPTVBBVF8yIChPUF8xQjA3ODAgKCkpOwpA QCAtODAzLDEyICsxNDM4LDIzIEBAIHJycnJyLDAxMDEwMSxpaWlpaTpJSTo6 OnNhcgogICBDT01QQVRfMSAoT1BfMkEwICgpKTsKIH0KIAorcnJycnIsMTEx MTExLFJSUlJSICsgd3d3d3csMDAwMTAxMDAwMTA6WEk6OjpzYXIKKyp2ODUw ZTIKKyp2ODUwZTJ2MworInNhciByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+ IgoreworICBUUkFDRV9BTFVfSU5QVVQyIChHUltyZWcxXSwgR1JbcmVnMl0p OworICB2ODUwX3NhcihzZCwgR1JbcmVnMV0sIEdSW3JlZzJdLCAmR1JbcmVn M10pOyAKKyAgVFJBQ0VfQUxVX1JFU1VMVDEgKEdSW3JlZzNdKTsKK30KIAog CiAvLyBTQVNGCiBycnJyciwxMTExMTEwLGNjY2MgKyAwMDAwMDAxMDAwMDAw MDAwOklYOjo6c2FzZgogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1 MGUydjMKICJzYXNmICVzPGNjY2M+LCByPHJlZzI+IgogewogICBDT01QQVRf MiAoT1BfMjAwMDdFMCAoKSk7CkBAIC04MTYsNyArMTQ2Miw2IEBAIHJycnJy LDExMTExMTAsY2NjYyArIDAwMDAwMDEwMDAwMDAwMDA6SVgKIAogCiAKLQog Ly8gU0FUQURECiBycnJyciEwLDAwMDExMCxSUlJSUjpJOjo6c2F0YWRkCiAi c2F0YWRkIHI8cmVnMT4sIHI8cmVnMj4iCkBAIC04MzAsNiArMTQ3NSwxNiBA QCBycnJyciEwLDAxMDAwMSxpaWlpaTpJSTo6OnNhdGFkZAogICBDT01QQVRf MSAoT1BfMjIwICgpKTsKIH0KIAorcnJycnIsMTExMTExLFJSUlJSICsgd3d3 d3csMDExMTAxMTEwMTA6WEk6OjpzYXRhZGQKKyp2ODUwZTIKKyp2ODUwZTJ2 MworInNhdGFkZCByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+IgoreworICBU UkFDRV9BTFVfSU5QVVQyIChHUltyZWcxXSwgR1JbcmVnMl0pOworICB2ODUw X3NhdGFkZCAoc2QsIEdSW3JlZzFdLCBHUltyZWcyXSwgJkdSW3JlZzNdKTsK KyAgVFJBQ0VfQUxVX1JFU1VMVDEgKEdSW3JlZzNdKTsKK30KKwogCiAKIC8v IFNBVFNVQgpAQCAtODM5LDYgKzE0OTQsMTYgQEAgcnJycnIhMCwwMDAxMDEs UlJSUlI6STo6OnNhdHN1YgogICBDT01QQVRfMSAoT1BfQTAgKCkpOwogfQog CitycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3dywwMTExMDAxMTAxMDpYSTo6 OnNhdHN1YgorKnY4NTBlMgorKnY4NTBlMnYzCisic2F0c3ViIHI8cmVnMT4s IHI8cmVnMj4sIHI8cmVnMz4iCit7CisgIFRSQUNFX0FMVV9JTlBVVDIgKEdS W3JlZzFdLCBHUltyZWcyXSk7CisgIHY4NTBfc2F0c3ViIChzZCwgR1JbcmVn MV0sIEdSW3JlZzJdLCAmR1JbcmVnM10pOworICBUUkFDRV9BTFVfUkVTVUxU MSAoR1JbcmVnM10pOworfQorCiAKIAogLy8gU0FUU1VCSQpAQCAtODU5LDYg KzE1MjQsMjM0IEBAIHJycnJyITAsMDAwMTAwLFJSUlJSOkk6OjpzYXRzdWJy CiAKIAogCisvL1NCRgorcnJycnIsMTExMTExLFJSUlJSICsgd3d3d3csMDEx MTAwLGNjY2MhMTMsMDpYSTo6OnNiZgorKnY4NTBlMgorKnY4NTBlMnYzCisi c2JmICVzPGNjY2M+LCByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+Igorewor ICBpbnQgY29uZCA9IGNvbmRpdGlvbl9tZXQgKGNjY2MpOworICBUUkFDRV9B TFVfSU5QVVQzIChjb25kLCBHUltyZWcxXSwgR1JbcmVnMl0pOworICBHUlty ZWczXSA9IEdSW3JlZzJdIC0gR1JbcmVnMV0gLSAoY29uZCA/IDEgOiAwKTsK KyAgVFJBQ0VfQUxVX1JFU1VMVDEgKEdSW3JlZzNdKTsKK30KKworCisKKy8v IFNDSDBMCitycnJyciwxMTExMTEwMDAwMCArIHd3d3d3LDAxMTAxMTAwMTAw OklYOjo6c2NoMGwKKyp2ODUwZTIKKyp2ODUwZTJ2MworInNjaDBsIHI8cmVn Mj4sIHI8cmVnMz4iCit7CisgIHVuc2lnbmVkIGludCBwb3MsIG9wMDsKKwor ICBUUkFDRV9BTFVfSU5QVVQxIChHUltyZWcyXSk7CisKKyAgb3AwID0gR1Jb cmVnMl07CisKKyAgaWYgKG9wMCA9PSAweGZmZmZmZmZmKQorICAgIHsKKyAg ICAgIFBTVyAmPSB+UFNXX0NZOworICAgICAgUFNXICY9IH5QU1dfT1Y7Cisg ICAgICBQU1cgJj0gflBTV19TOworICAgICAgUFNXIHw9IFBTV19aOworICAg ICAgcG9zID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKG9wMCA9PSAweGZmZmZm ZmZlKQorICAgIHsKKyAgICAgIFBTVyB8PSBQU1dfQ1k7CisgICAgICBQU1cg Jj0gflBTV19PVjsKKyAgICAgIFBTVyAmPSB+UFNXX1M7CisgICAgICBQU1cg Jj0gflBTV19aOworICAgICAgcG9zID0gMzI7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgcG9zID0gMTsKKyAgICAgIHdoaWxlIChvcDAgJiAweDgw MDAwMDAwKSAKKwl7CisJICBvcDAgPDw9IDE7IAorCSAgcG9zKys7CisJfQor ICAgICAgUFNXICY9IH5QU1dfQ1k7CisgICAgICBQU1cgJj0gflBTV19PVjsK KyAgICAgIFBTVyAmPSB+UFNXX1M7CisgICAgICBQU1cgJj0gflBTV19aOwor ICAgIH0KKworICBHUltyZWczXSA9IHBvczsKKworICBUUkFDRV9BTFVfUkVT VUxUMSAoR1JbcmVnM10pOworfQorCisKKworLy8gU0NIMFIKK3JycnJyLDEx MTExMTAwMDAwICsgd3d3d3csMDExMDExMDAwMDA6SVg6OjpzY2gwcgorKnY4 NTBlMgorKnY4NTBlMnYzCisic2NoMHIgcjxyZWcyPiwgcjxyZWczPiIKK3sK KyAgdW5zaWduZWQgaW50IHBvcywgb3AwOworCisgIFRSQUNFX0FMVV9JTlBV VDEgKEdSW3JlZzJdKTsKKworICBvcDAgPSBHUltyZWcyXTsKKworICBpZiAo b3AwID09IDB4ZmZmZmZmZmYpCisgICAgeworICAgICAgUFNXICY9IH5QU1df Q1k7CisgICAgICBQU1cgJj0gflBTV19PVjsKKyAgICAgIFBTVyAmPSB+UFNX X1M7CisgICAgICBQU1cgfD0gUFNXX1o7CisgICAgICBwb3MgPSAwOworICAg IH0KKyAgZWxzZSBpZiAob3AwID09IDB4N2ZmZmZmZmYpCisgICAgeworICAg ICAgUFNXIHw9IFBTV19DWTsKKyAgICAgIFBTVyAmPSB+UFNXX09WOworICAg ICAgUFNXICY9IH5QU1dfUzsKKyAgICAgIFBTVyAmPSB+UFNXX1o7CisgICAg ICBwb3MgPSAzMjsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBwb3Mg PSAxOworICAgICAgd2hpbGUgKG9wMCAmIDB4MDAwMDAwMDEpIAorCXsKKwkg IG9wMCA+Pj0gMTsgCisJICBwb3MrKzsKKwl9CisgICAgICBQU1cgJj0gflBT V19DWTsKKyAgICAgIFBTVyAmPSB+UFNXX09WOworICAgICAgUFNXICY9IH5Q U1dfUzsKKyAgICAgIFBTVyAmPSB+UFNXX1o7CisgICAgfQorCisgIEdSW3Jl ZzNdID0gcG9zOworCisgIFRSQUNFX0FMVV9SRVNVTFQxIChHUltyZWczXSk7 Cit9CisKKy8vIFNDSDFMCitycnJyciwxMTExMTEwMDAwMCArIHd3d3d3LDAx MTAxMTAwMTEwOklYOjo6c2NoMWwKKyp2ODUwZTIKKyp2ODUwZTJ2MworInNj aDFsIHI8cmVnMj4sIHI8cmVnMz4iCit7CisgIHVuc2lnbmVkIGludCBwb3Ms IG9wMDsKKworICBUUkFDRV9BTFVfSU5QVVQxIChHUltyZWcyXSk7CisKKyAg b3AwID0gR1JbcmVnMl07CisKKyAgaWYgKG9wMCA9PSAweDAwMDAwMDAwKQor ICAgIHsKKyAgICAgIFBTVyAmPSB+UFNXX0NZOworICAgICAgUFNXICY9IH5Q U1dfT1Y7CisgICAgICBQU1cgJj0gflBTV19TOworICAgICAgUFNXIHw9IFBT V19aOworICAgICAgcG9zID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKG9wMCA9 PSAweDAwMDAwMDAxKQorICAgIHsKKyAgICAgIFBTVyB8PSBQU1dfQ1k7Cisg ICAgICBQU1cgJj0gflBTV19PVjsKKyAgICAgIFBTVyAmPSB+UFNXX1M7Cisg ICAgICBQU1cgJj0gflBTV19aOworICAgICAgcG9zID0gMzI7CisgICAgfQor ICBlbHNlCisgICAgeworICAgICAgcG9zID0gMTsKKyAgICAgIHdoaWxlICgh KG9wMCAmIDB4ODAwMDAwMDApKSAKKwl7CisJICBvcDAgPDw9IDE7IAorCSAg cG9zKys7CisJfQorICAgICAgUFNXICY9IH5QU1dfQ1k7CisgICAgICBQU1cg Jj0gflBTV19PVjsKKyAgICAgIFBTVyAmPSB+UFNXX1M7CisgICAgICBQU1cg Jj0gflBTV19aOworICAgIH0KKworICBHUltyZWczXSA9IHBvczsKKworICBU UkFDRV9BTFVfUkVTVUxUMSAoR1JbcmVnM10pOworfQorCisvLyBTQ0gxUgor cnJycnIsMTExMTExMDAwMDAgKyB3d3d3dywwMTEwMTEwMDAxMDpJWDo6OnNj aDFyCisqdjg1MGUyCisqdjg1MGUydjMKKyJzY2gxciByPHJlZzI+LCByPHJl ZzM+IgoreworICB1bnNpZ25lZCBpbnQgcG9zLCBvcDA7CisKKyAgVFJBQ0Vf QUxVX0lOUFVUMSAoR1JbcmVnMl0pOworCisgIG9wMCA9IEdSW3JlZzJdOwor CisgIGlmIChvcDAgPT0gMHgwMDAwMDAwMCkKKyAgICB7CisgICAgICBQU1cg Jj0gflBTV19DWTsKKyAgICAgIFBTVyAmPSB+UFNXX09WOworICAgICAgUFNX ICY9IH5QU1dfUzsKKyAgICAgIFBTVyB8PSBQU1dfWjsKKyAgICAgIHBvcyA9 IDA7CisgICAgfQorICBlbHNlIGlmIChvcDAgPT0gMHg4MDAwMDAwMCkKKyAg ICB7CisgICAgICBQU1cgfD0gUFNXX0NZOworICAgICAgUFNXICY9IH5QU1df T1Y7CisgICAgICBQU1cgJj0gflBTV19TOworICAgICAgUFNXICY9IH5QU1df WjsKKyAgICAgIHBvcyA9IDMyOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIHBvcyA9IDE7CisgICAgICB3aGlsZSAoIShvcDAgJiAweDAwMDAwMDAx KSkgCisJeworCSAgb3AwID4+PSAxOworCSAgcG9zKys7CisJfQorICAgICAg UFNXICY9IH5QU1dfQ1k7CisgICAgICBQU1cgJj0gflBTV19PVjsKKyAgICAg IFBTVyAmPSB+UFNXX1M7CisgICAgICBQU1cgJj0gflBTV19aOworICAgIH0K KworICBHUltyZWczXSA9IHBvczsKKworICBUUkFDRV9BTFVfUkVTVUxUMSAo R1JbcmVnM10pOworfQorCisvL1NITAorcnJycnIsMTExMTExLFJSUlJSICsg d3d3d3csMDAwMTEwMDAwMTA6WEk6OjpzaGwKKyp2ODUwZTIKKyp2ODUwZTJ2 MworInNobCByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+IgoreworICBUUkFD RV9BTFVfSU5QVVQyIChHUltyZWcxXSwgR1JbcmVnMl0pOworICB2ODUwX3No bChzZCwgR1JbcmVnMV0sIEdSW3JlZzJdLCAmR1JbcmVnM10pOworICBUUkFD RV9BTFVfUkVTVUxUMSAoR1JbcmVnM10pOworfQorCisvL1NIUgorcnJycnIs MTExMTExLFJSUlJSICsgd3d3d3csMDAwMTAwMDAwMTA6WEk6OjpzaHIKKyp2 ODUwZTIKKyp2ODUwZTJ2MworInNociByPHJlZzE+LCByPHJlZzI+LCByPHJl ZzM+IgoreworICBUUkFDRV9BTFVfSU5QVVQyIChHUltyZWcxXSwgR1JbcmVn Ml0pOworICB2ODUwX3NocihzZCwgR1JbcmVnMV0sIEdSW3JlZzJdLCAmR1Jb cmVnM10pOworICBUUkFDRV9BTFVfUkVTVUxUMSAoR1JbcmVnM10pOworfQor CisKKwogLy8gU0VURgogcnJycnIsMTExMTExMCxjY2NjICsgMDAwMDAwMDAw MDAwMDAwMDpJWDo6OnNldGYKICJzZXRmICVzPGNjY2M+LCByPHJlZzI+IgpA QCAtODc4LDYgKzE3NzEsOCBAQCBycnJyciwxMTExMTEwLGNjY2MgKyAwMDAw MDAwMDAwMDAwMDAwOklYCiBycnJyciwxMTExMTEsUlJSUlIgKyAwMDAwMDAw MDExMTAwMDAwOklYOjo6c2V0MQogKnY4NTBlCiAqdjg1MGUxCisqdjg1MGUy Cisqdjg1MGUydjMKICJzZXQxIHI8cmVnMj4sIFtyPHJlZzE+XSIKIHsKICAg Q09NUEFUXzIgKE9QX0UwMDdFMCAoKSk7CkBAIC05NjYsNiArMTg2MSw4IEBA IHJycnJyLDEwMTAsZGRkZGRkLDA6SVY6OjpzbGQudwogcnJycnIhMCwwMDAw MTEwLGRkZGQ6SVY6OjpzbGQuYnUKICp2ODUwZQogKnY4NTBlMQorKnY4NTBl MgorKnY4NTBlMnYzCiAic2xkLmIgPGRpc3A0PltlcF0sIHI8cmVnMj4iOihQ U1cgJiBQU1dfVVMpCiAic2xkLmJ1IDxkaXNwND5bZXBdLCByPHJlZzI+Igog ewpAQCAtOTg3LDYgKzE4ODQsOCBAQCBycnJyciEwLDAwMDAxMTAsZGRkZDpJ Vjo6OnNsZC5idQogcnJycnIhMCwwMDAwMTExLGRkZGQ6SVY6OjpzbGQuaHUK ICp2ODUwZQogKnY4NTBlMQorKnY4NTBlMgorKnY4NTBlMnYzCiAic2xkLmgg PGRpc3A1PltlcF0sIHI8cmVnMj4iOihQU1cgJiBQU1dfVVMpCiAic2xkLmh1 IDxkaXNwNT5bZXBdLCByPHJlZzI+IgogewpAQCAtMTAwNSw2ICsxOTA0LDgg QEAgcnJycnIhMCwwMDAwMTExLGRkZGQ6SVY6OjpzbGQuaHUKICAgICB9CiB9 CiAKKworCiAvLyBTU1QKIHJycnJyLDAxMTEsZGRkZGRkZDpJVjo6OnNzdC5i CiAic3N0LmIgcjxyZWcyPiwgPGRpc3A3PltlcF0iCkBAIC0xMDMxLDI5ICsx OTMyLDExMyBAQCBycnJyciwxMTEwMTAsUlJSUlIgKyBkZGRkZGRkZGRkZGRk ZGRkOlZJCiAgIENPTVBBVF8yIChPUF83NDAgKCkpOwogfQogCiswMDAwMDEx MTEwMCxSUlJSUiArIHd3d3d3LGRkZGRkZGQsMTEwMSArIGRkZGRkZGRkZGRk ZGRkZGQ6WElWOjo6c3QuYgorKnY4NTBlMnYzCisic3QuYiByPHJlZzM+LCA8 ZGlzcDIzPltyPHJlZzE+XSIKK3sKKyAgdW5zaWduZWQzMiBhZGRyID0gR1Jb cmVnMV0gKyBkaXNwMjM7CisgIHN0b3JlX2RhdGFfbWVtIChzZCwgYWRkciwg MSwgR1JbcmVnM10pOworICBUUkFDRV9TVCAoYWRkciwgR1JbcmVnM10pOwor fQorCiBycnJyciwxMTEwMTEsUlJSUlIgKyBkZGRkZGRkZGRkZGRkZGQsMDpW SUk6OjpzdC5oCiAic3QuaCByPHJlZzI+LCA8ZGlzcDE2PltyPHJlZzE+XSIK IHsKICAgQ09NUEFUXzIgKE9QXzc2MCAoKSk7CiB9CiAKKzAwMDAwMTExMTAx LFJSUlJSK3d3d3d3LGRkZGRkZCwwMTEwMStkZGRkZGRkZGRkZGRkZGRkOlhJ Vjo6OnN0LmgKKyp2ODUwZTJ2MworInN0LmggcjxyZWczPiwgPGRpc3AyMz5b cjxyZWcxPl0iCit7CisgIHVuc2lnbmVkMzIgYWRkciA9IEdSW3JlZzFdICsg ZGlzcDIzOworICBzdG9yZV9kYXRhX21lbSAoc2QsIGFkZHIsIDIsIEdSW3Jl ZzNdKTsKKyAgVFJBQ0VfU1QgKGFkZHIsIEdSW3JlZzNdKTsKK30KKwogcnJy cnIsMTExMDExLFJSUlJSICsgZGRkZGRkZGRkZGRkZGRkLDE6VklJOjo6c3Qu dwogInN0LncgcjxyZWcyPiwgPGRpc3AxNj5bcjxyZWcxPl0iCiB7CiAgIENP TVBBVF8yIChPUF8xMDc2MCAoKSk7CiB9CiAKKzAwMDAwMTExMTAwLFJSUlJS K3d3d3d3LGRkZGRkZCwwMTExMStkZGRkZGRkZGRkZGRkZGRkOlhJVjo6OnN0 LncKKyp2ODUwZTJ2MworInN0LncgcjxyZWczPiwgPGRpc3AyMz5bcjxyZWcx Pl0iCit7CisgIHVuc2lnbmVkMzIgYWRkciA9IEdSW3JlZzFdICsgZGlzcDIz OworICBzdG9yZV9kYXRhX21lbSAoc2QsIGFkZHIsIDQsIEdSW3JlZzNdKTsK KyAgVFJBQ0VfU1QgKGFkZHIsIEdSW3JlZzNdKTsKK30KKworCiAvLyBTVFNS CiBycnJyciwxMTExMTEscmVnSUQgKyAwMDAwMDAwMDAxMDAwMDAwOklYOjo6 c3RzcgogInN0c3IgczxyZWdJRD4sIHI8cmVnMj4iCiB7Ci0gIFRSQUNFX0FM VV9JTlBVVDEgKFNSW3JlZ0lEXSk7Ci0gIEdSW3JlZzJdID0gU1JbcmVnSURd OwotICBUUkFDRV9BTFVfUkVTVUxUIChHUltyZWcyXSk7Ci19CisgIHVpbnQz MiBzcmVnID0gMDsKIAotLy8gU1VCCi1ycnJyciwwMDExMDEsUlJSUlI6STo6 OnN1YgorICBpZiAoKGlkZWNvZGVfaXNzdWUgPT0gaWRlY29kZV92ODUwZTJf aXNzdWUKKyAgICAgICB8fCBpZGVjb2RlX2lzc3VlID09IGlkZWNvZGVfdjg1 MGUydjNfaXNzdWUpCisgICAgICAmJiByZWdJRCA8IDI4KQorICAgIHsKKyAg ICAgIHN3aXRjaCAoQlNFTCAmIDB4ZmZmZikKKwl7CisJY2FzZSAweDAwMDA6 CisJY2FzZSAweGZmMDA6CS8qIFVTRVIgMCAqLworCWNhc2UgMHhmZmZmOgkv KiBVU0VSIDEgKi8KKwkgIHNyZWcgPSBTUltyZWdJRF07CisJICBicmVhazsK KwljYXNlIDB4MTAwMDoKKwkgIHNyZWcgPSBNUFUwX1NSW3JlZ0lEXTsKKwkg IGJyZWFrOworCWNhc2UgMHgxMDAxOgorCSAgc3JlZyA9IE1QVTFfU1JbcmVn SURdOworCSAgYnJlYWs7CisJY2FzZSAweDIwMDA6CisJICBpZiAocmVnSUQg PT0gRlBTVF9SRUdOTykKKwkgICAgeworCSAgICAgIHNyZWcgPSAoKEZQU1Ig JiBGUFNSX1BSKSA/IEZQU1RfUFIgOiAwKQorCQl8ICgoRlBTUiAmIEZQU1Jf WENFKSA/IEZQU1RfWENFIDogMCkKKwkJfCAoKEZQU1IgJiBGUFNSX1hDVikg PyBGUFNUX1hDViA6IDApCisJCXwgKChGUFNSICYgRlBTUl9YQ1opID8gRlBT VF9YQ1ogOiAwKQorCQl8ICgoRlBTUiAmIEZQU1JfWENPKSA/IEZQU1RfWENP IDogMCkKKwkJfCAoKEZQU1IgJiBGUFNSX1hDVSkgPyBGUFNUX1hDVSA6IDAp CisJCXwgKChGUFNSICYgRlBTUl9YQ0kpID8gRlBTVF9YQ0kgOiAwKQorCQl8 ICgoRlBTUiAmIEZQU1JfWFBWKSA/IEZQU1RfWFBWIDogMCkKKwkJfCAoKEZQ U1IgJiBGUFNSX1hQWikgPyBGUFNUX1hQWiA6IDApCisJCXwgKChGUFNSICYg RlBTUl9YUE8pID8gRlBTVF9YUE8gOiAwKQorCQl8ICgoRlBTUiAmIEZQU1Jf WFBVKSA/IEZQU1RfWFBVIDogMCkKKwkJfCAoKEZQU1IgJiBGUFNSX1hQSSkg PyBGUFNUX1hQSSA6IDApOworCSAgICB9CisJICBlbHNlIGlmIChyZWdJRCA9 PSBGUENGR19SRUdOTykKKwkgICAgeworCSAgICAgIHNyZWcgPSAoKChGUFNS ICYgRlBTUl9STSkgPj4gMTgpIDw8IDcpCisJCXwgKChGUFNSICYgRlBTUl9Y RVYpID8gRlBDRkdfWEVWIDogMCkKKwkJfCAoKEZQU1IgJiBGUFNSX1hFWikg PyBGUENGR19YRVogOiAwKQorCQl8ICgoRlBTUiAmIEZQU1JfWEVPKSA/IEZQ Q0ZHX1hFTyA6IDApCisJCXwgKChGUFNSICYgRlBTUl9YRVUpID8gRlBDRkdf WEVVIDogMCkKKwkJfCAoKEZQU1IgJiBGUFNSX1hFSSkgPyBGUENGR19YRUkg OiAwKTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgc3JlZyA9 IEZQVV9TUltyZWdJRF07CisJICAgIH0KKwkgIGJyZWFrOworCX0KKyAgICB9 CisgIGVsc2UKKyAgICB7CisgICAgICBzcmVnID0gU1JbcmVnSURdOworICAg IH0KKworICBUUkFDRV9BTFVfSU5QVVQxIChzcmVnKTsKKyAgR1JbcmVnMl0g PSBzcmVnOworICBUUkFDRV9BTFVfUkVTVUxUIChHUltyZWcyXSk7Cit9CisK Ky8vIFNVQgorcnJycnIsMDAxMTAxLFJSUlJSOkk6OjpzdWIKICJzdWIgcjxy ZWcxPiwgcjxyZWcyPiIKIHsKICAgQ09NUEFUXzEgKE9QXzFBMCAoKSk7CkBA IC0xMDcwLDYgKzIwNTUsOCBAQCBycnJyciwwMDExMDAsUlJSUlI6STo6OnN1 YnIKIDAwMDAwMDAwMDEwLFJSUlJSOkk6Ojpzd2l0Y2gKICp2ODUwZQogKnY4 NTBlMQorKnY4NTBlMgorKnY4NTBlMnYzCiAic3dpdGNoIHI8cmVnMT4iCiB7 CiAgIHVuc2lnbmVkIGxvbmcgYWRyOwpAQCAtMTA4NCw2ICsyMDcxLDggQEAg cnJycnIsMDAxMTAwLFJSUlJSOkk6OjpzdWJyCiAwMDAwMDAwMDEwMSxSUlJS UjpJOjo6c3hiCiAqdjg1MGUKICp2ODUwZTEKKyp2ODUwZTIKKyp2ODUwZTJ2 MwogInN4YiByPHJlZzE+IgogewogICBUUkFDRV9BTFVfSU5QVVQxIChHUlty ZWcxXSk7CkBAIC0xMDk1LDYgKzIwODQsOCBAQCBycnJyciwwMDExMDAsUlJS UlI6STo6OnN1YnIKIDAwMDAwMDAwMTExLFJSUlJSOkk6OjpzeGgKICp2ODUw ZQogKnY4NTBlMQorKnY4NTBlMgorKnY4NTBlMnYzCiAic3hoIHI8cmVnMT4i CiB7CiAgIFRSQUNFX0FMVV9JTlBVVDEgKEdSW3JlZzFdKTsKQEAgLTExMjYs NiArMjExNyw4IEBAIHJycnJyLDAwMTAxMSxSUlJSUjpJOjo6dHN0CiBycnJy ciwxMTExMTEsUlJSUlIgKyAwMDAwMDAwMDExMTAwMTEwOklYOjo6dHN0MQog KnY4NTBlCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJ0c3QxIHI8 cmVnMj4sIFtyPHJlZzE+XSIKIHsKICAgQ09NUEFUXzIgKE9QX0U2MDdFMCAo KSk7CkBAIC0xMTQ5LDYgKzIxNDIsOCBAQCBycnJyciwxMTAxMDEsUlJSUlIg KyBpaWlpaWlpaWlpaWlpaWlpOlZJCiAwMDAwMDAwMDEwMCxSUlJSUjpJOjo6 enhiCiAqdjg1MGUKICp2ODUwZTEKKyp2ODUwZTIKKyp2ODUwZTJ2MwogInp4 YiByPHJlZzE+IgogewogICBUUkFDRV9BTFVfSU5QVVQxIChHUltyZWcxXSk7 CkBAIC0xMTYwLDYgKzIxNTUsOCBAQCBycnJyciwxMTAxMDEsUlJSUlIgKyBp aWlpaWlpaWlpaWlpaWlpOlZJCiAwMDAwMDAwMDExMCxSUlJSUjpJOjo6enho CiAqdjg1MGUKICp2ODUwZTEKKyp2ODUwZTIKKyp2ODUwZTJ2MwogInp4aCBy PHJlZzE+IgogewogICBUUkFDRV9BTFVfSU5QVVQxIChHUltyZWcxXSk7CkBA IC0xMTc4LDYgKzIxNzUsOCBAQCBycnJyciwxMTAxMDEsUlJSUlIgKyBpaWlp aWlpaWlpaWlpaWlpOlZJCiAKIDExMTExLDAwMDAxMCwwMDAwMDpJOjo6ZGJ0 cmFwCiAqdjg1MGUxCisqdjg1MGUyCisqdjg1MGUydjMKICJkYnRyYXAiCiB7 CiAgIERCUEMgPSBjaWEgKyAyOwpAQCAtMTE5Nyw5ICsyMTk2LDEwNzEgQEAg cnJycnIsMTEwMTAxLFJSUlJSICsgaWlpaWlpaWlpaWlpaWlpaTpWSQogLy8g UmV0dXJuIGZyb20gZGVidWcgdHJhcDogMHgxNDYwMDdlMAogMDAwMDAxMTEx MTEwMDAwMCArIDAwMDAwMDAxMDEwMDAxMTA6WDo6OmRicmV0CiAqdjg1MGUx Cisqdjg1MGUyCisqdjg1MGUydjMKICJkYnJldCIKIHsKICAgbmlhID0gREJQ QzsKICAgUFNXID0gREJQU1c7CiAgIFRSQUNFX0JSQU5DSDEgKFBTVyk7CiB9 CisKKworLy8KKy8vIEZMT0FUCisvLworCisvLyBNYXAgY29uZGl0aW9uIGNv ZGUgdG8gYSBzdHJpbmcKKzolczo6OjpGRkZGOmludCBGRkZGCit7CisgIHN3 aXRjaCAoRkZGRikKKyAgICB7CisgICAgY2FzZSAwOiByZXR1cm4gImYiOwor ICAgIGNhc2UgMTogcmV0dXJuICJ1biI7CisgICAgY2FzZSAyOiByZXR1cm4g ImVxIjsKKyAgICBjYXNlIDM6IHJldHVybiAidWVxIjsKKyAgICBjYXNlIDQ6 IHJldHVybiAib2x0IjsKKyAgICBjYXNlIDU6IHJldHVybiAidWx0IjsKKyAg ICBjYXNlIDY6IHJldHVybiAib2xlIjsKKyAgICBjYXNlIDc6IHJldHVybiAi dWxlIjsKKyAgICBjYXNlIDg6IHJldHVybiAic2YiOworICAgIGNhc2UgOTog cmV0dXJuICJuZ2xlIjsKKyAgICBjYXNlIDEwOiByZXR1cm4gInNlcSI7Cisg ICAgY2FzZSAxMTogcmV0dXJuICJuZ2wiOworICAgIGNhc2UgMTI6IHJldHVy biAibHQiOworICAgIGNhc2UgMTM6IHJldHVybiAibmdlIjsKKyAgICBjYXNl IDE0OiByZXR1cm4gImxlIjsKKyAgICBjYXNlIDE1OiByZXR1cm4gIm5ndCI7 CisgICAgfQorICByZXR1cm4gIihudWxsKSI7Cit9CisKKy8vIEFCU0YuRAor cnJyciwwMTExMTExMDAwMDAgKyB3d3d3LDAxMDAwMTAxMTAwMDpGX0k6Ojph YnNmX2QKKyp2ODUwZTJ2MworImFic2YuZCByPHJlZzJlPiwgcjxyZWczZT4i Cit7CisgIHNpbV9mcHUgYW5zLCB3b3A7CisgIHNpbV9mcHVfc3RhdHVzIHN0 YXR1czsKKworICBzaW1fZnB1XzIzMnRvICgmd29wLCBHUltyZWcyZSsxXSwg R1JbcmVnMmVdKTsKKyAgVFJBQ0VfRlBfSU5QVVRfRlBVMSAoJndvcCk7CisK KyAgc3RhdHVzID0gc2ltX2ZwdV9hYnMgKCZhbnMsICZ3b3ApOworICBjaGVj a19pbnZhbGlkX3NuYW4oc2QsIHN0YXR1cywgMSk7CisKKyAgc2ltX2ZwdV90 bzIzMiAoJkdSW3JlZzNlKzFdLCAmR1JbcmVnM2VdLCAmYW5zKTsKKworICBU UkFDRV9GUF9SRVNVTFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIEFCU0YuUwor cnJycnIsMTExMTExMDAwMDAgKyB3d3d3dywxMDAwMTAwMTAwMDpGX0k6Ojph YnNmX3MKKyp2ODUwZTJ2MworImFic2YucyByPHJlZzI+LCByPHJlZzM+Igor eworICBzaW1fZnB1IGFucywgd29wOworICBzaW1fZnB1X3N0YXR1cyBzdGF0 dXM7CisKKyAgc2ltX2ZwdV8zMnRvICgmd29wLCBHUltyZWcyXSk7CisgIFRS QUNFX0ZQX0lOUFVUX0ZQVTEgKCZ3b3ApOworCisgIHN0YXR1cyA9IHNpbV9m cHVfYWJzICgmYW5zLCAmd29wKTsKKyAgY2hlY2tfaW52YWxpZF9zbmFuKHNk LCBzdGF0dXMsIDApOworCisgIHNpbV9mcHVfdG8zMiAoJkdSW3JlZzNdLCAm YW5zKTsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOworfQorCisv LyBBRERGLkQKK3JycnIsMDExMTExMSxSUlJSLDAgKyB3d3d3LDAxMDAwMTEx MDAwMDpGX0k6OjphZGRmX2QKKyp2ODUwZTJ2MworImFkZGYuZCByPHJlZzFl PiwgcjxyZWcyZT4sIHI8cmVnM2U+IgoreworICBzaW1fZnB1IGFucywgd29w MSwgd29wMjsKKyAgc2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9m cHVfMjMydG8gKCZ3b3AxLCBHUltyZWcxZSsxXSwgR1JbcmVnMWVdKTsKKyAg c2ltX2ZwdV8yMzJ0byAoJndvcDIsIEdSW3JlZzJlKzFdLCBHUltyZWcyZV0p OworICBUUkFDRV9GUF9JTlBVVF9GUFUyICgmd29wMSwgJndvcDIpOworCisg IHN0YXR1cyA9IHNpbV9mcHVfYWRkICgmYW5zLCAmd29wMSwgJndvcDIpOwor ICBzdGF0dXMgfD0gc2ltX2ZwdV9yb3VuZF82NCAoJmFucywgRlBTUl9HRVRf Uk9VTkQoKSwgc2ltX2ZwdV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOwor CisgIHVwZGF0ZV9mcHNyIChzZCwgc3RhdHVzLCBGUFNSX1hFViB8IEZQU1Jf WEVJIHwgRlBTUl9YRU8gfCBGUFNSX1hFVSwgMSk7CisKKyAgc2ltX2ZwdV90 bzIzMiAoJkdSW3JlZzNlKzFdLCAmR1JbcmVnM2VdLCAmYW5zKTsKKyAgVFJB Q0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOworfQorCisvLyBBRERGLlMKK3Jy cnJyLDExMTExMSxSUlJSUiArIHd3d3d3LDEwMDAxMTAwMDAwOkZfSTo6OmFk ZGZfcworKnY4NTBlMnYzCisiYWRkZi5zIHI8cmVnMj4sIHI8cmVnMz4iCit7 CisgIHNpbV9mcHUgYW5zLCB3b3AxLCB3b3AyOworICBzaW1fZnB1X3N0YXR1 cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8zMnRvICgmd29wMSwgR1JbcmVnMV0p OworICBzaW1fZnB1XzMydG8gKCZ3b3AyLCBHUltyZWcyXSk7CisgIFRSQUNF X0ZQX0lOUFVUX0ZQVTIgKCZ3b3AxLCAmd29wMik7CisKKyAgc3RhdHVzID0g c2ltX2ZwdV9hZGQgKCZhbnMsICZ3b3AxLCAmd29wMik7CisgIHN0YXR1cyB8 PSBzaW1fZnB1X3JvdW5kXzMyICgmYW5zLCBGUFNSX0dFVF9ST1VORCgpLCBz aW1fZnB1X2Rlbm9ybV91bmRlcmZsb3dfaW5leGFjdCk7CisKKyAgdXBkYXRl X2Zwc3IgKHNkLCBzdGF0dXMsIEZQU1JfWEVWIHwgRlBTUl9YRUkgfCBGUFNS X1hFTyB8IEZQU1JfWEVVLCAwKTsKKworICBzaW1fZnB1X3RvMzIgKCZHUlty ZWczXSwgJmFucyk7CisgIFRSQUNFX0ZQX1JFU1VMVF9GUFUxICgmYW5zKTsK K30KKworLy8gQ01PVkYuRAorcnJyciwwMTExMTExLFJSUlIsMCArIHd3d3ch MCwwMTAwMDAwMSxiYmIsMDpGX0k6OjpjbW92Zl9kCisqdjg1MGUydjMKKyJj bW92Zi5kIDxiYmI+LCByPHJlZzFlPiwgcjxyZWcyZT4sIHI8cmVnM2U+Igor eworICB1bnNpZ25lZCBpbnQgb3BoaSxvcGxvdzsKKyAgc2ltX2ZwdSBhbnMs IHdvcDEsIHdvcDI7CisKKyAgc2ltX2ZwdV8yMzJ0byAoJndvcDEsIEdSW3Jl ZzFlKzFdLCBHUltyZWcxZV0pOworICBzaW1fZnB1XzIzMnRvICgmd29wMiwg R1JbcmVnMmUrMV0sIEdSW3JlZzJlXSk7CisgIFRSQUNFX0ZQX0lOUFVUX0JP T0wxX0ZQVTIgKFRFU1RfRlBDQyhiYmIpLCAmd29wMSwgJndvcDIpOworCisg IGlmIChURVNUX0ZQQ0MoYmJiKSkgCisgICAgeworICAgICAgb3BoaSA9IEdS W3JlZzFlKzFdOworICAgICAgb3Bsb3cgPSBHUltyZWcxZV07CisgICAgICBh bnMgPSB3b3AxOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIG9waGkg PSBHUltyZWcyZSsxXTsKKyAgICAgIG9wbG93ID0gR1JbcmVnMmVdOworICAg ICAgYW5zID0gd29wMjsKKyAgICB9CisKKyAgR1JbcmVnM2UrMV0gPSBvcGhp OworICBHUltyZWczZV0gPSBvcGxvdzsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQ VTEgKCZhbnMpOzsKK30KKworLy8gQ01PVkYuUworcnJycnIsMTExMTExLFJS UlJSICsgd3d3d3chMCwxMDAwMDAwLGJiYiwwOkZfSTo6OmNtb3ZmX3MKKyp2 ODUwZTJ2MworImNtb3ZmLmQgPGJiYj4sIHI8cmVnMT4sIHI8cmVnMj4sIHI8 cmVnMz4iCit7CisgIHVuc2lnbmVkIGludCBvcDsKKyAgc2ltX2ZwdSBhbnMs IHdvcDEsIHdvcDI7CisKKyAgc2ltX2ZwdV8zMnRvICgmd29wMSwgR1JbcmVn MV0pOworICBzaW1fZnB1XzMydG8gKCZ3b3AyLCBHUltyZWcyXSk7CisgIFRS QUNFX0ZQX0lOUFVUX0JPT0wxX0ZQVTIgKFRFU1RfRlBDQyhiYmIpLCAmd29w MSwgJndvcDIpOworCisgIGlmIChURVNUX0ZQQ0MoYmJiKSkgCisgIHsKKyAg ICBvcCA9IEdSW3JlZzFdOworICAgIGFucyA9IHdvcDE7CisgIH0KKyAgZWxz ZQorICB7CisgICAgb3AgPSBHUltyZWcyXTsKKyAgICBhbnMgPSB3b3AyOwor ICB9CisKKyAgR1JbcmVnM10gPSBvcDsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQ VTEgKCZhbnMpOworfQorCisvLyBDTVBGLkQKK3JycnIsMDExMTExMSxSUlJS LDAgKyAwLEZGRkYsMTAwMDAxMSxiYmIsMDpGX0k6OjpjbXBmX2QKKyp2ODUw ZTJ2MworImNtcGYuZCAlczxGRkZGPiwgcjxyZWcxZT4sIHI8cmVnMmU+Ijoo YmJiID09IDApCisiY21wZi5kICVzPEZGRkY+LCByPHJlZzFlPiwgcjxyZWcy ZT4sIDxiYmI+IgoreworICBpbnQgcmVzdWx0OworICBzaW1fZnB1IHdvcDE7 CisgIHNpbV9mcHUgd29wMjsKKyAgCisgIHNpbV9mcHVfMjMydG8gKCZ3b3Ax LCBHUltyZWcxZSsxXSwgR1JbcmVnMWVdKTsKKyAgc2ltX2ZwdV8yMzJ0byAo JndvcDIsIEdSW3JlZzJlKzFdLCBHUltyZWcyZV0pOworICBUUkFDRV9GUF9J TlBVVF9GUFUyICgmd29wMSwgJndvcDIpOworCisgIHJlc3VsdCA9IHY4NTBf ZmxvYXRfY29tcGFyZShzZCwgRkZGRiwgd29wMSwgd29wMiwgMSk7CisKKyAg aWYgKHJlc3VsdCkgIAorICAgIFNFVF9GUENDKGJiYik7CisgIGVsc2UKKyAg ICBDTEVBUl9GUENDKGJiYik7CisKKyAgVFJBQ0VfRlBfUkVTVUxUX0JPT0wg KHJlc3VsdCk7Cit9CisKKy8vIENNUEYuUworcnJycnIsMTExMTExLFJSUlJS ICsgMCxGRkZGLDEwMDAwMTAsYmJiLDA6Rl9JOjo6Y21wZl9zCisqdjg1MGUy djMKKyJjbXBmLnMgJXM8RkZGRj4sIHI8cmVnMT4sIHI8cmVnMj4iOihiYmIg PT0gMCkKKyJjbXBmLnMgJXM8RkZGRj4sIHI8cmVnMT4sIHI8cmVnMj4sIDxi YmI+IgoreworICBpbnQgcmVzdWx0OyAKKyAgc2ltX2ZwdSB3b3AxOworICBz aW1fZnB1IHdvcDI7CisKKyAgc2ltX2ZwdV8zMnRvKCAmd29wMSwgR1JbcmVn MV0gKTsKKyAgc2ltX2ZwdV8zMnRvKCAmd29wMiwgR1JbcmVnMl0gKTsKKyAg VFJBQ0VfRlBfSU5QVVRfRlBVMiAoJndvcDEsICZ3b3AyKTsKKworICByZXN1 bHQgPSB2ODUwX2Zsb2F0X2NvbXBhcmUoc2QsIEZGRkYsIHdvcDEsIHdvcDIs IDApOworCisgIGlmIChyZXN1bHQpICAKKyAgICBTRVRfRlBDQyhiYmIpOwor ICBlbHNlCisgICAgQ0xFQVJfRlBDQyhiYmIpOworCisgIFRSQUNFX0ZQX1JF U1VMVF9CT09MIChyZXN1bHQpOworfQorCisvLyBDVlRGLkRMCitycnJyLDAx MTExMTEwMDEwMCArIHd3d3csMDEwMDAxMDEwMTAwOkZfSTo6OmN2dGZfZGwK Kyp2ODUwZTJ2MworImN2dGYuZGwgcjxyZWcyZT4sIHI8cmVnM2U+Igorewor ICB1bnNpZ25lZDY0IGFuczsKKyAgc2ltX2ZwdSB3b3A7CisgIHNpbV9mcHVf c3RhdHVzIHN0YXR1czsKKworICBzaW1fZnB1XzIzMnRvICgmd29wLCBHUlty ZWcyZSsxXSwgR1JbcmVnMmVdKTsKKyAgVFJBQ0VfRlBfSU5QVVRfRlBVMSAo JndvcCk7CisKKyAgc3RhdHVzID0gc2ltX2ZwdV9yb3VuZF82NCAoJndvcCwg RlBTUl9HRVRfUk9VTkQoKSwgc2ltX2ZwdV9kZW5vcm1femVybyk7CisgIHN0 YXR1cyB8PSBzaW1fZnB1X3RvNjRpICgmYW5zLCAmd29wLCBGUFNSX0dFVF9S T1VORCgpKTsKKworICBjaGVja19jdnRfZmkoc2QsIHN0YXR1cywgMSk7CisK KyAgR1JbcmVnM2VdID0gYW5zOworICBHUltyZWczZSsxXSA9IGFucz4+MzJM OworICBUUkFDRV9GUF9SRVNVTFRfV09SRDIgKEdSW3JlZzNlXSwgR1JbcmVn M2UrMV0pOworfQorCisvLyBDVlRGLkRTCitycnJyLDAxMTExMTEwMDAxMSAr IHd3d3d3LDEwMDAxMDEwMDEwOkZfSTo6OmN2dGZfZHMKKyp2ODUwZTJ2Mwor ImN2dGYuZHMgcjxyZWcyZT4sIHI8cmVnMz4iCit7CisgIHNpbV9mcHUgd29w OworICBzaW1fZnB1X3N0YXR1cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8yMzJ0 byAoJndvcCwgR1JbcmVnMmUrMV0sIEdSW3JlZzJlXSk7CisgIFRSQUNFX0ZQ X0lOUFVUX0ZQVTEgKCZ3b3ApOworCisgIHN0YXR1cyA9IHNpbV9mcHVfcm91 bmRfMzIgKCZ3b3AsIEZQU1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3Jt X3VuZGVyZmxvd19pbmV4YWN0KTsKKworICBjaGVja19jdnRfZmkoc2QsIHN0 YXR1cywgMCk7CisKKyAgc2ltX2ZwdV90bzMyICgmR1JbcmVnM10sICZ3b3Ap OworICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJndvcCk7Cit9CisKKy8vIENW VEYuRFcKK3JycnIsMDExMTExMTAwMTAwICsgd3d3d3csMTAwMDEwMTAwMDA6 Rl9JOjo6Y3Z0Zl9kdworKnY4NTBlMnYzCisiY3Z0Zi5kdyByPHJlZzJlPiwg cjxyZWczPiIKK3sKKyAgdWludDMyIGFuczsKKyAgc2ltX2ZwdSB3b3A7Cisg IHNpbV9mcHVfc3RhdHVzIHN0YXR1czsKKworICBzaW1fZnB1XzIzMnRvICgm d29wLCBHUltyZWcyZSsxXSwgR1JbcmVnMmVdKTsKKyAgVFJBQ0VfRlBfSU5Q VVRfRlBVMSAoJndvcCk7CisKKyAgc3RhdHVzID0gc2ltX2ZwdV9yb3VuZF8z MiAoJndvcCwgRlBTUl9HRVRfUk9VTkQoKSwgc2ltX2ZwdV9kZW5vcm1femVy byk7CisgIHN0YXR1cyB8PSBzaW1fZnB1X3RvMzJpICgmYW5zLCAmd29wLCBG UFNSX0dFVF9ST1VORCgpKTsKKworICBjaGVja19jdnRfZmkoc2QsIHN0YXR1 cywgMSk7CisKKyAgR1JbcmVnM10gPSBhbnM7CisgIFRSQUNFX0ZQX1JFU1VM VF9XT1JEMSAoYW5zKTsKK30KKworLy8gQ1ZURi5MRAorcnJyciwwMTExMTEx MDAwMDEgKyB3d3d3LDAxMDAwMTAxMDAxMDpGX0k6OjpjdnRmX2xkCisqdjg1 MGUydjMKKyJjdnRmLmxkIHI8cmVnMmU+LCByPHJlZzNlPiIKK3sKKyAgc2ln bmVkNjQgb3A7CisgIHNpbV9mcHUgd29wOworICBzaW1fZnB1X3N0YXR1cyBz dGF0dXM7CisKKyAgb3AgPSAoKHNpZ25lZDY0KUdSW3JlZzJlKzFdIDw8IDMy TCkgfCBHUltyZWcyZV07CisgIFRSQUNFX0ZQX0lOUFVUX1dPUkQyIChHUlty ZWcyZV0sIEdSW3JlZzJlKzFdKTsKKworICBzaW1fZnB1X2k2NHRvICgmd29w LCBvcCwgRlBTUl9HRVRfUk9VTkQoKSk7CisgIHN0YXR1cyA9IHNpbV9mcHVf cm91bmRfNjQgKCZ3b3AsIEZQU1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVu b3JtX3plcm8pOworCisgIGNoZWNrX2N2dF9pZihzZCwgc3RhdHVzLCAxKTsK KworICBzaW1fZnB1X3RvMjMyICgmR1JbcmVnM2UrMV0sICZHUltyZWczZV0s ICZ3b3ApOworICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJndvcCk7Cit9CisK Ky8vIENWVEYuTFMKK3JycnIsMDExMTExMTAwMDAxICsgd3d3d3csMTAwMDEw MDAwMTA6Rl9JOjo6Y3Z0Zl9scworKnY4NTBlMnYzCisiY3Z0Zi5scyByPHJl ZzJlPiwgcjxyZWczPiIKK3sKKyAgc2lnbmVkNjQgb3A7CisgIHNpbV9mcHUg d29wOworICBzaW1fZnB1X3N0YXR1cyBzdGF0dXM7CisKKyAgb3AgPSAoKHNp Z25lZDY0KUdSW3JlZzJlKzFdIDw8IDMyTCkgfCBHUltyZWcyZV07CisgIFRS QUNFX0ZQX0lOUFVUX1dPUkQyIChHUltyZWcyZV0sIEdSW3JlZzJlKzFdKTsK KworICBzaW1fZnB1X2k2NHRvICgmd29wLCBvcCwgRlBTUl9HRVRfUk9VTkQo KSk7CisgIHN0YXR1cyA9IHNpbV9mcHVfcm91bmRfMzIgKCZ3b3AsIEZQU1Jf R0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3JtX3plcm8pOworCisgIGNoZWNr X2N2dF9pZihzZCwgc3RhdHVzLCAwKTsKKworICBzaW1fZnB1X3RvMzIgKCZH UltyZWczXSwgJndvcCk7CisgIFRSQUNFX0ZQX1JFU1VMVF9GUFUxICgmd29w KTsKK30KKworLy8gQ1ZURi5TRAorcnJycnIsMTExMTExMDAwMTAgKyB3d3d3 LDAxMDAwMTAxMDAxMDpGX0k6OjpjdnRmX3NkCisqdjg1MGUydjMKKyJjdnRm LnNkIHI8cmVnMj4sIHI8cmVnM2U+IgoreworICBzaW1fZnB1IHdvcDsKKyAg c2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMzJ0byAoJndv cCwgR1JbcmVnMl0pOworICBUUkFDRV9GUF9JTlBVVF9GUFUxICgmd29wKTsK KyAgc3RhdHVzID0gc2ltX2ZwdV9yb3VuZF82NCAoJndvcCwgRlBTUl9HRVRf Uk9VTkQoKSwgc2ltX2ZwdV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOwor CisgIGNoZWNrX2N2dF9mZihzZCwgc3RhdHVzLCAxKTsKKworICBzaW1fZnB1 X3RvMjMyICgmR1JbcmVnM2UrMV0sICZHUltyZWczZV0sICZ3b3ApOworICBU UkFDRV9GUF9SRVNVTFRfRlBVMSAoJndvcCk7Cit9CisKKy8vIENWVEYuU0wK K3JycnJyLDExMTExMTAwMTAwICsgd3d3dywwMTAwMDEwMDAxMDA6Rl9JOjo6 Y3Z0Zl9zbAorKnY4NTBlMnYzCisiY3Z0Zi5zbCByPHJlZzI+LCByPHJlZzNl PiIKK3sKKyAgc2lnbmVkNjQgYW5zOworICBzaW1fZnB1IHdvcDsKKyAgc2lt X2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMzJ0byAoJndvcCwg R1JbcmVnMl0pOworICBUUkFDRV9GUF9JTlBVVF9GUFUxICgmd29wKTsKKwor ICBzdGF0dXMgPSBzaW1fZnB1X3JvdW5kXzY0ICgmd29wLCBGUFNSX0dFVF9S T1VORCgpLCBzaW1fZnB1X2Rlbm9ybV96ZXJvKTsKKyAgc3RhdHVzIHw9IHNp bV9mcHVfdG82NGkgKCZhbnMsICZ3b3AsIEZQU1JfR0VUX1JPVU5EKCkpOwor CisgIGNoZWNrX2N2dF9maShzZCwgc3RhdHVzLCAwKTsKKworICBHUltyZWcz ZV0gPSBhbnM7CisgIEdSW3JlZzNlKzFdID0gYW5zID4+IDMyTDsKKyAgVFJB Q0VfRlBfUkVTVUxUX1dPUkQyIChHUltyZWczZV0sIEdSW3JlZzNlKzFdKTsK K30KKworLy8gQ1ZURi5TVworcnJycnIsMTExMTExMDAxMDAgKyB3d3d3dywx MDAwMTAwMDAwMDpGX0k6OjpjdnRmX3N3Cisqdjg1MGUydjMKKyJjdnRmLnN3 IHI8cmVnMj4sIHI8cmVnMz4iCit7CisgIHVpbnQzMiBhbnM7CisgIHNpbV9m cHUgd29wOworICBzaW1fZnB1X3N0YXR1cyBzdGF0dXM7CisKKyAgc2ltX2Zw dV8zMnRvICgmd29wLCBHUltyZWcyXSk7CisgIFRSQUNFX0ZQX0lOUFVUX0ZQ VTEgKCZ3b3ApOworCisgIHN0YXR1cyA9IHNpbV9mcHVfcm91bmRfMzIgKCZ3 b3AsIEZQU1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3JtX3plcm8pOwor ICBzdGF0dXMgfD0gc2ltX2ZwdV90bzMyaSAoJmFucywgJndvcCwgc2ltX2Zw dV9yb3VuZF96ZXJvKTsKKworICBjaGVja19jdnRfZmkoc2QsIHN0YXR1cywg MCk7CisKKyAgR1JbcmVnM10gPSBhbnM7CisgIFRSQUNFX0ZQX1JFU1VMVF9X T1JEMSAoYW5zKTsKK30KKworLy8gQ1ZURi5XRAorcnJycnIsMTExMTExMDAw MDAgKyB3d3d3LDAxMDAwMTAxMDAxMDpGX0k6OjpjdnRmX3dkCisqdjg1MGUy djMKKyJjdnRmLndkIHI8cmVnMj4sIHI8cmVnM2U+IgoreworICBzaW1fZnB1 IHdvcDsKKyAgc2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIFRSQUNFX0ZQ X0lOUFVUX1dPUkQxIChHUltyZWcyXSk7CisgIHNpbV9mcHVfaTMydG8gKCZ3 b3AsIEdSW3JlZzJdLCBGUFNSX0dFVF9ST1VORCgpKTsKKyAgc3RhdHVzID0g c2ltX2ZwdV9yb3VuZF82NCAoJndvcCwgRlBTUl9HRVRfUk9VTkQoKSwgc2lt X2ZwdV9kZW5vcm1femVybyk7CisKKyAgY2hlY2tfY3Z0X2lmKHNkLCBzdGF0 dXMsIDEpOworCisgIHNpbV9mcHVfdG8yMzIgKCZHUltyZWczZSsxXSwgJkdS W3JlZzNlXSwgJndvcCk7CisgIFRSQUNFX0ZQX1JFU1VMVF9GUFUxICgmd29w KTsKK30KKworLy8gQ1ZURi5XUworcnJycnIsMTExMTExMDAwMDAgKyB3d3d3 dywxMDAwMTAwMDAxMDpGX0k6OjpjdnRmX3dzCisqdjg1MGUydjMKKyJjdnRm LndzIHI8cmVnMj4sIHI8cmVnMz4iCit7CisgIHNpbV9mcHUgd29wOworICBz aW1fZnB1X3N0YXR1cyBzdGF0dXM7CisKKyAgVFJBQ0VfRlBfSU5QVVRfV09S RDEgKEdSW3JlZzJdKTsKKyAgc2ltX2ZwdV9pMzJ0byAoJndvcCwgR1JbcmVn Ml0sIEZQU1JfR0VUX1JPVU5EKCkpOworICBzdGF0dXMgPSBzaW1fZnB1X3Jv dW5kXzMyICgmd29wLCBGUFNSX0dFVF9ST1VORCgpLCBzaW1fZnB1X2Rlbm9y bV96ZXJvKTsKKworICBjaGVja19jdnRfaWYoc2QsIHN0YXR1cywgMCk7CisK KyAgc2ltX2ZwdV90bzMyICgmR1JbcmVnM10sICZ3b3ApOworICBUUkFDRV9G UF9SRVNVTFRfRlBVMSAoJndvcCk7Cit9CisKKy8vIERJVkYuRAorcnJyciww MTExMTExLFJSUlIsMCArIHd3d3csMDEwMDAxMTExMTEwOkZfSTo6OmRpdmZf ZAorKnY4NTBlMnYzCisiZGl2Zi5kIHI8cmVnMWU+LCByPHJlZzJlPiwgcjxy ZWczZT4iCit7CisgIHNpbV9mcHUgYW5zLCB3b3AxLCB3b3AyOworICBzaW1f ZnB1X3N0YXR1cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8yMzJ0byAoJndvcDEs IEdSW3JlZzFlKzFdLCBHUltyZWcxZV0pOworICBzaW1fZnB1XzIzMnRvICgm d29wMiwgR1JbcmVnMmUrMV0sIEdSW3JlZzJlXSk7CisgIFRSQUNFX0ZQX0lO UFVUX0ZQVTIgKCZ3b3AxLCAmd29wMik7CisKKyAgc3RhdHVzID0gc2ltX2Zw dV9kaXYgKCZhbnMsICZ3b3AyLCAmd29wMSk7CisgIHN0YXR1cyB8PSBzaW1f ZnB1X3JvdW5kXzY0ICgmYW5zLCBGUFNSX0dFVF9ST1VORCgpLCBzaW1fZnB1 X2Rlbm9ybV91bmRlcmZsb3dfaW5leGFjdCk7CisKKyAgdXBkYXRlX2Zwc3Ig KHNkLCBzdGF0dXMsIEZQU1JfWEVWIHwgRlBTUl9YRVogfCBGUFNSX1hFSSB8 IEZQU1JfWEVPIHwgRlBTUl9YRVUsIDEpOworCisgIHNpbV9mcHVfdG8yMzIg KCZHUltyZWczZSsxXSwgJkdSW3JlZzNlXSwgJmFucyk7CisgIFRSQUNFX0ZQ X1JFU1VMVF9GUFUxICgmYW5zKTsKK30KKworLy8gRElWRi5TCitycnJyciwx MTExMTEsUlJSUlIgKyB3d3d3dywxMDAwMTEwMTExMDpGX0k6OjpkaXZmX3MK Kyp2ODUwZTJ2MworImRpdmYucyByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+ IgoreworICBzaW1fZnB1IGFucywgd29wMSwgd29wMjsKKyAgc2ltX2ZwdV9z dGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMzJ0byAoJndvcDEsIEdSW3Jl ZzFdKTsKKyAgc2ltX2ZwdV8zMnRvICgmd29wMiwgR1JbcmVnMl0pOworICBU UkFDRV9GUF9JTlBVVF9GUFUyICgmd29wMSwgJndvcDIpOworCisgIHN0YXR1 cyA9IHNpbV9mcHVfZGl2ICgmYW5zLCAmd29wMiwgJndvcDEpOworICBzdGF0 dXMgfD0gc2ltX2ZwdV9yb3VuZF8zMiAoJmFucywgRlBTUl9HRVRfUk9VTkQo KSwgc2ltX2ZwdV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOworCisgIHVw ZGF0ZV9mcHNyIChzZCwgc3RhdHVzLCBGUFNSX1hFViB8IEZQU1JfWEVaIHwg RlBTUl9YRUkgfCBGUFNSX1hFTyB8IEZQU1JfWEVVLCAwKTsKKworICBzaW1f ZnB1X3RvMzIgKCZHUltyZWczXSwgJmFucyk7CisgIFRSQUNFX0ZQX1JFU1VM VF9GUFUxICgmYW5zKTsKK30KKworLy8gTUFEREYuUworcnJycnIsMTExMTEx LFJSUlJSICsgd3d3d3csMTAxLFcsMDAsV1dXVywwOkZfSTo6Om1hZGRmX3MK Kyp2ODUwZTJ2MworIm1hZGRmLnMgcjxyZWcxPiwgcjxyZWcyPiwgcjxyZWcz PiwgcjxyZWc0PiIKK3sKKyAgc2ltX2ZwdSBhbnMsIHdvcDEsIHdvcDIsIHdv cDM7CisgIHNpbV9mcHVfc3RhdHVzIHN0YXR1czsKKworICBzaW1fZnB1XzMy dG8gKCZ3b3AxLCBHUltyZWcxXSk7CisgIHNpbV9mcHVfMzJ0byAoJndvcDIs IEdSW3JlZzJdKTsKKyAgc2ltX2ZwdV8zMnRvICgmd29wMywgR1JbcmVnM10p OworICBUUkFDRV9GUF9JTlBVVF9GUFUzICgmd29wMSwgJndvcDIsICZ3b3Az KTsKKworICBzdGF0dXMgPSBzaW1fZnB1X211bCAoJmFucywgJndvcDEsICZ3 b3AyKTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfcm91bmRfNjQgKCZhbnMsIEZQ U1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3JtX3VuZGVyZmxvd19pbmV4 YWN0KTsKKyAgd29wMSA9IGFuczsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfYWRk ICgmYW5zLCAmd29wMSwgJndvcDMpOworICBzdGF0dXMgfD0gc2ltX2ZwdV9y b3VuZF82NCAoJmFucywgRlBTUl9HRVRfUk9VTkQoKSwgc2ltX2ZwdV9kZW5v cm1fdW5kZXJmbG93X2luZXhhY3QpOworCisgIHVwZGF0ZV9mcHNyIChzZCwg c3RhdHVzLCBGUFNSX1hFViB8IEZQU1JfWEVJIHwgRlBTUl9YRU8gfCBGUFNS X1hFVSwgMCk7CisKKyAgc2ltX2ZwdV90bzMyICgmR1JbcmVnNF0sICZhbnMp OworICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIE1B WEYuRAorcnJyciwwMTExMTExLFJSUlIsMCArIHd3d3csMDEwMDAxMTExMDAw OkZfSTo6Om1heGZfZAorKnY4NTBlMnYzCisibWF4Zi5kIHI8cmVnMWU+LCBy PHJlZzJlPiwgcjxyZWczZT4iCit7CisgIHNpbV9mcHUgYW5zLCB3b3AxLCB3 b3AyOworCisgIHNpbV9mcHVfMjMydG8gKCZ3b3AxLCBHUltyZWcxZSsxXSwg R1JbcmVnMWVdKTsKKyAgc2ltX2ZwdV8yMzJ0byAoJndvcDIsIEdSW3JlZzJl KzFdLCBHUltyZWcyZV0pOworICBUUkFDRV9GUF9JTlBVVF9GUFUyICgmd29w MSwgJndvcDIpOworCisgIGlmIChzaW1fZnB1X2lzX25hbigmd29wMSkgfHwg c2ltX2ZwdV9pc19uYW4oJndvcDIpKQorICAgIHsKKyAgICAgIGlmIChGUFNS ICYgRlBTUl9YRVYpCisJeworCSAgU2lnbmFsRXhjZXB0aW9uRlBFKHNkLCAx KTsKKwl9CisgICAgICBlbHNlCisJeworCSAgYW5zID0gc2ltX2ZwdV9xbmFu OworCX0KKyAgICB9CisgIGVsc2UgaWYgKEZQU1IgJiBGUFNSX0ZTCisJICAg JiYgKChzaW1fZnB1X2lzX3plcm8gKCZ3b3AxKSB8fCBzaW1fZnB1X2lzX2Rl bm9ybSAoJndvcDEpKQorCSAgICAgICAmJiAoc2ltX2ZwdV9pc196ZXJvICgm d29wMikgfHwgc2ltX2ZwdV9pc19kZW5vcm0gKCZ3b3AyKSkpKSAKKyAgICB7 CisgICAgICBhbnMgPSBzaW1fZnB1X3plcm87CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgc2ltX2ZwdV9tYXggKCZhbnMsICZ3b3AxLCAmd29wMik7 CisgICAgfQorICAKKyAgc2ltX2ZwdV90bzIzMiAoJkdSW3JlZzNlKzFdLCAm R1JbcmVnM2VdLCAmYW5zKTsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZh bnMpOworfQorCisvLyBNQVhGLlMKK3JycnJyLDExMTExMSxSUlJSUiArIHd3 d3d3LDEwMDAxMTAxMDAwOkZfSTo6Om1heGZfcworKnY4NTBlMnYzCisibWF4 Zi5zIHI8cmVnMT4sIHI8cmVnMj4sIHI8cmVnMz4iCit7CisgIHNpbV9mcHUg YW5zLCB3b3AxLCB3b3AyOworCisgIHNpbV9mcHVfMzJ0byAoJndvcDEsIEdS W3JlZzFdKTsKKyAgc2ltX2ZwdV8zMnRvICgmd29wMiwgR1JbcmVnMl0pOwor ICBUUkFDRV9GUF9JTlBVVF9GUFUyICgmd29wMSwgJndvcDIpOworCisgIGlm IChzaW1fZnB1X2lzX25hbigmd29wMSkgfHwgc2ltX2ZwdV9pc19uYW4oJndv cDIpKQorICAgIHsKKyAgICAgIGlmIChGUFNSICYgRlBTUl9YRVYpCisJewor CSAgU2lnbmFsRXhjZXB0aW9uRlBFKHNkLCAwKTsKKwl9CisgICAgICBlbHNl CisJeworCSAgYW5zID0gc2ltX2ZwdV9xbmFuOworCX0KKyAgICB9CisgIGVs c2UgaWYgKChGUFNSICYgRlBTUl9GUykKKwkgICAmJiAoKHNpbV9mcHVfaXNf emVybyAoJndvcDEpIHx8IHNpbV9mcHVfaXNfZGVub3JtICgmd29wMSkpCisJ ICAgICAgICYmIChzaW1fZnB1X2lzX3plcm8gKCZ3b3AyKXx8IHNpbV9mcHVf aXNfZGVub3JtICgmd29wMikpKSkKKyAgICB7CisgICAgICBhbnMgPSBzaW1f ZnB1X3plcm87CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgc2ltX2Zw dV9tYXggKCZhbnMsICZ3b3AxLCAmd29wMik7CisgICAgfQorICAKKyAgc2lt X2ZwdV90bzMyICgmR1JbcmVnM10sICZhbnMpOworICBUUkFDRV9GUF9SRVNV TFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIE1JTkYuRAorcnJyciwwMTExMTEx LFJSUlIsMCArIHd3d3csMDEwMDAxMTExMDEwOkZfSTo6Om1pbmZfZAorKnY4 NTBlMnYzCisibWluZi5kIHI8cmVnMWU+LCByPHJlZzJlPiwgcjxyZWczZT4i Cit7CisgIHNpbV9mcHUgYW5zLCB3b3AxLCB3b3AyOworCisgIHNpbV9mcHVf MjMydG8gKCZ3b3AxLCBHUltyZWcxZSsxXSwgR1JbcmVnMWVdKTsKKyAgc2lt X2ZwdV8yMzJ0byAoJndvcDIsIEdSW3JlZzJlKzFdLCBHUltyZWcyZV0pOwor ICBUUkFDRV9GUF9JTlBVVF9GUFUyICgmd29wMSwgJndvcDIpOworCisgIGlm IChzaW1fZnB1X2lzX25hbigmd29wMSkgfHwgc2ltX2ZwdV9pc19uYW4oJndv cDIpKQorICAgIHsKKyAgICAgIGlmIChGUFNSICYgRlBTUl9YRVYpCisJewor CSAgU2lnbmFsRXhjZXB0aW9uRlBFKHNkLCAxKTsKKwl9CisgICAgICBlbHNl CisJeworCSAgYW5zID0gc2ltX2ZwdV9xbmFuOworCX0KKyAgICB9CisgIGVs c2UgaWYgKEZQU1IgJiBGUFNSX0ZTCisJICAgJiYgKChzaW1fZnB1X2lzX3pl cm8gKCZ3b3AxKSB8fCBzaW1fZnB1X2lzX2Rlbm9ybSAoJndvcDEpKQorCSAg ICAgICAmJiAoc2ltX2ZwdV9pc196ZXJvICgmd29wMikgfHwgc2ltX2ZwdV9p c19kZW5vcm0gKCZ3b3AyKSkpKSAKKyAgICB7CisgICAgICBhbnMgPSBzaW1f ZnB1X3plcm87CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgc2ltX2Zw dV9taW4gKCZhbnMsICZ3b3AxLCAmd29wMik7CisgICAgfQorICAKKyAgc2lt X2ZwdV90bzIzMiAoJkdSW3JlZzNlKzFdLCAmR1JbcmVnM2VdLCAmYW5zKTsK KyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOworfQorCisvLyBNSU5G LlMKK3JycnJyLDExMTExMSxSUlJSUiArIHd3d3d3LDEwMDAxMTAxMDEwOkZf STo6Om1pbmZfcworKnY4NTBlMnYzCisibWluZi5zIHI8cmVnMT4sIHI8cmVn Mj4sIHI8cmVnMz4iCit7CisgIHNpbV9mcHUgYW5zLCB3b3AxLCB3b3AyOwor CisgIHNpbV9mcHVfMzJ0byAoJndvcDEsIEdSW3JlZzFdKTsKKyAgc2ltX2Zw dV8zMnRvICgmd29wMiwgR1JbcmVnMl0pOworICBUUkFDRV9GUF9JTlBVVF9G UFUyICgmd29wMSwgJndvcDIpOworCisgIGlmIChzaW1fZnB1X2lzX25hbigm d29wMSkgfHwgc2ltX2ZwdV9pc19uYW4oJndvcDIpKQorICAgIHsKKyAgICAg IGlmIChGUFNSICYgRlBTUl9YRVYpCisJeworCSAgU2lnbmFsRXhjZXB0aW9u RlBFKHNkLCAwKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgYW5zID0gc2lt X2ZwdV9xbmFuOworCX0KKyAgICB9CisgIGVsc2UgaWYgKEZQU1IgJiBGUFNS X0ZTCisJICAgJiYgKChzaW1fZnB1X2lzX3plcm8gKCZ3b3AxKSB8fCBzaW1f ZnB1X2lzX2Rlbm9ybSAoJndvcDEpKQorCSAgICAgICAmJiAoc2ltX2ZwdV9p c196ZXJvICgmd29wMikgfHwgc2ltX2ZwdV9pc19kZW5vcm0gKCZ3b3AyKSkp KQorICAgIHsKKyAgICAgIGFucyA9IHNpbV9mcHVfemVybzsKKyAgICB9Cisg IGVsc2UKKyAgICB7CisgICAgICBzaW1fZnB1X21pbiAoJmFucywgJndvcDEs ICZ3b3AyKTsKKyAgICB9CisgIAorICBzaW1fZnB1X3RvMzIgKCZHUltyZWcz XSwgJmFucyk7CisgIFRSQUNFX0ZQX1JFU1VMVF9GUFUxICgmYW5zKTsKK30K KworLy8gTVNVQkYuUworcnJycnIsMTExMTExLFJSUlJSICsgd3d3d3csMTAx LFcsMDEsV1dXVywwOkZfSTo6Om1zdWJmX3MKKyp2ODUwZTJ2MworIm1zdWJm LnMgcjxyZWcxPiwgcjxyZWcyPiwgcjxyZWczPiwgcjxyZWc0PiIKK3sKKyAg c2ltX2ZwdSBhbnMsIHdvcDEsIHdvcDIsIHdvcDM7CisgIHNpbV9mcHVfc3Rh dHVzIHN0YXR1czsKKworICBzaW1fZnB1XzMydG8gKCZ3b3AxLCBHUltyZWcx XSk7CisgIHNpbV9mcHVfMzJ0byAoJndvcDIsIEdSW3JlZzJdKTsKKyAgc2lt X2ZwdV8zMnRvICgmd29wMywgR1JbcmVnM10pOworICBUUkFDRV9GUF9JTlBV VF9GUFUzICgmd29wMSwgJndvcDIsICZ3b3AzKTsKKworICBzdGF0dXMgPSBz aW1fZnB1X211bCAoJmFucywgJndvcDEsICZ3b3AyKTsKKyAgc3RhdHVzIHw9 IHNpbV9mcHVfcm91bmRfNjQgKCZhbnMsIEZQU1JfR0VUX1JPVU5EKCksIHNp bV9mcHVfZGVub3JtX3VuZGVyZmxvd19pbmV4YWN0KTsKKyAgd29wMSA9IGFu czsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfc3ViICgmYW5zLCAmd29wMSwgJndv cDMpOworICBzdGF0dXMgfD0gc2ltX2ZwdV9yb3VuZF82NCAoJmFucywgRlBT Ul9HRVRfUk9VTkQoKSwgc2ltX2ZwdV9kZW5vcm1fdW5kZXJmbG93X2luZXhh Y3QpOworCisgIHVwZGF0ZV9mcHNyIChzZCwgc3RhdHVzLCBGUFNSX1hFViB8 IEZQU1JfWEVJIHwgRlBTUl9YRU8gfCBGUFNSX1hFVSwgMCk7CisKKyAgc2lt X2ZwdV90bzMyICgmR1JbcmVnNF0sICZhbnMpOworICBUUkFDRV9GUF9SRVNV TFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIE1VTEYuRAorcnJyciwwMTExMTEx LFJSUlIsMCArIHd3d3csMDEwMDAxMTEwMTAwOkZfSTo6Om11bGZfZAorKnY4 NTBlMnYzCisibXVsZi5kIHI8cmVnMWU+LCByPHJlZzJlPiwgcjxyZWczZT4i Cit7CisgIHNpbV9mcHUgYW5zLCB3b3AxLCB3b3AyOworICBzaW1fZnB1X3N0 YXR1cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8yMzJ0byAoJndvcDEsIEdSW3Jl ZzFlKzFdLCBHUltyZWcxZV0pOworICBzaW1fZnB1XzIzMnRvICgmd29wMiwg R1JbcmVnMmUrMV0sIEdSW3JlZzJlXSk7CisgIFRSQUNFX0ZQX0lOUFVUX0ZQ VTIgKCZ3b3AxLCAmd29wMik7CisKKyAgc3RhdHVzID0gc2ltX2ZwdV9tdWwg KCZhbnMsICZ3b3AxLCAmd29wMik7CisgIHN0YXR1cyB8PSBzaW1fZnB1X3Jv dW5kXzY0ICgmYW5zLCBGUFNSX0dFVF9ST1VORCgpLCBzaW1fZnB1X2Rlbm9y bV91bmRlcmZsb3dfaW5leGFjdCk7CisKKyAgdXBkYXRlX2Zwc3IgKHNkLCBz dGF0dXMsIEZQU1JfWEVWIHwgRlBTUl9YRUkgfCBGUFNSX1hFTyB8IEZQU1Jf WEVVLCAxKTsKKworICBzaW1fZnB1X3RvMjMyICgmR1JbcmVnM2UrMV0sICZH UltyZWczZV0sICZhbnMpOworICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJmFu cyk7Cit9CisKKy8vIE1VTEYuUworcnJycnIsMTExMTExLFJSUlJSICsgd3d3 d3csMTAwMDExMDAxMDA6Rl9JOjo6bXVsZl9zCisqdjg1MGUydjMKKyJtdWxm LnMgcjxyZWcxPiwgcjxyZWcyPiwgcjxyZWczPiIKK3sKKyAgc2ltX2ZwdSBh bnMsIHdvcDEsIHdvcDI7CisgIHNpbV9mcHVfc3RhdHVzIHN0YXR1czsKKwor ICBzaW1fZnB1XzMydG8gKCZ3b3AxLCBHUltyZWcxXSk7CisgIHNpbV9mcHVf MzJ0byAoJndvcDIsIEdSW3JlZzJdKTsKKyAgVFJBQ0VfRlBfSU5QVVRfRlBV MiAoJndvcDEsICZ3b3AyKTsKKworICBzdGF0dXMgPSBzaW1fZnB1X211bCAo JmFucywgJndvcDEsICZ3b3AyKTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfcm91 bmRfMzIgKCZhbnMsIEZQU1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3Jt X3VuZGVyZmxvd19pbmV4YWN0KTsKKworICB1cGRhdGVfZnBzciAoc2QsIHN0 YXR1cywgRlBTUl9YRVYgfCBGUFNSX1hFSSB8IEZQU1JfWEVPIHwgRlBTUl9Y RVUsIDApOworCisgIHNpbV9mcHVfdG8zMiAoJkdSW3JlZzNdLCAmYW5zKTsK KyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOworfQorCisvLyBORUdG LkQKK3JycnIsMDExMTExMTAwMDAxICsgd3d3dywwMTAwMDEwMTEwMDA6Rl9J Ojo6bmVnZl9kCisqdjg1MGUydjMKKyJuZWdmLmQgcjxyZWcyZT4sIHI8cmVn M2U+IgoreworICBzaW1fZnB1IGFucywgd29wOworICBzaW1fZnB1X3N0YXR1 cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8yMzJ0byAoJndvcCwgR1JbcmVnMmUr MV0sIEdSW3JlZzJlXSk7CisgIFRSQUNFX0ZQX0lOUFVUX0ZQVTEgKCZ3b3Ap OworCisgIHN0YXR1cyA9IHNpbV9mcHVfbmVnICgmYW5zLCAmd29wKTsKKwor ICBjaGVja19pbnZhbGlkX3NuYW4oc2QsIHN0YXR1cywgMSk7CisKKyAgc2lt X2ZwdV90bzIzMiAoJkdSW3JlZzNlKzFdLCAmR1JbcmVnM2VdLCAmYW5zKTsK KyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOworfQorCisvLyBORUdG LlMKK3JycnJyLDExMTExMTAwMDAxICsgd3d3d3csMTAwMDEwMDEwMDA6Rl9J Ojo6bmVnZl9zCisqdjg1MGUydjMKKyJuZWdmLnMgcjxyZWcyPiwgcjxyZWcz PiIKK3sKKyAgc2ltX2ZwdSBhbnMsIHdvcDsKKyAgc2ltX2ZwdV9zdGF0dXMg c3RhdHVzOworCisgIHNpbV9mcHVfMzJ0byAoJndvcCwgR1JbcmVnMl0pOwor ICBUUkFDRV9GUF9JTlBVVF9GUFUxICgmd29wKTsKKworICBzdGF0dXMgPSBz aW1fZnB1X25lZyAoJmFucywgJndvcCk7CisKKyAgY2hlY2tfaW52YWxpZF9z bmFuKHNkLCBzdGF0dXMsIDApOworCisgIHNpbV9mcHVfdG8zMiAoJkdSW3Jl ZzNdLCAmYW5zKTsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOwor fQorCisvLyBOTUFEREYuUworcnJycnIsMTExMTExLFJSUlJSICsgd3d3d3cs MTAxLFcsMTAsV1dXVywwOkZfSTo6Om5tYWRkZl9zCisqdjg1MGUydjMKKyJu bWFkZGYucyByPHJlZzE+LCByPHJlZzI+LCByPHJlZzM+LCByPHJlZzQ+Igor eworICBzaW1fZnB1IGFucywgd29wMSwgd29wMiwgd29wMzsKKyAgc2ltX2Zw dV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMzJ0byAoJndvcDEsIEdS W3JlZzFdKTsKKyAgc2ltX2ZwdV8zMnRvICgmd29wMiwgR1JbcmVnMl0pOwor ICBzaW1fZnB1XzMydG8gKCZ3b3AzLCBHUltyZWczXSk7CisgIFRSQUNFX0ZQ X0lOUFVUX0ZQVTMgKCZ3b3AxLCAmd29wMiwgJndvcDMpOworCisgIHN0YXR1 cyA9IHNpbV9mcHVfbXVsICgmYW5zLCAmd29wMSwgJndvcDIpOworICBzdGF0 dXMgfD0gc2ltX2ZwdV9yb3VuZF82NCAoJmFucywgRlBTUl9HRVRfUk9VTkQo KSwgc2ltX2ZwdV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOworICB3b3Ax ID0gYW5zOworICBzdGF0dXMgfD0gc2ltX2ZwdV9hZGQgKCZhbnMsICZ3b3Ax LCAmd29wMyk7CisgIHN0YXR1cyB8PSBzaW1fZnB1X3JvdW5kXzY0ICgmYW5z LCBGUFNSX0dFVF9ST1VORCgpLCBzaW1fZnB1X2Rlbm9ybV91bmRlcmZsb3df aW5leGFjdCk7CisgIHdvcDEgPSBhbnM7CisgIHN0YXR1cyB8PSBzaW1fZnB1 X25lZyAoJmFucywgJndvcDEpOworCisgIHVwZGF0ZV9mcHNyIChzZCwgc3Rh dHVzLCBGUFNSX1hFViB8IEZQU1JfWEVJIHwgRlBTUl9YRU8gfCBGUFNSX1hF VSwgMCk7CisKKyAgc2ltX2ZwdV90bzMyICgmR1JbcmVnNF0sICZhbnMpOwor ICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIE5NU1VC Ri5TCitycnJyciwxMTExMTEsUlJSUlIgKyB3d3d3dywxMDEsVywxMSxXV1dX LDA6Rl9JOjo6bm1zdWJmX3MKKyp2ODUwZTJ2MworIm5tc3ViZi5zIHI8cmVn MT4sIHI8cmVnMj4sIHI8cmVnMz4sIHI8cmVnND4iCit7CisgIHNpbV9mcHUg YW5zLCB3b3AxLCB3b3AyLCB3b3AzOworICBzaW1fZnB1X3N0YXR1cyBzdGF0 dXM7CisKKyAgc2ltX2ZwdV8zMnRvICgmd29wMSwgR1JbcmVnMV0pOworICBz aW1fZnB1XzMydG8gKCZ3b3AyLCBHUltyZWcyXSk7CisgIHNpbV9mcHVfMzJ0 byAoJndvcDMsIEdSW3JlZzNdKTsKKyAgVFJBQ0VfRlBfSU5QVVRfRlBVMyAo JndvcDEsICZ3b3AyLCAmd29wMyk7CisKKyAgc3RhdHVzID0gc2ltX2ZwdV9t dWwgKCZhbnMsICZ3b3AxLCAmd29wMik7CisgIHN0YXR1cyB8PSBzaW1fZnB1 X3JvdW5kXzY0ICgmYW5zLCBGUFNSX0dFVF9ST1VORCgpLCBzaW1fZnB1X2Rl bm9ybV91bmRlcmZsb3dfaW5leGFjdCk7CisgIHdvcDEgPSBhbnM7CisgIHN0 YXR1cyB8PSBzaW1fZnB1X3N1YiAoJmFucywgJndvcDEsICZ3b3AzKTsKKyAg c3RhdHVzIHw9IHNpbV9mcHVfcm91bmRfNjQgKCZhbnMsIEZQU1JfR0VUX1JP VU5EKCksIHNpbV9mcHVfZGVub3JtX3VuZGVyZmxvd19pbmV4YWN0KTsKKyAg d29wMSA9IGFuczsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfbmVnICgmYW5zLCAm d29wMSk7CisKKyAgdXBkYXRlX2Zwc3IgKHNkLCBzdGF0dXMsIEZQU1JfWEVW IHwgRlBTUl9YRUkgfCBGUFNSX1hFTyB8IEZQU1JfWEVVLCAwKTsKKworICBz aW1fZnB1X3RvMzIgKCZHUltyZWc0XSwgJmFucyk7CisgIFRSQUNFX0ZQX1JF U1VMVF9GUFUxICgmYW5zKTsKK30KKworLy8gUkVDSVBGLkQKK3JycnIsMDEx MTExMTAwMDAxICsgd3d3dywwMTAwMDEwMTExMTA6Rl9JOjo6cmVjaXBmLmQK Kyp2ODUwZTJ2MworInJlY2lwZi5kIHI8cmVnMmU+LCByPHJlZzNlPiIKK3sK KyAgc2ltX2ZwdSBhbnMsIHdvcDsKKyAgc2ltX2ZwdV9zdGF0dXMgc3RhdHVz OworCisgIHNpbV9mcHVfMjMydG8gKCZ3b3AsIEdSW3JlZzJlKzFdLCBHUlty ZWcyZV0pOworICBUUkFDRV9GUF9JTlBVVF9GUFUxICgmd29wKTsKKworICBz dGF0dXMgPSBzaW1fZnB1X2RpdiAoJmFucywgJnNpbV9mcHVfb25lLCAmd29w KTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfcm91bmRfNjQgKCZhbnMsIEZQU1Jf R0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3JtX3VuZGVyZmxvd19pbmV4YWN0 KTsKKworICB1cGRhdGVfZnBzciAoc2QsIHN0YXR1cywgRlBTUl9YRVYgfCBG UFNSX1hFWiB8IEZQU1JfWEVJIHwgRlBTUl9YRU8gfCBGUFNSX1hFVSwgMSk7 CisKKyAgc2ltX2ZwdV90bzIzMiAoJkdSW3JlZzNlKzFdLCAmR1JbcmVnM2Vd LCAmYW5zKTsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQVTEgKCZhbnMpOworfQor CisvLyBSRUNJUEYuUworcnJycnIsMTExMTExMDAwMDEgKyB3d3d3dywxMDAw MTAwMTExMDpGX0k6OjpyZWNpcGYucworKnY4NTBlMnYzCisicmVjaXBmLnMg cjxyZWcyPiwgcjxyZWczPiIKK3sKKyAgc2ltX2ZwdSBhbnMsIHdvcDsKKyAg c2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMzJ0byAoJndv cCwgR1JbcmVnMl0pOworICBUUkFDRV9GUF9JTlBVVF9GUFUxICgmd29wKTsK KworICBzdGF0dXMgPSBzaW1fZnB1X2RpdiAoJmFucywgJnNpbV9mcHVfb25l LCAmd29wKTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfcm91bmRfNjQgKCZhbnMs IEZQU1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3JtX3VuZGVyZmxvd19p bmV4YWN0KTsKKworICB1cGRhdGVfZnBzciAoc2QsIHN0YXR1cywgRlBTUl9Y RVYgfCBGUFNSX1hFWiB8IEZQU1JfWEVJIHwgRlBTUl9YRU8gfCBGUFNSX1hF VSwgMCk7CisKKyAgc2ltX2ZwdV90bzMyICgmR1JbcmVnM10sICZhbnMpOwor ICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIFJTUVJU Ri5ECitycnJyLDAxMTExMTEwMDAxMCArIHd3d3csMDEwMDAxMDExMTEwOkZf STo6OnJzcXJ0Zi5kCisqdjg1MGUydjMKKyJyc3FydGYuZCByPHJlZzJlPiwg cjxyZWczZT4iCit7CisgIHNpbV9mcHUgYW5zLCB3b3A7CisgIHNpbV9mcHVf c3RhdHVzIHN0YXR1czsKKworICBzaW1fZnB1XzIzMnRvICgmd29wLCBHUlty ZWcyZSsxXSwgR1JbcmVnMmVdKTsKKyAgVFJBQ0VfRlBfSU5QVVRfRlBVMSAo JndvcCk7CisKKyAgc3RhdHVzID0gc2ltX2ZwdV9zcXJ0ICgmYW5zLCAmd29w KTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfcm91bmRfNjQgKCZhbnMsIEZQU1Jf R0VUX1JPVU5EKCksIHNpbV9mcHVfZGVub3JtX3VuZGVyZmxvd19pbmV4YWN0 KTsKKyAgd29wID0gYW5zOworICBzdGF0dXMgPSBzaW1fZnB1X2RpdiAoJmFu cywgJnNpbV9mcHVfb25lLCAmd29wKTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVf cm91bmRfNjQgKCZhbnMsIEZQU1JfR0VUX1JPVU5EKCksIHNpbV9mcHVfZGVu b3JtX3VuZGVyZmxvd19pbmV4YWN0KTsKKworICB1cGRhdGVfZnBzciAoc2Qs IHN0YXR1cywgRlBTUl9YRVYgfCBGUFNSX1hFWiB8IEZQU1JfWEVJIHwgRlBT Ul9YRU8gfCBGUFNSX1hFVSwgMSk7CisKKyAgc2ltX2ZwdV90bzIzMiAoJkdS W3JlZzNlKzFdLCAmR1JbcmVnM2VdLCAmYW5zKTsKKyAgVFJBQ0VfRlBfUkVT VUxUX0ZQVTEgKCZhbnMpOworfQorCisvLyBSU1FSVEYuUworcnJycnIsMTEx MTExMDAwMTAgKyB3d3d3dywxMDAwMTAwMTExMDpGX0k6Ojpyc3FydGYucwor KnY4NTBlMnYzCisicnNxcnRmLnMgcjxyZWcyPiwgcjxyZWczPiIKK3sKKyAg c2ltX2ZwdSBhbnMsIHdvcDsKKyAgc2ltX2ZwdV9zdGF0dXMgc3RhdHVzOwor CisgIHNpbV9mcHVfMzJ0byAoJndvcCwgR1JbcmVnMl0pOworICBUUkFDRV9G UF9JTlBVVF9GUFUxICgmd29wKTsKKworICBzdGF0dXMgPSBzaW1fZnB1X3Nx cnQgKCZhbnMsICZ3b3ApOworICBzdGF0dXMgfD0gc2ltX2ZwdV9yb3VuZF8z MiAoJmFucywgRlBTUl9HRVRfUk9VTkQoKSwgc2ltX2ZwdV9kZW5vcm1fdW5k ZXJmbG93X2luZXhhY3QpOworICB3b3AgPSBhbnM7CisgIHN0YXR1cyA9IHNp bV9mcHVfZGl2ICgmYW5zLCAmc2ltX2ZwdV9vbmUsICZ3b3ApOworICBzdGF0 dXMgfD0gc2ltX2ZwdV9yb3VuZF8zMiAoJmFucywgRlBTUl9HRVRfUk9VTkQo KSwgc2ltX2ZwdV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOworCisgIHVw ZGF0ZV9mcHNyIChzZCwgc3RhdHVzLCBGUFNSX1hFViB8IEZQU1JfWEVaIHwg RlBTUl9YRUkgfCBGUFNSX1hFTyB8IEZQU1JfWEVVLCAwKTsKKworICBzaW1f ZnB1X3RvMzIgKCZHUltyZWczXSwgJmFucyk7CisgIFRSQUNFX0ZQX1JFU1VM VF9GUFUxICgmYW5zKTsKK30KKworLy8gU1FSVEYuRAorcnJyciwwMTExMTEx MDAwMDAgKyB3d3d3LDAxMDAwMTAxMTExMDpGX0k6OjpzcXJ0Zi5kCisqdjg1 MGUydjMKKyJzcXJ0Zi5kIHI8cmVnMmU+LCByPHJlZzNlPiIKK3sKKyAgc2lt X2ZwdSBhbnMsIHdvcDsKKyAgc2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisg IHNpbV9mcHVfMjMydG8gKCZ3b3AsIEdSW3JlZzJlKzFdLCBHUltyZWcyZV0p OworICBUUkFDRV9GUF9JTlBVVF9GUFUxICgmd29wKTsKKworICBzdGF0dXMg PSBzaW1fZnB1X3NxcnQgKCZhbnMsICZ3b3ApOworICBzdGF0dXMgfD0gc2lt X2ZwdV9yb3VuZF82NCAoJmFucywgRlBTUl9HRVRfUk9VTkQoKSwgc2ltX2Zw dV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOworCisgIHVwZGF0ZV9mcHNy IChzZCwgc3RhdHVzLCBGUFNSX1hFViB8IEZQU1JfWEVJLCAxKTsKKworICBz aW1fZnB1X3RvMjMyICgmR1JbcmVnM2UrMV0sICZHUltyZWczZV0sICZhbnMp OworICBUUkFDRV9GUF9SRVNVTFRfRlBVMSAoJmFucyk7Cit9CisKKy8vIFNR UlRGLlMKK3JycnJyLDExMTExMTAwMDAwICsgd3d3d3csMTAwMDEwMDExMTA6 Rl9JOjo6c3FydGYucworKnY4NTBlMnYzCisic3FydGYucyByPHJlZzI+LCBy PHJlZzM+IgoreworICBzaW1fZnB1IGFucywgd29wOworICBzaW1fZnB1X3N0 YXR1cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8zMnRvICgmd29wLCBHUltyZWcy XSk7CisgIFRSQUNFX0ZQX0lOUFVUX0ZQVTEgKCZ3b3ApOworCisgIHN0YXR1 cyA9IHNpbV9mcHVfc3FydCAoJmFucywgJndvcCk7CisgIHN0YXR1cyB8PSBz aW1fZnB1X3JvdW5kXzMyICgmYW5zLCBGUFNSX0dFVF9ST1VORCgpLCBzaW1f ZnB1X2Rlbm9ybV91bmRlcmZsb3dfaW5leGFjdCk7CisKKyAgdXBkYXRlX2Zw c3IgKHNkLCBzdGF0dXMsIEZQU1JfWEVWIHwgRlBTUl9YRUksIDApOworCisg IHNpbV9mcHVfdG8zMiAoJkdSW3JlZzNdLCAmYW5zKTsKKyAgVFJBQ0VfRlBf UkVTVUxUX0ZQVTEgKCZhbnMpOworfQorCisvLyBTVUJGLkQKK3JycnIsMDEx MTExMSxSUlJSLDAgKyB3d3d3LDAxMDAwMTExMDAxMDpGX0k6OjpzdWJmLmQK Kyp2ODUwZTJ2MworInN1YmYuZCByPHJlZzFlPiwgcjxyZWcyZT4sIHI8cmVn M2U+IgoreworICBzaW1fZnB1IGFucywgd29wMSwgd29wMjsKKyAgc2ltX2Zw dV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMjMydG8gKCZ3b3AxLCBH UltyZWcxZSsxXSwgR1JbcmVnMWVdKTsKKyAgc2ltX2ZwdV8yMzJ0byAoJndv cDIsIEdSW3JlZzJlKzFdLCBHUltyZWcyZV0pOworICBUUkFDRV9GUF9JTlBV VF9GUFUyICgmd29wMSwgJndvcDIpOworCisgIC8vc3RhdHVzID0gc2ltX2Zw dV9zdWIgKCZhbnMsICZ3b3AxLCAmd29wMik7CisgIHN0YXR1cyA9IHNpbV9m cHVfc3ViICgmYW5zLCAmd29wMiwgJndvcDEpOworICBzdGF0dXMgfD0gc2lt X2ZwdV9yb3VuZF82NCAoJmFucywgRlBTUl9HRVRfUk9VTkQoKSwgc2ltX2Zw dV9kZW5vcm1fdW5kZXJmbG93X2luZXhhY3QpOworCisgIHVwZGF0ZV9mcHNy IChzZCwgc3RhdHVzLCBGUFNSX1hFViB8IEZQU1JfWEVJIHwgRlBTUl9YRU8g fCBGUFNSX1hFVSwgMSk7CisKKyAgc2ltX2ZwdV90bzIzMiAoJkdSW3JlZzNl KzFdLCAmR1JbcmVnM2VdLCAmYW5zKTsKKyAgVFJBQ0VfRlBfUkVTVUxUX0ZQ VTEgKCZhbnMpOworfQorCisvLyBTVUJGLlMKK3JycnJyLDExMTExMSxSUlJS UiArIHd3d3d3LDEwMDAxMTAwMDEwOkZfSTo6OnN1YmYucworKnY4NTBlMnYz Cisic3ViZi5zIHI8cmVnMT4sIHI8cmVnMj4sIHI8cmVnMz4iCit7CisgIHNp bV9mcHUgYW5zLCB3b3AxLCB3b3AyOworICBzaW1fZnB1X3N0YXR1cyBzdGF0 dXM7CisKKyAgc2ltX2ZwdV8zMnRvICgmd29wMSwgR1JbcmVnMV0pOworICBz aW1fZnB1XzMydG8gKCZ3b3AyLCBHUltyZWcyXSk7CisgIFRSQUNFX0ZQX0lO UFVUX0ZQVTIgKCZ3b3AxLCAmd29wMik7CisKKyAgLy9zdGF0dXMgPSBzaW1f ZnB1X3N1YiAoJmFucywgJndvcDEsICZ3b3AyKTsKKyAgc3RhdHVzID0gc2lt X2ZwdV9zdWIgKCZhbnMsICZ3b3AyLCAmd29wMSk7CisgIHN0YXR1cyB8PSBz aW1fZnB1X3JvdW5kXzMyICgmYW5zLCBGUFNSX0dFVF9ST1VORCgpLCBzaW1f ZnB1X2Rlbm9ybV91bmRlcmZsb3dfaW5leGFjdCk7CisKKyAgdXBkYXRlX2Zw c3IgKHNkLCBzdGF0dXMsIEZQU1JfWEVWIHwgRlBTUl9YRUkgfCBGUFNSX1hF TyB8IEZQU1JfWEVVLCAwKTsKKworICBzaW1fZnB1X3RvMzIgKCZHUltyZWcz XSwgJmFucyk7CisgIFRSQUNFX0ZQX1JFU1VMVF9GUFUxICgmYW5zKTsKK30K KworLy8gVFJGU1IKKzAwMDAwMTExMTExMDAwMDAgKyAwMDAwMDEwMDAwMDAs YmJiLDA6Rl9JOjo6dHJmc3IKKyp2ODUwZTJ2MworInRyZnNyIjooYmJiID09 IDApCisidHJmc3IgPGJiYj4iCit7CisgIFRSQUNFX0FMVV9JTlBVVDEgKEdF VF9GUENDKCkpOworCisgIGlmIChURVNUX0ZQQ0MgKGJiYikpCisgICAgUFNX IHw9IFBTV19aOworICBlbHNlIAorICAgIFBTVyAmPSB+UFNXX1o7ICAKKwor ICBUUkFDRV9BTFVfUkVTVUxUMSAoUFNXKTsKK30KKworLy8gVFJOQ0YuREwK K3JycnIsMDExMTExMTAwMDAxICsgd3d3dywwMTAwMDEwMTAxMDA6Rl9JOjo6 dHJuY2ZfZGwKKyp2ODUwZTJ2MworInRybmNmLmRsIHI8cmVnMmU+LCByPHJl ZzNlPiIKK3sKKyAgc2lnbmVkNjQgYW5zOworICBzaW1fZnB1IHdvcDsKKyAg c2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9mcHVfMjMydG8gKCZ3 b3AsIEdSW3JlZzJlKzFdLCBHUltyZWcyZV0pOworICBUUkFDRV9GUF9JTlBV VF9GUFUxICgmd29wKTsKKworICBzdGF0dXMgPSBzaW1fZnB1X3JvdW5kXzY0 ICgmd29wLCBzaW1fZnB1X3JvdW5kX3plcm8sIHNpbV9mcHVfZGVub3JtX3pl cm8pOworICBzdGF0dXMgfD0gc2ltX2ZwdV90bzY0aSAoJmFucywgJndvcCwg c2ltX2ZwdV9yb3VuZF96ZXJvKTsKKworICBjaGVja19jdnRfZmkoc2QsIHN0 YXR1cywgMSk7CisKKyAgR1JbcmVnM2VdID0gYW5zOworICBHUltyZWczZSsx XSA9IGFucz4+MzJMOworICBUUkFDRV9GUF9SRVNVTFRfV09SRDIgKEdSW3Jl ZzNlXSwgR1JbcmVnM2UrMV0pOworfQorCisvLyBUUk5DRi5EVworcnJyciww MTExMTExMDAwMDEgKyB3d3d3dywxMDAwMTAxMDAwMDpGX0k6Ojp0cm5jZl9k dworKnY4NTBlMnYzCisidHJuY2YuZHcgcjxyZWcyZT4sIHI8cmVnMz4iCit7 CisgIHVpbnQzMiBhbnM7CisgIHNpbV9mcHUgd29wOworICBzaW1fZnB1X3N0 YXR1cyBzdGF0dXM7CisKKyAgc2ltX2ZwdV8yMzJ0byAoJndvcCwgR1JbcmVn MmUrMV0sIEdSW3JlZzJlXSk7CisgIFRSQUNFX0ZQX0lOUFVUX0ZQVTEgKCZ3 b3ApOworCisgIHN0YXR1cyA9IHNpbV9mcHVfcm91bmRfMzIgKCZ3b3AsIHNp bV9mcHVfcm91bmRfemVybywgc2ltX2ZwdV9kZW5vcm1femVybyk7CisgIHN0 YXR1cyB8PSBzaW1fZnB1X3RvMzJpICgmYW5zLCAmd29wLCBzaW1fZnB1X3Jv dW5kX3plcm8pOworCisgIGNoZWNrX2N2dF9maShzZCwgc3RhdHVzLCAxKTsK KworICBHUltyZWczXSA9IGFuczsKKyAgVFJBQ0VfRlBfUkVTVUxUX1dPUkQx IChhbnMpOworfQorCisvLyBUUk5DRi5TTAorcnJycnIsMTExMTExMDAwMDEg KyB3d3d3LDAxMDAwMTAwMDEwMDpGX0k6Ojp0cm5jZl9zbAorKnY4NTBlMnYz CisidHJuY2Yuc2wgcjxyZWcyPiwgcjxyZWczZT4iCit7CisgIHNpZ25lZDY0 IGFuczsKKyAgc2ltX2ZwdSB3b3A7CisgIHNpbV9mcHVfc3RhdHVzIHN0YXR1 czsKKworICBzaW1fZnB1XzMydG8gKCZ3b3AsIEdSW3JlZzJdKTsKKyAgVFJB Q0VfRlBfSU5QVVRfRlBVMSAoJndvcCk7CisKKyAgc3RhdHVzID0gc2ltX2Zw dV9yb3VuZF82NCAoJndvcCwgc2ltX2ZwdV9yb3VuZF96ZXJvLCBzaW1fZnB1 X2Rlbm9ybV96ZXJvKTsKKyAgc3RhdHVzIHw9IHNpbV9mcHVfdG82NGkgKCZh bnMsICZ3b3AsIHNpbV9mcHVfcm91bmRfemVybyk7CisKKyAgR1JbcmVnM2Vd ID0gYW5zOworICBHUltyZWczZSsxXSA9IGFucyA+PiAzMkw7CisgIFRSQUNF X0ZQX1JFU1VMVF9XT1JEMiAoR1JbcmVnM2VdLCBHUltyZWczZSsxXSk7Cit9 CisKKy8vIFRSTkNGLlNXCitycnJyciwxMTExMTEwMDAwMSArIHd3d3d3LDEw MDAxMDAwMDAwOkZfSTo6OnRybmNmX3N3Cisqdjg1MGUydjMKKyJ0cm5jZi5z dyByPHJlZzI+LCByPHJlZzM+IgoreworICB1aW50MzIgYW5zOworICBzaW1f ZnB1IHdvcDsKKyAgc2ltX2ZwdV9zdGF0dXMgc3RhdHVzOworCisgIHNpbV9m cHVfMzJ0byAoJndvcCwgR1JbcmVnMl0pOworICBUUkFDRV9GUF9JTlBVVF9G UFUxICgmd29wKTsKKworICBzdGF0dXMgPSBzaW1fZnB1X3JvdW5kXzMyICgm d29wLCBzaW1fZnB1X3JvdW5kX3plcm8sIHNpbV9mcHVfZGVub3JtX3plcm8p OworICBzdGF0dXMgfD0gc2ltX2ZwdV90bzMyaSAoJmFucywgJndvcCwgc2lt X2ZwdV9yb3VuZF96ZXJvKTsKKworICBjaGVja19jdnRfZmkoc2QsIHN0YXR1 cywgMCk7CisKKyAgR1JbcmVnM10gPSBhbnM7CisgIFRSQUNFX0ZQX1JFU1VM VF9XT1JEMSAoYW5zKTsKK30KKwo= --_002_371569CBCFB2E745B891DBB88B2DFDDD19E5643B64KCINPUNHJCMS0_--