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 [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 940911FF15C
	for <inbox@lore.proxmox.com>; Wed, 13 Nov 2024 15:04:51 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 5D06816C77;
	Wed, 13 Nov 2024 15:04:52 +0100 (CET)
Message-ID: <5e99d832-50b3-475a-a886-ff83f0c007a1@proxmox.com>
Date: Wed, 13 Nov 2024 15:04:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>,
 Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>
References: <20241105140153.282980-1-c.ebner@proxmox.com>
 <20241105140153.282980-5-c.ebner@proxmox.com>
 <1731330267.220wgkqhtc.astroid@yuna.none>
 <39def709-3df0-4182-8179-8be4022f0f9e@proxmox.com>
 <1731506079.pge8n3f5vc.astroid@yuna.none>
Content-Language: en-US, de-DE
From: Christian Ebner <c.ebner@proxmox.com>
In-Reply-To: <1731506079.pge8n3f5vc.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.370 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
 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
Subject: Re: [pbs-devel] [PATCH proxmox-backup 4/4] fix #5853: client: pxar:
 exclude stale files on metadata read
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>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

T24gMTEvMTMvMjQgMTQ6NTUsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4gT24gTm92ZW1i
ZXIgMTMsIDIwMjQgMjo0NSBwbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+PiBPbiAxMS8xMS8y
NCAxNDozNywgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4+IGJlaGF2aW91ciB3aXNlIHRo
aXMgc2VlbXMgb2theSB0byBtZSwgYnV0IGlmIHBvc3NpYmxlLCBJJ2QgYXZvaWQgYWxsIHRoZQo+
Pj4gcmV0dXJuIHZhbHVlIHR1cGxlcywgc2VlIGRldGFpbGVkIGNvbW1lbnRzIGJlbG93Li4KPj4K
Pj4gQWdyZWVkLCBJIGFtIG5vdCBhIGZhbiBvZiBwYXNzaW5nIHRoZSBzdGFsZSBmaWxlIGhhbmRs
ZSBlcnJvciBpbmZvIGFsb25nCj4+IGEgdGhlIGJvb2xlYW4gaW4gdGhlIHJldHVybiB2YWx1ZSBh
cyB3ZWxsLgo+Pgo+PiBCdXQgdW5mb3J0dW5hdGVseSBwYXNzaW5nIGFsb25nIHRoZSBlcnJvciB3
aXRob3V0IGxvb3NpbmcgcHJlLWV4aXN0aW5nCj4+IGVycm9yIGNvbnRleHQgYW5kIHN3aXRjaGlu
ZyBhbGwgdGhlIGBnZXRfbWV0YWRhdGFgIHJlbGF0ZWQgZnVuY3Rpb25zIHRvCj4+IHJldHVybiBh
biBgRXJybm9gIGlzIG5vdCBwb3NzaWJsZSBhcyBpcy4KPj4KPj4gRS5nLiBgcHJvY2Vzc19hY2xg
IHJldHVybnMgYW4gYGFueWhvdzo6RXJyb3JgIChjb3VsZCBiZSBkZWZpbmVkIHRvCj4+IHJldHVy
biBhbiBlLmcuIGBFcnJubzo6RUlOVkFMSURgIGluc3RlYWQ/KSwgc3BlY2lhbCBoYW5kbGluZyBv
Zgo+PiBgRXJybm86OkUyQklHYCBmb3IgdGhlIHhhdHRyIGNhc2Ugb25seSwgLi4uCj4+Cj4+IFRo
ZSBjdXJyZW50IGFwcHJvYWNoIHdhcyBjaG9vc2VuIHRvIGtlZXAgdGhlIGN1cnJlbnQgYW55aG93
IGVycm9yCj4+IGNvbnRleHQgY2xvc2UgdG8gdGhlIGFjdHVhbCBlcnJvcnMgd2hlbiB0aGV5IG9j
Y3VyLgo+IAo+IEkgdGhpbmsgdGhhdCBzaG91bGQgYmUgc29sdmFibGUgd2l0aCBzb21lIHJlZmFj
dG9yaW5nL2RlZmluaW5nIG9mIGEKPiBwcm9wZXIgZXJyb3IgdHlwZS4uCj4gCj4gYnV0IHlvdSBj
YW4gYWxzbyBhdHRlbXB0IHRvIGRvd25jYXN0IHRoZSBhbnlob3cgZXJyb3IgdG8gZ2V0IHRoZSBF
U1RBTEU/CgpBaCB0cnVlLCB0aGFua3MgZm9yIHRoZSBwb2ludGVyIQoKSSB3aWxsIHNlbmQgYSBu
ZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2hlcyBpbmNvcnBvcmF0aW5nIHlvdXIgZmVlZGJhY2suCgo+
IAo+PiAgICA+IE9uIE5vdmVtYmVyIDUsIDIwMjQgMzowMSBwbSwgQ2hyaXN0aWFuIEVibmVyIHdy
b3RlOgo+Pj4+IFNraXAgYW5kIHdhcm4gdGhlIHVzZXIgZm9yIGZpbGVzIHdoaWNoIHJldHVybmVk
IGEgc3RhbGUgZmlsZSBoYW5kbGUKPj4+PiBlcnJvciB3aGlsZSByZWFkaW5nIHRoZSBtZXRhZGF0
YSBhc3NvY2lhdGVkIHRvIHRoYXQgZmlsZS4KPj4+Pgo+Pj4+IEluc3RlYWQgb2YgcmV0dXJuaW5n
IHdpdGggYW4gZXJyb3Igd2hlbiBnZXR0aW5nIHRoZSBtZXRhZGF0YSwgcmV0dXJuCj4+Pj4gYSBi
b29sZWFuIGZsYWcgc2lnbmFsaW5nIGlmIGEgc3RhbGUgZmlsZSBoYW5kbGUgaGFzIGJlZW4gZW5j
b3VudGVyZWQuCj4+Pj4KPj4+PiBMaW5rIHRvIGlzc3VlIGluIGJ1Z3RyYWNrZXI6Cj4+Pj4gaHR0
cHM6Ly9idWd6aWxsYS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTg1Mwo+Pj4+Cj4+Pj4g
TGluayB0byB0aHJlYWQgaW4gY29tbXVuaXR5IGZvcnVtOgo+Pj4+IGh0dHBzOi8vZm9ydW0ucHJv
eG1veC5jb20vdGhyZWFkcy8xNTY4MjIvCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rp
YW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4+Pj4gLS0tCj4+Pj4gICAgcGJzLWNsaWVu
dC9zcmMvcHhhci9jcmVhdGUucnMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLQo+Pj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlv
bnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9wYnMtY2xpZW50L3NyYy9weGFyL2NyZWF0ZS5y
cyBiL3Bicy1jbGllbnQvc3JjL3B4YXIvY3JlYXRlLnJzCj4+Pj4gaW5kZXggMmE4NDQ5MjJjLi44
NWJlMDBkYjQgMTAwNjQ0Cj4+Pj4gLS0tIGEvcGJzLWNsaWVudC9zcmMvcHhhci9jcmVhdGUucnMK
Pj4+PiArKysgYi9wYnMtY2xpZW50L3NyYy9weGFyL2NyZWF0ZS5ycwo+Pj4+IEBAIC0yMjgsNyAr
MjI4LDcgQEAgd2hlcmUKPj4+PiAgICAgICAgbGV0IG11dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxh
Z3M6OmZyb21fbWFnaWMoZnNfbWFnaWMpOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICBsZXQgc3RhdCA9
IG5peDo6c3lzOjpzdGF0Ojpmc3RhdChzb3VyY2VfZGlyLmFzX3Jhd19mZCgpKT87Cj4+Pj4gLSAg
ICBsZXQgbWV0YWRhdGEgPSBnZXRfbWV0YWRhdGEoCj4+Pj4gKyAgICBsZXQgKG1ldGFkYXRhLCBz
dGFsZV9mZCkgPSBnZXRfbWV0YWRhdGEoCj4+Pgo+Pj4gc3RhbGVfZmQgaGVyZSBpcyBub3QgdXNl
ZCBhdCBhbGwuLgo+Pgo+PiBZZXMsIHRoYXQgb25lIHNob3VsZCBsZWFkIHRvIGEgaGFyZCBlcnJv
ciBhcyB5b3UgbWVudGlvbmVkLCBzbyBzaG91bGQgYmUKPj4gaGFuZGxlZCBhY2NvcmRpbmdseS4g
SSB3aWxsIGFkYXB0IHRoaXMgdG8gYmUgYSBoYXJkIGVycm9yLgo+Pgo+Pj4KPj4+PiAgICAgICAg
ICAgIHNvdXJjZV9kaXIuYXNfcmF3X2ZkKCksCj4+Pj4gICAgICAgICAgICAmc3RhdCwKPj4+PiAg
ICAgICAgICAgIGZlYXR1cmVfZmxhZ3MgJiBmc19mZWF0dXJlX2ZsYWdzLAo+Pj4+IEBAIC03NDQs
NyArNzQ0LDcgQEAgaW1wbCBBcmNoaXZlciB7Cj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIE9r
KCgpKTsKPj4+PiAgICAgICAgICAgIH0KPj4+PiAgICAKPj4+PiAtICAgICAgICBsZXQgbWV0YWRh
dGEgPSBnZXRfbWV0YWRhdGEoCj4+Pj4gKyAgICAgICAgbGV0IChtZXRhZGF0YSwgc3RhbGVfZmQp
ID0gZ2V0X21ldGFkYXRhKAo+Pj4KPj4+IHRoaXMgb25lIGlzIHVzZWQKPj4+Cj4+Pj4gICAgICAg
ICAgICAgICAgZmQuYXNfcmF3X2ZkKCksCj4+Pj4gICAgICAgICAgICAgICAgc3RhdCwKPj4+PiAg
ICAgICAgICAgICAgICBzZWxmLmZsYWdzKCksCj4+Pj4gQEAgLTc1Myw2ICs3NTMsMTEgQEAgaW1w
bCBBcmNoaXZlciB7Cj4+Pj4gICAgICAgICAgICAgICAgc2VsZi5za2lwX2UyYmlnX3hhdHRyLAo+
Pj4+ICAgICAgICAgICAgKT87Cj4+Pj4gICAgCj4+Pj4gKyAgICAgICAgaWYgc3RhbGVfZmQgewo+
Pj4+ICsgICAgICAgICAgICBsb2c6Ondhcm4hKCJTdGFsZSBmaWxlaGFuZGxlIGVuY291bnRlcmVk
LCBza2lwIHs6P30iLCBzZWxmLnBhdGgpOwo+Pj4+ICsgICAgICAgICAgICByZXR1cm4gT2soKCkp
Owo+Pj4+ICsgICAgICAgIH0KPj4+Cj4+PiBmb3IgdGhpcyB3YXJuaW5nLi4gYnV0IGdldF9tZXRh
ZGF0YSBhbHJlYWR5IGxvZ3MgKHBvdGVudGlhbGx5IG11bHRpcGxlCj4+PiB0aW1lcyA7KSkgdGhh
dCB0aGluZ3MgYXJlIGluY29tcGxldGUgY2F1c2Ugb2YgdGhlIHN0YWxlIGZpbGVoYW5kbGUsIHRo
aXMKPj4+IG9ubHkgYWRkcyB0aGUgcGF0aCBjb250ZXh0Li4KPj4KPj4gYnV0IGhlcmUgdGhlcmUg
aXMgYWxzbyBhbiBlYXJseSByZXR1cm4sIG5vdCBqdXN0IHRoZSBsb2cuLi4gdGhpcyBza2lwcwo+
PiBvdmVyIGFkZGluZyB0aGlzIGVudHJ5LCBhbmQgYW55IHN1YiBlbnRyaWVzIGlmIHRoZSBlbnRy
eSBpcyBhIGRpcmVjdG9yeS4KPj4KPj4gVGhlIGxvZ2dpbmcgY291bGQgaG93ZXZlciBiZSBtb3Zl
ZCB0byB0aGUgZ2V0X21ldGFkYXRhIGNhbGwgYW5kIG9ubHkgYmUKPj4gbG9nZ2VkIG9uY2UsIGFn
cmVlZC4KPj4KPj4+Cj4+Pj4gKwo+Pj4+ICAgICAgICAgICAgaWYgc2VsZi5wcmV2aW91c19wYXls
b2FkX2luZGV4LmlzX25vbmUoKSB7Cj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKPj4+
PiAgICAgICAgICAgICAgICAgICAgLmFkZF9lbnRyeV90b19hcmNoaXZlKGVuY29kZXIsICZtdXQg
Tm9uZSwgY19maWxlX25hbWUsIHN0YXQsIGZkLCAmbWV0YWRhdGEsIE5vbmUpCj4+Pj4gQEAgLTEz
MDEsNyArMTMwNiwxNCBAQCBpbXBsIEFyY2hpdmVyIHsKPj4+PiAgICAgICAgICAgIGZpbGVfbmFt
ZTogJlBhdGgsCj4+Pj4gICAgICAgICAgICBtZXRhZGF0YTogJk1ldGFkYXRhLAo+Pj4+ICAgICAg
ICApIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4+PiAtICAgICAgICBsZXQgZGVzdCA9IG5peDo6
ZmNudGw6OnJlYWRsaW5rYXQoZmQuYXNfcmF3X2ZkKCksICZiIiJbLi5dKT87Cj4+Pj4gKyAgICAg
ICAgbGV0IGRlc3QgPSBtYXRjaCBuaXg6OmZjbnRsOjpyZWFkbGlua2F0KGZkLmFzX3Jhd19mZCgp
LCAmYiIiWy4uXSkgewo+Pj4+ICsgICAgICAgICAgICBPayhkZXN0KSA9PiBkZXN0LAo+Pj4+ICsg
ICAgICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gewo+Pj4+ICsgICAgICAgICAgICAgICAg
bG9nOjp3YXJuISgiU3RhbGUgZmlsZSBoYW5kbGUgZW5jb3VudGVyZWQsIHNraXAge2ZpbGVfbmFt
ZTo/fSIpOwo+Pj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9rKCgpKTsKPj4+PiArICAgICAg
ICAgICAgfQo+Pj4+ICsgICAgICAgICAgICBFcnIoZXJyKSA9PiByZXR1cm4gRXJyKGVyci5pbnRv
KCkpLAo+Pj4+ICsgICAgICAgIH07Cj4+Pj4gICAgICAgICAgICBlbmNvZGVyLmFkZF9zeW1saW5r
KG1ldGFkYXRhLCBmaWxlX25hbWUsIGRlc3QpLmF3YWl0PzsKPj4+PiAgICAgICAgICAgIE9rKCgp
KQo+Pj4+ICAgICAgICB9Cj4+Pj4gQEAgLTEzOTcsOSArMTQwOSwxMCBAQCBmbiBnZXRfbWV0YWRh
dGEoCj4+Pj4gICAgICAgIGZzX21hZ2ljOiBpNjQsCj4+Pj4gICAgICAgIGZzX2ZlYXR1cmVfZmxh
Z3M6ICZtdXQgRmxhZ3MsCj4+Pj4gICAgICAgIHNraXBfZTJiaWdfeGF0dHI6IGJvb2wsCj4+Pj4g
LSkgLT4gUmVzdWx0PE1ldGFkYXRhLCBFcnJvcj4gewo+Pj4+ICspIC0+IFJlc3VsdDwoTWV0YWRh
dGEsIGJvb2wpLCBFcnJvcj4gewo+Pj4+ICAgICAgICAvLyByZXF1aXJlZCBmb3Igc29tZSBvZiB0
aGVzZQo+Pj4+ICAgICAgICBsZXQgcHJvY19wYXRoID0gUGF0aDo6bmV3KCIvcHJvYy9zZWxmL2Zk
LyIpLmpvaW4oZmQudG9fc3RyaW5nKCkpOwo+Pj4+ICsgICAgbGV0IG11dCBzdGFsZV9mZCA9IGZh
bHNlOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICBsZXQgbXV0IG1ldGEgPSBNZXRhZGF0YSB7Cj4+Pj4g
ICAgICAgICAgICBzdGF0OiBweGFyOjpTdGF0IHsKPj4+PiBAQCAtMTQxMiwxOCArMTQyNSwyNyBA
QCBmbiBnZXRfbWV0YWRhdGEoCj4+Pj4gICAgICAgICAgICAuLkRlZmF1bHQ6OmRlZmF1bHQoKQo+
Pj4+ICAgICAgICB9Owo+Pj4+ICAgIAo+Pj4+IC0gICAgZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+
PiArICAgIGlmIGdldF94YXR0cl9mY2Fwc19hY2woCj4+Pgo+Pj4gb25seSBjYWxsIHNpdGUsIGNv
dWxkIGp1c3QgYnViYmxlIHVwIEVTVEFMRQo+Pgo+PiBBcyBtZW50aW9uZWQsIHRoaXMgaGFzIDIg
aXNzdWVzOiBMb3NzIG9mIGFueWhvdyBlcnJvciBjb250ZXh0IGZvciB3aGljaAo+PiBzdWItZnVu
Y3Rpb24gdGhlIEVycm5vIG9jY3VycmVkIGFuZCBzdWItZnVuY3Rpb25zIGxpa2UgYHByb2Nlc3Nf
YWNsYAo+PiB3aGljaCBkbyBub3QgcmVseSBvbiBmZmkgY2FsbHMgYXQgYWxsLCByZXR1cm5pbmcg
cGxhaW4gYGFueWhvdzo6RXJyb3JgLAo+PiB3aGljaCBncmFudGVkIGNvdWxkIGJlIHJlZGVmaW5l
ZCB0byByZXR1cm4gYW4gRXJybm8uCj4+Cj4+Pgo+Pj4+ICAgICAgICAgICAgJm11dCBtZXRhLAo+
Pj4+ICAgICAgICAgICAgZmQsCj4+Pj4gICAgICAgICAgICAmcHJvY19wYXRoLAo+Pj4+ICAgICAg
ICAgICAgZmxhZ3MsCj4+Pj4gICAgICAgICAgICBmc19mZWF0dXJlX2ZsYWdzLAo+Pj4+ICAgICAg
ICAgICAgc2tpcF9lMmJpZ194YXR0ciwKPj4+PiAtICAgICk/Owo+Pj4+IC0gICAgZ2V0X2NoYXR0
cigmbXV0IG1ldGEsIGZkKT87Cj4+Pj4gKyAgICApPyB7Cj4+Pj4gKyAgICAgICAgc3RhbGVfZmQg
PSB0cnVlOwo+Pj4+ICsgICAgICAgIGxvZzo6d2FybiEoIlN0YWxlIGZpbGVoYW5kbGUsIHhhdHRy
cyBpbmNvbXBsZXRlIik7Cj4+Pj4gKyAgICB9Cj4+Pj4gKyAgICBpZiBnZXRfY2hhdHRyKCZtdXQg
bWV0YSwgZmQpPyB7Cj4+Pgo+Pj4gc2FtZQo+Pj4KPj4+PiArICAgICAgICBzdGFsZV9mZCA9IHRy
dWU7Cj4+Pj4gKyAgICAgICAgbG9nOjp3YXJuISgiU3RhbGUgZmlsZWhhbmRsZSwgY2hhdHRyIGlu
Y29tcGxldGUiKTsKPj4+PiArICAgIH0KPj4+PiAgICAgICAgZ2V0X2ZhdF9hdHRyKCZtdXQgbWV0
YSwgZmQsIGZzX21hZ2ljKT87Cj4+Pj4gLSAgICBnZXRfcXVvdGFfcHJvamVjdF9pZCgmbXV0IG1l
dGEsIGZkLCBmbGFncywgZnNfbWFnaWMpPzsKPj4+PiAtICAgIE9rKG1ldGEpCj4+Pj4gKyAgICBp
ZiBnZXRfcXVvdGFfcHJvamVjdF9pZCgmbXV0IG1ldGEsIGZkLCBmbGFncywgZnNfbWFnaWMpPyB7
Cj4+Pgo+Pj4gc2FtZQo+Pj4KPj4+PiArICAgICAgICBzdGFsZV9mZCA9IHRydWU7Cj4+Pj4gKyAg
ICAgICAgbG9nOjp3YXJuISgiU3RhbGUgZmlsZWhhbmRsZSwgcXVvdGEgIHByb2plY3QgaWQgaW5j
b21wbGV0ZSIpOwo+Pj4+ICsgICAgfQo+Pj4KPj4+IHNlZSBhYm92ZSBhbmQgd2F5IGRvd24gYmVs
b3csIElNSE8gYWxsIG9mIHRoZXNlIGNvdWxkIGp1c3QgYnViYmxlIHVwIHRoZSBlcnJvci4uCj4+
Pgo+Pj4+ICsgICAgT2soKG1ldGEsIHN0YWxlX2ZkKSkKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4g
ICAgZm4gZ2V0X2ZjYXBzKAo+Pj4+IEBAIC0xNDMxLDIyICsxNDUzLDIzIEBAIGZuIGdldF9mY2Fw
cygKPj4+PiAgICAgICAgZmQ6IFJhd0ZkLAo+Pj4+ICAgICAgICBmbGFnczogRmxhZ3MsCj4+Pj4g
ICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3M6ICZtdXQgRmxhZ3MsCj4+Pj4gLSkgLT4gUmVzdWx0PCgp
LCBFcnJvcj4gewo+Pj4+ICspIC0+IFJlc3VsdDxib29sLCBFcnJvcj4gewo+Pj4KPj4+IHRoaXMg
aXMgb25seSBjYWxsZWQgYnkgZ2V0X3hhdHRyX2ZjYXBzX2FjbCwgc28gY291bGQganVzdCBidWJi
bGUgdXAKPj4+IEVTVEFMRSBhcyB3ZWxsLi4KPj4+Cj4+Pj4gICAgICAgIGlmICFmbGFncy5jb250
YWlucyhGbGFnczo6V0lUSF9GQ0FQUykgewo+Pj4+IC0gICAgICAgIHJldHVybiBPaygoKSk7Cj4+
Pj4gKyAgICAgICAgcmV0dXJuIE9rKGZhbHNlKTsKPj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+
ICAgICAgICBtYXRjaCB4YXR0cjo6ZmdldHhhdHRyKGZkLCB4YXR0cjo6WEFUVFJfTkFNRV9GQ0FQ
Uykgewo+Pj4+ICAgICAgICAgICAgT2soZGF0YSkgPT4gewo+Pj4+ICAgICAgICAgICAgICAgIG1l
dGEuZmNhcHMgPSBTb21lKHB4YXI6OmZvcm1hdDo6RkNhcHMgeyBkYXRhIH0pOwo+Pj4+IC0gICAg
ICAgICAgICBPaygoKSkKPj4+PiArICAgICAgICAgICAgT2soZmFsc2UpCj4+Pj4gICAgICAgICAg
ICB9Cj4+Pj4gLSAgICAgICAgRXJyKEVycm5vOjpFTk9EQVRBKSA9PiBPaygoKSksCj4+Pj4gKyAg
ICAgICAgRXJyKEVycm5vOjpFTk9EQVRBKSA9PiBPayhmYWxzZSksCj4+Pj4gICAgICAgICAgICBF
cnIoRXJybm86OkVPUE5PVFNVUFApID0+IHsKPj4+PiAgICAgICAgICAgICAgICBmc19mZWF0dXJl
X2ZsYWdzLnJlbW92ZShGbGFnczo6V0lUSF9GQ0FQUyk7Cj4+Pj4gLSAgICAgICAgICAgIE9rKCgp
KQo+Pj4+ICsgICAgICAgICAgICBPayhmYWxzZSkKPj4+PiAgICAgICAgICAgIH0KPj4+PiAtICAg
ICAgICBFcnIoRXJybm86OkVCQURGKSA9PiBPaygoKSksIC8vIHN5bWxpbmtzCj4+Pj4gKyAgICAg
ICAgRXJyKEVycm5vOjpFQkFERikgPT4gT2soZmFsc2UpLCAvLyBzeW1saW5rcwo+Pj4+ICsgICAg
ICAgIEVycihFcnJubzo6RVNUQUxFKSA9PiBPayh0cnVlKSwKPj4+PiAgICAgICAgICAgIEVycihl
cnIpID0+IEVycihlcnIpLmNvbnRleHQoImZhaWxlZCB0byByZWFkIGZpbGUgY2FwYWJpbGl0aWVz
IiksCj4+Pj4gICAgICAgIH0KPj4+PiAgICB9Cj4+Pj4gQEAgLTE0NTgsMzIgKzE0ODEsMzUgQEAg
Zm4gZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+PiAgICAgICAgZmxhZ3M6IEZsYWdzLAo+Pj4+ICAg
ICAgICBmc19mZWF0dXJlX2ZsYWdzOiAmbXV0IEZsYWdzLAo+Pj4+ICAgICAgICBza2lwX2UyYmln
X3hhdHRyOiBib29sLAo+Pj4+IC0pIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4+PiArKSAtPiBS
ZXN1bHQ8Ym9vbCwgRXJyb3I+IHsKPj4+PiAgICAgICAgaWYgIWZsYWdzLmNvbnRhaW5zKEZsYWdz
OjpXSVRIX1hBVFRSUykgewo+Pj4+IC0gICAgICAgIHJldHVybiBPaygoKSk7Cj4+Pj4gKyAgICAg
ICAgcmV0dXJuIE9rKGZhbHNlKTsKPj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+ICAgICAgICBs
ZXQgeGF0dHJzID0gbWF0Y2ggeGF0dHI6OmZsaXN0eGF0dHIoZmQpIHsKPj4+PiAgICAgICAgICAg
IE9rKG5hbWVzKSA9PiBuYW1lcywKPj4+PiAgICAgICAgICAgIEVycihFcnJubzo6RU9QTk9UU1VQ
UCkgPT4gewo+Pj4+ICAgICAgICAgICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3MucmVtb3ZlKEZsYWdz
OjpXSVRIX1hBVFRSUyk7Cj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBPaygoKSk7Cj4+Pj4gKyAg
ICAgICAgICAgIHJldHVybiBPayhmYWxzZSk7Cj4+Pj4gICAgICAgICAgICB9Cj4+Pj4gICAgICAg
ICAgICBFcnIoRXJybm86OkUyQklHKSA9PiB7Cj4+Pj4gICAgICAgICAgICAgICAgbWF0Y2ggc2tp
cF9lMmJpZ194YXR0ciB7Cj4+Pj4gLSAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPaygo
KSksCj4+Pj4gKyAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPayhmYWxzZSksCj4+Pj4g
ICAgICAgICAgICAgICAgICAgIGZhbHNlID0+IHsKPj4+PiAgICAgICAgICAgICAgICAgICAgICAg
IGJhaWwhKCJ7fSAodHJ5IC0tc2tpcC1lMmJpZy14YXR0cikiLCBFcnJubzo6RTJCSUcudG9fc3Ry
aW5nKCkpOwo+Pj4+ICAgICAgICAgICAgICAgICAgICB9Cj4+Pj4gICAgICAgICAgICAgICAgfTsK
Pj4+PiAgICAgICAgICAgIH0KPj4+PiAtICAgICAgICBFcnIoRXJybm86OkVCQURGKSA9PiByZXR1
cm4gT2soKCkpLCAvLyBzeW1saW5rcwo+Pj4+ICsgICAgICAgIEVycihFcnJubzo6RUJBREYpID0+
IHJldHVybiBPayhmYWxzZSksIC8vIHN5bWxpbmtzCj4+Pj4gKyAgICAgICAgRXJyKEVycm5vOjpF
U1RBTEUpID0+IHJldHVybiBPayh0cnVlKSwKPj4+Cj4+PiBzZWUgYWJvdmUKPj4+Cj4+Pj4gICAg
ICAgICAgICBFcnIoZXJyKSA9PiByZXR1cm4gRXJyKGVycikuY29udGV4dCgiZmFpbGVkIHRvIHJl
YWQgeGF0dHJzIiksCj4+Pj4gICAgICAgIH07Cj4+Pj4gICAgCj4+Pj4gICAgICAgIGZvciBhdHRy
IGluICZ4YXR0cnMgewo+Pj4+ICAgICAgICAgICAgaWYgeGF0dHI6OmlzX3NlY3VyaXR5X2NhcGFi
aWxpdHkoYXR0cikgewo+Pj4+IC0gICAgICAgICAgICBnZXRfZmNhcHMobWV0YSwgZmQsIGZsYWdz
LCBmc19mZWF0dXJlX2ZsYWdzKT87Cj4+Pj4gKyAgICAgICAgICAgIGlmIGdldF9mY2FwcyhtZXRh
LCBmZCwgZmxhZ3MsIGZzX2ZlYXR1cmVfZmxhZ3MpPyB7Cj4+Pj4gKyAgICAgICAgICAgICAgICBy
ZXR1cm4gT2sodHJ1ZSk7Cj4+Pgo+Pj4gc2VlIGFib3ZlCj4+Pgo+Pj4+ICsgICAgICAgICAgICB9
Cj4+Pj4gICAgICAgICAgICAgICAgY29udGludWU7Cj4+Pj4gICAgICAgICAgICB9Cj4+Pj4gICAg
Cj4+Pj4gQEAgLTE1MDUsMzUgKzE1MzEsMzcgQEAgZm4gZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+
PiAgICAgICAgICAgICAgICBFcnIoRXJybm86OkVCQURGKSA9PiAoKSwgICAvLyBzeW1saW5rcywg
c2hvdWxkbid0IGJlIGFibGUgdG8gcmVhY2ggdGhpcyBlaXRoZXIKPj4+PiAgICAgICAgICAgICAg
ICBFcnIoRXJybm86OkUyQklHKSA9PiB7Cj4+Pj4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNr
aXBfZTJiaWdfeGF0dHIgewo+Pj4+IC0gICAgICAgICAgICAgICAgICAgIHRydWUgPT4gcmV0dXJu
IE9rKCgpKSwKPj4+PiArICAgICAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPayhmYWxz
ZSksCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSA9PiB7Cj4+Pj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFpbCEoInt9ICh0cnkgLS1za2lwLWUyYmlnLXhhdHRyKSIsIEVy
cm5vOjpFMkJJRy50b19zdHJpbmcoKSk7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICB9Cj4+
Pj4gICAgICAgICAgICAgICAgICAgIH07Cj4+Pj4gICAgICAgICAgICAgICAgfQo+Pj4+ICsgICAg
ICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gcmV0dXJuIE9rKHRydWUpLCAvLyBzeW1saW5r
cwo+Pj4KPj4+IHNhbWUgaGVyZSAoYW5kIHN0cmF5IGNvcHktcGFzdGUgY29tbWVudCBJIGd1ZXNz
PykKPj4+Cj4+Pj4gICAgICAgICAgICAgICAgRXJyKGVycikgPT4gewo+Pj4+ICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRXJyKGVycikuY29udGV4dChmb3JtYXQhKCJlcnJvciByZWFkaW5nIGV4
dGVuZGVkIGF0dHJpYnV0ZSB7YXR0cjo/fSIpKQo+Pj4+ICAgICAgICAgICAgICAgIH0KPj4+PiAg
ICAgICAgICAgIH0KPj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+IC0gICAgT2soKCkpCj4+Pj4g
KyAgICBPayhmYWxzZSkKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4gLWZuIGdldF9jaGF0dHIobWV0
YWRhdGE6ICZtdXQgTWV0YWRhdGEsIGZkOiBSYXdGZCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+
Pj4+ICtmbiBnZXRfY2hhdHRyKG1ldGFkYXRhOiAmbXV0IE1ldGFkYXRhLCBmZDogUmF3RmQpIC0+
IFJlc3VsdDxib29sLCBFcnJvcj4gewo+Pj4+ICAgICAgICBsZXQgbXV0IGF0dHI6IGxpYmM6OmNf
bG9uZyA9IDA7Cj4+Pj4gICAgCj4+Pj4gICAgICAgIG1hdGNoIHVuc2FmZSB7IGZzOjpyZWFkX2F0
dHJfZmQoZmQsICZtdXQgYXR0cikgfSB7Cj4+Pj4gICAgICAgICAgICBPayhfKSA9PiAoKSwKPj4+
PiArICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gcmV0dXJuIE9rKHRydWUpLAo+Pj4+ICAg
ICAgICAgICAgRXJyKGVycm5vKSBpZiBlcnJub19pc191bnN1cHBvcnRlZChlcnJubykgPT4gewo+
Pj4+IC0gICAgICAgICAgICByZXR1cm4gT2soKCkpOwo+Pj4+ICsgICAgICAgICAgICByZXR1cm4g
T2soZmFsc2UpOwo+Pj4+ICAgICAgICAgICAgfQo+Pj4+ICAgICAgICAgICAgRXJyKGVycikgPT4g
cmV0dXJuIEVycihlcnIpLmNvbnRleHQoImZhaWxlZCB0byByZWFkIGZpbGUgYXR0cmlidXRlcyIp
LAo+Pj4+ICAgICAgICB9Cj4+Pj4gICAgCj4+Pj4gICAgICAgIG1ldGFkYXRhLnN0YXQuZmxhZ3Mg
fD0gRmxhZ3M6OmZyb21fY2hhdHRyKGF0dHIpLmJpdHMoKTsKPj4+PiAgICAKPj4+PiAtICAgIE9r
KCgpKQo+Pj4+ICsgICAgT2soZmFsc2UpCj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ICAgIGZuIGdl
dF9mYXRfYXR0cihtZXRhZGF0YTogJm11dCBNZXRhZGF0YSwgZmQ6IFJhd0ZkLCBmc19tYWdpYzog
aTY0KSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+Pj4gQEAgLTE1NjQsMzAgKzE1OTIsMzQgQEAg
Zm4gZ2V0X3F1b3RhX3Byb2plY3RfaWQoCj4+Pj4gICAgICAgIGZkOiBSYXdGZCwKPj4+PiAgICAg
ICAgZmxhZ3M6IEZsYWdzLAo+Pj4+ICAgICAgICBtYWdpYzogaTY0LAo+Pj4+IC0pIC0+IFJlc3Vs
dDwoKSwgRXJyb3I+IHsKPj4+PiArKSAtPiBSZXN1bHQ8Ym9vbCwgRXJyb3I+IHsKPj4+Cj4+PiBz
ZWUgYWJvdmUKPj4+Cj4+Pj4gICAgICAgIGlmICEobWV0YWRhdGEuaXNfZGlyKCkgfHwgbWV0YWRh
dGEuaXNfcmVndWxhcl9maWxlKCkpIHsKPj4+PiAtICAgICAgICByZXR1cm4gT2soKCkpOwo+Pj4+
ICsgICAgICAgIHJldHVybiBPayhmYWxzZSk7Cj4+Pj4gICAgICAgIH0KPj4+PiAgICAKPj4+PiAg
ICAgICAgaWYgIWZsYWdzLmNvbnRhaW5zKEZsYWdzOjpXSVRIX1FVT1RBX1BST0pJRCkgewo+Pj4+
IC0gICAgICAgIHJldHVybiBPaygoKSk7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIE9rKGZhbHNlKTsK
Pj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+ICAgICAgICB1c2UgcHJveG1veF9zeXM6OmxpbnV4
OjptYWdpYzo6KjsKPj4+PiAgICAKPj4+PiAgICAgICAgbWF0Y2ggbWFnaWMgewo+Pj4+ICAgICAg
ICAgICAgRVhUNF9TVVBFUl9NQUdJQyB8IFhGU19TVVBFUl9NQUdJQyB8IEZVU0VfU1VQRVJfTUFH
SUMgfCBaRlNfU1VQRVJfTUFHSUMgPT4gKCksCj4+Pj4gLSAgICAgICAgXyA9PiByZXR1cm4gT2so
KCkpLAo+Pj4+ICsgICAgICAgIF8gPT4gcmV0dXJuIE9rKGZhbHNlKSwKPj4+PiAgICAgICAgfQo+
Pj4+ICAgIAo+Pj4+ICAgICAgICBsZXQgbXV0IGZzeGF0dHIgPSBmczo6RlNYQXR0cjo6ZGVmYXVs
dCgpOwo+Pj4+ICAgICAgICBsZXQgcmVzID0gdW5zYWZlIHsgZnM6OmZzX2lvY19mc2dldHhhdHRy
KGZkLCAmbXV0IGZzeGF0dHIpIH07Cj4+Pj4gICAgCj4+Pj4gKyAgICBpZiBsZXQgRXJyKEVycm5v
OjpFU1RBTEUpID0gcmVzIHsKPj4+PiArICAgICAgICByZXR1cm4gT2sodHJ1ZSk7Cj4+Pj4gKyAg
ICB9Cj4+Pj4gKwo+Pj4+ICAgICAgICAvLyBPbiBzb21lIEZVU0UgZmlsZXN5c3RlbXMgaXQgY2Fu
IGhhcHBlbiB0aGF0IGlvY3RsIGlzIG5vdCBzdXBwb3J0ZWQuCj4+Pj4gICAgICAgIC8vIEZvciB0
aGVzZSBjYXNlcyBwcm9qaWQgaXMgc2V0IHRvIDAgd2hpbGUgdGhlIGVycm9yIGlzIGlnbm9yZWQu
Cj4+Pj4gICAgICAgIGlmIGxldCBFcnIoZXJybm8pID0gcmVzIHsKPj4+PiAgICAgICAgICAgIGlm
IGVycm5vX2lzX3Vuc3VwcG9ydGVkKGVycm5vKSB7Cj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBP
aygoKSk7Cj4+Pj4gKyAgICAgICAgICAgIHJldHVybiBPayhmYWxzZSk7Cj4+Pj4gICAgICAgICAg
ICB9IGVsc2Ugewo+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiBFcnIoZXJybm8pLmNvbnRleHQo
ImVycm9yIHdoaWxlIHJlYWRpbmcgcXVvdGEgcHJvamVjdCBpZCIpOwo+Pj4+ICAgICAgICAgICAg
fQo+Pj4+IEBAIC0xNTk3LDcgKzE2MjksNyBAQCBmbiBnZXRfcXVvdGFfcHJvamVjdF9pZCgKPj4+
PiAgICAgICAgaWYgcHJvamlkICE9IDAgewo+Pj4+ICAgICAgICAgICAgbWV0YWRhdGEucXVvdGFf
cHJvamVjdF9pZCA9IFNvbWUocHhhcjo6Zm9ybWF0OjpRdW90YVByb2plY3RJZCB7IHByb2ppZCB9
KTsKPj4+PiAgICAgICAgfQo+Pj4+IC0gICAgT2soKCkpCj4+Pj4gKyAgICBPayhmYWxzZSkKPj4+
PiAgICB9Cj4+Pj4gICAgCj4+Pj4gICAgZm4gZ2V0X2FjbCgKPj4+PiBAQCAtMTg0MCw3ICsxODcy
LDcgQEAgbW9kIHRlc3RzIHsKPj4+PiAgICAgICAgICAgIGxldCBmc19tYWdpYyA9IGRldGVjdF9m
c190eXBlKGRpci5hc19yYXdfZmQoKSkudW53cmFwKCk7Cj4+Pj4gICAgICAgICAgICBsZXQgc3Rh
dCA9IG5peDo6c3lzOjpzdGF0Ojpmc3RhdChkaXIuYXNfcmF3X2ZkKCkpLnVud3JhcCgpOwo+Pj4+
ICAgICAgICAgICAgbGV0IG11dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxhZ3M6OmZyb21fbWFnaWMo
ZnNfbWFnaWMpOwo+Pj4+IC0gICAgICAgIGxldCBtZXRhZGF0YSA9IGdldF9tZXRhZGF0YSgKPj4+
PiArICAgICAgICBsZXQgKG1ldGFkYXRhLCBfKSA9IGdldF9tZXRhZGF0YSgKPj4+Cj4+PiBubyB1
c2Ugb2YgdGhlIG5ldyByZXR1cm4gdmFsdWUKPj4+Cj4+Pj4gICAgICAgICAgICAgICAgZGlyLmFz
X3Jhd19mZCgpLAo+Pj4+ICAgICAgICAgICAgICAgICZzdGF0LAo+Pj4+ICAgICAgICAgICAgICAg
IGZzX2ZlYXR1cmVfZmxhZ3MsCj4+Pj4gQEAgLTE5MzcsNyArMTk2OSw3IEBAIG1vZCB0ZXN0cyB7
Cj4+Pj4gICAgICAgICAgICAgICAgbGV0IHN0YXQgPSBuaXg6OnN5czo6c3RhdDo6ZnN0YXQoc291
cmNlX2Rpci5hc19yYXdfZmQoKSkudW53cmFwKCk7Cj4+Pj4gICAgICAgICAgICAgICAgbGV0IG11
dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxhZ3M6OmZyb21fbWFnaWMoZnNfbWFnaWMpOwo+Pj4+ICAg
IAo+Pj4+IC0gICAgICAgICAgICBsZXQgbWV0YWRhdGEgPSBnZXRfbWV0YWRhdGEoCj4+Pj4gKyAg
ICAgICAgICAgIGxldCAobWV0YWRhdGEsIF8pID0gZ2V0X21ldGFkYXRhKAo+Pj4KPj4+IG5vIHVz
ZSBlaXRoZXIuLiBzbyB3b3VsZG4ndCBpdCBtYWtlIG1vcmUgc2Vuc2UgdG8gcGFzcyBpbiBhIHBh
dGggYW5kIGxvZwo+Pj4gdGhlIGNvbnRleHQgcmlnaHQgaW4gZ2V0X21ldGFkYXRhPyBvciB0cmVh
dCB0aGUgc3RhbGUgRkQgYXMgYW4gZXJyb3IsCj4+PiBhbmQgYWRkIHRoZSBjb250ZXh0L3BhdGgg
YXMgcGFydCBvZiBlcnJvciBoYW5kbGluZz8KPj4KPj4gVGhlIGZpcnN0IGFwcHJvYWNoIHNlZW1z
IGJldHRlciwgd2lsbCBob3dldmVyIG5vdCBoZWxwIHRvIGRpZmZlcmVudGlhdGUKPj4gdGhlICho
YXJkKSBlcnJvcnMgZnJvbSB0aGUgc29mdCBlcnJvciBFU1RBTEUsIHdoaWNoIHJlcXVpcmVzIHRv
IHNraXAKPj4gb3ZlciBlbnRyaWVzIGF0IHRoZSBgZ2V0X21ldGFkYXRhYCBjYWxsIHNpZGUgY29u
ZGl0aW9uYWxseS4KPj4KPj4gUmV0dXJuaW5nIHRoZSBzdGFsZSBmaWxlIGhhbmRsZSBlcnJvciBh
cyBgQW55aG93OjpFcnJvcmAgYWxzbyBkb2VzIG5vdAo+PiBhbGxvdyB0byBkaXN0aW5ndWlzaCBm
cm9tIG90aGVyIChoYXJkKSBlcnJvcnMsIHNvIGFnYWluIGl0IGNhbm5vdCBiZQo+PiBoYW5kbGVk
IGFzIHNvZnQgZXJyb3IgYXQgdGhlIGNhbGwgc2l0ZS4KPj4KPj4gQW5kIHJldHVybmluZyBhbGwg
ZXJyb3JzIGFzIGBFcnJub2AgaGFzIHRoZSBsb3NzIG9mIGVycm9yIGNvbnRleHQgaXNzdWUKPj4g
YXMgZGVzY3JpYmVkIGFib3ZlLgo+Pgo+PiBJIHdpbGwgc2VlIGlmIEkgY2FuIGNvdmVyIHRoaXMg
YmV0dGVyIGJ5IHJlZmFjdG9yaW5nIHRoZSBjb2RlLCBhcyBtb3N0Cj4+IG9mIHRoZSBoZWxwZXJz
IGhhdmUgYSBzaW5nbGUgY2FsbCBzaWRlLCBzbyBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8KPj4g
cmVvcmdhbml6ZSB3aXRob3V0IG11Y2ggc2lkZSBlZmZlY3RzLgo+Pgo+Pj4KPj4+IHRoZSBmb3Vy
IGNhbGwgc2l0ZXMgYXJlOgo+Pj4gLSB0d28gcmVsYXRlZCB0byB0ZXN0cywgd2UgY2FuIHByb2Jh
Ymx5IHRyZWF0IEVTVEFMRSBhcyBoYXJkIGVycm9yIHRoZXJlCj4+PiAtIHRoZSBvbmUgZm9yIG9i
dGFpbmluZyB0aGUgbWV0YWRhdGEgb2YgdGhlIHNvdXJjZSBkaXIgb2YgdGhlIGFyY2hpdmUsCj4+
PiAgICAgaWYgdGhhdCBpcyBzdGFsZSB3ZSBjYW4ndCBjcmVhdGUgYW4gYXJjaGl2ZSAtPiBoYXJk
IGVycm9yIGFzIHdlbGwKPj4+IC0gYWRkaW5nIGFuIGVudHJ5OiBmb3IgdGhlIHN0YWxlIGNhc2Us
IHdlIGFscmVhZHkgbG9nIGEgd2FybmluZyBhbmQKPj4+ICAgICBwcm9jZWVkIHdpdGggdGhlIG5l
eHQgZW50cnksIHNvIHdlIGRvbid0IGJlbmVmaXQgZnJvbSB0aGUgZmFjdCB0aGF0Cj4+PiAgICAg
KGluY29tcGxldGUpIG1ldGFkYXRhIGFuZCB0aGUgc3RhbGVuZXNzIGlzIHJldHVybmVkLCBhcyBv
cHBvc2VkIHRvCj4+PiAgICAganVzdCB0cmVhdGluZyBFU1RBTEUgYXMgYW4gZXJyb3IgdGhhdCB3
ZSBjYW4gImNhdGNoIiBhbmQgaGFuZGxlLi4KPj4+Cj4+Pj4gICAgICAgICAgICAgICAgICAgIHNv
dXJjZV9kaXIuYXNfcmF3X2ZkKCksCj4+Pj4gICAgICAgICAgICAgICAgICAgICZzdGF0LAo+Pj4+
ICAgICAgICAgICAgICAgICAgICBmc19mZWF0dXJlX2ZsYWdzLAo+Pj4+IC0tIAo+Pj4+IDIuMzku
NQo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCj4+Pj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+Pj4+IHBicy1kZXZlbEBs
aXN0cy5wcm94bW94LmNvbQo+Pj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4KPj4+Cj4+PiBfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gcGJzLWRldmVs
IG1haWxpbmcgbGlzdAo+Pj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+PiBodHRwczov
L2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4+
Cj4+Pgo+Pgo+PgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpo
dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2
ZWwK