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=-5.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 90B59C388F7 for ; Tue, 10 Nov 2020 13:21:43 +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 DB8CD206D8 for ; Tue, 10 Nov 2020 13:21:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rg8+wrpV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB8CD206D8 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=mByLdNgsiI4tcgpxZAMhyOkci5s5eegVh9cMXX6c5Wc=; b=rg8+wrpVpjJoYbhgASBy+e1JV D51Qwa1aCncQ7lB/iAZQivGX9GptRETTSRt5GJyKjxkyJia2/VVJgii2vBSY4p6050SMuo2ZNGkGo Fjg3JwdbXdyZBt3RM2F4Ieorgi7Yh4qLheCdR8w8vqJUI+B2O79KvgicoJ+r0EYvBYr+Q48R8xncd 99X/WXtesquabEZxSSEVTpwhrq1dv6/rQ7S/DWshbcJ/KdWOioLgttvikhCGkiZeQXrfW4nTqoEDv DmWqYGd5HEMm89kD+tSNkAsI6KVSZk53T5z8vmG+Lce7DsY7cCKGZaeFM8y19iQ/fYqz594X8y5VJ 6MaJTIImw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kcTaG-0005il-MT; Tue, 10 Nov 2020 13:21:16 +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 1kcTaD-0005gH-1y for linux-arm-kernel@lists.infradead.org; Tue, 10 Nov 2020 13:21:15 +0000 Received: from DGGEMS401-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4CVpQW2V7rzhZ1g; Tue, 10 Nov 2020 21:20:51 +0800 (CST) Received: from [10.110.54.32] (10.110.54.32) by DGGEMS401-HUB.china.huawei.com (10.3.19.201) with Microsoft SMTP Server id 14.3.487.0; Tue, 10 Nov 2020 21:20:46 +0800 Subject: Re: [PATCH 0/1] arm64: Accelerate Adler32 using arm64 SVE instructions. To: Dave Martin References: <20201103121506.1533-1-liqiang64@huawei.com> <20201105165301.GH6882@arm.com> <20201110104629.GJ6882@arm.com> From: Li Qiang Message-ID: <89a9bdcc-b96e-2f2d-6c52-ca44e0e3472c@huawei.com> Date: Tue, 10 Nov 2020 21:20:46 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <20201110104629.GJ6882@arm.com> 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-20201110_082113_611368_7382090E X-CRM114-Status: GOOD ( 51.52 ) 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@st.com, catalin.marinas@arm.com, gaoguijin@huawei.com, colordev.jiang@huawei.com, luchunhua@huawei.com, linux-crypto@vger.kernel.org, mcoquelin.stm32@gmail.com, liliang889@huawei.com, will@kernel.org, davem@davemloft.net, linux-arm-kernel@lists.infradead.org, herbert@gondor.apana.org.au 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 CgrlnKggMjAyMC8xMS8xMCAxODo0NiwgRGF2ZSBNYXJ0aW4g5YaZ6YGTOgo+IE9uIE1vbiwgTm92 IDA5LCAyMDIwIGF0IDExOjQzOjM1QU0gKzA4MDAsIExpIFFpYW5nIHdyb3RlOgo+PiBIaSBEYXZl LAo+Pgo+PiBJIGNhcmVmdWxseSByZWFkIHRoZSBpZGVhcyB5b3UgcHJvdmlkZWQgYW5kIHRoZSBz YW1wbGUgY29kZSB5b3UgZ2F2ZSBtZS46KQo+Pgo+PiDlnKggMjAyMC8xMS82IDA6NTMsIERhdmUg TWFydGluIOWGmemBkzoKPj4+IE9uIFR1ZSwgTm92IDAzLCAyMDIwIGF0IDA4OjE1OjA1UE0gKzA4 MDAsIGwwMDM3NDMzNCB3cm90ZToKPj4+PiBGcm9tOiBsaXFpYW5nIDxsaXFpYW5nNjRAaHVhd2Vp LmNvbT4KPj4+Pgo+Pj4+IERlYXIgYWxsLAo+Pj4+Cj4+Pj4gVGhhbmsgeW91IGZvciB0YWtpbmcg dGhlIHByZWNpb3VzIHRpbWUgdG8gcmVhZCB0aGlzIGVtYWlsIQo+Pj4+Cj4+Pj4gTGV0IG1lIGlu dHJvZHVjZSB0aGUgaW1wbGVtZW50YXRpb24gaWRlYXMgb2YgbXkgY29kZSBoZXJlLgo+Pj4+Cj4+ Pj4gSW4gdGhlIHByb2Nlc3Mgb2YgdXNpbmcgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgbGlieiwg SSBmb3VuZCB0aGF0IHRoZSBhZGxlcjMyCj4+Pj4gY2hlY2tzdW0gYWx3YXlzIG9jY3VwaWVzIGEg aGlnaGVyIGhvdCBzcG90LCBzbyBJIHBhaWQgYXR0ZW50aW9uIHRvIHRoaXMgYWxnb3JpdGhtLgo+ Pj4+IEFmdGVyIGdldHRpbmcgaW4gdG91Y2ggd2l0aCB0aGUgU1ZFIGluc3RydWN0aW9uIHNldCBv ZiBhcm12OCwgSSByZWFsaXplZCB0aGF0Cj4+Pj4gU1ZFIGNhbiBlZmZlY3RpdmVseSBhY2NlbGVy YXRlIGFkbGVyMzIsIHNvIEkgbWFkZSBzb21lIGF0dGVtcHRzIGFuZCBnb3QgY29ycmVjdAo+Pj4+ IGFuZCBiZXR0ZXIgcGVyZm9ybWFuY2UgcmVzdWx0cy4gSSB2ZXJ5IG11Y2ggaG9wZSB0aGF0IHRo aXMgbW9kaWZpY2F0aW9uIGNhbiBiZQo+Pj4+IGFwcGxpZWQgdG8gdGhlIGtlcm5lbC4KPj4+Pgo+ Pj4+IEJlbG93IGlzIG15IGFuYWx5c2lzIHByb2Nlc3M6Cj4+Pj4KPj4+PiBBZGxlcjMyIGFsZ29y aXRobQo+Pj4+ID09PT09PT09PT09PT09PT09Cj4+Pj4KPj4+PiBSZWZlcmVuY2U6IGh0dHBzOi8v ZW4ud2lraXBlZGlhLm9yZy93aWtpL0FkbGVyLTMyCj4+Pj4KPj4+PiBBc3N1bWUgdGhhdCB0aGUg YnVmIG9mIHRoZSBBZGxlcjMyIGNoZWNrc3VtIHRvIGJlIGNhbGN1bGF0ZWQgaXMgRCBhbmQgdGhl IGxlbmd0aCBpcyBuOgo+Pj4+Cj4+Pj4gICAgICAgICBBID0gMSArIEQxICsgRDIgKyAuLi4gKyBE biAobW9kIDY1NTIxKQo+Pj4+Cj4+Pj4gICAgICAgICBCID0gKDEgKyBEMSkgKyAoMSArIEQxICsg RDIpICsgLi4uICsgKDEgKyBEMSArIEQyICsgLi4uICsgRG4pIChtb2QgNjU1MjEpCj4+Pj4gICAg ICAgICAgID0gbsOXRDEgKyAobuKIkjEpw5dEMiArIChu4oiSMinDl0QzICsgLi4uICsgRG4gKyBu IChtb2QgNjU1MjEpCj4+Pj4KPj4+PiAgICAgICAgIEFkbGVyLTMyKEQpID0gQiDDlyA2NTUzNiAr IEEKPj4+Pgo+Pj4+IEluIEMsIGFuIGluZWZmaWNpZW50IGJ1dCBzdHJhaWdodGZvcndhcmQgaW1w bGVtZW50YXRpb24gaXM6Cj4+Pj4KPj4+PiAgICAgICAgIGNvbnN0IHVpbnQzMl90IE1PRF9BRExF UiA9IDY1NTIxOwo+Pj4+Cj4+Pj4gICAgICAgICB1aW50MzJfdCBhZGxlcjMyKHVuc2lnbmVkIGNo YXIgKmRhdGEsIHNpemVfdCBsZW4pCj4+Pj4gICAgICAgICB7Cj4+Pj4gICAgICAgICAgICAgICAg IHVpbnQzMl90IGEgPSAxLCBiID0gMDsKPj4+PiAgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4 Owo+Pj4+Cj4+Pj4gICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgZWFjaCBieXRlIG9mIHRoZSBk YXRhIGluIG9yZGVyCj4+Pj4gICAgICAgICAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8 IGxlbjsgKytpbmRleCkKPj4+PiAgICAgICAgICAgICAgICAgewo+Pj4+ICAgICAgICAgICAgICAg ICAgICAgICAgIGEgPSAoYSArIGRhdGFbaW5kZXhdKSAlIE1PRF9BRExFUjsKPj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICBiID0gKGIgKyBhKSAlIE1PRF9BRExFUjsKPj4+PiAgICAgICAgICAg ICAgICAgfQo+Pj4+Cj4+Pj4gICAgICAgICAgICAgICAgIHJldHVybiAoYiA8PCAxNikgfCBhOwo+ Pj4+ICAgICAgICAgfQo+Pj4+Cj4+Pj4gU1ZFIHZlY3RvciBtZXRob2QKPj4+PiA9PT09PT09PT09 PT09PT09PQo+Pj4+Cj4+Pj4gU3RlcCAxLiBEZXRlcm1pbmUgdGhlIGJsb2NrIHNpemU6Cj4+Pj4g ICAgICAgICBVc2UgYWRkdmwgaW5zdHJ1Y3Rpb24gdG8gZ2V0IFNWRSBiaXQgd2lkdGguCj4+Pj4g ICAgICAgICBBc3N1bWluZyB0aGUgU1ZFIGJpdCB3aWR0aCBpcyB4IGhlcmUuCj4+Pj4KPj4+PiBT dGVwIDIuIFN0YXJ0IHRvIGNhbGN1bGF0ZSB0aGUgZmlyc3QgYmxvY2s6Cj4+Pj4gICAgICAgICBU aGUgY2FsY3VsYXRpb24gZm9ybXVsYSBpczoKPj4+PiAgICAgICAgICAgICAgICAgQTEgPSAxICsg RDEgKyBEMiArIC4uLiArIER4IChtb2QgNjU1MjEpCj4+Pj4gICAgICAgICAgICAgICAgIEIxID0g eCpEMSArICh4LTEpKkQyICsgLi4uICsgRHggKyB4IChtb2QgNjU1MjEpCj4+Pj4KPj4+PiBTdGVw IDMuIENhbGN1bGF0ZSB0aGUgZm9sbG93IGJsb2NrOgo+Pj4+ICAgICAgICAgVGhlIGNhbGN1bGF0 aW9uIGZvcm11bGEgb2YgQTIgaXMgdmVyeSBzaW1wbGUsIGp1c3QgYWRkIHVwOgo+Pj4+ICAgICAg ICAgICAgICAgICBBMiA9IEExICsgRHgrMSArIER4KzIgKyAuLi4gKyBEMnggKG1vZCA2NTUyMSkK Pj4+Pgo+Pj4+ICAgICAgICAgVGhlIGNhbGN1bGF0aW9uIGZvcm11bGEgb2YgQjIgaXMgbW9yZSBj b21wbGljYXRlZCwgYmVjYXVzZQo+Pj4+ICAgICAgICAgdGhlIHJlc3VsdCBpcyByZWxhdGVkIHRv IHRoZSBsZW5ndGggb2YgYnVmLiBXaGVuIGNhbGN1bGF0aW5nCj4+Pj4gICAgICAgICB0aGUgQjEg YmxvY2ssIGl0IGlzIGFjdHVhbGx5IGFzc3VtZWQgdGhhdCB0aGUgbGVuZ3RoIGlzIHRoZQo+Pj4+ ICAgICAgICAgYmxvY2sgbGVuZ3RoIHguIE5vdyB3aGVuIGNhbGN1bGF0aW5nIEIyLCB0aGUgbGVu Z3RoIGlzIGV4cGFuZGVkCj4+Pj4gICAgICAgICB0byAyeCwgc28gQjIgYmVjb21lczoKPj4+PiAg ICAgICAgICAgICAgICAgQjIgPSAyeCpEMSArICgyeC0xKSpEMiAgICAgICAgICAgICArIC4uLiAr ICh4KzEpKkR4ICsgeCpEKHgrMSkgKyAuLi4gKyBEMnggKyAyeAo+Pj4+ICAgICAgICAgICAgICAg ICAgICA9IHgqRDEgKyB4KkQxICsgeCpEMiArICh4LTEpKkQyICsgLi4uICsgeCpEeCArIER4ICsg eCoxICsgeCArIFt4KkQoeCsxKSArICh4LTEpKkQoeCsyKSArIC4uLiArIEQyeF0KPj4+PiAgICAg ICAgICAgICAgICAgICAgICBeXl5eICAgfn5+fiAgIF5eXl4gICB+fn5+fn5+fiAgICAgICAgIF5e Xl4gICB+fiAgIF5eXiAgIH4gICArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4+Pj4gICAgICAgICBUaHJvdWdoIHRoZSBhYm92ZSBwb2x5bm9taWFsIHRyYW5zZm9ybWF0aW9u Ogo+Pj4+ICAgICAgICAgICAgICAgICBTeW1ib2wgIl4iIHJlcHJlc2VudHMgdGhlIDx4ICogQTE+ Owo+Pj4+ICAgICAgICAgICAgICAgICBTeW1ib2wgIn4iIHJlcHJlc2VudHMgdGhlIDxCMT47Cj4+ Pj4gICAgICAgICAgICAgICAgIFN5bWJvbCAiKyIgcmVwcmVzZW50cyB0aGUgbmV4dCBibG9jay4K Pj4+Pgo+Pj4+ICAgICAgICAgU28gd2UgY2FuIGdldCB0aGUgbWV0aG9kIG9mIGNhbGN1bGF0aW5n IHRoZSBuZXh0IGJsb2NrIGZyb20KPj4+PiAgICAgICAgIHRoZSBwcmV2aW91cyBibG9jayhBc3N1 bWUgdGhhdCB0aGUgZmlyc3QgYnl0ZSBudW1iZXIgb2YgdGhlCj4+Pj4gICAgICAgICBuZXcgYmxv Y2sgc3RhcnRzIGZyb20gMSk6Cj4+Pj4gICAgICAgICAgICAgICAgIEFuKzEgPSBBbiArIEQxICsg RDIgKyAuLi4gKyBEeCAobW9kIDY1NTIxKQo+Pj4+ICAgICAgICAgICAgICAgICBCbisxID0gQm4g KyB4KkFuICsgeCpEMSArICh4LTEpKkQyICsgLi4uICsgRHggKG1vZCA2NTUyMSkKPj4+Cj4+PiBQ dXR0aW5nIGFzaWRlIHBlb3BsZSdzIGNvbmNlcm5zIGZvciB0aGUgbW9tZW50LCBJIHRoaW5rIHRo aXMgbWF5IGJlCj4+PiBmb3JtdWxhdGVkIGluIGEgc2xpZ2h0bHkgbW9yZSBjb252ZW5pZW50IHdh eToKPj4+Cj4+PiBJZgo+Pj4gCVgwLCBYMSwgLi4uIGFyZSB0aGUgZGF0YSBieXRlcwo+Pj4gCUFu IGlzIDEgKyBTdW0gW2k9MCAuLiBuLTFdIFhpCj4+PiAJQm4gaXMgbiArIFN1bSBbaT0wIC4uIG4t MV0gKG4taSlYaQo+Pj4gCQk9IFN1bSBbaT0xIC4uIG5dIEFpCj4+Cj4+IFllcywgdGhpcyBjYW4g YmUgY2FsY3VsYXRlZCBmcm9tIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uLgo+Pgo+Pj4KPj4+IChp LmUuLCBBbiwgQm4gYXJlIHRoZSBhY2N1bXVsYXRpb25zIGZvciB0aGUgZmlyc3QgbiBieXRlcyBo ZXJlLCBub3QgdGhlCj4+PiBmaXJzdCBuIGJsb2NrcykKPj4+Cj4+PiB0aGVuCj4+Pgo+Pj4gCUFb bit2XSAtIEFuID0gU3VtW2k9biAuLiBuK3YtMV0gWGkKPj4+Cj4+PiAJQltuK3ZdIC0gQm4gPSB2 ICsgKFN1bSBbaT0wIC4uIG4rdi0xXSAobit2LWkpIFhpKQo+Pj4gCQkJLSBTdW0gW2k9MCAuLiBu LTFdIChuLWkpWGkKPj4+Cj4+PiAJCT0gdiArIChTdW0gW2k9biAuLiBuK3YtMV0gKG4rdi1pKSBY aSkKPj4+IAkJCSsgKFN1bSBbaT0wIC4uIG4tMV0gKG4rdi1pKSBYaSkKPj4+IAkJCS0gU3VtIFtp PTAgLi4gbi0xXSAobi1pKVhpCj4+Pgo+Pj4gCQk9IHYgKyAoU3VtIFtpPW4gLi4gbit2LTFdIChu K3YtaSkgWGkpCj4+PiAJCQkrIFN1bSBbaT0wIC4uIG4tMV0gKChuK3YtaSkgLSAobi1pKSkgWGkK Pj4+Cj4+PiAJCT0gdiArIChTdW0gW2k9biAuLiBuK3YtMV0gKG4rdi1pKSBYaSkKPj4+IAkJCSsg dlN1bSBbaT0wIC4uIG4tMV0gWGkKPj4+Cj4+PiAJCT0gdiArIHYoQW4gLSAxKSArIFN1bSBbaT1u IC4uIG4rdi0xXSAobit2LWkpIFhpCj4+Pgo+Pj4gCQk9IHZBbiArIFN1bSBbaT1uIC4uIG4rdi0x XSAobit2LWkpIFhpCj4+Pgo+Pj4gCQk9IHZBbiArIHZTdW0gW2k9biAuLiBuK3YtMV0gWGkKPj4+ IAkJCSsgU3VtIFtpPW4gLi4gbit2LTFdIChuLWkpIFhpCj4+Pgo+Pj4gCQk9IHZBbiArIHZTdW0g W2k9biAuLiBuK3YtMV0gWGkKPj4+IAkJCSsgU3VtIFtpPW4gLi4gbit2LTFdIChuLWkpIFhpCj4+ Pgo+Pj4gCQk9IHZBW24rdl0gKyBTdW0gW2k9biAuLiBuK3YtMV0gKG4taSkgWGkKPj4+Cj4+PiBM ZXQgaiA9IGkgLSBuOyB0aGVuOgo+Pj4KPj4+IAlCW24rdl0gLSBCbiA9IHZBW24rdl0gLSBTdW0g W2o9MCAuLiB2LTFdIGogWFtqK25dCj4+Pgo+Pj4gV2hpY2ggZ2l2ZXMgdXMgYSBtdWx0aXBsaWVy IGogdGhhdCBpbmNyZWFzZXMgd2l0aCB0aGUgWFtdIGluZGV4Lgo+Pgo+PiBNeSBvcmlnaW5hbCBh cHByb2FjaCBpcyB0byBtdWx0aXBseSB0aGUgYnl0ZSBzZXF1ZW5jZSB3aXRoIHRoZSAqKmRlY3Jl YXNpbmcqKgo+PiBzZXF1ZW5jZS4gSSB0aGluayB0aGUgaW5jcmVhc2luZyBzZXF1ZW5jZSBoZXJl IGlzIG1vcmUgZnJpZW5kbHkgdG8gdGhlIHRyYWlsaW5nCj4+IGJ5dGVzIG9mIHRoZSBsb29wLjot KQo+Pgo+Pj4KPj4+Cj4+PiBJIHRoaW5rIHRoaXMgZ2l2ZXMgYSBjb3JlIGxvb3AgYWxvbmcgdGhl IGZvbGxvd2luZyBsaW5lcy4gIEkgZG9uJ3Qga25vdwo+Pj4gd2hldGhlciB0aGlzIGlzIGNvcnJl Y3QsIG9yIHdoZXRoZXIgaXQgd29ya3MgLS0gYnV0IGZlZWwgZnJlZSB0byB0YWtlCj4+PiBpZGVh cyBmcm9tIGl0IGlmIGl0IGhlbHBzLgo+Pj4KPj4+IEFjY3VtdWxhdG9ycyBhcmUgMzIgYml0cy4g IFRoaXMgcHJvdmlkZXMgZm9yIGEgZmFpciBudW1iZXIgb2YgaXRlcmF0aW9ucwo+Pj4gd2l0aG91 dCBvdmVyZmxvdywgYnV0IGxhcmdlIGlucHV0IGRhdGEgd2lsbCBzdGlsbCByZXF1aXJlIHNwbGl0 dGluZyBpbnRvCj4+PiBjaHVua3MsIHdpdGggbW9kdWxvIHJlZHVjdGlvbiBzdGVwcyBpbiBiZXR3 ZWVuLiAgVGhlcmUgYXJlIHJhdGhlciBhIGxvdAo+Pj4gb2Ygc2VyaWFsIGRlcGVuZGVuY2llcyBp biB0aGUgY29yZSBsb29wLCBidXQgc2luY2UgdGhlIG9wZXJhdGlvbnMKPj4+IGludm9sdmVkIGFy ZSByZWxhdGl2ZWx5IGNoZWFwLCB0aGlzIGlzIHByb2JhYmx5IG5vdCBhIHNpZ25pZmljYW50IGlz c3VlCj4+PiBpbiBwcmFjdGljZTogdGhlIGxvYWQtdG8tdXNlIGRlcGVuZGVuY3kgaXMgcHJvYmFi bHkgdGhlIGJpZ2dlciBjb25jZXJuLgo+Pj4gUGlwZWxpbmVkIGxvb3AgdW5yb2xsaW5nIGNvdWxk IGFkZHJlc3MgdGhlc2UgaWYgbmVjZXNzYXJ5Lgo+Pj4KPj4+IFRoZSBob3Jpem9udGFsIHJlZHVj dGlvbnMgKFVBRERWKSBzdGlsbCBwcm9iYWJseSBkb24ndCBuZWVkIHRvIGJlIGRvbmUKPj4+IHVu dGlsIGFmdGVyIHRoZSBsYXN0IGNodW5rLgo+Pj4KPj4+Cj4+PiBCZXdhcmU6IEkgd2Fzbid0IGNh cmVmdWwgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZXMgZm9yIEJuIC8gQW4sIHNvIHNvbWUKPj4+IGFk ZGl0aW9uYWwgYWRqdXN0bWVudHMgbWlnaHQgYmUgbmVlZGVkLi4uCj4+Pgo+Pj4gLS04PC0tCj4+ Pgo+Pj4gCXB0cnVlICAgcFAucwo+Pj4gCXB0cnVlICAgcEEucwo+Pj4KPj4+IAltb3YgICAgIHpB LnMsICMwICAgICAgICAgICAgICAgIC8vIGFjY3VtdWxhdG9yIGZvciBBbgo+Pj4gCW1vdiAgICAg ekIucywgIzAgICAgICAgICAgICAgICAgLy8gYWNjdW11bGF0b3IgZm9yIEJuCj4+PiAJaW5kZXgg ICB6Si5zLCAjMCwgIzEgICAgICAgICAgICAvLyB6Si5zID0gWzAsIDEsIC4uIFYtMV0KPj4+Cj4+ PiAJbW92ICAgICB6Vi5zLCAjMAo+Pj4gCWluY3cgICAgelYucyAgICAgICAgICAgICAgICAgICAg Ly8gelYucyA9IFtWLCBWLCAuLiBWXQo+Pgo+PiBXaGVuIEkgYWN0dWFsbHkgdGVzdGVkIHRoaXMg Y29kZSwgSSBmb3VuZCB0aGF0IHRoZSBieXRlIGxlbmd0aCBvZiB0aGUKPj4gdGVzdCBtdXN0IGJl IGVxdWFsIHRvIHRoZSB2ZWN0b3IgbGVuZ3RoIGRpdmlkZWQgYnkgNCAodGhhdCBpcywgYW4gaW50 ZWdlcgo+PiBtdWx0aXBsZSBvZiB0aGUgbnVtYmVyIG9mIHdvcmRzIGluIHRoZSBTVkUpIGFuZCB0 aGUgcmVzdWx0IGlzIGNvcnJlY3QuCj4+Cj4+IEFuZCBJIHRoaW5rIG9uZSBvZiB0aGUgcmVhc29u cyBpcyB0aGF0IHRoZSB2YWx1ZSBzdG9yZWQgaW4gelYucyBuZWVkcyB0byBiZQo+PiBjaGFuZ2Vk IGluIHRoZSBsYXN0IGN5Y2xlLiBJdCBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIG51 bWJlciBvZgo+PiBieXRlcyByZW1haW5pbmcgaW4gdGhlIGxhc3QgY3ljbGUuIDopCj4gCj4gQWgg eWVzLCB5b3UncmUgcXVpdGUgcmlnaHQgYWJvdXQgdGhpcy4gIEluIG15IGRlcml2YXRpb24gYWJv dmUsIHYgd2lsbAo+IG5lZWQgdG8gYmUgc21hbGxlciB0aGFuIHRoZSB2ZWN0b3IgbGVuZ3RoIHdo ZW4gcHJvY2Vzc2luZyB0aGUgZmluYWwsCj4gcGFydGlhbCBibG9jayAoaWYgYW55KS4KPiAKPj4K Pj4+Cj4+PiAvLyB3aGVyZSBWIGlzIG51bWJlciBvZiBlbGVtZW50cyBwZXIgYmxvY2sKPj4+IC8v ICAgICAgPSB0aGUgbnVtYmVyIG9mIDMyLWJpdCBlbGVtZW50cyB0aGF0IGZpdCBpbiBhIFotcmVn aXN0ZXIKPj4+Cj4+PiAJYWRkICAgICB4TGltaXQsIHhYLCB4TGVuCj4+PiAJYiAgICAgICBzdGFy dAo+Pj4KPj4+IGxvb3A6ICAgCj4+PiAJbGQxYiAgICB6WC5zLCBwUC96LCBbeFhdCj4+PiAJaW5j dyAgICB4WAo+Pgo+PiBJbiBvcmRlciB0byB2ZXJpZnkgbXkgY29uamVjdHVyZSwgSSBhZGRlZCBh IGJpdCBvZiBjb2RlIHRvIGhlcmUsIHdoaWNoIGlzIHRvCj4+IHN1YnRyYWN0IHRoZSBjb3JyZXNw b25kaW5nIHZhbHVlIGZyb20gelYgaW4gdGhlIGxhc3QgbG9vcC4gQnV0IGl0IGlzIGNvcnJlY3QK Pj4gb25seSB3aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaXMgbGVzcyB0aGFuIG9uZSBjeWNsZS4g VGVzdCBjYXNlcyB0aGF0IGV4Y2VlZAo+PiBvbmUgY29tcGxldGUgY3ljbGUgd2lsbCBhbHNvIGZh aWwuCj4+Cj4+IFNvIEkgZ3Vlc3MgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBsYXN0IGN5Y2xlLCB6 QSBzaG91bGQgYmUgc3VtbWVkIGZpcnN0LAo+PiBiZWNhdXNlIGJlZm9yZSB0aGUgZW5kIG9mIHRo ZSBjeWNsZSwgekEgYW5kIHpCIGFyZSBzY2F0dGVyZWQgaW4gdGhlIGVsZW1lbnRzCj4+IG9mIHRo ZSB2ZWN0b3IsIGlmIHRoZSBsYXN0IGN5Y2xlIGNhbGN1bGF0ZXMgekIsIG9ubHkgcGFydCBvZiB6 QSBpcyBzdW1tZWQKPj4gKCBCZWNhdXNlIHBQL20gZG9lcyBub3QgY291bnQgaW5hY3RpdmUgZWxl bWVudHMpLCBpdCBzaG91bGQgYmUgaW5jb21wbGV0ZS4KPj4KPj4gVGhpcyBpcyBqdXN0IG15IGd1 ZXNzIGFuZCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkLjopCj4gCj4gSSB0aGluayB6QSBzaG91 bGRuJ3QgYmUgd3JvbmcsIHNpbmNlIHRoYXQgb25seSBhY2N1bXVsYXRlcyBhY3RpdmUKPiBlbGVt ZW50cyBhbnl3YXkuICBJIHRoaW5rIGl0J3MgdGhlIGJvZ3VzIHpWIG11bHRpcGxpZXIgaW52b2x2 ZWQgaW4gdGhlCj4gdXBkYXRlIHRvIHpCIHRoYXQgaXMgdGhlIHByb2JsZW0uCj4gCj4+Pgo+Pj4g CWFkZCAgICAgekEucywgcFAvbSwgekEucywgelgucyAgICAgICAgLy8gekEucyArPSB6WC5zCj4+ Pgo+Pj4gCW1zYiAgICAgelgucywgcFAvbSwgekoucywgekIucyAgICAgICAgLy8gelgucyA6PSB6 Qi5zIC0gelgucyAqIHpKLnMKPj4+Cj4+PiAJbW92cHJmeCB6QiwgekEKPj4+IAltYWQgICAgIHpC LnMsIHBQL20sIHpWLnMsIHpYLnMgICAgICAgIC8vIHpCLnMgOj0gelgucyArIHpBLnMgKiBWCgpJ IGZvdW5kIHRoZSBidWcgSSBlbmNvdW50ZXJlZCBlYXJsaWVyLCB0aGF0IGlzLCB0aGUgY2FsY3Vs YXRpb24gb2YgekIgaGVyZQpuZWVkcyB0byB1c2UgcEEgd2l0aCBhbGwgZWxlbWVudHMgYWN0aXZh dGVkLiBUaGUgcmVhc29uIGlzIHRoZSBzYW1lIGFzIG15CnByZXZpb3VzIGd1ZXNzLCBiZWNhdXNl IGFsbCBlbGVtZW50cyBvZiB6QSBzaG91bGQgYmUgaW52b2x2ZWQgd2hlbiBjYWxjdWxhdGluZyB6 Qi4KQmVjYXVzZSB0aGUgb3JpZ2luYWwgY2FsY3VsYXRpb24gZm9ybXVsYSBpcyBsaWtlIHRoaXMu CgpGb3IgZXhhbXBsZToKSW4gdGhlIGxhc3QgbG9vcDoKCWxlZnQgYnl0ZSBpczoJICAzIHwgICA0 IHwgIFwwIHwKCXpBLnMgaXM6CTEwMCB8IDIwMCB8IDEwMCB8IDIwMCAoc3VtID0gNjAwKQoJcFAu cyBpczoJICAxIHwgICAxIHwgICAwIHwgICAwIChPbmx5IGFjdGl2YXRlIHRoZSBmaXJzdCAyIGNo YW5uZWxzKQoKQXQgdGhpcyB0aW1lLCBpZiB0aGUgY2FsY3VsYXRpb24gb2YgekIgb25seSB0YWtl cyB0aGUgZmlyc3QgMiBhY3RpdmUgZWxlbWVudHMsIHRoZSBkYXRhCmlzIGluY29tcGxldGUsIGJl Y2F1c2UgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgb3JpZ2luYWwgYWxnb3Jp dGhtLCB6QiBpcyBhbHdheXMKYmFzZWQgb24gdGhlIHN1bSBvZiBhbGwgdGhlIGFjY3VtdWxhdGVk IGJ5dGVzLgoKSGVyZSB3ZSBjYW4gc2ltcGx5IGNoYW5nZSB0aGUgcHJlZGljdGlvbiByZWdpc3Rl ciB1c2VkIGluIHRoZSB0d28gc2VudGVuY2VzIHJlbGF0ZWQgdG8KekIgdG8gdGhlIG9uZSB0aGF0 IGlzIGFsbCB0cnVlIChpdCBpcyBwQSBpbiBvdXIgY29kZSksIGxpa2UgdGhpczoKCW1zYiAgICAg elgucywgcEEvbSwgekoucywgekIucyAgICAgICAgLy8gelgucyA6PSB6Qi5zIC0gelgucyAqIHpK LnMKCgltb3ZwcmZ4IHpCLCB6QQoJbWFkICAgICB6Qi5zLCBwQS9tLCB6Vi5zLCB6WC5zICAgICAg ICAvLyB6Qi5zIDo9IHpYLnMgKyB6QS5zICogVgoKPj4+IHN0YXJ0OiAgCj4+PiAJd2hpbGVsbyBw UC5zLCB4WCwgeExpbWl0Cj4+PiAJYi5maXJzdCBsb29wCj4gCj4gVGhlcmUgYXJlIGEgZmV3IG9w dGlvbnMsIEkgZ3Vlc3MuCj4gCj4gT25lIHdheSBpcyB0byB1c2UgQ05UUCBpbnNpZGUgdGhlIGxv b3AgdG8gZ2V0IHRoZSBudW1iZXIgb2YgYWN0aXZlCj4gZWxlbWVudHMsIGluc3RlYWQgb2YganVz dCBzZXR0aW5nIHpWIGluIGFkdmFuY2UuICBUaGlzIGFwcHJvYWNoIG1heSBhZGQKPiBhIHNsaWdo dCBvdmVyaGVhZCwgYnV0IGl0IGlzIHdvcnRoIGV4cGVyaW1lbnRpbmcgd2l0aCBpdC4gIElmIHRo ZQo+IG92ZXJoZWFkIGlzIG5lZ2xpYmlibGUsIHRoZW4gdGhpcyBhcHByb2FjaCBoYXMgdGhlIGV4 YW1wbGUgb2YgYmVpbmcKPiBzaW1wbGUgdG8gdW5kZXJzdGFuZC4KPiAKPiBBbHRlcm5hdGl2ZWx5 LCB5b3UgY291bGQgZG8gYW4gYWRqdXN0bWVudCBhZnRlciB0aGUgbG9vcCBlbmRzIHRvCj4gc3Vi dHJhY3QgdGhlIGFwcHJvcHJpYXRlIGFtb3VudHMgZnJvbSB6Qi4gIFVuZm9ydHVuYXRlbHksIHBQ IGhhcyBhbHJlYWR5Cj4gYmVlbiBvdmVyd3JpdHRlbiBieSB0aGUgdGltZSB0aGUgbG9vcCBlbmRz LiAgSWYgY291bGQgYmUgYmFja2VkIHVwIGludG8KPiBhbm90aGVyIFAtcmVnaXN0ZXIgYmVmb3Jl IG92ZXJ3cml0aW5nIGl0OiB0aGlzIHNob3VsZCBiZSBwcmV0dHkgbG93LQo+IG92ZXJoZWFkLgo+ IAo+IEEgZmluYWwgb3B0aW9uIHdvdWxkIGJlIHRvIGNoYW5nZSB0aGUgYi5maXJzdCB0byBhIGIu bGFzdCwgc28gdGhhdCB0aGUKPiBsb29wIGVuZHMgYWZ0ZXIgdGhlIGZpbmFsIGZ1bGwgYmxvY2su ICBUaGVuIGNvcHktcGFzdGUgdGhlIGxvb3AgYm9keSB0bwo+IGV4ZWN1dGUgb25jZSBtb3JlLCBi dXQgdXNpbmcgQ05UUCB0byBnZXQgdGhlIGVsZW1lbnQgY291bnQgdG8gbXVsdGlwbHkKPiBieSwg YXMgZGVzY3JpYmVkIGFib3ZlLiAgVGhpcyBtYWtlcyB0aGUgY29kZSBhIGJpdCBsYXJnZXIsIGJ1 dCBpdAo+IHByb2JhYmx5IHRoZSBiZXN0LXBlcmZvcm1hbmNlIG9wdGlvbi4gIFlvdSBtYXkgYmUg YWJsZSB0byByb3RhdGUgdGhlCj4gbG9vcCBzbyB0aGF0IGl0IGJyZWFrcyBvdXQgYWZ0ZXIgdXBk YXRpbmcgekEgKHdoaWNoIElJVUMgZG9lc24ndCBuZWVkIHRvCj4gYmUgZG9uZSBpbiBhIHNwZWNp YWwgd2F5IGZvciB0aGUgcGFydGlhbCBibG9jaykuICBUaGlzIHdvdWxkIG1lYW4geW91Cj4gb25s eSBoYXZlIHRvIHNwZWNpYWxpc2UgdGhlIHpCIHVwZGF0ZSBjb2RlLgoKUmVnYXJkaW5nIHRoZSBs YXN0IGxvb3AsIEkgdHJpZWQgdG8gd3JhcCBhbm90aGVyIGxheWVyIGJlZm9yZSBhbmQgYWZ0ZXIg dGhlCmNvcmUgbG9vcCwgYW5kIEkgaGF2ZSB2ZXJpZmllZCBpdHMgY29ycmVjdG5lc3MuCk15IGNv ZGUgaXMgYXQgdGhlIGVuZCBvZiB0aGlzIGVtYWlsLgoKPiAKPj4+Cj4+PiAvLyBDb2xsZWN0IHRo ZSBwYXJ0aWFsIHN1bXMgdG9nZXRoZXI6Cj4+Pgo+Pj4gCXVhZGR2ICAgZDAsIHBBLCB6MC5zCj4+ PiAJdWFkZHYgICBkMSwgcEEsIHoxLnMKPj4+Cj4+PiAvLyBGaW5hbGx5LCBhZGQgMSB0byBkMCwg YW5kIHhMZW4gdG8gZDEsIGFuZCBkbyBtb2R1bG8gcmVkdWN0aW9uLgo+Pj4KPj4+IC0tPjgtLQo+ Pj4KPj4+IFsuLi5dCj4+Pgo+Pj4gQ2hlZXJzCj4+PiAtLS1EYXZlCj4+PiAuCj4+Pgo+Pgo+PiBU aGUgY29kZSB5b3Ugc2VudCBtZSBwcm92aWRlcyBhIGNvcnJlY3Qgd2F5IHRvIGRlYWwgd2l0aCB0 cmFpbGluZyBieXRlcywKPj4gSSBuZWVkIHRvIHNwZW5kIHNvbWUgbW9yZSB0aW1lIHRvIGRlYnVn IHRoZSBwcm9ibGVtIGVuY291bnRlcmVkIGFib3ZlLgo+PiBUaGFuayB5b3UhCj4+Cj4+IENoZWVy cy5eX14KPiAKPiBJIHdhcyBjaGVla2lseSBsZWF2aW5nIHRoZSB0ZXN0aW5nIGFuZCBkZWJ1Z2dp bmcgZm9yIHlvdSB0byBkbyA6KQo+IAo+IFBhcnQgb2YgbXkgcmVhc29uIGZvciBpbnRlcmVzdCBp biB0aGlzIGlzIHRoYXQgaWYgd2UgZW5hYmxlIFNWRSBpbiB0aGUKPiBrZXJuZWwsIGl0IHdvdWxk IGJlIGdvb2QgdG8gaGF2ZSBzb21lIGNsZWFuIGV4YW1wbGVzIGZvciBwZW9wbGUgdG8KPiBmb2xs b3cgLS0gZXZlbiBpZiBub3QgdGhpcyBhbGdvLiAgU1ZFIGlzIGEgYml0IGRpZmZlcmVudCB0byB1 c2UKPiBjb21wYXJlZCB3aXRoIGZpeGVkLWxlbmd0aCB2ZWN0b3IgSVNBcywgc28gd29ya2VkIGV4 YW1wbGVzIGFyZSBhbHdheXMKPiB1c2VmdWwuClllcyBpdCBpcyBuZWNlc3NhcnkuCgo+IAo+IENo ZWVycwo+IC0tLURhdmUKPiAuCj4gCgpUaGlzIGlzIHRoZSBtYWluIHBhcnQgb2YgbXkgbmV3bHkg bW9kaWZpZWQgY29kZToKLS04PC0tCiAgICAgICAgcHRydWUgICBwMC5zCiAgICAgICAgcHRydWUg ICBwMS5zCgogICAgICAgIG1vdiAgICAgekEucywgIzAKICAgICAgICBtb3YgICAgIHpCLnMsICMw CiAgICAgICAgaW5kZXggICB6Si5zLCAjMCwgIzEKICAgICAgICBtb3YgICAgIHpWLnMsICMwCiAg ICAgICAgaW5jdyAgICB6Vi5zCgogICAgICAgIGFkZCAgICAgeExpbWl0LCB4MSwgeDIKICAgICAg ICBiICAgICAgIHN0YXJ0CQkvL0VudGVyIHRoZSBjb3JlIGxvb3AgZmlyc3QKCnRyYWlsbG9vcDoJ CQkvLyBMYXN0IGN5Y2xlIGVudHJhbmNlCiAgICAgICAgY250cCAgICB4NiwgcDEsIHAwLnMJLy8g R2V0IGFjdGl2ZSBlbGVtZW50IGNvdW50IG9mIGxhc3QgY3ljbGUKICAgICAgICBjcHkgICAgIHpW LnMsIHAxL20sIHc2CS8vIFNldCB6ViB0byB0aGUgYWN0dWFsIHZhbHVlLgoKbG9vcDoJCQkJLy8g Q29yZSBsb29wIGVudHJhbmNlCiAgICAgICAgbGQxYiAgICB6WC5zLCBwMC96LCBbeDFdCiAgICAg ICAgaW5jdyAgICB4MQoKICAgICAgICBhZGQgICAgIHpBLnMsIHAwL20sIHpBLnMsIHpYLnMJLy8g VGhlIGNhbGN1bGF0aW9uIG9mIHpBIHN0aWxsIG5lZWRzIHRvIHVzZSBwMAogICAgICAgIG1zYiAg ICAgelgucywgcDEvbSwgekoucywgekIucwkvLyBDaGFuZ2UgcCByZWdpc3RlciBoZXJlCiAgICAg ICAgbW92cHJmeCB6QiwgekEKICAgICAgICBtYWQgICAgIHpCLnMsIHAxL20sIHpWLnMsIHpYLnMJ Ly8gQ2hhbmdlIHAgcmVnaXN0ZXIgaGVyZQpzdGFydDoKICAgICAgICB3aGlsZWxvIHAwLnMsIHgx LCB4TGltaXQKICAgICAgICBiLmxhc3QgIGxvb3AJCS8vIFRoZSBjb25kaXRpb24gZm9yIHRoZSBj b3JlIGxvb3AgdG8gY29udGludWUgaXMgdGhhdCBiLmxhc3QgaXMgdHJ1ZQogICAgICAgIGIuZmly c3QgdHJhaWxsb29wCS8vIElmIGIubGFzdCBpcyBmYWxzZSBhbmQgYi5maXJzdCBpcyB0cnVlLCBp dCBtZWFucyB0aGUgbGFzdCBjeWNsZQoKICAgICAgICB1YWRkdiAgIGQwLCBwMSwgekEucwogICAg ICAgIHVhZGR2ICAgZDEsIHAxLCB6Qi5zCgogICAgICAgIG1vdiAgICAgeDEyLCB2MC4yZFswXQog ICAgICAgIG1vdiAgICAgeDEzLCB2MS4yZFswXQogICAgICAgIGFkZCAgICAgeDEwLCB4MTAsIHgx MgogICAgICAgIGFkZCAgICAgeDExLCB4MTEsIHgxMwogICAgICAgIGFkZCAgICAgeDExLCB4MTEs IHgyCgogICAgICAgIG1vZDY1NTIxICAgICAgICAxMCwgMTQsIDEyCiAgICAgICAgbW9kNjU1MjEg ICAgICAgIDExLCAxNCwgMTIKICAgICAgICBsc2wgICAgIHgxMSwgeDExLCAjMTYKICAgICAgICBv cnIgICAgIHgwLCB4MTAsIHgxMQogICAgICAgIHJldAotLT44LS0KCkFmdGVyIHRoaXMgbW9kaWZp Y2F0aW9uLCBUaGUgdGVzdCByZXN1bHRzIGFyZSBjb3JyZWN0IHdoZW4gdGhlIGRhdGEgbGVuZ3Ro IGlzIGxlc3MgdGhhbiBhYm91dCA4IEtieXRlLApwYXJ0IEEgd2lsbCBzdGlsbCBiZSBjb3JyZWN0 IGFmdGVyIDhLLCBhbmQgYW4gb3ZlcmZsb3cgZXJyb3Igd2lsbCBvY2N1ciBpbiBwYXJ0IEIuIFRo aXMgaXMgYmVjYXVzZSBBCm9ubHkgYWNjdW11bGF0ZXMgYWxsIHRoZSBieXRlcywgYW5kIHRoZSBh Y2N1bXVsYXRpdmUgYWNjZWxlcmF0aW9uIG9mIEIgZXhwYW5kcyBmYXN0ZXIsIGJlY2F1c2UgdGhl CmFjY3VtdWxhdGl2ZSBmb3JtdWxhIG9mIEIgaXM6CglCID0gKDEgKyBEMSkgKyAoMSArIEQxICsg RDIpICsgLi4uICsgKDEgKyBEMSArIEQyICsgLi4uICsgRG4pIChtb2QgNjU1MjEpCiAgICAgICAg ICAgPSBuw5dEMSArIChu4oiSMSnDl0QyICsgKG7iiJIyKcOXRDMgKyAuLi4gKyBEbiArIG4gKG1v ZCA2NTUyMSkKCklmIHdlIHRha2UgdGhlIGF2ZXJhZ2UgdmFsdWUgb2YgRHggdG8gMTI4IGFuZCBu IHRvIDgxOTI6CglCID0gKDEgKyAyICsgLi4uICsgODEyOSkgKiAxMjggKyA4MTkyCgkgID0gNCwy OTUsNDk5LDc3NiAoMzJiaXQgb3ZlcmZsb3cpCgpTbyBJIHRoaW5rIHRoZSAzMi1iaXQgYWNjdW11 bGF0b3IgaXMgc3RpbGwgbm90IGVub3VnaCBmb3IgcGFydCBCIGhlcmUuIDopCgotLSAKQmVzdCBy ZWdhcmRzLApMaSBRaWFuZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=