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 1mf6nO-0000OR-Rv for pgsql-hackers@arkaria.postgresql.org; Mon, 25 Oct 2021 20:42:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mf6nN-00016e-MM for pgsql-hackers@arkaria.postgresql.org; Mon, 25 Oct 2021 20:42:13 +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 1mf6nN-000164-5n for pgsql-hackers@lists.postgresql.org; Mon, 25 Oct 2021 20:42:13 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mf6nK-0003ee-QP for pgsql-hackers@postgresql.org; Mon, 25 Oct 2021 20:42:12 +0000 Received: by mail-pj1-x102a.google.com with SMTP id nn3-20020a17090b38c300b001a03bb6c4ebso983091pjb.1 for ; Mon, 25 Oct 2021 13:42:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version; bh=BX/VPj8ifJUf6kTybGkIFraUdVIa6QVjiMXsvGHSgho=; b=wCcGa/zQOth+lnoFxu+Pi+ppzSoJJCTNPNRowanrLMDFOLwvsH9DD4TBUGKSINEAzM 71eVKrIfzTckfXO02Fn8HHpJdinZiAA6SyuV/lRrYTwgzTBBf/xZA+uwcCuM5Q4kegmA bbN8YNAxGwAvp7QkphviS5GqdA6m5ePiPw3mtFkJOYIS3ZVLDBCCh+ZUfdzm6DmwRWzp NTBaPQO3wwKj87GMZ373ZmizLNxYtTYUyKKNG5i+Nbr7FRechmOgMgwWP0BhJGB3bJa3 un1Kcoa8623UHkBuVyPsH1P4ZScxWXQFc1FOzXAbuhsiwuQuLkHdZepqrcdQ5PiPzHyo XS9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version; bh=BX/VPj8ifJUf6kTybGkIFraUdVIa6QVjiMXsvGHSgho=; b=uY9tLi5nRMCTql6ireMTV4dA4FXnCnuH2x6DmIOxnyknlvD6dfToN+wkhw63ftlita P+0kU4JrGgBZi4AnB5nZtlHMocGgmQMks2qm6SSEELIc7aNZpbYMoGcSAsSFjMHk0DmE NBdSOhew80IuPuAWQDOiIvkFyKoWpIgKBTlV5Fhx/0QLC4ugJvpnz76fq3evq2T7sTfH WPURjxYKRQynTvZTb1J5D3EFNf591sn/ELV2MaBy6LA5HGSk7tz7EnCKfqvdVf01vv81 YYU6i7nWEANLk7HpFa+NGPwh5PD0oR/1AB/ISLPjIm3PxE7vvvwMHAAJetIkjzcRTdwm om/Q== X-Gm-Message-State: AOAM531uF1IILwUjq2h7sYUnWkwPV95m96SGTdelf950aJfiEEjGRylT QMx2wOm5QM62TO1CsnpA4LhINQ== X-Google-Smtp-Source: ABdhPJwkMX5ZLIazSVI9ZETimQxau/DvPeUqHJbsmZVQ5DijzCn45D+BOV7gxbsJysFkSGH166Q/MQ== X-Received: by 2002:a17:902:e0c4:b0:140:25e5:c06c with SMTP id e4-20020a170902e0c400b0014025e5c06cmr18208354pla.76.1635194529664; Mon, 25 Oct 2021 13:42:09 -0700 (PDT) Received: from jdavis.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id h13sm16700693pgf.14.2021.10.25.13.42.08 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 25 Oct 2021 13:42:09 -0700 (PDT) Message-ID: <66fbd8a7b7b0037c9e1df48b41941aa587c67f4d.camel@j-davis.com> Subject: Re: Allow pg_signal_backend members to use pg_log_backend_memory_stats(). From: Jeff Davis To: Michael Paquier Cc: Kyotaro Horiguchi , bossartn@amazon.com, pgsql-hackers@postgresql.org Date: Mon, 25 Oct 2021 13:42:07 -0700 In-Reply-To: References: <33F34F0C-BB16-48DE-B125-95D340A54AE8@amazon.com> <20211025.115333.563958443822411952.horikyota.ntt@gmail.com> Content-Type: multipart/mixed; boundary="=-+Gic/aVLSn7gt6lnCZGl" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-+Gic/aVLSn7gt6lnCZGl Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Mon, 2021-10-25 at 16:10 +0900, Michael Paquier wrote: > Hmm. Why don't you split the patch into two parts that can be > discussed separately then? There would be one to remove all the > superuser() checks you can think of, and a potential second to grant > those function's execution to some system role. Good idea. Attached a patch to remove the superuser check on pg_log_backend_memory_contexts(), except in the case when trying to log memory contexts of a superuser backend. Using pg_signal_backend does not seem to be universally acceptable, so I'll just drop the idea of granting to that predefined role. Regards, Jeff Davis --=-+Gic/aVLSn7gt6lnCZGl Content-Disposition: attachment; filename="pg-log-memory-contexts.diff" Content-Type: text/x-patch; name="pg-log-memory-contexts.diff"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IDU2NzcwMzJjYjI4Li5iNzAwM2ZkMzdhMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0yNTMzMiw3ICsy NTMzMiw4IEBAIFNFTEVDVCBjb2xsYXRpb24gZm9yICgnZm9vJyBDT0xMQVRFICJkZV9ERSIpOwog ICAgICAgICAoU2VlIDx4cmVmIGxpbmtlbmQ9InJ1bnRpbWUtY29uZmlnLWxvZ2dpbmciLz4gZm9y IG1vcmUgaW5mb3JtYXRpb24pLAogICAgICAgICBidXQgd2lsbCBub3QgYmUgc2VudCB0byB0aGUg Y2xpZW50IHJlZ2FyZGxlc3Mgb2YKICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLWNsaWVudC1t aW4tbWVzc2FnZXMiLz4uCi0gICAgICAgIE9ubHkgc3VwZXJ1c2VycyBjYW4gcmVxdWVzdCB0byBs b2cgdGhlIG1lbW9yeSBjb250ZXh0cy4KKyAgICAgICAgT25seSBzdXBlcnVzZXJzIGNhbiByZXF1 ZXN0IHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzIG9mIHN1cGVydXNlcgorICAgICAgICBiYWNr ZW5kcy4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAppbmRleCBhNDE2ZTk0ZDM3MS4uNTRjOTNiMTZj NGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNjk5LDYg KzY5OSw4IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xzX2Rpcih0ZXh0KSBGUk9N IHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbHNfZGlyKHRleHQsYm9v bGVhbixib29sZWFuKSBGUk9NIHB1YmxpYzsKIAorUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04g cGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpIEZST00gUFVCTElDOworCiAt LQogLS0gV2UgYWxzbyBzZXQgdXAgc29tZSB0aGluZ3MgYXMgYWNjZXNzaWJsZSB0byBzdGFuZGFy ZCByb2xlcy4KIC0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggMGQ1MjYxM2JjMzIu LjM4Y2EwZGRlZTczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCkBAIC0xNjIsMTAgKzE2 MiwxMSBAQCBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykK ICAqIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cwogICoJCVNpZ25hbCBhIGJhY2tlbmQg cHJvY2VzcyB0byBsb2cgaXRzIG1lbW9yeSBjb250ZXh0cy4KICAqCi0gKiBPbmx5IHN1cGVydXNl cnMgYXJlIGFsbG93ZWQgdG8gc2lnbmFsIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzCi0gKiBi ZWNhdXNlIGFsbG93aW5nIGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVlc3QgYXQgYW4gdW5i b3VuZGVkCi0gKiByYXRlIHdvdWxkIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGlj aCBjYW4gbGVhZCB0bwotICogZGVuaWFsIG9mIHNlcnZpY2UuCisgKiBCeSBkZWZhdWx0LCBvbmx5 IHN1cGVydXNlcnMgYXJlIGFsbG93ZWQgdG8gc2lnbmFsIHRvIGxvZyB0aGUgbWVtb3J5CisgKiBj b250ZXh0cyBiZWNhdXNlIGFsbG93aW5nIGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVlc3Qg YXQgYW4gdW5ib3VuZGVkCisgKiByYXRlIHdvdWxkIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2Vz IGFuZCB3aGljaCBjYW4gbGVhZCB0byBkZW5pYWwgb2YKKyAqIHNlcnZpY2UuIEFkZGl0aW9uYWwg cm9sZXMgY2FuIGJlIHBlcm1pdHRlZCB3aXRoIEdSQU5ULCBidXQgdGhleSB3aWxsIHN0aWxsCisg KiBiZSBwcmV2ZW50ZWQgZnJvbSBsb2dnaW5nIHRoZSBtZW1vcnkgY29udGV4dHMgb2YgYSBzdXBl cnVzZXIgYmFja2VuZC4KICAqCiAgKiBPbiByZWNlaXB0IG9mIHRoaXMgc2lnbmFsLCBhIGJhY2tl bmQgc2V0cyB0aGUgZmxhZyBpbiB0aGUgc2lnbmFsCiAgKiBoYW5kbGVyLCB3aGljaCBjYXVzZXMg dGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBsb2cgdGhlCkBAIC0xNzcsMTIgKzE3 OCw2IEBAIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQog CWludAkJCXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKIAlQR1BST0MJICAgKnByb2M7CiAKLQkv KiBPbmx5IGFsbG93IHN1cGVydXNlcnMgdG8gbG9nIG1lbW9yeSBjb250ZXh0cy4gKi8KLQlpZiAo IXN1cGVydXNlcigpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5T VUZGSUNJRU5UX1BSSVZJTEVHRSksCi0JCQkJIGVycm1zZygibXVzdCBiZSBhIHN1cGVydXNlciB0 byBsb2cgbWVtb3J5IGNvbnRleHRzIikpKTsKLQogCXByb2MgPSBCYWNrZW5kUGlkR2V0UHJvYyhw aWQpOwogCiAJLyoKQEAgLTIwNSw2ICsyMDAsMTIgQEAgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKIAl9CiAK KwkvKiBPbmx5IGFsbG93IHN1cGVydXNlcnMgdG8gc2lnbmFsIHN1cGVydXNlci1vd25lZCBiYWNr ZW5kcy4gKi8KKwlpZiAoc3VwZXJ1c2VyX2FyZyhwcm9jLT5yb2xlSWQpICYmICFzdXBlcnVzZXIo KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9Q UklWSUxFR0UpLAorCQkJCSBlcnJtc2coIm11c3QgYmUgYSBzdXBlcnVzZXIgdG8gbG9nIG1lbW9y eSBjb250ZXh0cyBvZiBzdXBlcnVzZXIgYmFja2VuZCIpKSk7CisKIAlpZiAoU2VuZFByb2NTaWdu YWwocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgcHJvYy0+YmFja2VuZElkKSA8IDAp CiAJewogCQkvKiBBZ2FpbiwganVzdCBhIHdhcm5pbmcgdG8gYWxsb3cgbG9vcHMgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggMzI1M2I4NzUxYjEuLjAzOWY2MzM4NjA0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTMsNiArNTMsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5 eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyMTA5MTAxCisjZGVmaW5l IENBVEFMT0dfVkVSU0lPTl9OTwkyMDIxMTAyMzAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CmluZGV4IGU4NDUwNDJkMzhkLi4wN2MzZDMz MTFiMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9u cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQK QEAgLTEzOCwxNCArMTM4LDQwIEBAIEhJTlQ6ICBObyBmdW5jdGlvbiBtYXRjaGVzIHRoZSBnaXZl biBuYW1lIGFuZCBhcmd1bWVudCB0eXBlcy4gWW91IG1pZ2h0IG5lZWQgdG8KIC0tCiAtLSBNZW1v cnkgY29udGV4dHMgYXJlIGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90IHJldHVybmVkIHRvIHRoZSBm dW5jdGlvbi4KIC0tIEZ1cnRoZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBlbmRp bmcgb24gdGhlIHRpbWluZy4gSG93ZXZlciwKLS0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhh dCB0aGUgY29kZSBkb2Vzbid0IGZhaWwuCistLSB3ZSBjYW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQg dGhlIGNvZGUgZG9lc24ndCBmYWlsLCBhbmQgdGhhdCB0aGUKKy0tIHBlcm1pc3Npb25zIGFyZSBz ZXQgcHJvcGVybHkuCiAtLQotU0VMRUNUICogRlJPTSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMocGdfYmFja2VuZF9waWQoKSk7CitTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0 cyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgdAogKDEgcm93KQogCitDUkVB VEUgUk9MRSByZWdyZXNzX2xvZ19tZW1vcnk7CitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVn ZSgncmVncmVzc19sb2dfbWVtb3J5JywKKyAgJ3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0 cyhpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0tIG5vCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworR1JBTlQgRVhFQ1VURSBP TiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlcikKKyAgVE8g cmVncmVzc19sb2dfbWVtb3J5OworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jl c3NfbG9nX21lbW9yeScsCisgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdl ciknLCAnRVhFQ1VURScpOyAtLSB5ZXMKKyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBzdGlsbCBmYWlscyBiZWNhdXNl IGl0J3MgYSBzdXBlcnVzZXIgYmFja2VuZAorU0VUIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5Owor U0VMRUNUIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhwZ19iYWNrZW5kX3BpZCgpKTsK K0VSUk9SOiAgbXVzdCBiZSBhIHN1cGVydXNlciB0byBsb2cgbWVtb3J5IGNvbnRleHRzIG9mIHN1 cGVydXNlciBiYWNrZW5kCitSRVNFVCBST0xFOworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04g cGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpCisgIEZST00gcmVncmVzc19s b2dfbWVtb3J5OworRFJPUCBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKIC0tCiAtLSBUZXN0IHNv bWUgYnVpbHQtaW4gU1JGcwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21p c2NfZnVuY3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNx bAppbmRleCBhMzk4MzQ5YWZjNi4uNTc3YWMzZDcxNzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9t aXNjX2Z1bmN0aW9ucy5zcWwKQEAgLTM1LDkgKzM1LDMyIEBAIFNFTEVDVCBudW1fbnVsbHMoKTsK IC0tCiAtLSBNZW1vcnkgY29udGV4dHMgYXJlIGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90IHJldHVy bmVkIHRvIHRoZSBmdW5jdGlvbi4KIC0tIEZ1cnRoZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4g dmFyeSBkZXBlbmRpbmcgb24gdGhlIHRpbWluZy4gSG93ZXZlciwKLS0tIHdlIGNhbiBhdCBsZWFz dCB2ZXJpZnkgdGhhdCB0aGUgY29kZSBkb2Vzbid0IGZhaWwuCistLSB3ZSBjYW4gYXQgbGVhc3Qg dmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24ndCBmYWlsLCBhbmQgdGhhdCB0aGUKKy0tIHBlcm1p c3Npb25zIGFyZSBzZXQgcHJvcGVybHkuCiAtLQotU0VMRUNUICogRlJPTSBwZ19sb2dfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CisKK1NFTEVDVCBwZ19sb2dfYmFj a2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CisKK0NSRUFURSBST0xFIHJl Z3Jlc3NfbG9nX21lbW9yeTsKKworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jl c3NfbG9nX21lbW9yeScsCisgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdl ciknLCAnRVhFQ1VURScpOyAtLSBubworCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xv Z19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKQorICBUTyByZWdyZXNzX2xvZ19tZW1v cnk7CisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZ19tZW1vcnkn LAorICAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpJywgJ0VYRUNVVEUn KTsgLS0geWVzCisKKy0tIHN0aWxsIGZhaWxzIGJlY2F1c2UgaXQncyBhIHN1cGVydXNlciBiYWNr ZW5kCitTRVQgUk9MRSByZWdyZXNzX2xvZ19tZW1vcnk7CitTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworUkVTRVQgUk9MRTsKKworUkVWT0tF IEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVn ZXIpCisgIEZST00gcmVncmVzc19sb2dfbWVtb3J5OworCitEUk9QIFJPTEUgcmVncmVzc19sb2df bWVtb3J5OwogCiAtLQogLS0gVGVzdCBzb21lIGJ1aWx0LWluIFNSRnMK --=-+Gic/aVLSn7gt6lnCZGl--