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 6A1BDCD128A for ; Mon, 8 Apr 2024 02:26:35 +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:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=j4b9dpiNvmvCDQ23wtME+ee1435FFvhlBBOB/BZVu88=; b=fcQd7CQZt04RlS 6Db4wb/GTrAAY1AEyK00Ox0F87WQepqpjapYFqwOIO62pTzfB9svQ0h2l5TsOfw+XDTq36sEz1+WL JGcverMr6daAQzDbqqmnNVwWhMpvxCy2S21KQQ5JqWcbC3iEFSkf4Hrc/7OMpHyy8ogd7fBaQYlZm /295AvqoEOtPKm72K5ZDIRbg6+k5oqO30RrTebik+9xsXcrn1E0n1nC/LXXQxEDtLJwuCspV9e+Jj J8ICYsIbJ/lK7goc3hNib2s2EWeCuIr5dx/NXGKOj78txSK42EY5N/CBdRvx1zD6hkv+XIe7WKZyM ISf3tesixE86CX8D25Sw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rteiF-0000000E2Ek-3175; Mon, 08 Apr 2024 02:26:23 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rteiA-0000000E2Cv-2BMr for linux-arm-kernel@lists.infradead.org; Mon, 08 Apr 2024 02:26:22 +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 DFDFF1007; Sun, 7 Apr 2024 19:26:42 -0700 (PDT) Received: from [10.162.42.7] (a077893.blr.arm.com [10.162.42.7]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 37D653F766; Sun, 7 Apr 2024 19:26:10 -0700 (PDT) Message-ID: <8ca534b2-6595-4c6c-bf3a-0dcfca364f77@arm.com> Date: Mon, 8 Apr 2024 07:56:07 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V17 0/9] arm64/perf: Enable branch stack sampling Content-Language: en-US To: Adam Young , linux-arm-kernel@lists.infradead.org References: <20240405024639.1179064-1-anshuman.khandual@arm.com> <64c01f0d-7206-4240-8dd6-5690fe310a76@younglogic.com> From: Anshuman Khandual In-Reply-To: <64c01f0d-7206-4240-8dd6-5690fe310a76@younglogic.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240407_192618_738801_4E9ED57F X-CRM114-Status: GOOD ( 34.80 ) 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 PiAKPiBXaWxsIHRoaXMgYXBwbHkgb24gNi44P8KgIFdlIGhhdmUgYmVlbiBjaGFzaW5nIGdldHRp bmcgdGhpcyB0ZXN0ZWQsIGFuZCBhcmUgYSByZXZpc2lvbiBiZWhpbmQgeW91LgoKSXQgbWlnaHQg cmVxdWlyZSBzb21lIHJlYmFzaW5nIHRob3VnaCAtIGVzcGVjaWFsbHkgaW4gdGhlIEtWTSBjb2Rl LgoKPiAKPiBXZSBhcmUganVzdCB0ZXN0aW5nIG9uIDYuOCwgYW5kIHRoZSBmYWN0IHRoYXQgd2Ug ZG9uJ3QgaGF2ZSBvbmUgdGhhdCB3b3JrcyBvbiBzdGFibGUgcmV2aXNpb24gaGFzIGJlZW4gb25l Cj4gCj4gb2YgdGhlwqAgcmVhc29ucyB3ZSBoYXZlIG5vdCBwcm92aWRlZCBmZWVkYmFjay4KCkJl Y2F1c2UgdGhlcmUgYXJlIHNvbWUgb3RoZXIgY2hhbmdlcyB0aGF0IHdlbnQgaW4gZHVyaW5nIGxh c3QgbWVyZ2Ugd2luZG93LApoZW5jZSB3aWxsIHN1Z2dlc3QgdG8gdGVzdCB0aGlzIHNlcmllcyBv biB0aGUgbGF0ZXN0IHY2LjkgcmVsZWFzZSBpbnN0ZWFkLgoKPiAKPiBJIGRpZCBnZXQgdG8gdGVz dCBhbiBlYXJseSB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBzZXZlcmFsIG1vbnRocyBhZ28gYW5kIHN0 cmljdGx5IHNwZWFraW5nIGl0IHdvcmtzOgo+IAo+IEkgdXNlZCBhIHF1aWNrc29ydCBidWlsdCB1 bm9wdGltaXplZCBhbmQgY29tcGFyZWQgaXQgd2l0aCBhbiBBdXRvRkRPIHZlcnNpb24gY29uc3Vt aW5nIHRoZSBvdXRwdXQgZnJvbSBCUkJFLsKgIFRoZSBBdXRvRkRPIHZlcnNpb24gd2FzIHNpZ25p ZmljYW50bHkgZmFzdGVyLCBzbyB3ZSBkbyBnZXQgc29tZSBvcHRpbWl6YXRpb24uCgpKdXN0IHdv bmRlcmluZyBpZiBBdXRvRkRPIHZlcnNpb24gKHdpdGggQlJCRSBicmFuY2hlcykgd2FzIGFsc28g YmV0dGVyIHRoYW4KcHJldmlvdXMgQXV0b0ZETyB2ZXJzaW9uICh3aXRob3V0IEJSQkUgYnJhbmNo ZXMpID8gVGhhdCB3b3VsZCBhc2NlcnRhaW4gdGhlCm9ic2VydmVkIGltcHJvdmVtZW50IHRvIHRo ZSBCUkJFIGJyYW5jaCByZWNvcmRzLgoKPiAKPiBXaGF0IGlzIHRoYXQgYWN0dWFsIFRlc3QgZnJh bWV3b3JrIHlvdSBhcmUgdXNpbmcgdG8gdGVzdD/CoCBJIHdvdWxkIGxpa2UgdG8gZG8gYW4gYXBw bGVzLXRvLWFwcGxlcyBjb21wYXJpc29uIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBz ZXQgb3IgdGhlIG1vc3QgcmVjZW50IG9uZSBJIGNhbiBnZXQgdG8gYXBwbHkuCgpUaGUgZm9sbG93 aW5nIHN0YW5kYXJkIHBlcmYgdG9vbHMgYmFzZWQgdGVzdCBzaG91bGQgYmUgYSBnb29kIHN0YXJ0 IHVubGVzcwp5b3Ugd291bGQgbGlrZSB0byBoYW5kIGNyYWZ0IHNvbWUgd29ya2xvYWRzIHdpdGgg c3BlY2lmaWMgYnJhbmNoIHR5cGVzIGV0YwoKI3BlcmYgdGVzdCAtdnYgYnJhbmNoCgo+IAo+IAo+ IAo+IE9uIDQvNC8yNCAyMjo0NiwgQW5zaHVtYW4gS2hhbmR1YWwgd3JvdGU6Cj4+IFRoaXMgc2Vy aWVzIGVuYWJsZXMgcGVyZiBicmFuY2ggc3RhY2sgc2FtcGxpbmcgc3VwcG9ydCBvbiBhcm02NCBw bGF0Zm9ybQo+PiB2aWEgYSBuZXcgYXJjaCBmZWF0dXJlIGNhbGxlZCBCcmFuY2ggUmVjb3JkIEJ1 ZmZlciBFeHRlbnNpb24gKEJSQkUpLiBBbGwKPj4gdGhlIHJlbGV2YW50IHJlZ2lzdGVyIGRlZmlu aXRpb25zIGNvdWxkIGJlIGFjY2Vzc2VkIGhlcmUuCj4+Cj4+IGh0dHBzOi8vZGV2ZWxvcGVyLmFy bS5jb20vZG9jdW1lbnRhdGlvbi9kZGkwNjAxLzIwMjEtMTIvQUFyY2g2NC1SZWdpc3RlcnMKPj4K Pj4gVGhpcyBzZXJpZXMgYXBwbGllcyBvbiA2LjktcmMyLgo+Pgo+PiBBbHNvIHRoaXMgc2VyaWVz IGlzIGJlaW5nIGhvc3RlZCBiZWxvdyBmb3IgcXVpY2sgYWNjZXNzLCByZXZpZXcgYW5kIHRlc3Qu Cj4+Cj4+IGh0dHBzOi8vZ2l0LmdpdGxhYi5hcm0uY29tL2xpbnV4LWFybS9saW51eC1hbnNodW1h bi5naXQgKGJyYmVfdjE3KQo+Pgo+PiBUaGVyZSBhcmUgc3RpbGwgc29tZSBvcGVuIHF1ZXN0aW9u cyByZWdhcmRpbmcgaGFuZGxpbmcgbXVsdGlwbGUgcGVyZiBldmVudHMKPj4gd2l0aCBkaWZmZXJl bnQgcHJpdmlsZWdlIGJyYW5jaCBmaWx0ZXJzIGdldHRpbmcgb24gdGhlIHNhbWUgUE1VLCBzdXBw b3J0aW5nCj4+IGd1ZXN0IGJyYW5jaCBzdGFjayB0cmFjaW5nIGZyb20gdGhlIGhvc3QgZXRjLiBG aW5hbGx5IGFsc28gbG9va2luZyBmb3Igc29tZQo+PiBzdWdnZXN0aW9ucyByZWdhcmRpbmcgc3Vw cG9ydGluZyBCUkJFIGluc2lkZSB0aGUgZ3Vlc3QuIFRoZSBzZXJpZXMgaGFzIGJlZW4KPj4gcmUt b3JnYW5pemVkIGNvbXBsZXRlbHkgYXMgc3VnZ2VzdGVkIGVhcmxpZXIuCj4+Cj4+IC0gQW5zaHVt YW4KPj4KPj4gPT09PT09PT09PSBQZXJmIEJyYW5jaCBTdGFjayBTYW1wbGluZyBTdXBwb3J0IChh cm02NCBwbGF0Zm9ybXMpID09PT09PT09PT09Cj4+Cj4+IEN1cnJlbnRseSBhcm02NCBwbGF0Zm9y bSBkb2VzIG5vdCBzdXBwb3J0IHBlcmYgYnJhbmNoIHN0YWNrIHNhbXBsaW5nLiBIZW5jZQo+PiBh bnkgZXZlbnQgcmVxdWVzdGluZyBmb3IgYnJhbmNoIHN0YWNrIHJlY29yZHMgaS5lIFBFUkZfU0FN UExFX0JSQU5DSF9TVEFDSwo+PiBtYXJrZWQgaW4gZXZlbnQtPmF0dHIuc2FtcGxlX3R5cGUsIHdp bGwgYmUgcmVqZWN0ZWQgaW4gYXJtcG11X2V2ZW50X2luaXQoKS4KPj4KPj4gc3RhdGljIGludCBh cm1wbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCj4+IHsKPj4gwqDCoMKg wqAuLi4uLi4uLgo+PiDCoMKgwqDCoMKgwqDCoMKgIC8qIGRvZXMgbm90IHN1cHBvcnQgdGFrZW4g YnJhbmNoIHNhbXBsaW5nICovCj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKGhhc19icmFuY2hfc3Rh Y2soZXZlbnQpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVP UE5PVFNVUFA7Cj4+IMKgwqDCoMKgLi4uLi4uLi4KPj4gfQo+Pgo+PiAkcGVyZiByZWNvcmQgLWog YW55LHUsayBscwo+PiBFcnJvcjoKPj4gY3ljbGVzOlA6IFBNVSBIYXJkd2FyZSBvciBldmVudCB0 eXBlIGRvZXNuJ3Qgc3VwcG9ydCBicmFuY2ggc3RhY2sgc2FtcGxpbmcuCj4+Cj4+IC0tLS0tLS0t LS0tLS0tLS0tLS0tIENPTkZJR19BUk02NF9CUkJFIGFuZCBGRUFUX0JSQkUgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+Pgo+PiBBZnRlciB0aGlzIHNlcmllcywgcGVyZiBicmFuY2ggc3RhY2sgc2Ft cGxpbmcgZmVhdHVyZSBnZXRzIGVuYWJsZWQgb24gYXJtNjQKPj4gcGxhdGZvcm1zIHdoZXJlIEZF QVRfQlJCRSBIVyBmZWF0dXJlIGlzIHN1cHBvcnRlZCwgYW5kIENPTkZJR19BUk02NF9CUkJFIGlz Cj4+IGFsc28gc2VsZWN0ZWQgZHVyaW5nIGJ1aWxkLiBMZXQncyBvYnNlcnZlIGFsbCBhbGwgcG9z c2libGUgc2NlbmFyaW9zIGhlcmUuCj4+Cj4+IDEuIEZlYXR1cmUgbm90IGJ1aWx0ICghQ09ORklH X0FSTTY0X0JSQkUpOgo+Pgo+PiBGYWxscyBiYWNrIHRvIHRoZSBjdXJyZW50IGJlaGF2aW91ciBp LmUgZXZlbnQgZ2V0cyByZWplY3RlZC4KPj4KPj4gMi4gRmVhdHVyZSBidWlsdCBidXQgSFcgbm90 IHN1cHBvcnRlZCAoQ09ORklHX0FSTTY0X0JSQkUgJiYgIUZFQVRfQlJCRSk6Cj4+Cj4+IEZhbGxz IGJhY2sgdG8gdGhlIGN1cnJlbnQgYmVoYXZpb3VyIGkuZSBldmVudCBnZXRzIHJlamVjdGVkLgo+ Pgo+PiAzLiBGZWF0dXJlIGJ1aWx0IGFuZCBIVyBzdXBwb3J0ZWQgKENPTkZJR19BUk02NF9CUkJF ICYmIEZFQVRfQlJCRSk6Cj4+Cj4+IFBsYXRmb3JtIHN1cHBvcnRzIGJyYW5jaCBzdGFjayBzYW1w bGluZyByZXF1ZXN0cy4gTGV0J3Mgb2JzZXJ2ZSB0aHJvdWdoIGEKPj4gc2ltcGxlIGV4YW1wbGUg aGVyZS4KPj4KPj4gJHBlcmYgcmVjb3JkIC1qIGFueV9jYWxsLHUsayxzYXZlX3R5cGUgbHMKPj4K Pj4gW1BsZWFzZSByZWZlciBwZXJmLXJlY29yZCBtYW4gcGFnZXMgZm9yIGFsbCBwb3NzaWJsZSBi cmFuY2ggZmlsdGVyIG9wdGlvbnNdCj4+Cj4+ICRwZXJmIHJlcG9ydAo+PiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBTbmlwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gIyBPdmVyaGVhZMKg IENvbW1hbmTCoCBTb3VyY2UgU2hhcmVkIE9iamVjdMKgIFNvdXJjZSBTeW1ib2zCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRh cmdldCBTeW1ib2zCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEJhc2ljIEJsb2NrIEN5Y2xlcwo+PiAjIC4uLi4uLi4uwqAgLi4u Li4uLsKgIC4uLi4uLi4uLi4uLi4uLi4uLi4uwqAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi7CoCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLsKgIC4uLi4uLi4uLi4uLi4uLi4uLgo+PiAjCj4+IMKgwqDCoMKgwqAgMy41MiXCoCBs c8KgwqDCoMKgwqDCoCBba2VybmVsLmthbGxzeW1zXcKgwqDCoMKgIFtrXSBzY2hlZF9jbG9ja19u b2luc3RywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2tdIGFy Y2hfY291bnRlcl9nZXRfY250cGN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDE2Cj4+IMKgwqDCoMKgwqAgMy41MiXCoCBsc8KgwqDCoMKgwqDCoCBba2VybmVsLmthbGxzeW1z XcKgwqDCoMKgIFtrXSBzY2hlZF9jbG9ja8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gc2NoZWRfY2xvY2tfbm9pbnN0csKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDkKPj4gwqDCoMKgwqDCoCAx Ljg1JcKgIGxzwqDCoMKgwqDCoMKgIFtrZXJuZWwua2FsbHN5bXNdwqDCoMKgwqAgW2tdIHNjaGVk X2Nsb2NrX2NwdcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgW2tdIHNjaGVkX2Nsb2NrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDUKPj4gwqDCoMKgwqDCoCAxLjgwJcKgIGxzwqDCoMKg wqDCoMKgIFtrZXJuZWwua2FsbHN5bXNdwqDCoMKgwqAgW2tdIGlycXRpbWVfYWNjb3VudF9pcnHC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gc2NoZWRfY2xv Y2tfY3B1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAyMAo+PiDCoMKgwqDCoMKgIDEuNTglwqAgbHPCoMKgwqDCoMKgwqAgW2tlcm5lbC5rYWxsc3lt c13CoMKgwqDCoCBba10gZ2ljX2hhbmRsZV9pcnHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2tdIGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnHC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxOQo+PiDCoMKgwqDCoMKgIDEuNTglwqAg bHPCoMKgwqDCoMKgwqAgW2tlcm5lbC5rYWxsc3ltc13CoMKgwqDCoCBba10gY2FsbF9vbl9pcnFf c3RhY2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2td IGdpY19oYW5kbGVfaXJxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDkKPj4gwqDCoMKgwqDCoCAxLjU4JcKgIGxzwqDCoMKgwqDCoMKgIFtrZXJu ZWwua2FsbHN5bXNdwqDCoMKgwqAgW2tdIGRvX2ludGVycnVwdF9oYW5kbGVywqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtrXSBjYWxsX29uX2lycV9zdGFja8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMwo+PiDCoMKgwqDC oMKgIDEuNTglwqAgbHPCoMKgwqDCoMKgwqAgW2tlcm5lbC5rYWxsc3ltc13CoMKgwqDCoCBba10g Z2VuZXJpY19oYW5kbGVfZG9tYWluX2lyccKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFtrXSBfX2lycV9yZXNvbHZlX21hcHBpbmfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDYKPj4gwqDCoMKgwqDCoCAxLjU4JcKgIGxzwqDCoMKgwqDCoMKgIFtrZXJuZWwu a2FsbHN5bXNdwqDCoMKgwqAgW2tdIF9faXJxX3Jlc29sdmVfbWFwcGluZ8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2tdIF9fcmN1X3JlYWRfbG9ja8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTAKPj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gU25pcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Cj4+ICRwZXJm IHJlcG9ydCAtRCB8IGdyZXAgY3ljbGVzCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNu aXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAuLi4uLsKgIDE6IGZmZmY4MDAwODBkZDMzMzQg LT4gZmZmZjgwMDA4MGRkNzU5YyAzOSBjeWNsZXPCoCBQwqDCoCAwIElORF9DQUxMCj4+IC4uLi4u wqAgMjogZmZmZjgwMDA4MGZmYWVhMCAtPiBmZmZmODAwMDgwZmZiNjg4IDE2IGN5Y2xlc8KgIFDC oMKgIDAgSU5EX0NBTEwKPj4gLi4uLi7CoCAzOiBmZmZmODAwMDgwMTM5OTE4IC0+IGZmZmY4MDAw ODBmZmFlNjQgOcKgIGN5Y2xlc8KgIFDCoMKgIDAgQ0FMTAo+PiAuLi4uLsKgIDQ6IGZmZmY4MDAw ODBkZDMzMjQgLT4gZmZmZjgwMDA4MDEzOThmOCA3wqAgY3ljbGVzwqAgUMKgwqAgMCBDQUxMCj4+ IC4uLi4uwqAgNTogZmZmZjgwMDA4MDBmODU0OCAtPiBmZmZmODAwMDgwZGQzMzBjIDIxIGN5Y2xl c8KgIFDCoMKgIDAgSU5EX0NBTEwKPj4gLi4uLi7CoCA2OiBmZmZmODAwMDgwMGY4NjRjIC0+IGZm ZmY4MDAwODAwZjg0ZWMgNsKgIGN5Y2xlc8KgIFDCoMKgIDAgQ0FMTAo+PiAuLi4uLsKgIDc6IGZm ZmY4MDAwODAwZjg2ZGMgLT4gZmZmZjgwMDA4MDBmODYzOCAxMSBjeWNsZXPCoCBQwqDCoCAwIENB TEwKPj4gLi4uLi7CoCA4OiBmZmZmODAwMDgwMGY4NmQ0IC0+IGZmZmY4MDAwODEwMDg2MzAgMTYg Y3ljbGVzwqAgUMKgwqAgMCBDQUxMCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNuaXAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+PiBwZXJmIHNjcmlwdCBhbmQgb3RoZXIgdG9vbGlu ZyBjYW4gYWxzbyBiZSBhcHBsaWVkIG9uIHRoZSBjYXB0dXJlZCBwZXJmLmRhdGEKPj4gU2ltaWxh cmx5IGJyYW5jaCBzdGFjayBzYW1wbGluZyByZWNvcmRzIGNhbiBiZSBjb2xsZWN0ZWQgdmlhIGRp cmVjdCBzeXN0ZW0KPj4gY2FsbCBpLmUgcGVyZl9ldmVudF9vcGVuKCkgbWV0aG9kIGFmdGVyIHNl dHRpbmcgJ3N0cnVjdCBwZXJmX2V2ZW50X2F0dHInIGFzCj4+IHJlcXVpcmVkLgo+Pgo+PiBldmVu dC0+YXR0ci5zYW1wbGVfdHlwZSB8PSBQRVJGX1NBTVBMRV9CUkFOQ0hfU1RBQ0sKPj4gZXZlbnQt PmF0dHIuYnJhbmNoX3NhbXBsZV90eXBlIHw9IFBFUkZfU0FNUExFX0JSQU5DSF88RklMVEVSXzE+ IHwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQRVJGX1NBTVBMRV9CUkFO Q0hfPEZJTFRFUl8yPiB8Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUEVS Rl9TQU1QTEVfQlJBTkNIXzxGSUxURVJfMz4gfAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KPj4KPj4gQnV0IGFsbCBi cmFuY2ggZmlsdGVycyBtaWdodCBub3QgYmUgc3VwcG9ydGVkIG9uIHRoZSBwbGF0Zm9ybS4KPj4K Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQlJCRSBCcmFuY2ggRmlsdGVycyBTdXBwb3J0IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Cj4+IC0gRm9sbG93aW5nIGJyYW5jaCBmaWx0ZXJzIGFy ZSBzdXBwb3J0ZWQgb24gYXJtNjQuCj4+Cj4+IMKgwqDCoMKgUEVSRl9TQU1QTEVfQlJBTkNIX1VT RVLCoMKgwqDCoMKgwqDCoCAvKiBCcmFuY2ggcHJpdmlsZWdlIGZpbHRlcnMgKi8KPj4gwqDCoMKg wqBQRVJGX1NBTVBMRV9CUkFOQ0hfS0VSTkVMCj4+IMKgwqDCoMKgUEVSRl9TQU1QTEVfQlJBTkNI X0hWCj4+Cj4+IMKgwqDCoMKgUEVSRl9TQU1QTEVfQlJBTkNIX0FOWcKgwqDCoMKgwqDCoMKgIC8q IEJyYW5jaCB0eXBlIGZpbHRlcnMgKi8KPj4gwqDCoMKgwqBQRVJGX1NBTVBMRV9CUkFOQ0hfQU5Z X0NBTEwKPj4gwqDCoMKgwqBQRVJGX1NBTVBMRV9CUkFOQ0hfQU5ZX1JFVFVSTgo+PiDCoMKgwqDC oFBFUkZfU0FNUExFX0JSQU5DSF9JTkRfQ0FMTAo+PiDCoMKgwqDCoFBFUkZfU0FNUExFX0JSQU5D SF9DT05ECj4+IMKgwqDCoMKgUEVSRl9TQU1QTEVfQlJBTkNIX0lORF9KVU1QCj4+IMKgwqDCoMKg UEVSRl9TQU1QTEVfQlJBTkNIX0NBTEwKPj4KPj4gwqDCoMKgwqBQRVJGX1NBTVBMRV9CUkFOQ0hf Tk9fRkxBR1PCoMKgwqAgLyogQnJhbmNoIHJlY29yZCBmbGFncyAqLwo+PiDCoMKgwqDCoFBFUkZf U0FNUExFX0JSQU5DSF9OT19DWUNMRVMKPj4gwqDCoMKgwqBQRVJGX1NBTVBMRV9CUkFOQ0hfVFlQ RV9TQVZFCj4+IMKgwqDCoMKgUEVSRl9TQU1QTEVfQlJBTkNIX0hXX0lOREVYCj4+IMKgwqDCoMKg UEVSRl9TQU1QTEVfQlJBTkNIX1BSSVZfU0FWRQo+Pgo+PiAtIEZvbGxvd2luZyBicmFuY2ggZmls dGVycyBhcmUgbm90IHN1cHBvcnRlZCBvbiBhcm02NC4KPj4KPj4gwqDCoMKgwqBQRVJGX1NBTVBM RV9CUkFOQ0hfQUJPUlRfVFgKPj4gwqDCoMKgwqBQRVJGX1NBTVBMRV9CUkFOQ0hfSU5fVFgKPj4g wqDCoMKgwqBQRVJGX1NBTVBMRV9CUkFOQ0hfTk9fVFgKPj4gwqDCoMKgwqBQRVJGX1NBTVBMRV9C UkFOQ0hfQ0FMTF9TVEFDSwo+Pgo+PiBFdmVudHMgcmVxdWVzdGluZyBhYm92ZSBub24tc3VwcG9y dGVkIGJyYW5jaCBmaWx0ZXJzIGdldCByZWplY3RlZC4KPj4KPj4gLS0tLS0tLS0tLS0tLS0tLS0t IFBvc3NpYmxlICdicmFuY2hfc2FtcGxlX3R5cGUnIE1pc21hdGNoIC0tLS0tLS0tLS0tLS0tLS0t Cj4+Cj4+IEJyYW5jaCBzdGFjayBzYW1wbGluZyBhdHRyaWJ1dGVzICdldmVudC0+YXR0ci5icmFu Y2hfc2FtcGxlX3R5cGUnIGdlbmVyYWxseQo+PiByZW1haW4gdGhlIHNhbWUgZm9yIGFsbCB0aGUg ZXZlbnRzIGR1cmluZyBhIHBlcmYgcmVjb3JkIHNlc3Npb24uCj4+Cj4+ICRwZXJmIHJlY29yZCAt ZSA8ZXZlbnRfMT4gLWUgPGV2ZW50XzI+IC1qIDxicmFuY2hfZmlsdGVycz4gW3dvcmtsb2FkXQo+ Pgo+PiBldmVudF8xLT5hdHRyLmJyYW5jaF9zYW1wbGVfdHlwZSA9PSBldmVudF8yLT5hdHRyLmJy YW5jaF9zYW1wbGVfdHlwZQo+Pgo+PiBUaGlzICdicmFuY2hfc2FtcGxlX3R5cGUnIGlzIHVzZWQg dG8gY29uZmlndXJlIHRoZSBCUkJFIGhhcmR3YXJlLCB3aGVuIGJvdGgKPj4gZXZlbnRzIGkuZSA8 ZXZlbnRfMT4gYW5kIDxldmVudF8yPiBnZXQgc2NoZWR1bGVkIG9uIGEgZ2l2ZW4gUE1VLiBCdXQg ZHVyaW5nCj4+IFBNVSBIVyBldmVudCdzIHByaXZpbGVnZSBmaWx0ZXIgaW5oZXJpdGFuY2UsICdi cmFuY2hfc2FtcGxlX3R5cGUnIGRvZXMgbm90Cj4+IHJlbWFpbiB0aGUgc2FtZSBmb3IgYWxsIGV2 ZW50cy4gTGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlCj4+Cj4+ICRwZXJmIHJl Y29yZCAtZSBjeWNsZXM6dSAtZSBpbnN0cnVjdGlvbnM6ayAtaiBhbnksc2F2ZV90eXBlIGxzCj4+ Cj4+IGN5Y2xlcy0+YXR0ci5icmFuY2hfc2FtcGxlX3R5cGUgIT0gaW5zdHJ1Y3Rpb25zLT5hdHRy LmJyYW5jaF9zYW1wbGVfdHlwZQo+Pgo+PiBCZWNhdXNlIGN5Y2xlcyBldmVudCBpbmhlcml0cyBQ RVJGX1NBTVBMRV9CUkFOQ0hfVVNFUiBhbmQgaW5zdHJ1Y3Rpb24gZXZlbnQKPj4gaW5oZXJpdHMg UEVSRl9TQU1QTEVfQlJBTkNIX0tFUk5FTC4gVGhlIHByb3Bvc2VkIHNvbHV0aW9uIGhlcmUgY29u ZmlndXJlcwo+PiBCUkJFIGhhcmR3YXJlIHdpdGggJ2JyYW5jaF9zYW1wbGVfdHlwZScgZnJvbSBs YXN0IGV2ZW50IHRvIGJlIGFkZGVkIGluIHRoZQo+PiBQTVUgYW5kIGhlbmNlIGNhcHR1cmVkIGJy YW5jaCByZWNvcmRzIG9ubHkgZ2V0IHBhc3NlZCBvbiB0byBtYXRjaGluZyBldmVudHMKPj4gZHVy aW5nIGEgUE1VIGludGVycnVwdC4KPj4KPj4gc3RhdGljIGludAo+PiBhcm1wbXVfYWRkKHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQo+PiB7Cj4+IMKgwqDCoMKgLi4uLi4uLi4K Pj4gwqDCoMKgwqBpZiAoaGFzX2JyYW5jaF9zdGFjayhldmVudCkpIHsKPj4gwqDCoMKgwqDCoMKg wqAgLyoKPj4gwqDCoMKgwqDCoMKgwqDCoCAqIFJlc2V0IGJyYW5jaCByZWNvcmRzIGJ1ZmZlciBp ZiBhIG5ldyB0YXNrIGV2ZW50IGdldHMKPj4gwqDCoMKgwqDCoMKgwqDCoCAqIHNjaGVkdWxlZCBv biBhIFBNVSB3aGljaCBtaWdodCBoYXZlIGV4aXN0aW5nIHJlY29yZHMuCj4+IMKgwqDCoMKgwqDC oMKgwqAgKiBPdGhlcndpc2Ugb2xkZXIgYnJhbmNoIHJlY29yZHMgcHJlc2VudCBpbiB0aGUgYnVm ZmVyCj4+IMKgwqDCoMKgwqDCoMKgwqAgKiBtaWdodCBsZWFrIGludG8gdGhlIG5ldyB0YXNrIGV2 ZW50Lgo+PiDCoMKgwqDCoMKgwqDCoMKgICovCj4+IMKgwqDCoMKgwqDCoMKgIGlmIChldmVudC0+ Y3R4LT50YXNrICYmIGh3X2V2ZW50cy0+YnJiZV9jb250ZXh0ICE9IGV2ZW50LT5jdHgpIHsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod19ldmVudHMtPmJyYmVfY29udGV4dCA9IGV2ZW50LT5j dHg7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFybXBtdS0+YnJhbmNoX3Jlc2V0KQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJtcG11LT5icmFuY2hfcmVzZXQoKTsK Pj4gwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoCBod19ldmVudHMtPmJyYmVfdXNl cnMrKzsKPj4gSGVyZSAtLS0tLS0tPsKgwqDCoCBod19ldmVudHMtPmJyYmVfc2FtcGxlX3R5cGUg PSBldmVudC0+YXR0ci5icmFuY2hfc2FtcGxlX3R5cGU7Cj4+IMKgwqDCoMKgfQo+PiDCoMKgwqDC oC4uLi4uLi4uCj4+IH0KPj4KPj4gSW5zdGVhZCBvZiBvdmVycmlkaW5nIGV4aXN0aW5nICdicmFu Y2hfc2FtcGxlX3R5cGUnLCBib3RoIGNvdWxkIGJlIG1lcmdlZC4KPj4KPj4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIFZpcnR1YWxpc2F0aW9uIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4+Cj4+IC0gQnJhbmNoIHN0YWNrIHNhbXBsaW5nIGlzIG5vdCBjdXJyZW50bHkgc3Vw cG9ydGVkIGluc2lkZSB0aGUgZ3Vlc3QgKFRPRE8pCj4+Cj4+IMKgwqDCoMKgLSBGRUFUX0JSQkUg YWR2ZXJ0aXNlZCBhcyBhYnNlbnQgdmlhIGNsZWFyaW5nIElEX0FBNjRERlIwX0VMMS5CUkJFCj4+ IMKgwqDCoMKgLSBGdXR1cmUgc3VwcG9ydCBpbiBndWVzdCByZXF1aXJlcyBlbXVsYXRpbmcgRkVB VF9CUkJFCj4+Cj4+IC0gQnJhbmNoIHN0YWNrIHNhbXBsaW5nIHRoZSBndWVzdCBpcyBub3Qgc3Vw cG9ydGVkIGluIHRoZSBob3N0wqDCoMKgwqDCoCAoVE9ETykKPj4KPj4gwqDCoMKgwqAtIFRyYWNp bmcgdGhlIGd1ZXN0IHdpdGggZXZlbnQtPmF0dHIuZXhjbHVkZV9ndWVzdCA9IDAKPj4gwqDCoMKg wqAtIFRoZXJlIGFyZSBtdWx0aXBsZSBjaGFsbGVuZ2VzIGludm9sdmVkIHJlZ2FyZGluZyBtaXhp bmcgZXZlbnRzCj4+IMKgwqDCoMKgwqAgd2l0aCBtaXNtYXRjaGVkIGJyYW5jaF9zYW1wbGVfdHlw ZSBhbmQgZXhjbHVkZV9ndWVzdCBhbmQgcGFzc2luZwo+PiDCoMKgwqDCoMKgIG9uIGNhcHR1cmVk IEJSQkUgcmVjb3JkcyB0byBpbnRlbmRlZCBldmVudHMgZHVyaW5nIFBNVSBpbnRlcnJ1cHQKPj4K Pj4gLSBHdWVzdCBhY2Nlc3MgZm9yIEJSQkUgcmVnaXN0ZXJzIGFuZCBpbnN0cnVjdGlvbnMgaGFz IGJlZW4gYmxvY2tlZAo+Pgo+PiAtIEJSQkUgc3RhdGUgc2F2ZSBpcyBub3QgcmVxdWlyZWQgZm9y IFZIRSBob3N0IChFTDIpIGd1ZXN0IChFTDEpIHRyYW5zaXRpb24KPj4KPj4gLSBCUkJFIHN0YXRl IGlzIHNhdmVkIGZvciBOVkhFIGhvc3QgKEVMMSkgZ3Vlc3QgKEVMMSkgdHJhbnNpdGlvbgo+Pgo+ PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUZXN0aW5nIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+PiAtIENyb3NzIGNvbXBpbGVkIGZvciBib3RoIGFybTY0 IGFuZCBhcm0zMiBwbGF0Zm9ybXMKPj4gLSBQYXNzZXMgYWxsIGJyYW5jaCB0ZXN0cyB3aXRoICdw ZXJmIHRlc3QgYnJhbmNoJyBvbiBhcm02NAo+Pgo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSBRdWVzdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+PiAt IEluc3RlYWQgb2YgY29uZmlndXJpbmcgdGhlIEJSQkUgSFcgd2l0aCBicmFuY2hfc2FtcGxlX3R5 cGUgZnJvbSB0aGUgbGFzdAo+PiDCoMKgIGV2ZW50IHRvIGJlIGFkZGVkIG9uIHRoZSBQTVUgYXMg cHJvcG9zZWQsIGNvdWxkIHRob3NlIGJlIG1lcmdlZCB0b2dldGhlcgo+PiDCoMKgIGUuZyBhbGwg cHJpdmlsZWdlIHJlcXVlc3RzIE9SZWQsIHRvIGZvcm0gYSBjb21tb24gQlJCRSBjb25maWd1cmF0 aW9uIGFuZAo+PiDCoMKgIGFsbCBldmVudHMgZ2V0IGJyYW5jaCByZWNvcmRzIGFmdGVyIGEgUE1V IGludGVycnVwdCA/Cj4+Cj4+IENoYW5nZXMgaW4gVjE3Ogo+Pgo+PiAtIEFkZGVkIGJhY2sgUmV2 aWV3ZWQtYnkgdGFncyBmcm9tIE1hcmsgQnJvd24KPj4gLSBVcGRhdGVkIHRoZSBjb21taXQgbWVz c2FnZSByZWdhcmRpbmcgdGhlIGZpZWxkIEJSQklORnhfRUwxX1RZUEVfSU1QREVGX1RSQVBfRUwz Cj4+IC0gQWRkZWQgbGVhZGluZyAwcyBmb3IgYWxsIHZhbHVlcyBhcyBCUkJJRFIwX0VMMS5OVU1S RUMgaXMgYSA4IGJpdCBmaWVsZAo+PiAtIEFkZGVkIGxlYWRpbmcgMHMgZm9yIGFsbCB2YWx1ZXMg YXMgQlJCRkNSX0VMMS5CQU5LIGlzIGEgMiBiaXQgZmllbGQKPj4gLSBSZW9yZGVyZWQgQlJCQ1Jf RUwxL0JSQkNSX0VMMTIvQlJCQ1JfRUwyIHJlZ2lzdGVycyBhcyBwZXIgc3lzcmVnIGVuY29kaW5n cwo+PiAtIFJlbmFtZWQgcy9GSVJTVC9CQU5LXzAgYW5kIHMvU0VDT05EL0JBTktfMSBpbiBCUkJG Q1JfRUwxLkJBTksKPj4gLSBSZW5hbWVkIHMvVU5DT05EX0RJUkVDVC9ESVJFQ1RfVU5DT05EIGlu IEJSQklORnhfRUwxLlRZUEUKPj4gLSBSZW5hbWVkIHMvQ09ORF9ESVJFQ1QvRElSRUNUX0NPTkQg aW4gQlJCSU5GeF9FTDEuVFlQRQo+PiAtIERyb3BwZWQgX19TWVNfQlJCSU5GL19fU1lTX0JSQlNS Qy9fX1NZU19CUkJUR1QgYW5kIHRoZWlyIGV4cGFuc2lvbnMKPj4gLSBNb3ZlZCBhbGwgZXhpc3Rp bmcgQlJCRSByZWdpc3RlcnMgZnJvbSBzeXNyZWcuaCBoZWFkZXIgdG8gdG9vbHMvc3lzcmVnIGZv cm1hdAo+PiAtIFVwZGF0ZWQgdGhlIGNvbW1pdCBtZXNzYWdlIGluY2x1ZGluZyBhYm91dCBzeXNf aW5zbl9kZXNjc1tdCj4+IC0gQ2hhbmdlZCBLVk0gdG8gdXNlIGV4aXN0aW5nIFNZU19CUkJTUkMv VEdUL0lORl9FTDEobikgZm9ybWF0Cj4+IC0gTW92ZWQgdGhlIEJSQkUgaW5zdHJ1Y3Rpb25zIGlu dG8gc3lzX2luc25fZGVzY3NbXSBhcnJheQo+PiAtIEFSTSBQTVVWMyBjaGFuZ2VzIGhhdmUgYmVl biBtb3ZlZCBpbnRvIHRoZSBCUkJFIGRyaXZlciBwYXRjaCBpbnN0ZWFkCj4+IC0gTW92ZWQgZG93 biBicmFuY2hfc3RhY2tfYWRkKCkgaW4gYXJtcG11X2FkZCgpIGFmdGVyIGV2ZW50J3MgYmFzaWMg Y2hlY2tzCj4+IC0gQWRkZWQgbmV3IGNhbGxiYWNrcyBpbiBzdHJ1Y3QgYXJtX3BtdSBlLmcgYnJh bmNoX3N0YWNrX1tpbml0fGFkZHxkZWxdKCkKPj4gLSBSZW5hbWVkIHN0cnVjdCBhcm1fcG11IGNh bGxiYWNrIGJyYW5jaF9yZXNldCgpIGFzIGJyYW5jaF9zdGFja19yZXNldCgpCj4+IC0gRHJvcHBl ZCB0aGUgY29tbWVudCBpbiBhcm1wbXVfZXZlbnRfaW5pdCgpCj4+IC0gUmVuYW1lZCAncG11X2h3 X2V2ZW50cycgZWxlbWVudHMgZnJvbSAnYnJiZV8nIHRvIG1vcmUgZ2VuZXJpYyAnYnJhbmNoXycK Pj4gLSBTZXBhcmF0ZWQgb3V0IGZyb20gdGhlIEJSQkUgZHJpdmVyIGltcGxlbWVudGF0aW9uIHBh dGNoCj4+IC0gRHJvcHBlZCB0aGUgY29tbWVudCBpbiBfX2luaXRfZWwyX2JyYmUoKQo+PiAtIFVw ZGF0ZWQgX19pbml0X2VsMl9icmJlKCkgd2l0aCBCUkJDUl9FTDIuTVBSRUQgcmVxdWlyZW1lbnRz Cj4+IC0gVXBkYXRlZCBfX2luaXRfZWwyX2JyYmUoKSB3aXRoIF9fY2hlY2tfaHZoZSgpIGNvbnN0 cnVjdHMKPj4gLSBVcGRhdGVkIGJvb3RpbmcucnN0IHJlZ2FyZGluZyBNUFJFRCwgTURDUl9FTDMg YW5kIGZpbmUgZ3JhaW5lZCBjb250cm9sCj4+IC0gRHJvcHBlZCBEb2N1bWVudGF0aW9uL2FyY2gv YXJtNjQvYnJiZS5yc3QKPj4gLSBSZW5hbWVkIGFybXY4cG11X2JyYW5jaF9yZXNldCgpIGFzIGFy bXY4cG11X2JyYW5jaF9zdGFja19yZXNldCgpCj4+IC0gU2VwYXJhdGVkIG91dCBib290aW5nLnJz dCBhbmQgRUwyIGJvb3QgcmVxdWlyZW1lbnRzIGludG8gYSBuZXcgcGF0Y2gKPj4gLSBEcm9wcGVk IHByb2Nlc3NfYnJhbmNoX2Fib3J0cygpIGNvbXBsZXRlbHkKPj4gLSBBZGRlZCBhbiB3YXJuaW5n IGlmIHRyYW5zYWN0aW9uIHN0YXRlcyBnZXQgZGV0ZWN0ZWQgdW5leHBlY3RlZGx5Cj4+IC0gRHJv cHBlZCBlbnVtIGJyYmVfYmFua19pZHggZnJvbSB0aGUgZHJpdmVyCj4+IC0gRGVmaW5lZCBhcm12 OHBtdV9icmFuY2hfc3RhY2tfaW5pdC9hZGQvZGVsKCkgY2FsbGJhY2tzIGluIHRoZSBkcml2ZXIK Pj4gLSBDaGFuZ2VkIEJSQkUgZHJpdmVyIHRvIHVzZSBleGlzdGluZyBTWVNfQlJCU1JDL1RHVC9J TkZfRUwxKG4pIGZvcm1hdAo+PiAtIERyb3BwZWQgaXNiKCkgY2FsbCBzaXRlcyBpbsKgIF9fZGVi dWdfW3NhdmV8cmVzdG9yZV1fYnJiZSgpCj4+IC0gQ2hhbmdlZCB0byBbcmVhZHx3cml0ZV1fc3lz cmVnX2VsMSgpIGFjY2Vzc29ycyBpbiBfX2RlYnVnX1tzYXZlfHJlc3RvcmVdX2JyYmUoKQo+Pgo+ PiBDaGFuZ2VzIGluIFYxNgo+Pgo+PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNDAx MjUwOTQxMTkuMjU0MjMzMi0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4+Cj4+IC0gVXBk YXRlZCBCUkJJTkZ4X0VMMS5UWVBFID0gMGIxMTAwMDAgYXMgZmllbGQgSU1QREVGX1RSQVBfRUwz Cj4+IC0gVXBkYXRlZCBCUkJDUl9FTHhbOV0gYXMgZmllbGQgRlpQU1MKPj4gLSBVcGRhdGVkIEJS QklORklOSl9FTDEgdG8gdXNlIHN5c3JlZyBmaWVsZCBCUkJJTkZ4X0VMMQo+PiAtIEFkZGVkIEJS Ql9JTkZfU1JDX1RHVF9FTDEgbWFjcm8gZm9yIGNvcnJlc3BvbmRpbmcgQlJCX1tJTkZ8U1JDfFRH VF0gZXhwYW5zaW9uCj4+IC0gUmVuYW1lZCBhcm1fYnJiZS5oIGFzIGFybV9wbXV2M19icmFuY2gu aAo+PiAtIFVwZGF0ZWQgcGVyZl9zYW1wbGVfc2F2ZV9icnN0YWNrKCkncyBuZXcgYXJndW1lbnQg cmVxdWlyZW1lbnRzIHdpdGggTlVMTAo+PiAtIEZpeGVkIHR5cG8gKHMvaW5mb3JtYXRpb25zL2lu Zm9ybWF0aW9uKSBpbiBEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvYnJiZS5yc3QKPj4gLSBBZGRl ZCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllciBpbiBEb2N1bWVudGF0aW9uL2FyY2gvYXJtNjQvYnJi ZS5yc3QKPj4gLSBBZGRlZCBuZXcgUEVSRl9TQU1QTEVfQlJBTkNIX0NPVU5URVJTIGludG8gQlJC RV9FWENMVURFX0JSQU5DSF9GSUxURVJTCj4+IC0gRHJvcHBlZCBCUkJGQ1JfRUwxIGFuZCBCUkJD Ul9FTDEgZnJvbSBlbnVtIHZjcHVfc3lzcmVnCj4+IC0gUmV2ZXJ0ZWQgYmFjayB0aGUgS1ZNIE5W SEUgcGF0Y2ggLSB1c2UgaG9zdF9kZWJ1Z19zdGF0ZSBiYXNlZCAnYnJiY3JfZWwxJwo+PiDCoMKg IGVsZW1lbnQgYW5kIGRyb3BwZWQgdGhlIHByZXZpb3VzIGRlcGVuZGVuY3kgb24gSmFtZSdzIGNv cmVzaWdodCBzZXJpZXMKPj4KPj4gQ2hhbmdlcyBpbiBWMTU6Cj4+Cj4+IGh0dHBzOi8vbG9yZS5r ZXJuZWwub3JnL2FsbC8yMDIzMTIwMTA1MzkwNi4xMjYxNzA0LTEtYW5zaHVtYW4ua2hhbmR1YWxA YXJtLmNvbS8KPj4KPj4gLSBBZGRlZCBhIGNvbW1lbnQgZm9yIGFybXY4cG11X2JyYW5jaF9wcm9i ZSgpIHJlZ2FyZGluZyBzaW5nbGUgY3B1IHByb2JlCj4+IC0gQWRkZWQgYSB0ZXh0IGluIGJyYmUu cnN0IHJlZ2FyZGluZyBzaW5nbGUgY3B1IHByb2JlCj4+IC0gRHJvcHBlZCBydW50aW1lIEJSQkUg ZW5hYmxlIGZvciBzZXR0aW5nIERFQlVHX1NUQVRFX1NBVkVfQlJCRQo+PiAtIERyb3BwZWQgemVy b19icmFuY2hfc3RhY2sgYmFzZWQgemVybyBicmFuY2ggcmVjb3JkcyBtZWNoYW5pc20KPj4gLSBS ZXBsYWNlZCBCUkJGQ1JfRUwxX0RFRkFVTFRfQ09ORklHIHdpdGggQlJCRkNSX0VMMV9DT05GSUdf TUFTSwo+PiAtIEFkZGVkIEJSQkZDUl9FTDFfQ09ORklHX01BU0sgbWFza2luZyBpbiBicmFuY2hf dHlwZV90b19icmJmY3IoKQo+PiAtIE1vdmVkIEJSQkUgaGVscGVycyBmcm9tIGFybV9icmJlLmgg aW50byBhcm1fYnJiZS5jCj4+IC0gTW92ZWQgYXJtdjhfcG11X3h4eCgpIGRlY2xhcmF0aW9uIGlu c2lkZSBhcm1fYnJiZS5oIGZvciBhcm02NCAoQ09ORklHX0FSTTY0X0JSQkUpCj4+IC0gTW92ZWQg YXJtdjhfcG11X3h4eCgpIHN0dWIgZGVmaW5pdGlvbnMgaW5zaWRlIGFybV9icmJlLmggZm9yIGFy bTMyICghQ09ORklHX0FSTTY0X0JSQkUpCj4+IC0gSW5jbHVkZWQgYXJtX2JyYmUuaCBoZWFkZXIg Ym90aCBpbiBhcm1fcG11djMuYyBhbmQgYXJtX2JyYmUuYwo+PiAtIERyb3BwZWQgQlJCRSBjdXN0 b20gcHJfZm10KCkKPj4gLSBEcm9wcGVkIENPTkZJR19QRVJGX0VWRU5UUyB3cmFwcGluZyBmcm9t IGhlYWRlciBlbnRyaWVzCj4+IC0gRmx1c2ggYnJhbmNoIHJlY29yZHMgd2hlbiBhIGNwdSBib3Vu ZCBldmVudCBmb2xsb3dzIGEgdGFzayBib3VuZCBldmVudAo+PiAtIERyb3BwZWQgQlJCRkNSX0VM MSBmcm9tIF9fZGVidWdfc2F2ZV9icmJlKCkvX19kZWJ1Z19yZXN0b3JlX2JyYmUoKQo+PiAtIEFs d2F5cyBzYXZlIHRoZSBsaXZlIFNZU19CUkJDUl9FTDEgaW4gaG9zdCBjb250ZXh0IGFuZCB0aGVu IGNoZWNrIGlmCj4+IMKgwqAgQlJCRSB3YXMgZW5hYmxlZCBiZWZvcmUgcmVzZXR0aW5nIFNZU19C UkJDUl9FTDEgZm9yIHRoZSBob3N0Cj4+Cj4+IENoYW5nZXMgaW4gVjE0Ogo+Pgo+PiBodHRwczov L2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzExMTQwNTEzMjkuMzI3NTcyLTEtYW5zaHVtYW4ua2hh bmR1YWxAYXJtLmNvbS8KPj4KPj4gLSBUaGlzIHNlcmllcyBoYXMgYmVlbiByZW9yZ2FuaXNlZCBh cyBzdWdnZXN0ZWQgZHVyaW5nIFYxMwo+PiAtIFRoZXJlIGFyZSBqdXN0IGVpZ2h0IHBhdGNoZXMg bm93IGkuZSA1IGVuYWJsZW1lbnQgYW5kIDMgcGVyZiBicmFuY2ggdGVzdHMKPj4KPj4gLSBGaXhl ZCBicmFja2V0cyBwcm9ibGVtIGluIF9fU1lTX0JSQklORk8vQlJCU1JDL0JSQlRHVCgpIG1hY3Jv cwo+PiAtIFJlbmFtZWQgdGhlIG1hY3JvIGkuZSBzL19fU1lTX0JSQklORk8vX19TWVNfQlJCSU5G Lwo+PiAtIFJlbmFtZWQgcy9CUkJfSUFMTC9CUkJfSUFMTF9JTlNOIGFuZCBzL0JSQkVfSU5KL0JS Ql9JTkpfSU5TTgo+PiAtIE1vdmVkIEJSQl9JQUxMX0lOU04gYW5kIFNZU19CUkJfSU5TTiBpbnN0 cnVjdGlvbnMgdG8gc3lzcmVnIHBhdGNoCj4+IC0gQ2hhbmdlZCBFMUJSRSBhcyBFeEJSRSBpbiBz eXNyZWcgZmllbGRzIGluc2lkZSBCUkJDUl9FTHgKPj4gLSBVc2VkIEJSQkNSX0VMeCBmb3IgZGVm aW5pbmcgYWxsIEJSQkNSX0VMMSwgQlJCQ1JfRUwyLCBhbmQgQlJCQ1JfRUwxMiAobmV3KQo+Pgo+ PiAtIEZvbGRlZCB0aGUgZm9sbG93aW5nIHRocmVlIHBhdGNoZXMgaW50byBhIHNpbmdsZSBwYXRj aCBpLmUgW1BBVENIIDMvOF0KPj4KPj4gwqDCoCBkcml2ZXJzOiBwZXJmOiBhcm1fcG11OiBBZGQg bmV3IHNjaGVkX3Rhc2soKSBjYWxsYmFjawo+PiDCoMKgIGFybTY0L3BlcmY6IEFkZCBicmFuY2gg c3RhY2sgc3VwcG9ydCBpbiBzdHJ1Y3QgYXJtX3BtdQo+PiDCoMKgIGFybTY0L3BlcmY6IEFkZCBi cmFuY2ggc3RhY2sgc3VwcG9ydCBpbiBzdHJ1Y3QgcG11X2h3X2V2ZW50cwo+PiDCoMKgIGFybTY0 L3BlcmY6IEFkZCBicmFuY2ggc3RhY2sgc3VwcG9ydCBpbiBBUk1WOCBQTVUKPj4gwqDCoCBhcm02 NC9wZXJmOiBBZGQgUEVSRl9BVFRBQ0hfVEFTS19EQVRBIHRvIGV2ZW50cyB3aXRoIGhhc19icmFu Y2hfc3RhY2soKQo+Pgo+PiAtIEFsbCBhcm12OHBtdV9icmFuY2hfeHh4eCgpIHN0dWIgZGVmaW5p dGlvbnMgaGF2ZSBiZWVuIG1vdmVkIGluc2lkZQo+PiDCoMKgIGluY2x1ZGUvbGludXgvcGVyZi9h cm1fcG11djMuaCBmb3IgZWFzeSBhY2Nlc3MgZnJvbSBib3RoIGFybTMyIGFuZCBhcm02NAo+PiAt IEFkZGVkIGJyYmVfdXNlcnMsIGJyYmVfY29udGV4dCBhbmQgYnJiZV9zYW1wbGVfdHlwZSBpbiBz dHJ1Y3QgcG11X2h3X2V2ZW50cwo+PiAtIEFkZGVkIGNvbW1lbnRzIGZvciBhbGwgdGhlIGFib3Zl IG5ldyBlbGVtZW50cyBpbiBzdHJ1Y3QgcG11X2h3X2V2ZW50cwo+PiAtIEFkZGVkIGJyYW5jaF9y ZXNldCgpIGFuZCBzY2hlZF90YXNrKCkgY2FsbGJhY2tzCj4+IC0gQ2hhbmdlZCBhbmQgb3B0aW1p emVkIGJyYW5jaCByZWNvcmRzIHByb2Nlc3NpbmcgZHVyaW5nIGEgUE1VIElSUQo+PiAtIE5PIGJy YW5jaCByZWNvcmRzIGdldCBjYXB0dXJlZCBmb3IgZXZlbnQgd2l0aCBtaXNtYXRjaGVkIGJyYmVf c2FtcGxlX3R5cGUKPj4gLSBCcmFuY2ggcmVjb3JkIGNvbnRleHQgaXMgdHJhY2tlZCBmcm9tIGFy bXBtdV9kZWwoKSAmIGFybXBtdV9hZGQoKQo+PiAtIEJyYW5jaCByZWNvcmQgaGFyZHdhcmUgaXMg ZHJpdmVuIGZyb20gYXJtdjhwbXVfc3RhcnQoKSAmIGFybXY4cG11X3N0b3AoKQo+PiAtIERyb3Bw ZWQgTlVMTCBjaGVjayBmb3IgJ3BtdV9jdHgnIGluc2lkZSBhcm12OHBtdV9zY2hlZF90YXNrKCkK Pj4gLSBNb3ZlZCBkb3duIFBFUkZfQVRUQUNIX1RBU0tfREFUQSBhc3NpZ25tZW50IHdpdGggYSBw cmVjZWRpbmcgY29tbWVudAo+PiAtIEluIGNvbmZsaWN0aW5nIGJyYW5jaCBzYW1wbGUgdHlwZSBy ZXF1ZXN0cywgZmlyc3QgZXZlbnQgdGFrZXMgcHJlY2VkZW5jZQo+Pgo+PiAtIEZvbGRlZCB0aGUg Zm9sbG93aW5nIGZpdmUgcGF0Y2hlcyBmcm9tIFYxMyBpbnRvIGEgc2luZ2xlIHBhdGNoIGkuZQo+ PiDCoMKgIFtQQVRDSCA0LzhdCj4+Cj4+IMKgwqAgYXJtNjQvcGVyZjogRW5hYmxlIGJyYW5jaCBz dGFjayBldmVudHMgdmlhIEZFQVRfQlJCRQo+PiDCoMKgIGFybTY0L3BlcmY6IEFkZCBzdHJ1Y3Qg YnJiZV9yZWdzZXQgaGVscGVyIGZ1bmN0aW9ucwo+PiDCoMKgIGFybTY0L3BlcmY6IEltcGxlbWVu dCBicmFuY2ggcmVjb3JkcyBzYXZlIG9uIHRhc2sgc2NoZWQgb3V0Cj4+IMKgwqAgYXJtNjQvcGVy ZjogSW1wbGVtZW50IGJyYW5jaCByZWNvcmRzIHNhdmUgb24gUE1VIElSUQo+Pgo+PiAtIEZpeGVk IHRoZSB5ZWFyIGluIGNvcHlyaWdodCBzdGF0ZW1lbnQKPj4gLSBBZGRlZCBEb2N1bWVudGF0aW9u L2FyY2gvYXJtNjQvYnJiZS5yc3QKPj4gLSBVcGRhdGVkIERvY3VtZW50YXRpb24vYXJjaC9hcm02 NC9ib290aW5nLnJzdCAoQlJCQ1JfRUwyLkNDIGZvciBFTDEgZW50cnkpCj4+IC0gQWRkZWQgX19p bml0X2VsMl9icmJlKCkgd2hpY2ggZW5hYmxlcyBicmFuY2ggcmVjb3JkIGN5Y2xlIGNvdW50IHN1 cHBvcnQKPj4gLSBEaXNhYmxlZCBFTDIgdHJhcHMgaW4gX19pbml0X2VsMl9mZ3QoKSB3aGlsZSBh Y2Nlc3NpbmcgQlJCRSByZWdpc3RlcnMgYW5kCj4+IMKgwqAgZXhlY3V0aW5nIGluc3RydWN0aW9u cwo+PiAtIENoYW5nZWQgQ09ORklHX0FSTTY0X0JSQkUgdXNlciB2aXNpYmxlIGRlc2NyaXB0aW9u Cj4+IC0gRml4ZWQgYSB0eXBvIGluIENPTkZJR19BUk02NF9CUkJFIGNvbmZpZyBvcHRpb24gZGVz Y3JpcHRpb24gdGV4dAo+PiAtIEFkZGVkIEJVSUxEX0JVR19PTigpIGNvLXJlbGF0aW5nIEJSQkVf QkFOS19NQVhfRU5UUklFUyBhbmQgTUFYX0JSQU5DSF9SRUNPUkRTCj4+IC0gRHJvcHBlZCBhcm02 NF9jcmVhdGVfYnJiZV90YXNrX2N0eF9rbWVtX2NhY2hlKCkKPj4gLSBNb3ZlZCBkb3duIGNvbW1l bnQgZm9yIFBFUkZfU0FNUExFX0JSQU5DSF9LRVJORUwgaW4gYnJhbmNoX3R5cGVfdG9fYnJiY3Io KQo+PiAtIFJlbmFtZWQgQlJCQ1JfRUx4X0RFRkFVTFRfQ09ORklHIGFzIEJSQkNSX0VMeF9DT05G SUdfTUFTSwo+PiAtIFJlcGxhY2VkIEJSQkNSX0VMeF9ERUZBVUxUX1RTIHdpdGggQlJCQ1JfRUx4 X1RTX01BU0sgaW4gQlJCQ1JfRUx4X0NPTkZJR19NQVNLCj4+IC0gUmVwbGFjZWQgQlJCQ1JfRUx4 X0UxQlJFIGluc3RhbmNlcyB3aXRoIEJSQkNSX0VMeF9FeEJSRQo+Pgo+PiAtIEFkZGVkIEJSQkUg c3BlY2lmaWMgYnJhbmNoIHN0YWNrIHNhbXBsaW5nIHBlcmYgdGVzdCBwYXRjaGVzIGludG8gdGhl IHNlcmllcwo+PiAtIEFkZGVkIGEgcGF0Y2ggdG8gcHJldmVudCBndWVzdCBhY2Nlc3NlcyBpbnRv IEJSQkUgcmVnaXN0ZXJzIGFuZCBpbnN0cnVjdGlvbnMKPj4gLSBBZGRlZCBhIHBhdGNoIHRvIHNh dmUgdGhlIEJSQkUgaG9zdCBjb250ZXh0IGluIE5WSEUgZW52aXJvbm1lbnQKPj4gLSBVcGRhdGVk IG1vc3QgY29tbWl0IG1lc3NhZ2VzCj4+Cj4+IENoYW5nZXMgaW4gVjEzOgo+Pgo+PiBodHRwczov L2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzA3MTEwODI0NTUuMjE1OTgzLTEtYW5zaHVtYW4ua2hh bmR1YWxAYXJtLmNvbS8KPj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwNjIyMDY1 MzUxLjEwOTI4OTMtMS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Pgo+PiAtIEFkZGVkIGJy YW5jaCBjYWxsYmFjayBzdHVicyBmb3IgYWFyY2gzMiBwbXV2MyBiYXNlZCBwbGF0Zm9ybXMKPj4g LSBVcGRhdGVkIHRoZSBjb21tZW50cyBmb3IgY2FwdHVyZV9icmJlX3JlZ3NldCgpCj4+IC0gRGVs ZXRlZCB0aGUgY29tbWVudHMgaW4gX19yZWFkX2JyYmVfcmVnc2V0KCkKPj4gLSBSZXZlcnNlZCB0 aGUgYXJndW1lbnRzIG9yZGVyIGluIGNhcHR1cmVfYnJiZV9yZWdzZXQoKSBhbmQgYnJiZV9icmFu Y2hfc2F2ZSgpCj4+IC0gRml4ZWQgQlJCRV9CQU5LWzB8MV1fSURYX01BWCBpbmRpY2VzIGNvbXBh cmlzb24gaW4gYXJtdjhwbXVfYnJhbmNoX3JlYWQoKQo+PiAtIEZpeGVkIEJSQkVfQkFOS1swfDFd X0lEWF9NQVggaW5kaWNlcyBjb21wYXJpc29uIGluIGNhcHR1cmVfYnJiZV9yZWdzZXQoKQo+Pgo+ PiBDaGFuZ2VzIGluIFYxMjoKPj4KPj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMw NjE1MTMzMjM5LjQ0MjczNi0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4+Cj4+IC0gUmVw bGFjZWQgYnJhbmNoIHR5cGVzIHdpdGggY29tcGxldGUgRElSRUNUL0lORElSRUNUIHByZWZpeGVz L3N1ZmZpeGVzCj4+IC0gUmVwbGFjZWQgYnJhbmNoIHR5cGVzIHdpdGggY29tcGxldGUgSU5TTi9B TElHTiBwcmVmaXhlcy9zdWZmaXhlcwo+PiAtIFJlcGxhY2VkIHJldHVybiBicmFuY2ggdHlwZXMg YXMgc2ltcGxlIFJFVC9FUkVUCj4+IC0gUmVwbGFjZWQgdGltZSBmaWVsZCBHU1RfUEhZU0lDQUwg YXMgR1VFU1RfUEhZU0lDQUwKPj4gLSBBZGRlZCAwIHBhZGRpbmcgZm9yIEJSQklEUjBfRUwxLk5V TVJFQyBlbnVtIHZhbHVlcwo+PiAtIERyb3BwZWQgaGVscGVyIGFybV9wbXVfYnJhbmNoX3N0YWNr X3N1cHBvcnRlZCgpCj4+IC0gUmVuYW1lZCBhcm12OHBtdV9icmFuY2hfdmFsaWQoKSBhcyBhcm12 OHBtdV9icmFuY2hfYXR0cl92YWxpZCgpCj4+IC0gU2VwYXJhdGVkIHBlcmZfdGFza19jdHhfY2Fj aGUgc2V0dXAgZnJvbSBhcm1fcG11IHByaXZhdGUgYWxsb2NhdGlvbgo+PiAtIENvbGxlY3RlZCBj aGFuZ2VzIHRvIGJyYW5jaF9yZWNvcmRzX2FsbG9jKCkgaW4gYSBzaW5nbGUgcGF0Y2ggWzUvMTBd Cj4+IC0gUmV3b3JrZWQgYW5kIGNsZWFuZWQgdXAgYnJhbmNoX3JlY29yZHNfYWxsb2MoKQo+PiAt IFJld29ya2VkIGFybXY4cG11X2JyYW5jaF9yZWFkKCkgd2l0aCBuZXcgbG9vcCBpdGVyYXRpb25z IGluIHBhdGNoIFs2LzEwXQo+PiAtIFJld29ya2VkIGNhcHR1cmVfYnJiZV9yZWdzZXQoKSB3aXRo IG5ldyBsb29wIGl0ZXJhdGlvbnMgaW4gcGF0Y2ggWzgvMTBdCj4+IC0gVXBkYXRlZCB0aGUgY29t bWVudCBpbiBicmFuY2hfdHlwZV90b19icmJjcigpCj4+IC0gRml4ZWQgdGhlIGNvbW1lbnQgYmVm b3JlIHN0aXRjaF9zdG9yZWRfbGl2ZV9lbnRyaWVzKCkKPj4gLSBGaXhlZCBCUkJJTkZJTkpfRUwx IGRlZmluaXRpb24gZm9yIFZBTElEX0ZVTEwgZW51bSBmaWVsZAo+PiAtIEZhY3RvcmVkIG91dCBo ZWxwZXIgX19yZWFkX2JyYmVfcmVnc2V0KCkgZnJvbSBjYXB0dXJlX2JyYmVfcmVnc2V0KCkKPj4g LSBEcm9wcGVkIHRoZSBoZWxwZXIgY29weV9icmJlX3JlZ3NldCgpCj4+IC0gU2ltcGxpZmllZCBz dGl0Y2hfc3RvcmVkX2xpdmVfZW50cmllcygpIHdpdGggbWVtY3B5KCksIG1lbW1vdmUoKQo+PiAt IFJld29ya2VkIGFybXY4cG11X3Byb2JlX3BtdSgpIHRvIGJhaWwgb3V0IGVhcmx5IHdpdGggIXBy b2JlLnByZXNlbnQKPj4gLSBSZXdvcmsgYnJiZV9hdHRyaWJ1dGVzX3Byb2JlKCkgd2l0aG91dCAn c3RydWN0IGJyYmVfaHdfYXR0cicKPj4gLSBEcm9wcGVkICdzdHJ1Y3QgYnJiZV9od19hdHRyJyBh cmd1bWVudCBmcm9tIGNhcHR1cmVfYnJiZV9yZWdzZXQoKQo+PiAtIERyb3BwZWQgJ3N0cnVjdCBi cmJlX2h3X2F0dHInIGFyZ3VtZW50IGZyb20gYnJiZV9icmFuY2hfc2F2ZSgpCj4+IC0gRHJvcHBl ZCBhcm1fcG11LT5wcml2YXRlIGFuZCBhZGRlZCBhcm1fcG11LT5yZWdfdHJiaWRyIGluc3RlYWQK Pj4KPj4gQ2hhbmdlcyBpbiBWMTE6Cj4+Cj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8y MDIzMDUzMTA0MDQyOC41MDE1MjMtMS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Pgo+PiAt IEZpeGVkIHRoZSBjcmFzaCBmb3IgcGVyLWNwdSBldmVudHMgd2l0aG91dCBldmVudC0+cG11X2N0 eC0+dGFza19jdHhfZGF0YQo+Pgo+PiBDaGFuZ2VzIGluIFYxMDoKPj4KPj4gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsLzIwMjMwNTE3MDIyNDEwLjcyMjI4Ny0xLWFuc2h1bWFuLmtoYW5kdWFs QGFybS5jb20vCj4+Cj4+IC0gUmViYXNlZCB0aGUgc2VyaWVzIG9uIHY2LjQtcmMyCj4+IC0gTW92 ZWQgQVJNVjggUE1VVjMgY2hhbmdlcyBpbnNpZGUgZHJpdmVycy9wZXJmL2FybV9wbXV2My5jCj4+ IC0gTW92ZWQgQlJCRSBkcml2ZXIgY2hhbmdlcyBpbnNpZGUgZHJpdmVycy9wZXJmL2FybV9icmJl LltjfGhdCj4+IC0gTW92ZWQgdGhlIFdBUk5fT04oKSBpbnNpZGUgdGhlIGlmIGNvbmRpdGlvbiBp biBhcm12OHBtdV9oYW5kbGVfaXJxKCkKPj4KPj4gQ2hhbmdlcyBpbiBWOToKPj4KPj4gaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwMzE1MDUxNDQ0LjE2ODMxNzAtMS1hbnNodW1hbi5r aGFuZHVhbEBhcm0uY29tLwo+Pgo+PiAtIEZpeGVkIGJ1aWxkIHByb2JsZW0gd2l0aCBoYXNfYnJh bmNoX3N0YWNrKCkgaW4gYXJtNjQgaGVhZGVyCj4+IC0gQlJCSU5GX0VMMSBkZWZpbml0aW9uIGhh cyBiZWVuIGNoYW5nZWQgZnJvbSAnU3lzcmVnJyB0byAnU3lzcmVnRmllbGRzJwo+PiAtIFJlbmFt ZWQgYWxsIEJSQklORl9FTDEgY2FsbCBzaXRlcyBhcyBCUkJJTkZ4X0VMMQo+PiAtIERyb3BwZWQg c3RhdGljIGNvbnN0IGNoYXIgYnJhbmNoX2ZpbHRlcl9lcnJvcl9tc2dbXQo+PiAtIEltcGxlbWVu dGVkIGEgcG9zaXRpdmUgbGlzdCBjaGVjayBmb3IgQlJCRSBzdXBwb3J0ZWQgcGVyZiBicmFuY2gg ZmlsdGVycwo+PiAtIEFkZGVkIGEgY29tbWVudCBpbiBhcm12OHBtdV9oYW5kbGVfaXJxKCkKPj4g LSBJbXBsZW1lbnRlZCBwZXItY3B1IGFsbG9jYXRpb24gZm9yIHN0cnVjdCBicmFuY2hfcmVjb3Jk IHJlY29yZHMKPj4gLSBTa2lwcGVkIGxvb3BpbmcgdGhyb3VnaCBiYW5rIDEgaWYgYW4gaW52YWxp ZCByZWNvcmQgaXMgZGV0ZWN0ZWQgaW4gYmFuayAwCj4+IC0gQWRkZWQgY29tbWVudCBpbiBhcm12 OHBtdV9icmFuY2hfcmVhZCgpIGV4cGxhaW5pbmcgcHJvaGliaXRlZCByZWdpb24gZXRjCj4+IC0g QWRkZWQgY29tbWVudCB3YXJuaW5nIGFib3V0IGVycm9uZW91c2x5IG1hcmtpbmcgdHJhbnNhY3Rp b25zIGFzIGFib3J0ZWQKPj4gLSBSZXBsYWNlZCB0aGUgZmlyc3QgYXJndW1lbnQgKHBlcmZfYnJh bmNoX2VudHJ5KSBpbiBjYXB0dXJlX2JyYmVfZmxhZ3MoKQo+PiAtIERyb3BwZWQgdGhlIGxhc3Qg YXJndW1lbnQgKGlkeCkgaW4gY2FwdHVyZV9icmJlX2ZsYWdzKCkKPj4gLSBEcm9wcGVkIHRoZSBi cmJjciBhcmd1bWVudCBmcm9tIGNhcHR1cmVfYnJiZV9mbGFncygpCj4+IC0gVXNlZCBwZXJmX3Nh bXBsZV9zYXZlX2Jyc3RhY2soKSB0byBjYXB0dXJlIGJyYW5jaCByZWNvcmRzIGZvciBwZXJmX3Nh bXBsZV9kYXRhCj4+IC0gQWRkZWQgY29tbWVudCBleHBsYWluaW5nIHJhdGlvbmFsZSBmb3Igc2V0 dGluZyBCUkJDUl9FTDFfRlpQIGZvciB1c2VyIG9ubHkgdHJhY2VzCj4+IC0gRHJvcHBlZCBCUkJF IHByb2hpYml0ZWQgc3RhdGUgbWVjaGFuaXNtIHdoaWxlIGluIGFybXY4cG11X2JyYW5jaF9yZWFk KCkKPj4gLSBJbXBsZW1lbnRlZCBldmVudCB0YXNrIGNvbnRleHQgYmFzZWQgYnJhbmNoIHJlY29y ZHMgc2F2ZSBtZWNoYW5pc20KPj4KPj4gQ2hhbmdlcyBpbiBWODoKPj4KPj4gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsLzIwMjMwMTIzMTI1OTU2LjEzNTAzMzYtMS1hbnNodW1hbi5raGFuZHVh bEBhcm0uY29tLwo+Pgo+PiAtIFJlcGxhY2VkIGFybV9wbXUtPmZlYXR1cmVzIGFzIGFybV9wbXUt Pmhhc19icmFuY2hfc3RhY2ssIHVwZGF0ZWQgaXRzIGhlbHBlcgo+PiAtIEFkZGVkIGEgY29tbWVu dCBhbmQgbGluZSBicmVhayBiZWZvcmUgYXJtX3BtdS0+cHJpdmF0ZSBlbGVtZW50Cj4+IC0gQWRk ZWQgV0FSTl9PTl9PTkNFKCkgaW4gaGVscGVycyBpLmUgYXJtdjhwbXVfYnJhbmNoX1tyZWFkfHZh bGlkfGVuYWJsZXxkaXNhYmxlXSgpCj4+IC0gRHJvcHBlZCBjb21tZW50cyBpbiBhcm12OHBtdV9l bmFibGVfZXZlbnQoKSBhbmQgYXJtdjhwbXVfZGlzYWJsZV9ldmVudCgpCj4+IC0gUmVwbGFjZWQg b3BlbiBiYW5rIGVuY29kaW5nIGluIEJSQkZDUl9FTDEgd2l0aCBTWVNfRklFTERfUFJFUCgpCj4+ IC0gQ2hhbmdlZCBicmJlX2h3X2F0dHItPmJyYmVfdmVyc2lvbiBmcm9tICdib29sJyB0byAnaW50 Jwo+PiAtIFVwZGF0ZWQgcHJfd2FybigpIGFzIHByX3dhcm5fb25jZSgpIHdpdGggdmFsdWVzIGlu IGJyYmVfZ2V0X3BlcmZfW3R5cGV8cHJpdl0oKQo+PiAtIFJlcGxhY2VkIGFsbCBwcl93YXJuX29u Y2UoKSBhcyBwcl9kZWJ1Z19vbmNlKCkgaW4gYXJtdjhwbXVfYnJhbmNoX3ZhbGlkKCkKPj4gLSBB ZGRlZCBhIGNvbW1lbnQgaW4gYnJhbmNoX3R5cGVfdG9fYnJiY3IoKSBmb3IgdGhlIEJSQkNSX0VM MSBwcml2aWxlZ2Ugc2V0dGluZ3MKPj4gLSBNb2RpZmllZCB0aGUgY29tbWVudCByZWxhdGVkIHRv IEJSQklORnhfRUwxLkxBU1RGQUlMRUQgaW4gY2FwdHVyZV9icmJlX2ZsYWdzKCkKPj4gLSBNb2Rp ZmllZCBicmJlX2dldF9wZXJmX2VudHJ5X3R5cGUoKSBhcyBicmJlX3NldF9wZXJmX2VudHJ5X3R5 cGUoKQo+PiAtIFJlbmFtZWQgYnJiZV92YWxpZCgpIGFzIGJyYmVfcmVjb3JkX2lzX2NvbXBsZXRl KCkKPj4gLSBSZW5hbWVkIGJyYmVfc291cmNlKCkgYXMgYnJiZV9yZWNvcmRfaXNfc291cmNlX29u bHkoKQo+PiAtIFJlbmFtZWQgYnJiZV90YXJnZXQoKSBhcyBicmJlX3JlY29yZF9pc190YXJnZXRf b25seSgpCj4+IC0gSW52ZXJ0ZWQgY2hlY2tzIGZvciAhYnJiZV9yZWNvcmRfaXNfW3RhcmdldHxz b3VyY2VdX29ubHkoKSBmb3IgaW5mbyBjYXB0dXJlCj4+IC0gUmVwbGFjZWQgJ2ZldGNoJyB3aXRo ICdnZXQnIGluIGFsbCBoZWxwZXJzIHRoYXQgZXh0cmFjdCBmaWVsZCB2YWx1ZQo+PiAtIERyb3Bw ZWQgJ3N0YXRpYyBpbnQgYnJiZV9jdXJyZW50X2JhbmsnIG9wdGltaXphdGlvbiBpbiBzZWxlY3Rf YnJiZV9iYW5rKCkKPj4gLSBEcm9wcGVkIHNlbGVjdF9icmJlX2JhbmtfaW5kZXgoKSBjb21wbGV0 ZWx5LCBhZGRlZCBjYXB0dXJlX2JyYW5jaF9lbnRyeSgpCj4+IC0gUHJvY2VzcyBjYXB0dXJlZCBi cmFuY2ggZW50cmllcyBpbiB0d28gc2VwYXJhdGUgbG9vcHMgb25lIGZvciBlYWNoIEJSQkUgYmFu awo+PiAtIE1vdmVkIGJyYW5jaF9yZWNvcmRzX2FsbG9jKCkgaW5zaWRlIGFybXY4cG11X3Byb2Jl X3BtdSgpCj4+IC0gQWRkZWQgYSBmb3J3YXJkIGRlY2xhcmF0aW9uIGZvciB0aGUgaGVscGVyIGhh c19icmFuY2hfc3RhY2soKQo+PiAtIEFkZGVkIG5ldyBjYWxsYmFja3MgYXJtdjhwbXVfcHJpdmF0 ZV9hbGxvYygpIGFuZCBhcm12OHBtdV9wcml2YXRlX2ZyZWUoKQo+PiAtIFVwZGF0ZWQgYXJtdjhw bXVfcHJvYmVfcG11KCkgdG8gYWxsb2NhdGUgdGhlIHByaXZhdGUgc3RydWN0dXJlIGJlZm9yZSBT TVAgY2FsbAo+Pgo+PiBDaGFuZ2VzIGluIFY3Ogo+Pgo+PiBodHRwczovL2xvcmUua2VybmVsLm9y Zy9hbGwvMjAyMzAxMDUwMzEwMzkuMjA3OTcyLTEtYW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbS8K Pj4KPj4gLSBGb2xkZWQgW1BBVENIIDcvN10gaW50byBbUEFUQ0ggMy83XSB3aGljaCBlbmFibGVz IGJyYW5jaCBzdGFjayBzYW1wbGluZyBldmVudAo+PiAtIERlZmluZWQgQlJCRkNSX0VMMV9CUkFO Q0hfRklMVEVSUywgQlJCQ1JfRUwxX0RFRkFVTFRfQ09ORklHIGluIHRoZSBoZWFkZXIKPj4gLSBE ZWZpbmVkIEJSQkZDUl9FTDFfREVGQVVMVF9DT05GSUcgaW4gdGhlIGhlYWRlcgo+PiAtIFVwZGF0 ZWQgQlJCQ1JfRUwxX0RFRkFVTFRfQ09ORklHIHdpdGggQlJCQ1JfRUwxX0ZaUAo+PiAtIERlZmlu ZWQgQlJCQ1JfRUwxX0RFRkFVTFRfVFMgaW4gdGhlIGhlYWRlcgo+PiAtIFVwZGF0ZWQgQlJCQ1Jf RUwxX0RFRkFVTFRfQ09ORklHIHdpdGggQlJCQ1JfRUwxX0RFRkFVTFRfVFMKPj4gLSBNb3ZlZCBC UkJDUl9FTDFfREVGQVVMVF9DT05GSUcgY2hlY2sgaW5zaWRlIGJyYW5jaF90eXBlX3RvX2JyYmNy KCkKPj4gLSBNb3ZlZCBkb3duIEJSQkNSX0VMMV9DQywgQlJCQ1JfRUwxX01QUkVEIGxhdGVyIGlu IGJyYW5jaF90eXBlX3RvX2JyYmNyKCkKPj4gLSBBbHNvIHNldCBCUkJFIGluIHBhdXNlZCBzdGF0 ZSBpbiBhcm12OHBtdV9icmFuY2hfZGlzYWJsZSgpCj4+IC0gRHJvcHBlZCBicmJlX3BhdXNlZCgp LCBzZXRfYnJiZV9wYXVzZWQoKSBoZWxwZXJzCj4+IC0gRXh0cmFjdGVkIGVycm9yIHN0cmluZyB2 aWEgYnJhbmNoX2ZpbHRlcl9lcnJvcl9tc2dbXSBmb3IgYXJtdjhwbXVfYnJhbmNoX3ZhbGlkKCkK Pj4gLSBSZXBsYWNlZCBicmJlX3YxcDEgd2l0aCBicmJlX3ZlcnNpb24gaW4gc3RydWN0IGJyYmVf aHdfYXR0cgo+PiAtIEFkZGVkIHZhbGlkX2JyYmVfW2NjLCBmb3JtYXQsIHZlcnNpb25dKCkgaGVs cGVycwo+PiAtIFNwbGl0IGEgc2VwYXJhdGUgYnJiZV9hdHRyaWJ1dGVzX3Byb2JlKCkgZnJvbSBh cm12OHBtdV9icmFuY2hfcHJvYmUoKQo+PiAtIENhcHR1cmUgZXZlbnQtPmF0dHIuYnJhbmNoX3Nh bXBsZV90eXBlIGVhcmxpZXIgaW4gYXJtdjhwbXVfYnJhbmNoX3ZhbGlkKCkKPj4gLSBEZWZpbmVk IGVudW0gYnJiZV9iYW5rX2lkeCB3aXRoIHBvc3NpYmxlIHZhbHVlcyBmb3IgQlJCRSBiYW5rIGlu ZGljZXMKPj4gLSBDaGFuZ2VkIGFybXBtdS0+aHdfYXR0ciBpbnRvIGFybXBtdS0+cHJpdmF0ZQo+ PiAtIEFkZGVkIG1pc3Npbmcgc3BhY2UgaW4gc3R1YiBkZWZpbml0aW9uIGZvciBhcm12OHBtdV9i cmFuY2hfdmFsaWQoKQo+PiAtIFJlcGxhY2VkIGJvdGgga21hbGxvYygpIHdpdGgga3phbGxvYygp Cj4+IC0gQWRkZWQgQlJCRV9CQU5LX01BWF9FTlRSSUVTCj4+IC0gVXBkYXRlZCBjb21tZW50IGZv ciBjYXB0dXJlX2JyYmVfZmxhZ3MoKQo+PiAtIFVwZGF0ZWQgY29tbWVudCBmb3Igc3RydWN0IGJy YmVfaHdfYXR0cgo+PiAtIERyb3BwZWQgc3BhY2UgYWZ0ZXIgdHlwZSBjYXN0IGluIGNvdXBsZSBv ZiBwbGFjZXMKPj4gLSBSZXBsYWNlZCBpbnZlcnNlIHdpdGggbmVnYXRpb24gZm9yIHRlc3Rpbmcg QlJCQ1JfRUwxX0ZaUCBpbiBhcm12OHBtdV9icmFuY2hfcmVhZCgpCj4+IC0gQ2FwdHVyZWQgY3B1 Yy0+YnJhbmNoZXMtPmJyYW5jaF9lbnRyaWVzW2lkeF0gaW4gYSBsb2NhbCB2YXJpYWJsZQo+PiAt IERyb3BwZWQgc2F2ZWRfcHJpdiBmcm9tIGFybXY4cG11X2JyYW5jaF9yZWFkKCkKPj4gLSBSZW9y Z2FuaXplIFBFUkZfU0FNUExFX0JSQU5DSF9OT19bQ1lDTEVTfE5PX0ZMQUdTXSByZWxhdGVkIGNv bmZpZ3VyYXRpb24KPj4gLSBSZXBsYWNlZCB3aXRoIEZJRUxEX0dFVCgpIGFuZCBGSUVMRF9QUkVQ KCkgd2hlcmV2ZXIgYXBwbGljYWJsZQo+PiAtIFJlcGxhY2VkIEJSQkNSX0VMMV9UU19QSFlTSUNB TCB3aXRoIEJSQkNSX0VMMV9UU19WSVJUVUFMCj4+IC0gTW92ZWQgdmFsaWRfYnJiZV9ucigpLCB2 YWxpZF9icmJlX2NjKCksIHZhbGlkX2JyYmVfZm9ybWF0KCksIHZhbGlkX2JyYmVfdmVyc2lvbigp Cj4+IMKgwqAgc2VsZWN0X2JyYmVfYmFuaygpLCBzZWxlY3RfYnJiZV9iYW5rX2luZGV4KCkgaGVs cGVycyBpbnNpZGUgdGhlIEMgaW1wbGVtZW50YXRpb24KPj4gLSBSZW9yZ2FuaXplZCBicmJlX3Zh bGlkX25yKCkgYW5kIGRyb3BwZWQgdGhlIHByX3dhcm4oKSBtZXNzYWdlCj4+IC0gQ2hhbmdlZCBw cm9iZSBzZXF1ZW5jZSBpbiBicmJlX2F0dHJpYnV0ZXNfcHJvYmUoKQo+PiAtIEFkZGVkICdicmJj cicgYXJndW1lbnQgaW50byBjYXB0dXJlX2JyYmVfZmxhZ3MoKSB0byBhc2NlcnRhaW4gY29ycmVj dCBzdGF0ZQo+PiAtIERpc2FibGUgQlJCRSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBQTVUgZXZlbnQg Y291bnRlcgo+PiAtIEVuYWJsZSBQRVJGX1NBTVBMRV9CUkFOQ0hfSFYgZmlsdGVycyB3aGVuIGlz X2tlcm5lbF9pbl9oeXBfbW9kZSgpCj4+IC0gR3VhcmQgYXJtdjhwbXVfcmVzZXQoKSAmIGFybXY4 cG11X3NjaGVkX3Rhc2soKSB3aXRoIGFybV9wbXVfYnJhbmNoX3N0YWNrX3N1cHBvcnRlZCgpCj4+ Cj4+IENoYW5nZXMgaW4gVjY6Cj4+Cj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWFy bS1rZXJuZWwvMjAyMjEyMDgwODQ0MDIuODYzMzEwLTEtYW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNv bS8KPj4KPj4gLSBSZXN0b3JlIHRoZSBleGNlcHRpb24gbGV2ZWwgcHJpdmlsZWdlIGFmdGVyIHJl YWRpbmcgdGhlIGJyYW5jaCByZWNvcmRzCj4+IC0gVW5wYXVzZSB0aGUgYnVmZmVyIGFmdGVyIHJl YWRpbmcgdGhlIGJyYW5jaCByZWNvcmRzCj4+IC0gRGVjb3VwbGUgQlJCQ1JfRUwxX0VYQ0VQVElP Ti9FUlROIGZyb20gcGVyZiBldmVudCBwcml2aWxlZ2UgbGV2ZWwKPj4gLSBSZXdvcmtlZCBCUkJF IGltcGxlbWVudGF0aW9uIGFuZCBicmFuY2ggc3RhY2sgc2FtcGxpbmcgc3VwcG9ydCBvbiBhcm0g cG11Cj4+IC0gQlJCRSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgcGFydCBvZiBvdmVyYWxsIEFSTVY4 IFBNVSBpbXBsZW1lbnRhdGlvbgo+PiAtIEJSQkUgaW1wbGVtZW50YXRpb24gbW92ZWQgZnJvbSBk cml2ZXJzL3BlcmYvIHRvIGluc2lkZSBhcmNoL2FybTY0L2tlcm5lbC8KPj4gLSBDT05GSUdfQVJN X0JSQkVfUE1VIHJlbmFtZWQgYXMgQ09ORklHX0FSTTY0X0JSQkUgaW4gYXJjaC9hcm02NC9LY29u ZmlnCj4+IC0gRmlsZSBtb3ZlZCAtIGRyaXZlcnMvcGVyZi9hcm1fcG11X2JyYmUuYyAtPiBhcmNo L2FybTY0L2tlcm5lbC9icmJlLmMKPj4gLSBGaWxlIG1vdmVkIC0gZHJpdmVycy9wZXJmL2FybV9w bXVfYnJiZS5oIC0+IGFyY2gvYXJtNjQva2VybmVsL2JyYmUuaAo+PiAtIEJSQkUgbmFtZSBoYXMg YmVlbiBkcm9wcGVkIGZyb20gc3RydWN0IGFybV9wbXUgYW5kIHN0cnVjdCBod19wbXVfZXZlbnRz Cj4+IC0gQlJCRSBuYW1lIGhhcyBiZWVuIGFic3RyYWN0ZWQgb3V0IGFzICdicmFuY2hlcycgaW4g YXJtX3BtdSBhbmQgaHdfcG11X2V2ZW50cwo+PiAtIEJSQkUgbmFtZSBoYXMgYmVlbiBhYnN0cmFj dGVkIG91dCBhcyAnYnJhbmNoZXMnIGluIEFSTVY4IFBNVSBpbXBsZW1lbnRhdGlvbgo+PiAtIEFk ZGVkIHNjaGVkX3Rhc2soKSBjYWxsYmFjayBpbnRvIHN0cnVjdCBhcm1fcG11Cj4+IC0gQWRkZWQg J2h3X2F0dHInIGludG8gc3RydWN0IGFybV9wbXUgZW5jYXBzdWxhdGluZyBwb3NzaWJsZSBQTVUg SFcgYXR0cmlidXRlcwo+PiAtIERyb3BwZWQgZXhwbGljaXQgYXR0cmlidXRlcyBicmJlXyh2MXAx LCBuciwgY2MsIGZvcm1hdCkgZnJvbSBzdHJ1Y3QgYXJtX3BtdQo+PiAtIERyb3BwZWQgYnJiZmNy LCBicmJjciwgcmVnaXN0ZXJzIHNjcmF0Y2ggYXJlYSBmcm9tIHN0cnVjdCBod19wbXVfZXZlbnRz Cj4+IC0gRHJvcHBlZCBicmJlX3VzZXJzLCBicmJlX2NvbnRleHQgdHJhY2tpbmcgaW4gc3RydWN0 IGh3X3BtdV9ldmVudHMKPj4gLSBBZGRlZCAnZmVhdHVyZXMnIHRyYWNraW5nIGludG8gc3RydWN0 IGFybV9wbXUgd2l0aCBBUk1fUE1VX0JSQU5DSF9TVEFDSyBmbGFnCj4+IC0gYXJtcG11LT5od19h dHRyIG1hcHMgaW50byAnc3RydWN0IGJyYmVfaHdfYXR0cicgaW5zaWRlIEJSQkUgaW1wbGVtZW50 YXRpb24KPj4gLSBTZXQgQVJNX1BNVV9CUkFOQ0hfU1RBQ0sgaW4gJ2FybV9wbXUtPmZlYXR1cmVz JyBhZnRlciBzdWNjZXNzZnVsIEJSQkUgcHJvYmUKPj4gLSBBZGRlZCBhcm12OHBtdV9icmFuY2hf cmVzZXQoKSBpbnNpZGUgYXJtdjhwbXVfYnJhbmNoX2VuYWJsZSgpCj4+IC0gRHJvcHBlZCBicmJl X3N1cHBvcnRlZCgpIGFzIGV2ZW50cyB3aWxsIGJlIHJlamVjdGVkIHZpYSBBUk1fUE1VX0JSQU5D SF9TVEFDSwo+PiAtIERyb3BwZWQgc2V0X2JyYmVfZGlzYWJsZWQoKSBhcyB3ZWxsCj4+IC0gUmVm b3JtYXRlZCBhcm12OHBtdV9icmFuY2hfdmFsaWQoKSB3YXJuaW5ncyB3aGlsZSByZWplY3Rpbmcg dW5zdXBwb3J0ZWQgZXZlbnRzCj4+Cj4+IENoYW5nZXMgaW4gVjU6Cj4+Cj4+IGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2xpbnV4LWFybS1rZXJuZWwvMjAyMjExMDcwNjI1MTQuMjg1MTA0Ny0xLWFu c2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4+Cj4+IC0gQ2hhbmdlZCBCUkJDUl9FTDEuVklSVFVB TCBmcm9tIDBiMSB0byAwYjAxCj4+IC0gQ2hhbmdlZCBCUkJGQ1JfRUwxLkVuTCBpbnRvIEJSQkZD Ul9FTDEuRW5JCj4+IC0gQ2hhbmdlZCBjb25maWcgQVJNX0JSQkVfUE1VIGZyb20gJ3RyaXN0YXRl JyB0byAnYm9vbCcKPj4KPj4gQ2hhbmdlcyBpbiBWNDoKPj4KPj4gaHR0cHM6Ly9sb3JlLmtlcm5l bC5vcmcvYWxsLzIwMjIxMDE3MDU1NzEzLjQ1MTA5Mi0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5j b20vCj4+Cj4+IC0gQ2hhbmdlZCAuLi90b29scy9zeXNyZWcgZGVjbGFyYXRpb25zIGFzIHN1Z2dl c3RlZAo+PiAtIFNldCBQRVJGX1NBTVBMRV9CUkFOQ0hfU1RBQ0sgaW4gZGF0YS5zYW1wbGVfZmxh Z3MKPj4gLSBEcm9wcGVkIHBlcmZtb25fY2FwYWJsZSgpIGNoZWNrIGluIGFybXBtdV9ldmVudF9p bml0KCkKPj4gLSBzL3ByX3dhcm5fb25jZS9wcl9pbmZvIGluIGFybXBtdV9ldmVudF9pbml0KCkK Pj4gLSBBZGRlZCBicmJlX2Zvcm1hdCBlbGVtZW50IGludG8gc3RydWN0IHBtdV9od19ldmVudHMK Pj4gLSBDaGFuZ2VkIHYxcDEgYXMgYnJiZV92MXAxIGluIHN0cnVjdCBwbXVfaHdfZXZlbnRzCj4+ IC0gRHJvcHBlZCBwcl9pbmZvKCkgZnJvbSBhcm02NF9wbXVfYnJiZV9wcm9iZSgpLCBzb2x2ZWQg TE9DS0RFUCB3YXJuaW5nCj4+Cj4+IENoYW5nZXMgaW4gVjM6Cj4+Cj4+IGh0dHBzOi8vbG9yZS5r ZXJuZWwub3JnL2FsbC8yMDIyMDkyOTA3NTg1Ny4xNTgzNTgtMS1hbnNodW1hbi5raGFuZHVhbEBh cm0uY29tLwo+Pgo+PiAtIE1vdmVkIGJyYmVfc3RhY2sgZnJvbSB0aGUgc3RhY2sgYW5kIG5vdyBk eW5hbWljYWxseSBhbGxvY2F0ZWQKPj4gLSBSZXR1cm4gUEVSRl9CUl9QUklWX1VOS05PV04gaW5z dGVhZCBvZiAtMSBpbiBicmJlX2ZldGNoX3BlcmZfcHJpdigpCj4+IC0gTW92ZWQgQlJCSURSMCwg QlJCQ1IsIEJSQkZDUiByZWdpc3RlcnMgYW5kIGZpZWxkcyBpbnRvIHRvb2xzL3N5c3JlZwo+PiAt IENyZWF0ZWQgZHVtbXkgQlJCSU5GX0VMMSBmaWVsZCBkZWZpbml0aW9ucyBpbiB0b29scy9zeXNy ZWcKPj4gLSBEcm9wcGVkIEFSTVBNVV9FVlRfUFJJViBmcmFtZXdvcmsgd2hpY2ggY2FjaGVkIHBl cmZtb25fY2FwYWJsZSgpCj4+IC0gQm90aCBleGNlcHRpb24gYW5kIGV4Y2VwdGlvbiByZXR1cm4g YnJhbmNoZSByZWNvcmRzIGFyZSBub3cgY2FwdHVyZWQKPj4gwqDCoCBvbmx5IGlmIHRoZSBldmVu dCBoYXMgUEVSRl9TQU1QTEVfQlJBTkNIX0tFUk5FTCB3aGljaCB3b3VsZCBhbHJlYWR5Cj4+IMKg wqAgYmVlbiBjaGVja2VkIGluIGdlbmVyaWMgcGVyZiB2aWEgcGVyZl9hbGxvd19rZXJuZWwoKQo+ Pgo+PiBDaGFuZ2VzIGluIFYyOgo+Pgo+PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAy MjA5MDgwNTEwNDYuNDY1MzA3LTEtYW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbS8KPj4KPj4gLSBE cm9wcGVkIGJyYW5jaCBzYW1wbGUgZmlsdGVyIGhlbHBlcnMgY29uc29saWRhdGlvbiBwYXRjaCBm cm9tIHRoaXMgc2VyaWVzCj4+IC0gQWRkZWQgbmV3IGh3X3BlcmZfZXZlbnQuZmxhZ3MgZWxlbWVu dCBBUk1QTVVfRVZUX1BSSVYgdG8gY2FjaGUgcGVyZm1vbl9jYXBhYmxlKCkKPj4gLSBVc2UgY2Fj aGVkIHBlcmZtb25fY2FwYWJsZSgpIHdoaWxlIGNvbmZpZ3VyaW5nIEJSQkUgYnJhbmNoIHJlY29y ZCBmaWx0ZXJzCj4+Cj4+IENoYW5nZXMgaW4gVjE6Cj4+Cj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2xpbnV4LWFybS1rZXJuZWwvMjAyMjA2MTMxMDAxMTkuNjg0NjczLTEtYW5zaHVtYW4ua2hh bmR1YWxAYXJtLmNvbS8KPj4KPj4gLSBBZGRlZCBDT05GSUdfUEVSRl9FVkVOVFMgd3JhcHBlciBm b3IgYWxsIGJyYW5jaCBzYW1wbGUgZmlsdGVyIGhlbHBlcnMKPj4gLSBQcm9jZXNzIG5ldyBwZXJm IGJyYW5jaCB0eXBlcyB2aWEgUEVSRl9CUl9FWFRFTkRfQUJJCj4+Cj4+IENoYW5nZXMgaW4gUkZD IFYyOgo+Pgo+PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1hcm0ta2VybmVsLzIwMjIw NDEyMTE1NDU1LjI5MzExOS0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4+Cj4+IC0gQWRk ZWQgYnJhbmNoX3NhbXBsZV9wcml2KCkgd2hpbGUgY29uc29saWRhdGluZyBvdGhlciBicmFuY2gg c2FtcGxlIGZpbHRlciBoZWxwZXJzCj4+IC0gQ2hhbmdlZCBhbGwgU1lTX0JSQlhYWE5fRUwxIHJl Z2lzdGVyIGRlZmluaXRpb24gZW5jb2RpbmdzIHBlciBNYXJjCj4+IC0gQ2hhbmdlZCB0aGUgQlJC RSBkcml2ZXIgYXMgcGVyIHByb3Bvc2VkIEJSQkUgcmVsYXRlZCBwZXJmIEFCSSBjaGFuZ2VzIChW NSkKPj4gLSBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBzdHJ1Y3QgYXJtX3BtdSBjaGFuZ2VzLCB1 cGRhdGVkIGNvbW1pdCBtZXNzYWdlCj4+IC0gVXBkYXRlZCBjb21taXQgbWVzc2FnZSBmb3IgQlJC RSBkZXRlY3Rpb24gaW5mcmFzdHJ1Y3R1cmUgcGF0Y2gKPj4gLSBQRVJGX1NBTVBMRV9CUkFOQ0hf S0VSTkVMIGdldHMgY2hlY2tlZCBkdXJpbmcgYXJtIGV2ZW50IGluaXQgKG91dHNpZGUgdGhlIGRy aXZlcikKPj4gLSBCcmFuY2ggcHJpdmlsZWdlIHN0YXRlIGNhcHR1cmUgbWVjaGFuaXNtIGhhcyBu b3cgbW92ZWQgaW5zaWRlIHRoZSBkcml2ZXIKPj4KPj4gQ2hhbmdlcyBpbiBSRkMgVjE6Cj4+Cj4+ IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8xNjQyOTk4NjUzLTIxMzc3LTEtZ2l0LXNlbmQt ZW1haWwtYW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbS8KPj4KPj4gQ2M6IENhdGFsaW4gTWFyaW5h cyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cj4+IENjOiBXaWxsIERlYWNvbiA8d2lsbEBrZXJu ZWwub3JnPgo+PiBDYzogTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KPj4gQ2M6 IE1hcmsgQnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz4KPj4gQ2M6IEphbWVzIENsYXJrIDxqYW1l cy5jbGFya0Bhcm0uY29tPgo+PiBDYzogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4KPj4g Q2M6IE1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+Cj4+IENjOiBTdXp1a2kgUG91bG9zZSA8 c3V6dWtpLnBvdWxvc2VAYXJtLmNvbT4KPj4gQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5m cmFkZWFkLm9yZz4KPj4gQ2M6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgo+PiBDYzog QXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxhY21lQGtlcm5lbC5vcmc+Cj4+IENjOiBsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4gQ2M6IGxpbnV4LXBlcmYtdXNlcnNAdmdl ci5rZXJuZWwub3JnCj4+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCj4+Cj4+IEFu c2h1bWFuIEtoYW5kdWFsICg2KToKPj4gwqDCoCBhcm02NC9zeXNyZWc6IEFkZCBCUkJFIHJlZ2lz dGVycyBhbmQgZmllbGRzCj4+IMKgwqAgS1ZNOiBhcm02NDogRXhwbGljaXRseSBoYW5kbGUgQlJC RSB0cmFwcyBhcyBVTkRFRklORUQKPj4gwqDCoCBkcml2ZXJzOiBwZXJmOiBhcm1fcG11OiBBZGQg aW5mcmFzdHJ1Y3R1cmUgZm9yIGJyYW5jaCBzdGFjayBzYW1wbGluZwo+PiDCoMKgIGFybTY0L2Jv b3Q6IEVuYWJsZSBFTDIgcmVxdWlyZW1lbnRzIGZvciBCUkJFCj4+IMKgwqAgZHJpdmVyczogcGVy ZjogYXJtX3BtdXYzOiBFbmFibGUgYnJhbmNoIHN0YWNrIHNhbXBsaW5nIHZpYSBGRUFUX0JSQkUK Pj4gwqDCoCBLVk06IGFybTY0OiBudmhlOiBEaXNhYmxlIGJyYW5jaCBnZW5lcmF0aW9uIGluIG5W SEUgZ3Vlc3RzCj4+Cj4+IEphbWVzIENsYXJrICgzKToKPj4gwqDCoCBwZXJmOiB0ZXN0OiBTcGVl ZCB1cCBydW5uaW5nIGJyc3RhY2sgdGVzdCBvbiBhbiBBcm0gbW9kZWwKPj4gwqDCoCBwZXJmOiB0 ZXN0OiBSZW1vdmUgZW1wdHkgbGluZXMgZnJvbSBicmFuY2ggZmlsdGVyIHRlc3Qgb3V0cHV0Cj4+ IMKgwqAgcGVyZjogdGVzdDogRXh0ZW5kIGJyYW5jaCBzdGFjayBzYW1wbGluZyB0ZXN0IGZvciBB cm02NCBCUkJFCj4+Cj4+IMKgIERvY3VtZW50YXRpb24vYXJjaC9hcm02NC9ib290aW5nLnJzdMKg wqAgfMKgIDI2ICsKPj4gwqAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbDJfc2V0dXAuaMKgwqDC oMKgIHzCoCA5MCArKy0KPj4gwqAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5owqDC oMKgwqDCoCB8wqDCoCA1ICstCj4+IMKgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzcmVnLmjC oMKgwqDCoMKgwqDCoCB8wqAgMTcgKy0KPj4gwqAgYXJjaC9hcm02NC9rdm0vZGVidWcuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDUgKwo+PiDCoCBhcmNoL2FybTY0L2t2 bS9oeXAvbnZoZS9kZWJ1Zy1zci5jwqDCoMKgwqAgfMKgIDMxICsKPj4gwqAgYXJjaC9hcm02NC9r dm0vc3lzX3JlZ3MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA1NiArKwo+PiDCoCBh cmNoL2FybTY0L3Rvb2xzL3N5c3JlZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDEz MSArKysrCj4+IMKgIGRyaXZlcnMvcGVyZi9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoCAxMSArCj4+IMKgIGRyaXZlcnMvcGVyZi9NYWtlZmlsZcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIGRyaXZlcnMvcGVyZi9h cm1fYnJiZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgOTY4ICsrKysrKysrKysr KysrKysrKysrKysrKysKPj4gwqAgZHJpdmVycy9wZXJmL2FybV9wbXUuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyNSArLQo+PiDCoCBkcml2ZXJzL3BlcmYvYXJtX3BtdXYz LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTQ2ICsrKy0KPj4gwqAgZHJpdmVycy9w ZXJmL2FybV9wbXV2M19icmFuY2guaMKgwqDCoMKgwqDCoMKgIHzCoCA3MyArKwo+PiDCoCBpbmNs dWRlL2xpbnV4L3BlcmYvYXJtX3BtdS5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDM3ICstCj4+ IMKgIHRvb2xzL3BlcmYvdGVzdHMvYnVpbHRpbi10ZXN0LmPCoMKgwqDCoMKgwqDCoCB8wqDCoCAx ICsKPj4gwqAgdG9vbHMvcGVyZi90ZXN0cy9zaGVsbC90ZXN0X2Jyc3RhY2suc2ggfMKgIDU3ICst Cj4+IMKgIHRvb2xzL3BlcmYvdGVzdHMvdGVzdHMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqAgMSArCj4+IMKgIHRvb2xzL3BlcmYvdGVzdHMvd29ya2xvYWRzL0J1aWxkwqDCoMKg wqDCoMKgIHzCoMKgIDIgKwo+PiDCoCB0b29scy9wZXJmL3Rlc3RzL3dvcmtsb2Fkcy90cmFwbG9v cC5jwqAgfMKgIDM5ICsKPj4gwqAgMjAgZmlsZXMgY2hhbmdlZCwgMTY5NiBpbnNlcnRpb25zKCsp LCAyNiBkZWxldGlvbnMoLSkKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGVyZi9h cm1fYnJiZS5jCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BlcmYvYXJtX3BtdXYz X2JyYW5jaC5oCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL3Rlc3RzL3dvcmts b2Fkcy90cmFwbG9vcC5jCj4+Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiBsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAo+IGxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=