From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 4F6351FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 18:32:02 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 015A61F435; Wed, 2 Apr 2025 18:31:47 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 18:31:42 +0200 Message-Id: <D8WAOY6HIZYT.15MN08DDZ05RL@proxmox.com> To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com> From: "Max Carrara" <m.carrara@proxmox.com> X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20250326142059.261938-1-m.carrara@proxmox.com> <20250326142059.261938-4-m.carrara@proxmox.com> <1743423551.a0519q1x3m.astroid@yuna.none> In-Reply-To: <1743423551.a0519q1x3m.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.323 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: [pve-devel] [PATCH v1 pve-storage 3/8] pluginbase: document SectionConfig methods X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEzIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g PiBUaGlzIGNvbW1pdCBhZGRzIGRvY3N0cmluZ3MgZm9yIHRoZSByZWxldmFudCBQVkU6OlNlY3Rp b25Db25maWcKPiA+IG1ldGhvZHMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHN0b3JhZ2UgcGx1Z2lu IEFQSS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94 bW94LmNvbT4KPiA+IC0tLQo+ID4gIHNyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtIHwgMTk0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ICAxIGZpbGUgY2hhbmdlZCwg MTkyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9z cmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNl LnBtCj4gPiBpbmRleCAxNjk3N2YzLi41ZjdlNmZkIDEwMDY0NAo+ID4gLS0tIGEvc3JjL1BWRS9T dG9yYWdlL1BsdWdpbkJhc2UucG0KPiA+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNl LnBtCj4gPiBAQCAtODgsNyArODgsNyBAQCBwYWNrYWdlIFBWRTo6U3RvcmFnZTo6UGx1Z2luQmFz ZTsKPiA+ICB1c2Ugc3RyaWN0Owo+ID4gIHVzZSB3YXJuaW5nczsKPiA+ICAKPiA+IC11c2UgQ2Fy cCBxdyhjcm9hayk7Cj4gPiArdXNlIENhcnAgcXcoY3JvYWsgY29uZmVzcyk7Cj4gPiAgCj4gPiAg dXNlIHBhcmVudCBxdyhQVkU6OlNlY3Rpb25Db25maWcpOwo+ID4gIAo+ID4gQEAgLTEwMCwyNyAr MTAwLDIxNyBAQCB1c2UgcGFyZW50IHF3KFBWRTo6U2VjdGlvbkNvbmZpZyk7Cj4gPiAgCj4gPiAg PWN1dAo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT50eXBlKCkKPiA+ICsKPiA+ICtCPFJFUVVJ UkVEOj4gTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KClVwZnJv bnQgbm90ZTogVW5sZXNzIEkgb3RoZXJ3aXNlIGNvbW1lbnQgc29tZXRoaW5nLCBJIGFncmVlIHdp dGggeW91LgpKdXN0IHNwYXJpbmcgbXlzZWxmIGZyb20gd3JpdGluZyBhbmQgeW91IGZyb20gcmVh ZGluZyB0b28gbWFueSBBQ0tzIDpQCgo+Cj4gSSBhbSBub3Qgc3VyZSB3aGV0aGVyIHdlIHNob3Vs ZCBkbwo+Cj4gcy9pbXBsZW1lbnRlZCBpbi9pbXBsZW1lbnRlZCBieQo+Cj4gZm9yIHRoaXMgd2hv bGUgdGhpbmcgYW5kIFNlY3Rpb25Db25maWcsIGJ1dCBJIHdvbid0IG5vdGUgaXQgZm9yIGV2ZXJ5 Cj4gaW5zdGFuY2UgOykKPgo+ID4gKwo+ID4gK1RoaXMgc2hvdWxkIHJldHVybiBhIHN0cmluZyB3 aXRoIHdoaWNoIHRoZSBwbHVnaW4gY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCj4KPiBhIHN0 cmluZyB3aGljaCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBwbHVnaW4uCj4KPiA+ICtBbnkgc3Ry aW5nIGlzIGFjY2VwdGFibGUsIGFzIGxvbmcgYXMgaXQncyBkZXNjcmlwdGl2ZSBhbmQgeW91J3Jl IHN1cmUgaXQgd29uJ3QKPiA+ICtjb25mbGljdCB3aXRoIGFub3RoZXIgcGx1Z2luLiBJbiB0aGUg Y2FzZXMgb2YgYnVpbHQtaW4gcGx1Z2lucywgeW91IHdpbGwgb2Z0ZW4KPiA+ICtmaW5kIHRoZSBm aWxlc3lzdGVtIG5hbWUgb3Igc29tZXRoaW5nIHNpbWlsYXIgYmVpbmcgdXNlZC4KPgo+IEknZCBy ZXBsYWNlIHRoYXQgd2l0aCBzb21ldGhpbmcgbGlrZToKPgo+IENvbW1vbmx5LCB0aGUgbmFtZSBv ZiB0aGUgc3RvcmFnZSB0ZWNobm9sb2d5IG9yIGZpbGVzeXN0ZW0gc3VwcG9ydGVkIGJ5Cj4gdGhl IHBsdWdpbiBpcyB1c2VkLiBJZiBpdCBpcyBuZWNlc3NhcnkgdG8gZGlmZmVyZW50aWF0ZSBtdWx0 aXBsZQo+IHBsdWdpbnMgZm9yIHRoZSBzYW1lIHN0b3JhZ2UgdGVjaG5vbG9neS9maWxlc3lzdGVt LCBhZGQgYSBzdWZmaXgKPiBkZW5vdGluZyB0aGUgc3VwcG9ydGVkIHZhcmlhbnQgb3IgZmVhdHVy ZSBzZXQuCj4KPiA+ICsKPiA+ICtTZWUgQzxMPFBWRTo6U2VjdGlvbkNvbmZpZy90eXBlPj4gZm9y IG1vcmUgaW5mb3JtYXRpb24uCj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiB0eXBlIHsK PiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4g IAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5wcm9wZXJ0aWVzKCkKPiA+ICsKPiA+ICtCPE9QVElPTkFM Oj4gTWF5IGJlIGltcGxlbWVudGVkIGluIGEgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArVGhp cyBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIHRoZXJlIGFyZSBhZGRpdGlvbmFsIHBy b3BlcnRpZXMgdG8gYmUgdXNlZAo+ID4gK2J5IHlvdXIgcGx1Z2luLiBTaW5jZSBwcm9wZXJ0aWVz IGFyZSBnbG9iYWwgYW5kIG1heSBiZSByZXVzZWQgYWNyb3NzIHBsdWdpbnMsCj4KPiBzL3VzZWQv cmVnaXN0ZXJlZAo+Cj4gSU1ITyB0aGF0IGNvbnZleXMgYmV0dGVyIHdoYXQgdGhlIGRpZmZlcmVu Y2UgYmV0d2VlbiBwcm9wZXJ0aWVzIGFuZAo+IG9wdGlvbnMgYXJlLi4KPgo+ICJnbG9iYWwgYW5k IG1heSBiZSByZXVzZWQgYWNyb3NzIHBsdWdpbnMiIGlzIGtpbmRhIHN1cGVyZmx1b3VzLCBtYXli ZQo+Cj4gIlNpbmNlIHByb3BlcnRpZXMgc2hhcmUgYSBnbG9iYWwgbmFtZXNwYWNlIGFjcm9zcyBh bGwgcGx1Z2lucyI/Cj4KPiA+ICt0aGUgbmFtZXMgb2YgcHJvcGVydGllcyBtdXN0IG5vdCBjb2xs aWRlIHdpdGggb25lIGFub3RoZXIuCj4KPiBlYWNoIHByb3BlcnR5IGNhbiBvbmx5IGJlIHJlZ2lz dGVyZWQgb25jZSBieSBhIHNpbmdsZSBwbHVnaW4sIGJ1dCB1c2VkCj4gYXMgYW4gb3B0aW9uIGJ5 IG1hbnkuCj4KPiA+ICsKPiA+ICtXaGVuIGltcGxlbWVudGluZyBhIHRoaXJkLXBhcnR5IHBsdWdp biwgaXQgaXMgcmVjb21tZW5kZWQgdG8gcHJlZml4IHByb3BlcnRpZXMKPiA+ICt3aXRoIHNvbWUg a2luZCBvZiBpZGVudGlmaWVyLCBsaWtlIHNvOgo+Cj4gVGhpcmQtcGFydHkgcGx1Z2lucyBzaG91 bGQgdGhlcmVmb3JlIHByZWZpeCBhbnkgcHJvcGVydGllcyB0aGV5IHJlZ2lzdGVyCj4gd2l0aCB0 aGVpciBwbHVnaW4gdHlwZSwgZm9yIGV4YW1wbGU6Cj4KPiA+ICsKPiA+ICsgICAgc3ViIHByb3Bl cnRpZXMgewo+ID4gKwlyZXR1cm4gewo+ID4gKwkgICAgJ2V4YW1wbGUtc3RvcmFnZS1hZGRyZXNz JyA9PiB7Cj4gPiArCQlkZXNjcmlwdGlvbiA9PiAnSG9zdCBhZGRyZXNzIG9mIHRoZSBFeGFtcGxl U3RvcmFnZSB0byBjb25uZWN0IHRvLicsCj4gPiArCQl0eXBlID0+ICdzdHJpbmcnLAo+ID4gKwkg ICAgfSwKPiA+ICsJICAgICdleGFtcGxlLXN0b3JhZ2UtcG9vbCcgPT4gewo+ID4gKwkJZGVzY3Jp cHRpb24gPT4gJ05hbWUgb2YgdGhlIEV4YW1wbGVTdG9yYWdlIHBvb2wgdG8gdXNlLicsCj4gPiAr CQl0eXBlID0+ICdzdHJpbmcnLAo+ID4gKwkgICAgfSwKPiA+ICsJICAgICMgWy4uLl0KPiA+ICsJ fTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gK0hvd2V2ZXIsIGl0IGlzIGVuY291cmFnZWQgdG8gcmV1 c2UgcHJvcGVydGllcyBvZiBpbmJ1aWx0IHBsdWdpbnMgd2hlbmV2ZXIKPiA+ICtwb3NzaWJsZS4g VGhlcmUgYXJlIGEgZmV3IHByb3ZpZGVkIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVnYXJkZWQgYXMg STxzZW5zaXRpdmU+Cj4gPiArYW5kIHdpbGwgYmUgdHJlYXRlZCBkaWZmZXJlbnRseSBpbiBvcmRl ciB0byBub3QgZXhwb3NlIHRoZW0gb3Igd3JpdGUgdGhlbSBhcwo+ID4gK3BsYWluIHRleHQgaW50 byBjb25maWd1cmF0aW9uIGZpbGVzLiBPbmUgc3VjaCBwcm9wZXJ0eSBmaXQgZm9yIGV4dGVybmFs IHVzZSBpcwo+ID4gK0M8cGFzc3dvcmQ+LCB3aGljaCB5b3UgY2FuIHVzZSB0byBwcm92aWRlIGEg cGFzc3dvcmQsIEFQSSBzZWNyZXQsIG9yIHNpbWlsYXIuCj4KPiBJZiBwb3NzaWJsZSwgZ2VuZXJp YyBwcm9wZXJ0aWVzIHJlZ2lzdGVyZWQgYnkgYnVpbHQtaW4gcGx1Z2lucyBzaG91bGQgYmUKPiBy ZXVzZWQuCj4KPiAoaW5idWlsdCBpcyBhIHZlcnkgd2VpcmQsIHZlcnkgQnJpdGlzaCB3b3JkIDsp KQo+Cj4gdGhlIHJlc3Qgb2YgdGhhdCBpcyBraW5kYSBtaXNwbGFjZWQgaGVyZSBhbmQgc2hvdWxk IGJlIGl0cyBvd24gc2VjdGlvbgo+IHNvbWV3aGVyZSAoaXQgYWZmZWN0cyBvcHRpb25zIGp1c3Qg YXMgbXVjaCBhcyBwcm9wZXJ0aWVzKS4gd2Ugc2hvdWxkCj4gcHJvYmFibHkgYWxsb3cgcmVnaXN0 ZXJpbmcgc2Vuc2l0aXZlIHByb3BlcnRpZXMgZm9yIHBsdWdpbnM/CgpZZXMsIHdlIHNob3VsZCEg QW5kIEZpb25hJ3MgYWxyZWFkeSBvbiBpdCDwn46JIFswXQoKWzBdOiBodHRwczovL2xvcmUucHJv eG1veC5jb20vcHZlLWRldmVsLzIwMjUwMzIxMTM0ODUyLjEwMzg3MS0xMS1mLmVibmVyQHByb3ht b3guY29tLwoKPgo+ID4gKwo+ID4gK1NlZSBDPEw8UFZFOjpTZWN0aW9uQ29uZmlnL3Byb3BlcnRp ZXM+PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3Vi IHByb3BlcnRpZXMgewo+ID4gICAgICBteSAoJGNsYXNzKSA9IEBfOwo+ID4gICAgICByZXR1cm4g JGNsYXNzLT5TVVBFUjo6cHJvcGVydGllcygpOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBs dWdpbi0+b3B0aW9ucygpCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50 ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArVGhpcyBtZXRob2QgcmV0dXJu cyBhIGhhc2ggb2YgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgcGx1Z2luLiBCZWNhdXNlCj4g PiArcHJvcGVydGllcyBhcmUgc2hhcmVkIGFtb25nIHBsdWdpbnMsIGl0IGlzIHJlY29tbWVuZGVk IHRvIHJldXNlIGFueSBleGlzdGluZwo+ID4gK29uZXMgb2YgaW5idWlsdCBwbHVnaW5zIGFuZCBv bmx5IGRlZmluZSBjdXN0b20gcHJvcGVydGllcyB2aWEKPiA+ICtDPEw8PCBwcm9wZXJ0aWVzKCl8 LyIkcGx1Z2luLT5wcm9wZXJ0aWVzKCkiID4+PiBpZiBuZWNlc3NhcnkuCj4KPiBFdmVyeXRoaW5n IGJ1dCB0aGUgZmlyc3Qgc2VudGVuY2UgY2FuIGJlIGEgcmVmZXJlbmNlIHRvIHRoZSBwcm9wZXJ0 aWVzCj4gcGFydCBhYm92ZS4uCj4KPiA+ICsKPiA+ICtUaGUgcHJvcGVydGllcyBhIHBsdWdpbiB1 c2VzIGFyZSB0aGVuIGRlY2xhcmVkIGFzIGZvbGxvd3M6Cj4KPiBvciBqdXN0LCAiRm9yIGV4YW1w bGU6IiA/IDspCj4KPiA+ICsKPiA+ICsgICAgc3ViIG9wdGlvbnMgewo+ID4gKwlyZXR1cm4gewo+ ID4gKwkgICAgbm9kZXMgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4gPiArCSAgICBjb250ZW50ID0+ IHsgb3B0aW9uYWwgPT4gMSB9LAo+ID4gKwkgICAgZGlzYWJsZSA9PiB7IG9wdGlvbmFsID0+IDEg fSwKPiA+ICsJICAgICdleGFtcGxlLXN0b3JhZ2UtcG9vbCcgPT4geyBmaXhlZCA9PiAxIH0sCj4g PiArCSAgICAnZXhhbXBsZS1zdG9yYWdlLWFkZHJlc3MnID0+IHsgZml4ZWQgPT4gMSB9LAo+ID4g KwkgICAgcGFzc3dvcmQgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4gPiArCX07Cj4gPiArICAgIH0K PiA+ICsKPiA+ICtDPG9wdGlvbmFsPiBwcm9wZXJ0aWVzIGFyZSBub3QgcmVxdWlyZWQgdG8gYmUg c2V0LiBJdCBpcyByZWNvbW1lbmRlZCB0byBzZXQKPgo+IHMvc2V0L21ha2Ugb3IgImRlY2xhcmUi Pwo+Cj4gPiArbW9zdCBwcm9wZXJ0aWVzIG9wdGlvbmFsIGJ5IGRlZmF1bHQsIHVubGVzcyBpdCBJ PHJlYWxseT4gaXMgcmVxdWlyZWQgdG8gYWx3YXlzCj4gPiArZXhpc3QuCj4KPiBzL2l0L3RoZXkK PiBzL2V4aXN0L2JlIHNldAo+Cj4gPiArCj4gPiArQzxmaXhlZD4gcHJvcGVydGllcyBjYW4gb25s eSBiZSBzZXQgd2hlbiBjcmVhdGluZyBhIG5ldyBzdG9yYWdlIHZpYSB0aGUgcGx1Z2luCj4gPiAr YW5kIGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyd2FyZHMuCj4KPiBzL2NyZWF0aW5nIGEgbmV3IHN0 b3JhZ2UvYWRkaW5nIGEgbmV3IHN0b3JhZ2UgY29uZmlnIGVudHJ5LyA/IGEgYml0IG1vcmUKPiBw cmVjaXNlIHRvIGRpZmZlcmVudGlhdGUgaXQgZnJvbSBhY3R1YWxseSAiY3JlYXRpbmcgYSBzdG9y YWdlIiBhcyBpbgo+IGZvcm1hdHRpbmcgYSBkaXNrLy4uCj4KPiBJIGFtIG5vdCBzdXJlIHdoYXQg InZpYSB0aGUgcGx1Z2luIiBpcyBzdXBwb3NlZCB0byBtZWFuIHRoZXJlLCBJIHRoaW5rCj4gaXQg Y2FuIGp1c3QgYmUgZHJvcHBlZC4KPgo+ID4gKwo+ID4gK1NlZSBDPEw8UFZFOjpTZWN0aW9uQ29u ZmlnL29wdGlvbnM+PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiAr Cj4gPiAgc3ViIG9wdGlvbnMgewo+ID4gICAgICBteSAoJGNsYXNzKSA9IEBfOwo+ID4gICAgICBy ZXR1cm4gJGNsYXNzLT5TVVBFUjo6b3B0aW9ucygpOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMg JHBsdWdpbi0+cGx1Z2luZGF0YSgpCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1w bGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArVGhpcyBtZXRob2Qg cmV0dXJucyBhIGhhc2ggdGhhdCBzcGVjaWZpZXMgYWRkaXRpb25hbCBjYXBhYmlsaXRpZXMgb2Yg dGhlIHN0b3JhZ2UKPiA+ICtwbHVnaW4sIHN1Y2ggYXMgd2hhdCBraW5kcyBvZiBkYXRhIG1heSBi ZSBzdG9yZWQgb24gaXQgb3Igd2hhdCBWTSBkaXNrIGZvcm1hdHMKPgo+IHMvZGF0YS9jb250ZW50 IG9yIHMvZGF0YS92b2x1bWVzCj4KPiA+ICt0aGUgc3RvcmFnZSBzdXBwb3J0cy4gQWRkaXRpb25h bGx5LCBkZWZhdWx0cyBtYXkgYWxzbyBiZSBzZXQuIFRoaXMgaXMgZG9uZQo+ID4gK3Rocm91Z2gg dGhlIEM8Y29udGVudD4gYW5kIEM8Zm9ybWF0PiBrZXlzLgo+Cj4gYnV0IGhvdyBhYm91dCByZS1v cmdhbml6aW5nIGl0IGEgYml0Pwo+Cj4gVGhpcyBtZXRob2QgcmV0dXJucyBhIGhhc2ggZGVjbGFy aW5nIHdoaWNoIGNvbnRlbnQgdHlwZXMgYW5kIGltYWdlCj4gZm9ybWF0cyB0aGlzIHBsdWdpbiAo b3IgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSkgc3VwcG9ydHMuCj4KPiBhbmQgdGhlbiBkZXNjcmli ZSBlYWNoIGtleT8KPgo+ID4gKwo+ID4gK1RoZSBDPGNvbnRlbnQ+IGtleSBpcyB1c2VkIHRvIGRl Y2xhcmUgQjxzdXBwb3J0ZWQgY29udGVudCB0eXBlcz4gYW5kIHRoZWlyCj4gPiArZGVmYXVsdHMs IHdoaWxlIHRoZSBDPGZvcm1hdD4ga2V5IGRlY2xhcmVzIEI8c3VwcG9ydGVkIGRpc2sgZm9ybWF0 cz4gYW5kIHRoZQo+ID4gK2RlZmF1bHQgZGlzayBmb3JtYXQgb2YgdGhlIHN0b3JhZ2U6Cj4KPiAi YW5kIHRoZWlyIGRlZmF1bHRzIiBzb3VuZHMgd2VpcmQuCj4KPiBUaGUgJ2NvbnRlbnQnIGtleSBz dG9yZXMgYSBsaXN0IGNvbnRhaW5pbmcgdHdvIGhhc2hlcy4gVGhlIGZpcnN0IGxpc3QKPiBlbGVt ZW50IGlzIGEgaGFzaCBkZWNsYXJpbmcgd2hpY2ggY29udGVudCB0eXBlcyBhcmUgc3VwcG9ydGVk IGJ5IHRoZQo+IHBsdWdpbi4gVGhlIHNlY29uZCBsaXN0IGVsZW1lbnQgaXMgYSBoYXNoIGRlY2xh cmluZyB3aGljaCBjb250ZW50IHR5cGVzCj4gYXJlIHVzZWQgYnkgZGVmYXVsdCBpZiBubyBleHBs aWNpdCAnY29udGVudCcgb3B0aW9uIGlzIHNldCBvbiBhIHBsdWdpbgo+IGluc3RhbmNlLgo+Cj4g YW5kIG1heWJlIGxpbmsgc29tZXdoZXJlIGVsc2UgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNv bnRlbnQgdHlwZQo+IHZhbHVlcywgc28gdGhhdCB0aGVyZSBpcyBhIHNpbmdsZSBwbGFjZSB0aGF0 IHZhcmlvdXMgcGFydHMgdGhhdCBuZWVkIGl0Cj4gY2FuIGxpbmsgdG8/Cj4KPiBhbmQgdGhlbgo+ Cj4gVGhlICdmb3JtYXQnIGtleSBzdG9yZXMgYSBsaXN0IGNvbnRhaW5pbmcgdHdvIGhhc2hlcy4g VGhlIGZpcnN0IGxpc3QKPiBlbGVtZW50IGlzIGEgaGFzaCBkZWNsYXJpbmcgd2hpY2ggaW1hZ2Ug Zm9ybWF0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQo+IHN0b3JhZ2UgcGx1Z2luLiBUaGUgc2Vjb25k IGxpc3QgZWxlbWVudCBpcyB0aGUgZGVmYXVsdCBpbWFnZSBmb3JtYXQgdGhhdAo+IHNob3VsZCBi ZSB1c2VkIGZvciBpbWFnZXMgb24gdGhlIHN0b3JhZ2UgaWYgbm9uIGlzIGV4cGxpY2l0bHkgcHJv dmlkZWQuCj4KPiA+ICsKPiA+ICsgICAgc3ViIHBsdWdpbmRhdGEgewo+ID4gKwlyZXR1cm4gewo+ ID4gKwkgICAgY29udGVudCA9PiBbCj4gPiArCQkjIHBvc3NpYmxlIGNvbnRlbnQgdHlwZXMKPiA+ ICsJCXsKPiA+ICsJCSAgICBpbWFnZXMgPT4gMSwgICAjIGRpc2sgaW1hZ2VzCj4gPiArCQkgICAg cm9vdGRpciA9PiAxLCAgIyBjb250YWluZXIgcm9vdCBkaXJlY3Rvcmllcwo+ID4gKwkJICAgIHZ6 dG1wbCA9PiAxLCAgICMgY29udGFpbmVyIHRlbXBsYXRlcwo+ID4gKwkJICAgIGlzbyA9PiAxLCAg ICAgICMgaXNvIGltYWdlcwo+ID4gKwkJICAgIGJhY2t1cCA9PiAxLCAgICMgdnpkdW1wIGJhY2t1 cCBmaWxlcwo+ID4gKwkJICAgIHNuaXBwZXRzID0+IDEsICMgc25pcHBldHMKPiA+ICsJCSAgICBp bXBvcnQgPT4gMSwgICAjIGltcG9ydHM7IHNlZSBleHBsYW5hdGlvbiBiZWxvdwo+ID4gKwkJICAg IG5vbmUgPT4gMSwgICAgICMgbm8gY29udGVudDsgc2VlIGV4cGxhbmF0aW9uIGJlbG93Cj4gPiAr CQl9LAo+ID4gKwkJIyBkZWZhdWx0cyBpZiAnY29udGVudCcgaXNuJ3QgZXhwbGljaXRseSBzZXQK PiA+ICsJCXsKPiA+ICsJCSAgICBpbWFnZXMgPT4gMSwgICAjIHN0b3JlIGRpc2sgaW1hZ2VzIGJ5 IGRlZmF1bHQKPiA+ICsJCSAgICByb290ZGlyID0+IDEgICAjIHN0b3JlIGNvbnRhaW5lcnMgYnkg ZGVmYXVsdAo+ID4gKwkJICAgICMgcG9zc2libGUgdG8gYWRkIG1vcmUgb3IgaGF2ZSBubyBkZWZh dWx0cwo+ID4gKwkJfQo+ID4gKwkgICAgXSwKPiA+ICsJICAgIGZvcm1hdCA9PiBbCj4gPiArCQkj IHBvc3NpYmxlIGRpc2sgZm9ybWF0cwo+ID4gKwkJewo+ID4gKwkJICAgIHJhdyA9PiAxLCAgICMg cmF3IGRpc2sgaW1hZ2UKPiA+ICsJCSAgICBxY293MiA9PiAxLCAjIFFFTVUgaW1hZ2UgZm9ybWF0 Cj4gPiArCQkgICAgdm1kayA9PiAxLCAgIyBWTXdhcmUgaW1hZ2UgZm9ybWF0Cj4gPiArCQkgICAg c3Vidm9sID0+IDEgIyBzdWJ2b2x1bWVzOyBzZWUgZXhwbGFuYXRpb24gYmVsb3cKPiA+ICsJCX0s Cj4gPiArCQkicWNvdzIiICMgZGVmYXVsdCBpZiAnZm9ybWF0JyBpc24ndCBleHBsaWNpdGx5IHNl dAo+ID4gKwkgICAgXQo+ID4gKwkgICAgIyBbLi4uXQo+ID4gKwl9Owo+ID4gKyAgICB9Cj4gPiAr Cj4gPiArV2hpbGUgdGhlIGV4YW1wbGUgYWJvdmUgZGVwaWN0cyBhIHJhdGhlciBjYXBhYmxlIHN0 b3JhZ2UsIHRoZSBmb2xsb3dpbmcKPiA+ICtzaG93cyBhIHNpbXBsZXIgc3RvcmFnZSB0aGF0IGNh biBvbmx5IGJlIHVzZWQgZm9yIFZNIGRpc2tzOgo+Cj4gcmF3LWZvcm1hdHRlZCBWTSBkaXNrcwo+ Cj4gPiArCj4gPiArICAgIHN1YiBwbHVnaW5kYXRhIHsKPiA+ICsJcmV0dXJuIHsKPiA+ICsJICAg IGNvbnRlbnQgPT4gWwo+ID4gKwkJeyBpbWFnZXMgPT4gMSB9LAo+ID4gKwkgICAgXSwKPiA+ICsJ ICAgIGZvcm1hdCA9PiBbCj4gPiArCQl7IHJhdyA9PiAxIH0sCj4gPiArCQkicmF3IiwKPiA+ICsJ ICAgIF0KPiA+ICsJfTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gK1doaWNoIGNvbnRlbnQgdHlwZXMg YW5kIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIHN0b3Jh Z2UKPiA+ICtpbXBsZW1lbnRhdGlvbi4KPiA+ICsKPiA+ICtCPFJlZ2FyZGluZyBDPGltcG9ydD46 PiBUaGUgQzxpbXBvcnQ+IGNvbnRlbnQgdHlwZSBpcyB1c2VkIGludGVybmFsbHkgdG8KPiA+ICtp bnRlcmZhY2Ugd2l0aCB2aXJ0dWFsIGd1ZXN0cyBvZiBmb3JlaWduIHNvdXJjZXMgb3IgZm9ybWF0 cy4gVGhlIGNvcnJlc3BvbmRpbmcKPiA+ICtmdW5jdGlvbmFsaXR5IGhhcyBub3QgeWV0IGJlZW4g cHVibGlzaGVkIHRvIHRoZSBwdWJsaWMgcGFydHMgb2YgdGhlIHN0b3JhZ2UKPiA+ICtBUEkuIFRo aXJkLXBhcnR5IHBsdWdpbnMgdGhlcmVmb3JlIHNob3VsZCBub3QgZGVjbGFyZSB0aGlzIGNvbnRl bnQgdHlwZS4KPgo+IHRoaXMgc2hvdWxkIGxpdmUgc29tZXdoZXJlIHdoZXJlIGNvbnRlbnQgdHlw ZXMgYXJlIGRlc2NyaWJlZAo+Cj4gPiArCj4gPiArQjxSZWdhcmRpbmcgQzxub25lPjo+IFRoZSBD PG5vbmU+IGNvbnRlbnQgdHlwZSBkZW5vdGVzIHRoZSBJPGFic2VuY2U+IG9mIG90aGVyCj4gPiAr dHlwZXMgb2YgY29udGVudCwgaS5lLiB0aGlzIGNvbnRlbnQgdHlwZSBtYXkgb25seSBiZSBzZXQg b24gYSBzdG9yYWdlIGlmIG5vCj4gPiArb3RoZXIgY29udGVudCB0eXBlIGlzIHNldC4gVGhpcyBp cyB1c2VkIGludGVybmFsbHkgZm9yIHN0b3JhZ2VzIHRoYXQgc3VwcG9ydAo+ID4gK2FkZGluZyBh bm90aGVyIHN0b3JhZ2UgIm9uIHRvcCIgb2YgdGhlbTsgYXQgdGhlIG1vbWVudCwgdGhpcyBtYWtl cyBpdCBwb3NzaWJsZQo+ID4gK3RvIHNldCB1cCBhbiBMVk0gKHRoaW4pIHBvb2wgb24gdG9wIG9m IGFuIGlTQ1NJIExVTi4gVGhlIGNvcnJlc3BvbmRpbmcKPiA+ICtmdW5jdGlvbmFsaXR5IGhhcyBu b3QgeWV0IGJlZW4gcHVibGlzaGVkIHRvIHRoZSBwdWJsaWMgcGFydHMgb2YgdGhlIHN0b3JhZ2UK PiA+ICtBUEkuIFRoaXJkLXBhcnR5IHBsdWdpbnMgdGhlcmVmb3JlIHNob3VsZCBub3QgZGVjbGFy ZSB0aGlzIGNvbnRlbnQgdHlwZS4KPgo+IHNhbWUKPgo+ID4gKwo+ID4gK0I8UmVnYXJkaW5nIEM8 c3Vidm9sPjo+IFRoZSBDPHN1YnZvbD4gZm9ybWF0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBhbGxv dyB0aGUKPiA+ICtyb290IGRpcmVjdG9yaWVzIG9mIGNvbnRhaW5lcnMgdG8gdXNlIFpGUyBzdWJ2 b2x1bWVzIChhbHNvIGtub3duIGFzCj4gPiArSTxaRlMgZGF0YXNldHM+LCBub3QgdG8gYmUgY29u ZnVzZWQgd2l0aCBJPFpWT0xzPikuIFRoaXJkLXBhcnR5IHBsdWdpbnMgc2hvdWxkCj4gPiArbm90 IGRlY2xhcmUgdGhpcyBmb3JtYXQgdHlwZS4KPgo+IHRoaXMgaXMgaW5jb21wbGV0ZSwgYnV0IHNh bWUuCj4KPiA+ICsKPiA+ICtUaGVyZSBpcyBvbmUgbW9yZSBrZXksIEM8c2VsZWN0X2V4aXN0aW5n Piwgd2hpY2ggaXMgdXNlZCBpbnRlcm5hbGx5IGZvcgo+ID4gK0lTQ1NJLXJlbGF0ZWQgR1VJIGZ1 bmN0aW9uYWxpdHkuIFRoaXJkLXBhcnR5IHBsdWdpbnMgc2hvdWxkIG5vdCBkZWNsYXJlIHRoaXMK PiA+ICtrZXkuCj4KPiB0aGlzIGlzIG9rYXkgaGVyZSA6KQo+Cj4gPiArCj4gPiArPWN1dAo+ID4g Kwo+ID4gIHN1YiBwbHVnaW5kYXRhIHsKPiA+ICAgICAgbXkgKCRjbGFzcykgPSBAXzsKPiA+ICAg ICAgcmV0dXJuICRjbGFzcy0+U1VQRVI6OnBsdWdpbmRhdGEoKTsKPiA+ICB9Cj4gPiAgCj4gPiAr PWhlYWQzICRwbHVnaW4tPnByaXZhdGUoKQo+ID4gKwo+ID4gK0I8V0FSTklORzo+IFRoaXMgbWV0 aG9kIGlzIHByb3ZpZGVkIGJ5IEM8TDxQVkU6OlN0b3JhZ2U6OlBsdWdpbj4+IGFuZAo+ID4gK211 c3QgYmUgdXNlZCBhcy1pcy4gSXQgaXMgbWVyZWx5IGRvY3VtZW50ZWQgaGVyZSBmb3IgaW5mb3Jt YWwgcHVycG9zZXMKPiA+ICthbmQgQjxtdXN0IG5vdCBiZSBvdmVycmlkZGVuLj4KPiA+ICsKPiA+ ICtSZXR1cm5zIGEgaGFzaCBjb250YWluaW5nIHRoZSB0cmFja2VkIHBsdWdpbiBtZXRhZGF0YSwg bW9zdCBub3RhYmx5IHRoZQo+ID4gK0M8cHJvcGVydHlMaXN0Piwgd2hpY2ggY29udGFpbnMgYWxs IGtub3duIHByb3BlcnRpZXMgb2YgYWxsIHBsdWdpbnMuCj4gPiArCj4gPiArQzxMPFBWRTo6U3Rv cmFnZTo6UGx1Z2luPj4gdXNlcyB0aGlzIHRvIHByZWRlZmluZSBhIGxvdCBvZiB1c2VmdWwgcHJv cGVydGllcwo+ID4gK3RoYXQgYXJlIHJlbGV2YW50IGZvciBhbGwgcGx1Z2lucy4gQ29yZSBmdW5j dGlvbmFsaXR5IHN1Y2ggYXMgZGVmaW5pbmcKPiA+ICt3aGV0aGVyIGEgc3RvcmFnZSBpcyBzaGFy ZWQsIHdoaWNoIG5vZGVzIG1heSB1c2UgaXQsIHdoZXRoZXIgYSBzdG9yYWdlCj4gPiAraXMgZW5h YmxlZCBvciBub3QsIGV0Yy4gYXJlIGltcGxlbWVudGVkIHZpYSB0aGVzZSBwcm9wZXJ0aWVzLgo+ Cj4gdGhpcyBpcyBub3QgdHJ1ZSBhbmQgc291bmRzIGxpa2UgaXQgaXMgdmVyeSBpbnRlcmVzdGlu ZyB0byBsb29rIGF0L21lc3MKPiB3aXRoIDspIGluIHJlYWxpdHksIGl0IGlzIHBhcnQgb2YgU2Vj dGlvbkNvbmZpZyBtYWNoaW5lcnksIHNvIGp1c3Qgc2F5Cj4gdGhhdCBhbmQgdGhhdCBpdCBtdXN0 IG5vdCBiZSBvdmVycmlkZGVuIGFuZCBiZSBkb25lIHdpdGggaXQ/Cj4KPiBpZiBQbHVnaW5CYXNl IGJlY29tZXMgdGhlIHJlYWwgYmFzZSBwbHVnaW4gdGhlbiBpdCBhbmQgc29tZSBvdGhlcgo+IGhl bHBlcnMgd291bGQgbmVlZCB0byBtb3ZlIGhlcmUgYW55d2F5Li4KPgo+ID4gKwo+ID4gK1NlZSBD PEw8UFZFOjpTZWN0aW9uQ29uZmlnL3ByaXZhdGU+PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+ ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHByaXZhdGUgewo+ID4gLSAgICBjcm9hayAiaW1w bGVtZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+ICsgICAgY29uZmVzcyAicHJpdmF0ZSgpIGlz IHByb3ZpZGVkIGJ5IFBWRTo6U3RvcmFnZTo6UGx1Z2luIGFuZCBtdXN0IG5vdCBiZSBvdmVycmlk ZGVuIjsKPiA+ICB9Cj4gPiAgCj4gPiAgPWhlYWQyIEdFTkVSQUwKPiA+IC0tIAo+ID4gMi4zOS41 Cj4gPiAKPiA+IAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+ID4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gcHZlLWRldmVsQGxpc3Rz LnByb3htb3guY29tCj4gPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h bi9saXN0aW5mby9wdmUtZGV2ZWwKPiA+IAo+ID4gCj4gPiAKPgo+Cj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBwdmUtZGV2ZWwgbWFpbGluZyBsaXN0 Cj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNv bS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZl LWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJp bi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=