From mboxrd@z Thu Jan 1 00:00:00 1970 From: Krzysztof Kozlowski Subject: [PATCH v2 2/2] backlight: Remove ld9040 driver Date: Sun, 2 Sep 2018 17:33:03 +0200 Message-ID: <20180902153303.6590-2-krzk@kernel.org> References: <20180902152232.5802-1-krzk@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8FD446E054 for ; Sun, 2 Sep 2018 15:33:31 +0000 (UTC) In-Reply-To: <20180902152232.5802-1-krzk@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Donghwa Lee , Lee Jones , Daniel Thompson , Jingoo Han , Bartlomiej Zolnierkiewicz , Krzysztof Kozlowski , Jonathan Corbet , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Cc: Marek Szyprowski List-Id: dri-devel@lists.freedesktop.org VGhlIGRyaXZlciBmb3IgTEQ5MDQwIEFNT0xFRCBMQ0QgcGFuZWwgd2FzIHN1cGVyc2VkZWQgd2l0 aCBEUk0gZHJpdmVyCnBhbmVsLXNhbXN1bmctbGQ5MDQwLmMuICBJdCBkb2VzIG5vdCBzdXBwb3J0 IERldmljZVRyZWUgYW5kIHJlc3BlY3RpdmUKcG9zc2libGUgdXNlciAoRXh5bm9zNDIxMCBVbml2 ZXJzYWwgQzIxMCkgaXMgRGV2aWNlVHJlZS1vbmx5IGFuZCB1c2VzCkRSTSB2ZXJzaW9uIG9mIGRy aXZlci4KClN1Z2dlc3RlZC1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1 bmcuY29tPgpDYzogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgpD YzogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBLcnp5c3p0 b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CkFja2VkLWJ5OiBKaW5nb28gSGFuIDxqaW5n b29oYW4xQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhbmllbCBUaG9tcHNvbiA8ZGFuaWVsLnRob21w c29uQGxpbmFyby5vcmc+CgotLS0KCkNoYW5nZXMgc2luY2UgdjE6CjEuIEFkZCBKaW5nb28ncyBh bmQgRGFuaWVsJ3MgYWNrcy4KLS0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9LY29uZmlnICAg ICAgICB8ICAgOCAtCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9NYWtlZmlsZSAgICAgICB8ICAg MSAtCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sZDkwNDAuYyAgICAgICB8IDgxMSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xkOTA0 MF9nYW1tYS5oIHwgMjAyIC0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwMjIgZGVsZXRpb25z KC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbGQ5MDQwLmMK IGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sZDkwNDBfZ2FtbWEu aAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L0tjb25maWcgYi9kcml2ZXJz L3ZpZGVvL2JhY2tsaWdodC9LY29uZmlnCmluZGV4IDIzNzNjM2NlYzBjMy4uNzFlZTk3OGM4NDhm IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9LY29uZmlnCisrKyBiL2RyaXZl cnMvdmlkZW8vYmFja2xpZ2h0L0tjb25maWcKQEAgLTExMSwxNCArMTExLDYgQEAgY29uZmlnIExD RF9IUDcwMAogCSAgSWYgeW91IGhhdmUgYW4gSFAgSm9ybmFkYSA3MDAgc2VyaWVzIGhhbmRoZWxk ICg3MTAvNzIwLzcyOCkKIAkgIHNheSBZIHRvIGVuYWJsZSBMQ0QgY29udHJvbCBkcml2ZXIuCiAK LWNvbmZpZyBMQ0RfTEQ5MDQwCi0JdHJpc3RhdGUgIkxEOTA0MCBBTU9MRUQgTENEIERyaXZlciIK LQlkZXBlbmRzIG9uIFNQSSAmJiBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCi0JZGVmYXVsdCBuCi0J aGVscAotCSAgSWYgeW91IGhhdmUgYW4gTEQ5MDQwIFBhbmVsLCBzYXkgWSB0byBlbmFibGUgaXRz Ci0JICBjb250cm9sIGRyaXZlci4KLQogY29uZmlnIExDRF9BTVMzNjlGRzA2CiAJdHJpc3RhdGUg IkFNUzM2OUZHMDYgQU1PTEVEIExDRCBEcml2ZXIiCiAJZGVwZW5kcyBvbiBTUEkgJiYgQkFDS0xJ R0hUX0NMQVNTX0RFVklDRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvTWFr ZWZpbGUgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9NYWtlZmlsZQppbmRleCBjN2E0NjM5MmE3 NmYuLjYzYzUwN2MwNzQzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvTWFrZWZpbGUKQEAgLTksNyArOSw2 IEBAIG9iai0kKENPTkZJR19MQ0RfSFg4MzU3KQkJKz0gaHg4MzU3Lm8KIG9iai0kKENPTkZJR19M Q0RfSUxJOTIyWCkJCSs9IGlsaTkyMngubwogb2JqLSQoQ09ORklHX0xDRF9JTEk5MzIwKQkJKz0g aWxpOTMyMC5vCiBvYmotJChDT05GSUdfTENEX0w0RjAwMjQyVDAzKQkJKz0gbDRmMDAyNDJ0MDMu bwotb2JqLSQoQ09ORklHX0xDRF9MRDkwNDApCQkrPSBsZDkwNDAubwogb2JqLSQoQ09ORklHX0xD RF9MTVMyODNHRjA1KQkJKz0gbG1zMjgzZ2YwNS5vCiBvYmotJChDT05GSUdfTENEX0xNUzUwMUtG MDMpCQkrPSBsbXM1MDFrZjAzLm8KIG9iai0kKENPTkZJR19MQ0RfTFRWMzUwUVYpCQkrPSBsdHYz NTBxdi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sZDkwNDAuYyBiL2Ry aXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xkOTA0MC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA2NzdmOGFiYmEyN2MuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2ts aWdodC9sZDkwNDAuYworKysgL2Rldi9udWxsCkBAIC0xLDgxMSArMCwwIEBACi0vKgotICogbGQ5 MDQwIEFNT0xFRCBMQ0QgcGFuZWwgZHJpdmVyLgotICoKLSAqIENvcHlyaWdodCAoYykgMjAxMSBT YW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBBdXRob3I6IERvbmdod2EgTGVlICA8ZGgwOS5sZWVAc2Ft c3VuZy5jb20+Ci0gKiBEZXJpdmVkIGZyb20gZHJpdmVycy92aWRlby9iYWNrbGlnaHQvczZlNjNt MC5jCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotICogRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg eW91cgotICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqLwotCi0jaW5jbHVkZSA8bGlu dXgvYmFja2xpZ2h0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51 eC9mYi5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1 cHQuaD4KLSNpbmNsdWRlIDxsaW51eC9pcnEuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K LSNpbmNsdWRlIDxsaW51eC9sY2QuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNs dWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9zcGkvc3Bp Lmg+Ci0jaW5jbHVkZSA8bGludXgvd2FpdC5oPgotCi0jaW5jbHVkZSAibGQ5MDQwX2dhbW1hLmgi Ci0KLSNkZWZpbmUgU0xFRVBNU0VDCQkweDEwMDAKLSNkZWZpbmUgRU5EREVGCQkJMHgyMDAwCi0j ZGVmaW5lCURFRk1BU0sJCQkweEZGMDAKLSNkZWZpbmUgQ09NTUFORF9PTkxZCQkweEZFCi0jZGVm aW5lIERBVEFfT05MWQkJMHhGRgotCi0jZGVmaW5lIE1JTl9CUklHSFRORVNTCQkwCi0jZGVmaW5l IE1BWF9CUklHSFRORVNTCQkyNAotCi1zdHJ1Y3QgbGQ5MDQwIHsKLQlzdHJ1Y3QgZGV2aWNlCQkJ KmRldjsKLQlzdHJ1Y3Qgc3BpX2RldmljZQkJKnNwaTsKLQl1bnNpZ25lZCBpbnQJCQlwb3dlcjsK LQl1bnNpZ25lZCBpbnQJCQljdXJyZW50X2JyaWdodG5lc3M7Ci0KLQlzdHJ1Y3QgbGNkX2Rldmlj ZQkJKmxkOwotCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlCQkqYmQ7Ci0Jc3RydWN0IGxjZF9wbGF0 Zm9ybV9kYXRhCSpsY2RfcGQ7Ci0KLQlzdHJ1Y3QgbXV0ZXgJCQlsb2NrOwotCWJvb2wgIGVuYWJs ZWQ7Ci19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbXSA9 IHsKLQl7IC5zdXBwbHkgPSAidmRkMyIsIH0sCi0JeyAuc3VwcGx5ID0gInZjaSIsIH0sCi19Owot Ci1zdGF0aWMgdm9pZCBsZDkwNDBfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgbGQ5MDQwICpsY2Qp Ci17Ci0JaW50IHJldCA9IDA7Ci0Jc3RydWN0IGxjZF9wbGF0Zm9ybV9kYXRhICpwZCA9IE5VTEw7 Ci0KLQlwZCA9IGxjZC0+bGNkX3BkOwotCW11dGV4X2xvY2soJmxjZC0+bG9jayk7Ci0JaWYgKCFs Y2QtPmVuYWJsZWQpIHsKLQkJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUo c3VwcGxpZXMpLCBzdXBwbGllcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKLQotCQlsY2Qt PmVuYWJsZWQgPSB0cnVlOwotCX0KLQltc2xlZXAocGQtPnBvd2VyX29uX2RlbGF5KTsKLW91dDoK LQltdXRleF91bmxvY2soJmxjZC0+bG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGxkOTA0MF9yZWd1 bGF0b3JfZGlzYWJsZShzdHJ1Y3QgbGQ5MDQwICpsY2QpCi17Ci0JaW50IHJldCA9IDA7Ci0KLQlt dXRleF9sb2NrKCZsY2QtPmxvY2spOwotCWlmIChsY2QtPmVuYWJsZWQpIHsKLQkJcmV0ID0gcmVn dWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKHN1cHBsaWVzKSwgc3VwcGxpZXMpOwotCQlp ZiAocmV0KQotCQkJZ290byBvdXQ7Ci0KLQkJbGNkLT5lbmFibGVkID0gZmFsc2U7Ci0JfQotb3V0 OgotCW11dGV4X3VubG9jaygmbGNkLT5sb2NrKTsKLX0KLQotc3RhdGljIGNvbnN0IHVuc2lnbmVk IHNob3J0IHNlcV9zd3Jlc2V0W10gPSB7Ci0JMHgwMSwgQ09NTUFORF9PTkxZLAotCUVORERFRiwg MHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV91c2VyX3NldHRpbmdb XSA9IHsKLQkweEYwLCAweDVBLAotCi0JREFUQV9PTkxZLCAweDVBLAotCUVORERFRiwgMHgwMAot fTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9lbHZzc19vbltdID0gewotCTB4 QjEsIDB4MEQsCi0KLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDE2LAotCUVORERF RiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9ndGNvbltdID0g ewotCTB4RjcsIDB4MDksCi0KLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDAwLAot CUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9wYW5l bF9jb25kaXRpb25bXSA9IHsKLQkweEY4LCAweDA1LAotCi0JREFUQV9PTkxZLCAweDY1LAotCURB VEFfT05MWSwgMHg5NiwKLQlEQVRBX09OTFksIDB4NzEsCi0JREFUQV9PTkxZLCAweDdELAotCURB VEFfT05MWSwgMHgxOSwKLQlEQVRBX09OTFksIDB4M0IsCi0JREFUQV9PTkxZLCAweDBELAotCURB VEFfT05MWSwgMHgxOSwKLQlEQVRBX09OTFksIDB4N0UsCi0JREFUQV9PTkxZLCAweDBELAotCURB VEFfT05MWSwgMHhFMiwKLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDAwLAotCURB VEFfT05MWSwgMHg3RSwKLQlEQVRBX09OTFksIDB4N0QsCi0JREFUQV9PTkxZLCAweDA3LAotCURB VEFfT05MWSwgMHgwNywKLQlEQVRBX09OTFksIDB4MjAsCi0JREFUQV9PTkxZLCAweDIwLAotCURB VEFfT05MWSwgMHgyMCwKLQlEQVRBX09OTFksIDB4MDIsCi0JREFUQV9PTkxZLCAweDAyLAotCUVO RERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9nYW1tYV9z ZXQxW10gPSB7Ci0JMHhGOSwgMHgwMCwKLQotCURBVEFfT05MWSwgMHhBNywKLQlEQVRBX09OTFks IDB4QjQsCi0JREFUQV9PTkxZLCAweEFFLAotCURBVEFfT05MWSwgMHhCRiwKLQlEQVRBX09OTFks IDB4MDAsCi0JREFUQV9PTkxZLCAweDkxLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFks IDB4QjIsCi0JREFUQV9PTkxZLCAweEI0LAotCURBVEFfT05MWSwgMHhBQSwKLQlEQVRBX09OTFks IDB4QkIsCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHhBQywKLQlEQVRBX09OTFks IDB4MDAsCi0JREFUQV9PTkxZLCAweEIzLAotCURBVEFfT05MWSwgMHhCMSwKLQlEQVRBX09OTFks IDB4QUEsCi0JREFUQV9PTkxZLCAweEJDLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFks IDB4QjMsCi0JRU5EREVGLCAweDAwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQg c2VxX2dhbW1hX2N0cmxbXSA9IHsKLQkweEZCLCAweDAyLAotCi0JREFUQV9PTkxZLCAweDVBLAot CUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9nYW1t YV9zdGFydFtdID0gewotCTB4RjksIENPTU1BTkRfT05MWSwKLQotCUVORERFRiwgMHgwMAotfTsK LQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9hcG9uW10gPSB7Ci0JMHhGMywgMHgw MCwKLQotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAw eDBBLAotCURBVEFfT05MWSwgMHgwMiwKLQlFTkRERUYsIDB4MDAKLX07Ci0KLXN0YXRpYyBjb25z dCB1bnNpZ25lZCBzaG9ydCBzZXFfZGlzcGxheV9jdHJsW10gPSB7Ci0JMHhGMiwgMHgwMiwKLQot CURBVEFfT05MWSwgMHgwOCwKLQlEQVRBX09OTFksIDB4MDgsCi0JREFUQV9PTkxZLCAweDEwLAot CURBVEFfT05MWSwgMHgxMCwKLQlFTkRERUYsIDB4MDAKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNp Z25lZCBzaG9ydCBzZXFfbWFudWFsX3B3cltdID0gewotCTB4QjAsIDB4MDQsCi0JRU5EREVGLCAw eDAwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgc2VxX3B3cl9jdHJsW10gPSB7 Ci0JMHhGNCwgMHgwQSwKLQotCURBVEFfT05MWSwgMHg4NywKLQlEQVRBX09OTFksIDB4MjUsCi0J REFUQV9PTkxZLCAweDZBLAotCURBVEFfT05MWSwgMHg0NCwKLQlEQVRBX09OTFksIDB4MDIsCi0J REFUQV9PTkxZLCAweDg4LAotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2ln bmVkIHNob3J0IHNlcV9zbGVlcF9vdXRbXSA9IHsKLQkweDExLCBDT01NQU5EX09OTFksCi0JRU5E REVGLCAweDAwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgc2VxX3NsZWVwX2lu W10gPSB7Ci0JMHgxMCwgQ09NTUFORF9PTkxZLAotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGlj IGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV9kaXNwbGF5X29uW10gPSB7Ci0JMHgyOSwgQ09NTUFO RF9PTkxZLAotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0 IHNlcV9kaXNwbGF5X29mZltdID0gewotCTB4MjgsIENPTU1BTkRfT05MWSwKLQlFTkRERUYsIDB4 MDAKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBzZXFfdmNpMV8xc3RfZW5bXSA9 IHsKLQkweEYzLCAweDEwLAotCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwK LQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDAyLAotCUVORERFRiwgMHgwMAotfTsK LQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV92bDFfZW5bXSA9IHsKLQkweEYzLCAw eDExLAotCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFks IDB4MDAsCi0JREFUQV9PTkxZLCAweDAyLAotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNv bnN0IHVuc2lnbmVkIHNob3J0IHNlcV92bDJfZW5bXSA9IHsKLQkweEYzLCAweDEzLAotCi0JREFU QV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4MDAsCi0JREFU QV9PTkxZLCAweDAyLAotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVk IHNob3J0IHNlcV92Y2kxXzJuZF9lbltdID0gewotCTB4RjMsIDB4MzMsCi0KLQlEQVRBX09OTFks IDB4MDAsCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFks IDB4MDIsCi0JRU5EREVGLCAweDAwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQg c2VxX3ZsM19lbltdID0gewotCTB4RjMsIDB4MzcsCi0KLQlEQVRBX09OTFksIDB4MDAsCi0JREFU QV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4MDIsCi0JRU5E REVGLCAweDAwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgc2VxX3ZyZWcxX2Ft cF9lbltdID0gewotCTB4RjMsIDB4MzcsCi0KLQlEQVRBX09OTFksIDB4MDEsCi0JREFUQV9PTkxZ LCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4MDIsCi0JRU5EREVGLCAw eDAwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgc2VxX3ZnaF9hbXBfZW5bXSA9 IHsKLQkweEYzLCAweDM3LAotCi0JREFUQV9PTkxZLCAweDExLAotCURBVEFfT05MWSwgMHgwMCwK LQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDAyLAotCUVORERFRiwgMHgwMAotfTsK LQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV92Z2xfYW1wX2VuW10gPSB7Ci0JMHhG MywgMHgzNywKLQotCURBVEFfT05MWSwgMHgzMSwKLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9P TkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMiwKLQlFTkRERUYsIDB4MDAKLX07Ci0KLXN0YXRp YyBjb25zdCB1bnNpZ25lZCBzaG9ydCBzZXFfdm1vc19hbXBfZW5bXSA9IHsKLQkweEYzLCAweDM3 LAotCi0JREFUQV9PTkxZLCAweEIxLAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4 MDAsCi0JREFUQV9PTkxZLCAweDAzLAotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0 IHVuc2lnbmVkIHNob3J0IHNlcV92aW50X2FtcF9lbltdID0gewotCTB4RjMsIDB4MzcsCi0KLQlE QVRBX09OTFksIDB4RjEsCi0JLyogREFUQV9PTkxZLCAweDcxLAlWTU9TL1ZCTC9WQkggbm90IHVz ZWQgKi8KLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwg MHgwMywKLQkvKiBEQVRBX09OTFksIDB4MDIsCVZNT1MvVkJML1ZCSCBub3QgdXNlZCAqLwotCUVO RERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNlcV92YmhfYW1w X2VuW10gPSB7Ci0JMHhGMywgMHgzNywKLQotCURBVEFfT05MWSwgMHhGOSwKLQlEQVRBX09OTFks IDB4MDAsCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMywKLQlFTkRERUYsIDB4 MDAKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBzZXFfdmJsX2FtcF9lbltdID0g ewotCTB4RjMsIDB4MzcsCi0KLQlEQVRBX09OTFksIDB4RkQsCi0JREFUQV9PTkxZLCAweDAwLAot CURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4MDMsCi0JRU5EREVGLCAweDAwCi19Owot Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgc2VxX2dhbV9hbXBfZW5bXSA9IHsKLQkweEYz LCAweDM3LAotCi0JREFUQV9PTkxZLCAweEZGLAotCS8qIERBVEFfT05MWSwgMHg3MywJVk1PUy9W QkwvVkJIIG5vdCB1c2VkICovCi0JREFUQV9PTkxZLCAweDAwLAotCURBVEFfT05MWSwgMHgwMCwK LQlEQVRBX09OTFksIDB4MDMsCi0JLyogREFUQV9PTkxZLCAweDAyLAlWTU9TL1ZCTC9WQkggbm90 IHVzZWQgKi8KLQlFTkRERUYsIDB4MDAKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9y dCBzZXFfc2RfYW1wX2VuW10gPSB7Ci0JMHhGMywgMHgzNywKLQotCURBVEFfT05MWSwgMHhGRiwK LQkvKiBEQVRBX09OTFksIDB4NzMsCVZNT1MvVkJML1ZCSCBub3QgdXNlZCAqLwotCURBVEFfT05M WSwgMHg4MCwKLQlEQVRBX09OTFksIDB4MDAsCi0JREFUQV9PTkxZLCAweDAzLAotCS8qIERBVEFf T05MWSwgMHgwMiwJVk1PUy9WQkwvVkJIIG5vdCB1c2VkICovCi0JRU5EREVGLCAweDAwCi19Owot Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgc2VxX2dsc19lbltdID0gewotCTB4RjMsIDB4 MzcsCi0KLQlEQVRBX09OTFksIDB4RkYsCi0JLyogREFUQV9PTkxZLCAweDczLAlWTU9TL1ZCTC9W Qkggbm90IHVzZWQgKi8KLQlEQVRBX09OTFksIDB4ODEsCi0JREFUQV9PTkxZLCAweDAwLAotCURB VEFfT05MWSwgMHgwMywKLQkvKiBEQVRBX09OTFksIDB4MDIsCVZNT1MvVkJML1ZCSCBub3QgdXNl ZCAqLwotCUVORERFRiwgMHgwMAotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHNl cV9lbHNfZW5bXSA9IHsKLQkweEYzLCAweDM3LAotCi0JREFUQV9PTkxZLCAweEZGLAotCS8qIERB VEFfT05MWSwgMHg3MywJVk1PUy9WQkwvVkJIIG5vdCB1c2VkICovCi0JREFUQV9PTkxZLCAweDgz LAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFksIDB4MDMsCi0JLyogREFUQV9PTkxZLCAw eDAyLAlWTU9TL1ZCTC9WQkggbm90IHVzZWQgKi8KLQlFTkRERUYsIDB4MDAKLX07Ci0KLXN0YXRp YyBjb25zdCB1bnNpZ25lZCBzaG9ydCBzZXFfZWxfb25bXSA9IHsKLQkweEYzLCAweDM3LAotCi0J REFUQV9PTkxZLCAweEZGLAotCS8qIERBVEFfT05MWSwgMHg3MywJVk1PUy9WQkwvVkJIIG5vdCB1 c2VkICovCi0JREFUQV9PTkxZLCAweDg3LAotCURBVEFfT05MWSwgMHgwMCwKLQlEQVRBX09OTFks IDB4MDMsCi0JLyogREFUQV9PTkxZLCAweDAyLAlWTU9TL1ZCTC9WQkggbm90IHVzZWQgKi8KLQlF TkRERUYsIDB4MDAKLX07Ci0KLXN0YXRpYyBpbnQgbGQ5MDQwX3NwaV93cml0ZV9ieXRlKHN0cnVj dCBsZDkwNDAgKmxjZCwgaW50IGFkZHIsIGludCBkYXRhKQotewotCXUxNiBidWZbMV07Ci0Jc3Ry dWN0IHNwaV9tZXNzYWdlIG1zZzsKLQotCXN0cnVjdCBzcGlfdHJhbnNmZXIgeGZlciA9IHsKLQkJ LmxlbgkJPSAyLAotCQkudHhfYnVmCQk9IGJ1ZiwKLQl9OwotCi0JYnVmWzBdID0gKGFkZHIgPDwg OCkgfCBkYXRhOwotCi0Jc3BpX21lc3NhZ2VfaW5pdCgmbXNnKTsKLQlzcGlfbWVzc2FnZV9hZGRf dGFpbCgmeGZlciwgJm1zZyk7Ci0KLQlyZXR1cm4gc3BpX3N5bmMobGNkLT5zcGksICZtc2cpOwot fQotCi1zdGF0aWMgaW50IGxkOTA0MF9zcGlfd3JpdGUoc3RydWN0IGxkOTA0MCAqbGNkLCB1bnNp Z25lZCBjaGFyIGFkZHJlc3MsCi0JdW5zaWduZWQgY2hhciBjb21tYW5kKQotewotCWludCByZXQg PSAwOwotCi0JaWYgKGFkZHJlc3MgIT0gREFUQV9PTkxZKQotCQlyZXQgPSBsZDkwNDBfc3BpX3dy aXRlX2J5dGUobGNkLCAweDAsIGFkZHJlc3MpOwotCWlmIChjb21tYW5kICE9IENPTU1BTkRfT05M WSkKLQkJcmV0ID0gbGQ5MDQwX3NwaV93cml0ZV9ieXRlKGxjZCwgMHgxLCBjb21tYW5kKTsKLQot CXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgbGQ5MDQwX3BhbmVsX3NlbmRfc2VxdWVuY2Uo c3RydWN0IGxkOTA0MCAqbGNkLAotCWNvbnN0IHVuc2lnbmVkIHNob3J0ICp3YnVmKQotewotCWlu dCByZXQgPSAwLCBpID0gMDsKLQotCXdoaWxlICgod2J1ZltpXSAmIERFRk1BU0spICE9IEVORERF RikgewotCQlpZiAoKHdidWZbaV0gJiBERUZNQVNLKSAhPSBTTEVFUE1TRUMpIHsKLQkJCXJldCA9 IGxkOTA0MF9zcGlfd3JpdGUobGNkLCB3YnVmW2ldLCB3YnVmW2krMV0pOwotCQkJaWYgKHJldCkK LQkJCQlicmVhazsKLQkJfSBlbHNlIHsKLQkJCW1zbGVlcCh3YnVmW2krMV0pOwotCQl9Ci0JCWkg Kz0gMjsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgaW50IF9sZDkwNDBfZ2FtbWFf Y3RsKHN0cnVjdCBsZDkwNDAgKmxjZCwgY29uc3QgdW5zaWduZWQgaW50ICpnYW1tYSkKLXsKLQl1 bnNpZ25lZCBpbnQgaSA9IDA7Ci0JaW50IHJldCA9IDA7Ci0KLQkvKiBzdGFydCBnYW1tYSB0YWJs ZSB1cGRhdGluZy4gKi8KLQlyZXQgPSBsZDkwNDBfcGFuZWxfc2VuZF9zZXF1ZW5jZShsY2QsIHNl cV9nYW1tYV9zdGFydCk7Ci0JaWYgKHJldCkgewotCQlkZXZfZXJyKGxjZC0+ZGV2LCAiZmFpbGVk IHRvIGRpc2FibGUgZ2FtbWEgdGFibGUgdXBkYXRpbmcuXG4iKTsKLQkJZ290byBnYW1tYV9lcnI7 Ci0JfQotCi0JZm9yIChpID0gMCA7IGkgPCBHQU1NQV9UQUJMRV9DT1VOVDsgaSsrKSB7Ci0JCXJl dCA9IGxkOTA0MF9zcGlfd3JpdGUobGNkLCBEQVRBX09OTFksIGdhbW1hW2ldKTsKLQkJaWYgKHJl dCkgewotCQkJZGV2X2VycihsY2QtPmRldiwgImZhaWxlZCB0byBzZXQgZ2FtbWEgdGFibGUuXG4i KTsKLQkJCWdvdG8gZ2FtbWFfZXJyOwotCQl9Ci0JfQotCi0JLyogdXBkYXRlIGdhbW1hIHRhYmxl LiAqLwotCXJldCA9IGxkOTA0MF9wYW5lbF9zZW5kX3NlcXVlbmNlKGxjZCwgc2VxX2dhbW1hX2N0 cmwpOwotCWlmIChyZXQpCi0JCWRldl9lcnIobGNkLT5kZXYsICJmYWlsZWQgdG8gdXBkYXRlIGdh bW1hIHRhYmxlLlxuIik7Ci0KLWdhbW1hX2VycjoKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMg aW50IGxkOTA0MF9nYW1tYV9jdGwoc3RydWN0IGxkOTA0MCAqbGNkLCBpbnQgZ2FtbWEpCi17Ci0J cmV0dXJuIF9sZDkwNDBfZ2FtbWFfY3RsKGxjZCwgZ2FtbWFfdGFibGUuZ2FtbWFfMjJfdGFibGVb Z2FtbWFdKTsKLX0KLQotc3RhdGljIGludCBsZDkwNDBfbGRpX2luaXQoc3RydWN0IGxkOTA0MCAq bGNkKQotewotCWludCByZXQsIGk7Ci0Jc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0ICppbml0 X3NlcVtdID0gewotCQlzZXFfdXNlcl9zZXR0aW5nLAotCQlzZXFfcGFuZWxfY29uZGl0aW9uLAot CQlzZXFfZGlzcGxheV9jdHJsLAotCQlzZXFfbWFudWFsX3B3ciwKLQkJc2VxX2VsdnNzX29uLAot CQlzZXFfZ3Rjb24sCi0JCXNlcV9nYW1tYV9zZXQxLAotCQlzZXFfZ2FtbWFfY3RybCwKLQkJc2Vx X3NsZWVwX291dCwKLQl9OwotCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5pdF9zZXEp OyBpKyspIHsKLQkJcmV0ID0gbGQ5MDQwX3BhbmVsX3NlbmRfc2VxdWVuY2UobGNkLCBpbml0X3Nl cVtpXSk7Ci0JCS8qIHdvcmthcm91bmQ6IG1pbmltdW0gZGVsYXkgdGltZSBmb3IgdHJhbnNmZXJy aW5nIENNRCAqLwotCQl1c2xlZXBfcmFuZ2UoMzAwLCAzMTApOwotCQlpZiAocmV0KQotCQkJYnJl YWs7Ci0JfQotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBsZDkwNDBfbGRpX2VuYWJs ZShzdHJ1Y3QgbGQ5MDQwICpsY2QpCi17Ci0JcmV0dXJuIGxkOTA0MF9wYW5lbF9zZW5kX3NlcXVl bmNlKGxjZCwgc2VxX2Rpc3BsYXlfb24pOwotfQotCi1zdGF0aWMgaW50IGxkOTA0MF9sZGlfZGlz YWJsZShzdHJ1Y3QgbGQ5MDQwICpsY2QpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IGxkOTA0MF9w YW5lbF9zZW5kX3NlcXVlbmNlKGxjZCwgc2VxX2Rpc3BsYXlfb2ZmKTsKLQlyZXQgPSBsZDkwNDBf cGFuZWxfc2VuZF9zZXF1ZW5jZShsY2QsIHNlcV9zbGVlcF9pbik7Ci0KLQlyZXR1cm4gcmV0Owot fQotCi1zdGF0aWMgaW50IGxkOTA0MF9wb3dlcl9pc19vbihpbnQgcG93ZXIpCi17Ci0JcmV0dXJu IHBvd2VyIDw9IEZCX0JMQU5LX05PUk1BTDsKLX0KLQotc3RhdGljIGludCBsZDkwNDBfcG93ZXJf b24oc3RydWN0IGxkOTA0MCAqbGNkKQotewotCWludCByZXQgPSAwOwotCXN0cnVjdCBsY2RfcGxh dGZvcm1fZGF0YSAqcGQ7Ci0KLQlwZCA9IGxjZC0+bGNkX3BkOwotCi0JLyogbGNkIHBvd2VyIG9u ICovCi0JbGQ5MDQwX3JlZ3VsYXRvcl9lbmFibGUobGNkKTsKLQotCWlmICghcGQtPnJlc2V0KSB7 Ci0JCWRldl9lcnIobGNkLT5kZXYsICJyZXNldCBpcyBOVUxMLlxuIik7Ci0JCXJldHVybiAtRUlO VkFMOwotCX0KLQotCXBkLT5yZXNldChsY2QtPmxkKTsKLQltc2xlZXAocGQtPnJlc2V0X2RlbGF5 KTsKLQotCXJldCA9IGxkOTA0MF9sZGlfaW5pdChsY2QpOwotCWlmIChyZXQpIHsKLQkJZGV2X2Vy cihsY2QtPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIGxkaS5cbiIpOwotCQlyZXR1cm4gcmV0 OwotCX0KLQotCXJldCA9IGxkOTA0MF9sZGlfZW5hYmxlKGxjZCk7Ci0JaWYgKHJldCkgewotCQlk ZXZfZXJyKGxjZC0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBsZGkuXG4iKTsKLQkJcmV0dXJuIHJl dDsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBsZDkwNDBfcG93ZXJfb2ZmKHN0 cnVjdCBsZDkwNDAgKmxjZCkKLXsKLQlpbnQgcmV0OwotCXN0cnVjdCBsY2RfcGxhdGZvcm1fZGF0 YSAqcGQ7Ci0KLQlwZCA9IGxjZC0+bGNkX3BkOwotCi0JcmV0ID0gbGQ5MDQwX2xkaV9kaXNhYmxl KGxjZCk7Ci0JaWYgKHJldCkgewotCQlkZXZfZXJyKGxjZC0+ZGV2LCAibGNkIHNldHRpbmcgZmFp bGVkLlxuIik7Ci0JCXJldHVybiAtRUlPOwotCX0KLQotCW1zbGVlcChwZC0+cG93ZXJfb2ZmX2Rl bGF5KTsKLQotCS8qIGxjZCBwb3dlciBvZmYgKi8KLQlsZDkwNDBfcmVndWxhdG9yX2Rpc2FibGUo bGNkKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGxkOTA0MF9wb3dlcihzdHJ1Y3Qg bGQ5MDQwICpsY2QsIGludCBwb3dlcikKLXsKLQlpbnQgcmV0ID0gMDsKLQotCWlmIChsZDkwNDBf cG93ZXJfaXNfb24ocG93ZXIpICYmICFsZDkwNDBfcG93ZXJfaXNfb24obGNkLT5wb3dlcikpCi0J CXJldCA9IGxkOTA0MF9wb3dlcl9vbihsY2QpOwotCWVsc2UgaWYgKCFsZDkwNDBfcG93ZXJfaXNf b24ocG93ZXIpICYmIGxkOTA0MF9wb3dlcl9pc19vbihsY2QtPnBvd2VyKSkKLQkJcmV0ID0gbGQ5 MDQwX3Bvd2VyX29mZihsY2QpOwotCi0JaWYgKCFyZXQpCi0JCWxjZC0+cG93ZXIgPSBwb3dlcjsK LQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgbGQ5MDQwX3NldF9wb3dlcihzdHJ1Y3Qg bGNkX2RldmljZSAqbGQsIGludCBwb3dlcikKLXsKLQlzdHJ1Y3QgbGQ5MDQwICpsY2QgPSBsY2Rf Z2V0X2RhdGEobGQpOwotCi0JaWYgKHBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksgJiYgcG93ZXIg IT0gRkJfQkxBTktfUE9XRVJET1dOICYmCi0JCXBvd2VyICE9IEZCX0JMQU5LX05PUk1BTCkgewot CQlkZXZfZXJyKGxjZC0+ZGV2LCAicG93ZXIgdmFsdWUgc2hvdWxkIGJlIDAsIDEgb3IgNC5cbiIp OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlyZXR1cm4gbGQ5MDQwX3Bvd2VyKGxjZCwgcG93 ZXIpOwotfQotCi1zdGF0aWMgaW50IGxkOTA0MF9nZXRfcG93ZXIoc3RydWN0IGxjZF9kZXZpY2Ug KmxkKQotewotCXN0cnVjdCBsZDkwNDAgKmxjZCA9IGxjZF9nZXRfZGF0YShsZCk7Ci0KLQlyZXR1 cm4gbGNkLT5wb3dlcjsKLX0KLQotc3RhdGljIGludCBsZDkwNDBfc2V0X2JyaWdodG5lc3Moc3Ry dWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQotewotCWludCByZXQgPSAwLCBicmlnaHRuZXNzID0g YmQtPnByb3BzLmJyaWdodG5lc3M7Ci0Jc3RydWN0IGxkOTA0MCAqbGNkID0gYmxfZ2V0X2RhdGEo YmQpOwotCi0JaWYgKGJyaWdodG5lc3MgPCBNSU5fQlJJR0hUTkVTUyB8fAotCQlicmlnaHRuZXNz ID4gYmQtPnByb3BzLm1heF9icmlnaHRuZXNzKSB7Ci0JCWRldl9lcnIoJmJkLT5kZXYsICJsY2Qg YnJpZ2h0bmVzcyBzaG91bGQgYmUgJWQgdG8gJWQuXG4iLAotCQkJTUlOX0JSSUdIVE5FU1MsIE1B WF9CUklHSFRORVNTKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcmV0ID0gbGQ5MDQwX2dh bW1hX2N0bChsY2QsIGJkLT5wcm9wcy5icmlnaHRuZXNzKTsKLQlpZiAocmV0KSB7Ci0JCWRldl9l cnIoJmJkLT5kZXYsICJsY2QgYnJpZ2h0bmVzcyBzZXR0aW5nIGZhaWxlZC5cbiIpOwotCQlyZXR1 cm4gLUVJTzsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgc3RydWN0IGxjZF9vcHMg bGQ5MDQwX2xjZF9vcHMgPSB7Ci0JLnNldF9wb3dlciA9IGxkOTA0MF9zZXRfcG93ZXIsCi0JLmdl dF9wb3dlciA9IGxkOTA0MF9nZXRfcG93ZXIsCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGJh Y2tsaWdodF9vcHMgbGQ5MDQwX2JhY2tsaWdodF9vcHMgID0gewotCS51cGRhdGVfc3RhdHVzID0g bGQ5MDQwX3NldF9icmlnaHRuZXNzLAotfTsKLQotc3RhdGljIGludCBsZDkwNDBfcHJvYmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKLXsKLQlpbnQgcmV0ID0gMDsKLQlzdHJ1Y3QgbGQ5MDQwICps Y2QgPSBOVUxMOwotCXN0cnVjdCBsY2RfZGV2aWNlICpsZCA9IE5VTEw7Ci0Jc3RydWN0IGJhY2ts aWdodF9kZXZpY2UgKmJkID0gTlVMTDsKLQlzdHJ1Y3QgYmFja2xpZ2h0X3Byb3BlcnRpZXMgcHJv cHM7Ci0KLQlsY2QgPSBkZXZtX2t6YWxsb2MoJnNwaS0+ZGV2LCBzaXplb2Yoc3RydWN0IGxkOTA0 MCksIEdGUF9LRVJORUwpOwotCWlmICghbGNkKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCS8qIGxk OTA0MCBsY2QgcGFuZWwgdXNlcyAzLXdpcmUgOWJpdHMgU1BJIE1vZGUuICovCi0Jc3BpLT5iaXRz X3Blcl93b3JkID0gOTsKLQotCXJldCA9IHNwaV9zZXR1cChzcGkpOwotCWlmIChyZXQgPCAwKSB7 Ci0JCWRldl9lcnIoJnNwaS0+ZGV2LCAic3BpIHNldHVwIGZhaWxlZC5cbiIpOwotCQlyZXR1cm4g cmV0OwotCX0KLQotCWxjZC0+c3BpID0gc3BpOwotCWxjZC0+ZGV2ID0gJnNwaS0+ZGV2OwotCi0J bGNkLT5sY2RfcGQgPSBkZXZfZ2V0X3BsYXRkYXRhKCZzcGktPmRldik7Ci0JaWYgKCFsY2QtPmxj ZF9wZCkgewotCQlkZXZfZXJyKCZzcGktPmRldiwgInBsYXRmb3JtIGRhdGEgaXMgTlVMTC5cbiIp OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQltdXRleF9pbml0KCZsY2QtPmxvY2spOwotCi0J cmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQobGNkLT5kZXYsIEFSUkFZX1NJWkUoc3VwcGxp ZXMpLCBzdXBwbGllcyk7Ci0JaWYgKHJldCkgewotCQlkZXZfZXJyKGxjZC0+ZGV2LCAiRmFpbGVk IHRvIGdldCByZWd1bGF0b3JzOiAlZFxuIiwgcmV0KTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQls ZCA9IGRldm1fbGNkX2RldmljZV9yZWdpc3Rlcigmc3BpLT5kZXYsICJsZDkwNDAiLCAmc3BpLT5k ZXYsIGxjZCwKLQkJCQkJJmxkOTA0MF9sY2Rfb3BzKTsKLQlpZiAoSVNfRVJSKGxkKSkKLQkJcmV0 dXJuIFBUUl9FUlIobGQpOwotCi0JbGNkLT5sZCA9IGxkOwotCi0JbWVtc2V0KCZwcm9wcywgMCwg c2l6ZW9mKHN0cnVjdCBiYWNrbGlnaHRfcHJvcGVydGllcykpOwotCXByb3BzLnR5cGUgPSBCQUNL TElHSFRfUkFXOwotCXByb3BzLm1heF9icmlnaHRuZXNzID0gTUFYX0JSSUdIVE5FU1M7Ci0KLQli ZCA9IGRldm1fYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rlcigmc3BpLT5kZXYsICJsZDkwNDAtYmwi LCAmc3BpLT5kZXYsCi0JCQkJCWxjZCwgJmxkOTA0MF9iYWNrbGlnaHRfb3BzLCAmcHJvcHMpOwot CWlmIChJU19FUlIoYmQpKQotCQlyZXR1cm4gUFRSX0VSUihiZCk7Ci0KLQliZC0+cHJvcHMuYnJp Z2h0bmVzcyA9IE1BWF9CUklHSFRORVNTOwotCWxjZC0+YmQgPSBiZDsKLQotCS8qCi0JICogaWYg bGNkIHBhbmVsIHdhcyBvbiBmcm9tIGJvb3Rsb2FkZXIgbGlrZSB1LWJvb3QgdGhlbgotCSAqIGRv IG5vdCBsY2Qgb24uCi0JICovCi0JaWYgKCFsY2QtPmxjZF9wZC0+bGNkX2VuYWJsZWQpIHsKLQkJ LyoKLQkJICogaWYgbGNkIHBhbmVsIHdhcyBvZmYgZnJvbSBib290bG9hZGVyIHRoZW4KLQkJICog Y3VycmVudCBsY2Qgc3RhdHVzIGlzIHBvd2VyZG93biBhbmQgdGhlbgotCQkgKiBpdCBlbmFibGVz IGxjZCBwYW5lbC4KLQkJICovCi0JCWxjZC0+cG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047Ci0K LQkJbGQ5MDQwX3Bvd2VyKGxjZCwgRkJfQkxBTktfVU5CTEFOSyk7Ci0JfSBlbHNlIHsKLQkJbGNk LT5wb3dlciA9IEZCX0JMQU5LX1VOQkxBTks7Ci0JfQotCi0Jc3BpX3NldF9kcnZkYXRhKHNwaSwg bGNkKTsKLQotCWRldl9pbmZvKCZzcGktPmRldiwgImxkOTA0MCBwYW5lbCBkcml2ZXIgaGFzIGJl ZW4gcHJvYmVkLlxuIik7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbGQ5MDQwX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQotewotCXN0cnVjdCBsZDkwNDAgKmxjZCA9IHNwaV9n ZXRfZHJ2ZGF0YShzcGkpOwotCi0JbGQ5MDQwX3Bvd2VyKGxjZCwgRkJfQkxBTktfUE9XRVJET1dO KTsKLQlyZXR1cm4gMDsKLX0KLQotI2lmZGVmIENPTkZJR19QTV9TTEVFUAotc3RhdGljIGludCBs ZDkwNDBfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCi17Ci0Jc3RydWN0IGxkOTA0MCAqbGNk ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Ci0KLQlkZXZfZGJnKGRldiwgImxjZC0+cG93ZXIgPSAl ZFxuIiwgbGNkLT5wb3dlcik7Ci0KLQkvKgotCSAqIHdoZW4gbGNkIHBhbmVsIGlzIHN1c3BlbmQs IGxjZCBwYW5lbCBiZWNvbWVzIG9mZgotCSAqIHJlZ2FyZGxlc3Mgb2Ygc3RhdHVzLgotCSAqLwot CXJldHVybiBsZDkwNDBfcG93ZXIobGNkLCBGQl9CTEFOS19QT1dFUkRPV04pOwotfQotCi1zdGF0 aWMgaW50IGxkOTA0MF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQotewotCXN0cnVjdCBsZDkw NDAgKmxjZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwotCi0JbGNkLT5wb3dlciA9IEZCX0JMQU5L X1BPV0VSRE9XTjsKLQotCXJldHVybiBsZDkwNDBfcG93ZXIobGNkLCBGQl9CTEFOS19VTkJMQU5L KTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobGQ5MDQwX3BtX29wcywg bGQ5MDQwX3N1c3BlbmQsIGxkOTA0MF9yZXN1bWUpOwotCi0vKiBQb3dlciBkb3duIGFsbCBkaXNw bGF5cyBvbiByZWJvb3QsIHBvd2Vyb2ZmIG9yIGhhbHQuICovCi1zdGF0aWMgdm9pZCBsZDkwNDBf c2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKLXsKLQlzdHJ1Y3QgbGQ5MDQwICpsY2Qg PSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKLQotCWxkOTA0MF9wb3dlcihsY2QsIEZCX0JMQU5LX1BP V0VSRE9XTik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsZDkwNDBfZHJpdmVyID0g ewotCS5kcml2ZXIgPSB7Ci0JCS5uYW1lCT0gImxkOTA0MCIsCi0JCS5wbQk9ICZsZDkwNDBfcG1f b3BzLAotCX0sCi0JLnByb2JlCQk9IGxkOTA0MF9wcm9iZSwKLQkucmVtb3ZlCQk9IGxkOTA0MF9y ZW1vdmUsCi0JLnNodXRkb3duCT0gbGQ5MDQwX3NodXRkb3duLAotfTsKLQotbW9kdWxlX3NwaV9k cml2ZXIobGQ5MDQwX2RyaXZlcik7Ci0KLU1PRFVMRV9BVVRIT1IoIkRvbmdod2EgTGVlIDxkaDA5 LmxlZUBzYW1zdW5nLmNvbT4iKTsKLU1PRFVMRV9ERVNDUklQVElPTigibGQ5MDQwIExDRCBEcml2 ZXIiKTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8v YmFja2xpZ2h0L2xkOTA0MF9nYW1tYS5oIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbGQ5MDQw X2dhbW1hLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTU4NmQ5NzM4NS4uMDAw MDAwMDAwMDAwCi0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xkOTA0MF9nYW1tYS5oCisr KyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8qCi0gKiBHYW1tYSBsZXZlbCBkZWZpbml0 aW9ucy4KLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotICog SW5LaSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgotICogRG9uZ2h3YSBMZWUgPGRoMDkubGVl QHNhbXN1bmcuY29tPgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotICogcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0qLwotCi0jaWZuZGVmIF9MRDkw NDBfQlJJR0hUTkVTU19ICi0jZGVmaW5lIF9MRDkwNDBfQlJJR0hUTkVTU19ICi0KLSNkZWZpbmUg TUFYX0dBTU1BX0xFVkVMCQkyNQotI2RlZmluZSBHQU1NQV9UQUJMRV9DT1VOVAkyMQotCi0vKiBn YW1tYSB2YWx1ZTogMi4yICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0MF8yMl8z MDBbXSA9IHsKLQkweDAwLCAweGE3LCAweGI0LCAweGFlLCAweGJmLCAweDAwLCAweDkxLAotCTB4 MDAsIDB4YjIsIDB4YjQsIDB4YWEsIDB4YmIsIDB4MDAsIDB4YWMsCi0JMHgwMCwgMHhiMywgMHhi MSwgMHhhYSwgMHhiYywgMHgwMCwgMHhiMwotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu dCBsZDkwNDBfMjJfMjkwW10gPSB7Ci0JMHgwMCwgMHhhOSwgMHhiNywgMHhhZSwgMHhiZCwgMHgw MCwgMHg4OSwKLQkweDAwLCAweGI3LCAweGI2LCAweGE4LCAweGJhLCAweDAwLCAweGE0LAotCTB4 MDAsIDB4YjEsIDB4YjQsIDB4YWEsIDB4YmIsIDB4MDAsIDB4YWEKLX07Ci0KLXN0YXRpYyBjb25z dCB1bnNpZ25lZCBpbnQgbGQ5MDQwXzIyXzI4MFtdID0gewotCTB4MDAsIDB4YTksIDB4YjYsIDB4 YWQsIDB4YmYsIDB4MDAsIDB4ODYsCi0JMHgwMCwgMHhiOCwgMHhiNSwgMHhhOCwgMHhiYywgMHgw MCwgMHhhMCwKLQkweDAwLCAweGIzLCAweGIzLCAweGE5LCAweGJjLCAweDAwLCAweGE3Ci19Owot Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0MF8yMl8yNzBbXSA9IHsKLQkweDAwLCAw eGE4LCAweGI4LCAweGFlLCAweGJlLCAweDAwLCAweDg0LAotCTB4MDAsIDB4YjksIDB4YjcsIDB4 YTgsIDB4YmMsIDB4MDAsIDB4OWQsCi0JMHgwMCwgMHhiMiwgMHhiNSwgMHhhYSwgMHhiYywgMHgw MCwgMHhhNAotCi19Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBsZDkwNDBfMjJfMjYwW10g PSB7Ci0JMHgwMCwgMHhhNCwgMHhiOCwgMHhiMCwgMHhiZiwgMHgwMCwgMHg4MCwKLQkweDAwLCAw eGI4LCAweGI2LCAweGFhLCAweGJjLCAweDAwLCAweDlhLAotCTB4MDAsIDB4YjAsIDB4YjUsIDB4 YWIsIDB4YmQsIDB4MDAsIDB4YTAKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbGQ5 MDQwXzIyXzI1MFtdID0gewotCTB4MDAsIDB4YTQsIDB4YjksIDB4YWYsIDB4YzEsIDB4MDAsIDB4 N2QsCi0JMHgwMCwgMHhiOSwgMHhiNiwgMHhhYSwgMHhiYiwgMHgwMCwgMHg5NywKLQkweDAwLCAw eGIxLCAweGI1LCAweGFhLCAweGJmLCAweDAwLCAweDlkCi19OwotCi1zdGF0aWMgY29uc3QgdW5z aWduZWQgaW50IGxkOTA0MF8yMl8yNDBbXSA9IHsKLQkweDAwLCAweGEyLCAweGI5LCAweGFmLCAw eGMyLCAweDAwLCAweDdhLAotCTB4MDAsIDB4YjksIDB4YjcsIDB4YWEsIDB4YmQsIDB4MDAsIDB4 OTQsCi0JMHgwMCwgMHhiMCwgMHhiNSwgMHhhYiwgMHhiZiwgMHgwMCwgMHg5YQotfTsKLQotc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGludCBsZDkwNDBfMjJfMjMwW10gPSB7Ci0JMHgwMCwgMHhhMCwg MHhiOSwgMHhhZiwgMHhjMywgMHgwMCwgMHg3NywKLQkweDAwLCAweGI5LCAweGI3LCAweGFiLCAw eGJlLCAweDAwLCAweDkwLAotCTB4MDAsIDB4YjAsIDB4YjYsIDB4YWIsIDB4YmYsIDB4MDAsIDB4 OTcKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbGQ5MDQwXzIyXzIyMFtdID0gewot CTB4MDAsIDB4OWUsIDB4YmEsIDB4YjAsIDB4YzIsIDB4MDAsIDB4NzUsCi0JMHgwMCwgMHhiOSwg MHhiOCwgMHhhYiwgMHhiZSwgMHgwMCwgMHg4ZSwKLQkweDAwLCAweGIwLCAweGI2LCAweGFjLCAw eGJmLCAweDAwLCAweDk0Ci19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0MF8y Ml8yMTBbXSA9IHsKLQkweDAwLCAweDljLCAweGI5LCAweGIwLCAweGM0LCAweDAwLCAweDcyLAot CTB4MDAsIDB4YjgsIDB4YjgsIDB4YWMsIDB4YmYsIDB4MDAsIDB4OGEsCi0JMHgwMCwgMHhiMCwg MHhiNiwgMHhhYywgMHhjMCwgMHgwMCwgMHg5MQotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVk IGludCBsZDkwNDBfMjJfMjAwW10gPSB7Ci0JMHgwMCwgMHg5YSwgMHhiYSwgMHhiMSwgMHhjNCwg MHgwMCwgMHg2ZiwKLQkweDAwLCAweGI4LCAweGI4LCAweGFkLCAweGMwLCAweDAwLCAweDg2LAot CTB4MDAsIDB4YjAsIDB4YjcsIDB4YWQsIDB4YzAsIDB4MDAsIDB4OGQKLX07Ci0KLXN0YXRpYyBj b25zdCB1bnNpZ25lZCBpbnQgbGQ5MDQwXzIyXzE5MFtdID0gewotCTB4MDAsIDB4OTcsIDB4YmEs IDB4YjIsIDB4YzUsIDB4MDAsIDB4NmMsCi0JMHgwMCwgMHhiOCwgMHhiOCwgMHhhZSwgMHhjMSwg MHgwMCwgMHg4MiwKLQkweDAwLCAweGIwLCAweGI2LCAweGFlLCAweGMyLCAweDAwLCAweDg5Ci19 OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0MF8yMl8xODBbXSA9IHsKLQkweDAw LCAweDkzLCAweGJhLCAweGIzLCAweGM1LCAweDAwLCAweDY5LAotCTB4MDAsIDB4YjgsIDB4Yjks IDB4YWUsIDB4YzEsIDB4MDAsIDB4N2YsCi0JMHgwMCwgMHhiMCwgMHhiNiwgMHhhZSwgMHhjMywg MHgwMCwgMHg4NQotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBsZDkwNDBfMjJfMTcw W10gPSB7Ci0JMHgwMCwgMHg4YiwgMHhiOSwgMHhiMywgMHhjNywgMHgwMCwgMHg2NSwKLQkweDAw LCAweGI3LCAweGI4LCAweGFmLCAweGMzLCAweDAwLCAweDdhLAotCTB4MDAsIDB4ODAsIDB4YjYs IDB4YWUsIDB4YzQsIDB4MDAsIDB4ODEKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg bGQ5MDQwXzIyXzE2MFtdID0gewotCTB4MDAsIDB4ODksIDB4YmEsIDB4YjMsIDB4YzgsIDB4MDAs IDB4NjIsCi0JMHgwMCwgMHhiNiwgMHhiYSwgMHhhZiwgMHhjMywgMHgwMCwgMHg3NiwKLQkweDAw LCAweGFmLCAweGI3LCAweGFlLCAweGM0LCAweDAwLCAweDdlCi19OwotCi1zdGF0aWMgY29uc3Qg dW5zaWduZWQgaW50IGxkOTA0MF8yMl8xNTBbXSA9IHsKLQkweDAwLCAweDgyLCAweGJhLCAweGI0 LCAweGM3LCAweDAwLCAweDVmLAotCTB4MDAsIDB4YjUsIDB4YmEsIDB4YjAsIDB4YzMsIDB4MDAs IDB4NzIsCi0JMHgwMCwgMHhhZSwgMHhiOCwgMHhiMCwgMHhjMywgMHgwMCwgMHg3YQotfTsKLQot c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBsZDkwNDBfMjJfMTQwW10gPSB7Ci0JMHgwMCwgMHg3 YiwgMHhiYiwgMHhiNCwgMHhjOCwgMHgwMCwgMHg1YiwKLQkweDAwLCAweGI1LCAweGJhLCAweGIx LCAweGM0LCAweDAwLCAweDZlLAotCTB4MDAsIDB4YWUsIDB4YjksIDB4YjAsIDB4YzUsIDB4MDAs IDB4NzUKLX07Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbGQ5MDQwXzIyXzEzMFtdID0g ewotCTB4MDAsIDB4NzEsIDB4YmIsIDB4YjUsIDB4YzgsIDB4MDAsIDB4NTcsCi0JMHgwMCwgMHhi NSwgMHhiYiwgMHhiMCwgMHhjNSwgMHgwMCwgMHg2YSwKLQkweDAwLCAweGFlLCAweGI5LCAweGIx LCAweGM2LCAweDAwLCAweDcwCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0 MF8yMl8xMjBbXSA9IHsKLQkweDAwLCAweDQ3LCAweGJhLCAweGI2LCAweGNhLCAweDAwLCAweDUz LAotCTB4MDAsIDB4YjUsIDB4YmIsIDB4YjMsIDB4YzYsIDB4MDAsIDB4NjUsCi0JMHgwMCwgMHhh ZSwgMHhiOCwgMHhiMywgMHhjNywgMHgwMCwgMHg2YwotfTsKLQotc3RhdGljIGNvbnN0IHVuc2ln bmVkIGludCBsZDkwNDBfMjJfMTEwW10gPSB7Ci0JMHgwMCwgMHgxMywgMHhiYiwgMHhiNywgMHhj YSwgMHgwMCwgMHg0ZiwKLQkweDAwLCAweGI0LCAweGJiLCAweGIzLCAweGM3LCAweDAwLCAweDYw LAotCTB4MDAsIDB4YWQsIDB4YjgsIDB4YjQsIDB4YzcsIDB4MDAsIDB4NjcKLX07Ci0KLXN0YXRp YyBjb25zdCB1bnNpZ25lZCBpbnQgbGQ5MDQwXzIyXzEwMFtdID0gewotCTB4MDAsIDB4MTMsIDB4 YmEsIDB4YjgsIDB4Y2IsIDB4MDAsIDB4NGIsCi0JMHgwMCwgMHhiMywgMHhiYywgMHhiNCwgMHhj NywgMHgwMCwgMHg1YywKLQkweDAwLCAweGFjLCAweGI4LCAweGI0LCAweGM4LCAweDAwLCAweDYy Ci19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0MF8yMl85MFtdID0gewotCTB4 MDAsIDB4MTMsIDB4YjksIDB4YjgsIDB4Y2QsIDB4MDAsIDB4NDYsCi0JMHgwMCwgMHhiMSwgMHhi YywgMHhiNSwgMHhjOCwgMHgwMCwgMHg1NiwKLQkweDAwLCAweGFhLCAweGI4LCAweGI0LCAweGM5 LCAweDAwLCAweDVkCi19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGxkOTA0MF8yMl84 MFtdID0gewotCTB4MDAsIDB4MTMsIDB4YmEsIDB4YjksIDB4Y2QsIDB4MDAsIDB4NDEsCi0JMHgw MCwgMHhiMCwgMHhiZSwgMHhiNSwgMHhjOSwgMHgwMCwgMHg1MSwKLQkweDAwLCAweGE5LCAweGI5 LCAweGI1LCAweGNhLCAweDAwLCAweDU3Ci19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50 IGxkOTA0MF8yMl83MFtdID0gewotCTB4MDAsIDB4MTMsIDB4YjksIDB4YjksIDB4ZDAsIDB4MDAs IDB4M2MsCi0JMHgwMCwgMHhhZiwgMHhiZiwgMHhiNiwgMHhjYiwgMHgwMCwgMHg0YiwKLQkweDAw LCAweGE4LCAweGI5LCAweGI1LCAweGNjLCAweDAwLCAweDUyCi19OwotCi1zdGF0aWMgY29uc3Qg dW5zaWduZWQgaW50IGxkOTA0MF8yMl81MFtdID0gewotCTB4MDAsIDB4MTMsIDB4YjIsIDB4YmEs IDB4ZDIsIDB4MDAsIDB4MzAsCi0JMHgwMCwgMHhhZiwgMHhjMCwgMHhiOCwgMHhjZCwgMHgwMCwg MHgzZCwKLQkweDAwLCAweGE4LCAweGI4LCAweGI3LCAweGNkLCAweDAwLCAweDQ0Ci19OwotCi1z dHJ1Y3QgbGQ5MDQwX2dhbW1hIHsKLQl1bnNpZ25lZCBpbnQgKmdhbW1hXzIyX3RhYmxlW01BWF9H QU1NQV9MRVZFTF07Ci19OwotCi1zdGF0aWMgc3RydWN0IGxkOTA0MF9nYW1tYSBnYW1tYV90YWJs ZSA9IHsKLQkuZ2FtbWFfMjJfdGFibGVbMF0gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl81 MCwKLQkuZ2FtbWFfMjJfdGFibGVbMV0gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl83MCwK LQkuZ2FtbWFfMjJfdGFibGVbMl0gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl84MCwKLQku Z2FtbWFfMjJfdGFibGVbM10gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl85MCwKLQkuZ2Ft bWFfMjJfdGFibGVbNF0gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl8xMDAsCi0JLmdhbW1h XzIyX3RhYmxlWzVdID0gKHVuc2lnbmVkIGludCAqKSZsZDkwNDBfMjJfMTEwLAotCS5nYW1tYV8y Ml90YWJsZVs2XSA9ICh1bnNpZ25lZCBpbnQgKikmbGQ5MDQwXzIyXzEyMCwKLQkuZ2FtbWFfMjJf dGFibGVbN10gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl8xMzAsCi0JLmdhbW1hXzIyX3Rh YmxlWzhdID0gKHVuc2lnbmVkIGludCAqKSZsZDkwNDBfMjJfMTQwLAotCS5nYW1tYV8yMl90YWJs ZVs5XSA9ICh1bnNpZ25lZCBpbnQgKikmbGQ5MDQwXzIyXzE1MCwKLQkuZ2FtbWFfMjJfdGFibGVb MTBdID0gKHVuc2lnbmVkIGludCAqKSZsZDkwNDBfMjJfMTYwLAotCS5nYW1tYV8yMl90YWJsZVsx MV0gPSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl8xNzAsCi0JLmdhbW1hXzIyX3RhYmxlWzEy XSA9ICh1bnNpZ25lZCBpbnQgKikmbGQ5MDQwXzIyXzE4MCwKLQkuZ2FtbWFfMjJfdGFibGVbMTNd ID0gKHVuc2lnbmVkIGludCAqKSZsZDkwNDBfMjJfMTkwLAotCS5nYW1tYV8yMl90YWJsZVsxNF0g PSAodW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl8yMDAsCi0JLmdhbW1hXzIyX3RhYmxlWzE1XSA9 ICh1bnNpZ25lZCBpbnQgKikmbGQ5MDQwXzIyXzIxMCwKLQkuZ2FtbWFfMjJfdGFibGVbMTZdID0g KHVuc2lnbmVkIGludCAqKSZsZDkwNDBfMjJfMjIwLAotCS5nYW1tYV8yMl90YWJsZVsxN10gPSAo dW5zaWduZWQgaW50ICopJmxkOTA0MF8yMl8yMzAsCi0JLmdhbW1hXzIyX3RhYmxlWzE4XSA9ICh1 bnNpZ25lZCBpbnQgKikmbGQ5MDQwXzIyXzI0MCwKLQkuZ2FtbWFfMjJfdGFibGVbMTldID0gKHVu c2lnbmVkIGludCAqKSZsZDkwNDBfMjJfMjUwLAotCS5nYW1tYV8yMl90YWJsZVsyMF0gPSAodW5z aWduZWQgaW50ICopJmxkOTA0MF8yMl8yNjAsCi0JLmdhbW1hXzIyX3RhYmxlWzIxXSA9ICh1bnNp Z25lZCBpbnQgKikmbGQ5MDQwXzIyXzI3MCwKLQkuZ2FtbWFfMjJfdGFibGVbMjJdID0gKHVuc2ln bmVkIGludCAqKSZsZDkwNDBfMjJfMjgwLAotCS5nYW1tYV8yMl90YWJsZVsyM10gPSAodW5zaWdu ZWQgaW50ICopJmxkOTA0MF8yMl8yOTAsCi0JLmdhbW1hXzIyX3RhYmxlWzI0XSA9ICh1bnNpZ25l ZCBpbnQgKikmbGQ5MDQwXzIyXzMwMCwKLX07Ci0KLSNlbmRpZgotLSAKMi4xNC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK