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 B63F8C624CE for ; Mon, 31 Aug 2026 13:48:39 +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: 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=6AIdJ6l5OPILyRtuHBNG1XmEkwbR2dxLv6cvtKd8XgY=; b=k/S9CtIlXEdHnJ u1jpelFdkPqAOGTbEPmWAdfnBbucdYUKy9mCeJ0W+uf6dZqq5jp/vhmFWPDxJpYIyej2sY9IwfMcZ 1S8AWH1RM2G0jzlMvvqlOo5tqkkxd6+PmPHMMXicafagBmOA7Jq8uD10yPPT9GOf9UsNF9MZDPK8+ fAmmPk0z6Ea6k8sxJ9XuPLrIf352GB/oFgUTqmE5cHajrhEZKbutlcg0XdGzgAlgqkOEvSAPXW8JR 3/RemMHjQkUc4yMdccTrLK++1OIjsD/+fDtWIAefREalXLj+rLQSn6eaN2Fxjqrm/L6VifIIcklSN XPAFKyUEa55OS07bF/kA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x12NL-00000009X0x-1kHf; Mon, 31 Aug 2026 13:48:39 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x12NJ-00000009X0R-1BLW for linux-phy@lists.infradead.org; Mon, 31 Aug 2026 13:48:37 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 937B16013A; Mon, 31 Aug 2026 13:48:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E79061F00ACA; Mon, 31 Aug 2026 13:48:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788184116; bh=sRR5RzAfZF2ygozG/qavqvPeChy7+XYeXV4CDkN88MM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=NipMI7oOpWJpEntVg0UXpciHQWk1UP2b8FmPcMFTjVVrCLQR+u1a+ylYhmqi7tBhb AKWlQzqNUuVd+40RZ0B7OHrwZD9nZB3UUrZJL+qsFMOU40KR1+Y/0JaatwTvWQ/QdZ HR5HGZEh48SeSifIPKxDA8kihDyJpMcuTUgyFij8XZwf9b4Y+oWmk5nr98aTlfaNwL UEJmY654ud2HkVlU4J2AEYyagDvUFkRmUR5BSDe5lbrFL/KVrnztChBcSQW5F+Tzr8 0136PGo49b8UirOLIn5Qit/Izia1QtgrR8xCRRHOsTCZANjtQjxtQWMYV5g6XvMLod 616c3Bb0WWOdQ== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Wesley Cheng , Dmitry Baryshkov , Bjorn Andersson , Abel Vesa , Neil Armstrong , Konrad Dybcio , Vinod Koul , Sasha Levin , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18] phy: qcom: m31-eusb2: Make USB repeater optional Date: Mon, 31 Aug 2026 09:28:49 -0400 Message-ID: <20260831133314.4125787-501-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org> References: <20260831133314.4125787-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.48 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org RnJvbTogV2VzbGV5IENoZW5nIDx3ZXNsZXkuY2hlbmdAb3NzLnF1YWxjb21tLmNvbT4KClsgVXBz dHJlYW0gY29tbWl0IGE2MmJmYmNmMmRiNGFlNmViN2E1NDRhNDBiMTA3NWE4MTc4NGVhNDEgXQoK QSByZXBlYXRlciBpcyBub3QgcmVxdWlyZWQgZm9yIHRoZSBQSFkgdG8gZnVuY3Rpb24uIE9uIHN5 c3RlbXMgd2l0aAptdWx0aXBsZSBQSFkgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byBhIG11bHRpLXBv cnQgY29udHJvbGxlciwgc29tZSBQSFlzCm1heSBiZSB1bmNvbm5lY3RlZC4gQWxsIFBIWXMgbXVz dCBzdGlsbCBwcm9iZSBzdWNjZXNzZnVsbHkgZXZlbiB3aXRob3V0CmF0dGFjaGVkIHJlcGVhdGVy cywgb3RoZXJ3aXNlIHRoZSBjb250cm9sbGVyIHByb2JlIGZhaWxzLgoKU28gbWFrZSBpdCBvcHRp b25hbC4KClNpZ25lZC1vZmYtYnk6IFdlc2xleSBDaGVuZyA8d2VzbGV5LmNoZW5nQG9zcy5xdWFs Y29tbS5jb20+ClthYmVsLnZlc2FAb3NzLnF1YWxjb21tLmNvbTogY29tbWl0IHJlLXdvcmRlZCB0 byByZWZsZWN0IGFjdHVhbCByZWFzb25dClJldmlld2VkLWJ5OiBEbWl0cnkgQmFyeXNoa292IDxk bWl0cnkuYmFyeXNoa292QG9zcy5xdWFsY29tbS5jb20+ClJldmlld2VkLWJ5OiBCam9ybiBBbmRl cnNzb24gPGFuZGVyc3NvbkBrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBBYmVsIFZlc2EgPGFi ZWwudmVzYUBvc3MucXVhbGNvbW0uY29tPgpSZXZpZXdlZC1ieTogTmVpbCBBcm1zdHJvbmcgPG5l aWwuYXJtc3Ryb25nQGxpbmFyby5vcmc+ClJldmlld2VkLWJ5OiBLb25yYWQgRHliY2lvIDxrb25y YWQuZHliY2lvQG9zcy5xdWFsY29tbS5jb20+Ckxpbms6IGh0dHBzOi8vcGF0Y2gubXNnaWQubGlu ay8yMDI2MDMwMi1waHktcWNvbS1tMzEtZXVzYjItbWFrZS1yZXBlYXRlci1vcHRpb25hbC12Mi0x LWRiZjcxNGM3MjA1NkBvc3MucXVhbGNvbW0uY29tClNpZ25lZC1vZmYtYnk6IFZpbm9kIEtvdWwg PHZrb3VsQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxzYXNoYWxAa2Vy bmVsLm9yZz4KLS0tCgpMTE0gR2VuZXJhdGVkIGV4cGxhbmF0aW9ucywgbWF5IGJlIGNvbXBsZXRl bHkgYm9ndXM6CgojIFN0YWJsZSBCYWNrcG9ydCBBbmFseXNpczogYHBoeTogcWNvbTogbTMxLWV1 c2IyOiBNYWtlIFVTQiByZXBlYXRlcgpvcHRpb25hbGAKCioqTG9jYWwgdHJlZToqKiBMaW51eCAq KjYuMTguNDMqKiAoYHY2LjE4LjQzLTEtZ2M3ZjBkYWMwMmQyMzJgKQoqKkNvbW1pdCB1bmRlciBy ZXZpZXc6KiogYGRkMDg1YmYyNzg0MjFgICh1cHN0cmVhbSBgYTYyYmZiY2YyZGI0YCkg4oCUCioq bm90IHlldCBpbiB0aGlzIHRyZWUqKgoKLS0tCgojIyBQSEFTRSAxOiBDT01NSVQgTUVTU0FHRSBG T1JFTlNJQ1MKCiMjIyBTdGVwIDEuMTogU3ViamVjdCBsaW5lCioqUmVjb3JkOioqIGBbcGh5OiBx Y29tOiBtMzEtZXVzYjJdYCBgW21ha2VdYCDigJQgTWFrZSB0aGUgVVNCIHJlcGVhdGVyCm9wdGlv bmFsIGluIHRoZSBRdWFsY29tbSBNMzEgZVVTQjIgUEhZIGRyaXZlciBwcm9iZSBwYXRoLgoKIyMj IFN0ZXAgMS4yOiBUYWdzCioqUmVjb3JkOioqCi0gKipGaXhlczoqKiDigJQgYWJzZW50Ci0gKipS ZXBvcnRlZC1ieToqKiDigJQgYWJzZW50Ci0gKipUZXN0ZWQtYnk6Kiog4oCUIGFic2VudAotICoq UmV2aWV3ZWQtYnk6KiogRG1pdHJ5IEJhcnlzaGtvdiwgQmpvcm4gQW5kZXJzc29uLCBOZWlsIEFy bXN0cm9uZywKICBLb25yYWQgRHliY2lvCi0gKipBY2tlZC1ieToqKiDigJQgYWJzZW50Ci0gKipM aW5rOioqIGh0dHBzOi8vcGF0Y2gubXNnaWQubGluay8yMDI2MDMwMi1waHktcWNvbS1tMzEtZXVz YjItbWFrZS0KICByZXBlYXRlci1vcHRpb25hbC12Mi0xLWRiZjcxNGM3MjA1NkBvc3MucXVhbGNv bW0uY29tCi0gKipDYzogc3RhYmxlOioqIOKAlCBhYnNlbnQgKGV4cGVjdGVkIGZvciBtYW51YWwg cmV2aWV3KQotICoqU2lnbmVkLW9mZi1ieToqKiBXZXNsZXkgQ2hlbmcsIEFiZWwgVmVzYSwgVmlu b2QgS291bCAoaWdub3JlCiAgcGlwZWxpbmUgU09CcykKCk5vdGFibGU6IG11bHRpcGxlIHN1YnN5 c3RlbSBtYWludGFpbmVycyByZXZpZXdlZDsgbm8gc3l6Ym90L2Z1enplcgpyZXBvcnQuCgojIyMg U3RlcCAxLjM6IEJvZHkgYW5hbHlzaXMKKipSZWNvcmQ6KioKLSAqKkJ1ZzoqKiBEcml2ZXIgcmVx dWlyZXMgYW4gZVVTQjIgcmVwZWF0ZXIgYXQgcHJvYmUgdGltZSB2aWEKICBgZGV2bV9vZl9waHlf Z2V0X2J5X2luZGV4KClgLCBidXQgcmVwZWF0ZXJzIGFyZSBub3QgYWx3YXlzIHByZXNlbnQuCi0g KipTeW1wdG9tOioqIE9uIG11bHRpLXBvcnQgY29udHJvbGxlcnMgd2l0aCBtdWx0aXBsZSBQSFkg aW5zdGFuY2VzLAogIFBIWXMgd2l0aG91dCBhdHRhY2hlZCByZXBlYXRlcnMgZmFpbCBwcm9iZTsg dGhhdCBjYW4gZmFpbCB0aGUgd2hvbGUKICBVU0IgY29udHJvbGxlciBwcm9iZS4KLSAqKlJvb3Qg Y2F1c2U6KiogUmVwZWF0ZXIgdHJlYXRlZCBhcyBtYW5kYXRvcnkgd2hlbiBoYXJkd2FyZS9EVCBh bGxvd3MKICBpdCB0byBiZSBhYnNlbnQuCi0gKipWZXJzaW9uIGluZm86KiogTm9uZSBpbiBtZXNz YWdlOyBkcml2ZXIgdGFyZ2V0cwogIGBxY29tLHNtODc1MC1tMzEtZXVzYjItcGh5YC4KCiMjIyBT dGVwIDEuNDogSGlkZGVuIGJ1ZyBmaXg/CioqUmVjb3JkOioqIFllcy4gRGVzcGl0ZSDigJxtYWtl IG9wdGlvbmFs4oCdIHdvcmRpbmcsIHRoaXMgaXMgYSByZWFsIHByb2JlLQpmYWlsdXJlIGJ1ZyBm aXgsIG5vdCBhIGZlYXR1cmUuIFRoZSBEVCBiaW5kaW5nIGFscmVhZHkgbGlzdHMgYHBoeXNgIGFz Cm9wdGlvbmFsIChub3QgaW4gYHJlcXVpcmVkOmApLCBidXQgdGhlIGRyaXZlciBlbmZvcmNlZCBp dCBhcyBtYW5kYXRvcnkuCgotLS0KCiMjIFBIQVNFIDI6IERJRkYgQU5BTFlTSVMKCiMjIyBTdGVw IDIuMTogSW52ZW50b3J5CioqUmVjb3JkOioqCi0gKipGaWxlOioqIGBkcml2ZXJzL3BoeS9xdWFs Y29tbS9waHktcWNvbS1tMzEtZXVzYjIuY2AgKCsxIC8gLTEpCi0gKipGdW5jdGlvbjoqKiBgbTMx ZXVzYjJfcGh5X3Byb2JlKClgCi0gKipTY29wZToqKiBTaW5nbGUtZmlsZSwgc2luZ2xlLWxpbmUg c3VyZ2ljYWwgY2hhbmdlCgojIyMgU3RlcCAyLjI6IENvZGUgZmxvdyBjaGFuZ2UKKipSZWNvcmQ6 KioKLSAqKkJlZm9yZToqKiBgZGV2bV9vZl9waHlfZ2V0X2J5X2luZGV4KGRldiwgZGV2LT5vZl9u b2RlLCAwKWAgcmV0dXJucwogIGAtRU5PREVWYCB3aGVuIG5vIGBwaHlzYCBwcm9wZXJ0eSDihpIg cHJvYmUgZmFpbHMuCi0gKipBZnRlcjoqKiBgZGV2bV9waHlfb3B0aW9uYWxfZ2V0KGRldiwgTlVM TClgIGNvbnZlcnRzIGAtRU5PREVWYCB0bwogIGBOVUxMYCDihpIgcHJvYmUgc3VjY2VlZHMuCi0g KipQYXRoIGFmZmVjdGVkOioqIFBsYXRmb3JtIGRldmljZSBwcm9iZSBkdXJpbmcgYm9vdC9tb2R1 bGUgaW5pdC4KCiMjIyBTdGVwIDIuMzogQnVnIG1lY2hhbmlzbQoqKlJlY29yZDoqKiAqKkxvZ2lj IC8gY29ycmVjdG5lc3MgZml4Kiog4oCUIG1hbmRhdG9yeSByZXNvdXJjZSBsb29rdXAgZm9yCmFu IG9wdGlvbmFsIGNvbXBvbmVudC4gQ2F0ZWdvcnk6IGRyaXZlci9EVCBtaXNtYXRjaCBjYXVzaW5n IGNhc2NhZGluZwpwcm9iZSBmYWlsdXJlLgoKV2l0aCByZXBlYXRlciBwcmVzZW50LCBib3RoIEFQ SXMgcmVzb2x2ZSBpbmRleCAwIHZpYSBgX29mX3BoeV9nZXQoKWAKKHZlcmlmaWVkIGluIGBwaHlf Z2V0KClgIGFuZCBgZGV2bV9vZl9waHlfZ2V0X2J5X2luZGV4KClgKS4KCiMjIyBTdGVwIDIuNDog Rml4IHF1YWxpdHkKKipSZWNvcmQ6KioKLSBGaXggaXMgbWluaW1hbCBhbmQgbWF0Y2hlcyBlc3Rh Ymxpc2hlZCBwYXR0ZXJuIGluIGBwaHktc25wcy1ldXNiMi5jYAogIChgZGV2bV9vZl9waHlfb3B0 aW9uYWxfZ2V0YCkuCi0gYHBoeV9pbml0KClgLCBgcGh5X2V4aXQoKWAsIGFuZCBgcGh5X3NldF9t b2RlX2V4dCgpYCBhbGwgYWNjZXB0IGBOVUxMYAogIGFuZCByZXR1cm4gMCAodmVyaWZpZWQgaW4g YHBoeS1jb3JlLmNgKS4KLSBObyBuZXcgZGVhZGxvY2svbG9ja2luZyByaXNrLgotIGBJU19FUlIo KWAgY2hlY2sgYWZ0ZXIgb3B0aW9uYWwgZ2V0IHJlbWFpbnMgY29ycmVjdCAob25seSByZWFsIGVy cm9ycwogIHByb3BhZ2F0ZSkuCgotLS0KCiMjIFBIQVNFIDM6IEdJVCBISVNUT1JZIElOVkVTVElH QVRJT04KCiMjIyBTdGVwIDMuMTogQmxhbWUKKipSZWNvcmQ6KiogUmVwZWF0ZXIgbG9va3VwIGlu dHJvZHVjZWQgaW4gYDVkMzI0ZTUxNTlkOWVgICg2LjE4IG1lcmdlLApOb3YgMjAyNSkuIEJ1Z2d5 IGxpbmUgcHJlc2VudCBhdCBgZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LQpxY29tLW0zMS1ldXNi Mi5jOjI4OGAgaW4gdGhpcyB0cmVlLgoKIyMjIFN0ZXAgMy4yOiBGaXhlczogdGFnCioqUmVjb3Jk OioqIE4vQSDigJQgbm8gYEZpeGVzOmAgdGFnLgoKIyMjIFN0ZXAgMy4zOiBSZWxhdGVkIGZpbGUg aGlzdG9yeQoqKlJlY29yZDoqKiBSZWNlbnQgaGlzdG9yeSBpbiB0aGlzIHRyZWU6Ci0gYDA5ZTFj OTY1OTRhZmJgIOKAlCBQTExfRU4gc3VzcGVuZCBwb3dlciBmaXggKGJhY2twb3J0ZWQsIGBDYzog c3RhYmxlYCkKLSBgMzdlZjExYWIyY2YzY2Ag4oCUIGluaXQgc2VxdWVuY2UgdXBkYXRlCi0gRHJp dmVyIGFycml2ZWQgdmlhIGA1ZDMyNGU1MTU5ZDllYCAoNi4xOCkKClN0YW5kYWxvbmUgb25lLXBh dGNoIGZpeDsgbm90IHBhcnQgb2YgYSBtdWx0aS1wYXRjaCBkZXBlbmRlbmN5IHNlcmllcy4KCiMj IyBTdGVwIDMuNDogQXV0aG9yIGNvbnRleHQKKipSZWNvcmQ6KiogV2VzbGV5IENoZW5nIGlzIHRo ZSBkcml2ZXIgYXV0aG9yIGFuZCBEVCBiaW5kaW5nIG1haW50YWluZXIuCkFiZWwgVmVzYSBjb21t aXR0ZWQgdjIuIFZpbm9kIEtvdWwgKFBIWSBtYWludGFpbmVyKSBtZXJnZWQuIE11bHRpcGxlClF1 YWxjb21tL0FSTSBtYWludGFpbmVycyByZXZpZXdlZC4KCiMjIyBTdGVwIDMuNTogRGVwZW5kZW5j aWVzCioqUmVjb3JkOioqIE5vIHByZXJlcXVpc2l0ZXMuIGBkZXZtX3BoeV9vcHRpb25hbF9nZXQo KWAgZXhpc3RzIGluIHRoaXMKdHJlZeKAmXMgYHBoeS1jb3JlLmNgLiBGaXggYXBwbGllcyBjbGVh bmx5IHRvIGN1cnJlbnQgYDY4ZjFiYThmZWM0YWRgCmluZGV4IHN0YXRlLgoKLS0tCgojIyBQSEFT RSA0OiBNQUlMSU5HIExJU1QgQU5EIEVYVEVSTkFMIFJFU0VBUkNICgojIyMgU3RlcCA0LjE6IE9y aWdpbmFsIGRpc2N1c3Npb24KKipSZWNvcmQ6KioKLSAqKmI0IGRpZzoqKiBodHRwczovL3BhdGNo Lm1zZ2lkLmxpbmsvMjAyNjAyMjctcGh5LXFjb20tbTMxLWV1c2IyLW1ha2UtCiAgcmVwZWF0ZXIt b3B0aW9uYWwtdjEtMS0wN2EwODZiYmFiYTRAb3NzLnF1YWxjb21tLmNvbQotICoqUmV2aXNpb25z OioqIHYxICgyMDI2LTAyLTI3KSwgdjIgKDIwMjYtMDMtMDIsIGNvbW1pdHRlZCB2ZXJzaW9uKQot ICoqRmVlZGJhY2s6KiogUmV2aWV3ZWQtYnkgZnJvbSBEbWl0cnkgQmFyeXNoa292IGFuZCBCam9y biBBbmRlcnNzb24gb24KICB2MTsgbm8gTkFLcyBmb3VuZAotICoqU3RhYmxlIG5vbWluYXRpb24g aW4gdGhyZWFkOioqIG5vbmUgZm91bmQKCiMjIyBTdGVwIDQuMjogUmV2aWV3ZXJzCioqUmVjb3Jk OioqIEND4oCZZDogYGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnYCwgYGxpbnV4LWFybS0K bXNtQHZnZXIua2VybmVsLm9yZ2AsIFZpbm9kIEtvdWwsIEJqb3JuIEFuZGVyc3NvbiwgRG1pdHJ5 IEJhcnlzaGtvdiDigJQKYXBwcm9wcmlhdGUgbWFpbnRhaW5lciBjb3ZlcmFnZS4KCiMjIyBTdGVw IDQuMzogQnVnIHJlcG9ydAoqKlJlY29yZDoqKiBObyBleHRlcm5hbCBidWcgcmVwb3J0IG9yIHN5 emJvdCBsaW5rLiBCdWcgZGVzY3JpYmVkIGZyb20KaGFyZHdhcmUvRFQgZGVzaWduIHJlcXVpcmVt ZW50cy4KCiMjIyBTdGVwIDQuNDogUmVsYXRlZCBwYXRjaGVzCioqUmVjb3JkOioqIFNlcGFyYXRl IGZvbGxvdy11cCBvbiBtYXN0ZXI6IGAzNjFmNTMzYTJkY2UyYCAo4oCcRml4IHJldHVybgp2YWx1 ZSBvZiBpbml0IGNhbGzigJ0pIOKAlCBmaXhlcyB1bnJlbGF0ZWQgZXJyb3ItcGF0aCByZXR1cm4g YnVnOyAqKm5vdCoqIGEKcHJlcmVxdWlzaXRlIGZvciB0aGlzIGNoYW5nZS4KCiMjIyBTdGVwIDQu NTogU3RhYmxlIGxpc3QKKipSZWNvcmQ6KiogTm8gc3RhYmxlLWxpc3QgZGlzY3Vzc2lvbiBmb3Vu ZCBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC4KCi0tLQoKIyMgUEhBU0UgNTogQ09ERSBTRU1BTlRJ QyBBTkFMWVNJUwoKIyMjIFN0ZXAgNS4xOiBLZXkgZnVuY3Rpb25zCioqUmVjb3JkOioqIGBtMzFl dXNiMl9waHlfcHJvYmUoKWAgbW9kaWZpZWQ7IGRvd25zdHJlYW0gdXNlcnMgb2YKYHBoeS0+cmVw ZWF0ZXJgOiBgbTMxZXVzYjJfcGh5X2luaXQoKWAsIGBtMzFldXNiMl9waHlfZXhpdCgpYCwKYG0z MWV1c2IyX3BoeV9zZXRfbW9kZSgpYC4KCiMjIyBTdGVwIDUuMjogQ2FsbGVycwoqKlJlY29yZDoq KiBgbTMxZXVzYjJfcGh5X3Byb2JlYCByZWdpc3RlcmVkIGFzIGBwbGF0Zm9ybV9kcml2ZXJgCmAu cHJvYmVgIOKGkiBjYWxsZWQgZHVyaW5nIGRldmljZSBlbnVtZXJhdGlvbiBmb3IKYHFjb20sc204 NzUwLW0zMS1ldXNiMi1waHlgIG5vZGVzLgoKIyMjIFN0ZXAgNS4zOiBDYWxsZWVzCioqUmVjb3Jk OioqIGBkZXZtX3BoeV9vcHRpb25hbF9nZXQoKWAg4oaSIGBkZXZtX3BoeV9nZXQoKWAg4oaSCmBf b2ZfcGh5X2dldChkZXYtPm9mX25vZGUsIDApYCBmb3IgRFQgZGV2aWNlcy4KCiMjIyBTdGVwIDUu NDogUmVhY2hhYmlsaXR5CioqUmVjb3JkOioqIFRyaWdnZXJlZCBhdCBib290IG9uIFF1YWxjb21t IHBsYXRmb3JtcyB3aXRoCmBDT05GSUdfUEhZX1FDT01fTTMxX0VVU0I9eS9tYC4gQWZmZWN0cyBr ZXJuZWwgaW5pdCAvIG1vZHVsZSBwcm9iZSwgbm90CmEgc3lzY2FsbCBwYXRoLgoKIyMjIFN0ZXAg NS41OiBTaW1pbGFyIHBhdHRlcm5zCioqUmVjb3JkOioqIGBkcml2ZXJzL3BoeS9waHktc25wcy1l dXNiMi5jOjU4OWAgdXNlcwpgZGV2bV9vZl9waHlfb3B0aW9uYWxfZ2V0KClgIGZvciB0aGUgc2Ft ZSByZXBlYXRlciBwYXR0ZXJuLgoKLS0tCgojIyBQSEFTRSA2OiBDUk9TUy1SRUZFUkVOQ0UgV0lU SCBMT0NBTCBUUkVFICg2LjE4LjQzKQoKIyMjIFN0ZXAgNi4xOiBCdWdneSBjb2RlIHByZXNlbnQ/ CioqUmVjb3JkOioqICoqWWVzLioqIEN1cnJlbnQgdHJlZSBzdGlsbCBoYXM6CmBgYDI4ODoyOTE6 ZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tbTMxLWV1c2IyLmMKICAgICAgICBwaHktPnJl cGVhdGVyID0gZGV2bV9vZl9waHlfZ2V0X2J5X2luZGV4KGRldiwgZGV2LT5vZl9ub2RlLCAwKTsK ICAgICAgICBpZiAoSVNfRVJSKHBoeS0+cmVwZWF0ZXIpKQogICAgICAgICAgICAgICAgcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBoeS0+cmVwZWF0ZXIpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBnZXQgcmVwZWF0ZXJcbiIpOwpgYGAK RHJpdmVyIGFuZCBLY29uZmlnIChgUEhZX1FDT01fTTMxX0VVU0JgKSBib3RoIGV4aXN0LiBgZ2l0 IG1lcmdlLWJhc2UKLS1pcy1hbmNlc3RvciBkZDA4NWJmMjc4NDIxIEhFQURgIOKGkiAqKk5PVF9J Tl9UUkVFKiouCgojIyMgU3RlcCA2LjI6IEJhY2twb3J0IGNvbXBsaWNhdGlvbnMKKipSZWNvcmQ6 KiogQ2xlYW4gb25lLWxpbmUgYXBwbHkgZXhwZWN0ZWQuIE5vIHJlZmFjdG9yIGNvbmZsaWN0cyBp bgpwcm9iZSBwYXRoLgoKIyMjIFN0ZXAgNi4zOiBSZWxhdGVkIGZpeGVzIGFscmVhZHkgcHJlc2Vu dD8KKipSZWNvcmQ6KiogUExMX0VOIHN1c3BlbmQgZml4IChgMDllMWM5NjU5NGFmYmApIGFscmVh ZHkgYmFja3BvcnRlZCDigJQKc2hvd3MgbWFpbnRhaW5lcnMgYXJlIGFscmVhZHkgY2Fycnlpbmcg bTMxLWV1c2IyIGZpeGVzIGludG8gNi4xOC55LiBJbml0CnJldHVybi12YWx1ZSBmaXggKGAzNjFm NTMzYTJkY2UyYCkgaXMgKipub3QqKiBpbiB0aGlzIHRyZWUgKHNlcGFyYXRlCmlzc3VlKS4KCi0t LQoKIyMgUEhBU0UgNzogU1VCU1lTVEVNIENPTlRFWFQKCiMjIyBTdGVwIDcuMTogU3Vic3lzdGVt IC8gY3JpdGljYWxpdHkKKipSZWNvcmQ6KiogYGRyaXZlcnMvcGh5L3F1YWxjb21tL2Ag4oCUICoq UEVSSVBIRVJBTCoqIChwbGF0Zm9ybS1zcGVjaWZpYwpRdWFsY29tbSBVU0IgUEhZIGRyaXZlciku IEltcGFjdCBpcyBsaW1pdGVkIHRvIGBBUkNIX1FDT01gICsKYENPTkZJR19QSFlfUUNPTV9NMzFf RVVTQmAuCgojIyMgU3RlcCA3LjI6IEFjdGl2aXR5CioqUmVjb3JkOioqIE5ldyBkcml2ZXIgaW4g Ni4xODsgYWN0aXZlbHkgcmVjZWl2aW5nIGZpeGVzIChQTExfRU4sIGluaXQKc2VxdWVuY2UsIHRo aXMgcmVwZWF0ZXIgZml4IG9uIG1haW5saW5lKS4KCi0tLQoKIyMgUEhBU0UgODogSU1QQUNUIEFO RCBSSVNLCgojIyMgU3RlcCA4LjE6IFdobyBpcyBhZmZlY3RlZAoqKlJlY29yZDoqKiBVc2VycyBv ZiBRdWFsY29tbSBTTTg3NTAgKGBxY29tLHNtODc1MC1tMzEtZXVzYjItcGh5YCkgd2l0aAptdWx0 aS1QSFkgVVNCIGNvbnRyb2xsZXJzIHdoZXJlIHNvbWUgUEhZIGluc3RhbmNlcyBsYWNrIHJlcGVh dGVycy4KQ29uZmlnLXNwZWNpZmljLCBwbGF0Zm9ybS1zcGVjaWZpYy4KCiMjIyBTdGVwIDguMjog VHJpZ2dlciBjb25kaXRpb25zCioqUmVjb3JkOioqIERUIG5vZGUgZm9yIE0zMSBlVVNCMiBQSFkg d2l0aG91dCBgcGh5c2AgcHJvcGVydHkgKG9yIG5vCmNvbm5lY3RlZCByZXBlYXRlcikuIENvbW1v biBvbiBtdWx0aS1wb3J0IGRlc2lnbnMgd2l0aCB1bmNvbm5lY3RlZApwb3J0cy4gVHJpZ2dlcmVk IGF0IGV2ZXJ5IGJvb3QgZm9yIGFmZmVjdGVkIGJvYXJkcy4KCiMjIyBTdGVwIDguMzogRmFpbHVy ZSBtb2RlIC8gc2V2ZXJpdHkKKipSZWNvcmQ6KiogUEhZIHByb2JlIHJldHVybnMgYC1FTk9ERVZg IOKGkiBVU0IgY29udHJvbGxlciBwcm9iZSBtYXkgZmFpbArihpIgKipVU0IgY29tcGxldGVseSBu b24tZnVuY3Rpb25hbCoqIG9uIGFmZmVjdGVkIHBvcnRzL2JvYXJkcy4gTm90IGEKY3Jhc2gvVUFG L3NlY3VyaXR5IGlzc3VlLCBidXQgYSAqKkhJR0ggZnVuY3Rpb25hbCBpbXBhY3QqKiBmb3IgYWZm ZWN0ZWQKaGFyZHdhcmUuIFNldmVyaXR5OiAqKkhJR0gqKiAoaGFyZHdhcmUgYnJva2VuKSwgbm90 IENSSVRJQ0FMIChubyBtZW1vcnkKY29ycnVwdGlvbi9wYW5pYykuCgojIyMgU3RlcCA4LjQ6IFJp c2sgdnMgYmVuZWZpdAoqKlJlY29yZDoqKgotICoqQmVuZWZpdDoqKiBFbmFibGVzIFVTQiBvbiB2 YWxpZCBoYXJkd2FyZSBjb25maWdzOyBhbGlnbnMgZHJpdmVyIHdpdGgKICBEVCBiaW5kaW5nOyBw cmV2ZW50cyBjYXNjYWRpbmcgcHJvYmUgZmFpbHVyZS4KLSAqKlJpc2s6KiogVmVyeSBsb3cg4oCU IG9uZSBsaW5lLCByZXZpZXdlZCwgTlVMTC1zYWZlIGRvd25zdHJlYW0gdmlhIHBoeQogIGNvcmUu Ci0gKipSYXRpbzoqKiBIaWdoIGJlbmVmaXQgZm9yIGFmZmVjdGVkIHVzZXJzLCBuZWdsaWdpYmxl IHJpc2suCgotLS0KCiMjIFBIQVNFIDk6IEZJTkFMIFNZTlRIRVNJUwoKIyMjIFN0ZXAgOS4xOiBF dmlkZW5jZSBzdW1tYXJ5CgoqKkZPUiBiYWNrcG9ydDoqKgotIFJlYWwgYnVnOiBtYW5kYXRvcnkg cmVwZWF0ZXIgYnJlYWtzIHByb2JlIHdoZW4gYWJzZW50Ci0gRHJpdmVyIGV4aXN0cyBpbiA2LjE4 LjQzCi0gRFQgYmluZGluZyBhbHJlYWR5IG1hcmtzIGBwaHlzYCBvcHRpb25hbAotIE9uZS1saW5l LCByZXZpZXdlZCBmaXgKLSBQaHkgY29yZSBoYW5kbGVzIE5VTEwgcmVwZWF0ZXIgc2FmZWx5Ci0g UHJpb3IgbTMxLWV1c2IyIGZpeCBhbHJlYWR5IGJhY2twb3J0ZWQgdG8gdGhpcyB0cmVlCi0gTWF0 Y2hlcyBzbnBzLWV1c2IyIGVzdGFibGlzaGVkIHBhdHRlcm4KCioqQUdBSU5TVCBiYWNrcG9ydDoq KgotIFZlcnkgbmV3LCBwbGF0Zm9ybS1zcGVjaWZpYyBkcml2ZXIgKFNNODc1MCBvbmx5KQotIE5v IHN5emJvdC91c2VyIGJ1ZyByZXBvcnQKLSBOb3QgYSBzZWN1cml0eS9jcmFzaC9kYXRhLWNvcnJ1 cHRpb24gaXNzdWUKLSBObyBpbi10cmVlIERUUyBleGFtcGxlcyB5ZXQgZm9yIHRoaXMgUEhZCi0g TGltaXRlZCA2LjE4IHN0YWJsZSB1c2VyIGJhc2UgZm9yIHRoaXMgaGFyZHdhcmUKCioqVW5yZXNv bHZlZDoqKiBObyBwcm9kdWN0aW9uIGRlcGxveW1lbnQgZGF0YSBmb3IgU004NzUwIG9uIDYuMTgu eQoodW52ZXJpZmlhYmxlKS4KCiMjIyBTdGVwIDkuMjogU3RhYmxlIHJ1bGVzIGNoZWNrbGlzdAox LiBPYnZpb3VzbHkgY29ycmVjdCBhbmQgdGVzdGVkPyAqKlBBU1MqKiDigJQgcmV2aWV3ZWQgYnkg UEhZL0FSTQogICBtYWludGFpbmVyczsgc2VtYW50aWNzIHZlcmlmaWVkIGFnYWluc3QgcGh5IGNv cmUuCjIuIEZpeGVzIGEgcmVhbCBidWc/ICoqUEFTUyoqIOKAlCBwcm9iZSBmYWlsdXJlIG9uIHZh bGlkIGhhcmR3YXJlIGNvbmZpZ3MuCjMuIEltcG9ydGFudCBpc3N1ZT8gKipQQVNTKiog4oCUIFVT QiBjb250cm9sbGVyL1BIWSBwcm9iZSBmYWlsdXJlIHJlbmRlcnMKICAgVVNCIG5vbi1mdW5jdGlv bmFsIG9uIGFmZmVjdGVkIGJvYXJkcy4KNC4gU21hbGwgYW5kIGNvbnRhaW5lZD8gKipQQVNTKiog 4oCUIDEgbGluZSwgMSBmaWxlLgo1LiBObyBuZXcgZmVhdHVyZXMvQVBJcz8gKipQQVNTKiog4oCU IGNvcnJlY3RzIGRyaXZlciB0byBtYXRjaCBleGlzdGluZwogICBvcHRpb25hbCBEVCBwcm9wZXJ0 eS4KNi4gQ2FuIGFwcGx5IHRvIGxvY2FsIHRyZWU/ICoqUEFTUyoqIOKAlCBkcml2ZXIgYW5kIEFQ SXMgcHJlc2VudDsgY2xlYW4KICAgYXBwbHkuCgojIyMgU3RlcCA5LjM6IEV4Y2VwdGlvbiBjYXRl Z29yeQoqKlJlY29yZDoqKiBIYXJkd2FyZSB3b3JrYXJvdW5kIC8gZHJpdmVyLURUIG1pc21hdGNo IGZpeCAoc2ltaWxhciB0bwpxdWlyayBjYXRlZ29yeSkuIE5vdCBhIG5ldyBkZXZpY2UgSUQsIGJ1 dCBmaXhlcyBoYXJkd2FyZSBlbmFibGVtZW50IGZvcgpleGlzdGluZyBkcml2ZXIuCgojIyMgU3Rl cCA5LjQ6IERlY2lzaW9uIHJhdGlvbmFsZQoKRm9yICoqdGhpcyA2LjE4LjQzIHRyZWUqKiwgdGhl IGRyaXZlciBpcyBwcmVzZW50IGFuZCB0aGUgYnVnIGlzIHByZXNlbnQuClRoZSBmaXggaXMgdHJp dmlhbCwgY29ycmVjdCwgYW5kIHNhZmUuIFdoaWxlIHRoZSBhdWRpZW5jZSBpcyBuYXJyb3cKKFF1 YWxjb21tIFNNODc1MCksIHRoZSBmYWlsdXJlIG1vZGUgaXMgY29tcGxldGUgVVNCIHByb2JlIGZh aWx1cmUgb24KdmFsaWQgbXVsdGktcG9ydCBkZXNpZ25zIOKAlCBleGFjdGx5IHRoZSBraW5kIG9m IGNvbnRhaW5lZCBoYXJkd2FyZS0KZW5hYmxlbWVudCBmaXggc3RhYmxlIHRyZWVzIGFjY2VwdCB3 aGVuIHRoZSBkcml2ZXIgYWxyZWFkeSBzaGlwcyBpbiB0aGF0CnNlcmllcy4gVGhlIERUIGJpbmRp bmcgbmV2ZXIgcmVxdWlyZWQgYHBoeXNgOyB0aGUgZHJpdmVyIHdhcyB3cm9uZyBmcm9tCmludHJv ZHVjdGlvbi4KCi0tLQoKIyMgVmVyaWZpY2F0aW9uCgotICoqW1BoYXNlIDFdKiogUGFyc2VkIGNv bW1pdCBgZGQwODViZjI3ODQyMWAgbWVzc2FnZSBhbmQgYWxsIHRhZ3MgdmlhCiAgYGdpdCBzaG93 YAotICoqW1BoYXNlIDFdKiogQ29uZmlybWVkIG5vIFJlcG9ydGVkLWJ5L3N5emJvdC9GaXhlczov Q2M6IHN0YWJsZSB0YWdzCi0gKipbUGhhc2UgMl0qKiBWZXJpZmllZCBkaWZmOiAxIGxpbmUgaW4g YG0zMWV1c2IyX3BoeV9wcm9iZSgpYAotICoqW1BoYXNlIDJdKiogVmVyaWZpZWQgYHBoeV9pbml0 KE5VTEwpYCwgYHBoeV9leGl0KE5VTEwpYCwKICBgcGh5X3NldF9tb2RlX2V4dChOVUxMKWAgcmV0 dXJuIDAgaW4gYGRyaXZlcnMvcGh5L3BoeS0KICBjb3JlLmM6MjMyLDI3MiwzODZgCi0gKipbUGhh c2UgMl0qKiBWZXJpZmllZCBgZGV2bV9waHlfb3B0aW9uYWxfZ2V0KClgIGNvbnZlcnRzIGAtRU5P REVWYCB0bwogIE5VTEwgaW4gYHBoeS1jb3JlLmM6ODQxLTg0OGAKLSAqKltQaGFzZSAyXSoqIFZl cmlmaWVkIGBwaHlfZ2V0KGRldiwgTlVMTClgIHVzZXMgaW5kZXggMCB2aWEKICBgX29mX3BoeV9n ZXQoKWAgaW4gYHBoeS1jb3JlLmM6NzY3LTc3M2AKLSAqKltQaGFzZSAzXSoqIGBnaXQgYmxhbWUg LUwgMjg4LDI5MWA6IGJ1Z2d5IGNvZGUgZnJvbSBgNWQzMjRlNTE1OWQ5ZWAKLSAqKltQaGFzZSAz XSoqIGBnaXQgbG9nIC0tb25lbGluZSAtLSBkcml2ZXJzL3BoeS9xdWFsY29tbS9waHktCiAgcWNv bS1tMzEtZXVzYjIuY2A6IGRyaXZlciBoaXN0b3J5IGluIDYuMTgueQotICoqW1BoYXNlIDNdKiog YGdpdCBtZXJnZS1iYXNlIC0taXMtYW5jZXN0b3IgZGQwODViZjI3ODQyMSBIRUFEYCDihpIKICBO T1RfSU5fVFJFRQotICoqW1BoYXNlIDRdKiogYGI0IGRpZyAtYyBkZDA4NWJmMjc4NDIxYDogZm91 bmQgdjEvdjIgbG9yZSB0aHJlYWRzCi0gKipbUGhhc2UgNF0qKiBgYjQgZGlnIC13YDogY29uZmly bWVkIG1haW50YWluZXIgQ0MgbGlzdAotICoqW1BoYXNlIDRdKiogYGI0IGRpZyAtbSAvdG1wL20z MS1ldXNiMi1yZXBlYXRlci5tYm94YDogbm8gc3RhYmxlCiAgbm9taW5hdGlvbiwgbm8gTkFLcwot ICoqW1BoYXNlIDVdKiogUmVhZCBgbTMxZXVzYjJfcGh5X2luaXQvZXhpdC9zZXRfbW9kZWAg4oCU IGFsbCBwYXNzCiAgYHBoeS0+cmVwZWF0ZXJgIHRvIE5VTEwtc2FmZSBwaHkgY29yZSBBUElzCi0g KipbUGhhc2UgNV0qKiBDb21wYXJlZCB3aXRoIGBwaHktc25wcy1ldXNiMi5jOjU4OWAgb3B0aW9u YWwgcmVwZWF0ZXIKICBwYXR0ZXJuCi0gKipbUGhhc2UgNl0qKiBgZ2l0IGRlc2NyaWJlIEhFQURg IOKGkiB2Ni4xOC40MzsgYE1ha2VmaWxlYCDihpIgNi4xOC40MwotICoqW1BoYXNlIDZdKiogUmVh ZCBjdXJyZW50IGBwaHktcWNvbS1tMzEtZXVzYjIuY2Ag4oCUIGJ1Z2d5CiAgYGRldm1fb2ZfcGh5 X2dldF9ieV9pbmRleGAgc3RpbGwgcHJlc2VudAotICoqW1BoYXNlIDZdKiogUmVhZAogIGBEb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20sbTMxLWV1c2IyLXBoeS55YW1s YCDigJQKICBgcGh5c2Agbm90IGluIGByZXF1aXJlZGAKLSAqKltQaGFzZSA2XSoqIGBncmVwYCBm b3IgYHNtODc1MC1tMzEtZXVzYjJgIGluIGAqLmR0cypgIOKGkiBubyBpbi10cmVlCiAgRFRTIChk cml2ZXIvYmluZGluZ3Mgb25seSkKLSAqKltQaGFzZSA2XSoqIENvbmZpcm1lZCBgQ09ORklHX1BI WV9RQ09NX00zMV9FVVNCYCBleGlzdHMgaW4KICBgZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZp Z2AKLSAqKltQaGFzZSA2XSoqIENvbmZpcm1lZCBwcmlvciBzdGFibGUgYmFja3BvcnQgYDA5ZTFj OTY1OTRhZmJgIChQTExfRU4pCiAgYWxyZWFkeSBpbiB0aGlzIHRyZWUKLSAqKltQaGFzZSA4XSoq IEFzc2Vzc2VkIGZhaWx1cmUgbW9kZSBhcyBwcm9iZSBmYWlsdXJlIOKGkiBVU0Igbm9uLQogIGZ1 bmN0aW9uYWwgKG5vdCBrZXJuZWwgY3Jhc2gpCgoqKllFUyoqCgogZHJpdmVycy9waHkvcXVhbGNv bW0vcGh5LXFjb20tbTMxLWV1c2IyLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9w aHktcWNvbS1tMzEtZXVzYjIuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLW0zMS1l dXNiMi5jCmluZGV4IDk0MzRiZDIyZWYzMmQuLjI3NWRmMzgyNTZkZTMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLW0zMS1ldXNiMi5jCisrKyBiL2RyaXZlcnMvcGh5 L3F1YWxjb21tL3BoeS1xY29tLW0zMS1ldXNiMi5jCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGlj IGludCBtMzFldXNiMl9waHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAog CXBoeV9zZXRfZHJ2ZGF0YShwaHktPnBoeSwgcGh5KTsKIAotCXBoeS0+cmVwZWF0ZXIgPSBkZXZt X29mX3BoeV9nZXRfYnlfaW5kZXgoZGV2LCBkZXYtPm9mX25vZGUsIDApOworCXBoeS0+cmVwZWF0 ZXIgPSBkZXZtX3BoeV9vcHRpb25hbF9nZXQoZGV2LCBOVUxMKTsKIAlpZiAoSVNfRVJSKHBoeS0+ cmVwZWF0ZXIpKQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5LT5yZXBl YXRlciksCiAJCQkJICAgICAiZmFpbGVkIHRvIGdldCByZXBlYXRlclxuIik7Ci0tIAoyLjUzLjAK CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK