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 1pUcMq-0002Uz-3T for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Feb 2023 23:48:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pUcLq-0001Ni-Fx for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Feb 2023 23:47:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pUcLq-0001NZ-0X for pgsql-hackers@lists.postgresql.org; Tue, 21 Feb 2023 23:47:14 +0000 Received: from wnew1-smtp.messagingengine.com ([64.147.123.26]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pUcLl-0003JO-9f for pgsql-hackers@postgresql.org; Tue, 21 Feb 2023 23:47:12 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailnew.west.internal (Postfix) with ESMTP id BC0C62B06B45; Tue, 21 Feb 2023 18:47:07 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Tue, 21 Feb 2023 18:47:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references: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=1677023227; x=1677030427; bh=zhn9RPAPDQb7n5wHAuxX3bJfiSd4 hOHnZDT8ArGBaY4=; b=luPEFqAtkYeGz2v7ec8eVBOLcYGrD7d5yNaDN3TBBzO6 2/wrpo8+i7KwKLei/3jLqjqN3azLPdJvUAQqNykY1TstiAZGuGB3nUWojvn1ikAC BtURddhkUKRW93PBhow9Yggi4uDYPBZVstPs86csIQvh4rB07uHpdcSorjBrzeju k99pH62+TefIIaBfHo1Yo1kVWsxy0G+fCHDw19of1bczilNvnAwuAtUIxanmwh2/ nfKdXyUgbDbb25pjtF7d9v3+H0QHYE4Gk7oBrRnPECnUKZ7iXCP0wi0guPtVpeVu 96KiOWAi0qQdD4tmEBBl5K4KaFLy78k1Pf8mbAfwGw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudejkedgudefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvg hrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepuedtkeehueehtddvgfff heelteefhfeifeduiedtffeitdeludejhfejudefffffnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhht segvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 21 Feb 2023 18:47:06 -0500 (EST) Content-Type: multipart/mixed; boundary="------------5wKgsXRNwfgtFPMz2F06t70i" Message-ID: Date: Wed, 22 Feb 2023 00:47:04 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Add support for unit "B" to pg_size_pretty() Content-Language: en-US To: Justin Pryzby Cc: pgsql-hackers@postgresql.org References: <0106914a-9eb5-22be-40d8-652cc88c827d@enterprisedb.com> <20230220143452.GM1653@telsasoft.com> From: Peter Eisentraut In-Reply-To: <20230220143452.GM1653@telsasoft.com> 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. --------------5wKgsXRNwfgtFPMz2F06t70i Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 20.02.23 15:34, Justin Pryzby wrote: > On Mon, Feb 20, 2023 at 07:44:15AM +0100, Peter Eisentraut wrote: >> This patch adds support for the unit "B" to pg_size_pretty(). This makes it > > It seems like what it actually does is to support "B" in pg_size_bytes() > - is that what you meant ? yes > pg_size_pretty() already supports "bytes", so this doesn't actually make > sizes any more pretty, or evidently change its output at all. Right, this is for the input side. >> diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c >> index dbd404101f..9ecd5428c3 100644 >> --- a/src/backend/utils/adt/dbsize.c >> +++ b/src/backend/utils/adt/dbsize.c >> @@ -49,6 +49,7 @@ struct size_pretty_unit >> /* When adding units here also update the error message in pg_size_bytes */ >> static const struct size_pretty_unit size_pretty_units[] = { >> {"bytes", 10 * 1024, false, 0}, >> + {"B", 10 * 1024, false, 0}, > > This adds a duplicate line (unitbits=0) where no other existing line > uses duplicates. If that's intentional, I think it deserves a comment > highlighting that it's an /*alias*/, and about why that does the right > thing, either here about or in the commit message. I have added a comment about that. --------------5wKgsXRNwfgtFPMz2F06t70i Content-Type: text/plain; charset=UTF-8; name="v2-0001-Add-support-for-unit-B-to-pg_size_bytes.patch" Content-Disposition: attachment; filename="v2-0001-Add-support-for-unit-B-to-pg_size_bytes.patch" Content-Transfer-Encoding: base64 RnJvbSA2YjNhMTU1MjYwZTJkYTUzMzhmN2NiNmExZDcyOWEwZDM0ZTM5MzVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAyMiBGZWIgMjAyMyAwMDo0NDo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIEFkZCBzdXBwb3J0IGZvciB1bml0ICJCIiB0byBwZ19zaXplX2J5dGVz KCkKClRoaXMgbWFrZXMgaXQgY29uc2lzdGVudCB3aXRoIHRoZSB1bml0cyBzdXBwb3J0IGlu IEdVQy4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvZmxhdC8wMTA2OTE0YS05ZWI1LTIyYmUtNDBkOC02NTJjYzg4YzgyN2QlNDBlbnRlcnBy aXNlZGIuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYyAgICAgICB8IDEwICsrKysr KysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZGJzaXplLm91dCB8IDE1ICsrKysr KysrLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGJzaXplLnNxbCAgICAgIHwgIDIg Ky0KIDQgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwKaW5kZXggZTA5ZTI4OWE0My4uMTVhNWE5OGIwYSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0y NzE2Miw3ICsyNzE2Miw3IEBAIDx0aXRsZT5EYXRhYmFzZSBPYmplY3QgU2l6ZSBGdW5jdGlv bnM8L3RpdGxlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgQ29u dmVydHMgYSBzaXplIGluIGJ5dGVzIGludG8gYSBtb3JlIGVhc2lseSBodW1hbi1yZWFkYWJs ZSBmb3JtYXQgd2l0aAotICAgICAgICBzaXplIHVuaXRzIChieXRlcywga0IsIE1CLCBHQiBv ciBUQiBhcyBhcHByb3ByaWF0ZSkuICBOb3RlIHRoYXQgdGhlCisgICAgICAgIHNpemUgdW5p dHMgKGJ5dGVzLCBCLCBrQiwgTUIsIEdCIG9yIFRCIGFzIGFwcHJvcHJpYXRlKS4gIE5vdGUg dGhhdCB0aGUKICAgICAgICAgdW5pdHMgYXJlIHBvd2VycyBvZiAyIHJhdGhlciB0aGFuIHBv d2VycyBvZiAxMCwgc28gMWtCIGlzIDEwMjQgYnl0ZXMsCiAgICAgICAgIDFNQiBpcyAxMDI0 PHN1cGVyc2NyaXB0PjI8L3N1cGVyc2NyaXB0PiA9IDEwNDg1NzYgYnl0ZXMsIGFuZCBzbyBv bi4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9kYnNpemUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYwppbmRl eCBkYmQ0MDQxMDFmLi5jYWI3ODM0ZThhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvZGJzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jCkBA IC00Niw5ICs0NiwxNSBAQCBzdHJ1Y3Qgc2l6ZV9wcmV0dHlfdW5pdAogCQkJCQkJCQkgKiB1 bml0ICovCiB9OwogCi0vKiBXaGVuIGFkZGluZyB1bml0cyBoZXJlIGFsc28gdXBkYXRlIHRo ZSBlcnJvciBtZXNzYWdlIGluIHBnX3NpemVfYnl0ZXMgKi8KKy8qCisgKiBXaGVuIGFkZGlu ZyB1bml0cyBoZXJlIGFsc28gdXBkYXRlIHRoZSBlcnJvciBtZXNzYWdlIGluIHBnX3NpemVf Ynl0ZXMuCisgKgorICogQWxpYXNlcyAod2l0aCB0aGUgc2FtZSB1bml0Yml0cykgYXJlIGFs bG93ZWQuICBwZ19zaXplX3ByZXR0eSB1c2VzIHRoZQorICogZmlyc3Qgb25lIGFtb25nIHRo ZW0uCisgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2l6ZV9wcmV0dHlfdW5pdCBzaXplX3By ZXR0eV91bml0c1tdID0gewogCXsiYnl0ZXMiLCAxMCAqIDEwMjQsIGZhbHNlLCAwfSwKKwl7 IkIiLCAxMCAqIDEwMjQsIGZhbHNlLCAwfSwKIAl7ImtCIiwgMjAgKiAxMDI0IC0gMSwgdHJ1 ZSwgMTB9LAogCXsiTUIiLCAyMCAqIDEwMjQgLSAxLCB0cnVlLCAyMH0sCiAJeyJHQiIsIDIw ICogMTAyNCAtIDEsIHRydWUsIDMwfSwKQEAgLTgxMyw3ICs4MTksNyBAQCBwZ19zaXplX2J5 dGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJpbnZhbGlkIHNpemU6IFwiJXNcIiIs IHRleHRfdG9fY3N0cmluZyhhcmcpKSwKIAkJCQkJIGVycmRldGFpbCgiSW52YWxpZCBzaXpl IHVuaXQ6IFwiJXNcIi4iLCBzdHJwdHIpLAotCQkJCQkgZXJyaGludCgiVmFsaWQgdW5pdHMg YXJlIFwiYnl0ZXNcIiwgXCJrQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBhbmQgXCJQ QlwiLiIpKSk7CisJCQkJCSBlcnJoaW50KCJWYWxpZCB1bml0cyBhcmUgXCJieXRlc1wiLCBc IkJcIiwgXCJrQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBhbmQgXCJQQlwiLiIpKSk7 CiAKIAkJaWYgKG11bHRpcGxpZXIgPiAxKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Ric2l6ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2Ric2l6ZS5vdXQKaW5kZXggZDhkNjY4NmI1Zi4uZjExMjFhODdhYSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYnNpemUub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZGJzaXplLm91dApAQCAtODEsMTIgKzgxLDEzIEBAIFNFTEVDVCBz aXplLCBwZ19zaXplX3ByZXR0eShzaXplKSwgcGdfc2l6ZV9wcmV0dHkoLTEgKiBzaXplKSBG Uk9NCiAKIC0tIHBnX3NpemVfYnl0ZXMoKSB0ZXN0cwogU0VMRUNUIHNpemUsIHBnX3NpemVf Ynl0ZXMoc2l6ZSkgRlJPTQotICAgIChWQUxVRVMgKCcxJyksICgnMTIzYnl0ZXMnKSwgKCcx a0InKSwgKCcxTUInKSwgKCcgMSBHQicpLCAoJzEuNSBHQiAnKSwKKyAgICAoVkFMVUVTICgn MScpLCAoJzEyM2J5dGVzJyksICgnMjU2IEInKSwgKCcxa0InKSwgKCcxTUInKSwgKCcgMSBH QicpLCAoJzEuNSBHQiAnKSwKICAgICAgICAgICAgICgnMVRCJyksICgnMzAwMCBUQicpLCAo JzFlNiBNQicpLCAoJzk5IFBCJykpIHgoc2l6ZSk7CiAgICBzaXplICAgfCAgIHBnX3NpemVf Ynl0ZXMgICAgCiAtLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSAgICAgICAg fCAgICAgICAgICAgICAgICAgIDEKICAxMjNieXRlcyB8ICAgICAgICAgICAgICAgIDEyMwor IDI1NiBCICAgIHwgICAgICAgICAgICAgICAgMjU2CiAgMWtCICAgICAgfCAgICAgICAgICAg ICAgIDEwMjQKICAxTUIgICAgICB8ICAgICAgICAgICAgMTA0ODU3NgogICAxIEdCICAgIHwg ICAgICAgICAxMDczNzQxODI0CkBAIC05NSw3ICs5Niw3IEBAIFNFTEVDVCBzaXplLCBwZ19z aXplX2J5dGVzKHNpemUpIEZST00KICAzMDAwIFRCICB8ICAgMzI5ODUzNDg4MzMyODAwMAog IDFlNiBNQiAgIHwgICAgICAxMDQ4NTc2MDAwMDAwCiAgOTkgUEIgICAgfCAxMTE0NjQwOTA3 Nzc0MTk3NzYKLSgxMCByb3dzKQorKDExIHJvd3MpCiAKIC0tIGNhc2UtaW5zZW5zaXRpdmUg dW5pdHMgYXJlIHN1cHBvcnRlZAogU0VMRUNUIHNpemUsIHBnX3NpemVfYnl0ZXMoc2l6ZSkg RlJPTQpAQCAtMTUzLDE1ICsxNTQsMTUgQEAgU0VMRUNUIHNpemUsIHBnX3NpemVfYnl0ZXMo c2l6ZSkgRlJPTQogU0VMRUNUIHBnX3NpemVfYnl0ZXMoJzEgQUInKTsKIEVSUk9SOiAgaW52 YWxpZCBzaXplOiAiMSBBQiIKIERFVEFJTDogIEludmFsaWQgc2l6ZSB1bml0OiAiQUIiLgot SElOVDogIFZhbGlkIHVuaXRzIGFyZSAiYnl0ZXMiLCAia0IiLCAiTUIiLCAiR0IiLCAiVEIi LCBhbmQgIlBCIi4KK0hJTlQ6ICBWYWxpZCB1bml0cyBhcmUgImJ5dGVzIiwgIkIiLCAia0Ii LCAiTUIiLCAiR0IiLCAiVEIiLCBhbmQgIlBCIi4KIFNFTEVDVCBwZ19zaXplX2J5dGVzKCcx IEFCIEEnKTsKIEVSUk9SOiAgaW52YWxpZCBzaXplOiAiMSBBQiBBIgogREVUQUlMOiAgSW52 YWxpZCBzaXplIHVuaXQ6ICJBQiBBIi4KLUhJTlQ6ICBWYWxpZCB1bml0cyBhcmUgImJ5dGVz IiwgImtCIiwgIk1CIiwgIkdCIiwgIlRCIiwgYW5kICJQQiIuCitISU5UOiAgVmFsaWQgdW5p dHMgYXJlICJieXRlcyIsICJCIiwgImtCIiwgIk1CIiwgIkdCIiwgIlRCIiwgYW5kICJQQiIu CiBTRUxFQ1QgcGdfc2l6ZV9ieXRlcygnMSBBQiBBICAgICcpOwogRVJST1I6ICBpbnZhbGlk IHNpemU6ICIxIEFCIEEgICAgIgogREVUQUlMOiAgSW52YWxpZCBzaXplIHVuaXQ6ICJBQiBB Ii4KLUhJTlQ6ICBWYWxpZCB1bml0cyBhcmUgImJ5dGVzIiwgImtCIiwgIk1CIiwgIkdCIiwg IlRCIiwgYW5kICJQQiIuCitISU5UOiAgVmFsaWQgdW5pdHMgYXJlICJieXRlcyIsICJCIiwg ImtCIiwgIk1CIiwgIkdCIiwgIlRCIiwgYW5kICJQQiIuCiBTRUxFQ1QgcGdfc2l6ZV9ieXRl cygnOTIyMzM3MjAzNjg1NDc3NTgwNy45Jyk7CiBFUlJPUjogIGJpZ2ludCBvdXQgb2YgcmFu Z2UKIFNFTEVDVCBwZ19zaXplX2J5dGVzKCcxZTEwMCcpOwpAQCAtMTcxLDcgKzE3Miw3IEBA IEVSUk9SOiAgdmFsdWUgb3ZlcmZsb3dzIG51bWVyaWMgZm9ybWF0CiBTRUxFQ1QgcGdfc2l6 ZV9ieXRlcygnMSBieXRlJyk7ICAtLSB0aGUgc2luZ3VsYXIgImJ5dGUiIGlzIG5vdCBzdXBw b3J0ZWQKIEVSUk9SOiAgaW52YWxpZCBzaXplOiAiMSBieXRlIgogREVUQUlMOiAgSW52YWxp ZCBzaXplIHVuaXQ6ICJieXRlIi4KLUhJTlQ6ICBWYWxpZCB1bml0cyBhcmUgImJ5dGVzIiwg ImtCIiwgIk1CIiwgIkdCIiwgIlRCIiwgYW5kICJQQiIuCitISU5UOiAgVmFsaWQgdW5pdHMg YXJlICJieXRlcyIsICJCIiwgImtCIiwgIk1CIiwgIkdCIiwgIlRCIiwgYW5kICJQQiIuCiBT RUxFQ1QgcGdfc2l6ZV9ieXRlcygnJyk7CiBFUlJPUjogIGludmFsaWQgc2l6ZTogIiIKIFNF TEVDVCBwZ19zaXplX2J5dGVzKCdrYicpOwpAQCAtMTg5LDYgKzE5MCw2IEBAIEVSUk9SOiAg aW52YWxpZCBzaXplOiAiLis5MTIiCiBTRUxFQ1QgcGdfc2l6ZV9ieXRlcygnKzkxMisga0In KTsKIEVSUk9SOiAgaW52YWxpZCBzaXplOiAiKzkxMisga0IiCiBERVRBSUw6ICBJbnZhbGlk IHNpemUgdW5pdDogIisga0IiLgotSElOVDogIFZhbGlkIHVuaXRzIGFyZSAiYnl0ZXMiLCAi a0IiLCAiTUIiLCAiR0IiLCAiVEIiLCBhbmQgIlBCIi4KK0hJTlQ6ICBWYWxpZCB1bml0cyBh cmUgImJ5dGVzIiwgIkIiLCAia0IiLCAiTUIiLCAiR0IiLCAiVEIiLCBhbmQgIlBCIi4KIFNF TEVDVCBwZ19zaXplX2J5dGVzKCcrKzEyMyBrQicpOwogRVJST1I6ICBpbnZhbGlkIHNpemU6 ICIrKzEyMyBrQiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ric2l6ZS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9kYnNpemUuc3FsCmluZGV4IDdkZjg2NTI3MWIu LmIzNGNmMzMzODUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ric2l6ZS5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGJzaXplLnNxbApAQCAtMjksNyArMjks NyBAQAogCiAtLSBwZ19zaXplX2J5dGVzKCkgdGVzdHMKIFNFTEVDVCBzaXplLCBwZ19zaXpl X2J5dGVzKHNpemUpIEZST00KLSAgICAoVkFMVUVTICgnMScpLCAoJzEyM2J5dGVzJyksICgn MWtCJyksICgnMU1CJyksICgnIDEgR0InKSwgKCcxLjUgR0IgJyksCisgICAgKFZBTFVFUyAo JzEnKSwgKCcxMjNieXRlcycpLCAoJzI1NiBCJyksICgnMWtCJyksICgnMU1CJyksICgnIDEg R0InKSwgKCcxLjUgR0IgJyksCiAgICAgICAgICAgICAoJzFUQicpLCAoJzMwMDAgVEInKSwg KCcxZTYgTUInKSwgKCc5OSBQQicpKSB4KHNpemUpOwogCiAtLSBjYXNlLWluc2Vuc2l0aXZl IHVuaXRzIGFyZSBzdXBwb3J0ZWQKCmJhc2UtY29tbWl0OiA4MDI4ZTI5NGI0NTZiZjE1Mzk2 NDk1MjdmZDk4YjM5ODVmYTQ3NTJhCi0tIAoyLjM5LjIKCg== --------------5wKgsXRNwfgtFPMz2F06t70i--