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 1tInMH-00GenN-S2 for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Dec 2024 11:15:54 +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 1tInMF-00GdGk-9D for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Dec 2024 11:15:52 +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 1tInME-00GdGc-9a for pgsql-hackers@lists.postgresql.org; Wed, 04 Dec 2024 11:15:52 +0000 Received: from fhigh-b3-smtp.messagingengine.com ([202.12.124.154]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tInM9-00108L-UM for pgsql-hackers@lists.postgresql.org; Wed, 04 Dec 2024 11:15:50 +0000 Received: from phl-compute-08.internal (phl-compute-08.phl.internal [10.202.2.48]) by mailfhigh.stl.internal (Postfix) with ESMTP id D70BB25401AD; Wed, 4 Dec 2024 06:15:43 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-08.internal (MEProxy); Wed, 04 Dec 2024 06:15:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1733310943; x= 1733397343; bh=tAcU1ZbwlzLmsLADvHA3sV8CW6dGfRojBqLW18Q0p3g=; b=D Y87wJ7vVc504z3SQRl5biT0YkiROjLNF9e+yMFNTZcPESTT01DiRZEgr+sVrBgeR 4b5EUhVIIBWwNhALC0E5uvdoI/HWDJR3iSUL1NnT1WQ1sAZvL83Fjt26DLIlgvx5 BooI2oyc3MwH82ggAtLIuehbbt25M9S4D/pzSmi9oH9tK+92aUC0t6SjgrsLfHqT q7PUs3wKrqZkCu11dnRaKsVnSTk3+wp7lVI2Br3CMEshauvlYtwtROvsKJwObeJQ /jU6dgkaF+FSZ+cxLFMmflU5knBJwdF1oeFzRAFGHppaQIgX0/m5VoKAYPgSTGPI JFR5Mi7UBsIQ/xXrWJ+Lg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1733310943; x=1733397343; bh=tAcU1ZbwlzLmsLADvHA3sV8CW6dGfRojBqL W18Q0p3g=; b=gvKWKGF//cwDHVM2o8uL0MqGRSP9vPagFjN0Yhw9NffJbwi65aF T5oxlpxepBVqtQvqr75X8UiwlibjbyEJx3auJcjPTRGQmu4A02yPWI6fZtNZy/bT Qh1oE/ABbr8QLcIX8MMhLuKcmhtpqH6wBIoz8YMXoy0Z1sGGH728ny8jdXcEbSF+ rbEYSsiUki+Sx5EjJmapuuz1iq+ZwTdDgD379t1EkbQjPq/iq/E1JyruqjS4z9aN bj4aDdloJkzplZxdaVniJio6uvWwAfq3A0ywVZycUTcpMW+Xu5fXSXLfIIyPEQnw SzcWYek06BCPJ6nEf2utMz8ayNGMDJs2e+g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrieehgddvfecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpegtkfffgggfuffhvfevfhgjsehmtderredtvdejnecu hfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrsegvihhsvghnth hrrghuthdrohhrgheqnecuggftrfgrthhtvghrnhepledtheekleffieevfedtkeelveev feekkeevheehvdejfefgveethfetiedtuedvnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepphgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhg pdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehpjh esihhllhhumhhinhgrthgvuggtohhmphhuthhinhhgrdgtohhmpdhrtghpthhtohepjhhi rghnrdhunhhivhgvrhhsrghlihhthiesghhmrghilhdrtghomhdprhgtphhtthhopehpgh hsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 4 Dec 2024 06:15:41 -0500 (EST) Content-Type: multipart/mixed; boundary="------------JhqDmpNeYdEkTBRohBtj0Pjg" Message-ID: Date: Wed, 4 Dec 2024 12:15:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time From: Peter Eisentraut To: Paul Jungwirth Cc: jian he , PostgreSQL Hackers References: <081aa43c-3a97-4bd5-a498-ba02e0a7570d@illuminatedcomputing.com> <54390149-11d6-4f52-bbe8-f69832ceb3bd@eisentraut.org> <9b7cb814-c78c-489f-85b2-32be4398647f@illuminatedcomputing.com> <95c6d49b-7d60-4ad0-820c-e00ae1b2a3d4@illuminatedcomputing.com> <57ea0668-5205-426e-b934-efc89f2186c2@illuminatedcomputing.com> <6dc196d4-8853-49d7-8dd3-e391058451c1@eisentraut.org> <66e47fc0-77b7-4763-9b70-5c0b7ff15f21@eisentraut.org> <333d3886-b737-45c3-93f4-594c96bb405d@eisentraut.org> Content-Language: en-US In-Reply-To: <333d3886-b737-45c3-93f4-594c96bb405d@eisentraut.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------JhqDmpNeYdEkTBRohBtj0Pjg Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 26.11.24 13:18, Peter Eisentraut wrote: > I think this is the right idea, but after digging around a bit more, I > think more could/should be done. > > After these changes, the difference between > get_equal_strategy_number_for_am() and get_equal_strategy_number() is > kind of pointless.  We should really just use > get_equal_strategy_number() for all purposes. > > But then you have the problem that IsIndexUsableForReplicaIdentityFull() > doesn't have the opclass IDs available in the IndexInfo structure.  You > appear to have worked around that by writing > > +   if (get_equal_strategy_number_for_am(indexInfo->ii_Am, InvalidOid) > == InvalidStrategy) > > which I suppose will have the same ultimate result as before that patch, > but it seems kind of incomplete. > > I figure this could all be simpler if > IsIndexUsableForReplicaIdentityFull() used the index relcache entry > directly instead of going the detour through IndexInfo.  Then we have > all the information available, and this should ultimately all work > properly for suitable GiST indexes as well. > > I have attached three patches that show how that could be done.  (This > would work in conjunction with your new tests.  (Although now we could > also test GiST with replica identity full?)) > > The comment block for IsIndexUsableForReplicaIdentityFull() makes a > bunch of claims that are not all explicitly supported by the code.  The > code doesn't actually check the AM, this is all only done indirectly via > other checks.  The second point (about tuples_equal()) appears to be > slightly wrong, because while you need an equals operator from the type > cache, that shouldn't prevent you from also using a different index AM > than btree or hash for the replica identity index.  And the stuff about > amgettuple, if that is important, why is it only checked for assert builds? I did some more work on this approach, with the attached patches resulting. This is essentially what I'm describing above, which in turn is a variation of your patch v45-0001-Fix-logical-replication-for-temporal-tables.patch, with your tests added at the end. I also did some more work on IsIndexUsableForReplicaIdentityFull() to make the various claims in the comments reflected by actual code. With all of this, it can now also use gist indexes on the subscriber side in cases of REPLICA IDENTITY FULL. This isn't immediately visible in the tests, but you can see that the tests are using it internally by adding debugging elogs or something like that. Altogether, I think this fixes the original problem of temporal keys not being handled properly in logical replication subscribers, and it makes things less hardcoded around btree and hash in general. Please review. --------------JhqDmpNeYdEkTBRohBtj0Pjg Content-Type: text/plain; charset=UTF-8; name="v45.2-0001-Improve-internal-logical-replication-error-for.patch" Content-Disposition: attachment; filename*0="v45.2-0001-Improve-internal-logical-replication-error-for.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMmEzOTA0NDY4MTZkYTY2MjA0YjY5NmFjNWFkMTg5ZDVjZTgyODM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA0IERlYyAyMDI0IDEyOjA2OjI0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2NDUuMiAxLzVdIEltcHJvdmUgaW50ZXJuYWwgbG9naWNhbCByZXBsaWNhdGlv biBlcnJvciBmb3IKIG1pc3NpbmcgZXF1YWxpdHkgc3RyYXRlZ3kKClRoaXMgInNob3VsZG4n dCBoYXBwZW4iLCBleGNlcHQgcmlnaHQgbm93IGl0IGNhbiB3aXRoIGEgdGVtcG9yYWwgZ2lz dAppbmRleCAodG8gYmUgZml4ZWQgc29vbiksIGJlY2F1c2Ugb2YgbWlzc2luZyBnaXN0IHN1 cHBvcnQgaW4KZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcigpLiAgQnV0IHJpZ2h0IG5vdywg dGhlIGVycm9yIGlzIG5vdCBjYXVnaHQKcmlnaHQgYXdheSwgYnV0IGluc3RlYWQgeW91IGdl dCB0aGUgc3Vic2VxdWVudCBlcnJvciBhYm91dCBhICJtaXNzaW5nCm9wZXJhdG9yIDAiLiAg VGhpcyBtYWtlcyB0aGUgZXJyb3IgbW9yZSBhY2N1cmF0ZS4KCkRpc2N1c3Npb246IGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQStyZW55VUFwSGdTWkY5 LW5kLWEwK09QR2hhckxRTE89bURIY1k0X3FRMCtub0NVVmdAbWFpbC5nbWFpbC5jb20KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyB8IDIgKysKIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jCmluZGV4IGNmZGYyZWVkZjRkLi4yY2E4YzVjNTBiZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTEzNCw2ICsxMzQsOCBAQCBi dWlsZF9yZXBsaW5kZXhfc2Nhbl9rZXkoU2NhbktleSBza2V5LCBSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGlkeHJlbCwKIAkJb3B0eXBlID0gZ2V0X29wY2xhc3NfaW5wdXRfdHlwZShvcGNs YXNzLT52YWx1ZXNbaW5kZXhfYXR0b2ZmXSk7CiAJCW9wZmFtaWx5ID0gZ2V0X29wY2xhc3Nf ZmFtaWx5KG9wY2xhc3MtPnZhbHVlc1tpbmRleF9hdHRvZmZdKTsKIAkJZXFfc3RyYXRlZ3kg PSBnZXRfZXF1YWxfc3RyYXRlZ3lfbnVtYmVyKG9wY2xhc3MtPnZhbHVlc1tpbmRleF9hdHRv ZmZdKTsKKwkJaWYgKCFlcV9zdHJhdGVneSkKKwkJCWVsb2coRVJST1IsICJtaXNzaW5nIGVx dWFsIHN0cmF0ZWd5IGZvciBvcGNsYXNzICV1Iiwgb3BjbGFzcy0+dmFsdWVzW2luZGV4X2F0 dG9mZl0pOwogCiAJCW9wZXJhdG9yID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwg b3B0eXBlLAogCQkJCQkJCQkJICAgb3B0eXBlLAoKYmFzZS1jb21taXQ6IDc3MjcwNDllOGY2 NjMzNDRkNGQwNDU3ZTFkOWVjMDQ4ZDYyNmYzZDkKLS0gCjIuNDcuMQoK --------------JhqDmpNeYdEkTBRohBtj0Pjg Content-Type: text/plain; charset=UTF-8; name="v45.2-0002-Replace-get_equal_strategy_number_for_am-by-ge.patch" Content-Disposition: attachment; filename*0="v45.2-0002-Replace-get_equal_strategy_number_for_am-by-ge.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2NDk2OThiOWYwM2E3OWEzZDYyZDYwZTQ4YjY3NGM3N2RiYmRlMjY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA0IERlYyAyMDI0IDEyOjA2OjI0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2NDUuMiAyLzVdIFJlcGxhY2UgZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcl9m b3JfYW0oKSBieQogZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcigpCgpnZXRfZXF1YWxfc3Ry YXRlZ3lfbnVtYmVyX2Zvcl9hbSgpIGdldHMgdGhlIGVxdWFsIHN0cmF0ZWd5IG51bWJlciBm b3IKYW4gQU0uICBUaGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGJ0cmVlIGFuZCBoYXNo LiAgSW4gdGhlIG1vcmUKZ2VuZXJhbCBjYXNlLCB0aGlzIGFsc28gZGVwZW5kcyBvbiB0aGUg b3BlcmF0b3IgY2xhc3MgKHNlZSBmb3IgZXhhbXBsZQpHaXN0VHJhbnNsYXRlU3RyYXRudW0o KSkuICBUbyBzdXBwb3J0IHRoYXQsIHJlcGxhY2UgdGhpcyBmdW5jdGlvbiB3aXRoCmdldF9l cXVhbF9zdHJhdGVneV9udW1iZXIoKSB0aGF0IHRha2VzIGFuIG9wY2xhc3MgYW5kIGRlcml2 ZXMgaXQgZnJvbQp0aGVyZS4gIChUaGlzIGZ1bmN0aW9uIGFscmVhZHkgZXhpc3RlZCBiZWZv cmUgYXMgYSBzdGF0aWMgZnVuY3Rpb24sIHNvCnRoZSBzaWduYXR1cmUgaXMga2VwdCBmb3Ig c2ltcGxpY2l0eS4pCgpUaGlzIHBhdGNoIGlzIG9ubHkgYSByZWZhY3RvcmluZywgaXQgZG9l c24ndCBhZGQgc3VwcG9ydCBmb3Igb3RoZXIKaW5kZXggQU1zIHN1Y2ggYXMgZ2lzdC4gIFRo aXMgd2lsbCBiZSBkb25lIHNlcGFyYXRlbHkuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0ErcmVueVVBcEhnU1pGOS1uZC1hMCtP UEdoYXJMUUxPPW1ESGNZNF9xUTArbm9DVVZnQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgIHwgMTcgKysrLS0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyB8IDE3 ICsrKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAg ICAgICAgICAgfCAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAy MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CmluZGV4IDJjYThjNWM1MGJlLi4yYjQyYzBhZTUyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGJvb2wgdHVw bGVzX2VxdWFsKFR1cGxlVGFibGVTbG90ICpzbG90MSwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qy LAogCiAvKgogICogUmV0dXJucyB0aGUgZml4ZWQgc3RyYXRlZ3kgbnVtYmVyLCBpZiBhbnks IG9mIHRoZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlCi0gKiBnaXZlbiBpbmRleCBhY2Nl c3MgbWV0aG9kLCBvdGhlcndpc2UsIEludmFsaWRTdHJhdGVneS4KKyAqIGdpdmVuIG9wZXJh dG9yIGNsYXNzLCBvdGhlcndpc2UsIEludmFsaWRTdHJhdGVneS4KICAqCiAgKiBDdXJyZW50 bHksIG9ubHkgQnRyZWUgYW5kIEhhc2ggaW5kZXhlcyBhcmUgc3VwcG9ydGVkLiBUaGUgb3Ro ZXIgaW5kZXggYWNjZXNzCiAgKiBtZXRob2RzIGRvbid0IGhhdmUgYSBmaXhlZCBzdHJhdGVn eSBmb3IgZXF1YWxpdHkgb3BlcmF0aW9uIC0gaW5zdGVhZCwgdGhlCkBAIC00Nyw4ICs0Nyw5 IEBAIHN0YXRpYyBib29sIHR1cGxlc19lcXVhbChUdXBsZVRhYmxlU2xvdCAqc2xvdDEsIFR1 cGxlVGFibGVTbG90ICpzbG90MiwKICAqIGFjY29yZGluZyB0byB0aGUgb3BlcmF0b3IgY2xh c3MncyBkZWZpbml0aW9uLgogICovCiBTdHJhdGVneU51bWJlcgotZ2V0X2VxdWFsX3N0cmF0 ZWd5X251bWJlcl9mb3JfYW0oT2lkIGFtKQorZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcihP aWQgb3BjbGFzcykKIHsKKwlPaWQJCQlhbSA9IGdldF9vcGNsYXNzX21ldGhvZChvcGNsYXNz KTsKIAlpbnQJCQlyZXQ7CiAKIAlzd2l0Y2ggKGFtKQpAQCAtNjgsMTggKzY5LDYgQEAgZ2V0 X2VxdWFsX3N0cmF0ZWd5X251bWJlcl9mb3JfYW0oT2lkIGFtKQogCXJldHVybiByZXQ7CiB9 CiAKLS8qCi0gKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHN0cmF0ZWd5IG51bWJlciB3aGlj aCBjb3JyZXNwb25kcyB0byB0aGUgZXF1YWxpdHkKLSAqIG9wZXJhdG9yLgotICovCi1zdGF0 aWMgU3RyYXRlZ3lOdW1iZXIKLWdldF9lcXVhbF9zdHJhdGVneV9udW1iZXIoT2lkIG9wY2xh c3MpCi17Ci0JT2lkCQkJYW0gPSBnZXRfb3BjbGFzc19tZXRob2Qob3BjbGFzcyk7Ci0KLQly ZXR1cm4gZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcl9mb3JfYW0oYW0pOwotfQotCiAvKgog ICogU2V0dXAgYSBTY2FuS2V5IGZvciBhIHNlYXJjaCBpbiB0aGUgcmVsYXRpb24gJ3JlbCcg Zm9yIGEgdHVwbGUgJ2tleScgdGhhdAogICogaXMgc2V0dXAgdG8gbWF0Y2ggJ3JlbCcgKCpO T1QqIGlkeHJlbCEpLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxh dGlvbi5jCmluZGV4IDcxYTFiN2UwMWViLi5mMmZhYzU3NDEyZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMjksNiArMjksNyBAQAog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogCiBzdGF0aWMgTWVtb3J5Q29udGV4 dCBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9IE5VTEw7CkBAIC04MTUsNyArODE2LDcgQEAg RmluZFVzYWJsZUluZGV4Rm9yUmVwbGljYUlkZW50aXR5RnVsbChSZWxhdGlvbiBsb2NhbHJl bCwgQXR0ck1hcCAqYXR0cm1hcCkKICAqIFRoZSByZWFzb25zIHdoeSBvbmx5IEJ0cmVlIGFu ZCBIYXNoIGluZGV4ZXMgY2FuIGJlIGNvbnNpZGVyZWQgYXMgdXNhYmxlIGFyZToKICAqCiAg KiAxKSBPdGhlciBpbmRleCBhY2Nlc3MgbWV0aG9kcyBkb24ndCBoYXZlIGEgZml4ZWQgc3Ry YXRlZ3kgZm9yIGVxdWFsaXR5Ci0gKiBvcGVyYXRpb24uIFJlZmVyIGdldF9lcXVhbF9zdHJh dGVneV9udW1iZXJfZm9yX2FtKCkuCisgKiBvcGVyYXRpb24uIFJlZmVyIGdldF9lcXVhbF9z dHJhdGVneV9udW1iZXIoKS4KICAqCiAgKiAyKSBGb3IgaW5kZXhlcyBvdGhlciB0aGFuIFBL IGFuZCBSRVBMSUNBIElERU5USVRZLCB3ZSBuZWVkIHRvIG1hdGNoIHRoZQogICogbG9jYWwg YW5kIHJlbW90ZSB0dXBsZXMuIFRoZSBlcXVhbGl0eSByb3V0aW5lIHR1cGxlc19lcXVhbCgp IGNhbm5vdCBhY2NlcHQKQEAgLTgzMywxMCArODM0LDcgQEAgYm9vbAogSXNJbmRleFVzYWJs ZUZvclJlcGxpY2FJZGVudGl0eUZ1bGwoUmVsYXRpb24gaWR4cmVsLCBBdHRyTWFwICphdHRy bWFwKQogewogCUF0dHJOdW1iZXIJa2V5Y29sOwotCi0JLyogRW5zdXJlIHRoYXQgdGhlIGlu ZGV4IGFjY2VzcyBtZXRob2QgaGFzIGEgdmFsaWQgZXF1YWwgc3RyYXRlZ3kgKi8KLQlpZiAo Z2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcl9mb3JfYW0oaWR4cmVsLT5yZF9yZWwtPnJlbGFt KSA9PSBJbnZhbGlkU3RyYXRlZ3kpCi0JCXJldHVybiBmYWxzZTsKKwlvaWR2ZWN0b3IgICpp bmRjbGFzczsKIAogCS8qIFRoZSBpbmRleCBtdXN0IG5vdCBiZSBhIHBhcnRpYWwgaW5kZXgg Ki8KIAlpZiAoIWhlYXBfYXR0aXNudWxsKGlkeHJlbC0+cmRfaW5kZXh0dXBsZSwgQW51bV9w Z19pbmRleF9pbmRwcmVkLCBOVUxMKSkKQEAgLTg0NCw2ICs4NDIsMTUgQEAgSXNJbmRleFVz YWJsZUZvclJlcGxpY2FJZGVudGl0eUZ1bGwoUmVsYXRpb24gaWR4cmVsLCBBdHRyTWFwICph dHRybWFwKQogCiAJQXNzZXJ0KGlkeHJlbC0+cmRfaW5kZXgtPmluZG5hdHRzID49IDEpOwog CisJaW5kY2xhc3MgPSAob2lkdmVjdG9yICopIERhdHVtR2V0UG9pbnRlcihTeXNDYWNoZUdl dEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGlkeHJlbC0+cmRfaW5kZXh0dXBsZSwgQW51bV9w Z19pbmRleF9pbmRjbGFzcykpOworCisJLyogRW5zdXJlIHRoYXQgdGhlIGluZGV4IGhhcyBh IHZhbGlkIGVxdWFsIHN0cmF0ZWd5IGZvciBlYWNoIGtleSBjb2x1bW4gKi8KKwlmb3IgKGlu dCBpID0gMDsgaSA8IGlkeHJlbC0+cmRfaW5kZXgtPmluZG5rZXlhdHRzOyBpKyspCisJewor CQlpZiAoZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcihpbmRjbGFzcy0+dmFsdWVzW2ldKSA9 PSBJbnZhbGlkU3RyYXRlZ3kpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJLyogVGhlIGxl ZnRtb3N0IGluZGV4IGZpZWxkIG11c3Qgbm90IGJlIGFuIGV4cHJlc3Npb24gKi8KIAlrZXlj b2wgPSBpZHhyZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzWzBdOwogCWlmICghQXR0cmli dXRlTnVtYmVySXNWYWxpZChrZXljb2wpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5k ZXggNjljM2ViZmYwMGEuLmU5NDljY2U3ZDk4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKQEAgLTY1OCw3ICs2NTgsNyBAQCBleHRlcm4gdm9pZCBjaGVja19leGNsdXNpb25fY29u c3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIC8qCiAgKiBwcm90b3R5 cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNSZXBsaWNhdGlvbi5jCiAgKi8KLWV4dGVybiBT dHJhdGVneU51bWJlciBnZXRfZXF1YWxfc3RyYXRlZ3lfbnVtYmVyX2Zvcl9hbShPaWQgYW0p OworZXh0ZXJuIFN0cmF0ZWd5TnVtYmVyIGdldF9lcXVhbF9zdHJhdGVneV9udW1iZXIoT2lk IG9wY2xhc3MpOwogZXh0ZXJuIGJvb2wgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChS ZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJCQkJCQkJCQkJIExvY2tUdXBsZU1vZGUgbG9j a21vZGUsCiAJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpzZWFyY2hzbG90LAotLSAKMi40 Ny4xCgo= --------------JhqDmpNeYdEkTBRohBtj0Pjg Content-Type: text/plain; charset=UTF-8; name="v45.2-0003-Make-the-conditions-in-IsIndexUsableForReplica.patch" Content-Disposition: attachment; filename*0="v45.2-0003-Make-the-conditions-in-IsIndexUsableForReplica.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhMGZiYmUyODI2NDk4NjVlNjdmNzExNTI0ODFhMGM0NGU2ZTc5ZjM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA0IERlYyAyMDI0IDEyOjA2OjI0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2NDUuMiAzLzVdIE1ha2UgdGhlIGNvbmRpdGlvbnMgaW4KIElzSW5kZXhVc2Fi bGVGb3JSZXBsaWNhSWRlbnRpdHlGdWxsKCkgbW9yZSBleHBsaWNpdAoKSXNJbmRleFVzYWJs ZUZvclJlcGxpY2FJZGVudGl0eUZ1bGwoKSBkZXNjcmliZWQgYSBudW1iZXIgb2YgY29uZGl0 aW9ucwp0aGF0IGEgc3VpdGFibGUgaW5kZXggaGFzIHRvIGZ1bGZ1bGwuICBCdXQgbm90IGFs bCBvZiB0aGVzZSB3ZXJlCmFjdHVhbGx5IGNoZWNrZWQgaW4gdGhlIGNvZGUuICBJbnN0ZWFk LCBpdCBhcHBlYXJlZCB0byByZWx5IG9uCmdldF9lcXVhbF9zdHJhdGVneV9udW1iZXIoKSB0 byBmaWx0ZXIgb3V0IGFueSBpbmRleGVzIHRoYXQgYXJlIG5vdApidHJlZSBvciBoYXNoLiAg QXMgd2UgbG9vayB0byBnZW5lcmFsaXplIGluZGV4IEFNIGNhcGFiaWxpdGllcywgdGhpcwp3 b3VsZCBwb3NzaWJseSBicmVhayBpZiB3ZSBhZGRlZCBhZGRpdGlvbmFsIHN1cHBvcnQgaW4K Z2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcigpLiAgSW5zdGVhZCwgd3JpdGUgb3V0IGNvZGUg dG8gY2hlY2sgZm9yIHRoZQpyZXF1aXJlZCBjYXBhYmlsaXRpZXMgZXhwbGljaXRseS4gIFRo aXMgc2hvdWxkbid0IGNoYW5nZSBhbnkgYmVoYXZpb3JzCmF0IHRoZSBtb21lbnQuCgpEaXNj dXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0Er cmVueVVBcEhnU1pGOS1uZC1hMCtPUEdoYXJMUUxPPW1ESGNZNF9xUTArbm9DVVZnQG1haWwu Z21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlv bi5jIHwgNTIgKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1IGlu c2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBmMmZhYzU3NDEyZS4uYjQ5YjBhZjJmNjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24u YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAg LTE3LDkgKzE3LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKLSNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCiAjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCi0jZW5kaWYKICNp bmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgpAQCAtNzk4LDkgKzc5NiwxMCBAQCBGaW5k VXNhYmxlSW5kZXhGb3JSZXBsaWNhSWRlbnRpdHlGdWxsKFJlbGF0aW9uIGxvY2FscmVsLCBB dHRyTWFwICphdHRybWFwKQogLyoKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgaW5kZXggaXMg dXNhYmxlIGZvciByZXBsaWNhIGlkZW50aXR5IGZ1bGwuCiAgKgotICogVGhlIGluZGV4IG11 c3QgYmUgYnRyZWUgb3IgaGFzaCwgbm9uLXBhcnRpYWwsIGFuZCB0aGUgbGVmdG1vc3QgZmll bGQgbXVzdCBiZQotICogYSBjb2x1bW4gKG5vdCBhbiBleHByZXNzaW9uKSB0aGF0IHJlZmVy ZW5jZXMgdGhlIHJlbW90ZSByZWxhdGlvbiBjb2x1bW4uIFRoZXNlCi0gKiBsaW1pdGF0aW9u cyBoZWxwIHRvIGtlZXAgdGhlIGluZGV4IHNjYW4gc2ltaWxhciB0byBQSy9SSSBpbmRleCBz Y2Fucy4KKyAqIFRoZSBpbmRleCBtdXN0IGhhdmUgYW4gZXF1YWwgc3RyYXRlZ3kgZm9yIGVh Y2gga2V5IGNvbHVtbiwgYmUgbm9uLXBhcnRpYWwsCisgKiBhbmQgdGhlIGxlZnRtb3N0IGZp ZWxkIG11c3QgYmUgYSBjb2x1bW4gKG5vdCBhbiBleHByZXNzaW9uKSB0aGF0IHJlZmVyZW5j ZXMKKyAqIHRoZSByZW1vdGUgcmVsYXRpb24gY29sdW1uLiBUaGVzZSBsaW1pdGF0aW9ucyBo ZWxwIHRvIGtlZXAgdGhlIGluZGV4IHNjYW4KKyAqIHNpbWlsYXIgdG8gUEsvUkkgaW5kZXgg c2NhbnMuCiAgKgogICogYXR0cm1hcCBpcyBhIG1hcCBvZiBsb2NhbCBhdHRyaWJ1dGVzIHRv IHJlbW90ZSBvbmVzLiBXZSBjYW4gY29uc3VsdCB0aGlzCiAgKiBtYXAgdG8gY2hlY2sgd2hl dGhlciB0aGUgbG9jYWwgaW5kZXggYXR0cmlidXRlIGhhcyBhIGNvcnJlc3BvbmRpbmcgcmVt b3RlCkBAIC04MTMsMTkgKzgxMiw2IEBAIEZpbmRVc2FibGVJbmRleEZvclJlcGxpY2FJZGVu dGl0eUZ1bGwoUmVsYXRpb24gbG9jYWxyZWwsIEF0dHJNYXAgKmF0dHJtYXApCiAgKiBjb21w YXJlIHRoZSB0dXBsZXMgZm9yIG5vbi1QSy9SSSBpbmRleCBzY2Fucy4gU2VlCiAgKiBSZWxh dGlvbkZpbmRSZXBsVHVwbGVCeUluZGV4KCkuCiAgKgotICogVGhlIHJlYXNvbnMgd2h5IG9u bHkgQnRyZWUgYW5kIEhhc2ggaW5kZXhlcyBjYW4gYmUgY29uc2lkZXJlZCBhcyB1c2FibGUg YXJlOgotICoKLSAqIDEpIE90aGVyIGluZGV4IGFjY2VzcyBtZXRob2RzIGRvbid0IGhhdmUg YSBmaXhlZCBzdHJhdGVneSBmb3IgZXF1YWxpdHkKLSAqIG9wZXJhdGlvbi4gUmVmZXIgZ2V0 X2VxdWFsX3N0cmF0ZWd5X251bWJlcigpLgotICoKLSAqIDIpIEZvciBpbmRleGVzIG90aGVy IHRoYW4gUEsgYW5kIFJFUExJQ0EgSURFTlRJVFksIHdlIG5lZWQgdG8gbWF0Y2ggdGhlCi0g KiBsb2NhbCBhbmQgcmVtb3RlIHR1cGxlcy4gVGhlIGVxdWFsaXR5IHJvdXRpbmUgdHVwbGVz X2VxdWFsKCkgY2Fubm90IGFjY2VwdAotICogYSBkYXRhdHlwZSAoZS5nLiBwb2ludCBvciBi b3gpIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGRlZmF1bHQgb3BlcmF0b3IgY2xhc3MKLSAqIGZv ciBCdHJlZSBvciBIYXNoLgotICoKLSAqIFhYWDogTm90ZSB0aGF0IEJSSU4gYW5kIEdJTiBp bmRleGVzIGRvIG5vdCBpbXBsZW1lbnQgImFtZ2V0dHVwbGUiIHdoaWNoCi0gKiB3aWxsIGJl IHVzZWQgbGF0ZXIgdG8gZmV0Y2ggdGhlIHR1cGxlcy4gU2VlIFJlbGF0aW9uRmluZFJlcGxU dXBsZUJ5SW5kZXgoKS4KLSAqCiAgKiBYWFg6IFRvIHN1cHBvcnQgcGFydGlhbCBpbmRleGVz LCB0aGUgcmVxdWlyZWQgY2hhbmdlcyBhcmUgbGlrZWx5IHRvIGJlIGxhcmdlci4KICAqIElm IG5vbmUgb2YgdGhlIHR1cGxlcyBzYXRpc2Z5IHRoZSBleHByZXNzaW9uIGZvciB0aGUgaW5k ZXggc2Nhbiwgd2UgZmFsbC1iYWNrCiAgKiB0byBzZXF1ZW50aWFsIGV4ZWN1dGlvbiwgd2hp Y2ggbWlnaHQgbm90IGJlIGEgZ29vZCBpZGVhIGluIHNvbWUgY2FzZXMuCkBAIC04NTEsNiAr ODM3LDIxIEBAIElzSW5kZXhVc2FibGVGb3JSZXBsaWNhSWRlbnRpdHlGdWxsKFJlbGF0aW9u IGlkeHJlbCwgQXR0ck1hcCAqYXR0cm1hcCkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKKwkv KgorCSAqIEZvciBpbmRleGVzIG90aGVyIHRoYW4gUEsgYW5kIFJFUExJQ0EgSURFTlRJVFks IHdlIG5lZWQgdG8gbWF0Y2ggdGhlCisJICogbG9jYWwgYW5kIHJlbW90ZSB0dXBsZXMuICBU aGUgZXF1YWxpdHkgcm91dGluZSB0dXBsZXNfZXF1YWwoKSBjYW5ub3QKKwkgKiBhY2NlcHQg YSBkYXRhIHR5cGUgd2hlcmUgdGhlIHR5cGUgY2FjaGUgY2Fubm90IHByb3ZpZGUgYW4gZXF1 YWxpdHkKKwkgKiBvcGVyYXRvci4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IGlkeHJl bC0+cmRfYXR0LT5uYXR0czsgaSsrKQorCXsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5 OworCisJCXR5cGVudHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUoVHVwbGVEZXNjQXR0cihpZHhy ZWwtPnJkX2F0dCwgaSktPmF0dHR5cGlkLCBUWVBFQ0FDSEVfRVFfT1BSX0ZJTkZPKTsKKwkJ aWYgKCFPaWRJc1ZhbGlkKHR5cGVudHJ5LT5lcV9vcHJfZmluZm8uZm5fb2lkKSkKKwkJCXJl dHVybiBmYWxzZTsKKwl9CisKIAkvKiBUaGUgbGVmdG1vc3QgaW5kZXggZmllbGQgbXVzdCBu b3QgYmUgYW4gZXhwcmVzc2lvbiAqLwogCWtleWNvbCA9IGlkeHJlbC0+cmRfaW5kZXgtPmlu ZGtleS52YWx1ZXNbMF07CiAJaWYgKCFBdHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKGtleWNvbCkp CkBAIC04NjUsMTUgKzg2NiwxMiBAQCBJc0luZGV4VXNhYmxlRm9yUmVwbGljYUlkZW50aXR5 RnVsbChSZWxhdGlvbiBpZHhyZWwsIEF0dHJNYXAgKmF0dHJtYXApCiAJCWF0dHJtYXAtPmF0 dG51bXNbQXR0ck51bWJlckdldEF0dHJPZmZzZXQoa2V5Y29sKV0gPCAwKQogCQlyZXR1cm4g ZmFsc2U7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0JewotCQlJbmRleEFtUm91 dGluZSAqYW1yb3V0aW5lOwotCi0JCS8qIFRoZSBnaXZlbiBpbmRleCBhY2Nlc3MgbWV0aG9k IG11c3QgaW1wbGVtZW50IGFtZ2V0dHVwbGUuICovCi0JCWFtcm91dGluZSA9IEdldEluZGV4 QW1Sb3V0aW5lQnlBbUlkKGlkeHJlbC0+cmRfcmVsLT5yZWxhbSwgZmFsc2UpOwotCQlBc3Nl cnQoYW1yb3V0aW5lLT5hbWdldHR1cGxlICE9IE5VTEwpOwotCX0KLSNlbmRpZgorCS8qCisJ ICogVGhlIGdpdmVuIGluZGV4IGFjY2VzcyBtZXRob2QgbXVzdCBpbXBsZW1lbnQgImFtZ2V0 dHVwbGUiLCB3aGljaCB3aWxsCisJICogYmUgdXNlZCBsYXRlciB0byBmZXRjaCB0aGUgdHVw bGVzLiAgU2VlIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoKS4KKwkgKi8KKwlpZiAo R2V0SW5kZXhBbVJvdXRpbmVCeUFtSWQoaWR4cmVsLT5yZF9yZWwtPnJlbGFtLCBmYWxzZSkt PmFtZ2V0dHVwbGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOwogCiAJcmV0dXJuIHRydWU7 CiB9Ci0tIAoyLjQ3LjEKCg== --------------JhqDmpNeYdEkTBRohBtj0Pjg Content-Type: text/plain; charset=UTF-8; name="v45.2-0004-Support-for-GiST-in-get_equal_strategy_number.patch" Content-Disposition: attachment; filename*0="v45.2-0004-Support-for-GiST-in-get_equal_strategy_number.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA4MjE4YjVjYzYxZTdkZjE0YmM2ZWMyNGQ3NjE4YTNhMWJiY2E5NmRmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA0IERlYyAyMDI0IDEyOjA2OjI0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2NDUuMiA0LzVdIFN1cHBvcnQgZm9yIEdpU1QgaW4gZ2V0X2VxdWFsX3N0cmF0 ZWd5X251bWJlcigpCgpBIFdJVEhPVVQgT1ZFUkxBUFMgcHJpbWFyeSBrZXkgb3IgdW5pcXVl IGNvbnN0cmFpbnQgaXMgYWNjZXB0ZWQgYXMgYQpSRVBMSUNBIElERU5USVRZLCBzaW5jZSBp dCBndWFyYW50ZWVzIHVuaXF1ZW5lc3MuICBCdXQgc3Vic2NyaWJlcnMKYXBwbHlpbmcgbG9n aWNhbCBkZWNvZGluZyBtZXNzYWdlcyB3b3VsZCBmYWlsIGJlY2F1c2UgdGhlcmUgd2FzIG5v dApzdXBwb3J0IGZvciBsb29raW5nIHVwIHRoZSBlcXVhbHMgb3BlcmF0b3IgZm9yIGEgZ2lz dCBpbmRleC4gIFRoaXMKZml4ZXMgdGhhdDogRm9yIEdpU1QgaW5kZXhlcyB3ZSBjYW4gdXNl IHRoZSBzdHJhdG51bSBHaVNUIHN1cHBvcnQKZnVuY3Rpb24uCgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0ErcmVueVVBcEhnU1pG OS1uZC1hMCtPUEdoYXJMUUxPPW1ESGNZNF9xUTArbm9DVVZnQG1haWwuZ21haWwuY29tCi0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCAxMCArKysrLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggMmI0MmMwYWU1 MjQuLmZkZGJmYWJhN2FiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRp b24uYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNs dWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvZ2lzdC5oIgogI2luY2x1 ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgpAQCAtNDAsMTEgKzQxLDYgQEAgc3RhdGljIGJv b2wgdHVwbGVzX2VxdWFsKFR1cGxlVGFibGVTbG90ICpzbG90MSwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QyLAogLyoKICAqIFJldHVybnMgdGhlIGZpeGVkIHN0cmF0ZWd5IG51bWJlciwgaWYg YW55LCBvZiB0aGUgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHRoZQogICogZ2l2ZW4gb3BlcmF0 b3IgY2xhc3MsIG90aGVyd2lzZSwgSW52YWxpZFN0cmF0ZWd5LgotICoKLSAqIEN1cnJlbnRs eSwgb25seSBCdHJlZSBhbmQgSGFzaCBpbmRleGVzIGFyZSBzdXBwb3J0ZWQuIFRoZSBvdGhl ciBpbmRleCBhY2Nlc3MKLSAqIG1ldGhvZHMgZG9uJ3QgaGF2ZSBhIGZpeGVkIHN0cmF0ZWd5 IGZvciBlcXVhbGl0eSBvcGVyYXRpb24gLSBpbnN0ZWFkLCB0aGUKLSAqIHN1cHBvcnQgcm91 dGluZXMgb2YgZWFjaCBvcGVyYXRvciBjbGFzcyBpbnRlcnByZXQgdGhlIHN0cmF0ZWd5IG51 bWJlcnMKLSAqIGFjY29yZGluZyB0byB0aGUgb3BlcmF0b3IgY2xhc3MncyBkZWZpbml0aW9u LgogICovCiBTdHJhdGVneU51bWJlcgogZ2V0X2VxdWFsX3N0cmF0ZWd5X251bWJlcihPaWQg b3BjbGFzcykKQEAgLTYwLDggKzU2LDEwIEBAIGdldF9lcXVhbF9zdHJhdGVneV9udW1iZXIo T2lkIG9wY2xhc3MpCiAJCWNhc2UgSEFTSF9BTV9PSUQ6CiAJCQlyZXQgPSBIVEVxdWFsU3Ry YXRlZ3lOdW1iZXI7CiAJCQlicmVhazsKKwkJY2FzZSBHSVNUX0FNX09JRDoKKwkJCXJldCA9 IEdpc3RUcmFuc2xhdGVTdHJhdG51bShvcGNsYXNzLCBSVEVxdWFsU3RyYXRlZ3lOdW1iZXIp OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQkvKiBYWFg6IE9ubHkgQnRyZWUgYW5kIEhh c2ggaW5kZXhlcyBhcmUgc3VwcG9ydGVkICovCiAJCQlyZXQgPSBJbnZhbGlkU3RyYXRlZ3k7 CiAJCQlicmVhazsKIAl9Ci0tIAoyLjQ3LjEKCg== --------------JhqDmpNeYdEkTBRohBtj0Pjg Content-Type: text/plain; charset=UTF-8; name="v45.2-0005-Tests-for-logical-replication-with-temporal-ke.patch" Content-Disposition: attachment; filename*0="v45.2-0005-Tests-for-logical-replication-with-temporal-ke.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMzZiMDc2ZDQ1NTljMDIzZTgxZWU1MjI4MTE2ZGE3NTJiYmU2NmU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA0IERlYyAyMDI0IDEyOjA2OjI0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2NDUuMiA1LzVdIFRlc3RzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIHdpdGgg dGVtcG9yYWwga2V5cwoKQXV0aG9yOiBQYXVsIEEuIEp1bmd3aXJ0aCA8cGpAaWxsdW1pbmF0 ZWRjb21wdXRpbmcuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9tZXNzYWdlLWlkL2ZsYXQvQ0ErcmVueVVBcEhnU1pGOS1uZC1hMCtPUEdoYXJMUUxPPW1E SGNZNF9xUTArbm9DVVZnQG1haWwuZ21haWwuY29tCi0tLQogc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL21lc29uLmJ1aWxkICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNF90ZW1wb3JhbC5wbCB8IDY3MyArKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgNjc0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfdGVtcG9yYWwucGwKCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v bWVzb24uYnVpbGQKaW5kZXggYzU5MWNkN2Q2MTkuLmIyMzk1ZTdiNTdlIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00MCw2ICs0MCw3IEBAIHRlc3RzICs9IHsKICAg ICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCiAgICAgICAndC8wMzJfc3Vic2NyaWJlX3Vz ZV9pbmRleC5wbCcsCiAgICAgICAndC8wMzNfcnVuX2FzX3RhYmxlX293bmVyLnBsJywKKyAg ICAgICd0LzAzNF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAg XSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF90ZW1w b3JhbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF90ZW1wb3JhbC5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGY1MDFmMWNlZTgKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfdGVtcG9yYWwucGwK QEAgLTAsMCArMSw2NzMgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNCwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9u IHRlc3RzIGZvciB0ZW1wb3JhbCB0YWJsZXMKKyMKKyMgQSB0YWJsZSBjYW4gdXNlIGEgdGVt cG9yYWwgUFJJTUFSWSBLRVkgb3IgVU5JUVVFIGluZGV4IGFzIGl0cyBSRVBMSUNBIElERU5U SVRZLgorIyBUaGlzIGlzIGEgR2lTVCBpbmRleCAobm90IEItdHJlZSkgYW5kIGl0cyBsYXN0 IGVsZW1lbnQgdXNlcyBXSVRIT1VUIE9WRVJMQVBTLgorIyBUaGF0IGVsZW1lbnQgcmVzdHJp Y3RzIG90aGVyIHJvd3Mgd2l0aCBvdmVybGFwcyBzZW1hbnRpY3MgaW5zdGVhZCBvZiBlcXVh bGl0eSwKKyMgYnV0IGl0IGlzIGFsd2F5cyBhdCBsZWFzdCBhcyByZXN0cmljdGl2ZSBhcyBh IG5vcm1hbCBub24tbnVsbCB1bmlxdWUgaW5kZXguCisjIFRoZXJlZm9yZSB3ZSBjYW4gc3Rp bGwgYXBwbHkgbG9naWNhbCBkZWNvZGluZyBtZXNzYWdlcyB0byB0aGUgc3Vic2NyaWJlci4K K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBUZXN0OjpNb3JlOworCisjIHNldHVwCisKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNo ZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlz aGVyLT5zdGFydDsKKworbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsK KyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAk bm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CisKK215ICgk cmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKTsKKworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgVGVzdCB3aXRoIFJFUExJQ0EgSURFTlRJVFkgREVGQVVMVDoKKyMg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgY3JlYXRlIHRhYmxlcyBv biBwdWJsaXNoZXIKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX25vX2tleSAoaWQgaW50NHJhbmdlLCB2YWxpZF9h dCBkYXRlcmFuZ2UsIGEgdGV4dCkiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGsgKGlkIGludDRyYW5n ZSwgdmFsaWRfYXQgZGF0ZXJhbmdlLCBhIHRleHQsIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykpIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3VuaXF1ZSAoaWQgaW50 NHJhbmdlIE5PVCBOVUxMLCB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEwsIGEgdGV4dCwg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykpIgorKTsKKworIyBjcmVh dGUgdGFibGVzIG9uIHN1YnNjcmliZXIKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZW1wb3JhbF9ub19rZXkgKGlkIGludDRy YW5nZSwgdmFsaWRfYXQgZGF0ZXJhbmdlLCBhIHRleHQpIgorKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZW1wb3JhbF9w ayAoaWQgaW50NHJhbmdlLCB2YWxpZF9hdCBkYXRlcmFuZ2UsIGEgdGV4dCwgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSkiCispOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3VuaXF1ZSAoaWQgaW50NHJhbmdlIE5PVCBOVUxMLCB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9U IE5VTEwsIGEgdGV4dCwgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykp IgorKTsKKworIyBzeW5jIGluaXRpYWwgZGF0YToKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVtcG9yYWxfbm9fa2V5IChp ZCwgdmFsaWRfYXQsIGEpCisgICBWQUxVRVMgKCdbMSwyKScsICdbMjAwMC0wMS0wMSwyMDEw LTAxLTAxKScsICdhJykiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlbXBvcmFsX3BrIChpZCwgdmFsaWRfYXQsIGEpCisg ICBWQUxVRVMgKCdbMSwyKScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJykiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHRlbXBvcmFsX3VuaXF1ZSAoaWQsIHZhbGlkX2F0LCBhKQorICAgVkFMVUVTICgnWzEs MiknLCAnWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSknLCAnYScpIik7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gcHViMSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYzsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX25v X2tleSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LAorCXFxe1sxLDIp fFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpfGF9LAorCSdzeW5jZWQgdGVtcG9yYWxfbm9fa2V5 IERFRkFVTFQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BrIE9SREVSIEJZIGlkLCB2 YWxpZF9hdCIpOworaXMoJHJlc3VsdCwgcXF7WzEsMil8WzIwMDAtMDEtMDEsMjAxMC0wMS0w MSl8YX0sCisJJ3N5bmNlZCB0ZW1wb3JhbF9wayBERUZBVUxUJyk7CisKKyRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJP TSB0ZW1wb3JhbF91bmlxdWUgT1JERVIgQlkgaWQsIHZhbGlkX2F0Iik7CitpcyggJHJlc3Vs dCwKKwlxcXtbMSwyKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhfSwKKwknc3luY2VkIHRl bXBvcmFsX3VuaXF1ZSBERUZBVUxUJyk7CisKKyMgcmVwbGljYXRlIHdpdGggbm8ga2V5Ogor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ub19rZXkgKGlkLCB2YWxpZF9hdCwgYSkKKyAgIFZBTFVFUyAoJ1sy LDMpJywgJ1syMDAwLTAxLTAxLDIwMTAtMDEtMDEpJywgJ2EnKSwKKyAgICAgICAgICAoJ1sz LDQpJywgJ1syMDAwLTAxLTAxLDIwMTAtMDEtMDEpJywgJ2EnKSwKKyAgICAgICAgICAoJ1s0 LDUpJywgJ1syMDAwLTAxLTAxLDIwMTAtMDEtMDEpJywgJ2EnKSIpOworCisoJHJlc3VsdCwg JHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9wdWJsaXNoZXItPnBzcWwoJ3Bvc3RncmVzJywK KwkiVVBEQVRFIHRlbXBvcmFsX25vX2tleSBTRVQgYSA9ICdiJyBXSEVSRSBpZCA9ICdbMiwz KSciKTsKK2lzKCAkc3RkZXJyLAorCXFxKHBzcWw6PHN0ZGluPjoxOiBFUlJPUjogIGNhbm5v dCB1cGRhdGUgdGFibGUgInRlbXBvcmFsX25vX2tleSIgYmVjYXVzZSBpdCBkb2VzIG5vdCBo YXZlIGEgcmVwbGljYSBpZGVudGl0eSBhbmQgcHVibGlzaGVzIHVwZGF0ZXMKK0hJTlQ6ICBU byBlbmFibGUgdXBkYXRpbmcgdGhlIHRhYmxlLCBzZXQgUkVQTElDQSBJREVOVElUWSB1c2lu ZyBBTFRFUiBUQUJMRS4pLAorCSJjYW4ndCBVUERBVEUgdGVtcG9yYWxfbm9fa2V5IERFRkFV TFQiKTsKKworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfcHVibGlzaGVy LT5wc3FsKCdwb3N0Z3JlcycsCisJIkRFTEVURSBGUk9NIHRlbXBvcmFsX25vX2tleSBXSEVS RSBpZCA9ICdbMyw0KSciKTsKK2lzKCAkc3RkZXJyLAorCXFxKHBzcWw6PHN0ZGluPjoxOiBF UlJPUjogIGNhbm5vdCBkZWxldGUgZnJvbSB0YWJsZSAidGVtcG9yYWxfbm9fa2V5IiBiZWNh dXNlIGl0IGRvZXMgbm90IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFuZCBwdWJsaXNoZXMg ZGVsZXRlcworSElOVDogIFRvIGVuYWJsZSBkZWxldGluZyBmcm9tIHRoZSB0YWJsZSwgc2V0 IFJFUExJQ0EgSURFTlRJVFkgdXNpbmcgQUxURVIgVEFCTEUuKSwKKwkiY2FuJ3QgREVMRVRF IHRlbXBvcmFsX25vX2tleSBERUZBVUxUIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnc3ViMScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCAqIEZST00gdGVtcG9yYWxfbm9fa2V5IE9S REVSIEJZIGlkLCB2YWxpZF9hdCIpOworaXMoICRyZXN1bHQsIHFxe1sxLDIpfFsyMDAwLTAx LTAxLDIwMTAtMDEtMDEpfGEKK1syLDMpfFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpfGEKK1sz LDQpfFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpfGEKK1s0LDUpfFsyMDAwLTAxLTAxLDIwMTAt MDEtMDEpfGF9LCAncmVwbGljYXRlZCB0ZW1wb3JhbF9ub19rZXkgREVGQVVMVCcpOworCisj IHJlcGxpY2F0ZSB3aXRoIGEgcHJpbWFyeSBrZXk6CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlbXBvcmFsX3BrIChpZCwg dmFsaWRfYXQsIGEpCisgICBWQUxVRVMgKCdbMiwzKScsICdbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKScsICdhJyksCisgICAgICAgICAgKCdbMyw0KScsICdbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKScsICdhJyksCisgICAgICAgICAgKCdbNCw1KScsICdbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKScsICdhJykiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiVVBEQVRFIHRlbXBvcmFsX3BrIFNFVCBhID0gJ2InIFdIRVJFIGlkID0gJ1syLDMp JyIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJERUxF VEUgRlJPTSB0ZW1wb3JhbF9wayBXSEVSRSBpZCA9ICdbMyw0KSciKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wayBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LCBxcXtbMSwy KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKXxiCitbNCw1KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhfSwgJ3JlcGxpY2F0ZWQg dGVtcG9yYWxfcGsgREVGQVVMVCcpOworCisjIHJlcGxpY2F0ZSB3aXRoIGEgdW5pcXVlIGtl eToKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gdGVtcG9yYWxfdW5pcXVlIChpZCwgdmFsaWRfYXQsIGEpCisgICBWQUxVRVMg KCdbMiwzKScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJyksCisgICAgICAgICAg KCdbMyw0KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJyksCisgICAgICAgICAg KCdbNCw1KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJykiKTsKKworKCRyZXN1 bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfcHVibGlzaGVyLT5wc3FsKCdwb3N0Z3Jl cycsCisJIlVQREFURSB0ZW1wb3JhbF91bmlxdWUgU0VUIGEgPSAnYicgV0hFUkUgaWQgPSAn WzIsMyknIik7CitpcyggJHN0ZGVyciwKKwlxcShwc3FsOjxzdGRpbj46MTogRVJST1I6ICBj YW5ub3QgdXBkYXRlIHRhYmxlICJ0ZW1wb3JhbF91bmlxdWUiIGJlY2F1c2UgaXQgZG9lcyBu b3QgaGF2ZSBhIHJlcGxpY2EgaWRlbnRpdHkgYW5kIHB1Ymxpc2hlcyB1cGRhdGVzCitISU5U OiAgVG8gZW5hYmxlIHVwZGF0aW5nIHRoZSB0YWJsZSwgc2V0IFJFUExJQ0EgSURFTlRJVFkg dXNpbmcgQUxURVIgVEFCTEUuKSwKKwkiY2FuJ3QgVVBEQVRFIHRlbXBvcmFsX3VuaXF1ZSBE RUZBVUxUIik7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3B1Ymxp c2hlci0+cHNxbCgncG9zdGdyZXMnLAorCSJERUxFVEUgRlJPTSB0ZW1wb3JhbF91bmlxdWUg V0hFUkUgaWQgPSAnWzMsNCknIik7CitpcyggJHN0ZGVyciwKKwlxcShwc3FsOjxzdGRpbj46 MTogRVJST1I6ICBjYW5ub3QgZGVsZXRlIGZyb20gdGFibGUgInRlbXBvcmFsX3VuaXF1ZSIg YmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcmVwbGljYSBpZGVudGl0eSBhbmQgcHVibGlz aGVzIGRlbGV0ZXMKK0hJTlQ6ICBUbyBlbmFibGUgZGVsZXRpbmcgZnJvbSB0aGUgdGFibGUs IHNldCBSRVBMSUNBIElERU5USVRZIHVzaW5nIEFMVEVSIFRBQkxFLiksCisJImNhbid0IERF TEVURSB0ZW1wb3JhbF91bmlxdWUgREVGQVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3VuaXF1 ZSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LCBxcXtbMSwyKXxbMjAw MC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxh CitbMyw0KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbNCw1KXxbMjAwMC0wMS0wMSwy MDEwLTAxLTAxKXxhfSwgJ3JlcGxpY2F0ZWQgdGVtcG9yYWxfdW5pcXVlIERFRkFVTFQnKTsK KworIyBjbGVhbnVwCisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJEUk9QIFRBQkxFIHRlbXBvcmFsX25vX2tleSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdGVtcG9yYWxfcGsiKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX3Vu aXF1ZSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag UFVCTElDQVRJT04gcHViMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX25vX2tleSIpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX3BrIik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdGVt cG9yYWxfdW5pcXVlIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRST1AgU1VCU0NSSVBUSU9OIHN1YjEiKTsKKworCisjICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHdpdGggUkVQTElDQSBJREVOVElUWSBGVUxMOgor IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBjcmVhdGUgdGFibGVz IG9uIHB1Ymxpc2hlcgorCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbm9fa2V5IChpZCBpbnQ0cmFuZ2UsIHZhbGlk X2F0IGRhdGVyYW5nZSwgYSB0ZXh0KSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ub19rZXkgUkVQTElDQSBJ REVOVElUWSBGVUxMIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0ZW1wb3JhbF9wayAoaWQgaW50NHJhbmdlLCB2YWxpZF9h dCBkYXRlcmFuZ2UsIGEgdGV4dCwgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKSkiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVtcG9yYWxfcGsgUkVQTElDQSBJREVOVElUWSBGVUxMIik7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0ZW1wb3JhbF91bmlxdWUgKGlkIGludDRyYW5nZSBOT1QgTlVMTCwgdmFsaWRfYXQg ZGF0ZXJhbmdlIE5PVCBOVUxMLCBhIHRleHQsIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZW1wb3JhbF91bmlxdWUgUkVQTElDQSBJREVOVElUWSBG VUxMIik7CisKKyMgY3JlYXRlIHRhYmxlcyBvbiBzdWJzY3JpYmVyCisKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVtcG9yYWxf bm9fa2V5IChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVyYW5nZSwgYSB0ZXh0KSIKKyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVtcG9yYWxfbm9fa2V5IFJFUExJQ0EgSURFTlRJVFkgRlVMTCIpOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BrIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVyYW5nZSwgYSB0ZXh0LCBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpKSIKKyk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVtcG9y YWxfcGsgUkVQTElDQSBJREVOVElUWSBGVUxMIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVtcG9yYWxfdW5pcXVlIChp ZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgYSB0 ZXh0LCBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSkiCispOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRl bXBvcmFsX3VuaXF1ZSBSRVBMSUNBIElERU5USVRZIEZVTEwiKTsKKworIyBzeW5jIGluaXRp YWwgZGF0YToKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gdGVtcG9yYWxfbm9fa2V5IChpZCwgdmFsaWRfYXQsIGEpCisgICBW QUxVRVMgKCdbMSwyKScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJykiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHRlbXBvcmFsX3BrIChpZCwgdmFsaWRfYXQsIGEpCisgICBWQUxVRVMgKCdbMSwyKScsICdb MjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJykiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlbXBvcmFsX3VuaXF1ZSAo aWQsIHZhbGlkX2F0LCBhKQorICAgVkFMVUVTICgnWzEsMiknLCAnWzIwMDAtMDEtMDEsMjAx MC0wMS0wMSknLCAnYScpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlND UklQVElPTiBzdWIxIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJ T04gcHViMSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYzsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX25vX2tleSBPUkRFUiBCWSBpZCwgdmFs aWRfYXQiKTsKK2lzKCAkcmVzdWx0LAorCXFxe1sxLDIpfFsyMDAwLTAxLTAxLDIwMTAtMDEt MDEpfGF9LAorCSdzeW5jZWQgdGVtcG9yYWxfbm9fa2V5IEZVTEwnKTsKKworJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BrIE9SREVSIEJZIGlkLCB2YWxpZF9hdCIpOworaXMoJHJlc3VsdCwg cXF7WzEsMil8WzIwMDAtMDEtMDEsMjAxMC0wMS0wMSl8YX0sICdzeW5jZWQgdGVtcG9yYWxf cGsgRlVMTCcpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCAqIEZST00gdGVtcG9yYWxfdW5pcXVlIE9SREVSIEJZIGlk LCB2YWxpZF9hdCIpOworaXMoICRyZXN1bHQsCisJcXF7WzEsMil8WzIwMDAtMDEtMDEsMjAx MC0wMS0wMSl8YX0sCisJJ3N5bmNlZCB0ZW1wb3JhbF91bmlxdWUgRlVMTCcpOworCisjIHJl cGxpY2F0ZSB3aXRoIG5vIGtleToKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVtcG9yYWxfbm9fa2V5IChpZCwgdmFsaWRf YXQsIGEpCisgICBWQUxVRVMgKCdbMiwzKScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScs ICdhJyksCisgICAgICAgICAgKCdbMyw0KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScs ICdhJyksCisgICAgICAgICAgKCdbNCw1KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScs ICdhJykiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki VVBEQVRFIHRlbXBvcmFsX25vX2tleSBTRVQgYSA9ICdiJyBXSEVSRSBpZCA9ICdbMiwzKSci KTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiREVMRVRF IEZST00gdGVtcG9yYWxfbm9fa2V5IFdIRVJFIGlkID0gJ1szLDQpJyIpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX25vX2tleSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LCBx cXtbMSwyKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxbMjAwMC0wMS0wMSwy MDEwLTAxLTAxKXxiCitbNCw1KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhfSwgJ3JlcGxp Y2F0ZWQgdGVtcG9yYWxfbm9fa2V5IEZVTEwnKTsKKworIyByZXBsaWNhdGUgd2l0aCBhIHBy aW1hcnkga2V5OgorCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wayAoaWQsIHZhbGlkX2F0LCBhKQorICAgVkFM VUVTICgnWzIsMyknLCAnWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSknLCAnYScpLAorICAgICAg ICAgICgnWzMsNCknLCAnWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSknLCAnYScpLAorICAgICAg ICAgICgnWzQsNSknLCAnWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSknLCAnYScpIik7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSB0ZW1wb3Jh bF9wayBTRVQgYSA9ICdiJyBXSEVSRSBpZCA9ICdbMiwzKSciKTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiREVMRVRFIEZST00gdGVtcG9yYWxfcGsg V0hFUkUgaWQgPSAnWzMsNCknIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnc3ViMScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGsgT1JERVIgQlkgaWQs IHZhbGlkX2F0Iik7CitpcyggJHJlc3VsdCwgcXF7WzEsMil8WzIwMDAtMDEtMDEsMjAxMC0w MS0wMSl8YQorWzIsMyl8WzIwMDAtMDEtMDEsMjAxMC0wMS0wMSl8YgorWzQsNSl8WzIwMDAt MDEtMDEsMjAxMC0wMS0wMSl8YX0sICdyZXBsaWNhdGVkIHRlbXBvcmFsX3BrIEZVTEwnKTsK KworIyByZXBsaWNhdGUgd2l0aCBhIHVuaXF1ZSBrZXk6CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlbXBvcmFsX3VuaXF1 ZSAoaWQsIHZhbGlkX2F0LCBhKQorICAgVkFMVUVTICgnWzIsMyknLCAnWzIwMDAtMDEtMDEs MjAxMC0wMS0wMSknLCAnYScpLAorICAgICAgICAgICgnWzMsNCknLCAnWzIwMDAtMDEtMDEs MjAxMC0wMS0wMSknLCAnYScpLAorICAgICAgICAgICgnWzQsNSknLCAnWzIwMDAtMDEtMDEs MjAxMC0wMS0wMSknLCAnYScpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlVQREFURSB0ZW1wb3JhbF91bmlxdWUgU0VUIGEgPSAnYicgV0hFUkUg aWQgPSAnWzIsMyknIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkRFTEVURSBGUk9NIHRlbXBvcmFsX3VuaXF1ZSBXSEVSRSBpZCA9ICdbMyw0KSci KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUICogRlJPTSB0ZW1wb3JhbF91bmlxdWUgT1JERVIgQlkgaWQsIHZhbGlkX2F0Iik7Citp cyggJHJlc3VsdCwgcXF7WzEsMil8WzIwMDAtMDEtMDEsMjAxMC0wMS0wMSl8YQorWzIsMyl8 WzIwMDAtMDEtMDEsMjAxMC0wMS0wMSl8YgorWzQsNSl8WzIwMDAtMDEtMDEsMjAxMC0wMS0w MSl8YX0sICdyZXBsaWNhdGVkIHRlbXBvcmFsX3VuaXF1ZSBGVUxMJyk7CisKKyMgY2xlYW51 cAorCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJM RSB0ZW1wb3JhbF9ub19rZXkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX3BrIik7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0ZW1wb3JhbF91bmlxdWUiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9O IHB1YjEiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBUQUJMRSB0ZW1wb3JhbF9ub19rZXkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0ZW1wb3JhbF9wayIpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX3VuaXF1 ZSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNV QlNDUklQVElPTiBzdWIxIik7CisKKworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB3aXRoIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVgKKyMgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgY3JlYXRlIHRhYmxlcyBvbiBw dWJsaXNoZXIKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BrIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVy YW5nZSwgYSB0ZXh0LCBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBUQUJMRSB0ZW1wb3JhbF9wayBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRl bXBvcmFsX3BrX3BrZXkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3VuaXF1ZSAoaWQgaW50NHJhbmdlIE5P VCBOVUxMLCB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEwsIGEgdGV4dCwgVU5JUVVFIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlbXBvcmFsX3VuaXF1ZSBS RVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlbXBvcmFsX3VuaXF1ZV9pZF92YWxpZF9h dF9rZXkiCispOworCisjIGNyZWF0ZSB0YWJsZXMgb24gc3Vic2NyaWJlcgorCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BrIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVyYW5nZSwgYSB0ZXh0LCBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpKSIKKyk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVtcG9y YWxfcGsgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZW1wb3JhbF9wa19wa2V5Iik7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgdGVtcG9yYWxfdW5pcXVlIChpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIHZhbGlkX2F0 IGRhdGVyYW5nZSBOT1QgTlVMTCwgYSB0ZXh0LCBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKSkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlbXBvcmFsX3VuaXF1ZSBSRVBMSUNBIElERU5USVRZ IFVTSU5HIElOREVYIHRlbXBvcmFsX3VuaXF1ZV9pZF92YWxpZF9hdF9rZXkiCispOworCisj IHN5bmMgaW5pdGlhbCBkYXRhOgorCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wayAoaWQsIHZhbGlkX2F0LCBh KQorICAgVkFMVUVTICgnWzEsMiknLCAnWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSknLCAnYScp Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0ZW1wb3JhbF91bmlxdWUgKGlkLCB2YWxpZF9hdCwgYSkKKyAgIFZBTFVFUyAo J1sxLDIpJywgJ1syMDAwLTAxLTAxLDIwMTAtMDEtMDEpJywgJ2EnKSIpOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04g cHViMSBGT1IgQUxMIFRBQkxFUyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViMSBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHB1YjEiCispOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmM7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wayBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LAorCXFxe1sxLDIp fFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpfGF9LAorCSdzeW5jZWQgdGVtcG9yYWxfcGsgVVNJ TkcgSU5ERVgnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3VuaXF1ZSBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LAorCXFxe1sxLDIpfFsyMDAwLTAxLTAxLDIw MTAtMDEtMDEpfGF9LAorCSdzeW5jZWQgdGVtcG9yYWxfdW5pcXVlIFVTSU5HIElOREVYJyk7 CisKKyMgcmVwbGljYXRlIHdpdGggYSBwcmltYXJ5IGtleToKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVtcG9yYWxfcGsg KGlkLCB2YWxpZF9hdCwgYSkKKyAgIFZBTFVFUyAoJ1syLDMpJywgJ1syMDAwLTAxLTAxLDIw MTAtMDEtMDEpJywgJ2EnKSwKKyAgICAgICAgICAoJ1szLDQpJywgJ1syMDAwLTAxLTAxLDIw MTAtMDEtMDEpJywgJ2EnKSwKKyAgICAgICAgICAoJ1s0LDUpJywgJ1syMDAwLTAxLTAxLDIw MTAtMDEtMDEpJywgJ2EnKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJVUERBVEUgdGVtcG9yYWxfcGsgU0VUIGEgPSAnYicgV0hFUkUgaWQgPSAn WzIsMyknIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkRFTEVURSBGUk9NIHRlbXBvcmFsX3BrIFdIRVJFIGlkID0gJ1szLDQpJyIpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BrIE9SREVSIEJZIGlkLCB2YWxpZF9hdCIpOworaXMoICRyZXN1bHQsIHFx e1sxLDIpfFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpfGEKK1syLDMpfFsyMDAwLTAxLTAxLDIw MTAtMDEtMDEpfGIKK1s0LDUpfFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpfGF9LCAncmVwbGlj YXRlZCB0ZW1wb3JhbF9wayBVU0lORyBJTkRFWCcpOworCisjIHJlcGxpY2F0ZSB3aXRoIGEg dW5pcXVlIGtleToKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gdGVtcG9yYWxfdW5pcXVlIChpZCwgdmFsaWRfYXQsIGEpCisg ICBWQUxVRVMgKCdbMiwzKScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJyksCisg ICAgICAgICAgKCdbMyw0KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJyksCisg ICAgICAgICAgKCdbNCw1KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJykiKTsK KworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiVVBEQVRFIHRl bXBvcmFsX3VuaXF1ZSBTRVQgYSA9ICdiJyBXSEVSRSBpZCA9ICdbMiwzKSciKTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiREVMRVRFIEZST00gdGVt cG9yYWxfdW5pcXVlIFdIRVJFIGlkID0gJ1szLDQpJyIpOworCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Vu aXF1ZSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LCBxcXtbMSwyKXxb MjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAx KXxiCitbNCw1KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhfSwgJ3JlcGxpY2F0ZWQgdGVt cG9yYWxfdW5pcXVlIFVTSU5HIElOREVYJyk7CisKKyMgY2xlYW51cAorCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0ZW1wb3JhbF9wayIp OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUg dGVtcG9yYWxfdW5pcXVlIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBQVUJMSUNBVElPTiBwdWIxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdGVtcG9yYWxfcGsiKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0ZW1wb3JhbF91 bmlxdWUiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBTVUJTQ1JJUFRJT04gc3ViMSIpOworCisKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3Qgd2l0aCBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcKKyMgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgY3JlYXRlIHRhYmxlcyBvbiBw dWJsaXNoZXIKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX25vX2tleSAoaWQgaW50NHJhbmdlLCB2YWxpZF9hdCBk YXRlcmFuZ2UsIGEgdGV4dCwgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSkiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVtcG9yYWxfbm9fa2V5IFJFUExJQ0EgSURFTlRJVFkgTk9USElO RyIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgdGVtcG9yYWxfcGsgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgZGF0ZXJhbmdl LCBhIHRleHQsIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykp IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFRBQkxFIHRlbXBvcmFsX3BrIFJFUExJQ0EgSURFTlRJVFkgTk9USElORyIpOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVt cG9yYWxfdW5pcXVlIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IGRhdGVyYW5nZSwgYSB0ZXh0 LCBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSkiCispOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVtcG9y YWxfdW5pcXVlIFJFUExJQ0EgSURFTlRJVFkgTk9USElORyIpOworCisjIGNyZWF0ZSB0YWJs ZXMgb24gc3Vic2NyaWJlcgorCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX25vX2tleSAoaWQgaW50NHJhbmdlLCB2 YWxpZF9hdCBkYXRlcmFuZ2UsIGEgdGV4dCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlbXBvcmFsX25vX2tleSBSRVBM SUNBIElERU5USVRZIE5PVEhJTkciKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZW1wb3JhbF9wayAoaWQgaW50NHJhbmdl LCB2YWxpZF9hdCBkYXRlcmFuZ2UsIGEgdGV4dCwgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKSkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlbXBvcmFsX3BrIFJFUExJQ0EgSURFTlRJ VFkgTk9USElORyIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3VuaXF1ZSAoaWQgaW50NHJhbmdlLCB2YWxp ZF9hdCBkYXRlcmFuZ2UsIGEgdGV4dCwgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZW1wb3JhbF91bmlxdWUgUkVQTElDQSBJREVOVElUWSBOT1RI SU5HIik7CisKKyMgc3luYyBpbml0aWFsIGRhdGE6CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlbXBvcmFsX25vX2tleSAo aWQsIHZhbGlkX2F0LCBhKQorICAgVkFMVUVTICgnWzEsMiknLCAnWzIwMDAtMDEtMDEsMjAx MC0wMS0wMSknLCAnYScpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wayAoaWQsIHZhbGlkX2F0LCBhKQor ICAgVkFMVUVTICgnWzEsMiknLCAnWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSknLCAnYScpIik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB0ZW1wb3JhbF91bmlxdWUgKGlkLCB2YWxpZF9hdCwgYSkKKyAgIFZBTFVFUyAoJ1sx LDIpJywgJ1syMDAwLTAxLTAxLDIwMTAtMDEtMDEpJywgJ2EnKSIpOworCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gcHVi MSBGT1IgQUxMIFRBQkxFUyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViMSBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHB1YjEiCispOworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmM7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9u b19rZXkgT1JERVIgQlkgaWQsIHZhbGlkX2F0Iik7CitpcyggJHJlc3VsdCwKKwlxcXtbMSwy KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhfSwKKwknc3luY2VkIHRlbXBvcmFsX25vX2tl eSBOT1RISU5HJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wayBPUkRFUiBCWSBpZCwg dmFsaWRfYXQiKTsKK2lzKCRyZXN1bHQsIHFxe1sxLDIpfFsyMDAwLTAxLTAxLDIwMTAtMDEt MDEpfGF9LAorCSdzeW5jZWQgdGVtcG9yYWxfcGsgTk9USElORycpOworCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCAqIEZS T00gdGVtcG9yYWxfdW5pcXVlIE9SREVSIEJZIGlkLCB2YWxpZF9hdCIpOworaXMoICRyZXN1 bHQsCisJcXF7WzEsMil8WzIwMDAtMDEtMDEsMjAxMC0wMS0wMSl8YX0sCisJJ3N5bmNlZCB0 ZW1wb3JhbF91bmlxdWUgTk9USElORycpOworCisjIHJlcGxpY2F0ZSB3aXRoIG5vIGtleToK KworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiSU5TRVJU IElOVE8gdGVtcG9yYWxfbm9fa2V5IChpZCwgdmFsaWRfYXQsIGEpCisgICBWQUxVRVMgKCdb MiwzKScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJyksCisgICAgICAgICAgKCdb Myw0KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJyksCisgICAgICAgICAgKCdb NCw1KScsICdbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKScsICdhJykiKTsKKworKCRyZXN1bHQs ICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfcHVibGlzaGVyLT5wc3FsKCdwb3N0Z3Jlcycs CisJIlVQREFURSB0ZW1wb3JhbF9ub19rZXkgU0VUIGEgPSAnYicgV0hFUkUgaWQgPSAnWzIs MyknIik7CitpcyggJHN0ZGVyciwKKwlxcShwc3FsOjxzdGRpbj46MTogRVJST1I6ICBjYW5u b3QgdXBkYXRlIHRhYmxlICJ0ZW1wb3JhbF9ub19rZXkiIGJlY2F1c2UgaXQgZG9lcyBub3Qg aGF2ZSBhIHJlcGxpY2EgaWRlbnRpdHkgYW5kIHB1Ymxpc2hlcyB1cGRhdGVzCitISU5UOiAg VG8gZW5hYmxlIHVwZGF0aW5nIHRoZSB0YWJsZSwgc2V0IFJFUExJQ0EgSURFTlRJVFkgdXNp bmcgQUxURVIgVEFCTEUuKSwKKwkiY2FuJ3QgVVBEQVRFIHRlbXBvcmFsX25vX2tleSBOT1RI SU5HIik7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3B1Ymxpc2hl ci0+cHNxbCgncG9zdGdyZXMnLAorCSJERUxFVEUgRlJPTSB0ZW1wb3JhbF9ub19rZXkgV0hF UkUgaWQgPSAnWzMsNCknIik7CitpcyggJHN0ZGVyciwKKwlxcShwc3FsOjxzdGRpbj46MTog RVJST1I6ICBjYW5ub3QgZGVsZXRlIGZyb20gdGFibGUgInRlbXBvcmFsX25vX2tleSIgYmVj YXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcmVwbGljYSBpZGVudGl0eSBhbmQgcHVibGlzaGVz IGRlbGV0ZXMKK0hJTlQ6ICBUbyBlbmFibGUgZGVsZXRpbmcgZnJvbSB0aGUgdGFibGUsIHNl dCBSRVBMSUNBIElERU5USVRZIHVzaW5nIEFMVEVSIFRBQkxFLiksCisJImNhbid0IERFTEVU RSB0ZW1wb3JhbF9ub19rZXkgTk9USElORyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX25vX2tleSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LCBxcXtbMSwyKXxbMjAwMC0w MS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitb Myw0KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbNCw1KXxbMjAwMC0wMS0wMSwyMDEw LTAxLTAxKXxhfSwgJ3JlcGxpY2F0ZWQgdGVtcG9yYWxfbm9fa2V5IE5PVEhJTkcnKTsKKwor IyByZXBsaWNhdGUgd2l0aCBhIHByaW1hcnkga2V5OgorCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wayAoaWQs IHZhbGlkX2F0LCBhKQorICAgVkFMVUVTICgnWzIsMyknLCAnWzIwMDAtMDEtMDEsMjAxMC0w MS0wMSknLCAnYScpLAorICAgICAgICAgICgnWzMsNCknLCAnWzIwMDAtMDEtMDEsMjAxMC0w MS0wMSknLCAnYScpLAorICAgICAgICAgICgnWzQsNSknLCAnWzIwMDAtMDEtMDEsMjAxMC0w MS0wMSknLCAnYScpIik7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2Rl X3B1Ymxpc2hlci0+cHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUgdGVtcG9yYWxfcGsgU0VU IGEgPSAnYicgV0hFUkUgaWQgPSAnWzIsMyknIik7CitpcyggJHN0ZGVyciwKKwlxcShwc3Fs OjxzdGRpbj46MTogRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZW1wb3JhbF9wayIg YmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcmVwbGljYSBpZGVudGl0eSBhbmQgcHVibGlz aGVzIHVwZGF0ZXMKK0hJTlQ6ICBUbyBlbmFibGUgdXBkYXRpbmcgdGhlIHRhYmxlLCBzZXQg UkVQTElDQSBJREVOVElUWSB1c2luZyBBTFRFUiBUQUJMRS4pLAorCSJjYW4ndCBVUERBVEUg dGVtcG9yYWxfcGsgTk9USElORyIpOworCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikg PSAkbm9kZV9wdWJsaXNoZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiREVMRVRFIEZST00gdGVt cG9yYWxfcGsgV0hFUkUgaWQgPSAnWzMsNCknIik7CitpcyggJHN0ZGVyciwKKwlxcShwc3Fs OjxzdGRpbj46MTogRVJST1I6ICBjYW5ub3QgZGVsZXRlIGZyb20gdGFibGUgInRlbXBvcmFs X3BrIiBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYSByZXBsaWNhIGlkZW50aXR5IGFuZCBw dWJsaXNoZXMgZGVsZXRlcworSElOVDogIFRvIGVuYWJsZSBkZWxldGluZyBmcm9tIHRoZSB0 YWJsZSwgc2V0IFJFUExJQ0EgSURFTlRJVFkgdXNpbmcgQUxURVIgVEFCTEUuKSwKKwkiY2Fu J3QgREVMRVRFIHRlbXBvcmFsX3BrIE5PVEhJTkciKTsKKworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wayBP UkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lzKCAkcmVzdWx0LCBxcXtbMSwyKXxbMjAwMC0w MS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitb Myw0KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbNCw1KXxbMjAwMC0wMS0wMSwyMDEw LTAxLTAxKXxhfSwgJ3JlcGxpY2F0ZWQgdGVtcG9yYWxfcGsgTk9USElORycpOworCisjIHJl cGxpY2F0ZSB3aXRoIGEgdW5pcXVlIGtleToKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVtcG9yYWxfdW5pcXVlIChpZCwg dmFsaWRfYXQsIGEpCisgICBWQUxVRVMgKCdbMiwzKScsICdbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKScsICdhJyksCisgICAgICAgICAgKCdbMyw0KScsICdbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKScsICdhJyksCisgICAgICAgICAgKCdbNCw1KScsICdbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKScsICdhJykiKTsKKworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVf cHVibGlzaGVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSB0ZW1wb3JhbF91bmlxdWUg U0VUIGEgPSAnYicgV0hFUkUgaWQgPSAnWzIsMyknIik7CitpcyggJHN0ZGVyciwKKwlxcShw c3FsOjxzdGRpbj46MTogRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJ0ZW1wb3JhbF91 bmlxdWUiIGJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhIHJlcGxpY2EgaWRlbnRpdHkgYW5k IHB1Ymxpc2hlcyB1cGRhdGVzCitISU5UOiAgVG8gZW5hYmxlIHVwZGF0aW5nIHRoZSB0YWJs ZSwgc2V0IFJFUExJQ0EgSURFTlRJVFkgdXNpbmcgQUxURVIgVEFCTEUuKSwKKwkiY2FuJ3Qg VVBEQVRFIHRlbXBvcmFsX3VuaXF1ZSBOT1RISU5HIik7CisKKygkcmVzdWx0LCAkc3Rkb3V0 LCAkc3RkZXJyKSA9ICRub2RlX3B1Ymxpc2hlci0+cHNxbCgncG9zdGdyZXMnLAorCSJERUxF VEUgRlJPTSB0ZW1wb3JhbF91bmlxdWUgV0hFUkUgaWQgPSAnWzMsNCknIik7CitpcyggJHN0 ZGVyciwKKwlxcShwc3FsOjxzdGRpbj46MTogRVJST1I6ICBjYW5ub3QgZGVsZXRlIGZyb20g dGFibGUgInRlbXBvcmFsX3VuaXF1ZSIgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcmVw bGljYSBpZGVudGl0eSBhbmQgcHVibGlzaGVzIGRlbGV0ZXMKK0hJTlQ6ICBUbyBlbmFibGUg ZGVsZXRpbmcgZnJvbSB0aGUgdGFibGUsIHNldCBSRVBMSUNBIElERU5USVRZIHVzaW5nIEFM VEVSIFRBQkxFLiksCisJImNhbid0IERFTEVURSB0ZW1wb3JhbF91bmlxdWUgTk9USElORyIp OworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YjEnKTsKKworJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3VuaXF1ZSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQiKTsKK2lz KCAkcmVzdWx0LCBxcXtbMSwyKXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbMiwzKXxb MjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhCitbMyw0KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAx KXxhCitbNCw1KXxbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKXxhfSwgJ3JlcGxpY2F0ZWQgdGVt cG9yYWxfdW5pcXVlIE5PVEhJTkcnKTsKKworIyBjbGVhbnVwCisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX3BrIik7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0ZW1w b3JhbF91bmlxdWUiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJEUk9QIFBVQkxJQ0FUSU9OIHB1YjEiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0ZW1wb3JhbF9wayIpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRlbXBvcmFsX3VuaXF1 ZSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNV QlNDUklQVElPTiBzdWIxIik7CisKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ3LjEKCg== --------------JhqDmpNeYdEkTBRohBtj0Pjg--