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 09BB3C021B1 for ; Wed, 19 Feb 2025 20:23:34 +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=GKj4NZXCizb4Lxpd9yCFLZyaHrS3m3tKfjsIwrGZIvI=; b=jK14OefqhSTSuX MvJNfcKbyZFo71HDwU+G8X1lyXHyKfRDzKiAyIOux23cwqt4o987i7vuvrRO67XIKRKS5mfJxFD06 kd4gBSBPrVdWmSvKJwqs2G+5d7leRPQSA6vodAcPPaxd5LXiZB7IMPq4oX2P24UM2k4u36TIVWbIF h5vvu4rQc8RCi8a/uNypDNf4e8iDMf9OIVrUxlv/DrDQJGiTC2L5LjvDOKvdAHLlcIH7FniE1U09R E5LyqrjmfVdB8p1MJOkg8r/AKsTWGDPdcIa+dhZIGfqJxcw8sjDr5jPMv8pRJqUmWvIWUORIJTGbA 0CcjDzyzIAaFREu2nVjQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tkqbW-0000000Ereu-02yo; Wed, 19 Feb 2025 20:23:34 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tkqZz-0000000ErIO-3s9s; Wed, 19 Feb 2025 20:22:02 +0000 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-439950a45daso946225e9.2; Wed, 19 Feb 2025 12:21:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739996518; x=1740601318; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nid48bLhH/FBJHEXa989rxTIHzZsjgSmLvJWm4cud1Q=; b=OhppFAxqtbebAiJTFQtln1VBHhNBU5G+1v7/4GnagzMrBXlJzzeq7eIilWZKrCCqdr etFaO9GNaXsasIcQKvqOJ+I4PLS4OyeQV0g7A5zWydupkjuL9MKg7Yvum/JEndNPwuWe mqUbPUhTJxpJFnecCqBiq3V7wVO76NMw8ldyz/+ECpf17e2LvEmAdrB7lxVXFRqy5O3U bRo+BfKQJu14v3d7MZmsDAaCF/q29tjGwWyt6F3tInUFyvV5k9LgkylkEuK2MM0nmPrL 5eLq33qahq34Jb/UlLO68zKrFYX1POb7j4aHwKujgIftfzgTFeldCqBbruBtx39H6WQ/ 7xmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739996518; x=1740601318; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nid48bLhH/FBJHEXa989rxTIHzZsjgSmLvJWm4cud1Q=; b=xHJPJdof9yyinf8f6B4R1dOTaVi6sgj0ejIkBN8qENbio9tZTeJWF9pVFD0eoG7tQc +PYAj1wV1A3NxUacU5KyI1OT4Rj2MrJCurtduLpQCWacdZYh1EaBckR10JaszWwnlbH/ cS8ImZlGcThw72ESjdBT5CmEAL4+e2YpEPEFXgyTb9cKXMnkWjMsTDqILTN0MWdvQJMq 03b4nx9Cv9dlxCsXKOJmB82prZaAInKAQXYCqHF6VAokOKNz8NRCCbBnUTt6KAvMlq4b hrMLEv6oalrS8uySuDHqvE5BPasUx7VMzv0wvoBlcrKfnp/FGgFI1fQ8lhFxLWkwbztW mI8w== X-Forwarded-Encrypted: i=1; AJvYcCViMn4ErYdWU3ogyIeZfZ+3KqjZNaaCRZT5fPNtnTo+QNyhIlmIYKsRLU0DNFEzOzwAb64YG1hssP87xHxO7FOn@lists.infradead.org, AJvYcCWO0kknWx3TkR6zdKaQBisAn4xsmT2yJaDCTu7vbB9hMPWkonwQ4H1rbZmQ7/kUQqtOzyylV6oGcouXppg=@lists.infradead.org, AJvYcCWribg83OV817+8Dpp8m6d6zRrFV5rL4Lj4oGuHeUhNrpkBdEk6//EKAH97hwYW6qF2ujrrRlNx5C/U@lists.infradead.org X-Gm-Message-State: AOJu0YxLLV+MeJXutuj1nzINQ05WflI556U6l+/lKqRJsPDQbop0KSTn w8qM/u2PkPw8C5H484GKrR9ZBpfwi+/fjpyB6YJPwnQQu7TCgbwm X-Gm-Gg: ASbGnctWO+ucWl8rmZxfAuD+at2KiRKzyM49GhT7BMMi9+W81v+0u/2YJ/2U4C9ouJJ 5y9BCnlzhlpK9JOFxE6QidygS5km+UM8ytsQ/A1exF7oab/6I3SOILrM+rm1940FLl0Znds4Nj8 555VUnui2F9df6R4BI7OVAsj0IpqMgPmImGMn49Xo2o5DGoC8P3JqNhw7ji4nszxhlwwT1TmtmK sGbCPKU4iy3Sdy16S92H04FrrRnTASFK/iULmnKh9re8L7OC4d7QZfaztxTgnE8zOz0Y/ztq/a+ GplLdPrHDtLKkJdWRrIxQTPrJD+D6vxA3flDjyrYbcIXzuUgbJ4gvsy3Xy0BnupmJ0E= X-Google-Smtp-Source: AGHT+IE6IeUem5aMOtu5jChHWDBa5MTCtBbguS6zGTJ5rDfVtK+EJKsOG90m0rn5aiIOqr+ekOeGNQ== X-Received: by 2002:a05:600c:3b12:b0:439:96b2:e9b with SMTP id 5b1f17b1804b1-43996b212d9mr63124255e9.9.1739996517331; Wed, 19 Feb 2025 12:21:57 -0800 (PST) Received: from jernej-laptop.localnet (86-58-6-171.dynamic.telemach.net. [86.58.6.171]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d9be9sm19015747f8f.79.2025.02.19.12.21.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 12:21:56 -0800 (PST) From: Jernej =?UTF-8?B?xaBrcmFiZWM=?= To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Samuel Holland , Linus Walleij , Philipp Zabel , Maxime Ripard , Andras Szemzo Cc: Vinod Koul , Kishon Vijay Abraham I , Ulf Hansson , Paul Walmsley , Palmer Dabbelt , Albert Ou , Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= , Florian Fainelli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-gpio@vger.kernel.org, linux-pm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v2 04/10] clk: sunxi-ng: add CCU drivers for V853 Date: Wed, 19 Feb 2025 21:21:54 +0100 Message-ID: <3596612.V25eIC5XRa@jernej-laptop> In-Reply-To: <20250205125225.1152849-5-szemzo.andras@gmail.com> References: <20250205125225.1152849-1-szemzo.andras@gmail.com> <20250205125225.1152849-5-szemzo.andras@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250219_122159_986472_FF1A52E5 X-CRM114-Status: GOOD ( 26.47 ) 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 RG5lIHNyZWRhLCA1LiBmZWJydWFyIDIwMjUgb2IgMTM6NTI6MTkgU3JlZG5qZWV2cm9wc2tpIHN0 YW5kYXJkbmkgxI1hcyBqZSBBbmRyYXMgU3plbXpvIG5hcGlzYWwoYSk6Cj4gVjg1MyBoYXMgc2lt aWxhciBnYXRlcy9yZXNldHMgbGlrZSBleGlzdGluZyBBbGx3aW5uZXIgU09Dcy4gQWRkIHN1cHBv cnQgZm9yIGl0J3MgQ0NVIGFuZCBQUkNNIENDVS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyYXMg U3plbXpvIDxzemVtem8uYW5kcmFzQGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9jbGsvc3Vu eGktbmcvS2NvbmZpZyAgICAgICAgICAgIHwgICAxMCArCj4gIGRyaXZlcnMvY2xrL3N1bnhpLW5n L01ha2VmaWxlICAgICAgICAgICB8ICAgIDQgKwo+ICBkcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Ut c3VuOGktdjg1My1yLmMgfCAgMTIwICsrKwo+ICBkcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3Vu OGktdjg1My1yLmggfCAgIDE0ICsKPiAgZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4 NTMuYyAgIHwgMTE0NSArKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2Nsay9zdW54 aS1uZy9jY3Utc3VuOGktdjg1My5oICAgfCAgIDE0ICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMzA3 IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL3N1bnhpLW5n L2NjdS1zdW44aS12ODUzLXIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvc3Vu eGktbmcvY2N1LXN1bjhpLXY4NTMtci5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Ns ay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y2xrL3N1bnhpLW5nL0tjb25maWcgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9LY29uZmlnCj4gaW5k ZXggYjU0NzE5OGEyYzY1Li5lMjU3MzczMTc3ZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jbGsv c3VueGktbmcvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvY2xrL3N1bnhpLW5nL0tjb25maWcKPiBA QCAtMTIsNiArMTIsMTYgQEAgY29uZmlnIFNVTklWX0YxQzEwMFNfQ0NVCj4gIAlkZWZhdWx0IHkK PiAgCWRlcGVuZHMgb24gTUFDSF9TVU5JViB8fCBDT01QSUxFX1RFU1QKPiAgCj4gK2NvbmZpZyBT VU44SV9WODUzX0NDVQo+ICsJdHJpc3RhdGUgIlN1cHBvcnQgZm9yIHRoZSBBbGx3aW5uZXIgVjg1 My9WODUxcy9WODUxU0UgQ0NVIgo+ICsJZGVmYXVsdCBNQUNIX1NVTjhJCj4gKwlkZXBlbmRzIG9u IE1BQ0hfU1VOOEkgfHwgQ09NUElMRV9URVNUCj4gKwo+ICtjb25maWcgU1VOOElfVjg1M19SX0ND VQo+ICsJdHJpc3RhdGUgIlN1cHBvcnQgZm9yIHRoZSBBbGx3aW5uZXIgVjg1My9WODUxcy9WODUx U0UgUFJDTSBDQ1UiCj4gKwlkZWZhdWx0IE1BQ0hfU1VOOEkKPiArCWRlcGVuZHMgb24gTUFDSF9T VU44SSB8fCBDT01QSUxFX1RFU1QKCkdlbmVyYWxseSwgdGhpcyBhcmUgdHdvIHBhdGNoZXMsIG9u ZSBmb3IgZWFjaCBkcml2ZXIuCgo+ICsKPiAgY29uZmlnIFNVTjIwSV9EMV9DQ1UKPiAgCXRyaXN0 YXRlICJTdXBwb3J0IGZvciB0aGUgQWxsd2lubmVyIEQxL1I1MjgvVDExMyBDQ1UiCj4gIAlkZWZh dWx0IHkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvc3VueGktbmcvTWFrZWZpbGUgYi9kcml2 ZXJzL2Nsay9zdW54aS1uZy9NYWtlZmlsZQo+IGluZGV4IDZiM2FlMmI2MjBkYi4uYjg3OTI4NDYy ZTE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL01ha2VmaWxlCj4gKysrIGIv ZHJpdmVycy9jbGsvc3VueGktbmcvTWFrZWZpbGUKPiBAQCAtMjUsNiArMjUsOCBAQCBzdW54aS1j Y3UteQkJCSs9IGNjdV9tcC5vCj4gIAo+ICAjIFNvQyBzdXBwb3J0Cj4gIG9iai0kKENPTkZJR19T VU5JVl9GMUMxMDBTX0NDVSkJKz0gc3VuaXYtZjFjMTAwcy1jY3Uubwo+ICtvYmotJChDT05GSUdf U1VOOElfVjg1M19DQ1UpCSs9IHN1bjhpLXY4NTMtY2N1Lm8KPiArb2JqLSQoQ09ORklHX1NVTjhJ X1Y4NTNfUl9DQ1UpCSs9IHN1bjhpLXY4NTMtci1jY3UubwoKUHV0IGl0IHRvIG90aGVyIHN1bjhp IGRyaXZlcnMuCgo+ICBvYmotJChDT05GSUdfU1VOMjBJX0QxX0NDVSkJKz0gc3VuMjBpLWQxLWNj dS5vCj4gIG9iai0kKENPTkZJR19TVU4yMElfRDFfUl9DQ1UpCSs9IHN1bjIwaS1kMS1yLWNjdS5v Cj4gIG9iai0kKENPTkZJR19TVU41MElfQTY0X0NDVSkJKz0gc3VuNTBpLWE2NC1jY3Uubwo+IEBA IC01MCw2ICs1Miw4IEBAIG9iai0kKENPTkZJR19TVU45SV9BODBfQ0NVKQkrPSBzdW45aS1hODAt ZGUtY2N1Lm8KPiAgb2JqLSQoQ09ORklHX1NVTjlJX0E4MF9DQ1UpCSs9IHN1bjlpLWE4MC11c2It Y2N1Lm8KPiAgCj4gIHN1bml2LWYxYzEwMHMtY2N1LXkJCSs9IGNjdS1zdW5pdi1mMWMxMDBzLm8K PiArc3VuOGktdjg1My1jY3UteQkJKz0gY2N1LXN1bjhpLXY4NTMubwo+ICtzdW44aS12ODUzLXIt Y2N1LXkJCSs9IGNjdS1zdW44aS12ODUzLXIubwoKRGl0dG8uCgo+ICBzdW4yMGktZDEtY2N1LXkJ CQkrPSBjY3Utc3VuMjBpLWQxLm8KPiAgc3VuMjBpLWQxLXItY2N1LXkJCSs9IGNjdS1zdW4yMGkt ZDEtci5vCj4gIHN1bjUwaS1hNjQtY2N1LXkJCSs9IGNjdS1zdW41MGktYTY0Lm8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMtci5jIGIvZHJpdmVycy9j bGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMtci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAuLmJkNjBlMDBjZGE3Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My1yLmMKPiBAQCAtMCwwICsxLDEyMCBA QAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMjUgQW5kcmFzIFN6ZW16byA8c3plbXpvLmFuZHJhc0BnbWFpbC5jb20+Cj4g KyAqCj4gKyAqIEJhc2VkIG9uIGNjdS1zdW4yMGktZDEtci5jIGJ5IFNhbXVlbCBIb2xsYW5kLgo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KPiArI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4g Kwo+ICsjaW5jbHVkZSAiY2N1X2NvbW1vbi5oIgo+ICsjaW5jbHVkZSAiY2N1X3Jlc2V0LmgiCj4g Kwo+ICsjaW5jbHVkZSAiY2N1X2dhdGUuaCIKPiArI2luY2x1ZGUgImNjdV9tcC5oIgo+ICsKPiAr I2luY2x1ZGUgImNjdS1zdW44aS12ODUzLXIuaCIKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y2xrX3BhcmVudF9kYXRhIHJfYWhiX2FwYjBfcGFyZW50c1tdID0gewo+ICsJeyAuZndfbmFtZSA9 ICJob3NjIiB9LAo+ICsJeyAuZndfbmFtZSA9ICJsb3NjIiB9LAo+ICsJeyAuZndfbmFtZSA9ICJp b3NjIiB9LAo+ICsJeyAuZndfbmFtZSA9ICJwbGwtcGVyaXBoIiB9LAo+ICsJeyAuZndfbmFtZSA9 ICJwbGwtYXVkaW8iIH0KPiArfTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRI X01VWChyX2FoYl9jbGssICJyLWFoYiIsCj4gKwkJCQkgIHJfYWhiX2FwYjBfcGFyZW50cywgMHgw MDAsCj4gKwkJCQkgIDAsIDUsCQkvKiBNICovCj4gKwkJCQkgIDgsIDIsCQkvKiBQICovCj4gKwkJ CQkgIDI0LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgMCk7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y2xrX2h3ICpyX2FoYl9odyA9ICZyX2FoYl9jbGsuY29tbW9uLmh3Owo+ICsKPiArc3RhdGljIFNV TlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYKHJfYXBiMF9jbGssICJyLWFwYjAiLAo+ICsJCQkJICBy X2FoYl9hcGIwX3BhcmVudHMsIDB4MDBjLAo+ICsJCQkJICAwLCA1LAkJLyogTSAqLwo+ICsJCQkJ ICA4LCAyLAkJLyogUCAqLwo+ICsJCQkJICAyNCwgMywJLyogbXV4ICovCj4gKwkJCQkgIDApOwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19odyAqcl9hcGIwX2h3ID0gJnJfYXBiMF9jbGsuY29t bW9uLmh3OwoKV2hlcmUgY2FuIEkgbG9vayBmb3IgYWJvdmUgY2xvY2tzPyBUaGVyZSBhcmUgbm90 IGRlc2NyaWJlZCBpbiBCU1AgZHJpdmVyLgoKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9I V1MoYnVzX3JfdHdkX2NsaywgImJ1cy1yLXR3ZCIsICZyX2FwYjBfaHcsIAo+ICsJCQkgIDB4MTJj LCBCSVQoMCksIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19yX3BwdV9jbGss ICJidXMtci1wcHUiLCAmcl9hcGIwX2h3LAo+ICsJCQkgIDB4MWFjLCBCSVQoMCksIDApOwo+ICtz dGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19yX3J0Y19jbGssICJidXMtci1ydGMiLCAmcl9h aGJfaHcsCj4gKwkJCSAgMHgyMGMsIEJJVCgwKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FU RV9IV1MoYnVzX3JfY3B1Y2ZnX2NsaywgImJ1cy1yLWNwdWNmZyIsICZyX2FwYjBfaHcsCj4gKwkJ CSAgMHgyMmMsIEJJVCgwKSwgMCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNjdV9jb21tb24gKnN1 bjhpX3Y4NTNfcl9jY3VfY2xrc1tdID0gewo+ICsJJnJfYWhiX2Nsay5jb21tb24sCj4gKwkmcl9h cGIwX2Nsay5jb21tb24sCj4gKwkmYnVzX3JfdHdkX2Nsay5jb21tb24sCj4gKwkmYnVzX3JfcHB1 X2Nsay5jb21tb24sCj4gKwkmYnVzX3JfcnRjX2Nsay5jb21tb24sCj4gKwkmYnVzX3JfY3B1Y2Zn X2Nsay5jb21tb24sCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNsa19od19vbmVjZWxsX2Rh dGEgc3VuOGlfdjg1M19yX2h3X2Nsa3MgPSB7Cj4gKwkubnVtCT0gQ0xLX05VTUJFUiwKPiArCS5o d3MJPSB7Cj4gKwkJW0NMS19SX0FIQl0JCT0gJnJfYWhiX2Nsay5jb21tb24uaHcsCj4gKwkJW0NM S19SX0FQQjBdCQk9ICZyX2FwYjBfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19SX1RXRF0J CT0gJmJ1c19yX3R3ZF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQlVTX1JfUFBVXQkJPSAmYnVz X3JfcHB1X2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfUl9SVENdCQk9ICZidXNfcl9ydGNf Y2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19SX0NQVUNGR10JPSAmYnVzX3JfY3B1Y2ZnX2Ns ay5jb21tb24uaHcsCj4gKwl9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjY3Vf cmVzZXRfbWFwIHN1bjhpX3Y4NTNfcl9jY3VfcmVzZXRzW10gPSB7Cj4gKwlbUlNUX0JVU19SX1RX RF0JCT0geyAweDEyYywgQklUKDE2KSB9LAoKV2hlcmUgZGlkIHlvdSBnZXQgdGhhdD8gQlNQIGRy aXZlciB0aGF0IEkgY2hlY2tlZCBkb2Vzbid0IG1lbnRpb25zIGl0LgoKPiArCVtSU1RfQlVTX1Jf UFBVXQkJPSB7IDB4MWFjLCBCSVQoMTYpIH0sCj4gKwlbUlNUX0JVU19SX1JUQ10JCT0geyAweDIw YywgQklUKDE2KSB9LAo+ICsJW1JTVF9CVVNfUl9DUFVDRkddCT0geyAweDIyYywgQklUKDE2KSB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzdW54aV9jY3VfZGVzYyBzdW44aV92 ODUzX3JfY2N1X2Rlc2MgPSB7Cj4gKwkuY2N1X2Nsa3MJPSBzdW44aV92ODUzX3JfY2N1X2Nsa3Ms Cj4gKwkubnVtX2NjdV9jbGtzCT0gQVJSQVlfU0laRShzdW44aV92ODUzX3JfY2N1X2Nsa3MpLAo+ ICsKPiArCS5od19jbGtzCT0gJnN1bjhpX3Y4NTNfcl9od19jbGtzLAo+ICsKPiArCS5yZXNldHMJ CT0gc3VuOGlfdjg1M19yX2NjdV9yZXNldHMsCj4gKwkubnVtX3Jlc2V0cwk9IEFSUkFZX1NJWkUo c3VuOGlfdjg1M19yX2NjdV9yZXNldHMpLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzdW44aV92 ODUzX3JfY2N1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXZv aWQgX19pb21lbSAqcmVnOwo+ICsKPiArCXJlZyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNv dXJjZShwZGV2LCAwKTsKPiArCWlmIChJU19FUlIocmVnKSkKPiArCQlyZXR1cm4gUFRSX0VSUihy ZWcpOwo+ICsKPiArCXJldHVybiBkZXZtX3N1bnhpX2NjdV9wcm9iZSgmcGRldi0+ZGV2LCByZWcs ICZzdW44aV92ODUzX3JfY2N1X2Rlc2MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBzdW44aV92ODUzX3JfY2N1X2lkc1tdID0gewo+ICsJeyAuY29tcGF0aWJs ZSA9ICJhbGx3aW5uZXIsc3VuOGktdjg1My1yLWNjdSIgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBzdW44aV92ODUzX3JfY2N1X2lkcyk7Cj4gKwo+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW44aV92ODUzX3JfY2N1X2RyaXZlciA9IHsKPiArCS5w cm9iZQk9IHN1bjhpX3Y4NTNfcl9jY3VfcHJvYmUsCj4gKwkuZHJpdmVyCT0gewo+ICsJCS5uYW1l CQkJPSAic3VuOGktdjg1My1yLWNjdSIsCj4gKwkJLnN1cHByZXNzX2JpbmRfYXR0cnMJPSB0cnVl LAo+ICsJCS5vZl9tYXRjaF90YWJsZQkJPSBzdW44aV92ODUzX3JfY2N1X2lkcywKPiArCX0sCj4g K307Cj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfdjg1M19yX2NjdV9kcml2ZXIpOwo+ ICsKPiArTU9EVUxFX0lNUE9SVF9OUygiU1VOWElfQ0NVIik7Cj4gK01PRFVMRV9ERVNDUklQVElP TigiU3VwcG9ydCBmb3IgdGhlIEFsbHdpbm5lciBWODUzIFBSQ00gQ0NVIik7Cj4gK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1 bjhpLXY4NTMtci5oIGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMtci5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjJjNmNjN2I2ZjI1MQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1 My1yLmgKPiBAQCAtMCwwICsxLDE0IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBBbmRyYXMgU3plbXpvIDxz emVtem8uYW5kcmFzQGdtYWlsLmNvbT4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9DQ1VfU1VOOElf Vjg1M19SX0gKPiArI2RlZmluZSBfQ0NVX1NVTjhJX1Y4NTNfUl9ICj4gKwo+ICsjaW5jbHVkZSA8 ZHQtYmluZGluZ3MvY2xvY2svYWxsd2lubmVyLHN1bjhpLXY4NTMtci1jY3UuaD4KPiArI2luY2x1 ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L2FsbHdpbm5lcixzdW44aS12ODUzLXItY2N1Lmg+Cj4gKwo+ ICsjZGVmaW5lIENMS19OVU1CRVIJCShDTEtfQlVTX1JfQ1BVQ0ZHICsgMSkKPiArCj4gKyNlbmRp Zgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5jIGIv ZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi40YjMyZjNhOTEzY2YKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuYwo+IEBAIC0wLDAgKzEs MTE0NSBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMjUgQW5kcmFzIFN6ZW16byA8c3plbXpvLmFuZHJhc0BnbWFpbC5j b20+Cj4gKyAqCj4gKyAqIEJhc2VkIG9uIGNjdS1zdW4yMGktZDEuYyBieSBTYW11ZWwgSG9sbGFu ZC4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArCj4gKyNpbmNsdWRlICIuLi9jbGsuaCIKPiAr Cj4gKyNpbmNsdWRlICJjY3VfY29tbW9uLmgiCj4gKyNpbmNsdWRlICJjY3VfcmVzZXQuaCIKPiAr Cj4gKyNpbmNsdWRlICJjY3VfZGl2LmgiCj4gKyNpbmNsdWRlICJjY3VfZ2F0ZS5oIgo+ICsjaW5j bHVkZSAiY2N1X21wLmgiCj4gKyNpbmNsdWRlICJjY3VfbXVsdC5oIgo+ICsjaW5jbHVkZSAiY2N1 X25rLmgiCj4gKyNpbmNsdWRlICJjY3VfbmttLmgiCj4gKyNpbmNsdWRlICJjY3VfbmttcC5oIgo+ ICsjaW5jbHVkZSAiY2N1X25tLmgiCj4gKwo+ICsjaW5jbHVkZSAiY2N1LXN1bjhpLXY4NTMuaCIK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIG9zYzI0TVtdID0gewo+ ICsJeyAuZndfbmFtZSA9ICJob3NjIiB9Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBGb3IgdGhlIENQ VSBQTEwsIHRoZSBvdXRwdXQgZGl2aWRlciBpcyBkZXNjcmliZWQgYXMgIm9ubHkgZm9yIHRlc3Rp bmciCj4gKyAqIGluIHRoZSB1c2VyIG1hbnVhbC4gU28gaXQncyBub3QgbW9kZWxsZWQgYW5kIGZv cmNlZCB0byAwLgo+ICsgKi8KPiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9DUFVfUkVHCQkweDAw MAo+ICsKPiArc3RhdGljIHN0cnVjdCBjY3VfbXVsdCBwbGxfY3B1X2NsayA9IHsKPiArCS5lbmFi bGUJCT0gQklUKDI3KSwKPiArCS5sb2NrCQk9IEJJVCgyOCksCj4gKwkubXVsdAkJPSBfU1VOWElf Q0NVX01VTFRfTUlOKDgsIDgsIDExKSwKPiArCS5jb21tb24JCT0gewo+ICsJCS5yZWcJCT0gMHgw MDAsCj4gKwkJLmh3LmluaXQJPSBDTEtfSFdfSU5JVF9QQVJFTlRTX0RBVEEoInBsbC1jcHUiLCBv c2MyNE0sCj4gKwkJCQkJCQkgICAmY2N1X211bHRfb3BzLAo+ICsJCQkJCQkJICAgQ0xLX1NFVF9S QVRFX0dBVEUpLAo+ICsJfSwKPiArfTsKPiArCj4gKy8qIFNvbWUgUExMcyBhcmUgaW5wdXQgKiBO IC8gZGl2MSAvIFAuIE1vZGVsIHRoZW0gYXMgTktNUCB3aXRoIG5vIEsgKi8KPiArI2RlZmluZSBT VU44SV9WODUzX1BMTF9ERFJfUkVHCQkweDAxMAo+ICtzdGF0aWMgc3RydWN0IGNjdV9ua21wIHBs bF9kZHJfY2xrID0gewo+ICsJLmVuYWJsZQkJPSBCSVQoMjcpLAo+ICsJLmxvY2sJCT0gQklUKDI4 KSwKPiArCS5uCQk9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTEpLAo+ICsJLm0JCT0gX1NV TlhJX0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIgKi8KPiArCS5wCQk9IF9TVU5YSV9D Q1VfRElWKDAsIDEpLCAvKiBvdXRwdXQgZGl2aWRlciAqLwo+ICsJLmNvbW1vbgkJPSB7Cj4gKwkJ LnJlZwkJPSAweDAxMCwKPiArCQkuaHcuaW5pdAk9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgi cGxsLWRkciIsIG9zYzI0TSwKPiArCQkJCQkJCSAgICZjY3VfbmttcF9vcHMsCj4gKwkJCQkJCQkg ICBDTEtfU0VUX1JBVEVfR0FURSksCj4gKwl9LAo+ICt9Owo+ICsKPiArI2RlZmluZSBTVU44SV9W ODUzX1BMTF9QRVJJUEhfUkVHCTB4MDIwCj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X25tIHBsbF9wZXJp cGhfNHhfY2xrID0gewo+ICsJLmVuYWJsZQkJPSBCSVQoMjcpLAo+ICsJLmxvY2sJCT0gQklUKDI4 KSwKPiArCS5uCQk9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTEpLAo+ICsJLm0JCT0gX1NV TlhJX0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIgKi8KPiArCS5jb21tb24JCT0gewo+ ICsJCS5yZWcJCT0gMHgwMjAsCj4gKwkJLmh3LmluaXQJPSBDTEtfSFdfSU5JVF9QQVJFTlRTX0RB VEEoInBsbC1wZXJpcGgtNHgiLCBvc2MyNE0sCj4gKwkJCQkJCQkgICAmY2N1X25tX29wcywKPiAr CQkJCQkJCSAgIENMS19TRVRfUkFURV9HQVRFKSwKPiArCX0sCj4gK307Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNsa19odyAqcGxsX3BlcmlwaF80eF9od3NbXSA9IHsKPiArCSZwbGxfcGVy aXBoXzR4X2Nsay5jb21tb24uaHcKPiArfTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV1Mo cGxsX3BlcmlwaF8yeF9jbGssICJwbGwtcGVyaXBoLTJ4IiwgcGxsX3BlcmlwaF80eF9od3MsCj4g KwkJICAgICAgIDB4MDIwLCAxNiwgMywgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX01fSFdT KHBsbF9wZXJpcGhfODAwTV9jbGssICJwbGwtcGVyaXBoLTgwME0iLCBwbGxfcGVyaXBoXzR4X2h3 cywKPiArCQkgICAgICAgMHgwMjAsIDIwLCAzLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1Vf TV9IV1MocGxsX3BlcmlwaF80ODBNX2NsaywgInBsbC1wZXJpcGgtNDgwTSIsIHBsbF9wZXJpcGhf NHhfaHdzLAo+ICsJCSAgICAgICAweDAyMCwgMiwgMywgMCk7Cj4gKwo+ICtzdGF0aWMgQ0xLX0ZJ WEVEX0ZBQ1RPUl9IVyhwbGxfcGVyaXBoXzYwME1fY2xrLCAicGxsLXBlcmlwaC02MDBNIiwKPiAr CQkJICAgJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5odywgMiwgMSwgMCk7Cj4gKwo+ICtzdGF0 aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IVyhwbGxfcGVyaXBoXzQwME1fY2xrLCAicGxsLXBlcmlwaC00 MDBNIiwKPiArCQkJICAgJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5odywgMywgMSwgMCk7Cj4g Kwo+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IVyhwbGxfcGVyaXBoXzMwME1fY2xrLCAicGxs LXBlcmlwaC0zMDBNIiwKPiArCQkJICAgJnBsbF9wZXJpcGhfNjAwTV9jbGsuaHcsIDIsIDEsIDAp Owo+ICsKPiArc3RhdGljIENMS19GSVhFRF9GQUNUT1JfSFcocGxsX3BlcmlwaF8yMDBNX2Nsaywg InBsbC1wZXJpcGgtMjAwTSIsCj4gKwkJCSAgICZwbGxfcGVyaXBoXzQwME1fY2xrLmh3LCAyLCAx LCAwKTsKPiArCj4gK3N0YXRpYyBDTEtfRklYRURfRkFDVE9SX0hXKHBsbF9wZXJpcGhfMTYwTV9j bGssICJwbGwtcGVyaXBoLTE2ME0iLAo+ICsJCQkgICAmcGxsX3BlcmlwaF80ODBNX2Nsay5jb21t b24uaHcsIDMsIDEsIDApOwo+ICsKPiArc3RhdGljIENMS19GSVhFRF9GQUNUT1JfSFcocGxsX3Bl cmlwaF8xNTBNX2NsaywgInBsbC1wZXJpcGgtMTUwTSIsCj4gKwkJCSAgICZwbGxfcGVyaXBoXzMw ME1fY2xrLmh3LCAyLCAxLCAwKTsKPiArCj4gKy8qCj4gKyAqIEZvciBWaWRlbyBQTExzLCB0aGUg b3V0cHV0IGRpdmlkZXIgaXMgZGVzY3JpYmVkIGFzICJvbmx5IGZvciB0ZXN0aW5nIgo+ICsgKiBp biB0aGUgdXNlciBtYW51YWwuCj4gKyAqLwo+ICsjZGVmaW5lIFNVTjhJX1Y4NTNfUExMX1ZJREVP X1JFRwkweDA0MAo+ICtzdGF0aWMgc3RydWN0IGNjdV9ua21wIHBsbF92aWRlb180eF9jbGsgPSB7 Cj4gKwkuZW5hYmxlCQk9IEJJVCgyNyksCj4gKwkubG9jawkJPSBCSVQoMjgpLAo+ICsJLm4JCT0g X1NVTlhJX0NDVV9NVUxUX01JTig4LCA4LCAxMSksCj4gKwkucAkJPSBfU1VOWElfQ0NVX0RJVigx LCAxKSwgLyogaW5wdXQgZGl2aWRlciAqLwo+ICsJLmNvbW1vbgkJPSB7Cj4gKwkJLnJlZwkJPSAw eDA0MCwKPiArCQkuaHcuaW5pdAk9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgicGxsLXZpZGVv LTR4Iiwgb3NjMjRNLAo+ICsJCQkJCQkJICAgJmNjdV9ua21wX29wcywKPiArCQkJCQkJCSAgIENM S19TRVRfUkFURV9HQVRFKSwKPiArCX0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGNsa19odyAqcGxsX3ZpZGVvXzR4X2h3c1tdID0gewo+ICsJJnBsbF92aWRlb180eF9jbGsuY29t bW9uLmh3Cj4gK307Cj4gK3N0YXRpYyBDTEtfRklYRURfRkFDVE9SX0hXUyhwbGxfdmlkZW9fMnhf Y2xrLCAicGxsLXZpZGVvLTJ4IiwKPiArCQkJICAgIHBsbF92aWRlb180eF9od3MsIDIsIDEsIENM S19TRVRfUkFURV9QQVJFTlQpOwo+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IV1MocGxsX3Zp ZGVvXzF4X2NsaywgInBsbC12aWRlby0xeCIsCj4gKwkJCSAgICBwbGxfdmlkZW9fNHhfaHdzLCA0 LCAxLCBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPiArCj4gKwo+ICsvKgo+ICsgKiBGb3IgQ1NJIFBM THMsIHRoZSBvdXRwdXQgZGl2aWRlciBpcyBkZXNjcmliZWQgYXMgIm9ubHkgZm9yIHRlc3Rpbmci Cj4gKyAqIGluIHRoZSB1c2VyIG1hbnVhbC4KPiArICovCj4gKyNkZWZpbmUgU1VOOElfVjg1M19Q TExfQ1NJX1JFRwkJMHgwNDgKPiArc3RhdGljIHN0cnVjdCBjY3VfbmttcCBwbGxfY3NpXzR4X2Ns ayA9IHsKPiArCS5lbmFibGUJCT0gQklUKDI3KSwKPiArCS5sb2NrCQk9IEJJVCgyOCksCj4gKwku bgkJPSBfU1VOWElfQ0NVX01VTFRfTUlOKDgsIDgsIDExKSwKPiArCS5wCQk9IF9TVU5YSV9DQ1Vf RElWKDEsIDEpLCAvKiBpbnB1dCBkaXZpZGVyICovCj4gKwkuY29tbW9uCQk9IHsKPiArCQkucmVn CQk9IDB4MDQ4LAo+ICsJCS5ody5pbml0CT0gQ0xLX0hXX0lOSVRfUEFSRU5UU19EQVRBKCJwbGwt Y3NpLTR4Iiwgb3NjMjRNLAo+ICsJCQkJCQkJICAgJmNjdV9ua21wX29wcywKPiArCQkJCQkJCSAg IENMS19TRVRfUkFURV9HQVRFKSwKPiArCX0sCj4gK307Cj4gKwo+ICtzdGF0aWMgQ0xLX0ZJWEVE X0ZBQ1RPUl9IVyhwbGxfY3NpX2NsaywgInBsbC1jc2kiLAo+ICsJCQkgICAmcGxsX2NzaV80eF9j bGsuY29tbW9uLmh3LCA0LCAxLCBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPiArCj4gKwo+ICsjZGVm aW5lIFNVTjhJX1Y4NTNfUExMX0FVRElPX1JFRwkweDA3OAo+ICtzdGF0aWMgc3RydWN0IGNjdV9z ZG1fc2V0dGluZyBwbGxfYXVkaW9fZGl2NV9zZG1fdGFibGVbXSA9IHsKPiArCXsgLnJhdGUgPSAx OTY2MDgwMDAsIC5wYXR0ZXJuID0gMHhjMDAxZWI4NSwgLm0gPSA1LCAubiA9IDQwIH0sIC8qIDI0 LjU3NiAqLwo+ICsJeyAucmF0ZSA9IDY3NzM3NjAwLCAucGF0dGVybiA9IDB4YzAwMTI4OGQsIC5t ID0gOCwgLm4gPSAyMiB9LCAvKiAyMi41NzkyICovCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGNjdV9ubSBwbGxfYXVkaW9fZGl2NV9jbGsgPSB7Cj4gKwkuZW5hYmxlCQk9IEJJVCgyNyksCj4g KwkubG9jayAgICAgICAgICAgPSBCSVQoMjgpLAo+ICsJLm4gICAgICAgICAgICAgID0gX1NVTlhJ X0NDVV9NVUxUKDgsIDgpLAo+ICsJLm0gICAgICAgICAgICAgID0gX1NVTlhJX0NDVV9ESVYoMjAs IDMpLAo+ICsJLnNkbSAgICAgICAgICAgID0gX1NVTlhJX0NDVV9TRE0ocGxsX2F1ZGlvX2RpdjVf c2RtX3RhYmxlLAo+ICsJCQkJICAgIEJJVCgyNCksIDB4MDE3OCwgQklUKDMxKSksCj4gKwkuY29t bW9uICAgICAgICAgPSB7Cj4gKwkJLnJlZyAgICAgICAgICAgID0gMHgwMDc4LAo+ICsJCS5mZWF0 dXJlcyAgICAgICA9IENDVV9GRUFUVVJFX1NJR01BX0RFTFRBX01PRCwKPiArCQkuaHcuaW5pdCAg ICAgICAgPSBDTEtfSFdfSU5JVF9QQVJFTlRTX0RBVEEoInBsbC1hdWRpby1kaXY1Iiwgb3NjMjRN LAo+ICsJCQkJCQkJICAgJmNjdV9ubV9vcHMsCj4gKwkJCQkJCQkgICBDTEtfU0VUX1JBVEVfVU5H QVRFKSwKPiArCX0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19odyAqcGxs X2F1ZGlvX2RpdjVfaHdzW10gPSB7Cj4gKwkmcGxsX2F1ZGlvX2RpdjVfY2xrLmNvbW1vbi5odwo+ ICt9Owo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9NX0hXUyhwbGxfYXVkaW9fMXhfY2xrLCAicGxs LWF1ZGlvLTF4IiwgcGxsX2F1ZGlvX2RpdjVfaHdzLAo+ICsJCSAgICAgICAweGUwMCwgMCwgNSwg Q0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gKwo+ICsvKiBwbGwtYXVkaW8tZGl2MiBhbmQgcGxsLWF1 ZGlvLTR4IG5vdCB1c2VkLCBiZWNhdXNlIHBsbC1hdWRpby0xeCBjYW4gY292ZXIgCj4gKyAqIDIy LjU3OTJNIGFuZCAyNC41NzZNIAo+ICsgKi8KPiArc3RhdGljIFNVTlhJX0NDVV9NKHBsbF9hdWRp b19kaXYyX2NsaywgInBsbC1hdWRpby1kaXYyIiwgInBsbC1hdWRpbyIsCj4gKwkJICAgMHgwNzgs IDE2LCAzLCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9NKHBsbF9hdWRpb180eF9jbGssICJwbGwt YXVkaW8tNHgiLCAicGxsLWF1ZGlvLWRpdjIiLAo+ICsJCSAgIDB4ZTAwLCA1LCA1LCAwKTsKPiAr Cj4gKy8qCj4gKyAqIEZvciB0aGUgTlBVIFBMTCwgdGhlIG91dHB1dCBkaXZpZGVyIGlzIGRlc2Ny aWJlZCBhcyAib25seSBmb3IgdGVzdGluZyIKPiArICogaW4gdGhlIHVzZXIgbWFudWFsLgo+ICsg Ki8KPiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9OUFVfUkVHCQkweDA4MAo+ICtzdGF0aWMgc3Ry dWN0IGNjdV9ua21wIHBsbF9ucHVfNHhfY2xrID0gewo+ICsJLmVuYWJsZQkJPSBCSVQoMjcpLAo+ ICsJLmxvY2sJCT0gQklUKDI4KSwKPiArCS5uCQk9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwg MTEpLAo+ICsJLnAJCT0gX1NVTlhJX0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIgKi8K PiArCS5jb21tb24JCT0gewo+ICsJCS5yZWcJCT0gMHgwODAsCj4gKwkJLmh3LmluaXQJPSBDTEtf SFdfSU5JVF9QQVJFTlRTX0RBVEEoInBsbC1ucHUtNHgiLCBvc2MyNE0sCj4gKwkJCQkJCQkgICAm Y2N1X25rbXBfb3BzLAo+ICsJCQkJCQkJICAgQ0xLX1NFVF9SQVRFX1VOR0FURSksCj4gKwl9LAo+ ICt9Owo+ICsKPiArLyoKPiArICogVGhlIENQVSBnYXRlIGlzIG5vdCBtb2RlbGxlZCAtIGl0IGlz IGluIGEgc2VwYXJhdGUgcmVnaXN0ZXIgKDB4NTA0KQo+ICsgKiBhbmQgaGFzIGEgc3BlY2lhbCBr ZXkgZmllbGQuIFRoZSBjbG9jayBtdXN0IG5vdCBiZSBnYXRlZCBhbnl3YXkgYnkKPiArICogdGhl IGtlcm5lbC4KPiArICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIGNw dV9wYXJlbnRzW10gPSB7Cj4gKwl7IC5md19uYW1lID0gImhvc2MiIH0sCj4gKwl7IC5md19uYW1l ID0gImxvc2MiIH0sCj4gKwl7IC5md19uYW1lID0gImlvc2MiIH0sCj4gKwl7IC5odyA9ICZwbGxf Y3B1X2Nsay5jb21tb24uaHcgfSwKPiArCXsgLmh3ID0gJnBsbF9wZXJpcGhfNjAwTV9jbGsuaHcg fSwKPiArCXsgLmh3ID0gJnBsbF9wZXJpcGhfODAwTV9jbGsuY29tbW9uLmh3IH0sCj4gK307Cj4g Kwo+ICsvKgo+ICsgKiBUaGVyZSBpcyBhIFAgZmFjdG9yIChQTExfT1VUX0VYVF9ESVZQWzE3OjE2 XSkgaW4gdGhpcyByZWdpc3RlciwgYnV0IGl0IGlzIG5vdCBtb2RlbGVkLgo+ICsgKiBUaGUgbWFu dWFsIHN0YXRlcyB0aGF0IGl0IHNob3VsZCBiZSB1c2VkIG9ubHksIHdoZW4gdGhlIG91dHB1dCBj bG9jayBpcyBsZXNzIHRoYW4gMjg4IE1Iei4KPiArICovCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVVY X0RBVEEoY3B1X2NsaywgImNwdSIsIGNwdV9wYXJlbnRzLAo+ICsJCQkgIDB4NTAwLCAyNCwgMywg Q0xLX1NFVF9SQVRFX1BBUkVOVCB8IENMS19JU19DUklUSUNBTCk7Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGNsa19odyAqY3B1X2h3c1tdID0geyAmY3B1X2Nsay5jb21tb24uaHcgfTsKPiAr Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV1MoY3B1X2F4aV9jbGssICJjcHUtYXhpIiwgY3B1X2h3 cywKPiArCQkgICAgICAgMHg1MDAsIDAsIDIsIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX01fSFdT KGNwdV9hcGJfY2xrLCAiY3B1LWFwYiIsIGNwdV9od3MsCj4gKwkJICAgICAgIDB4NTAwLCA4LCAy LCAwKTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIGFoYl9wYXJl bnRzW10gPSB7Cj4gKwl7IC5md19uYW1lID0gImhvc2MiIH0sCj4gKwl7IC5md19uYW1lID0gImxv c2MiIH0sCj4gKwl7IC5md19uYW1lID0gImlvc2MiIH0sCj4gKwl7IC5odyA9ICZwbGxfcGVyaXBo XzYwME1fY2xrLmh3IH0sCj4gK307Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRIX01V WChhaGJfY2xrLCAiYWhiIiwgYWhiX3BhcmVudHMsIDB4NTEwLAo+ICsJCQkJICAwLCA1LAkJLyog TSAqLwo+ICsJCQkJICA4LCAyLAkJLyogUCAqLwo+ICsJCQkJICAyNCwgMiwJLyogbXV4ICovCj4g KwkJCQkgIDApOwo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYKGFwYjBf Y2xrLCAiYXBiMCIsIGFoYl9wYXJlbnRzLCAweDUyMCwKPiArCQkJCSAgMCwgNSwJCS8qIE0gKi8K PiArCQkJCSAgOCwgMiwJCS8qIFAgKi8KPiArCQkJCSAgMjQsIDIsCS8qIG11eCAqLwo+ICsJCQkJ ICAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRIX01VWChhcGIxX2Nsaywg ImFwYjEiLCBhaGJfcGFyZW50cywgMHg1MjQsCj4gKwkJCQkgIDAsIDUsCQkvKiBNICovCj4gKwkJ CQkgIDgsIDIsCQkvKiBQICovCj4gKwkJCQkgIDI0LCAyLAkvKiBtdXggKi8KPiArCQkJCSAgMCk7 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19odyAqYWhiX2h3c1tdID0geyAmYWhiX2Ns ay5jb21tb24uaHcgfTsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKmFwYjBfaHdzW10g PSB7ICZhcGIwX2Nsay5jb21tb24uaHcgfTsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcg KmFwYjFfaHdzW10gPSB7ICZhcGIxX2Nsay5jb21tb24uaHcgfTsKPiArCj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNsa19odyAqZGVfZzJkX3BhcmVudHNbXSA9IHsKPiArCSZwbGxfcGVyaXBo XzMwME1fY2xrLmh3LAo+ICsJJnBsbF92aWRlb18xeF9jbGsuaHcsCj4gK307Cj4gK3N0YXRpYyBT VU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKGRlX2NsaywgImRlIiwgZGVfZzJkX3BhcmVudHMs IDB4NjAwLAo+ICsJCQkJICAgIDAsIDUsCS8qIE0gKi8KPiArCQkJCSAgICAyNCwgMSwJLyogbXV4 ICovCj4gKwkJCQkgICAgQklUKDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJICAgIENMS19TRVRfUkFU RV9QQVJFTlQpOwo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfZGVfY2xrLCAi YnVzLWRlIiwgYWhiX2h3cywKPiArCQkJICAweDYwYywgQklUKDApLCAwKTsKPiArCj4gK3N0YXRp YyBTVU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKGcyZF9jbGssICJnMmQiLCBkZV9nMmRfcGFy ZW50cywgMHg2MzAsCj4gKwkJCQkgICAgMCwgNSwJLyogTSAqLwo+ICsJCQkJICAgIDI0LCAxLAkv KiBtdXggKi8KPiArCQkJCSAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAgQ0xLX1NF VF9SQVRFX1BBUkVOVCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19nMmRf Y2xrLCAiYnVzLWcyZCIsIGFoYl9od3MsCj4gKwkJCSAgMHg2M2MsIEJJVCgwKSwgMCk7Cj4gKwo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgY2VfcGFyZW50c1tdID0g ewo+ICsJeyAuZndfbmFtZSA9ICJob3NjIiB9LAoKV2hlcmUgdGhpcyBjb21lIGZyb20/IFY4NTMg bWFudWFsIHYxLjEgZG9lc24ndCBoYXZlIGl0LgoKPiArCXsgLmh3ID0gJnBsbF9wZXJpcGhfNDAw TV9jbGsuaHcsIH0sCj4gKwl7IC5odyA9ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9Cj4gK307 Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9EQVRBX1dJVEhfTVVYX0dBVEUoY2VfY2xrLCAiY2UiLCBj ZV9wYXJlbnRzLCAweDY4MCwKPiArCQkJCSAgICAgIDAsIDQsCS8qIE0gKi8KPiArCQkJCSAgICAg IDI0LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICAgIEJJVCgzMSksCS8qIGdhdGUgKi8KPiArCQkJ CSAgICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwoKU2V0IHJhdGUgcGFyZW50IGZsYWcgZG9lc24n dCBtYWtlIHNlbnNlIG9uIGNvbnN0YW50IHBhcmVudHMuCgo+ICsKPiArc3RhdGljIFNVTlhJX0ND VV9HQVRFX0hXUyhidXNfY2VfY2xrLCAiYnVzLWNlIiwgYWhiX2h3cywKPiArCQkJICAweDY4Yywg QklUKDApIHwgQklUKDEpLCAwKTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICp2 ZV9wYXJlbnRzW10gPSB7Cj4gKwkmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywKPiArCSZwbGxfcGVy aXBoXzQwME1fY2xrLmh3LAo+ICsJJnBsbF9wZXJpcGhfNDgwTV9jbGsuY29tbW9uLmh3LAo+ICsJ JnBsbF9ucHVfNHhfY2xrLmNvbW1vbi5odywKPiArCSZwbGxfdmlkZW9fNHhfY2xrLmNvbW1vbi5o dywKPiArCSZwbGxfY3NpXzR4X2Nsay5jb21tb24uaHcsCj4gK307Cj4gK3N0YXRpYyBTVU5YSV9D Q1VfTV9IV19XSVRIX01VWF9HQVRFKHZlX2NsaywgInZlIiwgdmVfcGFyZW50cywgMHg2OTAsCj4g KwkJCQkgICAgMCwgNSwJLyogTSAqLwo+ICsJCQkJICAgIDI0LCAzLAkvKiBtdXggKi8KPiArCQkJ CSAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAgMCk7CgpDTEtfU0VUX1JBVEVfUEFS RU5UIGZsYWc/IENlZHJ1cyBkcml2ZXIgc2V0IHdvcmtpbmcgY2xvY2sgYXQgdGhlIGJlZ2lubmlu Zy4KCj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c192ZV9jbGssICJidXMtdmUi LCBhaGJfaHdzLAo+ICsJCQkgIDB4NjljLCBCSVQoMCksIDApOwo+ICsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY2xrX2h3ICpucHVfcGFyZW50c1tdID0gewo+ICsJJnBsbF9wZXJpcGhfNDgw TV9jbGsuY29tbW9uLmh3LAo+ICsJJnBsbF9wZXJpcGhfNjAwTV9jbGsuaHcsCj4gKwkmcGxsX3Bl cmlwaF84MDBNX2Nsay5jb21tb24uaHcsCj4gKwkmcGxsX25wdV80eF9jbGsuY29tbW9uLmh3LAo+ ICt9Owo+ICtzdGF0aWMgU1VOWElfQ0NVX01fSFdfV0lUSF9NVVhfR0FURShucHVfY2xrLCAibnB1 IiwgbnB1X3BhcmVudHMsIDB4NmUwLAo+ICsJCQkJICAgIDAsIDUsCS8qIE0gKi8KPiArCQkJCSAg ICAyNCwgMywJLyogbXV4ICovCj4gKwkJCQkgICAgQklUKDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJ ICAgIDApOwoKSSB0aGluayBDTEtfU0VUX1JBVEVfUEFSRU5UIHdvdWxkIGFsc28gYmUgYmVuZWZp Y2lhbCBoZXJlLgoKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX25wdV9jbGss ICJidXMtbnB1IiwgYWhiX2h3cywKPiArCQkJICAweDZlYywgQklUKDApLCAwKTsKPiArCj4gK3N0 YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2RtYV9jbGssICJidXMtZG1hIiwgYWhiX2h3cywK PiArCQkJICAweDcwYywgQklUKDApLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9I V1MoYnVzX21zZ2JveDBfY2xrLCAiYnVzLW1zZ2JveDAiLCBhaGJfaHdzLAo+ICsJCQkgIDB4NzFj LCBCSVQoMCksIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19tc2dib3gxX2Ns aywgImJ1cy1tc2dib3gxIiwgYWhiX2h3cywKPiArCQkJICAweDcxYywgQklUKDEpLCAwKTsKPiAr Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3NwaW5sb2NrX2NsaywgImJ1cy1zcGlu bG9jayIsIGFoYl9od3MsCj4gKwkJCSAgMHg3MmMsIEJJVCgwKSwgMCk7Cj4gKwo+ICtzdGF0aWMg U1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19oc3RpbWVyX2NsaywgImJ1cy1oc3RpbWVyIiwgYWhiX2h3 cywKPiArCQkJICAweDczYywgQklUKDApLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FU RV9EQVRBKGF2c19jbGssICJhdnMiLCBvc2MyNE0sCj4gKwkJCSAgIDB4NzQwLCBCSVQoMzEpLCAw KTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2RiZ19jbGssICJidXMtZGJn IiwgYWhiX2h3cywKPiArCQkJICAweDc4YywgQklUKDApLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5Y SV9DQ1VfR0FURV9IV1MoYnVzX3B3bV9jbGssICJidXMtcHdtIiwgYXBiMF9od3MsCj4gKwkJCSAg MHg3YWMsIEJJVCgwKSwgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19p b21tdV9jbGssICJidXMtaW9tbXUiLCBhaGJfaHdzLAo+ICsJCQkgIDB4N2JjLCBCSVQoMCksIDAp Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKmRyYW1fcGFyZW50c1tdID0gewo+ ICsJJnBsbF9kZHJfY2xrLmNvbW1vbi5odywKPiArCSZwbGxfcGVyaXBoXzJ4X2Nsay5jb21tb24u aHcsCj4gKwkmcGxsX3BlcmlwaF84MDBNX2Nsay5jb21tb24uaHcsCj4gK307Cj4gK3N0YXRpYyBT VU5YSV9DQ1VfTVBfSFdfV0lUSF9NVVhfR0FURShkcmFtX2NsaywgImRyYW0iLCBkcmFtX3BhcmVu dHMsIDB4ODAwLAo+ICsJCQkJICAgICAwLCA1LAkvKiBNICovCj4gKwkJCQkgICAgIDgsIDIsCS8q IFAgKi8KPiArCQkJCSAgICAgMjQsIDMsCS8qIG11eCAqLwo+ICsJCQkJICAgICBCSVQoMzEpLCBD TEtfSVNfQ1JJVElDQUwpOwoKVGhpcyBjbG9jayBuZWVkcyB1cGRhdGUgZmllbGQgdG8gYmUgc2V0 IHRvIGFjdHVhbGx5IGFwcGx5IGNvbmZpZ3VyYXRpb24uIFNvCnNhbWUgY29tbWVudCBhcyBvbiBB NTIzIGNsb2NrIHZlcnNpb24sIHRoaXMgbmVlZHMgbmV3IGZsYWcgdG8gYmUgaW50cm9kdWNlZApm b3Igc3VjaCBjYXNlLgoKPiArCj4gK3N0YXRpYyBDTEtfRklYRURfRkFDVE9SX0hXKG1idXNfY2xr LCAibWJ1cyIsCj4gKwkJCSAgICZkcmFtX2Nsay5jb21tb24uaHcsIDQsIDEsIDApOwo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKm1idXNfaHdzW10gPSB7ICZtYnVzX2Nsay5odyB9 Owo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhtYnVzX2RtYV9jbGssICJtYnVzLWRt YSIsIG1idXNfaHdzLAo+ICsJCQkgIDB4ODA0LCBCSVQoMCksIDApOwo+ICtzdGF0aWMgU1VOWElf Q0NVX0dBVEVfSFdTKG1idXNfdmVfY2xrLCAibWJ1cy12ZSIsIG1idXNfaHdzLAo+ICsJCQkgIDB4 ODA0LCBCSVQoMSksIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKG1idXNfY2VfY2xr LCAibWJ1cy1jZSIsIG1idXNfaHdzLAo+ICsJCQkgIDB4ODA0LCBCSVQoMiksIDApOwo+ICtzdGF0 aWMgU1VOWElfQ0NVX0dBVEVfSFdTKG1idXNfY3NpX2NsaywgIm1idXMtY3NpIiwgbWJ1c19od3Ms Cj4gKwkJCSAgMHg4MDQsIEJJVCg4KSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1Mo bWJ1c19pc3BfY2xrLCAibWJ1cy1pc3AiLCBtYnVzX2h3cywKPiArCQkJICAweDgwNCwgQklUKDkp LCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhtYnVzX2cyZF9jbGssICJtYnVzLWcy ZCIsIG1idXNfaHdzLAo+ICsJCQkgIDB4ODA0LCBCSVQoMTApLCAwKTsKPiArCj4gK3N0YXRpYyBT VU5YSV9DQ1VfR0FURV9IV1MoYnVzX2RyYW1fY2xrLCAiYnVzLWRyYW0iLCBhaGJfaHdzLAo+ICsJ CQkgIDB4ODBjLCBCSVQoMCksIENMS19JU19DUklUSUNBTCk7Cj4gKwo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgbW1jMF9tbWMxX3BhcmVudHNbXSA9IHsKPiArCXsg LmZ3X25hbWUgPSAiaG9zYyIgfSwKPiArCXsgLmh3ID0gJnBsbF9wZXJpcGhfNDAwTV9jbGsuaHcs IH0sCj4gKwl7IC5odyA9ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9LAo+ICt9OwoKSnVzdCBt bWNfcGFyZW50cy4KCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRIX01VWF9HQVRFKG1t YzBfY2xrLCAibW1jMCIsIG1tYzBfbW1jMV9wYXJlbnRzLCAweDgzMCwKPiArCQkJCSAgICAgICAw LCA0LAkvKiBNICovCj4gKwkJCQkgICAgICAgOCwgMiwJLyogUCAqLwo+ICsJCQkJICAgICAgIDI0 LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkg ICAgICAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURSht bWMxX2NsaywgIm1tYzEiLCBtbWMwX21tYzFfcGFyZW50cywgMHg4MzQsCj4gKwkJCQkgICAgICAg MCwgNCwJLyogTSAqLwo+ICsJCQkJICAgICAgIDgsIDIsCS8qIFAgKi8KPiArCQkJCSAgICAgICAy NCwgMywJLyogbXV4ICovCj4gKwkJCQkgICAgICAgQklUKDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJ ICAgICAgIDApOwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgbW1j Ml9wYXJlbnRzW10gPSB7Cj4gKwl7IC5md19uYW1lID0gImhvc2MiIH0sCj4gKwl7IC5odyA9ICZw bGxfcGVyaXBoXzYwME1fY2xrLmh3LCB9LAo+ICsJeyAuaHcgPSAmcGxsX3BlcmlwaF80MDBNX2Ns ay5odywgfSwKPiArfTsKPiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dBVEUo bW1jMl9jbGssICJtbWMyIiwgbW1jMl9wYXJlbnRzLCAweDgzOCwKPiArCQkJCSAgICAgICAwLCA0 LAkvKiBNICovCj4gKwkJCQkgICAgICAgOCwgMiwJLyogUCAqLwo+ICsJCQkJICAgICAgIDI0LCAz LAkvKiBtdXggKi8KPiArCQkJCSAgICAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAg ICAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19tbWMwX2NsaywgImJ1 cy1tbWMwIiwgYWhiX2h3cywKPiArCQkJICAweDg0YywgQklUKDApLCAwKTsKPiArc3RhdGljIFNV TlhJX0NDVV9HQVRFX0hXUyhidXNfbW1jMV9jbGssICJidXMtbW1jMSIsIGFoYl9od3MsCj4gKwkJ CSAgMHg4NGMsIEJJVCgxKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX21t YzJfY2xrLCAiYnVzLW1tYzIiLCBhaGJfaHdzLAo+ICsJCQkgIDB4ODRjLCBCSVQoMiksIDApOwo+ ICsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfdWFydDBfY2xrLCAiYnVzLXVhcnQw IiwgYXBiMV9od3MsCj4gKwkJCSAgMHg5MGMsIEJJVCgwKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9D Q1VfR0FURV9IV1MoYnVzX3VhcnQxX2NsaywgImJ1cy11YXJ0MSIsIGFwYjFfaHdzLAo+ICsJCQkg IDB4OTBjLCBCSVQoMSksIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c191YXJ0 Ml9jbGssICJidXMtdWFydDIiLCBhcGIxX2h3cywKPiArCQkJICAweDkwYywgQklUKDIpLCAwKTsK PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfdWFydDNfY2xrLCAiYnVzLXVhcnQzIiwg YXBiMV9od3MsCj4gKwkJCSAgMHg5MGMsIEJJVCgzKSwgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElf Q0NVX0dBVEVfSFdTKGJ1c19pMmMwX2NsaywgImJ1cy1pMmMwIiwgYXBiMV9od3MsCj4gKwkJCSAg MHg5MWMsIEJJVCgwKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2kyYzFf Y2xrLCAiYnVzLWkyYzEiLCBhcGIxX2h3cywKPiArCQkJICAweDkxYywgQklUKDEpLCAwKTsKPiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfaTJjMl9jbGssICJidXMtaTJjMiIsIGFwYjFf aHdzLAo+ICsJCQkgIDB4OTFjLCBCSVQoMiksIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVf SFdTKGJ1c19pMmMzX2NsaywgImJ1cy1pMmMzIiwgYXBiMV9od3MsCj4gKwkJCSAgMHg5MWMsIEJJ VCgzKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2kyYzRfY2xrLCAiYnVz LWkyYzQiLCBhcGIxX2h3cywKPiArCQkJICAweDkxYywgQklUKDQpLCAwKTsKPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIHNwaV9wYXJlbnRzW10gPSB7Cj4gKwl7IC5m d19uYW1lID0gImhvc2MiIH0sCj4gKwl7IC5odyA9ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9 LAo+ICsJeyAuaHcgPSAmcGxsX3BlcmlwaF8yMDBNX2Nsay5odywgfSwKPiArfTsKPiArCj4gK3N0 YXRpYyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRIX01VWF9HQVRFKHNwaTBfY2xrLCAic3BpMCIsIHNw aV9wYXJlbnRzLCAweDk0MCwKPiArCQkJCSAgICAgICAwLCA0LAkvKiBNICovCj4gKwkJCQkgICAg ICAgOCwgMiwJLyogUCAqLwo+ICsJCQkJICAgICAgIDI0LCAzLAkvKiBtdXggKi8KPiArCQkJCSAg ICAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAgICAgMCk7Cj4gKwo+ICtzdGF0aWMg U1VOWElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURShzcGkxX2NsaywgInNwaTEiLCBzcGlfcGFy ZW50cywgMHg5NDQsCj4gKwkJCQkgICAgICAgMCwgNCwJLyogTSAqLwo+ICsJCQkJICAgICAgIDgs IDIsCS8qIFAgKi8KPiArCQkJCSAgICAgICAyNCwgMywJLyogbXV4ICovCj4gKwkJCQkgICAgICAg QklUKDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJICAgICAgIDApOwo+ICsKPiArc3RhdGljIFNVTlhJ X0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dBVEUoc3BpMl9jbGssICJzcGkyIiwgc3BpX3BhcmVudHMs IDB4OTQ4LAo+ICsJCQkJICAgICAgIDAsIDQsCS8qIE0gKi8KPiArCQkJCSAgICAgICA4LCAyLAkv KiBQICovCj4gKwkJCQkgICAgICAgMjQsIDMsCS8qIG11eCAqLwo+ICsJCQkJICAgICAgIEJJVCgz MSksCS8qIGdhdGUgKi8KPiArCQkJCSAgICAgICAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1Vf TVBfREFUQV9XSVRIX01VWF9HQVRFKHNwaTNfY2xrLCAic3BpMyIsIHNwaV9wYXJlbnRzLCAweDk0 YywKPiArCQkJCSAgICAgICAwLCA0LAkvKiBNICovCj4gKwkJCQkgICAgICAgOCwgMiwJLyogUCAq Lwo+ICsJCQkJICAgICAgIDI0LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICAgICBCSVQoMzEpLAkv KiBnYXRlICovCj4gKwkJCQkgICAgICAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVf SFdTKGJ1c19zcGkwX2NsaywgImJ1cy1zcGkwIiwgYWhiX2h3cywKPiArCQkJICAweDk2YywgQklU KDApLCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfc3BpMV9jbGssICJidXMt c3BpMSIsIGFoYl9od3MsCj4gKwkJCSAgMHg5NmMsIEJJVCgxKSwgMCk7Cj4gK3N0YXRpYyBTVU5Y SV9DQ1VfR0FURV9IV1MoYnVzX3NwaTJfY2xrLCAiYnVzLXNwaTIiLCBhaGJfaHdzLAo+ICsJCQkg IDB4OTZjLCBCSVQoMiksIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19zcGkz X2NsaywgImJ1cy1zcGkzIiwgYWhiX2h3cywKPiArCQkJICAweDk2YywgQklUKDMpLCAwKTsKPiAr Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBzcGlmX3BhcmVudHNb XSA9IHsKPiArCXsgLmZ3X25hbWUgPSAiaG9zYyIgfSwKPiArCXsgLmh3ID0gJnBsbF9wZXJpcGhf NDAwTV9jbGsuaHcsIH0sCj4gKwl7IC5odyA9ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9LAo+ ICt9Owo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9NX0RBVEFfV0lUSF9NVVhfR0FURShzcGlmX2Ns aywgInNwaWYiLCBzcGlmX3BhcmVudHMsIDB4MDk1MCwKPiArCQkJCSAgICAgIDAsIDQsCS8qIE0g Ki8KPiArCQkJCSAgICAgIDI0LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICAgIEJJVCgzMSksCS8q IGdhdGUgKi8KPiArCQkJCSAgICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwoKVGhpcyBpcyBNUCBj bG9jaywgUCBiZWluZyBhdCA5OjguCgo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhi dXNfc3BpZl9jbGssICJidXMtc3BpZiIsIGFoYl9od3MsCj4gKwkJCSAgMHgwOTZjLCBCSVQoNCks IDApOwo+ICsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpwbGxfcGVyaXBoXzE1 ME1faHdzW10gPSB7ICZwbGxfcGVyaXBoXzE1ME1fY2xrLmh3IH07Cj4gK3N0YXRpYyBTVU5YSV9D Q1VfR0FURV9IV1NfV0lUSF9QUkVESVYoZW1hY18yNU1fY2xrLCAiZW1hYy0yNU0iLCBwbGxfcGVy aXBoXzE1ME1faHdzLAo+ICsJCQkJICAgICAgMHg5NzAsIEJJVCgzMSkgfCBCSVQoMzApLCA2LCAw KTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2VtYWNfY2xrLCAiYnVzLWVt YWMiLCBhaGJfaHdzLAo+ICsJCQkgIDB4OTdjLCBCSVQoMCksIDApOwo+ICsKPiArc3RhdGljIFNV TlhJX0NDVV9HQVRFX0hXUyhidXNfZ3BhZGNfY2xrLCAiYnVzLWdwYWRjIiwgYXBiMF9od3MsCj4g KwkJCSAgMHg5ZWMsIEJJVCgwKSwgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdT KGJ1c190aHNfY2xrLCAiYnVzLXRocyIsIGFoYl9od3MsCj4gKwkJCSAgMHg5ZmMsIEJJVCgwKSwg MCk7Cj4gKwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKmF1ZGlvX3BhcmVudHNb XSA9IHsKPiArCSZwbGxfYXVkaW9fMXhfY2xrLmNvbW1vbi5odywKPiArCSZwbGxfYXVkaW9fNHhf Y2xrLmNvbW1vbi5odywKPiArfTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRIX01V WF9HQVRFKGkyczBfY2xrLCAiaTJzMCIsIGF1ZGlvX3BhcmVudHMsIDB4YTEwLAo+ICsJCQkJICAg IDAsIDQsCS8qIE0gKi8KPiArCQkJCSAgICAyNCwgMSwJLyogbXV4ICovCj4gKwkJCQkgICAgQklU KDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ICsKPiAr c3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoaTJzMV9jbGssICJpMnMxIiwgYXVk aW9fcGFyZW50cywgMHhhMTQsCj4gKwkJCQkgICAgMCwgNCwJLyogTSAqLwo+ICsJCQkJICAgIDI0 LCAxLAkvKiBtdXggKi8KPiArCQkJCSAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAg Q0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1 c19pMnMwX2NsaywgImJ1cy1pMnMwIiwgYWhiX2h3cywKPiArCQkJICAweGEyMCwgQklUKDApLCAw KTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2kyczFfY2xrLCAiYnVzLWky czEiLCBhaGJfaHdzLAo+ICsJCQkgIDB4YTIwLCBCSVQoMSksIDApOwo+ICsKPiArc3RhdGljIFNV TlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoZG1pY19jbGssICJkbWljIiwgYXVkaW9fcGFyZW50 cywgMHhhNDAsCj4gKwkJCQkgICAgMCwgNCwJLyogTSAqLwo+ICsJCQkJICAgIDI0LCAxLAkvKiBt dXggKi8KPiArCQkJCSAgICBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAgQ0xLX1NFVF9S QVRFX1BBUkVOVCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19kbWljX2Ns aywgImJ1cy1kbWljIiwgYWhiX2h3cywKPiArCQkJICAweGE0YywgQklUKDApLCAwKTsKPiArCj4g K3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKGF1ZGlvX2NvZGVjX2RhY19jbGss ICJhdWRpby1jb2RlYy1kYWMiLCAKPiArCQkJCSAgICBhdWRpb19wYXJlbnRzLCAweGE1MCwKPiAr CQkJCSAgICAwLCA0LAkvKiBNICovCj4gKwkJCQkgICAgMjQsIDEsCS8qIG11eCAqLwo+ICsJCQkJ ICAgIEJJVCgzMSksCS8qIGdhdGUgKi8KPiArCQkJCSAgICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsK PiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKGF1ZGlvX2NvZGVjX2Fk Y19jbGssICJhdWRpby1jb2RlYy1hZGMiLCAKPiArCQkJCSAgICBhdWRpb19wYXJlbnRzLCAweGE1 NCwKPiArCQkJCSAgICAwLCA0LAkvKiBNICovCj4gKwkJCQkgICAgMjQsIDEsCS8qIG11eCAqLwo+ ICsJCQkJICAgIEJJVCgzMSksCS8qIGdhdGUgKi8KPiArCQkJCSAgICBDTEtfU0VUX1JBVEVfUEFS RU5UKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2F1ZGlvX2NvZGVjX2Ns aywgImJ1cy1hdWRpby1jb2RlYyIsIGFwYjBfaHdzLAo+ICsJCQkgIDB4YTVjLCBCSVQoMCksIDAp Owo+ICsKPiArLyoKPiArICogVGhlcmUgYXJlIE9IQ0kgMTJNIGNsb2NrIHNvdXJjZSBzZWxlY3Rp b24gYml0cyBmb3IgdGhlIFVTQiAyLjAgcG9ydC4KPiArICogV2Ugd2lsbCBmb3JjZSB0aGVtIHRv IDAgKDEyTSBkaXZpZGVkIGZyb20gNDhNKS4KPiArICovCj4gK3N0YXRpYyBDTEtfRklYRURfRkFD VE9SX0ZXX05BTUUob3NjMTJNX2NsaywgIm9zYzEyTSIsICJob3NjIiwgMiwgMSwgMCk7Cj4gKwo+ ICsjZGVmaW5lIFNVTjhJX1Y4NTNfVVNCX0NMS19SRUcJCTB4YTcwCj4gKwo+ICtzdGF0aWMgU1VO WElfQ0NVX0dBVEUodXNiX29oY2lfY2xrLCAidXNiIiwgIm9zYzEyTSIsIDB4MGE3MCwgQklUKDMx KSwgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19vaGNpX2NsaywgImJ1 cy1vaGNpIiwgYWhiX2h3cywgMHhhOGMsIEJJVCgwKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1Vf R0FURV9IV1MoYnVzX2VoY2lfY2xrLCAiYnVzLWVoY2kiLCBhaGJfaHdzLCAweGE4YywgQklUKDQp LCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfb3RnX2NsaywgImJ1cy1vdGci LCBhaGJfaHdzLCAweGE4YywgQklUKDgpLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FU RV9IV1MoYnVzX2Rwc3NfdG9wX2NsaywgImJ1cy1kcHNzLXRvcCIsIGFoYl9od3MsCj4gKwkJCSAg MHhhYmMsIEJJVCgwKSwgMCk7Cj4gKwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFy ZW50X2RhdGEgbWlwaV9kc2lfcGFyZW50c1tdID0gewo+ICsJeyAuZndfbmFtZSA9ICJob3NjIiB9 LAo+ICsJeyAuaHcgPSAmcGxsX3BlcmlwaF8yMDBNX2Nsay5odyB9LAo+ICsJeyAuaHcgPSAmcGxs X3BlcmlwaF8xNTBNX2Nsay5odyB9LAo+ICt9Owo+ICtzdGF0aWMgU1VOWElfQ0NVX01fREFUQV9X SVRIX01VWF9HQVRFKG1pcGlfZHNpX2NsaywgIm1pcGktZHNpIiwgbWlwaV9kc2lfcGFyZW50cywg Cj4gKwkJCQkgICAgICAweGIyNCwKPiArCQkJCSAgICAgIDAsIDQsCS8qIE0gKi8KPiArCQkJCSAg ICAgIDI0LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICAgIEJJVCgzMSksCS8qIGdhdGUgKi8KPiAr CQkJCSAgICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwoKQ0xLX1NFVF9SQVRFX1BBUkVOVCBkb2Vz bid0IGRvIGFueXRoaW5nIGZvciBjb25zdGFudCBjbG9ja3MuCgpCZXN0IHJlZ2FyZHMsCkplcm5l agoKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX21pcGlfZHNpX2NsaywgImJ1 cy1taXBpLWRzaSIsIGFoYl9od3MsCj4gKwkJCSAgMHhiNGMsIEJJVCgwKSwgMCk7Cj4gKwo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKnRjb25fbGNkX3BhcmVudHNbXSA9IHsKPiAr CSZwbGxfdmlkZW9fNHhfY2xrLmNvbW1vbi5odywKPiArCSZwbGxfcGVyaXBoXzJ4X2Nsay5jb21t b24uaHcsCj4gKwkmcGxsX2NzaV80eF9jbGsuY29tbW9uLmh3LAo+ICt9Owo+ICtzdGF0aWMgU1VO WElfQ0NVX01QX0hXX1dJVEhfTVVYX0dBVEUodGNvbl9sY2RfY2xrLCAidGNvbi1sY2QiLCB0Y29u X2xjZF9wYXJlbnRzLCAKPiArCQkJCSAgICAgMHhiNjAsCj4gKwkJCQkgICAgIDAsIDQsCS8qIE0g Ki8KPiArCQkJCSAgICAgOCwgMiwJLyogUCAqLwo+ICsJCQkJICAgICAyNCwgMywJLyogbXV4ICov Cj4gKwkJCQkgICAgIEJJVCgzMSksCS8qIGdhdGUgKi8KPiArCQkJCSAgICAgQ0xLX1NFVF9SQVRF X1BBUkVOVCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c190Y29uX2xjZF9j bGssICJidXMtdGNvbi1sY2QiLCBhaGJfaHdzLAo+ICsJCQkgIDB4YjdjLCBCSVQoMCksIDApOwo+ ICsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpjc2lfdG9wX3BhcmVudHNbXSA9 IHsKPiArCSZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LAo+ICsJJnBsbF9wZXJpcGhfNDAwTV9jbGsu aHcsCj4gKwkmcGxsX3ZpZGVvXzR4X2Nsay5jb21tb24uaHcsCj4gKwkmcGxsX2NzaV80eF9jbGsu Y29tbW9uLmh3LAo+ICt9Owo+ICtzdGF0aWMgU1VOWElfQ0NVX01fSFdfV0lUSF9NVVhfR0FURShj c2lfdG9wX2NsaywgImNzaS10b3AiLCBjc2lfdG9wX3BhcmVudHMsIDB4YzA0LAo+ICsJCQkJICAg IDAsIDUsCS8qIE0gKi8KPiArCQkJCSAgICAyNCwgMywJLyogbXV4ICovCj4gKwkJCQkgICAgQklU KDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJICAgIDApOwo+ICsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY2xrX3BhcmVudF9kYXRhIGNzaV9tY2xrX3BhcmVudHNbXSA9IHsKPiArCXsgLmZ3X25h bWUgPSAiaG9zYyIgfSwKPiArCXsgLmh3ID0gJnBsbF9jc2lfNHhfY2xrLmNvbW1vbi5odyB9LAo+ ICsJeyAuaHcgPSAmcGxsX3ZpZGVvXzR4X2Nsay5jb21tb24uaHcgfSwKPiArCXsgLmh3ID0gJnBs bF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5odyB9LAo+ICt9Owo+ICtzdGF0aWMgU1VOWElfQ0NVX01f REFUQV9XSVRIX01VWF9HQVRFKGNzaV9tY2xrMF9jbGssICJjc2ktbWNsazAiLCBjc2lfbWNsa19w YXJlbnRzLCAKPiArCQkJCSAgICAgIDB4YzA4LAo+ICsJCQkJICAgICAgMCwgNSwJLyogTSAqLwo+ ICsJCQkJICAgICAgMjQsIDMsCS8qIG11eCAqLwo+ICsJCQkJICAgICAgQklUKDMxKSwJLyogZ2F0 ZSAqLwo+ICsJCQkJICAgICAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX01fREFUQV9XSVRI X01VWF9HQVRFKGNzaV9tY2xrMV9jbGssICJjc2ktbWNsazEiLCBjc2lfbWNsa19wYXJlbnRzLCAK PiArCQkJCSAgICAgIDB4YzBjLAo+ICsJCQkJICAgICAgMCwgNSwJLyogTSAqLwo+ICsJCQkJICAg ICAgMjQsIDMsCS8qIG11eCAqLwo+ICsJCQkJICAgICAgQklUKDMxKSwJLyogZ2F0ZSAqLwo+ICsJ CQkJICAgICAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX01fREFUQV9XSVRIX01VWF9HQVRF KGNzaV9tY2xrMl9jbGssICJjc2ktbWNsazIiLCBjc2lfbWNsa19wYXJlbnRzLCAKPiArCQkJCSAg ICAgIDB4YzEwLAo+ICsJCQkJICAgICAgMCwgNSwJLyogTSAqLwo+ICsJCQkJICAgICAgMjQsIDMs CS8qIG11eCAqLwo+ICsJCQkJICAgICAgQklUKDMxKSwJLyogZ2F0ZSAqLwo+ICsJCQkJICAgICAg MCk7CgpBbGwgQ1NJIG1jbGtzIHNob3VsZCBiZSBNUCB0eXBlLgoKPiArCj4gK3N0YXRpYyBTVU5Y SV9DQ1VfR0FURV9IV1MoYnVzX2NzaV9jbGssICJidXMtY3NpIiwgYWhiX2h3cywKPiArCQkJICAw eGMyYywgQklUKDApLCAwKTsKPiArCj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1 c193aWVnYW5kX2NsaywgImJ1cy13aWVnYW5kIiwgYWhiX2h3cywKPiArCQkJICAweGM3YywgQklU KDApLCAwKTsKPiArCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBy aXNjdl9wYXJlbnRzW10gPSB7Cj4gKwl7IC5md19uYW1lID0gImhvc2MiIH0sCj4gKwl7IC5md19u YW1lID0gImxvc2MiIH0sCj4gKwl7IC5md19uYW1lID0gImlvc2MiIH0sCj4gKwl7IC5odyA9ICZw bGxfcGVyaXBoXzYwME1fY2xrLmh3IH0sCj4gKwl7IC5odyA9ICZwbGxfcGVyaXBoXzQ4ME1fY2xr LmNvbW1vbi5odyB9LAo+ICsJeyAuaHcgPSAmcGxsX2NwdV9jbGsuY29tbW9uLmh3IH0sCj4gK307 Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9EQVRBX1dJVEhfTVVYKHJpc2N2X2NsaywgInJpc2N2LWNw dSIsIHJpc2N2X3BhcmVudHMsIDB4ZDAwLAo+ICsJCQkJIDAsIDUsCS8qIE0gKi8KPiArCQkJCSAy NCwgMywJLyogbXV4ICovCj4gKwkJCQkgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gKwo+ICsvKiBU aGUgcmlzY3YtYXhpIGNsayBtdXN0IGJlIGRpdmlkZWQgYnkgYXQgbGVhc3QgMi4gKi8KPiArc3Rh dGljIHN0cnVjdCBjbGtfZGl2X3RhYmxlIHJpc2N2X2F4aV90YWJsZVtdID0gewo+ICsJeyAudmFs ID0gMSwgLmRpdiA9IDIgfSwKPiArCXsgLnZhbCA9IDIsIC5kaXYgPSAzIH0sCj4gKwl7IC52YWwg PSAzLCAuZGl2ID0gNCB9LAo+ICsJeyAvKiBTZW50aW5lbCAqLyB9Cj4gK307Cj4gK3N0YXRpYyBT VU5YSV9DQ1VfRElWX1RBQkxFX0hXKHJpc2N2X2F4aV9jbGssICJyaXNjdi1heGkiLCAmcmlzY3Zf Y2xrLmNvbW1vbi5odywKPiArCQkJICAgICAgMHhkMDAsIDgsIDIsIHJpc2N2X2F4aV90YWJsZSwg MCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTX1dJVEhfS0VZKHJpc2N2X2NvcmVf Z2F0ZSwgInJpc2N2LWNvcmUtZ2F0ZSIsIGFoYl9od3MsCj4gKwkJCQkgICAweGQwNCwgQklUKDAp LCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MocmlzY3ZfY2ZnX2dhdGUsICJy aXNjdi1jZmctZ2F0ZSIsIGFoYl9od3MsCj4gKwkJCSAgMHhkMGMsIEJJVCgwKSwgMCk7Cj4gKwo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKnBsbF9wZXJpcGhfMTYwTV9od3NbXSA9 IHsKPiArCSZwbGxfcGVyaXBoXzE2ME1fY2xrLmh3LAo+ICt9Owo+ICsKPiArc3RhdGljIFNVTlhJ X0NDVV9HQVRFX0RBVEEoZmFub3V0XzI0TV9jbGssICJmYW5vdXQtMjRNIiwgb3NjMjRNLAo+ICsJ CQkgICAweGYzMCwgQklUKDApLCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0RBVEFfV0lU SF9QUkVESVYoZmFub3V0XzEyTV9jbGssICJmYW5vdXQtMTJNIiwgb3NjMjRNLAo+ICsJCQkJICAg ICAgIDB4ZjMwLCBCSVQoMSksIDIsIDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTX1dJ VEhfUFJFRElWKGZhbm91dF8xNk1fY2xrLCAiZmFub3V0LTE2TSIsIHBsbF9wZXJpcGhfMTYwTV9o d3MsCj4gKwkJCQkgICAgICAweGYzMCwgQklUKDIpLCAxMCwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9D Q1VfR0FURV9IV1NfV0lUSF9QUkVESVYoZmFub3V0XzI1TV9jbGssICJmYW5vdXQtMjVNIiwgcGxs X3BlcmlwaF8xNTBNX2h3cywKPiArCQkJCSAgICAgIDB4ZjMwLCBCSVQoMyksIDYsIDApOwo+ICsK PiArCj4gKy8qIFRoaXMgY2xvY2sgaGFzIGEgc2Vjb25kIGRpdmlkZXIgdGhhdCBpcyBub3QgbW9k ZWxsZWQgYW5kIGZvcmNlZCB0byAwLiAqLwo+ICsjZGVmaW5lIFNVTjhJX1Y4NTNfRkFOT1VUXzI3 TV9SRUcJMHhmMzQKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKmZhbm91dF8yN01fcGFy ZW50c1tdID0gewo+ICsJJnBsbF92aWRlb18xeF9jbGsuaHcsCj4gKwkmcGxsX2NzaV9jbGsuaHcs Cj4gKwkmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywKPiArfTsKPiArc3RhdGljIFNVTlhJX0NDVV9N X0hXX1dJVEhfTVVYX0dBVEUoZmFub3V0XzI3TV9jbGssICJmYW5vdXQtMjdNIiwgCj4gKwkJCQkg ICAgZmFub3V0XzI3TV9wYXJlbnRzLCAweGYzNCwKPiArCQkJCSAgICAwLCA1LAkvKiBNICovCj4g KwkJCQkgICAgMjQsIDIsCS8qIG11eCAqLwo+ICsJCQkJICAgIEJJVCgzMSksCS8qIGdhdGUgKi8K PiArCQkJCSAgICAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9NX0hXU19XSVRIX0dBVEUoZmFub3V0 X3BjbGtfY2xrLCAiZmFub3V0LXBjbGsiLCBhcGIwX2h3cywgMHhmMzgsCj4gKwkJCQkgMCwgNSwJ CS8qIE0gKi8KPiArCQkJCSBCSVQoMzEpLAkvKiBnYXRlICovCj4gKwkJCQkgMCk7Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBmYW5vdXRfcGFyZW50c1tdID0gewo+ ICsJeyAuZndfbmFtZSA9ICJsb3NjIiB9LAo+ICsJeyAuaHcgPSAmZmFub3V0XzEyTV9jbGsuY29t bW9uLmh3IH0sCj4gKwl7IC5odyA9ICZmYW5vdXRfMTZNX2Nsay5jb21tb24uaHcgfSwKPiArCXsg Lmh3ID0gJmZhbm91dF8yNE1fY2xrLmNvbW1vbi5odyB9LAo+ICsJeyAuaHcgPSAmZmFub3V0XzI1 TV9jbGsuY29tbW9uLmh3IH0sCj4gKwl7IC5odyA9ICZmYW5vdXRfMjdNX2Nsay5jb21tb24uaHcg fSwKPiArCXsgLmh3ID0gJmZhbm91dF9wY2xrX2Nsay5jb21tb24uaHcgfSwKPiArfTsKPiArCj4g K3N0YXRpYyBTVU5YSV9DQ1VfTVVYX0RBVEFfV0lUSF9HQVRFKGZhbm91dDBfY2xrLCAiZmFub3V0 MCIsIGZhbm91dF9wYXJlbnRzLCAweGYzYywKPiArCQkJCSAgICAwLCAzLAkvKiBtdXggKi8KPiAr CQkJCSAgICBCSVQoMjEpLAkvKiBnYXRlICovCj4gKwkJCQkgICAgMCk7Cj4gK3N0YXRpYyBTVU5Y SV9DQ1VfTVVYX0RBVEFfV0lUSF9HQVRFKGZhbm91dDFfY2xrLCAiZmFub3V0MSIsIGZhbm91dF9w YXJlbnRzLCAweGYzYywKPiArCQkJCSAgICAzLCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICBCSVQo MjIpLAkvKiBnYXRlICovCj4gKwkJCQkgICAgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVVYX0RB VEFfV0lUSF9HQVRFKGZhbm91dDJfY2xrLCAiZmFub3V0MiIsIGZhbm91dF9wYXJlbnRzLCAweGYz YywKPiArCQkJCSAgICA2LCAzLAkvKiBtdXggKi8KPiArCQkJCSAgICBCSVQoMjMpLAkvKiBnYXRl ICovCj4gKwkJCQkgICAgMCk7Cj4gKwo+ICsKPiArc3RhdGljIHN0cnVjdCBjY3VfY29tbW9uICpz dW44aV92ODUzX2NjdV9jbGtzW10gPSB7Cj4gKwkmcGxsX2NwdV9jbGsuY29tbW9uLAo+ICsJJnBs bF9kZHJfY2xrLmNvbW1vbiwKPiArCSZwbGxfcGVyaXBoXzR4X2Nsay5jb21tb24sCj4gKwkmcGxs X3BlcmlwaF8yeF9jbGsuY29tbW9uLAo+ICsJJnBsbF9wZXJpcGhfODAwTV9jbGsuY29tbW9uLAo+ ICsJJnBsbF9wZXJpcGhfNDgwTV9jbGsuY29tbW9uLAo+ICsJJnBsbF92aWRlb180eF9jbGsuY29t bW9uLAo+ICsJJnBsbF9jc2lfNHhfY2xrLmNvbW1vbiwKPiArCSZwbGxfYXVkaW9fZGl2Ml9jbGsu Y29tbW9uLAo+ICsJJnBsbF9hdWRpb19kaXY1X2Nsay5jb21tb24sCj4gKwkmcGxsX2F1ZGlvXzR4 X2Nsay5jb21tb24sCj4gKwkmcGxsX2F1ZGlvXzF4X2Nsay5jb21tb24sCj4gKwkmcGxsX25wdV80 eF9jbGsuY29tbW9uLAo+ICsJJmNwdV9jbGsuY29tbW9uLAo+ICsJJmNwdV9heGlfY2xrLmNvbW1v biwKPiArCSZjcHVfYXBiX2Nsay5jb21tb24sCj4gKwkmYWhiX2Nsay5jb21tb24sCj4gKwkmYXBi MF9jbGsuY29tbW9uLAo+ICsJJmFwYjFfY2xrLmNvbW1vbiwKPiArCSZkZV9jbGsuY29tbW9uLAo+ ICsJJmJ1c19kZV9jbGsuY29tbW9uLAo+ICsJJmcyZF9jbGsuY29tbW9uLAo+ICsJJmJ1c19nMmRf Y2xrLmNvbW1vbiwKPiArCSZjZV9jbGsuY29tbW9uLAo+ICsJJmJ1c19jZV9jbGsuY29tbW9uLAo+ ICsJJnZlX2Nsay5jb21tb24sCj4gKwkmYnVzX3ZlX2Nsay5jb21tb24sCj4gKwkmbnB1X2Nsay5j b21tb24sCj4gKwkmYnVzX25wdV9jbGsuY29tbW9uLAo+ICsJJmJ1c19kbWFfY2xrLmNvbW1vbiwK PiArCSZidXNfbXNnYm94MF9jbGsuY29tbW9uLAo+ICsJJmJ1c19tc2dib3gxX2Nsay5jb21tb24s Cj4gKwkmYnVzX3NwaW5sb2NrX2Nsay5jb21tb24sCj4gKwkmYnVzX2hzdGltZXJfY2xrLmNvbW1v biwKPiArCSZhdnNfY2xrLmNvbW1vbiwKPiArCSZidXNfZGJnX2Nsay5jb21tb24sCj4gKwkmYnVz X3B3bV9jbGsuY29tbW9uLAo+ICsJJmJ1c19pb21tdV9jbGsuY29tbW9uLAo+ICsJJmRyYW1fY2xr LmNvbW1vbiwKPiArCSZtYnVzX2RtYV9jbGsuY29tbW9uLAo+ICsJJm1idXNfdmVfY2xrLmNvbW1v biwKPiArCSZtYnVzX2NlX2Nsay5jb21tb24sCj4gKwkmbWJ1c19jc2lfY2xrLmNvbW1vbiwKPiAr CSZtYnVzX2lzcF9jbGsuY29tbW9uLAo+ICsJJm1idXNfZzJkX2Nsay5jb21tb24sCj4gKwkmYnVz X2RyYW1fY2xrLmNvbW1vbiwKPiArCSZtbWMwX2Nsay5jb21tb24sCj4gKwkmbW1jMV9jbGsuY29t bW9uLAo+ICsJJm1tYzJfY2xrLmNvbW1vbiwKPiArCSZidXNfbW1jMF9jbGsuY29tbW9uLAo+ICsJ JmJ1c19tbWMxX2Nsay5jb21tb24sCj4gKwkmYnVzX21tYzJfY2xrLmNvbW1vbiwKPiArCSZidXNf dWFydDBfY2xrLmNvbW1vbiwKPiArCSZidXNfdWFydDFfY2xrLmNvbW1vbiwKPiArCSZidXNfdWFy dDJfY2xrLmNvbW1vbiwKPiArCSZidXNfdWFydDNfY2xrLmNvbW1vbiwKPiArCSZidXNfaTJjMF9j bGsuY29tbW9uLAo+ICsJJmJ1c19pMmMxX2Nsay5jb21tb24sCj4gKwkmYnVzX2kyYzJfY2xrLmNv bW1vbiwKPiArCSZidXNfaTJjM19jbGsuY29tbW9uLAo+ICsJJmJ1c19pMmM0X2Nsay5jb21tb24s Cj4gKwkmc3BpMF9jbGsuY29tbW9uLAo+ICsJJnNwaTFfY2xrLmNvbW1vbiwKPiArCSZzcGkyX2Ns ay5jb21tb24sCj4gKwkmc3BpM19jbGsuY29tbW9uLAo+ICsJJmJ1c19zcGkwX2Nsay5jb21tb24s Cj4gKwkmYnVzX3NwaTFfY2xrLmNvbW1vbiwKPiArCSZidXNfc3BpMl9jbGsuY29tbW9uLAo+ICsJ JmJ1c19zcGkzX2Nsay5jb21tb24sCj4gKwkmc3BpZl9jbGsuY29tbW9uLAo+ICsJJmJ1c19zcGlm X2Nsay5jb21tb24sCj4gKwkmZW1hY18yNU1fY2xrLmNvbW1vbiwKPiArCSZidXNfZW1hY19jbGsu Y29tbW9uLAo+ICsJJmJ1c19ncGFkY19jbGsuY29tbW9uLAo+ICsJJmJ1c190aHNfY2xrLmNvbW1v biwKPiArCSZ1c2Jfb2hjaV9jbGsuY29tbW9uLAo+ICsJJmJ1c19vaGNpX2Nsay5jb21tb24sCj4g KwkmYnVzX2VoY2lfY2xrLmNvbW1vbiwKPiArCSZidXNfb3RnX2Nsay5jb21tb24sCj4gKwkmaTJz MF9jbGsuY29tbW9uLAo+ICsJJmkyczFfY2xrLmNvbW1vbiwKPiArCSZidXNfaTJzMF9jbGsuY29t bW9uLAo+ICsJJmJ1c19pMnMxX2Nsay5jb21tb24sCj4gKwkmZG1pY19jbGsuY29tbW9uLAo+ICsJ JmJ1c19kbWljX2Nsay5jb21tb24sCj4gKwkmYXVkaW9fY29kZWNfZGFjX2Nsay5jb21tb24sCj4g KwkmYXVkaW9fY29kZWNfYWRjX2Nsay5jb21tb24sCj4gKwkmYnVzX2F1ZGlvX2NvZGVjX2Nsay5j b21tb24sCj4gKwkmYnVzX2Rwc3NfdG9wX2Nsay5jb21tb24sCj4gKwkmbWlwaV9kc2lfY2xrLmNv bW1vbiwKPiArCSZidXNfbWlwaV9kc2lfY2xrLmNvbW1vbiwKPiArCSZ0Y29uX2xjZF9jbGsuY29t bW9uLAo+ICsJJmJ1c190Y29uX2xjZF9jbGsuY29tbW9uLAo+ICsJJmNzaV90b3BfY2xrLmNvbW1v biwKPiArCSZjc2lfbWNsazBfY2xrLmNvbW1vbiwKPiArCSZjc2lfbWNsazFfY2xrLmNvbW1vbiwK PiArCSZjc2lfbWNsazJfY2xrLmNvbW1vbiwKPiArCSZidXNfY3NpX2Nsay5jb21tb24sCj4gKwkm YnVzX3dpZWdhbmRfY2xrLmNvbW1vbiwKPiArCSZyaXNjdl9jbGsuY29tbW9uLAo+ICsJJnJpc2N2 X2F4aV9jbGsuY29tbW9uLAo+ICsJJnJpc2N2X2NvcmVfZ2F0ZS5jb21tb24sCj4gKwkmcmlzY3Zf Y2ZnX2dhdGUuY29tbW9uLAo+ICsJJmZhbm91dF8yNE1fY2xrLmNvbW1vbiwKPiArCSZmYW5vdXRf MTJNX2Nsay5jb21tb24sCj4gKwkmZmFub3V0XzE2TV9jbGsuY29tbW9uLAo+ICsJJmZhbm91dF8y NU1fY2xrLmNvbW1vbiwKPiArCSZmYW5vdXRfMjdNX2Nsay5jb21tb24sCj4gKwkmZmFub3V0X3Bj bGtfY2xrLmNvbW1vbiwKPiArCSZmYW5vdXQwX2Nsay5jb21tb24sCj4gKwkmZmFub3V0MV9jbGsu Y29tbW9uLAo+ICsJJmZhbm91dDJfY2xrLmNvbW1vbiwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSBzdW44aV92ODUzX2h3X2Nsa3MgPSB7Cj4gKwkubnVtCT0g Q0xLX05VTUJFUiwKPiArCS5od3MJPSB7Cj4gKwkJW0NMS19PU0MxMk1dICAgICAgICAgICAgPSAm b3NjMTJNX2Nsay5odywKPiArCQlbQ0xLX1BMTF9DUFVdCQk9ICZwbGxfY3B1X2Nsay5jb21tb24u aHcsCj4gKwkJW0NMS19QTExfRERSXQkJPSAmcGxsX2Rkcl9jbGsuY29tbW9uLmh3LAo+ICsJCVtD TEtfUExMX1BFUklQSF80WF0JPSAmcGxsX3BlcmlwaF80eF9jbGsuY29tbW9uLmh3LAo+ICsJCVtD TEtfUExMX1BFUklQSF8yWF0JPSAmcGxsX3BlcmlwaF8yeF9jbGsuY29tbW9uLmh3LAo+ICsJCVtD TEtfUExMX1BFUklQSF84MDBNXQk9ICZwbGxfcGVyaXBoXzgwME1fY2xrLmNvbW1vbi5odywKPiAr CQlbQ0xLX1BMTF9QRVJJUEhfNDgwTV0JPSAmcGxsX3BlcmlwaF80ODBNX2Nsay5jb21tb24uaHcs Cj4gKwkJW0NMS19QTExfUEVSSVBIXzYwME1dCT0gJnBsbF9wZXJpcGhfNjAwTV9jbGsuaHcsCj4g KwkJW0NMS19QTExfUEVSSVBIXzQwME1dCT0gJnBsbF9wZXJpcGhfNDAwTV9jbGsuaHcsCj4gKwkJ W0NMS19QTExfUEVSSVBIXzMwME1dCT0gJnBsbF9wZXJpcGhfMzAwTV9jbGsuaHcsCj4gKwkJW0NM S19QTExfUEVSSVBIXzIwME1dCT0gJnBsbF9wZXJpcGhfMjAwTV9jbGsuaHcsCj4gKwkJW0NMS19Q TExfUEVSSVBIXzE2ME1dCT0gJnBsbF9wZXJpcGhfMTYwTV9jbGsuaHcsCj4gKwkJW0NMS19QTExf UEVSSVBIXzE1ME1dCT0gJnBsbF9wZXJpcGhfMTUwTV9jbGsuaHcsCj4gKwkJW0NMS19QTExfVklE RU9fNFhdCT0gJnBsbF92aWRlb180eF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfUExMX1ZJREVP XzJYXQk9ICZwbGxfdmlkZW9fMnhfY2xrLmh3LAo+ICsJCVtDTEtfUExMX1ZJREVPXzFYXQk9ICZw bGxfdmlkZW9fMXhfY2xrLmh3LAo+ICsJCVtDTEtfUExMX0NTSV80WF0JPSAmcGxsX2NzaV80eF9j bGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfUExMX0FVRElPX0RJVjJdCT0gJnBsbF9hdWRpb19kaXYy X2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19QTExfQVVESU9fRElWNV0JPSAmcGxsX2F1ZGlvX2Rp djVfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX1BMTF9BVURJT180WF0JPSAmcGxsX2F1ZGlvXzR4 X2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19QTExfQVVESU9fMVhdCT0gJnBsbF9hdWRpb18xeF9j bGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfUExMX05QVV80WF0JPSAmcGxsX25wdV80eF9jbGsuY29t bW9uLmh3LAo+ICsJCVtDTEtfQ1BVXQkJPSAmY3B1X2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19D UFVfQVhJXQkJPSAmY3B1X2F4aV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQ1BVX0FQQl0JCT0g JmNwdV9hcGJfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0FIQl0JCT0gJmFoYl9jbGsuY29tbW9u Lmh3LAo+ICsJCVtDTEtfQVBCMF0JCT0gJmFwYjBfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0FQ QjFdCQk9ICZhcGIxX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19NQlVTXQkJPSAmbWJ1c19jbGsu aHcsCj4gKwkJW0NMS19ERV0JCT0gJmRlX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfREVd CQk9ICZidXNfZGVfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0cyRF0JCT0gJmcyZF9jbGsuY29t bW9uLmh3LAo+ICsJCVtDTEtfQlVTX0cyRF0JCT0gJmJ1c19nMmRfY2xrLmNvbW1vbi5odywKPiAr CQlbQ0xLX0NFXQkJPSAmY2VfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19DRV0JCT0gJmJ1 c19jZV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfVkVdCQk9ICZ2ZV9jbGsuY29tbW9uLmh3LAo+ ICsJCVtDTEtfQlVTX1ZFXQkJPSAmYnVzX3ZlX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19OUFVd CQk9ICZucHVfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19OUFVdCQk9ICZidXNfbnB1X2Ns ay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfRE1BXQkJPSAmYnVzX2RtYV9jbGsuY29tbW9uLmh3 LAo+ICsJCVtDTEtfQlVTX01TR0JPWDBdCT0gJmJ1c19tc2dib3gwX2Nsay5jb21tb24uaHcsCj4g KwkJW0NMS19CVVNfTVNHQk9YMV0JPSAmYnVzX21zZ2JveDFfY2xrLmNvbW1vbi5odywKPiArCQlb Q0xLX0JVU19TUElOTE9DS10JPSAmYnVzX3NwaW5sb2NrX2Nsay5jb21tb24uaHcsCj4gKwkJW0NM S19CVVNfSFNUSU1FUl0JPSAmYnVzX2hzdGltZXJfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0FW U10JCT0gJmF2c19jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQlVTX0RCR10JCT0gJmJ1c19kYmdf Y2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19QV01dCQk9ICZidXNfcHdtX2Nsay5jb21tb24u aHcsCj4gKwkJW0NMS19CVVNfSU9NTVVdCQk9ICZidXNfaW9tbXVfY2xrLmNvbW1vbi5odywKPiAr CQlbQ0xLX0RSQU1dCQk9ICZkcmFtX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19NQlVTX0RNQV0J CT0gJm1idXNfZG1hX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19NQlVTX1ZFXQkJPSAmbWJ1c192 ZV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfTUJVU19DRV0JCT0gJm1idXNfY2VfY2xrLmNvbW1v bi5odywKPiArCQlbQ0xLX01CVVNfQ1NJXQkJPSAmbWJ1c19jc2lfY2xrLmNvbW1vbi5odywKPiAr CQlbQ0xLX01CVVNfSVNQXQkJPSAmbWJ1c19pc3BfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX01C VVNfRzJEXQkJPSAmbWJ1c19nMmRfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19EUkFNXQkJ PSAmYnVzX2RyYW1fY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX01NQzBdCQk9ICZtbWMwX2Nsay5j b21tb24uaHcsCj4gKwkJW0NMS19NTUMxXQkJPSAmbW1jMV9jbGsuY29tbW9uLmh3LAo+ICsJCVtD TEtfTU1DMl0JCT0gJm1tYzJfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19NTUMwXQkJPSAm YnVzX21tYzBfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19NTUMxXQkJPSAmYnVzX21tYzFf Y2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19NTUMyXQkJPSAmYnVzX21tYzJfY2xrLmNvbW1v bi5odywKPiArCQlbQ0xLX0JVU19VQVJUMF0JCT0gJmJ1c191YXJ0MF9jbGsuY29tbW9uLmh3LAo+ ICsJCVtDTEtfQlVTX1VBUlQxXQkJPSAmYnVzX3VhcnQxX2Nsay5jb21tb24uaHcsCj4gKwkJW0NM S19CVVNfVUFSVDJdCQk9ICZidXNfdWFydDJfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19V QVJUM10JCT0gJmJ1c191YXJ0M19jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQlVTX0kyQzBdCQk9 ICZidXNfaTJjMF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQlVTX0kyQzFdCQk9ICZidXNfaTJj MV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQlVTX0kyQzJdCQk9ICZidXNfaTJjMl9jbGsuY29t bW9uLmh3LAo+ICsJCVtDTEtfQlVTX0kyQzNdCQk9ICZidXNfaTJjM19jbGsuY29tbW9uLmh3LAo+ ICsJCVtDTEtfQlVTX0kyQzRdCQk9ICZidXNfaTJjNF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtf U1BJMF0JCT0gJnNwaTBfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX1NQSTFdCQk9ICZzcGkxX2Ns ay5jb21tb24uaHcsCj4gKwkJW0NMS19TUEkyXQkJPSAmc3BpMl9jbGsuY29tbW9uLmh3LAo+ICsJ CVtDTEtfU1BJM10JCT0gJnNwaTNfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19TUEkwXQkJ PSAmYnVzX3NwaTBfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19TUEkxXQkJPSAmYnVzX3Nw aTFfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19TUEkyXQkJPSAmYnVzX3NwaTJfY2xrLmNv bW1vbi5odywKPiArCQlbQ0xLX0JVU19TUEkzXQkJPSAmYnVzX3NwaTNfY2xrLmNvbW1vbi5odywK PiArCQlbQ0xLX1NQSUZdCQk9ICZzcGlmX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfU1BJ Rl0JCT0gJmJ1c19zcGlmX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19FTUFDXzI1TV0JCT0gJmVt YWNfMjVNX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfRU1BQ10JCT0gJmJ1c19lbWFjX2Ns ay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfR1BBRENdCQk9ICZidXNfZ3BhZGNfY2xrLmNvbW1v bi5odywKPiArCQlbQ0xLX0JVU19USFNdCQk9ICZidXNfdGhzX2Nsay5jb21tb24uaHcsCj4gKwkJ W0NMS19JMlMwXQkJPSAmaTJzMF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfSTJTMV0JCT0gJmky czFfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19JMlMwXQkJPSAmYnVzX2kyczBfY2xrLmNv bW1vbi5odywKPiArCQlbQ0xLX0JVU19JMlMxXQkJPSAmYnVzX2kyczFfY2xrLmNvbW1vbi5odywK PiArCQlbQ0xLX0RNSUNdCQk9ICZkbWljX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfRE1J Q10JCT0gJmJ1c19kbWljX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19BVURJT19DT0RFQ19EQUNd CT0gJmF1ZGlvX2NvZGVjX2RhY19jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQVVESU9fQ09ERUNf QURDXQk9ICZhdWRpb19jb2RlY19hZGNfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0JVU19BVURJ T19DT0RFQ10JPSAmYnVzX2F1ZGlvX2NvZGVjX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19VU0Jf T0hDSV0JCT0gJnVzYl9vaGNpX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfT0hDSV0JCT0g JmJ1c19vaGNpX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfRUhDSV0JCT0gJmJ1c19laGNp X2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfT1RHXQkJPSAmYnVzX290Z19jbGsuY29tbW9u Lmh3LAo+ICsJCVtDTEtfQlVTX0RQU1NfVE9QXQk9ICZidXNfZHBzc190b3BfY2xrLmNvbW1vbi5o dywKPiArCQlbQ0xLX01JUElfRFNJXQkJPSAmbWlwaV9kc2lfY2xrLmNvbW1vbi5odywKPiArCQlb Q0xLX0JVU19NSVBJX0RTSV0JPSAmYnVzX21pcGlfZHNpX2Nsay5jb21tb24uaHcsCj4gKwkJW0NM S19UQ09OX0xDRF0JCT0gJnRjb25fbGNkX2Nsay5jb21tb24uaHcsCj4gKwkJW0NMS19CVVNfVENP Tl9MQ0RdCT0gJmJ1c190Y29uX2xjZF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQ1NJX1RPUF0J CT0gJmNzaV90b3BfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0NTSV9NQ0xLMF0JCT0gJmNzaV9t Y2xrMF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfQ1NJX01DTEsxXQkJPSAmY3NpX21jbGsxX2Ns ay5jb21tb24uaHcsCj4gKwkJW0NMS19DU0lfTUNMSzJdCQk9ICZjc2lfbWNsazJfY2xrLmNvbW1v bi5odywKPiArCQlbQ0xLX0JVU19DU0ldCQk9ICZidXNfY3NpX2Nsay5jb21tb24uaHcsCj4gKwkJ W0NMS19CVVNfV0lFR0FORF0JPSAmYnVzX3dpZWdhbmRfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xL X1JJU0NWXQkJPSAmcmlzY3ZfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX1JJU0NWX0FYSV0JCT0g JnJpc2N2X2F4aV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfUklTQ1ZfQ09SRV9HQVRFXSAgID0g JnJpc2N2X2NvcmVfZ2F0ZS5jb21tb24uaHcsCj4gKwkJW0NMS19SSVNDVl9DRkdfR0FURV0gICAg PSAmcmlzY3ZfY2ZnX2dhdGUuY29tbW9uLmh3LAo+ICsJCVtDTEtfRkFOT1VUXzI0TV0JPSAmZmFu b3V0XzI0TV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfRkFOT1VUXzE2TV0JPSAmZmFub3V0XzE2 TV9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfRkFOT1VUXzEyTV0JPSAmZmFub3V0XzEyTV9jbGsu Y29tbW9uLmh3LAo+ICsJCVtDTEtfRkFOT1VUXzI1TV0JPSAmZmFub3V0XzI1TV9jbGsuY29tbW9u Lmh3LAo+ICsJCVtDTEtfRkFOT1VUXzI3TV0JPSAmZmFub3V0XzI3TV9jbGsuY29tbW9uLmh3LAo+ ICsJCVtDTEtfRkFOT1VUX1BDTEtdCT0gJmZhbm91dF9wY2xrX2Nsay5jb21tb24uaHcsCj4gKwkJ W0NMS19GQU5PVVQwXQkJPSAmZmFub3V0MF9jbGsuY29tbW9uLmh3LAo+ICsJCVtDTEtfRkFOT1VU MV0JCT0gJmZhbm91dDFfY2xrLmNvbW1vbi5odywKPiArCQlbQ0xLX0ZBTk9VVDJdCQk9ICZmYW5v dXQyX2Nsay5jb21tb24uaHcsCj4gKwl9LAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBjY3Vf cmVzZXRfbWFwIHN1bjhpX3Y4NTNfY2N1X3Jlc2V0c1tdID0gewo+ICsJW1JTVF9NQlVTXQkJPSB7 IDB4NTQwLCBCSVQoMzApIH0sCj4gKwlbUlNUX0JVU19ERV0JCT0geyAweDYwYywgQklUKDE2KSB9 LAo+ICsJW1JTVF9CVVNfRzJEXQkJPSB7IDB4NjNjLCBCSVQoMTYpIH0sCj4gKwlbUlNUX0JVU19D RV0JCT0geyAweDY4YywgQklUKDE2KSB8IEJJVCgxNyl9LAo+ICsJW1JTVF9CVVNfVkVdCQk9IHsg MHg2OWMsIEJJVCgxNikgfSwKPiArCVtSU1RfQlVTX05QVV0JCT0geyAweDZlYywgQklUKDE2KSB9 LAo+ICsJW1JTVF9CVVNfRE1BXQkJPSB7IDB4NzBjLCBCSVQoMTYpIH0sCj4gKwlbUlNUX0JVU19N U0dCT1gwXQk9IHsgMHg3MWMsIEJJVCgxNikgfSwKPiArCVtSU1RfQlVTX01TR0JPWDFdCT0geyAw eDcxYywgQklUKDE3KSB9LAo+ICsJW1JTVF9CVVNfU1BJTkxPQ0tdCT0geyAweDcyYywgQklUKDE2 KSB9LAo+ICsJW1JTVF9CVVNfSFNUSU1FUl0JPSB7IDB4NzNjLCBCSVQoMTYpIH0sCj4gKwlbUlNU X0JVU19EQkddCQk9IHsgMHg3OGMsIEJJVCgxNikgfSwKPiArCVtSU1RfQlVTX1BXTV0JCT0geyAw eDdhYywgQklUKDE2KSB9LAo+ICsJW1JTVF9CVVNfRFJBTV0JCT0geyAweDgwYywgQklUKDE2KSB9 LAo+ICsJW1JTVF9CVVNfTU1DMF0JCT0geyAweDg0YywgQklUKDE2KSB9LAo+ICsJW1JTVF9CVVNf TU1DMV0JCT0geyAweDg0YywgQklUKDE3KSB9LAo+ICsJW1JTVF9CVVNfTU1DMl0JCT0geyAweDg0 YywgQklUKDE4KSB9LAo+ICsJW1JTVF9CVVNfVUFSVDBdCQk9IHsgMHg5MGMsIEJJVCgxNikgfSwK PiArCVtSU1RfQlVTX1VBUlQxXQkJPSB7IDB4OTBjLCBCSVQoMTcpIH0sCj4gKwlbUlNUX0JVU19V QVJUMl0JCT0geyAweDkwYywgQklUKDE4KSB9LAo+ICsJW1JTVF9CVVNfVUFSVDNdCQk9IHsgMHg5 MGMsIEJJVCgxOSkgfSwKPiArCVtSU1RfQlVTX0kyQzBdCQk9IHsgMHg5MWMsIEJJVCgxNikgfSwK PiArCVtSU1RfQlVTX0kyQzFdCQk9IHsgMHg5MWMsIEJJVCgxNykgfSwKPiArCVtSU1RfQlVTX0ky QzJdCQk9IHsgMHg5MWMsIEJJVCgxOCkgfSwKPiArCVtSU1RfQlVTX0kyQzNdCQk9IHsgMHg5MWMs IEJJVCgxOSkgfSwKPiArCVtSU1RfQlVTX0kyQzRdCQk9IHsgMHg5MWMsIEJJVCgyMCkgfSwKPiAr CVtSU1RfQlVTX1NQSTBdCQk9IHsgMHg5NmMsIEJJVCgxNikgfSwKPiArCVtSU1RfQlVTX1NQSTFd CQk9IHsgMHg5NmMsIEJJVCgxNykgfSwKPiArCVtSU1RfQlVTX1NQSTJdCQk9IHsgMHg5NmMsIEJJ VCgxOCkgfSwKPiArCVtSU1RfQlVTX1NQSTNdCQk9IHsgMHg5NmMsIEJJVCgxOSkgfSwKPiArCVtS U1RfQlVTX1NQSUZdCQk9IHsgMHg5NmMsIEJJVCgyMCkgfSwKPiArCVtSU1RfQlVTX0VNQUNdCQk9 IHsgMHg5N2MsIEJJVCgxNikgfSwKPiArCVtSU1RfQlVTX0dQQURDXQkJPSB7IDB4OWVjLCBCSVQo MTYpIH0sCj4gKwlbUlNUX0JVU19USFNdCQk9IHsgMHg5ZmMsIEJJVCgxNikgfSwKPiArCVtSU1Rf QlVTX0kyUzBdCQk9IHsgMHhhMjAsIEJJVCgxNikgfSwKPiArCVtSU1RfQlVTX0kyUzFdCQk9IHsg MHhhMjAsIEJJVCgxNykgfSwKPiArCVtSU1RfQlVTX0RNSUNdCQk9IHsgMHhhNGMsIEJJVCgxNikg fSwKPiArCVtSU1RfQlVTX0FVRElPX0NPREVDXQk9IHsgMHhhNWMsIEJJVCgxNikgfSwKPiArCVtS U1RfVVNCX1BIWV0JCT0geyAweGE3MCwgQklUKDMwKSB9LAo+ICsJW1JTVF9CVVNfT0hDSV0JCT0g eyAweGE4YywgQklUKDE2KSB9LAo+ICsJW1JTVF9CVVNfRUhDSV0JCT0geyAweGE4YywgQklUKDIw KSB9LAo+ICsJW1JTVF9CVVNfT1RHXQkJPSB7IDB4YThjLCBCSVQoMjQpIH0sCj4gKwlbUlNUX0JV U19EUFNTX1RPUF0JPSB7IDB4YWJjLCBCSVQoMTYpIH0sCj4gKwlbUlNUX0JVU19NSVBJX0RTSV0J PSB7IDB4YjRjLCBCSVQoMTYpIH0sCj4gKwlbUlNUX0JVU19UQ09OX0xDRF0JPSB7IDB4YjdjLCBC SVQoMTYpIH0sCj4gKwlbUlNUX0JVU19DU0ldCQk9IHsgMHhjMmMsIEJJVCgxNikgfSwKPiArCVtS U1RfQlVTX1dJRUdBTkRdCT0geyAweGM3YywgQklUKDE2KSB9LAo+ICsJW1JTVF9SSVNDVl9TWVNf QVBCXQk9IHsgMHhkMDQsIEJJVCgyKSwgQ0NVX0ZFQVRVUkVfS0VZX0ZJRUxEIH0sCj4gKwlbUlNU X1JJU0NWX1NPRlRdCT0geyAweGQwNCwgQklUKDEpLCBDQ1VfRkVBVFVSRV9LRVlfRklFTEQgfSwK PiArCVtSU1RfUklTQ1ZfQ0ZHXQkJPSB7IDB4ZDBjLCBCSVQoMTYpIH0KPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc3VueGlfY2N1X2Rlc2Mgc3VuOGlfdjg1M19jY3VfZGVzYyA9IHsK PiArCS5jY3VfY2xrcwk9IHN1bjhpX3Y4NTNfY2N1X2Nsa3MsCj4gKwkubnVtX2NjdV9jbGtzCT0g QVJSQVlfU0laRShzdW44aV92ODUzX2NjdV9jbGtzKSwKPiArCj4gKwkuaHdfY2xrcwk9ICZzdW44 aV92ODUzX2h3X2Nsa3MsCj4gKwo+ICsJLnJlc2V0cwkJPSBzdW44aV92ODUzX2NjdV9yZXNldHMs Cj4gKwkubnVtX3Jlc2V0cwk9IEFSUkFZX1NJWkUoc3VuOGlfdjg1M19jY3VfcmVzZXRzKSwKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCB1MzIgcGxsX3JlZ3NbXSA9IHsKPiArCVNVTjhJX1Y4NTNf UExMX0NQVV9SRUcsCj4gKwlTVU44SV9WODUzX1BMTF9ERFJfUkVHLAo+ICsJU1VOOElfVjg1M19Q TExfUEVSSVBIX1JFRywKPiArCVNVTjhJX1Y4NTNfUExMX1ZJREVPX1JFRywKPiArCVNVTjhJX1Y4 NTNfUExMX0NTSV9SRUcsCj4gKwlTVU44SV9WODUzX1BMTF9BVURJT19SRUcsCj4gKwlTVU44SV9W ODUzX1BMTF9OUFVfUkVHLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzdW44aV92ODUzX2NjdV9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwl2b2lkIF9faW9tZW0g KnJlZzsKPiArCXUzMiB2YWw7Cj4gKwlpbnQgaSwgcmV0Owo+ICsKPiArCXJlZyA9IGRldm1fcGxh dGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKPiArCWlmIChJU19FUlIocmVnKSkKPiAr CQlyZXR1cm4gUFRSX0VSUihyZWcpOwo+ICsKPiArCS8qIEVuYWJsZSB0aGUgZW5hYmxlLCBMRE8s IGFuZCBsb2NrIGJpdHMgb24gYWxsIFBMTHMuICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShwbGxfcmVncyk7IGkrKykgewo+ICsJCXZhbCA9IHJlYWRsKHJlZyArIHBsbF9yZWdzW2ld KTsKPiArCQl2YWwgfD0gQklUKDMxKSB8IEJJVCgzMCkgfCBCSVQoMjkpOwo+ICsJCXdyaXRlbCh2 YWwsIHJlZyArIHBsbF9yZWdzW2ldKTsKPiArCX0KPiArCj4gKwkvKiBGb3JjZSBQTExfQ1BVIGZh Y3RvciBNIHRvIDAuICovCj4gKwl2YWwgPSByZWFkbChyZWcgKyBTVU44SV9WODUzX1BMTF9DUFVf UkVHKTsKPiArCXZhbCAmPSB+R0VOTUFTSygxLCAwKTsKPiArCXdyaXRlbCh2YWwsIHJlZyArIFNV TjhJX1Y4NTNfUExMX0NQVV9SRUcpOwo+ICsKPiArCS8qCj4gKwkgKiBGb3JjZSBPSENJIDEyTSBj bG9jayBzb3VyY2UgdG8gMDAgKDEyTUh6IGRpdmlkZWQgZnJvbSA0OE1IeikKPiArCSAqCj4gKwkg KiBUaGlzIGNsb2NrIG11eCBpcyBzdGlsbCBteXN0ZXJpb3VzLCBhbmQgdGhlIGNvZGUganVzdCBl bmZvcmNlcwo+ICsJICogaXQgdG8gaGF2ZSBhIHZhbGlkIGNsb2NrIHBhcmVudC4KPiArCSAqLwo+ ICsJdmFsID0gcmVhZGwocmVnICsgU1VOOElfVjg1M19VU0JfQ0xLX1JFRyk7Cj4gKwl2YWwgJj0g fkdFTk1BU0soMjUsIDI0KTsKPiArCXdyaXRlbCh2YWwsIHJlZyArIFNVTjhJX1Y4NTNfVVNCX0NM S19SRUcpOwo+ICsKPiArCS8qIEZvcmNlIGZhbm91dC0yN00gZmFjdG9yIE4gdG8gMC4gKi8KPiAr CXZhbCA9IHJlYWRsKHJlZyArIFNVTjhJX1Y4NTNfRkFOT1VUXzI3TV9SRUcpOwo+ICsJdmFsICY9 IH5HRU5NQVNLKDksIDgpOwo+ICsJd3JpdGVsKHZhbCwgcmVnICsgU1VOOElfVjg1M19GQU5PVVRf MjdNX1JFRyk7Cj4gKwo+ICsJcmV0ID0gZGV2bV9zdW54aV9jY3VfcHJvYmUoJnBkZXYtPmRldiwg cmVnLCAmc3VuOGlfdjg1M19jY3VfZGVzYyk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIHN1bjhpX3Y4NTNfY2N1X2lkc1tdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJhbGx3 aW5uZXIsc3VuOGktdjg1My1jY3UiIH0sCj4gKwl7IH0KPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX3Y4NTNfY2N1X2RyaXZlciA9IHsKPiArCS5wcm9iZQk9 IHN1bjhpX3Y4NTNfY2N1X3Byb2JlLAo+ICsJLmRyaXZlcgk9IHsKPiArCQkubmFtZQkJCT0gInN1 bjhpLXY4NTMtY2N1IiwKPiArCQkuc3VwcHJlc3NfYmluZF9hdHRycwk9IHRydWUsCj4gKwkJLm9m X21hdGNoX3RhYmxlCQk9IHN1bjhpX3Y4NTNfY2N1X2lkcywKPiArCX0sCj4gK307Cj4gK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfdjg1M19jY3VfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9J TVBPUlRfTlMoIlNVTlhJX0NDVSIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlN1cHBvcnQgZm9y IHRoZSBBbGx3aW5uZXIgVjg1MyBDQ1UiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5oIGIvZHJpdmVy cy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwLi5mMWIyYTRkMGJjZDMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuaAo+IEBAIC0wLDAgKzEsMTQgQEAK PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiArLyoKPiArICogQ29w eXJpZ2h0IChDKSAyMDI0IEFuZHJhcyBTemVtem8gPHN6ZW16by5hbmRyYXNAZ21haWwuY29tPgo+ ICsgKi8KPiArCj4gKyNpZm5kZWYgX0NDVV9TVU44SV9WODUzX0hfCj4gKyNkZWZpbmUgX0NDVV9T VU44SV9WODUzX0hfCj4gKwo+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xvY2svYWxsd2lubmVy LHN1bjhpLXY4NTMtY2N1Lmg+Cj4gKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9yZXNldC9hbGx3aW5u ZXIsc3VuOGktdjg1My1jY3UuaD4KPiArCj4gKyNkZWZpbmUgQ0xLX05VTUJFUgkJKENMS19GQU5P VVQyICsgMSkKPiArCj4gKyNlbmRpZgo+IAoKCgoKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0 CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=