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 86841C74A5B for ; Tue, 14 Mar 2023 14:09:09 +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:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ggK+UEt/f8Lr0T4HBrSkKefQbrMtw4T1ZSSVG4CTje0=; b=uix6Zl/WQ7aNE0 o1UyWTQUik8+6fdTd7/jrYjyp8/ISGZ1OZtKRZQbXRLIGY6xznjTVb8dX+wym/6aUHCeHNlD0fEp4 XA2U3qDKIs9C8Wkb6E2wMULd7E4ykEcAPM50bfyuRTYcu5M+A9tO8FGL818yA9tqwe+/QW9DPH1Z/ mH92wFoVdWeCcSgNLKRLlRkp84wzSF3N18wtl+q0anhJur4fDen0q4np3e6cCMfjmJGRiAP/zYiGg uzW8CLVgwcVFfIqSGnUt0FJPKxZb7If5snfxTvTZMgSJ5ppUAxAIYq6bIHf5pGWrUWTrZLHPtHaJl eq+ibJD12AcUgP8a7fjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pc5K8-00APBj-1r; Tue, 14 Mar 2023 14:08:20 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pc5K4-00APAG-3A for linux-arm-kernel@lists.infradead.org; Tue, 14 Mar 2023 14:08:18 +0000 Received: by mail-pl1-x62a.google.com with SMTP id y11so16748385plg.1 for ; Tue, 14 Mar 2023 07:08:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1678802890; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=9lPoZZPacx9fdneUfHux1/KYUBYODq0fopFLjkjIOik=; b=V9hO1c5s9f9mi2Gw7qut7duszo+fbowP4j2pkKss4fRvTmwnbpNtZUv09ZmQGI3ZwA 2jg5s2IoX5iTxbiOI+hCOk8zxrU+ZA+HPmsQ8WacVC9jKB9HaiXvZgPDOUJYRm3JVVsD ShJiA9OJVLRXC/NVMhwSPholWIRl9mXekIbK7nfKy0y4nbYwOavt6P9zs0v87+Ue41hK M3cNKIgE66yL0AbM9XP8bqulnFlNsqnfQDS//aztPR8hZ5Pk9LsKBPl/bykzAL6qvZK3 ElT/PmNj19JT1scXffc5KNghTKw4add0Oa9tsJ8eNcF0hkixALFdttWswAAocBi8hBS7 RYRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678802890; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9lPoZZPacx9fdneUfHux1/KYUBYODq0fopFLjkjIOik=; b=SzX3x3wNtpQ1aFL1GaAI/UZmJDKX4iz/1fKG6UrMGj/Cp9krjGAPRtn6BZPYBmfT0w +qA2Yth9T0fARblZn8jGfKTVzIeIEmjJuOKxiI4nkFzSBl8MnJN95AnOMPrcMkdL5tsr hwBrs9tSk932AkgY5pfTkUuawLgBi6VpJOrAJ1piPheVWnbVNlQga/IvKvaGQRnPalqi of8DceRO3TuC0O98sTlinb7tpyjHdh6LkdqLVZddBPoL/CUkaUzS9urNGy6kx0wLlzhl MMd9i+yv9wImkskECD0sXyHeRQeBrKrSaXm2GGyKOjIbYqR3lnTPhK5D/Bg2MIVgoQvR vq9g== X-Gm-Message-State: AO0yUKUjZTwsPLVXe3xcfSNTTWPe569BGiUIVXznaalFN/lUZEGUL3bh 5duN8/CGVsiqKEBxgQfDKrw/ X-Google-Smtp-Source: AK7set+jjrZxXvG/HqwihK5qqGzkzo6NJC3ZPFgQShYZYkHWr0ZYgNVzuREatJ5EWXGJaMtZmOcZew== X-Received: by 2002:a05:6a20:b061:b0:c7:320a:60b6 with SMTP id dx33-20020a056a20b06100b000c7320a60b6mr31206938pzb.26.1678802890196; Tue, 14 Mar 2023 07:08:10 -0700 (PDT) Received: from thinkpad ([117.217.182.35]) by smtp.gmail.com with ESMTPSA id u23-20020aa78497000000b005a8b4dcd213sm1666092pfn.78.2023.03.14.07.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Mar 2023 07:08:09 -0700 (PDT) Date: Tue, 14 Mar 2023 19:37:56 +0530 From: Manivannan Sadhasivam To: Robin Murphy Cc: Johan Hovold , will@kernel.org, joro@8bytes.org, andersson@kernel.org, johan+linaro@kernel.org, steev@kali.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] iommu/arm-smmu-qcom: Rework the logic finding the bypass quirk Message-ID: <20230314140756.GD137001@thinkpad> References: <20230314105905.137241-1-manivannan.sadhasivam@linaro.org> <20230314112620.GB137001@thinkpad> <13b46d42-e497-8dd7-4785-f58447128a40@arm.com> <20230314132018.GC137001@thinkpad> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230314_070817_023081_8E989BFB X-CRM114-Status: GOOD ( 47.94 ) 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 T24gVHVlLCBNYXIgMTQsIDIwMjMgYXQgMDE6NDE6NTZQTSArMDAwMCwgUm9iaW4gTXVycGh5IHdy b3RlOgo+IE9uIDIwMjMtMDMtMTQgMTM6MjAsIE1hbml2YW5uYW4gU2FkaGFzaXZhbSB3cm90ZToK PiA+IE9uIFR1ZSwgTWFyIDE0LCAyMDIzIGF0IDExOjU4OjI0QU0gKzAwMDAsIFJvYmluIE11cnBo eSB3cm90ZToKPiA+ID4gT24gMjAyMy0wMy0xNCAxMToyNiwgTWFuaXZhbm5hbiBTYWRoYXNpdmFt IHdyb3RlOgo+ID4gPiA+IE9uIFR1ZSwgTWFyIDE0LCAyMDIzIGF0IDEyOjE3OjM4UE0gKzAxMDAs IEpvaGFuIEhvdm9sZCB3cm90ZToKPiA+ID4gPiA+IE9uIFR1ZSwgTWFyIDE0LCAyMDIzIGF0IDA0 OjI5OjA1UE0gKzA1MzAsIE1hbml2YW5uYW4gU2FkaGFzaXZhbSB3cm90ZToKPiA+ID4gPiA+ID4g VGhlIGxvZ2ljIHVzZWQgdG8gZmluZCB0aGUgcXVpcmt5IGZpcm13YXJlIHRoYXQgaW50ZXJjZXB0 cyB0aGUgd3JpdGVzIHRvCj4gPiA+ID4gPiA+IFMyQ1IgcmVnaXN0ZXIgdG8gcmVwbGFjZSBieXBh c3MgdHlwZSBzdHJlYW1zIHdpdGggYSBmYXVsdCwgYW5kIGlnbm9yZSB0aGUKPiA+ID4gPiA+ID4g ZmF1bHQgdHlwZSwgaXMgbm90IHdvcmtpbmcgd2l0aCB0aGUgZmlybXdhcmUgb24gbmV3ZXIgU29D cyBsaWtlIFNDODI4MFhQLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gVGhlIGN1cnJlbnQgbG9n aWMgdXNlcyB0aGUgbGFzdCBzdHJlYW0gbWFwcGluZyBncm91cCAobnVtX21hcHBpbmdfZ3JvdXBz Cj4gPiA+ID4gPiA+IC0gMSkgYXMgYW4gaW5kZXggZm9yIGZpbmRpbmcgcXVpcmt5IGZpcm13YXJl LiBCdXQgb24gU0M4MjgwWFAsIE5VU01SRwo+ID4gPiA+ID4gPiByZXBvcnRzIGEgdmFsdWUgb2Yg MTYyIChwb3NzaWJseSBlbXVsYXRlZCBieSB0aGUgaHlwZXJ2aXNvcikgYW5kIGxvZ2ljIGlzCj4g PiA+ID4gPiA+IG5vdCB3b3JraW5nIGZvciBzdHJlYW0gbWFwcGluZyBncm91cHMgPiAxMjguIChO b3RlIHRoYXQgdGhlIEFSTSBTTU1VCj4gPiA+ID4gPiA+IGFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0 aW9uIGRlZmluZXMgTlVNU01SRyBpbiB0aGUgcmFuZ2Ugb2YgMC0xMjcpLgo+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gU28gdGhlIGN1cnJlbnQgbG9naWMgdGhhdCBjaGVja3MgdGhlICgxNjItMSl0 aCBTMkNSIGVudHJ5IGZhaWxzIHRvIGRldGVjdAo+ID4gPiA+ID4gPiB0aGUgcXVpcmt5IGZpcm13 YXJlIG9uIHRoZXNlIGRldmljZXMgYW5kIFNNTVUgdHJpZ2dlcnMgaW52YWxpZCBjb250ZXh0Cj4g PiA+ID4gPiA+IGZhdWx0IGZvciBieXBhc3Mgc3RyZWFtcy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+IFRvIGZpeCB0aGlzIGlzc3VlLCByZXdvcmsgdGhlIGxvZ2ljIHRvIGZpbmQgdGhlIGZpcnN0 IG5vbi12YWxpZCAoZnJlZSkKPiA+ID4gPiA+ID4gc3RyZWFtIG1hcHBpbmcgcmVnaXN0ZXIgZ3Jv dXAgKFNNUikgd2l0aGluIDEyOCBncm91cHMgYW5kIHVzZSB0aGF0IGluZGV4Cj4gPiA+ID4gPiA+ IHRvIGFjY2VzcyBTMkNSIGZvciBkZXRlY3RpbmcgdGhlIGJ5cGFzcyBxdWlyay4gSWYgbm8gZnJl ZSBncm91cHMgYXJlCj4gPiA+ID4gPiA+IGF2YWlsYWJsZSwgdGhlbiBqdXN0IHNraXAgdGhlIHF1 aXJrIGRldGVjdGlvbi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFdoaWxlIGF0IGl0LCBsZXQn cyBtb3ZlIHRoZSBxdWlyayBkZXRlY3Rpb24gbG9naWMgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbgo+ ID4gPiA+ID4gPiBhbmQgY2hhbmdlIHRoZSBsb2NhbCB2YXJpYWJsZSBuYW1lIGZyb20gbGFzdF9z MmNyIHRvIGZyZWVfczJjci4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFJldmlld2VkLWJ5OiBC am9ybiBBbmRlcnNzb24gPGFuZGVyc3NvbkBrZXJuZWwub3JnPgo+ID4gPiA+ID4gPiBTaWduZWQt b2ZmLWJ5OiBNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5h cm8ub3JnPgo+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IENoYW5nZXMg aW4gdjI6Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAqIExpbWl0ZWQgdGhlIGNoZWNrIHRvIDEy OCBncm91cHMgYXMgcGVyIEFSTSBTTU1VIHNwZWMncyBOVU1TTVJHIHJhbmdlCj4gPiA+ID4gPiA+ ICogTW92ZWQgdGhlIHF1aXJrIGhhbmRsaW5nIHRvIGl0cyBvd24gZnVuY3Rpb24KPiA+ID4gPiA+ ID4gKiBDb2xsZWN0ZWQgcmV2aWV3IHRhZyBmcm9tIEJqb3JuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiAgICBkcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS9hcm0tc21tdS1xY29tLmMgfCA0OCAr KysrKysrKysrKysrKysrKystLS0tCj4gPiA+ID4gPiA+ICAgIDEgZmlsZSBjaGFuZ2VkLCA0MCBp bnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L2FybS1zbW11LXFjb20uYyBiL2Ry aXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L2FybS1zbW11LXFjb20uYwo+ID4gPiA+ID4gPiBpbmRl eCBkMWIyOTZiOTVjODYuLjQ4MzYyZDdlZjQ1MSAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9pb21tdS9hcm0vYXJtLXNtbXUvYXJtLXNtbXUtcWNvbS5jCj4gPiA+ID4gPiA+ICsrKyBi L2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L2FybS1zbW11LXFjb20uYwo+ID4gPiA+ID4gPiBA QCAtMjY2LDI1ICsyNjYsNDkgQEAgc3RhdGljIGludCBxY29tX3NtbXVfaW5pdF9jb250ZXh0KHN0 cnVjdCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluLAo+ID4gPiA+ID4gPiAgICAJcmV0dXJu IDA7Cj4gPiA+ID4gPiA+ICAgIH0KPiA+ID4gPiA+ID4gLXN0YXRpYyBpbnQgcWNvbV9zbW11X2Nm Z19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+ID4gPiA+ID4gPiArc3RhdGlj IHZvaWQgcWNvbV9zbW11X2J5cGFzc19xdWlyayhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11 KQo+ID4gPiA+ID4gPiAgICB7Cj4gPiA+ID4gPiA+IC0JdW5zaWduZWQgaW50IGxhc3RfczJjciA9 IEFSTV9TTU1VX0dSMF9TMkNSKHNtbXUtPm51bV9tYXBwaW5nX2dyb3VwcyAtIDEpOwo+ID4gPiA+ ID4gPiAgICAJc3RydWN0IHFjb21fc21tdSAqcXNtbXUgPSB0b19xY29tX3NtbXUoc21tdSk7Cj4g PiA+ID4gPiA+IC0JdTMyIHJlZzsKPiA+ID4gPiA+ID4gLQl1MzIgc21yOwo+ID4gPiA+ID4gPiAr CXUzMiBmcmVlX3MyY3I7Cj4gPiA+ID4gPiA+ICsJdTMyIHJlZywgc21yOwo+ID4gPiA+ID4gPiAg ICAJaW50IGk7Cj4gPiA+ID4gPiA+ICsJLyoKPiA+ID4gPiA+ID4gKwkgKiBGaW5kIHRoZSBmaXJz dCBub24tdmFsaWQgKGZyZWUpIHN0cmVhbSBtYXBwaW5nIHJlZ2lzdGVyIGdyb3VwIGFuZAo+ID4g PiA+ID4gPiArCSAqIHVzZSB0aGF0IGluZGV4IHRvIGFjY2VzcyBTMkNSIGZvciBkZXRlY3Rpbmcg dGhlIGJ5cGFzcyBxdWlyay4KPiA+ID4gPiA+ID4gKwkgKgo+ID4gPiA+ID4gPiArCSAqIE5vdGUg dGhhdCBvbmx5IHRoZSBmaXJzdCAxMjggc3RyZWFtIG1hcHBpbmcgZ3JvdXBzIGFyZSBjb25zaWRl cmVkIGZvcgo+ID4gPiA+ID4gPiArCSAqIHRoZSBjaGVjay4gVGhpcyBpcyBiZWNhdXNlIHRoZSBB Uk0gU01NVSBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbgo+ID4gPiA+ID4gPiArCSAqIGRlZmlu ZXMgTlVNU01SRyAoTnVtYmVyIG9mIFN0cmVhbSBNYXBwaW5nIFJlZ2lzdGVyIEdyb3VwcykgaW4g dGhlCj4gPiA+ID4gPiA+ICsJICogcmFuZ2Ugb2YgMC0xMjcsIGJ1dCBzb21lIFFjb20gcGxhdGZv cm1zIGVtdWxhdGUgbW9yZSBzdHJlYW0gbWFwcGluZwo+ID4gPiA+ID4gPiArCSAqIGdyb3VwcyB3 aXRoIHRoZSBoZWxwIG9mIGh5cGVydmlzb3IuIEFuZCB0aG9zZSBncm91cHMgZG9uJ3QgZXhoaWJp dAo+ID4gPiA+ID4gPiArCSAqIHRoZSBxdWlya3kgYmVoYXZpb3IuCj4gPiA+ID4gPiA+ICsJICov Cj4gPiA+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IDEyODsgaSsrKSB7Cj4gPiA+ID4gPiAKPiA+ ID4gPiA+IFRoaXMgbWF5IG5vdyBhY2Nlc3MgcmVnaXN0ZXJzIGJleW9uZCBzbW11LT5udW1fbWFw cGluZ19ncm91cHMuIFNob3VsZAo+ID4gPiA+ID4geW91IG5vdCB1c2UgdGhlIG1pbmltdW0gb2Yg dGhlc2UgdHdvIHZhbHVlcyBoZXJlIChhbmQgYmVsb3cpPwo+ID4gPiA+ID4gCj4gPiA+ID4gCj4g PiA+ID4gRG9oISB5ZWFoLCB5b3UncmUgcmlnaHQuIFdpbGwgZml4IGl0IGluIHYzLgo+ID4gPiAK PiA+ID4gRldJVyBJJ2Qgc2F5IGl0J3MgcHJvYmFibHkgYmVzdCBpZiB0aGUgY2ZnX3Byb2JlIGhv b2sgY2xhbXBzCj4gPiA+IHNtbXUtPm51bV9tYXBwaW5nX2dyb3VwcyB0byB0aGUgYXJjaGl0ZWN0 dXJhbCBtYXhpbXVtIHN0cmFpZ2h0IGF3YXksIHRvIGFsc28KPiA+ID4gcHJldmVudCB0aGUgbWFp biBkcml2ZXIgaXRlcmF0aW5nIG9mZiBpbnRvIHRoZSBub25zZW5zaWNhbCBhcmVhIGluCj4gPiA+ IGFybV9zbW11X2RldmljZV9yZXNldCgpIG9yIHRoZSBTTVIgYWxsb2NhdG9yIGl0c2VsZi4KPiA+ ID4gCj4gPiAKPiA+IFdlIGNvbnNpZGVyZWQgdGhhdCBhbHNvIGJ1dCBRY29tIHB1cnBvc2VmdWxs eSBleHRlbmRlZCB0aGUgTlVNU01SRyBmb3IKPiA+IHZpcnR1YWxpemF0aW9uIHVzZWNhc2UgYW5k IHdlIGRvIG5vdCBoYXZlIGEgY2xlYXIgcGljdHVyZSBvZiBpdC4KPiAKPiBXaGF0ZXZlciB0aGF0 IHN1cHBvc2VkIHVzZS1jYXNlIG1heSBiZSwgTGludXggZG9lcyBub3Qgc3VwcG9ydCBpdCwgYW5k Cj4gY2xlYXJseSBpc24ndCBnb2luZyB0byBzdXBwb3J0IGl0IGFueSB0aW1lIHNvb24gaWYgd2Ug ZG9uJ3QgZXZlbiBrbm93IHdoYXQKPiBpdCBpcy4gVGhlcmVmb3JlIExpbnV4IGRvZXMgbm90IG5l ZWQgdG8gYWNjb21tb2RhdGUgdGhpcyB3ZWlyZG5lc3MgZm9yIHRoZQo+IGZvcmVzZWVhYmxlIGZ1 dHVyZSwgYmV5b25kIHNpbXBseSBtYWtpbmcgc3VyZSBpdCBkb2Vzbid0IGNhdXNlIGFueSBwcm9i bGVtcwo+IGZvciB3aGF0IExpbnV4ICpkb2VzKiBzdXBwb3J0LiBJdCdzIGJhZCBlbm91Z2ggdGhh dCB0aGUgZW11bGF0aW9uIG9mCj4gIm5vcm1hbCIgU01ScyBjb250aW51ZXMgdG8gdmlvbGF0ZSB0 aGUgYXJjaGl0ZWN0dXJlLCBidXQgSSdtIGV2ZW4gbW9yZQo+IHVuY29tZm9ydGFibGUgbGV0dGlu ZyB0aGUgZ2VuZXJpYyBhcmNoaXRlY3R1cmUgZHJpdmVyIHBva2UgYXQgY29tcGxldGVseQo+IG5v bi1hcmNoaXRlY3R1cmFsIHJlZ2lzdGVycyB3aGljaCBkb24ndCBldmVuIGhhdmUgdGhlIHNhbWUg YmVoYXZpb3VyIGFzIHRoZQo+IG9uZXMgdGhleSdyZSBzdXBwb3NlZGx5IGV4dGVuZGluZy4KPiAK Ck9rYXkgdGhlbi4gSSdsbCBjYXAgaXQgdG8gMTI4LgoKVGhhbmtzLApNYW5pCgo+IFRoYW5rcywK PiBSb2Jpbi4KPiAKPiA+IFRoYXQncyB0aGUKPiA+IHJlYXNvbiB3ZSBzZXR0bGVkIHdpdGggY2Fw cGluZyB0aGUgdmFsdWUgb25seSBmb3IgdGhlIHF1aXJrIGRldGVjdGlvbi4KPiA+IAo+ID4gVGhh bmtzLAo+ID4gTWFuaQo+ID4gCj4gPiA+IChOb3RlIHRoYXQgd2UgZG9uJ3Qgc3VwcG9ydCB0aGUg d2VpcmQgRVhTTVJHUyBleHRlbnNpb24gdGhhdCBhcHBlYXJlZCBpbiBhCj4gPiA+IGxhdGUgdmVy c2lvbiBvZiB0aGUgYXJjaGl0ZWN0dXJlLCBidXQgZXZlbiBpZiB3ZSBkaWQsIHRoYXQgc3RpbGwg cmVwb3J0cyAxMjgKPiA+ID4gZm9yIElEUjAuTlVNU01SRywgYW5kIHRoZSBleHRyYSBleHRlbmRl ZCBTTVJzIGxpdmUgc29tZXdoZXJlIGNvbXBsZXRlbHkKPiA+ID4gZGlmZmVyZW50LikKPiA+ID4g Cj4gPiA+IFRoYW5rcywKPiA+ID4gUm9iaW4uCj4gPiAKCi0tIArgrq7grqPgrr/grrXgrqPgr43g rqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==