From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 2341B3858D39; Thu, 10 Mar 2022 16:01:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2341B3858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.90,171,1643702400"; d="diff'?scan'208";a="72827703" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa3.mentor.iphmx.com with ESMTP; 10 Mar 2022 08:01:41 -0800 IronPort-SDR: Jyz/JxxDhqu3nwXrHyoera/r8tKQlwC/6y8GH6anEz76zoZkGy/bqYccTCi5ZCnmnIo5fFPwT5 Ktlo7jGHutyg5wMGKdEKmtG8qKpZVri0MFTnCbrRmaV+hgfrJmR2DwEB+IV+bkml/79NNmzk12 gs1EnMsVotFPjZc/kBWpUfo+d/SKTnizUyqpYJW63UmgvH67nkotMNRaqCf8OCiph0voCcx7Vd zT62b/uQha+0IVPoo87CpXXBms8gGQ8Bqdz+Lep8YHwiGltYniM9ltheYh4Jooh/Of5v7IsOIz 1/o= Content-Type: multipart/mixed; boundary="------------CpOdaAtUZPKnPQocraYSkHhk" Message-ID: <769105da-a182-b49d-0bdb-f8bcc247d606@codesourcery.com> Date: Thu, 10 Mar 2022 17:01:35 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH] OpenMP, libgomp: Add new runtime routine omp_get_mapped_ptr. From: Marcel Vollweiler To: Jakub Jelinek References: <43ad60ea-875a-5f6f-106b-206ecd4807ba@codesourcery.com> <68edffe3-7e5b-f4db-a002-f33bbcdcf3d9@codesourcery.com> CC: , In-Reply-To: <68edffe3-7e5b-f4db-a002-f33bbcdcf3d9@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Mar 2022 16:01:45 -0000 --------------CpOdaAtUZPKnPQocraYSkHhk Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Jakub, This is an update to the patch from Tue Mar 8: https://gcc.gnu.org/pipermail/gcc-patches/2022-March/591343.html I just added "get_mapped_ptr" to the "omp_runtime_apis" array in omp-low.cc= and replaced "omp_get_num_devices" by "gomp_get_num_devices" in target.c. Marcel ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------CpOdaAtUZPKnPQocraYSkHhk Content-Type: text/plain; charset="UTF-8"; name="get-mapped-ptr-patch.diff" Content-Disposition: attachment; filename="get-mapped-ptr-patch.diff" Content-Transfer-Encoding: base64 T3Blbk1QLCBsaWJnb21wOiBBZGQgbmV3IHJ1bnRpbWUgcm91dGluZSBvbXBfZ2V0X21hcHBl ZF9wdHIuDQoNCmdjYy9DaGFuZ2VMb2c6DQoNCgkqIG9tcC1sb3cuY2MgKG9tcF9ydW50aW1l X2FwaV9jYWxsKTogQWRkZWQgZ2V0X21hcHBlZF9wdHIgdG8NCglvbXBfcnVudGltZV9hcGlz IGFycmF5Lg0KDQpsaWJnb21wL0NoYW5nZUxvZzoNCg0KCSogbGliZ29tcC5tYXA6IEFkZGVk IG9tcF9nZXRfbWFwcGVkX3B0ci4NCgkqIGxpYmdvbXAudGV4aTogVGFnZ2VkIG9tcF9nZXRf bWFwcGVkX3B0ciBhcyBzdXBwb3J0ZWQuDQoJKiBvbXAuaC5pbjogQWRkZWQgb21wX2dldF9t YXBwZWRfcHRyLg0KCSogb21wX2xpYi5mOTAuaW46IEFkZGVkIGludGVyZmFjZSBmb3Igb21w X2dldF9tYXBwZWRfcHRyLg0KCSogb21wX2xpYi5oLmluOiBMaWtld2lzZS4NCgkqIHRhcmdl dC5jIChvbXBfZ2V0X21hcHBlZF9wdHIpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZg0KCW9t cF9nZXRfbWFwcGVkX3B0ci4NCgkqIHRlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9n ZXQtbWFwcGVkLXB0ci0xLmM6IE5ldyB0ZXN0Lg0KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy1j KystY29tbW9uL2dldC1tYXBwZWQtcHRyLTIuYzogTmV3IHRlc3QuDQoJKiB0ZXN0c3VpdGUv bGliZ29tcC5jLWMrKy1jb21tb24vZ2V0LW1hcHBlZC1wdHItMy5jOiBOZXcgdGVzdC4NCgkq IHRlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9nZXQtbWFwcGVkLXB0ci00LmM6IE5l dyB0ZXN0Lg0KCSogdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9nZXQtbWFwcGVkLXB0ci0x LmY5MDogTmV3IHRlc3QuDQoJKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2dldC1tYXBw ZWQtcHRyLTIuZjkwOiBOZXcgdGVzdC4NCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v Z2V0LW1hcHBlZC1wdHItMy5mOTA6IE5ldyB0ZXN0Lg0KCSogdGVzdHN1aXRlL2xpYmdvbXAu Zm9ydHJhbi9nZXQtbWFwcGVkLXB0ci00LmY5MDogTmV3IHRlc3QuDQoNCmRpZmYgLS1naXQg YS9nY2Mvb21wLWxvdy5jYyBiL2djYy9vbXAtbG93LmNjDQppbmRleCA3NzE3NmVmLi4wMmEw ZjcyIDEwMDY0NA0KLS0tIGEvZ2NjL29tcC1sb3cuY2MNCisrKyBiL2djYy9vbXAtbG93LmNj DQpAQCAtMzk2Miw2ICszOTYyLDcgQEAgb21wX3J1bnRpbWVfYXBpX2NhbGwgKGNvbnN0X3Ry ZWUgZm5kZWNsKQ0KICAgICAgICJ0YXJnZXRfaXNfcHJlc2VudCIsDQogICAgICAgInRhcmdl dF9tZW1jcHkiLA0KICAgICAgICJ0YXJnZXRfbWVtY3B5X3JlY3QiLA0KKyAgICAgICJnZXRf bWFwcGVkX3B0ciIsDQogICAgICAgTlVMTCwNCiAgICAgICAvKiBOb3cgb21wXyogY2FsbHMg dGhhdCBhcmUgYXZhaWxhYmxlIGFzIG9tcF8qIGFuZCBvbXBfKl87IGhvd2V2ZXIsIHRoZQ0K IAkgREVDTF9OQU1FIGlzIGFsd2F5cyBvbXBfKiB3aXRob3V0IHRhaWxpbmcgdW5kZXJzY29y ZS4gICovDQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLm1hcCBiL2xpYmdvbXAvbGli Z29tcC5tYXANCmluZGV4IDJhYzU4MDkuLjYwOGE1NGMgMTAwNjQ0DQotLS0gYS9saWJnb21w L2xpYmdvbXAubWFwDQorKysgYi9saWJnb21wL2xpYmdvbXAubWFwDQpAQCAtMjI2LDYgKzIy NiwxMSBAQCBPTVBfNS4xIHsNCiAJb21wX2dldF90ZWFtc190aHJlYWRfbGltaXRfOw0KIH0g T01QXzUuMC4yOw0KIA0KK09NUF81LjEuMSB7DQorICBnbG9iYWw6DQorCW9tcF9nZXRfbWFw cGVkX3B0cjsNCit9IE9NUF81LjE7DQorDQogR09NUF8xLjAgew0KICAgZ2xvYmFsOg0KIAlH T01QX2F0b21pY19lbmQ7DQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLnRleGkgYi9s aWJnb21wL2xpYmdvbXAudGV4aQ0KaW5kZXggMTYxYTQyMy4uYzE2M2I1NiAxMDA2NDQNCi0t LSBhL2xpYmdvbXAvbGliZ29tcC50ZXhpDQorKysgYi9saWJnb21wL2xpYmdvbXAudGV4aQ0K QEAgLTMxNCw3ICszMTQsNyBAQCBUaGUgT3Blbk1QIDQuNSBzcGVjaWZpY2F0aW9uIGlzIGZ1 bGx5IHN1cHBvcnRlZC4NCiBAaXRlbSBAY29kZXtvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGV9 IHJ1bnRpbWUgcm91dGluZSBAdGFiIE4gQHRhYg0KIEBpdGVtIEBjb2Rle29tcF90YXJnZXRf bWVtY3B5X2FzeW5jfSBhbmQgQGNvZGV7b21wX3RhcmdldF9tZW1jcHlfcmVjdF9hc3luY30N CiAgICAgICBydW50aW1lIHJvdXRpbmVzIEB0YWIgTiBAdGFiDQotQGl0ZW0gQGNvZGV7b21w X2dldF9tYXBwZWRfcHRyfSBydW50aW1lIHJvdXRpbmUgQHRhYiBOIEB0YWINCitAaXRlbSBA Y29kZXtvbXBfZ2V0X21hcHBlZF9wdHJ9IHJ1bnRpbWUgcm91dGluZSBAdGFiIFkgQHRhYg0K IEBpdGVtIEBjb2Rle29tcF9jYWxsb2N9LCBAY29kZXtvbXBfcmVhbGxvY30sIEBjb2Rle29t cF9hbGlnbmVkX2FsbG9jfSBhbmQNCiAgICAgICBAY29kZXtvbXBfYWxpZ25lZF9jYWxsb2N9 IHJ1bnRpbWUgcm91dGluZXMgQHRhYiBZIEB0YWINCiBAaXRlbSBAY29kZXtvbXBfYWxsb2N0 cmFpdF9rZXlfdH0gZW51bTogQGNvZGV7b21wX2F0dl9zZXJpYWxpemVkfSBhZGRlZCwNCmRp ZmYgLS1naXQgYS9saWJnb21wL29tcC5oLmluIGIvbGliZ29tcC9vbXAuaC5pbg0KaW5kZXgg ODljNWQ2NS4uMThkMDE1MiAxMDA2NDQNCi0tLSBhL2xpYmdvbXAvb21wLmguaW4NCisrKyBi L2xpYmdvbXAvb21wLmguaW4NCkBAIC0yODIsNiArMjgyLDcgQEAgZXh0ZXJuIGludCBvbXBf dGFyZ2V0X21lbWNweV9yZWN0ICh2b2lkICosIGNvbnN0IHZvaWQgKiwgX19TSVpFX1RZUEVf XywgaW50LA0KIGV4dGVybiBpbnQgb21wX3RhcmdldF9hc3NvY2lhdGVfcHRyIChjb25zdCB2 b2lkICosIGNvbnN0IHZvaWQgKiwgX19TSVpFX1RZUEVfXywNCiAJCQkJICAgICBfX1NJWkVf VFlQRV9fLCBpbnQpIF9fR09NUF9OT1RIUk9XOw0KIGV4dGVybiBpbnQgb21wX3RhcmdldF9k aXNhc3NvY2lhdGVfcHRyIChjb25zdCB2b2lkICosIGludCkgX19HT01QX05PVEhST1c7DQor ZXh0ZXJuIHZvaWQgKm9tcF9nZXRfbWFwcGVkX3B0ciAoY29uc3Qgdm9pZCAqLCBpbnQpIF9f R09NUF9OT1RIUk9XOw0KIA0KIGV4dGVybiB2b2lkIG9tcF9zZXRfYWZmaW5pdHlfZm9ybWF0 IChjb25zdCBjaGFyICopIF9fR09NUF9OT1RIUk9XOw0KIGV4dGVybiBfX1NJWkVfVFlQRV9f IG9tcF9nZXRfYWZmaW5pdHlfZm9ybWF0IChjaGFyICosIF9fU0laRV9UWVBFX18pDQpkaWZm IC0tZ2l0IGEvbGliZ29tcC9vbXBfbGliLmY5MC5pbiBiL2xpYmdvbXAvb21wX2xpYi5mOTAu aW4NCmluZGV4IGRhZjQwZGMuLjUwNmYxNWMgMTAwNjQ0DQotLS0gYS9saWJnb21wL29tcF9s aWIuZjkwLmluDQorKysgYi9saWJnb21wL29tcF9saWIuZjkwLmluDQpAQCAtODM1LDYgKzgz NSwxNSBAQA0KICAgICAgICAgICBlbmQgZnVuY3Rpb24gb21wX3RhcmdldF9kaXNhc3NvY2lh dGVfcHRyDQogICAgICAgICBlbmQgaW50ZXJmYWNlDQogDQorICAgICAgICBpbnRlcmZhY2UN CisgICAgICAgICAgZnVuY3Rpb24gb21wX2dldF9tYXBwZWRfcHRyIChwdHIsIGRldmljZV9u dW0pIGJpbmQoYykNCisgICAgICAgICAgICB1c2UsIGludHJpbnNpYyA6OiBpc29fY19iaW5k aW5nLCBvbmx5IDogY19wdHIsIGNfaW50DQorICAgICAgICAgICAgdHlwZShjX3B0cikgOjog b21wX2dldF9tYXBwZWRfcHRyDQorICAgICAgICAgICAgdHlwZShjX3B0ciksIHZhbHVlIDo6 IHB0cg0KKyAgICAgICAgICAgIGludGVnZXIoY19pbnQpLCB2YWx1ZSA6OiBkZXZpY2VfbnVt DQorICAgICAgICAgIGVuZCBmdW5jdGlvbiBvbXBfZ2V0X21hcHBlZF9wdHINCisgICAgICAg IGVuZCBpbnRlcmZhY2UNCisNCiAjaWYgX09QRU5NUCA+PSAyMDE4MTENCiAhR0NDJCBBVFRS SUJVVEVTIERFUFJFQ0FURUQgOjogb21wX2dldF9uZXN0ZWQsIG9tcF9zZXRfbmVzdGVkDQog I2VuZGlmDQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBfbGliLmguaW4gYi9saWJnb21wL29t cF9saWIuaC5pbg0KaW5kZXggZmY4NTdhNC4uMGY0ODUxMCAxMDA2NDQNCi0tLSBhL2xpYmdv bXAvb21wX2xpYi5oLmluDQorKysgYi9saWJnb21wL29tcF9saWIuaC5pbg0KQEAgLTQxNiwz ICs0MTYsMTIgQEANCiAgICAgICAgICAgaW50ZWdlcihjX2ludCksIHZhbHVlIDo6IGRldmlj ZV9udW0NCiAgICAgICAgIGVuZCBmdW5jdGlvbiBvbXBfdGFyZ2V0X2Rpc2Fzc29jaWF0ZV9w dHINCiAgICAgICBlbmQgaW50ZXJmYWNlDQorDQorICAgICAgaW50ZXJmYWNlDQorICAgICAg ICBmdW5jdGlvbiBvbXBfZ2V0X21hcHBlZF9wdHIgKHB0ciwgZGV2aWNlX251bSkgYmluZChj KQ0KKyAgICAgICAgICB1c2UsIGludHJpbnNpYyA6OiBpc29fY19iaW5kaW5nLCBvbmx5IDog Y19wdHIsIGNfaW50DQorICAgICAgICAgIHR5cGUoY19wdHIpIDo6IG9tcF9nZXRfbWFwcGVk X3B0cg0KKyAgICAgICAgICB0eXBlKGNfcHRyKSwgdmFsdWUgOjogcHRyDQorICAgICAgICAg IGludGVnZXIoY19pbnQpLCB2YWx1ZSA6OiBkZXZpY2VfbnVtDQorICAgICAgICBlbmQgZnVu Y3Rpb24gb21wX2dldF9tYXBwZWRfcHRyDQorICAgICAgZW5kIGludGVyZmFjZQ0KZGlmZiAt LWdpdCBhL2xpYmdvbXAvdGFyZ2V0LmMgYi9saWJnb21wL3RhcmdldC5jDQppbmRleCA5MDE3 NDU4Li44NjkzMGVhIDEwMDY0NA0KLS0tIGEvbGliZ29tcC90YXJnZXQuYw0KKysrIGIvbGli Z29tcC90YXJnZXQuYw0KQEAgLTM2NjUsNiArMzY2NSw0NCBAQCBvbXBfdGFyZ2V0X2Rpc2Fz c29jaWF0ZV9wdHIgKGNvbnN0IHZvaWQgKnB0ciwgaW50IGRldmljZV9udW0pDQogICByZXR1 cm4gcmV0Ow0KIH0NCiANCit2b2lkICoNCitvbXBfZ2V0X21hcHBlZF9wdHIgKGNvbnN0IHZv aWQgKnB0ciwgaW50IGRldmljZV9udW0pDQorew0KKyAgaWYgKGRldmljZV9udW0gPCAwIHx8 IGRldmljZV9udW0gPiBnb21wX2dldF9udW1fZGV2aWNlcyAoKSkNCisgICAgcmV0dXJuIE5V TEw7DQorDQorICBpZiAoZGV2aWNlX251bSA9PSBvbXBfZ2V0X2luaXRpYWxfZGV2aWNlICgp KQ0KKyAgICByZXR1cm4gKHZvaWQgKikgcHRyOw0KKw0KKyAgc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyICpkZXZpY2VwID0gcmVzb2x2ZV9kZXZpY2UgKGRldmljZV9udW0pOw0KKyAgaWYg KGRldmljZXAgPT0gTlVMTCkNCisgICAgcmV0dXJuIE5VTEw7DQorDQorICBpZiAoIShkZXZp Y2VwLT5jYXBhYmlsaXRpZXMgJiBHT01QX09GRkxPQURfQ0FQX09QRU5NUF80MDApDQorICAg ICAgfHwgZGV2aWNlcC0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZMT0FEX0NBUF9TSEFSRURf TUVNKQ0KKyAgICByZXR1cm4gKHZvaWQgKikgcHRyOw0KKw0KKyAgZ29tcF9tdXRleF9sb2Nr ICgmZGV2aWNlcC0+bG9jayk7DQorDQorICBzdHJ1Y3Qgc3BsYXlfdHJlZV9zICptZW1fbWFw ID0gJmRldmljZXAtPm1lbV9tYXA7DQorICBzdHJ1Y3Qgc3BsYXlfdHJlZV9rZXlfcyBjdXJf bm9kZTsNCisgIHZvaWQgKnJldCA9IE5VTEw7DQorDQorICBjdXJfbm9kZS5ob3N0X3N0YXJ0 ID0gKHVpbnRwdHJfdCkgcHRyOw0KKyAgY3VyX25vZGUuaG9zdF9lbmQgPSBjdXJfbm9kZS5o b3N0X3N0YXJ0Ow0KKyAgc3BsYXlfdHJlZV9rZXkgbiA9IGdvbXBfbWFwXzBsZW5fbG9va3Vw IChtZW1fbWFwLCAmY3VyX25vZGUpOw0KKw0KKyAgaWYgKG4pDQorICAgIHsNCisgICAgICB1 aW50cHRyX3Qgb2Zmc2V0ID0gY3VyX25vZGUuaG9zdF9zdGFydCAtIG4tPmhvc3Rfc3RhcnQ7 DQorICAgICAgcmV0ID0gKHZvaWQgKikgKG4tPnRndC0+dGd0X3N0YXJ0ICsgbi0+dGd0X29m ZnNldCArIG9mZnNldCk7DQorICAgIH0NCisNCisgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZGV2 aWNlcC0+bG9jayk7DQorDQorICByZXR1cm4gcmV0Ow0KK30NCisNCiBpbnQNCiBvbXBfcGF1 c2VfcmVzb3VyY2UgKG9tcF9wYXVzZV9yZXNvdXJjZV90IGtpbmQsIGludCBkZXZpY2VfbnVt KQ0KIHsNCmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNv bW1vbi9nZXQtbWFwcGVkLXB0ci0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMt YysrLWNvbW1vbi9nZXQtbWFwcGVkLXB0ci0xLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwLi45N2E2MGNhDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnb21wL3Rl c3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9nZXQtbWFwcGVkLXB0ci0xLmMNCkBAIC0w LDAgKzEsNDEgQEANCisjaW5jbHVkZSA8b21wLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0K Kw0KK2ludA0KK21haW4gKCkNCit7DQorICBpbnQgZCA9IG9tcF9nZXRfZGVmYXVsdF9kZXZp Y2UgKCk7DQorICBpbnQgaWQgPSBvbXBfZ2V0X2luaXRpYWxfZGV2aWNlICgpOw0KKyAgdm9p ZCAqcCAsICpxOw0KKw0KKyAgaWYgKGQgPCAwIHx8IGQgPj0gb21wX2dldF9udW1fZGV2aWNl cyAoKSkNCisgICAgZCA9IGlkOw0KKw0KKyAgcCA9IG9tcF90YXJnZXRfYWxsb2MgKHNpemVv ZiAoaW50KSwgZCk7DQorICBpZiAocCA9PSBOVUxMKQ0KKyAgICByZXR1cm4gMDsNCisNCisg IGlmIChvbXBfdGFyZ2V0X2Fzc29jaWF0ZV9wdHIgKHEsIHAsIHNpemVvZiAoaW50KSwgMCwg ZCkgIT0gMCkNCisgICAgcmV0dXJuIDA7DQorDQorICBpZiAob21wX2dldF9tYXBwZWRfcHRy IChxLCAtMSkgIT0gTlVMTCkNCisgICAgYWJvcnQgKCk7DQorDQorICBpZiAob21wX2dldF9t YXBwZWRfcHRyIChxLCBvbXBfZ2V0X251bV9kZXZpY2VzICgpICsgMSkgIT0gTlVMTCkNCisg ICAgYWJvcnQgKCk7DQorDQorICBpZiAob21wX2dldF9tYXBwZWRfcHRyIChxLCBpZCkgIT0g cSkNCisgICAgYWJvcnQgKCk7DQorDQorICBpZiAob21wX2dldF9tYXBwZWRfcHRyIChxLCBk KSAhPSBwKQ0KKyAgICBhYm9ydCAoKTsNCisNCisgIGlmIChvbXBfdGFyZ2V0X2Rpc2Fzc29j aWF0ZV9wdHIgKHEsIGQpICE9IDApDQorICAgIGFib3J0ICgpOw0KKw0KKyAgaWYgKG9tcF9n ZXRfbWFwcGVkX3B0ciAocSwgZCkgIT0gTlVMTCkNCisgICAgYWJvcnQgKCk7DQorDQorICBv bXBfdGFyZ2V0X2ZyZWUgKHAsIGQpOw0KKyAgcmV0dXJuIDA7DQorfQ0KZGlmZiAtLWdpdCBh L2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2dldC1tYXBwZWQtcHRy LTIuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2dldC1tYXBw ZWQtcHRyLTIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjE5NGRh ZGUNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1j KystY29tbW9uL2dldC1tYXBwZWQtcHRyLTIuYw0KQEAgLTAsMCArMSwxMDYgQEANCisjaW5j bHVkZSA8b21wLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdGRpbnQu aD4NCisNCitpbnQNCittYWluICgpDQorew0KKyAgaW50IGQgPSBvbXBfZ2V0X2RlZmF1bHRf ZGV2aWNlICgpOw0KKyAgaW50IGlkID0gb21wX2dldF9pbml0aWFsX2RldmljZSAoKTsNCisg IGludCBhID0gNDI7DQorICBpbnQgYltdID0geyAyNCwgNDIgfTsNCisgIGludCBjW10gPSB7 IDQ3LCAxMSB9Ow0KKyAgaW50IGVbMTI4XTsNCisgIGludCAqcSA9ICZhOw0KKyAgdm9pZCAq cDEgPSBOVUxMLCAqcDIgPSBOVUxMLCAqcDMgPSBOVUxMOw0KKyAgdm9pZCAqZGV2cHRyc1sx MjhdOw0KKw0KKyAgaWYgKGQgPCAwIHx8IGQgPj0gb21wX2dldF9udW1fZGV2aWNlcyAoKSkN CisgICAgZCA9IGlkOw0KKw0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMjg7IGkrKykNCisg ICAgZVtpXSA9IGk7DQorDQorICAjcHJhZ21hIG9tcCB0YXJnZXQgZGF0YSBtYXAoYWxsb2M6 IGEsIGIsIGNbMV0sIGVbMzI6NjRdKSBkZXZpY2UoZCkNCisgIHsNCisgICAgI3ByYWdtYSBv bXAgdGFyZ2V0IG1hcChmcm9tOiBwMSwgcDIsIHAzLCBkZXZwdHJzKSBtYXAoYWxsb2M6IGEs IGIsIGNbMV0sIGVbMzI6NjRdKSBkZXZpY2UoZCkNCisgICAgew0KKyAgICAgIHAxID0gJmE7 DQorICAgICAgcDIgPSAmYjsNCisgICAgICBwMyA9ICZjWzFdOw0KKyAgICAgIGZvciAoaW50 IGkgPSAzMjsgaSA8IDk2OyBpKyspDQorCWRldnB0cnNbaV0gPSAmZVtpXTsNCisgICAgfQ0K Kw0KKyAgICBpZiAob21wX2dldF9tYXBwZWRfcHRyICgmYSwgZCkgIT0gKGQgPT0gaWQgPyAm YSA6IHAxKQ0KKwl8fCBvbXBfZ2V0X21hcHBlZF9wdHIgKHEsIGQpICE9IChkID09IGlkID8g cSA6IHAxKQ0KKwl8fCBvbXBfZ2V0X21hcHBlZF9wdHIgKGIsIGQpICE9IChkID09IGlkID8g YiA6IHAyKQ0KKwl8fCBvbXBfZ2V0X21hcHBlZF9wdHIgKCZiWzBdLCBkKSAhPSAoZCA9PSBp ZCA/ICZiWzBdIDogcDIpDQorCXx8IG9tcF9nZXRfbWFwcGVkX3B0ciAoJmNbMV0sIGQpICE9 IChkID09IGlkID8gJmNbMV0gOiBwMykNCisJfHwgb21wX2dldF9tYXBwZWRfcHRyICgmY1sw XSwgZCkgIT0gKGQgPT0gaWQgPyAmY1swXSA6IE5VTEwpKQ0KKyAgICAgIGFib3J0ICgpOw0K Kw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDMyOyBpKyspDQorICAgICAgaWYgKG9tcF9n ZXRfbWFwcGVkX3B0ciAoJmVbaV0sIGQpICE9IChkID09IGlkID8gJmVbaV0gOiBOVUxMKSkN CisJYWJvcnQgKCk7DQorICAgIGZvciAoaW50IGkgPSAzMjsgaSA8IDk2OyBpKyspDQorICAg ICAgaWYgKG9tcF9nZXRfbWFwcGVkX3B0ciAoJmVbaV0sIGQpICE9IChkID09IGlkID8gJmVb aV0gOiBkZXZwdHJzW2ldKSkNCisJYWJvcnQgKCk7DQorICAgIGZvciAoaW50IGkgPSA5Njsg aSA8IDEyODsgaSsrKQ0KKyAgICAgIGlmIChvbXBfZ2V0X21hcHBlZF9wdHIgKCZlW2ldLCBk KSAhPSAoZCA9PSBpZCA/ICZlW2ldIDogTlVMTCkpDQorCWFib3J0ICgpOw0KKyAgfQ0KKw0K KyAgaWYgKG9tcF9nZXRfbWFwcGVkX3B0ciAoJmEsIGQpICE9IChkID09IGlkID8gJmEgOiBO VUxMKQ0KKyAgICAgIHx8IG9tcF9nZXRfbWFwcGVkX3B0ciAocSwgZCkgIT0gKGQgPT0gaWQg PyBxIDogTlVMTCkNCisgICAgICB8fCBvbXBfZ2V0X21hcHBlZF9wdHIgKGIsIGQpICE9IChk ID09IGlkID8gYiA6IE5VTEwpDQorICAgICAgfHwgb21wX2dldF9tYXBwZWRfcHRyICgmYlsw XSwgZCkgIT0gKGQgPT0gaWQgPyAmYlswXSA6IE5VTEwpDQorICAgICAgfHwgb21wX2dldF9t YXBwZWRfcHRyICgmY1sxXSwgZCkgIT0gKGQgPT0gaWQgPyAmY1sxXSA6IE5VTEwpDQorICAg ICAgfHwgb21wX2dldF9tYXBwZWRfcHRyICgmY1swXSwgZCkgIT0gKGQgPT0gaWQgPyAmY1sw XSA6IE5VTEwpKQ0KKyAgICBhYm9ydCAoKTsNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTI4 OyBpKyspDQorICAgIGlmIChvbXBfZ2V0X21hcHBlZF9wdHIgKCZlW2ldLCBkKSAhPSAoZCA9 PSBpZCA/ICZlW2ldIDogTlVMTCkpDQorICAgICAgYWJvcnQgKCk7DQorDQorICAjcHJhZ21h IG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXAgKGFsbG9jOiBhLCBiLCBjWzFdLCBlWzMyOjY0 XSkgZGV2aWNlIChkKQ0KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IG1hcChmcm9tOiBwMSwgcDIs IHAzLCBkZXZwdHJzKSBtYXAoYWxsb2M6IGEsIGIsIGNbMV0sIGVbMzI6NjRdKSBkZXZpY2Uo ZCkNCisgIHsNCisgICAgcDEgPSAmYTsNCisgICAgcDIgPSAmYjsNCisgICAgcDMgPSAmY1sx XTsNCisgICAgZm9yIChpbnQgaSA9IDMyOyBpIDwgOTY7IGkrKykNCisgICAgICBkZXZwdHJz W2ldID0gJmVbaV07DQorICB9DQorDQorICBpZiAob21wX2dldF9tYXBwZWRfcHRyICgmYSwg ZCkgIT0gKGQgPT0gaWQgPyAmYSA6IHAxKQ0KKyAgICAgIHx8IG9tcF9nZXRfbWFwcGVkX3B0 ciAocSwgZCkgIT0gKGQgPT0gaWQgPyBxIDogcDEpDQorICAgICAgfHwgb21wX2dldF9tYXBw ZWRfcHRyIChiLCBkKSAhPSAoZCA9PSBpZCA/IGIgOiBwMikNCisgICAgICB8fCBvbXBfZ2V0 X21hcHBlZF9wdHIgKCZiWzBdLCBkKSAhPSAoZCA9PSBpZCA/ICZiWzBdIDogcDIpDQorICAg ICAgfHwgb21wX2dldF9tYXBwZWRfcHRyICgmY1sxXSwgZCkgIT0gKGQgPT0gaWQgPyAmY1sx XSA6IHAzKQ0KKyAgICAgIHx8IG9tcF9nZXRfbWFwcGVkX3B0ciAoJmNbMF0sIGQpICE9IChk ID09IGlkID8gJmNbMF0gOiBOVUxMKSkNCisgICAgYWJvcnQgKCk7DQorICBmb3IgKGludCBp ID0gMDsgaSA8IDMyOyBpKyspDQorICAgIGlmIChvbXBfZ2V0X21hcHBlZF9wdHIgKCZlW2ld LCBkKSAhPSAoZCA9PSBpZCA/ICZlW2ldIDogTlVMTCkpDQorICAgICAgYWJvcnQgKCk7DQor ICBmb3IgKGludCBpID0gMzI7IGkgPCA5NjsgaSsrKQ0KKyAgICBpZiAob21wX2dldF9tYXBw ZWRfcHRyICgmZVtpXSwgZCkgIT0gKGQgPT0gaWQgPyAmZVtpXSA6IGRldnB0cnNbaV0pKQ0K KyAgICAgIGFib3J0ICgpOw0KKyAgZm9yIChpbnQgaSA9IDk2OyBpIDwgMTI4OyBpKyspDQor ICAgIGlmIChvbXBfZ2V0X21hcHBlZF9wdHIgKCZlW2ldLCBkKSAhPSAoZCA9PSBpZCA/ICZl W2ldIDogTlVMTCkpDQorICAgICAgYWJvcnQgKCk7DQorDQorICAjcHJhZ21hIG9tcCB0YXJn ZXQgZXhpdCBkYXRhIG1hcCAoZGVsZXRlOiBhLCBiLCBjWzFdLCBlWzMyOjY0XSkgZGV2aWNl IChkKQ0KKw0KKyAgaWYgKG9tcF9nZXRfbWFwcGVkX3B0ciAoJmEsIGQpICE9IChkID09IGlk ID8gJmEgOiBOVUxMKQ0KKyAgICAgIHx8IG9tcF9nZXRfbWFwcGVkX3B0ciAocSwgZCkgIT0g KGQgPT0gaWQgPyBxIDogTlVMTCkNCisgICAgICB8fCBvbXBfZ2V0X21hcHBlZF9wdHIgKGIs IGQpICE9IChkID09IGlkID8gYiA6IE5VTEwpDQorICAgICAgfHwgb21wX2dldF9tYXBwZWRf cHRyICgmYlswXSwgZCkgIT0gKGQgPT0gaWQgPyAmYlswXSA6IE5VTEwpDQorICAgICAgfHwg b21wX2dldF9tYXBwZWRfcHRyICgmY1sxXSwgZCkgIT0gKGQgPT0gaWQgPyAmY1sxXSA6IE5V TEwpDQorICAgICAgfHwgb21wX2dldF9tYXBwZWRfcHRyICgmY1swXSwgZCkgIT0gKGQgPT0g aWQgPyAmY1swXSA6IE5VTEwpKQ0KKyAgICBhYm9ydCAoKTsNCisgIGZvciAoaW50IGkgPSAw OyBpIDwgMTI4OyBpKyspDQorICAgIGlmIChvbXBfZ2V0X21hcHBlZF9wdHIgKCZlW2ldLCBk KSAhPSAoZCA9PSBpZCA/ICZlW2ldIDogTlVMTCkpDQorICAgICAgYWJvcnQgKCk7DQorDQor ICByZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5jLWMrKy1jb21tb24vZ2V0LW1hcHBlZC1wdHItMy5jIGIvbGliZ29tcC90ZXN0c3VpdGUv bGliZ29tcC5jLWMrKy1jb21tb24vZ2V0LW1hcHBlZC1wdHItMy5jDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzQ3ZWY3NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vZ2V0LW1hcHBlZC1wdHIt My5jDQpAQCAtMCwwICsxLDUxIEBADQorI2luY2x1ZGUgPG9tcC5oPg0KKyNpbmNsdWRlIDxz dGRsaWIuaD4NCisNCitpbnQNCittYWluICgpDQorew0KKyAgaW50IGQgPSBvbXBfZ2V0X2Rl ZmF1bHRfZGV2aWNlICgpOw0KKyAgaW50IGlkID0gb21wX2dldF9pbml0aWFsX2RldmljZSAo KTsNCisgIGludCBhWzBdOw0KKyAgaW50IGJbXSA9IHsgMjQsIDQyIH07DQorICB2b2lkICpw MSA9IE5VTEwsICpwMiA9IE5VTEw7DQorDQorICBpZiAoZCA8IDAgfHwgZCA+PSBvbXBfZ2V0 X251bV9kZXZpY2VzICgpKQ0KKyAgICBkID0gaWQ7DQorDQorICB2b2lkICpwID0gb21wX3Rh cmdldF9hbGxvYyAoc2l6ZW9mIChpbnQpLCBkKTsNCisgIGlmIChwID09IE5VTEwpDQorICAg IHJldHVybiAwOw0KKw0KKyAgaWYgKG9tcF90YXJnZXRfYXNzb2NpYXRlX3B0ciAoYSwgcCwg c2l6ZW9mIChpbnQpLCAwLCBkKSAhPSAwKQ0KKyAgICByZXR1cm4gMDsNCisNCisgIGlmIChv bXBfZ2V0X21hcHBlZF9wdHIgKGEsIGQpICE9IChkID09IGlkID8gYSA6IHApKQ0KKyAgICBh Ym9ydCAoKTsNCisNCisgIGlmIChvbXBfdGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIgKGEsIGQp ICE9IDApDQorICAgIGFib3J0ICgpOw0KKw0KKyAgaWYgKG9tcF9nZXRfbWFwcGVkX3B0ciAo YSwgZCkgIT0gKGQgPT0gaWQgPyBhIDogTlVMTCkpDQorICAgIGFib3J0ICgpOw0KKw0KKyAg I3ByYWdtYSBvbXAgdGFyZ2V0IGRhdGEgbWFwKGFsbG9jOiBhLCBiWzE6MF0pIGRldmljZShk KQ0KKyAgew0KKyAgICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwKGZyb206IHAxLCBwMikgbWFw KGFsbG9jOiBhLCBiWzE6MF0pIGRldmljZShkKQ0KKyAgICB7DQorICAgICAgcDEgPSAmYTsN CisgICAgICBwMiA9ICZiWzFdOw0KKyAgICB9DQorDQorICAgIC8qIFRoaXMgaXMgcHJvYmFi bHkgZXhwZWN0ZWQgdG8gYmUgcDEvcDIgaW5zdGVhZCBvZiBOVUxMLiBaZXJvLWxlbmd0aCBh cnJheXMNCisgICAgICAgYXMgbGlzdCBpdGVtcyBvZiB0aGUgbWFwIGNsYXVzZSBhcmUgY3Vy cmVudGx5IG5vdCBpbnNlcnRlZCBpbnRvIHRoZSBtZW0NCisgICAgICAgbWFwID8hIEhvd2V2 ZXIgYnkgcmV0dXJuaW5nIE5VTEwsIG9tcF9nZXRfbWFwcGVkX3B0ciBpcyBjb25zaXN0ZW50 IHdpdGgNCisgICAgICAgb21wX3RhcmdldF9pc19wcmVzZW50LiAgKi8NCisgICAgaWYgKG9t cF9nZXRfbWFwcGVkX3B0ciAoYSwgZCkgIT0gTlVMTA0KKwl8fCBvbXBfZ2V0X21hcHBlZF9w dHIgKCZiWzFdLCBkKSAhPSBOVUxMKQ0KKyAgICAgIGFib3J0ICgpOw0KKyAgfQ0KKw0KKyAg b21wX3RhcmdldF9mcmVlIChwLCBkKTsNCisgIHJldHVybiAwOw0KK30NCmRpZmYgLS1naXQg YS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9nZXQtbWFwcGVkLXB0 ci00LmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9nZXQtbWFw cGVkLXB0ci00LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi42ZjRi ZDYyDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMt YysrLWNvbW1vbi9nZXQtbWFwcGVkLXB0ci00LmMNCkBAIC0wLDAgKzEsNDkgQEANCisjaW5j bHVkZSA8b21wLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKw0KK2ludA0KK21haW4gKCkN Cit7DQorICBpbnQgZCA9IG9tcF9nZXRfZGVmYXVsdF9kZXZpY2UgKCk7DQorICBpbnQgaWQg PSBvbXBfZ2V0X2luaXRpYWxfZGV2aWNlICgpOw0KKyAgc3RydWN0IHNfdCB7IGludCBtMTsg Y2hhciBtMjsgfSBzOw0KKyAgdm9pZCAqcDEgPSBOVUxMLCAqcDIgPSBOVUxMOw0KKw0KKyAg aWYgKGQgPCAwIHx8IGQgPj0gb21wX2dldF9udW1fZGV2aWNlcyAoKSkNCisgICAgZCA9IGlk Ow0KKw0KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRhdGEgbWFwKGFsbG9jOiBzLCBzLm0yKSBk ZXZpY2UoZCkNCisgIHsNCisgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IG1hcChmcm9tOiBwMSwg cDIpIG1hcChhbGxvYzogcywgcy5tMikgZGV2aWNlKGQpDQorICAgIHsNCisgICAgICBwMSA9 ICZzOw0KKyAgICAgIHAyID0gJnMubTI7DQorICAgIH0NCisgICAgaWYgKG9tcF9nZXRfbWFw cGVkX3B0ciAoJnMsIGQpICE9IChkID09IGlkID8gJnMgOiBwMSkNCisJfHwgb21wX2dldF9t YXBwZWRfcHRyICgmcy5tMiwgZCkgIT0gKGQgPT0gaWQgPyAmcy5tMiA6IHAyKSkNCisgICAg ICBhYm9ydCAoKTsNCisgIH0NCisNCisgIGlmIChvbXBfZ2V0X21hcHBlZF9wdHIgKCZzLCBk KSAhPSAoZCA9PSBpZCA/ICZzIDogTlVMTCkNCisgICAgICB8fCBvbXBfZ2V0X21hcHBlZF9w dHIgKCZzLm0yLCBkKSAhPSAoZCA9PSBpZCA/ICZzLm0yIDogTlVMTCkpDQorICAgIGFib3J0 ICgpOw0KKw0KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVyIGRhdGEgbWFwKGFsbG9jOiBz LCBzLm0yKSBkZXZpY2UgKGQpDQorICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwKGZyb206IHAx LCBwMikgbWFwKGFsbG9jOiBzLCBzLm0yKSBkZXZpY2UoZCkNCisgIHsNCisgICAgcDEgPSAm czsNCisgICAgcDIgPSAmcy5tMjsNCisgIH0NCisNCisgIGlmIChvbXBfZ2V0X21hcHBlZF9w dHIgKCZzLCBkKSAhPSAoZCA9PSBpZCA/ICZzIDogcDEpDQorICAgICAgfHwgb21wX2dldF9t YXBwZWRfcHRyICgmcy5tMiwgZCkgIT0gKGQgPT0gaWQgPyAmcy5tMiA6IHAyKSkNCisgICAg YWJvcnQgKCk7DQorDQorICAjcHJhZ21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoZGVs ZXRlOiBzLCBzLm0yKSBkZXZpY2UgKGQpDQorDQorICBpZiAob21wX2dldF9tYXBwZWRfcHRy ICgmcywgZCkgIT0gKGQgPT0gaWQgPyAmcyA6IE5VTEwpDQorICAgICAgfHwgb21wX2dldF9t YXBwZWRfcHRyICgmcy5tMiwgZCkgIT0gKGQgPT0gaWQgPyAmcy5tMiA6IE5VTEwpKQ0KKyAg ICBhYm9ydCAoKTsNCisNCisgIHJldHVybiAwOw0KK30NCmRpZmYgLS1naXQgYS9saWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vZ2V0LW1hcHBlZC1wdHItMS5mOTAgYi9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vZ2V0LW1hcHBlZC1wdHItMS5mOTANCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5kZTA1MTc5DQotLS0gL2Rldi9u dWxsDQorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vZ2V0LW1hcHBl ZC1wdHItMS5mOTANCkBAIC0wLDAgKzEsNDMgQEANCitwcm9ncmFtIG1haW4NCisgIHVzZSBv bXBfbGliDQorICB1c2UgaXNvX2NfYmluZGluZw0KKyAgaW1wbGljaXQgbm9uZSAoZXh0ZXJu YWwsIHR5cGUpDQorICBpbnRlZ2VyIDo6IGQsIGlkDQorICB0eXBlKGNfcHRyKSA6OiBwDQor ICBpbnRlZ2VyLCB0YXJnZXQgOjogcQ0KKw0KKyAgZCA9IG9tcF9nZXRfZGVmYXVsdF9kZXZp Y2UgKCkNCisgIGlkID0gb21wX2dldF9pbml0aWFsX2RldmljZSAoKQ0KKw0KKyAgaWYgKGQg PCAwIC5vci4gZCA+PSBvbXBfZ2V0X251bV9kZXZpY2VzICgpKSAmDQorICAgIGQgPSBpZA0K Kw0KKyAgcCA9IG9tcF90YXJnZXRfYWxsb2MgKGNfc2l6ZW9mIChxKSwgZCkNCisgIGlmICgu bm90LiBjX2Fzc29jaWF0ZWQgKHApKSAmDQorICAgIHN0b3AgMCAgISBva2F5DQorDQorICBp ZiAob21wX3RhcmdldF9hc3NvY2lhdGVfcHRyIChjX2xvYyAocSksIHAsIGNfc2l6ZW9mIChx KSwgJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMF9jX3NpemVfdCwgZCkg PT0gMCkgdGhlbg0KKw0KKyAgICBpZihjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0 ciAoY19sb2MgKHEpLCAtMSkpKSAmDQorICAgICAgc3RvcCAxDQorDQorICAgIGlmKGNfYXNz b2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAocSksICYNCisgICAgICAgICAg ICAgICAgICAgICBvbXBfZ2V0X251bV9kZXZpY2VzICgpICsgMSkpKSAmDQorICAgICAgc3Rv cCAyDQorDQorICAgIGlmKC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRy IChjX2xvYyAocSksIGlkKSwgY19sb2MgKHEpKSkgJg0KKyAgICAgIHN0b3AgMw0KKw0KKyAg ICBpZigubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKHEp LCBkKSwgcCkpICYNCisgICAgICBzdG9wIDQNCisNCisgICAgaWYgKG9tcF90YXJnZXRfZGlz YXNzb2NpYXRlX3B0ciAoY19sb2MgKHEpLCBkKSAvPSAwKSAmDQorICAgICAgc3RvcCA1DQor DQorICAgIGlmKGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAocSks IGQpKSkgJg0KKyAgICAgIHN0b3AgNg0KKyAgZW5kIGlmDQorDQorICBjYWxsIG9tcF90YXJn ZXRfZnJlZSAocCwgZCkNCitlbmQgcHJvZ3JhbSBtYWluDQpkaWZmIC0tZ2l0IGEvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2dldC1tYXBwZWQtcHRyLTIuZjkwIGIvbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2dldC1tYXBwZWQtcHRyLTIuZjkwDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNjZhMGI4OA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2dldC1tYXBw ZWQtcHRyLTIuZjkwDQpAQCAtMCwwICsxLDE3NSBAQA0KK3Byb2dyYW0gbWFpbg0KKyAgdXNl IG9tcF9saWINCisgIHVzZSBpc29fY19iaW5kaW5nDQorICBpbXBsaWNpdCBub25lIChleHRl cm5hbCwgdHlwZSkNCisgIGludGVnZXIgOjogZCwgaWQsIGksIGoNCisgIGludGVnZXIsIHRh cmdldCA6OiBhLCBiKDE6MiksIGMoMToyKSwgZSgwOjEyNykNCisgIHR5cGUoY19wdHIpIDo6 IHAxLCBwMiwgcDMsIHEsIGRldnB0cnMoMDo2MykNCisNCisgIGEgPSA0MjsNCisgIHEgPSBj X2xvYyAoYSk7DQorICBlID0gWyhpLCBpID0gMCwgMTI3KV0NCisNCisgIGQgPSBvbXBfZ2V0 X2RlZmF1bHRfZGV2aWNlICgpDQorICBpZCA9IG9tcF9nZXRfaW5pdGlhbF9kZXZpY2UgKCkN CisNCisgIGlmIChkIDwgMCAub3IuIGQgPj0gb21wX2dldF9udW1fZGV2aWNlcyAoKSkgJg0K KyAgICBkID0gaWQNCisNCisgIGlmIChkIC89IGlkKSB0aGVuDQorICAgICEkb21wIHRhcmdl dCBkYXRhIG1hcChhbGxvYzogYSwgYiwgYygyKSwgZSgzMjo5NSkpIGRldmljZShkKQ0KKyAg ICAgICEkb21wIHRhcmdldCBtYXAoZnJvbTogcDEsIHAyLCBwMywgZGV2cHRycykgbWFwKGFs bG9jOiBhLCBiLCBjKDIpLCBlKDMyOjk1KSkgZGV2aWNlKGQpDQorICAgICAgcDEgPSBjX2xv YyAoYSk7DQorICAgICAgcDIgPSBjX2xvYyAoYik7DQorICAgICAgcDMgPSBjX2xvYyAoYygy KSkNCisgICAgICBkZXZwdHJzID0gWyhjX2xvYyAoZShpKSksIGkgPSAzMiwgOTUpXQ0KKyAg ICAgICEkb21wIGVuZCB0YXJnZXQNCisNCisgICAgICBpZiAoLm5vdC4gY19hc3NvY2lhdGVk IChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChhKSwgZCksIHAxKSAmDQorICAgICAgICAg IC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKHEsIGQpLCBw MSkgJg0KKyAgICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBw ZWRfcHRyIChjX2xvYyAoYiksIGQpLCBwMikgJg0KKyAgICAgICAgICAub3IuIC5ub3QuIGNf YXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYigxKSksIGQpLCBwMikg Jg0KKyAgICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRf cHRyIChjX2xvYyAoYygyKSksIGQpLCBwMykgJg0KKyAgICAgICAgICAub3IuIGNfYXNzb2Np YXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYygxKSksIGQpKSkgJg0KKyAgICAg ICAgc3RvcCAwDQorDQorICAgICAgZG8gaiA9IDAsIDMxDQorICAgICAgICBpZiAoY19hc3Nv Y2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChlKGopKSwgZCkpKSAmDQorICAg ICAgICAgIHN0b3AgMQ0KKyAgICAgIGVuZCBkbw0KKyAgICAgIGRvIGogPSAzMiwgOTUNCisg ICAgICAgIGlmICgubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19s b2MgKGUoaikpLCBkKSwgZGV2cHRycyhqLTMyKSkpICYNCisgICAgICAgICAgc3RvcCAyDQor ICAgICAgZW5kIGRvDQorICAgICAgZG8gaiA9IDk2LCAxMjgNCisgICAgICAgIGlmIChjX2Fz c29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGUoaikpLCBkKSkpICYNCisg ICAgICAgICAgc3RvcCAzDQorICAgICAgZW5kIGRvDQorICAgICEkb21wIGVuZCB0YXJnZXQg ZGF0YQ0KKw0KKyAgICBpZiAoY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNf bG9jIChhKSwgZCkpICYNCisgICAgICAgIC5vci4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21h cHBlZF9wdHIgKHEsIGQpKSAmDQorICAgICAgICAub3IuIGNfYXNzb2NpYXRlZCAob21wX2dl dF9tYXBwZWRfcHRyIChjX2xvYyAoYiksIGQpKSAmDQorICAgICAgICAub3IuIGNfYXNzb2Np YXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYigxKSksIGQpKSAmDQorICAgICAg ICAub3IuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYygyKSks IGQpKSAmDQorICAgICAgICAub3IuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRy IChjX2xvYyAoYygxKSksIGQpKSkgJg0KKyAgICAgIHN0b3AgNA0KKyAgICAgIGRvIGogPSAw LCAxMjcNCisgICAgICAgIGlmIChjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAo Y19sb2MgKGUoaikpLCBkKSkpICYNCisgICAgICAgICAgc3RvcCA1DQorICAgICAgZW5kIGRv DQorDQorICAgICEkb21wIHRhcmdldCBlbnRlciBkYXRhIG1hcCAoYWxsb2M6IGEsIGIsIGMo MiksIGUoMzI6OTUpKSBkZXZpY2UgKGQpDQorICAgICAgISRvbXAgdGFyZ2V0IG1hcChmcm9t OiBwMSwgcDIsIHAzLCBkZXZwdHJzKSBtYXAoYWxsb2M6IGEsIGIsIGMoMiksIGUoMzI6OTUp KSBkZXZpY2UoZCkNCisgICAgICBwMSA9IGNfbG9jIChhKTsNCisgICAgICBwMiA9IGNfbG9j IChiKTsNCisgICAgICBwMyA9IGNfbG9jIChjKDIpKQ0KKyAgICAgIGRldnB0cnMgPSBbKGNf bG9jIChlKGkpKSwgaSA9IDMyLCA5NSldDQorICAgICAgISRvbXAgZW5kIHRhcmdldA0KKw0K KyAgICAgIGlmICgubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19s b2MgKGEpLCBkKSwgcDEpICYNCisgICAgICAgICAgLm9yLiAubm90LiBjX2Fzc29jaWF0ZWQg KG9tcF9nZXRfbWFwcGVkX3B0ciAocSwgZCksIHAxKSAmDQorICAgICAgICAgIC5vci4gLm5v dC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChiKSwgZCksIHAy KSAmDQorICAgICAgICAgIC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBl ZF9wdHIgKGNfbG9jIChjKDIpKSwgZCksIHAzKSAmDQorICAgICAgICAgIC5vci4gY19hc3Nv Y2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChjKDEpKSwgZCkpKSAmDQorICAg ICAgICBzdG9wIDYNCisNCisgICAgICBkbyBqID0gMCwgMzENCisgICAgICAgIGlmIChjX2Fz c29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGUoaikpLCBkKSkpICYNCisg ICAgICAgICAgc3RvcCA3DQorICAgICAgZW5kIGRvDQorICAgICAgZG8gaiA9IDMyLCA5NQ0K KyAgICAgICAgaWYgKC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChj X2xvYyAoZShqKSksIGQpLCBkZXZwdHJzKGotMzIpKSkgJg0KKyAgICAgICAgICBzdG9wIDgN CisgICAgICBlbmQgZG8NCisgICAgICBkbyBqID0gOTYsIDEyOA0KKyAgICAgICAgaWYgKGNf YXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoZShqKSksIGQpKSkgJg0K KyAgICAgICAgICBzdG9wIDkNCisgICAgICBlbmQgZG8NCisgICAgISRvbXAgdGFyZ2V0IGV4 aXQgZGF0YSBtYXAgKGRlbGV0ZTogYSwgYiwgYygyKSwgZSgzMjo5NSkpIGRldmljZSAoZCkN CisNCisgICAgaWYgKGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAo YSksIGQpKSAmDQorICAgICAgICAub3IuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRf cHRyIChxLCBkKSkgJg0KKyAgICAgICAgLm9yLiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFw cGVkX3B0ciAoY19sb2MgKGIpLCBkKSkgJg0KKyAgICAgICAgLm9yLiBjX2Fzc29jaWF0ZWQg KG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGIoMSkpLCBkKSkgJg0KKyAgICAgICAgLm9y LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGMoMSkpLCBkKSkg Jg0KKyAgICAgICAgLm9yLiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19s b2MgKGMoMikpLCBkKSkpICYNCisgICAgICBzdG9wIDEwDQorICAgIGRvIGogPSAwLCAxMjcN CisgICAgICBpZiAoY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChl KGopKSwgZCkpKSAmDQorICAgICAgICBzdG9wIDExDQorICAgIGVuZCBkbw0KKw0KKyAgZWxz ZSAhIGQgPT0gaWQNCisNCisgICAgISRvbXAgdGFyZ2V0IGRhdGEgbWFwKGFsbG9jOiBhLCBi LCBjKDIpLCBlKDMyOjk1KSkgZGV2aWNlKGQpDQorICAgICAgISRvbXAgdGFyZ2V0IG1hcChm cm9tOiBwMSwgcDIsIHAzLCBkZXZwdHJzKSBtYXAoYWxsb2M6IGEsIGIsIGMoMiksIGUoMzI6 OTUpKSBkZXZpY2UoZCkNCisgICAgICBwMSA9IGNfbG9jIChhKTsNCisgICAgICBwMiA9IGNf bG9jIChiKTsNCisgICAgICBwMyA9IGNfbG9jIChjKDIpKQ0KKyAgICAgIGRldnB0cnMgPSBb KGNfbG9jIChlKGkpKSwgaSA9IDMyLCA5NSldDQorICAgICAgISRvbXAgZW5kIHRhcmdldA0K Kw0KKyAgICAgIGlmICgubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAo Y19sb2MgKGEpLCBkKSwgY19sb2MgKGEpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNz b2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChxLCBkKSwgcSkgJg0KKyAgICAgICAgLm9y LiAubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGIpLCBk KSwgY19sb2MgKGIpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21w X2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYigxKSksIGQpLCBjX2xvYyAoYigxKSkpICYNCisg ICAgICAgIC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNf bG9jIChjKDIpKSwgZCksIGNfbG9jIChjKDIpKSkgJg0KKyAgICAgICAgLm9yLiAubm90LiBj X2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGMoMSkpLCBkKSwgY19s b2MgKGMoMSkpKSkgJg0KKyAgICAgIHN0b3AgMTINCisNCisgICAgICBkbyBqID0gMCwgMTI3 DQorICAgICAgICBpZiAoLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIg KGNfbG9jIChlKGopKSwgZCksIGNfbG9jIChlKGopKSkpICYNCisgICAgICAgICAgc3RvcCAx Mw0KKyAgICAgIGVuZCBkbw0KKyAgICAhJG9tcCBlbmQgdGFyZ2V0IGRhdGENCisNCisgICAg aWYgKC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYSks IGQpLCBjX2xvYyAoYSkpICYNCisgICAgICAgIC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChv bXBfZ2V0X21hcHBlZF9wdHIgKHEsIGQpLCBxKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNf YXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYiksIGQpLCBjX2xvYyAo YikpICYNCisgICAgICAgIC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBl ZF9wdHIgKGNfbG9jIChiKDEpKSwgZCksIGNfbG9jIChiKDEpKSkgJg0KKyAgICAgICAgLm9y LiAubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGMoMikp LCBkKSwgY19sb2MgKGMoMikpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRl ZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYygxKSksIGQpLCBjX2xvYyAoYygxKSkp KSAmDQorICAgICAgc3RvcCAxNA0KKyAgICBkbyBqID0gMCwgMTI3DQorICAgICAgaWYgKC5u b3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoZShqKSksIGQp KSkgJg0KKyAgICAgICAgc3RvcCAxNQ0KKyAgICBlbmQgZG8NCisNCisgICAgISRvbXAgdGFy Z2V0IGVudGVyIGRhdGEgbWFwIChhbGxvYzogYSwgYiwgYygyKSwgZSgzMjo5NSkpIGRldmlj ZSAoZCkNCisgICAgICAhJG9tcCB0YXJnZXQgbWFwKGZyb206IHAxLCBwMiwgcDMsIGRldnB0 cnMpIG1hcChhbGxvYzogYSwgYiwgYygyKSwgZSgzMjo5NSkpIGRldmljZShkKQ0KKyAgICAg IHAxID0gY19sb2MgKGEpOw0KKyAgICAgIHAyID0gY19sb2MgKGIpOw0KKyAgICAgIHAzID0g Y19sb2MgKGMoMikpDQorICAgICAgZGV2cHRycyA9IFsoY19sb2MgKGUoaSkpLCBpID0gMzIs IDk1KV0NCisgICAgICAhJG9tcCBlbmQgdGFyZ2V0DQorDQorICAgICAgaWYgKC5ub3QuIGNf YXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYSksIGQpLCBjX2xvYyAo YSkpICYNCisgICAgICAgIC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBl ZF9wdHIgKHEsIGQpLCBxKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAo b21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYiksIGQpLCBjX2xvYyAoYikpICYNCisgICAg ICAgIC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9j IChiKDEpKSwgZCksIGNfbG9jIChiKDEpKSkgJg0KKyAgICAgICAgLm9yLiAubm90LiBjX2Fz c29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKGMoMikpLCBkKSwgY19sb2Mg KGMoMikpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9t YXBwZWRfcHRyIChjX2xvYyAoYygxKSksIGQpLCBjX2xvYyAoYygxKSkpKSAmDQorICAgICAg ICBzdG9wIDE2DQorDQorICAgICAgZG8gaiA9IDAsIDEyNw0KKyAgICAgICAgaWYgKC5ub3Qu IGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAoZShqKSksIGQpLCBj X2xvYyAoZShqKSkpKSAmDQorICAgICAgICAgIHN0b3AgMTcNCisgICAgICBlbmQgZG8NCisg ICAgISRvbXAgdGFyZ2V0IGV4aXQgZGF0YSBtYXAgKGRlbGV0ZTogYSwgYiwgYygyKSwgZSgz Mjo5NSkpIGRldmljZSAoZCkNCisNCisgICAgaWYgKC5ub3QuIGNfYXNzb2NpYXRlZCAob21w X2dldF9tYXBwZWRfcHRyIChjX2xvYyAoYSksIGQpLCBjX2xvYyAoYSkpICYNCisgICAgICAg IC5vci4gLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKHEsIGQpLCBx KSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRf cHRyIChjX2xvYyAoYiksIGQpLCBjX2xvYyAoYikpICYNCisgICAgICAgIC5vci4gLm5vdC4g Y19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChiKDEpKSwgZCksIGNf bG9jIChiKDEpKSkgJg0KKyAgICAgICAgLm9yLiAubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9n ZXRfbWFwcGVkX3B0ciAoY19sb2MgKGMoMikpLCBkKSwgY19sb2MgKGMoMikpKSAmDQorICAg ICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xv YyAoYygxKSksIGQpLCBjX2xvYyAoYygxKSkpKSAmDQorICAgICAgc3RvcCAxOA0KKw0KKyAg ICBkbyBqID0gMCwgMTI3DQorICAgICAgaWYgKC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dl dF9tYXBwZWRfcHRyIChjX2xvYyAoZShqKSksIGQpLCBjX2xvYyAoZShqKSkpKSAmDQorICAg ICAgICBzdG9wIDE5DQorICAgIGVuZCBkbw0KKyAgZW5kIGlmDQorDQorZW5kIHByb2dyYW0g bWFpbg0KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9n ZXQtbWFwcGVkLXB0ci0zLmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJh bi9nZXQtbWFwcGVkLXB0ci0zLmY5MA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAuLjhlN2NjYWMNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuZm9ydHJhbi9nZXQtbWFwcGVkLXB0ci0zLmY5MA0KQEAgLTAsMCArMSw0OCBA QA0KK3Byb2dyYW0gbWFpbg0KKyAgdXNlIG9tcF9saWINCisgIHVzZSBpc29fY19iaW5kaW5n DQorICBpbXBsaWNpdCBub25lIChleHRlcm5hbCwgdHlwZSkNCisgIGludGVnZXIgOjogZCwg aWQNCisgIHR5cGUoY19wdHIpIDo6IHAsIHAxLCBwMg0KKyAgaW50ZWdlciwgdGFyZ2V0IDo6 IGEoMTowKSwgYigxOjIpDQorDQorICBkID0gb21wX2dldF9kZWZhdWx0X2RldmljZSAoKQ0K KyAgaWQgPSBvbXBfZ2V0X2luaXRpYWxfZGV2aWNlICgpDQorDQorICBpZiAoZCA8IDAgLm9y LiBkID49IG9tcF9nZXRfbnVtX2RldmljZXMgKCkpICYNCisgICAgZCA9IGlkDQorDQorICBw ID0gb21wX3RhcmdldF9hbGxvYyAoY19zaXplb2YgKGNfaW50KSwgZCkNCisgIGlmICgubm90 LiBjX2Fzc29jaWF0ZWQgKHApKSAmDQorICAgIHN0b3AgMCAgISBva2F5DQorDQorICBpZiAo b21wX3RhcmdldF9hc3NvY2lhdGVfcHRyIChjX2xvYyAoYSksIHAsIGNfc2l6ZW9mIChjX2lu dCksICYNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBfY19zaXplX3QsIGQp ID09IDApIHRoZW4NCisNCisgIGlmKC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBw ZWRfcHRyIChjX2xvYyAoYSksIGQpLCBwKSkgJg0KKyAgICBzdG9wIDENCisNCisgIGlmIChv bXBfdGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIgKGNfbG9jIChhKSwgZCkgLz0gMCkgJg0KKyAg ICBzdG9wIDINCisNCisgIGlmKGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChj X2xvYyAoYSksIGQpKSkgJg0KKyAgICBzdG9wIDMNCisNCisgICEkb21wIHRhcmdldCBkYXRh IG1hcChhbGxvYzogYSkgZGV2aWNlKGQpDQorICAgICEkb21wIHRhcmdldCBtYXAoZnJvbTog cDEpIG1hcChhbGxvYzogYSkgZGV2aWNlKGQpDQorICAgIHAxID0gY19sb2MgKGEpOw0KKyAg ICAhJG9tcCBlbmQgdGFyZ2V0DQorICAgIGlmIChjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFw cGVkX3B0ciAoY19sb2MgKGEpLCBkKSkpICYNCisgICAgICBzdG9wIDQNCisgICEkb21wIGVu ZCB0YXJnZXQgZGF0YQ0KKw0KKyAgISRvbXAgdGFyZ2V0IGRhdGEgbWFwKGFsbG9jOiBiKDE6 MCkpIGRldmljZShkKQ0KKyAgICAhJG9tcCB0YXJnZXQgbWFwKGZyb206IHAyKSBtYXAoYWxs b2M6IGIoMTowKSkgZGV2aWNlKGQpDQorICAgIHAyID0gY19sb2MgKGIoMSkpOw0KKyAgICAh JG9tcCBlbmQgdGFyZ2V0DQorICAgIGlmIChjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVk X3B0ciAoY19sb2MgKGIoMSkpLCBkKSkpICYNCisgICAgICBzdG9wIDUNCisgICEkb21wIGVu ZCB0YXJnZXQgZGF0YQ0KKyAgZW5kIGlmDQorICBjYWxsIG9tcF90YXJnZXRfZnJlZSAocCwg ZCkNCitlbmQgcHJvZ3JhbSBtYWluDQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUv bGliZ29tcC5mb3J0cmFuL2dldC1tYXBwZWQtcHRyLTQuZjkwIGIvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5mb3J0cmFuL2dldC1tYXBwZWQtcHRyLTQuZjkwDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNDMwMGE1NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2dldC1tYXBwZWQtcHRyLTQuZjkw DQpAQCAtMCwwICsxLDg0IEBADQorcHJvZ3JhbSBtYWluDQorICB1c2Ugb21wX2xpYg0KKyAg dXNlIGlzb19jX2JpbmRpbmcNCisgIGltcGxpY2l0IG5vbmUgKGV4dGVybmFsLCB0eXBlKQ0K KyAgaW50ZWdlciA6OiBkLCBpZA0KKyAgdHlwZShjX3B0cikgOjogcDEsIHAyDQorDQorICB0 eXBlIHQNCisgICAgaW50ZWdlciA6OiBtMSwgbTINCisgIGVuZCB0eXBlIHQNCisgIHR5cGUo dCksIHRhcmdldCA6OiBzDQorDQorICBkID0gb21wX2dldF9kZWZhdWx0X2RldmljZSAoKQ0K KyAgaWQgPSBvbXBfZ2V0X2luaXRpYWxfZGV2aWNlICgpDQorDQorICBpZiAoZCA8IDAgLm9y LiBkID49IG9tcF9nZXRfbnVtX2RldmljZXMgKCkpICYNCisgICAgZCA9IGlkDQorDQorICBp ZiAoZCAvPSBpZCkgdGhlbg0KKyAgICAhJG9tcCB0YXJnZXQgZGF0YSBtYXAoYWxsb2M6IHMs IHMlbTIpIGRldmljZShkKQ0KKyAgICAgICEkb21wIHRhcmdldCBtYXAoZnJvbTogcDEsIHAy KSBtYXAoYWxsb2M6IHMsIHMlbTIpIGRldmljZShkKQ0KKyAgICAgIHAxID0gY19sb2MgKHMp Ow0KKyAgICAgIHAyID0gY19sb2MgKHMlbTIpOw0KKyAgICAgICEkb21wIGVuZCB0YXJnZXQN CisNCisgICAgICBpZiAoLm5vdC4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIg KGNfbG9jIChzKSwgZCksIHAxKSAmDQorICAgICAgICAgIC5vci4gLm5vdC4gY19hc3NvY2lh dGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChzJW0yKSwgZCksIHAyKSkgJg0KKyAg ICAgICAgc3RvcCAwDQorICAgICEkb21wIGVuZCB0YXJnZXQgZGF0YQ0KKw0KKyAgICBpZiAo Y19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChzKSwgZCkpICYNCisg ICAgICAgIC5vci4gY19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChz JW0yKSwgZCkpKSAmDQorICAgICAgc3RvcCAxDQorDQorICAgICEkb21wIHRhcmdldCBlbnRl ciBkYXRhIG1hcCAoYWxsb2M6IHMsIHMlbTIpIGRldmljZSAoZCkNCisgICAgICAhJG9tcCB0 YXJnZXQgbWFwKGZyb206IHAxLCBwMikgbWFwKGFsbG9jOiBzLCBzJW0yKSBkZXZpY2UoZCkN CisgICAgICBwMSA9IGNfbG9jIChzKTsNCisgICAgICBwMiA9IGNfbG9jIChzJW0yKTsNCisg ICAgICAhJG9tcCBlbmQgdGFyZ2V0DQorDQorICAgICAgaWYgKC5ub3QuIGNfYXNzb2NpYXRl ZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAocyksIGQpLCBwMSkgJg0KKyAgICAgICAg ICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRfcHRyIChjX2xvYyAo cyVtMiksIGQpLCBwMikpICYNCisgICAgICAgIHN0b3AgMg0KKyAgICAhJG9tcCB0YXJnZXQg ZXhpdCBkYXRhIG1hcCAoZGVsZXRlOiBzLCBzJW0yKSBkZXZpY2UgKGQpDQorDQorICAgIGlm IChjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKHMpLCBkKSkgJg0K KyAgICAgICAgLm9yLiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2Mg KHMlbTIpLCBkKSkpICYNCisgICAgICBzdG9wIDMNCisNCisgIGVsc2UgISBkID09IGlkDQor DQorICAgICEkb21wIHRhcmdldCBkYXRhIG1hcChhbGxvYzogcywgcyVtMikgZGV2aWNlKGQp DQorICAgICAgISRvbXAgdGFyZ2V0IG1hcChmcm9tOiBwMSwgcDIpIG1hcChhbGxvYzogcywg cyVtMikgZGV2aWNlKGQpDQorICAgICAgcDEgPSBjX2xvYyAocyk7DQorICAgICAgcDIgPSBj X2xvYyAocyVtMik7DQorICAgICAgISRvbXAgZW5kIHRhcmdldA0KKw0KKyAgICAgIGlmICgu bm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKHMpLCBkKSwg Y19sb2MgKHMpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dl dF9tYXBwZWRfcHRyIChjX2xvYyAocyVtMiksIGQpLCBjX2xvYyAocyVtMikpKSAmDQorICAg ICAgICBzdG9wIDQNCisgICAgISRvbXAgZW5kIHRhcmdldCBkYXRhDQorDQorICAgIGlmICgu bm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKHMpLCBkKSwg Y19sb2MgKHMpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dl dF9tYXBwZWRfcHRyIChjX2xvYyAocyVtMiksIGQpLCBjX2xvYyAocyVtMikpKSAmDQorICAg ICAgc3RvcCA1DQorDQorICAgICEkb21wIHRhcmdldCBlbnRlciBkYXRhIG1hcCAoYWxsb2M6 IHMsIHMlbTIpIGRldmljZSAoZCkNCisgICAgICAhJG9tcCB0YXJnZXQgbWFwKGZyb206IHAx LCBwMikgbWFwKGFsbG9jOiBzLCBzJW0yKSBkZXZpY2UoZCkNCisgICAgICBwMSA9IGNfbG9j IChzKTsNCisgICAgICBwMiA9IGNfbG9jIChzJW0yKTsNCisgICAgICAhJG9tcCBlbmQgdGFy Z2V0DQorDQorICAgICAgaWYgKC5ub3QuIGNfYXNzb2NpYXRlZCAob21wX2dldF9tYXBwZWRf cHRyIChjX2xvYyAocyksIGQpLCBjX2xvYyAocykpICYNCisgICAgICAgIC5vci4gLm5vdC4g Y19hc3NvY2lhdGVkIChvbXBfZ2V0X21hcHBlZF9wdHIgKGNfbG9jIChzJW0yKSwgZCksIGNf bG9jIChzJW0yKSkpICYNCisgICAgICAgIHN0b3AgNg0KKw0KKyAgICAhJG9tcCB0YXJnZXQg ZXhpdCBkYXRhIG1hcCAoZGVsZXRlOiBzLCBzJW0yKSBkZXZpY2UgKGQpDQorDQorICAgIGlm ICgubm90LiBjX2Fzc29jaWF0ZWQgKG9tcF9nZXRfbWFwcGVkX3B0ciAoY19sb2MgKHMpLCBk KSwgY19sb2MgKHMpKSAmDQorICAgICAgICAub3IuIC5ub3QuIGNfYXNzb2NpYXRlZCAob21w X2dldF9tYXBwZWRfcHRyIChjX2xvYyAocyVtMiksIGQpLCBjX2xvYyAocyVtMikpKSAmDQor ICAgICAgc3RvcCA3DQorICBlbmQgaWYNCisNCitlbmQgcHJvZ3JhbSBtYWluDQo= --------------CpOdaAtUZPKnPQocraYSkHhk--