From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id D3BAB1FF183 for ; Wed, 17 Dec 2025 17:25:26 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 424AC940F; Wed, 17 Dec 2025 17:26:13 +0100 (CET) From: Samuel Rufinatscha To: pbs-devel@lists.proxmox.com Date: Wed, 17 Dec 2025 17:25:15 +0100 Message-ID: <20251217162520.486520-5-s.rufinatscha@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251217162520.486520-1-s.rufinatscha@proxmox.com> References: <20251217162520.486520-1-s.rufinatscha@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1765988726741 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.213 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com] Subject: [pbs-devel] [PATCH proxmox v2 1/3] proxmox-access-control: cache verified API token secrets X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Q3VycmVudGx5LCBldmVyeSB0b2tlbi1iYXNlZCBBUEkgcmVxdWVzdCByZWFkcyB0aGUgdG9rZW4u c2hhZG93IGZpbGUgYW5kCnJ1bnMgdGhlIGV4cGVuc2l2ZSBwYXNzd29yZCBoYXNoIHZlcmlmaWNh dGlvbiBmb3IgdGhlIGdpdmVuIHRva2VuCnNlY3JldC4gVGhpcyBpc3N1ZSB3YXMgZmlyc3Qgb2Jz ZXJ2ZWQgYXMgcGFydCBvZiBwcm9maWxpbmcgdGhlIFBCUwovc3RhdHVzIGVuZHBvaW50IChzZWUg YnVnICM3MDE3IFsxXSkgYW5kIGlzIHJlcXVpcmVkIGZvciB0aGUgZmFjdG9yZWQKb3V0IHByb3ht b3hfYWNjZXNzX2NvbnRyb2wgdG9rZW5fc2hhZG93IGltcGxlbWVudGF0aW9uIHRvby4KClRoaXMg cGF0Y2ggaW50cm9kdWNlcyBhbiBpbi1tZW1vcnkgY2FjaGUgb2Ygc3VjY2Vzc2Z1bGx5IHZlcmlm aWVkIHRva2VuCnNlY3JldHMuIFN1YnNlcXVlbnQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIHRva2Vu K3NlY3JldCBjb21iaW5hdGlvbiBvbmx5CnBlcmZvcm0gYSBjb21wYXJpc29uIHVzaW5nIG9wZW5z c2w6Om1lbWNtcDo6ZXEgYW5kIGF2b2lkIHJlLXJ1bm5pbmcgdGhlCnBhc3N3b3JkIGhhc2guIFRo ZSBjYWNoZSBpcyB1cGRhdGVkIHdoZW4gYSB0b2tlbiBzZWNyZXQgaXMgc2V0IGFuZApjbGVhcmVk IHdoZW4gYSB0b2tlbiBpcyBkZWxldGVkLiBOb3RlLCB0aGlzIGRvZXMgTk9UIGluY2x1ZGUgbWFu dWFsCmNvbmZpZyBjaGFuZ2VzLCB3aGljaCB3aWxsIGJlIGNvdmVyZWQgaW4gYSBzdWJzZXF1ZW50 IHBhdGNoLgoKVGhpcyBwYXRjaCBwYXJ0bHkgZml4ZXMgYnVnICM3MDE3IFsxXS4KClsxXSBodHRw czovL2J1Z3ppbGxhLnByb3htb3guY29tL3Nob3dfYnVnLmNnaT9pZD03MDE3CgpTaWduZWQtb2Zm LWJ5OiBTYW11ZWwgUnVmaW5hdHNjaGEgPHMucnVmaW5hdHNjaGFAcHJveG1veC5jb20+Ci0tLQpD aGFuZ2VzIGZyb20gdjEgdG8gdjI6Ci0gUmVwbGFjZSBPbmNlQ2VsbCB3aXRoIExhenlMb2NrLCBh bmQgc3RkOjpzeW5jOjpSd0xvY2sgd2l0aAogcGFya2luZ19sb3Q6OlJ3TG9jay4KLSBBZGQgQVBJ X01VVEFUSU9OX0dFTkVSQVRJT04gYW5kIGd1YXJkIGNhY2hlIGluc2VydHMKIHRvIHByZXZlbnQg 4oCcem9tYmllIGluc2VydHPigJ0gYWNyb3NzIGNvbmN1cnJlbnQgc2V0L2RlbGV0ZS4KLSBSZWZh Y3RvciBjYWNoZSBvcGVyYXRpb25zIGludG8gY2FjaGVfdHJ5X3NlY3JldF9tYXRjaGVzLAogY2Fj aGVfdHJ5X2luc2VydF9zZWNyZXQsIGFuZCBjZW50cmFsaXplIHdyaXRlLXNpZGUgYmVoYXZpb3Ig aW4KIGFwcGx5X2FwaV9tdXRhdGlvbi4KLSBTd2l0Y2ggZmFzdC1wYXRoIGNhY2hlIGFjY2VzcyB0 byB0cnlfcmVhZC90cnlfd3JpdGUgKGJlc3QtZWZmb3J0KS4KCiBDYXJnby50b21sICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBwcm94bW94LWFjY2Vzcy1jb250cm9sL0Nh cmdvLnRvbWwgICAgICAgICAgfCAgMSArCiBwcm94bW94LWFjY2Vzcy1jb250cm9sL3NyYy90b2tl bl9zaGFkb3cucnMgfCA5NCArKysrKysrKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQs IDk1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9DYXJnby50b21s IGIvQ2FyZ28udG9tbAppbmRleCAyN2E2OWFmYS4uNTlhMmVjOTMgMTAwNjQ0Ci0tLSBhL0Nhcmdv LnRvbWwKKysrIGIvQ2FyZ28udG9tbApAQCAtMTEyLDYgKzExMiw3IEBAIG5hdGl2ZS10bHMgPSAi MC4yIgogbml4ID0gIjAuMjkiCiBvcGVuc3NsID0gIjAuMTAiCiBwYW0tc3lzID0gIjAuNSIKK3Bh cmtpbmdfbG90ID0gIjAuMTIiCiBwZXJjZW50LWVuY29kaW5nID0gIjIuMSIKIHBpbi11dGlscyA9 ICIwLjEuMCIKIHByb2MtbWFjcm8yID0gIjEuMCIKZGlmZiAtLWdpdCBhL3Byb3htb3gtYWNjZXNz LWNvbnRyb2wvQ2FyZ28udG9tbCBiL3Byb3htb3gtYWNjZXNzLWNvbnRyb2wvQ2FyZ28udG9tbApp bmRleCBlYzE4OTY2NC4uMWRlMjg0MmMgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtYWNjZXNzLWNvbnRy b2wvQ2FyZ28udG9tbAorKysgYi9wcm94bW94LWFjY2Vzcy1jb250cm9sL0NhcmdvLnRvbWwKQEAg LTE2LDYgKzE2LDcgQEAgYW55aG93LndvcmtzcGFjZSA9IHRydWUKIGNvbnN0X2Zvcm1hdC53b3Jr c3BhY2UgPSB0cnVlCiBuaXggPSB7IHdvcmtzcGFjZSA9IHRydWUsIG9wdGlvbmFsID0gdHJ1ZSB9 CiBvcGVuc3NsID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBvcHRpb25hbCA9IHRydWUgfQorcGFya2lu Z19sb3Qud29ya3NwYWNlID0gdHJ1ZQogcmVnZXgud29ya3NwYWNlID0gdHJ1ZQogaGV4ID0geyB3 b3Jrc3BhY2UgPSB0cnVlLCBvcHRpb25hbCA9IHRydWUgfQogc2VyZGUud29ya3NwYWNlID0gdHJ1 ZQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hY2Nlc3MtY29udHJvbC9zcmMvdG9rZW5fc2hhZG93LnJz IGIvcHJveG1veC1hY2Nlc3MtY29udHJvbC9zcmMvdG9rZW5fc2hhZG93LnJzCmluZGV4IGM1ODZk ODM0Li5jMDI4NWI2MiAxMDA2NDQKLS0tIGEvcHJveG1veC1hY2Nlc3MtY29udHJvbC9zcmMvdG9r ZW5fc2hhZG93LnJzCisrKyBiL3Byb3htb3gtYWNjZXNzLWNvbnRyb2wvc3JjL3Rva2VuX3NoYWRv dy5ycwpAQCAtMSw2ICsxLDkgQEAKIHVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoTWFwOwordXNl IHN0ZDo6c3luYzo6YXRvbWljOjp7QXRvbWljVTY0LCBPcmRlcmluZ307Cit1c2Ugc3RkOjpzeW5j OjpMYXp5TG9jazsKIAogdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVycm9yfTsKK3Vz ZSBwYXJraW5nX2xvdDo6UndMb2NrOwogdXNlIHNlcmRlX2pzb246Ontmcm9tX3ZhbHVlLCBWYWx1 ZX07CiAKIHVzZSBwcm94bW94X2F1dGhfYXBpOjp0eXBlczo6QXV0aGlkOwpAQCAtOCw2ICsxMSwx OSBAQCB1c2UgcHJveG1veF9wcm9kdWN0X2NvbmZpZzo6e29wZW5fYXBpX2xvY2tmaWxlLCByZXBs YWNlX2NvbmZpZywgQXBpTG9ja0d1YXJkfTsKIAogdXNlIGNyYXRlOjppbml0OjppbXBsX2ZlYXR1 cmU6Ont0b2tlbl9zaGFkb3csIHRva2VuX3NoYWRvd19sb2NrfTsKIAorLy8vIEdsb2JhbCBpbi1t ZW1vcnkgY2FjaGUgZm9yIHN1Y2Nlc3NmdWxseSB2ZXJpZmllZCBBUEkgdG9rZW4gc2VjcmV0cy4K Ky8vLyBUaGUgY2FjaGUgc3RvcmVzIHBsYWluIHRleHQgc2VjcmV0cyBmb3IgdG9rZW4gQXV0aGlk cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuCisvLy8gdmVyaWZpZWQgYWdhaW5zdCB0aGUgaGFzaGVk IHZhbHVlcyBpbiBgdG9rZW4uc2hhZG93YC4gVGhpcyBhbGxvd3MgZm9yIGNoZWFwCisvLy8gc3Vi c2VxdWVudCBhdXRoZW50aWNhdGlvbnMgZm9yIHRoZSBzYW1lIHRva2VuK3NlY3JldCBjb21iaW5h dGlvbiwgYXZvaWRpbmcKKy8vLyByZWNvbXB1dGluZyB0aGUgcGFzc3dvcmQgaGFzaCBvbiBldmVy eSByZXF1ZXN0Lgorc3RhdGljIFRPS0VOX1NFQ1JFVF9DQUNIRTogTGF6eUxvY2s8UndMb2NrPEFw aVRva2VuU2VjcmV0Q2FjaGU+PiA9IExhenlMb2NrOjpuZXcofHwgeworICAgIFJ3TG9jazo6bmV3 KEFwaVRva2VuU2VjcmV0Q2FjaGUgeworICAgICAgICBzZWNyZXRzOiBIYXNoTWFwOjpuZXcoKSwK KyAgICB9KQorfSk7CisvLy8gQVBJIG11dGF0aW9uIGdlbmVyYXRpb24gKHNldC9kZWxldGUpCitz dGF0aWMgQVBJX01VVEFUSU9OX0dFTkVSQVRJT046IEF0b21pY1U2NCA9IEF0b21pY1U2NDo6bmV3 KDApOworCiAvLyBHZXQgZXhjbHVzaXZlIGxvY2sKIGZuIGxvY2tfY29uZmlnKCkgLT4gUmVzdWx0 PEFwaUxvY2tHdWFyZCwgRXJyb3I+IHsKICAgICBvcGVuX2FwaV9sb2NrZmlsZSh0b2tlbl9zaGFk b3dfbG9jaygpLCBOb25lLCB0cnVlKQpAQCAtMzYsOSArNTIsMjQgQEAgcHViIGZuIHZlcmlmeV9z ZWNyZXQodG9rZW5pZDogJkF1dGhpZCwgc2VjcmV0OiAmc3RyKSAtPiBSZXN1bHQ8KCksIEVycm9y PiB7CiAgICAgICAgIGJhaWwhKCJub3QgYW4gQVBJIHRva2VuIElEIik7CiAgICAgfQogCisgICAg Ly8gRmFzdCBwYXRoCisgICAgaWYgY2FjaGVfdHJ5X3NlY3JldF9tYXRjaGVzKHRva2VuaWQsIHNl Y3JldCkgeworICAgICAgICByZXR1cm4gT2soKCkpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0 aCBzbmFwc2hvdCAoYmVmb3JlIGV4cGVuc2l2ZSB3b3JrKQorICAgIGxldCBhcGlfZ2VuX2JlZm9y ZSA9IEFQSV9NVVRBVElPTl9HRU5FUkFUSU9OLmxvYWQoT3JkZXJpbmc6OkFjcXVpcmUpOworCiAg ICAgbGV0IGRhdGEgPSByZWFkX2ZpbGUoKT87CiAgICAgbWF0Y2ggZGF0YS5nZXQodG9rZW5pZCkg ewotICAgICAgICBTb21lKGhhc2hlZF9zZWNyZXQpID0+IHByb3htb3hfc3lzOjpjcnlwdDo6dmVy aWZ5X2NyeXB0X3B3KHNlY3JldCwgaGFzaGVkX3NlY3JldCksCisgICAgICAgIFNvbWUoaGFzaGVk X3NlY3JldCkgPT4geworICAgICAgICAgICAgcHJveG1veF9zeXM6OmNyeXB0Ojp2ZXJpZnlfY3J5 cHRfcHcoc2VjcmV0LCBoYXNoZWRfc2VjcmV0KT87CisKKyAgICAgICAgICAgIC8vIFRyeSB0byBj YWNoZSBvbmx5IGlmIG5vdGhpbmcgY2hhbmdlZCB3aGlsZSB3ZSB2ZXJpZmllZAorICAgICAgICAg ICAgY2FjaGVfdHJ5X2luc2VydF9zZWNyZXQodG9rZW5pZC5jbG9uZSgpLCBzZWNyZXQudG9fb3du ZWQoKSwgYXBpX2dlbl9iZWZvcmUpOworCisgICAgICAgICAgICBPaygoKSkKKyAgICAgICAgfQog ICAgICAgICBOb25lID0+IGJhaWwhKCJpbnZhbGlkIEFQSSB0b2tlbiIpLAogICAgIH0KIH0KQEAg LTU2LDYgKzg3LDggQEAgcHViIGZuIHNldF9zZWNyZXQodG9rZW5pZDogJkF1dGhpZCwgc2VjcmV0 OiAmc3RyKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7CiAgICAgZGF0YS5pbnNlcnQodG9rZW5pZC5j bG9uZSgpLCBoYXNoZWRfc2VjcmV0KTsKICAgICB3cml0ZV9maWxlKGRhdGEpPzsKIAorICAgIGFw cGx5X2FwaV9tdXRhdGlvbih0b2tlbmlkLCBTb21lKHNlY3JldCkpOworCiAgICAgT2soKCkpCiB9 CiAKQEAgLTcxLDYgKzEwNCw4IEBAIHB1YiBmbiBkZWxldGVfc2VjcmV0KHRva2VuaWQ6ICZBdXRo aWQpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKICAgICBkYXRhLnJlbW92ZSh0b2tlbmlkKTsKICAg ICB3cml0ZV9maWxlKGRhdGEpPzsKIAorICAgIGFwcGx5X2FwaV9tdXRhdGlvbih0b2tlbmlkLCBO b25lKTsKKwogICAgIE9rKCgpKQogfQogCkBAIC04MSwzICsxMTYsNjAgQEAgcHViIGZuIGdlbmVy YXRlX2FuZF9zZXRfc2VjcmV0KHRva2VuaWQ6ICZBdXRoaWQpIC0+IFJlc3VsdDxTdHJpbmcsIEVy cm9yPiB7CiAgICAgc2V0X3NlY3JldCh0b2tlbmlkLCAmc2VjcmV0KT87CiAgICAgT2soc2VjcmV0 KQogfQorCitzdHJ1Y3QgQXBpVG9rZW5TZWNyZXRDYWNoZSB7CisgICAgLy8vIEtleXMgYXJlIHRv a2VuIEF1dGhpZHMsIHZhbHVlcyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgcGxhaW4gdGV4dCBzZWNy ZXRzLgorICAgIC8vLyBFbnRyaWVzIGFyZSBhZGRlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgb24tZGlz ayB2ZXJpZmljYXRpb24gaW4KKyAgICAvLy8gYHZlcmlmeV9zZWNyZXRgIG9yIHdoZW4gYSBuZXcg dG9rZW4gc2VjcmV0IGlzIGdlbmVyYXRlZCBieQorICAgIC8vLyBgZ2VuZXJhdGVfYW5kX3NldF9z ZWNyZXRgLiBVc2VkIHRvIGF2b2lkIHJlcGVhdGVkCisgICAgLy8vIHBhc3N3b3JkLWhhc2ggY29t cHV0YXRpb24gb24gc3Vic2VxdWVudCBhdXRoZW50aWNhdGlvbnMuCisgICAgc2VjcmV0czogSGFz aE1hcDxBdXRoaWQsIENhY2hlZFNlY3JldD4sCit9CisKKy8vLyBDYWNoZWQgc2VjcmV0Lgorc3Ry dWN0IENhY2hlZFNlY3JldCB7CisgICAgc2VjcmV0OiBTdHJpbmcsCit9CisKK2ZuIGNhY2hlX3Ry eV9pbnNlcnRfc2VjcmV0KHRva2VuaWQ6IEF1dGhpZCwgc2VjcmV0OiBTdHJpbmcsIGFwaV9nZW5f c25hcHNob3Q6IHU2NCkgeworICAgIGxldCBTb21lKG11dCBjYWNoZSkgPSBUT0tFTl9TRUNSRVRf Q0FDSEUudHJ5X3dyaXRlKCkgZWxzZSB7CisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAg aWYgQVBJX01VVEFUSU9OX0dFTkVSQVRJT04ubG9hZChPcmRlcmluZzo6QWNxdWlyZSkgPT0gYXBp X2dlbl9zbmFwc2hvdCB7CisgICAgICAgIGNhY2hlLnNlY3JldHMuaW5zZXJ0KHRva2VuaWQsIENh Y2hlZFNlY3JldCB7IHNlY3JldCB9KTsKKyAgICB9Cit9CisKK2ZuIGNhY2hlX3RyeV9zZWNyZXRf bWF0Y2hlcyh0b2tlbmlkOiAmQXV0aGlkLCBzZWNyZXQ6ICZzdHIpIC0+IGJvb2wgeworICAgIGxl dCBTb21lKGNhY2hlKSA9IFRPS0VOX1NFQ1JFVF9DQUNIRS50cnlfcmVhZCgpIGVsc2UgeworICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKyAgICBsZXQgU29tZShlbnRyeSkgPSBjYWNoZS5z ZWNyZXRzLmdldCh0b2tlbmlkKSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07 CisKKyAgICBvcGVuc3NsOjptZW1jbXA6OmVxKGVudHJ5LnNlY3JldC5hc19ieXRlcygpLCBzZWNy ZXQuYXNfYnl0ZXMoKSkKK30KKworZm4gYXBwbHlfYXBpX211dGF0aW9uKHRva2VuaWQ6ICZBdXRo aWQsIG5ld19zZWNyZXQ6IE9wdGlvbjwmc3RyPikgeworICAgIC8vIFByZXZlbnQgaW4tZmxpZ2h0 IHZlcmlmeV9zZWNyZXQoKSBmcm9tIGNhY2hpbmcgcmVzdWx0cyBhY3Jvc3MgYSBtdXRhdGlvbi4K KyAgICBBUElfTVVUQVRJT05fR0VORVJBVElPTi5mZXRjaF9hZGQoMSwgT3JkZXJpbmc6OkFjcVJl bCk7CisKKyAgICAvLyBNdXRhdGlvbnMgbXVzdCBiZSByZWZsZWN0ZWQgaW1tZWRpYXRlbHkgb25j ZSBzZXQvZGVsZXRlIHJldHVybnMuCisgICAgbGV0IG11dCBjYWNoZSA9IFRPS0VOX1NFQ1JFVF9D QUNIRS53cml0ZSgpOworCisgICAgbWF0Y2ggbmV3X3NlY3JldCB7CisgICAgICAgIFNvbWUoc2Vj cmV0KSA9PiB7CisgICAgICAgICAgICBjYWNoZS5zZWNyZXRzLmluc2VydCgKKyAgICAgICAgICAg ICAgICB0b2tlbmlkLmNsb25lKCksCisgICAgICAgICAgICAgICAgQ2FjaGVkU2VjcmV0IHsKKyAg ICAgICAgICAgICAgICAgICAgc2VjcmV0OiBzZWNyZXQudG9fb3duZWQoKSwKKyAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICBOb25lID0+IHsKKyAg ICAgICAgICAgIGNhY2hlLnNlY3JldHMucmVtb3ZlKHRva2VuaWQpOworICAgICAgICB9CisgICAg fQorfQotLSAKMi40Ny4zCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3gu Y29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bi cy1kZXZlbAo=