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=-11.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,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 93129C2D0A3 for ; Wed, 4 Nov 2020 08:02:47 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 0CF44221F9 for ; Wed, 4 Nov 2020 08:02:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="cQyg1DQQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0CF44221F9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=QuQvqFgWW3GwB0PFqxMJRlI2K7yPGX0qZ8akI4B3vAY=; b=cQyg1DQQJsiel3WTrSONpkX8O o/6ESdGOwkgmcdf4uosFenSUDskBN3LyEd+tJbhsCDZG3wNayhYvxlddFy02O4zqkhPs8EN7zpP/T cLxGZVNGxCZBr5a4whrF8JidYtXeQOSxk7ucZV1r9KT3wNv/PndHhiGfHW3fN8q92dAm4eHZOkm5B wyKlImT4L9SyKyzALM6YJL0663+ISPO34wznPejiJR4e3fJnNhlxfvu0+XerDOxv8YMChZV0CVZW3 1Wn2AbccjLVkubjlYzyTusWtTc33xO/xVe4daVGn1Gtk1M9CKhOXf12SseyXGIE1IeJp+cU5VbRwQ 7ScFZAIeQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kaDk8-00034W-Qw; Wed, 04 Nov 2020 08:02:08 +0000 Received: from szxga06-in.huawei.com ([45.249.212.32]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kaDk3-00031q-VC for linux-arm-kernel@lists.infradead.org; Wed, 04 Nov 2020 08:02:06 +0000 Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4CQzdC1QjrzhbSr; Wed, 4 Nov 2020 16:01:51 +0800 (CST) Received: from [10.110.54.32] (10.110.54.32) by DGGEMS406-HUB.china.huawei.com (10.3.19.206) with Microsoft SMTP Server id 14.3.487.0; Wed, 4 Nov 2020 16:01:49 +0800 Subject: Re: [PATCH 1/1] arm64: Accelerate Adler32 using arm64 SVE instructions. To: Ard Biesheuvel , Dave Martin References: <20201103121506.1533-1-liqiang64@huawei.com> <20201103121506.1533-2-liqiang64@huawei.com> From: Li Qiang Message-ID: Date: Wed, 4 Nov 2020 16:01:48 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 MIME-Version: 1.0 In-Reply-To: X-Originating-IP: [10.110.54.32] X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201104_030204_703699_7BCEFC3F X-CRM114-Status: GOOD ( 41.98 ) 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: Alexandre Torgue , Catalin Marinas , Linux Crypto Mailing List , Maxime Coquelin , Will Deacon , "David S. Miller" , Linux ARM , Herbert Xu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQXJkLAoKVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgeW91ciByZXBseSBhbmQgY29tbWVudHMg b24gdGhlIGNvZGUgOikKCuWcqCAyMDIwLzExLzMgMjI6MzQsIEFyZCBCaWVzaGV1dmVsIOWGmemB kzoKPiAoKyBEYXZlKQo+IAo+IEhlbGxvIGxpcWlhbmcsCj4gCj4gRmlyc3Qgb2YgYWxsLCBJIGRv bid0IHRoaW5rIGl0IGlzIHNhZmUgYXQgdGhlIG1vbWVudCB0byB1c2UgU1ZFIGluIHRoZQo+IGtl cm5lbCwgYXMgd2UgZG9uJ3QgcHJlc2VydmUgYWxsIHN0YXRlIElJUkMuIE15IG1lbW9yeSBpcyBh IGJpdCBoYXp5LAo+IHRob3VnaCwgc28gcGVyaGFwcyBEYXZlIGNhbiBlbGFib3JhdGU/CgpPSywg SSB1bmRlcnN0YW5kIHRoaXMgcHJvYmxlbSBub3cuCgo+IAo+IEknbGwgZ2l2ZSBteSBmZWVkYmFj ayBvbiB0aGUgY29kZSBpdHNlbGYgYmVsb3csIGJ1dCBwbGVhc2UgZG9uJ3QKPiBjb25zaWRlciB0 aGlzIGFuIGFjayBvbiB0aGUgaW50ZW50IG9mIHVzaW5nIFNWRSBpbiB0aGUga2VybmVsLgo+IAo+ IENvdWxkIHlvdSBleHBsYWluIHdoeSBTVkUgaXMgc28gbXVjaCBiZXR0ZXIgdGhhbiBORU9OIGhl cmU/CgpJbiB0aGUgcHJldmlvdXMgbW9udGhzIG9mIHdvcmssIEkgc3BlbnQgc29tZSB0aW1lIHJl c2VhcmNoaW5nIEFSTSdzIFNWRQppbnN0cnVjdGlvbiBzZXQsIGFuZCB0cmllZCB0byB1c2UgU1ZF IGluc3RydWN0aW9ucyB0byBvcHRpbWl6ZSBhZGxlcjMyCmFuZCBzb21lIG90aGVyIGdlbmVyYWwg YWxnb3JpdGhtcywgYW5kIGFjaGlldmVkIGdvb2Qgb3B0aW1pemF0aW9uIHJlc3VsdHMKb24gQWRs ZXIzMi4KCkFjY29yZGluZyB0byBteSBjdXJyZW50IHJlc2VhcmNoIGFuZCBkZWJ1Z2dpbmcgKHNl ZSBjb3Zlci1sZXR0ZXIpLCBJIHRoaW5rCnRoZSB2ZWN0b3JpemF0aW9uIG1ldGhvZCBvZiBBZGxl cjMyIGFsZ29yaXRobSBpcyB2ZXJ5IHN1aXRhYmxlIGZvciBTVkUKaW1wbGVtZW50YXRpb24sIGJl Y2F1c2UgaXQgY2FuIGRpdmlkZSBkYXRhIGJsb2NrcyBvZiBhbnkgbGVuZ3RoLCBzdWNoIGFzCjE2 Ynl0ZSwgMzJieXRlLCAxMjhieXRlLCAyNTZieXRlLCBldGMuIHNvIG91ciBjb2RlIGNhbiBhZGFw dCB0byBhbnkKZGlmZmVyZW50IFNWRSBoYXJkd2FyZSBmcm9tIDEyOGJpdCB0byAyMDQ4Yml0LiBT dXBwb3J0aW5nIFNWRSBpbnN0cnVjdGlvbnMKd2l0aCBkaWZmZXJlbnQgYml0IHdpZHRocyBkb2Vz IG5vdCByZXF1aXJlIHNwZWNpYWwgY2hhbmdlcyBhbmQgcHJvY2Vzc2luZwpwcm9jZWR1cmVzLiBJ dCBvbmx5IG5lZWRzIHRvIGRldGVybWluZSB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgIkFkbGVy X3NlcXVlbmNlIgphY2NvcmRpbmcgdG8gdGhlIFNWRSBiaXQgd2lkdGguIEFuZCBkaWZmZXJlbnQg aGFyZHdhcmUgY2FuIGdpdmUgZnVsbCBwbGF5IHRvCml0cyBwZXJmb3JtYW5jZS4KCkkgYW0gYWxz byB0cnlpbmcgdG8gaW1wbGVtZW50IHRoZSBhbGdvcml0aG0gd2l0aCBORU9OIGluc3RydWN0aW9u cy4gSSB3aWxsCnJlcGx5IHRvIHlvdSBpbiB0aW1lIGlmIHRoZXJlIGFyZSByZXN1bHRzLgoKPiAK PiBPbiBUdWUsIDMgTm92IDIwMjAgYXQgMTM6MTYsIGwwMDM3NDMzNCA8bGlxaWFuZzY0QGh1YXdl aS5jb20+IHdyb3RlOgo+Pgo+PiBGcm9tOiBsaXFpYW5nIDxsaXFpYW5nNjRAaHVhd2VpLmNvbT4K Pj4KPj4gICAgICAgICBJbiB0aGUgbGlieiBsaWJyYXJ5LCB0aGUgY2hlY2tzdW0gYWxnb3JpdGht IGFkbGVyMzIgdXN1YWxseSBvY2N1cGllcwo+PiAgICAgICAgIGEgcmVsYXRpdmVseSBoaWdoIGhv dCBzcG90LCBhbmQgdGhlIFNWRSBpbnN0cnVjdGlvbiBzZXQgY2FuIGVhc2lseQo+PiAgICAgICAg IGFjY2VsZXJhdGUgaXQsIHNvIHRoYXQgdGhlIHBlcmZvcm1hbmNlIG9mIGxpYnogbGlicmFyeSB3 aWxsIGJlCj4+ICAgICAgICAgc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KPj4KPj4gICAgICAgICBX ZSBjYW4gZGl2aWRlcyBidWYgaW50byBibG9ja3MgYWNjb3JkaW5nIHRvIHRoZSBiaXQgd2lkdGgg b2YgU1ZFLAo+PiAgICAgICAgIGFuZCB0aGVuIHVzZXMgdmVjdG9yIHJlZ2lzdGVycyB0byBwZXJm b3JtIG9wZXJhdGlvbnMgaW4gdW5pdHMgb2YgYmxvY2tzCj4+ICAgICAgICAgdG8gYWNoaWV2ZSB0 aGUgcHVycG9zZSBvZiBhY2NlbGVyYXRpb24uCj4+Cj4+ICAgICAgICAgT24gbWFjaGluZXMgdGhh dCBzdXBwb3J0IEFSTTY0IHN2ZSBpbnN0cnVjdGlvbnMsIHRoaXMgYWxnb3JpdGhtIGlzCj4+ICAg ICAgICAgYWJvdXQgM340IHRpbWVzIGZhc3RlciB0aGFuIHRoZSBhbGdvcml0aG0gaW1wbGVtZW50 ZWQgaW4gQyBsYW5ndWFnZQo+PiAgICAgICAgIGluIGxpYnouIFRoZSB3aWRlciB0aGUgU1ZFIGlu c3RydWN0aW9uLCB0aGUgYmV0dGVyIHRoZSBhY2NlbGVyYXRpb24gZWZmZWN0Lgo+Pgo+PiAgICAg ICAgIE1lYXN1cmVkIG9uIGEgVGFpc2hhbiAxOTUxIG1hY2hpbmUgdGhhdCBzdXBwb3J0cyAyNTZi aXQgd2lkdGggU1ZFLAo+PiAgICAgICAgIGJlbG93IGFyZSB0aGUgcmVzdWx0cyBvZiBteSBtZWFz dXJlZCByYW5kb20gZGF0YSBvZiAxTSBhbmQgMTBNOgo+Pgo+PiAgICAgICAgICAgICAgICAgW3Jv b3RAeHh4IGFkbGVyMzJdIyAuL2JlbmNobWFyayAxMDAwMDAwCj4+ICAgICAgICAgICAgICAgICBM aWJ6IGFsZzogVGltZSB1c2VkOiAgICA2MDggdXMsIDE2NDQuNyBNYi9zLgo+PiAgICAgICAgICAg ICAgICAgU1ZFICBhbGc6IFRpbWUgdXNlZDogICAgMTY2IHVzLCA2MDI0LjEgTWIvcy4KPj4KPj4g ICAgICAgICAgICAgICAgIFtyb290QHh4eCBhZGxlcjMyXSMgLi9iZW5jaG1hcmsgMTAwMDAwMDAK Pj4gICAgICAgICAgICAgICAgIExpYnogYWxnOiBUaW1lIHVzZWQ6ICAgNjQ4NCB1cywgMTU0Mi4z IE1iL3MuCj4+ICAgICAgICAgICAgICAgICBTVkUgIGFsZzogVGltZSB1c2VkOiAgIDIwMzQgdXMs IDQ5MTYuNCBNYi9zLgo+Pgo+PiAgICAgICAgIFRoZSBibG9ja3MgY2FuIGJlIG9mIGFueSBzaXpl LCBzbyB0aGUgYWxnb3JpdGhtIGNhbiBhdXRvbWF0aWNhbGx5IGFkYXB0Cj4+ICAgICAgICAgdG8g U1ZFIGhhcmR3YXJlIHdpdGggZGlmZmVyZW50IGJpdCB3aWR0aHMgd2l0aG91dCBtb2RpZnlpbmcg dGhlIGNvZGUuCj4+Cj4gCj4gUGxlYXNlIGRyb3AgdGhpcyBpbmRlbnRhdGlvbiBmcm9tIHRoZSBj b21taXQgbG9nLgo+IAo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBsaXFpYW5nIDxsaXFpYW5nNjRAaHVh d2VpLmNvbT4KPj4gLS0tCj4+ICBhcmNoL2FybTY0L2NyeXB0by9LY29uZmlnICAgICAgICAgICAg fCAgIDUgKysKPj4gIGFyY2gvYXJtNjQvY3J5cHRvL01ha2VmaWxlICAgICAgICAgICB8ICAgMyAr Cj4+ICBhcmNoL2FybTY0L2NyeXB0by9hZGxlcjMyLXN2ZS1nbHVlLmMgfCAgOTMgKysrKysrKysr KysrKysrKysrKysKPj4gIGFyY2gvYXJtNjQvY3J5cHRvL2FkbGVyMzItc3ZlLlMgICAgICB8IDEy NyArKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIGNyeXB0by90ZXN0bWdyLmMgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArLQo+PiAgY3J5cHRvL3Rlc3RtZ3IuaCAgICAgICAgICAgICAg ICAgICAgIHwgIDEzICsrKwo+IAo+IFBsZWFzZSBzcGxpdCBpbnRvIHR3byBwYXRjaGVzLiBBbHNv LCB3aG8gaXMgZ29pbmcgdG8gdXNlIHRoaXMgImFkbGVyMzIiIHNoYXNoPwoKSW4gdGhlIGtlcm5l bCwgYWRsZXIzMiBpcyB1c2VkIGJ5IHRoZSB6bGliX2RlZmxhdGUgYWxnb3JpdGhtIGFzIGEgY2hl Y2tzdW0gYWxnb3JpdGhtLAphbmQgdGhlIHNhbWUgaXMgdXNlZCBpbiB0aGUgbGlieiBsaWJyYXJ5 LgoKPiAKPj4gIDYgZmlsZXMgY2hhbmdlZCwgMjQ4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2NyeXB0by9hZGxlcjMyLXN2ZS1n bHVlLmMKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2NyeXB0by9hZGxlcjMyLXN2 ZS5TCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NyeXB0by9LY29uZmlnIGIvYXJjaC9h cm02NC9jcnlwdG8vS2NvbmZpZwo+PiBpbmRleCBiOGViMDQ1Li5jZmU1OGI5IDEwMDY0NAo+PiAt LS0gYS9hcmNoL2FybTY0L2NyeXB0by9LY29uZmlnCj4+ICsrKyBiL2FyY2gvYXJtNjQvY3J5cHRv L0tjb25maWcKPj4gQEAgLTEyNiw0ICsxMjYsOSBAQCBjb25maWcgQ1JZUFRPX0FFU19BUk02NF9C Uwo+PiAgICAgICAgIHNlbGVjdCBDUllQVE9fTElCX0FFUwo+PiAgICAgICAgIHNlbGVjdCBDUllQ VE9fU0lNRAo+Pgo+PiArY29uZmlnIFNWRV9BRExFUjMyCj4+ICsgICAgICAgdHJpc3RhdGUgIkFj Y2VsZXJhdGUgQWRsZXIzMiB1c2luZyBhcm02NCBTVkUgaW5zdHJ1Y3Rpb25zLiIKPj4gKyAgICAg ICBkZXBlbmRzIG9uIEFSTTY0X1NWRQo+PiArICAgICAgIHNlbGVjdCBDUllQVE9fSEFTSAo+PiAr Cj4+ICBlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcnlwdG8vTWFrZWZpbGUgYi9h cmNoL2FybTY0L2NyeXB0by9NYWtlZmlsZQo+PiBpbmRleCBkMDkwMWU2Li40NWZlNjQ5IDEwMDY0 NAo+PiAtLS0gYS9hcmNoL2FybTY0L2NyeXB0by9NYWtlZmlsZQo+PiArKysgYi9hcmNoL2FybTY0 L2NyeXB0by9NYWtlZmlsZQo+PiBAQCAtNjMsNiArNjMsOSBAQCBhZXMtYXJtNjQteSA6PSBhZXMt Y2lwaGVyLWNvcmUubyBhZXMtY2lwaGVyLWdsdWUubwo+PiAgb2JqLSQoQ09ORklHX0NSWVBUT19B RVNfQVJNNjRfQlMpICs9IGFlcy1uZW9uLWJzLm8KPj4gIGFlcy1uZW9uLWJzLXkgOj0gYWVzLW5l b25icy1jb3JlLm8gYWVzLW5lb25icy1nbHVlLm8KPj4KPj4gK29iai0kKENPTkZJR19TVkVfQURM RVIzMikgKz0gc3ZlLWFkbGVyMzIubwo+PiArc3ZlLWFkbGVyMzIteSA6PSBhZGxlcjMyLXN2ZS5v IGFkbGVyMzItc3ZlLWdsdWUubwo+PiArCj4+ICBDRkxBR1NfYWVzLWdsdWUtY2UubyAgIDo9IC1E VVNFX1Y4X0NSWVBUT19FWFRFTlNJT05TCj4+Cj4+ICAkKG9iaikvYWVzLWdsdWUtJS5vOiAkKHNy YykvYWVzLWdsdWUuYyBGT1JDRQo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcnlwdG8vYWRs ZXIzMi1zdmUtZ2x1ZS5jIGIvYXJjaC9hcm02NC9jcnlwdG8vYWRsZXIzMi1zdmUtZ2x1ZS5jCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmNiNzQ1MTQKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9hcmNoL2FybTY0L2NyeXB0by9hZGxlcjMyLXN2ZS1nbHVlLmMKPj4g QEAgLTAsMCArMSw5MyBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seQo+PiArLyoKPj4gKyAqIEFjY2VsZXJhdGUgQWRsZXIzMiB1c2luZyBhcm02NCBTVkUgaW5z dHJ1Y3Rpb25zLgo+PiArICogQXV0b21hdGljYWxseSBzdXBwb3J0IGFsbCBiaXQgd2lkdGggb2Yg U1ZFCj4+ICsgKiB2ZWN0b3IoMTI4fjIwNDgpLgo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoQykg MjAyMCBIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgo+PiArICoKPj4gKyAqIEF1dGhvcjog TGkgUWlhbmcgPGxpcWlhbmc2NEBodWF3ZWkuY29tPgo+PiArICovCj4+ICsjaW5jbHVkZSA8bGlu dXgvY3B1ZmVhdHVyZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3p1dGlsLmg+Cj4+ICsKPj4g KyNpbmNsdWRlIDxjcnlwdG8vaW50ZXJuYWwvaGFzaC5oPgo+PiArI2luY2x1ZGUgPGNyeXB0by9p bnRlcm5hbC9zaW1kLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDxhc20vbmVvbi5oPgo+PiArI2luY2x1 ZGUgPGFzbS9zaW1kLmg+Cj4+ICsKPj4gKy8qIFNjYWxhYmxlIHZlY3RvciBleHRlbnNpb24gbWlu IHNpemUgMTI4Yml0ICovCj4+ICsjZGVmaW5lIFNWRV9BRExFUjMyX01JTl9TSVpFIDE2VQo+PiAr I2RlZmluZSBTVkVfQURMRVIzMl9ESUdFU1RfU0laRSA0Cj4+ICsjZGVmaW5lIFNWRV9BRExFUjMy X0JMT0NLU0laRSAxCj4+ICsKPj4gK2FzbWxpbmthZ2UgdTMyIGFkbGVyMzJfc3ZlKHUzMiBhZGxl ciwgY29uc3QgdTggKmJ1ZiwgdTMyIGxlbik7Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYWRsZXIzMl9z dmVfaW5pdChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYykKPj4gK3sKPj4gKyAgICAgICB1MzIgKmFk bGVyMzIgPSBzaGFzaF9kZXNjX2N0eChkZXNjKTsKPj4gKwo+PiArICAgICAgICphZGxlcjMyID0g MTsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBhZGxlcjMy X3N2ZV91cGRhdGUoc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICpkYXRhLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aCkKPiAK PiBQbGVhc2UgaW5kZW50IGZ1bmN0aW9uIHBhcmFtZXRlcnMKPiAKPj4gK3sKPj4gKyAgICAgICB1 MzIgKmFkbGVyMzIgPSBzaGFzaF9kZXNjX2N0eChkZXNjKTsKPj4gKwo+PiArICAgICAgIGlmIChs ZW5ndGggPj0gU1ZFX0FETEVSMzJfTUlOX1NJWkUgJiYgY3J5cHRvX3NpbWRfdXNhYmxlKCkpIHsK Pj4gKyAgICAgICAgICAgICAgIGtlcm5lbF9uZW9uX2JlZ2luKCk7Cj4+ICsgICAgICAgICAgICAg ICAqYWRsZXIzMiA9IGFkbGVyMzJfc3ZlKCphZGxlcjMyLCBkYXRhLCBsZW5ndGgpOwo+PiArICAg ICAgICAgICAgICAga2VybmVsX25lb25fZW5kKCk7Cj4+ICsgICAgICAgfSBlbHNlIHsKPj4gKyAg ICAgICAgICAgICAgICphZGxlcjMyID0gemxpYl9hZGxlcjMyKCphZGxlcjMyLCBkYXRhLCBsZW5n dGgpOwo+PiArICAgICAgIH0KPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCBhZGxlcjMyX3N2ZV9maW5hbChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywgdTggKm91 dCkKPj4gK3sKPj4gKyAgICAgICB1MzIgKmFkbGVyMzIgPSBzaGFzaF9kZXNjX2N0eChkZXNjKTsK Pj4gKwo+PiArICAgICAgICoodTMyICopb3V0ID0gKmFkbGVyMzI7Cj4gCj4gUGxlYXNlIHVzZSBw dXRfdW5hbGlnbmVkIGhlcmUKPiAKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHN0cnVjdCBzaGFzaF9hbGcgYWRsZXIzMl9zdmVfYWxnW10gPSB7ewo+PiArICAgICAg IC5kaWdlc3RzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNWRV9BRExFUjMyX0RJ R0VTVF9TSVpFLAo+PiArICAgICAgIC5kZXNjc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9IFNWRV9BRExFUjMyX0RJR0VTVF9TSVpFLAo+PiArICAgICAgIC5pbml0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGFkbGVyMzJfc3ZlX2luaXQsCj4+ICsgICAgICAg LnVwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYWRsZXIzMl9zdmVfdXBk YXRlLAo+PiArICAgICAgIC5maW5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9 IGFkbGVyMzJfc3ZlX2ZpbmFsLAo+PiArCj4+ICsgICAgICAgLmJhc2UuY3JhX25hbWUgICAgICAg ICAgICAgICAgICA9ICJhZGxlcjMyIiwKPj4gKyAgICAgICAuYmFzZS5jcmFfZHJpdmVyX25hbWUg ICA9ICJhZGxlcjMyLWFybTY0LXN2ZSIsCj4+ICsgICAgICAgLmJhc2UuY3JhX3ByaW9yaXR5ICAg ICAgICAgICAgICA9IDIwMCwKPj4gKyAgICAgICAuYmFzZS5jcmFfYmxvY2tzaXplICAgICAgICAg ICAgID0gU1ZFX0FETEVSMzJfQkxPQ0tTSVpFLAo+PiArICAgICAgIC5iYXNlLmNyYV9tb2R1bGUg ICAgICAgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiAKPiBQbGVhc2UgbWFrZSBzdXJlIHRoZSBp bmRlbnRhdGlvbiBpcyBjb3JyZWN0IGhlcmUuCj4gCj4+ICt9fTsKPj4gKwo+PiArc3RhdGljIGlu dCBfX2luaXQgYWRsZXIzMl9zdmVfbW9kX2luaXQodm9pZCkKPj4gK3sKPj4gKyAgICAgICBpZiAo IWNwdV9oYXZlX25hbWVkX2ZlYXR1cmUoU1ZFKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAw Owo+PiArCj4+ICsgICAgICAgcmV0dXJuIGNyeXB0b19yZWdpc3Rlcl9zaGFzaChhZGxlcjMyX3N2 ZV9hbGcpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgYWRsZXIzMl9zdmVfbW9k X2V4aXQodm9pZCkKPj4gK3sKPj4gKyAgICAgICBjcnlwdG9fdW5yZWdpc3Rlcl9zaGFzaChhZGxl cjMyX3N2ZV9hbGcpOwo+PiArfQo+PiArCj4+ICttb2R1bGVfaW5pdChhZGxlcjMyX3N2ZV9tb2Rf aW5pdCk7Cj4+ICttb2R1bGVfZXhpdChhZGxlcjMyX3N2ZV9tb2RfZXhpdCk7Cj4+ICsKPj4gK01P RFVMRV9BVVRIT1IoIkxpIFFpYW5nIDxsaXFpYW5nNjRAaHVhd2VpLmNvbT4iKTsKPj4gK01PRFVM RV9MSUNFTlNFKCJHUEwgdjIiKTsKPj4gK01PRFVMRV9BTElBU19DUllQVE8oImFkbGVyMzIiKTsK Pj4gK01PRFVMRV9BTElBU19DUllQVE8oImFkbGVyMzItYXJtNjQtc3ZlIik7Cj4+IGRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2NyeXB0by9hZGxlcjMyLXN2ZS5TIGIvYXJjaC9hcm02NC9jcnlwdG8v YWRsZXIzMi1zdmUuUwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi4z NGVlNGJiCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvYXJjaC9hcm02NC9jcnlwdG8vYWRsZXIz Mi1zdmUuUwo+PiBAQCAtMCwwICsxLDEyNyBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAtb25seSAqLwo+PiArLyoKPj4gKyAqIEFjY2VsZXJhdGUgQWRsZXIzMiB1c2lu ZyBhcm02NCBTVkUgaW5zdHJ1Y3Rpb25zLiBBdXRvbWF0aWNhbGx5IHN1cHBvcnQgYWxsIGJpdAo+ PiArICogICAgICB3aWR0aCBvZiBTVkUgdmVjdG9yKDEyOH4yMDQ4KS4KPj4gKyAqCj4+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMjAgSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KPj4gKyAqCj4+ ICsgKiBBdXRob3I6IExpIFFpYW5nIDxsaXFpYW5nNjRAaHVhd2VpLmNvbT4KPj4gKyAqLwo+PiAr Cj4+ICsjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgo+PiArI2luY2x1ZGUgPGFzbS9hc3NlbWJs ZXIuaD4KPj4gKwo+PiArLmFyY2ggYXJtdjgtYStzdmUKPj4gKy5maWxlICJhZGxlcjMyX3N2ZS5T Igo+IAo+IERyb3AgdGhlIC5maWxlCj4gCj4gUGxlYXNlIGluZGVudCB0aGUgcmVzdCAxIHRhYgo+ IAo+PiArLnRleHQKPj4gKy5hbGlnbiA2Cj4+ICsKPj4gKy8vVGhlIHN1cHBvcnRlZCBzdmUgdmVj dG9yIGxlbmd0aCByYW5nZSBpcyAxMjh+MjA0OCBieSB0aGlzIEFkbGVyX3NlcXVlbmNlCj4+ICsu QWRsZXJfc2VxdWVuY2U6Cj4gCj4gVGhpcyBzaG91bGQgYmUgaW4gLnJvZGF0YS4gQWxzbywgaWYg eW91IHVzZSAuIG9yIEwgcHJlZml4ZXMsIHVzZSAuTAo+IGJlY2F1c2UgdGhhdCBpcyB3aGF0IHlv dSBuZWVkIHRvIG1ha2UgdGhlc2UgbG9jYWwgc3ltYm9scy4KPiAKPiAKPj4gKyAgICAgICAuc2hv cnQgMjU2LDI1NSwyNTQsMjUzLDI1MiwyNTEsMjUwLDI0OSwyNDgsMjQ3LDI0NiwyNDUsMjQ0LDI0 MywyNDIsMjQxCj4+ICsgICAgICAgLnNob3J0IDI0MCwyMzksMjM4LDIzNywyMzYsMjM1LDIzNCwy MzMsMjMyLDIzMSwyMzAsMjI5LDIyOCwyMjcsMjI2LDIyNQo+PiArICAgICAgIC5zaG9ydCAyMjQs MjIzLDIyMiwyMjEsMjIwLDIxOSwyMTgsMjE3LDIxNiwyMTUsMjE0LDIxMywyMTIsMjExLDIxMCwy MDkKPj4gKyAgICAgICAuc2hvcnQgMjA4LDIwNywyMDYsMjA1LDIwNCwyMDMsMjAyLDIwMSwyMDAs MTk5LDE5OCwxOTcsMTk2LDE5NSwxOTQsMTkzCj4+ICsgICAgICAgLnNob3J0IDE5MiwxOTEsMTkw LDE4OSwxODgsMTg3LDE4NiwxODUsMTg0LDE4MywxODIsMTgxLDE4MCwxNzksMTc4LDE3Nwo+PiAr ICAgICAgIC5zaG9ydCAxNzYsMTc1LDE3NCwxNzMsMTcyLDE3MSwxNzAsMTY5LDE2OCwxNjcsMTY2 LDE2NSwxNjQsMTYzLDE2MiwxNjEKPj4gKyAgICAgICAuc2hvcnQgMTYwLDE1OSwxNTgsMTU3LDE1 NiwxNTUsMTU0LDE1MywxNTIsMTUxLDE1MCwxNDksMTQ4LDE0NywxNDYsMTQ1Cj4+ICsgICAgICAg LnNob3J0IDE0NCwxNDMsMTQyLDE0MSwxNDAsMTM5LDEzOCwxMzcsMTM2LDEzNSwxMzQsMTMzLDEz MiwxMzEsMTMwLDEyOQo+PiArICAgICAgIC5zaG9ydCAxMjgsMTI3LDEyNiwxMjUsMTI0LDEyMywx MjIsMTIxLDEyMCwxMTksMTE4LDExNywxMTYsMTE1LDExNCwxMTMKPj4gKyAgICAgICAuc2hvcnQg MTEyLDExMSwxMTAsMTA5LDEwOCwxMDcsMTA2LDEwNSwxMDQsMTAzLDEwMiwxMDEsMTAwLCA5OSwg OTgsIDk3Cj4+ICsgICAgICAgLnNob3J0ICA5NiwgOTUsIDk0LCA5MywgOTIsIDkxLCA5MCwgODks IDg4LCA4NywgODYsIDg1LCA4NCwgODMsIDgyLCA4MQo+PiArICAgICAgIC5zaG9ydCAgODAsIDc5 LCA3OCwgNzcsIDc2LCA3NSwgNzQsIDczLCA3MiwgNzEsIDcwLCA2OSwgNjgsIDY3LCA2NiwgNjUK Pj4gKyAgICAgICAuc2hvcnQgIDY0LCA2MywgNjIsIDYxLCA2MCwgNTksIDU4LCA1NywgNTYsIDU1 LCA1NCwgNTMsIDUyLCA1MSwgNTAsIDQ5Cj4+ICsgICAgICAgLnNob3J0ICA0OCwgNDcsIDQ2LCA0 NSwgNDQsIDQzLCA0MiwgNDEsIDQwLCAzOSwgMzgsIDM3LCAzNiwgMzUsIDM0LCAzMwo+PiArICAg ICAgIC5zaG9ydCAgMzIsIDMxLCAzMCwgMjksIDI4LCAyNywgMjYsIDI1LCAyNCwgMjMsIDIyLCAy MSwgMjAsIDE5LCAxOCwgMTcKPj4gKyAgICAgICAuc2hvcnQgIDE2LCAxNSwgMTQsIDEzLCAxMiwg MTEsIDEwLCAgOSwgIDgsICA3LCAgNiwgIDUsICA0LCAgMywgIDIsICAxCj4+ICsKPj4gK1NZTV9G VU5DX1NUQVJUKGFkbGVyMzJfc3ZlKQo+PiArICAgICAgIGFuZCB3MTAsIHcwLCAjMHhmZmZmCj4+ ICsgICAgICAgbHNyIHcxMSwgdzAsICMxNgo+PiArCj4gCj4gUGxlYXNlIHB1dCB0aGUgaW5zdHJ1 Y3Rpb24gbW5lbW9uaWNzIGluIGRpZmZlcmVudCBjb2x1bW5zIHVzaW5nIHRhYnMKPiAKPj4gKyAg ICAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgc3ZlIHZlY3RvciB0byB4Ni4KPj4gKyAgICAg ICBtb3YgeDYsICMwCj4+ICsgICAgICAgbW92IHg5LCAjMjU2Cj4+ICsgICAgICAgYWRkdmwgeDYs IHg2LCAjMQo+PiArICAgICAgIGFkciB4MTIsIC5BZGxlcl9zZXF1ZW5jZQo+PiArICAgICAgIHB0 cnVlIHAxLmgKPj4gKwo+PiArICAgICAgIC8vIEdldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb2Yg dGhlIHJlcXVpcmVkIHNlcXVlbmNlLgo+PiArICAgICAgIHN1YiB4OSwgeDksIHg2Cj4+ICsgICAg ICAgbGQxaCB6MjQuaCwgcDEveiwgW3gxMiwgeDksIGxzbCAjMV0gLy8gdGFwczEgdG8gejI0LmgK Pj4gKyAgICAgICBpbmNoIHg5Cj4+ICsgICAgICAgbGQxaCB6MjUuaCwgcDEveiwgW3gxMiwgeDks IGxzbCAjMV0gLy8gdGFwczIgdG8gejI1LmgKPj4gKyAgICAgICBtb3YgeDksICMwCj4+ICsgICAg ICAgLy8gQSBsaXR0bGUgb2YgYnl0ZSwganVtcGVyIHRvIG5vcm1hbCBwcm9jCj4gCj4gV2hhdCBk b2VzIHRoaXMgY29tbWVudCBtZWFuPwo+IAo+PiArICAgICAgIG1vdiB4MTQsICMzCj4+ICsgICAg ICAgbXVsIHgxNSwgeDE0LCB4Ngo+PiArICAgICAgIGNtcCB4MiwgeDE1Cj4+ICsgICAgICAgYi5s ZSBMbm9ybWFsX3Byb2MKPj4gKwo+PiArICAgICAgIHB0cnVlIHAwLmIKPj4gKy5hbGlnbiA2Cj4g Cj4gSWRlbnQuCj4gCj4+ICtMQmlnX2xvb3A6Cj4gCj4gVXNlIC5MIHByZWZpeAo+IAo+PiArICAg ICAgIC8vIHggaXMgU1ZFIHZlY3RvciBsZW5ndGggKGJ5dGUpLgo+PiArICAgICAgIC8vIEJuID0g Qm4tMSArIEFuLTEgKiB4ICsgeCAqIEQxICsgKHgtMSkgKiBEMiArIC4uLiArIDEgKiBEeAo+PiAr ICAgICAgIC8vIEFuID0gQW4tMSArIEQxICsgRDIgKyBEMyArIC4uLiArIER4Cj4+ICsKPj4gKyAg ICAgICAubWFjcm8gQURMRVJfQkxPQ0tfWAo+IAo+IFBsZWFzZSB1c2UgbG93ZXIgY2FzZSBmb3Ig YXNtIG1hY3JvcywgdG8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIENQUCBtYWNyb3MKPiBBbHNvLCBp bmRlbnQgdGhlIG5hbWUsIGFuZCBtb3ZlIHRoZSBtYWNybyBvdXQgb2YgdGhlIGZ1bmN0aW9uIGZv ciBsZWdpYmlsaXR5Lgo+IAo+PiArICAgICAgIGxkMWIgejAuYiwgcDAveiwgW3gxLCB4OV0KPj4g KyAgICAgICBpbmNiIHg5Cj4+ICsgICAgICAgdWFkZHYgZDIwLCBwMCwgejAuYiAvLyBEMSArIEQy ICsgLi4uICsgRHgKPj4gKyAgICAgICBtb3YgeDEyLCB2MjAuMmRbMF0KPj4gKyAgICAgICBtYWRk IHgxMSwgeDEwLCB4NiwgeDExIC8vIEJuID0gQW4tMSAqIHggKyBCbi0xCj4+ICsKPj4gKyAgICAg ICB1dW5wa2xvIHoyNi5oLCB6MC5iCj4+ICsgICAgICAgdXVucGtoaSB6MjcuaCwgejAuYgo+PiAr ICAgICAgIG11bCB6MjYuaCwgcDEvbSwgejI2LmgsIHoyNC5oIC8vIHggKiBEMSArICh4LTEpICog RDIgKyAuLi4gKyAoeC8yICsgMSkgKiBEKHgvMikKPj4gKyAgICAgICBtdWwgejI3LmgsIHAxL20s IHoyNy5oLCB6MjUuaCAvLyAoeC8yKSAqIEQoeC8yICsgMSkgKyAoeC8yIC0gMSkgKiBEKHgvMiAr IDIpICsgLi4uICsgMSAqIER4Cj4+ICsKPj4gKyAgICAgICB1YWRkdiBkMjEsIHAxLCB6MjYuaAo+ PiArICAgICAgIHVhZGR2IGQyMiwgcDEsIHoyNy5oCj4+ICsgICAgICAgbW92IHgxMywgdjIxLjJk WzBdCj4+ICsgICAgICAgbW92IHgxNCwgdjIyLjJkWzBdCj4+ICsKPj4gKyAgICAgICBhZGQgeDEx LCB4MTMsIHgxMQo+PiArICAgICAgIGFkZCB4MTEsIHgxNCwgeDExICAgICAgICAgLy8gQm4gKz0g eCAqIEQxICsgKHgtMSkgKiBEMiArIC4uLiArIDEgKiBEeAo+PiArICAgICAgIGFkZCB4MTAsIHgx MiwgeDEwICAgICAgICAgLy8gQW4gKz0gRDEgKyBEMiArIC4uLiArIER4Cj4+ICsgICAgICAgLmVu ZG0KPj4gKyAgICAgICBBRExFUl9CTE9DS19YCj4+ICsgICAgICAgQURMRVJfQkxPQ0tfWAo+PiAr ICAgICAgIEFETEVSX0JMT0NLX1gKPj4gKyAgICAgICAvLyBjYWxjID0gcmVnMCAlIDY1NTIxCj4+ ICsgICAgICAgLm1hY3JvIG1vZDY1NTIxLCByZWcwLCByZWcxLCByZWcyCj4+ICsgICAgICAgbW92 IHdccmVnMSwgIzB4ODA3MQo+PiArICAgICAgIG1vdiB3XHJlZzIsICMweGZmZjEKPj4gKyAgICAg ICBtb3ZrIHdccmVnMSwgIzB4ODAwNywgbHNsICMxNgo+PiArICAgICAgIHVtdWxsIHhccmVnMSwg d1xyZWcwLCB3XHJlZzEKPj4gKyAgICAgICBsc3IgeFxyZWcxLCB4XHJlZzEsICM0Nwo+PiArICAg ICAgIG1zdWIgd1xyZWcwLCB3XHJlZzEsIHdccmVnMiwgd1xyZWcwCj4+ICsgICAgICAgLmVuZG0K Pj4gKwo+IAo+IFNhbWUgYXMgYWJvdmUKPiAKPj4gKyAgICAgICBtb2Q2NTUyMSAxMCwgMTQsIDEy Cj4+ICsgICAgICAgbW9kNjU1MjEgMTEsIDE0LCAxMgo+PiArCj4+ICsgICAgICAgc3ViIHgyLCB4 MiwgeDE1Cj4+ICsgICAgICAgY21wIHgyLCB4MTUKPj4gKyAgICAgICBiLmdlIExCaWdfbG9vcAo+ PiArCj4+ICsuYWxpZ24gNgo+IAo+IEluZGVudAo+IAo+PiArTG5vcm1hbF9wcm9jOgo+IAo+IC5M Cj4gCj4gCj4+ICsgICAgICAgY21wIHgyLCAjMAo+PiArICAgICAgIGIuZXEgTHJldAo+PiArCj4+ ICsgICAgICAgbGRyYiB3MTIsIFt4MSwgeDldCj4+ICsgICAgICAgYWRkIHg5LCB4OSwgIzEKPj4g KyAgICAgICBhZGQgeDEwLCB4MTIsIHgxMAo+PiArICAgICAgIGFkZCB4MTEsIHgxMCwgeDExCj4+ ICsgICAgICAgc3ViIHgyLCB4MiwgIzEKPj4gKyAgICAgICBiIExub3JtYWxfcHJvYwo+PiArCj4+ ICtMcmV0Ogo+PiArICAgICAgIG1vZDY1NTIxIDEwLCAxNCwgMTIKPj4gKyAgICAgICBtb2Q2NTUy MSAxMSwgMTQsIDEyCj4+ICsgICAgICAgbHNsIHgxMSwgeDExLCAjMTYKPj4gKyAgICAgICBvcnIg eDAsIHgxMCwgeDExCj4+ICsgICAgICAgcmV0Cj4+ICtTWU1fRlVOQ19FTkQoYWRsZXIzMl9zdmUp Cj4+IGRpZmYgLS1naXQgYS9jcnlwdG8vdGVzdG1nci5jIGIvY3J5cHRvL3Rlc3RtZ3IuYwo+PiBp bmRleCBhNjRhNjM5Li41OGI4MDIwIDEwMDY0NAo+PiAtLS0gYS9jcnlwdG8vdGVzdG1nci5jCj4+ ICsrKyBiL2NyeXB0by90ZXN0bWdyLmMKPj4gQEAgLTQxNzQsNiArNDE3NCwxMyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGFsZ190ZXN0X2Rlc2MgYWxnX3Rlc3RfZGVzY3NbXSA9IHsKPj4gICAgICAg ICAgICAgICAgIC5zdWl0ZSA9IHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgLmNpcGhlciA9 IF9fVkVDUyhhZGlhbnR1bV94Y2hhY2hhMjBfYWVzX3R2X3RlbXBsYXRlKQo+PiAgICAgICAgICAg ICAgICAgfSwKPj4gKyAgICAgICB9LCB7Cj4+ICsgICAgICAgICAgICAgICAuYWxnID0gImFkbGVy MzIiLAo+PiArICAgICAgICAgICAgICAgLnRlc3QgPSBhbGdfdGVzdF9oYXNoLAo+PiArICAgICAg ICAgICAgICAgLmZpcHNfYWxsb3dlZCA9IDEsCj4+ICsgICAgICAgICAgICAgICAuc3VpdGUgPSB7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIC5oYXNoID0gX19WRUNTKGFkbGVyMzJfdHZfdGVt cGxhdGUpCj4+ICsgICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgfSwgewo+PiAgICAgICAgICAg ICAgICAgLmFsZyA9ICJhZWdpczEyOCIsCj4+ICAgICAgICAgICAgICAgICAudGVzdCA9IGFsZ190 ZXN0X2FlYWQsCj4+IEBAIC01NjQwLDcgKzU2NDcsNiBAQCBpbnQgYWxnX3Rlc3QoY29uc3QgY2hh ciAqZHJpdmVyLCBjb25zdCBjaGFyICphbGcsIHUzMiB0eXBlLCB1MzIgbWFzaykKPj4gICAgICAg ICB9Cj4+Cj4+ICAgICAgICAgRE9fT05DRSh0ZXN0bWdyX29uZXRpbWVfaW5pdCk7Cj4+IC0KPj4g ICAgICAgICBpZiAoKHR5cGUgJiBDUllQVE9fQUxHX1RZUEVfTUFTSykgPT0gQ1JZUFRPX0FMR19U WVBFX0NJUEhFUikgewo+PiAgICAgICAgICAgICAgICAgY2hhciBuYWxnW0NSWVBUT19NQVhfQUxH X05BTUVdOwo+Pgo+PiBkaWZmIC0tZ2l0IGEvY3J5cHRvL3Rlc3RtZ3IuaCBiL2NyeXB0by90ZXN0 bWdyLmgKPj4gaW5kZXggOGM4MzgxMS4uNTIzMzk2MCAxMDA2NDQKPj4gLS0tIGEvY3J5cHRvL3Rl c3RtZ3IuaAo+PiArKysgYi9jcnlwdG8vdGVzdG1nci5oCj4+IEBAIC0zNjc2LDYgKzM2NzYsMTkg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBoYXNoX3Rlc3R2ZWMgY3JjdDEwZGlmX3R2X3RlbXBsYXRl W10gPSB7Cj4+ICAgICAgICAgfQo+PiAgfTsKPj4KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGFz aF90ZXN0dmVjIGFkbGVyMzJfdHZfdGVtcGxhdGVbXSA9IHsKPj4gKyAgICAgICB7Cj4+ICsgICAg ICAgICAgICAgICAucGxhaW50ZXh0ICAgICAgPSAiYWJjZGUiLAo+PiArICAgICAgICAgICAgICAg LnBzaXplICAgICAgICAgID0gNSwKPj4gKyAgICAgICAgICAgICAgIC5kaWdlc3QgICAgICAgICA9 ICJceGYwXHgwMVx4YzhceDA1IiwKPj4gKyAgICAgICB9LAo+PiArICAgICAgIHsKPj4gKyAgICAg ICAgICAgICAgIC5wbGFpbnRleHQgICAgICA9ICIwMTIzNDU2Nzg5MTAxMTEyMTMxNDE1IiwKPj4g KyAgICAgICAgICAgICAgIC5wc2l6ZSAgICAgICAgICA9IDIyLAo+PiArICAgICAgICAgICAgICAg LmRpZ2VzdCAgICAgICAgID0gIlx4NjNceDA0XHhhOFx4MzIiLAo+PiArICAgICAgIH0sCj4+ICt9 Owo+PiArCj4+ICAvKgo+PiAgICogU3RyZWVib2cgdGVzdCB2ZWN0b3JzIGZyb20gUkZDIDY5ODYg YW5kIEdPU1QgUiAzNC4xMS0yMDEyCj4+ICAgKi8KPj4gLS0KPj4gMi4xOS4xCj4+Cj4gLgo+IAoK VGhhbmsgeW91IGZvciB5b3VyIHN1Z2dlc3Rpb25zLCBJIHdpbGwgbW9kaWZ5IHRoZW0gb25lIGJ5 IG9uZSBpbiBteSBjb2RlLgo6LSkKCi0tIApCZXN0IHJlZ2FyZHMsCkxpIFFpYW5nCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==