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 1D6971FF17C
	for <inbox@lore.proxmox.com>; Wed,  2 Apr 2025 18:32:41 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 756C81F601;
	Wed,  2 Apr 2025 18:32:30 +0200 (CEST)
Mime-Version: 1.0
Date: Wed, 02 Apr 2025 18:31:54 +0200
Message-Id: <D8WAP3ORE11I.26S6Y4NV5F0PI@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-5-m.carrara@proxmox.com>
 <1743427728.0lo886zlbq.astroid@yuna.none>
In-Reply-To: <1743427728.0lo886zlbq.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 4/8] pluginbase: document
 general plugin 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>

T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEyIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg
d3JvdGU6Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g
PiBBZGQgZG9jc3RyaW5ncyBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2RzOgo+ID4gLSBjaGVja19j
b25uZWN0aW9uCj4gPiAtIGFjdGl2YXRlX3N0b3JhZ2UKPiA+IC0gZGVhY3RpdmF0ZV9zdG9yYWdl
Cj4gPiAtIHN0YXR1cwo+ID4gLSBjbHVzdGVyX2xvY2tfc3RvcmFnZQo+ID4gLSBwYXJzZV92b2xu
YW1lCj4gPiAtIGdldF9zdWJkaXIKPiA+IC0gZmlsZXN5c3RlbV9wYXRoCj4gPiAtIHBhdGgKPiA+
IC0gZmluZF9mcmVlX2Rpc2tuYW1lCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1heCBDYXJyYXJh
IDxtLmNhcnJhcmFAcHJveG1veC5jb20+Cj4gPiAtLS0KPiA+ICBzcmMvUFZFL1N0b3JhZ2UvUGx1
Z2luQmFzZS5wbSB8IDI1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAg
MSBmaWxlIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9z
cmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNl
LnBtCj4gPiBpbmRleCA1ZjdlNmZkLi44YTYxZGMzIDEwMDY0NAo+ID4gLS0tIGEvc3JjL1BWRS9T
dG9yYWdlL1BsdWdpbkJhc2UucG0KPiA+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNl
LnBtCj4gPiBAQCAtMzE3LDUzICszMTcsMzA4IEBAIHN1YiBwcml2YXRlIHsKPiA+ICAKPiA+ICA9
Y3V0Cj4gPiAgCj4gPiArPWhlYWQzICRwbHVnaW4tPmNoZWNrX2Nvbm5lY3Rpb24oJHN0b3JlaWQs
IFwlc2NmZykKPiA+ICsKPiA+ICtCPE9QVElPTkFMOj4gTWF5IGJlIGltcGxlbWVudGVkIGluIGEg
c3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArUGVyZm9ybXMgYSBjb25uZWN0aW9uIGNoZWNrLgo+
ID4gKwo+ID4gK1RoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgcGx1Z2lucyB0aGF0IHJlcXVpcmUg
c29tZSBraW5kIG9mIG5ldHdvcmsgY29ubmVjdGlvbgo+ID4gK29yIHNpbWlsYXIgYW5kIGlzIGNh
bGxlZCBiZWZvcmUgQzxMPDwgYWN0aXZhdGVfc3RvcmFnZSgpfC8iJHBsdWdpbi0+YWN0aXZhdGVf
c3RvcmFnZSgkc3RvcmVpZCwgXCVzY2ZnLCBcJWNhY2hlKSIgPj4+LgoKVXBmcm9udCBub3RlOiBV
bmxlc3MgSSBvdGhlcndpc2UgY29tbWVudCBzb21ldGhpbmcsIEkgYWdyZWUgd2l0aCB5b3UuCkp1
c3Qgc3BhcmluZyBteXNlbGYgZnJvbSB3cml0aW5nIGFuZCB5b3UgZnJvbSByZWFkaW5nIHRvbyBt
YW55IEFDS3MgOlAKCj4KPiBUaGlzIG1ldGhvZCBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgbmV0d29y
ay1iYXNlZCBzdG9yYWdlcy4gSXQgd2lsbCBiZQo+IGNhbGxlZCBiZWZvcmUgc3RvcmFnZSBhY3Rp
dmF0aW9uIGF0dGVtcHRzLiBOb24tbmV0d29yayBzdG9yYWdlcyBzaG91bGQKPiBub3QgaW1wbGVt
ZW50IGl0Lgo+Cj4gPiArCj4gPiArUmV0dXJucyBDPDE+IGJ5IGRlZmF1bHQgYW5kIEM8MD4gaWYg
dGhlIHN0b3JhZ2UgaXNuJ3Qgb25saW5lIC8gcmVhY2hhYmxlLgo+Cj4gYnkgZGVmYXVsdCBkb2Vz
bid0IG1ha2UgYW55IHNlbnNlLCBldmVuIHRob3VnaCBJIGtub3cgd2hhdCB5b3UgbWVhbi4KPgo+
ID4gKwo+ID4gK0M8ZGllPnMgaWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIHBlcmZvcm1pbmcgdGhl
IGNvbm5lY3Rpb24gY2hlY2suCj4gPiArCj4gPiArTm90ZSB0aGF0IHRoaXMgbWV0aG9kJ3MgcHVy
cG9zZSBpcyB0byBzaW1wbHkgdmVyaWZ5IHRoYXQgdGhlIHN0b3JhZ2UgaXMKPiA+ICtJPHJlYWNo
YWJsZT4sIGFuZCBub3QgbmVjZXNzYXJpbHkgdGhhdCBhdXRoZW50aWNhdGlvbiBldGMuIHN1Y2Nl
ZWRzLgo+ID4gKwo+ID4gK0ZvciBleGFtcGxlOiBJZiB0aGUgc3RvcmFnZSBpcyBtYWlubHkgYWNj
ZXNzZWQgdmlhIFRDUCwgeW91IGNhbiB0cnkgdG8gc2ltcGx5Cj4gPiArb3BlbiBhIFRDUCBjb25u
ZWN0aW9uIHRvIHNlZSBpZiBpdCdzIG9ubGluZToKPiA+ICsKPiA+ICsgICAgIyBJbiBjdXN0b20g
bW9kdWxlOgo+ID4gKwo+ID4gKyAgICB1c2UgUFZFOjpOZXR3b3JrOwo+ID4gKyAgICB1c2UgcGFy
ZW50IHF3KFBWRTo6U3RvcmFnZTo6UGx1Z2luKQo+ID4gKwo+ID4gKyAgICAjIFsuLi5dCj4gPiAr
Cj4gPiArICAgIHN1YiBjaGVja19jb25uZWN0aW9uIHsKPiA+ICsJbXkgKCRjbGFzcywgJHN0b3Jl
aWQsICRzY2ZnKSA9IEBfOwo+ID4gKwo+ID4gKwlteSAkcG9ydCA9ICRzY2ZnLT57cG9ydH0gfHwg
NTQzMjsKPiA+ICsJcmV0dXJuIFBWRTo6TmV0d29yazo6dGNwX3BpbmcoJHNjZmctPntzZXJ2ZXJ9
LCAkcG9ydCwgNSk7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIGNo
ZWNrX2Nvbm5lY3Rpb24gewo+ID4gICAgICBteSAoJGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcpID0g
QF87Cj4gPiAgCj4gPiAgICAgIHJldHVybiAxOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBs
dWdpbi0+YWN0aXZhdGVfc3RvcmFnZSgkc3RvcmVpZCwgXCVzY2ZnLCBcJWNhY2hlKQo+ID4gKwo+
ID4gKz1oZWFkMyAkcGx1Z2luLT5hY3RpdmF0ZV9zdG9yYWdlKC4uLikKPiA+ICsKPiA+ICtCPFJF
UVVJUkVEOj4gTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+
ICsKPiA+ICtBY3RpdmF0ZXMgdGhlIHN0b3JhZ2UsIG1ha2luZyBpdCByZWFkeSBmb3IgZnVydGhl
ciB1c2UuCj4gPiArCj4gPiArSW4gZXNzZW5jZSwgdGhpcyBtZXRob2QgcGVyZm9ybXMgdGhlIHN0
ZXBzIG5lY2Vzc2FyeSBzbyB0aGF0IHRoZSBzdG9yYWdlIGNhbiBiZQo+ID4gK3VzZWQgYnkgcmVt
YWluaW5nIHBhcnRzIG9mIHRoZSBzeXN0ZW0uCj4KPiB0aGlzIGlzIHN1cGVyZmx1b3VzIChhbGwg
b2YgdGhhdCBpbmZvcm1hdGlvbiBpcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiB0aGUKPiBwcmV2aW91
cyBzZW50ZW5jZSkuCj4KPiA+ICsKPiA+ICtJbiB0aGUgY2FzZSBvZiBmaWxlLWJhc2VkIHN0b3Jh
Z2VzLCB0aGlzIHVzdWFsbHkgZW50YWlscyBjcmVhdGluZyB0aGUgZGlyZWN0b3J5Cj4gPiArb2Yg
dGhlIG1vdW50cG9pbnQsIG1vdW50aW5nIHRoZSBzdG9yYWdlIGFuZCB0aGVuIGNyZWF0aW5nIHRo
ZSBkaXJlY3RvcmllcyBmb3IKPiA+ICt0aGUgZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMgdGhhdCB0
aGUgc3RvcmFnZSBoYXMgZW5hYmxlZC4gU2VlCj4gPiArQzxMPFBWRTo6U3RvcmFnZTo6TkZTUGx1
Z2luPj4gYW5kIEM8TDxQVkU6OlN0b3JhZ2U6OkNJRlNQbHVnaW4+PiBmb3IgZXhhbXBsZXMKPiA+
ICtpbiB0aGF0IHJlZ2FyZC4KPiA+ICsKPiA+ICtPdGhlciB0eXBlcyBvZiBzdG9yYWdlcyB3b3Vs
ZCB1c2UgdGhpcyBtZXRob2QgZm9yIGVzdGFibGlzaGluZyBhIGNvbm5lY3Rpb24gdG8KPiA+ICt0
aGUgc3RvcmFnZSBhbmQgYXV0aGVudGljYXRpbmcgd2l0aCBpdCBvciBzaW1pbGFyLiBTZWUgQzxM
PFBWRTo6U3RvcmFnZTo6SVNDU0lQbHVnaW4+Pgo+ID4gK2ZvciBhbiBleGFtcGxlLgo+ID4gKwo+
Cj4gSSBhbSBub3Qgc3VyZSB0aGlzIGV4YW1wbGVzIHByb3ZpZGUgbXVjaCBiZW5lZml0IGluIHRo
aXMgdmVyYm9zaXR5Li4KPiBtYXliZSBqdXN0IGEgc2luZ2xlIHNlbnRlbmNlIGxpa2UKPgo+IENv
bW1vbiBleGFtcGxlcyBvZiBhY3RpdmF0aW9uIG1pZ2h0IGluY2x1ZGUgbW91bnRpbmcgZmlsZXN5
c3RlbXMsCj4gcHJlcGFyaW5nIGRpcmVjdG9yeSB0cmVlcyBvciBlc3RhYmxpc2hpbmcgc2Vzc2lv
bnMgd2l0aCBuZXR3b3JrCj4gc3RvcmFnZXMuCj4KPiA+ICtJZiB0aGUgc3RvcmFnZSBkb2Vzbid0
IG5lZWQgdG8gYmUgYWN0aXZhdGVkIGluIHNvbWUgd2F5LCB0aGlzIG1ldGhvZCBjYW4gYmUgYQo+
ID4gK25vLW9wLgo+ID4gKwo+ID4gK0M8ZGllPnMgaW4gY2FzZSBvZiBlcnJvcnMuCj4KPiAqU2hv
dWxkKiBkaWU/Cj4KPiA+ICsKPiA+ICtUaGlzIG1ldGhvZCBtYXkgcmV1c2UgTDw8IGNhY2hlZCBp
bmZvcm1hdGlvbiB2aWEgQzxcJWNhY2hlPnwvIkNBQ0hJTkcgRVhQRU5TSVZFIE9QRVJBVElPTlMi
ID4+Lgo+ID4gKwo+ID4gKz1jdXQKPiA+ICsKPiA+ICBzdWIgYWN0aXZhdGVfc3RvcmFnZSB7Cj4g
PiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJGNhY2hlKSA9IEBfOwo+ID4gICAg
ICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiAr
PWhlYWQzICRwbHVnaW4tPmRlYWN0aXZhdGVfc3RvcmFnZSgkc3RvcmVpZCwgXCVzY2ZnLCBcJWNh
Y2hlKQo+ID4gKwo+ID4gKz1oZWFkMyAkcGx1Z2luLT5kZWFjdGl2YXRlX3N0b3JhZ2UoLi4uKQo+
ID4gKwo+ID4gK0I8T1BUSU9OQUw6PiBNYXkgYmUgaW1wbGVtZW50ZWQgaW4gYSBzdG9yYWdlIHBs
dWdpbi4KPiA+ICsKPiA+ICtEZWFjdGl2YXRlcyB0aGUgc3RvcmFnZS4gQ291bnRlcnBhcnQgdG8g
QzxMPDwgYWN0aXZhdGVfc3RvcmFnZSgpfC8iJHBsdWdpbi0+YWN0aXZhdGVfc3RvcmFnZSguLi4p
IiA+Pj4uCj4gPiArCj4gPiArVGhpcyBtZXRob2QgaXMgdXNlZCB0byBtYWtlIHRoZSBzdG9yYWdl
IHVuYXZhaWxhYmxlIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sCj4gPiArd2hpY2ggdXN1YWxs
eSBlbnRhaWxzIHVubW91bnRpbmcgdGhlIHN0b3JhZ2UsIGNsb3NpbmcgYW4gZXN0YWJsaXNoZWQK
PiA+ICtjb25uZWN0aW9uLCBvciBzaW1pbGFyLgo+ID4gKwo+ID4gK0RvZXMgbm90aGluZyBieSBk
ZWZhdWx0Lgo+ID4gKwo+ID4gK0M8ZGllPnMgaW4gY2FzZSBvZiBlcnJvcnMuCj4KPiAqU2hvdWxk
Kgo+Cj4gPiArCj4gPiArVGhpcyBtZXRob2QgbWF5IHJldXNlIEw8PCBjYWNoZWQgaW5mb3JtYXRp
b24gdmlhIEM8XCVjYWNoZT58LyJDQUNISU5HIEVYUEVOU0lWRSBPUEVSQVRJT05TIiA+Pi4KPiA+
ICsKPiA+ICtCPE5PVEU6PiBUaGlzIG1ldGhvZCBpcyBjdXJyZW50bHkgbm90IHVzZWQgYnkgb3Vy
IEFQSSBkdWUgdG8gaGlzdG9yaWNhbAo+ID4gK3JlYXNvbnMuCj4gPiArCj4gPiArPWN1dAo+ID4g
Kwo+ID4gIHN1YiBkZWFjdGl2YXRlX3N0b3JhZ2Ugewo+ID4gICAgICBteSAoJGNsYXNzLCAkc3Rv
cmVpZCwgJHNjZmcsICRjYWNoZSkgPSBAXzsKPiA+ICAKPiA+ICAgICAgcmV0dXJuOwo+ID4gIH0K
PiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+c3RhdHVzKCRzdG9yZWlkLCBcJXNjZmcsIFwlY2Fj
aGUpCj4gPiArCj4gPiArPWhlYWQzICRwbHVnaW4tPnN0YXR1cyguLi4pCj4gPiArCj4gPiArQjxS
RVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4g
PiArCj4gPiArUmV0dXJucyBhIGxpc3Qgb2Ygc2NhbGFycyBpbiB0aGUgZm9sbG93aW5nIGZvcm06
Cj4gPiArCj4gPiArICAgIG15ICgkdG90YWwsICRhdmFpbGFibGUsICR1c2VkLCAkYWN0aXZlKSA9
ICRwbHVnaW4tPnN0YXR1cygkc3RvcmVpZCwgJHNjZmcsICRjYWNoZSkKPiA+ICsKPiA+ICtUaGlz
IGxpc3QgY29udGFpbnMgdGhlIEM8JHRvdGFsPiwgQzwkYXZhaWxhYmxlPiBhbmQgQzwkdXNlZD4g
c3RvcmFnZSBjYXBhY2l0eSwKPiA+ICtyZXNwZWN0aXZlbHksIGFzIHdlbGwgYXMgd2hldGhlciB0
aGUgc3RvcmFnZSBpcyBDPCRhY3RpdmU+IG9yIG5vdC4KPgo+IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8g
aW5jbHVkZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggdW5pdCB0aGUgcmV0dXJuZWQKPiBudW1iZXJz
IHNob3VsZCBiZSBpbj8KPgo+ID4gKwo+ID4gK1RoaXMgbWV0aG9kIG1heSByZXVzZSBMPDwgY2Fj
aGVkIGluZm9ybWF0aW9uIHZpYSBDPFwlY2FjaGU+fC8iQ0FDSElORyBFWFBFTlNJVkUgT1BFUkFU
SU9OUyIgPj4uCj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiBzdGF0dXMgewo+ID4gICAg
ICBteSAoJGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcsICRjYWNoZSkgPSBAXzsKPiA+ICAgICAgY3Jv
YWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFk
MyAkcGx1Z2luLT5jbHVzdGVyX2xvY2tfc3RvcmFnZSgkc3RvcmVpZCwgJHNoYXJlZCwgJHRpbWVv
dXQsIFwmZnVuYywgQHBhcmFtKQo+ID4gKwo+ID4gKz1oZWFkMyAkcGx1Z2luLT5jbHVzdGVyX2xv
Y2tfc3RvcmFnZSguLi4pCj4gPiArCj4gPiArQjxXQVJOSU5HOj4gVGhpcyBtZXRob2QgaXMgcHJv
dmlkZWQgYnkgQzxMPFBWRTo6U3RvcmFnZTo6UGx1Z2luPj4gYW5kCj4gPiArbXVzdCBiZSB1c2Vk
IGFzLWlzLiBJdCBpcyBtZXJlbHkgZG9jdW1lbnRlZCBoZXJlIGZvciBpbmZvcm1hbCBwdXJwb3Nl
cwo+ID4gK2FuZCBCPG11c3Qgbm90IGJlIG92ZXJyaWRkZW4uPgo+Cj4gc2VlIG15IGNvbW1lbnQg
b24gdGhlIGZpcnN0IHBhdGNoLi4gdGhpcyBpcyBub3QgYWN0dWFsbHkgcGFydCBvZiB0aGUKPiBw
bHVnaW4gaW50ZXJmYWNlLCBpdCBpcyBhIGhlbHBlciB0aGF0IGlzIGltcGxlbWVudGVkIGJ5Cj4g
UFZFOjpTdG9yYWdlOjpQbHVnaW4gZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQgc2hvdWxkIGJl
IG1vdmVkCj4gc29tZXdoZXJlIGVsc2UgYW5kIHRoZW4gcmVtb3ZlZCBmcm9tIFBWRTo6U3RvcmFn
ZTo6UGx1Z2luIHdoZW4gd2UgZG8gdGhlCj4gbmV4dCBicmVhayBvZiB0aGF0IGluaGVyaXRhbmNl
IGhpZXJhcmNoeS4uCj4KPiA+ICsKPiA+ICtMb2NrcyB0aGUgc3RvcmFnZSB3aXRoIHRoZSBnaXZl
biBDPCRzdG9yZWlkPiBmb3IgdGhlIGVudGlyZSBob3N0IGFuZCBydW5zIHRoZQo+ID4gK2dpdmVu
IEM8XCZmdW5jPiB3aXRoIHRoZSBnaXZlbiBDPEBwYXJhbT5zLCB1bmxvY2tpbmcgdGhlIHN0b3Jh
Z2Ugb25jZSBmaW5pc2hlZC4KPiA+ICtJZiB0aGUgc3RvcmFnZSBpcyBDPCRzaGFyZWQ+LCBpdCBp
cyBpbnN0ZWFkIGxvY2tlZCBvbiB0aGUgZW50aXJlIGNsdXN0ZXIuIElmCj4gPiArdGhlIHN0b3Jh
Z2UgaXMgYWxyZWFkeSBsb2NrZWQsIHdhaXQgZm9yIGF0IG1vc3QgdGhlIG51bWJlciBvZiBzZWNv
bmRzIGdpdmVuIGJ5Cj4gPiArQzwkdGltZW91dD4uCj4KPiBBdHRlbXB0cyB0byBhY3F1aXJlIGEg
bG9jayBvbiBDPCRzdG9yZWlkPiwgd2FpdGluZyBhdCBtb3N0IEM8JHRpbWVvdXQ+Cj4gc2Vjb25k
cyBiZWZvcmUgZ2l2aW5nIHVwLiBJZiBzdWNjZXNzZnVsLCBydW5zIEM8XCZmdW5jPiB3aXRoIHRo
ZSBnaXZlbgo+IEM8QHBhcmFtPnMgd2hpbGUgaG9sZGluZyB0aGUgbG9jay4gSWYgQzwkc2hhcmVk
PiBpcyBzZXQsIHRoZSBsb2NrCj4gb3BlcmF0aW9uIHdpbGwgYmUgY2x1c3Rlci13aWRlICh3aXRo
IGEgdGltZW91dCBmb3IgdGhlIGV4ZWN1dGlvbiBvZgo+IEM8XCZmdW5jPiBvZiA2MCBzZWNvbmRz
KS4KPgo+IFRoaXMgbWV0aG9kIG11c3QgYmUgdXNlZCB0byBndWFyZCBhZ2FpbnN0IGNvbmN1cnJl
bnQgbW9kaWZpY2F0aW9ucyBvZgo+IHRoZSBzdG9yYWdlIGJ5IG11bHRpcGxlIHRhc2tzIHJ1bm5p
bmcgYXQgdGhlIHNhbWUgdGltZSwgaW4gcGFydGljdWxhcgo+IGZvciBhY3Rpb25zIHN1Y2ggYXM6
Cj4gLSBhbGxvY2F0aW5nIG5ldyB2b2x1bWVzIChpbmNsdWRpbmcgY2xvbmVzKSBvciBzbmFwc2hv
dHMKPiAtIGRlbGV0aW5nIGV4aXN0aW5nIHZvbHVtZXMgb3Igc25hcHNob3RzCj4gLSByZW5hbWlu
ZyBleGlzdGluZyB2b2x1bWVzIG9yIHNuYXBzaG90cwo+Cj4gPiArCj4gPiArVGhpcyBtZXRob2Qg
aXMgdXNlZCB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gdGhlIGdpdmVuIHN0b3JhZ2UsIHByZXZl
bnRpbmcKPiA+ICtzaW11bHRhbmVvdXMgbW9kaWZpY2F0aW9uIGZyb20gbXVsdGlwbGUgd29ya2Vy
cy4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yCj4gPiArb3BlcmF0aW9ucyB0aGF0IG1vZGlmeSBkYXRh
IG9uIHRoZSBzdG9yYWdlIGRpcmVjdGx5LCBsaWtlIGNsb25pbmcgYW5kCj4gPiArYWxsb2NhdGlu
ZyBpbWFnZXMuCj4KPgo+ID4gKwo+ID4gKz1jdXQKPiA+ICsKPiA+ICBzdWIgY2x1c3Rlcl9sb2Nr
X3N0b3JhZ2Ugewo+ID4gICAgICBteSAoJGNsYXNzLCAkc3RvcmVpZCwgJHNoYXJlZCwgJHRpbWVv
dXQsICRmdW5jLCBAcGFyYW0pID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4g
c3ViLWNsYXNzXG4iOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+cGFyc2Vfdm9s
bmFtZSgkdm9sbmFtZSkKPiA+ICsKPiA+ICtCPFJFUVVJUkVEOj4gTXVzdCBiZSBpbXBsZW1lbnRl
ZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtQYXJzZXMgQzwkdm9sbmFtZT4s
IHJldHVybmluZyBhIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBwYXJ0cyBlbmNvZGVkIGluCj4gPiAr
dGhlIHZvbHVtZSBuYW1lOgo+Cj4gcy9wYXJ0cy92b2x1bWUgcHJvcGVydGllcy8gPwo+Cj4gc2hv
dWxkIHdlIGluY29ycG9yYXRlIHRoZSBvdXRjb21lIG9mIHRoaXMgZGlzY3Vzc2lvbjoKPgo+IGh0
dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wdmUtZGV2ZWwvcWRuYjN2eXBidWNiY2Y3Y2gyaHNqYmVv
M2hxYjViaDR3aG9pbmw1eGdsZ2dwdDdiN3RAaWdyeWZuY2R1cGRwLwoKSG1tLCBJJ2Qgc2F5IHNv
LCB5ZWFoLiBUaGUgb3JpZ2luYWwgbWVzc2FnZSBpc24ndCBvbiBsb3JlIGFwcGFyZW50bHksIHNv
CkknbGwgc2VlIGlmIEkgY2FuIGRpZyB0aGlzIHVwIGluIG15IG1haWxib3ggbGF0ZXIuCgo+Cj4g
Pwo+Cj4gPiArCj4gPiArICAgIG15ICgkdnR5cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAk
YmFzZXZtaWQsICRpc0Jhc2UsICRmb3JtYXQpCj4gPiArCT0gJHBsdWdpbi0+cGFyc2Vfdm9sbmFt
ZSgkdm9sbmFtZSk7Cj4gPiArCj4gPiArTm90IGFsbCBwYXJ0cyBuZWVkIHRvIGJlIGluY2x1ZGVk
IGluIHRoZSBsaXN0LiBUaG9zZSBtYXJrZWQgYXMgSTxvcHRpb25hbD4KPiA+ICtpbiB0aGUgbGlz
dCBiZWxvdyBtYXkgYmUgc2V0IHRvIEM8dW5kZWY+IGlmIG5vdCBhcHBsaWNhYmxlLgo+ID4gKwo+
ID4gK1RoaXMgbWV0aG9kIG1heSBDPGRpZT4gaW4gY2FzZSBvZiBlcnJvcnMuCj4KPiBzL21heS9z
aG91bGQvID8KPgo+ID4gKwo+ID4gKz1vdmVyCj4gPiArCj4gPiArPWl0ZW0gKiBDPDwgJHZ0eXBl
ID4+Cj4gPiArCj4gPiArVGhlIGNvbnRlbnQgdHlwZSAoInZvbHVtZSB0eXBlIikgb2YgdGhlIHZv
bHVtZSwgZS5nLiBDPCJpbWFnZXMiPiwgQzwiaXNvIj4sCj4gPiArZXRjLgo+Cj4gY29udGVudCB0
eXBlICE9IHZvbHVtZSB0eXBlISB0aGUgdHdvIGFyZSByZWxhdGVkIG9idmlvdXNseSwgYnV0IHRo
ZQo+IHZhbHVlcyBhcmUgc3VidGx5IGRpZmZlcmVudCBmb3IgaW1hZ2VzIGZvciBoaXN0b3JpYyBy
ZWFzb25zLgoKT2gsIHJpZ2h0LiBUaGFua3MgZm9yIHBvaW50aW5nIHRoaXMgb3V0ISBJJ2xsIHNl
ZSBpZiBJIGNhbiBub3RlIGRvd24KdGhvc2UgZGlmZmVyZW5jZXMgc29tZXdoZXJlLgoKPgo+ID4g
Kwo+ID4gK1NlZSBDPEw8PCBwbHVnaW5kYXRhKCl8LyIkcGx1Z2luLT5wbHVnaW5kYXRhKCkiID4+
PiBmb3IgYWxsIGNvbnRlbnQgdHlwZXMuCj4gPiArCj4gPiArPWl0ZW0gKiBDPDwgJG5hbWUgPj4K
PiA+ICsKPiA+ICtUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSB2b2x1bWUuIFRoaXMgaXMgdXN1YWxs
eSB3aGF0IHRoZSB1bmRlcmx5aW5nIHN0b3JhZ2UKPiA+ICtpdHNlbGYgdXNlcyB0byBhZGRyZXNz
IHRoZSB2b2x1bWUuCj4KPiBJZGVhbGx5LCB0aGlzIG1hcHMgZGlyZWN0bHkgdG8gc29tZSBlbnRp
dHkgb24gdGhlIHVuZGVybHlpbmcgc3RvcmFnZS4KPgo+ID4gKwo+ID4gK0ZvciBleGFtcGxlLCBk
aXNrcyBmb3IgdmlydHVhbCBtYWNoaW5lcyB0aGF0IGFyZSBzdG9yZWQgb24gTFZNIHRoaW4gcG9v
bHMgYXJlCj4gPiArbmFtZWQgQzx2bS0xMDAtZGlzay0wPiwgQzx2bS0xMzM3LWRpc2stMT4sIGV0
Yy4gVGhhdCB3b3VsZCBiZSB0aGUgQzwkbmFtZT4gaW4KPiA+ICt0aGlzIGNhc2UuCj4KPiBUaGlz
IGlzIHJhdGhlciBpbXByZWNpc2UsIG1heWJlIGp1c3Qgc2F5Cj4KPiBGb3IgZXhhbXBsZSwgYSBn
dWVzdCB2b2x1bWUgbmFtZWQgQzx2bS0xMDAtZGlzay0wPiBzdG9yZWQgb24gYW4gTFZNIHRoaW4K
PiBwb29sIHdpbGwgcmVmZXIgdG8gYSB0aGluIExWIG9mIHRoZSBzYW1lIG5hbWUuCj4KPiA+ICsK
PiA+ICs9aXRlbSAqIEM8PCAkdm1pZCA+PiAob3B0aW9uYWwpCj4gPiArCj4gPiArVGhlIElEIG9m
IHRoZSBndWVzdCB0aGF0IG93bnMgdGhlIHZvbHVtZS4KPgo+IHNob3VsZCBtYXliZSBub3RlIHRo
YXQgdGhpcyBtdXN0IGJlIHNldCBmb3IgYGltYWdlc2Agb3IgYGJhY2t1cGAsIGFuZAo+IG11c3Qg
bm90IGJlIHNldCBmb3IgdGhlIG90aGVyIHZ0eXBlcz8KPgo+ID4gKwo+ID4gKz1pdGVtICogQzw8
ICRiYXNlbmFtZSA+PiAob3B0aW9uYWwpCj4gPiArCj4gPiArVGhlIEM8JG5hbWU+IG9mIHRoZSB2
b2x1bWUgdGhpcyB2b2x1bWUgaXMgYmFzZWQgb24uIFdoZXRoZXIgdGhpcyBwYXJ0Cj4gPiAraXMg
cmV0dXJuZWQgb3Igbm90IGRlcGVuZHMgb24gdGhlIHBsdWdpbiBhbmQgdW5kZXJseWluZyBzdG9y
YWdlLgo+Cj4gVGhlIEM8JG5hbWU+IG9mIHRoaXMgdm9sdW1lJ3MgYmFzZSB2b2x1bWUsIGlmIGl0
IGlzIGEgbGlua2VkIGNsb25lLgo+Cj4gPwo+Cj4gPiArT25seSBhcHBsaWVzIHRvIGRpc2sgaW1h
Z2VzLgo+ID4gKwo+ID4gK0ZvciBleGFtcGxlLCBvbiBaRlMsIGlmIHRoZSBWTSBpcyBhIGxpbmtl
ZCBjbG9uZSwgQzwkYmFzZW5hbWU+IHJlZmVycwo+ID4gK3RvIHRoZSBDPCRuYW1lPiBvZiB0aGUg
b3JpZ2luYWwgZGlzayB2b2x1bWUgdGhhdCB0aGUgcGFyc2VkIGRpc2sgdm9sdW1lCj4gPiArY29y
cmVzcG9uZHMgdG8uCj4KPiBpdCBpcyBvbmx5IHVzZWQgZm9yIHRoYXQsIGFuZCBoYXMgdGhpcyBz
ZW1hbnRpYyBhY3Jvc3MgYWxsIHN0b3JhZ2VzLAo+IHJpZ2h0PwoKQUZBSVIgeWVzLiBCdXQgbm93
IHlvdSBtYWRlIG1lIGNoZWNrIGFnYWluIHNvb24uIDpQCgo+Cj4gPiArCj4gPiArPWl0ZW0gKiBD
PDwgJGJhc2V2bWlkID4+IChvcHRpb25hbCkKPiA+ICsKPiA+ICtFcXVpdmFsZW50IHRvIEM8JGJh
c2VuYW1lPiwgZXhjZXB0IHRoYXQgQzwkYmFzZXZtaWQ+IHJlZmVycyB0byB0aGUKPiA+ICtDPCR2
bWlkPiBvZiB0aGUgb3JpZ2luYWwgZGlzayB2b2x1bWUgaW5zdGVhZC4KPgo+IHMvb3JpZ2luYWwv
YmFzZQo+Cj4gPiArCj4gPiArPWl0ZW0gKiBDPDwgJGlzQmFzZSA+PiAob3B0aW9uYWwpCj4gPiAr
Cj4gPiArV2hldGhlciB0aGUgdm9sdW1lIGlzIGEgYmFzZSBkaXNrIGltYWdlLgo+ID4gKwo+ID4g
Kz1pdGVtICogQzw8ICRmb3JtYXQgPj4KPiA+ICsKPiA+ICtUaGUgZm9ybWF0IG9mIHRoZSB2b2x1
bWUuIElmIHRoZSB2b2x1bWUgaXMgYSBWTSBkaXNrIChDPCR2dHlwZT4gaXMKPiA+ICtDPCJpbWFn
ZXMiPiksIHRoaXMgc2hvdWxkIGJlIHdoYXRldmVyIGZvcm1hdCB0aGUgZGlzayBpcyBpbi4gRm9y
IG1vc3QKPiA+ICtvdGhlciBjb250ZW50IHR5cGVzIEM8InJhdyI+IHNob3VsZCBiZSB1c2VkLgo+
Cj4gImltYWdlcyIgaXMgY3VycmVudGx5IGFsc28gZm9yIGNvbnRhaW5lciB2b2x1bWVzLi4gaW1w
b3J0IHZvbHVtZXMgYWxzbwo+IGhhdmUgYSBmb3JtYXQuLgoKWWVhaCwgV29sZmdhbmcgYWxzbyB0
b2xkIG1lIHRoaXMgbGFzdCB3ZWVrIGEgbGl0dGxlIGFmdGVyIEkgc2VudCBpbiB0aGlzCnNlcmll
cy4gV2lsbCBjb3JyZWN0IHRoZSBkb2NzLgoKPgo+ID4gKwo+ID4gK1NlZSBDPEw8PCBwbHVnaW5k
YXRhKCl8LyIkcGx1Z2luLT5wbHVnaW5kYXRhKCkiID4+PiBmb3IgYWxsIGZvcm1hdHMuCj4gPiAr
Cj4gPiArPWJhY2sKPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHBhcnNlX3ZvbG5hbWUg
ewo+ID4gICAgICBteSAoJGNsYXNzLCAkdm9sbmFtZSkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImlt
cGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1
Z2luLT5nZXRfc3ViZGlyKFwlc2NmZywgJHZ0eXBlKQo+Cj4gSSBhbSBub3Qgc3VyZSBhYm91dCB0
aGlzIG9uZSBsb25nLXRlcm0uLiB3aGlsZSB0aGUgaW50ZXJmYWNlIGlzIGdlbmVyaWMKPiBlbm91
Z2gsIGl0IGlzIG9ubHkgdXNlZCBmb3IgdGhlIGhlbHBlcnMgaW4gUFZFOjpTdG9yYWdlIHdoaWNo
IGFyZSBpbgo+IHR1cm4gdXNlZCBmb3IKPiAtIHVwbG9hZGluZy9kb3dubG9hZCB0aGluZ3MgKHRl
bXBsYXRlcywgaXNvIGZpbGVzLCAuLikKPiAtIGNyZWF0aW5nIGJhY2t1cCBhcmNoaXZlcyAob3Ig
cmF0aGVyLCBnZXR0aW5nIHRoZSBwYXRoIHRvIHRoZSBkdW1wIGRpcgo+ICAgdG8gY3JlYXRlIHRo
ZW0pCj4KPiA+ICsKPiA+ICtCPFNJVFVBVElPTkFMOj4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBs
ZW1lbnRlZCBmb3IgZmlsZS1iYXNlZCBzdG9yYWdlcy4KPgo+IHMvZmlsZS1iYXNlZC9kaXItYmFz
ZWQKPgo+ID8KPgo+ID4gKwo+ID4gK1JldHVybnMgdGhlIHBhdGggdG8gdGhlIHN1Yi1kaXJlY3Rv
cnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb250ZW50IHR5cGUKPiA+ICsoQzwkdnR5cGU+
KS4gU2VlIEM8TDw8IHBsdWdpbmRhdGEoKXwvIiRwbHVnaW4tPnBsdWdpbmRhdGEoKSIgPj4+IGZv
ciBhbGwKPiA+ICtjb250ZW50IHR5cGVzLgo+Cj4gYWdhaW4sIHRoaXMgaXMgdnR5cGUgbm90IGNv
bnRlbnQgdHlwZS4uCj4KPiA+ICsKPiA+ICtUaGUgZGVmYXVsdCBkaXJlY3RvcnkgbGF5b3V0IGlz
IHByZWRlZmluZWQgYW5kIG11c3Qgbm90IGJlIGFsdGVyZWQ6Cj4gPiArCj4gPiArICAgIG15ICR2
dHlwZV9zdWJkaXJzID0gewo+ID4gKwlpbWFnZXMgICA9PiAnaW1hZ2VzJywKPiA+ICsJcm9vdGRp
ciAgPT4gJ3ByaXZhdGUnLAo+ID4gKwlpc28gICAgICA9PiAndGVtcGxhdGUvaXNvJywKPiA+ICsJ
dnp0bXBsICAgPT4gJ3RlbXBsYXRlL2NhY2hlJywKPiA+ICsJYmFja3VwICAgPT4gJ2R1bXAnLAo+
ID4gKwlzbmlwcGV0cyA9PiAnc25pcHBldHMnLAo+ID4gKwlpbXBvcnQgICA9PiAnaW1wb3J0JywK
PiA+ICsgICAgfTsKPiA+ICsKPiA+ICtTZWUgYWxzbzogTDxTdG9yYWdlOiBEaXJlY3Rvcnl8Imh0
dHBzOi8vcHZlLnByb3htb3guY29tL3dpa2kvU3RvcmFnZTpfRGlyZWN0b3J5Ij4KPiA+ICsKPiA+
ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIGdldF9zdWJkaXIgewo+ID4gICAgICBteSAoJGNsYXNzLCAk
c2NmZywgJHZ0eXBlKSA9IEBfOwo+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1Yi1j
bGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiArPWhlYWQzICRwbHVnaW4tPmZpbGVzeXN0ZW1fcGF0
aChcJXNjZmcsICR2b2xuYW1lIFssICRzbmFwbmFtZV0pCj4gPiArCj4gPiArPWhlYWQzICRwbHVn
aW4tPmZpbGVzeXN0ZW1fcGF0aCguLi4pCj4gPiArCj4gPiArQjxTSVRVQVRJT05BTDo+IFRoaXMg
bWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgZm9yIGZpbGUtYmFzZWQgc3RvcmFnZXMuCj4KPiBm
aWxlL2Rpcgo+Cj4gPiArCj4gPiArUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvbiB0aGUgZmls
ZXN5c3RlbSBmb3IgdGhlIGdpdmVuIHZvbHVtZSBvciBzbmFwc2hvdC4KPiA+ICtJbiBsaXN0IGNv
bnRleHQsIHJldHVybnMgcGF0aCwgZ3Vlc3QgSUQgYW5kIGNvbnRlbnQgdHlwZToKPgo+IGNvbnRl
bnQvdm9sdW1lCj4KPiBidXQgLSB0aGlzIGlzIG5vdCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBwbHVn
aW4gQVBJLiBpdCBqdXN0IGxvb2tzIGxpa2UgaXQKPiBiZWNhdXNlIFBsdWdpbidzIGltcGxlbWVu
dGF0aW9uIG9mIHBhdGggKHdoaWNoIGlzIHRoZSBhY3R1YWwgQVBJKSBjYWxscwo+IGl0LCBhbmQg
dGh1cyBwbHVnaW5zIGRlcml2ZWQgZnJvbSB0aGF0IGJhc2UgaW1wbGVtZW50IG9yIGNhbGwgaXQg
YXMKPiB3ZWxsLgo+Cj4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgaWYgeW91IHdhbnQgYSBmaWxlIG9y
IGJsb2NrZGV2IHBhdGggZm9yIGEgZ2l2ZW4KPiB2b2xpZCBpcyBQVkU6OlN0b3JhZ2U6OmFic19m
aWxlc3lzdGVtX3BhdGgsIHdoaWNoIGludGVybmFsbHkgYWxzbyBjYWxscwo+IHRoZSBwbHVnaW4n
cyBgcGF0aGAgbWV0aG9kLCBub3QgdGhlIG5vbi1wdWJsaWMgYGZpbGVzeXN0ZW1fcGF0aGAuCj4K
PiA+ICsKPiA+ICsgICAgbXkgJHBhdGggPSAkcGx1Z2luLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcs
ICR2b2xuYW1lLCAkc25hcG5hbWUpCj4gPiArICAgIG15ICgkcGF0aCwgJHZtaWQsICR2dHlwZSkg
PSAkcGx1Z2luLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lLCAkc25hcG5hbWUpCj4g
PiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiBmaWxlc3lzdGVtX3BhdGggewo+ID4gICAgICBt
eSAoJGNsYXNzLCAkc2NmZywgJHZvbG5hbWUsICRzbmFwbmFtZSkgPSBAXzsKPiA+ICAgICAgY3Jv
YWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFk
MyAkcGx1Z2luLT5wYXRoKFwlc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkIFssICRzbmFwbmFtZV0p
Cj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkgc3Rv
cmFnZSBwbHVnaW4uCj4gPiArCj4gPiArUmV0dXJucyBhIHVuaXF1ZSBwYXRoIHRoYXQgcG9pbnRz
IHRvIHRoZSBnaXZlbiB2b2x1bWUgb3Igc25hcHNob3QgZGVwZW5kaW5nCj4gPiArb24gdGhlIHVu
ZGVybHlpbmcgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbi4gRm9yIGZpbGUtYmFzZWQgc3RvcmFnZXMs
IHRoaXMKPiA+ICttZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgc2FtZSBhcyBDPEw8PCBmaWxlc3lz
dGVtX3BhdGgoKXwvIiRwbHVnaW4tPmZpbGVzeXN0ZW1fcGF0aCguLi4pIiA+Pj4uCj4KPiB0aGlz
IGlzIGludmVydGVkIChzZWUgYWJvdmUpLiBpdCBzaG91bGQgYWxzbyBub3RlIHRoYXQgaWYgdGhl
cmUgaXMgYW4KPiBhY3R1YWwgcGF0aCBjb3JyZXNwb25kaW5nIHRvIGEgdm9sdW1lLCBpdCBzaG91
bGQgcmV0dXJuIHRoYXQsIGJ1dCB0aGF0Cj4gaXQgY2FuIGFsc28gcmV0dXJuIHNvbWV0aGluZyBl
bHNlIHRoYXQgUWVtdSB1bmRlcnN0YW5kcyBpbiBsaWV1IG9mIGEKPiByZWFsIHBhdGguCj4KPiBp
ZiBtdWx0aXBsZSBwYXRocyBleGlzdCwgaXQgc2hvdWxkIHJldHVybiB0aGUgbW9zdCBzcGVjaWZp
Yy91bmlxdWUgb25lCj4gdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIG11bHRpcGxlIHBsdWdp
biBpbnN0YW5jZXMgb2YgdGhlIHNhbWUKPiBzdG9yYWdlIHR5cGUuCj4KPiA+ICsKPiA+ICs9Y3V0
Cj4gPiArCj4gPiAgc3ViIHBhdGggewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5h
bWUsICRzdG9yZWlkLCAkc25hcG5hbWUpID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQg
bWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+Zmlu
ZF9mcmVlX2Rpc2tuYW1lKCRzdG9yZWlkLCBcJXNjZmcsICR2bWlkIFssICRmbXQsICRhZGRfZm10
X3N1ZmZpeF0pCj4gPiArCj4gPiArPWhlYWQzICRwbHVnaW4tPmZpbmRfZnJlZV9kaXNrbmFtZSgu
Li4pCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkg
c3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArRmluZHMgYW5kIHJldHVybnMgdGhlIG5leHQgYXZh
aWxhYmxlIGRpc2sgbmFtZSwgdGhhdCBpcywgdGhlIHZvbHVtZSBuYW1lCj4gPiArKEM8JHZvbG5h
bWU+KSBmb3IgYSBuZXcgZGlzayBpbWFnZS4gT3B0aW9uYWxseSwgQzwkZm10PiBzcGVjaWZpZXMg
dGhlCj4gPiArZm9ybWF0IG9mIHRoZSBkaXNrIGltYWdlIGFuZCBDPCRhZGRfZm10X3N1ZmZpeD4g
ZGVub3RlcyB3aGV0aGVyIEM8JGZtdD4KPiA+ICtzaG91bGQgYmUgYWRkZWQgYXMgc3VmZml4IHRv
IHRoZSByZXN1bHRpbmcgbmFtZS4KPgo+IHNpbWlsYXJseSwgdGhpcyBpcyBub3QgYWN0dWFsbHkg
cGFydCBvZiB0aGUgcGx1Z2luIEFQSSwgaXQgaXMgYW4KPiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwg
b2YgdGhlIGV4aXN0aW5nIHBsdWdpbiBoaWVyYXJjaHkuIGl0IGlzIGN1cnJlbnRseQo+IGNhbGxl
ZCBieSBQbHVnaW4ncyBjbG9uZSwgYWxsb2NhdGUgYW5kIHJlbmFtZSBmdW5jdGlvbmFsaXR5LCBz
byBpZiB5b3UKPiBkb24ndCBpbXBsZW1lbnQvb3ZlcnJpZGUgaXQgeW91IG5lZWQgdG8gYWxzbyBv
dmVycmlkZSB0aG9zZSAod2hpY2ggeW91Cj4gbGlrZWx5IG5lZWQgdG8gZG8gaW4gYW55IGNhc2Uu
LikuCj4KPiB0aGVzZSB0d28gYXJlIGFjdHVhbGx5IGEgZ29vZCBleGFtcGxlIG9mIHdoYXQgSSBt
ZWFudCB3aXRoIHRoZSBtZXNzaW5lc3MKPiBvZiBQbHVnaW4ucG0gbGVha2luZyBpZiB3ZSBjb250
aW51ZSBkZXJpdmluZyAqYWxsKiBwbHVnaW5zIGZyb20gaXQsCj4gaW5jbHVkaW5nIG5ldyBleHRl
cm5hbCBvbmVzLi4KCi4uLiBZZWFoLCB0aGlzIGp1c3QgcmVhZmZpcm1zIG15IHN0YW5jZSB0aGF0
IGEgcHJvcGVyIGludmVzdGlnYXRpdmUgbG9vawphbmQgZG9jdW1lbnRhdGlvbiBmb3IgYWxsIG9m
IHRoaXMgKnJlYWxseSogbmVjZXNzYXJ5LiBFdmVuIGFmdGVyIHRoaXMKZGlnaXRhbCBhcmNoYWVv
bG9neSB0b3VyIHdlJ3ZlIGFwcGFyZW50bHkgbWlzc2VkIGEgbG90IG9mIGRldGFpbHMsIG9yIGlu
CnRoZSBjYXNlIG9mIHRoZSB0d28gbWV0aG9kcyBhYm92ZSwgaW5jbHVkZWQgZGV0YWlscyB0aGF0
IGFyZW4ndCBhY3R1YWxseQpwYXJ0IG9mIHRoZSBwbHVnaW4gQVBJLgoKVGhhbmtzIGZvciBnb2lu
ZyB0aHJvdWdoIGFsbCBvZiB0aGlzLCBieSB0aGUgd2F5IC0tIGl0J3MgcmVhbGx5IGhpZ2hseQph
cHByZWNpYXRlZCEKCj4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIGZpbmRfZnJlZV9k
aXNrbmFtZSB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICRm
bXQsICRhZGRfZm10X3N1ZmZpeCkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBp
biBzdWItY2xhc3NcbiI7Cj4gPiAtLSAKPiA+IDIuMzkuNQo+ID4gCj4gPiAKPiA+IAo+ID4gX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IHB2ZS1kZXZl
bCBtYWlsaW5nIGxpc3QKPiA+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+ID4gaHR0cHM6
Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCj4g
PiAKPiA+IAo+ID4gCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3Rp
bmZvL3B2ZS1kZXZlbAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNv
bQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUt
ZGV2ZWwK