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.96) (envelope-from ) id 1w53vL-002r6e-1P for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 15:44:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w53vJ-007alI-2Q for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 15:44:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w53vI-007al6-0s for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 15:44:05 +0000 Received: from fout-a8-smtp.messagingengine.com ([103.168.172.151]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w53vC-00000000oQj-3pfq for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 15:44:03 +0000 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.phl.internal (Postfix) with ESMTP id 99924EC00D7; Tue, 24 Mar 2026 11:43:57 -0400 (EDT) Received: from phl-imap-05 ([10.202.2.95]) by phl-compute-06.internal (MEProxy); Tue, 24 Mar 2026 11:43:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; 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=fm2; t=1774367037; x=1774453437; bh=0KHiTAh2Ur V1hW9MsRPHF6dUD/0UO3qarkIVCMnr6p0=; b=gdbmziMuJjsHkJBp82eoNawry/ tG7oZ0L2B0xO0grYTC6RO7JCsg+SRl7MpmPklMIL80wVJTMa5BNFMPbmFVEmrovF Ah6R1nWO/aJ4G7cvf2DNm7+53MJSU/9NltOi2Hwe8dR4m3ki6jVpvORS51U6syEv 9QoLdB5eV5SfB37FRF/T/C2OqbwuacttfoC09XEGRXKsMvh9GJIPVLJiJxtst1Ru +w+tj7D/fFEp3dOsUfzOo9Zqqxfr2AvGgsrfKVMS2hm8lIq0ecm6borYID/L9OjQ 9MueLK4oC9DvAALUZmDhR1Vcw+TjoKNq1l22b0Hs9vYu9ovqLJD8F1/ZP5lA== 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= 1774367037; x=1774453437; bh=0KHiTAh2UrV1hW9MsRPHF6dUD/0UO3qarkI VCMnr6p0=; b=r3dZCNKiY1CrbLXi2I3Fe5mCKyGb6dhbFIG4cZs0aSlRaFELg5h V0o4xVXGSMn/J4cP2Lc8+xJ7YJqlBjHCTUq5TLmPSq50aNLeXBHSxBSE2h19OgW6 CP4NbBeOVDtP7dW73OPspU34pp+WjFAK97ITtn19MpBzK3zPeeQmQvc0mlOR4TIO cHagGImlc0UB/6vBhPMfTc49hnSIPfJNPTD8PcgoP50cQUytVU87H+4dsdN5QUgI caiQIpkUSK3dLsxDiYKeWeV/eevWWZhz6t5z8RgPnt3lMulSsWIa4u2YaSIyYC5W prCzPU3aDz9sLvHELu1HxfDMhkBGCc1Zaiw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdduleejucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepofggfffhvfevkfgjfhfutgesmhdtreerredttdenucfhrhhomhepfdfguhhlvghr ucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvghrthhordgtohhmqeenucggtffrrg htthgvrhhnpeevhfevvdetkedvvdevgeevhfegtdetudehvdehfffgueeluefgveeliefg veevtdenucffohhmrghinhepphhoshhtghhrvghsqhhlrdhorhhgpdgvnhhtvghrphhrih hsvggusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhl fhhrohhmpegvuhhlvghrsegvuhhlvghrthhordgtohhmpdhnsggprhgtphhtthhopeehpd hmohguvgepshhmthhpohhuthdprhgtphhtthhopegrnhgurhgvfiesughunhhslhgrnhgv rdhnvghtpdhrtghpthhtohepjhgrphhinhhliheshhhothhmrghilhdrtghomhdprhgtph htthhopegrlhhvhhgvrhhrvgeskhhurhhilhgvmhhurdguvgdprhgtphhtthhopehpghhs qhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrghdprhgtph htthhopeiishholhhtrdhprghrrhgrghhisehpvghrtghonhgrrdgtohhm X-ME-Proxy: Feedback-ID: i0c21471d:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id D361B182007A; Tue, 24 Mar 2026 11:43:56 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AmclnrQ3QCH- Date: Tue, 24 Mar 2026 12:43:00 -0300 From: "Euler Taveira" To: "Andrew Dunstan" , =?UTF-8?Q?=C3=81lvaro_Herrera?= , "Zsolt Parragi" , "Japin Li" Cc: "PostgreSQL Hackers" Message-Id: <8ec9b67d-939e-4b22-8d56-a5129f92d32d@app.fastmail.com> In-Reply-To: References: <202603201311.yhtqmvektawm@alvherre.pgsql> Subject: Re: pg_get__*_ddl consolidation Content-Type: multipart/mixed; boundary=f56cbf558c4b43b19274fba301de58c9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --f56cbf558c4b43b19274fba301de58c9 Content-Type: text/plain Content-Transfer-Encoding: 7bit On Fri, Mar 20, 2026, at 10:31 AM, Andrew Dunstan wrote: > > Oh, hmm, yes, I think we did. Will work on it. > Here is a new patchset (v2) including all suggested changes in this thread. It fixes: * DDLOptType: comma in the last element; * union for boolval, textval, intval; * va_list in a restricted scope; * foreach_ptr + boolean in patches 0002 and 0004; * list_nth instead of list_nth_cell in patches 0002 and 0004; * OWNER = role typo. Add test; * use pstrdup for dbname; * output only database-specific GUCs; * add ACL_CONNECT check as the original patch. I removed the pg_read_all_stats case because it doesn't match the role description; However, I didn't include the suggestion to explain that pg_get_role_ddl is dependent on the DateStyle. I think it fits better in the CREATE ROLE [1] that does not mention it in the VALID UNTIL clause. I'm not opposed to the idea of adding a sentence to the function description but my suggestion is that this new sentence points to CREATE ROLE page. [1] https://www.postgresql.org/docs/current/sql-createrole.html -- Euler Taveira EDB https://www.enterprisedb.com/ --f56cbf558c4b43b19274fba301de58c9 Content-Disposition: attachment; filename*0="v2-0001-Add-DDL-option-parsing-infrastructure-for-pg_get_.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v2-0001-Add-DDL-option-parsing-infrastructure-for-pg=5Fget=5F.?= =?UTF-8?Q?patch?=" Content-Transfer-Encoding: base64 RnJvbSBhOTdlNTc2Mzk4ZWNlNThjMDY3MTczZWE3MjQ1ODg0MTViZDRhMjBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1MDo0MSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMS80XSBBZGQgRERMIG9wdGlvbiBwYXJzaW5nIGluZnJhc3RydWN0dXJlIGZv ciBwZ19nZXRfKl9kZGwKIGZ1bmN0aW9ucwoKQWRkIHBhcnNlX2RkbF9vcHRpb25zKCkgYW5k IGFwcGVuZF9kZGxfb3B0aW9uKCkgaGVscGVyIGZ1bmN0aW9ucyBpbiBhCm5ldyBkZGx1dGls cy5jIGZpbGUgdGhhdCBwcm92aWRlIGNvbW1vbiBvcHRpb24gcGFyc2luZyBmb3IgdGhlCnBn X2dldF8qX2RkbCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdoaWNoIHdpbGwgZm9sbG93IGluIGxh dGVyIHBhdGNoZXMuClRoZXNlIGFjY2VwdCBWQVJJQURJQyB0ZXh0IGFyZ3VtZW50cyBhcyBh bHRlcm5hdGluZyBuYW1lL3ZhbHVlIHBhaXJzLgoKQ2FsbGVycyBkZWNsYXJlIGFuIGFycmF5 IG9mIERkbE9wdGlvbiBkZXNjcmlwdG9ycyBzcGVjaWZ5aW5nIHRoZQphY2NlcHRlZCBvcHRp b24gbmFtZXMgYW5kIHRoZWlyIHR5cGVzIChib29sZWFuLCB0ZXh0LCBvciBpbnRlZ2VyKS4K cGFyc2VfZGRsX29wdGlvbnMoKSBtYXRjaGVzIGVhY2ggc3VwcGxpZWQgcGFpciBhZ2FpbnN0 IHRoZSBhcnJheSwKdmFsaWRhdGVzIHRoZSB2YWx1ZSwgYW5kIGZpbGxzIGluIHRoZSByZXN1 bHQgZmllbGRzLiAgVGhpcwpkZXNjcmlwdG9yLWJhc2VkIHNjaGVtZSBpcyBiYXNlZCBvbiBh biBpZGVhIGZyb20gRXVsZXIgVGF2ZWlyYS4KClRoaXMgaXMgcGxhY2VkIGluIGEgbmV3IGRk bHV0aWxzLmMgZmlsZSB3aGljaCB3aWxsIGNvbnRhaW4gdGhlCnBnX2dldF8qX2RkbCBmdW5j dGlvbnMuCgpBdXRob3I6IEFrc2hheSBKb3NoaSA8YWtzaGF5Lmpvc2hpQGVudGVycHJpc2Vk Yi5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KUmV2aWV3ZWQtYnk6IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpE aXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv Q0FLV0VCNnJtbm1HS1VBODdabXEtcz1iM1Njc25qMDJDMGtPYlFqbmJMMmFqZlBXR0V3QG1h aWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21l c3NhZ2UtaWQvZmxhdC80YzVmODk1ZS0zMjgxLTQ4ZjgtYjk0My05MjI4YjdkYTY0NzFAZ21h aWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvZmxhdC9DQU54b0xEYzZGSEJZSnZjZ09uWnlTK2pGME5VbzNMcV84My1ydHRCdUpnczlp ZF9VRGdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZp bGUgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMgIHwgMjI2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21lc29uLmJ1aWxkIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDIzMCBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvTWFrZWZpbGUKaW5kZXggYThmZDY4MDU4OWYuLjBjNzYyMTk1N2MxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L01ha2VmaWxlCkBAIC0zMSw2ICszMSw3IEBAIE9CSlMgPSBcCiAJZGF0ZXRp bWUubyBcCiAJZGF0dW0ubyBcCiAJZGJzaXplLm8gXAorCWRkbHV0aWxzLm8gXAogCWRvbWFp bnMubyBcCiAJZW5jb2RlLm8gXAogCWVudW0ubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvZGRsdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGls cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMTVkMWUwMGQ3 OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5j CkBAIC0wLDAgKzEsMjI2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGx1 dGlscy5jCisgKgkJVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgRERMIHN0YXRl bWVudHMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHBnX2dldF8qX2RkbCBmYW1p bHkgb2YgZnVuY3Rpb25zIHRoYXQgZ2VuZXJhdGUKKyAqIERETCBzdGF0ZW1lbnRzIHRvIHJl Y3JlYXRlIGRhdGFiYXNlIG9iamVjdHMgc3VjaCBhcyByb2xlcywgdGFibGVzcGFjZXMsCisg KiBhbmQgZGF0YWJhc2VzLCBhbG9uZyB3aXRoIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBmb3Ig b3B0aW9uIHBhcnNpbmcgYW5kCisgKiBwcmV0dHktcHJpbnRpbmcuCisgKgorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2Yg dGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGls cy92YXJsZW5hLmgiCisKKy8qIE9wdGlvbiB2YWx1ZSB0eXBlcyBmb3IgRERMIG9wdGlvbiBw YXJzaW5nICovCit0eXBlZGVmIGVudW0KK3sKKwlERExfT1BUX0JPT0wsCisJRERMX09QVF9U RVhULAorCURETF9PUFRfSU5ULAorfSBEZGxPcHRUeXBlOworCisvKgorICogQSBzaW5nbGUg RERMIG9wdGlvbiBkZXNjcmlwdG9yOiBjYWxsZXIgZmlsbHMgaW4gbmFtZSBhbmQgdHlwZSwK KyAqIHBhcnNlX2RkbF9vcHRpb25zIGZpbGxzIGluIGlzc2V0ICsgdGhlIGFwcHJvcHJpYXRl IHZhbHVlIGZpZWxkLgorICovCit0eXBlZGVmIHN0cnVjdCBEZGxPcHRpb24KK3sKKwljb25z dCBjaGFyICpuYW1lOwkJCS8qIG9wdGlvbiBuYW1lIChjYXNlLWluc2Vuc2l0aXZlIG1hdGNo KSAqLworCURkbE9wdFR5cGUJdHlwZTsJCQkvKiBleHBlY3RlZCB2YWx1ZSB0eXBlICovCisJ Ym9vbAkJaXNzZXQ7CQkJLyogdHJ1ZSBpZiBjYWxsZXIgc3VwcGxpZWQgdGhpcyBvcHRpb24g Ki8KKwkvKiBmaWVsZHMgZm9yIHNwZWNpZmljIG9wdGlvbiB0eXBlcyAqLworCXVuaW9uCisJ eworCQlib29sCQlib29sdmFsOwkvKiBmaWxsZWQgaW4gZm9yIERETF9PUFRfQk9PTCAqLwor CQljaGFyCSAgICp0ZXh0dmFsOwkvKiBmaWxsZWQgaW4gZm9yIERETF9PUFRfVEVYVCAocGFs bG9jJ2QpICovCisJCWludAkJCWludHZhbDsJCS8qIGZpbGxlZCBpbiBmb3IgRERMX09QVF9J TlQgKi8KKwl9OworfSBEZGxPcHRpb247CisKKworc3RhdGljIHZvaWQgcGFyc2VfZGRsX29w dGlvbnMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCB2YXJpYWRpY19zdGFydCwKKwkJ CQkJCQkgIERkbE9wdGlvbiAqb3B0cywgaW50IG5vcHRzKTsKK3N0YXRpYyB2b2lkIGFwcGVu ZF9kZGxfb3B0aW9uKFN0cmluZ0luZm8gYnVmLCBib29sIHByZXR0eSwgaW50IGluZGVudCwK KwkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCisJCQlwZ19hdHRyaWJ1dGVfcHJpbnRm KDQsIDUpOworCisKKy8qCisgKiBwYXJzZV9kZGxfb3B0aW9ucworICogCQlQYXJzZSB2YXJp YWRpYyBuYW1lL3ZhbHVlIG9wdGlvbiBwYWlycworICoKKyAqIE9wdGlvbnMgYXJlIHBhc3Nl ZCBhcyBhbHRlcm5hdGluZyBrZXkvdmFsdWUgdGV4dCBwYWlycy4gIFRoZSBjYWxsZXIKKyAq IHByb3ZpZGVzIGFuIGFycmF5IG9mIERkbE9wdGlvbiBkZXNjcmlwdG9ycyBzcGVjaWZ5aW5n IHRoZSBhY2NlcHRlZAorICogb3B0aW9uIG5hbWVzIGFuZCB0aGVpciB0eXBlczsgdGhpcyBm dW5jdGlvbiBtYXRjaGVzIGVhY2ggc3VwcGxpZWQKKyAqIHBhaXIgYWdhaW5zdCB0aGUgYXJy YXksIHZhbGlkYXRlcyB0aGUgdmFsdWUsIGFuZCBmaWxscyBpbiB0aGUKKyAqIHJlc3VsdCBm aWVsZHMuCisgKi8KK3N0YXRpYyB2b2lkCitwYXJzZV9kZGxfb3B0aW9ucyhGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbywgaW50IHZhcmlhZGljX3N0YXJ0LAorCQkJCSAgRGRsT3B0aW9uICpv cHRzLCBpbnQgbm9wdHMpCit7CisJRGF0dW0JICAgKmFyZ3M7CisJYm9vbAkgICAqbnVsbHM7 CisJT2lkCQkgICAqdHlwZXM7CisJaW50CQkJbmFyZ3M7CisKKwkvKiBDbGVhciBhbGwgb3V0 cHV0IGZpZWxkcyAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbm9wdHM7IGkrKykKKwl7CisJ CW9wdHNbaV0uaXNzZXQgPSBmYWxzZTsKKwkJc3dpdGNoIChvcHRzW2ldLnR5cGUpCisJCXsK KwkJCWNhc2UgRERMX09QVF9CT09MOgorCQkJCW9wdHNbaV0uYm9vbHZhbCA9IGZhbHNlOwor CQkJCWJyZWFrOworCQkJY2FzZSBERExfT1BUX1RFWFQ6CisJCQkJb3B0c1tpXS50ZXh0dmFs ID0gTlVMTDsKKwkJCQlicmVhazsKKwkJCWNhc2UgRERMX09QVF9JTlQ6CisJCQkJb3B0c1tp XS5pbnR2YWwgPSAwOworCQkJCWJyZWFrOworCQl9CisJfQorCisJbmFyZ3MgPSBleHRyYWN0 X3ZhcmlhZGljX2FyZ3MoZmNpbmZvLCB2YXJpYWRpY19zdGFydCwgdHJ1ZSwKKwkJCQkJCQkJ ICAmYXJncywgJnR5cGVzLCAmbnVsbHMpOworCisJaWYgKG5hcmdzIDw9IDApCisJCXJldHVy bjsKKworCS8qIEhhbmRsZSBERUZBVUxUIE5VTEwgY2FzZSAqLworCWlmIChuYXJncyA9PSAx ICYmIG51bGxzWzBdKQorCQlyZXR1cm47CisKKwlpZiAobmFyZ3MgJSAyICE9IDApCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJIGVycm1zZygidmFyaWFkaWMgYXJndW1lbnRzIG11c3QgYmUgbmFtZS92 YWx1ZSBwYWlycyIpLAorCQkJCSBlcnJoaW50KCJQcm92aWRlIGFuIGV2ZW4gbnVtYmVyIG9m IHZhcmlhZGljIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBkaXZpZGVkIGludG8gcGFpcnMuIikp KTsKKworCS8qCisJICogRm9yIGVhY2ggb3B0aW9uIG5hbWUvdmFsdWUgcGFpciwgZmluZCBj b3JyZXNwb25kaW5nIHBvc2l0aW9uYWwgb3B0aW9uCisJICogZm9yIHRoZSBvcHRpb24gbmFt ZSwgYW5kIGFzc2lnbiB0aGUgb3B0aW9uIHZhbHVlLgorCSAqLworCWZvciAoaW50IGkgPSAw OyBpIDwgbmFyZ3M7IGkgKz0gMikKKwl7CisJCWNoYXIJICAgKm5hbWU7CisJCWNoYXIJICAg KnZhbHN0cjsKKwkJRGRsT3B0aW9uICAqb3B0ID0gTlVMTDsKKworCQlpZiAobnVsbHNbaV0p CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygib3B0aW9uIG5hbWUgYXQgdmFyaWFkaWMg cG9zaXRpb24gJWQgaXMgbnVsbCIsIGkgKyAxKSkpOworCisJCW5hbWUgPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGFyZ3NbaV0pOworCisJCWlmIChudWxsc1tpICsgMV0pCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJIGVycm1zZygidmFsdWUgZm9yIG9wdGlvbiBcIiVzXCIgbXVzdCBub3QgYmUg bnVsbCIsIG5hbWUpKSk7CisKKwkJLyogRmluZCBtYXRjaGluZyBvcHRpb24gZGVzY3JpcHRv ciAqLworCQlmb3IgKGludCBqID0gMDsgaiA8IG5vcHRzOyBqKyspCisJCXsKKwkJCWlmIChw Z19zdHJjYXNlY21wKG5hbWUsIG9wdHNbal0ubmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlvcHQg PSAmb3B0c1tqXTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChvcHQgPT0gTlVM TCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgb3B0aW9uOiBc IiVzXCIiLCBuYW1lKSkpOworCisJCWlmIChvcHQtPmlzc2V0KQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgaXMgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNl IiwKKwkJCQkJCQluYW1lKSkpOworCisJCXZhbHN0ciA9IFRleHREYXR1bUdldENTdHJpbmco YXJnc1tpICsgMV0pOworCisJCXN3aXRjaCAob3B0LT50eXBlKQorCQl7CisJCQljYXNlIERE TF9PUFRfQk9PTDoKKwkJCQlpZiAoIXBhcnNlX2Jvb2wodmFsc3RyLCAmb3B0LT5ib29sdmFs KSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHZhbHVlIGZv ciBib29sZWFuIG9wdGlvbiBcIiVzXCI6ICVzIiwKKwkJCQkJCQkJCW5hbWUsIHZhbHN0cikp KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBERExfT1BUX1RFWFQ6CisJCQkJb3B0LT50ZXh0 dmFsID0gdmFsc3RyOworCQkJCXZhbHN0ciA9IE5VTEw7CS8qIGRvbid0IHBmcmVlIGJlbG93 ICovCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRERMX09QVF9JTlQ6CisJCQkJeworCQkJCQlj aGFyCSAgICplbmRwOworCQkJCQlsb25nCQl2YWw7CisKKwkJCQkJZXJybm8gPSAwOworCQkJ CQl2YWwgPSBzdHJ0b2wodmFsc3RyLCAmZW5kcCwgMTApOworCQkJCQlpZiAoKmVuZHAgIT0g J1wwJyB8fCBlcnJubyA9PSBFUkFOR0UgfHwKKwkJCQkJCXZhbCA8IFBHX0lOVDMyX01JTiB8 fCB2YWwgPiBQR19JTlQzMl9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQkJIGVy cm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgaW50ZWdlciBvcHRpb24gXCIlc1wiOiAlcyIsCisJ CQkJCQkJCQkJbmFtZSwgdmFsc3RyKSkpOworCQkJCQlvcHQtPmludHZhbCA9IChpbnQpIHZh bDsKKwkJCQl9CisJCQkJYnJlYWs7CisJCX0KKworCQlvcHQtPmlzc2V0ID0gdHJ1ZTsKKwor CQlpZiAodmFsc3RyKQorCQkJcGZyZWUodmFsc3RyKTsKKwkJcGZyZWUobmFtZSk7CisJfQor fQorCisvKgorICogSGVscGVyIHRvIGFwcGVuZCBhIGZvcm1hdHRlZCBzdHJpbmcgd2l0aCBv cHRpb25hbCBwcmV0dHktcHJpbnRpbmcuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfZGRs X29wdGlvbihTdHJpbmdJbmZvIGJ1ZiwgYm9vbCBwcmV0dHksIGludCBpbmRlbnQsCisJCQkJ ICBjb25zdCBjaGFyICpmbXQsLi4uKQoreworCisJaWYgKHByZXR0eSkKKwl7CisJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1xuJyk7CisJCWFwcGVuZFN0cmluZ0luZm9TcGFjZXMo YnVmLCBpbmRlbnQpOworCX0KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg JyAnKTsKKworCWZvciAoOzspCisJeworCQl2YV9saXN0CQlhcmdzOworCQlpbnQJCQluZWVk ZWQ7CisKKwkJdmFfc3RhcnQoYXJncywgZm10KTsKKwkJbmVlZGVkID0gYXBwZW5kU3RyaW5n SW5mb1ZBKGJ1ZiwgZm10LCBhcmdzKTsKKwkJdmFfZW5kKGFyZ3MpOworCQlpZiAobmVlZGVk ID09IDApCisJCQlicmVhazsKKwkJZW5sYXJnZVN0cmluZ0luZm8oYnVmLCBuZWVkZWQpOwor CX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tZXNvbi5idWlsZCBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tZXNvbi5idWlsZAppbmRleCBmYjgyOTRkN2U0YS4u ZDc5M2Y4MTQ1ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWVzb24uYnVpbGQKQEAgLTMwLDYg KzMwLDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnZGF0ZXRpbWUuYycsCiAg ICdkYXR1bS5jJywKICAgJ2Ric2l6ZS5jJywKKyAgJ2RkbHV0aWxzLmMnLAogICAnZG9tYWlu cy5jJywKICAgJ2VuY29kZS5jJywKICAgJ2VudW0uYycsCmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDhkZjIzODQwZTU3Li44MmEyMWE1OTNkNCAxMDA2NDQKLS0tIGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTYyNCw2ICs2MjQsOCBAQCBEU01SRW50cnlUeXBlCiBEU01S ZWdpc3RyeUN0eFN0cnVjdAogRFNNUmVnaXN0cnlFbnRyeQogRFdPUkQKK0RkbE9wdFR5cGUK K0RkbE9wdGlvbgogRGF0YURpclN5bmNNZXRob2QKIERhdGFEdW1wZXJQdHIKIERhdGFQYWdl RGVsZXRlU3RhY2sKLS0gCjIuMzkuNQoK --f56cbf558c4b43b19274fba301de58c9 Content-Disposition: attachment; filename*0="v2-0002-Add-pg_get_role_ddl-function.patch" Content-Type: text/x-patch; name="v2-0002-Add-pg_get_role_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSBjYjk0ODk2Y2FhNjkxNWE3OTgwYjA3ZjcwZjQwZDkzNmNlOTVlYjEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1MjoyNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMi80XSBBZGQgcGdfZ2V0X3JvbGVfZGRsKCkgZnVuY3Rpb24KCkFkZCBhIG5l dyBTUUwtY2FsbGFibGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBEREwgc3RhdGVtZW50 cyBuZWVkZWQKdG8gcmVjcmVhdGUgYSByb2xlLiBJdCB0YWtlcyBhIHJlZ3JvbGUgYXJndW1l bnQgYW5kIGFuIG9wdGlvbmFsIFZBUklBRElDCnRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMg dGhhdCBhcmUgc3BlY2lmaWVkIGFzIGFsdGVybmF0aW5nIG5hbWUvdmFsdWUKcGFpcnMuIFRo ZSBmb2xsb3dpbmcgb3B0aW9uIGlzIHN1cHBvcnRlZDogcHJldHR5IChib29sZWFuKSBmb3IK Zm9ybWF0dGVkIG91dHB1dC4gVGhlIHJldHVybiBpcyBvbmUgb3IgbXVsdGlwbGUgcm93cyB3 aGVyZSB0aGUgZmlyc3Qgcm93CmlzIGEgQ1JFQVRFIFJPTEUgc3RhdGVtZW50IGFuZCBzdWJz ZXF1ZW50IHJvd3MgYXJlIEFMVEVSIFJPTEUgc3RhdGVtZW50cwp0byBzZXQgc29tZSByb2xl IHByb3BlcnRpZXMuCgpBdXRob3I6IE1hcmlvIEdvbnphbGV6IDxnb256YWxlbWFyaW9AZ21h aWwuY29tPgpBdXRob3I6IEJyeWFuIEdyZWVuIDxkYnJ5YW4uZ3JlZW5AZ21haWwuY29tPgpD by1hdXRob3JlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+ClJl dmlld2VkLWJ5OiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4KUmV2aWV3ZWQt Ynk6IEphcGluIExpIDxqYXBpbmxpQGhvdG1haWwuY29tPgpSZXZpZXdlZC1ieTogUXVhbiBa b25nbGlhbmcgPHF1YW56b25nbGlhbmdAeWVhaC5uZXQ+ClJldmlld2VkLWJ5OiBqaWFuIGhl IDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC80YzVmODk1ZS0zMjgxLTQ4ZjgtYjk0 My05MjI4YjdkYTY0NzFAZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1p bmZvLnNnbWwgICAgICAgfCAgNTQgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0 aWxzLmMgICAgICAgfCAzMjggKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9yb2xlX2RkbC5vdXQgfCAxMDAgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3JvbGVfZGRsLnNxbCAgICAgIHwgIDYzICsrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDU1NSBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9yb2xlX2RkbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNz L3NxbC9yb2xlX2RkbC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5j LWluZm8uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCmluZGV4IDVi NWYxZjNjNWRmLi5hY2QxYTdjZmVlZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMv ZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwK QEAgLTM4NjAsNCArMzg2MCw1OCBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9w b3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0i ZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBG dW5jdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVuY3Rpb25zIHNob3du IGluIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSIvPgor ICAgIHJlY29uc3RydWN0IERETCBzdGF0ZW1lbnRzIGZvciB2YXJpb3VzIGdsb2JhbCBkYXRh YmFzZSBvYmplY3RzLgorICAgIEVhY2ggZnVuY3Rpb24gcmV0dXJucyBhIHNldCBvZiB0ZXh0 IHJvd3MsIG9uZSBTUUwgc3RhdGVtZW50IHBlciByb3cuCisgICAgKFRoaXMgaXMgYSBkZWNv bXBpbGVkIHJlY29uc3RydWN0aW9uLCBub3QgdGhlIG9yaWdpbmFsIHRleHQgb2YgdGhlCisg ICAgY29tbWFuZC4pICBGdW5jdGlvbnMgdGhhdCBhY2NlcHQgPGxpdGVyYWw+VkFSSUFESUM8 L2xpdGVyYWw+IG9wdGlvbnMKKyAgICB0YWtlIGFsdGVybmF0aW5nIG5hbWUvdmFsdWUgdGV4 dCBwYWlyczsgdmFsdWVzIGFyZSBwYXJzZWQgYXMgYm9vbGVhbiwKKyAgICBpbnRlZ2VyIG9y IHRleHQuCisgICA8L3BhcmE+CisKKyAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWdldC1vYmpl Y3QtZGRsLXRhYmxlIj4KKyAgICA8dGl0bGU+R2V0IE9iamVjdCBEREwgRnVuY3Rpb25zPC90 aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgICA8dGhlYWQ+CisgICAgICA8cm93 PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJm dW5jX3NpZ25hdHVyZSI+CisgICAgICAgIEZ1bmN0aW9uCisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICAgPC9yb3c+CisgICAgIDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAgICAg PHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHBy aW1hcnk+cGdfZ2V0X3JvbGVfZGRsPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4K KyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9yb2xlX2RkbDwvZnVuY3Rpb24+CisgICAgICAg ICggPHBhcmFtZXRlcj5yb2xlPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ3JvbGU8L3R5cGU+Cisg ICAgICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiA8cGFyYW1l dGVyPm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAgICAgICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9v cHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFsdWU+c2V0b2YgdGV4dDwvcmV0dXJudmFs dWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVj dHMgdGhlIDxjb21tYW5kPkNSRUFURSBST0xFPC9jb21tYW5kPiBzdGF0ZW1lbnQgYW5kIGFu eQorICAgICAgICA8Y29tbWFuZD5BTFRFUiBST0xFIC4uLiBTRVQ8L2NvbW1hbmQ+IHN0YXRl bWVudHMgZm9yIHRoZSBnaXZlbiByb2xlLgorICAgICAgICBFYWNoIHN0YXRlbWVudCBpcyBy ZXR1cm5lZCBhcyBhIHNlcGFyYXRlIHJvdy4KKyAgICAgICAgUGFzc3dvcmQgaW5mb3JtYXRp b24gaXMgbmV2ZXIgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgVGhlIGZvbGxv d2luZyBvcHRpb24gaXMgc3VwcG9ydGVkOiA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVyYWw+IChi b29sZWFuKQorICAgICAgICBmb3IgcHJldHR5LXByaW50ZWQgb3V0cHV0LgorICAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3Jv dXA+CisgICA8L3RhYmxlPgorCisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2RkbHV0aWxzLmMKaW5kZXggYTE1ZDFlMDBkNzkuLmZkODVlZGQ3ZWViIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMTgsOCArMTgsMjQgQEAKICAqLwogI2lu Y2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNs dWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9u LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19h dXRoaWQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2RiX3JvbGVfc2V0dGluZy5oIgorI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUuaCIKKyNpbmNsdWRlICJ1 dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVk ZSAidXRpbHMvdmFybGVuYS5oIgogCiAvKiBPcHRpb24gdmFsdWUgdHlwZXMgZm9yIERETCBv cHRpb24gcGFyc2luZyAqLwpAQCAtNTQsNiArNzAsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9k ZGxfb3B0aW9ucyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IHZhcmlhZGljX3N0YXJ0 LAogc3RhdGljIHZvaWQgYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYsIGJvb2wg cHJldHR5LCBpbnQgaW5kZW50LAogCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKIAkJ CXBnX2F0dHJpYnV0ZV9wcmludGYoNCwgNSk7CitzdGF0aWMgTGlzdCAqcGdfZ2V0X3JvbGVf ZGRsX2ludGVybmFsKE9pZCByb2xlaWQsIGJvb2wgcHJldHR5KTsKIAogCiAvKgpAQCAtMjI0 LDMgKzI0MSwzMTQgQEAgYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYsIGJvb2wg cHJldHR5LCBpbnQgaW5kZW50LAogCQllbmxhcmdlU3RyaW5nSW5mbyhidWYsIG5lZWRlZCk7 CiAJfQogfQorCisvKgorICogcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsCisgKgkJR2VuZXJh dGUgRERMIHN0YXRlbWVudHMgdG8gcmVjcmVhdGUgYSByb2xlCisgKgorICogUmV0dXJucyBh IExpc3Qgb2YgcGFsbG9jJ2Qgc3RyaW5ncywgZWFjaCBiZWluZyBhIGNvbXBsZXRlIFNRTCBz dGF0ZW1lbnQuCisgKiBUaGUgZmlyc3QgbGlzdCBlbGVtZW50IGlzIGFsd2F5cyB0aGUgQ1JF QVRFIFJPTEUgc3RhdGVtZW50OyBzdWJzZXF1ZW50CisgKiBlbGVtZW50cyBhcmUgQUxURVIg Uk9MRSBTRVQgc3RhdGVtZW50cyBmb3IgYW55IHJvbGUtc3BlY2lmaWMgb3IKKyAqIHJvbGUt aW4tZGF0YWJhc2UgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KKyAqLworc3RhdGljIExpc3Qg KgorcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsKE9pZCByb2xlaWQsIGJvb2wgcHJldHR5KQor eworCUhlYXBUdXBsZQl0dXBsZTsKKwlGb3JtX3BnX2F1dGhpZCByb2xlZm9ybTsKKwlTdHJp bmdJbmZvRGF0YSBidWY7CisJY2hhcgkgICAqcm9sbmFtZTsKKwlEYXR1bQkJcm9sZXZhbGlk dW50aWw7CisJYm9vbAkJaXNudWxsOworCVJlbGF0aW9uCXJlbDsKKwlTY2FuS2V5RGF0YSBz Y2Fua2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJTGlzdAkgICAqc3RhdGVtZW50cyA9IE5J TDsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKEFVVEhPSUQsIE9iamVjdElkR2V0RGF0 dW0ocm9sZWlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJ CSBlcnJtc2coInJvbGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCByb2xlaWQpKSk7 CisKKwlyb2xlZm9ybSA9IChGb3JtX3BnX2F1dGhpZCkgR0VUU1RSVUNUKHR1cGxlKTsKKwly b2xuYW1lID0gcHN0cmR1cChOYW1lU3RyKHJvbGVmb3JtLT5yb2xuYW1lKSk7CisKKwkvKgor CSAqIFdlIGRvbid0IHN1cHBvcnQgZ2VuZXJhdGluZyBEREwgZm9yIHN5c3RlbSByb2xlcy4g IFRoZSBwcmltYXJ5IHJlYXNvbgorCSAqIGZvciB0aGlzIGlzIHRoYXQgdXNlcnMgc2hvdWxk bid0IGJlIHJlY3JlYXRpbmcgdGhlbS4KKwkgKi8KKwlpZiAoSXNSZXNlcnZlZE5hbWUocm9s bmFtZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9SRVNFUlZF RF9OQU1FKSwKKwkJCQkgZXJybXNnKCJyb2xlIG5hbWUgXCIlc1wiIGlzIHJlc2VydmVkIiwg cm9sbmFtZSksCisJCQkJIGVycmRldGFpbCgiUm9sZSBuYW1lcyBzdGFydGluZyB3aXRoIFwi cGdfXCIgYXJlIHJlc2VydmVkIGZvciBzeXN0ZW0gcm9sZXMuIikpKTsKKworCWluaXRTdHJp bmdJbmZvKCZidWYpOworCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBST0xFICVz IiwgcXVvdGVfaWRlbnRpZmllcihyb2xuYW1lKSk7CisKKwkvKgorCSAqIEFwcGVuZCByb2xl IGF0dHJpYnV0ZXMuICBUaGUgb3JkZXIgaGVyZSBmb2xsb3dzIHRoZSBzYW1lIHNlcXVlbmNl IGFzCisJICogeW91J2QgdHlwaWNhbGx5IHdyaXRlIHRoZW0gaW4gYSBDUkVBVEUgUk9MRSBj b21tYW5kLCB0aG91Z2ggYW55IG9yZGVyCisJICogaXMgYWN0dWFsbHkgYWNjZXB0YWJsZSB0 byB0aGUgcGFyc2VyLgorCSAqLworCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwg NCwgIiVzIiwKKwkJCQkJICByb2xlZm9ybS0+cm9sc3VwZXIgPyAiU1VQRVJVU0VSIiA6ICJO T1NVUEVSVVNFUiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAi JXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xpbmhlcml0ID8gIklOSEVSSVQiIDogIk5PSU5I RVJJVCIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAor CQkJCQkgIHJvbGVmb3JtLT5yb2xjcmVhdGVyb2xlID8gIkNSRUFURVJPTEUiIDogIk5PQ1JF QVRFUk9MRSIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMi LAorCQkJCQkgIHJvbGVmb3JtLT5yb2xjcmVhdGVkYiA/ICJDUkVBVEVEQiIgOiAiTk9DUkVB VEVEQiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAor CQkJCQkgIHJvbGVmb3JtLT5yb2xjYW5sb2dpbiA/ICJMT0dJTiIgOiAiTk9MT0dJTiIpOwor CisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJCQkgIHJv bGVmb3JtLT5yb2xyZXBsaWNhdGlvbiA/ICJSRVBMSUNBVElPTiIgOiAiTk9SRVBMSUNBVElP TiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJ CQkgIHJvbGVmb3JtLT5yb2xieXBhc3NybHMgPyAiQllQQVNTUkxTIiA6ICJOT0JZUEFTU1JM UyIpOworCisJLyoKKwkgKiBDT05ORUNUSU9OIExJTUlUIGlzIG9ubHkgaW50ZXJlc3Rpbmcg aWYgaXQncyBub3QgLTEgKHRoZSBkZWZhdWx0LAorCSAqIG1lYW5pbmcgbm8gbGltaXQpLgor CSAqLworCWlmIChyb2xlZm9ybS0+cm9sY29ubmxpbWl0ID49IDApCisJCWFwcGVuZF9kZGxf b3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIkNPTk5FQ1RJT04gTElNSVQgJWQiLAorCQkJCQkJ ICByb2xlZm9ybS0+cm9sY29ubmxpbWl0KTsKKworCXJvbGV2YWxpZHVudGlsID0gU3lzQ2Fj aGVHZXRBdHRyKEFVVEhPSUQsIHR1cGxlLAorCQkJCQkJCQkJIEFudW1fcGdfYXV0aGlkX3Jv bHZhbGlkdW50aWwsCisJCQkJCQkJCQkgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJewor CQlUaW1lc3RhbXBUeiB0czsKKwkJaW50CQkJdHo7CisJCXN0cnVjdCBwZ190bSB0bTsKKwkJ ZnNlY190CQlmc2VjOworCQljb25zdCBjaGFyICp0em47CisJCWNoYXIJCXRzX3N0cltNQVhE QVRFTEVOICsgMV07CisKKwkJdHMgPSBEYXR1bUdldFRpbWVzdGFtcFR6KHJvbGV2YWxpZHVu dGlsKTsKKwkJaWYgKFRJTUVTVEFNUF9OT1RfRklOSVRFKHRzKSkKKwkJCUVuY29kZVNwZWNp YWxUaW1lc3RhbXAodHMsIHRzX3N0cik7CisJCWVsc2UgaWYgKHRpbWVzdGFtcDJ0bSh0cywg JnR6LCAmdG0sICZmc2VjLCAmdHpuLCBOVUxMKSA9PSAwKQorCQkJRW5jb2RlRGF0ZVRpbWUo JnRtLCBmc2VjLCB0cnVlLCB0eiwgdHpuLCBEYXRlU3R5bGUsIHRzX3N0cik7CisJCWVsc2UK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFM VUVfT1VUX09GX1JBTkdFKSwKKwkJCQkJIGVycm1zZygidGltZXN0YW1wIG91dCBvZiByYW5n ZSIpKSk7CisKKwkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiVkFMSUQg VU5USUwgJXMiLAorCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIodHNfc3RyKSk7CisJfQor CisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCS8qCisJICogV2UgaW50ZW50aW9uYWxs eSBvbWl0IFBBU1NXT1JELiAgVGhlcmUncyBubyB3YXkgdG8gcmV0cmlldmUgdGhlCisJICog b3JpZ2luYWwgcGFzc3dvcmQgdGV4dCBmcm9tIHRoZSBzdG9yZWQgaGFzaCwgYW5kIGV2ZW4g aWYgd2UgY291bGQsCisJICogZXhwb3NpbmcgcGFzc3dvcmRzIHRocm91Z2ggYSBTUUwgZnVu Y3Rpb24gd291bGQgYmUgYSBzZWN1cml0eSBpc3N1ZS4KKwkgKiBVc2VycyBtdXN0IHNldCBw YXNzd29yZHMgc2VwYXJhdGVseSBhZnRlciByZWNyZWF0aW5nIHJvbGVzLgorCSAqLworCisJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJzsnKTsKKworCXN0YXRlbWVudHMgPSBsYXBw ZW5kKHN0YXRlbWVudHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKworCS8qCisJICogTm93IHNj YW4gcGdfZGJfcm9sZV9zZXR0aW5nIGZvciBBTFRFUiBST0xFIFNFVCBjb25maWd1cmF0aW9u cy4KKwkgKgorCSAqIFRoZXNlIGNhbiBiZSByb2xlLXdpZGUgKHNldGRhdGFiYXNlID0gMCkg b3Igc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyCisJICogZGF0YWJhc2UgKHNldGRhdGFiYXNl ID0gYSB2YWxpZCBEQiBPSUQpLiAgSXQgZ2VuZXJhdGVzIG9uZSBBTFRFUgorCSAqIHN0YXRl bWVudCBwZXIgc2V0dGluZy4KKwkgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKERiUm9sZVNldHRp bmdSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZzY2Fua2V5 LAorCQkJCUFudW1fcGdfZGJfcm9sZV9zZXR0aW5nX3NldHJvbGUsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocm9sZWlkKSk7 CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIERiUm9sZVNldHRpbmdEYXRpZFJv bGlkSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEsICZzY2Fua2V5KTsKKworCXdo aWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkp CisJeworCQlGb3JtX3BnX2RiX3JvbGVfc2V0dGluZyBzZXR0aW5nID0gKEZvcm1fcGdfZGJf cm9sZV9zZXR0aW5nKSBHRVRTVFJVQ1QodHVwbGUpOworCQlPaWQJCQlkYXRpZCA9IHNldHRp bmctPnNldGRhdGFiYXNlOworCQlEYXR1bQkJZGF0dW07CisJCUFycmF5VHlwZSAgKnJlbG9w dGlvbnM7CisJCURhdHVtCSAgICpzZXR0aW5nczsKKwkJYm9vbAkgICAqbnVsbHM7CisJCWlu dAkJCW5zZXR0aW5nczsKKwkJY2hhcgkgICAqZGF0bmFtZSA9IE5VTEw7CisKKwkJLyoKKwkJ ICogSWYgc2V0ZGF0YWJhc2UgaXMgdmFsaWQsIHRoaXMgaXMgYSByb2xlLWluLWRhdGFiYXNl IHNldHRpbmc7CisJCSAqIG90aGVyd2lzZSBpdCdzIGEgcm9sZS13aWRlIHNldHRpbmcuICBM b29rIHVwIHRoZSBkYXRhYmFzZSBuYW1lIG9uY2UKKwkJICogZm9yIGFsbCBzZXR0aW5ncyBp biB0aGlzIHJvdy4KKwkJICovCisJCWlmIChPaWRJc1ZhbGlkKGRhdGlkKSkKKwkJeworCQkJ ZGF0bmFtZSA9IGdldF9kYXRhYmFzZV9uYW1lKGRhdGlkKTsKKwkJCS8qIERhdGFiYXNlIGhh cyBiZWVuIGRyb3BwZWQ7IHNraXAgYWxsIHNldHRpbmdzIGluIHRoaXMgcm93LiAqLworCQkJ aWYgKGRhdG5hbWUgPT0gTlVMTCkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAq IFRoZSBzZXRjb25maWcgY29sdW1uIGlzIGEgdGV4dCBhcnJheSBpbiAibmFtZT12YWx1ZSIg Zm9ybWF0LiBJdAorCQkgKiBzaG91bGQgbmV2ZXIgYmUgbnVsbCBmb3IgYSB2YWxpZCByb3cs IGJ1dCBiZSBkZWZlbnNpdmUuCisJCSAqLworCQlkYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBs ZSwgQW51bV9wZ19kYl9yb2xlX3NldHRpbmdfc2V0Y29uZmlnLAorCQkJCQkJCSBSZWxhdGlv bkdldERlc2NyKHJlbCksICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQkJY29udGludWU7 CisKKwkJcmVsb3B0aW9ucyA9IERhdHVtR2V0QXJyYXlUeXBlUChkYXR1bSk7CisKKwkJZGVj b25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihyZWxvcHRpb25zLCBURVhUT0lELCAmc2V0dGluZ3Ms ICZudWxscywgJm5zZXR0aW5ncyk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuc2V0dGlu Z3M7IGkrKykKKwkJeworCQkJY2hhcgkgICAqcywKKwkJCQkJICAgKnA7CisKKwkJCWlmIChu dWxsc1tpXSkKKwkJCQljb250aW51ZTsKKworCQkJcyA9IFRleHREYXR1bUdldENTdHJpbmco c2V0dGluZ3NbaV0pOworCQkJcCA9IHN0cmNocihzLCAnPScpOworCQkJaWYgKHAgPT0gTlVM TCkKKwkJCXsKKwkJCQlwZnJlZShzKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCSpwKysg PSAnXDAnOworCisJCQkvKiBCdWlsZCBhIGZyZXNoIEFMVEVSIFJPTEUgc3RhdGVtZW50IGZv ciB0aGlzIHNldHRpbmcgKi8KKwkJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIFJPTEUgJXMiLCBxdW90ZV9pZGVudGlmaWVyKHJv bG5hbWUpKTsKKworCQkJaWYgKGRhdG5hbWUgIT0gTlVMTCkKKwkJCQlhcHBlbmRTdHJpbmdJ bmZvKCZidWYsICIgSU4gREFUQUJBU0UgJXMiLAorCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmll cihkYXRuYW1lKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiBTRVQgJXMgVE8g IiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzKSk7CisKKwkJCS8qCisJCQkgKiBWYXJp YWJsZXMgdGhhdCBhcmUgbWFya2VkIEdVQ19MSVNUX1FVT1RFIHdlcmUgYWxyZWFkeSBmdWxs eQorCQkJICogcXVvdGVkIGJlZm9yZSB0aGV5IHdlcmUgcHV0IGludG8gdGhlIHNldGNvbmZp ZyBhcnJheS4gIEJyZWFrCisJCQkgKiB0aGUgbGlzdCB2YWx1ZSBhcGFydCBhbmQgdGhlbiBx dW90ZSB0aGUgZWxlbWVudHMgYXMgc3RyaW5nCisJCQkgKiBsaXRlcmFscy4KKwkJCSAqLwor CQkJaWYgKEdldENvbmZpZ09wdGlvbkZsYWdzKHMsIHRydWUpICYgR1VDX0xJU1RfUVVPVEUp CisJCQl7CisJCQkJTGlzdAkgICAqbmFtZWxpc3Q7CisJCQkJYm9vbAkJZmlyc3QgPSB0cnVl OworCisJCQkJLyogUGFyc2Ugc3RyaW5nIGludG8gbGlzdCBvZiBpZGVudGlmaWVycyAqLwor CQkJCWlmICghU3BsaXRHVUNMaXN0KHAsICcsJywgJm5hbWVsaXN0KSkKKwkJCQl7CisJCQkJ CS8qIHRoaXMgc2hvdWxkbid0IGZhaWwgcmVhbGx5ICovCisJCQkJCWVsb2coRVJST1IsICJp bnZhbGlkIGxpc3Qgc3ludGF4IGluIHNldGNvbmZpZyBpdGVtIik7CisJCQkJfQorCQkJCS8q IFNwZWNpYWwgY2FzZTogcmVwcmVzZW50IGFuIGVtcHR5IGxpc3QgYXMgTlVMTCAqLworCQkJ CWlmIChuYW1lbGlzdCA9PSBOSUwpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgIk5VTEwiKTsKKwkJCQlmb3JlYWNoX3B0cihjaGFyLCBjdXJuYW1lLCBuYW1lbGlzdCkK KwkJCQl7CisJCQkJCWlmIChmaXJzdCkKKwkJCQkJCWZpcnN0ID0gZmFsc2U7CisJCQkJCWVs c2UKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiwgIik7CisJCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgcXVvdGVfbGl0ZXJhbF9jc3RyKGN1cm5hbWUp KTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm YnVmLCBxdW90ZV9saXRlcmFsX2NzdHIocCkpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cigmYnVmLCAnOycpOworCisJCQlzdGF0ZW1lbnRzID0gbGFwcGVuZChzdGF0ZW1lbnRzLCBw c3RyZHVwKGJ1Zi5kYXRhKSk7CisKKwkJCXBmcmVlKHMpOworCQl9CisKKwkJcGZyZWUoc2V0 dGluZ3MpOworCQlwZnJlZShyZWxvcHRpb25zKTsKKworCQlpZiAoZGF0bmFtZSAhPSBOVUxM KQorCQkJcGZyZWUoZGF0bmFtZSk7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsK Kwl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlwZnJlZShidWYuZGF0 YSk7CisJcGZyZWUocm9sbmFtZSk7CisKKwlyZXR1cm4gc3RhdGVtZW50czsKK30KKworLyoK KyAqIHBnX2dldF9yb2xlX2RkbAorICoJCVJldHVybiBEREwgdG8gcmVjcmVhdGUgYSByb2xl IGFzIGEgc2V0IG9mIHRleHQgcm93cy4KKyAqCisgKiBFYWNoIHJvdyBpcyBhIGNvbXBsZXRl IFNRTCBzdGF0ZW1lbnQuICBUaGUgZmlyc3Qgcm93IGlzIGFsd2F5cyB0aGUKKyAqIENSRUFU RSBST0xFIHN0YXRlbWVudDsgc3Vic2VxdWVudCByb3dzIGFyZSBBTFRFUiBST0xFIFNFVCBz dGF0ZW1lbnRzLgorICogUmV0dXJucyBubyByb3dzIGlmIHRoZSByb2xlIGFyZ3VtZW50IGlz IE5VTEwuCisgKi8KK0RhdHVtCitwZ19nZXRfcm9sZV9kZGwoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJTGlzdAkgICAqc3RhdGVtZW50czsK KworCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNv bnRleHQ7CisJCU9pZAkJCXJvbGVpZDsKKwkJRGRsT3B0aW9uCW9wdHNbXSA9IHt7InByZXR0 eSIsIERETF9PUFRfQk9PTH19OworCisJCWZ1bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQo KTsKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0 aV9jYWxsX21lbW9yeV9jdHgpOworCisJCWlmIChQR19BUkdJU05VTEwoMCkpCisJCXsKKwkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJCVNSRl9SRVRVUk5fRE9O RShmdW5jY3R4KTsKKwkJfQorCisJCXJvbGVpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJCXBh cnNlX2RkbF9vcHRpb25zKGZjaW5mbywgMSwgb3B0cywgbGVuZ3Rob2Yob3B0cykpOworCisJ CXN0YXRlbWVudHMgPSBwZ19nZXRfcm9sZV9kZGxfaW50ZXJuYWwocm9sZWlkLAorCQkJCQkJ CQkJCQkgIG9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsKTsKKwkJZnVuY2N0eC0+ dXNlcl9mY3R4ID0gc3RhdGVtZW50czsKKwkJZnVuY2N0eC0+bWF4X2NhbGxzID0gbGlzdF9s ZW5ndGgoc3RhdGVtZW50cyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCX0KKworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCXN0YXRlbWVu dHMgPSAoTGlzdCAqKSBmdW5jY3R4LT51c2VyX2ZjdHg7CisKKwlpZiAoZnVuY2N0eC0+Y2Fs bF9jbnRyIDwgZnVuY2N0eC0+bWF4X2NhbGxzKQorCXsKKwkJY2hhcgkgICAqc3RtdDsKKwor CQlzdG10ID0gbGlzdF9udGgoc3RhdGVtZW50cywgZnVuY2N0eC0+Y2FsbF9jbnRyKTsKKwor CQlTUkZfUkVUVVJOX05FWFQoZnVuY2N0eCwgQ1N0cmluZ0dldFRleHREYXR1bShzdG10KSk7 CisJfQorCWVsc2UKKwl7CisJCWxpc3RfZnJlZV9kZWVwKHN0YXRlbWVudHMpOworCQlTUkZf UkVUVVJOX0RPTkUoZnVuY2N0eCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggMDExOGU5NzBkZGEuLmZiZDQwMGI1YTY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTg2MDMsNiArODYwMywxNCBAQAogeyBvaWQgPT4gJzI1MDgnLCBkZXNjciA9 PiAnY29uc3RyYWludCBkZXNjcmlwdGlvbiB3aXRoIHByZXR0eS1wcmludCBvcHRpb24nLAog ICBwcm9uYW1lID0+ICdwZ19nZXRfY29uc3RyYWludGRlZicsIHByb3ZvbGF0aWxlID0+ICdz JywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCiAgIHByb2FyZ3R5cGVzID0+ICdvaWQgYm9vbCcs IHByb3NyYyA9PiAncGdfZ2V0X2NvbnN0cmFpbnRkZWZfZXh0JyB9LAoreyBvaWQgPT4gJzg3 NjAnLCBkZXNjciA9PiAnZ2V0IERETCB0byByZWNyZWF0ZSBhIHJvbGUnLAorICBwcm9uYW1l ID0+ICdwZ19nZXRfcm9sZV9kZGwnLCBwcm92YXJpYWRpYyA9PiAndGV4dCcsIHByb2lzc3Ry aWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXRzZXQgPT4gJ3QnLCBw cm9yb3dzID0+ICcxMCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9 PiAncmVncm9sZSB0ZXh0JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLHZ9JywKKyAgcHJvYWxs YXJndHlwZXMgPT4gJ3tyZWdyb2xlLHRleHR9JywKKyAgcHJvbmFyZ2RlZmF1bHRzID0+ICcx JywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tOVUxMfScsCisgIHByb3NyYyA9PiAncGdfZ2V0X3Jv bGVfZGRsJyB9LAogeyBvaWQgPT4gJzI1MDknLAogICBkZXNjciA9PiAnZGVwYXJzZSBhbiBl bmNvZGVkIGV4cHJlc3Npb24gd2l0aCBwcmV0dHktcHJpbnQgb3B0aW9uJywKICAgcHJvbmFt ZSA9PiAncGdfZ2V0X2V4cHInLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4g J3RleHQnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb2xlX2Rk bC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JvbGVfZGRsLm91dApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOThlZjQyYzllMjgKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JvbGVfZGRsLm91dApAQCAt MCwwICsxLDEwMCBAQAorLS0gQ29uc2lzdGVudCB0ZXN0IHJlc3VsdHMKK1NFVCB0aW1lem9u ZSBUTyAnVVRDJzsKK1NFVCBEYXRlU3R5bGUgVE8gJ0lTTywgWU1EJzsKKy0tIENyZWF0ZSB0 ZXN0IGRhdGFiYXNlCitDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl9yb2xlX2RkbF90ZXN0 OworLS0gQmFzaWMgcm9sZQorQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MTsK K1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3Qx Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90 ZXN0MSBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURCIE5PTE9H SU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKKygxIHJvdykKKworLS0gUm9sZSB3aXRo IExPR0lOCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QyIExPR0lOOworU0VM RUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDInKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfcm9sZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIENSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDIgTk9T VVBFUlVTRVIgSU5IRVJJVCBOT0NSRUFURVJPTEUgTk9DUkVBVEVEQiBMT0dJTiBOT1JFUExJ Q0FUSU9OIE5PQllQQVNTUkxTOworKDEgcm93KQorCistLSBSb2xlIHdpdGggbXVsdGlwbGUg cHJpdmlsZWdlcworQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MworICBMT0dJ TgorICBTVVBFUlVTRVIKKyAgQ1JFQVRFREIKKyAgQ1JFQVRFUk9MRQorICBDT05ORUNUSU9O IExJTUlUIDUKKyAgVkFMSUQgVU5USUwgJzIwMzAtMTItMzEgMjM6NTk6NTkrMDAnOworU0VM RUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDMnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3JvbGVfZGRsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QzIFNVUEVSVVNFUiBJ TkhFUklUIENSRUFURVJPTEUgQ1JFQVRFREIgTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFT U1JMUyBDT05ORUNUSU9OIExJTUlUIDUgVkFMSUQgVU5USUwgJzIwMzAtMTItMzEgMjM6NTk6 NTkrMDAnOworKDEgcm93KQorCistLSBSb2xlIHdpdGggY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXJzCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0OworQUxURVIgUk9MRSBy ZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCB3b3JrX21lbSBUTyAnMjU2TUInOworQUxURVIg Uk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCBzZWFyY2hfcGF0aCBUTyAnbXlzY2hl bWEsIHB1YmxpYyc7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19y b2xlX2RkbF90ZXN0NCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfcm9sZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBST0xFIHJlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDQgTk9TVVBFUlVTRVIgSU5IRVJJVCBOT0NSRUFURVJPTEUgTk9D UkVBVEVEQiBOT0xPR0lOIE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CisgQUxURVIgUk9M RSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCB3b3JrX21lbSBUTyAnMjU2TUInOworIEFM VEVSIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NCBTRVQgc2VhcmNoX3BhdGggVE8gJ215 c2NoZW1hLCBwdWJsaWMnOworKDMgcm93cykKKworLS0gUm9sZSB3aXRoIGRhdGFiYXNlLXNw ZWNpZmljIGNvbmZpZ3VyYXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVz dDU7CitBTFRFUiBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDUgSU4gREFUQUJBU0UgcmVn cmVzc2lvbl9yb2xlX2RkbF90ZXN0IFNFVCB3b3JrX21lbSBUTyAnMTI4TUInOworU0VMRUNU ICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDUnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X3JvbGVfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1IE5P U1VQRVJVU0VSIElOSEVSSVQgTk9DUkVBVEVST0xFIE5PQ1JFQVRFREIgTk9MT0dJTiBOT1JF UExJQ0FUSU9OIE5PQllQQVNTUkxTOworIEFMVEVSIFJPTEUgcmVncmVzc19yb2xlX2RkbF90 ZXN0NSBJTiBEQVRBQkFTRSByZWdyZXNzaW9uX3JvbGVfZGRsX3Rlc3QgU0VUIHdvcmtfbWVt IFRPICcxMjhNQic7CisoMiByb3dzKQorCistLSBSb2xlIHdpdGggc3BlY2lhbCBjaGFyYWN0 ZXJzIChyZXF1aXJlcyBxdW90aW5nKQorQ1JFQVRFIFJPTEUgInJlZ3Jlc3Nfcm9sZS13aXRo LWRhc2giOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZS13 aXRoLWRhc2gnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFJPTEUgInJlZ3Jl c3Nfcm9sZS13aXRoLWRhc2giIE5PU1VQRVJVU0VSIElOSEVSSVQgTk9DUkVBVEVST0xFIE5P Q1JFQVRFREIgTk9MT0dJTiBOT1JFUExJQ0FUSU9OIE5PQllQQVNTUkxTOworKDEgcm93KQor CistLSBQcmV0dHktcHJpbnRlZCBvdXRwdXQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NF TEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3QzJywg J3ByZXR0eScsICd0cnVlJyk7CitwZ19nZXRfcm9sZV9kZGwKK0NSRUFURSBST0xFIHJlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDMKKyAgICBTVVBFUlVTRVIKKyAgICBJTkhFUklUCisgICAgQ1JF QVRFUk9MRQorICAgIENSRUFURURCCisgICAgTE9HSU4KKyAgICBOT1JFUExJQ0FUSU9OCisg ICAgTk9CWVBBU1NSTFMKKyAgICBDT05ORUNUSU9OIExJTUlUIDUKKyAgICBWQUxJRCBVTlRJ TCAnMjAzMC0xMi0zMSAyMzo1OTo1OSswMCc7CisoMSByb3cpCitccHNldCBmb3JtYXQgYWxp Z25lZAorLS0gTm9uLWV4aXN0ZW50IHJvbGUgKHNob3VsZCByZXR1cm4gbm8gcm93cykKK1NF TEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKDk5OTk5OTk6Om9pZCk7CitFUlJPUjogIHJv bGUgd2l0aCBPSUQgOTk5OTk5OSBkb2VzIG5vdCBleGlzdAorLS0gTlVMTCBpbnB1dCAoc2hv dWxkIHJldHVybiBubyByb3dzKQorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoTlVM TCk7CisgcGdfZ2V0X3JvbGVfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisK Ky0tIENsZWFudXAKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QxOworRFJPUCBS T0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDI7CitEUk9QIFJPTEUgcmVncmVzc19yb2xlX2Rk bF90ZXN0MzsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0OworRFJPUCBST0xF IHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDU7CitEUk9QIFJPTEUgInJlZ3Jlc3Nfcm9sZS13aXRo LWRhc2giOworRFJPUCBEQVRBQkFTRSByZWdyZXNzaW9uX3JvbGVfZGRsX3Rlc3Q7CistLSBS ZXNldCB0aW1lem9uZSB0byBkZWZhdWx0CitSRVNFVCB0aW1lem9uZTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDczNGRhMDU3YzM0Li43ZTA1OWNlZjAzNCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMzAsNiArMTMwLDggQEAgdGVz dDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25fam9pbiBwYXJ0 aXRpb25fcHJ1bmUgcmVsb3B0aW9ucwogIyBvaWRqb2lucyBpcyByZWFkLW9ubHksIHRob3Vn aCwgYW5kIHNob3VsZCBydW4gbGF0ZSBmb3IgYmVzdCBjb3ZlcmFnZQogdGVzdDogb2lkam9p bnMgZXZlbnRfdHJpZ2dlcgogCit0ZXN0OiByb2xlX2RkbAorCiAjIGV2ZW50X3RyaWdnZXJf bG9naW4gY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aCBhbnkgb3RoZXIgdGVzdHMgYmVj YXVzZQogIyBvbi1sb2dpbiBldmVudCBoYW5kbGluZyBjb3VsZCBjYXRjaCBjb25uZWN0aW9u IG9mIGEgY29uY3VycmVudCB0ZXN0LgogdGVzdDogZXZlbnRfdHJpZ2dlcl9sb2dpbgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm9sZV9kZGwuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcm9sZV9kZGwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5jOTUwOWFlNDc0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3JvbGVfZGRsLnNxbApAQCAtMCwwICsxLDYzIEBACistLSBDb25zaXN0ZW50 IHRlc3QgcmVzdWx0cworU0VUIHRpbWV6b25lIFRPICdVVEMnOworU0VUIERhdGVTdHlsZSBU TyAnSVNPLCBZTUQnOworCistLSBDcmVhdGUgdGVzdCBkYXRhYmFzZQorQ1JFQVRFIERBVEFC QVNFIHJlZ3Jlc3Npb25fcm9sZV9kZGxfdGVzdDsKKworLS0gQmFzaWMgcm9sZQorQ1JFQVRF IFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MTsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3Jv bGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3QxJyk7CisKKy0tIFJvbGUgd2l0aCBMT0dJ TgorQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MiBMT0dJTjsKK1NFTEVDVCAq IEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3QyJyk7CisKKy0t IFJvbGUgd2l0aCBtdWx0aXBsZSBwcml2aWxlZ2VzCitDUkVBVEUgUk9MRSByZWdyZXNzX3Jv bGVfZGRsX3Rlc3QzCisgIExPR0lOCisgIFNVUEVSVVNFUgorICBDUkVBVEVEQgorICBDUkVB VEVST0xFCisgIENPTk5FQ1RJT04gTElNSVQgNQorICBWQUxJRCBVTlRJTCAnMjAzMC0xMi0z MSAyMzo1OTo1OSswMCc7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVz c19yb2xlX2RkbF90ZXN0MycpOworCistLSBSb2xlIHdpdGggY29uZmlndXJhdGlvbiBwYXJh bWV0ZXJzCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0OworQUxURVIgUk9M RSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCB3b3JrX21lbSBUTyAnMjU2TUInOworQUxU RVIgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCBzZWFyY2hfcGF0aCBUTyAnbXlz Y2hlbWEsIHB1YmxpYyc7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVz c19yb2xlX2RkbF90ZXN0NCcpOworCistLSBSb2xlIHdpdGggZGF0YWJhc2Utc3BlY2lmaWMg Y29uZmlndXJhdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NTsKK0FM VEVSIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NSBJTiBEQVRBQkFTRSByZWdyZXNzaW9u X3JvbGVfZGRsX3Rlc3QgU0VUIHdvcmtfbWVtIFRPICcxMjhNQic7CitTRUxFQ1QgKiBGUk9N IHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0NScpOworCistLSBSb2xl IHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIChyZXF1aXJlcyBxdW90aW5nKQorQ1JFQVRFIFJP TEUgInJlZ3Jlc3Nfcm9sZS13aXRoLWRhc2giOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9s ZV9kZGwoJ3JlZ3Jlc3Nfcm9sZS13aXRoLWRhc2gnKTsKKworLS0gUHJldHR5LXByaW50ZWQg b3V0cHV0CitccHNldCBmb3JtYXQgdW5hbGlnbmVkCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9y b2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0MycsICdwcmV0dHknLCAndHJ1ZScpOwor XHBzZXQgZm9ybWF0IGFsaWduZWQKKworLS0gTm9uLWV4aXN0ZW50IHJvbGUgKHNob3VsZCBy ZXR1cm4gbm8gcm93cykKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKDk5OTk5OTk6 Om9pZCk7CisKKy0tIE5VTEwgaW5wdXQgKHNob3VsZCByZXR1cm4gbm8gcm93cykKK1NFTEVD VCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKE5VTEwpOworCistLSBDbGVhbnVwCitEUk9QIFJP TEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MTsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRs X3Rlc3QyOworRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDM7CitEUk9QIFJPTEUg cmVncmVzc19yb2xlX2RkbF90ZXN0NDsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rl c3Q1OworRFJPUCBST0xFICJyZWdyZXNzX3JvbGUtd2l0aC1kYXNoIjsKKworRFJPUCBEQVRB QkFTRSByZWdyZXNzaW9uX3JvbGVfZGRsX3Rlc3Q7CisKKy0tIFJlc2V0IHRpbWV6b25lIHRv IGRlZmF1bHQKK1JFU0VUIHRpbWV6b25lOwotLSAKMi4zOS41Cgo= --f56cbf558c4b43b19274fba301de58c9 Content-Disposition: attachment; filename*0="v2-0003-Add-pg_get_tablespace_ddl-function.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v2-0003-Add-pg=5Fget=5Ftablespace=5Fddl-function.patch?=" Content-Transfer-Encoding: base64 RnJvbSAyYzM3MzA2ZmIxNzYzNTk5MTQxYzdmMDQyNDRmMWFkODJiODQwMTIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1NToxNiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMy80XSBBZGQgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCkgZnVuY3Rpb24KTUlN RS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkFkZCBhIG5ldyBTUUwtY2FsbGFi bGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBEREwgc3RhdGVtZW50cyBuZWVkZWQKdG8g cmVjcmVhdGUgYSB0YWJsZXNwYWNlLiBJdCB0YWtlcyBhIHRhYmxlc3BhY2UgbmFtZSBvciBP SUQgYW5kIGFuCm9wdGlvbmFsIFZBUklBRElDIHRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMg dGhhdCBhcmUgc3BlY2lmaWVkIGFzCmFsdGVybmF0aW5nIG5hbWUvdmFsdWUgcGFpcnMuIFRo ZSBmb2xsb3dpbmcgb3B0aW9uIGlzIHN1cHBvcnRlZDogcHJldHR5Cihib29sZWFuKSBmb3Ig Zm9ybWF0dGVkIG91dHB1dC4gKEl0IGluY2x1ZGVzIHR3byB2YXJpYW50cyBiZWNhdXNlIHRo ZXJlCmlzIG5vIHJlZ3RhYmxlc3BhY2UgcHNldWRvdHlwZS4pIFRoZSByZXR1cm4gaXMgb25l IG9yIG11bHRpcGxlIHJvd3Mgd2hlcmUKdGhlIGZpcnN0IHJvdyBpcyBhIENSRUFURSBUQUJM RVNQQUNFIHN0YXRlbWVudCBhbmQgc3Vic2VxdWVudCByb3dzIGFyZQpBTFRFUiBUQUJMRVNQ QUNFIHN0YXRlbWVudHMgdG8gc2V0IHNvbWUgdGFibGVzcGFjZSBwcm9wZXJ0aWVzLgoKZ2V0 X3JlbG9wdGlvbnMoKSBpbiBydWxldXRpbHMuYyBpcyBtYWRlIG5vbi1zdGF0aWMgc28gaXQg Y2FuIGJlIGNhbGxlZApmcm9tIHRoZSBuZXcgZGRsdXRpbHMuYyBmaWxlLgoKQXV0aG9yOiBO aXNoYW50IFNoYXJtYSA8bmlzaGFudC5zaGFybWFAZW50ZXJwcmlzZWRiLmNvbT4KQXV0aG9y OiBNYW5uaSBXb29kIDxtYW5uaS53b29kQGVudGVycHJpc2VkYi5jb20+CkNvLWF1dGhvcmVk LWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6 IEppbSBKb25lcyA8amltLmpvbmVzQHVuaS1tdWVuc3Rlci5kZT4KUmV2aWV3ZWQtYnk6IMOB bHZhcm8gSGVycmVyYSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+ClJldmlld2VkLWJ5OiBDaGFv IExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRXVsZXIgVGF2ZWly YSA8ZXVsZXJAZXVsZXJ0by5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUtXRUI2cm1ubUdLVUE4N1ptcS1zPWIzU2Nzbmow MkMwa09iUWpuYkwyYWpmUFdHRXdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwv ZnVuYy9mdW5jLWluZm8uc2dtbCAgICAgICAgICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9kZGx1dGlscy5jICAgICAgICAgICAgIHwgMTkwICsrKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8 ICAxNiArKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlX2RkbC5vdXQg fCAgNjUgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNx bCAgICAgIHwgIDQzICsrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM0NCBpbnNlcnRpb25zKCsp LCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWlu Zm8uc2dtbAppbmRleCBhY2QxYTdjZmVlZC4uZjQ0YmQwZDBmOGIgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtaW5mby5zZ21sCkBAIC0zOTA4LDYgKzM5MDgsMzMgQEAgYWNsICAgICAgfCB7cG9z dGdyZXM9YXJ3ZER4dG0vcG9zdGdyZXMsZm9vPXIvcG9zdGdyZXN9CiAgICAgICAgIGZvciBw cmV0dHktcHJpbnRlZCBvdXRwdXQuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8 L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4K KyAgICAgICAgIDxwcmltYXJ5PnBnX2dldF90YWJsZXNwYWNlX2RkbDwvcHJpbWFyeT4KKyAg ICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfdGFibGVzcGFj ZV9kZGw8L2Z1bmN0aW9uPgorICAgICAgICAoIDxwYXJhbWV0ZXI+dGFibGVzcGFjZTwvcGFy YW1ldGVyPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgIDxvcHRpb25hbD4sIDxsaXRlcmFs PlZBUklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVyPm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAg ICAgICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJu dmFsdWU+c2V0b2YgdGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+cGdfZ2V0X3RhYmxlc3BhY2VfZGRsPC9mdW5j dGlvbj4KKyAgICAgICAgKCA8cGFyYW1ldGVyPnRhYmxlc3BhY2U8L3BhcmFtZXRlcj4gPHR5 cGU+bmFtZTwvdHlwZT4KKyAgICAgICAgPG9wdGlvbmFsPiwgPGxpdGVyYWw+VkFSSUFESUM8 L2xpdGVyYWw+IDxwYXJhbWV0ZXI+b3B0aW9uczwvcGFyYW1ldGVyPgorICAgICAgICA8dHlw ZT50ZXh0PC90eXBlPiA8L29wdGlvbmFsPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5zZXRv ZiB0ZXh0PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIFJlY29uc3RydWN0cyB0aGUgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFU1BBQ0U8L2Nv bW1hbmQ+IHN0YXRlbWVudCBmb3IKKyAgICAgICAgdGhlIHNwZWNpZmllZCB0YWJsZXNwYWNl IChieSBPSUQgb3IgbmFtZSkuICBJZiB0aGUgdGFibGVzcGFjZSBoYXMKKyAgICAgICAgb3B0 aW9ucyBzZXQsIGFuIDxjb21tYW5kPkFMVEVSIFRBQkxFU1BBQ0UgLi4uIFNFVDwvY29tbWFu ZD4gc3RhdGVtZW50CisgICAgICAgIGlzIGFsc28gcmV0dXJuZWQuICBFYWNoIHN0YXRlbWVu dCBpcyByZXR1cm5lZCBhcyBhIHNlcGFyYXRlIHJvdy4KKyAgICAgICAgVGhlIGZvbGxvd2lu ZyBvcHRpb24gaXMgc3VwcG9ydGVkOiA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVyYWw+IChib29s ZWFuKQorICAgICAgICBmb3IgZm9ybWF0dGVkIG91dHB1dC4KKyAgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAg PC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKaW5kZXggZmQ4NWVkZDdlZWIu LjBkZWVjZTkxNGNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRp bHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMjAsMTAg KzIwLDEyIEBACiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nl c3MvaHR1cF9kZXRhaWxzLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2RiX3JvbGVfc2V0dGluZy5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2Uu aCIKKyNpbmNsdWRlICJjb21tb24vcmVscGF0aC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKQEAgLTM0 LDYgKzM2LDcgQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9y dWxldXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKQEAgLTcxLDYg Kzc0LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYs IGJvb2wgcHJldHR5LCBpbnQgaW5kZW50LAogCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4u LikKIAkJCXBnX2F0dHJpYnV0ZV9wcmludGYoNCwgNSk7CiBzdGF0aWMgTGlzdCAqcGdfZ2V0 X3JvbGVfZGRsX2ludGVybmFsKE9pZCByb2xlaWQsIGJvb2wgcHJldHR5KTsKK3N0YXRpYyBM aXN0ICpwZ19nZXRfdGFibGVzcGFjZV9kZGxfaW50ZXJuYWwoT2lkIHRzaWQsIGJvb2wgcHJl dHR5KTsKK3N0YXRpYyBEYXR1bSBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCwgYm9vbCBpc251bGwpOwogCiAKIC8qCkBAIC01 NTIsMyArNTU3LDE4NiBAQCBwZ19nZXRfcm9sZV9kZGwoUEdfRlVOQ1RJT05fQVJHUykKIAkJ U1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOwogCX0KIH0KKworLyoKKyAqIHBnX2dldF90YWJs ZXNwYWNlX2RkbF9pbnRlcm5hbAorICoJCUdlbmVyYXRlIERETCBzdGF0ZW1lbnRzIHRvIHJl Y3JlYXRlIGEgdGFibGVzcGFjZS4KKyAqCisgKiBSZXR1cm5zIGEgTGlzdCBvZiBwYWxsb2Mn ZCBzdHJpbmdzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlCisgKiBDUkVBVEUgVEFCTEVT UEFDRSBzdGF0ZW1lbnQ7IGlmIHRoZSB0YWJsZXNwYWNlIGhhcyByZWxvcHRpb25zLAorICog YSBzZWNvbmQgZWxlbWVudCB3aXRoIEFMVEVSIFRBQkxFU1BBQ0UgU0VUICguLi4pIGlzIGFw cGVuZGVkLgorICovCitzdGF0aWMgTGlzdCAqCitwZ19nZXRfdGFibGVzcGFjZV9kZGxfaW50 ZXJuYWwoT2lkIHRzaWQsIGJvb2wgcHJldHR5KQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlG b3JtX3BnX3RhYmxlc3BhY2UgdHNwRm9ybTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJY2hh cgkgICAqc3BjbmFtZTsKKwljaGFyCSAgICpzcGNvd25lcjsKKwljaGFyCSAgICpwYXRoOwor CWJvb2wJCWlzTnVsbDsKKwlEYXR1bQkJZGF0dW07CisJTGlzdAkgICAqc3RhdGVtZW50cyA9 IE5JTDsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRBQkxFU1BBQ0VPSUQsIE9iamVj dElkR2V0RGF0dW0odHNpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNU KSwKKwkJCQkgZXJybXNnKCJ0YWJsZXNwYWNlIHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCXRzaWQpKSk7CisKKwl0c3BGb3JtID0gKEZvcm1fcGdfdGFibGVzcGFjZSkg R0VUU1RSVUNUKHR1cGxlKTsKKwlzcGNuYW1lID0gcHN0cmR1cChOYW1lU3RyKHRzcEZvcm0t PnNwY25hbWUpKTsKKworCS8qCisJICogV2UgZG9uJ3Qgc3VwcG9ydCBnZW5lcmF0aW5nIERE TCBmb3Igc3lzdGVtIHRhYmxlc3BhY2VzLiAgVGhlIHByaW1hcnkKKwkgKiByZWFzb24gZm9y IHRoaXMgaXMgdGhhdCB1c2VycyBzaG91bGRuJ3QgYmUgcmVjcmVhdGluZyB0aGVtLgorCSAq LworCWlmIChJc1Jlc2VydmVkTmFtZShzcGNuYW1lKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1JFU0VSVkVEX05BTUUpLAorCQkJCSBlcnJtc2coInRhYmxl c3BhY2UgbmFtZSBcIiVzXCIgaXMgcmVzZXJ2ZWQiLCBzcGNuYW1lKSwKKwkJCQkgZXJyZGV0 YWlsKCJUYWJsZXNwYWNlIG5hbWVzIHN0YXJ0aW5nIHdpdGggXCJwZ19cIiBhcmUgcmVzZXJ2 ZWQgZm9yIHN5c3RlbSB0YWJsZXNwYWNlcy4iKSkpOworCisJaW5pdFN0cmluZ0luZm8oJmJ1 Zik7CisKKwkvKiBTdGFydCBidWlsZGluZyB0aGUgQ1JFQVRFIFRBQkxFU1BBQ0Ugc3RhdGVt ZW50ICovCisJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQ1JFQVRFIFRBQkxFU1BBQ0UgJXMi LCBxdW90ZV9pZGVudGlmaWVyKHNwY25hbWUpKTsKKworCS8qIEFkZCBPV05FUiBjbGF1c2Ug Ki8KKwlzcGNvd25lciA9IEdldFVzZXJOYW1lRnJvbUlkKHRzcEZvcm0tPnNwY293bmVyLCBm YWxzZSk7CisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiT1dORVIgJXMi LAorCQkJCQkgIHF1b3RlX2lkZW50aWZpZXIoc3Bjb3duZXIpKTsKKwlwZnJlZShzcGNvd25l cik7CisKKwkvKiBGaW5kIHRhYmxlc3BhY2UgZGlyZWN0b3J5IHBhdGggKi8KKwlwYXRoID0g Z2V0X3RhYmxlc3BhY2VfbG9jYXRpb24odHNpZCk7CisKKwkvKiBBZGQgZGlyZWN0b3J5IExP Q0FUSU9OIChwYXRoKSwgaWYgaXQgZXhpc3RzICovCisJaWYgKHBhdGhbMF0gIT0gJ1wwJykK Kwl7CisJCS8qCisJCSAqIFNwZWNpYWwgY2FzZTogaWYgdGhlIHRhYmxlc3BhY2Ugd2FzIGNy ZWF0ZWQgd2l0aCBHVUMKKwkJICogImFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1 ZSIgYW5kICJMT0NBVElPTiAnJyIsIHBhdGggd2lsbAorCQkgKiBiZWdpbiB3aXRoICJwZ190 YmxzcGMvIi4gSW4gdGhhdCBjYXNlLCBzaG93ICJMT0NBVElPTiAnJyIgYXMgdGhlCisJCSAq IHVzZXIgb3JpZ2luYWxseSBzcGVjaWZpZWQuCisJCSAqLworCQlpZiAoc3RybmNtcChQR19U QkxTUENfRElSX1NMQVNILCBwYXRoLCBzdHJsZW4oUEdfVEJMU1BDX0RJUl9TTEFTSCkpID09 IDApCisJCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMT0NBVElPTiAn JyIpOworCQllbHNlCisJCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJM T0NBVElPTiAlcyIsCisJCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIocGF0aCkpOworCX0K KwlwZnJlZShwYXRoKTsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICc7Jyk7CisJ c3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChidWYuZGF0YSkpOwor CisJLyogQ2hlY2sgZm9yIHRhYmxlc3BhY2Ugb3B0aW9ucyAqLworCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKFRBQkxFU1BBQ0VPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfdGFibGVz cGFjZV9zcGNvcHRpb25zLCAmaXNOdWxsKTsKKwlpZiAoIWlzTnVsbCkKKwl7CisJCXJlc2V0 U3RyaW5nSW5mbygmYnVmKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxURVIgVEFC TEVTUEFDRSAlcyBTRVQgKCIsCisJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzcGNuYW1lKSk7 CisJCWdldF9yZWxvcHRpb25zKCZidWYsIGRhdHVtKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmYnVmLCAiKTsiKTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywg cHN0cmR1cChidWYuZGF0YSkpOworCX0KKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJ cGZyZWUoYnVmLmRhdGEpOworCisJcmV0dXJuIHN0YXRlbWVudHM7Cit9CisKKy8qCisgKiBw Z19nZXRfdGFibGVzcGFjZV9kZGxfc3JmIC0gY29tbW9uIFNSRiBsb2dpYyBmb3IgdGFibGVz cGFjZSBEREwKKyAqLworc3RhdGljIERhdHVtCitwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3Jm KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCwgYm9vbCBpc251bGwpCit7CisJ RnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCUxpc3QJICAgKnN0YXRlbWVudHM7CisKKwlp ZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCQlEZGxPcHRpb24Jb3B0c1tdID0ge3sicHJldHR5IiwgRERMX09QVF9CT09MfX07CisK KwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCQlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisK KwkJaWYgKGlzbnVsbCkKKwkJeworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQl9CisKKwkJcGFyc2VfZGRs X29wdGlvbnMoZmNpbmZvLCAxLCBvcHRzLCBsZW5ndGhvZihvcHRzKSk7CisKKwkJc3RhdGVt ZW50cyA9IHBnX2dldF90YWJsZXNwYWNlX2RkbF9pbnRlcm5hbCh0c2lkLAorCQkJCQkJCQkJ CQkJCW9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsKTsKKwkJZnVuY2N0eC0+dXNl cl9mY3R4ID0gc3RhdGVtZW50czsKKwkJZnVuY2N0eC0+bWF4X2NhbGxzID0gbGlzdF9sZW5n dGgoc3RhdGVtZW50cyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCX0KKworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCXN0YXRlbWVudHMg PSAoTGlzdCAqKSBmdW5jY3R4LT51c2VyX2ZjdHg7CisKKwlpZiAoZnVuY2N0eC0+Y2FsbF9j bnRyIDwgZnVuY2N0eC0+bWF4X2NhbGxzKQorCXsKKwkJY2hhcgkgICAqc3RtdDsKKworCQlz dG10ID0gKGNoYXIgKikgbGlzdF9udGgoc3RhdGVtZW50cywgZnVuY2N0eC0+Y2FsbF9jbnRy KTsKKworCQlTUkZfUkVUVVJOX05FWFQoZnVuY2N0eCwgQ1N0cmluZ0dldFRleHREYXR1bShz dG10KSk7CisJfQorCWVsc2UKKwl7CisJCWxpc3RfZnJlZV9kZWVwKHN0YXRlbWVudHMpOwor CQlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CisJfQorfQorCisvKgorICogcGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsX29pZAorICoJCVJldHVybiBEREwgdG8gcmVjcmVhdGUgYSB0YWJsZXNw YWNlLCB0YWtpbmcgT0lELgorICovCitEYXR1bQorcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX29p ZChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXRzaWQgPSBJbnZhbGlkT2lkOworCWJv b2wJCWlzbnVsbDsKKworCWlzbnVsbCA9IFBHX0FSR0lTTlVMTCgwKTsKKwl0c2lkID0gUEdf R0VUQVJHX09JRCgwKTsKKworCXJldHVybiBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmKGZj aW5mbywgdHNpZCwgaXNudWxsKTsKK30KKworLyoKKyAqIHBnX2dldF90YWJsZXNwYWNlX2Rk bF9uYW1lCisgKgkJUmV0dXJuIERETCB0byByZWNyZWF0ZSBhIHRhYmxlc3BhY2UsIHRha2lu ZyBuYW1lLgorICovCitEYXR1bQorcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX25hbWUoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlPaWQJCQl0c2lkID0gSW52YWxpZE9pZDsKKwlOYW1lCQl0c3Bu YW1lOworCWJvb2wJCWlzbnVsbDsKKworCWlzbnVsbCA9IFBHX0FSR0lTTlVMTCgwKTsKKwor CWlmICghaXNudWxsKQorCXsKKwkJdHNwbmFtZSA9IFBHX0dFVEFSR19OQU1FKDApOworCQl0 c2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKE5hbWVTdHIoKnRzcG5hbWUpLCBmYWxzZSk7CisJ fQorCisJcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYoZmNpbmZvLCB0c2lkLCBp c251bGwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDdiYzEyNTg5 ZTQwLi4xNDUwYzEwMWU5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt NTQ1LDcgKzU0NSw3IEBAIHN0YXRpYyB2b2lkIGFkZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVm LCBPaWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25h bWUoT2lkIHR5cGlkKTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4dChjaGFyICpzdHIp Owogc3RhdGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwotc3RhdGlj IHZvaWQgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMp Owordm9pZAkJZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlv bnMpOwogc3RhdGljIHZvaWQgZ2V0X2pzb25fcGF0aF9zcGVjKE5vZGUgKnBhdGhfc3BlYywg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGJvb2wgc2hvd2ltcGxpY2l0 KTsKIHN0YXRpYyB2b2lkIGdldF9qc29uX3RhYmxlX2NvbHVtbnMoVGFibGVGdW5jICp0Ziwg SnNvblRhYmxlUGF0aFNjYW4gKnNjYW4sCkBAIC0xNDE5OSw3ICsxNDE5OSw3IEBAIHN0cmlu Z190b190ZXh0KGNoYXIgKnN0cikKIC8qCiAgKiBHZW5lcmF0ZSBhIEMgc3RyaW5nIHJlcHJl c2VudGluZyBhIHJlbGF0aW9uIG9wdGlvbnMgZnJvbSB0ZXh0W10gZGF0dW0uCiAgKi8KLXN0 YXRpYyB2b2lkCit2b2lkCiBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0g cmVsb3B0aW9ucykKIHsKIAlEYXR1bQkgICAqb3B0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IGZiZDQwMGI1YTY3Li5mNWJhYTBkNjJmMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC04NjExLDYgKzg2MTEsMjIgQEAKICAgcHJvYWxsYXJndHlwZXMg PT4gJ3tyZWdyb2xlLHRleHR9JywKICAgcHJvbmFyZ2RlZmF1bHRzID0+ICcxJywgcHJvYXJn ZGVmYXVsdHMgPT4gJ3tOVUxMfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X3JvbGVfZGRsJyB9 LAoreyBvaWQgPT4gJzg3NTgnLCBkZXNjciA9PiAnZ2V0IERETCB0byByZWNyZWF0ZSBhIHRh Ymxlc3BhY2UnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfdGFibGVzcGFjZV9kZGwnLCBwcm92 YXJpYWRpYyA9PiAndGV4dCcsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUg PT4gJ3MnLCBwcm9yZXRzZXQgPT4gJ3QnLCBwcm9yb3dzID0+ICcxMCcsIHByb3JldHR5cGUg PT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAnb2lkIHRleHQnLAorICBwcm9hcmdtb2Rl cyA9PiAne2ksdn0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCx0ZXh0fScsCisgIHBy b25hcmdkZWZhdWx0cyA9PiAnMScsIHByb2FyZ2RlZmF1bHRzID0+ICd7TlVMTH0nLAorICBw cm9zcmMgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbF9vaWQnIH0sCit7IG9pZCA9PiAnODc1 OScsIGRlc2NyID0+ICdnZXQgRERMIHRvIHJlY3JlYXRlIGEgdGFibGVzcGFjZScsCisgIHBy b25hbWUgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0 JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHNl dCA9PiAndCcsIHByb3Jvd3MgPT4gJzEwJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHBy b2FyZ3R5cGVzID0+ICduYW1lIHRleHQnLAorICBwcm9hcmdtb2RlcyA9PiAne2ksdn0nLAor ICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsdGV4dH0nLAorICBwcm9uYXJnZGVmYXVsdHMg PT4gJzEnLCBwcm9hcmdkZWZhdWx0cyA9PiAne05VTEx9JywKKyAgcHJvc3JjID0+ICdwZ19n ZXRfdGFibGVzcGFjZV9kZGxfbmFtZScgfSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3Ig PT4gJ2RlcGFyc2UgYW4gZW5jb2RlZCBleHByZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9w dGlvbicsCiAgIHByb25hbWUgPT4gJ3BnX2dldF9leHByJywgcHJvdm9sYXRpbGUgPT4gJ3Mn LCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggOTA4 YjI3MDhlZDQuLmFjNDBkNGM3MTRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9y dWxldXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNTEs NiArNTEsNyBAQCBleHRlcm4gY2hhciAqZ2V0X3dpbmRvd19mcmFtZV9vcHRpb25zX2Zvcl9l eHBsYWluKGludCBmcmFtZU9wdGlvbnMsCiBleHRlcm4gY2hhciAqZ2VuZXJhdGVfY29sbGF0 aW9uX25hbWUoT2lkIGNvbGxpZCk7CiBleHRlcm4gY2hhciAqZ2VuZXJhdGVfb3BjbGFzc19u YW1lKE9pZCBvcGNsYXNzKTsKIGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0 cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpOworZXh0ZXJuIHZvaWQgZ2V0X3JlbG9wdGlvbnMo U3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOwogCiBleHRlcm4gY2hhciAqcGdf Z2V0X3N0YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2VfZGRsLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTM4NDFhN2RlMQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0CkBA IC0wLDAgKzEsNjUgQEAKKy0tCistLSBUZXN0cyBmb3IgcGdfZ2V0X3RhYmxlc3BhY2VfZGRs KCkKKy0tCitTRVQgYWxsb3dfaW5fcGxhY2VfdGFibGVzcGFjZXMgPSB0cnVlOworQ1JFQVRF IFJPTEUgcmVncmVzc190YmxzcGNfZGRsX3VzZXI7CistLSBlcnJvcjogbm9uLWV4aXN0ZW50 IHRhYmxlc3BhY2UgYnkgbmFtZQorU0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFjZV9k ZGwoJ3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfdGJsc3AnKTsKK0VSUk9SOiAgdGFibGVzcGFjZSAi cmVncmVzc19ub25leGlzdGVudF90YmxzcCIgZG9lcyBub3QgZXhpc3QKKy0tIGVycm9yOiBu b24tZXhpc3RlbnQgdGFibGVzcGFjZSBieSBPSUQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsKDA6Om9pZCk7CitFUlJPUjogIHRhYmxlc3BhY2Ugd2l0aCBPSUQgMCBk b2VzIG5vdCBleGlzdAorLS0gTlVMTCBpbnB1dCByZXR1cm5zIG5vIHJvd3MgKG5hbWUgdmFy aWFudCkKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKE5VTEw6Om5hbWUp OworIHBnX2dldF90YWJsZXNwYWNlX2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiso MCByb3dzKQorCistLSBOVUxMIGlucHV0IHJldHVybnMgbm8gcm93cyAoT0lEIHZhcmlhbnQp CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbChOVUxMOjpvaWQpOworIHBn X2dldF90YWJsZXNwYWNlX2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoMCByb3dz KQorCistLSB0YWJsZXNwYWNlIG5hbWUgcmVxdWlyaW5nIHF1b3RpbmcKK0NSRUFURSBUQUJM RVNQQUNFICJyZWdyZXNzXyB0YmxzcCIgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIg TE9DQVRJT04gJyc7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgncmVn cmVzc18gdGJsc3AnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVEFCTEVTUEFDRSAicmVncmVzc18gdGJsc3AiIE9X TkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyIExPQ0FUSU9OICcnOworKDEgcm93KQorCitE Uk9QIFRBQkxFU1BBQ0UgInJlZ3Jlc3NfIHRibHNwIjsKKy0tIHRhYmxlc3BhY2Ugd2l0aCBt dWx0aXBsZSBvcHRpb25zCitDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9wdF90Ymxz cCBPV05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAnJworICBXSVRIIChz ZXFfcGFnZV9jb3N0ID0gJzEuNScsIHJhbmRvbV9wYWdlX2Nvc3QgPSAnMS4xMjM0NTY3ODkw JywKKyAgICAgICAgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5ID0gJzE3JywgbWFpbnRlbmFu Y2VfaW9fY29uY3VycmVuY3kgPSAnMTgnKTsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxl c3BhY2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfdGFibGVzcGFjZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBUQUJM RVNQQUNFIHJlZ3Jlc3NfYWxsb3B0X3RibHNwIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91 c2VyIExPQ0FUSU9OICcnOworIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc19hbGxvcHRfdGJs c3AgU0VUIChzZXFfcGFnZV9jb3N0PScxLjUnLCByYW5kb21fcGFnZV9jb3N0PScxLjEyMzQ1 Njc4OTAnLCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3k9JzE3JywgbWFpbnRlbmFuY2VfaW9f Y29uY3VycmVuY3k9JzE4Jyk7CisoMiByb3dzKQorCistLSBwcmV0dHktcHJpbnRlZCBvdXRw dXQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxl c3BhY2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcsICdwcmV0dHknLCAndHJ1ZScpOwor cGdfZ2V0X3RhYmxlc3BhY2VfZGRsCitDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9w dF90YmxzcAorICAgIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyCisgICAgTE9DQVRJ T04gJyc7CitBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxsb3B0X3RibHNwIFNFVCAoc2Vx X3BhZ2VfY29zdD0nMS41JywgcmFuZG9tX3BhZ2VfY29zdD0nMS4xMjM0NTY3ODkwJywgZWZm ZWN0aXZlX2lvX2NvbmN1cnJlbmN5PScxNycsIG1haW50ZW5hbmNlX2lvX2NvbmN1cnJlbmN5 PScxOCcpOworKDIgcm93cykKK1xwc2V0IGZvcm1hdCBhbGlnbmVkCitEUk9QIFRBQkxFU1BB Q0UgcmVncmVzc19hbGxvcHRfdGJsc3A7CistLSB0ZXN0IGJ5IE9JRAorQ1JFQVRFIFRBQkxF U1BBQ0UgcmVncmVzc19vaWRfdGJsc3AgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIg TE9DQVRJT04gJyc7CitTRUxFQ1Qgb2lkIEFTIHRzaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdI RVJFIHNwY25hbWUgPSAncmVncmVzc19vaWRfdGJsc3AnIFxnc2V0CitTRUxFQ1QgKiBGUk9N IHBnX2dldF90YWJsZXNwYWNlX2RkbCg6dHNpZCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF90YWJsZXNwYWNlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVEFCTEVTUEFDRSBy ZWdyZXNzX29pZF90YmxzcCBPV05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElP TiAnJzsKKygxIHJvdykKKworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3Nfb2lkX3RibHNwOwor RFJPUCBST0xFIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKaW5kZXggN2UwNTljZWYwMzQuLmYzYTAxYWVjZjA0IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzMCw3ICsxMzAsNyBAQCB0ZXN0OiBwYXJ0 aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9w cnVuZSByZWxvcHRpb25zCiAjIG9pZGpvaW5zIGlzIHJlYWQtb25seSwgdGhvdWdoLCBhbmQg c2hvdWxkIHJ1biBsYXRlIGZvciBiZXN0IGNvdmVyYWdlCiB0ZXN0OiBvaWRqb2lucyBldmVu dF90cmlnZ2VyCiAKLXRlc3Q6IHJvbGVfZGRsCit0ZXN0OiByb2xlX2RkbCB0YWJsZXNwYWNl X2RkbAogCiAjIGV2ZW50X3RyaWdnZXJfbG9naW4gY2Fubm90IHJ1biBjb25jdXJyZW50bHkg d2l0aCBhbnkgb3RoZXIgdGVzdHMgYmVjYXVzZQogIyBvbi1sb2dpbiBldmVudCBoYW5kbGlu ZyBjb3VsZCBjYXRjaCBjb25uZWN0aW9uIG9mIGEgY29uY3VycmVudCB0ZXN0LgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi45MGVlNmMxZDcwMwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNxbApAQCAtMCwwICsxLDQzIEBA CistLQorLS0gVGVzdHMgZm9yIHBnX2dldF90YWJsZXNwYWNlX2RkbCgpCistLQorCitTRVQg YWxsb3dfaW5fcGxhY2VfdGFibGVzcGFjZXMgPSB0cnVlOworQ1JFQVRFIFJPTEUgcmVncmVz c190YmxzcGNfZGRsX3VzZXI7CisKKy0tIGVycm9yOiBub24tZXhpc3RlbnQgdGFibGVzcGFj ZSBieSBuYW1lCitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgncmVncmVz c19ub25leGlzdGVudF90YmxzcCcpOworCistLSBlcnJvcjogbm9uLWV4aXN0ZW50IHRhYmxl c3BhY2UgYnkgT0lECitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgwOjpv aWQpOworCistLSBOVUxMIGlucHV0IHJldHVybnMgbm8gcm93cyAobmFtZSB2YXJpYW50KQor U0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFjZV9kZGwoTlVMTDo6bmFtZSk7CisKKy0t IE5VTEwgaW5wdXQgcmV0dXJucyBubyByb3dzIChPSUQgdmFyaWFudCkKK1NFTEVDVCAqIEZS T00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKE5VTEw6Om9pZCk7CisKKy0tIHRhYmxlc3BhY2Ug bmFtZSByZXF1aXJpbmcgcXVvdGluZworQ1JFQVRFIFRBQkxFU1BBQ0UgInJlZ3Jlc3NfIHRi bHNwIiBPV05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAnJzsKK1NFTEVD VCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCdyZWdyZXNzXyB0YmxzcCcpOworRFJP UCBUQUJMRVNQQUNFICJyZWdyZXNzXyB0YmxzcCI7CisKKy0tIHRhYmxlc3BhY2Ugd2l0aCBt dWx0aXBsZSBvcHRpb25zCitDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9wdF90Ymxz cCBPV05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAnJworICBXSVRIIChz ZXFfcGFnZV9jb3N0ID0gJzEuNScsIHJhbmRvbV9wYWdlX2Nvc3QgPSAnMS4xMjM0NTY3ODkw JywKKyAgICAgICAgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5ID0gJzE3JywgbWFpbnRlbmFu Y2VfaW9fY29uY3VycmVuY3kgPSAnMTgnKTsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxl c3BhY2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcpOworCistLSBwcmV0dHktcHJpbnRl ZCBvdXRwdXQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCAqIEZST00gcGdfZ2V0 X3RhYmxlc3BhY2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcsICdwcmV0dHknLCAndHJ1 ZScpOworXHBzZXQgZm9ybWF0IGFsaWduZWQKK0RST1AgVEFCTEVTUEFDRSByZWdyZXNzX2Fs bG9wdF90YmxzcDsKKworLS0gdGVzdCBieSBPSUQKK0NSRUFURSBUQUJMRVNQQUNFIHJlZ3Jl c3Nfb2lkX3RibHNwIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyIExPQ0FUSU9OICcn OworU0VMRUNUIG9pZCBBUyB0c2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1l ID0gJ3JlZ3Jlc3Nfb2lkX3RibHNwJyBcZ3NldAorU0VMRUNUICogRlJPTSBwZ19nZXRfdGFi bGVzcGFjZV9kZGwoOnRzaWQpOworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3Nfb2lkX3RibHNw OworCitEUk9QIFJPTEUgcmVncmVzc190YmxzcGNfZGRsX3VzZXI7Ci0tIAoyLjM5LjUKCg== --f56cbf558c4b43b19274fba301de58c9 Content-Disposition: attachment; filename*0="v2-0004-Add-pg_get_database_ddl-function.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v2-0004-Add-pg=5Fget=5Fdatabase=5Fddl-function.patch?=" Content-Transfer-Encoding: base64 RnJvbSA0YWVmZDFiNTk3YzhjZTdhZjA0MmVhNGRlZGZjYWYzNWM4MGIyMjZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1NzozNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjIgNC80XSBBZGQgcGdfZ2V0X2RhdGFiYXNlX2RkbCgpIGZ1bmN0aW9uCk1JTUUt VmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpBZGQgYSBuZXcgU1FMLWNhbGxhYmxl IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgRERMIHN0YXRlbWVudHMgbmVlZGVkCnRvIHJl Y3JlYXRlIGEgZGF0YWJhc2UuIEl0IHRha2VzIGEgcmVnZGF0YWJhc2UgYXJndW1lbnQgYW5k IGFuIG9wdGlvbmFsClZBUklBRElDIHRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMgdGhhdCBh cmUgc3BlY2lmaWVkIGFzIGFsdGVybmF0aW5nCm5hbWUvdmFsdWUgcGFpcnMuIFRoZSBmb2xs b3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiBwcmV0dHkgKGJvb2xlYW4pCmZvciBmb3Jt YXR0ZWQgb3V0cHV0LCBvd25lciAoYm9vbGVhbikgdG8gaW5jbHVkZSBPV05FUiBhbmQgdGFi bGVzcGFjZQooYm9vbGVhbikgdG8gaW5jbHVkZSBUQUJMRVNQQUNFLiBUaGUgcmV0dXJuIGlz IG9uZSBvciBtdWx0aXBsZSByb3dzCndoZXJlIHRoZSBmaXJzdCByb3cgaXMgYSBDUkVBVEUg REFUQUJBU0Ugc3RhdGVtZW50IGFuZCBzdWJzZXF1ZW50IHJvd3MgYXJlCkFMVEVSIERBVEFC QVNFIHN0YXRlbWVudHMgdG8gc2V0IHNvbWUgZGF0YWJhc2UgcHJvcGVydGllcy4KCkF1dGhv cjogQWtzaGF5IEpvc2hpIDxha3NoYXkuam9zaGlAZW50ZXJwcmlzZWRiLmNvbT4KQ28tYXV0 aG9yZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdl ZC1ieTogSmFwaW4gTGkgPGphcGlubGlAaG90bWFpbC5jb20+ClJldmlld2VkLWJ5OiBDaGFv IExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogw4FsdmFybyBIZXJy ZXJhIDxhbHZoZXJyZUBrdXJpbGVtdS5kZT4KUmV2aWV3ZWQtYnk6IEV1bGVyIFRhdmVpcmEg PGV1bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogUXVhbiBab25nbGlhbmcgPHF1YW56 b25nbGlhbmdAeWVhaC5uZXQ+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvZmxhdC9DQU54b0xEYzZGSEJZSnZjZ09uWnlTK2pGME5VbzNMcV84 My1ydHRCdUpnczlpZF9VRGdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWluZm8uc2dtbCAgICAgICAgICAgfCAgMjMgKysKIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9kZGx1dGlscy5jICAgICAgICAgICB8IDM1OSArKysrKysrKysrKysrKysrKysrKysK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICB8ICAgOCArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2RkbC5vdXQgfCAxMTMgKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgIHwgICAyICst CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZV9kZGwuc3FsICAgICAgfCAgOTEgKysr KysrCiA2IGZpbGVzIGNoYW5nZWQsIDU5NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFz ZV9kZGwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0 YWJhc2VfZGRsLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5m by5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5kZXggZjQ0YmQw ZDBmOGIuLmNlNjE5NGY2MDZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5j LWluZm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbApAQCAt MzkzNSw2ICszOTM1LDI5IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRtL3Bvc3Rn cmVzLGZvbz1yL3Bvc3RncmVzfQogICAgICAgICBmb3IgZm9ybWF0dGVkIG91dHB1dC4KICAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWdu YXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0 X2RhdGFiYXNlX2RkbDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAg IDxmdW5jdGlvbj5wZ19nZXRfZGF0YWJhc2VfZGRsPC9mdW5jdGlvbj4KKyAgICAgICAgKCA8 cGFyYW1ldGVyPmRhdGFiYXNlPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ2RhdGFiYXNlPC90eXBl PgorICAgICAgICA8b3B0aW9uYWw+LCA8bGl0ZXJhbD5WQVJJQURJQzwvbGl0ZXJhbD4gPHBh cmFtZXRlcj5vcHRpb25zPC9wYXJhbWV0ZXI+CisgICAgICAgIDx0eXBlPnRleHQ8L3R5cGU+ IDwvb3B0aW9uYWw+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPnNldG9mIHRleHQ8L3JldHVy bnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVjb25z dHJ1Y3RzIHRoZSA8Y29tbWFuZD5DUkVBVEUgREFUQUJBU0U8L2NvbW1hbmQ+IHN0YXRlbWVu dCBmb3IgdGhlCisgICAgICAgIHNwZWNpZmllZCBkYXRhYmFzZSwgZm9sbG93ZWQgYnkgPGNv bW1hbmQ+QUxURVIgREFUQUJBU0U8L2NvbW1hbmQ+CisgICAgICAgIHN0YXRlbWVudHMgZm9y IGNvbm5lY3Rpb24gbGltaXQsIHRlbXBsYXRlIHN0YXR1cywgYW5kIGNvbmZpZ3VyYXRpb24K KyAgICAgICAgc2V0dGluZ3MuICBFYWNoIHN0YXRlbWVudCBpcyByZXR1cm5lZCBhcyBhIHNl cGFyYXRlIHJvdy4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBzdXBwb3J0 ZWQ6CisgICAgICAgIDxsaXRlcmFsPnByZXR0eTwvbGl0ZXJhbD4gKGJvb2xlYW4pIGZvciBm b3JtYXR0ZWQgb3V0cHV0LAorICAgICAgICA8bGl0ZXJhbD5vd25lcjwvbGl0ZXJhbD4gKGJv b2xlYW4pIHRvIGluY2x1ZGUgPGxpdGVyYWw+T1dORVI8L2xpdGVyYWw+LAorICAgICAgICBh bmQgPGxpdGVyYWw+dGFibGVzcGFjZTwvbGl0ZXJhbD4gKGJvb2xlYW4pIHRvIGluY2x1ZGUK KyAgICAgICAgPGxpdGVyYWw+VEFCTEVTUEFDRTwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4K ICAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jCmluZGV4IDBkZWVjZTkx NGNlLi4xMDcxOTg1Yzk5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Rk bHV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKQEAgLTIy LDExICsyMiwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNs dWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVk ZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJy YXkuaCIKQEAgLTM1LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgog I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgor I2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgog I2luY2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCkBAIC03Niw2ICs4MCw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZF9kZGxfb3B0aW9uKFN0 cmluZ0luZm8gYnVmLCBib29sIHByZXR0eSwgaW50IGluZGVudCwKIHN0YXRpYyBMaXN0ICpw Z19nZXRfcm9sZV9kZGxfaW50ZXJuYWwoT2lkIHJvbGVpZCwgYm9vbCBwcmV0dHkpOwogc3Rh dGljIExpc3QgKnBnX2dldF90YWJsZXNwYWNlX2RkbF9pbnRlcm5hbChPaWQgdHNpZCwgYm9v bCBwcmV0dHkpOwogc3RhdGljIERhdHVtIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYoRnVu Y3Rpb25DYWxsSW5mbyBmY2luZm8sIE9pZCB0c2lkLCBib29sIGlzbnVsbCk7CitzdGF0aWMg TGlzdCAqcGdfZ2V0X2RhdGFiYXNlX2RkbF9pbnRlcm5hbChPaWQgZGJpZCwgYm9vbCBwcmV0 dHksCisJCQkJCQkJCQkJICBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3BhY2UpOwog CiAKIC8qCkBAIC03NDAsMyArNzQ2LDM1NiBAQCBwZ19nZXRfdGFibGVzcGFjZV9kZGxfbmFt ZShQR19GVU5DVElPTl9BUkdTKQogCiAJcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2RkbF9z cmYoZmNpbmZvLCB0c2lkLCBpc251bGwpOwogfQorCisvKgorICogcGdfZ2V0X2RhdGFiYXNl X2RkbF9pbnRlcm5hbAorICoJCUdlbmVyYXRlIERETCBzdGF0ZW1lbnRzIHRvIHJlY3JlYXRl IGEgZGF0YWJhc2UuCisgKgorICogUmV0dXJucyBhIExpc3Qgb2YgcGFsbG9jJ2Qgc3RyaW5n cy4gIFRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZQorICogQ1JFQVRFIERBVEFCQVNFIHN0YXRl bWVudDsgc3Vic2VxdWVudCBlbGVtZW50cyBhcmUgQUxURVIgREFUQUJBU0UKKyAqIHN0YXRl bWVudHMgZm9yIHByb3BlcnRpZXMgYW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuCisgKi8K K3N0YXRpYyBMaXN0ICoKK3BnX2dldF9kYXRhYmFzZV9kZGxfaW50ZXJuYWwoT2lkIGRiaWQs IGJvb2wgcHJldHR5LAorCQkJCQkJCSBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3Bh Y2UpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfZGF0YWJhc2UgZGJmb3JtOwor CVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwlib29sCQlpc251bGw7CisJRGF0dW0JCWRhdHVtOwor CWNvbnN0IGNoYXIgKmVuY29kaW5nOworCWNoYXIJICAgKmRibmFtZTsKKwljaGFyCSAgICpj b2xsYXRlOworCWNoYXIJICAgKmN0eXBlOworCVJlbGF0aW9uCXJlbDsKKwlTY2FuS2V5RGF0 YSBzY2Fua2V5WzJdOworCVN5c1NjYW5EZXNjIHNjYW47CisJTGlzdAkgICAqc3RhdGVtZW50 cyA9IE5JTDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCisJdHVwbGUgPSBTZWFyY2hTeXND YWNoZTEoREFUQUJBU0VPSUQsIE9iamVjdElkR2V0RGF0dW0oZGJpZCkpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJkYXRhYmFzZSB3aXRo IE9JRCAldSBkb2VzIG5vdCBleGlzdCIsIGRiaWQpKSk7CisKKwkvKiBVc2VyIG11c3QgaGF2 ZSBjb25uZWN0IHByaXZpbGVnZSBmb3IgdGFyZ2V0IGRhdGFiYXNlLiAqLworCWFjbHJlc3Vs dCA9IG9iamVjdF9hY2xjaGVjayhEYXRhYmFzZVJlbGF0aW9uSWQsIGRiaWQsIEdldFVzZXJJ ZCgpLCBBQ0xfQ09OTkVDVCk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJ YWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfREFUQUJBU0UsCisJCQkJCSAgIGdl dF9kYXRhYmFzZV9uYW1lKGRiaWQpKTsKKworCWRiZm9ybSA9IChGb3JtX3BnX2RhdGFiYXNl KSBHRVRTVFJVQ1QodHVwbGUpOworCWRibmFtZSA9IHBzdHJkdXAoTmFtZVN0cihkYmZvcm0t PmRhdG5hbWUpKTsKKworCS8qCisJICogV2UgZG9uJ3Qgc3VwcG9ydCBnZW5lcmF0aW5nIERE TCBmb3Igc3lzdGVtIGRhdGFiYXNlcy4gIFRoZSBwcmltYXJ5CisJICogcmVhc29uIGZvciB0 aGlzIGlzIHRoYXQgdXNlcnMgc2hvdWxkbid0IGJlIHJlY3JlYXRpbmcgdGhlbS4KKwkgKi8K KwlpZiAoc3RyY21wKGRibmFtZSwgInRlbXBsYXRlMCIpID09IDAgfHwgc3RyY21wKGRibmFt ZSwgInRlbXBsYXRlMSIpID09IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9SRVNFUlZFRF9OQU1FKSwKKwkJCQkgZXJybXNnKCJkYXRhYmFzZSBcIiVzXCIg aXMgYSBzeXN0ZW0gZGF0YWJhc2UiLCBkYm5hbWUpKSk7CisKKwlpbml0U3RyaW5nSW5mbygm YnVmKTsKKworCS8qIC0tLSBCdWlsZCBDUkVBVEUgREFUQUJBU0Ugc3RhdGVtZW50IC0tLSAq LworCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBEQVRBQkFTRSAlcyIsIHF1b3Rl X2lkZW50aWZpZXIoZGJuYW1lKSk7CisKKwlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0 dHksIDQsICJXSVRIIFRFTVBMQVRFID0gdGVtcGxhdGUwIik7CisKKwkvKiBFTkNPRElORyAq LworCWVuY29kaW5nID0gcGdfZW5jb2RpbmdfdG9fY2hhcihkYmZvcm0tPmVuY29kaW5nKTsK KwlpZiAoc3RybGVuKGVuY29kaW5nKSA+IDApCisJCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYs IHByZXR0eSwgNCwgIkVOQ09ESU5HID0gJXMiLAorCQkJCQkJICBxdW90ZV9saXRlcmFsX2Nz dHIoZW5jb2RpbmcpKTsKKworCS8qIExPQ0FMRV9QUk9WSURFUiAqLworCWlmIChkYmZvcm0t PmRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9CVUlMVElOIHx8CisJCWRiZm9ybS0+ ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSB8fAorCQlkYmZvcm0tPmRhdGxv Y3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKQorCQlhcHBlbmRfZGRsX29wdGlvbigm YnVmLCBwcmV0dHksIDQsICJMT0NBTEVfUFJPVklERVIgPSAlcyIsCisJCQkJCQkgIGNvbGxw cm92aWRlcl9uYW1lKGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIpKTsKKwllbHNlCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgbG9jYWxlIHByb3ZpZGVyOiAlYyIs CisJCQkJCQlkYmZvcm0tPmRhdGxvY3Byb3ZpZGVyKSkpOworCisJLyogTE9DQUxFLCBMQ19D T0xMQVRFLCBMQ19DVFlQRSAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNF T0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbGxhdGUsICZpc251 bGwpOworCWlmICghaXNudWxsKQorCQljb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhk YXR1bSk7CisJZWxzZQorCQljb2xsYXRlID0gIiI7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0 dHIoREFUQUJBU0VPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfZGF0YWJhc2VfZGF0Y3R5 cGUsICZpc251bGwpOworCWlmICghaXNudWxsKQorCQljdHlwZSA9IFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pOworCWVsc2UKKwkJY3R5cGUgPSAiIjsKKwlpZiAoc3RybGVuKGNvbGxh dGUpID4gMCAmJiBzdHJjbXAoY29sbGF0ZSwgY3R5cGUpID09IDApCisJeworCQlhcHBlbmRf ZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMT0NBTEUgPSAlcyIsCisJCQkJCQkgIHF1 b3RlX2xpdGVyYWxfY3N0cihjb2xsYXRlKSk7CisJfQorCWVsc2UKKwl7CisJCWlmIChzdHJs ZW4oY29sbGF0ZSkgPiAwKQorCQkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0 LCAiTENfQ09MTEFURSA9ICVzIiwKKwkJCQkJCQkgIHF1b3RlX2xpdGVyYWxfY3N0cihjb2xs YXRlKSk7CisJCWlmIChzdHJsZW4oY3R5cGUpID4gMCkKKwkJCWFwcGVuZF9kZGxfb3B0aW9u KCZidWYsIHByZXR0eSwgNCwgIkxDX0NUWVBFID0gJXMiLAorCQkJCQkJCSAgcXVvdGVfbGl0 ZXJhbF9jc3RyKGN0eXBlKSk7CisJfQorCisJLyogTE9DQUxFIChwcm92aWRlci1zcGVjaWZp YykgKi8KKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGUsCisJ CQkJCQkJQW51bV9wZ19kYXRhYmFzZV9kYXRsb2NhbGUsICZpc251bGwpOworCWlmICghaXNu dWxsKQorCXsKKwkJY29uc3QgY2hhciAqbG9jYWxlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhk YXR1bSk7CisKKwkJaWYgKGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0JVSUxUSU4pCisJCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJCVUlM VElOX0xPQ0FMRSA9ICVzIiwKKwkJCQkJCQkgIHF1b3RlX2xpdGVyYWxfY3N0cihsb2NhbGUp KTsKKwkJZWxzZSBpZiAoZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVKQorCQkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiSUNVX0xPQ0FM RSA9ICVzIiwKKwkJCQkJCQkgIHF1b3RlX2xpdGVyYWxfY3N0cihsb2NhbGUpKTsKKwl9CisK KwkvKiBJQ1VfUlVMRVMgKi8KKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9J RCwgdHVwbGUsCisJCQkJCQkJQW51bV9wZ19kYXRhYmFzZV9kYXRpY3VydWxlcywgJmlzbnVs bCk7CisJaWYgKCFpc251bGwgJiYgZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJP VklERVJfSUNVKQorCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJJQ1Vf UlVMRVMgPSAlcyIsCisJCQkJCQkgIHF1b3RlX2xpdGVyYWxfY3N0cihUZXh0RGF0dW1HZXRD U3RyaW5nKGRhdHVtKSkpOworCisJLyogVEFCTEVTUEFDRSAqLworCWlmICghbm9fdGFibGVz cGFjZSAmJiBPaWRJc1ZhbGlkKGRiZm9ybS0+ZGF0dGFibGVzcGFjZSkpCisJeworCQljaGFy CSAgICpzcGNuYW1lID0gZ2V0X3RhYmxlc3BhY2VfbmFtZShkYmZvcm0tPmRhdHRhYmxlc3Bh Y2UpOworCisJCWlmIChwZ19zdHJjYXNlY21wKHNwY25hbWUsICJwZ19kZWZhdWx0IikgIT0g MCkKKwkJCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIlRBQkxFU1BBQ0Ug PSAlcyIsCisJCQkJCQkJICBxdW90ZV9pZGVudGlmaWVyKHNwY25hbWUpKTsKKwl9CisKKwlh cHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnOycpOworCXN0YXRlbWVudHMgPSBsYXBwZW5k KHN0YXRlbWVudHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKworCS8qIE9XTkVSICovCisJaWYg KCFub19vd25lciAmJiBPaWRJc1ZhbGlkKGRiZm9ybS0+ZGF0ZGJhKSkKKwl7CisJCWNoYXIJ ICAgKm93bmVyID0gR2V0VXNlck5hbWVGcm9tSWQoZGJmb3JtLT5kYXRkYmEsIGZhbHNlKTsK KworCQlyZXNldFN0cmluZ0luZm8oJmJ1Zik7CisJCWFwcGVuZFN0cmluZ0luZm8oJmJ1Ziwg IkFMVEVSIERBVEFCQVNFICVzIE9XTkVSIFRPICVzOyIsCisJCQkJCQkgcXVvdGVfaWRlbnRp ZmllcihkYm5hbWUpLCBxdW90ZV9pZGVudGlmaWVyKG93bmVyKSk7CisJCXBmcmVlKG93bmVy KTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChidWYuZGF0 YSkpOworCX0KKworCS8qIENPTk5FQ1RJT04gTElNSVQgKi8KKwlpZiAoZGJmb3JtLT5kYXRj b25ubGltaXQgIT0gLTEpCisJeworCQlyZXNldFN0cmluZ0luZm8oJmJ1Zik7CisJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIERBVEFCQVNFICVzIENPTk5FQ1RJT04gTElNSVQg PSAlZDsiLAorCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoZGJuYW1lKSwgZGJmb3JtLT5kYXRj b25ubGltaXQpOworCQlzdGF0ZW1lbnRzID0gbGFwcGVuZChzdGF0ZW1lbnRzLCBwc3RyZHVw KGJ1Zi5kYXRhKSk7CisJfQorCisJLyogSVNfVEVNUExBVEUgKi8KKwlpZiAoZGJmb3JtLT5k YXRpc3RlbXBsYXRlKQorCXsKKwkJcmVzZXRTdHJpbmdJbmZvKCZidWYpOworCQlhcHBlbmRT dHJpbmdJbmZvKCZidWYsICJBTFRFUiBEQVRBQkFTRSAlcyBJU19URU1QTEFURSA9IHRydWU7 IiwKKwkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGRibmFtZSkpOworCQlzdGF0ZW1lbnRzID0g bGFwcGVuZChzdGF0ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRhKSk7CisJfQorCisJLyogQUxM T1dfQ09OTkVDVElPTlMgKi8KKwlpZiAoIWRiZm9ybS0+ZGF0YWxsb3djb25uKQorCXsKKwkJ cmVzZXRTdHJpbmdJbmZvKCZidWYpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRF UiBEQVRBQkFTRSAlcyBBTExPV19DT05ORUNUSU9OUyA9IGZhbHNlOyIsCisJCQkJCQkgcXVv dGVfaWRlbnRpZmllcihkYm5hbWUpKTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVt ZW50cywgcHN0cmR1cChidWYuZGF0YSkpOworCX0KKworCVJlbGVhc2VTeXNDYWNoZSh0dXBs ZSk7CisKKwkvKgorCSAqIE5vdyBzY2FuIHBnX2RiX3JvbGVfc2V0dGluZyBmb3IgQUxURVIg REFUQUJBU0UgU0VUIGNvbmZpZ3VyYXRpb25zLgorCSAqCisJICogSXQgaXMgb25seSBkYXRh YmFzZS13aWRlIChzZXRyb2xlID0gMCkuIEl0IGdlbmVyYXRlcyBvbmUgQUxURVIKKwkgKiBz dGF0ZW1lbnQgcGVyIHNldHRpbmcuCisJICovCisJcmVsID0gdGFibGVfb3BlbihEYlJvbGVT ZXR0aW5nUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgmc2Nh bmtleVswXSwKKwkJCQlBbnVtX3BnX2RiX3JvbGVfc2V0dGluZ19zZXRkYXRhYmFzZSwKKwkJ CQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1 bShkYmlkKSk7CisJU2NhbktleUluaXQoJnNjYW5rZXlbMV0sCisJCQkJQW51bV9wZ19kYl9y b2xlX3NldHRpbmdfc2V0cm9sZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lE RVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lkKSk7CisKKwlzY2FuID0gc3lz dGFibGVfYmVnaW5zY2FuKHJlbCwgRGJSb2xlU2V0dGluZ0RhdGlkUm9saWRJbmRleElkLCB0 cnVlLAorCQkJCQkJCSAgTlVMTCwgMiwgc2NhbmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxl SXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJQXJyYXlU eXBlICAqcmVsb3B0aW9uczsKKwkJRGF0dW0JICAgKnNldHRpbmdzOworCQlib29sCSAgICpu dWxsczsKKwkJaW50CQkJbnNldHRpbmdzOworCisJCS8qCisJCSAqIFRoZSBzZXRjb25maWcg Y29sdW1uIGlzIGEgdGV4dCBhcnJheSBpbiAibmFtZT12YWx1ZSIgZm9ybWF0LiBJdAorCQkg KiBzaG91bGQgbmV2ZXIgYmUgbnVsbCBmb3IgYSB2YWxpZCByb3csIGJ1dCBiZSBkZWZlbnNp dmUuCisJCSAqLworCQlkYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBsZSwgQW51bV9wZ19kYl9y b2xlX3NldHRpbmdfc2V0Y29uZmlnLAorCQkJCQkJCSBSZWxhdGlvbkdldERlc2NyKHJlbCks ICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQkJY29udGludWU7CisKKwkJcmVsb3B0aW9u cyA9IERhdHVtR2V0QXJyYXlUeXBlUChkYXR1bSk7CisKKwkJZGVjb25zdHJ1Y3RfYXJyYXlf YnVpbHRpbihyZWxvcHRpb25zLCBURVhUT0lELCAmc2V0dGluZ3MsICZudWxscywgJm5zZXR0 aW5ncyk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuc2V0dGluZ3M7IGkrKykKKwkJewor CQkJY2hhcgkgICAqcywKKwkJCQkJICAgKnA7CisKKwkJCWlmIChudWxsc1tpXSkKKwkJCQlj b250aW51ZTsKKworCQkJcyA9IFRleHREYXR1bUdldENTdHJpbmcoc2V0dGluZ3NbaV0pOwor CQkJcCA9IHN0cmNocihzLCAnPScpOworCQkJaWYgKHAgPT0gTlVMTCkKKwkJCXsKKwkJCQlw ZnJlZShzKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCSpwKysgPSAnXDAnOworCisJCQly ZXNldFN0cmluZ0luZm8oJmJ1Zik7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRF UiBEQVRBQkFTRSAlcyBTRVQgJXMgVE8gIiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihk Ym5hbWUpLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHMpKTsKKworCQkJLyoKKwkJCSAq IFZhcmlhYmxlcyB0aGF0IGFyZSBtYXJrZWQgR1VDX0xJU1RfUVVPVEUgd2VyZSBhbHJlYWR5 IGZ1bGx5CisJCQkgKiBxdW90ZWQgYmVmb3JlIHRoZXkgd2VyZSBwdXQgaW50byB0aGUgc2V0 Y29uZmlnIGFycmF5LiAgQnJlYWsKKwkJCSAqIHRoZSBsaXN0IHZhbHVlIGFwYXJ0IGFuZCB0 aGVuIHF1b3RlIHRoZSBlbGVtZW50cyBhcyBzdHJpbmcKKwkJCSAqIGxpdGVyYWxzLgorCQkJ ICovCisJCQlpZiAoR2V0Q29uZmlnT3B0aW9uRmxhZ3MocywgdHJ1ZSkgJiBHVUNfTElTVF9R VU9URSkKKwkJCXsKKwkJCQlMaXN0CSAgICpuYW1lbGlzdDsKKwkJCQlib29sCQlmaXJzdCA9 IHRydWU7CisKKwkJCQkvKiBQYXJzZSBzdHJpbmcgaW50byBsaXN0IG9mIGlkZW50aWZpZXJz ICovCisJCQkJaWYgKCFTcGxpdEdVQ0xpc3QocCwgJywnLCAmbmFtZWxpc3QpKQorCQkJCXsK KwkJCQkJLyogdGhpcyBzaG91bGRuJ3QgZmFpbCByZWFsbHkgKi8KKwkJCQkJZWxvZyhFUlJP UiwgImludmFsaWQgbGlzdCBzeW50YXggaW4gc2V0Y29uZmlnIGl0ZW0iKTsKKwkJCQl9CisJ CQkJLyogU3BlY2lhbCBjYXNlOiByZXByZXNlbnQgYW4gZW1wdHkgbGlzdCBhcyBOVUxMICov CisJCQkJaWYgKG5hbWVsaXN0ID09IE5JTCkKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmYnVmLCAiTlVMTCIpOworCQkJCWZvcmVhY2hfcHRyKGNoYXIsIGN1cm5hbWUsIG5hbWVs aXN0KQorCQkJCXsKKwkJCQkJaWYgKGZpcnN0KQorCQkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJ CQkJZWxzZQorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiLCAiKTsKKwkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCBxdW90ZV9saXRlcmFsX2NzdHIoY3Vy bmFtZSkpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZidWYsIHF1b3RlX2xpdGVyYWxfY3N0cihwKSk7CisKKwkJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKCZidWYsICc7Jyk7CisKKwkJCXN0YXRlbWVudHMgPSBsYXBwZW5kKHN0YXRlbWVu dHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKworCQkJcGZyZWUocyk7CisJCX0KKworCQlwZnJl ZShzZXR0aW5ncyk7CisJCXBmcmVlKHJlbG9wdGlvbnMpOworCX0KKworCXN5c3RhYmxlX2Vu ZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ cGZyZWUoYnVmLmRhdGEpOworCXBmcmVlKGRibmFtZSk7CisKKwlyZXR1cm4gc3RhdGVtZW50 czsKK30KKworLyoKKyAqIHBnX2dldF9kYXRhYmFzZV9kZGwKKyAqCQlSZXR1cm4gRERMIHRv IHJlY3JlYXRlIGEgZGF0YWJhc2UgYXMgYSBzZXQgb2YgdGV4dCByb3dzLgorICovCitEYXR1 bQorcGdfZ2V0X2RhdGFiYXNlX2RkbChQR19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxs Q29udGV4dCAqZnVuY2N0eDsKKwlMaXN0CSAgICpzdGF0ZW1lbnRzOworCisJaWYgKFNSRl9J U19GSVJTVENBTEwoKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwkJT2lk CQkJZGJpZDsKKwkJRGRsT3B0aW9uCW9wdHNbXSA9IHsKKwkJCXsicHJldHR5IiwgRERMX09Q VF9CT09MfSwKKwkJCXsib3duZXIiLCBERExfT1BUX0JPT0x9LAorCQkJeyJ0YWJsZXNwYWNl IiwgRERMX09QVF9CT09MfSwKKwkJfTsKKworCQlmdW5jY3R4ID0gU1JGX0ZJUlNUQ0FMTF9J TklUKCk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+ bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQl7 CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCQlTUkZfUkVUVVJO X0RPTkUoZnVuY2N0eCk7CisJCX0KKworCQlkYmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwkJ cGFyc2VfZGRsX29wdGlvbnMoZmNpbmZvLCAxLCBvcHRzLCBsZW5ndGhvZihvcHRzKSk7CisK KwkJc3RhdGVtZW50cyA9IHBnX2dldF9kYXRhYmFzZV9kZGxfaW50ZXJuYWwoZGJpZCwKKwkJ CQkJCQkJCQkJCSAgb3B0c1swXS5pc3NldCAmJiBvcHRzWzBdLmJvb2x2YWwsCisJCQkJCQkJ CQkJCQkgIG9wdHNbMV0uaXNzZXQgJiYgIW9wdHNbMV0uYm9vbHZhbCwKKwkJCQkJCQkJCQkJ CSAgb3B0c1syXS5pc3NldCAmJiAhb3B0c1syXS5ib29sdmFsKTsKKwkJZnVuY2N0eC0+dXNl cl9mY3R4ID0gc3RhdGVtZW50czsKKwkJZnVuY2N0eC0+bWF4X2NhbGxzID0gbGlzdF9sZW5n dGgoc3RhdGVtZW50cyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCX0KKworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCXN0YXRlbWVudHMg PSAoTGlzdCAqKSBmdW5jY3R4LT51c2VyX2ZjdHg7CisKKwlpZiAoZnVuY2N0eC0+Y2FsbF9j bnRyIDwgZnVuY2N0eC0+bWF4X2NhbGxzKQorCXsKKwkJY2hhcgkgICAqc3RtdDsKKworCQlz dG10ID0gbGlzdF9udGgoc3RhdGVtZW50cywgZnVuY2N0eC0+Y2FsbF9jbnRyKTsKKworCQlT UkZfUkVUVVJOX05FWFQoZnVuY2N0eCwgQ1N0cmluZ0dldFRleHREYXR1bShzdG10KSk7CisJ fQorCWVsc2UKKwl7CisJCWxpc3RfZnJlZV9kZWVwKHN0YXRlbWVudHMpOworCQlTUkZfUkVU VVJOX0RPTkUoZnVuY2N0eCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggZjViYWEwZDYyZjEuLmRlZTUzYzFjZDM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTg2MjcsNiArODYyNywxNCBAQAogICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUs dGV4dH0nLAogICBwcm9uYXJnZGVmYXVsdHMgPT4gJzEnLCBwcm9hcmdkZWZhdWx0cyA9PiAn e05VTEx9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfdGFibGVzcGFjZV9kZGxfbmFtZScgfSwK K3sgb2lkID0+ICc4NzYyJywgZGVzY3IgPT4gJ2dldCBEREwgdG8gcmVjcmVhdGUgYSBkYXRh YmFzZScsCisgIHByb25hbWUgPT4gJ3BnX2dldF9kYXRhYmFzZV9kZGwnLCBwcm92YXJpYWRp YyA9PiAndGV4dCcsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4gJ3Mn LCBwcm9yZXRzZXQgPT4gJ3QnLCBwcm9yb3dzID0+ICcxMCcsIHByb3JldHR5cGUgPT4gJ3Rl eHQnLAorICBwcm9hcmd0eXBlcyA9PiAncmVnZGF0YWJhc2UgdGV4dCcsCisgIHByb2FyZ21v ZGVzID0+ICd7aSx2fScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7cmVnZGF0YWJhc2UsdGV4 dH0nLAorICBwcm9uYXJnZGVmYXVsdHMgPT4gJzEnLCBwcm9hcmdkZWZhdWx0cyA9PiAne05V TEx9JywKKyAgcHJvc3JjID0+ICdwZ19nZXRfZGF0YWJhc2VfZGRsJyB9LAogeyBvaWQgPT4g JzI1MDknLAogICBkZXNjciA9PiAnZGVwYXJzZSBhbiBlbmNvZGVkIGV4cHJlc3Npb24gd2l0 aCBwcmV0dHktcHJpbnQgb3B0aW9uJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2V4cHInLCBw cm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3RleHQnLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFzZV9kZGwub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9kYXRhYmFzZV9kZGwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi41ZjRhMmNhNzU2NgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZGF0YWJhc2VfZGRsLm91dApAQCAtMCwwICsxLDEx MyBAQAorLS0KKy0tIFRlc3RzIGZvciBwZ19nZXRfZGF0YWJhc2VfZGRsKCkKKy0tCistLSBU byBwcm9kdWNlIHN0YWJsZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0LCBpdCdzIHVzdWFsbHkg bmVjZXNzYXJ5IHRvCistLSBpZ25vcmUgY29sbGF0aW9uIGFuZCBsb2NhbGUgcmVsYXRlZCBk ZXRhaWxzLiBUaGlzIGZpbHRlcgorLS0gZnVuY3Rpb24gcmVtb3ZlcyBjb2xsYXRpb24gYW5k IGxvY2FsZSByZWxhdGVkIGRldGFpbHMuCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBk ZGxfZmlsdGVyKGRkbF9pbnB1dCBURVhUKQorUkVUVVJOUyBURVhUIEFTICQkCitERUNMQVJF CisgICAgY2xlYW5lZF9kZGwgVEVYVDsKK0JFR0lOCisgICAgLS0gUmVtb3ZlIExPQ0FMRV9Q Uk9WSURFUiBwbGFjZWhvbGRlcnMKKyAgICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFj ZSgKKyAgICAgICAgZGRsX2lucHV0LAorICAgICAgICAnXHMqXG1MT0NBTEVfUFJPVklERVJc TVxzKj1ccyooWycnIl0/W14nJyJcc10rWycnIl0/KScsCisgICAgICAgICcnLAorICAgICAg ICAnZ2knCisgICAgKTsKKworCS0tIFJlbW92ZSBMQ19DT0xMQVRFIGFzc2lnbm1lbnRzCisg ICAgY2xlYW5lZF9kZGwgOj0gcmVnZXhwX3JlcGxhY2UoCisgICAgICAgIGNsZWFuZWRfZGRs LAorICAgICAgICAnXHMqTENfQ09MTEFURVxzKj1ccyooWycnIl0pW14nJyJdKlwxJywKKyAg ICAgICAgJycsCisgICAgICAgICdnaScKKyAgICApOworCisgICAgLS0gUmVtb3ZlIExDX0NU WVBFIGFzc2lnbm1lbnRzCisgICAgY2xlYW5lZF9kZGwgOj0gcmVnZXhwX3JlcGxhY2UoCisg ICAgICAgIGNsZWFuZWRfZGRsLAorICAgICAgICAnXHMqTENfQ1RZUEVccyo9XHMqKFsnJyJd KVteJyciXSpcMScsCisgICAgICAgICcnLAorICAgICAgICAnZ2knCisgICAgKTsKKworICAg IC0tIFJlbW92ZSBMT0NBTEUgcGxhY2Vob2xkZXJzCisgICAgY2xlYW5lZF9kZGwgOj0gcmVn ZXhwX3JlcGxhY2UoCisgICAgICAgIGNsZWFuZWRfZGRsLAorICAgICAgICAnXHMqXFMqTE9D QUxFXFMqXHMqPT9ccyooWycnIl0pW14nJyJdKlwxJywKKwkJJycsCisJCSdnaScKKwkpOwor CisgICAgLS0gUmVtb3ZlIENPTExBVElPTiBwbGFjZWhvbGRlcnMKKyAgICBjbGVhbmVkX2Rk bCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdc cypcUypDT0xMQVRJT05cUypccyo9P1xzKihbJyciXSlbXicnIl0qXDEnLAorICAgICAgICAn JywKKyAgICAgICAgJ2dpJworICAgICk7CisKKyAgICBSRVRVUk4gY2xlYW5lZF9kZGw7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFJPTEUgcmVncmVzc19kYXRkYmE7 CitDUkVBVEUgREFUQUJBU0UgcmVncmVzc19kYXRhYmFzZV9kZGwKKwlFTkNPRElORyB1dGY4 IExDX0NPTExBVEUgIkMiIExDX0NUWVBFICJDIiBURU1QTEFURSB0ZW1wbGF0ZTAKKwlPV05F UiByZWdyZXNzX2RhdGRiYTsKK0FMVEVSIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRs IENPTk5FQ1RJT05fTElNSVQgMTIzOworQUxURVIgREFUQUJBU0UgcmVncmVzc19kYXRhYmFz ZV9kZGwgU0VUIHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjA7CitBTFRFUiBST0xFIHJlZ3Jlc3Nf ZGF0ZGJhIElOIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIFNFVCByYW5kb21fcGFn ZV9jb3N0ID0gMS4xOworLS0gRGF0YWJhc2UgZG9lc24ndCBleGlzdAorU0VMRUNUICogRlJP TSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2RhdGFiYXNlJyk7CitFUlJPUjog IGRhdGFiYXNlICJyZWdyZXNzaW9uX2RhdGFiYXNlIiBkb2VzIG5vdCBleGlzdAorTElORSAx OiBTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJh c2UnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IE5VTEwgdmFsdWUKK1NFTEVDVCAqIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbChOVUxMKTsK KyBwZ19nZXRfZGF0YWJhc2VfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoMCByb3dz KQorCistLSBJbnZhbGlkIG9wdGlvbiB2YWx1ZSAoc2hvdWxkIGVycm9yKQorU0VMRUNUICog RlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdvd25l cicsICdpbnZhbGlkJyk7CitFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIGJvb2xlYW4gb3B0 aW9uICJvd25lciI6IGludmFsaWQKKy0tIER1cGxpY2F0ZSBvcHRpb24gKHNob3VsZCBlcnJv cikKK1NFTEVDVCAqIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFz ZV9kZGwnLCAnb3duZXInLCAnZmFsc2UnLCAnb3duZXInLCAndHJ1ZScpOworRVJST1I6ICBv cHRpb24gIm93bmVyIiBpcyBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKKy0tIFdpdGhvdXQg b3B0aW9ucworU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBw Z19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzX2RhdGFiYXNlX2RkbCcpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRsX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIFdJVEggVEVNUExBVEUgPSB0 ZW1wbGF0ZTAgRU5DT0RJTkcgPSAnVVRGOCc7CisgQUxURVIgREFUQUJBU0UgcmVncmVzc19k YXRhYmFzZV9kZGwgT1dORVIgVE8gcmVncmVzc19kYXRkYmE7CisgQUxURVIgREFUQUJBU0Ug cmVncmVzc19kYXRhYmFzZV9kZGwgQ09OTkVDVElPTiBMSU1JVCA9IDEyMzsKKyBBTFRFUiBE QVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBTRVQgcmFuZG9tX3BhZ2VfY29zdCBUTyAn Mi4wJzsKKyg0IHJvd3MpCisKKy0tIFdpdGggb3duZXIKK1NFTEVDVCBkZGxfZmlsdGVyKHBn X2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19k YXRhYmFzZV9kZGwnLCAnb3duZXInLCAndHJ1ZScpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGRsX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERBVEFC QVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIFdJVEggVEVNUExBVEUgPSB0ZW1wbGF0ZTAgRU5D T0RJTkcgPSAnVVRGOCc7CisgQUxURVIgREFUQUJBU0UgcmVncmVzc19kYXRhYmFzZV9kZGwg T1dORVIgVE8gcmVncmVzc19kYXRkYmE7CisgQUxURVIgREFUQUJBU0UgcmVncmVzc19kYXRh YmFzZV9kZGwgQ09OTkVDVElPTiBMSU1JVCA9IDEyMzsKKyBBTFRFUiBEQVRBQkFTRSByZWdy ZXNzX2RhdGFiYXNlX2RkbCBTRVQgcmFuZG9tX3BhZ2VfY29zdCBUTyAnMi4wJzsKKyg0IHJv d3MpCisKKy0tIFByZXR0eS1wcmludGVkIG91dHB1dAorXHBzZXQgZm9ybWF0IHVuYWxpZ25l ZAorU0VMRUNUIGRkbF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBwZ19nZXRf ZGF0YWJhc2VfZGRsKCdyZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdwcmV0dHknLCAndHJ1ZScs ICd0YWJsZXNwYWNlJywgJ2ZhbHNlJyk7CitkZGxfZmlsdGVyCitDUkVBVEUgREFUQUJBU0Ug cmVncmVzc19kYXRhYmFzZV9kZGwKKyAgICBXSVRIIFRFTVBMQVRFID0gdGVtcGxhdGUwCisg ICAgRU5DT0RJTkcgPSAnVVRGOCc7CitBTFRFUiBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNl X2RkbCBPV05FUiBUTyByZWdyZXNzX2RhdGRiYTsKK0FMVEVSIERBVEFCQVNFIHJlZ3Jlc3Nf ZGF0YWJhc2VfZGRsIENPTk5FQ1RJT04gTElNSVQgPSAxMjM7CitBTFRFUiBEQVRBQkFTRSBy ZWdyZXNzX2RhdGFiYXNlX2RkbCBTRVQgcmFuZG9tX3BhZ2VfY29zdCBUTyAnMi4wJzsKKyg0 IHJvd3MpCitccHNldCBmb3JtYXQgYWxpZ25lZAorRFJPUCBEQVRBQkFTRSByZWdyZXNzX2Rh dGFiYXNlX2RkbDsKK0RST1AgRlVOQ1RJT04gZGRsX2ZpbHRlcih0ZXh0KTsKK0RST1AgUk9M RSByZWdyZXNzX2RhdGRiYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGYzYTAxYWVjZjA0Li5kOTdiOWYxNjkwOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xMzAsNyArMTMwLDcgQEAgdGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRp dGlvbl9zcGxpdCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucwog IyBvaWRqb2lucyBpcyByZWFkLW9ubHksIHRob3VnaCwgYW5kIHNob3VsZCBydW4gbGF0ZSBm b3IgYmVzdCBjb3ZlcmFnZQogdGVzdDogb2lkam9pbnMgZXZlbnRfdHJpZ2dlcgogCi10ZXN0 OiByb2xlX2RkbCB0YWJsZXNwYWNlX2RkbAordGVzdDogcm9sZV9kZGwgdGFibGVzcGFjZV9k ZGwgZGF0YWJhc2VfZGRsCiAKICMgZXZlbnRfdHJpZ2dlcl9sb2dpbiBjYW5ub3QgcnVuIGNv bmN1cnJlbnRseSB3aXRoIGFueSBvdGhlciB0ZXN0cyBiZWNhdXNlCiAjIG9uLWxvZ2luIGV2 ZW50IGhhbmRsaW5nIGNvdWxkIGNhdGNoIGNvbm5lY3Rpb24gb2YgYSBjb25jdXJyZW50IHRl c3QuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZV9kZGwuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0YWJhc2VfZGRsLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmZmYmMyN2ZjY2IKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZV9kZGwuc3FsCkBAIC0wLDAgKzEs OTEgQEAKKy0tCistLSBUZXN0cyBmb3IgcGdfZ2V0X2RhdGFiYXNlX2RkbCgpCistLQorCist LSBUbyBwcm9kdWNlIHN0YWJsZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0LCBpdCdzIHVzdWFs bHkgbmVjZXNzYXJ5IHRvCistLSBpZ25vcmUgY29sbGF0aW9uIGFuZCBsb2NhbGUgcmVsYXRl ZCBkZXRhaWxzLiBUaGlzIGZpbHRlcgorLS0gZnVuY3Rpb24gcmVtb3ZlcyBjb2xsYXRpb24g YW5kIGxvY2FsZSByZWxhdGVkIGRldGFpbHMuCisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIGRkbF9maWx0ZXIoZGRsX2lucHV0IFRFWFQpCitSRVRVUk5TIFRFWFQgQVMgJCQKK0RF Q0xBUkUKKyAgICBjbGVhbmVkX2RkbCBURVhUOworQkVHSU4KKyAgICAtLSBSZW1vdmUgTE9D QUxFX1BST1ZJREVSIHBsYWNlaG9sZGVycworICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9y ZXBsYWNlKAorICAgICAgICBkZGxfaW5wdXQsCisgICAgICAgICdccypcbUxPQ0FMRV9QUk9W SURFUlxNXHMqPVxzKihbJyciXT9bXicnIlxzXStbJyciXT8pJywKKyAgICAgICAgJycsCisg ICAgICAgICdnaScKKyAgICApOworCisJLS0gUmVtb3ZlIExDX0NPTExBVEUgYXNzaWdubWVu dHMKKyAgICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5l ZF9kZGwsCisgICAgICAgICdccypMQ19DT0xMQVRFXHMqPVxzKihbJyciXSlbXicnIl0qXDEn LAorICAgICAgICAnJywKKyAgICAgICAgJ2dpJworICAgICk7CisKKyAgICAtLSBSZW1vdmUg TENfQ1RZUEUgYXNzaWdubWVudHMKKyAgICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFj ZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdccypMQ19DVFlQRVxzKj1ccyoo WycnIl0pW14nJyJdKlwxJywKKyAgICAgICAgJycsCisgICAgICAgICdnaScKKyAgICApOwor CisgICAgLS0gUmVtb3ZlIExPQ0FMRSBwbGFjZWhvbGRlcnMKKyAgICBjbGVhbmVkX2RkbCA6 PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdccypc UypMT0NBTEVcUypccyo9P1xzKihbJyciXSlbXicnIl0qXDEnLAorCQknJywKKwkJJ2dpJwor CSk7CisKKyAgICAtLSBSZW1vdmUgQ09MTEFUSU9OIHBsYWNlaG9sZGVycworICAgIGNsZWFu ZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICBjbGVhbmVkX2RkbCwKKyAgICAg ICAgJ1xzKlxTKkNPTExBVElPTlxTKlxzKj0/XHMqKFsnJyJdKVteJyciXSpcMScsCisgICAg ICAgICcnLAorICAgICAgICAnZ2knCisgICAgKTsKKworICAgIFJFVFVSTiBjbGVhbmVkX2Rk bDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBST0xFIHJlZ3Jlc3Nf ZGF0ZGJhOworQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsCisJRU5DT0RJ TkcgdXRmOCBMQ19DT0xMQVRFICJDIiBMQ19DVFlQRSAiQyIgVEVNUExBVEUgdGVtcGxhdGUw CisJT1dORVIgcmVncmVzc19kYXRkYmE7CitBTFRFUiBEQVRBQkFTRSByZWdyZXNzX2RhdGFi YXNlX2RkbCBDT05ORUNUSU9OX0xJTUlUIDEyMzsKK0FMVEVSIERBVEFCQVNFIHJlZ3Jlc3Nf ZGF0YWJhc2VfZGRsIFNFVCByYW5kb21fcGFnZV9jb3N0ID0gMi4wOworQUxURVIgUk9MRSBy ZWdyZXNzX2RhdGRiYSBJTiBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBTRVQgcmFu ZG9tX3BhZ2VfY29zdCA9IDEuMTsKKworLS0gRGF0YWJhc2UgZG9lc24ndCBleGlzdAorU0VM RUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2RhdGFiYXNlJyk7 CisKKy0tIE5VTEwgdmFsdWUKK1NFTEVDVCAqIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbChO VUxMKTsKKworLS0gSW52YWxpZCBvcHRpb24gdmFsdWUgKHNob3VsZCBlcnJvcikKK1NFTEVD VCAqIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAn b3duZXInLCAnaW52YWxpZCcpOworCistLSBEdXBsaWNhdGUgb3B0aW9uIChzaG91bGQgZXJy b3IpCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3NfZGF0YWJh c2VfZGRsJywgJ293bmVyJywgJ2ZhbHNlJywgJ293bmVyJywgJ3RydWUnKTsKKworLS0gV2l0 aG91dCBvcHRpb25zCitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJhc2VfZGRsKSBG Uk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3NfZGF0YWJhc2VfZGRsJyk7CisKKy0t IFdpdGggb3duZXIKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZS T00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAnb3duZXIn LCAndHJ1ZScpOworCistLSBQcmV0dHktcHJpbnRlZCBvdXRwdXQKK1xwc2V0IGZvcm1hdCB1 bmFsaWduZWQKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00g cGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAncHJldHR5Jywg J3RydWUnLCAndGFibGVzcGFjZScsICdmYWxzZScpOworXHBzZXQgZm9ybWF0IGFsaWduZWQK KworRFJPUCBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbDsKK0RST1AgRlVOQ1RJT04g ZGRsX2ZpbHRlcih0ZXh0KTsKK0RST1AgUk9MRSByZWdyZXNzX2RhdGRiYTsKLS0gCjIuMzku NQoK --f56cbf558c4b43b19274fba301de58c9--