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 X-Spam-Level: X-Spam-Status: No, score=-22.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E90EC433ED for ; Thu, 6 May 2021 15:35:38 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A42EA610C8 for ; Thu, 6 May 2021 15:35:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A42EA610C8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; 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:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=0+77uKVk/4ULIxWlDboy7IZsVvECtA1brHj6JU0y/zw=; b=DEMv1Wy3sa4okfWt0WdGSPWZi p57fenocMTPOc2Wj7t0Wpr+OihfW+43aYW+3r3tHZeLfi5TAKitOO6bQfWqvU0OGYw9w0RCkFaKbP iBsWrrKP0E31/H88qYdifPm6DhDhEMojCHUVsJ4ppx9ifcb1krWKgrSVB2IOZaWlU3ysOJS3nJmhY MD2H2ZePf/38WO1gEzqAiTYdX5mhBAcKYaeazZ2QROV4c+PNwd1DOM9UYeBep8xMBKRXobX9gCK+o aJgf10Z9FduRTEI0WjvK/UQUFPSTB8RhCEWDjMCIOcD0Uoy9lhhiPQAuySUYl1ZDPF0+DLFxff0no RwoW332Zg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1leg0n-004aPI-Cp; Thu, 06 May 2021 15:34:01 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lefzg-004a2r-L9 for linux-arm-kernel@desiato.infradead.org; Thu, 06 May 2021 15:32:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Sender:Reply-To:Content-ID:Content-Description; bh=+u31kIFm5zZJgYRpI5nPFxm4N80JqTvM466qjbl87Dc=; b=MHxGWv1DaYy094iLR/MJZuYsqc KfPi1i08wmgzdsVBQfeAfQYDsS6B3eoiR9bY0pcVwM8jLCK927+7UItDdlMr18udWI7PclnNpDRT1 7kEqQ7VG+2Il3OHUnEKEcEQP9hNBsfti61C00N5m2dwjs7fxDYlYo8+pR8nGAt6ZfRMaLoaSlfjVt WrbpFl5W5Licep1YfV3zBzF80WCEhkMl/3B/Ag5z45Nlcvh77r4kmn1ReO4lmEGOC+yJ8fP8ye2CR BbJYH+2hc2MkZ/+qNklWOtQiV6FPoS8d4Y70UBW3cgS5PdXz0TBkAWOmtfry3wGbvMAxxYYeB8HfO HZq9j2qA==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lefzb-0069f3-W3 for linux-arm-kernel@lists.infradead.org; Thu, 06 May 2021 15:32:51 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 22EC66101A; Thu, 6 May 2021 15:32:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620315167; bh=s/YJwMrqvoOsPJSEvD5WAEweomBui7Dy2w8ikfwL2rE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jMcfh4hFHod7LXZBOUUtvmvy4wKrI7+Jptr9J5rR2eVvG5FFNHPHSOEEb6liiPu8s ne7QsyByM7KFV6dkVidzC6nn0oLthCWzodUR0UaW0zmSs+bGLH6IUkw4g9Qvr9maQ9 gLYST0fQlC+n9u2zAgGDodvZY4OjNlkaeMpRrsgLHZrlGacTTn2odt2/k4WEAigRow g447gIpekZ5d9Mf5ju7AbcR3h4pLGUkjpAMjRy3j6jDlY10CUqm7EtYRgfx1FKvmcv lL402eKQINe/Rdi2kYIKPgrEi2CdHF5NqIegO7TwoWYoEfNMmAQj8aa4uGrHUo+Y4z bz5q802AXJzWA== Received: by pali.im (Postfix) id 32F3D89A; Thu, 6 May 2021 17:32:44 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Lorenzo Pieralisi , Thomas Petazzoni , Rob Herring , Bjorn Helgaas Cc: Russell King , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Remi Pommarel , Xogium , Tomasz Maciej Nowak , Marc Zyngier , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 01/42] PCI: aardvark: Fix kernel panic during PIO transfer Date: Thu, 6 May 2021 17:31:12 +0200 Message-Id: <20210506153153.30454-2-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210506153153.30454-1-pali@kernel.org> References: <20210506153153.30454-1-pali@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210506_083248_152764_95AF65AF X-CRM114-Status: GOOD ( 21.97 ) 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 VHJ5aW5nIHRvIHN0YXJ0IGEgbmV3IFBJTyB0cmFuc2ZlciBieSB3cml0aW5nIHZhbHVlIDAgaW4g UElPX1NUQVJUIHJlZ2lzdGVyCndoZW4gcHJldmlvdXMgdHJhbnNmZXIgaGFzIG5vdCB5ZXQgY29t cGxldGVkICh3aGljaCBpcyBpbmRpY2F0ZWQgYnkgdmFsdWUgMQppbiBQSU9fU1RBUlQpIGNhdXNl cyBhbiBFeHRlcm5hbCBBYm9ydCBvbiBDUFUsIHdoaWNoIHJlc3VsdHMgaW4ga2VybmVsCnBhbmlj OgoKICAgIFNFcnJvciBJbnRlcnJ1cHQgb24gQ1BVMCwgY29kZSAweGJmMDAwMDAyIC0tIFNFcnJv cgogICAgS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEFzeW5jaHJvbm91cyBTRXJyb3IgSW50 ZXJydXB0CgpUbyBwcmV2ZW50IGtlcm5lbCBwYW5pYywgaXQgaXMgcmVxdWlyZWQgdG8gcmVqZWN0 IGEgbmV3IFBJTyB0cmFuc2ZlciB3aGVuCnByZXZpb3VzIG9uZSBoYXMgbm90IGZpbmlzaGVkIHll dC4KCklmIHByZXZpb3VzIFBJTyB0cmFuc2ZlciBpcyBub3QgZmluaXNoZWQgeWV0LCB0aGUga2Vy bmVsIG1heSBpc3N1ZSBhIG5ldwpQSU8gcmVxdWVzdCBvbmx5IGlmIHRoZSBwcmV2aW91cyBQSU8g dHJhbnNmZXIgdGltZWQgb3V0LgoKSW4gdGhlIHBhc3QgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBp c3N1ZSB3YXMgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCAoYXMgaXQKb2Z0ZW4gaGFwcGVucyBkdXJp bmcgbGluayByZXRyYWluaW5nIG9yIGFmdGVyIGxpbmsgZG93biBldmVudCkgYW5kIHNwZWNpYWwK aGFjayB3YXMgaW1wbGVtZW50ZWQgaW4gVHJ1c3RlZCBGaXJtd2FyZSB0byBjYXRjaCBhbGwgU0Vy cm9yIGV2ZW50cyBpbiBFTDMsCnRvIGlnbm9yZSBlcnJvcnMgd2l0aCBjb2RlIDB4YmYwMDAwMDIg YW5kIG5vdCBmb3J3YXJkaW5nIGFueSBvdGhlciBlcnJvcnMKdG8ga2VybmVsIGFuZCBpbnN0ZWFk IHRocm93IHBhbmljIGZyb20gRUwzIFRydXN0ZWQgRmlybXdhcmUgaGFuZGxlci4KCkxpbmtzIHRv IGRpc2N1c3Npb24gYW5kIHBhdGNoZXMgYWJvdXQgdGhpcyBpc3N1ZToKaHR0cHM6Ly9naXQudHJ1 c3RlZGZpcm13YXJlLm9yZy9URi1BL3RydXN0ZWQtZmlybXdhcmUtYS5naXQvY29tbWl0Lz9pZD0z YzdkY2RhYzVjNTAKaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGNpLzIwMTkwMzE2MTYx MjQzLjI5NTE3LTEtcmVwa0B0cmlwbGVmYXUubHQvCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xp bnV4LXBjaS85NzFiZTE1MWQyNDMxMmNjNTMzOTg5YTY0YmQ0NTRiNEB3d3cubG9lbi5mci8KaHR0 cHM6Ly9yZXZpZXcudHJ1c3RlZGZpcm13YXJlLm9yZy9jL1RGLUEvdHJ1c3RlZC1maXJtd2FyZS1h LysvMTU0MQoKQnV0IHRoZSByZWFsIGNhdXNlIHdhcyB0aGUgZmFjdCB0aGF0IGR1cmluZyBsaW5r IHJldHJhbmluZyBvciBhZnRlciBsaW5rCmRvd24gZXZlbnQgdGhlIFBJTyB0cmFuc2ZlciBtYXkg dGFrZSBsb25nZXIgdGltZSwgdXAgdG8gdGhlIDEuNDRzIHVudGlsIGl0CnRpbWVzIG91dC4gVGhp cyBpbmNyZWFzZWQgcHJvYmFiaWxpdHkgdGhhdCBhIG5ldyBQSU8gdHJhbnNmZXIgd291bGQgYmUK aXNzdWVkIGJ5IGtlcm5lbCB3aGlsZSBwcmV2aW91cyBvbmUgaGFzIG5vdCBmaW5pc2hlZCB5ZXQu CgpBZnRlciBhcHBseWluZyB0aGlzIGNoYW5nZSBpbnRvIHRoZSBrZXJuZWwsIGl0IGlzIHBvc3Np YmxlIHRvIHJldmVydCB0aGUKbWVudGlvbmVkIFRGLUEgaGFjayBhbmQgU0Vycm9yIGV2ZW50cyBk byBub3QgaGF2ZSB0byBiZSBjYXVnaHQgaW4gVEYtQSBFTDMuCgpTaWduZWQtb2ZmLWJ5OiBQYWxp IFJvaMOhciA8cGFsaUBrZXJuZWwub3JnPgpSZXZpZXdlZC1ieTogTWFyZWsgQmVow7puIDxrYWJl bEBrZXJuZWwub3JnPgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZyAjIDdmYmNiNWRhODExYiAo IlBDSTogYWFyZHZhcms6IERvbid0IHJlbHkgb24gamlmZmllcyB3aGlsZSBob2xkaW5nIHNwaW5s b2NrIikKLS0tCiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1hYXJkdmFyay5jIHwgNDkgKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygr KSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aS1hYXJkdmFyay5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktYWFyZHZhcmsuYwppbmRl eCAwNTFiNDhiZDc5ODUuLmUzZjVlN2FiNzYwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29u dHJvbGxlci9wY2ktYWFyZHZhcmsuYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1h YXJkdmFyay5jCkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIGludCBhZHZrX3BjaWVfd2FpdF9w aW8oc3RydWN0IGFkdmtfcGNpZSAqcGNpZSkKIAkJdWRlbGF5KFBJT19SRVRSWV9ERUxBWSk7CiAJ fQogCi0JZGV2X2VycihkZXYsICJjb25maWcgcmVhZC93cml0ZSB0aW1lZCBvdXRcbiIpOworCWRl dl9lcnIoZGV2LCAiUElPIHJlYWQvd3JpdGUgdHJhbnNmZXIgdGltZSBvdXRcbiIpOwogCXJldHVy biAtRVRJTUVET1VUOwogfQogCkBAIC02NTcsNiArNjU3LDM1IEBAIHN0YXRpYyBib29sIGFkdmtf cGNpZV92YWxpZF9kZXZpY2Uoc3RydWN0IGFkdmtfcGNpZSAqcGNpZSwgc3RydWN0IHBjaV9idXMg KmJ1cywKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgYWR2a19wY2llX3Bpb19pc19y dW5uaW5nKHN0cnVjdCBhZHZrX3BjaWUgKnBjaWUpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0g JnBjaWUtPnBkZXYtPmRldjsKKworCS8qCisJICogVHJ5aW5nIHRvIHN0YXJ0IGEgbmV3IFBJTyB0 cmFuc2ZlciB3aGVuIHByZXZpb3VzIGhhcyBub3QgY29tcGxldGVkCisJICogY2F1c2UgRXh0ZXJu YWwgQWJvcnQgb24gQ1BVIHdoaWNoIHJlc3VsdHMgaW4ga2VybmVsIHBhbmljOgorCSAqCisJICog ICAgIFNFcnJvciBJbnRlcnJ1cHQgb24gQ1BVMCwgY29kZSAweGJmMDAwMDAyIC0tIFNFcnJvcgor CSAqICAgICBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogQXN5bmNocm9ub3VzIFNFcnJvciBJ bnRlcnJ1cHQKKwkgKgorCSAqIEZ1bmN0aW9ucyBhZHZrX3BjaWVfcmRfY29uZigpIGFuZCBhZHZr X3BjaWVfd3JfY29uZigpIGFyZSBwcm90ZWN0ZWQKKwkgKiBieSByYXdfc3Bpbl9sb2NrX2lycXNh dmUoKSBhdCBwY2lfbG9ja19jb25maWcoKSBsZXZlbCB0byBwcmV2ZW50CisJICogY29uY3VycmVu dCBjYWxscyBhdCB0aGUgc2FtZSB0aW1lLiBCdXQgYmVjYXVzZSBQSU8gdHJhbnNmZXIgbWF5IHRh a2UKKwkgKiBhYm91dCAxLjVzIHdoZW4gbGluayBpcyBkb3duIG9yIGNhcmQgaXMgZGlzY29ubmVj dGVkLCBpdCBtZWFucyB0aGF0CisJICogYWR2a19wY2llX3dhaXRfcGlvKCkgZG9lcyBub3QgYWx3 YXlzIGhhdmUgdG8gd2FpdCBmb3IgY29tcGxldGlvbi4KKwkgKgorCSAqIFNvbWUgdmVyc2lvbnMg b2YgQVJNIFRydXN0ZWQgRmlybXdhcmUgaGFuZGxlcyB0aGlzIEV4dGVybmFsIEFib3J0IGF0CisJ ICogRUwzIGxldmVsIGFuZCBtYXNrIGl0IHRvIHByZXZlbnQga2VybmVsIHBhbmljLiBSZWxldmFu dCBURi1BIGNvbW1pdDoKKwkgKiBodHRwczovL2dpdC50cnVzdGVkZmlybXdhcmUub3JnL1RGLUEv dHJ1c3RlZC1maXJtd2FyZS1hLmdpdC9jb21taXQvP2lkPTNjN2RjZGFjNWM1MAorCSAqLworCWlm IChhZHZrX3JlYWRsKHBjaWUsIFBJT19TVEFSVCkpIHsKKwkJZGV2X2VycihkZXYsICJQcmV2aW91 cyBQSU8gcmVhZC93cml0ZSB0cmFuc2ZlciBpcyBzdGlsbCBydW5uaW5nXG4iKTsKKwkJcmV0dXJu IHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgaW50IGFkdmtfcGNpZV9y ZF9jb25mKHN0cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKIAkJCSAgICAgaW50IHdoZXJl LCBpbnQgc2l6ZSwgdTMyICp2YWwpCiB7CkBAIC02NzMsOSArNzAyLDEwIEBAIHN0YXRpYyBpbnQg YWR2a19wY2llX3JkX2NvbmYoc3RydWN0IHBjaV9idXMgKmJ1cywgdTMyIGRldmZuLAogCQlyZXR1 cm4gcGNpX2JyaWRnZV9lbXVsX2NvbmZfcmVhZCgmcGNpZS0+YnJpZGdlLCB3aGVyZSwKIAkJCQkJ CSBzaXplLCB2YWwpOwogCi0JLyogU3RhcnQgUElPICovCi0JYWR2a193cml0ZWwocGNpZSwgMCwg UElPX1NUQVJUKTsKLQlhZHZrX3dyaXRlbChwY2llLCAxLCBQSU9fSVNSKTsKKwlpZiAoYWR2a19w Y2llX3Bpb19pc19ydW5uaW5nKHBjaWUpKSB7CisJCSp2YWwgPSAweGZmZmZmZmZmOworCQlyZXR1 cm4gUENJQklPU19TRVRfRkFJTEVEOworCX0KIAogCS8qIFByb2dyYW0gdGhlIGNvbnRyb2wgcmVn aXN0ZXIgKi8KIAlyZWcgPSBhZHZrX3JlYWRsKHBjaWUsIFBJT19DVFJMKTsKQEAgLTY5NCw3ICs3 MjQsOCBAQCBzdGF0aWMgaW50IGFkdmtfcGNpZV9yZF9jb25mKHN0cnVjdCBwY2lfYnVzICpidXMs IHUzMiBkZXZmbiwKIAkvKiBQcm9ncmFtIHRoZSBkYXRhIHN0cm9iZSAqLwogCWFkdmtfd3JpdGVs KHBjaWUsIDB4ZiwgUElPX1dSX0RBVEFfU1RSQik7CiAKLQkvKiBTdGFydCB0aGUgdHJhbnNmZXIg Ki8KKwkvKiBDbGVhciBQSU8gRE9ORSBJU1IgYW5kIHN0YXJ0IHRoZSB0cmFuc2ZlciAqLworCWFk dmtfd3JpdGVsKHBjaWUsIDEsIFBJT19JU1IpOwogCWFkdmtfd3JpdGVsKHBjaWUsIDEsIFBJT19T VEFSVCk7CiAKIAlyZXQgPSBhZHZrX3BjaWVfd2FpdF9waW8ocGNpZSk7CkBAIC03MzQsOSArNzY1 LDggQEAgc3RhdGljIGludCBhZHZrX3BjaWVfd3JfY29uZihzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1 MzIgZGV2Zm4sCiAJaWYgKHdoZXJlICUgc2l6ZSkKIAkJcmV0dXJuIFBDSUJJT1NfU0VUX0ZBSUxF RDsKIAotCS8qIFN0YXJ0IFBJTyAqLwotCWFkdmtfd3JpdGVsKHBjaWUsIDAsIFBJT19TVEFSVCk7 Ci0JYWR2a193cml0ZWwocGNpZSwgMSwgUElPX0lTUik7CisJaWYgKGFkdmtfcGNpZV9waW9faXNf cnVubmluZyhwY2llKSkKKwkJcmV0dXJuIFBDSUJJT1NfU0VUX0ZBSUxFRDsKIAogCS8qIFByb2dy YW0gdGhlIGNvbnRyb2wgcmVnaXN0ZXIgKi8KIAlyZWcgPSBhZHZrX3JlYWRsKHBjaWUsIFBJT19D VFJMKTsKQEAgLTc2Myw3ICs3OTMsOCBAQCBzdGF0aWMgaW50IGFkdmtfcGNpZV93cl9jb25mKHN0 cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKIAkvKiBQcm9ncmFtIHRoZSBkYXRhIHN0cm9i ZSAqLwogCWFkdmtfd3JpdGVsKHBjaWUsIGRhdGFfc3Ryb2JlLCBQSU9fV1JfREFUQV9TVFJCKTsK IAotCS8qIFN0YXJ0IHRoZSB0cmFuc2ZlciAqLworCS8qIENsZWFyIFBJTyBET05FIElTUiBhbmQg c3RhcnQgdGhlIHRyYW5zZmVyICovCisJYWR2a193cml0ZWwocGNpZSwgMSwgUElPX0lTUik7CiAJ YWR2a193cml0ZWwocGNpZSwgMSwgUElPX1NUQVJUKTsKIAogCXJldCA9IGFkdmtfcGNpZV93YWl0 X3BpbyhwY2llKTsKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK