From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 90209 invoked by alias); 9 Nov 2016 14:54:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 90160 invoked by uid 89); 9 Nov 2016 14:54:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.6 required=5.0 tests=BAYES_00,KAM_LOTSOFHASH,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=047, ties, 2831, 4-5 X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 09 Nov 2016 14:53:55 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CF768AD7; Wed, 9 Nov 2016 06:53:53 -0800 (PST) Received: from [10.2.206.251] (e107157-lin.cambridge.arm.com [10.2.206.251]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5C29E3F220; Wed, 9 Nov 2016 06:53:53 -0800 (PST) Subject: Re: [PATCHv2 6/7, GCC, ARM, V8M] ARMv8-M Security Extension's cmse_nonsecure_call: use __gnu_cmse_nonsecure_call To: gcc-patches@gcc.gnu.org References: <5796116C.6010100@arm.com> <57961383.7090709@arm.com> <57BD7E9E.6090906@arm.com> <580F8889.6080602@arm.com> <5811D05D.4070909@arm.com> Cc: Kyrill Tkachov From: "Andre Vieira (lists)" Message-ID: <58233880.4010002@arm.com> Date: Wed, 09 Nov 2016 14:54:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <5811D05D.4070909@arm.com> Content-Type: multipart/mixed; boundary="------------090109030205030900090709" X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00847.txt.bz2 This is a multi-part message in MIME format. --------------090109030205030900090709 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 9056 On 27/10/16 11:01, Andre Vieira (lists) wrote: > On 25/10/16 17:30, Andre Vieira (lists) wrote: >> On 24/08/16 12:01, Andre Vieira (lists) wrote: >>> On 25/07/16 14:26, Andre Vieira (lists) wrote: >>>> This patch extends support for the ARMv8-M Security Extensions >>>> 'cmse_nonsecure_call' to use a new library function >>>> '__gnu_cmse_nonsecure_call'. This library function is responsible for >>>> (without using r0-r3 or d0-d7): >>>> 1) saving and clearing all callee-saved registers using the secure stack >>>> 2) clearing the LSB of the address passed in r4 and using blxns to >>>> 'jump' to it >>>> 3) clearing ASPR, including the 'ge bits' if DSP is enabled >>>> 4) clearing FPSCR if using non-soft float-abi >>>> 5) restoring callee-saved registers. >>>> >>>> The decisions whether to include DSP 'ge bits' clearing and floating >>>> point registers (single/double precision) all depends on the multilib used. >>>> >>>> See Section 5.5 of ARM®v8-M Security Extensions >>>> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). >>>> >>>> *** gcc/ChangeLog *** >>>> 2016-07-25 Andre Vieira >>>> Thomas Preud'homme >>>> >>>> * config/arm/arm.c (detect_cmse_nonsecure_call): New. >>>> (cmse_nonsecure_call_clear_caller_saved): New. >>>> (arm_reorg): Use cmse_nonsecure_call_clear_caller_saved. >>>> * config/arm/arm-protos.h (detect_cmse_nonsecure_call): New. >>>> * config/arm/arm.md (call): Handle cmse_nonsecure_entry. >>>> (call_value): Likewise. >>>> (nonsecure_call_internal): New. >>>> (nonsecure_call_value_internal): New. >>>> * config/arm/thumb1.md (*nonsecure_call_reg_thumb1_v5): New. >>>> (*nonsecure_call_value_reg_thumb1_v5): New. >>>> * config/arm/thumb2.md (*nonsecure_call_reg_thumb2): New. >>>> (*nonsecure_call_value_reg_thumb2): New. >>>> * config/arm/unspecs.md (UNSPEC_NONSECURE_MEM): New. >>>> >>>> *** libgcc/ChangeLog *** >>>> 2016-07-25 Andre Vieira >>>> Thomas Preud'homme >>>> >>>> * config/arm/cmse_nonsecure_call.S: New. >>>> * config/arm/t-arm: Compile cmse_nonsecure_call.S >>>> >>>> >>>> *** gcc/testsuite/ChangeLog *** >>>> 2016-07-25 Andre Vieira >>>> Thomas Preud'homme >>>> >>>> * gcc.target/arm/cmse/cmse.exp: Run tests in mainline dir. >>>> * gcc.target/arm/cmse/cmse-9.c: Added some extra tests. >>>> * gcc.target/arm/cmse/baseline/bitfield-4.c: New. >>>> * gcc.target/arm/cmse/baseline/bitfield-5.c: New. >>>> * gcc.target/arm/cmse/baseline/bitfield-6.c: New. >>>> * gcc.target/arm/cmse/baseline/bitfield-7.c: New. >>>> * gcc.target/arm/cmse/baseline/bitfield-8.c: New. >>>> * gcc.target/arm/cmse/baseline/bitfield-9.c: New. >>>> * gcc.target/arm/cmse/baseline/bitfield-and-union-1.c: New. >>>> * gcc.target/arm/cmse/baseline/cmse-11.c: New. >>>> * gcc.target/arm/cmse/baseline/cmse-13.c: New. >>>> * gcc.target/arm/cmse/baseline/cmse-6.c: New. >>>> * gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c: New. >>>> * gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c: New. >>>> * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: New. >>>> * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: New. >>>> * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: New. >>>> * gcc.target/arm/cmse/mainline/hard/cmse-13.c: New. >>>> * gcc.target/arm/cmse/mainline/hard/cmse-7.c: New. >>>> * gcc.target/arm/cmse/mainline/hard/cmse-8.c: New. >>>> * gcc.target/arm/cmse/mainline/soft/cmse-13.c: New. >>>> * gcc.target/arm/cmse/mainline/soft/cmse-7.c: New. >>>> * gcc.target/arm/cmse/mainline/soft/cmse-8.c: New. >>>> * gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c: New. >>>> * gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c: New. >>>> * gcc.target/arm/cmse/mainline/softfp/cmse-13.c: New. >>>> * gcc.target/arm/cmse/mainline/softfp/cmse-7.c: New. >>>> * gcc.target/arm/cmse/mainline/softfp/cmse-8.c: New. >>>> >>> >>> Updated this patch to correctly clear only the cumulative >>> exception-status (0-4,7) and the condition code bits (28-31) of the FPSCR. >>> >>> ---- >>> >>> This patch extends support for the ARMv8-M Security Extensions >>> 'cmse_nonsecure_call' to use a new library function >>> '__gnu_cmse_nonsecure_call'. This library function is responsible for >>> (without using r0-r3 or d0-d7): >>> 1) saving and clearing all callee-saved registers using the secure stack >>> 2) clearing the LSB of the address passed in r4 and using blxns to >>> 'jump' to it >>> 3) clearing ASPR, including the 'ge bits' if DSP is enabled >>> 4) clearing the cumulative exception-status (0-4, 7) and the condition >>> bits (28-31) of the FPSCR if using non-soft float-abi >>> 5) restoring callee-saved registers. >>> >>> The decisions whether to include DSP 'ge bits' clearing and floating >>> point registers (single/double precision) all depends on the multilib used. >>> >>> See Section 5.5 of ARM®v8-M Security Extensions >>> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). >>> >>> *** gcc/ChangeLog *** >>> 2016-07-xx Andre Vieira >>> Thomas Preud'homme >>> >>> * config/arm/arm.c (detect_cmse_nonsecure_call): New. >>> (cmse_nonsecure_call_clear_caller_saved): New. >>> (arm_reorg): Use cmse_nonsecure_call_clear_caller_saved. >>> * config/arm/arm-protos.h (detect_cmse_nonsecure_call): New. >>> * config/arm/arm.md (call): Handle cmse_nonsecure_entry. >>> (call_value): Likewise. >>> (nonsecure_call_internal): New. >>> (nonsecure_call_value_internal): New. >>> * config/arm/thumb1.md (*nonsecure_call_reg_thumb1_v5): New. >>> (*nonsecure_call_value_reg_thumb1_v5): New. >>> * config/arm/thumb2.md (*nonsecure_call_reg_thumb2): New. >>> (*nonsecure_call_value_reg_thumb2): New. >>> * config/arm/unspecs.md (UNSPEC_NONSECURE_MEM): New. >>> >>> *** libgcc/ChangeLog *** >>> 2016-07-xx Andre Vieira >>> Thomas Preud'homme >>> >>> * config/arm/cmse_nonsecure_call.S: New. >>> * config/arm/t-arm: Compile cmse_nonsecure_call.S >>> >>> >>> *** gcc/testsuite/ChangeLog *** >>> 2016-07-xx Andre Vieira >>> Thomas Preud'homme >>> >>> * gcc.target/arm/cmse/cmse.exp: Run tests in mainline dir. >>> * gcc.target/arm/cmse/cmse-9.c: Added some extra tests. >>> * gcc.target/arm/cmse/baseline/bitfield-4.c: New. >>> * gcc.target/arm/cmse/baseline/bitfield-5.c: New. >>> * gcc.target/arm/cmse/baseline/bitfield-6.c: New. >>> * gcc.target/arm/cmse/baseline/bitfield-7.c: New. >>> * gcc.target/arm/cmse/baseline/bitfield-8.c: New. >>> * gcc.target/arm/cmse/baseline/bitfield-9.c: New. >>> * gcc.target/arm/cmse/baseline/bitfield-and-union-1.c: New. >>> * gcc.target/arm/cmse/baseline/cmse-11.c: New. >>> * gcc.target/arm/cmse/baseline/cmse-13.c: New. >>> * gcc.target/arm/cmse/baseline/cmse-6.c: New. >>> * gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c: New. >>> * gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c: New. >>> * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: New. >>> * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: New. >>> * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: New. >>> * gcc.target/arm/cmse/mainline/hard/cmse-13.c: New. >>> * gcc.target/arm/cmse/mainline/hard/cmse-7.c: New. >>> * gcc.target/arm/cmse/mainline/hard/cmse-8.c: New. >>> * gcc.target/arm/cmse/mainline/soft/cmse-13.c: New. >>> * gcc.target/arm/cmse/mainline/soft/cmse-7.c: New. >>> * gcc.target/arm/cmse/mainline/soft/cmse-8.c: New. >>> * gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c: New. >>> * gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c: New. >>> * gcc.target/arm/cmse/mainline/softfp/cmse-13.c: New. >>> * gcc.target/arm/cmse/mainline/softfp/cmse-7.c: New. >>> * gcc.target/arm/cmse/mainline/softfp/cmse-8.c: New. >>> >> Hi, >> >> Rebased previous patch on top of trunk as requested. No changes to >> ChangeLog. >> >> Cheers, >> Andre >> > > Hi, > > Reworked the testcase for compiling without -mcmse to catch the warning > added in 5/7. Also took the opportunity to improve the code in the > cmse_nonsecure_call library wrapper. > > Cheers, > Andre > Hi, Fixed an issue when returning from cmse_nonsecure_call's. The ARMv8-M Mainline variant was missing a branch back and changed the Baseline variant to use bx, rather than blx when returning. I also noticed a sub-optimal sequence for thumb-1 and changed it. Cheers, Andre --------------090109030205030900090709 Content-Type: text/plain; charset=UTF-8; name="diff6" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff6" Content-length: 110959 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaCBiL2dj Yy9jb25maWcvYXJtL2FybS1wcm90b3MuaAppbmRleCBhOWI4MzI2YzI3NzBj MWY5YTk3ODc3NDNjYjVmYWE1NDllNmI3ZDAyLi4yNjYwYmMzYmE4OWMzNGIx NzkxMTY4MGM0ZTI1ZWIyZjZjMDc0NWZiIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2FybS9hcm0tcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJt LXByb3Rvcy5oCkBAIC0xMzUsNiArMTM1LDcgQEAgZXh0ZXJuIGludCBhcm1f Y29uc3RfZG91YmxlX2lubGluZV9jb3N0IChydHgpOwogZXh0ZXJuIGJvb2wg YXJtX2NvbnN0X2RvdWJsZV9ieV9wYXJ0cyAocnR4KTsKIGV4dGVybiBib29s IGFybV9jb25zdF9kb3VibGVfYnlfaW1tZWRpYXRlcyAocnR4KTsKIGV4dGVy biB2b2lkIGFybV9lbWl0X2NhbGxfaW5zbiAocnR4LCBydHgsIGJvb2wpOwor Ym9vbCBkZXRlY3RfY21zZV9ub25zZWN1cmVfY2FsbCAodHJlZSk7CiBleHRl cm4gY29uc3QgY2hhciAqb3V0cHV0X2NhbGwgKHJ0eCAqKTsKIHZvaWQgYXJt X2VtaXRfbW92cGFpciAocnR4LCBydHgpOwogZXh0ZXJuIGNvbnN0IGNoYXIg Km91dHB1dF9tb3ZfbG9uZ19kb3VibGVfYXJtX2Zyb21fYXJtIChydHggKik7 CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0uYyBiL2djYy9jb25m aWcvYXJtL2FybS5jCmluZGV4IDllNTY1NmVlYjEzOTkyYzZkNzgzN2QyMWM5 ZTA0OWUyNjRjN2I5YzAuLjZhNDdkM2FmNDFiYTAyYjVkY2JhNWYyZTc0MTEz ODBlM2YwMzQzZWUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2FybS5j CisrKyBiL2djYy9jb25maWcvYXJtL2FybS5jCkBAIC0xNzg1MCw2ICsxNzg1 MCwxOTcgQEAgY29tcHV0ZV9ub3RfdG9fY2xlYXJfbWFzayAodHJlZSBhcmdf dHlwZSwgcnR4IGFyZ19ydHgsIGludCByZWdubywKICAgcmV0dXJuIG5vdF90 b19jbGVhcl9tYXNrOwogfQogCisvKiBTYXZlcyBjYWxsZWUgc2F2ZWQgcmVn aXN0ZXJzLCBjbGVhcnMgY2FsbGVlIHNhdmVkIHJlZ2lzdGVycyBhbmQgY2Fs bGVyIHNhdmVkCisgICByZWdpc3RlcnMgbm90IHVzZWQgdG8gcGFzcyBhcmd1 bWVudHMgYmVmb3JlIGEgY21zZV9ub25zZWN1cmVfY2FsbC4gIEFuZAorICAg cmVzdG9yZXMgdGhlIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMgYWZ0ZXIuICAq LworCitzdGF0aWMgdm9pZAorY21zZV9ub25zZWN1cmVfY2FsbF9jbGVhcl9j YWxsZXJfc2F2ZWQgKHZvaWQpCit7CisgIGJhc2ljX2Jsb2NrIGJiOworCisg IEZPUl9FQUNIX0JCX0ZOIChiYiwgY2Z1bikKKyAgICB7CisgICAgICBydHhf aW5zbiAqaW5zbjsKKworICAgICAgRk9SX0JCX0lOU05TIChiYiwgaW5zbikK Kwl7CisJICB1aW50NjRfdCB0b19jbGVhcl9tYXNrLCBmbG9hdF9tYXNrOwor CSAgcnR4X2luc24gKnNlcTsKKwkgIHJ0eCBwYXQsIGNhbGwsIHVuc3BlYywg cmVnLCBjbGVhcmVkX3JlZywgdG1wOworCSAgdW5zaWduZWQgaW50IHJlZ25v LCBtYXhyZWdubzsKKwkgIHJ0eCBhZGRyZXNzOworCSAgQ1VNVUxBVElWRV9B UkdTIGFyZ3Nfc29fZmFyX3Y7CisJICBjdW11bGF0aXZlX2FyZ3NfdCBhcmdz X3NvX2ZhcjsKKwkgIHRyZWUgYXJnX3R5cGUsIGZudHlwZTsKKwkgIGJvb2wg dXNpbmdfcjQsIGZpcnN0X3BhcmFtID0gdHJ1ZTsKKwkgIGZ1bmN0aW9uX2Fy Z3NfaXRlcmF0b3IgYXJnc19pdGVyOworCSAgdWludDMyX3QgcGFkZGluZ19i aXRzX3RvX2NsZWFyWzRdID0gezBVLCAwVSwgMFUsIDBVfTsKKwkgIHVpbnQz Ml90ICogcGFkZGluZ19iaXRzX3RvX2NsZWFyX3B0ciA9ICZwYWRkaW5nX2Jp dHNfdG9fY2xlYXJbMF07CisKKwkgIGlmICghTk9OREVCVUdfSU5TTl9QIChp bnNuKSkKKwkgICAgY29udGludWU7CisKKwkgIGlmICghQ0FMTF9QIChpbnNu KSkKKwkgICAgY29udGludWU7CisKKwkgIHBhdCA9IFBBVFRFUk4gKGluc24p OworCSAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKHBhdCkgPT0gUEFSQUxMRUwg JiYgWFZFQ0xFTiAocGF0LCAwKSA+IDApOworCSAgY2FsbCA9IFhWRUNFWFAg KHBhdCwgMCwgMCk7CisKKwkgIC8qIEdldCB0aGUgcmVhbCBjYWxsIFJUWCBp ZiB0aGUgaW5zbiBzZXRzIGEgdmFsdWUsIGllLiByZXR1cm5zLiAgKi8KKwkg IGlmIChHRVRfQ09ERSAoY2FsbCkgPT0gU0VUKQorCSAgICAgIGNhbGwgPSBT RVRfU1JDIChjYWxsKTsKKworCSAgLyogQ2hlY2sgaWYgaXQgaXMgYSBjbXNl X25vbnNlY3VyZV9jYWxsLiAgKi8KKwkgIHVuc3BlYyA9IFhFWFAgKGNhbGws IDApOworCSAgaWYgKEdFVF9DT0RFICh1bnNwZWMpICE9IFVOU1BFQworCSAg ICAgIHx8IFhJTlQgKHVuc3BlYywgMSkgIT0gVU5TUEVDX05PTlNFQ1VSRV9N RU0pCisJICAgIGNvbnRpbnVlOworCisJICAvKiBEZXRlcm1pbmUgdGhlIGNh bGxlci1zYXZlZCByZWdpc3RlcnMgd2UgbmVlZCB0byBjbGVhci4gICovCisJ ICB0b19jbGVhcl9tYXNrID0gKDFMTCA8PCAoTlVNX0FSR19SRUdTKSkgLSAx OworCSAgbWF4cmVnbm8gPSBOVU1fQVJHX1JFR1MgLSAxOworCSAgLyogT25s eSBsb29rIGF0IHRoZSBjYWxsZXItc2F2ZWQgZmxvYXRpbmcgcG9pbnQgcmVn aXN0ZXJzIGluIGNhc2Ugb2YKKwkgICAgIC1tZmxvYXQtYWJpPWhhcmQuICBG b3IgLW1mbG9hdC1hYmk9c29mdGZwIHdlIHdpbGwgYmUgdXNpbmcgdGhlCisJ ICAgICBsYXp5IHN0b3JlIGFuZCBsb2FkcyB3aGljaCBjbGVhciBib3RoIGNh bGxlci0gYW5kIGNhbGxlZS1zYXZlZAorCSAgICAgcmVnaXN0ZXJzLiAgKi8K KwkgIGlmIChUQVJHRVRfSEFSRF9GTE9BVF9BQkkpCisJICAgIHsKKwkgICAg ICBmbG9hdF9tYXNrID0gKDFMTCA8PCAoRDdfVkZQX1JFR05VTSArIDEpKSAt IDE7CisJICAgICAgZmxvYXRfbWFzayAmPSB+KCgxTEwgPDwgRklSU1RfVkZQ X1JFR05VTSkgLSAxKTsKKwkgICAgICB0b19jbGVhcl9tYXNrIHw9IGZsb2F0 X21hc2s7CisJICAgICAgbWF4cmVnbm8gPSBEN19WRlBfUkVHTlVNOworCSAg ICB9CisKKwkgIC8qIE1ha2Ugc3VyZSB0aGUgcmVnaXN0ZXIgdXNlZCB0byBo b2xkIHRoZSBmdW5jdGlvbiBhZGRyZXNzIGlzIG5vdAorCSAgICAgY2xlYXJl ZC4gICovCisJICBhZGRyZXNzID0gUlRWRUNfRUxUIChYVkVDICh1bnNwZWMs IDApLCAwKTsKKwkgIGdjY19hc3NlcnQgKE1FTV9QIChhZGRyZXNzKSk7CisJ ICBnY2NfYXNzZXJ0IChSRUdfUCAoWEVYUCAoYWRkcmVzcywgMCkpKTsKKwkg IHRvX2NsZWFyX21hc2sgJj0gfigxTEwgPDwgUkVHTk8gKFhFWFAgKGFkZHJl c3MsIDApKSk7CisKKwkgIC8qIFNldCBiYXNpYyBibG9jayBvZiBjYWxsIGlu c24gc28gdGhhdCBkZiByZXNjYW4gaXMgcGVyZm9ybWVkIG9uCisJICAgICBp bnNucyBpbnNlcnRlZCBoZXJlLiAgKi8KKwkgIHNldF9ibG9ja19mb3JfaW5z biAoaW5zbiwgYmIpOworCSAgZGZfc2V0X2ZsYWdzIChERl9ERUZFUl9JTlNO X1JFU0NBTik7CisJICBzdGFydF9zZXF1ZW5jZSAoKTsKKworCSAgLyogTWFr ZSBzdXJlIHRoZSBzY2hlZHVsZXIgZG9lc24ndCBzY2hlZHVsZSBvdGhlciBp bnNucyBiZXlvbmQKKwkgICAgIGhlcmUuICAqLworCSAgZW1pdF9pbnNuIChn ZW5fYmxvY2thZ2UgKCkpOworCisJICAvKiBXYWxrIHRocm91Z2ggYWxsIGFy Z3VtZW50cyBhbmQgY2xlYXIgcmVnaXN0ZXJzIGFwcHJvcHJpYXRlbHkuCisJ ICAqLworCSAgZm50eXBlID0gVFJFRV9UWVBFIChNRU1fRVhQUiAoYWRkcmVz cykpOworCSAgYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzICgmYXJnc19zb19m YXJfdiwgZm50eXBlLCBOVUxMX1JUWCwKKwkJCQkgICAgTlVMTF9UUkVFKTsK KwkgIGFyZ3Nfc29fZmFyID0gcGFja19jdW11bGF0aXZlX2FyZ3MgKCZhcmdz X3NvX2Zhcl92KTsKKwkgIEZPUkVBQ0hfRlVOQ1RJT05fQVJHUyAoZm50eXBl LCBhcmdfdHlwZSwgYXJnc19pdGVyKQorCSAgICB7CisJICAgICAgcnR4IGFy Z19ydHg7CisJICAgICAgbWFjaGluZV9tb2RlIGFyZ19tb2RlID0gVFlQRV9N T0RFIChhcmdfdHlwZSk7CisKKwkgICAgICBpZiAoVk9JRF9UWVBFX1AgKGFy Z190eXBlKSkKKwkJY29udGludWU7CisKKwkgICAgICBpZiAoIWZpcnN0X3Bh cmFtKQorCQlhcm1fZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGFyZ3Nfc29fZmFy LCBhcmdfbW9kZSwgYXJnX3R5cGUsCisJCQkJCSAgdHJ1ZSk7CisKKwkgICAg ICBhcmdfcnR4ID0gYXJtX2Z1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIGFy Z19tb2RlLCBhcmdfdHlwZSwKKwkJCQkJICB0cnVlKTsKKwkgICAgICBnY2Nf YXNzZXJ0IChSRUdfUCAoYXJnX3J0eCkpOworCSAgICAgIHRvX2NsZWFyX21h c2sgJj0KKwkJfmNvbXB1dGVfbm90X3RvX2NsZWFyX21hc2sgKGFyZ190eXBl LCBhcmdfcnR4LAorCQkJCQkgICAgICBSRUdOTyAoYXJnX3J0eCksCisJCQkJ CSAgICAgIHBhZGRpbmdfYml0c190b19jbGVhcl9wdHIpOworCisJICAgICAg Zmlyc3RfcGFyYW0gPSBmYWxzZTsKKwkgICAgfQorCisJICAvKiBDbGVhciBw YWRkaW5nIGJpdHMgd2hlcmUgbmVlZGVkLiAgKi8KKwkgIGNsZWFyZWRfcmVn ID0gWEVYUCAoYWRkcmVzcywgMCk7CisJICByZWcgPSBnZW5fcnR4X1JFRyAo U0ltb2RlLCBJUF9SRUdOVU0pOworCSAgdXNpbmdfcjQgPSBmYWxzZTsKKwkg IGZvciAocmVnbm8gPSAwOyByZWdubyA8IE5VTV9BUkdfUkVHUzsgcmVnbm8r KykKKwkgICAgeworCSAgICAgIGlmIChwYWRkaW5nX2JpdHNfdG9fY2xlYXJb cmVnbm9dID09IDApCisJCWNvbnRpbnVlOworCisJICAgICAgLyogSWYgdGhp cyBpcyBhIFRodW1iLTEgdGFyZ2V0IGNvcHkgdGhlIGFkZHJlc3Mgb2YgdGhl IGZ1bmN0aW9uCisJCSB3ZSBhcmUgY2FsbGluZyBmcm9tICdyNCcgaW50byAn aXAnIHN1Y2ggdGhhdCB3ZSBjYW4gdXNlIHI0IHRvCisJCSBjbGVhciB0aGUg dW51c2VkIGJpdHMgaW4gdGhlIGFyZ3VtZW50cy4gICovCisJICAgICAgaWYg KFRBUkdFVF9USFVNQjEgJiYgIXVzaW5nX3I0KQorCQl7CisJCSAgdXNpbmdf cjQgPSAgdHJ1ZTsKKwkJICByZWcgPSBjbGVhcmVkX3JlZzsKKwkJICBlbWl0 X21vdmVfaW5zbiAoZ2VuX3J0eF9SRUcgKFNJbW9kZSwgSVBfUkVHTlVNKSwK KwkJCQkJICByZWcpOworCQl9CisKKwkgICAgICB0bXAgPSBHRU5fSU5UICgo KCh+cGFkZGluZ19iaXRzX3RvX2NsZWFyW3JlZ25vXSkgPDwgMTZ1KSA+PiAx NnUpKTsKKwkgICAgICBlbWl0X21vdmVfaW5zbiAocmVnLCB0bXApOworCSAg ICAgIC8qIEFsc28gZmlsbCB0aGUgdG9wIGhhbGYgb2YgdGhlIG5lZ2F0ZWQK KwkJIHBhZGRpbmdfYml0c190b19jbGVhci4gICovCisJICAgICAgaWYgKCgo fnBhZGRpbmdfYml0c190b19jbGVhcltyZWdub10pID4+IDE2KSA+IDApCisJ CXsKKwkJICB0bXAgPSBHRU5fSU5UICgofnBhZGRpbmdfYml0c190b19jbGVh cltyZWdub10pID4+IDE2KTsKKwkJICBlbWl0X2luc24gKGdlbl9ydHhfU0VU IChnZW5fcnR4X1pFUk9fRVhUUkFDVCAoU0ltb2RlLCByZWcsCisJCQkJCQkJ CUdFTl9JTlQgKDE2KSwKKwkJCQkJCQkJR0VOX0lOVCAoMTYpKSwKKwkJCQkJ ICB0bXApKTsKKwkJfQorCisJICAgICAgZW1pdF9pbnNuIChnZW5fYW5kc2kz IChnZW5fcnR4X1JFRyAoU0ltb2RlLCByZWdubyksCisJCQkJICAgICBnZW5f cnR4X1JFRyAoU0ltb2RlLCByZWdubyksCisJCQkJICAgICByZWcpKTsKKwor CSAgICB9CisJICBpZiAodXNpbmdfcjQpCisJICAgIGVtaXRfbW92ZV9pbnNu IChjbGVhcmVkX3JlZywKKwkJCSAgICBnZW5fcnR4X1JFRyAoU0ltb2RlLCBJ UF9SRUdOVU0pKTsKKworCSAgLyogV2UgdXNlIHJpZ2h0IHNoaWZ0IGFuZCBs ZWZ0IHNoaWZ0IHRvIGNsZWFyIHRoZSBMU0Igb2YgdGhlIGFkZHJlc3MKKwkg ICAgIHdlIGp1bXAgdG8gaW5zdGVhZCBvZiB1c2luZyBiaWMsIHRvIGF2b2lk IGhhdmluZyB0byB1c2UgYW4gZXh0cmEKKwkgICAgIHJlZ2lzdGVyIG9uIFRo dW1iLTEuICAqLworCSAgdG1wID0gZ2VuX3J0eF9MU0hJRlRSVCAoU0ltb2Rl LCBjbGVhcmVkX3JlZywgY29uc3QxX3J0eCk7CisJICBlbWl0X2luc24gKGdl bl9ydHhfU0VUIChjbGVhcmVkX3JlZywgdG1wKSk7CisJICB0bXAgPSBnZW5f cnR4X0FTSElGVCAoU0ltb2RlLCBjbGVhcmVkX3JlZywgY29uc3QxX3J0eCk7 CisJICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChjbGVhcmVkX3JlZywgdG1w KSk7CisKKwkgIC8qIENsZWFyaW5nIGFsbCByZWdpc3RlcnMgdGhhdCBsZWFr IGJlZm9yZSBkb2luZyBhIG5vbi1zZWN1cmUKKwkgICAgIGNhbGwuICAqLwor CSAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDw9IG1heHJlZ25vOyByZWdubysr KQorCSAgICB7CisJICAgICAgaWYgKCEodG9fY2xlYXJfbWFzayAmICgxTEwg PDwgcmVnbm8pKSkKKwkJY29udGludWU7CisKKwkgICAgICAvKiBJZiByZWdu byBpcyBhbiBldmVuIHZmcCByZWdpc3RlciBhbmQgaXRzIHN1Y2Nlc3NvciBp cyBhbHNvIHRvCisJCSBiZSBjbGVhcmVkLCB1c2Ugdm1vdi4gICovCisJICAg ICAgaWYgKElTX1ZGUF9SRUdOVU0gKHJlZ25vKSkKKwkJeworCQkgIGlmIChU QVJHRVRfVkZQX0RPVUJMRQorCQkgICAgICAmJiBWRlBfUkVHTk9fT0tfRk9S X0RPVUJMRSAocmVnbm8pCisJCSAgICAgICYmIHRvX2NsZWFyX21hc2sgJiAo MUxMIDw8IChyZWdubyArIDEpKSkKKwkJICAgIGVtaXRfbW92ZV9pbnNuIChn ZW5fcnR4X1JFRyAoREZtb2RlLCByZWdubysrKSwKKwkJCQkgICAgQ09OU1Qx X1JUWCAoREZtb2RlKSk7CisJCSAgZWxzZQorCQkgICAgZW1pdF9tb3ZlX2lu c24gKGdlbl9ydHhfUkVHIChTRm1vZGUsIHJlZ25vKSwKKwkJCQkgICAgQ09O U1QxX1JUWCAoU0Ztb2RlKSk7CisJCX0KKwkgICAgICBlbHNlCisJCWVtaXRf bW92ZV9pbnNuIChnZW5fcnR4X1JFRyAoU0ltb2RlLCByZWdubyksIGNsZWFy ZWRfcmVnKTsKKwkgICAgfQorCisJICBzZXEgPSBnZXRfaW5zbnMgKCk7CisJ ICBlbmRfc2VxdWVuY2UgKCk7CisJICBlbWl0X2luc25fYmVmb3JlIChzZXEs IGluc24pOworCisJfQorICAgIH0KK30KKwogLyogUmV3cml0ZSBtb3ZlIGlu c24gaW50byBzdWJ0cmFjdCBvZiAwIGlmIHRoZSBjb25kaXRpb24gY29kZXMg d2lsbAogICAgYmUgdXNlZnVsIGluIG5leHQgY29uZGl0aW9uYWwganVtcCBp bnNuLiAgKi8KIApAQCAtMTgxNTAsNiArMTgzNDEsOCBAQCBhcm1fcmVvcmcg KHZvaWQpCiAgIEhPU1RfV0lERV9JTlQgYWRkcmVzcyA9IDA7CiAgIE1maXgg KiBmaXg7CiAKKyAgaWYgKHVzZV9jbXNlKQorICAgIGNtc2Vfbm9uc2VjdXJl X2NhbGxfY2xlYXJfY2FsbGVyX3NhdmVkICgpOwogICBpZiAoVEFSR0VUX1RI VU1CMSkKICAgICB0aHVtYjFfcmVvcmcgKCk7CiAgIGVsc2UgaWYgKFRBUkdF VF9USFVNQjIpCkBAIC0xODUyMiw2ICsxODcxNSwyMyBAQCB2ZnBfZW1pdF9m c3RtZCAoaW50IGJhc2VfcmVnLCBpbnQgY291bnQpCiAgIHJldHVybiBjb3Vu dCAqIDg7CiB9CiAKKy8qIFJldHVybnMgdHJ1ZSBpZiAtbWNtc2UgaGFzIGJl ZW4gcGFzc2VkIGFuZCB0aGUgZnVuY3Rpb24gcG9pbnRlZCB0byBieSAnYWRk cicKKyAgIGhhcyB0aGUgY21zZV9ub25zZWN1cmVfY2FsbCBhdHRyaWJ1dGUg YW5kIHJldHVybnMgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KKworYm9vbAorZGV0 ZWN0X2Ntc2Vfbm9uc2VjdXJlX2NhbGwgKHRyZWUgYWRkcikKK3sKKyAgaWYg KCFhZGRyKQorICAgIHJldHVybiBGQUxTRTsKKworICB0cmVlIGZudHlwZSA9 IFRSRUVfVFlQRSAoYWRkcik7CisgIGlmICh1c2VfY21zZSAmJiBsb29rdXBf YXR0cmlidXRlICgiY21zZV9ub25zZWN1cmVfY2FsbCIsCisJCQkJICAgIFRZ UEVfQVRUUklCVVRFUyAoZm50eXBlKSkpCisgICAgcmV0dXJuIFRSVUU7Cisg IHJldHVybiBGQUxTRTsKK30KKworCiAvKiBFbWl0IGEgY2FsbCBpbnN0cnVj dGlvbiB3aXRoIHBhdHRlcm4gUEFULiAgQUREUiBpcyB0aGUgYWRkcmVzcyBv ZgogICAgdGhlIGNhbGwgdGFyZ2V0LiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hcm0vYXJtLm1kIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLm1kCmlu ZGV4IDgzOTNmNjViY2Y0YzljM2U2MWI5MWU1YWRjZDVmNTlmZjdjNmVjM2Yu LjNlNjVhNDNkMzlmYjIwMDYxZWU1MzFkNThmZDIxZmJiYzljZDFiZGUgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2FybS5tZAorKysgYi9nY2MvY29u ZmlnL2FybS9hcm0ubWQKQEAgLTgwMjQsNiArODAyNCw3IEBACiAgICIKICAg ewogICAgIHJ0eCBjYWxsZWUsIHBhdDsKKyAgICB0cmVlIGFkZHIgPSBNRU1f RVhQUiAob3BlcmFuZHNbMF0pOwogICAgIAogICAgIC8qIEluIGFuIHVudHlw ZWQgY2FsbCwgd2UgY2FuIGdldCBOVUxMIGZvciBvcGVyYW5kIDIuICAqLwog ICAgIGlmIChvcGVyYW5kc1syXSA9PSBOVUxMX1JUWCkKQEAgLTgwMzgsOCAr ODAzOSwxNyBAQAogCTogIVJFR19QIChjYWxsZWUpKQogICAgICAgWEVYUCAo b3BlcmFuZHNbMF0sIDApID0gZm9yY2VfcmVnIChQbW9kZSwgY2FsbGVlKTsK IAotICAgIHBhdCA9IGdlbl9jYWxsX2ludGVybmFsIChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKLSAgICBhcm1fZW1pdF9jYWxs X2luc24gKHBhdCwgWEVYUCAob3BlcmFuZHNbMF0sIDApLCBmYWxzZSk7Cisg ICAgaWYgKGRldGVjdF9jbXNlX25vbnNlY3VyZV9jYWxsIChhZGRyKSkKKyAg ICAgIHsKKwlwYXQgPSBnZW5fbm9uc2VjdXJlX2NhbGxfaW50ZXJuYWwgKG9w ZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKKwkJCQkJICAgb3BlcmFuZHNbMl0p OworCWVtaXRfY2FsbF9pbnNuIChwYXQpOworICAgICAgfQorICAgIGVsc2UK KyAgICAgIHsKKwlwYXQgPSBnZW5fY2FsbF9pbnRlcm5hbCAob3BlcmFuZHNb MF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7CisJYXJtX2VtaXRfY2Fs bF9pbnNuIChwYXQsIFhFWFAgKG9wZXJhbmRzWzBdLCAwKSwgZmFsc2UpOwor ICAgICAgfQogICAgIERPTkU7CiAgIH0iCiApCkBAIC04MDUwLDYgKzgwNjAs MjQgQEAKIAkgICAgICAodXNlIChtYXRjaF9vcGVyYW5kIDIgIiIgIiIpKQog CSAgICAgIChjbG9iYmVyIChyZWc6U0kgTFJfUkVHTlVNKSldKV0pCiAKKyhk ZWZpbmVfZXhwYW5kICJub25zZWN1cmVfY2FsbF9pbnRlcm5hbCIKKyAgWyhw YXJhbGxlbCBbKGNhbGwgKHVuc3BlYzpTSSBbKG1hdGNoX29wZXJhbmQgMCAi bWVtb3J5X29wZXJhbmQiICIiKV0KKwkJCSAgICAgICBVTlNQRUNfTk9OU0VD VVJFX01FTSkKKwkJICAgIChtYXRjaF9vcGVyYW5kIDEgImdlbmVyYWxfb3Bl cmFuZCIgIiIpKQorCSAgICAgICh1c2UgKG1hdGNoX29wZXJhbmQgMiAiIiAi IikpCisJICAgICAgKGNsb2JiZXIgKHJlZzpTSSBMUl9SRUdOVU0pKQorCSAg ICAgIChjbG9iYmVyIChyZWc6U0kgNCkpXSldCisgICJ1c2VfY21zZSIKKyAg IgorICB7CisgICAgcnR4IHRtcDsKKyAgICB0bXAgPSBjb3B5X3RvX3N1Z2dl c3RlZF9yZWcgKFhFWFAgKG9wZXJhbmRzWzBdLCAwKSwKKwkJCQkgZ2VuX3J0 eF9SRUcgKFNJbW9kZSwgNCksCisJCQkJIFNJbW9kZSk7CisKKyAgICBvcGVy YW5kc1swXSA9IHJlcGxhY2VfZXF1aXZfYWRkcmVzcyAob3BlcmFuZHNbMF0s IHRtcCk7CisgIH0iKQorCiAoZGVmaW5lX2luc24gIipjYWxsX3JlZ19hcm12 NSIKICAgWyhjYWxsIChtZW06U0kgKG1hdGNoX29wZXJhbmQ6U0kgMCAic19y ZWdpc3Rlcl9vcGVyYW5kIiAiciIpKQogICAgICAgICAgKG1hdGNoX29wZXJh bmQgMSAiIiAiIikpCkBAIC04MDg1LDYgKzgxMTMsNyBAQAogICAiCiAgIHsK ICAgICBydHggcGF0LCBjYWxsZWU7CisgICAgdHJlZSBhZGRyID0gTUVNX0VY UFIgKG9wZXJhbmRzWzFdKTsKICAgICAKICAgICAvKiBJbiBhbiB1bnR5cGVk IGNhbGwsIHdlIGNhbiBnZXQgTlVMTCBmb3Igb3BlcmFuZCAyLiAgKi8KICAg ICBpZiAob3BlcmFuZHNbM10gPT0gMCkKQEAgLTgwOTksOSArODEyOCwxOCBA QAogCTogIVJFR19QIChjYWxsZWUpKQogICAgICAgWEVYUCAob3BlcmFuZHNb MV0sIDApID0gZm9yY2VfcmVnIChQbW9kZSwgY2FsbGVlKTsKIAotICAgIHBh dCA9IGdlbl9jYWxsX3ZhbHVlX2ludGVybmFsIChvcGVyYW5kc1swXSwgb3Bl cmFuZHNbMV0sCi0JCQkJICAgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdKTsK LSAgICBhcm1fZW1pdF9jYWxsX2luc24gKHBhdCwgWEVYUCAob3BlcmFuZHNb MV0sIDApLCBmYWxzZSk7CisgICAgaWYgKGRldGVjdF9jbXNlX25vbnNlY3Vy ZV9jYWxsIChhZGRyKSkKKyAgICAgIHsKKwlwYXQgPSBnZW5fbm9uc2VjdXJl X2NhbGxfdmFsdWVfaW50ZXJuYWwgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sx XSwKKwkJCQkJCSBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pOworCWVtaXRf Y2FsbF9pbnNuIChwYXQpOworICAgICAgfQorICAgIGVsc2UKKyAgICAgIHsK KwlwYXQgPSBnZW5fY2FsbF92YWx1ZV9pbnRlcm5hbCAob3BlcmFuZHNbMF0s IG9wZXJhbmRzWzFdLAorCQkJCSAgICAgICBvcGVyYW5kc1syXSwgb3BlcmFu ZHNbM10pOworCWFybV9lbWl0X2NhbGxfaW5zbiAocGF0LCBYRVhQIChvcGVy YW5kc1sxXSwgMCksIGZhbHNlKTsKKyAgICAgIH0KICAgICBET05FOwogICB9 IgogKQpAQCAtODExMyw2ICs4MTUxLDI1IEBACiAJICAgICAgKHVzZSAobWF0 Y2hfb3BlcmFuZCAzICIiICIiKSkKIAkgICAgICAoY2xvYmJlciAocmVnOlNJ IExSX1JFR05VTSkpXSldKQogCisoZGVmaW5lX2V4cGFuZCAibm9uc2VjdXJl X2NhbGxfdmFsdWVfaW50ZXJuYWwiCisgIFsocGFyYWxsZWwgWyhzZXQgKG1h dGNoX29wZXJhbmQgICAgICAgMCAiIiAiIikKKwkJICAgKGNhbGwgKHVuc3Bl YzpTSSBbKG1hdGNoX29wZXJhbmQgMSAibWVtb3J5X29wZXJhbmQiICIiKV0K KwkJCQkgICAgVU5TUEVDX05PTlNFQ1VSRV9NRU0pCisJCQkgKG1hdGNoX29w ZXJhbmQgMiAiZ2VuZXJhbF9vcGVyYW5kIiAiIikpKQorCSAgICAgICh1c2Ug KG1hdGNoX29wZXJhbmQgMyAiIiAiIikpCisJICAgICAgKGNsb2JiZXIgKHJl ZzpTSSBMUl9SRUdOVU0pKQorCSAgICAgIChjbG9iYmVyIChyZWc6U0kgNCkp XSldCisgICJ1c2VfY21zZSIKKyAgIgorICB7CisgICAgcnR4IHRtcDsKKyAg ICB0bXAgPSBjb3B5X3RvX3N1Z2dlc3RlZF9yZWcgKFhFWFAgKG9wZXJhbmRz WzFdLCAwKSwKKwkJCQkgZ2VuX3J0eF9SRUcgKFNJbW9kZSwgNCksCisJCQkJ IFNJbW9kZSk7CisKKyAgICBvcGVyYW5kc1sxXSA9IHJlcGxhY2VfZXF1aXZf YWRkcmVzcyAob3BlcmFuZHNbMV0sIHRtcCk7CisgIH0iKQorCiAoZGVmaW5l X2luc24gIipjYWxsX3ZhbHVlX3JlZ19hcm12NSIKICAgWyhzZXQgKG1hdGNo X29wZXJhbmQgMCAiIiAiIikKICAgICAgICAgKGNhbGwgKG1lbTpTSSAobWF0 Y2hfb3BlcmFuZDpTSSAxICJzX3JlZ2lzdGVyX29wZXJhbmQiICJyIikpCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS90aHVtYjEubWQgYi9nY2MvY29u ZmlnL2FybS90aHVtYjEubWQKaW5kZXggNDMzZmM3OWFlNTgxMGE0ZDNlYjQ1 ZDFiYTgwODcyYTM5ZTE1N2UxNC4uNjNhNDAwZmJmZDgwMTVjYmQ1YTcwMjUy ZTI0YmVhY2RlNGE1MzU0ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0v dGh1bWIxLm1kCisrKyBiL2djYy9jb25maWcvYXJtL3RodW1iMS5tZApAQCAt MTcwNSw2ICsxNzA1LDE5IEBACiAgICAoc2V0X2F0dHIgInR5cGUiICJjYWxs IildCiApCiAKKyhkZWZpbmVfaW5zbiAiKm5vbnNlY3VyZV9jYWxsX3JlZ190 aHVtYjFfdjUiCisgIFsoY2FsbCAodW5zcGVjOlNJIFsobWVtOlNJIChtYXRj aF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJsKnIiKSldCisJ CSAgICBVTlNQRUNfTk9OU0VDVVJFX01FTSkKKwkgKG1hdGNoX29wZXJhbmQg MSAiIiAiIikpCisgICAodXNlIChtYXRjaF9vcGVyYW5kIDIgIiIgIiIpKQor ICAgKGNsb2JiZXIgKHJlZzpTSSBMUl9SRUdOVU0pKQorICAgKGNsb2JiZXIg KG1hdGNoX2R1cCAwKSldCisgICJUQVJHRVRfVEhVTUIxICYmIHVzZV9jbXNl ICYmICFTSUJMSU5HX0NBTExfUCAoaW5zbikiCisgICJibFxcdF9fZ251X2Nt c2Vfbm9uc2VjdXJlX2NhbGwiCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQi KQorICAgKHNldF9hdHRyICJ0eXBlIiAiY2FsbCIpXQorKQorCiAoZGVmaW5l X2luc24gIipjYWxsX3JlZ190aHVtYjEiCiAgIFsoY2FsbCAobWVtOlNJICht YXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJsKnIiKSkK IAkgKG1hdGNoX29wZXJhbmQgMSAiIiAiIikpCkBAIC0xNzM3LDYgKzE3NTAs MjEgQEAKICAgIChzZXRfYXR0ciAidHlwZSIgImNhbGwiKV0KICkKIAorKGRl ZmluZV9pbnNuICIqbm9uc2VjdXJlX2NhbGxfdmFsdWVfcmVnX3RodW1iMV92 NSIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQgMCAiIiAiIikKKwkoY2FsbCAo dW5zcGVjOlNJCisJICAgICAgIFsobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJ IDEgInJlZ2lzdGVyX29wZXJhbmQiICJsKnIiKSldCisJICAgICAgIFVOU1BF Q19OT05TRUNVUkVfTUVNKQorCSAgICAgIChtYXRjaF9vcGVyYW5kIDIgIiIg IiIpKSkKKyAgICh1c2UgKG1hdGNoX29wZXJhbmQgMyAiIiAiIikpCisgICAo Y2xvYmJlciAocmVnOlNJIExSX1JFR05VTSkpCisgICAoY2xvYmJlciAobWF0 Y2hfZHVwIDEpKV0KKyAgIlRBUkdFVF9USFVNQjEgJiYgdXNlX2Ntc2UiCisg ICJibFxcdF9fZ251X2Ntc2Vfbm9uc2VjdXJlX2NhbGwiCisgIFsoc2V0X2F0 dHIgImxlbmd0aCIgIjQiKQorICAgKHNldF9hdHRyICJ0eXBlIiAiY2FsbCIp XQorKQorCiAoZGVmaW5lX2luc24gIipjYWxsX3ZhbHVlX3JlZ190aHVtYjEi CiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kIDAgIiIgIiIpCiAJKGNhbGwgKG1l bTpTSSAobWF0Y2hfb3BlcmFuZDpTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi bCpyIikpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS90aHVtYjIubWQg Yi9nY2MvY29uZmlnL2FybS90aHVtYjIubWQKaW5kZXggZjUwMzNlZjgwMmMw ODViZDBjZTQ3OWJjNzAyNmRiOTZkOWUyNTYzMi4uODYxOGRjMzFiNDRmMmE3 ZjBlM2IwY2M2MGZkMjI2ODU5ZTc1NDVhZSAxMDA2NDQKLS0tIGEvZ2NjL2Nv bmZpZy9hcm0vdGh1bWIyLm1kCisrKyBiL2djYy9jb25maWcvYXJtL3RodW1i Mi5tZApAQCAtNTgwLDYgKzU4MCwxOSBAQAogICBbKHNldF9hdHRyICJ0eXBl IiAiY2FsbCIpXQogKQogCisoZGVmaW5lX2luc24gIipub25zZWN1cmVfY2Fs bF9yZWdfdGh1bWIyIgorICBbKGNhbGwgKHVuc3BlYzpTSSBbKG1lbTpTSSAo bWF0Y2hfb3BlcmFuZDpTSSAwICJzX3JlZ2lzdGVyX29wZXJhbmQiICJyIikp XQorCQkgICAgVU5TUEVDX05PTlNFQ1VSRV9NRU0pCisJIChtYXRjaF9vcGVy YW5kIDEgIiIgIiIpKQorICAgKHVzZSAobWF0Y2hfb3BlcmFuZCAyICIiICIi KSkKKyAgIChjbG9iYmVyIChyZWc6U0kgTFJfUkVHTlVNKSkKKyAgIChjbG9i YmVyIChtYXRjaF9kdXAgMCkpXQorICAiVEFSR0VUX1RIVU1CMiAmJiB1c2Vf Y21zZSIKKyAgImJsXFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIKKyAg WyhzZXRfYXR0ciAibGVuZ3RoIiAiNCIpCisgICAoc2V0X2F0dHIgInR5cGUi ICJjYWxsIildCispCisKIChkZWZpbmVfaW5zbiAiKmNhbGxfdmFsdWVfcmVn X3RodW1iMiIKICAgWyhzZXQgKG1hdGNoX29wZXJhbmQgMCAiIiAiIikKIAko Y2FsbCAobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29w ZXJhbmQiICJsKnIiKSkKQEAgLTU5MSw2ICs2MDQsMjEgQEAKICAgWyhzZXRf YXR0ciAidHlwZSIgImNhbGwiKV0KICkKIAorKGRlZmluZV9pbnNuICIqbm9u c2VjdXJlX2NhbGxfdmFsdWVfcmVnX3RodW1iMiIKKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQgMCAiIiAiIikKKwkoY2FsbAorCSAodW5zcGVjOlNJIFsobWVt OlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJs KnIiKSldCisJCSAgICBVTlNQRUNfTk9OU0VDVVJFX01FTSkKKwkgKG1hdGNo X29wZXJhbmQgMiAiIiAiIikpKQorICAgKHVzZSAobWF0Y2hfb3BlcmFuZCAz ICIiICIiKSkKKyAgIChjbG9iYmVyIChyZWc6U0kgTFJfUkVHTlVNKSkKKyAg IChjbG9iYmVyIChtYXRjaF9kdXAgMSkpXQorICAiVEFSR0VUX1RIVU1CMiAm JiB1c2VfY21zZSIKKyAgImJsXHRfX2dudV9jbXNlX25vbnNlY3VyZV9jYWxs IgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0IikKKyAgIChzZXRfYXR0ciAi dHlwZSIgImNhbGwiKV0KKykKKwogKGRlZmluZV9pbnNuICIqdGh1bWIyX2lu ZGlyZWN0X2p1bXAiCiAgIFsoc2V0IChwYykKIAkobWF0Y2hfb3BlcmFuZDpT SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAibCpyIikpXQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZCBiL2djYy9jb25maWcvYXJtL3Vu c3BlY3MubWQKaW5kZXggYmVlODc5NWYwMDdhY2NjNjIzYzgyYjczYzQxYTg2 MTllYmMyOTIwOS4uMWFhMzllOGUwYjlkZGYxN2JiNTM1YzRkODI5NTllNTY5 ZDNjOWZkNSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5t ZAorKysgYi9nY2MvY29uZmlnL2FybS91bnNwZWNzLm1kCkBAIC04NCw2ICs4 NCw4IEBACiAgIFVOU1BFQ19WUklOVEEgICAgICAgICA7IFJlcHJlc2VudCBh IGZsb2F0IHRvIGludGVncmFsIGZsb2F0IHJvdW5kaW5nCiAgICAgICAgICAg ICAgICAgICAgICAgICA7IHRvd2FyZHMgbmVhcmVzdCwgdGllcyBhd2F5IGZy b20gemVyby4KICAgVU5TUEVDX1BST0JFX1NUQUNLICAgIDsgUHJvYmUgc3Rh Y2sgbWVtb3J5IHJlZmVyZW5jZQorICBVTlNQRUNfTk9OU0VDVVJFX01FTQk7 IFJlcHJlc2VudCBub24tc2VjdXJlIG1lbW9yeSBpbiBBUk12OC1NIHdpdGgK KwkJCTsgc2VjdXJpdHkgZXh0ZW5zaW9uCiBdKQogCiAoZGVmaW5lX2NfZW51 bSAidW5zcGVjIiBbCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYXJtL2Ntc2UvYmFzZWxpbmUvYml0ZmllbGQtNC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL2JpdGZpZWxk LTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmMxMzg2YzA2ZWRiZGI1 OGU3NmZhNWU2MTJjOTE4MDEwYzUwN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL2Jp dGZpZWxkLTQuYwpAQCAtMCwwICsxLDU3IEBACisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UiIH0gKi8KKwordHlw ZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hhciBhOworICB1bnNpZ25l ZCBpbnQgYjo1OworICB1bnNpZ25lZCBpbnQgYzoxMSwgOjAsIGQ6ODsKKyAg c3RydWN0IHsgdW5zaWduZWQgaW50IGVlOjI7IH0gZTsKK30gdGVzdF9zdDsK KwordHlwZWRlZiB1bmlvbgoreworICB0ZXN0X3N0IHN0OworICBzdHJ1Y3QK KyAgICB7CisgICAgICB1bnNpZ25lZCBpbnQgdjE7CisgICAgICB1bnNpZ25l ZCBpbnQgdjI7CisgICAgICB1bnNpZ25lZCBpbnQgdjM7CisgICAgICB1bnNp Z25lZCBpbnQgdjQ7CisgICAgfXZhbHVlczsKK30gcmVhZF9zdDsKKworCit0 eXBlZGVmIHZvaWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2Nh bGwpKSAoKmZvb19ucykgKHRlc3Rfc3QpOworCitleHRlcm4gdm9pZCBmb28g KHRlc3Rfc3Qgc3QpOworCitpbnQKK21haW4gKHZvaWQpCit7CisgIHJlYWRf c3QgcjsKKyAgZm9vX25zIGY7CisKKyAgZiA9IChmb29fbnMpIDB4MjAwMDAw OworICByLnZhbHVlcy52MSA9IDB4RkZGRkZGRkY7CisgIHIudmFsdWVzLnYy ID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjMgPSAweEZGRkZGRkZGOwor ICByLnZhbHVlcy52NCA9IDB4RkZGRkZGRkY7CisKKyAgZiAoci5zdCk7Cisg IHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgIm1vdlx0aXAsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAibW92d1x0cjQsICM2NTUzNSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdHI0LCAyNTUiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJhbmRzXHRyMCwg cjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJt b3ZzXHRyNCwgIzI1NSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImFuZHNcdHIxLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnNcdHI0LCAjMyIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZHNcdHIyLCByNCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjQs IGlwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyMywgcjQiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVf Y21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvYmFzZWxpbmUvYml0Zmll bGQtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jh c2VsaW5lL2JpdGZpZWxkLTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k NTFjZTJkNDJjMDUxYWVkYThiMDZhZDk3MDg2ZjI1NjNhNWZjNDdkCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9j bXNlL2Jhc2VsaW5lL2JpdGZpZWxkLTUuYwpAQCAtMCwwICsxLDUzIEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWNt c2UiIH0gKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hh cgkgIGE7CisgIHVuc2lnbmVkIHNob3J0ICBiIDo1OworICB1bnNpZ25lZCBj aGFyCSAgYzsKKyAgdW5zaWduZWQgc2hvcnQgIGQgOjExOworfSB0ZXN0X3N0 OworCit0eXBlZGVmIHVuaW9uCit7CisgIHRlc3Rfc3Qgc3Q7CisgIHN0cnVj dAorICAgIHsKKyAgICAgIHVuc2lnbmVkIGludCB2MTsKKyAgICAgIHVuc2ln bmVkIGludCB2MjsKKyAgICAgIHVuc2lnbmVkIGludCB2MzsKKyAgICAgIHVu c2lnbmVkIGludCB2NDsKKyAgICB9dmFsdWVzOworfSByZWFkX3N0OworCisK K3R5cGVkZWYgdm9pZCBfX2F0dHJpYnV0ZV9fICgoY21zZV9ub25zZWN1cmVf Y2FsbCkpICgqZm9vX25zKSAodGVzdF9zdCk7CisKK2ludAorbWFpbiAodm9p ZCkKK3sKKyAgcmVhZF9zdCByOworICBmb29fbnMgZjsKKworICBmID0gKGZv b19ucykgMHgyMDAwMDA7CisgIHIudmFsdWVzLnYxID0gMHhGRkZGRkZGRjsK KyAgci52YWx1ZXMudjIgPSAweEZGRkZGRkZGOworCisgIGYgKHIuc3QpOwor ICByZXR1cm4gMDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJtb3ZcdGlwLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIm1vdndcdHI0LCAjODE5MSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdHI0LCAyNTUiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJhbmRzXHRyMCwg cjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJt b3Z3XHRyNCwgIzIwNDciIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJhbmRzXHRyMSwgcjQiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHI0LCBpcCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzcnNcdHI0LCByNCwgIzEi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc2xz XHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAibW92c1x0cjIsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibW92c1x0cjMsIHI0IiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYmxcdF9fZ251X2Ntc2Vfbm9u c2VjdXJlX2NhbGwiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvYmFzZWxpbmUvYml0ZmllbGQtNi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5l L2JpdGZpZWxkLTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2U5MTA0 YjU0NmE3NjkzZmNiMjM5OTYyMmU4MjhiMTE5N2VhYzFiCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jh c2VsaW5lL2JpdGZpZWxkLTYuYwpAQCAtMCwwICsxLDYzIEBACisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UiIH0g Ki8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hhciBhOwor ICB1bnNpZ25lZCBpbnQJYiA6IDM7CisgIHVuc2lnbmVkIGludAljIDogMTQ7 CisgIHVuc2lnbmVkIGludAlkIDogMTsKKyAgc3RydWN0IHsKKyAgICAgIHVu c2lnbmVkIGludCAgICBlZSAgOiAyOworICAgICAgdW5zaWduZWQgc2hvcnQg IGZmICA6IDE1OworICB9IGU7CisgIHVuc2lnbmVkIGNoYXIJZyA6IDE7Cisg IHVuc2lnbmVkIGNoYXIJICA6IDQ7CisgIHVuc2lnbmVkIGNoYXIJaCA6IDM7 Cit9IHRlc3Rfc3Q7CisKK3R5cGVkZWYgdW5pb24KK3sKKyAgdGVzdF9zdCBz dDsKKyAgc3RydWN0CisgICAgeworICAgICAgdW5zaWduZWQgaW50IHYxOwor ICAgICAgdW5zaWduZWQgaW50IHYyOworICAgICAgdW5zaWduZWQgaW50IHYz OworICAgICAgdW5zaWduZWQgaW50IHY0OworICAgIH12YWx1ZXM7Cit9IHJl YWRfc3Q7CisKKwordHlwZWRlZiB2b2lkIF9fYXR0cmlidXRlX18gKChjbXNl X25vbnNlY3VyZV9jYWxsKSkgKCpmb29fbnMpICh0ZXN0X3N0KTsKKworaW50 CittYWluICh2b2lkKQoreworICByZWFkX3N0IHI7CisgIGZvb19ucyBmOwor CisgIGYgPSAoZm9vX25zKSAweDIwMDAwMDsKKyAgci52YWx1ZXMudjEgPSAw eEZGRkZGRkZGOworICByLnZhbHVlcy52MiA9IDB4RkZGRkZGRkY7CisgIHIu dmFsdWVzLnYzID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjQgPSAweEZG RkZGRkZGOworCisgIGYgKHIuc3QpOworICByZXR1cm4gMDsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdGlwLCByNCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdndcdHI0 LCAjNjU1MzUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJtb3Z0XHRyNCwgMTAyMyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgImFuZHNcdHIwLCByNCIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnNcdHI0LCAjMyIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdHI0LCAz Mjc2NyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg ImFuZHNcdHIxLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdnNcdHI0LCAjMjU1IiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kc1x0cjIsIHI0IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyNCwgaXAiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc3JzXHRy NCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnNcdHIzLCByNCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25v bnNlY3VyZV9jYWxsIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNlbGluZS9iaXRmaWVsZC03LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvYmFzZWxpbmUv Yml0ZmllbGQtNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkODk0MWJi ZmVlYmQ1OTc0NGM0M2YxMGM4NDI4MTZiMzZlYzk5MTUKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvYmFz ZWxpbmUvYml0ZmllbGQtNy5jCkBAIC0wLDAgKzEsNTQgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSIgfSAq LworCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFyCSAgYTsK KyAgdW5zaWduZWQgc2hvcnQgIGIgOjU7CisgIHVuc2lnbmVkIGNoYXIJICBj OworICB1bnNpZ25lZCBzaG9ydCAgZCA6MTE7Cit9IHRlc3Rfc3Q7CisKK3R5 cGVkZWYgdW5pb24KK3sKKyAgdGVzdF9zdCBzdDsKKyAgc3RydWN0CisgICAg eworICAgICAgdW5zaWduZWQgaW50IHYxOworICAgICAgdW5zaWduZWQgaW50 IHYyOworICAgICAgdW5zaWduZWQgaW50IHYzOworICAgICAgdW5zaWduZWQg aW50IHY0OworICAgIH12YWx1ZXM7Cit9IHJlYWRfc3Q7CisKKwordHlwZWRl ZiB2b2lkIF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9jYWxsKSkg KCpmb29fbnMpICh0ZXN0X3N0KTsKKworaW50CittYWluICh2b2lkKQorewor ICByZWFkX3N0IHI7CisgIGZvb19ucyBmOworCisgIGYgPSAoZm9vX25zKSAw eDIwMDAwMDsKKyAgci52YWx1ZXMudjEgPSAweEZGRkZGRkZGOworICByLnZh bHVlcy52MiA9IDB4RkZGRkZGRkY7CisKKyAgZiAoci5zdCk7CisgIHJldHVy biAwOworfQorCisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bW92XHRpcCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJtb3Z3XHRyNCwgIzgxOTEiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z0XHRyNCwgMjU1IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kc1x0cjAsIHI0IiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92d1x0 cjQsICMyMDQ3IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAiYW5kc1x0cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92XHRyNCwgaXAiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQs IHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgIm1vdnNcdHIyLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIm1vdnNcdHIzLCByNCIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3Vy ZV9jYWxsIiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL2JpdGZpZWxkLTguYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNlbGluZS9iaXRm aWVsZC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZmYmI3MThkMzRk NWJiOGYxMGUxZjNjMDUwNWM3ZGMzOTNjNjcwYwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNlbGlu ZS9iaXRmaWVsZC04LmMKQEAgLTAsMCArMSw1NyBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIiB9ICovCisK K3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIGNoYXIJICBhOworICB1 bnNpZ25lZCBpbnQJICAgIDowOworICB1bnNpZ25lZCBpbnQJICBiIDoxOwor ICB1bnNpZ25lZCBzaG9ydCAgICA6MDsKKyAgdW5zaWduZWQgc2hvcnQgIGM7 CisgIHVuc2lnbmVkIGludAkgICAgOjA7CisgIHVuc2lnbmVkIGludAkgIGQg OjIxOworfSB0ZXN0X3N0OworCit0eXBlZGVmIHVuaW9uCit7CisgIHRlc3Rf c3Qgc3Q7CisgIHN0cnVjdAorICAgIHsKKyAgICAgIHVuc2lnbmVkIGludCB2 MTsKKyAgICAgIHVuc2lnbmVkIGludCB2MjsKKyAgICAgIHVuc2lnbmVkIGlu dCB2MzsKKyAgICAgIHVuc2lnbmVkIGludCB2NDsKKyAgICB9dmFsdWVzOwor fSByZWFkX3N0OworCit0eXBlZGVmIHZvaWQgX19hdHRyaWJ1dGVfXyAoKGNt c2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmZvb19ucykgKHRlc3Rfc3QpOworCitp bnQKK21haW4gKHZvaWQpCit7CisgIHJlYWRfc3QgcjsKKyAgZm9vX25zIGY7 CisKKyAgZiA9IChmb29fbnMpIDB4MjAwMDAwOworICByLnZhbHVlcy52MSA9 IDB4RkZGRkZGRkY7CisgIHIudmFsdWVzLnYyID0gMHhGRkZGRkZGRjsKKyAg ci52YWx1ZXMudjMgPSAweEZGRkZGRkZGOworCisgIGYgKHIuc3QpOworICBy ZXR1cm4gMDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJtb3ZcdGlwLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdnNcdHI0LCAjMjU1IiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kc1x0cjAsIHI0IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92c1x0cjQsICMxIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92dFx0 cjQsIDY1NTM1IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAiYW5kc1x0cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92d1x0cjQsICM2NTUzNSIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdHI0LCAzMSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZHNcdHIy LCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Im1vdlx0cjQsIGlwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyMywg cjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJi bFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvYmFzZWxp bmUvYml0ZmllbGQtOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9jbXNlL2Jhc2VsaW5lL2JpdGZpZWxkLTkuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi44YTYxNDE4MjkyMzc4MjNiODczNGRlMDQ1YTU5MGExOTE3ZmE2 MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL2Jhc2VsaW5lL2JpdGZpZWxkLTkuYwpAQCAtMCwwICsx LDU2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItbWNtc2UiIH0gKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgY2hh ciBhOjM7Cit9IHRlc3Rfc3QzOworCit0eXBlZGVmIHN0cnVjdAoreworICBj aGFyIGE6MzsKK30gdGVzdF9zdDI7CisKK3R5cGVkZWYgc3RydWN0Cit7Cisg IHRlc3Rfc3QyIHN0MjsKKyAgdGVzdF9zdDMgc3QzOworfSB0ZXN0X3N0Owor Cit0eXBlZGVmIHVuaW9uCit7CisgIHRlc3Rfc3Qgc3Q7CisgIHN0cnVjdAor ICAgIHsKKyAgICAgIHVuc2lnbmVkIGludCB2MTsKKyAgICAgIHVuc2lnbmVk IGludCB2MjsKKyAgICAgIHVuc2lnbmVkIGludCB2MzsKKyAgICAgIHVuc2ln bmVkIGludCB2NDsKKyAgICB9dmFsdWVzOworfSByZWFkX3N0OworCit0eXBl ZGVmIHZvaWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwp KSAoKmZvb19ucykgKHRlc3Rfc3QpOworCitpbnQKK21haW4gKHZvaWQpCit7 CisgIHJlYWRfc3QgcjsKKyAgZm9vX25zIGY7CisKKyAgZiA9IChmb29fbnMp IDB4MjAwMDAwOworICByLnZhbHVlcy52MSA9IDB4RkZGRkZGRkY7CisKKyAg ZiAoci5zdCk7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIm1vdlx0aXAsIHI0IiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92d1x0cjQsICMxNzk5IiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kc1x0cjAs IHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bW92XHRyNCwgaXAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnNcdHIxLCBy NCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1v dnNcdHIyLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgIm1vdnNcdHIzLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3VyZV9jYWxs IiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hcm0vY21zZS9iYXNlbGluZS9iaXRmaWVsZC1hbmQtdW5pb24tMS5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL2Jp dGZpZWxkLWFuZC11bmlvbi0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u NjQyZjRlMDM0NmI1MTg2Yzc4NjQ1NzgwYjQ1ZmU5YzgzODg0OGQ0NQotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v Y21zZS9iYXNlbGluZS9iaXRmaWVsZC1hbmQtdW5pb24tMS5jCkBAIC0wLDAg KzEsOTYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1tY21zZSIgfSAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1 bnNpZ25lZCBzaG9ydCBhIDoxMTsKK30gdGVzdF9zdF80OworCit0eXBlZGVm IHVuaW9uCit7CisgIGNoYXIJICAgICAgYTsKKyAgdGVzdF9zdF80IHN0NDsK K310ZXN0X3VuXzI7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVk IGNoYXIJICBhOworICB1bnNpZ25lZCBpbnQJICAgIDowOworICB1bnNpZ25l ZCBpbnQJICBiIDoxOworICB1bnNpZ25lZCBzaG9ydCAgICA6MDsKKyAgdW5z aWduZWQgc2hvcnQgIGM7CisgIHVuc2lnbmVkIGludAkgICAgOjA7CisgIHVu c2lnbmVkIGludAkgIGQgOjIxOworfSB0ZXN0X3N0XzM7CisKK3R5cGVkZWYg c3RydWN0Cit7CisgIHVuc2lnbmVkIGNoYXIJICBhIDozOworICB1bnNpZ25l ZCBpbnQJICBiIDoxMzsKKyAgdGVzdF91bl8yCSAgdW4yOworfSB0ZXN0X3N0 XzI7CisKK3R5cGVkZWYgdW5pb24KK3sKKyAgdGVzdF9zdF8yIHN0MjsKKyAg dGVzdF9zdF8zIHN0MzsKK310ZXN0X3VuXzE7CisKK3R5cGVkZWYgc3RydWN0 Cit7CisgIHVuc2lnbmVkIGNoYXIJICBhIDoyOworICB1bnNpZ25lZCBjaGFy CSAgICA6MDsKKyAgdW5zaWduZWQgc2hvcnQgIGIgOjU7CisgIHVuc2lnbmVk IGNoYXIJICAgIDowOworICB1bnNpZ25lZCBjaGFyCSAgYyA6NDsKKyAgdGVz dF91bl8xCSAgdW4xOworfSB0ZXN0X3N0XzE7CisKK3R5cGVkZWYgdW5pb24K K3sKKyAgdGVzdF9zdF8xIHN0MTsKKyAgc3RydWN0CisgICAgeworICAgICAg dW5zaWduZWQgaW50IHYxOworICAgICAgdW5zaWduZWQgaW50IHYyOworICAg ICAgdW5zaWduZWQgaW50IHYzOworICAgICAgdW5zaWduZWQgaW50IHY0Owor ICAgIH12YWx1ZXM7Cit9IHJlYWRfc3RfMTsKKworCit0eXBlZGVmIHZvaWQg X19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmZvb19u cykgKHRlc3Rfc3RfMSk7CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgcmVh ZF9zdF8xIHI7CisgIGZvb19ucyBmOworCisgIGYgPSAoZm9vX25zKSAweDIw MDAwMDsKKyAgci52YWx1ZXMudjEgPSAweEZGRkZGRkZGOworICByLnZhbHVl cy52MiA9IDB4RkZGRkZGRkY7CisgIHIudmFsdWVzLnYzID0gMHhGRkZGRkZG RjsKKyAgci52YWx1ZXMudjQgPSAweEZGRkZGRkZGOworCisgIGYgKHIuc3Qx KTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAibW92XHRpcCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRyNCwgIzc5MzkiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z0XHRyNCwgMTUiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJhbmRzXHRy MCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJtb3Z3XHRyNCwgIzY1NTM1IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92dFx0cjQsIDIwNDciIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJhbmRzXHRyMSwgcjQiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyNCwg IzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJt b3Z0XHRyNCwgNjU1MzUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJhbmRzXHRyMiwgcjQiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRyNCwgIzY1NTM1IiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92dFx0cjQsIDMx IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5k c1x0cjMsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAibW92XHRyNCwgaXAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJsXHRf X2dudV9jbXNlX25vbnNlY3VyZV9jYWxsIiB9IH0gKi8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNlbGluZS9j bXNlLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2Uv YmFzZWxpbmUvY21zZS0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMw MDc0MDlhZDg4YjlkMjMxMmVjZTRkNTVmMzY5NTc4N2ExYWE1NjYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Nt c2UvYmFzZWxpbmUvY21zZS0xMS5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCBhcm1fYXJjaF92OG1fYmFzZV9vayB9ICovCisvKiB7IGRnLWFk ZC1vcHRpb25zIGFybV9hcmNoX3Y4bV9iYXNlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLW1jbXNlIiB9ICAqLworCitpbnQgX19hdHRyaWJ1dGVfXyAoKGNt c2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmJhcikgKGludCk7CisKK2ludAorZm9v IChpbnQgYSkKK3sKKyAgcmV0dXJuIGJhciAoYmFyIChhICsgMSkpOworfQor CisvKiBDaGVja3MgZm9yIHNhdmluZyBhbmQgY2xlYXJpbmcgcHJpb3IgdG8g ZnVuY3Rpb24gY2FsbC4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgImxzcnNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJsc2xzXHRyNCwgcjQsICMxIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92c1x0cjEsIHI0 IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92 c1x0cjIsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAibW92c1x0cjMsIHI0IiB9IH0gKi8KKworLyogTm93IHdlIGNoZWNr IHRoYXQgd2UgdXNlIHRoZSBjb3JyZWN0IGludHJpbnNpYyB0byBjYWxsLiAg Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYmxcdF9fZ251 X2Ntc2Vfbm9uc2VjdXJlX2NhbGwiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL2Ntc2Ut MTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNl bGluZS9jbXNlLTEzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJiOTMx YmU1OTEyYjQyMWY4NDI3NTM1ZGVkMzI5ODg4M2JlYzYzOQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9i YXNlbGluZS9jbXNlLTEzLmMKQEAgLTAsMCArMSwyNSBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFy Z2V0IGFybV9hcmNoX3Y4bV9iYXNlX29rIH0gKi8KKy8qIHsgZGctYWRkLW9w dGlvbnMgYXJtX2FyY2hfdjhtX2Jhc2UgfSAqLworLyogeyBkZy1vcHRpb25z ICItbWNtc2UiIH0gKi8KKworaW50IF9fYXR0cmlidXRlX18gKChjbXNlX25v bnNlY3VyZV9jYWxsKSkgKCpiYXIpIChmbG9hdCwgZG91YmxlKTsKKworaW50 Citmb28gKGludCBhKQoreworICByZXR1cm4gYmFyICgxLjBmLCAyLjApICsg YSArIDE7Cit9CisKKy8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVhcmlu ZyBwcmlvciB0byBmdW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwg IzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAibW92c1x0cjAsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAiXG5cdG1vdnNcdHIxLCByNCIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJcblx0bW92c1x0cjIsIHI0 XG5cdG1vdnNcdHIzLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90ICJ2bW92IiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgInZtc3IiIH0gfSAqLworCisvKiBOb3cg d2UgY2hlY2sgdGhhdCB3ZSB1c2UgdGhlIGNvcnJlY3QgaW50cmluc2ljIHRv IGNhbGwuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJi bFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCisKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNl bGluZS9jbXNlLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v Y21zZS9iYXNlbGluZS9jbXNlLTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li45NWRhMDQ1NjkwYWUxNzBhMTAxOTQ5MTM0NDgyZTgyMWYyN2ZlM2FhCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9jbXNlL2Jhc2VsaW5lL2Ntc2UtNi5jCkBAIC0wLDAgKzEsMjEgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCBhcm1fYXJjaF92OG1fYmFzZV9vayB9ICovCisvKiB7IGRn LWFkZC1vcHRpb25zIGFybV9hcmNoX3Y4bV9iYXNlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLW1jbXNlIiB9ICAqLworCitpbnQgX19hdHRyaWJ1dGVfXyAo KGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmJhcikgKGRvdWJsZSk7CisKK2lu dAorZm9vIChpbnQgYSkKK3sKKyAgcmV0dXJuIGJhciAoMi4wKSArIGEgKyAx OworfQorCisvKiBSZW1lbWJlciBkb250IGNsZWFyIHIwIGFuZCByMSwgYmVj YXVzZSB3ZSBhcmUgcGFzc2luZyB0aGUgZG91YmxlIHBhcmFtZXRlcgorICog Zm9yIGJhciBpbiB0aGVtLiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyMiwg cjQiIH0gfSAqLworCisvKiBOb3cgd2UgY2hlY2sgdGhhdCB3ZSB1c2UgdGhl IGNvcnJlY3QgaW50cmluc2ljIHRvIGNhbGwuICAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVf Y2FsbCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYXJtL2Ntc2UvYmFzZWxpbmUvdW5pb24tMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL3VuaW9uLTEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjE4ZTgzOWIwMmMxOWMyYzc3NzY5 YjE4ZWY1ZWUxY2ZhY2YwYzcxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Jhc2VsaW5lL3VuaW9uLTEu YwpAQCAtMCwwICsxLDcxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItbWNtc2UiIH0gKi8KKwordHlwZWRlZiBzdHJ1 Y3QKK3sKKyAgdW5zaWduZWQgY2hhcgkgIGEgOjI7CisgIHVuc2lnbmVkIGNo YXIJICAgIDowOworICB1bnNpZ25lZCBzaG9ydCAgYiA6NTsKKyAgdW5zaWdu ZWQgY2hhcgkgICAgOjA7CisgIHVuc2lnbmVkIHNob3J0ICBjIDozOworICB1 bnNpZ25lZCBjaGFyCSAgICA6MDsKKyAgdW5zaWduZWQgaW50CSAgZCA6OTsK K30gdGVzdF9zdF8xOworCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25l ZCBzaG9ydCAgYSA6NzsKKyAgdW5zaWduZWQgY2hhcgkgICAgOjA7CisgIHVu c2lnbmVkIGNoYXIJICBiIDoxOworICB1bnNpZ25lZCBjaGFyCSAgICA6MDsK KyAgdW5zaWduZWQgc2hvcnQgIGMgOjY7Cit9IHRlc3Rfc3RfMjsKKwordHlw ZWRlZiB1bmlvbgoreworICB0ZXN0X3N0XzEgc3RfMTsKKyAgdGVzdF9zdF8y IHN0XzI7Cit9dGVzdF91bjsKKwordHlwZWRlZiB1bmlvbgoreworICB0ZXN0 X3VuIHVuOworICBzdHJ1Y3QKKyAgICB7CisgICAgICB1bnNpZ25lZCBpbnQg djE7CisgICAgICB1bnNpZ25lZCBpbnQgdjI7CisgICAgICB1bnNpZ25lZCBp bnQgdjM7CisgICAgICB1bnNpZ25lZCBpbnQgdjQ7CisgICAgfXZhbHVlczsK K30gcmVhZF91bjsKKworCit0eXBlZGVmIHZvaWQgX19hdHRyaWJ1dGVfXyAo KGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmZvb19ucykgKHRlc3RfdW4pOwor CitpbnQKK21haW4gKHZvaWQpCit7CisgIHJlYWRfdW4gcjsKKyAgZm9vX25z IGY7CisKKyAgZiA9IChmb29fbnMpIDB4MjAwMDAwOworICByLnZhbHVlcy52 MSA9IDB4RkZGRkZGRkY7CisgIHIudmFsdWVzLnYyID0gMHhGRkZGRkZGRjsK KworICBmIChyLnVuKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRpcCwgcjQiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRyNCwgIzgwNjMi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z0 XHRyNCwgNjMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJhbmRzXHRyMCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJtb3Z3XHRyNCwgIzUxMSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZHNcdHIxLCByNCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjQsIGlw IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNy c1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyMiwgcjQiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyMywgcjQi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0 X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCisKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9iYXNlbGlu ZS91bmlvbi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Nt c2UvYmFzZWxpbmUvdW5pb24tMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmIyZTAyNGI3ZjA3NzYzODFmNTExMDc3YWY5MWJkMWVlNTYzMmZmMTIKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJt L2Ntc2UvYmFzZWxpbmUvdW5pb24tMi5jCkBAIC0wLDAgKzEsODYgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21z ZSIgfSAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFy CSAgYSA6MjsKKyAgdW5zaWduZWQgY2hhcgkgICAgOjA7CisgIHVuc2lnbmVk IHNob3J0ICBiIDo1OworICB1bnNpZ25lZCBjaGFyCSAgICA6MDsKKyAgdW5z aWduZWQgc2hvcnQgIGMgOjM7CisgIHVuc2lnbmVkIGNoYXIJICAgIDowOwor ICB1bnNpZ25lZCBpbnQJICBkIDo5OworfSB0ZXN0X3N0XzE7CisKK3R5cGVk ZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIHNob3J0ICBhIDo3OworICB1bnNp Z25lZCBjaGFyCSAgICA6MDsKKyAgdW5zaWduZWQgY2hhcgkgIGIgOjE7Cisg IHVuc2lnbmVkIGNoYXIJICAgIDowOworICB1bnNpZ25lZCBzaG9ydCAgYyA6 NjsKK30gdGVzdF9zdF8yOworCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNp Z25lZCBjaGFyCSAgYTsKKyAgdW5zaWduZWQgaW50CSAgICA6MDsKKyAgdW5z aWduZWQgaW50CSAgYiA6MTsKKyAgdW5zaWduZWQgc2hvcnQgICAgOjA7Cisg IHVuc2lnbmVkIHNob3J0ICBjOworICB1bnNpZ25lZCBpbnQJICAgIDowOwor ICB1bnNpZ25lZCBpbnQJICBkIDoyMTsKK30gdGVzdF9zdF8zOworCit0eXBl ZGVmIHVuaW9uCit7CisgIHRlc3Rfc3RfMSBzdF8xOworICB0ZXN0X3N0XzIg c3RfMjsKKyAgdGVzdF9zdF8zIHN0XzM7Cit9dGVzdF91bjsKKwordHlwZWRl ZiB1bmlvbgoreworICB0ZXN0X3VuIHVuOworICBzdHJ1Y3QKKyAgICB7Cisg ICAgICB1bnNpZ25lZCBpbnQgdjE7CisgICAgICB1bnNpZ25lZCBpbnQgdjI7 CisgICAgICB1bnNpZ25lZCBpbnQgdjM7CisgICAgICB1bnNpZ25lZCBpbnQg djQ7CisgICAgfXZhbHVlczsKK30gcmVhZF91bjsKKworCit0eXBlZGVmIHZv aWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmZv b19ucykgKHRlc3RfdW4pOworCitpbnQKK21haW4gKHZvaWQpCit7CisgIHJl YWRfdW4gcjsKKyAgZm9vX25zIGY7CisKKyAgZiA9IChmb29fbnMpIDB4MjAw MDAwOworICByLnZhbHVlcy52MSA9IDB4RkZGRkZGRkY7CisgIHIudmFsdWVz LnYyID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjMgPSAweEZGRkZGRkZG OworCisgIGYgKHIudW4pOworICByZXR1cm4gMDsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdGlwLCByNCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdndcdHI0LCAjODE5 MSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1v dnRcdHI0LCA2MyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgImFuZHNcdHIwLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIm1vdndcdHI0LCAjNTExIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92dFx0cjQsIDY1NTM1IiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kc1x0 cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAibW92d1x0cjQsICM2NTUzNSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIm1vdnRcdHI0LCAzMSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZHNcdHIyLCByNCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjQsIGlw IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNy c1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZzXHRyMywgcjQiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21z ZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvY21zZS05LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvY21zZS05LmMKaW5kZXggMWQ5 N2YwZTFhMzcyMDliZDEyOWZmZTk2Y2U5MmE4NmJjMmUwZDVkMS4uOWU4MWUz MGM4OTFiYmMxZjlkMmQxZDY4ZDAzYmFjYWQ5Y2U2NWZlMSAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Ntc2UtOS5j CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9jbXNl LTkuYwpAQCAtMiwxMSArMiwxOSBAQAogLyogeyBkZy1za2lwLWlmICJUZXN0 aW5nIGV4Y2x1c2lvbiBvZiAtbWNtc2UiIHsgYXJtLSotKiB9IHsgIi1tY21z ZSIgfSB7ICIiIH0gfSAgKi8KIAogCit2b2lkIF9fYXR0cmlidXRlX18gKChj bXNlX25vbnNlY3VyZV9jYWxsKSkgKCpiYXIpIChpbnQpOyAvKiB7IGRnLXdh cm5pbmcgImF0dHJpYnV0ZSBpZ25vcmVkIHdpdGhvdXQgLW1jbXNlIG9wdGlv biIgfSAqLwordHlwZWRlZiB2b2lkIF9fYXR0cmlidXRlX18gKChjbXNlX25v bnNlY3VyZV9jYWxsKSkgYmF6IChpbnQpOyAvKiB7IGRnLXdhcm5pbmcgImF0 dHJpYnV0ZSBpZ25vcmVkIHdpdGhvdXQgLW1jbXNlIG9wdGlvbiIgfSAqLwor CiBpbnQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2VudHJ5KSkK LWZvbyAoaW50IGEpCitmb28gKGludCBhLCBiYXogYikKIHsgLyogeyBkZy13 YXJuaW5nICJhdHRyaWJ1dGUgaWdub3JlZCB3aXRob3V0IC1tY21zZSBvcHRp b24iIH0gKi8KKyAgYmFyIChhKTsKKyAgYiAoYSk7CiAgIHJldHVybiBhICsg MTsKIH0KIAorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAi YnhucyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90ICJibHhucyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90ICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9 ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImZvbzoiIH0g fSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX19h Y2xlX3NlX2ZvbzoiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Ntc2UuZXhwIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Ntc2UuZXhwCmluZGV4IDM4ZjE4NDE0 YzJmZWZlYzU2MTYxZTZhYzNmNzI5MWIwM2EzYjI5YTMuLjY2YThiN2RhMDA1 ZjdkZmVmZmJkZWQ2MWIwMmZkNmE3NDczYTFkY2YgMTAwNjQ0Ci0tLSBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9jbXNlLmV4cAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvY21zZS5leHAK QEAgLTUwLDYgKzUwLDggQEAgaWYge1tjaGVja19lZmZlY3RpdmVfdGFyZ2V0 X2FybV9hcmNoX3Y4bV9iYXNlX29rXX0gdGhlbiB7CiB9CiAKIGlmIHtbY2hl Y2tfZWZmZWN0aXZlX3RhcmdldF9hcm1fYXJjaF92OG1fbWFpbl9va119IHRo ZW4geworICAgIGdjYy1kZy1ydW50ZXN0IFtsc29ydCBbZ2xvYiAkc3JjZGly LyRzdWJkaXIvbWFpbmxpbmUvKi5jXV0gXAorCSAgICAiIiAkREVGQVVMVF9D RkxBR1MKICAgICAjIE1haW5saW5lIC1tZmxvYXQtYWJpPXNvZnQKICAgICBn Y2MtZGctcnVudGVzdCBbbHNvcnQgW2dsb2IgJHNyY2Rpci8kc3ViZGlyL21h aW5saW5lL3NvZnQvKi5jXV0gXAogCSAgICAiLW1mbG9hdC1hYmk9c29mdCIg JERFRkFVTFRfQ0ZMQUdTCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvYml0ZmllbGQtNC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL2JpdGZp ZWxkLTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2IxMzk2ZDUyZTc0 MmExNzEwZWQ1YWQzM2ZiZWI1NTlkODY2ZjZmCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5l L2JpdGZpZWxkLTQuYwpAQCAtMCwwICsxLDU1IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UiIH0gKi8KKwor dHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hhciBhOworICB1bnNp Z25lZCBpbnQgYjo1OworICB1bnNpZ25lZCBpbnQgYzoxMSwgOjAsIGQ6ODsK KyAgc3RydWN0IHsgdW5zaWduZWQgaW50IGVlOjI7IH0gZTsKK30gdGVzdF9z dDsKKwordHlwZWRlZiB1bmlvbgoreworICB0ZXN0X3N0IHN0OworICBzdHJ1 Y3QKKyAgICB7CisgICAgICB1bnNpZ25lZCBpbnQgdjE7CisgICAgICB1bnNp Z25lZCBpbnQgdjI7CisgICAgICB1bnNpZ25lZCBpbnQgdjM7CisgICAgICB1 bnNpZ25lZCBpbnQgdjQ7CisgICAgfXZhbHVlczsKK30gcmVhZF9zdDsKKwor Cit0eXBlZGVmIHZvaWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJl X2NhbGwpKSAoKmZvb19ucykgKHRlc3Rfc3QpOworCitleHRlcm4gdm9pZCBm b28gKHRlc3Rfc3Qgc3QpOworCitpbnQKK21haW4gKHZvaWQpCit7CisgIHJl YWRfc3QgcjsKKyAgZm9vX25zIGY7CisKKyAgZiA9IChmb29fbnMpIDB4MjAw MDAwOworICByLnZhbHVlcy52MSA9IDB4RkZGRkZGRkY7CisgIHIudmFsdWVz LnYyID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjMgPSAweEZGRkZGRkZG OworICByLnZhbHVlcy52NCA9IDB4RkZGRkZGRkY7CisKKyAgZiAoci5zdCk7 CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgIm1vdndcdGlwLCAjNjU1MzUiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z0XHRpcCwgMjU1IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kXHRyMCwgcjAsIGlw IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92 XHRpcCwgIzI1NSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgImFuZFx0cjEsIHIxLCBpcCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0aXAsICMzIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kXHRyMiwgcjIsIGlwIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNyc1x0 cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIzLCByNCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25v bnNlY3VyZV9jYWxsIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9iaXRmaWVsZC01LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUv Yml0ZmllbGQtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkMDI5MDQ0 YWE5YWExZDQxMmMyOGVlNWQxOGE4ZTNkMGJlMzY1NDYKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFp bmxpbmUvYml0ZmllbGQtNS5jCkBAIC0wLDAgKzEsNTEgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSIgfSAq LworCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFyCSAgYTsK KyAgdW5zaWduZWQgc2hvcnQgIGIgOjU7CisgIHVuc2lnbmVkIGNoYXIJICBj OworICB1bnNpZ25lZCBzaG9ydCAgZCA6MTE7Cit9IHRlc3Rfc3Q7CisKK3R5 cGVkZWYgdW5pb24KK3sKKyAgdGVzdF9zdCBzdDsKKyAgc3RydWN0CisgICAg eworICAgICAgdW5zaWduZWQgaW50IHYxOworICAgICAgdW5zaWduZWQgaW50 IHYyOworICAgICAgdW5zaWduZWQgaW50IHYzOworICAgICAgdW5zaWduZWQg aW50IHY0OworICAgIH12YWx1ZXM7Cit9IHJlYWRfc3Q7CisKKwordHlwZWRl ZiB2b2lkIF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9jYWxsKSkg KCpmb29fbnMpICh0ZXN0X3N0KTsKKworaW50CittYWluICh2b2lkKQorewor ICByZWFkX3N0IHI7CisgIGZvb19ucyBmOworCisgIGYgPSAoZm9vX25zKSAw eDIwMDAwMDsKKyAgci52YWx1ZXMudjEgPSAweEZGRkZGRkZGOworICByLnZh bHVlcy52MiA9IDB4RkZGRkZGRkY7CisKKyAgZiAoci5zdCk7CisgIHJldHVy biAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1v dndcdGlwLCAjODE5MSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdnRcdGlwLCAyNTUiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJhbmRcdHIwLCByMCwgaXAiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRpcCwgIzIw NDciIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJh bmRcdHIxLCByMSwgaXAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjIs IHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bW92XHRyMywgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICov CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v Y21zZS9tYWlubGluZS9iaXRmaWVsZC02LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvYml0ZmllbGQtNi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjAwNTUxNWFiOWNiODVjMjAxYTJhOGIyZjY0 MTdkNzNjZWVhY2JjNjAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvYml0ZmllbGQtNi5j CkBAIC0wLDAgKzEsNjEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1tY21zZSIgfSAqLworCit0eXBlZGVmIHN0cnVj dAoreworICB1bnNpZ25lZCBjaGFyIGE7CisgIHVuc2lnbmVkIGludAliIDog MzsKKyAgdW5zaWduZWQgaW50CWMgOiAxNDsKKyAgdW5zaWduZWQgaW50CWQg OiAxOworICBzdHJ1Y3QgeworICAgICAgdW5zaWduZWQgaW50ICAgIGVlICA6 IDI7CisgICAgICB1bnNpZ25lZCBzaG9ydCAgZmYgIDogMTU7CisgIH0gZTsK KyAgdW5zaWduZWQgY2hhcglnIDogMTsKKyAgdW5zaWduZWQgY2hhcgkgIDog NDsKKyAgdW5zaWduZWQgY2hhcgloIDogMzsKK30gdGVzdF9zdDsKKwordHlw ZWRlZiB1bmlvbgoreworICB0ZXN0X3N0IHN0OworICBzdHJ1Y3QKKyAgICB7 CisgICAgICB1bnNpZ25lZCBpbnQgdjE7CisgICAgICB1bnNpZ25lZCBpbnQg djI7CisgICAgICB1bnNpZ25lZCBpbnQgdjM7CisgICAgICB1bnNpZ25lZCBp bnQgdjQ7CisgICAgfXZhbHVlczsKK30gcmVhZF9zdDsKKworCit0eXBlZGVm IHZvaWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAo KmZvb19ucykgKHRlc3Rfc3QpOworCitpbnQKK21haW4gKHZvaWQpCit7Cisg IHJlYWRfc3QgcjsKKyAgZm9vX25zIGY7CisKKyAgZiA9IChmb29fbnMpIDB4 MjAwMDAwOworICByLnZhbHVlcy52MSA9IDB4RkZGRkZGRkY7CisgIHIudmFs dWVzLnYyID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjMgPSAweEZGRkZG RkZGOworICByLnZhbHVlcy52NCA9IDB4RkZGRkZGRkY7CisKKyAgZiAoci5z dCk7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdndcdGlwLCAjNjU1MzUiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z0XHRpcCwgMTAyMyIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZFx0cjAsIHIw LCBpcCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Im1vdlx0aXAsICMzIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAibW92dFx0aXAsIDMyNzY3IiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kXHRyMSwgcjEsIGlwIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRpcCwgIzI1 NSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFu ZFx0cjIsIHIyLCBpcCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImxzcnNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc2xzXHRyNCwgcjQsICMxIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyMywg cjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJi bFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxp bmUvYml0ZmllbGQtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9jbXNlL21haW5saW5lL2JpdGZpZWxkLTcuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi42ZGQyMThlNjJmZGVlMmE2YWY4MTkwNzliYTFlYTE5MDkxODVk MDc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL21haW5saW5lL2JpdGZpZWxkLTcuYwpAQCAtMCwwICsx LDUyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItbWNtc2UiIH0gKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5z aWduZWQgY2hhcgkgIGE7CisgIHVuc2lnbmVkIHNob3J0ICBiIDo1OworICB1 bnNpZ25lZCBjaGFyCSAgYzsKKyAgdW5zaWduZWQgc2hvcnQgIGQgOjExOwor fSB0ZXN0X3N0OworCit0eXBlZGVmIHVuaW9uCit7CisgIHRlc3Rfc3Qgc3Q7 CisgIHN0cnVjdAorICAgIHsKKyAgICAgIHVuc2lnbmVkIGludCB2MTsKKyAg ICAgIHVuc2lnbmVkIGludCB2MjsKKyAgICAgIHVuc2lnbmVkIGludCB2MzsK KyAgICAgIHVuc2lnbmVkIGludCB2NDsKKyAgICB9dmFsdWVzOworfSByZWFk X3N0OworCisKK3R5cGVkZWYgdm9pZCBfX2F0dHJpYnV0ZV9fICgoY21zZV9u b25zZWN1cmVfY2FsbCkpICgqZm9vX25zKSAodGVzdF9zdCk7CisKK2ludAor bWFpbiAodm9pZCkKK3sKKyAgcmVhZF9zdCByOworICBmb29fbnMgZjsKKwor ICBmID0gKGZvb19ucykgMHgyMDAwMDA7CisgIHIudmFsdWVzLnYxID0gMHhG RkZGRkZGRjsKKyAgci52YWx1ZXMudjIgPSAweEZGRkZGRkZGOworCisgIGYg KHIuc3QpOworICByZXR1cm4gMDsKK30KKworCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIm1vdndcdGlwLCAjODE5MSIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdGlwLCAyNTUiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJhbmRcdHIw LCByMCwgaXAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJtb3Z3XHRpcCwgIzIwNDciIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJhbmRcdHIxLCByMSwgaXAiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc3JzXHRyNCwgcjQsICMx IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNs c1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdlx0cjIsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibW92XHRyMywgcjQiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25z ZWN1cmVfY2FsbCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9iaXRmaWVsZC04LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUv Yml0ZmllbGQtOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MzNiY2Iw YWU5Nzg1NzJmYWQ0Njc4MGJjMTgwZjYxY2NiMTQzNDUKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFp bmxpbmUvYml0ZmllbGQtOC5jCkBAIC0wLDAgKzEsNTUgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSIgfSAq LworCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFyCSAgYTsK KyAgdW5zaWduZWQgaW50CSAgICA6MDsKKyAgdW5zaWduZWQgaW50CSAgYiA6 MTsKKyAgdW5zaWduZWQgc2hvcnQgICAgOjA7CisgIHVuc2lnbmVkIHNob3J0 ICBjOworICB1bnNpZ25lZCBpbnQJICAgIDowOworICB1bnNpZ25lZCBpbnQJ ICBkIDoyMTsKK30gdGVzdF9zdDsKKwordHlwZWRlZiB1bmlvbgoreworICB0 ZXN0X3N0IHN0OworICBzdHJ1Y3QKKyAgICB7CisgICAgICB1bnNpZ25lZCBp bnQgdjE7CisgICAgICB1bnNpZ25lZCBpbnQgdjI7CisgICAgICB1bnNpZ25l ZCBpbnQgdjM7CisgICAgICB1bnNpZ25lZCBpbnQgdjQ7CisgICAgfXZhbHVl czsKK30gcmVhZF9zdDsKKwordHlwZWRlZiB2b2lkIF9fYXR0cmlidXRlX18g KChjbXNlX25vbnNlY3VyZV9jYWxsKSkgKCpmb29fbnMpICh0ZXN0X3N0KTsK KworaW50CittYWluICh2b2lkKQoreworICByZWFkX3N0IHI7CisgIGZvb19u cyBmOworCisgIGYgPSAoZm9vX25zKSAweDIwMDAwMDsKKyAgci52YWx1ZXMu djEgPSAweEZGRkZGRkZGOworICByLnZhbHVlcy52MiA9IDB4RkZGRkZGRkY7 CisgIHIudmFsdWVzLnYzID0gMHhGRkZGRkZGRjsKKworICBmIChyLnN0KTsK KyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAibW92XHRpcCwgIzI1NSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgImFuZFx0cjAsIHIwLCBpcCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0aXAsICMxIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92dFx0aXAs IDY1NTM1IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiYW5kXHRyMSwgcjEsIGlwIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92d1x0aXAsICM2NTUzNSIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdGlwLCAzMSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZFx0cjIs IHIyLCBpcCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgImxzcnNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJsc2xzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyMywgcjQiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19n bnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvYml0 ZmllbGQtOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNl L21haW5saW5lL2JpdGZpZWxkLTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5kNmU0Y2RiOGM0NGIxOWM4MTFmM2E3YjRmYmNlMTAyYTZjNzY4ZjJiCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9jbXNlL21haW5saW5lL2JpdGZpZWxkLTkuYwpAQCAtMCwwICsxLDU0IEBA CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt bWNtc2UiIH0gKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgY2hhciBhOjM7 Cit9IHRlc3Rfc3QzOworCit0eXBlZGVmIHN0cnVjdAoreworICBjaGFyIGE6 MzsKK30gdGVzdF9zdDI7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHRlc3Rf c3QyIHN0MjsKKyAgdGVzdF9zdDMgc3QzOworfSB0ZXN0X3N0OworCit0eXBl ZGVmIHVuaW9uCit7CisgIHRlc3Rfc3Qgc3Q7CisgIHN0cnVjdAorICAgIHsK KyAgICAgIHVuc2lnbmVkIGludCB2MTsKKyAgICAgIHVuc2lnbmVkIGludCB2 MjsKKyAgICAgIHVuc2lnbmVkIGludCB2MzsKKyAgICAgIHVuc2lnbmVkIGlu dCB2NDsKKyAgICB9dmFsdWVzOworfSByZWFkX3N0OworCit0eXBlZGVmIHZv aWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmZv b19ucykgKHRlc3Rfc3QpOworCitpbnQKK21haW4gKHZvaWQpCit7CisgIHJl YWRfc3QgcjsKKyAgZm9vX25zIGY7CisKKyAgZiA9IChmb29fbnMpIDB4MjAw MDAwOworICByLnZhbHVlcy52MSA9IDB4RkZGRkZGRkY7CisKKyAgZiAoci5z dCk7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdndcdGlwLCAjMTc5OSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZFx0cjAsIHIwLCBpcCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzcnNcdHI0LCBy NCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJsc2xzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92XHRyMSwgcjQiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIyLCByNCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjMsIHI0IiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYmxcdF9f Z251X2Ntc2Vfbm9uc2VjdXJlX2NhbGwiIH0gfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL2Jp dGZpZWxkLWFuZC11bmlvbi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYXJtL2Ntc2UvbWFpbmxpbmUvYml0ZmllbGQtYW5kLXVuaW9uLTEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTM5YmE2MWFmNTdmMDZjZmY1YTlk MTIxYzk3YmJmNDFlMTcwYmI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL2JpdGZpZWxk LWFuZC11bmlvbi0xLmMKQEAgLTAsMCArMSw5NCBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIiB9ICovCisK K3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIHNob3J0IGEgOjExOwor fSB0ZXN0X3N0XzQ7CisKK3R5cGVkZWYgdW5pb24KK3sKKyAgY2hhcgkgICAg ICBhOworICB0ZXN0X3N0XzQgc3Q0OworfXRlc3RfdW5fMjsKKwordHlwZWRl ZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hhcgkgIGE7CisgIHVuc2lnbmVk IGludAkgICAgOjA7CisgIHVuc2lnbmVkIGludAkgIGIgOjE7CisgIHVuc2ln bmVkIHNob3J0ICAgIDowOworICB1bnNpZ25lZCBzaG9ydCAgYzsKKyAgdW5z aWduZWQgaW50CSAgICA6MDsKKyAgdW5zaWduZWQgaW50CSAgZCA6MjE7Cit9 IHRlc3Rfc3RfMzsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQg Y2hhcgkgIGEgOjM7CisgIHVuc2lnbmVkIGludAkgIGIgOjEzOworICB0ZXN0 X3VuXzIJICB1bjI7Cit9IHRlc3Rfc3RfMjsKKwordHlwZWRlZiB1bmlvbgor eworICB0ZXN0X3N0XzIgc3QyOworICB0ZXN0X3N0XzMgc3QzOworfXRlc3Rf dW5fMTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hhcgkg IGEgOjI7CisgIHVuc2lnbmVkIGNoYXIJICAgIDowOworICB1bnNpZ25lZCBz aG9ydCAgYiA6NTsKKyAgdW5zaWduZWQgY2hhcgkgICAgOjA7CisgIHVuc2ln bmVkIGNoYXIJICBjIDo0OworICB0ZXN0X3VuXzEJICB1bjE7Cit9IHRlc3Rf c3RfMTsKKwordHlwZWRlZiB1bmlvbgoreworICB0ZXN0X3N0XzEgc3QxOwor ICBzdHJ1Y3QKKyAgICB7CisgICAgICB1bnNpZ25lZCBpbnQgdjE7CisgICAg ICB1bnNpZ25lZCBpbnQgdjI7CisgICAgICB1bnNpZ25lZCBpbnQgdjM7Cisg ICAgICB1bnNpZ25lZCBpbnQgdjQ7CisgICAgfXZhbHVlczsKK30gcmVhZF9z dF8xOworCisKK3R5cGVkZWYgdm9pZCBfX2F0dHJpYnV0ZV9fICgoY21zZV9u b25zZWN1cmVfY2FsbCkpICgqZm9vX25zKSAodGVzdF9zdF8xKTsKKworaW50 CittYWluICh2b2lkKQoreworICByZWFkX3N0XzEgcjsKKyAgZm9vX25zIGY7 CisKKyAgZiA9IChmb29fbnMpIDB4MjAwMDAwOworICByLnZhbHVlcy52MSA9 IDB4RkZGRkZGRkY7CisgIHIudmFsdWVzLnYyID0gMHhGRkZGRkZGRjsKKyAg ci52YWx1ZXMudjMgPSAweEZGRkZGRkZGOworICByLnZhbHVlcy52NCA9IDB4 RkZGRkZGRkY7CisKKyAgZiAoci5zdDEpOworICByZXR1cm4gMDsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRpcCwgIzc5 MzkiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJt b3Z0XHRpcCwgMTUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJhbmRcdHIwLCByMCwgaXAiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRpcCwgIzY1NTM1IiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92dFx0aXAsIDIw NDciIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJh bmRcdHIxLCByMSwgaXAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJtb3ZcdGlwLCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdGlwLCA2NTUzNSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZFx0cjIsIHIyLCBp cCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1v dndcdGlwLCAjNjU1MzUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJtb3Z0XHRpcCwgMzEiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJhbmRcdHIzLCByMywgaXAiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc3JzXHRyNCwgcjQs ICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bHNsc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3VyZV9jYWxsIiB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h cm0vY21zZS9tYWlubGluZS9oYXJkLXNwL2Ntc2UtMTMuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9oYXJkLXNwL2Nt c2UtMTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODVmYTg1NGIzZDYx YzRkODU2ZTliZTg2M2VlNzNhODdmMWIxMWE5Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5l L2hhcmQtc3AvY21zZS0xMy5jCkBAIC0wLDAgKzEsNDMgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBhcm1fYXJjaF92OG1fbWFpbl9vayB9ICovCisvKiB7IGRnLWFkZC1v cHRpb25zIGFybV9hcmNoX3Y4bV9tYWluIH0gKi8KKy8qIHsgZGctc2tpcC1p ZiAiRG8gbm90IGNvbWJpbmUgZmxvYXQtYWJpPSBoYXJkIHwgc29mdCB8IHNv ZnRmcCIgeyotKi0qfSB7Ii1tZmxvYXQtYWJpPXNvZnQiIC1tZmxvYXQtYWJp PXNvZnRmcCB9IHsiIn0gfSAqLworLyogeyBkZy1za2lwLWlmICJTa2lwIHRo ZXNlIGlmIHRlc3RpbmcgZG91YmxlIHByZWNpc2lvbiIgeyotKi0qfSB7Ii1t ZnB1PWZwdls0LTVdLWQxNiJ9IHsiIn0gfSAqLworLyogeyBkZy1vcHRpb25z ICItbWNtc2UgLW1mbG9hdC1hYmk9aGFyZCAtbWZwdT1mcHY1LXNwLWQxNiIg fSAgKi8KKworCitpbnQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJl X2NhbGwpKSAoKmJhcikgKGZsb2F0LCBkb3VibGUpOworCitpbnQKK2ZvbyAo aW50IGEpCit7CisgIHJldHVybiBiYXIgKDMuMGYsIDIuMCkgKyBhICsgMTsK K30KKworLyogQ2hlY2tzIGZvciBzYXZpbmcgYW5kIGNsZWFyaW5nIHByaW9y IHRvIGZ1bmN0aW9uIGNhbGwuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjAs IHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bW92XHRyMSwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJtb3ZcdHIyLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjMsIHI0IiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInZtb3ZcLmYzMlx0czAsICMx XC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi dm1vdlwuZjMyXHRzMSwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCAidm1vdlwuZjMyXHRzMiwgIzFcLjAiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAidm1v dlwuZjMyXHRzMywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHM0LCAjMVwuMCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYzMlx0czUs ICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAidm1vdlwuZjMyXHRzNiwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHM3LCAjMVwuMCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYz Mlx0czgsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAidm1vdlwuZjMyXHRzOSwgIzFcLjAiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMxMCwgIzFc LjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2 bW92XC5mMzJcdHMxMSwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMxMiwgIzFcLjAiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJc dHMxMywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJ2bW92XC5mMzJcdHMxNCwgIzFcLjAiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMxNSwgIzFc LjAiIH0gfSAqLworCisvKiBOb3cgd2UgY2hlY2sgdGhhdCB3ZSB1c2UgdGhl IGNvcnJlY3QgaW50cmluc2ljIHRvIGNhbGwuICAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVf Y2FsbCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9oYXJkLXNwL2Ntc2UtNy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL2hh cmQtc3AvY21zZS03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY1NmFh ZjJhOTdlNzQwYTc3NDczY2FiMjQ1NjE0YjZmYTY5NmMwNAotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9t YWlubGluZS9oYXJkLXNwL2Ntc2UtNy5jCkBAIC0wLDAgKzEsNDIgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCBhcm1fYXJjaF92OG1fbWFpbl9vayB9ICovCisvKiB7IGRn LWFkZC1vcHRpb25zIGFybV9hcmNoX3Y4bV9tYWluIH0gKi8KKy8qIHsgZGct c2tpcC1pZiAiRG8gbm90IGNvbWJpbmUgZmxvYXQtYWJpPSBoYXJkIHwgc29m dCB8IHNvZnRmcCIgeyotKi0qfSB7Ii1tZmxvYXQtYWJpPXNvZnQiIC1tZmxv YXQtYWJpPXNvZnRmcCB9IHsiIn0gfSAqLworLyogeyBkZy1za2lwLWlmICJT a2lwIHRoZXNlIGlmIHRlc3RpbmcgZG91YmxlIHByZWNpc2lvbiIgeyotKi0q fSB7Ii1tZnB1PWZwdls0LTVdLWQxNiJ9IHsiIn0gfSAqLworLyogeyBkZy1v cHRpb25zICItbWNtc2UgLW1mbG9hdC1hYmk9aGFyZCAtbWZwdT1mcHY1LXNw LWQxNiIgfSAgKi8KKworaW50IF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNl Y3VyZV9jYWxsKSkgKCpiYXIpICh2b2lkKTsKKworaW50Citmb28gKGludCBh KQoreworICByZXR1cm4gYmFyICgpICsgYSArIDE7Cit9CisKKy8qIENoZWNr cyBmb3Igc2F2aW5nIGFuZCBjbGVhcmluZyBwcmlvciB0byBmdW5jdGlvbiBj YWxsLiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNy c1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIwLCByNCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjEsIHI0IiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRy MiwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJtb3ZcdHIzLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInZtb3ZcLmYzMlx0czAsICMxXC4wIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjMyXHRzMSwgIzFc LjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2 bW92XC5mMzJcdHMyLCAjMVwuMCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYzMlx0czMsICMxXC4wIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjMyXHRz NCwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ2bW92XC5mMzJcdHM1LCAjMVwuMCIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYzMlx0czYsICMxXC4wIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwu ZjMyXHRzNywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJ2bW92XC5mMzJcdHM4LCAjMVwuMCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYzMlx0czksICMx XC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi dm1vdlwuZjMyXHRzMTAsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjMyXHRzMTEsICMxXC4wIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjMy XHRzMTIsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAidm1vdlwuZjMyXHRzMTMsICMxXC4wIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjMyXHRzMTQsICMx XC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi dm1vdlwuZjMyXHRzMTUsICMxXC4wIiB9IH0gKi8KKworLyogTm93IHdlIGNo ZWNrIHRoYXQgd2UgdXNlIHRoZSBjb3JyZWN0IGludHJpbnNpYyB0byBjYWxs LiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYmxcdF9f Z251X2Ntc2Vfbm9uc2VjdXJlX2NhbGwiIH0gfSAqLworCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUv aGFyZC1zcC9jbXNlLTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h cm0vY21zZS9tYWlubGluZS9oYXJkLXNwL2Ntc2UtOC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjc0OWY4YTcyNzhjYjRlYTlmZDQ0NjI4ODdjZTdmMzdi NTdmODMyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvaGFyZC1zcC9jbXNlLTguYwpA QCAtMCwwICsxLDQxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX2FyY2hfdjhtX21h aW5fb2sgfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1fYXJjaF92OG1f bWFpbiB9ICovCisvKiB7IGRnLXNraXAtaWYgIkRvIG5vdCBjb21iaW5lIGZs b2F0LWFiaT0gaGFyZCB8IHNvZnQgfCBzb2Z0ZnAiIHsqLSotKn0geyItbWZs b2F0LWFiaT1zb2Z0IiAtbWZsb2F0LWFiaT1zb2Z0ZnAgfSB7IiJ9IH0gKi8K Ky8qIHsgZGctc2tpcC1pZiAiU2tpcCB0aGVzZSBpZiB0ZXN0aW5nIGRvdWJs ZSBwcmVjaXNpb24iIHsqLSotKn0geyItbWZwdT1mcHZbNC01XS1kMTYifSB7 IiJ9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIC1tZmxvYXQtYWJp PWhhcmQgLW1mcHU9ZnB2NS1zcC1kMTYiIH0gICovCisKK2ludCBfX2F0dHJp YnV0ZV9fICgoY21zZV9ub25zZWN1cmVfY2FsbCkpICgqYmFyKSAoZG91Ymxl KTsKKworaW50Citmb28gKGludCBhKQoreworICByZXR1cm4gYmFyICgyLjAp ICsgYSArIDE7Cit9CisKKy8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVh cmluZyBwcmlvciB0byBmdW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCBy NCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJtb3ZcdHIwLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdlx0cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibW92XHRyMiwgcjQiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIzLCByNCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJ2bW92XC5m MzJcdHMwLCAjMVwuMCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90ICJ2bW92XC5mMzJcdHMxLCAjMVwuMCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYzMlx0czIs ICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAidm1vdlwuZjMyXHRzMywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHM0LCAjMVwuMCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmYz Mlx0czUsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAidm1vdlwuZjMyXHRzNiwgIzFcLjAiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHM3LCAjMVwu MCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZt b3ZcLmYzMlx0czgsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAidm1vdlwuZjMyXHRzOSwgIzFcLjAiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMx MCwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ2bW92XC5mMzJcdHMxMSwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMxMiwgIzFcLjAi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92 XC5mMzJcdHMxMywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMxNCwgIzFcLjAiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mMzJcdHMx NSwgIzFcLjAiIH0gfSAqLworCisvKiBOb3cgd2UgY2hlY2sgdGhhdCB3ZSB1 c2UgdGhlIGNvcnJlY3QgaW50cmluc2ljIHRvIGNhbGwuICAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25z ZWN1cmVfY2FsbCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvaGFyZC9jbXNlLTEzLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUv aGFyZC9jbXNlLTEzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFkNTA2 OGFhYzI2M2YxYzJlZGIxN2I4NzA3ZmM5ZDFjMGFmNjk1OQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9t YWlubGluZS9oYXJkL2Ntc2UtMTMuYwpAQCAtMCwwICsxLDM1IEBACisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2 ZS10YXJnZXQgYXJtX2FyY2hfdjhtX21haW5fb2sgfSAqLworLyogeyBkZy1h ZGQtb3B0aW9ucyBhcm1fYXJjaF92OG1fbWFpbiB9ICovCisvKiB7IGRnLXNr aXAtaWYgIkRvIG5vdCBjb21iaW5lIGZsb2F0LWFiaT0gaGFyZCB8IHNvZnQg fCBzb2Z0ZnAiIHsqLSotKn0geyItbWZsb2F0LWFiaT1zb2Z0IiAtbWZsb2F0 LWFiaT1zb2Z0ZnAgfSB7IiJ9IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiU2tp cCB0aGVzZSBpZiB0ZXN0aW5nIHNpbmdsZSBwcmVjaXNpb24iIHsqLSotKn0g eyItbWZwdT0qLXNwLSoifSB7IiJ9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LW1jbXNlIC1tZmxvYXQtYWJpPWhhcmQgLW1mcHU9ZnB2NS1kMTYiIH0gICov CisKKworaW50IF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9jYWxs KSkgKCpiYXIpIChmbG9hdCwgZG91YmxlKTsKKworaW50Citmb28gKGludCBh KQoreworICByZXR1cm4gYmFyICgzLjBmLCAyLjApICsgYSArIDE7Cit9CisK Ky8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVhcmluZyBwcmlvciB0byBm dW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwgIzEiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIwLCByNCIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0 cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAibW92XHRyMiwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJtb3ZcdHIzLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90ICJ2bW92XC5mMzJcdHMwLCAjMVwuMCIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3Zc LmYzMlx0czEsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgInZtb3ZcLmY2NFx0ZDEsICMxXC4wIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjY0XHRk MiwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ2bW92XC5mNjRcdGQzLCAjMVwuMCIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmY2NFx0ZDQsICMxXC4wIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwu ZjY0XHRkNSwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJ2bW92XC5mNjRcdGQ2LCAjMVwuMCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmY2NFx0ZDcsICMx XC4wIiB9IH0gKi8KKworLyogTm93IHdlIGNoZWNrIHRoYXQgd2UgdXNlIHRo ZSBjb3JyZWN0IGludHJpbnNpYyB0byBjYWxsLiAgKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAiYmxcdF9fZ251X2Ntc2Vfbm9uc2VjdXJl X2NhbGwiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FybS9jbXNlL21haW5saW5lL2hhcmQvY21zZS03LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvaGFyZC9j bXNlLTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTgyNTllYWVmNmRh MTkzM2VmMmQ1OGQ2M2I5N2Q0YmI0ZTQ1MGY0Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5l L2hhcmQvY21zZS03LmMKQEAgLTAsMCArMSwzNCBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0 IGFybV9hcmNoX3Y4bV9tYWluX29rIH0gKi8KKy8qIHsgZGctYWRkLW9wdGlv bnMgYXJtX2FyY2hfdjhtX21haW4gfSAqLworLyogeyBkZy1za2lwLWlmICJE byBub3QgY29tYmluZSBmbG9hdC1hYmk9IGhhcmQgfCBzb2Z0IHwgc29mdGZw IiB7Ki0qLSp9IHsiLW1mbG9hdC1hYmk9c29mdCIgLW1mbG9hdC1hYmk9c29m dGZwIH0geyIifSB9ICovCisvKiB7IGRnLXNraXAtaWYgIlNraXAgdGhlc2Ug aWYgdGVzdGluZyBzaW5nbGUgcHJlY2lzaW9uIiB7Ki0qLSp9IHsiLW1mcHU9 Ki1zcC0qIn0geyIifSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSAt bWZsb2F0LWFiaT1oYXJkIC1tZnB1PWZwdjUtZDE2IiB9ICAqLworCitpbnQg X19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmJhcikg KHZvaWQpOworCitpbnQKK2ZvbyAoaW50IGEpCit7CisgIHJldHVybiBiYXIg KCkgKyBhICsgMTsKK30KKworLyogQ2hlY2tzIGZvciBzYXZpbmcgYW5kIGNs ZWFyaW5nIHByaW9yIHRvIGZ1bmN0aW9uIGNhbGwuICAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQs IHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgIm1vdlx0cjAsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAibW92XHRyMSwgcjQiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIyLCByNCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjMsIHI0IiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1vdlwuZjY0 XHRkMCwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJ2bW92XC5mNjRcdGQxLCAjMVwuMCIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmY2NFx0ZDIsICMxXC4w IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidm1v dlwuZjY0XHRkMywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ2bW92XC5mNjRcdGQ0LCAjMVwuMCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmY2NFx0ZDUs ICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAidm1vdlwuZjY0XHRkNiwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mNjRcdGQ3LCAjMVwuMCIgfSB9 ICovCisKKy8qIE5vdyB3ZSBjaGVjayB0aGF0IHdlIHVzZSB0aGUgY29ycmVj dCBpbnRyaW5zaWMgdG8gY2FsbC4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3VyZV9jYWxsIiB9 IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FybS9jbXNlL21haW5saW5lL2hhcmQvY21zZS04LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvaGFyZC9jbXNlLTgu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJkZGY5NTQwMzc0ZjMwYWUz Njk0MjU5ZjFlZGI2MjE2MTQ1NWUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL2hhcmQv Y21zZS04LmMKQEAgLTAsMCArMSwzMyBAQAorLyogeyBkZy1kbyBjb21waWxl IH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV9h cmNoX3Y4bV9tYWluX29rIH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJt X2FyY2hfdjhtX21haW4gfSAqLworLyogeyBkZy1za2lwLWlmICJEbyBub3Qg Y29tYmluZSBmbG9hdC1hYmk9IGhhcmQgfCBzb2Z0IHwgc29mdGZwIiB7Ki0q LSp9IHsiLW1mbG9hdC1hYmk9c29mdCIgLW1mbG9hdC1hYmk9c29mdGZwIH0g eyIifSB9ICovCisvKiB7IGRnLXNraXAtaWYgIlNraXAgdGhlc2UgaWYgdGVz dGluZyBzaW5nbGUgcHJlY2lzaW9uIiB7Ki0qLSp9IHsiLW1mcHU9Ki1zcC0q In0geyIifSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSAtbWZsb2F0 LWFiaT1oYXJkIC1tZnB1PWZwdjUtZDE2IiB9ICAqLworCitpbnQgX19hdHRy aWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmJhcikgKGRvdWJs ZSk7CisKK2ludAorZm9vIChpbnQgYSkKK3sKKyAgcmV0dXJuIGJhciAoMi4w KSArIGEgKyAxOworfQorCisvKiBDaGVja3MgZm9yIHNhdmluZyBhbmQgY2xl YXJpbmcgcHJpb3IgdG8gZnVuY3Rpb24gY2FsbC4gICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzcnNcdHI0LCByNCwgIzEiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc2xzXHRyNCwg cjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAibW92XHRyMCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJtb3ZcdHIxLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjIsIHI0IiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyMywgcjQiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAidm1vdlwu ZjY0XHRkMCwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJ2bW92XC5mNjRcdGQxLCAjMVwuMCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmY2NFx0ZDIsICMx XC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi dm1vdlwuZjY0XHRkMywgIzFcLjAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mNjRcdGQ0LCAjMVwuMCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInZtb3ZcLmY2NFx0 ZDUsICMxXC4wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAidm1vdlwuZjY0XHRkNiwgIzFcLjAiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ2bW92XC5mNjRcdGQ3LCAjMVwuMCIg fSB9ICovCisKKy8qIE5vdyB3ZSBjaGVjayB0aGF0IHdlIHVzZSB0aGUgY29y cmVjdCBpbnRyaW5zaWMgdG8gY2FsbC4gICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3VyZV9jYWxs IiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hcm0vY21zZS9tYWlubGluZS9zb2Z0L2Ntc2UtMTMuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9zb2Z0L2Ntc2Ut MTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmJkMjYyYzg5MDg1ZWIw ZGM4NzM3YWQ3OTU1YzNhMTI1MzE0OTJiCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL3Nv ZnQvY21zZS0xMy5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBh cm1fYXJjaF92OG1fbWFpbl9vayB9ICovCisvKiB7IGRnLWFkZC1vcHRpb25z IGFybV9hcmNoX3Y4bV9tYWluIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiRG8g bm90IGNvbWJpbmUgZmxvYXQtYWJpPSBoYXJkIHwgc29mdCB8IHNvZnRmcCIg eyotKi0qfSB7Ii1tZmxvYXQtYWJpPWhhcmQiIC1tZmxvYXQtYWJpPXNvZnRm cCB9IHsiIn0gfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UgLW1mbG9h dC1hYmk9c29mdCIgfSAgKi8KKworaW50IF9fYXR0cmlidXRlX18gKChjbXNl X25vbnNlY3VyZV9jYWxsKSkgKCpiYXIpIChmbG9hdCwgZG91YmxlKTsKKwor aW50Citmb28gKGludCBhKQoreworICByZXR1cm4gYmFyICgxLjBmLCAyLjAp ICsgYSArIDE7Cit9CisKKy8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVh cmluZyBwcmlvciB0byBmdW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCBy NCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCAibW92XHRyMCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJtb3ZcdHIxLCByNCIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3ZcdHIyLCByNCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3ZcdHIz LCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90ICJ2bW92IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3QgInZtc3IiIH0gfSAqLworCisvKiBOb3cgd2UgY2hlY2sgdGhh dCB3ZSB1c2UgdGhlIGNvcnJlY3QgaW50cmluc2ljIHRvIGNhbGwuICAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21z ZV9ub25zZWN1cmVfY2FsbCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9zb2Z0L2Nt c2UtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21h aW5saW5lL3NvZnQvY21zZS03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u ZTMzNTY4NDAwZWY4MzBhYmFhMDE5YjVjMjcyN2E5ZjNiNWQ1NzA0YgotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v Y21zZS9tYWlubGluZS9zb2Z0L2Ntc2UtNy5jCkBAIC0wLDAgKzEsMjcgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZm ZWN0aXZlLXRhcmdldCBhcm1fYXJjaF92OG1fbWFpbl9vayB9ICovCisvKiB7 IGRnLWFkZC1vcHRpb25zIGFybV9hcmNoX3Y4bV9tYWluIH0gKi8KKy8qIHsg ZGctc2tpcC1pZiAiRG8gbm90IGNvbWJpbmUgZmxvYXQtYWJpPSBoYXJkIHwg c29mdCB8IHNvZnRmcCIgeyotKi0qfSB7Ii1tZmxvYXQtYWJpPWhhcmQiIC1t ZmxvYXQtYWJpPXNvZnRmcCB9IHsiIn0gfSAqLworLyogeyBkZy1vcHRpb25z ICItbWNtc2UgLW1mbG9hdC1hYmk9c29mdCIgfSAgKi8KKworaW50IF9fYXR0 cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9jYWxsKSkgKCpiYXIpICh2b2lk KTsKKworaW50Citmb28gKGludCBhKQoreworICByZXR1cm4gYmFyICgpICsg YSArIDE7Cit9CisKKy8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVhcmlu ZyBwcmlvciB0byBmdW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwg IzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJt b3ZcdHIwLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgIm1vdlx0cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92XHRyMiwgcjQiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIzLCByNCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJ2bW92IiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInZtc3Ii IH0gfSAqLworCisvKiBOb3cgd2UgY2hlY2sgdGhhdCB3ZSB1c2UgdGhlIGNv cnJlY3QgaW50cmluc2ljIHRvIGNhbGwuICAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2Fs bCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hcm0vY21zZS9tYWlubGluZS9zb2Z0L2Ntc2UtOC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL3NvZnQvY21z ZS04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI0YTEyZTBhNDE0NzMw ZWIxY2JlYmZjYTg1NzRkNTQ4MjM4YWIyOAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9z b2Z0L2Ntc2UtOC5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBh cm1fYXJjaF92OG1fbWFpbl9vayB9ICovCisvKiB7IGRnLWFkZC1vcHRpb25z IGFybV9hcmNoX3Y4bV9tYWluIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiRG8g bm90IGNvbWJpbmUgZmxvYXQtYWJpPSBoYXJkIHwgc29mdCB8IHNvZnRmcCIg eyotKi0qfSB7Ii1tZmxvYXQtYWJpPWhhcmQiIC1tZmxvYXQtYWJpPXNvZnRm cCB9IHsiIn0gfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UgLW1mbG9h dC1hYmk9c29mdCIgfSAgKi8KKworaW50IF9fYXR0cmlidXRlX18gKChjbXNl X25vbnNlY3VyZV9jYWxsKSkgKCpiYXIpIChkb3VibGUpOworCitpbnQKK2Zv byAoaW50IGEpCit7CisgIHJldHVybiBiYXIgKDIuMCkgKyBhICsgMTsKK30K KworLyogQ2hlY2tzIGZvciBzYXZpbmcgYW5kIGNsZWFyaW5nIHByaW9yIHRv IGZ1bmN0aW9uIGNhbGwuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJsc3JzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3ZcdHIw LCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90ICJtb3ZcdHIxLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIm1vdlx0cjIsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyMywgcjQiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAidm1vdiIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJ2bXNyIiB9 IH0gKi8KKworLyogTm93IHdlIGNoZWNrIHRoYXQgd2UgdXNlIHRoZSBjb3Jy ZWN0IGludHJpbnNpYyB0byBjYWxsLiAgKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAiYmxcdF9fZ251X2Ntc2Vfbm9uc2VjdXJlX2NhbGwi IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FybS9jbXNlL21haW5saW5lL3NvZnRmcC1zcC9jbXNlLTcuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9zb2Z0ZnAt c3AvY21zZS03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIxOTVlYjU4 ZDU5ZmU5ZWE1ZWQ3NGFmNzk2NDYxOTljNjFiY2RhZQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlu bGluZS9zb2Z0ZnAtc3AvY21zZS03LmMKQEAgLTAsMCArMSwyNiBAQAorLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IGFybV9hcmNoX3Y4bV9tYWluX29rIH0gKi8KKy8qIHsgZGct YWRkLW9wdGlvbnMgYXJtX2FyY2hfdjhtX21haW4gfSAqLworLyogeyBkZy1z a2lwLWlmICJEbyBub3QgY29tYmluZSBmbG9hdC1hYmk9IGhhcmQgfCBzb2Z0 IHwgc29mdGZwIiB7Ki0qLSp9IHsiLW1mbG9hdC1hYmk9c29mdCIgLW1mbG9h dC1hYmk9aGFyZCB9IHsiIn0gfSAqLworLyogeyBkZy1za2lwLWlmICJTa2lw IHRoZXNlIGlmIHRlc3RpbmcgZG91YmxlIHByZWNpc2lvbiIgeyotKi0qfSB7 Ii1tZnB1PWZwdls0LTVdLWQxNiJ9IHsiIn0gfSAqLworLyogeyBkZy1vcHRp b25zICItbWNtc2UgLW1mbG9hdC1hYmk9c29mdGZwIC1tZnB1PWZwdjUtc3At ZDE2IiB9ICAqLworCitpbnQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2Vj dXJlX2NhbGwpKSAoKmJhcikgKHZvaWQpOworCitpbnQKK2ZvbyAoaW50IGEp Cit7CisgIHJldHVybiBiYXIgKCkgKyBhICsgMTsKK30KKworLyogQ2hlY2tz IGZvciBzYXZpbmcgYW5kIGNsZWFyaW5nIHByaW9yIHRvIGZ1bmN0aW9uIGNh bGwuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc3Jz XHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjAsIHI0IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyMSwgcjQiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIy LCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Im1vdlx0cjMsIHI0IiB9IH0gKi8KKworLyogTm93IHdlIGNoZWNrIHRoYXQg d2UgdXNlIHRoZSBjb3JyZWN0IGludHJpbnNpYyB0byBjYWxsLiAgKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYmxcdF9fZ251X2Ntc2Vf bm9uc2VjdXJlX2NhbGwiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvc29mdGZwLXNw L2Ntc2UtOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNl L21haW5saW5lL3NvZnRmcC1zcC9jbXNlLTguYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4yMmVkM2Y4YWY4ODJmOTZkYTQ5OTE5YzYwZmM2ZjRjZDc0ZGZj NTRiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL21haW5saW5lL3NvZnRmcC1zcC9jbXNlLTguYwpAQCAt MCwwICsxLDI1IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX2FyY2hfdjhtX21haW5f b2sgfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1fYXJjaF92OG1fbWFp biB9ICovCisvKiB7IGRnLXNraXAtaWYgIkRvIG5vdCBjb21iaW5lIGZsb2F0 LWFiaT0gaGFyZCB8IHNvZnQgfCBzb2Z0ZnAiIHsqLSotKn0geyItbWZsb2F0 LWFiaT1zb2Z0IiAtbWZsb2F0LWFiaT1oYXJkIH0geyIifSB9ICovCisvKiB7 IGRnLXNraXAtaWYgIlNraXAgdGhlc2UgaWYgdGVzdGluZyBkb3VibGUgcHJl Y2lzaW9uIiB7Ki0qLSp9IHsiLW1mcHU9ZnB2WzQtNV0tZDE2In0geyIifSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSAtbWZsb2F0LWFiaT1zb2Z0 ZnAgLW1mcHU9ZnB2NS1zcC1kMTYiIH0gICovCisKK2ludCBfX2F0dHJpYnV0 ZV9fICgoY21zZV9ub25zZWN1cmVfY2FsbCkpICgqYmFyKSAoZG91YmxlKTsK KworaW50Citmb28gKGludCBhKQoreworICByZXR1cm4gYmFyICgyLjApICsg YSArIDE7Cit9CisKKy8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVhcmlu ZyBwcmlvciB0byBmdW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCByNCwg IzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAibW92XHRyMCwgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAibW92XHRyMSwgcjQiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIyLCByNCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdlx0cjMsIHI0IiB9 IH0gKi8KKworLyogTm93IHdlIGNoZWNrIHRoYXQgd2UgdXNlIHRoZSBjb3Jy ZWN0IGludHJpbnNpYyB0byBjYWxsLiAgKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAiYmxcdF9fZ251X2Ntc2Vfbm9uc2VjdXJlX2NhbGwi IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FybS9jbXNlL21haW5saW5lL3NvZnRmcC9jbXNlLTEzLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvc29mdGZwL2Nt c2UtMTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjM0MDY1ZTdjYjY0 YTUwNjljYmIzYzliZTRiOGNmOTE3N2Y1ZTI5Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5l L3NvZnRmcC9jbXNlLTEzLmMKQEAgLTAsMCArMSwyNSBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFy Z2V0IGFybV9hcmNoX3Y4bV9tYWluX29rIH0gKi8KKy8qIHsgZGctYWRkLW9w dGlvbnMgYXJtX2FyY2hfdjhtX21haW4gfSAqLworLyogeyBkZy1za2lwLWlm ICJEbyBub3QgY29tYmluZSBmbG9hdC1hYmk9IGhhcmQgfCBzb2Z0IHwgc29m dGZwIiB7Ki0qLSp9IHsiLW1mbG9hdC1hYmk9c29mdCIgLW1mbG9hdC1hYmk9 aGFyZCB9IHsiIn0gfSAqLworLyogeyBkZy1za2lwLWlmICJTa2lwIHRoZXNl IGlmIHRlc3Rpbmcgc2luZ2xlIHByZWNpc2lvbiIgeyotKi0qfSB7Ii1tZnB1 PSotc3AtKiJ9IHsiIn0gfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2Ug LW1mbG9hdC1hYmk9c29mdGZwIC1tZnB1PWZwdjUtZDE2IiB9ICAqLworCitp bnQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmJh cikgKGZsb2F0LCBkb3VibGUpOworCitpbnQKK2ZvbyAoaW50IGEpCit7Cisg IHJldHVybiBiYXIgKDEuMGYsIDIuMCkgKyBhICsgMTsKK30KKworLyogQ2hl Y2tzIGZvciBzYXZpbmcgYW5kIGNsZWFyaW5nIHByaW9yIHRvIGZ1bmN0aW9u IGNhbGwuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJs c3JzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAibHNsc1x0cjQsIHI0LCAjMSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3ZcdHIwLCByNCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxuXHRtb3Zc dHIxLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICJcblx0bW92XHRyMiwgcjRcblx0bW92XHRyMywgcjQiIH0gfSAq LworCisvKiBOb3cgd2UgY2hlY2sgdGhhdCB3ZSB1c2UgdGhlIGNvcnJlY3Qg aW50cmluc2ljIHRvIGNhbGwuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIgfSB9 ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h cm0vY21zZS9tYWlubGluZS9zb2Z0ZnAvY21zZS03LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvc29mdGZwL2Ntc2Ut Ny5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0Zjg0NjZjYzExMmMwM2Vl NWEwNWU2ZTUyMjNkMmM2NmEwMzNiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvc29m dGZwL2Ntc2UtNy5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBh cm1fYXJjaF92OG1fbWFpbl9vayB9ICovCisvKiB7IGRnLWFkZC1vcHRpb25z IGFybV9hcmNoX3Y4bV9tYWluIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiRG8g bm90IGNvbWJpbmUgZmxvYXQtYWJpPSBoYXJkIHwgc29mdCB8IHNvZnRmcCIg eyotKi0qfSB7Ii1tZmxvYXQtYWJpPXNvZnQiIC1tZmxvYXQtYWJpPWhhcmQg fSB7IiJ9IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiU2tpcCB0aGVzZSBpZiB0 ZXN0aW5nIHNpbmdsZSBwcmVjaXNpb24iIHsqLSotKn0geyItbWZwdT0qLXNw LSoifSB7IiJ9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIC1tZmxv YXQtYWJpPXNvZnRmcCAtbWZwdT1mcHY1LWQxNiIgfSAgKi8KKworaW50IF9f YXR0cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9jYWxsKSkgKCpiYXIpICh2 b2lkKTsKKworaW50Citmb28gKGludCBhKQoreworICByZXR1cm4gYmFyICgp ICsgYSArIDE7Cit9CisKKy8qIENoZWNrcyBmb3Igc2F2aW5nIGFuZCBjbGVh cmluZyBwcmlvciB0byBmdW5jdGlvbiBjYWxsLiAgKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAibHNyc1x0cjQsIHI0LCAjMSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzbHNcdHI0LCBy NCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJtb3ZcdHIwLCByNCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIm1vdlx0cjEsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibW92XHRyMiwgcjQiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIzLCByNCIgfSB9ICov CisKKy8qIE5vdyB3ZSBjaGVjayB0aGF0IHdlIHVzZSB0aGUgY29ycmVjdCBp bnRyaW5zaWMgdG8gY2FsbC4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3VyZV9jYWxsIiB9IH0g Ki8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9jbXNlL21haW5saW5lL3NvZnRmcC9jbXNlLTguYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9zb2Z0ZnAvY21zZS04 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZlOTRkZTg1NDE3YjgxZjlk Y2IzNjZlYjFiNDBkYzE2NjFjOTFiNwotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGluZS9zb2Z0 ZnAvY21zZS04LmMKQEAgLTAsMCArMSwyNSBAQAorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFy bV9hcmNoX3Y4bV9tYWluX29rIH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMg YXJtX2FyY2hfdjhtX21haW4gfSAqLworLyogeyBkZy1za2lwLWlmICJEbyBu b3QgY29tYmluZSBmbG9hdC1hYmk9IGhhcmQgfCBzb2Z0IHwgc29mdGZwIiB7 Ki0qLSp9IHsiLW1mbG9hdC1hYmk9c29mdCIgLW1mbG9hdC1hYmk9aGFyZCB9 IHsiIn0gfSAqLworLyogeyBkZy1za2lwLWlmICJTa2lwIHRoZXNlIGlmIHRl c3Rpbmcgc2luZ2xlIHByZWNpc2lvbiIgeyotKi0qfSB7Ii1tZnB1PSotc3At KiJ9IHsiIn0gfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UgLW1mbG9h dC1hYmk9c29mdGZwIC1tZnB1PWZwdjUtZDE2IiB9ICAqLworCitpbnQgX19h dHRyaWJ1dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2NhbGwpKSAoKmJhcikgKGRv dWJsZSk7CisKK2ludAorZm9vIChpbnQgYSkKK3sKKyAgcmV0dXJuIGJhciAo Mi4wKSArIGEgKyAxOworfQorCisvKiBDaGVja3MgZm9yIHNhdmluZyBhbmQg Y2xlYXJpbmcgcHJpb3IgdG8gZnVuY3Rpb24gY2FsbC4gICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzcnNcdHI0LCByNCwgIzEiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc2xzXHRy NCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3QgIm1vdlx0cjAsIHI0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdlx0cjEsIHI0IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XHRyMiwgcjQiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIz LCByNCIgfSB9ICovCisKKy8qIE5vdyB3ZSBjaGVjayB0aGF0IHdlIHVzZSB0 aGUgY29ycmVjdCBpbnRyaW5zaWMgdG8gY2FsbC4gICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNlX25vbnNlY3Vy ZV9jYWxsIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hcm0vY21zZS9tYWlubGluZS91bmlvbi0xLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvdW5pb24tMS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzg0NmNkN2E1MTMwM2VjMDBm OGY1MTJhNTRjZDY5N2ZiZDA2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvbWFpbmxpbmUvdW5pb24t MS5jCkBAIC0wLDAgKzEsNjkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1tY21zZSIgfSAqLworCit0eXBlZGVmIHN0 cnVjdAoreworICB1bnNpZ25lZCBjaGFyCSAgYSA6MjsKKyAgdW5zaWduZWQg Y2hhcgkgICAgOjA7CisgIHVuc2lnbmVkIHNob3J0ICBiIDo1OworICB1bnNp Z25lZCBjaGFyCSAgICA6MDsKKyAgdW5zaWduZWQgc2hvcnQgIGMgOjM7Cisg IHVuc2lnbmVkIGNoYXIJICAgIDowOworICB1bnNpZ25lZCBpbnQJICBkIDo5 OworfSB0ZXN0X3N0XzE7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2ln bmVkIHNob3J0ICBhIDo3OworICB1bnNpZ25lZCBjaGFyCSAgICA6MDsKKyAg dW5zaWduZWQgY2hhcgkgIGIgOjE7CisgIHVuc2lnbmVkIGNoYXIJICAgIDow OworICB1bnNpZ25lZCBzaG9ydCAgYyA6NjsKK30gdGVzdF9zdF8yOworCit0 eXBlZGVmIHVuaW9uCit7CisgIHRlc3Rfc3RfMSBzdF8xOworICB0ZXN0X3N0 XzIgc3RfMjsKK310ZXN0X3VuOworCit0eXBlZGVmIHVuaW9uCit7CisgIHRl c3RfdW4gdW47CisgIHN0cnVjdAorICAgIHsKKyAgICAgIHVuc2lnbmVkIGlu dCB2MTsKKyAgICAgIHVuc2lnbmVkIGludCB2MjsKKyAgICAgIHVuc2lnbmVk IGludCB2MzsKKyAgICAgIHVuc2lnbmVkIGludCB2NDsKKyAgICB9dmFsdWVz OworfSByZWFkX3VuOworCisKK3R5cGVkZWYgdm9pZCBfX2F0dHJpYnV0ZV9f ICgoY21zZV9ub25zZWN1cmVfY2FsbCkpICgqZm9vX25zKSAodGVzdF91bik7 CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgcmVhZF91biByOworICBmb29f bnMgZjsKKworICBmID0gKGZvb19ucykgMHgyMDAwMDA7CisgIHIudmFsdWVz LnYxID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjIgPSAweEZGRkZGRkZG OworCisgIGYgKHIudW4pOworICByZXR1cm4gMDsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z3XHRpcCwgIzgwNjMiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3Z0XHRpcCwg NjMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJh bmRcdHIwLCByMCwgaXAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJtb3Z3XHRpcCwgIzUxMSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZFx0cjEsIHIxLCBpcCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzcnNcdHI0LCBy NCwgIzEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJsc2xzXHRyNCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92XHRyMiwgcjQiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcdHIzLCByNCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJsXHRfX2dudV9jbXNl X25vbnNlY3VyZV9jYWxsIiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL21haW5saW5lL3VuaW9uLTIu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlubGlu ZS91bmlvbi0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwZDBmMTM2 ZWYxNzExMTFjMWNjYTZjZDI0YzRmNDZiOWZjYjdmYwotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9tYWlu bGluZS91bmlvbi0yLmMKQEAgLTAsMCArMSw4NCBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIiB9ICovCisK K3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIGNoYXIJICBhIDoyOwor ICB1bnNpZ25lZCBjaGFyCSAgICA6MDsKKyAgdW5zaWduZWQgc2hvcnQgIGIg OjU7CisgIHVuc2lnbmVkIGNoYXIJICAgIDowOworICB1bnNpZ25lZCBzaG9y dCAgYyA6MzsKKyAgdW5zaWduZWQgY2hhcgkgICAgOjA7CisgIHVuc2lnbmVk IGludAkgIGQgOjk7Cit9IHRlc3Rfc3RfMTsKKwordHlwZWRlZiBzdHJ1Y3QK K3sKKyAgdW5zaWduZWQgc2hvcnQgIGEgOjc7CisgIHVuc2lnbmVkIGNoYXIJ ICAgIDowOworICB1bnNpZ25lZCBjaGFyCSAgYiA6MTsKKyAgdW5zaWduZWQg Y2hhcgkgICAgOjA7CisgIHVuc2lnbmVkIHNob3J0ICBjIDo2OworfSB0ZXN0 X3N0XzI7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIGNoYXIJ ICBhOworICB1bnNpZ25lZCBpbnQJICAgIDowOworICB1bnNpZ25lZCBpbnQJ ICBiIDoxOworICB1bnNpZ25lZCBzaG9ydCAgICA6MDsKKyAgdW5zaWduZWQg c2hvcnQgIGM7CisgIHVuc2lnbmVkIGludAkgICAgOjA7CisgIHVuc2lnbmVk IGludAkgIGQgOjIxOworfSB0ZXN0X3N0XzM7CisKK3R5cGVkZWYgdW5pb24K K3sKKyAgdGVzdF9zdF8xIHN0XzE7CisgIHRlc3Rfc3RfMiBzdF8yOworICB0 ZXN0X3N0XzMgc3RfMzsKK310ZXN0X3VuOworCit0eXBlZGVmIHVuaW9uCit7 CisgIHRlc3RfdW4gdW47CisgIHN0cnVjdAorICAgIHsKKyAgICAgIHVuc2ln bmVkIGludCB2MTsKKyAgICAgIHVuc2lnbmVkIGludCB2MjsKKyAgICAgIHVu c2lnbmVkIGludCB2MzsKKyAgICAgIHVuc2lnbmVkIGludCB2NDsKKyAgICB9 dmFsdWVzOworfSByZWFkX3VuOworCisKK3R5cGVkZWYgdm9pZCBfX2F0dHJp YnV0ZV9fICgoY21zZV9ub25zZWN1cmVfY2FsbCkpICgqZm9vX25zKSAodGVz dF91bik7CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgcmVhZF91biByOwor ICBmb29fbnMgZjsKKworICBmID0gKGZvb19ucykgMHgyMDAwMDA7CisgIHIu dmFsdWVzLnYxID0gMHhGRkZGRkZGRjsKKyAgci52YWx1ZXMudjIgPSAweEZG RkZGRkZGOworICByLnZhbHVlcy52MyA9IDB4RkZGRkZGRkY7CisKKyAgZiAo ci51bik7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIm1vdndcdGlwLCAjODE5MSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdnRcdGlwLCA2MyIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFuZFx0cjAsIHIw LCBpcCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Im1vdndcdGlwLCAjNTExIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAibW92dFx0aXAsIDY1NTM1IiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYW5kXHRyMSwgcjEsIGlwIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92d1x0aXAs ICM2NTUzNSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgIm1vdnRcdGlwLCAzMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImFuZFx0cjIsIHIyLCBpcCIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxzcnNcdHI0LCByNCwgIzEiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsc2xzXHRy NCwgcjQsICMxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAibW92XHRyMywgcjQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJibFx0X19nbnVfY21zZV9ub25zZWN1cmVfY2FsbCIg fSB9ICovCmRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2FybS9jbXNlX25v bnNlY3VyZV9jYWxsLlMgYi9saWJnY2MvY29uZmlnL2FybS9jbXNlX25vbnNl Y3VyZV9jYWxsLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY2ZGE3NjFk NmMwOTgzZjZmZjY0NThlYzA1MjM5NjBhZTlhNWVhNQotLS0gL2Rldi9udWxs CisrKyBiL2xpYmdjYy9jb25maWcvYXJtL2Ntc2Vfbm9uc2VjdXJlX2NhbGwu UwpAQCAtMCwwICsxLDEzMyBAQAorLyogQ01TRSB3cmFwcGVyIGZ1bmN0aW9u IHVzZWQgdG8gc2F2ZSwgY2xlYXIgYW5kIHJlc3RvcmUgY2FsbGVlIHNhdmVk IHJlZ2lzdGVycworICAgZm9yIGNtc2Vfbm9uc2VjdXJlX2NhbGwncy4KKwor ICAgQ29weXJpZ2h0IChDKSAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkgQVJNIEx0ZC4KKworICAgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZQorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorICAgbGF0ZXIgdmVy c2lvbi4KKworICAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorICAgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgVW5kZXIgU2Vj dGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRp dGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBS dW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor CisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0 aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBD T1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAg IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy5zeW50 YXggdW5pZmllZAorLnRodW1iCisuZ2xvYmFsIF9fZ251X2Ntc2Vfbm9uc2Vj dXJlX2NhbGwKK19fZ251X2Ntc2Vfbm9uc2VjdXJlX2NhbGw6CisjaWYgZGVm aW5lZChfX0FSTV9BUkNIXzhNX01BSU5fXykKK3B1c2gJICAgIHtyNS1yMTEs bHJ9Cittb3YJICAgIHI3LCByNAorbW92CSAgICByOCwgcjQKK21vdgkgICAg cjksIHI0Cittb3YJICAgIHIxMCwgcjQKK21vdgkgICAgcjExLCByNAorbW92 CSAgICBpcCwgcjQKKworLyogU2F2ZSBhbmQgY2xlYXIgY2FsbGVlLXNhdmVk IHJlZ2lzdGVycyBvbmx5IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggaGFyZCBm bG9hdAorICAgQUJJLiAgVGhlIHVudXNlZCBjYWxsZXItc2F2ZWQgcmVnaXN0 ZXJzIGhhdmUgYWxyZWFkeSBiZWVuIGNsZWFyZWQgYnkgR0NDCisgICBnZW5l cmF0ZWQgY29kZS4gICovCisjaWZkZWYgX19BUk1fUENTX1ZGUAordnB1c2gu ZjY0ICAge2Q4LWQxNX0KKyNpZiBfX0FSTV9GUCAmIDB4MDQKK21vdgkgICAg cjUsICMwCittb3YJICAgIHI2LCAjMAordm1vdgkgICAgczE2LCBzMTcsIHI1 LCByNgordm1vdgkgICAgczE4LCBzMTksIHI1LCByNgordm1vdgkgICAgczIw LCBzMjEsIHI1LCByNgordm1vdgkgICAgczIyLCBzMjMsIHI1LCByNgordm1v dgkgICAgczI0LCBzMjUsIHI1LCByNgordm1vdgkgICAgczI2LCBzMjcsIHI1 LCByNgordm1vdgkgICAgczI4LCBzMjksIHI1LCByNgordm1vdgkgICAgczMw LCBzMzEsIHI1LCByNgorI2VsaWYgX19BUk1fRlAgJiAweDA4Cit2bW92LmY2 NCAgICBkOCwgIzAuMDAwMDAKK3Ztb3YuZjY0ICAgIGQ5LCAjMC4wMDAwMAor dm1vdi5mNjQgICAgZDEwLCAjMC4wMDAwMAordm1vdi5mNjQgICAgZDExLCAj MC4wMDAwMAordm1vdi5mNjQgICAgZDEyLCAjMC4wMDAwMAordm1vdi5mNjQg ICAgZDEzLCAjMC4wMDAwMAordm1vdi5mNjQgICAgZDE0LCAjMC4wMDAwMAor dm1vdi5mNjQgICAgZDE1LCAjMC4wMDAwMAorI2Vsc2UKKyNlcnJvciAiSGFs ZiBwcmVjaXNpb24gaW1wbGVtZW50YXRpb24gbm90IHN1cHBvcnRlZC4iCisj ZW5kaWYKKy8qIENsZWFyIHRoZSBjdW11bGF0aXZlIGV4Y2VwdGlvbi1zdGF0 dXMgYml0cyAoMC00LDcpIGFuZCB0aGUKKyAgIGNvbmRpdGlvbiBjb2RlIGJp dHMgKDI4LTMxKSBvZiB0aGUgRlBTQ1IuICAqLwordm1ycwkgICAgcjUsIGZw c2NyCittb3Z3CSAgICByNiwgIzY1Mzc2Cittb3Z0CSAgICByNiwgIzQwOTUK K2FuZHMJICAgIHI1LCByNgordm1zcgkgICAgZnBzY3IsIHI1CisKKy8qIFdl IGFyZSBub3QgZGVhbGluZyB3aXRoIGhhcmQgZmxvYXQgQUJJLCBzbyB3ZSBj YW4gc2FmZWx5IHVzZSB0aGUgdmxzdG0gYW5kCisgICB2bGxkbSBpbnN0cnVj dGlvbnMgd2l0aG91dCBuZWVkaW5nIHRvIHByZXNlcnZlIHRoZSByZWdpc3Rl cnMgdXNlZCBmb3IKKyAgIGFyZ3VtZW50IHBhc3NpbmcuICAqLworI2Vsc2UK K3N1YgkgICAgc3AsIHNwLCAjMHg4OCAvKiBSZXNlcnZlIHN0YWNrIHNwYWNl IHRvIHNhdmUgYWxsIGZsb2F0aW5nIHBvaW50CisJCQkgICAgIHJlZ2lzdGVy cywgaW5jbHVkaW5nIEZQU0NSLiAgKi8KK3Zsc3RtCSAgICBzcAkJICAvKiBM YXp5IHN0b3JlIGFuZCBjbGVhcmFuY2Ugb2YgZDAtZDE2IGFuZCBGUFNDUi4g ICovCisjZW5kaWYgLyogX19BUk1fUENTX1ZGUCAqLworCisvKiBNYWtlIHN1 cmUgdG8gY2xlYXIgdGhlICdHRScgYml0cyBvZiB0aGUgQVBTUiByZWdpc3Rl ciBpZiAzMi1iaXQgU0lNRAorICAgaW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFi bGUuICAqLworI2lmIGRlZmluZWQoX19BUk1fRkVBVFVSRV9TSU1EMzIpCitt c3IJICAgIEFQU1JfbnpjdnFnLCByNAorI2Vsc2UKK21zcgkgICAgQVBTUl9u emN2cSwgcjQKKyNlbmRpZgorCittb3YJICAgIHI1LCByNAorbW92CSAgICBy NiwgcjQKK2JseG5zCSAgICByNAorCisjaWZkZWYgX19BUk1fUENTX1ZGUAor dnBvcC5mNjQgICAge2Q4LWQxNX0KKyNlbHNlCit2bGxkbQkgICAgc3AJCSAg LyogTGF6eSByZXN0b3JlIG9mIGQwLWQxNiBhbmQgRlBTQ1IuICAqLworYWRk CSAgICBzcCwgc3AsICMweDg4IC8qIEZyZWUgc3BhY2UgdXNlZCB0byBzYXZl IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4gICovCisjZW5kaWYgLyogX19B Uk1fUENTX1ZGUCAqLworCitwb3AJICAgIHtyNS1yMTEsIHBjfQorCisjZWxp ZiBkZWZpbmVkIChfX0FSTV9BUkNIXzhNX0JBU0VfXykKK3B1c2gJICAgIHty NS1yNywgbHJ9Cittb3YJICAgIHI1LCByOAorbW92CSAgICByNiwgcjkKK21v dgkgICAgcjcsIHIxMAorcHVzaAkgICAge3I1LXI3fQorbW92CSAgICByNSwg cjExCitwdXNoCSAgICB7cjV9Cittb3YJICAgIHI1LCByNAorbW92CSAgICBy NiwgcjQKK21vdgkgICAgcjcsIHI0Cittb3YJICAgIHI4LCByNAorbW92CSAg ICByOSwgcjQKK21vdgkgICAgcjEwLCByNAorbW92CSAgICByMTEsIHI0Citt b3YJICAgIGlwLCByNAorbXNyCSAgICBBUFNSX256Y3ZxLCByNAorYmx4bnMJ ICAgIHI0Citwb3AJICAgIHtyNX0KK21vdgkgICAgcjExLCByNQorcG9wCSAg ICB7cjUtcjd9Cittb3YJICAgIHIxMCwgcjcKK21vdgkgICAgcjksIHI2Citt b3YJICAgIHI4LCByNQorcG9wCSAgICB7cjUtcjcsIHBjfQorCisjZWxzZQor I2Vycm9yICJUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGFybXY4LW0g YmFzZS0gYW5kIG1haW5saW5lLiIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGli Z2NjL2NvbmZpZy9hcm0vdC1hcm0gYi9saWJnY2MvY29uZmlnL2FybS90LWFy bQppbmRleCA1NjE4MTQzYmZkMGYwMmIxNzBkYjNmOWU0YzBhMTVjZWNiNDAz Y2VjLi45ZTg1YWMwNmIxNDZmZWFhMTRhYjgzMzc0YTAxNTY3MzdiODcwMzEw IDEwMDY0NAotLS0gYS9saWJnY2MvY29uZmlnL2FybS90LWFybQorKysgYi9s aWJnY2MvY29uZmlnL2FybS90LWFybQpAQCAtMTIsNCArMTIsNiBAQCBsaWJn Y2Mtb2JqZWN0cyArPSBjbXNlLm8gY21zZV9ub25zZWN1cmVfY2FsbC5vCiAK IGNtc2UubzogJChzcmNkaXIpL2NvbmZpZy9hcm0vY21zZS5jCiAJJChnY2Nf Y29tcGlsZSkgLWMgJChDTVNFX09QVFMpICQ8CitjbXNlX25vbnNlY3VyZV9j YWxsLm86ICQoc3JjZGlyKS9jb25maWcvYXJtL2Ntc2Vfbm9uc2VjdXJlX2Nh bGwuUworCQkgICAgICAgJChnY2NfY29tcGlsZSkgLWMgJDwKIGVuZGlmCg== --------------090109030205030900090709--