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 1tKhHm-00AGs8-FM for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Dec 2024 17:11:07 +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 1tKhHj-00AMAj-PW for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Dec 2024 17:11:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tKhHj-00AMAZ-0l for pgsql-hackers@lists.postgresql.org; Mon, 09 Dec 2024 17:11:04 +0000 Received: from dd48506.kasserver.com ([85.13.164.188]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tKhHe-001vza-Df for pgsql-hackers@lists.postgresql.org; Mon, 09 Dec 2024 17:11:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oopsware.de; s=kas202409031116; t=1733764254; bh=yCdFgz8xn+HKf33+b+7q0lhuc4EES3DYOtsQURkZo78=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=YG/o9qROq628LGSjT2k6e1zvZxLyYQilMriRrRtBTMGquG2M+sTgPZdJ05OnAg3FU YSMsPEQkHdvxrghrP+U+pIeFDxl7SlHJ5v92QREz14rLb3v4qMu1LR+ACHOIFvpTm6 Q1qdz3bRX6Eeeyrf5nRM6Kq4Jv5urPf2K8/YlQtozsWF8iSDXm7SBp0IwNPVTHwLgM RedEwgsIEOIDG31WKh9/VaAXJcK95DhKqv5J1SE5KTRixmrRXnjRd5CSlU9lkJdTgl 1ZRENMLFCCjj6zcVX9dEeoVK4Hkm8Gktg8j0L4ThRjRdXsTGosR5t8Cx6Pywiz/p2d t4v2wtkg37BIw== Received: from sethos.at.struktu.ro (sethos.at.struktu.ro [46.4.183.126]) by dd48506.kasserver.com (Postfix) with ESMTPSA id B83218661B8C; Mon, 9 Dec 2024 18:10:54 +0100 (CET) Received: from chufu.bluecherstrasse.oopsware.lan (i53879C13.versanet.de [83.135.156.19]) (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 AD69E41E4D81; Mon, 9 Dec 2024 18:10:53 +0100 (CET) Message-ID: <6bd891c9e3aa12baea5c938267bdb5a1e50a299e.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: Mon, 09 Dec 2024 18:10:53 +0100 In-Reply-To: <770DB2DA-0B56-464A-87CE-5620CF12E114@yandex-team.ru> 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> 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="=-PnH3wpdzwnZ3Qj+vmD2n" User-Agent: Evolution 3.54.2 (3.54.2-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 --=-PnH3wpdzwnZ3Qj+vmD2n Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Am Samstag, dem 30.11.2024 um 22:18 +0500 schrieb Andrey Borodin: > We tried to go that route, random DEBUG1 lines were breaking tests > (autovacuum or something like that, there was something non- > deterministic). I think we can dig exact reason from 2021 thread why > we abandoned that idea... >=20 > I think we have two options: > 1. Just do not commit tests. We ran it manually, saw that paths are > taken, we are happy. So here's a version with the original, unchanged regression tests and injection point removed (i hope i forgot nothing to revert). 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. Thanks, Bernd --=-PnH3wpdzwnZ3Qj+vmD2n 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 RnJvbSBiMzhjMTE4MWQzODUyNmQwY2NkOTQ4ZjM0NDZjYTMxZjY5NTM4MTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBIZWxtbGUgPEJlcm5kIEhlbG1sZSBtYWlsaW5nc0Bv b3Bzd2FyZS5kZT4KRGF0ZTogTW9uLCA5IERlYyAyMDI0IDE4OjAyOjMxICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIHNvcnRlZCBnaXN0IGluZGV4IGJ1aWxkcyB0byBidHJl ZV9naXN0CgpUaGlzIGVuYWJsZXMgc29ydHN1cHBvcnQgaW4gdGhlIGJ0cmVlX2dpc3QgZXh0ZW5z aW9uIGZvciBmYXN0ZXIKYnVpbGRzIG9mIGdpc3QgaW5kZXhlcy4gQWRkaXRpb25hbGx5IHNvcnRz dXBwb3J0IGlzIGFsc28gYWRkZWQgZm9yIHJhbmdlIHR5cGVzCnRvIHRoZSBiYWNrZW5kIHNvIHRo YXQgZ2lzdCBpbmRleGVzIG9uIHJhbmdlIHR5cGVzIGFsc28gYmVuZWZpdCBmcm9tIHRoZQpzcGVl ZCB1cC4KClNvcnRlZCBnaXN0IGluZGV4IGJ1aWxkIHN0cmF0ZWd5IGlzIHRoZSBuZXcgZGVmYXVs dCBub3cuIFJlZ3Jlc3Npb24gdGVzdHMgYXJlCnVuY2hhbmdlZCBhbmQgYXJlIHVzaW5nIHRoZSBz b3J0ZWQgYnVpbGQgc3RyYXRlZ3kgaW5zdGVhZC4KLS0tCiBjb250cmliL2J0cmVlX2dpc3QvTWFr ZWZpbGUgICAgICAgICAgICAgICAgIHwgIDE0ICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVf Yml0LmMgICAgICAgICAgICAgIHwgIDQ2ICsrKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVf Ym9vbC5jICAgICAgICAgICAgIHwgIDIyICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2J5 dGVhLmMgICAgICAgICAgICB8ICAzNSArKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2Fz aC5jICAgICAgICAgICAgIHwgIDI3ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUu YyAgICAgICAgICAgICB8ICAyNSArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMg ICAgICAgICAgICAgfCAgMzMgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5j ICAgICAgICAgICB8ICAyOCArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDguYyAg ICAgICAgICAgfCAgMjcgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0x Ljkuc3FsIHwgMTkyICsrKysrKysrKysrKysrKysrKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfZ2lzdC5jb250cm9sICAgICAgIHwgICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVf aW5ldC5jICAgICAgICAgICAgIHwgIDI3ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu dDIuYyAgICAgICAgICAgICB8ICAyNiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0 LmMgICAgICAgICAgICAgfCAgMzMgKysrLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDgu YyAgICAgICAgICAgICB8ICAyNiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZh bC5jICAgICAgICAgfCAgMjUgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5j ICAgICAgICAgIHwgIDI5ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMg ICAgICAgICB8ICAyNCArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9udW1lcmljLmMgICAg ICAgICAgfCAgMzMgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX29pZC5jICAgICAgICAg ICAgICB8ICAyOCArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90ZXh0LmMgICAgICAgICAg ICAgfCAgMzQgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUuYyAgICAgICAgICAg ICB8ICAyNiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jICAgICAgICAgICAgICAg fCAgMjUgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmggICAgICAgIHwg IDEyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jICAgICAgICAgICAgIHwgIDI1 ICsrKwogY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMSAr CiBkb2Mvc3JjL3NnbWwvYnRyZWUtZ2lzdC5zZ21sICAgICAgICAgICAgICAgIHwgICA3ICsKIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyAgICAgfCAgNzAgKysrKysrKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0ICAgICAgICAgICB8ICAgMyArCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgIHwgICAzICsKIDMwIGZpbGVz IGNoYW5nZWQsIDg5NCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3FsCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlIGIvY29udHJpYi9idHJlZV9naXN0 L01ha2VmaWxlCmluZGV4IDdhYzJkZjI2YzEwLi45MGQzNmE2NTllNCAxMDA2NDQKLS0tIGEvY29u dHJpYi9idHJlZV9naXN0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmls ZQpAQCAtMzEsMTYgKzMxLDE2IEBAIE9CSlMgPSAgXAogCiBFWFRFTlNJT04gPSBidHJlZV9naXN0 CiBEQVRBID0gYnRyZWVfZ2lzdC0tMS4wLS0xLjEuc3FsIFwKLSAgICAgICBidHJlZV9naXN0LS0x LjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjItLTEuMy5zcWwg XAotICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJlZV9naXN0LS0xLjQtLTEuNS5z cWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCBidHJlZV9naXN0LS0xLjYtLTEu Ny5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNy0tMS44LnNxbAorCQlidHJlZV9naXN0LS0x LjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjItLTEuMy5zcWwg XAorCQlidHJlZV9naXN0LS0xLjMtLTEuNC5zcWwgYnRyZWVfZ2lzdC0tMS40LS0xLjUuc3FsIFwK KwkJYnRyZWVfZ2lzdC0tMS41LS0xLjYuc3FsIGJ0cmVlX2dpc3QtLTEuNi0tMS43LnNxbCBcCisJ CWJ0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCBidHJlZV9naXN0LS0xLjgtLTEuOS5zcWwKIFBHRklM RURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50IEdpU1Qgb3BlcmF0b3IgY2xh c3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGludDggZmxvYXQ0IGZsb2F0OCBjYXNo IG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXAotICAgICAgICB0aW1lIHRpbWV0eiBkYXRlIGlu dGVydmFsIG1hY2FkZHIgbWFjYWRkcjggaW5ldCBjaWRyIHRleHQgdmFyY2hhciBjaGFyIFwKLSAg ICAgICAgYnl0ZWEgYml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9vbCBw YXJ0aXRpb25zIFwKLSAgICAgICAgc3RyYXRudW0gd2l0aG91dF9vdmVybGFwcworCQkgdGltZSB0 aW1ldHogZGF0ZSBpbnRlcnZhbCBtYWNhZGRyIG1hY2FkZHI4IGluZXQgY2lkciB0ZXh0IHZhcmNo YXIgY2hhciBcCisJCSBieXRlYSBiaXQgdmFyYml0IG51bWVyaWMgdXVpZCBub3RfZXF1YWwgZW51 bSBib29sIHBhcnRpdGlvbnMgXAorCQkgc3RyYXRudW0gd2l0aG91dF9vdmVybGFwcwogCiBTSExJ Ql9MSU5LICs9ICQoZmlsdGVyIC1sbSwgJChMSUJTKSkKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2JpdC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2JpdC5jCmlu ZGV4IGYzNDZiOTU2ZmE5Li4zNWFhNTU3OGY4MyAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9n aXN0L2J0cmVlX2JpdC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9iaXQuYwpAQCAt Niw2ICs2LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfdmFyLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxz L3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdmFyYml0LmgiCiAKIApAQCAtMTgsMTAg KzE5LDMzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9waWNrc3BsaXQpOwogUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfYml0X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfYml0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3NhbWUpOworUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3NvcnRzdXBwb3J0KTsKK1BHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydCk7CiAKIAogLyogZGVmaW5lIGZvciBjb21wYXJpc29u ICovCiAKK3N0YXRpYyBpbnQKK2didF9iaXRfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29y dFN1cHBvcnQgc3N1cCkKK3sKKwlHQlRfVkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRVTSh4 KTsKKwlHQlRfVkFSS0VZICprZXkyID0gUEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9WQVJL RVlfUiBhcmcxID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9SIGFy ZzIgPSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwkvKiBs b3dlciBpcyBhbHdheXMgZXF1YWwgdG8gdXBwZXIsIHNvIGp1c3QgY29tcGFyZSB0aG9zZSBmaWVs ZHMgKi8KKwlyZXN1bHQgPSBEaXJlY3RGdW5jdGlvbkNhbGwyKGJ5dGVhY21wLAorCQkJCQkJCQkg UG9pbnRlckdldERhdHVtKGFyZzEubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKGFy ZzIubG93ZXIpKTsKKworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVfSUZf Q09QWShrZXkyLCB5KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisKIHN0 YXRpYyBib29sCiBnYnRfYml0Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgT2lkIGNv bGxhdGlvbiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTIwNywzICsyMzEsMjUgQEAgZ2J0X2Jp dF9wZW5hbHR5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1BPSU5URVIoZ2J0X3Zhcl9w ZW5hbHR5KHJlc3VsdCwgbywgbiwgUEdfR0VUX0NPTExBVElPTigpLAogCQkJCQkJCQkJICAmdGlu Zm8sIGZjaW5mby0+ZmxpbmZvKSk7CiB9CisKK0RhdHVtCitnYnRfYml0X3NvcnRzdXBwb3J0KFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdf R0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2JpdF9zc3VwX2Nt cDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisK K0RhdHVtCitnYnRfdmFyYml0X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29y dFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlz c3VwLT5jb21wYXJhdG9yID0gZ2J0X2JpdF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0g TlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9ib29sLmMKaW5kZXggYWRiNzI0ZTE2YWMuLmU2YjA4ZjA0ZTlkIDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5jCisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9ib29sLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJidHJl ZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMv c29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgYm9vbGtleQogewpAQCAtMjIsNiArMjMs MTYgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfYm9vbF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X2Jvb2xfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ib29sX3NhbWUpOworUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9zb3J0c3VwcG9ydCk7CisKK3N0YXRpYyBpbnQKK2di dF9ib29sX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJ Ym9vbEtFWQkqYXJnMSA9IChib29sS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlib29sS0VZ ICphcmcyID0gKGJvb2xLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJcmV0dXJuIGFyZzEt Pmxvd2VyIC0gYXJnMi0+bG93ZXI7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfYm9vbGd0KGNvbnN0 IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCkBAIC0xNjYsMyArMTc3 LDE0IEBAIGdidF9ib29sX3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251 bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7 CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2didF9ib29sX3NvcnRz dXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3Vw cG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2Jv b2xfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9J RCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2J5dGVhLmMgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYwppbmRleCA1ZWFjYjhjNTlhMC4uODdiODNk MTYyYmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jCisrKyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1 ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc192YXIuaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAog CiAvKgpAQCAtMTcsNyArMTgsNDEgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfcGlj a3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2J5dGVhX2NvbnNpc3RlbnQpOwogUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9ieXRlYV9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2J5dGVhX3NvcnRzdXBw b3J0KTsKIAorLyogc29ydHN1cHBvcnQgc3VwcG9ydCAqLworCitzdGF0aWMgaW50CitnYnRfYnl0 ZWFfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlHQlRf VkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRVTSh4KTsKKwlHQlRfVkFSS0VZICprZXkyID0g UEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9WQVJLRVlfUiB4a2V5ID0gZ2J0X3Zhcl9rZXlf cmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9SIHlrZXkgPSBnYnRfdmFyX2tleV9yZWFkYWJs ZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwkvKiBsb3dlciBhbmQgdXBwZXIgYXJlIGFsd2F5 cyB0aGUgc2FtZSwgc28gaXQgaXMgZW5vdWdoIHRvIGNvbXBhcmUgbG93ZXIgKi8KKwlyZXN1bHQg PSBEaXJlY3RGdW5jdGlvbkNhbGwyKGJ5dGVhY21wLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVt KHhrZXkubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKHlrZXkubG93ZXIpKTsKKwor CUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVfSUZfQ09QWShrZXkyLCB5KTsK KworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCitnYnRfYnl0ZWFf c29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNv cnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBn YnRfYnl0ZWFfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRV Uk5fVk9JRCgpOworfQogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlzb24gKi8KIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9jYXNoLmMKaW5kZXggYzE4YzM0YzhiODMuLjRkNTBiMGYwZDlhIDEwMDY0NAotLS0gYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9jYXNoLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgi CiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2Nhc2guaCIKKyNpbmNs dWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMjUsNiAr MjYsMjEgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfY2FzaF9jb25zaXN0ZW50KTsKIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfY2FzaF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfc2FtZSk7CitQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9jYXNoX3NvcnRzdXBwb3J0KTsKKworZXh0ZXJuIERhdHVt IGNhc2hfY21wKFBHX0ZVTkNUSU9OX0FSR1MpOworCitzdGF0aWMgaW50CitnYnRfY2FzaF9zc3Vw X2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWNhc2hLRVkJKmFy ZzEgPSAoY2FzaEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJY2FzaEtFWQkqYXJnMiA9IChj YXNoS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIFNpbmNlIGxvd2VyIGFuZCB1cHBl ciBhcmUgYWx3YXlzIGVxdWFsLCBpdCBpcyBlbm91Z2ggdG8gY29tcGFyZSBsb3dlciAqLworCXJl dHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoY2FzaF9jbXAsCisJCQkJCQkJ CQkJCSBDYXNoR2V0RGF0dW0oYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkgQ2FzaEdldERhdHVt KGFyZzItPmxvd2VyKSkpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Nhc2hndChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpAQCAtMjE1LDMgKzIzMSwxNCBA QCBnYnRfY2FzaF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2Ft ZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBH X1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfY2FzaF9zb3J0c3VwcG9y dChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQp IFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9jYXNoX3Nz dXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsK K30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jCmluZGV4IDdhNGE5ZDdhODUzLi5lZTJkOTZlNjAwNiAx MDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYworKysgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0cmVl X3V0aWxzX251bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1 dGlscy9kYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBz dHJ1Y3QKIHsKQEAgLTI1LDYgKzI2LDMwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2RhdGVf Y29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX2Rpc3RhbmNlKTsKIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2RhdGVfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9kYXRlX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGF0ZV9zb3J0c3VwcG9y dCk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworCitzdGF0aWMgaW50IGdidF9kYXRl X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJZGF0ZUtF WSAqYWtleSA9IChkYXRlS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlkYXRlS0VZICpia2V5 ID0gKGRhdGVLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJcmV0dXJuIERhdHVtR2V0SW50 MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihkYXRlX2NtcCwKKwkJCQkJCQkJCQkJIERhdGVBRFRHZXRE YXR1bShha2V5LT5sb3dlciksCisJCQkJCQkJCQkJCSBEYXRlQURUR2V0RGF0dW0oYmtleS0+bG93 ZXIpKSk7Cit9CisKK0RhdHVtCitnYnRfZGF0ZV9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdT KQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVS KDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9kYXRlX3NzdXBfY21wOworCXNzdXAtPnNz dXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wK IGdidF9kYXRlZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCmluZGV4IDA1ZDAyZTcwNGEwLi45YzRhNzcyNzEwMiAx MDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2VudW0uYworKysgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0cmVl X3V0aWxzX251bS5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJv dG9zLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyogZW51bXMgYXJlIHJl YWxseSBPaWRzLCBzbyB3ZSBqdXN0IHVzZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgKi8KIApAQCAtMjYs OCArMjcsMjMgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9waWNrc3BsaXQpOwogUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2VudW1fcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX3NhbWUp OworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9zb3J0c3VwcG9ydCk7CiAKIAorc3RhdGlj IGludAorZ2J0X2VudW1fc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1 cCkKK3sKKwlvaWRLRVkgKmFyZzEgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlv aWRLRVkgKmFyZzIgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIFNpbmNl IGxvd2VyIGFuZCB1cHBlciBvaWRLRVkgYXJlIGFsd2F5cyB0aGUgc2FtZSwganVzdCBjb21wYXJl IGxvd2VyICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoQ2FsbGVyRkluZm9GdW5jdGlvbkNhbGwy KGVudW1fY21wLAorCQkJCQkJCQkJCQkJICBzc3VwLT5zc3VwX2V4dHJhLAorCQkJCQkJCQkJCQkJ ICBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJICBhcmcxLT5sb3dlciwKKwkJCQkJCQkJCQkJCSAg YXJnMi0+bG93ZXIpKTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9lbnVtZ3QoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE4MywzICsxOTksMjAg QEAgZ2J0X2VudW1fc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3Nh bWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQ R19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X2VudW1fc29ydHN1cHBv cnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0 KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfZW51bV9z c3VwX2NtcDsKKworCS8qCisJICogU2luY2UgZW51bV9mYXN0X2NtcCgpIGFsc28gdXNlcyBlbnVt X2NtcCgpIGxpa2UgdGhlIHJlc3Qgb2YgdGhlCisJICogY29tcGFyaXNvbiBmdW5jdGlvbnMsIGl0 IGFsc28gbmVlZHMgdG8gcGFzcyBmbGluZm8gd2hlbiBjYWxsaW5nCisJICogaXQuIFRodXMgc2F2 ZSBpdCBpbiBzc3VwX2V4dHJhIGFuZCByZXRyaWV2ZSBpdCBpbiBlbnVtX2Zhc3RfY21wKCkgbGF0 ZXIuCisJICovCisJc3N1cC0+c3N1cF9leHRyYSA9IGZjaW5mby0+ZmxpbmZvOworCisJUEdfUkVU VVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9h dDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwppbmRleCBkMTM4YWE5NGJm Mi4uYzIzZjc4ODZlMDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9h dDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ0LmMKQEAgLTUsNiArNSw3 IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVt LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy9mbG9h dC5oIgogCiB0eXBlZGVmIHN0cnVjdCBmbG9hdDRrZXkKQEAgLTI0LDYgKzI1LDMzIEBAIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2Zsb2F0NF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRf cGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc2FtZSk7CitQR19GVU5D VElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc29ydHN1cHBvcnQpOworCitleHRlcm4gRGF0dW0gYnRm bG9hdDRjbXAoUEdfRlVOQ1RJT05fQVJHUyk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAq Lworc3RhdGljIGludAorZ2J0X2Zsb2F0NF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0 U3VwcG9ydCBzc3VwKQoreworCWZsb2F0NEtFWSAqYXJnMSA9IChmbG9hdDRLRVkgKikgRGF0dW1H ZXRQb2ludGVyKHgpOworCWZsb2F0NEtFWSAqYXJnMiA9IChmbG9hdDRLRVkgKikgRGF0dW1HZXRQ b2ludGVyKHkpOworCisJLyogU2luY2UgbG93ZXIgYW5kIHVwcGVyIGZvciBmbG9hdDRLRVlzIGhl cmUgYXJlIGFsd2F5cyBlcXVhbCBpdCBpcyBva2F5IHRvIGNvbXBhcmUgdGhlbSBvbmx5ICovCisJ cmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihidGZsb2F0NGNtcCwKKwkJ CQkJCQkJCQkJIEZsb2F0NEdldERhdHVtKGFyZzEtPmxvd2VyKSwKKwkJCQkJCQkJCQkJIEZsb2F0 NEdldERhdHVtKGFyZzItPmxvd2VyKSkpOworfQorCitEYXR1bQorZ2J0X2Zsb2F0NF9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBv cnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9mbG9h dDRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9J RCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0NGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfZmxvYXQ4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMKaW5k ZXggYTc0Y2QyMDA1MjkuLjEyOTgzN2YyYTE5IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfZmxvYXQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5j CkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0 cmVlX3V0aWxzX251bS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVk ZSAidXRpbHMvZmxvYXQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgZmxvYXQ4a2V5CkBAIC0yNCw3ICsy NSwzMyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfY29uc2lzdGVudCk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfZmxvYXQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ4X3Nh bWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ4X3NvcnRzdXBwb3J0KTsKIAorZXh0 ZXJuIERhdHVtIGJ0ZmxvYXQ4Y21wKFBHX0ZVTkNUSU9OX0FSR1MpOworCisvKiBzb3J0c3VwcG9y dCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9mbG9hdDhfc3N1cF9jbXAoRGF0dW0geCwg RGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlmbG9hdDhLRVkgKmFyZzEgPSAoZmxvYXQ4 S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlmbG9hdDhLRVkgKmFyZzIgPSAoZmxvYXQ4S0VZ ICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFuZCBsb3dlciBmb3IgaW5wdXQg a2V5cyBhcmUgZXF1YWwgaGVyZSAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0 aW9uQ2FsbDIoYnRmbG9hdDhjbXAsCisJCQkJCQkJCQkJCSBGbG9hdDhHZXREYXR1bShhcmcxLT5s b3dlciksCisJCQkJCQkJCQkJCSBGbG9hdDhHZXREYXR1bShhcmcyLT5sb3dlcikpKTsKK30KKwor RGF0dW0KK2didF9mbG9hdDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0 U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNz dXAtPmNvbXBhcmF0b3IgPSBnYnRfZmxvYXQ4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEg PSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF9mbG9h dDhndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbCBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjgtLTEuOS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwMWU5OTY1Y2Y2Ci0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbApAQCAtMCwwICsxLDE5 MiBAQAorLyogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCAqLwor CistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2 aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJT04gYnRyZWVfZ2lz dCBVUERBVEUgVE8gJzEuOSciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVO Q1RJT04gZ2J0X2JpdF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZV TkNUSU9OIGdidF92YXJiaXRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5TIHZvaWQKK0FT ICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFU RSBGVU5DVElPTiBnYnRfYm9vbF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAor QVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JF QVRFIEZVTkNUSU9OIGdidF9jYXNoX3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lk CitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitD UkVBVEUgRlVOQ1RJT04gZ2J0X2VudW1fc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5TIHZv aWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisK K0NSRUFURSBGVU5DVElPTiBnYnRfaW5ldF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMg dm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsK KworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnR2X3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJO UyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNU OworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X21hY2FkOF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JF VFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNU UklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90aW1lX3NvcnRzdXBwb3J0KGludGVybmFsKQor UkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUg U1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDJfc29ydHN1cHBvcnQoaW50ZXJuYWwp CisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMg SU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnQ0X3NvcnRzdXBwb3J0 KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdV QUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnQ4X3NvcnRz dXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScK KyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRf Ynl0ZWFfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxF X1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZV TkNUSU9OIGdidF9kYXRlX3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAor QVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisK K0NSRUFURSBGVU5DVElPTiBnYnRfZmxvYXQ0X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJF VFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJM RSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZmxvYXQ4X3NvcnRzdXBwb3J0KGludGVy bmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFH RSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfbWFjYWRkcl9zb3J0 c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUn CisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0 X251bWVyaWNfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9E VUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRF IEZVTkNUSU9OIGdidF9vaWRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lk CitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsK KworQ1JFQVRFIEZVTkNUSU9OIGdidF90ZXh0X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJF VFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJM RSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfdHNfc29ydHN1cHBvcnQoaW50ZXJuYWwp CisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMg SU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF91dWlkX3NvcnRzdXBwb3J0 KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBM QU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0 X3ZiaXRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh2YXJiaXQsIHZh cmJpdCkgZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFU T1IgRkFNSUxZIGdpc3RfYml0X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDEx ICAoYml0LCBiaXQpIGdidF9iaXRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X2Jvb2xfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04g ICAgMTEgIChib29sLCBib29sKSBnYnRfYm9vbF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKwor QUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYnl0ZWFfb3BzIFVTSU5HIGdpc3QgQURECisgICAg RlVOQ1RJT04gICAgMTEgIChieXRlYSwgYnl0ZWEpIGdidF9ieXRlYV9zb3J0c3VwcG9ydCAoaW50 ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfY2FzaF9vcHMgVVNJTkcgZ2lz dCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG1vbmV5LCBtb25leSkgZ2J0X2Nhc2hfc29ydHN1 cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2RhdGVfb3Bz IFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChkYXRlLCBkYXRlKSBnYnRfZGF0 ZV9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf ZW51bV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGFueWVudW0sIGFu eWVudW0pIGdidF9lbnVtX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRP UiBGQU1JTFkgZ2lzdF9mbG9hdDRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAg MTEgIChmbG9hdDQsIGZsb2F0NCkgZ2J0X2Zsb2F0NF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsK KworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZmxvYXQ4X29wcyBVU0lORyBnaXN0IEFERAor ICAgIEZVTkNUSU9OICAgIDExICAoZmxvYXQ4LCBmbG9hdDgpIGdidF9mbG9hdDhfc29ydHN1cHBv cnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2luZXRfb3BzIFVT SU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChpbmV0LCBpbmV0KSBnYnRfaW5ldF9z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfY2lk cl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGNpZHIsIGNpZHIpIGdi dF9pbmV0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF9pbnQyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW50Miwg aW50MikgZ2J0X2ludDJfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X2ludDRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEg IChpbnQ0LCBpbnQ0KSBnYnRfaW50NF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIg T1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50OF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElP TiAgICAxMSAgKGludDgsIGludDgpIGdidF9pbnQ4X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOwor CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnRlcnZhbF9vcHMgVVNJTkcgZ2lzdCBBREQK KyAgICBGVU5DVElPTiAgICAxMSAgKGludGVydmFsLCBpbnRlcnZhbCkgZ2J0X2ludHZfc29ydHN1 cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X21hY2FkZHJf b3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChtYWNhZGRyLCBtYWNhZGRy KSBnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1Ig RkFNSUxZIGdpc3RfbWFjYWRkcjhfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAg MTEgIChtYWNhZGRyOCwgbWFjYWRkcjgpIGdidF9tYWNhZDhfc29ydHN1cHBvcnQgKGludGVybmFs KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X251bWVyaWNfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgIChudW1lcmljLCBudW1lcmljKSBnYnRfbnVtZXJpY19z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rfb2lk X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAob2lkLCBvaWQpIGdidF9v aWRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0 X3RleHRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0ZXh0LCB0ZXh0 KSBnYnRfdGV4dF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFN SUxZIGdpc3RfYnBjaGFyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAo YnBjaGFyLCBicGNoYXIpIGJwY2hhcl9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIg T1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElP TiAgICAxMSAgKHRpbWUsIHRpbWUpIGdidF90aW1lX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOwor CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lc3RhbXBfb3BzIFVTSU5HIGdpc3QgQURE CisgICAgRlVOQ1RJT04gICAgMTEgICh0aW1lc3RhbXAsIHRpbWVzdGFtcCkgZ2J0X3RzX3NvcnRz dXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lc3Rh bXB0el9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKHRpbWVzdGFtcHR6 LCB0aW1lc3RhbXB0eikgZ2J0X3RzX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBP UEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1ldHpfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJ T04gICAgMTEgICh0aW1ldHosIHRpbWV0eikgZ2J0X3RpbWVfc29ydHN1cHBvcnQgKGludGVybmFs KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3V1aWRfb3BzIFVTSU5HIGdpc3QgQURE CisgICAgRlVOQ1RJT04gICAgMTEgICh1dWlkLCB1dWlkKSBnYnRfdXVpZF9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmNv bnRyb2wgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sCmluZGV4IGFiZjY2 NTM4ZjMyLi42OWQ5MzQxYTBhZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9s CkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVuc2lvbgogY29tbWVudCA9ICdzdXBw b3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGluIEdpU1QnCi1kZWZhdWx0X3ZlcnNp b24gPSAnMS44JworZGVmYXVsdF92ZXJzaW9uID0gJzEuOScKIG1vZHVsZV9wYXRobmFtZSA9ICck bGliZGlyL2J0cmVlX2dpc3QnCiByZWxvY2F0YWJsZSA9IHRydWUKIHRydXN0ZWQgPSB0cnVlCmRp ZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5jIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2luZXQuYwppbmRleCA0Y2ZmZDM0OTA5MS4uY2Y5NGNkMGYzMDAgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKKysrIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2luZXQuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJidHJlZV91dGls c19udW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYgc3Ry dWN0IGluZXRrZXkKIHsKQEAgLTIzLDggKzI0LDIzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X2luZXRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfY29uc2lzdGVu dCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbmV0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05f SU5GT19WMShnYnRfaW5ldF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfc29y dHN1cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9pbmV0X3NzdXBfY21wKERhdHVtIHgsIERh dHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW5ldEtFWSAqYXJnMSA9IChpbmV0S0VZICop IERhdHVtR2V0UG9pbnRlcih4KTsKKwlpbmV0S0VZICphcmcyID0gKGluZXRLRVkgKikgRGF0dW1H ZXRQb2ludGVyKHkpOworCisJaWYgKGFyZzEtPmxvd2VyID09IGFyZzItPmxvd2VyKQorCQlyZXR1 cm4gMDsKKwllbHNlIGlmIChhcmcxLT5sb3dlciA+IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gMTsK KwllbHNlCisJCXJldHVybiAtMTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9pbmV0Z3QoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE4NCwzICsy MDAsMTQgQEAgZ2J0X2luZXRfc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRf bnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZv KTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X2luZXRfc29y dHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRT dXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRf aW5ldF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9W T0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5jIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwppbmRleCAxNzUxYTZjMDU1ZC4uMDJkZjU4 MTMyMzEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwpAQCAtNSw2ICs1LDcgQEAKIAogI2luY2x1 ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKKyNpbmNsdWRl ICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKIAogdHlwZWRl ZiBzdHJ1Y3QgaW50MTZrZXkKQEAgLTI0LDYgKzI1LDMxIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2ludDJfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQyX2Rpc3Rh bmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDJfcGVuYWx0eSk7CiBQR19GVU5DVElP Tl9JTkZPX1YxKGdidF9pbnQyX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50Ml9z b3J0c3VwcG9ydCk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAor Z2J0X2ludDJfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sK KwlpbnQxNktFWSAqYXJnMSA9IChpbnQxNktFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJaW50 MTZLRVkgKmFyZzIgPSAoaW50MTZLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJaWYgKGFy ZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChhcmcxLT5s b3dlciA+IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gMTsKKwllbHNlCisJCXJldHVybiAwOworfQor CitEYXR1bQorZ2J0X2ludDJfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0 U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNz dXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50Ml9zc3VwX2NtcDsKKwlQR19SRVRVUk5fVk9JRCgpOwor fQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDJndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpi LCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMKaW5kZXggOTBkMTgzYmU2 ZTguLjFjZWYzNWFhY2UwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMKQEAgLTIsMTUgKzIsMTUg QEAKICAqIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMKICAqLwogI2luY2x1ZGUgInBv c3RncmVzLmgiCi0KKyNpbmNsdWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAidXRpbHMvc29y dHN1cHBvcnQuaCIKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCi0jaW5jbHVkZSAiY29tbW9uL2ludC5oIgogCiB0eXBlZGVmIHN0cnVjdCBpbnQz MmtleQogewotCWludDMyCQlsb3dlcjsKLQlpbnQzMgkJdXBwZXI7CisgIGludDMyCQlsb3dlcjsK KyAgaW50MzIJCXVwcGVyOwogfSBpbnQzMktFWTsKIAogLyoKQEAgLTI0LDcgKzI0LDcgQEAgUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2ludDRfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9wZW5h bHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRfc2FtZSk7Ci0KK1BHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2ludDRfc29ydHN1cHBvcnQpOwogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDRn dChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpAQCAtOTAs NiArOTAsMjkgQEAgc3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyB0aW5mbyA9CiAJZ2J0X2ludDRf ZGlzdAogfTsKIAorc3RhdGljIGludAorZ2J0X2ludDRfc3N1cF9jbXAoRGF0dW0gYSwgRGF0dW0g YiwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbnQzMktFWSAgICppYSA9IChpbnQzMktFWSAqKSBE YXR1bUdldFBvaW50ZXIoYSk7CisJaW50MzJLRVkgICAqaWIgPSAoaW50MzJLRVkgKikgRGF0dW1H ZXRQb2ludGVyKGIpOworCisJLyogaW50NEtFWSB1cHBlciBhbmQgbG93ZXIgYXJlIGFsd2F5cyB0 aGUgc2FtZSBmb3IgaW5wdXQga2V5cyBoZXJlLiAqLworCWlmIChpYS0+bG93ZXIgPCBpYi0+bG93 ZXIpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChpYS0+bG93ZXIgPiBpYi0+bG93ZXIpCisJCXJl dHVybiAxOworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK0RhdHVtCitnYnRfaW50NF9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBv cnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9pbnQ0 X3NzdXBfY21wOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CiAKIFBHX0ZVTkNUSU9OX0lORk9fVjEo aW50NF9kaXN0KTsKIERhdHVtCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf aW50OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwppbmRleCA2NjFjZjgxODlm Yy4uZjYxYTRkYTY4MDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4 LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwpAQCAtNiw2ICs2LDcgQEAK ICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAj aW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAK IHR5cGVkZWYgc3RydWN0IGludDY0a2V5CiB7CkBAIC0yNCw3ICsyNSwzMiBAQCBQR19GVU5DVElP Tl9JTkZPX1YxKGdidF9pbnQ4X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf aW50OF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQ4X3BlbmFsdHkpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50OF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2ludDhfc29ydHN1cHBvcnQpOwogCisvKiBzb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0 YXRpYyBpbnQKK2didF9pbnQ4X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0 IHNzdXApCit7CisJaW50NjRLRVkgKmFyZzEgPSAoaW50NjRLRVkgKikgRGF0dW1HZXRQb2ludGVy KHgpOworCWludDY0S0VZICphcmcyID0gKGludDY0S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsK KworCWlmIChhcmcxLT5sb3dlciA8IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gLTE7CisJZWxzZSBp ZiAoYXJnMS0+bG93ZXIgPiBhcmcyLT5sb3dlcikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1 cm4gMDsKKworfQorCitEYXR1bQorZ2J0X2ludDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRF UigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50OF9zc3VwX2NtcDsKKwlQR19SRVRV Uk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDhndChjb25zdCB2b2lkICphLCBj b25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludGVydmFsLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2 YWwuYwppbmRleCA4Zjk5YTQxNjk2NS4uMjViNGVjY2UxOTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9pbnRlcnZhbC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNp bmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgi CisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3Rh bXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI3LDggKzI4LDIxIEBAIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2ludHZfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnR2 X2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludHZfcGVuYWx0eSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9pbnR2X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf aW50dl9zb3J0c3VwcG9ydCk7CiAKIAorc3RhdGljIGludAorZ2J0X2ludHZfc3N1cF9jbXAoRGF0 dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbnR2S0VZICphcmcxID0gKGlu dHZLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWludHZLRVkgKmFyZzIgPSAoaW50dktFWSAq KSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBpbnR2S0VZIGxvd2VyIGFuZCB1cHBlciBhcmUg YWx3YXlzIGVxdWFsIGhlcmUsIHNvIGNvbXBhcmUganVzdCBsb3dlciBtZW1iZXJzIGlzIGVub3Vn aCAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoaW50ZXJ2YWxf Y21wLAorCQkJCQkJCQkJCQkgSW50ZXJ2YWxQR2V0RGF0dW0oJmFyZzEtPmxvd2VyKSwKKwkJCQkJ CQkJCQkJIEludGVydmFsUEdldERhdHVtKCZhcmcyLT5sb3dlcikpKTsKK30KKwogc3RhdGljIGJv b2wKIGdidF9pbnR2Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZs aW5mbykKIHsKQEAgLTI5NSwzICszMDksMTQgQEAgZ2J0X2ludHZfc2FtZShQR19GVU5DVElPTl9B UkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAm dGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQor CitEYXR1bQorZ2J0X2ludHZfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0 U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNz dXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50dl9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0g TlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfbWFjYWRkci5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHIu YwppbmRleCA1NThjZmEyMTcyZi4uN2RmODVlNWRiM2IgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21h Y2FkZHIuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKICNp bmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5ldC5oIgorI2lu Y2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC0yNSw2 ICsyNiwzNCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9tYWNhZF9waWNrc3BsaXQpOwogUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9tYWNhZF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2FkX3Nh bWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydCk7CisKKy8q IHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X21hY2FkZHJfc3N1cF9j bXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwltYWNLRVkgKmFyZzEg PSAobWFjS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwltYWNLRVkgKmFyZzIgPSAobWFjS0VZ ICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIG1hY0tFWSBsb3dlciBhbmQgdXBwZXIgbWVt YmVycyBhcmUgYWx3YXlzIGVxdWFsIGhlcmUsCisJICogc28gaXRzIGVub3VnaCB0byBjb21wYXJl IGp1c3QgbG93ZXIuCisJICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25D YWxsMihtYWNhZGRyX2NtcCwKKwkJCQkJCQkJCQkJIE1hY2FkZHJQR2V0RGF0dW0oJmFyZzEtPmxv d2VyKSwKKwkJCQkJCQkJCQkJIE1hY2FkZHJQR2V0RGF0dW0oJmFyZzItPmxvd2VyKSkpOworCit9 CisKK0RhdHVtCitnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQorewor CVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOwor CisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9tYWNhZGRyX3NzdXBfY21wOworCXNzdXAtPnNzdXBf ZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogCiBzdGF0aWMgYm9vbApk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYwppbmRleCA1ZDBjNTUwOWY1MS4uZTY1OTE2OGIx ZTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCisrKyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5jCkBAIC03LDYgKzcsNyBAQAogI2lu Y2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIK ICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK IAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTI1LDggKzI2LDIwIEBAIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X21hY2FkOF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4 X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3BlbmFsdHkpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KTsKIAogCitzdGF0aWMgaW50CitnYnRfbWFjYWRkcjhf c3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwltYWM4S0VZ ICphcmcxID0gKG1hYzhLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCW1hYzhLRVkgKmFyZzIg PSAobWFjOEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJbnQz MihEaXJlY3RGdW5jdGlvbkNhbGwyKG1hY2FkZHI4X2NtcCwKKwkJCQkJCQkJCQkJIE1hY2FkZHI4 UEdldERhdHVtKCZhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJCSBNYWNhZGRyOFBHZXREYXR1bSgm YXJnMi0+bG93ZXIpKSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfbWFjYWQ4Z3QoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE5NCwzICsyMDcs MTQgQEAgZ2J0X21hY2FkOF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9u dW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8p OwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfbWFjYWQ4X3Nv cnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0 U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0 X21hY2FkZHI4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVU VVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9udW1l cmljLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCmluZGV4IGQ1MzM2NDhh Mjk1Li5mZTZhNWE0OGRkNSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX251 bWVyaWMuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCkBAIC0xMSw2 ICsxMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9u dW1lcmljLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1 cHBvcnQuaCIKIAogLyoKICoqIEJ5dGVhIG9wcwpAQCAtMjEsNyArMjIsMzkgQEAgUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfbnVtZXJpY19waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfbnVtZXJpY19jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X251bWVyaWNf cGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9udW1lcmljX3NhbWUpOworUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19zb3J0c3VwcG9ydCk7CiAKKy8qIFNvcnRzdXBwb3J0 IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X251bWVyaWNfc3N1cF9jbXAoRGF0dW0geCwg RGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlHQlRfVkFSS0VZICprZXkxID0gUEdfREVU T0FTVF9EQVRVTSh4KTsKKwlHQlRfVkFSS0VZICprZXkyID0gUEdfREVUT0FTVF9EQVRVTSh5KTsK KworCUdCVF9WQVJLRVlfUiBhcmcxID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5MSk7CisJR0JU X1ZBUktFWV9SIGFyZzIgPSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkyKTsKKwlEYXR1bSByZXN1 bHQ7CisKKwlyZXN1bHQgPSBEaXJlY3RGdW5jdGlvbkNhbGwyKG51bWVyaWNfY21wLAorCQkJCQkJ CQkgUG9pbnRlckdldERhdHVtKGFyZzEubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVt KGFyZzIubG93ZXIpKTsKKworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVf SUZfQ09QWShrZXkyLCB5KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisK K0RhdHVtCitnYnRfbnVtZXJpY19zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNv cnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJ c3N1cC0+Y29tcGFyYXRvciA9IGdidF9udW1lcmljX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0 cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogLyogZGVmaW5lIGZvciBjb21w YXJpc29uICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYwppbmRleCBkMTk3NmY0ZjA5MS4uZTNiZDc4 NjU4ZDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYworKysgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfb2lkLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRl ICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVkZSAi dXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTIzLDcgKzI0LDM0 IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X29pZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X29pZF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9vaWRf cGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9vaWRfc2FtZSk7CitQR19GVU5DVElP Tl9JTkZPX1YxKGdidF9vaWRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlv bnMgKi8KK3N0YXRpYyBpbnQKK2didF9vaWRfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29y dFN1cHBvcnQgc3N1cCkKK3sKKwlvaWRLRVkgKmFyZzEgPSAob2lkS0VZICopIERhdHVtR2V0UG9p bnRlcih4KTsKKwlvaWRLRVkgKmFyZzIgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsK KworCS8qIHVwcGVyIGFuZCBsb3dlciBmaWVsZHMgYXJlIGVxdWFsIGZvciBlYWNoIG9pZEtFWSwg c28ganVzdCBjb21wYXJlIGxvd2VyICovCisJaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIp CisJCXJldHVybiAxOworCWVsc2UgaWYgKGFyZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJCXJl dHVybiAtMTsKKwllbHNlCisJCXJldHVybiAwOworfQorCitEYXR1bQorZ2J0X29pZF9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBv cnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9vaWRf c3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgp OworfQogCiBzdGF0aWMgYm9vbAogZ2J0X29pZGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQg KmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfdGV4dC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwppbmRleCA4ZjgwZjU0 MjQwZi4uNGM2ZGZhOWE0ZTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90 ZXh0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwpAQCAtNyw2ICs3LDcg QEAKICNpbmNsdWRlICJidHJlZV91dGlsc192YXIuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5o IgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3Vw cG9ydC5oIgogCiAvKgogKiogVGV4dCBvcHMKQEAgLTE5LDcgKzIwLDQwIEBAIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X3RleHRfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9i cGNoYXJfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90ZXh0X3BlbmFsdHkp OwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGV4dF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X3RleHRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8K K3N0YXRpYyBpbnQKK2didF90ZXh0X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBw b3J0IHNzdXApCit7CisJR0JUX1ZBUktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJ R0JUX1ZBUktFWSAqa2V5MiA9IFBHX0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1Ig YXJnMSA9IGdidF92YXJfa2V5X3JlYWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiBhcmcyID0g Z2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJcmVzdWx0ID0g RGlyZWN0RnVuY3Rpb25DYWxsMkNvbGwoYnR0ZXh0Y21wLAorCQkJCQkJCQkJIHNzdXAtPnNzdXBf Y29sbGF0aW9uLAorCQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShhcmcxLmxvd2VyKSwKKwkJCQkJ CQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZfQ09QWShr ZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTIsIHkpOworCisJcmV0dXJuIERhdHVtR2V0 SW50MzIocmVzdWx0KTsKK30KKworRGF0dW0KK2didF90ZXh0X3NvcnRzdXBwb3J0KFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJH X1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X3RleHRfc3N1cF9jbXA7CisJ c3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiAvKiBk ZWZpbmUgZm9yIGNvbXBhcmlzb24gKi8KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX3RpbWUuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKaW5kZXggMmY3 ODU5MzQwZjYuLjI4ZDQ0NDdmZjU5IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfdGltZS5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKQEAgLTcsNiAr Nyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1n cnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0 c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCiB0eXBlZGVmIHN0cnVj dApAQCAtMjgsNiArMjksOCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1lX2Rpc3RhbmNl KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RpbWV0el9jb25zaXN0ZW50KTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RpbWVfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90 aW1lX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zb3J0c3VwcG9ydCk7CitQ R19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1ldHpfc29ydHN1cHBvcnQpOwogCiAKICNpZmRlZiBV U0VfRkxPQVQ4X0JZVkFMCkBAIC0zNyw2ICs0MCwxOCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdi dF90aW1lX3NhbWUpOwogI2VuZGlmCiAKIAorc3RhdGljIGludAorZ2J0X3RpbWVrZXlfc3N1cF9j bXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwl0aW1lS0VZICphcmcx ID0gKHRpbWVLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCXRpbWVLRVkgKmFyZzIgPSAodGlt ZUtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBsb3dlciBhbmQgdXBwZXIgYXJlIGVx dWFsIGR1cmluZyBzb3J0c3VwcG9ydCBjb21wYXJpc29uICovCisJcmV0dXJuIERhdHVtR2V0SW50 MzIoRGlyZWN0RnVuY3Rpb25DYWxsMih0aW1lX2NtcCwKKwkJCQkJCQkJCQkJIFRpbWVBRFRHZXRE YXR1bUZhc3QoYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkgVGltZUFEVEdldERhdHVtRmFzdChh cmcyLT5sb3dlcikpKTsKK30KKwogc3RhdGljIGJvb2wKIGdidF90aW1lZ3QoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTMzMiwzICszNDcsMTQg QEAgZ2J0X3RpbWVfc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3Nh bWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQ R19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X3RpbWVfc29ydHN1cHBv cnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0 KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfdGltZWtl eV9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lE KCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdHMuYyBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCmluZGV4IDllMGQ5NzlkZGE5Li41ZWM3MzliNDgxMyAx MDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMKKysrIGIvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX3RzLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9m bWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRp bHMvZmxvYXQuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVmIHN0 cnVjdAogewpAQCAtMzEsNiArMzIsNyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90c3R6X2Nv bnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHN0el9kaXN0YW5jZSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF90c19wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X3RzX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHNfc29ydHN1cHBvcnQpOwogCiAK ICNpZmRlZiBVU0VfRkxPQVQ4X0JZVkFMCkBAIC0zOSw2ICs0MSwyOSBAQCBQR19GVU5DVElPTl9J TkZPX1YxKGdidF90c19zYW1lKTsKICNkZWZpbmUgVGltZXN0YW1wR2V0RGF0dW1GYXN0KFgpIFBv aW50ZXJHZXREYXR1bSgmKFgpKQogI2VuZGlmCiAKKy8qIFNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAq Lworc3RhdGljIGludAorZ2J0X3RzX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBw b3J0IHNzdXApCit7CisJdHNLRVkgKmFyZzEgPSAodHNLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgp OworCXRzS0VZICphcmcyID0gKHRzS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIFNv cnRzdXBwb3J0IGFsd2F5cyBnZXRzIHRoZSBzYW1lIGxvd2VyIGFuZCB1cHBlciB2YWx1ZSBmb3Ig aW5wdXQga2V5cyAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIo dGltZXN0YW1wX2NtcCwKKwkJCQkJCQkJCQkJIFRpbWVzdGFtcEdldERhdHVtRmFzdChhcmcxLT5s b3dlciksCisJCQkJCQkJCQkJCSBUaW1lc3RhbXBHZXREYXR1bUZhc3QoYXJnMi0+bG93ZXIpKSk7 Cit9CisKK0RhdHVtCitnYnRfdHNfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlT b3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwor CXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfdHNfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9 IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X3RzZ3Qo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKZGlmZiAtLWdp dCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuaCBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV91dGlsc192YXIuaAppbmRleCA5MzAyZDQxY2VkNi4uZjc5YjU1M2ExZTEgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuaAorKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmgKQEAgLTQxLDcgKzQxLDE3IEBAIHR5cGVk ZWYgc3RydWN0CiAJR0JUX1ZBUktFWSAqKCpmX2wybikgKEdCVF9WQVJLRVkgKiwgRm1nckluZm8g KmZsaW5mbyk7CS8qIGNvbnZlcnQgbGVhZiB0byBub2RlICovCiB9IGdidHJlZV92aW5mbzsKIAot CisvKgorICogRnJlZSBwdHIxIGluIGNhc2UgaXRzIGEgY29weSBvZiBwdHIyLgorICoKKyAqIFRo aXMgaXMgYWRhcHRlZCBmcm9tIHZhcmxlbmEncyBQR19GUkVFX0lGX0NPUFksIHRob3VnaAorICog ZG9lc24ndCByZXF1aXJlIGZjaW5mbyBhY2Nlc3MuCisgKi8KKyNkZWZpbmUgR0JUX0ZSRUVfSUZf Q09QWShwdHIxLCBwdHIyKSBcCisJZG8geyBcCisJCWlmICgoUG9pbnRlcikgKHB0cjEpICE9IERh dHVtR2V0UG9pbnRlcihwdHIyKSkgXAorCQkJcGZyZWUocHRyMSk7IFwKKwl9IHdoaWxlICgwKQog CiBleHRlcm4gR0JUX1ZBUktFWV9SIGdidF92YXJfa2V5X3JlYWRhYmxlKGNvbnN0IEdCVF9WQVJL RVkgKmspOwogCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYwppbmRleCBmNGM1YzZlNTg5Mi4uODVlNTdk NTIxNTEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dWlkLmMKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRl ICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAi cG9ydC9wZ19ic3dhcC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVk ZSAidXRpbHMvdXVpZC5oIgogCiB0eXBlZGVmIHN0cnVjdApAQCAtMjUsNyArMjYsMzEgQEAgUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfdXVpZF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfdXVpZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3V1aWRfcGVu YWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF91dWlkX3NhbWUpOworUEdfRlVOQ1RJT05f SU5GT19WMShnYnRfdXVpZF9zb3J0c3VwcG9ydCk7CiAKK3N0YXRpYyBpbnQgdXVpZF9pbnRlcm5h bF9jbXAoY29uc3QgcGdfdXVpZF90ICphcmcxLCBjb25zdCBwZ191dWlkX3QgKmFyZzIpOworCisv KiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF91dWlkX3NzdXBfY21w KERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJdXVpZEtFWSAqYXJnMSA9 ICh1dWlkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwl1dWlkS0VZICphcmcyID0gKHV1aWRL RVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJLyogU29ydHN1cHBvcnQgZ2V0cyBlcXVhbCB1 cHBlciBhbmQgbG93ZXIgdmFsdWVzIGZvciBlYWNoIGtleSB0byBjb21wYXJlICovCisJcmV0dXJu IHV1aWRfaW50ZXJuYWxfY21wKCZhcmcxLT5sb3dlciwgJmFyZzItPmxvd2VyKTsKK30KKworRGF0 dW0KK2didF91dWlkX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBv cnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5j b21wYXJhdG9yID0gZ2J0X3V1aWRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7 CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgaW50CiB1dWlkX2ludGVybmFsX2Nt cChjb25zdCBwZ191dWlkX3QgKmFyZzEsIGNvbnN0IHBnX3V1aWRfdCAqYXJnMikKZGlmZiAtLWdp dCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9t ZXNvbi5idWlsZAppbmRleCA3M2IxYmJmNTJhNi4uNWI0Y2FmZjViYWYgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvbWVz b24uYnVpbGQKQEAgLTUxLDYgKzUxLDcgQEAgaW5zdGFsbF9kYXRhKAogICAnYnRyZWVfZ2lzdC0t MS41LS0xLjYuc3FsJywKICAgJ2J0cmVlX2dpc3QtLTEuNi0tMS43LnNxbCcsCiAgICdidHJlZV9n aXN0LS0xLjctLTEuOC5zcWwnLAorICAnYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3FsJywKICAga3dh cmdzOiBjb250cmliX2RhdGFfYXJncywKICkKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2J0 cmVlLWdpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwKaW5kZXggMzFlN2M3 OGFhZWYuLmE0YzFiOTliZTFmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvYnRyZWUtZ2lzdC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwKQEAgLTUyLDYgKzUyLDEzIEBA CiAgIDx0eXBlPm9pZDwvdHlwZT4sIGFuZCA8dHlwZT5tb25leTwvdHlwZT4uCiAgPC9wYXJhPgog CisgPHBhcmE+CisgIEJ5IGRlZmF1bHQgPGZpbGVuYW1lPmJ0cmVlX2dpc3Q8L2ZpbGVuYW1lPiBi dWlsZHMgPGFjcm9ueW0+R2lTVDwvYWNyb255bT4gaW5kZXggd2l0aAorICA8ZnVuY3Rpb24+c29y dHN1cHBvcnQ8L2Z1bmN0aW9uPiBpbiA8Zmlyc3R0ZXJtPnNvcnRlZDwvZmlyc3R0ZXJtPiBtb2Rl LiBUaGlzIHVzdWFsbHkgcmVzdWx0cyBpbgorICBtdWNoIGZhc3RlciBpbmRleCBidWlsdCBzcGVl ZC4gSXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV2ZXJ0IHRvIGJ1ZmZlcmVkIGJ1aWx0IHN0cmF0 ZWd5CisgIGJ5IHVzaW5nIHRoZSA8bGl0ZXJhbD5idWZmZXJpbmc8L2xpdGVyYWw+IHBhcmFtZXRl ciB3aGVuIGNyZWF0aW5nIHRoZSBpbmRleC4KKyA8L3BhcmE+CisKICA8cGFyYT4KICAgVGhpcyBt b2R1bGUgaXMgY29uc2lkZXJlZCA8cXVvdGU+dHJ1c3RlZDwvcXVvdGU+LCB0aGF0IGlzLCBpdCBj YW4gYmUKICAgaW5zdGFsbGVkIGJ5IG5vbi1zdXBlcnVzZXJzIHdobyBoYXZlIDxsaXRlcmFsPkNS RUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcmFuZ2V0eXBlc19naXN0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19n aXN0LmMKaW5kZXggY2IyOGU5ODU5YWIuLmIwYzc3MzkwMDI0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JhbmdldHlwZXNfZ2lzdC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0eXBlcy5oIgogI2luY2x1 ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgog CiAvKgogICogUmFuZ2UgY2xhc3MgcHJvcGVydGllcyB1c2VkIHRvIHNlZ3JlZ2F0ZSBkaWZmZXJl bnQgY2xhc3NlcyBvZiByYW5nZXMgaW4KQEAgLTE3Nyw2ICsxNzgsNyBAQCBzdGF0aWMgdm9pZCBy YW5nZV9naXN0X2RvdWJsZV9zb3J0aW5nX3NwbGl0KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwK IHN0YXRpYyB2b2lkIHJhbmdlX2dpc3RfY29uc2lkZXJfc3BsaXQoQ29uc2lkZXJTcGxpdENvbnRl eHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQgKnJpZ2h0X2xvd2VyLCBpbnQgbWlu X2xlZnRfY291bnQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQgKmxlZnRfdXBwZXIsIGludCBtYXhf bGVmdF9jb3VudCk7CitzdGF0aWMgaW50CXJhbmdlX2dpc3RfY21wKERhdHVtIGEsIERhdHVtIGIs IFNvcnRTdXBwb3J0IHNzdXApOwogc3RhdGljIGludAlnZXRfZ2lzdF9yYW5nZV9jbGFzcyhSYW5n ZVR5cGUgKnJhbmdlKTsKIHN0YXRpYyBpbnQJc2luZ2xlX2JvdW5kX2NtcChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpOwogc3RhdGljIGludAlpbnRlcnZhbF9jbXBfbG93 ZXIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKTsKQEAgLTc3Myw2ICs3 NzUsMjAgQEAgcmFuZ2VfZ2lzdF9waWNrc3BsaXQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fUE9JTlRFUih2KTsKIH0KIAorLyoKKyAqIFNvcnQgc3VwcG9ydCByb3V0aW5lIGZvciBmYXN0 IEdpU1QgaW5kZXggYnVpbGQgYnkgc29ydGluZy4KKyAqLworRGF0dW0KK3JhbmdlX2dpc3Rfc29y dHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydAlzc3VwID0gKFNvcnRT dXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSByYW5n ZV9naXN0X2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lE KCk7Cit9CisKIC8qIGVxdWFsaXR5IGNvbXBhcmF0b3IgZm9yIEdpU1QgKi8KIERhdHVtCiByYW5n ZV9naXN0X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKQEAgLTE2OTMsNiArMTcwOSw2MCBAQCByYW5n ZV9naXN0X2NvbnNpZGVyX3NwbGl0KENvbnNpZGVyU3BsaXRDb250ZXh0ICpjb250ZXh0LAogCX0K IH0KIAorLyoKKyAqIEdpU1Qgc29ydHN1cHBvcnQgY29tcGFyYXRvciBmb3IgcmFuZ2VzLgorICog c2ltaWxhciB0byByYW5nZV9jbXAsIGJ1dCByYW5nZSB0eXBjYWNoZSBpcyBjYWNoZWQuCisgKi8K K3N0YXRpYyBpbnQKK3JhbmdlX2dpc3RfY21wKERhdHVtIGEsIERhdHVtIGIsIFNvcnRTdXBwb3J0 IHNzdXApCit7CisJUmFuZ2VUeXBlICpyYW5nZV9hID0gRGF0dW1HZXRSYW5nZVR5cGVQKGEpOwor CVJhbmdlVHlwZSAqcmFuZ2VfYiA9IERhdHVtR2V0UmFuZ2VUeXBlUChiKTsKKwlUeXBlQ2FjaGVF bnRyeSAqdHlwY2FjaGUgPSBzc3VwLT5zc3VwX2V4dHJhOworCVJhbmdlQm91bmQJbG93ZXIxLAor CQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1cHBlcjI7CisJYm9vbAkJZW1w dHkxLAorCQkJCWVtcHR5MjsKKwlpbnQJCQlyZXN1bHQ7CisKKwlpZiAodHlwY2FjaGUgPT0gTlVM TCkKKwl7CisJCUFzc2VydChSYW5nZVR5cGVHZXRPaWQocmFuZ2VfYSkgPT0gUmFuZ2VUeXBlR2V0 T2lkKHJhbmdlX2IpKTsKKwkJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShSYW5nZVR5cGVH ZXRPaWQocmFuZ2VfYSksIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKworCQkvKgorCQkgKiBDYWNo ZSB0aGUgcmFuZ2UgaW5mbyBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIGhhdmluZyB0byBjYWxsCisJ CSAqIGxvb2t1cF90eXBlX2NhY2hlKCkgZm9yIGVhY2ggY29tcGFyaXNvbi4KKwkJICovCisJCXNz dXAtPnNzdXBfZXh0cmEgPSB0eXBjYWNoZTsKKwl9CisKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBj YWNoZSwgcmFuZ2VfYSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2VfZGVzZXJp YWxpemUodHlwY2FjaGUsIHJhbmdlX2IsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOworCisJ aWYgKGVtcHR5MSAmJiBlbXB0eTIpCisJCXJlc3VsdCA9IDA7CisJZWxzZSBpZiAoZW1wdHkxKQor CQlyZXN1bHQgPSAtMTsKKwllbHNlIGlmIChlbXB0eTIpCisJCXJlc3VsdCA9IDE7CisJZWxzZQor CXsKKwkJcmVzdWx0ID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2Vy Mik7CisJCWlmIChyZXN1bHQgPT0gMCkKKwkJCXJlc3VsdCA9IHJhbmdlX2NtcF9ib3VuZHModHlw Y2FjaGUsICZ1cHBlcjEsICZ1cHBlcjIpOworCX0KKworCWlmICgoRGF0dW0pIHJhbmdlX2EgIT0g YSkKKwkJcGZyZWUocmFuZ2VfYSk7CisJaWYgKChEYXR1bSkgcmFuZ2VfYiAhPSBiKQorCQlwZnJl ZShyYW5nZV9iKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBGaW5kIGNsYXNzIG51 bWJlciBmb3IgcmFuZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4IDVkN2Zl MjkyYmY2Li5jNzNhMzI0M2I2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdApAQCAtNjA2 LDYgKzYwNiw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywg YW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFu Z2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMScs CisgIGFtcHJvYyA9PiAncmFuZ2VfZ2lzdF9zb3J0c3VwcG9ydCcgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzEyJywKICAgYW1wcm9j ID0+ICdnaXN0X3N0cmF0bnVtX2lkZW50aXR5JyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggOTU3NTUyNDAwN2YuLjFjZTczOWQwMTg2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTEwNzc1LDYgKzEwNzc1LDkgQEAKIHsgb2lkID0+ICczODgxJywgZGVzY3IgPT4gJ0dpU1Qgc3Vw cG9ydCcsCiAgIHByb25hbWUgPT4gJ3JhbmdlX2dpc3Rfc2FtZScsIHByb3JldHR5cGUgPT4gJ2lu dGVybmFsJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueXJhbmdlIGFueXJhbmdlIGludGVybmFsJywg cHJvc3JjID0+ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7IG9pZCA9PiAnODg0OScsIGRlc2NyID0+ ICdHaVNUIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdyYW5nZV9naXN0X3NvcnRzdXBwb3J0Jywg cHJvcmV0dHlwZSA9PiAndm9pZCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsIHByb3Ny YyA9PiAncmFuZ2VfZ2lzdF9zb3J0c3VwcG9ydCcgfSwKIHsgb2lkID0+ICc2MTU0JywgZGVzY3Ig PT4gJ0dpU1Qgc3VwcG9ydCcsCiAgIHByb25hbWUgPT4gJ211bHRpcmFuZ2VfZ2lzdF9jb25zaXN0 ZW50JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBh bnltdWx0aXJhbmdlIGludDIgb2lkIGludGVybmFsJywKLS0gCjIuNDcuMQoK --=-PnH3wpdzwnZ3Qj+vmD2n--