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 14423C79FB7 for ; Wed, 9 Sep 2026 13:39:28 +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=i+pJEzGQS/BMcsM6hyTuB9E6v84Q/yeZW+jNvt9k1Sw=; b=ad5yC8J6tGiK/1 2P36ACzt0kJtlzPOVLVYvoAdu1qWPxqcMkLgdkpx4cRuK+aLt7WOWXF9x0dmQRYQanjaIWWfqRKmo ONP3kzybWAO8p+P3q9ft/F3saXwI1nZd0tpnH4P/0v6d4ewl7wm3FGbxhkkLpZrp6RxPi6pwJtLl7 APb98pfQb15OftMZ8LnKH/OMqshIGU+nzdRM44S9B2d1b7W8cq2scS7DnCcuZr/Px/kW2Nekui+Xp iQxZSjrYz8guW7j4t6jcQ/OacUtgyINyXvAC/AfOAUqgR2Vkc2YNAhJlkyMIMQPMCeDQYDe+y1XpB 5Q0ztYz41EAFe5TkUsBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x4IWN-0000000BpQB-2GBC; Wed, 09 Sep 2026 13:39:27 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x3xlI-00000009Uai-2jdX; Tue, 08 Sep 2026 15:29:31 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 60283414CB; Tue, 8 Sep 2026 15:29:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2242D1F00A3D; Tue, 8 Sep 2026 15:29:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788881368; bh=KRlTE30nn2xhGfoswlB5RLO5DrQ6Hn06W0UQ4wtHmsI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=CmN6lsxU3KECj9l1WLywDjtqo0nF5LFxth+5VjtkJar+awR7dyBPoX3eoJ17Tzm5j GfBxTWh5EqcKcg2cSHZaCiweT0iv7MQESa/cXJnK3um3a7Q/9oTJvRUS4X9NzA0EFW eIiDqhpSx4T7vIQ2iqepYOuPVNcGnRAldkjjydSUlBchFxai3sYsnMQWapFHszMcG0 1bHFOwDhrpMtOH6psSY+H1lwzMk0M2p/eB8lHOfV5wxUmxXzjuBSKqZNgkLJ8Gs9X5 TvdnNWlzxzjdwsjgIAv3cqDsJVU1XwFmfcB4hz1594cywgHlBCc6z4ZOVbOAh4zJRo TC0Wr+I4l3iDA== From: Arnd Bergmann To: Krzysztof Kozlowski , Alexandre Belloni , Linus Walleij , Russell King Cc: Drew Fustini , Arnd Bergmann , Rob Herring , Conor Dooley , Liviu Dudau , Sudeep Holla , Lorenzo Pieralisi , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Vladimir Zapolskiy , Stefan Agner , Maxime Coquelin , Alexandre Torgue , Aaro Koskinen , Andreas Kemnade , Kevin Hilman , Roger Quadros , Tony Lindgren , Nicolas Ferre , Claudiu Beznea , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Robert Jarzmik , Kristoffer Ericson , Ethan Nelson-Moore , Geert Uytterhoeven , Alexander Sverdlin , Shawn Guo , Karl Mehltretter , "David Hildenbrand (Arm)" , Nicolas Pitre , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com, linux-omap@vger.kernel.org, Alexander Clouter , "Jeremy J. Peper" , Damien Le Moal , Niklas Cassel , Ulf Hansson , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Bjorn Helgaas , Vinod Koul , "Rafael J. Wysocki" , Daniel Lezcano , Guenter Roeck , Mark Brown , Bartosz Golaszewski , Thomas Weissschuh , linux-ide@vger.kernel.org, linux-mmc@vger.kernel.org, linux-pci@vger.kernel.org, linux-phy@lists.infradead.org, linux-rtc@vger.kernel.org, linux-pm@vger.kernel.org, linux-watchdog@vger.kernel.org, linux-sound@vger.kernel.org, linux-gpio@vger.kernel.org Subject: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files Date: Tue, 8 Sep 2026 17:27:55 +0200 Message-ID: <20260908152808.3928630-6-arnd@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260908152808.3928630-1-arnd@kernel.org> References: <20260908152808.3928630-1-arnd@kernel.org> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 09 Sep 2026 06:39:26 -0700 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 RnJvbTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KClRoZSAnb3Jpb24nIHBsYXRmb3Jt IGlzIHRoZSBwcmVkZWNlc3NvciB0byB3aGF0IGxpbnV4IG5vdyBjYWxscyB0aGUKJ212ZWJ1JyBs aW5lIG9mIE1hcnZlbGwgU29DcywgYW5kIG9yaWdpbmFsbHkgY292ZXJlZCBvcmlvbjV4LAptdjc4 eHgwLCBraXJrd29vZCwgZG92ZSBhbmQgYSBmZXcgb3RoZXJzIHRoYXQgZG8gbm90IGhhdmUgYW55 CnVwc3RyZWFtIHN1cHBvcnQgYXQgdGhlIG1vbWVudC4KCk9ubHkgYSBmZXcgYm9hcmQgZmlsZXMg cmVtYWluIGhlcmUsIHRoZXNlIGFyZSB0aGUgb25lcyBsZWZ0CmluIDIwMjIgYm9hcmQgZmlsZSBw dXJnZSBiZWNhdXNlIHRoZXkgaGFkIHNvbWUgbGV2ZWwgb2Ygc3VwcG9ydAppbiBEZWJpYW4gb3Ig T3BlbldSVCwgbW9zdGx5IGZvciBjb21tZXJjaWFsIE5BUyBvciByb3V0ZXIgYm94ZXMuClRoaXMg ZGlzdHJvIHN1cHBvcnQgaXMgbm93IGdvbmUsIGFuZCBub2JvZHkgaGFzIGNvbnZlcnRlZCB0aGUK Ym9hcmQgZmlsZXMgdG8gZGV2aWNldHJlZSwgdGhvdWdoIHRoZSBvcmlvbjV4IGFuZCBkb3ZlIHBs YXRmb3JtcwphbHNvIGNvbWUgd2l0aCBkZXZpY2V0cmVlIHN1cHBvcnQgZm9yIHNvbWUgb3RoZXIg bWFjaGluZXMuCgpDYzogQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgpDYzogU2ViYXN0aWFu IEhlc3NlbGJhcnRoIDxzZWJhc3RpYW4uaGVzc2VsYmFydGhAZ21haWwuY29tPgpDYzogR3JlZ29y eSBDbGVtZW50IDxncmVnb3J5LmNsZW1lbnRAYm9vdGxpbi5jb20+CkNjOiBBbGV4YW5kZXIgQ2xv dXRlciA8YWxleEBkaWdyaXoub3JnLnVrPgpDYzogSmVyZW15IEouIFBlcGVyIDxqZXJlbXlAamVy ZW15cGVwZXIuY29tPgpDYzogRGFtaWVuIExlIE1vYWwgPGRsZW1vYWxAa2VybmVsLm9yZz4KQ2M6 IE5pa2xhcyBDYXNzZWwgPGNhc3NlbEBrZXJuZWwub3JnPgpDYzogVWxmIEhhbnNzb24gPHVsZmhA a2VybmVsLm9yZz4KQ2M6IExvcmVuem8gUGllcmFsaXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+ CkNjOiAiS3J6eXN6dG9mIFdpbGN6ecWEc2tpIiA8a3dpbGN6eW5za2lAa2VybmVsLm9yZz4KQ2M6 IE1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaUBrZXJuZWwub3JnPgpDYzogUm9iIEhlcnJpbmcg PHJvYmhAa2VybmVsLm9yZz4KQ2M6IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+ CkNjOiBWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPgpDYzogQWxleGFuZHJlIEJlbGxvbmkg PGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4uY29tPgpDYzogIlJhZmFlbCBKLiBXeXNvY2tpIiA8 cmFmYWVsQGtlcm5lbC5vcmc+CkNjOiBEYW5pZWwgTGV6Y2FubyA8ZGFuaWVsLmxlemNhbm9Aa2Vy bmVsLm9yZz4KQ2M6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KQ2M6IE1hcmsg QnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz4KQ2M6IExpbnVzIFdhbGxlaWogPGxpbnVzd0BrZXJu ZWwub3JnPgpDYzogQmFydG9zeiBHb2xhc3pld3NraSA8YnJnbEBrZXJuZWwub3JnPgpDYzogVGhv bWFzIFdlaXNzc2NodWggPHRob21hcy53ZWlzc3NjaHVoQGxpbnV0cm9uaXguZGU+CkNjOiBsaW51 eC1pZGVAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1tbWNAdmdlci5rZXJuZWwub3JnCkNjOiBs aW51eC1wY2lAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpDYzogbGludXgtcnRjQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgtcG1Admdlci5rZXJuZWwu b3JnCkNjOiBsaW51eC13YXRjaGRvZ0B2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LXNvdW5kQHZn ZXIua2VybmVsLm9yZwpDYzogbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKU2lnbmVkLW9mZi1i eTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgLQogYXJjaC9hcm0vS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIGFyY2gvYXJtL0tjb25maWcuZGVidWcg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC9hcm0vTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIGFyY2gvYXJtL2NvbmZpZ3MvZG92ZV9kZWZj b25maWcgICAgICAgICAgICAgICB8IDEzNCAtLS0KIGFyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9k ZWZjb25maWcgICAgICAgICAgICB8IDEyMCAtLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9LY29uZmln ICAgICAgICAgICAgICAgICAgICB8ICAzMiAtCiBhcmNoL2FybS9tYWNoLWRvdmUvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgfCAgIDcgLQogYXJjaC9hcm0vbWFjaC1kb3ZlL2JyaWRnZS1yZWdz LmggICAgICAgICAgICAgIHwgIDUwIC0tCiBhcmNoL2FybS9tYWNoLWRvdmUvY20tYTUxMC5jICAg ICAgICAgICAgICAgICAgfCAgOTQgLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uYyAgICAg ICAgICAgICAgICAgICB8IDQ0OSAtLS0tLS0tLS0tCiBhcmNoL2FybS9tYWNoLWRvdmUvY29tbW9u LmggICAgICAgICAgICAgICAgICAgfCAgNDYgLQogYXJjaC9hcm0vbWFjaC1kb3ZlL2RvdmUuaCAg ICAgICAgICAgICAgICAgICAgIHwgMTg1IC0tLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9pcnEuYyAg ICAgICAgICAgICAgICAgICAgICB8ICA4MSAtLQogYXJjaC9hcm0vbWFjaC1kb3ZlL2lycXMuaCAg ICAgICAgICAgICAgICAgICAgIHwgIDg5IC0tCiBhcmNoL2FybS9tYWNoLWRvdmUvbXBwLmMgICAg ICAgICAgICAgICAgICAgICAgfCAxNTkgLS0tLQogYXJjaC9hcm0vbWFjaC1kb3ZlL21wcC5oICAg ICAgICAgICAgICAgICAgICAgIHwgMTk3IC0tLS0tCiBhcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5j ICAgICAgICAgICAgICAgICAgICAgfCAyMjYgLS0tLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9wbS5o ICAgICAgICAgICAgICAgICAgICAgICB8ICA1OCAtLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL0tj b25maWcgICAgICAgICAgICAgICAgIHwgIDI3IC0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9NYWtl ZmlsZSAgICAgICAgICAgICAgICB8ICAgNSAtCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvYnJpZGdl LXJlZ3MuaCAgICAgICAgICAgfCAgMzEgLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2J1ZmZhbG8t d3hsLXNldHVwLmMgICAgIHwgMTgzIC0tLS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9jb21tb24u YyAgICAgICAgICAgICAgICB8IDQ0NCAtLS0tLS0tLS0tCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAv Y29tbW9uLmggICAgICAgICAgICAgICAgfCAgNTQgLS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9p cnEuYyAgICAgICAgICAgICAgICAgICB8ICA2OSAtLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2ly cXMuaCAgICAgICAgICAgICAgICAgIHwgIDg3IC0tCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvbXBw LmMgICAgICAgICAgICAgICAgICAgfCAgMzQgLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5o ICAgICAgICAgICAgICAgICAgIHwgMzM3IC0tLS0tLS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9t djc4eHgwLmggICAgICAgICAgICAgICB8IDEzNCAtLS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9w Y2llLmMgICAgICAgICAgICAgICAgICB8IDI4MCAtLS0tLS0KIGFyY2gvYXJtL21hY2gtb3Jpb241 eC9LY29uZmlnICAgICAgICAgICAgICAgICB8ICA5NSAtLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4 L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICA5IC0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC9i b2FyZC1kdC5jICAgICAgICAgICAgICB8ICAgMyArLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2Nv bW1vbi5jICAgICAgICAgICAgICAgIHwgMjM4ICstLS0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgv Y29tbW9uLmggICAgICAgICAgICAgICAgfCAgMTUgLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2Ru czMyMy1zZXR1cC5jICAgICAgICAgIHwgNzU3IC0tLS0tLS0tLS0tLS0tLS0KIGFyY2gvYXJtL21h Y2gtb3Jpb241eC9rdXJvYm94X3Byby1zZXR1cC5jICAgICB8IDQwNyAtLS0tLS0tLS0KIGFyY2gv YXJtL21hY2gtb3Jpb241eC9tdjIxMjAtc2V0dXAuYyAgICAgICAgICB8IDI1NiAtLS0tLS0KIGFy Y2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVwLmMgICAgICAgICB8IDQ0NCAtLS0tLS0t LS0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMgICAgICAgICAgICAgICAgICAgfCAgIDEg LQogLi4uL2FybS9tYWNoLW9yaW9uNXgvdGVyYXN0YXRpb25fcHJvMi1zZXR1cC5jIHwgMzY2IC0t LS0tLS0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHMyMDktc2V0dXAuYyAgICAgICAgICAgfCAz MzEgLS0tLS0tLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMgICAgICAgICAg IHwgMzI5IC0tLS0tLS0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtZnBnYS5oICAgICAg ICAgICB8ICA0MiAtCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM3OHh4LXNldHVwLmMgICAgICAg ICAgfCA1NzQgLS0tLS0tLS0tLS0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHN4MDktY29tbW9u LmMgICAgICAgICAgfCAxMjkgLS0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHN4MDktY29tbW9u LmggICAgICAgICAgfCAgMjEgLQogYXJjaC9hcm0vbW0vS2NvbmZpZyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiBhcmNoL2FybS9wbGF0LW9yaW9uL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vY29tbW9uLmMgICAgICAgICAg ICAgICAgICB8IDgyNiAtLS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5j bHVkZS9wbGF0L2FkZHItbWFwLmggICB8ICA1NCAtLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNs dWRlL3BsYXQvY29tbW9uLmggICAgIHwgMTA0IC0tLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNs dWRlL3BsYXQvdGltZS5oICAgICAgIHwgIDIwIC0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vcGNpZS5j ICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBhcmNoL2FybS9wbGF0LW9yaW9uL3RpbWUuYyAg ICAgICAgICAgICAgICAgICAgfCAyMzggLS0tLS0KIGRyaXZlcnMvYXRhL0tjb25maWcgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25m aWcgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvcGh5L21hcnZlbGwvS2NvbmZpZyAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ydGMvS2NvbmZpZyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3NvYy9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgLQogZHJpdmVycy90aGVybWFsL0tjb25maWcgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3dhdGNoZG9nL0tjb25maWcgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHNvdW5kL3NvYy9raXJrd29vZC9LY29uZmlnICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogNjUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg ODg4OCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9jb25maWdzL2Rv dmVfZGVmY29uZmlnCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vY29uZmlncy9tdjc4eHgw X2RlZmNvbmZpZwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtZG92ZS9LY29uZmln CiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL01ha2VmaWxlCiBkZWxldGUg bW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL2JyaWRnZS1yZWdzLmgKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybS9tYWNoLWRvdmUvY20tYTUxMC5jCiBkZWxldGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1kb3ZlL2NvbW1vbi5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0v bWFjaC1kb3ZlL2NvbW1vbi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3Zl L2RvdmUuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtZG92ZS9pcnEuYwogZGVs ZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtZG92ZS9pcnFzLmgKIGRlbGV0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybS9tYWNoLWRvdmUvbXBwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9tYWNoLWRvdmUvbXBwLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLWRvdmUv cGNpZS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL3BtLmgKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW12Nzh4eDAvS2NvbmZpZwogZGVsZXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtbXY3OHh4MC9NYWtlZmlsZQogZGVsZXRlIG1vZGUgMTAwNjQ0 IGFyY2gvYXJtL21hY2gtbXY3OHh4MC9icmlkZ2UtcmVncy5oCiBkZWxldGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1tdjc4eHgwL2J1ZmZhbG8td3hsLXNldHVwLmMKIGRlbGV0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybS9tYWNoLW12Nzh4eDAvY29tbW9uLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBh cmNoL2FybS9tYWNoLW12Nzh4eDAvY29tbW9uLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9tYWNoLW12Nzh4eDAvaXJxLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW12 Nzh4eDAvaXJxcy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21w cC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5oCiBkZWxl dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1tdjc4eHgwL212Nzh4eDAuaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtbXY3OHh4MC9wY2llLmMKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybS9tYWNoLW9yaW9uNXgva3Vyb2JveF9wcm8tc2V0dXAuYwogZGVsZXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241eC9tdjIxMjAtc2V0dXAuYwogZGVsZXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVwLmMKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdGVyYXN0YXRpb25fcHJvMi1zZXR1cC5jCiBk ZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMKIGRl bGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM0MDktc2V0dXAuYwogZGVs ZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtZnBnYS5oCiBkZWxl dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1zZXR1cC5jCiBkZWxl dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzeDA5LWNvbW1vbi5jCiBkZWxl dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzeDA5LWNvbW1vbi5oCiBkZWxl dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vcGxhdC1vcmlvbi9jb21tb24uYwogZGVsZXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L2FkZHItbWFwLmgKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUvcGxhdC9jb21tb24uaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L3RpbWUu aAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3BsYXQtb3Jpb24vdGltZS5jCgpkaWZmIC0t Z2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA2ZThmZTc2NDAwNjQuLjAyOGRi N2FkMTVhZCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTMw ODAsOCArMzA4MCw2IEBAIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0v bWFydmVsbC9tYXJ2ZWxsLG9yaW9uNXgueWFtbAogRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL3NvYy9kb3ZlLwogRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9kb3ZlKgog RjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9vcmlvbjV4KgotRjoJYXJjaC9hcm0vbWFjaC1k b3ZlLwotRjoJYXJjaC9hcm0vbWFjaC1tdjc4eHgwLwogRjoJYXJjaC9hcm0vbWFjaC1vcmlvbjV4 LwogRjoJYXJjaC9hcm0vcGxhdC1vcmlvbi8KIEY6CWRyaXZlcnMvYnVzL212ZWJ1LW1idXMuYwpk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZyBiL2FyY2gvYXJtL0tjb25maWcKaW5kZXggNTc3 MGRlY2ExMzZkLi5kYTI5YWZjZTMwOWYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysr IGIvYXJjaC9hcm0vS2NvbmZpZwpAQCAtMzkzLDggKzM5Myw2IEBAIHNvdXJjZSAiYXJjaC9hcm0v bWFjaC1tbXAvS2NvbmZpZyIKIAogc291cmNlICJhcmNoL2FybS9tYWNoLW1zdGFyL0tjb25maWci CiAKLXNvdXJjZSAiYXJjaC9hcm0vbWFjaC1tdjc4eHgwL0tjb25maWciCi0KIHNvdXJjZSAiYXJj aC9hcm0vbWFjaC1tdmVidS9LY29uZmlnIgogCiBzb3VyY2UgImFyY2gvYXJtL21hY2gtbXhzL0tj b25maWciCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnLmRlYnVnIGIvYXJjaC9hcm0vS2Nv bmZpZy5kZWJ1ZwppbmRleCA1NmMwOTA4NDBjNWEuLmUyZmM4OTA1NTQ2MyAxMDA2NDQKLS0tIGEv YXJjaC9hcm0vS2NvbmZpZy5kZWJ1ZworKysgYi9hcmNoL2FybS9LY29uZmlnLmRlYnVnCkBAIC01 ODMsNyArNTgzLDcgQEAgY2hvaWNlCiAKIAljb25maWcgREVCVUdfTVZFQlVfVUFSVDBfQUxURVJO QVRFCiAJCWJvb2wgIktlcm5lbCBsb3ctbGV2ZWwgZGVidWdnaW5nIG1lc3NhZ2VzIHZpYSBNVkVC VSBVQVJUMCAobmV3IGJvb3Rsb2FkZXJzKSIKLQkJZGVwZW5kcyBvbiBBUkNIX01WRUJVIHx8IEFS Q0hfRE9WRSB8fCBBUkNIX01WNzhYWDAgfHwgQVJDSF9PUklPTjVYCisJCWRlcGVuZHMgb24gQVJD SF9NVkVCVSB8fCBBUkNIX09SSU9ONVgKIAkJc2VsZWN0IERFQlVHX1VBUlRfODI1MAogCQloZWxw CiAJCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCBrZXJuZWwgbG93LWxldmVsIGRlYnVnZ2luZyBz dXBwb3J0CmRpZmYgLS1naXQgYS9hcmNoL2FybS9NYWtlZmlsZSBiL2FyY2gvYXJtL01ha2VmaWxl CmluZGV4IGY1YmM5YWQ3ZjZmNS4uNTQyMWEzZWMzODI1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9N YWtlZmlsZQorKysgYi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtMTc5LDcgKzE3OSw2IEBAIG1hY2hp bmUtJChDT05GSUdfQVJDSF9CRVJMSU4pCQkrPSBiZXJsaW4KIG1hY2hpbmUtJChDT05GSUdfQVJD SF9DTFBTNzExWCkJCSs9IGNscHM3MTF4CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfREFWSU5DSSkJ CSs9IGRhdmluY2kKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9ESUdJQ09MT1IpCSs9IGRpZ2ljb2xv cgotbWFjaGluZS0kKENPTkZJR19BUkNIX0RPVkUpCQkrPSBkb3ZlCiBtYWNoaW5lLSQoQ09ORklH X0FSQ0hfRVhZTk9TKQkJKz0gZXh5bm9zCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfR0VNSU5JKQkJ Kz0gZ2VtaW5pCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfSElHSEJBTkspCQkrPSBoaWdoYmFuawpA QCAtMTkwLDcgKzE4OSw2IEBAIG1hY2hpbmUtJChDT05GSUdfQVJDSF9MUEMxOFhYKQkJKz0gbHBj MTh4eAogbWFjaGluZS0kKENPTkZJR19BUkNIX0xQQzMyWFgpCQkrPSBscGMzMnh4CiBtYWNoaW5l LSQoQ09ORklHX0FSQ0hfTUVTT04pCQkrPSBtZXNvbgogbWFjaGluZS0kKENPTkZJR19BUkNIX01N UCkJCSs9IG1tcAotbWFjaGluZS0kKENPTkZJR19BUkNIX01WNzhYWDApCQkrPSBtdjc4eHgwCiBt YWNoaW5lLSQoQ09ORklHX0FSQ0hfTVZFQlUpCQkrPSBtdmVidQogbWFjaGluZS0kKENPTkZJR19B UkNIX01YQykJCSs9IGlteAogbWFjaGluZS0kKENPTkZJR19BUkNIX01FRElBVEVLKQkJKz0gbWVk aWF0ZWsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvZG92ZV9kZWZjb25maWcgYi9hcmNo L2FybS9jb25maWdzL2RvdmVfZGVmY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA5MTdhODY0ZmVjNzQuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9jb25maWdzL2RvdmVf ZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLUNPTkZJR19TWVNWSVBD PXkKLUNPTkZJR19OT19IWl9JRExFPXkKLUNPTkZJR19ISUdIX1JFU19USU1FUlM9eQotQ09ORklH X0xPR19CVUZfU0hJRlQ9MTQKLUNPTkZJR19FWFBFUlQ9eQotIyBDT05GSUdfQVJDSF9NVUxUSV9W NiBpcyBub3Qgc2V0Ci1DT05GSUdfQVJDSF9NVUxUSV9WNz15Ci1DT05GSUdfQVJDSF9ET1ZFPXkK LUNPTkZJR19NQUNIX0NNX0E1MTA9eQotQ09ORklHX0hJR0hNRU09eQotQ09ORklHX0FUQUdTPXkK LUNPTkZJR19BUk1fQVBQRU5ERURfRFRCPXkKLUNPTkZJR19BUk1fQVRBR19EVEJfQ09NUEFUPXkK LUNPTkZJR19WRlA9eQotQ09ORklHX01PRFVMRVM9eQotQ09ORklHX01PRFVMRV9VTkxPQUQ9eQot Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15Ci1DT05GSUdfTkVUPXkKLUNPTkZJR19QQUNLRVQ9 eQotQ09ORklHX1VOSVg9eQotQ09ORklHX0lORVQ9eQotQ09ORklHX0lQX01VTFRJQ0FTVD15Ci1D T05GSUdfSVBfUE5QPXkKLUNPTkZJR19JUF9QTlBfREhDUD15Ci1DT05GSUdfSVBfUE5QX0JPT1RQ PXkKLSMgQ09ORklHX0lQVjYgaXMgbm90IHNldAotQ09ORklHX1BDST15Ci1DT05GSUdfUENJX01T ST15Ci1DT05GSUdfUENJX01WRUJVPXkKLUNPTkZJR19ERVZUTVBGUz15Ci1DT05GSUdfREVWVE1Q RlNfTU9VTlQ9eQotQ09ORklHX01URD15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotQ09O RklHX01URF9CTE9DSz15Ci1DT05GSUdfTVREX0NGST15Ci1DT05GSUdfTVREX0pFREVDUFJPQkU9 eQotQ09ORklHX01URF9DRklfQURWX09QVElPTlM9eQotQ09ORklHX01URF9DRklfR0VPTUVUUlk9 eQotIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzQgaXMgbm90IHNldAotQ09ORklHX01URF9D RklfSU5URUxFWFQ9eQotQ09ORklHX01URF9DRklfU1RBQT15Ci1DT05GSUdfTVREX1BIWVNNQVA9 eQotQ09ORklHX01URF9NMjVQODA9eQotQ09ORklHX01URF9TUElfTk9SPXkKLUNPTkZJR19CTEtf REVWX0xPT1A9eQotQ09ORklHX0JMS19ERVZfUkFNPXkKLUNPTkZJR19CTEtfREVWX1JBTV9DT1VO VD0xCi0jIENPTkZJR19TQ1NJX1BST0NfRlMgaXMgbm90IHNldAotQ09ORklHX0JMS19ERVZfU0Q9 eQotIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAotIyBDT05GSUdfU0NTSV9MT1dMRVZF TCBpcyBub3Qgc2V0Ci1DT05GSUdfQVRBPXkKLUNPTkZJR19TQVRBX01WPXkKLUNPTkZJR19ORVRE RVZJQ0VTPXkKLUNPTkZJR19NVjY0M1hYX0VUSD15Ci0jIENPTkZJR19JTlBVVF9NT1VTRURFViBp cyBub3Qgc2V0Ci1DT05GSUdfSU5QVVRfRVZERVY9eQotIyBDT05GSUdfS0VZQk9BUkRfQVRLQkQg aXMgbm90IHNldAotIyBDT05GSUdfTU9VU0VfUFMyIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFUklP IGlzIG5vdCBzZXQKLUNPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTE2Ci1DT05GSUdfU0VSSUFMXzgy NTA9eQotQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQotQ09ORklHX1NFUklBTF84MjUwX1JV TlRJTUVfVUFSVFM9MgotQ09ORklHX1NFUklBTF9PRl9QTEFURk9STT15Ci0jIENPTkZJR19IV19S QU5ET00gaXMgbm90IHNldAotQ09ORklHX0kyQz15Ci1DT05GSUdfSTJDX0NIQVJERVY9eQotQ09O RklHX0kyQ19NVjY0WFhYPXkKLUNPTkZJR19TUEk9eQotQ09ORklHX1NQSV9PUklPTj15Ci0jIENP TkZJR19IV01PTiBpcyBub3Qgc2V0Ci1DT05GSUdfVEhFUk1BTD15Ci1DT05GSUdfRE9WRV9USEVS TUFMPXkKLUNPTkZJR19XQVRDSERPRz15Ci1DT05GSUdfT1JJT05fV0FUQ0hET0c9eQotQ09ORklH X1VTQj15Ci1DT05GSUdfVVNCX1hIQ0lfSENEPXkKLUNPTkZJR19VU0JfRUhDSV9IQ0Q9eQotQ09O RklHX1VTQl9FSENJX1JPT1RfSFVCX1RUPXkKLUNPTkZJR19VU0JfU1RPUkFHRT15Ci1DT05GSUdf TU1DPXkKLUNPTkZJR19NTUNfU0RIQ0k9eQotQ09ORklHX01NQ19TREhDSV9QTFRGTT15Ci1DT05G SUdfTU1DX1NESENJX0RPVkU9eQotQ09ORklHX05FV19MRURTPXkKLUNPTkZJR19MRURTX0NMQVNT PXkKLUNPTkZJR19MRURTX0dQSU89eQotQ09ORklHX0xFRFNfVFJJR0dFUlM9eQotQ09ORklHX0xF RFNfVFJJR0dFUl9USU1FUj15Ci1DT05GSUdfTEVEU19UUklHR0VSX0hFQVJUQkVBVD15Ci1DT05G SUdfTEVEU19UUklHR0VSX0RFRkFVTFRfT049eQotQ09ORklHX1JUQ19DTEFTUz15Ci1DT05GSUdf UlRDX0RSVl9NVj15Ci1DT05GSUdfRE1BREVWSUNFUz15Ci1DT05GSUdfTVZfWE9SPXkKLUNPTkZJ R19FWFQyX0ZTPXkKLUNPTkZJR19FWFQ0X0ZTPXkKLSMgQ09ORklHX0VYVDRfRlNfWEFUVFIgaXMg bm90IHNldAotQ09ORklHX0lTTzk2NjBfRlM9eQotQ09ORklHX0pPTElFVD15Ci1DT05GSUdfVURG X0ZTPW0KLUNPTkZJR19NU0RPU19GUz15Ci1DT05GSUdfVkZBVF9GUz15Ci1DT05GSUdfVE1QRlM9 eQotQ09ORklHX0pGRlMyX0ZTPXkKLUNPTkZJR19ORlNfRlM9eQotQ09ORklHX1JPT1RfTkZTPXkK LUNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKLUNPTkZJR19OTFNfQ09ERVBBR0VfODUwPXkKLUNP TkZJR19OTFNfSVNPODg1OV8xPXkKLUNPTkZJR19OTFNfSVNPODg1OV8yPXkKLUNPTkZJR19OTFNf VVRGOD15Ci1DT05GSUdfVElNRVJfU1RBVFM9eQotQ09ORklHX0NSWVBUT19OVUxMPXkKLUNPTkZJ R19DUllQVE9fQkxPV0ZJU0g9eQotQ09ORklHX0NSWVBUT19URUE9eQotQ09ORklHX0NSWVBUT19U V09GSVNIPXkKLUNPTkZJR19DUllQVE9fRUNCPW0KLUNPTkZJR19DUllQVE9fSE1BQz15Ci1DT05G SUdfQ1JZUFRPX01END15Ci1DT05GSUdfQ1JZUFRPX1NIQTE9eQotQ09ORklHX0NSWVBUT19TSEEy NTY9eQotQ09ORklHX0NSWVBUT19TSEE1MTI9eQotQ09ORklHX0NSWVBUT19ERUZMQVRFPXkKLUNP TkZJR19DUllQVE9fTFpPPXkKLUNPTkZJR19DUllQVE9fREVWX01BUlZFTExfQ0VTQT15Ci1DT05G SUdfUFJJTlRLX1RJTUU9eQotIyBDT05GSUdfREVCVUdfQlVHVkVSQk9TRSBpcyBub3Qgc2V0Ci1D T05GSUdfREVCVUdfSU5GT19EV0FSRl9UT09MQ0hBSU5fREVGQVVMVD15Ci1DT05GSUdfTUFHSUNf U1lTUlE9eQotQ09ORklHX0RFQlVHX0ZTPXkKLSMgQ09ORklHX1NDSEVEX0RFQlVHIGlzIG5vdCBz ZXQKLUNPTkZJR19ERUJVR19VU0VSPXkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvbXY3 OHh4MF9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2NjOGRlN2MxYzIuLjAwMDAwMDAwMDAwMAotLS0g YS9hcmNoL2FybS9jb25maWdzL212Nzh4eDBfZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEs MTIwICswLDAgQEAKLUNPTkZJR19TWVNWSVBDPXkKLUNPTkZJR19OT19IWl9JRExFPXkKLUNPTkZJ R19ISUdIX1JFU19USU1FUlM9eQotQ09ORklHX1BSRUVNUFQ9eQotQ09ORklHX0xPR19CVUZfU0hJ RlQ9MTQKLUNPTkZJR19FWFBFUlQ9eQotQ09ORklHX0tBTExTWU1TX0FMTD15Ci1DT05GSUdfUFJP RklMSU5HPXkKLUNPTkZJR19BUkNIX01VTFRJX1Y1PXkKLSMgQ09ORklHX0FSQ0hfTVVMVElfVjYg aXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9NVUxUSV9WNyBpcyBub3Qgc2V0Ci1DT05GSUdfQVJD SF9NVjc4WFgwPXkKLUNPTkZJR19NQUNIX1RFUkFTVEFUSU9OX1dYTD15Ci1DT05GSUdfSElHSE1F TT15Ci1DT05GSUdfQVRBR1M9eQotQ09ORklHX1ZGUD15Ci1DT05GSUdfS1BST0JFUz15Ci1DT05G SUdfTU9EVUxFUz15Ci1DT05GSUdfTU9EVUxFX1VOTE9BRD15Ci1DT05GSUdfUEFSVElUSU9OX0FE VkFOQ0VEPXkKLUNPTkZJR19CU0RfRElTS0xBQkVMPXkKLUNPTkZJR19ORVQ9eQotQ09ORklHX1BB Q0tFVD15Ci1DT05GSUdfVU5JWD15Ci1DT05GSUdfSU5FVD15Ci1DT05GSUdfSVBfTVVMVElDQVNU PXkKLUNPTkZJR19JUF9QTlA9eQotQ09ORklHX0lQX1BOUF9ESENQPXkKLUNPTkZJR19JUF9QTlBf Qk9PVFA9eQotIyBDT05GSUdfSVBWNiBpcyBub3Qgc2V0Ci1DT05GSUdfTkVUX1BLVEdFTj1tCi1D T05GSUdfTVREPXkKLUNPTkZJR19NVERfQ01ETElORV9QQVJUUz15Ci1DT05GSUdfTVREX0JMT0NL PXkKLUNPTkZJR19NVERfQ0ZJPXkKLUNPTkZJR19NVERfSkVERUNQUk9CRT15Ci1DT05GSUdfTVRE X0NGSV9BRFZfT1BUSU9OUz15Ci1DT05GSUdfTVREX0NGSV9HRU9NRVRSWT15Ci1DT05GSUdfTVRE X0NGSV9JTlRFTEVYVD15Ci1DT05GSUdfTVREX0NGSV9BTURTVEQ9eQotQ09ORklHX01URF9QSFlT TUFQPXkKLUNPTkZJR19NVERfUkFXX05BTkQ9eQotQ09ORklHX01URF9OQU5EX09SSU9OPXkKLUNP TkZJR19CTEtfREVWX0xPT1A9eQotIyBDT05GSUdfU0NTSV9QUk9DX0ZTIGlzIG5vdCBzZXQKLUNP TkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19CTEtfREVWX1NSPW0KLUNPTkZJR19DSFJfREVWX1NH PW0KLSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXQKLUNPTkZJR19BVEE9eQotQ09ORklH X1NBVEFfTVY9eQotQ09ORklHX05FVERFVklDRVM9eQotQ09ORklHX01JST15Ci1DT05GSUdfTkVU X1BDST15Ci1DT05GSUdfTVY2NDNYWF9FVEg9eQotIyBDT05GSUdfSU5QVVRfTU9VU0VERVYgaXMg bm90IHNldAotQ09ORklHX01BUlZFTExfUEhZPXkKLUNPTkZJR19JTlBVVF9FVkRFVj15Ci0jIENP TkZJR19JTlBVVF9LRVlCT0FSRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9NT1VTRSBpcyBu b3Qgc2V0Ci0jIENPTkZJR19TRVJJTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19WVCBpcyBub3Qgc2V0 Ci1DT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0xNgotQ09ORklHX1NFUklBTF84MjUwPXkKLUNPTkZJ R19TRVJJQUxfODI1MF9DT05TT0xFPXkKLSMgQ09ORklHX1NFUklBTF84MjUwX1BDSSBpcyBub3Qg c2V0Ci1DT05GSUdfU0VSSUFMXzgyNTBfUlVOVElNRV9VQVJUUz0yCi0jIENPTkZJR19IV19SQU5E T00gaXMgbm90IHNldAotQ09ORklHX0kyQz15Ci1DT05GSUdfSTJDX0NIQVJERVY9eQotQ09ORklH X0kyQ19NVjY0WFhYPXkKLUNPTkZJR19VU0I9eQotQ09ORklHX1VTQl9FSENJX0hDRD15Ci1DT05G SUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQ9eQotQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEPXkK LUNPTkZJR19VU0JfUFJJTlRFUj15Ci1DT05GSUdfVVNCX1NUT1JBR0U9eQotQ09ORklHX1VTQl9T VE9SQUdFX0RBVEFGQUI9eQotQ09ORklHX1VTQl9TVE9SQUdFX0ZSRUVDT009eQotQ09ORklHX1VT Ql9TVE9SQUdFX1NERFIwOT15Ci1DT05GSUdfVVNCX1NUT1JBR0VfU0REUjU1PXkKLUNPTkZJR19V U0JfU1RPUkFHRV9KVU1QU0hPVD15Ci1DT05GSUdfTkVXX0xFRFM9eQotQ09ORklHX0xFRFNfQ0xB U1M9eQotQ09ORklHX0xFRFNfVFJJR0dFUlM9eQotQ09ORklHX0xFRFNfVFJJR0dFUl9USU1FUj15 Ci1DT05GSUdfTEVEU19UUklHR0VSX0hFQVJUQkVBVD15Ci1DT05GSUdfUlRDX0NMQVNTPXkKLUNP TkZJR19SVENfRFJWX0RTMTMwNz15Ci1DT05GSUdfUlRDX0RSVl9SUzVDMzcyPXkKLUNPTkZJR19S VENfRFJWX000MVQ4MD15Ci1DT05GSUdfRVhUMl9GUz15Ci1DT05GSUdfRVhUNF9GUz15Ci0jIENP TkZJR19FWFQ0X0ZTX1hBVFRSIGlzIG5vdCBzZXQKLUNPTkZJR19JU085NjYwX0ZTPW0KLUNPTkZJ R19KT0xJRVQ9eQotQ09ORklHX1VERl9GUz1tCi1DT05GSUdfTVNET1NfRlM9eQotQ09ORklHX1ZG QVRfRlM9eQotQ09ORklHX1RNUEZTPXkKLUNPTkZJR19KRkZTMl9GUz15Ci1DT05GSUdfQ1JBTUZT PXkKLUNPTkZJR19ORlNfRlM9eQotQ09ORklHX05GU19WMz15Ci1DT05GSUdfUk9PVF9ORlM9eQot Q09ORklHX05MU19DT0RFUEFHRV80Mzc9eQotQ09ORklHX05MU19DT0RFUEFHRV84NTA9eQotQ09O RklHX05MU19JU084ODU5XzE9eQotQ09ORklHX05MU19JU084ODU5XzI9eQotQ09ORklHX0NSWVBU T19DQkM9bQotQ09ORklHX0NSWVBUT19FQ0I9bQotIyBDT05GSUdfREVCVUdfQlVHVkVSQk9TRSBp cyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfSU5GT19EV0FSRl9UT09MQ0hBSU5fREVGQVVMVD15Ci1D T05GSUdfTUFHSUNfU1lTUlE9eQotQ09ORklHX0RFQlVHX0ZTPXkKLUNPTkZJR19ERUJVR19LRVJO RUw9eQotIyBDT05GSUdfU0xVQl9ERUJVRyBpcyBub3Qgc2V0Ci1DT05GSUdfU0NIRURTVEFUUz15 Ci1DT05GSUdfREVCVUdfVVNFUj15Ci1DT05GSUdfREVCVUdfTEw9eQpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1kb3ZlL0tjb25maWcgYi9hcmNoL2FybS9tYWNoLWRvdmUvS2NvbmZpZwpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU0NzEyMGUyMjNlLi4wMDAwMDAwMDAwMDAKLS0t IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL0tjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCww IEBACi0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCi1tZW51Y29uZmlnIEFSQ0hf RE9WRQotCWJvb2wgIk1hcnZlbGwgRG92ZSAoREVQUkVDQVRFRCkiIGlmIEFSQ0hfTVVMVElfVjcK LQlkZXBlbmRzIG9uIEFUQUdTCi0Jc2VsZWN0IENQVV9QSjQKLQlzZWxlY3QgR1BJT0xJQgotCXNl bGVjdCBNVkVCVV9NQlVTCi0Jc2VsZWN0IFBJTkNUUkwKLQlzZWxlY3QgUElOQ1RSTF9ET1ZFCi0J c2VsZWN0IFBMQVRfT1JJT05fTEVHQUNZCi0Jc2VsZWN0IFBNX0dFTkVSSUNfRE9NQUlOUyBpZiBQ TQotCXNlbGVjdCBQQ0lfUVVJUktTIGlmIFBDSQotCWhlbHAKLQkgIFN1cHBvcnQgZm9yIHRoZSBN YXJ2ZWxsIERvdmUgU29DIDg4QVA1MTAgdXNpbmcgYm9hcmQgZmlsZXMuCi0KLQkgIFN1cHBvcnQg Zm9yIHRoaXMgbWFjaGluZSB3aWxsIGJlIHJlbW92ZWQgaW4gZWFybHkgMjAyNywgdW5sZXNzCi0J ICB0aGVyZSBpcyBhIHN0cm9uZyByZWFzb24gdG8ga2VlcCBpdC4gVXNlcnMgc2hvdWxkIG1pZ3Jh dGUgdG8KLQkgIHRoZSBkZXZpY2V0cmVlLWVuYWJsZWQgdmVyc2lvbiAoQ09ORklHX01BQ0hfRE9W RSkgaW5zdGVhZC4KLQotaWYgQVJDSF9ET1ZFCi0KLWNvbmZpZyBET1ZFX0xFR0FDWQotCWJvb2wK LQotY29uZmlnIE1BQ0hfQ01fQTUxMAotCWJvb2wgIkNvbXB1TGFiIENNLUE1MTAgQm9hcmQiCi0J c2VsZWN0IERPVkVfTEVHQUNZCi0JaGVscAotCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlv dXIga2VybmVsIHRvIHN1cHBvcnQgdGhlCi0JICBDb21wdUxhYiBDTS1BNTEwIEJvYXJkLgotCi1l bmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL01ha2VmaWxlIGIvYXJjaC9hcm0v bWFjaC1kb3ZlL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDMxMzkw YmUwNjkuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWRvdmUvTWFrZWZpbGUKKysr IC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAKLWNjZmxhZ3MteSA6PSAtSSQoc3JjdHJlZSkvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNs dWRlCi0KLW9iai15CQkJCSs9IGNvbW1vbi5vCi1vYmotJChDT05GSUdfRE9WRV9MRUdBQ1kpCSs9 IGlycS5vIG1wcC5vCi1vYmotJChDT05GSUdfUENJKQkJKz0gcGNpZS5vCi1vYmotJChDT05GSUdf TUFDSF9DTV9BNTEwKQkrPSBjbS1hNTEwLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92 ZS9icmlkZ2UtcmVncy5oIGIvYXJjaC9hcm0vbWFjaC1kb3ZlL2JyaWRnZS1yZWdzLmgKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmYmMxNTJkMDk1MC4uMDAwMDAwMDAwMDAwCi0tLSBh L2FyY2gvYXJtL21hY2gtZG92ZS9icmlkZ2UtcmVncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAg KzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwotLyog TWJ1cy1MIHRvIE1idXMgQnJpZGdlIFJlZ2lzdGVycyAqLwotCi0jaWZuZGVmIF9fQVNNX0FSQ0hf QlJJREdFX1JFR1NfSAotI2RlZmluZSBfX0FTTV9BUkNIX0JSSURHRV9SRUdTX0gKLQotI2luY2x1 ZGUgImRvdmUuaCIKLQotI2RlZmluZSBDUFVfQ09ORklHCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4 MDAwMCkKLQotI2RlZmluZSBDUFVfQ09OVFJPTAkJKEJSSURHRV9WSVJUX0JBU0UgKyAweDAxMDQp Ci0jZGVmaW5lICBDUFVfQ1RSTF9QQ0lFMF9MSU5LCTB4MDAwMDAwMDEKLSNkZWZpbmUgIENQVV9S RVNFVAkJMHgwMDAwMDAwMgotI2RlZmluZSAgQ1BVX0NUUkxfUENJRTFfTElOSwkweDAwMDAwMDA4 Ci0KLSNkZWZpbmUgUlNUT1VUbl9NQVNLCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4MDEwOCkKLSNk ZWZpbmUgUlNUT1VUbl9NQVNLX1BIWVMJKEJSSURHRV9QSFlTX0JBU0UgKyAweDAxMDgpCi0jZGVm aW5lICBTT0ZUX1JFU0VUX09VVF9FTgkweDAwMDAwMDA0Ci0KLSNkZWZpbmUgU1lTVEVNX1NPRlRf UkVTRVQJKEJSSURHRV9WSVJUX0JBU0UgKyAweDAxMGMpCi0jZGVmaW5lICBTT0ZUX1JFU0VUCQkw eDAwMDAwMDAxCi0KLSNkZWZpbmUgQlJJREdFX0NBVVNFCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4 MDExMCkKLSNkZWZpbmUgIEJSSURHRV9JTlRfVElNRVIxX0NMUgkofjB4MDAwNCkKLQotI2RlZmlu ZSBJUlFfVklSVF9CQVNFCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4MDIwMCkKLSNkZWZpbmUgSVJR X0NBVVNFX0xPV19PRkYJMHgwMDAwCi0jZGVmaW5lIElSUV9NQVNLX0xPV19PRkYJMHgwMDA0Ci0j ZGVmaW5lIEZJUV9NQVNLX0xPV19PRkYJMHgwMDA4Ci0jZGVmaW5lIEVORFBPSU5UX01BU0tfTE9X X09GRgkweDAwMGMKLSNkZWZpbmUgSVJRX0NBVVNFX0hJR0hfT0ZGCTB4MDAxMAotI2RlZmluZSBJ UlFfTUFTS19ISUdIX09GRgkweDAwMTQKLSNkZWZpbmUgRklRX01BU0tfSElHSF9PRkYJMHgwMDE4 Ci0jZGVmaW5lIEVORFBPSU5UX01BU0tfSElHSF9PRkYJMHgwMDFjCi0jZGVmaW5lIFBDSUVfSU5U RVJSVVBUX01BU0tfT0ZGCTB4MDAyMAotCi0jZGVmaW5lIElSUV9NQVNLX0xPVwkJKElSUV9WSVJU X0JBU0UgKyBJUlFfTUFTS19MT1dfT0ZGKQotI2RlZmluZSBGSVFfTUFTS19MT1cJCShJUlFfVklS VF9CQVNFICsgRklRX01BU0tfTE9XX09GRikKLSNkZWZpbmUgRU5EUE9JTlRfTUFTS19MT1cJKElS UV9WSVJUX0JBU0UgKyBFTkRQT0lOVF9NQVNLX0xPV19PRkYpCi0jZGVmaW5lIElSUV9NQVNLX0hJ R0gJCShJUlFfVklSVF9CQVNFICsgSVJRX01BU0tfSElHSF9PRkYpCi0jZGVmaW5lIEZJUV9NQVNL X0hJR0gJCShJUlFfVklSVF9CQVNFICsgRklRX01BU0tfSElHSF9PRkYpCi0jZGVmaW5lIEVORFBP SU5UX01BU0tfSElHSAkoSVJRX1ZJUlRfQkFTRSArIEVORFBPSU5UX01BU0tfSElHSF9PRkYpCi0j ZGVmaW5lIFBDSUVfSU5URVJSVVBUX01BU0sJKElSUV9WSVJUX0JBU0UgKyBQQ0lFX0lOVEVSUlVQ VF9NQVNLX09GRikKLQotI2RlZmluZSBQT1dFUl9NQU5BR0VNRU5UCShCUklER0VfVklSVF9CQVNF ICsgMHgwMTFjKQotCi0jZGVmaW5lIFRJTUVSX1ZJUlRfQkFTRQkJKEJSSURHRV9WSVJUX0JBU0Ug KyAweDAzMDApCi0jZGVmaW5lIFRJTUVSX1BIWVNfQkFTRSAgICAgICAgIChCUklER0VfUEhZU19C QVNFICsgMHgwMzAwKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9j bS1hNTEwLmMgYi9hcmNoL2FybS9tYWNoLWRvdmUvY20tYTUxMC5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBiZWI1MzI1MzdjMjIuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9t YWNoLWRvdmUvY20tYTUxMC5jCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQotLyoKLSAqIGFyY2gvYXJtL21hY2gt ZG92ZS9jbS1hNTEwLmMKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcHVMYWIsIEx0ZC4K LSAqIEtvbnN0YW50aW4gU2lueXVrIDxrb3N0eWFzQGNvbXB1bGFiLmNvLmlsPgotICoKLSAqIEJh c2VkIG9uIE1hcnZlbGwgREItTVY4OEFQNTEwLUJQIERldmVsb3BtZW50IEJvYXJkIFNldHVwCi0g Ki8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4K LSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFf cGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxp bnV4L3NwaS9zcGkuaD4KLSNpbmNsdWRlIDxsaW51eC9zcGkvZmxhc2guaD4KLQotI2luY2x1ZGUg PGFzbS9tYWNoLXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgotCi0jaW5jbHVk ZSAiZG92ZS5oIgotI2luY2x1ZGUgImNvbW1vbi5oIgotCi1zdGF0aWMgc3RydWN0IG12NjQzeHhf ZXRoX3BsYXRmb3JtX2RhdGEgY21fYTUxMF9nZTAwX2RhdGEgPSB7Ci0JLnBoeV9hZGRyCT0gTVY2 NDNYWF9FVEhfUEhZX0FERFJfREVGQVVMVCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbXZfc2F0YV9w bGF0Zm9ybV9kYXRhIGNtX2E1MTBfc2F0YV9kYXRhID0gewotCS5uX3BvcnRzICAgICAgICA9IDEs Ci19OwotCi0vKgotICogU1BJIERldmljZXM6Ci0gKiBTUEkwOiAxTSBGbGFzaCBXaW5ib25kIHcy NXEzMmJ2Ci0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmxhc2hfcGxhdGZvcm1fZGF0YSBjbV9h NTEwX3NwaV9mbGFzaF9kYXRhID0gewotCS50eXBlCQk9ICJ3MjVxMzJidiIsCi19OwotCi1zdGF0 aWMgc3RydWN0IHNwaV9ib2FyZF9pbmZvIF9faW5pdGRhdGEgY21fYTUxMF9zcGlfZmxhc2hfaW5m b1tdID0gewotCXsKLQkJLm1vZGFsaWFzICAgICAgID0gIm0yNXA4MCIsCi0JCS5wbGF0Zm9ybV9k YXRhICA9ICZjbV9hNTEwX3NwaV9mbGFzaF9kYXRhLAotCQkuaXJxICAgICAgICAgICAgPSAtMSwK LQkJLm1heF9zcGVlZF9oeiAgID0gMjAwMDAwMDAsCi0JCS5idXNfbnVtICAgICAgICA9IDAsCi0J CS5jaGlwX3NlbGVjdCAgICA9IDAsCi0JfSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IGNtX2E1 MTBfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAobWFjaGluZV9pc19jbV9hNTEwKCkpCi0JCWRvdmVf cGNpZV9pbml0KDEsIDEpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN1YnN5c19pbml0Y2FsbChjbV9h NTEwX3BjaV9pbml0KTsKLQotLyogQm9hcmQgSW5pdCAqLwotc3RhdGljIHZvaWQgX19pbml0IGNt X2E1MTBfaW5pdCh2b2lkKQotewotCS8qCi0JICogQmFzaWMgRG92ZSBzZXR1cC4gTmVlZHMgdG8g YmUgY2FsbGVkIGVhcmx5LgotCSAqLwotCWRvdmVfaW5pdCgpOwotCi0JZG92ZV9nZTAwX2luaXQo JmNtX2E1MTBfZ2UwMF9kYXRhKTsKLQlkb3ZlX2VoY2kwX2luaXQoKTsKLQlkb3ZlX2VoY2kxX2lu aXQoKTsKLQlkb3ZlX3NhdGFfaW5pdCgmY21fYTUxMF9zYXRhX2RhdGEpOwotCWRvdmVfc2RpbzBf aW5pdCgpOwotCWRvdmVfc2RpbzFfaW5pdCgpOwotCWRvdmVfc3BpMF9pbml0KCk7Ci0JZG92ZV9z cGkxX2luaXQoKTsKLQlkb3ZlX3VhcnQwX2luaXQoKTsKLQlkb3ZlX3VhcnQxX2luaXQoKTsKLQlk b3ZlX2kyY19pbml0KCk7Ci0Jc3BpX3JlZ2lzdGVyX2JvYXJkX2luZm8oY21fYTUxMF9zcGlfZmxh c2hfaW5mbywKLQkJCQlBUlJBWV9TSVpFKGNtX2E1MTBfc3BpX2ZsYXNoX2luZm8pKTsKLX0KLQot TUFDSElORV9TVEFSVChDTV9BNTEwLCAiQ29tcHVsYWIgQ00tQTUxMCBCb2FyZCIpCi0JLmF0YWdf b2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2lycXMJPSBET1ZFX05SX0lSUVMsCi0JLmluaXRfbWFjaGlu ZQk9IGNtX2E1MTBfaW5pdCwKLQkubWFwX2lvCQk9IGRvdmVfbWFwX2lvLAotCS5pbml0X2Vhcmx5 CT0gZG92ZV9pbml0X2Vhcmx5LAotCS5pbml0X2lycQk9IGRvdmVfaW5pdF9pcnEsCi0JLmluaXRf dGltZQk9IGRvdmVfdGltZXJfaW5pdCwKLQkucmVzdGFydAk9IGRvdmVfcmVzdGFydCwKLU1BQ0hJ TkVfRU5ECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvY29tbW9uLmMgYi9hcmNoL2Fy bS9tYWNoLWRvdmUvY29tbW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTk3 ODUxNDU5MS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uYwor KysgL2Rldi9udWxsCkBAIC0xLDQ0OSArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1kb3ZlL2NvbW1vbi5jCi0gKgot ICogQ29yZSBmdW5jdGlvbnMgZm9yIE1hcnZlbGwgRG92ZSA4OEFQNTEwIFN5c3RlbSBPbiBDaGlw Ci0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgotI2luY2x1ZGUgPGxpbnV4 L2RtYS1tYXBwaW5nLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4 L2lvLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS9kbWEtbXZfeG9yLmg+Ci0jaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS91c2ItZWhjaS1vcmlvbi5oPgotI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L3NvYy9kb3ZlL3BtdS5oPgot I2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9jYWNoZS10YXVyb3MyLmg+Ci0jaW5jbHVkZSA8YXNtL21h Y2gvYXJjaC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgotI2luY2x1ZGUgPGFzbS9tYWNo L3RpbWUuaD4KLSNpbmNsdWRlIDxwbGF0L2NvbW1vbi5oPgotI2luY2x1ZGUgPHBsYXQvaXJxLmg+ Ci0jaW5jbHVkZSA8cGxhdC90aW1lLmg+Ci0jaW5jbHVkZSAiYnJpZGdlLXJlZ3MuaCIKLSNpbmNs dWRlICJwbS5oIgotI2luY2x1ZGUgImNvbW1vbi5oIgotCi0vKiBUaGVzZSBjYW4gZ28gYXdheSBv bmNlIERvdmUgdXNlcyB0aGUgbXZlYnUtbWJ1cyBEVCBiaW5kaW5nICovCi0jZGVmaW5lIERPVkVf TUJVU19QQ0lFMF9NRU1fVEFSR0VUICAgIDB4NAotI2RlZmluZSBET1ZFX01CVVNfUENJRTBfTUVN X0FUVFIgICAgICAweGU4Ci0jZGVmaW5lIERPVkVfTUJVU19QQ0lFMF9JT19UQVJHRVQgICAgIDB4 NAotI2RlZmluZSBET1ZFX01CVVNfUENJRTBfSU9fQVRUUiAgICAgICAweGUwCi0jZGVmaW5lIERP VkVfTUJVU19QQ0lFMV9NRU1fVEFSR0VUICAgIDB4OAotI2RlZmluZSBET1ZFX01CVVNfUENJRTFf TUVNX0FUVFIgICAgICAweGU4Ci0jZGVmaW5lIERPVkVfTUJVU19QQ0lFMV9JT19UQVJHRVQgICAg IDB4OAotI2RlZmluZSBET1ZFX01CVVNfUENJRTFfSU9fQVRUUiAgICAgICAweGUwCi0jZGVmaW5l IERPVkVfTUJVU19DRVNBX1RBUkdFVCAgICAgICAgIDB4MwotI2RlZmluZSBET1ZFX01CVVNfQ0VT QV9BVFRSICAgICAgICAgICAweDEKLSNkZWZpbmUgRE9WRV9NQlVTX0JPT1RST01fVEFSR0VUICAg ICAgMHgxCi0jZGVmaW5lIERPVkVfTUJVU19CT09UUk9NX0FUVFIgICAgICAgIDB4ZmQKLSNkZWZp bmUgRE9WRV9NQlVTX1NDUkFUQ0hQQURfVEFSR0VUICAgMHhkCi0jZGVmaW5lIERPVkVfTUJVU19T Q1JBVENIUEFEX0FUVFIgICAgIDB4MAotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEkvTyBB ZGRyZXNzIE1hcHBpbmcKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBtYXBf ZGVzYyBfX21heWJlX3VudXNlZCBkb3ZlX2lvX2Rlc2NbXSBfX2luaXRkYXRhID0gewotCXsKLQkJ LnZpcnR1YWwJPSAodW5zaWduZWQgbG9uZykgRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSwKLQkJLnBm bgkJPSBfX3BoeXNfdG9fcGZuKERPVkVfU0JfUkVHU19QSFlTX0JBU0UpLAotCQkubGVuZ3RoCQk9 IERPVkVfU0JfUkVHU19TSVpFLAotCQkudHlwZQkJPSBNVF9ERVZJQ0UsCi0JfSwgewotCQkudmly dHVhbAk9ICh1bnNpZ25lZCBsb25nKSBET1ZFX05CX1JFR1NfVklSVF9CQVNFLAotCQkucGZuCQk9 IF9fcGh5c190b19wZm4oRE9WRV9OQl9SRUdTX1BIWVNfQkFTRSksCi0JCS5sZW5ndGgJCT0gRE9W RV9OQl9SRUdTX1NJWkUsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LAotfTsKLQotdm9pZCBf X2luaXQgZG92ZV9tYXBfaW8odm9pZCkKLXsKLQlpb3RhYmxlX2luaXQoZG92ZV9pb19kZXNjLCBB UlJBWV9TSVpFKGRvdmVfaW9fZGVzYykpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAq IENMSyB0cmVlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBpbnQgZG92ZV90Y2xrOwot Ci1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGdhdGluZ19sb2NrKTsKLXN0YXRpYyBzdHJ1Y3QgY2xr ICp0Y2xrOwotCi1zdGF0aWMgc3RydWN0IGNsayBfX2luaXQgKmRvdmVfcmVnaXN0ZXJfZ2F0ZShj b25zdCBjaGFyICpuYW1lLAotCQkJCQkgICAgIGNvbnN0IGNoYXIgKnBhcmVudCwgdTggYml0X2lk eCkKLXsKLQlyZXR1cm4gY2xrX3JlZ2lzdGVyX2dhdGUoTlVMTCwgbmFtZSwgcGFyZW50LCAwLAot CQkJCSAodm9pZCBfX2lvbWVtICopQ0xPQ0tfR0FUSU5HX0NPTlRST0wsCi0JCQkJIGJpdF9pZHgs IDAsICZnYXRpbmdfbG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBkb3ZlX2Nsa19pbml0 KHZvaWQpCi17Ci0Jc3RydWN0IGNsayAqdXNiMCwgKnVzYjEsICpzYXRhLCAqcGV4MCwgKnBleDEs ICpzZGlvMCwgKnNkaW8xOwotCXN0cnVjdCBjbGsgKm5hbmQsICpjYW1lcmEsICppMnMwLCAqaTJz MSwgKmNyeXB0bywgKmFjOTcsICpwZG1hOwotCXN0cnVjdCBjbGsgKnhvcjAsICp4b3IxLCAqZ2U7 Ci0KLQl0Y2xrID0gY2xrX3JlZ2lzdGVyX2ZpeGVkX3JhdGUoTlVMTCwgInRjbGsiLCBOVUxMLCAw LCBkb3ZlX3RjbGspOwotCi0JdXNiMCA9IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgidXNiMCIsICJ0Y2xr IiwgQ0xPQ0tfR0FUSU5HX0JJVF9VU0IwKTsKLQl1c2IxID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJ1 c2IxIiwgInRjbGsiLCBDTE9DS19HQVRJTkdfQklUX1VTQjEpOwotCXNhdGEgPSBkb3ZlX3JlZ2lz dGVyX2dhdGUoInNhdGEiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfU0FUQSk7Ci0JcGV4MCA9 IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgicGV4MCIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9QQ0lF MCk7Ci0JcGV4MSA9IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgicGV4MSIsICJ0Y2xrIiwgQ0xPQ0tfR0FU SU5HX0JJVF9QQ0lFMSk7Ci0Jc2RpbzAgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoInNkaW8wIiwgInRj bGsiLCBDTE9DS19HQVRJTkdfQklUX1NESU8wKTsKLQlzZGlvMSA9IGRvdmVfcmVnaXN0ZXJfZ2F0 ZSgic2RpbzEiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfU0RJTzEpOwotCW5hbmQgPSBkb3Zl X3JlZ2lzdGVyX2dhdGUoIm5hbmQiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfTkFORCk7Ci0J Y2FtZXJhID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJjYW1lcmEiLCAidGNsayIsIENMT0NLX0dBVElO R19CSVRfQ0FNRVJBKTsKLQlpMnMwID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJpMnMwIiwgInRjbGsi LCBDTE9DS19HQVRJTkdfQklUX0kyUzApOwotCWkyczEgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoImky czEiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfSTJTMSk7Ci0JY3J5cHRvID0gZG92ZV9yZWdp c3Rlcl9nYXRlKCJjcnlwdG8iLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfQ1JZUFRPKTsKLQlh Yzk3ID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJhYzk3IiwgInRjbGsiLCBDTE9DS19HQVRJTkdfQklU X0FDOTcpOwotCXBkbWEgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoInBkbWEiLCAidGNsayIsIENMT0NL X0dBVElOR19CSVRfUERNQSk7Ci0JeG9yMCA9IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgieG9yMCIsICJ0 Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9YT1IwKTsKLQl4b3IxID0gZG92ZV9yZWdpc3Rlcl9nYXRl KCJ4b3IxIiwgInRjbGsiLCBDTE9DS19HQVRJTkdfQklUX1hPUjEpOwotCWRvdmVfcmVnaXN0ZXJf Z2F0ZSgiZ2VwaHkiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfR0lHQV9QSFkpOwotCWdlID0g ZG92ZV9yZWdpc3Rlcl9nYXRlKCJnZSIsICJnZXBoeSIsIENMT0NLX0dBVElOR19CSVRfR0JFKTsK LQotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm9yaW9uX3NwaS4wIiwgdGNsayk7Ci0Jb3Jpb25f Y2xrZGV2X2FkZChOVUxMLCAib3Jpb25fc3BpLjEiLCB0Y2xrKTsKLQlvcmlvbl9jbGtkZXZfYWRk KE5VTEwsICJvcmlvbl93ZHQiLCB0Y2xrKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJtdjY0 eHh4X2kyYy4wIiwgdGNsayk7Ci0KLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJvcmlvbi1laGNp LjAiLCB1c2IwKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJvcmlvbi1laGNpLjEiLCB1c2Ix KTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJtdjY0M3h4X2V0aF9wb3J0LjAiLCBnZSk7Ci0J b3Jpb25fY2xrZGV2X2FkZChOVUxMLCAic2F0YV9tdi4wIiwgc2F0YSk7Ci0Jb3Jpb25fY2xrZGV2 X2FkZCgiMCIsICJwY2llIiwgcGV4MCk7Ci0Jb3Jpb25fY2xrZGV2X2FkZCgiMSIsICJwY2llIiwg cGV4MSk7Ci0Jb3Jpb25fY2xrZGV2X2FkZChOVUxMLCAic2RoY2ktZG92ZS4wIiwgc2RpbzApOwot CW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgInNkaGNpLWRvdmUuMSIsIHNkaW8xKTsKLQlvcmlvbl9j bGtkZXZfYWRkKE5VTEwsICJvcmlvbl9uYW5kIiwgbmFuZCk7Ci0Jb3Jpb25fY2xrZGV2X2FkZChO VUxMLCAiY2FmZTEwMDAtY2NpYy4wIiwgY2FtZXJhKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEws ICJtdmVidS1hdWRpby4wIiwgaTJzMCk7Ci0Jb3Jpb25fY2xrZGV2X2FkZChOVUxMLCAibXZlYnUt YXVkaW8uMSIsIGkyczEpOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm12X2NyeXB0byIsIGNy eXB0byk7Ci0Jb3Jpb25fY2xrZGV2X2FkZChOVUxMLCAiZG92ZS1hYzk3IiwgYWM5Nyk7Ci0Jb3Jp b25fY2xrZGV2X2FkZChOVUxMLCAiZG92ZS1wZG1hIiwgcGRtYSk7Ci0Jb3Jpb25fY2xrZGV2X2Fk ZChOVUxMLCBNVl9YT1JfTkFNRSAiLjAiLCB4b3IwKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEws IE1WX1hPUl9OQU1FICIuMSIsIHhvcjEpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAq IEVIQ0kwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IGRvdmVfZWhjaTBfaW5p dCh2b2lkKQotewotCW9yaW9uX2VoY2lfaW5pdChET1ZFX1VTQjBfUEhZU19CQVNFLCBJUlFfRE9W RV9VU0IwLCBFSENJX1BIWV9OQSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRUhD STEKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgZG92ZV9laGNpMV9pbml0KHZv aWQpCi17Ci0Jb3Jpb25fZWhjaV8xX2luaXQoRE9WRV9VU0IxX1BIWVNfQkFTRSwgSVJRX0RPVkVf VVNCMSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR0UwMAotICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCi12b2lkIF9faW5pdCBkb3ZlX2dlMDBfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhf cGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpCi17Ci0Jb3Jpb25fZ2UwMF9pbml0KGV0aF9kYXRhLCBE T1ZFX0dFMDBfUEhZU19CQVNFLAotCQkJSVJRX0RPVkVfR0UwMF9TVU0sIElSUV9ET1ZFX0dFMDBf RVJSLAotCQkJMTYwMCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU29DIFJUQwot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZCBfX2luaXQgZG92ZV9ydGNfaW5pdCh2 b2lkKQotewotCW9yaW9uX3J0Y19pbml0KERPVkVfUlRDX1BIWVNfQkFTRSwgSVJRX0RPVkVfUlRD KTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTQVRBCi0gKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KLXZvaWQgX19pbml0IGRvdmVfc2F0YV9pbml0KHN0cnVjdCBtdl9zYXRhX3BsYXRmb3Jt X2RhdGEgKnNhdGFfZGF0YSkKLXsKLQlvcmlvbl9zYXRhX2luaXQoc2F0YV9kYXRhLCBET1ZFX1NB VEFfUEhZU19CQVNFLCBJUlFfRE9WRV9TQVRBKTsKLQotfQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKLSAqIFVBUlQwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IGRvdmVfdWFy dDBfaW5pdCh2b2lkKQotewotCW9yaW9uX3VhcnQwX2luaXQoRE9WRV9VQVJUMF9WSVJUX0JBU0Us IERPVkVfVUFSVDBfUEhZU19CQVNFLAotCQkJIElSUV9ET1ZFX1VBUlRfMCwgdGNsayk7Ci19Ci0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotICogVUFSVDEKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot dm9pZCBfX2luaXQgZG92ZV91YXJ0MV9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fdWFydDFfaW5pdChE T1ZFX1VBUlQxX1ZJUlRfQkFTRSwgRE9WRV9VQVJUMV9QSFlTX0JBU0UsCi0JCQkgSVJRX0RPVkVf VUFSVF8xLCB0Y2xrKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBVQVJUMgotICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBkb3ZlX3VhcnQyX2luaXQodm9pZCkKLXsK LQlvcmlvbl91YXJ0Ml9pbml0KERPVkVfVUFSVDJfVklSVF9CQVNFLCBET1ZFX1VBUlQyX1BIWVNf QkFTRSwKLQkJCSBJUlFfRE9WRV9VQVJUXzIsIHRjbGspOwotfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIFVBUlQzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IGRvdmVf dWFydDNfaW5pdCh2b2lkKQotewotCW9yaW9uX3VhcnQzX2luaXQoRE9WRV9VQVJUM19WSVJUX0JB U0UsIERPVkVfVUFSVDNfUEhZU19CQVNFLAotCQkJIElSUV9ET1ZFX1VBUlRfMywgdGNsayk7Ci19 Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgotICogU1BJCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LXZvaWQgX19pbml0IGRvdmVfc3BpMF9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fc3BpX2luaXQoRE9W RV9TUEkwX1BIWVNfQkFTRSk7Ci19Ci0KLXZvaWQgX19pbml0IGRvdmVfc3BpMV9pbml0KHZvaWQp Ci17Ci0Jb3Jpb25fc3BpXzFfaW5pdChET1ZFX1NQSTFfUEhZU19CQVNFKTsKLX0KLQotLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0gKiBJMkMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2lu aXQgZG92ZV9pMmNfaW5pdCh2b2lkKQotewotCW9yaW9uX2kyY19pbml0KERPVkVfSTJDX1BIWVNf QkFTRSwgSVJRX0RPVkVfSTJDLCAxMCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICog VGltZSBoYW5kbGluZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBkb3ZlX2lu aXRfZWFybHkodm9pZCkKLXsKLQlvcmlvbl90aW1lX3NldF9iYXNlKFRJTUVSX1ZJUlRfQkFTRSk7 Ci0JbXZlYnVfbWJ1c19pbml0KCJtYXJ2ZWxsLGRvdmUtbWJ1cyIsCi0JCQlCUklER0VfV0lOU19C QVNFLCBCUklER0VfV0lOU19TWiwKLQkJCURPVkVfTUNfV0lOU19CQVNFLCBET1ZFX01DX1dJTlNf U1opOwotfQotCi1zdGF0aWMgaW50IF9faW5pdCBkb3ZlX2ZpbmRfdGNsayh2b2lkKQotewotCXJl dHVybiAxNjY2NjY2Njc7Ci19Ci0KLXZvaWQgX19pbml0IGRvdmVfdGltZXJfaW5pdCh2b2lkKQot ewotCWRvdmVfdGNsayA9IGRvdmVfZmluZF90Y2xrKCk7Ci0Jb3Jpb25fdGltZV9pbml0KEJSSURH RV9WSVJUX0JBU0UsIEJSSURHRV9JTlRfVElNRVIxX0NMUiwKLQkJCUlSUV9ET1ZFX0JSSURHRSwg ZG92ZV90Y2xrKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBYT1IgMAotICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZCBfX2luaXQgZG92ZV94b3IwX2luaXQodm9pZCkK LXsKLQlvcmlvbl94b3IwX2luaXQoRE9WRV9YT1IwX1BIWVNfQkFTRSwgRE9WRV9YT1IwX0hJR0hf UEhZU19CQVNFLAotCQkJSVJRX0RPVkVfWE9SXzAwLCBJUlFfRE9WRV9YT1JfMDEpOwotfQotCi0v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAqIFhPUiAxCi0gKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0 YXRpYyB2b2lkIF9faW5pdCBkb3ZlX3hvcjFfaW5pdCh2b2lkKQotewotCW9yaW9uX3hvcjFfaW5p dChET1ZFX1hPUjFfUEhZU19CQVNFLCBET1ZFX1hPUjFfSElHSF9QSFlTX0JBU0UsCi0JCQlJUlFf RE9WRV9YT1JfMTAsIElSUV9ET1ZFX1hPUl8xMSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogU0RJTwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdTY0IHNkaW9fZG1hbWFz ayA9IERNQV9CSVRfTUFTSygzMik7Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgZG92ZV9zZGlv MF9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5zdGFydAk9IERPVkVfU0RJTzBfUEhZU19CQVNFLAot CQkuZW5kCT0gRE9WRV9TRElPMF9QSFlTX0JBU0UgKyAweGZmLAotCQkuZmxhZ3MJPSBJT1JFU09V UkNFX01FTSwKLQl9LCB7Ci0JCS5zdGFydAk9IElSUV9ET1ZFX1NESU8wLAotCQkuZW5kCT0gSVJR X0RPVkVfU0RJTzAsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAotCX0sCi19OwotCi1zdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBkb3ZlX3NkaW8wID0gewotCS5uYW1lCQk9ICJzZGhj aS1kb3ZlIiwKLQkuaWQJCT0gMCwKLQkuZGV2CQk9IHsKLQkJLmRtYV9tYXNrCQk9ICZzZGlvX2Rt YW1hc2ssCi0JCS5jb2hlcmVudF9kbWFfbWFzawk9IERNQV9CSVRfTUFTSygzMiksCi0JfSwKLQku cmVzb3VyY2UJPSBkb3ZlX3NkaW8wX3Jlc291cmNlcywKLQkubnVtX3Jlc291cmNlcwk9IEFSUkFZ X1NJWkUoZG92ZV9zZGlvMF9yZXNvdXJjZXMpLAotfTsKLQotdm9pZCBfX2luaXQgZG92ZV9zZGlv MF9pbml0KHZvaWQpCi17Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZkb3ZlX3NkaW8wKTsK LX0KLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBkb3ZlX3NkaW8xX3Jlc291cmNlc1tdID0gewot CXsKLQkJLnN0YXJ0CT0gRE9WRV9TRElPMV9QSFlTX0JBU0UsCi0JCS5lbmQJPSBET1ZFX1NESU8x X1BIWVNfQkFTRSArIDB4ZmYsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAotCX0sIHsKLQkJ LnN0YXJ0CT0gSVJRX0RPVkVfU0RJTzEsCi0JCS5lbmQJPSBJUlFfRE9WRV9TRElPMSwKLQkJLmZs YWdzCT0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlIGRvdmVfc2RpbzEgPSB7Ci0JLm5hbWUJCT0gInNkaGNpLWRvdmUiLAotCS5pZAkJPSAx LAotCS5kZXYJCT0gewotCQkuZG1hX21hc2sJCT0gJnNkaW9fZG1hbWFzaywKLQkJLmNvaGVyZW50 X2RtYV9tYXNrCT0gRE1BX0JJVF9NQVNLKDMyKSwKLQl9LAotCS5yZXNvdXJjZQk9IGRvdmVfc2Rp bzFfcmVzb3VyY2VzLAotCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShkb3ZlX3NkaW8xX3Jl c291cmNlcyksCi19OwotCi12b2lkIF9faW5pdCBkb3ZlX3NkaW8xX2luaXQodm9pZCkKLXsKLQlw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmRvdmVfc2RpbzEpOwotfQotCi12b2lkIF9faW5pdCBk b3ZlX3NldHVwX2NwdV93aW5zKHZvaWQpCi17Ci0JLyoKLQkgKiBUaGUgUENJZSB3aW5kb3dzIHdp bGwgbm8gbG9uZ2VyIGJlIHN0YXRpY2FsbHkgYWxsb2NhdGVkCi0JICogaGVyZSBvbmNlIERvdmUg aXMgbWlncmF0ZWQgdG8gdGhlIHBjaS1tdmVidSBkcml2ZXIuIFRoZQotCSAqIG5vbi1QQ0llIHdp bmRvd3Mgd2lsbCBubyBsb25nZXIgYmUgY3JlYXRlZCBoZXJlIG9uY2UgRG92ZQotCSAqIGZ1bGx5 IG1vdmVzIHRvIERULgotCSAqLwotCW12ZWJ1X21idXNfYWRkX3dpbmRvd19yZW1hcF9ieV9pZChE T1ZFX01CVVNfUENJRTBfSU9fVEFSR0VULAotCQkJCQkgIERPVkVfTUJVU19QQ0lFMF9JT19BVFRS LAotCQkJCQkgIERPVkVfUENJRTBfSU9fUEhZU19CQVNFLAotCQkJCQkgIERPVkVfUENJRTBfSU9f U0laRSwKLQkJCQkJICBET1ZFX1BDSUUwX0lPX0JVU19CQVNFKTsKLQltdmVidV9tYnVzX2FkZF93 aW5kb3dfcmVtYXBfYnlfaWQoRE9WRV9NQlVTX1BDSUUxX0lPX1RBUkdFVCwKLQkJCQkJICBET1ZF X01CVVNfUENJRTFfSU9fQVRUUiwKLQkJCQkJICBET1ZFX1BDSUUxX0lPX1BIWVNfQkFTRSwKLQkJ CQkJICBET1ZFX1BDSUUxX0lPX1NJWkUsCi0JCQkJCSAgRE9WRV9QQ0lFMV9JT19CVVNfQkFTRSk7 Ci0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKERPVkVfTUJVU19QQ0lFMF9NRU1fVEFSR0VU LAotCQkJCSAgICBET1ZFX01CVVNfUENJRTBfTUVNX0FUVFIsCi0JCQkJICAgIERPVkVfUENJRTBf TUVNX1BIWVNfQkFTRSwKLQkJCQkgICAgRE9WRV9QQ0lFMF9NRU1fU0laRSk7Ci0JbXZlYnVfbWJ1 c19hZGRfd2luZG93X2J5X2lkKERPVkVfTUJVU19QQ0lFMV9NRU1fVEFSR0VULAotCQkJCSAgICBE T1ZFX01CVVNfUENJRTFfTUVNX0FUVFIsCi0JCQkJICAgIERPVkVfUENJRTFfTUVNX1BIWVNfQkFT RSwKLQkJCQkgICAgRE9WRV9QQ0lFMV9NRU1fU0laRSk7Ci0JbXZlYnVfbWJ1c19hZGRfd2luZG93 X2J5X2lkKERPVkVfTUJVU19DRVNBX1RBUkdFVCwKLQkJCQkgICAgRE9WRV9NQlVTX0NFU0FfQVRU UiwKLQkJCQkgICAgRE9WRV9DRVNBX1BIWVNfQkFTRSwKLQkJCQkgICAgRE9WRV9DRVNBX1NJWkUp OwotCW12ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9pZChET1ZFX01CVVNfQk9PVFJPTV9UQVJHRVQs Ci0JCQkJICAgIERPVkVfTUJVU19CT09UUk9NX0FUVFIsCi0JCQkJICAgIERPVkVfQk9PVFJPTV9Q SFlTX0JBU0UsCi0JCQkJICAgIERPVkVfQk9PVFJPTV9TSVpFKTsKLQltdmVidV9tYnVzX2FkZF93 aW5kb3dfYnlfaWQoRE9WRV9NQlVTX1NDUkFUQ0hQQURfVEFSR0VULAotCQkJCSAgICBET1ZFX01C VVNfU0NSQVRDSFBBRF9BVFRSLAotCQkJCSAgICBET1ZFX1NDUkFUQ0hQQURfUEhZU19CQVNFLAot CQkJCSAgICBET1ZFX1NDUkFUQ0hQQURfU0laRSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3Vy Y2Ugb3Jpb25fd2R0X3Jlc291cmNlW10gPSB7Ci0JCURFRklORV9SRVNfTUVNKFRJTUVSX1BIWVNf QkFTRSwgMHgwNCksCi0JCURFRklORV9SRVNfTUVNKFJTVE9VVG5fTUFTS19QSFlTLCAweDA0KSwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX3dkdF9kZXZpY2UgPSB7 Ci0JLm5hbWUJCT0gIm9yaW9uX3dkdCIsCi0JLmlkCQk9IC0xLAotCS5udW1fcmVzb3VyY2VzCT0g QVJSQVlfU0laRShvcmlvbl93ZHRfcmVzb3VyY2UpLAotCS5yZXNvdXJjZQk9IG9yaW9uX3dkdF9y ZXNvdXJjZSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBfX21heWJlX3VudXNlZCBvcmlvbl93 ZHRfaW5pdCh2b2lkKQotewotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmb3Jpb25fd2R0X2Rl dmljZSk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZG92ZV9wbXVfZG9tYWluX2luaXRkYXRh IHBtdV9kb21haW5zW10gX19pbml0Y29uc3QgPSB7Ci0JewotCQkucHdyX21hc2sgPSBQTVVfUFdS X1ZQVV9QV1JfRFdOX01BU0ssCi0JCS5yc3RfbWFzayA9IFBNVV9TV19SU1RfVklERU9fTUFTSywK LQkJLmlzb19tYXNrID0gUE1VX0lTT19WSURFT19NQVNLLAotCQkubmFtZSA9ICJ2cHUtZG9tYWlu IiwKLQl9LCB7Ci0JCS5wd3JfbWFzayA9IFBNVV9QV1JfR1BVX1BXUl9EV05fTUFTSywKLQkJLnJz dF9tYXNrID0gUE1VX1NXX1JTVF9HUFVfTUFTSywKLQkJLmlzb19tYXNrID0gUE1VX0lTT19HUFVf TUFTSywKLQkJLm5hbWUgPSAiZ3B1LWRvbWFpbiIsCi0JfSwgewotCQkvKiBzZW50aW5lbCAqLwot CX0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRvdmVfcG11X2luaXRkYXRhIHBtdV9kYXRh IF9faW5pdGNvbnN0ID0gewotCS5wbWNfYmFzZSA9IERPVkVfUE1VX1ZJUlRfQkFTRSwKLQkucG11 X2Jhc2UgPSBET1ZFX1BNVV9WSVJUX0JBU0UgKyAweDgwMDAsCi0JLmlycSA9IElSUV9ET1ZFX1BN VSwKLQkuaXJxX2RvbWFpbl9zdGFydCA9IElSUV9ET1ZFX1BNVV9TVEFSVCwKLQkuZG9tYWlucyA9 IHBtdV9kb21haW5zLAotfTsKLQotdm9pZCBfX2luaXQgZG92ZV9pbml0KHZvaWQpCi17Ci0JcHJf aW5mbygiRG92ZSA4OEFQNTEwIFNvQywgVENMSyA9ICVkIE1Iei5cbiIsCi0JCShkb3ZlX3RjbGsg KyA0OTk5OTkpIC8gMTAwMDAwMCk7Ci0KLSNpZmRlZiBDT05GSUdfQ0FDSEVfVEFVUk9TMgotCXRh dXJvczJfaW5pdCgwKTsKLSNlbmRpZgotCWRvdmVfc2V0dXBfY3B1X3dpbnMoKTsKLQotCS8qIFNl dHVwIHJvb3Qgb2YgY2xrIHRyZWUgKi8KLQlkb3ZlX2Nsa19pbml0KCk7Ci0KLQkvKiBpbnRlcm5h bCBkZXZpY2VzIHRoYXQgZXZlcnkgYm9hcmQgaGFzICovCi0JZG92ZV9pbml0X3BtdV9sZWdhY3ko JnBtdV9kYXRhKTsKLQlkb3ZlX3J0Y19pbml0KCk7Ci0JZG92ZV94b3IwX2luaXQoKTsKLQlkb3Zl X3hvcjFfaW5pdCgpOwotfQotCi12b2lkIGRvdmVfcmVzdGFydChlbnVtIHJlYm9vdF9tb2RlIG1v ZGUsIGNvbnN0IGNoYXIgKmNtZCkKLXsKLQkvKgotCSAqIEVuYWJsZSBzb2Z0IHJlc2V0IHRvIGFz c2VydCBSU1RPVVRuLgotCSAqLwotCXdyaXRlbChTT0ZUX1JFU0VUX09VVF9FTiwgUlNUT1VUbl9N QVNLKTsKLQotCS8qCi0JICogQXNzZXJ0IHNvZnQgcmVzZXQuCi0JICovCi0Jd3JpdGVsKFNPRlRf UkVTRVQsIFNZU1RFTV9TT0ZUX1JFU0VUKTsKLQotCXdoaWxlICgxKQotCQk7Ci19CmRpZmYgLS1n aXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvY29tbW9uLmggYi9hcmNoL2FybS9tYWNoLWRvdmUvY29t bW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZWJjNDEzZDY4Yy4uMDAwMDAw MDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uaAorKysgL2Rldi9udWxsCkBA IC0xLDQ2ICswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkg Ki8KLS8qCi0gKiBhcmNoL2FybS9tYWNoLWRvdmUvY29tbW9uLmgKLSAqCi0gKiBDb3JlIGZ1bmN0 aW9ucyBmb3IgTWFydmVsbCBEb3ZlIDg4QVA1MTAgU3lzdGVtIE9uIENoaXAKLSAqLwotCi0jaWZu ZGVmIF9fQVJDSF9ET1ZFX0NPTU1PTl9ICi0jZGVmaW5lIF9fQVJDSF9ET1ZFX0NPTU1PTl9ICi0K LSNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KLQotc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3Jt X2RhdGE7Ci1zdHJ1Y3QgbXZfc2F0YV9wbGF0Zm9ybV9kYXRhOwotCi1leHRlcm4gdm9pZCBkb3Zl X3RpbWVyX2luaXQodm9pZCk7Ci0KLS8qCi0gKiBCYXNpYyBEb3ZlIGluaXQgZnVuY3Rpb25zIHVz ZWQgZWFybHkgYnkgbWFjaGluZS1zZXR1cC4KLSAqLwotdm9pZCBkb3ZlX21hcF9pbyh2b2lkKTsK LXZvaWQgZG92ZV9pbml0KHZvaWQpOwotdm9pZCBkb3ZlX2luaXRfZWFybHkodm9pZCk7Ci12b2lk IGRvdmVfaW5pdF9pcnEodm9pZCk7Ci12b2lkIGRvdmVfc2V0dXBfY3B1X3dpbnModm9pZCk7Ci12 b2lkIGRvdmVfZ2UwMF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpldGhf ZGF0YSk7Ci12b2lkIGRvdmVfc2F0YV9pbml0KHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEg KnNhdGFfZGF0YSk7Ci0jaWZkZWYgQ09ORklHX1BDSQotdm9pZCBkb3ZlX3BjaWVfaW5pdChpbnQg aW5pdF9wb3J0MCwgaW50IGluaXRfcG9ydDEpOwotI2Vsc2UKLXN0YXRpYyBpbmxpbmUgdm9pZCBk b3ZlX3BjaWVfaW5pdChpbnQgaW5pdF9wb3J0MCwgaW50IGluaXRfcG9ydDEpIHsgfQotI2VuZGlm Ci12b2lkIGRvdmVfZWhjaTBfaW5pdCh2b2lkKTsKLXZvaWQgZG92ZV9laGNpMV9pbml0KHZvaWQp Owotdm9pZCBkb3ZlX3VhcnQwX2luaXQodm9pZCk7Ci12b2lkIGRvdmVfdWFydDFfaW5pdCh2b2lk KTsKLXZvaWQgZG92ZV91YXJ0Ml9pbml0KHZvaWQpOwotdm9pZCBkb3ZlX3VhcnQzX2luaXQodm9p ZCk7Ci12b2lkIGRvdmVfc3BpMF9pbml0KHZvaWQpOwotdm9pZCBkb3ZlX3NwaTFfaW5pdCh2b2lk KTsKLXZvaWQgZG92ZV9pMmNfaW5pdCh2b2lkKTsKLXZvaWQgZG92ZV9zZGlvMF9pbml0KHZvaWQp Owotdm9pZCBkb3ZlX3NkaW8xX2luaXQodm9pZCk7Ci12b2lkIGRvdmVfcmVzdGFydChlbnVtIHJl Ym9vdF9tb2RlLCBjb25zdCBjaGFyICopOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L21hY2gtZG92ZS9kb3ZlLmggYi9hcmNoL2FybS9tYWNoLWRvdmUvZG92ZS5oCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBlNTA1NGUzYjBiNzguLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLWRvdmUvZG92ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLS8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qIEdlbmVyaWMgZGVm aW5pdGlvbnMgZm9yIE1hcnZlbGwgRG92ZSA4OEFQNTEwIFNvQyAqLwotCi0jaWZuZGVmIF9fQVNN X0FSQ0hfRE9WRV9ICi0jZGVmaW5lIF9fQVNNX0FSQ0hfRE9WRV9ICi0KLSNpbmNsdWRlICJpcnFz LmgiCi0KLS8qCi0gKiBNYXJ2ZWxsIERvdmUgYWRkcmVzcyBtYXBzLgotICoKLSAqIHBoeXMJCXZp cnQJCXNpemUKLSAqIGM4MDAwMDAwCWZkYjAwMDAwCTFNCUNyeXB0b2dyYXBoaWMgU1JBTQotICog ZTAwMDAwMDAJQHJ1bnRpbWUJMTI4TQlQQ0llLTAgTWVtb3J5IHNwYWNlCi0gKiBlODAwMDAwMAlA cnVudGltZQkxMjhNCVBDSWUtMSBNZW1vcnkgc3BhY2UKLSAqIGYxMDAwMDAwCWZlYzAwMDAwCTFN CW9uLWNoaXAgc291dGgtYnJpZGdlIHJlZ2lzdGVycwotICogZjE4MDAwMDAJZmU0MDAwMDAJOE0J b24tY2hpcCBub3J0aC1icmlkZ2UgcmVnaXN0ZXJzCi0gKiBmMjAwMDAwMAlmZWUwMDAwMAkxTQlQ Q0llLTAgSS9PIHNwYWNlCi0gKiBmMjEwMDAwMAlmZWYwMDAwMAkxTQlQQ0llLTEgSS9PIHNwYWNl Ci0gKi8KLQotI2RlZmluZSBET1ZFX0NFU0FfUEhZU19CQVNFCQkweGM4MDAwMDAwCi0jZGVmaW5l IERPVkVfQ0VTQV9WSVJUX0JBU0UJCUlPTUVNKDB4ZmRiMDAwMDApCi0jZGVmaW5lIERPVkVfQ0VT QV9TSVpFCQkJU1pfMU0KLQotI2RlZmluZSBET1ZFX1BDSUUwX01FTV9QSFlTX0JBU0UJMHhlMDAw MDAwMAotI2RlZmluZSBET1ZFX1BDSUUwX01FTV9TSVpFCQlTWl8xMjhNCi0KLSNkZWZpbmUgRE9W RV9QQ0lFMV9NRU1fUEhZU19CQVNFCTB4ZTgwMDAwMDAKLSNkZWZpbmUgRE9WRV9QQ0lFMV9NRU1f U0laRQkJU1pfMTI4TQotCi0jZGVmaW5lIERPVkVfQk9PVFJPTV9QSFlTX0JBU0UJCTB4ZjgwMDAw MDAKLSNkZWZpbmUgRE9WRV9CT09UUk9NX1NJWkUJCVNaXzEyOE0KLQotI2RlZmluZSBET1ZFX1ND UkFUQ0hQQURfUEhZU19CQVNFCTB4ZjAwMDAwMDAKLSNkZWZpbmUgRE9WRV9TQ1JBVENIUEFEX1ZJ UlRfQkFTRQlJT01FTSgweGZkZDAwMDAwKQotI2RlZmluZSBET1ZFX1NDUkFUQ0hQQURfU0laRQkJ U1pfMU0KLQotI2RlZmluZSBET1ZFX1NCX1JFR1NfUEhZU19CQVNFCQkweGYxMDAwMDAwCi0jZGVm aW5lIERPVkVfU0JfUkVHU19WSVJUX0JBU0UJCUlPTUVNKDB4ZmVjMDAwMDApCi0jZGVmaW5lIERP VkVfU0JfUkVHU19TSVpFCQlTWl8xTQotCi0jZGVmaW5lIERPVkVfTkJfUkVHU19QSFlTX0JBU0UJ CTB4ZjE4MDAwMDAKLSNkZWZpbmUgRE9WRV9OQl9SRUdTX1ZJUlRfQkFTRQkJSU9NRU0oMHhmZTQw MDAwMCkKLSNkZWZpbmUgRE9WRV9OQl9SRUdTX1NJWkUJCVNaXzhNCi0KLSNkZWZpbmUgRE9WRV9Q Q0lFMF9JT19QSFlTX0JBU0UJCTB4ZjIwMDAwMDAKLSNkZWZpbmUgRE9WRV9QQ0lFMF9JT19CVVNf QkFTRQkJMHgwMDAwMDAwMAotI2RlZmluZSBET1ZFX1BDSUUwX0lPX1NJWkUJCVNaXzY0SwotCi0j ZGVmaW5lIERPVkVfUENJRTFfSU9fUEhZU19CQVNFCQkweGYyMTAwMDAwCi0jZGVmaW5lIERPVkVf UENJRTFfSU9fQlVTX0JBU0UJCTB4MDAwMTAwMDAKLSNkZWZpbmUgRE9WRV9QQ0lFMV9JT19TSVpF CQlTWl82NEsKLQotLyoKLSAqIERvdmUgQ29yZSBSZWdpc3RlcnMgTWFwCi0gKi8KLQotLyogU1BJ LCBJMkMsIFVBUlQgKi8KLSNkZWZpbmUgRE9WRV9JMkNfUEhZU19CQVNFCShET1ZFX1NCX1JFR1Nf UEhZU19CQVNFICsgMHgxMTAwMCkKLSNkZWZpbmUgRE9WRV9VQVJUMF9QSFlTX0JBU0UJKERPVkVf U0JfUkVHU19QSFlTX0JBU0UgKyAweDEyMDAwKQotI2RlZmluZSBET1ZFX1VBUlQwX1ZJUlRfQkFT RQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4MTIwMDApCi0jZGVmaW5lIERPVkVfVUFSVDFf UEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHgxMjEwMCkKLSNkZWZpbmUgRE9W RV9VQVJUMV9WSVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJUX0JBU0UgKyAweDEyMTAwKQotI2Rl ZmluZSBET1ZFX1VBUlQyX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSArIDB4MTIy MDApCi0jZGVmaW5lIERPVkVfVUFSVDJfVklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNF ICsgMHgxMjIwMCkKLSNkZWZpbmUgRE9WRV9VQVJUM19QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19Q SFlTX0JBU0UgKyAweDEyMzAwKQotI2RlZmluZSBET1ZFX1VBUlQzX1ZJUlRfQkFTRQkoRE9WRV9T Ql9SRUdTX1ZJUlRfQkFTRSArIDB4MTIzMDApCi0jZGVmaW5lIERPVkVfU1BJMF9QSFlTX0JBU0UJ KERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweDEwNjAwKQotI2RlZmluZSBET1ZFX1NQSTFfUEhZ U19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHgxNDYwMCkKLQotLyogTm9ydGgtU291 dGggQnJpZGdlICovCi0jZGVmaW5lIEJSSURHRV9WSVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJU X0JBU0UgKyAweDIwMDAwKQotI2RlZmluZSBCUklER0VfUEhZU19CQVNFCShET1ZFX1NCX1JFR1Nf UEhZU19CQVNFICsgMHgyMDAwMCkKLSNkZWZpbmUgIEJSSURHRV9XSU5TX0JBU0UgICAgICAgKEJS SURHRV9QSFlTX0JBU0UpCi0jZGVmaW5lICBCUklER0VfV0lOU19TWiAgICAgICAgICgweDgwKQot Ci0vKiBDcnlwdG9ncmFwaGljIEVuZ2luZSAqLwotI2RlZmluZSBET1ZFX0NSWVBUX1BIWVNfQkFT RQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSArIDB4MzAwMDApCi0KLS8qIFBDSWUgMCAqLwotI2Rl ZmluZSBET1ZFX1BDSUUwX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4NDAw MDApCi0KLS8qIFVTQiAqLwotI2RlZmluZSBET1ZFX1VTQjBfUEhZU19CQVNFCShET1ZFX1NCX1JF R1NfUEhZU19CQVNFICsgMHg1MDAwMCkKLSNkZWZpbmUgRE9WRV9VU0IxX1BIWVNfQkFTRQkoRE9W RV9TQl9SRUdTX1BIWVNfQkFTRSArIDB4NTEwMDApCi0KLS8qIFhPUiAwIEVuZ2luZSAqLwotI2Rl ZmluZSBET1ZFX1hPUjBfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHg2MDgw MCkKLSNkZWZpbmUgRE9WRV9YT1IwX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSAr IDB4NjA4MDApCi0jZGVmaW5lIERPVkVfWE9SMF9ISUdIX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdT X1BIWVNfQkFTRSArIDB4NjBBMDApCi0jZGVmaW5lIERPVkVfWE9SMF9ISUdIX1ZJUlRfQkFTRQko RE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4NjBBMDApCi0KLS8qIFhPUiAxIEVuZ2luZSAqLwot I2RlZmluZSBET1ZFX1hPUjFfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHg2 MDkwMCkKLSNkZWZpbmUgRE9WRV9YT1IxX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFT RSArIDB4NjA5MDApCi0jZGVmaW5lIERPVkVfWE9SMV9ISUdIX1BIWVNfQkFTRQkoRE9WRV9TQl9S RUdTX1BIWVNfQkFTRSArIDB4NjBCMDApCi0jZGVmaW5lIERPVkVfWE9SMV9ISUdIX1ZJUlRfQkFT RQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4NjBCMDApCi0KLS8qIEdpZ2FiaXQgRXRoZXJu ZXQgKi8KLSNkZWZpbmUgRE9WRV9HRTAwX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFT RSArIDB4NzAwMDApCi0KLS8qIFBDSWUgMSAqLwotI2RlZmluZSBET1ZFX1BDSUUxX1ZJUlRfQkFT RQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4ODAwMDApCi0KLS8qIENBRkUgKi8KLSNkZWZp bmUgRE9WRV9TRElPMF9QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweDkyMDAw KQotI2RlZmluZSBET1ZFX1NESU8xX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSAr IDB4OTAwMDApCi0jZGVmaW5lIERPVkVfQ0FNX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNf QkFTRSArIDB4OTQwMDApCi0jZGVmaW5lIERPVkVfQ0FGRV9XSU5fUEhZU19CQVNFCShET1ZFX1NC X1JFR1NfUEhZU19CQVNFICsgMHg5ODAwMCkKLQotLyogU0FUQSAqLwotI2RlZmluZSBET1ZFX1NB VEFfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHhhMDAwMCkKLQotLyogSTJT L1NQRElGICovCi0jZGVmaW5lIERPVkVfQVVEMF9QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlT X0JBU0UgKyAweGIwMDAwKQotI2RlZmluZSBET1ZFX0FVRDFfUEhZU19CQVNFCShET1ZFX1NCX1JF R1NfUEhZU19CQVNFICsgMHhiNDAwMCkKLQotLyogTkFORCBGbGFzaCBDb250cm9sbGVyICovCi0j ZGVmaW5lIERPVkVfTkZDX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSArIDB4YzAw MDApCi0KLS8qIE1QUCwgR1BJTywgUmVzZXQgU2FtcGxpbmcgKi8KLSNkZWZpbmUgRE9WRV9NUFBf VklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHhkMDIwMCkKLSNkZWZpbmUgRE9W RV9QTVVfTVBQX0dFTkVSQUxfQ1RSTCAoRE9WRV9NUFBfVklSVF9CQVNFICsgMHgxMCkKLSNkZWZp bmUgRE9WRV9SRVNFVF9TQU1QTEVfTE8JKERPVkVfTVBQX1ZJUlRfQkFTRSArIDB4MDE0KQotI2Rl ZmluZSBET1ZFX1JFU0VUX1NBTVBMRV9ISQkoRE9WRV9NUFBfVklSVF9CQVNFICsgMHgwMTgpCi0j ZGVmaW5lIERPVkVfR1BJT19MT19WSVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJUX0JBU0UgKyAw eGQwNDAwKQotI2RlZmluZSBET1ZFX0dQSU9fSElfVklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklS VF9CQVNFICsgMHhkMDQyMCkKLSNkZWZpbmUgRE9WRV9HUElPMl9WSVJUX0JBU0UgICAgKERPVkVf U0JfUkVHU19WSVJUX0JBU0UgKyAweGU4NDAwKQotI2RlZmluZSBET1ZFX01QUF9HRU5FUkFMX1ZJ UlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4ZTgwM2MpCi0jZGVmaW5lICBET1ZF X0FVMV9TUERJRk9fR1BJT19FTgkoMSA8PCAxKQotI2RlZmluZSAgRE9WRV9OQU5EX0dQSU9fRU4J CSgxIDw8IDApCi0jZGVmaW5lIERPVkVfTVBQX0NUUkw0X1ZJUlRfQkFTRQkoRE9WRV9HUElPX0xP X1ZJUlRfQkFTRSArIDB4NDApCi0jZGVmaW5lICBET1ZFX1NQSV9HUElPX1NFTAkJKDEgPDwgNSkK LSNkZWZpbmUgIERPVkVfVUFSVDFfR1BJT19TRUwJCSgxIDw8IDQpCi0jZGVmaW5lICBET1ZFX0FV MV9HUElPX1NFTAkJKDEgPDwgMykKLSNkZWZpbmUgIERPVkVfQ0FNX0dQSU9fU0VMCQkoMSA8PCAy KQotI2RlZmluZSAgRE9WRV9TRDFfR1BJT19TRUwJCSgxIDw8IDEpCi0jZGVmaW5lICBET1ZFX1NE MF9HUElPX1NFTAkJKDEgPDwgMCkKLQotLyogUG93ZXIgTWFuYWdlbWVudCAqLwotI2RlZmluZSBE T1ZFX1BNVV9WSVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJUX0JBU0UgKyAweGQwMDAwKQotI2Rl ZmluZSBET1ZFX1BNVV9TSUdfQ1RSTAkoRE9WRV9QTVVfVklSVF9CQVNFICsgMHg4MDJjKQotCi0v KiBSZWFsIFRpbWUgQ2xvY2sgKi8KLSNkZWZpbmUgRE9WRV9SVENfUEhZU19CQVNFCShET1ZFX1NC X1JFR1NfUEhZU19CQVNFICsgMHhkODUwMCkKLQotLyogQUM5NyAqLwotI2RlZmluZSBET1ZFX0FD OTdfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHhlMDAwMCkKLSNkZWZpbmUg RE9WRV9BQzk3X1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4ZTAwMDApCi0K LS8qIFBlcmlwaGVyYWwgRE1BICovCi0jZGVmaW5lIERPVkVfUERNQV9QSFlTX0JBU0UJKERPVkVf U0JfUkVHU19QSFlTX0JBU0UgKyAweGU0MDAwKQotI2RlZmluZSBET1ZFX1BETUFfVklSVF9CQVNF CShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHhlNDAwMCkKLQotI2RlZmluZSBET1ZFX0dMT0JB TF9DT05GSUdfMQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4ZTgwMkMpCi0jZGVmaW5lICBE T1ZFX1RXU0lfRU5BQkxFX09QVElPTjEJKDEgPDwgNykKLSNkZWZpbmUgRE9WRV9HTE9CQUxfQ09O RklHXzIJKERPVkVfU0JfUkVHU19WSVJUX0JBU0UgKyAweGU4MDMwKQotI2RlZmluZSAgRE9WRV9U V1NJX0VOQUJMRV9PUFRJT04yCSgxIDw8IDIwKQotI2RlZmluZSAgRE9WRV9UV1NJX0VOQUJMRV9P UFRJT04zCSgxIDw8IDIxKQotI2RlZmluZSAgRE9WRV9UV1NJX09QVElPTjNfR1BJTwkJKDEgPDwg MjIpCi0jZGVmaW5lIERPVkVfU1NQX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSAr IDB4ZWMwMDApCi0jZGVmaW5lIERPVkVfU1NQX0NUUkxfU1RBVFVTXzEJKERPVkVfU0JfUkVHU19W SVJUX0JBU0UgKyAweGU4MDM0KQotI2RlZmluZSAgRE9WRV9TU1BfT05fQVUxCQkoMSA8PCAwKQot I2RlZmluZSAgRE9WRV9TU1BfQ0xPQ0tfRU5BQkxFCQkoMSA8PCAxKQotI2RlZmluZSAgRE9WRV9T U1BfQlBCX0NMT0NLX1NSQ19TU1AJKDEgPDwgMTEpCi0vKiBNZW1vcnkgQ29udHJvbGxlciAqLwot I2RlZmluZSBET1ZFX01DX1BIWVNfQkFTRSAgICAgICAoRE9WRV9OQl9SRUdTX1BIWVNfQkFTRSAr IDB4MDAwMDApCi0jZGVmaW5lICBET1ZFX01DX1dJTlNfQkFTRSAgICAgIChET1ZFX01DX1BIWVNf QkFTRSArIDB4MTAwKQotI2RlZmluZSAgRE9WRV9NQ19XSU5TX1NaICAgICAgICAoMHg4KQotI2Rl ZmluZSBET1ZFX01DX1ZJUlRfQkFTRQkoRE9WRV9OQl9SRUdTX1ZJUlRfQkFTRSArIDB4MDAwMDAp Ci0KLS8qIExDRCBDb250cm9sbGVyICovCi0jZGVmaW5lIERPVkVfTENEX1BIWVNfQkFTRQkoRE9W RV9OQl9SRUdTX1BIWVNfQkFTRSArIDB4MTAwMDApCi0jZGVmaW5lIERPVkVfTENEMV9QSFlTX0JB U0UJKERPVkVfTkJfUkVHU19QSFlTX0JBU0UgKyAweDIwMDAwKQotI2RlZmluZSBET1ZFX0xDRDJf UEhZU19CQVNFCShET1ZFX05CX1JFR1NfUEhZU19CQVNFICsgMHgxMDAwMCkKLSNkZWZpbmUgRE9W RV9MQ0RfRENPTl9QSFlTX0JBU0UJKERPVkVfTkJfUkVHU19QSFlTX0JBU0UgKyAweDMwMDAwKQot Ci0vKiBHcmFwaGljIEVuZ2luZSAqLwotI2RlZmluZSBET1ZFX0dQVV9QSFlTX0JBU0UJKERPVkVf TkJfUkVHU19QSFlTX0JBU0UgKyAweDQwMDAwKQotCi0vKiBWaWRlbyBFbmdpbmUgKi8KLSNkZWZp bmUgRE9WRV9WUFVfUEhZU19CQVNFCShET1ZFX05CX1JFR1NfUEhZU19CQVNFICsgMHg0MDAwMDAp Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL2lycS5jIGIvYXJjaC9h cm0vbWFjaC1kb3ZlL2lycS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjdhOGY4 N2JjMmUuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWRvdmUvaXJxLmMKKysrIC9k ZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1kb3ZlL2lycS5jCi0gKgotICogRG92ZSBJ UlEgaGFuZGxpbmcuCi0gKi8KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGlu dXgvaXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvaW8uaD4KLSNpbmNsdWRlIDxhc20vZXhjZXB0aW9u Lmg+Ci0KLSNpbmNsdWRlIDxwbGF0L2lycS5oPgotI2luY2x1ZGUgPHBsYXQvb3Jpb24tZ3Bpby5o PgotCi0jaW5jbHVkZSAicG0uaCIKLSNpbmNsdWRlICJicmlkZ2UtcmVncy5oIgotI2luY2x1ZGUg ImNvbW1vbi5oIgotCi1zdGF0aWMgaW50IF9faW5pdGRhdGEgZ3BpbzBfaXJxc1s0XSA9IHsKLQlJ UlFfRE9WRV9HUElPXzBfNywKLQlJUlFfRE9WRV9HUElPXzhfMTUsCi0JSVJRX0RPVkVfR1BJT18x Nl8yMywKLQlJUlFfRE9WRV9HUElPXzI0XzMxLAotfTsKLQotc3RhdGljIGludCBfX2luaXRkYXRh IGdwaW8xX2lycXNbNF0gPSB7Ci0JSVJRX0RPVkVfSElHSF9HUElPLAotCTAsCi0JMCwKLQkwLAot fTsKLQotc3RhdGljIGludCBfX2luaXRkYXRhIGdwaW8yX2lycXNbNF0gPSB7Ci0JMCwKLQkwLAot CTAsCi0JMCwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW9tZW0gKmRvdmVfaXJxX2Jhc2UgPSBJUlFf VklSVF9CQVNFOwotCi1zdGF0aWMgYXNtbGlua2FnZSB2b2lkCi1fX2V4Y2VwdGlvbl9pcnFfZW50 cnkgZG92ZV9sZWdhY3lfaGFuZGxlX2lycShzdHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQl1MzIg c3RhdDsKLQotCXN0YXQgPSByZWFkbF9yZWxheGVkKGRvdmVfaXJxX2Jhc2UgKyBJUlFfQ0FVU0Vf TE9XX09GRik7Ci0Jc3RhdCAmPSByZWFkbF9yZWxheGVkKGRvdmVfaXJxX2Jhc2UgKyBJUlFfTUFT S19MT1dfT0ZGKTsKLQlpZiAoc3RhdCkgewotCQl1bnNpZ25lZCBpbnQgaHdpcnEgPSAxICsgX19m bHMoc3RhdCk7Ci0JCWhhbmRsZV9JUlEoaHdpcnEsIHJlZ3MpOwotCQlyZXR1cm47Ci0JfQotCXN0 YXQgPSByZWFkbF9yZWxheGVkKGRvdmVfaXJxX2Jhc2UgKyBJUlFfQ0FVU0VfSElHSF9PRkYpOwot CXN0YXQgJj0gcmVhZGxfcmVsYXhlZChkb3ZlX2lycV9iYXNlICsgSVJRX01BU0tfSElHSF9PRkYp OwotCWlmIChzdGF0KSB7Ci0JCXVuc2lnbmVkIGludCBod2lycSA9IDMzICsgX19mbHMoc3RhdCk7 Ci0JCWhhbmRsZV9JUlEoaHdpcnEsIHJlZ3MpOwotCQlyZXR1cm47Ci0JfQotfQotCi12b2lkIF9f aW5pdCBkb3ZlX2luaXRfaXJxKHZvaWQpCi17Ci0Jb3Jpb25faXJxX2luaXQoMSwgSVJRX1ZJUlRf QkFTRSArIElSUV9NQVNLX0xPV19PRkYpOwotCW9yaW9uX2lycV9pbml0KDMzLCBJUlFfVklSVF9C QVNFICsgSVJRX01BU0tfSElHSF9PRkYpOwotCi0Jc2V0X2hhbmRsZV9pcnEoZG92ZV9sZWdhY3lf aGFuZGxlX2lycSk7Ci0KLQkvKgotCSAqIEluaXRpYWxpemUgZ3Bpb2xpYiBmb3IgR1BJT3MgMC03 MS4KLQkgKi8KLQlvcmlvbl9ncGlvX2luaXQoMCwgMzIsIERPVkVfR1BJT19MT19WSVJUX0JBU0Us IDAsCi0JCQlJUlFfRE9WRV9HUElPX1NUQVJULCBncGlvMF9pcnFzKTsKLQotCW9yaW9uX2dwaW9f aW5pdCgzMiwgMzIsIERPVkVfR1BJT19ISV9WSVJUX0JBU0UsIDAsCi0JCQlJUlFfRE9WRV9HUElP X1NUQVJUICsgMzIsIGdwaW8xX2lycXMpOwotCi0Jb3Jpb25fZ3Bpb19pbml0KDY0LCA4LCBET1ZF X0dQSU8yX1ZJUlRfQkFTRSwgMCwKLQkJCUlSUV9ET1ZFX0dQSU9fU1RBUlQgKyA2NCwgZ3BpbzJf aXJxcyk7Ci19CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvaXJxcy5oIGIvYXJjaC9h cm0vbWFjaC1kb3ZlL2lycXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2NzA5 OGM3MDQyLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL2lycXMuaAorKysg L2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkgKi8KLS8qIElSUSBkZWZpbml0aW9ucyBmb3IgTWFydmVsbCBEb3ZlIDg4QVA1 MTAgU29DICovCi0KLSNpZm5kZWYgX19BU01fQVJDSF9JUlFTX0gKLSNkZWZpbmUgX19BU01fQVJD SF9JUlFTX0gKLQotLyoKLSAqIERvdmUgTG93IEludGVycnVwdCBDb250cm9sbGVyCi0gKi8KLSNk ZWZpbmUgSVJRX0RPVkVfQlJJREdFCQkoMSArIDApCi0jZGVmaW5lIElSUV9ET1ZFX0gyQwkJKDEg KyAxKQotI2RlZmluZSBJUlFfRE9WRV9DMkgJCSgxICsgMikKLSNkZWZpbmUgSVJRX0RPVkVfTkFO RAkJKDEgKyAzKQotI2RlZmluZSBJUlFfRE9WRV9QRE1BCQkoMSArIDQpCi0jZGVmaW5lIElSUV9E T1ZFX1NQSTEJCSgxICsgNSkKLSNkZWZpbmUgSVJRX0RPVkVfU1BJMAkJKDEgKyA2KQotI2RlZmlu ZSBJUlFfRE9WRV9VQVJUXzAJCSgxICsgNykKLSNkZWZpbmUgSVJRX0RPVkVfVUFSVF8xCQkoMSAr IDgpCi0jZGVmaW5lIElSUV9ET1ZFX1VBUlRfMgkJKDEgKyA5KQotI2RlZmluZSBJUlFfRE9WRV9V QVJUXzMJCSgxICsgMTApCi0jZGVmaW5lIElSUV9ET1ZFX0kyQwkJKDEgKyAxMSkKLSNkZWZpbmUg SVJRX0RPVkVfR1BJT18wXzcJKDEgKyAxMikKLSNkZWZpbmUgSVJRX0RPVkVfR1BJT184XzE1CSgx ICsgMTMpCi0jZGVmaW5lIElSUV9ET1ZFX0dQSU9fMTZfMjMJKDEgKyAxNCkKLSNkZWZpbmUgSVJR X0RPVkVfUENJRTBfRVJSCSgxICsgMTUpCi0jZGVmaW5lIElSUV9ET1ZFX1BDSUUwCQkoMSArIDE2 KQotI2RlZmluZSBJUlFfRE9WRV9QQ0lFMV9FUlIJKDEgKyAxNykKLSNkZWZpbmUgSVJRX0RPVkVf UENJRTEJCSgxICsgMTgpCi0jZGVmaW5lIElSUV9ET1ZFX0kyUzAJCSgxICsgMTkpCi0jZGVmaW5l IElSUV9ET1ZFX0kyUzBfRVJSCSgxICsgMjApCi0jZGVmaW5lIElSUV9ET1ZFX0kyUzEJCSgxICsg MjEpCi0jZGVmaW5lIElSUV9ET1ZFX0kyUzFfRVJSCSgxICsgMjIpCi0jZGVmaW5lIElSUV9ET1ZF X1VTQl9FUlIJKDEgKyAyMykKLSNkZWZpbmUgSVJRX0RPVkVfVVNCMAkJKDEgKyAyNCkKLSNkZWZp bmUgSVJRX0RPVkVfVVNCMQkJKDEgKyAyNSkKLSNkZWZpbmUgSVJRX0RPVkVfR0UwMF9SWAkoMSAr IDI2KQotI2RlZmluZSBJUlFfRE9WRV9HRTAwX1RYCSgxICsgMjcpCi0jZGVmaW5lIElSUV9ET1ZF X0dFMDBfTUlTQwkoMSArIDI4KQotI2RlZmluZSBJUlFfRE9WRV9HRTAwX1NVTQkoMSArIDI5KQot I2RlZmluZSBJUlFfRE9WRV9HRTAwX0VSUgkoMSArIDMwKQotI2RlZmluZSBJUlFfRE9WRV9DUllQ VE8JCSgxICsgMzEpCi0KLS8qCi0gKiBEb3ZlIEhpZ2ggSW50ZXJydXB0IENvbnRyb2xsZXIKLSAq LwotI2RlZmluZSBJUlFfRE9WRV9BQzk3CQkoMSArIDMyKQotI2RlZmluZSBJUlFfRE9WRV9QTVUJ CSgxICsgMzMpCi0jZGVmaW5lIElSUV9ET1ZFX0NBTQkJKDEgKyAzNCkKLSNkZWZpbmUgSVJRX0RP VkVfU0RJTzAJCSgxICsgMzUpCi0jZGVmaW5lIElSUV9ET1ZFX1NESU8xCQkoMSArIDM2KQotI2Rl ZmluZSBJUlFfRE9WRV9TRElPMF9XQUtFVVAJKDEgKyAzNykKLSNkZWZpbmUgSVJRX0RPVkVfU0RJ TzFfV0FLRVVQCSgxICsgMzgpCi0jZGVmaW5lIElSUV9ET1ZFX1hPUl8wMAkJKDEgKyAzOSkKLSNk ZWZpbmUgSVJRX0RPVkVfWE9SXzAxCQkoMSArIDQwKQotI2RlZmluZSBJUlFfRE9WRV9YT1IwX0VS UgkoMSArIDQxKQotI2RlZmluZSBJUlFfRE9WRV9YT1JfMTAJCSgxICsgNDIpCi0jZGVmaW5lIElS UV9ET1ZFX1hPUl8xMQkJKDEgKyA0MykKLSNkZWZpbmUgSVJRX0RPVkVfWE9SMV9FUlIJKDEgKyA0 NCkKLSNkZWZpbmUgSVJRX0RPVkVfTENEX0RDT04JKDEgKyA0NSkKLSNkZWZpbmUgSVJRX0RPVkVf TENEMQkJKDEgKyA0NikKLSNkZWZpbmUgSVJRX0RPVkVfTENEMAkJKDEgKyA0NykKLSNkZWZpbmUg SVJRX0RPVkVfR1BVCQkoMSArIDQ4KQotI2RlZmluZSBJUlFfRE9WRV9QRVJGT1JNX01OVFIJKDEg KyA0OSkKLSNkZWZpbmUgSVJRX0RPVkVfVlBST19ETUExCSgxICsgNTEpCi0jZGVmaW5lIElSUV9E T1ZFX1NTUF9USU1FUgkoMSArIDU0KQotI2RlZmluZSBJUlFfRE9WRV9TU1AJCSgxICsgNTUpCi0j ZGVmaW5lIElSUV9ET1ZFX01DX0wyX0VSUgkoMSArIDU2KQotI2RlZmluZSBJUlFfRE9WRV9DUllQ VE9fRVJSCSgxICsgNTkpCi0jZGVmaW5lIElSUV9ET1ZFX0dQSU9fMjRfMzEJKDEgKyA2MCkKLSNk ZWZpbmUgSVJRX0RPVkVfSElHSF9HUElPCSgxICsgNjEpCi0jZGVmaW5lIElSUV9ET1ZFX1NBVEEJ CSgxICsgNjIpCi0KLS8qCi0gKiBET1ZFIEdlbmVyYWwgUHVycG9zZSBQaW5zCi0gKi8KLSNkZWZp bmUgSVJRX0RPVkVfR1BJT19TVEFSVAk2NQotI2RlZmluZSBOUl9HUElPX0lSUVMJCTY0Ci0KLS8q Ci0gKiBQTVUgaW50ZXJydXB0cwotICovCi0jZGVmaW5lIElSUV9ET1ZFX1BNVV9TVEFSVAkoSVJR X0RPVkVfR1BJT19TVEFSVCArIE5SX0dQSU9fSVJRUykKLSNkZWZpbmUgTlJfUE1VX0lSUVMJCTcK LSNkZWZpbmUgSVJRX0RPVkVfUlRDCQkoSVJRX0RPVkVfUE1VX1NUQVJUICsgNSkKLQotI2RlZmlu ZSBET1ZFX05SX0lSUVMJCShJUlFfRE9WRV9QTVVfU1RBUlQgKyBOUl9QTVVfSVJRUykKLQotCi0j ZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9tcHAuYyBiL2FyY2gvYXJtL21h Y2gtZG92ZS9tcHAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxYmQ0NzNhYmU5 Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL21wcC5jCisrKyAvZGV2L251 bGwKQEAgLTEsMTU5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLWRvdmUvbXBwLmMKLSAqCi0gKiBNUFAgZnVuY3Rp b25zIGZvciBNYXJ2ZWxsIERvdmUgU29DcwotICovCi0KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4KLSNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Ci0jaW5jbHVkZSA8bGludXgvaW8u aD4KLSNpbmNsdWRlIDxwbGF0L21wcC5oPgotI2luY2x1ZGUgPHBsYXQvb3Jpb24tZ3Bpby5oPgot I2luY2x1ZGUgImRvdmUuaCIKLSNpbmNsdWRlICJtcHAuaCIKLQotc3RydWN0IGRvdmVfbXBwX2dy cCB7Ci0JaW50IHN0YXJ0OwotCWludCBlbmQ7Ci19OwotCi0vKiBNYXAgYSBncm91cCB0byBhIHJh bmdlIG9mIEdQSU8gcGlucyBpbiB0aGF0IGdyb3VwICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRv dmVfbXBwX2dycCBkb3ZlX21wcF9ncnBbXSA9IHsKLQlbTVBQXzI0XzM5XSA9IHsKLQkJLnN0YXJ0 CT0gMjQsCi0JCS5lbmQJPSAzOSwKLQl9LAotCVtNUFBfNDBfNDVdID0gewotCQkuc3RhcnQJPSA0 MCwKLQkJLmVuZAk9IDQ1LAotCX0sCi0JW01QUF80Nl81MV0gPSB7Ci0JCS5zdGFydAk9IDQ2LAot CQkuZW5kCT0gNTEsCi0JfSwKLQlbTVBQXzU4XzYxXSA9IHsKLQkJLnN0YXJ0CT0gNTgsCi0JCS5l bmQJPSA2MSwKLQl9LAotCVtNUFBfNjJfNjNdID0gewotCQkuc3RhcnQJPSA2MiwKLQkJLmVuZAk9 IDYzLAotCX0sCi19OwotCi0vKiBFbmFibGUgZ3BpbyBmb3IgYSByYW5nZSBvZiBwaW5zLiBtb2Rl IHNob3VsZCBiZSBhIGNvbWJpbmF0aW9uIG9mCi0gICBHUElPX09VVFBVVF9PSyB8IEdQSU9fSU5Q VVRfT0sgKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBkb3ZlX21wcF9ncGlvX21vZGUoaW50IHN0YXJ0 LCBpbnQgZW5kLCBpbnQgZ3Bpb19tb2RlKQotewotCWludCBpOwotCi0JZm9yIChpID0gc3RhcnQ7 IGkgPD0gZW5kOyBpKyspCi0JCW9yaW9uX2dwaW9fc2V0X3ZhbGlkKGksIGdwaW9fbW9kZSk7Ci19 Ci0KLS8qIER1bXAgYWxsIHRoZSBleHRyYSBNUFAgcmVnaXN0ZXJzLiBUaGUgcGxhdGZvcm0gY29k ZSB3aWxsIGR1bXAgdGhlCi0gICByZWdpc3RlcnMgZm9yIHBpbnMgMC0yMy4gKi8KLXN0YXRpYyB2 b2lkIF9faW5pdCBkb3ZlX21wcF9kdW1wX3JlZ3Modm9pZCkKLXsKLQlwcl9kZWJ1ZygiUE1VX0NU Ukw0X0NUUkw6ICUwOHhcbiIsCi0JCSByZWFkbChET1ZFX01QUF9DVFJMNF9WSVJUX0JBU0UpKTsK LQotCXByX2RlYnVnKCJQTVVfTVBQX0dFTkVSQUxfQ1RSTDogJTA4eFxuIiwKLQkJIHJlYWRsKERP VkVfUE1VX01QUF9HRU5FUkFMX0NUUkwpKTsKLQotCXByX2RlYnVnKCJNUFBfR0VORVJBTDogJTA4 eFxuIiwgcmVhZGwoRE9WRV9NUFBfR0VORVJBTF9WSVJUX0JBU0UpKTsKLX0KLQotc3RhdGljIHZv aWQgX19pbml0IGRvdmVfbXBwX2NmZ19uZmMoaW50IHNlbCkKLXsKLQl1MzIgbXBwX2dlbl9jZmcg PSByZWFkbChET1ZFX01QUF9HRU5FUkFMX1ZJUlRfQkFTRSk7Ci0KLQltcHBfZ2VuX2NmZyAmPSB+ MHgxOwotCW1wcF9nZW5fY2ZnIHw9IHNlbDsKLQl3cml0ZWwobXBwX2dlbl9jZmcsIERPVkVfTVBQ X0dFTkVSQUxfVklSVF9CQVNFKTsKLQotCWRvdmVfbXBwX2dwaW9fbW9kZSg2NCwgNzEsIEdQSU9f T1VUUFVUX09LKTsKLX0KLQotc3RhdGljIHZvaWQgX19pbml0IGRvdmVfbXBwX2NmZ19hdTEoaW50 IHNlbCkKLXsKLQl1MzIgbXBwX2N0cmw0ID0gcmVhZGwoRE9WRV9NUFBfQ1RSTDRfVklSVF9CQVNF KTsKLQl1MzIgc3NwX2N0cmwxID0gcmVhZGwoRE9WRV9TU1BfQ1RSTF9TVEFUVVNfMSk7Ci0JdTMy IG1wcF9nZW5fY3RybCA9IHJlYWRsKERPVkVfTVBQX0dFTkVSQUxfVklSVF9CQVNFKTsKLQl1MzIg Z2xvYmFsX2NmZ18yID0gcmVhZGwoRE9WRV9HTE9CQUxfQ09ORklHXzIpOwotCi0JbXBwX2N0cmw0 ICY9IH4oRE9WRV9BVTFfR1BJT19TRUwpOwotCXNzcF9jdHJsMSAmPSB+KERPVkVfU1NQX09OX0FV MSk7Ci0JbXBwX2dlbl9jdHJsICY9IH4oRE9WRV9BVTFfU1BESUZPX0dQSU9fRU4pOwotCWdsb2Jh bF9jZmdfMiAmPSB+KERPVkVfVFdTSV9PUFRJT04zX0dQSU8pOwotCi0JaWYgKCFzZWwgfHwgc2Vs ID09IDB4MikKLQkJZG92ZV9tcHBfZ3Bpb19tb2RlKDUyLCA1NywgMCk7Ci0JZWxzZQotCQlkb3Zl X21wcF9ncGlvX21vZGUoNTIsIDU3LCBHUElPX09VVFBVVF9PSyB8IEdQSU9fSU5QVVRfT0spOwot Ci0JaWYgKHNlbCAmIDB4MSkgewotCQlnbG9iYWxfY2ZnXzIgfD0gRE9WRV9UV1NJX09QVElPTjNf R1BJTzsKLQkJZG92ZV9tcHBfZ3Bpb19tb2RlKDU2LCA1NywgMCk7Ci0JfQotCWlmIChzZWwgJiAw eDIpIHsKLQkJbXBwX2dlbl9jdHJsIHw9IERPVkVfQVUxX1NQRElGT19HUElPX0VOOwotCQlkb3Zl X21wcF9ncGlvX21vZGUoNTcsIDU3LCBHUElPX09VVFBVVF9PSyB8IEdQSU9fSU5QVVRfT0spOwot CX0KLQlpZiAoc2VsICYgMHg0KSB7Ci0JCXNzcF9jdHJsMSB8PSBET1ZFX1NTUF9PTl9BVTE7Ci0J CWRvdmVfbXBwX2dwaW9fbW9kZSg1MiwgNTUsIDApOwotCX0KLQlpZiAoc2VsICYgMHg4KQotCQlt cHBfY3RybDQgfD0gRE9WRV9BVTFfR1BJT19TRUw7Ci0KLQl3cml0ZWwobXBwX2N0cmw0LCBET1ZF X01QUF9DVFJMNF9WSVJUX0JBU0UpOwotCXdyaXRlbChzc3BfY3RybDEsIERPVkVfU1NQX0NUUkxf U1RBVFVTXzEpOwotCXdyaXRlbChtcHBfZ2VuX2N0cmwsIERPVkVfTVBQX0dFTkVSQUxfVklSVF9C QVNFKTsKLQl3cml0ZWwoZ2xvYmFsX2NmZ18yLCBET1ZFX0dMT0JBTF9DT05GSUdfMik7Ci19Ci0K LS8qIENvbmZpZ3VyZSB0aGUgZ3JvdXAgcmVnaXN0ZXJzLCBlbmFibGluZyBHUElPIGlmIHNlbCBp bmRpY2F0ZXMgdGhlCi0gICBwaW4gaXMgdG8gYmUgdXNlZCBmb3IgR1BJTyAqLwotc3RhdGljIHZv aWQgX19pbml0IGRvdmVfbXBwX2NvbmZfZ3JwKHVuc2lnbmVkIGludCAqbXBwX2dycF9saXN0KQot ewotCXUzMiBtcHBfY3RybDQgPSByZWFkbChET1ZFX01QUF9DVFJMNF9WSVJUX0JBU0UpOwotCWlu dCBncGlvX21vZGU7Ci0KLQlmb3IgKCA7ICptcHBfZ3JwX2xpc3Q7IG1wcF9ncnBfbGlzdCsrKSB7 Ci0JCXVuc2lnbmVkIGludCBudW0gPSBNUFBfTlVNKCptcHBfZ3JwX2xpc3QpOwotCQl1bnNpZ25l ZCBpbnQgc2VsID0gTVBQX1NFTCgqbXBwX2dycF9saXN0KTsKLQotCQlpZiAobnVtID4gTVBQX0dS UF9NQVgpIHsKLQkJCXByX2VycigiZG92ZTogaW52YWxpZCBNUFAgR1JQIG51bWJlciAoJXUpXG4i LCBudW0pOwotCQkJY29udGludWU7Ci0JCX0KLQotCQltcHBfY3RybDQgJj0gfigweDEgPDwgbnVt KTsKLQkJbXBwX2N0cmw0IHw9IHNlbCA8PCBudW07Ci0KLQkJZ3Bpb19tb2RlID0gc2VsID8gR1BJ T19PVVRQVVRfT0sgfCBHUElPX0lOUFVUX09LIDogMDsKLQkJZG92ZV9tcHBfZ3Bpb19tb2RlKGRv dmVfbXBwX2dycFtudW1dLnN0YXJ0LAotCQkJCSAgIGRvdmVfbXBwX2dycFtudW1dLmVuZCwgZ3Bp b19tb2RlKTsKLQl9Ci0Jd3JpdGVsKG1wcF9jdHJsNCwgRE9WRV9NUFBfQ1RSTDRfVklSVF9CQVNF KTsKLX0KLQotLyogQ29uZmlndXJlIHRoZSB2YXJpb3VzIE1QUCBwaW5zIG9uIERvdmUgKi8KLXZv aWQgX19pbml0IGRvdmVfbXBwX2NvbmYodW5zaWduZWQgaW50ICptcHBfbGlzdCwKLQkJCSAgdW5z aWduZWQgaW50ICptcHBfZ3JwX2xpc3QsCi0JCQkgIHVuc2lnbmVkIGludCBncnBfYXUxXzUyXzU3 LAotCQkJICB1bnNpZ25lZCBpbnQgZ3JwX25mY182NF83MSkKLXsKLQlkb3ZlX21wcF9kdW1wX3Jl Z3MoKTsKLQotCS8qIFVzZSBwbGF0Zm9ybSBjb2RlIGZvciBwaW5zIDAtMjMgKi8KLQlvcmlvbl9t cHBfY29uZihtcHBfbGlzdCwgMCwgTVBQX01BWCwgRE9WRV9NUFBfVklSVF9CQVNFKTsKLQotCWRv dmVfbXBwX2NvbmZfZ3JwKG1wcF9ncnBfbGlzdCk7Ci0JZG92ZV9tcHBfY2ZnX2F1MShncnBfYXUx XzUyXzU3KTsKLQlkb3ZlX21wcF9jZmdfbmZjKGdycF9uZmNfNjRfNzEpOwotCi0JZG92ZV9tcHBf ZHVtcF9yZWdzKCk7Ci19CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvbXBwLmggYi9h cmNoL2FybS9tYWNoLWRvdmUvbXBwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJl NGI4OWM4NmNhOC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtZG92ZS9tcHAuaAor KysgL2Rldi9udWxsCkBAIC0xLDE5NyArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCAqLwotI2lmbmRlZiBfX0FSQ0hfRE9WRV9NUFBfQ09ERURfSAotI2RlZmluZSBf X0FSQ0hfRE9WRV9NUFBfQ09ERURfSAotCi0jZGVmaW5lIE1QUChfbnVtLCBfc2VsLCBfaW4sIF9v dXQpICggXAotCS8qIE1QUCBudW1iZXIgKi8JCSgoX251bSkgJiAweGZmKSB8IFwKLQkvKiBNUFAg c2VsZWN0IHZhbHVlICovCQkoKChfc2VsKSAmIDB4ZikgPDwgOCkgfCBcCi0JLyogbWF5IGJlIGlu cHV0IHNpZ25hbCAqLwkoKCEhKF9pbikpIDw8IDEyKSB8IFwKLQkvKiBtYXkgYmUgb3V0cHV0IHNp Z25hbCAqLwkoKCEhKF9vdXQpKSA8PCAxMykpCi0KLSNkZWZpbmUgTVBQMF9HUElPMAkJTVBQKDAs IDB4MCwgMSwgMSkKLSNkZWZpbmUgTVBQMF9VQTJfUlRTbgkJTVBQKDAsIDB4MiwgMCwgMCkKLSNk ZWZpbmUgTVBQMF9TRElPMF9DRAkJTVBQKDAsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMF9MQ0Qw X1BXTQkJTVBQKDAsIDB4ZiwgMCwgMCkKLQotI2RlZmluZSBNUFAxX0dQSU8xCQlNUFAoMSwgMHgw LCAxLCAxKQotI2RlZmluZSBNUFAxX1VBMl9DVFNuCQlNUFAoMSwgMHgyLCAwLCAwKQotI2RlZmlu ZSBNUFAxX1NESU8wX1dQCQlNUFAoMSwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAxX0xDRDFfUFdN CQlNUFAoMSwgMHhmLCAwLCAwKQotCi0jZGVmaW5lIE1QUDJfR1BJTzIJCU1QUCgyLCAweDAsIDEs IDEpCi0jZGVmaW5lIE1QUDJfU0FUQV9QUkVTRU5UCU1QUCgyLCAweDEsIDAsIDApCi0jZGVmaW5l IE1QUDJfVUEyX1RYRAkJTVBQKDIsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQMl9TRElPMF9CVVNf UE9XRVIJTVBQKDIsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMl9VQV9SVFNuMQkJTVBQKDIsIDB4 NCwgMCwgMCkKLQotI2RlZmluZSBNUFAzX0dQSU8zCQlNUFAoMywgMHgwLCAxLCAxKQotI2RlZmlu ZSBNUFAzX1NBVEFfQUNUCQlNUFAoMywgMHgxLCAwLCAwKQotI2RlZmluZSBNUFAzX1VBMl9SWEQJ CU1QUCgzLCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDNfU0RJTzBfTEVEX0NUUkwJTVBQKDMsIDB4 MywgMCwgMCkKLSNkZWZpbmUgTVBQM19VQV9DVFNuMQkJTVBQKDMsIDB4NCwgMCwgMCkKLSNkZWZp bmUgTVBQM19TUElfTENEX0NTMQlNUFAoMywgMHhmLCAwLCAwKQotCi0jZGVmaW5lIE1QUDRfR1BJ TzQJCU1QUCg0LCAweDAsIDEsIDEpCi0jZGVmaW5lIE1QUDRfVUEzX1JUU24JCU1QUCg0LCAweDIs IDAsIDApCi0jZGVmaW5lIE1QUDRfU0RJTzFfQ0QJCU1QUCg0LCAweDMsIDAsIDApCi0jZGVmaW5l IE1QUDRfU1BJXzFfTUlTTwkJTVBQKDQsIDB4NCwgMCwgMCkKLQotI2RlZmluZSBNUFA1X0dQSU81 CQlNUFAoNSwgMHgwLCAxLCAxKQotI2RlZmluZSBNUFA1X1VBM19DVFNuCQlNUFAoNSwgMHgyLCAw LCAwKQotI2RlZmluZSBNUFA1X1NESU8xX1dQCQlNUFAoNSwgMHgzLCAwLCAwKQotI2RlZmluZSBN UFA1X1NQSV8xX0NTCQlNUFAoNSwgMHg0LCAwLCAwKQotCi0jZGVmaW5lIE1QUDZfR1BJTzYJCU1Q UCg2LCAweDAsIDEsIDEpCi0jZGVmaW5lIE1QUDZfVUEzX1RYRAkJTVBQKDYsIDB4MiwgMCwgMCkK LSNkZWZpbmUgTVBQNl9TRElPMV9CVVNfUE9XRVIJTVBQKDYsIDB4MywgMCwgMCkKLSNkZWZpbmUg TVBQNl9TUElfMV9NT1NJCQlNUFAoNiwgMHg0LCAwLCAwKQotCi0jZGVmaW5lIE1QUDdfR1BJTzcJ CU1QUCg3LCAweDAsIDEsIDEpCi0jZGVmaW5lIE1QUDdfVUEzX1JYRAkJTVBQKDcsIDB4MiwgMCwg MCkKLSNkZWZpbmUgTVBQN19TRElPMV9MRURfQ1RSTAlNUFAoNywgMHgzLCAwLCAwKQotI2RlZmlu ZSBNUFA3X1NQSV8xX1NDSwkJTVBQKDcsIDB4NCwgMCwgMCkKLQotI2RlZmluZSBNUFA4X0dQSU84 CQlNUFAoOCwgMHgwLCAxLCAxKQotI2RlZmluZSBNUFA4X1dEX1JTVF9PVVQJCU1QUCg4LCAweDEs IDAsIDApCi0KLSNkZWZpbmUgTVBQOV9HUElPOQkJTVBQKDksIDB4MCwgMSwgMSkKLSNkZWZpbmUg TVBQOV9QRVgxX0NMS1JFUW4JTVBQKDksIDB4NSwgMCwgMCkKLQotI2RlZmluZSBNUFAxMF9HUElP MTAJCU1QUCgxMCwgMHgwLCAxLCAxKQotI2RlZmluZSBNUFAxMF9TU1BfU0NMSwkJTVBQKDEwLCAw eDUsIDAsIDApCi0KLSNkZWZpbmUgTVBQMTFfR1BJTzExCQlNUFAoMTEsIDB4MCwgMSwgMSkKLSNk ZWZpbmUgTVBQMTFfU0FUQV9QUkVTRU5UCU1QUCgxMSwgMHgxLCAwLCAwKQotI2RlZmluZSBNUFAx MV9TQVRBX0FDVAkJTVBQKDExLCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDExX1NESU8wX0xFRF9D VFJMCU1QUCgxMSwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAxMV9TRElPMV9MRURfQ1RSTAlNUFAo MTEsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMTFfUEVYMF9DTEtSRVFuCU1QUCgxMSwgMHg1LCAw LCAwKQotCi0jZGVmaW5lIE1QUDEyX0dQSU8xMgkJTVBQKDEyLCAweDAsIDEsIDEpCi0jZGVmaW5l IE1QUDEyX1NBVEFfQUNUCQlNUFAoMTIsIDB4MSwgMCwgMCkKLSNkZWZpbmUgTVBQMTJfVUEyX1JU U24JCU1QUCgxMiwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAxMl9BRDBfSTJTX0VYVF9NQ0xLCU1Q UCgxMiwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAxMl9TRElPMV9DRAkJTVBQKDEyLCAweDQsIDAs IDApCi0KLSNkZWZpbmUgTVBQMTNfR1BJTzEzCQlNUFAoMTMsIDB4MCwgMSwgMSkKLSNkZWZpbmUg TVBQMTNfVUEyX0NUU24JCU1QUCgxMywgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAxM19BRDFfSTJT X0VYVF9NQ0xLCU1QUCgxMywgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAxM19TRElPMVdQCQlNUFAo MTMsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMTNfU1NQX0VYVENMSwlNUFAoMTMsIDB4NSwgMCwg MCkKLQotI2RlZmluZSBNUFAxNF9HUElPMTQJCU1QUCgxNCwgMHgwLCAxLCAxKQotI2RlZmluZSBN UFAxNF9VQTJfVFhECQlNUFAoMTQsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQMTRfU0RJTzFfQlVT X1BPV0VSCU1QUCgxNCwgMHg0LCAwLCAwKQotI2RlZmluZSBNUFAxNF9TU1BfUlhECQlNUFAoMTQs IDB4NSwgMCwgMCkKLQotI2RlZmluZSBNUFAxNV9HUElPMTUJCU1QUCgxNSwgMHgwLCAxLCAxKQot I2RlZmluZSBNUFAxNV9VQTJfUlhECQlNUFAoMTUsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQMTVf U0RJTzFfTEVEX0NUUkwJTVBQKDE1LCAweDQsIDAsIDApCi0jZGVmaW5lIE1QUDE1X1NTUF9TRlJN CQlNUFAoMTUsIDB4NSwgMCwgMCkKLQotI2RlZmluZSBNUFAxNl9HUElPMTYJCU1QUCgxNiwgMHgw LCAxLCAxKQotI2RlZmluZSBNUFAxNl9VQTNfUlRTbgkJTVBQKDE2LCAweDIsIDAsIDApCi0jZGVm aW5lIE1QUDE2X1NESU8wX0NECQlNUFAoMTYsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMTZfU1BJ X0xDRF9DUzEJTVBQKDE2LCAweDQsIDAsIDApCi0jZGVmaW5lIE1QUDE2X0FDOTdfU0RBVEFfSU4x CU1QUCgxNiwgMHg1LCAwLCAwKQotCi0jZGVmaW5lIE1QUDE3X0dQSU8xNwkJTVBQKDE3LCAweDAs IDEsIDEpCi0jZGVmaW5lIE1QUDE3X0FDOTdfU1lTQ0xLX09VVAlNUFAoMTcsIDB4MSwgMCwgMCkK LSNkZWZpbmUgTVBQMTdfVUEzX0NUU24JCU1QUCgxNywgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAx N19TRElPMF9XUAkJTVBQKDE3LCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDE3X1RXX1NEQTIJCU1Q UCgxNywgMHg0LCAwLCAwKQotI2RlZmluZSBNUFAxN19BQzk3X1NEQVRBX0lOMglNUFAoMTcsIDB4 NSwgMCwgMCkKLQotI2RlZmluZSBNUFAxOF9HUElPMTgJCU1QUCgxOCwgMHgwLCAxLCAxKQotI2Rl ZmluZSBNUFAxOF9VQTNfVFhECQlNUFAoMTgsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQMThfU0RJ TzBfQlVTX1BPV0VSCU1QUCgxOCwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAxOF9MQ0QwX1BXTQkJ TVBQKDE4LCAweDQsIDAsIDApCi0jZGVmaW5lIE1QUDE4X0FDX1NEQVRBX0lOMwlNUFAoMTgsIDB4 NSwgMCwgMCkKLQotI2RlZmluZSBNUFAxOV9HUElPMTkJCU1QUCgxOSwgMHgwLCAxLCAxKQotI2Rl ZmluZSBNUFAxOV9VQTNfUlhECQlNUFAoMTksIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQMTlfU0RJ TzBfTEVEX0NUUkwJTVBQKDE5LCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDE5X1RXX1NDSzIJCU1Q UCgxOSwgMHg0LCAwLCAwKQotCi0jZGVmaW5lIE1QUDIwX0dQSU8yMAkJTVBQKDIwLCAweDAsIDEs IDEpCi0jZGVmaW5lIE1QUDIwX0FDOTdfU1lTQ0xLX09VVAlNUFAoMjAsIDB4MSwgMCwgMCkKLSNk ZWZpbmUgTVBQMjBfU1BJX0xDRF9NSVNPCU1QUCgyMCwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAy MF9TRElPMV9DRAkJTVBQKDIwLCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDIwX1NESU8wX0NECQlN UFAoMjAsIDB4NSwgMCwgMCkKLSNkZWZpbmUgTVBQMjBfU1BJXzFfTUlTTwlNUFAoMjAsIDB4Niwg MCwgMCkKLQotI2RlZmluZSBNUFAyMV9HUElPMjEJCU1QUCgyMSwgMHgwLCAxLCAxKQotI2RlZmlu ZSBNUFAyMV9VQTFfUlRTbgkJTVBQKDIxLCAweDEsIDAsIDApCi0jZGVmaW5lIE1QUDIxX1NQSV9M Q0RfQ1MwCU1QUCgyMSwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAyMV9TRElPMV9XUAkJTVBQKDIx LCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDIxX1NTUF9TRlJNCQlNUFAoMjEsIDB4NCwgMCwgMCkK LSNkZWZpbmUgTVBQMjFfU0RJTzBfV1AJCU1QUCgyMSwgMHg1LCAwLCAwKQotI2RlZmluZSBNUFAy MV9TUElfMV9DUwkJTVBQKDIxLCAweDYsIDAsIDApCi0KLSNkZWZpbmUgTVBQMjJfR1BJTzIyCQlN UFAoMjIsIDB4MCwgMSwgMSkKLSNkZWZpbmUgTVBQMjJfVUExX0NUU24JCU1QUCgyMiwgMHgxLCAw LCAwKQotI2RlZmluZSBNUFAyMl9TUElfTENEX01PU0kJTVBQKDIyLCAweDIsIDAsIDApCi0jZGVm aW5lIE1QUDIyX1NESU8xX0JVU19QT1dFUglNUFAoMjIsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQ MjJfU1NQX1RYRAkJTVBQKDIyLCAweDQsIDAsIDApCi0jZGVmaW5lIE1QUDIyX1NESU8wX0JVU19Q T1dFUglNUFAoMjIsIDB4NSwgMCwgMCkKLSNkZWZpbmUgTVBQMjJfU1BJXzFfTU9TSQlNUFAoMjIs IDB4NiwgMCwgMCkKLQotI2RlZmluZSBNUFAyM19HUElPMjMJCU1QUCgyMywgMHgwLCAxLCAxKQot I2RlZmluZSBNUFAyM19TUElfTENEX1NDSwlNUFAoMjMsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQ MjNfU0RJTzFfTEVEX0NUUkwJTVBQKDIzLCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDIzX1NTUF9T Q0xLCQlNUFAoMjMsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMjNfU0RJTzBfTEVEX0NUUkwJTVBQ KDIzLCAweDUsIDAsIDApCi0jZGVmaW5lIE1QUDIzX1NQSV8xX1NDSwkJTVBQKDIzLCAweDYsIDAs IDApCi0KLSNkZWZpbmUgTVBQX01BWAkJCTIzCi0KLSNkZWZpbmUgTVBQX0dSUChfZ3JwLCBfbW9k ZSkJTVBQKChfZ3JwKSwgKF9tb2RlKSwgMCwgMCkKLQotLyogZm9yIE1QUCBncm91cHMgX251bSBp cyBhIGdyb3VwIGluZGV4ICovCi1lbnVtIGRvdmVfbXBwX2dycF9pZHggewotCU1QUF8yNF8zOSA9 IDIsCi0JTVBQXzQwXzQ1ID0gMCwKLQlNUFBfNDZfNTEgPSAxLAotCU1QUF81OF82MSA9IDUsCi0J TVBQXzYyXzYzID0gNCwKLQlNUFBfR1JQX01BWCA9IDUsCi19OwotCi0jZGVmaW5lIE1QUF9HUlBf MjRfMzlfR1BJTwkJTVBQX0dSUChNUFBfMjRfMzksIDB4MSkKLSNkZWZpbmUgTVBQX0dSUF8yNF8z OV9DQU0JCU1QUF9HUlAoTVBQXzI0XzM5LCAweDApCi0KLSNkZWZpbmUgTVBQX0dSUF80MF80NV9H UElPCQlNUFBfR1JQKE1QUF80MF80NSwgMHgxKQotI2RlZmluZSBNUFBfR1JQXzQwXzQ1X1NEMAkJ TVBQX0dSUChNUFBfNDBfNDUsIDB4MCkKLQotI2RlZmluZSBNUFBfR1JQXzQ2XzUxX0dQSU8JCU1Q UF9HUlAoTVBQXzQ2XzUxLCAweDEpCi0jZGVmaW5lIE1QUF9HUlBfNDZfNTFfU0QxCQlNUFBfR1JQ KE1QUF80Nl81MSwgMHgwKQotCi0jZGVmaW5lIE1QUF9HUlBfNThfNjFfR1BJTwkJTVBQX0dSUChN UFBfNThfNjEsIDB4MSkKLSNkZWZpbmUgTVBQX0dSUF81OF82MV9TUEkJCU1QUF9HUlAoTVBQXzU4 XzYxLCAweDApCi0KLSNkZWZpbmUgTVBQX0dSUF82Ml82M19HUElPCQlNUFBfR1JQKE1QUF82Ml82 MywgMHgxKQotI2RlZmluZSBNUFBfR1JQXzYyXzYzX1VBMQkJTVBQX0dSUChNUFBfNjJfNjMsIDB4 MCkKLQotLyogVGhlIE1QUFs2NDo3MV0gY29udHJvbCBkaWZmZXJzIGZyb20gb3RoZXIgZ3JvdXBz ICovCi0jZGVmaW5lIE1QUF9HUlBfTkZDXzY0XzcxX0dQTwkJMHgxCi0jZGVmaW5lIE1QUF9HUlBf TkZDXzY0XzcxX05GQwkJMHgwCi0KLS8qCi0gKiBUaGUgTVBQWzUyOjU3XSBmdW5jdGlvbmFsaXR5 IGlzIGVuY29kZWQgYnkgNCBiaXRzIGluIGRpZmZlcmVudAotICogcmVnaXN0ZXJzLiBUaGUgX251 bSBmaWVsZCBpbiB0aGlzIGNhc2UgZW5jb2RlcyB0aG9zZSBiaXRzIGluCi0gKiBjb3JyZXNwb2Rl bmNlIHdpdGggVGFibGUgMTM1IG9mIDg4QVA1MTAgRnVuY3Rpb25hbCBzcGVjaWZpY2F0aW9uCi0g Ki8KLSNkZWZpbmUgTVBQX0dSUF9BVTFfNTJfNTdfQVUxCQkweDAKLSNkZWZpbmUgTVBQX0dSUF9B VTFfNTJfNTdfQVUxX0dQSU81NwkweDIKLSNkZWZpbmUgTVBQX0dSUF9BVTFfNTJfNTdfR1BJTwkJ MHhhCi0jZGVmaW5lIE1QUF9HUlBfQVUxXzUyXzU3X1RXX0dQSU8JMHhiCi0jZGVmaW5lIE1QUF9H UlBfQVUxXzUyXzU3X0FVMV9TU1AJMHhjCi0jZGVmaW5lIE1QUF9HUlBfQVUxXzUyXzU3X1NTUF9H UElPCTB4ZQotI2RlZmluZSBNUFBfR1JQX0FVMV81Ml81N19TU1BfVFcJMHhmCi0KLXZvaWQgZG92 ZV9tcHBfY29uZih1bnNpZ25lZCBpbnQgKm1wcF9saXN0LAotCQkgICB1bnNpZ25lZCBpbnQgKm1w cF9ncnBfbGlzdCwKLQkJICAgdW5zaWduZWQgaW50IGdycF9hdTFfNTJfNTcsCi0JCSAgIHVuc2ln bmVkIGludCBncnBfbmZjXzY0XzcxKTsKLQotI2VuZGlmCS8qIF9fQVJDSF9ET1ZFX01QUF9DT0RF RF9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jIGIvYXJjaC9hcm0v bWFjaC1kb3ZlL3BjaWUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA0NGI3ZTAz ODkwLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYworKysgL2Rl di9udWxsCkBAIC0xLDIyNiArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYwotICoKLSAqIFBDSWUg ZnVuY3Rpb25zIGZvciBNYXJ2ZWxsIERvdmUgODhBUDUxMCBTb0MKLSAqLwotCi0jaW5jbHVkZSA8 bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvcGNpLmg+Ci0jaW5jbHVkZSA8bGludXgv Y2xrLmg+Ci0jaW5jbHVkZSA8dmlkZW8vdmdhLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvcGNpLmg+ Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgotI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgotI2lu Y2x1ZGUgPGFzbS9kZWxheS5oPgotI2luY2x1ZGUgPHBsYXQvcGNpZS5oPgotI2luY2x1ZGUgPHBs YXQvYWRkci1tYXAuaD4KLSNpbmNsdWRlICJpcnFzLmgiCi0jaW5jbHVkZSAiYnJpZGdlLXJlZ3Mu aCIKLSNpbmNsdWRlICJjb21tb24uaCIKLQotc3RydWN0IHBjaWVfcG9ydCB7Ci0JdTgJCQlpbmRl eDsKLQl1OAkJCXJvb3RfYnVzX25yOwotCXZvaWQgX19pb21lbQkJKmJhc2U7Ci0Jc3BpbmxvY2tf dAkJY29uZl9sb2NrOwotCWNoYXIJCQltZW1fc3BhY2VfbmFtZVsxNl07Ci0Jc3RydWN0IHJlc291 cmNlCQlyZXM7Ci19OwotCi1zdGF0aWMgc3RydWN0IHBjaWVfcG9ydCBwY2llX3BvcnRbMl07Ci1z dGF0aWMgaW50IG51bV9wY2llX3BvcnRzOwotCi0KLXN0YXRpYyBpbnQgX19pbml0IGRvdmVfcGNp ZV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cykKLXsKLQlzdHJ1Y3QgcGNp ZV9wb3J0ICpwcDsKLQlzdHJ1Y3QgcmVzb3VyY2UgcmVhbGlvOwotCi0JaWYgKG5yID49IG51bV9w Y2llX3BvcnRzKQotCQlyZXR1cm4gMDsKLQotCXBwID0gJnBjaWVfcG9ydFtucl07Ci0Jc3lzLT5w cml2YXRlX2RhdGEgPSBwcDsKLQlwcC0+cm9vdF9idXNfbnIgPSBzeXMtPmJ1c25yOwotCi0JLyoK LQkgKiBHZW5lcmljIFBDSWUgdW5pdCBzZXR1cC4KLQkgKi8KLQlvcmlvbl9wY2llX3NldF9sb2Nh bF9idXNfbnIocHAtPmJhc2UsIHN5cy0+YnVzbnIpOwotCi0Jb3Jpb25fcGNpZV9zZXR1cChwcC0+ YmFzZSk7Ci0KLQlyZWFsaW8uc3RhcnQgPSBzeXMtPmJ1c25yICogU1pfNjRLOwotCXJlYWxpby5l bmQgPSByZWFsaW8uc3RhcnQgKyBTWl82NEsgLSAxOwotCXBjaV9yZW1hcF9pb3NwYWNlKCZyZWFs aW8sIHBwLT5pbmRleCA9PSAwID8gRE9WRV9QQ0lFMF9JT19QSFlTX0JBU0UgOgotCQkJCQkJICAg IERPVkVfUENJRTFfSU9fUEhZU19CQVNFKTsKLQotCS8qCi0JICogSU9SRVNPVVJDRV9NRU0KLQkg Ki8KLQlzbnByaW50ZihwcC0+bWVtX3NwYWNlX25hbWUsIHNpemVvZihwcC0+bWVtX3NwYWNlX25h bWUpLAotCQkgIlBDSWUgJWQgTUVNIiwgcHAtPmluZGV4KTsKLQlwcC0+bWVtX3NwYWNlX25hbWVb c2l6ZW9mKHBwLT5tZW1fc3BhY2VfbmFtZSkgLSAxXSA9IDA7Ci0JcHAtPnJlcy5uYW1lID0gcHAt Pm1lbV9zcGFjZV9uYW1lOwotCWlmIChwcC0+aW5kZXggPT0gMCkgewotCQlwcC0+cmVzLnN0YXJ0 ID0gRE9WRV9QQ0lFMF9NRU1fUEhZU19CQVNFOwotCQlwcC0+cmVzLmVuZCA9IHBwLT5yZXMuc3Rh cnQgKyBET1ZFX1BDSUUwX01FTV9TSVpFIC0gMTsKLQl9IGVsc2UgewotCQlwcC0+cmVzLnN0YXJ0 ID0gRE9WRV9QQ0lFMV9NRU1fUEhZU19CQVNFOwotCQlwcC0+cmVzLmVuZCA9IHBwLT5yZXMuc3Rh cnQgKyBET1ZFX1BDSUUxX01FTV9TSVpFIC0gMTsKLQl9Ci0JcHAtPnJlcy5mbGFncyA9IElPUkVT T1VSQ0VfTUVNOwotCWlmIChyZXF1ZXN0X3Jlc291cmNlKCZpb21lbV9yZXNvdXJjZSwgJnBwLT5y ZXMpKQotCQlwYW5pYygiUmVxdWVzdCBQQ0llIE1lbW9yeSByZXNvdXJjZSBmYWlsZWRcbiIpOwot CXBjaV9hZGRfcmVzb3VyY2Vfb2Zmc2V0KCZzeXMtPnJlc291cmNlcywgJnBwLT5yZXMsIHN5cy0+ bWVtX29mZnNldCk7Ci0KLQlyZXR1cm4gMTsKLX0KLQotc3RhdGljIGludCBwY2llX3ZhbGlkX2Nv bmZpZyhzdHJ1Y3QgcGNpZV9wb3J0ICpwcCwgaW50IGJ1cywgaW50IGRldikKLXsKLQkvKgotCSAq IERvbid0IGdvIG91dCB3aGVuIHRyeWluZyB0byBhY2Nlc3Mgbm9uZXhpc3RpbmcgZGV2aWNlcwot CSAqIG9uIHRoZSBsb2NhbCBidXMuCi0JICovCi0JaWYgKGJ1cyA9PSBwcC0+cm9vdF9idXNfbnIg JiYgZGV2ID4gMSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1cm4gMTsKLX0KLQotc3RhdGljIGludCBw Y2llX3JkX2NvbmYoc3RydWN0IHBjaV9idXMgKmJ1cywgdTMyIGRldmZuLCBpbnQgd2hlcmUsCi0J CQlpbnQgc2l6ZSwgdTMyICp2YWwpCi17Ci0Jc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzID0gYnVz LT5zeXNkYXRhOwotCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gc3lzLT5wcml2YXRlX2RhdGE7Ci0J dW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgcmV0OwotCi0JaWYgKHBjaWVfdmFsaWRfY29uZmln KHBwLCBidXMtPm51bWJlciwgUENJX1NMT1QoZGV2Zm4pKSA9PSAwKSB7Ci0JCSp2YWwgPSAweGZm ZmZmZmZmOwotCQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOwotCX0KLQotCXNwaW5f bG9ja19pcnFzYXZlKCZwcC0+Y29uZl9sb2NrLCBmbGFncyk7Ci0JcmV0ID0gb3Jpb25fcGNpZV9y ZF9jb25mKHBwLT5iYXNlLCBidXMsIGRldmZuLCB3aGVyZSwgc2l6ZSwgdmFsKTsKLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZwcC0+Y29uZl9sb2NrLCBmbGFncyk7Ci0KLQlyZXR1cm4gcmV0Owot fQotCi1zdGF0aWMgaW50IHBjaWVfd3JfY29uZihzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1MzIgZGV2 Zm4sCi0JCQlpbnQgd2hlcmUsIGludCBzaXplLCB1MzIgdmFsKQotewotCXN0cnVjdCBwY2lfc3lz X2RhdGEgKnN5cyA9IGJ1cy0+c3lzZGF0YTsKLQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9IHN5cy0+ cHJpdmF0ZV9kYXRhOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IHJldDsKLQotCWlmIChw Y2llX3ZhbGlkX2NvbmZpZyhwcCwgYnVzLT5udW1iZXIsIFBDSV9TTE9UKGRldmZuKSkgPT0gMCkK LQkJcmV0dXJuIFBDSUJJT1NfREVWSUNFX05PVF9GT1VORDsKLQotCXNwaW5fbG9ja19pcnFzYXZl KCZwcC0+Y29uZl9sb2NrLCBmbGFncyk7Ci0JcmV0ID0gb3Jpb25fcGNpZV93cl9jb25mKHBwLT5i YXNlLCBidXMsIGRldmZuLCB3aGVyZSwgc2l6ZSwgdmFsKTsKLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZwcC0+Y29uZl9sb2NrLCBmbGFncyk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMg c3RydWN0IHBjaV9vcHMgcGNpZV9vcHMgPSB7Ci0JLnJlYWQgPSBwY2llX3JkX2NvbmYsCi0JLndy aXRlID0gcGNpZV93cl9jb25mLAotfTsKLQotLyoKLSAqIFRoZSByb290IGNvbXBsZXggaGFzIGEg aGFyZHdpcmVkIGNsYXNzIG9mIFBDSV9DTEFTU19NRU1PUllfT1RIRVIsIHdoZW4gaXQKLSAqIGlz IG9wZXJhdGluZyBhcyBhIHJvb3QgY29tcGxleCB0aGlzIG5lZWRzIHRvIGJlIHN3aXRjaGVkIHRv Ci0gKiBQQ0lfQ0xBU1NfQlJJREdFX0hPU1Qgb3IgTGludXggd2lsbCBlcnJhbnRseSB0cnkgdG8g cHJvY2VzcyB0aGUgQkFSJ3Mgb24KLSAqIHRoZSBkZXZpY2UuIERlY29kaW5nIHNldHVwIGlzIGhh bmRsZWQgYnkgdGhlIG9yaW9uIGNvZGUuCi0gKi8KLXN0YXRpYyB2b2lkIHJjX3BjaV9maXh1cChz dHJ1Y3QgcGNpX2RldiAqZGV2KQotewotCWlmIChkZXYtPmJ1cy0+cGFyZW50ID09IE5VTEwgJiYg ZGV2LT5kZXZmbiA9PSAwKSB7Ci0JCXN0cnVjdCByZXNvdXJjZSAqcjsKLQotCQlkZXYtPmNsYXNz ICY9IDB4ZmY7Ci0JCWRldi0+Y2xhc3MgfD0gUENJX0NMQVNTX0JSSURHRV9IT1NUIDw8IDg7Ci0J CXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByKSB7Ci0JCQlyLT5zdGFydCA9IDA7Ci0J CQlyLT5lbmQgICA9IDA7Ci0JCQlyLT5mbGFncyA9IDA7Ci0JCX0KLQl9Ci19Ci1ERUNMQVJFX1BD SV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9NQVJWRUxMLCBQQ0lfQU5ZX0lELCByY19wY2lf Zml4dXApOwotCi1zdGF0aWMgaW50IF9faW5pdAotZG92ZV9wY2llX3NjYW5fYnVzKGludCBuciwg c3RydWN0IHBjaV9ob3N0X2JyaWRnZSAqYnJpZGdlKQotewotCXN0cnVjdCBwY2lfc3lzX2RhdGEg KnN5cyA9IHBjaV9ob3N0X2JyaWRnZV9wcml2KGJyaWRnZSk7Ci0KLQlpZiAobnIgPj0gbnVtX3Bj aWVfcG9ydHMpIHsKLQkJQlVHKCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWxpc3Rfc3Bs aWNlX2luaXQoJnN5cy0+cmVzb3VyY2VzLCAmYnJpZGdlLT53aW5kb3dzKTsKLQlicmlkZ2UtPmRl di5wYXJlbnQgPSBOVUxMOwotCWJyaWRnZS0+c3lzZGF0YSA9IHN5czsKLQlicmlkZ2UtPmJ1c25y ID0gc3lzLT5idXNucjsKLQlicmlkZ2UtPm9wcyA9ICZwY2llX29wczsKLQotCXJldHVybiBwY2lf c2Nhbl9yb290X2J1c19icmlkZ2UoYnJpZGdlKTsKLX0KLQotc3RhdGljIGludCBfX2luaXQgZG92 ZV9wY2llX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGlu KQotewotCXN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cyA9IGRldi0+c3lzZGF0YTsKLQlzdHJ1Y3Qg cGNpZV9wb3J0ICpwcCA9IHN5cy0+cHJpdmF0ZV9kYXRhOwotCi0JcmV0dXJuIHBwLT5pbmRleCA/ IElSUV9ET1ZFX1BDSUUxIDogSVJRX0RPVkVfUENJRTA7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgaHdf cGNpIGRvdmVfcGNpIF9faW5pdGRhdGEgPSB7Ci0JLm5yX2NvbnRyb2xsZXJzCT0gMiwKLQkuc2V0 dXAJCT0gZG92ZV9wY2llX3NldHVwLAotCS5zY2FuCQk9IGRvdmVfcGNpZV9zY2FuX2J1cywKLQku bWFwX2lycQk9IGRvdmVfcGNpZV9tYXBfaXJxLAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IGFk ZF9wY2llX3BvcnQoaW50IGluZGV4LCB2b2lkIF9faW9tZW0gKmJhc2UpCi17Ci0JcHJpbnRrKEtF Uk5fSU5GTyAiRG92ZSBQQ0llIHBvcnQgJWQ6ICIsIGluZGV4KTsKLQotCWlmIChvcmlvbl9wY2ll X2xpbmtfdXAoYmFzZSkpIHsKLQkJc3RydWN0IHBjaWVfcG9ydCAqcHAgPSAmcGNpZV9wb3J0W251 bV9wY2llX3BvcnRzKytdOwotCQlzdHJ1Y3QgY2xrICpjbGsgPSBjbGtfZ2V0X3N5cygicGNpZSIs IChpbmRleCA/ICIxIiA6ICIwIikpOwotCi0JCWlmICghSVNfRVJSKGNsaykpCi0JCQljbGtfcHJl cGFyZV9lbmFibGUoY2xrKTsKLQotCQlwcmludGsoS0VSTl9JTkZPICJsaW5rIHVwXG4iKTsKLQot CQlwcC0+aW5kZXggPSBpbmRleDsKLQkJcHAtPnJvb3RfYnVzX25yID0gLTE7Ci0JCXBwLT5iYXNl ID0gYmFzZTsKLQkJc3Bpbl9sb2NrX2luaXQoJnBwLT5jb25mX2xvY2spOwotCQltZW1zZXQoJnBw LT5yZXMsIDAsIHNpemVvZihwcC0+cmVzKSk7Ci0JfSBlbHNlIHsKLQkJcHJpbnRrKEtFUk5fSU5G TyAibGluayBkb3duLCBpZ25vcmluZ1xuIik7Ci0JfQotfQotCi12b2lkIF9faW5pdCBkb3ZlX3Bj aWVfaW5pdChpbnQgaW5pdF9wb3J0MCwgaW50IGluaXRfcG9ydDEpCi17Ci0JdmdhX2Jhc2UgPSBE T1ZFX1BDSUUwX01FTV9QSFlTX0JBU0U7Ci0KLQlpZiAoaW5pdF9wb3J0MCkKLQkJYWRkX3BjaWVf cG9ydCgwLCBET1ZFX1BDSUUwX1ZJUlRfQkFTRSk7Ci0KLQlpZiAoaW5pdF9wb3J0MSkKLQkJYWRk X3BjaWVfcG9ydCgxLCBET1ZFX1BDSUUxX1ZJUlRfQkFTRSk7Ci0KLQlwY2lfY29tbW9uX2luaXQo JmRvdmVfcGNpKTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9wbS5oIGIvYXJj aC9hcm0vbWFjaC1kb3ZlL3BtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YzNh YmExZTJkMC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtZG92ZS9wbS5oCisrKyAv ZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seSAqLwotCi0jaWZuZGVmIF9fQVNNX0FSQ0hfUE1fSAotI2RlZmluZSBfX0FTTV9B UkNIX1BNX0gKLQotI2luY2x1ZGUgPGFzbS9lcnJuby5oPgotI2luY2x1ZGUgImlycXMuaCIKLQot I2RlZmluZSBDTE9DS19HQVRJTkdfQ09OVFJPTAkoRE9WRV9QTVVfVklSVF9CQVNFICsgMHgzOCkK LSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfVVNCMAkJMAotI2RlZmluZSAgQ0xPQ0tfR0FUSU5H X0JJVF9VU0IxCQkxCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX0dCRQkJMgotI2RlZmluZSAg Q0xPQ0tfR0FUSU5HX0JJVF9TQVRBCQkzCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX1BDSUUw CQk0Ci0jZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX1BDSUUxCQk1Ci0jZGVmaW5lICBDTE9DS19H QVRJTkdfQklUX1NESU8wCQk4Ci0jZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX1NESU8xCQk5Ci0j ZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX05BTkQJCTEwCi0jZGVmaW5lICBDTE9DS19HQVRJTkdf QklUX0NBTUVSQQkxMQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0JJVF9JMlMwCQkxMgotI2RlZmlu ZSAgQ0xPQ0tfR0FUSU5HX0JJVF9JMlMxCQkxMwotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0JJVF9D UllQVE8JMTUKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfQUM5NwkJMjEKLSNkZWZpbmUgIENM T0NLX0dBVElOR19CSVRfUERNQQkJMjIKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfWE9SMAkJ MjMKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfWE9SMQkJMjQKLSNkZWZpbmUgIENMT0NLX0dB VElOR19CSVRfR0lHQV9QSFkJMzAKLSNkZWZpbmUgIENMT0NLX0dBVElOR19VU0IwX01BU0sJCSgx IDw8IENMT0NLX0dBVElOR19CSVRfVVNCMCkKLSNkZWZpbmUgIENMT0NLX0dBVElOR19VU0IxX01B U0sJCSgxIDw8IENMT0NLX0dBVElOR19CSVRfVVNCMSkKLSNkZWZpbmUgIENMT0NLX0dBVElOR19H QkVfTUFTSwkJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9HQkUpCi0jZGVmaW5lICBDTE9DS19HQVRJ TkdfU0FUQV9NQVNLCQkoMSA8PCBDTE9DS19HQVRJTkdfQklUX1NBVEEpCi0jZGVmaW5lICBDTE9D S19HQVRJTkdfUENJRTBfTUFTSwkoMSA8PCBDTE9DS19HQVRJTkdfQklUX1BDSUUwKQotI2RlZmlu ZSAgQ0xPQ0tfR0FUSU5HX1BDSUUxX01BU0sJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9QQ0lFMSkK LSNkZWZpbmUgIENMT0NLX0dBVElOR19TRElPMF9NQVNLCSgxIDw8IENMT0NLX0dBVElOR19CSVRf U0RJTzApCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfU0RJTzFfTUFTSwkoMSA8PCBDTE9DS19HQVRJ TkdfQklUX1NESU8xKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX05BTkRfTUFTSwkJKDEgPDwgQ0xP Q0tfR0FUSU5HX0JJVF9OQU5EKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0NBTUVSQV9NQVNLCSgx IDw8IENMT0NLX0dBVElOR19CSVRfQ0FNRVJBKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0kyUzBf TUFTSwkJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9JMlMwKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5H X0kyUzFfTUFTSwkJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9JMlMxKQotI2RlZmluZSAgQ0xPQ0tf R0FUSU5HX0NSWVBUT19NQVNLCSgxIDw8IENMT0NLX0dBVElOR19CSVRfQ1JZUFRPKQotI2RlZmlu ZSAgQ0xPQ0tfR0FUSU5HX0FDOTdfTUFTSwkJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9BQzk3KQot I2RlZmluZSAgQ0xPQ0tfR0FUSU5HX1BETUFfTUFTSwkJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9Q RE1BKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX1hPUjBfTUFTSwkJKDEgPDwgQ0xPQ0tfR0FUSU5H X0JJVF9YT1IwKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX1hPUjFfTUFTSwkJKDEgPDwgQ0xPQ0tf R0FUSU5HX0JJVF9YT1IxKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0dJR0FfUEhZX01BU0sJKDEg PDwgQ0xPQ0tfR0FUSU5HX0JJVF9HSUdBX1BIWSkKLQotI2RlZmluZSBQTVVfSU5URVJSVVBUX0NB VVNFCShET1ZFX1BNVV9WSVJUX0JBU0UgKyAweDUwKQotCi0jZGVmaW5lICBQTVVfU1dfUlNUX1ZJ REVPX01BU0sJCUJJVCgxNikKLSNkZWZpbmUgIFBNVV9TV19SU1RfR1BVX01BU0sJCUJJVCgxOCkK LQotI2RlZmluZSAgUE1VX1BXUl9HUFVfUFdSX0RXTl9NQVNLCUJJVCgyKQotI2RlZmluZSAgUE1V X1BXUl9WUFVfUFdSX0RXTl9NQVNLCUJJVCgzKQotCi0jZGVmaW5lICBQTVVfSVNPX1ZJREVPX01B U0sJCUJJVCgwKQotI2RlZmluZSAgUE1VX0lTT19HUFVfTUFTSwkJQklUKDEpCi0KLSNlbmRpZgpk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL0tjb25maWcgYi9hcmNoL2FybS9tYWNo LW12Nzh4eDAvS2NvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThiMzVmNWQw NWJhLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL0tjb25maWcKKysr IC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkKLW1lbnVjb25maWcgQVJDSF9NVjc4WFgwCi0JYm9vbCAiTWFydmVsbCBNVjc4 eHgwIChERVBSRUNBVEVEKSIKLQlkZXBlbmRzIG9uIEFSQ0hfTVVMVElfVjUKLQlkZXBlbmRzIG9u IENQVV9MSVRUTEVfRU5ESUFOCi0JZGVwZW5kcyBvbiBBVEFHUwotCXNlbGVjdCBDUFVfRkVST0NF T04KLQlzZWxlY3QgR1BJT0xJQgotCXNlbGVjdCBHUElPTElCX0xFR0FDWQotCXNlbGVjdCBNVkVC VV9NQlVTCi0Jc2VsZWN0IEZPUkNFX1BDSQotCXNlbGVjdCBQTEFUX09SSU9OX0xFR0FDWQotCWhl bHAKLQkgIFN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgTWFydmVsbCBNVjc4eHgwIHNlcmllcyBT b0NzOgotCSAgTVY3ODF4MCwgTVY3ODJ4MC4KLQotCSAgVGhpcyBwbGF0Zm9ybSBpcyBzY2hlZHVs ZWQgZm9yIHJlbW92YWwgaW4gZWFybHkgMjAyNy4KLQotaWYgQVJDSF9NVjc4WFgwCi0KLWNvbmZp ZyBNQUNIX1RFUkFTVEFUSU9OX1dYTAotCWJvb2wgIkJ1ZmZhbG8gV0xYIChUZXJhc3RhdGlvbiBE dW8pIE5BUyIKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwg dG8gc3VwcG9ydCB0aGUKLQkgIEJ1ZmZhbG8gV1hMIE5hcy4KLQotZW5kaWYKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtbXY3OHh4MC9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9N YWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlZTZhZTUwMWJiLi4wMDAw MDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL01ha2VmaWxlCisrKyAvZGV2L251 bGwKQEAgLTEsNSArMCwwIEBACi0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCi1j Y2ZsYWdzLXkgOj0gLUkkKHNyY3RyZWUpL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZQotCi1v YmoteQkJCQkrPSBjb21tb24ubyBtcHAubyBpcnEubyBwY2llLm8KLW9iai0kKENPTkZJR19NQUNI X1RFUkFTVEFUSU9OX1dYTCkgKz0gYnVmZmFsby13eGwtc2V0dXAubwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1tdjc4eHgwL2JyaWRnZS1yZWdzLmggYi9hcmNoL2FybS9tYWNoLW12Nzh4eDAv YnJpZGdlLXJlZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU3YWM5NjdjNGIz Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2JyaWRnZS1yZWdzLmgK KysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5ICovCi0KLSNpZm5kZWYgX19BU01fQVJDSF9CUklER0VfUkVHU19ICi0j ZGVmaW5lIF9fQVNNX0FSQ0hfQlJJREdFX1JFR1NfSAotCi0jaW5jbHVkZSAibXY3OHh4MC5oIgot Ci0jZGVmaW5lIENQVV9DT05UUk9MCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4MDEwNCkKLSNkZWZp bmUgTDJfV1JJVEVUSFJPVUdICQkweDAwMDIwMDAwCi0KLSNkZWZpbmUgUlNUT1VUbl9NQVNLCQko QlJJREdFX1ZJUlRfQkFTRSArIDB4MDEwOCkKLSNkZWZpbmUgUlNUT1VUbl9NQVNLX1BIWVMJKEJS SURHRV9QSFlTX0JBU0UgKyAweDAxMDgpCi0jZGVmaW5lIFNPRlRfUkVTRVRfT1VUX0VOCTB4MDAw MDAwMDQKLQotI2RlZmluZSBTWVNURU1fU09GVF9SRVNFVAkoQlJJREdFX1ZJUlRfQkFTRSArIDB4 MDEwYykKLSNkZWZpbmUgU09GVF9SRVNFVAkJMHgwMDAwMDAwMQotCi0jZGVmaW5lIEJSSURHRV9J TlRfVElNRVIxX0NMUgkofjB4MDAwNCkKLQotI2RlZmluZSBJUlFfVklSVF9CQVNFCQkoQlJJREdF X1ZJUlRfQkFTRSArIDB4MDIwMCkKLSNkZWZpbmUgSVJRX0NBVVNFX0VSUl9PRkYJMHgwMDAwCi0j ZGVmaW5lIElSUV9DQVVTRV9MT1dfT0ZGCTB4MDAwNAotI2RlZmluZSBJUlFfQ0FVU0VfSElHSF9P RkYJMHgwMDA4Ci0jZGVmaW5lIElSUV9NQVNLX0VSUl9PRkYJMHgwMDBjCi0jZGVmaW5lIElSUV9N QVNLX0xPV19PRkYJMHgwMDEwCi0jZGVmaW5lIElSUV9NQVNLX0hJR0hfT0ZGCTB4MDAxNAotCi0j ZGVmaW5lIFRJTUVSX1ZJUlRfQkFTRQkJKEJSSURHRV9WSVJUX0JBU0UgKyAweDAzMDApCi0jZGVm aW5lIFRJTUVSX1BIWVNfQkFTRQkJKEJSSURHRV9QSFlTX0JBU0UgKyAweDAzMDApCi0KLSNlbmRp ZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2J1ZmZhbG8td3hsLXNldHVwLmMg Yi9hcmNoL2FybS9tYWNoLW12Nzh4eDAvYnVmZmFsby13eGwtc2V0dXAuYwpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggM2IyZTM4MWI3MzgzLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9h cm0vbWFjaC1tdjc4eHgwL2J1ZmZhbG8td3hsLXNldHVwLmMKKysrIC9kZXYvbnVsbApAQCAtMSwx ODMgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQotLyoK LSAqIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9idWZmYWxvLXd4bC1zZXR1cC5jCi0gKgotICogQnVm ZmFsbyBXWEwgKFRlcmFzdGF0aW9uIER1bykgU2V0dXAgcm91dGluZXMKLSAqCi0gKiBzZWJhc3Rp ZW4gcmVxdWllbSA8c2ViYXN0aWVuQHJlcXVpZW0uZnI+Ci0gKi8KLQotI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFfcGxhdGZvcm0uaD4KLSNpbmNsdWRl IDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KLSNpbmNs dWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxsaW51eC9ncGlvL2xlZ2FjeS5oPgotI2luY2x1 ZGUgPGxpbnV4L2dwaW9fa2V5cy5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+Ci0jaW5jbHVk ZSA8YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5jbHVk ZSAibXY3OHh4MC5oIgotI2luY2x1ZGUgImNvbW1vbi5oIgotI2luY2x1ZGUgIm1wcC5oIgotCi0K LSNkZWZpbmUgVFNXWExfQVVUT19TV0lUQ0gJMTUKLSNkZWZpbmUgVFNXWExfVVNCX1BPV0VSMQkz MAotI2RlZmluZSBUU1dYTF9VU0JfUE9XRVIyCTMxCi0KLQotLyogVGhpcyBhcmNoIGhhcyAyIEdp Z2EgRXRoZXJuZXQgKi8KLQotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRh IGRiNzh4MDBfZ2UwMF9kYXRhID0gewotCS5waHlfYWRkcgk9IE1WNjQzWFhfRVRIX1BIWV9BRERS KDApLAotfTsKLQotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhIGRiNzh4 MDBfZ2UwMV9kYXRhID0gewotCS5waHlfYWRkcgk9IE1WNjQzWFhfRVRIX1BIWV9BRERSKDgpLAot fTsKLQotCi0vKiAyIFNBVEEgY29udHJvbGxlciBzdXBwb3J0aW5nIEhvdFBsdWcgKi8KLQotc3Rh dGljIHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEgZGI3OHgwMF9zYXRhX2RhdGEgPSB7Ci0J Lm5fcG9ydHMJPSAyLAotfTsKLQotc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRk YXRhIGRiNzh4MDBfaTJjX3J0YyA9IHsKLQlJMkNfQk9BUkRfSU5GTygicnM1YzM3MmEiLCAweDMy KSwKLX07Ci0KLQotc3RhdGljIHVuc2lnbmVkIGludCB3eGxfbXBwX2NvbmZpZ1tdIF9faW5pdGRh dGEgPSB7Ci0JTVBQMF9HRTFfVFhDTEssCi0JTVBQMV9HRTFfVFhDVEwsCi0JTVBQMl9HRTFfUlhD VEwsCi0JTVBQM19HRTFfUlhDTEssCi0JTVBQNF9HRTFfVFhEMCwKLQlNUFA1X0dFMV9UWEQxLAot CU1QUDZfR0UxX1RYRDIsCi0JTVBQN19HRTFfVFhEMywKLQlNUFA4X0dFMV9SWEQwLAotCU1QUDlf R0UxX1JYRDEsCi0JTVBQMTBfR0UxX1JYRDIsCi0JTVBQMTFfR0UxX1JYRDMsCi0JTVBQMTJfR1BJ TywKLQlNUFAxM19HUElPLAotCU1QUDE0X0dQSU8sCi0JTVBQMTVfR1BJTywKLQlNUFAxNl9HUElP LAotCU1QUDE3X0dQSU8sCi0JTVBQMThfR1BJTywKLQlNUFAxOV9HUElPLAotCU1QUDIwX0dQSU8s Ci0JTVBQMjFfR1BJTywKLQlNUFAyMl9HUElPLAotCU1QUDIzX0dQSU8sCi0JTVBQMjRfVUEyX1RY RCwKLQlNUFAyNV9VQTJfUlhELAotCU1QUDI2X1VBMl9DVFNuLAotCU1QUDI3X1VBMl9SVFNuLAot CU1QUDI4X0dQSU8sCi0JTVBQMjlfR1BJTywKLQlNUFAzMF9HUElPLAotCU1QUDMxX0dQSU8sCi0J TVBQMzJfR1BJTywKLQlNUFAzM19HUElPLAotCU1QUDM0X0dQSU8sCi0JTVBQMzVfR1BJTywKLQlN UFAzNl9HUElPLAotCU1QUDM3X0dQSU8sCi0JTVBQMzhfR1BJTywKLQlNUFAzOV9HUElPLAotCU1Q UDQwX0dQSU8sCi0JTVBQNDFfR1BJTywKLQlNUFA0Ml9HUElPLAotCU1QUDQzX0dQSU8sCi0JTVBQ NDRfR1BJTywKLQlNUFA0NV9HUElPLAotCU1QUDQ2X0dQSU8sCi0JTVBQNDdfR1BJTywKLQlNUFA0 OF9HUElPLAotCU1QUDQ5X0dQSU8sCi0JMAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvX2tleXNf YnV0dG9uIHRzd3hsX2J1dHRvbnNbXSA9IHsKLQl7Ci0JCS5jb2RlCSAgID0gS0VZX09QVElPTiwK LQkJLmdwaW8JICAgPSBUU1dYTF9BVVRPX1NXSVRDSCwKLQkJLmRlc2MJICAgPSAiUG93ZXItYXV0 byBTd2l0Y2giLAotCQkuYWN0aXZlX2xvdyAgICAgPSAxLAotCX0KLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgdHN3eGxfYnV0dG9uX2RhdGEgPSB7Ci0JLmJ1dHRv bnMJPSB0c3d4bF9idXR0b25zLAotCS5uYnV0dG9ucyAgICAgICA9IEFSUkFZX1NJWkUodHN3eGxf YnV0dG9ucyksCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSB0c3d4bF9idXR0 b25fZGV2aWNlID0gewotCS5uYW1lCSAgID0gImdwaW8ta2V5cyIsCi0JLmlkCSAgICAgPSAtMSwK LQkubnVtX3Jlc291cmNlcyAgPSAwLAotCS5kZXYJICAgID0gewotCQkucGxhdGZvcm1fZGF0YSAg PSAmdHN3eGxfYnV0dG9uX2RhdGEsCi0JfSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCB3eGxf aW5pdCh2b2lkKQotewotCS8qCi0JICogQmFzaWMgTVY3OHh4MCBzZXR1cC4gTmVlZHMgdG8gYmUg Y2FsbGVkIGVhcmx5LgotCSAqLwotCW12Nzh4eDBfaW5pdCgpOwotCW12Nzh4eDBfbXBwX2NvbmYo d3hsX21wcF9jb25maWcpOwotCi0JLyoKLQkgKiBQYXJ0aXRpb24gb24tY2hpcCBwZXJpcGhlcmFs cyBiZXR3ZWVuIHRoZSB0d28gQ1BVIGNvcmVzLgotCSAqLwotCW12Nzh4eDBfZWhjaTBfaW5pdCgp OwotCW12Nzh4eDBfZWhjaTFfaW5pdCgpOwotCW12Nzh4eDBfZ2UwMF9pbml0KCZkYjc4eDAwX2dl MDBfZGF0YSk7Ci0JbXY3OHh4MF9nZTAxX2luaXQoJmRiNzh4MDBfZ2UwMV9kYXRhKTsKLQltdjc4 eHgwX3NhdGFfaW5pdCgmZGI3OHgwMF9zYXRhX2RhdGEpOwotCW12Nzh4eDBfdWFydDBfaW5pdCgp OwotCW12Nzh4eDBfdWFydDFfaW5pdCgpOwotCW12Nzh4eDBfdWFydDJfaW5pdCgpOwotCW12Nzh4 eDBfdWFydDNfaW5pdCgpOwotCW12Nzh4eDBfeG9yX2luaXQoKTsKLQltdjc4eHgwX2NyeXB0b19p bml0KCk7Ci0JbXY3OHh4MF9pMmNfaW5pdCgpOwotCWkyY19yZWdpc3Rlcl9ib2FyZF9pbmZvKDAs ICZkYjc4eDAwX2kyY19ydGMsIDEpOwotCi0JLy9lbmFibGUgYm90aCB1c2IgcG9ydHMKLQlncGlv X2RpcmVjdGlvbl9vdXRwdXQoVFNXWExfVVNCX1BPV0VSMSwgMSk7Ci0JZ3Bpb19kaXJlY3Rpb25f b3V0cHV0KFRTV1hMX1VTQl9QT1dFUjIsIDEpOwotCi0JLy9lbmFibGUgcmVhciBzd2l0Y2gKLQlw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnRzd3hsX2J1dHRvbl9kZXZpY2UpOwotfQotCi1zdGF0 aWMgaW50IF9faW5pdCB3eGxfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAobWFjaGluZV9pc190ZXJh c3RhdGlvbl93eGwoKSAmJiBtdjc4eHgwX2NvcmVfaW5kZXgoKSA9PSAwKQotICAgICAgICAgICAg ICAgIG12Nzh4eDBfcGNpZV9pbml0KDEsIDEpOwotCi0JcmV0dXJuIDA7Ci19Ci1zdWJzeXNfaW5p dGNhbGwod3hsX3BjaV9pbml0KTsKLQotTUFDSElORV9TVEFSVChURVJBU1RBVElPTl9XWEwsICJC dWZmYWxvIE5hcyBXWEwiKQotCS8qIE1haW50YWluZXI6IFNlYmFzdGllbiBSZXF1aWVtIDxzZWJh c3RpZW5AcmVxdWllbS5mcj4gKi8KLQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9 IE1WNzhYWDBfTlJfSVJRUywKLQkuaW5pdF9tYWNoaW5lCT0gd3hsX2luaXQsCi0JLm1hcF9pbwkJ PSBtdjc4eHgwX21hcF9pbywKLQkuaW5pdF9lYXJseQk9IG12Nzh4eDBfaW5pdF9lYXJseSwKLQku aW5pdF9pcnEJPSBtdjc4eHgwX2luaXRfaXJxLAotCS5pbml0X3RpbWUJPSBtdjc4eHgwX3RpbWVy X2luaXQsCi0JLnJlc3RhcnQJPSBtdjc4eHgwX3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2NvbW1vbi5jIGIvYXJjaC9hcm0vbWFjaC1tdjc4 eHgwL2NvbW1vbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzk3NTNmY2MwZWYu LjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvY29tbW9uLmMKKysrIC9k ZXYvbnVsbApAQCAtMSw0NDQgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seQotLyoKLSAqIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9jb21tb24uYwotICoKLSAq IENvcmUgZnVuY3Rpb25zIGZvciBNYXJ2ZWxsIE1WNzh4eDAgU29DcwotICovCi0KLSNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGlu dXgvaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxs aW51eC9zZXJpYWxfODI1MC5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2lu Y2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgotI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4K LSNpbmNsdWRlIDxhc20vaGFyZHdhcmUvY2FjaGUtZmVyb2Nlb24tbDIuaD4KLSNpbmNsdWRlIDxh c20vbWFjaC9tYXAuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC90aW1lLmg+Ci0jaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGF0YS91c2ItZWhjaS1vcmlvbi5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RhdGEvbXRkLW9yaW9uX25hbmQuaD4KLSNpbmNsdWRlIDxwbGF0L3RpbWUuaD4KLSNpbmNs dWRlIDxwbGF0L2NvbW1vbi5oPgotI2luY2x1ZGUgPHBsYXQvYWRkci1tYXAuaD4KLSNpbmNsdWRl ICJtdjc4eHgwLmgiCi0jaW5jbHVkZSAiYnJpZGdlLXJlZ3MuaCIKLSNpbmNsdWRlICJjb21tb24u aCIKLQotc3RhdGljIGludCBnZXRfdGNsayh2b2lkKTsKLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBDb21tb24gYml0cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1pbnQgbXY3OHh4MF9jb3Jl X2luZGV4KHZvaWQpCi17Ci0JdTMyIGV4dHJhOwotCi0JLyoKLQkgKiBSZWFkIEV4dHJhIEZlYXR1 cmVzIHJlZ2lzdGVyLgotCSAqLwotCV9fYXNtX18oIm1yYyBwMTUsIDEsICUwLCBjMTUsIGMxLCAw IiA6ICI9ciIgKGV4dHJhKSk7Ci0KLQlyZXR1cm4gISEoZXh0cmEgJiAweDAwMDA0MDAwKTsKLX0K LQotc3RhdGljIGludCBnZXRfaGNsayh2b2lkKQotewotCWludCBoY2xrOwotCi0JLyoKLQkgKiBI Q0xLIHRpY2sgcmF0ZSBpcyBjb25maWd1cmVkIGJ5IERFVl9EWzc6NV0gcGlucy4KLQkgKi8KLQlz d2l0Y2ggKChyZWFkbChTQU1QTEVfQVRfUkVTRVRfTE9XKSA+PiA1KSAmIDcpIHsKLQljYXNlIDA6 Ci0JCWhjbGsgPSAxNjY2NjY2Njc7Ci0JCWJyZWFrOwotCWNhc2UgMToKLQkJaGNsayA9IDIwMDAw MDAwMDsKLQkJYnJlYWs7Ci0JY2FzZSAyOgotCQloY2xrID0gMjY2NjY2NjY3OwotCQlicmVhazsK LQljYXNlIDM6Ci0JCWhjbGsgPSAzMzMzMzMzMzM7Ci0JCWJyZWFrOwotCWNhc2UgNDoKLQkJaGNs ayA9IDQwMDAwMDAwMDsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJcGFuaWMoInVua25vd24gSENM SyBQTEwgc2V0dGluZzogJS44eFxuIiwKLQkJCXJlYWRsKFNBTVBMRV9BVF9SRVNFVF9MT1cpKTsK LQl9Ci0KLQlyZXR1cm4gaGNsazsKLX0KLQotc3RhdGljIHZvaWQgZ2V0X3BjbGtfbDJjbGsoaW50 IGhjbGssIGludCBjb3JlX2luZGV4LCBpbnQgKnBjbGssIGludCAqbDJjbGspCi17Ci0JdTMyIGNm ZzsKLQotCS8qCi0JICogQ29yZSAjMCBQQ0xLL0wyQ0xLIGlzIGNvbmZpZ3VyZWQgYnkgYml0cyBb MTM6OF0sIGNvcmUgIzEKLQkgKiBQQ0xLL0wyQ0xLIGJ5IGJpdHMgWzE5OjE0XS4KLQkgKi8KLQlp ZiAoY29yZV9pbmRleCA9PSAwKSB7Ci0JCWNmZyA9IChyZWFkbChTQU1QTEVfQVRfUkVTRVRfTE9X KSA+PiA4KSAmIDB4M2Y7Ci0JfSBlbHNlIHsKLQkJY2ZnID0gKHJlYWRsKFNBTVBMRV9BVF9SRVNF VF9MT1cpID4+IDE0KSAmIDB4M2Y7Ci0JfQotCi0JLyoKLQkgKiBCaXRzIFsxMTo4XSAoWzE3OjE0 XSBmb3IgY29yZSAjMSkgY29uZmlndXJlIHRoZSBQQ0xLOkhDTEsKLQkgKiByYXRpbyAoMSwgMS41 LCAyLCAyLjUsIDMsIDMuNSwgNCwgNC41LCA1LCA1LjUsIDYpLgotCSAqLwotCSpwY2xrID0gKCh1 NjQpaGNsayAqICgyICsgKGNmZyAmIDB4ZikpKSA+PiAxOwotCi0JLyoKLQkgKiBCaXRzIFsxMzox Ml0gKFsxOToxOF0gZm9yIGNvcmUgIzEpIGNvbmZpZ3VyZSB0aGUgUENMSzpMMkNMSwotCSAqIHJh dGlvICgxLCAyLCAzKS4KLQkgKi8KLQkqbDJjbGsgPSAqcGNsayAvICgoKGNmZyA+PiA0KSAmIDMp ICsgMSk7Ci19Ci0KLXN0YXRpYyBpbnQgZ2V0X3RjbGsodm9pZCkKLXsKLQlpbnQgdGNsa19mcmVx OwotCi0JLyoKLQkgKiBUQ0xLIHRpY2sgcmF0ZSBpcyBjb25maWd1cmVkIGJ5IERFVl9BWzI6MF0g c3RyYXAgcGlucy4KLQkgKi8KLQlzd2l0Y2ggKChyZWFkbChTQU1QTEVfQVRfUkVTRVRfSElHSCkg Pj4gNikgJiA3KSB7Ci0JY2FzZSAxOgotCQl0Y2xrX2ZyZXEgPSAxNjY2NjY2Njc7Ci0JCWJyZWFr OwotCWNhc2UgMzoKLQkJdGNsa19mcmVxID0gMjAwMDAwMDAwOwotCQlicmVhazsKLQlkZWZhdWx0 OgotCQlwYW5pYygidW5rbm93biBUQ0xLIFBMTCBzZXR0aW5nOiAlLjh4XG4iLAotCQkJcmVhZGwo U0FNUExFX0FUX1JFU0VUX0hJR0gpKTsKLQl9Ci0KLQlyZXR1cm4gdGNsa19mcmVxOwotfQotCi0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotICogSS9PIEFkZHJlc3MgTWFwcGluZwotICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG1hcF9kZXNjIG12Nzh4eDBfaW9fZGVzY1tdIF9f aW5pdGRhdGEgPSB7Ci0JewotCQkudmlydHVhbAk9ICh1bnNpZ25lZCBsb25nKSBNVjc4WFgwX0NP UkVfUkVHU19WSVJUX0JBU0UsCi0JCS5wZm4JCT0gMCwKLQkJLmxlbmd0aAkJPSBNVjc4WFgwX0NP UkVfUkVHU19TSVpFLAotCQkudHlwZQkJPSBNVF9ERVZJQ0UsCi0JfSwgewotCQkudmlydHVhbAk9 ICh1bnNpZ25lZCBsb25nKSBNVjc4WFgwX1JFR1NfVklSVF9CQVNFLAotCQkucGZuCQk9IF9fcGh5 c190b19wZm4oTVY3OFhYMF9SRUdTX1BIWVNfQkFTRSksCi0JCS5sZW5ndGgJCT0gTVY3OFhYMF9S RUdTX1NJWkUsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LAotfTsKLQotdm9pZCBfX2luaXQg bXY3OHh4MF9tYXBfaW8odm9pZCkKLXsKLQl1bnNpZ25lZCBsb25nIHBoeXM7Ci0KLQkvKgotCSAq IE1hcCB0aGUgcmlnaHQgc2V0IG9mIHBlci1jb3JlIHJlZ2lzdGVycyBkZXBlbmRpbmcgb24KLQkg KiB3aGljaCBjb3JlIHdlIGFyZSBydW5uaW5nIG9uLgotCSAqLwotCWlmIChtdjc4eHgwX2NvcmVf aW5kZXgoKSA9PSAwKSB7Ci0JCXBoeXMgPSBNVjc4WFgwX0NPUkUwX1JFR1NfUEhZU19CQVNFOwot CX0gZWxzZSB7Ci0JCXBoeXMgPSBNVjc4WFgwX0NPUkUxX1JFR1NfUEhZU19CQVNFOwotCX0KLQlt djc4eHgwX2lvX2Rlc2NbMF0ucGZuID0gX19waHlzX3RvX3BmbihwaHlzKTsKLQotCWlvdGFibGVf aW5pdChtdjc4eHgwX2lvX2Rlc2MsIEFSUkFZX1NJWkUobXY3OHh4MF9pb19kZXNjKSk7Ci19Ci0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDTEsgdHJlZQotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi1zdGF0aWMgc3RydWN0IGNsayAqdGNsazsKLQotc3RhdGljIHZvaWQgX19pbml0IGNsa19p bml0KHZvaWQpCi17Ci0JdGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKE5VTEwsICJ0Y2xr IiwgTlVMTCwgMCwgZ2V0X3RjbGsoKSk7Ci0KLQlvcmlvbl9jbGtkZXZfaW5pdCh0Y2xrKTsKLX0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFSENJCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LXZvaWQgX19pbml0IG12Nzh4eDBfZWhjaTBfaW5pdCh2b2lkKQotewotCW9yaW9uX2VoY2lfaW5p dChVU0IwX1BIWVNfQkFTRSwgSVJRX01WNzhYWDBfVVNCXzAsIEVIQ0lfUEhZX05BKTsKLX0KLQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVIQ0kxCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LXZvaWQgX19pbml0IG12Nzh4eDBfZWhjaTFfaW5pdCh2b2lkKQotewotCW9yaW9uX2VoY2lfMV9p bml0KFVTQjFfUEhZU19CQVNFLCBJUlFfTVY3OFhYMF9VU0JfMSk7Ci19Ci0KLQotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0gKiBFSENJMgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5p dCBtdjc4eHgwX2VoY2kyX2luaXQodm9pZCkKLXsKLQlvcmlvbl9laGNpXzJfaW5pdChVU0IyX1BI WVNfQkFTRSwgSVJRX01WNzhYWDBfVVNCXzIpOwotfQotCi0KLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogR0UwMAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4eHgwX2dl MDBfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpCi17Ci0J b3Jpb25fZ2UwMF9pbml0KGV0aF9kYXRhLAotCQkJR0UwMF9QSFlTX0JBU0UsIElSUV9NVjc4WFgw X0dFMDBfU1VNLAotCQkJSVJRX01WNzhYWDBfR0VfRVJSLAotCQkJTVY2NDNYWF9UWF9DU1VNX0RF RkFVTFRfTElNSVQpOwotfQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR0UwMQotICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4eHgwX2dlMDFfaW5pdChzdHJ1Y3Qg bXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpCi17Ci0Jb3Jpb25fZ2UwMV9pbml0 KGV0aF9kYXRhLAotCQkJR0UwMV9QSFlTX0JBU0UsIElSUV9NVjc4WFgwX0dFMDFfU1VNLAotCQkJ TVY2NDNYWF9UWF9DU1VNX0RFRkFVTFRfTElNSVQpOwotfQotCi0KLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgotICogR0UxMAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4eHgw X2dlMTBfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpCi17 Ci0JdTMyIGRldiwgcmV2OwotCi0JLyoKLQkgKiBPbiB0aGUgWjAsIGdlMTAgYW5kIGdlMTEgYXJl IGludGVybmFsbHkgY29ubmVjdGVkIGJhY2sKLQkgKiB0byBiYWNrLCBhbmQgbm90IGJyb3VnaHQg b3V0LgotCSAqLwotCW12Nzh4eDBfcGNpZV9pZCgmZGV2LCAmcmV2KTsKLQlpZiAoZGV2ID09IE1W NzhYMDBfWjBfREVWX0lEKSB7Ci0JCWV0aF9kYXRhLT5waHlfYWRkciA9IE1WNjQzWFhfRVRIX1BI WV9OT05FOwotCQlldGhfZGF0YS0+c3BlZWQgPSBTUEVFRF8xMDAwOwotCQlldGhfZGF0YS0+ZHVw bGV4ID0gRFVQTEVYX0ZVTEw7Ci0JfQotCi0Jb3Jpb25fZ2UxMF9pbml0KGV0aF9kYXRhLCBHRTEw X1BIWVNfQkFTRSwgSVJRX01WNzhYWDBfR0UxMF9TVU0pOwotfQotCi0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotICogR0UxMQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4 eHgwX2dlMTFfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEp Ci17Ci0JdTMyIGRldiwgcmV2OwotCi0JLyoKLQkgKiBPbiB0aGUgWjAsIGdlMTAgYW5kIGdlMTEg YXJlIGludGVybmFsbHkgY29ubmVjdGVkIGJhY2sKLQkgKiB0byBiYWNrLCBhbmQgbm90IGJyb3Vn aHQgb3V0LgotCSAqLwotCW12Nzh4eDBfcGNpZV9pZCgmZGV2LCAmcmV2KTsKLQlpZiAoZGV2ID09 IE1WNzhYMDBfWjBfREVWX0lEKSB7Ci0JCWV0aF9kYXRhLT5waHlfYWRkciA9IE1WNjQzWFhfRVRI X1BIWV9OT05FOwotCQlldGhfZGF0YS0+c3BlZWQgPSBTUEVFRF8xMDAwOwotCQlldGhfZGF0YS0+ ZHVwbGV4ID0gRFVQTEVYX0ZVTEw7Ci0JfQotCi0Jb3Jpb25fZ2UxMV9pbml0KGV0aF9kYXRhLCBH RTExX1BIWVNfQkFTRSwgSVJRX01WNzhYWDBfR0UxMV9TVU0pOwotfQotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAqIEkyQwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4 eHgwX2kyY19pbml0KHZvaWQpCi17Ci0Jb3Jpb25faTJjX2luaXQoSTJDXzBfUEhZU19CQVNFLCBJ UlFfTVY3OFhYMF9JMkNfMCwgOCk7Ci0Jb3Jpb25faTJjXzFfaW5pdChJMkNfMV9QSFlTX0JBU0Us IElSUV9NVjc4WFgwX0kyQ18xLCA4KTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBT QVRBCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBfc2F0YV9pbml0 KHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEgKnNhdGFfZGF0YSkKLXsKLQlvcmlvbl9zYXRh X2luaXQoc2F0YV9kYXRhLCBTQVRBX1BIWVNfQkFTRSwgSVJRX01WNzhYWDBfU0FUQSk7Ci19Ci0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBVQVJUMAotICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci12b2lkIF9faW5pdCBtdjc4eHgwX3VhcnQwX2luaXQodm9pZCkKLXsKLQlvcmlvbl91YXJ0MF9p bml0KFVBUlQwX1ZJUlRfQkFTRSwgVUFSVDBfUEhZU19CQVNFLAotCQkJIElSUV9NVjc4WFgwX1VB UlRfMCwgdGNsayk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBVQVJUMQotICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4eHgwX3VhcnQxX2luaXQodm9pZCkK LXsKLQlvcmlvbl91YXJ0MV9pbml0KFVBUlQxX1ZJUlRfQkFTRSwgVUFSVDFfUEhZU19CQVNFLAot CQkJIElSUV9NVjc4WFgwX1VBUlRfMSwgdGNsayk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBVQVJUMgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4eHgw X3VhcnQyX2luaXQodm9pZCkKLXsKLQlvcmlvbl91YXJ0Ml9pbml0KFVBUlQyX1ZJUlRfQkFTRSwg VUFSVDJfUEhZU19CQVNFLAotCQkJIElSUV9NVjc4WFgwX1VBUlRfMiwgdGNsayk7Ci19Ci0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogVUFSVDMKLSAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9p ZCBfX2luaXQgbXY3OHh4MF91YXJ0M19pbml0KHZvaWQpCi17Ci0Jb3Jpb25fdWFydDNfaW5pdChV QVJUM19WSVJUX0JBU0UsIFVBUlQzX1BIWVNfQkFTRSwKLQkJCSBJUlFfTVY3OFhYMF9VQVJUXzMs IHRjbGspOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFRpbWUgaGFuZGxpbmcKLSAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgbXY3OHh4MF9pbml0X2Vhcmx5KHZvaWQp Ci17Ci0Jb3Jpb25fdGltZV9zZXRfYmFzZShUSU1FUl9WSVJUX0JBU0UpOwotCWlmIChtdjc4eHgw X2NvcmVfaW5kZXgoKSA9PSAwKQotCQltdmVidV9tYnVzX2luaXQoIm1hcnZlbGwsbXY3OHh4MC1t YnVzIiwKLQkJCQlCUklER0VfV0lOU19DUFUwX0JBU0UsIEJSSURHRV9XSU5TX1NaLAotCQkJCURE Ul9XSU5ET1dfQ1BVMF9CQVNFLCBERFJfV0lORE9XX0NQVV9TWik7Ci0JZWxzZQotCQltdmVidV9t YnVzX2luaXQoIm1hcnZlbGwsbXY3OHh4MC1tYnVzIiwKLQkJCQlCUklER0VfV0lOU19DUFUxX0JB U0UsIEJSSURHRV9XSU5TX1NaLAotCQkJCUREUl9XSU5ET1dfQ1BVMV9CQVNFLCBERFJfV0lORE9X X0NQVV9TWik7Ci19Ci0KLXZvaWQgX19yZWYgbXY3OHh4MF90aW1lcl9pbml0KHZvaWQpCi17Ci0J b3Jpb25fdGltZV9pbml0KEJSSURHRV9WSVJUX0JBU0UsIEJSSURHRV9JTlRfVElNRVIxX0NMUiwK LQkJCUlSUV9NVjc4WFgwX1RJTUVSXzEsIGdldF90Y2xrKCkpOwotfQotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotKiBYT1IgZW5naW5lCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQg bXY3OHh4MF94b3JfaW5pdCh2b2lkKQotewotCW9yaW9uX3hvcjBfaW5pdChYT1JfUEhZU19CQVNF LAotCQlYT1JfUEhZU19CQVNFICsgMHgyMDAsCi0JCUlSUV9NVjc4WFgwX1hPUl8wLCBJUlFfTVY3 OFhYMF9YT1JfMSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDcnlwdG9ncmFwaGlj IEVuZ2luZXMgYW5kIFNlY3VyaXR5IEFjY2VsZXJhdG9yIChDRVNBKQotKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBfY3J5cHRvX2luaXQodm9pZCkKLXsKLQltdmVidV9t YnVzX2FkZF93aW5kb3dfYnlfaWQoTVY3OFhYMF9NQlVTX1NSQU1fVEFSR0VULAotCQkJCU1WNzhY WDBfTUJVU19TUkFNX0FUVFIsCi0JCQkJTVY3OFhYMF9TUkFNX1BIWVNfQkFTRSwKLQkJCU1WNzhY WDBfU1JBTV9TSVpFKTsKLQlvcmlvbl9jcnlwdG9faW5pdChDUllQVE9fUEhZU19CQVNFLCBNVjc4 WFgwX1NSQU1fUEhZU19CQVNFLAotCQlTWl84SywgSVJRX01WNzhYWDBfQ1JZUFRPKTsKLX0KLQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdlbmVyYWwKLSAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lwotc3RhdGljIGNoYXIgKiBfX2luaXQgbXY3OHh4MF9pZCh2b2lkKQotewotCXUzMiBkZXYsIHJl djsKLQotCW12Nzh4eDBfcGNpZV9pZCgmZGV2LCAmcmV2KTsKLQotCWlmIChkZXYgPT0gTVY3OFgw MF9aMF9ERVZfSUQpIHsKLQkJaWYgKHJldiA9PSBNVjc4WDAwX1JFVl9aMCkKLQkJCXJldHVybiAi TVY3OFgwMC1aMCI7Ci0JCWVsc2UKLQkJCXJldHVybiAiTVY3OFgwMC1SZXYtVW5zdXBwb3J0ZWQi OwotCX0gZWxzZSBpZiAoZGV2ID09IE1WNzgxMDBfREVWX0lEKSB7Ci0JCWlmIChyZXYgPT0gTVY3 ODEwMF9SRVZfQTApCi0JCQlyZXR1cm4gIk1WNzgxMDAtQTAiOwotCQllbHNlIGlmIChyZXYgPT0g TVY3ODEwMF9SRVZfQTEpCi0JCQlyZXR1cm4gIk1WNzgxMDAtQTEiOwotCQllbHNlCi0JCQlyZXR1 cm4gIk1WNzgxMDAtUmV2LVVuc3VwcG9ydGVkIjsKLQl9IGVsc2UgaWYgKGRldiA9PSBNVjc4MjAw X0RFVl9JRCkgewotCQlpZiAocmV2ID09IE1WNzgxMDBfUkVWX0EwKQotCQkJcmV0dXJuICJNVjc4 MjAwLUEwIjsKLQkJZWxzZQotCQkJcmV0dXJuICJNVjc4MjAwLVJldi1VbnN1cHBvcnRlZCI7Ci0J fSBlbHNlIHsKLQkJcmV0dXJuICJEZXZpY2UtVW5rbm93biI7Ci0JfQotfQotCi1zdGF0aWMgaW50 IF9faW5pdCBpc19sMl93cml0ZXRocm91Z2godm9pZCkKLXsKLQlyZXR1cm4gISEocmVhZGwoQ1BV X0NPTlRST0wpICYgTDJfV1JJVEVUSFJPVUdIKTsKLX0KLQotdm9pZCBfX2luaXQgbXY3OHh4MF9p bml0KHZvaWQpCi17Ci0JaW50IGNvcmVfaW5kZXg7Ci0JaW50IGhjbGs7Ci0JaW50IHBjbGs7Ci0J aW50IGwyY2xrOwotCi0JY29yZV9pbmRleCA9IG12Nzh4eDBfY29yZV9pbmRleCgpOwotCWhjbGsg PSBnZXRfaGNsaygpOwotCWdldF9wY2xrX2wyY2xrKGhjbGssIGNvcmVfaW5kZXgsICZwY2xrLCAm bDJjbGspOwotCi0JcHJpbnRrKEtFUk5fSU5GTyAiJXMgIiwgbXY3OHh4MF9pZCgpKTsKLQlwcmlu dGsoImNvcmUgIyVkLCAiLCBjb3JlX2luZGV4KTsKLQlwcmludGsoIlBDTEsgPSAlZE1IeiwgIiwg KHBjbGsgKyA0OTk5OTkpIC8gMTAwMDAwMCk7Ci0JcHJpbnRrKCJMMiA9ICVkTUh6LCAiLCAobDJj bGsgKyA0OTk5OTkpIC8gMTAwMDAwMCk7Ci0JcHJpbnRrKCJIQ0xLID0gJWRNSHosICIsIChoY2xr ICsgNDk5OTk5KSAvIDEwMDAwMDApOwotCXByaW50aygiVENMSyA9ICVkTUh6XG4iLCAoZ2V0X3Rj bGsoKSArIDQ5OTk5OSkgLyAxMDAwMDAwKTsKLQotCWlmIChJU19FTkFCTEVEKENPTkZJR19DQUNI RV9GRVJPQ0VPTl9MMikpCi0JCWZlcm9jZW9uX2wyX2luaXQoaXNfbDJfd3JpdGV0aHJvdWdoKCkp OwotCi0JLyogU2V0dXAgcm9vdCBvZiBjbGsgdHJlZSAqLwotCWNsa19pbml0KCk7Ci19Ci0KLXZv aWQgbXY3OHh4MF9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9kZSwgY29uc3QgY2hhciAqY21k KQotewotCS8qCi0JICogRW5hYmxlIHNvZnQgcmVzZXQgdG8gYXNzZXJ0IFJTVE9VVG4uCi0JICov Ci0Jd3JpdGVsKFNPRlRfUkVTRVRfT1VUX0VOLCBSU1RPVVRuX01BU0spOwotCi0JLyoKLQkgKiBB c3NlcnQgc29mdCByZXNldC4KLQkgKi8KLQl3cml0ZWwoU09GVF9SRVNFVCwgU1lTVEVNX1NPRlRf UkVTRVQpOwotCi0Jd2hpbGUgKDEpCi0JCTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gt bXY3OHh4MC9jb21tb24uaCBiL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9jb21tb24uaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYxZGZkNTk1MDAzLi4wMDAwMDAwMDAwMDAKLS0tIGEv YXJjaC9hcm0vbWFjaC1tdjc4eHgwL2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAs MCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwotLyoKLSAq IGFyY2gvYXJtL21hY2gtbXY3OHh4MC9jb21tb24uaAotICoKLSAqIENvcmUgZnVuY3Rpb25zIGZv ciBNYXJ2ZWxsIE1WNzh4eDAgU29DcwotICovCi0KLSNpZm5kZWYgX19BUkNIX01WNzhYWDBfQ09N TU9OX0gKLSNkZWZpbmUgX19BUkNIX01WNzhYWDBfQ09NTU9OX0gKLQotI2luY2x1ZGUgPGxpbnV4 L3JlYm9vdC5oPgotCi1zdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YTsKLXN0cnVjdCBt dl9zYXRhX3BsYXRmb3JtX2RhdGE7Ci0KLS8qCi0gKiBCYXNpYyBNVjc4eHgwIGluaXQgZnVuY3Rp b25zIHVzZWQgZWFybHkgYnkgbWFjaGluZS1zZXR1cC4KLSAqLwotaW50IG12Nzh4eDBfY29yZV9p bmRleCh2b2lkKTsKLXZvaWQgbXY3OHh4MF9tYXBfaW8odm9pZCk7Ci12b2lkIG12Nzh4eDBfaW5p dCh2b2lkKTsKLXZvaWQgbXY3OHh4MF9pbml0X2Vhcmx5KHZvaWQpOwotdm9pZCBtdjc4eHgwX2lu aXRfaXJxKHZvaWQpOwotCi12b2lkIG12Nzh4eDBfc2V0dXBfY3B1X21idXModm9pZCk7Ci12b2lk IG12Nzh4eDBfc2V0dXBfcGNpZV9pb193aW4oaW50IHdpbmRvdywgdTMyIGJhc2UsIHUzMiBzaXpl LAotCQkJICAgICAgIGludCBtYWosIGludCBtaW4pOwotdm9pZCBtdjc4eHgwX3NldHVwX3BjaWVf bWVtX3dpbihpbnQgd2luZG93LCB1MzIgYmFzZSwgdTMyIHNpemUsCi0JCQkJaW50IG1haiwgaW50 IG1pbik7Ci0KLXZvaWQgbXY3OHh4MF9wY2llX2lkKHUzMiAqZGV2LCB1MzIgKnJldik7Ci0KLXZv aWQgbXY3OHh4MF9laGNpMF9pbml0KHZvaWQpOwotdm9pZCBtdjc4eHgwX2VoY2kxX2luaXQodm9p ZCk7Ci12b2lkIG12Nzh4eDBfZWhjaTJfaW5pdCh2b2lkKTsKLXZvaWQgbXY3OHh4MF9nZTAwX2lu aXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRhKTsKLXZvaWQgbXY3 OHh4MF9nZTAxX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRh KTsKLXZvaWQgbXY3OHh4MF9nZTEwX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2Rh dGEgKmV0aF9kYXRhKTsKLXZvaWQgbXY3OHh4MF9nZTExX2luaXQoc3RydWN0IG12NjQzeHhfZXRo X3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRhKTsKLXZvaWQgbXY3OHh4MF9wY2llX2luaXQoaW50IGlu aXRfcG9ydDAsIGludCBpbml0X3BvcnQxKTsKLXZvaWQgbXY3OHh4MF9zYXRhX2luaXQoc3RydWN0 IG12X3NhdGFfcGxhdGZvcm1fZGF0YSAqc2F0YV9kYXRhKTsKLXZvaWQgbXY3OHh4MF91YXJ0MF9p bml0KHZvaWQpOwotdm9pZCBtdjc4eHgwX3VhcnQxX2luaXQodm9pZCk7Ci12b2lkIG12Nzh4eDBf dWFydDJfaW5pdCh2b2lkKTsKLXZvaWQgbXY3OHh4MF91YXJ0M19pbml0KHZvaWQpOwotdm9pZCBt djc4eHgwX3hvcl9pbml0KHZvaWQpOwotdm9pZCBtdjc4eHgwX2NyeXB0b19pbml0KHZvaWQpOwot dm9pZCBtdjc4eHgwX2kyY19pbml0KHZvaWQpOwotdm9pZCBtdjc4eHgwX3Jlc3RhcnQoZW51bSBy ZWJvb3RfbW9kZSwgY29uc3QgY2hhciAqKTsKLQotZXh0ZXJuIHZvaWQgbXY3OHh4MF90aW1lcl9p bml0KHZvaWQpOwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgw L2lycS5jIGIvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2lycS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA2ZTQyZjY0NDY2MzcuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNo LW12Nzh4eDAvaXJxLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1tdjc4 eHgwL2lycS5jCi0gKgotICogTVY3OHh4MCBJUlEgaGFuZGxpbmcuCi0gKi8KLSNpbmNsdWRlIDxs aW51eC9ncGlvL2NvbnN1bWVyLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVk ZSA8bGludXgvaXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvaW8uaD4KLSNpbmNsdWRlIDxhc20vZXhj ZXB0aW9uLmg+Ci0jaW5jbHVkZSA8cGxhdC9vcmlvbi1ncGlvLmg+Ci0jaW5jbHVkZSA8cGxhdC9p cnEuaD4KLSNpbmNsdWRlICJicmlkZ2UtcmVncy5oIgotI2luY2x1ZGUgImNvbW1vbi5oIgotCi1z dGF0aWMgaW50IF9faW5pdGRhdGEgZ3BpbzBfaXJxc1s0XSA9IHsKLQlJUlFfTVY3OFhYMF9HUElP XzBfNywKLQlJUlFfTVY3OFhYMF9HUElPXzhfMTUsCi0JSVJRX01WNzhYWDBfR1BJT18xNl8yMywK LQlJUlFfTVY3OFhYMF9HUElPXzI0XzMxLAotfTsKLQotc3RhdGljIHZvaWQgX19pb21lbSAqbXY3 OHh4MF9pcnFfYmFzZSA9IElSUV9WSVJUX0JBU0U7Ci0KLXN0YXRpYyBhc21saW5rYWdlIHZvaWQK LV9fZXhjZXB0aW9uX2lycV9lbnRyeSBtdjc4eHgwX2xlZ2FjeV9oYW5kbGVfaXJxKHN0cnVjdCBw dF9yZWdzICpyZWdzKQotewotCXUzMiBzdGF0OwotCi0Jc3RhdCA9IHJlYWRsX3JlbGF4ZWQobXY3 OHh4MF9pcnFfYmFzZSArIElSUV9DQVVTRV9MT1dfT0ZGKTsKLQlzdGF0ICY9IHJlYWRsX3JlbGF4 ZWQobXY3OHh4MF9pcnFfYmFzZSArIElSUV9NQVNLX0xPV19PRkYpOwotCWlmIChzdGF0KSB7Ci0J CXVuc2lnbmVkIGludCBod2lycSA9IF9fZmxzKHN0YXQpOwotCQloYW5kbGVfSVJRKGh3aXJxLCBy ZWdzKTsKLQkJcmV0dXJuOwotCX0KLQlzdGF0ID0gcmVhZGxfcmVsYXhlZChtdjc4eHgwX2lycV9i YXNlICsgSVJRX0NBVVNFX0hJR0hfT0ZGKTsKLQlzdGF0ICY9IHJlYWRsX3JlbGF4ZWQobXY3OHh4 MF9pcnFfYmFzZSArIElSUV9NQVNLX0hJR0hfT0ZGKTsKLQlpZiAoc3RhdCkgewotCQl1bnNpZ25l ZCBpbnQgaHdpcnEgPSAzMiArIF9fZmxzKHN0YXQpOwotCQloYW5kbGVfSVJRKGh3aXJxLCByZWdz KTsKLQkJcmV0dXJuOwotCX0KLQlzdGF0ID0gcmVhZGxfcmVsYXhlZChtdjc4eHgwX2lycV9iYXNl ICsgSVJRX0NBVVNFX0VSUl9PRkYpOwotCXN0YXQgJj0gcmVhZGxfcmVsYXhlZChtdjc4eHgwX2ly cV9iYXNlICsgSVJRX01BU0tfRVJSX09GRik7Ci0JaWYgKHN0YXQpIHsKLQkJdW5zaWduZWQgaW50 IGh3aXJxID0gNjQgKyBfX2ZscyhzdGF0KTsKLQkJaGFuZGxlX0lSUShod2lycSwgcmVncyk7Ci0J CXJldHVybjsKLQl9Ci19Ci0KLXZvaWQgX19pbml0IG12Nzh4eDBfaW5pdF9pcnEodm9pZCkKLXsK LQlvcmlvbl9pcnFfaW5pdCgwLCBJUlFfVklSVF9CQVNFICsgSVJRX01BU0tfTE9XX09GRik7Ci0J b3Jpb25faXJxX2luaXQoMzIsIElSUV9WSVJUX0JBU0UgKyBJUlFfTUFTS19ISUdIX09GRik7Ci0J b3Jpb25faXJxX2luaXQoNjQsIElSUV9WSVJUX0JBU0UgKyBJUlFfTUFTS19FUlJfT0ZGKTsKLQot CXNldF9oYW5kbGVfaXJxKG12Nzh4eDBfbGVnYWN5X2hhbmRsZV9pcnEpOwotCi0JLyoKLQkgKiBJ bml0aWFsaXplIGdwaW9saWIgZm9yIEdQSU9zIDAtMzEuICAoVGhlIEdQSU8gaW50ZXJydXB0IG1h c2sKLQkgKiByZWdpc3RlcnMgZm9yIGNvcmUgIzEgYXJlIGF0IGFuIG9mZnNldCBvZiAweDE4IGZy b20gdGhvc2Ugb2YKLQkgKiBjb3JlICMwLikKLQkgKi8KLQlvcmlvbl9ncGlvX2luaXQoMCwgMzIs IEdQSU9fVklSVF9CQVNFLCBtdjc4eHgwX2NvcmVfaW5kZXgoKSA/IDB4MTggOiAwLAotCQkJSVJR X01WNzhYWDBfR1BJT19TVEFSVCwgZ3BpbzBfaXJxcyk7Ci19CmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLW12Nzh4eDAvaXJxcy5oIGIvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2lycXMuaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJiMzU3ZDM4M2Q4Li4wMDAwMDAwMDAwMDAKLS0t IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2lycXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICsw LDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qIElS USBkZWZpbml0aW9ucyBmb3IgTWFydmVsbCBNVjc4eHgwIFNvQ3MgKi8KLQotI2lmbmRlZiBfX0FT TV9BUkNIX0lSUVNfSAotI2RlZmluZSBfX0FTTV9BUkNIX0lSUVNfSAotCi0vKgotICogTVY3OHh4 MCBMb3cgSW50ZXJydXB0IENvbnRyb2xsZXIKLSAqLwotI2RlZmluZSBJUlFfTVY3OFhYMF9FUlIJ CTAKLSNkZWZpbmUgSVJRX01WNzhYWDBfU1BJCQkxCi0jZGVmaW5lIElSUV9NVjc4WFgwX0kyQ18w CTIKLSNkZWZpbmUgSVJRX01WNzhYWDBfSTJDXzEJMwotI2RlZmluZSBJUlFfTVY3OFhYMF9JRE1B XzAJNAotI2RlZmluZSBJUlFfTVY3OFhYMF9JRE1BXzEJNQotI2RlZmluZSBJUlFfTVY3OFhYMF9J RE1BXzIJNgotI2RlZmluZSBJUlFfTVY3OFhYMF9JRE1BXzMJNwotI2RlZmluZSBJUlFfTVY3OFhY MF9USU1FUl8wCTgKLSNkZWZpbmUgSVJRX01WNzhYWDBfVElNRVJfMQk5Ci0jZGVmaW5lIElSUV9N Vjc4WFgwX1RJTUVSXzIJMTAKLSNkZWZpbmUgSVJRX01WNzhYWDBfVElNRVJfMwkxMQotI2RlZmlu ZSBJUlFfTVY3OFhYMF9VQVJUXzAJMTIKLSNkZWZpbmUgSVJRX01WNzhYWDBfVUFSVF8xCTEzCi0j ZGVmaW5lIElSUV9NVjc4WFgwX1VBUlRfMgkxNAotI2RlZmluZSBJUlFfTVY3OFhYMF9VQVJUXzMJ MTUKLSNkZWZpbmUgSVJRX01WNzhYWDBfVVNCXzAJMTYKLSNkZWZpbmUgSVJRX01WNzhYWDBfVVNC XzEJMTcKLSNkZWZpbmUgSVJRX01WNzhYWDBfVVNCXzIJMTgKLSNkZWZpbmUgSVJRX01WNzhYWDBf Q1JZUFRPCTE5Ci0jZGVmaW5lIElSUV9NVjc4WFgwX1NESU9fMAkyMAotI2RlZmluZSBJUlFfTVY3 OFhYMF9TRElPXzEJMjEKLSNkZWZpbmUgSVJRX01WNzhYWDBfWE9SXzAJMjIKLSNkZWZpbmUgSVJR X01WNzhYWDBfWE9SXzEJMjMKLSNkZWZpbmUgSVJRX01WNzhYWDBfSTJTXzAJMjQKLSNkZWZpbmUg SVJRX01WNzhYWDBfSTJTXzEJMjUKLSNkZWZpbmUgSVJRX01WNzhYWDBfU0FUQQkyNgotI2RlZmlu ZSBJUlFfTVY3OFhYMF9URE1JCTI3Ci0KLS8qCi0gKiBNVjc4eHgwIEhpZ2ggSW50ZXJydXB0IENv bnRyb2xsZXIKLSAqLwotI2RlZmluZSBJUlFfTVY3OFhYMF9QQ0lFXzAwCTMyCi0jZGVmaW5lIElS UV9NVjc4WFgwX1BDSUVfMDEJMzMKLSNkZWZpbmUgSVJRX01WNzhYWDBfUENJRV8wMgkzNAotI2Rl ZmluZSBJUlFfTVY3OFhYMF9QQ0lFXzAzCTM1Ci0jZGVmaW5lIElSUV9NVjc4WFgwX1BDSUVfMTAJ MzYKLSNkZWZpbmUgSVJRX01WNzhYWDBfUENJRV8xMQkzNwotI2RlZmluZSBJUlFfTVY3OFhYMF9Q Q0lFXzEyCTM4Ci0jZGVmaW5lIElSUV9NVjc4WFgwX1BDSUVfMTMJMzkKLSNkZWZpbmUgSVJRX01W NzhYWDBfR0UwMF9TVU0JNDAKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UwMF9SWAk0MQotI2RlZmlu ZSBJUlFfTVY3OFhYMF9HRTAwX1RYCTQyCi0jZGVmaW5lIElSUV9NVjc4WFgwX0dFMDBfTUlTQwk0 MwotI2RlZmluZSBJUlFfTVY3OFhYMF9HRTAxX1NVTQk0NAotI2RlZmluZSBJUlFfTVY3OFhYMF9H RTAxX1JYCTQ1Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dFMDFfVFgJNDYKLSNkZWZpbmUgSVJRX01W NzhYWDBfR0UwMV9NSVNDCTQ3Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dFMTBfU1VNCTQ4Ci0jZGVm aW5lIElSUV9NVjc4WFgwX0dFMTBfUlgJNDkKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UxMF9UWAk1 MAotI2RlZmluZSBJUlFfTVY3OFhYMF9HRTEwX01JU0MJNTEKLSNkZWZpbmUgSVJRX01WNzhYWDBf R0UxMV9TVU0JNTIKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UxMV9SWAk1MwotI2RlZmluZSBJUlFf TVY3OFhYMF9HRTExX1RYCTU0Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dFMTFfTUlTQwk1NQotI2Rl ZmluZSBJUlFfTVY3OFhYMF9HUElPXzBfNwk1NgotI2RlZmluZSBJUlFfTVY3OFhYMF9HUElPXzhf MTUJNTcKLSNkZWZpbmUgSVJRX01WNzhYWDBfR1BJT18xNl8yMwk1OAotI2RlZmluZSBJUlFfTVY3 OFhYMF9HUElPXzI0XzMxCTU5Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0RCX0lOCTYwCi0jZGVmaW5l IElSUV9NVjc4WFgwX0RCX09VVAk2MQotCi0vKgotICogTVY3OHh4MCBFcnJvciBJbnRlcnJ1cHQg Q29udHJvbGxlcgotICovCi0jZGVmaW5lIElSUV9NVjc4WFgwX0dFX0VSUgk3MAotCi0vKgotICog TVY3OFhYMCBHZW5lcmFsIFB1cnBvc2UgUGlucwotICovCi0jZGVmaW5lIElSUV9NVjc4WFgwX0dQ SU9fU1RBUlQJOTYKLSNkZWZpbmUgTlJfR1BJT19JUlFTCQkzMgotCi0jZGVmaW5lIE1WNzhYWDBf TlJfSVJRUwkJKElSUV9NVjc4WFgwX0dQSU9fU1RBUlQgKyBOUl9HUElPX0lSUVMpCi0KLQotI2Vu ZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvbXBwLmMgYi9hcmNoL2FybS9t YWNoLW12Nzh4eDAvbXBwLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYmY1OTBk NzlmZS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9tcHAuYworKysg L2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLW12Nzh4MDAvbXBwLmMKLSAqCi0gKiBN UFAgZnVuY3Rpb25zIGZvciBNYXJ2ZWxsIE1WNzh4MDAgU29DcwotICovCi0jaW5jbHVkZSA8bGlu dXgvZ3Bpby9jb25zdW1lci5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUg PGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPHBsYXQvbXBw Lmg+Ci0jaW5jbHVkZSAibXY3OHh4MC5oIgotI2luY2x1ZGUgImNvbW1vbi5oIgotI2luY2x1ZGUg Im1wcC5oIgotCi1zdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdCBtdjc4eHgwX3ZhcmlhbnQodm9p ZCkKLXsKLQl1MzIgZGV2LCByZXY7Ci0KLQltdjc4eHgwX3BjaWVfaWQoJmRldiwgJnJldik7Ci0K LQlpZiAoZGV2ID09IE1WNzgxMDBfREVWX0lEICYmIHJldiA+PSBNVjc4MTAwX1JFVl9BMCkKLQkJ cmV0dXJuIE1QUF83ODEwMF9BMF9NQVNLOwotCi0JcHJpbnRrKEtFUk5fRVJSICJNUFAgc2V0dXA6 IHVua25vd24gbXY3OHgwMCB2YXJpYW50ICIKLQkJCSIoZGV2ICUjeCByZXYgJSN4KVxuIiwgZGV2 LCByZXYpOwotCXJldHVybiAwOwotfQotCi12b2lkIF9faW5pdCBtdjc4eHgwX21wcF9jb25mKHVu c2lnbmVkIGludCAqbXBwX2xpc3QpCi17Ci0Jb3Jpb25fbXBwX2NvbmYobXBwX2xpc3QsIG12Nzh4 eDBfdmFyaWFudCgpLAotCQkgICAgICAgTVBQX01BWCwgREVWX0JVU19WSVJUX0JBU0UpOwotfQpk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5oIGIvYXJjaC9hcm0vbWFjaC1t djc4eHgwL21wcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2RiNTJmNDU1NDYu LjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvbXBwLmgKKysrIC9kZXYv bnVsbApAQCAtMSwzMzcgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seSAqLwotLyoKLSAqIGxpbnV4L2FyY2gvYXJtL21hY2gtbXY3OHh4MC9tcHAuaCAtLSBN dWx0aSBQdXJwb3NlIFBpbnMKLSAqCi0gKiBzZWJhc3RpZW4gcmVxdWllbSA8c2ViYXN0aWVuQHJl cXVpZW0uZnI+Ci0gKi8KLQotI2lmbmRlZiBfX01WNzhYMDBfTVBQX0gKLSNkZWZpbmUgX19NVjc4 WDAwX01QUF9ICi0KLSNkZWZpbmUgTVBQKF9udW0sIF9zZWwsIF9pbiwgX291dCwgXzc4MTAwX0Ew KSAoXAotICAgIC8qIE1QUCBudW1iZXIgKi8gICAgICAgICgoX251bSkgJiAweGZmKSB8IFwKLSAg ICAvKiBNUFAgc2VsZWN0IHZhbHVlICovICAgICAgICAoKChfc2VsKSAmIDB4ZikgPDwgOCkgfCBc Ci0gICAgLyogbWF5IGJlIGlucHV0IHNpZ25hbCAqLyAgICAoKCEhKF9pbikpIDw8IDEyKSB8IFwK LSAgICAvKiBtYXkgYmUgb3V0cHV0IHNpZ25hbCAqLyAgICAoKCEhKF9vdXQpKSA8PCAxMykgfCBc Ci0gICAgLyogYXZhaWxhYmxlIG9uIEEwICovICAgICgoISEoXzc4MTAwX0EwKSkgPDwgMTQpKQot Ci0gICAgICAgICAgICAgICAgLyogICBudW0gc2VsICBpICBvICA3ODEwMF9BMCAgKi8KLQotI2Rl ZmluZSBNUFBfNzgxMDBfQTBfTUFTSyAgICBNUFAoMCwgMHgwLCAwLCAwLCAxKQotCi0jZGVmaW5l IE1QUDBfR1BJTyAgICAgICAgTVBQKDAsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMF9HRTBf Q09MICAgICAgICBNUFAoMCwgMHgxLCAwLCAwLCAxKQotI2RlZmluZSBNUFAwX0dFMV9UWENMSyAg ICAgICAgTVBQKDAsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMF9VTlVTRUQgICAgICAgIE1Q UCgwLCAweDMsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQMV9HUElPICAgICAgICBNUFAoMSwgMHgw LCAxLCAxLCAxKQotI2RlZmluZSBNUFAxX0dFMF9SWEVSUiAgICAgICAgTVBQKDEsIDB4MSwgMCwg MCwgMSkKLSNkZWZpbmUgTVBQMV9HRTFfVFhDVEwgICAgICAgIE1QUCgxLCAweDIsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDFfVU5VU0VEICAgICAgICBNUFAoMSwgMHgzLCAwLCAwLCAxKQotCi0jZGVm aW5lIE1QUDJfR1BJTyAgICAgICAgTVBQKDIsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMl9H RTBfQ1JTICAgICAgICBNUFAoMiwgMHgxLCAwLCAwLCAxKQotI2RlZmluZSBNUFAyX0dFMV9SWENU TCAgICAgICAgTVBQKDIsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMl9VTlVTRUQgICAgICAg IE1QUCgyLCAweDMsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQM19HUElPICAgICAgICBNUFAoMywg MHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAzX0dFMF9UWEVSUiAgICAgICAgTVBQKDMsIDB4MSwg MCwgMCwgMSkKLSNkZWZpbmUgTVBQM19HRTFfUlhDTEsgICAgICAgIE1QUCgzLCAweDIsIDAsIDAs IDEpCi0jZGVmaW5lIE1QUDNfVU5VU0VEICAgICAgICBNUFAoMywgMHgzLCAwLCAwLCAxKQotCi0j ZGVmaW5lIE1QUDRfR1BJTyAgICAgICAgTVBQKDQsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQ NF9HRTBfVFhENCAgICAgICAgTVBQKDQsIDB4MSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNF9HRTFf VFhEMCAgICAgICAgTVBQKDQsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNF9VTlVTRUQgICAg ICAgIE1QUCg0LCAweDMsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQNV9HUElPICAgICAgICBNUFAo NSwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFA1X0dFMF9UWEQ1ICAgICAgICBNUFAoNSwgMHgx LCAwLCAwLCAxKQotI2RlZmluZSBNUFA1X0dFMV9UWEQxICAgICAgICBNUFAoNSwgMHgyLCAwLCAw LCAxKQotI2RlZmluZSBNUFA1X1VOVVNFRCAgICAgICAgTVBQKDUsIDB4MywgMCwgMCwgMSkKLQot I2RlZmluZSBNUFA2X0dQSU8gICAgICAgIE1QUCg2LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1Q UDZfR0UwX1RYRDYgICAgICAgIE1QUCg2LCAweDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDZfR0Ux X1RYRDIgICAgICAgIE1QUCg2LCAweDIsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDZfVU5VU0VEICAg ICAgICBNUFAoNiwgMHgzLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDdfR1BJTyAgICAgICAgTVBQ KDcsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQN19HRTBfVFhENyAgICAgICAgTVBQKDcsIDB4 MSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQN19HRTFfVFhEMyAgICAgICAgTVBQKDcsIDB4MiwgMCwg MCwgMSkKLSNkZWZpbmUgTVBQN19VTlVTRUQgICAgICAgIE1QUCg3LCAweDMsIDAsIDAsIDEpCi0K LSNkZWZpbmUgTVBQOF9HUElPICAgICAgICBNUFAoOCwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBN UFA4X0dFMF9SWEQ0ICAgICAgICBNUFAoOCwgMHgxLCAwLCAwLCAxKQotI2RlZmluZSBNUFA4X0dF MV9SWEQwICAgICAgICBNUFAoOCwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFA4X1VOVVNFRCAg ICAgICAgTVBQKDgsIDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFA5X0dQSU8gICAgICAgIE1Q UCg5LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDlfR0UwX1JYRDUgICAgICAgIE1QUCg5LCAw eDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDlfR0UxX1JYRDEgICAgICAgIE1QUCg5LCAweDIsIDAs IDAsIDEpCi0jZGVmaW5lIE1QUDlfVU5VU0VEICAgICAgICBNUFAoOSwgMHgzLCAwLCAwLCAxKQot Ci0jZGVmaW5lIE1QUDEwX0dQSU8gICAgICAgIE1QUCgxMCwgMHgwLCAxLCAxLCAxKQotI2RlZmlu ZSBNUFAxMF9HRTBfUlhENiAgICAgICAgTVBQKDEwLCAweDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1Q UDEwX0dFMV9SWEQyICAgICAgICBNUFAoMTAsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTBf VU5VU0VEICAgICAgICBNUFAoMTAsIDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAxMV9HUElP ICAgICAgICBNUFAoMTEsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMTFfR0UwX1JYRDcgICAg ICAgIE1QUCgxMSwgMHgxLCAwLCAwLCAxKQotI2RlZmluZSBNUFAxMV9HRTFfUlhEMyAgICAgICAg TVBQKDExLCAweDIsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDExX1VOVVNFRCAgICAgICAgTVBQKDEx LCAweDMsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQMTJfR1BJTyAgICAgICAgTVBQKDEyLCAweDAs IDEsIDEsIDEpCi0jZGVmaW5lIE1QUDEyX01fQkIgICAgICAgIE1QUCgxMiwgMHgzLCAwLCAwLCAx KQotI2RlZmluZSBNUFAxMl9VQTBfQ1RTbiAgICAgICAgTVBQKDEyLCAweDQsIDAsIDAsIDEpCi0j ZGVmaW5lIE1QUDEyX05BTkRfRkxBU0hfUkVuMCAgICBNUFAoMTIsIDB4NSwgMCwgMCwgMSkKLSNk ZWZpbmUgTVBQMTJfVERNMF9TQ1NuICAgICAgICBNUFAoMTIsIDBYNiwgMCwgMCwgMSkKLSNkZWZp bmUgTVBQMTJfVU5VU0VEICAgICAgICBNUFAoMTIsIDB4MSwgMCwgMCwgMSkKLQotI2RlZmluZSBN UFAxM19HUElPICAgICAgICBNUFAoMTMsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMTNfU1lT UlNUX09VVG4gICAgTVBQKDEzLCAweDMsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDEzX1VBMF9SVFNu ICAgICAgICBNUFAoMTMsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTNfTkFOX0ZMQVNIX1dF bjAgICAgTVBQKDEzLCAweDUsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDEzX1RETV9TQ0xLICAgICAg ICBNUFAoMTMsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTNfVU5VU0VEICAgICAgICBNUFAo MTMsIDB4MSwgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAxNF9HUElPICAgICAgICBNUFAoMTQsIDB4 MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMTRfU0FUQTFfQUNUbiAgICBNUFAoMTQsIDB4MywgMCwg MCwgMSkKLSNkZWZpbmUgTVBQMTRfVUExX0NUU24gICAgICAgIE1QUCgxNCwgMHg0LCAwLCAwLCAx KQotI2RlZmluZSBNUFAxNF9OQU5EX0ZMQVNIX1JFbjEgICAgTVBQKDE0LCAweDUsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDE0X1RETV9TTU9TSSAgICAgICAgTVBQKDE0LCAweDYsIDAsIDAsIDEpCi0j ZGVmaW5lIE1QUDE0X1VOVVNFRCAgICAgICAgTVBQKDE0LCAweDEsIDAsIDAsIDEpCi0KLSNkZWZp bmUgTVBQMTVfR1BJTyAgICAgICAgTVBQKDE1LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDE1 X1NBVEEwX0FDVG4gICAgTVBQKDE1LCAweDMsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE1X1VBMV9S VFNuICAgICAgICBNUFAoMTUsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTVfTkFORF9GTEFT SF9XRW4xICAgIE1QUCgxNSwgMHg1LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxNV9URE1fU01JU08g ICAgICAgIE1QUCgxNSwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxNV9VTlVTRUQgICAgICAg IE1QUCgxNSwgMHgxLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDE2X0dQSU8gICAgICAgIE1QUCgx NiwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAxNl9TQVRBMV9QUkVTRU5UbiAgICBNUFAoMTYs IDB4MywgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTZfVUEyX1RYRCAgICAgICAgTVBQKDE2LCAweDQs IDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE2X05BTkRfRkxBU0hfUkVuMyAgICBNUFAoMTYsIDB4NSwg MCwgMCwgMSkKLSNkZWZpbmUgTVBQMTZfVERNX0lOVG4gICAgICAgIE1QUCgxNiwgMHg2LCAwLCAw LCAxKQotI2RlZmluZSBNUFAxNl9VTlVTRUQgICAgICAgIE1QUCgxNiwgMHgxLCAwLCAwLCAxKQot Ci0KLSNkZWZpbmUgTVBQMTdfR1BJTyAgICAgICAgTVBQKDE3LCAweDAsIDEsIDEsIDEpCi0jZGVm aW5lIE1QUDE3X1NBVEEwX1BSRVNFTlRuICAgIE1QUCgxNywgMHgzLCAwLCAwLCAxKQotI2RlZmlu ZSBNUFAxN19VQTJfUlhEICAgICAgICBNUFAoMTcsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQ MTdfTkFORF9GTEFTSF9XRW4zICAgIE1QUCgxNywgMHg1LCAwLCAwLCAxKQotI2RlZmluZSBNUFAx N19URE1fUlNUbiAgICAgICAgTVBQKDE3LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE3X1VO VVNFRCAgICAgICAgTVBQKDE3LCAweDEsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFAxOF9HUElP ICAgICAgICBNUFAoMTgsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMThfVUEwX0NUU24gICAg ICAgIE1QUCgxOCwgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxOF9CT09UX0ZMQVNIX1JFbiAg ICBNUFAoMTgsIDB4NSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMThfVU5VU0VEICAgICAgICBNUFAo MTgsIDB4MSwgMCwgMCwgMSkKLQotCi0KLSNkZWZpbmUgTVBQMTlfR1BJTyAgICAgICAgTVBQKDE5 LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDE5X1VBMF9DVFNuICAgICAgICBNUFAoMTksIDB4 NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTlfQk9PVF9GTEFTSF9XRW4gICAgTVBQKDE5LCAweDUs IDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE5X1VOVVNFRCAgICAgICAgTVBQKDE5LCAweDEsIDAsIDAs IDEpCi0KLQotI2RlZmluZSBNUFAyMF9HUElPICAgICAgICBNUFAoMjAsIDB4MCwgMSwgMSwgMSkK LSNkZWZpbmUgTVBQMjBfVUExX0NUU3MgICAgICAgIE1QUCgyMCwgMHg0LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAyMF9URE1fUENMSyAgICAgICAgTVBQKDIwLCAweDYsIDAsIDAsIDApCi0jZGVmaW5l IE1QUDIwX1VOVVNFRCAgICAgICAgTVBQKDIwLCAweDEsIDAsIDAsIDEpCi0KLQotCi0jZGVmaW5l IE1QUDIxX0dQSU8gICAgICAgIE1QUCgyMSwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAyMV9V QTFfQ1RTcyAgICAgICAgTVBQKDIxLCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDIxX1RETV9G U1lOQyAgICAgICAgTVBQKDIxLCAweDYsIDAsIDAsIDApCi0jZGVmaW5lIE1QUDIxX1VOVVNFRCAg ICAgICAgTVBQKDIxLCAweDEsIDAsIDAsIDEpCi0KLQotCi0jZGVmaW5lIE1QUDIyX0dQSU8gICAg ICAgIE1QUCgyMiwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAyMl9VQTNfVERYICAgICAgICBN UFAoMjIsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjJfTkFORF9GTEFTSF9SRW4yICAgIE1Q UCgyMiwgMHg1LCAwLCAwLCAxKQotI2RlZmluZSBNUFAyMl9URE1fRFJYICAgICAgICBNUFAoMjIs IDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjJfVU5VU0VEICAgICAgICBNUFAoMjIsIDB4MSwg MCwgMCwgMSkKLQotCi0KLSNkZWZpbmUgTVBQMjNfR1BJTyAgICAgICAgTVBQKDIzLCAweDAsIDEs IDEsIDEpCi0jZGVmaW5lIE1QUDIzX1VBM19SRFggICAgICAgIE1QUCgyMywgMHg0LCAwLCAwLCAx KQotI2RlZmluZSBNUFAyM19OQU5EX0ZMQVNIX1dFbjIgICAgTVBQKDIzLCAweDUsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDIzX1RETV9EVFggICAgICAgIE1QUCgyMywgMHg2LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAyM19VTlVTRUQgICAgICAgIE1QUCgyMywgMHgxLCAwLCAwLCAxKQotCi0KLSNkZWZp bmUgTVBQMjRfR1BJTyAgICAgICAgTVBQKDI0LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDI0 X1VBMl9UWEQgICAgICAgIE1QUCgyNCwgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAyNF9URE1f SU5UbiAgICAgICAgTVBQKDI0LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI0X1VOVVNFRCAg ICAgICAgTVBQKDI0LCAweDEsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFAyNV9HUElPICAgICAg ICBNUFAoMjUsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMjVfVUEyX1JYRCAgICAgICAgTVBQ KDI1LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI1X1RETV9SU1RuICAgICAgICBNUFAoMjUs IDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjVfVU5VU0VEICAgICAgICBNUFAoMjUsIDB4MSwg MCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDI2X0dQSU8gICAgICAgIE1QUCgyNiwgMHgwLCAxLCAx LCAxKQotI2RlZmluZSBNUFAyNl9VQTJfQ1RTbiAgICAgICAgTVBQKDI2LCAweDQsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDI2X1RETV9QQ0xLICAgICAgICBNUFAoMjYsIDB4NiwgMCwgMCwgMSkKLSNk ZWZpbmUgTVBQMjZfVU5VU0VEICAgICAgICBNUFAoMjYsIDB4MSwgMCwgMCwgMSkKLQotCi0jZGVm aW5lIE1QUDI3X0dQSU8gICAgICAgIE1QUCgyNywgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAy N19VQTJfUlRTbiAgICAgICAgTVBQKDI3LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI3X1RE TV9GU1lOQyAgICAgICAgTVBQKDI3LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI3X1VOVVNF RCAgICAgICAgTVBQKDI3LCAweDEsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFAyOF9HUElPICAg ICAgICBNUFAoMjgsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMjhfVUEzX1RYRCAgICAgICAg TVBQKDI4LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI4X1RETV9EUlggICAgICAgIE1QUCgy OCwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAyOF9VTlVTRUQgICAgICAgIE1QUCgyOCwgMHgx LCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDI5X0dQSU8gICAgICAgIE1QUCgyOSwgMHgwLCAxLCAx LCAxKQotI2RlZmluZSBNUFAyOV9VQTNfUlhEICAgICAgICBNUFAoMjksIDB4NCwgMCwgMCwgMSkK LSNkZWZpbmUgTVBQMjlfU1lTUlNUX09VVG4gICAgTVBQKDI5LCAweDUsIDAsIDAsIDEpCi0jZGVm aW5lIE1QUDI5X1RETV9EVFggICAgICAgIE1QUCgyOSwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBN UFAyOV9VTlVTRUQgICAgICAgIE1QUCgyOSwgMHgxLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDMw X0dQSU8gICAgICAgIE1QUCgzMCwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAzMF9VQTNfQ1RT biAgICAgICAgTVBQKDMwLCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDMwX1VOVVNFRCAgICAg ICAgTVBQKDMwLCAweDEsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQMzFfR1BJTyAgICAgICAgTVBQ KDMxLCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDMxX1VBM19SVFNuICAgICAgICBNUFAoMzEs IDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzFfVERNMV9TQ1NuICAgICAgICBNUFAoMzEsIDB4 NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzFfVU5VU0VEICAgICAgICBNUFAoMzEsIDB4MSwgMCwg MCwgMSkKLQotCi0jZGVmaW5lIE1QUDMyX0dQSU8gICAgICAgIE1QUCgzMiwgMHgxLCAxLCAxLCAx KQotI2RlZmluZSBNUFAzMl9VQTNfVERYICAgICAgICBNUFAoMzIsIDB4NCwgMCwgMCwgMSkKLSNk ZWZpbmUgTVBQMzJfU1lTUlNUX09VVG4gICAgTVBQKDMyLCAweDUsIDAsIDAsIDEpCi0jZGVmaW5l IE1QUDMyX1RETTBfUlhRICAgICAgICBNUFAoMzIsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQ MzJfVU5VU0VEICAgICAgICBNUFAoMzIsIDB4MywgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDMz X0dQSU8gICAgICAgIE1QUCgzMywgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFAzM19VQTNfUkRY ICAgICAgICBNUFAoMzMsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzNfVERNMF9UWFEgICAg ICAgIE1QUCgzMywgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzM19VTlVTRUQgICAgICAgIE1Q UCgzMywgMHgzLCAwLCAwLCAxKQotCi0KLQotI2RlZmluZSBNUFAzNF9HUElPICAgICAgICBNUFAo MzQsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMzRfVUEyX1REWCAgICAgICAgTVBQKDM0LCAw eDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM0X1RETTFfUlhRICAgICAgICBNUFAoMzQsIDB4Niwg MCwgMCwgMSkKLSNkZWZpbmUgTVBQMzRfVU5VU0VEICAgICAgICBNUFAoMzQsIDB4MywgMCwgMCwg MSkKLQotCi0KLSNkZWZpbmUgTVBQMzVfR1BJTyAgICAgICAgTVBQKDM1LCAweDEsIDEsIDEsIDEp Ci0jZGVmaW5lIE1QUDM1X1VBMl9SRFggICAgICAgIE1QUCgzNSwgMHg0LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAzNV9URE0xX1RYUSAgICAgICAgTVBQKDM1LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5l IE1QUDM1X1VOVVNFRCAgICAgICAgTVBQKDM1LCAweDMsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQ MzZfR1BJTyAgICAgICAgTVBQKDM2LCAweDEsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDM2X1VBMF9D VFNuICAgICAgICBNUFAoMzYsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzZfVUEyX1REWCAg ICAgICAgTVBQKDM2LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM2X1RETTBfU0NTbiAgICAg ICAgTVBQKDM2LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM2X1VOVVNFRCAgICAgICAgTVBQ KDM2LCAweDMsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFAzN19HUElPICAgICAgICBNUFAoMzcs IDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMzdfVUEwX1JUU24gICAgICAgIE1QUCgzNywgMHgy LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzN19VQTJfUlhEICAgICAgICBNUFAoMzcsIDB4NCwgMCwg MCwgMSkKLSNkZWZpbmUgTVBQMzdfU1lTUlNUX09VVG4gICAgTVBQKDM3LCAweDUsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDM3X1RETV9TQ0xLICAgICAgICBNUFAoMzcsIDB4NiwgMCwgMCwgMSkKLSNk ZWZpbmUgTVBQMzdfVU5VU0VEICAgICAgICBNUFAoMzcsIDB4MywgMCwgMCwgMSkKLQotCi0KLQot I2RlZmluZSBNUFAzOF9HUElPICAgICAgICBNUFAoMzgsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUg TVBQMzhfVUExX0NUU24gICAgICAgIE1QUCgzOCwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFAz OF9VQTNfVFhEICAgICAgICBNUFAoMzgsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzhfU1lT UlNUX09VVG4gICAgTVBQKDM4LCAweDUsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM4X1RETV9TTU9T SSAgICAgICAgTVBQKDM4LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM4X1VOVVNFRCAgICAg ICAgTVBQKDM4LCAweDMsIDAsIDAsIDEpCi0KLQotCi0KLSNkZWZpbmUgTVBQMzlfR1BJTyAgICAg ICAgTVBQKDM5LCAweDEsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDM5X1VBMV9SVFNuICAgICAgICBN UFAoMzksIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzlfVUEzX1JYRCAgICAgICAgTVBQKDM5 LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM5X1NZU1JTVF9PVVRuICAgIE1QUCgzOSwgMHg1 LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzOV9URE1fU01JU08gICAgICAgIE1QUCgzOSwgMHg2LCAw LCAwLCAxKQotI2RlZmluZSBNUFAzOV9VTlVTRUQgICAgICAgIE1QUCgzOSwgMHgzLCAwLCAwLCAx KQotCi0KLQotI2RlZmluZSBNUFA0MF9HUElPICAgICAgICBNUFAoNDAsIDB4MSwgMSwgMSwgMSkK LSNkZWZpbmUgTVBQNDBfVERNX0lOVG4gICAgICAgIE1QUCg0MCwgMHg2LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFA0MF9VTlVTRUQgICAgICAgIE1QUCg0MCwgMHgwLCAwLCAwLCAxKQotCi0KLQotI2Rl ZmluZSBNUFA0MV9HUElPICAgICAgICBNUFAoNDEsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQ NDFfVERNX1JTVG4gICAgICAgIE1QUCg0MSwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFA0MV9V TlVTRUQgICAgICAgIE1QUCg0MSwgMHgwLCAwLCAwLCAxKQotCi0KLQotI2RlZmluZSBNUFA0Ml9H UElPICAgICAgICBNUFAoNDIsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQNDJfVERNX1BDTEsg ICAgICAgIE1QUCg0MiwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFA0Ml9VTlVTRUQgICAgICAg IE1QUCg0MiwgMHgwLCAwLCAwLCAxKQotCi0KLQotI2RlZmluZSBNUFA0M19HUElPICAgICAgICBN UFAoNDMsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQNDNfVERNX0ZTWU5DICAgICAgICBNUFAo NDMsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNDNfVU5VU0VEICAgICAgICBNUFAoNDMsIDB4 MCwgMCwgMCwgMSkKLQotCi0KLSNkZWZpbmUgTVBQNDRfR1BJTyAgICAgICAgTVBQKDQ0LCAweDEs IDEsIDEsIDEpCi0jZGVmaW5lIE1QUDQ0X1RETV9EUlggICAgICAgIE1QUCg0NCwgMHg2LCAwLCAw LCAxKQotI2RlZmluZSBNUFA0NF9VTlVTRUQgICAgICAgIE1QUCg0NCwgMHgwLCAwLCAwLCAxKQot Ci0KLQotI2RlZmluZSBNUFA0NV9HUElPICAgICAgICBNUFAoNDUsIDB4MSwgMSwgMSwgMSkKLSNk ZWZpbmUgTVBQNDVfU0FUQTBfQUNUbiAgICBNUFAoNDUsIDB4MywgMCwgMCwgMSkKLSNkZWZpbmUg TVBQNDVfVERNX0RSWCAgICAgICAgTVBQKDQ1LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDQ1 X1VOVVNFRCAgICAgICAgTVBQKDQ1LCAweDAsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFA0Nl9H UElPICAgICAgICBNUFAoNDYsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQNDZfVERNX1NDU24g ICAgICAgIE1QUCg0NiwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFA0Nl9VTlVTRUQgICAgICAg IE1QUCg0NiwgMHgwLCAwLCAwLCAxKQotCi0KLSNkZWZpbmUgTVBQNDdfR1BJTyAgICAgICAgTVBQ KDQ3LCAweDEsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDQ3X1VOVVNFRCAgICAgICAgTVBQKDQ3LCAw eDAsIDAsIDAsIDEpCi0KLQotCi0jZGVmaW5lIE1QUDQ4X0dQSU8gICAgICAgIE1QUCg0OCwgMHgx LCAxLCAxLCAxKQotI2RlZmluZSBNUFA0OF9TQVRBMV9BQ1RuICAgIE1QUCg0OCwgMHgzLCAwLCAw LCAxKQotI2RlZmluZSBNUFA0OF9VTlVTRUQgICAgICAgIE1QUCg0OCwgMHgyLCAwLCAwLCAxKQot Ci0KLQotI2RlZmluZSBNUFA0OV9HUElPICAgICAgICBNUFAoNDksIDB4MSwgMSwgMSwgMSkKLSNk ZWZpbmUgTVBQNDlfU0FUQTBfQUNUbiAgICBNUFAoNDksIDB4MywgMCwgMCwgMSkKLSNkZWZpbmUg TVBQNDlfTV9CQiAgICAgICAgTVBQKDQ5LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDQ5X1VO VVNFRCAgICAgICAgTVBQKDQ5LCAweDIsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFBfTUFYICAg ICAgICAgICAgNDkKLQotdm9pZCBtdjc4eHgwX21wcF9jb25mKHVuc2lnbmVkIGludCAqbXBwX2xp c3QpOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9tdjc4eHgw LmggYi9hcmNoL2FybS9tYWNoLW12Nzh4eDAvbXY3OHh4MC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA4OGVmYjFlNDQxNDIuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNo LW12Nzh4eDAvbXY3OHh4MC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qCi0gKiBHZW5lcmljIGRl ZmluaXRpb25zIGZvciBNYXJ2ZWxsIE1WNzh4eDAgU29DIGZsYXZvcnM6Ci0gKiAgTVY3ODF4MCBh bmQgTVY3ODJ4MC4KLSAqLwotCi0jaWZuZGVmIF9fQVNNX0FSQ0hfTVY3OFhYMF9ICi0jZGVmaW5l IF9fQVNNX0FSQ0hfTVY3OFhYMF9ICi0KLSNpbmNsdWRlICJpcnFzLmgiCi0KLS8qCi0gKiBNYXJ2 ZWxsIE1WNzh4eDAgYWRkcmVzcyBtYXBzLgotICoKLSAqIHBoeXMKLSAqIGMwMDAwMDAwCVBDSWUg TWVtb3J5IHNwYWNlCi0gKiBmMDgwMDAwMAlQQ0llICMwIEkvTyBzcGFjZQotICogZjA5MDAwMDAJ UENJZSAjMSBJL08gc3BhY2UKLSAqIGYwYTAwMDAwCVBDSWUgIzIgSS9PIHNwYWNlCi0gKiBmMGIw MDAwMAlQQ0llICMzIEkvTyBzcGFjZQotICogZjBjMDAwMDAJUENJZSAjNCBJL08gc3BhY2UKLSAq IGYwZDAwMDAwCVBDSWUgIzUgSS9PIHNwYWNlCi0gKiBmMGUwMDAwMAlQQ0llICM2IEkvTyBzcGFj ZQotICogZjBmMDAwMDAJUENJZSAjNyBJL08gc3BhY2UKLSAqIGYxMDAwMDAwCW9uLWNoaXAgcGVy aXBoZXJhbCByZWdpc3RlcnMKLSAqCi0gKiB2aXJ0CQlwaHlzCQlzaXplCi0gKiBmZTQwMDAwMAlm MTAyeDAwMAkxNksJY29yZS1zcGVjaWZpYyBwZXJpcGhlcmFsIHJlZ2lzdGVycwotICogZmVlMDAw MDAJZjA4MDAwMDAJNjRLCVBDSWUgIzAgSS9PIHNwYWNlCi0gKiBmZWUxMDAwMAlmMDkwMDAwMAk2 NEsJUENJZSAjMSBJL08gc3BhY2UKLSAqIGZlZTIwMDAwCWYwYTAwMDAwCTY0SwlQQ0llICMyIEkv TyBzcGFjZQotICogZmVlMzAwMDAJZjBiMDAwMDAJNjRLCVBDSWUgIzMgSS9PIHNwYWNlCi0gKiBm ZWU0MDAwMAlmMGMwMDAwMAk2NEsJUENJZSAjNCBJL08gc3BhY2UKLSAqIGZlZTUwMDAwCWYwZDAw MDAwCTY0SwlQQ0llICM1IEkvTyBzcGFjZQotICogZmVlNjAwMDAJZjBlMDAwMDAJNjRLCVBDSWUg IzYgSS9PIHNwYWNlCi0gKiBmZWU3MDAwMAlmMGYwMDAwMAk2NEsJUENJZSAjNyBJL08gc3BhY2UK LSAqIGZlYzAwMDAwCWYxMDAwMDAwCTFNCW9uLWNoaXAgcGVyaXBoZXJhbCByZWdpc3RlcnMKLSAq LwotI2RlZmluZSBNVjc4WFgwX0NPUkUwX1JFR1NfUEhZU19CQVNFCTB4ZjEwMjAwMDAKLSNkZWZp bmUgTVY3OFhYMF9DT1JFMV9SRUdTX1BIWVNfQkFTRQkweGYxMDI0MDAwCi0jZGVmaW5lIE1WNzhY WDBfQ09SRV9SRUdTX1ZJUlRfQkFTRQlJT01FTSgweGZlNDAwMDAwKQotI2RlZmluZSBNVjc4WFgw X0NPUkVfUkVHU19QSFlTX0JBU0UJMHhmZTQwMDAwMAotI2RlZmluZSBNVjc4WFgwX0NPUkVfUkVH U19TSVpFCQlTWl8xNksKLQotI2RlZmluZSBNVjc4WFgwX1BDSUVfSU9fUEhZU19CQVNFKGkpCSgw eGYwODAwMDAwICsgKChpKSA8PCAyMCkpCi0jZGVmaW5lIE1WNzhYWDBfUENJRV9JT19TSVpFCQlT Wl8xTQotCi0jZGVmaW5lIE1WNzhYWDBfUkVHU19QSFlTX0JBU0UJCTB4ZjEwMDAwMDAKLSNkZWZp bmUgTVY3OFhYMF9SRUdTX1ZJUlRfQkFTRQkJSU9NRU0oMHhmZWMwMDAwMCkKLSNkZWZpbmUgTVY3 OFhYMF9SRUdTX1NJWkUJCVNaXzFNCi0KLSNkZWZpbmUgTVY3OFhYMF9TUkFNX1BIWVNfQkFTRSAg ICAgICAgICAoMHhmMjIwMDAwMCkKLSNkZWZpbmUgTVY3OFhYMF9TUkFNX1NJWkUgICAgICAgICAg ICAgICBTWl84SwotCi0jZGVmaW5lIE1WNzhYWDBfUENJRV9NRU1fUEhZU19CQVNFCTB4YzAwMDAw MDAKLSNkZWZpbmUgTVY3OFhYMF9QQ0lFX01FTV9TSVpFCQkweDMwMDAwMDAwCi0KLSNkZWZpbmUg TVY3OFhYMF9NQlVTX1NSQU1fVEFSR0VUICAgICAgIDB4MDkKLSNkZWZpbmUgTVY3OFhYMF9NQlVT X1NSQU1fQVRUUiAgICAgICAgIDB4MDAKLQotLyoKLSAqIENvcmUtc3BlY2lmaWMgcGVyaXBoZXJh bCByZWdpc3RlcnMuCi0gKi8KLSNkZWZpbmUgQlJJREdFX1ZJUlRfQkFTRQkoTVY3OFhYMF9DT1JF X1JFR1NfVklSVF9CQVNFKQotI2RlZmluZSBCUklER0VfUEhZU19CQVNFCShNVjc4WFgwX0NPUkVf UkVHU19QSFlTX0JBU0UpCi0jZGVmaW5lICBCUklER0VfV0lOU19DUFUwX0JBU0UgIChNVjc4WFgw X0NPUkUwX1JFR1NfUEhZU19CQVNFKQotI2RlZmluZSAgQlJJREdFX1dJTlNfQ1BVMV9CQVNFICAo TVY3OFhYMF9DT1JFMV9SRUdTX1BIWVNfQkFTRSkKLSNkZWZpbmUgIEJSSURHRV9XSU5TX1NaICAg ICAgICAgKDB4QTAwMCkKLQotLyoKLSAqIFJlZ2lzdGVyIE1hcAotICovCi0jZGVmaW5lIEREUl9W SVJUX0JBU0UJCShNVjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHgwMDAwMCkKLSNkZWZpbmUgRERS X1BIWVNfQkFTRSAgICAgICAgICAgKE1WNzhYWDBfUkVHU19QSFlTX0JBU0UgKyAweDAwMDAwKQot I2RlZmluZSAgRERSX1dJTkRPV19DUFUwX0JBU0UJKEREUl9QSFlTX0JBU0UgKyAweDE1MDApCi0j ZGVmaW5lICBERFJfV0lORE9XX0NQVTFfQkFTRQkoRERSX1BIWVNfQkFTRSArIDB4MTU3MCkKLSNk ZWZpbmUgIEREUl9XSU5ET1dfQ1BVX1NaICAgICAgKDB4MjApCi0KLSNkZWZpbmUgREVWX0JVU19Q SFlTX0JBU0UJKE1WNzhYWDBfUkVHU19QSFlTX0JBU0UgKyAweDEwMDAwKQotI2RlZmluZSBERVZf QlVTX1ZJUlRfQkFTRQkoTVY3OFhYMF9SRUdTX1ZJUlRfQkFTRSArIDB4MTAwMDApCi0jZGVmaW5l ICBTQU1QTEVfQVRfUkVTRVRfTE9XCShERVZfQlVTX1ZJUlRfQkFTRSArIDB4MDAzMCkKLSNkZWZp bmUgIFNBTVBMRV9BVF9SRVNFVF9ISUdICShERVZfQlVTX1ZJUlRfQkFTRSArIDB4MDAzNCkKLSNk ZWZpbmUgIEdQSU9fVklSVF9CQVNFCQkoREVWX0JVU19WSVJUX0JBU0UgKyAweDAxMDApCi0jZGVm aW5lICBJMkNfMF9QSFlTX0JBU0UJKERFVl9CVVNfUEhZU19CQVNFICsgMHgxMDAwKQotI2RlZmlu ZSAgSTJDXzFfUEhZU19CQVNFCShERVZfQlVTX1BIWVNfQkFTRSArIDB4MTEwMCkKLSNkZWZpbmUg IFVBUlQwX1BIWVNfQkFTRQkoREVWX0JVU19QSFlTX0JBU0UgKyAweDIwMDApCi0jZGVmaW5lICBV QVJUMF9WSVJUX0JBU0UJKERFVl9CVVNfVklSVF9CQVNFICsgMHgyMDAwKQotI2RlZmluZSAgVUFS VDFfUEhZU19CQVNFCShERVZfQlVTX1BIWVNfQkFTRSArIDB4MjEwMCkKLSNkZWZpbmUgIFVBUlQx X1ZJUlRfQkFTRQkoREVWX0JVU19WSVJUX0JBU0UgKyAweDIxMDApCi0jZGVmaW5lICBVQVJUMl9Q SFlTX0JBU0UJKERFVl9CVVNfUEhZU19CQVNFICsgMHgyMjAwKQotI2RlZmluZSAgVUFSVDJfVklS VF9CQVNFCShERVZfQlVTX1ZJUlRfQkFTRSArIDB4MjIwMCkKLSNkZWZpbmUgIFVBUlQzX1BIWVNf QkFTRQkoREVWX0JVU19QSFlTX0JBU0UgKyAweDIzMDApCi0jZGVmaW5lICBVQVJUM19WSVJUX0JB U0UJKERFVl9CVVNfVklSVF9CQVNFICsgMHgyMzAwKQotCi0jZGVmaW5lIEdFMTBfUEhZU19CQVNF CQkoTVY3OFhYMF9SRUdTX1BIWVNfQkFTRSArIDB4MzAwMDApCi0jZGVmaW5lIEdFMTFfUEhZU19C QVNFCQkoTVY3OFhYMF9SRUdTX1BIWVNfQkFTRSArIDB4MzQwMDApCi0KLSNkZWZpbmUgUENJRTAw X1ZJUlRfQkFTRQkoTVY3OFhYMF9SRUdTX1ZJUlRfQkFTRSArIDB4NDAwMDApCi0jZGVmaW5lIFBD SUUwMV9WSVJUX0JBU0UJKE1WNzhYWDBfUkVHU19WSVJUX0JBU0UgKyAweDQ0MDAwKQotI2RlZmlu ZSBQQ0lFMDJfVklSVF9CQVNFCShNVjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHg0ODAwMCkKLSNk ZWZpbmUgUENJRTAzX1ZJUlRfQkFTRQkoTVY3OFhYMF9SRUdTX1ZJUlRfQkFTRSArIDB4NGMwMDAp Ci0KLSNkZWZpbmUgVVNCMF9QSFlTX0JBU0UJCShNVjc4WFgwX1JFR1NfUEhZU19CQVNFICsgMHg1 MDAwMCkKLSNkZWZpbmUgVVNCMV9QSFlTX0JBU0UJCShNVjc4WFgwX1JFR1NfUEhZU19CQVNFICsg MHg1MTAwMCkKLSNkZWZpbmUgVVNCMl9QSFlTX0JBU0UJCShNVjc4WFgwX1JFR1NfUEhZU19CQVNF ICsgMHg1MjAwMCkKLQotI2RlZmluZSBYT1JfUEhZU19CQVNFCQkoTVY3OFhYMF9SRUdTX1BIWVNf QkFTRSArIDB4NjA5MDApCi0KLSNkZWZpbmUgR0UwMF9QSFlTX0JBU0UJCShNVjc4WFgwX1JFR1Nf UEhZU19CQVNFICsgMHg3MDAwMCkKLSNkZWZpbmUgR0UwMV9QSFlTX0JBU0UJCShNVjc4WFgwX1JF R1NfUEhZU19CQVNFICsgMHg3NDAwMCkKLQotI2RlZmluZSBQQ0lFMTBfVklSVF9CQVNFCShNVjc4 WFgwX1JFR1NfVklSVF9CQVNFICsgMHg4MDAwMCkKLSNkZWZpbmUgUENJRTExX1ZJUlRfQkFTRQko TVY3OFhYMF9SRUdTX1ZJUlRfQkFTRSArIDB4ODQwMDApCi0jZGVmaW5lIFBDSUUxMl9WSVJUX0JB U0UJKE1WNzhYWDBfUkVHU19WSVJUX0JBU0UgKyAweDg4MDAwKQotI2RlZmluZSBQQ0lFMTNfVklS VF9CQVNFCShNVjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHg4YzAwMCkKLQotI2RlZmluZSBDUllQ VE9fUEhZU19CQVNFCShNVjc4WFgwX1JFR1NfUEhZU19CQVNFICsgMHg5MDAwMCkKLQotI2RlZmlu ZSBTQVRBX1BIWVNfQkFTRQkJKE1WNzhYWDBfUkVHU19QSFlTX0JBU0UgKyAweGEwMDAwKQotCi0v KgotICogU3VwcG9ydGVkIGRldmljZXMgYW5kIHJldmlzaW9ucy4KLSAqLwotI2RlZmluZSBNVjc4 WDAwX1owX0RFVl9JRAkweDYzODEKLSNkZWZpbmUgTVY3OFgwMF9SRVZfWjAJCTEKLQotI2RlZmlu ZSBNVjc4MTAwX0RFVl9JRAkJMHg3ODEwCi0jZGVmaW5lIE1WNzgxMDBfUkVWX0EwCQkxCi0jZGVm aW5lIE1WNzgxMDBfUkVWX0ExCQkyCi0KLSNkZWZpbmUgTVY3ODIwMF9ERVZfSUQJCTB4NzgyMAot I2RlZmluZSBNVjc4MjAwX1JFVl9BMAkJMQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L21hY2gtbXY3OHh4MC9wY2llLmMgYi9hcmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzNjYjc4NTY5NDMuLjAwMDAwMDAwMDAwMAotLS0g YS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjgwICsw LDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBh cmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jCi0gKgotICogUENJZSBmdW5jdGlvbnMgZm9yIE1h cnZlbGwgTVY3OHh4MCBTb0NzCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2lu Y2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L21idXMuaD4KLSNpbmNsdWRlIDx2 aWRlby92Z2EuaD4KLSNpbmNsdWRlIDxhc20vaXJxLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvcGNp Lmg+Ci0jaW5jbHVkZSA8cGxhdC9wY2llLmg+Ci0jaW5jbHVkZSAibXY3OHh4MC5oIgotI2luY2x1 ZGUgImNvbW1vbi5oIgotCi0jZGVmaW5lIE1WNzhYWDBfTUJVU19QQ0lFX01FTV9UQVJHRVQocG9y dCwgbGFuZSkgKChwb3J0KSA/IDggOiA0KQotI2RlZmluZSBNVjc4WFgwX01CVVNfUENJRV9NRU1f QVRUUihwb3J0LCBsYW5lKSAgICgweGY4ICYgfigweDEwIDw8IChsYW5lKSkpCi0jZGVmaW5lIE1W NzhYWDBfTUJVU19QQ0lFX0lPX1RBUkdFVChwb3J0LCBsYW5lKSAgKChwb3J0KSA/IDggOiA0KQot I2RlZmluZSBNVjc4WFgwX01CVVNfUENJRV9JT19BVFRSKHBvcnQsIGxhbmUpICAgICgweGYwICYg figweDEwIDw8IChsYW5lKSkpCi0KLXN0cnVjdCBwY2llX3BvcnQgewotCXU4CQkJbWFqOwotCXU4 CQkJbWluOwotCXU4CQkJcm9vdF9idXNfbnI7Ci0Jdm9pZCBfX2lvbWVtCQkqYmFzZTsKLQlzcGlu bG9ja190CQljb25mX2xvY2s7Ci0JY2hhcgkJCW1lbV9zcGFjZV9uYW1lWzIwXTsKLQlzdHJ1Y3Qg cmVzb3VyY2UJCXJlczsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpZV9wb3J0IHBjaWVfcG9ydFs4 XTsKLXN0YXRpYyBpbnQgbnVtX3BjaWVfcG9ydHM7Ci1zdGF0aWMgc3RydWN0IHJlc291cmNlIHBj aWVfaW9fc3BhY2U7Ci0KLXZvaWQgX19pbml0IG12Nzh4eDBfcGNpZV9pZCh1MzIgKmRldiwgdTMy ICpyZXYpCi17Ci0JKmRldiA9IG9yaW9uX3BjaWVfZGV2X2lkKFBDSUUwMF9WSVJUX0JBU0UpOwot CSpyZXYgPSBvcmlvbl9wY2llX3JldihQQ0lFMDBfVklSVF9CQVNFKTsKLX0KLQotdTMyIHBjaWVf cG9ydF9zaXplWzhdID0gewotCTAsCi0JMHgyMDAwMDAwMCwKLQkweDEwMDAwMDAwLAotCTB4MTAw MDAwMDAsCi0JMHgwODAwMDAwMCwKLQkweDA4MDAwMDAwLAotCTB4MDgwMDAwMDAsCi0JMHgwNDAw MDAwMCwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBtdjc4eHgwX3BjaWVfcHJlaW5pdCh2b2lk KQotewotCWludCBpOwotCXUzMiBzaXplX2VhY2g7Ci0JdTMyIHN0YXJ0OwotCi0JcGNpZV9pb19z cGFjZS5uYW1lID0gIlBDSWUgSS9PIFNwYWNlIjsKLQlwY2llX2lvX3NwYWNlLnN0YXJ0ID0gTVY3 OFhYMF9QQ0lFX0lPX1BIWVNfQkFTRSgwKTsKLQlwY2llX2lvX3NwYWNlLmVuZCA9Ci0JCU1WNzhY WDBfUENJRV9JT19QSFlTX0JBU0UoMCkgKyBNVjc4WFgwX1BDSUVfSU9fU0laRSAqIDggLSAxOwot CXBjaWVfaW9fc3BhY2UuZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsKLQlpZiAocmVxdWVzdF9yZXNv dXJjZSgmaW9tZW1fcmVzb3VyY2UsICZwY2llX2lvX3NwYWNlKSkKLQkJcGFuaWMoImNhbid0IGFs bG9jYXRlIFBDSWUgSS9PIHNwYWNlIik7Ci0KLQlpZiAobnVtX3BjaWVfcG9ydHMgPiA3KQotCQlw YW5pYygiaW52YWxpZCBudW1iZXIgb2YgUENJZSBwb3J0cyIpOwotCi0Jc2l6ZV9lYWNoID0gcGNp ZV9wb3J0X3NpemVbbnVtX3BjaWVfcG9ydHNdOwotCi0Jc3RhcnQgPSBNVjc4WFgwX1BDSUVfTUVN X1BIWVNfQkFTRTsKLQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BjaWVfcG9ydHM7IGkrKykgewotCQlz dHJ1Y3QgcGNpZV9wb3J0ICpwcCA9IHBjaWVfcG9ydCArIGk7Ci0KLQkJc25wcmludGYocHAtPm1l bV9zcGFjZV9uYW1lLCBzaXplb2YocHAtPm1lbV9zcGFjZV9uYW1lKSwKLQkJCSJQQ0llICVkLiVk IE1FTSIsIHBwLT5tYWosIHBwLT5taW4pOwotCQlwcC0+bWVtX3NwYWNlX25hbWVbc2l6ZW9mKHBw LT5tZW1fc3BhY2VfbmFtZSkgLSAxXSA9IDA7Ci0JCXBwLT5yZXMubmFtZSA9IHBwLT5tZW1fc3Bh Y2VfbmFtZTsKLQkJcHAtPnJlcy5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwotCQlwcC0+cmVzLnN0 YXJ0ID0gc3RhcnQ7Ci0JCXBwLT5yZXMuZW5kID0gc3RhcnQgKyBzaXplX2VhY2ggLSAxOwotCQlz dGFydCArPSBzaXplX2VhY2g7Ci0KLQkJaWYgKHJlcXVlc3RfcmVzb3VyY2UoJmlvbWVtX3Jlc291 cmNlLCAmcHAtPnJlcykpCi0JCQlwYW5pYygiY2FuJ3QgYWxsb2NhdGUgUENJZSBNRU0gc3ViLXNw YWNlIik7Ci0KLQkJbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKE1WNzhYWDBfTUJVU19QQ0lF X01FTV9UQVJHRVQocHAtPm1haiwgcHAtPm1pbiksCi0JCQkJCSAgICBNVjc4WFgwX01CVVNfUENJ RV9NRU1fQVRUUihwcC0+bWFqLCBwcC0+bWluKSwKLQkJCQkJICAgIHBwLT5yZXMuc3RhcnQsIHJl c291cmNlX3NpemUoJnBwLT5yZXMpKTsKLQkJbXZlYnVfbWJ1c19hZGRfd2luZG93X3JlbWFwX2J5 X2lkKE1WNzhYWDBfTUJVU19QQ0lFX0lPX1RBUkdFVChwcC0+bWFqLCBwcC0+bWluKSwKLQkJCQkJ CSAgTVY3OFhYMF9NQlVTX1BDSUVfSU9fQVRUUihwcC0+bWFqLCBwcC0+bWluKSwKLQkJCQkJCSAg aSAqIFNaXzY0SywgU1pfNjRLLCAwKTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQgX19pbml0IG12Nzh4 eDBfcGNpZV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cykKLXsKLQlzdHJ1 Y3QgcGNpZV9wb3J0ICpwcDsKLQlzdHJ1Y3QgcmVzb3VyY2UgcmVhbGlvOwotCi0JaWYgKG5yID49 IG51bV9wY2llX3BvcnRzKQotCQlyZXR1cm4gMDsKLQotCXBwID0gJnBjaWVfcG9ydFtucl07Ci0J c3lzLT5wcml2YXRlX2RhdGEgPSBwcDsKLQlwcC0+cm9vdF9idXNfbnIgPSBzeXMtPmJ1c25yOwot Ci0JLyoKLQkgKiBHZW5lcmljIFBDSWUgdW5pdCBzZXR1cC4KLQkgKi8KLQlvcmlvbl9wY2llX3Nl dF9sb2NhbF9idXNfbnIocHAtPmJhc2UsIHN5cy0+YnVzbnIpOwotCW9yaW9uX3BjaWVfc2V0dXAo cHAtPmJhc2UpOwotCi0JcmVhbGlvLnN0YXJ0ID0gbnIgKiBTWl82NEs7Ci0JcmVhbGlvLmVuZCA9 IHJlYWxpby5zdGFydCArIFNaXzY0SyAtIDE7Ci0JcGNpX3JlbWFwX2lvc3BhY2UoJnJlYWxpbywg TVY3OFhYMF9QQ0lFX0lPX1BIWVNfQkFTRShucikpOwotCi0JcGNpX2FkZF9yZXNvdXJjZV9vZmZz ZXQoJnN5cy0+cmVzb3VyY2VzLCAmcHAtPnJlcywgc3lzLT5tZW1fb2Zmc2V0KTsKLQotCXJldHVy biAxOwotfQotCi1zdGF0aWMgaW50IHBjaWVfdmFsaWRfY29uZmlnKHN0cnVjdCBwY2llX3BvcnQg KnBwLCBpbnQgYnVzLCBpbnQgZGV2KQotewotCS8qCi0JICogRG9uJ3QgZ28gb3V0IHdoZW4gdHJ5 aW5nIHRvIGFjY2VzcyBub25leGlzdGluZyBkZXZpY2VzCi0JICogb24gdGhlIGxvY2FsIGJ1cy4K LQkgKi8KLQlpZiAoYnVzID09IHBwLT5yb290X2J1c19uciAmJiBkZXYgPiAxKQotCQlyZXR1cm4g MDsKLQotCXJldHVybiAxOwotfQotCi1zdGF0aWMgaW50IHBjaWVfcmRfY29uZihzdHJ1Y3QgcGNp X2J1cyAqYnVzLCB1MzIgZGV2Zm4sIGludCB3aGVyZSwKLQkJCWludCBzaXplLCB1MzIgKnZhbCkK LXsKLQlzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMgPSBidXMtPnN5c2RhdGE7Ci0Jc3RydWN0IHBj aWVfcG9ydCAqcHAgPSBzeXMtPnByaXZhdGVfZGF0YTsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwot CWludCByZXQ7Ci0KLQlpZiAocGNpZV92YWxpZF9jb25maWcocHAsIGJ1cy0+bnVtYmVyLCBQQ0lf U0xPVChkZXZmbikpID09IDApIHsKLQkJKnZhbCA9IDB4ZmZmZmZmZmY7Ci0JCXJldHVybiBQQ0lC SU9TX0RFVklDRV9OT1RfRk9VTkQ7Ci0JfQotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnBwLT5jb25m X2xvY2ssIGZsYWdzKTsKLQlyZXQgPSBvcmlvbl9wY2llX3JkX2NvbmYocHAtPmJhc2UsIGJ1cywg ZGV2Zm4sIHdoZXJlLCBzaXplLCB2YWwpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBwLT5j b25mX2xvY2ssIGZsYWdzKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgcGNpZV93 cl9jb25mKHN0cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKLQkJCWludCB3aGVyZSwgaW50 IHNpemUsIHUzMiB2YWwpCi17Ci0Jc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzID0gYnVzLT5zeXNk YXRhOwotCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gc3lzLT5wcml2YXRlX2RhdGE7Ci0JdW5zaWdu ZWQgbG9uZyBmbGFnczsKLQlpbnQgcmV0OwotCi0JaWYgKHBjaWVfdmFsaWRfY29uZmlnKHBwLCBi dXMtPm51bWJlciwgUENJX1NMT1QoZGV2Zm4pKSA9PSAwKQotCQlyZXR1cm4gUENJQklPU19ERVZJ Q0VfTk9UX0ZPVU5EOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnBwLT5jb25mX2xvY2ssIGZsYWdz KTsKLQlyZXQgPSBvcmlvbl9wY2llX3dyX2NvbmYocHAtPmJhc2UsIGJ1cywgZGV2Zm4sIHdoZXJl LCBzaXplLCB2YWwpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBwLT5jb25mX2xvY2ssIGZs YWdzKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpX29wcyBwY2llX29w cyA9IHsKLQkucmVhZCA9IHBjaWVfcmRfY29uZiwKLQkud3JpdGUgPSBwY2llX3dyX2NvbmYsCi19 OwotCi0vKgotICogVGhlIHJvb3QgY29tcGxleCBoYXMgYSBoYXJkd2lyZWQgY2xhc3Mgb2YgUENJ X0NMQVNTX01FTU9SWV9PVEhFUiwgd2hlbiBpdAotICogaXMgb3BlcmF0aW5nIGFzIGEgcm9vdCBj b21wbGV4IHRoaXMgbmVlZHMgdG8gYmUgc3dpdGNoZWQgdG8KLSAqIFBDSV9DTEFTU19CUklER0Vf SE9TVCBvciBMaW51eCB3aWxsIGVycmFudGx5IHRyeSB0byBwcm9jZXNzIHRoZSBCQVIncyBvbgot ICogdGhlIGRldmljZS4gRGVjb2Rpbmcgc2V0dXAgaXMgaGFuZGxlZCBieSB0aGUgb3Jpb24gY29k ZS4KLSAqLwotc3RhdGljIHZvaWQgcmNfcGNpX2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCi17 Ci0JaWYgKGRldi0+YnVzLT5wYXJlbnQgPT0gTlVMTCAmJiBkZXYtPmRldmZuID09IDApIHsKLQkJ c3RydWN0IHJlc291cmNlICpyOwotCi0JCWRldi0+Y2xhc3MgJj0gMHhmZjsKLQkJZGV2LT5jbGFz cyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsKLQkJcGNpX2Rldl9mb3JfZWFjaF9yZXNv dXJjZShkZXYsIHIpIHsKLQkJCXItPnN0YXJ0ID0gMDsKLQkJCXItPmVuZCAgID0gMDsKLQkJCXIt PmZsYWdzID0gMDsKLQkJfQotCX0KLX0KLURFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVO RE9SX0lEX01BUlZFTEwsIFBDSV9BTllfSUQsIHJjX3BjaV9maXh1cCk7Ci0KLXN0YXRpYyBpbnQg X19pbml0IG12Nzh4eDBfcGNpZV9zY2FuX2J1cyhpbnQgbnIsIHN0cnVjdCBwY2lfaG9zdF9icmlk Z2UgKmJyaWRnZSkKLXsKLQlzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMgPSBwY2lfaG9zdF9icmlk Z2VfcHJpdihicmlkZ2UpOwotCi0JaWYgKG5yID49IG51bV9wY2llX3BvcnRzKSB7Ci0JCUJVRygp OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlsaXN0X3NwbGljZV9pbml0KCZzeXMtPnJlc291 cmNlcywgJmJyaWRnZS0+d2luZG93cyk7Ci0JYnJpZGdlLT5kZXYucGFyZW50ID0gTlVMTDsKLQli cmlkZ2UtPnN5c2RhdGEgPSBzeXM7Ci0JYnJpZGdlLT5idXNuciA9IHN5cy0+YnVzbnI7Ci0JYnJp ZGdlLT5vcHMgPSAmcGNpZV9vcHM7Ci0KLQlyZXR1cm4gcGNpX3NjYW5fcm9vdF9idXNfYnJpZGdl KGJyaWRnZSk7Ci19Ci0KLXN0YXRpYyBpbnQgX19pbml0IG12Nzh4eDBfcGNpZV9tYXBfaXJxKGNv bnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsCi0JdTggcGluKQotewotCXN0cnVjdCBw Y2lfc3lzX2RhdGEgKnN5cyA9IGRldi0+YnVzLT5zeXNkYXRhOwotCXN0cnVjdCBwY2llX3BvcnQg KnBwID0gc3lzLT5wcml2YXRlX2RhdGE7Ci0KLQlyZXR1cm4gSVJRX01WNzhYWDBfUENJRV8wMCAr IChwcC0+bWFqIDw8IDIpICsgcHAtPm1pbjsKLX0KLQotc3RhdGljIHN0cnVjdCBod19wY2kgbXY3 OHh4MF9wY2kgX19pbml0ZGF0YSA9IHsKLQkubnJfY29udHJvbGxlcnMJPSA4LAotCS5wcmVpbml0 CT0gbXY3OHh4MF9wY2llX3ByZWluaXQsCi0JLnNldHVwCQk9IG12Nzh4eDBfcGNpZV9zZXR1cCwK LQkuc2NhbgkJPSBtdjc4eHgwX3BjaWVfc2Nhbl9idXMsCi0JLm1hcF9pcnEJPSBtdjc4eHgwX3Bj aWVfbWFwX2lycSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBhZGRfcGNpZV9wb3J0KGludCBt YWosIGludCBtaW4sIHZvaWQgX19pb21lbSAqYmFzZSkKLXsKLQlwcmludGsoS0VSTl9JTkZPICJN Vjc4eHgwIFBDSWUgcG9ydCAlZC4lZDogIiwgbWFqLCBtaW4pOwotCi0JaWYgKG9yaW9uX3BjaWVf bGlua191cChiYXNlKSkgewotCQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2llX3BvcnRbbnVt X3BjaWVfcG9ydHMrK107Ci0KLQkJcHJpbnRrKCJsaW5rIHVwXG4iKTsKLQotCQlwcC0+bWFqID0g bWFqOwotCQlwcC0+bWluID0gbWluOwotCQlwcC0+cm9vdF9idXNfbnIgPSAtMTsKLQkJcHAtPmJh c2UgPSBiYXNlOwotCQlzcGluX2xvY2tfaW5pdCgmcHAtPmNvbmZfbG9jayk7Ci0JCW1lbXNldCgm cHAtPnJlcywgMCwgc2l6ZW9mKHBwLT5yZXMpKTsKLQl9IGVsc2UgewotCQlwcmludGsoImxpbmsg ZG93biwgaWdub3JpbmdcbiIpOwotCX0KLX0KLQotdm9pZCBfX2luaXQgbXY3OHh4MF9wY2llX2lu aXQoaW50IGluaXRfcG9ydDAsIGludCBpbml0X3BvcnQxKQotewotCXZnYV9iYXNlID0gTVY3OFhY MF9QQ0lFX01FTV9QSFlTX0JBU0U7Ci0KLQlpZiAoaW5pdF9wb3J0MCkgewotCQlhZGRfcGNpZV9w b3J0KDAsIDAsIFBDSUUwMF9WSVJUX0JBU0UpOwotCQlpZiAoIW9yaW9uX3BjaWVfeDRfbW9kZShQ Q0lFMDBfVklSVF9CQVNFKSkgewotCQkJYWRkX3BjaWVfcG9ydCgwLCAxLCBQQ0lFMDFfVklSVF9C QVNFKTsKLQkJCWFkZF9wY2llX3BvcnQoMCwgMiwgUENJRTAyX1ZJUlRfQkFTRSk7Ci0JCQlhZGRf cGNpZV9wb3J0KDAsIDMsIFBDSUUwM19WSVJUX0JBU0UpOwotCQl9Ci0JfQotCi0JaWYgKGluaXRf cG9ydDEpIHsKLQkJYWRkX3BjaWVfcG9ydCgxLCAwLCBQQ0lFMTBfVklSVF9CQVNFKTsKLQkJaWYg KCFvcmlvbl9wY2llX3g0X21vZGUoKHZvaWQgX19pb21lbSAqKVBDSUUxMF9WSVJUX0JBU0UpKSB7 Ci0JCQlhZGRfcGNpZV9wb3J0KDEsIDEsIFBDSUUxMV9WSVJUX0JBU0UpOwotCQkJYWRkX3BjaWVf cG9ydCgxLCAyLCBQQ0lFMTJfVklSVF9CQVNFKTsKLQkJCWFkZF9wY2llX3BvcnQoMSwgMywgUENJ RTEzX1ZJUlRfQkFTRSk7Ci0JCX0KLQl9Ci0KLQlwY2lfY29tbW9uX2luaXQoJm12Nzh4eDBfcGNp KTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9LY29uZmlnIGIvYXJjaC9h cm0vbWFjaC1vcmlvbjV4L0tjb25maWcKaW5kZXggYzYxOTk5ZDAxYzgwLi43OGI4ZDU5ZDdjYzEg MTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9LY29uZmlnCisrKyBiL2FyY2gvYXJt L21hY2gtb3Jpb241eC9LY29uZmlnCkBAIC0zNyw2MCArMzcsNiBAQCBjb25maWcgTUFDSF9SRDg4 RjUxODJfRFQKIAkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2FudCB5b3VyIGtlcm5lbCB0byBzdXBw b3J0IHRoZSBNYXJ2ZWxsCiAJICBPcmlvbi1OQVMgKDg4RjUxODIpIFJEMiwgRmxhdHRlbmVkIERl dmljZSBUcmVlLgogCi1jb25maWcgTUFDSF9LVVJPQk9YX1BSTwotCWJvb2wgIkt1cm9Cb3ggUHJv IChERVBSRUNBVEVEKSIKLQlzZWxlY3QgSTJDX0JPQVJESU5GTyBpZiBJMkMKLQlkZXBlbmRzIG9u IEFUQUdTCi0JaGVscAotCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRv IHN1cHBvcnQgdGhlCi0JICBLdXJvQm94IFBybyBwbGF0Zm9ybS4KLQotCSAgU3VwcG9ydCBmb3Ig dGhpcyBtYWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAotCSAgdW5sZXNzIGl0IGdl dHMgY29udmVydGVkIHRvIGRldmljZSB0cmVlLgotCi1jb25maWcgTUFDSF9ETlMzMjMKLQlib29s ICJELUxpbmsgRE5TLTMyMyAoREVQUkVDQVRFRCkiCi0Jc2VsZWN0IEkyQ19CT0FSRElORk8gaWYg STJDCi0JZGVwZW5kcyBvbiBBVEFHUwotCWhlbHAKLQkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2Fu dCB5b3VyIGtlcm5lbCB0byBzdXBwb3J0IHRoZQotCSAgRC1MaW5rIEROUy0zMjMgcGxhdGZvcm0u Ci0KLQkgIFN1cHBvcnQgZm9yIHRoaXMgbWFjaGluZSB3aWxsIGdvIGF3YXkgaW4gZWFybHkgMjAy NywKLQkgIHVubGVzcyBpdCBnZXRzIGNvbnZlcnRlZCB0byBkZXZpY2UgdHJlZS4KLQotY29uZmln IE1BQ0hfVFMyMDkKLQlib29sICJRTkFQIFRTLTEwOS9UUy0yMDkgKERFUFJFQ0FURUQpIgotCWRl cGVuZHMgb24gQVRBR1MKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBr ZXJuZWwgdG8gc3VwcG9ydCB0aGUKLQkgIFFOQVAgVFMtMTA5L1RTLTIwOSBwbGF0Zm9ybS4KLQot CSAgU3VwcG9ydCBmb3IgdGhpcyBtYWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAot CSAgdW5sZXNzIGl0IGdldHMgY29udmVydGVkIHRvIGRldmljZSB0cmVlLgotCi1jb25maWcgTUFD SF9URVJBU1RBVElPTl9QUk8yCi0JYm9vbCAiQnVmZmFsbyBUZXJhc3RhdGlvbiBQcm8gSUkvTGl2 ZSAoREVQUkVDQVRFRCkiCi0JZGVwZW5kcyBvbiBBVEFHUwotCWhlbHAKLQkgIFNheSAnWScgaGVy ZSBpZiB5b3Ugd2FudCB5b3VyIGtlcm5lbCB0byBzdXBwb3J0IHRoZQotCSAgQnVmZmFsbyBUZXJh c3RhdGlvbiBQcm8gSUkvTGl2ZSBwbGF0Zm9ybS4KLQotCSAgU3VwcG9ydCBmb3IgdGhpcyBtYWNo aW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAotCSAgdW5sZXNzIGl0IGdldHMgY29udmVy dGVkIHRvIGRldmljZSB0cmVlLgotCi1jb25maWcgTUFDSF9MSU5LU1RBVElPTl9QUk8KLQlib29s ICJCdWZmYWxvIExpbmtzdGF0aW9uIFByby9MaXZlIChERVBSRUNBVEVEKSIKLQlkZXBlbmRzIG9u IEFUQUdTCi0Jc2VsZWN0IEkyQ19CT0FSRElORk8gaWYgSTJDCi0JaGVscAotCSAgU2F5ICdZJyBo ZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlCi0JICBCdWZmYWxvIExp bmtzdGF0aW9uIFByby9MaXZlIHBsYXRmb3JtLiBCb3RoIHYxIGFuZAotCSAgdjIgZGV2aWNlcyBh cmUgc3VwcG9ydGVkLgotCi0JICBTdXBwb3J0IGZvciB0aGlzIG1hY2hpbmUgd2lsbCBnbyBhd2F5 IGluIGVhcmx5IDIwMjcsCi0JICB1bmxlc3MgaXQgZ2V0cyBjb252ZXJ0ZWQgdG8gZGV2aWNlIHRy ZWUuCi0KIGNvbmZpZyBNQUNIX0xJTktTVEFUSU9OX01JTkkKIAlib29sICJCdWZmYWxvIExpbmtz dGF0aW9uIE1pbmkgKEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSkiCiAJc2VsZWN0IEFSQ0hfT1JJT041 WF9EVApAQCAtOTgsMzYgKzQ0LDYgQEAgY29uZmlnIE1BQ0hfTElOS1NUQVRJT05fTUlOSQogCSAg U2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlCiAJICBC dWZmYWxvIExpbmtzdGF0aW9uIE1pbmkgKExTLVdTR0wpIHBsYXRmb3JtLgogCi1jb25maWcgTUFD SF9UUzQwOQotCWJvb2wgIlFOQVAgVFMtNDA5IChERVBSRUNBVEVEKSIKLQlkZXBlbmRzIG9uIEFU QUdTCi0JaGVscAotCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1 cHBvcnQgdGhlCi0JICBRTkFQIFRTLTQwOSBwbGF0Zm9ybS4KLQotCSAgU3VwcG9ydCBmb3IgdGhp cyBtYWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAotCSAgdW5sZXNzIGl0IGdldHMg Y29udmVydGVkIHRvIGRldmljZSB0cmVlLgotCi1jb25maWcgTUFDSF9UUzc4WFgKLQlib29sICJU ZWNobm9sb2dpYyBTeXN0ZW1zIFRTLTc4eHggKERFUFJFQ0FURUQpIgotCWRlcGVuZHMgb24gQVRB R1MKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8gc3Vw cG9ydCB0aGUKLQkgIFRlY2hub2xvZ2ljIFN5c3RlbXMgVFMtNzh4eCBwbGF0Zm9ybS4KLQotCSAg U3VwcG9ydCBmb3IgdGhpcyBtYWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAotCSAg dW5sZXNzIGl0IGdldHMgY29udmVydGVkIHRvIGRldmljZSB0cmVlLgotCi1jb25maWcgTUFDSF9N VjIxMjAKLQlib29sICJIUCBNZWRpYSBWYXVsdCBtdjIxMjAgKERFUFJFQ0FURUQpIgotCWRlcGVu ZHMgb24gQVRBR1MKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJu ZWwgdG8gc3VwcG9ydCB0aGUKLQkgIEhQIE1lZGlhIFZhdWx0IG12MjEyMCBvciBtdjUxMDAuCi0K LQkgIFN1cHBvcnQgZm9yIHRoaXMgbWFjaGluZSB3aWxsIGdvIGF3YXkgaW4gZWFybHkgMjAyNywK LQkgIHVubGVzcyBpdCBnZXRzIGNvbnZlcnRlZCB0byBkZXZpY2UgdHJlZS4KLQogY29uZmlnIE1B Q0hfRDJORVRfRFQKIAlib29sICJMYUNpZSBkMiBOZXR3b3JrIC8gQmlnIERpc2sgTmV0d29yayAo RmxhdHRlbmVkIERldmljZSBUcmVlKSIKIAlzZWxlY3QgQVJDSF9PUklPTjVYX0RUCkBAIC0xMzUs MTcgKzUxLDYgQEAgY29uZmlnIE1BQ0hfRDJORVRfRFQKIAkgIFNheSAnWScgaGVyZSBpZiB5b3Ug d2FudCB5b3VyIGtlcm5lbCB0byBzdXBwb3J0IHRoZQogCSAgTGFDaWUgZDIgTmV0d29yayBOQVMu CiAKLWNvbmZpZyBNQUNIX05FVDJCSUcKLQlib29sICJMYUNpZSAyQmlnIE5ldHdvcmsgKERFUFJF Q0FURUQpIgotCWRlcGVuZHMgb24gQVRBR1MKLQlzZWxlY3QgSTJDX0JPQVJESU5GTyBpZiBJMkMK LQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8gc3VwcG9y dCB0aGUKLQkgIExhQ2llIDJCaWcgTmV0d29yayBOQVMuCi0KLQkgIFN1cHBvcnQgZm9yIHRoaXMg bWFjaGluZSB3aWxsIGdvIGF3YXkgaW4gZWFybHkgMjAyNywKLQkgIHVubGVzcyBpdCBnZXRzIGNv bnZlcnRlZCB0byBkZXZpY2UgdHJlZS4KLQogY29uZmlnIE1BQ0hfTVNTMl9EVAogCWJvb2wgIk1h eHRvciBTaGFyZWQgU3RvcmFnZSBJSSAoRmxhdHRlbmVkIERldmljZSBUcmVlKSIKIAlzZWxlY3Qg QVJDSF9PUklPTjVYX0RUCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvTWFrZWZp bGUgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvTWFrZWZpbGUKaW5kZXggNmY1NGQ3ZmVmMjdhLi43 ZTk2MzRlMDQzMTggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9NYWtlZmlsZQor KysgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvTWFrZWZpbGUKQEAgLTIsMTUgKzIsNiBAQAogY2Nm bGFncy15IDo9IC1JJChzcmN0cmVlKS9hcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUKIAogb2Jq LXkJCQkJKz0gY29tbW9uLm8gcGNpLm8gaXJxLm8gbXBwLm8KLW9iai0kKENPTkZJR19NQUNIX0tV Uk9CT1hfUFJPKQkrPSBrdXJvYm94X3Byby1zZXR1cC5vCi1vYmotJChDT05GSUdfTUFDSF9URVJB U1RBVElPTl9QUk8yKQkrPSB0ZXJhc3RhdGlvbl9wcm8yLXNldHVwLm8KLW9iai0kKENPTkZJR19N QUNIX0xJTktTVEFUSU9OX1BSTykgKz0ga3Vyb2JveF9wcm8tc2V0dXAubwotb2JqLSQoQ09ORklH X01BQ0hfRE5TMzIzKQkrPSBkbnMzMjMtc2V0dXAubwotb2JqLSQoQ09ORklHX01BQ0hfVFMyMDkp CSs9IHRzMjA5LXNldHVwLm8gdHN4MDktY29tbW9uLm8KLW9iai0kKENPTkZJR19NQUNIX1RTNDA5 KQkrPSB0czQwOS1zZXR1cC5vIHRzeDA5LWNvbW1vbi5vCi1vYmotJChDT05GSUdfTUFDSF9UUzc4 WFgpCSs9IHRzNzh4eC1zZXR1cC5vCi1vYmotJChDT05GSUdfTUFDSF9NVjIxMjApCSs9IG12MjEy MC1zZXR1cC5vCi1vYmotJChDT05GSUdfTUFDSF9ORVQyQklHKQkrPSBuZXQyYmlnLXNldHVwLm8K IAogb2JqLSQoQ09ORklHX0FSQ0hfT1JJT041WF9EVCkJCSs9IGJvYXJkLWR0Lm8KIG9iai0kKENP TkZJR19NQUNIX0QyTkVUX0RUKQkrPSBib2FyZC1kMm5ldC5vCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLW9yaW9uNXgvYm9hcmQtZHQuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9ib2FyZC1k dC5jCmluZGV4IGJlNDc0OTJjNjY0MC4uMjYxNDIxM2UyY2JjIDEwMDY0NAotLS0gYS9hcmNoL2Fy bS9tYWNoLW9yaW9uNXgvYm9hcmQtZHQuYworKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYm9h cmQtZHQuYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KICNp bmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KICNpbmNsdWRlIDxwbGF0L2lycS5oPgotI2luY2x1ZGUg PHBsYXQvdGltZS5oPgogI2luY2x1ZGUgIm9yaW9uNXguaCIKICNpbmNsdWRlICJicmlkZ2UtcmVn cy5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgpAQCAtMzksNyArMzgsNyBAQCBzdGF0aWMgdm9pZCBf X2luaXQgb3Jpb241eF9kdF9pbml0KHZvaWQpCiAJdTMyIGRldiwgcmV2OwogCiAJb3Jpb241eF9p ZCgmZGV2LCAmcmV2LCAmZGV2X25hbWUpOwotCXByaW50ayhLRVJOX0lORk8gIk9yaW9uIElEOiAl cy4gVENMSz0lZC5cbiIsIGRldl9uYW1lLCBvcmlvbjV4X3RjbGspOworCXByaW50ayhLRVJOX0lO Rk8gIk9yaW9uIElEOiAlcy5cbiIsIGRldl9uYW1lKTsKIAogCUJVR19PTihtdmVidV9tYnVzX2R0 X2luaXQoZmFsc2UpKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2NvbW1v bi5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2NvbW1vbi5jCmluZGV4IGRmMDU2ZDYwYjY3NS4u MDUwYTk1YWYyYmJmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvY29tbW9uLmMK KysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2NvbW1vbi5jCkBAIC03LDI3ICs3LDE2IEBACiAg KiBNYWludGFpbmVyOiBUemFjaGkgUGVyZWxzdGVpbiA8dHphY2hpQG1hcnZlbGwuY29tPgogICov CiAKKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgog I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+ Ci0jaW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4 X2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPGxpbnV4 L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8bGlu dXgvY3B1Lmg+CisjaW5jbHVkZSA8bGludXgvbWJ1cy5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+ CiAjaW5jbHVkZSA8YXNtL3NldHVwLmg+Ci0jaW5jbHVkZSA8YXNtL3N5c3RlbV9taXNjLmg+CiAj aW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgogI2lu Y2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL210 ZC1vcmlvbl9uYW5kLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS91c2ItZWhjaS1v cmlvbi5oPgotI2luY2x1ZGUgPHBsYXQvdGltZS5oPgotI2luY2x1ZGUgPHBsYXQvY29tbW9uLmg+ CiAKICNpbmNsdWRlICJicmlkZ2UtcmVncy5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgpAQCAtNTUs MTY3ICs0NCw2IEBAIHZvaWQgX19pbml0IG9yaW9uNXhfbWFwX2lvKHZvaWQpCiAJaW90YWJsZV9p bml0KG9yaW9uNXhfaW9fZGVzYywgQVJSQVlfU0laRShvcmlvbjV4X2lvX2Rlc2MpKTsKIH0KIAot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIENMSyB0cmVlCi0gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLXN0YXRpYyBzdHJ1Y3QgY2xrICp0Y2xrOwotCi12b2lkIF9faW5pdCBjbGtfaW5pdCh2b2lk KQotewotCXRjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShOVUxMLCAidGNsayIsIE5VTEws IDAsIG9yaW9uNXhfdGNsayk7Ci0KLQlvcmlvbl9jbGtkZXZfaW5pdCh0Y2xrKTsKLX0KLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0gKiBFSENJMAotICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lk IF9faW5pdCBvcmlvbjV4X2VoY2kwX2luaXQodm9pZCkKLXsKLQlvcmlvbl9laGNpX2luaXQoT1JJ T041WF9VU0IwX1BIWVNfQkFTRSwgSVJRX09SSU9ONVhfVVNCMF9DVFJMLAotCQkJRUhDSV9QSFlf T1JJT04pOwotfQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRUhDSTEKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotdm9pZCBfX2luaXQgb3Jpb241eF9laGNpMV9pbml0KHZvaWQpCi17Ci0J b3Jpb25fZWhjaV8xX2luaXQoT1JJT041WF9VU0IxX1BIWVNfQkFTRSwgSVJRX09SSU9ONVhfVVNC MV9DVFJMKTsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdFMDAKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotdm9pZCBfX2luaXQgb3Jpb241eF9ldGhfaW5pdChzdHJ1Y3QgbXY2NDN4 eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpCi17Ci0Jb3Jpb25fZ2UwMF9pbml0KGV0aF9k YXRhLAotCQkJT1JJT041WF9FVEhfUEhZU19CQVNFLCBJUlFfT1JJT041WF9FVEhfU1VNLAotCQkJ SVJRX09SSU9ONVhfRVRIX0VSUiwKLQkJCU1WNjQzWFhfVFhfQ1NVTV9ERUZBVUxUX0xJTUlUKTsK LX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEkyQwotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi12b2lkIF9faW5pdCBvcmlvbjV4X2kyY19pbml0KHZvaWQpCi17Ci0Jb3Jpb25faTJjX2lu aXQoSTJDX1BIWVNfQkFTRSwgSVJRX09SSU9ONVhfSTJDLCA4KTsKLQotfQotCi0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogU0FUQQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5p dCBvcmlvbjV4X3NhdGFfaW5pdChzdHJ1Y3QgbXZfc2F0YV9wbGF0Zm9ybV9kYXRhICpzYXRhX2Rh dGEpCi17Ci0Jb3Jpb25fc2F0YV9pbml0KHNhdGFfZGF0YSwgT1JJT041WF9TQVRBX1BIWVNfQkFT RSwgSVJRX09SSU9ONVhfU0FUQSk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBT UEkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgb3Jpb241eF9zcGlfaW5pdCh2 b2lkKQotewotCW9yaW9uX3NwaV9pbml0KFNQSV9QSFlTX0JBU0UpOwotfQotCi0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogVUFSVDAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2lu aXQgb3Jpb241eF91YXJ0MF9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fdWFydDBfaW5pdChVQVJUMF9W SVJUX0JBU0UsIFVBUlQwX1BIWVNfQkFTRSwKLQkJCSBJUlFfT1JJT041WF9VQVJUMCwgdGNsayk7 Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVUFSVDEKLSAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotdm9pZCBfX2luaXQgb3Jpb241eF91YXJ0MV9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fdWFy dDFfaW5pdChVQVJUMV9WSVJUX0JBU0UsIFVBUlQxX1BIWVNfQkFTRSwKLQkJCSBJUlFfT1JJT041 WF9VQVJUMSwgdGNsayk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogWE9SIGVuZ2lu ZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBvcmlvbjV4X3hvcl9pbml0KHZv aWQpCi17Ci0Jb3Jpb25feG9yMF9pbml0KE9SSU9ONVhfWE9SX1BIWVNfQkFTRSwKLQkJCU9SSU9O NVhfWE9SX1BIWVNfQkFTRSArIDB4MjAwLAotCQkJSVJRX09SSU9ONVhfWE9SMCwgSVJRX09SSU9O NVhfWE9SMSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ3J5cHRvZ3JhcGhpYyBF bmdpbmVzIGFuZCBTZWN1cml0eSBBY2NlbGVyYXRvciAoQ0VTQSkKLSAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotc3RhdGljIHZvaWQgX19pbml0IG9yaW9uNXhfY3J5cHRvX2luaXQodm9pZCkKLXsKLQlt dmVidV9tYnVzX2FkZF93aW5kb3dfYnlfaWQoT1JJT05fTUJVU19TUkFNX1RBUkdFVCwKLQkJCQkg ICAgT1JJT05fTUJVU19TUkFNX0FUVFIsCi0JCQkJICAgIE9SSU9ONVhfU1JBTV9QSFlTX0JBU0Us Ci0JCQkJICAgIE9SSU9ONVhfU1JBTV9TSVpFKTsKLQlvcmlvbl9jcnlwdG9faW5pdChPUklPTjVY X0NSWVBUT19QSFlTX0JBU0UsIE9SSU9ONVhfU1JBTV9QSFlTX0JBU0UsCi0JCQkgIFNaXzhLLCBJ UlFfT1JJT041WF9DRVNBKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBXYXRjaGRv ZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX3dk dF9yZXNvdXJjZVtdID0gewotCQlERUZJTkVfUkVTX01FTShUSU1FUl9QSFlTX0JBU0UsIDB4MDQp LAotCQlERUZJTkVfUkVTX01FTShSU1RPVVRuX01BU0tfUEhZUywgMHgwNCksCi19OwotCi1zdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl93ZHRfZGV2aWNlID0gewotCS5uYW1lCQk9 ICJvcmlvbl93ZHQiLAotCS5pZAkJPSAtMSwKLQkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUo b3Jpb25fd2R0X3Jlc291cmNlKSwKLQkucmVzb3VyY2UJPSBvcmlvbl93ZHRfcmVzb3VyY2UsCi19 OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgb3Jpb241eF93ZHRfaW5pdCh2b2lkKQotewotCXBsYXRm b3JtX2RldmljZV9yZWdpc3Rlcigmb3Jpb25fd2R0X2RldmljZSk7Ci19Ci0KLQotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0gKiBUaW1lIGhhbmRsaW5nCi0gKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZv aWQgX19pbml0IG9yaW9uNXhfaW5pdF9lYXJseSh2b2lkKQotewotCXUzMiByZXYsIGRldjsKLQlj b25zdCBjaGFyICptYnVzX3NvY19uYW1lOwotCi0Jb3Jpb25fdGltZV9zZXRfYmFzZShUSU1FUl9W SVJUX0JBU0UpOwotCi0JLyogSW5pdGlhbGl6ZSB0aGUgTUJVUyBkcml2ZXIgKi8KLQlvcmlvbjV4 X3BjaWVfaWQoJmRldiwgJnJldik7Ci0JaWYgKGRldiA9PSBNVjg4RjUyODFfREVWX0lEKQotCQlt YnVzX3NvY19uYW1lID0gIm1hcnZlbGwsb3Jpb241eC04OGY1MjgxLW1idXMiOwotCWVsc2UgaWYg KGRldiA9PSBNVjg4RjUxODJfREVWX0lEKQotCQltYnVzX3NvY19uYW1lID0gIm1hcnZlbGwsb3Jp b241eC04OGY1MTgyLW1idXMiOwotCWVsc2UgaWYgKGRldiA9PSBNVjg4RjUxODFfREVWX0lEKQot CQltYnVzX3NvY19uYW1lID0gIm1hcnZlbGwsb3Jpb241eC04OGY1MTgxLW1idXMiOwotCWVsc2Ug aWYgKGRldiA9PSBNVjg4RjYxODNfREVWX0lEKQotCQltYnVzX3NvY19uYW1lID0gIm1hcnZlbGws b3Jpb241eC04OGY2MTgzLW1idXMiOwotCWVsc2UKLQkJbWJ1c19zb2NfbmFtZSA9IE5VTEw7Ci0J bXZlYnVfbWJ1c19pbml0KG1idXNfc29jX25hbWUsIE9SSU9ONVhfQlJJREdFX1dJTlNfQkFTRSwK LQkJCU9SSU9ONVhfQlJJREdFX1dJTlNfU1osCi0JCQlPUklPTjVYX0REUl9XSU5TX0JBU0UsIE9S SU9ONVhfRERSX1dJTlNfU1opOwotfQotCiB2b2lkIG9yaW9uNXhfc2V0dXBfd2lucyh2b2lkKQog ewogCS8qCkBAIC0yNDIsMjkgKzcwLDYgQEAgdm9pZCBvcmlvbjV4X3NldHVwX3dpbnModm9pZCkK IAkJCQkgICAgT1JJT041WF9QQ0lfTUVNX1NJWkUpOwogfQogCi1pbnQgb3Jpb241eF90Y2xrOwot Ci1zdGF0aWMgaW50IF9faW5pdCBvcmlvbjV4X2ZpbmRfdGNsayh2b2lkKQotewotCXUzMiBkZXYs IHJldjsKLQotCW9yaW9uNXhfcGNpZV9pZCgmZGV2LCAmcmV2KTsKLQlpZiAoZGV2ID09IE1WODhG NjE4M19ERVZfSUQgJiYKLQkgICAgKHJlYWRsKE1QUF9SRVNFVF9TQU1QTEUpICYgMHgwMDAwMDIw MCkgPT0gMCkKLQkJcmV0dXJuIDEzMzMzMzMzMzsKLQotCXJldHVybiAxNjY2NjY2Njc7Ci19Ci0K LXZvaWQgX19pbml0IG9yaW9uNXhfdGltZXJfaW5pdCh2b2lkKQotewotCW9yaW9uNXhfdGNsayA9 IG9yaW9uNXhfZmluZF90Y2xrKCk7Ci0KLQlvcmlvbl90aW1lX2luaXQoT1JJT041WF9CUklER0Vf VklSVF9CQVNFLCBCUklER0VfSU5UX1RJTUVSMV9DTFIsCi0JCQlJUlFfT1JJT041WF9CUklER0Us IG9yaW9uNXhfdGNsayk7Ci19Ci0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBHZW5lcmFs CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTMxMCw0NSArMTE1LDYgQEAgdm9pZCBfX2luaXQg b3Jpb241eF9pZCh1MzIgKmRldiwgdTMyICpyZXYsIGNoYXIgKipkZXZfbmFtZSkKIAl9CiB9CiAK LXZvaWQgX19pbml0IG9yaW9uNXhfaW5pdCh2b2lkKQotewotCWNoYXIgKmRldl9uYW1lOwotCXUz MiBkZXYsIHJldjsKLQotCW9yaW9uNXhfaWQoJmRldiwgJnJldiwgJmRldl9uYW1lKTsKLQlwcmlu dGsoS0VSTl9JTkZPICJPcmlvbiBJRDogJXMuIFRDTEs9JWQuXG4iLCBkZXZfbmFtZSwgb3Jpb241 eF90Y2xrKTsKLQotCS8qCi0JICogU2V0dXAgT3Jpb24gYWRkcmVzcyBtYXAKLQkgKi8KLQlvcmlv bjV4X3NldHVwX3dpbnMoKTsKLQotCS8qIFNldHVwIHJvb3Qgb2YgY2xrIHRyZWUgKi8KLQljbGtf aW5pdCgpOwotCi0JLyoKLQkgKiBEb24ndCBpc3N1ZSAiV2FpdCBmb3IgSW50ZXJydXB0IiBpbnN0 cnVjdGlvbiBpZiB3ZSBhcmUKLQkgKiBydW5uaW5nIG9uIEQwIDUyODEgc2lsaWNvbi4KLQkgKi8K LQlpZiAoZGV2ID09IE1WODhGNTI4MV9ERVZfSUQgJiYgcmV2ID09IE1WODhGNTI4MV9SRVZfRDAp IHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiT3Jpb246IEFwcGx5aW5nIDUyODEgRDAgV0ZJIHdvcmth cm91bmQuXG4iKTsKLQkJY3B1X2lkbGVfcG9sbF9jdHJsKHRydWUpOwotCX0KLQotCS8qCi0JICog VGhlIDUwODIvNTE4MWwvNTE4Mi82MDgyLzYwODJsLzYxODMgaGF2ZSBjcnlwdG8KLQkgKiB3aGls ZSA1MTgwbi81MTgxLzUyODEgZG9uJ3QgaGF2ZSBjcnlwdG8uCi0JICovCi0JaWYgKChkZXYgPT0g TVY4OEY1MTgxX0RFVl9JRCAmJiByZXYgPj0gTVY4OEY1MTgxTF9SRVZfQTApIHx8Ci0JICAgIGRl diA9PSBNVjg4RjUxODJfREVWX0lEIHx8IGRldiA9PSBNVjg4RjYxODNfREVWX0lEKQotCQlvcmlv bjV4X2NyeXB0b19pbml0KCk7Ci0KLQkvKgotCSAqIFJlZ2lzdGVyIHdhdGNoZG9nIGRyaXZlcgot CSAqLwotCW9yaW9uNXhfd2R0X2luaXQoKTsKLX0KLQogdm9pZCBvcmlvbjV4X3Jlc3RhcnQoZW51 bSByZWJvb3RfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpjbWQpCiB7CiAJLyoKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtb3Jpb241eC9jb21tb24uaCBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9j b21tb24uaAppbmRleCA4ZGY3MGUyM2FhODIuLjRkYzZjNTliZGU5OSAxMDA2NDQKLS0tIGEvYXJj aC9hcm0vbWFjaC1vcmlvbjV4L2NvbW1vbi5oCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9j b21tb24uaApAQCAtNCw5ICs0LDYgQEAKIAogI2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgogCi1z dHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YTsKLXN0cnVjdCBtdl9zYXRhX3BsYXRmb3Jt X2RhdGE7Ci0KICNkZWZpbmUgT1JJT05fTUJVU19QQ0lFX01FTV9UQVJHRVQgICAgMHgwNAogI2Rl ZmluZSBPUklPTl9NQlVTX1BDSUVfTUVNX0FUVFIgICAgICAweDU5CiAjZGVmaW5lIE9SSU9OX01C VVNfUENJRV9JT19UQVJHRVQgICAgIDB4MDQKQEAgLTMyLDIxICsyOSw5IEBAIHZvaWQgb3Jpb241 eF9pbml0X2Vhcmx5KHZvaWQpOwogdm9pZCBvcmlvbjV4X2luaXRfaXJxKHZvaWQpOwogdm9pZCBv cmlvbjV4X2luaXQodm9pZCk7CiB2b2lkIG9yaW9uNXhfaWQodTMyICpkZXYsIHUzMiAqcmV2LCBj aGFyICoqZGV2X25hbWUpOwotdm9pZCBjbGtfaW5pdCh2b2lkKTsKLWV4dGVybiBpbnQgb3Jpb241 eF90Y2xrOwotZXh0ZXJuIHZvaWQgb3Jpb241eF90aW1lcl9pbml0KHZvaWQpOwogCiB2b2lkIG9y aW9uNXhfc2V0dXBfd2lucyh2b2lkKTsKIAotdm9pZCBvcmlvbjV4X2VoY2kwX2luaXQodm9pZCk7 Ci12b2lkIG9yaW9uNXhfZWhjaTFfaW5pdCh2b2lkKTsKLXZvaWQgb3Jpb241eF9ldGhfaW5pdChz dHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpOwotdm9pZCBvcmlvbjV4 X2kyY19pbml0KHZvaWQpOwotdm9pZCBvcmlvbjV4X3NhdGFfaW5pdChzdHJ1Y3QgbXZfc2F0YV9w bGF0Zm9ybV9kYXRhICpzYXRhX2RhdGEpOwotdm9pZCBvcmlvbjV4X3NwaV9pbml0KHZvaWQpOwot dm9pZCBvcmlvbjV4X3VhcnQwX2luaXQodm9pZCk7Ci12b2lkIG9yaW9uNXhfdWFydDFfaW5pdCh2 b2lkKTsKLXZvaWQgb3Jpb241eF94b3JfaW5pdCh2b2lkKTsKIHZvaWQgb3Jpb241eF9yZXN0YXJ0 KGVudW0gcmVib290X21vZGUsIGNvbnN0IGNoYXIgKik7CiAKIC8qCmRpZmYgLS1naXQgYS9hcmNo L2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgv ZG5zMzIzLXNldHVwLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiODFiMDhiMGRk YS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAu YworKysgL2Rldi9udWxsCkBAIC0xLDc1NyArMCwwIEBACi0vKgotICogYXJjaC9hcm0vbWFjaC1v cmlvbjV4L2RuczMyMy1zZXR1cC5jCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEhlcmJlcnQg VmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3JnPgotICoKLSAqIFN1cHBvcnQgZm9yIEhXIFJldiBD MToKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVu aEBrZXJuZWwuY3Jhc2hpbmcub3JnPgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICog cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlCi0gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotICoKLSAqLwotI2luY2x1ZGUgPGxpbnV4L2dwaW8vbGVnYWN5Lmg+Ci0jaW5jbHVkZSA8 bGludXgvZ3Bpby9tYWNoaW5lLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVk ZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvcGNpLmg+Ci0jaW5jbHVkZSA8 bGludXgvaXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvbXRkL3BoeXNtYXAuaD4KLSNpbmNsdWRlIDxs aW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KLSNpbmNsdWRlIDxs aW51eC9ncGlvX2tleXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2luY2x1ZGUgPGxp bnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPGxp bnV4L3BoeS5oPgotI2luY2x1ZGUgPGxpbnV4L21hcnZlbGxfcGh5Lmg+Ci0jaW5jbHVkZSA8YXNt L21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNt L21hY2gvcGNpLmg+Ci0jaW5jbHVkZSA8YXNtL3N5c3RlbV9pbmZvLmg+Ci0jaW5jbHVkZSA8cGxh dC9vcmlvbi1ncGlvLmg+Ci0jaW5jbHVkZSAib3Jpb241eC5oIgotI2luY2x1ZGUgImNvbW1vbi5o IgotI2luY2x1ZGUgIm1wcC5oIgotCi0vKiBSZXYgQTEgYW5kIEIxICovCi0jZGVmaW5lIEROUzMy M19HUElPX0xFRF9SSUdIVF9BTUJFUgkxCi0jZGVmaW5lIEROUzMyM19HUElPX0xFRF9MRUZUX0FN QkVSCTIKLSNkZWZpbmUgRE5TMzIzX0dQSU9fU1lTVEVNX1VQCQkzCi0jZGVmaW5lIEROUzMyM19H UElPX0xFRF9QT1dFUjEJCTQKLSNkZWZpbmUgRE5TMzIzX0dQSU9fTEVEX1BPV0VSMgkJNQotI2Rl ZmluZSBETlMzMjNfR1BJT19PVkVSVEVNUAkJNgotI2RlZmluZSBETlMzMjNfR1BJT19SVEMJCQk3 Ci0jZGVmaW5lIEROUzMyM19HUElPX1BPV0VSX09GRgkJOAotI2RlZmluZSBETlMzMjNfR1BJT19L RVlfUE9XRVIJCTkKLSNkZWZpbmUgRE5TMzIzX0dQSU9fS0VZX1JFU0VUCQkxMAotCi0vKiBSZXYg QzEgKi8KLSNkZWZpbmUgRE5TMzIzQ19HUElPX0tFWV9QT1dFUgkJMQotI2RlZmluZSBETlMzMjND X0dQSU9fUE9XRVJfT0ZGCQkyCi0jZGVmaW5lIEROUzMyM0NfR1BJT19MRURfUklHSFRfQU1CRVIJ OAotI2RlZmluZSBETlMzMjNDX0dQSU9fTEVEX0xFRlRfQU1CRVIJOQotI2RlZmluZSBETlMzMjND X0dQSU9fTEVEX1BPV0VSCQkxNwotI2RlZmluZSBETlMzMjNDX0dQSU9fRkFOX0JJVDEJCTE4Ci0j ZGVmaW5lIEROUzMyM0NfR1BJT19GQU5fQklUMAkJMTkKLQotLyogRXhwb3NlZCB0byB1c2Vyc3Bh Y2UsIGRvIG5vdCBjaGFuZ2UgKi8KLWVudW0gewotCUROUzMyM19SRVZfQTEsCS8qIDAgKi8KLQlE TlMzMjNfUkVWX0IxLAkvKiAxICovCi0JRE5TMzIzX1JFVl9DMSwJLyogMiAqLwotfTsKLQotCi0v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogUENJIHNldHVwCi0gKi8KLQotc3RhdGljIGludCBfX2lu aXQgZG5zMzIzX3BjaV9tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3Qs IHU4IHBpbikKLXsKLQlpbnQgaXJxOwotCi0JLyoKLQkgKiBDaGVjayBmb3IgZGV2aWNlcyB3aXRo IGhhcmQtd2lyZWQgSVJRcy4KLQkgKi8KLQlpcnEgPSBvcmlvbjV4X3BjaV9tYXBfaXJxKGRldiwg c2xvdCwgcGluKTsKLQlpZiAoaXJxICE9IC0xKQotCQlyZXR1cm4gaXJxOwotCi0JcmV0dXJuIC0x OwotfQotCi1zdGF0aWMgc3RydWN0IGh3X3BjaSBkbnMzMjNfcGNpIF9faW5pdGRhdGEgPSB7Ci0J Lm5yX2NvbnRyb2xsZXJzID0gMiwKLQkuc2V0dXAJCT0gb3Jpb241eF9wY2lfc3lzX3NldHVwLAot CS5zY2FuCQk9IG9yaW9uNXhfcGNpX3N5c19zY2FuX2J1cywKLQkubWFwX2lycQk9IGRuczMyM19w Y2lfbWFwX2lycSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IGRuczMyM19wY2lfaW5pdCh2b2lk KQotewotCS8qIFJldiBCMSBhbmQgQzEgZG9lc24ndCByZWFsbHkgdXNlIGl0cyBQQ0kgYnVzLCBh bmQgaW5pdGlhbGlzaW5nIFBDSQotCSAqIGdldHMgaW4gdGhlIHdheSBvZiBpbml0aWFsaXNpbmcg dGhlIFNBVEEgY29udHJvbGxlci4KLQkgKi8KLQlpZiAobWFjaGluZV9pc19kbnMzMjMoKSAmJiBz eXN0ZW1fcmV2ID09IEROUzMyM19SRVZfQTEpCi0JCXBjaV9jb21tb25faW5pdCgmZG5zMzIzX3Bj aSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3Vic3lzX2luaXRjYWxsKGRuczMyM19wY2lfaW5pdCk7 Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiA4TWlCIE5PUiBmbGFzaCAoU3BhbnNpb24gUzI5 R0wwNjRNOTBURklSNCkKLSAqCi0gKiBMYXlvdXQgYXMgdXNlZCBieSBELUxpbms6Ci0gKiAgMHgw MDAwMDAwMC0weDAwMDEwMDAwIDogIk1URDEiCi0gKiAgMHgwMDAxMDAwMC0weDAwMDIwMDAwIDog Ik1URDIiCi0gKiAgMHgwMDAyMDAwMC0weDAwMWEwMDAwIDogIkxpbnV4IEtlcm5lbCIKLSAqICAw eDAwMWEwMDAwLTB4MDA3ZDAwMDAgOiAiRmlsZSBTeXN0ZW0iCi0gKiAgMHgwMDdkMDAwMC0weDAw ODAwMDAwIDogInUtYm9vdCIKLSAqLwotCi0jZGVmaW5lIEROUzMyM19OT1JfQk9PVF9CQVNFIDB4 ZjQwMDAwMDAKLSNkZWZpbmUgRE5TMzIzX05PUl9CT09UX1NJWkUgU1pfOE0KLQotc3RhdGljIHN0 cnVjdCBtdGRfcGFydGl0aW9uIGRuczMyM19wYXJ0aXRpb25zW10gPSB7Ci0JewotCQkubmFtZQk9 ICJNVEQxIiwKLQkJLnNpemUJPSAweDAwMDEwMDAwLAotCQkub2Zmc2V0CT0gMCwKLQl9LCB7Ci0J CS5uYW1lCT0gIk1URDIiLAotCQkuc2l6ZQk9IDB4MDAwMTAwMDAsCi0JCS5vZmZzZXQgPSAweDAw MDEwMDAwLAotCX0sIHsKLQkJLm5hbWUJPSAiTGludXggS2VybmVsIiwKLQkJLnNpemUJPSAweDAw MTgwMDAwLAotCQkub2Zmc2V0CT0gMHgwMDAyMDAwMCwKLQl9LCB7Ci0JCS5uYW1lCT0gIkZpbGUg U3lzdGVtIiwKLQkJLnNpemUJPSAweDAwNjMwMDAwLAotCQkub2Zmc2V0CT0gMHgwMDFBMDAwMCwK LQl9LCB7Ci0JCS5uYW1lCT0gInUtYm9vdCIsCi0JCS5zaXplCT0gMHgwMDAzMDAwMCwKLQkJLm9m ZnNldAk9IDB4MDA3ZDAwMDAsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGh5c21hcF9mbGFz aF9kYXRhIGRuczMyM19ub3JfZmxhc2hfZGF0YSA9IHsKLQkud2lkdGgJCT0gMSwKLQkucGFydHMJ CT0gZG5zMzIzX3BhcnRpdGlvbnMsCi0JLm5yX3BhcnRzCT0gQVJSQVlfU0laRShkbnMzMjNfcGFy dGl0aW9ucykKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgZG5zMzIzX25vcl9mbGFzaF9y ZXNvdXJjZSA9IHsKLQkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9NRU0sCi0JLnN0YXJ0CQk9IEROUzMy M19OT1JfQk9PVF9CQVNFLAotCS5lbmQJCT0gRE5TMzIzX05PUl9CT09UX0JBU0UgKyBETlMzMjNf Tk9SX0JPT1RfU0laRSAtIDEsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBk bnMzMjNfbm9yX2ZsYXNoID0gewotCS5uYW1lCQk9ICJwaHlzbWFwLWZsYXNoIiwKLQkuaWQJCT0g MCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmZG5zMzIzX25vcl9mbGFzaF9kYXRh LAotCX0sCi0JLnJlc291cmNlCT0gJmRuczMyM19ub3JfZmxhc2hfcmVzb3VyY2UsCi0JLm51bV9y ZXNvdXJjZXMJPSAxLAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEV0aGVybmV0Ci0g Ki8KLQotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhIGRuczMyM19ldGhf ZGF0YSA9IHsKLQkucGh5X2FkZHIgPSBNVjY0M1hYX0VUSF9QSFlfQUREUig4KSwKLX07Ci0KLS8q IGRuczMyM19wYXJzZV9oZXhfKigpIHRha2VuIGZyb20gdHN4MDktY29tbW9uLmM7IHNob3VsZCBh IGNvbW1vbiBjb3B5IG9mIHRoZXNlCi0gKiBmdW5jdGlvbnMgYmUga2VwdCBzb21ld2hlcmU/Ci0g Ki8KLXN0YXRpYyBpbnQgX19pbml0IGRuczMyM19wYXJzZV9oZXhfbmliYmxlKGNoYXIgbikKLXsK LQlpZiAobiA+PSAnMCcgJiYgbiA8PSAnOScpCi0JCXJldHVybiBuIC0gJzAnOwotCi0JaWYgKG4g Pj0gJ0EnICYmIG4gPD0gJ0YnKQotCQlyZXR1cm4gbiAtICdBJyArIDEwOwotCi0JaWYgKG4gPj0g J2EnICYmIG4gPD0gJ2YnKQotCQlyZXR1cm4gbiAtICdhJyArIDEwOwotCi0JcmV0dXJuIC0xOwot fQotCi1zdGF0aWMgaW50IF9faW5pdCBkbnMzMjNfcGFyc2VfaGV4X2J5dGUoY29uc3QgY2hhciAq YikKLXsKLQlpbnQgaGk7Ci0JaW50IGxvOwotCi0JaGkgPSBkbnMzMjNfcGFyc2VfaGV4X25pYmJs ZShiWzBdKTsKLQlsbyA9IGRuczMyM19wYXJzZV9oZXhfbmliYmxlKGJbMV0pOwotCi0JaWYgKGhp IDwgMCB8fCBsbyA8IDApCi0JCXJldHVybiAtMTsKLQotCXJldHVybiAoaGkgPDwgNCkgfCBsbzsK LX0KLQotc3RhdGljIGludCBfX2luaXQgZG5zMzIzX3JlYWRfbWFjX2FkZHIodm9pZCkKLXsKLQl1 X2ludDhfdCBhZGRyWzZdOwotCWludCBpOwotCWNoYXIgKm1hY19wYWdlOwotCi0JLyogTUFDIGFk ZHJlc3MgaXMgc3RvcmVkIGFzIGEgcmVndWxhciBvbCcgc3RyaW5nIGluIC9kZXYvbXRkYmxvY2s0 Ci0JICogKDB4MDA3ZDAwMDAtMHgwMDgwMDAwMCkgc3RhcnRpbmcgYXQgb2Zmc2V0IDE5NjQ4MCAo MHgyZmY4MCkuCi0JICovCi0JbWFjX3BhZ2UgPSBpb3JlbWFwKEROUzMyM19OT1JfQk9PVF9CQVNF ICsgMHg3ZDAwMDAgKyAxOTY0ODAsIDEwMjQpOwotCWlmICghbWFjX3BhZ2UpCi0JCXJldHVybiAt RU5PTUVNOwotCi0JLyogU2FuaXR5IGNoZWNrIHRoZSBzdHJpbmcgd2UncmUgbG9va2luZyBhdCAq LwotCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKLQkJaWYgKCoobWFjX3BhZ2UgKyAoaSAqIDMp ICsgMikgIT0gJzonKSB7Ci0JCQlnb3RvIGVycm9yX2ZhaWw7Ci0JCX0KLQl9Ci0KLQlmb3IgKGkg PSAwOyBpIDwgNjsgaSsrKQl7Ci0JCWludCBieXRlOwotCi0JCWJ5dGUgPSBkbnMzMjNfcGFyc2Vf aGV4X2J5dGUobWFjX3BhZ2UgKyAoaSAqIDMpKTsKLQkJaWYgKGJ5dGUgPCAwKSB7Ci0JCQlnb3Rv IGVycm9yX2ZhaWw7Ci0JCX0KLQotCQlhZGRyW2ldID0gYnl0ZTsKLQl9Ci0KLQlpb3VubWFwKG1h Y19wYWdlKTsKLQlwcmludGsoIkROUy0zMjM6IEZvdW5kIGV0aGVybmV0IE1BQyBhZGRyZXNzOiAl cE1cbiIsIGFkZHIpOwotCi0JbWVtY3B5KGRuczMyM19ldGhfZGF0YS5tYWNfYWRkciwgYWRkciwg Nik7Ci0KLQlyZXR1cm4gMDsKLQotZXJyb3JfZmFpbDoKLQlpb3VubWFwKG1hY19wYWdlKTsKLQly ZXR1cm4gLUVJTlZBTDsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdQSU8gTEVEcyAo c2ltcGxlIC0gZG9lc24ndCB1c2UgaGFyZHdhcmUgYmxpbmtpbmcgc3VwcG9ydCkKLSAqLwotCi1z dGF0aWMgc3RydWN0IGdwaW9fbGVkIGRuczMyM2FiX2xlZHNbXSA9IHsKLQl7Ci0JCS5uYW1lID0g InBvd2VyOmJsdWUiLAotCQkuZGVmYXVsdF90cmlnZ2VyID0gImRlZmF1bHQtb24iLAotCX0sIHsK LQkJLm5hbWUgPSAicmlnaHQ6YW1iZXIiLAotCX0sIHsKLQkJLm5hbWUgPSAibGVmdDphbWJlciIs Ci0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb2RfbG9va3VwX3RhYmxlIGRuczMyM2ExX2xl ZHNfZ3Bpb190YWJsZSA9IHsKLQkuZGV2X2lkID0gImxlZHMtZ3BpbyIsCi0JLnRhYmxlID0gewot CQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgRE5TMzIzX0dQSU9fTEVEX1BPV0VSMiwg TlVMTCwKLQkJCQkwLCBHUElPX0FDVElWRV9MT1cpLAotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9u X2dwaW8wIiwgRE5TMzIzX0dQSU9fTEVEX1JJR0hUX0FNQkVSLCBOVUxMLAotCQkJCTEsIEdQSU9f QUNUSVZFX0xPVyksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCBETlMzMjNfR1BJ T19MRURfTEVGVF9BTUJFUiwgTlVMTCwKLQkJCQkyLCBHUElPX0FDVElWRV9MT1cpLAotCQl7IH0s Ci0JfSwKLX07Ci0KLS8qIEIxIGlzIHRoZSBzYW1lIGJ1dCBwb3dlciBMRUQgaXMgYWN0aXZlIGhp Z2ggKi8KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb2RfbG9va3VwX3RhYmxlIGRuczMyM2IxX2xlZHNfZ3Bp b190YWJsZSA9IHsKLQkuZGV2X2lkID0gImxlZHMtZ3BpbyIsCi0JLnRhYmxlID0gewotCQlHUElP X0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgRE5TMzIzX0dQSU9fTEVEX1BPV0VSMiwgTlVMTCwK LQkJCQkwLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlv MCIsIEROUzMyM19HUElPX0xFRF9SSUdIVF9BTUJFUiwgTlVMTCwKLQkJCQkxLCBHUElPX0FDVElW RV9MT1cpLAotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgRE5TMzIzX0dQSU9fTEVE X0xFRlRfQU1CRVIsIE5VTEwsCi0JCQkJMiwgR1BJT19BQ1RJVkVfTE9XKSwKLQkJeyB9LAotCX0s Ci19OwotCi1zdGF0aWMgc3RydWN0IGdwaW9fbGVkIGRuczMyM2NfbGVkc1tdID0gewotCXsKLQkJ Lm5hbWUgPSAicG93ZXI6Ymx1ZSIsCi0JCS5kZWZhdWx0X3RyaWdnZXIgPSAidGltZXIiLAotCX0s IHsKLQkJLm5hbWUgPSAicmlnaHQ6YW1iZXIiLAotCX0sIHsKLQkJLm5hbWUgPSAibGVmdDphbWJl ciIsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb2RfbG9va3VwX3RhYmxlIGRuczMyM2Nf bGVkc19ncGlvX3RhYmxlID0gewotCS5kZXZfaWQgPSAibGVkcy1ncGlvIiwKLQkudGFibGUgPSB7 Ci0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCBETlMzMjNDX0dQSU9fTEVEX1BPV0VS LCBOVUxMLAotCQkJCTAsIEdQSU9fQUNUSVZFX0xPVyksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jp b25fZ3BpbzAiLCBETlMzMjNDX0dQSU9fTEVEX1JJR0hUX0FNQkVSLCBOVUxMLAotCQkJCTEsIEdQ SU9fQUNUSVZFX0xPVyksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCBETlMzMjND X0dQSU9fTEVEX0xFRlRfQU1CRVIsIE5VTEwsCi0JCQkJMiwgR1BJT19BQ1RJVkVfTE9XKSwKLQkJ eyB9LAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IGdwaW9fbGVkX3BsYXRmb3JtX2RhdGEgZG5z MzIzYWJfbGVkX2RhdGEgPSB7Ci0JLm51bV9sZWRzCT0gQVJSQVlfU0laRShkbnMzMjNhYl9sZWRz KSwKLQkubGVkcwkJPSBkbnMzMjNhYl9sZWRzLAotCS5ncGlvX2JsaW5rX3NldCA9IG9yaW9uX2dw aW9fbGVkX2JsaW5rX3NldCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19sZWRfcGxhdGZvcm1f ZGF0YSBkbnMzMjNjX2xlZF9kYXRhID0gewotCS5udW1fbGVkcwk9IEFSUkFZX1NJWkUoZG5zMzIz Y19sZWRzKSwKLQkubGVkcwkJPSBkbnMzMjNjX2xlZHMsCi0JLmdwaW9fYmxpbmtfc2V0ID0gb3Jp b25fZ3Bpb19sZWRfYmxpbmtfc2V0LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgZG5zMzIzX2dwaW9fbGVkcyA9IHsKLQkubmFtZQkJPSAibGVkcy1ncGlvIiwKLQkuaWQJCT0g LTEsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJmRuczMyM2FiX2xlZF9kYXRhLAot CX0sCi19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR1BJTyBBdHRhY2hlZCBLZXlzCi0g Ki8KLQotc3RhdGljIHN0cnVjdCBncGlvX2tleXNfYnV0dG9uIGRuczMyM2FiX2J1dHRvbnNbXSA9 IHsKLQl7Ci0JCS5jb2RlCQk9IEtFWV9SRVNUQVJULAotCQkuZ3BpbwkJPSBETlMzMjNfR1BJT19L RVlfUkVTRVQsCi0JCS5kZXNjCQk9ICJSZXNldCBCdXR0b24iLAotCQkuYWN0aXZlX2xvdwk9IDEs Ci0JfSwgewotCQkuY29kZQkJPSBLRVlfUE9XRVIsCi0JCS5ncGlvCQk9IEROUzMyM19HUElPX0tF WV9QT1dFUiwKLQkJLmRlc2MJCT0gIlBvd2VyIEJ1dHRvbiIsCi0JCS5hY3RpdmVfbG93CT0gMSwK LQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBkbnMzMjNh Yl9idXR0b25fZGF0YSA9IHsKLQkuYnV0dG9ucwk9IGRuczMyM2FiX2J1dHRvbnMsCi0JLm5idXR0 b25zCT0gQVJSQVlfU0laRShkbnMzMjNhYl9idXR0b25zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg Z3Bpb19rZXlzX2J1dHRvbiBkbnMzMjNjX2J1dHRvbnNbXSA9IHsKLQl7Ci0JCS5jb2RlCQk9IEtF WV9QT1dFUiwKLQkJLmdwaW8JCT0gRE5TMzIzQ19HUElPX0tFWV9QT1dFUiwKLQkJLmRlc2MJCT0g IlBvd2VyIEJ1dHRvbiIsCi0JCS5hY3RpdmVfbG93CT0gMSwKLQl9LAotfTsKLQotc3RhdGljIHN0 cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBkbnMzMjNjX2J1dHRvbl9kYXRhID0gewotCS5i dXR0b25zCT0gZG5zMzIzY19idXR0b25zLAotCS5uYnV0dG9ucwk9IEFSUkFZX1NJWkUoZG5zMzIz Y19idXR0b25zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGRuczMyM19i dXR0b25fZGV2aWNlID0gewotCS5uYW1lCQk9ICJncGlvLWtleXMiLAotCS5pZAkJPSAtMSwKLQku bnVtX3Jlc291cmNlcwk9IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJmRuczMy M2FiX2J1dHRvbl9kYXRhLAotCX0sCi19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNB VEEKLSAqLwotc3RhdGljIHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEgZG5zMzIzX3NhdGFf ZGF0YSA9IHsKLSAgICAgICAubl9wb3J0cyAgICAgICAgPSAyLAotfTsKLQotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAqIEdlbmVyYWwgU2V0dXAKLSAqLwotc3RhdGljIHVuc2lnbmVkIGludCBkbnMz MjNhX21wcF9tb2Rlc1tdIF9faW5pdGRhdGEgPSB7Ci0JTVBQMF9QQ0lFX1JTVF9PVVRuLAotCU1Q UDFfR1BJTywJCS8qIHJpZ2h0IGFtYmVyIExFRCAoc2F0YSBjaDApICovCi0JTVBQMl9HUElPLAkJ LyogbGVmdCBhbWJlciBMRUQgKHNhdGEgY2gxKSAqLwotCU1QUDNfVU5VU0VELAotCU1QUDRfR1BJ TywJCS8qIHBvd2VyIGJ1dHRvbiBMRUQgKi8KLQlNUFA1X0dQSU8sCQkvKiBwb3dlciBidXR0b24g TEVEICovCi0JTVBQNl9HUElPLAkJLyogR01UIEc3NTEtMmYgb3ZlcnRlbXAgKi8KLQlNUFA3X0dQ SU8sCQkvKiBNNDFUODAgbklSUS9PVVQvU1FXICovCi0JTVBQOF9HUElPLAkJLyogdHJpZ2dlcnMg cG93ZXIgb2ZmICovCi0JTVBQOV9HUElPLAkJLyogcG93ZXIgYnV0dG9uIHN3aXRjaCAqLwotCU1Q UDEwX0dQSU8sCQkvKiByZXNldCBidXR0b24gc3dpdGNoICovCi0JTVBQMTFfVU5VU0VELAotCU1Q UDEyX1VOVVNFRCwKLQlNUFAxM19VTlVTRUQsCi0JTVBQMTRfVU5VU0VELAotCU1QUDE1X1VOVVNF RCwKLQlNUFAxNl9VTlVTRUQsCi0JTVBQMTdfVU5VU0VELAotCU1QUDE4X1VOVVNFRCwKLQlNUFAx OV9VTlVTRUQsCi0JMCwKLX07Ci0KLXN0YXRpYyB1bnNpZ25lZCBpbnQgZG5zMzIzYl9tcHBfbW9k ZXNbXSBfX2luaXRkYXRhID0gewotCU1QUDBfVU5VU0VELAotCU1QUDFfR1BJTywJCS8qIHJpZ2h0 IGFtYmVyIExFRCAoc2F0YSBjaDApICovCi0JTVBQMl9HUElPLAkJLyogbGVmdCBhbWJlciBMRUQg KHNhdGEgY2gxKSAqLwotCU1QUDNfR1BJTywJCS8qIHN5c3RlbSB1cCBmbGFnICovCi0JTVBQNF9H UElPLAkJLyogcG93ZXIgYnV0dG9uIExFRCAqLwotCU1QUDVfR1BJTywJCS8qIHBvd2VyIGJ1dHRv biBMRUQgKi8KLQlNUFA2X0dQSU8sCQkvKiBHTVQgRzc1MS0yZiBvdmVydGVtcCAqLwotCU1QUDdf R1BJTywJCS8qIE00MVQ4MCBuSVJRL09VVC9TUVcgKi8KLQlNUFA4X0dQSU8sCQkvKiB0cmlnZ2Vy cyBwb3dlciBvZmYgKi8KLQlNUFA5X0dQSU8sCQkvKiBwb3dlciBidXR0b24gc3dpdGNoICovCi0J TVBQMTBfR1BJTywJCS8qIHJlc2V0IGJ1dHRvbiBzd2l0Y2ggKi8KLQlNUFAxMV9VTlVTRUQsCi0J TVBQMTJfU0FUQV9MRUQsCi0JTVBQMTNfU0FUQV9MRUQsCi0JTVBQMTRfU0FUQV9MRUQsCi0JTVBQ MTVfU0FUQV9MRUQsCi0JTVBQMTZfVU5VU0VELAotCU1QUDE3X1VOVVNFRCwKLQlNUFAxOF9VTlVT RUQsCi0JTVBQMTlfVU5VU0VELAotCTAsCi19OwotCi1zdGF0aWMgdW5zaWduZWQgaW50IGRuczMy M2NfbXBwX21vZGVzW10gX19pbml0ZGF0YSA9IHsKLQlNUFAwX0dQSU8sCQkvKiA/IGlucHV0ICov Ci0JTVBQMV9HUElPLAkJLyogaW5wdXQgcG93ZXIgc3dpdGNoICgwID0gcHJlc3NlZCkgKi8KLQlN UFAyX0dQSU8sCQkvKiBvdXRwdXQgcG93ZXIgb2ZmICovCi0JTVBQM19VTlVTRUQsCQkvKiA/IG91 dHB1dCAqLwotCU1QUDRfVU5VU0VELAkJLyogPyBvdXRwdXQgKi8KLQlNUFA1X1VOVVNFRCwJCS8q ID8gb3V0cHV0ICovCi0JTVBQNl9VTlVTRUQsCQkvKiA/IG91dHB1dCAqLwotCU1QUDdfVU5VU0VE LAkJLyogPyBvdXRwdXQgKi8KLQlNUFA4X0dQSU8sCQkvKiBpL28gcmlnaHQgYW1iZXIgTEVEICov Ci0JTVBQOV9HUElPLAkJLyogaS9vIGxlZnQgYW1iZXIgTEVEICovCi0JTVBQMTBfR1BJTywJCS8q IGlucHV0ICovCi0JTVBQMTFfVU5VU0VELAotCU1QUDEyX1NBVEFfTEVELAotCU1QUDEzX1NBVEFf TEVELAotCU1QUDE0X1NBVEFfTEVELAotCU1QUDE1X1NBVEFfTEVELAotCU1QUDE2X1VOVVNFRCwK LQlNUFAxN19HUElPLAkJLyogcG93ZXIgYnV0dG9uIExFRCAqLwotCU1QUDE4X0dQSU8sCQkvKiBm YW4gc3BlZWQgYml0IDAgKi8KLQlNUFAxOV9HUElPLAkJLyogZmFuIHNwZWVkIGJpdCAxICovCi0J MCwKLX07Ci0KLS8qIFJldiBDMSBGYW4gc3BlZWQgbm90ZXM6Ci0gKgotICogVGhlIGZhbiBpcyBj b250cm9sbGVkIGJ5IDIgR1BJT3Mgb24gdGhpcyBib2FyZC4gVGhlIHNldHRpbmdzCi0gKiBvZiB0 aGUgYml0cyBpcyBhcyBmb2xsb3c6Ci0gKgotICogIEdQSU8gMTggICAgR1BJTyAxOSAgICBGYW4K LSAqCi0gKiAgICAwICAgICAgICAgIDAgICAgICAgIHN0b3BwZWQKLSAqICAgIDAgICAgICAgICAg MSAgICAgICAgbG93IHNwZWVkCi0gKiAgICAxICAgICAgICAgIDAgICAgICAgIGhpZ2ggc3BlZWQK LSAqICAgIDEgICAgICAgICAgMSAgICAgICAgZG9uJ3QgZG8gdGhhdCAoKikKLSAqCi0gKiAoKikg SSB0aGluayB0aGUgdHdvIGJpdHMgY29udHJvbCB0d28gZmVlZC1pbiByZXNpc3RvcnMgaW50byBh IGZpeGVkCi0gKiAgICAgUFdOIGNpcmN1aXQsIHNldHRpbmcgYm90aCBiaXRzIHdpbGwgYmFzaWNh bGx5IGdvIGEgJ2JpdCcgZmFzdGVyCi0gKiAgICAgdGhhbiBoaWdoIHNwZWVkLCBidXQgZC1saW5r IGRvZXNuJ3QgZG8gaXQgYW5kIHlvdSBtYXkgZ2V0IG91dCBvZgotICogICAgIEhXIHNwZWMgc28g ZG9uJ3QgZG8gaXQuCi0gKi8KLQotLyoKLSAqIE9uIHRoZSBETlMtMzIzIEExIGFuZCBCMSB0aGUg Zm9sbG93aW5nIGRldmljZXMgYXJlIGF0dGFjaGVkIHZpYSBJMkM6Ci0gKgotICogIGkyYyBhZGRy IHwgY2hpcCAgICAgICAgfCBkZXNjcmlwdGlvbgotICogIDB4M2UgICAgIHwgR01UIEc3NjBBZiAg fCBmYW4gc3BlZWQgUFdNIGNvbnRyb2xsZXIKLSAqICAweDQ4ICAgICB8IEdNVCBHNzUxLTJmIHwg dGVtcC4gc2Vuc29yIGFuZCB0aGVybS4gd2F0Y2hkb2cgKExNNzUgY29tcGF0aWJsZSkKLSAqICAw eDY4ICAgICB8IFNUIE00MVQ4MCAgIHwgUlRDIHcvIGFsYXJtCi0gKi8KLXN0YXRpYyBzdHJ1Y3Qg aTJjX2JvYXJkX2luZm8gX19pbml0ZGF0YSBkbnMzMjNhYl9pMmNfZGV2aWNlc1tdID0gewotCXsK LQkJSTJDX0JPQVJEX0lORk8oImc3NjBhIiwgMHgzZSksCi0JfSwgewotCQlJMkNfQk9BUkRfSU5G TygibG03NSIsIDB4NDgpLAotCX0sIHsKLQkJSTJDX0JPQVJEX0lORk8oIm00MXQ4MCIsIDB4Njgp LAotCX0sCi19OwotCi0vKgotICogT24gdGhlIEROUy0zMjMgQzEgdGhlIGZvbGxvd2luZyBkZXZp Y2VzIGFyZSBhdHRhY2hlZCB2aWEgSTJDOgotICoKLSAqICBpMmMgYWRkciB8IGNoaXAgICAgICAg IHwgZGVzY3JpcHRpb24KLSAqICAweDQ4ICAgICB8IEdNVCBHNzUxLTJmIHwgdGVtcC4gc2Vuc29y IGFuZCB0aGVybS4gd2F0Y2hkb2cgKExNNzUgY29tcGF0aWJsZSkKLSAqICAweDY4ICAgICB8IFNU IE00MVQ4MCAgIHwgUlRDIHcvIGFsYXJtCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2lu Zm8gX19pbml0ZGF0YSBkbnMzMjNjX2kyY19kZXZpY2VzW10gPSB7Ci0JewotCQlJMkNfQk9BUkRf SU5GTygibG03NSIsIDB4NDgpLAotCX0sIHsKLQkJSTJDX0JPQVJEX0lORk8oIm00MXQ4MCIsIDB4 NjgpLAotCX0sCi19OwotCi0vKiBETlMtMzIzIHJldi4gQSBzcGVjaWZpYyBwb3dlciBvZmYgbWV0 aG9kICovCi1zdGF0aWMgdm9pZCBkbnMzMjNhX3Bvd2VyX29mZih2b2lkKQotewotCXByX2luZm8o IkROUy0zMjM6IFRyaWdnZXJpbmcgcG93ZXItb2ZmLi4uXG4iKTsKLQlncGlvX3NldF92YWx1ZShE TlMzMjNfR1BJT19QT1dFUl9PRkYsIDEpOwotfQotCi0vKiBETlMtMzIzIHJldiBCIHNwZWNpZmlj IHBvd2VyIG9mZiBtZXRob2QgKi8KLXN0YXRpYyB2b2lkIGRuczMyM2JfcG93ZXJfb2ZmKHZvaWQp Ci17Ci0JcHJfaW5mbygiRE5TLTMyMzogVHJpZ2dlcmluZyBwb3dlci1vZmYuLi5cbiIpOwotCS8q IFBpbiBoYXMgdG8gYmUgY2hhbmdlZCB0byAxIGFuZCBiYWNrIHRvIDAgdG8gZG8gYWN0dWFsIHBv d2VyIG9mZi4gKi8KLQlncGlvX3NldF92YWx1ZShETlMzMjNfR1BJT19QT1dFUl9PRkYsIDEpOwot CW1kZWxheSgxMDApOwotCWdwaW9fc2V0X3ZhbHVlKEROUzMyM19HUElPX1BPV0VSX09GRiwgMCk7 Ci19Ci0KLS8qIEROUy0zMjMgcmV2LiBDIHNwZWNpZmljIHBvd2VyIG9mZiBtZXRob2QgKi8KLXN0 YXRpYyB2b2lkIGRuczMyM2NfcG93ZXJfb2ZmKHZvaWQpCi17Ci0JcHJfaW5mbygiRE5TLTMyMzog VHJpZ2dlcmluZyBwb3dlci1vZmYuLi5cbiIpOwotCWdwaW9fc2V0X3ZhbHVlKEROUzMyM0NfR1BJ T19QT1dFUl9PRkYsIDEpOwotfQotCi1zdGF0aWMgaW50IGRuczMyM2NfcGh5X2ZpeHVwKHN0cnVj dCBwaHlfZGV2aWNlICpwaHkpCi17Ci0JcGh5LT5kZXZfZmxhZ3MgfD0gTUFSVkVMTF9QSFlfTTEx MThfRE5TMzIzX0xFRFM7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBfX2luaXQgZG5z MzIzX2lkZW50aWZ5X3Jldih2b2lkKQotewotCXUzMiBkZXYsIHJldiwgaSwgcmVnOwotCi0JcHJf ZGVidWcoIkROUy0zMjM6IElkZW50aWZ5aW5nIGJvYXJkIC4uLiBcbiIpOwotCi0JLyogUmV2IEEx IGhhcyBhIDUxODEgKi8KLQlvcmlvbjV4X3BjaWVfaWQoJmRldiwgJnJldik7Ci0JaWYgKGRldiA9 PSBNVjg4RjUxODFfREVWX0lEKSB7Ci0JCXByX2RlYnVnKCJETlMtMzIzOiA1MTgxIGZvdW5kLCBi b2FyZCBpcyBBMVxuIik7Ci0JCXJldHVybiBETlMzMjNfUkVWX0ExOwotCX0KLQlwcl9kZWJ1Zygi RE5TLTMyMzogNTE4MiBmb3VuZCwgYm9hcmQgaXMgQjEgb3IgQzEsIGNoZWNraW5nIFBIWS4uLlxu Iik7Ci0KLQkvKiBSZXYgQjEgYW5kIEMxIGJvdGggaGF2ZSA1MTgyLCBsZXQncyBwb2tlIGF0IHRo ZSBldGggUEhZLiBUaGlzIGlzCi0JICogYSBiaXQgZ3Jvc3MgYnV0IHdlIHdhbnQgdG8gZG8gdGhh dCB3aXRob3V0IGxpbmtzIGludG8gdGhlIGV0aAotCSAqIGRyaXZlciBzbyBsZXQncyBwb2tlIGF0 IGl0IGRpcmVjdGx5LiBXZSBkZWZhdWx0IHRvIHJldiBCMSBpbgotCSAqIGNhc2UgdGhlIGFjY2Vz c2VzIGZhaWwKLQkgKi8KLQotI2RlZmluZSBFVEhfU01JX1JFRwkJKE9SSU9ONVhfRVRIX1ZJUlRf QkFTRSArIDB4MjAwMCArIDB4MDA0KQotI2RlZmluZSAgU01JX0JVU1kJCTB4MTAwMDAwMDAKLSNk ZWZpbmUgIFNNSV9SRUFEX1ZBTElECQkweDA4MDAwMDAwCi0jZGVmaW5lICBTTUlfT1BDT0RFX1JF QUQJMHgwNDAwMDAwMAotI2RlZmluZSAgU01JX09QQ09ERV9XUklURQkweDAwMDAwMDAwCi0KLQlm b3IgKGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0JCXJlZyA9IHJlYWRsKEVUSF9TTUlfUkVHKTsK LQkJaWYgKCEocmVnICYgU01JX0JVU1kpKQotCQkJYnJlYWs7Ci0JfQotCWlmIChpID49IDEwMDAp IHsKLQkJcHJfd2FybigiRE5TLTMyMzogVGltZW91dCBhY2Nlc3NpbmcgUEhZLCBhc3N1bWluZyBy ZXYgQjFcbiIpOwotCQlyZXR1cm4gRE5TMzIzX1JFVl9CMTsKLQl9Ci0Jd3JpdGVsKCgzIDw8IDIx KQkvKiBwaHkgSUQgcmVnICovIHwKLQkgICAgICAgKDggPDwgMTYpCS8qIHBoeSBhZGRyICovIHwK LQkgICAgICAgU01JX09QQ09ERV9SRUFELCBFVEhfU01JX1JFRyk7Ci0JZm9yIChpID0gMDsgaSA8 IDEwMDA7IGkrKykgewotCQlyZWcgPSByZWFkbChFVEhfU01JX1JFRyk7Ci0JCWlmIChyZWcgJiBT TUlfUkVBRF9WQUxJRCkKLQkJCWJyZWFrOwotCX0KLQlpZiAoaSA+PSAxMDAwKSB7Ci0JCXByX3dh cm4oIkROUy0zMjM6IFRpbWVvdXQgcmVhZGluZyBQSFksIGFzc3VtaW5nIHJldiBCMVxuIik7Ci0J CXJldHVybiBETlMzMjNfUkVWX0IxOwotCX0KLQlwcl9kZWJ1ZygiRE5TLTMyMzogRXRoZXJuZXQg UEhZIElEIDB4JXhcbiIsIHJlZyAmIDB4ZmZmZik7Ci0KLQkvKiBOb3RlOiB0aGUgTWFydmVsbCB0 b29scyBtYXNrIHRoZSBJRCB3aXRoIDB4M2YwIGJlZm9yZSBjb21wYXJpc29uCi0JICogYnV0IEkg ZG9uJ3Qgc2VlIHRoYXQgbWFraW5nIGEgZGlmZmVyZW5jZSBoZXJlLCBhdCBsZWFzdCB3aXRoCi0J ICogYW55IGtub3duIE1hcnZlbGwgUEhZIElECi0JICovCi0Jc3dpdGNoKHJlZyAmIDB4ZmZmMCkg ewotCWNhc2UgMHgwY2MwOiAvKiBNVjg4RTExMTEgKi8KLQkJcmV0dXJuIEROUzMyM19SRVZfQjE7 Ci0JY2FzZSAweDBlMTA6IC8qIE1WODhFMTExOCAqLwotCQlyZXR1cm4gRE5TMzIzX1JFVl9DMTsK LQlkZWZhdWx0OgotCQlwcl93YXJuKCJETlMtMzIzOiBVbmtub3duIFBIWSBJRCAweCUwNHgsIGFz c3VtaW5nIHJldiBCMVxuIiwKLQkJCXJlZyAmIDB4ZmZmZik7Ci0JfQotCXJldHVybiBETlMzMjNf UkVWX0IxOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgZG5zMzIzX2luaXQodm9pZCkKLXsKLQkv KiBTZXR1cCBiYXNpYyBPcmlvbiBmdW5jdGlvbnMuIE5lZWQgdG8gYmUgY2FsbGVkIGVhcmx5LiAq LwotCW9yaW9uNXhfaW5pdCgpOwotCi0JLyogSWRlbnRpZnkgcmV2aXNpb24gKi8KLQlzeXN0ZW1f cmV2ID0gZG5zMzIzX2lkZW50aWZ5X3JldigpOwotCXByX2luZm8oIkROUy0zMjM6IElkZW50aWZp ZWQgSFcgcmV2aXNpb24gJWMxXG4iLCAnQScgKyBzeXN0ZW1fcmV2KTsKLQotCS8qIEp1c3QgdG8g YmUgdHJpY2t5LCB0aGUgNTE4MiBoYXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudAotCSAqIHNldCBv ZiBNUFAgbW9kZXMgdG8gdGhlIDUxODEuCi0JICovCi0Jc3dpdGNoKHN5c3RlbV9yZXYpIHsKLQlj YXNlIEROUzMyM19SRVZfQTE6Ci0JCW9yaW9uNXhfbXBwX2NvbmYoZG5zMzIzYV9tcHBfbW9kZXMp OwotCQl3cml0ZWwoMCwgTVBQX0RFVl9DVFJMKTsJCS8qIERFVl9EWzMxOjE2XSAqLwotCQlicmVh azsKLQljYXNlIEROUzMyM19SRVZfQjE6Ci0JCW9yaW9uNXhfbXBwX2NvbmYoZG5zMzIzYl9tcHBf bW9kZXMpOwotCQlicmVhazsKLQljYXNlIEROUzMyM19SRVZfQzE6Ci0JCW9yaW9uNXhfbXBwX2Nv bmYoZG5zMzIzY19tcHBfbW9kZXMpOwotCQlicmVhazsKLQl9Ci0KLQkvKiBzZXR1cCBmbGFzaCBt YXBwaW5nCi0JICogQ1MzIGhvbGRzIGEgOCBNQiBTcGFuc2lvbiBTMjlHTDA2NE05MFRGSVI0Ci0J ICovCi0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKE9SSU9OX01CVVNfREVWQlVTX0JPT1Rf VEFSR0VULAotCQkJCSAgICBPUklPTl9NQlVTX0RFVkJVU19CT09UX0FUVFIsCi0JCQkJICAgIERO UzMyM19OT1JfQk9PVF9CQVNFLAotCQkJCSAgICBETlMzMjNfTk9SX0JPT1RfU0laRSk7Ci0JcGxh dGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZkbnMzMjNfbm9yX2ZsYXNoKTsKLQotCS8qIFNvcnQgb3V0 IExFRHMsIEJ1dHRvbnMgYW5kIGkyYyBkZXZpY2VzICovCi0Jc3dpdGNoKHN5c3RlbV9yZXYpIHsK LQljYXNlIEROUzMyM19SRVZfQTE6Ci0JCS8qIFRoZSA1MTgxIHBvd2VyIExFRCBpcyBhY3RpdmUg bG93IGFuZCByZXF1aXJlcwotCQkgKiBETlMzMjNfR1BJT19MRURfUE9XRVIxIHRvIGFsc28gYmUg bG93LgotCQkgKi8KLQkJZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgmZG5zMzIzYTFfbGVkc19ncGlv X3RhYmxlKTsKLQkJZ3Bpb19yZXF1ZXN0KEROUzMyM19HUElPX0xFRF9QT1dFUjEsICJQb3dlciBM ZWQgRW5hYmxlIik7Ci0JCWdwaW9fZGlyZWN0aW9uX291dHB1dChETlMzMjNfR1BJT19MRURfUE9X RVIxLCAwKTsKLQkJaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwgZG5zMzIzYWJfaTJjX2Rldmlj ZXMsCi0JCQkJCUFSUkFZX1NJWkUoZG5zMzIzYWJfaTJjX2RldmljZXMpKTsKLQotCQlicmVhazsK LQljYXNlIEROUzMyM19SRVZfQjE6Ci0JCWdwaW9kX2FkZF9sb29rdXBfdGFibGUoJmRuczMyM2Ix X2xlZHNfZ3Bpb190YWJsZSk7Ci0JCWkyY19yZWdpc3Rlcl9ib2FyZF9pbmZvKDAsIGRuczMyM2Fi X2kyY19kZXZpY2VzLAotCQkJCUFSUkFZX1NJWkUoZG5zMzIzYWJfaTJjX2RldmljZXMpKTsKLQkJ YnJlYWs7Ci0JY2FzZSBETlMzMjNfUkVWX0MxOgotCQkvKiBIb29rdXAgTEVEcyAmIEJ1dHRvbnMg Ki8KLQkJZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgmZG5zMzIzY19sZWRzX2dwaW9fdGFibGUpOwot CQlkbnMzMjNfZ3Bpb19sZWRzLmRldi5wbGF0Zm9ybV9kYXRhID0gJmRuczMyM2NfbGVkX2RhdGE7 Ci0JCWRuczMyM19idXR0b25fZGV2aWNlLmRldi5wbGF0Zm9ybV9kYXRhID0gJmRuczMyM2NfYnV0 dG9uX2RhdGE7Ci0KLQkJLyogSG9va3VwIGkyYyBkZXZpY2VzIGFuZCBmYW4gZHJpdmVyICovCi0J CWkyY19yZWdpc3Rlcl9ib2FyZF9pbmZvKDAsIGRuczMyM2NfaTJjX2RldmljZXMsCi0JCQkJQVJS QVlfU0laRShkbnMzMjNjX2kyY19kZXZpY2VzKSk7Ci0JCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cl9zaW1wbGUoImRuczMyM2MtZmFuIiwgMCwgTlVMTCwgMCk7Ci0KLQkJLyogUmVnaXN0ZXIgZml4 dXAgZm9yIHRoZSBQSFkgTEVEcyAqLwotCQlpZiAoIUlTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikp Ci0JCQlicmVhazsKLQkJcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoTUFSVkVMTF9QSFlfSURf ODhFMTExOCwKLQkJCQkJICAgTUFSVkVMTF9QSFlfSURfTUFTSywKLQkJCQkJICAgZG5zMzIzY19w aHlfZml4dXApOwotCX0KLQotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmZG5zMzIzX2dwaW9f bGVkcyk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZkbnMzMjNfYnV0dG9uX2RldmljZSk7 Ci0KLQkvKgotCSAqIENvbmZpZ3VyZSBwZXJpcGhlcmFscy4KLQkgKi8KLQlpZiAoZG5zMzIzX3Jl YWRfbWFjX2FkZHIoKSA8IDApCi0JCXByaW50aygiRE5TLTMyMzogRmFpbGVkIHRvIHJlYWQgTUFD IGFkZHJlc3NcbiIpOwotCW9yaW9uNXhfZWhjaTBfaW5pdCgpOwotCW9yaW9uNXhfZXRoX2luaXQo JmRuczMyM19ldGhfZGF0YSk7Ci0Jb3Jpb241eF9pMmNfaW5pdCgpOwotCW9yaW9uNXhfdWFydDBf aW5pdCgpOwotCi0JLyogUmVtYWluaW5nIEdQSU9zICovCi0Jc3dpdGNoKHN5c3RlbV9yZXYpIHsK LQljYXNlIEROUzMyM19SRVZfQTE6Ci0JCS8qIFBvd2Vyb2ZmIEdQSU8gKi8KLQkJaWYgKGdwaW9f cmVxdWVzdChETlMzMjNfR1BJT19QT1dFUl9PRkYsICJQT1dFUk9GRiIpICE9IDAgfHwKLQkJICAg IGdwaW9fZGlyZWN0aW9uX291dHB1dChETlMzMjNfR1BJT19QT1dFUl9PRkYsIDApICE9IDApCi0J CQlwcl9lcnIoIkROUy0zMjM6IGZhaWxlZCB0byBzZXR1cCBwb3dlci1vZmYgR1BJT1xuIik7Ci0J CXJlZ2lzdGVyX3BsYXRmb3JtX3Bvd2VyX29mZihkbnMzMjNhX3Bvd2VyX29mZik7Ci0JCWJyZWFr OwotCWNhc2UgRE5TMzIzX1JFVl9CMToKLQkJLyogNTE4MiBidWlsdC1pbiBTQVRBIGluaXQgKi8K LQkJb3Jpb241eF9zYXRhX2luaXQoJmRuczMyM19zYXRhX2RhdGEpOwotCi0JCS8qIFRoZSBETlMz MjMgcmV2IEIxIGhhcyBmbGFnIHRvIGluZGljYXRlIHRoZSBzeXN0ZW0gaXMgdXAuCi0JCSAqIFdp dGhvdXQgdGhpcyBmbGFnIHNldCwgcG93ZXIgTEVEIHdpbGwgZmxhc2ggYW5kIGNhbm5vdCBiZQot CQkgKiBjb250cm9sbGVkIHZpYSBsZWRzLWdwaW8uCi0JCSAqLwotCQlpZiAoZ3Bpb19yZXF1ZXN0 KEROUzMyM19HUElPX1NZU1RFTV9VUCwgIlNZU19SRUFEWSIpID09IDApCi0JCQlncGlvX2RpcmVj dGlvbl9vdXRwdXQoRE5TMzIzX0dQSU9fU1lTVEVNX1VQLCAxKTsKLQotCQkvKiBQb3dlcm9mZiBH UElPICovCi0JCWlmIChncGlvX3JlcXVlc3QoRE5TMzIzX0dQSU9fUE9XRVJfT0ZGLCAiUE9XRVJP RkYiKSAhPSAwIHx8Ci0JCSAgICBncGlvX2RpcmVjdGlvbl9vdXRwdXQoRE5TMzIzX0dQSU9fUE9X RVJfT0ZGLCAwKSAhPSAwKQotCQkJcHJfZXJyKCJETlMtMzIzOiBmYWlsZWQgdG8gc2V0dXAgcG93 ZXItb2ZmIEdQSU9cbiIpOwotCQlyZWdpc3Rlcl9wbGF0Zm9ybV9wb3dlcl9vZmYoZG5zMzIzYl9w b3dlcl9vZmYpOwotCQlicmVhazsKLQljYXNlIEROUzMyM19SRVZfQzE6Ci0JCS8qIDUxODIgYnVp bHQtaW4gU0FUQSBpbml0ICovCi0JCW9yaW9uNXhfc2F0YV9pbml0KCZkbnMzMjNfc2F0YV9kYXRh KTsKLQotCQkvKiBQb3dlcm9mZiBHUElPICovCi0JCWlmIChncGlvX3JlcXVlc3QoRE5TMzIzQ19H UElPX1BPV0VSX09GRiwgIlBPV0VST0ZGIikgIT0gMCB8fAotCQkgICAgZ3Bpb19kaXJlY3Rpb25f b3V0cHV0KEROUzMyM0NfR1BJT19QT1dFUl9PRkYsIDApICE9IDApCi0JCQlwcl9lcnIoIkROUy0z MjM6IGZhaWxlZCB0byBzZXR1cCBwb3dlci1vZmYgR1BJT1xuIik7Ci0JCXJlZ2lzdGVyX3BsYXRm b3JtX3Bvd2VyX29mZihkbnMzMjNjX3Bvd2VyX29mZik7Ci0KLQkJLyogTm93LCAtdGhpcy0gc2hv dWxkIHRoZW9yZXRpY2FsbHkgYmUgZG9uZSBieSB0aGUgc2F0YV9tdiBkcml2ZXIKLQkJICogb25j ZSBJIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiBNYXliZSB0aGUgYmVoYXZpb3Vy Ci0JCSAqIG9mIHRoZSBMRURzIHNob3VsZCBiZSBzb21ld2hhdCBwYXNzZWQgdmlhIHRoZSBwbGF0 Zm9ybV9kYXRhLgotCQkgKiBmb3Igbm93LCBqdXN0IHdoYWNrIHRoZSByZWdpc3RlciBhbmQgbWFr ZSB0aGUgTEVEcyBoYXBweQotCQkgKgotCQkgKiBOb3RlOiBBRkFJSywgcmV2IEIxIG5lZWRzIHRo ZSBzYW1lIHRyZWF0bWVudCBidXQgSSdsbCBsZXQKLQkJICogc29tZWJvZHkgZWxzZSB0ZXN0IGl0 LgotCQkgKi8KLQkJd3JpdGVsKDB4NSwgT1JJT041WF9TQVRBX1ZJUlRfQkFTRSArIDB4MmMpOwot CQlicmVhazsKLQl9Ci19Ci0KLS8qIFdhcm5pbmc6IEQtTGluayB1c2VzIGEgd3JvbmcgbWFjaC10 eXBlICg9NTI2KSBpbiB0aGVpciBib290bG9hZGVyICovCi1NQUNISU5FX1NUQVJUKEROUzMyMywg IkQtTGluayBETlMtMzIzIikKLQkvKiBNYWludGFpbmVyOiBIZXJiZXJ0IFZhbGVyaW8gUmllZGVs IDxodnJAZ251Lm9yZz4gKi8KLQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IE9S SU9ONVhfTlJfSVJRUywKLQkuaW5pdF9tYWNoaW5lCT0gZG5zMzIzX2luaXQsCi0JLm1hcF9pbwkJ PSBvcmlvbjV4X21hcF9pbywKLQkuaW5pdF9lYXJseQk9IG9yaW9uNXhfaW5pdF9lYXJseSwKLQku aW5pdF9pcnEJPSBvcmlvbjV4X2luaXRfaXJxLAotCS5pbml0X3RpbWUJPSBvcmlvbjV4X3RpbWVy X2luaXQsCi0JLmZpeHVwCQk9IHRhZ19maXh1cF9tZW0zMiwKLQkucmVzdGFydAk9IG9yaW9uNXhf cmVzdGFydCwKLU1BQ0hJTkVfRU5ECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgv a3Vyb2JveF9wcm8tc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9rdXJvYm94X3Byby1z ZXR1cC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjFiOWFiMDY5NDMuLjAwMDAw MDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgva3Vyb2JveF9wcm8tc2V0dXAuYwor KysgL2Rldi9udWxsCkBAIC0xLDQwNyArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2t1cm9ib3hfcHJv LXNldHVwLmMKLSAqCi0gKiBNYWludGFpbmVyOiBSb25lbiBTaGl0cml0IDxyc2hpdHJpdEBtYXJ2 ZWxsLmNvbT4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KLSNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvcGNpLmg+Ci0jaW5jbHVkZSA8 bGludXgvaXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9t dGQvcGh5c21hcC5oPgotI2luY2x1ZGUgPGxpbnV4L210ZC9yYXduYW5kLmg+Ci0jaW5jbHVkZSA8 bGludXgvbXY2NDN4eF9ldGguaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxs aW51eC9zZXJpYWxfcmVnLmg+Ci0jaW5jbHVkZSA8bGludXgvYXRhX3BsYXRmb3JtLmg+Ci0jaW5j bHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5j bHVkZSA8YXNtL21hY2gvcGNpLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS9tdGQt b3Jpb25fbmFuZC5oPgotI2luY2x1ZGUgImNvbW1vbi5oIgotI2luY2x1ZGUgIm1wcC5oIgotI2lu Y2x1ZGUgIm9yaW9uNXguaCIKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBLVVJPQk9YLVBS TyBJbmZvCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIDI1NksgTk9SIGZsYXNoIERl dmljZSBidXMgYm9vdCBjaGlwIHNlbGVjdAotICovCi0KLSNkZWZpbmUgS1VST0JPWF9QUk9fTk9S X0JPT1RfQkFTRQkweGY0MDAwMDAwCi0jZGVmaW5lIEtVUk9CT1hfUFJPX05PUl9CT09UX1NJWkUJ U1pfMjU2SwotCi0vKgotICogMjU2TSBOQU5EIGZsYXNoIG9uIERldmljZSBidXMgY2hpcCBzZWxl Y3QgMQotICovCi0KLSNkZWZpbmUgS1VST0JPWF9QUk9fTkFORF9CQVNFCQkweGZjMDAwMDAwCi0j ZGVmaW5lIEtVUk9CT1hfUFJPX05BTkRfU0laRQkJU1pfMk0KLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiAyNTZNQiBOQU5EIEZsYXNoIG9uIERldmljZSBidXMgQ1MwCi0gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KLQotc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIGt1cm9ib3hfcHJvX25hbmRf cGFydHNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gInVJbWFnZSIsCi0JCS5vZmZzZXQJPSAwLAotCQku c2l6ZQk9IFNaXzRNLAotCX0sIHsKLQkJLm5hbWUJPSAicm9vdGZzIiwKLQkJLm9mZnNldAk9IFNa XzRNLAotCQkuc2l6ZQk9IFNaXzY0TSwKLQl9LCB7Ci0JCS5uYW1lCT0gImV4dHJhIiwKLQkJLm9m ZnNldAk9IFNaXzRNICsgU1pfNjRNLAotCQkuc2l6ZQk9IFNaXzI1Nk0gLSAoU1pfNE0gKyBTWl82 NE0pLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIGt1cm9ib3hfcHJvX25hbmRf cmVzb3VyY2UgPSB7Ci0JLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAotCS5zdGFydAkJPSBLVVJP Qk9YX1BST19OQU5EX0JBU0UsCi0JLmVuZAkJPSBLVVJPQk9YX1BST19OQU5EX0JBU0UgKyBLVVJP Qk9YX1BST19OQU5EX1NJWkUgLSAxLAotfTsKLQotc3RhdGljIHN0cnVjdCBvcmlvbl9uYW5kX2Rh dGEga3Vyb2JveF9wcm9fbmFuZF9kYXRhID0gewotCS5wYXJ0cwkJPSBrdXJvYm94X3Byb19uYW5k X3BhcnRzLAotCS5ucl9wYXJ0cwk9IEFSUkFZX1NJWkUoa3Vyb2JveF9wcm9fbmFuZF9wYXJ0cyks Ci0JLmNsZQkJPSAwLAotCS5hbGUJCT0gMSwKLQkud2lkdGgJCT0gOCwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGt1cm9ib3hfcHJvX25hbmRfZmxhc2ggPSB7Ci0JLm5hbWUJ CT0gIm9yaW9uX25hbmQiLAotCS5pZAkJPSAtMSwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2Rh dGEJPSAma3Vyb2JveF9wcm9fbmFuZF9kYXRhLAotCX0sCi0JLnJlc291cmNlCT0gJmt1cm9ib3hf cHJvX25hbmRfcmVzb3VyY2UsCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotfTsKLQotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0gKiAyNTZLQiBOT1IgRmxhc2ggb24gQk9PVCBEZXZpY2UKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotCi1zdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSBrdXJvYm94 X3Byb19ub3JfZmxhc2hfZGF0YSA9IHsKLQkud2lkdGgJCT0gMSwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgcmVzb3VyY2Uga3Vyb2JveF9wcm9fbm9yX2ZsYXNoX3Jlc291cmNlID0gewotCS5mbGFncwkJ CT0gSU9SRVNPVVJDRV9NRU0sCi0JLnN0YXJ0CQkJPSBLVVJPQk9YX1BST19OT1JfQk9PVF9CQVNF LAotCS5lbmQJCQk9IEtVUk9CT1hfUFJPX05PUl9CT09UX0JBU0UgKyBLVVJPQk9YX1BST19OT1Jf Qk9PVF9TSVpFIC0gMSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGt1cm9i b3hfcHJvX25vcl9mbGFzaCA9IHsKLQkubmFtZQkJCT0gInBoeXNtYXAtZmxhc2giLAotCS5pZAkJ CT0gMCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAma3Vyb2JveF9wcm9fbm9yX2Zs YXNoX2RhdGEsCi0JfSwKLQkubnVtX3Jlc291cmNlcwkJPSAxLAotCS5yZXNvdXJjZQkJPSAma3Vy b2JveF9wcm9fbm9yX2ZsYXNoX3Jlc291cmNlLAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBQQ0kKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgaW50IF9faW5pdCBrdXJv Ym94X3Byb19wY2lfbWFwX2lycShjb25zdCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1OCBzbG90LAot CXU4IHBpbikKLXsKLQlpbnQgaXJxOwotCi0JLyoKLQkgKiBDaGVjayBmb3IgZGV2aWNlcyB3aXRo IGhhcmQtd2lyZWQgSVJRcy4KLQkgKi8KLQlpcnEgPSBvcmlvbjV4X3BjaV9tYXBfaXJxKGRldiwg c2xvdCwgcGluKTsKLQlpZiAoaXJxICE9IC0xKQotCQlyZXR1cm4gaXJxOwotCi0JLyoKLQkgKiBQ Q0kgaXNuJ3QgdXNlZCBvbiB0aGUgS3VybwotCSAqLwotCXJldHVybiAtMTsKLX0KLQotc3RhdGlj IHN0cnVjdCBod19wY2kga3Vyb2JveF9wcm9fcGNpIF9faW5pdGRhdGEgPSB7Ci0JLm5yX2NvbnRy b2xsZXJzCT0gMiwKLQkuc2V0dXAJCT0gb3Jpb241eF9wY2lfc3lzX3NldHVwLAotCS5zY2FuCQk9 IG9yaW9uNXhfcGNpX3N5c19zY2FuX2J1cywKLQkubWFwX2lycQk9IGt1cm9ib3hfcHJvX3BjaV9t YXBfaXJxLAotfTsKLQotc3RhdGljIGludCBfX2luaXQga3Vyb2JveF9wcm9fcGNpX2luaXQodm9p ZCkKLXsKLQlpZiAobWFjaGluZV9pc19rdXJvYm94X3BybygpKSB7Ci0JCW9yaW9uNXhfcGNpX2Rp c2FibGUoKTsKLQkJcGNpX2NvbW1vbl9pbml0KCZrdXJvYm94X3Byb19wY2kpOwotCX0KLQotCXJl dHVybiAwOwotfQotCi1zdWJzeXNfaW5pdGNhbGwoa3Vyb2JveF9wcm9fcGNpX2luaXQpOwotCi0v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAqIEV0aGVybmV0Ci0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LQotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhIGt1cm9ib3hfcHJvX2V0 aF9kYXRhID0gewotCS5waHlfYWRkcgk9IE1WNjQzWFhfRVRIX1BIWV9BRERSKDgpLAotfTsKLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiBSVEMgNUMzNzJhIG9uIEkyQyBidXMKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRkYXRhIGt1 cm9ib3hfcHJvX2kyY19ydGMgPSB7Ci0JSTJDX0JPQVJEX0lORk8oInJzNWMzNzJhIiwgMHgzMiks Ci19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNBVEEKLSAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotc3RhdGljIHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEga3Vyb2JveF9wcm9fc2F0 YV9kYXRhID0gewotCS5uX3BvcnRzCT0gMiwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICogS3Vyb2JveCBQcm8gc3BlY2lmaWMgcG93ZXIgb2ZmIG1ldGhvZCB2aWEgVUFSVDEtYXR0YWNo ZWQgbWljcm9jb250cm9sbGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2RlZmluZSBVQVJU MV9SRUcoeCkJKFVBUlQxX1ZJUlRfQkFTRSArICgoVUFSVF8jI3gpIDw8IDIpKQotCi1zdGF0aWMg aW50IGt1cm9ib3hfcHJvX21pY29ucmVhZCh1bnNpZ25lZCBjaGFyICpidWYsIGludCBjb3VudCkK LXsKLQlpbnQgaTsKLQlpbnQgdGltZW91dDsKLQotCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsr KSB7Ci0JCXRpbWVvdXQgPSAxMDsKLQotCQl3aGlsZSAoIShyZWFkbChVQVJUMV9SRUcoTFNSKSkg JiBVQVJUX0xTUl9EUikpIHsKLQkJCWlmICgtLXRpbWVvdXQgPT0gMCkKLQkJCQlicmVhazsKLQkJ CXVkZWxheSgxMDAwKTsKLQkJfQotCi0JCWlmICh0aW1lb3V0ID09IDApCi0JCQlicmVhazsKLQkJ YnVmW2ldID0gcmVhZGwoVUFSVDFfUkVHKFJYKSk7Ci0JfQotCi0JLyogcmV0dXJuIHJlYWQgYnl0 ZXMgKi8KLQlyZXR1cm4gaTsKLX0KLQotc3RhdGljIGludCBrdXJvYm94X3Byb19taWNvbndyaXRl KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KQotewotCWludCBpID0gMDsKLQot CXdoaWxlIChjb3VudC0tKSB7Ci0JCXdoaWxlICghKHJlYWRsKFVBUlQxX1JFRyhMU1IpKSAmIFVB UlRfTFNSX1RIUkUpKQotCQkJYmFycmllcigpOwotCQl3cml0ZWwoYnVmW2krK10sIFVBUlQxX1JF RyhUWCkpOwotCX0KLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGt1cm9ib3hfcHJvX21p Y29uc2VuZChjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgY291bnQpCi17Ci0JaW50IGk7 Ci0JdW5zaWduZWQgY2hhciBjaGVja3N1bSA9IDA7Ci0JdW5zaWduZWQgY2hhciByZWN2X2J1Zls0 MF07Ci0JdW5zaWduZWQgY2hhciBzZW5kX2J1Zls0MF07Ci0JdW5zaWduZWQgY2hhciBjb3JyZWN0 X2Fja1szXTsKLQlpbnQgcmV0cnkgPSAyOwotCi0JLyogR2VuZXJhdGUgY2hlY2tzdW0gKi8KLQlm b3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tzdW0gLT0gIGRhdGFbaV07Ci0KLQlk byB7Ci0JCS8qIFNlbmQgZGF0YSAqLwotCQlrdXJvYm94X3Byb19taWNvbndyaXRlKGRhdGEsIGNv dW50KTsKLQotCQkvKiBzZW5kIGNoZWNrc3VtICovCi0JCWt1cm9ib3hfcHJvX21pY29ud3JpdGUo JmNoZWNrc3VtLCAxKTsKLQotCQlpZiAoa3Vyb2JveF9wcm9fbWljb25yZWFkKHJlY3ZfYnVmLCBz aXplb2YocmVjdl9idWYpKSA8PSAzKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgIj4lczogcmVjZWl2 ZSBmYWlsZWQuXG4iLCBfX2Z1bmNfXyk7Ci0KLQkJCS8qIHNlbmQgcHJlYW1ibGUgdG8gY2xlYXIg dGhlIHJlY2VpdmUgYnVmZmVyICovCi0JCQltZW1zZXQoJnNlbmRfYnVmLCAweGZmLCBzaXplb2Yo c2VuZF9idWYpKTsKLQkJCWt1cm9ib3hfcHJvX21pY29ud3JpdGUoc2VuZF9idWYsIHNpemVvZihz ZW5kX2J1ZikpOwotCi0JCQkvKiBtYWtlIGR1bW15IHJlYWRzICovCi0JCQltZGVsYXkoMTAwKTsK LQkJCWt1cm9ib3hfcHJvX21pY29ucmVhZChyZWN2X2J1Ziwgc2l6ZW9mKHJlY3ZfYnVmKSk7Ci0J CX0gZWxzZSB7Ci0JCQkvKiBHZW5lcmF0ZSBleHBlY3RlZCBhY2sgKi8KLQkJCWNvcnJlY3RfYWNr WzBdID0gMHgwMTsKLQkJCWNvcnJlY3RfYWNrWzFdID0gZGF0YVsxXTsKLQkJCWNvcnJlY3RfYWNr WzJdID0gMHgwMDsKLQotCQkJLyogY2hlY2tzdW0gQ2hlY2sgKi8KLQkJCWlmICgocmVjdl9idWZb MF0gKyByZWN2X2J1ZlsxXSArIHJlY3ZfYnVmWzJdICsKLQkJCSAgICAgcmVjdl9idWZbM10pICYg MHhGRikgewotCQkJCXByaW50ayhLRVJOX0VSUiAiPiVzOiBDaGVja3N1bSBFcnJvciA6ICIKLQkJ CQkJIlJlY2VpdmVkIGRhdGFbJTAyeCwgJTAyeCwgJTAyeCwgJTAyeF0iCi0JCQkJCSJcbiIsIF9f ZnVuY19fLCByZWN2X2J1ZlswXSwKLQkJCQkJcmVjdl9idWZbMV0sIHJlY3ZfYnVmWzJdLCByZWN2 X2J1ZlszXSk7Ci0JCQl9IGVsc2UgewotCQkJCS8qIENoZWNrIFJlY2VpdmVkIERhdGEgKi8KLQkJ CQlpZiAoY29ycmVjdF9hY2tbMF0gPT0gcmVjdl9idWZbMF0gJiYKLQkJCQkgICAgY29ycmVjdF9h Y2tbMV0gPT0gcmVjdl9idWZbMV0gJiYKLQkJCQkgICAgY29ycmVjdF9hY2tbMl0gPT0gcmVjdl9i dWZbMl0pIHsKLQkJCQkJLyogSW50ZXJ2YWwgZm9yIG5leHQgY29tbWFuZCAqLwotCQkJCQltZGVs YXkoMTApOwotCi0JCQkJCS8qIFJlY2VpdmUgQUNLICovCi0JCQkJCXJldHVybiAwOwotCQkJCX0K LQkJCX0KLQkJCS8qIFJlY2VpdmVkIE5BSyBvciBpbGxlZ2FsIERhdGEgKi8KLQkJCXByaW50ayhL RVJOX0VSUiAiPiVzOiBFcnJvciA6IE5BSyBvciBJbGxlZ2FsIERhdGEgIgotCQkJCQkiUmVjZWl2 ZWRcbiIsIF9fZnVuY19fKTsKLQkJfQotCX0gd2hpbGUgKHJldHJ5LS0pOwotCi0JLyogSW50ZXJ2 YWwgZm9yIG5leHQgY29tbWFuZCAqLwotCW1kZWxheSgxMCk7Ci0KLQlyZXR1cm4gLTE7Ci19Ci0K LXN0YXRpYyB2b2lkIGt1cm9ib3hfcHJvX3Bvd2VyX29mZih2b2lkKQotewotCWNvbnN0IHVuc2ln bmVkIGNoYXIgd2F0Y2hkb2draWxsW10JPSB7MHgwMSwgMHgzNSwgMHgwMH07Ci0JY29uc3QgdW5z aWduZWQgY2hhciBzaHV0ZG93bndhaXRbXQk9IHsweDAwLCAweDBjfTsKLQljb25zdCB1bnNpZ25l ZCBjaGFyIHBvd2Vyb2ZmW10JCT0gezB4MDAsIDB4MDZ9OwotCS8qIDM4NDAwIGJhdWQgZGl2aXNv ciAqLwotCWNvbnN0IHVuc2lnbmVkIGRpdmlzb3IgPSAoKG9yaW9uNXhfdGNsayArICg4ICogMzg0 MDApKSAvICgxNiAqIDM4NDAwKSk7Ci0KLQlwcl9pbmZvKCIlczogdHJpZ2dlcmluZyBwb3dlci1v ZmYuLi5cbiIsIF9fZnVuY19fKTsKLQotCS8qIGhpamFjayB1YXJ0MSBhbmQgcmVzZXQgaW50byBz YW5lIHN0YXRlICgzODQwMCw4bjEsZXZlbiBwYXJpdHkpICovCi0Jd3JpdGVsKDB4ODMsIFVBUlQx X1JFRyhMQ1IpKTsKLQl3cml0ZWwoZGl2aXNvciAmIDB4ZmYsIFVBUlQxX1JFRyhETEwpKTsKLQl3 cml0ZWwoKGRpdmlzb3IgPj4gOCkgJiAweGZmLCBVQVJUMV9SRUcoRExNKSk7Ci0Jd3JpdGVsKDB4 MWIsIFVBUlQxX1JFRyhMQ1IpKTsKLQl3cml0ZWwoMHgwMCwgVUFSVDFfUkVHKElFUikpOwotCXdy aXRlbCgweDA3LCBVQVJUMV9SRUcoRkNSKSk7Ci0Jd3JpdGVsKDB4MDAsIFVBUlQxX1JFRyhNQ1Ip KTsKLQotCS8qIFNlbmQgdGhlIGNvbW1hbmRzIHRvIHNodXRkb3duIHRoZSBLdXJvYm94IFBybyAq LwotCWt1cm9ib3hfcHJvX21pY29uc2VuZCh3YXRjaGRvZ2tpbGwsIHNpemVvZih3YXRjaGRvZ2tp bGwpKSA7Ci0Ja3Vyb2JveF9wcm9fbWljb25zZW5kKHNodXRkb3dud2FpdCwgc2l6ZW9mKHNodXRk b3dud2FpdCkpIDsKLQlrdXJvYm94X3Byb19taWNvbnNlbmQocG93ZXJvZmYsIHNpemVvZihwb3dl cm9mZikpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdlbmVyYWwgU2V0dXAKLSAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwotc3RhdGljIHVuc2lnbmVkIGludCBrdXJvYm94X3Byb19tcHBf bW9kZXNbXSBfX2luaXRkYXRhID0gewotCU1QUDBfVU5VU0VELAotCU1QUDFfVU5VU0VELAotCU1Q UDJfR1BJTywJCS8qIEdQSU8gTWljb24gKi8KLQlNUFAzX0dQSU8sCQkvKiBHUElPIFJ0YyAqLwot CU1QUDRfVU5VU0VELAotCU1QUDVfVU5VU0VELAotCU1QUDZfTkFORCwJCS8qIE5BTkQgRmxhc2gg UkVuICovCi0JTVBQN19OQU5ELAkJLyogTkFORCBGbGFzaCBXRW4gKi8KLQlNUFA4X1VOVVNFRCwK LQlNUFA5X1VOVVNFRCwKLQlNUFAxMF9VTlVTRUQsCi0JTVBQMTFfVU5VU0VELAotCU1QUDEyX1NB VEFfTEVELAkJLyogU0FUQSAwIHByZXNlbmNlICovCi0JTVBQMTNfU0FUQV9MRUQsCQkvKiBTQVRB IDEgcHJlc2VuY2UgKi8KLQlNUFAxNF9TQVRBX0xFRCwJCS8qIFNBVEEgMCBhY3RpdmUgKi8KLQlN UFAxNV9TQVRBX0xFRCwJCS8qIFNBVEEgMSBhY3RpdmUgKi8KLQlNUFAxNl9VQVJULAkJLyogVUFS VDEgUlhEICovCi0JTVBQMTdfVUFSVCwJCS8qIFVBUlQxIFRYRCAqLwotCU1QUDE4X1VBUlQsCQkv KiBVQVJUMSBDVFNuICovCi0JTVBQMTlfVUFSVCwJCS8qIFVBUlQxIFJUU24gKi8KLQkwLAotfTsK LQotc3RhdGljIHZvaWQgX19pbml0IGt1cm9ib3hfcHJvX2luaXQodm9pZCkKLXsKLQkvKgotCSAq IFNldHVwIGJhc2ljIE9yaW9uIGZ1bmN0aW9ucy4gTmVlZCB0byBiZSBjYWxsZWQgZWFybHkuCi0J ICovCi0Jb3Jpb241eF9pbml0KCk7Ci0KLQlvcmlvbjV4X21wcF9jb25mKGt1cm9ib3hfcHJvX21w cF9tb2Rlcyk7Ci0KLQkvKgotCSAqIENvbmZpZ3VyZSBwZXJpcGhlcmFscy4KLQkgKi8KLQlvcmlv bjV4X2VoY2kwX2luaXQoKTsKLQlvcmlvbjV4X2VoY2kxX2luaXQoKTsKLQlvcmlvbjV4X2V0aF9p bml0KCZrdXJvYm94X3Byb19ldGhfZGF0YSk7Ci0Jb3Jpb241eF9pMmNfaW5pdCgpOwotCW9yaW9u NXhfc2F0YV9pbml0KCZrdXJvYm94X3Byb19zYXRhX2RhdGEpOwotCW9yaW9uNXhfdWFydDBfaW5p dCgpOwotCW9yaW9uNXhfdWFydDFfaW5pdCgpOwotCW9yaW9uNXhfeG9yX2luaXQoKTsKLQotCW12 ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9pZChPUklPTl9NQlVTX0RFVkJVU19CT09UX1RBUkdFVCwK LQkJCQkgICAgT1JJT05fTUJVU19ERVZCVVNfQk9PVF9BVFRSLAotCQkJCSAgICBLVVJPQk9YX1BS T19OT1JfQk9PVF9CQVNFLAotCQkJCSAgICBLVVJPQk9YX1BST19OT1JfQk9PVF9TSVpFKTsKLQlw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmt1cm9ib3hfcHJvX25vcl9mbGFzaCk7Ci0KLQlpZiAo bWFjaGluZV9pc19rdXJvYm94X3BybygpKSB7Ci0JCW12ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9p ZChPUklPTl9NQlVTX0RFVkJVU19UQVJHRVQoMCksCi0JCQkJCSAgICBPUklPTl9NQlVTX0RFVkJV U19BVFRSKDApLAotCQkJCQkgICAgS1VST0JPWF9QUk9fTkFORF9CQVNFLAotCQkJCQkgICAgS1VS T0JPWF9QUk9fTkFORF9TSVpFKTsKLQkJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZrdXJvYm94 X3Byb19uYW5kX2ZsYXNoKTsKLQl9Ci0KLQlpMmNfcmVnaXN0ZXJfYm9hcmRfaW5mbygwLCAma3Vy b2JveF9wcm9faTJjX3J0YywgMSk7Ci0KLQkvKiByZWdpc3RlciBLdXJvYm94IFBybyBzcGVjaWZp YyBwb3dlci1vZmYgbWV0aG9kICovCi0JcmVnaXN0ZXJfcGxhdGZvcm1fcG93ZXJfb2ZmKGt1cm9i b3hfcHJvX3Bvd2VyX29mZik7Ci19Ci0KLSNpZmRlZiBDT05GSUdfTUFDSF9LVVJPQk9YX1BSTwot TUFDSElORV9TVEFSVChLVVJPQk9YX1BSTywgIkJ1ZmZhbG8vUmV2b2dlYXIgS3Vyb2JveCBQcm8i KQotCS8qIE1haW50YWluZXI6IFJvbmVuIFNoaXRyaXQgPHJzaGl0cml0QG1hcnZlbGwuY29tPiAq LwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0gT1JJT041WF9OUl9JUlFTLAot CS5pbml0X21hY2hpbmUJPSBrdXJvYm94X3Byb19pbml0LAotCS5tYXBfaW8JCT0gb3Jpb241eF9t YXBfaW8sCi0JLmluaXRfZWFybHkJPSBvcmlvbjV4X2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0g b3Jpb241eF9pbml0X2lycSwKLQkuaW5pdF90aW1lCT0gb3Jpb241eF90aW1lcl9pbml0LAotCS5m aXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCi0JLnJlc3RhcnQJPSBvcmlvbjV4X3Jlc3RhcnQsCi1N QUNISU5FX0VORAotI2VuZGlmCi0KLSNpZmRlZiBDT05GSUdfTUFDSF9MSU5LU1RBVElPTl9QUk8K LU1BQ0hJTkVfU1RBUlQoTElOS1NUQVRJT05fUFJPLCAiQnVmZmFsbyBMaW5rc3RhdGlvbiBQcm8v TGl2ZSIpCi0JLyogTWFpbnRhaW5lcjogQnlyb24gQnJhZGxleSA8Ynlyb24uYmJyYWRsZXlAZ21h aWwuY29tPiAqLwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0gT1JJT041WF9O Ul9JUlFTLAotCS5pbml0X21hY2hpbmUJPSBrdXJvYm94X3Byb19pbml0LAotCS5tYXBfaW8JCT0g b3Jpb241eF9tYXBfaW8sCi0JLmluaXRfZWFybHkJPSBvcmlvbjV4X2luaXRfZWFybHksCi0JLmlu aXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwKLQkuaW5pdF90aW1lCT0gb3Jpb241eF90aW1lcl9p bml0LAotCS5maXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCi0JLnJlc3RhcnQJPSBvcmlvbjV4X3Jl c3RhcnQsCi1NQUNISU5FX0VORAotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9y aW9uNXgvbXYyMTIwLXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvbXYyMTIwLXNldHVw LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNWZlNWI3YTBmOS4uMDAwMDAwMDAw MDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9tdjIxMjAtc2V0dXAuYworKysgL2Rldi9u dWxsCkBAIC0xLDI1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEhlcmJlcnQg VmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IE1hcnRp biBNaWNobG1heXIgPHRibUBjeXJpdXMuY29tPgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlCi0gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotICovCi0jaW5jbHVkZSA8bGludXgvZ3Bpby9sZWdhY3kuaD4KLSNpbmNsdWRl IDxsaW51eC9ncGlvL21hY2hpbmUuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNs dWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0j aW5jbHVkZSA8bGludXgvaXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvbXRkL3BoeXNtYXAuaD4KLSNp bmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KLSNp bmNsdWRlIDxsaW51eC9ncGlvX2tleXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2lu Y2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgotI2lu Y2x1ZGUgImNvbW1vbi5oIgotI2luY2x1ZGUgIm1wcC5oIgotI2luY2x1ZGUgIm9yaW9uNXguaCIK LQotI2RlZmluZSBNVjIxMjBfTk9SX0JPT1RfQkFTRQkweGY0MDAwMDAwCi0jZGVmaW5lIE1WMjEy MF9OT1JfQk9PVF9TSVpFCVNaXzUxMksKLQotI2RlZmluZSBNVjIxMjBfR1BJT19SVENfSVJRCTMK LSNkZWZpbmUgTVYyMTIwX0dQSU9fS0VZX1JFU0VUCTE3Ci0jZGVmaW5lIE1WMjEyMF9HUElPX0tF WV9QT1dFUgkxOAotI2RlZmluZSBNVjIxMjBfR1BJT19QT1dFUl9PRkYJMTkKLQotCi0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKLSAqIEV0aGVybmV0Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRp YyBzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSBtdjIxMjBfZXRoX2RhdGEgPSB7Ci0J LnBoeV9hZGRyCT0gTVY2NDNYWF9FVEhfUEhZX0FERFIoOCksCi19OwotCi1zdGF0aWMgc3RydWN0 IG12X3NhdGFfcGxhdGZvcm1fZGF0YSBtdjIxMjBfc2F0YV9kYXRhID0gewotCS5uX3BvcnRzCT0g MiwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBtdjIxMjBfcGFydGl0aW9uc1td ID0gewotCXsKLQkJLm5hbWUJPSAiZmlybXdhcmUiLAotCQkuc2l6ZQk9IDB4MDAwODAwMDAsCi0J CS5vZmZzZXQJPSAwLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0 YSBtdjIxMjBfbm9yX2ZsYXNoX2RhdGEgPSB7Ci0JLndpZHRoCQk9IDEsCi0JLnBhcnRzCQk9IG12 MjEyMF9wYXJ0aXRpb25zLAotCS5ucl9wYXJ0cwk9IEFSUkFZX1NJWkUobXYyMTIwX3BhcnRpdGlv bnMpCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG12MjEyMF9ub3JfZmxhc2hfcmVzb3Vy Y2UgPSB7Ci0JLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAotCS5zdGFydAkJPSBNVjIxMjBfTk9S X0JPT1RfQkFTRSwKLQkuZW5kCQk9IE1WMjEyMF9OT1JfQk9PVF9CQVNFICsgTVYyMTIwX05PUl9C T09UX1NJWkUgLSAxLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbXYyMTIw X25vcl9mbGFzaCA9IHsKLQkubmFtZQkJPSAicGh5c21hcC1mbGFzaCIsCi0JLmlkCQk9IDAsCi0J LmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJm12MjEyMF9ub3JfZmxhc2hfZGF0YSwKLQl9 LAotCS5yZXNvdXJjZQk9ICZtdjIxMjBfbm9yX2ZsYXNoX3Jlc291cmNlLAotCS5udW1fcmVzb3Vy Y2VzCT0gMSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbiBtdjIxMjBfYnV0 dG9uc1tdID0gewotCXsKLQkJLmNvZGUJCT0gS0VZX1JFU1RBUlQsCi0JCS5ncGlvCQk9IE1WMjEy MF9HUElPX0tFWV9SRVNFVCwKLQkJLmRlc2MJCT0gInJlc2V0IiwKLQkJLmFjdGl2ZV9sb3cJPSAx LAotCX0sIHsKLQkJLmNvZGUJCT0gS0VZX1BPV0VSLAotCQkuZ3BpbwkJPSBNVjIxMjBfR1BJT19L RVlfUE9XRVIsCi0JCS5kZXNjCQk9ICJwb3dlciIsCi0JCS5hY3RpdmVfbG93CT0gMSwKLQl9LAot fTsKLQotc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBtdjIxMjBfYnV0dG9u X2RhdGEgPSB7Ci0JLmJ1dHRvbnMJPSBtdjIxMjBfYnV0dG9ucywKLQkubmJ1dHRvbnMJPSBBUlJB WV9TSVpFKG12MjEyMF9idXR0b25zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlIG12MjEyMF9idXR0b25fZGV2aWNlID0gewotCS5uYW1lCQk9ICJncGlvLWtleXMiLAotCS5p ZAkJPSAtMSwKLQkubnVtX3Jlc291cmNlcwk9IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9k YXRhCT0gJm12MjEyMF9idXR0b25fZGF0YSwKLQl9LAotfTsKLQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgotICogR2VuZXJhbCBTZXR1cAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdW5z aWduZWQgaW50IG12MjEyMF9tcHBfbW9kZXNbXSBfX2luaXRkYXRhID0gewotCU1QUDBfR1BJTywJ CS8qIFN5cyBzdGF0dXMgTEVEICovCi0JTVBQMV9HUElPLAkJLyogU3lzIGVycm9yIExFRCAqLwot CU1QUDJfR1BJTywJCS8qIE92ZXJUZW1wIGludGVycnVwdCAqLwotCU1QUDNfR1BJTywJCS8qIFJU QyBpbnRlcnJ1cHQgKi8KLQlNUFA0X0dQSU8sCQkvKiBWX0xFRCA1ViAqLwotCU1QUDVfR1BJTywJ CS8qIFZfTEVEIDMuM1YgKi8KLQlNUFA2X1VOVVNFRCwKLQlNUFA3X1VOVVNFRCwKLQlNUFA4X0dQ SU8sCQkvKiBTQVRBIDAgZmFpbCBMRUQgKi8KLQlNUFA5X0dQSU8sCQkvKiBTQVRBIDEgZmFpbCBM RUQgKi8KLQlNUFAxMF9VTlVTRUQsCi0JTVBQMTFfVU5VU0VELAotCU1QUDEyX1NBVEFfTEVELAkJ LyogU0FUQSAwIHByZXNlbmNlICovCi0JTVBQMTNfU0FUQV9MRUQsCQkvKiBTQVRBIDEgcHJlc2Vu Y2UgKi8KLQlNUFAxNF9TQVRBX0xFRCwJCS8qIFNBVEEgMCBhY3RpdmUgKi8KLQlNUFAxNV9TQVRB X0xFRCwJCS8qIFNBVEEgMSBhY3RpdmUgKi8KLQlNUFAxNl9VTlVTRUQsCi0JTVBQMTdfR1BJTywJ CS8qIFJlc2V0IGJ1dHRvbiAqLwotCU1QUDE4X0dQSU8sCQkvKiBQb3dlciBidXR0b24gKi8KLQlN UFAxOV9HUElPLAkJLyogUG93ZXIgb2ZmICovCi0JMCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJj X2JvYXJkX2luZm8gX19pbml0ZGF0YSBtdjIxMjBfaTJjX3J0YyA9IHsKLQlJMkNfQk9BUkRfSU5G TygicGNmODU2MyIsIDB4NTEpLAotCS5pcnEJPSAwLAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlv X2xlZCBtdjIxMjBfbGVkX3BpbnNbXSA9IHsKLQl7Ci0JCS5uYW1lCQkJPSAibXYyMTIwOmJsdWU6 aGVhbHRoIiwKLQl9LAotCXsKLQkJLm5hbWUJCQk9ICJtdjIxMjA6cmVkOmhlYWx0aCIsCi0JfSwK LQl7Ci0JCS5uYW1lCQkJPSAibXYyMTIwOmxlZDpicmlnaHQiLAotCQkuZGVmYXVsdF90cmlnZ2Vy CT0gImRlZmF1bHQtb24iLAotCX0sCi0JewotCQkubmFtZQkJCT0gIm12MjEyMDpsZWQ6ZGltbWVk IiwKLQl9LAotCXsKLQkJLm5hbWUJCQk9ICJtdjIxMjA6cmVkOnNhdGEwIiwKLQl9LAotCXsKLQkJ Lm5hbWUJCQk9ICJtdjIxMjA6cmVkOnNhdGExIiwKLQl9LAotCi19OwotCi1zdGF0aWMgc3RydWN0 IGdwaW9kX2xvb2t1cF90YWJsZSBtdjIxMjBfbGVkc19ncGlvX3RhYmxlID0gewotCS5kZXZfaWQg PSAibGVkcy1ncGlvIiwKLQkudGFibGUgPSB7Ci0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3Bp bzAiLCAwLCBOVUxMLAotCQkJCTAsIEdQSU9fQUNUSVZFX0hJR0gpLAotCQlHUElPX0xPT0tVUF9J RFgoIm9yaW9uX2dwaW8wIiwgMSwgTlVMTCwKLQkJCQkxLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJ R1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIDQsIE5VTEwsCi0JCQkJMiwgR1BJT19BQ1RJ VkVfSElHSCksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCA1LCBOVUxMLAotCQkJ CTMsIEdQSU9fQUNUSVZFX0hJR0gpLAotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwg OCwgTlVMTCwKLQkJCQk0LCBHUElPX0FDVElWRV9MT1cpLAotCQlHUElPX0xPT0tVUF9JRFgoIm9y aW9uX2dwaW8wIiwgOSwgTlVMTCwKLQkJCQk1LCBHUElPX0FDVElWRV9MT1cpLAotCQl7IH0sCi0J fSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19sZWRfcGxhdGZvcm1fZGF0YSBtdjIxMjBfbGVk X2RhdGEgPSB7Ci0JLmxlZHMJCT0gbXYyMTIwX2xlZF9waW5zLAotCS5udW1fbGVkcwk9IEFSUkFZ X1NJWkUobXYyMTIwX2xlZF9waW5zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlIG12MjEyMF9sZWRzID0gewotCS5uYW1lCT0gImxlZHMtZ3BpbyIsCi0JLmlkCT0gLTEsCi0J LmRldgk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmbXYyMTIwX2xlZF9kYXRhLAotCX0KLX07Ci0K LXN0YXRpYyB2b2lkIG12MjEyMF9wb3dlcl9vZmYodm9pZCkKLXsKLQlwcl9pbmZvKCIlczogdHJp Z2dlcmluZyBwb3dlci1vZmYuLi5cbiIsIF9fZnVuY19fKTsKLQlncGlvX3NldF92YWx1ZShNVjIx MjBfR1BJT19QT1dFUl9PRkYsIDApOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgbXYyMTIwX2lu aXQodm9pZCkKLXsKLQkvKiBTZXR1cCBiYXNpYyBPcmlvbiBmdW5jdGlvbnMuIE5lZWQgdG8gYmUg Y2FsbGVkIGVhcmx5LiAqLwotCW9yaW9uNXhfaW5pdCgpOwotCi0Jb3Jpb241eF9tcHBfY29uZiht djIxMjBfbXBwX21vZGVzKTsKLQotCS8qCi0JICogQ29uZmlndXJlIHBlcmlwaGVyYWxzLgotCSAq LwotCW9yaW9uNXhfZWhjaTBfaW5pdCgpOwotCW9yaW9uNXhfZWhjaTFfaW5pdCgpOwotCW9yaW9u NXhfZXRoX2luaXQoJm12MjEyMF9ldGhfZGF0YSk7Ci0Jb3Jpb241eF9pMmNfaW5pdCgpOwotCW9y aW9uNXhfc2F0YV9pbml0KCZtdjIxMjBfc2F0YV9kYXRhKTsKLQlvcmlvbjV4X3VhcnQwX2luaXQo KTsKLQlvcmlvbjV4X3hvcl9pbml0KCk7Ci0KLQltdmVidV9tYnVzX2FkZF93aW5kb3dfYnlfaWQo T1JJT05fTUJVU19ERVZCVVNfQk9PVF9UQVJHRVQsCi0JCQkJICAgIE9SSU9OX01CVVNfREVWQlVT X0JPT1RfQVRUUiwKLQkJCQkgICAgTVYyMTIwX05PUl9CT09UX0JBU0UsCi0JCQkJICAgIE1WMjEy MF9OT1JfQk9PVF9TSVpFKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm12MjEyMF9ub3Jf Zmxhc2gpOwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZtdjIxMjBfYnV0dG9uX2Rldmlj ZSk7Ci0KLQlpZiAoZ3Bpb19yZXF1ZXN0KE1WMjEyMF9HUElPX1JUQ19JUlEsICJydGMiKSA9PSAw KSB7Ci0JCWlmIChncGlvX2RpcmVjdGlvbl9pbnB1dChNVjIxMjBfR1BJT19SVENfSVJRKSA9PSAw KQotCQkJbXYyMTIwX2kyY19ydGMuaXJxID0gZ3Bpb190b19pcnEoTVYyMTIwX0dQSU9fUlRDX0lS USk7Ci0JCWVsc2UKLQkJCWdwaW9fZnJlZShNVjIxMjBfR1BJT19SVENfSVJRKTsKLQl9Ci0JaTJj X3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwgJm12MjEyMF9pMmNfcnRjLCAxKTsKLQlncGlvZF9hZGRf bG9va3VwX3RhYmxlKCZtdjIxMjBfbGVkc19ncGlvX3RhYmxlKTsKLQlwbGF0Zm9ybV9kZXZpY2Vf cmVnaXN0ZXIoJm12MjEyMF9sZWRzKTsKLQotCS8qIHJlZ2lzdGVyIG12MjEyMCBzcGVjaWZpYyBw b3dlci1vZmYgbWV0aG9kICovCi0JaWYgKGdwaW9fcmVxdWVzdChNVjIxMjBfR1BJT19QT1dFUl9P RkYsICJQT1dFUk9GRiIpICE9IDAgfHwKLQkgICAgZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KE1WMjEy MF9HUElPX1BPV0VSX09GRiwgMSkgIT0gMCkKLQkJcHJfZXJyKCJtdjIxMjA6IGZhaWxlZCB0byBz ZXR1cCBwb3dlci1vZmYgR1BJT1xuIik7Ci0JcmVnaXN0ZXJfcGxhdGZvcm1fcG93ZXJfb2ZmKG12 MjEyMF9wb3dlcl9vZmYpOwotfQotCi0vKiBXYXJuaW5nOiBIUCB1c2VzIGEgd3JvbmcgbWFjaC10 eXBlICg9NTI2KSBpbiB0aGVpciBib290bG9hZGVyICovCi1NQUNISU5FX1NUQVJUKE1WMjEyMCwg IkhQIE1lZGlhIFZhdWx0IG12MjEyMCIpCi0JLyogTWFpbnRhaW5lcjogTWFydGluIE1pY2hsbWF5 ciA8dGJtQGN5cml1cy5jb20+ICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2lycXMJ PSBPUklPTjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9IG12MjEyMF9pbml0LAotCS5tYXBf aW8JCT0gb3Jpb241eF9tYXBfaW8sCi0JLmluaXRfZWFybHkJPSBvcmlvbjV4X2luaXRfZWFybHks Ci0JLmluaXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwKLQkuaW5pdF90aW1lCT0gb3Jpb241eF90 aW1lcl9pbml0LAotCS5maXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCi0JLnJlc3RhcnQJPSBvcmlv bjV4X3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlv bjV4L25ldDJiaWctc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVw LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNDU3MWU3OTgwNS4uMDAwMDAwMDAw MDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVwLmMKKysrIC9kZXYv bnVsbApAQCAtMSw0NDQgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seQotLyoKLSAqIGFyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVwLmMKLSAq Ci0gKiBMYUNpZSAyQmlnIE5ldHdvcmsgTkFTIHNldHVwCi0gKgotICogQ29weXJpZ2h0IChDKSAy MDA5IFNpbW9uIEd1aW5vdCA8c2d1aW5vdEBsYWNpZS5jb20+Ci0gKi8KLQotI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvcGh5c21hcC5oPgotI2luY2x1 ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVkZSA8bGludXgvbGVkcy5oPgotI2luY2x1 ZGUgPGxpbnV4L2dwaW9fa2V5cy5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+Ci0jaW5jbHVk ZSA8bGludXgvaTJjLmg+Ci0jaW5jbHVkZSA8bGludXgvYXRhX3BsYXRmb3JtLmg+Ci0jaW5jbHVk ZSA8bGludXgvZ3Bpby9sZWdhY3kuaD4KLSNpbmNsdWRlIDxsaW51eC9ncGlvL21hY2hpbmUuaD4K LSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Ci0j aW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgotI2luY2x1ZGUgPHBsYXQvb3Jpb24tZ3Bpby5oPgot I2luY2x1ZGUgImNvbW1vbi5oIgotI2luY2x1ZGUgIm1wcC5oIgotI2luY2x1ZGUgIm9yaW9uNXgu aCIKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBMYUNpZSAyQmlnIE5ldHdvcmsgSW5mbwot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiA1MTJLQiBOT1IgZmxhc2ggRGV2aWNlIGJ1 cyBib290IGNoaXAgc2VsZWN0Ci0gKi8KLQotI2RlZmluZSBORVQyQklHX05PUl9CT09UX0JBU0UJ CTB4ZmZmODAwMDAKLSNkZWZpbmUgTkVUMkJJR19OT1JfQk9PVF9TSVpFCQlTWl81MTJLCi0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogNTEyS0IgTk9SIEZsYXNoIG9uIEJvb3QgRGV2aWNlCi0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIFRPRE86IENoZWNrIHdyaXRlIHN1cHBvcnQg b24gZmxhc2ggTVgyOUxWNDAwQ0JUQy03MEcKLSAqLwotCi1zdGF0aWMgc3RydWN0IG10ZF9wYXJ0 aXRpb24gbmV0MmJpZ19wYXJ0aXRpb25zW10gPSB7Ci0JewotCQkubmFtZQkJPSAiRnVsbDUxMmti IiwKLQkJLnNpemUJCT0gTVREUEFSVF9TSVpfRlVMTCwKLQkJLm9mZnNldAkJPSAweDAwMDAwMDAw LAotCQkubWFza19mbGFncwk9IE1URF9XUklURUFCTEUsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgcGh5c21hcF9mbGFzaF9kYXRhIG5ldDJiaWdfbm9yX2ZsYXNoX2RhdGEgPSB7Ci0JLndpZHRo CQk9IDEsCi0JLnBhcnRzCQk9IG5ldDJiaWdfcGFydGl0aW9ucywKLQkubnJfcGFydHMJPSBBUlJB WV9TSVpFKG5ldDJiaWdfcGFydGl0aW9ucyksCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNl IG5ldDJiaWdfbm9yX2ZsYXNoX3Jlc291cmNlID0gewotCS5mbGFncwkJCT0gSU9SRVNPVVJDRV9N RU0sCi0JLnN0YXJ0CQkJPSBORVQyQklHX05PUl9CT09UX0JBU0UsCi0JLmVuZAkJCT0gTkVUMkJJ R19OT1JfQk9PVF9CQVNFCi0JCQkJCSsgTkVUMkJJR19OT1JfQk9PVF9TSVpFIC0gMSwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5ldDJiaWdfbm9yX2ZsYXNoID0gewotCS5u YW1lCQkJPSAicGh5c21hcC1mbGFzaCIsCi0JLmlkCQkJPSAwLAotCS5kZXYJCT0gewotCQkucGxh dGZvcm1fZGF0YQk9ICZuZXQyYmlnX25vcl9mbGFzaF9kYXRhLAotCX0sCi0JLm51bV9yZXNvdXJj ZXMJCT0gMSwKLQkucmVzb3VyY2UJCT0gJm5ldDJiaWdfbm9yX2ZsYXNoX3Jlc291cmNlLAotfTsK LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFdGhlcm5ldAotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi0KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSBuZXQyYmlnX2V0 aF9kYXRhID0gewotCS5waHlfYWRkcgk9IE1WNjQzWFhfRVRIX1BIWV9BRERSKDgpLAotfTsKLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiBJMkMgZGV2aWNlcwotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi0KLS8qCi0gKiBpMmMgYWRkciB8IGNoaXAgICAgICAgICB8IGRlc2NyaXB0aW9uCi0gKiAw eDMyICAgICB8IFJpY29oIDVDMzcyYiB8IFJUQwotICogMHg1MCAgICAgfCBIVDI0TEMwOCAgICAg fCBlZXByb20gKDFrQikKLSAqLwotc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRk YXRhIG5ldDJiaWdfaTJjX2RldmljZXNbXSA9IHsKLQl7Ci0JCUkyQ19CT0FSRF9JTkZPKCJyczVj MzcyYiIsIDB4MzIpLAotCX0sIHsKLQkJSTJDX0JPQVJEX0lORk8oIjI0YzA4IiwgMHg1MCksCi0J fSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU0FUQQotICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCi0KLXN0YXRpYyBzdHJ1Y3QgbXZfc2F0YV9wbGF0Zm9ybV9kYXRhIG5ldDJiaWdfc2F0 YV9kYXRhID0gewotCS5uX3BvcnRzCT0gMiwKLX07Ci0KLSNkZWZpbmUgTkVUMkJJR19HUElPX1NB VEFfUE9XRVJfUkVRCTE5Ci0jZGVmaW5lIE5FVDJCSUdfR1BJT19TQVRBMF9QT1dFUgkyMwotI2Rl ZmluZSBORVQyQklHX0dQSU9fU0FUQTFfUE9XRVIJMjUKLQotc3RhdGljIHZvaWQgX19pbml0IG5l dDJiaWdfc2F0YV9wb3dlcl9pbml0KHZvaWQpCi17Ci0JaW50IGVycjsKLQotCS8qIENvbmZpZ3Vy ZSBHUElPcyBvdmVyIE1QUCBtYXggbnVtYmVyLiAqLwotCW9yaW9uX2dwaW9fc2V0X3ZhbGlkKE5F VDJCSUdfR1BJT19TQVRBMF9QT1dFUiwgMSk7Ci0Jb3Jpb25fZ3Bpb19zZXRfdmFsaWQoTkVUMkJJ R19HUElPX1NBVEExX1BPV0VSLCAxKTsKLQotCWVyciA9IGdwaW9fcmVxdWVzdChORVQyQklHX0dQ SU9fU0FUQTBfUE9XRVIsICJTQVRBMCBwb3dlciBzdGF0dXMiKTsKLQlpZiAoZXJyID09IDApIHsK LQkJZXJyID0gZ3Bpb19kaXJlY3Rpb25faW5wdXQoTkVUMkJJR19HUElPX1NBVEEwX1BPV0VSKTsK LQkJaWYgKGVycikKLQkJCWdwaW9fZnJlZShORVQyQklHX0dQSU9fU0FUQTBfUE9XRVIpOwotCX0K LQlpZiAoZXJyKSB7Ci0JCXByX2VycigibmV0MmJpZzogZmFpbGVkIHRvIHNldHVwIFNBVEEwIHBv d2VyIEdQSU9cbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JZXJyID0gZ3Bpb19yZXF1ZXN0KE5FVDJC SUdfR1BJT19TQVRBMV9QT1dFUiwgIlNBVEExIHBvd2VyIHN0YXR1cyIpOwotCWlmIChlcnIgPT0g MCkgewotCQllcnIgPSBncGlvX2RpcmVjdGlvbl9pbnB1dChORVQyQklHX0dQSU9fU0FUQTFfUE9X RVIpOwotCQlpZiAoZXJyKQotCQkJZ3Bpb19mcmVlKE5FVDJCSUdfR1BJT19TQVRBMV9QT1dFUik7 Ci0JfQotCWlmIChlcnIpIHsKLQkJcHJfZXJyKCJuZXQyYmlnOiBmYWlsZWQgdG8gc2V0dXAgU0FU QTEgcG93ZXIgR1BJT1xuIik7Ci0JCWdvdG8gZXJyX2ZyZWVfMTsKLQl9Ci0KLQllcnIgPSBncGlv X3JlcXVlc3QoTkVUMkJJR19HUElPX1NBVEFfUE9XRVJfUkVRLCAiU0FUQSBwb3dlciByZXF1ZXN0 Iik7Ci0JaWYgKGVyciA9PSAwKSB7Ci0JCWVyciA9IGdwaW9fZGlyZWN0aW9uX291dHB1dChORVQy QklHX0dQSU9fU0FUQV9QT1dFUl9SRVEsIDApOwotCQlpZiAoZXJyKQotCQkJZ3Bpb19mcmVlKE5F VDJCSUdfR1BJT19TQVRBX1BPV0VSX1JFUSk7Ci0JfQotCWlmIChlcnIpIHsKLQkJcHJfZXJyKCJu ZXQyYmlnOiBmYWlsZWQgdG8gc2V0dXAgU0FUQSBwb3dlciByZXF1ZXN0IEdQSU9cbiIpOwotCQln b3RvIGVycl9mcmVlXzI7Ci0JfQotCi0JaWYgKGdwaW9fZ2V0X3ZhbHVlKE5FVDJCSUdfR1BJT19T QVRBMF9QT1dFUikgJiYKLQkJZ3Bpb19nZXRfdmFsdWUoTkVUMkJJR19HUElPX1NBVEExX1BPV0VS KSkgewotCQlyZXR1cm47Ci0JfQotCi0JLyoKLQkgKiBTQVRBIHBvd2VyIHVwIG9uIGJvdGggZGlz ayBpcyBkb25lIGJ5IHB1bGxpbmcgaGlnaCB0aGUgQ1BMRCBwb3dlcgotCSAqIHJlcXVlc3QgbGlu ZS4gVGhlIDMwMG1zIGRlbGF5IGlzIHJlbGF0ZWQgdG8gdGhlIENQTEQgY2xvY2sgYW5kIGlzCi0J ICogbmVlZGVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgQ1BMRCBoYXMgdGFrZSBpbnRvIGFjY291bnQg dGhlIGxvdyBsaW5lCi0JICogc3RhdHVzLgotCSAqLwotCW1zbGVlcCgzMDApOwotCWdwaW9fc2V0 X3ZhbHVlKE5FVDJCSUdfR1BJT19TQVRBX1BPV0VSX1JFUSwgMSk7Ci0JcHJfaW5mbygibmV0MmJp ZzogcG93ZXIgdXAgU0FUQSBoYXJkIGRpc2tzXG4iKTsKLQotCXJldHVybjsKLQotZXJyX2ZyZWVf MjoKLQlncGlvX2ZyZWUoTkVUMkJJR19HUElPX1NBVEExX1BPV0VSKTsKLWVycl9mcmVlXzE6Ci0J Z3Bpb19mcmVlKE5FVDJCSUdfR1BJT19TQVRBMF9QT1dFUik7Ci0KLQlyZXR1cm47Ci19Ci0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogR1BJTyBMRURzCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LQotLyoKLSAqIFRoZSBwb3dlciBmcm9udCBMRURzIChibHVlIGFuZCByZWQpIGFuZCBTQVRBIHJl ZCBMRURzIGFyZSBjb250cm9sbGVkIHZpYSBhCi0gKiBzaW5nbGUgR1BJTyBsaW5lIGFuZCBhcmUg Y29tcGF0aWJsZSB3aXRoIHRoZSBsZWRzLWdwaW8gZHJpdmVyLgotICoKLSAqIFRoZSBTQVRBIGJs dWUgTEVEcyBoYXZlIHNvbWUgaGFyZHdhcmUgYmxpbmsgY2FwYWJpbGl0aWVzIHdoaWNoIGFyZSBk ZXRhaWxlZAotICogaW4gdGhlIGZvbGxvd2luZyBhcnJheToKLSAqCi0gKiBTQVRBeCBibHVlIExF RCB8IFNBVEF4IGFjdGl2aXR5IHwgTEVEIHN0YXRlCi0gKiAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgIHwKLSAqICAgICAgIDAgICAgICAgIHwgICAgICAgMCAgICAgICAgfCAgYmxpbmsg KHJhdGUgMzAwbXMpCi0gKiAgICAgICAxICAgICAgICB8ICAgICAgIDAgICAgICAgIHwgIG9mZgot ICogICAgICAgPyAgICAgICAgfCAgICAgICAxICAgICAgICB8ICBvbgotICoKLSAqIE5vdGVzOiBU aGUgYmx1ZSBhbmQgdGhlIHJlZCBmcm9udCBMRUQncyBjYW4ndCBiZSBvbiBhdCB0aGUgc2FtZSB0 aW1lLgotICogICAgICAgIEJsdWUgTEVEIGhhdmUgcHJpb3JpdHkuCi0gKi8KLQotI2RlZmluZSBO RVQyQklHX0dQSU9fUFdSX1JFRF9MRUQJNgotI2RlZmluZSBORVQyQklHX0dQSU9fUFdSX0JMVUVf TEVECTE2Ci0jZGVmaW5lIE5FVDJCSUdfR1BJT19QV1JfTEVEX0JMSU5LX1NUT1AJNwotCi0jZGVm aW5lIE5FVDJCSUdfR1BJT19TQVRBMF9SRURfTEVECTExCi0jZGVmaW5lIE5FVDJCSUdfR1BJT19T QVRBMV9SRURfTEVECTEwCi0KLSNkZWZpbmUgTkVUMkJJR19HUElPX1NBVEEwX0JMVUVfTEVECTE3 Ci0jZGVmaW5lIE5FVDJCSUdfR1BJT19TQVRBMV9CTFVFX0xFRAkxMwotCi1zdGF0aWMgc3RydWN0 IGdwaW9fbGVkIG5ldDJiaWdfbGVkc1tdID0gewotCXsKLQkJLm5hbWUgPSAibmV0MmJpZzpyZWQ6 cG93ZXIiLAotCX0sCi0JewotCQkubmFtZSA9ICJuZXQyYmlnOmJsdWU6cG93ZXIiLAotCX0sCi0J ewotCQkubmFtZSA9ICJuZXQyYmlnOnJlZDpzYXRhMCIsCi0JfSwKLQl7Ci0JCS5uYW1lID0gIm5l dDJiaWc6cmVkOnNhdGExIiwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvZF9sb29rdXBf dGFibGUgbmV0MmJpZ19sZWRzX2dwaW9fdGFibGUgPSB7Ci0JLmRldl9pZCA9ICJsZWRzLWdwaW8i LAotCS50YWJsZSA9IHsKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIE5FVDJCSUdf R1BJT19QV1JfUkVEX0xFRCwgTlVMTCwKLQkJCQkwLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJR1BJ T19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIE5FVDJCSUdfR1BJT19QV1JfQkxVRV9MRUQsIE5V TEwsCi0JCQkJMSwgR1BJT19BQ1RJVkVfSElHSCksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25f Z3BpbzAiLCBORVQyQklHX0dQSU9fU0FUQTBfUkVEX0xFRCwgTlVMTCwKLQkJCQkyLCBHUElPX0FD VElWRV9ISUdIKSwKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIE5FVDJCSUdfR1BJ T19TQVRBMV9SRURfTEVELCBOVUxMLAotCQkJCTMsIEdQSU9fQUNUSVZFX0hJR0gpLAotCQl7IH0s Ci0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19sZWRfcGxhdGZvcm1fZGF0YSBuZXQyYmln X2xlZF9kYXRhID0gewotCS5udW1fbGVkcyA9IEFSUkFZX1NJWkUobmV0MmJpZ19sZWRzKSwKLQku bGVkcyA9IG5ldDJiaWdfbGVkcywKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl IG5ldDJiaWdfZ3Bpb19sZWRzID0gewotCS5uYW1lICAgICAgICAgICA9ICJsZWRzLWdwaW8iLAot CS5pZCAgICAgICAgICAgICA9IC0xLAotCS5kZXYgICAgICAgICAgICA9IHsKLQkJLnBsYXRmb3Jt X2RhdGEgID0gJm5ldDJiaWdfbGVkX2RhdGEsCi0JfSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5p dCBuZXQyYmlnX2dwaW9fbGVkc19pbml0KHZvaWQpCi17Ci0JaW50IGVycjsKLQotCS8qIFN0b3Ag aW5pdGlhbCBDUExEIHNsb3cgcmVkL2JsdWUgYmxpbmtpbmcgb24gcG93ZXIgTEVELiAqLwotCWVy ciA9IGdwaW9fcmVxdWVzdChORVQyQklHX0dQSU9fUFdSX0xFRF9CTElOS19TVE9QLAotCQkJICAg IlBvd2VyIExFRCBibGluayBzdG9wIik7Ci0JaWYgKGVyciA9PSAwKSB7Ci0JCWVyciA9IGdwaW9f ZGlyZWN0aW9uX291dHB1dChORVQyQklHX0dQSU9fUFdSX0xFRF9CTElOS19TVE9QLCAxKTsKLQkJ aWYgKGVycikKLQkJCWdwaW9fZnJlZShORVQyQklHX0dQSU9fUFdSX0xFRF9CTElOS19TVE9QKTsK LQl9Ci0JaWYgKGVycikKLQkJcHJfZXJyKCJuZXQyYmlnOiBmYWlsZWQgdG8gc2V0dXAgcG93ZXIg TEVEIGJsaW5rIEdQSU9cbiIpOwotCi0JLyoKLQkgKiBDb25maWd1cmUgU0FUQTAgYW5kIFNBVEEx IGJsdWUgTEVEcyB0byBibGluayBpbiByZWxhdGlvbiB3aXRoIHRoZQotCSAqIGhhcmQgZGlzayBh Y3Rpdml0eS4KLQkgKi8KLQllcnIgPSBncGlvX3JlcXVlc3QoTkVUMkJJR19HUElPX1NBVEEwX0JM VUVfTEVELAotCQkJICAgIlNBVEEwIGJsdWUgTEVEIGNvbnRyb2wiKTsKLQlpZiAoZXJyID09IDAp IHsKLQkJZXJyID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KE5FVDJCSUdfR1BJT19TQVRBMF9CTFVF X0xFRCwgMSk7Ci0JCWlmIChlcnIpCi0JCQlncGlvX2ZyZWUoTkVUMkJJR19HUElPX1NBVEEwX0JM VUVfTEVEKTsKLQl9Ci0JaWYgKGVycikKLQkJcHJfZXJyKCJuZXQyYmlnOiBmYWlsZWQgdG8gc2V0 dXAgU0FUQTAgYmx1ZSBMRUQgR1BJT1xuIik7Ci0KLQllcnIgPSBncGlvX3JlcXVlc3QoTkVUMkJJ R19HUElPX1NBVEExX0JMVUVfTEVELAotCQkJICAgIlNBVEExIGJsdWUgTEVEIGNvbnRyb2wiKTsK LQlpZiAoZXJyID09IDApIHsKLQkJZXJyID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KE5FVDJCSUdf R1BJT19TQVRBMV9CTFVFX0xFRCwgMSk7Ci0JCWlmIChlcnIpCi0JCQlncGlvX2ZyZWUoTkVUMkJJ R19HUElPX1NBVEExX0JMVUVfTEVEKTsKLQl9Ci0JaWYgKGVycikKLQkJcHJfZXJyKCJuZXQyYmln OiBmYWlsZWQgdG8gc2V0dXAgU0FUQTEgYmx1ZSBMRUQgR1BJT1xuIik7Ci0KLQlncGlvZF9hZGRf bG9va3VwX3RhYmxlKCZuZXQyYmlnX2xlZHNfZ3Bpb190YWJsZSk7Ci0JcGxhdGZvcm1fZGV2aWNl X3JlZ2lzdGVyKCZuZXQyYmlnX2dwaW9fbGVkcyk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBHUElPIGtleXMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jZGVmaW5lIE5FVDJCSUdf R1BJT19QVVNIX0JVVFRPTgkxOAotI2RlZmluZSBORVQyQklHX0dQSU9fUE9XRVJfU1dJVENIX09O CTgKLSNkZWZpbmUgTkVUMkJJR19HUElPX1BPV0VSX1NXSVRDSF9PRkYJOQotCi0jZGVmaW5lIE5F VDJCSUdfU1dJVENIX1BPV0VSX09OCQkweDEKLSNkZWZpbmUgTkVUMkJJR19TV0lUQ0hfUE9XRVJf T0ZGCTB4MgotCi1zdGF0aWMgc3RydWN0IGdwaW9fa2V5c19idXR0b24gbmV0MmJpZ19idXR0b25z W10gPSB7Ci0JewotCQkudHlwZQkJPSBFVl9TVywKLQkJLmNvZGUJCT0gTkVUMkJJR19TV0lUQ0hf UE9XRVJfT0ZGLAotCQkuZ3BpbwkJPSBORVQyQklHX0dQSU9fUE9XRVJfU1dJVENIX09GRiwKLQkJ LmRlc2MJCT0gIlBvd2VyIHJvY2tlciBzd2l0Y2ggKGF1dG98b2ZmKSIsCi0JCS5hY3RpdmVfbG93 CT0gMCwKLQl9LAotCXsKLQkJLnR5cGUJCT0gRVZfU1csCi0JCS5jb2RlCQk9IE5FVDJCSUdfU1dJ VENIX1BPV0VSX09OLAotCQkuZ3BpbwkJPSBORVQyQklHX0dQSU9fUE9XRVJfU1dJVENIX09OLAot CQkuZGVzYwkJPSAiUG93ZXIgcm9ja2VyIHN3aXRjaCAob258YXV0bykiLAotCQkuYWN0aXZlX2xv dwk9IDAsCi0JfSwKLQl7Ci0JCS50eXBlCQk9IEVWX0tFWSwKLQkJLmNvZGUJCT0gS0VZX1BPV0VS LAotCQkuZ3BpbwkJPSBORVQyQklHX0dQSU9fUFVTSF9CVVRUT04sCi0JCS5kZXNjCQk9ICJGcm9u dCBQdXNoIEJ1dHRvbiIsCi0JCS5hY3RpdmVfbG93CT0gMCwKLQl9LAotfTsKLQotc3RhdGljIHN0 cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBuZXQyYmlnX2J1dHRvbl9kYXRhID0gewotCS5i dXR0b25zCT0gbmV0MmJpZ19idXR0b25zLAotCS5uYnV0dG9ucwk9IEFSUkFZX1NJWkUobmV0MmJp Z19idXR0b25zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5ldDJiaWdf Z3Bpb19idXR0b25zID0gewotCS5uYW1lCQk9ICJncGlvLWtleXMiLAotCS5pZAkJPSAtMSwKLQku ZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmbmV0MmJpZ19idXR0b25fZGF0YSwKLQl9LAot fTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHZW5lcmFsIFNldHVwCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLQotc3RhdGljIHVuc2lnbmVkIGludCBuZXQyYmlnX21wcF9tb2Rlc1tdIF9f aW5pdGRhdGEgPSB7Ci0JTVBQMF9HUElPLAkvKiBSYWlkIG1vZGUgKGJpdCAwKSAqLwotCU1QUDFf R1BJTywJLyogVVNCIHBvcnQgMiBmdXNlICgwID0gRmFpbCwgMSA9IE9rKSAqLwotCU1QUDJfR1BJ TywJLyogUmFpZCBtb2RlIChiaXQgMSkgKi8KLQlNUFAzX0dQSU8sCS8qIEJvYXJkIElEIChiaXQg MCkgKi8KLQlNUFA0X0dQSU8sCS8qIEZhbiBhY3Rpdml0eSAoMCA9IE9mZiwgMSA9IE9uKSAqLwot CU1QUDVfR1BJTywJLyogRmFuIGZhaWwgZGV0ZWN0aW9uICovCi0JTVBQNl9HUElPLAkvKiBSZWQg ZnJvbnQgTEVEICgwID0gT2ZmLCAxID0gT24pICovCi0JTVBQN19HUElPLAkvKiBEaXNhYmxlIGlu aXRpYWwgYmxpbmtpbmcgb24gZnJvbnQgTEVEICovCi0JTVBQOF9HUElPLAkvKiBSZWFyIHBvd2Vy IHN3aXRjaCAob258YXV0bykgKi8KLQlNUFA5X0dQSU8sCS8qIFJlYXIgcG93ZXIgc3dpdGNoIChh dXRvfG9mZikgKi8KLQlNUFAxMF9HUElPLAkvKiBTQVRBIDEgcmVkIExFRCAoMCA9IE9mZiwgMSA9 IE9uKSAqLwotCU1QUDExX0dQSU8sCS8qIFNBVEEgMCByZWQgTEVEICgwID0gT2ZmLCAxID0gT24p ICovCi0JTVBQMTJfR1BJTywJLyogQm9hcmQgSUQgKGJpdCAxKSAqLwotCU1QUDEzX0dQSU8sCS8q IFNBVEEgMSBibHVlIExFRCBibGluayBjb250cm9sICovCi0JTVBQMTRfU0FUQV9MRUQsCi0JTVBQ MTVfU0FUQV9MRUQsCi0JTVBQMTZfR1BJTywJLyogQmx1ZSBmcm9udCBMRUQgY29udHJvbCAqLwot CU1QUDE3X0dQSU8sCS8qIFNBVEEgMCBibHVlIExFRCBibGluayBjb250cm9sICovCi0JTVBQMThf R1BJTywJLyogRnJvbnQgYnV0dG9uICgwID0gUmVsZWFzZWQsIDEgPSBQdXNoZWQgKSAqLwotCU1Q UDE5X0dQSU8sCS8qIFNBVEF7MCwxfSBwb3dlciBPbi9PZmYgcmVxdWVzdCAqLwotCTAsCi0JLyog MjI6IFVTQiBwb3J0IDEgZnVzZSAoMCA9IEZhaWwsIDEgPSBPaykgKi8KLQkvKiAyMzogU0FUQSAw IHBvd2VyIHN0YXR1cyAqLwotCS8qIDI0OiBCb2FyZCBwb3dlciBvZmYgKi8KLQkvKiAyNTogU0FU QSAxIHBvd2VyIHN0YXR1cyAqLwotfTsKLQotI2RlZmluZSBORVQyQklHX0dQSU9fUE9XRVJfT0ZG CQkyNAotCi1zdGF0aWMgdm9pZCBuZXQyYmlnX3Bvd2VyX29mZih2b2lkKQotewotCWdwaW9fc2V0 X3ZhbHVlKE5FVDJCSUdfR1BJT19QT1dFUl9PRkYsIDEpOwotfQotCi1zdGF0aWMgdm9pZCBfX2lu aXQgbmV0MmJpZ19pbml0KHZvaWQpCi17Ci0JLyoKLQkgKiBTZXR1cCBiYXNpYyBPcmlvbiBmdW5j dGlvbnMuIE5lZWQgdG8gYmUgY2FsbGVkIGVhcmx5LgotCSAqLwotCW9yaW9uNXhfaW5pdCgpOwot Ci0Jb3Jpb241eF9tcHBfY29uZihuZXQyYmlnX21wcF9tb2Rlcyk7Ci0KLQkvKgotCSAqIENvbmZp Z3VyZSBwZXJpcGhlcmFscy4KLQkgKi8KLQlvcmlvbjV4X2VoY2kwX2luaXQoKTsKLQlvcmlvbjV4 X2VoY2kxX2luaXQoKTsKLQlvcmlvbjV4X2V0aF9pbml0KCZuZXQyYmlnX2V0aF9kYXRhKTsKLQlv cmlvbjV4X2kyY19pbml0KCk7Ci0Jb3Jpb241eF91YXJ0MF9pbml0KCk7Ci0Jb3Jpb241eF94b3Jf aW5pdCgpOwotCi0JbmV0MmJpZ19zYXRhX3Bvd2VyX2luaXQoKTsKLQlvcmlvbjV4X3NhdGFfaW5p dCgmbmV0MmJpZ19zYXRhX2RhdGEpOwotCi0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKE9S SU9OX01CVVNfREVWQlVTX0JPT1RfVEFSR0VULAotCQkJCSAgICBPUklPTl9NQlVTX0RFVkJVU19C T09UX0FUVFIsCi0JCQkJICAgIE5FVDJCSUdfTk9SX0JPT1RfQkFTRSwKLQkJCQkgICAgTkVUMkJJ R19OT1JfQk9PVF9TSVpFKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm5ldDJiaWdfbm9y X2ZsYXNoKTsKLQotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmbmV0MmJpZ19ncGlvX2J1dHRv bnMpOwotCW5ldDJiaWdfZ3Bpb19sZWRzX2luaXQoKTsKLQotCWkyY19yZWdpc3Rlcl9ib2FyZF9p bmZvKDAsIG5ldDJiaWdfaTJjX2RldmljZXMsCi0JCQkJQVJSQVlfU0laRShuZXQyYmlnX2kyY19k ZXZpY2VzKSk7Ci0KLQlvcmlvbl9ncGlvX3NldF92YWxpZChORVQyQklHX0dQSU9fUE9XRVJfT0ZG LCAxKTsKLQotCWlmIChncGlvX3JlcXVlc3QoTkVUMkJJR19HUElPX1BPV0VSX09GRiwgInBvd2Vy LW9mZiIpID09IDAgJiYKLQkgICAgZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KE5FVDJCSUdfR1BJT19Q T1dFUl9PRkYsIDApID09IDApCi0JCXJlZ2lzdGVyX3BsYXRmb3JtX3Bvd2VyX29mZihuZXQyYmln X3Bvd2VyX29mZik7Ci0JZWxzZQotCQlwcl9lcnIoIm5ldDJiaWc6IGZhaWxlZCB0byBjb25maWd1 cmUgcG93ZXItb2ZmIEdQSU9cbiIpOwotCi0JcHJfbm90aWNlKCJuZXQyYmlnOiBGbGFzaCB3cml0 aW5nIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLlxuIik7Ci19Ci0KLS8qIFdhcm5pbmc6IExhQ2llIHVz ZSBhIHdyb25nIG1hY2gtdHlwZSAoMHgyMGU9NTI2KSBpbiB0aGVpciBib290bG9hZGVyLiAqLwot TUFDSElORV9TVEFSVChORVQyQklHLCAiTGFDaWUgMkJpZyBOZXR3b3JrIikKLQkuYXRhZ19vZmZz ZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IE9SSU9ONVhfTlJfSVJRUywKLQkuaW5pdF9tYWNoaW5l CT0gbmV0MmJpZ19pbml0LAotCS5tYXBfaW8JCT0gb3Jpb241eF9tYXBfaW8sCi0JLmluaXRfZWFy bHkJPSBvcmlvbjV4X2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwK LQkuaW5pdF90aW1lCT0gb3Jpb241eF90aW1lcl9pbml0LAotCS5maXh1cAkJPSB0YWdfZml4dXBf bWVtMzIsCi0JLnJlc3RhcnQJPSBvcmlvbjV4X3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4 L3BjaS5jCmluZGV4IDA2ZjUzMjAwMzZiMS4uM2QxZTZhZDBlMTRiIDEwMDY0NAotLS0gYS9hcmNo L2FybS9tYWNoLW9yaW9uNXgvcGNpLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5j CkBAIC0xNSw3ICsxNSw2IEBACiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9t YWNoL3BjaS5oPgogI2luY2x1ZGUgPHBsYXQvcGNpZS5oPgotI2luY2x1ZGUgPHBsYXQvYWRkci1t YXAuaD4KICNpbmNsdWRlICJjb21tb24uaCIKICNpbmNsdWRlICJvcmlvbjV4LmgiCiAKZGlmZiAt LWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90ZXJhc3RhdGlvbl9wcm8yLXNldHVwLmMgYi9h cmNoL2FybS9tYWNoLW9yaW9uNXgvdGVyYXN0YXRpb25fcHJvMi1zZXR1cC5jCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBjM2RiMzM3Njk1MGEuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLW9yaW9uNXgvdGVyYXN0YXRpb25fcHJvMi1zZXR1cC5jCisrKyAvZGV2L251bGwK QEAgLTEsMzY2ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9y LWxhdGVyCi0vKgotICogQnVmZmFsbyBUZXJhc3RhdGlvbiBQcm8gSUkvTGl2ZSBCb2FyZCBTZXR1 cAotICoKLSAqIE1haW50YWluZXI6IFN5bHZlciBCcnVuZWF1IDxzeWx2ZXIuYnJ1bmVhdUBnb29n bGVtYWlsLmNvbT4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2dwaW8vbGVnYWN5Lmg+Ci0jaW5jbHVk ZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUg PGxpbnV4L2lycS5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgv bXRkL3BoeXNtYXAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUg PGxpbnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9yZWcuaD4KLSNpbmNsdWRlIDxh c20vbWFjaC10eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KLSNpbmNsdWRlIDxh c20vbWFjaC9wY2kuaD4KLSNpbmNsdWRlICJjb21tb24uaCIKLSNpbmNsdWRlICJtcHAuaCIKLSNp bmNsdWRlICJvcmlvbjV4LmgiCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVGVyYXN0YXRp b24gUHJvIDIvTGl2ZSBJbmZvCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIFRlcmFz dGF0aW9uIFBybyAyIGhhcmR3YXJlIDoKLSAqIC0gTWFydmVsbCA4OEY1MjgxLUQwCi0gKiAtIE1h cnZlbGwgODhTWDYwNDIgU0FUQSBjb250cm9sbGVyIChQQ0kpCi0gKiAtIE1hcnZlbGwgODhFMTEx OCBHaWdhYml0IEV0aGVybmV0IFBIWQotICogLSAyNTZLQiBOT1IgZmxhc2gKLSAqIC0gMTI4TUIg b2YgRERSIFJBTQotICogLSBQQ0llIHBvcnQgKG5vdCBlcXVpcHBlZCkKLSAqLwotCi0vKgotICog MjU2SyBOT1IgZmxhc2ggRGV2aWNlIGJ1cyBib290IGNoaXAgc2VsZWN0Ci0gKi8KLQotI2RlZmlu ZSBUU1AyX05PUl9CT09UX0JBU0UJMHhmNDAwMDAwMAotI2RlZmluZSBUU1AyX05PUl9CT09UX1NJ WkUJU1pfMjU2SwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIDI1NktCIE5PUiBGbGFzaCBv biBCT09UIERldmljZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRpYyBzdHJ1Y3QgcGh5 c21hcF9mbGFzaF9kYXRhIHRzcDJfbm9yX2ZsYXNoX2RhdGEgPSB7Ci0JLndpZHRoICAgID0gMSwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgdHNwMl9ub3JfZmxhc2hfcmVzb3VyY2UgPSB7 Ci0JLmZsYWdzID0gSU9SRVNPVVJDRV9NRU0sCi0JLnN0YXJ0ID0gVFNQMl9OT1JfQk9PVF9CQVNF LAotCS5lbmQgICA9IFRTUDJfTk9SX0JPT1RfQkFTRSArIFRTUDJfTk9SX0JPT1RfU0laRSAtIDEs Ci19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSB0c3AyX25vcl9mbGFzaCA9IHsK LQkubmFtZSAgICAgICAgICA9ICJwaHlzbWFwLWZsYXNoIiwKLQkuaWQgICAgICAgICAgICA9IDAs Ci0JLmRldiAgICAgICAgICAgPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJnRzcDJfbm9yX2ZsYXNo X2RhdGEsCi0JfSwKLQkubnVtX3Jlc291cmNlcyA9IDEsCi0JLnJlc291cmNlICAgICAgPSAmdHNw Ml9ub3JfZmxhc2hfcmVzb3VyY2UsCi19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFBD SQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFRTUDJfUENJX1NMT1QwX09GRlMJCTcK LSNkZWZpbmUgVFNQMl9QQ0lfU0xPVDBfSVJRX1BJTgkJMTEKLQotc3RhdGljIHZvaWQgX19pbml0 IHRzcDJfcGNpX3ByZWluaXQodm9pZCkKLXsKLQlpbnQgcGluOwotCi0JLyoKLQkgKiBDb25maWd1 cmUgUENJIEdQSU8gSVJRIHBpbnMKLQkgKi8KLQlwaW4gPSBUU1AyX1BDSV9TTE9UMF9JUlFfUElO OwotCWlmIChncGlvX3JlcXVlc3QocGluLCAiUENJIEludDEiKSA9PSAwKSB7Ci0JCWlmIChncGlv X2RpcmVjdGlvbl9pbnB1dChwaW4pID09IDApIHsKLQkJCWlycV9zZXRfaXJxX3R5cGUoZ3Bpb190 b19pcnEocGluKSwgSVJRX1RZUEVfTEVWRUxfTE9XKTsKLQkJfSBlbHNlIHsKLQkJCXByaW50ayhL RVJOX0VSUiAidHNwMl9wY2lfcHJlaW5pdCBmYWlsZWQgIgotCQkJCQkidG8gc2V0X2lycV90eXBl IHBpbiAlZFxuIiwgcGluKTsKLQkJCWdwaW9fZnJlZShwaW4pOwotCQl9Ci0JfSBlbHNlIHsKLQkJ cHJpbnRrKEtFUk5fRVJSICJ0c3AyX3BjaV9wcmVpbml0IGZhaWxlZCB0byAiCi0JCQkJImdwaW9f cmVxdWVzdCAlZFxuIiwgcGluKTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQgX19pbml0IHRzcDJfcGNp X21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGluKQotewot CWludCBpcnE7Ci0KLQkvKgotCSAqIENoZWNrIGZvciBkZXZpY2VzIHdpdGggaGFyZC13aXJlZCBJ UlFzLgotCSAqLwotCWlycSA9IG9yaW9uNXhfcGNpX21hcF9pcnEoZGV2LCBzbG90LCBwaW4pOwot CWlmIChpcnEgIT0gLTEpCi0JCXJldHVybiBpcnE7Ci0KLQkvKgotCSAqIFBDSSBJUlFzIGFyZSBj b25uZWN0ZWQgdmlhIEdQSU9zLgotCSAqLwotCWlmIChzbG90ID09IFRTUDJfUENJX1NMT1QwX09G RlMpCi0JCXJldHVybiBncGlvX3RvX2lycShUU1AyX1BDSV9TTE9UMF9JUlFfUElOKTsKLQotCXJl dHVybiAtMTsKLX0KLQotc3RhdGljIHN0cnVjdCBod19wY2kgdHNwMl9wY2kgX19pbml0ZGF0YSA9 IHsKLQkubnJfY29udHJvbGxlcnMgPSAyLAotCS5wcmVpbml0ICAgICAgICA9IHRzcDJfcGNpX3By ZWluaXQsCi0JLnNldHVwICAgICAgICAgID0gb3Jpb241eF9wY2lfc3lzX3NldHVwLAotCS5zY2Fu ICAgICAgICAgICA9IG9yaW9uNXhfcGNpX3N5c19zY2FuX2J1cywKLQkubWFwX2lycSAgICAgICAg PSB0c3AyX3BjaV9tYXBfaXJxLAotfTsKLQotc3RhdGljIGludCBfX2luaXQgdHNwMl9wY2lfaW5p dCh2b2lkKQotewotCWlmIChtYWNoaW5lX2lzX3RlcmFzdGF0aW9uX3BybzIoKSkKLQkJcGNpX2Nv bW1vbl9pbml0KCZ0c3AyX3BjaSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3Vic3lzX2luaXRjYWxs KHRzcDJfcGNpX2luaXQpOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEV0aGVybmV0Ci0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9y bV9kYXRhIHRzcDJfZXRoX2RhdGEgPSB7Ci0JLnBoeV9hZGRyCT0gMCwKLX07Ci0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogUlRDIDVDMzcyYSBvbiBJMkMgYnVzCi0gKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KLQotI2RlZmluZSBUU1AyX1JUQ19HUElPCTkKLQotc3RhdGljIHN0cnVjdCBpMmNfYm9h cmRfaW5mbyBfX2luaXRkYXRhIHRzcDJfaTJjX3J0YyA9IHsKLQlJMkNfQk9BUkRfSU5GTygicnM1 YzM3MmEiLCAweDMyKSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVGVyYXN0YXRp b24gUHJvIElJIHNwZWNpZmljIHBvd2VyIG9mZiBtZXRob2QgdmlhIFVBUlQxLWF0dGFjaGVkCi0g KiBtaWNyb2NvbnRyb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jZGVmaW5lIFVBUlQx X1JFRyh4KQkoVUFSVDFfVklSVF9CQVNFICsgKChVQVJUXyMjeCkgPDwgMikpCi0KLXN0YXRpYyBp bnQgdHNwMl9taWNvbnJlYWQodW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpCi17Ci0JaW50 IGk7Ci0JaW50IHRpbWVvdXQ7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQl0 aW1lb3V0ID0gMTA7Ci0KLQkJd2hpbGUgKCEocmVhZGwoVUFSVDFfUkVHKExTUikpICYgVUFSVF9M U1JfRFIpKSB7Ci0JCQlpZiAoLS10aW1lb3V0ID09IDApCi0JCQkJYnJlYWs7Ci0JCQl1ZGVsYXko MTAwMCk7Ci0JCX0KLQotCQlpZiAodGltZW91dCA9PSAwKQotCQkJYnJlYWs7Ci0JCWJ1ZltpXSA9 IHJlYWRsKFVBUlQxX1JFRyhSWCkpOwotCX0KLQotCS8qIHJldHVybiByZWFkIGJ5dGVzICovCi0J cmV0dXJuIGk7Ci19Ci0KLXN0YXRpYyBpbnQgdHNwMl9taWNvbndyaXRlKGNvbnN0IHVuc2lnbmVk IGNoYXIgKmJ1ZiwgaW50IGNvdW50KQotewotCWludCBpID0gMDsKLQotCXdoaWxlIChjb3VudC0t KSB7Ci0JCXdoaWxlICghKHJlYWRsKFVBUlQxX1JFRyhMU1IpKSAmIFVBUlRfTFNSX1RIUkUpKQot CQkJYmFycmllcigpOwotCQl3cml0ZWwoYnVmW2krK10sIFVBUlQxX1JFRyhUWCkpOwotCX0KLQot CXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHRzcDJfbWljb25zZW5kKGNvbnN0IHVuc2lnbmVk IGNoYXIgKmRhdGEsIGludCBjb3VudCkKLXsKLQlpbnQgaTsKLQl1bnNpZ25lZCBjaGFyIGNoZWNr c3VtID0gMDsKLQl1bnNpZ25lZCBjaGFyIHJlY3ZfYnVmWzQwXTsKLQl1bnNpZ25lZCBjaGFyIHNl bmRfYnVmWzQwXTsKLQl1bnNpZ25lZCBjaGFyIGNvcnJlY3RfYWNrWzNdOwotCWludCByZXRyeSA9 IDI7Ci0KLQkvKiBHZW5lcmF0ZSBjaGVja3N1bSAqLwotCWZvciAoaSA9IDA7IGkgPCBjb3VudDsg aSsrKQotCQljaGVja3N1bSAtPSAgZGF0YVtpXTsKLQotCWRvIHsKLQkJLyogU2VuZCBkYXRhICov Ci0JCXRzcDJfbWljb253cml0ZShkYXRhLCBjb3VudCk7Ci0KLQkJLyogc2VuZCBjaGVja3N1bSAq LwotCQl0c3AyX21pY29ud3JpdGUoJmNoZWNrc3VtLCAxKTsKLQotCQlpZiAodHNwMl9taWNvbnJl YWQocmVjdl9idWYsIHNpemVvZihyZWN2X2J1ZikpIDw9IDMpIHsKLQkJCXByaW50ayhLRVJOX0VS UiAiPiVzOiByZWNlaXZlIGZhaWxlZC5cbiIsIF9fZnVuY19fKTsKLQotCQkJLyogc2VuZCBwcmVh bWJsZSB0byBjbGVhciB0aGUgcmVjZWl2ZSBidWZmZXIgKi8KLQkJCW1lbXNldCgmc2VuZF9idWYs IDB4ZmYsIHNpemVvZihzZW5kX2J1ZikpOwotCQkJdHNwMl9taWNvbndyaXRlKHNlbmRfYnVmLCBz aXplb2Yoc2VuZF9idWYpKTsKLQotCQkJLyogbWFrZSBkdW1teSByZWFkcyAqLwotCQkJbWRlbGF5 KDEwMCk7Ci0JCQl0c3AyX21pY29ucmVhZChyZWN2X2J1Ziwgc2l6ZW9mKHJlY3ZfYnVmKSk7Ci0J CX0gZWxzZSB7Ci0JCQkvKiBHZW5lcmF0ZSBleHBlY3RlZCBhY2sgKi8KLQkJCWNvcnJlY3RfYWNr WzBdID0gMHgwMTsKLQkJCWNvcnJlY3RfYWNrWzFdID0gZGF0YVsxXTsKLQkJCWNvcnJlY3RfYWNr WzJdID0gMHgwMDsKLQotCQkJLyogY2hlY2tzdW0gQ2hlY2sgKi8KLQkJCWlmICgocmVjdl9idWZb MF0gKyByZWN2X2J1ZlsxXSArIHJlY3ZfYnVmWzJdICsKLQkJCSAgICAgcmVjdl9idWZbM10pICYg MHhGRikgewotCQkJCXByaW50ayhLRVJOX0VSUiAiPiVzOiBDaGVja3N1bSBFcnJvciA6ICIKLQkJ CQkJIlJlY2VpdmVkIGRhdGFbJTAyeCwgJTAyeCwgJTAyeCwgJTAyeF0iCi0JCQkJCSJcbiIsIF9f ZnVuY19fLCByZWN2X2J1ZlswXSwKLQkJCQkJcmVjdl9idWZbMV0sIHJlY3ZfYnVmWzJdLCByZWN2 X2J1ZlszXSk7Ci0JCQl9IGVsc2UgewotCQkJCS8qIENoZWNrIFJlY2VpdmVkIERhdGEgKi8KLQkJ CQlpZiAoY29ycmVjdF9hY2tbMF0gPT0gcmVjdl9idWZbMF0gJiYKLQkJCQkgICAgY29ycmVjdF9h Y2tbMV0gPT0gcmVjdl9idWZbMV0gJiYKLQkJCQkgICAgY29ycmVjdF9hY2tbMl0gPT0gcmVjdl9i dWZbMl0pIHsKLQkJCQkJLyogSW50ZXJ2YWwgZm9yIG5leHQgY29tbWFuZCAqLwotCQkJCQltZGVs YXkoMTApOwotCi0JCQkJCS8qIFJlY2VpdmUgQUNLICovCi0JCQkJCXJldHVybiAwOwotCQkJCX0K LQkJCX0KLQkJCS8qIFJlY2VpdmVkIE5BSyBvciBpbGxlZ2FsIERhdGEgKi8KLQkJCXByaW50ayhL RVJOX0VSUiAiPiVzOiBFcnJvciA6IE5BSyBvciBJbGxlZ2FsIERhdGEgIgotCQkJCQkiUmVjZWl2 ZWRcbiIsIF9fZnVuY19fKTsKLQkJfQotCX0gd2hpbGUgKHJldHJ5LS0pOwotCi0JLyogSW50ZXJ2 YWwgZm9yIG5leHQgY29tbWFuZCAqLwotCW1kZWxheSgxMCk7Ci0KLQlyZXR1cm4gLTE7Ci19Ci0K LXN0YXRpYyB2b2lkIHRzcDJfcG93ZXJfb2ZmKHZvaWQpCi17Ci0JY29uc3QgdW5zaWduZWQgY2hh ciB3YXRjaGRvZ2tpbGxbXQk9IHsweDAxLCAweDM1LCAweDAwfTsKLQljb25zdCB1bnNpZ25lZCBj aGFyIHNodXRkb3dud2FpdFtdCT0gezB4MDAsIDB4MGN9OwotCWNvbnN0IHVuc2lnbmVkIGNoYXIg cG93ZXJvZmZbXQkJPSB7MHgwMCwgMHgwNn07Ci0JLyogMzg0MDAgYmF1ZCBkaXZpc29yICovCi0J Y29uc3QgdW5zaWduZWQgZGl2aXNvciA9ICgob3Jpb241eF90Y2xrICsgKDggKiAzODQwMCkpIC8g KDE2ICogMzg0MDApKTsKLQotCXByX2luZm8oIiVzOiB0cmlnZ2VyaW5nIHBvd2VyLW9mZi4uLlxu IiwgX19mdW5jX18pOwotCi0JLyogaGlqYWNrIHVhcnQxIGFuZCByZXNldCBpbnRvIHNhbmUgc3Rh dGUgKDM4NDAwLDhuMSxldmVuIHBhcml0eSkgKi8KLQl3cml0ZWwoMHg4MywgVUFSVDFfUkVHKExD UikpOwotCXdyaXRlbChkaXZpc29yICYgMHhmZiwgVUFSVDFfUkVHKERMTCkpOwotCXdyaXRlbCgo ZGl2aXNvciA+PiA4KSAmIDB4ZmYsIFVBUlQxX1JFRyhETE0pKTsKLQl3cml0ZWwoMHgxYiwgVUFS VDFfUkVHKExDUikpOwotCXdyaXRlbCgweDAwLCBVQVJUMV9SRUcoSUVSKSk7Ci0Jd3JpdGVsKDB4 MDcsIFVBUlQxX1JFRyhGQ1IpKTsKLQl3cml0ZWwoMHgwMCwgVUFSVDFfUkVHKE1DUikpOwotCi0J LyogU2VuZCB0aGUgY29tbWFuZHMgdG8gc2h1dGRvd24gdGhlIFRlcmFzdGF0aW9uIFBybyBJSSAq LwotCXRzcDJfbWljb25zZW5kKHdhdGNoZG9na2lsbCwgc2l6ZW9mKHdhdGNoZG9na2lsbCkpIDsK LQl0c3AyX21pY29uc2VuZChzaHV0ZG93bndhaXQsIHNpemVvZihzaHV0ZG93bndhaXQpKSA7Ci0J dHNwMl9taWNvbnNlbmQocG93ZXJvZmYsIHNpemVvZihwb3dlcm9mZikpOwotfQotCi0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKLSAqIEdlbmVyYWwgU2V0dXAKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot c3RhdGljIHVuc2lnbmVkIGludCB0c3AyX21wcF9tb2Rlc1tdIF9faW5pdGRhdGEgPSB7Ci0JTVBQ MF9QQ0lFX1JTVF9PVVRuLAotCU1QUDFfVU5VU0VELAotCU1QUDJfVU5VU0VELAotCU1QUDNfVU5V U0VELAotCU1QUDRfTkFORCwJCS8qIEJPT1QgTkFORCBGbGFzaCBSRW4gKi8KLQlNUFA1X05BTkQs CQkvKiBCT09UIE5BTkQgRmxhc2ggV0VuICovCi0JTVBQNl9OQU5ELAkJLyogQk9PVCBOQU5EIEZs YXNoIEhSRW5bMF0gKi8KLQlNUFA3X05BTkQsCQkvKiBCT09UIE5BTkQgRmxhc2ggV0VuWzBdICov Ci0JTVBQOF9HUElPLAkJLyogTUlDT04gaW50ICovCi0JTVBQOV9HUElPLAkJLyogUlRDIGludCAq LwotCU1QUDEwX1VOVVNFRCwKLQlNUFAxMV9HUElPLAkJLyogUENJIEludCBBICovCi0JTVBQMTJf VU5VU0VELAotCU1QUDEzX0dQSU8sCQkvKiBVUFMgb24gVUFSVDAgZW5hYmxlICovCi0JTVBQMTRf R1BJTywJCS8qIFVQUyBsb3cgYmF0dGVyeSBkZXRlY3Rpb24gKi8KLQlNUFAxNV9VTlVTRUQsCi0J TVBQMTZfVUFSVCwJCS8qIFVBUlQxIFJYRCAqLwotCU1QUDE3X1VBUlQsCQkvKiBVQVJUMSBUWEQg Ki8KLQlNUFAxOF9VQVJULAkJLyogVUFSVDEgQ1RTbiAqLwotCU1QUDE5X1VBUlQsCQkvKiBVQVJU MSBSVFNuICovCi0JMCwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCB0c3AyX2luaXQodm9pZCkK LXsKLQkvKgotCSAqIFNldHVwIGJhc2ljIE9yaW9uIGZ1bmN0aW9ucy4gTmVlZCB0byBiZSBjYWxs ZWQgZWFybHkuCi0JICovCi0Jb3Jpb241eF9pbml0KCk7Ci0KLQlvcmlvbjV4X21wcF9jb25mKHRz cDJfbXBwX21vZGVzKTsKLQotCS8qCi0JICogQ29uZmlndXJlIHBlcmlwaGVyYWxzLgotCSAqLwot CW12ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9pZChPUklPTl9NQlVTX0RFVkJVU19CT09UX1RBUkdF VCwKLQkJCQkgICAgT1JJT05fTUJVU19ERVZCVVNfQk9PVF9BVFRSLAotCQkJCSAgICBUU1AyX05P Ul9CT09UX0JBU0UsCi0JCQkJICAgIFRTUDJfTk9SX0JPT1RfU0laRSk7Ci0JcGxhdGZvcm1fZGV2 aWNlX3JlZ2lzdGVyKCZ0c3AyX25vcl9mbGFzaCk7Ci0KLQlvcmlvbjV4X2VoY2kwX2luaXQoKTsK LQlvcmlvbjV4X2V0aF9pbml0KCZ0c3AyX2V0aF9kYXRhKTsKLQlvcmlvbjV4X2kyY19pbml0KCk7 Ci0Jb3Jpb241eF91YXJ0MF9pbml0KCk7Ci0Jb3Jpb241eF91YXJ0MV9pbml0KCk7Ci0KLQkvKiBH ZXQgUlRDIElSUSBhbmQgcmVnaXN0ZXIgdGhlIGNoaXAgKi8KLQlpZiAoZ3Bpb19yZXF1ZXN0KFRT UDJfUlRDX0dQSU8sICJydGMiKSA9PSAwKSB7Ci0JCWlmIChncGlvX2RpcmVjdGlvbl9pbnB1dChU U1AyX1JUQ19HUElPKSA9PSAwKQotCQkJdHNwMl9pMmNfcnRjLmlycSA9IGdwaW9fdG9faXJxKFRT UDJfUlRDX0dQSU8pOwotCQllbHNlCi0JCQlncGlvX2ZyZWUoVFNQMl9SVENfR1BJTyk7Ci0JfQot CWlmICh0c3AyX2kyY19ydGMuaXJxID09IDApCi0JCXByX3dhcm4oInRzcDJfaW5pdDogZmFpbGVk IHRvIGdldCBSVEMgSVJRXG4iKTsKLQlpMmNfcmVnaXN0ZXJfYm9hcmRfaW5mbygwLCAmdHNwMl9p MmNfcnRjLCAxKTsKLQotCS8qIHJlZ2lzdGVyIFRlcmFzdGF0aW9uIFBybyBJSSBzcGVjaWZpYyBw b3dlci1vZmYgbWV0aG9kICovCi0JcmVnaXN0ZXJfcGxhdGZvcm1fcG93ZXJfb2ZmKHRzcDJfcG93 ZXJfb2ZmKTsKLX0KLQotTUFDSElORV9TVEFSVChURVJBU1RBVElPTl9QUk8yLCAiQnVmZmFsbyBU ZXJhc3RhdGlvbiBQcm8gSUkvTGl2ZSIpCi0JLyogTWFpbnRhaW5lcjogIFN5bHZlciBCcnVuZWF1 IDxzeWx2ZXIuYnJ1bmVhdUBnb29nbGVtYWlsLmNvbT4gKi8KLQkuYXRhZ19vZmZzZXQJPSAweDEw MCwKLQkubnJfaXJxcwk9IE9SSU9ONVhfTlJfSVJRUywKLQkuaW5pdF9tYWNoaW5lCT0gdHNwMl9p bml0LAotCS5tYXBfaW8JCT0gb3Jpb241eF9tYXBfaW8sCi0JLmluaXRfZWFybHkJPSBvcmlvbjV4 X2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwKLQkuaW5pdF90aW1l CT0gb3Jpb241eF90aW1lcl9pbml0LAotCS5maXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCi0JLnJl c3RhcnQJPSBvcmlvbjV4X3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHMy MDktc2V0dXAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVjZDUwMzA2YzY1Li4w MDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMKKysr IC9kZXYvbnVsbApAQCAtMSwzMzEgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb3ItbGF0ZXIKLS8qCi0gKiBRTkFQIFRTLTEwOS9UUy0yMDkgQm9hcmQgU2V0dXAK LSAqCi0gKiBNYWludGFpbmVyOiBCeXJvbiBCcmFkbGV5IDxieXJvbi5iYnJhZGxleUBnbWFpbC5j b20+Ci0gKi8KLSNpbmNsdWRlIDxsaW51eC9ncGlvL2xlZ2FjeS5oPgotI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9p cnEuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvcGh5c21hcC5oPgotI2luY2x1ZGUgPGxpbnV4L210 ZC9yYXduYW5kLmg+Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4eF9ldGguaD4KLSNpbmNsdWRlIDxs aW51eC9ncGlvX2tleXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2luY2x1ZGUgPGxp bnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9yZWcuaD4KLSNpbmNsdWRlIDxsaW51 eC9hdGFfcGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgotI2luY2x1ZGUg PGFzbS9tYWNoL2FyY2guaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9wY2kuaD4KLSNpbmNsdWRlICJj b21tb24uaCIKLSNpbmNsdWRlICJtcHAuaCIKLSNpbmNsdWRlICJvcmlvbjV4LmgiCi0jaW5jbHVk ZSAidHN4MDktY29tbW9uLmgiCi0KLSNkZWZpbmUgUU5BUF9UUzIwOV9OT1JfQk9PVF9CQVNFIDB4 ZjQwMDAwMDAKLSNkZWZpbmUgUU5BUF9UUzIwOV9OT1JfQk9PVF9TSVpFIFNaXzhNCi0KLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0gKiA4TWlCIE5PUiBmbGFzaC4gVGhlIHN0cnVjdCBtdGRfcGFydGl0 aW9uIGlzIG5vdCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUKLSAqICAgICBwYXJ0aXRpb25zIG9u IHRoZSBkZXZpY2UgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoCi0g KiAgICAgZXhpc3RpbmcgUU5BUCBmaXJtd2FyZS4KLSAqCi0gKiBMYXlvdXQgYXMgdXNlZCBieSBR TkFQOgotICogIFsyXSAweDAwMDAwMDAwLTB4MDAyMDAwMDAgOiAiS2VybmVsIgotICogIFszXSAw eDAwMjAwMDAwLTB4MDA2MDAwMDAgOiAiUm9vdEZTMSIKLSAqICBbNF0gMHgwMDYwMDAwMC0weDAw NzAwMDAwIDogIlJvb3RGUzIiCi0gKiAgWzZdIDB4MDA3MDAwMDAtMHgwMDc2MDAwMCA6ICJOQVMg Q29uZmlnIiAocmVhZC1vbmx5KQotICogIFs1XSAweDAwNzYwMDAwLTB4MDA3ODAwMDAgOiAiVS1C b290IENvbmZpZyIKLSAqICBbMV0gMHgwMDc4MDAwMC0weDAwODAwMDAwIDogIlUtQm9vdCIgKHJl YWQtb25seSkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG10ZF9wYXJ0aXRp b24gcW5hcF90czIwOV9wYXJ0aXRpb25zW10gPSB7Ci0JewotCQkubmFtZQkJPSAiVS1Cb290IiwK LQkJLnNpemUJCT0gMHgwMDA4MDAwMCwKLQkJLm9mZnNldAkJPSAweDAwNzgwMDAwLAotCQkubWFz a19mbGFncwk9IE1URF9XUklURUFCTEUsCi0JfSwgewotCQkubmFtZQkJPSAiS2VybmVsIiwKLQkJ LnNpemUJCT0gMHgwMDIwMDAwMCwKLQkJLm9mZnNldAkJPSAwLAotCX0sIHsKLQkJLm5hbWUJCT0g IlJvb3RGUzEiLAotCQkuc2l6ZQkJPSAweDAwNDAwMDAwLAotCQkub2Zmc2V0CQk9IDB4MDAyMDAw MDAsCi0JfSwgewotCQkubmFtZQkJPSAiUm9vdEZTMiIsCi0JCS5zaXplCQk9IDB4MDAxMDAwMDAs Ci0JCS5vZmZzZXQJCT0gMHgwMDYwMDAwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJVLUJvb3QgQ29u ZmlnIiwKLQkJLnNpemUJCT0gMHgwMDAyMDAwMCwKLQkJLm9mZnNldAkJPSAweDAwNzYwMDAwLAot CX0sIHsKLQkJLm5hbWUJCT0gIk5BUyBDb25maWciLAotCQkuc2l6ZQkJPSAweDAwMDYwMDAwLAot CQkub2Zmc2V0CQk9IDB4MDA3MDAwMDAsCi0JCS5tYXNrX2ZsYWdzCT0gTVREX1dSSVRFQUJMRSwK LQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2RhdGEgcW5hcF90czIwOV9u b3JfZmxhc2hfZGF0YSA9IHsKLQkud2lkdGgJCT0gMSwKLQkucGFydHMJCT0gcW5hcF90czIwOV9w YXJ0aXRpb25zLAotCS5ucl9wYXJ0cwk9IEFSUkFZX1NJWkUocW5hcF90czIwOV9wYXJ0aXRpb25z KQotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBxbmFwX3RzMjA5X25vcl9mbGFzaF9yZXNv dXJjZSA9IHsKLQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKLQkuc3RhcnQJPSBRTkFQX1RTMjA5 X05PUl9CT09UX0JBU0UsCi0JLmVuZAk9IFFOQVBfVFMyMDlfTk9SX0JPT1RfQkFTRSArIFFOQVBf VFMyMDlfTk9SX0JPT1RfU0laRSAtIDEsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rl dmljZSBxbmFwX3RzMjA5X25vcl9mbGFzaCA9IHsKLQkubmFtZQkJPSAicGh5c21hcC1mbGFzaCIs Ci0JLmlkCQk9IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJnFuYXBfdHMyMDlf bm9yX2ZsYXNoX2RhdGEsCi0JfSwKLQkucmVzb3VyY2UJPSAmcW5hcF90czIwOV9ub3JfZmxhc2hf cmVzb3VyY2UsCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotfTsKLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBQQ0kKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jZGVmaW5lIFFOQVBfVFMyMDlf UENJX1NMT1QwX09GRlMJNwotI2RlZmluZSBRTkFQX1RTMjA5X1BDSV9TTE9UMF9JUlFfUElOCTYK LSNkZWZpbmUgUU5BUF9UUzIwOV9QQ0lfU0xPVDFfSVJRX1BJTgk3Ci0KLXN0YXRpYyB2b2lkIF9f aW5pdCBxbmFwX3RzMjA5X3BjaV9wcmVpbml0KHZvaWQpCi17Ci0JaW50IHBpbjsKLQotCS8qCi0J ICogQ29uZmlndXJlIFBDSSBHUElPIElSUSBwaW5zCi0JICovCi0JcGluID0gUU5BUF9UUzIwOV9Q Q0lfU0xPVDBfSVJRX1BJTjsKLQlpZiAoZ3Bpb19yZXF1ZXN0KHBpbiwgIlBDSSBJbnQxIikgPT0g MCkgewotCQlpZiAoZ3Bpb19kaXJlY3Rpb25faW5wdXQocGluKSA9PSAwKSB7Ci0JCQlpcnFfc2V0 X2lycV90eXBlKGdwaW9fdG9faXJxKHBpbiksIElSUV9UWVBFX0xFVkVMX0xPVyk7Ci0JCX0gZWxz ZSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgInFuYXBfdHMyMDlfcGNpX3ByZWluaXQgZmFpbGVkIHRv ICIKLQkJCQkJInNldF9pcnFfdHlwZSBwaW4gJWRcbiIsIHBpbik7Ci0JCQlncGlvX2ZyZWUocGlu KTsKLQkJfQotCX0gZWxzZSB7Ci0JCXByaW50ayhLRVJOX0VSUiAicW5hcF90czIwOV9wY2lfcHJl aW5pdCBmYWlsZWQgdG8gZ3Bpb19yZXF1ZXN0ICIKLQkJCQkiJWRcbiIsIHBpbik7Ci0JfQotCi0J cGluID0gUU5BUF9UUzIwOV9QQ0lfU0xPVDFfSVJRX1BJTjsKLQlpZiAoZ3Bpb19yZXF1ZXN0KHBp biwgIlBDSSBJbnQyIikgPT0gMCkgewotCQlpZiAoZ3Bpb19kaXJlY3Rpb25faW5wdXQocGluKSA9 PSAwKSB7Ci0JCQlpcnFfc2V0X2lycV90eXBlKGdwaW9fdG9faXJxKHBpbiksIElSUV9UWVBFX0xF VkVMX0xPVyk7Ci0JCX0gZWxzZSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgInFuYXBfdHMyMDlfcGNp X3ByZWluaXQgZmFpbGVkICIKLQkJCQkJInRvIHNldF9pcnFfdHlwZSBwaW4gJWRcbiIsIHBpbik7 Ci0JCQlncGlvX2ZyZWUocGluKTsKLQkJfQotCX0gZWxzZSB7Ci0JCXByaW50ayhLRVJOX0VSUiAi cW5hcF90czIwOV9wY2lfcHJlaW5pdCBmYWlsZWQgdG8gZ3Bpb19yZXF1ZXN0ICIKLQkJCQkiJWRc biIsIHBpbik7Ci0JfQotfQotCi1zdGF0aWMgaW50IF9faW5pdCBxbmFwX3RzMjA5X3BjaV9tYXBf aXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsCi0JdTggcGluKQotewotCWlu dCBpcnE7Ci0KLQkvKgotCSAqIENoZWNrIGZvciBkZXZpY2VzIHdpdGggaGFyZC13aXJlZCBJUlFz LgotCSAqLwotCWlycSA9IG9yaW9uNXhfcGNpX21hcF9pcnEoZGV2LCBzbG90LCBwaW4pOwotCWlm IChpcnEgIT0gLTEpCi0JCXJldHVybiBpcnE7Ci0KLQkvKgotCSAqIFBDSSBJUlFzIGFyZSBjb25u ZWN0ZWQgdmlhIEdQSU9zLgotCSAqLwotCXN3aXRjaCAoc2xvdCAtIFFOQVBfVFMyMDlfUENJX1NM T1QwX09GRlMpIHsKLQljYXNlIDA6Ci0JCXJldHVybiBncGlvX3RvX2lycShRTkFQX1RTMjA5X1BD SV9TTE9UMF9JUlFfUElOKTsKLQljYXNlIDE6Ci0JCXJldHVybiBncGlvX3RvX2lycShRTkFQX1RT MjA5X1BDSV9TTE9UMV9JUlFfUElOKTsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLTE7Ci0JfQotfQot Ci1zdGF0aWMgc3RydWN0IGh3X3BjaSBxbmFwX3RzMjA5X3BjaSBfX2luaXRkYXRhID0gewotCS5u cl9jb250cm9sbGVycwk9IDIsCi0JLnByZWluaXQJPSBxbmFwX3RzMjA5X3BjaV9wcmVpbml0LAot CS5zZXR1cAkJPSBvcmlvbjV4X3BjaV9zeXNfc2V0dXAsCi0JLnNjYW4JCT0gb3Jpb241eF9wY2lf c3lzX3NjYW5fYnVzLAotCS5tYXBfaXJxCT0gcW5hcF90czIwOV9wY2lfbWFwX2lycSwKLX07Ci0K LXN0YXRpYyBpbnQgX19pbml0IHFuYXBfdHMyMDlfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAobWFj aGluZV9pc190czIwOSgpKQotCQlwY2lfY29tbW9uX2luaXQoJnFuYXBfdHMyMDlfcGNpKTsKLQot CXJldHVybiAwOwotfQotCi1zdWJzeXNfaW5pdGNhbGwocW5hcF90czIwOV9wY2lfaW5pdCk7Ci0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotICogUlRDIFMzNTM5MEEgb24gSTJDIGJ1cwotICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi0KLSNkZWZpbmUgVFMyMDlfUlRDX0dQSU8JMwotCi1zdGF0aWMgc3Ry dWN0IGkyY19ib2FyZF9pbmZvIF9faW5pdGRhdGEgcW5hcF90czIwOV9pMmNfcnRjID0gewotCUky Q19CT0FSRF9JTkZPKCJzMzUzOTBhIiwgMHgzMCksCi0JLmlycQk9IDAsCi19OwotCi0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogR1BJTyBBdHRhY2hlZCBLZXlzCi0gKiAgICAgUG93ZXIgYnV0dG9u IGlzIGF0dGFjaGVkIHRvIHRoZSBQSUMgbWljcm9jb250cm9sbGVyCi0gKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KLQotI2RlZmluZSBRTkFQX1RTMjA5X0dQSU9fS0VZX01FRElBCTEKLSNkZWZpbmUgUU5B UF9UUzIwOV9HUElPX0tFWV9SRVNFVAkyCi0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRv biBxbmFwX3RzMjA5X2J1dHRvbnNbXSA9IHsKLQl7Ci0JCS5jb2RlCQk9IEtFWV9DT1BZLAotCQku Z3BpbwkJPSBRTkFQX1RTMjA5X0dQSU9fS0VZX01FRElBLAotCQkuZGVzYwkJPSAiVVNCIENvcHkg QnV0dG9uIiwKLQkJLmFjdGl2ZV9sb3cJPSAxLAotCX0sIHsKLQkJLmNvZGUJCT0gS0VZX1JFU1RB UlQsCi0JCS5ncGlvCQk9IFFOQVBfVFMyMDlfR1BJT19LRVlfUkVTRVQsCi0JCS5kZXNjCQk9ICJS ZXNldCBCdXR0b24iLAotCQkuYWN0aXZlX2xvdwk9IDEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgcW5hcF90czIwOV9idXR0b25fZGF0YSA9IHsKLQku YnV0dG9ucwk9IHFuYXBfdHMyMDlfYnV0dG9ucywKLQkubmJ1dHRvbnMJPSBBUlJBWV9TSVpFKHFu YXBfdHMyMDlfYnV0dG9ucyksCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBx bmFwX3RzMjA5X2J1dHRvbl9kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gImdwaW8ta2V5cyIsCi0JLmlk CQk9IC0xLAotCS5udW1fcmVzb3VyY2VzCT0gMCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2Rh dGEJPSAmcW5hcF90czIwOV9idXR0b25fZGF0YSwKLQl9LAotfTsKLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0gKiBTQVRBCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbXZf c2F0YV9wbGF0Zm9ybV9kYXRhIHFuYXBfdHMyMDlfc2F0YV9kYXRhID0gewotCS5uX3BvcnRzCT0g MiwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0gKiBHZW5lcmFsIFNldHVwCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgdHMyMDlfbXBwX21vZGVzW10g X19pbml0ZGF0YSA9IHsKLQlNUFAwX1VOVVNFRCwKLQlNUFAxX0dQSU8sCQkvKiBVU0IgY29weSBi dXR0b24gKi8KLQlNUFAyX0dQSU8sCQkvKiBMb2FkIGRlZmF1bHRzIGJ1dHRvbiAqLwotCU1QUDNf R1BJTywJCS8qIEdQSU8gUlRDICovCi0JTVBQNF9VTlVTRUQsCi0JTVBQNV9VTlVTRUQsCi0JTVBQ Nl9HUElPLAkJLyogUENJIEludCBBICovCi0JTVBQN19HUElPLAkJLyogUENJIEludCBCICovCi0J TVBQOF9VTlVTRUQsCi0JTVBQOV9VTlVTRUQsCi0JTVBQMTBfVU5VU0VELAotCU1QUDExX1VOVVNF RCwKLQlNUFAxMl9TQVRBX0xFRCwJCS8qIFNBVEEgMCBwcmVzZW5jZSAqLwotCU1QUDEzX1NBVEFf TEVELAkJLyogU0FUQSAxIHByZXNlbmNlICovCi0JTVBQMTRfU0FUQV9MRUQsCQkvKiBTQVRBIDAg YWN0aXZlICovCi0JTVBQMTVfU0FUQV9MRUQsCQkvKiBTQVRBIDEgYWN0aXZlICovCi0JTVBQMTZf VUFSVCwJCS8qIFVBUlQxIFJYRCAqLwotCU1QUDE3X1VBUlQsCQkvKiBVQVJUMSBUWEQgKi8KLQlN UFAxOF9HUElPLAkJLyogU1dfUlNUICovCi0JTVBQMTlfVU5VU0VELAotCTAsCi19OwotCi1zdGF0 aWMgdm9pZCBfX2luaXQgcW5hcF90czIwOV9pbml0KHZvaWQpCi17Ci0JLyoKLQkgKiBTZXR1cCBi YXNpYyBPcmlvbiBmdW5jdGlvbnMuIE5lZWQgdG8gYmUgY2FsbGVkIGVhcmx5LgotCSAqLwotCW9y aW9uNXhfaW5pdCgpOwotCi0Jb3Jpb241eF9tcHBfY29uZih0czIwOV9tcHBfbW9kZXMpOwotCi0J LyoKLQkgKiBNUFBbMjBdIFBDSSBjbG9jayAwCi0JICogTVBQWzIxXSBQQ0kgY2xvY2sgMQotCSAq IE1QUFsyMl0gVVNCIDAgb3ZlciBjdXJyZW50Ci0JICogTVBQWzIzLTI1XSBSZXNlcnZlZAotCSAq LwotCi0JLyoKLQkgKiBDb25maWd1cmUgcGVyaXBoZXJhbHMuCi0JICovCi0JbXZlYnVfbWJ1c19h ZGRfd2luZG93X2J5X2lkKE9SSU9OX01CVVNfREVWQlVTX0JPT1RfVEFSR0VULAotCQkJCSAgICBP UklPTl9NQlVTX0RFVkJVU19CT09UX0FUVFIsCi0JCQkJICAgIFFOQVBfVFMyMDlfTk9SX0JPT1Rf QkFTRSwKLQkJCQkgICAgUU5BUF9UUzIwOV9OT1JfQk9PVF9TSVpFKTsKLQlwbGF0Zm9ybV9kZXZp Y2VfcmVnaXN0ZXIoJnFuYXBfdHMyMDlfbm9yX2ZsYXNoKTsKLQotCW9yaW9uNXhfZWhjaTBfaW5p dCgpOwotCW9yaW9uNXhfZWhjaTFfaW5pdCgpOwotCXFuYXBfdHN4MDlfZmluZF9tYWNfYWRkcihR TkFQX1RTMjA5X05PUl9CT09UX0JBU0UgKwotCQkJCSBxbmFwX3RzMjA5X3BhcnRpdGlvbnNbNV0u b2Zmc2V0LAotCQkJCSBxbmFwX3RzMjA5X3BhcnRpdGlvbnNbNV0uc2l6ZSk7Ci0Jb3Jpb241eF9l dGhfaW5pdCgmcW5hcF90c3gwOV9ldGhfZGF0YSk7Ci0Jb3Jpb241eF9pMmNfaW5pdCgpOwotCW9y aW9uNXhfc2F0YV9pbml0KCZxbmFwX3RzMjA5X3NhdGFfZGF0YSk7Ci0Jb3Jpb241eF91YXJ0MF9p bml0KCk7Ci0Jb3Jpb241eF91YXJ0MV9pbml0KCk7Ci0Jb3Jpb241eF94b3JfaW5pdCgpOwotCi0J cGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZxbmFwX3RzMjA5X2J1dHRvbl9kZXZpY2UpOwotCi0J LyogR2V0IFJUQyBJUlEgYW5kIHJlZ2lzdGVyIHRoZSBjaGlwICovCi0JaWYgKGdwaW9fcmVxdWVz dChUUzIwOV9SVENfR1BJTywgInJ0YyIpID09IDApIHsKLQkJaWYgKGdwaW9fZGlyZWN0aW9uX2lu cHV0KFRTMjA5X1JUQ19HUElPKSA9PSAwKQotCQkJcW5hcF90czIwOV9pMmNfcnRjLmlycSA9IGdw aW9fdG9faXJxKFRTMjA5X1JUQ19HUElPKTsKLQkJZWxzZQotCQkJZ3Bpb19mcmVlKFRTMjA5X1JU Q19HUElPKTsKLQl9Ci0JaWYgKHFuYXBfdHMyMDlfaTJjX3J0Yy5pcnEgPT0gMCkKLQkJcHJfd2Fy bigicW5hcF90czIwOV9pbml0OiBmYWlsZWQgdG8gZ2V0IFJUQyBJUlFcbiIpOwotCWkyY19yZWdp c3Rlcl9ib2FyZF9pbmZvKDAsICZxbmFwX3RzMjA5X2kyY19ydGMsIDEpOwotCi0JLyogcmVnaXN0 ZXIgdHN4MDkgc3BlY2lmaWMgcG93ZXItb2ZmIG1ldGhvZCAqLwotCXJlZ2lzdGVyX3BsYXRmb3Jt X3Bvd2VyX29mZihxbmFwX3RzeDA5X3Bvd2VyX29mZik7Ci19Ci0KLU1BQ0hJTkVfU1RBUlQoVFMy MDksICJRTkFQIFRTLTEwOS9UUy0yMDkiKQotCS8qIE1haW50YWluZXI6IEJ5cm9uIEJyYWRsZXkg PGJ5cm9uLmJicmFkbGV5QGdtYWlsLmNvbT4gKi8KLQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQku bnJfaXJxcwk9IE9SSU9ONVhfTlJfSVJRUywKLQkuaW5pdF9tYWNoaW5lCT0gcW5hcF90czIwOV9p bml0LAotCS5tYXBfaW8JCT0gb3Jpb241eF9tYXBfaW8sCi0JLmluaXRfZWFybHkJPSBvcmlvbjV4 X2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwKLQkuaW5pdF90aW1l CT0gb3Jpb241eF90aW1lcl9pbml0LAotCS5maXh1cAkJPSB0YWdfZml4dXBfbWVtMzIsCi0JLnJl c3RhcnQJPSBvcmlvbjV4X3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM0 MDktc2V0dXAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkyYWNlZjBiNDVmLi4w MDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMKKysr IC9kZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb3ItbGF0ZXIKLS8qCi0gKiBRTkFQIFRTLTQwOSBCb2FyZCBTZXR1cAotICoKLSAq IE1haW50YWluZXI6IFN5bHZlciBCcnVuZWF1IDxzeWx2ZXIuYnJ1bmVhdUBnbWFpbC5jb20+Ci0g KgotICogQ29weXJpZ2h0IChDKSAyMDA4ICBTeWx2ZXIgQnJ1bmVhdSA8c3lsdmVyLmJydW5lYXVA Z21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA4ICBNYXJ0aW4gTWljaGxtYXlyIDx0Ym1A Y3lyaXVzLmNvbT4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2dwaW8vbGVnYWN5Lmg+Ci0jaW5jbHVk ZSA8bGludXgvZ3Bpby9tYWNoaW5lLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5j bHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgot I2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L2lycS5oPgotI2luY2x1ZGUg PGxpbnV4L210ZC9waHlzbWFwLmg+Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4eF9ldGguaD4KLSNp bmNsdWRlIDxsaW51eC9sZWRzLmg+Ci0jaW5jbHVkZSA8bGludXgvZ3Bpb19rZXlzLmg+Ci0jaW5j bHVkZSA8bGludXgvaW5wdXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxs aW51eC9zZXJpYWxfcmVnLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRl IDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvcGNpLmg+Ci0jaW5jbHVkZSAi Y29tbW9uLmgiCi0jaW5jbHVkZSAibXBwLmgiCi0jaW5jbHVkZSAib3Jpb241eC5oIgotI2luY2x1 ZGUgInRzeDA5LWNvbW1vbi5oIgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFFOQVAgVFMt NDA5IEluZm8KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogUU5BUCBUUy00MDkgaGFy ZHdhcmUgOgotICogLSBNYXJ2ZWxsIDg4RjUyODEtRDAKLSAqIC0gTWFydmVsbCA4OFNYNzA0MiBT QVRBIGNvbnRyb2xsZXIgKFBDSWUpCi0gKiAtIE1hcnZlbGwgODhFMTExOCBHaWdhYml0IEV0aGVy bmV0IFBIWQotICogLSBSVEMgUzM1MzkwQSAoQDB4MzApIG9uIEkyQyBidXMKLSAqIC0gOE1CIE5P UiBmbGFzaAotICogLSAyNTZNQiBvZiBERFItMiBSQU0KLSAqLwotCi0vKgotICogOE1CIE5PUiBm bGFzaCBEZXZpY2UgYnVzIGJvb3QgY2hpcCBzZWxlY3QKLSAqLwotCi0jZGVmaW5lIFFOQVBfVFM0 MDlfTk9SX0JPT1RfQkFTRSAweGZmODAwMDAwCi0jZGVmaW5lIFFOQVBfVFM0MDlfTk9SX0JPT1Rf U0laRSBTWl84TQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogOE1pQiBOT1IgZmxhc2guIFRo ZSBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBpcyBub3QgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlCi0g KiAgICAgcGFydGl0aW9ucyBvbiB0aGUgZGV2aWNlIGJlY2F1c2Ugd2Ugd2FudCB0byBrZWVwIGNv bXBhdGliaWxpdHkgd2l0aAotICogICAgIGV4aXN0aW5nIFFOQVAgZmlybXdhcmUuCi0gKgotICog TGF5b3V0IGFzIHVzZWQgYnkgUU5BUDoKLSAqICBbMl0gMHgwMDAwMDAwMC0weDAwMjAwMDAwIDog Iktlcm5lbCIKLSAqICBbM10gMHgwMDIwMDAwMC0weDAwNjAwMDAwIDogIlJvb3RGUzEiCi0gKiAg WzRdIDB4MDA2MDAwMDAtMHgwMDcwMDAwMCA6ICJSb290RlMyIgotICogIFs2XSAweDAwNzAwMDAw LTB4MDA3NjAwMDAgOiAiTkFTIENvbmZpZyIgKHJlYWQtb25seSkKLSAqICBbNV0gMHgwMDc2MDAw MC0weDAwNzgwMDAwIDogIlUtQm9vdCBDb25maWciCi0gKiAgWzFdIDB4MDA3ODAwMDAtMHgwMDgw MDAwMCA6ICJVLUJvb3QiIChyZWFkLW9ubHkpCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGlj IHN0cnVjdCBtdGRfcGFydGl0aW9uIHFuYXBfdHM0MDlfcGFydGl0aW9uc1tdID0gewotCXsKLQkJ Lm5hbWUJCT0gIlUtQm9vdCIsCi0JCS5zaXplCQk9IDB4MDAwODAwMDAsCi0JCS5vZmZzZXQJCT0g MHgwMDc4MDAwMCwKLQkJLm1hc2tfZmxhZ3MJPSBNVERfV1JJVEVBQkxFLAotCX0sIHsKLQkJLm5h bWUJCT0gIktlcm5lbCIsCi0JCS5zaXplCQk9IDB4MDAyMDAwMDAsCi0JCS5vZmZzZXQJCT0gMCwK LQl9LCB7Ci0JCS5uYW1lCQk9ICJSb290RlMxIiwKLQkJLnNpemUJCT0gMHgwMDQwMDAwMCwKLQkJ Lm9mZnNldAkJPSAweDAwMjAwMDAwLAotCX0sIHsKLQkJLm5hbWUJCT0gIlJvb3RGUzIiLAotCQku c2l6ZQkJPSAweDAwMTAwMDAwLAotCQkub2Zmc2V0CQk9IDB4MDA2MDAwMDAsCi0JfSwgewotCQku bmFtZQkJPSAiVS1Cb290IENvbmZpZyIsCi0JCS5zaXplCQk9IDB4MDAwMjAwMDAsCi0JCS5vZmZz ZXQJCT0gMHgwMDc2MDAwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJOQVMgQ29uZmlnIiwKLQkJLnNp emUJCT0gMHgwMDA2MDAwMCwKLQkJLm9mZnNldAkJPSAweDAwNzAwMDAwLAotCQkubWFza19mbGFn cwk9IE1URF9XUklURUFCTEUsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGh5c21hcF9mbGFz aF9kYXRhIHFuYXBfdHM0MDlfbm9yX2ZsYXNoX2RhdGEgPSB7Ci0JLndpZHRoCQk9IDEsCi0JLnBh cnRzCQk9IHFuYXBfdHM0MDlfcGFydGl0aW9ucywKLQkubnJfcGFydHMJPSBBUlJBWV9TSVpFKHFu YXBfdHM0MDlfcGFydGl0aW9ucykKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgcW5hcF90 czQwOV9ub3JfZmxhc2hfcmVzb3VyY2UgPSB7Ci0JLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0J LnN0YXJ0CT0gUU5BUF9UUzQwOV9OT1JfQk9PVF9CQVNFLAotCS5lbmQJPSBRTkFQX1RTNDA5X05P Ul9CT09UX0JBU0UgKyBRTkFQX1RTNDA5X05PUl9CT09UX1NJWkUgLSAxLAotfTsKLQotc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcW5hcF90czQwOV9ub3JfZmxhc2ggPSB7Ci0JLm5hbWUJ CT0gInBoeXNtYXAtZmxhc2giLAotCS5pZAkJPSAwLAotCS5kZXYJCT0geyAucGxhdGZvcm1fZGF0 YSA9ICZxbmFwX3RzNDA5X25vcl9mbGFzaF9kYXRhLCB9LAotCS5udW1fcmVzb3VyY2VzCT0gMSwK LQkucmVzb3VyY2UJPSAmcW5hcF90czQwOV9ub3JfZmxhc2hfcmVzb3VyY2UsCi19OwotCi0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLSAqIFBDSQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRp YyBpbnQgX19pbml0IHFuYXBfdHM0MDlfcGNpX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYg KmRldiwgdTggc2xvdCwKLQl1OCBwaW4pCi17Ci0JaW50IGlycTsKLQotCS8qCi0JICogQ2hlY2sg Zm9yIGRldmljZXMgd2l0aCBoYXJkLXdpcmVkIElSUXMuCi0JICovCi0JaXJxID0gb3Jpb241eF9w Y2lfbWFwX2lycShkZXYsIHNsb3QsIHBpbik7Ci0JaWYgKGlycSAhPSAtMSkKLQkJcmV0dXJuIGly cTsKLQotCS8qCi0JICogUENJIGlzbid0IHVzZWQgb24gdGhlIFRTLTQwOQotCSAqLwotCXJldHVy biAtMTsKLX0KLQotc3RhdGljIHN0cnVjdCBod19wY2kgcW5hcF90czQwOV9wY2kgX19pbml0ZGF0 YSA9IHsKLQkubnJfY29udHJvbGxlcnMJPSAyLAotCS5zZXR1cAkJPSBvcmlvbjV4X3BjaV9zeXNf c2V0dXAsCi0JLnNjYW4JCT0gb3Jpb241eF9wY2lfc3lzX3NjYW5fYnVzLAotCS5tYXBfaXJxCT0g cW5hcF90czQwOV9wY2lfbWFwX2lycSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IHFuYXBfdHM0 MDlfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAobWFjaGluZV9pc190czQwOSgpKQotCQlwY2lfY29t bW9uX2luaXQoJnFuYXBfdHM0MDlfcGNpKTsKLQotCXJldHVybiAwOwotfQotCi1zdWJzeXNfaW5p dGNhbGwocW5hcF90czQwOV9wY2lfaW5pdCk7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICog UlRDIFMzNTM5MEEgb24gSTJDIGJ1cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNkZWZpbmUg VFM0MDlfUlRDX0dQSU8JMTAKLQotc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBfX2luaXRk YXRhIHFuYXBfdHM0MDlfaTJjX3J0YyA9IHsKLQlJMkNfQk9BUkRfSU5GTygiczM1MzkwYSIsIDB4 MzApLAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBMRURzIGF0dGFjaGVkIHRvIEdQ SU8KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgc3RydWN0IGdwaW9fbGVkIHRzNDA5 X2xlZF9waW5zW10gPSB7Ci0JewotCQkubmFtZQkJPSAidHM0MDk6cmVkOnNhdGExIiwKLQl9LCB7 Ci0JCS5uYW1lCQk9ICJ0czQwOTpyZWQ6c2F0YTIiLAotCX0sIHsKLQkJLm5hbWUJCT0gInRzNDA5 OnJlZDpzYXRhMyIsCi0JfSwgewotCQkubmFtZQkJPSAidHM0MDk6cmVkOnNhdGE0IiwKLQl9LAot fTsKLQotc3RhdGljIHN0cnVjdCBncGlvZF9sb29rdXBfdGFibGUgdHM0MDlfbGVkc19ncGlvX3Rh YmxlID0gewotCS5kZXZfaWQgPSAibGVkcy1ncGlvIiwKLQkudGFibGUgPSB7Ci0JCUdQSU9fTE9P S1VQX0lEWCgib3Jpb25fZ3BpbzAiLCA0LCBOVUxMLAotCQkJCTAsIEdQSU9fQUNUSVZFX0xPVyks Ci0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCA1LCBOVUxMLAotCQkJCTEsIEdQSU9f QUNUSVZFX0xPVyksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCA2LCBOVUxMLAot CQkJCTIsIEdQSU9fQUNUSVZFX0xPVyksCi0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAi LCA3LCBOVUxMLAotCQkJCTMsIEdQSU9fQUNUSVZFX0xPVyksCi0JCXsgfSwKLQl9LAotfTsKLQot c3RhdGljIHN0cnVjdCBncGlvX2xlZF9wbGF0Zm9ybV9kYXRhIHRzNDA5X2xlZF9kYXRhID0gewot CS5sZWRzCQk9IHRzNDA5X2xlZF9waW5zLAotCS5udW1fbGVkcwk9IEFSUkFZX1NJWkUodHM0MDlf bGVkX3BpbnMpLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgdHM0MDlfbGVk cyA9IHsKLQkubmFtZQk9ICJsZWRzLWdwaW8iLAotCS5pZAk9IC0xLAotCS5kZXYJPSB7Ci0JCS5w bGF0Zm9ybV9kYXRhCT0gJnRzNDA5X2xlZF9kYXRhLAotCX0sCi19OwotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotICogR1BJTyBBdHRhY2hlZCBLZXlzCi0gKiAgICAgUG93ZXIgYnV0dG9uIGlzIGF0 dGFjaGVkIHRvIHRoZSBQSUMgbWljcm9jb250cm9sbGVyCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LQotI2RlZmluZSBRTkFQX1RTNDA5X0dQSU9fS0VZX1JFU0VUCTE0Ci0jZGVmaW5lIFFOQVBfVFM0 MDlfR1BJT19LRVlfTUVESUEJMTUKLQotc3RhdGljIHN0cnVjdCBncGlvX2tleXNfYnV0dG9uIHFu YXBfdHM0MDlfYnV0dG9uc1tdID0gewotCXsKLQkJLmNvZGUJCT0gS0VZX1JFU1RBUlQsCi0JCS5n cGlvCQk9IFFOQVBfVFM0MDlfR1BJT19LRVlfUkVTRVQsCi0JCS5kZXNjCQk9ICJSZXNldCBCdXR0 b24iLAotCQkuYWN0aXZlX2xvdwk9IDEsCi0JfSwgewotCQkuY29kZQkJPSBLRVlfQ09QWSwKLQkJ LmdwaW8JCT0gUU5BUF9UUzQwOV9HUElPX0tFWV9NRURJQSwKLQkJLmRlc2MJCT0gIlVTQiBDb3B5 IEJ1dHRvbiIsCi0JCS5hY3RpdmVfbG93CT0gMSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBn cGlvX2tleXNfcGxhdGZvcm1fZGF0YSBxbmFwX3RzNDA5X2J1dHRvbl9kYXRhID0gewotCS5idXR0 b25zCT0gcW5hcF90czQwOV9idXR0b25zLAotCS5uYnV0dG9ucwk9IEFSUkFZX1NJWkUocW5hcF90 czQwOV9idXR0b25zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHFuYXBf dHM0MDlfYnV0dG9uX2RldmljZSA9IHsKLQkubmFtZQkJPSAiZ3Bpby1rZXlzIiwKLQkuaWQJCT0g LTEsCi0JLm51bV9yZXNvdXJjZXMJPSAwLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9 ICZxbmFwX3RzNDA5X2J1dHRvbl9kYXRhLAotCX0sCi19OwotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKLSAqIEdlbmVyYWwgU2V0dXAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHVuc2ln bmVkIGludCB0czQwOV9tcHBfbW9kZXNbXSBfX2luaXRkYXRhID0gewotCU1QUDBfVU5VU0VELAot CU1QUDFfVU5VU0VELAotCU1QUDJfVU5VU0VELAotCU1QUDNfVU5VU0VELAotCU1QUDRfR1BJTywJ CS8qIEhERCAxIHN0YXR1cyAqLwotCU1QUDVfR1BJTywJCS8qIEhERCAyIHN0YXR1cyAqLwotCU1Q UDZfR1BJTywJCS8qIEhERCAzIHN0YXR1cyAqLwotCU1QUDdfR1BJTywJCS8qIEhERCA0IHN0YXR1 cyAqLwotCU1QUDhfVU5VU0VELAotCU1QUDlfVU5VU0VELAotCU1QUDEwX0dQSU8sCQkvKiBSVEMg aW50ICovCi0JTVBQMTFfVU5VU0VELAotCU1QUDEyX1VOVVNFRCwKLQlNUFAxM19VTlVTRUQsCi0J TVBQMTRfR1BJTywJCS8qIFNXX1JTVCAqLwotCU1QUDE1X0dQSU8sCQkvKiBVU0IgY29weSBidXR0 b24gKi8KLQlNUFAxNl9VQVJULAkJLyogVUFSVDEgUlhEICovCi0JTVBQMTdfVUFSVCwJCS8qIFVB UlQxIFRYRCAqLwotCU1QUDE4X1VOVVNFRCwKLQlNUFAxOV9VTlVTRUQsCi0JMCwKLX07Ci0KLXN0 YXRpYyB2b2lkIF9faW5pdCBxbmFwX3RzNDA5X2luaXQodm9pZCkKLXsKLQkvKgotCSAqIFNldHVw IGJhc2ljIE9yaW9uIGZ1bmN0aW9ucy4gTmVlZCB0byBiZSBjYWxsZWQgZWFybHkuCi0JICovCi0J b3Jpb241eF9pbml0KCk7Ci0KLQlvcmlvbjV4X21wcF9jb25mKHRzNDA5X21wcF9tb2Rlcyk7Ci0K LQkvKgotCSAqIENvbmZpZ3VyZSBwZXJpcGhlcmFscy4KLQkgKi8KLQltdmVidV9tYnVzX2FkZF93 aW5kb3dfYnlfaWQoT1JJT05fTUJVU19ERVZCVVNfQk9PVF9UQVJHRVQsCi0JCQkJICAgIE9SSU9O X01CVVNfREVWQlVTX0JPT1RfQVRUUiwKLQkJCQkgICAgUU5BUF9UUzQwOV9OT1JfQk9PVF9CQVNF LAotCQkJCSAgICBRTkFQX1RTNDA5X05PUl9CT09UX1NJWkUpOwotCXBsYXRmb3JtX2RldmljZV9y ZWdpc3RlcigmcW5hcF90czQwOV9ub3JfZmxhc2gpOwotCi0Jb3Jpb241eF9laGNpMF9pbml0KCk7 Ci0JcW5hcF90c3gwOV9maW5kX21hY19hZGRyKFFOQVBfVFM0MDlfTk9SX0JPT1RfQkFTRSArCi0J CQkJIHFuYXBfdHM0MDlfcGFydGl0aW9uc1s1XS5vZmZzZXQsCi0JCQkJIHFuYXBfdHM0MDlfcGFy dGl0aW9uc1s1XS5zaXplKTsKLQlvcmlvbjV4X2V0aF9pbml0KCZxbmFwX3RzeDA5X2V0aF9kYXRh KTsKLQlvcmlvbjV4X2kyY19pbml0KCk7Ci0Jb3Jpb241eF91YXJ0MF9pbml0KCk7Ci0Jb3Jpb241 eF91YXJ0MV9pbml0KCk7Ci0KLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnFuYXBfdHM0MDlf YnV0dG9uX2RldmljZSk7Ci0KLQkvKiBHZXQgUlRDIElSUSBhbmQgcmVnaXN0ZXIgdGhlIGNoaXAg Ki8KLQlpZiAoZ3Bpb19yZXF1ZXN0KFRTNDA5X1JUQ19HUElPLCAicnRjIikgPT0gMCkgewotCQlp ZiAoZ3Bpb19kaXJlY3Rpb25faW5wdXQoVFM0MDlfUlRDX0dQSU8pID09IDApCi0JCQlxbmFwX3Rz NDA5X2kyY19ydGMuaXJxID0gZ3Bpb190b19pcnEoVFM0MDlfUlRDX0dQSU8pOwotCQllbHNlCi0J CQlncGlvX2ZyZWUoVFM0MDlfUlRDX0dQSU8pOwotCX0KLQlpZiAocW5hcF90czQwOV9pMmNfcnRj LmlycSA9PSAwKQotCQlwcl93YXJuKCJxbmFwX3RzNDA5X2luaXQ6IGZhaWxlZCB0byBnZXQgUlRD IElSUVxuIik7Ci0JaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwgJnFuYXBfdHM0MDlfaTJjX3J0 YywgMSk7Ci0JZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgmdHM0MDlfbGVkc19ncGlvX3RhYmxlKTsK LQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnRzNDA5X2xlZHMpOwotCi0JLyogcmVnaXN0ZXIg dHN4MDkgc3BlY2lmaWMgcG93ZXItb2ZmIG1ldGhvZCAqLwotCXJlZ2lzdGVyX3BsYXRmb3JtX3Bv d2VyX29mZihxbmFwX3RzeDA5X3Bvd2VyX29mZik7Ci19Ci0KLU1BQ0hJTkVfU1RBUlQoVFM0MDks ICJRTkFQIFRTLTQwOSIpCi0JLyogTWFpbnRhaW5lcjogIFN5bHZlciBCcnVuZWF1IDxzeWx2ZXIu YnJ1bmVhdUBnbWFpbC5jb20+ICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2lycXMJ PSBPUklPTjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9IHFuYXBfdHM0MDlfaW5pdCwKLQku bWFwX2lvCQk9IG9yaW9uNXhfbWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9pbml0X2Vh cmx5LAotCS5pbml0X2lycQk9IG9yaW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG9yaW9u NXhfdGltZXJfaW5pdCwKLQkuZml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0YXJ0CT0g b3Jpb241eF9yZXN0YXJ0LAotTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gt b3Jpb241eC90czc4eHgtZnBnYS5oIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1mcGdh LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNGZlM2NhNWMxYS4uMDAwMDAwMDAw MDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtZnBnYS5oCisrKyAvZGV2L251 bGwKQEAgLTEsNDIgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg Ki8KLSNkZWZpbmUgVFM3ODAwX0ZQR0FfTUFHSUMgMHgwMGI0ODAKLSNkZWZpbmUgRlBHQUlEKF9t YWdpYywgX3JldikgKChfbWFnaWMgPDwgOCkgKyBfcmV2KQotCi0vKgotICogZ2V0IHllciBpZCdz IGZyb20gaHR0cDovL3RzNzh4eC5kaWdyaXoub3JnLnVrLwotICogZG8gKm5vdCogbWFrZSB1cCB5 b3VyIG93biBvciAnYm9ycm93JyBhbnkhCi0gKi8KLWVudW0gZnBnYV9pZHMgewotCS8qIFRlY2hu b2xvZ2ljIFN5c3RlbXMgKi8KLQlUUzc4MDBfUkVWXzEJPSBGUEdBSUQoVFM3ODAwX0ZQR0FfTUFH SUMsIDB4MDEpLAotCVRTNzgwMF9SRVZfMgk9IEZQR0FJRChUUzc4MDBfRlBHQV9NQUdJQywgMHgw MiksCi0JVFM3ODAwX1JFVl8zCT0gRlBHQUlEKFRTNzgwMF9GUEdBX01BR0lDLCAweDAzKSwKLQlU Uzc4MDBfUkVWXzQJPSBGUEdBSUQoVFM3ODAwX0ZQR0FfTUFHSUMsIDB4MDQpLAotCVRTNzgwMF9S RVZfNQk9IEZQR0FJRChUUzc4MDBfRlBHQV9NQUdJQywgMHgwNSksCi0JVFM3ODAwX1JFVl82CT0g RlBHQUlEKFRTNzgwMF9GUEdBX01BR0lDLCAweDA2KSwKLQlUUzc4MDBfUkVWXzcJPSBGUEdBSUQo VFM3ODAwX0ZQR0FfTUFHSUMsIDB4MDcpLAotCVRTNzgwMF9SRVZfOAk9IEZQR0FJRChUUzc4MDBf RlBHQV9NQUdJQywgMHgwOCksCi0JVFM3ODAwX1JFVl85CT0gRlBHQUlEKFRTNzgwMF9GUEdBX01B R0lDLCAweDA5KSwKLQotCS8qIFVuYWZmb3JkYWJsZSAmIEV4cGVuc2l2ZSAqLwotCVVBRV9EVU1N WQk9IEZQR0FJRCgweGZmZmZmZiwgMHgwMSksCi19OwotCi1zdHJ1Y3QgZnBnYV9kZXZpY2Ugewot CXVuc2lnbmVkCQlwcmVzZW50OjE7Ci0JdW5zaWduZWQJCWluaXQ6MTsKLX07Ci0KLXN0cnVjdCBm cGdhX2RldmljZXMgewotCS8qIFRlY2hub2xvZ2ljIFN5c3RlbXMgKi8KLQlzdHJ1Y3QgZnBnYV9k ZXZpY2UJdHNfcnRjOwotCXN0cnVjdCBmcGdhX2RldmljZQl0c19uYW5kOwotCXN0cnVjdCBmcGdh X2RldmljZQl0c19ybmc7Ci19OwotCi1zdHJ1Y3QgdHM3OHh4X2ZwZ2FfZGF0YSB7Ci0JdW5zaWdu ZWQgaW50CQlpZDsKLQlpbnQJCQlzdGF0ZTsKLQotCXN0cnVjdCBmcGdhX2RldmljZXMJc3VwcG9y dHM7Ci19OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1zZXR1cC5j IGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1zZXR1cC5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBhZjgxMGU3Y2NkNzkuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9t YWNoLW9yaW9uNXgvdHM3OHh4LXNldHVwLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NzQgKzAsMCBA QAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQotLyoKLSAqIGFyY2gv YXJtL21hY2gtb3Jpb241eC90czc4eHgtc2V0dXAuYwotICoKLSAqIE1haW50YWluZXI6IEFsZXhh bmRlciBDbG91dGVyIDxhbGV4QGRpZ3Jpei5vcmcudWs+Ci0gKi8KLQotI2RlZmluZSBwcl9mbXQo Zm10KSBLQlVJTERfTU9ETkFNRSAiOiAiIGZtdAotCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+ Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Ci0jaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4eF9l dGguaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFfcGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxsaW51eC9t dGQvcGxhdG5hbmQuaD4KLSNpbmNsdWRlIDxsaW51eC90aW1lcmlvbWVtLXJuZy5oPgotI2luY2x1 ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgotI2luY2x1 ZGUgPGFzbS9tYWNoL21hcC5oPgotI2luY2x1ZGUgImNvbW1vbi5oIgotI2luY2x1ZGUgIm1wcC5o IgotI2luY2x1ZGUgIm9yaW9uNXguaCIKLSNpbmNsdWRlICJ0czc4eHgtZnBnYS5oIgotCi0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLSAqIFRTLTc4eHggSW5mbwotICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci0KLS8qCi0gKiBGUEdBIC0gbGl2ZXMgd2hlcmUgdGhlIFBDSSBidXMgd291bGQgYmUgYXQgT1JJ T041WF9QQ0lfTUVNX1BIWVNfQkFTRQotICovCi0jZGVmaW5lIFRTNzhYWF9GUEdBX1JFR1NfUEhZ U19CQVNFCTB4ZTgwMDAwMDAKLSNkZWZpbmUgVFM3OFhYX0ZQR0FfUkVHU19WSVJUX0JBU0UJSU9N RU0oMHhmZjkwMDAwMCkKLSNkZWZpbmUgVFM3OFhYX0ZQR0FfUkVHU19TSVpFCQlTWl8xTQotCi1z dGF0aWMgc3RydWN0IHRzNzh4eF9mcGdhX2RhdGEgdHM3OHh4X2ZwZ2EgPSB7Ci0JLmlkCQk9IDAs Ci0JLnN0YXRlCQk9IDEsCi0vKgkuc3VwcG9ydHMJPSAuLi4gLSBwb3B1bGF0ZWQgYnkgdHM3OHh4 X2ZwZ2Ffc3VwcG9ydHMoKSAqLwotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBJL08g QWRkcmVzcyBNYXBwaW5nCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbWFw X2Rlc2MgdHM3OHh4X2lvX2Rlc2NbXSBfX2luaXRkYXRhID0gewotCXsKLQkJLnZpcnR1YWwJPSAo dW5zaWduZWQgbG9uZylUUzc4WFhfRlBHQV9SRUdTX1ZJUlRfQkFTRSwKLQkJLnBmbgkJPSBfX3Bo eXNfdG9fcGZuKFRTNzhYWF9GUEdBX1JFR1NfUEhZU19CQVNFKSwKLQkJLmxlbmd0aAkJPSBUUzc4 WFhfRlBHQV9SRUdTX1NJWkUsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LAotfTsKLQotc3Rh dGljIHZvaWQgX19pbml0IHRzNzh4eF9tYXBfaW8odm9pZCkKLXsKLQlvcmlvbjV4X21hcF9pbygp OwotCWlvdGFibGVfaW5pdCh0czc4eHhfaW9fZGVzYywgQVJSQVlfU0laRSh0czc4eHhfaW9fZGVz YykpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEV0aGVybmV0Ci0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSB0czc4 eHhfZXRoX2RhdGEgPSB7Ci0JLnBoeV9hZGRyCT0gTVY2NDNYWF9FVEhfUEhZX0FERFIoMCksCi19 OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNBVEEKLSAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lwotc3RhdGljIHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEgdHM3OHh4X3NhdGFfZGF0YSA9 IHsKLQkubl9wb3J0cwk9IDIsCi19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFJUQyBN NDhUODYgLSBuaWNrZWReV2JvcnJvd2VkIGZyb20gYXJjaC9hcm0vbWFjaC1lcDkzeHgvdHM3Mnh4 LmMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotI2RlZmluZSBUU19SVENfQ1RSTAkoVFM3OFhYX0ZQ R0FfUkVHU19QSFlTX0JBU0UgKyAweDgwOCkKLSNkZWZpbmUgVFNfUlRDX0RBVEEJKFRTNzhYWF9G UEdBX1JFR1NfUEhZU19CQVNFICsgMHg4MGMpCi0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgdHM3 OHh4X3RzX3J0Y19yZXNvdXJjZXNbXSA9IHsKLQlERUZJTkVfUkVTX01FTShUU19SVENfQ1RSTCwg MHgwMSksCi0JREVGSU5FX1JFU19NRU0oVFNfUlRDX0RBVEEsIDB4MDEpLAotfTsKLQotc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgdHM3OHh4X3RzX3J0Y19kZXZpY2UgPSB7Ci0JLm5hbWUJ CT0gInJ0Yy1tNDh0ODYiLAotCS5pZAkJPSAtMSwKLQkucmVzb3VyY2UJPSB0czc4eHhfdHNfcnRj X3Jlc291cmNlcywKLQkubnVtX3Jlc291cmNlcyAJPSBBUlJBWV9TSVpFKHRzNzh4eF90c19ydGNf cmVzb3VyY2VzKSwKLX07Ci0KLXN0YXRpYyBpbnQgdHM3OHh4X3RzX3J0Y19sb2FkKHZvaWQpCi17 Ci0JaW50IHJjOwotCi0JaWYgKHRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3J0Yy5pbml0ID09IDAp IHsKLQkJcmMgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnRzNzh4eF90c19ydGNfZGV2aWNl KTsKLQkJaWYgKCFyYykKLQkJCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3J0Yy5pbml0ID0gMTsK LQl9IGVsc2UgewotCQlyYyA9IHBsYXRmb3JtX2RldmljZV9hZGQoJnRzNzh4eF90c19ydGNfZGV2 aWNlKTsKLQl9Ci0KLQlpZiAocmMpCi0JCXByX2luZm8oIlJUQyBjb3VsZCBub3QgYmUgcmVnaXN0 ZXJlZDogJWRcbiIsIHJjKTsKLQotCXJldHVybiByYzsKLX0KLQotc3RhdGljIHZvaWQgdHM3OHh4 X3RzX3J0Y191bmxvYWQodm9pZCkKLXsKLQlwbGF0Zm9ybV9kZXZpY2VfZGVsKCZ0czc4eHhfdHNf cnRjX2RldmljZSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogTkFORCBGbGFzaAot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFRTX05BTkRfQ1RSTAkoVFM3OFhYX0ZQR0Ff UkVHU19WSVJUX0JBU0UgKyAweDgwMCkJLyogVklSVCAqLwotI2RlZmluZSBUU19OQU5EX0RBVEEJ KFRTNzhYWF9GUEdBX1JFR1NfUEhZU19CQVNFICsgMHg4MDQpCS8qIFBIWVMgKi8KLQotLyoKLSAq IGhhcmR3YXJlIHNwZWNpZmljIGFjY2VzcyB0byBjb250cm9sLWxpbmVzCi0gKgotICogY3RybDoK LSAqIE5BTkRfTkNFOiBiaXQgMCAtPiBiaXQgMgotICogTkFORF9DTEU6IGJpdCAxIC0+IGJpdCAx Ci0gKiBOQU5EX0FMRTogYml0IDIgLT4gYml0IDAKLSAqLwotc3RhdGljIHZvaWQgdHM3OHh4X3Rz X25hbmRfY21kX2N0cmwoc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IGNtZCwKLQkJCQkgICAg dW5zaWduZWQgaW50IGN0cmwpCi17Ci0JaWYgKGN0cmwgJiBOQU5EX0NUUkxfQ0hBTkdFKSB7Ci0J CXVuc2lnbmVkIGNoYXIgYml0czsKLQotCQliaXRzID0gKGN0cmwgJiBOQU5EX05DRSkgPDwgMjsK LQkJYml0cyB8PSBjdHJsICYgTkFORF9DTEU7Ci0JCWJpdHMgfD0gKGN0cmwgJiBOQU5EX0FMRSkg Pj4gMjsKLQotCQl3cml0ZWIoKHJlYWRiKFRTX05BTkRfQ1RSTCkgJiB+MHg3KSB8IGJpdHMsIFRT X05BTkRfQ1RSTCk7Ci0JfQotCi0JaWYgKGNtZCAhPSBOQU5EX0NNRF9OT05FKQotCQl3cml0ZWIo Y21kLCB0aGlzLT5sZWdhY3kuSU9fQUREUl9XKTsKLX0KLQotc3RhdGljIGludCB0czc4eHhfdHNf bmFuZF9kZXZfcmVhZHkoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkKLXsKLQlyZXR1cm4gcmVhZGIo VFNfTkFORF9DVFJMKSAmIDB4MjA7Ci19Ci0KLXN0YXRpYyB2b2lkIHRzNzh4eF90c19uYW5kX3dy aXRlX2J1ZihzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLAotCQkJCSAgICAgY29uc3QgdWludDhfdCAq YnVmLCBpbnQgbGVuKQotewotCXZvaWQgX19pb21lbSAqaW9fYmFzZSA9IGNoaXAtPmxlZ2FjeS5J T19BRERSX1c7Ci0JdW5zaWduZWQgbG9uZyBvZmYgPSAoKHVuc2lnbmVkIGxvbmcpYnVmICYgMyk7 Ci0JaW50IHN6OwotCi0JaWYgKG9mZikgewotCQlzeiA9IG1pbl90KGludCwgNCAtIG9mZiwgbGVu KTsKLQkJd3JpdGVzYihpb19iYXNlLCBidWYsIHN6KTsKLQkJYnVmICs9IHN6OwotCQlsZW4gLT0g c3o7Ci0JfQotCi0Jc3ogPSBsZW4gPj4gMjsKLQlpZiAoc3opIHsKLQkJdTMyICpidWYzMiA9ICh1 MzIgKilidWY7Ci0JCXdyaXRlc2woaW9fYmFzZSwgYnVmMzIsIHN6KTsKLQkJYnVmICs9IHN6IDw8 IDI7Ci0JCWxlbiAtPSBzeiA8PCAyOwotCX0KLQotCWlmIChsZW4pCi0JCXdyaXRlc2IoaW9fYmFz ZSwgYnVmLCBsZW4pOwotfQotCi1zdGF0aWMgdm9pZCB0czc4eHhfdHNfbmFuZF9yZWFkX2J1Zihz dHJ1Y3QgbmFuZF9jaGlwICpjaGlwLAotCQkJCSAgICB1aW50OF90ICpidWYsIGludCBsZW4pCi17 Ci0Jdm9pZCBfX2lvbWVtICppb19iYXNlID0gY2hpcC0+bGVnYWN5LklPX0FERFJfUjsKLQl1bnNp Z25lZCBsb25nIG9mZiA9ICgodW5zaWduZWQgbG9uZylidWYgJiAzKTsKLQlpbnQgc3o7Ci0KLQlp ZiAob2ZmKSB7Ci0JCXN6ID0gbWluX3QoaW50LCA0IC0gb2ZmLCBsZW4pOwotCQlyZWFkc2IoaW9f YmFzZSwgYnVmLCBzeik7Ci0JCWJ1ZiArPSBzejsKLQkJbGVuIC09IHN6OwotCX0KLQotCXN6ID0g bGVuID4+IDI7Ci0JaWYgKHN6KSB7Ci0JCXUzMiAqYnVmMzIgPSAodTMyICopYnVmOwotCQlyZWFk c2woaW9fYmFzZSwgYnVmMzIsIHN6KTsKLQkJYnVmICs9IHN6IDw8IDI7Ci0JCWxlbiAtPSBzeiA8 PCAyOwotCX0KLQotCWlmIChsZW4pCi0JCXJlYWRzYihpb19iYXNlLCBidWYsIGxlbik7Ci19Ci0K LXN0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiB0czc4eHhfdHNfbmFuZF9wYXJ0c1tdID0gewot CXsKLQkJLm5hbWUJCT0gIm1iciIsCi0JCS5vZmZzZXQJCT0gMCwKLQkJLnNpemUJCT0gU1pfMTI4 SywKLQkJLm1hc2tfZmxhZ3MJPSBNVERfV1JJVEVBQkxFLAotCX0sIHsKLQkJLm5hbWUJCT0gImtl cm5lbCIsCi0JCS5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELAotCQkuc2l6ZQkJPSBTWl80 TSwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJpbml0cmQiLAotCQkub2Zmc2V0CQk9IE1URFBBUlRfT0ZT X0FQUEVORCwKLQkJLnNpemUJCT0gU1pfNE0sCi0JfSwgewotCQkubmFtZQkJPSAicm9vdGZzIiwK LQkJLm9mZnNldAkJPSBNVERQQVJUX09GU19BUFBFTkQsCi0JCS5zaXplCQk9IE1URFBBUlRfU0la X0ZVTEwsCi0JfQotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9uYW5kX2RhdGEgdHM3OHh4 X3RzX25hbmRfZGF0YSA9IHsKLQkuY2hpcAk9IHsKLQkJLm5yX2NoaXBzCQk9IDEsCi0JCS5wYXJ0 aXRpb25zCQk9IHRzNzh4eF90c19uYW5kX3BhcnRzLAotCQkubnJfcGFydGl0aW9ucwkJPSBBUlJB WV9TSVpFKHRzNzh4eF90c19uYW5kX3BhcnRzKSwKLQkJLmNoaXBfZGVsYXkJCT0gMTUsCi0JCS5i YnRfb3B0aW9ucwkJPSBOQU5EX0JCVF9VU0VfRkxBU0gsCi0JfSwKLQkuY3RybAk9IHsKLQkJLyoK LQkJICogVGhlIEhXIEVDQyBvZmZsb2FkaW5nIGZ1bmN0aW9ucywgdXNlZCB0byBnaXZlIGFib3V0 IGEgOSUKLQkJICogcGVyZm9ybWFuY2UgaW5jcmVhc2UgZm9yICdkZCBpZj0vZGV2L210ZGJsb2Nr WCcgYW5kIDUlIGZvcgotCQkgKiBuYW5kZHVtcC4gIFRoaXMgYWxsIGhvd2V2ZXIgd2FzIGNoYW5n ZWQgYnkgZ2l0IGNvbW1pdAotCQkgKiBlNmNmNWRmMTgzOGMyOGJiMDYwYWM0NWI1NTg1ZTQ4ZTcx YmJjNzQwIHNvIG5vdyB0aGVyZSBpcwotCQkgKiBubyBwZXJmb3JtYW5jZSBhZHZhbnRhZ2UgdG8g YmUgaGFkIHNvIHdlIG5vIGxvbmdlciBib3RoZXIKLQkJICovCi0JCS5jbWRfY3RybAkJPSB0czc4 eHhfdHNfbmFuZF9jbWRfY3RybCwKLQkJLmRldl9yZWFkeQkJPSB0czc4eHhfdHNfbmFuZF9kZXZf cmVhZHksCi0JCS53cml0ZV9idWYJCT0gdHM3OHh4X3RzX25hbmRfd3JpdGVfYnVmLAotCQkucmVh ZF9idWYJCT0gdHM3OHh4X3RzX25hbmRfcmVhZF9idWYsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgcmVzb3VyY2UgdHM3OHh4X3RzX25hbmRfcmVzb3VyY2VzCi0JCQk9IERFRklORV9SRVNfTUVN KFRTX05BTkRfREFUQSwgNCk7Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHRzNzh4 eF90c19uYW5kX2RldmljZSA9IHsKLQkubmFtZQkJPSAiZ2VuX25hbmQiLAotCS5pZAkJPSAtMSwK LQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmdHM3OHh4X3RzX25hbmRfZGF0YSwKLQl9 LAotCS5yZXNvdXJjZQk9ICZ0czc4eHhfdHNfbmFuZF9yZXNvdXJjZXMsCi0JLm51bV9yZXNvdXJj ZXMJPSAxLAotfTsKLQotc3RhdGljIGludCB0czc4eHhfdHNfbmFuZF9sb2FkKHZvaWQpCi17Ci0J aW50IHJjOwotCi0JaWYgKHRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX25hbmQuaW5pdCA9PSAwKSB7 Ci0JCXJjID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZ0czc4eHhfdHNfbmFuZF9kZXZpY2Up OwotCQlpZiAoIXJjKQotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfbmFuZC5pbml0ID0gMTsK LQl9IGVsc2UKLQkJcmMgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKCZ0czc4eHhfdHNfbmFuZF9kZXZp Y2UpOwotCi0JaWYgKHJjKQotCQlwcl9pbmZvKCJOQU5EIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVk OiAlZFxuIiwgcmMpOwotCXJldHVybiByYzsKLX07Ci0KLXN0YXRpYyB2b2lkIHRzNzh4eF90c19u YW5kX3VubG9hZCh2b2lkKQotewotCXBsYXRmb3JtX2RldmljZV9kZWwoJnRzNzh4eF90c19uYW5k X2RldmljZSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogSFcgUk5HCi0gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLSNkZWZpbmUgVFNfUk5HX0RBVEEJKFRTNzhYWF9GUEdBX1JFR1NfUEhZ U19CQVNFIHwgMHgwNDQpCi0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgdHM3OHh4X3RzX3JuZ19y ZXNvdXJjZQotCQkJPSBERUZJTkVfUkVTX01FTShUU19STkdfREFUQSwgNCk7Ci0KLXN0YXRpYyBz dHJ1Y3QgdGltZXJpb21lbV9ybmdfZGF0YSB0czc4eHhfdHNfcm5nX2RhdGEgPSB7Ci0JLnBlcmlv ZAkJPSAxMDAwMDAwLCAvKiBvbmUgc2Vjb25kICovCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RldmljZSB0czc4eHhfdHNfcm5nX2RldmljZSA9IHsKLQkubmFtZQkJPSAidGltZXJpb21l bV9ybmciLAotCS5pZAkJPSAtMSwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmdHM3 OHh4X3RzX3JuZ19kYXRhLAotCX0sCi0JLnJlc291cmNlCT0gJnRzNzh4eF90c19ybmdfcmVzb3Vy Y2UsCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotfTsKLQotc3RhdGljIGludCB0czc4eHhfdHNfcm5n X2xvYWQodm9pZCkKLXsKLQlpbnQgcmM7Ci0KLQlpZiAodHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNf cm5nLmluaXQgPT0gMCkgewotCQlyYyA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmdHM3OHh4 X3RzX3JuZ19kZXZpY2UpOwotCQlpZiAoIXJjKQotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNf cm5nLmluaXQgPSAxOwotCX0gZWxzZQotCQlyYyA9IHBsYXRmb3JtX2RldmljZV9hZGQoJnRzNzh4 eF90c19ybmdfZGV2aWNlKTsKLQotCWlmIChyYykKLQkJcHJfaW5mbygiUk5HIGNvdWxkIG5vdCBi ZSByZWdpc3RlcmVkOiAlZFxuIiwgcmMpOwotCXJldHVybiByYzsKLX07Ci0KLXN0YXRpYyB2b2lk IHRzNzh4eF90c19ybmdfdW5sb2FkKHZvaWQpCi17Ci0JcGxhdGZvcm1fZGV2aWNlX2RlbCgmdHM3 OHh4X3RzX3JuZ19kZXZpY2UpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEZQR0Eg J2hvdHBsdWcnIHN1cHBvcnQgY29kZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9p ZCB0czc4eHhfZnBnYV9kZXZpY2VzX3plcm9faW5pdCh2b2lkKQotewotCXRzNzh4eF9mcGdhLnN1 cHBvcnRzLnRzX3J0Yy5pbml0ID0gMDsKLQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLmlu aXQgPSAwOwotCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3JuZy5pbml0ID0gMDsKLX0KLQotc3Rh dGljIHZvaWQgdHM3OHh4X2ZwZ2Ffc3VwcG9ydHModm9pZCkKLXsKLQkvKiBUT0RPOiBwdXQgdGhp cyAndGFibGUnIGludG8gdHM3OHh4LWZwZ2EuaCAqLwotCXN3aXRjaCAodHM3OHh4X2ZwZ2EuaWQp IHsKLQljYXNlIFRTNzgwMF9SRVZfMToKLQljYXNlIFRTNzgwMF9SRVZfMjoKLQljYXNlIFRTNzgw MF9SRVZfMzoKLQljYXNlIFRTNzgwMF9SRVZfNDoKLQljYXNlIFRTNzgwMF9SRVZfNToKLQljYXNl IFRTNzgwMF9SRVZfNjoKLQljYXNlIFRTNzgwMF9SRVZfNzoKLQljYXNlIFRTNzgwMF9SRVZfODoK LQljYXNlIFRTNzgwMF9SRVZfOToKLQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcnRjLnByZXNl bnQgPSAxOwotCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLnByZXNlbnQgPSAxOwotCQl0 czc4eHhfZnBnYS5zdXBwb3J0cy50c19ybmcucHJlc2VudCA9IDE7Ci0JCWJyZWFrOwotCWRlZmF1 bHQ6Ci0JCS8qIGVuYWJsZSBkZXZpY2VzIGlmIG1hZ2ljIG1hdGNoZXMgKi8KLQkJc3dpdGNoICgo dHM3OHh4X2ZwZ2EuaWQgPj4gOCkgJiAweGZmZmZmZikgewotCQljYXNlIFRTNzgwMF9GUEdBX01B R0lDOgotCQkJcHJfd2FybigidW5yZWNvZ25pc2VkIEZQR0EgcmV2aXNpb24gMHglLjJ4XG4iLAot CQkJCXRzNzh4eF9mcGdhLmlkICYgMHhmZik7Ci0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19y dGMucHJlc2VudCA9IDE7Ci0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLnByZXNlbnQg PSAxOwotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcm5nLnByZXNlbnQgPSAxOwotCQkJYnJl YWs7Ci0JCWRlZmF1bHQ6Ci0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19ydGMucHJlc2VudCA9 IDA7Ci0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLnByZXNlbnQgPSAwOwotCQkJdHM3 OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcm5nLnByZXNlbnQgPSAwOwotCQl9Ci0JfQotfQotCi1zdGF0 aWMgaW50IHRzNzh4eF9mcGdhX2xvYWRfZGV2aWNlcyh2b2lkKQotewotCWludCB0bXAsIHJldCA9 IDA7Ci0KLQlpZiAodHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcnRjLnByZXNlbnQgPT0gMSkgewot CQl0bXAgPSB0czc4eHhfdHNfcnRjX2xvYWQoKTsKLQkJaWYgKHRtcCkKLQkJCXRzNzh4eF9mcGdh LnN1cHBvcnRzLnRzX3J0Yy5wcmVzZW50ID0gMDsKLQkJcmV0IHw9IHRtcDsKLQl9Ci0JaWYgKHRz Nzh4eF9mcGdhLnN1cHBvcnRzLnRzX25hbmQucHJlc2VudCA9PSAxKSB7Ci0JCXRtcCA9IHRzNzh4 eF90c19uYW5kX2xvYWQoKTsKLQkJaWYgKHRtcCkKLQkJCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRz X25hbmQucHJlc2VudCA9IDA7Ci0JCXJldCB8PSB0bXA7Ci0JfQotCWlmICh0czc4eHhfZnBnYS5z dXBwb3J0cy50c19ybmcucHJlc2VudCA9PSAxKSB7Ci0JCXRtcCA9IHRzNzh4eF90c19ybmdfbG9h ZCgpOwotCQlpZiAodG1wKQotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcm5nLnByZXNlbnQg PSAwOwotCQlyZXQgfD0gdG1wOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQg dHM3OHh4X2ZwZ2FfdW5sb2FkX2RldmljZXModm9pZCkKLXsKLQotCWlmICh0czc4eHhfZnBnYS5z dXBwb3J0cy50c19ydGMucHJlc2VudCA9PSAxKQotCQl0czc4eHhfdHNfcnRjX3VubG9hZCgpOwot CWlmICh0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLnByZXNlbnQgPT0gMSkKLQkJdHM3OHh4 X3RzX25hbmRfdW5sb2FkKCk7Ci0JaWYgKHRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3JuZy5wcmVz ZW50ID09IDEpCi0JCXRzNzh4eF90c19ybmdfdW5sb2FkKCk7Ci0KLQlyZXR1cm4gMDsKLX0KLQot c3RhdGljIGludCB0czc4eHhfZnBnYV9sb2FkKHZvaWQpCi17Ci0JdHM3OHh4X2ZwZ2EuaWQgPSBy ZWFkbChUUzc4WFhfRlBHQV9SRUdTX1ZJUlRfQkFTRSk7Ci0KLQlwcl9pbmZvKCJGUEdBIG1hZ2lj PTB4JS42eCwgcmV2PTB4JS4yeFxuIiwKLQkJCSh0czc4eHhfZnBnYS5pZCA+PiA4KSAmIDB4ZmZm ZmZmLAotCQkJdHM3OHh4X2ZwZ2EuaWQgJiAweGZmKTsKLQotCXRzNzh4eF9mcGdhX3N1cHBvcnRz KCk7Ci0KLQlpZiAodHM3OHh4X2ZwZ2FfbG9hZF9kZXZpY2VzKCkpIHsKLQkJdHM3OHh4X2ZwZ2Eu c3RhdGUgPSAtMTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX07Ci0KLXN0 YXRpYyBpbnQgdHM3OHh4X2ZwZ2FfdW5sb2FkKHZvaWQpCi17Ci0JdW5zaWduZWQgaW50IGZwZ2Ff aWQ7Ci0KLQlmcGdhX2lkID0gcmVhZGwoVFM3OFhYX0ZQR0FfUkVHU19WSVJUX0JBU0UpOwotCi0J LyoKLQkgKiBUaGVyZSBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgZmVhc2libGUgd2F5IHRvIGJsb2Nr IGFjY2VzcyB0byB0aGUgR1BJTwotCSAqIHBpbnMgZnJvbSB1c2Vyc3BhY2UgKC9kZXYvbWVtKS4g IFRoaXMgaWYgY2xhdXNlIHNob3VsZCBob3BlZnVsbHkgd2FybgotCSAqIHRob3NlIGZvb2xpc2gg ZW5vdWdoIG5vdCB0byBmb2xsb3cgJ3BvbGljeScgOikKLQkgKgotCSAqIFVySlRBRyBTVk4gc2lu Y2UgcjEzODEgY2FuIGJlIHVzZWQgdG8gcmVwcm9ncmFtIHRoZSBGUEdBCi0JICovCi0JaWYgKHRz Nzh4eF9mcGdhLmlkICE9IGZwZ2FfaWQpIHsKLQkJcHJfZXJyKCJGUEdBIG1hZ2ljL3JldiBtaXNt YXRjaFxuIgotCQkJIlRTLTc4eHggRlBHQTogd2FzIDB4JS42eC8lLjJ4IGJ1dCBub3cgMHglLjZ4 LyUuMnhcbiIsCi0JCQkodHM3OHh4X2ZwZ2EuaWQgPj4gOCkgJiAweGZmZmZmZiwgdHM3OHh4X2Zw Z2EuaWQgJiAweGZmLAotCQkJKGZwZ2FfaWQgPj4gOCkgJiAweGZmZmZmZiwgZnBnYV9pZCAmIDB4 ZmYpOwotCQl0czc4eHhfZnBnYS5zdGF0ZSA9IC0xOwotCQlyZXR1cm4gLUVCVVNZOwotCX0KLQot CWlmICh0czc4eHhfZnBnYV91bmxvYWRfZGV2aWNlcygpKSB7Ci0JCXRzNzh4eF9mcGdhLnN0YXRl ID0gLTE7Ci0JCXJldHVybiAtRUJVU1k7Ci0JfQotCi0JcmV0dXJuIDA7Ci19OwotCi1zdGF0aWMg c3NpemVfdCB0czc4eHhfZnBnYV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLAotCQkJc3RydWN0 IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JaWYgKHRzNzh4eF9mcGdhLnN0 YXRlIDwgMCkKLQkJcmV0dXJuIHNwcmludGYoYnVmLCAiYm9ya2VkXG4iKTsKLQotCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVzXG4iLCAodHM3OHh4X2ZwZ2Euc3RhdGUpID8gIm9ubGluZSIgOiAib2Zm bGluZSIpOwotfQotCi1zdGF0aWMgc3NpemVfdCB0czc4eHhfZnBnYV9zdG9yZShzdHJ1Y3Qga29i amVjdCAqa29iaiwKLQkJCXN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAq YnVmLCBzaXplX3QgbikKLXsKLQlpbnQgdmFsdWUsIHJldDsKLQotCWlmICh0czc4eHhfZnBnYS5z dGF0ZSA8IDApIHsKLQkJcHJfZXJyKCJGUEdBIGJvcmtlZCwgeW91IG11c3QgcG93ZXJjeWNsZSBB U0FQXG4iKTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0KLQlpZiAoc3RybmNtcChidWYsICJvbmxp bmUiLCBzaXplb2YoIm9ubGluZSIpIC0gMSkgPT0gMCkKLQkJdmFsdWUgPSAxOwotCWVsc2UgaWYg KHN0cm5jbXAoYnVmLCAib2ZmbGluZSIsIHNpemVvZigib2ZmbGluZSIpIC0gMSkgPT0gMCkKLQkJ dmFsdWUgPSAwOwotCWVsc2UKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAodHM3OHh4X2ZwZ2Eu c3RhdGUgPT0gdmFsdWUpCi0JCXJldHVybiBuOwotCi0JcmV0ID0gKHRzNzh4eF9mcGdhLnN0YXRl ID09IDApCi0JCT8gdHM3OHh4X2ZwZ2FfbG9hZCgpCi0JCTogdHM3OHh4X2ZwZ2FfdW5sb2FkKCk7 Ci0KLQlpZiAoIShyZXQgPCAwKSkKLQkJdHM3OHh4X2ZwZ2Euc3RhdGUgPSB2YWx1ZTsKLQotCXJl dHVybiBuOwotfQotCi1zdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIHRzNzh4eF9mcGdhX2F0 dHIgPQotCV9fQVRUUih0czc4eHhfZnBnYSwgMDY0NCwgdHM3OHh4X2ZwZ2Ffc2hvdywgdHM3OHh4 X2ZwZ2Ffc3RvcmUpOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdlbmVyYWwgU2V0dXAK LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHVuc2lnbmVkIGludCB0czc4eHhfbXBwX21v ZGVzW10gX19pbml0ZGF0YSA9IHsKLQlNUFAwX1VOVVNFRCwKLQlNUFAxX0dQSU8sCQkvKiBKVEFH IENsb2NrICovCi0JTVBQMl9HUElPLAkJLyogSlRBRyBEYXRhIEluICovCi0JTVBQM19HUElPLAkJ LyogTGF0IEVDUDIgMjU2IEZQR0EgLSBQQjJCICovCi0JTVBQNF9HUElPLAkJLyogSlRBRyBEYXRh IE91dCAqLwotCU1QUDVfR1BJTywJCS8qIEpUQUcgVE1TICovCi0JTVBQNl9HUElPLAkJLyogTGF0 IEVDUDIgMjU2IEZQR0EgLSBQQjMxQV9DTEs0KyAqLwotCU1QUDdfR1BJTywJCS8qIExhdCBFQ1Ay IDI1NiBGUEdBIC0gUEIyMkIgKi8KLQlNUFA4X1VOVVNFRCwKLQlNUFA5X1VOVVNFRCwKLQlNUFAx MF9VTlVTRUQsCi0JTVBQMTFfVU5VU0VELAotCU1QUDEyX1VOVVNFRCwKLQlNUFAxM19VTlVTRUQs Ci0JTVBQMTRfVU5VU0VELAotCU1QUDE1X1VOVVNFRCwKLQlNUFAxNl9VQVJULAotCU1QUDE3X1VB UlQsCi0JTVBQMThfVUFSVCwKLQlNUFAxOV9VQVJULAotCS8qCi0JICogTVBQWzIwXSBQQ0kgQ2xv Y2sgT3V0IDEKLQkgKiBNUFBbMjFdIFBDSSBDbG9jayBPdXQgMAotCSAqIE1QUFsyMl0gVW51c2Vk Ci0JICogTVBQWzIzXSBVbnVzZWQKLQkgKiBNUFBbMjRdIFVudXNlZAotCSAqIE1QUFsyNV0gVW51 c2VkCi0JICovCi0JMCwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCB0czc4eHhfaW5pdCh2b2lk KQotewotCWludCByZXQ7Ci0KLQkvKgotCSAqIFNldHVwIGJhc2ljIE9yaW9uIGZ1bmN0aW9ucy4g TmVlZCB0byBiZSBjYWxsZWQgZWFybHkuCi0JICovCi0Jb3Jpb241eF9pbml0KCk7Ci0KLQlvcmlv bjV4X21wcF9jb25mKHRzNzh4eF9tcHBfbW9kZXMpOwotCi0JLyoKLQkgKiBDb25maWd1cmUgcGVy aXBoZXJhbHMuCi0JICovCi0Jb3Jpb241eF9laGNpMF9pbml0KCk7Ci0Jb3Jpb241eF9laGNpMV9p bml0KCk7Ci0Jb3Jpb241eF9ldGhfaW5pdCgmdHM3OHh4X2V0aF9kYXRhKTsKLQlvcmlvbjV4X3Nh dGFfaW5pdCgmdHM3OHh4X3NhdGFfZGF0YSk7Ci0Jb3Jpb241eF91YXJ0MF9pbml0KCk7Ci0Jb3Jp b241eF91YXJ0MV9pbml0KCk7Ci0Jb3Jpb241eF94b3JfaW5pdCgpOwotCi0JLyogRlBHQSBpbml0 ICovCi0JdHM3OHh4X2ZwZ2FfZGV2aWNlc196ZXJvX2luaXQoKTsKLQlyZXQgPSB0czc4eHhfZnBn YV9sb2FkKCk7Ci0JcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGUoZmlybXdhcmVfa29iaiwgJnRzNzh4 eF9mcGdhX2F0dHIuYXR0cik7Ci0JaWYgKHJldCkKLQkJcHJfZXJyKCJzeXNmc19jcmVhdGVfZmls ZSBmYWlsZWQ6ICVkXG4iLCByZXQpOwotfQotCi1NQUNISU5FX1NUQVJUKFRTNzhYWCwgIlRlY2hu b2xvZ2ljIFN5c3RlbXMgVFMtNzh4eCBTQkMiKQotCS8qIE1haW50YWluZXI6IEFsZXhhbmRlciBD bG91dGVyIDxhbGV4QGRpZ3Jpei5vcmcudWs+ICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0J Lm5yX2lycXMJPSBPUklPTjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9IHRzNzh4eF9pbml0 LAotCS5tYXBfaW8JCT0gdHM3OHh4X21hcF9pbywKLQkuaW5pdF9lYXJseQk9IG9yaW9uNXhfaW5p dF9lYXJseSwKLQkuaW5pdF9pcnEJPSBvcmlvbjV4X2luaXRfaXJxLAotCS5pbml0X3RpbWUJPSBv cmlvbjV4X3RpbWVyX2luaXQsCi0JLnJlc3RhcnQJPSBvcmlvbjV4X3Jlc3RhcnQsCi1NQUNISU5F X0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzeDA5LWNvbW1vbi5jIGIv YXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzeDA5LWNvbW1vbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwOTllNmZkZmE4ZTYuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNo LW9yaW9uNXgvdHN4MDktY29tbW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAot Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLS8qCi0gKiBRTkFQ IFRTLXgwOSBCb2FyZHMgY29tbW9uIGZ1bmN0aW9ucwotICoKLSAqIE1haW50YWluZXJzOiBMZW5u ZXJ0IEJ1eXRlbmhlayA8YnV5dGVuaEBtYXJ2ZWxsLmNvbT4KLSAqCQlCeXJvbiBCcmFkbGV5IDxi eXJvbi5iYnJhZGxleUBnbWFpbC5jb20+Ci0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+ Ci0jaW5jbHVkZSA8bGludXgvdGltZXguaD4KLSNpbmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+ Ci0jaW5jbHVkZSAib3Jpb241eC5oIgotI2luY2x1ZGUgInRzeDA5LWNvbW1vbi5oIgotI2luY2x1 ZGUgImNvbW1vbi5oIgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFFOQVAgVFMteDA5IHNw ZWNpZmljIHBvd2VyIG9mZiBtZXRob2QgdmlhIFVBUlQxLWF0dGFjaGVkIFBJQwotICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCi0KLSNkZWZpbmUgVUFSVDFfUkVHKHgpCShVQVJUMV9WSVJUX0JBU0UgKyAo KFVBUlRfIyN4KSA8PCAyKSkKLQotdm9pZCBxbmFwX3RzeDA5X3Bvd2VyX29mZih2b2lkKQotewot CS8qIDE5MjAwIGJhdWQgZGl2aXNvciAqLwotCWNvbnN0IHVuc2lnbmVkIGRpdmlzb3IgPSAoKG9y aW9uNXhfdGNsayArICg4ICogMTkyMDApKSAvICgxNiAqIDE5MjAwKSk7Ci0KLQlwcl9pbmZvKCIl czogdHJpZ2dlcmluZyBwb3dlci1vZmYuLi5cbiIsIF9fZnVuY19fKTsKLQotCS8qIGhpamFjayB1 YXJ0MSBhbmQgcmVzZXQgaW50byBzYW5lIHN0YXRlICgxOTIwMCw4bjEpICovCi0Jd3JpdGVsKDB4 ODMsIFVBUlQxX1JFRyhMQ1IpKTsKLQl3cml0ZWwoZGl2aXNvciAmIDB4ZmYsIFVBUlQxX1JFRyhE TEwpKTsKLQl3cml0ZWwoKGRpdmlzb3IgPj4gOCkgJiAweGZmLCBVQVJUMV9SRUcoRExNKSk7Ci0J d3JpdGVsKDB4MDMsIFVBUlQxX1JFRyhMQ1IpKTsKLQl3cml0ZWwoMHgwMCwgVUFSVDFfUkVHKElF UikpOwotCXdyaXRlbCgweDAwLCBVQVJUMV9SRUcoRkNSKSk7Ci0Jd3JpdGVsKDB4MDAsIFVBUlQx X1JFRyhNQ1IpKTsKLQotCS8qIHNlbmQgdGhlIHBvd2VyLW9mZiBjb21tYW5kICdBJyB0byBQSUMg Ki8KLQl3cml0ZWwoJ0EnLCBVQVJUMV9SRUcoVFgpKTsKLX0KLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBFdGhlcm5ldAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0cnVjdCBtdjY0M3h4 X2V0aF9wbGF0Zm9ybV9kYXRhIHFuYXBfdHN4MDlfZXRoX2RhdGEgPSB7Ci0JLnBoeV9hZGRyCT0g TVY2NDNYWF9FVEhfUEhZX0FERFIoOCksCi19OwotCi1zdGF0aWMgaW50IF9faW5pdCBxbmFwX3Rz eDA5X3BhcnNlX2hleF9uaWJibGUoY2hhciBuKQotewotCWlmIChuID49ICcwJyAmJiBuIDw9ICc5 JykKLQkJcmV0dXJuIG4gLSAnMCc7Ci0KLQlpZiAobiA+PSAnQScgJiYgbiA8PSAnRicpCi0JCXJl dHVybiBuIC0gJ0EnICsgMTA7Ci0KLQlpZiAobiA+PSAnYScgJiYgbiA8PSAnZicpCi0JCXJldHVy biBuIC0gJ2EnICsgMTA7Ci0KLQlyZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBpbnQgX19pbml0IHFu YXBfdHN4MDlfcGFyc2VfaGV4X2J5dGUoY29uc3QgY2hhciAqYikKLXsKLQlpbnQgaGk7Ci0JaW50 IGxvOwotCi0JaGkgPSBxbmFwX3RzeDA5X3BhcnNlX2hleF9uaWJibGUoYlswXSk7Ci0JbG8gPSBx bmFwX3RzeDA5X3BhcnNlX2hleF9uaWJibGUoYlsxXSk7Ci0KLQlpZiAoaGkgPCAwIHx8IGxvIDwg MCkKLQkJcmV0dXJuIC0xOwotCi0JcmV0dXJuIChoaSA8PCA0KSB8IGxvOwotfQotCi1zdGF0aWMg aW50IF9faW5pdCBxbmFwX3RzeDA5X2NoZWNrX21hY19hZGRyKGNvbnN0IGNoYXIgKmFkZHJfc3Ry KQotewotCXVfaW50OF90IGFkZHJbNl07Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgNjsg aSsrKSB7Ci0JCWludCBieXRlOwotCi0JCS8qCi0JCSAqIEVuZm9yY2UgInh4Onh4Onh4Onh4Onh4 Onh4XG4iIGZvcm1hdC4KLQkJICovCi0JCWlmIChhZGRyX3N0clsoaSAqIDMpICsgMl0gIT0gKChp IDwgNSkgPyAnOicgOiAnXG4nKSkKLQkJCXJldHVybiAtMTsKLQotCQlieXRlID0gcW5hcF90c3gw OV9wYXJzZV9oZXhfYnl0ZShhZGRyX3N0ciArIChpICogMykpOwotCQlpZiAoYnl0ZSA8IDApCi0J CQlyZXR1cm4gLTE7Ci0JCWFkZHJbaV0gPSBieXRlOwotCX0KLQotCXByaW50ayhLRVJOX0lORk8g InRzeDA5OiBmb3VuZCBldGhlcm5ldCBtYWMgYWRkcmVzcyAlcE1cbiIsIGFkZHIpOwotCi0JbWVt Y3B5KHFuYXBfdHN4MDlfZXRoX2RhdGEubWFjX2FkZHIsIGFkZHIsIDYpOwotCi0JcmV0dXJuIDA7 Ci19Ci0KLS8qCi0gKiBUaGUgJ05BUyBDb25maWcnIGZsYXNoIHBhcnRpdGlvbiBoYXMgYW4gZXh0 MiBmaWxlc3lzdGVtIHdoaWNoCi0gKiBjb250YWlucyBhIGZpbGUgdGhhdCBoYXMgdGhlIGV0aGVy bmV0IE1BQyBhZGRyZXNzIGluIHBsYWluIHRleHQKLSAqIChmb3JtYXQgInh4Onh4Onh4Onh4Onh4 Onh4XG4iKS4KLSAqLwotdm9pZCBfX2luaXQgcW5hcF90c3gwOV9maW5kX21hY19hZGRyKHUzMiBt ZW1fYmFzZSwgdTMyIHNpemUpCi17Ci0JdW5zaWduZWQgbG9uZyBhZGRyOwotCi0JZm9yIChhZGRy ID0gbWVtX2Jhc2U7IGFkZHIgPCAobWVtX2Jhc2UgKyBzaXplKTsgYWRkciArPSAxMDI0KSB7Ci0J CWNoYXIgKm5vcl9wYWdlOwotCQlpbnQgcmV0ID0gMDsKLQotCQlub3JfcGFnZSA9IGlvcmVtYXAo YWRkciwgMTAyNCk7Ci0JCWlmIChub3JfcGFnZSAhPSBOVUxMKSB7Ci0JCQlyZXQgPSBxbmFwX3Rz eDA5X2NoZWNrX21hY19hZGRyKG5vcl9wYWdlKTsKLQkJCWlvdW5tYXAobm9yX3BhZ2UpOwotCQl9 Ci0KLQkJaWYgKHJldCA9PSAwKQotCQkJYnJlYWs7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1vcmlvbjV4L3RzeDA5LWNvbW1vbi5oIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3Rz eDA5LWNvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmJlZGM2YjgyZmIu LjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHN4MDktY29tbW9uLmgK KysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCAqLwotI2lmbmRlZiBfX0FSQ0hfT1JJT041WF9UU1gwOV9DT01NT05fSAotI2Rl ZmluZSBfX0FSQ0hfT1JJT041WF9UU1gwOV9DT01NT05fSAotCi0vKgotICogUU5BUCBUUy14MDkg Qm9hcmRzIHBvd2VyLW9mZiBmdW5jdGlvbgotICovCi1leHRlcm4gdm9pZCBxbmFwX3RzeDA5X3Bv d2VyX29mZih2b2lkKTsKLQotLyoKLSAqIFFOQVAgVFMteDA5IEJvYXJkcyBmdW5jdGlvbiB0byBm aW5kIEV0aGVybmV0IE1BQyBhZGRyZXNzIGluIGZsYXNoIG1lbW9yeQotICovCi1leHRlcm4gdm9p ZCBfX2luaXQgcW5hcF90c3gwOV9maW5kX21hY19hZGRyKHUzMiBtZW1fYmFzZSwgdTMyIHNpemUp OwotCi0vKgotICogUU5BUCBUUy14MDkgQm9hcmRzIGV0aGVybmV0IGRlY2xhcmF0aW9uCi0gKi8K LWV4dGVybiBzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSBxbmFwX3RzeDA5X2V0aF9k YXRhOwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vS2NvbmZpZyBiL2FyY2gv YXJtL21tL0tjb25maWcKaW5kZXggNjU3NDY1OWRmYjYxLi5jNDBjZGIyMjc0ZWEgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtL21tL0tjb25maWcKKysrIGIvYXJjaC9hcm0vbW0vS2NvbmZpZwpAQCAtOTgw LDcgKzk4MCw3IEBAIGNvbmZpZyBDQUNIRV9CMTVfUkFDCiAKIGNvbmZpZyBDQUNIRV9GRVJPQ0VP Tl9MMgogCWJvb2wgIkVuYWJsZSB0aGUgRmVyb2Nlb24gTDIgY2FjaGUgY29udHJvbGxlciIKLQlk ZXBlbmRzIG9uIEFSQ0hfTVY3OFhYMCB8fCBBUkNIX01WRUJVCisJZGVwZW5kcyBvbiBBUkNIX01W RUJVCiAJZGVmYXVsdCB5CiAJc2VsZWN0IE9VVEVSX0NBQ0hFCiAJaGVscApkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vcGxhdC1vcmlvbi9NYWtlZmlsZSBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vTWFrZWZp bGUKaW5kZXggZThjNzU4MGRmOGNhLi5kZmRlMzljZGQ5OTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJt L3BsYXQtb3Jpb24vTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi9NYWtlZmlsZQpA QCAtNSw1ICs1LDUgQEAKIGNjZmxhZ3MteSA6PSAtSSQoc3JjKS9pbmNsdWRlCiAKIG9yaW9uLWdw aW8tJChDT05GSUdfR1BJT0xJQikgICAgICArPSBncGlvLm8KLW9iai0kKENPTkZJR19QTEFUX09S SU9OX0xFR0FDWSkgICArPSBpcnEubyBwY2llLm8gdGltZS5vIGNvbW1vbi5vIG1wcC5vCitvYmot JChDT05GSUdfUExBVF9PUklPTl9MRUdBQ1kpICAgKz0gaXJxLm8gcGNpZS5vIG1wcC5vCiBvYmot JChDT05GSUdfUExBVF9PUklPTl9MRUdBQ1kpICAgKz0gJChvcmlvbi1ncGlvLXkpCmRpZmYgLS1n aXQgYS9hcmNoL2FybS9wbGF0LW9yaW9uL2NvbW1vbi5jIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi9j b21tb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiZTk4Mzg2MjQ1Li4wMDAw MDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9jb21tb24uYworKysgL2Rldi9udWxs CkBAIC0xLDgyNiArMCwwIEBACi0vKgotICogYXJjaC9hcm0vcGxhdC1vcmlvbi9jb21tb24uYwot ICoKLSAqIE1hcnZlbGwgT3Jpb24gU29DIGNvbW1vbiBzZXR1cCBjb2RlIHVzZWQgYnkgbXVsdGlw bGUgbWFjaC0vY29tbW9uLmMKLSAqCi0gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgdmVyc2lvbiAyLiAg VGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKLSAqIHdhcnJhbnR5 IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqLwotCi0jaW5jbHVk ZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Ci0j aW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFfcGxhdGZv cm0uaD4KLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KLSNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4K LSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxpbnV4L212NjQzeHhf aTJjLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS9kbWEtbXZfeG9yLmg+Ci0jaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS91c2ItZWhjaS1vcmlvbi5oPgotI2luY2x1ZGUgPHBs YXQvY29tbW9uLmg+Ci0jaW5jbHVkZSA8bGludXgvcGh5Lmg+Ci0KLS8qIENyZWF0ZSBhIGNsa2Rl diBlbnRyeSBmb3IgYSBnaXZlbiBkZXZpY2UvY2xrICovCi12b2lkIF9faW5pdCBvcmlvbl9jbGtk ZXZfYWRkKGNvbnN0IGNoYXIgKmNvbl9pZCwgY29uc3QgY2hhciAqZGV2X2lkLAotCQkJICAgICBz dHJ1Y3QgY2xrICpjbGspCi17Ci0JY2xrZGV2X2NyZWF0ZShjbGssIGNvbl9pZCwgIiVzIiwgZGV2 X2lkKTsKLX0KLQotLyogQ3JlYXRlIGNsa2RldiBlbnRyaWVzIGZvciBhbGwgb3Jpb24gcGxhdGZv cm1zIGV4Y2VwdCBraXJrd29vZC4KLSAgIEtpcmt3b29kIGhhcyBnYXRlZCBjbG9ja3MgZm9yIHNv bWUgb2YgaXRzIHBlcmlwaGVyYWxzLCBzbyBjcmVhdGVzCi0gICBpdHMgb3duIGNsa2RldiBlbnRy aWVzLiBGb3IgYWxsIHRoZSBvdGhlciBvcmlvbiBkZXZpY2VzLCBjcmVhdGUKLSAgIGNsa2RldiBl bnRyaWVzIHRvIHRoZSB0Y2xrLiAqLwotdm9pZCBfX2luaXQgb3Jpb25fY2xrZGV2X2luaXQoc3Ry dWN0IGNsayAqdGNsaykKLXsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJvcmlvbl9zcGkuMCIs IHRjbGspOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm9yaW9uX3NwaS4xIiwgdGNsayk7Ci0J b3Jpb25fY2xrZGV2X2FkZChOVUxMLCBNVjY0M1hYX0VUSF9OQU1FICIuMCIsIHRjbGspOwotCW9y aW9uX2Nsa2Rldl9hZGQoTlVMTCwgTVY2NDNYWF9FVEhfTkFNRSAiLjEiLCB0Y2xrKTsKLQlvcmlv bl9jbGtkZXZfYWRkKE5VTEwsIE1WNjQzWFhfRVRIX05BTUUgIi4yIiwgdGNsayk7Ci0Jb3Jpb25f Y2xrZGV2X2FkZChOVUxMLCBNVjY0M1hYX0VUSF9OQU1FICIuMyIsIHRjbGspOwotCW9yaW9uX2Ns a2Rldl9hZGQoTlVMTCwgIm9yaW9uX3dkdCIsIHRjbGspOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVM TCwgTVY2NFhYWF9JMkNfQ1RMUl9OQU1FICIuMCIsIHRjbGspOwotfQotCi0vKiBGaWxsIGluIHRo ZSByZXNvdXJjZXMgc3RydWN0dXJlIGFuZCBsaW5rIGl0IGludG8gdGhlIHBsYXRmb3JtCi0gICBk ZXZpY2Ugc3RydWN0dXJlLiBUaGVyZSBpcyBhbHdheXMgYSBtZW1vcnkgcmVnaW9uLCBhbmQgbmVh cmx5Ci0gICBhbHdheXMgYW4gaW50ZXJydXB0LiovCi1zdGF0aWMgdm9pZCBmaWxsX3Jlc291cmNl cyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZpY2UsCi0JCQkgICBzdHJ1Y3QgcmVzb3VyY2Ug KnJlc291cmNlcywKLQkJCSAgIHJlc291cmNlX3NpemVfdCBtYXBiYXNlLAotCQkJICAgcmVzb3Vy Y2Vfc2l6ZV90IHNpemUpCi17Ci0JZGV2aWNlLT5yZXNvdXJjZSA9IHJlc291cmNlczsKLQlkZXZp Y2UtPm51bV9yZXNvdXJjZXMgPSAxOwotCXJlc291cmNlc1swXS5mbGFncyA9IElPUkVTT1VSQ0Vf TUVNOwotCXJlc291cmNlc1swXS5zdGFydCA9IG1hcGJhc2U7Ci0JcmVzb3VyY2VzWzBdLmVuZCA9 IG1hcGJhc2UgKyBzaXplOwotfQotCi1zdGF0aWMgdm9pZCBmaWxsX3Jlc291cmNlc19pcnEoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqZGV2aWNlLAotCQkJICAgICAgIHN0cnVjdCByZXNvdXJjZSAq cmVzb3VyY2VzLAotCQkJICAgICAgIHJlc291cmNlX3NpemVfdCBtYXBiYXNlLAotCQkJICAgICAg IHJlc291cmNlX3NpemVfdCBzaXplLAotCQkJICAgICAgIHVuc2lnbmVkIGludCBpcnEpCi17Ci0J ZmlsbF9yZXNvdXJjZXMoZGV2aWNlLCByZXNvdXJjZXMsIG1hcGJhc2UsIHNpemUpOwotCi0JZGV2 aWNlLT5udW1fcmVzb3VyY2VzKys7Ci0JcmVzb3VyY2VzWzFdLmZsYWdzID0gSU9SRVNPVVJDRV9J UlE7Ci0JcmVzb3VyY2VzWzFdLnN0YXJ0ID0gaXJxOwotCXJlc291cmNlc1sxXS5lbmQgPSBpcnE7 Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVUFSVAotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgdWFydF9nZXRfY2xrX3JhdGUoc3RydWN0 IGNsayAqY2xrKQotewotCWNsa19wcmVwYXJlX2VuYWJsZShjbGspOwotCXJldHVybiBjbGtfZ2V0 X3JhdGUoY2xrKTsKLX0KLQotc3RhdGljIHZvaWQgX19pbml0IHVhcnRfY29tcGxldGUoCi0Jc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqb3Jpb25fdWFydCwKLQlzdHJ1Y3QgcGxhdF9zZXJpYWw4MjUw X3BvcnQgKmRhdGEsCi0Jc3RydWN0IHJlc291cmNlICpyZXNvdXJjZXMsCi0Jdm9pZCBfX2lvbWVt ICptZW1iYXNlLAotCXJlc291cmNlX3NpemVfdCBtYXBiYXNlLAotCXVuc2lnbmVkIGludCBpcnEs Ci0Jc3RydWN0IGNsayAqY2xrKQotewotCWRhdGEtPm1hcGJhc2UgPSBtYXBiYXNlOwotCWRhdGEt Pm1lbWJhc2UgPSBtZW1iYXNlOwotCWRhdGEtPmlycSA9IGlycTsKLQlkYXRhLT51YXJ0Y2xrID0g dWFydF9nZXRfY2xrX3JhdGUoY2xrKTsKLQlvcmlvbl91YXJ0LT5kZXYucGxhdGZvcm1fZGF0YSA9 IGRhdGE7Ci0KLQlmaWxsX3Jlc291cmNlc19pcnEob3Jpb25fdWFydCwgcmVzb3VyY2VzLCBtYXBi YXNlLCAweGZmLCBpcnEpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcihvcmlvbl91YXJ0KTsK LX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBVQVJUMAotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi1zdGF0aWMgc3RydWN0IHBsYXRfc2VyaWFsODI1MF9wb3J0IG9yaW9uX3VhcnQwX2RhdGFb XSA9IHsKLQl7Ci0JCS5mbGFncwkJPSBVUEZfU0tJUF9URVNUIHwgVVBGX0JPT1RfQVVUT0NPTkYs Ci0JCS5pb3R5cGUJCT0gVVBJT19NRU0sCi0JCS5yZWdzaGlmdAk9IDIsCi0JfSwgewotCX0sCi19 OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX3VhcnQwX3Jlc291cmNlc1syXTsKLQot c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fdWFydDAgPSB7Ci0JLm5hbWUJCQk9 ICJzZXJpYWw4MjUwIiwKLQkuaWQJCQk9IFBMQVQ4MjUwX0RFVl9QTEFURk9STSwKLX07Ci0KLXZv aWQgX19pbml0IG9yaW9uX3VhcnQwX2luaXQodm9pZCBfX2lvbWVtICptZW1iYXNlLAotCQkJICAg ICByZXNvdXJjZV9zaXplX3QgbWFwYmFzZSwKLQkJCSAgICAgdW5zaWduZWQgaW50IGlycSwKLQkJ CSAgICAgc3RydWN0IGNsayAqY2xrKQotewotCXVhcnRfY29tcGxldGUoJm9yaW9uX3VhcnQwLCBv cmlvbl91YXJ0MF9kYXRhLCBvcmlvbl91YXJ0MF9yZXNvdXJjZXMsCi0JCSAgICAgIG1lbWJhc2Us IG1hcGJhc2UsIGlycSwgY2xrKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBVQVJU MQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IHBsYXRfc2VyaWFsODI1MF9w b3J0IG9yaW9uX3VhcnQxX2RhdGFbXSA9IHsKLQl7Ci0JCS5mbGFncwkJPSBVUEZfU0tJUF9URVNU IHwgVVBGX0JPT1RfQVVUT0NPTkYsCi0JCS5pb3R5cGUJCT0gVVBJT19NRU0sCi0JCS5yZWdzaGlm dAk9IDIsCi0JfSwgewotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX3Vh cnQxX3Jlc291cmNlc1syXTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25f dWFydDEgPSB7Ci0JLm5hbWUJCQk9ICJzZXJpYWw4MjUwIiwKLQkuaWQJCQk9IFBMQVQ4MjUwX0RF Vl9QTEFURk9STTEsCi19OwotCi12b2lkIF9faW5pdCBvcmlvbl91YXJ0MV9pbml0KHZvaWQgX19p b21lbSAqbWVtYmFzZSwKLQkJCSAgICAgcmVzb3VyY2Vfc2l6ZV90IG1hcGJhc2UsCi0JCQkgICAg IHVuc2lnbmVkIGludCBpcnEsCi0JCQkgICAgIHN0cnVjdCBjbGsgKmNsaykKLXsKLQl1YXJ0X2Nv bXBsZXRlKCZvcmlvbl91YXJ0MSwgb3Jpb25fdWFydDFfZGF0YSwgb3Jpb25fdWFydDFfcmVzb3Vy Y2VzLAotCQkgICAgICBtZW1iYXNlLCBtYXBiYXNlLCBpcnEsIGNsayk7Ci19Ci0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogVUFSVDIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0 cnVjdCBwbGF0X3NlcmlhbDgyNTBfcG9ydCBvcmlvbl91YXJ0Ml9kYXRhW10gPSB7Ci0JewotCQku ZmxhZ3MJCT0gVVBGX1NLSVBfVEVTVCB8IFVQRl9CT09UX0FVVE9DT05GLAotCQkuaW90eXBlCQk9 IFVQSU9fTUVNLAotCQkucmVnc2hpZnQJPSAyLAotCX0sIHsKLQl9LAotfTsKLQotc3RhdGljIHN0 cnVjdCByZXNvdXJjZSBvcmlvbl91YXJ0Ml9yZXNvdXJjZXNbMl07Ci0KLXN0YXRpYyBzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlIG9yaW9uX3VhcnQyID0gewotCS5uYW1lCQkJPSAic2VyaWFsODI1MCIs Ci0JLmlkCQkJPSBQTEFUODI1MF9ERVZfUExBVEZPUk0yLAotfTsKLQotdm9pZCBfX2luaXQgb3Jp b25fdWFydDJfaW5pdCh2b2lkIF9faW9tZW0gKm1lbWJhc2UsCi0JCQkgICAgIHJlc291cmNlX3Np emVfdCBtYXBiYXNlLAotCQkJICAgICB1bnNpZ25lZCBpbnQgaXJxLAotCQkJICAgICBzdHJ1Y3Qg Y2xrICpjbGspCi17Ci0JdWFydF9jb21wbGV0ZSgmb3Jpb25fdWFydDIsIG9yaW9uX3VhcnQyX2Rh dGEsIG9yaW9uX3VhcnQyX3Jlc291cmNlcywKLQkJICAgICAgbWVtYmFzZSwgbWFwYmFzZSwgaXJx LCBjbGspOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFVBUlQzCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcGxhdF9zZXJpYWw4MjUwX3BvcnQgb3Jpb25fdWFy dDNfZGF0YVtdID0gewotCXsKLQkJLmZsYWdzCQk9IFVQRl9TS0lQX1RFU1QgfCBVUEZfQk9PVF9B VVRPQ09ORiwKLQkJLmlvdHlwZQkJPSBVUElPX01FTSwKLQkJLnJlZ3NoaWZ0CT0gMiwKLQl9LCB7 Ci0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fdWFydDNfcmVzb3VyY2Vz WzJdOwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl91YXJ0MyA9IHsKLQku bmFtZQkJCT0gInNlcmlhbDgyNTAiLAotCS5pZAkJCT0gMywKLX07Ci0KLXZvaWQgX19pbml0IG9y aW9uX3VhcnQzX2luaXQodm9pZCBfX2lvbWVtICptZW1iYXNlLAotCQkJICAgICByZXNvdXJjZV9z aXplX3QgbWFwYmFzZSwKLQkJCSAgICAgdW5zaWduZWQgaW50IGlycSwKLQkJCSAgICAgc3RydWN0 IGNsayAqY2xrKQotewotCXVhcnRfY29tcGxldGUoJm9yaW9uX3VhcnQzLCBvcmlvbl91YXJ0M19k YXRhLCBvcmlvbl91YXJ0M19yZXNvdXJjZXMsCi0JCSAgICAgIG1lbWJhc2UsIG1hcGJhc2UsIGly cSwgY2xrKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTb0MgUlRDCi0gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fcnRjX3Jlc291cmNl WzJdOwotCi12b2lkIF9faW5pdCBvcmlvbl9ydGNfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2Us Ci0JCQkgICB1bnNpZ25lZCBsb25nIGlycSkKLXsKLQlvcmlvbl9ydGNfcmVzb3VyY2VbMF0uc3Rh cnQgPSBtYXBiYXNlOwotCW9yaW9uX3J0Y19yZXNvdXJjZVswXS5lbmQgPSBtYXBiYXNlICsgU1pf MzIgLSAxOwotCW9yaW9uX3J0Y19yZXNvdXJjZVswXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwot CW9yaW9uX3J0Y19yZXNvdXJjZVsxXS5zdGFydCA9IGlycTsKLQlvcmlvbl9ydGNfcmVzb3VyY2Vb MV0uZW5kID0gaXJxOwotCW9yaW9uX3J0Y19yZXNvdXJjZVsxXS5mbGFncyA9IElPUkVTT1VSQ0Vf SVJROwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZSgicnRjLW12IiwgLTEsIG9y aW9uX3J0Y19yZXNvdXJjZSwgMik7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR0UK LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIF9faW5pdCB2b2lkIGdlX2NvbXBsZXRlKAot CXN0cnVjdCBtdjY0M3h4X2V0aF9zaGFyZWRfcGxhdGZvcm1fZGF0YSAqb3Jpb25fZ2Vfc2hhcmVk X2RhdGEsCi0Jc3RydWN0IHJlc291cmNlICpvcmlvbl9nZV9yZXNvdXJjZSwgdW5zaWduZWQgbG9u ZyBpcnEsCi0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3Jpb25fZ2Vfc2hhcmVkLAotCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKm9yaW9uX2dlX212bWRpbywKLQlzdHJ1Y3QgbXY2NDN4eF9ldGhf cGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEsCi0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3Jpb25f Z2UpCi17Ci0Jb3Jpb25fZ2VfcmVzb3VyY2UtPnN0YXJ0ID0gaXJxOwotCW9yaW9uX2dlX3Jlc291 cmNlLT5lbmQgPSBpcnE7Ci0JZXRoX2RhdGEtPnNoYXJlZCA9IG9yaW9uX2dlX3NoYXJlZDsKLQlv cmlvbl9nZS0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBldGhfZGF0YTsKLQotCXBsYXRmb3JtX2Rldmlj ZV9yZWdpc3Rlcihvcmlvbl9nZV9zaGFyZWQpOwotCWlmIChvcmlvbl9nZV9tdm1kaW8pCi0JCXBs YXRmb3JtX2RldmljZV9yZWdpc3Rlcihvcmlvbl9nZV9tdm1kaW8pOwotCXBsYXRmb3JtX2Rldmlj ZV9yZWdpc3Rlcihvcmlvbl9nZSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR0Uw MAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG12NjQzeHhfZXRoX3NoYXJl ZF9wbGF0Zm9ybV9kYXRhIG9yaW9uX2dlMDBfc2hhcmVkX2RhdGE7Ci0KLXN0YXRpYyBzdHJ1Y3Qg cmVzb3VyY2Ugb3Jpb25fZ2UwMF9zaGFyZWRfcmVzb3VyY2VzW10gPSB7Ci0JewotCQkubmFtZQk9 ICJnZTAwIGJhc2UiLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBv cmlvbl9nZTAwX3NoYXJlZCA9IHsKLQkubmFtZQkJPSBNVjY0M1hYX0VUSF9TSEFSRURfTkFNRSwK LQkuaWQJCT0gMCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmb3Jpb25fZ2UwMF9z aGFyZWRfZGF0YSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl9nZV9t dm1kaW9fcmVzb3VyY2VzW10gPSB7Ci0JewotCQkubmFtZQk9ICJnZTAwIG12bWRpbyBiYXNlIiwK LQl9LCB7Ci0JCS5uYW1lCT0gImdlMDAgbXZtZGlvIGVyciBpcnEiLAotCX0sCi19OwotCi1zdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9nZV9tdm1kaW8gPSB7Ci0JLm5hbWUJCT0g Im9yaW9uLW1kaW8iLAotCS5pZAkJPSAtMSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ug b3Jpb25fZ2UwMF9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdlMDAgaXJxIiwKLQkJ LmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlIG9yaW9uX2dlMDAgPSB7Ci0JLm5hbWUJCT0gTVY2NDNYWF9FVEhfTkFNRSwKLQku aWQJCT0gMCwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJlc291cmNlCT0gb3Jpb25fZ2UwMF9y ZXNvdXJjZXMsCi0JLmRldgkJPSB7Ci0JCS5jb2hlcmVudF9kbWFfbWFzawk9IERNQV9CSVRfTUFT SygzMiksCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX2dlMDBfaW5pdChzdHJ1Y3QgbXY2 NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBt YXBiYXNlLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxLAotCQkJICAgIHVuc2lnbmVkIGxvbmcg aXJxX2VyciwKLQkJCSAgICB1bnNpZ25lZCBpbnQgdHhfY3N1bV9saW1pdCkKLXsKLQlmaWxsX3Jl c291cmNlcygmb3Jpb25fZ2UwMF9zaGFyZWQsIG9yaW9uX2dlMDBfc2hhcmVkX3Jlc291cmNlcywK LQkJICAgICAgIG1hcGJhc2UgKyAweDIwMDAsIFNaXzE2SyAtIDEpOwotCWZpbGxfcmVzb3VyY2Vz X2lycSgmb3Jpb25fZ2VfbXZtZGlvLCBvcmlvbl9nZV9tdm1kaW9fcmVzb3VyY2VzLAotCQkJbWFw YmFzZSArIDB4MjAwNCwgMHg4NCAtIDEsIGlycV9lcnIpOwotCW9yaW9uX2dlMDBfc2hhcmVkX2Rh dGEudHhfY3N1bV9saW1pdCA9IHR4X2NzdW1fbGltaXQ7Ci0JZ2VfY29tcGxldGUoJm9yaW9uX2dl MDBfc2hhcmVkX2RhdGEsCi0JCSAgICBvcmlvbl9nZTAwX3Jlc291cmNlcywgaXJxLCAmb3Jpb25f Z2UwMF9zaGFyZWQsCi0JCSAgICAmb3Jpb25fZ2VfbXZtZGlvLAotCQkgICAgZXRoX2RhdGEsICZv cmlvbl9nZTAwKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHRTAxCi0gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhfc2hhcmVkX3BsYXRmb3Jt X2RhdGEgb3Jpb25fZ2UwMV9zaGFyZWRfZGF0YTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBv cmlvbl9nZTAxX3NoYXJlZF9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdlMDEgYmFz ZSIsCi0JfQotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fZ2UwMV9z aGFyZWQgPSB7Ci0JLm5hbWUJCT0gTVY2NDNYWF9FVEhfU0hBUkVEX05BTUUsCi0JLmlkCQk9IDEs Ci0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJm9yaW9uX2dlMDFfc2hhcmVkX2RhdGEs Ci0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fZ2UwMV9yZXNvdXJjZXNb XSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdlMDEgaXJxIiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9J UlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX2dlMDEg PSB7Ci0JLm5hbWUJCT0gTVY2NDNYWF9FVEhfTkFNRSwKLQkuaWQJCT0gMSwKLQkubnVtX3Jlc291 cmNlcwk9IDEsCi0JLnJlc291cmNlCT0gb3Jpb25fZ2UwMV9yZXNvdXJjZXMsCi0JLmRldgkJPSB7 Ci0JCS5jb2hlcmVudF9kbWFfbWFzawk9IERNQV9CSVRfTUFTSygzMiksCi0JfSwKLX07Ci0KLXZv aWQgX19pbml0IG9yaW9uX2dlMDFfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0 YSAqZXRoX2RhdGEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgIHVuc2ln bmVkIGxvbmcgaXJxLAotCQkJICAgIHVuc2lnbmVkIGludCB0eF9jc3VtX2xpbWl0KQotewotCWZp bGxfcmVzb3VyY2VzKCZvcmlvbl9nZTAxX3NoYXJlZCwgb3Jpb25fZ2UwMV9zaGFyZWRfcmVzb3Vy Y2VzLAotCQkgICAgICAgbWFwYmFzZSArIDB4MjAwMCwgU1pfMTZLIC0gMSk7Ci0Jb3Jpb25fZ2Uw MV9zaGFyZWRfZGF0YS50eF9jc3VtX2xpbWl0ID0gdHhfY3N1bV9saW1pdDsKLQlnZV9jb21wbGV0 ZSgmb3Jpb25fZ2UwMV9zaGFyZWRfZGF0YSwKLQkJICAgIG9yaW9uX2dlMDFfcmVzb3VyY2VzLCBp cnEsICZvcmlvbl9nZTAxX3NoYXJlZCwKLQkJICAgIE5VTEwsCi0JCSAgICBldGhfZGF0YSwgJm9y aW9uX2dlMDEpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdFMTAKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9zaGFyZWRfcGxhdGZvcm1f ZGF0YSBvcmlvbl9nZTEwX3NoYXJlZF9kYXRhOwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9y aW9uX2dlMTBfc2hhcmVkX3Jlc291cmNlc1tdID0gewotCXsKLQkJLm5hbWUJPSAiZ2UxMCBiYXNl IiwKLQl9Ci19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9nZTEwX3No YXJlZCA9IHsKLQkubmFtZQkJPSBNVjY0M1hYX0VUSF9TSEFSRURfTkFNRSwKLQkuaWQJCT0gMiwK LQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmb3Jpb25fZ2UxMF9zaGFyZWRfZGF0YSwK LQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl9nZTEwX3Jlc291cmNlc1td ID0gewotCXsKLQkJLm5hbWUJPSAiZ2UxMCBpcnEiLAotCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lS USwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fZ2UxMCA9 IHsKLQkubmFtZQkJPSBNVjY0M1hYX0VUSF9OQU1FLAotCS5pZAkJPSAyLAotCS5udW1fcmVzb3Vy Y2VzCT0gMSwKLQkucmVzb3VyY2UJPSBvcmlvbl9nZTEwX3Jlc291cmNlcywKLQkuZGV2CQk9IHsK LQkJLmNvaGVyZW50X2RtYV9tYXNrCT0gRE1BX0JJVF9NQVNLKDMyKSwKLQl9LAotfTsKLQotdm9p ZCBfX2luaXQgb3Jpb25fZ2UxMF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRh ICpldGhfZGF0YSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgdW5zaWdu ZWQgbG9uZyBpcnEpCi17Ci0JZmlsbF9yZXNvdXJjZXMoJm9yaW9uX2dlMTBfc2hhcmVkLCBvcmlv bl9nZTEwX3NoYXJlZF9yZXNvdXJjZXMsCi0JCSAgICAgICBtYXBiYXNlICsgMHgyMDAwLCBTWl8x NksgLSAxKTsKLQlnZV9jb21wbGV0ZSgmb3Jpb25fZ2UxMF9zaGFyZWRfZGF0YSwKLQkJICAgIG9y aW9uX2dlMTBfcmVzb3VyY2VzLCBpcnEsICZvcmlvbl9nZTEwX3NoYXJlZCwKLQkJICAgIE5VTEws Ci0JCSAgICBldGhfZGF0YSwgJm9yaW9uX2dlMTApOwotfQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKLSAqIEdFMTEKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBtdjY0M3h4 X2V0aF9zaGFyZWRfcGxhdGZvcm1fZGF0YSBvcmlvbl9nZTExX3NoYXJlZF9kYXRhOwotCi1zdGF0 aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2dlMTFfc2hhcmVkX3Jlc291cmNlc1tdID0gewotCXsK LQkJLm5hbWUJPSAiZ2UxMSBiYXNlIiwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2Ugb3Jpb25fZ2UxMV9zaGFyZWQgPSB7Ci0JLm5hbWUJCT0gTVY2NDNYWF9FVEhfU0hB UkVEX05BTUUsCi0JLmlkCQk9IDMsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJm9y aW9uX2dlMTFfc2hhcmVkX2RhdGEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ug b3Jpb25fZ2UxMV9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdlMTEgaXJxIiwKLQkJ LmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlIG9yaW9uX2dlMTEgPSB7Ci0JLm5hbWUJCT0gTVY2NDNYWF9FVEhfTkFNRSwKLQku aWQJCT0gMywKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJlc291cmNlCT0gb3Jpb25fZ2UxMV9y ZXNvdXJjZXMsCi0JLmRldgkJPSB7Ci0JCS5jb2hlcmVudF9kbWFfbWFzawk9IERNQV9CSVRfTUFT SygzMiksCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX2dlMTFfaW5pdChzdHJ1Y3QgbXY2 NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBt YXBiYXNlLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxKQotewotCWZpbGxfcmVzb3VyY2VzKCZv cmlvbl9nZTExX3NoYXJlZCwgb3Jpb25fZ2UxMV9zaGFyZWRfcmVzb3VyY2VzLAotCQkgICAgICAg bWFwYmFzZSArIDB4MjAwMCwgU1pfMTZLIC0gMSk7Ci0JZ2VfY29tcGxldGUoJm9yaW9uX2dlMTFf c2hhcmVkX2RhdGEsCi0JCSAgICBvcmlvbl9nZTExX3Jlc291cmNlcywgaXJxLCAmb3Jpb25fZ2Ux MV9zaGFyZWQsCi0JCSAgICBOVUxMLAotCQkgICAgZXRoX2RhdGEsICZvcmlvbl9nZTExKTsKLX0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBJMkMKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot c3RhdGljIHN0cnVjdCBtdjY0eHh4X2kyY19wZGF0YSBvcmlvbl9pMmNfcGRhdGEgPSB7Ci0JLmZy ZXFfbgkJPSAzLAotCS50aW1lb3V0CT0gMTAwMCwgLyogRGVmYXVsdCB0aW1lb3V0IG9mIDEgc2Vj b25kICovCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2kyY19yZXNvdXJjZXNb Ml07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX2kyYyA9IHsKLQkubmFt ZQkJPSBNVjY0WFhYX0kyQ19DVExSX05BTUUsCi0JLmlkCQk9IDAsCi0JLmRldgkJPSB7Ci0JCS5w bGF0Zm9ybV9kYXRhCT0gJm9yaW9uX2kyY19wZGF0YSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVj dCBtdjY0eHh4X2kyY19wZGF0YSBvcmlvbl9pMmNfMV9wZGF0YSA9IHsKLQkuZnJlcV9uCQk9IDMs Ci0JLnRpbWVvdXQJPSAxMDAwLCAvKiBEZWZhdWx0IHRpbWVvdXQgb2YgMSBzZWNvbmQgKi8KLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25faTJjXzFfcmVzb3VyY2VzWzJdOwotCi1z dGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9pMmNfMSA9IHsKLQkubmFtZQkJPSBN VjY0WFhYX0kyQ19DVExSX05BTUUsCi0JLmlkCQk9IDEsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9y bV9kYXRhCT0gJm9yaW9uX2kyY18xX3BkYXRhLAotCX0sCi19OwotCi12b2lkIF9faW5pdCBvcmlv bl9pMmNfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICB1bnNpZ25lZCBsb25nIGly cSwKLQkJCSAgIHVuc2lnbmVkIGxvbmcgZnJlcV9tKQotewotCW9yaW9uX2kyY19wZGF0YS5mcmVx X20gPSBmcmVxX207Ci0JZmlsbF9yZXNvdXJjZXNfaXJxKCZvcmlvbl9pMmMsIG9yaW9uX2kyY19y ZXNvdXJjZXMsIG1hcGJhc2UsCi0JCSAgICAgICBTWl8zMiAtIDEsIGlycSk7Ci0JcGxhdGZvcm1f ZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl9pMmMpOwotfQotCi12b2lkIF9faW5pdCBvcmlvbl9pMmNf MV9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICAgdW5zaWduZWQgbG9uZyBpcnEs Ci0JCQkgICAgIHVuc2lnbmVkIGxvbmcgZnJlcV9tKQotewotCW9yaW9uX2kyY18xX3BkYXRhLmZy ZXFfbSA9IGZyZXFfbTsKLQlmaWxsX3Jlc291cmNlc19pcnEoJm9yaW9uX2kyY18xLCBvcmlvbl9p MmNfMV9yZXNvdXJjZXMsIG1hcGJhc2UsCi0JCSAgICAgICBTWl8zMiAtIDEsIGlycSk7Ci0JcGxh dGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl9pMmNfMSk7Ci19Ci0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotICogU1BJCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcmVz b3VyY2Ugb3Jpb25fc3BpX3Jlc291cmNlczsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2Ugb3Jpb25fc3BpID0gewotCS5uYW1lCQk9ICJvcmlvbl9zcGkiLAotCS5pZAkJPSAwLAotfTsK LQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl9zcGlfMV9yZXNvdXJjZXM7Ci0KLXN0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX3NwaV8xID0gewotCS5uYW1lCQk9ICJvcmlv bl9zcGkiLAotCS5pZAkJPSAxLAotfTsKLQotLyogTm90ZTogVGhlIFNQSSBzaWxpY29uIGNvcmUg ZG9lcyBoYXZlIGludGVycnVwdHMuIEhvd2V2ZXIgdGhlCi0gKiBjdXJyZW50IExpbnV4IHNvZnR3 YXJlIGRyaXZlciBkb2VzIG5vdCB1c2UgaW50ZXJydXB0cy4gKi8KLQotdm9pZCBfX2luaXQgb3Jp b25fc3BpX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlKQotewotCWZpbGxfcmVzb3VyY2VzKCZv cmlvbl9zcGksICZvcmlvbl9zcGlfcmVzb3VyY2VzLAotCQkgICAgICAgbWFwYmFzZSwgU1pfNTEy IC0gMSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl9zcGkpOwotfQotCi12b2lk IF9faW5pdCBvcmlvbl9zcGlfMV9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSkKLXsKLQlmaWxs X3Jlc291cmNlcygmb3Jpb25fc3BpXzEsICZvcmlvbl9zcGlfMV9yZXNvdXJjZXMsCi0JCSAgICAg ICBtYXBiYXNlLCBTWl81MTIgLSAxKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9yaW9u X3NwaV8xKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBYT1IKLSAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwotc3RhdGljIHU2NCBvcmlvbl94b3JfZG1hbWFzayA9IERNQV9CSVRfTUFTSygz Mik7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogWE9SMAotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX3hvcjBfc2hhcmVkX3Jlc291cmNlc1td ID0gewotCXsKLQkJLm5hbWUJPSAieG9yIDAgbG93IiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9N RU0sCi0JfSwgewotCQkubmFtZQk9ICJ4b3IgMCBoaWdoIiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJD RV9NRU0sCi0JfSwgewotCQkubmFtZSAgID0gImlycSBjaGFubmVsIDAiLAotCQkuZmxhZ3MgID0g SU9SRVNPVVJDRV9JUlEsCi0JfSwgewotCQkubmFtZSAgID0gImlycSBjaGFubmVsIDEiLAotCQku ZmxhZ3MgID0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbXZfeG9y X2NoYW5uZWxfZGF0YSBvcmlvbl94b3IwX2NoYW5uZWxzX2RhdGFbMl07Ci0KLXN0YXRpYyBzdHJ1 Y3QgbXZfeG9yX3BsYXRmb3JtX2RhdGEgb3Jpb25feG9yMF9wZGF0YSA9IHsKLQkuY2hhbm5lbHMg PSBvcmlvbl94b3IwX2NoYW5uZWxzX2RhdGEsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RldmljZSBvcmlvbl94b3IwX3NoYXJlZCA9IHsKLQkubmFtZQkJPSBNVl9YT1JfTkFNRSwKLQku aWQJCT0gMCwKLQkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUob3Jpb25feG9yMF9zaGFyZWRf cmVzb3VyY2VzKSwKLQkucmVzb3VyY2UJPSBvcmlvbl94b3IwX3NoYXJlZF9yZXNvdXJjZXMsCi0J LmRldiAgICAgICAgICAgID0gewotCQkuZG1hX21hc2sgICAgICAgICAgICAgICA9ICZvcmlvbl94 b3JfZG1hbWFzaywKLQkJLmNvaGVyZW50X2RtYV9tYXNrICAgICAgPSBETUFfQklUX01BU0soMzIp LAotCQkucGxhdGZvcm1fZGF0YSAgICAgICAgICA9ICZvcmlvbl94b3IwX3BkYXRhLAotCX0sCi19 OwotCi12b2lkIF9faW5pdCBvcmlvbl94b3IwX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlX2xv dywKLQkJCSAgICB1bnNpZ25lZCBsb25nIG1hcGJhc2VfaGlnaCwKLQkJCSAgICB1bnNpZ25lZCBs b25nIGlycV8wLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxXzEpCi17Ci0Jb3Jpb25feG9yMF9z aGFyZWRfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gbWFwYmFzZV9sb3c7Ci0Jb3Jpb25feG9yMF9zaGFy ZWRfcmVzb3VyY2VzWzBdLmVuZCA9IG1hcGJhc2VfbG93ICsgMHhmZjsKLQlvcmlvbl94b3IwX3No YXJlZF9yZXNvdXJjZXNbMV0uc3RhcnQgPSBtYXBiYXNlX2hpZ2g7Ci0Jb3Jpb25feG9yMF9zaGFy ZWRfcmVzb3VyY2VzWzFdLmVuZCA9IG1hcGJhc2VfaGlnaCArIDB4ZmY7Ci0KLQlvcmlvbl94b3Iw X3NoYXJlZF9yZXNvdXJjZXNbMl0uc3RhcnQgPSBpcnFfMDsKLQlvcmlvbl94b3IwX3NoYXJlZF9y ZXNvdXJjZXNbMl0uZW5kID0gaXJxXzA7Ci0Jb3Jpb25feG9yMF9zaGFyZWRfcmVzb3VyY2VzWzNd LnN0YXJ0ID0gaXJxXzE7Ci0Jb3Jpb25feG9yMF9zaGFyZWRfcmVzb3VyY2VzWzNdLmVuZCA9IGly cV8xOwotCi0JZG1hX2NhcF9zZXQoRE1BX01FTUNQWSwgb3Jpb25feG9yMF9jaGFubmVsc19kYXRh WzBdLmNhcF9tYXNrKTsKLQlkbWFfY2FwX3NldChETUFfWE9SLCBvcmlvbl94b3IwX2NoYW5uZWxz X2RhdGFbMF0uY2FwX21hc2spOwotCi0JZG1hX2NhcF9zZXQoRE1BX01FTUNQWSwgb3Jpb25feG9y MF9jaGFubmVsc19kYXRhWzFdLmNhcF9tYXNrKTsKLQlkbWFfY2FwX3NldChETUFfWE9SLCBvcmlv bl94b3IwX2NoYW5uZWxzX2RhdGFbMV0uY2FwX21hc2spOwotCi0JcGxhdGZvcm1fZGV2aWNlX3Jl Z2lzdGVyKCZvcmlvbl94b3IwX3NoYXJlZCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICogWE9SMQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9y aW9uX3hvcjFfc2hhcmVkX3Jlc291cmNlc1tdID0gewotCXsKLQkJLm5hbWUJPSAieG9yIDEgbG93 IiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0JfSwgewotCQkubmFtZQk9ICJ4b3IgMSBo aWdoIiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0JfSwgewotCQkubmFtZSAgID0gImly cSBjaGFubmVsIDAiLAotCQkuZmxhZ3MgID0gSU9SRVNPVVJDRV9JUlEsCi0JfSwgewotCQkubmFt ZSAgID0gImlycSBjaGFubmVsIDEiLAotCQkuZmxhZ3MgID0gSU9SRVNPVVJDRV9JUlEsCi0JfSwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbXZfeG9yX2NoYW5uZWxfZGF0YSBvcmlvbl94b3IxX2NoYW5u ZWxzX2RhdGFbMl07Ci0KLXN0YXRpYyBzdHJ1Y3QgbXZfeG9yX3BsYXRmb3JtX2RhdGEgb3Jpb25f eG9yMV9wZGF0YSA9IHsKLQkuY2hhbm5lbHMgPSBvcmlvbl94b3IxX2NoYW5uZWxzX2RhdGEsCi19 OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl94b3IxX3NoYXJlZCA9IHsK LQkubmFtZQkJPSBNVl9YT1JfTkFNRSwKLQkuaWQJCT0gMSwKLQkubnVtX3Jlc291cmNlcwk9IEFS UkFZX1NJWkUob3Jpb25feG9yMV9zaGFyZWRfcmVzb3VyY2VzKSwKLQkucmVzb3VyY2UJPSBvcmlv bl94b3IxX3NoYXJlZF9yZXNvdXJjZXMsCi0JLmRldiAgICAgICAgICAgID0gewotCQkuZG1hX21h c2sgICAgICAgICAgICAgICA9ICZvcmlvbl94b3JfZG1hbWFzaywKLQkJLmNvaGVyZW50X2RtYV9t YXNrICAgICAgPSBETUFfQklUX01BU0soMzIpLAotCQkucGxhdGZvcm1fZGF0YSAgICAgICAgICA9 ICZvcmlvbl94b3IxX3BkYXRhLAotCX0sCi19OwotCi12b2lkIF9faW5pdCBvcmlvbl94b3IxX2lu aXQodW5zaWduZWQgbG9uZyBtYXBiYXNlX2xvdywKLQkJCSAgICB1bnNpZ25lZCBsb25nIG1hcGJh c2VfaGlnaCwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycV8wLAotCQkJICAgIHVuc2lnbmVkIGxv bmcgaXJxXzEpCi17Ci0Jb3Jpb25feG9yMV9zaGFyZWRfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gbWFw YmFzZV9sb3c7Ci0Jb3Jpb25feG9yMV9zaGFyZWRfcmVzb3VyY2VzWzBdLmVuZCA9IG1hcGJhc2Vf bG93ICsgMHhmZjsKLQlvcmlvbl94b3IxX3NoYXJlZF9yZXNvdXJjZXNbMV0uc3RhcnQgPSBtYXBi YXNlX2hpZ2g7Ci0Jb3Jpb25feG9yMV9zaGFyZWRfcmVzb3VyY2VzWzFdLmVuZCA9IG1hcGJhc2Vf aGlnaCArIDB4ZmY7Ci0KLQlvcmlvbl94b3IxX3NoYXJlZF9yZXNvdXJjZXNbMl0uc3RhcnQgPSBp cnFfMDsKLQlvcmlvbl94b3IxX3NoYXJlZF9yZXNvdXJjZXNbMl0uZW5kID0gaXJxXzA7Ci0Jb3Jp b25feG9yMV9zaGFyZWRfcmVzb3VyY2VzWzNdLnN0YXJ0ID0gaXJxXzE7Ci0Jb3Jpb25feG9yMV9z aGFyZWRfcmVzb3VyY2VzWzNdLmVuZCA9IGlycV8xOwotCi0JZG1hX2NhcF9zZXQoRE1BX01FTUNQ WSwgb3Jpb25feG9yMV9jaGFubmVsc19kYXRhWzBdLmNhcF9tYXNrKTsKLQlkbWFfY2FwX3NldChE TUFfWE9SLCBvcmlvbl94b3IxX2NoYW5uZWxzX2RhdGFbMF0uY2FwX21hc2spOwotCi0JZG1hX2Nh cF9zZXQoRE1BX01FTUNQWSwgb3Jpb25feG9yMV9jaGFubmVsc19kYXRhWzFdLmNhcF9tYXNrKTsK LQlkbWFfY2FwX3NldChETUFfWE9SLCBvcmlvbl94b3IxX2NoYW5uZWxzX2RhdGFbMV0uY2FwX21h c2spOwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl94b3IxX3NoYXJlZCk7Ci19 Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgotICogRUhDSQotICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci1zdGF0aWMgc3RydWN0IG9yaW9uX2VoY2lfZGF0YSBvcmlvbl9laGNpX2RhdGE7Ci1zdGF0aWMg dTY0IGVoY2lfZG1hbWFzayA9IERNQV9CSVRfTUFTSygzMik7Ci0KLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0gKiBFSENJMAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IHJl c291cmNlIG9yaW9uX2VoY2lfcmVzb3VyY2VzWzJdOwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RldmljZSBvcmlvbl9laGNpID0gewotCS5uYW1lCQk9ICJvcmlvbi1laGNpIiwKLQkuaWQJCT0g MCwKLQkuZGV2CQk9IHsKLQkJLmRtYV9tYXNrCQk9ICZlaGNpX2RtYW1hc2ssCi0JCS5jb2hlcmVu dF9kbWFfbWFzawk9IERNQV9CSVRfTUFTSygzMiksCi0JCS5wbGF0Zm9ybV9kYXRhCQk9ICZvcmlv bl9laGNpX2RhdGEsCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX2VoY2lfaW5pdCh1bnNp Z25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnEsCi0JCQkgICAgZW51 bSBvcmlvbl9laGNpX3BoeV92ZXIgcGh5X3ZlcnNpb24pCi17Ci0Jb3Jpb25fZWhjaV9kYXRhLnBo eV92ZXJzaW9uID0gcGh5X3ZlcnNpb247Ci0JZmlsbF9yZXNvdXJjZXNfaXJxKCZvcmlvbl9laGNp LCBvcmlvbl9laGNpX3Jlc291cmNlcywgbWFwYmFzZSwgU1pfNEsgLSAxLAotCQkgICAgICAgaXJx KTsKLQotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmb3Jpb25fZWhjaSk7Ci19Ci0KLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgotICogRUhDSTEKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGlj IHN0cnVjdCByZXNvdXJjZSBvcmlvbl9laGNpXzFfcmVzb3VyY2VzWzJdOwotCi1zdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9laGNpXzEgPSB7Ci0JLm5hbWUJCT0gIm9yaW9uLWVo Y2kiLAotCS5pZAkJPSAxLAotCS5kZXYJCT0gewotCQkuZG1hX21hc2sJCT0gJmVoY2lfZG1hbWFz aywKLQkJLmNvaGVyZW50X2RtYV9tYXNrCT0gRE1BX0JJVF9NQVNLKDMyKSwKLQkJLnBsYXRmb3Jt X2RhdGEJCT0gJm9yaW9uX2VoY2lfZGF0YSwKLQl9LAotfTsKLQotdm9pZCBfX2luaXQgb3Jpb25f ZWhjaV8xX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgICAgdW5zaWduZWQgbG9u ZyBpcnEpCi17Ci0JZmlsbF9yZXNvdXJjZXNfaXJxKCZvcmlvbl9laGNpXzEsIG9yaW9uX2VoY2lf MV9yZXNvdXJjZXMsCi0JCSAgICAgICBtYXBiYXNlLCBTWl80SyAtIDEsIGlycSk7Ci0KLQlwbGF0 Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9yaW9uX2VoY2lfMSk7Ci19Ci0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotICogRUhDSTIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBy ZXNvdXJjZSBvcmlvbl9laGNpXzJfcmVzb3VyY2VzWzJdOwotCi1zdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RldmljZSBvcmlvbl9laGNpXzIgPSB7Ci0JLm5hbWUJCT0gIm9yaW9uLWVoY2kiLAotCS5p ZAkJPSAyLAotCS5kZXYJCT0gewotCQkuZG1hX21hc2sJCT0gJmVoY2lfZG1hbWFzaywKLQkJLmNv aGVyZW50X2RtYV9tYXNrCT0gRE1BX0JJVF9NQVNLKDMyKSwKLQkJLnBsYXRmb3JtX2RhdGEJCT0g Jm9yaW9uX2VoY2lfZGF0YSwKLQl9LAotfTsKLQotdm9pZCBfX2luaXQgb3Jpb25fZWhjaV8yX2lu aXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBpcnEpCi17 Ci0JZmlsbF9yZXNvdXJjZXNfaXJxKCZvcmlvbl9laGNpXzIsIG9yaW9uX2VoY2lfMl9yZXNvdXJj ZXMsCi0JCSAgICAgICBtYXBiYXNlLCBTWl80SyAtIDEsIGlycSk7Ci0KLQlwbGF0Zm9ybV9kZXZp Y2VfcmVnaXN0ZXIoJm9yaW9uX2VoY2lfMik7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICogU0FUQQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9y aW9uX3NhdGFfcmVzb3VyY2VzWzJdID0gewotCXsKLQkJLm5hbWUJPSAic2F0YSBiYXNlIiwKLQl9 LCB7Ci0JCS5uYW1lCT0gInNhdGEgaXJxIiwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2Ugb3Jpb25fc2F0YSA9IHsKLQkubmFtZQkJPSAic2F0YV9tdiIsCi0JLmlkCQk9 IDAsCi0JLmRldgkJPSB7Ci0JCS5jb2hlcmVudF9kbWFfbWFzawk9IERNQV9CSVRfTUFTSygzMiks Ci0JfSwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX3NhdGFfaW5pdChzdHJ1Y3QgbXZfc2F0YV9w bGF0Zm9ybV9kYXRhICpzYXRhX2RhdGEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBtYXBiYXNlLAot CQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxKQotewotCW9yaW9uX3NhdGEuZGV2LnBsYXRmb3JtX2Rh dGEgPSBzYXRhX2RhdGE7Ci0JZmlsbF9yZXNvdXJjZXNfaXJxKCZvcmlvbl9zYXRhLCBvcmlvbl9z YXRhX3Jlc291cmNlcywKLQkJICAgICAgIG1hcGJhc2UsIDB4NTAwMCAtIDEsIGlycSk7Ci0KLQlw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9yaW9uX3NhdGEpOwotfQotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAqIENyeXB0b2dyYXBoaWMgRW5naW5lcyBhbmQgU2VjdXJpdHkgQWNjZWxlcmF0 b3IgKENFU0EpCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ug b3Jpb25fY3J5cHRvX3Jlc291cmNlc1tdID0gewotCXsKLQkJLm5hbWUgICA9ICJyZWdzIiwKLQl9 LCB7Ci0JCS5uYW1lICAgPSAiY3J5cHRvIGludGVycnVwdCIsCi0JfSwgewotCQkubmFtZSAgID0g InNyYW0iLAotCQkuZmxhZ3MgID0gSU9SRVNPVVJDRV9NRU0sCi0JfSwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX2NyeXB0byA9IHsKLQkubmFtZSAgICAgICAgICAg PSAibXZfY3J5cHRvIiwKLQkuaWQgICAgICAgICAgICAgPSAtMSwKLX07Ci0KLXZvaWQgX19pbml0 IG9yaW9uX2NyeXB0b19pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICAgIHVuc2ln bmVkIGxvbmcgc3JhbWJhc2UsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nIHNyYW1fc2l6ZSwKLQkJ CSAgICAgIHVuc2lnbmVkIGxvbmcgaXJxKQotewotCWZpbGxfcmVzb3VyY2VzX2lycSgmb3Jpb25f Y3J5cHRvLCBvcmlvbl9jcnlwdG9fcmVzb3VyY2VzLAotCQkgICAgICAgbWFwYmFzZSwgMHhmZmZm LCBpcnEpOwotCW9yaW9uX2NyeXB0by5udW1fcmVzb3VyY2VzID0gMzsKLQlvcmlvbl9jcnlwdG9f cmVzb3VyY2VzWzJdLnN0YXJ0ID0gc3JhbWJhc2U7Ci0Jb3Jpb25fY3J5cHRvX3Jlc291cmNlc1sy XS5lbmQgPSBzcmFtYmFzZSArIHNyYW1fc2l6ZSAtIDE7Ci0KLQlwbGF0Zm9ybV9kZXZpY2VfcmVn aXN0ZXIoJm9yaW9uX2NyeXB0byk7Ci19CmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9yaW9u L2luY2x1ZGUvcGxhdC9hZGRyLW1hcC5oIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3Bs YXQvYWRkci1tYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc2YzA2NTY5ZmU1 Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvYWRk ci1tYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBhcmNoL2FybS9w bGF0LW9yaW9uL2luY2x1ZGUvcGxhdC9hZGRyLW1hcC5oCi0gKgotICogTWFydmVsbCBPcmlvbiBT b0MgYWRkcmVzcyBtYXAgaGFuZGxpbmcuCi0gKgotICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNp b24gMi4gIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55Ci0gKiB3 YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKi8KLQot I2lmbmRlZiBfX1BMQVRfQUREUl9NQVBfSAotI2RlZmluZSBfX1BMQVRfQUREUl9NQVBfSAotCi1l eHRlcm4gc3RydWN0IG1idXNfZHJhbV90YXJnZXRfaW5mbyBvcmlvbl9tYnVzX2RyYW1faW5mbzsK LQotc3RydWN0IG9yaW9uX2FkZHJfbWFwX2NmZyB7Ci0JY29uc3QgaW50IG51bV93aW5zOwkvKiBU b3RhbCBudW1iZXIgb2Ygd2luZG93cyAqLwotCWNvbnN0IGludCByZW1hcHBhYmxlX3dpbnM7Ci0J dm9pZCBfX2lvbWVtICpicmlkZ2VfdmlydF9iYXNlOwotCWludCBod19pb19jb2hlcmVuY3k7Ci0K LQkvKiBJZiBOVUxMLCB0aGUgZGVmYXVsdCBjcHVfd2luX2Nhbl9yZW1hcCB3aWxsIGJlIHVzZWQs IHVzaW5nCi0JICAgdGhlIHZhbHVlIGluIHJlbWFwcGFibGVfd2lucyAqLwotCWludCAoKmNwdV93 aW5fY2FuX3JlbWFwKSAoY29uc3Qgc3RydWN0IG9yaW9uX2FkZHJfbWFwX2NmZyAqY2ZnLAotCQkJ CSAgY29uc3QgaW50IHdpbik7Ci0JLyogSWYgTlVMTCwgdGhlIGRlZmF1bHQgd2luX2NmZ19iYXNl IHdpbGwgYmUgdXNlZCwgdXNpbmcgdGhlCi0JICAgdmFsdWUgaW4gYnJpZGdlX3ZpcnRfYmFzZSAq LwotCXZvaWQgX19pb21lbSAqKCp3aW5fY2ZnX2Jhc2UpIChjb25zdCBzdHJ1Y3Qgb3Jpb25fYWRk cl9tYXBfY2ZnICpjZmcsCi0JCQkJIGNvbnN0IGludCB3aW4pOwotfTsKLQotLyoKLSAqIEluZm9y bWF0aW9uIG5lZWRlZCB0byBzZXR1cCBvbmUgYWRkcmVzcyBtYXBwaW5nLgotICovCi1zdHJ1Y3Qg b3Jpb25fYWRkcl9tYXBfaW5mbyB7Ci0JY29uc3QgaW50IHdpbjsKLQljb25zdCB1MzIgYmFzZTsK LQljb25zdCB1MzIgc2l6ZTsKLQljb25zdCB1OCB0YXJnZXQ7Ci0JY29uc3QgdTggYXR0cjsKLQlj b25zdCBpbnQgcmVtYXA7Ci19OwotCi12b2lkIF9faW5pdCBvcmlvbl9jb25maWdfd2lucyhzdHJ1 Y3Qgb3Jpb25fYWRkcl9tYXBfY2ZnICpjZmcsCi0JCQkgICAgICBjb25zdCBzdHJ1Y3Qgb3Jpb25f YWRkcl9tYXBfaW5mbyAqaW5mbyk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX3NldHVwX2NwdV93aW4o Y29uc3Qgc3RydWN0IG9yaW9uX2FkZHJfbWFwX2NmZyAqY2ZnLAotCQkJCWNvbnN0IGludCB3aW4s IGNvbnN0IHUzMiBiYXNlLAotCQkJCWNvbnN0IHUzMiBzaXplLCBjb25zdCB1OCB0YXJnZXQsCi0J CQkJY29uc3QgdTggYXR0ciwgY29uc3QgaW50IHJlbWFwKTsKLQotdm9pZCBfX2luaXQgb3Jpb25f c2V0dXBfY3B1X21idXNfdGFyZ2V0KGNvbnN0IHN0cnVjdCBvcmlvbl9hZGRyX21hcF9jZmcgKmNm ZywKLQkJCQkJY29uc3Qgdm9pZCBfX2lvbWVtICpkZHJfd2luZG93X2NwdV9iYXNlKTsKLSNlbmRp ZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvY29tbW9uLmgg Yi9hcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUvcGxhdC9jb21tb24uaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZDJhYWQ5NWQyMGNiLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9h cm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvY29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx MDQgKzAsMCBAQAotLyoKLSAqIGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L2NvbW1v bi5oCi0gKgotICogTWFydmVsbCBPcmlvbiBTb0MgY29tbW9uIHNldHVwIGNvZGUgdXNlZCBieSBk aWZmZXJlbnQgbWFjaC0vY29tbW9uLmMKLSAqCi0gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgdmVyc2lv biAyLiAgVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKLSAqIHdh cnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqLwotCi0j aWZuZGVmIF9fUExBVF9DT01NT05fSAotI2luY2x1ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+Ci0j aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS91c2ItZWhjaS1vcmlvbi5oPgotCi1zdHJ1Y3Qg bXZfc2F0YV9wbGF0Zm9ybV9kYXRhOwotCi12b2lkIF9faW5pdCBvcmlvbl91YXJ0MF9pbml0KHZv aWQgX19pb21lbSAqbWVtYmFzZSwKLQkJCSAgICAgcmVzb3VyY2Vfc2l6ZV90IG1hcGJhc2UsCi0J CQkgICAgIHVuc2lnbmVkIGludCBpcnEsCi0JCQkgICAgIHN0cnVjdCBjbGsgKmNsayk7Ci0KLXZv aWQgX19pbml0IG9yaW9uX3VhcnQxX2luaXQodm9pZCBfX2lvbWVtICptZW1iYXNlLAotCQkJICAg ICByZXNvdXJjZV9zaXplX3QgbWFwYmFzZSwKLQkJCSAgICAgdW5zaWduZWQgaW50IGlycSwKLQkJ CSAgICAgc3RydWN0IGNsayAqY2xrKTsKLQotdm9pZCBfX2luaXQgb3Jpb25fdWFydDJfaW5pdCh2 b2lkIF9faW9tZW0gKm1lbWJhc2UsCi0JCQkgICAgIHJlc291cmNlX3NpemVfdCBtYXBiYXNlLAot CQkJICAgICB1bnNpZ25lZCBpbnQgaXJxLAotCQkJICAgICBzdHJ1Y3QgY2xrICpjbGspOwotCi12 b2lkIF9faW5pdCBvcmlvbl91YXJ0M19pbml0KHZvaWQgX19pb21lbSAqbWVtYmFzZSwKLQkJCSAg ICAgcmVzb3VyY2Vfc2l6ZV90IG1hcGJhc2UsCi0JCQkgICAgIHVuc2lnbmVkIGludCBpcnEsCi0J CQkgICAgIHN0cnVjdCBjbGsgKmNsayk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX3J0Y19pbml0KHVu c2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgIHVuc2lnbmVkIGxvbmcgaXJxKTsKLQotdm9pZCBf X2luaXQgb3Jpb25fZ2UwMF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpl dGhfZGF0YSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgdW5zaWduZWQg bG9uZyBpcnEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnFfZXJyLAotCQkJICAgIHVuc2lnbmVk IGludCB0eF9jc3VtX2xpbWl0KTsKLQotdm9pZCBfX2luaXQgb3Jpb25fZ2UwMV9pbml0KHN0cnVj dCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpldGhfZGF0YSwKLQkJCSAgICB1bnNpZ25lZCBs b25nIG1hcGJhc2UsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnEsCi0JCQkgICAgdW5zaWduZWQg aW50IHR4X2NzdW1fbGltaXQpOwotCi12b2lkIF9faW5pdCBvcmlvbl9nZTEwX2luaXQoc3RydWN0 IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRhLAotCQkJICAgIHVuc2lnbmVkIGxv bmcgbWFwYmFzZSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycSk7Ci0KLXZvaWQgX19pbml0IG9y aW9uX2dlMTFfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEs Ci0JCQkgICAgdW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJx KTsKLQotdm9pZCBfX2luaXQgb3Jpb25faTJjX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAot CQkJICAgdW5zaWduZWQgbG9uZyBpcnEsCi0JCQkgICB1bnNpZ25lZCBsb25nIGZyZXFfbSk7Ci0K LXZvaWQgX19pbml0IG9yaW9uX2kyY18xX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJ ICAgICB1bnNpZ25lZCBsb25nIGlycSwKLQkJCSAgICAgdW5zaWduZWQgbG9uZyBmcmVxX20pOwot Ci12b2lkIF9faW5pdCBvcmlvbl9zcGlfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2UpOwotCi12 b2lkIF9faW5pdCBvcmlvbl9zcGlfMV9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSk7Ci0KLXZv aWQgX19pbml0IG9yaW9uX3hvcjBfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2VfbG93LAotCQkJ ICAgIHVuc2lnbmVkIGxvbmcgbWFwYmFzZV9oaWdoLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJx XzAsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnFfMSk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX3hv cjFfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2VfbG93LAotCQkJICAgIHVuc2lnbmVkIGxvbmcg bWFwYmFzZV9oaWdoLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxXzAsCi0JCQkgICAgdW5zaWdu ZWQgbG9uZyBpcnFfMSk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX2VoY2lfaW5pdCh1bnNpZ25lZCBs b25nIG1hcGJhc2UsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnEsCi0JCQkgICAgZW51bSBvcmlv bl9laGNpX3BoeV92ZXIgcGh5X3ZlcnNpb24pOwotCi12b2lkIF9faW5pdCBvcmlvbl9laGNpXzFf aW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nIGlycSk7 Ci0KLXZvaWQgX19pbml0IG9yaW9uX2VoY2lfMl9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwK LQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaXJxKTsKLQotdm9pZCBfX2luaXQgb3Jpb25fc2F0YV9p bml0KHN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGEgKnNhdGFfZGF0YSwKLQkJCSAgICB1bnNp Z25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnEpOwotCi12b2lkIF9f aW5pdCBvcmlvbl9jcnlwdG9faW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgICB1 bnNpZ25lZCBsb25nIHNyYW1iYXNlLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBzcmFtX3NpemUs Ci0JCQkgICAgICB1bnNpZ25lZCBsb25nIGlycSk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX2Nsa2Rl dl9hZGQoY29uc3QgY2hhciAqY29uX2lkLCBjb25zdCBjaGFyICpkZXZfaWQsCi0JCQkgICAgIHN0 cnVjdCBjbGsgKmNsayk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX2Nsa2Rldl9pbml0KHN0cnVjdCBj bGsgKnRjbGspOwotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1 ZGUvcGxhdC90aW1lLmggYi9hcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUvcGxhdC90aW1lLmgK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NTI3ZTQxN2M2Mi4uMDAwMDAwMDAwMDAw Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L3RpbWUuaAorKysgL2Rldi9u dWxsCkBAIC0xLDIwICswLDAgQEAKLS8qCi0gKiBhcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUv cGxhdC90aW1lLmgKLSAqCi0gKiBNYXJ2ZWxsIE9yaW9uIFNvQyB0aW1lIGhhbmRsaW5nLgotICoK LSAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYwotICogTGljZW5zZSB2ZXJzaW9uIDIuICBUaGlzIHByb2dyYW0gaXMgbGljZW5z ZWQgImFzIGlzIiB3aXRob3V0IGFueQotICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIg ZXhwcmVzcyBvciBpbXBsaWVkLgotICovCi0KLSNpZm5kZWYgX19QTEFUX1RJTUVfSAotI2RlZmlu ZSBfX1BMQVRfVElNRV9ICi0KLXZvaWQgb3Jpb25fdGltZV9zZXRfYmFzZSh2b2lkIF9faW9tZW0g KnRpbWVyX2Jhc2UpOwotCi12b2lkIG9yaW9uX3RpbWVfaW5pdCh2b2lkIF9faW9tZW0gKmJyaWRn ZV9iYXNlLCB1MzIgYnJpZGdlX3RpbWVyMV9jbHJfbWFzaywKLQkJICAgICB1bnNpZ25lZCBpbnQg aXJxLCB1bnNpZ25lZCBpbnQgdGNsayk7Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9wbGF0LW9yaW9uL3BjaWUuYyBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vcGNpZS5jCmluZGV4IDhi OGMwNmQyZTljNC4uZTgxN2YyMDQwOWM0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9yaW9u L3BjaWUuYworKysgYi9hcmNoL2FybS9wbGF0LW9yaW9uL3BjaWUuYwpAQCAtMTMsNyArMTMsNiBA QAogI2luY2x1ZGUgPGxpbnV4L21idXMuaD4KICNpbmNsdWRlIDxhc20vbWFjaC9wY2kuaD4KICNp bmNsdWRlIDxwbGF0L3BjaWUuaD4KLSNpbmNsdWRlIDxwbGF0L2FkZHItbWFwLmg+CiAjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4KIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb3Jpb24v dGltZS5jIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi90aW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDUwOWQ0ODI0ZGMxYy4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL3BsYXQt b3Jpb24vdGltZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLS8qCi0gKiBhcmNo L2FybS9wbGF0LW9yaW9uL3RpbWUuYwotICoKLSAqIE1hcnZlbGwgT3Jpb24gU29DIHRpbWVyIGhh bmRsaW5nLgotICoKLSAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSB2ZXJzaW9uIDIuICBUaGlzIHByb2dy YW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQotICogd2FycmFudHkgb2YgYW55IGtp bmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICoKLSAqIFRpbWVyIDAgaXMgdXNlZCBh cyBmcmVlLXJ1bm5pbmcgY2xvY2tzb3VyY2UsIHdoaWxlIHRpbWVyIDEgaXMKLSAqIHVzZWQgYXMg Y2xvY2tfZXZlbnRfZGV2aWNlLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNp bmNsdWRlIDxsaW51eC90aW1lci5oPgotI2luY2x1ZGUgPGxpbnV4L2Nsb2NrY2hpcHMuaD4KLSNp bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KLSNpbmNsdWRlIDxsaW51eC9pcnEuaD4KLSNpbmNs dWRlIDxsaW51eC9zY2hlZF9jbG9jay5oPgotI2luY2x1ZGUgPHBsYXQvdGltZS5oPgotI2luY2x1 ZGUgPGFzbS9kZWxheS5oPgotCi0vKgotICogTUJ1cyBicmlkZ2UgYmxvY2sgcmVnaXN0ZXJzLgot ICovCi0jZGVmaW5lIEJSSURHRV9DQVVTRV9PRkYJMHgwMTEwCi0jZGVmaW5lIEJSSURHRV9NQVNL X09GRgkJMHgwMTE0Ci0jZGVmaW5lICBCUklER0VfSU5UX1RJTUVSMAkgMHgwMDAyCi0jZGVmaW5l ICBCUklER0VfSU5UX1RJTUVSMQkgMHgwMDA0Ci0KLQotLyoKLSAqIFRpbWVyIGJsb2NrIHJlZ2lz dGVycy4KLSAqLwotI2RlZmluZSBUSU1FUl9DVFJMX09GRgkJMHgwMDAwCi0jZGVmaW5lICBUSU1F UjBfRU4JCSAweDAwMDEKLSNkZWZpbmUgIFRJTUVSMF9SRUxPQURfRU4JIDB4MDAwMgotI2RlZmlu ZSAgVElNRVIxX0VOCQkgMHgwMDA0Ci0jZGVmaW5lICBUSU1FUjFfUkVMT0FEX0VOCSAweDAwMDgK LSNkZWZpbmUgVElNRVIwX1JFTE9BRF9PRkYJMHgwMDEwCi0jZGVmaW5lIFRJTUVSMF9WQUxfT0ZG CQkweDAwMTQKLSNkZWZpbmUgVElNRVIxX1JFTE9BRF9PRkYJMHgwMDE4Ci0jZGVmaW5lIFRJTUVS MV9WQUxfT0ZGCQkweDAwMWMKLQotCi0vKgotICogU29DLXNwZWNpZmljIGRhdGEuCi0gKi8KLXN0 YXRpYyB2b2lkIF9faW9tZW0gKmJyaWRnZV9iYXNlOwotc3RhdGljIHUzMiBicmlkZ2VfdGltZXIx X2Nscl9tYXNrOwotc3RhdGljIHZvaWQgX19pb21lbSAqdGltZXJfYmFzZTsKLQotCi0vKgotICog TnVtYmVyIG9mIHRpbWVyIHRpY2tzIHBlciBqaWZmeS4KLSAqLwotc3RhdGljIHUzMiB0aWNrc19w ZXJfamlmZnk7Ci0KLQotLyoKLSAqIE9yaW9uJ3Mgc2NoZWRfY2xvY2sgaW1wbGVtZW50YXRpb24u IEl0IGhhcyBhIHJlc29sdXRpb24gb2YKLSAqIGF0IGxlYXN0IDcuNW5zICgxMzNNSHogVENMSyku Ci0gKi8KLQotc3RhdGljIHU2NCBub3RyYWNlIG9yaW9uX3JlYWRfc2NoZWRfY2xvY2sodm9pZCkK LXsKLQlyZXR1cm4gfnJlYWRsKHRpbWVyX2Jhc2UgKyBUSU1FUjBfVkFMX09GRik7Ci19Ci0KLS8q Ci0gKiBDbG9ja2V2ZW50IGhhbmRsaW5nLgotICovCi1zdGF0aWMgaW50Ci1vcmlvbl9jbGtldnRf bmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGRlbHRhLCBzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNl ICpkZXYpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1MzIgdTsKLQotCWlmIChkZWx0YSA9 PSAwKQotCQlyZXR1cm4gLUVUSU1FOwotCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCi0JLyoK LQkgKiBDbGVhciBhbmQgZW5hYmxlIGNsb2NrZXZlbnQgdGltZXIgaW50ZXJydXB0LgotCSAqLwot CXdyaXRlbChicmlkZ2VfdGltZXIxX2Nscl9tYXNrLCBicmlkZ2VfYmFzZSArIEJSSURHRV9DQVVT RV9PRkYpOwotCi0JdSA9IHJlYWRsKGJyaWRnZV9iYXNlICsgQlJJREdFX01BU0tfT0ZGKTsKLQl1 IHw9IEJSSURHRV9JTlRfVElNRVIxOwotCXdyaXRlbCh1LCBicmlkZ2VfYmFzZSArIEJSSURHRV9N QVNLX09GRik7Ci0KLQkvKgotCSAqIFNldHVwIG5ldyBjbG9ja2V2ZW50IHRpbWVyIHZhbHVlLgot CSAqLwotCXdyaXRlbChkZWx0YSwgdGltZXJfYmFzZSArIFRJTUVSMV9WQUxfT0ZGKTsKLQotCS8q Ci0JICogRW5hYmxlIHRoZSB0aW1lci4KLQkgKi8KLQl1ID0gcmVhZGwodGltZXJfYmFzZSArIFRJ TUVSX0NUUkxfT0ZGKTsKLQl1ID0gKHUgJiB+VElNRVIxX1JFTE9BRF9FTikgfCBUSU1FUjFfRU47 Ci0Jd3JpdGVsKHUsIHRpbWVyX2Jhc2UgKyBUSU1FUl9DVFJMX09GRik7Ci0KLQlsb2NhbF9pcnFf cmVzdG9yZShmbGFncyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBvcmlvbl9jbGtl dnRfc2h1dGRvd24oc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQotewotCXVuc2lnbmVk IGxvbmcgZmxhZ3M7Ci0JdTMyIHU7Ci0KLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0KLQkvKiBE aXNhYmxlIHRpbWVyICovCi0JdSA9IHJlYWRsKHRpbWVyX2Jhc2UgKyBUSU1FUl9DVFJMX09GRik7 Ci0Jd3JpdGVsKHUgJiB+VElNRVIxX0VOLCB0aW1lcl9iYXNlICsgVElNRVJfQ1RSTF9PRkYpOwot Ci0JLyogRGlzYWJsZSB0aW1lciBpbnRlcnJ1cHQgKi8KLQl1ID0gcmVhZGwoYnJpZGdlX2Jhc2Ug KyBCUklER0VfTUFTS19PRkYpOwotCXdyaXRlbCh1ICYgfkJSSURHRV9JTlRfVElNRVIxLCBicmlk Z2VfYmFzZSArIEJSSURHRV9NQVNLX09GRik7Ci0KLQkvKiBBQ0sgcGVuZGluZyB0aW1lciBpbnRl cnJ1cHQgKi8KLQl3cml0ZWwoYnJpZGdlX3RpbWVyMV9jbHJfbWFzaywgYnJpZGdlX2Jhc2UgKyBC UklER0VfQ0FVU0VfT0ZGKTsKLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKLQotCXJldHVy biAwOwotfQotCi1zdGF0aWMgaW50IG9yaW9uX2Nsa2V2dF9zZXRfcGVyaW9kaWMoc3RydWN0IGNs b2NrX2V2ZW50X2RldmljZSAqZXZ0KQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdTMyIHU7 Ci0KLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0KLQkvKiBTZXR1cCB0aW1lciB0byBmaXJlIGF0 IDEvSFogaW50ZXJ2YWxzICovCi0Jd3JpdGVsKHRpY2tzX3Blcl9qaWZmeSAtIDEsIHRpbWVyX2Jh c2UgKyBUSU1FUjFfUkVMT0FEX09GRik7Ci0Jd3JpdGVsKHRpY2tzX3Blcl9qaWZmeSAtIDEsIHRp bWVyX2Jhc2UgKyBUSU1FUjFfVkFMX09GRik7Ci0KLQkvKiBFbmFibGUgdGltZXIgaW50ZXJydXB0 ICovCi0JdSA9IHJlYWRsKGJyaWRnZV9iYXNlICsgQlJJREdFX01BU0tfT0ZGKTsKLQl3cml0ZWwo dSB8IEJSSURHRV9JTlRfVElNRVIxLCBicmlkZ2VfYmFzZSArIEJSSURHRV9NQVNLX09GRik7Ci0K LQkvKiBFbmFibGUgdGltZXIgKi8KLQl1ID0gcmVhZGwodGltZXJfYmFzZSArIFRJTUVSX0NUUkxf T0ZGKTsKLQl3cml0ZWwodSB8IFRJTUVSMV9FTiB8IFRJTUVSMV9SRUxPQURfRU4sIHRpbWVyX2Jh c2UgKyBUSU1FUl9DVFJMX09GRik7Ci0KLQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Ci0KLQly ZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2Ugb3Jpb25fY2xr ZXZ0ID0gewotCS5uYW1lCQkJPSAib3Jpb25fdGljayIsCi0JLmZlYXR1cmVzCQk9IENMT0NLX0VW VF9GRUFUX09ORVNIT1QgfAotCQkJCSAgQ0xPQ0tfRVZUX0ZFQVRfUEVSSU9ESUMsCi0JLnJhdGlu ZwkJCT0gMzAwLAotCS5zZXRfbmV4dF9ldmVudAkJPSBvcmlvbl9jbGtldnRfbmV4dF9ldmVudCwK LQkuc2V0X3N0YXRlX3NodXRkb3duCT0gb3Jpb25fY2xrZXZ0X3NodXRkb3duLAotCS5zZXRfc3Rh dGVfcGVyaW9kaWMJPSBvcmlvbl9jbGtldnRfc2V0X3BlcmlvZGljLAotCS5zZXRfc3RhdGVfb25l c2hvdAk9IG9yaW9uX2Nsa2V2dF9zaHV0ZG93biwKLQkudGlja19yZXN1bWUJCT0gb3Jpb25fY2xr ZXZ0X3NodXRkb3duLAotfTsKLQotc3RhdGljIGlycXJldHVybl90IG9yaW9uX3RpbWVyX2ludGVy cnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCi17Ci0JLyoKLQkgKiBBQ0sgdGltZXIgaW50ZXJy dXB0IGFuZCBjYWxsIGV2ZW50IGhhbmRsZXIuCi0JICovCi0Jd3JpdGVsKGJyaWRnZV90aW1lcjFf Y2xyX21hc2ssIGJyaWRnZV9iYXNlICsgQlJJREdFX0NBVVNFX09GRik7Ci0Jb3Jpb25fY2xrZXZ0 LmV2ZW50X2hhbmRsZXIoJm9yaW9uX2Nsa2V2dCk7Ci0KLQlyZXR1cm4gSVJRX0hBTkRMRUQ7Ci19 Ci0KLXZvaWQgX19pbml0Ci1vcmlvbl90aW1lX3NldF9iYXNlKHZvaWQgX19pb21lbSAqX3RpbWVy X2Jhc2UpCi17Ci0JdGltZXJfYmFzZSA9IF90aW1lcl9iYXNlOwotfQotCi1zdGF0aWMgdW5zaWdu ZWQgbG9uZyBvcmlvbl9kZWxheV90aW1lcl9yZWFkKHZvaWQpCi17Ci0JcmV0dXJuIH5yZWFkbCh0 aW1lcl9iYXNlICsgVElNRVIwX1ZBTF9PRkYpOwotfQotCi1zdGF0aWMgc3RydWN0IGRlbGF5X3Rp bWVyIG9yaW9uX2RlbGF5X3RpbWVyID0gewotCS5yZWFkX2N1cnJlbnRfdGltZXIgPSBvcmlvbl9k ZWxheV90aW1lcl9yZWFkLAotfTsKLQotdm9pZCBfX2luaXQKLW9yaW9uX3RpbWVfaW5pdCh2b2lk IF9faW9tZW0gKl9icmlkZ2VfYmFzZSwgdTMyIF9icmlkZ2VfdGltZXIxX2Nscl9tYXNrLAotCQl1 bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25lZCBpbnQgdGNsaykKLXsKLQl1MzIgdTsKLQotCS8qCi0J ICogU2V0IFNvQy1zcGVjaWZpYyBkYXRhLgotCSAqLwotCWJyaWRnZV9iYXNlID0gX2JyaWRnZV9i YXNlOwotCWJyaWRnZV90aW1lcjFfY2xyX21hc2sgPSBfYnJpZGdlX3RpbWVyMV9jbHJfbWFzazsK LQotCXRpY2tzX3Blcl9qaWZmeSA9ICh0Y2xrICsgSFovMikgLyBIWjsKLQotCW9yaW9uX2RlbGF5 X3RpbWVyLmZyZXEgPSB0Y2xrOwotCXJlZ2lzdGVyX2N1cnJlbnRfdGltZXJfZGVsYXkoJm9yaW9u X2RlbGF5X3RpbWVyKTsKLQotCS8qCi0JICogU2V0IHNjYWxlIGFuZCB0aW1lciBmb3Igc2NoZWRf Y2xvY2suCi0JICovCi0Jc2NoZWRfY2xvY2tfcmVnaXN0ZXIob3Jpb25fcmVhZF9zY2hlZF9jbG9j aywgMzIsIHRjbGspOwotCi0JLyoKLQkgKiBTZXR1cCBmcmVlLXJ1bm5pbmcgY2xvY2tzb3VyY2Ug dGltZXIgKGludGVycnVwdHMKLQkgKiBkaXNhYmxlZCkuCi0JICovCi0Jd3JpdGVsKDB4ZmZmZmZm ZmYsIHRpbWVyX2Jhc2UgKyBUSU1FUjBfVkFMX09GRik7Ci0Jd3JpdGVsKDB4ZmZmZmZmZmYsIHRp bWVyX2Jhc2UgKyBUSU1FUjBfUkVMT0FEX09GRik7Ci0JdSA9IHJlYWRsKGJyaWRnZV9iYXNlICsg QlJJREdFX01BU0tfT0ZGKTsKLQl3cml0ZWwodSAmIH5CUklER0VfSU5UX1RJTUVSMCwgYnJpZGdl X2Jhc2UgKyBCUklER0VfTUFTS19PRkYpOwotCXUgPSByZWFkbCh0aW1lcl9iYXNlICsgVElNRVJf Q1RSTF9PRkYpOwotCXdyaXRlbCh1IHwgVElNRVIwX0VOIHwgVElNRVIwX1JFTE9BRF9FTiwgdGlt ZXJfYmFzZSArIFRJTUVSX0NUUkxfT0ZGKTsKLQljbG9ja3NvdXJjZV9tbWlvX2luaXQodGltZXJf YmFzZSArIFRJTUVSMF9WQUxfT0ZGLCAib3Jpb25fY2xvY2tzb3VyY2UiLAotCQl0Y2xrLCAzMDAs IDMyLCBjbG9ja3NvdXJjZV9tbWlvX3JlYWRsX2Rvd24pOwotCi0JLyoKLQkgKiBTZXR1cCBjbG9j a2V2ZW50IHRpbWVyIChpbnRlcnJ1cHQtZHJpdmVuKS4KLQkgKi8KLQlpZiAocmVxdWVzdF9pcnEo aXJxLCBvcmlvbl90aW1lcl9pbnRlcnJ1cHQsIElSUUZfVElNRVIsICJvcmlvbl90aWNrIiwKLQkJ CU5VTEwpKQotCQlwcl9lcnIoIkZhaWxlZCB0byByZXF1ZXN0IGlycSAldSAob3Jpb25fdGljaylc biIsIGlycSk7Ci0Jb3Jpb25fY2xrZXZ0LmNwdW1hc2sgPSBjcHVtYXNrX29mKDApOwotCWNsb2Nr ZXZlbnRzX2NvbmZpZ19hbmRfcmVnaXN0ZXIoJm9yaW9uX2Nsa2V2dCwgdGNsaywgMSwgMHhmZmZm ZmZmZSk7Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9LY29uZmlnIGIvZHJpdmVycy9hdGEv S2NvbmZpZwppbmRleCAyOGNhODU2ZWNjNzUuLjQzNGNjZTNlZmQ5NiAxMDA2NDQKLS0tIGEvZHJp dmVycy9hdGEvS2NvbmZpZworKysgYi9kcml2ZXJzL2F0YS9LY29uZmlnCkBAIC00NzEsOCArNDcx LDcgQEAgY29uZmlnIFNBVEFfSElHSEJBTksKIAogY29uZmlnIFNBVEFfTVYKIAl0cmlzdGF0ZSAi TWFydmVsbCBTQVRBIHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBQQ0kgfHwgQVJDSF9ET1ZFIHx8IEFS Q0hfTVY3OFhYMCB8fCBcCi0JCSAgIEFSQ0hfTVZFQlUgfHwgQVJDSF9PUklPTjVYIHx8IENPTVBJ TEVfVEVTVAorCWRlcGVuZHMgb24gUENJIHx8IEFSQ0hfTVZFQlUgfHwgQVJDSF9PUklPTjVYIHx8 IENPTVBJTEVfVEVTVAogCXNlbGVjdCBHRU5FUklDX1BIWQogCXNlbGVjdCBTQVRBX0hPU1QKIAlo ZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L0tjb25maWcgYi9kcml2ZXJzL21tYy9o b3N0L0tjb25maWcKaW5kZXggNGYwNjBkM2U1NjM2Li5kMDY5MDM2MzUzMzUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZworKysgYi9kcml2ZXJzL21tYy9ob3N0L0tjb25maWcK QEAgLTMzMCw3ICszMzAsNyBAQCBjb25maWcgTU1DX1NESENJX0VTREhDX0lNWAogCiBjb25maWcg TU1DX1NESENJX0RPVkUKIAl0cmlzdGF0ZSAiU0RIQ0kgc3VwcG9ydCBvbiBNYXJ2ZWxsJ3MgRG92 ZSBTb0MiCi0JZGVwZW5kcyBvbiBBUkNIX0RPVkUgfHwgTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVT VAorCWRlcGVuZHMgb24gTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gTU1D X1NESENJX1BMVEZNCiAJc2VsZWN0IE1NQ19TREhDSV9JT19BQ0NFU1NPUlMKIAloZWxwCmRpZmYg LS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcgYi9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL0tjb25maWcKaW5kZXggZDI0NmJiZTM3OTQ4Li43ZTU1MGM0NzRiN2EgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZworKysgYi9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL0tjb25maWcKQEAgLTE5Nyw3ICsxOTcsNyBAQCBjb25maWcgUENJX0xPT05HU09OCiAK IGNvbmZpZyBQQ0lfTVZFQlUKIAl0cmlzdGF0ZSAiTWFydmVsbCBFQlUgUENJZSBjb250cm9sbGVy IgotCWRlcGVuZHMgb24gQVJDSF9NVkVCVSB8fCBBUkNIX0RPVkUgfHwgQ09NUElMRV9URVNUCisJ ZGVwZW5kcyBvbiBBUkNIX01WRUJVIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gTVZFQlVf TUJVUwogCWRlcGVuZHMgb24gQVJNCiAJZGVwZW5kcyBvbiBPRgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9waHkvbWFydmVsbC9LY29uZmlnIGIvZHJpdmVycy9waHkvbWFydmVsbC9LY29uZmlnCmluZGV4 IGJjY2Q3MmRjY2I3Ny4uYzI5ZDJkMjhhZTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9tYXJ2 ZWxsL0tjb25maWcKKysrIGIvZHJpdmVycy9waHkvbWFydmVsbC9LY29uZmlnCkBAIC03Nyw3ICs3 Nyw3IEBAIGNvbmZpZyBQSFlfTVZFQlVfQ1AxMTBfVVRNSQogCiBjb25maWcgUEhZX01WRUJVX1NB VEEKIAlkZWZfYm9vbCB5Ci0JZGVwZW5kcyBvbiBBUkNIX0RPVkUgfHwgTUFDSF9ET1ZFIHx8IE1B Q0hfS0lSS1dPT0QKKwlkZXBlbmRzIG9uIE1BQ0hfRE9WRSB8fCBNQUNIX0tJUktXT09ECiAJZGVw ZW5kcyBvbiBPRgogCXNlbGVjdCBHRU5FUklDX1BIWQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0 Yy9LY29uZmlnIGIvZHJpdmVycy9ydGMvS2NvbmZpZwppbmRleCA1NWZmZWUzZDc1Y2UuLjVjYjZj ZGZlNjAxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvS2NvbmZpZworKysgYi9kcml2ZXJzL3J0 Yy9LY29uZmlnCkBAIC0xNzAzLDcgKzE3MDMsNyBAQCBjb25maWcgUlRDX0RSVl9TVEFSRklSRQog CiBjb25maWcgUlRDX0RSVl9NVgogCXRyaXN0YXRlICJNYXJ2ZWxsIFNvQyBSVEMiCi0JZGVwZW5k cyBvbiBBUkNIX0RPVkUgfHwgQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKKwlkZXBlbmRzIG9u IEFSQ0hfTVZFQlUgfHwgQ09NUElMRV9URVNUCiAJaGVscAogCSAgSWYgeW91IHNheSB5ZXMgaGVy ZSB5b3Ugd2lsbCBnZXQgc3VwcG9ydCBmb3IgdGhlIGluLWNoaXAgUlRDCiAJICB0aGF0IGNhbiBi ZSBmb3VuZCBpbiBzb21lIG9mIE1hcnZlbGwncyBTb0MgZGV2aWNlcywgc3VjaCBhcwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zb2MvTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9NYWtlZmlsZQppbmRleCBj OWU2ODkwODBjZWIuLjY0MTFiOTZkNTg0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zb2MvTWFrZWZp bGUKKysrIGIvZHJpdmVycy9zb2MvTWFrZWZpbGUKQEAgLTksNyArOSw2IEBAIG9iai0kKENPTkZJ R19BUkNIX0FUOTEpCQkrPSBhdG1lbC8KIG9iai15CQkJCSs9IGJjbS8KIG9iai0kKENPTkZJR19B UkNIX0NBTkFBTikJKz0gY2FuYWFuLwogb2JqLSQoQ09ORklHX0VQOTNYWF9TT0MpICAgICAgICAr PSBjaXJydXMvCi1vYmotJChDT05GSUdfQVJDSF9ET1ZFKQkJKz0gZG92ZS8KIG9iai0kKENPTkZJ R19NQUNIX0RPVkUpCQkrPSBkb3ZlLwogb2JqLXkJCQkJKz0gZnNsLwogb2JqLXkJCQkJKz0gZnVq aXRzdS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnIGIvZHJpdmVycy90aGVy bWFsL0tjb25maWcKaW5kZXggODEwZWVjY2VkZmJhLi44Y2VmOWI2NTgxOTEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnCkBA IC0zOTEsNyArMzkxLDcgQEAgY29uZmlnIEtJUktXT09EX1RIRVJNQUwKIAogY29uZmlnIERPVkVf VEhFUk1BTAogCXRyaXN0YXRlICJUZW1wZXJhdHVyZSBzZW5zb3Igb24gTWFydmVsbCBEb3ZlIFNv Q3MiCi0JZGVwZW5kcyBvbiBBUkNIX0RPVkUgfHwgTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVTVAor CWRlcGVuZHMgb24gTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gSEFTX0lP TUVNCiAJZGVwZW5kcyBvbiBPRgogCWhlbHAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cv S2NvbmZpZyBiL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZwppbmRleCAwYWIwZGNjNmQyN2QuLmQ4 M2JmYjE4OTcwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCisrKyBiL2Ry aXZlcnMvd2F0Y2hkb2cvS2NvbmZpZwpAQCAtNjkwLDcgKzY5MCw3IEBAIGNvbmZpZyBLM19SVElf V0FUQ0hET0cKIAogY29uZmlnIE9SSU9OX1dBVENIRE9HCiAJdHJpc3RhdGUgIk9yaW9uIHdhdGNo ZG9nIgotCWRlcGVuZHMgb24gQVJDSF9PUklPTjVYIHx8IEFSQ0hfRE9WRSB8fCBNQUNIX0RPVkUg fHwgQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKKwlkZXBlbmRzIG9uIEFSQ0hfT1JJT041WCB8 fCBNQUNIX0RPVkUgfHwgQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKIAlkZXBlbmRzIG9uIEFS TQogCXNlbGVjdCBXQVRDSERPR19DT1JFCiAJaGVscApkaWZmIC0tZ2l0IGEvc291bmQvc29jL2tp cmt3b29kL0tjb25maWcgYi9zb3VuZC9zb2Mva2lya3dvb2QvS2NvbmZpZwppbmRleCA5MjQwNzJl NDAyYzguLmQ1OWM1YmIwYjM5MSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2tpcmt3b29kL0tjb25m aWcKKysrIGIvc291bmQvc29jL2tpcmt3b29kL0tjb25maWcKQEAgLTMsNyArMyw3IEBAIG1lbnUg Iktpcmt3b29kIgogCiBjb25maWcgU05EX0tJUktXT09EX1NPQwogCXRyaXN0YXRlICJTb0MgQXVk aW8gZm9yIHRoZSBNYXJ2ZWxsIEtpcmt3b29kIGFuZCBEb3ZlIGNoaXBzIgotCWRlcGVuZHMgb24g QVJDSF9ET1ZFIHx8IEFSQ0hfTVZFQlUgfHwgQ09NUElMRV9URVNUCisJZGVwZW5kcyBvbiBBUkNI X01WRUJVIHx8IENPTVBJTEVfVEVTVAogCWhlbHAKIAkgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQg dG8gYWRkIHN1cHBvcnQgZm9yIGNvZGVjcyBhdHRhY2hlZCB0bwogCSAgdGhlIEtpcmt3b29kIEky UyBpbnRlcmZhY2UuIFlvdSB3aWxsIGFsc28gbmVlZCB0byBzZWxlY3QgdGhlCi0tIAoyLjUzLjAK CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK