From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Tue, 13 Apr 2021 14:20:24 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lWI1o-0007We-HE for lore@lore.pengutronix.de; Tue, 13 Apr 2021 14:20:24 +0200 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lWI1k-0005hx-TJ for lore@pengutronix.de; Tue, 13 Apr 2021 14:20:24 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=UwAPv1wFPsP7UpH5XJV8UTr90I1oFnsDSi2MJsRFIJQ=; b=H3o+4Ik7FhHNm48lx3Ku9TVp/V mg822J+m3W8pBwjxNJEFd1XrUFfAPWt+TdbkNz+LkG0UbiOXJ5e0p0JL107gnyhHIhWb3vlLgJoqP +w2wC7RimErOO8YoHUNqxiKcUnrvVVCXty40oHvK5VcIGmnvmqLeMwSD+0EqnMsgZLyJfrlhQiMDr 9PlrlsGjdz6poZpWkAW7+3iCbU2HM7ocmdnGjp8WUB6HLjFdwLfYELQSC5n4MIeDyH/GBXqqdQ6x3 2UJnUBOOo/HL/f5FGMrQaETeyQyjoopdy+HAeQJxe7QjpDaJxaQiWyOjIzkPQd7DQb54Fa3P/JFPH gc7DUzlg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lWHzZ-009Ccv-Dq; Tue, 13 Apr 2021 12:18:07 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lWHzU-009Cc8-B8 for barebox@desiato.infradead.org; Tue, 13 Apr 2021 12:18:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:In-Reply-To:References; bh=TE+MdTnD6hW9nmpLRQyY6Rj7LITTHUqSybpWkv4WsX4=; b=EmHoSPu3oifaHosO/QgFaL+n2i fro7vTOFAUPYkob5BJ4LqztlajPp3iZF0FdKyyOnWLGMVPqDv/G9bkLe4oHDeI41l5cBTIPqWkdu0 DIY5ycI+7WNp8DCpz7o/4yIINRYXMVYNqJUL4TvfwD4NVu+QmcPOPLIPJMM4R5Yu44Pltl5JON6bM ie+vMdCG7QHgWThnDrv6BhInZlUvhrfd1x+CZHZFMmEYYfLEeOtGZiY/dTQz5WgItoUi0AC8SP289 qGJfotCp5zfGJ2igdo/a9uGmb1PVrsCP1lxBgrt5J/Tzg0VNHEpb4AqsVNg3IaQGx/J6uPD+mpfGl lDY0Cotw==; Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lWHzN-007103-H4 for barebox@lists.infradead.org; Tue, 13 Apr 2021 12:17:59 +0000 Received: from dude02.hi.pengutronix.de ([2001:67c:670:100:1d::28]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lWHzL-0005XY-EC; Tue, 13 Apr 2021 14:17:51 +0200 Received: from sha by dude02.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1lWHzK-0004Xk-T1; Tue, 13 Apr 2021 14:17:50 +0200 From: Sascha Hauer To: Barebox List Date: Tue, 13 Apr 2021 14:17:50 +0200 Message-Id: <20210413121750.16690-1-s.hauer@pengutronix.de> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210413_051754_139905_047282F0 X-CRM114-Status: GOOD ( 27.21 ) X-BeenThere: barebox@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sam Ravnborg , Juergen Borleis , Enrico Jorns , =?UTF-8?q?S=C3=B8ren=20Andersen?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" X-SA-Exim-Connect-IP: 2001:8b0:10b:1:d65d:64ff:fe57:4e05 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-3.5 required=4.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Subject: [PATCH] ARM: i.MX: Add support for Skov i.MX6 boards X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.ext.pengutronix.de) RnJvbTogSnVlcmdlbiBCb3JsZWlzIDxqYmVAcGVuZ3V0cm9uaXguZGU+CgpUaGUgU2tvdiBwbGF0 Zm9ybSBwb3RlbnRpYWxseSBjb25zaXN0cyBvZiBtYW55IHZhcmlhbnRzIG9mIENQVXMgKGkuTVg2 Uy9ETCBhbmQKaS5NWDZEL1EpLCBOQU5EIG1lbW9yaWVzIChzaXplIGRpZmZlcnMgZnJvbSAyNTYg TWlCIHRvIDggR2lCKSBhbmQgcG9wdWxhdGVkClNEUkFNICgyNTYgTWlCIHVwIHRvIDIgR2lCKS4g QWxsIHRoZXNlIHZhcmlhbnRzIHNoYXJlIG9uZSBQQ0IuCgpTb21lIGJvb3RzdHJhcCByZXNpc3Rv cnMgYXJlIHByb3ZpZGVkIHdoaWNoIGRlY29kZSB0aGUgdmFyaWFudCBhbmQgd2hpY2ggYWxsb3cK Zm9yIGl0J3MgZGV0ZWN0aW9uIGF0IHJ1bnRpbWUuIFRoaXMgaW5mb3JtYXRpb24gaXMgbmVlZGVk IHRvIGNob29zZSB0aGUgYm9vdHNwZWMKZW50cnkgd2l0aCB0aGUgbWF0Y2hpbmcgZGV2aWNldHJl ZSB0byBib290IHRoZSBzeXN0ZW0uIEJhc2VkIHVwb24gdGhpcyBtZWNoYW5pc20KdXNhZ2Ugb2Yg YSBzaW5nbGUgQmFyZWJveCBpbWFnZSBhbmQgTGludXggcm9vdCBmaWxlc3lzdGVtIGZvciBhbGwg a25vd24gYm9hcmQKdmFyaWFudHMgaXMgbWFkZSBwb3NzaWJsZS4KClNpZ25lZC1vZmYtYnk6IEp1 ZXJnZW4gQm9ybGVpcyA8amJlQHBlbmd1dHJvbml4LmRlPgpTaWduZWQtb2ZmLWJ5OiBFbnJpY28g Sm9ybnMgPGVqb0BwZW5ndXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogVWxyaWNoIMOWbG1hbm4g PHUub2VsbWFubkBwZW5ndXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogU8O4cmVuIEFuZGVyc2Vu IDxzYW5Ac2tvdi5kaz4KU2lnbmVkLW9mZi1ieTogU2FtIFJhdm5ib3JnIDxzcm5Ac2tvdi5kaz4K LS0tCiBhcmNoL2FybS9ib2FyZHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogYXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9NYWtlZmlsZSAgICAgICAgICAgIHwgICAzICsK IGFyY2gvYXJtL2JvYXJkcy9za292LWlteDYvYm9hcmQuYyAgICAgICAgICAgICB8IDUyOCArKysr KysrKysrKysrKwogYXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9lbnYvaW5pdC9hdXRvbW91bnQg IHwgIDE0ICsKIGFyY2gvYXJtL2JvYXJkcy9za292LWlteDYvZW52L252L2Jvb3QuZGVmYXVsdCB8 ICAgMSArCiAuLi4vZmxhc2gtaGVhZGVyLW14Ni1za292LWlteDYuaW14Y2ZnICAgICAgICAgfCAg IDQgKwogYXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9sb3dsZXZlbC5jICAgICAgICAgIHwgNjY0 ICsrKysrKysrKysrKysrKysrKwogYXJjaC9hcm0vZHRzL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGFyY2gvYXJtL2R0cy9pbXg2ZGwtc2tvdi1pbXg2LmR0cyAgICAg ICAgICAgICB8ICAyNCArCiBhcmNoL2FybS9kdHMvaW14NnEtc2tvdi1pbXg2LmR0cyAgICAgICAg ICAgICAgfCAgMjggKwogYXJjaC9hcm0vZHRzL2lteDZxZGwtc2tvdi1pbXg2LmR0c2kgICAgICAg ICAgIHwgNTQ2ICsrKysrKysrKysrKysrCiBhcmNoL2FybS9tYWNoLWlteC9LY29uZmlnICAgICAg ICAgICAgICAgICAgICAgfCAgIDYgKwogaW1hZ2VzL01ha2VmaWxlLmlteCAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICsKIDEzIGZpbGVzIGNoYW5nZWQsIDE4MjIgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2JvYXJkcy9za292LWlteDYvTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib2FyZHMvc2tvdi1pbXg2L2JvYXJkLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib2FyZHMvc2tvdi1pbXg2L2Vudi9pbml0L2F1dG9t b3VudAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2JvYXJkcy9za292LWlteDYvZW52L252 L2Jvb3QuZGVmYXVsdAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2JvYXJkcy9za292LWlt eDYvZmxhc2gtaGVhZGVyLW14Ni1za292LWlteDYuaW14Y2ZnCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9sb3dsZXZlbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vZHRzL2lteDZkbC1za292LWlteDYuZHRzCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJj aC9hcm0vZHRzL2lteDZxLXNrb3YtaW14Ni5kdHMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9kdHMvaW14NnFkbC1za292LWlteDYuZHRzaQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJk cy9NYWtlZmlsZSBiL2FyY2gvYXJtL2JvYXJkcy9NYWtlZmlsZQppbmRleCA5Y2NiNzVlMjdiLi4z ZWY0ZGU3YjYyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib2FyZHMvTWFrZWZpbGUKKysrIGIvYXJj aC9hcm0vYm9hcmRzL01ha2VmaWxlCkBAIC0xMTQsNiArMTE0LDcgQEAgb2JqLSQoQ09ORklHX01B Q0hfUlBJX0NPTU1PTikJCQkrPSByYXNwYmVycnktcGkvCiBvYmotJChDT05GSUdfTUFDSF9TQUJS RUxJVEUpCQkJKz0gZnJlZXNjYWxlLW14Ni1zYWJyZWxpdGUvCiBvYmotJChDT05GSUdfTUFDSF9T QUJSRVNEKQkJCSs9IGZyZWVzY2FsZS1teDYtc2FicmVzZC8KIG9iai0kKENPTkZJR19NQUNIX0FD X1NYQikJCQkrPSBhYy1zeGIvCitvYmotJChDT05GSUdfTUFDSF9TS09WX0lNWDYpCQkJKz0gc2tv di1pbXg2Lwogb2JqLSQoQ09ORklHX01BQ0hfRlJFRVNDQUxFX0lNWDZTWF9TQUJSRVNEQikJKz0g ZnJlZXNjYWxlLW14NnN4LXNhYnJlc2RiLwogb2JqLSQoQ09ORklHX01BQ0hfU0FNQTVEMjdfR0lB TlRCT0FSRCkJCSs9IHNhbWE1ZDI3LWdpYW50Ym9hcmQvCiBvYmotJChDT05GSUdfTUFDSF9TQU1B NUQyN19TT00xKQkJKz0gc2FtYTVkMjctc29tMS8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJk cy9za292LWlteDYvTWFrZWZpbGUgYi9hcmNoL2FybS9ib2FyZHMvc2tvdi1pbXg2L01ha2VmaWxl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE1ZTg1YmMxZTEKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybS9ib2FyZHMvc2tvdi1pbXg2L01ha2VmaWxlCkBAIC0wLDAg KzEsMyBAQAorb2JqLXkgKz0gYm9hcmQubworbHdsLXkgKz0gbG93bGV2ZWwubworb2JqLXBibC15 ICs9IHZlcnNpb24ubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9ib2Fy ZC5jIGIvYXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9ib2FyZC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE1ODE3MmIyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNo L2FybS9ib2FyZHMvc2tvdi1pbXg2L2JvYXJkLmMKQEAgLTAsMCArMSw1MjggQEAKKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKworI2RlZmluZSBwcl9mbXQoZm10KSAi c2tvdi1pbXg2OiAiIGZtdAorCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5pdC5o PgorI2luY2x1ZGUgPG1hY2gvYmJ1Lmg+CisjaW5jbHVkZSA8ZW52aXJvbm1lbnQuaD4KKyNpbmNs dWRlIDxib290c291cmNlLmg+CisjaW5jbHVkZSA8Z2xvYmFsdmFyLmg+CisjaW5jbHVkZSA8bmV0 Lmg+CisjaW5jbHVkZSA8b2ZfZ3Bpby5oPgorI2luY2x1ZGUgPGdwaW8uaD4KKworI2luY2x1ZGUg InZlcnNpb24uaCIKKworc3RhdGljIGludCBldGhfb2ZfZml4dXBfbm9kZShzdHJ1Y3QgZGV2aWNl X25vZGUgKnJvb3QsIGNvbnN0IGNoYXIgKm5vZGVfcGF0aCwKKwkJCSAgICAgY29uc3QgdTggKmV0 aGFkZHIpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpub2RlOworCWludCByZXQ7CisKKwlpZiAo IWlzX3ZhbGlkX2V0aGVyX2FkZHIoZXRoYWRkcikpIHsKKwkJdW5zaWduZWQgY2hhciBldGhhZGRy X3N0cltzaXplb2YoInh4Onh4Onh4Onh4Onh4Onh4IildOworCisJCWV0aGFkZHJfdG9fc3RyaW5n KGV0aGFkZHIsIGV0aGFkZHJfc3RyKTsKKwkJcHJfZXJyKCJUaGUgbWFjLWFkZHJlc3MgJXMgaXMg aW52YWxpZC5cbiIsIGV0aGFkZHJfc3RyKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbm9k ZSA9IG9mX2ZpbmRfbm9kZV9ieV9wYXRoX2Zyb20ocm9vdCwgbm9kZV9wYXRoKTsKKwlpZiAoIW5v ZGUpIHsKKwkJcHJfZXJyKCJEaWQgbm90IGZpbmQgbm9kZSAlcyB0byBmaXggdXAgd2l0aCBzdG9y ZWQgbWFjLWFkZHJlc3MuXG4iLAorCQkgICAgICAgbm9kZV9wYXRoKTsKKwkJcmV0dXJuIC1FTk9F TlQ7CisJfQorCisJcmV0ID0gb2Zfc2V0X3Byb3BlcnR5KG5vZGUsICJtYWMtYWRkcmVzcyIsIGV0 aGFkZHIsIEVUSF9BTEVOLCAxKTsKKwlpZiAocmV0KQorCQlwcl9lcnIoIlNldHRpbmcgbWFjLWFk ZHJlc3MgcHJvcGVydHkgb2YgJXMgZmFpbGVkIHdpdGg6ICVzLlxuIiwKKwkJICAgICAgIG5vZGUt PmZ1bGxfbmFtZSwgc3RyZXJyb3IoLXJldCkpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBldGhfb2ZfZml4dXBfbm9kZV9mcm9tX2V0aF9kZXZpY2Uoc3RydWN0IGRldmljZV9ub2Rl ICpyb290LAorCQkJCQkgICAgIGNvbnN0IGNoYXIgKm5vZGVfcGF0aCwKKwkJCQkJICAgICBjb25z dCBjaGFyICpldGhuYW1lKQoreworCXN0cnVjdCBldGhfZGV2aWNlICplZGV2OworCisJZWRldiA9 IGV0aF9nZXRfYnluYW1lKGV0aG5hbWUpOworCWlmICghZWRldikgeworCQlwcl9lcnIoIkRpZCBu b3QgZmluZCBldGggZGV2aWNlIFwiJXNcIiB0byBjb3B5IG1hYy1hZGRyZXNzIGZyb20uXG4iLCBl dGhuYW1lKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJcmV0dXJuIGV0aF9vZl9maXh1cF9u b2RlKHJvb3QsIG5vZGVfcGF0aCwgZWRldi0+ZXRoYWRkcik7Cit9CisKK3N0YXRpYyBpbnQgZ2V0 X21hY19hZGRyZXNzX2Zyb21fZW52X3ZhcmlhYmxlKGNvbnN0IGNoYXIgKmVudiwgdTggZXRoYWRk cltFVEhfQUxFTl0pCit7CisJY29uc3QgY2hhciAqZXRoYWRkcl9zdHI7CisJaW50IHJldDsKKwor CWV0aGFkZHJfc3RyID0gZ2V0ZW52KGVudik7CisJaWYgKCFldGhhZGRyX3N0cikgeworCQlwcl9l cnIoIlN0YXRlIHZhcmlhYmxlICVzIHN0b3JpbmcgdGhlIG1hYy1hZGRyZXNzIG5vdCBmb3VuZC5c biIsIGVudik7CisJCXJldHVybiAtRU5PRU5UOworCX0KKworCXJldCA9IHN0cmluZ190b19ldGhh ZGRyKGV0aGFkZHJfc3RyLCBldGhhZGRyKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIkNv dWxkIG5vdCBjb252ZXJ0IFwiJXNcIiBpbiBzdGF0ZSB2YXJpYWJsZSAlcyBpbnRvIG1hYy1hZGRy ZXNzLlxuIiwKKwkJICAgICAgIGV0aGFkZHJfc3RyLCBlbnYpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBnZXRfZGVmYXVsdF9tYWNfYWRkcmVz c19mcm9tX3N0YXRlX25vZGUoY29uc3QgY2hhciAqc3RhdGVfbm9kZV9wYXRoLAorCQkJCQkJICAg dTggZXRoYWRkcltFVEhfQUxFTl0pCit7CisJc3RydWN0IGRldmljZV9ub2RlICpub2RlOworCWlu dCByZXQ7CisKKwlub2RlID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoc3RhdGVfbm9kZV9wYXRoKTsK KwlpZiAoIW5vZGUpIHsKKwkJcHJfZXJyKCJOb2RlICVzIGRlZmluaW5nIHRoZSBzdGF0ZSB2YXJp YWJsZSBub3QgZm91bmQuXG4iLCBzdGF0ZV9ub2RlX3BhdGgpOworCQlyZXR1cm4gLUVOT0VOVDsK Kwl9CisKKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3U4X2FycmF5KG5vZGUsICJkZWZhdWx0Iiwg ZXRoYWRkciwgRVRIX0FMRU4pOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJOb2RlICVzIGhhcyBu byBwcm9wZXJ0eSBcImRlZmF1bHRcIiBvZiBwcm9wZXIgdHlwZS5cbiIsIHN0YXRlX25vZGVfcGF0 aCk7CisJCXJldHVybiAtRU5PRU5UOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGV0aDJfb2ZfZml4dXBfbm9kZV9pbmRpdmlkdWFsbHkoc3RydWN0IGRldmljZV9ub2RlICpyb290 LAorCQkJCQkgICBjb25zdCBjaGFyICpub2RlX3BhdGgsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmV0 aG5hbWUsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmVudiwKKwkJCQkJICAgY29uc3QgY2hhciAqc3Rh dGVfbm9kZV9wYXRoKQoreworCXU4IGVudl9ldGhhZGRyW0VUSF9BTEVOXSwgZGVmYXVsdF9ldGhh ZGRyW0VUSF9BTEVOXTsKKwlpbnQgcmV0OworCisJcmV0ID0gZ2V0X21hY19hZGRyZXNzX2Zyb21f ZW52X3ZhcmlhYmxlKGVudiwgZW52X2V0aGFkZHIpOworCWlmIChyZXQpCisJCWdvdG8gY29weV9t YWNfZnJvbV9ldGgwOworCisJcmV0ID0gZ2V0X2RlZmF1bHRfbWFjX2FkZHJlc3NfZnJvbV9zdGF0 ZV9ub2RlKHN0YXRlX25vZGVfcGF0aCwgZGVmYXVsdF9ldGhhZGRyKTsKKwlpZiAocmV0KQorCQln b3RvIGNvcHlfbWFjX2Zyb21fZXRoMDsKKworCS8qCisJICogQXMgdGhlIGRlZmF1bHQgaXMgYm9n dXMgY29weSB0aGUgTUFDIGFkZHJlc3MgZnJvbSBldGgwIGlmCisJICogdGhlIHN0YXRlIHZhcmlh YmxlIGhhcyBub3QgYmVlbiBzZXQgdG8gYSBkaWZmZXJlbnQgdmFyaWFudAorCSAqLworCWlmICht ZW1jbXAoZW52X2V0aGFkZHIsIGRlZmF1bHRfZXRoYWRkciwgRVRIX0FMRU4pID09IDApCisJCWdv dG8gY29weV9tYWNfZnJvbV9ldGgwOworCisJcmV0dXJuIGV0aF9vZl9maXh1cF9ub2RlKHJvb3Qs IG5vZGVfcGF0aCwgZW52X2V0aGFkZHIpOworCitjb3B5X21hY19mcm9tX2V0aDA6CisJcmV0dXJu IGV0aF9vZl9maXh1cF9ub2RlX2Zyb21fZXRoX2RldmljZShyb290LCBub2RlX3BhdGgsIGV0aG5h bWUpOworfQorCisjZGVmaW5lIE1BWF9WX0dQSU8gOAorCitzdHJ1Y3QgYm9hcmRfZGVzY3JpcHRp b24geworCWNvbnN0IGNoYXIgKnZhcmlhbnQ7CisJY29uc3QgY2hhciAqcmV2aXNpb247CisJY29u c3QgY2hhciAqc29jOworCWNvbnN0IGNoYXIgKmR0c19jb21wYXRpYmxlOworCWNvbnN0IGNoYXIg KmRpc3BsYXk7CisJdW5zaWduZWQgZmxhZ3M7Cit9OworCisjZGVmaW5lIFNLT1ZfTkVFRF9FTkFC TEVfUk1JSQlCSVQoMCkKKyNkZWZpbmUgU0tPVl9ESVNQTEFZX1BBUkFMTEVMCUJJVCgxKQorI2Rl ZmluZSBTS09WX0VOQUJMRV9NTUNfUE9XRVIJQklUKDIpCisjZGVmaW5lIFNLT1ZfRElTUExBWV9M VkRTCUJJVCgzKQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJvYXJkX2Rlc2NyaXB0aW9uIGlteDZf dmFyaWFudHNbXSA9IHsKKwlbMF0gPSB7CisJCS52YXJpYW50ID0gImhpZ2ggcGVyZm9ybWFuY2Ui LAorCQkucmV2aXNpb24gPSAiQSIsCisJCS5zb2MgPSAiaS5NWDZRIiwKKwkJLmR0c19jb21wYXRp YmxlID0gInNrb3YsaW14Ni1pbXhxLXJldkEiLAorCQkuZmxhZ3MgPSBTS09WX05FRURfRU5BQkxF X1JNSUkgfCBTS09WX0RJU1BMQVlfUEFSQUxMRUwsCisJfSwKKwlbMV0gPSB7CisJCS52YXJpYW50 ID0gImxvdyBjb3N0IiwKKwkJLnJldmlzaW9uID0gIkEiLAorCQkuc29jID0gImkuTVg2UyIsCisJ CS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDYtaW14ZGwtcmV2QSIsCisJCS5mbGFncyA9IFNL T1ZfTkVFRF9FTkFCTEVfUk1JSSB8IFNLT1ZfRElTUExBWV9QQVJBTExFTCwKKwl9LAorCVsyXSA9 IHsKKwkJLnZhcmlhbnQgPSAiaGlnaCBwZXJmb3JtYW5jZSIsCisJCS5yZXZpc2lvbiA9ICJBIiwK KwkJLnNvYyA9ICJpLk1YNlEiLAorCQkuZHRzX2NvbXBhdGlibGUgPSAic2tvdixpbXg2LWlteHEt cmV2QSIsCisJCS5mbGFncyA9IFNLT1ZfTkVFRF9FTkFCTEVfUk1JSSB8IFNLT1ZfRElTUExBWV9Q QVJBTExFTCwKKwl9LAorCVs0XSA9IHsKKwkJLnZhcmlhbnQgPSAibG93IGNvc3QiLAorCQkucmV2 aXNpb24gPSAiQSIsCisJCS5zb2MgPSAiaS5NWDZTIiwKKwkJLmR0c19jb21wYXRpYmxlID0gInNr b3YsaW14Ni1pbXhkbC1yZXZBIiwKKwkJLmZsYWdzID0gU0tPVl9ORUVEX0VOQUJMRV9STUlJIHwg U0tPVl9ESVNQTEFZX1BBUkFMTEVMLAorCX0sCisJWzhdID0geworCQkudmFyaWFudCA9ICJoaWdo IHBlcmZvcm1hbmNlIiwKKwkJLnJldmlzaW9uID0gIkEiLAorCQkuc29jID0gImkuTVg2USIsCisJ CS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDYtaW14cS1yZXZBIiwKKwkJLmZsYWdzID0gU0tP Vl9ORUVEX0VOQUJMRV9STUlJIHwgU0tPVl9ESVNQTEFZX1BBUkFMTEVMLAorCX0sCisJWzldID0g eworCQkudmFyaWFudCA9ICJtaW5pbXVtIGNvc3QiLAorCQkucmV2aXNpb24gPSAiQiIsCisJCS5z b2MgPSAiaS5NWDZTIiwKKwkJLmR0c19jb21wYXRpYmxlID0gInNrb3YsaW14Ni1pbXhkbC1yZXZC IiwKKwkJLmZsYWdzID0gU0tPVl9ESVNQTEFZX1BBUkFMTEVMLAorCX0sCisJWzEwXSA9IHsKKwkJ LnZhcmlhbnQgPSAibG93IGNvc3QiLAorCQkucmV2aXNpb24gPSAiQiIsCisJCS5zb2MgPSAiaS5N WDZTIiwKKwkJLmR0c19jb21wYXRpYmxlID0gInNrb3YsaW14Ni1pbXhkbC1yZXZCIiwKKwkJLmZs YWdzID0gU0tPVl9ESVNQTEFZX1BBUkFMTEVMLAorCX0sCisJWzExXSA9IHsKKwkJLnZhcmlhbnQg PSAiaGlnaCBwZXJmb3JtYW5jZSIsCisJCS5yZXZpc2lvbiA9ICJCIiwKKwkJLnNvYyA9ICJpLk1Y NlEiLAorCQkuZHRzX2NvbXBhdGlibGUgPSAic2tvdixpbXg2LWlteHEtcmV2QiIsCisJCS5mbGFn cyA9IFNLT1ZfRElTUExBWV9QQVJBTExFTCwKKwl9LAorCVsxMl0gPSB7CisJCS8qIEZJWE1FIHRo aXMgb25lIGlzIGEgcmV2aXNpb24gJ0MnIGFjY29yZGluZyB0byB0aGUgc2NoZW1hdGljcyAqLwor CQkudmFyaWFudCA9ICJtYXggcGVyZm9ybWFuY2UiLAorCQkucmV2aXNpb24gPSAiQiIsCisJCS5z b2MgPSAiaS5NWDZRIiwKKwkJLmR0c19jb21wYXRpYmxlID0gInNrb3YsaW14NnEtc2tvdi1yZXZj LWx0MiIsCisJCS5kaXNwbGF5ID0gImwycnQiLAorCQkuZmxhZ3MgPSBTS09WX0RJU1BMQVlfUEFS QUxMRUwsCisJfSwKKwlbMTNdID0geworCQkudmFyaWFudCA9ICJsb3cgY29zdCIsCisJCS5yZXZp c2lvbiA9ICJDIiwKKwkJLnNvYyA9ICJpLk1YNlMiLAorCQkuZHRzX2NvbXBhdGlibGUgPSAic2tv dixpbXg2ZGwtc2tvdi1yZXZjLWx0MiIsCisJCS5kaXNwbGF5ID0gImwycnQiLAorCQkuZmxhZ3Mg PSBTS09WX0VOQUJMRV9NTUNfUE9XRVIgfCBTS09WX0RJU1BMQVlfUEFSQUxMRUwsCisJfSwKKwlb MTRdID0geworCQkudmFyaWFudCA9ICJoaWdoIHBlcmZvcm1hbmNlIiwKKwkJLnJldmlzaW9uID0g IkMiLAorCQkuc29jID0gImkuTVg2USIsCisJCS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDZx LXNrb3YtcmV2Yy1sdDIiLAorCQkuZGlzcGxheSA9ICJsMnJ0IiwKKwkJLmZsYWdzID0gU0tPVl9F TkFCTEVfTU1DX1BPV0VSIHwgU0tPVl9ESVNQTEFZX1BBUkFMTEVMLAorCX0sCisJWzE1XSA9IHsK KwkJLnZhcmlhbnQgPSAibWlkZGxlIHBlcmZvcm1hbmNlIiwKKwkJLnJldmlzaW9uID0gIkMiLAor CQkuc29jID0gImkuTVg2UyIsCisJCS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDZkbC1za292 LXJldmMtbHQyIiwKKwkJLmRpc3BsYXkgPSAibDJydCIsCisJCS5mbGFncyA9IFNLT1ZfRU5BQkxF X01NQ19QT1dFUiB8IFNLT1ZfRElTUExBWV9QQVJBTExFTCwKKwl9LAorCVsxNl0gPSB7CisJCS52 YXJpYW50ID0gIlNvbG9fUjUxMk1fRjRHIiwKKwkJLnJldmlzaW9uID0gIkMiLAorCQkuc29jID0g ImkuTVg2UyIsCisJCS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDZkbC1za292LXJldmMtbHQy IiwKKwkJLmRpc3BsYXkgPSAibDJydCIsCisJCS5mbGFncyA9IFNLT1ZfRU5BQkxFX01NQ19QT1dF UiB8IFNLT1ZfRElTUExBWV9QQVJBTExFTCwKKwl9LAorCVsxN10gPSB7CisJCS52YXJpYW50ID0g IlF1YWRfUjJHX0Y4RyIsCisJCS5yZXZpc2lvbiA9ICJDIiwKKwkJLnNvYyA9ICJpLk1YNlEiLAor CQkuZHRzX2NvbXBhdGlibGUgPSAic2tvdixpbXg2cS1za292LXJldmMtbHQyIiwKKwkJLmRpc3Bs YXkgPSAibDJydCIsCisJCS5mbGFncyA9IFNLT1ZfRU5BQkxFX01NQ19QT1dFUiB8IFNLT1ZfRElT UExBWV9QQVJBTExFTCwKKwl9LAorCVsxOF0gPSB7CisJCS52YXJpYW50ID0gIlF1YWRQbHVzX1I0 R19GMTZHIiwKKwkJLnJldmlzaW9uID0gIkMiLAorCQkuc29jID0gImkuTVg2USsiLAorCQkuZHRz X2NvbXBhdGlibGUgPSAic2tvdixpbXg2cS1za292LXJldmMtbHQyIiwKKwkJLmRpc3BsYXkgPSAi bDJydCIsCisJCS5mbGFncyA9IFNLT1ZfRU5BQkxFX01NQ19QT1dFUiB8IFNLT1ZfRElTUExBWV9Q QVJBTExFTCwKKwl9LAorCVsxOV0gPSB7CisJCS52YXJpYW50ID0gIlNvbG9fUjUxMk1fRjJHIiwK KwkJLnJldmlzaW9uID0gIkMiLAorCQkuc29jID0gImkuTVg2UyIsCisJCS5kdHNfY29tcGF0aWJs ZSA9ICJza292LGlteDZkbC1za292LXJldmMtbHQyIiwKKwkJLmRpc3BsYXkgPSAibDJydCIsCisJ CS5mbGFncyA9IFNLT1ZfRU5BQkxFX01NQ19QT1dFUiB8IFNLT1ZfRElTUExBWV9QQVJBTExFTCwK Kwl9LAorCVsyMF0gPSB7CisJCS52YXJpYW50ID0gIlF1YWRfUjFHX0Y0RyIsCisJCS5yZXZpc2lv biA9ICJDIiwKKwkJLnNvYyA9ICJpLk1YNlEiLAorCQkuZHRzX2NvbXBhdGlibGUgPSAic2tvdixp bXg2cS1za292LXJldmMtbHQyIiwKKwkJLmRpc3BsYXkgPSAibDJydCIsCisJCS5mbGFncyA9IFNL T1ZfRU5BQkxFX01NQ19QT1dFUiB8IFNLT1ZfRElTUExBWV9QQVJBTExFTCwKKwl9LAorCVsyMV0g PSB7CisJCS52YXJpYW50ID0gIlNvbG9fUjUxMk1fRjJHIiwKKwkJLnJldmlzaW9uID0gIkMiLAor CQkuc29jID0gImkuTVg2UyIsCisJCS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDZkbC1za292 LXJldmMtbHQ2IiwKKwkJLmRpc3BsYXkgPSAibDZ3aHJ0IiwKKwkJLmZsYWdzID0gU0tPVl9FTkFC TEVfTU1DX1BPV0VSIHwgU0tPVl9ESVNQTEFZX1BBUkFMTEVMLAorCX0sCisJWzIyXSA9IHsKKwkJ LnZhcmlhbnQgPSAiUXVhZF9SMUdfRjRHIiwKKwkJLnJldmlzaW9uID0gIkMiLAorCQkuc29jID0g ImkuTVg2USIsCisJCS5kdHNfY29tcGF0aWJsZSA9ICJza292LGlteDZxLXNrb3YtcmV2Yy1sdDYi LAorCQkuZGlzcGxheSA9ICJsNndocnQiLAorCQkuZmxhZ3MgPSBTS09WX0VOQUJMRV9NTUNfUE9X RVIgfCBTS09WX0RJU1BMQVlfUEFSQUxMRUwsCisJfSwKKwlbMjRdID0geworCQkudmFyaWFudCA9 ICJRdWFkX1IxR19GNEciLAorCQkucmV2aXNpb24gPSAiRSIsCisJCS5zb2MgPSAiaS5NWDZRIiwK KwkJLmR0c19jb21wYXRpYmxlID0gInNrb3YsaW14NnEtc2tvdi1yZXZlLW1pMTAxMGFpdC0xY3Ax IiwKKwkJLmRpc3BsYXkgPSAibWkxMDEwYWl0LTFjcDEiLAorCQkuZmxhZ3MgPSBTS09WX0VOQUJM RV9NTUNfUE9XRVIgfCBTS09WX0RJU1BMQVlfTFZEUywKKwl9LAorfTsKKworc3RhdGljIGludCBz a292X2JvYXJkX25vID0gLTE7CisKK3N0YXRpYyBpbnQgc2tvdl9pbXg2X2ZpeHVwKHN0cnVjdCBk ZXZpY2Vfbm9kZSAqcm9vdCwgdm9pZCAqdW51c2VkKQoreworCWludCByZXQ7CisJY29uc3QgY2hh ciAqdmFsOworCXVpbnQzMl90IGJyaWdodG5lc3M7CisJc3RydWN0IGRldmljZV9ub2RlICpub2Rl OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hvc2VuID0gb2ZfY3JlYXRlX25vZGUocm9vdCwgIi9j aG9zZW4iKTsKKworCWV0aF9vZl9maXh1cF9ub2RlX2Zyb21fZXRoX2RldmljZShyb290LAorCQkJ Ii9tZGlvLWdwaW8va3N6ODg3M0AzL3BvcnRzL3BvcnRzQDAiLCAiZXRoMCIpOworCWV0aDJfb2Zf Zml4dXBfbm9kZV9pbmRpdmlkdWFsbHkocm9vdCwKKwkJIi9tZGlvLWdwaW8va3N6ODg3M0AzL3Bv cnRzL3BvcnRzQDEiLCAiZXRoMCIsCisJCSJzdGF0ZS5ldGhhZGRyLmV0aDIiLCAiL3N0YXRlL2V0 aGFkZHIvZXRoMiIpOworCisJc3dpdGNoIChib290c291cmNlX2dldCgpKSB7CisJY2FzZSBCT09U U09VUkNFX01NQzoKKwkJLyogdXNlIGRlZmF1bHQgdmFyaWFudCBvZiBzdGF0ZSB2YXJpYWJsZSBk ZWZpbmVkIGluIGRldmljZXRyZWUgKi8KKwkJYnJpZ2h0bmVzcyA9IDg7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXZhbCA9IGdldGVudigic3RhdGUuZGlzcGxheS5icmlnaHRuZXNzIik7CisJCWlm ICghdmFsKSB7CisJCQlwcl9lcnIoImNvdWxkIG5vdCBnZXQgZGVmYXVsdCBkaXNwbGF5IGJyaWdo dG5lc3NcbiIpOworCQkJcmV0dXJuIDA7CisJCX0KKworCQlicmlnaHRuZXNzID0gc2ltcGxlX3N0 cnRvdWwodmFsLCBOVUxMLCAwKTsKKwkJYnJlYWs7CisJfQorCisJZm9yX2VhY2hfY29tcGF0aWJs ZV9ub2RlX2Zyb20obm9kZSwgcm9vdCwgTlVMTCwgInB3bS1iYWNrbGlnaHQiKSB7CisJCXJldCA9 IG9mX3Byb3BlcnR5X3dyaXRlX3UzMihub2RlLCAiZGVmYXVsdC1icmlnaHRuZXNzLWxldmVsIiwg YnJpZ2h0bmVzcyk7CisJCWlmIChyZXQpCisJCQlwcl9lcnIoImVycm9yICVkIHdoaWxlIHNldHRp bmcgZGVmYXVsdC1icmlnaHRuZXNzLWxldmVsIHByb3BlcnR5IG9uIG5vZGUgJXMgdG8gJWRcbiIs CisJCQkJcmV0LCBub2RlLT5uYW1lLCBicmlnaHRuZXNzKTsKKwl9CisKKwlvZl9wcm9wZXJ0eV93 cml0ZV91MzIoY2hvc2VuLCAic2tvdixpbXg2LWJvYXJkLXZlcnNpb24iLCBza292X2JvYXJkX25v KTsKKwlvZl9wcm9wZXJ0eV93cml0ZV9zdHJpbmcoY2hvc2VuLCAic2tvdixpbXg2LWJvYXJkLXZh cmlhbnQiLAorCQkJCSBpbXg2X3ZhcmlhbnRzW3Nrb3ZfYm9hcmRfbm9dLnZhcmlhbnQpOworCisJ cmV0dXJuIDA7Cit9CisKKy8qCisgKiBTb21lIHZhcmlhbnRzIG5lZWQgdHdlYWtzIHRvIG1ha2Ug dGhlbSB3b3JrCisgKgorICogUmV2aXNpb24gQSBoYXMgbm8gYmFja2xpZ2h0IGNvbnRyb2wsIHNp bmNlIHJldmlzaW9uIEIgaXQgaXMgcHJlc2VudCAoR1BJTzYvMjMpCisgKiBSZXZpc2lvbiBBIG5l ZWRzIEdQSU8xLzI0IHRvIGJlIGxvdyB0byBtYWtlIG5ldHdvcmsgd29ya2luZworICogUmV2aXNp b24gQyBjYW4gY29udHJvbCB0aGUgU0QgbWFpbiBwb3dlciBzdXBwbHkKKyAqLworc3RhdGljIHZv aWQgc2tvdl9pbml0X2JvYXJkKGNvbnN0IHN0cnVjdCBib2FyZF9kZXNjcmlwdGlvbiAqdmFyaWFu dCkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOworCWNoYXIgKmVudmlyb25tZW50X3BhdGgs ICplbnZkZXY7CisJaW50IHJldDsKKworCWlteDZfYmJ1X2ludGVybmFsX3NwaV9pMmNfcmVnaXN0 ZXJfaGFuZGxlcigic3BpZmxhc2giLCAiL2Rldi9tMjVwMC5iYXJlYm94IiwKKwkJQkJVX0hBTkRM RVJfRkxBR19ERUZBVUxUKTsKKworCW9mX3JlZ2lzdGVyX2ZpeHVwKHNrb3ZfaW14Nl9maXh1cCwg TlVMTCk7CisKKwlzd2l0Y2ggKGJvb3Rzb3VyY2VfZ2V0KCkpIHsKKwljYXNlIEJPT1RTT1VSQ0Vf TU1DOgorCQllbnZpcm9ubWVudF9wYXRoID0gIi9jaG9zZW4vZW52aXJvbm1lbnQtc2QiOworCQll bnZkZXYgPSAiTU1DIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZW52aXJvbm1lbnRfcGF0aCA9 ICIvY2hvc2VuL2Vudmlyb25tZW50LXNwaW5vciI7CisJCWVudmRldiA9ICJTUEkgTk9SIGZsYXNo IjsKKwkJYnJlYWs7CisJfQorCisJcHJfbm90aWNlKCJVc2luZyBlbnZpcm9ubWVudCBpbiAlc1xu IiwgZW52ZGV2KTsKKworCXJldCA9IG9mX2RldmljZV9lbmFibGVfcGF0aChlbnZpcm9ubWVudF9w YXRoKTsKKwlpZiAocmV0IDwgMCkKKwkJcHJfd2FybigiRmFpbGVkIHRvIGVuYWJsZSBlbnZpcm9u bWVudCBwYXJ0aXRpb24gJyVzJyAoJWQpXG4iLAorCQkJZW52aXJvbm1lbnRfcGF0aCwgcmV0KTsK KworCWlmICh2YXJpYW50LT5mbGFncyAmIFNLT1ZfTkVFRF9FTkFCTEVfUk1JSSkgeworCQkvKgor CQkgKiBNWDZRRExfUEFEX0VORVRfUlhfRVJfX0dQSU8xX0lPMjQgaXMgYSBncGlvIHdoaWNoIG11 c3QgYmUKKwkJICogbG93IHRvIGVuYWJsZSB0aGUgUk1JSSBmcm9tIHRoZSBzd2l0Y2ggcG9pbnQg b2YgdmlldworCQkgKi8KKwkJZ3Bpb19yZXF1ZXN0KDI0LCAibXVzdF9iZV9sb3ciKTsKKwkJZ3Bp b19kaXJlY3Rpb25fb3V0cHV0KDI0LCAwKTsKKwl9CisKKwkvKiBTRCBjYXJkIGhhbmRsaW5nICov CisJZ3Bpb19yZXF1ZXN0KDIwNSwgIm1tYyBpbyBzdXBwbHkiKTsKKwlncGlvX2RpcmVjdGlvbl9v dXRwdXQoMjA1LCAwKTsgLyogc2VsZWN0IDMuMyBWIElPIHZvbHRhZ2UgKi8KKworCWlmICh2YXJp YW50LT5mbGFncyAmIFNLT1ZfRU5BQkxFX01NQ19QT1dFUikgeworCQkvKgorCQkgKiBrZWVwIGlu IHN5bmMgd2l0aCBkZXZpY2V0cmVlJ3MgJ3JlZ3VsYXRvci1ib290LW9uJyBzZXR0aW5nIGZvcgor CQkgKiB0aGlzIHJlZ3VsYXRvcgorCQkgKi8KKwkJZ3Bpb19yZXF1ZXN0KDIwMCwgIm1tYyBwb3dl ciBzdXBwbHkiKTsKKwkJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KDIwMCwgMCk7IC8qIHN3aXRjaCBv biAqLworCQltZGVsYXkoMSk7CisJCWdwaW9fZGlyZWN0aW9uX291dHB1dCgyMDAsIDEpOyAvKiBz d2l0Y2ggb24gKi8KKwl9CisKKwlpZiAodmFyaWFudC0+ZmxhZ3MgJiBTS09WX0RJU1BMQVlfUEFS QUxMRUwpIHsKKwkJbnAgPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCAiZnNs LGlteC1wYXJhbGxlbC1kaXNwbGF5Iik7CisJCWlmIChucCkKKwkJCW9mX2RldmljZV9lbmFibGVf YW5kX3JlZ2lzdGVyKG5wKTsKKwkJZWxzZQorCQkJcHJfZXJyKCJDYW5ub3QgZmluZCBcImZzbCxp bXgtcGFyYWxsZWwtZGlzcGxheVwiIG5vZGVcbiIpOworCX0KKworCWlmICh2YXJpYW50LT5mbGFn cyAmIFNLT1ZfRElTUExBWV9MVkRTKSB7CisJCW5wID0gb2ZfZmluZF9jb21wYXRpYmxlX25vZGUo TlVMTCwgTlVMTCwgImZzbCxpbXg2cS1sZGIiKTsKKwkJaWYgKG5wKQorCQkJb2ZfZGV2aWNlX2Vu YWJsZV9hbmRfcmVnaXN0ZXIobnApOworCQllbHNlCisJCQlwcl9lcnIoIkNhbm5vdCBmaW5kIFwi ZnNsLGlteDZxLWxkYlwiIG5vZGVcbiIpOworCisJCS8qIC4uLiBhcyB3ZWxsIGFzIGl0cyBjaGFu bmVsIDAgKi8KKwkJbnAgPSBvZl9maW5kX25vZGVfYnlfbmFtZShucCwgImx2ZHMtY2hhbm5lbEAw Iik7CisJCWlmIChucCkKKwkJCW9mX2RldmljZV9lbmFibGUobnApOworCQllbHNlCisJCQlwcl9l cnIoIkNhbm5vdCBmaW5kIFwibHZkcy1jaGFubmVsQDBcIiBub2RlXG4iKTsKKwl9Cit9CisKK3N0 YXRpYyB2b2lkIGZpeHVwX21hY2hpbmVfY29tcGF0aWJsZShjb25zdCBjaGFyICpjb21wYXQpCit7 CisJY29uc3QgY2hhciAqY3VyY29tcGF0OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcm9vdDsKKwlp bnQgY2NsZW4gPSAwLCBjbGVuID0gc3RybGVuKGNvbXBhdCkgKyAxOworCXZvaWQgKmJ1ZjsKKwor CXJvb3QgPSBvZl9nZXRfcm9vdF9ub2RlKCk7CisJaWYgKCFyb290KQorCQlyZXR1cm47CisKKwlj dXJjb21wYXQgPSBvZl9nZXRfcHJvcGVydHkocm9vdCwgImNvbXBhdGlibGUiLCAmY2NsZW4pOwor CisJYnVmID0geHphbGxvYyhjY2xlbiArIGNsZW4pOworCisJbWVtY3B5KGJ1ZiwgY29tcGF0LCBj bGVuKTsKKwltZW1jcHkoYnVmICsgY2xlbiwgY3VyY29tcGF0LCBjY2xlbik7CisKKwkvKgorCSAq IFByZXBlbmQgdGhlIGNvbXBhdGlibGUgZnJvbSBib2FyZCBlbnRyeSB0byB0aGUgbWFjaGluZSBj b21wYXRpYmxlLgorCSAqIFVzZWQgdG8gbWF0Y2ggYm9vdHNwZWMgZW50cmllcyBhZ2FpbnN0IGl0 LgorCSAqLworCW9mX3NldF9wcm9wZXJ0eShyb290LCAiY29tcGF0aWJsZSIsIGJ1ZiwgY2NsZW4g KyBjbGVuLCB0cnVlKTsKKworCWZyZWUoYnVmKTsKK30KKworc3RhdGljIGludCBza292X2lteDZf cHJvYmUoc3RydWN0IGRldmljZV9kICpkZXYpCit7CisJdW5zaWduZWQgdiA9IDA7CisJY29uc3Qg c3RydWN0IGJvYXJkX2Rlc2NyaXB0aW9uICp2YXJpYW50OworCisJdiA9IHNrb3ZfaW14Nl9nZXRf dmVyc2lvbigpOworCisJaWYgKHYgPj0gQVJSQVlfU0laRShpbXg2X3ZhcmlhbnRzKSkgeworCQlk ZXZfZXJyKGRldiwgIkludmFsaWQgdmFyaWFudCAldVxuIiwgdik7CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCXZhcmlhbnQgPSAmaW14Nl92YXJpYW50c1t2XTsKKworCWlmICghdmFyaWFudC0+ dmFyaWFudCkgeworCQlkZXZfZXJyKGRldiwgIkludmFsaWQgdmFyaWFudCAldVxuIiwgdik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCXNrb3ZfYm9hcmRfbm8gPSB2OworCisJZ2xvYmFsdmFy X2FkZF9zaW1wbGVfaW50KCJib2FyZC5ubyIsICZza292X2JvYXJkX25vLCAiJXUiKTsKKwlnbG9i YWx2YXJfYWRkX3NpbXBsZSgiYm9hcmQudmFyaWFudCIsIHZhcmlhbnQtPnZhcmlhbnQpOworCWds b2JhbHZhcl9hZGRfc2ltcGxlKCJib2FyZC5yZXZpc2lvbiIsdmFyaWFudC0+cmV2aXNpb24pOwor CWdsb2JhbHZhcl9hZGRfc2ltcGxlKCJib2FyZC5zb2MiLCB2YXJpYW50LT5zb2MpOworCWdsb2Jh bHZhcl9hZGRfc2ltcGxlKCJib2FyZC5kdHMiLCB2YXJpYW50LT5kdHNfY29tcGF0aWJsZSk7CisJ Z2xvYmFsdmFyX2FkZF9zaW1wbGUoImJvYXJkLmRpc3BsYXkiLCB2YXJpYW50LT5kaXNwbGF5ID86 IE5VTEwpOworCisJZml4dXBfbWFjaGluZV9jb21wYXRpYmxlKHZhcmlhbnQtPmR0c19jb21wYXRp YmxlKTsKKworCXNrb3ZfaW5pdF9ib2FyZCh2YXJpYW50KTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgX19tYXliZV91bnVzZWQgc3RydWN0IG9mX2RldmljZV9pZCBza292X3ZlcnNpb25faWRz W10gPSB7CisJeworCQkuY29tcGF0aWJsZSA9ICJza292LGlteDYiLAorCX0sIHsKKwkJLyogc2Vu dGluZWwgKi8KKwl9Cit9OworCitzdGF0aWMgc3RydWN0IGRyaXZlcl9kIHNrb3ZfdmVyc2lvbl9k cml2ZXIgPSB7CisJLm5hbWUgPSAic2tvdi1pbXg2IiwKKwkucHJvYmUgPSBza292X2lteDZfcHJv YmUsCisJLm9mX2NvbXBhdGlibGUgPSBEUlZfT0ZfQ09NUEFUKHNrb3ZfdmVyc2lvbl9pZHMpLAor fTsKK2NvcmVkZXZpY2VfcGxhdGZvcm1fZHJpdmVyKHNrb3ZfdmVyc2lvbl9kcml2ZXIpOworCitz dGF0aWMgdm9pZCBza292X2lteDZfZGV2aWNlc19zaHV0ZG93bih2b2lkKQoreworCWNvbnN0IGNo YXIgKmV4dGVybmFsOworCisJaWYgKHNrb3ZfYm9hcmRfbm8gPCAwKQorCQlyZXR1cm47CisKKwll eHRlcm5hbCA9IGdldGVudigic3RhdGUuZGlzcGxheS5leHRlcm5hbCIpOworCWlmICghZXh0ZXJu YWwpIHsKKwkJcHJfZXJyKCJjb3VsZCBub3QgZ2V0IHN0YXRlIHZhcmlhYmxlIGRpc3BsYXkuZXh0 ZXJuYWxcbiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKCFzdHJjbXAoZXh0ZXJuYWwsICIwIikp CisJCXNldGVudigiYmFja2xpZ2h0MC5icmlnaHRuZXNzIiwgIjAiKTsKK30KK3ByZWRldnNodXRk b3duX2V4aXRjYWxsKHNrb3ZfaW14Nl9kZXZpY2VzX3NodXRkb3duKTsKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL2JvYXJkcy9za292LWlteDYvZW52L2luaXQvYXV0b21vdW50IGIvYXJjaC9hcm0vYm9h cmRzL3Nrb3YtaW14Ni9lbnYvaW5pdC9hdXRvbW91bnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uYmM5ZmY0OGEwYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2Jv YXJkcy9za292LWlteDYvZW52L2luaXQvYXV0b21vdW50CkBAIC0wLDAgKzEsMTQgQEAKKyMhL2Jp bi9zaAorCitpZiBbICIkMSIgPSBtZW51IF07IHRoZW4KKwlpbml0LW1lbnUtYWRkLWVudHJ5ICIk MCIgIkF1dG9tb3VudHBvaW50cyIKKwlleGl0CitmaQorCisjIGRldmVsb3BtZW50IHN1cHBvcnQK K21rZGlyIC1wIC9tbnQvdGZ0cAorYXV0b21vdW50IC9tbnQvdGZ0cCAnaWZ1cCBldGgwICYmIG1v dW50IC10IHRmdHAgJGV0aDAuc2VydmVyaXAgL21udC90ZnRwJworCisjIHJlZ3VsYXIgU0QgY2Fy ZCBiYXNlZCBib290IHByb2NlZHVyZQorbWtkaXIgLXAgL21udC9zZAorYXV0b21vdW50IC1kIC9t bnQvc2QgJ21tYzIucHJvYmU9MSAmJiBtb3VudCAtdCBleHQ0IC9kZXYvbW1jMi4wIC9tbnQvc2Qn CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvc2tvdi1pbXg2L2Vudi9udi9ib290LmRlZmF1 bHQgYi9hcmNoL2FybS9ib2FyZHMvc2tvdi1pbXg2L2Vudi9udi9ib290LmRlZmF1bHQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZmUxYTM2M2RhMQotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtL2JvYXJkcy9za292LWlteDYvZW52L252L2Jvb3QuZGVmYXVsdApAQCAt MCwwICsxIEBACitib290Y2hvb3NlcgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL3Nrb3Yt aW14Ni9mbGFzaC1oZWFkZXItbXg2LXNrb3YtaW14Ni5pbXhjZmcgYi9hcmNoL2FybS9ib2FyZHMv c2tvdi1pbXg2L2ZsYXNoLWhlYWRlci1teDYtc2tvdi1pbXg2LmlteGNmZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40YmI2MTVlYmIwCi0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9mbGFzaC1oZWFkZXItbXg2LXNrb3YtaW14Ni5pbXhj ZmcKQEAgLTAsMCArMSw0IEBACitzb2MgaW14NgorbG9hZGFkZHIgMHgwMDkwNzAwMAorbWF4X2xv YWRfc2l6ZSAweDExMDAwCitpdnRvZnMgMHg0MDAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJk cy9za292LWlteDYvbG93bGV2ZWwuYyBiL2FyY2gvYXJtL2JvYXJkcy9za292LWlteDYvbG93bGV2 ZWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lYWI3OTdmYWExCi0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL3Nrb3YtaW14Ni9sb3dsZXZlbC5jCkBA IC0wLDAgKzEsNjY0IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 CisKKyNkZWZpbmUgcHJfZm10KGZtdCkgInNrb3YtaW14NjogIiBmbXQKKworI2luY2x1ZGUgPGNv bW1vbi5oPgorI2luY2x1ZGUgPG1hY2gvZ2VuZXJpYy5oPgorI2luY2x1ZGUgPGFzbS9iYXJlYm94 LWFybS1oZWFkLmg+CisjaW5jbHVkZSA8YXNtL2JhcmVib3gtYXJtLmg+CisjaW5jbHVkZSA8ZGVi dWdfbGwuaD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPG1hY2gvaW14Ni1tbWRjLmg+Cisj aW5jbHVkZSA8bWFjaC9pbXg2LWRkci1yZWdzLmg+CisjaW5jbHVkZSA8bWFjaC9pbXg2Lmg+Cisj aW5jbHVkZSA8bWFjaC94bG9hZC5oPgorI2luY2x1ZGUgPG1hY2gvZXNkY3RsLmg+CisjaW5jbHVk ZSA8c2VyaWFsL2lteC11YXJ0Lmg+CisjaW5jbHVkZSA8bWFjaC9pb211eC1teDYuaD4KKyNpbmNs dWRlIDxtYWNoL2lteC1ncGlvLmg+CisjaW5jbHVkZSAidmVyc2lvbi5oIgorCitzdGF0aWMgdm9p ZCBfX3VkZWxheShpbnQgdXMpCit7CisJdm9sYXRpbGUgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBp IDwgdXMgKiA0OyBpKyspOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoKKyAqIE1p Y3JvbiBNVDQxSzUxMk0xNkhBLTEyNSBJVDpFIC0+ICA4IEdCaXQgPSA2NCBNZWcgeCAxNiB4IDgg YmFua3MKKyAqCisgKiBTcGVlZCBHcmFkZSAgIERhdGEgUmF0ZSAoTVQvcykgIHRSQ0QtdFJQLUNM ICAgdFJDRChucykgIHRSUChucykgIENMKG5zKQorICogICAgLTEyNSAgICAgICAgICAxNjAwICAg ICAgICAgICAgMTEtMTEtMTEgICAgICAxMy43NSAgICAgMTMuNzUgICAxMy43NQorICogICAgICAg ICAgICAgICAoPTgwMCBNSHopCisgKgorICogTWVtb3J5IGNvbmZpZ3VyYXRpb24gdXNlZCBieSB2 YXJpYW50OgorICogLSAiTWF4IFBlcmZvcm1hbmNlIiwgNjQgYml0IGRhdGEgYnVzLCAxMDY2IE1I eiwgNCBHaUIgbWVtb3J5CisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2X2RkcjNfY2ZnIHNr b3ZfaW14Nl9jZmdfNHg1MTJNYl8xMDY2TUh6ID0geworCS5tZW1fc3BlZWQgPSAxMDY2LAorCS5k ZW5zaXR5ID0gOCwgLyogR2lCaXQgKi8KKwkud2lkdGggPSAxNiwgLyogMTYgYml0IGRhdGEgcGVy IGRldmljZSAqLworCS5iYW5rcyA9IDgsCisJLnJvd2FkZHIgPSAxNiwgLyogNjQgayAqLworCS5j b2xhZGRyID0gMTAsIC8qIDEgayAqLworCS5wYWdlc3ogPSAyLCAvKiBba2lCXSAqLworCS50cmNk ID0gMTM3NSwgLyogMTMuNzUgbnMgPSAxMSBjbG9ja3MgQCAxLjYgR0h6ICovCisJLnRyY21pbiA9 IDQ4NzUsIC8qIDQ4Ljc1IG5zID0gMzkgY2xvY2tzIEAgMS42IEdIeiAqLworCS50cmFzbWluID0g MzUwMCwgLyogMzUgbnMgPSAyOCBjbG9ja3MgQCAxLjYgR0h6ICovCisJLlNSVCA9IDAsCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IG14Nl9kZHJfc3lzaW5mbyBza292X2lteDZfc3lzaW5mb180 eDUxMk1iXzEwNjZNSHogPSB7CisJLmRzaXplID0gMiwgLyogNjQgYml0IHdpZGUgPSA0IGRldmlj ZXMsIDE2IGJpdCBlYWNoICovCisJLmNzX2RlbnNpdHkgPSAzMiwgLyogZm91ciA4IEdCaXQgZGV2 aWNlcyBjb25uZWN0ZWQgKi8KKwkubmNzID0gMSwgLyogb25lIENTIGxpbmUgZm9yIGFsbCBkZXZp Y2VzICovCisJLmNzMV9taXJyb3IgPSAxLCAvKiBUT0RPICovCisJLmJpX29uID0gMSwgLyogVE9E TyAqLworCS5ydHRfbm9tID0gMSwgLyogTVg2X01NRENfUDBfTVBPRFRDVFJMIC0+IDB4MDAwMjIy MjcgKi8KKwkucnR0X3dyID0gMCwgLyogaXMgTFdfRU4gaXMgMCBpbiB0aGVpciBjb2RlICovCisJ LnJhbGF0ID0gNSwgLyogVE9ETyAqLworCS53YWxhdCA9IDEsIC8qIFRPRE8gKi8KKwkubWlmM19t b2RlID0gMywgLyogVE9ETyAqLworCS5yc3RfdG9fY2tlID0gMHgyMywgLyogdXNlZCBpbiB0aGVp ciBjb2RlIGFzIHdlbGwgKi8KKwkuc2RlX3RvX3JzdCA9IDB4MTAsIC8qIHVzZWQgaW4gdGhlaXIg Y29kZSBhcyB3ZWxsICovCisJLnBkX2Zhc3RfZXhpdCA9IDAsIC8qIFRPRE8gKi8KK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbXg2X21tZGNfY2FsaWJyYXRpb24gc2tvdl9pbXg2X2NhbGliXzR4 NTEyTWJfMTA2Nk1IeiA9IHsKKwkucDBfbXB3bGRlY3RybDAgPSAweDAwMWEwMDE3LAorCS5wMF9t cHdsZGVjdHJsMSA9IDB4MDAxRjAwMUYsCisJLnAwX21wZGdjdHJsMCA9IDB4NDMwNDAzMTksCisJ LnAwX21wZGdjdHJsMSA9IDB4MDMwNDAyNzksCisJLnAwX21wcmRkbGN0bCA9IDB4NGQ0MzQyNDgs CisJLnAwX21wd3JkbGN0bCA9IDB4MzQ0MjQ1NDMsCisKKwkucDFfbXB3bGRlY3RybDAgPSAweDAw MTcwMDI3LAorCS5wMV9tcHdsZGVjdHJsMSA9IDB4MDAwYTAwMWYsCisJLnAxX21wZGdjdHJsMCA9 IDB4NDMwNDAzMjEsCisJLnAxX21wZGdjdHJsMSA9IDB4MDMwMzAyNTEsCisJLnAxX21wcmRkbGN0 bCA9IDB4NDI0MTNjNGQsCisJLnAxX21wd3JkbGN0bCA9IDB4NDkzMjQ5MzMsCit9OworCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KKworLyoKKyAqIE1pY3JvbiBNVDQxSzI1Nk0xNkhBLTEyNSBJVDpF IC0+ICA0IEdCaXQgPSAzMiBNZWcgeCAxNiB4IDggYmFua3MKKyAqCisgKiBTcGVlZCBHcmFkZSAg IERhdGEgUmF0ZSAoTVQvcykgIHRSQ0QtdFJQLUNMICAgdFJDRChucykgIHRSUChucykgIENMKG5z KQorICogICAgLTEyNSAgICAgICAgICAxNjAwICAgICAgICAgICAgMTEtMTEtMTEgICAgICAxMy43 NSAgICAgMTMuNzUgICAxMy43NQorICogICAgICAgICAgICAgICAoPTgwMCBNSHopCisgKgorICog TWVtb3J5IGNvbmZpZ3VyYXRpb24gdXNlZCBieSB2YXJpYW50OgorICogLSAiTWF4IFBlcmZvcm1h bmNlIiwgNjQgYml0IGRhdGEgYnVzLCAxMDY2IE1IeiwgMiBHaUIgbWVtb3J5CisgKi8KK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbXg2X2RkcjNfY2ZnIHNrb3ZfaW14Nl9jZmdfNHgyNTZNYl8xMDY2TUh6 ID0geworCS5tZW1fc3BlZWQgPSAxMDY2LAorCS5kZW5zaXR5ID0gNCwgLyogR2lCaXQgKi8KKwku d2lkdGggPSAxNiwgLyogMTYgYml0IGRhdGEgcGVyIGRldmljZSAqLworCS5iYW5rcyA9IDgsCisJ LnJvd2FkZHIgPSAxNSwgLyogMzIgayAqLworCS5jb2xhZGRyID0gMTAsIC8qIDEgayAqLworCS5w YWdlc3ogPSAyLCAvKiBba2lCXSAqLworCS50cmNkID0gMTM3NSwgLyogMTMuNzUgbnMgPSAxMSBj bG9ja3MgQCAxLjYgR0h6ICovCisJLnRyY21pbiA9IDQ4NzUsIC8qIDQ4Ljc1IG5zID0gMzkgY2xv Y2tzIEAgMS42IEdIeiAqLworCS50cmFzbWluID0gMzUwMCwgLyogMzUgbnMgPSAyOCBjbG9ja3Mg QCAxLjYgR0h6ICovCisJLlNSVCA9IDAsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG14Nl9k ZHJfc3lzaW5mbyBza292X2lteDZfc3lzaW5mb180eDI1Nk1iXzEwNjZNSHogPSB7CisJLmRzaXpl ID0gMiwgLyogNjQgYml0IHdpZGUgPSA0IGRldmljZXMsIDE2IGJpdCBlYWNoICovCisJLmNzX2Rl bnNpdHkgPSAxNiwgLyogZm91ciA0IEdCaXQgZGV2aWNlcyBjb25uZWN0ZWQgKi8KKwkubmNzID0g MSwgLyogb25lIENTIGxpbmUgZm9yIGFsbCBkZXZpY2VzICovCisJLmNzMV9taXJyb3IgPSAxLCAv KiBUT0RPICovCisJLmJpX29uID0gMSwgLyogVE9ETyAqLworCS5ydHRfbm9tID0gMSwgLyogTVg2 X01NRENfUDBfTVBPRFRDVFJMIC0+IDB4MDAwMjIyMjcgKi8KKwkucnR0X3dyID0gMCwgLyogaXMg TFdfRU4gaXMgMCBpbiB0aGVpciBjb2RlICovCisJLnJhbGF0ID0gNSwgLyogVE9ETyAqLworCS53 YWxhdCA9IDEsIC8qIFRPRE8gKi8KKwkubWlmM19tb2RlID0gMywgLyogVE9ETyAqLworCS5yc3Rf dG9fY2tlID0gMHgyMywgLyogdXNlZCBpbiB0aGVpciBjb2RlIGFzIHdlbGwgKi8KKwkuc2RlX3Rv X3JzdCA9IDB4MTAsIC8qIHVzZWQgaW4gdGhlaXIgY29kZSBhcyB3ZWxsICovCisJLnBkX2Zhc3Rf ZXhpdCA9IDAsIC8qIFRPRE8gKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2X21tZGNf Y2FsaWJyYXRpb24gc2tvdl9pbXg2X2NhbGliXzR4MjU2TWJfMTA2Nk1IeiA9IHsKKwkucDBfbXB3 bGRlY3RybDAgPSAweDAwMWEwMDE3LAorCS5wMF9tcHdsZGVjdHJsMSA9IDB4MDAxRjAwMUYsCisJ LnAwX21wZGdjdHJsMCA9IDB4NDMwNDAzMTksCisJLnAwX21wZGdjdHJsMSA9IDB4MDMwNDAyNzks CisJLnAwX21wcmRkbGN0bCA9IDB4NGQ0MzQyNDgsCisJLnAwX21wd3JkbGN0bCA9IDB4MzQ0MjQ1 NDMsCisKKwkucDFfbXB3bGRlY3RybDAgPSAweDAwMTcwMDI3LAorCS5wMV9tcHdsZGVjdHJsMSA9 IDB4MDAwYTAwMWYsCisJLnAxX21wZGdjdHJsMCA9IDB4NDMwNDAzMjEsCisJLnAxX21wZGdjdHJs MSA9IDB4MDMwMzAyNTEsCisJLnAxX21wcmRkbGN0bCA9IDB4NDI0MTNjNGQsCisJLnAxX21wd3Jk bGN0bCA9IDB4NDkzMjQ5MzMsCit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoKKyAq IE1pY3JvbiBNVDQxSzEyOE0xNkpULTEyNSBJVDpLIC0+ICAyIEdCaXQgPSAxNiBNZWcgeCAxNiB4 IDggYmFua3MKKyAqCisgKiBTcGVlZCBHcmFkZSAgIERhdGEgUmF0ZSAoTVQvcykgIHRSQ0QtdFJQ LUNMICAgdFJDRChucykgIHRSUChucykgIENMKG5zKQorICogICAgLTEyNSDCucKyICAgICAgIDE2 MDAgICAgICAgICAgICAxMS0xMS0xMSAgICAgIDEzLjc1ICAgICAxMy43NSAgIDEzLjc1CisgKiAg ICAgICAgICAgICAgICg9ODAwIE1IeikKKyAqCisgKiDCuSBCYWNrd2FyZCBjb21wYXRpYmxlIHRv IDEwNjYgKD01MzMgTUh6KSwgQ0wgPSA3CisgKiDCsiBCYWNrd2FyZCBjb21wYXRpYmxlIHRvIDEz MzMgKD02NjcgTUh6KSwgQ0wgPSA5CisgKgorICogTWVtb3J5IGNvbmZpZ3VyYXRpb24gdXNlZCBi eSB2YXJpYW50CisgKiAtICJIaWdoIFBlcmZvcm1hbmNlIiwgNjQgYml0IGRhdGEgYnVzLCAxMDY2 IE1IeiwgMSBHaUIgbWVtb3J5CisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2X2RkcjNfY2Zn IHNrb3ZfaW14Nl9jZmdfNHgxMjhNYl8xMDY2TUh6ID0geworCS5tZW1fc3BlZWQgPSAxMDY2LAor CS5kZW5zaXR5ID0gMiwgLyogR2lCaXQgKi8KKwkud2lkdGggPSAxNiwgLyogMTYgYml0IGRhdGEg cGVyIGRldmljZSAqLworCS5iYW5rcyA9IDgsCisJLnJvd2FkZHIgPSAxNCwgLyogMTYgayAqLwor CS5jb2xhZGRyID0gMTAsIC8qIDEgayAqLworCS5wYWdlc3ogPSAyLCAvKiBba2lCXSAqLworCS50 cmNkID0gMTM3NSwgLyogMTMuNzUgbnMgPSAxMSBjbG9ja3MgQCAxLjYgR0h6ICovCisJLnRyY21p biA9IDQ4NzUsIC8qIDQ4Ljc1IG5zID0gMzkgY2xvY2tzIEAgMS42IEdIeiAqLworCS50cmFzbWlu ID0gMzUwMCwgLyogMzUgbnMgPSAyOCBjbG9ja3MgQCAxLjYgR0h6ICovCisJLlNSVCA9IDAsCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG14Nl9kZHJfc3lzaW5mbyBza292X2lteDZfc3lzaW5m b180eDEyOE1iXzEwNjZNSHogPSB7CisJLmRzaXplID0gMiwgLyogNjQgYml0IHdpZGUgPSA0IGRl dmljZXMsIDE2IGJpdCBlYWNoICovCisJLmNzX2RlbnNpdHkgPSA4LCAvKiBmb3VyIDIgR0JpdCBk ZXZpY2VzIGNvbm5lY3RlZCAqLworCS5uY3MgPSAxLCAvKiBvbmUgQ1MgbGluZSBmb3IgYWxsIGRl dmljZXMgKi8KKwkuY3MxX21pcnJvciA9IDEsIC8qIFRPRE8gKi8KKwkuYmlfb24gPSAxLCAvKiBU T0RPICovCisJLnJ0dF9ub20gPSAxLCAvKiBNWDZfTU1EQ19QMF9NUE9EVENUUkwgLT4gMHgwMDAy MjIyNyAqLworCS5ydHRfd3IgPSAwLCAvKiBpcyBMV19FTiBpcyAwIGluIHRoZWlyIGNvZGUgKi8K KwkucmFsYXQgPSA1LCAvKiBUT0RPICovCisJLndhbGF0ID0gMSwgLyogVE9ETyAqLworCS5taWYz X21vZGUgPSAzLCAvKiBUT0RPICovCisJLnJzdF90b19ja2UgPSAweDIzLCAvKiB1c2VkIGluIHRo ZWlyIGNvZGUgYXMgd2VsbCAqLworCS5zZGVfdG9fcnN0ID0gMHgxMCwgLyogdXNlZCBpbiB0aGVp ciBjb2RlIGFzIHdlbGwgKi8KKwkucGRfZmFzdF9leGl0ID0gMCwgLyogVE9ETyAqLworfTsKKwor LyogY2FsaWJyYXRpb24gaW5mbyBmb3IgdGhlICJtYXggcGVyZm9ybWFuY2UiIGFuZCAiaGlnaCBw ZXJmb3JtYW5jZSIgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2X21tZGNfY2FsaWJyYXRpb24g c2tvdl9pbXg2X2NhbGliXzR4MTI4TWJfMTA2Nk1IeiA9IHsKKwkucDBfbXB3bGRlY3RybDAgPSAw eDAwMTEwMDBFLAorCS5wMF9tcHdsZGVjdHJsMSA9IDB4MDAwRTAwMUIsCisJLnAwX21wZGdjdHJs MCA9IDB4NDI3MjAzMDYsCisJLnAwX21wZGdjdHJsMSA9IDB4MDI2RjAyNjYsCisJLnAwX21wcmRk bGN0bCA9IDB4NDUzOTNCM0UsCisJLnAwX21wd3JkbGN0bCA9IDB4NDA0MzQ1NDEsCisKKwkucDFf bXB3bGRlY3RybDAgPSAweDAwMTkwMDE1LAorCS5wMV9tcHdsZGVjdHJsMSA9IDB4MDAwNzAwMTgs CisJLnAxX21wZGdjdHJsMCA9IDB4NDI3MzAzMEEsCisJLnAxX21wZGdjdHJsMSA9IDB4MDI3NDAy NDAsCisJLnAxX21wcmRkbGN0bCA9IDB4NDAzQTM3NDcsCisJLnAxX21wd3JkbGN0bCA9IDB4NDcz RTRBM0IsCit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIHN0cnVjdCBteDZk cV9pb211eF9kZHJfcmVncyBkZHJfaW9tdXhfcSA9IHsKKwkuZHJhbV9zZHFzMCA9IDB4MDAwMDAw MzAsCisJLmRyYW1fc2RxczEgPSAweDAwMDAwMDMwLAorCS5kcmFtX3NkcXMyID0gMHgwMDAwMDAz MCwKKwkuZHJhbV9zZHFzMyA9IDB4MDAwMDAwMzAsCisJLmRyYW1fc2RxczQgPSAweDAwMDAwMDMw LAorCS5kcmFtX3NkcXM1ID0gMHgwMDAwMDAzMCwKKwkuZHJhbV9zZHFzNiA9IDB4MDAwMDAwMzAs CisJLmRyYW1fc2RxczcgPSAweDAwMDAwMDMwLAorCS5kcmFtX2RxbTAgPSAweDAwMDIwMDMwLAor CS5kcmFtX2RxbTEgPSAweDAwMDIwMDMwLAorCS5kcmFtX2RxbTIgPSAweDAwMDIwMDMwLAorCS5k cmFtX2RxbTMgPSAweDAwMDIwMDMwLAorCS5kcmFtX2RxbTQgPSAweDAwMDIwMDMwLAorCS5kcmFt X2RxbTUgPSAweDAwMDIwMDMwLAorCS5kcmFtX2RxbTYgPSAweDAwMDIwMDMwLAorCS5kcmFtX2Rx bTcgPSAweDAwMDIwMDMwLAorCS5kcmFtX2NhcyA9IDB4MDAwMjAwMzAsCisJLmRyYW1fcmFzID0g MHgwMDAyMDAzMCwKKwkuZHJhbV9zZGNsa18wID0gMHgwMDAyMDAzMCwKKwkuZHJhbV9zZGNsa18x ID0gMHgwMDAyMDAzMCwKKwkuZHJhbV9zZGNrZTAgPSAweDAwMDAzMDAwLAorCS5kcmFtX3NkY2tl MSA9IDB4MDAwMDMwMDAsCisJLmRyYW1fcmVzZXQgPSAweDAwMDIwMDMwLAorCS5kcmFtX3NkYmEy ID0gMHgwMDAwMDAwMCwKKwkuZHJhbV9zZG9kdDAgPSAweDAwMDAzMDMwLAorCS5kcmFtX3Nkb2R0 MSA9IDB4MDAwMDMwMzAsCit9OworCitzdGF0aWMgc3RydWN0IG14NmRxX2lvbXV4X2dycF9yZWdz IGdycF9pb211eF9xID0geworCS5ncnBfYjBkcyA9IDB4MDAwMDAwMzAsCisJLmdycF9iMWRzID0g MHgwMDAwMDAzMCwKKwkuZ3JwX2IyZHMgPSAweDAwMDAwMDMwLAorCS5ncnBfYjNkcyA9IDB4MDAw MDAwMzAsCisJLmdycF9iNGRzID0gMHgwMDAwMDAzMCwKKwkuZ3JwX2I1ZHMgPSAweDAwMDAwMDMw LAorCS5ncnBfYjZkcyA9IDB4MDAwMDAwMzAsCisJLmdycF9iN2RzID0gMHgwMDAwMDAzMCwKKwku Z3JwX2FkZGRzID0gMHgwMDAwMDAzMCwKKwkuZ3JwX2Rkcm1vZGVfY3RsID0gMHgwMDAyMDAwMCwK KwkuZ3JwX2RkcnBrZSA9IDB4MDAwMDAwMDAsCisJLmdycF9kZHJtb2RlID0gMHgwMDAyMDAwMCwK KwkuZ3JwX2N0bGRzID0gMHgwMDAwMDAzMCwKKwkuZ3JwX2Rkcl90eXBlID0gMHgwMDBDMDAwMCwK K307CisKK3N0YXRpYyB2b2lkIHNwbF9pbXg2cV9kcmFtX2luaXQoY29uc3Qgc3RydWN0IG14Nl9k ZHJfc3lzaW5mbyAqc2ksCisJCQkJY29uc3Qgc3RydWN0IG14Nl9tbWRjX2NhbGlicmF0aW9uICpj YiwKKwkJCQljb25zdCBzdHJ1Y3QgbXg2X2RkcjNfY2ZnICpjZmcpCit7CisJbXg2ZHFfZHJhbV9p b2NmZyg2NCwgJmRkcl9pb211eF9xLCAmZ3JwX2lvbXV4X3EpOworCW14Nl9kcmFtX2NmZyhzaSwg Y2IsIGNmZyk7CisJX191ZGVsYXkoMTAwKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisv KgorICogRGV2aWNlIEluZm9ybWF0aW9uOiBWYXJpZXMgcGVyIEREUjMgcGFydCBudW1iZXIgYW5k IHNwZWVkIGdyYWRlCisgKiBOb3RlOiB0aGlzIFNEUkFNIHR5cGUgaXMgdXNlZCBvbiB0aGUgIkxv dyBDb3N0IiB2YXJpYW50CisgKgorICogTWljcm9uIE1UNDFLMTI4TTE2SlQtMTI1IElUOksgLT4g IDIgR0JpdCA9IDE2IE1lZyB4IDE2IHggOCBiYW5rcworICoKKyAqIFNwZWVkIEdyYWRlICAgRGF0 YSBSYXRlIChNVC9zKSAgdFJDRC10UlAtQ0wgICB0UkNEKG5zKSAgdFJQKG5zKSAgQ0wobnMpCisg KiAgICAtMTI1IMK5wrIgICAgICAgMTYwMCAgICAgICAgICAgIDExLTExLTExICAgICAgMTMuNzUg ICAgIDEzLjc1ICAgMTMuNzUKKyAqICAgICAgICAgICAgICAgKD04MDAgTUh6KQorICoKKyAqIMK5 IEJhY2t3YXJkIGNvbXBhdGlibGUgdG8gMTA2NiAoPTUzMyBNSHopLCBDTCA9IDcKKyAqIMKyIEJh Y2t3YXJkIGNvbXBhdGlibGUgdG8gMTMzMyAoPTY2NyBNSHopLCBDTCA9IDkKKyAqCisgKiBNZW1v cnkgY29uZmlndXJhdGlvbiB1c2VkIGJ5IHZhcmlhbnQKKyAqIC0gIkxvdyBDb3N0IiwgMzIgYml0 IGRhdGEgYnVzLCA4MDAgTUh6LCA1MTIgTWlCIG1lbW9yeQorICovCitzdGF0aWMgY29uc3Qgc3Ry dWN0IG14Nl9kZHIzX2NmZyBza292X2lteDZfY2ZnXzJ4MTI4TWJfODAwTUh6ID0geworCS5tZW1f c3BlZWQgPSA4MDAsCisJLmRlbnNpdHkgPSAyLCAvKiBHaUJpdCAqLworCS53aWR0aCA9IDE2LCAv KiAxNiBiaXQgZGF0YSBwZXIgZGV2aWNlICovCisJLmJhbmtzID0gOCwKKwkucm93YWRkciA9IDE0 LCAvKiAxNiBrICovCisJLmNvbGFkZHIgPSAxMCwgLyogMSBrICovCisJLnBhZ2VzeiA9IDIsIC8q IFtraUJdICovCisJLnRyY2QgPSAxMzc1LCAvKiAxMy43NSBucyA9IDExIGNsb2NrcyBAIDEuNiBH SHogKi8KKwkudHJjbWluID0gNDg3NSwgLyogNDguNzUgbnMgPSAzOSBjbG9ja3MgQCAxLjYgR0h6 ICovCisJLnRyYXNtaW4gPSAzNTAwLCAvKiAzNSBucyA9IDI4IGNsb2NrcyBAIDEuNiBHSHogKi8K KwkuU1JUID0gMCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2X2Rkcl9zeXNpbmZvIHNr b3ZfaW14Nl9zeXNpbmZvXzJ4MTI4TWJfODAwTUh6ID0geworCS5kc2l6ZSA9IDEsIC8qIDMyIGJp dCB3aWRlID0gMiBkZXZpY2VzLCAxNiBiaXQgZWFjaCAqLworCS5jc19kZW5zaXR5ID0gNCwgLyog dHdvIDIgR0JpdCBkZXZpY2VzIGNvbm5lY3RlZCAqLworCS5uY3MgPSAxLCAvKiBvbmUgQ1MgbGlu ZSBmb3IgYWxsIGRldmljZXMgKi8KKwkuY3MxX21pcnJvciA9IDEsIC8qIFRPRE8gKi8KKwkuYmlf b24gPSAxLCAvKiBUT0RPICovCisJLnJ0dF9ub20gPSAxLCAvKiBNWDZfTU1EQ19QMF9NUE9EVENU UkwgLT4gMHgwMDAyMjIyNyAqLworCS5ydHRfd3IgPSAwLCAvKiBpcyBMV19FTiBpcyAwIGluIHRo ZWlyIGNvZGUgKi8KKwkucmFsYXQgPSA1LCAvKiBUT0RPICovCisJLndhbGF0ID0gMSwgLyogVE9E TyAqLworCS5taWYzX21vZGUgPSAzLCAvKiBUT0RPICovCisJLnJzdF90b19ja2UgPSAweDIzLCAv KiB1c2VkIGluIHRoZWlyIGNvZGUgYXMgd2VsbCAqLworCS5zZGVfdG9fcnN0ID0gMHgxMCwgLyog dXNlZCBpbiB0aGVpciBjb2RlIGFzIHdlbGwgKi8KKwkucGRfZmFzdF9leGl0ID0gMCwgLyogVE9E TyAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBteDZfbW1kY19jYWxpYnJhdGlvbiBza292 X2lteDZfY2FsaWJfMngxMjhNYl84MDBNSHogPSB7CisJLnAwX21wd2xkZWN0cmwwID0gMHgwMDQw MDAzQywKKwkucDBfbXB3bGRlY3RybDEgPSAweDAwMzIwMDNFLAorCS5wMF9tcGRnY3RybDAgPSAw eDQyMzUwMjMxLAorCS5wMF9tcGRnY3RybDEgPSAweDAyMUEwMjE4LAorCS5wMF9tcHJkZGxjdGwg PSAweDRCNEI0RTQ5LAorCS5wMF9tcHdyZGxjdGwgPSAweDNGM0YzMDM1LAorfTsKKworLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2c2RsX2lvbXV4X2Rkcl9y ZWdzIGRkcl9pb211eF9zID0geworCS5kcmFtX3NkcXMwID0gMHgwMDAwMDAzMCwKKwkuZHJhbV9z ZHFzMSA9IDB4MDAwMDAwMzAsCisJLmRyYW1fc2RxczIgPSAweDAwMDAwMDMwLAorCS5kcmFtX3Nk cXMzID0gMHgwMDAwMDAzMCwKKwkuZHJhbV9zZHFzNCA9IDB4MDAwMDAwMzAsCisJLmRyYW1fc2Rx czUgPSAweDAwMDAwMDMwLAorCS5kcmFtX3NkcXM2ID0gMHgwMDAwMDAzMCwKKwkuZHJhbV9zZHFz NyA9IDB4MDAwMDAwMzAsCisJLmRyYW1fZHFtMCA9IDB4MDAwMjAwMzAsCisJLmRyYW1fZHFtMSA9 IDB4MDAwMjAwMzAsCisJLmRyYW1fZHFtMiA9IDB4MDAwMjAwMzAsCisJLmRyYW1fZHFtMyA9IDB4 MDAwMjAwMzAsCisJLmRyYW1fZHFtNCA9IDB4MDAwMjAwMzAsCisJLmRyYW1fZHFtNSA9IDB4MDAw MjAwMzAsCisJLmRyYW1fZHFtNiA9IDB4MDAwMjAwMzAsCisJLmRyYW1fZHFtNyA9IDB4MDAwMjAw MzAsCisJLmRyYW1fY2FzID0gMHgwMDAyMDAzMCwKKwkuZHJhbV9yYXMgPSAweDAwMDIwMDMwLAor CS5kcmFtX3NkY2xrXzAgPSAweDAwMDIwMDMwLAorCS5kcmFtX3NkY2xrXzEgPSAweDAwMDIwMDMw LAorCS5kcmFtX3NkY2tlMCA9IDB4MDAwMDMwMDAsCisJLmRyYW1fc2Rja2UxID0gMHgwMDAwMzAw MCwKKwkuZHJhbV9yZXNldCA9IDB4MDAwMjAwMzAsCisJLmRyYW1fc2RiYTIgPSAweDAwMDAwMDAw LAorCS5kcmFtX3Nkb2R0MCA9IDB4MDAwMDMwMzAsCisJLmRyYW1fc2RvZHQxID0gMHgwMDAwMzAz MCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXg2c2RsX2lvbXV4X2dycF9yZWdzIGdycF9p b211eF9zID0geyAvKiBUT0RPICovCisJLmdycF9iMGRzID0gMHgwMDAwMDAzMCwKKwkuZ3JwX2Ix ZHMgPSAweDAwMDAwMDMwLAorCS5ncnBfYjJkcyA9IDB4MDAwMDAwMzAsCisJLmdycF9iM2RzID0g MHgwMDAwMDAzMCwKKwkuZ3JwX2I0ZHMgPSAweDAwMDAwMDMwLAorCS5ncnBfYjVkcyA9IDB4MDAw MDAwMzAsCisJLmdycF9iNmRzID0gMHgwMDAwMDAzMCwKKwkuZ3JwX2I3ZHMgPSAweDAwMDAwMDMw LAorCS5ncnBfYWRkZHMgPSAweDAwMDAwMDMwLAorCS5ncnBfZGRybW9kZV9jdGwgPSAweDAwMDIw MDAwLAorCS5ncnBfZGRycGtlID0gMHgwMDAwMDAwMCwKKwkuZ3JwX2Rkcm1vZGUgPSAweDAwMDIw MDAwLAorCS5ncnBfY3RsZHMgPSAweDAwMDAwMDMwLAorCS5ncnBfZGRyX3R5cGUgPSAweDAwMEMw MDAwLAorfTsKKworc3RhdGljIHZvaWQgc3BsX2lteDZzZGxfZHJhbV9pbml0KGNvbnN0IHN0cnVj dCBteDZfZGRyX3N5c2luZm8gKnNpLAorCQkJCWNvbnN0IHN0cnVjdCBteDZfbW1kY19jYWxpYnJh dGlvbiAqY2IsCisJCQkJY29uc3Qgc3RydWN0IG14Nl9kZHIzX2NmZyAqY2ZnKQoreworCW14NnNk bF9kcmFtX2lvY2ZnKDY0LCAmZGRyX2lvbXV4X3MsICZncnBfaW9tdXhfcyk7CisJbXg2X2RyYW1f Y2ZnKHNpLCBjYiwgY2ZnKTsKKwlfX3VkZWxheSgxMDApOworfQorCisvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KKworI2RlZmluZSBCS0xHVF9QV1JfUEFEX0NUUkwgTVg2X1BBRF9DVExfU1BFRURfTE9X IHwgTVg2X1BBRF9DVExfRFNFXzgwb2htIHwgTVg2X1BBRF9DVExfU1JFX1NMT1cKKworc3RhdGlj IGlubGluZSB2b2lkIGluaXRfYmFja2xpZ2h0X2dwaW9zKGludCBjcHVfdHlwZSwgdW5zaWduZWQg Ym9hcmRfdmFyaWFudCkKK3sKKwl2b2lkIF9faW9tZW0gKmlvbXV4YmFzZSA9IElPTUVNKE1YNl9J T01VWENfQkFTRV9BRERSKTsKKwl2b2lkIF9faW9tZW0gKmdwaW82YmFzZSA9IElPTUVNKE1YNl9H UElPNl9CQVNFX0FERFIpOworCXZvaWQgX19pb21lbSAqZ3BpbzFiYXNlID0gSU9NRU0oTVg2X0dQ SU8xX0JBU0VfQUREUik7CisKKwkvKgorCSAqIHNpbmNlIHJldmlzaW9uIEIgYSBiYWNrbGlnaHQg c3dpdGNoIGlzIHByZXNlbnQgd2hpY2ggY2FuIGhlbHAgdG8KKwkgKiBwcmV2ZW50IGFueSBraW5k IG9mIGZsaWNrZXIgd2hlbiBzd2l0Y2hpbmcgb24gdGhlIGJvYXJkLiBVc2UgaXQuCisJICogR1BJ TzYvMjMgY29udHJvbHMgdGhlIGJhY2tsaWdodC4gSGlnaCBzd2l0Y2hlcyBvZmYgdGhlIGJhY2ts aWdodC4KKwkgKi8KKwlzd2l0Y2ggKGJvYXJkX3ZhcmlhbnQpIHsKKwljYXNlIDAgLi4uIDg6CisJ CWJyZWFrOworCWRlZmF1bHQ6CisJCWlteDZfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGdwaW82YmFz ZSwgMjMsIDEpOworCisJCXN3aXRjaCAoY3B1X3R5cGUpIHsKKwkJY2FzZSBJTVg2X0NQVVRZUEVf SU1YNlM6CisJCWNhc2UgSU1YNl9DUFVUWVBFX0lNWDZETDoKKwkJCXdyaXRlbChJT01VWF9DT05G SUdfU0lPTiB8IDB4MDUsIGlvbXV4YmFzZSArIDB4MkQwKTsKKwkJCXdyaXRlbChCS0xHVF9QV1Jf UEFEX0NUUkwsIGlvbXV4YmFzZSArIDB4NkI4KTsKKwkJCWJyZWFrOworCQljYXNlIElNWDZfQ1BV VFlQRV9JTVg2RDoKKwkJY2FzZSBJTVg2X0NQVVRZUEVfSU1YNlE6CisJCQl3cml0ZWwoSU9NVVhf Q09ORklHX1NJT04gfCAweDA1LCBpb211eGJhc2UgKyAweDA2OCk7CisJCQl3cml0ZWwoQktMR1Rf UFdSX1BBRF9DVFJMLCBpb211eGJhc2UgKyAweDM3Qyk7CisJCQlicmVhazsKKwkJfQorCX0KKwor CS8qCisJICogc3dpdGNoIGJyaWdodG5lc3MgdG8gdGhlIGxvd2VzdCBhdmFpbGFibGUgdmFsdWUu IFRoaXMgaXMgd2hhdCB3ZQorCSAqIGNhbiBkbyBmb3IgcmV2aXNpb24gQSBib2FyZHMKKwkgKiBH UElPMS8xIGNvbnRyb2xzICh2aWEgUFdNKSB0aGUgYnJpZ2h0bmVzcy4gQSBzdGF0aWMgbG93IG1l YW5zCisJICogYSB2ZXJ5IGRhcmsgYmFja2xpZ2h0CisJICovCisJaW14Nl9ncGlvX2RpcmVjdGlv bl9vdXRwdXQoZ3BpbzFiYXNlLCAxLCAwKTsKKworCXN3aXRjaCAoY3B1X3R5cGUpIHsKKwljYXNl IElNWDZfQ1BVVFlQRV9JTVg2UzoKKwljYXNlIElNWDZfQ1BVVFlQRV9JTVg2REw6CisJCXdyaXRl bChJT01VWF9DT05GSUdfU0lPTiB8IDB4MDUsIGlvbXV4YmFzZSArIDB4MjEwKTsKKwkJd3JpdGVs KEJLTEdUX1BXUl9QQURfQ1RSTCwgaW9tdXhiYXNlICsgMHg1RTApOworCQlicmVhazsKKwljYXNl IElNWDZfQ1BVVFlQRV9JTVg2RDoKKwljYXNlIElNWDZfQ1BVVFlQRV9JTVg2UToKKwkJd3JpdGVs KElPTVVYX0NPTkZJR19TSU9OIHwgMHgwNSwgaW9tdXhiYXNlICsgMHgyMjQpOworCQl3cml0ZWwo QktMR1RfUFdSX1BBRF9DVFJMLCBpb211eGJhc2UgKyAweDVGNCk7CisJCWJyZWFrOworCX0KK30K KworI2RlZmluZSBMRURfUEFEX0NUUkwgTVg2X1BBRF9DVExfU1BFRURfTE9XIHwgTVg2X1BBRF9D VExfRFNFXzI0MG9obSB8IE1YNl9QQURfQ1RMX1NSRV9TTE9XCisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBzZXR1cF9sZWRzKGludCBjcHVfdHlwZSkKK3sKKwl2b2lkIF9faW9tZW0gKmlvbXV4YmFzZSA9 IElPTUVNKE1YNl9JT01VWENfQkFTRV9BRERSKTsKKwl2b2lkIF9faW9tZW0gKmdwaW9iYXNlID0g SU9NRU0oTVg2X0dQSU8xX0JBU0VfQUREUik7CisKKwlzd2l0Y2ggKGNwdV90eXBlKSB7CisJY2Fz ZSBJTVg2X0NQVVRZUEVfSU1YNlM6CisJY2FzZSBJTVg2X0NQVVRZUEVfSU1YNkRMOgorCQl3cml0 ZWwoMHgwNSwgaW9tdXhiYXNlICsgMHgyMEMpOyAvKiBMRUQxIChHUElPMCkgKi8KKwkJd3JpdGVs KExFRF9QQURfQ1RSTCwgaW9tdXhiYXNlICsgMHg1REMpOworCQl3cml0ZWwoMHgwNSwgaW9tdXhi YXNlICsgMHgyMjQpOyAvKiBMRUQyIChHUElPMikgKi8KKwkJd3JpdGVsKExFRF9QQURfQ1RSTCwg aW9tdXhiYXNlICsgMHg1RjQpOworCQl3cml0ZWwoMHgwNSwgaW9tdXhiYXNlICsgMHgyMkMpOyAv KiBMRUQzIChHUElPNCkgKi8KKwkJd3JpdGVsKExFRF9QQURfQ1RSTCwgaW9tdXhiYXNlICsgMHg1 RkMpOworCQlicmVhazsKKwljYXNlIElNWDZfQ1BVVFlQRV9JTVg2RDoKKwljYXNlIElNWDZfQ1BV VFlQRV9JTVg2UToKKwkJd3JpdGVsKDB4MDUsIGlvbXV4YmFzZSArIDB4MjIwKTsgLyogTEVEMSAo R1BJTzApICovCisJCXdyaXRlbChMRURfUEFEX0NUUkwsIGlvbXV4YmFzZSArIDB4NWYwKTsKKwkJ d3JpdGVsKDB4MDUsIGlvbXV4YmFzZSArIDB4MjM0KTsgLyogTEVEMiAoR1BJTzIpICovCisJCXdy aXRlbChMRURfUEFEX0NUUkwsIGlvbXV4YmFzZSArIDB4NjA0KTsKKwkJd3JpdGVsKDB4MDUsIGlv bXV4YmFzZSArIDB4MjM4KTsgLyogTEVEMyAoR1BJTzQpICovCisJCXdyaXRlbChMRURfUEFEX0NU UkwsIGlvbXV4YmFzZSArIDB4NjA4KTsKKwkJYnJlYWs7CisJfQorCisJLyogVHVybiBvZmYgYWxs IExFRFMgKi8KKwlpbXg2X2dwaW9fZGlyZWN0aW9uX291dHB1dChncGlvYmFzZSwgMSwgMCk7CisJ aW14Nl9ncGlvX2RpcmVjdGlvbl9vdXRwdXQoZ3Bpb2Jhc2UsIDQsIDApOworCWlteDZfZ3Bpb19k aXJlY3Rpb25fb3V0cHV0KGdwaW9iYXNlLCAxNiwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBzZXR1cF91YXJ0KGludCBjcHVfdHlwZSkKK3sKKwl2b2lkIF9faW9tZW0gKmlvbXV4YmFzZSA9 IElPTUVNKE1YNl9JT01VWENfQkFTRV9BRERSKTsKKworCS8qIFVBUlQgVHhEIG91dHB1dCBpcyBw aW4gRUlNL0QyNiwgZS5nLiBVQVJUIGlzIGluIERURSBtb2RlICovCisJc3dpdGNoIChjcHVfdHlw ZSkgeworCWNhc2UgSU1YNl9DUFVUWVBFX0lNWDZTOgorCWNhc2UgSU1YNl9DUFVUWVBFX0lNWDZE TDoKKwkJd3JpdGVsKDB4MCwgaW9tdXhiYXNlICsgMHg5MDQpOyAvKiAgSU9NVVhDX1VBUlQyX1VB UlRfUlhfREFUQV9TRUxFQ1RfSU5QVVQgKi8KKwkJd3JpdGVsKDB4NCwgaW9tdXhiYXNlICsgMHgx NmMpOyAvKiAgSU9NVVhDX1NXX01VWF9DVExfUEFEX0VJTV9EQVRBMjYgKi8KKwkJYnJlYWs7CisJ Y2FzZSBJTVg2X0NQVVRZUEVfSU1YNkQ6CisJY2FzZSBJTVg2X0NQVVRZUEVfSU1YNlE6CisJCXdy aXRlbCgweDAsIGlvbXV4YmFzZSArIDB4OTI4KTsgLyogIElPTVVYQ19VQVJUMl9VQVJUX1JYX0RB VEFfU0VMRUNUX0lOUFVUICovCisJCXdyaXRlbCgweDQsIGlvbXV4YmFzZSArIDB4MGJjKTsgLyog IElPTVVYQ19TV19NVVhfQ1RMX1BBRF9FSU1fREFUQTI2ICovCisJCWJyZWFrOworCX0KKworCWlt eDZfdW5nYXRlX2FsbF9wZXJpcGhlcmFscygpOworCWlteDZfdWFydF9zZXR1cChJT01FTShNWDZf VUFSVDJfQkFTRV9BRERSKSk7CisJcGJsX3NldF9wdXRjKGlteF91YXJ0X3B1dGMsIElPTUVNKE1Y Nl9VQVJUMl9CQVNFX0FERFIpKTsKKworCXByX2RlYnVnKCJcbiIpOworfQorCisvKgorICogSGFy ZHdhcmUgbWFya2VkIGJvYXJkIHJldmlzaW9ucyBhbmQgZGVwbG95bWVudHMKKyAqCisgKiAgIGNv dW50ICAgICAgYm9hcmQgICAgcmFtICAgICAgIGZsYXNoICAgICAgIENQVQorICogICAgICAgICAg ICAgICByZXYuCisgKiAwMDAwMDAwMCAgICAgICBBICAgIDEwMjQgTWlCICAgMTAyNCBNaUIgICAg IGkuTVg2UQorICogMDAwMDAwMDEgICAgICAgQSAgICAgNTEyIE1pQiAgICAyNTYgTWlCICAgICBp Lk1YNlMKKyAqIDAwMDAwMDEwICAgICAgIEEgICAgMTAyNCBNaUIgICAgNTEyIE1pQiAgICAgaS5N WDZRCisgKiAwMDAwMDAxMSAgICAgICAtLS0tIG5vdCBkZWZpbmVkIC0tLS0KKyAqIDAwMDAwMTAw ICAgICAgIEEgICAgIDUxMiBNaUIgICAgMjU2IE1pQiAgICAgaS5NWDZTCisgKiAwMDAwMDEwMSAg ICAgICAtLS0tIG5vdCBkZWZpbmVkIC0tLS0KKyAqIDAwMDAwMTEwICAgICAgIC0tLS0gbm90IGRl ZmluZWQgLS0tLQorICogMDAwMDAxMTEgICAgICAgLS0tLSBub3QgZGVmaW5lZCAtLS0tCisgKiAw MDAwMTAwMCAgICAgICBBICAgIDEwMjQgTWlCICAgIDUxMiBNaUIgICAgIGkuTVg2UQorICogMDAw MDEwMDEgICAgICAgQiAgICAgMjU2IE1pQiAgICAgMTYgTWlCICAgICBpLk1YNlMKKyAqIDAwMDAx MDEwICAgICAgIEIgICAgIDI1NiBNaUIgICAgMjU2IE1pQiAgICAgaS5NWDZTCisgKiAwMDAwMTAx MSAgICAgICBCICAgIDEwMjQgTWlCICAgIDI1NiBNaUIgICAgIGkuTVg2UQorICogMDAwMDExMDAg ICAgICAgQiAgICAyMDQ4IE1pQiAgICAgIDggR2lCICAgICBpLk1YNlEKKyAqIDAwMDAxMTAxICAg ICAgIEMgICAgIDI1NiBNaUIgICAgMjU2IE1pQiAgICAgaS5NWDZTCisgKiAwMDAwMTExMCAgICAg ICBDICAgIDEwMjQgTWlCICAgIDI1NiBNaUIgICAgIGkuTVg2UQorICogMDAwMDExMTEgICAgICAg QyAgICAgNTEyIE1pQiAgICAyNTYgTWlCICAgICBpLk1YNlMKKyAqIDAwMDEwMDAwICAgICAgIEMg ICAgIDUxMiBNaUIgICAgICA0IEdpQiAgICAgaS5NWDZTCisgKiAwMDAxMDAwMSAgICAgICBDICAg IDIwNDggTWlCICAgICAgOCBHaUIgICAgIGkuTVg2UQorICogMDAwMTAwMTAgICAgICAgQyAgICA0 MDk2IE1pQiAgICAgMTYgR2lCICAgICBpLk1YNlErCisgKiAwMDAxMDAxMSAgICAgICBDICAgICA1 MTIgTWlCICAgICAgMiBHaUIgICAgIGkuTVg2UworICogMDAwMTAxMDAgICAgICAgQyAgICAxMDI0 IE1pQiAgICAgIDQgR2lCICAgICBpLk1YNlEKKyAqIDAwMDEwMTAxICAgICAgIEQgICAgIDUxMiBN aUIgICAgICAyIEdJQiAgICAgaS5NWDZTCisgKiAwMDAxMDExMCAgICAgICBEICAgIDEwMjQgTWlC ICAgICAgNCBHSUIgICAgIGkuTVg2UQorICogMDAwMTAxMTEgICAgICAgLS0tLSBub3QgZGVmaW5l ZCAtLS0tCisgKiAwMDAxMTAwMCAgICAgICBFICAgIDEwMjQgTWlCICAgICAgNCBHSUIgICAgIGku TVg2UQorICoKKyAqIFRoaXMgcm91dGluZSBkb2VzIG5vdCByZXR1cm4gaWYgc3RhcnRpbmcgdGhl IGltYWdlIGZyb20gU0QgY2FyZCBvciBOT1IKKyAqIHdhcyBzdWNjZXNzZnVsLiBJdCByZXN0YXJ0 cyBza292X2lteDZfc3RhcnQoKSBpbnN0ZWFkCisgKi8KK3N0YXRpYyB2b2lkIHNrb3ZfaW14Nl9p bml0KGludCBjcHVfdHlwZSwgdW5zaWduZWQgYm9hcmRfdmFyaWFudCkKK3sKKwllbnVtIGJvb3Rz b3VyY2UgYm9vdHNyYzsKKwlpbnQgaW5zdGFuY2U7CisKKwlzd2l0Y2ggKGJvYXJkX3ZhcmlhbnQp IHsKKwljYXNlIDEyOiAvKiBQMiBpLk1YNlEsIG1heCBwZXJmb3JtYW5jZSAqLworCQlpZiAoY3B1 X3R5cGUgIT0gSU1YNl9DUFVUWVBFX0lNWDZRKSB7CisJCQlwcl9lcnIoIkludmFsaWQgU29DISBp Lk1YNlEgZXhwZWN0ZWRcbiIpOworCQkJcmV0dXJuOworCQl9CisJCXByX2RlYnVnKCJJbml0aWFs aXppbmcgYSBQMiBtYXggcGVyZm9ybWFuY2Ugc3lzdGVtLi4uXG4iKTsKKwkJc3BsX2lteDZxX2Ry YW1faW5pdCgmc2tvdl9pbXg2X3N5c2luZm9fNHgyNTZNYl8xMDY2TUh6LAorCQkJCQkmc2tvdl9p bXg2X2NhbGliXzR4MjU2TWJfMTA2Nk1IeiwKKwkJCQkJJnNrb3ZfaW14Nl9jZmdfNHgyNTZNYl8x MDY2TUh6KTsKKwkJYnJlYWs7CisJY2FzZSAxODogLyogaS5NWDZRKyAqLworCQlpZiAoY3B1X3R5 cGUgIT0gSU1YNl9DUFVUWVBFX0lNWDZRKSB7CisJCQlwcl9lcnIoIkludmFsaWQgU29DISBpLk1Y NlEgZXhwZWN0ZWRcbiIpOworCQkJcmV0dXJuOworCQl9CisJCXByX2RlYnVnKCJJbml0aWFsaXpp bmcgYm9hcmQgdmFyaWFudCAxOFxuIik7CisJCXNwbF9pbXg2cV9kcmFtX2luaXQoJnNrb3ZfaW14 Nl9zeXNpbmZvXzR4NTEyTWJfMTA2Nk1IeiwKKwkJCQkJJnNrb3ZfaW14Nl9jYWxpYl80eDUxMk1i XzEwNjZNSHosCisJCQkJCSZza292X2lteDZfY2ZnXzR4NTEyTWJfMTA2Nk1Ieik7CisJCWJyZWFr OworCWNhc2UgMTk6IC8qIGkuTVg2UyAiU29sb19SNTEyTV9GMkciICovCisJCWlmIChjcHVfdHlw ZSAhPSBJTVg2X0NQVVRZUEVfSU1YNlMpIHsKKwkJCXByX2VycigiSW52YWxpZCBTb0MhIGkuTVg2 UyBleHBlY3RlZFxuIik7CisJCQlyZXR1cm47CisJCX0KKwkJcHJfZGVidWcoIkluaXRpYWxpemlu ZyBib2FyZCB2YXJpYW50IDE5XG4iKTsKKwkJc3BsX2lteDZzZGxfZHJhbV9pbml0KCZza292X2lt eDZfc3lzaW5mb18yeDEyOE1iXzgwME1IeiwKKwkJCQkJJnNrb3ZfaW14Nl9jYWxpYl8yeDEyOE1i XzgwME1IeiwKKwkJCQkJJnNrb3ZfaW14Nl9jZmdfMngxMjhNYl84MDBNSHopOworCQlicmVhazsK KwljYXNlIDIwOiAvKiBpLk1YNlEsICJRdWFkX1IxR19GMkciICovCisJCWlmIChjcHVfdHlwZSAh PSBJTVg2X0NQVVRZUEVfSU1YNlEpIHsKKwkJCXByX2VycigiSW52YWxpZCBTb0MhIGkuTVg2USBl eHBlY3RlZFxuIik7CisJCQlyZXR1cm47CisJCX0KKwkJcHJfZGVidWcoIkluaXRpYWxpemluZyBi b2FyZCB2YXJpYW50IDIwXG4iKTsKKwkJc3BsX2lteDZxX2RyYW1faW5pdCgmc2tvdl9pbXg2X3N5 c2luZm9fNHgxMjhNYl8xMDY2TUh6LAorCQkJCQkmc2tvdl9pbXg2X2NhbGliXzR4MTI4TWJfMTA2 Nk1IeiwKKwkJCQkJJnNrb3ZfaW14Nl9jZmdfNHgxMjhNYl8xMDY2TUh6KTsKKwkJYnJlYWs7CisJ Y2FzZSAyMTogLyogaS5NWDZTICJTb2xvX1I1MTJNX0YyRyIgKi8KKwkJaWYgKGNwdV90eXBlICE9 IElNWDZfQ1BVVFlQRV9JTVg2UykgeworCQkJcHJfZXJyKCJJbnZhbGlkIFNvQyEgaS5NWDZTIGV4 cGVjdGVkXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCQlwcl9kZWJ1ZygiSW5pdGlhbGl6aW5nIGJv YXJkIHZhcmlhbnQgMjFcbiIpOworCQlzcGxfaW14NnNkbF9kcmFtX2luaXQoJnNrb3ZfaW14Nl9z eXNpbmZvXzJ4MTI4TWJfODAwTUh6LAorCQkJCQkmc2tvdl9pbXg2X2NhbGliXzJ4MTI4TWJfODAw TUh6LAorCQkJCQkmc2tvdl9pbXg2X2NmZ18yeDEyOE1iXzgwME1Ieik7CisJCWJyZWFrOworCWNh c2UgMjI6IC8qIGkuTVg2USwgIlF1YWRfUjFHX0Y0RyIgKi8KKwkJaWYgKGNwdV90eXBlICE9IElN WDZfQ1BVVFlQRV9JTVg2USkgeworCQkJcHJfZXJyKCJJbnZhbGlkIFNvQyEgaS5NWDZRIGV4cGVj dGVkXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCQlwcl9kZWJ1ZygiSW5pdGlhbGl6aW5nIGJvYXJk IHZhcmlhbnQgMjJcbiIpOworCQlzcGxfaW14NnFfZHJhbV9pbml0KCZza292X2lteDZfc3lzaW5m b180eDEyOE1iXzEwNjZNSHosCisJCQkJCSZza292X2lteDZfY2FsaWJfNHgxMjhNYl8xMDY2TUh6 LAorCQkJCQkmc2tvdl9pbXg2X2NmZ180eDEyOE1iXzEwNjZNSHopOworCQlicmVhazsKKwljYXNl IDI0OiAvKiBpLk1YNlEsICJRdWFkX1IxR19GNEciICovCisJCWlmIChjcHVfdHlwZSAhPSBJTVg2 X0NQVVRZUEVfSU1YNlEpIHsKKwkJCXByX2VycigiSW52YWxpZCBTb0MhIGkuTVg2USBleHBlY3Rl ZFxuIik7CisJCQlyZXR1cm47CisJCX0KKwkJcHJfZGVidWcoIkluaXRpYWxpemluZyBib2FyZCB2 YXJpYW50IDI0XG4iKTsKKwkJc3BsX2lteDZxX2RyYW1faW5pdCgmc2tvdl9pbXg2X3N5c2luZm9f NHgxMjhNYl8xMDY2TUh6LAorCQkJCQkmc2tvdl9pbXg2X2NhbGliXzR4MTI4TWJfMTA2Nk1IeiwK KwkJCQkJJnNrb3ZfaW14Nl9jZmdfNHgxMjhNYl8xMDY2TUh6KTsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJcHJfZXJyKCJVbnN1cHBvcnRlZCBib2FyZCB2YXJpYW50OiAweCV4XG4iLCBib2FyZF92 YXJpYW50KTsKKwkJLyogZG9uJ3QgY29udGludWUgKi8KKwkJd2hpbGUoMSk7CisJCWJyZWFrOwor CX0KKworCWlteDZfZ2V0X2Jvb3Rfc291cmNlKCZib290c3JjLCAmaW5zdGFuY2UpOworCWlmIChi b290c3JjID09IEJPT1RTT1VSQ0VfU1BJX05PUikgeworCQlwcl9pbmZvKCJMb2FkaW5nIGJvb3Rs b2FkZXIgaW1hZ2UgZnJvbSBTUEkgZmxhc2guLi4iKTsKKwkJaW14Nl9zcGlfc3RhcnRfaW1hZ2Uo MCk7CisJfSBlbHNlIHsKKwkJcHJfaW5mbygiTG9hZGluZyBib290bG9hZGVyIGltYWdlIGZyb20g U0QgY2FyZC4uLiIpOworCQlpbXg2X2VzZGhjX3N0YXJ0X2ltYWdlKGluc3RhbmNlKTsKKwl9Cit9 CisKK2V4dGVybiBjaGFyIF9fZHRiX3pfaW14NnFfc2tvdl9pbXg2X3N0YXJ0W107CitleHRlcm4g Y2hhciBfX2R0Yl96X2lteDZkbF9za292X2lteDZfc3RhcnRbXTsKKworLyogY2FsbGVkIHR3aWNl OiBvbmNlIGZvciBTRFJBTSBzZXR1cCBvbmx5LCBzZWNvbmQgZm9yIGRldmljZXRyZWUgc2V0dXAg Ki8KK3N0YXRpYyBub2lubGluZSB2b2lkIHNrb3ZfaW14Nl9zdGFydCh2b2lkKQoreworCWludCBj cHVfdHlwZSA9IF9faW14Nl9jcHVfdHlwZSgpOworCXVuc2lnbmVkIGJvYXJkX3ZhcmlhbnQgPSBz a292X2lteDZfZ2V0X3ZlcnNpb24oKTsKKworCXNldHVwX3VhcnQoY3B1X3R5cGUpOworCisJaWYg KGdldF9wYygpIDw9IE1YNl9NTURDX1BPUlQwMV9CQVNFX0FERFIpIHsKKwkJLyogZmlyc3QgY2Fs bDogZG8gdGhlIGxvd2xldmVsIHRoaW5ncyBmaXJzdCAqLworCQlpbml0X2JhY2tsaWdodF9ncGlv cyhjcHVfdHlwZSwgYm9hcmRfdmFyaWFudCk7CisJCXNldHVwX2xlZHMoY3B1X3R5cGUpOworCQlw cl9pbmZvKCJTdGFydGluZyB0byBpbml0IElNWDYgc3lzdGVtLi4uXG4iKTsKKwkJc2tvdl9pbXg2 X2luaXQoY3B1X3R5cGUsIGJvYXJkX3ZhcmlhbnQpOworCQlwcl9lcnIoIlVuYWJsZSB0byBzdGFy dCBib290bG9hZGVyXG4iKTsKKwkJd2hpbGUgKDEpOworCX0KKworCS8qIGJvb3QgdGhpcyBwbGF0 Zm9ybSAoc2Vjb25kIGNhbGwpICovCisJc3dpdGNoIChjcHVfdHlwZSkgeworCWNhc2UgSU1YNl9D UFVUWVBFX0lNWDZTOgorCWNhc2UgSU1YNl9DUFVUWVBFX0lNWDZETDoKKwkJcHJfZGVidWcoIlN0 YXJ0dXAgaS5NWDZTL0RMIGJhc2VkIHN5c3RlbS4uLlxuIik7CisJCWlteDZxX2JhcmVib3hfZW50 cnkoX19kdGJfel9pbXg2ZGxfc2tvdl9pbXg2X3N0YXJ0KTsKKwkJYnJlYWs7CisJY2FzZSBJTVg2 X0NQVVRZUEVfSU1YNkQ6CisJY2FzZSBJTVg2X0NQVVRZUEVfSU1YNlE6CisJCXByX2RlYnVnKCJT dGFydHVwIGkuTVg2USBiYXNlZCBzeXN0ZW0uLi5cbiIpOworCQlpbXg2cV9iYXJlYm94X2VudHJ5 KF9fZHRiX3pfaW14NnFfc2tvdl9pbXg2X3N0YXJ0KTsKKwkJYnJlYWs7CisJfQorfQorCitFTlRS WV9GVU5DVElPTihzdGFydF9pbXg2X3Nrb3ZfaW14NiwgcjAsIHIxLCByMikKK3sKKwlhcm1fY3B1 X2xvd2xldmVsX2luaXQoKTsKKworCXJlbG9jYXRlX3RvX2N1cnJlbnRfYWRyKCk7CisJc2V0dXBf YygpOworCWJhcnJpZXIoKTsKKworCXNrb3ZfaW14Nl9zdGFydCgpOworfQpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vZHRzL01ha2VmaWxlIGIvYXJjaC9hcm0vZHRzL01ha2VmaWxlCmluZGV4IGQ1ZjYx NzY4YTUuLmJiOGE1MTY0N2QgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2R0cy9NYWtlZmlsZQorKysg Yi9hcmNoL2FybS9kdHMvTWFrZWZpbGUKQEAgLTExMCw2ICsxMTAsNyBAQCBsd2wtJChDT05GSUdf TUFDSF9TT0xJRFJVTl9DVUJPWCkgKz0gZG92ZS1jdWJveC1iYi5kdGIubwogbHdsLSQoQ09ORklH X01BQ0hfU09MSURSVU5fTUlDUk9TT00pICs9IGlteDZkbC1odW1taW5nYm9hcmQuZHRiLm8gaW14 NnEtaHVtbWluZ2JvYXJkLmR0Yi5vIFwKIAkJCQlpbXg2ZGwtaHVtbWluZ2JvYXJkMi5kdGIubyBp bXg2cS1odW1taW5nYm9hcmQyLmR0Yi5vIFwKIAkJCQlpbXg2cS1oMTAwLmR0Yi5vCitsd2wtJChD T05GSUdfTUFDSF9TS09WX0lNWDYpICs9IGlteDZkbC1za292LWlteDYuZHRiLm8gaW14NnEtc2tv di1pbXg2LmR0Yi5vCiBsd2wtJChDT05GSUdfTUFDSF9TRUVFRF9PRFlTU0VZKSArPSBzdG0zMm1w MTU3Yy1vZHlzc2V5LmR0Yi5vCiBsd2wtJChDT05GSUdfTUFDSF9TVE0zMk1QMTVYWF9ES1gpICs9 IHN0bTMybXAxNTdjLWRrMi5kdGIubyBzdG0zMm1wMTU3YS1kazEuZHRiLm8KIGx3bC0kKENPTkZJ R19NQUNIX0xYQV9NQzEpICs9IHN0bTMybXAxNTdjLWx4YS1tYzEuZHRiLm8KZGlmZiAtLWdpdCBh L2FyY2gvYXJtL2R0cy9pbXg2ZGwtc2tvdi1pbXg2LmR0cyBiL2FyY2gvYXJtL2R0cy9pbXg2ZGwt c2tvdi1pbXg2LmR0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jMmRh YzY4MjA0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vZHRzL2lteDZkbC1za292LWlteDYu ZHRzCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBKdWVyZ2VuIEJvcmxl aXMsIFBlbmd1dHJvbml4IDxrZXJuZWxAcGVuZ3V0cm9uaXguZGU+CisgKgorICogVGhlIGNvZGUg Y29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiBWZXJzaW9uIDIgb3IgbGF0ZXIgYXQgdGhlIGZvbGxvd2luZyBsb2Nh dGlvbnM6CisgKgorICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ncGwtbGlj ZW5zZS5odG1sCisgKiBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvZ3BsLmh0bWwKKyAqLwor CisvZHRzLXYxLzsKKyNpbmNsdWRlIDxhcm0vaW14NmRsLmR0c2k+CisjaW5jbHVkZSAiaW14NmRs LmR0c2kiCisjaW5jbHVkZSAiaW14NnFkbC1za292LWlteDYuZHRzaSIKKworLyB7CisJbW9kZWwg PSAiU2tvdiBJTVg2IjsKKwljb21wYXRpYmxlID0gInNrb3YsaW14NiIsICJmc2wsaW14NmRsIjsK KworCWNob3NlbiB7CisJCXN0ZG91dC1wYXRoID0gJnVhcnQyOworCX07Cit9OwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vZHRzL2lteDZxLXNrb3YtaW14Ni5kdHMgYi9hcmNoL2FybS9kdHMvaW14NnEt c2tvdi1pbXg2LmR0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZWE4 NGNiNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vZHRzL2lteDZxLXNrb3YtaW14Ni5k dHMKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEp1ZXJnZW4gQm9ybGVp cywgUGVuZ3V0cm9uaXggPGtlcm5lbEBwZW5ndXRyb25peC5kZT4KKyAqCisgKiBUaGUgY29kZSBj b250YWluZWQgaGVyZWluIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqIFZlcnNpb24gMiBvciBsYXRlciBhdCB0aGUgZm9sbG93aW5nIGxvY2F0 aW9uczoKKyAqCisgKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2dwbC1saWNl bnNlLmh0bWwKKyAqIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbAorICovCisK Ky9kdHMtdjEvOworI2luY2x1ZGUgPGFybS9pbXg2cS5kdHNpPgorI2luY2x1ZGUgImlteDZxLmR0 c2kiCisjaW5jbHVkZSAiaW14NnFkbC1za292LWlteDYuZHRzaSIKKworLyB7CisJbW9kZWwgPSAi U2tvdiBJTVg2IjsKKwljb21wYXRpYmxlID0gInNrb3YsaW14NiIsICJmc2wsaW14NnEiOworCisJ Y2hvc2VuIHsKKwkJc3Rkb3V0LXBhdGggPSAmdWFydDI7CisJfTsKK307CisKKyZpMmMyIHsKKwlz dGF0dXMgPSAib2theSI7Cit9OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vZHRzL2lteDZxZGwtc2tv di1pbXg2LmR0c2kgYi9hcmNoL2FybS9kdHMvaW14NnFkbC1za292LWlteDYuZHRzaQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wM2YzY2IwMmZjCi0tLSAvZGV2L251bGwK KysrIGIvYXJjaC9hcm0vZHRzL2lteDZxZGwtc2tvdi1pbXg2LmR0c2kKQEAgLTAsMCArMSw1NDYg QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBKdWVyZ2VuIEJvcmxlaXMsIFBlbmd1dHJvbml4IDxr ZXJuZWxAcGVuZ3V0cm9uaXguZGU+CisgKgorICogVGhlIGNvZGUgY29udGFpbmVkIGhlcmVpbiBp cyBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlLiBZb3Ug bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBW ZXJzaW9uIDIgb3IgbGF0ZXIgYXQgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6CisgKgorICogaHR0 cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ncGwtbGljZW5zZS5odG1sCisgKiBodHRw Oi8vd3d3LmdudS5vcmcvY29weWxlZnQvZ3BsLmh0bWwKKyAqLworCisjaW5jbHVkZSA8ZHQtYmlu ZGluZ3MvZ3Bpby9ncGlvLmg+CisKKy8geworCWFsaWFzZXMgeworCQlzdGF0ZSA9ICZzdGF0ZTsK Kwl9OworCisJY2hvc2VuIHsKKwkJZW52aXJvbm1lbnQtc2QgeworCQkJY29tcGF0aWJsZSA9ICJi YXJlYm94LGVudmlyb25tZW50IjsKKwkJCWRldmljZS1wYXRoID0gJnVzZGhjMywgInBhcnRuYW1l OjIiOworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKworCQllbnZpcm9ubWVudC1zcGlu b3IgeworCQkJY29tcGF0aWJsZSA9ICJiYXJlYm94LGVudmlyb25tZW50IjsKKwkJCWRldmljZS1w YXRoID0gJmJhcmVib3hfZW52OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKwl9Owor CisJbGVkcyB7CisJCWNvbXBhdGlibGUgPSAiZ3Bpby1sZWRzIjsKKworCQlsZWQwOiBEMSB7CisJ CQlsYWJlbCA9ICJEMSI7CisJCQlncGlvcyA9IDwmZ3BpbzEgMiAwPjsKKwkJCWRlZmF1bHQtc3Rh dGUgPSAib24iOworCQkJbGludXgsZGVmYXVsdC10cmlnZ2VyID0gImhlYXJ0YmVhdCI7CisJCX07 CisKKwkJbGVkMTogRDIgeworCQkJbGFiZWwgPSAiRDIiOworCQkJZ3Bpb3MgPSA8JmdwaW8xIDAg MD47CisJCQlkZWZhdWx0LXN0YXRlID0gIm9mZiI7CisJCX07CisKKwkJbGVkMjogRDMgeworCQkJ bGFiZWwgPSAiRDMiOworCQkJZ3Bpb3MgPSA8JmdwaW8xIDQgMD47CisJCQlkZWZhdWx0LXN0YXRl ID0gIm9uIjsKKwkJfTsKKwl9OworCisJLyogU3RhdGU6IG11dGFibGUgcGFydCAqLworCXN0YXRl OiBzdGF0ZSB7CisJCW1hZ2ljID0gPDB4MzRhMGZjMjc+OworCQljb21wYXRpYmxlID0gImJhcmVi b3gsc3RhdGUiOworCQliYWNrZW5kLXR5cGUgPSAicmF3IjsKKwkJYmFja2VuZCA9IDwmc3RhdGVf c3RvcmFnZT47CisJCWJhY2tlbmQtc3RyaWRlc2l6ZSA9IDwweDQwPjsKKworCQlib290c3RhdGUg eworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQkJ c3lzdGVtMCB7IC8qIHRoZSBub2RlJ3MgbmFtZSBoZXJlIG11c3QgbWF0Y2ggdGhlIHN1Ym5vZGUn cyBuYW1lIGluIHRoZSAnYm9vdHN0YXRlJyBub2RlICovCisJCQkJI2FkZHJlc3MtY2VsbHMgPSA8 MT47CisJCQkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJCQlyZW1haW5pbmdfYXR0ZW1wdHNAMCB7 CisJCQkJCXJlZyA9IDwweDAgMHg0PjsKKwkJCQkJdHlwZSA9ICJ1aW50MzIiOworCQkJCQlkZWZh dWx0ID0gPDM+OworCQkJCX07CisJCQkJcHJpb3JpdHlANCB7CisJCQkJCXJlZyA9IDwweDQgMHg0 PjsKKwkJCQkJdHlwZSA9ICJ1aW50MzIiOworCQkJCQlkZWZhdWx0ID0gPDMwPjsKKwkJCQl9Owor CQkJfTsKKworCQkJc3lzdGVtMSB7IC8qIHRoZSBub2RlJ3MgbmFtZSBoZXJlIG11c3QgbWF0Y2gg dGhlIHN1Ym5vZGUncyBuYW1lIGluIHRoZSAnYm9vdHN0YXRlJyBub2RlICovCisJCQkJI2FkZHJl c3MtY2VsbHMgPSA8MT47CisJCQkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJCQlyZW1haW5pbmdf YXR0ZW1wdHNAOCB7CisJCQkJCXJlZyA9IDwweDggMHg0PjsKKwkJCQkJdHlwZSA9ICJ1aW50MzIi OworCQkJCQlkZWZhdWx0ID0gPDM+OworCQkJCX07CisJCQkJcHJpb3JpdHlAQyB7CisJCQkJCXJl ZyA9IDwweEMgMHg0PjsKKwkJCQkJdHlwZSA9ICJ1aW50MzIiOworCQkJCQlkZWZhdWx0ID0gPDIw PjsKKwkJCQl9OworCQkJfTsKKworCQkJbGFzdF9jaG9zZW5AMTAgeworCQkJCXJlZyA9IDwweDEw IDB4ND47CisJCQkJdHlwZSA9ICJ1aW50MzIiOworCQkJfTsKKwkJfTsKKworCQlkaXNwbGF5IHsK KwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJCXhy ZXNAMTQgeworCQkJCXJlZyA9IDwweDE0IDB4ND47CisJCQkJdHlwZSA9ICJ1aW50MzIiOworCQkJ CWRlZmF1bHQgPSA8MD47CisJCQl9OworCisJCQl5cmVzQDE4IHsKKwkJCQlyZWcgPSA8MHgxOCAw eDQ+OworCQkJCXR5cGUgPSAidWludDMyIjsKKwkJCQlkZWZhdWx0ID0gPDA+OworCQkJfTsKKwor CQkJYnJpZ2h0bmVzc0AxQyB7CisJCQkJcmVnID0gPDB4MUMgMHgxPjsKKwkJCQl0eXBlID0gInVp bnQ4IjsKKwkJCQlkZWZhdWx0ID0gPDg+OworCQkJfTsKKworCQkJZXh0ZXJuYWxAMUQgeworCQkJ CXJlZyA9IDwweDFEIDB4MT47CisJCQkJdHlwZSA9ICJ1aW50OCI7CisJCQkJZGVmYXVsdCA9IDww PjsKKwkJCX07CisJCX07CisKKwkJZXRoYWRkciB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsK KwkJCSNzaXplLWNlbGxzID0gPDE+OworCisJCQlldGgyIHsKKwkJCQlyZWcgPSA8MHgxRSAweDY+ OworCQkJCXR5cGUgPSAibWFjIjsKKwkJCQlkZWZhdWx0ID0gWzAwIDExIDIyIDMzIDQ0IDU1XTsK KwkJCX07CisJCX07CisJfTsKKworCWJhY2tsaWdodF9sY2Q6IGJhY2tsaWdodF9sY2QgeworCQlj b21wYXRpYmxlID0gInB3bS1iYWNrbGlnaHQiOworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQi OworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfYmFja2xpZ2h0PjsKKwkJcHdtcyA9IDwmcHdtMiAw IDIwMDAwIDA+OworCQlicmlnaHRuZXNzLWxldmVscyA9IDwwIDE2IDMyIDQ4IDY0IDgwIDk2IDEx MiAxMjggMTQ0IDE2MCAxNzYgMTkyIDIwOCAyMjQgMjQwIDI1NT47CisJCWRlZmF1bHQtYnJpZ2h0 bmVzcy1sZXZlbCA9IDw4PjsKKwkJZW5hYmxlLWdwaW9zID0gPCZncGlvNiAyMyBHUElPX0FDVElW RV9MT1c+OworCQlzdGF0dXMgPSAib2theSI7CisJfTsKKworCWRpc3BsYXkgeworCQlzdGF0dXMg PSAiZGlzYWJsZWQiOworCQljb21wYXRpYmxlID0gImZzbCxpbXgtcGFyYWxsZWwtZGlzcGxheSI7 CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9p cHUxXzQ+OworCQlpbnRlcmZhY2UtcGl4LWZtdCA9ICJyZ2IyNCI7CisKKwkJcG9ydCB7CisJCQlk aXNwbGF5MF9pbjogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXB1MV9kaTBf ZGlzcDA+OworCQkJfTsKKwkJfTsKKworCQlkaXNwbGF5LXRpbWluZ3MgeworCQkJbmF0aXZlLW1v ZGUgPSAmbDJydDsKKworCQkJbDJydDogbDJydCB7CisJCQkJbmF0aXZlLW1vZGU7CisJCQkJY2xv Y2stZnJlcXVlbmN5ID0gPDMzMDAwMDAwPjsKKwkJCQloYWN0aXZlID0gPDgwMD47CisJCQkJdmFj dGl2ZSA9IDw0ODA+OworCQkJCWhiYWNrLXBvcmNoID0gPDg1PjsKKwkJCQloZnJvbnQtcG9yY2gg PSA8MTEyPjsKKwkJCQl2YmFjay1wb3JjaCA9IDwyOT47CisJCQkJdmZyb250LXBvcmNoID0gPDM4 PjsKKwkJCQloc3luYy1sZW4gPSA8Mz47CisJCQkJdnN5bmMtbGVuID0gPDM+OworCQkJCXBpeGVs Y2xrLWFjdGl2ZSA9IDwxPjsKKwkJCQloc3luYy1hY3RpdmUgPSA8MD47CisJCQkJdnN5bmMtYWN0 aXZlID0gPDA+OworCQkJCWRlLWFjdGl2ZSA9IDwxPjsKKwkJCX07CisKKwkJCWw2d2hydDogbDZ3 aHJ0IHsKKwkJCQluYXRpdmUtbW9kZTsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8MzMwMDAwMDA+ OworCQkJCWhhY3RpdmUgPSA8ODAwPjsKKwkJCQl2YWN0aXZlID0gPDQ4MD47CisJCQkJaGJhY2st cG9yY2ggPSA8NDM+OworCQkJCWhmcm9udC1wb3JjaCA9IDwxNTQ+OworCQkJCXZiYWNrLXBvcmNo ID0gPDIwPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8NDc+OworCQkJCWhzeW5jLWxlbiA9IDwzPjsK KwkJCQl2c3luYy1sZW4gPSA8Mz47CisJCQkJcGl4ZWxjbGstYWN0aXZlID0gPDE+OworCQkJCWhz eW5jLWFjdGl2ZSA9IDwwPjsKKwkJCQl2c3luYy1hY3RpdmUgPSA8MD47CisJCQkJZGUtYWN0aXZl ID0gPDE+OworCQkJfTsKKwkJfTsKKwl9OworCisJcGFuZWwgeworCQljb21wYXRpYmxlID0gInNp bXBsZS1wYW5lbCI7CisJCWJhY2tsaWdodCA9IDwmYmFja2xpZ2h0X2xjZD47CisJCS8qIHBvd2Vy LXN1cHBseSA9IDwmcmVnXzNwM3Y+OyAqLworCisJCWRpc3BsYXktdGltaW5ncyB7CisJCQluYXRp dmUtbW9kZSA9ICZtaTEwMTBhaXRfMWNwMTsKKworCQkJbWkxMDEwYWl0XzFjcDE6IG1pMTAxMGFp dC0xY3AxIHsKKwkJCQluYXRpdmUtbW9kZTsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8NzAwMDAw MDA+OworCQkJCWhhY3RpdmUgPSA8MTI4MD47CisJCQkJdmFjdGl2ZSA9IDw4MDA+OworCQkJCWhi YWNrLXBvcmNoID0gPDYwPjsKKwkJCQloZnJvbnQtcG9yY2ggPSA8NjA+OworCQkJCXZiYWNrLXBv cmNoID0gPDEwPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8MTA+OworCQkJCWhzeW5jLWxlbiA9IDwx MD47CisJCQkJdnN5bmMtbGVuID0gPDY+OworCQkJCS8qIHBpeGVsY2xrLWFjdGl2ZSA9IDw+OyAq LworCQkJCWhzeW5jLWFjdGl2ZSA9IDwwPjsKKwkJCQl2c3luYy1hY3RpdmUgPSA8MD47CisJCQkJ ZGUtYWN0aXZlID0gPDE+OworCQkJfTsKKwkJfTsKKworCQlwb3J0IHsKKwkJCXBhbmVsX2luOiBl bmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZsdmRzMF9vdXQ+OworCQkJfTsKKwkJ fTsKKwl9OworfTsKKworJnB3bTIgeworCS8qIHVzZWQgZm9yIGJhY2tsaWdodCBicmlnaHRuZXNz ICovCisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxf cHdtMl8yPjsKKwlzdGF0dXMgPSAib2theSI7Cit9OworCismcHdtMyB7CisJLyogdXNlZCBmb3Ig TENEIGNvbnRyYXN0IGNvbnRyb2wgKi8KKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBp bmN0cmwtMCA9IDwmcGluY3RybF9wd20zXzI+OworCXN0YXR1cyA9ICJva2F5IjsKK307CisKKyZp MmMyIHsKKwljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKwlwaW5jdHJsLW5hbWVzID0gImRl ZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9pMmMyXzI+OworfTsKKworJmhkbWkgewor CXN0YXR1cyA9ICJva2F5IjsKKwlkZGMtaTJjLWJ1cyA9IDwmaTJjMj47Cit9OworCisvZGVsZXRl LW5vZGUvJmlwdTFfZGkwX2hkbWk7CisvZGVsZXRlLW5vZGUvJmhkbWlfbXV4XzA7CisKKyZpcHUx X2RpMF9kaXNwMCB7CisJcmVtb3RlLWVuZHBvaW50ID0gPCZkaXNwbGF5MF9pbj47Cit9OworCism aW9tdXhjIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGlu Y3RybF9ob2c+OworCisJcGluY3RybF9ob2c6IGhvZ2dycCB7CisJCS8qIHdlIG5lZWQgYSBmZXcg cGlucyBhcyBHUElPcyAqLworCQlmc2wscGlucyA9IDwKKwkJCS8qIE1NQyBJTyB2b2x0YWdlIHNl bGVjdCAqLworCQkJTVg2UURMX1BBRF9HUElPXzE4X19HUElPN19JTzEzIDB4NDAwMDAwNTgKKwkJ CS8qIE1NQyBQb3dlciBTdXBwbHkgU3dpdGNoIChzaW5jZSByZXZpc2lvbiBDKQorCQkJTVg2UURM X1BBRF9TRDNfUlNUX19HUElPN19JTzA4IDB4NDAwMDAwNTgKKwkJCS8qIEJhY2tsaWdodCBQb3dl ciBTdXBwbHkgU3dpdGNoIChzaW5jZSByZXZpc2lvbiBCKQorCQkJTVg2UURMX1BBRF9SR01JSV9U RDNfX0dQSU82X0lPMjMgMHg0MDAwMDA1OAorCQkJLyogQmFja2xpZ2h0IEJyaWdodG5lc3MgKi8K KwkJCU1YNlFETF9QQURfR1BJT18xX19HUElPMV9JTzAxIDB4NDAwMDAwNTgKKwkJCS8qIG11c3Qg YmUgaGlnaCAqLworCQkJTVg2UURMX1BBRF9FTkVUX1JYX0VSX19HUElPMV9JTzI0IDB4NDAwMDAw NTgKKwkJPjsKKwl9OworCisJcGluY3RybF91YXJ0MjogdWFydDJncnAgeworCQlmc2wscGlucyA9 IDwKKwkJCU1YNlFETF9QQURfRUlNX0QyNl9fVUFSVDJfVFhfREFUQSAweDFiMGIxCisJCQlNWDZR RExfUEFEX0VJTV9EMjdfX1VBUlQyX1JYX0RBVEEgMHgxYjBiMQorCQk+OworCX07CisKKwlwaW5j dHJsX2Vjc3BpMTogZWNzcGkxZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDZRRExfUEFEX0VJ TV9EMTdfX0VDU1BJMV9NSVNPIDB4MTAwYjEKKwkJCU1YNlFETF9QQURfRUlNX0QxOF9fRUNTUEkx X01PU0kgMHgxMDBiMQorCQkJTVg2UURMX1BBRF9FSU1fRDE2X19FQ1NQSTFfU0NMSyAweDEwMGIx CisJCQlNWDZRRExfUEFEX0VJTV9EMjRfX0dQSU8zX0lPMjQgMHg0MDAwMDA1OCAvKiBDUyMgc2ln bmFsICovCisJCT47CisJfTsKKworCS8qIHBpbnMgZm9yIGV0aDAgKi8KKwlwaW5jdHJsX2VuZXQ6 IGVuZXRncnAgeworCQlmc2wscGlucyA9IDwKKwkJCU1YNlFETF9QQURfRU5FVF9NRElPX19FTkVU X01ESU8gMHgxMDBiMAorCQkJTVg2UURMX1BBRF9FTkVUX01EQ19fRU5FVF9NREMgMHgxMDBiMAor CQkJTVg2UURMX1BBRF9FTkVUX0NSU19EVl9fRU5FVF9SWF9FTiAweDEwMGIwCisJCQlNWDZRRExf UEFEX0VORVRfVFhfRU5fX0VORVRfVFhfRU4gMHgxMDBiMAorCQkJTVg2UURMX1BBRF9FTkVUX1JY RDBfX0VORVRfUlhfREFUQTAgMHgxMDBiMAorCQkJTVg2UURMX1BBRF9FTkVUX1JYRDFfX0VORVRf UlhfREFUQTEgMHgxMDBiMAorCQkJTVg2UURMX1BBRF9FTkVUX1RYRDBfX0VORVRfVFhfREFUQTAg MHgxMDBiMAorCQkJTVg2UURMX1BBRF9FTkVUX1RYRDFfX0VORVRfVFhfREFUQTEgMHgxMDBiMAor CQkJTVg2UURMX1BBRF9HUElPXzE2X19FTkVUX1JFRl9DTEsgMHg0MDAwMDBjMAorCQk+OworCX07 CisKKwlwaW5jdHJsX3VzZGhjMzogdXNkaGMzZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDZR RExfUEFEX1NEM19DTURfX1NEM19DTUQgMHgxNzA1OQorCQkJTVg2UURMX1BBRF9TRDNfQ0xLX19T RDNfQ0xLIDB4MTAwNTkKKwkJCU1YNlFETF9QQURfU0QzX0RBVDBfX1NEM19EQVRBMCAweDE3MDU5 CisJCQlNWDZRRExfUEFEX1NEM19EQVQxX19TRDNfREFUQTEgMHgxNzA1OQorCQkJTVg2UURMX1BB RF9TRDNfREFUMl9fU0QzX0RBVEEyIDB4MTcwNTkKKwkJCU1YNlFETF9QQURfU0QzX0RBVDNfX1NE M19EQVRBMyAweDE3MDU5CisJCQlNWDZRRExfUEFEX1NEM19EQVQ0X19HUElPN19JTzAxIDB4MWIw NDAgLyogV1AgKi8KKwkJCU1YNlFETF9QQURfU0QzX0RBVDVfX0dQSU83X0lPMDAgMHgxYjA0MCAv KiBDRCAqLworCQk+OworCX07CisKKwlwaW5jdHJsX2dwbWlfbmFuZDogZ3BtaW5hbmRncnAgewor CQlmc2wscGlucyA9IDwKKwkJCU1YNlFETF9QQURfTkFOREZfQ0xFX19OQU5EX0NMRSAweGIwYjEK KwkJCU1YNlFETF9QQURfTkFOREZfQUxFX19OQU5EX0FMRSAweGIwYjEKKwkJCU1YNlFETF9QQURf TkFOREZfUkIwX19OQU5EX1JFQURZX0IgMHhiMDAwCisJCQlNWDZRRExfUEFEX05BTkRGX0NTMF9f TkFORF9DRTBfQiAweGIwYjEKKwkJCU1YNlFETF9QQURfTkFOREZfQ1MxX19OQU5EX0NFMV9CIDB4 YjBiMQorCQkJTVg2UURMX1BBRF9TRDRfQ01EX19OQU5EX1JFX0IgMHhiMGIxCisJCQlNWDZRRExf UEFEX1NENF9DTEtfX05BTkRfV0VfQiAweGIwYjEKKwkJCU1YNlFETF9QQURfTkFOREZfRDBfX05B TkRfREFUQTAwIDB4YjBiMQorCQkJTVg2UURMX1BBRF9OQU5ERl9EMV9fTkFORF9EQVRBMDEgMHhi MGIxCisJCQlNWDZRRExfUEFEX05BTkRGX0QyX19OQU5EX0RBVEEwMiAweGIwYjEKKwkJCU1YNlFE TF9QQURfTkFOREZfRDNfX05BTkRfREFUQTAzIDB4YjBiMQorCQkJTVg2UURMX1BBRF9OQU5ERl9E NF9fTkFORF9EQVRBMDQgMHhiMGIxCisJCQlNWDZRRExfUEFEX05BTkRGX0Q1X19OQU5EX0RBVEEw NSAweGIwYjEKKwkJCU1YNlFETF9QQURfTkFOREZfRDZfX05BTkRfREFUQTA2IDB4YjBiMQorCQkJ TVg2UURMX1BBRF9OQU5ERl9EN19fTkFORF9EQVRBMDcgMHhiMGIxCisJCT47CisJfTsKKworCXBp bmN0cmxfaTJjMl8yOiBpMmMyZ3JwLTIgeworCQlmc2wscGlucyA9IDwKKwkJCS8qIGludGVybmFs IDIyIGsgcHVsbCB1cCByZXF1aXJlZCAqLworCQkJTVg2UURMX1BBRF9LRVlfQ09MM19fSTJDMl9T Q0wJCTB4NDAwMUY4NzgKKwkJCS8qIGludGVybmFsIDIyIGsgcHVsbCB1cCByZXF1aXJlZCAqLwor CQkJTVg2UURMX1BBRF9LRVlfUk9XM19fSTJDMl9TREEJCTB4NDAwMUY4NzgKKwkJPjsKKwl9Owor CisJcGluY3RybF9pcHUxXzQ6IGlwdTFncnAtNCB7CisJCWZzbCxwaW5zID0gPAorCQkJTVg2UURM X1BBRF9ESTBfRElTUF9DTEtfX0lQVTFfREkwX0RJU1BfQ0xLCTB4MTAKKwkJCU1YNlFETF9QQURf REkwX1BJTjE1X19JUFUxX0RJMF9QSU4xNQkJMHgxMAorCQkJTVg2UURMX1BBRF9ESTBfUElOMl9f SVBVMV9ESTBfUElOMDIJCTB4MTAKKwkJCU1YNlFETF9QQURfREkwX1BJTjNfX0lQVTFfREkwX1BJ TjAzCQkweDEwCisJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDBfX0lQVTFfRElTUDBfREFUQTAwCTB4 MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUMV9fSVBVMV9ESVNQMF9EQVRBMDEJMHgxMAorCQkJ TVg2UURMX1BBRF9ESVNQMF9EQVQyX19JUFUxX0RJU1AwX0RBVEEwMgkweDEwCisJCQlNWDZRRExf UEFEX0RJU1AwX0RBVDNfX0lQVTFfRElTUDBfREFUQTAzCTB4MTAKKwkJCU1YNlFETF9QQURfRElT UDBfREFUNF9fSVBVMV9ESVNQMF9EQVRBMDQJMHgxMAorCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQ1 X19JUFUxX0RJU1AwX0RBVEEwNQkweDEwCisJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDZfX0lQVTFf RElTUDBfREFUQTA2CTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUN19fSVBVMV9ESVNQMF9E QVRBMDcJMHgxMAorCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQ4X19JUFUxX0RJU1AwX0RBVEEwOAkw eDEwCisJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDlfX0lQVTFfRElTUDBfREFUQTA5CTB4MTAKKwkJ CU1YNlFETF9QQURfRElTUDBfREFUMTBfX0lQVTFfRElTUDBfREFUQTEwCTB4MTAKKwkJCU1YNlFE TF9QQURfRElTUDBfREFUMTFfX0lQVTFfRElTUDBfREFUQTExCTB4MTAKKwkJCU1YNlFETF9QQURf RElTUDBfREFUMTJfX0lQVTFfRElTUDBfREFUQTEyCTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBf REFUMTNfX0lQVTFfRElTUDBfREFUQTEzCTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTRf X0lQVTFfRElTUDBfREFUQTE0CTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTVfX0lQVTFf RElTUDBfREFUQTE1CTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTZfX0lQVTFfRElTUDBf REFUQTE2CTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTdfX0lQVTFfRElTUDBfREFUQTE3 CTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFUMThfX0lQVTFfRElTUDBfREFUQTE4CTB4MTAK KwkJCU1YNlFETF9QQURfRElTUDBfREFUMTlfX0lQVTFfRElTUDBfREFUQTE5CTB4MTAKKwkJCU1Y NlFETF9QQURfRElTUDBfREFUMjBfX0lQVTFfRElTUDBfREFUQTIwCTB4MTAKKwkJCU1YNlFETF9Q QURfRElTUDBfREFUMjFfX0lQVTFfRElTUDBfREFUQTIxCTB4MTAKKwkJCU1YNlFETF9QQURfRElT UDBfREFUMjJfX0lQVTFfRElTUDBfREFUQTIyCTB4MTAKKwkJCU1YNlFETF9QQURfRElTUDBfREFU MjNfX0lQVTFfRElTUDBfREFUQTIzCTB4MTAKKwkJPjsKKwl9OworCisJcGluY3RybF9iYWNrbGln aHQ6IGJhY2tsaWdodF9ncnAgeworCQlmc2wscGlucyA9IDwKKwkJCU1YNlFETF9QQURfUkdNSUlf VEQzX19HUElPNl9JTzIzCTB4NDAwMDAwNTgKKwkJPjsKKwl9OworCisJcGluY3RybF9wd20yXzI6 IHB3bTJncnAtMiB7CisJCWZzbCxwaW5zID0gPAorCQkJTVg2UURMX1BBRF9HUElPXzFfX1BXTTJf T1VUCQkweDAwMDU4CisJCT47CisJfTsKKworCXBpbmN0cmxfcHdtM18yOiBwd20zZ3JwLTIgewor CQlmc2wscGlucyA9IDwKKwkJCU1YNlFETF9QQURfU0QxX0RBVDFfX1BXTTNfT1VUCQkweDAwMDU4 CisJCT47CisJfTsKK307CisKKyZjbGtzIHsKKwlhc3NpZ25lZC1jbG9ja3MgPSA8JmNsa3MgSU1Y NlFETF9DTEtfTERCX0RJMF9TRUw+LAorCQkJICA8JmNsa3MgSU1YNlFETF9DTEtfTERCX0RJMV9T RUw+OworCWFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSA8JmNsa3MgSU1YNlFETF9DTEtfUExMNV9W SURFT19ESVY+LAorCQkJCSA8JmNsa3MgSU1YNlFETF9DTEtfUExMNV9WSURFT19ESVY+OworfTsK KworLyogY29uc29sZSAqLworJnVhcnQyIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwor CXBpbmN0cmwtMCA9IDwmcGluY3RybF91YXJ0Mj47CisJc3RhdHVzID0gIm9rYXkiOworfTsKKwor Lyogc3BpICovCismZWNzcGkxIHsKKwlmc2wsc3BpLW51bS1jaGlwc2VsZWN0cyA9IDwxPjsKKwlj cy1ncGlvcyA9IDwmZ3BpbzMgMjQgMD47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlw aW5jdHJsLTAgPSA8JnBpbmN0cmxfZWNzcGkxPjsKKwlzdGF0dXMgPSAib2theSI7CisKKwlub3Jm bGFzaDogbTI1cDgwQDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMg PSA8MT47CisJCWNvbXBhdGlibGUgPSAiamVkZWMsc3BpLW5vciI7CisJCXNwaS1tYXgtZnJlcXVl bmN5ID0gPDU0MDAwMDAwPjsKKwkJcmVnID0gPDA+OworCX07Cit9OworCisvKiBldGgwICovCism ZmVjIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3Ry bF9lbmV0PjsKKwlwaHktbW9kZSA9ICJybWlpIjsKKwlzdGF0dXMgPSAib2theSI7CisJcGh5LXJl c2V0LWdwaW9zID0gPCZncGlvMSA1IDA+OworCXBoeS1yZXNldC1kdXJhdGlvbiA9IDwxMDA+Owor CSNhZGRyZXNzLWNlbGxzID0gPDA+OworCSNzaXplLWNlbGxzID0gPDE+OworCWZpeGVkLWxpbmsg eworCQlzcGVlZCA9IDwxMDA+OworCQlmdWxsLWR1cGxleDsKKwl9OworfTsKKworJmxkYiB7CisJ c3RhdHVzID0gImRpc2FibGVkIjsKKworCWx2ZHMwOiBsdmRzLWNoYW5uZWxAMCB7CisJCXN0YXR1 cyA9ICJkaXNhYmxlZCI7CisJCWZzbCxkYXRhLXdpZHRoID0gPDI0PjsKKwkJZnNsLGRhdGEtbWFw cGluZyA9ICJzcHdnIjsKKworCQlwb3J0QDQgeworCQkJcmVnID0gPDQ+OworCQkJbHZkczBfb3V0 OiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbj47CisJCQl9Owor CQl9OworCX07Cit9OworCismd2RvZzEgeworCXN0YXR1cyA9ICJva2F5IjsKK307CisKKyZ1c2Ro YzMgeworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZwaW5jdHJs X3VzZGhjMz47CisJd3AtZ3Bpb3MgPSA8JmdwaW83IDEgMD47CisJY2QtZ3Bpb3MgPSA8JmdwaW83 IDAgMD47CisJc3RhdHVzID0gIm9rYXkiOworCWZzbCxkZWxheS1saW5lOworfTsKKworJmdwbWkg eworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZwaW5jdHJsX2dw bWlfbmFuZD47CisJbmFuZC1vbi1mbGFzaC1iYnQ7CisJc3RhdHVzID0gIm9rYXkiOworCisJcGFy dGl0aW9ucyB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtcGFydGl0aW9ucyI7CisJCSNhZGRyZXNz LWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlwYXJ0aXRpb25AMCB7CisJ CQlsYWJlbCA9ICJmaXJtd2FyZSI7CisJCQlyZWcgPSA8MHgwMDAwMDAwMCAweDAwMDAwMDAwMD47 IC8qIGtlZXAgemVybyBzaXplZCB0byBlbmFibGUgYXV0b2RldGVjdGlvbiAqLworCQl9OworCX07 Cit9OworCisvKiBkZWZpbmUgdGhlIFNQSSBiYXNlZCA4IE1pQiBOT1IgZmxhc2ggbGF5b3V0ICov Cismbm9yZmxhc2ggeworCXBhcnRpdGlvbnMgeworCQljb21wYXRpYmxlID0gImZpeGVkLXBhcnRp dGlvbnMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisK KwkJcGFydGl0aW9uQDAgeworCQkJbGFiZWwgPSAiYmFyZWJveCI7CisJCQlyZWcgPSA8MHgwIDB4 MTAwMDAwPjsKKwkJfTsKKworCQkvKiBzcGFjZSBsZWZ0IHRvIGxldCBiYXJlYm94IGdyb3cgKi8K KworCQkvKiBwbGFjZWQgbmVhciB0aGUgZW5kIG9mIHRoZSBOT1IgbWVtb3J5ICovCisJCWJhcmVi b3hfZW52OiBwYXJ0aXRpb25ANzgwMDAwIHsKKwkJCWxhYmVsID0gImJhcmVib3gtZW52aXJvbm1l bnQiOworCQkJcmVnID0gPDB4NzgwMDAwIDB4NDAwMDA+OworCQl9OworCisJCS8qIHBsYWNlZCBh dCB0aGUgZW5kIG9mIHRoZSBOT1IgbWVtb3J5ICovCisJCXN0YXRlX3N0b3JhZ2U6IHBhcnRpdGlv bkA3QzAwMDAgeworCQkJbGFiZWwgPSAiYmFyZWJveC1zdGF0ZSI7CisJCQlyZWcgPSA8MHg3QzAw MDAgMHg0MDAwMD47IC8qIGZvdXIgdGltZXMgbWlycm9yZWQgKi8KKwkJfTsKKwl9OworfTsKKwor Jm9jb3RwIHsKKwliYXJlYm94LHByb3ZpZGUtbWFjLWFkZHJlc3MgPSA8JmZlYyAweDYyMD47Cit9 OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pbXgvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gt aW14L0tjb25maWcKaW5kZXggM2Y4MDEyYzczMi4uZGFhOGJhNjZkOSAxMDA2NDQKLS0tIGEvYXJj aC9hcm0vbWFjaC1pbXgvS2NvbmZpZworKysgYi9hcmNoL2FybS9tYWNoLWlteC9LY29uZmlnCkBA IC01OTIsNiArNTkyLDEyIEBAIGNvbmZpZyBNQUNIX01OVF9SRUZPUk0KIAlzZWxlY3QgTUNJX0lN WF9FU0RIQ19QQkwKIAlzZWxlY3QgSTJDX0lNWF9FQVJMWQogCitjb25maWcgTUFDSF9TS09WX0lN WDYKKwlib29sICJTa292IElNWDYiCisJc2VsZWN0IEFSQ0hfSU1YNgorCXNlbGVjdCBBUk1fVVNF X0NPTVBSRVNTRURfRFRCCisJc2VsZWN0IE1DSV9JTVhfRVNESENfUEJMCisKIGVuZGlmCiAKICMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvaW1hZ2VzL01ha2VmaWxlLmlteCBiL2ltYWdlcy9NYWtlZmlsZS5pbXgK aW5kZXggYjg5MmVjMDE5Ni4uMTJjYzQ3ODY3NCAxMDA2NDQKLS0tIGEvaW1hZ2VzL01ha2VmaWxl LmlteAorKysgYi9pbWFnZXMvTWFrZWZpbGUuaW14CkBAIC0zMzEsNiArMzMxLDggQEAgJChjYWxs IGJ1aWxkX2lteF9oYWJ2NGltZywgQ09ORklHX01BQ0hfS09OVFJPTl9TQU1YNkksIHN0YXJ0X2lt eDZxX3NhbXg2aSwga29udHIKIAogJChjYWxsIGJ1aWxkX2lteF9oYWJ2NGltZywgQ09ORklHX01B Q0hfS09OVFJPTl9TQU1YNkksIHN0YXJ0X2lteDZkbF9zYW14NmksIGtvbnRyb24tc2FteDZpL2Zs YXNoLWhlYWRlci1zYW14NmktZHVhbGxpdGUsIGlteDZkbC1zYW14NmkpCiAKKyQoY2FsbCBidWls ZF9pbXhfaGFidjRpbWcsIENPTkZJR19NQUNIX1NLT1ZfSU1YNiwgc3RhcnRfaW14Nl9za292X2lt eDYsIHNrb3YtaW14Ni9mbGFzaC1oZWFkZXItbXg2LXNrb3YtaW14Niwgc2tvdi1pbXg2KQorCiAk KGNhbGwgYnVpbGRfaW14X2hhYnY0aW1nLCBDT05GSUdfTUFDSF9HV19WRU5UQU5BLCBzdGFydF9p bXg2cV9ndzU0eHhfMWd4NjQsIGdhdGV3b3Jrcy12ZW50YW5hL2ZsYXNoLWhlYWRlci12ZW50YW5h LXF1YWQtMWd4NjQsIGdhdGV3b3Jrcy1pbXg2cS12ZW50YW5hLTFneDY0KQogCiAkKGNhbGwgYnVp bGRfaW14X2hhYnY0aW1nLCBDT05GSUdfTUFDSF9FTFRFQ19ISVBFUkNBTSwgc3RhcnRfaW14NmRs X2VsdGVjX2hpcGVyY2FtLCBlbHRlYy1oaXBlcmNhbS9mbGFzaC1oZWFkZXItZWx0ZWMtaGlwZXJj YW0sIGVsdGVjLWhpcGVyY2FtKQotLSAKMi4yOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vYmFyZWJveAo=