Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTTBk-0002KJ-KJ for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 19:15:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oTTBj-0001uO-Fx for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 19:15:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTTBi-0001uF-VR for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 19:15:47 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oTTBg-0006oK-BQ for pgsql-hackers@postgresql.org; Wed, 31 Aug 2022 19:15:46 +0000 Received: by mail-ed1-x536.google.com with SMTP id b44so19648398edf.9 for ; Wed, 31 Aug 2022 12:15:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20210112.gappssmtp.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc; bh=m9037muG8aBOpsanB/Aqs8zoNK50lv0jKqI4aJmi35Q=; b=RsG/RUo3AdEpzipnQGTpyKZXKKrF42tHkVkxG87rr+8pr7AQIr46ndNkBANhUhRi4/ Zt8UYjLYHM/WGc+ZrHSHxe4G8wXtCPn0KI2kBK1ih3toeZZjjEsUyMCBcQLJYT4Wkn8I /4xh8aHhXSayldJy3go+NiM2rl0MhcSj1PihHkNOXz5/151ulx8G4vvtDsh26bk85yiw qUcr6TRI1zt2qGmx5UslnLJG2MVDQwE1SfxWxYrllnwTjAnjSwwXicJ4l0R41mqN5162 5Y0bIA+7dX1kiw2wuCH1GOEiZKa9PgJwZgrQbeXVp4jI1zEz7FzbIm10vOnDt5aBgSBx 6oug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc; bh=m9037muG8aBOpsanB/Aqs8zoNK50lv0jKqI4aJmi35Q=; b=7Qbw7gYnTftBWhjfPjj+zfok3Numij1J9pyfr6EtSnyHf2ERe3IY94lq1xZKSXQwQJ /XRt0A5MCfqWBCOr7RzHK61XhLdRjhT7Ew/RTwWOj/kQePXQhAapgimG8Zc64doz9jH8 s/niT7sL2AHwIrdy9uv1iphkbJjKVOklFmoiABEA8VYCiJOJ3ElQdiMty98L5Mek/XGY bzfyGEzJJznOO4mObilb9wQpgIsE0GqWfET6J5MlZ5f+w2/FnLj/1aqhHcyxa7XI17Yp lY0Tyz2Xl5Sp/+NnSxy/m12iKkcu9nHQ6KLm/a46yeGw1EaNdYAQhEJ+d591txEvVtyp rEGQ== X-Gm-Message-State: ACgBeo36RvXJuhMn0h/V3ZmojiArljqINaemc/cZI7V9j8NZZEv/oTlp fK155dDOcbGm/T3zpH9XarqzwQ== X-Google-Smtp-Source: AA6agR5M1sgP9X2uVLoI+YIm2DsCSE8086X3/u/Z3CtpLdSKYKu904GxFqhqewb2w8Udbv7X5mNcpA== X-Received: by 2002:aa7:cdc5:0:b0:447:91ef:a3cd with SMTP id h5-20020aa7cdc5000000b0044791efa3cdmr24963569edw.168.1661973343154; Wed, 31 Aug 2022 12:15:43 -0700 (PDT) Received: from [10.240.0.80] (84-115-233-123.cable.dynamic.surfer.at. [84.115.233.123]) by smtp.gmail.com with ESMTPSA id fd7-20020a056402388700b00447b4a7ed85sm12874edb.86.2022.08.31.12.15.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 31 Aug 2022 12:15:42 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------RlPGHc71XsPjpeiKwWpEIe8B" Message-ID: Date: Wed, 31 Aug 2022 21:15:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH] Add sortsupport for range types and btree_gist Content-Language: en-US, de-AT To: Jacob Champion Cc: PostgreSQL Hackers , =?UTF-8?B?SGFucy1Kw7xyZ2VuIFNjaMO2bmln?= , bernd.helmle@cybertec.at References: <437ccbcf-8f80-2919-411d-a3af88becf6c@cybertec.at> <96CDC1AB-53AC-4543-A139-ED7C61F17B5A@yandex-team.ru> <81eafeab-712c-a3f3-0cd9-cde43c360515@timescale.com> From: Christoph Heiss In-Reply-To: <81eafeab-712c-a3f3-0cd9-cde43c360515@timescale.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------RlPGHc71XsPjpeiKwWpEIe8B Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! Sorry for the long delay. This fixes the crashes, now all tests run fine w/ and w/o debug configuration. That shouldn't even have slipped through as such. Notable changes from v1: - gbt_enum_sortsupport() now passes on fcinfo->flinfo enum_cmp_internal() needs a place to cache the typcache entry. - inet sortsupport now uses network_cmp() directly Thanks, Christoph Heiss --------------RlPGHc71XsPjpeiKwWpEIe8B Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Add-sortsupport-for-range-types-and-btree_gist.patch" Content-Disposition: attachment; filename*0="v2-0001-Add-sortsupport-for-range-types-and-btree_gist.patch" Content-Transfer-Encoding: base64 RnJvbSA2Njc3NzliYzA3NjFjMTM1NjE0MTcyMjE4MWM1YTU0YWM0NmQ5NmI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggSGVpc3MgPGNocmlzdG9waC5oZWlz c0BjeWJlcnRlYy5hdD4KRGF0ZTogV2VkLCAzMSBBdWcgMjAyMiAxOToyMDo0MyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjIgMS8xXSBBZGQgc29ydHN1cHBvcnQgZm9yIHJhbmdlIHR5cGVz IGFuZCBidHJlZV9naXN0CgpJbmNyZW1lbnRhbGx5IGJ1aWxkaW5nIHVwIGEgR2lTVCBpbmRl eCBjYW4gcmVzdWx0IGluIGEgc3ViLW9wdGltYWwgaW5kZXgKc3RydWN0dXJlIGZvciByYW5n ZSB0eXBlcy4KQnkgc29ydGluZyB0aGUgZGF0YSBiZWZvcmUgaW5zZXJ0aW5nIGl0IGludG8g dGhlIGluZGV4IHdpbGwgcmVzdWx0IGluIGEKbXVjaCBiZXR0ZXIgaW5kZXguCgpUaGlzIGNh biBwcm92aWRlIHNpemVhYmxlIGltcHJvdmVtZW50cyBpbiBxdWVyeSBleGVjdXRpb24gdGlt ZSwgSS9PIHJlYWQKdGltZSBhbmQgc2hhcmVkIGJsb2NrIGhpdHMvcmVhZHMuCgpTaWduZWQt b2ZmLWJ5OiBDaHJpc3RvcGggSGVpc3MgPGNocmlzdG9waC5oZWlzc0BjeWJlcnRlYy5hdD4K LS0tCiBjb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAz ICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYml0LmMgICAgICAgICAgICAgIHwgIDE5 ICsrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ib29sLmMgICAgICAgICAgICAgfCAg MjIgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYyAgICAgICAgICAgICB8 ICAyMiArKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jICAgICAgICAgICAg IHwgIDI2ICsrKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjgu c3FsIHwgMTEwICsrKysrKysrKysrKysrKysrKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfZ2lzdC5jb250cm9sICAgICAgIHwgICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfaW5ldC5jICAgICAgICAgICAgIHwgIDE5ICsrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnRlcnZhbC5jICAgICAgICAgfCAgMTkgKysrKwogY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX21hY2FkZHI4LmMgICAgICAgICB8ICAxOSArKysrCiBjb250cmliL2J0cmVlX2dp c3QvYnRyZWVfdGltZS5jICAgICAgICAgICAgIHwgIDE5ICsrKysKIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyAgICAgfCAgNzAgKysrKysrKysrKysrKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0ICAgICAgICAgICB8ICAgMyArCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgIHwgICAzICsKIDE0IGZp bGVzIGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5z cWwKCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUgYi9jb250cmli L2J0cmVlX2dpc3QvTWFrZWZpbGUKaW5kZXggNDg5OTdjNzVmNi4uNDA5NmRlNzNlYSAxMDA2 NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9NYWtlZmlsZQpAQCAtMzMsNyArMzMsOCBAQCBFWFRFTlNJT04gPSBidHJlZV9n aXN0CiBEQVRBID0gYnRyZWVfZ2lzdC0tMS4wLS0xLjEuc3FsIFwKICAgICAgICBidHJlZV9n aXN0LS0xLjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjIt LTEuMy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJlZV9naXN0 LS0xLjQtLTEuNS5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCBidHJl ZV9naXN0LS0xLjYtLTEuNy5zcWwKKyAgICAgICBidHJlZV9naXN0LS0xLjUtLTEuNi5zcWwg YnRyZWVfZ2lzdC0tMS42LS0xLjcuc3FsIFwKKyAgICAgICBidHJlZV9naXN0LS0xLjctLTEu OC5zcWwKIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50IEdp U1Qgb3BlcmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGludDgg ZmxvYXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXApkaWZmIC0t Z2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2JpdC5jIGIvY29udHJpYi9idHJlZV9n aXN0L2J0cmVlX2JpdC5jCmluZGV4IDViMjQ2YmNkZTQuLmJmMzJiZmQ2MjggMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9iaXQuYworKysgYi9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfYml0LmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfdmFyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAi dXRpbHMvdmFyYml0LmgiCiAKIApAQCAtMTksMTAgKzIwLDE3IEBAIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2JpdF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0 X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3BlbmFsdHkpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfYml0X3NvcnRzdXBwb3J0KTsKIAogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlzb24g Ki8KIAorc3RhdGljIGludAorYml0X2Zhc3RfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRT dXBwb3J0IHNzdXApCit7CisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25D YWxsMihieXRlYWNtcCwgeCwgeSkpOworfQorCiBzdGF0aWMgYm9vbAogZ2J0X2JpdGd0KGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIE9pZCBjb2xsYXRpb24sIEZtZ3JJbmZvICpm bGluZm8pCiB7CkBAIC0yMDgsMyArMjE2LDE0IEBAIGdidF9iaXRfcGVuYWx0eShQR19GVU5D VElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lOVEVSKGdidF92YXJfcGVuYWx0eShyZXN1bHQs IG8sIG4sIFBHX0dFVF9DT0xMQVRJT04oKSwKIAkJCQkJCQkJCSAgJnRpbmZvLCBmY2luZm8t PmZsaW5mbykpOwogfQorCitEYXR1bQorZ2J0X2JpdF9zb3J0c3VwcG9ydChQR19GVU5DVElP Tl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFS R19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGJpdF9mYXN0X2NtcDsKKwlz c3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYg LS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5jIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2Jvb2wuYwppbmRleCA4YjJhZjEyOWI1Li4zYTlmMjMwZTY4IDEwMDY0 NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5jCisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9ib29sLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiYnRy ZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgImNv bW1vbi9pbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVm IHN0cnVjdCBib29sa2V5CiB7CkBAIC0yMyw2ICsyNCwxNiBAQCBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9ib29sX3BpY2tzcGxpdCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ib29s X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9wZW5hbHR5KTsK IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Jvb2xfc2FtZSk7CitQR19GVU5DVElPTl9JTkZP X1YxKGdidF9ib29sX3NvcnRzdXBwb3J0KTsKKworc3RhdGljIGludAorYm9vbF9mYXN0X2Nt cChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWJvb2wJYXJnMSA9 IERhdHVtR2V0Qm9vbCh4KTsKKwlib29sCWFyZzIgPSBEYXR1bUdldEJvb2woeSk7CisKKwly ZXR1cm4gYXJnMSAtIGFyZzI7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfYm9vbGd0KGNvbnN0 IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCkBAIC0xNjcsMyAr MTc4LDE0IEBAIGdidF9ib29sX3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0g Z2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8t PmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2di dF9ib29sX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQg c3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5j b21wYXJhdG9yID0gYm9vbF9mYXN0X2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsK KworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfY2FzaC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYwppbmRl eCA2YWM5N2UyYjEyLi4zODliNzI1MTMwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfY2FzaC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9jYXNoLmMK QEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVk ZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2Nhc2guaCIKKyNpbmNsdWRlICJ1 dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMjUsNiArMjYs MTYgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfY2FzaF9jb25zaXN0ZW50KTsKIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfY2FzaF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfc2Ft ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9jYXNoX3NvcnRzdXBwb3J0KTsKKworc3Rh dGljIGludAorY2FzaF9mYXN0X2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBz c3VwKQoreworCWJvb2wJYXJnMSA9IERhdHVtR2V0Q2FzaCh4KTsKKwlib29sCWFyZzIgPSBE YXR1bUdldENhc2goeSk7CisKKwlyZXR1cm4gYXJnMSAtIGFyZzI7Cit9CiAKIHN0YXRpYyBi b29sCiBnYnRfY2FzaGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZv ICpmbGluZm8pCkBAIC0yMTUsMyArMjI2LDE0IEBAIGdidF9jYXNoX3NhbWUoUEdfRlVOQ1RJ T05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAq KSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVz dWx0KTsKIH0KKworRGF0dW0KK2didF9jYXNoX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BP SU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gY2FzaF9mYXN0X2NtcDsKKwlzc3Vw LT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1n aXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jIGIvY29udHJpYi9idHJlZV9n aXN0L2J0cmVlX2VudW0uYwppbmRleCBkNGRjMzhhMzhlLi4zM2I5YTM0MjM1IDEwMDY0NAot LS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9lbnVtLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyogZW51bXMgYXJl IHJlYWxseSBPaWRzLCBzbyB3ZSBqdXN0IHVzZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgKi8KIApA QCAtMjYsOCArMjcsMTYgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9waWNrc3Bs aXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9jb25zaXN0ZW50KTsKIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2J0X2VudW1fcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9lbnVtX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9zb3J0c3Vw cG9ydCk7CiAKIAorc3RhdGljIGludAorZW51bV9mYXN0X2NtcChEYXR1bSB4LCBEYXR1bSB5 LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCXJldHVybiBEYXR1bUdldEludDMyKENhbGxlckZJ bmZvRnVuY3Rpb25DYWxsMihlbnVtX2NtcCwgc3N1cC0+c3N1cF9leHRyYSwKKwkJCQkJCQkJ CQkJCSAgSW52YWxpZE9pZCwgeCwgeSkpOworfQorCiBzdGF0aWMgYm9vbAogZ2J0X2VudW1n dChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewpA QCAtMTgzLDMgKzE5MiwyMCBAQCBnYnRfZW51bV9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ KnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5m bywgZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisK K0RhdHVtCitnYnRfZW51bV9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNv cnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOwor CisJc3N1cC0+Y29tcGFyYXRvciA9IGVudW1fZmFzdF9jbXA7CisKKwkvKgorCSAqIFNpbmNl IGVudW1fZmFzdF9jbXAoKSBhbHNvIHVzZXMgZW51bV9jbXAoKSBsaWtlIHRoZSByZXN0IG9m IHRoZQorCSAqIGNvbXBhcnNpb24gZnVuY3Rpb25zLCBpdCBhbHNvIG5lZWRzIHRvIHBhc3Mg b24gZmxpbmZvIHdoZW4gY2FsbGluZworCSAqIGl0LiBUaHVzIHNhdmUgaXQgaW4gLT5zc3Vw X2V4dHJhIGFuZCBsYXRlciByZXRyaWV2ZSBpdCBpbiBlbnVtX2Zhc3RfY21wKCkuCisJICov CisJc3N1cC0+c3N1cF9leHRyYSA9IGZjaW5mby0+ZmxpbmZvOworCisJUEdfUkVUVVJOX1ZP SUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0x LjctLTEuOC5zcWwgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjgu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE1YWM5NjU3Y2MK LS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43 LS0xLjguc3FsCkBAIC0wLDAgKzEsMTEwIEBACisvKiBjb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfZ2lzdC0tMS43LS0xLjguc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBz b3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNo byBVc2UgIkFMVEVSIEVYVEVOU0lPTiBidHJlZV9naXN0IFVQREFURSBUTyAnMS44JyIgdG8g bG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBnYnRfYml0X3NvcnRz dXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor TEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2Jv b2xfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFU SE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElP TiBnYnRfY2FzaF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRF IEZVTkNUSU9OIGdidF9lbnVtX3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lk CitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwor CitDUkVBVEUgRlVOQ1RJT04gZ2J0X2luZXRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRV Uk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBT VFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfaW50dl9zb3J0c3VwcG9ydChpbnRlcm5h bCkKK1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9tYWNhZDhfc29ydHN1cHBv cnQoaW50ZXJuYWwpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5H VUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfdGltZV9z b3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFN RScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQUxURVIgT1BFUkFUT1IgRkFN SUxZIGdpc3RfYml0X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAo Yml0LCBiaXQpIGdidF9iaXRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X2Jvb2xfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJ T04gICAgMTEgIChib29sLCBib29sKSBnYnRfYm9vbF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwp IDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYnl0ZWFfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgIChieXRlYSwgYnl0ZWEpIGJ5dGVhX3NvcnRzdXBw b3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9jYXNoX29w cyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAobW9uZXksIG1vbmV5KSBn YnRfY2FzaF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFN SUxZIGdpc3RfZGF0ZV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAg KGRhdGUsIGRhdGUpIGRhdGVfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X2VudW1fb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJ T04gICAgMTEgIChhbnllbnVtLCBhbnllbnVtKSBnYnRfZW51bV9zb3J0c3VwcG9ydCAoaW50 ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZmxvYXQ0X29wcyBVU0lO RyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoZmxvYXQ0LCBmbG9hdDQpIGJ0Zmxv YXQ0c29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBn aXN0X2Zsb2F0OF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGZs b2F0OCwgZmxvYXQ4KSBidGZsb2F0OHNvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRF UiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbmV0X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZV TkNUSU9OICAgIDExICAoaW5ldCwgaW5ldCkgZ2J0X2luZXRfc29ydHN1cHBvcnQgKGludGVy bmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2ludDJfb3BzIFVTSU5HIGdp c3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChpbnQyLCBpbnQyKSBidGludDJzb3J0c3Vw cG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50NF9v cHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGludDQsIGludDQpIGJ0 aW50NHNvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF9pbnQ4X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW50 OCwgaW50OCkgYnRpbnQ4c29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJB VE9SIEZBTUlMWSBnaXN0X2ludGVydmFsX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNU SU9OICAgIDExICAoaW50ZXJ2YWwsIGludGVydmFsKSBnYnRfaW50dl9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfbWFjYWRkcl9vcHMg VVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG1hY2FkZHIsIG1hY2FkZHIp IG1hY2FkZHJfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZB TUlMWSBnaXN0X21hY2FkZHI4X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAg IDExICAobWFjYWRkcjgsIG1hY2FkZHI4KSBnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0IChpbnRl cm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9udW1lcmljX29wcyBVU0lO RyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAobnVtZXJpYywgbnVtZXJpYykgbnVt ZXJpY19zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZ IGdpc3Rfb2lkX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAob2lk LCBvaWQpIGJ0b2lkc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X3RleHRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAg MTEgICh0ZXh0LCB0ZXh0KSBidHRleHRzb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYnBjaGFyX29wcyBVU0lORyBnaXN0IEFERAorICAg IEZVTkNUSU9OICAgIDExICAoYnBjaGFyLCBicGNoYXIpIGJwY2hhcl9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZV9vcHMgVVNJ TkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKHRpbWUsIHRpbWUpIGdidF90aW1l X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lz dF90aW1lc3RhbXBfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0 aW1lc3RhbXAsIHRpbWVzdGFtcCkgdGltZXN0YW1wX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF91dWlkX29wcyBVU0lORyBnaXN0IEFE RAorICAgIEZVTkNUSU9OICAgIDExICAodXVpZCwgdXVpZCkgdXVpZF9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0 LmNvbnRyb2wgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sCmluZGV4 IGZhOTE3MWE4MGEuLmFiZjY2NTM4ZjMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9naXN0LmNvbnRyb2wKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dp c3QuY29udHJvbApAQCAtMSw2ICsxLDYgQEAKICMgYnRyZWVfZ2lzdCBleHRlbnNpb24KIGNv bW1lbnQgPSAnc3VwcG9ydCBmb3IgaW5kZXhpbmcgY29tbW9uIGRhdGF0eXBlcyBpbiBHaVNU JwotZGVmYXVsdF92ZXJzaW9uID0gJzEuNycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjgnCiBt b2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9idHJlZV9naXN0JwogcmVsb2NhdGFibGUgPSB0 cnVlCiB0cnVzdGVkID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2luZXQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKaW5kZXggMmZi OTUyZGNhOC4uMWY1MTljZmQ2MSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2luZXQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5jCkBAIC04 LDYgKzgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5ldC5oIgorI2luY2x1ZGUgInV0 aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0IGluZXRrZXkKIHsKQEAgLTI0 LDggKzI1LDE1IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfcGlja3NwbGl0KTsK IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfY29uc2lzdGVudCk7CiBQR19GVU5DVElP Tl9JTkZPX1YxKGdidF9pbmV0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf aW5ldF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfc29ydHN1cHBvcnQp OwogCiAKK3N0YXRpYyBpbnQKK2luZXRfZmFzdF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29y dFN1cHBvcnQgc3N1cCkKK3sKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlv bkNhbGwyKG5ldHdvcmtfY21wLCB4LCB5KSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfaW5l dGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7 CkBAIC0xODUsMyArMTkzLDE0IEBAIGdidF9pbmV0X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykK IAkqcmVzdWx0ID0gZ2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRp bmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0K KworRGF0dW0KK2didF9pbmV0X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ U29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7 CisKKwlzc3VwLT5jb21wYXJhdG9yID0gaW5ldF9mYXN0X2NtcDsKKwlzc3VwLT5zc3VwX2V4 dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnRlcnZhbC5jCmluZGV4IGMyYmY4MjA4NmQuLjgwMTc5YWRjOTkgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUg ImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAj aW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIHR5cGVkZWYgc3RydWN0CkBAIC0yNyw4 ICsyOCwxNSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnR2X2NvbnNpc3RlbnQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50dl9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9J TkZPX1YxKGdidF9pbnR2X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50 dl9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludHZfc29ydHN1cHBvcnQpOwog CiAKK3N0YXRpYyBpbnQKK2ludHZfZmFzdF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1 cHBvcnQgc3N1cCkKK3sKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNh bGwyKGludGVydmFsX2NtcCwgeCwgeSkpOworfQorCiBzdGF0aWMgYm9vbAogZ2J0X2ludHZn dChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewpA QCAtMjk1LDMgKzMwMywxNCBAQCBnYnRfaW50dl9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ KnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5m bywgZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisK K0RhdHVtCitnYnRfaW50dl9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNv cnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOwor CisJc3N1cC0+Y29tcGFyYXRvciA9IGludHZfZmFzdF9jbXA7CisJc3N1cC0+c3N1cF9leHRy YSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfbWFjYWRkcjguYwppbmRleCA3OTZjYzRlZmVlLi4wMzRlMzRiZjkwIDEwMDY0NAotLS0g YS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYworKysgYi9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJi dHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2luZXQuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0 eXBlZGVmIHN0cnVjdAogewpAQCAtMjUsOCArMjYsMTUgQEAgUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfbWFjYWQ4X3BpY2tzcGxpdCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9tYWNh ZDhfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9tYWNhZDhfcGVuYWx0 eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9tYWNhZDhfc2FtZSk7CitQR19GVU5DVElP Tl9JTkZPX1YxKGdidF9tYWNhZDhfc29ydHN1cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK21h Y2FkZHI4X2Zhc3RfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7 CisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihtYWNhZGRyOF9j bXAsIHgsIHkpKTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9tYWNhZDhndChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewpAQCAtMTk0LDMgKzIw MiwxNCBAQCBnYnRfbWFjYWQ4X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0g Z2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8t PmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2di dF9tYWNhZDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9y dCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAt PmNvbXBhcmF0b3IgPSBtYWNhZGRyOF9mYXN0X2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0g TlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdGltZS5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUu YwppbmRleCBmZDg3NzRhMmYwLi5mYjM0NTQ5ODdiIDEwMDY0NAotLS0gYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdGltZS5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90 aW1lLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCisj aW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3Rh bXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI4LDYgKzI5LDcgQEAgUEdfRlVOQ1RJT05f SU5GT19WMShnYnRfdGltZV9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90 aW1ldHpfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1lX3BlbmFs dHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zYW1lKTsKK1BHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X3RpbWVfc29ydHN1cHBvcnQpOwogCiAKICNpZmRlZiBVU0VfRkxPQVQ4 X0JZVkFMCkBAIC0zNyw2ICszOSwxMiBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1l X3NhbWUpOwogI2VuZGlmCiAKIAorc3RhdGljIGludAordGltZV9mYXN0X2NtcChEYXR1bSB4 LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCXJldHVybiBEYXR1bUdldEludDMy KERpcmVjdEZ1bmN0aW9uQ2FsbDIodGltZV9jbXAsIHgsIHkpKTsKK30KKwogc3RhdGljIGJv b2wKIGdidF90aW1lZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8g KmZsaW5mbykKIHsKQEAgLTMzMiwzICszNDAsMTQgQEAgZ2J0X3RpbWVfc2FtZShQR19GVU5D VElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lk ICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihy ZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X3RpbWVfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdf UE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSB0aW1lX2Zhc3RfY21wOworCXNz dXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYwppbmRleCA3NzdmZGYwZTJlLi5m NzdmYzIxM2Y4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBl c19naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5j CkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2lu Y2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3Jhbmdl dHlwZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiAvKgogICogUmFu Z2UgY2xhc3MgcHJvcGVydGllcyB1c2VkIHRvIHNlZ3JlZ2F0ZSBkaWZmZXJlbnQgY2xhc3Nl cyBvZiByYW5nZXMgaW4KQEAgLTE3Nyw2ICsxNzgsNyBAQCBzdGF0aWMgdm9pZCByYW5nZV9n aXN0X2RvdWJsZV9zb3J0aW5nX3NwbGl0KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKIHN0 YXRpYyB2b2lkIHJhbmdlX2dpc3RfY29uc2lkZXJfc3BsaXQoQ29uc2lkZXJTcGxpdENvbnRl eHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQgKnJpZ2h0X2xvd2VyLCBpbnQg bWluX2xlZnRfY291bnQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQgKmxlZnRfdXBwZXIsIGlu dCBtYXhfbGVmdF9jb3VudCk7CitzdGF0aWMgaW50CXJhbmdlX2dpc3RfY21wKERhdHVtIGEs IERhdHVtIGIsIFNvcnRTdXBwb3J0IHNzdXApOwogc3RhdGljIGludAlnZXRfZ2lzdF9yYW5n ZV9jbGFzcyhSYW5nZVR5cGUgKnJhbmdlKTsKIHN0YXRpYyBpbnQJc2luZ2xlX2JvdW5kX2Nt cChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpOwogc3RhdGljIGlu dAlpbnRlcnZhbF9jbXBfbG93ZXIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9p ZCAqYXJnKTsKQEAgLTc3Myw2ICs3NzUsMjAgQEAgcmFuZ2VfZ2lzdF9waWNrc3BsaXQoUEdf RlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fUE9JTlRFUih2KTsKIH0KIAorLyoKKyAqIFNv cnQgc3VwcG9ydCByb3V0aW5lIGZvciBmYXN0IEdpU1QgaW5kZXggYnVpbGQgYnkgc29ydGlu Zy4KKyAqLworRGF0dW0KK3JhbmdlX2dpc3Rfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlTb3J0U3VwcG9ydAlzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9J TlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSByYW5nZV9naXN0X2NtcDsKKwlzc3Vw LT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKIC8qIGVx dWFsaXR5IGNvbXBhcmF0b3IgZm9yIEdpU1QgKi8KIERhdHVtCiByYW5nZV9naXN0X3NhbWUo UEdfRlVOQ1RJT05fQVJHUykKQEAgLTE2OTMsNiArMTcwOSw2MCBAQCByYW5nZV9naXN0X2Nv bnNpZGVyX3NwbGl0KENvbnNpZGVyU3BsaXRDb250ZXh0ICpjb250ZXh0LAogCX0KIH0KIAor LyoKKyAqIEdpU1Qgc29ydHN1cHBvcnQgY29tcGFyYXRvciBmb3IgcmFuZ2VzLgorICoKKyAq IE9wZXJhdGVzIHNvbGVseSBvbiB0aGUgbG93ZXIgYm91bmRzIG9mIHRoZSByYW5nZXMsIGNv bXBhcmluZyB0aGVtIHVzaW5nCisgKiByYW5nZV9jbXBfYm91bmRzKCkuCisgKiBFbXB0eSBy YW5nZXMgYXJlIHNvcnRlZCBiZWZvcmUgbm9uLWVtcHR5IG9uZXMuCisgKi8KK3N0YXRpYyBp bnQKK3JhbmdlX2dpc3RfY21wKERhdHVtIGEsIERhdHVtIGIsIFNvcnRTdXBwb3J0IHNzdXAp Cit7CisJUmFuZ2VUeXBlICpyYW5nZV9hID0gRGF0dW1HZXRSYW5nZVR5cGVQKGEpOworCVJh bmdlVHlwZSAqcmFuZ2VfYiA9IERhdHVtR2V0UmFuZ2VUeXBlUChiKTsKKwlUeXBlQ2FjaGVF bnRyeSAqdHlwY2FjaGUgPSBzc3VwLT5zc3VwX2V4dHJhOworCVJhbmdlQm91bmQJbG93ZXIx LAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1cHBlcjI7CisJYm9v bAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKwlpbnQJCQlyZXN1bHQ7CisKKwlpZiAodHlwY2Fj aGUgPT0gTlVMTCkgeworCQlBc3NlcnQoUmFuZ2VUeXBlR2V0T2lkKHJhbmdlX2EpID09IFJh bmdlVHlwZUdldE9pZChyYW5nZV9iKSk7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2Fj aGUoUmFuZ2VUeXBlR2V0T2lkKHJhbmdlX2EpLCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisK KwkJLyoKKwkJICogQ2FjaGUgdGhlIHJhbmdlIGluZm8gYmV0d2VlbiBjYWxscyB0byBhdm9p ZCBoYXZpbmcgdG8gY2FsbAorCQkgKiBsb29rdXBfdHlwZV9jYWNoZSgpIGZvciBlYWNoIGNv bXBhcmlzb24uCisJCSAqLworCQlzc3VwLT5zc3VwX2V4dHJhID0gdHlwY2FjaGU7CisJfQor CisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUsIHJhbmdlX2EsICZsb3dlcjEsICZ1cHBl cjEsICZlbXB0eTEpOworCXJhbmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hlLCByYW5nZV9iLCAm bG93ZXIyLCAmdXBwZXIyLCAmZW1wdHkyKTsKKworCS8qIEZvciBiLXRyZWUgdXNlLCBlbXB0 eSByYW5nZXMgc29ydCBiZWZvcmUgYWxsIGVsc2UgKi8KKwlpZiAoZW1wdHkxICYmIGVtcHR5 MikKKwkJcmVzdWx0ID0gMDsKKwllbHNlIGlmIChlbXB0eTEpCisJCXJlc3VsdCA9IC0xOwor CWVsc2UgaWYgKGVtcHR5MikKKwkJcmVzdWx0ID0gMTsKKwllbHNlCisJCXJlc3VsdCA9IHJh bmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIpOworCisJaWYgKChE YXR1bSkgcmFuZ2VfYSAhPSBhKQorCQlwZnJlZShyYW5nZV9hKTsKKworCWlmICgoRGF0dW0p IHJhbmdlX2IgIT0gYikKKwkJcGZyZWUocmFuZ2VfYik7CisKKwlyZXR1cm4gcmVzdWx0Owor fQorCiAvKgogICogRmluZCBjbGFzcyBudW1iZXIgZm9yIHJhbmdlLgogICoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCA0Y2MxMjliZWJkLi45MzE4YWQ1ZmQ4IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC02MDAsNiArNjAwLDkgQEAKIHsgYW1w cm9jZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnly YW5nZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4g JzcnLAogICBhbXByb2MgPT4gJ3JhbmdlX2dpc3Rfc2FtZScgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzExJywKKyAg YW1wcm9jID0+ICdyYW5nZV9naXN0X3NvcnRzdXBwb3J0JyB9LAogeyBhbXByb2NmYW1pbHkg PT4gJ2dpc3QvbmV0d29ya19vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJvYyA9 PiAnaW5ldF9naXN0X2NvbnNpc3RlbnQnIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBiZTQ3NTgzMTIyLi5lMGMxMTY5ODcxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTEwMzg0LDYgKzEwMzg0LDkgQEAKIHsgb2lkID0+ICczODgxJywgZGVzY3IgPT4g J0dpU1Qgc3VwcG9ydCcsCiAgIHByb25hbWUgPT4gJ3JhbmdlX2dpc3Rfc2FtZScsIHByb3Jl dHR5cGUgPT4gJ2ludGVybmFsJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueXJhbmdlIGFueXJh bmdlIGludGVybmFsJywgcHJvc3JjID0+ICdyYW5nZV9naXN0X3NhbWUnIH0sCit7IG9pZCA9 PiAnODg0OScsIGRlc2NyID0+ICdHaVNUIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdyYW5n ZV9naXN0X3NvcnRzdXBwb3J0JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCisgIHByb2FyZ3R5 cGVzID0+ICdpbnRlcm5hbCcsIHByb3NyYyA9PiAncmFuZ2VfZ2lzdF9zb3J0c3VwcG9ydCcg fSwKIHsgb2lkID0+ICc2MTU0JywgZGVzY3IgPT4gJ0dpU1Qgc3VwcG9ydCcsCiAgIHByb25h bWUgPT4gJ211bHRpcmFuZ2VfZ2lzdF9jb25zaXN0ZW50JywgcHJvcmV0dHlwZSA9PiAnYm9v bCcsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBhbnltdWx0aXJhbmdlIGludDIgb2lk IGludGVybmFsJywKLS0gCjIuMzcuMgoK --------------RlPGHc71XsPjpeiKwWpEIe8B--