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 1t6oZs-00FiuM-V4 for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Nov 2024 10:08:25 +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 1t6oZq-00CDn9-DM for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Nov 2024 10:08:22 +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 1t6oZp-00CDn1-TT for pgsql-hackers@lists.postgresql.org; Fri, 01 Nov 2024 10:08:22 +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 1t6oZn-004A6V-EM for pgsql-hackers@lists.postgresql.org; Fri, 01 Nov 2024 10:08:21 +0000 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-7db54269325so1309916a12.2 for ; Fri, 01 Nov 2024 03:08:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730455697; x=1731060497; 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=KhhTKK/kr4U31CZJSy9tl09QxYeGDBtFltxeZrQ7/R4=; b=EHnaaJCvgzVAsatz5Nby61h2d2XzNXizPlwStloi3yLwjFeWWegmswvvb8PXngGCBs n72sYyRAyrwjpAkoja4vHS5ELF7FPuh4hVO8FfnAxCHYeJvlTKroe1erRvjezZO8vPs7 FOvu/KpF8fFP20dMsywozmfCGF4AR6prf6NKa1z9B7eTYmoREfnsqSLkVyzXgboxhuS1 yMBsgZpaHwYtdJK7xaoxMFCMCNVXu/pLMdOmq4kNr8JxkDOsJzCQsLXlGlSPAgC5lCTi jt39IqIyBF08DMpr1HO8gzw81MBwTQ5iKicaFUv6fPERkn8nCr8Nx1+NiJBx8NxfCBNW HoDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730455697; x=1731060497; 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=KhhTKK/kr4U31CZJSy9tl09QxYeGDBtFltxeZrQ7/R4=; b=pWnYcyBsX92BvFNF3wxaHqdmM5pStK1tWvlQY8tyMx8cvnmT+h/JpgxPStJ3uCGbmH j6466Vai1YAfoeqqF9sJs+Jrd0PK4r39tacd3L/bpHKHVR3RLz8BH9/VLdVWLtS98Ksv c4dEzL+WyBM/q5p/hYoBzbG2PfudQusu3Y7KiChvrZcI1liUinEPBeBbhM3WGjTNeRX1 1FaQ9sWQ1GBPC7lkbo9zitp2nkbA+Ff4Cn2o1/CdE9pZwceG83EIWQsCqcwPas6AdMt7 NJ1LewV1C+9HZoHoATwn3AJ1bBfDhcLmKC+oRrZqzbhz2Vrrst+Zc+sPFi6uT0cVksBG zPdw== X-Forwarded-Encrypted: i=1; AJvYcCXdzIElrT9XQbhFDoEaKHv9Y6YehDkTtXPzeCtQyXTm2tAdVQ5HflP/jPFtckzMqgGH1gfGJKcMVj8Yn1lE@lists.postgresql.org X-Gm-Message-State: AOJu0YxzVTZPN9JIBOD8CvzGXSsZNEMctYnPN9PDbW57NfF6E3NpH413 hUM+9kIn8MMI+Wo/FTM1Qgi4FYIZ3WZRUltjyeaabd02qu0jXTElKuMh0eeop71ZkMvIMwYe9K5 3F0JqvJ/bPcQGORfDnPAM4KIBexU= X-Google-Smtp-Source: AGHT+IFgB1ODR80vohEvtzE2ejv6RqJwz9vYMBA14+ijWlh3vZgwsJWX+q5PNjfEZbLqsEuEjLrcu8uSdXzGYZdVGW8= X-Received: by 2002:a17:90b:2e4d:b0:2e5:e269:1b5a with SMTP id 98e67ed59e1d1-2e94c54a67emr3426167a91.41.1730455696978; Fri, 01 Nov 2024 03:08:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Fri, 1 Nov 2024 19:08:00 +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="0000000000001e536b0625d71d97" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001e536b0625d71d97 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Nov 1, 2024 at 5:08=E2=80=AFPM jian he wrote: > just a quick reply while testing v4-0001. > tests copy from src/test/regress/sql/partition_aggregate.sql first 40 lin= es. > > drop table if exists pagg_tab; > CREATE TABLE pagg_tab (a int, b int, c text, d int) PARTITION BY > LIST(c collate "C"); > CREATE TABLE pagg_tab_p1 PARTITION OF pagg_tab FOR VALUES IN ('0000', > '0001', '0002', '0003', '0004'); > CREATE TABLE pagg_tab_p2 PARTITION OF pagg_tab FOR VALUES IN ('0005', > '0006', '0007', '0008'); > CREATE TABLE pagg_tab_p3 PARTITION OF pagg_tab FOR VALUES IN ('0009', > '0010', '0011'); > INSERT INTO pagg_tab SELECT (i % 20), (i % 30), to_char(i % 12, > 'FM0000'), i % 30 FROM generate_series(0, 2999) i; > ANALYZE pagg_tab; > > EXPLAIN (COSTS OFF, settings) > SELECT a, sum(b), avg(b), count(*), max(b) FROM pagg_tab GROUP BY a; > > > QUERY PLAN > > -------------------------------------------------------------------------= ---------------------------------------------------------------------------= ------- > Finalize HashAggregate > Group Key: pagg_tab.a > -> Append > -> Partial HashAggregate > Group Key: pagg_tab.a > -> Seq Scan on pagg_tab_p1 pagg_tab > -> Partial HashAggregate > Group Key: pagg_tab_1.a > -> Seq Scan on pagg_tab_p2 pagg_tab_1 > -> Partial HashAggregate > Group Key: pagg_tab_2.a > -> Seq Scan on pagg_tab_p3 pagg_tab_2 > Settings: enable_partitionwise_aggregate =3D 'on', > enable_partitionwise_join =3D 'on', max_parallel_workers_per_gather =3D > '0', enable_increm > ental_sort =3D 'off' > > > > drop table if exists pagg_tab; > CREATE TABLE pagg_tab (a text, b int, c text, d int) PARTITION BY > LIST(c collate "C"); > CREATE TABLE pagg_tab_p1 PARTITION OF pagg_tab FOR VALUES IN ('0000', > '0001', '0002', '0003', '0004'); > CREATE TABLE pagg_tab_p2 PARTITION OF pagg_tab FOR VALUES IN ('0005', > '0006', '0007', '0008'); > CREATE TABLE pagg_tab_p3 PARTITION OF pagg_tab FOR VALUES IN ('0009', > '0010', '0011'); > INSERT INTO pagg_tab SELECT (i % 20)::text, (i % 30), to_char(i % 12, > 'FM0000'), i % 30 FROM generate_series(0, 2999) i; > ANALYZE pagg_tab; > EXPLAIN (COSTS OFF, settings) > SELECT a, sum(b), avg(b), count(*), max(b) FROM pagg_tab GROUP BY a; > > > QUERY PLAN > > -------------------------------------------------------------------------= ---------------------------------------------------------------------------= ------- > HashAggregate > Group Key: pagg_tab.a > -> Append > -> Seq Scan on pagg_tab_p1 pagg_tab_1 > -> Seq Scan on pagg_tab_p2 pagg_tab_2 > -> Seq Scan on pagg_tab_p3 pagg_tab_3 > Settings: enable_partitionwise_aggregate =3D 'on', > enable_partitionwise_join =3D 'on', max_parallel_workers_per_gather =3D > '0', enable_increm > ental_sort =3D 'off' > > > it seems "PARTITION BY LIST(c collate "C");" collation compare with > "GROUP BY a;". > set collation_incompatible returned true. > make it cannot do PARTITIONWISE_AGGREGATE_PARTIAL. > > but here "group by a", "a" is text data type, we can still do > PARTITIONWISE_AGGREGATE_PARTIAL > ? Good catch. Looks like I added a bug in group_by_has_partkey() -- collation_incompatible should be set only when a grouping expression matches a partition key. --=20 Thanks, Amit Langote --0000000000001e536b0625d71d97 Content-Type: application/octet-stream; name="v5-0002-Disallow-partitionwise-join-when-collation-doesn-.patch" Content-Disposition: attachment; filename="v5-0002-Disallow-partitionwise-join-when-collation-doesn-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2ykm2jx1 RnJvbSBmM2JkODU0ZTdlZTA0NjUzYTE2MmM4OTgwMTcxZmI0NTkxODEzOTAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBOb3YgMjAyNCAxNTozMjozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUg 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 ZGV4IDFlYzlhMjU0OGIuLmU2YWY5YjQwNWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMjE2NCw3ICsyMTY0LDE2MSBAQCBTRUxFQ1Qg YSwgY291bnQoYyBjb2xsYXRlICJDIikgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYSBPUkRFUiBC WSAxOwogIDQgfCAgICAgMwogKDQgcm93cykKIAorLS0gUGFydGl0aW9ud2lzZSBqb2luIHNob3Vs ZCBub3QgYmUgYWxsb3dlZCB0b28gd2hlbiB0aGUgY29sbGF0aW9uIHVzZWQgYnkgdGhlCistLSBq b2luIGtleXMgZG9lc24ndCBtYXRjaCB0aGUgcGFydGl0aW9uIGtleSBjb2xsYXRpb24uCitTRVQg ZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyBmYWxzZTsKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFi MyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZIDE7CisgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlCisgICAtPiAg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiB0MS5jCisgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5jID0gdDIuYykKKyAgICAgICAg ICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw YWdnX3RhYjNfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiM19wMSB0MV8yCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBhZ2dfdGFiM19wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcGFnZ190YWIzX3AxIHQyXzIKKygxMyByb3dzKQorCitTRUxFQ1QgdDEuYywgY291 bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQy LmMgR1JPVVAgQlkgMSBPUkRFUiBCWSAxOworIGMgfCBjb3VudCAKKy0tLSstLS0tLS0tCisgQSB8 ICAgIDM2CisgQiB8ICAgIDM2CisoMiByb3dzKQorCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vf am9pbiBUTyB0cnVlOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmMsIGNvdW50KHQy LmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdS T1VQIEJZIDEgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBTb3J0IEtleTogdDEu YyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUKKyAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAg ICBHcm91cCBLZXk6IHQxLmMKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxLmMgPSB0Mi5jKQorICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0MV8xCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQxXzIKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEg dDJfMgorKDEzIHJvd3MpCisKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFi MyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZ IDE7CisgYyB8IGNvdW50IAorLS0tKy0tLS0tLS0KKyBBIHwgICAgMzYKKyBCIHwgICAgMzYKKygy IHJvd3MpCisKKy0tIE9LIHdoZW4gdGhlIGpvaW4gY2xhdXNlIHVzZXMgdGhlIHNhbWUgY29sbGF0 aW9uIGFzIHRoZSBwYXJ0aXRpb24ga2V5LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmMgQ09MTEFURSAiQyIsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190 YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIENPTExBVEUgIkMiIEdST1VQIEJZIHQxLmMgQ09MTEFURSAi QyIgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgU29ydCBLZXk6 ICgodDEuYyk6OnRleHQpIENPTExBVEUgIkMiCisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiAodDEuYyk6OnRleHQKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKCh0MS5jKTo6dGV4dCA9ICh0Mi5jKTo6dGV4dCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIz X3AyIHQyCisgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiAodDFfMS5jKTo6dGV4dAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoKHQxXzEuYyk6OnRleHQgPSAodDJfMS5jKTo6dGV4 dCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDFf MQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDJfMQorKDE3IHJvd3MpCisKK1NFTEVD VCB0MS5jIENPTExBVEUgIkMiLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBh Z2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBDT0xMQVRFICJDIiBHUk9VUCBCWSB0MS5jIENPTExB VEUgIkMiIE9SREVSIEJZIDE7CisgYyB8IGNvdW50IAorLS0tKy0tLS0tLS0KKyBBIHwgICAgIDkK KyBCIHwgICAgIDkKKyBhIHwgICAgIDkKKyBiIHwgICAgIDkKKyg0IHJvd3MpCisKKy0tIEFub3Ro ZXIgY2FzZSB3aGVyZSB0aGUgcGFydGl0aW9uIGtleXMgYXJlIG1hdGNoZWQgdmlhIGVxdWl2YWxl bmNlIGNsYXNzLAorLS0gbm90IGEgam9pbiByZXN0cmljdGlvbiBjbGF1c2UuCitDUkVBVEUgVEFC TEUgcGFnZ190YWI0IChjIHRleHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlLCBiIHRleHQgY29s bGF0ZSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVChiIGNvbGxhdGUgIkMiKTsK K0NSRUFURSBUQUJMRSBwYWdnX3RhYjRfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiNCBGT1IgVkFM VUVTIElOICgnYScsICdiJyk7CitDUkVBVEUgVEFCTEUgcGFnZ190YWI0X3AyIFBBUlRJVElPTiBP RiBwYWdnX3RhYjQgRk9SIFZBTFVFUyBJTiAoJ0InLCAnQScpOworSU5TRVJUIElOVE8gcGFnZ190 YWI0IChiLCBjKSBTRUxFQ1Qgc3Vic3RyKCdhYkFCJywgKGkgJSA0KSArIDEgLCAxKSwgc3Vic3Ry KCdhYkFCJywgKGkgJSAyKSArIDEgLCAxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCAxMSkgaTsK K0FOQUxZWkUgcGFnZ190YWI0OworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmMsIGNv dW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWI0IHQyIE9OIHQxLmMgPSB0 Mi5jIEFORCB0MS5jID0gdDIuYiBHUk9VUCBCWSAxIE9SREVSIEJZIDE7CisgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlCisgICAtPiAg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiB0MS5jCisgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5jID0gdDIuYykKKyAgICAgICAg ICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw YWdnX3RhYjNfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiM19wMSB0MV8yCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBhZ2dfdGFiNF9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG aWx0ZXI6IChjID0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjRfcDEgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmls dGVyOiAoYyA9IGIpCisoMTUgcm93cykKKworU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00g cGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWI0IHQyIE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5jID0g dDIuYiBHUk9VUCBCWSAxIE9SREVSIEJZIDE7CisgYyB8IGNvdW50IAorLS0tKy0tLS0tLS0KKyBB IHwgICAgMzYKKyBCIHwgICAgMzYKKygyIHJvd3MpCisKKy0tIE9LIHdoZW4gdGhlIGpvaW4gY2xh dXNlIHVzZXMgdGhlIHNhbWUgY29sbGF0aW9uIGFzIHRoZSBwYXJ0aXRpb24ga2V5CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEg Sk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9IHQyLmMgQU5EIHQxLmMgPSB0Mi5iIENPTExBVEUg IkMiIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgU29ydCBL ZXk6IHQxLmMgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlCisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgR3JvdXAgS2V5OiB0MS5jCisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICgodDFf MS5jID0gdDJfMS5jKSBBTkQgKCh0MV8xLmMpOjp0ZXh0ID0gKHQyXzEuYik6OnRleHQpKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0MV8xCisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiNF9wMiB0Ml8xCisgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICgodDFfMi5jID0gdDJfMi5jKSBB TkQgKCh0MV8yLmMpOjp0ZXh0ID0gKHQyXzIuYik6OnRleHQpKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiNF9wMSB0Ml8yCisoMTUgcm93cykKKworU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZS T00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWI0IHQyIE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5j ID0gdDIuYiBDT0xMQVRFICJDIiBHUk9VUCBCWSAxIE9SREVSIEJZIDE7CisgYyB8IGNvdW50IAor LS0tKy0tLS0tLS0KKyBBIHwgICAgMTgKKyBCIHwgICAgMTgKKygyIHJvd3MpCisKIERST1AgVEFC TEUgcGFnZ190YWIzOworRFJPUCBUQUJMRSBwYWdnX3RhYjQ7CiBSRVNFVCBlbmFibGVfcGFydGl0 aW9ud2lzZV9hZ2dyZWdhdGU7CiBSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy OwogUkVTRVQgZW5hYmxlX2luY3JlbWVudGFsX3NvcnQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv bGxhdGUuaWN1LnV0Zjguc3FsCmluZGV4IDc5MmJjOTQzNjEuLjQwN2U1ZTViMjEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBAIC04MzQsNyArODM0LDQyIEBA IEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBhLCBjb3VudChjIGNvbGxhdGUgIkMiKSBGUk9N IHBhZ2dfdGFiMyBHUk9VUCBCWSBhIE9SREVSIEJZIDE7CiBTRUxFQ1QgYSwgY291bnQoYyBjb2xs YXRlICJDIikgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYSBPUkRFUiBCWSAxOwogCistLSBQYXJ0 aXRpb253aXNlIGpvaW4gc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvbyB3aGVuIHRoZSBjb2xsYXRp b24gdXNlZCBieSB0aGUKKy0tIGpvaW4ga2V5cyBkb2Vzbid0IG1hdGNoIHRoZSBwYXJ0aXRpb24g a2V5IGNvbGxhdGlvbi4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIGZhbHNlOwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190 YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JERVIg QlkgMTsKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBh Z2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZIDE7CisKK1NFVCBl bmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMg dDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSAxOworU0VMRUNUIHQxLmMsIGNv dW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0 Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgMTsKKworLS0gT0sgd2hlbiB0aGUgam9pbiBjbGF1c2Ug dXNlcyB0aGUgc2FtZSBjb2xsYXRpb24gYXMgdGhlIHBhcnRpdGlvbiBrZXkuCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgdDEuYyBDT0xMQVRFICJDIiwgY291bnQodDIuYykgRlJPTSBwYWdn X3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgQ09MTEFURSAiQyIgR1JP VVAgQlkgdDEuYyBDT0xMQVRFICJDIiBPUkRFUiBCWSAxOworU0VMRUNUIHQxLmMgQ09MTEFURSAi QyIsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQx LmMgPSB0Mi5jIENPTExBVEUgIkMiIEdST1VQIEJZIHQxLmMgQ09MTEFURSAiQyIgT1JERVIgQlkg MTsKKworLS0gQW5vdGhlciBjYXNlIHdoZXJlIHRoZSBwYXJ0aXRpb24ga2V5cyBhcmUgbWF0Y2hl ZCB2aWEgZXF1aXZhbGVuY2UgY2xhc3MsCistLSBub3QgYSBqb2luIHJlc3RyaWN0aW9uIGNsYXVz ZS4KK0NSRUFURSBUQUJMRSBwYWdnX3RhYjQgKGMgdGV4dCBjb2xsYXRlIGNhc2VfaW5zZW5zaXRp dmUsIGIgdGV4dCBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpIFBBUlRJVElPTiBCWSBMSVNUKGIg Y29sbGF0ZSAiQyIpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNF9wMSBQQVJUSVRJT04gT0YgcGFn Z190YWI0IEZPUiBWQUxVRVMgSU4gKCdhJywgJ2InKTsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjRf cDIgUEFSVElUSU9OIE9GIHBhZ2dfdGFiNCBGT1IgVkFMVUVTIElOICgnQicsICdBJyk7CitJTlNF UlQgSU5UTyBwYWdnX3RhYjQgKGIsIGMpIFNFTEVDVCBzdWJzdHIoJ2FiQUInLCAoaSAlIDQpICsg MSAsIDEpLCBzdWJzdHIoJ2FiQUInLCAoaSAlIDIpICsgMSAsIDEpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDAsIDExKSBpOworQU5BTFlaRSBwYWdnX3RhYjQ7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFi NCB0MiBPTiB0MS5jID0gdDIuYyBBTkQgdDEuYyA9IHQyLmIgR1JPVVAgQlkgMSBPUkRFUiBCWSAx OworU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190 YWI0IHQyIE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5jID0gdDIuYiBHUk9VUCBCWSAxIE9SREVSIEJZ IDE7CisKKy0tIE9LIHdoZW4gdGhlIGpvaW4gY2xhdXNlIHVzZXMgdGhlIHNhbWUgY29sbGF0aW9u IGFzIHRoZSBwYXJ0aXRpb24ga2V5CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYywg Y291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9 IHQyLmMgQU5EIHQxLmMgPSB0Mi5iIENPTExBVEUgIkMiIEdST1VQIEJZIDEgT1JERVIgQlkgMTsK K1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFi NCB0MiBPTiB0MS5jID0gdDIuYyBBTkQgdDEuYyA9IHQyLmIgQ09MTEFURSAiQyIgR1JPVVAgQlkg MSBPUkRFUiBCWSAxOworCiBEUk9QIFRBQkxFIHBhZ2dfdGFiMzsKK0RST1AgVEFCTEUgcGFnZ190 YWI0OwogCiBSRVNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGU7CiBSRVNFVCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOwotLSAKMi40My4wCgo= --0000000000001e536b0625d71d97 Content-Type: application/octet-stream; name="v5-0001-Disallow-partitionwise-grouping-when-collation-do.patch" Content-Disposition: attachment; filename="v5-0001-Disallow-partitionwise-grouping-when-collation-do.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2ykm2js0 RnJvbSA5YWM1NWVkZDUxMThiZWQ1MjRjMTY3MTQyMWNiODFmYTcwNWU5OTIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBOb3YgMjAyNCAxNjoxNTo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUg MS8yXSBEaXNhbGxvdyBwYXJ0aXRpb253aXNlIGdyb3VwaW5nIHdoZW4gY29sbGF0aW9uIGRvZXNu J3QKIG1hdGNoCgpJbnNpc3QgdGhhdCB0aGUgY29sbGF0aW9uIHVzZWQgZm9yIGdyb3VwaW5nIG1h dGNoZXMgZXhhY3RseSB3aXRoIHRoZQpjb2xsYXRpb24gdXNlZCBmb3IgcGFydGl0aW9uaW5nIHRv IGFsbG93IHVzaW5nIGVpdGhlciBmdWxsIG9yCnBhcnRpYWwgcGFydGl0aW9ud2lzZSBncm91cGlu Zy4KCkJ1ZzogIzE4NTY4ClJlcG9ydGVkLWJ5OiBXZWJibyBIYW4gPDExMDUwNjY1MTBAcXEuY29t PgpBdXRob3I6IFdlYmJvIEhhbiA8MTEwNTA2NjUxMEBxcS5jb20+ClJldmlld2VkLWJ5OiBUZW5k ZXIgV2FuZyA8dG5kcndhbmdAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxla3NhbmRlciBBbGVr c2VldiA8YWxla3NhbmRlckB0aW1lc2NhbGUuY29tPgpSZXZpZXdlZC1ieTogSmlhbiBIZSA8amlh bi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzE4NTY4LTJhOWFmYjZiOWY3ZTZlZDNAcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS90ZW5jZW50XzlEOTEwM0NEQTQyMEMwNzc2ODM0OUNDMURGRjg4NDY1Rjkw QUBxcS5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhld1hObm9fSEtpUTZQ cXlMWWZ1cUR0d3A3S0tIWmlIMUo3UHF5ejBucitQUzJEd2dAbWFpbC5nbWFpbC5jb20KLS0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgNjcgKysrKysr Ky0tLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwgMTE0 ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRm OC5zcWwgICAgIHwgIDQzICsrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMo KyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRl eCAwZjQyM2U5Njg0Li4yNGEzZmYwODdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCkBAIC0yNTMsNyArMjUzLDggQEAgc3RhdGljIHZvaWQgY3JlYXRlX3BhcnRpdGlvbndpc2Vf Z3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlHcm91cFBhdGhF eHRyYURhdGEgKmV4dHJhKTsKIHN0YXRpYyBib29sIGdyb3VwX2J5X2hhc19wYXJ0a2V5KFJlbE9w dEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJIExpc3QgKnRhcmdldExpc3QsCi0JCQkJCQkJCSBM aXN0ICpncm91cENsYXVzZSk7CisJCQkJCQkJCSBMaXN0ICpncm91cENsYXVzZSwKKwkJCQkJCQkJ IGJvb2wgKmNvbGxhdGlvbl9pbmNvbXBhdGlibGUpOwogc3RhdGljIGludAljb21tb25fcHJlZml4 X2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIHN0YXRpYyBMaXN0ICpnZW5lcmF0 ZV9zZXRvcF9jaGlsZF9ncm91cGxpc3QoU2V0T3BlcmF0aW9uU3RtdCAqb3AsCiAJCQkJCQkJCQkJ CUxpc3QgKnRhcmdldGxpc3QpOwpAQCAtNDA5MCwyMyArNDA5MSwzMCBAQCBjcmVhdGVfb3JkaW5h cnlfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3Jl bCwKIAlpZiAoZXh0cmEtPnBhdHlwZSAhPSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FICYm CiAJCUlTX1BBUlRJVElPTkVEX1JFTChpbnB1dF9yZWwpKQogCXsKKwkJYm9vbAkJY29sbGF0aW9u X2luY29tcGF0aWJsZSA9IGZhbHNlOworCQlib29sCQlncm91cF9ieV9jb250YWluc19wYXJ0a2V5 ID0KKwkJCWdyb3VwX2J5X2hhc19wYXJ0a2V5KGlucHV0X3JlbCwgZXh0cmEtPnRhcmdldExpc3Qs CisJCQkJCQkJCSByb290LT5wYXJzZS0+Z3JvdXBDbGF1c2UsCisJCQkJCQkJCSAmY29sbGF0aW9u X2luY29tcGF0aWJsZSk7CisKIAkJLyoKIAkJICogSWYgdGhpcyBpcyB0aGUgdG9wbW9zdCByZWxh dGlvbiBvciBpZiB0aGUgcGFyZW50IHJlbGF0aW9uIGlzIGRvaW5nCiAJCSAqIGZ1bGwgcGFydGl0 aW9ud2lzZSBhZ2dyZWdhdGlvbiwgdGhlbiB3ZSBjYW4gZG8gZnVsbCBwYXJ0aXRpb253aXNlCiAJ CSAqIGFnZ3JlZ2F0aW9uIHByb3ZpZGVkIHRoYXQgdGhlIEdST1VQIEJZIGNsYXVzZSBjb250YWlu cyBhbGwgb2YgdGhlCi0JCSAqIHBhcnRpdGlvbmluZyBjb2x1bW5zIGF0IHRoaXMgbGV2ZWwuICBP dGhlcndpc2UsIHdlIGNhbiBkbyBhdCBtb3N0Ci0JCSAqIHBhcnRpYWwgcGFydGl0aW9ud2lzZSBh Z2dyZWdhdGlvbi4gIEJ1dCBpZiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzCi0JCSAqIG5vdCBzdXBw b3J0ZWQgaW4gZ2VuZXJhbCB0aGVuIHdlIGNhbid0IHVzZSBpdCBmb3IgcGFydGl0aW9ud2lzZQot CQkgKiBhZ2dyZWdhdGlvbiBlaXRoZXIuCisJCSAqIHBhcnRpdGlvbmluZyBjb2x1bW5zIGF0IHRo aXMgbGV2ZWwgYW5kIHRoZSBjb2xsYXRpb24gdXNlZCBieSBHUk9VUAorCQkgKiBCWSBtYXRjaGVz IHRoZSBwYXJ0aXRpb25pbmcgY29sbGF0aW9uLiAgT3RoZXJ3aXNlLCB3ZSBjYW4gZG8gYXQgbW9z dAorCQkgKiBwYXJ0aWFsIHBhcnRpdGlvbndpc2UgYWdncmVnYXRpb24sIGJ1dCBhZ2FpbiBvbmx5 IGlmIHRoZSBjb2xsYXRpb24KKwkJICogaXMgY29tcGF0aWJsZS4gIElmIHBhcnRpYWwgYWdncmVn YXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBnZW5lcmFsCisJCSAqIHRoZW4gd2UgY2FuJ3QgdXNl IGl0IGZvciBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uIGVpdGhlci4KIAkJICoKIAkJICogQ2hl Y2sgcGFyc2UtPmdyb3VwQ2xhdXNlIG5vdCBwcm9jZXNzZWRfZ3JvdXBDbGF1c2UsIGJlY2F1c2Ug aXQncwogCQkgKiBva2F5IGlmIHNvbWUgb2YgdGhlIHBhcnRpdGlvbmluZyBjb2x1bW5zIHdlcmUg cHJvdmVkIHJlZHVuZGFudC4KIAkJICovCiAJCWlmIChleHRyYS0+cGF0eXBlID09IFBBUlRJVElP TldJU0VfQUdHUkVHQVRFX0ZVTEwgJiYKLQkJCWdyb3VwX2J5X2hhc19wYXJ0a2V5KGlucHV0X3Jl bCwgZXh0cmEtPnRhcmdldExpc3QsCi0JCQkJCQkJCSByb290LT5wYXJzZS0+Z3JvdXBDbGF1c2Up KQorCQkJZ3JvdXBfYnlfY29udGFpbnNfcGFydGtleSkKIAkJCXBhdHlwZSA9IFBBUlRJVElPTldJ U0VfQUdHUkVHQVRFX0ZVTEw7Ci0JCWVsc2UgaWYgKChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19D QU5fUEFSVElBTF9BR0cpICE9IDApCisJCWVsc2UgaWYgKChleHRyYS0+ZmxhZ3MgJiBHUk9VUElO R19DQU5fUEFSVElBTF9BR0cpICE9IDAgJiYKKwkJCQkgIWNvbGxhdGlvbl9pbmNvbXBhdGlibGUp CiAJCQlwYXR5cGUgPSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9QQVJUSUFMOwogCQllbHNlCiAJ CQlwYXR5cGUgPSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FOwpAQCAtODEwNSwxMyArODEx MywxOCBAQCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAq cm9vdCwKIC8qCiAgKiBncm91cF9ieV9oYXNfcGFydGtleQogICoKLSAqIFJldHVybnMgdHJ1ZSwg aWYgYWxsIHRoZSBwYXJ0aXRpb24ga2V5cyBvZiB0aGUgZ2l2ZW4gcmVsYXRpb24gYXJlIHBhcnQg b2YKLSAqIHRoZSBHUk9VUCBCWSBjbGF1c2VzLCBmYWxzZSBvdGhlcndpc2UuCisgKiBSZXR1cm5z IHRydWUgaWYgYWxsIHRoZSBwYXJ0aXRpb24ga2V5cyBvZiB0aGUgZ2l2ZW4gcmVsYXRpb24gYXJl IHBhcnQgb2YKKyAqIHRoZSBHUk9VUCBCWSBjbGF1c2VzLCBpbmNsdWRpbmcgaGF2aW5nIG1hdGNo aW5nIGNvbGxhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqIFJldHVybnMgZmFsc2UgYWxz byBpZiBhIGNvbGxhdGlvbiBtaXNtYXRjaCBpcyBkZXRlY3RlZCBiZXR3ZWVuIGEgcGFydGl0aW9u CisgKiBrZXkgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGV4cHJlc3Npb24gaW4gZ3JvdXBDbGF1c2Us IGluIHdoaWNoIGNhc2UuCisgKiAqY29sbGF0aW9uX2luY29tcGF0aWJsZSBpcyBzZXQgdG8gdHJ1 ZS4KICAqLwogc3RhdGljIGJvb2wKIGdyb3VwX2J5X2hhc19wYXJ0a2V5KFJlbE9wdEluZm8gKmlu cHV0X3JlbCwKIAkJCQkJIExpc3QgKnRhcmdldExpc3QsCi0JCQkJCSBMaXN0ICpncm91cENsYXVz ZSkKKwkJCQkJIExpc3QgKmdyb3VwQ2xhdXNlLAorCQkJCQkgYm9vbCAqY29sbGF0aW9uX2luY29t cGF0aWJsZSkKIHsKIAlMaXN0CSAgICpncm91cGV4cHJzID0gZ2V0X3NvcnRncm91cGxpc3RfZXhw cnMoZ3JvdXBDbGF1c2UsIHRhcmdldExpc3QpOwogCWludAkJCWNudCA9IDA7CkBAIC04MTM0LDEz ICs4MTQ3LDM5IEBAIGdyb3VwX2J5X2hhc19wYXJ0a2V5KFJlbE9wdEluZm8gKmlucHV0X3JlbCwK IAogCQlmb3JlYWNoKGxjLCBwYXJ0ZXhwcnMpCiAJCXsKKwkJCUxpc3RDZWxsICAgKmxnOwogCQkJ RXhwcgkgICAqcGFydGV4cHIgPSBsZmlyc3QobGMpOworCQkJT2lkCQkJcGFydGNvbGwgPSBpbnB1 dF9yZWwtPnBhcnRfc2NoZW1lLT5wYXJ0Y29sbGF0aW9uW2NudF07CiAKLQkJCWlmIChsaXN0X21l bWJlcihncm91cGV4cHJzLCBwYXJ0ZXhwcikpCisJCQlmb3JlYWNoKGxnLCBncm91cGV4cHJzKQog CQkJewotCQkJCWZvdW5kID0gdHJ1ZTsKLQkJCQlicmVhazsKKwkJCQlFeHByCSAgICpncm91cGV4 cHIgPSBsZmlyc3QobGcpOworCQkJCU9pZAkJCWdyb3VwY29sbCA9IGV4cHJDb2xsYXRpb24oKE5v ZGUgKikgZ3JvdXBleHByKTsKKworCQkJCWlmIChJc0EoZ3JvdXBleHByLCBSZWxhYmVsVHlwZSkp CisJCQkJCWdyb3VwZXhwciA9ICgoUmVsYWJlbFR5cGUgKikgZ3JvdXBleHByKS0+YXJnOworCisJ CQkJaWYgKGVxdWFsKGdyb3VwZXhwciwgcGFydGV4cHIpKQorCQkJCXsKKworCQkJCQkvKgorCQkJ CQkgKiBSZWplY3QgYSBtYXRjaCBpZiB0aGUgZ3JvdXBpbmcgY29sbGF0aW9uIGRvZXMgbm90IG1h dGNoCisJCQkJCSAqIHRoZSBwYXJ0aXRpb25pbmcgY29sbGF0aW9uLgorCQkJCQkgKi8KKwkJCQkJ aWYgKE9pZElzVmFsaWQocGFydGNvbGwpICYmIE9pZElzVmFsaWQoZ3JvdXBjb2xsKSAmJgorCQkJ CQkJcGFydGNvbGwgIT0gZ3JvdXBjb2xsKQorCQkJCQl7CisJCQkJCQkqY29sbGF0aW9uX2luY29t cGF0aWJsZSA9IHRydWU7CisJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCX0KKworCQkJCQlmb3Vu ZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KKworCQkJaWYgKGZvdW5kKQorCQkJ CWJyZWFrOwogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxh dGUuaWN1LnV0Zjgub3V0CmluZGV4IGZhYTM3NmUwNjAuLjFlYzlhMjU0OGIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMjA1NCw2ICsy MDU0LDEyMCBAQCBTRUxFQ1QgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QzM18wKSA8PiAoU0VM RUNUIGNvdW50KCopIEZST00gdGVzdDMzXzEpOwogIHQKICgxIHJvdykKIAorLS0KKy0tIEJ1ZyAj MTg1NjgKKy0tCistLSBQYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSAoZnVsbCBvciBwYXJ0aWFsKSBz aG91bGQgbm90IGJlIHVzZWQgd2hlbiBhCistLSBwYXJ0aXRpb24ga2V5J3MgY29sbGF0aW9uIGRv ZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aGUgR1JPVVAgQlkgY29sdW1uIGl0IGlzCistLSBtYXRjaGVk IHdpdGguCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOworU0VUIGVu YWJsZV9pbmNyZW1lbnRhbF9zb3J0IFRPIG9mZjsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjMgKGEg dGV4dCwgYyB0ZXh0IGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIExJU1Qo YyBjb2xsYXRlICJDIik7CitDUkVBVEUgVEFCTEUgcGFnZ190YWIzX3AxIFBBUlRJVElPTiBPRiBw YWdnX3RhYjMgRk9SIFZBTFVFUyBJTiAoJ2EnLCAnYicpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFi M19wMiBQQVJUSVRJT04gT0YgcGFnZ190YWIzIEZPUiBWQUxVRVMgSU4gKCdCJywgJ0EnKTsKK0lO U0VSVCBJTlRPIHBhZ2dfdGFiMyBTRUxFQ1QgaSAlIDQgKyAxLCBzdWJzdHIoJ2FiQUInLCAoaSAl IDQpICsgMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDExKSBpOworQU5BTFlaRSBwYWdn X3RhYjM7CitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlIFRPIGZhbHNlOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVwcGVyKGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZl KSwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRlIGNhc2VfaW5zZW5z aXRpdmUgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiAodXBwZXIocGFn Z190YWIzLmMpKSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUKKyAgIC0+ICBIYXNoQWdncmVnYXRl CisgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiMy5jCisgICAgICAgICAtPiAgQXBwZW5kCisg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHBhZ2dfdGFiM18xCisg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHBhZ2dfdGFiM18yCiso NyByb3dzKQorCitTRUxFQ1QgdXBwZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3Vu dChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBP UkRFUiBCWSAxOworIHVwcGVyIHwgY291bnQgCistLS0tLS0tKy0tLS0tLS0KKyBBICAgICB8ICAg ICA2CisgQiAgICAgfCAgICAgNgorKDIgcm93cykKKworLS0gTm8gcGFydGl0aW9ud2lzZSBhZ2dy ZWdhdGlvbiBhbGxvd2VkIQorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSBUTyB0 cnVlOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVwcGVyKGMgY29sbGF0ZSBjYXNlX2lu c2Vuc2l0aXZlKSwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRlIGNh c2VfaW5zZW5zaXRpdmUgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiAo dXBwZXIocGFnZ190YWIzLmMpKSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUKKyAgIC0+ICBIYXNo QWdncmVnYXRlCisgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiMy5jCisgICAgICAgICAtPiAg QXBwZW5kCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHBhZ2df dGFiM18xCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHBhZ2df dGFiM18yCisoNyByb3dzKQorCitTRUxFQ1QgdXBwZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRp dmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNl bnNpdGl2ZSBPUkRFUiBCWSAxOworIHVwcGVyIHwgY291bnQgCistLS0tLS0tKy0tLS0tLS0KKyBB ICAgICB8ICAgICA2CisgQiAgICAgfCAgICAgNgorKDIgcm93cykKKworLS0gT0sgdG8gdXNlIGZ1 bGwgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGUgYWZ0ZXIgY2hhbmdpbmcgdGhlIEdST1VQIEJZIGNv bHVtbidzCistLSBjb2xsYXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgcGFydGl0 aW9uIGtleS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjIGNvbGxhdGUgIkMiLCBjb3Vu dChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgIkMiIE9SREVSIEJZIDE7Cisg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTb3J0CisgICBTb3J0IEtleTogKChwYWdnX3RhYjMuYyk6OnRleHQpIENPTExBVEUgIkMiCisg ICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg R3JvdXAgS2V5OiAocGFnZ190YWIzLmMpOjp0ZXh0CisgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcGFnZ190YWIzX3AyIHBhZ2dfdGFiMworICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogKHBhZ2dfdGFiM18xLmMpOjp0ZXh0CisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHBhZ2dfdGFiM18xCisoOSByb3dz KQorCitTRUxFQ1QgYyBjb2xsYXRlICJDIiwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JPVVAg QlkgYyBjb2xsYXRlICJDIiBPUkRFUiBCWSAxOworIGMgfCBjb3VudCAKKy0tLSstLS0tLS0tCisg QSB8ICAgICAzCisgQiB8ICAgICAzCisgYSB8ICAgICAzCisgYiB8ICAgICAzCisoNCByb3dzKQor CistLSBBbHNvIE9LIHRvIHVzZSBwYXJ0aWFsIHBhcnRpdGlvbndpc2UgYWdncmVnYXRlIHdoZW4g Z3JvdXBpbmcgY29sdW1ucyBkbyBub3QKKy0tIGluY2x1ZGUgcGFydGl0aW9uIGtleSBjb2x1bW5z CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgYSwgY291bnQoYyBjb2xsYXRlICJDIikgRlJP TSBwYWdnX3RhYjMgR1JPVVAgQlkgYSBPUkRFUiBCWSAxOworICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxp emUgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogcGFnZ190YWIzLmEKKyAgIC0+ICBTb3J0 CisgICAgICAgICBTb3J0IEtleTogcGFnZ190YWIzLmEKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogcGFnZ190YWIzLmEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYjNfcDIgcGFnZ190YWIzCisgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFi M18xLmEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEg cGFnZ190YWIzXzEKKygxMSByb3dzKQorCitTRUxFQ1QgYSwgY291bnQoYyBjb2xsYXRlICJDIikg RlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYSBPUkRFUiBCWSAxOworIGEgfCBjb3VudCAKKy0tLSst LS0tLS0tCisgMSB8ICAgICAzCisgMiB8ICAgICAzCisgMyB8ICAgICAzCisgNCB8ICAgICAzCiso NCByb3dzKQorCitEUk9QIFRBQkxFIHBhZ2dfdGFiMzsKK1JFU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2FnZ3JlZ2F0ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitS RVNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydDsKIC0tIGNsZWFudXAKIFJFU0VUIHNlYXJjaF9w YXRoOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgVE8gd2FybmluZzsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggODBmMjhhOTdkNy4uNzkyYmM5NDM2MSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTc5Niw2ICs3 OTYsNDkgQEAgSU5TRVJUIElOVE8gdGVzdDMzIFZBTFVFUyAoMiwgJ0RFRicpOwogLS0gdGhleSBl bmQgdXAgaW4gdGhlIHNhbWUgcGFydGl0aW9uIChidXQgaXQncyBwbGF0Zm9ybS1kZXBlbmRlbnQg d2hpY2ggb25lKQogU0VMRUNUIChTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MzNfMCkgPD4gKFNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3QzM18xKTsKIAorLS0KKy0tIEJ1ZyAjMTg1NjgKKy0tCist LSBQYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSAoZnVsbCBvciBwYXJ0aWFsKSBzaG91bGQgbm90IGJl IHVzZWQgd2hlbiBhCistLSBwYXJ0aXRpb24ga2V5J3MgY29sbGF0aW9uIGRvZXNuJ3QgbWF0Y2gg dGhhdCBvZiB0aGUgR1JPVVAgQlkgY29sdW1uIGl0IGlzCistLSBtYXRjaGVkIHdpdGguCitTRVQg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOworU0VUIGVuYWJsZV9pbmNyZW1l bnRhbF9zb3J0IFRPIG9mZjsKKworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiMyAoYSB0ZXh0LCBjIHRl eHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVChjIGNvbGxhdGUg IkMiKTsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjNfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiMyBG T1IgVkFMVUVTIElOICgnYScsICdiJyk7CitDUkVBVEUgVEFCTEUgcGFnZ190YWIzX3AyIFBBUlRJ VElPTiBPRiBwYWdnX3RhYjMgRk9SIFZBTFVFUyBJTiAoJ0InLCAnQScpOworSU5TRVJUIElOVE8g cGFnZ190YWIzIFNFTEVDVCBpICUgNCArIDEsIHN1YnN0cignYWJBQicsIChpICUgNCkgKyAxICwg MSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMTEpIGk7CitBTkFMWVpFIHBhZ2dfdGFiMzsKKwor U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSBUTyBmYWxzZTsKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1cHBlcihjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSksIGNvdW50 KGMpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlIE9S REVSIEJZIDE7CitTRUxFQ1QgdXBwZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3Vu dChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBP UkRFUiBCWSAxOworCistLSBObyBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uIGFsbG93ZWQhCitT RVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlIFRPIHRydWU7CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgdXBwZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3VudChj KSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRF UiBCWSAxOworU0VMRUNUIHVwcGVyKGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlKSwgY291bnQo YykgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUgT1JE RVIgQlkgMTsKKworLS0gT0sgdG8gdXNlIGZ1bGwgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGUgYWZ0 ZXIgY2hhbmdpbmcgdGhlIEdST1VQIEJZIGNvbHVtbidzCistLSBjb2xsYXRpb24gdG8gYmUgdGhl IHNhbWUgYXMgdGhhdCBvZiB0aGUgcGFydGl0aW9uIGtleS4KK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBjIGNvbGxhdGUgIkMiLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBj IGNvbGxhdGUgIkMiIE9SREVSIEJZIDE7CitTRUxFQ1QgYyBjb2xsYXRlICJDIiwgY291bnQoYykg RlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYyBjb2xsYXRlICJDIiBPUkRFUiBCWSAxOworCistLSBB bHNvIE9LIHRvIHVzZSBwYXJ0aWFsIHBhcnRpdGlvbndpc2UgYWdncmVnYXRlIHdoZW4gZ3JvdXBp bmcgY29sdW1ucyBkbyBub3QKKy0tIGluY2x1ZGUgcGFydGl0aW9uIGtleSBjb2x1bW5zCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgYSwgY291bnQoYyBjb2xsYXRlICJDIikgRlJPTSBwYWdn X3RhYjMgR1JPVVAgQlkgYSBPUkRFUiBCWSAxOworU0VMRUNUIGEsIGNvdW50KGMgY29sbGF0ZSAi QyIpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGEgT1JERVIgQlkgMTsKKworRFJPUCBUQUJMRSBw YWdnX3RhYjM7CisKK1JFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsKK1JFU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBlbmFibGVfaW5jcmVtZW50 YWxfc29ydDsKIAogLS0gY2xlYW51cAogUkVTRVQgc2VhcmNoX3BhdGg7Ci0tIAoyLjQzLjAKCg== --0000000000001e536b0625d71d97--