Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oRD8D-0007h0-G7 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Aug 2022 13:42:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oRD8C-0001uo-Cs for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Aug 2022 13:42:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oRD8C-0001ue-0g for pgsql-hackers@lists.postgresql.org; Thu, 25 Aug 2022 13:42:48 +0000 Received: from out3-smtp.messagingengine.com ([66.111.4.27]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oRD88-0007y6-Ae for pgsql-hackers@postgresql.org; Thu, 25 Aug 2022 13:42:47 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 1CB055C00F2 for ; Thu, 25 Aug 2022 09:42:42 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 25 Aug 2022 09:42:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1661434962; x= 1661521362; bh=sCSepI8SJgeHnlr7nWHlwAvwY2BnienVIS0jGvO5Wi4=; b=V byAV+QQmZ0O9bdAtKBGocKMD7+Ln8IN3KWXjrxbGSpLc0tHE0sGtf3lTFf9ZCnry 2NMGu5zIU9OXgLzNddqezXj02YXfm4MhrF7+8skQmoIaPyEMrrnKvmgsu49ms90g MjEtszFJxZMpyr7iDi+fAj9mk+LHRV4JnoP86DQtLEW6Ii4/YgYsId0L4LsNK0pl 0jz7eYkCa7XkKJh0gKSBmodkSAmZKC0uEfwEa7swTSEA8sWz7yf6YxqAYfN90UJU Qq9SFRcv/7oFII5JfXimWLOaPgszdjH0ALiv5zkbh2INgy33XDQ13nUXqhwXZa2w 5chVopxxhWqTEOTNfahqw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrvdejfedgieeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghi shgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvg hrnhepteevuedvieekieeghfevfffhhfdvjeevleelfeeikeeikedvffegteekuddtfeel necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvth gvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 25 Aug 2022 09:42:41 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------06E4krhMfpTtnc4uLz7h5omj" Message-ID: Date: Thu, 25 Aug 2022 15:42:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Content-Language: en-US From: Peter Eisentraut Subject: postgres_fdw hint messages To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------06E4krhMfpTtnc4uLz7h5omj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The postgres_fdw tests contain this (as amended by patch 0001): ALTER SERVER loopback_nopw OPTIONS (ADD password 'dummypw'); ERROR: invalid option "password" HINT: Valid options in this context are: service, passfile, channel_binding, connect_timeout, dbname, host, hostaddr, port, options, application_name, keepalives, keepalives_idle, keepalives_interval, keepalives_count, tcp_user_timeout, sslmode, sslcompression, sslcert, sslkey, sslrootcert, sslcrl, sslcrldir, sslsni, requirepeer, ssl_min_protocol_version, ssl_max_protocol_version, gssencmode, krbsrvname, gsslib, target_session_attrs, use_remote_estimate, fdw_startup_cost, fdw_tuple_cost, extensions, updatable, truncatable, fetch_size, batch_size, async_capable, parallel_commit, keep_connections This annoys developers who are working on libpq connection options, because any option added, removed, or changed causes this test to need to be updated. It's also questionable how useful this hint is in its current form, considering how long it is and that the options are in an implementation-dependent order. Possible changes: - Hide the hint from this particular test (done in the attached patches). - Keep the hint, but maybe make it sorted? - Remove all the hints like this from foreign data commands. - Don't show the hint when there are more than N valid options. - Do some kind of "did you mean" like we have for column names. Thoughts? --------------06E4krhMfpTtnc4uLz7h5omj Content-Type: text/plain; charset=UTF-8; name="0001-postgres_fdw-Remove-useless-DO-block-in-test.patch" Content-Disposition: attachment; filename="0001-postgres_fdw-Remove-useless-DO-block-in-test.patch" Content-Transfer-Encoding: base64 RnJvbSA0YWRiM2I2ODQ2ZTk4YTU1ZWUxOWQ4NDI1ZGZiM2Q2ZDEyMTQ1ZjE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAyNSBBdWcgMjAyMiAxNTozMToxMCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBwb3N0Z3Jlc19mZHc6IFJlbW92ZSB1c2VsZXNzIERPIGJsb2NrIGlu IHRlc3QKCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3 Lm91dCB8IDggKy0tLS0tLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19m ZHcuc3FsICAgICAgfCA2ICstLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDdiZjM1NjAyYjAuLmE0MmM5NzIwYzMgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91 dApAQCAtOTYyMSwxNSArOTYyMSw5IEBAIEVSUk9SOiAgcGFzc3dvcmQgaXMgcmVxdWlyZWQK IERFVEFJTDogIE5vbi1zdXBlcnVzZXJzIG11c3QgcHJvdmlkZSBhIHBhc3N3b3JkIGluIHRo ZSB1c2VyIG1hcHBpbmcuCiAtLSBJZiB3ZSBhZGQgYSBwYXNzd29yZCB0byB0aGUgY29ubnN0 ciBpdCdsbCBmYWlsLCBiZWNhdXNlIHdlIGRvbid0IGFsbG93IHBhc3N3b3JkcwogLS0gaW4g Y29ubnN0cnMgb25seSBpbiB1c2VyIG1hcHBpbmdzLgotRE8gJGQkCi0gICAgQkVHSU4KLSAg ICAgICAgRVhFQ1VURSAkJEFMVEVSIFNFUlZFUiBsb29wYmFja19ub3B3IE9QVElPTlMgKEFE RCBwYXNzd29yZCAnZHVtbXlwdycpJCQ7Ci0gICAgRU5EOwotJGQkOworQUxURVIgU0VSVkVS IGxvb3BiYWNrX25vcHcgT1BUSU9OUyAoQUREIHBhc3N3b3JkICdkdW1teXB3Jyk7CiBFUlJP UjogIGludmFsaWQgb3B0aW9uICJwYXNzd29yZCIKIEhJTlQ6ICBWYWxpZCBvcHRpb25zIGlu IHRoaXMgY29udGV4dCBhcmU6IHNlcnZpY2UsIHBhc3NmaWxlLCBjaGFubmVsX2JpbmRpbmcs IGNvbm5lY3RfdGltZW91dCwgZGJuYW1lLCBob3N0LCBob3N0YWRkciwgcG9ydCwgb3B0aW9u cywgYXBwbGljYXRpb25fbmFtZSwga2VlcGFsaXZlcywga2VlcGFsaXZlc19pZGxlLCBrZWVw YWxpdmVzX2ludGVydmFsLCBrZWVwYWxpdmVzX2NvdW50LCB0Y3BfdXNlcl90aW1lb3V0LCBz c2xtb2RlLCBzc2xjb21wcmVzc2lvbiwgc3NsY2VydCwgc3Nsa2V5LCBzc2xyb290Y2VydCwg c3NsY3JsLCBzc2xjcmxkaXIsIHNzbHNuaSwgcmVxdWlyZXBlZXIsIHNzbF9taW5fcHJvdG9j b2xfdmVyc2lvbiwgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uLCBnc3NlbmNtb2RlLCBrcmJz cnZuYW1lLCBnc3NsaWIsIHRhcmdldF9zZXNzaW9uX2F0dHJzLCB1c2VfcmVtb3RlX2VzdGlt YXRlLCBmZHdfc3RhcnR1cF9jb3N0LCBmZHdfdHVwbGVfY29zdCwgZXh0ZW5zaW9ucywgdXBk YXRhYmxlLCB0cnVuY2F0YWJsZSwgZmV0Y2hfc2l6ZSwgYmF0Y2hfc2l6ZSwgYXN5bmNfY2Fw YWJsZSwgcGFyYWxsZWxfY29tbWl0LCBrZWVwX2Nvbm5lY3Rpb25zCi1DT05URVhUOiAgU1FM IHN0YXRlbWVudCAiQUxURVIgU0VSVkVSIGxvb3BiYWNrX25vcHcgT1BUSU9OUyAoQUREIHBh c3N3b3JkICdkdW1teXB3JykiCi1QTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9j ayBsaW5lIDMgYXQgRVhFQ1VURQogLS0gSWYgd2UgYWRkIGEgcGFzc3dvcmQgZm9yIG91ciB1 c2VyIG1hcHBpbmcgaW5zdGVhZCwgd2Ugc2hvdWxkIGdldCBhIGRpZmZlcmVudAogLS0gZXJy b3IgYmVjYXVzZSB0aGUgcGFzc3dvcmQgd2Fzbid0IGFjdHVhbGx5ICp1c2VkKiB3aGVuIHdl IHJ1biB3aXRoIHRydXN0IGF1dGguCiAtLQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwv cG9zdGdyZXNfZmR3LnNxbAppbmRleCA0MjczNWFlNzhhLi42MzU4MWE0NTdkIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMjg4NiwxMSAr Mjg4Niw3IEBAIENSRUFURSBGT1JFSUdOIFRBQkxFIHBnX3RlbXAuZnQxX25vcHcgKAogLS0g SWYgd2UgYWRkIGEgcGFzc3dvcmQgdG8gdGhlIGNvbm5zdHIgaXQnbGwgZmFpbCwgYmVjYXVz ZSB3ZSBkb24ndCBhbGxvdyBwYXNzd29yZHMKIC0tIGluIGNvbm5zdHJzIG9ubHkgaW4gdXNl ciBtYXBwaW5ncy4KIAotRE8gJGQkCi0gICAgQkVHSU4KLSAgICAgICAgRVhFQ1VURSAkJEFM VEVSIFNFUlZFUiBsb29wYmFja19ub3B3IE9QVElPTlMgKEFERCBwYXNzd29yZCAnZHVtbXlw dycpJCQ7Ci0gICAgRU5EOwotJGQkOworQUxURVIgU0VSVkVSIGxvb3BiYWNrX25vcHcgT1BU SU9OUyAoQUREIHBhc3N3b3JkICdkdW1teXB3Jyk7CiAKIC0tIElmIHdlIGFkZCBhIHBhc3N3 b3JkIGZvciBvdXIgdXNlciBtYXBwaW5nIGluc3RlYWQsIHdlIHNob3VsZCBnZXQgYSBkaWZm ZXJlbnQKIC0tIGVycm9yIGJlY2F1c2UgdGhlIHBhc3N3b3JkIHdhc24ndCBhY3R1YWxseSAq dXNlZCogd2hlbiB3ZSBydW4gd2l0aCB0cnVzdCBhdXRoLgotLSAKMi4zNy4xCgo= --------------06E4krhMfpTtnc4uLz7h5omj Content-Type: text/plain; charset=UTF-8; name="0002-postgres_fdw-Avoid-listing-all-libpq-connection-opti.patch" Content-Disposition: attachment; filename*0="0002-postgres_fdw-Avoid-listing-all-libpq-connection-opti.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5ODZlYTI1M2NkODg3YjQ3MmU4MDQwNTgwZjhjMWEyNjQyZjNjYWRhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAyNSBBdWcgMjAyMiAxNTozMToxMSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBwb3N0Z3Jlc19mZHc6IEF2b2lkIGxpc3RpbmcgYWxsIGxpYnBxIGNv bm5lY3Rpb24gb3B0aW9ucwogaW4gZXJyb3IgaGludAoKLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IHwgNyArKysrKystCiBjb250cmliL3Bv c3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCAgICAgIHwgNiArKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IGE0 MmM5NzIwYzMuLjM2Nzg0MjhiOTUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtOTYyMSw5ICs5NjIxLDE0IEBAIEVSUk9S OiAgcGFzc3dvcmQgaXMgcmVxdWlyZWQKIERFVEFJTDogIE5vbi1zdXBlcnVzZXJzIG11c3Qg cHJvdmlkZSBhIHBhc3N3b3JkIGluIHRoZSB1c2VyIG1hcHBpbmcuCiAtLSBJZiB3ZSBhZGQg YSBwYXNzd29yZCB0byB0aGUgY29ubnN0ciBpdCdsbCBmYWlsLCBiZWNhdXNlIHdlIGRvbid0 IGFsbG93IHBhc3N3b3JkcwogLS0gaW4gY29ubnN0cnMgb25seSBpbiB1c2VyIG1hcHBpbmdz LgorLS0KKy0tIFNldCB0byB0ZXJzZSB2ZXJib3NpdHkgdG8gYXZvaWQgaGludCBsaXN0aW5n IGFsbCBwb3NzaWJsZSBsaWJwcQorLS0gY29ubmVjdGlvbiBvcHRpb25zLCB3aGljaCBjYXVz ZXMgYW5ub3lpbmcgdGVzdCBmYWlsdXJlcyB3aGVuIGRvaW5nCistLSBsaWJwcSB3b3JrLgor XHNldCBWRVJCT1NJVFkgdGVyc2UKIEFMVEVSIFNFUlZFUiBsb29wYmFja19ub3B3IE9QVElP TlMgKEFERCBwYXNzd29yZCAnZHVtbXlwdycpOwogRVJST1I6ICBpbnZhbGlkIG9wdGlvbiAi cGFzc3dvcmQiCi1ISU5UOiAgVmFsaWQgb3B0aW9ucyBpbiB0aGlzIGNvbnRleHQgYXJlOiBz ZXJ2aWNlLCBwYXNzZmlsZSwgY2hhbm5lbF9iaW5kaW5nLCBjb25uZWN0X3RpbWVvdXQsIGRi bmFtZSwgaG9zdCwgaG9zdGFkZHIsIHBvcnQsIG9wdGlvbnMsIGFwcGxpY2F0aW9uX25hbWUs IGtlZXBhbGl2ZXMsIGtlZXBhbGl2ZXNfaWRsZSwga2VlcGFsaXZlc19pbnRlcnZhbCwga2Vl cGFsaXZlc19jb3VudCwgdGNwX3VzZXJfdGltZW91dCwgc3NsbW9kZSwgc3NsY29tcHJlc3Np b24sIHNzbGNlcnQsIHNzbGtleSwgc3Nscm9vdGNlcnQsIHNzbGNybCwgc3NsY3JsZGlyLCBz c2xzbmksIHJlcXVpcmVwZWVyLCBzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24sIHNzbF9tYXhf cHJvdG9jb2xfdmVyc2lvbiwgZ3NzZW5jbW9kZSwga3Jic3J2bmFtZSwgZ3NzbGliLCB0YXJn ZXRfc2Vzc2lvbl9hdHRycywgdXNlX3JlbW90ZV9lc3RpbWF0ZSwgZmR3X3N0YXJ0dXBfY29z dCwgZmR3X3R1cGxlX2Nvc3QsIGV4dGVuc2lvbnMsIHVwZGF0YWJsZSwgdHJ1bmNhdGFibGUs IGZldGNoX3NpemUsIGJhdGNoX3NpemUsIGFzeW5jX2NhcGFibGUsIHBhcmFsbGVsX2NvbW1p dCwga2VlcF9jb25uZWN0aW9ucworXHNldCBWRVJCT1NJVFkgZGVmYXVsdAogLS0gSWYgd2Ug YWRkIGEgcGFzc3dvcmQgZm9yIG91ciB1c2VyIG1hcHBpbmcgaW5zdGVhZCwgd2Ugc2hvdWxk IGdldCBhIGRpZmZlcmVudAogLS0gZXJyb3IgYmVjYXVzZSB0aGUgcGFzc3dvcmQgd2Fzbid0 IGFjdHVhbGx5ICp1c2VkKiB3aGVuIHdlIHJ1biB3aXRoIHRydXN0IGF1dGguCiAtLQpkaWZm IC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCA2MzU4MWE0 NTdkLi5hOGI2NWNkYzg4IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwv cG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdy ZXNfZmR3LnNxbApAQCAtMjg4NSw4ICsyODg1LDE0IEBAIENSRUFURSBGT1JFSUdOIFRBQkxF IHBnX3RlbXAuZnQxX25vcHcgKAogCiAtLSBJZiB3ZSBhZGQgYSBwYXNzd29yZCB0byB0aGUg Y29ubnN0ciBpdCdsbCBmYWlsLCBiZWNhdXNlIHdlIGRvbid0IGFsbG93IHBhc3N3b3Jkcwog LS0gaW4gY29ubnN0cnMgb25seSBpbiB1c2VyIG1hcHBpbmdzLgorLS0KKy0tIFNldCB0byB0 ZXJzZSB2ZXJib3NpdHkgdG8gYXZvaWQgaGludCBsaXN0aW5nIGFsbCBwb3NzaWJsZSBsaWJw cQorLS0gY29ubmVjdGlvbiBvcHRpb25zLCB3aGljaCBjYXVzZXMgYW5ub3lpbmcgdGVzdCBm YWlsdXJlcyB3aGVuIGRvaW5nCistLSBsaWJwcSB3b3JrLgogCitcc2V0IFZFUkJPU0lUWSB0 ZXJzZQogQUxURVIgU0VSVkVSIGxvb3BiYWNrX25vcHcgT1BUSU9OUyAoQUREIHBhc3N3b3Jk ICdkdW1teXB3Jyk7Citcc2V0IFZFUkJPU0lUWSBkZWZhdWx0CiAKIC0tIElmIHdlIGFkZCBh IHBhc3N3b3JkIGZvciBvdXIgdXNlciBtYXBwaW5nIGluc3RlYWQsIHdlIHNob3VsZCBnZXQg YSBkaWZmZXJlbnQKIC0tIGVycm9yIGJlY2F1c2UgdGhlIHBhc3N3b3JkIHdhc24ndCBhY3R1 YWxseSAqdXNlZCogd2hlbiB3ZSBydW4gd2l0aCB0cnVzdCBhdXRoLgotLSAKMi4zNy4xCgo= --------------06E4krhMfpTtnc4uLz7h5omj--