Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ts4MO-00EtEe-1o for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Mar 2025 18:29:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ts4MM-004MPP-PX for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Mar 2025 18:29:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ts4Lc-004JTU-2Q for pgsql-hackers@lists.postgresql.org; Tue, 11 Mar 2025 18:29:00 +0000 Received: from dd48506.kasserver.com ([85.13.164.188]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ts4LY-002HpC-1d for pgsql-hackers@lists.postgresql.org; Tue, 11 Mar 2025 18:28:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oopsware.de; s=kas202503021101; t=1741717736; bh=OgQjFhLFFLMFPCF5mctJbncJqEncy8fVaGD80Kw01cw=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=FIA+0GedtTPNeH5LbGJd2YR0NBIxB+RJ6mzB8JyPendY3S6/prc/3vVHsJ7SfrZVo dNBKEWG6IEuq1ZKfqne/GgQhIu6kHDpQigjQdDQ/XR7yZWT21awM0TV5aZMVs6/B6A o8ZLFY9igoq6yidhdY0behVNjvFifLDRdMyP4U6TP1wEA+P3NV7J3KPXUTrQpOnd+3 aR5md5ehBGcXQpLwLcY3T1CKx66JcOKtCNO7p27+rbUYUSi4OHzQIPU4fumqGg1Xqt 7lVyKrDEEh0sKtSZ0ekvt/rUal6M636/Y4kkwH6mk34tA71uCPXyESfThNme0Kva3c NFL1YnglOcCXw== Received: from sethos.at.struktu.ro (sethos.at.struktu.ro [46.4.183.126]) by dd48506.kasserver.com (Postfix) with ESMTPSA id D0FFF866167B; Tue, 11 Mar 2025 19:28:56 +0100 (CET) Received: from chufu.bluecherstrasse.oopsware.lan (i5C7508F6.versanet.de [92.117.8.246]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sethos.at.struktu.ro (Postfix) with ESMTPSA id 396ED41EFC95; Tue, 11 Mar 2025 19:28:56 +0100 (CET) Message-ID: <64d324ce2a6d535d3f0f3baeeea7b25beff82ce4.camel@oopsware.de> Subject: Re: [PATCH] Add sortsupport for range types and btree_gist From: Bernd Helmle To: Andrey Borodin Cc: Michael Paquier , jian he , PostgreSQL Hackers Date: Tue, 11 Mar 2025 19:28:54 +0100 In-Reply-To: <6bd891c9e3aa12baea5c938267bdb5a1e50a299e.camel@oopsware.de> References: <7C9400DF-66FE-4308-BAD8-92FE3D0E55C6@yandex-team.ru> <0d9fbd59de15e2fc987a850c3d1f8a79a6ede825.camel@oopsware.de> <19c62e62c79b727d2c9a82eaeecfea5017001099.camel@oopsware.de> <4BADF8DD-A4D3-43AA-AA08-037F6FFA40BC@yandex-team.ru> <61128550659807032dd29c8c8a71674c818cbbb6.camel@oopsware.de> <7095B5FA-FADB-4524-B858-ECD14998710B@yandex-team.ru> <0176b173adfcff250543fe0aee2ef6137bd71953.camel@oopsware.de> <78499920f1e9ed5895423e735272ca2fdb90baf6.camel@oopsware.de> <770DB2DA-0B56-464A-87CE-5620CF12E114@yandex-team.ru> <6bd891c9e3aa12baea5c938267bdb5a1e50a299e.camel@oopsware.de> Autocrypt: addr=mailings@oopsware.de; prefer-encrypt=mutual; keydata=mQGiBEIM4dYRBACEnxQZ/CfR1xbCJzGOIjvh3fZpLALMm+tt237QlZm9nlLaEwCn317sT 1khPAJwhyBHSHbNFbH+LOL6ezYrg4V2Q9KHyYJDStJtC8c+D7vHVB5Jfslynx89DnCH6jb3H0j+U0 iNYmRmT18PWTZhD5RuXT+Toyz/0hH4YnJzha4VUwCggikXRuhIQ0KIzrps7/PsvasTPjUD/1aoEHR wVyk2C2hXh6GWJYq+1l+sB2d0TOnFJf2xy3Xo03Hi+BEJJdYGqJKqzd0KfsFyJYhO2GIGScSEj1hs TqAiY8OZeRqRGHe69OQEguUSVXp/jPaqU8fel8dbDDMnXkgULq8oO4T9e4GJSFqIvrlx0sJqSMFdi ihV+xCzDS40BACBrTq9tyXmyxJWzQ1/0Hx9S4sU+yeR8ztZH9xgWi1wksfHpEgZBdAkQynlI80/bC tgxfVu+LKgxeqGfMSnT9t8agpr1IGcmSbDntbn/K+3EmCze0jq8EQrZHJWiwCqraM8mnmILSEl5zn aoVoBIF062b60zZicuNeYaVgEKSHfirQgQmVybmQgSGVsbWxlIDxiZXJuZEBvb3Bzd2FyZS5kZT6I XgQTEQIAHgUCQhyP2gIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzMm4AJ9mW1np2 RXi66WzEvcIanaJkDT+xgCfZmXG/Sziz5FchI3OjXfXDZfwnNm0J0Jlcm5kIEhlbG1sZSA8YmVybm QuaGVsbWxlQG9vcHN3YXJlLmRlPoheBBMRAgAeBQJCDOHWAhsDBgsJCAcDAgMVAgMDFgIBAh4BAhe AAAoJEFF1zY6F2UrMWZgAn3MVwDBzRS5dZu1yjx7WU3E3JSheAJ41CUYMIkX/oYfWssUVYnOuedgn 8LQlQmVybmQgSGVsbWxlIDxiaEBzY2huYWVwcGNoZW5qYWdkLmRlPoheBBMRAgAeBQJCHI+pAhsDB gsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMYMUAn0rk8fEEY2tHGSUD7PNbk+Fwkd7MAJ 4wMfOerrvsKTrB9xmFnZ2ZUy67w7QjQmVybmQgSGVsbWxlIDxtYWlsaW5nc0Bvb3Bzd2FyZS5kZT6 IXgQTEQIAHgUCQhyPxgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzOhrAJ4w+A3H cjTJb54lUDpyyQu6Y5dlVQCeJCFKygOVbpn4HSp4Z+R6+s4Rul60J0Jlcm5kIEhlbG1sZSA8YmVyb mQuaGVsbWxlQGN5YmVydGVjLmF0Poh4BBMRAgA4FiEEcLVWcrwQIdBqHtvMUXXNjoXZSswFAmDe1D kCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQUXXNjoXZSszs9QCfbbpKT0/Mh4PhfS6rRbm NNQC1zS8An2x1PLHPS6649DRkiYOMWTXzAlSE Content-Type: multipart/mixed; boundary="=-WtNOlSfjo1c7AYTCDd/q" User-Agent: Evolution 3.54.3 (3.54.3-1.fc41) MIME-Version: 1.0 X-Spamd-Bar: ++ List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-WtNOlSfjo1c7AYTCDd/q Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Am Montag, dem 09.12.2024 um 18:10 +0100 schrieb Bernd Helmle: > > I think we have two options: > > 1. Just do not commit tests. We ran it manually, saw that paths are > > taken, we are happy. >=20 > So here's a version with the original, unchanged regression tests and > injection point removed (i hope i forgot nothing to revert). >=20 > This version also fixes cidr sortsupport (thanks again Andrey for > spotting this), where i accidently used inet instead of the correct > cidr datatype to pass down to the sortsupport function. Please find a new rebased version of this patch. No changes to the patch itself, but it didn't apply without conflicts anymore. Thanks, Bernd --=-WtNOlSfjo1c7AYTCDd/q Content-Disposition: attachment; filename*0=0001-Add-support-for-sorted-gist-index-builds-to-btree_gi.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Add-support-for-sorted-gist-index-builds-to-btree_gi.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1Y2QzMjZhMjlkNWY2YmI3ZmZiMGM2MzI4ODcwY2ZkMTEzZWQxYjQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBIZWxtbGUgPEJlcm5kIEhlbG1sZSBtYWlsaW5nc0Bv b3Bzd2FyZS5kZT4KRGF0ZTogVHVlLCAxMSBNYXIgMjAyNSAxOToxNToxMyArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBzb3J0ZWQgZ2lzdCBpbmRleCBidWlsZHMgdG8gYnRy ZWVfZ2lzdAoKVGhpcyBlbmFibGVzIHNvcnRzdXBwb3J0IGluIHRoZSBidHJlZV9naXN0IGV4dGVu c2lvbiBmb3IgZmFzdGVyCmJ1aWxkcyBvZiBnaXN0IGluZGV4ZXMuIEFkZGl0aW9uYWxseSBzb3J0 c3VwcG9ydCBpcyBhbHNvIGFkZGVkIGZvciByYW5nZSB0eXBlcwp0byB0aGUgYmFja2VuZCBzbyB0 aGF0IGdpc3QgaW5kZXhlcyBvbiByYW5nZSB0eXBlcyBhbHNvIGJlbmVmaXQgZnJvbSB0aGUKc3Bl ZWQgdXAuCgpTb3J0ZWQgZ2lzdCBpbmRleCBidWlsZCBzdHJhdGVneSBpcyB0aGUgbmV3IGRlZmF1 bHQgbm93LiBSZWdyZXNzaW9uIHRlc3RzIGFyZQp1bmNoYW5nZWQgYW5kIGFyZSB1c2luZyB0aGUg c29ydGVkIGJ1aWxkIHN0cmF0ZWd5IGluc3RlYWQuCi0tLQogY29udHJpYi9idHJlZV9naXN0L01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2JpdC5jICAgICAgICAgICAgICB8ICA0NiArKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2Jvb2wuYyAgICAgICAgICAgICB8ICAyMiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9i eXRlYS5jICAgICAgICAgICAgfCAgMzUgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nh c2guYyAgICAgICAgICAgICB8ICAyNyArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRl LmMgICAgICAgICAgICAgfCAgMjUgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5j ICAgICAgICAgICAgIHwgIDMzICsrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQu YyAgICAgICAgICAgfCAgMjggKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMg ICAgICAgICAgIHwgIDI3ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0t MS45LnNxbCB8IDE5MiArKysrKysrKysrKysrKysrKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2dpc3QuY29udHJvbCAgICAgICB8ICAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2luZXQuYyAgICAgICAgICAgICB8ICAyNyArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQyLmMgICAgICAgICAgICAgfCAgMjYgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 NC5jICAgICAgICAgICAgIHwgIDMzICsrKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4 LmMgICAgICAgICAgICAgfCAgMjYgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2 YWwuYyAgICAgICAgIHwgIDI1ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHIu YyAgICAgICAgICB8ICAyOSArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5j ICAgICAgICAgfCAgMjQgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jICAg ICAgICAgIHwgIDMzICsrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYyAgICAgICAg ICAgICAgfCAgMjggKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGV4dC5jICAgICAgICAg ICAgIHwgIDM0ICsrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMgICAgICAgICAg ICAgfCAgMjYgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdHMuYyAgICAgICAgICAgICAg IHwgIDI1ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX3Zhci5oICAgICAgICB8 ICAxMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYyAgICAgICAgICAgICB8ICAy NSArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgIDEg KwogZG9jL3NyYy9zZ21sL2J0cmVlLWdpc3Quc2dtbCAgICAgICAgICAgICAgICB8ICAgNyArCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMgICAgIHwgIDcwICsrKysrKysK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICB8ICAgMyArCiAzMCBmaWxl cyBjaGFuZ2VkLCA4ODggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3FsCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlIGIvY29udHJpYi9idHJlZV9naXN0 L01ha2VmaWxlCmluZGV4IDdhYzJkZjI2YzEwLi42ODE5MGFjNWU0NiAxMDA2NDQKLS0tIGEvY29u dHJpYi9idHJlZV9naXN0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmls ZQpAQCAtMzQsNyArMzQsNyBAQCBEQVRBID0gYnRyZWVfZ2lzdC0tMS4wLS0xLjEuc3FsIFwKICAg ICAgICBidHJlZV9naXN0LS0xLjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9n aXN0LS0xLjItLTEuMy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJl ZV9naXN0LS0xLjQtLTEuNS5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCBi dHJlZV9naXN0LS0xLjYtLTEuNy5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNy0tMS44LnNx bAorICAgICAgIGJ0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCBidHJlZV9naXN0LS0xLjgtLTEuOS5z cWwKIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50IEdpU1Qgb3Bl cmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGludDggZmxvYXQ0IGZs b2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXApkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2JpdC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2JpdC5j CmluZGV4IGYzNDZiOTU2ZmE5Li4zNWFhNTU3OGY4MyAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2JpdC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9iaXQuYwpA QCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfdmFyLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0 aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdmFyYml0LmgiCiAKIApAQCAtMTgs MTAgKzE5LDMzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9waWNrc3BsaXQpOwogUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfYml0X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfYml0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3NhbWUpOwor UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3NvcnRzdXBwb3J0KTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydCk7CiAKIAogLyogZGVmaW5lIGZvciBjb21wYXJp c29uICovCiAKK3N0YXRpYyBpbnQKK2didF9iaXRfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwg U29ydFN1cHBvcnQgc3N1cCkKK3sKKwlHQlRfVkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRV TSh4KTsKKwlHQlRfVkFSS0VZICprZXkyID0gUEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9W QVJLRVlfUiBhcmcxID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9S IGFyZzIgPSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwkv KiBsb3dlciBpcyBhbHdheXMgZXF1YWwgdG8gdXBwZXIsIHNvIGp1c3QgY29tcGFyZSB0aG9zZSBm aWVsZHMgKi8KKwlyZXN1bHQgPSBEaXJlY3RGdW5jdGlvbkNhbGwyKGJ5dGVhY21wLAorCQkJCQkJ CQkgUG9pbnRlckdldERhdHVtKGFyZzEubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVt KGFyZzIubG93ZXIpKTsKKworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVf SUZfQ09QWShrZXkyLCB5KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisK IHN0YXRpYyBib29sCiBnYnRfYml0Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgT2lk IGNvbGxhdGlvbiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTIwNywzICsyMzEsMjUgQEAgZ2J0 X2JpdF9wZW5hbHR5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X3Zh cl9wZW5hbHR5KHJlc3VsdCwgbywgbiwgUEdfR0VUX0NPTExBVElPTigpLAogCQkJCQkJCQkJICAm dGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CiB9CisKK0RhdHVtCitnYnRfYml0X3NvcnRzdXBwb3J0 KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkg UEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2JpdF9zc3Vw X2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9 CisKK0RhdHVtCitnYnRfdmFyYml0X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ U29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisK Kwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2JpdF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJh ID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYyBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9ib29sLmMKaW5kZXggYWRiNzI0ZTE2YWMuLmU2YjA4ZjA0ZTlk IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5jCisrKyBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9ib29sLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJi dHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVkZSAidXRp bHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgYm9vbGtleQogewpAQCAtMjIsNiAr MjMsMTYgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9waWNrc3BsaXQpOwogUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfYm9vbF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2Jvb2xfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ib29sX3NhbWUpOwor UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9zb3J0c3VwcG9ydCk7CisKK3N0YXRpYyBpbnQK K2didF9ib29sX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7 CisJYm9vbEtFWQkqYXJnMSA9IChib29sS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlib29s S0VZICphcmcyID0gKGJvb2xLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJcmV0dXJuIGFy ZzEtPmxvd2VyIC0gYXJnMi0+bG93ZXI7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfYm9vbGd0KGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCkBAIC0xNjYsMyAr MTc3LDE0IEBAIGdidF9ib29sX3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0 X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5m byk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2didF9ib29sX3Nv cnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0 U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0 X2Jvb2xfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5f Vk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2J5dGVhLmMg Yi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYwppbmRleCA1ZWFjYjhjNTlhMC4uODdi ODNkMTYyYmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jCkBAIC02LDYgKzYsNyBAQAogI2lu Y2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc192YXIuaCIKICNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK IAogCiAvKgpAQCAtMTcsNyArMTgsNDEgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFf cGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2J5dGVhX2NvbnNpc3RlbnQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9ieXRlYV9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2J5dGVhX3NvcnRz dXBwb3J0KTsKIAorLyogc29ydHN1cHBvcnQgc3VwcG9ydCAqLworCitzdGF0aWMgaW50CitnYnRf Ynl0ZWFfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlH QlRfVkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRVTSh4KTsKKwlHQlRfVkFSS0VZICprZXky ID0gUEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9WQVJLRVlfUiB4a2V5ID0gZ2J0X3Zhcl9r ZXlfcmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9SIHlrZXkgPSBnYnRfdmFyX2tleV9yZWFk YWJsZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwkvKiBsb3dlciBhbmQgdXBwZXIgYXJlIGFs d2F5cyB0aGUgc2FtZSwgc28gaXQgaXMgZW5vdWdoIHRvIGNvbXBhcmUgbG93ZXIgKi8KKwlyZXN1 bHQgPSBEaXJlY3RGdW5jdGlvbkNhbGwyKGJ5dGVhY21wLAorCQkJCQkJCQkgUG9pbnRlckdldERh dHVtKHhrZXkubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKHlrZXkubG93ZXIpKTsK KworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVfSUZfQ09QWShrZXkyLCB5 KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCitnYnRfYnl0 ZWFfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0g KFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3Ig PSBnYnRfYnl0ZWFfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19S RVRVUk5fVk9JRCgpOworfQogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlzb24gKi8KIApkaWZmIC0t Z2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYyBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9jYXNoLmMKaW5kZXggYzE4YzM0YzhiODMuLjRkNTBiMGYwZDlhIDEwMDY0NAotLS0g YS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9jYXNoLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVt LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2Nhc2guaCIKKyNp bmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMjUs NiArMjYsMjEgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfY2FzaF9jb25zaXN0ZW50KTsKIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfY2FzaF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfc2FtZSk7 CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9jYXNoX3NvcnRzdXBwb3J0KTsKKworZXh0ZXJuIERh dHVtIGNhc2hfY21wKFBHX0ZVTkNUSU9OX0FSR1MpOworCitzdGF0aWMgaW50CitnYnRfY2FzaF9z c3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWNhc2hLRVkJ KmFyZzEgPSAoY2FzaEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJY2FzaEtFWQkqYXJnMiA9 IChjYXNoS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIFNpbmNlIGxvd2VyIGFuZCB1 cHBlciBhcmUgYWx3YXlzIGVxdWFsLCBpdCBpcyBlbm91Z2ggdG8gY29tcGFyZSBsb3dlciAqLwor CXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoY2FzaF9jbXAsCisJCQkJ CQkJCQkJCSBDYXNoR2V0RGF0dW0oYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkgQ2FzaEdldERh dHVtKGFyZzItPmxvd2VyKSkpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Nhc2hndChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpAQCAtMjE1LDMgKzIzMSwx NCBAQCBnYnRfY2FzaF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1f c2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwog CVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfY2FzaF9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBv cnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9jYXNo X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQo KTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jCmluZGV4IDdhNGE5ZDdhODUzLi5lZTJkOTZlNjAw NiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYworKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0 cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRl ICJ1dGlscy9kYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRl ZiBzdHJ1Y3QKIHsKQEAgLTI1LDYgKzI2LDMwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Rh dGVfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX2Rpc3RhbmNlKTsK IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2RhdGVfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9kYXRlX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGF0ZV9zb3J0c3Vw cG9ydCk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworCitzdGF0aWMgaW50IGdidF9k YXRlX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJZGF0 ZUtFWSAqYWtleSA9IChkYXRlS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlkYXRlS0VZICpi a2V5ID0gKGRhdGVLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJcmV0dXJuIERhdHVtR2V0 SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihkYXRlX2NtcCwKKwkJCQkJCQkJCQkJIERhdGVBRFRH ZXREYXR1bShha2V5LT5sb3dlciksCisJCQkJCQkJCQkJCSBEYXRlQURUR2V0RGF0dW0oYmtleS0+ bG93ZXIpKSk7Cit9CisKK0RhdHVtCitnYnRfZGF0ZV9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9B UkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lO VEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9kYXRlX3NzdXBfY21wOworCXNzdXAt PnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJv b2wKIGdidF9kYXRlZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZs aW5mbykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCmluZGV4IDA1ZDAyZTcwNGEwLi45YzRhNzcyNzEw MiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2VudW0uYworKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0 cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdy cHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyogZW51bXMgYXJl IHJlYWxseSBPaWRzLCBzbyB3ZSBqdXN0IHVzZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgKi8KIApAQCAt MjYsOCArMjcsMjMgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9waWNrc3BsaXQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2VudW1fcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX3Nh bWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9zb3J0c3VwcG9ydCk7CiAKIAorc3Rh dGljIGludAorZ2J0X2VudW1fc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQg c3N1cCkKK3sKKwlvaWRLRVkgKmFyZzEgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsK KwlvaWRLRVkgKmFyZzIgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIFNp bmNlIGxvd2VyIGFuZCB1cHBlciBvaWRLRVkgYXJlIGFsd2F5cyB0aGUgc2FtZSwganVzdCBjb21w YXJlIGxvd2VyICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoQ2FsbGVyRkluZm9GdW5jdGlvbkNh bGwyKGVudW1fY21wLAorCQkJCQkJCQkJCQkJICBzc3VwLT5zc3VwX2V4dHJhLAorCQkJCQkJCQkJ CQkJICBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJICBhcmcxLT5sb3dlciwKKwkJCQkJCQkJCQkJ CSAgYXJnMi0+bG93ZXIpKTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9lbnVtZ3QoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE4MywzICsxOTks MjAgQEAgZ2J0X2VudW1fc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVt X3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsK IAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X2VudW1fc29ydHN1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBw b3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfZW51 bV9zc3VwX2NtcDsKKworCS8qCisJICogU2luY2UgZW51bV9mYXN0X2NtcCgpIGFsc28gdXNlcyBl bnVtX2NtcCgpIGxpa2UgdGhlIHJlc3Qgb2YgdGhlCisJICogY29tcGFyaXNvbiBmdW5jdGlvbnMs IGl0IGFsc28gbmVlZHMgdG8gcGFzcyBmbGluZm8gd2hlbiBjYWxsaW5nCisJICogaXQuIFRodXMg c2F2ZSBpdCBpbiBzc3VwX2V4dHJhIGFuZCByZXRyaWV2ZSBpdCBpbiBlbnVtX2Zhc3RfY21wKCkg bGF0ZXIuCisJICovCisJc3N1cC0+c3N1cF9leHRyYSA9IGZjaW5mby0+ZmxpbmZvOworCisJUEdf UkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9m bG9hdDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwppbmRleCBkMTM4YWE5 NGJmMi4uYzIzZjc4ODZlMDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9m bG9hdDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ0LmMKQEAgLTUsNiAr NSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNf bnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy9m bG9hdC5oIgogCiB0eXBlZGVmIHN0cnVjdCBmbG9hdDRrZXkKQEAgLTI0LDYgKzI1LDMzIEBAIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2Zsb2F0NF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9h dDRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc2FtZSk7CitQR19G VU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc29ydHN1cHBvcnQpOworCitleHRlcm4gRGF0dW0g YnRmbG9hdDRjbXAoUEdfRlVOQ1RJT05fQVJHUyk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9u cyAqLworc3RhdGljIGludAorZ2J0X2Zsb2F0NF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBT b3J0U3VwcG9ydCBzc3VwKQoreworCWZsb2F0NEtFWSAqYXJnMSA9IChmbG9hdDRLRVkgKikgRGF0 dW1HZXRQb2ludGVyKHgpOworCWZsb2F0NEtFWSAqYXJnMiA9IChmbG9hdDRLRVkgKikgRGF0dW1H ZXRQb2ludGVyKHkpOworCisJLyogU2luY2UgbG93ZXIgYW5kIHVwcGVyIGZvciBmbG9hdDRLRVlz IGhlcmUgYXJlIGFsd2F5cyBlcXVhbCBpdCBpcyBva2F5IHRvIGNvbXBhcmUgdGhlbSBvbmx5ICov CisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihidGZsb2F0NGNtcCwK KwkJCQkJCQkJCQkJIEZsb2F0NEdldERhdHVtKGFyZzEtPmxvd2VyKSwKKwkJCQkJCQkJCQkJIEZs b2F0NEdldERhdHVtKGFyZzItPmxvd2VyKSkpOworfQorCitEYXR1bQorZ2J0X2Zsb2F0NF9zb3J0 c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1 cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9m bG9hdDRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5f Vk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0NGd0KGNvbnN0IHZvaWQgKmEsIGNv bnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfZmxvYXQ4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMK aW5kZXggYTc0Y2QyMDA1MjkuLjEyOTgzN2YyYTE5IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfZmxvYXQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 OC5jCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUg ImJ0cmVlX3V0aWxzX251bS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5j bHVkZSAidXRpbHMvZmxvYXQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgZmxvYXQ4a2V5CkBAIC0yNCw3 ICsyNSwzMyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfY29uc2lzdGVudCk7CiBQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfZmxvYXQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ4 X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ4X3NvcnRzdXBwb3J0KTsKIAor ZXh0ZXJuIERhdHVtIGJ0ZmxvYXQ4Y21wKFBHX0ZVTkNUSU9OX0FSR1MpOworCisvKiBzb3J0c3Vw cG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9mbG9hdDhfc3N1cF9jbXAoRGF0dW0g eCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlmbG9hdDhLRVkgKmFyZzEgPSAoZmxv YXQ4S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlmbG9hdDhLRVkgKmFyZzIgPSAoZmxvYXQ4 S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFuZCBsb3dlciBmb3IgaW5w dXQga2V5cyBhcmUgZXF1YWwgaGVyZSAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1 bmN0aW9uQ2FsbDIoYnRmbG9hdDhjbXAsCisJCQkJCQkJCQkJCSBGbG9hdDhHZXREYXR1bShhcmcx LT5sb3dlciksCisJCQkJCQkJCQkJCSBGbG9hdDhHZXREYXR1bShhcmcyLT5sb3dlcikpKTsKK30K KworRGF0dW0KK2didF9mbG9hdDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlT b3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwor CXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfZmxvYXQ4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0 cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF9m bG9hdDhndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbCBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjgtLTEuOS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwMWU5OTY1Y2Y2Ci0tLSAvZGV2L251bGwKKysr IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbApAQCAtMCwwICsx LDE5MiBAQAorLyogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCAq LworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhh biB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJT04gYnRyZWVf Z2lzdCBVUERBVEUgVE8gJzEuOSciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUg RlVOQ1RJT04gZ2J0X2JpdF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAorQVMg J01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRF IEZVTkNUSU9OIGdidF92YXJiaXRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5TIHZvaWQK K0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NS RUFURSBGVU5DVElPTiBnYnRfYm9vbF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9p ZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKwor Q1JFQVRFIEZVTkNUSU9OIGdidF9jYXNoX3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2 b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwor CitDUkVBVEUgRlVOQ1RJT04gZ2J0X2VudW1fc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5T IHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7 CisKK0NSRUFURSBGVU5DVElPTiBnYnRfaW5ldF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVS TlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnR2X3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVU VVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RS SUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X21hY2FkOF9zb3J0c3VwcG9ydChpbnRlcm5hbCkK K1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxF IFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90aW1lX3NvcnRzdXBwb3J0KGludGVybmFs KQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFC TEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDJfc29ydHN1cHBvcnQoaW50ZXJu YWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdF IEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnQ0X3NvcnRzdXBw b3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xB TkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnQ4X3Nv cnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFN RScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBn YnRfYnl0ZWFfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9E VUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRF IEZVTkNUSU9OIGdidF9kYXRlX3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9p ZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7 CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZmxvYXQ0X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAg IFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVU QUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZmxvYXQ4X3NvcnRzdXBwb3J0KGlu dGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5H VUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfbWFjYWRkcl9z b3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5B TUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04g Z2J0X251bWVyaWNfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAn TU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JF QVRFIEZVTkNUSU9OIGdidF9vaWRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2 b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90ZXh0X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAg IFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVU QUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfdHNfc29ydHN1cHBvcnQoaW50ZXJu YWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdF IEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF91dWlkX3NvcnRzdXBw b3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAg ICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBn aXN0X3ZiaXRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh2YXJiaXQs IHZhcmJpdCkgZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3RfYml0X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAg IDExICAoYml0LCBiaXQpIGdidF9iaXRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVS IE9QRVJBVE9SIEZBTUlMWSBnaXN0X2Jvb2xfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJ T04gICAgMTEgIChib29sLCBib29sKSBnYnRfYm9vbF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsK KworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYnl0ZWFfb3BzIFVTSU5HIGdpc3QgQURECisg ICAgRlVOQ1RJT04gICAgMTEgIChieXRlYSwgYnl0ZWEpIGdidF9ieXRlYV9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfY2FzaF9vcHMgVVNJTkcg Z2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG1vbmV5LCBtb25leSkgZ2J0X2Nhc2hfc29y dHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2RhdGVf b3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChkYXRlLCBkYXRlKSBnYnRf ZGF0ZV9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdp c3RfZW51bV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGFueWVudW0s IGFueWVudW0pIGdidF9lbnVtX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVS QVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04g ICAgMTEgIChmbG9hdDQsIGZsb2F0NCkgZ2J0X2Zsb2F0NF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwp IDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZmxvYXQ4X29wcyBVU0lORyBnaXN0IEFE RAorICAgIEZVTkNUSU9OICAgIDExICAoZmxvYXQ4LCBmbG9hdDgpIGdidF9mbG9hdDhfc29ydHN1 cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2luZXRfb3Bz IFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChpbmV0LCBpbmV0KSBnYnRfaW5l dF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf Y2lkcl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGNpZHIsIGNpZHIp IGdidF9pbmV0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1J TFkgZ2lzdF9pbnQyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW50 MiwgaW50MikgZ2J0X2ludDJfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJB VE9SIEZBTUlMWSBnaXN0X2ludDRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAg MTEgIChpbnQ0LCBpbnQ0KSBnYnRfaW50NF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50OF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5D VElPTiAgICAxMSAgKGludDgsIGludDgpIGdidF9pbnQ4X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnRlcnZhbF9vcHMgVVNJTkcgZ2lzdCBB REQKKyAgICBGVU5DVElPTiAgICAxMSAgKGludGVydmFsLCBpbnRlcnZhbCkgZ2J0X2ludHZfc29y dHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X21hY2Fk ZHJfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChtYWNhZGRyLCBtYWNh ZGRyKSBnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFU T1IgRkFNSUxZIGdpc3RfbWFjYWRkcjhfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04g ICAgMTEgIChtYWNhZGRyOCwgbWFjYWRkcjgpIGdidF9tYWNhZDhfc29ydHN1cHBvcnQgKGludGVy bmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X251bWVyaWNfb3BzIFVTSU5HIGdp c3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChudW1lcmljLCBudW1lcmljKSBnYnRfbnVtZXJp Y19zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf b2lkX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAob2lkLCBvaWQpIGdi dF9vaWRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBn aXN0X3RleHRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0ZXh0LCB0 ZXh0KSBnYnRfdGV4dF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1Ig RkFNSUxZIGdpc3RfYnBjaGFyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDEx ICAoYnBjaGFyLCBicGNoYXIpIGJwY2hhcl9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5D VElPTiAgICAxMSAgKHRpbWUsIHRpbWUpIGdidF90aW1lX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lc3RhbXBfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgICh0aW1lc3RhbXAsIHRpbWVzdGFtcCkgZ2J0X3RzX3Nv cnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1l c3RhbXB0el9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKHRpbWVzdGFt cHR6LCB0aW1lc3RhbXB0eikgZ2J0X3RzX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRF UiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1ldHpfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVO Q1RJT04gICAgMTEgICh0aW1ldHosIHRpbWV0eikgZ2J0X3RpbWVfc29ydHN1cHBvcnQgKGludGVy bmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3V1aWRfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgICh1dWlkLCB1dWlkKSBnYnRfdXVpZF9zb3J0c3VwcG9y dCAoaW50ZXJuYWwpIDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0 LmNvbnRyb2wgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sCmluZGV4IGFi ZjY2NTM4ZjMyLi42OWQ5MzQxYTBhZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250 cm9sCkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVuc2lvbgogY29tbWVudCA9ICdz dXBwb3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGluIEdpU1QnCi1kZWZhdWx0X3Zl cnNpb24gPSAnMS44JworZGVmYXVsdF92ZXJzaW9uID0gJzEuOScKIG1vZHVsZV9wYXRobmFtZSA9 ICckbGliZGlyL2J0cmVlX2dpc3QnCiByZWxvY2F0YWJsZSA9IHRydWUKIHRydXN0ZWQgPSB0cnVl CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5jIGIvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2luZXQuYwppbmRleCA0Y2ZmZDM0OTA5MS4uY2Y5NGNkMGYzMDAgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKKysrIGIvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2luZXQuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJidHJlZV91 dGlsc19udW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYg c3RydWN0IGluZXRrZXkKIHsKQEAgLTIzLDggKzI0LDIzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2luZXRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfY29uc2lz dGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbmV0X3BlbmFsdHkpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW5ldF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRf c29ydHN1cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9pbmV0X3NzdXBfY21wKERhdHVtIHgs IERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW5ldEtFWSAqYXJnMSA9IChpbmV0S0VZ ICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlpbmV0S0VZICphcmcyID0gKGluZXRLRVkgKikgRGF0 dW1HZXRQb2ludGVyKHkpOworCisJaWYgKGFyZzEtPmxvd2VyID09IGFyZzItPmxvd2VyKQorCQly ZXR1cm4gMDsKKwllbHNlIGlmIChhcmcxLT5sb3dlciA+IGFyZzItPmxvd2VyKQorCQlyZXR1cm4g MTsKKwllbHNlCisJCXJldHVybiAtMTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9pbmV0Z3QoY29u c3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE4NCwz ICsyMDAsMTQgQEAgZ2J0X2luZXRfc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBn YnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+Zmxp bmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X2luZXRf c29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNv cnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBn YnRfaW5ldF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVS Tl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5j IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwppbmRleCAxNzUxYTZjMDU1ZC4uMDJk ZjU4MTMyMzEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKKysr IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwpAQCAtNSw2ICs1LDcgQEAKIAogI2lu Y2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKKyNpbmNs dWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKIAogdHlw ZWRlZiBzdHJ1Y3QgaW50MTZrZXkKQEAgLTI0LDYgKzI1LDMxIEBAIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2ludDJfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQyX2Rp c3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDJfcGVuYWx0eSk7CiBQR19GVU5D VElPTl9JTkZPX1YxKGdidF9pbnQyX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50 Ml9zb3J0c3VwcG9ydCk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGlu dAorZ2J0X2ludDJfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkK K3sKKwlpbnQxNktFWSAqYXJnMSA9IChpbnQxNktFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJ aW50MTZLRVkgKmFyZzIgPSAoaW50MTZLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJaWYg KGFyZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChhcmcx LT5sb3dlciA+IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gMTsKKwllbHNlCisJCXJldHVybiAwOwor fQorCitEYXR1bQorZ2J0X2ludDJfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlT b3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwor CXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50Ml9zc3VwX2NtcDsKKwlQR19SRVRVUk5fVk9JRCgp OworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDJndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2ludDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMKaW5kZXggOTBkMTgz YmU2ZTguLjFjZWYzNWFhY2UwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf aW50NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMKQEAgLTIsMTUgKzIs MTUgQEAKICAqIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMKICAqLwogI2luY2x1ZGUg InBvc3RncmVzLmgiCi0KKyNpbmNsdWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAidXRpbHMv c29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfbnVtLmgiCi0jaW5jbHVkZSAiY29tbW9uL2ludC5oIgogCiB0eXBlZGVmIHN0cnVjdCBp bnQzMmtleQogewotCWludDMyCQlsb3dlcjsKLQlpbnQzMgkJdXBwZXI7CisgIGludDMyCQlsb3dl cjsKKyAgaW50MzIJCXVwcGVyOwogfSBpbnQzMktFWTsKIAogLyoKQEAgLTI0LDcgKzI0LDcgQEAg UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2ludDRfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9w ZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRfc2FtZSk7Ci0KK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X2ludDRfc29ydHN1cHBvcnQpOwogCiBzdGF0aWMgYm9vbAogZ2J0X2lu dDRndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpAQCAt OTAsNiArOTAsMjkgQEAgc3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyB0aW5mbyA9CiAJZ2J0X2lu dDRfZGlzdAogfTsKIAorc3RhdGljIGludAorZ2J0X2ludDRfc3N1cF9jbXAoRGF0dW0gYSwgRGF0 dW0gYiwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbnQzMktFWSAgICppYSA9IChpbnQzMktFWSAq KSBEYXR1bUdldFBvaW50ZXIoYSk7CisJaW50MzJLRVkgICAqaWIgPSAoaW50MzJLRVkgKikgRGF0 dW1HZXRQb2ludGVyKGIpOworCisJLyogaW50NEtFWSB1cHBlciBhbmQgbG93ZXIgYXJlIGFsd2F5 cyB0aGUgc2FtZSBmb3IgaW5wdXQga2V5cyBoZXJlLiAqLworCWlmIChpYS0+bG93ZXIgPCBpYi0+ bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChpYS0+bG93ZXIgPiBpYi0+bG93ZXIpCisJ CXJldHVybiAxOworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK0RhdHVtCitnYnRfaW50NF9zb3J0 c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1 cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9p bnQ0X3NzdXBfY21wOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CiAKIFBHX0ZVTkNUSU9OX0lORk9f VjEoaW50NF9kaXN0KTsKIERhdHVtCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfaW50OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwppbmRleCA2NjFjZjgx ODlmYy4uZjYxYTRkYTY4MDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwpAQCAtNiw2ICs2LDcg QEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgi CiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0Lmgi CiAKIHR5cGVkZWYgc3RydWN0IGludDY0a2V5CiB7CkBAIC0yNCw3ICsyNSwzMiBAQCBQR19GVU5D VElPTl9JTkZPX1YxKGdidF9pbnQ4X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfaW50OF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQ4X3BlbmFsdHkp OwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50OF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2ludDhfc29ydHN1cHBvcnQpOwogCisvKiBzb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8K K3N0YXRpYyBpbnQKK2didF9pbnQ4X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBw b3J0IHNzdXApCit7CisJaW50NjRLRVkgKmFyZzEgPSAoaW50NjRLRVkgKikgRGF0dW1HZXRQb2lu dGVyKHgpOworCWludDY0S0VZICphcmcyID0gKGludDY0S0VZICopIERhdHVtR2V0UG9pbnRlcih5 KTsKKworCWlmIChhcmcxLT5sb3dlciA8IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gLTE7CisJZWxz ZSBpZiAoYXJnMS0+bG93ZXIgPiBhcmcyLT5sb3dlcikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQly ZXR1cm4gMDsKKworfQorCitEYXR1bQorZ2J0X2ludDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9J TlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50OF9zc3VwX2NtcDsKKwlQR19S RVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDhndChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2ludGVydmFsLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 ZXJ2YWwuYwppbmRleCA4Zjk5YTQxNjk2NS4uMjViNGVjY2UxOTIgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnRlcnZhbC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIK ICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9z LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI3LDggKzI4LDIxIEBAIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2ludHZfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9p bnR2X2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludHZfcGVuYWx0eSk7CiBQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnR2X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfaW50dl9zb3J0c3VwcG9ydCk7CiAKIAorc3RhdGljIGludAorZ2J0X2ludHZfc3N1cF9jbXAo RGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbnR2S0VZICphcmcxID0g KGludHZLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWludHZLRVkgKmFyZzIgPSAoaW50dktF WSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBpbnR2S0VZIGxvd2VyIGFuZCB1cHBlciBh cmUgYWx3YXlzIGVxdWFsIGhlcmUsIHNvIGNvbXBhcmUganVzdCBsb3dlciBtZW1iZXJzIGlzIGVu b3VnaCAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoaW50ZXJ2 YWxfY21wLAorCQkJCQkJCQkJCQkgSW50ZXJ2YWxQR2V0RGF0dW0oJmFyZzEtPmxvd2VyKSwKKwkJ CQkJCQkJCQkJIEludGVydmFsUEdldERhdHVtKCZhcmcyLT5sb3dlcikpKTsKK30KKwogc3RhdGlj IGJvb2wKIGdidF9pbnR2Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8g KmZsaW5mbykKIHsKQEAgLTI5NSwzICszMDksMTQgQEAgZ2J0X2ludHZfc2FtZShQR19GVU5DVElP Tl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIy LCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwog fQorCitEYXR1bQorZ2J0X2ludHZfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlT b3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwor CXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50dl9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJh ID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2Fk ZHIuYwppbmRleCA1NThjZmEyMTcyZi4uN2RmODVlNWRiM2IgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X21hY2FkZHIuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5ldC5oIgor I2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC0y NSw2ICsyNiwzNCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9tYWNhZF9waWNrc3BsaXQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9J TkZPX1YxKGdidF9tYWNhZF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2Fk X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydCk7CisK Ky8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X21hY2FkZHJfc3N1 cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwltYWNLRVkgKmFy ZzEgPSAobWFjS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwltYWNLRVkgKmFyZzIgPSAobWFj S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIG1hY0tFWSBsb3dlciBhbmQgdXBwZXIg bWVtYmVycyBhcmUgYWx3YXlzIGVxdWFsIGhlcmUsCisJICogc28gaXRzIGVub3VnaCB0byBjb21w YXJlIGp1c3QgbG93ZXIuCisJICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rp b25DYWxsMihtYWNhZGRyX2NtcCwKKwkJCQkJCQkJCQkJIE1hY2FkZHJQR2V0RGF0dW0oJmFyZzEt Pmxvd2VyKSwKKwkJCQkJCQkJCQkJIE1hY2FkZHJQR2V0RGF0dW0oJmFyZzItPmxvd2VyKSkpOwor Cit9CisKK0RhdHVtCitnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQor eworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDAp OworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9tYWNhZGRyX3NzdXBfY21wOworCXNzdXAtPnNz dXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogCiBzdGF0aWMgYm9v bApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYwppbmRleCA1ZDBjNTUwOWY1MS4uZTY1OTE2 OGIxZTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCkBAIC03LDYgKzcsNyBAQAog I2luY2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3Mu aCIKICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQu aCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTI1LDggKzI2LDIwIEBAIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X21hY2FkOF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFj YWQ4X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3BlbmFsdHkp OwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3NhbWUpOworUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KTsKIAogCitzdGF0aWMgaW50CitnYnRfbWFjYWRk cjhfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwltYWM4 S0VZICphcmcxID0gKG1hYzhLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCW1hYzhLRVkgKmFy ZzIgPSAobWFjOEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJ bnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKG1hY2FkZHI4X2NtcCwKKwkJCQkJCQkJCQkJIE1hY2Fk ZHI4UEdldERhdHVtKCZhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJCSBNYWNhZGRyOFBHZXREYXR1 bSgmYXJnMi0+bG93ZXIpKSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfbWFjYWQ4Z3QoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE5NCwzICsy MDcsMTQgQEAgZ2J0X21hY2FkOF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdi dF9udW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGlu Zm8pOwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfbWFjYWQ4 X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChT b3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0g Z2J0X21hY2FkZHI4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdf UkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9u dW1lcmljLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCmluZGV4IGQ1MzM2 NDhhMjk1Li5mZTZhNWE0OGRkNSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X251bWVyaWMuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCkBAIC0x MSw2ICsxMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9udW1lcmljLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc29y dHN1cHBvcnQuaCIKIAogLyoKICoqIEJ5dGVhIG9wcwpAQCAtMjEsNyArMjIsMzkgQEAgUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfbnVtZXJpY19jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X251bWVy aWNfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9udW1lcmljX3NhbWUpOworUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19zb3J0c3VwcG9ydCk7CiAKKy8qIFNvcnRzdXBw b3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X251bWVyaWNfc3N1cF9jbXAoRGF0dW0g eCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlHQlRfVkFSS0VZICprZXkxID0gUEdf REVUT0FTVF9EQVRVTSh4KTsKKwlHQlRfVkFSS0VZICprZXkyID0gUEdfREVUT0FTVF9EQVRVTSh5 KTsKKworCUdCVF9WQVJLRVlfUiBhcmcxID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5MSk7CisJ R0JUX1ZBUktFWV9SIGFyZzIgPSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkyKTsKKwlEYXR1bSBy ZXN1bHQ7CisKKwlyZXN1bHQgPSBEaXJlY3RGdW5jdGlvbkNhbGwyKG51bWVyaWNfY21wLAorCQkJ CQkJCQkgUG9pbnRlckdldERhdHVtKGFyZzEubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERh dHVtKGFyZzIubG93ZXIpKTsKKworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZS RUVfSUZfQ09QWShrZXkyLCB5KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9 CisKK0RhdHVtCitnYnRfbnVtZXJpY19zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQorewor CVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOwor CisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9udW1lcmljX3NzdXBfY21wOworCXNzdXAtPnNzdXBf ZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogLyogZGVmaW5lIGZvciBj b21wYXJpc29uICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQu YyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYwppbmRleCBkMTk3NmY0ZjA5MS4uZTNi ZDc4NjU4ZDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYworKysg Yi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfb2lkLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNs dWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVk ZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTIzLDcgKzI0 LDM0IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X29pZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X29pZF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9v aWRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9vaWRfc2FtZSk7CitQR19GVU5D VElPTl9JTkZPX1YxKGdidF9vaWRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5j dGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9vaWRfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwg U29ydFN1cHBvcnQgc3N1cCkKK3sKKwlvaWRLRVkgKmFyZzEgPSAob2lkS0VZICopIERhdHVtR2V0 UG9pbnRlcih4KTsKKwlvaWRLRVkgKmFyZzIgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih5 KTsKKworCS8qIHVwcGVyIGFuZCBsb3dlciBmaWVsZHMgYXJlIGVxdWFsIGZvciBlYWNoIG9pZEtF WSwgc28ganVzdCBjb21wYXJlIGxvd2VyICovCisJaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93 ZXIpCisJCXJldHVybiAxOworCWVsc2UgaWYgKGFyZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJ CXJldHVybiAtMTsKKwllbHNlCisJCXJldHVybiAwOworfQorCitEYXR1bQorZ2J0X29pZF9zb3J0 c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1 cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9v aWRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9J RCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X29pZGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfdGV4dC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwppbmRleCA4Zjgw ZjU0MjQwZi4uNGM2ZGZhOWE0ZTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV90ZXh0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwpAQCAtNyw2ICs3 LDcgQEAKICNpbmNsdWRlICJidHJlZV91dGlsc192YXIuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0 c3VwcG9ydC5oIgogCiAvKgogKiogVGV4dCBvcHMKQEAgLTE5LDcgKzIwLDQwIEBAIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RleHRfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdi dF9icGNoYXJfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90ZXh0X3BlbmFs dHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGV4dF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X3RleHRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMg Ki8KK3N0YXRpYyBpbnQKK2didF90ZXh0X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRT dXBwb3J0IHNzdXApCit7CisJR0JUX1ZBUktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7 CisJR0JUX1ZBUktFWSAqa2V5MiA9IFBHX0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZ X1IgYXJnMSA9IGdidF92YXJfa2V5X3JlYWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiBhcmcy ID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJcmVzdWx0 ID0gRGlyZWN0RnVuY3Rpb25DYWxsMkNvbGwoYnR0ZXh0Y21wLAorCQkJCQkJCQkJIHNzdXAtPnNz dXBfY29sbGF0aW9uLAorCQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShhcmcxLmxvd2VyKSwKKwkJ CQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZfQ09Q WShrZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTIsIHkpOworCisJcmV0dXJuIERhdHVt R2V0SW50MzIocmVzdWx0KTsKK30KKworRGF0dW0KK2didF90ZXh0X3NvcnRzdXBwb3J0KFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VU QVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X3RleHRfc3N1cF9jbXA7 CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiAv KiBkZWZpbmUgZm9yIGNvbXBhcmlzb24gKi8KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9n aXN0L2J0cmVlX3RpbWUuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKaW5kZXgg MmY3ODU5MzQwZjYuLjI4ZDQ0NDdmZjU5IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfdGltZS5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKQEAgLTcs NiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9z b3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCiB0eXBlZGVmIHN0 cnVjdApAQCAtMjgsNiArMjksOCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1lX2Rpc3Rh bmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RpbWV0el9jb25zaXN0ZW50KTsKIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2J0X3RpbWVfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdi dF90aW1lX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zb3J0c3VwcG9ydCk7 CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1ldHpfc29ydHN1cHBvcnQpOwogCiAKICNpZmRl ZiBVU0VfRkxPQVQ4X0JZVkFMCkBAIC0zNyw2ICs0MCwxOCBAQCBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF90aW1lX3NhbWUpOwogI2VuZGlmCiAKIAorc3RhdGljIGludAorZ2J0X3RpbWVrZXlfc3N1 cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwl0aW1lS0VZICph cmcxID0gKHRpbWVLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCXRpbWVLRVkgKmFyZzIgPSAo dGltZUtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBsb3dlciBhbmQgdXBwZXIgYXJl IGVxdWFsIGR1cmluZyBzb3J0c3VwcG9ydCBjb21wYXJpc29uICovCisJcmV0dXJuIERhdHVtR2V0 SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMih0aW1lX2NtcCwKKwkJCQkJCQkJCQkJIFRpbWVBRFRH ZXREYXR1bUZhc3QoYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkgVGltZUFEVEdldERhdHVtRmFz dChhcmcyLT5sb3dlcikpKTsKK30KKwogc3RhdGljIGJvb2wKIGdidF90aW1lZ3QoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTMzMiwzICszNDcs MTQgQEAgZ2J0X3RpbWVfc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVt X3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsK IAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X3RpbWVfc29ydHN1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBw b3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfdGlt ZWtleV9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9W T0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdHMuYyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCmluZGV4IDllMGQ5NzlkZGE5Li41ZWM3MzliNDgx MyAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMKKysrIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX3RzLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJ1dGls cy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAi dXRpbHMvZmxvYXQuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVm IHN0cnVjdAogewpAQCAtMzEsNiArMzIsNyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90c3R6 X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHN0el9kaXN0YW5jZSk7CiBQ R19GVU5DVElPTl9JTkZPX1YxKGdidF90c19wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X3RzX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHNfc29ydHN1cHBvcnQpOwog CiAKICNpZmRlZiBVU0VfRkxPQVQ4X0JZVkFMCkBAIC0zOSw2ICs0MSwyOSBAQCBQR19GVU5DVElP Tl9JTkZPX1YxKGdidF90c19zYW1lKTsKICNkZWZpbmUgVGltZXN0YW1wR2V0RGF0dW1GYXN0KFgp IFBvaW50ZXJHZXREYXR1bSgmKFgpKQogI2VuZGlmCiAKKy8qIFNvcnRzdXBwb3J0IGZ1bmN0aW9u cyAqLworc3RhdGljIGludAorZ2J0X3RzX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRT dXBwb3J0IHNzdXApCit7CisJdHNLRVkgKmFyZzEgPSAodHNLRVkgKikgRGF0dW1HZXRQb2ludGVy KHgpOworCXRzS0VZICphcmcyID0gKHRzS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8q IFNvcnRzdXBwb3J0IGFsd2F5cyBnZXRzIHRoZSBzYW1lIGxvd2VyIGFuZCB1cHBlciB2YWx1ZSBm b3IgaW5wdXQga2V5cyAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2Fs bDIodGltZXN0YW1wX2NtcCwKKwkJCQkJCQkJCQkJIFRpbWVzdGFtcEdldERhdHVtRmFzdChhcmcx LT5sb3dlciksCisJCQkJCQkJCQkJCSBUaW1lc3RhbXBHZXREYXR1bUZhc3QoYXJnMi0+bG93ZXIp KSk7Cit9CisKK0RhdHVtCitnYnRfdHNfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sK KwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsK KworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfdHNfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRy YSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X3Rz Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuaCBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV91dGlsc192YXIuaAppbmRleCA5MzAyZDQxY2VkNi4uZjc5YjU1M2ExZTEg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuaAorKysgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmgKQEAgLTQxLDcgKzQxLDE3IEBAIHR5 cGVkZWYgc3RydWN0CiAJR0JUX1ZBUktFWSAqKCpmX2wybikgKEdCVF9WQVJLRVkgKiwgRm1ncklu Zm8gKmZsaW5mbyk7CS8qIGNvbnZlcnQgbGVhZiB0byBub2RlICovCiB9IGdidHJlZV92aW5mbzsK IAotCisvKgorICogRnJlZSBwdHIxIGluIGNhc2UgaXRzIGEgY29weSBvZiBwdHIyLgorICoKKyAq IFRoaXMgaXMgYWRhcHRlZCBmcm9tIHZhcmxlbmEncyBQR19GUkVFX0lGX0NPUFksIHRob3VnaAor ICogZG9lc24ndCByZXF1aXJlIGZjaW5mbyBhY2Nlc3MuCisgKi8KKyNkZWZpbmUgR0JUX0ZSRUVf SUZfQ09QWShwdHIxLCBwdHIyKSBcCisJZG8geyBcCisJCWlmICgoUG9pbnRlcikgKHB0cjEpICE9 IERhdHVtR2V0UG9pbnRlcihwdHIyKSkgXAorCQkJcGZyZWUocHRyMSk7IFwKKwl9IHdoaWxlICgw KQogCiBleHRlcm4gR0JUX1ZBUktFWV9SIGdidF92YXJfa2V5X3JlYWRhYmxlKGNvbnN0IEdCVF9W QVJLRVkgKmspOwogCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5j IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYwppbmRleCBmNGM1YzZlNTg5Mi4uODVl NTdkNTIxNTEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dWlkLmMKKysr IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNs dWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVk ZSAicG9ydC9wZ19ic3dhcC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5j bHVkZSAidXRpbHMvdXVpZC5oIgogCiB0eXBlZGVmIHN0cnVjdApAQCAtMjUsNyArMjYsMzEgQEAg UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdXVpZF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfdXVpZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3V1aWRf cGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF91dWlkX3NhbWUpOworUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfdXVpZF9zb3J0c3VwcG9ydCk7CiAKK3N0YXRpYyBpbnQgdXVpZF9pbnRl cm5hbF9jbXAoY29uc3QgcGdfdXVpZF90ICphcmcxLCBjb25zdCBwZ191dWlkX3QgKmFyZzIpOwor CisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF91dWlkX3NzdXBf Y21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJdXVpZEtFWSAqYXJn MSA9ICh1dWlkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwl1dWlkS0VZICphcmcyID0gKHV1 aWRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJLyogU29ydHN1cHBvcnQgZ2V0cyBlcXVh bCB1cHBlciBhbmQgbG93ZXIgdmFsdWVzIGZvciBlYWNoIGtleSB0byBjb21wYXJlICovCisJcmV0 dXJuIHV1aWRfaW50ZXJuYWxfY21wKCZhcmcxLT5sb3dlciwgJmFyZzItPmxvd2VyKTsKK30KKwor RGF0dW0KK2didF91dWlkX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1 cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3Vw LT5jb21wYXJhdG9yID0gZ2J0X3V1aWRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5V TEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgaW50CiB1dWlkX2ludGVybmFs X2NtcChjb25zdCBwZ191dWlkX3QgKmFyZzEsIGNvbnN0IHBnX3V1aWRfdCAqYXJnMikKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZCBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9tZXNvbi5idWlsZAppbmRleCBmNGZhOTU3NGYxZi4uODk5MzJkZDM4NDQgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZAorKysgYi9jb250cmliL2J0cmVlX2dpc3Qv bWVzb24uYnVpbGQKQEAgLTUxLDYgKzUxLDcgQEAgaW5zdGFsbF9kYXRhKAogICAnYnRyZWVfZ2lz dC0tMS41LS0xLjYuc3FsJywKICAgJ2J0cmVlX2dpc3QtLTEuNi0tMS43LnNxbCcsCiAgICdidHJl ZV9naXN0LS0xLjctLTEuOC5zcWwnLAorICAnYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3FsJywKICAg a3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKICkKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2J0cmVlLWdpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwKaW5kZXggMzFl N2M3OGFhZWYuLmE0YzFiOTliZTFmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvYnRyZWUtZ2lz dC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwKQEAgLTUyLDYgKzUyLDEz IEBACiAgIDx0eXBlPm9pZDwvdHlwZT4sIGFuZCA8dHlwZT5tb25leTwvdHlwZT4uCiAgPC9wYXJh PgogCisgPHBhcmE+CisgIEJ5IGRlZmF1bHQgPGZpbGVuYW1lPmJ0cmVlX2dpc3Q8L2ZpbGVuYW1l PiBidWlsZHMgPGFjcm9ueW0+R2lTVDwvYWNyb255bT4gaW5kZXggd2l0aAorICA8ZnVuY3Rpb24+ c29ydHN1cHBvcnQ8L2Z1bmN0aW9uPiBpbiA8Zmlyc3R0ZXJtPnNvcnRlZDwvZmlyc3R0ZXJtPiBt b2RlLiBUaGlzIHVzdWFsbHkgcmVzdWx0cyBpbgorICBtdWNoIGZhc3RlciBpbmRleCBidWlsdCBz cGVlZC4gSXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV2ZXJ0IHRvIGJ1ZmZlcmVkIGJ1aWx0IHN0 cmF0ZWd5CisgIGJ5IHVzaW5nIHRoZSA8bGl0ZXJhbD5idWZmZXJpbmc8L2xpdGVyYWw+IHBhcmFt ZXRlciB3aGVuIGNyZWF0aW5nIHRoZSBpbmRleC4KKyA8L3BhcmE+CisKICA8cGFyYT4KICAgVGhp cyBtb2R1bGUgaXMgY29uc2lkZXJlZCA8cXVvdGU+dHJ1c3RlZDwvcXVvdGU+LCB0aGF0IGlzLCBp dCBjYW4gYmUKICAgaW5zdGFsbGVkIGJ5IG5vbi1zdXBlcnVzZXJzIHdobyBoYXZlIDxsaXRlcmFs PkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcmFuZ2V0eXBlc19naXN0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBl c19naXN0LmMKaW5kZXggYTYwZWU5ODVlNzQuLmZhNzU0M2JlOWRlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAidXRp bHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0eXBlcy5oIgogI2lu Y2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5o IgogCiAvKgogICogUmFuZ2UgY2xhc3MgcHJvcGVydGllcyB1c2VkIHRvIHNlZ3JlZ2F0ZSBkaWZm ZXJlbnQgY2xhc3NlcyBvZiByYW5nZXMgaW4KQEAgLTE3Nyw2ICsxNzgsNyBAQCBzdGF0aWMgdm9p ZCByYW5nZV9naXN0X2RvdWJsZV9zb3J0aW5nX3NwbGl0KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwKIHN0YXRpYyB2b2lkIHJhbmdlX2dpc3RfY29uc2lkZXJfc3BsaXQoQ29uc2lkZXJTcGxpdENv bnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQgKnJpZ2h0X2xvd2VyLCBpbnQg bWluX2xlZnRfY291bnQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQgKmxlZnRfdXBwZXIsIGludCBt YXhfbGVmdF9jb3VudCk7CitzdGF0aWMgaW50CXJhbmdlX2dpc3RfY21wKERhdHVtIGEsIERhdHVt IGIsIFNvcnRTdXBwb3J0IHNzdXApOwogc3RhdGljIGludAlnZXRfZ2lzdF9yYW5nZV9jbGFzcyhS YW5nZVR5cGUgKnJhbmdlKTsKIHN0YXRpYyBpbnQJc2luZ2xlX2JvdW5kX2NtcChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpOwogc3RhdGljIGludAlpbnRlcnZhbF9jbXBf bG93ZXIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKTsKQEAgLTc3Myw2 ICs3NzUsMjAgQEAgcmFuZ2VfZ2lzdF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19S RVRVUk5fUE9JTlRFUih2KTsKIH0KIAorLyoKKyAqIFNvcnQgc3VwcG9ydCByb3V0aW5lIGZvciBm YXN0IEdpU1QgaW5kZXggYnVpbGQgYnkgc29ydGluZy4KKyAqLworRGF0dW0KK3JhbmdlX2dpc3Rf c29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydAlzc3VwID0gKFNv cnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBy YW5nZV9naXN0X2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9W T0lEKCk7Cit9CisKIC8qIGVxdWFsaXR5IGNvbXBhcmF0b3IgZm9yIEdpU1QgKi8KIERhdHVtCiBy YW5nZV9naXN0X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKQEAgLTE2OTMsNiArMTcwOSw2MCBAQCBy YW5nZV9naXN0X2NvbnNpZGVyX3NwbGl0KENvbnNpZGVyU3BsaXRDb250ZXh0ICpjb250ZXh0LAog CX0KIH0KIAorLyoKKyAqIEdpU1Qgc29ydHN1cHBvcnQgY29tcGFyYXRvciBmb3IgcmFuZ2VzLgor ICogc2ltaWxhciB0byByYW5nZV9jbXAsIGJ1dCByYW5nZSB0eXBjYWNoZSBpcyBjYWNoZWQuCisg Ki8KK3N0YXRpYyBpbnQKK3JhbmdlX2dpc3RfY21wKERhdHVtIGEsIERhdHVtIGIsIFNvcnRTdXBw b3J0IHNzdXApCit7CisJUmFuZ2VUeXBlICpyYW5nZV9hID0gRGF0dW1HZXRSYW5nZVR5cGVQKGEp OworCVJhbmdlVHlwZSAqcmFuZ2VfYiA9IERhdHVtR2V0UmFuZ2VUeXBlUChiKTsKKwlUeXBlQ2Fj aGVFbnRyeSAqdHlwY2FjaGUgPSBzc3VwLT5zc3VwX2V4dHJhOworCVJhbmdlQm91bmQJbG93ZXIx LAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1cHBlcjI7CisJYm9vbAkJ ZW1wdHkxLAorCQkJCWVtcHR5MjsKKwlpbnQJCQlyZXN1bHQ7CisKKwlpZiAodHlwY2FjaGUgPT0g TlVMTCkKKwl7CisJCUFzc2VydChSYW5nZVR5cGVHZXRPaWQocmFuZ2VfYSkgPT0gUmFuZ2VUeXBl R2V0T2lkKHJhbmdlX2IpKTsKKwkJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShSYW5nZVR5 cGVHZXRPaWQocmFuZ2VfYSksIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKworCQkvKgorCQkgKiBD YWNoZSB0aGUgcmFuZ2UgaW5mbyBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIGhhdmluZyB0byBjYWxs CisJCSAqIGxvb2t1cF90eXBlX2NhY2hlKCkgZm9yIGVhY2ggY29tcGFyaXNvbi4KKwkJICovCisJ CXNzdXAtPnNzdXBfZXh0cmEgPSB0eXBjYWNoZTsKKwl9CisKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0 eXBjYWNoZSwgcmFuZ2VfYSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2VfZGVz ZXJpYWxpemUodHlwY2FjaGUsIHJhbmdlX2IsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOwor CisJaWYgKGVtcHR5MSAmJiBlbXB0eTIpCisJCXJlc3VsdCA9IDA7CisJZWxzZSBpZiAoZW1wdHkx KQorCQlyZXN1bHQgPSAtMTsKKwllbHNlIGlmIChlbXB0eTIpCisJCXJlc3VsdCA9IDE7CisJZWxz ZQorCXsKKwkJcmVzdWx0ID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxv d2VyMik7CisJCWlmIChyZXN1bHQgPT0gMCkKKwkJCXJlc3VsdCA9IHJhbmdlX2NtcF9ib3VuZHMo dHlwY2FjaGUsICZ1cHBlcjEsICZ1cHBlcjIpOworCX0KKworCWlmICgoRGF0dW0pIHJhbmdlX2Eg IT0gYSkKKwkJcGZyZWUocmFuZ2VfYSk7CisJaWYgKChEYXR1bSkgcmFuZ2VfYiAhPSBiKQorCQlw ZnJlZShyYW5nZV9iKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBGaW5kIGNsYXNz IG51bWJlciBmb3IgcmFuZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4IDE5 MTAwNDgyYmE0Li40YjgxMmI2ODBkNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdApAQCAt NjA2LDYgKzYwNiw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdl JywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55 cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcx MScsCisgIGFtcHJvYyA9PiAncmFuZ2VfZ2lzdF9zb3J0c3VwcG9ydCcgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnknLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2FueScsIGFtcHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dp c3Rfc3RyYXRudW1fY29tbW9uJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNDJlNDI3 ZjhmZTguLjllNDIzZDlkOTcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEwODU0LDYg KzEwODU0LDkgQEAKIHsgb2lkID0+ICczODgxJywgZGVzY3IgPT4gJ0dpU1Qgc3VwcG9ydCcsCiAg IHByb25hbWUgPT4gJ3JhbmdlX2dpc3Rfc2FtZScsIHByb3JldHR5cGUgPT4gJ2ludGVybmFsJywK ICAgcHJvYXJndHlwZXMgPT4gJ2FueXJhbmdlIGFueXJhbmdlIGludGVybmFsJywgcHJvc3JjID0+ ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7IG9pZCA9PiAnODg0OScsIGRlc2NyID0+ICdHaVNUIHN1 cHBvcnQnLAorICBwcm9uYW1lID0+ICdyYW5nZV9naXN0X3NvcnRzdXBwb3J0JywgcHJvcmV0dHlw ZSA9PiAndm9pZCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsIHByb3NyYyA9PiAncmFu Z2VfZ2lzdF9zb3J0c3VwcG9ydCcgfSwKIHsgb2lkID0+ICc2MTU0JywgZGVzY3IgPT4gJ0dpU1Qg c3VwcG9ydCcsCiAgIHByb25hbWUgPT4gJ211bHRpcmFuZ2VfZ2lzdF9jb25zaXN0ZW50JywgcHJv cmV0dHlwZSA9PiAnYm9vbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBhbnltdWx0aXJh bmdlIGludDIgb2lkIGludGVybmFsJywKLS0gCjIuNDguMQoK --=-WtNOlSfjo1c7AYTCDd/q--