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 1mJZDe-00036q-7h for pgsql-bugs@arkaria.postgresql.org; Fri, 27 Aug 2021 10:36:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mJZDd-0001vY-6b for pgsql-bugs@arkaria.postgresql.org; Fri, 27 Aug 2021 10:36:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mJZDc-0001vQ-ND for pgsql-bugs@lists.postgresql.org; Fri, 27 Aug 2021 10:36:16 +0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mJZDX-0007nr-TE for pgsql-bugs@lists.postgresql.org; Fri, 27 Aug 2021 10:36:15 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 0E74A320093D; Fri, 27 Aug 2021 06:36:09 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Fri, 27 Aug 2021 06:36:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=J5TrDu Qa5E/Y9c/3P4kVeoTE8eogoeadjszbYnIBZbs=; b=m5vIlHbxQFryYzT7h0HPCy fUyQbhpud5qIOCu3EYkx2JGWV8DW/G4qkOpo54iECi77g6JDvGos/3jbozXTzo9F S/DFPPF51/pSzsOXUhSEi82XKieKl69f80GZrfMwJUpu9Zo/qgP0bzUkMwwS4Iof FvQPnjbfKVHnEsWvsCaXC4oQicDdeIKl2XVwKMVS7P3j1taWhSHx7OBhZXsM6JWY CV4uUxottIxYzzR6GoUkzVf1p6twDqa3BWDIoXodpp0xA6fC4dHqe9wa9a1tHDvw WZrFl43MIPi29Bs1T6IUgjT/iwuCmCuEP0FQWIqZNgzeXcj/pqxgC5cPQzES0Yjw == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddruddufedgfeduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefuvfhfhffkffgfgggjtgesmhdtre ertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdr vghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrth htvghrnhepffdvhfeivdehuddtiefhtdekveffhfekjeduheeiueevgeekgffgieetfefh tddunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepph gvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 27 Aug 2021 06:36:06 -0400 (EDT) Subject: Re: BUG #17158: Distinct ROW fails with Postgres 14 To: Tom Lane Cc: David Rowley , sait.nisanci@microsoft.com, PostgreSQL mailing lists References: <17158-8a2ba823982537a4@postgresql.org> <496046.1629843371@sss.pgh.pa.us> From: Peter Eisentraut Message-ID: Date: Fri, 27 Aug 2021 12:36:04 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <496046.1629843371@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="------------2B0448EDF4DF860F4490C222" Content-Language: en-US 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. --------------2B0448EDF4DF860F4490C222 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 25.08.21 00:16, Tom Lane wrote: > Undoing that would lose v14's ability to select hashed duplicate > elimination for RECORD columns, but that's still not a regression > because we didn't have it before. Moreover, anyone who's unhappy can > work around the problem by explicitly casting the column to some > suitable named composite type. We can leave it for later to make the > planner smarter about anonymous record types. It clearly could be > smarter, at least for the case of an explicit ROW construct at top > level; but now is no time to be writing such code for v14. This feature is a requirement for multicolumn path and cycle tracking in recursive queries, as well as the search/cycle syntax built on top of that, so there is a bit more depending on it than might be at first apparent. I've been looking at ways to repair this with minimal impact. Essentially, we'd need a way ask the type cache to distinguish between "do you have hash support if it's guaranteed to work" versus "hash support is my only hope, so give it to me even if you're not completely sure it will work". Putting this directly into the type cache does not seem feasible with the current structure. But there aren't that many callers of TYPECACHE_HASH_PROC*, so I looked at handling it there. Variant 1 is that we let the type cache *not* report hash support for the record type, and let callers fill it in. In the attached patch I've only done this for hash_array(), because that's what's needed to get the tests to pass, but similar code would be possible for row types, range types, etc. Variant 2 is that we let the type cache report hash support for the record type, like now, and then let callers override it if they have other options. This is the second attached patch. It's basically fifty-fifty in terms of how many places you need to touch in either case. With both patches, you'll see the "union" regression test fail, which includes a test case that is equivalent to the one from this bug report (but using money instead of bit), but the "with" test still passes, which covers the feature I mentioned at the beginning. Thoughts? --------------2B0448EDF4DF860F4490C222 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Fix-record-hash-support-variant-1.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Fix-record-hash-support-variant-1.patch" RnJvbSA2ZmQ1YzVlMjY1MDk5Y2EwMTY3Y2RiNmRiNDAxYmZiYjA4ZDM4YzJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyNyBBdWcgMjAyMSAxMDo0NzowMCArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIEZpeCByZWNvcmQgaGFzaCBzdXBwb3J0LCB2YXJpYW50IDEKCi0tLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICB8IDIzICsrKysrKysrKysr KysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNsZS5j IHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAg IHwgMjIgKysrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHlwY2FjaGUuYyAgICAgICB8IDExICsrKysrKystLS0tCiBzcmMvaW5jbHVkZS9wYXJzZXIv YW5hbHl6ZS5oICAgICAgICAgICAgIHwgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDkgaW5z ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXgg MTU2NjljODIzOC4uNmFmNmYwOWY5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0xODUy LDkgKzE4NTIsMTIgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdChQYXJzZVN0YXRlICpw c3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAKIC8qCiAgKiBNYWtlIGEgU29ydEdyb3VwQ2xh dXNlIG5vZGUgZm9yIGEgU2V0T3BlcmF0aW9uU3RtdCdzIGdyb3VwQ2xhdXNlcworICoKKyAq IElmIG5lZWRfaGFzaCBpcyB0cnVlLCB0aGUgY2FsbGVyIGlzIGluZGljYXRpbmcgdGhhdCB0 aGV5IG5lZWQgaGFzaCBzdXBwb3J0CisgKiBvciB0aGV5IHdpbGwgZmFpbC4gIFNvIGxvb2sg ZXh0cmEgaGFyZCBmb3IgaGFzaCBzdXBwb3J0LgogICovCiBTb3J0R3JvdXBDbGF1c2UgKgot bWFrZVNvcnRHcm91cENsYXVzZUZvclNldE9wKE9pZCByZXNjb2x0eXBlKQorbWFrZVNvcnRH cm91cENsYXVzZUZvclNldE9wKE9pZCByZXNjb2x0eXBlLCBib29sIG5lZWRfaGFzaCkKIHsK IAlTb3J0R3JvdXBDbGF1c2UgKmdycGNsID0gbWFrZU5vZGUoU29ydEdyb3VwQ2xhdXNlKTsK IAlPaWQJCQlzb3J0b3A7CkBAIC0xODY3LDYgKzE4NzAsMTUgQEAgbWFrZVNvcnRHcm91cENs YXVzZUZvclNldE9wKE9pZCByZXNjb2x0eXBlKQogCQkJCQkJCSAmc29ydG9wLCAmZXFvcCwg TlVMTCwKIAkJCQkJCQkgJmhhc2hhYmxlKTsKIAorCS8qCisJICogVGhlIHR5cGUgY2FjaGUg ZG9lc24ndCBiZWxpZXZlIHRoYXQgcmVjb3JkIGlzIGhhc2hhYmxlIChzZWUKKwkgKiBjYWNo ZV9yZWNvcmRfZmllbGRfcHJvcGVydGllcygpKSwgYnV0IGlmIHRoZSBjYWxsZXIgcmVhbGx5 IG5lZWRzIGhhc2gKKwkgKiBzdXBwb3J0LCB3ZSBjYW4gYXNzdW1lIGl0IGRvZXMuICBXb3Jz dCBjYXNlLCBpZiBhbnkgY29tcG9uZW50cyBvZiB0aGUKKwkgKiByZWNvcmQgZG9uJ3Qgc3Vw cG9ydCBoYXNoaW5nLCB3ZSB3aWxsIGZhaWwgYXQgZXhlY3V0aW9uLgorCSAqLworCWlmIChu ZWVkX2hhc2ggJiYgKHJlc2NvbHR5cGUgPT0gUkVDT1JET0lEIHx8IHJlc2NvbHR5cGUgPT0g UkVDT1JEQVJSQVlPSUQpKQorCQloYXNoYWJsZSA9IHRydWU7CisKIAkvKiB3ZSBkb24ndCBo YXZlIGEgdGxpc3QgeWV0LCBzbyBjYW4ndCBhc3NpZ24gc29ydGdyb3VwcmVmcyAqLwogCWdy cGNsLT50bGVTb3J0R3JvdXBSZWYgPSAwOwogCWdycGNsLT5lcW9wID0gZXFvcDsKQEAgLTIw MjcsNiArMjAzOSw4IEBAIHRyYW5zZm9ybVNldE9wZXJhdGlvblRyZWUoUGFyc2VTdGF0ZSAq cHN0YXRlLCBTZWxlY3RTdG10ICpzdG10LAogCQlMaXN0Q2VsbCAgICpsdGw7CiAJCUxpc3RD ZWxsICAgKnJ0bDsKIAkJY29uc3QgY2hhciAqY29udGV4dDsKKwkJYm9vbCByZWN1cnNpdmUg PSAocHN0YXRlLT5wX3BhcmVudF9jdGUgJiYKKwkJCQkJCSAgcHN0YXRlLT5wX3BhcmVudF9j dGUtPmN0ZXJlY3Vyc2l2ZSk7CiAKIAkJY29udGV4dCA9IChzdG10LT5vcCA9PSBTRVRPUF9V TklPTiA/ICJVTklPTiIgOgogCQkJCSAgIChzdG10LT5vcCA9PSBTRVRPUF9JTlRFUlNFQ1Qg PyAiSU5URVJTRUNUIiA6CkBAIC0yMDQ4LDkgKzIwNjIsNyBAQCB0cmFuc2Zvcm1TZXRPcGVy YXRpb25UcmVlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCwKIAkJICog Y29udGFpbmluZyBDVEUgYXMgaGF2aW5nIHRob3NlIHJlc3VsdCBjb2x1bW5zLiAgV2Ugc2hv dWxkIGRvIHRoaXMKIAkJICogb25seSBhdCB0aGUgdG9wbW9zdCBzZXRvcCBvZiB0aGUgQ1RF LCBvZiBjb3Vyc2UuCiAJCSAqLwotCQlpZiAoaXNUb3BMZXZlbCAmJgotCQkJcHN0YXRlLT5w X3BhcmVudF9jdGUgJiYKLQkJCXBzdGF0ZS0+cF9wYXJlbnRfY3RlLT5jdGVyZWN1cnNpdmUp CisJCWlmIChpc1RvcExldmVsICYmIHJlY3Vyc2l2ZSkKIAkJCWRldGVybWluZVJlY3Vyc2l2 ZUNvbFR5cGVzKHBzdGF0ZSwgb3AtPmxhcmcsIGx0YXJnZXRsaXN0KTsKIAogCQkvKgpAQCAt MjE4Miw4ICsyMTk0LDkgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uVHJlZShQYXJzZVN0YXRl ICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQsCiAJCQkJc2V0dXBfcGFyc2VyX2VycnBvc2l0 aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSwgcHN0YXRlLAogCQkJCQkJCQkJCQkJICBiZXN0bG9j YXRpb24pOwogCisJCQkJLyogSWYgaXQncyBhIHJlY3Vyc2l2ZSB1bmlvbiwgd2UgbmVlZCB0 byByZXF1aXJlIGhhc2hpbmcgc3VwcG9ydC4gKi8KIAkJCQlvcC0+Z3JvdXBDbGF1c2VzID0g bGFwcGVuZChvcC0+Z3JvdXBDbGF1c2VzLAotCQkJCQkJCQkJCSAgIG1ha2VTb3J0R3JvdXBD bGF1c2VGb3JTZXRPcChyZXNjb2x0eXBlKSk7CisJCQkJCQkJCQkJICAgbWFrZVNvcnRHcm91 cENsYXVzZUZvclNldE9wKHJlc2NvbHR5cGUsIHJlY3Vyc2l2ZSkpOwogCiAJCQkJY2FuY2Vs X3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUpOwogCQkJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuYyBiL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmMKaW5kZXggYzUwZWJkYmEyNC4u ZWYzOGY0MDI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlU2Vh cmNoQ3ljbGUuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNs ZS5jCkBAIC01OTQsNyArNTk0LDcgQEAgcmV3cml0ZVNlYXJjaEFuZEN5Y2xlKENvbW1vblRh YmxlRXhwciAqY3RlKQogCQlzb3MtPmNvbENvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChzb3Mt PmNvbENvbGxhdGlvbnMsIEludmFsaWRPaWQpOwogCQlpZiAoIXNvcy0+YWxsKQogCQkJc29z LT5ncm91cENsYXVzZXMgPSBsYXBwZW5kKHNvcy0+Z3JvdXBDbGF1c2VzLAotCQkJCQkJCQkJ CW1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChzZWFyY2hfc2VxX3R5cGUpKTsKKwkJCQkJ CQkJCQltYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3Aoc2VhcmNoX3NlcV90eXBlLCB0cnVl KSk7CiAJfQogCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKIAl7CkBAIC02MDMsMTQgKzYwMywx NCBAQCByZXdyaXRlU2VhcmNoQW5kQ3ljbGUoQ29tbW9uVGFibGVFeHByICpjdGUpCiAJCXNv cy0+Y29sQ29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sQ29sbGF0aW9ucywgY3Rl LT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uKTsKIAkJaWYgKCFzb3MtPmFs bCkKIAkJCXNvcy0+Z3JvdXBDbGF1c2VzID0gbGFwcGVuZChzb3MtPmdyb3VwQ2xhdXNlcywK LQkJCQkJCQkJCQltYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AoY3RlLT5jeWNsZV9jbGF1 c2UtPmN5Y2xlX21hcmtfdHlwZSkpOworCQkJCQkJCQkJCW1ha2VTb3J0R3JvdXBDbGF1c2VG b3JTZXRPcChjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlLCB0cnVlKSk7CiAK IAkJc29zLT5jb2xUeXBlcyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sVHlwZXMsIFJFQ09SREFS UkFZT0lEKTsKIAkJc29zLT5jb2xUeXBtb2RzID0gbGFwcGVuZF9pbnQoc29zLT5jb2xUeXBt b2RzLCAtMSk7CiAJCXNvcy0+Y29sQ29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29s Q29sbGF0aW9ucywgSW52YWxpZE9pZCk7CiAJCWlmICghc29zLT5hbGwpCiAJCQlzb3MtPmdy b3VwQ2xhdXNlcyA9IGxhcHBlbmQoc29zLT5ncm91cENsYXVzZXMsCi0JCQkJCQkJCQkJbWFr ZVNvcnRHcm91cENsYXVzZUZvclNldE9wKFJFQ09SREFSUkFZT0lEKSk7CisJCQkJCQkJCQkJ bWFrZVNvcnRHcm91cENsYXVzZUZvclNldE9wKFJFQ09SREFSUkFZT0lELCB0cnVlKSk7CiAJ fQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4IDA0ZDQ4N2M1 NDQuLmU3MjA5YjRkNmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpAQCAt MjksNiArMjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2FycmF5YWNjZXNzLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1 ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5o IgpAQCAtMzk2MCw2ICszOTYxLDggQEAgaGFzaF9hcnJheShQR19GVU5DVElPTl9BUkdTKQog CWNoYXIJCXR5cGFsaWduOwogCWludAkJCWk7CiAJYXJyYXlfaXRlcglpdGVyOworCUZtZ3JJ bmZvCXJlY29yZF9oYXNoX3Byb2NfZmluZm87CisJRm1nckluZm8gICAqbXlfaGFzaF9wcm9j X2ZpbmZvOwogCiAJLyoKIAkgKiBXZSBhcnJhbmdlIHRvIGxvb2sgdXAgdGhlIGhhc2ggZnVu Y3Rpb24gb25seSBvbmNlIHBlciBzZXJpZXMgb2YgY2FsbHMsCkBAIC0zOTczLDcgKzM5NzYs NyBAQCBoYXNoX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQl0eXBlbnRyeSA9IGxv b2t1cF90eXBlX2NhY2hlKGVsZW1lbnRfdHlwZSwKIAkJCQkJCQkJCSBUWVBFQ0FDSEVfSEFT SF9QUk9DX0ZJTkZPKTsKLQkJaWYgKCFPaWRJc1ZhbGlkKHR5cGVudHJ5LT5oYXNoX3Byb2Nf ZmluZm8uZm5fb2lkKSkKKwkJaWYgKCFPaWRJc1ZhbGlkKHR5cGVudHJ5LT5oYXNoX3Byb2Nf ZmluZm8uZm5fb2lkKSAmJiBlbGVtZW50X3R5cGUgIT0gUkVDT1JET0lEKQogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfRlVOQ1RJT04pLAog CQkJCQkgZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgYSBoYXNoIGZ1bmN0aW9uIGZvciB0 eXBlICVzIiwKQEAgLTM5ODQsMTAgKzM5ODcsMjUgQEAgaGFzaF9hcnJheShQR19GVU5DVElP Tl9BUkdTKQogCXR5cGJ5dmFsID0gdHlwZW50cnktPnR5cGJ5dmFsOwogCXR5cGFsaWduID0g dHlwZW50cnktPnR5cGFsaWduOwogCisJLyoKKwkgKiBUaGUgdHlwZSBjYWNoZSBkb2Vzbid0 IGJlbGlldmUgdGhhdCByZWNvcmQgaXMgaGFzaGFibGUgKHNlZQorCSAqIGNhY2hlX3JlY29y ZF9maWVsZF9wcm9wZXJ0aWVzKCkpLCBidXQgc2luY2Ugd2UncmUgaGVyZSwgd2UncmUgY29t bWl0dGVkCisJICogdG8gaGFzaGluZywgc28gd2UgY2FuIGFzc3VtZSBpdCBkb2VzLiAgV29y c3QgY2FzZSwgaWYgYW55IGNvbXBvbmVudHMgb2YKKwkgKiB0aGUgcmVjb3JkIGRvbid0IHN1 cHBvcnQgaGFzaGluZywgd2Ugd2lsbCBmYWlsIGF0IGV4ZWN1dGlvbi4KKwkgKi8KKwlpZiAo ZWxlbWVudF90eXBlID09IFJFQ09SRE9JRCkKKwl7CisJCWZtZ3JfaW5mb19jeHQoRl9IQVNI X1JFQ09SRCwgJnJlY29yZF9oYXNoX3Byb2NfZmluZm8sCisJCQkJCSAgQ2FjaGVNZW1vcnlD b250ZXh0KTsKKwkJbXlfaGFzaF9wcm9jX2ZpbmZvID0gJnJlY29yZF9oYXNoX3Byb2NfZmlu Zm87CisJfQorCWVsc2UKKwkJbXlfaGFzaF9wcm9jX2ZpbmZvID0gJnR5cGVudHJ5LT5oYXNo X3Byb2NfZmluZm87CisKIAkvKgogCSAqIGFwcGx5IHRoZSBoYXNoIGZ1bmN0aW9uIHRvIGVh Y2ggYXJyYXkgZWxlbWVudC4KIAkgKi8KLQlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmxv Y2ZjaW5mbywgJnR5cGVudHJ5LT5oYXNoX3Byb2NfZmluZm8sIDEsCisJSW5pdEZ1bmN0aW9u Q2FsbEluZm9EYXRhKCpsb2NmY2luZm8sIG15X2hhc2hfcHJvY19maW5mbywgMSwKIAkJCQkJ CQkgUEdfR0VUX0NPTExBVElPTigpLCBOVUxMLCBOVUxMKTsKIAogCS8qIExvb3Agb3ZlciBz b3VyY2UgZGF0YSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlw Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggMzI2 ZmFlNjJlMi4uNzBlNWM1MTI5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvdHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5j CkBAIC0xNTE1LDE0ICsxNTE1LDE3IEBAIGNhY2hlX3JlY29yZF9maWVsZF9wcm9wZXJ0aWVz KFR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeSkKIAkvKgogCSAqIEZvciB0eXBlIFJFQ09SRCwg d2UgY2FuJ3QgcmVhbGx5IHRlbGwgd2hhdCB3aWxsIHdvcmssIHNpbmNlIHdlIGRvbid0CiAJ ICogaGF2ZSBhY2Nlc3MgaGVyZSB0byB0aGUgc3BlY2lmaWMgYW5vbnltb3VzIHR5cGUuICBK dXN0IGFzc3VtZSB0aGF0Ci0JICogZXZlcnl0aGluZyB3aWxsICh3ZSBtYXkgZ2V0IGEgZmFp bHVyZSBhdCBydW50aW1lIC4uLikKKwkgKiBlcXVhbGl0eSBhbmQgY29tcGFyaXNvbiB3aWxs ICh3ZSBtYXkgZ2V0IGEgZmFpbHVyZSBhdCBydW50aW1lKS4gIFdlCisJICogY291bGQgYWxz byBjbGFpbSB0aGF0IGhhc2hpbmcgd29ya3MsIGJ1dCB0aGVuIGlmIGNvZGUgdGhhdCBoYXMg dGhlCisJICogb3B0aW9uIGJldHdlZW4gYSBjb21wYXJpc29uLWJhc2VkIChzb3J0LWJhc2Vk KSBhbmQgYSBoYXNoLWJhc2VkIHBsYW4KKwkgKiBjaG9vc2VzIGhhc2hpbmcsIHN0dWZmIGNv dWxkIGZhaWwgdGhhdCB3b3VsZCBvdGhlcndpc2Ugd29yayBpZiBpdCBjaG9zZQorCSAqIGEg Y29tcGFyaXNvbi1iYXNlZCBwbGFuLiAgSW4gcHJhY3RpY2UgbW9yZSB0eXBlcyBzdXBwb3J0 IGNvbXBhcmlzb24KKwkgKiB0aGFuIGhhc2hpbmcuCiAJICovCiAJaWYgKHR5cGVudHJ5LT50 eXBlX2lkID09IFJFQ09SRE9JRCkKIAl7CiAJCXR5cGVudHJ5LT5mbGFncyB8PSAoVENGTEFH U19IQVZFX0ZJRUxEX0VRVUFMSVRZIHwKLQkJCQkJCQlUQ0ZMQUdTX0hBVkVfRklFTERfQ09N UEFSRSB8Ci0JCQkJCQkJVENGTEFHU19IQVZFX0ZJRUxEX0hBU0hJTkcgfAotCQkJCQkJCVRD RkxBR1NfSEFWRV9GSUVMRF9FWFRFTkRFRF9IQVNISU5HKTsKKwkJCQkJCQlUQ0ZMQUdTX0hB VkVfRklFTERfQ09NUEFSRSk7CiAJfQogCWVsc2UgaWYgKHR5cGVudHJ5LT50eXB0eXBlID09 IFRZUFRZUEVfQ09NUE9TSVRFKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCmluZGV4IDY3MTZk YjZjMTMuLjg5ZDYxMjM4ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFs eXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApAQCAtNDgsNiArNDgs NiBAQCBleHRlcm4gdm9pZCBhcHBseUxvY2tpbmdDbGF1c2UoUXVlcnkgKnFyeSwgSW5kZXgg cnRpbmRleCwKIGV4dGVybiBMaXN0ICpCdWlsZE9uQ29uZmxpY3RFeGNsdWRlZFRhcmdldGxp c3QoUmVsYXRpb24gdGFyZ2V0cmVsLAogCQkJCQkJCQkJCQkgICBJbmRleCBleGNsUmVsSW5k ZXgpOwogCi1leHRlcm4gU29ydEdyb3VwQ2xhdXNlICptYWtlU29ydEdyb3VwQ2xhdXNlRm9y U2V0T3AoT2lkIHJlc2NvbHR5cGUpOworZXh0ZXJuIFNvcnRHcm91cENsYXVzZSAqbWFrZVNv cnRHcm91cENsYXVzZUZvclNldE9wKE9pZCByZXNjb2x0eXBlLCBib29sIG5lZWRfaGFzaCk7 CiAKICNlbmRpZgkJCQkJCQkvKiBBTkFMWVpFX0ggKi8KLS0gCjIuMzMuMAoK --------------2B0448EDF4DF860F4490C222 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Fix-record-hash-support-variant-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Fix-record-hash-support-variant-2.patch" RnJvbSA1MTJiYTBiZGM1M2FhMTQwMDI3YTE4NDQ5NDI2YmYxMzI3YmEzZWZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyNyBBdWcgMjAyMSAxMDo1MDo0OSArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIEZpeCByZWNvcmQgaGFzaCBzdXBwb3J0LCB2YXJpYW50IDIKCi0tLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnBhdGguYyAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrLS0tLS0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyAgICAgICAgfCAgNiArKysrKysK IHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmMgfCAgNiArKystLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgfCAgMiArLQogc3Jj L2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCAgICAgICAgICAgICB8ICAyICstCiA3IGZpbGVz IGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9qb2lucGF0aC5jCmluZGV4IDY0MDdlZGUxMmEuLjM4NWE0MTYw NmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnBhdGguYwpAQCAtNDM3LDcg KzQzNyw3IEBAIHBhcmFtaW5mb19nZXRfZXF1YWxfaGFzaG9wcyhQbGFubmVySW5mbyAqcm9v dCwgUGFyYW1QYXRoSW5mbyAqcGFyYW1faW5mbywKIAkJCQkJCQkJCSBUWVBFQ0FDSEVfSEFT SF9QUk9DIHwgVFlQRUNBQ0hFX0VRX09QUik7CiAKIAkJLyogY2FuJ3QgdXNlIGEgbWVtb2l6 ZSBub2RlIHdpdGhvdXQgYSB2YWxpZCBoYXNoIGVxdWFscyBvcGVyYXRvciAqLwotCQlpZiAo IU9pZElzVmFsaWQodHlwZW50cnktPmhhc2hfcHJvYykgfHwgIU9pZElzVmFsaWQodHlwZW50 cnktPmVxX29wcikpCisJCWlmICghT2lkSXNWYWxpZCh0eXBlbnRyeS0+aGFzaF9wcm9jKSB8 fCAhT2lkSXNWYWxpZCh0eXBlbnRyeS0+ZXFfb3ByKSB8fCB0eXBlbnRyeS0+dHlwZV9pZCA9 PSBSRUNPUkRPSUQpCiAJCXsKIAkJCWxpc3RfZnJlZSgqb3BlcmF0b3JzKTsKIAkJCWxpc3Rf ZnJlZSgqcGFyYW1fZXhwcnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vaW5pdHNwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3Bs YW4uYwppbmRleCBlMjVkYzlhN2NhLi41ZmM0MTFkY2NlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtMjczMyw3ICsyNzMzLDcgQEAgY2hlY2tfbWVt b2l6YWJsZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbykKIAl0eXBlbnRyeSA9IGxvb2t1 cF90eXBlX2NhY2hlKGV4cHJUeXBlKGxlZnRhcmcpLCBUWVBFQ0FDSEVfSEFTSF9QUk9DIHwK IAkJCQkJCQkJIFRZUEVDQUNIRV9FUV9PUFIpOwogCi0JaWYgKCFPaWRJc1ZhbGlkKHR5cGVu dHJ5LT5oYXNoX3Byb2MpIHx8ICFPaWRJc1ZhbGlkKHR5cGVudHJ5LT5lcV9vcHIpKQorCWlm ICghT2lkSXNWYWxpZCh0eXBlbnRyeS0+aGFzaF9wcm9jKSB8fCAhT2lkSXNWYWxpZCh0eXBl bnRyeS0+ZXFfb3ByKSB8fCB0eXBlbnRyeS0+dHlwZV9pZCA9PSBSRUNPUkRPSUQpCiAJCXJl dHVybjsKIAogCXJlc3RyaWN0aW5mby0+aGFzaGVxb3BlcmF0b3IgPSB0eXBlbnRyeS0+ZXFf b3ByOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMTU2NjljODIzOC4uMDc2MjNmMWRhYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0xODUyLDkgKzE4NTIsMTIgQEAgdHJhbnNmb3Jt U2V0T3BlcmF0aW9uU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQp CiAKIC8qCiAgKiBNYWtlIGEgU29ydEdyb3VwQ2xhdXNlIG5vZGUgZm9yIGEgU2V0T3BlcmF0 aW9uU3RtdCdzIGdyb3VwQ2xhdXNlcworICoKKyAqIElmIG5lZWRfaGFzaCBpcyB0cnVlLCB0 aGUgY2FsbGVyIGlzIGluZGljYXRpbmcgdGhhdCB0aGV5IG5lZWQgaGFzaCBzdXBwb3J0Cisg KiBvciB0aGV5IHdpbGwgZmFpbC4gIFNvIGxvb2sgZXh0cmEgaGFyZCBmb3IgaGFzaCBzdXBw b3J0LgogICovCiBTb3J0R3JvdXBDbGF1c2UgKgotbWFrZVNvcnRHcm91cENsYXVzZUZvclNl dE9wKE9pZCByZXNjb2x0eXBlKQorbWFrZVNvcnRHcm91cENsYXVzZUZvclNldE9wKE9pZCBy ZXNjb2x0eXBlLCBib29sIG5lZWRfaGFzaCkKIHsKIAlTb3J0R3JvdXBDbGF1c2UgKmdycGNs ID0gbWFrZU5vZGUoU29ydEdyb3VwQ2xhdXNlKTsKIAlPaWQJCQlzb3J0b3A7CkBAIC0xODY3 LDYgKzE4NzAsOSBAQCBtYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AoT2lkIHJlc2NvbHR5 cGUpCiAJCQkJCQkJICZzb3J0b3AsICZlcW9wLCBOVUxMLAogCQkJCQkJCSAmaGFzaGFibGUp OwogCisJaWYgKHJlc2NvbHR5cGUgPT0gUkVDT1JET0lEKQorCQloYXNoYWJsZSA9IG5lZWRf aGFzaDsKKwogCS8qIHdlIGRvbid0IGhhdmUgYSB0bGlzdCB5ZXQsIHNvIGNhbid0IGFzc2ln biBzb3J0Z3JvdXByZWZzICovCiAJZ3JwY2wtPnRsZVNvcnRHcm91cFJlZiA9IDA7CiAJZ3Jw Y2wtPmVxb3AgPSBlcW9wOwpAQCAtMjAyNyw2ICsyMDMzLDkgQEAgdHJhbnNmb3JtU2V0T3Bl cmF0aW9uVHJlZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQsCiAJCUxp c3RDZWxsICAgKmx0bDsKIAkJTGlzdENlbGwgICAqcnRsOwogCQljb25zdCBjaGFyICpjb250 ZXh0OworCQlib29sIHJlY3Vyc2l2ZSA9IChwc3RhdGUtPnBfcGFyZW50X2N0ZSAmJgorCQkJ CQkJICBwc3RhdGUtPnBfcGFyZW50X2N0ZS0+Y3RlcmVjdXJzaXZlKTsKKwogCiAJCWNvbnRl eHQgPSAoc3RtdC0+b3AgPT0gU0VUT1BfVU5JT04gPyAiVU5JT04iIDoKIAkJCQkgICAoc3Rt dC0+b3AgPT0gU0VUT1BfSU5URVJTRUNUID8gIklOVEVSU0VDVCIgOgpAQCAtMjA0OCw5ICsy MDU3LDcgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uVHJlZShQYXJzZVN0YXRlICpwc3RhdGUs IFNlbGVjdFN0bXQgKnN0bXQsCiAJCSAqIGNvbnRhaW5pbmcgQ1RFIGFzIGhhdmluZyB0aG9z ZSByZXN1bHQgY29sdW1ucy4gIFdlIHNob3VsZCBkbyB0aGlzCiAJCSAqIG9ubHkgYXQgdGhl IHRvcG1vc3Qgc2V0b3Agb2YgdGhlIENURSwgb2YgY291cnNlLgogCQkgKi8KLQkJaWYgKGlz VG9wTGV2ZWwgJiYKLQkJCXBzdGF0ZS0+cF9wYXJlbnRfY3RlICYmCi0JCQlwc3RhdGUtPnBf cGFyZW50X2N0ZS0+Y3RlcmVjdXJzaXZlKQorCQlpZiAoaXNUb3BMZXZlbCAmJiByZWN1cnNp dmUpCiAJCQlkZXRlcm1pbmVSZWN1cnNpdmVDb2xUeXBlcyhwc3RhdGUsIG9wLT5sYXJnLCBs dGFyZ2V0bGlzdCk7CiAKIAkJLyoKQEAgLTIxODIsOCArMjE4OSw5IEBAIHRyYW5zZm9ybVNl dE9wZXJhdGlvblRyZWUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10LAog CQkJCXNldHVwX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUsIHBzdGF0 ZSwKIAkJCQkJCQkJCQkJCSAgYmVzdGxvY2F0aW9uKTsKIAorCQkJCS8qIElmIGl0J3MgYSBy ZWN1cnNpdmUgdW5pb24sIHdlIG5lZWQgdG8gcmVxdWlyZSBoYXNoaW5nIHN1cHBvcnQuICov CiAJCQkJb3AtPmdyb3VwQ2xhdXNlcyA9IGxhcHBlbmQob3AtPmdyb3VwQ2xhdXNlcywKLQkJ CQkJCQkJCQkgICBtYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AocmVzY29sdHlwZSkpOwor CQkJCQkJCQkJCSAgIG1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChyZXNjb2x0eXBlLCBy ZWN1cnNpdmUpKTsKIAogCQkJCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2so JnBjYnN0YXRlKTsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCBi M2YxNTFkMzNiLi4zNTE4ZDM1OWFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5j CkBAIC0zMzE4LDYgKzMzMTgsOCBAQCBhZGRUYXJnZXRUb1NvcnRMaXN0KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVGFyZ2V0RW50cnkgKnRsZSwKIAkJCQkJCQkJCSB0cnVlLCB0cnVlLCBmYWxz ZSwKIAkJCQkJCQkJCSAmc29ydG9wLCAmZXFvcCwgTlVMTCwKIAkJCQkJCQkJCSAmaGFzaGFi bGUpOworCQkJaWYgKHJlc3R5cGUgPT0gUkVDT1JET0lEKQorCQkJCWhhc2hhYmxlID0gZmFs c2U7CiAJCQlyZXZlcnNlID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBTT1JUQllfREVT QzoKQEAgLTMzMjUsNiArMzMyNyw4IEBAIGFkZFRhcmdldFRvU29ydExpc3QoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJCQkJCQkJIGZhbHNlLCB0cnVlLCB0 cnVlLAogCQkJCQkJCQkJIE5VTEwsICZlcW9wLCAmc29ydG9wLAogCQkJCQkJCQkJICZoYXNo YWJsZSk7CisJCQlpZiAocmVzdHlwZSA9PSBSRUNPUkRPSUQpCisJCQkJaGFzaGFibGUgPSBm YWxzZTsKIAkJCXJldmVyc2UgPSB0cnVlOwogCQkJYnJlYWs7CiAJCWNhc2UgU09SVEJZX1VT SU5HOgpAQCAtMzQ0OSw2ICszNDUzLDggQEAgYWRkVGFyZ2V0VG9Hcm91cExpc3QoUGFyc2VT dGF0ZSAqcHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJCQkJCQkgZmFsc2UsIHRydWUs IGZhbHNlLAogCQkJCQkJCQkgJnNvcnRvcCwgJmVxb3AsIE5VTEwsCiAJCQkJCQkJCSAmaGFz aGFibGUpOworCQlpZiAocmVzdHlwZSA9PSBSRUNPUkRPSUQpCisJCQloYXNoYWJsZSA9IGZh bHNlOwogCiAJCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRl KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlU2VhcmNoQ3lj bGUuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmMKaW5kZXgg YzUwZWJkYmEyNC4uZWYzOGY0MDI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3Jp dGVTZWFyY2hDeWNsZS5jCkBAIC01OTQsNyArNTk0LDcgQEAgcmV3cml0ZVNlYXJjaEFuZEN5 Y2xlKENvbW1vblRhYmxlRXhwciAqY3RlKQogCQlzb3MtPmNvbENvbGxhdGlvbnMgPSBsYXBw ZW5kX29pZChzb3MtPmNvbENvbGxhdGlvbnMsIEludmFsaWRPaWQpOwogCQlpZiAoIXNvcy0+ YWxsKQogCQkJc29zLT5ncm91cENsYXVzZXMgPSBsYXBwZW5kKHNvcy0+Z3JvdXBDbGF1c2Vz LAotCQkJCQkJCQkJCW1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChzZWFyY2hfc2VxX3R5 cGUpKTsKKwkJCQkJCQkJCQltYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3Aoc2VhcmNoX3Nl cV90eXBlLCB0cnVlKSk7CiAJfQogCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKIAl7CkBAIC02 MDMsMTQgKzYwMywxNCBAQCByZXdyaXRlU2VhcmNoQW5kQ3ljbGUoQ29tbW9uVGFibGVFeHBy ICpjdGUpCiAJCXNvcy0+Y29sQ29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sQ29s bGF0aW9ucywgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uKTsKIAkJ aWYgKCFzb3MtPmFsbCkKIAkJCXNvcy0+Z3JvdXBDbGF1c2VzID0gbGFwcGVuZChzb3MtPmdy b3VwQ2xhdXNlcywKLQkJCQkJCQkJCQltYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AoY3Rl LT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSkpOworCQkJCQkJCQkJCW1ha2VTb3J0 R3JvdXBDbGF1c2VGb3JTZXRPcChjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBl LCB0cnVlKSk7CiAKIAkJc29zLT5jb2xUeXBlcyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sVHlw ZXMsIFJFQ09SREFSUkFZT0lEKTsKIAkJc29zLT5jb2xUeXBtb2RzID0gbGFwcGVuZF9pbnQo c29zLT5jb2xUeXBtb2RzLCAtMSk7CiAJCXNvcy0+Y29sQ29sbGF0aW9ucyA9IGxhcHBlbmRf b2lkKHNvcy0+Y29sQ29sbGF0aW9ucywgSW52YWxpZE9pZCk7CiAJCWlmICghc29zLT5hbGwp CiAJCQlzb3MtPmdyb3VwQ2xhdXNlcyA9IGxhcHBlbmQoc29zLT5ncm91cENsYXVzZXMsCi0J CQkJCQkJCQkJbWFrZVNvcnRHcm91cENsYXVzZUZvclNldE9wKFJFQ09SREFSUkFZT0lEKSk7 CisJCQkJCQkJCQkJbWFrZVNvcnRHcm91cENsYXVzZUZvclNldE9wKFJFQ09SREFSUkFZT0lE LCB0cnVlKSk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggNGViYWE1NTJhMi4uZjY2YjA5ZDk0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKQEAgLTE0MjEsNyArMTQyMSw3IEBAIG9wX2hhc2hqb2luYWJsZShPaWQg b3BubywgT2lkIGlucHV0dHlwZSkKIAllbHNlIGlmIChvcG5vID09IFJFQ09SRF9FUV9PUCkK IAl7CiAJCXR5cGVudHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUoaW5wdXR0eXBlLCBUWVBFQ0FD SEVfSEFTSF9QUk9DKTsKLQkJaWYgKHR5cGVudHJ5LT5oYXNoX3Byb2MgPT0gRl9IQVNIX1JF Q09SRCkKKwkJaWYgKHR5cGVudHJ5LT5oYXNoX3Byb2MgPT0gRl9IQVNIX1JFQ09SRCAmJiBp bnB1dHR5cGUgIT0gUkVDT1JET0lEKQogCQkJcmVzdWx0ID0gdHJ1ZTsKIAl9CiAJZWxzZQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmgKaW5kZXggNjcxNmRiNmMxMy4uODlkNjEyMzhlOSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVkZS9w YXJzZXIvYW5hbHl6ZS5oCkBAIC00OCw2ICs0OCw2IEBAIGV4dGVybiB2b2lkIGFwcGx5TG9j a2luZ0NsYXVzZShRdWVyeSAqcXJ5LCBJbmRleCBydGluZGV4LAogZXh0ZXJuIExpc3QgKkJ1 aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdChSZWxhdGlvbiB0YXJnZXRyZWwsCiAJ CQkJCQkJCQkJCSAgIEluZGV4IGV4Y2xSZWxJbmRleCk7CiAKLWV4dGVybiBTb3J0R3JvdXBD bGF1c2UgKm1ha2VTb3J0R3JvdXBDbGF1c2VGb3JTZXRPcChPaWQgcmVzY29sdHlwZSk7Citl eHRlcm4gU29ydEdyb3VwQ2xhdXNlICptYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AoT2lk IHJlc2NvbHR5cGUsIGJvb2wgbmVlZF9oYXNoKTsKIAogI2VuZGlmCQkJCQkJCS8qIEFOQUxZ WkVfSCAqLwotLSAKMi4zMy4wCgo= --------------2B0448EDF4DF860F4490C222--