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 1qDruM-0007LH-4Q for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jun 2023 19:29:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qDruK-0005hG-R7 for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jun 2023 19:29:52 +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 1qDruK-0005gr-9v; Mon, 26 Jun 2023 19:29:52 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qDruF-000dvj-Se; Mon, 26 Jun 2023 19:29:51 +0000 Received: from [192.168.0.104] (unknown [62.217.185.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: p.luzanov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 7A939E20E5C; Mon, 26 Jun 2023 22:29:46 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1687807786; bh=T4ZsU+EpvwamrT5V4GThofyyfz7cC6LHyg9BqL/cark=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=3edRZtLdZwD0QbjIwS2A1Bdzg21/FMIrOq0FtuRoaI3XesvyNFD7asd3fXyAEvbLD xkMrr47F+BrILSGqPeSMpscfz0Yrss/p5ac9J1y0cdlPwf3s+v9oXhvpKspy8ordnL LQiv9loOBDq6iq102JL2mqlMY0Dk6WZ9ZWYViHVjqBQmwAa8CcKTI9xU6EgXeIw4te fOGbkrR2+776o6EVuHh3IojA0kFx5ZpOyyJk8sjnIsVacaJ7RHr28Oxbz07L8o40sl hO9kk0FUXSf31H+fcs1zU06DG3J8KSVUnfYMVz+yHojQlqBaxXhAeUpUSwiea7ZY3e hkwm69arA2SiA== Content-Type: multipart/mixed; boundary="------------8uAk05KUhKWHlcqHUsBuzyKZ" Message-ID: Date: Mon, 26 Jun 2023 22:29:46 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: psql: Add role's membership options to the \du+ command Content-Language: en-US, ru-RU From: Pavel Luzanov To: "David G. Johnston" Cc: Tom Lane , "Jonathan S. Katz" , Robert Haas , David Zhang , "pgsql-hackers@lists.postgresql.org" , rmt@lists.postgresql.org, horikyota.ntt@gmail.com References: <2977612.1683131109@sss.pgh.pa.us> <39e7431c-1224-ab05-c67c-68f4cf625442@postgrespro.ru> <6b64c59a-fe41-bb07-d0cd-856896412b00@postgresql.org> <7aa3d663-1ea9-de0d-c13a-cbce83902214@postgrespro.ru> <4128935.1687478926@sss.pgh.pa.us> <105356.1687565531@sss.pgh.pa.us> <41517a12-6599-b54b-d30b-3bae906a280b@postgrespro.ru> In-Reply-To: <41517a12-6599-b54b-d30b-3bae906a280b@postgrespro.ru> 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. --------------8uAk05KUhKWHlcqHUsBuzyKZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Please find attached new patch version. It implements \drg command and hides duplicates in \du & \dg commands. -- Pavel Luzanov Postgres Professional: https://postgrespro.com --------------8uAk05KUhKWHlcqHUsBuzyKZ Content-Type: text/x-patch; charset=UTF-8; name="v8-0001-psql-add-drg-command-to-show-role-memberships-and.patch" Content-Disposition: attachment; filename*0="v8-0001-psql-add-drg-command-to-show-role-memberships-and.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhMTE3ZjEzZmQ0OTdiZjZmZjhhNTA0YmNkYTZjYjEwZDM0ZGQyMmE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXZlbCBMdXphbm92IDxwLmx1emFub3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjYgSnVuIDIwMjMgMjI6MTA6MzEgKzAzMDAKU3ViamVj dDogW1BBVENIIHY4XSBwc3FsOiBhZGQgXGRyZyBjb21tYW5kIHRvIHNob3cgcm9sZSBtZW1i ZXJzaGlwcyBhbmQgZ3JhbnRzCiBpbmZvcm1hdGlvbi4KCk5ldyBjb21tYW5kIHNob3dzIGFz c2lnbmVkIHByaXZpbGVnZXMgZm9yIGVhY2ggbWVtYmVyc2hpcCAoQURNSU4sIElOSEVSSVQK b3IgU0VUKSBhbmQgd2hvIGlzIGdyYW50b3IuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGtub3cg d2hpY2ggcHJpdmlsZWdlcyBjYW4KYmUgdXNlZCBhbmQgaG93IHRvIHJldm9rZSBtZW1iZXJz aGlwLiBXaXRob3V0IHRoaXMgY29tbWFuZCB5b3UgbmVlZCB0byBxdWVyeQpwZ19hdXRoX21l bWJlcnMgZGlyZWN0bHkuCgpTaW5jZSB2MTYgaXQgaXMgcG9zc2libGUgdG8gaW5jbHVkZSBv bmUgcm9sZSB0byBhbm90aGVyIHNldmVyYWwgdGltZXMgd2l0aApkaWZmZXJlbnQgZ3JhbnRv cnMuIFRoZXJlZm9yZSwgdGhlICdNZW1iZXIgb2YnIGNvbHVtbiBvZiB0aGUgXGR1CmFuZCBc ZGcgY29tbWFuZHMgbm93IHNob3dzIGEgc29ydGVkIGFycmF5IG9mIGRpc3RpbmN0IHJvbGVz IHRvIGhpZGUgZHVwbGljYXRlcy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNn bWwgICAgIHwgMjcgKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyAgICAgICAg ICAgICB8ICAyICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgfCA4MCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5o ICAgICAgICAgICAgfCAgMyArKwogc3JjL2Jpbi9wc3FsL2hlbHAuYyAgICAgICAgICAgICAg ICB8ICAxICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyAgICAgICAgfCAgNiArKy0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgfCA0MSArKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsICAgICAgfCAyNiArKysrKysrKysr CiA4IGZpbGVzIGNoYW5nZWQsIDE4MCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCAzNWFlYzZkM2NlLi4yZDJlMzk0YTg0IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0xNzIyLDcgKzE3MjIsOCBAQCBJTlNFUlQg SU5UTyB0YmwxIFZBTFVFUyAoJDEsICQyKSBcYmluZCAnZmlyc3QgdmFsdWUnICdzZWNvbmQg dmFsdWUnIFxnCiAgICAgICAgIExpc3RzIGRhdGFiYXNlIHJvbGVzLgogICAgICAgICAoU2lu Y2UgdGhlIGNvbmNlcHRzIG9mIDxxdW90ZT51c2VyczwvcXVvdGU+IGFuZCA8cXVvdGU+Z3Jv dXBzPC9xdW90ZT4gaGF2ZSBiZWVuCiAgICAgICAgIHVuaWZpZWQgaW50byA8cXVvdGU+cm9s ZXM8L3F1b3RlPiwgdGhpcyBjb21tYW5kIGlzIG5vdyBlcXVpdmFsZW50IHRvCi0gICAgICAg IDxsaXRlcmFsPlxkdTwvbGl0ZXJhbD4uKQorICAgICAgICA8bGl0ZXJhbD5cZHU8L2xpdGVy YWw+LikgRm9yIGVhY2ggcm9sZSBhIHNvcnRlZCBsaXN0IG9mIGRpc3RpbmN0IHJvbGVzCisg ICAgICAgIG9mIHdoaWNoIGl0IGlzIGEgbWVtYmVyIGlzIHNob3duIGluIGFycmF5IGZvcm1h dC4KICAgICAgICAgQnkgZGVmYXVsdCwgb25seSB1c2VyLWNyZWF0ZWQgcm9sZXMgYXJlIHNo b3duOyBzdXBwbHkgdGhlCiAgICAgICAgIDxsaXRlcmFsPlM8L2xpdGVyYWw+IG1vZGlmaWVy IHRvIGluY2x1ZGUgc3lzdGVtIHJvbGVzLgogICAgICAgICBJZiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwKQEAg LTE4ODMsNiArMTg4NCwyNyBAQCBJTlNFUlQgSU5UTyB0YmwxIFZBTFVFUyAoJDEsICQyKSBc YmluZCAnZmlyc3QgdmFsdWUnICdzZWNvbmQgdmFsdWUnIFxnCiAgICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorCisgICAgICA8dmFybGlzdGVudHJ5IGlk PSJhcHAtcHNxbC1tZXRhLWNvbW1hbmQtZHJnIj4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+ XGRyZ1tTXSBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9s aXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgTGlzdHMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCByb2xlIG1lbWJl cnNoaXAsIGluY2x1ZGluZworICAgICAgICBhc3NpZ25lZCBvcHRpb25zICg8bGl0ZXJhbD5B RE1JTjwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRlcmFsPklOSEVSSVQ8L2xpdGVyYWw+IG9y IDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4pIGFuZCBncmFudG9yLgorICAgICAgICBTZWUgdGhl IDxsaW5rIGxpbmtlbmQ9InNxbC1ncmFudCI+PGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+PC9s aW5rPgorICAgICAgICBjb21tYW5kIGZvciB0aGVpciBtZWFuaW5nLgorICAgICAgICA8L3Bh cmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICBCeSBkZWZhdWx0LCBvbmx5IHVzZXItY3Jl YXRlZCByb2xlcyBhcmUgc2hvd247IHN1cHBseSB0aGUKKyAgICAgICAgPGxpdGVyYWw+Uzwv bGl0ZXJhbD4gbW9kaWZpZXIgdG8gaW5jbHVkZSBzeXN0ZW0gcm9sZXMuCisgICAgICAgIElm IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4g aXMgc3BlY2lmaWVkLAorICAgICAgICBvbmx5IHRob3NlIHJvbGVzIHdob3NlIG5hbWVzIG1h dGNoIHRoZSBwYXR0ZXJuIGFyZSBsaXN0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisKICAgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9ImFwcC1wc3FsLW1ldGEtY29tbWFuZC1kcmRzIj4KICAgICAgICAgPHRlcm0+ PGxpdGVyYWw+XGRyZHMgWyA8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyI+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGUtcGF0dGVybjwvcmVwbGFjZWFibGU+ PC9saW5rPiBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YWJhc2UtcGF0dGVybjwvcmVwbGFjZWFibGU+PC9s aW5rPiBdIF08L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CkBAIC0xOTU3 LDcgKzE5NzksOCBAQCBJTlNFUlQgSU5UTyB0YmwxIFZBTFVFUyAoJDEsICQyKSBcYmluZCAn Zmlyc3QgdmFsdWUnICdzZWNvbmQgdmFsdWUnIFxnCiAgICAgICAgIExpc3RzIGRhdGFiYXNl IHJvbGVzLgogICAgICAgICAoU2luY2UgdGhlIGNvbmNlcHRzIG9mIDxxdW90ZT51c2Vyczwv cXVvdGU+IGFuZCA8cXVvdGU+Z3JvdXBzPC9xdW90ZT4gaGF2ZSBiZWVuCiAgICAgICAgIHVu aWZpZWQgaW50byA8cXVvdGU+cm9sZXM8L3F1b3RlPiwgdGhpcyBjb21tYW5kIGlzIG5vdyBl cXVpdmFsZW50IHRvCi0gICAgICAgIDxsaXRlcmFsPlxkZzwvbGl0ZXJhbD4uKQorICAgICAg ICA8bGl0ZXJhbD5cZGc8L2xpdGVyYWw+LikgRm9yIGVhY2ggcm9sZSBhIHNvcnRlZCBsaXN0 IG9mIGRpc3RpbmN0IHJvbGVzCisgICAgICAgIG9mIHdoaWNoIGl0IGlzIGEgbWVtYmVyIGlz IHNob3duIGluIGFycmF5IGZvcm1hdC4KICAgICAgICAgQnkgZGVmYXVsdCwgb25seSB1c2Vy LWNyZWF0ZWQgcm9sZXMgYXJlIHNob3duOyBzdXBwbHkgdGhlCiAgICAgICAgIDxsaXRlcmFs PlM8L2xpdGVyYWw+IG1vZGlmaWVyIHRvIGluY2x1ZGUgc3lzdGVtIHJvbGVzLgogICAgICAg ICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFi bGU+IGlzIHNwZWNpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMg Yi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDUxMWRlYmJlODEuLjg4YTY1M2E3MDkg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L2NvbW1hbmQuYwpAQCAtOTE4LDYgKzkxOCw4IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQp CiAKIAkJCQkJZnJlZShwYXR0ZXJuMik7CiAJCQkJfQorCQkJCWVsc2UgaWYgKHN0cm5jbXAo Y21kLCAiZHJnIiwgMykgPT0gMCkKKwkJCQkJc3VjY2VzcyA9IGRlc2NyaWJlUm9sZUdyYW50 cyhwYXR0ZXJuLCBzaG93X3N5c3RlbSk7CiAJCQkJZWxzZQogCQkJCQlzdGF0dXMgPSBQU1FM X0NNRF9VTktOT1dOOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA5MzI1YTQ2YjhmLi5l NDEwMWZlMzZiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMzYzMiwxMCArMzYzMiwxMSBAQCBkZXNjcmli ZVJvbGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lz dGVtKQogCQkJCQkgICJTRUxFQ1Qgci5yb2xuYW1lLCByLnJvbHN1cGVyLCByLnJvbGluaGVy aXQsXG4iCiAJCQkJCSAgIiAgci5yb2xjcmVhdGVyb2xlLCByLnJvbGNyZWF0ZWRiLCByLnJv bGNhbmxvZ2luLFxuIgogCQkJCQkgICIgIHIucm9sY29ubmxpbWl0LCByLnJvbHZhbGlkdW50 aWwsXG4iCi0JCQkJCSAgIiAgQVJSQVkoU0VMRUNUIGIucm9sbmFtZVxuIgorCQkJCQkgICIg IEFSUkFZKFNFTEVDVCBESVNUSU5DVCBiLnJvbG5hbWVcbiIKIAkJCQkJICAiICAgICAgICBG Uk9NIHBnX2NhdGFsb2cucGdfYXV0aF9tZW1iZXJzIG1cbiIKIAkJCQkJICAiICAgICAgICBK T0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgYiBPTiAobS5yb2xlaWQgPSBiLm9pZClcbiIKLQkJ CQkJICAiICAgICAgICBXSEVSRSBtLm1lbWJlciA9IHIub2lkKSBhcyBtZW1iZXJvZiIpOwor CQkJCQkgICIgICAgICAgIFdIRVJFIG0ubWVtYmVyID0gci5vaWRcbiIKKwkJCQkJICAiICAg ICAgICBPUkRFUiBCWSAxKSBhcyBtZW1iZXJvZiIpOwogCiAJaWYgKHZlcmJvc2UpCiAJewpA QCAtMzc1Myw2ICszNzU0LDgxIEBAIGRlc2NyaWJlUm9sZXMoY29uc3QgY2hhciAqcGF0dGVy biwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pCiAJcmV0dXJuIHRydWU7CiB9CiAK Ky8qCisgKiBcZHJnCisgKiBEZXNjcmliZXMgcm9sZSBncmFudHMuCisgKi8KK2Jvb2wKK2Rl c2NyaWJlUm9sZUdyYW50cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHNob3dTeXN0ZW0p Cit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJcHJpbnRR dWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsK KwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1QgbS5yb2xuYW1lIEFT IFwiJXNcIiwgci5yb2xuYW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9n LmNvbmNhdF93cygnLCAnLFxuIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlJvbGUgbmFtZSIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiTWVtYmVyIG9mIikpOworCisJaWYgKHBzZXQuc3Zl cnNpb24gPj0gMTYwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAi ICAgIENBU0UgV0hFTiBwYW0uYWRtaW5fb3B0aW9uIFRIRU4gJyVzJyBFTkQsXG4iCisJCQkJ CQkgICIgICAgQ0FTRSBXSEVOIHBhbS5pbmhlcml0X29wdGlvbiBUSEVOICclcycgRU5ELFxu IgorCQkJCQkJICAiICAgIENBU0UgV0hFTiBwYW0uc2V0X29wdGlvbiBUSEVOICclcycgRU5E XG4iLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkFETUlOIiksCisJCQkJCQkgIGdldHRleHRf bm9vcCgiSU5IRVJJVCIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIlNFVCIpKTsKKwllbHNl CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIgICAgQ0FTRSBXSEVOIHBh bS5hZG1pbl9vcHRpb24gVEhFTiAnJXMnIEVORCxcbiIKKwkJCQkJCSAgIiAgICBDQVNFIFdI RU4gcGFtLnJvbGVpZCBJUyBOT1QgTlVMTCBBTkQgbS5yb2xpbmhlcml0IFRIRU4gJyVzJyBF TkQsXG4iCisJCQkJCQkgICIgICAgQ0FTRSBXSEVOIHBhbS5yb2xlaWQgSVMgTk9UIE5VTEwg VEhFTiAnJXMnIEVORFxuIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJBRE1JTiIpLAorCQkJ CQkJICBnZXR0ZXh0X25vb3AoIklOSEVSSVQiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJT RVQiKSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgIiAgKSBBUyBcIiVz XCIsXG4iCisJCQkJCSAiICBnLnJvbG5hbWUgQVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRl eHRfbm9vcCgiT3B0aW9ucyIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiR3JhbnRvciIpKTsK KworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkgIkZST00gcGdfY2F0YWxv Zy5wZ19yb2xlcyBtXG4iCisJCQkJCQkgIiAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf YXV0aF9tZW1iZXJzIHBhbSBPTiAocGFtLm1lbWJlciA9IG0ub2lkKVxuIgorCQkJCQkJICIg ICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIHIgT04gKHBhbS5yb2xlaWQgPSBy Lm9pZClcbiIKKwkJCQkJCSAiICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBn IE9OIChwYW0uZ3JhbnRvciA9IGcub2lkKVxuIik7CisKKwlpZiAoIXNob3dTeXN0ZW0gJiYg IXBhdHRlcm4pCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJXSEVSRSBtLnJvbG5h bWUgIX4gJ15wZ18nXG4iKTsKKworCWlmICghdmFsaWRhdGVTUUxOYW1lUGF0dGVybigmYnVm LCBwYXR0ZXJuLCBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCU5VTEwsICJtLnJvbG5hbWUiLCBO VUxMLCBOVUxMLAorCQkJCQkJCQlOVUxMLCAxKSkKKwl7CisJCXRlcm1QUUV4cEJ1ZmZlcigm YnVmKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICJPUkRFUiBCWSAxLCAyLCA0O1xuIik7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0 YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFs c2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxlID0gXygiTGlz dCBvZiByb2xlIGdyYW50cyIpOworCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVlOwor CisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0 LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQorCiBzdGF0 aWMgdm9pZAogYWRkX3JvbGVfYXR0cmlidXRlKFBRRXhwQnVmZmVyIGJ1ZiwgY29uc3QgY2hh ciAqY29uc3Qgc3RyKQogewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCA1NTRmZTg2NzI1Li5hN2FlMmRiMWQ3 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuaApAQCAtMzQsNiArMzQsOSBAQCBleHRlcm4gYm9vbCBkZXNjcmliZU9w ZXJhdG9ycyhjb25zdCBjaGFyICpvcGVyX3BhdHRlcm4sCiAvKiBcZHUsIFxkZyAqLwogZXh0 ZXJuIGJvb2wgZGVzY3JpYmVSb2xlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wgc2hvd1N5c3RlbSk7CiAKKy8qIFxkcmcgKi8KK2V4dGVybiBib29sIGRlc2Ny aWJlUm9sZUdyYW50cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHNob3dTeXN0ZW0pOwor CiAvKiBcZHJkcyAqLwogZXh0ZXJuIGJvb2wgbGlzdERiUm9sZVNldHRpbmdzKGNvbnN0IGNo YXIgKnBhdHRlcm4sIGNvbnN0IGNoYXIgKnBhdHRlcm4yKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggYzY0NzhlZDU1 OS4uNzc0MWNjYzI2YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9z cmMvYmluL3BzcWwvaGVscC5jCkBAIC0yODAsNiArMjgwLDcgQEAgc2xhc2hVc2FnZSh1bnNp Z25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJSEVMUDAoIiAgXFxkcCAgICAgW1BBVFRFUk5dICAg ICAgbGlzdCB0YWJsZSwgdmlldywgYW5kIHNlcXVlbmNlIGFjY2VzcyBwcml2aWxlZ2VzXG4i KTsKIAlIRUxQMCgiICBcXGRQW2l0bitdIFtQQVRURVJOXSAgICBsaXN0IFtvbmx5IGluZGV4 L3RhYmxlXSBwYXJ0aXRpb25lZCByZWxhdGlvbnMgW249bmVzdGVkXVxuIik7CiAJSEVMUDAo IiAgXFxkcmRzIFtST0xFUFRSTiBbREJQVFJOXV0gbGlzdCBwZXItZGF0YWJhc2Ugcm9sZSBz ZXR0aW5nc1xuIik7CisJSEVMUDAoIiAgXFxkcmdbU10gW1BBVFRFUk5dICAgICAgbGlzdCBy b2xlIGdyYW50c1xuIik7CiAJSEVMUDAoIiAgXFxkUnBbK10gW1BBVFRFUk5dICAgICAgbGlz dCByZXBsaWNhdGlvbiBwdWJsaWNhdGlvbnNcbiIpOwogCUhFTFAwKCIgIFxcZFJzWytdIFtQ QVRURVJOXSAgICAgIGxpc3QgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uc1xuIik7CiAJSEVM UDAoIiAgXFxkc1tTK10gW1BBVFRFUk5dICAgICAgbGlzdCBzZXF1ZW5jZXNcbiIpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5jCmluZGV4IDY3Nzg0N2U0MzQuLjk3NjY0ZWMxZDIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKQEAgLTE3MDksNyArMTcwOSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJcXGRlcyIsICJcXGRldCIsICJc XGRldSIsICJcXGRldyIsICJcXGRFIiwgIlxcZGYiLAogCQkiXFxkRiIsICJcXGRGZCIsICJc XGRGcCIsICJcXGRGdCIsICJcXGRnIiwgIlxcZGkiLCAiXFxkbCIsICJcXGRMIiwKIAkJIlxc ZG0iLCAiXFxkbiIsICJcXGRvIiwgIlxcZE8iLCAiXFxkcCIsICJcXGRQIiwgIlxcZFBpIiwg IlxcZFB0IiwKLQkJIlxcZHJkcyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwKKwkJIlxc ZHJkcyIsICJcXGRyZyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwKIAkJIlxcZHQiLCAi XFxkVCIsICJcXGR2IiwgIlxcZHUiLCAiXFxkeCIsICJcXGRYIiwgIlxcZHkiLAogCQkiXFxl Y2hvIiwgIlxcZWRpdCIsICJcXGVmIiwgIlxcZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGlu ZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9zZSIsICJcXGV2IiwKQEAgLTQ3MzEsNyAr NDczMSw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQs IGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX3RhYmxlcyk7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkVCoiKSkKIAkJQ09N UExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzKTsK LQllbHNlIGlmIChUYWlsTWF0Y2hlc0NTKCJcXGR1KiIpIHx8IFRhaWxNYXRjaGVzQ1MoIlxc ZGcqIikpCisJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkdSoiKSB8fAorCQkJIFRhaWxN YXRjaGVzQ1MoIlxcZGcqIikgfHwKKwkJCSBUYWlsTWF0Y2hlc0NTKCJcXGRyZyoiKSkKIAkJ Q09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyk7CiAJZWxzZSBp ZiAoVGFpbE1hdGNoZXNDUygiXFxkdioiKSkKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2Zfdmlld3MpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKaW5kZXggYzA2MmMzZGM3Yi4uYTQwNDJhNzFmNiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BzcWwub3V0CkBAIC02NjE4LDMgKzY2MTgsNDQgQEAgY3Jvc3MtZGF0YWJhc2Ug cmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8uc3VjaC5kYXRhYmFzZSIuIm5v LnN1Y2guc2NoZW0KIGNyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1l bnRlZDogIm5vLnN1Y2guZGF0YWJhc2UiLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZGF0 YS50eXBlIgogXGRYICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5z dWNoLmV4dGVuZGVkLnN0YXRpc3RpY3MiCiBjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFy ZSBub3QgaW1wbGVtZW50ZWQ6ICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEi LiJuby5zdWNoLmV4dGVuZGVkLnN0YXRpc3RpY3MiCistLSBjaGVjayBcZHJnIGFuZCBcZHUK K0NSRUFURSBST0xFIHJlZ3Jlc3NfZHVfcm9sZTA7CitDUkVBVEUgUk9MRSByZWdyZXNzX2R1 X3JvbGUxOworQ1JFQVRFIFJPTEUgcmVncmVzc19kdV9yb2xlMjsKK0NSRUFURSBST0xFIHJl Z3Jlc3NfZHVfYWRtaW47CitHUkFOVCByZWdyZXNzX2R1X3JvbGUwIFRPIHJlZ3Jlc3NfZHVf YWRtaW4gV0lUSCBBRE1JTiBUUlVFOworR1JBTlQgcmVncmVzc19kdV9yb2xlMSBUTyByZWdy ZXNzX2R1X2FkbWluIFdJVEggQURNSU4gVFJVRTsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTIg VE8gcmVncmVzc19kdV9hZG1pbiBXSVRIIEFETUlOIFRSVUU7CitHUkFOVCByZWdyZXNzX2R1 X3JvbGUwIFRPIHJlZ3Jlc3NfZHVfcm9sZTEgV0lUSCBBRE1JTiBUUlVFLCAgSU5IRVJJVCBU UlVFLCAgU0VUIFRSVUUgIEdSQU5URUQgQlkgcmVncmVzc19kdV9hZG1pbjsKK0dSQU5UIHJl Z3Jlc3NfZHVfcm9sZTAgVE8gcmVncmVzc19kdV9yb2xlMiBXSVRIIEFETUlOIFRSVUUsICBJ TkhFUklUIEZBTFNFLCBTRVQgRkFMU0UgR1JBTlRFRCBCWSByZWdyZXNzX2R1X2FkbWluOwor R1JBTlQgcmVncmVzc19kdV9yb2xlMSBUTyByZWdyZXNzX2R1X3JvbGUyIFdJVEggQURNSU4g VFJVRSAsIElOSEVSSVQgRkFMU0UsIFNFVCBUUlVFICBHUkFOVEVEIEJZIHJlZ3Jlc3NfZHVf YWRtaW47CitHUkFOVCByZWdyZXNzX2R1X3JvbGUwIFRPIHJlZ3Jlc3NfZHVfcm9sZTEgV0lU SCBBRE1JTiBGQUxTRSwgSU5IRVJJVCBUUlVFLCAgU0VUIEZBTFNFIEdSQU5URUQgQlkgcmVn cmVzc19kdV9yb2xlMTsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTAgVE8gcmVncmVzc19kdV9y b2xlMiBXSVRIIEFETUlOIEZBTFNFLCBJTkhFUklUIFRSVUUgLCBTRVQgVFJVRSAgR1JBTlRF RCBCWSByZWdyZXNzX2R1X3JvbGUxOworR1JBTlQgcmVncmVzc19kdV9yb2xlMCBUTyByZWdy ZXNzX2R1X3JvbGUxIFdJVEggQURNSU4gRkFMU0UsIElOSEVSSVQgRkFMU0UsIFNFVCBUUlVF ICBHUkFOVEVEIEJZIHJlZ3Jlc3NfZHVfcm9sZTI7CitHUkFOVCByZWdyZXNzX2R1X3JvbGUw IFRPIHJlZ3Jlc3NfZHVfcm9sZTIgV0lUSCBBRE1JTiBGQUxTRSwgSU5IRVJJVCBGQUxTRSwg U0VUIEZBTFNFIEdSQU5URUQgQlkgcmVncmVzc19kdV9yb2xlMjsKK1xkcmcgcmVncmVzc19k dV9yb2xlKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHJvbGUgZ3Jh bnRzCisgICAgUm9sZSBuYW1lICAgICB8ICAgIE1lbWJlciBvZiAgICAgfCAgICAgICBPcHRp b25zICAgICAgIHwgICAgIEdyYW50b3IgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfZHVfcm9sZTAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICB8IAorIHJlZ3Jlc3NfZHVfcm9sZTEgfCByZWdyZXNzX2R1X3JvbGUwIHwgQURN SU4sIElOSEVSSVQsIFNFVCB8IHJlZ3Jlc3NfZHVfYWRtaW4KKyByZWdyZXNzX2R1X3JvbGUx IHwgcmVncmVzc19kdV9yb2xlMCB8IElOSEVSSVQgICAgICAgICAgICAgfCByZWdyZXNzX2R1 X3JvbGUxCisgcmVncmVzc19kdV9yb2xlMSB8IHJlZ3Jlc3NfZHVfcm9sZTAgfCBTRVQgICAg ICAgICAgICAgICAgIHwgcmVncmVzc19kdV9yb2xlMgorIHJlZ3Jlc3NfZHVfcm9sZTIgfCBy ZWdyZXNzX2R1X3JvbGUwIHwgQURNSU4gICAgICAgICAgICAgICB8IHJlZ3Jlc3NfZHVfYWRt aW4KKyByZWdyZXNzX2R1X3JvbGUyIHwgcmVncmVzc19kdV9yb2xlMCB8IElOSEVSSVQsIFNF VCAgICAgICAgfCByZWdyZXNzX2R1X3JvbGUxCisgcmVncmVzc19kdV9yb2xlMiB8IHJlZ3Jl c3NfZHVfcm9sZTAgfCAgICAgICAgICAgICAgICAgICAgIHwgcmVncmVzc19kdV9yb2xlMgor IHJlZ3Jlc3NfZHVfcm9sZTIgfCByZWdyZXNzX2R1X3JvbGUxIHwgQURNSU4sIFNFVCAgICAg ICAgICB8IHJlZ3Jlc3NfZHVfYWRtaW4KKyg4IHJvd3MpCisKK1xkdSByZWdyZXNzX2R1X3Jv bGUqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygcm9sZXMKKyAgICBS b2xlIG5hbWUgICAgIHwgIEF0dHJpYnV0ZXMgIHwgICAgICAgICAgICAgIE1lbWJlciBvZiAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfZHVfcm9sZTAgfCBD YW5ub3QgbG9naW4gfCB7fQorIHJlZ3Jlc3NfZHVfcm9sZTEgfCBDYW5ub3QgbG9naW4gfCB7 cmVncmVzc19kdV9yb2xlMH0KKyByZWdyZXNzX2R1X3JvbGUyIHwgQ2Fubm90IGxvZ2luIHwg e3JlZ3Jlc3NfZHVfcm9sZTAscmVncmVzc19kdV9yb2xlMX0KKworRFJPUCBST0xFIHJlZ3Jl c3NfZHVfcm9sZTA7CitEUk9QIFJPTEUgcmVncmVzc19kdV9yb2xlMTsKK0RST1AgUk9MRSBy ZWdyZXNzX2R1X3JvbGUyOworRFJPUCBST0xFIHJlZ3Jlc3NfZHVfYWRtaW47CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BzcWwuc3FsCmluZGV4IDk2NTAyMWZkODQuLjMwZjE5YzhlMjYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BzcWwuc3FsCkBAIC0xODIzLDMgKzE4MjMsMjkgQEAgRFJPUCBGVU5DVElPTiBwc3Fs X2Vycm9yOwogXGRQICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5z dWNoLnBhcnRpdGlvbmVkLnJlbGF0aW9uIgogXGRUICJuby5zdWNoLmRhdGFiYXNlIi4ibm8u c3VjaC5zY2hlbWEiLiJuby5zdWNoLmRhdGEudHlwZSIKIFxkWCAibm8uc3VjaC5kYXRhYmFz ZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0aWNzIgorCist LSBjaGVjayBcZHJnIGFuZCBcZHUKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZHVfcm9sZTA7CitD UkVBVEUgUk9MRSByZWdyZXNzX2R1X3JvbGUxOworQ1JFQVRFIFJPTEUgcmVncmVzc19kdV9y b2xlMjsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZHVfYWRtaW47CisKK0dSQU5UIHJlZ3Jlc3Nf ZHVfcm9sZTAgVE8gcmVncmVzc19kdV9hZG1pbiBXSVRIIEFETUlOIFRSVUU7CitHUkFOVCBy ZWdyZXNzX2R1X3JvbGUxIFRPIHJlZ3Jlc3NfZHVfYWRtaW4gV0lUSCBBRE1JTiBUUlVFOwor R1JBTlQgcmVncmVzc19kdV9yb2xlMiBUTyByZWdyZXNzX2R1X2FkbWluIFdJVEggQURNSU4g VFJVRTsKKworR1JBTlQgcmVncmVzc19kdV9yb2xlMCBUTyByZWdyZXNzX2R1X3JvbGUxIFdJ VEggQURNSU4gVFJVRSwgIElOSEVSSVQgVFJVRSwgIFNFVCBUUlVFICBHUkFOVEVEIEJZIHJl Z3Jlc3NfZHVfYWRtaW47CitHUkFOVCByZWdyZXNzX2R1X3JvbGUwIFRPIHJlZ3Jlc3NfZHVf cm9sZTIgV0lUSCBBRE1JTiBUUlVFLCAgSU5IRVJJVCBGQUxTRSwgU0VUIEZBTFNFIEdSQU5U RUQgQlkgcmVncmVzc19kdV9hZG1pbjsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTEgVE8gcmVn cmVzc19kdV9yb2xlMiBXSVRIIEFETUlOIFRSVUUgLCBJTkhFUklUIEZBTFNFLCBTRVQgVFJV RSAgR1JBTlRFRCBCWSByZWdyZXNzX2R1X2FkbWluOworR1JBTlQgcmVncmVzc19kdV9yb2xl MCBUTyByZWdyZXNzX2R1X3JvbGUxIFdJVEggQURNSU4gRkFMU0UsIElOSEVSSVQgVFJVRSwg IFNFVCBGQUxTRSBHUkFOVEVEIEJZIHJlZ3Jlc3NfZHVfcm9sZTE7CitHUkFOVCByZWdyZXNz X2R1X3JvbGUwIFRPIHJlZ3Jlc3NfZHVfcm9sZTIgV0lUSCBBRE1JTiBGQUxTRSwgSU5IRVJJ VCBUUlVFICwgU0VUIFRSVUUgIEdSQU5URUQgQlkgcmVncmVzc19kdV9yb2xlMTsKK0dSQU5U IHJlZ3Jlc3NfZHVfcm9sZTAgVE8gcmVncmVzc19kdV9yb2xlMSBXSVRIIEFETUlOIEZBTFNF LCBJTkhFUklUIEZBTFNFLCBTRVQgVFJVRSAgR1JBTlRFRCBCWSByZWdyZXNzX2R1X3JvbGUy OworR1JBTlQgcmVncmVzc19kdV9yb2xlMCBUTyByZWdyZXNzX2R1X3JvbGUyIFdJVEggQURN SU4gRkFMU0UsIElOSEVSSVQgRkFMU0UsIFNFVCBGQUxTRSBHUkFOVEVEIEJZIHJlZ3Jlc3Nf ZHVfcm9sZTI7CisKK1xkcmcgcmVncmVzc19kdV9yb2xlKgorXGR1IHJlZ3Jlc3NfZHVfcm9s ZSoKKworRFJPUCBST0xFIHJlZ3Jlc3NfZHVfcm9sZTA7CitEUk9QIFJPTEUgcmVncmVzc19k dV9yb2xlMTsKK0RST1AgUk9MRSByZWdyZXNzX2R1X3JvbGUyOworRFJPUCBST0xFIHJlZ3Jl c3NfZHVfYWRtaW47ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi4zNC4xCgo= --------------8uAk05KUhKWHlcqHUsBuzyKZ--