From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 99E231FF16F for <inbox@lore.proxmox.com>; Tue, 15 Apr 2025 14:21:11 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2BBEF775D; Tue, 15 Apr 2025 14:21:10 +0200 (CEST) Date: Tue, 15 Apr 2025 14:20:35 +0200 From: Wolfgang Bumiller <w.bumiller@proxmox.com> To: Maximiliano Sandoval <m.sandoval@proxmox.com> Message-ID: <yyqjnapm4rgrl6mle3wtxl3xafhecxnkyjrdoa6f2bifjhccj5@q5kujnnpexo2> References: <20250326144410.430616-1-m.sandoval@proxmox.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20250326144410.430616-1-m.sandoval@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.080 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 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. [lib.rs, proxmox.com] Subject: Re: [pbs-devel] [PATCH proxmox] proxmox-client: add query builder X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Cc: pbs-devel@lists.proxmox.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> T24gV2VkLCBNYXIgMjYsIDIwMjUgYXQgMDM6NDQ6MTBQTSArMDEwMCwgTWF4aW1pbGlhbm8gU2Fu ZG92YWwgd3JvdGU6Cj4gQSBiaWcgcHJvcG9ydGlvbiBvZiB0aGUgY29uc3VtZXJzIG9mIHRoaXMg QVBJIHVzZSB0aGUgYGZvcm1hdCFgIG1hY3JvIHRvCj4gZGVmaW5lIHRoZSBiYXNlIG9mIHRoZSB1 cmwsIGhlbmNlIHdlIHVzZSBhIGBDb3c8J18sIHN0cj5gIG9uIHRoZQo+IGNvbnN0cnVjdG9yIHRv IHByZXZlbnQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuCj4gCj4gQSBgcGVybC1hcGktcGF0aC1i dWlsZGVyYCBmZWF0dXJlIHdhcyBhZGRlZCB0byBzYXRpc2Z5IHRoZSBuZWVkcyBvZgo+IHB2ZS1h cGktdHlwZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWF4aW1pbGlhbm8gU2FuZG92YWwgPG0uc2Fu ZG92YWxAcHJveG1veC5jb20+Cj4gLS0tCj4gCj4gVGhpcyBpcyBhIGZvbGxvdy11cCBvZiBbMV0u IEkgd2lsbCBzZW5kIHRoZSBmb2xsb3ctdXBzIHNlcGFyYXRlbHkuCj4gCj4gRGlmZmVyZW5jZXMg ZnJvbSB0aGUgUkZDOgo+ICAtIE1vcmUgZG9jcwo+ICAtIE1vcmUgdGVzdHMKPiAgLSBNb3ZlZCBp bnRvIHByb3htb3gtY2xpZW50Cj4gCj4gWzFdIGh0dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wZG0t ZGV2ZWwvN3FoNWtjaG1yZzRybGF2a293cXg0NGppYW1jem5hcnhuNGtvbnh3dzI0emo3bXN1dXZA Z3NocXByNGxkeHVpL1QvI3UKPiAKPiAgcHJveG1veC1jbGllbnQvQ2FyZ28udG9tbCAgICAgICAg ICAgICAgfCAgIDUgKwo+ICBwcm94bW94LWNsaWVudC9zcmMvYXBpX3BhdGhfYnVpbGRlci5ycyB8 IDI0MiArKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHByb3htb3gtY2xpZW50L3NyYy9saWIu cnMgICAgICAgICAgICAgIHwgICA0ICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9u cygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1jbGllbnQvc3JjL2FwaV9wYXRoX2J1 aWxkZXIucnMKPiAKPiBkaWZmIC0tZ2l0IGEvcHJveG1veC1jbGllbnQvQ2FyZ28udG9tbCBiL3By b3htb3gtY2xpZW50L0NhcmdvLnRvbWwKPiBpbmRleCBmODkwNTAxZS4uMDI3ZmJlM2UgMTAwNjQ0 Cj4gLS0tIGEvcHJveG1veC1jbGllbnQvQ2FyZ28udG9tbAo+ICsrKyBiL3Byb3htb3gtY2xpZW50 L0NhcmdvLnRvbWwKPiBAQCAtMTQsNiArMTQsNyBAQCByZXBvc2l0b3J5LndvcmtzcGFjZSA9IHRy dWUKPiAgYW55aG93LndvcmtzcGFjZSA9IHRydWUKPiAgaGV4LndvcmtzcGFjZSA9IHRydWUKPiAg aHR0cC53b3Jrc3BhY2UgPSB0cnVlCj4gK3BlcmNlbnQtZW5jb2Rpbmcud29ya3NwYWNlID0gdHJ1 ZQo+ICBzZXJkZS53b3Jrc3BhY2UgPSB0cnVlCj4gIHNlcmRlX2pzb24ud29ya3NwYWNlID0gdHJ1 ZQo+ICAKPiBAQCAtMjYsNyArMjcsMTEgQEAgcHJveG1veC1sb2dpbiA9IHsgd29ya3NwYWNlID0g dHJ1ZSwgZmVhdHVyZXMgPSBbICJodHRwIiBdIH0KPiAgcHJveG1veC1odHRwID0geyB3b3Jrc3Bh Y2UgPSB0cnVlLCBvcHRpb25hbCA9IHRydWUsIGZlYXR1cmVzID0gWyAiY2xpZW50IiBdIH0KPiAg aHlwZXIgPSB7IHdvcmtzcGFjZSA9IHRydWUsIG9wdGlvbmFsID0gdHJ1ZSB9Cj4gIAo+ICtbZGV2 LWRlcGVuZGVuY2llc10KPiArc2VyZGVfcGxhaW4ud29ya3NwYWNlID0gdHJ1ZQo+ICsKPiAgW2Zl YXR1cmVzXQo+ICBkZWZhdWx0ID0gW10KPiAgaHlwZXItY2xpZW50ID0gWyAiZGVwOm9wZW5zc2wi LCAiZGVwOmh5cGVyIiwgImRlcDpwcm94bW94LWh0dHAiLCAiZGVwOmxvZyIgXQo+ICtwZXJsLWFw aS1wYXRoLWJ1aWxkZXIgPSBbXQo+ICB3ZWJhdXRobiA9IFsgInByb3htb3gtbG9naW4vd2ViYXV0 aG4iIF0KPiBkaWZmIC0tZ2l0IGEvcHJveG1veC1jbGllbnQvc3JjL2FwaV9wYXRoX2J1aWxkZXIu cnMgYi9wcm94bW94LWNsaWVudC9zcmMvYXBpX3BhdGhfYnVpbGRlci5ycwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmJjMmRmZGU0Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL3Byb3htb3gtY2xpZW50L3NyYy9hcGlfcGF0aF9idWlsZGVyLnJzCj4gQEAgLTAsMCArMSwy NDIgQEAKPiArdXNlIHN0ZDo6Ym9ycm93OjpDb3c7Cj4gKwo+ICsvLy8gQnVpbGRlciBmb3IgQVBJ IHBhdGhzIHdpdGggYSBxdWVyeS4KPiArLy8vCj4gKy8vLyBUaGUgW1NlbGY6OmFyZ10gbWV0aG9k IGNhbiBiZSB1c2VkIHRvIGFkZCBtdWx0aXBsZSBhcmd1bWVudHMgdG8gdGhlIHF1ZXJ5LgoKTWlz c2luZyBgYmFja3RpY2tzYCBhcm91bmQgYFNlbGY6OmFyZ2AuCgpBbHNvLCBtYXliZSB1c2UgIltg YXJnYF0oU2VsZjo6YXJnKCkpIiBpbnN0ZWFkPwoKVGhpcyBoYXBwZW5zIHRocm91Z2hvdXQgdGhl IGNvZGUgYmVsb3cuCgo+ICsvLy8KPiArLy8vIGBgYHJ1c3QKPiArLy8vIHVzZSBwcm94bW94X2Ns aWVudDo6QXBpUGF0aEJ1aWxkZXI7Cj4gKy8vLwo+ICsvLy8gbGV0IHN0b3JhZ2UgPSAibXktc3Rv cmFnZSI7Cj4gKy8vLyBsZXQgdGFyZ2V0ID0gIm15LXRhcmdldCI7Cj4gKy8vLyBsZXQgbm9kZSA9 ICJwdmUwMSI7Cj4gKy8vLyBsZXQgcXVlcnkgPSBBcGlQYXRoQnVpbGRlcjo6bmV3KGZvcm1hdCEo Ii9hcGkyL2V4dGpzL25vZGVzL3tub2RlfS9zdG9yYWdlIikpCj4gKy8vLyAgICAgLmFyZygic3Rv cmFnZSIsIHN0b3JhZ2UpCj4gKy8vLyAgICAgLmFyZygidGFyZ2V0IiwgdGFyZ2V0KQo+ICsvLy8g ICAgIC5idWlsZCgpOwo+ICsvLy8KPiArLy8vIGFzc2VydF9lcSEoJnF1ZXJ5LCAiL2FwaTIvZXh0 anMvbm9kZXMvcHZlMDEvc3RvcmFnZT9zdG9yYWdlPW15JTJEc3RvcmFnZSZ0YXJnZXQ9bXklMkR0 YXJnZXQiKTsKPiArLy8vIGBgYAo+ICsvLy8KPiArLy8vICMjIENvbXBhdGliaWxpdHkgd2l0aCBw ZXJsIEhUVFAgc2VydmVycwo+ICsvLy8KPiArLy8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUg YWRkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwZXJsIEhUVFAgc2VydmVycy4KPiArLy8vCj4g Ky8vLyAtIGBib29sX2FyZ2A6IHRyYW5zbGF0ZXMgYm9vbGVhbnMgdG8gYCIwImAvYCIxImAKPiAr Ly8vIC0gYGxpc3RfYXJnYDogc3BsaXQgbGlzdHMgc28gdGhhdCB0aGV5IGNhbiBiZSBmZWVkIHRv IHBlcmwncyBgc3BsaXRfbGlzdCgpYAo+ICsvLy8KPiArLy8vIFRoZXNlIG1ldGhvZHMgcmVxdWly ZSB0aGUgYHBlcmwtYXBpLXBhdGgtYnVpbGRlcmAgZmVhdHVyZS4KPiArcHViIHN0cnVjdCBBcGlQ YXRoQnVpbGRlciB7Cj4gKyAgICB1cmw6IFN0cmluZywKPiArICAgIHNlcGFyYXRvcjogY2hhciwK PiArfQo+ICsKPiAraW1wbCBBcGlQYXRoQnVpbGRlciB7Cj4gKyAgICAvLy8gQ3JlYXRlcyBhIG5l dyBidWlsZGVyIGZyb20gYSBiYXNlIHBhdGguCj4gKyAgICBwdWIgZm4gbmV3PCdhPihiYXNlOiBp bXBsIEludG88Q293PCdhLCBzdHI+PikgLT4gU2VsZiB7Cj4gKyAgICAgICAgU2VsZiB7Cj4gKyAg ICAgICAgICAgIHVybDogYmFzZS5pbnRvKCkuaW50b19vd25lZCgpLAo+ICsgICAgICAgICAgICBz ZXBhcmF0b3I6ICc/JywKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIEFkZHMg YW4gYXJndW1lbnQgdG8gdGhlIHF1ZXJ5Lgo+ICsgICAgLy8vCj4gKyAgICAvLy8gVGhlIG5hbWUg YW5kIHZhbHVlIHdpbGwgYmUgcGVyY2VudC1lbmNvZGVkLgo+ICsgICAgcHViIGZuIGFyZzxUOiBz dGQ6OmZtdDo6RGlzcGxheT4obXV0IHNlbGYsIG5hbWU6ICZzdHIsIHZhbHVlOiBUKSAtPiBTZWxm IHsKPiArICAgICAgICBzZWxmLnB1c2hfc2VwYXJhdG9yX2FuZF9uYW1lKG5hbWUpOwo+ICsgICAg ICAgIHNlbGYucHVzaF9lbmNvZGVkKHZhbHVlLnRvX3N0cmluZygpLmFzX2J5dGVzKCkpOwo+ICsg ICAgICAgIHNlbGYKPiArICAgIH0KPiArCj4gKyAgICAvLy8gQWRkcyBhbiBvcHRpb25hbCBhcmd1 bWVudCB0byB0aGUgcXVlcnkuCj4gKyAgICAvLy8KPiArICAgIC8vLyBEb2VzIG5vdGhpbmcgaWYg dGhlIHZhbHVlIGlzIGBOb25lYC4gU2VlIFtTZWxmOjphcmddIGZvciBtb3JlIGRldGFpbHMuCj4g KyAgICBwdWIgZm4gbWF5YmVfYXJnPFQ6IHN0ZDo6Zm10OjpEaXNwbGF5PihtdXQgc2VsZiwgbmFt ZTogJnN0ciwgdmFsdWU6ICZPcHRpb248VD4pIC0+IFNlbGYgewo+ICsgICAgICAgIGlmIGxldCBT b21lKHZhbHVlKSA9IHZhbHVlIHsKPiArICAgICAgICAgICAgc2VsZiA9IHNlbGYuYXJnKG5hbWUs IHZhbHVlKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgc2VsZgo+ICsgICAgfQo+ICsKPiArICAg IC8vLyBCdWlsZHMgdGhlIHVybC4KPiArICAgIHB1YiBmbiBidWlsZChzZWxmKSAtPiBTdHJpbmcg ewo+ICsgICAgICAgIHNlbGYudXJsCj4gKyAgICB9Cj4gKwo+ICsgICAgZm4gcHVzaF9zZXBhcmF0 b3JfYW5kX25hbWUoJm11dCBzZWxmLCBuYW1lOiAmc3RyKSB7Cj4gKyAgICAgICAgc2VsZi51cmwu cHVzaChzZWxmLnNlcGFyYXRvcik7Cj4gKyAgICAgICAgc2VsZi5zZXBhcmF0b3IgPSAnJic7Cj4g KyAgICAgICAgc2VsZi5wdXNoX2VuY29kZWQobmFtZS5hc19ieXRlcygpKTsKPiArICAgICAgICBz ZWxmLnVybC5wdXNoKCc9Jyk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZm4gcHVzaF9lbmNvZGVkKCZt dXQgc2VsZiwgdmFsdWU6ICZbdThdKSB7Cj4gKyAgICAgICAgbGV0IGVuY192YWx1ZSA9IHBlcmNl bnRfZW5jb2Rpbmc6OnBlcmNlbnRfZW5jb2RlKHZhbHVlLCBwZXJjZW50X2VuY29kaW5nOjpOT05f QUxQSEFOVU1FUklDKTsKPiArICAgICAgICBzZWxmLnVybC5leHRlbmQoZW5jX3ZhbHVlKTsKPiAr ICAgIH0KPiArfQo+ICsKPiArI1tjZmcoZmVhdHVyZSA9ICJwZXJsLWFwaS1wYXRoLWJ1aWxkZXIi KV0KPiAraW1wbCBBcGlQYXRoQnVpbGRlciB7Cj4gKyAgICAvLy8gQWRkcyBhIGJvb2xlYW4gYXJn IGluIGEgcGVybC1mcmllbmRseSBmYXNoaW9uLgo+ICsgICAgLy8vCj4gKyAgICAvLy8gYGBgcnVz dAo+ICsgICAgLy8vIHVzZSBwcm94bW94X2NsaWVudDo6QXBpUGF0aEJ1aWxkZXI7Cj4gKyAgICAv Ly8KPiArICAgIC8vLyBsZXQgbm9kZSA9ICJwdmUwMSI7Cj4gKyAgICAvLy8gbGV0IHF1ZXJ5ID0g QXBpUGF0aEJ1aWxkZXI6Om5ldyhmb3JtYXQhKCIvYXBpMi9leHRqcy9ub2Rlcy97bm9kZX0vc3Rv cmFnZSIpKQo+ICsgICAgLy8vICAgICAuYm9vbF9hcmcoImVuYWJsZWQiLCB0cnVlKQo+ICsgICAg Ly8vICAgICAuYnVpbGQoKTsKPiArICAgIC8vLwo+ICsgICAgLy8vIGFzc2VydF9lcSEoJnF1ZXJ5 LCAiL2FwaTIvZXh0anMvbm9kZXMvcHZlMDEvc3RvcmFnZT9lbmFibGVkPTEiKTsKPiArICAgIC8v LyBgYGAKPiArICAgIC8vLwo+ICsgICAgLy8vIGB0cnVlYCB3aWxsIGJlIGNvbnZlcnRlZCBpbnRv IGAiMSJgIGFuZCBgZmFsc2VgIHRvIGAiMCJgLgo+ICsgICAgcHViIGZuIGJvb2xfYXJnKG11dCBz ZWxmLCBuYW1lOiAmc3RyLCB2YWx1ZTogYm9vbCkgLT4gU2VsZiB7Cj4gKyAgICAgICAgc2VsZi5w dXNoX3NlcGFyYXRvcl9hbmRfbmFtZShuYW1lKTsKPiArICAgICAgICBpZiB2YWx1ZSB7Cj4gKyAg ICAgICAgICAgIHNlbGYudXJsLnB1c2goJzEnKTsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAg ICAgICAgICBzZWxmLnVybC5wdXNoKCcwJyk7Cj4gKyAgICAgICAgfTsKPiArICAgICAgICBzZWxm Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIEFkZHMgYW4gb3B0aW9uYWwgYm9vbGVhbiBhcmcgaW4g YSBwZXJsLWZyaWVuZGx5IGZhc2hpb24uCj4gKyAgICAvLy8KPiArICAgIC8vLyBEb2VzIG5vdGhp bmcgaWYgYHZhbHVlYCBpcyBgTm9uZWAuIFNlZSBbU2VsZjo6Ym9vbF9hcmddIGZvciBtb3JlCj4g KyAgICAvLy8gZGV0YWlscy4KPiArICAgIHB1YiBmbiBtYXliZV9ib29sX2FyZyhtdXQgc2VsZiwg bmFtZTogJnN0ciwgdmFsdWU6IE9wdGlvbjxib29sPikgLT4gU2VsZiB7Cj4gKyAgICAgICAgaWYg bGV0IFNvbWUodmFsdWUpID0gdmFsdWUgewo+ICsgICAgICAgICAgICBzZWxmID0gc2VsZi5ib29s X2FyZyhuYW1lLCB2YWx1ZSk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHNlbGYKPiArICAgIH0K PiArCj4gKyAgICAvLy8gSGVscGVyIGZvciBidWlsZGluZyBwZXJsLWZyaWVuZGx5IHF1ZXJpZXMu Cj4gKyAgICAvLy8KPiArICAgIC8vLyBGb3IgYDx0eXBlPi1saXN0YCBlbnRyaWVzIHdlIHR1cm4g YW4gYXJyYXkgaW50byBhIHN0cmluZyByZWFkeSBmb3IKPiArICAgIC8vLyBwZXJsJ3MgYHNwbGl0 X2xpc3QoKWAgY2FsbC4KPiArICAgIC8vLwo+ICsgICAgLy8vIGBgYHJ1c3QKPiArICAgIC8vLyB1 c2UgcHJveG1veF9jbGllbnQ6OmFwaV9wYXRoX2J1aWxkZXI6OkFwaVBhdGhCdWlsZGVyOwo+ICsg ICAgLy8vCj4gKyAgICAvLy8gbGV0IGNvbnRlbnQgPSB2ZWMhWyJiYWNrdXAiLCAiaW1hZ2VzIl07 Cj4gKyAgICAvLy8gbGV0IG5vZGUgPSAibXlfbm9kZSI7Cj4gKyAgICAvLy8gbGV0IHF1ZXJ5ID0g JnByb3htb3hfY2xpZW50OjpBcGlQYXRoQnVpbGRlcjo6bmV3KGZvcm1hdCEoIi9hcGkyL2V4dGpz L25vZGVzL3tub2RlfS9zdG9yYWdlIikpCj4gKyAgICAvLy8gICAgIC5tYXliZV9saXN0X2FyZygi Y29udGVudCIsICZjb250ZW50KQo+ICsgICAgLy8vICAgICAuYXJnKCJ0eXBlIiwgInZtIikKCl4g Q29udGFpbnMgdHlwZT12bQoKPiArICAgIC8vLyAgICAgLmJ1aWxkKCk7Cj4gKyAgICAvLy8KPiAr ICAgIC8vLyBhc3NlcnRfZXEhKCZxdWVyeSwgIi9hcGkyL2V4dGpzL25vZGVzL215X25vZGUvc3Rv cmFnZT9jb250ZW50PWJhY2t1cCUwMGltYWdlc3MiKTsKCl4gZG9lcyBub3QgY29udGFpbiB0eXBl PXZtLi4uCgppb3cuIHRoZSB0ZXN0IHN1aXRlIGZhaWxzIHdpdGggYC0tYWxsLWZlYXR1cmVzYAoK PiArICAgIC8vLyBgYGAKPiArICAgIC8vLwo+ICsgICAgLy8vIFRoZSBuYW1lIGFuZCB2YWx1ZXMg d2lsbCBiZSBwZXJjZW50LWVuY29kZWQuCj4gKyAgICBwdWIgZm4gbGlzdF9hcmc8VDogc3RkOjpm bXQ6OkRpc3BsYXksIEk6IEludG9JdGVyYXRvcjxJdGVtID0gVD4+KAoKXiBUaGlzIGlzIHF1aXRl IGxvbmcsIHBsZWFzZSBtb3ZlIGl0IGludG8gYSB3aGVyZSBjYWx1c2UuCkFsc28sIHlvdSBjYW4g c2tpcCBgVGAgdmlhOgoKICAgIHdoZXJlCiAgICAgICAgSTogSW50b0l0ZXJhdG9yLAogICAgICAg IEk6Okl0ZW06IERpc3BsYXksCgpBbmQgc2luY2UgMS43OSBhc3NvY2lhdGVkIHR5cGUgYm91bmRz IGFyZSBzdGFibGUsIHNvIHlvdSBjYW4gYWN0dWFsbHkKZG86CiAgICB3aGVyZQogICAgICAgIEk6 IEludG9JdGVyYXRvcjxJdGVtOiBEaXNwbGF5PiwKCgoKPiArICAgICAgICBtdXQgc2VsZiwKPiAr ICAgICAgICBuYW1lOiAmc3RyLAo+ICsgICAgICAgIHZhbHVlczogSSwKPiArICAgICkgLT4gU2Vs ZiB7Cj4gKyAgICAgICAgc2VsZi5wdXNoX3NlcGFyYXRvcl9hbmRfbmFtZShuYW1lKTsKPiArICAg ICAgICBsZXQgbXV0IGxpc3Rfc2VwYXJhdG9yID0gIiI7Cj4gKyAgICAgICAgZm9yIGVudHJ5IGlu IHZhbHVlcy5pbnRvX2l0ZXIoKSB7Cj4gKyAgICAgICAgICAgIHNlbGYudXJsLnB1c2hfc3RyKGxp c3Rfc2VwYXJhdG9yKTsKPiArICAgICAgICAgICAgbGlzdF9zZXBhcmF0b3IgPSAiJTAwIjsKPiAr ICAgICAgICAgICAgc2VsZi5wdXNoX2VuY29kZWQoZW50cnkudG9fc3RyaW5nKCkuYXNfYnl0ZXMo KSk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHNlbGYKPiArICAgIH0KPiArCj4gKyAgICAvLy8g SGVscGVyIGZvciBidWlsZGluZyBwZXJsLWZyaWVuZGx5IHF1ZXJpZXMuCj4gKyAgICAvLy8KPiAr ICAgIC8vLyBTZWUgW1NlbGY6Omxpc3RfYXJnXSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgICAgcHVi IGZuIG1heWJlX2xpc3RfYXJnPFQ6IHN0ZDo6Zm10OjpEaXNwbGF5PigKPiArICAgICAgICBtdXQg c2VsZiwKPiArICAgICAgICBuYW1lOiAmc3RyLAo+ICsgICAgICAgIHZhbHVlczogJk9wdGlvbjxW ZWM8VD4+LAo+ICsgICAgKSAtPiBTZWxmIHsKCk9oIEkgc28gd2lzaAogICAgd2hlcmUgZm9yPCdh PiAmJ2EgSTogSW50b0l0ZXJhdG9yPFQ6IERpc3BsYXk+CndvdWxkIGFjdHVhbGx5ICp3b3JrKiAo dG8gcmVwbGFjZSBgVmVjPFQ+YCB3aXRoIGFuIGBJYCwgYnV0IGl0IGRvZXNuJ3QKcmlnaHQgbm93 Li4uCgo+ICsgICAgICAgIGlmIGxldCBTb21lKHZhbHVlcykgPSB2YWx1ZXMgewo+ICsgICAgICAg ICAgICBzZWxmID0gc2VsZi5saXN0X2FyZyhuYW1lLCB2YWx1ZXMuaXRlcigpKTsKPiArICAgICAg ICB9Owo+ICsgICAgICAgIHNlbGYKPiArICAgIH0KPiArfQo+ICsKPiArI1tjZmcodGVzdCldCj4g K21vZCB0ZXN0cyB7Cj4gKyAgICB1c2Ugc3VwZXI6Oio7Cj4gKwo+ICsgICAgLy8gU2VlIHBkbV9h cGlfdHlwZXM6OkNvbmZpZ3VyYXRpb25TdGF0ZS4KPiArICAgICNbZGVyaXZlKHNlcmRlOjpTZXJp YWxpemUpXQo+ICsgICAgI1tzZXJkZShyZW5hbWVfYWxsID0gImtlYmFiLWNhc2UiKV0KPiArICAg IGVudW0gQ29uZmlndXJhdGlvblN0YXRlIHsKPiArICAgICAgICBBY3RpdmUsCj4gKyAgICB9Cj4g KyAgICBzZXJkZV9wbGFpbjo6ZGVyaXZlX2Rpc3BsYXlfZnJvbV9zZXJpYWxpemUhKENvbmZpZ3Vy YXRpb25TdGF0ZSk7Cj4gKwo+ICsgICAgLy8gU2VlIHB2ZV9hcGlfdHlwZXM6OkNsdXN0ZXJSZXNv dXJjZUtpbmQuCj4gKyAgICAjW2Rlcml2ZShzZXJkZTo6U2VyaWFsaXplKV0KPiArICAgIGVudW0g Q2x1c3RlclJlc291cmNlS2luZCB7Cj4gKyAgICAgICAgI1tzZXJkZShyZW5hbWUgPSAidm0iKV0K PiArICAgICAgICBWbSwKPiArICAgIH0KPiArICAgIHNlcmRlX3BsYWluOjpkZXJpdmVfZGlzcGxh eV9mcm9tX3NlcmlhbGl6ZSEoQ2x1c3RlclJlc291cmNlS2luZCk7Cj4gKwo+ICsgICAgI1t0ZXN0 XQo+ICsgICAgZm4gdGVzdF9idWlsZGVyKCkgewo+ICsgICAgICAgIGxldCBleHBlY3RlZCA9ICIv YXBpMi9leHRqcy9jbHVzdGVyL3Jlc291cmNlcz90eXBlPXZtIjsKPiArICAgICAgICBsZXQgdHkg PSBDbHVzdGVyUmVzb3VyY2VLaW5kOjpWbTsKPiArCj4gKyAgICAgICAgbGV0IHF1ZXJ5ID0gQXBp UGF0aEJ1aWxkZXI6Om5ldygiL2FwaTIvZXh0anMvY2x1c3Rlci9yZXNvdXJjZXMiKQo+ICsgICAg ICAgICAgICAuYXJnKCJ0eXBlIiwgdHkpCj4gKyAgICAgICAgICAgIC5idWlsZCgpOwo+ICsKPiAr ICAgICAgICBhc3NlcnRfZXEhKCZxdWVyeSwgZXhwZWN0ZWQpOwo+ICsKPiArICAgICAgICBsZXQg c2Vjb25kX2V4cGVjdGVkID0KPiArICAgICAgICAgICAgIi9hcGkyL2V4dGpzL3B2ZS9yZW1vdGVz L3NvbWUtcmVtb3RlL3FlbXUvMTAwL2NvbmZpZz9zdGF0ZT1hY3RpdmUmbm9kZT1teU5vZGUiOwo+ ICsgICAgICAgIGxldCBzdGF0ZSA9IENvbmZpZ3VyYXRpb25TdGF0ZTo6QWN0aXZlOwo+ICsgICAg ICAgIGxldCBub2RlID0gIm15Tm9kZSI7Cj4gKyAgICAgICAgbGV0IHNuYXBzaG90ID0gTm9uZTo6 PCZzdHI+Owo+ICsKPiArICAgICAgICBsZXQgc2Vjb25kX3F1ZXJ5ID0KPiArICAgICAgICAgICAg QXBpUGF0aEJ1aWxkZXI6Om5ldygiL2FwaTIvZXh0anMvcHZlL3JlbW90ZXMvc29tZS1yZW1vdGUv cWVtdS8xMDAvY29uZmlnIikKPiArICAgICAgICAgICAgICAgIC5hcmcoInN0YXRlIiwgc3RhdGUp Cj4gKyAgICAgICAgICAgICAgICAuYXJnKCJub2RlIiwgbm9kZSkKPiArICAgICAgICAgICAgICAg IC5tYXliZV9hcmcoInNuYXBzaG90IiwgJnNuYXBzaG90KQo+ICsgICAgICAgICAgICAgICAgLmJ1 aWxkKCk7Cj4gKwo+ICsgICAgICAgIGFzc2VydF9lcSEoJnNlY29uZF9xdWVyeSwgJnNlY29uZF9l eHBlY3RlZCk7Cj4gKyAgICB9Cj4gK30KPiArCj4gKyNbY2ZnKGFsbCh0ZXN0LCBmZWF0dXJlID0g InBlcmwtYXBpLXBhdGgtYnVpbGRlciIpKV0KPiArbW9kIHBlcmxfdGVzdHMgewo+ICsgICAgdXNl IHN1cGVyOjoqOwo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRlc3RfcGVybF9idWlsZGVy KCkgewo+ICsgICAgICAgIGxldCBoaXN0b3J5ID0gdHJ1ZTsKPiArICAgICAgICBsZXQgbG9jYWxf b25seSA9IGZhbHNlOwo+ICsgICAgICAgIGxldCBzdGFydF90aW1lID0gMTAwMDsKPiArCj4gKyAg ICAgICAgbGV0IGV4cGVjdGVkX3VybCA9Cj4gKyAgICAgICAgICAgICIvYXBpMi9leHRqcy9jbHVz dGVyL21ldHJpY3MvZXhwb3J0P2hpc3Rvcnk9MSZsb2NhbCUyRG9ubHk9MCZzdGFydCUyRHRpbWU9 MTAwMCI7Cj4gKwo+ICsgICAgICAgIGxldCBxdWVyeSA9IEFwaVBhdGhCdWlsZGVyOjpuZXcoIi9h cGkyL2V4dGpzL2NsdXN0ZXIvbWV0cmljcy9leHBvcnQiKQo+ICsgICAgICAgICAgICAuYm9vbF9h cmcoImhpc3RvcnkiLCBoaXN0b3J5KQo+ICsgICAgICAgICAgICAuYm9vbF9hcmcoImxvY2FsLW9u bHkiLCBsb2NhbF9vbmx5KQo+ICsgICAgICAgICAgICAuYXJnKCJzdGFydC10aW1lIiwgc3RhcnRf dGltZSkKPiArICAgICAgICAgICAgLmJ1aWxkKCk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShleHBl Y3RlZF91cmwsIHF1ZXJ5KTsKPiArCj4gKyAgICAgICAgbGV0IHF1ZXJ5X3dpdGhfbWF5YmUgPSBB cGlQYXRoQnVpbGRlcjo6bmV3KCIvYXBpMi9leHRqcy9jbHVzdGVyL21ldHJpY3MvZXhwb3J0IikK PiArICAgICAgICAgICAgLm1heWJlX2Jvb2xfYXJnKCJoaXN0b3J5IiwgU29tZShoaXN0b3J5KSkK PiArICAgICAgICAgICAgLm1heWJlX2Jvb2xfYXJnKCJsb2NhbC1vbmx5IiwgU29tZShsb2NhbF9v bmx5KSkKPiArICAgICAgICAgICAgLm1heWJlX2FyZygic3RhcnQtdGltZSIsICZTb21lKHN0YXJ0 X3RpbWUpKQo+ICsgICAgICAgICAgICAuYnVpbGQoKTsKPiArCj4gKyAgICAgICAgYXNzZXJ0X2Vx IShleHBlY3RlZF91cmwsIHF1ZXJ5X3dpdGhfbWF5YmUpOwo+ICsgICAgfQo+ICt9Cj4gZGlmZiAt LWdpdCBhL3Byb3htb3gtY2xpZW50L3NyYy9saWIucnMgYi9wcm94bW94LWNsaWVudC9zcmMvbGli LnJzCj4gaW5kZXggMDBjNDg2NjUuLjU5NzhkNTAxIDEwMDY0NAo+IC0tLSBhL3Byb3htb3gtY2xp ZW50L3NyYy9saWIucnMKPiArKysgYi9wcm94bW94LWNsaWVudC9zcmMvbGliLnJzCj4gQEAgLTE0 LDYgKzE0LDEwIEBAIHB1YiB1c2UgZXJyb3I6OkVycm9yOwo+ICBwdWIgdXNlIHByb3htb3hfbG9n aW46OnRmYTo6VGZhQ2hhbGxlbmdlOwo+ICBwdWIgdXNlIHByb3htb3hfbG9naW46OntBdXRoZW50 aWNhdGlvbiwgVGlja2V0fTsKPiAgCj4gK3B1YiBtb2QgYXBpX3BhdGhfYnVpbGRlcjsKCuKGkSBE cm9wIHRoZSBgcHViYCBoZXJlCkFuZCB0aGUgbmV3bGluZSDihpMKCj4gKwo+ICtwdWIgdXNlIGFw aV9wYXRoX2J1aWxkZXI6OkFwaVBhdGhCdWlsZGVyOwo+ICsKPiAgcHViKGNyYXRlKSBtb2QgYXV0 aDsKPiAgcHViIHVzZSBhdXRoOjp7QXV0aGVudGljYXRpb25LaW5kLCBUb2tlbn07Cj4gIAo+IC0t IAo+IDIuMzkuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0 dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZl bAo=