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 CA117C4167B for ; Tue, 5 Dec 2023 11:06: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: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=oQvbrDrqqlq44vWfxK97SdfE7QVtsj9k4oMburJuq0c=; b=CBorkYYPaNwwfP ljf8My46DlONHUCUqbhIf+hQXtp7mdiOeAVcteG5e0Qb6DSfYUy+IQrERFbnMHR0yAVYbUvn7jUz5 ypt0uFweVEhyjqkcd0+v7VsaNmK4ntHbIXh2vca092dD52/V2X90sJFkXrc48IY+8JCZuQ1ZNNPC6 CMQaJb7b+yPiO+TQv0LIcVjpfaYbiX+k60TDrBHz6GnnW1F3+6t4XLBOueAnl9S+VMGGyLoLFLQTy d0HybGd0l4Xw2ylO69NU3W/fv6vOb8ITmfLDcTBa+HnO8QXluPhTHKc9KcsHlqAHIRvXcQVNIL513 ROeI0/JPrPKdHSxzPNXw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rATFJ-0073hf-0G; Tue, 05 Dec 2023 11:05: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 1rATFF-0073gl-2U for linux-arm-kernel@lists.infradead.org; Tue, 05 Dec 2023 11:05: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 96620139F; Tue, 5 Dec 2023 03:06:27 -0800 (PST) Received: from [10.57.73.130] (unknown [10.57.73.130]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6A52E3F5A1; Tue, 5 Dec 2023 03:05:37 -0800 (PST) Message-ID: Date: Tue, 5 Dec 2023 11:05:35 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v8 00/10] Multi-size THP for anonymous memory Content-Language: en-GB To: Barry Song <21cnbao@gmail.com> Cc: Andrew Morton , Matthew Wilcox , Yin Fengwei , David Hildenbrand , Yu Zhao , Catalin Marinas , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , "Kirill A. Shutemov" , John Hubbard , David Rientjes , Vlastimil Babka , Hugh Dickins , Kefeng Wang , Alistair Popple , linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20231204102027.57185-1-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231205_030541_927377_93C5F73A X-CRM114-Status: GOOD ( 52.12 ) 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 T24gMDUvMTIvMjAyMyAwMzoyOCwgQmFycnkgU29uZyB3cm90ZToKPiBPbiBNb24sIERlYyA0LCAy MDIzIGF0IDExOjIw4oCvUE0gUnlhbiBSb2JlcnRzIDxyeWFuLnJvYmVydHNAYXJtLmNvbT4gd3Jv dGU6Cj4+Cj4+IEhpIEFsbCwKPj4KPj4gQSBuZXcgd2VlaywgYSBuZXcgdmVyc2lvbiwgYSBuZXcg bmFtZS4uLiBUaGlzIGlzIHY4IG9mIGEgc2VyaWVzIHRvIGltcGxlbWVudAo+PiBtdWx0aS1zaXpl IFRIUCAobVRIUCkgZm9yIGFub255bW91cyBtZW1vcnkgKHByZXZpb3VzbHkgY2FsbGVkICJzbWFs bC1zaXplZCBUSFAiCj4+IGFuZCAibGFyZ2UgYW5vbnltb3VzIGZvbGlvcyIpLiBNYXR0aGV3IG9i amVjdGVkIHRvICJzbWFsbCBodWdlIiBzbyBob3BlZnVsbHkKPj4gdGhpcyBmYXJlcyBiZXR0ZXIu Cj4+Cj4+IFRoZSBvYmplY3RpdmUgb2YgdGhpcyBpcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGJ5 IGFsbG9jYXRpbmcgbGFyZ2VyIGNodW5rcyBvZgo+PiBtZW1vcnkgZHVyaW5nIGFub255bW91cyBw YWdlIGZhdWx0czoKPj4KPj4gMSkgU2luY2UgU1cgKHRoZSBrZXJuZWwpIGlzIGRlYWxpbmcgd2l0 aCBsYXJnZXIgY2h1bmtzIG9mIG1lbW9yeSB0aGFuIGJhc2UKPj4gICAgcGFnZXMsIHRoZXJlIGFy ZSBlZmZpY2llbmN5IHNhdmluZ3MgdG8gYmUgaGFkOyBmZXdlciBwYWdlIGZhdWx0cywgYmF0Y2hl ZCBQVEUKPj4gICAgYW5kIFJNQVAgbWFuaXB1bGF0aW9uLCByZWR1Y2VkIGxydSBsaXN0LCBldGMu IEluIHNob3J0LCB3ZSByZWR1Y2Uga2VybmVsCj4+ICAgIG92ZXJoZWFkLiBUaGlzIHNob3VsZCBi ZW5lZml0IGFsbCBhcmNoaXRlY3R1cmVzLgo+PiAyKSBTaW5jZSB3ZSBhcmUgbm93IG1hcHBpbmcg cGh5c2ljYWxseSBjb250aWd1b3VzIGNodW5rcyBvZiBtZW1vcnksIHdlIGNhbiB0YWtlCj4+ICAg IGFkdmFudGFnZSBvZiBIVyBUTEIgY29tcHJlc3Npb24gdGVjaG5pcXVlcy4gQSByZWR1Y3Rpb24g aW4gVExCIHByZXNzdXJlCj4+ICAgIHNwZWVkcyB1cCBrZXJuZWwgYW5kIHVzZXIgc3BhY2UuIGFy bTY0IHN5c3RlbXMgaGF2ZSAyIG1lY2hhbmlzbXMgdG8gY29hbGVzY2UKPj4gICAgVExCIGVudHJp ZXM7ICJ0aGUgY29udGlndW91cyBiaXQiIChhcmNoaXRlY3R1cmFsKSBhbmQgSFBBICh1YXJjaCku Cj4+Cj4+IFRoaXMgdmVyc2lvbiBjaGFuZ2VzIHRoZSBuYW1lIGFuZCB0aWRpZXMgdXAgc29tZSBv ZiB0aGUga2VybmVsIGNvZGUgYW5kIHRlc3QKPj4gY29kZSwgYmFzZWQgb24gZmVlZGJhY2sgYWdh aW5zdCB2NyAoc2VlIGNoYW5nZSBsb2cgZm9yIGRldGFpbHMpLgo+Pgo+PiBCeSBkZWZhdWx0LCB0 aGUgZXhpc3RpbmcgYmVoYXZpb3VyIChhbmQgcGVyZm9ybWFuY2UpIGlzIG1haW50YWluZWQuIFRo ZSB1c2VyCj4+IG11c3QgZXhwbGljaXRseSBlbmFibGUgbXVsdGktc2l6ZSBUSFAgdG8gc2VlIHRo ZSBwZXJmb3JtYW5jZSBiZW5lZml0LiBUaGlzIGlzCj4+IGRvbmUgdmlhIGEgbmV3IHN5c2ZzIGlu dGVyZmFjZSAoYXMgcmVjb21tZW5kZWQgYnkgRGF2aWQgSGlsZGVuYnJhbmQgLSB0aGFua3MgdG8K Pj4gRGF2aWQgZm9yIHRoZSBzdWdnZXN0aW9uKSEgVGhpcyBpbnRlcmZhY2UgaXMgaW5zcGlyZWQg YnkgdGhlIGV4aXN0aW5nCj4+IHBlci1odWdlcGFnZS1zaXplIHN5c2ZzIGludGVyZmFjZSB1c2Vk IGJ5IGh1Z2V0bGIsIHByb3ZpZGVzIGZ1bGwgYmFja3dhcmRzCj4+IGNvbXBhdGliaWxpdHkgd2l0 aCB0aGUgZXhpc3RpbmcgUE1ELXNpemUgVEhQIGludGVyZmFjZSwgYW5kIHByb3ZpZGVzIGEgYmFz ZSBmb3IKPj4gZnV0dXJlIGV4dGVuc2liaWxpdHkuIFNlZSBbOF0gZm9yIGRldGFpbGVkIGRpc2N1 c3Npb24gb2YgdGhlIGludGVyZmFjZS4KPj4KPj4gVGhpcyBzZXJpZXMgaXMgYmFzZWQgb24gbW0t dW5zdGFibGUgKDcxNWI2N2FkZjRjOCkuCj4+Cj4+Cj4+IFByZXJlcXVpc2l0ZXMKPj4gPT09PT09 PT09PT09PQo+Pgo+PiBTb21lIHdvcmsgaXRlbXMgaWRlbnRpZmllZCBhcyBiZWluZyBwcmVyZXF1 aXNpdGVzIGFyZSBsaXN0ZWQgb24gcGFnZSAzIGF0IFs5XS4KPj4gVGhlIHN1bW1hcnkgaXM6Cj4+ Cj4+IHwgaXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdGF0dXMgICAgICAgICAgICAg ICAgICB8Cj4+IHw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS18Cj4+IHwgbWxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbiBtYWlu bGluZSAodjYuNykgICAgICB8Cj4+IHwgbWFkdmlzZSAgICAgICAgICAgICAgICAgICAgICAgfCBJ biBtYWlubGluZSAodjYuNikgICAgICB8Cj4+IHwgY29tcGFjdGlvbiAgICAgICAgICAgICAgICAg ICAgfCB2MSBwb3N0ZWQgWzEwXSAgICAgICAgICB8Cj4+IHwgbnVtYSBiYWxhbmNpbmcgICAgICAg ICAgICAgICAgfCBJbnZlc3RpZ2F0ZWQ6IHNlZSBiZWxvdyB8Cj4+IHwgdXNlci10cmlnZ2VyZWQg cGFnZSBtaWdyYXRpb24gfCBJbiBtYWlubGluZSAodjYuNykgICAgICB8Cj4+IHwga2h1Z2VwYWdl ZCBjb2xsYXBzZSAgICAgICAgICAgfCBJbiBtYWlubGluZSAoTk9QKSAgICAgICB8Cj4+Cj4+IE9u IE5VTUEgYmFsYW5jaW5nLCB3aGljaCBjdXJyZW50bHkgaWdub3JlcyBhbnkgUFRFLW1hcHBlZCBU SFBzIGl0IGVuY291bnRlcnMsCj4+IEpvaG4gSHViYmFyZCBoYXMgaW52ZXN0aWdhdGVkIHRoaXMg YW5kIGNvbmNsdWRlZCB0aGF0IGl0IGlzIEEpIG5vdCBjbGVhciBhdCB0aGUKPj4gbW9tZW50IHdo YXQgYSBiZXR0ZXIgcG9saWN5IG1pZ2h0IGJlIGZvciBQVEUtbWFwcGVkIFRIUCBhbmQgQikgcXVl c3Rpb25zIHdoZXRoZXIKPj4gdGhpcyBzaG91bGQgcmVhbGx5IGJlIGNvbnNpZGVyZWQgYSBwcmVy ZXF1aXNpdGUgZ2l2ZW4gbm8gcmVncmVzc2lvbiBpcyBjYXVzZWQKPj4gZm9yIHRoZSBkZWZhdWx0 ICJtdWx0aS1zaXplIFRIUCBkaXNhYmxlZCIgY2FzZSwgYW5kIHRoZXJlIGlzIG5vIGNvcnJlY3Ru ZXNzCj4+IGlzc3VlIHdoZW4gaXQgaXMgZW5hYmxlZCAtIGl0cyBqdXN0IGEgcG90ZW50aWFsIGZv ciBub24tb3B0aW1hbCBwZXJmb3JtYW5jZS4KPj4KPj4gSWYgdGhlcmUgYXJlIG5vIGRpc2FncmVl bWVudHMgYWJvdXQgcmVtb3ZpbmcgbnVtYSBiYWxhbmNpbmcgZnJvbSB0aGUgbGlzdCAobm9uZQo+ PiB3ZXJlIHJhaXNlZCB3aGVuIEkgZmlyc3QgcG9zdGVkIHRoaXMgY29tbWVudCBhZ2FpbnN0IHY3 KSwgdGhlbiB0aGF0IGp1c3QgbGVhdmVzCj4+IGNvbXBhY3Rpb24gd2hpY2ggaXMgaW4gcmV2aWV3 IG9uIGxpc3QgYXQgdGhlIG1vbWVudC4KPj4KPj4gSSByZWFsbHkgd291bGQgbGlrZSB0byBnZXQg dGhpcyBzZXJpZXMgKGFuZCBpdHMgcmVtYWluaW5nIGNvbWFwY3Rpb24KPj4gcHJlcmVxdWlzaXRl KSBpbiBmb3IgdjYuOC4gSSBhY2NlcHQgdGhhdCBpdCBtYXkgYmUgYSBiaXQgb3B0aW1pc3RpYyBh dCB0aGlzCj4+IHBvaW50LCBidXQgbGV0cyBzZWUgd2hlcmUgd2UgZ2V0IHRvIHdpdGggcmV2aWV3 Pwo+Pgo+IAo+IEhpIFJ5YW4sCj4gCj4gQSBxdWVzdGlvbiBidXQgaSBkb24ndCB0aGluayBpdCBz aG91bGQgYmxvY2sgdGhpcyBzZXJpZXMsICBkbyB3ZSBoYXZlIGFueSBwbGFuCj4gdG8gZXh0ZW5k IC9wcm9jL21lbWluZm8sIC9wcm9jL3BpZC9zbWFwcywgL3Byb2Mvdm1zdGF0IHRvIHByZXNlbnQg c29tZQo+IGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgbmV3IG11bHRpLXNpemUgVEhQLgo+IAo+ IGUuZyBob3cgbWFueSBmb2xpb3MgaW4gZWFjaC1zaXplIGZvciB0aGUgc3lzdGVtLCBob3cgbWFu eSBtdWx0aS1zaXplIGZvbGlvcyBMUlUsCj4gaG93IG1hbnkgbGFyZ2UgZm9saW9zIGluIGVhY2gg Vk1BIGV0Yy4KPiAKPiBJbiBwcm9kdWN0cyBhbmQgbGFicywgd2UgbmVlZCBzb21lIGhlYWx0aCBt b25pdG9ycyB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbQo+IHN0YXR1cyBpcyB2aXNpYmxlIGFuZCB3 b3JrcyBhcyBleHBlY3RlZC4gcmlnaHQgbm93LCBpIGZlZWwgaSBhbSBsaWtlCj4gYmxpbmRseSBl eHBsb3JpbmcKPiB0aGUgc3lzdGVtIHdpdGhvdXQgdGhvc2Ugc3RhdGlzdGljcy4KClllcyBpdCdz IGRlZmluaXRlbHkgb24gdGhlIGxpc3QuIEkgaGFkIGEgcGF0Y2ggaW4gdjYgdGhhdCBhZGRlZCB2 YXJpb3VzIHN0YXRzLgpCdXQgYWZ0ZXIgZGlzY3Vzc2lvbiB3aXRoIERhdmlkLCBpdCBiZWNhbWUg Y2xlYXIgdGhlcmUgd2VyZSBhIGZldyBpc3N1ZXMgd2l0aAp0aGUgaW1wbGVtZW50YXRpb24gYW5k IEkgcmlwcGVkIGl0IG91dC4gV2UgYWxzbyBkZWNpZGVkIHRoYXQgc2luY2UgdGhlIHBhZ2UKY2Fj aGUgYWxyZWFkeSB1c2VzIGxhcmdlIGZvbGlvcyBhbmQgd2UgZG9uJ3QgaGF2ZSBjb3VudGVycyBm b3IgdGhvc2UsIHdlIGNvdWxkCnByb2JhYmx5IGxpdmUgKGluaXRpYWxseSBhdCBsZWFzdCkgd2l0 aG91dCBjb3VudGVycyBmb3IgbXVsdGktc2l6ZSBUSFAgdG9vLiBCdXQKeW91IGFyZSB0aGUgc2Vj b25kIHBlcnNvbiB0byByYWlzZSB0aGlzIGluIGFzIG1hbnkgd2Vla3MsIHNvIGNsZWFybHkgdGhp cyBzaG91bGQKYmUgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdCBmb3IgZW5oYW5jZW1lbnRzIGFmdGVy IHRoaXMgaW5pdGlhbCBtZXJnZS4KCkZvciBub3csIHlvdSBjYW4gcGFyc2UgL3Byb2MvPHBpZD4v cGFnZW1hcCB0byBzZWUgaG93IHdlbGwgbXVsdGktc2l6ZSBUSFAgaXMKYmVpbmcgdXRpbGl6ZWQu IFRoYXQncyBub3QgYSBzaW1wbGUgaW50ZXJmYWNlIHRob3VnaC4gWXUgWmhvdSBzaGFyZWQgYSBQ eXRob24Kc2NyaXB0IGEgd2hpbGUgYmFjay4gSSB3b25kZXIgaWYgdGhlcmUgaXMgdmFsdWUgaW4g dGlkeWluZyB0aGF0IHVwIGFuZCBwdXR0aW5nCml0IGluIHRvb2xzL21tIGluIHRoZSBzaG9ydCB0 ZXJtPwoKVGhlcmUgd2VyZSAyIG1haW4gaXNzdWVzIHdpdGggdGhlIHByZXZpb3VzIGltcGxlbWVu dGF0aW9uOgoKMSkgV2hhdCBzaG91bGQgdGhlIHNlbWFudGljIG9mIGEgY291bnRlciBiZT8gQmVj YXVzZSBhIFBURS1tYXBwZWQgVEhQIGNhbiBiZQpwYXJ0aWFsbHkgdW5tYXBwZWQgb3IgbXJlbWFw cGVkLiBTbyBzaG91bGQgd2UgY291bnQgbnVtYmVyIG9mIHBhZ2VzIGZyb20gYSBmb2xpbwpvZiBh IGdpdmVuIHNpemUgdGhhdCBhcmUgbWFwcGVkIChlYXN5KSBvciBzaG91bGQgd2Ugb25seSBjb3Vu dCB3aGVuIHRoZSB3aG9sZQpmb2xpbyBpcyBjb250aWd1b3VzbHkgbWFwcGVkPyAoSSdtIHN1cmUg dGhlcmUgYXJlIG1hbnkgb3RoZXIgc2VtYW50aWNzIHdlIGNvdWxkCmNvbnNpZGVyKS4gVGhlIGxh dHRlciBpcyBub3QgZWFzeSB0byBzcG90IGF0IHRoZSBtb21lbnQgLSBwZXJoYXBzIHRoZSB3b3Jr IERhdmlkCmhhcyBiZWVuIGRvaW5nIG9uIHRpZHlpbmcgdXAgdGhlIHJtYXAgZnVuY3Rpb25zIG1p Z2h0IGhlbHA/CgoyKSBIb3cgc2hvdWxkIHdlIGV4cG9zZSB0aGUgaW5mbz8gVGhlcmUgaGFzIGJl ZW4gcHVzaGJhY2sgZm9yIGV4dGVuZGluZyBmaWxlcyBpbgpzeXNmcyB0aGF0IGV4cG9zZSBtdWx0 aXBsZSBwaWVjZXMgb2YgZGF0YSwgc28gRGF2aWQgaGFzIHN1Z2dlc3RlZCB0aGF0IGluIHRoZQps b25nIHRlcm0gaXQgbWlnaHQgYmUgZ29vZCB0byBjb21wbGV0ZWx5IHJlZGVzaWduIHRoZSBzdGF0 cyBpbnRlcmZhY2UuCgpJdCdzIGNlcnRhaW5seSBzb21ldGhpbmcgdGhhdCBuZWVkcyBhIGxvdCBt b3JlIGRpc2N1c3Npb24gLSBpbnB1dCBlbmNvdXJhZ2VkIQoKVGhhbmtzLApSeWFuCgoKPiAKPj4K Pj4gVGVzdGluZwo+PiA9PT09PT09Cj4+Cj4+IFRoZSBzZXJpZXMgaW5jbHVkZXMgcGF0Y2hlcyBm b3IgbW0gc2VsZnRlc3RzIHRvIGVubGlnaHRlbiB0aGUgY293IGFuZCBraHVnZXBhZ2VkCj4+IHRl c3RzIHRvIGV4cGxpY2l0bHkgdGVzdCB3aXRoIG11bHRpLXNpemUgVEhQLCBpbiB0aGUgc2FtZSB3 YXkgdGhhdCBQTUQtc2l6ZWQKPj4gVEhQIGlzIHRlc3RlZC4gVGhlIG5ldyB0ZXN0cyBhbGwgcGFz cywgYW5kIG5vIHJlZ3Jlc3Npb25zIGFyZSBvYnNlcnZlZCBpbiB0aGUgbW0KPj4gc2VsZnRlc3Qg c3VpdGUuIEkndmUgYWxzbyBydW4gbXkgdXN1YWwga2VybmVsIGNvbXBpbGF0aW9uIGFuZCBqYXZh IHNjcmlwdAo+PiBiZW5jaG1hcmtzIHdpdGhvdXQgYW55IGlzc3Vlcy4KPj4KPj4gUmVmZXIgdG8g bXkgcGVyZm9ybWFuY2UgbnVtYmVycyBwb3N0ZWQgd2l0aCB2NiBbNl0uIChUaGVzZSBhcmUgZm9y IG11bHRpLXNpemUKPj4gVEhQIG9ubHkgLSB0aGV5IGRvIG5vdCBpbmNsdWRlIHRoZSBhcm02NCBj b250cHRlIGZvbGxvdy1vbiBzZXJpZXMpLgo+Pgo+PiBKb2huIEh1YmJhcmQgYXQgTnZpZGlhIGhh cyBpbmRpY2F0ZWQgZHJhbWF0aWMgMTB4IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBmb3IKPj4g c29tZSB3b3JrbG9hZHMgYXQgWzExXS4gKE9ic2VydmVkIHVzaW5nIHY2IG9mIHRoaXMgc2VyaWVz IGFzIHdlbGwgYXMgdGhlIGFybTY0Cj4+IGNvbnRwdGUgc2VyaWVzKS4KPj4KPj4gS2VmZW5nIFdh bmcgYXQgSHVhd2VpIGhhcyBhbHNvIGluZGljYXRlZCBoZSBzZWVzIGltcHJvdmVtZW50cyBhdCBb MTJdIGFsdGhvdWdoCj4+IHRoZXJlIGFyZSBzb21lIGxhdGVuY3kgcmVncmVzc2lvbnMgYWxzby4K Pj4KPj4KPj4gQ2hhbmdlcyBzaW5jZSB2NyBbN10KPj4gPT09PT09PT09PT09PT09PT09PT0KPj4K Pj4gICAtIFJlbmFtZWQgInNtYWxsLXNpemVkIFRIUCIgLT4gIm11bHRpLXNpemUgVEhQIiBpbiBj b21taXQgbG9ncwo+PiAgIC0gQWRkZWQgdmFyaW91cyBSZXZpZXdlZC1ieS9UZXN0ZWQtYnkgdGFn cyAoQmFycnksIERhdmlkLCBBbGlzdGFpcikKPj4gICAtIFBhdGNoIDM6Cj4+ICAgICAgIC0gRmlu ZS10dW5lZCB0cmFuc2h1Z2UgZG9jdW1lbnRhdGlvbiBtdWx0aS1zaXplIFRIUCAoSm9obkgpCj4+ ICAgICAgIC0gQ29udmVydGVkIGh1Z2VwYWdlX2dsb2JhbF9lbmFibGVkKCkgYW5kIGh1Z2VwYWdl X2dsb2JhbF9hbHdheXMoKSBtYWNyb3MKPj4gICAgICAgICB0byBzdGF0aWMgaW5saW5lIGZ1bmN0 aW9ucyAoSm9obkgpCj4+ICAgICAgIC0gUmVuYW1lZCBodWdlcGFnZV92bWFfY2hlY2soKSB0byB0 aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKSAoSm9obkgpCj4+ICAgICAgIC0gUmVuYW1lZCB0cmFu c2h1Z2Vfdm1hX3N1aXRhYmxlKCkgdG8gdGhwX3ZtYV9zdWl0YWJsZV9vcmRlcnMoKSAoSm9obkgp Cj4+ICAgICAgIC0gUmVuYW1lZCAiZ2xvYmFsIiBlbmFibGVkIHN5c2ZzIGZpbGUgb3B0aW9uIHRv ICJpbmhlcml0IiAoSm9obkgpCj4+ICAgLSBQYXRjaCA5Ogo+PiAgICAgICAtIGNvdyBzZWxmdGVz dDogUmVuYW1lZCBwYXJhbSBzaXplIC0+IHRocHNpemUgKERhdmlkKQo+PiAgICAgICAtIGNvdyBz ZWxmdGVzdDogQ2hhbmdlZCB0ZXN0IGZhaWwgdG8gYXNzZXJ0KCkgKERhdmlkKQo+PiAgICAgICAt IGNvdyBzZWxmdGVzdDogTG9nIFBNRCBzaXplIHNlcGFyYXRlbHkgZnJvbSBhbGwgdGhlIHN1cHBv cnRlZCBUSFAgc2l6ZXMKPj4gICAgICAgICAoRGF2aWQpCj4+ICAgLSBQYXRjaCAxMDoKPj4gICAg ICAgLSBjb3cgc2VsZnRlc3Q6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcG1kc2l6ZTsga2VlcCBh bGwgVEhQIHNpemVzIGluCj4+ICAgICAgICAgdGhwc2l6ZXNbXQo+Pgo+Pgo+PiBDaGFuZ2VzIHNp bmNlIHY2IFs2XQo+PiA9PT09PT09PT09PT09PT09PT09PQo+Pgo+PiAgIC0gUmVmYWN0b3JlZCB2 bWZfcHRlX3JhbmdlX2NoYW5nZWQoKSB0byByZW1vdmUgdWZmZCBzcGVjaWFsLWNhc2UgKHN1Z2dl c3RlZCBieQo+PiAgICAgSm9obkgpCj4+ICAgLSBEcm9wcGVkIGFjY291bnRpbmcgcGF0Y2ggKCMz IGluIHY2KSAoc3VnZ2VzdGVkIGJ5IERhdmlkSCkKPj4gICAgICAgLSBDb250aW51ZSB0byBhY2Nv dW50ICpQTUQtc2l6ZWQqIFRIUCBvbmx5IGZvciBub3cKPj4gICAgICAgLSBDYW4gYWRkIG1vcmUg Y291bnRlcnMgaW4gZnV0dXJlIGlmIG5lZWRlZAo+PiAgICAgICAtIFBhZ2UgY2FjaGUgbGFyZ2Ug Zm9saW9zIGhhdmVuJ3QgbmVlZGVkIGFueSBuZXcgY291bnRlcnMgeWV0Cj4+ICAgLSBQaXZvdCB0 byBzeXNmcyBBQkkgcHJvcG9zZWQgYnkgRGF2aWRICj4+ICAgICAgIC0gcGVyLXNpemUgZGlyZWN0 b3JpZXMgaW4gYSBzaW1pbGFyIHNoYXBlIHRvIHRoYXQgdXNlZCBieSBodWdldGxiCj4+ICAgLSBE cm9wcGVkICJyZWNvbW1lbmQiIGtleXdvcmQgcGF0Y2ggKCM2IGluIHY2KSAoc3VnZ2VzdGVkIGJ5 IERhdmlkSCwgWXUgWmhvdSkKPj4gICAgICAgLSBGb3Igbm93LCB1c2VycyBuZWVkIHRvIHVuZGVy c3RhbmQgaW1wbGljaXRseSB3aGljaCBzaXplcyBhcmUgYmVuZWZpY2lhbAo+PiAgICAgICAgIHRv IHRoZWlyIEhXL1NXCj4+ICAgLSBEcm9wcGVkIGFyY2hfd2FudHNfcHRlX29yZGVyKCkgcGF0Y2gg KCM3IGluIHY2KQo+PiAgICAgICAtIE5vIGxvbmdlciBuZWVkZWQgZHVlIHRvIGRyb3BwaW5nIHBh dGNoICJyZWNvbW1lbmQiIGtleXdvcmQgcGF0Y2gKPj4gICAtIEVubGlnaHRlbmVkIGtodWdlcGFn ZWQgbW0gc2VsZnRlc3QgdG8gZXhwbGljaXRseSB0ZXN0IHdpdGggc21hbGwtc2l6ZSBUSFAKPj4g ICAtIFNjcnViYmVkIGNvbW1pdCBsb2dzIHRvIHVzZSAic21hbGwtc2l6ZWQgVEhQIiBjb25zaXN0 ZW50bHkgKHN1Z2dlc3RlZCBieQo+PiAgICAgRGF2aWRIKQo+Pgo+Pgo+PiBDaGFuZ2VzIHNpbmNl IHY1IFs1XQo+PiA9PT09PT09PT09PT09PT09PT09PQo+Pgo+PiAgIC0gQWRkZWQgYWNjb3VudGlu ZyBmb3IgUFRFLW1hcHBlZCBUSFBzIChwYXRjaCAzKQo+PiAgIC0gQWRkZWQgcnVudGltZSBjb250 cm9sIG1lY2hhbmlzbSB2aWEgc3lzZnMgYXMgZXh0ZW5zaW9uIHRvIFRIUCAocGF0Y2ggNCkKPj4g ICAtIE1pbm9yIHJlZmFjdG9yaW5nIG9mIGFsbG9jX2Fub25fZm9saW8oKSB0byBpbnRlZ3JhdGUg d2l0aCBydW50aW1lIGNvbnRyb2xzCj4+ICAgLSBTdHJpcHBlZCBvdXQgaGFyZGNvZGVkIHBvbGlj eSBmb3IgYWxsb2NhdGlvbiBvcmRlcjsgaXRzIG5vdyBhbGwgdXNlciBzcGFjZQo+PiAgICAgY29u dHJvbGxlZCAoYWx0aG91Z2ggdXNlciBzcGFjZSBjYW4gcmVxdWVzdCAicmVjb21tZW5kIiB3aGlj aCB3aWxsIGNvbmZpZ3VyZQo+PiAgICAgdGhlIEhXLXByZWZlcnJlZCBvcmRlcikKPj4KPj4KPj4g Q2hhbmdlcyBzaW5jZSB2NCBbNF0KPj4gPT09PT09PT09PT09PT09PT09PT0KPj4KPj4gICAtIFJl bW92ZWQgImFybTY0OiBtbTogT3ZlcnJpZGUgYXJjaF93YW50c19wdGVfb3JkZXIoKSIgcGF0Y2g7 IGFybTY0Cj4+ICAgICBub3cgdXNlcyB0aGUgZGVmYXVsdCBvcmRlci0zIHNpemUuIEkgaGF2ZSBt b3ZlZCB0aGlzIHBhdGNoIG92ZXIgdG8KPj4gICAgIHRoZSBjb250cHRlIHNlcmllcy4KPj4gICAt IEFkZGVkICJtbTogQWxsb3cgZGVmZXJyZWQgc3BsaXR0aW5nIG9mIGFyYml0cmFyeSBsYXJnZSBh bm9uIGZvbGlvcyIgYmFjawo+PiAgICAgaW50byBzZXJpZXMuIEkgb3JpZ2luYWxseSByZW1vdmVk IHRoaXMgYXQgdjIgdG8gYWRkIHRvIGEgc2VwYXJhdGUgc2VyaWVzLAo+PiAgICAgYnV0IHRoYXQg c2VyaWVzIGhhcyB0cmFuc2Zvcm1lZCBzaWduaWZpY2FudGx5IGFuZCBpdCBubyBsb25nZXIgZml0 cywgc28KPj4gICAgIGJyaW5naW5nIGl0IGJhY2sgaGVyZS4KPj4gICAtIFJlaW50cm9kdWNlZCBk ZXBlbmRlbmN5IG9uIHNldF9wdGVzKCk7IE9yaWdpbmFsbHkgZHJvcHBlZCB0aGlzIGF0IHYyLCBi dXQKPj4gICAgIHNldF9wdGVzKCkgaXMgaW4gbW0tdW5zdGFibGUgbm93Lgo+PiAgIC0gVXBkYXRl ZCBwb2xpY3kgZm9yIHdoZW4gdG8gYWxsb2NhdGUgTEFGOyBvbmx5IGZhbGxiYWNrIHRvIG9yZGVy LTAgaWYKPj4gICAgIE1BRFZfTk9IVUdFUEFHRSBpcyBwcmVzZW50IG9yIGlmIFRIUCBkaXNhYmxl ZCB2aWEgcHJjdGw7IG5vIGxvbmdlciByZWx5IG9uCj4+ICAgICBzeXNmcydzIG5ldmVyL21hZHZp c2UvYWx3YXlzIGtub2IuCj4+ICAgLSBGYWxsYmFjayB0byBvcmRlci0wIHdoZW5ldmVyIHVmZmQg aXMgYXJtZWQgZm9yIHRoZSB2bWEsIG5vdCBqdXN0IHdoZW4KPj4gICAgIHVmZmQtd3AgaXMgc2V0 IG9uIHRoZSBwdGUuCj4+ICAgLSBhbGxvY19hbm9uX2ZvbGlvKCkgbm93IHJldHVybnMgYHN0cnVj dCBmb2xpbyAqYCwgd2hlcmUgZXJyb3JzIGFyZSBlbmNvZGVkCj4+ICAgICB3aXRoIEVSUl9QVFIo KS4KPj4KPj4gICBUaGUgbGFzdCAzIGNoYW5nZXMgd2VyZSBwcm9wb3NlZCBieSBZdSBaaGFvIC0g dGhhbmtzIQo+Pgo+Pgo+PiBDaGFuZ2VzIHNpbmNlIHYzIFszXQo+PiA9PT09PT09PT09PT09PT09 PT09PQo+Pgo+PiAgIC0gUmVuYW1lZCBmZWF0dXJlIGZyb20gRkxFWElCTEVfVEhQIHRvIExBUkdF X0FOT05fRk9MSU8uCj4+ICAgLSBSZW1vdmVkIGBmbGV4dGhwX3VuaGludGVkX21heGAgYm9vdCBw YXJhbWV0ZXIuIERpc2N1c3Npb24gY29uY2x1ZGVkIHRoYXQgYQo+PiAgICAgc3lzY3RsIGlzIHBy ZWZlcmFibGUgYnV0IHdlIHdpbGwgd2FpdCB1bnRpbCByZWFsIHdvcmtsb2FkIG5lZWRzIGl0Lgo+ PiAgIC0gRml4ZWQgdW5pbml0aWFsaXplZCBgYWRkcmAgb24gcmVhZCBmYXVsdCBwYXRoIGluIGRv X2Fub255bW91c19wYWdlKCkuCj4+ICAgLSBBZGRlZCBtbSBzZWxmdGVzdHMgZm9yIGxhcmdlIGFu b24gZm9saW9zIGluIGNvdyB0ZXN0IHN1aXRlLgo+Pgo+Pgo+PiBDaGFuZ2VzIHNpbmNlIHYyIFsy XQo+PiA9PT09PT09PT09PT09PT09PT09PQo+Pgo+PiAgIC0gRHJvcHBlZCBjb21taXQgIkFsbG93 IGRlZmVycmVkIHNwbGl0dGluZyBvZiBhcmJpdHJhcnkgbGFyZ2UgYW5vbiBmb2xpb3MiCj4+ICAg ICAgIC0gSHVhbmcsIFlpbmcgc3VnZ2VzdGVkIHRoZSAiYmF0Y2ggemFwIiB3b3JrICh3aGljaCBJ IGRyb3BwZWQgZnJvbSB0aGlzCj4+ICAgICAgICAgc2VyaWVzIGFmdGVyIHYxKSBpcyBhIHByZXJl cXVpc2l0ZSBmb3IgbWVyZ2luZyBGTFhFSUJMRV9USFAsIHNvIEkndmUKPj4gICAgICAgICBtb3Zl ZCB0aGUgZGVmZXJyZWQgc3BsaXQgcGF0Y2ggdG8gYSBzZXBhcmF0ZSBzZXJpZXMgYWxvbmcgd2l0 aCB0aGUgYmF0Y2gKPj4gICAgICAgICB6YXAgY2hhbmdlcy4gSSBwbGFuIHRvIHN1Ym1pdCB0aGlz IHNlcmllcyBlYXJseSBuZXh0IHdlZWsuCj4+ICAgLSBDaGFuZ2VkIGZvbGlvIG9yZGVyIGZhbGxi YWNrIHBvbGljeQo+PiAgICAgICAtIFdlIG5vIGxvbmdlciBpdGVyYXRlIGZyb20gcHJlZmVycmVk IHRvIDAgbG9va2luZyBmb3IgYWNjZXB0YWJsZSBwb2xpY3kKPj4gICAgICAgLSBJbnN0ZWFkIHdl IGl0ZXJhdGUgdGhyb3VnaCBwcmVmZXJyZWQsIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIGFuZCAw IG9ubHkKPj4gICAtIFJlbW92ZWQgdm1hIHBhcmFtZXRlciBmcm9tIGFyY2hfd2FudHNfcHRlX29y ZGVyKCkKPj4gICAtIEFkZGVkIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgYGZsZXh0aHBfdW5oaW50 ZWRfbWF4YAo+PiAgICAgICAtIGNsYW1wcyBwcmVmZXJyZWQgb3JkZXIgd2hlbiB2bWEgaGFzbid0 IGV4cGxpY2l0bHkgb3B0ZWQtaW4gdG8gVEhQCj4+ICAgLSBOZXZlciBhbGxvY2F0ZSBsYXJnZSBm b2xpbyBmb3IgTUFEVl9OT0hVR0VQQUdFIHZtYSAob3Igd2hlbiBUSFAgaXMgZGlzYWJsZWQKPj4g ICAgIGZvciBwcm9jZXNzIG9yIHN5c3RlbSkuCj4+ICAgLSBTaW1wbGlmaWVkIGltcGxlbWVudGF0 aW9uIGFuZCBpbnRlZ3JhdGlvbiB3aXRoIGRvX2Fub255bW91c19wYWdlKCkKPj4gICAtIFJlbW92 ZWQgZGVwZW5kZW5jeSBvbiBzZXRfcHRlcygpCj4+Cj4+Cj4+IENoYW5nZXMgc2luY2UgdjEgWzFd Cj4+ID09PT09PT09PT09PT09PT09PT09Cj4+Cj4+ICAgLSByZW1vdmVkIGNoYW5nZXMgdG8gYXJj aC1kZXBlbmRlbnQgdm1hX2FsbG9jX3plcm9lZF9tb3ZhYmxlX2ZvbGlvKCkKPj4gICAtIHJlcGxh Y2VkIHdpdGggYXJjaC1pbmRlcGVuZGVudCBhbGxvY19hbm9uX2ZvbGlvKCkKPj4gICAgICAgLSBm b2xsb3dzIFRIUCBhbGxvY2F0aW9uIGFwcHJvYWNoCj4+ICAgLSBubyBsb25nZXIgcmV0cnkgd2l0 aCBpbnRlcm1lZGlhdGUgb3JkZXJzIGlmIGFsbG9jYXRpb24gZmFpbHMKPj4gICAgICAgLSBmYWxs YmFjayBkaXJlY3RseSB0byBvcmRlci0wCj4+ICAgLSByZW1vdmUgZm9saW9fYWRkX25ld19hbm9u X3JtYXBfcmFuZ2UoKSBwYXRjaAo+PiAgICAgICAtIGluc3RlYWQgYWRkIGl0cyBuZXcgZnVuY3Rp b25hbGl0eSB0byBmb2xpb19hZGRfbmV3X2Fub25fcm1hcCgpCj4+ICAgLSByZW1vdmUgYmF0Y2gt emFwIHB0ZSBtYXBwaW5ncyBvcHRpbWl6YXRpb24gcGF0Y2gKPj4gICAgICAgLSByZW1vdmUgZW5h YmxlciBmb2xpb19yZW1vdmVfcm1hcF9yYW5nZSgpIHBhdGNoIHRvbwo+PiAgICAgICAtIFRoZXNl IG9mZmVyIHJlYWwgcGVyZiBpbXByb3ZlbWVudCBzbyB3aWxsIHN1Ym1pdCBzZXBhcmF0ZWx5Cj4+ ICAgLSBzaW1wbGlmeSBLY29uZmlnCj4+ICAgICAgIC0gc2luZ2xlIEZMRVhJQkxFX1RIUCBvcHRp b24sIHdoaWNoIGlzIGluZGVwZW5kZW50IG9mIGFyY2gKPj4gICAgICAgLSBkZXBlbmRzIG9uIFRS QU5TUEFSRU5UX0hVR0VQQUdFCj4+ICAgICAgIC0gd2hlbiBlbmFibGVkIGRlZmF1bHQgdG8gbWF4 IGFub24gZm9saW8gc2l6ZSBvZiA2NEsgdW5sZXNzIGFyY2gKPj4gICAgICAgICBleHBsaWNpdGx5 IG92ZXJyaWRlcwo+PiAgIC0gc2ltcGxpZnkgY2hhbmdlcyB0byBkb19hbm9ueW1vdXNfcGFnZSgp Ogo+PiAgICAgICAtIG5vIG1vcmUgcmV0cnkgbG9vcAo+Pgo+Pgo+PiBbMV0gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvbGludXgtbW0vMjAyMzA2MjYxNzE0MzAuMzE2NzAwNC0xLXJ5YW4ucm9iZXJ0 c0Bhcm0uY29tLwo+PiBbMl0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbW0vMjAyMzA3 MDMxMzUzMzAuMTg2NTkyNy0xLXJ5YW4ucm9iZXJ0c0Bhcm0uY29tLwo+PiBbM10gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGludXgtbW0vMjAyMzA3MTQxNjA0MDcuNDE0MjAzMC0xLXJ5YW4ucm9i ZXJ0c0Bhcm0uY29tLwo+PiBbNF0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbW0vMjAy MzA3MjYwOTUxNDYuMjgyNjc5Ni0xLXJ5YW4ucm9iZXJ0c0Bhcm0uY29tLwo+PiBbNV0gaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbW0vMjAyMzA4MTAxNDI5NDIuMzE2OTY3OS0xLXJ5YW4u cm9iZXJ0c0Bhcm0uY29tLwo+PiBbNl0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbW0v MjAyMzA5MjkxMTQ0MjEuMzc2MTEyMS0xLXJ5YW4ucm9iZXJ0c0Bhcm0uY29tLwo+PiBbN10gaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbW0vMjAyMzExMjIxNjI5NTAuMzg1NDg5Ny0xLXJ5 YW4ucm9iZXJ0c0Bhcm0uY29tLwo+PiBbOF0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgt bW0vNmQ4OWZkYzktZWY1NS1kNDRlLWJmMTItZmFmZmYzMThhZWY4QHJlZGhhdC5jb20vCj4+IFs5 XSBodHRwczovL2RyaXZlLmdvb2dsZS5jb20vZmlsZS9kLzFHbmZZRnByN19jMWtBNDFsaVJVVzVZ dENiOENqMThVZC92aWV3P3VzcD1zaGFyaW5nJnJlc291cmNla2V5PTAtVTFNajMtUmhMRDFKVjZF VGhweVB5QQo+PiBbMTBdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LW1tLzIwMjMxMTEz MTcwMTU3LjI4MDE4MS0xLXppLnlhbkBzZW50LmNvbS8KPj4gWzExXSBodHRwczovL2xvcmUua2Vy bmVsLm9yZy9saW51eC1tbS9jNTA3MzA4ZC1iZGQ0LTVmOWUtZDRmZi1lOTZlNDUyMGJlODVAbnZp ZGlhLmNvbS8KPj4gWzEyXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1tbS80NzliM2Uy Yi00NTZkLTQ2YzEtOTY3Ny0zOGY2Yzk1YTBiZThAaHVhd2VpLmNvbS8KPj4KPj4KPj4gVGhhbmtz LAo+PiBSeWFuCj4+Cj4+IFJ5YW4gUm9iZXJ0cyAoMTApOgo+PiAgIG1tOiBBbGxvdyBkZWZlcnJl ZCBzcGxpdHRpbmcgb2YgYXJiaXRyYXJ5IGFub24gbGFyZ2UgZm9saW9zCj4+ICAgbW06IE5vbi1w bWQtbWFwcGFibGUsIGxhcmdlIGZvbGlvcyBmb3IgZm9saW9fYWRkX25ld19hbm9uX3JtYXAoKQo+ PiAgIG1tOiB0aHA6IEludHJvZHVjZSBtdWx0aS1zaXplIFRIUCBzeXNmcyBpbnRlcmZhY2UKPj4g ICBtbTogdGhwOiBTdXBwb3J0IGFsbG9jYXRpb24gb2YgYW5vbnltb3VzIG11bHRpLXNpemUgVEhQ Cj4+ICAgc2VsZnRlc3RzL21tL2t1Z2VwYWdlZDogUmVzdG9yZSB0aHAgc2V0dGluZ3MgYXQgZXhp dAo+PiAgIHNlbGZ0ZXN0cy9tbTogRmFjdG9yIG91dCB0aHAgc2V0dGluZ3MgbWFuYWdlbWVudAo+ PiAgIHNlbGZ0ZXN0cy9tbTogU3VwcG9ydCBtdWx0aS1zaXplIFRIUCBpbnRlcmZhY2UgaW4gdGhw X3NldHRpbmdzCj4+ICAgc2VsZnRlc3RzL21tL2todWdlcGFnZWQ6IEVubGlnaHRlbiBmb3IgbXVs dGktc2l6ZSBUSFAKPj4gICBzZWxmdGVzdHMvbW0vY293OiBHZW5lcmFsaXplIGRvX3J1bl93aXRo X3RocCgpIGhlbHBlcgo+PiAgIHNlbGZ0ZXN0cy9tbS9jb3c6IEFkZCB0ZXN0cyBmb3IgYW5vbnlt b3VzIG11bHRpLXNpemUgVEhQCj4+Cj4+ICBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3Ry YW5zaHVnZS5yc3QgfCAgOTcgKysrKy0KPj4gIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJv Yy5yc3QgICAgICAgICB8ICAgNiArLQo+PiAgZnMvcHJvYy90YXNrX21tdS5jICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAzICstCj4+ICBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaCAgICAgICAg ICAgICAgICAgICAgfCAxMTYgKysrKy0tCj4+ICBtbS9odWdlX21lbW9yeS5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAyNjggKysrKysrKysrKysrLS0KPj4gIG1tL2todWdlcGFnZWQuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQo+PiAgbW0vbWVtb3J5LmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTE0ICsrKysrLQo+PiAgbW0vcGFnZV92bWFfbWFw cGVkLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCj4+ICBtbS9ybWFwLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzIgKy0KPj4gIHRvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL21tL01ha2VmaWxlICAgICAgICB8ICAgNCArLQo+PiAgdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvbW0vY293LmMgICAgICAgICAgIHwgMTg1ICsrKysrKystLS0KPj4gIHRvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL21tL2todWdlcGFnZWQuYyAgICB8IDQxMCArKysrLS0tLS0tLS0tLS0tLS0t LS0KPj4gIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3J1bl92bXRlc3RzLnNoICB8ICAgMiAr Cj4+ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90aHBfc2V0dGluZ3MuYyAgfCAzNDkgKysr KysrKysrKysrKysrKysrCj4+ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90aHBfc2V0dGlu Z3MuaCAgfCAgODAgKysrKwo+PiAgMTUgZmlsZXMgY2hhbmdlZCwgMTE3NyBpbnNlcnRpb25zKCsp LCA1MTIgZGVsZXRpb25zKC0pCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9z ZWxmdGVzdHMvbW0vdGhwX3NldHRpbmdzLmMKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9tbS90aHBfc2V0dGluZ3MuaAo+Pgo+PiAtLQo+PiAyLjI1LjEKPj4K PiAKPiBUaGFua3MKPiBCYXJyeQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK