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 D0CE0C3DA6E for ; Wed, 20 Dec 2023 12:05:12 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Q1THNLR203QUveET8wmNO1nfbO5Se/fCgwkSec2C1PI=; b=cjX5Y0rYxtRREf Yx7hz+7YOvXXIgJZr3VvZO9ki6bo6ztdtfk50q2kKmCofpmAqDigTzyfV1cMMUHbbEpCyect11K0G ae64gBKZ2lit71RUe/5GeGHu1TnwbPHiMkldBjLM+ZuZzGfTuqZz81RegwwKYxACmorGN9iqN0Mea wFQ+w6BUrAreCLaPOeW036ikYN2CQxuqVpbqc24hcOAyM4B98K3x85BQ2vp/ozu3d6WXLtzEk5dA8 R4CWoL9OHbd8GMuTYK3Ytzjp78h/FmWo0WMbtCxQcCHIx73u9h6OFlqbrcO3TpA+SplaV6AYbkwzE N6DtmnG6SiIMEGW6q/WA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFvJd-00HITR-2o; Wed, 20 Dec 2023 12:04:45 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFvJY-00HIS5-1a for linux-arm-kernel@lists.infradead.org; Wed, 20 Dec 2023 12:04:44 +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 587341FB; Wed, 20 Dec 2023 04:05:20 -0800 (PST) Received: from [10.57.75.247] (unknown [10.57.75.247]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C66AB3F5A1; Wed, 20 Dec 2023 04:04:30 -0800 (PST) Message-ID: Date: Wed, 20 Dec 2023 12:04:28 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 02/16] mm: Batch-copy PTE ranges during fork() Content-Language: en-GB To: David Hildenbrand , Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland , Kefeng Wang , John Hubbard , Zi Yan , Barry Song <21cnbao@gmail.com>, Alistair Popple , Yang Shi Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231218105100.172635-1-ryan.roberts@arm.com> <20231218105100.172635-3-ryan.roberts@arm.com> <0bef5423-6eea-446b-8854-980e9c23a948@redhat.com> <7c0236ad-01f3-437f-8b04-125d69e90dc0@redhat.com> <9a58b1a2-2c13-4fa0-8ffa-2b3d9655f1b6@arm.com> <28968568-f920-47ac-b6fd-87528ffd8f77@redhat.com> <10b0b562-c1c0-4a66-9aeb-a6bff5c218f6@arm.com> <8f8023cb-3c31-4ead-a9e6-03a10e9490c6@redhat.com> <699cb1db-51eb-460e-9ceb-1ce08ca03050@redhat.com> <2a8c5b6c-f5ae-43b2-99aa-6d10e79b76e1@redhat.com> <3194b8a5-3f72-4d9e-a267-fbdad32ad864@redhat.com> From: Ryan Roberts In-Reply-To: <3194b8a5-3f72-4d9e-a267-fbdad32ad864@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231220_040440_640334_DC7B6612 X-CRM114-Status: GOOD ( 36.42 ) 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 T24gMjAvMTIvMjAyMyAxMTo1OCwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4gT24gMjAuMTIu MjMgMTI6NTEsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4gT24gMjAvMTIvMjAyMyAxMTozNiwgRGF2 aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+PiBPbiAyMC4xMi4yMyAxMjoyOCwgUnlhbiBSb2JlcnRz IHdyb3RlOgo+Pj4+IE9uIDIwLzEyLzIwMjMgMTA6NTYsIERhdmlkIEhpbGRlbmJyYW5kIHdyb3Rl Ogo+Pj4+PiBPbiAyMC4xMi4yMyAxMTo0MSwgUnlhbiBSb2JlcnRzIHdyb3RlOgo+Pj4+Pj4gT24g MjAvMTIvMjAyMyAxMDoxNiwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+Pj4+Pj4gT24gMjAu MTIuMjMgMTE6MTEsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4+Pj4+Pj4gT24gMjAvMTIvMjAyMyAw OTo1NCwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+Pj4+Pj4+PiBPbiAyMC4xMi4yMyAxMDo1 MSwgUnlhbiBSb2JlcnRzIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIDIwLzEyLzIwMjMgMDk6MTcsIERh dmlkIEhpbGRlbmJyYW5kIHdyb3RlOgo+Pj4+Pj4+Pj4+PiBPbiAxOS4xMi4yMyAxODo0MiwgUnlh biBSb2JlcnRzIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4gT24gMTkvMTIvMjAyMyAxNzoyMiwgRGF2aWQg SGlsZGVuYnJhbmQgd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4gT24gMTkuMTIuMjMgMDk6MzAsIFJ5YW4g Um9iZXJ0cyB3cm90ZToKPj4+Pj4+Pj4+Pj4+Pj4gT24gMTgvMTIvMjAyMyAxNzo0NywgRGF2aWQg SGlsZGVuYnJhbmQgd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4+PiBPbiAxOC4xMi4yMyAxMTo1MCwgUnlh biBSb2JlcnRzIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+Pj4+IENvbnZlcnQgY29weV9wdGVfcmFuZ2Uo KSB0byBjb3B5IGEgYmF0Y2ggb2YgcHRlcyBpbiBvbmUgZ28uIEEgZ2l2ZW4KPj4+Pj4+Pj4+Pj4+ Pj4+PiBiYXRjaCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgd2l0aCB0aGUgbmV3 IGhlbHBlciwKPj4+Pj4+Pj4+Pj4+Pj4+PiBwdGVfYmF0Y2hfcmVtYWluaW5nKCksIGFuZCBtYXBz IGEgcGh5c2ljYWxseSBjb250aWd1b3VzIGJsb2NrIG9mCj4+Pj4+Pj4+Pj4+Pj4+Pj4gbWVtb3J5 LAo+Pj4+Pj4+Pj4+Pj4+Pj4+IGFsbCBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgZm9saW8uIEEgcHRl IGJhdGNoIGlzIHRoZW4KPj4+Pj4+Pj4+Pj4+Pj4+PiB3cml0ZS1wcm90ZWN0ZWQgaW4KPj4+Pj4+ Pj4+Pj4+Pj4+PiBvbmUgZ28gaW4gdGhlIHBhcmVudCB1c2luZyB0aGUgbmV3IGhlbHBlciwgcHRl cF9zZXRfd3Jwcm90ZWN0cygpCj4+Pj4+Pj4+Pj4+Pj4+Pj4gYW5kIGlzCj4+Pj4+Pj4+Pj4+Pj4+ Pj4gc2V0IGluIG9uZSBnbyBpbiB0aGUgY2hpbGQgdXNpbmcgdGhlIG5ldyBoZWxwZXIsIHNldF9w dGVzX2Z1bGwoKS4KPj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+IFRoZSBwcmltYXJ5 IG1vdGl2YXRpb24gZm9yIHRoaXMgY2hhbmdlIGlzIHRvIHJlZHVjZSB0aGUgbnVtYmVyCj4+Pj4+ Pj4+Pj4+Pj4+Pj4gb2YgdGxiCj4+Pj4+Pj4+Pj4+Pj4+Pj4gbWFpbnRlbmFuY2Ugb3BlcmF0aW9u cyB0aGF0IHRoZSBhcm02NCBiYWNrZW5kIGhhcyB0byBwZXJmb3JtIGR1cmluZwo+Pj4+Pj4+Pj4+ Pj4+Pj4+IGZvcmssIGFzIGl0IGlzIGFib3V0IHRvIGFkZCB0cmFuc3BhcmVudCBzdXBwb3J0IGZv ciB0aGUgImNvbnRpZ3VvdXMKPj4+Pj4+Pj4+Pj4+Pj4+PiBiaXQiCj4+Pj4+Pj4+Pj4+Pj4+Pj4g aW4gaXRzIHB0ZXMuIEJ5IHdyaXRlLXByb3RlY3RpbmcgdGhlIHBhcmVudCB1c2luZyB0aGUgbmV3 Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gcHRlcF9zZXRfd3Jwcm90ZWN0cygpIChub3RlIHRoZSAncycgYXQg dGhlIGVuZCkgZnVuY3Rpb24sIHRoZQo+Pj4+Pj4+Pj4+Pj4+Pj4+IGJhY2tlbmQKPj4+Pj4+Pj4+ Pj4+Pj4+PiBjYW4gYXZvaWQgaGF2aW5nIHRvIHVuZm9sZCBjb250aWcgcmFuZ2VzIG9mIFBURXMs IHdoaWNoIGlzCj4+Pj4+Pj4+Pj4+Pj4+Pj4gZXhwZW5zaXZlLAo+Pj4+Pj4+Pj4+Pj4+Pj4+IHdo ZW4gYWxsIHB0ZXMgaW4gdGhlIHJhbmdlIGFyZSBiZWluZyB3cml0ZS1wcm90ZWN0ZWQuIFNpbWls YXJseSwgYnkKPj4+Pj4+Pj4+Pj4+Pj4+PiB1c2luZyBzZXRfcHRlc19mdWxsKCkgcmF0aGVyIHRo YW4gc2V0X3B0ZV9hdCgpIHRvIHNldCB1cCBwdGVzIGluCj4+Pj4+Pj4+Pj4+Pj4+Pj4gdGhlCj4+ Pj4+Pj4+Pj4+Pj4+Pj4gY2hpbGQsIHRoZSBiYWNrZW5kIGRvZXMgbm90IG5lZWQgdG8gZm9sZCBh IGNvbnRpZ3VvdXMgcmFuZ2Ugb25jZQo+Pj4+Pj4+Pj4+Pj4+Pj4+IHRoZXkKPj4+Pj4+Pj4+Pj4+ Pj4+PiBhcmUgYWxsIHBvcHVsYXRlZCAtIHRoZXkgY2FuIGJlIGluaXRpYWxseSBwb3B1bGF0ZWQg YXMgYSBjb250aWd1b3VzCj4+Pj4+Pj4+Pj4+Pj4+Pj4gcmFuZ2UgaW4gdGhlIGZpcnN0IHBsYWNl Lgo+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gVGhpcyBjb2RlIGlzIHZlcnkgcGVy Zm9ybWFuY2Ugc2Vuc2l0aXZlLCBhbmQgYSBzaWduaWZpY2FudAo+Pj4+Pj4+Pj4+Pj4+Pj4+IGFt b3VudCBvZgo+Pj4+Pj4+Pj4+Pj4+Pj4+IGVmZm9ydCBoYXMgYmVlbiBwdXQgaW50byBub3QgcmVn cmVzc2luZyBwZXJmb3JtYW5jZSBmb3IgdGhlIG9yZGVyLTAKPj4+Pj4+Pj4+Pj4+Pj4+PiBmb2xp byBjYXNlLiBCeSBkZWZhdWx0LCBwdGVfYmF0Y2hfcmVtYWluaW5nKCkgaXMgY29tcGlsZQo+Pj4+ Pj4+Pj4+Pj4+Pj4+IGNvbnN0YW50IDEsCj4+Pj4+Pj4+Pj4+Pj4+Pj4gd2hpY2ggZW5hYmxlcyB0 aGUgY29tcGlsZXIgdG8gc2ltcGxpZnkgdGhlIGV4dHJhIGxvb3BzIHRoYXQgYXJlCj4+Pj4+Pj4+ Pj4+Pj4+Pj4gYWRkZWQKPj4+Pj4+Pj4+Pj4+Pj4+PiBmb3IgYmF0Y2hpbmcgYW5kIHByb2R1Y2Ug Y29kZSB0aGF0IGlzIGVxdWl2YWxlbnQgKGFuZCBlcXVhbGx5Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gcGVy Zm9ybWFudCkgYXMgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLgo+Pj4+Pj4+Pj4+Pj4+Pj4+ Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIHRoZSBjb3JlLW1tIHJlZmFj dG9yaW5nIG9ubHkgYW5kIGEgc2VwYXJhdGUKPj4+Pj4+Pj4+Pj4+Pj4+PiBjaGFuZ2UKPj4+Pj4+ Pj4+Pj4+Pj4+PiB3aWxsIGltcGxlbWVudCBwdGVfYmF0Y2hfcmVtYWluaW5nKCksIHB0ZXBfc2V0 X3dycHJvdGVjdHMoKSBhbmQKPj4+Pj4+Pj4+Pj4+Pj4+PiBzZXRfcHRlc19mdWxsKCkgaW4gdGhl IGFybTY0IGJhY2tlbmQgdG8gcmVhbGl6ZSB0aGUgcGVyZm9ybWFuY2UKPj4+Pj4+Pj4+Pj4+Pj4+ PiBpbXByb3ZlbWVudCBhcyBwYXJ0IG9mIHRoZSB3b3JrIHRvIGVuYWJsZSBjb250cHRlIG1hcHBp bmdzLgo+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gVG8gZW5zdXJlIHRoZSBhcm02 NCBpcyBwZXJmb3JtYW50IG9uY2UgaW1wbGVtZW50ZWQsIHRoaXMgY2hhbmdlIGlzCj4+Pj4+Pj4+ Pj4+Pj4+Pj4gdmVyeQo+Pj4+Pj4+Pj4+Pj4+Pj4+IGNhcmVmdWwgdG8gb25seSBjYWxsIHB0ZXBf Z2V0KCkgb25jZSBwZXIgcHRlIGJhdGNoLgo+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+ Pj4gVGhlIGZvbGxvd2luZyBtaWNyb2JlbmNobWFyayByZXN1bHRzIGRlbW9uc3RhdGUgdGhhdCB0 aGVyZSBpcyBubwo+Pj4+Pj4+Pj4+Pj4+Pj4+IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGNoYW5n ZSBhZnRlciB0aGlzIHBhdGNoLiBGb3JrIGlzIGNhbGxlZAo+Pj4+Pj4+Pj4+Pj4+Pj4+IGluIGEK Pj4+Pj4+Pj4+Pj4+Pj4+PiB0aWdodCBsb29wIGluIGEgcHJvY2VzcyB3aXRoIDFHIG9mIHBvcHVs YXRlZCBtZW1vcnkgYW5kIHRoZSB0aW1lCj4+Pj4+Pj4+Pj4+Pj4+Pj4gZm9yCj4+Pj4+Pj4+Pj4+ Pj4+Pj4gdGhlCj4+Pj4+Pj4+Pj4+Pj4+Pj4gZnVuY3Rpb24gdG8gZXhlY3V0ZSBpcyBtZWFzdXJl ZC4gMTAwIGl0ZXJhdGlvbnMgcGVyIHJ1biwgOCBydW5zCj4+Pj4+Pj4+Pj4+Pj4+Pj4gcGVyZm9y bWVkIG9uIGJvdGggQXBwbGUgTTIgKFZNKSBhbmQgQW1wZXJlIEFsdHJhIChiYXJlIG1ldGFsKS4K Pj4+Pj4+Pj4+Pj4+Pj4+PiBUZXN0cwo+Pj4+Pj4+Pj4+Pj4+Pj4+IHBlcmZvcm1lZCBmb3IgY2Fz ZSB3aGVyZSAxRyBtZW1vcnkgaXMgY29tcHJpc2VkIG9mIG9yZGVyLTAKPj4+Pj4+Pj4+Pj4+Pj4+ PiBmb2xpb3MgYW5kCj4+Pj4+Pj4+Pj4+Pj4+Pj4gY2FzZSB3aGVyZSBjb21wcmlzZWQgb2YgcHRl LW1hcHBlZCBvcmRlci05IGZvbGlvcy4gTmVnYXRpdmUgaXMKPj4+Pj4+Pj4+Pj4+Pj4+PiBmYXN0 ZXIsCj4+Pj4+Pj4+Pj4+Pj4+Pj4gcG9zaXRpdmUgaXMgc2xvd2VyLCBjb21wYXJlZCB0byBiYXNl bGluZSB1cG9uIHdoaWNoIHRoZSBzZXJpZXMgaXMKPj4+Pj4+Pj4+Pj4+Pj4+PiBiYXNlZDoKPj4+ Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+IHwgQXBwbGUgTTIgVk3CoMKgIHwgb3JkZXIt MCAocHRlLW1hcCkgfCBvcmRlci05IChwdGUtbWFwKSB8Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBmb3Jr wqDCoMKgwqDCoMKgwqDCoMKgIHwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0t LS18Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBtaWNyb2JlbmNowqDCoMKgIHzCoMKgwqAgbWVhbiB8wqDC oCBzdGRldiB8wqDCoMKgIG1lYW4gfMKgwqAgc3RkZXYgfAo+Pj4+Pj4+Pj4+Pj4+Pj4+IHwtLS0t LS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfAo+Pj4+ Pj4+Pj4+Pj4+Pj4+IHwgYmFzZWxpbmXCoMKgwqDCoMKgIHzCoMKgwqAgMC4wJSB8wqDCoMKgIDEu MSUgfMKgwqDCoCAwLjAlIHzCoMKgwqAgMS4yJSB8Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBhZnRlci1j aGFuZ2XCoCB8wqDCoCAtMS4wJSB8wqDCoMKgIDIuMCUgfMKgwqAgLTAuMSUgfMKgwqDCoCAxLjEl IHwKPj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+IHwgQW1wZXJlIEFsdHJhwqAgfCBv cmRlci0wIChwdGUtbWFwKSB8IG9yZGVyLTkgKHB0ZS1tYXApIHwKPj4+Pj4+Pj4+Pj4+Pj4+PiB8 IGZvcmvCoMKgwqDCoMKgwqDCoMKgwqAgfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0t LS0tLS0tLXwKPj4+Pj4+Pj4+Pj4+Pj4+PiB8IG1pY3JvYmVuY2jCoMKgwqAgfMKgwqDCoCBtZWFu IHzCoMKgIHN0ZGV2IHzCoMKgwqAgbWVhbiB8wqDCoCBzdGRldiB8Cj4+Pj4+Pj4+Pj4+Pj4+Pj4g fC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS18 Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gfCBiYXNlbGluZcKgwqDCoMKgwqAgfMKgwqDCoCAwLjAlIHzCoMKg wqAgMS4wJSB8wqDCoMKgIDAuMCUgfMKgwqDCoCAwLjElIHwKPj4+Pj4+Pj4+Pj4+Pj4+PiB8IGFm dGVyLWNoYW5nZcKgIHzCoMKgIC0wLjElIHzCoMKgwqAgMS4yJSB8wqDCoCAtMC4xJSB8wqDCoMKg IDAuMSUgfAo+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gVGVzdGVkLWJ5OiBKb2hu IEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gUmV2aWV3ZWQt Ynk6IEFsaXN0YWlyIFBvcHBsZSA8YXBvcHBsZUBudmlkaWEuY29tPgo+Pj4+Pj4+Pj4+Pj4+Pj4+ IFNpZ25lZC1vZmYtYnk6IFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2JlcnRzQGFybS5jb20+Cj4+Pj4+ Pj4+Pj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBpbmNsdWRl L2xpbnV4L3BndGFibGUuaCB8IDgwCj4+Pj4+Pj4+Pj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPj4+Pj4+Pj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIG1tL21l bW9yeS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgOTIKPj4+Pj4+Pj4+Pj4+Pj4+PiArKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4+Pj4+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqAgMiBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgMzMgZGVs ZXRpb25zKC0pCj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9wZ3RhYmxlLmggYi9pbmNsdWRlL2xpbnV4L3BndGFibGUuaAo+Pj4+Pj4+ Pj4+Pj4+Pj4+IGluZGV4IGFmNzYzOWMzYjBhMy4uZGI5M2ZiODE0NjVhIDEwMDY0NAo+Pj4+Pj4+ Pj4+Pj4+Pj4+IC0tLSBhL2luY2x1ZGUvbGludXgvcGd0YWJsZS5oCj4+Pj4+Pj4+Pj4+Pj4+Pj4g KysrIGIvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKPj4+Pj4+Pj4+Pj4+Pj4+PiBAQCAtMjA1LDYg KzIwNSwyNyBAQCBzdGF0aWMgaW5saW5lIGludCBwbWRfeW91bmcocG1kX3QgcG1kKQo+Pj4+Pj4+ Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgI2RlZmluZSBhcmNoX2ZsdXNoX2xhenlfbW11X21v ZGUoKcKgwqDCoCBkbyB7fSB3aGlsZSAoMCkKPj4+Pj4+Pj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgICNlbmRpZgo+Pj4+Pj4+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgKyNpZm5kZWYgcHRl X2JhdGNoX3JlbWFpbmluZwo+Pj4+Pj4+Pj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4+Pj4+Pj4+PiAr ICogcHRlX2JhdGNoX3JlbWFpbmluZyAtIE51bWJlciBvZiBwYWdlcyBmcm9tIGFkZHIgdG8gbmV4 dCBiYXRjaAo+Pj4+Pj4+Pj4+Pj4+Pj4+IGJvdW5kYXJ5Lgo+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBA cHRlOiBQYWdlIHRhYmxlIGVudHJ5IGZvciB0aGUgZmlyc3QgcGFnZS4KPj4+Pj4+Pj4+Pj4+Pj4+ PiArICogQGFkZHI6IEFkZHJlc3Mgb2YgdGhlIGZpcnN0IHBhZ2UuCj4+Pj4+Pj4+Pj4+Pj4+Pj4g KyAqIEBlbmQ6IEJhdGNoIGNlaWxpbmcgKGUuZy4gZW5kIG9mIHZtYSkuCj4+Pj4+Pj4+Pj4+Pj4+ Pj4gKyAqCj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIFNvbWUgYXJjaGl0ZWN0dXJlcyAoYXJtNjQpIGNh biBlZmZpY2llbnRseSBtb2RpZnkgYSBjb250aWd1b3VzCj4+Pj4+Pj4+Pj4+Pj4+Pj4gYmF0Y2gg b2YKPj4+Pj4+Pj4+Pj4+Pj4+PiBwdGVzLgo+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBJbiBzdWNoIGNh c2VzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlbWFpbmluZyBudW1iZXIgb2YKPj4+Pj4+ Pj4+Pj4+Pj4+PiBwYWdlcyB0bwo+Pj4+Pj4+Pj4+Pj4+Pj4+IHRoZSBlbmQKPj4+Pj4+Pj4+Pj4+ Pj4+PiArICogb2YgdGhlIGN1cnJlbnQgYmF0Y2gsIGFzIGRlZmluZWQgYnkgYWRkci4gVGhpcyBj YW4gYmUgdXNlZnVsCj4+Pj4+Pj4+Pj4+Pj4+Pj4gd2hlbgo+Pj4+Pj4+Pj4+Pj4+Pj4+IGl0ZXJh dGluZwo+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBvdmVyIHB0ZXMuCj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAq Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIE1heSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcmNoaXRlY3R1 cmUsIGVsc2UgYmF0Y2ggc2l6ZSBpcwo+Pj4+Pj4+Pj4+Pj4+Pj4+IGFsd2F5cyAxLgo+Pj4+Pj4+ Pj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4+Pj4+Pj4+PiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQgcHRlX2JhdGNoX3JlbWFpbmluZyhwdGVfdCBwdGUsIHVuc2lnbmVkCj4+Pj4+Pj4+Pj4+Pj4+ Pj4gbG9uZwo+Pj4+Pj4+Pj4+Pj4+Pj4+IGFkZHIsCj4+Pj4+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBlbmQp Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gK3sKPj4+Pj4+Pj4+Pj4+Pj4+PiArwqDCoMKgIHJldHVybiAxOwo+ Pj4+Pj4+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyNlbmRpZgo+Pj4+Pj4+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+Pj4+Pj4+IEl0J3MgYSBzaGFtZSB3ZSBub3cgbG9zZSB0aGUgb3B0aW1pemF0 aW9uIGZvciBhbGwgb3RoZXIKPj4+Pj4+Pj4+Pj4+Pj4+IGFyY2h0aWVjdHVyZXMuCj4+Pj4+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4gV2FzIHRoZXJlIG5vIHdheSB0byBoYXZlIHNvbWUgYmFz aWMgYmF0Y2hpbmcgbWVjaGFuaXNtIHRoYXQgZG9lc24ndAo+Pj4+Pj4+Pj4+Pj4+Pj4gcmVxdWly ZQo+Pj4+Pj4+Pj4+Pj4+Pj4gYXJjaAo+Pj4+Pj4+Pj4+Pj4+Pj4gc3BlY2lmaWNzPwo+Pj4+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+PiBJIHRyaWVkIGEgYnVuY2ggb2YgdGhpbmdzIGJ1dCB1bHRp bWF0ZWx5IHRoZSB3YXkgSSd2ZSBkb25lIGl0IHdhcyB0aGUKPj4+Pj4+Pj4+Pj4+Pj4gb25seQo+ Pj4+Pj4+Pj4+Pj4+PiB3YXkKPj4+Pj4+Pj4+Pj4+Pj4gdG8gcmVkdWNlIHRoZSBvcmRlci0wIGZv cmsgcmVncmVzc2lvbiB0byAwLgo+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+PiBNeSBvcmln aW5hbCB2MyBwb3N0aW5nIHdhcyBjb3N0aW5nIDUlIGV4dHJhIGFuZCBldmVuIG15IGZpcnN0IGF0 dGVtcHQKPj4+Pj4+Pj4+Pj4+Pj4gYXQgYW4KPj4+Pj4+Pj4+Pj4+Pj4gYXJjaC1zcGVjaWZpYyB2 ZXJzaW9uIHRoYXQgZGlkbid0IHJlc29sdmUgdG8gYSBjb21waWxlLXRpbWUKPj4+Pj4+Pj4+Pj4+ Pj4gY29uc3RhbnQgMQo+Pj4+Pj4+Pj4+Pj4+PiBzdGlsbAo+Pj4+Pj4+Pj4+Pj4+PiBjb3N0IGFu IGV4dHJhIDMlLgo+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4K Pj4+Pj4+Pj4+Pj4+Pj4+IEknZCBoYXZlIHRob3VnaHQgdGhhdCBzb21ldGhpbmcgdmVyeSBiYXNp YyB3b3VsZCBoYXZlIHdvcmtlZCBsaWtlOgo+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+ ICogQ2hlY2sgaWYgUFRFIGlzIHRoZSBzYW1lIHdoZW4gc2V0dGluZyB0aGUgUEZOIHRvIDAuCj4+ Pj4+Pj4+Pj4+Pj4+PiAqIENoZWNrIHRoYXQgUEZOIGlzIGNvbnNlY3V0aXZlCj4+Pj4+Pj4+Pj4+ Pj4+PiAqIENoZWNrIHRoYXQgYWxsIFBGTnMgYmVsb25nIHRvIHRoZSBzYW1lIGZvbGlvCj4+Pj4+ Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+IEkgaGF2ZW4ndCB0cmllZCB0aGlzIGV4YWN0IGFwcHJv YWNoLCBidXQgSSdkIGJlIHN1cnByaXNlZCBpZiBJIGNhbgo+Pj4+Pj4+Pj4+Pj4+PiBnZXQKPj4+ Pj4+Pj4+Pj4+Pj4gdGhlCj4+Pj4+Pj4+Pj4+Pj4+IHJlZ3Jlc3Npb24gdW5kZXIgNCUgd2l0aCB0 aGlzLiBGdXJ0aGVyIGFsb25nIHRoZSBzZXJpZXMgSSBzcGVudCBhCj4+Pj4+Pj4+Pj4+Pj4+IGxv dCBvZgo+Pj4+Pj4+Pj4+Pj4+PiB0aW1lCj4+Pj4+Pj4+Pj4+Pj4+IGhhdmluZyB0byBmaWRkbGUg d2l0aCB0aGUgYXJtNjQgaW1wbGVtZW50YXRpb247IGV2ZXJ5IGNvbmRpdGlvbmFsIGFuZAo+Pj4+ Pj4+Pj4+Pj4+PiBldmVyeQo+Pj4+Pj4+Pj4+Pj4+PiBtZW1vcnkgcmVhZCAoZXZlbiB3aGVuIGlu IGNhY2hlKSB3YXMgYSBwcm9ibGVtLiBUaGVyZSBpcyBqdXN0IHNvCj4+Pj4+Pj4+Pj4+Pj4+IGxp dHRsZSBpbgo+Pj4+Pj4+Pj4+Pj4+PiB0aGUKPj4+Pj4+Pj4+Pj4+Pj4gaW5uZXIgbG9vcCB0aGF0 IGV2ZXJ5IGluc3RydWN0aW9uIG1hdHRlcnMuIChBdCBsZWFzdCBvbiBBbXBlcmUgQWx0cmEKPj4+ Pj4+Pj4+Pj4+Pj4gYW5kCj4+Pj4+Pj4+Pj4+Pj4+IEFwcGxlCj4+Pj4+Pj4+Pj4+Pj4+IE0yKS4K Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4gT2YgY291cnNlIGlmIHlvdSdyZSB3aWxsaW5n IHRvIHBheSB0aGF0IDQtNSUgZm9yIG9yZGVyLTAgdGhlbiB0aGUKPj4+Pj4+Pj4+Pj4+Pj4gYmVu ZWZpdCB0bwo+Pj4+Pj4+Pj4+Pj4+PiBvcmRlci05IGlzIGFyb3VuZCAxMCUgaW4gbXkgbWVhc3Vy ZW1lbnRzLiBQZXJzb25hbGx5IHRob3VnaCwgSSdkCj4+Pj4+Pj4+Pj4+Pj4+IHByZWZlciB0bwo+ Pj4+Pj4+Pj4+Pj4+PiBwbGF5Cj4+Pj4+Pj4+Pj4+Pj4+IHNhZmUgYW5kIGVuc3VyZSB0aGUgY29t bW9uIG9yZGVyLTAgY2FzZSBkb2Vzbid0IHJlZ3Jlc3MsIGFzIHlvdQo+Pj4+Pj4+Pj4+Pj4+PiBw cmV2aW91c2x5Cj4+Pj4+Pj4+Pj4+Pj4+IHN1Z2dlc3RlZC4KPj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+IEkganVzdCBoYWNrZWQgc29tZXRoaW5nIHVwLCBvbiB0b3Ag b2YgbXkgYmVsb3ZlZCBybWFwIGNsZWFudXAvYmF0Y2hpbmcKPj4+Pj4+Pj4+Pj4+PiBzZXJpZXMu IEkKPj4+Pj4+Pj4+Pj4+PiBpbXBsZW1lbnRlZCB2ZXJ5IGdlbmVyaWMgYW5kIHNpbXBsZSBiYXRj aGluZyBmb3IgbGFyZ2UgZm9saW9zIChhbGwgUFRFCj4+Pj4+Pj4+Pj4+Pj4gYml0cwo+Pj4+Pj4+ Pj4+Pj4+IGV4Y2VwdCB0aGUgUEZOIGhhdmUgdG8gbWF0Y2gpLgo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+ Pj4+Pj4+Pj4gU29tZSB2ZXJ5IHF1aWNrIHRlc3RpbmcgKGRvbid0IHRydXN0IGVhY2ggbGFzdCAl ICkgb24gSW50ZWwoUikgWGVvbihSKQo+Pj4+Pj4+Pj4+Pj4+IFNpbHZlcgo+Pj4+Pj4+Pj4+Pj4+ IDQyMTBSIENQVS4KPj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+IG9yZGVyLTA6IDAuMDE0MjEw IC0+IDAuMDEzOTY5Cj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiAtPiBBcm91bmQgMS43ICUg ZmFzdGVyCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiBvcmRlci05OiAwLjAxNDM3MyAtPiAw LjAwOTE0OQo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gLT4gQXJvdW5kIDM2LjMgJSBmYXN0 ZXIKPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiBXZWxsIEkgZ3Vlc3MgdGhhdCBzaG93cyBtZSA6 KQo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+IEknbGwgZG8gYSByZXZpZXcgYW5kIHJ1biB0aGUg dGVzdHMgb24gbXkgSFcgdG8gc2VlIGlmIGl0IGNvbmN1cnMuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+Cj4+Pj4+Pj4+Pj4+IEkgcHVzaGVkIGEgc2ltcGxlIGNvbXBpbGUgZml4dXAgKHdlIG5lZWQg cHRlX25leHRfcGZuKCkpLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gSSd2ZSBqdXN0IGJlZW4gdHJ5 aW5nIHRvIGNvbXBpbGUgYW5kIG5vdGljZWQgdGhpcy4gV2lsbCB0YWtlIGEgbG9vayBhdAo+Pj4+ Pj4+Pj4+IHlvdXIKPj4+Pj4+Pj4+PiB1cGRhdGUuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBCdXQg dXBvbiByZXZpZXcsIEkndmUgbm90aWNlZCB0aGUgcGFydCB0aGF0IEkgdGhpbmsgbWFrZXMgdGhp cyBkaWZmaWN1bHQKPj4+Pj4+Pj4+PiBmb3IKPj4+Pj4+Pj4+PiBhcm02NCB3aXRoIHRoZSBjb250 cHRlIG9wdGltaXphdGlvbjsgWW91IGFyZSBjYWxsaW5nIHB0ZXBfZ2V0KCkgZm9yIGV2ZXJ5Cj4+ Pj4+Pj4+Pj4gcHRlIGluCj4+Pj4+Pj4+Pj4gdGhlIGJhdGNoLiBXaGlsZSB0aGlzIGlzIGZ1bmN0 aW9uYWxseSBjb3JyZWN0LCBvbmNlIGFybTY0IGhhcyB0aGUgY29udHB0ZQo+Pj4+Pj4+Pj4+IGNo YW5nZXMsIGl0cyBwdGVwX2dldCgpIGhhcyB0byByZWFkIGV2ZXJ5IHB0ZSBpbiB0aGUgY29udHB0 ZSBibG9jayBpbgo+Pj4+Pj4+Pj4+IG9yZGVyIHRvCj4+Pj4+Pj4+Pj4gZ2F0aGVyIHRoZSBhY2Nl c3MgYW5kIGRpcnR5IGJpdHMuIFNvIGlmIHlvdXIgYmF0Y2hpbmcgZnVuY3Rpb24gZW5kcyB1cAo+ Pj4+Pj4+Pj4+IHdlYWxraW5nCj4+Pj4+Pj4+Pj4gYSAxNiBlbnRyeSBjb250cHRlIGJsb2NrLCB0 aGF0IHdpbGwgY2F1c2UgMTYgeCAxNiByZWFkcywgd2hpY2gga2lsbHMKPj4+Pj4+Pj4+PiBwZXJm b3JtYW5jZS4gVGhhdCdzIHdoeSBJIGFkZGVkIHRoZSBhcmNoLXNwZWNpZmljIHB0ZV9iYXRjaF9y ZW1haW5pbmcoKQo+Pj4+Pj4+Pj4+IGZ1bmN0aW9uOyB0aGlzIGFsbG93cyB0aGUgY29yZS1tbSB0 byBza2lwIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRwdGUKPj4+Pj4+Pj4+PiBibG9jayBhbmQKPj4+ Pj4+Pj4+PiBhdm9pZCBwdGVwX2dldCgpIGZvciB0aGUgMTUgdGFpbCBwdGVzLiBTbyB3ZSBlbmQg dXAgd2l0aCAxNiBSRUFEX09OQ0UoKXMKPj4+Pj4+Pj4+PiBpbnN0ZWFkCj4+Pj4+Pj4+Pj4gb2Yg MjU2Lgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gSSBjb25zaWRlcmVkIG1ha2luZyBhIHB0ZXBfZ2V0 X25veW91bmdkaXJ0eSgpIHZhcmlhbnQsIHdoaWNoIHdvdWxkIGF2b2lkCj4+Pj4+Pj4+Pj4gdGhl Cj4+Pj4+Pj4+Pj4gYml0Cj4+Pj4+Pj4+Pj4gZ2F0aGVyaW5nLiBCdXQgd2UgaGF2ZSBhIHNpbWls YXIgcHJvYmxlbSBpbiB6YXBfcHRlX3JhbmdlKCkgYW5kIHRoYXQKPj4+Pj4+Pj4+PiBmdW5jdGlv bgo+Pj4+Pj4+Pj4+IG5lZWRzIHRoZSBkaXJ0eSBiaXQgdG8gdXBkYXRlIHRoZSBmb2xpby4gU28g aXQgZG9lc24ndCB3b3JrIHRoZXJlLiAoc2VlCj4+Pj4+Pj4+Pj4gcGF0Y2ggMwo+Pj4+Pj4+Pj4+ IGluIG15IHNlcmllcykuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBJIGd1ZXNzIHlvdSBhcmUgZ29p bmcgdG8gc2F5IHRoYXQgd2Ugc2hvdWxkIGNvbWJpbmUgYm90aCBhcHByb2FjaGVzLCBzbwo+Pj4+ Pj4+Pj4+IHRoYXQKPj4+Pj4+Pj4+PiB5b3VyIGJhdGNoaW5nIGxvb3AgY2FuIHNraXAgZm9yd2Fy ZCBhbiBhcmNoLXByb3ZpZGVkIG51bWJlciBvZiBwdGVzPyBUaGF0Cj4+Pj4+Pj4+Pj4gd291bGQK Pj4+Pj4+Pj4+PiBjZXJ0YWlubHkgd29yaywgYnV0IGZlZWxzIGxpa2UgYW4gb3J0aG9nb25hbCBj aGFuZ2UgdG8gd2hhdCBJJ20gdHJ5aW5nIHRvCj4+Pj4+Pj4+Pj4gYWNoaWV2ZSA6KS4gQW55d2F5 LCBJJ2xsIHNwZW5kIHNvbWUgdGltZSBwbGF5aW5nIHdpdGggaXQgdG9kYXkuCj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4gWW91IGNhbiBvdmVyd3JpdGUgdGhlIGZ1bmN0aW9uIG9yIGFkZCBzcGVjaWFsLWNh c2luZyBpbnRlcm5hbGx5LCB5ZXMuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gUmlnaHQgbm93LCB5b3Vy IHBhdGNoIGlzIGNhbGxlZCAibW06IEJhdGNoLWNvcHkgUFRFIHJhbmdlcyBkdXJpbmcgZm9yaygp Igo+Pj4+Pj4+Pj4gYW5kIGl0Cj4+Pj4+Pj4+PiBkb2Vzbid0IGRvIGFueSBvZiB0aGF0IGJlc2lk ZXMgcHJlcGFyaW5nIGZvciBzb21lIGFybTY0IHdvcmsuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pgo+Pj4+ Pj4+PiBXZWxsIGl0IGFsbG93cyBhbiBhcmNoIHRvIG9wdC1pbiB0byBiYXRjaGluZy4gQnV0IEkg c2VlIHlvdXIgcG9pbnQuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IEhvdyBkbyB5b3Ugd2FudCB0byBoYW5k bGUgeW91ciBwYXRjaGVzPyBEbyB5b3Ugd2FudCB0byBjbGVhbiB0aGVtIHVwIGFuZAo+Pj4+Pj4+ PiBJJ2xsCj4+Pj4+Pj4+IGJhc2UgbXkgc3R1ZmYgb24gdG9wPyBPciBkbyB5b3Ugd2FudCBtZSB0 byB0YWtlIHRoZW0gYW5kIHNvcnQgaXQgYWxsIG91dD8KPj4+Pj4+Pgo+Pj4+Pj4+IFdoYXRldmVy IHlvdSBwcmVmZXIsIGl0IHdhcyBtb3N0bHkgYSBxdWljayBwcm90b3R5cGUgdG8gc2VlIGlmIHdl IGNhbgo+Pj4+Pj4+IGFjaGlldmUKPj4+Pj4+PiBkZWNlbnQgcGVyZm9ybWFuY2UuCj4+Pj4+Pgo+ Pj4+Pj4gSSdtIGFib3V0IHRvIHJ1biBpdCBvbiBBbHRyYSBhbmQgTTIuIEJ1dCBJIGFzc3VtZSBp dCB3aWxsIHNob3cgc2ltaWxhcgo+Pj4+Pj4gcmVzdWx0cy4KPj4+Pgo+Pj4+IE9LIHJlc3VsdHMg aW4sIG5vdCBsb29raW5nIGdyZWF0LCB3aGljaCBhbGlnbnMgd2l0aCBteSBwcmV2aW91cyBleHBl cmllbmNlLgo+Pj4+IFRoYXQKPj4+PiBzYWlkLCBJJ20gc2VlaW5nIHNvbWUgIkJVRzogQmFkIHBh Z2Ugc3RhdGUgaW4gcHJvY2VzcyBnbWFpbsKgIHBmbjoxMmEwOTQiIHNvCj4+Pj4gcGVyaGFwcyB0 aGVzZSByZXN1bHRzIGFyZSBub3QgdmFsaWQuLi4KPj4+Cj4+PiBJIGRpZG4ndCBzZWUgdGhhdCBz byBmYXIgb24geDg2LCBtYXliZSByZWxhdGVkIHRvIHRoZSBQRk4gZml4dXA/Cj4+Cj4+IEFsbCBJ J3ZlIGRvbmUgaXMgZGVmaW5lIFBGTl9QVEVfU0hJRlQgZm9yIGFybTY0IG9uIHRvcCBvZiB5b3Vy IGxhdGVzdCBwYXRjaDoKPj4KPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v cGd0YWJsZS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPj4gaW5kZXggYjE5 YThhZWU2ODRjLi45ZWIwZmQ2OTNkZjkgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vcGd0YWJsZS5oCj4+ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5o Cj4+IEBAIC0zNTksNiArMzU5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldF9wdGVzKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLAo+PiDCoCB9Cj4+IMKgICNkZWZpbmUgc2V0X3B0ZXMgc2V0X3B0ZXMK Pj4gwqAgKyNkZWZpbmUgUEZOX1BURV9TSElGVMKgwqDCoMKgwqDCoMKgwqDCoCBQQUdFX1NISUZU Cj4+ICsKPj4gwqAgLyoKPj4gwqDCoCAqIEh1Z2UgcHRlIGRlZmluaXRpb25zLgo+PiDCoMKgICov Cj4+Cj4+Cj4+IEFzIGFuIGFzaWRlLCBJIHRoaW5rIHRoZXJlIGlzIGEgYnVnIGluIGFybTY0J3Mg c2V0X3B0ZXMoKSBmb3IgUEEgPiA0OC1iaXQKPj4gY2FzZS4gQnV0IHRoYXQgd29uJ3QgYWZmZWN0 IHRoaXMuCj4+Cj4+Cj4+IFdpdGggVk1fREVCVUcgb24sIHRoaXMgaXMgdGhlIGZpcnN0IHdhcm5p bmcgSSBzZWUgZHVyaW5nIGJvb3Q6Cj4+Cj4+Cj4+IFvCoMKgwqAgMC4yNzgxMTBdIHBhZ2U6MDAw MDAwMDBjN2NlZDRlOCByZWZjb3VudDoxMiBtYXBjb3VudDowCj4+IG1hcHBpbmc6MDAwMDAwMDBi MmY5NzM5YiBpbmRleDoweDFhOCBwZm46MHgxYmZmMzAKPj4gW8KgwqDCoCAwLjI3ODc0Ml0gaGVh ZDowMDAwMDAwMGM3Y2VkNGU4IG9yZGVyOjIgZW50aXJlX21hcGNvdW50OjAKPj4gbnJfcGFnZXNf bWFwcGVkOjIgcGluY291bnQ6MAo+IAo+IF4gQWgsIHlvdSBhcmUgcnVubmluZyB3aXRoIG1USFAu IExldCBtZSBwbGF5IHdpdGggdGhhdC4KCkVyci4uLiBJdHMgaW4gbW0tdW5zdGFibGUsIGJ1dCBJ J20gbm90IGVuYWJsaW5nIGFueSBzaXplcy4gSXQgc2hvdWxkIG9ubHkgYmUgc2V0CnVwIGZvciBQ TUQtc2l6ZWQgVEhQLgoKSSBhbSB1c2luZyBYRlMgdGhvdWdoLCBzbyBJIGltYWdpbmUgaXRzIGEg ZmlsZSBmb2xpby4KCkkndmUgcmViYXNlZCB5b3VyIHJtYXAgY2xlYW51cCBhbmQgZm9yayBiYXRj aGluZyB0byB0aGUgdmVyc2lvbiBvZiBtbS11bnN0YWJsZQp0aGF0IEkgd2FzIGRvaW5nIGFsbCBt eSBvdGhlciB0ZXN0aW5nIHdpdGggc28gSSBjb3VsZCBjb21wYXJlIG51bWJlcnMuIEJ1dCBpdHMK bm90IHZlcnkgb2xkIChwZXJoYXBzIGEgd2VlaykuIEFsbCB0aGUgcGF0Y2hlcyBhcHBsaWVkIHdp dGhvdXQgYW55IGNvbmZsaWN0LgoKPiAKPiBUaGUgd2FybmluZyB3b3VsZCBpbmRpY2F0ZSB0aGF0 IG5yIGlzIHRvbyBsYXJnZSAob3Igc29tZXRoaW5nIGVsc2UgaXMgbWVzc2VkIHVwKS4KPiAKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==