From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4900C433FF for ; Fri, 9 Aug 2019 10:54:19 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7FEA22171F for ; Fri, 9 Aug 2019 10:54:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="UWvA48un" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7FEA22171F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:References: To:Subject:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jGJDuXsp/TqoT8ZlS1HI0kHePAip0AcxWnS7gMgCv5A=; b=UWvA48unvyUBSTDy90kpcWPpi KUevZxJNqoNIQjvvdPQIuThfV+nuy48CPvSgKjvAmnTQZBUntXbxSw8hipyEZ4G8qpCSrbQVdMIez kp7Scewut8OAjEng6cobmuyxLPoaskhpYgkw3ie5QipA7OMEBcTDUC/UJihQBAwSMt6JPmftYqH95 K97NH5VyM92DCG2BUDMv3rMVpVVz4Qdm5QyhRazofUfwfJPLNUKNsv5Z7jM9eMkPvf8e5D7uSx6QG K8KS5zfGvXcyZFmmQCPYV/PgwjLCtAZEXkK5ZxS7o+lcbK8YqcJ2PVCLk5P7+5tbjI/nbdZUzSrJT wIg14l99g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hw2XK-0000u5-V2; Fri, 09 Aug 2019 10:54:18 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hw2XG-0000tb-EV for linux-arm-kernel@lists.infradead.org; Fri, 09 Aug 2019 10:54:17 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D42991596; Fri, 9 Aug 2019 03:54:09 -0700 (PDT) Received: from [10.37.8.148] (unknown [10.37.8.148]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 020563F575; Fri, 9 Aug 2019 03:54:08 -0700 (PDT) From: Cristian Marussi Subject: Re: [PATCH v3 02/11] kselftest: arm64: adds first test and common utils To: linux-kselftest@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20190802170300.20662-1-cristian.marussi@arm.com> <20190802170300.20662-3-cristian.marussi@arm.com> Message-ID: <20278fdd-95d0-060f-088d-aba8ac2b0b01@arm.com> Date: Fri, 9 Aug 2019 11:54:06 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20190802170300.20662-3-cristian.marussi@arm.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190809_035414_591100_8151DA82 X-CRM114-Status: GOOD ( 39.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dave P Martin Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkKCk9uIDgvMi8xOSA2OjAyIFBNLCBDcmlzdGlhbiBNYXJ1c3NpIHdyb3RlOgo+IEFkZGVkIHNv bWUgYXJtNjQvc2lnbmFsIHNwZWNpZmljIGJvaWxlcnBsYXRlIGFuZCB1dGlsaXR5IGNvZGUgdG8g aGVscAo+IGZ1cnRoZXIgdGVzdGNhc2UgZGV2ZWxvcG1lbnQuCj4gCj4gQSBzaW1wbGUgdGVzdGNh c2UgYW5kIHJlbGF0ZWQgaGVscGVycyBhcmUgYWxzbyBpbnRyb2R1Y2VkIGluIHRoaXMgY29tbWl0 Ogo+IG1hbmdsZV9wc3RhdGVfaW52YWxpZF9jb21wYXRfdG9nZ2xlIGlzIGEgc2ltcGxlIG1hbmds ZSB0ZXN0Y2FzZSB3aGljaAo+IG1lc3NlcyB3aXRoIHRoZSB1Y29udGV4dF90IGZyb20gd2l0aGlu IHRoZSBzaWdfaGFuZGxlciwgdHJ5aW5nIHRvIHRvZ2dsZQo+IFBTVEFURSBzdGF0ZSBiaXRzIHRv IHN3aXRjaCB0aGUgc3lzdGVtIGJldHdlZW4gMzJiaXQvNjRiaXQgZXhlY3V0aW9uIHN0YXRlLgo+ IEV4cGVjdHMgU0lHU0VHViBvbiB0ZXN0IFBBU1MuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ3Jpc3Rp YW4gTWFydXNzaSA8Y3Jpc3RpYW4ubWFydXNzaUBhcm0uY29tPgo+IC0tLQo+IEEgZmV3IGZpeGVz Ogo+IC0gdGVzdF9hcm02NF9zaWduYWxzLnNoIHJ1bm5lciBzY3JpcHQgZ2VuZXJhdGlvbiBoYXMg YmVlbiByZXZpZXdlZCBpbiBvcmRlciB0bwo+ICAgIGJlIHNhZmUgYWdhaW5zdCB0aGUgLmdpdGln bm9yZQo+IC0gdXNpbmcga3NlbGZ0ZXN0Lmggb2ZmaWNpYWxseSBwcm92aWRlZCBkZWZpbmVzIGZv ciB0ZXN0cycgcmV0dXJuIHZhbHVlcwo+IC0gcmVtb3ZlZCBTQUZFX1dSSVRFKCkvZHVtcF91Yygp Cj4gLSBsb29raW5nIGZvciBzaV9jb2RlPT1TRUdWX0FDQ0VSUiBvbiBTRUdWIHRlc3QgY2FzZXMg dG8gYmV0dGVyIHVuZGVyc3RhbmQgaWYKPiAgICB0aGUgc2lnZmF1bHQgaGFkIGJlZW4gZGlyZWN0 bHkgdHJpZ2dlcmVkIGJ5IEtlcm5lbAo+IC0tLQo+ICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv YXJtNjQvTWFrZWZpbGUgICAgICAgIHwgICAyICstCj4gICAuLi4vdGVzdGluZy9zZWxmdGVzdHMv YXJtNjQvc2lnbmFsLy5naXRpZ25vcmUgfCAgIDYgKwo+ICAgdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL01ha2VmaWxlIHwgIDg4ICsrKysrKwo+ICAgdG9vbHMvdGVzdGluZy9z ZWxmdGVzdHMvYXJtNjQvc2lnbmFsL1JFQURNRSAgIHwgIDU5ICsrKysKPiAgIC4uLi9hcm02NC9z aWduYWwvdGVzdF9hcm02NF9zaWduYWxzLnNyY19zaGVsbCB8ICA1NSArKysrCj4gICAuLi4vc2Vs ZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0X3NpZ25hbHMuYyAgICAgfCAgMjYgKysKPiAgIC4uLi9z ZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFscy5oICAgICB8IDEzNyArKysrKysrKysK PiAgIC4uLi9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmMgICAgICAgICB8IDI2MSAr KysrKysrKysrKysrKysrKysKPiAgIC4uLi9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxz LmggICAgICAgICB8ICAxMyArCj4gICAuLi4vYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy8uZ2l0aWdu b3JlICAgICAgICAgfCAgIDEgKwo+ICAgLi4uL21hbmdsZV9wc3RhdGVfaW52YWxpZF9jb21wYXRf dG9nZ2xlLmMgICAgIHwgIDI1ICsrCj4gICAuLi4vYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy90ZXN0 Y2FzZXMuYyAgICAgICAgfCAxNTAgKysrKysrKysrKwo+ICAgLi4uL2FybTY0L3NpZ25hbC90ZXN0 Y2FzZXMvdGVzdGNhc2VzLmggICAgICAgIHwgIDgzICsrKysrKwo+ICAgMTMgZmlsZXMgY2hhbmdl ZCwgOTA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvLmdpdGlnbm9yZQo+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC9NYWtl ZmlsZQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0 L3NpZ25hbC9SRUFETUUKPiAgIGNyZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9hcm02NF9zaWduYWxzLnNyY19zaGVsbAo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0X3Np Z25hbHMuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Fy bTY0L3NpZ25hbC90ZXN0X3NpZ25hbHMuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0X3NpZ25hbHNfdXRpbHMuYwo+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0 X3NpZ25hbHNfdXRpbHMuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvLmdpdGlnbm9yZQo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvbWFu Z2xlX3BzdGF0ZV9pbnZhbGlkX2NvbXBhdF90b2dnbGUuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvdGVzdGNhc2Vz LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9z aWduYWwvdGVzdGNhc2VzL3Rlc3RjYXNlcy5oCj4gCgpBIGZldyBtb3JlIGNvbXBpbGF0aW9uIHdh cm5pbmdzIHRyaWdnZXJlZCBieSBHQ0MtOCBPTkxZIHdoZW4gY29tcGlsaW5nIHZpYSB0aGUgdG9w IGtzZWxmdGVzdCBNYWtlZmlsZS90YXJnZXQKKGR1ZSB0byBzb21lIGFkZGl0aW9uYWwgLVcgcGFz c2VkIGRvd24gYW5kIGFuIGF3a3dhcmQgdXNlIG9mIHNucHJpbnRmIG9uIG15IHNpZGUuLi4pCgoK dGVzdF9zaWduYWxzX3V0aWxzLmM6IEluIGZ1bmN0aW9uIOKAmGZlYXRzX3RvX3N0cmluZ+KAmToK dGVzdF9zaWduYWxzX3V0aWxzLmM6Mzg6MTM6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSB0 byByZXN0cmljdC1xdWFsaWZpZWQgcGFyYW1ldGVyIGFsaWFzZXMgd2l0aCBhcmd1bWVudCA0IFst V3Jlc3RyaWN0XQogICAgIHNucHJpbnRmKGZlYXRzX3N0cmluZywgTUFYX0ZFQVRTX1NaIC0gMSwg IiVzICVzICIsCiAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CiAgICAgICAgICAgIAp0ZXN0X3Np Z25hbHNfdXRpbHMuYzogSW4gZnVuY3Rpb24g4oCYZGVmYXVsdF9oYW5kbGVy4oCZOgp0ZXN0X3Np Z25hbHNfdXRpbHMuYzoxOTI6MTk6IHdhcm5pbmc6IGZvcm1hdCDigJglcOKAmSBleHBlY3RzIGFy Z3VtZW50IG9mIHR5cGUg4oCYdm9pZCAq4oCZLCBidXQgYXJndW1lbnQgMyBoYXMgdHlwZSDigJhs b25nIGxvbmcgdW5zaWduZWQgaW504oCZIFstV2Zvcm1hdD1dCiAgICAgIlNJR19PSyAtLSBTUDol cCAgc2lfYWRkckA6MHglcCAgc2lfY29kZTolZCAgdG9rZW5AOjB4JXAgIG9mZnNldDolbGRcbiIs CiAgICAgICAgICAgICAgICAgICB+XgoKd2lsbCBiZSBmaXhlZCBpbiBWNCBhczoKCgpkaWZmIC0t Z2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFsc191 dGlscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFs c191dGlscy5jCmluZGV4IDMxNzg4YTFkMzNhNC4uYzBmM2NkMWI1NjBhIDEwMDY0NAotLS0gYS90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmMK KysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFsc191 dGlscy5jCkBAIC0yMywyMSArMjMsMjUgQEAgZXh0ZXJuIHN0cnVjdCB0ZGVzY3IgKmN1cnJlbnQ7 CiAgc3RhdGljIGludCBzaWdfY29weWN0eCA9IFNJR1RSQVA7CiAgCiAgc3RhdGljIGNoYXIgKmZl YXRzX3N0b3JlW0ZNQVhfRU5EXSA9IHsKLSAgICAgICAiU1NCUyIsCi0gICAgICAgIlBBTiIsCi0g ICAgICAgIlVBTyIsCisgICAgICAgIiBTU0JTICIsCisgICAgICAgIiBQQU4gIiwKKyAgICAgICAi IFVBTyAiLAogIH07CiAgCiAgI2RlZmluZSBNQVhfRkVBVFNfU1ogICAxMjgKK3N0YXRpYyBjaGFy IGZlYXRzX3N0cmluZ1tNQVhfRkVBVFNfU1pdOworCiAgc3RhdGljIGlubGluZSBjaGFyICpmZWF0 c190b19zdHJpbmcodW5zaWduZWQgbG9uZyBmZWF0cykKICB7Ci0gICAgICAgc3RhdGljIGNoYXIg ZmVhdHNfc3RyaW5nW01BWF9GRUFUU19TWl07CisgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBG TUFYX0VORDsgaSsrKSB7CisgICAgICAgICAgICAgICBzaXplX3QgdGxlbiA9IDA7CiAgCi0gICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGTUFYX0VORCAmJiBmZWF0c19zdG9yZVtpXVswXTsgaSsr KSB7Ci0gICAgICAgICAgICAgICBpZiAoZmVhdHMgJiAxVUwgPDwgaSkKLSAgICAgICAgICAgICAg ICAgICAgICAgc25wcmludGYoZmVhdHNfc3RyaW5nLCBNQVhfRkVBVFNfU1ogLSAxLCAiJXMgJXMg IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHNfc3RyaW5nLCBmZWF0c19z dG9yZVtpXSk7CisgICAgICAgICAgICAgICBpZiAoZmVhdHMgJiAxVUwgPDwgaSkgeworICAgICAg ICAgICAgICAgICAgICAgICBzdHJuY2F0KGZlYXRzX3N0cmluZywgZmVhdHNfc3RvcmVbaV0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0ZFQVRTX1NaIC0gMSAtIHRsZW4pOwor ICAgICAgICAgICAgICAgICAgICAgICB0bGVuICs9IHN0cmxlbihmZWF0c19zdG9yZVtpXSk7Cisg ICAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAKICAgICAgICAgcmV0dXJuIGZlYXRzX3N0cmlu ZzsKQEAgLTE5MCw3ICsxOTQsNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0X2hhbmRsZXIoaW50IHNp Z251bSwgc2lnaW5mb190ICpzaSwgdm9pZCAqdWMpCiAgICAgICAgICAgICAgICAgLyogaXQncyBh IGJ1ZyBpbiB0aGUgdGVzdCBjb2RlIHdoZW4gdGhpcyBhc3NlcnQgZmFpbCAqLwogICAgICAgICAg ICAgICAgIGFzc2VydCghY3VycmVudC0+c2lnX3RyaWcgfHwgY3VycmVudC0+dHJpZ2dlcmVkKTsK ICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAg IlNJR19PSyAtLSBTUDolcCAgc2lfYWRkckA6MHglcCAgc2lfY29kZTolZCAgdG9rZW5AOjB4JXAg IG9mZnNldDolbGRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICJTSUdfT0sgLS0gU1A6JWxs WCAgc2lfYWRkckA6MHglcCAgc2lfY29kZTolZCAgdG9rZW5AOjB4JXAgIG9mZnNldDolbGRcbiIs CiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVjb250ZXh0X3QgKil1YyktPnVjX21jb250ZXh0 LnNwLAogICAgICAgICAgICAgICAgICAgICAgICAgc2ktPnNpX2FkZHIsIHNpLT5zaV9jb2RlLCBj dXJyZW50LT50b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPnRva2VuIC0g c2ktPnNpX2FkZHIpOwoKCkNoZWVycwoKQ3Jpc3RpYW4KCgoKCgo+IGRpZmYgLS1naXQgYS90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL2FybTY0L01ha2VmaWxlCj4gaW5kZXggMDNhMGQ0ZjcxMjE4Li5hZjU5ZGM3NGUwZGMgMTAw NjQ0Cj4gLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvTWFrZWZpbGUKPiArKysg Yi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9NYWtlZmlsZQo+IEBAIC02LDcgKzYsNyBA QCBBUkNIID89ICQoc2hlbGwgdW5hbWUgLW0pCj4gICBBUkNIIDo9ICQoc2hlbGwgZWNobyAkKEFS Q0gpIHwgc2VkIC1lIHMvYWFyY2g2NC9hcm02NC8pCj4gICAKPiAgIGlmZXEgKCJ4JChBUkNIKSIs ICJ4YXJtNjQiKQo+IC1TVUJESVJTIDo9Cj4gK1NVQkRJUlMgOj0gc2lnbmFsCj4gICBlbHNlCj4g ICBTVUJESVJTIDo9Cj4gICBlbmRpZgo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9hcm02NC9zaWduYWwvLmdpdGlnbm9yZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Fy bTY0L3NpZ25hbC8uZ2l0aWdub3JlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjQzNGY2NWMxNWYwMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi90b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvLmdpdGlnbm9yZQo+IEBAIC0wLDAgKzEsNiBAQAo+ ICsjIEhlbHBlciBzY3JpcHQncyBpbnRlcm5hbCB0ZXN0Y2FzZXMgbGlzdCAoVFBST0dTKSBpcyBy ZWdlbmVyYXRlZAo+ICsjIGVhY2ggdGltZSBieSBNYWtlZmlsZSBvbiBzdGFuZGFsb25lIChub24g S1NGVCBkcml2ZW4pIHJ1bnMuCj4gKyMgQ29tbWl0dGluZyBzdWNoIGxpc3QgY3JlYXRlcyBhIGRl cGVuZGVuY3kgYmV0d2VlbiB0ZXN0Y2FzZXMKPiArIyBwYXRjaGVzIHN1Y2ggdGhhdCB0aGV5IGFy ZSBubyBtb3JlIGVhc2lseSByZXZlcnRhYmxlLiBKdXN0IGlnbm9yZS4KPiArdGVzdF9hcm02NF9z aWduYWxzLnNyY19zaGVsbAo+ICt0ZXN0X2FybTY0X3NpZ25hbHMuc2gKPiBkaWZmIC0tZ2l0IGEv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL01ha2VmaWxlIGIvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjhjOGQwOGJlNGIwZAo+IC0tLSAvZGV2L251bGwKPiAr KysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvTWFrZWZpbGUKPiBAQCAt MCwwICsxLDg4IEBACj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArIyBD b3B5cmlnaHQgKEMpIDIwMTkgQVJNIExpbWl0ZWQKPiArCj4gKyMgU3VwcG9ydHMgYWxzbyBzdGFu ZGFsb25lIGludm9rYXRpb24gb3V0IG9mIEtTRlQtdHJlZQo+ICsjIENvbXBpbGUgc3RhbmRhbG9u ZSBhbmQgcnVuIG9uIHlvdXIgZGV2aWNlIHdpdGg6Cj4gKyMKPiArIyAgJCBtYWtlIC1DIHRvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbCBJTlNUQUxMX1BBVEg9PHlvdXItZGlyPiBp bnN0YWxsCj4gKyMKPiArIyBSdW4gc3RhbmRhbG9uZSBvbiBkZXZpY2Ugd2l0aDoKPiArIwo+ICsj ICAkIDx5b3VyLWRldmljZS1pbnN0ZGlyPi90ZXN0X2FybTY0X3NpZ25hbHMuc2ggWy1rfC12XQo+ ICsjCj4gKyMgSWYgSU5TVEFMTF9QQVRIPSBpcyBOT1QgcHJvdmlkZWQgaXQgd2lsbCBkZWZhdWx0 IHRvIC4vaW5zdGFsbAo+ICsKPiArIyBBIHByb3BlciB0b3Bfc3JjZGlyIGlzIG5lZWRlZCBib3Ro IGJ5IEtTRlQobGliLm1rKQo+ICsjIGFuZCBzdGFuZGFsb25lIGJ1aWxkcwo+ICt0b3Bfc3JjZGly ID0gLi4vLi4vLi4vLi4vLi4KPiArCj4gK0NGTEFHUyArPSAtc3RkPWdudTk5IC1JLiAtSSQodG9w X3NyY2RpcikvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvCj4gK1NSQ1MgOj0gJChmaWx0ZXItb3V0 IHRlc3RjYXNlcy90ZXN0Y2FzZXMuYywkKHdpbGRjYXJkIHRlc3RjYXNlcy8qLmMpKQo+ICtQUk9H UyA6PSAkKHBhdHN1YnN0ICUuYywlLCQoU1JDUykpCj4gKwo+ICsjIEd1ZXNzaW5nIGFzIGJlc3Qg YXMgd2UgY2FuIHdoZXJlIHRoZSBLZXJuZWwgaGVhZGVycwo+ICsjIGNvdWxkIGhhdmUgYmVlbiBp bnN0YWxsZWQgZGVwZW5kaW5nIG9uIEVOViBjb25maWcgYW5kCj4gKyMgdHlwZSBvZiBpbnZvY2F0 aW9uLgo+ICtpZmVxICgkKEtCVUlMRF9PVVRQVVQpLCkKPiAra2hkcl9kaXIgPSAkKHRvcF9zcmNk aXIpL3Vzci9pbmNsdWRlCj4gK2Vsc2UKPiAraWZlcSAoMCwkKE1BS0VMRVZFTCkpCj4gK2toZHJf ZGlyID0gJChLQlVJTERfT1VUUFVUKS91c3IvaW5jbHVkZQo+ICtlbHNlCj4gKyMgdGhlIEtTRlQg cHJlZmVycmVkIGxvY2F0aW9uIHdoZW4gS0JVSUxEX09VVFBVVCBpcyBzZXQKPiAra2hkcl9kaXIg PSAkKEtCVUlMRF9PVVRQVVQpL2tzZWxmdGVzdC91c3IvaW5jbHVkZQo+ICtlbmRpZgo+ICtlbmRp Zgo+ICsKPiArQ0ZMQUdTICs9IC1JJChraGRyX2RpcikKPiArCj4gKyMgU3RhbmRhbG9uZSBydW4K PiAraWZlcSAoMCwkKE1BS0VMRVZFTCkpCj4gK0NDIDo9ICQoQ1JPU1NfQ09NUElMRSlnY2MKPiAr UlVOTkVSX1NSQyA9IHRlc3RfYXJtNjRfc2lnbmFscy5zcmNfc2hlbGwKPiArUlVOTkVSID0gdGVz dF9hcm02NF9zaWduYWxzLnNoCj4gK0lOU1RBTExfUEFUSCA/PSBpbnN0YWxsLwo+ICsKPiArYWxs OiAkKFJVTk5FUikKPiArCj4gKyQoUlVOTkVSKTogJChQUk9HUykKPiArCWNwICQoUlVOTkVSX1NS QykgJChSVU5ORVIpCj4gKwlzZWQgLWkgLWUgJ3MjUFJPR1M9LiojUFJPR1M9IiQoUFJPR1MpIiMn ICRACj4gKwo+ICtpbnN0YWxsOiBhbGwKPiArCW1rZGlyIC1wICQoSU5TVEFMTF9QQVRIKS90ZXN0 Y2FzZXMKPiArCWNwICQoUFJPR1MpICQoSU5TVEFMTF9QQVRIKS90ZXN0Y2FzZXMKPiArCWNwICQo UlVOTkVSKSAkKElOU1RBTExfUEFUSCkvCj4gKwo+ICsuUEhPTlkgY2xlYW46Cj4gKwlybSAtZiAk KFBST0dTKQo+ICsjIEtTRlQgcnVuCj4gK2Vsc2UKPiArIyBHZW5lcmF0ZWQgYmluYXJpZXMgdG8g YmUgaW5zdGFsbGVkIGJ5IHRvcCBLU0ZUIHNjcmlwdAo+ICtURVNUX0dFTl9QUk9HUyA6PSAkKG5v dGRpciAkKFBST0dTKSkKPiArCj4gKyMgR2V0IEtlcm5lbCBoZWFkZXJzIGluc3RhbGxlZCBhbmQg dXNlIHRoZW0uCj4gK0tTRlRfS0hEUl9JTlNUQUxMIDo9IDEKPiArCj4gKyMgVGhpcyBpbmNsdWRl IG1rIHdpbGwgYWxzbyBtYW5nbGUgdGhlIFRFU1RfR0VOX1BST0dTIGxpc3QKPiArIyB0byBhY2Nv dW50IGZvciBhbnkgT1VUUFVUIHRhcmdldC1kaXJzIG9wdGlvbmFsbHkgcHJvdmlkZWQKPiArIyBi eSB0aGUgdG9wbGV2ZWwgbWFrZWZpbGUKPiAraW5jbHVkZSAuLi8uLi9saWIubWsKPiArCj4gKyQo VEVTVF9HRU5fUFJPR1MpOiAkKFBST0dTKQo+ICsJY3AgJChQUk9HUykgJChPVVRQVVQpLwo+ICsK PiArY2xlYW46Cj4gKwkkKENMRUFOKQo+ICsJcm0gLWYgJChQUk9HUykKPiArZW5kaWYKPiArCj4g KyMgQ29tbW9uIHRlc3QtdW5pdCB0YXJnZXRzIHRvIGJ1aWxkIGNvbW1vbi1sYXlvdXQgdGVzdC1j YXNlcyBleGVjdXRhYmxlcwo+ICsjIE5lZWRzIHNlY29uZGFyeSBleHBhbnNpb24gdG8gcHJvcGVy bHkgaW5jbHVkZSB0aGUgdGVzdGNhc2UgYy1maWxlIGluIHByZS1yZXFzCj4gKy5TRUNPTkRFWFBB TlNJT046Cj4gKyQoUFJPR1MpOiB0ZXN0X3NpZ25hbHMuYyB0ZXN0X3NpZ25hbHNfdXRpbHMuYyB0 ZXN0Y2FzZXMvdGVzdGNhc2VzLmMgJCRALmMgdGVzdF9zaWduYWxzLmggdGVzdF9zaWduYWxzX3V0 aWxzLmggdGVzdGNhc2VzL3Rlc3RjYXNlcy5oCj4gKwlAaWYgWyAhIC1kICQoa2hkcl9kaXIpIF07 IHRoZW4gXAo+ICsJCWVjaG8gLW4gIlxuISEhIFdBUk5JTkc6ICQoa2hkcl9kaXIpIE5PVCBGT1VO RC4iOyBcCj4gKwkJZWNobyAiPT09PiAgQXJlIHlvdSBzdXJlIEtlcm5lbCBIZWFkZXJzIGhhdmUg YmVlbiBpbnN0YWxsZWQgcHJvcGVybHkgP1xuIjsgXAo+ICsJZmkKPiArCSQoQ0MpICQoQ0ZMQUdT KSAkXiAtbyAkQAo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9z aWduYWwvUkVBRE1FIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL1JFQURN RQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi41M2YwMDVmNzkx MGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQv c2lnbmFsL1JFQURNRQo+IEBAIC0wLDAgKzEsNTkgQEAKPiArS1NlbGZUZXN0IGFybTY0L3NpZ25h bC8KPiArPT09PT09PT09PT09PT09PT09PT09PT0KPiArCj4gK1NpZ25hbHMgVGVzdHMKPiArKysr KysrKysrKysrKwo+ICsKPiArLSBUZXN0cyBhcmUgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG1haW4g Y29tcGlsYXRpb24gdW5pdDogc3VjaCBzaGFyZWQgbWFpbgo+ICsgIGVuZm9yY2VzIGEgc3RhbmRh cmQgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBuZWVkZWQgdG8gcGVyZm9ybSBhIHNpbmdsZQo+ICsg IHNpZ25hbC10ZXN0IChzZXR1cC90cmlnZ2VyL3J1bi9yZXN1bHQvY2xlYW51cCkKPiArCj4gKy0g VGhlIGFib3ZlIG1lbnRpb25lZCBvcHMgYXJlIGNvbmZpZ3VyYWJsZSBvbiBhIHRlc3QtYnktdGVz dCBiYXNpczogZWFjaCB0ZXN0Cj4gKyAgaXMgZGVzY3JpYmVkIChhbmQgY29uZmlndXJlZCkgdXNp bmcgdGhlIGRlc2NyaXB0b3Igc2lnbmFscy5oOjpzdHJ1Y3QgdGRlc2NyCj4gKwo+ICstIEVhY2gg c2lnbmFsIHRlc3RjYXNlIGlzIGNvbXBpbGVkIGludG8gaXRzIG93biBleGVjdXRhYmxlOiBhIHNl cGFyYXRlCj4gKyAgZXhlY3V0YWJsZSBpcyB1c2VkIGZvciBlYWNoIHRlc3Qgc2luY2UgbWFueSB0 ZXN0cyBjb21wbGV0ZSBzdWNjZXNzZnVsbHkKPiArICBieSByZWNlaXZpbmcgc29tZSBraW5kIG9m IGZhdGFsIHNpZ25hbCBmcm9tIHRoZSBLZXJuZWwsIHNvIGl0J3Mgc2FmZXIKPiArICB0byBydW4g ZWFjaCB0ZXN0IHVuaXQgaW4gaXRzIG93biBzdGFuZGFsb25lIHByb2Nlc3MsIHNvIGFzIHRvIHN0 YXJ0IGVhY2gKPiArICB0ZXN0IGZyb20gYSBjbGVhbiBzbGF0ZS4KPiArCj4gKy0gTmV3IHRlc3Rz IGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXN0Y2FzZXMvIGRpciBwcm92aWRpbmcgYSBwcm9w ZXIgc3RydWN0Cj4gKyAgdGRlc2NyIG92ZXJyaWRpbmcgYWxsIHRoZSBkZWZhdWx0cyB3ZSB3aXNo IHRvIGNoYW5nZSAoYXMgb2Ygbm93IHByb3ZpZGluZyBhCj4gKyAgY3VzdG9tIHJ1biBtZXRob2Qg aXMgbWFuZGF0b3J5IHRob3VnaCkKPiArCj4gKy0gU2lnbmFscycgdGVzdC1jYXNlcyBoZXJlYWZ0 ZXIgZGVmaW5lZCBiZWxvbmcgY3VycmVudGx5IHRvIHR3bwo+ICsgIHByaW5jaXBhbCBmYW1pbGll czoKPiArCj4gKyAgLSAnbWFuZ2xlXycgdGVzdHM6IGEgcmVhbCBzaWduYWwgKFNJR1VTUjEpIGlz IHJhaXNlZCBhbmQgdXNlZCBhcyBhIHRyaWdnZXIKPiArICAgIGFuZCB0aGVuIHRoZSB0ZXN0IGNh c2UgY29kZSBtZXNzZXMtdXAgd2l0aCB0aGUgc2lnZnJhbWUgdWNvbnRleHRfdCBmcm9tCj4gKyAg ICBpbnNpZGUgdGhlIHNpZ2hhbmRsZXIgaXRzZWxmLgo+ICsKPiArICAtICdmYWtlX3NpZ3JldHVy bl8nIHRlc3RzOiBhIGJyYW5kIG5ldyBjdXN0b20gYXJ0aWZpY2lhbCBzaWdmcmFtZSBzdHJ1Y3R1 cmUKPiArICAgIGlzIHBsYWNlZCBvbiB0aGUgc3RhY2sgYW5kIGEgc2lncmV0dXJuIHN5c2NhbGwg aXMgY2FsbGVkIHRvIHNpbXVsYXRlIGEKPiArICAgIHJlYWwgc2lnbmFsIHJldHVybi4gVGhpcyBr aW5kIG9mIHRlc3RzIGRvZXMgbm90IHVzZSBhIHRyaWdnZXIgdXN1YWxseSBhbmQKPiArICAgIHRo ZXkgYXJlIGp1c3QgZmlyZWQgdXNpbmcgc29tZSBzaW1wbGUgaW5jbHVkZWQgYXNzZW1ibHkgdHJh bXBvbGluZSBjb2RlLgo+ICsKPiArIC0gTW9zdCBvZiB0aGVzZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1 bGx5IHBhc3NpbmcgaWYgdGhlIHByb2Nlc3MgZ2V0cyBraWxsZWQgYnkKPiArICAgc29tZSBmYXRh bCBzaWduYWw6IHVzdWFsbHkgU0lHU0VHViBvciBTSUdCVVMuIFNpbmNlIHdoaWxlIHdyaXRpbmcg dGhpcwo+ICsgICBraW5kIG9mIHRlc3RzIGl0IGlzIGV4dHJlbWVseSBlYXN5IGluIGZhY3QgdG8g ZW5kLXVwIGluamVjdGluZyBvdGhlcgo+ICsgICB1bnJlbGF0ZWQgU0VHViBidWdzIGluIHRoZSB0 ZXN0Y2FzZXMsIGl0IGJlY29tZXMgZXh0cmVtZWx5IHRyaWNreSB0bwo+ICsgICBiZSByZWFsbHkg c3VyZSB0aGF0IHRoZSB0ZXN0cyBhcmUgcmVhbGx5IGFkZHJlc3Npbmcgd2hhdCB0aGV5IGFyZSBt ZWFudAo+ICsgICB0byBhZGRyZXNzIGFuZCB0aGV5IGFyZSBub3QgaW5zdGVhZCBmYWxsaW5nIGFw YXJ0IGR1ZSB0byB1bnBsYW5uZWQgYnVncwo+ICsgICBpbiB0aGUgdGVzdCBjb2RlLgo+ICsgICBJ biBvcmRlciB0byBhbGxldmlhdGUgdGhlIG1pc2VyeSBvZiB0aGUgbGlmZSBvZiBzdWNoIHRlc3Qt ZGV2ZWxvcGVyLCBhIGZldwo+ICsgICBoZWxwZXJzIGFyZSBwcm92aWRlZDoKPiArCj4gKyAgIC0g YSBjb3VwbGUgb2YgQVNTRVJUX0JBRC9HT09EX0NPTlRFWFQoKSBtYWNyb3MgdG8gZWFzaWx5IHBh cnNlIGEgdWNvbnRleHRfdAo+ICsgICAgIGFuZCB2ZXJpZnkgaWYgaXQgaXMgaW5kZWVkIEdPT0Qg b3IgQkFEIChkZXBlbmRpbmcgb24gd2hhdCB3ZSB3ZXJlCj4gKyAgICAgZXhwZWN0aW5nKSwgdXNp bmcgdGhlIHNhbWUgbG9naWMvcGVyc3BlY3RpdmUgYXMgaW4gdGhlIGFybTY0IEtlcm5lbCBzaWdu YWxzCj4gKyAgICAgcm91dGluZXMuCj4gKwo+ICsgICAtIGEgc2FuaXR5IG1lY2hhbmlzbSB0byBi ZSB1c2VkIGluICdmYWtlX3NpZ3JldHVybl8nLWFsaWtlIHRlc3RzOiBlbmFibGVkIGJ5Cj4gKyAg ICAgZGVmYXVsdCBpdCB0YWtlcyBjYXJlIHRvIHZlcmlmeSB0aGF0IHRoZSB0ZXN0LWV4ZWN1dGlv biBoYWQgYXQgbGVhc3QKPiArICAgICBzdWNjZXNzZnVsbHkgcHJvZ3Jlc3NlZCB1cCB0byB0aGUg c3RhZ2Ugb2YgdHJpZ2dlcmluZyB0aGUgZmFrZSBzaWdyZXR1cm4KPiArICAgICBjYWxsLgo+ICsK PiArICBJbiBib3RoIGNhc2VzIHRlc3QgcmVzdWx0cyBhcmUgZXhwZWN0ZWQgaW4gdGVybXMgb2Y6 Cj4gKyAgIC0gc29tZSBmYXRhbCBzaWduYWwgc2VudCBieSB0aGUgS2VybmVsIHRvIHRoZSB0ZXN0 IHByb2Nlc3MKPiArICBvcgo+ICsgIC0gYW5hbHl6aW5nIHNvbWUgZmluYWwgcmVncyBzdGF0ZQo+ IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9h cm02NF9zaWduYWxzLnNyY19zaGVsbCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3Np Z25hbC90ZXN0X2FybTY0X3NpZ25hbHMuc3JjX3NoZWxsCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUK PiBpbmRleCAwMDAwMDAwMDAwMDAuLjE2M2U5NDFlMjk5Nwo+IC0tLSAvZGV2L251bGwKPiArKysg Yi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9hcm02NF9zaWduYWxz LnNyY19zaGVsbAo+IEBAIC0wLDAgKzEsNTUgQEAKPiArIyEvYmluL3NoCj4gKyMgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArIyBDb3B5cmlnaHQgKEMpIDIwMTkgQVJNIExpbWl0 ZWQKPiArCj4gK3JldD0wCj4gK2tlZXBfb25fZmFpbD0wCj4gK2Vycl9vdXQ9IjI+IC9kZXYvbnVs bCIKPiArCj4gK3VzYWdlKCkgewo+ICsJZWNobyAiVXNhZ2U6IGBiYXNlbmFtZSAkMGAgWy12XSBb LWtdIgo+ICsJZXhpdCAxCj4gK30KPiArCj4gKyMgYXZvaWRpbmcgZ2V0b3B0IHRvIGF2b2lkIGNv bXBhdGliaWxpdHkgaXNzdWVzIG9uIHRhcmdldHMKPiArIyB3aXRoIGxpbWl0ZWQgcmVzb3VyY2Vz Cj4gK3doaWxlIFsgJCMgLWd0IDAgXQo+ICtkbwo+ICsJY2FzZSAkMSBpbgo+ICsJCSItayIpCj4g KwkJCWtlZXBfb25fZmFpbD0xCj4gKwkJCTs7Cj4gKwkJIi12IikKPiArCQkJZXJyX291dD0KPiAr CQkJOzsKPiArCQkqKQo+ICsJCQl1c2FnZQo+ICsJCQk7Owo+ICsJZXNhYwo+ICsJc2hpZnQKPiAr ZG9uZQo+ICsKPiArVFBST0dTPQo+ICsKPiArdG90PSQoZWNobyAkVFBST0dTIHwgd2MgLXcpCj4g Kwo+ICsjIFRlc3RzIGFyZSBleHBlY3RlZCBpbiB0ZXN0Y2FzZXMvIHN1YmRpciBpbnNpZGUgdGhl IGluc3RhbGxhdGlvbiBwYXRoCj4gK3dvcmtkaXI9ImBkaXJuYW1lICQwIDI+L2Rldi9udWxsYCIK PiArWyAtbiAkd29ya2RpciBdICYmIGNkICR3b3JrZGlyCj4gKwo+ICtwYXNzZWQ9MAo+ICtydW49 MAo+ICtmb3IgdGVzdCBpbiAkVFBST0dTCj4gK2RvCj4gKwlydW49JCgocnVuICsgMSkpCj4gKwll dmFsIC4vJHRlc3QgJGVycl9vdXQKPiArCWlmIFsgJD8gIT0gMCBdOyB0aGVuCj4gKwkJWyAka2Vl cF9vbl9mYWlsID0gMCBdICYmIGVjaG8gIj09PT4+PiBGQUlMRUQ6OiAkdGVzdCA8PDw9PT0iICYm IHJldD0xICYmIGJyZWFrCj4gKwllbHNlCj4gKwkJcGFzc2VkPSQoKHBhc3NlZCArIDEpKQo+ICsJ ZmkKPiArZG9uZQo+ICsKPiArZWNobyAiPT0+PiBQQVNTRUQ6ICRwYXNzZWQvJHJ1biBvbiAkdG90 IGF2YWlsYWJsZSB0ZXN0cy4iCj4gKwo+ICtleGl0ICRyZXQKPiBkaWZmIC0tZ2l0IGEvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFscy5jIGIvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFscy5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjM0NDdkNzAxMWFlYwo+IC0tLSAvZGV2L251 bGwKPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWdu YWxzLmMKPiBAQCAtMCwwICsxLDI2IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovCj4gKy8qIENvcHlyaWdodCAoQykgMjAxOSBBUk0gTGltaXRlZCAqLwo+ICsKPiAr I2luY2x1ZGUgPGtzZWxmdGVzdC5oPgo+ICsKPiArI2luY2x1ZGUgInRlc3Rfc2lnbmFscy5oIgo+ ICsjaW5jbHVkZSAidGVzdF9zaWduYWxzX3V0aWxzLmgiCj4gKwo+ICtzdHJ1Y3QgdGRlc2NyICpj dXJyZW50Owo+ICtleHRlcm4gc3RydWN0IHRkZXNjciB0ZGU7Cj4gKwo+ICtpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQo+ICt7Cj4gKwljdXJyZW50ID0gJnRkZTsKPiArCj4gKwlrc2Z0 X3ByaW50X21zZygiJXMgOjogJXMgLSBTSUdfVFJJRzolZCAgU0lHX09LOiVkIC0tIGN1cnJlbnQ6 JXBcbiIsCj4gKwkJICAgICAgIGN1cnJlbnQtPm5hbWUsIGN1cnJlbnQtPmRlc2NyLCBjdXJyZW50 LT5zaWdfdHJpZywKPiArCQkgICAgICAgY3VycmVudC0+c2lnX29rLCBjdXJyZW50KTsKPiArCWlm ICh0ZXN0X3NldHVwKGN1cnJlbnQpKSB7Cj4gKwkJaWYgKHRlc3RfcnVuKGN1cnJlbnQpKQo+ICsJ CQl0ZXN0X3Jlc3VsdChjdXJyZW50KTsKPiArCQl0ZXN0X2NsZWFudXAoY3VycmVudCk7Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIGN1cnJlbnQtPnBhc3MgPyBLU0ZUX1BBU1MgOiBLU0ZUX0ZBSUw7Cj4g K30KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rl c3Rfc2lnbmFscy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rf c2lnbmFscy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjg1 ZGIzYWM0NGIzMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzLmgKPiBAQCAtMCwwICsxLDEzNyBAQAo+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ICsvKiBDb3B5cmlnaHQgKEMpIDIw MTkgQVJNIExpbWl0ZWQgKi8KPiArCj4gKyNpZm5kZWYgX19URVNUX1NJR05BTFNfSF9fCj4gKyNk ZWZpbmUgX19URVNUX1NJR05BTFNfSF9fCj4gKwo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNp bmNsdWRlIDxzdGRib29sLmg+Cj4gKyNpbmNsdWRlIDxzaWduYWwuaD4KPiArI2luY2x1ZGUgPHVj b250ZXh0Lmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArCj4gKy8qCj4gKyAqIFVzaW5nIEFS Q0ggc3BlY2lmaWMgYW5kIHNhbml0aXplZCBLZXJuZWwgaGVhZGVycyBpbnN0YWxsZWQgYnkgS1NG VAo+ICsgKiBmcmFtZXdvcmsgc2luY2Ugd2UgYXNrZWQgZm9yIGl0IGJ5IHNldHRpbmcgZmxhZyBL U0ZUX0tIRFJfSU5TVEFMTAo+ICsgKiBpbiBvdXIgTWFrZWZpbGUuCj4gKyAqLwo+ICsjaW5jbHVk ZSA8YXNtL3B0cmFjZS5oPgo+ICsjaW5jbHVkZSA8YXNtL2h3Y2FwLmg+Cj4gKwo+ICsvKiBwYXN0 ZWQgZnJvbSBpbmNsdWRlL2xpbnV4L3N0cmluZ2lmeS5oICovCj4gKyNkZWZpbmUgX19zdHJpbmdp ZnlfMSh4Li4uKQkjeAo+ICsjZGVmaW5lIF9fc3RyaW5naWZ5KHguLi4pCV9fc3RyaW5naWZ5XzEo eCkKPiArCj4gKy8qCj4gKyAqIFJlYWRzIGEgc3lzcmVnIHVzaW5nIHRoZSwgcG9zc2libHkgcHJv dmlkZWQsIFMzXyBlbmNvZGluZyBpbiBvcmRlciB0bwo+ICsgKiBhdm9pZCBpbmplY3QgYW55IGRl cGVuZGVuY3kgb24gdGhlIHVzZWQgdG9vbGNoYWluIHJlZ2FyZGluZyBwb3NzaWJseQo+ICsgKiBz dGlsbCB1bnN1cHBvcnRlZCBBUk12OCBleHRlbnNpb25zLgo+ICsgKgo+ICsgKiBVc2luZyBhIHN0 YW5kYXJkIG1uZW1vbmljIGhlcmUgdG8gaW5kaWNhdGUgdGhlIHNwZWNpZmljIHN5c3JlZyAobGlr ZSBTU0JTKQo+ICsgKiB3b3VsZCBpbnRyb2R1Y2UgYSBjb21waWxlLXRpbWUgZGVwZW5kZW5jeSBv biBwb3NzaWJseSB1bnN1cHBvcnRlZCBBUk12OAo+ICsgKiBFeHRlbnNpb25zOiB5b3UgY291bGQg ZW5kLXVwIGZhaWxpbmcgdG8gYnVpbGQgdGhlIHRlc3QgZGVwZW5kaW5nIG9uIHRoZQo+ICsgKiBh dmFpbGFibGUgdG9vbGNoYWluLgo+ICsgKiBUaGlzIGlzIHVuZGVzaXJhYmxlIHNpbmNlIHNvbWUg dGVzdHMsIGV2ZW4gaWYgc3BlY2lmaWNhbGx5IHRhcmdldGVkIGF0IHNvbWUKPiArICogQVJNdjgg RXh0ZW5zaW9ucywgY2FuIGJlIHBsYXVzaWJseSBydW4gZXZlbiBvbiBoYXJkd2FyZSBsYWNraW5n IHRoZSBhYm92ZQo+ICsgKiBvcHRpb25hbCBBUk0gZmVhdHVyZXMuIChTU0JTIGJpdCBwcmVzZXJ2 YXRpb24gaXMgYW4gZXhhbXBsZTogS2VybmVsIGhhbmRsZXMKPiArICogaXQgdHJhbnNwYXJlbnRs eSBub3QgY2FyaW5nIGF0IGFsbCBhYm91dCB0aGUgZWZmZWN0aXZlIHNldCBvZiBzdXBwb3J0ZWQK PiArICogZmVhdHVyZXMpLgo+ICsgKiBPbiB0aGUgb3RoZXIgc2lkZSB3ZSB3aWxsIGV4cGVjdCB0 byBvYnNlcnZlIGRpZmZlcmVudCBiZWhhdmlvdXJzIGlmIHRoZQo+ICsgKiBmZWF0dXJlIGlzIHN1 cHBvcnRlZCBvciBub3Q6IHVzdWFsbHkgZ2V0dGluZyBhIFNJR0lMTCB3aGVuIHRyeWluZyB0byB1 c2UKPiArICogdW5zdXBwb3J0ZWQgZmVhdHVyZXMuIEZvciB0aGlzIHJlYXNvbiB3ZSBoYXZlIGFu eXdheSBpbiBwbGFjZSBzb21lCj4gKyAqIHByZWxpbWluYXJ5IHJ1bi10aW1lIGNoZWNrcyBhYm91 dCB0aGUgY3B1IGVmZmVjdGl2ZWx5IHN1cHBvcnRlZCBmZWF0dXJlcy4KPiArICoKPiArICogVGhp cyBoZWxwZXIgbWFjcm8gaXMgbWVhbnQgdG8gYmUgdXNlZCBmb3IgcmVncyByZWFkYWJsZSBhdCBF TDAsIEJVVCBzb21lCj4gKyAqIEVMMSBzeXNyZWdzIGFyZSBpbmRlZWQgcmVhZGFibGUgdG9vIHRo cm91Z2ggTVJTIGVtdWxhdGlvbiBLZXJuZWwtbWVjaGFuaXNtCj4gKyAqIGlmIHRoZSByZXF1aXJl ZCByZWcgaXMgaW5jbHVkZWQgaW4gdGhlIHN1cHBvcnRlZCBlbmNvZGluZyBzcGFjZToKPiArICoK PiArICogIERvY3VtZW50YXRpb24vYXJtNjQvY3B1LWZlYXR1cmUtcmVnc2l0ZXJzLnR4dAo+ICsg Kgo+ICsgKiAgIlRoZSBpbmZyYXN0cnVjdHVyZSBlbXVsYXRlcyBvbmx5IHRoZSBmb2xsb3dpbmcg c3lzdGVtIHJlZ2lzdGVyIHNwYWNlOgo+ICsgKiAgIAlPcDA9MywgT3AxPTAsIENSbj0wLCBDUm09 MCw0LDUsNiw3Cj4gKyAqLwo+ICsjZGVmaW5lIGdldF9yZWd2YWwocmVnbmFtZSwgb3V0KSBcCj4g Kwlhc20gdm9sYXRpbGUoIm1ycyAlMCwgIiBfX3N0cmluZ2lmeShyZWduYW1lKSA6ICI9ciIgKG91 dCkgOjogIm1lbW9yeSIpCj4gKwo+ICsvKiBSZWdzIGVuY29kaW5nIGFuZCBtYXNrcyBuYW1pbmcg Y29waWVkIGluIGZyb20gc3lzcmVnLmggKi8KPiArI2RlZmluZSBTWVNfSURfQUE2NE1NRlIxX0VM MQlTM18wX0MwX0M3XzEJLyogTVJTIEVtdWxhdGVkICovCj4gKyNkZWZpbmUgU1lTX0lEX0FBNjRN TUZSMl9FTDEJUzNfMF9DMF9DN18yCS8qIE1SUyBFbXVsYXRlZCAqLwo+ICsjZGVmaW5lIElEX0FB NjRNTUZSMV9QQU5fU0hJRlQJMjAKPiArI2RlZmluZSBJRF9BQTY0TU1GUjJfVUFPX1NISUZUCTQK PiArCj4gKy8qIExvY2FsIEhlbHBlcnMgKi8KPiArI2RlZmluZSBJU19QQU5fU1VQUE9SVEVEKHZh bCkgXAo+ICsJKCEhKCh2YWwpICYgKDB4ZlVMIDw8IElEX0FBNjRNTUZSMV9QQU5fU0hJRlQpKSkK PiArI2RlZmluZSBJU19VQU9fU1VQUE9SVEVEKHZhbCkgXAo+ICsJKCEhKCh2YWwpICYgKDB4ZlVM IDw8IElEX0FBNjRNTUZSMl9VQU9fU0hJRlQpKSkKPiArCj4gKyNkZWZpbmUgUzNfTVJTX1NTQlNf U1lTUkVHCQlTM18zX0M0X0MyXzYJLyogRUwwIHN1cHBvcnRlZCAqLwo+ICsKPiArLyoKPiArICog RmVhdHVyZSBmbGFncyB1c2VkIGluIHRkZXNjci5mZWF0c19yZXF1aXJlZCB0byBzcGVjaWZ5Cj4g KyAqIGFueSBmZWF0dXJlIGJ5IHRoZSB0ZXN0Cj4gKyAqLwo+ICtlbnVtIHsKPiArCUZTU0JTX0JJ VCwKPiArCUZQQU5fQklULAo+ICsJRlVBT19CSVQsCj4gKwlGTUFYX0VORAo+ICt9Owo+ICsKPiAr I2RlZmluZSBGRUFUX1NTQlMJCSgxVUwgPDwgRlNTQlNfQklUKQo+ICsjZGVmaW5lIEZFQVRfUEFO CQkoMVVMIDw8IEZQQU5fQklUKQo+ICsjZGVmaW5lIEZFQVRfVUFPCQkoMVVMIDw8IEZVQU9fQklU KQo+ICsKPiArLyoKPiArICogQSBkZXNjcmlwdG9yIHVzZWQgdG8gZGVzY3JpYmUgYW5kIGNvbmZp Z3VyZSBhIHRlc3QgY2FzZS4KPiArICogRmllbGRzIHdpdGggYSBub24tdHJpdmlhbCBtZWFuaW5n IGFyZSBkZXNjcmliZWQgaW5saW5lIGluIHRoZSBmb2xsb3dpbmcuCj4gKyAqLwo+ICtzdHJ1Y3Qg dGRlc2NyIHsKPiArCS8qIEtFRVAgVEhJUyBGSUVMRCBGSVJTVCBmb3IgZWFzaWVyIGxvb2t1cCBm cm9tIGFzc2VtYmx5ICovCj4gKwl2b2lkCQkqdG9rZW47Cj4gKwkvKiB3aGVuIGRpc2FibGVkIHRv a2VuIGJhc2VkIHNhbml0eSBjaGVja2luZyBpcyBza2lwcGVkIGluIGhhbmRsZXIgKi8KPiArCWJv b2wJCXNhbml0eV9kaXNhYmxlZDsKPiArCS8qIGp1c3QgYSBuYW1lIGZvciB0aGUgdGVzdC1jYXNl OyBtYW5hZGF0b3J5IGZpZWxkICovCj4gKwljaGFyCQkqbmFtZTsKPiArCWNoYXIJCSpkZXNjcjsK PiArCXVuc2lnbmVkIGxvbmcJZmVhdHNfcmVxdWlyZWQ7Cj4gKwkvKiBiaXRtYXNrIG9mIGVmZmVj dGl2ZWx5IHN1cHBvcnRlZCBmZWF0czogcG9wdWxhdGVkIGF0IHJ1bi10aW1lICovCj4gKwl1bnNp Z25lZCBsb25nCWZlYXRzX3N1cHBvcnRlZDsKPiArCWJvb2wJCWZlYXRzX29rOwo+ICsJYm9vbAkJ aW5pdGlhbGl6ZWQ7Cj4gKwl1bnNpZ25lZCBpbnQJbWluc2lnc3Rrc3o7Cj4gKwkvKiBzaWdudW0g dXNlZCBhcyBhIHRlc3QgdHJpZ2dlci4gWmVybyBpZiBubyB0cmlnZ2VyLXNpZ25hbCBpcyB1c2Vk ICovCj4gKwlpbnQJCXNpZ190cmlnOwo+ICsJLyoKPiArCSAqIHNpZ251bSBjb25zaWRlcmVkIGFz IGEgc3VjY2Vzc2Z1bCB0ZXN0IGNvbXBsZXRpb24uCj4gKwkgKiBaZXJvIHdoZW4gbm8gc2lnbmFs IGlzIGV4cGVjdGVkIG9uIHN1Y2Nlc3MKPiArCSAqLwo+ICsJaW50CQlzaWdfb2s7Cj4gKwkvKiBz aWdudW0gZXhwZWN0ZWQgb24gdW5zdXBwb3J0ZWQgQ1BVIGZlYXR1cmVzLiAqLwo+ICsJaW50CQlz aWdfdW5zdXBwOwo+ICsJLyogYSB0aW1lb3V0IGluIHNlY29uZCBmb3IgdGVzdCBjb21wbGV0aW9u ICovCj4gKwl1bnNpZ25lZCBpbnQJdGltZW91dDsKPiArCWJvb2wJCXRyaWdnZXJlZDsKPiArCWJv b2wJCXBhc3M7Cj4gKwkvKiBvcHRpb25hbCBzYV9mbGFncyBmb3IgdGhlIGluc3RhbGxlZCBoYW5k bGVyICovCj4gKwlpbnQJCXNhX2ZsYWdzOwo+ICsJdWNvbnRleHRfdAlzYXZlZF91YzsKPiArCj4g KwkvKiBhIHNldHVwIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBiZWZvcmUgdGVzdCBzdGFydHMgKi8K PiArCWludCAoKnNldHVwKShzdHJ1Y3QgdGRlc2NyICp0ZCk7Cj4gKwl2b2lkICgqY2xlYW51cCko c3RydWN0IHRkZXNjciAqdGQpOwo+ICsKPiArCS8qIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGJl IHVzZWQgYXMgYSB0cmlnZ2VyIGZvciB0ZXN0IHN0YXJ0aW5nICovCj4gKwlpbnQgKCp0cmlnZ2Vy KShzdHJ1Y3QgdGRlc2NyICp0ZCk7Cj4gKwkvKgo+ICsJICogdGhlIGFjdHVhbCB0ZXN0LWNvcmU6 IGludm9rZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZQo+ICsJICogcHJlc2VuY2Ugb2Yg dGhlIHRyaWdnZXIgZnVuY3Rpb24gYWJvdmU7IHRoaXMgaXMgbWFuZGF0b3J5Cj4gKwkgKi8KPiAr CWludCAoKnJ1bikoc3RydWN0IHRkZXNjciAqdGQsIHNpZ2luZm9fdCAqc2ksIHVjb250ZXh0X3Qg KnVjKTsKPiArCj4gKwkvKiBhbiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgY3VzdG9tIHJlc3VsdHMn IHByb2Nlc3NpbmcgKi8KPiArCXZvaWQgKCpjaGVja19yZXN1bHQpKHN0cnVjdCB0ZGVzY3IgKnRk KTsKPiArCj4gKwl2b2lkICpwcml2Owo+ICt9Owo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFsc191dGlscy5jIGIv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFsc191dGlscy5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmFjMDA1NWY2MzQw Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9z aWduYWwvdGVzdF9zaWduYWxzX3V0aWxzLmMKPiBAQCAtMCwwICsxLDI2MSBAQAo+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ICsvKiBDb3B5cmlnaHQgKEMpIDIwMTkg QVJNIExpbWl0ZWQgKi8KPiArCj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3Rk bGliLmg+Cj4gKyNpbmNsdWRlIDxzaWduYWwuaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsj aW5jbHVkZSA8dW5pc3RkLmg+Cj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiArI2luY2x1ZGUgPHN5 cy9hdXh2Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9hdXh2ZWMuaD4KPiArI2luY2x1ZGUgPHVjb250 ZXh0Lmg+Cj4gKwo+ICsjaW5jbHVkZSAidGVzdF9zaWduYWxzLmgiCj4gKyNpbmNsdWRlICJ0ZXN0 X3NpZ25hbHNfdXRpbHMuaCIKPiArI2luY2x1ZGUgInRlc3RjYXNlcy90ZXN0Y2FzZXMuaCIKPiAr Cj4gK2V4dGVybiBzdHJ1Y3QgdGRlc2NyICpjdXJyZW50Owo+ICsKPiArc3RhdGljIGNoYXIgKmZl YXRzX3N0b3JlW0ZNQVhfRU5EXSA9IHsKPiArCSJTU0JTIiwKPiArCSJQQU4iLAo+ICsJIlVBTyIK PiArfTsKPiArCj4gKyNkZWZpbmUgTUFYX0ZFQVRTX1NaCTEyOAo+ICtzdGF0aWMgaW5saW5lIGNo YXIgKmZlYXRzX3RvX3N0cmluZyh1bnNpZ25lZCBsb25nIGZlYXRzKQo+ICt7Cj4gKwlzdGF0aWMg Y2hhciBmZWF0c19zdHJpbmdbTUFYX0ZFQVRTX1NaXTsKPiArCj4gKwlmb3IgKGludCBpID0gMDsg aSA8IEZNQVhfRU5EICYmIGZlYXRzX3N0b3JlW2ldWzBdOyBpKyspIHsKPiArCQlpZiAoZmVhdHMg JiAxVUwgPDwgaSkKPiArCQkJc25wcmludGYoZmVhdHNfc3RyaW5nLCBNQVhfRkVBVFNfU1ogLSAx LCAiJXMgJXMgIiwKPiArCQkJCSBmZWF0c19zdHJpbmcsIGZlYXRzX3N0b3JlW2ldKTsKPiArCX0K PiArCj4gKwlyZXR1cm4gZmVhdHNfc3RyaW5nOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1bmJs b2NrX3NpZ25hbChpbnQgc2lnbnVtKQo+ICt7Cj4gKwlzaWdzZXRfdCBzc2V0Owo+ICsKPiArCXNp Z2VtcHR5c2V0KCZzc2V0KTsKPiArCXNpZ2FkZHNldCgmc3NldCwgc2lnbnVtKTsKPiArCXNpZ3By b2NtYXNrKFNJR19VTkJMT0NLLCAmc3NldCwgTlVMTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGRlZmF1bHRfcmVzdWx0KHN0cnVjdCB0ZGVzY3IgKnRkLCBib29sIGZvcmNlX2V4aXQpCj4gK3sK PiArCWlmICh0ZC0+cGFzcykKPiArCQlmcHJpbnRmKHN0ZGVyciwgIj09Pj4gY29tcGxldGVkLiBQ QVNTKDEpXG4iKTsKPiArCWVsc2UKPiArCQlmcHJpbnRmKHN0ZG91dCwgIj09Pj4gY29tcGxldGVk LiBGQUlMKDApXG4iKTsKPiArCWlmIChmb3JjZV9leGl0KQo+ICsJCWV4aXQodGQtPnBhc3MgPyBF WElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJv b2wgYXJlX2ZlYXRzX29rKHN0cnVjdCB0ZGVzY3IgKnRkKQo+ICt7Cj4gKwlyZXR1cm4gdGQgPyB0 ZC0+ZmVhdHNfcmVxdWlyZWQgPT0gdGQtPmZlYXRzX3N1cHBvcnRlZCA6IDA7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGRlZmF1bHRfaGFuZGxlcihpbnQgc2lnbnVtLCBzaWdpbmZvX3QgKnNpLCB2 b2lkICp1YykKPiArewo+ICsJaWYgKGN1cnJlbnQtPnNpZ190cmlnICYmIHNpZ251bSA9PSBjdXJy ZW50LT5zaWdfdHJpZykgewo+ICsJCWZwcmludGYoc3RkZXJyLCAiSGFuZGxpbmcgU0lHX1RSSUdc biIpOwo+ICsJCWN1cnJlbnQtPnRyaWdnZXJlZCA9IDE7Cj4gKwkJLyogLT5ydW4gd2FzIGFzc2Vy dGVkIE5PTi1OVUxMIGluIHRlc3Rfc2V0dXAoKSBhbHJlYWR5ICovCj4gKwkJY3VycmVudC0+cnVu KGN1cnJlbnQsIHNpLCB1Yyk7Cj4gKwl9IGVsc2UgaWYgKHNpZ251bSA9PSBTSUdJTEwgJiYgIWN1 cnJlbnQtPmluaXRpYWxpemVkKSB7Cj4gKwkJLyoKPiArCQkgKiBBIFNJR0lMTCBoZXJlIHdoaWxl IHN0aWxsIG5vdCBpbml0aWFsaXplZCBtZWFucyB3ZSBmYWlsZWQKPiArCQkgKiBldmVuIHRvIGFz c2VzIHRoZSBleGlzdGVuY2Ugb2YgZmVhdHVyZXMgZHVyaW5nIGluaXQKPiArCQkgKi8KPiArCQlm cHJpbnRmKHN0ZG91dCwKPiArCQkJIkdvdCBTSUdJTEwgdGVzdF9pbml0LiBNYXJraW5nIEFMTCBm ZWF0dXJlcyBVTlNVUFBPUlRFRC5cbiIpOwo+ICsJCWN1cnJlbnQtPmZlYXRzX3N1cHBvcnRlZCA9 IDA7Cj4gKwl9IGVsc2UgaWYgKGN1cnJlbnQtPnNpZ19vayAmJiBzaWdudW0gPT0gY3VycmVudC0+ c2lnX29rKSB7Cj4gKwkJLyogaXQncyBhIGJ1ZyBpbiB0aGUgdGVzdCBjb2RlIHdoZW4gdGhpcyBh c3NlcnQgZmFpbCAqLwo+ICsJCWFzc2VydCghY3VycmVudC0+c2lnX3RyaWcgfHwgY3VycmVudC0+ dHJpZ2dlcmVkKTsKPiArCQlmcHJpbnRmKHN0ZGVyciwKPiArCQkJIlNJR19PSyAtLSBTUDolcCAg c2lfYWRkckA6MHglcCAgc2lfY29kZTolZCAgdG9rZW5AOjB4JXAgIG9mZnNldDolbGRcbiIsCj4g KwkJCSgodWNvbnRleHRfdCAqKXVjKS0+dWNfbWNvbnRleHQuc3AsCj4gKwkJCXNpLT5zaV9hZGRy LCBzaS0+c2lfY29kZSwgY3VycmVudC0+dG9rZW4sCj4gKwkJCWN1cnJlbnQtPnRva2VuIC0gc2kt PnNpX2FkZHIpOwo+ICsJCS8qCj4gKwkJICogZmFrZV9zaWdyZXR1cm4gdGVzdHMsIHdoaWNoIGhh dmUgc2FuaXR5X2VuYWJsZWQ9MSwgc2V0LCBhdAo+ICsJCSAqIHRoZSB2ZXJ5IGxhc3QgdGltZSwg dGhlIHRva2VuIGZpZWxkIHRvIHRoZSBTUCBhZGRyZXNzIHVzZWQKPiArCQkgKiB0byBwbGFjZSB0 aGUgZmFrZSBzaWdmcmFtZTogc28gdG9rZW49PTAgbWVhbnMgd2UgbmV2ZXIgbWFkZQo+ICsJCSAq IGl0IHRvIHRoZSBlbmQsIHNlZ2ZhdWx0aW5nIHdlbGwtYmVmb3JlLCBhbmQgdGhlIHRlc3QgaXMK PiArCQkgKiBwb3NzaWJseSBicm9rZW4uCj4gKwkJICovCj4gKwkJaWYgKCFjdXJyZW50LT5zYW5p dHlfZGlzYWJsZWQgJiYgIWN1cnJlbnQtPnRva2VuKSB7Cj4gKwkJCWZwcmludGYoc3Rkb3V0LAo+ ICsJCQkJImN1cnJlbnQtPnRva2VuIFpFUk9FRC4uLnRlc3QgaXMgcHJvYmFibHkgYnJva2VuIVxu Iik7Cj4gKwkJCWFzc2VydCgwKTsKPiArCQl9Cj4gKwkJLyoKPiArCQkgKiBUcnlpbmcgdG8gbmFy cm93IGRvd24gdGhlIFNFR1YgdG8gdGhlIG9uZXMgZ2VuZXJhdGVkIGJ5Cj4gKwkJICogS2VybmVs IGl0c2VsZiB2aWEgYXJtNjRfbm90aWZ5X3NlZ2ZhdWx0KCkKPiArCQkgKi8KPiArCQlpZiAoY3Vy cmVudC0+c2lnX29rID09IFNJR1NFR1YgJiYgc2ktPnNpX2NvZGUgIT0gU0VHVl9BQ0NFUlIpIHsK PiArCQkJZnByaW50ZihzdGRvdXQsCj4gKwkJCQkic2lfY29kZSAhPSBTRUdWX0FDQ0VSUi4uLnRl c3QgaXMgcHJvYmFibHkgYnJva2VuIVxuIik7Cj4gKwkJCWFzc2VydCgwKTsKPiArCQl9Cj4gKwkJ ZnByaW50ZihzdGRlcnIsICJIYW5kbGluZyBTSUdfT0tcbiIpOwo+ICsJCWN1cnJlbnQtPnBhc3Mg PSAxOwo+ICsJCS8qCj4gKwkJICogU29tZSB0ZXN0cyBjYW4gbGVhZCB0byBTRUdWIGxvb3BzOiBp biBzdWNoIGEgY2FzZSB3ZSB3YW50Cj4gKwkJICogdG8gdGVybWluYXRlIGltbWVkaWF0ZWx5IGV4 aXRpbmcgc3RyYWlnaHQgYXdheQo+ICsJCSAqLwo+ICsJCWRlZmF1bHRfcmVzdWx0KGN1cnJlbnQs IDEpOwo+ICsJfSBlbHNlIHsKPiArCQlpZiAoc2lnbnVtID09IGN1cnJlbnQtPnNpZ191bnN1cHAg JiYgIWFyZV9mZWF0c19vayhjdXJyZW50KSkgewo+ICsJCQlmcHJpbnRmKHN0ZGVyciwgIi0tIFJY IFNJR19VTlNVUFAgb24gdW5zdXBwb3J0ZWQgZmVhdHVyZS4uLk9LXG4iKTsKPiArCQkJY3VycmVu dC0+cGFzcyA9IDE7Cj4gKwkJfSBlbHNlIGlmIChzaWdudW0gPT0gU0lHQUxSTSAmJiBjdXJyZW50 LT50aW1lb3V0KSB7Cj4gKwkJCWZwcmludGYoc3RkZXJyLCAiLS0gVGltZW91dCAhXG4iKTsKPiAr CQl9IGVsc2Ugewo+ICsJCQlmcHJpbnRmKHN0ZGVyciwKPiArCQkJCSItLSBSWCBVTkVYUEVDVEVE IFNJR05BTDogJWRcbiIsIHNpZ251bSk7Cj4gKwkJfQo+ICsJCWRlZmF1bHRfcmVzdWx0KGN1cnJl bnQsIDEpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRlZmF1bHRfc2V0dXAoc3RydWN0 IHRkZXNjciAqdGQpCj4gK3sKPiArCXN0cnVjdCBzaWdhY3Rpb24gc2E7Cj4gKwo+ICsJc2Euc2Ff c2lnYWN0aW9uID0gZGVmYXVsdF9oYW5kbGVyOwo+ICsJc2Euc2FfZmxhZ3MgPSBTQV9TSUdJTkZP Owo+ICsJaWYgKHRkLT5zYV9mbGFncykKPiArCQlzYS5zYV9mbGFncyB8PSB0ZC0+c2FfZmxhZ3M7 Cj4gKwlzaWdlbXB0eXNldCgmc2Euc2FfbWFzayk7Cj4gKwkvKiB1bmNhdGNoYWJsZSBzaWduYWxz IG5hdHVyYWxseSBza2lwcGVkIC4uLiAqLwo+ICsJZm9yIChpbnQgc2lnID0gMTsgc2lnIDwgMzI7 IHNpZysrKQo+ICsJCXNpZ2FjdGlvbihzaWcsICZzYSwgTlVMTCk7Cj4gKwkvKgo+ICsJICogUlQg U2lnbmFscyBkZWZhdWx0IGRpc3Bvc2l0aW9uIGlzIFRlcm0gYnV0IHRoZXkgY2Fubm90IGJlCj4g KwkgKiBnZW5lcmF0ZWQgYnkgdGhlIEtlcm5lbCBpbiByZXNwb25zZSB0byBvdXIgdGVzdHM7IHNv IGp1c3QgY2F0Y2gKPiArCSAqIHRoZW0gYWxsIGFuZCByZXBvcnQgdGhlbSBhcyBVTkVYUEVDVEVE IHNpZ25hbHMuCj4gKwkgKi8KPiArCWZvciAoaW50IHNpZyA9IFNJR1JUTUlOOyBzaWcgPD0gU0lH UlRNQVg7IHNpZysrKQo+ICsJCXNpZ2FjdGlvbihzaWcsICZzYSwgTlVMTCk7Cj4gKwo+ICsJLyog anVzdCBpbiBjYXNlLi4udW5ibG9jayBleHBsaWNpdGx5IGFsbCB3ZSBuZWVkICovCj4gKwlpZiAo dGQtPnNpZ190cmlnKQo+ICsJCXVuYmxvY2tfc2lnbmFsKHRkLT5zaWdfdHJpZyk7Cj4gKwlpZiAo dGQtPnNpZ19vaykKPiArCQl1bmJsb2NrX3NpZ25hbCh0ZC0+c2lnX29rKTsKPiArCWlmICh0ZC0+ c2lnX3Vuc3VwcCkKPiArCQl1bmJsb2NrX3NpZ25hbCh0ZC0+c2lnX3Vuc3VwcCk7Cj4gKwo+ICsJ aWYgKHRkLT50aW1lb3V0KSB7Cj4gKwkJdW5ibG9ja19zaWduYWwoU0lHQUxSTSk7Cj4gKwkJYWxh cm0odGQtPnRpbWVvdXQpOwo+ICsJfQo+ICsJZnByaW50ZihzdGRlcnIsICJSZWdpc3RlcmVkIGhh bmRsZXJzIGZvciBhbGwgc2lnbmFscy5cbiIpOwo+ICsKPiArCXJldHVybiAxOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIGludCBkZWZhdWx0X3RyaWdnZXIoc3RydWN0IHRkZXNjciAqdGQpCj4g K3sKPiArCXJldHVybiAhcmFpc2UodGQtPnNpZ190cmlnKTsKPiArfQo+ICsKPiArc3RhdGljIGlu dCB0ZXN0X2luaXQoc3RydWN0IHRkZXNjciAqdGQpCj4gK3sKPiArCXRkLT5taW5zaWdzdGtzeiA9 IGdldGF1eHZhbChBVF9NSU5TSUdTVEtTWik7Cj4gKwlpZiAoIXRkLT5taW5zaWdzdGtzeikKPiAr CQl0ZC0+bWluc2lnc3Rrc3ogPSBNSU5TSUdTVEtTWjsKPiArCWZwcmludGYoc3RkZXJyLCAiRGV0 ZWN0ZWQgTUlOU1RLU0lHU1o6JWRcbiIsIHRkLT5taW5zaWdzdGtzeik7Cj4gKwo+ICsJaWYgKHRk LT5mZWF0c19yZXF1aXJlZCkgewo+ICsJCWJvb2wgZmVhdHNfb2sgPSBmYWxzZTsKPiArCQl0ZC0+ ZmVhdHNfc3VwcG9ydGVkID0gMDsKPiArCQkvKgo+ICsJCSAqIENoZWNraW5nIGZvciBDUFUgcmVx dWlyZWQgZmVhdHVyZXMgdXNpbmcgYm90aCB0aGUKPiArCQkgKiBhdXh2YWwgYW5kIHRoZSBhcm02 NCBNUlMgRW11bGF0aW9uIHRvIHJlYWQgc3lzcmVncy4KPiArCQkgKi8KPiArCQlpZiAoZ2V0YXV4 dmFsKEFUX0hXQ0FQKSAmIEhXQ0FQX0NQVUlEKSB7Cj4gKwkJCXVpbnQ2NF90IHZhbCA9IDA7Cj4g Kwo+ICsJCQlpZiAodGQtPmZlYXRzX3JlcXVpcmVkICYgRkVBVF9TU0JTKSB7Cj4gKwkJCQkvKiBV c2VzIEhXQ0FQIHRvIGNoZWNrIGNhcGFiaWxpdHkgKi8KPiArCQkJCWlmIChnZXRhdXh2YWwoQVRf SFdDQVApICYgSFdDQVBfU1NCUykKPiArCQkJCQl0ZC0+ZmVhdHNfc3VwcG9ydGVkIHw9IEZFQVRf U1NCUzsKPiArCQkJfQo+ICsJCQlpZiAodGQtPmZlYXRzX3JlcXVpcmVkICYgRkVBVF9QQU4pIHsK PiArCQkJCS8qIFVzZXMgTVJTIGVtdWxhdGlvbiB0byBjaGVjayBjYXBhYmlsaXR5ICovCj4gKwkJ CQlnZXRfcmVndmFsKFNZU19JRF9BQTY0TU1GUjFfRUwxLCB2YWwpOwo+ICsJCQkJaWYgKElTX1BB Tl9TVVBQT1JURUQodmFsKSkKPiArCQkJCQl0ZC0+ZmVhdHNfc3VwcG9ydGVkIHw9IEZFQVRfUEFO Owo+ICsJCQl9Cj4gKwkJCWlmICh0ZC0+ZmVhdHNfcmVxdWlyZWQgJiBGRUFUX1VBTykgewo+ICsJ CQkJLyogVXNlcyBNUlMgZW11bGF0aW9uIHRvIGNoZWNrIGNhcGFiaWxpdHkgKi8KPiArCQkJCWdl dF9yZWd2YWwoU1lTX0lEX0FBNjRNTUZSMl9FTDEgLCB2YWwpOwo+ICsJCQkJaWYgKElTX1VBT19T VVBQT1JURUQodmFsKSkKPiArCQkJCQl0ZC0+ZmVhdHNfc3VwcG9ydGVkIHw9IEZFQVRfVUFPOwo+ ICsJCQl9Cj4gKwkJfSBlbHNlIHsKPiArCQkJZnByaW50ZihzdGRlcnIsCj4gKwkJCQkiSFdDQVBf Q1BVSUQgTk9UIGF2YWlsYWJsZS4gTWFyayBBTEwgZmVhdHMgVU5TVVBQT1JURUQuXG4iKTsKPiAr CQl9Cj4gKwkJZmVhdHNfb2sgPSBhcmVfZmVhdHNfb2sodGQpOwo+ICsJCWZwcmludGYoc3RkZXJy LAo+ICsJCQkiUmVxdWlyZWQgRmVhdHVyZXM6IFslc10gJXNzdXBwb3J0ZWRcbiIsCj4gKwkJCWZl YXRzX29rID8gZmVhdHNfdG9fc3RyaW5nKHRkLT5mZWF0c19zdXBwb3J0ZWQpIDoKPiArCQkgICAg ICAgIGZlYXRzX3RvX3N0cmluZyh0ZC0+ZmVhdHNfcmVxdWlyZWQgXiB0ZC0+ZmVhdHNfc3VwcG9y dGVkKSwKPiArCQkJIWZlYXRzX29rID8gIk5PVCAiIDogIiIpOwo+ICsJfQo+ICsKPiArCXRkLT5p bml0aWFsaXplZCA9IDE7Cj4gKwlyZXR1cm4gMTsKPiArfQo+ICsKPiAraW50IHRlc3Rfc2V0dXAo c3RydWN0IHRkZXNjciAqdGQpCj4gK3sKPiArCS8qIGFzc2VydCBjb3JlIGludmFyaWFudHMgc3lt cHRvbSBvZiBhIHJvdHRlbiB0ZXN0Y2FzZSAqLwo+ICsJYXNzZXJ0KGN1cnJlbnQpOwo+ICsJYXNz ZXJ0KHRkKTsKPiArCWFzc2VydCh0ZC0+bmFtZSk7Cj4gKwlhc3NlcnQodGQtPnJ1bik7Cj4gKwo+ ICsJaWYgKCF0ZXN0X2luaXQodGQpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmICh0ZC0+c2V0 dXApCj4gKwkJcmV0dXJuIHRkLT5zZXR1cCh0ZCk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGRlZmF1 bHRfc2V0dXAodGQpOwo+ICt9Cj4gKwo+ICtpbnQgdGVzdF9ydW4oc3RydWN0IHRkZXNjciAqdGQp Cj4gK3sKPiArCWlmICh0ZC0+c2lnX3RyaWcpIHsKPiArCQlpZiAodGQtPnRyaWdnZXIpCj4gKwkJ CXJldHVybiB0ZC0+dHJpZ2dlcih0ZCk7Cj4gKwkJZWxzZQo+ICsJCQlyZXR1cm4gZGVmYXVsdF90 cmlnZ2VyKHRkKTsKPiArCX0gZWxzZSB7Cj4gKwkJcmV0dXJuIHRkLT5ydW4odGQsIE5VTEwsIE5V TEwpOwo+ICsJfQo+ICt9Cj4gKwo+ICt2b2lkIHRlc3RfcmVzdWx0KHN0cnVjdCB0ZGVzY3IgKnRk KQo+ICt7Cj4gKwlpZiAodGQtPmNoZWNrX3Jlc3VsdCkKPiArCQl0ZC0+Y2hlY2tfcmVzdWx0KHRk KTsKPiArCWRlZmF1bHRfcmVzdWx0KHRkLCAwKTsKPiArfQo+ICsKPiArdm9pZCB0ZXN0X2NsZWFu dXAoc3RydWN0IHRkZXNjciAqdGQpCj4gK3sKPiArCWlmICh0ZC0+Y2xlYW51cCkKPiArCQl0ZC0+ Y2xlYW51cCh0ZCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv YXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFsc191dGlscy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvYXJtNjQvc2lnbmFsL3Rlc3Rfc2lnbmFsc191dGlscy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjg2NThkMWE3ZDRiOQo+IC0tLSAvZGV2L251bGwKPiAr KysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdF9zaWduYWxzX3V0 aWxzLmgKPiBAQCAtMCwwICsxLDEzIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovCj4gKy8qIENvcHlyaWdodCAoQykgMjAxOSBBUk0gTGltaXRlZCAqLwo+ICsKPiAr I2lmbmRlZiBfX1RFU1RfU0lHTkFMU19VVElMU19IX18KPiArI2RlZmluZSBfX1RFU1RfU0lHTkFM U19VVElMU19IX18KPiArCj4gKyNpbmNsdWRlICJ0ZXN0X3NpZ25hbHMuaCIKPiArCj4gK2ludCB0 ZXN0X3NldHVwKHN0cnVjdCB0ZGVzY3IgKnRkKTsKPiArdm9pZCB0ZXN0X2NsZWFudXAoc3RydWN0 IHRkZXNjciAqdGQpOwo+ICtpbnQgdGVzdF9ydW4oc3RydWN0IHRkZXNjciAqdGQpOwo+ICt2b2lk IHRlc3RfcmVzdWx0KHN0cnVjdCB0ZGVzY3IgKnRkKTsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBh L3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvLmdpdGlnbm9y ZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2FzZXMvLmdpdGln bm9yZQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi44NjUxMjcy ZTNjZmMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJt NjQvc2lnbmFsL3Rlc3RjYXNlcy8uZ2l0aWdub3JlCj4gQEAgLTAsMCArMSBAQAo+ICttYW5nbGVf cHN0YXRlX2ludmFsaWRfY29tcGF0X3RvZ2dsZQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdGNhc2VzL21hbmdsZV9wc3RhdGVfaW52YWxpZF9j b21wYXRfdG9nZ2xlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVz dGNhc2VzL21hbmdsZV9wc3RhdGVfaW52YWxpZF9jb21wYXRfdG9nZ2xlLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTcxMTkzZTc1MDFiCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2FybTY0L3NpZ25hbC90ZXN0Y2Fz ZXMvbWFuZ2xlX3BzdGF0ZV9pbnZhbGlkX2NvbXBhdF90b2dnbGUuYwo+IEBAIC0wLDAgKzEsMjUg QEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiArLyogQ29weXJp Z2h0IChDKSAyMDE5IEFSTSBMaW1pdGVkICovCj4gKwo+ICsjaW5jbHVkZSAidGVzdF9zaWduYWxz X3V0aWxzLmgiCj4gKyNpbmNsdWRlICJ0ZXN0Y2FzZXMuaCIKPiArCj4gK3N0YXRpYyBpbnQgbWFu Z2xlX2ludmFsaWRfcHN0YXRlX3J1bihzdHJ1Y3QgdGRlc2NyICp0ZCwgc2lnaW5mb190ICpzaSwK PiArCQkJCSAgICAgdWNvbnRleHRfdCAqdWMpCj4gK3sKPiArCUFTU0VSVF9HT09EX0NPTlRFWFQo dWMpOwo+ICsKPiArCS8qIFRoaXMgY29uZmlnIHNob3VsZCB0cmlnZ2VyIGEgU0lHU0VHViBieSBL ZXJuZWwgKi8KPiArCXVjLT51Y19tY29udGV4dC5wc3RhdGUgXj0gUFNSX01PREUzMl9CSVQ7Cj4g Kwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0cnVjdCB0ZGVzY3IgdGRlID0gewo+ICsJCS5z YW5pdHlfZGlzYWJsZWQgPSB0cnVlLAo+ICsJCS5uYW1lID0gIk1BTkdMRV9QU1RBVEVfSU5WQUxJ RF9TVEFURV9UT0dHTEUiLAo+ICsJCS5kZXNjciA9ICJNYW5nbGluZyB1Y19tY29udGV4dCB3aXRo IElOVkFMSUQgU1RBVEVfVE9HR0xFIiwKPiArCQkuc2lnX3RyaWcgPSBTSUdVU1IxLAo+ICsJCS5z aWdfb2sgPSBTSUdTRUdWLAo+ICsJCS5ydW4gPSBtYW5nbGVfaW52YWxpZF9wc3RhdGVfcnVuLAo+ ICt9Owo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwv dGVzdGNhc2VzL3Rlc3RjYXNlcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2ln bmFsL3Rlc3RjYXNlcy90ZXN0Y2FzZXMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5hNTk3ODUwOTJlMWYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy90ZXN0Y2FzZXMuYwo+IEBA IC0wLDAgKzEsMTUwIEBACj4gKyNpbmNsdWRlICJ0ZXN0Y2FzZXMuaCIKPiArCj4gK3N0cnVjdCBf YWFyY2g2NF9jdHggKmdldF9oZWFkZXIoc3RydWN0IF9hYXJjaDY0X2N0eCAqaGVhZCwgdWludDMy X3QgbWFnaWMsCj4gKwkJCQlzaXplX3QgcmVzdl9zeiwgc2l6ZV90ICpvZmZzZXQpCj4gK3sKPiAr CXNpemVfdCBvZmZzID0gMDsKPiArCXN0cnVjdCBfYWFyY2g2NF9jdHggKmZvdW5kID0gTlVMTDsK PiArCj4gKwlpZiAoIWhlYWQgfHwgcmVzdl9zeiA8IEhEUl9TWikKPiArCQlyZXR1cm4gZm91bmQ7 Cj4gKwo+ICsJZG8gewo+ICsJCWlmIChoZWFkLT5tYWdpYyA9PSBtYWdpYykgewo+ICsJCQlmb3Vu ZCA9IGhlYWQ7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQlvZmZzICs9IGhlYWQtPnNpemU7Cj4g KwkJaGVhZCA9IEdFVF9SRVNWX05FWFRfSEVBRChoZWFkKTsKPiArCX0gd2hpbGUgKG9mZnMgPCBy ZXN2X3N6IC0gSERSX1NaKTsKPiArCj4gKwlpZiAob2Zmc2V0KQo+ICsJCSpvZmZzZXQgPSBvZmZz Owo+ICsKPiArCXJldHVybiBmb3VuZDsKPiArfQo+ICsKPiArYm9vbCB2YWxpZGF0ZV9leHRyYV9j b250ZXh0KHN0cnVjdCBleHRyYV9jb250ZXh0ICpleHRyYSwgY2hhciAqKmVycikKPiArewo+ICsJ c3RydWN0IF9hYXJjaDY0X2N0eCAqdGVybTsKPiArCj4gKwlpZiAoIWV4dHJhIHx8ICFlcnIpCj4g KwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWZwcmludGYoc3RkZXJyLCAiVmFsaWRhdGluZyBFWFRS QS4uLlxuIik7Cj4gKwl0ZXJtID0gR0VUX1JFU1ZfTkVYVF9IRUFEKGV4dHJhKTsKPiArCWlmICgh dGVybSB8fCB0ZXJtLT5tYWdpYyB8fCB0ZXJtLT5zaXplKSB7Cj4gKwkJKmVyciA9ICJVTi1UZXJt aW5hdGVkIEVYVFJBIGNvbnRleHQiOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCWlmIChl eHRyYS0+ZGF0YXAgJiAweDBmVUwpCj4gKwkJKmVyciA9ICJFeHRyYSBEQVRBUCBtaXNhbGlnbmVk IjsKPiArCWVsc2UgaWYgKGV4dHJhLT5zaXplICYgMHgwZlVMKQo+ICsJCSplcnIgPSAiRXh0cmEg U0laRSBtaXNhbGlnbmVkIjsKPiArCWVsc2UgaWYgKGV4dHJhLT5kYXRhcCAhPSAodWludDY0X3Qp dGVybSArIHNpemVvZigqdGVybSkpCj4gKwkJKmVyciA9ICJFeHRyYSBEQVRBUCBtaXNwbGFjZWQg KG5vdCBjb250aWd1b3MpIjsKPiArCWlmICgqZXJyKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4g KwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArYm9vbCB2YWxpZGF0ZV9yZXNlcnZlZCh1Y29udGV4 dF90ICp1Yywgc2l6ZV90IHJlc3Zfc3osIGNoYXIgKiplcnIpCj4gK3sKPiArCWJvb2wgdGVybWlu YXRlZCA9IGZhbHNlOwo+ICsJc2l6ZV90IG9mZnMgPSAwOwo+ICsJaW50IGZsYWdzID0gMDsKPiAr CXN0cnVjdCBleHRyYV9jb250ZXh0ICpleHRyYSA9IE5VTEw7Cj4gKwlzdHJ1Y3QgX2FhcmNoNjRf Y3R4ICpoZWFkID0KPiArCQkoc3RydWN0IF9hYXJjaDY0X2N0eCAqKXVjLT51Y19tY29udGV4dC5f X3Jlc2VydmVkOwo+ICsKPiArCWlmICghZXJyKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCS8qIFdh bGsgdGlsbCB0aGUgZW5kIHRlcm1pbmF0b3IgdmVyaWZ5aW5nIF9fcmVzZXJ2ZWQgY29udGVudHMg Ki8KPiArCXdoaWxlIChoZWFkICYmICF0ZXJtaW5hdGVkICYmIG9mZnMgPCByZXN2X3N6KSB7Cj4g KwkJaWYgKCh1aW50NjRfdCloZWFkICYgMHgwZlVMKSB7Cj4gKwkJCSplcnIgPSAiTWlzYWxpZ25l ZCBIRUFEIjsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0KPiArCj4gKwkJc3dpdGNoIChoZWFk LT5tYWdpYykgewo+ICsJCQljYXNlIDA6Cj4gKwkJCQlpZiAoaGVhZC0+c2l6ZSkKPiArCQkJCQkq ZXJyID0gIkJhZCBzaXplIGZvciBNQUdJQzAiOwo+ICsJCQkJZWxzZQo+ICsJCQkJCXRlcm1pbmF0 ZWQgPSB0cnVlOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgRlBTSU1EX01BR0lDOgo+ICsJCQkJ aWYgKGZsYWdzICYgRlBTSU1EX0NUWCkKPiArCQkJCQkqZXJyID0gIk11bHRpcGxlIEZQU0lNRF9N QUdJQyI7Cj4gKwkJCQllbHNlIGlmIChoZWFkLT5zaXplICE9Cj4gKwkJCQkJIHNpemVvZihzdHJ1 Y3QgZnBzaW1kX2NvbnRleHQpKQo+ICsJCQkJCSplcnIgPSAiQmFkIHNpemUgZm9yIGZwc2ltZF9j b250ZXh0IjsKPiArCQkJCWZsYWdzIHw9IEZQU0lNRF9DVFg7Cj4gKwkJCQlicmVhazsKPiArCQkJ Y2FzZSBFU1JfTUFHSUM6Cj4gKwkJCQlpZiAoaGVhZC0+c2l6ZSAhPSBzaXplb2Yoc3RydWN0IGVz cl9jb250ZXh0KSkKPiArCQkJCQlmcHJpbnRmKHN0ZGVyciwKPiArCQkJCQkJIkJhZCBzaXplIGZv ciBlc3JfY29udGV4dCBpcyBub3QgYW4gZXJyb3IuLi5qdXN0IGlnbm9yZS5cbiIpOwo+ICsJCQkJ YnJlYWs7Cj4gKwkJCWNhc2UgU1ZFX01BR0lDOgo+ICsJCQkJaWYgKGZsYWdzICYgU1ZFX0NUWCkK PiArCQkJCQkqZXJyID0gIk11bHRpcGxlIFNWRV9NQUdJQyI7Cj4gKwkJCQllbHNlIGlmIChoZWFk LT5zaXplICE9Cj4gKwkJCQkJIHNpemVvZihzdHJ1Y3Qgc3ZlX2NvbnRleHQpKQo+ICsJCQkJCSpl cnIgPSAiQmFkIHNpemUgZm9yIHN2ZV9jb250ZXh0IjsKPiArCQkJCWZsYWdzIHw9IFNWRV9DVFg7 Cj4gKwkJCQlicmVhazsKPiArCQkJY2FzZSBFWFRSQV9NQUdJQzoKPiArCQkJCWlmIChmbGFncyAm IEVYVFJBX0NUWCkKPiArCQkJCQkqZXJyID0gIk11bHRpcGxlIEVYVFJBX01BR0lDIjsKPiArCQkJ CWVsc2UgaWYgKGhlYWQtPnNpemUgIT0KPiArCQkJCQkgc2l6ZW9mKHN0cnVjdCBleHRyYV9jb250 ZXh0KSkKPiArCQkJCQkqZXJyID0gIkJhZCBzaXplIGZvciBleHRyYV9jb250ZXh0IjsKPiArCQkJ CWZsYWdzIHw9IEVYVFJBX0NUWDsKPiArCQkJCWV4dHJhID0gKHN0cnVjdCBleHRyYV9jb250ZXh0 ICopaGVhZDsKPiArCQkJCWJyZWFrOwo+ICsJCQljYXNlIEtTRlRfQkFEX01BR0lDOgo+ICsJCQkJ LyoKPiArCQkJCSAqIFRoaXMgaXMgYSBCQUQgbWFnaWMgaGVhZGVyIGRlZmluZWQKPiArCQkJCSAq IGFydGlmaWNpYWxseSBieSBhIHRlc3RjYXNlIGFuZCBzdXJlbHkKPiArCQkJCSAqIHVua25vd24g dG8gdGhlIEtlcm5lbCBwYXJzZV91c2VyX3NpZ2ZyYW1lKCkuCj4gKwkJCQkgKiBJdCBNVVNUIGNh dXNlIGEgS2VybmVsIGluZHVjZWQgU0VHVgo+ICsJCQkJICovCj4gKwkJCQkqZXJyID0gIkJBRCBN QUdJQyAhIjsKPiArCQkJCWJyZWFrOwo+ICsJCQlkZWZhdWx0Ogo+ICsJCQkJLyoKPiArCQkJCSAq IEEgc3RpbGwgdW5rbm93biBNYWdpYzogcG90ZW50aWFsbHkgZnJlc2hseSBhZGRlZAo+ICsJCQkJ ICogdG8gdGhlIEtlcm5lbCBjb2RlIGFuZCBzdGlsbCB1bmtub3duIHRvIHRoZQo+ICsJCQkJICog dGVzdHMuCj4gKwkJCQkgKi8KPiArCQkJCWZwcmludGYoc3Rkb3V0LAo+ICsJCQkJCSJTS0lQIFVu a25vd24gTUFHSUM6IDB4JVggLSBJcyBLU0ZUIGFybTY0L3NpZ25hbCB1cCB0byBkYXRlID9cbiIs Cj4gKwkJCQkJaGVhZC0+bWFnaWMpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlpZiAo KmVycikKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCQlvZmZzICs9IGhlYWQtPnNpemU7Cj4g KwkJaWYgKHJlc3Zfc3ogLSBvZmZzIDwgc2l6ZW9mKCpoZWFkKSkgewo+ICsJCQkqZXJyID0gIkhF QUQgT3ZlcnJ1biI7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwo+ICsJCWlmIChmbGFn cyAmIEVYVFJBX0NUWCkKPiArCQkJaWYgKCF2YWxpZGF0ZV9leHRyYV9jb250ZXh0KGV4dHJhLCBl cnIpKQo+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCQloZWFkID0gR0VUX1JFU1ZfTkVYVF9I RUFEKGhlYWQpOwo+ICsJfQo+ICsKPiArCWlmICh0ZXJtaW5hdGVkICYmICEoZmxhZ3MgJiBGUFNJ TURfQ1RYKSkgewo+ICsJCSplcnIgPSAiTWlzc2luZyBGUFNJTUQiOwo+ICsJCXJldHVybiBmYWxz ZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+IGRpZmYgLS1naXQgYS90b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9hcm02NC9zaWduYWwvdGVzdGNhc2VzL3Rlc3RjYXNlcy5oIGIvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2lnbmFsL3Rlc3RjYXNlcy90ZXN0Y2FzZXMuaAo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MjQ3MTdjNzFiMWQK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYXJtNjQvc2ln bmFsL3Rlc3RjYXNlcy90ZXN0Y2FzZXMuaAo+IEBAIC0wLDAgKzEsODMgQEAKPiArI2lmbmRlZiBf X1RFU1RDQVNFU19IX18KPiArI2RlZmluZSBfX1RFU1RDQVNFU19IX18KPiArCj4gKyNpbmNsdWRl IDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+ Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPHVjb250ZXh0Lmg+Cj4gKyNpbmNs dWRlIDxhc3NlcnQuaD4KPiArCj4gKy8qIEFyY2hpdGVjdHVyZSBzcGVjaWZpYyBzaWdmcmFtZSBk ZWZpbml0aW9ucyAqLwo+ICsjaW5jbHVkZSA8YXNtL3NpZ2NvbnRleHQuaD4KPiArCj4gKyNkZWZp bmUgRlBTSU1EX0NUWAkoMSA8PCAwKQo+ICsjZGVmaW5lIFNWRV9DVFgJCSgxIDw8IDEpCj4gKyNk ZWZpbmUgRVhUUkFfQ1RYCSgxIDw8IDIpCj4gKwo+ICsjZGVmaW5lIEtTRlRfQkFEX01BR0lDCTB4 ZGVhZGJlZWYKPiArCj4gKyNkZWZpbmUgSERSX1NaIFwKPiArCXNpemVvZihzdHJ1Y3QgX2FhcmNo NjRfY3R4KQo+ICsKPiArI2RlZmluZSBHRVRfU0ZfUkVTVl9IRUFEKHNmKSBcCj4gKwkoc3RydWN0 IF9hYXJjaDY0X2N0eCAqKSgmKHNmKS51Yy51Y19tY29udGV4dC5fX3Jlc2VydmVkKQo+ICsKPiAr I2RlZmluZSBHRVRfU0ZfUkVTVl9TSVpFKHNmKSBcCj4gKwlzaXplb2YoKHNmKS51Yy51Y19tY29u dGV4dC5fX3Jlc2VydmVkKQo+ICsKPiArI2RlZmluZSBHRVRfVUNQX1JFU1ZfU0laRSh1Y3ApIFwK PiArCXNpemVvZigodWNwKS0+dWNfbWNvbnRleHQuX19yZXNlcnZlZCkKPiArCj4gKyNkZWZpbmUg QVNTRVJUX0JBRF9DT05URVhUKHVjKSBkbyB7CQkJCQlcCj4gKwljaGFyICplcnIgPSBOVUxMOwkJ CQkJCVwKPiArCWFzc2VydCghdmFsaWRhdGVfcmVzZXJ2ZWQoKHVjKSwgR0VUX1VDUF9SRVNWX1NJ WkUoKHVjKSksICZlcnIpKTtcCj4gKwlpZiAoZXJyKQkJCQkJCQlcCj4gKwkJZnByaW50ZihzdGRl cnIsCQkJCQkJXAo+ICsJCQkiVXNpbmcgYmFkbHkgYnVpbHQgY29udGV4dCAtIEVSUjogJXNcbiIs IGVycik7CVwKPiArfSB3aGlsZSgwKQo+ICsKPiArI2RlZmluZSBBU1NFUlRfR09PRF9DT05URVhU KHVjKSBkbyB7CQkJCQkgXAo+ICsJY2hhciAqZXJyID0gTlVMTDsJCQkJCQkgXAo+ICsJaWYgKCF2 YWxpZGF0ZV9yZXNlcnZlZCgodWMpLCBHRVRfVUNQX1JFU1ZfU0laRSgodWMpKSwgJmVycikpIHsJ IFwKPiArCQlpZiAoZXJyKQkJCQkJCSBcCj4gKwkJCWZwcmludGYoc3RkZXJyLAkJCQkJIFwKPiAr CQkJCSJEZXRlY3RlZCBCQUQgY29udGV4dCAtIEVSUjogJXNcbiIsIGVycik7XAo+ICsJCWFzc2Vy dCgwKTsJCQkJCQkgXAo+ICsJfSBlbHNlIHsJCQkJCQkJIFwKPiArCQlmcHJpbnRmKHN0ZGVyciwg InVjIGNvbnRleHQgdmFsaWRhdGVkLlxuIik7CQkgXAo+ICsJfQkJCQkJCQkJIFwKPiArfSB3aGls ZSgwKQo+ICsKPiArLyogaGVhZC0+c2l6ZSBhY2NvdW50cyBib3RoIGZvciBwYXlsb2FkIGFuZCBo ZWFkZXIgX2FhcmNoNjRfY3R4IHNpemUgISAqLwo+ICsjZGVmaW5lIEdFVF9SRVNWX05FWFRfSEVB RChoKSBcCj4gKwkoc3RydWN0IF9hYXJjaDY0X2N0eCAqKSgoY2hhciAqKShoKSArIChoKS0+c2l6 ZSkKPiArCj4gK3N0cnVjdCBmYWtlX3NpZ2ZyYW1lIHsKPiArCXNpZ2luZm9fdAlpbmZvOwo+ICsJ dWNvbnRleHRfdAl1YzsKPiArfTsKPiArCj4gKwo+ICtib29sIHZhbGlkYXRlX3Jlc2VydmVkKHVj b250ZXh0X3QgKnVjLCBzaXplX3QgcmVzdl9zeiwgY2hhciAqKmVycik7Cj4gKwo+ICtib29sIHZh bGlkYXRlX2V4dHJhX2NvbnRleHQoc3RydWN0IGV4dHJhX2NvbnRleHQgKmV4dHJhLCBjaGFyICoq ZXJyKTsKPiArCj4gK3N0cnVjdCBfYWFyY2g2NF9jdHggKmdldF9oZWFkZXIoc3RydWN0IF9hYXJj aDY0X2N0eCAqaGVhZCwgdWludDMyX3QgbWFnaWMsCj4gKwkJCQlzaXplX3QgcmVzdl9zeiwgc2l6 ZV90ICpvZmZzZXQpOwo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgX2FhcmNoNjRfY3R4ICpn ZXRfdGVybWluYXRvcihzdHJ1Y3QgX2FhcmNoNjRfY3R4ICpoZWFkLAo+ICsJCQkJCQkgIHNpemVf dCByZXN2X3N6LAo+ICsJCQkJCQkgIHNpemVfdCAqb2Zmc2V0KQo+ICt7Cj4gKwlyZXR1cm4gZ2V0 X2hlYWRlcihoZWFkLCAwLCByZXN2X3N6LCBvZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgd3JpdGVfdGVybWluYXRvcl9yZWNvcmQoc3RydWN0IF9hYXJjaDY0X2N0eCAqdGFp bCkKPiArewo+ICsJaWYgKHRhaWwpIHsKPiArCQl0YWlsLT5tYWdpYyA9IDA7Cj4gKwkJdGFpbC0+ c2l6ZSA9IDA7Cj4gKwl9Cj4gK30KPiArI2VuZGlmCj4gCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==