Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1symAC-0025FM-09 for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Oct 2024 05:56:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1symAA-00BqJr-Ek for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Oct 2024 05:56:38 +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.94.2) (envelope-from ) id 1symAA-00BqHs-0H for pgsql-hackers@lists.postgresql.org; Thu, 10 Oct 2024 05:56:38 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1symA6-0009ca-N7 for pgsql-hackers@lists.postgresql.org; Thu, 10 Oct 2024 05:56:37 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id E6CF7613DD; Thu, 10 Oct 2024 14:56:29 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_d8e74a89ad2657e8e86877d9f3194c4a" Content-Transfer-Encoding: 8bit Date: Thu, 10 Oct 2024 14:56:29 +0900 From: Shinya Kato To: Yugo Nagata Cc: "David G. Johnston" , Tom Lane , PostgreSQL Hackers Subject: Re: Set AUTOCOMMIT to on in script output by pg_dump In-Reply-To: <20241009151508.eb37141e5ad29d0ca1e44eb9@sraoss.co.jp> References: <96ff23a5d858ff72ca8e823a014d16fe@oss.nttdata.com> <20241009120314.118a641fa25148c3d564a6ae@sraoss.co.jp> <2351827.1728447022@sss.pgh.pa.us> <20241009151508.eb37141e5ad29d0ca1e44eb9@sraoss.co.jp> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <18f52adc395bece3c9d4373890560bbd@oss.nttdata.com> X-Sender: Shinya11.Kato@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_d8e74a89ad2657e8e86877d9f3194c4a Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Thank you all for the comments! On 2024-10-09 15:15, Yugo Nagata wrote: > On Tue, 8 Oct 2024 21:37:38 -0700 > "David G. Johnston" wrote: > >> On Tuesday, October 8, 2024, Tom Lane wrote: >> >> > "David G. Johnston" writes: >> > > On Tuesday, October 8, 2024, Yugo Nagata wrote: >> > >> On Wed, 09 Oct 2024 11:10:37 +0900 >> > >> Shinya Kato wrote: >> > >>> When SQL scripts created with pg_dump/pg_dumpall/pg_restore are >> > executed >> > >>> in psql with AUTOCOMMIT turned off, they will not succeed in many >> > cases. >> > >> > > Agreed. If we aren’t already outputting psql-only stuff I am a strong -1 >> > > for making this the first such case. >> > >> > I really doubt that this is the only way in which you can break a >> > pg_dump script by executing it in a non-default psql environment. >> > We'd likely be better advised to spend some documentation effort >> > recommending that pg_dump scripts be executed under "psql --no-psqlrc". >> >> >> +1 >> >> Reinforcing that our output script basically assumes a default >> execution >> environment seems worth mentioning even if it seems self-evident once >> it’s >> said. > > +1 While adding to the documentation is sufficient if users use it correctly, users often behave unexpectedly. My intention was to implement it in a way that works without issues even if misused. However, since the prevailing opinion seems to favor simply updating the documentation, I will proceed with that approach. A new patch is attached. I am not a native English, so corrections to the texts are welcome. -- Regards, Shinya Kato NTT DATA GROUP CORPORATION --=_d8e74a89ad2657e8e86877d9f3194c4a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-doc-Add-no-psqlrc-in-pg_dump-pg_dumpall-docs.patch Content-Disposition: attachment; filename=v2-0001-doc-Add-no-psqlrc-in-pg_dump-pg_dumpall-docs.patch; size=6463 RnJvbSBmMmFjNTE1NmI4ZmMwMmI2YjUyOWQzYWVlZjE2ZDgwZjIxYmJlMDhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGlueWEgS2F0byA8U2hpbnlhMTEuS2F0b0Bvc3MubnR0ZGF0 YS5jb20+CkRhdGU6IFRodSwgMTAgT2N0IDIwMjQgMTQ6NTA6MzkgKzA5MDAKU3ViamVjdDogW1BB VENIIHYyXSBkb2M6IEFkZCAtLW5vLXBzcWxyYyBpbiBwZ19kdW1wL3BnX2R1bXBhbGwgZG9jcwoK LS0tCiBkb2Mvc3JjL3NnbWwvYmFja3VwLnNnbWwgICAgICAgICB8IDE2ICsrKysrKysrKy0tLS0t LS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sICAgIHwgIDkgKysrKysrKystCiBkb2Mv c3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbCB8IDExICsrKysrKysrKystCiAzIGZpbGVzIGNo YW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2JhY2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21sL2JhY2t1cC5zZ21sCmluZGV4IGU0 ZTRjNTZjZjEuLjIxYWQzNGY0ZTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9iYWNrdXAuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvYmFja3VwLnNnbWwKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHBn X2R1bXAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRibmFtZTwvcmVwbGFjZWFibGU+ ICZndDsgPHJlcGxhY2VhYmxlIGNsCiAKICAgIDxwYXJhPgogICAgIFRleHQgZmlsZXMgY3JlYXRl ZCBieSA8YXBwbGljYXRpb24+cGdfZHVtcDwvYXBwbGljYXRpb24+IGFyZSBpbnRlbmRlZCB0bwot ICAgIGJlIHJlYWQgaW4gYnkgdGhlIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gcHJv Z3JhbS4gVGhlCi0gICAgZ2VuZXJhbCBjb21tYW5kIGZvcm0gdG8gcmVzdG9yZSBhIGR1bXAgaXMK KyAgICBiZSByZWFkIGluIGJ5IHRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHBy b2dyYW0gd2l0aCBpdHMgZGVmYXVsdAorICAgIHNldHRpbmdzLiBUaGUgZ2VuZXJhbCBjb21tYW5k IGZvcm0gdG8gcmVzdG9yZSBhIGR1bXAgaXMKIDxzeW5vcHNpcz4KLXBzcWwgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmRibmFtZTwvcmVwbGFjZWFibGU+ICZsdDsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmR1bXBmaWxlPC9yZXBsYWNlYWJsZT4KK3BzcWwgLS1uby1wc3Fs cmMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRibmFtZTwvcmVwbGFjZWFibGU+ICZs dDsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR1bXBmaWxlPC9yZXBsYWNlYWJsZT4K IDwvc3lub3BzaXM+CiAgICAgd2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR1 bXBmaWxlPC9yZXBsYWNlYWJsZT4gaXMgdGhlCiAgICAgZmlsZSBvdXRwdXQgYnkgdGhlIDxhcHBs aWNhdGlvbj5wZ19kdW1wPC9hcHBsaWNhdGlvbj4gY29tbWFuZC4gVGhlIGRhdGFiYXNlIDxyZXBs YWNlYWJsZQpAQCAtMTE3LDcgKzExNyw5IEBAIHBzcWwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmRibmFtZTwvcmVwbGFjZWFibGU+ICZsdDsgPHJlcGxhY2VhYmxlIGNsYXNzCiAgICAg Y29tbWFuZCwgc28geW91IG11c3QgY3JlYXRlIGl0IHlvdXJzZWxmIGZyb20gPGxpdGVyYWw+dGVt cGxhdGUwPC9saXRlcmFsPgogICAgIGJlZm9yZSBleGVjdXRpbmcgPGFwcGxpY2F0aW9uPnBzcWw8 L2FwcGxpY2F0aW9uPiAoZS5nLiwgd2l0aAogICAgIDxsaXRlcmFsPmNyZWF0ZWRiIC1UIHRlbXBs YXRlMCA8cmVwbGFjZWFibGUKLSAgICBjbGFzcz0icGFyYW1ldGVyIj5kYm5hbWU8L3JlcGxhY2Vh YmxlPjwvbGl0ZXJhbD4pLiAgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgorICAgIGNs YXNzPSJwYXJhbWV0ZXIiPmRibmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPikuIFRvIHVzZQor ICAgIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gd2l0aCBpdHMgZGVmYXVsdCBzZXR0 aW5ncywgdXNlIHRoZQorICAgIDxvcHRpb24+LS1uby1wc3FscmM8L29wdGlvbj4gb3B0aW9uLiA8 YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+CiAgICAgc3VwcG9ydHMgb3B0aW9ucyBzaW1p bGFyIHRvIDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9hcHBsaWNhdGlvbj4gZm9yIHNwZWNpZnlpbmcK ICAgICB0aGUgZGF0YWJhc2Ugc2VydmVyIHRvIGNvbm5lY3QgdG8gYW5kIHRoZSB1c2VyIG5hbWUg dG8gdXNlLiBTZWUKICAgICB0aGUgPHhyZWYgbGlua2VuZD0iYXBwLXBzcWwiLz4gcmVmZXJlbmNl IHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC0xNDEsNyArMTQzLDcgQEAgcHNxbCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGJuYW1lPC9yZXBsYWNlYWJsZT4gJmx0OyA8cmVw bGFjZWFibGUgY2xhc3MKICAgICBiZWhhdmlvciBhbmQgaGF2ZSA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+IGV4aXQgd2l0aCBhbgogICAgIGV4aXQgc3RhdHVzIG9mIDMgaWYgYW4gU1FM IGVycm9yIG9jY3VyczoKIDxwcm9ncmFtbGlzdGluZz4KLXBzcWwgLS1zZXQgT05fRVJST1JfU1RP UD1vbiA8cmVwbGFjZWFibGU+ZGJuYW1lPC9yZXBsYWNlYWJsZT4gJmx0OyA8cmVwbGFjZWFibGU+ ZHVtcGZpbGU8L3JlcGxhY2VhYmxlPgorcHNxbCAtLW5vLXBzcWxyYyAtLXNldCBPTl9FUlJPUl9T VE9QPW9uIDxyZXBsYWNlYWJsZT5kYm5hbWU8L3JlcGxhY2VhYmxlPiAmbHQ7IDxyZXBsYWNlYWJs ZT5kdW1wZmlsZTwvcmVwbGFjZWFibGU+CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIEVpdGhlciB3 YXksIHlvdSB3aWxsIG9ubHkgaGF2ZSBhIHBhcnRpYWxseSByZXN0b3JlZCBkYXRhYmFzZS4KICAg ICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNwZWNpZnkgdGhhdCB0aGUgd2hvbGUgZHVtcCBzaG91 bGQgYmUKQEAgLTE2MCw3ICsxNjIsNyBAQCBwc3FsIC0tc2V0IE9OX0VSUk9SX1NUT1A9b24gPHJl cGxhY2VhYmxlPmRibmFtZTwvcmVwbGFjZWFibGU+ICZsdDsgPHJlcGxhY2VhYmxlPgogICAgIHdy aXRlIHRvIG9yIHJlYWQgZnJvbSBwaXBlcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBkdW1wIGEgZGF0 YWJhc2UKICAgICBkaXJlY3RseSBmcm9tIG9uZSBzZXJ2ZXIgdG8gYW5vdGhlciwgZm9yIGV4YW1w bGU6CiA8cHJvZ3JhbWxpc3Rpbmc+Ci1wZ19kdW1wIC1oIDxyZXBsYWNlYWJsZT5ob3N0MTwvcmVw bGFjZWFibGU+IDxyZXBsYWNlYWJsZT5kYm5hbWU8L3JlcGxhY2VhYmxlPiB8IHBzcWwgLWggPHJl cGxhY2VhYmxlPmhvc3QyPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmRibmFtZTwvcmVwbGFj ZWFibGU+CitwZ19kdW1wIC1oIDxyZXBsYWNlYWJsZT5ob3N0MTwvcmVwbGFjZWFibGU+IDxyZXBs YWNlYWJsZT5kYm5hbWU8L3JlcGxhY2VhYmxlPiB8IHBzcWwgLS1uby1wc3FscmMgLWggPHJlcGxh Y2VhYmxlPmhvc3QyPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmRibmFtZTwvcmVwbGFjZWFi bGU+CiA8L3Byb2dyYW1saXN0aW5nPgogICAgPC9wYXJhPgogCkBAIC0yMDUsNyArMjA3LDcgQEAg cGdfZHVtcGFsbCAmZ3Q7IDxyZXBsYWNlYWJsZT5kdW1wZmlsZTwvcmVwbGFjZWFibGU+CiA8L3N5 bm9wc2lzPgogICAgIFRoZSByZXN1bHRpbmcgZHVtcCBjYW4gYmUgcmVzdG9yZWQgd2l0aCA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+OgogPHN5bm9wc2lzPgotcHNxbCAtZiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZHVtcGZpbGU8L3JlcGxhY2VhYmxlPiBwb3N0Z3Jlcwor cHNxbCAtLW5vLXBzcWxyYyAtZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZHVtcGZp bGU8L3JlcGxhY2VhYmxlPiBwb3N0Z3JlcwogPC9zeW5vcHNpcz4KICAgICAoQWN0dWFsbHksIHlv dSBjYW4gc3BlY2lmeSBhbnkgZXhpc3RpbmcgZGF0YWJhc2UgbmFtZSB0byBzdGFydCBmcm9tLAog ICAgIGJ1dCBpZiB5b3UgYXJlIGxvYWRpbmcgaW50byBhbiBlbXB0eSBjbHVzdGVyIHRoZW4gPGxp dGVyYWw+cG9zdGdyZXM8L2xpdGVyYWw+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3Bn X2R1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCmluZGV4IGZmYzI5YjA0 ZmIuLmI2YzMzYzNjMmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCkBAIC0xNjM2LDYgKzE2MzYsMTMg QEAgQ1JFQVRFIERBVEFCQVNFIGZvbyBXSVRIIFRFTVBMQVRFIHRlbXBsYXRlMDsKICAgIG9wdGlv biB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBieSB0aGUgc3Vic2NyaWJlciBpZiB0aGUg c3Vic2NyaXB0aW9uCiAgICBoYWQgYmVlbiBvcmlnaW5hbGx5IGNyZWF0ZWQgd2l0aCA8bGl0ZXJh bD50d29fcGhhc2UgPSB0cnVlPC9saXRlcmFsPiBvcHRpb24uCiAgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIEl0IGlzIGdlbmVyYWxseSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIDxvcHRpb24+LS1u by1wc3FscmM8L29wdGlvbj4gb3B0aW9uCisgICB3aGVuIHJlc3RvcmluZyBhIGRhdGFiYXNlIGZy b20gYSA8YXBwbGljYXRpb24+cGdfZHVtcDwvYXBwbGljYXRpb24+IHNjcmlwdAorICAgdG8gZW5z dXJlIGEgY2xlYW4gcmVzdG9yZSBwcm9jZXNzIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBjb25mbGlj dHMgd2l0aAorICAgZXhpc3RpbmcgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPiBjb25m aWd1cmF0aW9ucy4KKyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDEgaWQ9InBn LWR1bXAtZXhhbXBsZXMiIHhyZWZsYWJlbD0iRXhhbXBsZXMiPgpAQCAtMTY1Myw3ICsxNjYwLDcg QEAgQ1JFQVRFIERBVEFCQVNFIGZvbyBXSVRIIFRFTVBMQVRFIHRlbXBsYXRlMDsKICAgIDxsaXRl cmFsPm5ld2RiPC9saXRlcmFsPjoKIAogPHNjcmVlbj4KLTxwcm9tcHQ+JDwvcHJvbXB0PiA8dXNl cmlucHV0PnBzcWwgLWQgbmV3ZGIgLWYgZGIuc3FsPC91c2VyaW5wdXQ+Cis8cHJvbXB0PiQ8L3By b21wdD4gPHVzZXJpbnB1dD5wc3FsIC0tbm8tcHNxbHJjIC1kIG5ld2RiIC1mIGRiLnNxbDwvdXNl cmlucHV0PgogPC9zY3JlZW4+CiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9wZ19kdW1wYWxsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbApp bmRleCA0ZDdjMDQ2NDY4Li5mOGRiNjMzMjZhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L3BnX2R1bXBhbGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbApA QCAtODE3LDYgKzgxNywxNSBAQCBleGNsdWRlIGRhdGFiYXNlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5QQVRURVJOPC9yZXBsYWNlYWJsZT4KICAgIGRhdGFiYXNlIGNyZWF0aW9uIHdp bGwgZmFpbCBmb3IgZGF0YWJhc2VzIGluIG5vbi1kZWZhdWx0CiAgICBsb2NhdGlvbnMuCiAgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIEl0IGlzIGdlbmVyYWxseSByZWNvbW1lbmRlZCB0byB1c2Ug dGhlIDxvcHRpb24+LS1uby1wc3FscmM8L29wdGlvbj4gb3B0aW9uCisgICB3aGVuIHJlc3Rvcmlu ZyBhIGRhdGFiYXNlIGZyb20gYSA8YXBwbGljYXRpb24+cGdfZHVtcGFsbDwvYXBwbGljYXRpb24+ IHNjcmlwdAorICAgdG8gZW5zdXJlIGEgY2xlYW4gcmVzdG9yZSBwcm9jZXNzIGFuZCBwcmV2ZW50 IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aAorICAgZXhpc3RpbmcgPGFwcGxpY2F0aW9uPnBzcWw8 L2FwcGxpY2F0aW9uPiBjb25maWd1cmF0aW9ucy4gQWRkaXRpb25hbGx5LAorICAgYmVjYXVzZSB0 aGUgc2NyaXB0IGluY2x1ZGVzIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gbWV0YS1j b21tYW5kcywKKyAgIGl0IGlzIGluY29tcGF0aWJsZSB3aXRoIGNsaWVudHMgb3RoZXIgdGhhbiA8 YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+LgorICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4K IAogCkBAIC04MzMsNyArODQyLDcgQEAgZXhjbHVkZSBkYXRhYmFzZSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+UEFUVEVSTjwvcmVwbGFjZWFibGU+CiAgIDxwYXJhPgogICAgVG8gcmVz dG9yZSBkYXRhYmFzZShzKSBmcm9tIHRoaXMgZmlsZSwgeW91IGNhbiB1c2U6CiA8c2NyZWVuPgot PHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+cHNxbCAtZiBkYi5vdXQgcG9zdGdyZXM8L3Vz ZXJpbnB1dD4KKzxwcm9tcHQ+JDwvcHJvbXB0PiA8dXNlcmlucHV0PnBzcWwgLS1uby1wc3FscmMg LWYgZGIub3V0IHBvc3RncmVzPC91c2VyaW5wdXQ+CiA8L3NjcmVlbj4KICAgIEl0IGlzIG5vdCBp bXBvcnRhbnQgdG8gd2hpY2ggZGF0YWJhc2UgeW91IGNvbm5lY3QgaGVyZSBzaW5jZSB0aGUKICAg IHNjcmlwdCBmaWxlIGNyZWF0ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0 aW9uPiB3aWxsCi0tIAoyLjQzLjAKCg== --=_d8e74a89ad2657e8e86877d9f3194c4a--