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 1t8EPm-002rEb-VW for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Nov 2024 07:55:50 +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 1t8EPj-00AckD-Jc for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Nov 2024 07:55:48 +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 1t8EPj-00Acil-4y for pgsql-hackers@lists.postgresql.org; Tue, 05 Nov 2024 07:55:47 +0000 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t8EPf-000HXO-GP for pgsql-hackers@lists.postgresql.org; Tue, 05 Nov 2024 07:55:47 +0000 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-71e592d7f6eso3989452b3a.3 for ; Mon, 04 Nov 2024 23:55:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730793342; x=1731398142; 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=xtqGVt2+0R6ndzDBQlQhB2gQeXIOqXk6tXBokF995kQ=; b=nbimjnqg8scpHVA5wgjYO+ekMaSwcxIDOTArEydpeZe/jm9Oet+BvSQvHRXHQpEVbi bJ3ysD3oht7QhYETKnixh5sMQHbLD4SPywD+UiIgCis8btpALSGqbWHnGiKkGhTijU08 v1Iu/mTP2sLW4RNehkdSeLQsm56IMto+aXAJ5vfrfESEEbD0uynbIcM9aBOVD2OsbjWc rgM6GTF3d+ZVBkN9W4aNmcu0WUvxhO7nU+3wxeAOcAaY6V6OfkjIUW3H+9di0ecKq2Z+ TdErYt4L3N7K55RUPwnIc7Rw95ZtZAtPb522KN2rZE0lzdQpJgSe0/XmgFakpDcSC7OT sRjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730793342; x=1731398142; 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=xtqGVt2+0R6ndzDBQlQhB2gQeXIOqXk6tXBokF995kQ=; b=P/U7cAHsbRTjf5FX69yHAs0LvIaTXA3BjivJXbmhP5xzx9JUq9A49+K3QGHhWzNEdN KC4ObS7gjOxnpVbDoG2C8Idf805+iYwKEJ8nkYW628cSedXGK0rguUARw10oooGby1CA vXA4hDAn/BNXvNXxr7Mm1xKfGhG220xxFlFmU/N9AqusHPsXlLqd4vTTZGnr6AJIoFou LDCV+ba268+DH0CxM0nZJPqNwUxZXg4FTCWp58cFbAymMpZy2FkGwEw2xEXhHbCrbG2i L7JB35gfMMigPyVEVXXc/zV1LtTpp0RM0k9rwZbImuWkkkt8rUlJjC8B0jHQsL6hupEx R5+Q== X-Forwarded-Encrypted: i=1; AJvYcCWI4gLk8HrjA7cHtoTwZWFC4RObvKB1FH5UKv3P8JOQ6vIvSHrlWFlf6tTS0ZRLh90qUBcu0gQL/dYTIjwg@lists.postgresql.org X-Gm-Message-State: AOJu0Ywy7YOxOKO0mug3QZOfueSCtoy78/7YvB27gEYmWCc7nNAaWFP7 0ib2uRxVxfGE9p+Pl3YjZYWaSTWh0hBMS/n7+/DRXT29pmKfvYRwy5oYURWk/jZWuR968j84EHl d1IuzX4CL5AyW13xPvaEPTYlmwlQ= X-Google-Smtp-Source: AGHT+IHkcapbSmFa4UEMRzuTWZzhXUxoEMXw9VUd7KNNBtCcdLlxONhLp9M1aDZRisBsDz7ikxa46+CMvUoSXbSGEuM= X-Received: by 2002:a05:6a20:840f:b0:1db:e871:1a29 with SMTP id adf61e73a8af0-1dbe8711b20mr6103709637.0.1730793342349; Mon, 04 Nov 2024 23:55:42 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Tue, 5 Nov 2024 16:55:25 +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="0000000000005a1c2c062625ba5f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005a1c2c062625ba5f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Nov 4, 2024 at 12:28=E2=80=AFPM jian he wrote: > > hi. > about v5. > if (exprs_known_equal(root, expr1, expr2, btree_opfamily)= ) > { > /* > * Ensure that the collation of the expression matche= s > * that of the partition key. Checking just one colla= tion > * (partcoll1 and exprcoll1) suffices because partcol= l1 > * and partcoll2, as well as exprcoll1 and exprcoll2, > * should be identical. This holds because both rel1 = and > * rel2 use the same PartitionScheme and expr1 and ex= pr2 > * are equal. > */ > if (partcoll1 =3D=3D exprcoll1) > { > Oid partcoll2 PG_USED_FOR_ASSERTS_ONLY= =3D > rel1->part_scheme->partcollation[ipk]; > Oid exprcoll2 PG_USED_FOR_ASSERTS_ONLY= =3D > exprCollation(expr2); > Assert(partcoll2 =3D=3D exprcoll2); > pk_known_equal[ipk] =3D true; > if (OidIsValid(exprcoll1)) > elog(INFO, "this path called %s:%d", > __FILE_NAME__, __LINE__); > break; > } > } > > tests still passed, which means that we didn't have text data type as > partition key related tests for partition-wise join. > Do we need to add one? > > +-- Another case where the partition keys are matched via equivalence cla= ss, > +-- not a join restriction clause. > + > +-- OK when the join clause uses the same collation as the partition key > +EXPLAIN (COSTS OFF) > +SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab4 t2 ON t1.c > =3D t2.c AND t1.c =3D t2.b COLLATE "C" GROUP BY 1 ORDER BY 1; > > i suppose, you comments is saying that in have_partkey_equi_join > the above query will return true via > `if (exprs_known_equal(root, expr1, expr2, btree_opfamily))` > But " t1.c =3D t2.b COLLATE "C" already in "restrictlist". > In have_partkey_equi_join loop through "restrictlist" would return > true for above query, won't reach exprs_known_equal. > > Other than the comments that confused me, the test and the results > look fine to me. Thanks, yes, a test case that exercises the partcoll1 =3D=3D exprcoll1 code was missing. > some column collation is case_insensitive, ORDER BY that column would > render the output not deterministic. > like 'A' before 'a' and 'a' before 'A' are both correct. > it may cause regress tests to fail. > So I did some minor refactoring to make the "ORDER BY" deterministic. Thanks, merged. --=20 Thanks, Amit Langote --0000000000005a1c2c062625ba5f Content-Type: application/octet-stream; name="v6-0002-Disallow-partitionwise-join-when-collation-doesn-.patch" Content-Disposition: attachment; filename="v6-0002-Disallow-partitionwise-join-when-collation-doesn-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m345nld91 RnJvbSAzNjI3NGQ1NGEyMzY3ZWYyYzI0OWFjNGM0ZDI3NjIzODdkMzYxNzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBOb3YgMjAyNCAxNTozMjozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjYg Mi8yXSBEaXNhbGxvdyBwYXJ0aXRpb253aXNlIGpvaW4gd2hlbiBjb2xsYXRpb24gZG9lc24ndAog bWF0Y2gKCkluc2lzdCB0aGF0IHRoZSBjb2xsYXRpb24gdXNlZCBmb3Igam9pbmluZyBtYXRjaGVz IGV4YWN0bHkgd2l0aCB0aGUKY29sbGF0aW9uIHVzZWQgZm9yIHBhcnRpdGlvbmluZyB0byBhbGxv dyB1c2luZyBwYXJ0aXRpb253aXNlIGpvaW4uCgpSZXBvcnRlZC1ieTogVGVuZGVyIFdhbmcgPHRu ZHJ3YW5nQGdtYWlsLmNvbT4KQXV0aG9yOiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFRlbmRlciBXYW5nIDx0bmRyd2FuZ0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBK dW53YW5nIFpoYW8gPHpoandwa3VAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tLzE4NTY4LTJhOWFmYjZiOWY3ZTZlZDNAcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS90ZW5jZW50XzlEOTEwM0NEQTQyMEMwNzc2ODM0OUNDMURGRjg4 NDY1RjkwQUBxcS5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhld1hObm9f SEtpUTZQcXlMWWZ1cUR0d3A3S0tIWmlIMUo3UHF5ejBucitQUzJEd2dAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAgfCAgMjgg KystCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAgICAgfCAyMDkg KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4 LnNxbCAgICAgfCAgNTggKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjkzIGluc2VydGlvbnMoKyks 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 ZGV4IGE0Y2Q5ZWEwODUuLmUwMjVjMjUxOGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMjE2NCw3ICsyMTY0LDIxNiBAQCBTRUxFQ1Qg YSBjb2xsYXRlICJDIiwgY291bnQoYyBjb2xsYXRlICJDIikgRlJPTSBwYWdnX3RhYjMgR1JPVVAg QlkgYSBjb2xsYXRlICJDIgogIDQgfCAgICAgMwogKDQgcm93cykKIAorLS0gUGFydGl0aW9ud2lz ZSBqb2luIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0b28gd2hlbiB0aGUgY29sbGF0aW9uIHVzZWQg YnkgdGhlCistLSBqb2luIGtleXMgZG9lc24ndCBtYXRjaCB0aGUgcGFydGl0aW9uIGtleSBjb2xs YXRpb24uCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyBmYWxzZTsKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBK T0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZIHQxLmMg Q09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgU29ydCBLZXk6IHQxLmMgQ09MTEFU RSAiQyIKKyAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICBHcm91cCBLZXk6IHQxLmMKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmMgPSB0 Mi5jKQorICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQxXzIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDJfMgorKDEzIHJvd3MpCisKK1NF TEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0 MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZIHQxLmMgQ09MTEFURSAiQyI7Cisg YyB8IGNvdW50IAorLS0tKy0tLS0tLS0KKyBBIHwgICAgMzYKKyBCIHwgICAgMzYKKygyIHJvd3Mp CisKK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBw YWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExB VEUgIkMiOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiB0MS5jIENPTExBVEUgIkMi CisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiB0MS5jCisgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5jID0gdDIuYykK KyAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYjNfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHBhZ2dfdGFiM19wMSB0MV8yCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQyXzIKKygxMyByb3dzKQorCitTRUxFQ1Qg dDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04g dDEuYyA9IHQyLmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworIGMgfCBj b3VudCAKKy0tLSstLS0tLS0tCisgQSB8ICAgIDM2CisgQiB8ICAgIDM2CisoMiByb3dzKQorCist LSBPSyB3aGVuIHRoZSBqb2luIGNsYXVzZSB1c2VzIHRoZSBzYW1lIGNvbGxhdGlvbiBhcyB0aGUg cGFydGl0aW9uIGtleS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5jIENPTExBVEUg IkMiLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0 MS5jID0gdDIuYyBDT0xMQVRFICJDIiBHUk9VUCBCWSB0MS5jIENPTExBVEUgIkMiIE9SREVSIEJZ IHQxLmMgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQg S2V5OiAoKHQxLmMpOjp0ZXh0KSBDT0xMQVRFICJDIgorICAgLT4gIEFwcGVuZAorICAgICAgICAg LT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogKHQxLmMpOjp0ZXh0 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICgodDEuYyk6OnRleHQgPSAodDIuYyk6OnRleHQpCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQxCisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2df dGFiM19wMiB0MgorICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdy b3VwIEtleTogKHQxXzEuYyk6OnRleHQKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCh0MV8xLmMpOjp0ZXh0ID0gKHQyXzEuYyk6 OnRleHQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3Ax IHQxXzEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQyXzEKKygxNyByb3dzKQorCitT RUxFQ1QgdDEuYyBDT0xMQVRFICJDIiwgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9J TiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgQ09MTEFURSAiQyIgR1JPVVAgQlkgdDEuYyBD T0xMQVRFICJDIiBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworIGMgfCBjb3VudCAKKy0tLSst LS0tLS0tCisgQSB8ICAgICA5CisgQiB8ICAgICA5CisgYSB8ICAgICA5CisgYiB8ICAgICA5Ciso NCByb3dzKQorCistLSBGZXcgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGpvaW5lZCBwYXJ0aXRpb24g a2V5cyBhcmUgbWF0Y2hlZCB2aWEgZXF1aXZhbGVuY2UKKy0tIGNsYXNzLCBub3QgYSBqb2luIHJl c3RyaWN0aW9uIGNsYXVzZS4KKy0tIENvbGxhdGlvbnMgb2Ygam9pbmVkIGNvbHVtbnMgbWF0Y2gs IGJ1dCB0aGUgcGFydGl0aW9uIGtleXMgY29sbGF0aW9uIGlzIGRpZmZlcmVudAorQ1JFQVRFIFRB QkxFIHBhZ2dfdGFiNCAoYyB0ZXh0IGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSwgYiB0ZXh0IGNv bGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIExJU1QgKGIgY29sbGF0ZSAiQyIp OworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNF9wMSBQQVJUSVRJT04gT0YgcGFnZ190YWI0IEZPUiBW QUxVRVMgSU4gKCdhJywgJ2InKTsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjRfcDIgUEFSVElUSU9O IE9GIHBhZ2dfdGFiNCBGT1IgVkFMVUVTIElOICgnQicsICdBJyk7CitJTlNFUlQgSU5UTyBwYWdn X3RhYjQgKGIsIGMpIFNFTEVDVCBzdWJzdHIoJ2FiQUInLCAoaSAlIDQpICsgMSAsIDEpLCBzdWJz dHIoJ2FiQUInLCAoaSAlIDIpICsgMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDExKSBp OworQU5BTFlaRSBwYWdnX3RhYjQ7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYywg Y291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEuYyA9 IHQyLmMgQU5EIHQxLmMgPSB0Mi5iIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJD IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBTb3J0IEtleTogdDEuYyBDT0xMQVRFICJDIgorICAg LT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIEdyb3VwIEtleTogdDEuYworICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYyA9IHQyLmMpCisgICAg ICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcGFnZ190YWIzX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjNfcDEgdDFfMgorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYjRfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRmlsdGVyOiAoYyA9IGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcGFnZ190YWI0X3AxIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZpbHRlcjogKGMgPSBiKQorKDE1IHJvd3MpCisKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBG Uk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiNCB0MiBPTiB0MS5jID0gdDIuYyBBTkQgdDEu YyA9IHQyLmIgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworIGMgfCBjb3Vu dCAKKy0tLSstLS0tLS0tCisgQSB8ICAgIDM2CisgQiB8ICAgIDM2CisoMiByb3dzKQorCistLSBP SyB3aGVuIHRoZSBwYXJ0aXRpb24ga2V5IGNvbGxhdGlvbiBpcyBzYW1lIGFzIHRoYXQgb2YgdGhl IGpvaW4gY29sdW1ucworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNSAoYyB0ZXh0IGNvbGxhdGUgY2Fz ZV9pbnNlbnNpdGl2ZSwgYiB0ZXh0IGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9O IEJZIExJU1QgKGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBUQUJMRSBwYWdn X3RhYjVfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiNSBGT1IgVkFMVUVTIElOICgnYScsICdiJyk7 CitDUkVBVEUgVEFCTEUgcGFnZ190YWI1X3AyIFBBUlRJVElPTiBPRiBwYWdnX3RhYjUgRk9SIFZB TFVFUyBJTiAoJ2MnLCAnZCcpOworSU5TRVJUIElOVE8gcGFnZ190YWI1IChiLCBjKSBTRUxFQ1Qg c3Vic3RyKCdhYkFCJywgKGkgJSA0KSArIDEgLCAxKSwgc3Vic3RyKCdhYkFCJywgKGkgJSAyKSAr IDEgLCAxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCA1KSBpOworSU5TRVJUIElOVE8gcGFnZ190 YWI1IChiLCBjKSBTRUxFQ1Qgc3Vic3RyKCdjZENEJywgKGkgJSA0KSArIDEgLCAxKSwgc3Vic3Ry KCdjZENEJywgKGkgJSAyKSArIDEgLCAxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCA1KSBpOwor QU5BTFlaRSBwYWdnX3RhYjU7CitDUkVBVEUgVEFCTEUgcGFnZ190YWI2IChjIHRleHQgY29sbGF0 ZSBjYXNlX2luc2Vuc2l0aXZlLCBiIHRleHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJU SVRJT04gQlkgTElTVCAoYiBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpOworQ1JFQVRFIFRBQkxF IHBhZ2dfdGFiNl9wMSBQQVJUSVRJT04gT0YgcGFnZ190YWI2IEZPUiBWQUxVRVMgSU4gKCdhJywg J2InKTsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjZfcDIgUEFSVElUSU9OIE9GIHBhZ2dfdGFiNiBG T1IgVkFMVUVTIElOICgnYycsICdkJyk7CitJTlNFUlQgSU5UTyBwYWdnX3RhYjYgKGIsIGMpIFNF TEVDVCBzdWJzdHIoJ2FiQUInLCAoaSAlIDQpICsgMSAsIDEpLCBzdWJzdHIoJ2FiQUInLCAoaSAl IDIpICsgMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDUpIGk7CitJTlNFUlQgSU5UTyBw YWdnX3RhYjYgKGIsIGMpIFNFTEVDVCBzdWJzdHIoJ2NkQ0QnLCAoaSAlIDQpICsgMSAsIDEpLCBz dWJzdHIoJ2NkQ0QnLCAoaSAlIDIpICsgMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDUp IGk7CitBTkFMWVpFIHBhZ2dfdGFiNTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5j LCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiNSB0MSBKT0lOIHBhZ2dfdGFiNiB0MiBPTiB0MS5j ID0gdDIuYyBBTkQgdDEuYyA9IHQyLmIgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUg IkMiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiB0MS5jIENP TExBVEUgIkMiCisgICAtPiAgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIEdyb3VwIEtleTogdDEu YworICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MS5jIENPTExB VEUgY2FzZV9pbnNlbnNpdGl2ZQorICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFz aCBDb25kOiAodDJfMS5jID0gdDFfMS5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiNl9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGaWx0ZXI6IChjID0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWI1X3AxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIuYyA9IHQxXzIuYykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjZfcDIgdDJfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYyA9IGIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiNV9wMiB0MV8yCisoMTkgcm93cykKKworU0VM RUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWI1IHQxIEpPSU4gcGFnZ190YWI2IHQy IE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5jID0gdDIuYiBHUk9VUCBCWSAxIE9SREVSIEJZIHQxLmMg Q09MTEFURSAiQyI7CisgYyB8IGNvdW50IAorLS0tKy0tLS0tLS0KKyBhIHwgICAgIDkKKyBiIHwg ICAgIDkKKyBjIHwgICAgIDkKKyBkIHwgICAgIDkKKyg0IHJvd3MpCisKK1NFVCBlbmFibGVfcGFy dGl0aW9ud2lzZV9qb2luIFRPIGZhbHNlOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWI1IHQxIEpPSU4gcGFnZ190YWI2IHQyIE9OIHQx LmMgPSB0Mi5jIEFORCB0MS5jID0gdDIuYiBHUk9VUCBCWSAxIE9SREVSIEJZIHQxLmMgQ09MTEFU RSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSAiQyIK KyAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiB0MS5jCisgICAgICAg ICAtPiAgTWVyZ2UgSm9pbgorICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQyLmMgPSB0MS5j KQorICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiB0Mi5jIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZQorICAgICAgICAgICAgICAgICAgICAgLT4g IEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2df dGFiNl9wMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChj ID0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjZfcDIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYyA9 IGIpCisgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgU29ydCBL ZXk6IHQxLmMgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlCisgICAgICAgICAgICAgICAgICAgICAt PiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWI1X3AxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjVfcDIgdDFfMgorKDE4IHJvd3MpCisKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5j KSBGUk9NIHBhZ2dfdGFiNSB0MSBKT0lOIHBhZ2dfdGFiNiB0MiBPTiB0MS5jID0gdDIuYyBBTkQg dDEuYyA9IHQyLmIgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworIGMgfCBj b3VudCAKKy0tLSstLS0tLS0tCisgYSB8ICAgICA5CisgYiB8ICAgICA5CisgYyB8ICAgICA5Cisg ZCB8ICAgICA5CisoNCByb3dzKQorCiBEUk9QIFRBQkxFIHBhZ2dfdGFiMzsKK0RST1AgVEFCTEUg cGFnZ190YWI0OworRFJPUCBUQUJMRSBwYWdnX3RhYjU7CitEUk9QIFRBQkxFIHBhZ2dfdGFiNjsK IFJFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsKIFJFU0VUIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXI7CiBSRVNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggZjUyM2RkNzNiZS4u YmFkOTJiMmFiNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3Uu dXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwK QEAgLTgzNCw3ICs4MzQsNjUgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGEgY29sbGF0 ZSAiQyIsIGNvdW50KGMgY29sbGF0ZSAiQyIpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGEgY29s bGF0ZSAiQyIgT1JERVIgQlkgMTsKIFNFTEVDVCBhIGNvbGxhdGUgIkMiLCBjb3VudChjIGNvbGxh dGUgIkMiKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBhIGNvbGxhdGUgIkMiIE9SREVSIEJZIDE7 CiAKKy0tIFBhcnRpdGlvbndpc2Ugam9pbiBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG9vIHdoZW4g dGhlIGNvbGxhdGlvbiB1c2VkIGJ5IHRoZQorLS0gam9pbiBrZXlzIGRvZXNuJ3QgbWF0Y2ggdGhl IHBhcnRpdGlvbiBrZXkgY29sbGF0aW9uLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4g VE8gZmFsc2U7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYywgY291bnQodDIuYykg RlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVVAg QlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMp IEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdST1VQ IEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKKworU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2pvaW4gVE8gdHJ1ZTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5jLCBjb3Vu dCh0Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIu YyBHUk9VUCBCWSAxIE9SREVSIEJZIHQxLmMgQ09MTEFURSAiQyI7CitTRUxFQ1QgdDEuYywgY291 bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQy LmMgR1JPVVAgQlkgMSBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworCistLSBPSyB3aGVuIHRo ZSBqb2luIGNsYXVzZSB1c2VzIHRoZSBzYW1lIGNvbGxhdGlvbiBhcyB0aGUgcGFydGl0aW9uIGtl eS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0MS5jIENPTExBVEUgIkMiLCBjb3VudCh0 Mi5jKSBGUk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBD T0xMQVRFICJDIiBHUk9VUCBCWSB0MS5jIENPTExBVEUgIkMiIE9SREVSIEJZIHQxLmMgQ09MTEFU RSAiQyI7CitTRUxFQ1QgdDEuYyBDT0xMQVRFICJDIiwgY291bnQodDIuYykgRlJPTSBwYWdnX3Rh YjMgdDEgSk9JTiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgQ09MTEFURSAiQyIgR1JPVVAg QlkgdDEuYyBDT0xMQVRFICJDIiBPUkRFUiBCWSB0MS5jIENPTExBVEUgIkMiOworCistLSBGZXcg b3RoZXIgY2FzZXMgd2hlcmUgdGhlIGpvaW5lZCBwYXJ0aXRpb24ga2V5cyBhcmUgbWF0Y2hlZCB2 aWEgZXF1aXZhbGVuY2UKKy0tIGNsYXNzLCBub3QgYSBqb2luIHJlc3RyaWN0aW9uIGNsYXVzZS4K KworLS0gQ29sbGF0aW9ucyBvZiBqb2luZWQgY29sdW1ucyBtYXRjaCwgYnV0IHRoZSBwYXJ0aXRp b24ga2V5cyBjb2xsYXRpb24gaXMgZGlmZmVyZW50CitDUkVBVEUgVEFCTEUgcGFnZ190YWI0IChj IHRleHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlLCBiIHRleHQgY29sbGF0ZSBjYXNlX2luc2Vu c2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVCAoYiBjb2xsYXRlICJDIik7CitDUkVBVEUgVEFCTEUg cGFnZ190YWI0X3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYjQgRk9SIFZBTFVFUyBJTiAoJ2EnLCAn YicpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNF9wMiBQQVJUSVRJT04gT0YgcGFnZ190YWI0IEZP UiBWQUxVRVMgSU4gKCdCJywgJ0EnKTsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiNCAoYiwgYykgU0VM RUNUIHN1YnN0cignYWJBQicsIChpICUgNCkgKyAxICwgMSksIHN1YnN0cignYWJBQicsIChpICUg MikgKyAxICwgMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMTEpIGk7CitBTkFMWVpFIHBhZ2df dGFiNDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZS T00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWI0IHQyIE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5j ID0gdDIuYiBHUk9VUCBCWSAxIE9SREVSIEJZIHQxLmMgQ09MTEFURSAiQyI7CitTRUxFQ1QgdDEu YywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjQgdDIgT04gdDEu YyA9IHQyLmMgQU5EIHQxLmMgPSB0Mi5iIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRF ICJDIjsKKworLS0gT0sgd2hlbiB0aGUgcGFydGl0aW9uIGtleSBjb2xsYXRpb24gaXMgc2FtZSBh cyB0aGF0IG9mIHRoZSBqb2luIGNvbHVtbnMKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjUgKGMgdGV4 dCBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUsIGIgdGV4dCBjb2xsYXRlIGNhc2VfaW5zZW5zaXRp dmUpIFBBUlRJVElPTiBCWSBMSVNUIChjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSk7CitDUkVB VEUgVEFCTEUgcGFnZ190YWI1X3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYjUgRk9SIFZBTFVFUyBJ TiAoJ2EnLCAnYicpOworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNV9wMiBQQVJUSVRJT04gT0YgcGFn Z190YWI1IEZPUiBWQUxVRVMgSU4gKCdjJywgJ2QnKTsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiNSAo YiwgYykgU0VMRUNUIHN1YnN0cignYWJBQicsIChpICUgNCkgKyAxICwgMSksIHN1YnN0cignYWJB QicsIChpICUgMikgKyAxICwgMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgNSkgaTsKK0lOU0VS VCBJTlRPIHBhZ2dfdGFiNSAoYiwgYykgU0VMRUNUIHN1YnN0cignY2RDRCcsIChpICUgNCkgKyAx ICwgMSksIHN1YnN0cignY2RDRCcsIChpICUgMikgKyAxICwgMSkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMCwgNSkgaTsKK0FOQUxZWkUgcGFnZ190YWI1OworCitDUkVBVEUgVEFCTEUgcGFnZ190YWI2 IChjIHRleHQgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlLCBiIHRleHQgY29sbGF0ZSBjYXNlX2lu c2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVCAoYiBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUp OworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiNl9wMSBQQVJUSVRJT04gT0YgcGFnZ190YWI2IEZPUiBW QUxVRVMgSU4gKCdhJywgJ2InKTsKK0NSRUFURSBUQUJMRSBwYWdnX3RhYjZfcDIgUEFSVElUSU9O IE9GIHBhZ2dfdGFiNiBGT1IgVkFMVUVTIElOICgnYycsICdkJyk7CitJTlNFUlQgSU5UTyBwYWdn X3RhYjYgKGIsIGMpIFNFTEVDVCBzdWJzdHIoJ2FiQUInLCAoaSAlIDQpICsgMSAsIDEpLCBzdWJz dHIoJ2FiQUInLCAoaSAlIDIpICsgMSAsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDUpIGk7 CitJTlNFUlQgSU5UTyBwYWdnX3RhYjYgKGIsIGMpIFNFTEVDVCBzdWJzdHIoJ2NkQ0QnLCAoaSAl IDQpICsgMSAsIDEpLCBzdWJzdHIoJ2NkQ0QnLCAoaSAlIDIpICsgMSAsIDEpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDAsIDUpIGk7CitBTkFMWVpFIHBhZ2dfdGFiNTsKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWI1IHQxIEpPSU4gcGFn Z190YWI2IHQyIE9OIHQxLmMgPSB0Mi5jIEFORCB0MS5jID0gdDIuYiBHUk9VUCBCWSAxIE9SREVS IEJZIHQxLmMgQ09MTEFURSAiQyI7CitTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdn X3RhYjUgdDEgSk9JTiBwYWdnX3RhYjYgdDIgT04gdDEuYyA9IHQyLmMgQU5EIHQxLmMgPSB0Mi5i IEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKKworU0VUIGVuYWJsZV9wYXJ0 aXRpb253aXNlX2pvaW4gVE8gZmFsc2U7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdDEu YywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjUgdDEgSk9JTiBwYWdnX3RhYjYgdDIgT04gdDEu YyA9IHQyLmMgQU5EIHQxLmMgPSB0Mi5iIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRF ICJDIjsKK1NFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFiNSB0MSBKT0lOIHBh Z2dfdGFiNiB0MiBPTiB0MS5jID0gdDIuYyBBTkQgdDEuYyA9IHQyLmIgR1JPVVAgQlkgMSBPUkRF UiBCWSB0MS5jIENPTExBVEUgIkMiOworCiBEUk9QIFRBQkxFIHBhZ2dfdGFiMzsKK0RST1AgVEFC TEUgcGFnZ190YWI0OworRFJPUCBUQUJMRSBwYWdnX3RhYjU7CitEUk9QIFRBQkxFIHBhZ2dfdGFi NjsKIAogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlOwogUkVTRVQgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKLS0gCjIuNDMuMAoK --0000000000005a1c2c062625ba5f Content-Type: application/octet-stream; name="v6-0001-Disallow-partitionwise-grouping-when-collation-do.patch" Content-Disposition: attachment; filename="v6-0001-Disallow-partitionwise-grouping-when-collation-do.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m345nld20 RnJvbSA2ZmE3MTQ0YTkxY2EyMWIwY2E2YmQ2ZmNjMzRhNTdhYjUxNzM1OWQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBOb3YgMjAyNCAxNjoxNTo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjYg 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 dGUuaWN1LnV0Zjgub3V0CmluZGV4IGZhYTM3NmUwNjAuLmE0Y2Q5ZWEwODUgMTAwNjQ0Ci0tLSBh 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 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgYSBjb2xsYXRlICJDIiwgY291bnQoYyBjb2xs YXRlICJDIikgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYSBjb2xsYXRlICJDIiBPUkRFUiBCWSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTog KChwYWdnX3RhYjMuYSk6OnRleHQpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6ICgo cGFnZ190YWIzLmEpOjp0ZXh0KSBDT0xMQVRFICJDIgorICAgICAgICAgLT4gIEFwcGVuZAorICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiAocGFnZ190YWIzLmEpOjp0ZXh0CisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHBhZ2dfdGFiMworICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiAo cGFnZ190YWIzXzEuYSk6OnRleHQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjNfcDEgcGFnZ190YWIzXzEKKygxMSByb3dzKQorCitTRUxFQ1QgYSBjb2xsYXRl ICJDIiwgY291bnQoYyBjb2xsYXRlICJDIikgRlJPTSBwYWdnX3RhYjMgR1JPVVAgQlkgYSBjb2xs YXRlICJDIiBPUkRFUiBCWSAxOworIGEgfCBjb3VudCAKKy0tLSstLS0tLS0tCisgMSB8ICAgICAz CisgMiB8ICAgICAzCisgMyB8ICAgICAzCisgNCB8ICAgICAzCisoNCByb3dzKQorCitEUk9QIFRB QkxFIHBhZ2dfdGFiMzsKK1JFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsKK1JF U0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBlbmFibGVfaW5jcmVt ZW50YWxfc29ydDsKIC0tIGNsZWFudXAKIFJFU0VUIHNlYXJjaF9wYXRoOwogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgVE8gd2FybmluZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3Uu dXRmOC5zcWwKaW5kZXggODBmMjhhOTdkNy4uZjUyM2RkNzNiZSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTc5Niw2ICs3OTYsNDkgQEAgSU5TRVJUIElO VE8gdGVzdDMzIFZBTFVFUyAoMiwgJ0RFRicpOwogLS0gdGhleSBlbmQgdXAgaW4gdGhlIHNhbWUg cGFydGl0aW9uIChidXQgaXQncyBwbGF0Zm9ybS1kZXBlbmRlbnQgd2hpY2ggb25lKQogU0VMRUNU IChTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MzNfMCkgPD4gKFNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3QzM18xKTsKIAorLS0KKy0tIEJ1ZyAjMTg1NjgKKy0tCistLSBQYXJ0aXRpb253aXNlIGFn Z3JlZ2F0ZSAoZnVsbCBvciBwYXJ0aWFsKSBzaG91bGQgbm90IGJlIHVzZWQgd2hlbiBhCistLSBw YXJ0aXRpb24ga2V5J3MgY29sbGF0aW9uIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aGUgR1JPVVAg QlkgY29sdW1uIGl0IGlzCistLSBtYXRjaGVkIHdpdGguCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciBUTyAwOworU0VUIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0IFRPIG9mZjsK KworQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiMyAoYSB0ZXh0LCBjIHRleHQgY29sbGF0ZSBjYXNlX2lu c2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVChjIGNvbGxhdGUgIkMiKTsKK0NSRUFURSBUQUJM RSBwYWdnX3RhYjNfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiMyBGT1IgVkFMVUVTIElOICgnYScs ICdiJyk7CitDUkVBVEUgVEFCTEUgcGFnZ190YWIzX3AyIFBBUlRJVElPTiBPRiBwYWdnX3RhYjMg Rk9SIFZBTFVFUyBJTiAoJ0InLCAnQScpOworSU5TRVJUIElOVE8gcGFnZ190YWIzIFNFTEVDVCBp ICUgNCArIDEsIHN1YnN0cignYWJBQicsIChpICUgNCkgKyAxICwgMSkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMCwgMTEpIGk7CitBTkFMWVpFIHBhZ2dfdGFiMzsKKworU0VUIGVuYWJsZV9wYXJ0aXRp b253aXNlX2FnZ3JlZ2F0ZSBUTyBmYWxzZTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1 cHBlcihjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSksIGNvdW50KGMpIEZST00gcGFnZ190YWIz IEdST1VQIEJZIGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlIE9SREVSIEJZIDE7CitTRUxFQ1Qg dXBwZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFi MyBHUk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRFUiBCWSAxOworCistLSBO byBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uIGFsbG93ZWQhCitTRVQgZW5hYmxlX3BhcnRpdGlv bndpc2VfYWdncmVnYXRlIFRPIHRydWU7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdXBw ZXIoYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUpLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBH Uk9VUCBCWSBjIGNvbGxhdGUgY2FzZV9pbnNlbnNpdGl2ZSBPUkRFUiBCWSAxOworU0VMRUNUIHVw cGVyKGMgY29sbGF0ZSBjYXNlX2luc2Vuc2l0aXZlKSwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMg R1JPVVAgQlkgYyBjb2xsYXRlIGNhc2VfaW5zZW5zaXRpdmUgT1JERVIgQlkgMTsKKworLS0gT0sg dG8gdXNlIGZ1bGwgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGUgYWZ0ZXIgY2hhbmdpbmcgdGhlIEdS T1VQIEJZIGNvbHVtbidzCistLSBjb2xsYXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgdGhhdCBvZiB0 aGUgcGFydGl0aW9uIGtleS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjIGNvbGxhdGUg IkMiLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUgIkMiIE9SREVS IEJZIDE7CitTRUxFQ1QgYyBjb2xsYXRlICJDIiwgY291bnQoYykgRlJPTSBwYWdnX3RhYjMgR1JP VVAgQlkgYyBjb2xsYXRlICJDIiBPUkRFUiBCWSAxOworCistLSBBbHNvIE9LIHRvIHVzZSBwYXJ0 aWFsIHBhcnRpdGlvbndpc2UgYWdncmVnYXRlIHdoZW4gZ3JvdXBpbmcgY29sdW1ucyBkbyBub3QK Ky0tIGluY2x1ZGUgcGFydGl0aW9uIGtleSBjb2x1bW5zCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgYSBjb2xsYXRlICJDIiwgY291bnQoYyBjb2xsYXRlICJDIikgRlJPTSBwYWdnX3RhYjMg R1JPVVAgQlkgYSBjb2xsYXRlICJDIiBPUkRFUiBCWSAxOworU0VMRUNUIGEgY29sbGF0ZSAiQyIs IGNvdW50KGMgY29sbGF0ZSAiQyIpIEZST00gcGFnZ190YWIzIEdST1VQIEJZIGEgY29sbGF0ZSAi QyIgT1JERVIgQlkgMTsKKworRFJPUCBUQUJMRSBwYWdnX3RhYjM7CisKK1JFU0VUIGVuYWJsZV9w YXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXI7CitSRVNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydDsKIAogLS0gY2xlYW51cAogUkVT RVQgc2VhcmNoX3BhdGg7Ci0tIAoyLjQzLjAKCg== --0000000000005a1c2c062625ba5f--