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 80779C54E67 for ; Sun, 17 Mar 2024 13:09:32 +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:MIME-Version:References:In-Reply-To: Subject:Cc:To:From:Message-ID:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3NKO0aJNOzvtDiY/nDGrCCsUPQt8pf/Pj5/Vvrc/oxE=; b=w53wTzqSfDOarI P/iM24q39IhN0coXRLj/wtfz03bYX/dRs/9xD2aJoxr6h2S4IA2F166n0QNN0KY9IfbWpkkZklLDE s6XUI0v7Tz8/ciUt9w0YLYuEzJwbYhjD8Vo9+9VmUISFd8WzNT6QXP1EL07wumxvjBL881A+S75bg FzWBUusubincx7HeTBiW/Opvy5DRjJGp5fiz+C8ghC5VnbiS4TzloYcCGV8oYEUqZ4OiZ+cWK4xm/ dazcjsiBHkgM2qBwlj30e8Lt1/CqgBwncvzVdxRxYy0oEuhxNYw7q9sO+cdSe7NtsGStvjZa2Yhsb gl0Js3nSRsN+aOCf+39g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqGF-00000005FRT-3ahf; Sun, 17 Mar 2024 13:09:11 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqGC-00000005FQw-2Jnp for linux-arm-kernel@lists.infradead.org; Sun, 17 Mar 2024 13:09:10 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 27F2660A39; Sun, 17 Mar 2024 13:09:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95102C433F1; Sun, 17 Mar 2024 13:09:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710680944; bh=YpH/O6L1fyZz4ZnrgUQq9DJ00JR7UqTznRXw4DqQ3B0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Kp9UpsSYOyMMckcu4YnPpY6b6P0ntWvhuYh18hhC2iPCj2ImE08q06s5M7WI0WKzu dgwY0hCd4/8oA4/BN8d40ABJXq+a9/69ZPdYpnhB9BSIRJFbzdhmmYHofjyN9iYNbb 3dpx3O01H+V6kQP/G4spZKQeXZx4jHdas83s2AbFW7EFfIqerTudaqI4meUUhyQHuv mv2YyGJVzpAUSoDNLuoiPNRLZEmESW3xA312nlWCMywSwlcJJzddgohFz3BFljjl53 m7DpB8UBKRqq/NECNYU9FhjTCV8gZV4B409VnMHSedgoy+9dplJU3D0KUaIl+HnfZi H0morTVce7hxw== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1rlqG6-00D2GR-DS; Sun, 17 Mar 2024 13:09:02 +0000 Date: Sun, 17 Mar 2024 13:09:01 +0000 Message-ID: <867ci10zv6.wl-maz@kernel.org> From: Marc Zyngier To: =?UTF-8?B?UGllcnJlLUNsw6ltZW50?= Tosi Cc: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu , Will Deacon , Quentin Perret , Vincent Donnefort Subject: Re: [PATCH 09/10] KVM: arm64: nVHE: Support CONFIG_CFI_CLANG at EL2 In-Reply-To: <87885c41627a033d9772dd368049e7f8f5fd4ef7.1710446682.git.ptosi@google.com> References: <87885c41627a033d9772dd368049e7f8f5fd4ef7.1710446682.git.ptosi@google.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: ptosi@google.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com, will@kernel.org, qperret@google.com, vdonnefort@google.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060908_707336_6E5AEAEF X-CRM114-Status: GOOD ( 30.78 ) 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 T24gVGh1LCAxNCBNYXIgMjAyNCAyMDoyNTo0MyArMDAwMCwKUGllcnJlLUNsw6ltZW50IFRvc2kg PHB0b3NpQGdvb2dsZS5jb20+IHdyb3RlOgo+IAo+IFRoZSBjb21waWxlciBpbXBsZW1lbnRzIEtD RkkgYnkgYWRkaW5nIHR5cGUgaW5mb3JtYXRpb24gKHUzMikgYWJvdmUKPiBldmVyeSBmdW5jdGlv biB0aGF0IG1pZ2h0IGJlIGluZGlyZWN0bHkgY2FsbGVkIGFuZCwgd2hlbmV2ZXIgYSBmdW5jdGlv bgo+IHBvaW50ZXIgaXMgY2FsbGVkLCBpbmplY3RzIGEgcmVhZC1hbmQtY29tcGFyZSBvZiB0aGF0 IHUzMiBhZ2FpbnN0IHRoZQo+IHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV4cGVjdGVkIHR5 cGUuIEluIGNhc2Ugb2YgYSBtaXNtYXRjaCwgYSBCUksKPiBpbnN0cnVjdGlvbiBnZXRzIGV4ZWN1 dGVkLiBXaGVuIHRoZSBoeXBlcnZpc29yIHRyaWdnZXJzIHN1Y2ggYW4KPiBleGNlcHRpb24sIGl0 IHBhbmljcy4KCkltcG9ydGFudGx5LCB0aGlzIHRyaWdnZXJzIGFuIGV4Y2VwdGlvbiByZXR1cm4g dG8gRUwxLiBJZiB5b3UgZG9uJ3QKZXhwbGFpbiB0aGF0LCB0aGVuIG5vYm9keSBjYW4gcmVhbGx5 IHVuZGVyc3RhbmQgaG93IHlvdSBlbmQtdXAgaW4KbnZoZV9oeXBfcGFuaWNfaGFuZGxlcigpIHRo ZSBmaXJzdCBwbGFjZS4KCj4gCj4gVGhlcmVmb3JlLCB0ZWFjaCBoeXBfcGFuaWMoKSB0byBkZXRl Y3QgS0NGSSBlcnJvcnMgZnJvbSB0aGUgRVNSIGFuZAoKbnZoZV9oeXBfcGFuaWNfaGFuZGxlcigp IGluc3RlYWQgaHlwX3BhbmljKCk/Cgo+IHJlcG9ydCB0aGVtLiBJZiBuZWNlc3NhcnksIHJlbWlu ZCB0aGUgdXNlciB0aGF0IENPTkZJR19DRklfUEVSTUlTU0lWRQo+IGRvZXNuJ3QgYWZmZWN0IEVM MiBLQ0ZJLgo+IAo+IFBhc3MgJChDQ19GTEFHU19DRkkpIHRvIHRoZSBjb21waWxlciB3aGVuIGJ1 aWxkaW5nIHRoZSBuVkhFIGh5cCBjb2RlLgo+IAo+IFVzZSBTWU1fVFlQRURfRlVOQ19TVEFSVCgp IGZvciBfX3Brdm1faW5pdF9zd2l0Y2hfcGdkLCBhcyBuVkhFIGNhbid0Cj4gY2FsbCBpdCBkaXJl Y3RseSBhbmQgbXVzdCB1c2UgYSBQQSBmdW5jdGlvbiBwb2ludGVyIGZyb20gQyAoYmVjYXVzZSBp dAo+IGlzIHBhcnQgb2YgdGhlIGlkbWFwIHBhZ2UpLCB3aGljaCB3b3VsZCB0cmlnZ2VyIGEgS0NG SSBmYWlsdXJlIGlmIHRoZQo+IHR5cGUgSUQgd2Fzbid0IHByZXNlbnQuCj4gCj4gU2lnbmVkLW9m Zi1ieTogUGllcnJlLUNsw6ltZW50IFRvc2kgPHB0b3NpQGdvb2dsZS5jb20+Cj4gLS0tCj4gIGFy Y2gvYXJtNjQvaW5jbHVkZS9hc20vZXNyLmggICAgICAgfCAgNiArKysrKysKPiAgYXJjaC9hcm02 NC9rdm0vaGFuZGxlX2V4aXQuYyAgICAgICB8IDExICsrKysrKysrKysrCj4gIGFyY2gvYXJtNjQv a3ZtL2h5cC9udmhlL01ha2VmaWxlICAgfCAgNiArKystLS0KPiAgYXJjaC9hcm02NC9rdm0vaHlw L252aGUvaHlwLWluaXQuUyB8ICAzICsrLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vZXNyLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Vzci5oCj4gaW5kZXggYjBjMjNl N2Q2NTk1Li4yODFlMzUyYTRjOTQgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9lc3IuaAo+ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXNyLmgKPiBAQCAtMzk3LDYg KzM5NywxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZXNyX2lzX2RhdGFfYWJvcnQodW5zaWduZWQg bG9uZyBlc3IpCj4gIAlyZXR1cm4gZWMgPT0gRVNSX0VMeF9FQ19EQUJUX0xPVyB8fCBlYyA9PSBF U1JfRUx4X0VDX0RBQlRfQ1VSOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZXNyX2lz X2NmaV9icmsodW5zaWduZWQgbG9uZyBlc3IpCj4gK3sKPiArCXJldHVybiBFU1JfRUx4X0VDKGVz cikgPT0gRVNSX0VMeF9FQ19CUks2NCAmJgo+ICsJICAgICAgIChlc3JfY29tbWVudChlc3IpICYg fkNGSV9CUktfSU1NX01BU0spID09IENGSV9CUktfSU1NX0JBU0U7Cj4gK30KPiArCgpuaXQ6IHNp bmNlIHRoZXJlIGlzIGEgc2luZ2xlIHVzZXIsIHBsZWFzZSBwbGFjZSB0aGlzIGhlbHBlciBpbiBo YW5kbGVfZXhpdC5jLgoKPiAgc3RhdGljIGlubGluZSBib29sIGVzcl9mc2NfaXNfdHJhbnNsYXRp b25fZmF1bHQodW5zaWduZWQgbG9uZyBlc3IpCj4gIHsKPiAgCXJldHVybiAoZXNyICYgRVNSX0VM eF9GU0NfVFlQRSkgPT0gRVNSX0VMeF9GU0NfRkFVTFQ7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQva3ZtL2hhbmRsZV9leGl0LmMgYi9hcmNoL2FybTY0L2t2bS9oYW5kbGVfZXhpdC5jCj4gaW5k ZXggZmZhNjdhYzY2NTZjLi45YjY1NzRlNTBiMTMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9r dm0vaGFuZGxlX2V4aXQuYwo+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL2hhbmRsZV9leGl0LmMKPiBA QCAtMzgzLDYgKzM4MywxNSBAQCB2b2lkIGhhbmRsZV9leGl0X2Vhcmx5KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgaW50IGV4Y2VwdGlvbl9pbmRleCkKPiAgCQlrdm1faGFuZGxlX2d1ZXN0X3NlcnJv cih2Y3B1LCBrdm1fdmNwdV9nZXRfZXNyKHZjcHUpKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQg a3ZtX252aGVfcmVwb3J0X2NmaV9mYWlsdXJlKHU2NCBwYW5pY19hZGRyKQo+ICt7Cj4gKwlrdm1f ZXJyKCJuVkhFIGh5cCBDRkkgZmFpbHVyZSBhdDogWzwlMDE2bGx4Pl0gJXBCIVxuIiwgcGFuaWNf YWRkciwKPiArCQkodm9pZCAqKShwYW5pY19hZGRyICsga2FzbHJfb2Zmc2V0KCkpKTsKPiArCj4g KwlpZiAoSVNfRU5BQkxFRChDT05GSUdfQ0ZJX1BFUk1JU1NJVkUpKQo+ICsJCWt2bV9lcnIoIiAo Q09ORklHX0NGSV9QRVJNSVNTSVZFIGlnbm9yZWQgZm9yIGh5cCBmYWlsdXJlcylcbiIpOwo+ICt9 Cj4gKwo+ICB2b2lkIF9fbm9yZXR1cm4gX19jb2xkIG52aGVfaHlwX3BhbmljX2hhbmRsZXIodTY0 IGVzciwgdTY0IHNwc3IsCj4gIAkJCQkJICAgICAgdTY0IGVscl92aXJ0LCB1NjQgZWxyX3BoeXMs Cj4gIAkJCQkJICAgICAgdTY0IHBhciwgdWludHB0cl90IHZjcHUsCj4gQEAgLTQxMyw2ICs0MjIs OCBAQCB2b2lkIF9fbm9yZXR1cm4gX19jb2xkIG52aGVfaHlwX3BhbmljX2hhbmRsZXIodTY0IGVz ciwgdTY0IHNwc3IsCj4gIAkJZWxzZQo+ICAJCQlrdm1fZXJyKCJuVkhFIGh5cCBCVUcgYXQ6IFs8 JTAxNmxseD5dICVwQiFcbiIsIHBhbmljX2FkZHIsCj4gIAkJCQkJKHZvaWQgKikocGFuaWNfYWRk ciArIGthc2xyX29mZnNldCgpKSk7Cj4gKwl9IGVsc2UgaWYgKElTX0VOQUJMRUQoQ09ORklHX0NG SV9DTEFORykgJiYgZXNyX2lzX2NmaV9icmsoZXNyKSkgewoKSXQgd291bGQgc2VlbSBsb2dpY2Fs IHRvIG1vdmUgdGhlIElTX0VOQUJMRUQoKSBpbnRvIHRoZSBFU1IgY2hlY2sgaGVscGVyLgoKPiAr CQlrdm1fbnZoZV9yZXBvcnRfY2ZpX2ZhaWx1cmUocGFuaWNfYWRkcik7Cj4gIAl9IGVsc2Ugewo+ ICAJCWt2bV9lcnIoIm5WSEUgaHlwIHBhbmljIGF0OiBbPCUwMTZsbHg+XSAlcEIhXG4iLCBwYW5p Y19hZGRyLAo+ICAJCQkJKHZvaWQgKikocGFuaWNfYWRkciArIGthc2xyX29mZnNldCgpKSk7Cj4g ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2h5cC9udmhlL01ha2VmaWxlIGIvYXJjaC9hcm02 NC9rdm0vaHlwL252aGUvTWFrZWZpbGUKPiBpbmRleCAyMjUwMjUzYTY0MjkuLjJlYjkxNWQ4OTQz ZiAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9NYWtlZmlsZQo+ICsrKyBi L2FyY2gvYXJtNjQva3ZtL2h5cC9udmhlL01ha2VmaWxlCj4gQEAgLTg5LDkgKzg5LDkgQEAgcXVp ZXRfY21kX2h5cHJlbCA9IEhZUFJFTCAgJEAKPiAgcXVpZXRfY21kX2h5cGNvcHkgPSBIWVBDT1BZ ICRACj4gICAgICAgIGNtZF9oeXBjb3B5ID0gJChPQkpDT1BZKSAtLXByZWZpeC1zeW1ib2xzPV9f a3ZtX252aGVfICQ8ICRACj4gIAo+IC0jIFJlbW92ZSBmdHJhY2UsIFNoYWRvdyBDYWxsIFN0YWNr LCBhbmQgQ0ZJIENGTEFHUy4KPiAtIyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlICdub3RyYWNl JywgJ19fbm9zY3MnLCBhbmQgJ19fbm9jZmknIGFubm90YXRpb25zLgo+IC1LQlVJTERfQ0ZMQUdT IDo9ICQoZmlsdGVyLW91dCAkKENDX0ZMQUdTX0ZUUkFDRSkgJChDQ19GTEFHU19TQ1MpICQoQ0Nf RkxBR1NfQ0ZJKSwgJChLQlVJTERfQ0ZMQUdTKSkKPiArIyBSZW1vdmUgZnRyYWNlIGFuZCBTaGFk b3cgQ2FsbCBTdGFjayBDRkxBR1MuCj4gKyMgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSAnbm90 cmFjZScgYW5kICdfX25vc2NzJyBhbm5vdGF0aW9ucy4KPiArS0JVSUxEX0NGTEFHUyA6PSAkKGZp bHRlci1vdXQgJChDQ19GTEFHU19GVFJBQ0UpICQoQ0NfRkxBR1NfU0NTKSwgJChLQlVJTERfQ0ZM QUdTKSkKPiAgIyBTdGFydGluZyBmcm9tIDEzLjAuMCBsbHZtIGVtaXRzIFNIVF9SRUwgc2VjdGlv biAnLmxsdm0uY2FsbC1ncmFwaC1wcm9maWxlJwo+ICAjIHdoZW4gcHJvZmlsZSBvcHRpbWl6YXRp b24gaXMgYXBwbGllZC4gZ2VuLWh5cHJlbCBkb2VzIG5vdCBzdXBwb3J0IFNIVF9SRUwgYW5kCj4g ICMgY2F1c2VzIGEgYnVpbGQgZmFpbHVyZS4gUmVtb3ZlIHByb2ZpbGUgb3B0aW1pemF0aW9uIGZs YWdzLgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9oeXAtaW5pdC5TIGIv YXJjaC9hcm02NC9rdm0vaHlwL252aGUvaHlwLWluaXQuUwo+IGluZGV4IDg5NThkZDc2MTgzNy4u YWRlNzNmZGZhYWQ5IDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2h5cC1p bml0LlMKPiArKysgYi9hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9oeXAtaW5pdC5TCj4gQEAgLTUs NiArNSw3IEBACj4gICAqLwo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L2FybS1zbWNjYy5oPgo+ICsj aW5jbHVkZSA8bGludXgvY2ZpX3R5cGVzLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+ Cj4gIAo+ICAjaW5jbHVkZSA8YXNtL2FsdGVybmF0aXZlLmg+Cj4gQEAgLTI2NSw3ICsyNjYsNyBA QCBhbHRlcm5hdGl2ZV9lbHNlX25vcF9lbmRpZgo+ICAKPiAgU1lNX0NPREVfRU5EKF9fa3ZtX2hh bmRsZV9zdHViX2h2YykKPiAgCj4gLVNZTV9GVU5DX1NUQVJUKF9fcGt2bV9pbml0X3N3aXRjaF9w Z2QpCj4gK1NZTV9UWVBFRF9GVU5DX1NUQVJUKF9fcGt2bV9pbml0X3N3aXRjaF9wZ2QpCgpQbGVh c2UgcHV0IGEgY29tbWVudCBpbmRpY2F0aW5nIHdoeSBTWU1fVFlQRURfRlVOQ19TVEFSVCgpIGlz Cm5lY2Vzc2FyeSwgYmVjYXVzZSB0aGlzIHdpbGwgb3RoZXJ3aXNlIGJpdHJvdCB2ZXJ5IHF1aWNr bHkuCgo+ICAJLyogTG9hZCB0aGUgaW5wdXRzIGZyb20gdGhlIFZBIHBvaW50ZXIgYmVmb3JlIHR1 cm5pbmcgdGhlIE1NVSBvZmYgKi8KPiAgCWxkcgl4NSwgW3gwLCAjTlZIRV9JTklUX1BHRF9QQV0K PiAgCWxkcgl4MCwgW3gwLCAjTlZIRV9JTklUX1NUQUNLX0hZUF9WQV0KPiAKCkFub3RoZXIgcXVl c3Rpb24gaXMgaG93IGRvIHdlIHRlc3QgdGhhdCB0aGlzIHN0aWxsIHdvcmtzIGRvd24gdGhlCmxp bmU/IEluIG15IGV4cGVyaWVuY2UsIHRoZXNlIGZlYXR1cmVzIGV2ZW50dWFsbHkgYml0cm90IGJl Y2F1c2UgdGhleQpoYXZlIHZlcnkgbGl0dGxlIGZ1bmN0aW9uYWwgaW1wYWN0IChqdXN0IGxpa2Ug dGhlIHBhbmljIGhhbmRsZXIgYnJva2UKdGhlIEVMUl9FTDIgaGFuZGxpbmcpLiBXZSByZWFsbHkg c2hvdWxkIGhhdmUgYSB3YXkgdG8gZXhlcmNpc2Ugc3VjaApmYWlsdXJlIHBhdGguCgpUaGFua3Ms CgoJTS4KCi0tIApXaXRob3V0IGRldmlhdGlvbiBmcm9tIHRoZSBub3JtLCBwcm9ncmVzcyBpcyBu b3QgcG9zc2libGUuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==