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 7C44FC54E58 for ; Tue, 12 Mar 2024 09:54:06 +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-Type: Content-Transfer-Encoding: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=uHi/EmIGSg5DRpZJFNOkiVStA0g8NcAs6CErgYoCrbE=; b=CGan2DRTO8DfdF IHhumbCrNnen2OkAVsiKZNq1OFIYymqLpTh2CRiIjzHhImUE4D3hQ+VKGvXp/pyEWSiGe0K2S4/Hd gd5tRLqUOiXG4udu25B4igwVAIlXGBJ9Nhm5ibumnDqrsxrE1p9g3LNHana9i9JAfABFpx+IS3yMY Q8NOg7bdA+QB4dbX1MkswO9Cb9Sf0hqDQq0JYOrCirY9asIeHiF0cs8byPoNWCiLQF/zywqkYeFHJ 1jNuXKa7zWl6Htsf3WV7S+6yr8KxUTj3y73L3JbcpfguvZBn7F+14iTD9vpBmTeSQOgdptJQ/xlN1 7oA7TzCU/irtZDk6odIg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rjypW-00000005DxN-3F54; Tue, 12 Mar 2024 09:53:54 +0000 Received: from out30-97.freemail.mail.aliyun.com ([115.124.30.97]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rjypS-00000005DtZ-1ng3 for linux-arm-kernel@lists.infradead.org; Tue, 12 Mar 2024 09:53:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1710237224; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=xQKHCh361SfWZRmqI7leh9Mlmi1eAF8yjLMSaUPV8LQ=; b=nfwlj3V+BN2SkNdeVsoqkNbSzOuxvUsODIruoh601goEbsd1Cbh21/uPh//UjeUi4epcK3UxYyJmxKXSjHo0MNMVYhxaGBO9xHfLKDszuFNixJqzAK5eu858iD0ywyJvB5Nfmv7rNLFcploWzLSB9651ZW1VnGo1iK2M+9UaKjA= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R131e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=tianruidong@linux.alibaba.com;NM=1;PH=DS;RN=13;SR=0;TI=SMTPD_---0W2LY0LL_1710237220; Received: from 30.221.132.227(mailfrom:tianruidong@linux.alibaba.com fp:SMTPD_---0W2LY0LL_1710237220) by smtp.aliyun-inc.com; Tue, 12 Mar 2024 17:53:41 +0800 Message-ID: <79d3441c-fb7e-4e02-a381-99e8d639ad1c@linux.alibaba.com> Date: Tue, 12 Mar 2024 17:53:40 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] ACPI/AEST: Initial AEST driver Content-Language: en-US To: Marc Zyngier Cc: catalin.marinas@arm.com, will@kernel.org, lpieralisi@kernel.org, guohanjun@huawei.com, sudeep.holla@arm.com, xueshuai@linux.alibaba.com, baolin.wang@linux.alibaba.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Tyler Baicar , Ruidong Tian References: <20240304111517.33001-1-tianruidong@linux.alibaba.com> <20240304111517.33001-2-tianruidong@linux.alibaba.com> <86wmqi19pg.wl-maz@kernel.org> <8734szr8y9.wl-maz@kernel.org> From: Ruidong Tian In-Reply-To: <8734szr8y9.wl-maz@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240312_025350_647522_2FECD077 X-CRM114-Status: GOOD ( 40.77 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgrlnKggMjAyNC8zLzkgMTg6MzMsIE1hcmMgWnluZ2llciDlhpnpgZM6Cj4gT24gRnJpLCAwOCBN YXIgMjAyNCAwMzo0MzozMCArMDAwMCwKPiBSdWlkb25nIFRpYW4gPHRpYW5ydWlkb25nQGxpbnV4 LmFsaWJhYmEuY29tPiB3cm90ZToKPj4KPj4g5ZyoIDIwMjQvMy80IDIwOjA3LCBNYXJjIFp5bmdp ZXIg5YaZ6YGTOgo+Pj4gT24gTW9uLCAwNCBNYXIgMjAyNCAxMToxNToxNiArMDAwMCwKPj4+IFJ1 aWRvbmcgVGlhbjx0aWFucnVpZG9uZ0BsaW51eC5hbGliYWJhLmNvbT4gIHdyb3RlOgo+Pj4+IGRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Jhcy5oIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9yYXMuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAw MDAwMDAwLi4yZmIwZDk3NDE1NjcKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9yYXMuaAo+Pj4+IEBAIC0wLDAgKzEsMzggQEAKPj4+PiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPj4+PiArI2lmbmRlZiBfX0FTTV9SQVNf SAo+Pj4+ICsjZGVmaW5lIF9fQVNNX1JBU19ICj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8bGludXgv dHlwZXMuaD4KPj4+PiArI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KPj4+PiArCj4+Pj4gKyNkZWZp bmUgRVJSX1NUQVRVU19BVgkJQklUKDMxKQo+Pj4+ICsjZGVmaW5lIEVSUl9TVEFUVVNfVgkJQklU KDMwKQo+Pj4+ICsjZGVmaW5lIEVSUl9TVEFUVVNfVUUJCUJJVCgyOSkKPj4+PiArI2RlZmluZSBF UlJfU1RBVFVTX0VSCQlCSVQoMjgpCj4+Pj4gKyNkZWZpbmUgRVJSX1NUQVRVU19PRgkJQklUKDI3 KQo+Pj4+ICsjZGVmaW5lIEVSUl9TVEFUVVNfTVYJCUJJVCgyNikKPj4+PiArI2RlZmluZSBFUlJf U1RBVFVTX0NFCQkoQklUKDI1KSB8IEJJVCgyNCkpCj4+Pj4gKyNkZWZpbmUgRVJSX1NUQVRVU19E RQkJQklUKDIzKQo+Pj4+ICsjZGVmaW5lIEVSUl9TVEFUVVNfUE4JCUJJVCgyMikKPj4+PiArI2Rl ZmluZSBFUlJfU1RBVFVTX1VFVAkJKEJJVCgyMSkgfCBCSVQoMjApKQo+Pj4+ICsjZGVmaW5lIEVS Ul9TVEFUVVNfQ0kJCUJJVCgxOSkKPj4+PiArI2RlZmluZSBFUlJfU1RBVFVTX0lFUlIgCUdFTk1B U0tfVUxMKDE1LCA4KQo+Pj4+ICsjZGVmaW5lIEVSUl9TVEFUVVNfU0VSUiAJR0VOTUFTS19VTEwo NywgMCkKPj4+IEFsbCB0aGVzZSBiaXRzIG5lZWQgdG8gYmUgZGVmaW5lZCBpbiBhcmNoL2FybTY0 L3Rvb2xzL3N5c3JlZyBhcwo+Pj4gRVJYU1RBVFVTX0VMMSBmaWVsZHMuCj4+Cj4+IFRoaXMgZmls ZSBvbmx5IGRlc2NyaWJlcyB0aGUgc3lzdGVtIHJlZ2lzdGVyLCBidXQgUkFTIE1NSU8gcmVnaXN0 ZXJzCj4+IHVzZSB0aGVzZSBiaXRzIHRvby4gV291bGQgaXQgYmUgYXBwcm9wcmlhdGUgdG8gZGVm aW5lIHRoZW0gaW4KPj4gYXJjaC9hcm02NC90b29scy9zeXNyZWc/Cj4gCj4gWW91IGFyZSB1c2lu ZyB0aGVtIGZvciBzeXN0ZW0gcmVnaXN0ZXJzLCB0aGV5IG5lZWQgdG8gYmUgZGVmaW5lZAo+IHRo ZXJlLiBUaGUgZmFjdCB0aGF0IHRoZXkgYXJlIGFsc28gdXNlZCB0byBNTUlPIGlzIGFuZWNkb3Rh bC4KClRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBzb21lIG1pc3VuZGVyc3RhbmRpbmcuIEFFU1QgaW50 ZXJmYWNlIGNhbiBiZSAKU1IocHJvY2Vzc29yKSBvciBNTUlPKEdJQywgU01NVSwgTWVtb3J5KSwg QWxsIHRoZXNlIHR3byB0eXBlcyBvZiBub2RlcyAKaGF2ZSBFUlI8bj5TVEFUVVMgcmVnaXN0ZXIs IGFuZCBBRVNUIGRyaXZlciBuZWVkIHRvIG9wZXJhdGUgdGhlc2UgZmlsZWQgCmJvdGggaW4gU1Ig YW5kIE1NSU8gcmVnaXN0ZXIuCgo+IAo+IFsuLi5dCj4gCj4+Pj4gKyNkZWZpbmUgQ0FTRV9SRUFE X0NMRUFSKHgsIGNsZWFyKQkJCQkJXAo+Pj4+ICsJY2FzZSAoeCk6IHsJCQkJCQkJXAo+Pj4+ICsJ CXJlcyA9IHJlYWRfc3lzcmVnX3MoU1lTXyMjeCMjX0VMMSk7CQkJXAo+Pj4+ICsJCWlmIChjbGVh cikJCQkJCQlcCj4+Pj4gKwkJCXdyaXRlX3N5c3JlZ19zKDAsIFNZU18jI3gjI19FTDEpOwkJXAo+ Pj4+ICsJCWJyZWFrOwkJCQkJCQlcCj4+Pj4gKwl9Cj4+PiBQbGVhc2UgZG9uJ3QgdXNlIG1hY3Jv cyB3aXRoIHNpZGUgZWZmZWN0cy4gVGhpcyBpcyBob3JyaWJsZSB0byBkZWJ1Zy4KPj4+IEluc3Rl YWQsICpyZXR1cm4qIHRoZSB2YWx1ZSBmcm9tIHRoZSBtYWNybywgb3IgcGFzcyB0aGUgdmFyaWFi bGUgeW91Cj4+PiB3YW50IHRvIGFmZmVjdCBhcyBhIHBhcmFtZXRlci4KPj4KPj4gT0ssIEkgd2ls bCBwYXNzICoqcmVzKiogYXMgYSBwYXJhbWV0ZXIgbGlrZSB0aGlzOgo+Pgo+PiAgICAjZGVmaW5l IENBU0VfUkVBRF9DTEVBUihyZXMsIHgsIGNsZWFyKQkJCVwKPj4gCSAgY2FzZSAoeCk6IHsJCQkJ CQlcCj4+IAkJICByZXMgPSByZWFkX3N5c3JlZ19zKFNZU18jI3gjI19FTDEpOwkJXAo+PiAJCSAg aWYgKGNsZWFyKQkJCQkJXAo+PiAJCQkgIHdyaXRlX3N5c3JlZ19zKDAsIFNZU18jI3gjI19FTDEp OwlcCj4+IAkJICBicmVhazsJCQkJCVwKPj4gCSAgfQo+Pgo+Pj4KPj4+IEFsc28sIHdoYXQgZW5z dXJlcyB0aGUgc3luY2hyb25pc2F0aW9uIG9mIHRoaXMgd3JpdGU/IEhvdyBpcyB0aGUgVzFUQwo+ Pj4gYXNwZWN0IGVuZm9yY2VkPwo+Pgo+PiBhZXN0X3Byb2MgaXMganVzdCBjYWxsIGluIGlycSBj b250ZXh0LCBvbmUgcmFzIGVycm9yIGlzIGp1c3Qgcm91dGVkIHRvCj4+IG9uZSBjb3JlLCBzbyBp dCBpcyB0aHJlYWQgc2FmZS4gQW5kIHRoaXMgaXMgYSBXcml0ZS1BZnRlci1SZWFkIChXQVIpCj4+ IEhhemFyZHMgd2l0aCBkZXBlbmRlbmNl77yMY2FuIGkgYXNzdW1lIHRoYXQgcGlwZWxpbmUgd291 bGQgZ3VhcmFudGVlCj4+IHRoZSBvcmRlciBvZiB3cml0aW5nIGFuZCByZWFkaW5nPwo+IAo+IFlv dSBhcmUgbWlzc2luZyB0aGUgcG9pbnQuIFdBUiBoYXphcmRpbmcgZG9lc24ndCBtZWFuIHRoYXQg dGhlIHdyaXRlCj4gaGFzIHRha2VuIGVmZmVjdCwgYW5kIGNhbiBiZSBkZWxheWVkIGZvciBhcyBs b25nIGFzIHRoZSBDUFUgZGVjaWRlcwo+IHRvLCB1bnRpbCB0aGUgbmVzdCBjb250ZXh0IHN5bmNo cm9uaXNhdGlvbiBldmVudC4KPiAKPiBUaGUgVzFUQyBxdWVzdGlvbiBzdGlsbCBzdGFuZHMuCgpP SywgaSB3aWxsIGFkZCBhbiBJU0IgYXQgdGhlIGVuZCBvZiBhZXN0X3Byb2MgdG8gZW5zdXJlIGFs bCB3cml0ZXMgaGFzIAp0YWtlbiBlZmZlY3QuCgo+IAo+IFsuLi5dID4KPj4+PiArc3RhdGljIHU2 NCBhZXN0X2lvbWVtX3JlYWRfY2xlYXIodTY0IGJhc2UsIHUzMiBvZmZzZXQsIGJvb2wgY2xlYXIp Cj4+Pj4gK3sKPj4+PiArCXU2NCByZXM7Cj4+Pj4gKwo+Pj4+ICsJcmVzID0gcmVhZHEoKHZvaWQg KikoYmFzZSArIG9mZnNldCkpOwo+Pj4+ICsJaWYgKGNsZWFyKQo+Pj4+ICsJCXdyaXRlcSgwLCAo dm9pZCAqKShiYXNlICsgb2Zmc2V0KSk7Cj4+PiBEbyB5b3UgbmVlZCB0aGUgZXhwbGljaXQgc3lu Y2hyb25pc2F0aW9uPyBXaGF0IG9yZGVyaW5nIGFyZSB5b3UgdHJ5aW5nCj4+PiB0byBndWFyYW50 ZWU/Cj4+Cj4+IFRoaXMgcmVhZCBhbmQgd3JpdGUgdXNlIHRoZSBzYW1lIGFkZHJlc3MsIHBpcGVs aW5lIHdvdWxkIGd1YXJhbnRlZQo+PiB0aGUgb3JkZXIgb2Ygd3JpdGluZyBhbmQgcmVhZGluZy4K PiAKPiBZb3UgYXJlIG1pc3NpbmcgdGhlIHBvaW50IGFnYWluLiBOb24tcmVsYXhlZCBhY2Nlc3Nv cnMgY29tZSB3aXRoIGEgRE1CCj4gdGhhdCBlbmZvcmNlcyBvcmRlcmluZyB3aXRoIHlvdW5nZXIg cmVhZHMgYW5kIG9sZGVyIHdyaXRlcy4gV2h5IGRvIHlvdQo+IG5lZWQgdGhvc2U/Cj4KCkkgZ2V0 IGl0LiBSZWxheGVkIGFjY2Vzc2VzIGFyZSBzdGlsbCBndWFyYW50ZWVkIHRvIGJlIG9yZGVyZWQg d2hlbiAKb3BlcmF0aW5nIE1NSU8gYWRkcmVzcy4gSSB3aWxsIHVzZSByZWFkcS93cml0ZXFfcmVs YXhlZCBpbiBuZXh0IHZlcnNpb24uCgo+IFsuLi5dCgk+Cj4+Pj4gK3N0YXRpYyBpbnQgX19pbml0 IGFlc3RfcmVnaXN0ZXJfZ3NpKHUzMiBnc2ksIGludCB0cmlnZ2VyLCB2b2lkICpkYXRhLAo+Pj4+ ICsJCQkJCWlycV9oYW5kbGVyX3QgYWVzdF9pcnFfZnVuYykKPj4+PiArewo+Pj4+ICsJaW50IGNw dSwgaXJxOwo+Pj4+ICsKPj4+PiArCWlycSA9IGFjcGlfcmVnaXN0ZXJfZ3NpKE5VTEwsIGdzaSwg dHJpZ2dlciwgQUNQSV9BQ1RJVkVfSElHSCk7Cj4+Pj4gKwo+Pj4+ICsJaWYgKGlycSA9PSAtRUlO VkFMKSB7Cj4+Pj4gKwkJcHJfZXJyKCJmYWlsZWQgdG8gbWFwIEFFU1QgR1NJICVkXG4iLCBnc2kp Owo+Pj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWlmIChnc2kg PCAxNikgewo+Pj4+ICsJCXByX2VycigiaW52YWxpZCBHU0kgJWRcbiIsIGdzaSk7Cj4+Pj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwl9IGVsc2UgaWYgKGdzaSA8IDMyKSB7Cj4+Pj4gKwkJaWYg KHBwaV9pZHggPj0gQUVTVF9NQVhfUFBJKSB7Cj4+Pj4gKwkJCXByX2VycigiVW5hYmxlIHRvIHJl Z2lzdGVyIFBQSSAlZFxuIiwgZ3NpKTsKPj4+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwkJ fQo+Pj4+ICsJCXBwaV9pcnFzW3BwaV9pZHhdID0gaXJxOwo+Pj4+ICsJCWVuYWJsZV9wZXJjcHVf aXJxKGlycSwgSVJRX1RZUEVfTk9ORSk7Cj4+PiBFbmFibGluZyB0aGUgUFBJIGJlZm9yZSByZXF1 ZXN0aW5nIGl0PyBMb29rcy4uLiBncmVhdC4gQW5kIGhvdyBkb2VzCj4+PiB0aGlzIHdvcmsgb24g YSBzeXN0ZW0gdGhhdCBzdXBwb3J0cyBFUFBJcywgd2hpY2ggYXJlIGluIHRoZQo+Pj4gWzExMTk6 MTA1Nl0gcmFuZ2U/Cj4+Cj4+IEl0IGlzIGJldHRlciB0byBlbmFibGUgaXQgYWZ0ZXIgcmVxdWVz dCBpdCwgaSB3aWxsIGZpeCBpdCBuZXh0IHZlcnNpb24uCj4+IE15IG1hY2hpbmUgZG8gbm90IHVz ZSBFUFBJIGFzIFJBUyBpbnRlcnJ1cHQsIGkgY2FuIG5vdCB0ZXN0IGl0IG5vdy4gQ2FuCj4+IHdl IHN1cHBvcnQgRVBQSSBpbiBsYXRlciBwYXRjaD8KPiAKPiBObywgYmVjYXVzZSB5b3Ugc2hvdWxk bid0IGV2ZW4gaGF2ZSB0byBjYXJlLiBDYW4geW91IHNlZSBhIHNpbmdsZQo+IGRyaXZlciBpbiB0 aGUgdHJlZSB0aGF0IGRvIHRoaXM/CgpPS++8jEkgd2lsbCBmaXggaXQgbmV4dCB2ZXJzaW9uLgoK PiAKPj4KPj4+Cj4+PiBBbHNvLCBpZiB5b3UgZ2V0IGEgdHJpZ2dlciBhcyBhIHBhcmFtZXRlciwg d2h5IHRoZSBJUlFfVFlQRV9OT05FPwo+Pj4KPj4gU29ycnnvvIxJIGRvIG5vdCByZWFsbHkgdW5k ZXJzdGFuZCB0aGlzIGNvbW1lbnQsIHNob3VsZCBJIHVzZQo+PiAoSVJRX0xFVkVMIHwgSVJRX1BF Ul9DUFUpPwo+IAo+IFlvdSB0ZWxsIG1lLiBFaXRoZXIgdGhlIHRyaWdnZXIgaXMgcmVsZXZhbnQs IG9yIGl0IGlzbid0LiBCdXQgSSBhc3N1bWUKPiBpdCBpcyBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIg dG8gdGhlIGZ1bmN0aW9uIGZvciBhIGdvb2QgcmVhc29uLgoKCj4gCj4+Cj4+Pj4gKwkJZm9yX2Vh Y2hfcG9zc2libGVfY3B1KGNwdSkgewo+Pj4+ICsJCQltZW1jcHkocGVyX2NwdV9wdHIocHBpX2Rh dGFbcHBpX2lkeF0sIGNwdSksIGRhdGEsCj4+Pj4gKwkJCSAgICAgICBzaXplb2Yoc3RydWN0IGFl c3Rfbm9kZSkpOwo+Pj4+ICsJCX0KPj4+PiArCQlpZiAocmVxdWVzdF9wZXJjcHVfaXJxKGlycSwg YWVzdF9pcnFfZnVuYywgIkFFU1QiLAo+Pj4+ICsJCQkJICAgICAgIHBwaV9kYXRhW3BwaV9pZHgr K10pKSB7Cj4+Pj4gKwkJCXByX2VycigiZmFpbGVkIHRvIHJlZ2lzdGVyIEFFU1QgSVJRICVkXG4i LCBpcnEpOwo+Pj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4+PiArCQl9Cj4+Pj4gKwl9IGVsc2Ug aWYgKGdzaSA8IDEwMjApIHsKPj4+PiArCQlpZiAocmVxdWVzdF9pcnEoaXJxLCBhZXN0X2lycV9m dW5jLCBJUlFGX1NIQVJFRCwgIkFFU1QiLAo+Pj4+ICsJCQkJZGF0YSkpIHsKPj4+IFdoeSBTSEFS RUQ/IFdobyB3b3VsZCBzaGFyZSBhIFJBUyBpbnRlcnJ1cHQ/Pz8/Pwo+Pgo+PiBNdWx0aSBBRVNU IG5vZGVzIG1heSB1c2UgdGhlIHNhbWUgaW50ZXJydXB0LCBmb3IgZXhhbXBsZSwgb25lIEREUkMg d2l0aAo+PiBhIFJBUyBpbnRlcnJ1cHQgaGFzIHR3byBzdWIgY2hhbm5lbHMsIHRoZXNlIHR3byBz dWIgY2hhbm5lbCBpcyBkZXNjcmliZWQKPj4gYXMgdHdvIEFFU1Qgbm9kZSBpbiBBRVNUIHRhYmxl LCBzbyB0aGV5IHNoYXJlIHRoZSBzYW1lIG9uZS4gSW4gYW5vdGhlcgo+PiBjYXNlLCBTTU1VIGhh cyB0d28gUkFTIG5vZGUsIFRDVSBhbmQgVEJVLCB0aGV5IG1heSBhbHNvIHNoYXJlIHRoZSBzYW1l Cj4+IGludGVycnVwdC4KPiAKPiBJIHN0aWxsIGZpbmQgaXQgb2RkLCBidXQgaGV5LCBpZiB0aGF0 J3MgdGhlIHdheSBwZW9wbGUgd2FudCB0byBoYW5kbGUKPiBSQVMsIHRoZXkgbWlnaHQgYXMgd2Vs bCBPUiBhbGwgb2YgdGhlbSBhbmQgd2lyZSBpdCB0byB0aGUgUkVTRVQgcGluLgo+IAoKSXQgZGVw ZW5kcyBvbiBIVyBkZXNpZ25lciBlc3BlY2lhbGx5IGZvciBERFJDLCBhbmQgaSB0aGluayAqKlNI QVJFRCoqIGlzIAptb3JlIGNvbXBhdGlibGUuIEJ1dCBpbiBmYWN0LCBJJ20gbm90IHN1cmUgaWYg ZHJpdmVyIHNob3VsZCBhc3N1bWUgdGhhdCAKYWxsIFJBUyBpbnRlcnJ1cHRpb25zIGFyZSBubyBz aGFyZWQuIElmIEFFU1QgZHJpdmVyIHNldCBJUlEgbm8gc2hhcmVkLCAKZG9lcyBpdCBuZWVkIHRv IGxvb3AgdGhyb3VnaCBhbGwgQUVTVCBub2RlIGZpcnN0IHRvIGVuc3VyZSBubyBub2RlIApzaGFy aW5nIGludGVycnVwdD8KCj4+Cj4+Pgo+Pj4+ICsJCQlwcl9lcnIoImZhaWxlZCB0byByZWdpc3Rl ciBBRVNUIElSUSAlZFxuIiwgaXJxKTsKPj4+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+PiBTYW1l IHF1ZXN0aW9uIGFib3V0IGV4dGVuZGVkIFNQSXMuCj4+Pgo+Pj4gQWxsIGluIGFsbCwgdGhpcyB3 aG9sZSBsb2dpYyBpcyB0b3RhbGx5IHVzZWxlc3MuIEl0IGlzbid0IHRoZSBkcml2ZXIncwo+Pj4g am9iIHRvIGNsYXNzaWZ5IHRoZSBHSUMgSU5USURzLi4uCj4+Cj4+IEFFU1QgdXNlIGJvdGggUFBJ IGFuZCBTUEksIGl0IHNlZW1zIHRoYXQgQUVTVCBkcml2ZXIgbXVzdCByZWNvZ25pemUKPj4gSU5U SUQgaW4gb3JkZXIgdG8gcmVxdWVzdCBpcnEgbnVtYmVyIHdpdGggZGlmZmVyZW50IGZ1bmN0aW9u LCBkbyB5b3UKPj4gaGF2ZSBiZXR0ZXIgc29sdXRpb24gaGVyZT8KPiAKPiBBZ2FpbiwgeW91IHNo b3VsZCBoYXZlIHRvIGxvb2sgYXQgdGhlIElOVElELCBldmVyLiBUaGF0J3Mgbm9uZSBvZiB5b3Vy Cj4gYnVzaW5lc3MsIGFuZCB5b3UgZG9uJ3QgZXZlbiBrbm93IHdoYXQgaW50ZXJydXB0IGNvbnRy b2xsZXIgdGhlIHN5c3RlbQo+IGlzIHByZXNlbnRpbmcgeW91IGFueXdheS4gVGhlIHdheSB0byBp ZGVudGlmeSBhIHBlci1DUFUgaW50ZXJydXB0IGlzCj4gdG8gdXNlIHRoZSBpcnFfaXNfcGVyY3B1 X2RldmlkKCkgaGVscGVyLCBhbmQgbm90IHRvIG1lc3Mgd2l0aAo+IHBvaW50bGVzcyBoZXVyaXN0 aWNzLgoKT0ssIGl0IHdpbGwgYmUgZml4ZWQgaW4gbmV4dCB2ZXJzaW9uLgo+IAo+IFRoYW5rcywK PiAKPiAJTS4KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFybS1rZXJuZWwK