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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B1015C433EF for ; Tue, 28 Jun 2022 06:23:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:CC:To:Subject:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=qN8GUiy48vDytaTQy93c77LK3RDZs+SvAtcdoDaMbM0=; b=jK79MCq8EgTuTmNuKxzSk+lLEJ 2pSVJNZbFY4dTsUUK6P1TDb/XJIT4Z1U1M/88C7l9g5x/DqzA2wNk8PxsbOsRBwC/NZS+pyzobQ/d Dry5DeQQ12qtUsvpbEK6iuAsiFppOFphFB2zyxAK+Zuor5geRcUPdoirDvsLR2T0xmK9nkqmr/4Il FDvOKkTWYXKXLq8i53WDItWK6QrwnFbMLrZtGOaLlG89S69NMoeux075+SMEMeqKcsevVjPczDpM1 0BLw0WWlbq+FK+ccxFR8Yy4mO+cT9AEfpcVYsaC4jWWPdDDWH07XKk6MP4vtwkDlVf2b4UYpIO4fC SZWhmIWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o64bv-004gHK-QR; Tue, 28 Jun 2022 06:22:07 +0000 Received: from szxga03-in.huawei.com ([45.249.212.189]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o64br-004gFb-EC for linux-arm-kernel@lists.infradead.org; Tue, 28 Jun 2022 06:22:06 +0000 Received: from dggpemm500023.china.huawei.com (unknown [172.30.72.56]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4LXDxn0p9dz9syN; Tue, 28 Jun 2022 14:21:17 +0800 (CST) Received: from dggpemm500006.china.huawei.com (7.185.36.236) by dggpemm500023.china.huawei.com (7.185.36.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 28 Jun 2022 14:21:56 +0800 Received: from [10.174.178.55] (10.174.178.55) by dggpemm500006.china.huawei.com (7.185.36.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 28 Jun 2022 14:21:55 +0800 Subject: Re: [PATCH] arm64: mm: fix linear mapping mem access performace degradation To: guanghui.fgh , Mike Rapoport CC: , , , , , , , , , , , , , , , , , , Yao Hongbo References: <1656241815-28494-1-git-send-email-guanghuifeng@linux.alibaba.com> <4d18d303-aeed-0beb-a8a4-32893f2d438d@linux.alibaba.com> <32aefb80-c59c-74b6-c373-dd24edba0752@huawei.com> <075b0a8e-cb7e-70f6-b45a-54cd31886794@linux.alibaba.com> <55873a70-da46-b0f6-db81-841a2b5e886a@huawei.com> <54f13945-fa35-247d-ca33-182931fd05ff@linux.alibaba.com> From: "Leizhen (ThunderTown)" Message-ID: Date: Tue, 28 Jun 2022 14:21:55 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: <54f13945-fa35-247d-ca33-182931fd05ff@linux.alibaba.com> Content-Language: en-US X-Originating-IP: [10.174.178.55] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemm500006.china.huawei.com (7.185.36.236) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220627_232203_869417_1514F4EA X-CRM114-Status: GOOD ( 27.58 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 CgpPbiAyMDIyLzYvMjggMTE6MDYsIGd1YW5naHVpLmZnaCB3cm90ZToKPiBUaGFua3MuCj4gCj4g 5ZyoIDIwMjIvNi8yOCA5OjM0LCBMZWl6aGVuIChUaHVuZGVyVG93bikg5YaZ6YGTOgo+Pgo+Pgo+ PiBPbiAyMDIyLzYvMjcgMjA6MjUsIGd1YW5naHVpLmZnaCB3cm90ZToKPj4+IFRoYW5rcy4KPj4+ Cj4+PiDlnKggMjAyMi82LzI3IDIwOjA2LCBMZWl6aGVuIChUaHVuZGVyVG93bikg5YaZ6YGTOgo+ Pj4+Cj4+Pj4KPj4+PiBPbiAyMDIyLzYvMjcgMTg6NDYsIGd1YW5naHVpLmZnaCB3cm90ZToKPj4+ Pj4KPj4+Pj4KPj4+Pj4g5ZyoIDIwMjIvNi8yNyAxNzo0OSwgTWlrZSBSYXBvcG9ydCDlhpnpgZM6 Cj4+Pj4+PiBQbGVhc2UgZG9uJ3QgcG9zdCBIVE1MLgo+Pj4+Pj4KPj4+Pj4+IE9uIE1vbiwgSnVu IDI3LCAyMDIyIGF0IDA1OjI0OjEwUE0gKzA4MDAsIGd1YW5naHVpLmZnaCB3cm90ZToKPj4+Pj4+ PiBUaGFua3MuCj4+Pj4+Pj4KPj4+Pj4+PiDlnKggMjAyMi82LzI3IDE0OjM0LCBNaWtlIFJhcG9w b3J0IOWGmemBkzoKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoCBPbiBTdW4sIEp1biAyNiwg MjAyMiBhdCAwNzoxMDoxNVBNICswODAwLCBHdWFuZ2h1aSBGZW5nIHdyb3RlOgo+Pj4+Pj4+Cj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhlIGFybTY0IGNhbiBidWlsZCAyTS8xRyBibG9j ay9zZWN0aWlvbiBtYXBwaW5nLiBXaGVuIHVzaW5nIERNQS9ETUEzMiB6b25lCj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgKGVuYWJsZSBjcmFzaGtlcm5lbCwgZGlzYWJsZSByb2RhdGEgZnVs bCwgZGlzYWJsZSBrZmVuY2UpLCB0aGUgbWVtX21hcCB3aWxsCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgdXNlIG5vbiBibG9jay9zZWN0aW9uIG1hcHBpbmcoZm9yIGNyYXNoa2VybmVsIHJl cXVpcmVzIHRvIHNocmluayB0aGUgcmVnaW9uCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW4gcGFnZSBncmFudWxhcml0eSkuIEJ1dCBpdCB3aWxsIGRlZ3JhZGUgcGVyZm9ybWFuY2Ugd2hl biBkb2luZyBsYXJnaW5nCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludW91cyBt ZW0gYWNjZXNzIGluIGtlcm5lbChtZW1jcHkvbWVtbW92ZSwgZXRjKS4KPj4+Pj4+Pgo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZXJlIGFyZSBtYW55IGNoYW5nZXMgYW5kIGRpc2N1c3Np b25zOgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbW1pdCAwMzE0OTU2MzViNDYKPj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21taXQgMWE4ZTFjZWY3NjAzCj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29tbWl0IDg0MjRlY2RkZTdkZgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbW1pdCAwYTMwYzUzNTczYjAKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb21taXQgMjY4NzI3NWE1ODQzCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqAgUGxlYXNl IGluY2x1ZGUgb25lbGluZSBzdW1tYXJ5IG9mIHRoZSBjb21taXQuIChTZWUgc2VjdGlvbiAiRGVz Y3JpYmUgeW91cgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoCBjaGFuZ2VzIiBpbiBEb2N1bWVudGF0aW9u L3Byb2Nlc3Mvc3VibWl0dGluZy1wYXRjaGVzLnJzdCkKPj4+Pj4+Pgo+Pj4+Pj4+IE9LLCBJIHdp bGwgYWRkIG9uZWxpbmUgc3VtbWFyeSBpbiB0aGUgZ2l0IGNvbW1pdCBtZXNzYWdlcy4KPj4+Pj4+ Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoaXMgcGF0Y2ggY2hhbmdlcyBtZW1fbWFw IHRvIHVzZSBibG9jay9zZWN0aW9uIG1hcHBpbmcgd2l0aCBjcmFzaGtlcm5lbC4KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoCBGaXJzdGx5LCBkbyBibG9jay9zZWN0aW9uIG1hcHBpbmcobm9y bWFsbHkgMk0gb3IgMUcpIGZvciBhbGwgYXZhaWwgbWVtIGF0Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgbWVtX21hcCwgcmVzZXJ2ZSBjcmFzaGtlcm5lbCBtZW1vcnkuIEFuZCB0aGVuIHdh bGtpbmcgcGFnZXRhYmxlIHRvIHNwbGl0Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmxv Y2svc2VjdGlvbiBtYXBwaW5nIHRvIG5vbiBibG9jay9zZWN0aW9uIG1hcHBpbmcobm9ybWFsbHkg NEspIFtbW29ubHldXV0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgY3Jhc2hrZXJu ZWwgbWVtLgo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFRoaXMgYWxyZWFkeSBoYXBwZW5z IHdoZW4gWk9ORV9ETUEvWk9ORV9ETUEzMiBhcmUgZGlzYWJsZWQuIFBsZWFzZSBleHBsYWluCj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgIHdoeSBpcyBpdCBPayB0byBjaGFuZ2UgdGhlIHdheSB0aGUgbWVt b3J5IGlzIG1hcHBlZCB3aXRoCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFpPTkVfRE1BL1pPTkVfRE1B MzIgZW5hYmxlZC4KPj4+Pj4+Pgo+Pj4+Pj4+IEluIHNob3J0Ogo+Pj4+Pj4+Cj4+Pj4+Pj4gMS5i dWlsZGluZyBhbGwgYXZhaWwgbWVtIHdpdGggYmxvY2svc2VjdGlvbiBtYXBwaW5n77yIbm9ybWFs bHkgMUcvMk3vvIkgd2l0aG91dAo+Pj4+Pj4+IGluc3BlY3RpbmcgY3Jhc2hrZXJuZWwKPj4+Pj4+ PiAyLiBSZXNlcnZlIGNyYXNoa2VybmVsIG1lbSBhcyBzYW1lIGFzIHByZXZpb3VzIGRvaW5nCj4+ Pj4+Pj4gMy4gb25seSBjaGFuZ2UgdGhlIGNyYXNoa2VybmxlIG1lbSBtYXBwaW5nIHRvIG5vcm1h bCBtYXBwaW5nKG5vcm1hbGx5IDRrKS4KPj4+Pj4+PiBXaXRoIHRoaXMgbWV0aG9kLCB0aGVyZSBh cmUgYmxvY2svc2VjdGlvbiBtYXBwaW5nIGFzIG1vcmUgYXMgcG9zc2libGUuCj4+Pj4+Pgo+Pj4+ Pj4gVGhpcyBkb2VzIG5vdCBhbnN3ZXIgdGhlIHF1ZXN0aW9uIHdoeSBjaGFuZ2luZyB0aGUgd2F5 IHRoZSBtZW1vcnkgaXMgbWFwcGVkCj4+Pj4+PiB3aGVuIHRoZXJlIGlzIFpPTkVfRE1BL0RNQTMy IGFuZCBjcmFzaGtlcm5lbCB3b24ndCBjYXVzZSBhIHJlZ3Jlc3Npb24uCj4+Pj4+Pgo+Pj4+PiAx LlF1b3RlZCBtZXNzYWdlcyBmcm9tIGFyY2gvYXJtNjQvbW0vaW5pdC5jCj4+Pj4+Cj4+Pj4+ICJN ZW1vcnkgcmVzZXJ2YXRpb24gZm9yIGNyYXNoIGtlcm5lbCBlaXRoZXIgZG9uZSBlYXJseSBvciBk ZWZlcnJlZAo+Pj4+PiBkZXBlbmRpbmcgb24gRE1BIG1lbW9yeSB6b25lcyBjb25maWdzIChaT05F X0RNQSkgLS0KPj4+Pj4KPj4+Pj4gSW4gYWJzZW5jZSBvZiBaT05FX0RNQSBjb25maWdzIGFybTY0 X2RtYV9waHlzX2xpbWl0IGluaXRpYWxpemVkCj4+Pj4+IGhlcmUgaW5zdGVhZCBvZiBtYXhfem9u ZV9waHlzKCkuwqAgVGhpcyBsZXRzIGVhcmx5IHJlc2VydmF0aW9uIG9mCj4+Pj4+IGNyYXNoIGtl cm5lbCBtZW1vcnkgd2hpY2ggaGFzIGEgZGVwZW5kZW5jeSBvbiBhcm02NF9kbWFfcGh5c19saW1p dC4KPj4+Pj4gUmVzZXJ2aW5nIG1lbW9yeSBlYXJseSBmb3IgY3Jhc2gga2VybmVsIGFsbG93cyBs aW5lYXIgY3JlYXRpb24gb2YgYmxvY2sKPj4+Pj4gbWFwcGluZ3MgKGdyZWF0ZXIgdGhhbiBwYWdl LWdyYW51bGFyaXR5KSBmb3IgYWxsIHRoZSBtZW1vcnkgYmFuayByYW5ncy4KPj4+Pj4gSW4gdGhp cyBzY2hlbWUgYSBjb21wYXJhdGl2ZWx5IHF1aWNrZXIgYm9vdCBpcyBvYnNlcnZlZC4KPj4+Pj4K Pj4+Pj4gSWYgWk9ORV9ETUEgY29uZmlncyBhcmUgZGVmaW5lZCwgY3Jhc2gga2VybmVsIG1lbW9y eSByZXNlcnZhdGlvbgo+Pj4+PiBpcyBkZWxheWVkIHVudGlsIERNQSB6b25lIG1lbW9yeSByYW5n ZSBzaXplIGluaXRpYWxpemF0aW9uIHBlcmZvcm1lZCBpbgo+Pj4+PiB6b25lX3NpemVzX2luaXQo KS7CoCBUaGUgZGVmZXIgaXMgbmVjZXNzYXJ5IHRvIHN0ZWVyIGNsZWFyIG9mIERNQSB6b25lCj4+ Pj4+IG1lbW9yeSByYW5nZSB0byBhdm9pZCBvdmVybGFwIGFsbG9jYXRpb24uwqAgU28gY3Jhc2gg a2VybmVsIG1lbW9yeSBib3VuZGFyaWVzIGFyZSBub3Qga25vd24gd2hlbiBtYXBwaW5nIGFsbCBi YW5rIG1lbW9yeSByYW5nZXMsIHdoaWNoIG90aGVyd2lzZSBtZWFucyBub3QgcG9zc2libGUgdG8g ZXhjbHVkZSBjcmFzaCBrZXJuZWwgcmFuZ2UgZnJvbSBjcmVhdGluZyBibG9jayBtYXBwaW5ncyBz byBwYWdlLWdyYW51bGFyaXR5IG1hcHBpbmdzIGFyZSBjcmVhdGVkIGZvciB0aGUgZW50aXJlIG1l bW9yeSByYW5nZS4iCj4+Pj4+Cj4+Pj4+IE5hbWVseSwgdGhlIGluaXQgb3JkZXI6IG1lbWJsb2Nr IGluaXQtLS0+bGluZWFyIG1lbSBtYXBwaW5nKDRrIG1hcHBpbmcgZm9yIGNyYXNoa2VybmVsLCBy ZXF1aXJpbmlnIHBhZ2UtZ3JhbnVsYXJpdHkgY2hhbmdpbmcpKS0tLT56b25lIGRtYSBsaW1pdC0t LT5yZXNlcnZlIGNyYXNoa2VybmVsLgo+Pj4+PiBTbyB3aGVuIGVuYWJsZSBaT05FIERNQSBhbmQg dXNpbmcgY3Jhc2hrZXJuZWwsIHRoZSBtZW0gbWFwcGluZyB1c2luZyA0ayBtYXBwaW5nLgo+Pj4+ Pgo+Pj4+PiAyLkFzIG1lbnRpb25lZCBhYm92ZSwgd2hlbiBsaW5lYXIgbWVtIHVzZSA0ayBtYXBw aW5nIHNpbXBseSwgdGhlcmUgaXMgaGlnaCBkdGxiIG1pc3MoZGVncmFkZSBwZXJmb3JtYW5jZSku Cj4+Pj4+IFRoaXMgcGF0Y2ggdXNlIGJsb2NrL3NlY3Rpb24gbWFwcGluZyBhcyBmYXIgYXMgcG9z c2libGUgd2l0aCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4KPj4+Pj4KPj4+Pj4gMy5UaGlzIHBh dGNoIHJlc2VydmUgY3Jhc2hrZXJuZWwgYXMgc2FtZSBhcyB0aGUgaGlzdG9yeShaT05FIERNQSAm IGNyYXNoa2VybmVsIHJlc2VydmluZyBvcmRlciksIGFuZCBvbmx5IGNoYW5nZSB0aGUgbGluZWFy IG1lbSBtYXBwaW5nIHRvIGJsb2NrL3NlY3Rpb24gbWFwcGluZy4KPj4+Pj4gLgo+Pj4+Pgo+Pj4+ Cj4+Pj4gSSB0aGluayBNaWtlIFJhcG9wb3J0J3MgcHJvYmFibHkgYXNraW5nIHlvdSB0byBhbnN3 ZXIgd2hldGhlciB5b3UndmUKPj4+PiB0YWtlbiBpbnRvIGFjY291bnQgc3VjaCBhcyBCQk0uIEZv ciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGU6Cj4+Pj4gd2Ugc2hvdWxkIHByZXBhcmUgdGhl IG5leHQgbGV2ZWwgcGd0YWJsZSBmaXJzdCwgdGhlbiBjaGFuZ2UgMk0gYmxvY2sKPj4+PiBtYXBw aW5nIHRvIDRLIHBhZ2UgbWFwcGluZywgYW5kIGZsdXNoIFRMQiBhdCB0aGUgZW5kLgo+Pj4+PiAr c3RhdGljIHZvaWQgaW5pdF9jcmFzaGtlcm5lbF9wbWQocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxv bmcgYWRkciwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQg bG9uZyBlbmQsIHBoeXNfYWRkcl90IHBoeXMsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHBncHJvdF90IHByb3QsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBoeXNfYWRkcl90ICgqcGd0YWJsZV9hbGxvYykoaW50KSwgaW50IGZsYWdzKQo+Pj4+ ICt7Cj4+Pj4gK8KgwqDCoCBwaHlzX2FkZHJfdCBtYXBfb2Zmc2V0Owo+Pj4+ICvCoMKgwqAgdW5z aWduZWQgbG9uZyBuZXh0Owo+Pj4+ICvCoMKgwqAgcG1kX3QgKnBtZHA7Cj4+Pj4gK8KgwqDCoCBw bWR2YWxfdCBwbWR2YWw7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcG1kcCA9IHBtZF9vZmZzZXQocHVk cCwgYWRkcik7Cj4+Pj4gK8KgwqDCoCBkbyB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG5leHQgPSBw bWRfYWRkcl9lbmQoYWRkciwgZW5kKTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFwbWRfbm9u ZSgqcG1kcCkgJiYgcG1kX3NlY3QoKnBtZHApKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcGh5c19hZGRyX3QgcHRlX3BoeXMgPSBwZ3RhYmxlX2FsbG9jKFBBR0VfU0hJRlQpOwo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBtZF9jbGVhcihwbWRwKTsKPj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBwbWR2YWwgPSBQTURfVFlQRV9UQUJMRSB8IFBNRF9UQUJMRV9VWE47Cj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGZsYWdzICYgTk9fRVhFQ19NQVBQSU5HUykK Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBtZHZhbCB8PSBQTURfVEFCTEVf UFhOOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fcG1kX3BvcHVsYXRlKHBtZHAsIHB0 ZV9waHlzLCBwbWR2YWwpOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZsdXNoX3RsYl9r ZXJuZWxfcmFuZ2UoYWRkciwgYWRkciArIFBBR0VfU0laRSk7Cj4+Pj4KPj4+PiBUaGUgcGd0YWJs ZSBpcyBlbXB0eSBub3cuIEhvd2V2ZXIsIG1lbW9yeSBvdGhlciB0aGFuIGNyYXNoa2VybmVsIG1h eSBiZSBiZWluZyBhY2Nlc3NlZC4KPj4+IDEuV2hlbiByZXNlcnZpbmcgY3Jhc2hrZXJuZWwgYW5k IHJlbWFwcGluZyBsaW5lYXIgbWVtIG1hcHBpbmcsIHRoZXJlIGlzIG9ubHkgb25lIGJvb3QgY3B1 IHJ1bm5pbmcuIFRoZXJlIGlzIG5vIG90aGVyIGNwdS90aHJlYWQgcnVubmluZyBhdCB0aGUgc2Ft ZSB0aW1lLgo+Pgo+PiBTbywgcHV0IHRoaXMgaW4gdGhlIGNvZGUgY29tbWVudD8KPiBPSy4KPj4K Pj4gSWYgc2NhbGFiaWxpdHkgaXMgY29uc2lkZXJlZCBhbmQgdW5wcmVkaWN0YWJsZSBjaGFuZ2Vz IG9jY3VyIGluIHRoZSBmdXR1cmUsIGZvciBleGFtcGxlLAo+PiBvdGhlciBtb2R1bGVzIGFsc28g bmVlZCB0aGlzIG1hcHBpbmcgZnVuY3Rpb24uIEl0IHdvdWxkIGJlIGJldHRlciB0byBkZWFsIHdp dGggdGhlIEJCTSBub3csCj4+IGFuZCBtYWtlIHRoaXMgcHVibGljLgo+IE9LLCBjb3VsZCB5b3Ug Z2l2ZSBtZSBzb21lIGFkdmljZT8KCkkgc2FpZCB0aGF0IHllc3RlcmRheToKd2Ugc2hvdWxkIHBy ZXBhcmUgdGhlIG5leHQgbGV2ZWwgcGd0YWJsZSBmaXJzdCwgdGhlbiBjaGFuZ2UgMk0gYmxvY2sK bWFwcGluZyB0byA0SyBwYWdlIG1hcHBpbmcsIGFuZCBmbHVzaCBUTEIgYXQgdGhlIGVuZC4KCkJ1 dCBJJ20ganVzdCBzdWdnZXN0aW5nLCBpdCdzIGRldGVybWluZWQgYnkgdGhlIG1haW50YWluZXJz LgoKPj4KPj4KPj4+Cj4+PiAyLldoZW4gY2xlYXJpbmcgYmxvY2svc2VjdGlvbiBtYXBwaW5nLCBJ IGhhdmUgZmx1c2ggdGxiIGJ5IGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UuIEFmdGVyd2FyZHMgcmVi dWlsdCA0ayBtYXBwaW5nKEkgdGhpbmsgaXQncyBubyBuZWVkIGZsdXNoIHRsYikuCj4+Cj4+Cj4+ Pgo+Pj4+Cj4+Pj4gKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcF9vZmZzZXQgPSBh ZGRyIC0gKGFkZHIgJiBQTURfTUFTSyk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KG1hcF9vZmZzZXQpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbGxvY19p bml0X2NvbnRfcHRlKHBtZHAsIGFkZHIgJiBQTURfTUFTSywgYWRkciwKPj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaHlzIC0gbWFwX29mZnNldCwg cHJvdCwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBwZ3RhYmxlX2FsbG9jLCBmbGFncyk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChuZXh0IDwgKGFkZHIgJiBQTURfTUFTSykgKyBQTURfU0laRSkKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFsbG9jX2luaXRfY29udF9wdGUocG1kcCwgbmV4dCwg KGFkZHIgJiBQVURfTUFTSykgKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFBVRF9TSVpFLCBuZXh0IC0gYWRkciArIHBoeXMsCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJvdCwgcGd0YWJsZV9h bGxvYywgZmxhZ3MpOwo+Pgo+PiBIZXJlIGFuZCBhbGxvY19jcmFzaGtlcm5lbF9wdWQoKSBzaG91 bGQgdXNlIHRoZSByYXcgZmxhZ3MuIEl0IG1heSBub3QgY29udGFpbsKgIChOT19CTE9DS19NQVBQ SU5HUyB8IE5PX0NPTlRfTUFQUElOR1MpCj4gWWVzLiB0aGUgbWVtIG91dCBvZiBjcmFzaGtlcm5l bCBzaG91bGQgdXNlIGJsb2NrL3NlY3Rpb24gbWFwcGluZyBhcyBmYXIgYXMgcG9zc2libGUgaW5j bHVkaW5nIHRoZSBMZWZ0TWFyZ2luIGFuZCBSaWdodE1hcmdpbi4KPiBCdXQgSSBoYWQgdGVzdCBp dCBvbiBIaVNpbGljb24gS3VucGVuZyA5MjAtNjQyNiB3aXRoIGl0IGFuZCBnZXQgcGVyZm9ybWFj bmUgZGVncmFkZSh3aXRob3V0IE5PX0JMT0NLX01BUFBJTkdTL05PX0NPTlRfTUFQUElOR1MgZmxh Z3MgZm9yIHRoZSBsZWZ0L3JpZ2h0IG1hcmdpbikKPiBJdCdzIHN0cmFuZ2UsIGNvdWxkIHlvdSBn aXZlIHNvbWUgYWR2aWNlPyBNYXliZSBpdCdzIGdvb2QgZm9yIG90aGVyIGFybSBwbGF0Zm9ybSBl eGNlcHQgZm9yIEhpU2lsaWNvbiBLdW5wZW5nIDkyMC02NDI2LgoKSSB0aGluayB5b3UgY2FuIGZp cnN0IHVzZSBzaG93X3B0ZSgpIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG1hcHBpbmcgcmVzdWx0cyBh cmUgYXMgZXhwZWN0ZWQuCgo+Pgo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGFsbG9jX2NyYXNoa2VybmVsX2NvbnRfcHRlKHBtZHAsIGFkZHIsIG5leHQsIHBoeXMs IHByb3QsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHBndGFibGVfYWxsb2MsIGZsYWdzKTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgcGh5cyArPSBuZXh0 IC0gYWRkcjsKPj4+PiArwqDCoMKgIH0gd2hpbGUgKHBtZHArKywgYWRkciA9IG5leHQsIGFkZHIg IT0gZW5kKTsKPj4+PiArfQo+Pj4+Cj4+PiAuCj4+Pgo+Pgo+IC4KPiAKCi0tIApSZWdhcmRzLAog IFpoZW4gTGVpCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==