From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-3.sys.kth.se (smtp-3.sys.kth.se [IPv6:2001:6b0:1:1300:250:56ff:fea6:2de2]) by sourceware.org (Postfix) with ESMTPS id CAB5B3858C60 for ; Mon, 20 Sep 2021 09:38:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CAB5B3858C60 Received: from smtp-3.sys.kth.se (localhost.localdomain [127.0.0.1]) by smtp-3.sys.kth.se (Postfix) with ESMTP id C432B2B64 for ; Mon, 20 Sep 2021 11:38:20 +0200 (CEST) X-Virus-Scanned: by amavisd-new at kth.se Received: from smtp-3.sys.kth.se ([127.0.0.1]) by smtp-3.sys.kth.se (smtp-3.sys.kth.se [127.0.0.1]) (amavisd-new, port 10024) with LMTP id bCcSRNU2P6OA for ; Mon, 20 Sep 2021 11:38:19 +0200 (CEST) Received: from exdb5.ug.kth.se (exdb5.ug.kth.se [192.168.32.60]) by smtp-3.sys.kth.se (Postfix) with ESMTPS id 20A102DEC for ; Mon, 20 Sep 2021 11:38:18 +0200 (CEST) Received: from exdb6.ug.kth.se (192.168.32.61) by exdb5.ug.kth.se (192.168.32.60) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.858.15; Mon, 20 Sep 2021 11:38:18 +0200 Received: from exdb6.ug.kth.se ([192.168.32.61]) by exdb6.ug.kth.se ([192.168.32.61]) with mapi id 15.02.0858.015; Mon, 20 Sep 2021 11:38:18 +0200 From: Petter Tomner To: Petter Tomner , "jit@gcc.gnu.org" Subject: SV: [PATCH 1/2] jit: Add support for complex types Thread-Topic: [PATCH 1/2] jit: Add support for complex types Thread-Index: AQHXqcGHlGT6XCcQrEe4hOinJbeuvqusq60U Date: Mon, 20 Sep 2021 09:38:18 +0000 Message-ID: References: <38cabc705eaf4fe6b26e312b4c5a2cd9@kth.se>, In-Reply-To: Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [192.168.32.250] Content-Type: multipart/mixed; boundary="_002_bc47d4a2195346c695dcbf3e4c079a5bkthse_" MIME-Version: 1.0 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_PASS, SPF_PASS, TXREP 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: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Sep 2021 09:38:26 -0000 --_002_bc47d4a2195346c695dcbf3e4c079a5bkthse_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable While fiddling with another patch I noticed that the reproducer is broken f= or floating point numbers. I.e. any inf or nan will make the source file unable to compile. Also precision is lost in the = printf:s %f. Should be %a. My patch here has the same problem, but I will fix all floating point repro= ducer problems in my next patch. Also, I noticed my mail client seemed to have replaced tabs with spaces. I = put patch 1 as an attachment instead. Regards, --_002_bc47d4a2195346c695dcbf3e4c079a5bkthse_ Content-Type: text/x-patch; name="0001-jit-Support-for-complex-types.patch" Content-Description: 0001-jit-Support-for-complex-types.patch Content-Disposition: attachment; filename="0001-jit-Support-for-complex-types.patch"; size=28073; creation-date="Mon, 20 Sep 2021 09:35:34 GMT"; modification-date="Mon, 20 Sep 2021 09:35:34 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZjQ3YmJlYzVhODMzYjQ0NzBjYWU3Y2I2MzZhNWZiZjMxYzY0MzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXR0ZXIgVG9tbmVyIDx0b21uZXJAa3RoLnNlPgpEYXRlOiBU dWUsIDE0IFNlcCAyMDIxIDIzOjUxOjQxICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIGppdDog U3VwcG9ydCBmb3IgY29tcGxleCB0eXBlcwoKVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBvZiBjb21w bGV4IGZsb2F0aW5nIHBvaW50IHR5cGVzIHRvIGxpYmdjY2ppdC4KQSBuZXcgYmluYXJ5IG9wZXJh dG9yICdDT01QTEVYJyBpcyBhZGRlZCB0byBjcmVhdGUgY29tcGxleCB2YWx1ZXMKZnJvbSByZWFs IHZhbHVlcy4gQXN3ZWxsIGFzIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgY29tcGxleCBkb3VibGUK bGl0ZXJhbC4KClRvIG5vdGlmeSB1c2VycyBpZiBhIGJpbmFyeSBsaW5raW5nIHRvIGxpYmdjY2pp dCBkZXBlbmRzIG9uIGNvbXBsZXgKdHlwZXMsIGNvbXBsZXggdHlwZSBzdXBwb3J0IG1vc3QgYmUg ZW5hYmxlZCB3aXRoIGEgbmV3IG9wdGlvbiBmdW5jdGlvbi4KClNpZ25lZC1vZmYtYnk6CjIwMjEt MDktMTUJUGV0dGVyIFRvbW5lcgk8dG9tbmVyQGt0aC5zZT4KCmdjYy9qaXQvCgkqIGppdC1jb21t b24uaCAoSU5ORVJfQk9PTF9PUFRJT05fRU5BQkxFX0NPTVBMRVhfVFlQRVMpOiBuZXcKCSogaml0 LXBsYXliYWNrLmMgQ3JlYXRlIGltYWdpbmFyeSBsaXRlcmFscywgY29udmVyc2lvbnMKCSogaml0 LXJlY29yZGluZy5jIFJlcHJvZHVjZXIsIGRlYnVnIHN0cmluZ3MsIGZvcndhcmRpbmcKCSogaml0 LXJlY29yZGluZy5oCgkgIChmbG9hdF9zaXplX3F1YWwpOiBQb2xsIHNpemUgcXVhbGlmaWVyIG9m IGZsb2F0IHR5cGVzCgkgIChpc19jb21wbGV4KTogUG9sbCBpZiB0eXBlIGlzIGNvbXBsZXgKCSog bGliZ2Njaml0KysuaCBOZXcgZW50cnlwb2ludHMsIHNlZSBiZWxvdwoJKiBsaWJnY2NqaXQuYyBJ bXBsZW1lbnRhdGlvbiBvZiBuZXcgZW50cnkgcG9pbnRzCgkgIChnY2Nfaml0X2NvbnRleHRfZ2V0 X3R5cGUpOiBFeHRlbmQgcmFuZ2UgY2hlY2ssIHZhbGlkYXRpb24KCSAgKHZhbGlkX2JpbmFyeV9v cF9wKTogRXh0ZW5kIHJhbmdlIGNoZWNrCgkgIChnY2Nfaml0X2NvbnRleHRfbmV3X2JpbmFyeV9v cCk6IFZhbGlkYXRpb24KCSAgKGdjY19qaXRfY29udGV4dF9uZXdfdW5hcnlfb3ApOiBWYWxpZGF0 aW9uCgkgIChnY2Nfaml0X2NvbnRleHRfbmV3X2NvbXBhcmlzb24pOiBWYWxpZGF0aW9uCgkqIGxp YmdjY2ppdC5oCgkgIChnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2NvbXBsZXhfZG91 YmxlKTogTmV3CgkgIChHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVYKTogTmV3CgkgIChMSUJHQ0NK SVRfSEFWRV9DT01QTEVYKTogTmV3CgkgIChnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfZW5hYmxl X2NvbXBsZXhfdHlwZXMpOiBOZXcKCSogbGliZ2Njaml0Lm1hcCBBZGRlZCBuZXcgZW50cnlwb2lu dHMKCSAgKExJQkdDQ0pJVF9BQklfMTYpOiBOZXcKLS0tCiBnY2Mvaml0L2ppdC1jb21tb24uaCAg ICB8ICAgMSArCiBnY2Mvaml0L2ppdC1wbGF5YmFjay5jICB8IDE2NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCiBnY2Mvaml0L2ppdC1yZWNvcmRpbmcuYyB8IDExNiAr KysrKysrKysrKysrKysrKysrKysrKysrKystCiBnY2Mvaml0L2ppdC1yZWNvcmRpbmcuaCB8ICAy OCArKysrKysrCiBnY2Mvaml0L2xpYmdjY2ppdCsrLmggICB8ICAyMyArKysrKy0KIGdjYy9qaXQv bGliZ2Njaml0LmMgICAgIHwgIDk3ICsrKysrKysrKysrKysrKysrKysrKystCiBnY2Mvaml0L2xp YmdjY2ppdC5oICAgICB8ICA0NSArKysrKysrKysrLQogZ2NjL2ppdC9saWJnY2NqaXQubWFwICAg fCAgIDYgKysKIDggZmlsZXMgY2hhbmdlZCwgNDY4IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LWNvbW1vbi5oIGIvZ2NjL2ppdC9qaXQtY29t bW9uLmgKaW5kZXggZjg4ZTY3NTViMDAuLmJjMDQ1M2ZiYTA1IDEwMDY0NAotLS0gYS9nY2Mvaml0 L2ppdC1jb21tb24uaAorKysgYi9nY2Mvaml0L2ppdC1jb21tb24uaApAQCAtMTk4LDYgKzE5OCw3 IEBAIGVudW0gaW5uZXJfYm9vbF9vcHRpb24KIHsKICAgSU5ORVJfQk9PTF9PUFRJT05fQUxMT1df VU5SRUFDSEFCTEVfQkxPQ0tTLAogICBJTk5FUl9CT09MX09QVElPTl9VU0VfRVhURVJOQUxfRFJJ VkVSLAorICBJTk5FUl9CT09MX09QVElPTl9FTkFCTEVfQ09NUExFWF9UWVBFUywKIAogICBOVU1f SU5ORVJfQk9PTF9PUFRJT05TCiB9OwpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcGxheWJhY2su YyBiL2djYy9qaXQvaml0LXBsYXliYWNrLmMKaW5kZXggNTkzOTlkZWUyNTEuLjhlNDk3MTk1OGMz IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5jCisrKyBiL2djYy9qaXQvaml0LXBs YXliYWNrLmMKQEAgLTQwLDYgKzQwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJnY2MuaCIKICNpbmNsdWRlICJkaWFnbm9z dGljLmgiCiAjaW5jbHVkZSAic3RtdC5oIgorI2luY2x1ZGUgImNvbXBsZXguaCIKIAogI2luY2x1 ZGUgPHB0aHJlYWQuaD4KIApAQCAtNzgsNiArNzksOCBAQCBjb252ZXJ0ICh0cmVlIGRzdF90eXBl LCB0cmVlIGV4cHIpCiAgICAgY2FzZSBJTlRFR0VSX1RZUEU6CiAgICAgY2FzZSBFTlVNRVJBTF9U WVBFOgogICAgICAgcmV0dXJuIGZvbGQgKGNvbnZlcnRfdG9faW50ZWdlciAoZHN0X3R5cGUsIGV4 cHIpKTsKKyAgICBjYXNlIFJFQUxfVFlQRToKKyAgICAgIHJldHVybiBmb2xkIChjb252ZXJ0X3Rv X3JlYWwgKGRzdF90eXBlLCBleHByKSk7CiAKICAgICBkZWZhdWx0OgogICAgICAgZ2NjX2Fzc2Vy dCAoZ2NjOjpqaXQ6OmFjdGl2ZV9wbGF5YmFja19jdHh0KTsKQEAgLTY3OSw2ICs2ODIsMjQgQEAg bmV3X2dsb2JhbF9pbml0aWFsaXplZCAobG9jYXRpb24gKmxvYywKIG5hbWVzcGFjZSBwbGF5YmFj awogewogCisvKiBSZXR1cm4gdGhlIGNvcnJlbnNwb25kaW5nIG5vdCBjb21wbGV4IGZsb2F0IHR5 cGUgb2YgYQorICAgZmxvYXQgdHlwZS4gSS5lLiBjb21wbGV4IGZsb2F0IC0+IGZsb2F0ICovCitz dGF0aWMgdHJlZQorY29tcGxleF9yZWFsX3RvX3JlYWwgKHRyZWUgY29tcGxleF90eXBlKQorewor ICBpZiAoVFlQRV9DQU5PTklDQUwgKGNvbXBsZXhfdHlwZSkgPT0KKyAgICAgICAgICAgIFRZUEVf Q0FOT05JQ0FMIChjb21wbGV4X2Zsb2F0X3R5cGVfbm9kZSkpCisgICAgcmV0dXJuIGZsb2F0X3R5 cGVfbm9kZTsKKyAgZWxzZSBpZiAoVFlQRV9DQU5PTklDQUwgKGNvbXBsZXhfdHlwZSkgPT0KKwkg ICAgVFlQRV9DQU5PTklDQUwgKGNvbXBsZXhfZG91YmxlX3R5cGVfbm9kZSkpCisgICAgcmV0dXJu IGRvdWJsZV90eXBlX25vZGU7CisgIGVsc2UgaWYgKFRZUEVfQ0FOT05JQ0FMIChjb21wbGV4X3R5 cGUpID09CisJICAgIFRZUEVfQ0FOT05JQ0FMIChjb21wbGV4X2xvbmdfZG91YmxlX3R5cGVfbm9k ZSkpCisgICAgcmV0dXJuIGxvbmdfZG91YmxlX3R5cGVfbm9kZTsKKyAgZWxzZQorICAgIGdjY191 bnJlYWNoYWJsZSgpOworfQorCiAvKiBTcGVjaWFsaXphdGlvbiBvZiBtYWtpbmcgYW4gcnZhbHVl IGZyb20gYSBjb25zdCwgZm9yIGhvc3QgPGludD4uICAqLwogCiB0ZW1wbGF0ZSA8PgpAQCAtNjk0 LDYgKzcxNSwyNSBAQCBuZXdfcnZhbHVlX2Zyb21fY29uc3QgPGludD4gKHR5cGUgKnR5cGUsCiAg ICAgICB0cmVlIGlubmVyID0gYnVpbGRfaW50X2NzdCAoaW5uZXJfdHlwZSwgdmFsdWUpOwogICAg ICAgcmV0dXJuIG5ldyBydmFsdWUgKHRoaXMsIGlubmVyKTsKICAgICB9CisgIGVsc2UgaWYgKENP TVBMRVhfRkxPQVRfVFlQRV9QIChpbm5lcl90eXBlKSkKKyAgICB7CisgICAgICB0cmVlIHRyZWVf cmVhbDsKKyAgICAgIHRyZWUgdHJlZV9pbWFnOworICAgICAgdHJlZSByZWFsX3R5cGU7CisgICAg ICBSRUFMX1ZBTFVFX1RZUEUgcmVhbF92YWx1ZTsKKyAgICAgIFJFQUxfVkFMVUVfVFlQRSBpbWFn X3ZhbHVlOworCisgICAgICByZWFsX3R5cGUgPSBjb21wbGV4X3JlYWxfdG9fcmVhbCAoaW5uZXJf dHlwZSk7CisKKyAgICAgIHJlYWxfZnJvbV9pbnRlZ2VyICgmcmVhbF92YWx1ZSwgVk9JRG1vZGUs IHZhbHVlLCBTSUdORUQpOworICAgICAgcmVhbF9mcm9tX2ludGVnZXIgKCZpbWFnX3ZhbHVlLCBW T0lEbW9kZSwgMCwgU0lHTkVEKTsKKworICAgICAgdHJlZV9yZWFsID0gYnVpbGRfcmVhbCAocmVh bF90eXBlLCByZWFsX3ZhbHVlKTsKKyAgICAgIHRyZWVfaW1hZyA9IGJ1aWxkX3JlYWwgKHJlYWxf dHlwZSwgaW1hZ192YWx1ZSk7CisKKyAgICAgIHRyZWUgaW5uZXIgPSBidWlsZF9jb21wbGV4IChp bm5lcl90eXBlLCB0cmVlX3JlYWwsIHRyZWVfaW1hZyk7CisgICAgICByZXR1cm4gbmV3IHJ2YWx1 ZSAodGhpcywgaW5uZXIpOworICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIFJFQUxfVkFMVUVf VFlQRSByZWFsX3ZhbHVlOwpAQCAtNzE4LDYgKzc1OCwyNSBAQCBuZXdfcnZhbHVlX2Zyb21fY29u c3QgPGxvbmc+ICh0eXBlICp0eXBlLAogICAgICAgdHJlZSBpbm5lciA9IGJ1aWxkX2ludF9jc3Qg KGlubmVyX3R5cGUsIHZhbHVlKTsKICAgICAgIHJldHVybiBuZXcgcnZhbHVlICh0aGlzLCBpbm5l cik7CiAgICAgfQorICBlbHNlIGlmIChDT01QTEVYX0ZMT0FUX1RZUEVfUCAoaW5uZXJfdHlwZSkp CisgICAgeworICAgICAgdHJlZSB0cmVlX3JlYWw7CisgICAgICB0cmVlIHRyZWVfaW1hZzsKKyAg ICAgIHRyZWUgcmVhbF90eXBlOworICAgICAgUkVBTF9WQUxVRV9UWVBFIHJlYWxfdmFsdWU7Cisg ICAgICBSRUFMX1ZBTFVFX1RZUEUgaW1hZ192YWx1ZTsKKworICAgICAgcmVhbF90eXBlID0gY29t cGxleF9yZWFsX3RvX3JlYWwgKGlubmVyX3R5cGUpOworCisgICAgICByZWFsX2Zyb21faW50ZWdl ciAoJnJlYWxfdmFsdWUsIFZPSURtb2RlLCB2YWx1ZSwgU0lHTkVEKTsKKyAgICAgIHJlYWxfZnJv bV9pbnRlZ2VyICgmaW1hZ192YWx1ZSwgVk9JRG1vZGUsIDAsIFNJR05FRCk7CisKKyAgICAgIHRy ZWVfcmVhbCA9IGJ1aWxkX3JlYWwgKHJlYWxfdHlwZSwgcmVhbF92YWx1ZSk7CisgICAgICB0cmVl X2ltYWcgPSBidWlsZF9yZWFsIChyZWFsX3R5cGUsIGltYWdfdmFsdWUpOworCisgICAgICB0cmVl IGlubmVyID0gYnVpbGRfY29tcGxleCAoaW5uZXJfdHlwZSwgdHJlZV9yZWFsLCB0cmVlX2ltYWcp OworICAgICAgcmV0dXJuIG5ldyBydmFsdWUgKHRoaXMsIGlubmVyKTsKKyAgICB9CiAgIGVsc2UK ICAgICB7CiAgICAgICBSRUFMX1ZBTFVFX1RZUEUgcmVhbF92YWx1ZTsKQEAgLTc0MywxOSArODAy LDEwNCBAQCBuZXdfcnZhbHVlX2Zyb21fY29uc3QgPGRvdWJsZT4gKHR5cGUgKnR5cGUsCiAgICAg IHJlYWwuYzpyZWFsX2Zyb21fdGFyZ2V0IGFwcGVhcnMgdG8gcmVxdWlyZSB0aGUgcmVwcmVzZW50 YXRpb24gdG8gYmUKICAgICAgc3BsaXQgaW50byAzMi1iaXQgdmFsdWVzLCBhbmQgdGhlbiBzZW50 IGFzIGFuIHBhaXIgb2YgaG9zdCBsb25nCiAgICAgIGludHMuICAqLworCisgIHVuaW9uCisgIHsK KyAgICBkb3VibGUgYXNfZG91YmxlOworICAgIHVpbnQzMl90IGFzX3VpbnQzMnNbMl07CisgIH0g dV9yZWFsLCB1X2ltYWc7CisKKyAgdV9yZWFsLmFzX2RvdWJsZSA9IHZhbHVlOworICBsb25nIGlu dCBhc19sb25nX2ludHNbMl07CisgIGFzX2xvbmdfaW50c1swXSA9IHVfcmVhbC5hc191aW50MzJz WzBdOworICBhc19sb25nX2ludHNbMV0gPSB1X3JlYWwuYXNfdWludDMyc1sxXTsKKwogICBSRUFM X1ZBTFVFX1RZUEUgcmVhbF92YWx1ZTsKKyAgcmVhbF9mcm9tX3RhcmdldCAoJnJlYWxfdmFsdWUs IGFzX2xvbmdfaW50cywgREZtb2RlKTsKKworICBpZiAoQ09NUExFWF9GTE9BVF9UWVBFX1AgKGlu bmVyX3R5cGUpKQorICAgIHsKKyAgICAgIHRyZWUgdHJlZV9yZWFsOworICAgICAgdHJlZSB0cmVl X2ltYWc7CisgICAgICB0cmVlIHJlYWxfdHlwZTsKKworICAgICAgUkVBTF9WQUxVRV9UWVBFIGlt YWdfdmFsdWU7CisKKyAgICAgIGxvbmcgaW50IHplcm9fYXNfbG9uZ19pbnRzWzJdOworICAgICAg dV9pbWFnLmFzX2RvdWJsZSA9IDAuOworICAgICAgemVyb19hc19sb25nX2ludHNbMF0gPSB1X2lt YWcuYXNfdWludDMyc1swXTsKKyAgICAgIHplcm9fYXNfbG9uZ19pbnRzWzFdID0gdV9pbWFnLmFz X3VpbnQzMnNbMV07CisKKyAgICAgIHJlYWxfZnJvbV90YXJnZXQgKCZpbWFnX3ZhbHVlLCB6ZXJv X2FzX2xvbmdfaW50cywgREZtb2RlKTsKKworICAgICAgcmVhbF90eXBlID0gY29tcGxleF9yZWFs X3RvX3JlYWwgKGlubmVyX3R5cGUpOworCisgICAgICB0cmVlX3JlYWwgPSBidWlsZF9yZWFsIChy ZWFsX3R5cGUsIHJlYWxfdmFsdWUpOworICAgICAgdHJlZV9pbWFnID0gYnVpbGRfcmVhbCAocmVh bF90eXBlLCBpbWFnX3ZhbHVlKTsKKworICAgICAgdHJlZSBpbm5lciA9IGJ1aWxkX2NvbXBsZXgg KGlubmVyX3R5cGUsIHRyZWVfcmVhbCwgdHJlZV9pbWFnKTsKKyAgICAgIHJldHVybiBuZXcgcnZh bHVlICh0aGlzLCBpbm5lcik7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgdHJlZSBpbm5l ciA9IGJ1aWxkX3JlYWwgKGlubmVyX3R5cGUsIHJlYWxfdmFsdWUpOworICAgICAgcmV0dXJuIG5l dyBydmFsdWUgKHRoaXMsIGlubmVyKTsKKyAgICB9Cit9CisKKy8qIFNwZWNpYWxpemF0aW9uIG9m IG1ha2luZyBhbiBydmFsdWUgZnJvbSBhIGNvbnN0LAorICAgZm9yIGhvc3QgPGRvdWJsZSBfQ29t cGxleD4uICovCisKK3RlbXBsYXRlIDw+CitydmFsdWUgKgorY29udGV4dDo6CituZXdfcnZhbHVl X2Zyb21fY29uc3QgPF9Db21wbGV4IGRvdWJsZT4gKHR5cGUgKnR5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wbGV4IGRvdWJsZSAgdmFsdWUpCit7Cisg IHRyZWUgaW5uZXJfdHlwZSA9IHR5cGUtPmFzX3RyZWUgKCk7CisKICAgdW5pb24KICAgewogICAg IGRvdWJsZSBhc19kb3VibGU7CiAgICAgdWludDMyX3QgYXNfdWludDMyc1syXTsKLSAgfSB1Owot ICB1LmFzX2RvdWJsZSA9IHZhbHVlOworICB9IHVfcmVhbCwgdV9pbWFnOworCisgIHVfcmVhbC5h c19kb3VibGUgPSBjcmVhbCh2YWx1ZSk7CiAgIGxvbmcgaW50IGFzX2xvbmdfaW50c1syXTsKLSAg YXNfbG9uZ19pbnRzWzBdID0gdS5hc191aW50MzJzWzBdOwotICBhc19sb25nX2ludHNbMV0gPSB1 LmFzX3VpbnQzMnNbMV07CisgIGFzX2xvbmdfaW50c1swXSA9IHVfcmVhbC5hc191aW50MzJzWzBd OworICBhc19sb25nX2ludHNbMV0gPSB1X3JlYWwuYXNfdWludDMyc1sxXTsKKworICBSRUFMX1ZB TFVFX1RZUEUgcmVhbF92YWx1ZTsKICAgcmVhbF9mcm9tX3RhcmdldCAoJnJlYWxfdmFsdWUsIGFz X2xvbmdfaW50cywgREZtb2RlKTsKLSAgdHJlZSBpbm5lciA9IGJ1aWxkX3JlYWwgKGlubmVyX3R5 cGUsIHJlYWxfdmFsdWUpOwotICByZXR1cm4gbmV3IHJ2YWx1ZSAodGhpcywgaW5uZXIpOworCisg IGlmIChDT01QTEVYX0ZMT0FUX1RZUEVfUCAoaW5uZXJfdHlwZSkpCisgICAgeworICAgICAgdHJl ZSB0cmVlX3JlYWw7CisgICAgICB0cmVlIHRyZWVfaW1hZzsKKyAgICAgIHRyZWUgcmVhbF90eXBl OworCisgICAgICBSRUFMX1ZBTFVFX1RZUEUgaW1hZ192YWx1ZTsKKworICAgICAgbG9uZyBpbnQg dmFsdWVfYXNfbG9uZ19pbnRzWzJdOworICAgICAgdV9pbWFnLmFzX2RvdWJsZSA9IGNpbWFnKHZh bHVlKTsKKyAgICAgIHZhbHVlX2FzX2xvbmdfaW50c1swXSA9IHVfaW1hZy5hc191aW50MzJzWzBd OworICAgICAgdmFsdWVfYXNfbG9uZ19pbnRzWzFdID0gdV9pbWFnLmFzX3VpbnQzMnNbMV07CisK KyAgICAgIHJlYWxfZnJvbV90YXJnZXQgKCZpbWFnX3ZhbHVlLCB2YWx1ZV9hc19sb25nX2ludHMs IERGbW9kZSk7CisKKyAgICAgIHJlYWxfdHlwZSA9IGNvbXBsZXhfcmVhbF90b19yZWFsIChpbm5l cl90eXBlKTsKKworICAgICAgdHJlZV9yZWFsID0gYnVpbGRfcmVhbCAocmVhbF90eXBlLCByZWFs X3ZhbHVlKTsKKyAgICAgIHRyZWVfaW1hZyA9IGJ1aWxkX3JlYWwgKHJlYWxfdHlwZSwgaW1hZ192 YWx1ZSk7CisKKyAgICAgIHRyZWUgaW5uZXIgPSBidWlsZF9jb21wbGV4IChpbm5lcl90eXBlLCB0 cmVlX3JlYWwsIHRyZWVfaW1hZyk7CisgICAgICByZXR1cm4gbmV3IHJ2YWx1ZSAodGhpcywgaW5u ZXIpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHRyZWUgaW5uZXIgPSBidWlsZF9yZWFs IChpbm5lcl90eXBlLCByZWFsX3ZhbHVlKTsKKyAgICAgIHJldHVybiBuZXcgcnZhbHVlICh0aGlz LCBpbm5lcik7CisgICAgfQogfQogCiAvKiBTcGVjaWFsaXphdGlvbiBvZiBtYWtpbmcgYW4gcnZh bHVlIGZyb20gYSBjb25zdCwgZm9yIGhvc3QgPHZvaWQgKj4uICAqLwpAQCAtOTg1LDYgKzExMjks MTEgQEAgbmV3X2JpbmFyeV9vcCAobG9jYXRpb24gKmxvYywKICAgICBjYXNlIEdDQ19KSVRfQklO QVJZX09QX1JTSElGVDoKICAgICAgIGlubmVyX29wID0gUlNISUZUX0VYUFI7CiAgICAgICBicmVh azsKKworICAgIC8qIENyZWF0ZSBjb21wbGV4IHZhbHVlIGZyb20gdHdvIHJlYWwgdmFsdWVzICov CisgICAgY2FzZSBHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVYOgorICAgICAgaW5uZXJfb3AgPSBD T01QTEVYX0VYUFI7CisgICAgICBicmVhazsKICAgICB9CiAKICAgdHJlZSBpbm5lcl9leHByID0g YnVpbGQyIChpbm5lcl9vcCwKQEAgLTExNjMsNiArMTMxMiwxMCBAQCBwbGF5YmFjazo6Y29udGV4 dDo6YnVpbGRfY2FzdCAocGxheWJhY2s6OmxvY2F0aW9uICpsb2MsCiAJCSAgICAgIGJ1aWxkX2lu dF9jc3QgKFRSRUVfVFlQRSAodF9leHByKSwgMCkpOwogICAgICAgZ290byBtYXliZV9mb2xkOwog CisgICAgY2FzZSBDT01QTEVYX1RZUEU6CisgICAgICB0X3JldCA9IGNvbnZlcnRfdG9fY29tcGxl eCAodF9kc3RfdHlwZSwgdF9leHByKTsKKyAgICAgIGdvdG8gbWF5YmVfZm9sZDsKKwogICAgIGNh c2UgUkVBTF9UWVBFOgogICAgICAgdF9yZXQgPSBjb252ZXJ0X3RvX3JlYWwgKHRfZHN0X3R5cGUs IHRfZXhwcik7CiAgICAgICBnb3RvIG1heWJlX2ZvbGQ7CmRpZmYgLS1naXQgYS9nY2Mvaml0L2pp dC1yZWNvcmRpbmcuYyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5jCmluZGV4IDExN2ZmNzAxMTRj Li41NjVkMDc4ZDUxNyAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMKKysrIGIv Z2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMKQEAgLTI2LDYgKzI2LDcgQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJ0b3BsZXYuaCIK IAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxjb21wbGV4Lmg+CiAKICNpbmNsdWRl ICJqaXQtYnVpbHRpbnMuaCIKICNpbmNsdWRlICJqaXQtcmVjb3JkaW5nLmgiCkBAIC0xNjA5LDcg KzE2MTAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0CiBzdGF0aWMgY29uc3QgY2hhciAq IGNvbnN0CiAgaW5uZXJfYm9vbF9vcHRpb25fcmVwcm9kdWNlcl9zdHJpbmdzW05VTV9JTk5FUl9C T09MX09QVElPTlNdID0gewogICAiZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2FsbG93X3VucmVh Y2hhYmxlX2Jsb2NrcyIsCi0gICJnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfdXNlX2V4dGVybmFs X2RyaXZlciIKKyAgImdjY19qaXRfY29udGV4dF9zZXRfYm9vbF91c2VfZXh0ZXJuYWxfZHJpdmVy IiwKKyAgImdjY19qaXRfY29udGV4dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90eXBlcyIKIH07 CiAKIC8qIFdyaXRlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGFsbCBvcHRpb25zIHRvIHRoZSBsb2cg ZmlsZSAoaWYgYW55KS4gICovCkBAIC0yNDIzLDYgKzI0MjUsNTkgQEAgcmVjb3JkaW5nOjptZW1l bnRvX29mX2dldF90eXBlOjppc19mbG9hdCAoKSBjb25zdAogICAgIH0KIH0KIAorLyogSW1wbGVt ZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFsIGhvb2sgcmVjb3JkaW5nOjp0eXBlOjppc19jb21wbGV4 IGZvcgorICAgcmVjb3JkaW5nOjptZW1lbnRvX29mX2dldF90eXBlLiAgKi8KKworYm9vbAorcmVj b3JkaW5nOjptZW1lbnRvX29mX2dldF90eXBlOjppc19jb21wbGV4ICgpIGNvbnN0Cit7CisgIHN3 aXRjaCAobV9raW5kKQorICAgIHsKKyAgICBkZWZhdWx0OiBnY2NfdW5yZWFjaGFibGUgKCk7CisK KyAgICBjYXNlIEdDQ19KSVRfVFlQRV9WT0lEOgorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg Y2FzZSBHQ0NfSklUX1RZUEVfVk9JRF9QVFI6CisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBj YXNlIEdDQ19KSVRfVFlQRV9CT09MOgorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBH Q0NfSklUX1RZUEVfQ0hBUjoKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9TSUdORURfQ0hBUjoKKyAg ICBjYXNlIEdDQ19KSVRfVFlQRV9VTlNJR05FRF9DSEFSOgorICAgIGNhc2UgR0NDX0pJVF9UWVBF X1NIT1JUOgorICAgIGNhc2UgR0NDX0pJVF9UWVBFX1VOU0lHTkVEX1NIT1JUOgorICAgIGNhc2Ug R0NDX0pJVF9UWVBFX0lOVDoKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9VTlNJR05FRF9JTlQ6Cisg ICAgY2FzZSBHQ0NfSklUX1RZUEVfTE9ORzoKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9VTlNJR05F RF9MT05HOgorICAgIGNhc2UgR0NDX0pJVF9UWVBFX0xPTkdfTE9ORzoKKyAgICBjYXNlIEdDQ19K SVRfVFlQRV9VTlNJR05FRF9MT05HX0xPTkc6CisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBj YXNlIEdDQ19KSVRfVFlQRV9GTE9BVDoKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9ET1VCTEU6Cisg ICAgY2FzZSBHQ0NfSklUX1RZUEVfTE9OR19ET1VCTEU6CisgICAgICByZXR1cm4gZmFsc2U7CisK KyAgICBjYXNlIEdDQ19KSVRfVFlQRV9DT05TVF9DSEFSX1BUUjoKKyAgICAgIHJldHVybiBmYWxz ZTsKKworICAgIGNhc2UgR0NDX0pJVF9UWVBFX1NJWkVfVDoKKyAgICAgIHJldHVybiBmYWxzZTsK KworICAgIGNhc2UgR0NDX0pJVF9UWVBFX0ZJTEVfUFRSOgorICAgICAgcmV0dXJuIGZhbHNlOwor CisgICAgY2FzZSBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVDoKKyAgICBjYXNlIEdDQ19KSVRf VFlQRV9DT01QTEVYX0RPVUJMRToKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9DT01QTEVYX0xPTkdf RE9VQkxFOgorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCiAvKiBJbXBsZW1lbnRhdGlv biBvZiBwdXJlIHZpcnR1YWwgaG9vayByZWNvcmRpbmc6OnR5cGU6OmlzX2Jvb2wgZm9yCiAgICBy ZWNvcmRpbmc6Om1lbWVudG9fb2ZfZ2V0X3R5cGUuICAqLwogCkBAIC00NzA0LDYgKzQ3NTksNyBA QCByZWNvcmRpbmc6Omdsb2JhbDo6d3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAmcikKIHRl bXBsYXRlIGNsYXNzIHJlY29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fY29uc3Qg PGludD47CiB0ZW1wbGF0ZSBjbGFzcyByZWNvcmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9m cm9tX2NvbnN0IDxsb25nPjsKIHRlbXBsYXRlIGNsYXNzIHJlY29yZGluZzo6bWVtZW50b19vZl9u ZXdfcnZhbHVlX2Zyb21fY29uc3QgPGRvdWJsZT47Cit0ZW1wbGF0ZSBjbGFzcyByZWNvcmRpbmc6 Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxfQ29tcGxleCBkb3VibGU+OwogdGVt cGxhdGUgY2xhc3MgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9jb25zdCA8 dm9pZCAqPjsKIAogLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHB1cmUgdmlydHVhbCBob29rIHJl Y29yZGluZzo6bWVtZW50bzo6cmVwbGF5X2ludG8KQEAgLTQ4ODEsNiArNDkzNyw1MSBAQCByZWNv cmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxkb3VibGU+Ojp3cml0ZV9y ZXByb2R1Y2VyIChyZXByb2R1YwogICAgIG1fdmFsdWUpOwogfQogCisvKiBUaGUgbWFrZV9kZWJ1 Z19zdHJpbmcgc3BlY2lhbGl6YXRpb24gZm9yIDxkb3VibGUgY29tcGxleD4sIHJlbmRlcmluZyBp dCBhcworICAgICAoVEFSR0VUX1RZUEUpTElURVJBTAorICAgZS5nLgorICAgICAiKGNvbXBsZXgg ZmxvYXQpKDQyLjArNDIuMGopIi4gICovCisKK3RlbXBsYXRlIDw+CitzdHJpbmcgKgorbWVtZW50 b19vZl9uZXdfcnZhbHVlX2Zyb21fY29uc3QgPF9Db21wbGV4IGRvdWJsZT46Om1ha2VfZGVidWdf c3RyaW5nICgpCit7CisgIGRvdWJsZSByZWFsID0gY3JlYWwobV92YWx1ZSk7CisgIGRvdWJsZSBp bWFnID0gY2ltYWcobV92YWx1ZSk7CisgIHJldHVybiBzdHJpbmc6OmZyb21fcHJpbnRmIChtX2N0 eHQsCisgICAgICAgICAgICAgICAgICAiKCVzKSglZyUrZ2opIiwKKyAgICAgICAgICAgICAgICAg IG1fdHlwZS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKyAgICAgICAgICAgICAgICAgIHJlYWwsIGlt YWcpOworfQorCisvKiBUaGUgZ2V0X3dpZGVfaW50IHNwZWNpYWxpemF0aW9uIGZvciA8ZG91Ymxl IGNvbXBsZXg+LiAgKi8KKwordGVtcGxhdGUgPD4KK2Jvb2wKK21lbWVudG9fb2ZfbmV3X3J2YWx1 ZV9mcm9tX2NvbnN0IDxfQ29tcGxleCBkb3VibGU+OjpnZXRfd2lkZV9pbnQgKHdpZGVfaW50ICop IGNvbnN0Cit7CisgIHJldHVybiBmYWxzZTsKK30KKworLyogVGhlIHdyaXRlX3JlcHJvZHVjZXIg c3BlY2lhbGl6YXRpb24gZm9yIDxkb3VibGU+LiAgKi8KKwordGVtcGxhdGUgPD4KK3ZvaWQKK3Jl Y29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fY29uc3QgPF9Db21wbGV4IGRvdWJs ZT46OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCit7CisgIGNvbnN0IGNoYXIgKmlk ID0gci5tYWtlX2lkZW50aWZpZXIgKHRoaXMsICJydmFsdWUiKTsKKyAgZG91YmxlIHJlYWwgPSBj cmVhbChtX3ZhbHVlKTsKKyAgZG91YmxlIGltYWcgPSBjaW1hZyhtX3ZhbHVlKTsKKyAgci53cml0 ZSAoIiAgZ2NjX2ppdF9ydmFsdWUgKiVzID1cbiIKKyAgICAiICAgIGdjY19qaXRfY29udGV4dF9u ZXdfcnZhbHVlX2Zyb21fY29tcGxleF9kb3VibGUgKCVzLCAvKiBnY2Nfaml0X2NvbnRleHQgKmN0 eHQgKi9cbiIKKyAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAlcywgLyogZ2NjX2ppdF90eXBlICpudW1lcmljX3R5cGUgKi9cbiIKKyAgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlZislZmopOyAvKiBkb3VibGUgdmFs dWUgKi9cbiIsCisgICAgaWQsCisgICAgci5nZXRfaWRlbnRpZmllciAoZ2V0X2NvbnRleHQgKCkp LAorICAgIHIuZ2V0X2lkZW50aWZpZXJfYXNfdHlwZSAobV90eXBlKSwKKyAgICByZWFsLCBpbWFn KTsKK30KKwogLyogVGhlIG1ha2VfZGVidWdfc3RyaW5nIHNwZWNpYWxpemF0aW9uIGZvciA8dm9p ZCAqPiwgcmVuZGVyaW5nIGl0IGFzCiAgICAgIChUQVJHRVRfVFlQRSlIRVgKICAgIGUuZy4KQEAg LTUxNzgsMTMgKzUyNzksMjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBiaW5hcnlfb3Bf c3RyaW5nc1tdID0gewogICAifHwiLCAvKiBHQ0NfSklUX0JJTkFSWV9PUF9MT0dJQ0FMX09SICov CiAgICI8PCIsIC8qIEdDQ19KSVRfQklOQVJZX09QX0xTSElGVCAqLwogICAiPj4iLCAvKiBHQ0Nf SklUX0JJTkFSWV9PUF9SU0hJRlQgKi8KKyAgIiIsIC8qIEdDQ19KSVRfQklOQVJZX09QX0NPTVBM RVggLSBkdW1teSBub3QgdXNlZCAqLwogfTsKIAogcmVjb3JkaW5nOjpzdHJpbmcgKgogcmVjb3Jk aW5nOjpiaW5hcnlfb3A6Om1ha2VfZGVidWdfc3RyaW5nICgpCiB7CiAgIGVudW0gcHJlY2VkZW5j ZSBwcmVjID0gZ2V0X3ByZWNlZGVuY2UgKCk7Ci0gIHJldHVybiBzdHJpbmc6OmZyb21fcHJpbnRm IChtX2N0eHQsCisgIGlmIChtX29wID09IEdDQ19KSVRfQklOQVJZX09QX0NPTVBMRVgpCisgICAg cmV0dXJuIHN0cmluZzo6ZnJvbV9wcmludGYgKG1fY3R4dCwKKwkJCSAgICAgICIoJXMgKyAlcyAq IF9JbWFnaW5hcnlfSSkiLAorCQkJICAgICAgbV9hLT5nZXRfZGVidWdfc3RyaW5nX3BhcmVucyAo cHJlYyksCisJCQkgICAgICBtX2ItPmdldF9kZWJ1Z19zdHJpbmdfcGFyZW5zIChwcmVjKSk7Cisg IGVsc2UKKyAgICByZXR1cm4gc3RyaW5nOjpmcm9tX3ByaW50ZiAobV9jdHh0LAogCQkJICAgICAg IiVzICVzICVzIiwKIAkJCSAgICAgIG1fYS0+Z2V0X2RlYnVnX3N0cmluZ19wYXJlbnMgKHByZWMp LAogCQkJICAgICAgYmluYXJ5X29wX3N0cmluZ3NbbV9vcF0sCkBAIC01MjAzLDcgKzUzMTEsOCBA QCBjb25zdCBjaGFyICogY29uc3QgYmluYXJ5X29wX3JlcHJvZHVjZXJfc3RyaW5nc1tdID0gewog ICAiR0NDX0pJVF9CSU5BUllfT1BfTE9HSUNBTF9BTkQiLAogICAiR0NDX0pJVF9CSU5BUllfT1Bf TE9HSUNBTF9PUiIsCiAgICJHQ0NfSklUX0JJTkFSWV9PUF9MU0hJRlQiLAotICAiR0NDX0pJVF9C SU5BUllfT1BfUlNISUZUIgorICAiR0NDX0pJVF9CSU5BUllfT1BfUlNISUZUIiwKKyAgIkdDQ19K SVRfQklOQVJZX09QX0NPTVBMRVgiLAogfTsKIAogLyogSW1wbGVtZW50YXRpb24gb2YgcmVjb3Jk aW5nOjptZW1lbnRvOjp3cml0ZV9yZXByb2R1Y2VyIGZvciBiaW5hcnkgb3BzLiAgKi8KQEAgLTUy NDQsNiArNTM1Myw3IEBAIHN0YXRpYyBjb25zdCBlbnVtIHByZWNlZGVuY2UgYmluYXJ5X29wX3By ZWNlZGVuY2VbXSA9IHsKICAgUFJFQ0VERU5DRV9MT0dJQ0FMX09SLCAvKiBHQ0NfSklUX0JJTkFS WV9PUF9MT0dJQ0FMX09SICovCiAgIFBSRUNFREVOQ0VfU0hJRlQsIC8qIEdDQ19KSVRfQklOQVJZ X09QX0xTSElGVCAqLwogICBQUkVDRURFTkNFX1NISUZULCAvKiBHQ0NfSklUX0JJTkFSWV9PUF9S U0hJRlQgKi8KKyAgUFJFQ0VERU5DRV9DQVNULCAvKiBHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVY ICovCiB9OwogfSAvKiBuYW1lc3BhY2UgcmVjb3JkaW5nICovCiAKZGlmZiAtLWdpdCBhL2djYy9q aXQvaml0LXJlY29yZGluZy5oIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKaW5kZXggMDNmYTEx NjBjZjAuLmQ1ZTBjMzU5YTQ4IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaAor KysgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaApAQCAtNTQ0LDEwICs1NDQsMTQgQEAgcHVibGlj OgogICB2aXJ0dWFsIGJvb2wgaXNfaW50ICgpIGNvbnN0ID0gMDsKICAgdmlydHVhbCBib29sIGlz X2Zsb2F0ICgpIGNvbnN0ID0gMDsKICAgdmlydHVhbCBib29sIGlzX2Jvb2wgKCkgY29uc3QgPSAw OworICB2aXJ0dWFsIGJvb2wgaXNfY29tcGxleCAoKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgdHlw ZSAqaXNfcG9pbnRlciAoKSA9IDA7CiAgIHZpcnR1YWwgdHlwZSAqaXNfYXJyYXkgKCkgPSAwOwog ICB2aXJ0dWFsIGJvb2wgaXNfdm9pZCAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICB2aXJ0 dWFsIGJvb2wgaGFzX2tub3duX3NpemUgKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAvKiBV c2VkIHRvIHBhaXIgY29tcGxleCBmbG9hdCB0eXBlcyB3aXRoIHJlYWwgZmxvYXQgdHlwZQorICAg ICBvZiB0aGUgc2FtZSAiYmFzZSB0eXBlIi4gKi8KKyAgdmlydHVhbCBpbnQgZmxvYXRfc2l6ZV9x dWFsICgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICBib29sIGlzX251bWVyaWMgKCkgY29uc3QK ICAgewpAQCAtNTk4LDkgKzYwMiwyOCBAQCBwdWJsaWM6CiAgICAgcmV0dXJuIHR5cGU6OmFjY2Vw dHNfd3JpdGVzX2Zyb20gKHJ0eXBlKTsKICAgfQogCisgIGludCBmbG9hdF9zaXplX3F1YWwgKCkg Y29uc3QgRklOQUwgT1ZFUlJJREUKKyAgeworICAgIHN3aXRjaCAobV9raW5kKQorICAgICAgewor ICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gMDsKKyAgICAgIGNhc2UgR0NDX0pJVF9UWVBFX0ZMT0FU OgorICAgICAgY2FzZSBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVDoKKwlyZXR1cm4gMTsKKyAg ICAgIGNhc2UgR0NDX0pJVF9UWVBFX0RPVUJMRToKKyAgICAgIGNhc2UgR0NDX0pJVF9UWVBFX0NP TVBMRVhfRE9VQkxFOgorCXJldHVybiAyOworICAgICAgY2FzZSBHQ0NfSklUX1RZUEVfTE9OR19E T1VCTEU6CisgICAgICBjYXNlIEdDQ19KSVRfVFlQRV9DT01QTEVYX0xPTkdfRE9VQkxFOgorCXJl dHVybiAzOworICAgICAgfQorICB9CisKICAgYm9vbCBpc19pbnQgKCkgY29uc3QgRklOQUwgT1ZF UlJJREU7CiAgIGJvb2wgaXNfZmxvYXQgKCkgY29uc3QgRklOQUwgT1ZFUlJJREU7CiAgIGJvb2wg aXNfYm9vbCAoKSBjb25zdCBGSU5BTCBPVkVSUklERTsKKyAgYm9vbCBpc19jb21wbGV4ICgpIGNv bnN0IEZJTkFMIE9WRVJSSURFOwogICB0eXBlICppc19wb2ludGVyICgpIEZJTkFMIE9WRVJSSURF IHsgcmV0dXJuIGRlcmVmZXJlbmNlICgpOyB9CiAgIHR5cGUgKmlzX2FycmF5ICgpIEZJTkFMIE9W RVJSSURFIHsgcmV0dXJuIE5VTEw7IH0KICAgYm9vbCBpc192b2lkICgpIGNvbnN0IEZJTkFMIE9W RVJSSURFIHsgcmV0dXJuIG1fa2luZCA9PSBHQ0NfSklUX1RZUEVfVk9JRDsgfQpAQCAtNjM1LDYg KzY1OCw3IEBAIHB1YmxpYzoKICAgYm9vbCBpc19pbnQgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUg eyByZXR1cm4gZmFsc2U7IH0KICAgYm9vbCBpc19mbG9hdCAoKSBjb25zdCBGSU5BTCBPVkVSUklE RSB7IHJldHVybiBmYWxzZTsgfQogICBib29sIGlzX2Jvb2wgKCkgY29uc3QgRklOQUwgT1ZFUlJJ REUgeyByZXR1cm4gZmFsc2U7IH0KKyAgYm9vbCBpc19jb21wbGV4ICgpIGNvbnN0IEZJTkFMIE9W RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgIHR5cGUgKmlzX3BvaW50ZXIgKCkgRklOQUwgT1ZF UlJJREUgeyByZXR1cm4gbV9vdGhlcl90eXBlOyB9CiAgIHR5cGUgKmlzX2FycmF5ICgpIEZJTkFM IE9WRVJSSURFIHsgcmV0dXJuIE5VTEw7IH0KIApAQCAtNjYxLDYgKzY4NSw3IEBAIHB1YmxpYzoK ICAgYm9vbCBpc19pbnQgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUgeyByZXR1cm4gbV9vdGhlcl90 eXBlLT5pc19pbnQgKCk7IH0KICAgYm9vbCBpc19mbG9hdCAoKSBjb25zdCBGSU5BTCBPVkVSUklE RSB7IHJldHVybiBtX290aGVyX3R5cGUtPmlzX2Zsb2F0ICgpOyB9CiAgIGJvb2wgaXNfYm9vbCAo KSBjb25zdCBGSU5BTCBPVkVSUklERSB7IHJldHVybiBtX290aGVyX3R5cGUtPmlzX2Jvb2wgKCk7 IH0KKyAgYm9vbCBpc19jb21wbGV4ICgpIGNvbnN0IEZJTkFMIE9WRVJSSURFIHsgcmV0dXJuIG1f b3RoZXJfdHlwZS0+aXNfY29tcGxleCAoKTsgfQogICB0eXBlICppc19wb2ludGVyICgpIEZJTkFM IE9WRVJSSURFIHsgcmV0dXJuIG1fb3RoZXJfdHlwZS0+aXNfcG9pbnRlciAoKTsgfQogICB0eXBl ICppc19hcnJheSAoKSBGSU5BTCBPVkVSUklERSB7IHJldHVybiBtX290aGVyX3R5cGUtPmlzX2Fy cmF5ICgpOyB9CiAKQEAgLTc3MSw2ICs3OTYsNyBAQCBjbGFzcyBhcnJheV90eXBlIDogcHVibGlj IHR5cGUKICAgYm9vbCBpc19pbnQgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUgeyByZXR1cm4gZmFs c2U7IH0KICAgYm9vbCBpc19mbG9hdCAoKSBjb25zdCBGSU5BTCBPVkVSUklERSB7IHJldHVybiBm YWxzZTsgfQogICBib29sIGlzX2Jvb2wgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUgeyByZXR1cm4g ZmFsc2U7IH0KKyAgYm9vbCBpc19jb21wbGV4ICgpIGNvbnN0IEZJTkFMIE9WRVJSSURFIHsgcmV0 dXJuIGZhbHNlOyB9CiAgIHR5cGUgKmlzX3BvaW50ZXIgKCkgRklOQUwgT1ZFUlJJREUgeyByZXR1 cm4gTlVMTDsgfQogICB0eXBlICppc19hcnJheSAoKSBGSU5BTCBPVkVSUklERSB7IHJldHVybiBt X2VsZW1lbnRfdHlwZTsgfQogICBpbnQgbnVtX2VsZW1lbnRzICgpIHsgcmV0dXJuIG1fbnVtX2Vs ZW1lbnRzOyB9CkBAIC04MDUsNiArODMxLDcgQEAgcHVibGljOgogICBib29sIGlzX2ludCAoKSBj b25zdCBGSU5BTCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICBib29sIGlzX2Zsb2F0ICgp IGNvbnN0IEZJTkFMIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgIGJvb2wgaXNfYm9vbCAo KSBjb25zdCBGSU5BTCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICBib29sIGlzX2NvbXBs ZXggKCkgY29uc3QgRklOQUwgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgdHlwZSAqaXNf cG9pbnRlciAoKSBGSU5BTCBPVkVSUklERSB7IHJldHVybiBOVUxMOyB9CiAgIHR5cGUgKmlzX2Fy cmF5ICgpIEZJTkFMIE9WRVJSSURFIHsgcmV0dXJuIE5VTEw7IH0KIApAQCAtOTE4LDYgKzk0NSw3 IEBAIHB1YmxpYzoKICAgYm9vbCBpc19pbnQgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUgeyByZXR1 cm4gZmFsc2U7IH0KICAgYm9vbCBpc19mbG9hdCAoKSBjb25zdCBGSU5BTCBPVkVSUklERSB7IHJl dHVybiBmYWxzZTsgfQogICBib29sIGlzX2Jvb2wgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUgeyBy ZXR1cm4gZmFsc2U7IH0KKyAgYm9vbCBpc19jb21wbGV4ICgpIGNvbnN0IEZJTkFMIE9WRVJSSURF IHsgcmV0dXJuIGZhbHNlOyB9CiAgIHR5cGUgKmlzX3BvaW50ZXIgKCkgRklOQUwgT1ZFUlJJREUg eyByZXR1cm4gTlVMTDsgfQogICB0eXBlICppc19hcnJheSAoKSBGSU5BTCBPVkVSUklERSB7IHJl dHVybiBOVUxMOyB9CiAKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0KysuaCBiL2djYy9q aXQvbGliZ2Njaml0KysuaAppbmRleCA4MjgzMWZmNWRhMC4uNmJlNWE5YjljYzMgMTAwNjQ0Ci0t LSBhL2djYy9qaXQvbGliZ2Njaml0KysuaAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdCsrLmgKQEAg LTEyOCw3ICsxMjgsOCBAQCBuYW1lc3BhY2UgZ2Njaml0CiAKICAgICB2b2lkIHNldF9ib29sX2Fs bG93X3VucmVhY2hhYmxlX2Jsb2NrcyAoaW50IGJvb2xfdmFsdWUpOwogICAgIHZvaWQgc2V0X2Jv b2xfdXNlX2V4dGVybmFsX2RyaXZlciAoaW50IGJvb2xfdmFsdWUpOwotCisgICAgdm9pZCBzZXRf Ym9vbF9lbmFibGVfY29tcGxleF90eXBlcyAoaW50IGJvb2xfdmFsdWUpOworICAgIAogICAgIHZv aWQgYWRkX2NvbW1hbmRfbGluZV9vcHRpb24gKGNvbnN0IGNoYXIgKm9wdG5hbWUpOwogICAgIHZv aWQgYWRkX2RyaXZlcl9vcHRpb24gKGNvbnN0IGNoYXIgKm9wdG5hbWUpOwogCkBAIC0xOTEsNiAr MTkyLDggQEAgbmFtZXNwYWNlIGdjY2ppdAogICAgIHJ2YWx1ZSBvbmUgKHR5cGUgbnVtZXJpY190 eXBlKSBjb25zdDsKICAgICBydmFsdWUgbmV3X3J2YWx1ZSAodHlwZSBudW1lcmljX3R5cGUsCiAJ CSAgICAgICBkb3VibGUgdmFsdWUpIGNvbnN0OworICAgIHJ2YWx1ZSBuZXdfcnZhbHVlICh0eXBl IG51bWVyaWNfdHlwZSwKKwkJICAgICAgIF9Db21wbGV4IGRvdWJsZSB2YWx1ZSkgY29uc3Q7CiAg ICAgcnZhbHVlIG5ld19ydmFsdWUgKHR5cGUgcG9pbnRlcl90eXBlLAogCQkgICAgICAgdm9pZCAq dmFsdWUpIGNvbnN0OwogICAgIHJ2YWx1ZSBuZXdfcnZhbHVlIChjb25zdCBzdGQ6OnN0cmluZyAm dmFsdWUpIGNvbnN0OwpAQCAtNzMyLDYgKzczNSwxMyBAQCBjb250ZXh0OjpzZXRfYm9vbF91c2Vf ZXh0ZXJuYWxfZHJpdmVyIChpbnQgYm9vbF92YWx1ZSkKIAkJCQkJCWJvb2xfdmFsdWUpOwogfQog CitpbmxpbmUgdm9pZAorY29udGV4dDo6c2V0X2Jvb2xfZW5hYmxlX2NvbXBsZXhfdHlwZXMgKGlu dCBib29sX3ZhbHVlKQoreworICBnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfZW5hYmxlX2NvbXBs ZXhfdHlwZXMgKG1faW5uZXJfY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBib29sX3ZhbHVlKTsKK30KKwogaW5saW5lIHZvaWQKIGNvbnRleHQ6 OmFkZF9jb21tYW5kX2xpbmVfb3B0aW9uIChjb25zdCBjaGFyICpvcHRuYW1lKQogewpAQCAtOTUw LDYgKzk2MCwxNyBAQCBjb250ZXh0OjpuZXdfcnZhbHVlICh0eXBlIG51bWVyaWNfdHlwZSwKIAkJ CQkJICAgIHZhbHVlKSk7CiB9CiAKK2lubGluZSBydmFsdWUKK2NvbnRleHQ6Om5ld19ydmFsdWUg KHR5cGUgbnVtZXJpY190eXBlLAorCQkgICAgIF9Db21wbGV4IGRvdWJsZSB2YWx1ZSkgY29uc3QK K3sKKyAgcmV0dXJuIHJ2YWx1ZSAoCisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJv bV9jb21wbGV4X2RvdWJsZSAoCisgICAgICBtX2lubmVyX2N0eHQsCisgICAgICBudW1lcmljX3R5 cGUuZ2V0X2lubmVyX3R5cGUgKCksCisgICAgICB2YWx1ZSkpOworfQorCiBpbmxpbmUgcnZhbHVl CiBjb250ZXh0OjpuZXdfcnZhbHVlICh0eXBlIHBvaW50ZXJfdHlwZSwKIAkJICAgICB2b2lkICp2 YWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmMgYi9nY2Mvaml0L2xp YmdjY2ppdC5jCmluZGV4IDdmYTk0ODAwN2FkLi4wODU5YjM4ZjYwOSAxMDA2NDQKLS0tIGEvZ2Nj L2ppdC9saWJnY2NqaXQuYworKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5jCkBAIC00NDgsOSArNDQ4 LDE3IEBAIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAog ICBKSVRfTE9HX0ZVTkMgKGN0eHQtPmdldF9sb2dnZXIgKCkpOwogICBSRVRVUk5fTlVMTF9JRl9G QUlMX1BSSU5URjEgKAogICAgICh0eXBlID49IEdDQ19KSVRfVFlQRV9WT0lECi0gICAgICYmIHR5 cGUgPD0gR0NDX0pJVF9UWVBFX0ZJTEVfUFRSKSwKKyAgICAgJiYgdHlwZSA8PSBHQ0NfSklUX1RZ UEVfQ09NUExFWF9MT05HX0RPVUJMRSksCiAgICAgY3R4dCwgTlVMTCwKICAgICAidW5yZWNvZ25p emVkIHZhbHVlIGZvciBlbnVtIGdjY19qaXRfdHlwZXM6ICVpIiwgdHlwZSk7CisgIGlmICh0eXBl ID49IEdDQ19KSVRfVFlQRV9DT01QTEVYX0ZMT0FUCisgICAgICAmJiB0eXBlIDw9IEdDQ19KSVRf VFlQRV9DT01QTEVYX0xPTkdfRE9VQkxFKQorICAgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKAorICAg ICAgY3R4dC0+Z2V0X2lubmVyX2Jvb2xfb3B0aW9uKAorICAgICAgICBnY2M6OmppdDo6SU5ORVJf Qk9PTF9PUFRJT05fRU5BQkxFX0NPTVBMRVhfVFlQRVMpLAorICAgICAgY3R4dCwgTlVMTCwKKyAg ICAgICJjb21wbGV4IHR5cGUgYXJlIG9ubHkgYXZhaWxhYmxlIGFmdGVyIGVuYWJsaW5nIHRoZW0g d2l0aCIKKyAgICAgICIgZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2VuYWJsZV9jb21wbGV4X3R5 cGVzKCkiKTsKIAogICByZXR1cm4gKGdjY19qaXRfdHlwZSAqKWN0eHQtPmdldF90eXBlICh0eXBl KTsKIH0KQEAgLTEzMjAsNiArMTMyOCwyNiBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9m cm9tX2RvdWJsZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAogCSAgLT5uZXdfcnZhbHVlX2Zyb21f Y29uc3QgPGRvdWJsZT4gKG51bWVyaWNfdHlwZSwgdmFsdWUpKTsKIH0KIAorZ2NjX2ppdF9ydmFs dWUgKgorZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9jb21wbGV4X2RvdWJsZSAoZ2Nj X2ppdF9jb250ZXh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2NjX2ppdF90eXBlICpudW1lcmljX3R5cGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgX0NvbXBsZXggdmFsdWUpCit7 CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKGN0eHQsIE5VTEwsIE5VTEwsICJOVUxMIGNvbnRleHQi KTsKKyAgSklUX0xPR19GVU5DIChjdHh0LT5nZXRfbG9nZ2VyICgpKTsKKyAgUkVUVVJOX05VTExf SUZfRkFJTF9OT05OVUxMX05VTUVSSUNfVFlQRSAoY3R4dCwgbnVtZXJpY190eXBlKTsKKworICBS RVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjEgKAorICAgIG51bWVyaWNfdHlwZS0+aXNfZmxvYXQg KCksCisgICAgY3R4dCwgTlVMTCwKKyAgICAibm90IGEgZmxvYXRpbmcgcG9pbnQgdHlwZSAodHlw ZTogJXMpIiwKKyAgICBudW1lcmljX3R5cGUtPmdldF9kZWJ1Z19zdHJpbmcgKCkpOworCisgIHJl dHVybiAoKGdjY19qaXRfcnZhbHVlICopY3R4dAorICAgICAgLT5uZXdfcnZhbHVlX2Zyb21fY29u c3QgPGRvdWJsZSBfQ29tcGxleD4gKG51bWVyaWNfdHlwZSwgdmFsdWUpKTsKK30KKworCiAvKiBQ dWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KIAogICAg QWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKQEAgLTE0 MTUsNiArMTQ0MywxNCBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X3VuYXJ5X29wIChnY2Nfaml0X2Nv bnRleHQgKmN0eHQsCiAgICAgcmVzdWx0X3R5cGUtPmdldF9kZWJ1Z19zdHJpbmcgKCkpOwogICBS RVRVUk5fTlVMTF9JRl9GQUlMIChydmFsdWUsIGN0eHQsIGxvYywgIk5VTEwgcnZhbHVlIik7CiAK KyAgaWYgKHJ2YWx1ZS0+Z2V0X3R5cGUgKCktPmlzX2NvbXBsZXggKCkpCisgICAgUkVUVVJOX05V TExfSUZfRkFJTF9QUklOVEYyICgKKyAgICAgIG9wID09IEdDQ19KSVRfVU5BUllfT1BfTUlOVVMs CisgICAgICBjdHh0LCBsb2MsCisgICAgICAib25seSB1bmFyeSBtaW51cyBkZWZpbmVkIGZvciBj b21wbGV4IHR5cGVzOiAlcyAodHlwZTogJXMpIiwKKyAgICAgIHJ2YWx1ZS0+Z2V0X2RlYnVnX3N0 cmluZyAoKSwKKyAgICAgIHJ2YWx1ZS0+Z2V0X3R5cGUgKCktPmdldF9kZWJ1Z19zdHJpbmcgKCkp OworCiAgIHJldHVybiAoZ2NjX2ppdF9ydmFsdWUgKiljdHh0LT5uZXdfdW5hcnlfb3AgKGxvYywg b3AsIHJlc3VsdF90eXBlLCBydmFsdWUpOwogfQogCkBAIC0xNDI2LDcgKzE0NjIsNyBAQCBzdGF0 aWMgYm9vbAogdmFsaWRfYmluYXJ5X29wX3AgKGVudW0gZ2NjX2ppdF9iaW5hcnlfb3Agb3ApCiB7 CiAgIHJldHVybiAob3AgPj0gR0NDX0pJVF9CSU5BUllfT1BfUExVUwotCSAgJiYgb3AgPD0gR0ND X0pJVF9CSU5BUllfT1BfUlNISUZUKTsKKwkgICYmIG9wIDw9IEdDQ19KSVRfQklOQVJZX09QX0NP TVBMRVgpOwogfQogCiAvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBs aWJnY2NqaXQuaC4KQEAgLTE0NzAsNiArMTUwNiwzOCBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X2Jp bmFyeV9vcCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAogICAgIGEtPmdldF9kZWJ1Z19zdHJpbmcg KCksIGItPmdldF9kZWJ1Z19zdHJpbmcgKCksCiAgICAgcmVzdWx0X3R5cGUtPmdldF9kZWJ1Z19z dHJpbmcgKCkpOwogCisgIGlmIChvcCA9PSBHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVYKQorICAg IHsKKyAgICAgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKAorICAgICAgIHJlc3VsdF90eXBlLT5pc19j b21wbGV4ICgpLAorICAgICAgIGN0eHQsIGxvYywKKyAgICAgICAicmV0dXJuIHR5cGUgaXMgbm90 IGNvbXBsZXgiKTsKKyAgICAgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRGMyAoCisJIWEtPmdl dF90eXBlICgpLT5pc19jb21wbGV4ICgpICYmCisJYS0+Z2V0X3R5cGUgKCktPmlzX2Zsb2F0ICgp LAorCWN0eHQsIGxvYywKKwkiZmlyc3Qgb3BlcmFuZCBvZiAlcyBpcyBub3QgcmVhbDogJXMgKHR5 cGU6ICVzKSIsCisJZ2NjOjpqaXQ6OmJpbmFyeV9vcF9yZXByb2R1Y2VyX3N0cmluZ3Nbb3BdLAor CWEtPmdldF9kZWJ1Z19zdHJpbmcgKCksCisJYS0+Z2V0X3R5cGUgKCktPmdldF9kZWJ1Z19zdHJp bmcgKCkpOworICAgICAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklOVEYzICgKKwkhYi0+Z2V0X3R5 cGUgKCktPmlzX2NvbXBsZXggKCkgJiYKKwliLT5nZXRfdHlwZSAoKS0+aXNfZmxvYXQgKCksCisJ Y3R4dCwgbG9jLAorCSIybmQgb3BlcmFuZCBvZiAlcyBpcyBub3QgcmVhbDogJXMgKHR5cGU6ICVz KSIsCisJZ2NjOjpqaXQ6OmJpbmFyeV9vcF9yZXByb2R1Y2VyX3N0cmluZ3Nbb3BdLAorCWItPmdl dF9kZWJ1Z19zdHJpbmcgKCksCisJYi0+Z2V0X3R5cGUgKCktPmdldF9kZWJ1Z19zdHJpbmcgKCkp OworICAgICAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklOVEYyICgKKyAgICAgICAgYS0+Z2V0X3R5 cGUgKCktPiBmbG9hdF9zaXplX3F1YWwgKCkgPT0KKyAgICAgICAgcmVzdWx0X3R5cGUtPmZsb2F0 X3NpemVfcXVhbCAoKSwKKwljdHh0LCBsb2MsCisJInNpemUgcXVhbGlmaWVycyBvZiBjb21wbGV4 IG9wZXJhbmQncyBub3QgdGhlIHNhbWUgYXMgdGhlIHJlc3VsdDoiCisJIiBvcGVyYW5kczogJXMs IHJlc3VsdDogICVzIiwKKwlhLT5nZXRfdHlwZSAoKS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKwly ZXN1bHRfdHlwZS0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7CisgICAgfQorCiAgIHJldHVybiAoZ2Nj X2ppdF9ydmFsdWUgKiljdHh0LT5uZXdfYmluYXJ5X29wIChsb2MsIG9wLCByZXN1bHRfdHlwZSwg YSwgYik7CiB9CiAKQEAgLTE1MDYsNiArMTU3NCwxNCBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X2Nv bXBhcmlzb24gKGdjY19qaXRfY29udGV4dCAqY3R4dCwKICAgICBiLT5nZXRfZGVidWdfc3RyaW5n ICgpLAogICAgIGItPmdldF90eXBlICgpLT5nZXRfZGVidWdfc3RyaW5nICgpKTsKIAorICBpZiAo YS0+Z2V0X3R5cGUgKCktPmlzX2NvbXBsZXgoKSkKKyAgICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BS SU5URjEgKAorICAgICAob3AgPT0gR0NDX0pJVF9DT01QQVJJU09OX0VRCisgICAgICB8fCBvcCA9 PSBHQ0NfSklUX0NPTVBBUklTT05fTkUpLAorICAgICBjdHh0LCBsb2MsCisgICAgICJpbnZhbGlk IGVudW0gZ2NjX2ppdF9jb21wYXJpc29uIGZvciBjb21wbGV4IG9wZXJhbmRzOiAlaSIsCisgICAg IG9wKTsKKwogICByZXR1cm4gKGdjY19qaXRfcnZhbHVlICopY3R4dC0+bmV3X2NvbXBhcmlzb24g KGxvYywgb3AsIGEsIGIpOwogfQogCkBAIC0yNzM1LDYgKzI4MTEsMjMgQEAgZ2NjX2ppdF9jb250 ZXh0X3NldF9ib29sX2FsbG93X3VucmVhY2hhYmxlX2Jsb2NrcyAoZ2NjX2ppdF9jb250ZXh0ICpj dHh0LAogICAgIGJvb2xfdmFsdWUpOwogfQogCisvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBk ZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KKworICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRo ZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6OmNvbnRl eHQ6OnNldF9pbm5lcl9ib29sX29wdGlvbiBtZXRob2QgaW4KKyAgIGppdC1yZWNvcmRpbmcuYy4g Ki8KKwordm9pZAorZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2VuYWJsZV9jb21wbGV4X3R5cGVz IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBib29sX3ZhbHVlKQoreworICBSRVRVUk5fSUZfRkFJTCAoY3R4 dCwgTlVMTCwgTlVMTCwgIk5VTEwgY29udGV4dCIpOworICBKSVRfTE9HX0ZVTkMgKGN0eHQtPmdl dF9sb2dnZXIgKCkpOworICBjdHh0LT5zZXRfaW5uZXJfYm9vbF9vcHRpb24gKAorICAgIGdjYzo6 aml0OjpJTk5FUl9CT09MX09QVElPTl9FTkFCTEVfQ09NUExFWF9UWVBFUywKKyAgICBib29sX3Zh bHVlKTsKK30KKwogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGli Z2Njaml0LmguCiAKICAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRv bmUgYnkgdGhlCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5oIGIvZ2NjL2ppdC9saWJn Y2NqaXQuaAppbmRleCA1YzcyMmMyYzU3Zi4uZjNkMmM0MGQ4YmUgMTAwNjQ0Ci0tLSBhL2djYy9q aXQvbGliZ2Njaml0LmgKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuaApAQCAtODQ4LDYgKzg0OCwx NyBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2RvdWJsZSAoZ2NjX2ppdF9jb250 ZXh0ICpjdHh0LAogCQkJCQlnY2Nfaml0X3R5cGUgKm51bWVyaWNfdHlwZSwKIAkJCQkJZG91Ymxl IHZhbHVlKTsKIAorLyogQ29tcGxleCBmbG9hdGluZy1wb2ludCBjb25zdGFudHMuCisKKyAgIFRo aXMgQVBJIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIExJQkdDQ0pJVF9BQklfMTY7IHlvdSBjYW4g dGVzdCBmb3IgaXRzCisgICBwcmVzZW5jZSB1c2luZworICAgICAjaWZkZWYgTElCR0NDSklUX0hB VkVfQ09NUExFWAorKi8KK2V4dGVybiBnY2Nfaml0X3J2YWx1ZSAqCitnY2Nfaml0X2NvbnRleHRf bmV3X3J2YWx1ZV9mcm9tX2NvbXBsZXhfZG91YmxlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X3R5 cGUgKm51bWVyaWNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZSBfQ29tcGxleCB2YWx1ZSk7CisKIC8qIFBvaW50ZXJzLiAgKi8KIGV4 dGVybiBnY2Nfaml0X3J2YWx1ZSAqCiBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0 ciAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LApAQCAtOTU5LDcgKzk3MCwyNiBAQCBlbnVtIGdjY19q aXRfYmluYXJ5X29wCiAgIC8qIFJpZ2h0IHNoaWZ0OyBhbmFsb2dvdXMgdG86CiAgICAgICAgKEVY UFJfQSkgPj4gKEVYUFJfQikKICAgICAgaW4gQy4gICovCi0gIEdDQ19KSVRfQklOQVJZX09QX1JT SElGVAorICBHQ0NfSklUX0JJTkFSWV9PUF9SU0hJRlQsCisKKyAgLyogQ3JlYXRlIGEgY29tcGxl eCBmbG9hdGluZyBwb2ludCB2YWx1ZSBmcm9tCisgICAgIHR3byByZWFsIGZsb2F0aW5nIHBvaW50 IHZhbHVlcy4gVGhlIG9wZXJhbmRzCisgICAgIGFuZCB0aGUgcmVzdWx0IG5lZWQgdG8gaGF2ZSB0 aGUgc2FtZSBzaXplCisgICAgIHF1YWxpZmllci4KKworICAgICBBbmFsb2dvdXMgdG86CisgICAg ICAgQ01QTFggKHJlYWwsaW1hZykKKyAgICAgaW4gQy4KKworICAgICBUaGUgZmlyc3Qgb3BlcmFu ZCBpcyB0aGUgcmVhbCBwYXJ0LCB0aGUgb3RoZXIKKyAgICAgdGhlIGltYWdpbmFyeS4gTmVnYXRp dmUgemVyb2VzIGFyZSBwcmVzZXJ2ZWQKKyAgICAgYW5kIEluZjpzIGRvIG5vdCBsZWFkIHRvIE5h TnMuCisKKyAgICAgVGhpcyBvcGVyYXRvciAgd2FzIGFkZGVkIGluIExJQkdDQ0pJVF9BQklfMTY7 CisgICAgIHlvdSBjYW4gdGVzdCBmb3IgaXRzIHByZXNlbmNlIHVzaW5nCisgICAgICAgI2lmZGVm IExJQkdDQ0pJVF9IQVZFX0NPTVBMRVgKKyAgKi8KKyAgR0NDX0pJVF9CSU5BUllfT1BfQ09NUExF WAogfTsKIAogZXh0ZXJuIGdjY19qaXRfcnZhbHVlICoKQEAgLTE0MzQsNiArMTQ2NCwxOSBAQCBn Y2Nfaml0X3RpbWVyX3ByaW50IChnY2Nfaml0X3RpbWVyICp0aW1lciwKIAkJICAgICBGSUxFICpm X291dCk7CiAKIAorI2RlZmluZSBMSUJHQ0NKSVRfSEFWRV9DT01QTEVYCisKKy8qIEVuYWJsZXMg Y29tcGxleCB0eXBlIHN1cHBvcnQgaW4gbGliZ2Njaml0LgorCisgICBUaGlzIEFQSSBlbnRyeXBv aW50IHdhcyBhZGRlZCBpbiBMSUJHQ0NKSVRfQUJJXzE2OyB5b3UgY2FuIHRlc3QgZm9yIGl0cwor ICAgcHJlc2VuY2UgdXNpbmcKKyAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX0NPTVBMRVgKKyov CisKK2V4dGVybiB2b2lkCitnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfZW5hYmxlX2NvbXBsZXhf dHlwZXMgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGJvb2xfdmFsdWUpOworCiAjZGVmaW5lIExJQkdDQ0pJ VF9IQVZFX2djY19qaXRfcnZhbHVlX3NldF9ib29sX3JlcXVpcmVfdGFpbF9jYWxsCiAKIC8qIE1h cmsvY2xlYXIgYSBjYWxsIGFzIG5lZWRpbmcgdGFpbC1jYWxsIG9wdGltaXphdGlvbi4KZGlmZiAt LWdpdCBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcCBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcAppbmRl eCAzMzdlYTZjN2ZlNC4uYzliMDQ0ZGM4ZjUgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0 Lm1hcAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKQEAgLTIwNSwzICsyMDUsOSBAQCBMSUJH Q0NKSVRfQUJJXzE1IHsKICAgICBnY2Nfaml0X2V4dGVuZGVkX2FzbV9hZGRfY2xvYmJlcjsKICAg ICBnY2Nfaml0X2NvbnRleHRfYWRkX3RvcF9sZXZlbF9hc207CiB9IExJQkdDQ0pJVF9BQklfMTQ7 CisKK0xJQkdDQ0pJVF9BQklfMTYgeworICBnbG9iYWw6CisgICAgZ2NjX2ppdF9jb250ZXh0X25l d19ydmFsdWVfZnJvbV9jb21wbGV4X2RvdWJsZTsKKyAgICBnY2Nfaml0X2NvbnRleHRfc2V0X2Jv b2xfZW5hYmxlX2NvbXBsZXhfdHlwZXM7Cit9IExJQkdDQ0pJVF9BQklfMTU7ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQotLSAKMi4zMC4yCgo= --_002_bc47d4a2195346c695dcbf3e4c079a5bkthse_--