From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 3BF801FF179 for ; Wed, 1 Oct 2025 17:29:54 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 0234A2435A; Wed, 1 Oct 2025 17:30:02 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 01 Oct 2025 17:29:57 +0200 Message-Id: To: "Proxmox Datacenter Manager development discussion" Cc: "pdm-devel" X-Mailer: aerc 0.20.0 References: <20250924145137.407070-1-s.sterz@proxmox.com> <20250924145137.407070-4-s.sterz@proxmox.com> <1758877128.ur2auc56hh.astroid@yuna.none> In-Reply-To: <1758877128.ur2auc56hh.astroid@yuna.none> From: "Shannon Sterz" X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1759332575044 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.343 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pdm-devel] [PATCH proxmox 3/3] access-control: add api endpoints for handling tokens X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" T24gRnJpIFNlcCAyNiwgMjAyNSBhdCAxMToxNCBBTSBDRVNULCBGYWJpYW4gR3LDvG5iaWNobGVy IHdyb3RlOgo+IHNvbWUgc21hbGxlciBuaXRzL3F1ZXN0aW9ucyBiZWxvdwo+Cj4gT24gU2VwdGVt YmVyIDI0LCAyMDI1IDQ6NTEgcG0sIFNoYW5ub24gU3Rlcnogd3JvdGU6Cj4+IGJ5IGFkZGluZyBt b3N0IG9mIHRoZSBsb2dpYyBvZiB0b2tlbiBjcmVhdGlvbiwgdXBkYXRpbmcgYW5kIGRlbGV0aW5n Cj4+IGhlcmUsIHVzZXJzIGNhbiBtb3JlIGVhc2lseSBhZGQgYXBpIHRva2VucyB0byB0aGVpciBh cGkuIHRoaXMgcmVxdWlyZXMKPj4gdGhlIGFwaSBmZWF0dXJlLgo+Pgo+PiB1c2VycyBvZiB0aGVz ZSBhcGkgZW5kcG9pbnRzIGFyZSBleHBlY3RlZCB0byBzZXQgdGhlIGBhY2Nlc3NgCj4+IHBhcmFt ZXRlcnMgYWNjb3JkaW5nIHRvIHRoZWlyIG5lZWRzLiBieSBkZWZhdWx0IG9ubHkgc3VwZXIgdXNl cnMgY2FuCj4+IGFjY2VzcyBhbnkgb2YgdGhlbS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogU2hhbm5v biBTdGVyeiA8cy5zdGVyekBwcm94bW94LmNvbT4KPj4gLS0tCj4+ICBwcm94bW94LWFjY2Vzcy1j b250cm9sL0NhcmdvLnRvbWwgICAgICAgIHwgICAyICsKPj4gIHByb3htb3gtYWNjZXNzLWNvbnRy b2wvc3JjL2FwaS90b2tlbnMucnMgfCAzMDYgKysrKysrKysrKysrKysrKysrKysrKysKPj4gIHBy b3htb3gtYWNjZXNzLWNvbnRyb2wvc3JjL3R5cGVzLnJzICAgICAgfCAgMTcgKysKPj4gIDMgZmls ZXMgY2hhbmdlZCwgMzI1IGluc2VydGlvbnMoKykKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94 bW94LWFjY2Vzcy1jb250cm9sL3NyYy9hcGkvdG9rZW5zLnJzCj4+Cj4+IGRpZmYgLS1naXQgYS9w cm94bW94LWFjY2Vzcy1jb250cm9sL0NhcmdvLnRvbWwgYi9wcm94bW94LWFjY2Vzcy1jb250cm9s L0NhcmdvLnRvbWwKPj4gaW5kZXggZGJjYmVjZWQuLjI3NGMwOGE3IDEwMDY0NAo+PiAtLS0gYS9w cm94bW94LWFjY2Vzcy1jb250cm9sL0NhcmdvLnRvbWwKPj4gKysrIGIvcHJveG1veC1hY2Nlc3Mt Y29udHJvbC9DYXJnby50b21sCj4+IEBAIC0zMSwxMiArMzEsMTQgQEAgcHJveG1veC1zZWN0aW9u LWNvbmZpZyA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgb3B0aW9uYWwgPSB0cnVlIH0KPj4gIHByb3ht b3gtc2hhcmVkLW1lbW9yeSA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgb3B0aW9uYWwgPSB0cnVlIH0K Pj4gIHByb3htb3gtc3lzID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJlcyA9IFsgImNyeXB0 IiBdLCBvcHRpb25hbCA9IHRydWUgfQo+PiAgcHJveG1veC10aW1lID0geyB3b3Jrc3BhY2UgPSB0 cnVlIH0KPj4gK3Byb3htb3gtdXVpZCA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgb3B0aW9uYWwgPSB0 cnVlIH0KPj4KPj4gIFtmZWF0dXJlc10KPj4gIGRlZmF1bHQgPSBbXQo+PiAgYXBpID0gWwo+PiAg ICAgICJpbXBsIiwKPj4gICAgICAiZGVwOmhleCIsCj4+ICsgICAgImRlcDpwcm94bW94LXV1aWQi Cj4+ICBdCj4+ICBpbXBsID0gWwo+PiAgICAgICJkZXA6bml4IiwKPj4gZGlmZiAtLWdpdCBhL3By b3htb3gtYWNjZXNzLWNvbnRyb2wvc3JjL2FwaS90b2tlbnMucnMgYi9wcm94bW94LWFjY2Vzcy1j b250cm9sL3NyYy9hcGkvdG9rZW5zLnJzCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAwLi4xYmRlMzZjOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Byb3htb3gtYWNj ZXNzLWNvbnRyb2wvc3JjL2FwaS90b2tlbnMucnMKPj4gQEAgLTAsMCArMSwzMDYgQEAKPj4gKy8v ISBVc2VyIE1hbmFnZW1lbnQKPj4gKwo+PiArdXNlIGFueWhvdzo6e2JhaWwsIEVycm9yfTsKPj4g K3VzZSBwcm94bW94X2NvbmZpZ19kaWdlc3Q6OkNvbmZpZ0RpZ2VzdDsKPj4gK3VzZSBwcm94bW94 X3NjaGVtYTo6YXBpX3R5cGVzOjpDT01NRU5UX1NDSEVNQTsKPj4gKwo+PiArdXNlIHByb3htb3hf YXV0aF9hcGk6OnR5cGVzOjp7QXV0aGlkLCBUb2tlbm5hbWUsIFVzZXJpZH07Cj4+ICt1c2UgcHJv eG1veF9yb3V0ZXI6OntBcGlNZXRob2QsIFJwY0Vudmlyb25tZW50fTsKPj4gK3VzZSBwcm94bW94 X3NjaGVtYTo6YXBpOwo+PiArCj4+ICt1c2UgY3JhdGU6OnRva2VuX3NoYWRvdzo6e3NlbGZ9Owo+ PiArdXNlIGNyYXRlOjp0eXBlczo6ewo+PiArICAgIEFwaVRva2VuLCBBcGlUb2tlblNlY3JldCwg VG9rZW5BcGlFbnRyeSwgRU5BQkxFX1VTRVJfU0NIRU1BLCBFWFBJUkVfVVNFUl9TQ0hFTUEsCj4+ ICt9Owo+PiArCj4+ICsjW2FwaSgKPj4gKyAgICBpbnB1dDogewo+PiArICAgICAgICBwcm9wZXJ0 aWVzOiB7Cj4+ICsgICAgICAgICAgICB1c2VyaWQ6IHsKPj4gKyAgICAgICAgICAgICAgICB0eXBl OiBVc2VyaWQsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICAgICAgInRva2VuLW5hbWUi OiB7Cj4+ICsgICAgICAgICAgICAgICAgdHlwZTogVG9rZW5uYW1lLAo+PiArICAgICAgICAgICAg fSwKPj4gKyAgICAgICAgfSwKPj4gKyAgICB9LAo+PiArICAgIHJldHVybnM6IHsgdHlwZTogQXBp VG9rZW4gfSwKPj4gKyldCj4+ICsvLy8gUmVhZCB1c2VyJ3MgQVBJIHRva2VuIG1ldGFkYXRhCj4+ ICtwdWIgZm4gcmVhZF90b2tlbigKPj4gKyAgICB1c2VyaWQ6IFVzZXJpZCwKPj4gKyAgICB0b2tl bl9uYW1lOiBUb2tlbm5hbWUsCj4+ICsgICAgX2luZm86ICZBcGlNZXRob2QsCj4+ICsgICAgcnBj ZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPj4gKykgLT4gUmVzdWx0PEFwaVRva2VuLCBF cnJvcj4gewo+PiArICAgIGxldCAoY29uZmlnLCBkaWdlc3QpID0gY3JhdGU6OnVzZXI6OmNvbmZp ZygpPzsKPj4gKwo+PiArICAgIGxldCB0b2tlbmlkID0gQXV0aGlkOjpmcm9tKCh1c2VyaWQsIFNv bWUodG9rZW5fbmFtZSkpKTsKPj4gKwo+PiArICAgIHJwY2VudlsiZGlnZXN0Il0gPSBoZXg6OmVu Y29kZShkaWdlc3QpLmludG8oKTsKPj4gKyAgICBjb25maWcubG9va3VwKCJ0b2tlbiIsICZ0b2tl bmlkLnRvX3N0cmluZygpKQo+PiArfQo+PiArCj4+ICsjW2FwaSgKPj4gKyAgICBwcm90ZWN0ZWQ6 IHRydWUsCj4+ICsgICAgaW5wdXQ6IHsKPj4gKyAgICAgICAgcHJvcGVydGllczogewo+PiArICAg ICAgICAgICAgdXNlcmlkOiB7Cj4+ICsgICAgICAgICAgICAgICAgdHlwZTogVXNlcmlkLAo+PiAr ICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgICAgICJ0b2tlbi1uYW1lIjogewo+PiArICAgICAg ICAgICAgICAgIHR5cGU6IFRva2VubmFtZSwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAg ICAgICBjb21tZW50OiB7Cj4+ICsgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ICsg ICAgICAgICAgICAgICAgc2NoZW1hOiBDT01NRU5UX1NDSEVNQSwKPj4gKyAgICAgICAgICAgIH0s Cj4+ICsgICAgICAgICAgICBlbmFibGU6IHsKPj4gKyAgICAgICAgICAgICAgICBzY2hlbWE6IEVO QUJMRV9VU0VSX1NDSEVNQSwKPj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4g KyAgICAgICAgICAgIH0sCj4+ICsgICAgICAgICAgICBleHBpcmU6IHsKPj4gKyAgICAgICAgICAg ICAgICBzY2hlbWE6IEVYUElSRV9VU0VSX1NDSEVNQSwKPj4gKyAgICAgICAgICAgICAgICBvcHRp b25hbDogdHJ1ZSwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAgICAgICBkaWdlc3Q6IHsK Pj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4gKyAgICAgICAgICAgICAgICB0 eXBlOiBDb25maWdEaWdlc3QsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICB9LAo+PiAr ICAgIH0sCj4+ICsgICAgcmV0dXJuczogeyB0eXBlOiBBcGlUb2tlblNlY3JldCB9LAo+PiArKV0K Pj4gKy8vLyBHZW5lcmF0ZSBhIG5ldyBBUEkgdG9rZW4gd2l0aCBnaXZlbiBtZXRhZGF0YQo+PiAr cHViIGZuIGdlbmVyYXRlX3Rva2VuKAo+PiArICAgIHVzZXJpZDogVXNlcmlkLAo+PiArICAgIHRv a2VuX25hbWU6IFRva2VubmFtZSwKPj4gKyAgICBjb21tZW50OiBPcHRpb248U3RyaW5nPiwKPj4g KyAgICBlbmFibGU6IE9wdGlvbjxib29sPiwKPj4gKyAgICBleHBpcmU6IE9wdGlvbjxpNjQ+LAo+ PiArICAgIGRpZ2VzdDogT3B0aW9uPENvbmZpZ0RpZ2VzdD4sCj4+ICspIC0+IFJlc3VsdDxBcGlU b2tlblNlY3JldCwgRXJyb3I+IHsKPj4gKyAgICBsZXQgX2xvY2sgPSBjcmF0ZTo6dXNlcjo6bG9j a19jb25maWcoKT87Cj4+ICsgICAgbGV0IChtdXQgY29uZmlnLCBjb25maWdfZGlnZXN0KSA9IGNy YXRlOjp1c2VyOjpjb25maWcoKT87Cj4+ICsKPj4gKyAgICBjb25maWdfZGlnZXN0LmRldGVjdF9t b2RpZmljYXRpb24oZGlnZXN0LmFzX3JlZigpKT87Cj4+ICsKPj4gKyAgICBsZXQgdG9rZW5pZCA9 IEF1dGhpZDo6ZnJvbSgodXNlcmlkLmNsb25lKCksIFNvbWUodG9rZW5fbmFtZS5jbG9uZSgpKSkp Owo+PiArICAgIGxldCB0b2tlbmlkX3N0cmluZyA9IHRva2VuaWQudG9fc3RyaW5nKCk7Cj4+ICsK Pj4gKyAgICBpZiBjb25maWcuc2VjdGlvbnMuY29udGFpbnNfa2V5KCZ0b2tlbmlkX3N0cmluZykg ewo+PiArICAgICAgICBiYWlsISgKPj4gKyAgICAgICAgICAgICJ0b2tlbiAne30nIGZvciB1c2Vy ICd7dXNlcmlkfScgYWxyZWFkeSBleGlzdHMuIiwKPj4gKyAgICAgICAgICAgIHRva2VuX25hbWUu YXNfc3RyKCksCj4+ICsgICAgICAgICk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgbGV0IHNlY3Jl dCA9IGZvcm1hdCEoIns6eH0iLCBwcm94bW94X3V1aWQ6OlV1aWQ6OmdlbmVyYXRlKCkpOwo+Cj4g aW4gUEJTLCB3ZSBsZWF2ZSB0aGUgZ2VuZXJhdGlvbiBwYXJ0IHRvIHRva2VuX3NoYWRvdyBhbmQg ZG9uJ3QgZXhwb3NlCj4gc2V0dGluZyBhcmJpdHJhcnkgc2VjcmV0LCB3aGljaCBzZWVtcyBsaWtl IHRoZSAic2FmZXIiIGludGVyZmFjZS4uCj4KPiBhbnkgcmVhc29uIHRvIG5vdCBkbyB0aGUgc2Ft ZSBoZXJlPwoKbm8sIGkgdG9vayBtb3N0IG9mIHRoaXMgY29kZSBmcm9tIHBkbSdzIHZlcnNpb24g KGFzIGkgd2FudGVkIGl0IHRvIGJlCnRoZSBmaXJzdCB1c2VyIG9mIHRoaXMgaW1wbGVtZW50YXRp b24uIHNvIGkgd2FudGVkIHRvIGtlZXAgdGhhdCBhcwpzaW1pbGFyIGFzIHBvc3NpYmxlKS4gaSds bCBhZGFwdCB0aGlzIGluIGEgdjIuCgo+PiArICAgIHRva2VuX3NoYWRvdzo6c2V0X3NlY3JldCgm dG9rZW5pZCwgJnNlY3JldCk/Owo+PiArCj4+ICsgICAgbGV0IHRva2VuID0gQXBpVG9rZW4gewo+ PiArICAgICAgICB0b2tlbmlkOiB0b2tlbmlkLmNsb25lKCksCj4+ICsgICAgICAgIGNvbW1lbnQs Cj4+ICsgICAgICAgIGVuYWJsZSwKPj4gKyAgICAgICAgZXhwaXJlLAo+PiArICAgIH07Cj4+ICsK Pj4gKyAgICBjb25maWcuc2V0X2RhdGEoJnRva2VuaWRfc3RyaW5nLCAidG9rZW4iLCAmdG9rZW4p PzsKPj4gKwo+PiArICAgIGNyYXRlOjp1c2VyOjpzYXZlX2NvbmZpZygmY29uZmlnKT87Cj4+ICsK Pj4gKyAgICBPayhBcGlUb2tlblNlY3JldCB7IHRva2VuaWQsIHNlY3JldCB9KQo+PiArfQo+PiAr Cj4+ICsjW2FwaSgKPj4gKyAgICBwcm90ZWN0ZWQ6IHRydWUsCj4+ICsgICAgaW5wdXQ6IHsKPj4g KyAgICAgICAgcHJvcGVydGllczogewo+PiArICAgICAgICAgICAgdXNlcmlkOiB7Cj4+ICsgICAg ICAgICAgICAgICAgdHlwZTogVXNlcmlkLAo+PiArICAgICAgICAgICAgfSwKPj4gKyAgICAgICAg ICAgICJ0b2tlbi1uYW1lIjogewo+PiArICAgICAgICAgICAgICAgIHR5cGU6IFRva2VubmFtZSwK Pj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAgICAgICBjb21tZW50OiB7Cj4+ICsgICAgICAg ICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICAgICAgc2NoZW1hOiBDT01N RU5UX1NDSEVNQSwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAgICAgICBlbmFibGU6IHsK Pj4gKyAgICAgICAgICAgICAgICBzY2hlbWE6IEVOQUJMRV9VU0VSX1NDSEVNQSwKPj4gKyAgICAg ICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAgICAg ICAgICBleHBpcmU6IHsKPj4gKyAgICAgICAgICAgICAgICBzY2hlbWE6IEVYUElSRV9VU0VSX1ND SEVNQSwKPj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4gKyAgICAgICAgICAg IH0sCj4+ICsgICAgICAgICAgICByZWdlbmVyYXRlOiB7Cj4+ICsgICAgICAgICAgICAgICAgZGVz Y3JpcHRpb246ICJXaGV0aGVyIHRoZSB0b2tlbiBzaG91bGQgYmUgcmVnZW5lcmF0ZWQgb3Igbm90 LiIsCj4+ICsgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICAg ICAgdHlwZTogYm9vbCwKPj4gKyAgICAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSwKPgo+IHRo aXMgaGFzIGEgc2NoZW1hIGluIFBCUyBhcyB3ZWxsCj4KPj4gKyAgICAgICAgICAgIH0sCj4KPiBh bmQgd2UgYWxsb3cgZGVsZXRpbmcgY29tbWVudHMgdmlhIGBkZWxldGVgIGluIFBCUywgc2hvdWxk IHdlIGFsbG93IGl0Cj4gaGVyZSBhcyB3ZWxsPwoKeWVwLCBtYWtlcyBzZW5zZSBhbmQgaGFwcGVu ZWQgdGhlIHNhbWUgd2F5IGFzIGFib3ZlLiBhZGRlZCB0aGlzIGluIHYyLgoKPj4gKyAgICAgICAg ICAgIGRpZ2VzdDogewo+PiArICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+PiArICAg ICAgICAgICAgICAgIHR5cGU6IENvbmZpZ0RpZ2VzdCwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsg ICAgICAgIH0sCj4+ICsgICAgfSwKPj4gKyAgICByZXR1cm5zOiB7Cj4+ICsgICAgICAgIHR5cGU6 IEFwaVRva2VuU2VjcmV0LAo+PiArICAgICAgICBvcHRpb25hbDogdHJ1ZQo+PiArICAgIH0KPj4g KyldCj4+ICsvLy8gVXBkYXRlIHVzZXIncyBBUEkgdG9rZW4gbWV0YWRhdGEuIElmIHJlZ2VuZXJh dGUgaXMgc2V0IHRvIHRydWUsIHRoZSB0b2tlbiBhbmQgaXQncyBuZXcgc2VjcmV0Cj4+ICsvLy8g d2lsbCBiZSByZXR1cm5lZC4KPj4gK3B1YiBmbiB1cGRhdGVfdG9rZW4oCj4+ICsgICAgdXNlcmlk OiBVc2VyaWQsCj4+ICsgICAgdG9rZW5fbmFtZTogVG9rZW5uYW1lLAo+PiArICAgIGNvbW1lbnQ6 IE9wdGlvbjxTdHJpbmc+LAo+PiArICAgIGVuYWJsZTogT3B0aW9uPGJvb2w+LAo+PiArICAgIGV4 cGlyZTogT3B0aW9uPGk2ND4sCj4+ICsgICAgcmVnZW5lcmF0ZTogYm9vbCwKPj4gKyAgICBkaWdl c3Q6IE9wdGlvbjxDb25maWdEaWdlc3Q+LAo+PiArKSAtPiBSZXN1bHQ8T3B0aW9uPEFwaVRva2Vu U2VjcmV0PiwgRXJyb3I+IHsKPj4gKyAgICBsZXQgX2xvY2sgPSBjcmF0ZTo6dXNlcjo6bG9ja19j b25maWcoKT87Cj4+ICsKPj4gKyAgICBsZXQgKG11dCBjb25maWcsIGNvbmZpZ19kaWdlc3QpID0g Y3JhdGU6OnVzZXI6OmNvbmZpZygpPzsKPj4gKyAgICBjb25maWdfZGlnZXN0LmRldGVjdF9tb2Rp ZmljYXRpb24oZGlnZXN0LmFzX3JlZigpKT87Cj4+ICsKPj4gKyAgICBsZXQgdG9rZW5pZCA9IEF1 dGhpZDo6ZnJvbSgodXNlcmlkLCBTb21lKHRva2VuX25hbWUpKSk7Cj4+ICsgICAgbGV0IHRva2Vu aWRfc3RyaW5nID0gdG9rZW5pZC50b19zdHJpbmcoKTsKPj4gKwo+PiArICAgIGxldCBtdXQgZGF0 YTogQXBpVG9rZW4gPSBjb25maWcubG9va3VwKCJ0b2tlbiIsICZ0b2tlbmlkX3N0cmluZyk/Owo+ PiArCj4+ICsgICAgaWYgbGV0IFNvbWUoY29tbWVudCkgPSBjb21tZW50IHsKPj4gKyAgICAgICAg bGV0IGNvbW1lbnQgPSBjb21tZW50LnRyaW0oKS50b19zdHJpbmcoKTsKPj4gKyAgICAgICAgaWYg Y29tbWVudC5pc19lbXB0eSgpIHsKPj4gKyAgICAgICAgICAgIGRhdGEuY29tbWVudCA9IE5vbmU7 Cj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICBkYXRhLmNvbW1lbnQgPSBTb21l KGNvbW1lbnQpOwo+PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgaWYgbGV0IFNv bWUoZW5hYmxlKSA9IGVuYWJsZSB7Cj4+ICsgICAgICAgIGRhdGEuZW5hYmxlID0gaWYgZW5hYmxl IHsgTm9uZSB9IGVsc2UgeyBTb21lKGZhbHNlKSB9Owo+PiArICAgIH0KPj4gKwo+PiArICAgIGlm IGxldCBTb21lKGV4cGlyZSkgPSBleHBpcmUgewo+PiArICAgICAgICBkYXRhLmV4cGlyZSA9IGlm IGV4cGlyZSA+IDAgeyBTb21lKGV4cGlyZSkgfSBlbHNlIHsgTm9uZSB9Owo+PiArICAgIH0KPj4g Kwo+PiArICAgIGxldCBuZXdfc2VjcmV0ID0gaWYgcmVnZW5lcmF0ZSB7Cj4+ICsgICAgICAgIGxl dCBzZWNyZXQgPSBmb3JtYXQhKCJ7Onh9IiwgcHJveG1veF91dWlkOjpVdWlkOjpnZW5lcmF0ZSgp KTsKPj4gKyAgICAgICAgY3JhdGU6OnRva2VuX3NoYWRvdzo6c2V0X3NlY3JldCgmdG9rZW5pZCwg JnNlY3JldCk/Owo+Cj4gc2VlIGNvbW1lbnQgYWJvdmUKPgo+PiArCj4+ICsgICAgICAgIFNvbWUo QXBpVG9rZW5TZWNyZXQgeyB0b2tlbmlkLCBzZWNyZXQgfSkKPj4gKyAgICB9IGVsc2Ugewo+PiAr ICAgICAgICBOb25lCj4+ICsgICAgfTsKPj4gKwo+PiArICAgIGNvbmZpZy5zZXRfZGF0YSgmdG9r ZW5pZF9zdHJpbmcsICJ0b2tlbiIsICZkYXRhKT87Cj4+ICsKPj4gKyAgICBjcmF0ZTo6dXNlcjo6 c2F2ZV9jb25maWcoJmNvbmZpZyk/Owo+PiArCj4+ICsgICAgT2sobmV3X3NlY3JldCkKPj4gK30K Pj4gKwo+PiArI1thcGkoCj4+ICsgICAgcHJvdGVjdGVkOiB0cnVlLAo+PiArICAgIGlucHV0OiB7 Cj4+ICsgICAgICAgIHByb3BlcnRpZXM6IHsKPj4gKyAgICAgICAgICAgIHVzZXJpZDogewo+PiAr ICAgICAgICAgICAgICAgIHR5cGU6IFVzZXJpZCwKPj4gKyAgICAgICAgICAgIH0sCj4+ICsgICAg ICAgICAgICAidG9rZW4tbmFtZSI6IHsKPj4gKyAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbm5h bWUsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICAgICAgZGlnZXN0OiB7Cj4+ICsgICAg ICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICAgICAgdHlwZTogQ29u ZmlnRGlnZXN0LAo+PiArICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgfSwKPj4gKyAgICB9LAo+ PiArKV0KPj4gKy8vLyBEZWxldGUgYSB1c2VyJ3MgQVBJIHRva2VuCj4+ICtwdWIgZm4gZGVsZXRl X3Rva2VuKAo+PiArICAgIHVzZXJpZDogVXNlcmlkLAo+PiArICAgIHRva2VuX25hbWU6IFRva2Vu bmFtZSwKPj4gKyAgICBkaWdlc3Q6IE9wdGlvbjxDb25maWdEaWdlc3Q+LAo+PiArKSAtPiBSZXN1 bHQ8KCksIEVycm9yPiB7Cj4+ICsgICAgbGV0IF9sb2NrID0gY3JhdGU6OnVzZXI6OmxvY2tfY29u ZmlnKCk/Owo+PiArCj4+ICsgICAgbGV0IChtdXQgY29uZmlnLCBjb25maWdfZGlnZXN0KSA9IGNy YXRlOjp1c2VyOjpjb25maWcoKT87Cj4+ICsgICAgY29uZmlnX2RpZ2VzdC5kZXRlY3RfbW9kaWZp Y2F0aW9uKGRpZ2VzdC5hc19yZWYoKSk/Owo+PiArCj4+ICsgICAgbGV0IHRva2VuaWQgPSBBdXRo aWQ6OmZyb20oKHVzZXJpZC5jbG9uZSgpLCBTb21lKHRva2VuX25hbWUuY2xvbmUoKSkpKTsKPj4g KyAgICBsZXQgdG9rZW5pZF9zdHJpbmcgPSB0b2tlbmlkLnRvX3N0cmluZygpOwo+PiArCj4+ICsg ICAgbWF0Y2ggY29uZmlnLnNlY3Rpb25zLmdldCgmdG9rZW5pZF9zdHJpbmcpIHsKPj4gKyAgICAg ICAgU29tZShfKSA9PiB7Cj4+ICsgICAgICAgICAgICBjb25maWcuc2VjdGlvbnMucmVtb3ZlKCZ0 b2tlbmlkX3N0cmluZyk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgTm9uZSA9PiBiYWlsISgK Pj4gKyAgICAgICAgICAgICJ0b2tlbiAne30nIG9mIHVzZXIgJ3t1c2VyaWR9JyBkb2VzIG5vdCBl eGlzdC4iLAo+PiArICAgICAgICAgICAgdG9rZW5fbmFtZS5hc19zdHIoKSwKPj4gKyAgICAgICAg KSwKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICB0b2tlbl9zaGFkb3c6OmRlbGV0ZV9zZWNyZXQoJnRv a2VuaWQpPzsKPj4gKwo+PiArICAgIGNyYXRlOjp1c2VyOjpzYXZlX2NvbmZpZygmY29uZmlnKT87 Cj4KPiBzaG91bGQgd2UgY2xlYW4gdXAgQUNMIGVudHJpZXMgZm9yIHRoYXQgdG9rZW4gaGVyZSBh cyB3ZWxsPwoKeWVwLCBtYWtlcyBzZW5zZSwgd2lsbCBiZSBpbiB0aGUgdjIKCj4+ICsKPj4gKyAg ICBPaygoKSkKPj4gK30KPj4gKwo+PiArI1thcGkoCj4+ICsgICAgaW5wdXQ6IHsKPj4gKyAgICAg ICAgcHJvcGVydGllczogewo+PiArICAgICAgICAgICAgdXNlcmlkOiB7Cj4+ICsgICAgICAgICAg ICAgICAgdHlwZTogVXNlcmlkLAo+PiArICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgfSwKPj4g KyAgICB9LAo+PiArICAgIHJldHVybnM6IHsKPj4gKyAgICAgICAgZGVzY3JpcHRpb246ICJMaXN0 IHVzZXIncyBBUEkgdG9rZW5zICh3aXRoIGNvbmZpZyBkaWdlc3QpLiIsCj4+ICsgICAgICAgIHR5 cGU6IEFycmF5LAo+PiArICAgICAgICBpdGVtczogeyB0eXBlOiBUb2tlbkFwaUVudHJ5IH0sCj4+ ICsgICAgfSwKPj4gKyldCj4+ICsvLy8gTGlzdCB1c2VyJ3MgQVBJIHRva2Vucwo+PiArcHViIGZu IGxpc3RfdG9rZW5zKAo+PiArICAgIHVzZXJpZDogVXNlcmlkLAo+PiArICAgIF9pbmZvOiAmQXBp TWV0aG9kLAo+PiArICAgIHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQsCj4+ICspIC0+ IFJlc3VsdDxWZWM8VG9rZW5BcGlFbnRyeT4sIEVycm9yPiB7Cj4+ICsgICAgbGV0IChjb25maWcs IGRpZ2VzdCkgPSBjcmF0ZTo6dXNlcjo6Y29uZmlnKCk/Owo+PiArCj4+ICsgICAgbGV0IGxpc3Q6 IFZlYzxBcGlUb2tlbj4gPSBjb25maWcuY29udmVydF90b190eXBlZF9hcnJheSgidG9rZW4iKT87 Cj4+ICsKPj4gKyAgICBycGNlbnZbImRpZ2VzdCJdID0gaGV4OjplbmNvZGUoZGlnZXN0KS5pbnRv KCk7Cj4+ICsKPj4gKyAgICBsZXQgZmlsdGVyX2J5X293bmVyID0gfHRva2VuOiBBcGlUb2tlbnwg ewo+PiArICAgICAgICBpZiB0b2tlbi50b2tlbmlkLmlzX3Rva2VuKCkgJiYgdG9rZW4udG9rZW5p ZC51c2VyKCkgPT0gJnVzZXJpZCB7Cj4+ICsgICAgICAgICAgICBsZXQgdG9rZW5fbmFtZSA9IHRv a2VuLnRva2VuaWQudG9rZW5uYW1lKCkudW53cmFwKCkudG9fb3duZWQoKTsKPj4gKyAgICAgICAg ICAgIFNvbWUoVG9rZW5BcGlFbnRyeSB7IHRva2VuX25hbWUsIHRva2VuIH0pCj4+ICsgICAgICAg IH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICBOb25lCj4+ICsgICAgICAgIH0KPj4gKyAgICB9Owo+ PiArCj4+ICsgICAgbGV0IHJlcyA9IGxpc3QuaW50b19pdGVyKCkuZmlsdGVyX21hcChmaWx0ZXJf Ynlfb3duZXIpLmNvbGxlY3QoKTsKPj4gKwo+PiArICAgIE9rKHJlcykKPj4gK30KPj4gKwo+PiAr Lypjb25zdCBUT0tFTl9JVEVNX1JPVVRFUjogUm91dGVyID0gUm91dGVyOjpuZXcoKQo+PiArICAg IC5nZXQoJkFQSV9NRVRIT0RfUkVBRF9UT0tFTikKPj4gKyAgICAucHV0KCZBUElfTUVUSE9EX1VQ REFURV9UT0tFTikKPj4gKyAgICAucG9zdCgmQVBJX01FVEhPRF9HRU5FUkFURV9UT0tFTikKPj4g KyAgICAuZGVsZXRlKCZBUElfTUVUSE9EX0RFTEVURV9UT0tFTik7Cj4+ICsKPj4gK2NvbnN0IFRP S0VOX1JPVVRFUjogUm91dGVyID0gUm91dGVyOjpuZXcoKQo+PiArICAgIC5nZXQoJkFQSV9NRVRI T0RfTElTVF9UT0tFTlMpCj4+ICsgICAgLm1hdGNoX2FsbCgidG9rZW4tbmFtZSIsICZUT0tFTl9J VEVNX1JPVVRFUik7Cj4+ICsKPj4gK2NvbnN0IFVTRVJfU1VCRElSUzogU3ViZGlyTWFwID0gJlso InRva2VuIiwgJlRPS0VOX1JPVVRFUildOyovCj4+IGRpZmYgLS1naXQgYS9wcm94bW94LWFjY2Vz cy1jb250cm9sL3NyYy90eXBlcy5ycyBiL3Byb3htb3gtYWNjZXNzLWNvbnRyb2wvc3JjL3R5cGVz LnJzCj4+IGluZGV4IGExNDY3MDBkLi4yNzcxZjNiOCAxMDA2NDQKPj4gLS0tIGEvcHJveG1veC1h Y2Nlc3MtY29udHJvbC9zcmMvdHlwZXMucnMKPj4gKysrIGIvcHJveG1veC1hY2Nlc3MtY29udHJv bC9zcmMvdHlwZXMucnMKPj4gQEAgLTE1NCw5ICsxNTQsMjYgQEAgaW1wbCBBcGlUb2tlbiB7Cj4+ ICBwdWIgc3RydWN0IEFwaVRva2VuU2VjcmV0IHsKPj4gICAgICBwdWIgdG9rZW5pZDogQXV0aGlk LAo+PiAgICAgIC8vLyBUaGUgc2VjcmV0IGFzc29jaWF0ZWQgd2l0aCB0aGUgdG9rZW4uCj4+ICsg ICAgLy8gcmVuYW1lIHRvIGB2YWx1ZWAgYXMgdGhhdCBpcyB3aGF0IGl0IGlzIGNhbGxlZCBpbiB0 aGUgYXBpCj4+ICsgICAgI1tzZXJkZShyZW5hbWUgPSAidmFsdWUiKV0KPj4gICAgICBwdWIgc2Vj cmV0OiBTdHJpbmcsCj4+ICB9Cj4+Cj4+ICsjW2FwaSgKPj4gKyAgICBwcm9wZXJ0aWVzOiB7Cj4+ ICsgICAgICAgIHRva2VuOiB7IHR5cGU6IEFwaVRva2VuIH0sCj4+ICsgICAgfQo+PiArKV0KPj4g KyNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUpXQo+PiArI1tzZXJkZShyZW5hbWVfYWxs ID0gImtlYmFiLWNhc2UiKV0KPj4gKy8vLyBBIFRva2VuIEVudHJ5IHRoYXQgY29udGFpbnMgdGhl IHRva2VuLW5hbWUKPj4gK3B1YiBzdHJ1Y3QgVG9rZW5BcGlFbnRyeSB7Cj4+ICsgICAgLy8vIFRo ZSBUb2tlbiBuYW1lCj4+ICsgICAgcHViIHRva2VuX25hbWU6IFRva2VubmFtZSwKPj4gKyAgICAj W3NlcmRlKGZsYXR0ZW4pXQo+PiArICAgIHB1YiB0b2tlbjogQXBpVG9rZW4sCj4+ICt9Cj4+ICsK Pj4gICNbYXBpKAo+PiAgICAgIHByb3BlcnRpZXM6IHsKPj4gICAgICAgICAgdXNlcmlkOiB7Cj4+ IC0tCj4+IDIuNDcuMwo+Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+PiBwZG0tZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IHBkbS1kZXZlbEBs aXN0cy5wcm94bW94LmNvbQo+PiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFp bG1hbi9saXN0aW5mby9wZG0tZGV2ZWwKPj4KPj4KPj4KPgo+Cj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBwZG0tZGV2ZWwgbWFpbGluZyBsaXN0Cj4g cGRtLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9j Z2ktYmluL21haWxtYW4vbGlzdGluZm8vcGRtLWRldmVsCgoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCnBkbS1kZXZlbCBtYWlsaW5nIGxpc3QKcGRtLWRl dmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9t YWlsbWFuL2xpc3RpbmZvL3BkbS1kZXZlbAo=