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 [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 3D9891FF16B for <inbox@lore.proxmox.com>; Thu, 3 Apr 2025 16:05:40 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 826DA3674; Thu, 3 Apr 2025 16:05:26 +0200 (CEST) Mime-Version: 1.0 Date: Thu, 03 Apr 2025 16:05:21 +0200 Message-Id: <D8X27G1FDP6J.1QVHV5BNCVU2L@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-7-m.carrara@proxmox.com> <1743430815.p3lidgbz0m.astroid@yuna.none> <D8WAP6RU0D56.1T3QC7BCQI5D7@proxmox.com> <1743664476.2gt96bhyxx.astroid@yuna.none> In-Reply-To: <1743664476.2gt96bhyxx.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.081 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 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 6/8] pluginbase: document image operation 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> T24gVGh1IEFwciAzLCAyMDI1IGF0IDk6MjMgQU0gQ0VTVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3 cm90ZToKPiBPbiBBcHJpbCAyLCAyMDI1IDY6MzIgcG0sIE1heCBDYXJyYXJhIHdyb3RlOgo+ID4g T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEyIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gPj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6 Cj4gPj4gPiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2RzOgo+ID4+ ID4gLSBsaXN0X2ltYWdlcwo+ID4+ID4gLSBjcmVhdGVfYmFzZQo+ID4+ID4gLSBjbG9uZV9pbWFn ZQo+ID4+ID4gLSBhbGxvY19pbWFnZQo+ID4+ID4gLSBmcmVlX2ltYWdlCj4gPj4gPiAKPiA+PiA+ IFNpZ25lZC1vZmYtYnk6IE1heCBDYXJyYXJhIDxtLmNhcnJhcmFAcHJveG1veC5jb20+Cj4gPj4g PiBDby1hdXRob3JlZC1ieTogTWF4aW1pbGlhbm8gU2FuZG92YWwgPG0uc2FuZG92YWxAcHJveG1v eC5jb20+Cj4gPj4gPiAtLS0KPiA+PiA+ICBzcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSB8 IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gPiAgMSBmaWxlIGNo YW5nZWQsIDExMSBpbnNlcnRpb25zKCspCj4gPj4gPiAKPiA+PiA+IGRpZmYgLS1naXQgYS9zcmMv UFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBt Cj4gPj4gPiBpbmRleCBiM2NlNjg0Li4zN2IxNDcxIDEwMDY0NAo+ID4+ID4gLS0tIGEvc3JjL1BW RS9TdG9yYWdlL1BsdWdpbkJhc2UucG0KPiA+PiA+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9QbHVn aW5CYXNlLnBtCj4gPj4gPiBAQCAtNzIxLDI2ICs3MjEsMTM3IEBAIHN1YiBvbl9kZWxldGVfaG9v ayB7Cj4gPj4gPiAgCj4gPj4gPiAgPWN1dAo+ID4+ID4gIAo+ID4+ID4gKz1oZWFkMyAkcGx1Z2lu LT5saXN0X2ltYWdlcygkc3RvcmVpZCwgXCVzY2ZnIFssICR2bWlkLCBcQHZvbGxpc3QsIFwlY2Fj aGVdKQo+ID4+ID4gKwo+ID4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGlu IGV2ZXJ5IHN0b3JhZ2UgcGx1Z2luLgo+ID4+ID4gKwo+ID4+ID4gK1JldHVybnMgYSBsaXN0cmVm IG9mIGFsbCBkaXNrIGltYWdlcyBvZiBhIHN0b3JhZ2UuIElmIHRoZSBzdG9yYWdlIGRvZXMgbm90 Cj4gPj4gPiArc3VwcG9ydCBzdG9yaW5nIGRpc2sgaW1hZ2VzLCByZXR1cm5zIGFuIGVtcHR5IGxp c3RyZWYuCj4gPj4gPiArCj4gPj4gPiArT3B0aW9uYWxseSwgaWYgQzxcQHZvbGxpc3Q+IGlzIHBy b3ZpZGVkLCByZXR1cm4gb25seSBkaXNrcyB3aG9zZSB2b2x1bWUgSUQgaXMKPiA+PiA+ICt3aXRo aW4gQzxcQHZvbGxpc3Q+LiBOb3RlIHRoYXQgdGhpcyB1c3VhbGx5IGhhcyBoaWdoZXIgcHJlY2Vk ZW5jZSB0aGFuCj4gPj4gPiArQzwkdm1pZD4uCj4gPiAKPiA+IFVwZnJvbnQgbm90ZTogVW5sZXNz IEkgb3RoZXJ3aXNlIGNvbW1lbnQgc29tZXRoaW5nLCBJIGFncmVlIHdpdGggeW91Lgo+ID4gSnVz dCBzcGFyaW5nIG15c2VsZiBmcm9tIHdyaXRpbmcgYW5kIHlvdSBmcm9tIHJlYWRpbmcgdG9vIG1h bnkgQUNLcyA6UAo+ID4gCj4gPj4KPiA+PiB3aGF0IGRvZXMgdXN1YWxseSBtZWFuPyB3aGF0IGRv ZXMgJHZtaWQgZG8/Cj4gPiAKPiA+IFNvcnJ5LCB0aGlzIGdvdCBsb3N0IHdoZW4gdG9zc2luZyBv dXQgc29tZSByZWR1bmRhbnQgcGFyYWdyYXBocyBoZXJlLgo+ID4gCj4gPiBUaGUgInVzdWFsbHki IGNhbiBiZSBkcm9wcGVkOyBDPCR2bWlkPiBpcyB0aGUgZ3Vlc3QncyBJRCAobWVudGlvbmVkIGlu Cj4gPiB0aGUgREVTQ1JJUFRJT04gaW4gcGF0Y2ggMDEpIGFuZCB1bmxlc3MgQzxcQHZvbGxpc3Q+ IGlzIHByb3ZpZGVkLCB0aGUKPiA+IGltYWdlcyB0aGF0IHRoZSBnaXZlbiBDPCR2bWlkPiBvd25z IHdpbGwgYmUgcmV0dXJuZWQuCj4KPiBpbiBjYXNlIHRoYXQgd2Fzbid0IG9idmlvdXMgLSBJIGtu b3cgd2hhdCAkdm1pZCBpcyAoYW5kIGFsc28gd2hhdCBpdAo+IGRvZXMpIC0gaXQgc2hvdWxkIGJl IGV4cGxhaW5lZCB0byByZWFkZXJzIHRoYXQgZG9uJ3QgKHlldCkuCj4KPiBTbyBJIHRoaW5rIHRo aXMgc2hvdWxkIHNheSBzb21ldGhpbmcgbGlrZToKPgo+IElmIEM8JHZtaWQ+IGlzIHNldCwgb25s eSBpbWFnZXMgb3duZWQgYnkgdGhhdCBWTUlEIG11c3QgYmUgaW5jbHVkZWQgaW4KPiB0aGUgcmV0 dXJuIHZhbHVlLgo+Cj4gSWYgQzxcQHZvbGxpc3Q+IGlzIHNldCBhbmQgbm90IGVtcHR5LCB0aGUg cmV0dXJuIHZhbHVlIG11c3QgYmUgZmlsdGVyZWQKPiB1c2luZyB0aGUgY29udGFpbmVkIHZvbGlk cy4KPgo+IElmIGJvdGggQzwkdm1pZD4gYW5kIEM8XEB2b2xsaXN0PiBhcmUgc2V0LCBvbmx5IEM8 XEB2b2xsaXN0PiBzaG91bGQgYmUKPiBob25vcmVkLgoKVGhhbmtzIGZvciB0aGUgc3VnZ2VzdGlv biwgdGhhdCdzIGFjdHVhbGx5IG11Y2ggYmV0dGVyLiBJIGFsc28gYWdyZWUKd2l0aCB0aGUgb3Ro ZXIgc3VnZ2VzdGlvbnMgZnVydGhlciBiZWxvdy4KCj4KPiBhbmQgYWJvdXQgdGhhdCBsYXN0IHBh cnQgLSBkbyB3ZSBhY3R1YWxseSBoYXZlIGNhbGxlcnMgdGhhdCBzZXQgYm90aD8gaWYKPiBub3Qs IHNob3VsZCB3ZSBpbnN0ZWFkIHJlY29tbWVuZCB0cmVhdGluZyBpdCBhcyBhbiBlcnJvciBhbmQg ZG9jdW1lbnQgaXQKPiBhcyBzdWNoPwoKSSdsbCByZXZpc2l0IHRoZSBjYWxsIHNpdGVzIGFnYWlu IGFuZCBzZWUgd2hldGhlciB3ZSBhY3R1YWxseSBkbywganVzdAp0byBiZSBzdXJlLiBUaGUgY3Vy cmVudCBjb2RlIGF0IGxlYXN0IGRvZXNuJ3QgdHJlYXQgaXQgYXMgYW4gZXJyb3IuCgo+Cj4gPj4g PiArCj4gPj4gPiArQzxkaWU+cyBpbiBjYXNlIG9mIGVycm9ycy4KPiA+PiA+ICsKPiA+PiA+ICtU aGlzIG1ldGhvZCBtYXkgcmV1c2UgTDw8IGNhY2hlZCBpbmZvcm1hdGlvbiB2aWEgQzxcJWNhY2hl PnwvIkNBQ0hJTkcgRVhQRU5TSVZFIE9QRVJBVElPTlMiID4+Lgo+ID4+ID4gKwo+ID4+ID4gK1Ro ZSByZXR1cm5lZCBsaXN0cmVmIGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKPiA+PiA+ICsK PiA+PiA+ICsgICAgWwo+ID4+ID4gKwl7Cj4gPj4gPiArCSAgICBjdGltZSA9PiAiMTY4OTE2MzMy MiIsICMgY3JlYXRpb24gdGltZSBhcyB1bml4IHRpbWVzdGFtcAo+ID4+ID4gKwkgICAgZm9ybWF0 ID0+ICJyYXciLAo+ID4+ID4gKwkgICAgc2l6ZSA9PiA4NTg5OTM0NTkyLCAjIGluIGJ5dGVzIQo+ ID4+ID4gKwkgICAgdm1pZCA9PiAxMDEsCj4gPj4gPiArCSAgICB2b2xpZCA9PiAibG9jYWwtbHZt OmJhc2UtMTAxLWRpc2stMCIsICMgdm9sdW1lIElELCBzdG9yYWdlLXNwZWNpZmljCj4gPj4gPiAr CX0sCj4gPj4gPiArCSMgWy4uLl0KPiA+PiA+ICsgICAgXQo+ID4+ID4gKwo+ID4+ID4gKz1jdXQK PiA+PiA+ICsKPiA+PiA+ICBzdWIgbGlzdF9pbWFnZXMgewo+ID4+ID4gICAgICBteSAoJGNsYXNz LCAkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkdm9sbGlzdCwgJGNhY2hlKSA9IEBfOwo+ID4+ID4g ICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+PiA+ICB9Cj4gPj4g PiAgCj4gPj4gPiArPWhlYWQzICRwbHVnaW4tPmNyZWF0ZV9iYXNlKCRzdG9yZWlkLCBcJXNjZmcs ICR2b2xuYW1lKQo+ID4+ID4gKwo+ID4+ID4gK0I8T1BUSU9OQUw6PiBNYXkgYmUgaW1wbGVtZW50 ZWQgaW4gYSBzdG9yYWdlIHBsdWdpbi4KPiA+PiA+ICsKPiA+PiA+ICtDcmVhdGVzIGEgYmFzZSB2 b2x1bWUgZnJvbSBhbiBleGlzdGluZyB2b2x1bWUsIGFsbG93aW5nIHRoZSB2b2x1bWUgdG8gYmUK PiA+Pgo+ID4+IHRoaXMgaXMgbWlzbGVhZGluZyAtIGl0IGRvZXNuJ3QgY3JlYXRlIGEgYmFzZSB2 b2x1bWUgZnJvbSBhbiBleGlzdGluZwo+ID4+IHZvbHVtZSwgaXQgKmNvbnZlcnRzKiBhbiBleGlz dGluZyB2b2x1bWUgaW50byBhIGJhc2Ugdm9sdW1lIQo+ID4gCj4gPiBPaCBkYW5nLCB0aGFua3Mg Zm9yIHBvaW50aW5nIHRoaXMgb3V0ISBTb3JyeSBmb3IgdGhlIG92ZXJzaWdodC4KPiA+IAo+ID4+ Cj4gPj4gPiArTDw8IGNsb25lZHwvIiRwbHVnaW4tPmNsb25lX2ltYWdlKC4uLikiID4+LiBUaGlz IGNsb25lZCB2b2x1bWUgKHVzdWFsbHkKPiA+PiA+ICthIGRpc2sgaW1hZ2UpIG1heSB0aGVuIGJl IHVzZWQgYXMgYSBiYXNlIGZvciB0aGUgcHVycG9zZSBvZiBjcmVhdGluZyBsaW5rZWQKPiA+Pgo+ ID4+IHRoaXMgaXMgd3Jvbmc/IHRoZXJlIGlzIG5vIGNsb25lZCB2b2x1bWUgeWV0PyBhbmQgYWxs IG9mIHRoaXMgb25seQo+ID4+IGFwcGxpZXMgdG8gaW1hZ2VzIGFuZCBub3Qgb3RoZXIgdm9sdW1l cz8KPiA+Pgo+ID4+ID4gK2Nsb25lcy4gU2VlIEw8QzxQVkU6OlN0b3JhZ2U6Okx2bVRoaW5QbHVn aW4+PiBhbmQKPiA+PiA+ICtMPEM8UFZFOjpTdG9yYWdlOjpaRlNQb29sUGx1Z2luPj4gZm9yIGV4 YW1wbGUgaW1wbGVtZW50YXRpb25zLgo+ID4+ID4gKwo+ID4+ID4gK09uIGNvbXBsZXRpb24sIHJl dHVybnMgdGhlIG5hbWUgb2YgdGhlIG5ldyBiYXNlIHZvbHVtZSAodGhlIG5ldyBDPCR2b2xuYW1l PikuCj4gPj4gPiArCj4gPj4gPiArVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluIHRoZSBjb250ZXh0 IG9mIEM8TDw8IGNsdXN0ZXJfbG9ja19zdG9yYWdlKCl8LyJjbHVzdGVyX2xvY2tfc3RvcmFnZSgu Li4pIiA+Pj4sCj4gPj4gPiAraS5lLiB3aGVuIHRoZSBzdG9yYWdlIGlzIEI8bG9ja2VkPi4KPiA+ Pgo+ID4+IFNob3VsZG4ndCB0aGlzIHNheSB0aGF0IGl0ICpzaG91bGQqIGJlIGNhbGxlZCBpbiBh IGxvY2tlZCBjb250ZXh0Pwo+ID4+Cj4gPj4gPiArCj4gPj4gPiArPWN1dAo+ID4+ID4gKwo+ID4+ ID4gIHN1YiBjcmVhdGVfYmFzZSB7Cj4gPj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAk c2NmZywgJHZvbG5hbWUpID0gQF87Cj4gPj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4g c3ViLWNsYXNzXG4iOwo+ID4+ID4gIH0KPiA+PiA+ICAKPiA+PiA+ICs9aGVhZDMgJHBsdWdpbi0+ Y2xvbmVfaW1hZ2UoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZtaWQgWywgJHNuYXBdKQo+ ID4+ID4gKwo+ID4+ID4gKz1oZWFkMyAkcGx1Z2luLT5jbG9uZV9pbWFnZSguLi4pCj4gPj4gPiAr Cj4gPj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFn ZSBwbHVnaW4uCj4gPj4KPiA+PiBub3QgcmVhbGx5PyB0aGVyZSdzIGEgZmVhdHVyZSBndWFyZCBm b3IgaXQsIHNvIG9ubHkgc3RvcmFnZSBwbHVnaW5zIHRoYXQKPiA+PiBzdXBwb3J0IGl0IHNob3Vs ZCBldmVyIGdldCBpdCBjYWxsZWQgYW55d2F5Li4KPiA+Pgo+ID4+IHdoYXQgZG9lcyAkdm1pZCBt ZWFuPwo+ID4gCj4gPiBTZWUgYWJvdmU7IHRoZSBndWVzdCdzIElELiBTaW5jZSBpdCB3YXMgdW5j bGVhciwgdGhlIHBhcmFtZXRlciBzaG91bGQKPiA+IHByb2JhYmx5IGJlIGV4cGxhaW5lZCBoZXJl IChhbmQgYWxzbyBhYm92ZSkgaW5zdGVhZCBvZiAoanVzdCkgaW4gdGhlCj4gPiBERVNDUklQVElP TiBzZWN0aW9uLgo+Cj4gSSBrbm93IHdoYXQgYSB2bWlkIGlzIDspIHRoZSBxdWVzdGlvbiBpcyB3 aGF0IGRvZXMgdGhpcyBwYXJhbWV0ZXIgKm1lYW4qCj4gZm9yIHRoaXMgcGFydGljdWxhciBtZXRo b2Q/Cj4KPiBDPCR2bWlkPiBjb250YWlucyB0aGUgb3duZXIgb2YgdGhlIG5ldyB2b2x1bWUsIHdo aWNoIG11c3QgYmUgZW5jb2RlZCBpbgo+IHRoZSByZXR1cm5lZCB2b2xpZC4KPgo+IG9yIHNvbWV0 aGluZyBsaWtlIHRoYXQ/Cj4KPiA+PiA+ICsKPiA+PiA+ICtDbG9uZXMgYSBkaXNrIGltYWdlIG9y IGEgc25hcHNob3Qgb2YgYW4gaW1hZ2UsIHJldHVybmluZyB0aGUgbmFtZSBvZiB0aGUgbmV3Cj4g Pj4gPiAraW1hZ2UgKHRoZSBuZXcgQzwkdm9sbmFtZT4pLiBOb3RlIHRoYXQgSTxjbG9uaW5nPiBo ZXJlIG1lYW5zIHRvIGNyZWF0ZSBhIGxpbmtlZAo+ID4+ID4gK2Nsb25lIGFuZCBub3QgZHVwbGlj YXRpbmcgYW4gaW1hZ2UuIFNlZSBMPEM8UFZFOjpTdG9yYWdlOjpMdm1UaGluUGx1Z2luPj4gYW5k Cj4gPj4gPiArTDxDPFBWRTo6U3RvcmFnZTo6WkZTUG9vbFBsdWdpbj4+IGZvciBleGFtcGxlIGlt cGxlbWVudGF0aW9ucy4KPiA+Pgo+ID4+IHRoZW4gd2h5IG5vdCBzdGFydCB3aXRoCj4gPj4KPiA+ PiAiQ3JlYXRlcyBhIGxpbmtlZCBjbG9uZSBvZiBhbiBleGlzdGluZyBkaXNrIGltYWdlIG9yIHNu YXBzaG90IG9mIGFuCj4gPj4gaW1hZ2UiCj4gPj4KPiA+PiA/IG1heWJlIGFsc28gaW5jbHVkZSB0 aGF0IHVubGVzcyB0aGUgbGlua2VkIGNsb25lIGlzIDEwMCUgaW5kZXBlbmRlbnQKPiA+PiBmcm9t IHRoZSBiYXNlIChvbmx5IHRydWUgZm9yIExWTSB0aGluIGF0bT8pLCB0aGUgbmV3IHZvbGlkIHNo b3VsZCBlbmNvZGUKPiA+PiB0aGUgYmFzZS0+Y2xvbmUgcmVsYXRpb24gaW4gdGhlIHZvbG5hbWU/ Cj4gPj4KPiA+PiA+ICsKPiA+PiA+ICtDPGRpZT5zIGluIGNhc2Ugb2YgYW4gZXJyb3Igb2YgaWYg dGhlIHVuZGVybHlpbmcgc3RvcmFnZSBkb2Vzbid0IHN1cHBvcnQKPiA+Pgo+ID4+IHMvb2Yvb3Iv Cj4gPj4KPiA+PiA+ICtjbG9uaW5nIGltYWdlcy4KPiA+PiA+ICsKPiA+PiA+ICtUaGlzIG1ldGhv ZCBpcyBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgQzxMPDwgY2x1c3Rlcl9sb2NrX3N0b3JhZ2Uo KXwvImNsdXN0ZXJfbG9ja19zdG9yYWdlKC4uLikiID4+PiwKPiA+PiA+ICtpLmUuIHdoZW4gdGhl IHN0b3JhZ2UgaXMgQjxsb2NrZWQ+Lgo+ID4+Cj4gPj4gc2FtZSBhcyBhYm92ZQo+ID4+Cj4gPj4g PiArCj4gPj4gPiArPWN1dAo+ID4+ID4gKwo+ID4+ID4gIHN1YiBjbG9uZV9pbWFnZSB7Cj4gPj4g PiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICR2bWlkLCAkc25h cCkgPSBAXzsKPiA+PiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7 Cj4gPj4gPiAgfQo+ID4+ID4gIAo+ID4+ID4gKz1oZWFkMyAkcGx1Z2luLT5hbGxvY19pbWFnZSgk c3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNpemUpCj4gPj4gPiArCj4gPj4g PiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVn aW4uCj4gPj4gPiArCj4gPj4gPiArQWxsb2NhdGVzIGEgZGlzayBpbWFnZSB3aXRoIHRoZSBnaXZl biBmb3JtYXQgQzwkZm10PiBhbmQgQzwkc2l6ZT4gaW4gYnl0ZXMsCj4gPj4gPiArcmV0dXJuaW5n IHRoZSBuYW1lIG9mIHRoZSBuZXcgaW1hZ2UgKHRoZSBuZXcgQzwkdm9sbmFtZT4pLiBTZWUKPiA+ PiA+ICtDPEw8PCBwbHVnaW5kYXRhKCl8LyIkcGx1Z2luLT5wbHVnaW5kYXRhKCkiID4+PiBmb3Ig YWxsIGRpc2sgZm9ybWF0cy4KPiA+PiA+ICsKPiA+PiA+ICtPcHRpb25hbGx5LCBpZiBnaXZlbiwg c2V0IHRoZSBuYW1lIG9mIHRoZSBpbWFnZSB0byBDPCRuYW1lPi4gSWYgQzwkbmFtZT4gaXNuJ3QK PiA+PiA+ICtwcm92aWRlZCwgdGhlIG5leHQgbmFtZSBzaG91bGQgYmUgZGV0ZXJtaW5lZCB2aWEg QzxMPDwgZmluZF9mcmVlX2Rpc2tuYW1lKCl8LyIkcGx1Z2luLT5maW5kX2ZyZWVfZGlza25hbWUo Li4uKSIgPj4+Lgo+ID4+Cj4gPj4gYSBzdWl0YWJsZSBuYW1lIHNob3VsZCBiZSBhdXRvbWF0aWNh bGx5IGdlbmVyYXRlZCwgdW5sZXNzIHdlIHJlYWxseSB3YW50Cj4gPj4gdG8gc3RhYmlsaXplIGZp bmRfZnJlZV9kaXNrbmFtZSBhcyBwYXJ0IG9mIHRoZSBBUEkuLgo+ID4+Cj4gPj4gd2hhdCBkb2Vz ICR2bWlkIG1lYW4/Cj4KPiBoZXJlIGFzIHdlbGwsIHNpbWlsYXIgdG8gY2xvbmVfaW1hZ2UgYWJv dmUKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBwdmUtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4g aHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRl dmVsCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2 ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=