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 1t6m2a-00FQpK-Ia for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Nov 2024 07:25:52 +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 1t6m2Y-00AgZX-F3 for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Nov 2024 07:25:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t6m2Y-00AgZ7-1r for pgsql-hackers@lists.postgresql.org; Fri, 01 Nov 2024 07:25:50 +0000 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t6m2V-0048sy-G4 for pgsql-hackers@lists.postgresql.org; Fri, 01 Nov 2024 07:25:49 +0000 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-7cd8803fe0aso1314016a12.0 for ; Fri, 01 Nov 2024 00:25:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730445945; x=1731050745; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Og0ixtWLvBtcMcGY5cdMuqTGb35FvUIuGuJbIHPCjZE=; b=frJmHjJVN+KxlYkpR6G6T0l5PHtjLnC5bkbwKvxK92Atb/sjRJH3VDcS5NvvKaMqFP 9MPLlKT7/CzpcKoJWfAmjhyPtHubBuHon5hmHzHAjBSuLFWNo6tWceMP9KthvXriOOhC jXJDfYS8iNR6P3XbeTQq9Lsd/6l0XbK4u9/o3fIW2nEiMoTRSf5NiHcApjxxr/0FOf0a K1EG9XTCxaVRpZmPYC7u/bcbz3MAOYuqlTecSzzB3WUSc+3hZYC1vDMYAQQz5+i+VC9T o4svRtJ8spZEWRBv7sPaEnwNLqkT6WkUXrryMPqAx5sFmalXUDU9UxlYikVFJsXitU1z x+fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730445945; x=1731050745; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Og0ixtWLvBtcMcGY5cdMuqTGb35FvUIuGuJbIHPCjZE=; b=w0tRlKNteRoi5MqesHq4ESDRHJO1HCbI4DrrFACtqgFaCPQ6A/MR8fgz+Lq6LZuADL gO8UkUlZJe7Q3ytPbBciIkhlBmweDOmY3kikKCCQyR0YBf8v7pEETGLlpP7TQYv8wLVH bPEp4ND1JH4Qfk3xH3cuK0+m+tp/SGq5r8bTpsPnkvkkob/JnpdP7kqS0gUZb2ZowlTA oc7j9xr2HplB1sCVqWX2W8iRcU3O8TWHeHTXMtsSwLm/JqUXTUg0kjUH2GGv839vGd+C h13JZ9e2MHe1u+pvx6OLhIS1gWW6ZxYsRMcNo2+ixa5I8QzzUt01bgz9W7PMoEjGE+oD g6nA== X-Forwarded-Encrypted: i=1; AJvYcCVo+elOglCrhJMaMAAKHmAQnljr2QaJMW9FiuqvFe2wUxqgsPdMvLVh33dfwasJ9RELZoVp8q5HJ+QkS0+n@lists.postgresql.org X-Gm-Message-State: AOJu0Yz+oYJ4ajndKoyR5T3a2oI/gvm30aZ6KFQUIxgAHfTUExvESOQj T/Md1m3NMzJ7uqb1R7UrbvVmS2UmKy9uIjkmIW705G8F/njOoo1p5O2ooV2pcMEx7fvbKFZ+k1G oV6hbRvsf4XxzBFsaXYV5evUvgew= X-Google-Smtp-Source: AGHT+IHo0yKHi9djpkRmzQDrBHwwFJdjaZWXgeQkSli+KCa6hZ/tO8c9wYamCLsuaWcymQlRpRyfODUN2FKM2sntHLs= X-Received: by 2002:a17:90b:3746:b0:2da:8c28:6561 with SMTP id 98e67ed59e1d1-2e92ce7479dmr10169587a91.22.1730445944984; Fri, 01 Nov 2024 00:25:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Fri, 1 Nov 2024 16:25:28 +0900 Message-ID: Subject: Re: Wrong result when enable_partitionwise_join is on if collation of PartitionKey and Column is different. To: jian he Cc: Junwang Zhao , Tender Wang , PostgreSQL Hackers , Ashutosh Bapat Content-Type: multipart/mixed; boundary="000000000000daad630625d4d713" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000daad630625d4d713 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Fri, Nov 1, 2024 at 2:39=E2=80=AFPM jian he wrote: > On Thu, Oct 31, 2024 at 9:09=E2=80=AFPM Amit Langote wrote: > > > > > > I think we should insist that the join key collation and the partition > > collation are exactly the same and refuse to match them if they are > > not. > > > > + { > > + Oid colloid =3D exprCollation((Node *) expr); > > + > > + if ((partcoll !=3D colloid) && > > + OidIsValid(colloid) && > > + !get_collation_isdeterministic(colloid)) > > + *coll_incompatiable =3D true; > > > > I am not quite sure what is the point of checking whether or not the > > expression collation is deterministic after confirming that it's not > > the same as partcoll. > > > > Attached 0002 is what I came up with. One thing that's different from > > what Jian proposed is that match_expr_to_partition_keys() returns -1 > > (expr not matched to any key) when the collation is also not matched > > instead of using a separate output parameter for that. > > > i was thinking that > CREATE TABLE part_tab (c text collate "POSIX") PARTITION BY LIST(c collat= e "C"); > maybe can do partitionwise join. > join key collation and the partition key collation same sure would > make things easy. I think that's maybe ok to do as a new feature (use partitionwise join even if collations differ but are both deterministic?), but we should take a more restrictive approach in a bug fix that is to be back-patched. > about 0002. > Similar to PartCollMatchesExprColl in match_clause_to_partition_key > I think we can simply do the following: > no need to hack match_expr_to_partition_keys. > > @@ -2181,6 +2181,9 @@ have_partkey_equi_join(PlannerInfo *root, > RelOptInfo *joinrel, > if (ipk1 !=3D ipk2) > continue; > > + if (rel1->part_scheme->partcollation[ipk1] !=3D > opexpr->inputcollid) > + return false; Yes, looks like that should be enough, thanks. I've updated the patch. I've added another test case to test the new collation matching code in the code block of have_partkey_equi_join() that pairs partition keys via equivalence class. Adding Ashutosh to cc, as the original author of this code, to get his thoughts on these fixes. --=20 Thanks, Amit Langote --000000000000daad630625d4d713 Content-Type: application/octet-stream; name="v4-0002-Disallow-partitionwise-join-when-collation-doesn-.patch" Content-Disposition: attachment; filename="v4-0002-Disallow-partitionwise-join-when-collation-doesn-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2yetiz80 RnJvbSBiOWNkNzVlMzYwZTQ3YWVlZDAwOGQ4MDYwNDczYzYxN2IwZjZkZWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBOb3YgMjAyNCAxNTozMjozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQg Mi8yXSBEaXNhbGxvdyBwYXJ0aXRpb253aXNlIGpvaW4gd2hlbiBjb2xsYXRpb24gZG9lc24ndAog bWF0Y2gKCkluc2lzdCB0aGF0IHRoZSBjb2xsYXRpb24gdXNlZCBmb3Igam9pbmluZyBtYXRjaGVz IGV4YWN0bHkgd2l0aCB0aGUKY29sbGF0aW9uIHVzZWQgZm9yIHBhcnRpdGlvbmluZyB0byBhbGxv dyB1c2luZyBwYXJ0aXRpb253aXNlIGpvaW4uCgpSZXBvcnRlZC1ieTogVGVuZGVyIFdhbmcgPHRu ZHJ3YW5nQGdtYWlsLmNvbT4KQXV0aG9yOiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFRlbmRlciBXYW5nIDx0bmRyd2FuZ0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBK dW53YW5nIFpoYW8gPHpoandwa3VAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tLzE4NTY4LTJhOWFmYjZiOWY3ZTZlZDNAcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS90ZW5jZW50XzlEOTEwM0NEQTQyMEMwNzc2ODM0OUNDMURGRjg4 NDY1RjkwQUBxcS5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhld1hObm9f SEtpUTZQcXlMWWZ1cUR0d3A3S0tIWmlIMUo3UHF5ejBucitQUzJEd2dAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAgfCAgMjgg KysrLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwgMTU0 ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRm OC5zcWwgICAgIHwgIDM1ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IGQ3 MjY2ZTRjZGIuLjQ4OWZlNmMyNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMK QEAgLTIxODUsNiArMjE4NSwxMCBAQCBoYXZlX3BhcnRrZXlfZXF1aV9qb2luKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQlpZiAocGtfa25vd25fZXF1YWxbaXBrMV0p CiAJCQljb250aW51ZTsKIAorCQkvKiBSZWplY3QgaWYgdGhlIHBhcnRpdGlvbiBrZXkgY29sbGF0 aW9uIGRpZmZlcnMgZnJvbSB0aGUgY2xhdXNlJ3MuICovCisJCWlmIChyZWwxLT5wYXJ0X3NjaGVt ZS0+cGFydGNvbGxhdGlvbltpcGsxXSAhPSBvcGV4cHItPmlucHV0Y29sbGlkKQorCQkJcmV0dXJu IGZhbHNlOworCiAJCS8qCiAJCSAqIFRoZSBjbGF1c2UgYWxsb3dzIHBhcnRpdGlvbndpc2Ugam9p biBvbmx5IGlmIGl0IHVzZXMgdGhlIHNhbWUKIAkJICogb3BlcmF0b3IgZmFtaWx5IGFzIHRoYXQg c3BlY2lmaWVkIGJ5IHRoZSBwYXJ0aXRpb24ga2V5LgpAQCAtMjI1OCw2ICsyMjYyLDggQEAgaGF2 ZV9wYXJ0a2V5X2VxdWlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJl bCwKIAkJewogCQkJTm9kZQkgICAqZXhwcjEgPSAoTm9kZSAqKSBsZmlyc3QobGMpOwogCQkJTGlz dENlbGwgICAqbGMyOworCQkJT2lkCQkJcGFydGNvbGwxID0gcmVsMS0+cGFydF9zY2hlbWUtPnBh cnRjb2xsYXRpb25baXBrXTsKKwkJCU9pZAkJCWV4cHJjb2xsMSA9IGV4cHJDb2xsYXRpb24oZXhw cjEpOwogCiAJCQlmb3JlYWNoKGxjMiwgcmVsMi0+cGFydGV4cHJzW2lwa10pCiAJCQl7CkBAIC0y MjY1LDggKzIyNzEsMjYgQEAgaGF2ZV9wYXJ0a2V5X2VxdWlfam9pbihQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAogCQkJCWlmIChleHByc19rbm93bl9lcXVhbChyb290 LCBleHByMSwgZXhwcjIsIGJ0cmVlX29wZmFtaWx5KSkKIAkJCQl7Ci0JCQkJCXBrX2tub3duX2Vx dWFsW2lwa10gPSB0cnVlOwotCQkJCQlicmVhazsKKwkJCQkJLyoKKwkJCQkJICogRW5zdXJlIHRo YXQgdGhlIGNvbGxhdGlvbiBvZiB0aGUgZXhwcmVzc2lvbiBtYXRjaGVzCisJCQkJCSAqIHRoYXQg b2YgdGhlIHBhcnRpdGlvbiBrZXkuIENoZWNraW5nIGp1c3Qgb25lIGNvbGxhdGlvbgorCQkJCQkg KiAocGFydGNvbGwxIGFuZCBleHByY29sbDEpIHN1ZmZpY2VzIGJlY2F1c2UgcGFydGNvbGwxCisJ CQkJCSAqIGFuZCBwYXJ0Y29sbDIsIGFzIHdlbGwgYXMgZXhwcmNvbGwxIGFuZCBleHByY29sbDIs CisJCQkJCSAqIHNob3VsZCBiZSBpZGVudGljYWwuIFRoaXMgaG9sZHMgYmVjYXVzZSBib3RoIHJl bDEgYW5kCisJCQkJCSAqIHJlbDIgdXNlIHRoZSBzYW1lIFBhcnRpdGlvblNjaGVtZSBhbmQgZXhw cjEgYW5kIGV4cHIyCisJCQkJCSAqIGFyZSBlcXVhbC4KKwkJCQkJICovCisJCQkJCWlmIChwYXJ0 Y29sbDEgPT0gZXhwcmNvbGwxKQorCQkJCQl7CisJCQkJCQlPaWQJCQlwYXJ0Y29sbDIgUEdfVVNF RF9GT1JfQVNTRVJUU19PTkxZID0KKwkJCQkJCQlyZWwxLT5wYXJ0X3NjaGVtZS0+cGFydGNvbGxh dGlvbltpcGtdOworCQkJCQkJT2lkCQkJZXhwcmNvbGwyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05M WSA9CisJCQkJCQkJZXhwckNvbGxhdGlvbihleHByMik7CisKKwkJCQkJCUFzc2VydChwYXJ0Y29s bDIgPT0gZXhwcmNvbGwyKTsKKwkJCQkJCXBrX2tub3duX2VxdWFsW2lwa10gPSB0cnVlOworCQkJ CQkJYnJlYWs7CisJCQkJCX0KIAkJCQl9CiAJCQl9CiAJCQlpZiAocGtfa25vd25fZXF1YWxbaXBr XSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRm OC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0Cmlu ZGV4IDczN2NmMzYzYTIuLmFiYzNjZTIzYTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMjEzNiw3ICsyMTM2LDE2MSBAQCBTRUxFQ1Qg YyBjb2xsYXRlICJDIiwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRl ICJDIiBPUkRFUiBCWSAxOwogIGIgfCAgICAgMgogKDQgcm93cykKIAorLS0gUGFydGl0aW9ud2lz ZSBqb2luIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0b28gd2hlbiB0aGUgY29sbGF0aW9uIHVzZWQg YnkgdGhlCistLSBqb2luIGtleXMgZG9lc24ndCBtYXRjaCB0aGUgcGFydGl0aW9uIGtleSBjb2xs YXRpb24uCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyBmYWxzZTsKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBK T0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZIDE7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU29ydAorICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSBjYXNlX2luc2Vuc2l0 aXZlCisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiB0MS5jCisgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5jID0gdDIu YykKKyAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0MV8yCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQyXzIKKygxMyByb3dzKQorCitTRUxF Q1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIg T04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSAxOworIGMgfCBjb3VudCAKKy0tLSst LS0tLS0tCisgQSB8ICAgIDE2CisgQiB8ICAgIDE2CisoMiByb3dzKQorCitTRVQgZW5hYmxlX3Bh cnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQx LmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBT b3J0IEtleTogdDEuYyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUKKyAgIC0+ICBIYXNoQWdncmVn YXRlCisgICAgICAgICBHcm91cCBLZXk6IHQxLmMKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmMgPSB0Mi5jKQorICAgICAgICAgICAgICAgLT4g IEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19w MiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3Ax IHQxXzIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAg QXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190 YWIzX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw YWdnX3RhYjNfcDEgdDJfMgorKDEzIHJvd3MpCisKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBG Uk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBC WSAxIE9SREVSIEJZIDE7CisgYyB8IGNvdW50IAorLS0tKy0tLS0tLS0KKyBBIHwgICAgMTYKKyBC IHwgICAgMTYKKygyIHJvd3MpCisKKy0tIE9LIHdoZW4gdGhlIGpvaW4gY2xhdXNlIHVzZXMgdGhl IHNhbWUgY29sbGF0aW9uIGFzIHRoZSBwYXJ0aXRpb24ga2V5LgorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIHQxLmMgQ09MTEFURSAiQyIsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQx IEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIENPTExBVEUgIkMiIEdST1VQIEJZIHQx LmMgQ09MTEFURSAiQyIgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAor ICAgU29ydCBLZXk6ICgodDEuYyk6OnRleHQpIENPTExBVEUgIkMiCisgICAtPiAgQXBwZW5kCisg ICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiAodDEu Yyk6OnRleHQKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKCh0MS5jKTo6dGV4dCA9ICh0Mi5jKTo6dGV4dCkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDEKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcGFnZ190YWIzX3AyIHQyCisgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiAodDFfMS5jKTo6dGV4dAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoKHQxXzEuYyk6OnRleHQgPSAo dDJfMS5jKTo6dGV4dCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdn X3RhYjNfcDEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDJfMQorKDE3IHJv d3MpCisKK1NFTEVDVCB0MS5jIENPTExBVEUgIkMiLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFi MyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBDT0xMQVRFICJDIiBHUk9VUCBC WSB0MS5jIENPTExBVEUgIkMiIE9SREVSIEJZIDE7CisgYyB8IGNvdW50IAorLS0tKy0tLS0tLS0K KyBBIHwgICAgIDQKKyBCIHwgICAgIDQKKyBhIHwgICAgIDQKKyBiIHwgICAgIDQKKyg0IHJvd3Mp CisKKy0tIEFub3RoZXIgY2FzZSB3aGVyZSB0aGUgcGFydGl0aW9uIGtleXMgYXJlIG1hdGNoZWQg dmlhIGVxdWl2YWxlbmNlIGNsYXNzLAorLS0gbm90IGEgam9pbiByZXN0cmljdGlvbiBjbGF1c2Uu CitDUkVBVEUgVEFCTEUgcGFnZ190YWI0IChjIHRleHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZl LCBiIHRleHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVChiIGNv bGxhdGUgIkMiKTsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjRfcDEgUEFSVElUSU9OIE9GIHBhZ2df dGFiNCBGT1IgVkFMVUVTIElOICgnYScsICdiJyk7CitDUkVBVEUgVEFCTEUgcGFnZ190YWI0X3Ay IFBBUlRJVElPTiBPRiBwYWdnX3RhYjQgRk9SIFZBTFVFUyBJTiAoJ0InLCAnQScpOworSU5TRVJU IElOVE8gcGFnZ190YWI0IChiLCBjKSBTRUxFQ1Qgc3Vic3RyKCdhYkFCJywgKGkgJSA0KSArIDEg LCAxKSwgc3Vic3RyKCdhYkFCJywgKGkgJSAyKSArIDEgLCAxKSBGUk9NIGdlbmVyYXRlX3Nlcmll cygwLCA3KSBpOworQU5BTFlaRSBwYWdnX3RhYjQ7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIg T04gdDEuYyA9IHQyLmMgQU5EIHQxLmMgPSB0Mi5iIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTb3J0CisgICBTb3J0IEtleTogdDEuYyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRp dmUKKyAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICBHcm91cCBLZXk6IHQxLmMKKyAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmMgPSB0Mi5j KQorICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcGFnZ190YWIzX3AxIHQxXzIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFnZ190YWI0X3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZpbHRlcjogKGMgPSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiNF9wMSB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGaWx0ZXI6IChjID0gYikKKygxNSByb3dzKQorCitTRUxFQ1QgdDEuYywgY291bnQo dDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9IHQyLmMg QU5EIHQxLmMgPSB0Mi5iIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKyBjIHwgY291bnQgCistLS0r LS0tLS0tLQorIEEgfCAgICAxNgorIEIgfCAgICAxNgorKDIgcm93cykKKworLS0gT0sgd2hlbiB0 aGUgam9pbiBjbGF1c2UgdXNlcyB0aGUgc2FtZSBjb2xsYXRpb24gYXMgdGhlIHBhcnRpdGlvbiBr ZXkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBh Z2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiNCB0MiBPTiB0MS5jID0gdDIuYyBBTkQgdDEuYyA9IHQy LmIgQ09MTEFURSAiQyIgR1JPVVAgQlkgMSBPUkRFUiBCWSAxOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0 CisgICBTb3J0IEtleTogdDEuYyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUKKyAgIC0+ICBIYXNo QWdncmVnYXRlCisgICAgICAgICBHcm91cCBLZXk6IHQxLmMKKyAgICAgICAgIC0+ICBBcHBlbmQK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKCh0MV8xLmMgPSB0Ml8xLmMpIEFORCAoKHQxXzEuYyk6OnRleHQgPSAodDJfMS5iKTo6 dGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3Ay IHQxXzEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWI0X3AyIHQyXzEKKyAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCh0MV8yLmMg PSB0Ml8yLmMpIEFORCAoKHQxXzIuYyk6OnRleHQgPSAodDJfMi5iKTo6dGV4dCkpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQxXzIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcGFnZ190YWI0X3AxIHQyXzIKKygxNSByb3dzKQorCitTRUxFQ1QgdDEuYywgY291 bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9IHQy LmMgQU5EIHQxLmMgPSB0Mi5iIENPTExBVEUgIkMiIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKyBj IHwgY291bnQgCistLS0rLS0tLS0tLQorIEEgfCAgICAgOAorIEIgfCAgICAgOAorKDIgcm93cykK KwogRFJPUCBUQUJMRSBwYWdnX3RhYjM7CitEUk9QIFRBQkxFIHBhZ2dfdGFiNDsKIFJFU0VUIGVu YWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsKIFJFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJz X3Blcl9nYXRoZXI7CiBSRVNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydDsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggY2ExYmI3YzFmMi4uMmYzN2ExYTk3 YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTgyOCw3 ICs4MjgsNDIgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGMgY29sbGF0ZSAiQyIsIGNv dW50KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGMgY29sbGF0ZSAiQyIgT1JERVIgQlkgMTsK IFNFTEVDVCBjIGNvbGxhdGUgIkMiLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBj IGNvbGxhdGUgIkMiIE9SREVSIEJZIDE7CiAKKy0tIFBhcnRpdGlvbndpc2Ugam9pbiBzaG91bGQg bm90IGJlIGFsbG93ZWQgdG9vIHdoZW4gdGhlIGNvbGxhdGlvbiB1c2VkIGJ5IHRoZQorLS0gam9p biBrZXlzIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhcnRpdGlvbiBrZXkgY29sbGF0aW9uLgorU0VUIGVu YWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gZmFsc2U7CitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMg dDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSAxOworU0VMRUNUIHQxLmMsIGNv dW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0 Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKworU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pv aW4gVE8gdHJ1ZTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5j KSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9V UCBCWSAxIE9SREVSIEJZIDE7CitTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3Rh YjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBC WSAxOworCistLSBPSyB3aGVuIHRoZSBqb2luIGNsYXVzZSB1c2VzIHRoZSBzYW1lIGNvbGxhdGlv biBhcyB0aGUgcGFydGl0aW9uIGtleS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5j IENPTExBVEUgIkMiLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFi MyB0MiBPTiB0MS5jID0gdDIuYyBDT0xMQVRFICJDIiBHUk9VUCBCWSB0MS5jIENPTExBVEUgIkMi IE9SREVSIEJZIDE7CitTRUxFQ1QgdDEuYyBDT0xMQVRFICJDIiwgY291bnQodDIuYykgRlJPTSBw YWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgQ09MTEFURSAiQyIg R1JPVVAgQlkgdDEuYyBDT0xMQVRFICJDIiBPUkRFUiBCWSAxOworCistLSBBbm90aGVyIGNhc2Ug d2hlcmUgdGhlIHBhcnRpdGlvbiBrZXlzIGFyZSBtYXRjaGVkIHZpYSBlcXVpdmFsZW5jZSBjbGFz cywKKy0tIG5vdCBhIGpvaW4gcmVzdHJpY3Rpb24gY2xhdXNlLgorQ1JFQVRFIFRBQkxFIHBhZ2df dGFiNCAoYyB0ZXh0IGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSwgYiB0ZXh0IGNvbGxhdGUgY2Fz ZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIExJU1QoYiBjb2xsYXRlICJDIik7CitDUkVBVEUg VEFCTEUgcGFnZ190YWI0X3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYjQgRk9SIFZBTFVFUyBJTiAo J2EnLCAnYicpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNF9wMiBQQVJUSVRJT04gT0YgcGFnZ190 YWI0IEZPUiBWQUxVRVMgSU4gKCdCJywgJ0EnKTsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiNCAoYiwg YykgU0VMRUNUIHN1YnN0cignYWJBQicsIChpICUgNCkgKyAxICwgMSksIHN1YnN0cignYWJBQics IChpICUgMikgKyAxICwgMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgNykgaTsKK0FOQUxZWkUg cGFnZ190YWI0OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYywgY291bnQodDIu YykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9IHQyLmMgQU5E IHQxLmMgPSB0Mi5iIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKK1NFTEVDVCB0MS5jLCBjb3VudCh0 Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiNCB0MiBPTiB0MS5jID0gdDIuYyBB TkQgdDEuYyA9IHQyLmIgR1JPVVAgQlkgMSBPUkRFUiBCWSAxOworCistLSBPSyB3aGVuIHRoZSBq b2luIGNsYXVzZSB1c2VzIHRoZSBzYW1lIGNvbGxhdGlvbiBhcyB0aGUgcGFydGl0aW9uIGtleQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190 YWIzIHQxIEpPSU4gcGFnZ190YWI0IHQyIE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5jID0gdDIuYiBD T0xMQVRFICJDIiBHUk9VUCBCWSAxIE9SREVSIEJZIDE7CitTRUxFQ1QgdDEuYywgY291bnQodDIu YykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9IHQyLmMgQU5E IHQxLmMgPSB0Mi5iIENPTExBVEUgIkMiIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKwogRFJPUCBU QUJMRSBwYWdnX3RhYjM7CitEUk9QIFRBQkxFIHBhZ2dfdGFiNDsKIAogUkVTRVQgZW5hYmxlX3Bh cnRpdGlvbndpc2VfYWdncmVnYXRlOwogUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlcjsKLS0gCjIuNDMuMAoK --000000000000daad630625d4d713 Content-Type: application/octet-stream; name="v4-0001-Disallow-partitionwise-grouping-when-collation-do.patch" Content-Disposition: attachment; filename="v4-0001-Disallow-partitionwise-grouping-when-collation-do.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2yetizb1 RnJvbSBkOGY2NzUzZWViNzAzNDljY2I0NWQyMWRjNzQxZGJlNmZiYWFmMmE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBOb3YgMjAyNCAxNjoxNTo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MS8yXSBEaXNhbGxvdyBwYXJ0aXRpb253aXNlIGdyb3VwaW5nIHdoZW4gY29sbGF0aW9uIGRvZXNu J3QKIG1hdGNoCgpJbnNpc3QgdGhhdCB0aGUgY29sbGF0aW9uIHVzZWQgZm9yIGdyb3VwaW5nIG1h dGNoZXMgZXhhY3RseSB3aXRoIHRoZQpjb2xsYXRpb24gdXNlZCBmb3IgcGFydGl0aW9uaW5nIHRv IGFsbG93IHVzaW5nIGVpdGhlciBmdWxsIG9yCnBhcnRpYWwgcGFydGl0aW9ud2lzZSBncm91cGlu Zy4KCkJ1ZzogIzE4NTY4ClJlcG9ydGVkLWJ5OiBXZWJibyBIYW4gPDExMDUwNjY1MTBAcXEuY29t PgpBdXRob3I6IFdlYmJvIEhhbiA8MTEwNTA2NjUxMEBxcS5jb20+ClJldmlld2VkLWJ5OiBUZW5k ZXIgV2FuZyA8dG5kcndhbmdAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxla3NhbmRlciBBbGVr c2VldiA8YWxla3NhbmRlckB0aW1lc2NhbGUuY29tPgpSZXZpZXdlZC1ieTogSmlhbiBIZSA8amlh bi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzE4NTY4LTJhOWFmYjZiOWY3ZTZlZDNAcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS90ZW5jZW50XzlEOTEwM0NEQTQyMEMwNzc2ODM0OUNDMURGRjg4NDY1Rjkw QUBxcS5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhld1hObm9fSEtpUTZQ cXlMWWZ1cUR0d3A3S0tIWmlIMUo3UHF5ejBucitQUzJEd2dAbWFpbC5nbWFpbC5jb20KLS0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCA2NiArKysrKysr KysrKy0tLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwg ODYgKysrKysrKysrKysrKysrKysrKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2Fn Z3JlZ2F0ZS5vdXQgIHwgMTEgLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51 dGY4LnNxbCAgICAgfCAzNyArKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X2FnZ3JlZ2F0ZS5zcWwgIHwgIDEgLQogNSBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygr KSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4 IDBmNDIzZTk2ODQuLjQwNDRiMTMwNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMKQEAgLTI1Myw3ICsyNTMsOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfcGFydGl0aW9ud2lzZV9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCUdyb3VwUGF0aEV4 dHJhRGF0YSAqZXh0cmEpOwogc3RhdGljIGJvb2wgZ3JvdXBfYnlfaGFzX3BhcnRrZXkoUmVsT3B0 SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkgTGlzdCAqdGFyZ2V0TGlzdCwKLQkJCQkJCQkJIExp c3QgKmdyb3VwQ2xhdXNlKTsKKwkJCQkJCQkJIExpc3QgKmdyb3VwQ2xhdXNlLAorCQkJCQkJCQkg Ym9vbCAqY29sbGF0aW9uX2luY29tcGF0aWJsZSk7CiBzdGF0aWMgaW50CWNvbW1vbl9wcmVmaXhf Y21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwogc3RhdGljIExpc3QgKmdlbmVyYXRl X3NldG9wX2NoaWxkX2dyb3VwbGlzdChTZXRPcGVyYXRpb25TdG10ICpvcCwKIAkJCQkJCQkJCQkJ TGlzdCAqdGFyZ2V0bGlzdCk7CkBAIC00MDkwLDIzICs0MDkxLDMwIEBAIGNyZWF0ZV9vcmRpbmFy eV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVs LAogCWlmIChleHRyYS0+cGF0eXBlICE9IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX05PTkUgJiYK IAkJSVNfUEFSVElUSU9ORURfUkVMKGlucHV0X3JlbCkpCiAJeworCQlib29sCQljb2xsYXRpb25f aW5jb21wYXRpYmxlID0gZmFsc2U7CisJCWJvb2wJCWdyb3VwX2J5X2NvbnRhaW5zX3BhcnRrZXkg PQorCQkJZ3JvdXBfYnlfaGFzX3BhcnRrZXkoaW5wdXRfcmVsLCBleHRyYS0+dGFyZ2V0TGlzdCwK KwkJCQkJCQkJIHJvb3QtPnBhcnNlLT5ncm91cENsYXVzZSwKKwkJCQkJCQkJICZjb2xsYXRpb25f aW5jb21wYXRpYmxlKTsKKwogCQkvKgogCQkgKiBJZiB0aGlzIGlzIHRoZSB0b3Btb3N0IHJlbGF0 aW9uIG9yIGlmIHRoZSBwYXJlbnQgcmVsYXRpb24gaXMgZG9pbmcKIAkJICogZnVsbCBwYXJ0aXRp b253aXNlIGFnZ3JlZ2F0aW9uLCB0aGVuIHdlIGNhbiBkbyBmdWxsIHBhcnRpdGlvbndpc2UKIAkJ ICogYWdncmVnYXRpb24gcHJvdmlkZWQgdGhhdCB0aGUgR1JPVVAgQlkgY2xhdXNlIGNvbnRhaW5z IGFsbCBvZiB0aGUKLQkJICogcGFydGl0aW9uaW5nIGNvbHVtbnMgYXQgdGhpcyBsZXZlbC4gIE90 aGVyd2lzZSwgd2UgY2FuIGRvIGF0IG1vc3QKLQkJICogcGFydGlhbCBwYXJ0aXRpb253aXNlIGFn Z3JlZ2F0aW9uLiAgQnV0IGlmIHBhcnRpYWwgYWdncmVnYXRpb24gaXMKLQkJICogbm90IHN1cHBv cnRlZCBpbiBnZW5lcmFsIHRoZW4gd2UgY2FuJ3QgdXNlIGl0IGZvciBwYXJ0aXRpb253aXNlCi0J CSAqIGFnZ3JlZ2F0aW9uIGVpdGhlci4KKwkJICogcGFydGl0aW9uaW5nIGNvbHVtbnMgYXQgdGhp cyBsZXZlbCBhbmQgdGhlIGNvbGxhdGlvbiB1c2VkIGJ5IEdST1VQCisJCSAqIEJZIG1hdGNoZXMg dGhlIHBhcnRpdGlvbmluZyBjb2xsYXRpb24uICBPdGhlcndpc2UsIHdlIGNhbiBkbyBhdCBtb3N0 CisJCSAqIHBhcnRpYWwgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGlvbiwgYnV0IGFnYWluIG9ubHkg aWYgdGhlIGNvbGxhdGlvbgorCQkgKiBpcyBjb21wYXRpYmxlLiAgSWYgcGFydGlhbCBhZ2dyZWdh dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGdlbmVyYWwKKwkJICogdGhlbiB3ZSBjYW4ndCB1c2Ug aXQgZm9yIHBhcnRpdGlvbndpc2UgYWdncmVnYXRpb24gZWl0aGVyLgogCQkgKgogCQkgKiBDaGVj ayBwYXJzZS0+Z3JvdXBDbGF1c2Ugbm90IHByb2Nlc3NlZF9ncm91cENsYXVzZSwgYmVjYXVzZSBp dCdzCiAJCSAqIG9rYXkgaWYgc29tZSBvZiB0aGUgcGFydGl0aW9uaW5nIGNvbHVtbnMgd2VyZSBw cm92ZWQgcmVkdW5kYW50LgogCQkgKi8KIAkJaWYgKGV4dHJhLT5wYXR5cGUgPT0gUEFSVElUSU9O V0lTRV9BR0dSRUdBVEVfRlVMTCAmJgotCQkJZ3JvdXBfYnlfaGFzX3BhcnRrZXkoaW5wdXRfcmVs LCBleHRyYS0+dGFyZ2V0TGlzdCwKLQkJCQkJCQkJIHJvb3QtPnBhcnNlLT5ncm91cENsYXVzZSkp CisJCQlncm91cF9ieV9jb250YWluc19wYXJ0a2V5KQogCQkJcGF0eXBlID0gUEFSVElUSU9OV0lT RV9BR0dSRUdBVEVfRlVMTDsKLQkJZWxzZSBpZiAoKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NB Tl9QQVJUSUFMX0FHRykgIT0gMCkKKwkJZWxzZSBpZiAoKGV4dHJhLT5mbGFncyAmIEdST1VQSU5H X0NBTl9QQVJUSUFMX0FHRykgIT0gMCAmJgorCQkJCSAhY29sbGF0aW9uX2luY29tcGF0aWJsZSkK IAkJCXBhdHlwZSA9IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX1BBUlRJQUw7CiAJCWVsc2UKIAkJ CXBhdHlwZSA9IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX05PTkU7CkBAIC04MTA1LDEzICs4MTEz LDE4IEBAIGNyZWF0ZV9wYXJ0aXRpb253aXNlX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpy b290LAogLyoKICAqIGdyb3VwX2J5X2hhc19wYXJ0a2V5CiAgKgotICogUmV0dXJucyB0cnVlLCBp ZiBhbGwgdGhlIHBhcnRpdGlvbiBrZXlzIG9mIHRoZSBnaXZlbiByZWxhdGlvbiBhcmUgcGFydCBv ZgotICogdGhlIEdST1VQIEJZIGNsYXVzZXMsIGZhbHNlIG90aGVyd2lzZS4KKyAqIFJldHVybnMg dHJ1ZSBpZiBhbGwgdGhlIHBhcnRpdGlvbiBrZXlzIG9mIHRoZSBnaXZlbiByZWxhdGlvbiBhcmUg cGFydCBvZgorICogdGhlIEdST1VQIEJZIGNsYXVzZXMsIGluY2x1ZGluZyBoYXZpbmcgbWF0Y2hp bmcgY29sbGF0aW9uLCBmYWxzZSBvdGhlcndpc2UuCisgKgorICogUmV0dXJucyBmYWxzZSBhbHNv IGlmIGEgY29sbGF0aW9uIG1pc21hdGNoIGlzIGRldGVjdGVkIGJldHdlZW4gYSBwYXJ0aXRpb24K KyAqIGtleSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgZXhwcmVzc2lvbiBpbiBncm91cENsYXVzZSwg aW4gd2hpY2ggY2FzZS4KKyAqICpjb2xsYXRpb25faW5jb21wYXRpYmxlIGlzIHNldCB0byB0cnVl LgogICovCiBzdGF0aWMgYm9vbAogZ3JvdXBfYnlfaGFzX3BhcnRrZXkoUmVsT3B0SW5mbyAqaW5w dXRfcmVsLAogCQkJCQkgTGlzdCAqdGFyZ2V0TGlzdCwKLQkJCQkJIExpc3QgKmdyb3VwQ2xhdXNl KQorCQkJCQkgTGlzdCAqZ3JvdXBDbGF1c2UsCisJCQkJCSBib29sICpjb2xsYXRpb25faW5jb21w YXRpYmxlKQogewogCUxpc3QJICAgKmdyb3VwZXhwcnMgPSBnZXRfc29ydGdyb3VwbGlzdF9leHBy cyhncm91cENsYXVzZSwgdGFyZ2V0TGlzdCk7CiAJaW50CQkJY250ID0gMDsKQEAgLTgxMzQsMTMg KzgxNDcsMzggQEAgZ3JvdXBfYnlfaGFzX3BhcnRrZXkoUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAog CiAJCWZvcmVhY2gobGMsIHBhcnRleHBycykKIAkJeworCQkJTGlzdENlbGwgICAqbGc7CiAJCQlF eHByCSAgICpwYXJ0ZXhwciA9IGxmaXJzdChsYyk7CisJCQlPaWQJCQlwYXJ0Y29sbCA9IGlucHV0 X3JlbC0+cGFydF9zY2hlbWUtPnBhcnRjb2xsYXRpb25bY250XTsKIAotCQkJaWYgKGxpc3RfbWVt YmVyKGdyb3VwZXhwcnMsIHBhcnRleHByKSkKKwkJCWZvcmVhY2gobGcsIGdyb3VwZXhwcnMpCiAJ CQl7Ci0JCQkJZm91bmQgPSB0cnVlOwotCQkJCWJyZWFrOworCQkJCUV4cHIJICAgKmdyb3VwZXhw ciA9IGxmaXJzdChsZyk7CisJCQkJT2lkCQkJZ3JvdXBjb2xsID0gZXhwckNvbGxhdGlvbigoTm9k ZSAqKSBncm91cGV4cHIpOworCisJCQkJaWYgKElzQShncm91cGV4cHIsIFJlbGFiZWxUeXBlKSkK KwkJCQkJZ3JvdXBleHByID0gKChSZWxhYmVsVHlwZSAqKSBncm91cGV4cHIpLT5hcmc7CisKKwkJ CQkvKgorCQkJCSAqIEVuc3VyZSB0aGF0IHRoZSBncm91cGluZyBjb2xsYXRpb24gaXMgY29tcGF0 aWJsZSB3aXRoIHRoZQorCQkJCSAqIHBhcnRpdGlvbmluZyBjb2xsYXRpb24uCisJCQkJICovCisJ CQkJaWYgKE9pZElzVmFsaWQocGFydGNvbGwpICYmIE9pZElzVmFsaWQoZ3JvdXBjb2xsKSAmJgor CQkJCQlwYXJ0Y29sbCAhPSBncm91cGNvbGwpCisJCQkJeworCQkJCQkqY29sbGF0aW9uX2luY29t cGF0aWJsZSA9IHRydWU7CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisKKwkJCQlpZiAoZXF1 YWwoZ3JvdXBleHByLCBwYXJ0ZXhwcikpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJ CWJyZWFrOworCQkJCX0KIAkJCX0KKworCQkJaWYgKGZvdW5kKQorCQkJCWJyZWFrOwogCQl9CiAK IAkJLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3Uu dXRmOC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0 CmluZGV4IGZhYTM3NmUwNjAuLjczN2NmMzYzYTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMjA1NCw2ICsyMDU0LDkyIEBAIFNFTEVD VCAoU0VMRUNUIGNvdW50KCopIEZST00gdGVzdDMzXzApIDw+IChTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0MzNfMSk7CiAgdAogKDEgcm93KQogCistLQorLS0gQnVnICMxODU2OAorLS0KKy0tIFBh cnRpdGlvbndpc2UgYWdncmVnYXRlIChmdWxsIG9yIHBhcnRpYWwpIHNob3VsZCBub3QgYmUgdXNl ZCB3aGVuIGEKKy0tIHBhcnRpdGlvbiBrZXkncyBjb2xsYXRpb24gZG9lc24ndCBtYXRjaCB0aGF0 IG9mIHRoZSBHUk9VUCBCWSBjb2x1bW4gaXQgaXMKKy0tIG1hdGNoZWQgd2l0aC4KK1NFVCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7CitTRVQgZW5hYmxlX2luY3JlbWVudGFs X3NvcnQgVE8gb2ZmOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiMyAoYyB0ZXh0IGNvbGxhdGUgY2Fz ZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIExJU1QoYyBjb2xsYXRlICJDIik7CitDUkVBVEUg VEFCTEUgcGFnZ190YWIzX3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYjMgRk9SIFZBTFVFUyBJTiAo J2EnLCAnYicpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiM19wMiBQQVJUSVRJT04gT0YgcGFnZ190 YWIzIEZPUiBWQUxVRVMgSU4gKCdCJywgJ0EnKTsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiMyBTRUxF Q1Qgc3Vic3RyKCdhYkFCJywgKGkgJSA0KSArMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAs IDcpIGk7CitBTkFMWVpFIHBhZ2dfdGFiMzsKK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dy ZWdhdGUgVE8gZmFsc2U7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdXBwZXIoYyBjb2xs YXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBj IGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRFUiBCWSAxOworICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAg U29ydCBLZXk6ICh1cHBlcihwYWdnX3RhYjMuYykpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZQor ICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWIzLmMKKyAg ICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjNfcDIgcGFnZ190YWIzXzEKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjNfcDEgcGFnZ190YWIzXzIKKyg3IHJvd3MpCisKK1NFTEVDVCB1cHBlcihjIGNvbGxhdGUgY2Fz ZV9pbnNlbnNpdGl2ZSksIGNvdW50KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGMgY29sbGF0 ZSBjYXNlX2luc2Vuc2l0aXZlIE9SREVSIEJZIDE7CisgdXBwZXIgfCBjb3VudCAKKy0tLS0tLS0r LS0tLS0tLQorIEEgICAgIHwgICAgIDQKKyBCICAgICB8ICAgICA0CisoMiByb3dzKQorCistLSBO byBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uIGFsbG93ZWQhCitTRVQgZW5hYmxlX3BhcnRpdGlv bndpc2VfYWdncmVnYXRlIFRPIHRydWU7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdXBw ZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBH Uk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRFUiBCWSAxOworICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgU29ydCBLZXk6ICh1cHBlcihwYWdnX3RhYjMuYykpIENPTExBVEUgY2FzZV9pbnNl bnNpdGl2ZQorICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIEdyb3VwIEtleTogcGFnZ190 YWIzLmMKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjNfcDIgcGFnZ190YWIzXzEKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjNfcDEgcGFnZ190YWIzXzIKKyg3IHJvd3MpCisKK1NFTEVDVCB1cHBlcihjIGNv bGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSksIGNvdW50KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZ IGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlIE9SREVSIEJZIDE7CisgdXBwZXIgfCBjb3VudCAK Ky0tLS0tLS0rLS0tLS0tLQorIEEgICAgIHwgICAgIDQKKyBCICAgICB8ICAgICA0CisoMiByb3dz KQorCistLSBPSyB0byB1c2UgZnVsbCBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSBhZnRlciBjaGFu Z2luZyB0aGUgR1JPVVAgQlkgY29sdW1uJ3MKKy0tIGNvbGxhdGlvbiB0byBiZSB0aGUgc2FtZSBh cyB0aGF0IG9mIHRoZSBwYXJ0aXRpb24ga2V5LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGMgY29sbGF0ZSAiQyIsIGNvdW50KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGMgY29sbGF0 ZSAiQyIgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiAoKHBhZ2dfdGFiMy5jKTo6 dGV4dCkgQ09MTEFURSAiQyIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IChwYWdnX3RhYjMuYyk6OnRleHQKKyAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgcGFnZ190YWIzCisgICAgICAg ICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiAocGFnZ190YWIz XzEuYyk6OnRleHQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEg cGFnZ190YWIzXzEKKyg5IHJvd3MpCisKK1NFTEVDVCBjIGNvbGxhdGUgIkMiLCBjb3VudChjKSBG Uk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgIkMiIE9SREVSIEJZIDE7CisgYyB8IGNv dW50IAorLS0tKy0tLS0tLS0KKyBBIHwgICAgIDIKKyBCIHwgICAgIDIKKyBhIHwgICAgIDIKKyBi IHwgICAgIDIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgcGFnZ190YWIzOworUkVTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2VfYWdncmVnYXRlOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlcjsKK1JFU0VUIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0OwogLS0gY2xlYW51cAogUkVT RVQgc2VhcmNoX3BhdGg7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyBUTyB3YXJuaW5nOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQKaW5k ZXggNWYyYzBjZjU3OC4uNjcwZWI5ODkwNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CkBAIC0xNTA3LDE0ICsxNTA3LDMgQEAgU0VM RUNUIHgsIHN1bSh5KSwgYXZnKHkpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiX3BhcmEgR1JPVVAg QlkgeCBIQVZJTkcgYXZnKHkpIDwKICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdn X3RhYl9wYXJhX3AzIHBhZ2dfdGFiX3BhcmFfMgogKDE1IHJvd3MpCiAKLVNFTEVDVCB4LCBzdW0o eSksIGF2Zyh5KSwgY291bnQoKikgRlJPTSBwYWdnX3RhYl9wYXJhIEdST1VQIEJZIHggSEFWSU5H IGF2Zyh5KSA8IDcgT1JERVIgQlkgMSwgMiwgMzsKLSB4ICB8IHN1bSAgfCAgICAgICAgYXZnICAg ICAgICAgfCBjb3VudCAKLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0K LSAgMCB8IDUwMDAgfCA1LjAwMDAwMDAwMDAwMDAwMDAgfCAgMTAwMAotICAxIHwgNjAwMCB8IDYu MDAwMDAwMDAwMDAwMDAwMCB8ICAxMDAwCi0gMTAgfCA1MDAwIHwgNS4wMDAwMDAwMDAwMDAwMDAw IHwgIDEwMDAKLSAxMSB8IDYwMDAgfCA2LjAwMDAwMDAwMDAwMDAwMDAgfCAgMTAwMAotIDIwIHwg NTAwMCB8IDUuMDAwMDAwMDAwMDAwMDAwMCB8ICAxMDAwCi0gMjEgfCA2MDAwIHwgNi4wMDAwMDAw MDAwMDAwMDAwIHwgIDEwMDAKLSg2IHJvd3MpCi0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0 ZS5pY3UudXRmOC5zcWwKaW5kZXggODBmMjhhOTdkNy4uY2ExYmI3YzFmMiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTc5Niw2ICs3OTYsNDMgQEAgSU5T RVJUIElOVE8gdGVzdDMzIFZBTFVFUyAoMiwgJ0RFRicpOwogLS0gdGhleSBlbmQgdXAgaW4gdGhl IHNhbWUgcGFydGl0aW9uIChidXQgaXQncyBwbGF0Zm9ybS1kZXBlbmRlbnQgd2hpY2ggb25lKQog U0VMRUNUIChTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MzNfMCkgPD4gKFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3QzM18xKTsKIAorLS0KKy0tIEJ1ZyAjMTg1NjgKKy0tCistLSBQYXJ0aXRpb253 aXNlIGFnZ3JlZ2F0ZSAoZnVsbCBvciBwYXJ0aWFsKSBzaG91bGQgbm90IGJlIHVzZWQgd2hlbiBh CistLSBwYXJ0aXRpb24ga2V5J3MgY29sbGF0aW9uIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aGUg R1JPVVAgQlkgY29sdW1uIGl0IGlzCistLSBtYXRjaGVkIHdpdGguCitTRVQgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOworU0VUIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0IFRP IG9mZjsKKworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiMyAoYyB0ZXh0IGNvbGxhdGUgY2FzZV9pbnNl bnNpdGl2ZSkgUEFSVElUSU9OIEJZIExJU1QoYyBjb2xsYXRlICJDIik7CitDUkVBVEUgVEFCTEUg cGFnZ190YWIzX3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYjMgRk9SIFZBTFVFUyBJTiAoJ2EnLCAn YicpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiM19wMiBQQVJUSVRJT04gT0YgcGFnZ190YWIzIEZP UiBWQUxVRVMgSU4gKCdCJywgJ0EnKTsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiMyBTRUxFQ1Qgc3Vi c3RyKCdhYkFCJywgKGkgJSA0KSArMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDcpIGk7 CitBTkFMWVpFIHBhZ2dfdGFiMzsKKworU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0 ZSBUTyBmYWxzZTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1cHBlcihjIGNvbGxhdGUg Y2FzZV9pbnNlbnNpdGl2ZSksIGNvdW50KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGMgY29s bGF0ZSBjYXNlX2luc2Vuc2l0aXZlIE9SREVSIEJZIDE7CitTRUxFQ1QgdXBwZXIoYyBjb2xsYXRl IGNhc2VfaW5zZW5zaXRpdmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNv bGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRFUiBCWSAxOworCistLSBObyBwYXJ0aXRpb253aXNl IGFnZ3JlZ2F0aW9uIGFsbG93ZWQhCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRl IFRPIHRydWU7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdXBwZXIoYyBjb2xsYXRlIGNh c2VfaW5zZW5zaXRpdmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxh dGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRFUiBCWSAxOworU0VMRUNUIHVwcGVyKGMgY29sbGF0ZSBj YXNlX2luc2Vuc2l0aXZlKSwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xs YXRlIGNhc2VfaW5zZW5zaXRpdmUgT1JERVIgQlkgMTsKKworLS0gT0sgdG8gdXNlIGZ1bGwgcGFy dGl0aW9ud2lzZSBhZ2dyZWdhdGUgYWZ0ZXIgY2hhbmdpbmcgdGhlIEdST1VQIEJZIGNvbHVtbidz CistLSBjb2xsYXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgcGFydGl0aW9uIGtl eS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjIGNvbGxhdGUgIkMiLCBjb3VudChjKSBG Uk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgIkMiIE9SREVSIEJZIDE7CitTRUxFQ1Qg YyBjb2xsYXRlICJDIiwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRl ICJDIiBPUkRFUiBCWSAxOworCitEUk9QIFRBQkxFIHBhZ2dfdGFiMzsKKworUkVTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2VfYWdncmVnYXRlOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlcjsKK1JFU0VUIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0OwogCiAtLSBjbGVhbnVwCiBS RVNFVCBzZWFyY2hfcGF0aDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9hZ2dyZWdhdGUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2FnZ3Jl Z2F0ZS5zcWwKaW5kZXggYWIwNzBmZWUyNC4uMWUyNjNjMWNhZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKQEAgLTMzMyw0ICszMzMsMyBAQCBSRVNF VCBwYXJhbGxlbF9zZXR1cF9jb3N0OwogCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgeCwg c3VtKHkpLCBhdmcoeSksIGNvdW50KCopIEZST00gcGFnZ190YWJfcGFyYSBHUk9VUCBCWSB4IEhB VklORyBhdmcoeSkgPCA3IE9SREVSIEJZIDEsIDIsIDM7Ci1TRUxFQ1QgeCwgc3VtKHkpLCBhdmco eSksIGNvdW50KCopIEZST00gcGFnZ190YWJfcGFyYSBHUk9VUCBCWSB4IEhBVklORyBhdmcoeSkg PCA3IE9SREVSIEJZIDEsIDIsIDM7Ci0tIAoyLjQzLjAKCg== --000000000000daad630625d4d713--