From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id D745C1FF17A for ; Tue, 11 Nov 2025 16:06:41 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8273FF106; Tue, 11 Nov 2025 16:07:27 +0100 (CET) Message-ID: Date: Tue, 11 Nov 2025 16:06:48 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Hannes Laimer , Proxmox Backup Server development discussion References: <20250916124147.513342-1-c.ebner@proxmox.com> <20250916124147.513342-2-c.ebner@proxmox.com> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1762873586210 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.003 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 KAM_SHORT 0.001 Use of a URL Shortener for very short URL PROLO_LEO1 0.1 Meta Catches all Leo drug variations so far 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, gnu.org] Subject: Re: [pbs-devel] [PATCH proxmox v2 1/4] rate-limiter: add crate for traffic rate limiter implementations X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gMTEvMTEvMjUgMTE6MzQgQU0sIEhhbm5lcyBMYWltZXIgd3JvdGU6Cj4gY29tbWVudCBpbmxp bmUsIG90aGVyIHRoYW4gdGhhdCBjb25zaWRlciB0aGlzCj4gCj4gUmV2aWV3ZWQtYnk6IEhhbm5l cyBMYWltZXIgPGgubGFpbWVyQHByb3htb3guY29tPgo+IFRlc3RlZC1ieTogSGFubmVzIExhaW1l ciA8aC5sYWltZXJAcHJveG1veC5jb20+Cj4gCj4gT24gOS8xNi8yNSAxNDo0MiwgQ2hyaXN0aWFu IEVibmVyIHdyb3RlOgo+PiBGYWN0b3JzIG91dCB0aGUgdHJhZmZpYyByYXRlIGxpbWl0ZXIgaW1w bGVtZW50YXRpb25zIGN1cnJlbnRseSB0aWVkCj4+IHRvIHRoZSBwcm94bW94LWJhY2t1cCBhbmQg cHJveG1veC1odHRwIGNyYXRlcyB0byBtYWtlIHRoZW0KPj4gaW5kZXBlbmRlbnQgYW5kIGVhc2ls eSByZXVzYWJsZSwgZS5nLiBmb3IgdGhlIHMzLWNsaWVudAo+PiBpbXBsZW1lbnRhdGlvbi4KPj4K Pj4gVGhlIHNoYXJlZCByYXRlIGxpbWl0ZXIgaW1wbGVtZW50YXRpb24gZnJvbSBQQlMgcmVsaWVz IG9uIG1tYXBwaW5nCj4+IGZvciBzdGF0ZSBzaGFyaW5nLCB0aGUgZmlsZSBleHBvc2VkIGhhdmlu ZyBhIHByZWRlZmluZWQgbWFnaWMgbnVtYmVyLgo+PiBJbiBvcmRlciB0byBiZSBiYWNrd2FyZHMg Y29tcGF0aWJsZSwgbGVhdmUgdGhlIG1hZ2ljIG51bWJlciBhcyBpcyBhbmQKPj4gb25seSBhZGFw dCB0aGUgY29uc3RhbnQgbmFtZSB0byBiZSBtb3JlIGdlbmVyaWMsIGFsdGhvdWdoIHRoZSBzdHJp bmcKPj4gdGhlIG1hZ2ljIG51bWJlciBpcyBkZXJpdmVkIGZyb20gaXMgUEJTIHNwZWNpZmljLgo+ Pgo+PiBGdXJ0aGVyLCB0aGUgdXNlciBmb3IgZmlsZSBvd25lcnNoaXAgYW5kIGJhc2UgcGF0aCBv ZiB0aGUgbW1hcHBlZAo+PiBmaWxlIGFyZSBub3cgcGFzc2VkIGFzIHBhcmFtZXRlcnMgZHVyaW5n IHNoYXJlZCByYXRlIGxpbWl0ZXIKPj4gaW5zdGFudGlhdGlvbi4KPj4KPj4gU2lnbmVkLW9mZi1i eTogQ2hyaXN0aWFuIEVibmVyIDxjLmVibmVyQHByb3htb3guY29tPgo+PiAtLS0KPj4gQ2hhbmdl cyBzaW5jZSB2ZXJzaW9uIDE6Cj4+IC0gbW92ZSByYXRlIGxpbWl0ZXIgaW1wbGVtZW50YXRpb25z IGludG8gZGVkaWNhdGVkIGNyYXRlIGluc3RlYWQgb2YKPj4gwqDCoCBwcm94bW94LWh0dHAKPj4g LSBBZGFwdCBzaGFyZWQgc3RhdGUgZmlsZSBtYWdpYyBjb25zdGFudCBuYW1lIHRvIGJlIGdlbmVy aWMKPj4KPj4gwqAgQ2FyZ28udG9tbMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHByb3ht b3gtcmF0ZS1saW1pdGVyL0NhcmdvLnRvbWzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oCAyOSArKysKPj4gwqAgcHJveG1veC1yYXRlLWxpbWl0ZXIvZGViaWFuL2NoYW5nZWxvZ8KgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNSArCj4+IMKgIHByb3htb3gtcmF0ZS1saW1pdGVyL2RlYmlhbi9j b250cm9swqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDcwICsrKysrKwo+PiDCoCBwcm94bW94LXJh dGUtbGltaXRlci9kZWJpYW4vY29weXJpZ2h0wqDCoMKgwqDCoMKgwqDCoCB8wqAgMTggKysKPj4g wqAgcHJveG1veC1yYXRlLWxpbWl0ZXIvZGViaWFuL2RlYmNhcmdvLnRvbWzCoMKgwqDCoCB8wqDC oCA3ICsKPj4gwqAgcHJveG1veC1yYXRlLWxpbWl0ZXIvc3JjL2xpYi5yc8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDEzICsrCj4+IMKgIHByb3htb3gtcmF0ZS1saW1pdGVyL3NyYy9y YXRlX2xpbWl0ZXIucnPCoMKgwqDCoMKgIHwgMjE0ICsrKysrKysrKysrKysrKysrKwo+PiDCoCAu Li4vc3JjL3NoYXJlZF9yYXRlX2xpbWl0ZXIucnPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAxMzAgKysrKysrKysrKysKPj4gwqAgOSBmaWxlcyBjaGFuZ2VkLCA0ODcgaW5zZXJ0aW9u cygrKQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1yYXRlLWxpbWl0ZXIvQ2FyZ28u dG9tbAo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1yYXRlLWxpbWl0ZXIvZGViaWFu L2NoYW5nZWxvZwo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1yYXRlLWxpbWl0ZXIv ZGViaWFuL2NvbnRyb2wKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtcmF0ZS1saW1p dGVyL2RlYmlhbi9jb3B5cmlnaHQKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtcmF0 ZS1saW1pdGVyL2RlYmlhbi9kZWJjYXJnby50b21sCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBw cm94bW94LXJhdGUtbGltaXRlci9zcmMvbGliLnJzCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBw cm94bW94LXJhdGUtbGltaXRlci9zcmMvcmF0ZV9saW1pdGVyLnJzCj4+IMKgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBwcm94bW94LXJhdGUtbGltaXRlci9zcmMvc2hhcmVkX3JhdGVfbGltaXRlci5ycwo+ Pgo+PiBkaWZmIC0tZ2l0IGEvQ2FyZ28udG9tbCBiL0NhcmdvLnRvbWwKPj4gaW5kZXggZjE0OWFm NjUuLmJkZTMyYjE3IDEwMDY0NAo+PiAtLS0gYS9DYXJnby50b21sCj4+ICsrKyBiL0NhcmdvLnRv bWwKPj4gQEAgLTI5LDYgKzI5LDcgQEAgbWVtYmVycyA9IFsKPj4gwqDCoMKgwqDCoCAicHJveG1v eC1ub3RpZnkiLAo+PiDCoMKgwqDCoMKgICJwcm94bW94LW9wZW5pZCIsCj4+IMKgwqDCoMKgwqAg InByb3htb3gtcHJvZHVjdC1jb25maWciLAo+PiArwqDCoMKgICJwcm94bW94LXJhdGUtbGltaXRl ciIsCj4+IMKgwqDCoMKgwqAgInByb3htb3gtcmVzb3VyY2Utc2NoZWR1bGluZyIsCj4+IMKgwqDC oMKgwqAgInByb3htb3gtcmVzdC1zZXJ2ZXIiLAo+PiDCoMKgwqDCoMKgICJwcm94bW94LXJvdXRl ciIsCj4+IGRpZmYgLS1naXQgYS9wcm94bW94LXJhdGUtbGltaXRlci9DYXJnby50b21sIGIvcHJv eG1veC1yYXRlLWxpbWl0ZXIvIAo+PiBDYXJnby50b21sCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4+IGluZGV4IDAwMDAwMDAwLi42ZDhkOTZjYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3By b3htb3gtcmF0ZS1saW1pdGVyL0NhcmdvLnRvbWwKPj4gQEAgLTAsMCArMSwyOSBAQAo+PiArW3Bh Y2thZ2VdCj4+ICtuYW1lID0gInByb3htb3gtcmF0ZS1saW1pdGVyIgo+PiArZGVzY3JpcHRpb24g PSAiVG9rZW4gYnVja2V0IGJhc2VkIHRyYWZmaWMgcmF0ZSBsaW1pdGVyIGltcGxlbWVudGF0aW9u Igo+PiArdmVyc2lvbiA9ICIxLjAuMCIKPj4gKwo+PiArYXV0aG9ycy53b3Jrc3BhY2UgPSB0cnVl Cj4+ICtlZGl0aW9uLndvcmtzcGFjZSA9IHRydWUKPj4gK2V4Y2x1ZGUud29ya3NwYWNlID0gdHJ1 ZQo+PiAraG9tZXBhZ2Uud29ya3NwYWNlID0gdHJ1ZQo+PiArbGljZW5zZS53b3Jrc3BhY2UgPSB0 cnVlCj4+ICtyZXBvc2l0b3J5LndvcmtzcGFjZSA9IHRydWUKPj4gK3J1c3QtdmVyc2lvbi53b3Jr c3BhY2UgPSB0cnVlCj4+ICsKPj4gK1tkZXBlbmRlbmNpZXNdCj4+ICthbnlob3cud29ya3NwYWNl ID0gdHJ1ZQo+PiAraHlwZXIgPSB7IHdvcmtzcGFjZSA9IHRydWUsIG9wdGlvbmFsID0gdHJ1ZSB9 Cj4+ICtuaXggPSB7IHdvcmtzcGFjZSA9IHRydWUsIG9wdGlvbmFsID0gdHJ1ZSB9Cj4+ICsKPj4g K3Byb3htb3gtc2hhcmVkLW1lbW9yeSA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgb3B0aW9uYWwgPSB0 cnVlIH0KPj4gK3Byb3htb3gtc3lzID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBvcHRpb25hbCA9IHRy dWUgfQo+PiArCj4+ICtbZmVhdHVyZXNdCj4+ICtkZWZhdWx0ID0gW10KPj4gK3JhdGUtbGltaXRl ciA9IFsiZGVwOmh5cGVyIl0KPj4gK3NoYXJlZC1yYXRlLWxpbWl0ZXIgPSBbCj4+ICvCoMKgwqAg ImRlcDpuaXgiLAo+PiArwqDCoMKgICJkZXA6cHJveG1veC1zaGFyZWQtbWVtb3J5IiwKPj4gK8Kg wqDCoCAiZGVwOnByb3htb3gtc3lzIiwKPj4gK10KPj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtcmF0 ZS1saW1pdGVyL2RlYmlhbi9jaGFuZ2Vsb2cgYi9wcm94bW94LXJhdGUtIAo+PiBsaW1pdGVyL2Rl Ymlhbi9jaGFuZ2Vsb2cKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAu LjBiZmZhNTUxCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvcHJveG1veC1yYXRlLWxpbWl0ZXIv ZGViaWFuL2NoYW5nZWxvZwo+PiBAQCAtMCwwICsxLDUgQEAKPj4gK3J1c3QtcHJveG1veC1yYXRl LWxpbWl0ZXIgKDEuMC4wLTEpIGJvb2t3b3JtOyB1cmdlbmN5PW1lZGl1bQo+PiArCj4+ICvCoCAq IGluaXRpYWwgcGFja2FnaW5nCj4+ICsKPj4gKyAtLSBQcm94bW94IFN1cHBvcnQgVGVhbSA8c3Vw cG9ydEBwcm94bW94LmNvbT7CoCBUdWUsIDE2IFNlcCAyMDI1IAo+PiAxMTowNjoyMyArMDIwMAo+ PiBkaWZmIC0tZ2l0IGEvcHJveG1veC1yYXRlLWxpbWl0ZXIvZGViaWFuL2NvbnRyb2wgYi9wcm94 bW94LXJhdGUtIAo+PiBsaW1pdGVyL2RlYmlhbi9jb250cm9sCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi42ODlmZTAyZQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBi L3Byb3htb3gtcmF0ZS1saW1pdGVyL2RlYmlhbi9jb250cm9sCj4+IEBAIC0wLDAgKzEsNzAgQEAK Pj4gK1NvdXJjZTogcnVzdC1wcm94bW94LXJhdGUtbGltaXRlcgo+PiArU2VjdGlvbjogcnVzdAo+ PiArUHJpb3JpdHk6IG9wdGlvbmFsCj4+ICtCdWlsZC1EZXBlbmRzOiBkZWJoZWxwZXItY29tcGF0 ICg9IDEzKSwKPj4gKyBkaC1zZXF1ZW5jZS1jYXJnbwo+PiArQnVpbGQtRGVwZW5kcy1BcmNoOiBj YXJnbzpuYXRpdmUgPCFub2NoZWNrPiwKPj4gKyBydXN0YzpuYXRpdmUgKD49IDEuODIpIDwhbm9j aGVjaz4sCj4+ICsgbGlic3RkLXJ1c3QtZGV2IDwhbm9jaGVjaz4sCj4+ICsgbGlicnVzdC1hbnlo b3ctMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+Cj4+ICtNYWludGFpbmVyOiBQcm94bW94IFN1cHBv cnQgVGVhbSA8c3VwcG9ydEBwcm94bW94LmNvbT4KPj4gK1N0YW5kYXJkcy1WZXJzaW9uOiA0Ljcu MAo+PiArVmNzLUdpdDogZ2l0Oi8vZ2l0LnByb3htb3guY29tL2dpdC9wcm94bW94LmdpdAo+PiAr VmNzLUJyb3dzZXI6IGh0dHBzOi8vZ2l0LnByb3htb3guY29tLz9wPXByb3htb3guZ2l0Cj4+ICtI b21lcGFnZTogaHR0cHM6Ly9wcm94bW94LmNvbQo+PiArWC1DYXJnby1DcmF0ZTogcHJveG1veC1y YXRlLWxpbWl0ZXIKPj4gK1J1bGVzLVJlcXVpcmVzLVJvb3Q6IG5vCj4+ICsKPj4gK1BhY2thZ2U6 IGxpYnJ1c3QtcHJveG1veC1yYXRlLWxpbWl0ZXItZGV2Cj4+ICtBcmNoaXRlY3R1cmU6IGFueQo+ PiArTXVsdGktQXJjaDogc2FtZQo+PiArRGVwZW5kczoKPj4gKyAke21pc2M6RGVwZW5kc30sCj4+ ICsgbGlicnVzdC1hbnlob3ctMStkZWZhdWx0LWRldgo+PiArU3VnZ2VzdHM6Cj4+ICsgbGlicnVz dC1wcm94bW94LXJhdGUtbGltaXRlcityYXRlLWxpbWl0ZXItZGV2ICg9ICR7YmluYXJ5OlZlcnNp b259KSwKPj4gKyBsaWJydXN0LXByb3htb3gtcmF0ZS1saW1pdGVyK3NoYXJlZC1yYXRlLWxpbWl0 ZXItZGV2ICg9IAo+PiAke2JpbmFyeTpWZXJzaW9ufSkKPj4gK1Byb3ZpZGVzOgo+PiArIGxpYnJ1 c3QtcHJveG1veC1yYXRlLWxpbWl0ZXIrZGVmYXVsdC1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0p LAo+PiArIGxpYnJ1c3QtcHJveG1veC1yYXRlLWxpbWl0ZXItMS1kZXYgKD0gJHtiaW5hcnk6VmVy c2lvbn0pLAo+PiArIGxpYnJ1c3QtcHJveG1veC1yYXRlLWxpbWl0ZXItMStkZWZhdWx0LWRldiAo PSAke2JpbmFyeTpWZXJzaW9ufSksCj4+ICsgbGlicnVzdC1wcm94bW94LXJhdGUtbGltaXRlci0x LjAtZGV2ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKPj4gKyBsaWJydXN0LXByb3htb3gtcmF0ZS1s aW1pdGVyLTEuMCtkZWZhdWx0LWRldiAoPSAke2JpbmFyeTpWZXJzaW9ufSksCj4+ICsgbGlicnVz dC1wcm94bW94LXJhdGUtbGltaXRlci0xLjAuMC1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLAo+ PiArIGxpYnJ1c3QtcHJveG1veC1yYXRlLWxpbWl0ZXItMS4wLjArZGVmYXVsdC1kZXYgKD0gJHti aW5hcnk6VmVyc2lvbn0pCj4+ICtEZXNjcmlwdGlvbjogVG9rZW4gYnVja2V0IGJhc2VkIHRyYWZm aWMgcmF0ZSBsaW1pdGVyIGltcGxlbWVudGF0aW9uIC0gCj4+IFJ1c3Qgc291cmNlIGNvZGUKPj4g KyBTb3VyY2UgY29kZSBmb3IgRGViaWFuaXplZCBSdXN0IGNyYXRlICJwcm94bW94LXJhdGUtbGlt aXRlciIKPj4gKwo+PiArUGFja2FnZTogbGlicnVzdC1wcm94bW94LXJhdGUtbGltaXRlcityYXRl LWxpbWl0ZXItZGV2Cj4+ICtBcmNoaXRlY3R1cmU6IGFueQo+PiArTXVsdGktQXJjaDogc2FtZQo+ PiArRGVwZW5kczoKPj4gKyAke21pc2M6RGVwZW5kc30sCj4+ICsgbGlicnVzdC1wcm94bW94LXJh dGUtbGltaXRlci1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLAo+PiArIGxpYnJ1c3QtaHlwZXIt MStkZWZhdWx0LWRldgo+PiArUHJvdmlkZXM6Cj4+ICsgbGlicnVzdC1wcm94bW94LXJhdGUtbGlt aXRlci0xK3JhdGUtbGltaXRlci1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLAo+PiArIGxpYnJ1 c3QtcHJveG1veC1yYXRlLWxpbWl0ZXItMS4wK3JhdGUtbGltaXRlci1kZXYgKD0gCj4+ICR7Ymlu YXJ5OlZlcnNpb259KSwKPj4gKyBsaWJydXN0LXByb3htb3gtcmF0ZS1saW1pdGVyLTEuMC4wK3Jh dGUtbGltaXRlci1kZXYgKD0gCj4+ICR7YmluYXJ5OlZlcnNpb259KQo+PiArRGVzY3JpcHRpb246 IFRva2VuIGJ1Y2tldCBiYXNlZCB0cmFmZmljIHJhdGUgbGltaXRlciBpbXBsZW1lbnRhdGlvbiAt IAo+PiBmZWF0dXJlICJyYXRlLWxpbWl0ZXIiCj4+ICsgVGhpcyBtZXRhcGFja2FnZSBlbmFibGVz IGZlYXR1cmUgInJhdGUtbGltaXRlciIgZm9yIHRoZSBSdXN0IAo+PiBwcm94bW94LXJhdGUtCj4+ ICsgbGltaXRlciBjcmF0ZSwgYnkgcHVsbGluZyBpbiBhbnkgYWRkaXRpb25hbCBkZXBlbmRlbmNp ZXMgbmVlZGVkIGJ5IHRoYXQKPj4gKyBmZWF0dXJlLgo+PiArCj4+ICtQYWNrYWdlOiBsaWJydXN0 LXByb3htb3gtcmF0ZS1saW1pdGVyK3NoYXJlZC1yYXRlLWxpbWl0ZXItZGV2Cj4+ICtBcmNoaXRl Y3R1cmU6IGFueQo+PiArTXVsdGktQXJjaDogc2FtZQo+PiArRGVwZW5kczoKPj4gKyAke21pc2M6 RGVwZW5kc30sCj4+ICsgbGlicnVzdC1wcm94bW94LXJhdGUtbGltaXRlci1kZXYgKD0gJHtiaW5h cnk6VmVyc2lvbn0pLAo+PiArIGxpYnJ1c3Qtbml4LTAuMjkrZGVmYXVsdC1kZXYsCj4+ICsgbGli cnVzdC1wcm94bW94LXNoYXJlZC1tZW1vcnktMStkZWZhdWx0LWRldiwKPj4gKyBsaWJydXN0LXBy b3htb3gtc3lzLTErZGVmYXVsdC1kZXYKPj4gK1Byb3ZpZGVzOgo+PiArIGxpYnJ1c3QtcHJveG1v eC1yYXRlLWxpbWl0ZXItMStzaGFyZWQtcmF0ZS1saW1pdGVyLWRldiAoPSAKPj4gJHtiaW5hcnk6 VmVyc2lvbn0pLAo+PiArIGxpYnJ1c3QtcHJveG1veC1yYXRlLWxpbWl0ZXItMS4wK3NoYXJlZC1y YXRlLWxpbWl0ZXItZGV2ICg9IAo+PiAke2JpbmFyeTpWZXJzaW9ufSksCj4+ICsgbGlicnVzdC1w cm94bW94LXJhdGUtbGltaXRlci0xLjAuMCtzaGFyZWQtcmF0ZS1saW1pdGVyLWRldiAoPSAKPj4g JHtiaW5hcnk6VmVyc2lvbn0pCj4+ICtEZXNjcmlwdGlvbjogVG9rZW4gYnVja2V0IGJhc2VkIHRy YWZmaWMgcmF0ZSBsaW1pdGVyIGltcGxlbWVudGF0aW9uIC0gCj4+IGZlYXR1cmUgInNoYXJlZC1y YXRlLWxpbWl0ZXIiCj4+ICsgVGhpcyBtZXRhcGFja2FnZSBlbmFibGVzIGZlYXR1cmUgInNoYXJl ZC1yYXRlLWxpbWl0ZXIiIGZvciB0aGUgUnVzdCAKPj4gcHJveG1veC0KPj4gKyByYXRlLWxpbWl0 ZXIgY3JhdGUsIGJ5IHB1bGxpbmcgaW4gYW55IGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG5lZWRl ZCAKPj4gYnkgdGhhdAo+PiArIGZlYXR1cmUuCj4+IGRpZmYgLS1naXQgYS9wcm94bW94LXJhdGUt bGltaXRlci9kZWJpYW4vY29weXJpZ2h0IGIvcHJveG1veC1yYXRlLSAKPj4gbGltaXRlci9kZWJp YW4vY29weXJpZ2h0Cj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi5k NmUzYzMwNAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Byb3htb3gtcmF0ZS1saW1pdGVyL2Rl Ymlhbi9jb3B5cmlnaHQKPj4gQEAgLTAsMCArMSwxOCBAQAo+PiArRm9ybWF0OiBodHRwczovL3d3 dy5kZWJpYW4ub3JnL2RvYy9wYWNrYWdpbmctbWFudWFscy9jb3B5cmlnaHQtIAo+PiBmb3JtYXQv MS4wLwo+PiArCj4+ICtGaWxlczoKPj4gKyAqCj4+ICtDb3B5cmlnaHQ6IDIwMjUgUHJveG1veCBT ZXJ2ZXIgU29sdXRpb25zIEdtYkggPHN1cHBvcnRAcHJveG1veC5jb20+Cj4+ICtMaWNlbnNlOiBB R1BMLTMuMC1vci1sYXRlcgo+PiArIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IAo+PiBpdCB1bmRlcgo+PiArIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSAKPj4gdGhlIEZyZWUKPj4gKyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciAKPj4gb3B0aW9uKSBhbnkKPj4gKyBsYXRl ciB2ZXJzaW9uLgo+PiArIC4KPj4gKyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IAo+PiBXSVRIT1VUCj4+ICsgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIAo+PiBvciBGSVRORVNTCj4+ICsgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl IEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAKPj4gZm9yIG1vcmUKPj4gKyBkZXRh aWxzLgo+PiArIC4KPj4gKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIAo+PiBMaWNlbnNlIGFsb25nCj4+ICsgd2l0aCB0aGlz IHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4+ IGRpZmYgLS1naXQgYS9wcm94bW94LXJhdGUtbGltaXRlci9kZWJpYW4vZGViY2FyZ28udG9tbCBi L3Byb3htb3gtcmF0ZS0gCj4+IGxpbWl0ZXIvZGViaWFuL2RlYmNhcmdvLnRvbWwKPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAuLmI3ODY0Y2RiCj4+IC0tLSAvZGV2L251 bGwKPj4gKysrIGIvcHJveG1veC1yYXRlLWxpbWl0ZXIvZGViaWFuL2RlYmNhcmdvLnRvbWwKPj4g QEAgLTAsMCArMSw3IEBACj4+ICtvdmVybGF5ID0gIi4iCj4+ICtjcmF0ZV9zcmNfcGF0aCA9ICIu LiIKPj4gK21haW50YWluZXIgPSAiUHJveG1veCBTdXBwb3J0IFRlYW0gPHN1cHBvcnRAcHJveG1v eC5jb20+Igo+PiArCj4+ICtbc291cmNlXQo+PiArdmNzX2dpdCA9ICJnaXQ6Ly9naXQucHJveG1v eC5jb20vZ2l0L3Byb3htb3guZ2l0Igo+PiArdmNzX2Jyb3dzZXIgPSAiaHR0cHM6Ly9naXQucHJv eG1veC5jb20vP3A9cHJveG1veC5naXQiCj4+IGRpZmYgLS1naXQgYS9wcm94bW94LXJhdGUtbGlt aXRlci9zcmMvbGliLnJzIGIvcHJveG1veC1yYXRlLWxpbWl0ZXIvIAo+PiBzcmMvbGliLnJzCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi5hOGQ3Y2ZkZAo+PiAtLS0g L2Rldi9udWxsCj4+ICsrKyBiL3Byb3htb3gtcmF0ZS1saW1pdGVyL3NyYy9saWIucnMKPj4gQEAg LTAsMCArMSwxMyBAQAo+PiArLy8hIFRva2VuIGJ1Y2tldCBiYXNlZCB0cmFmZmljIHJhdGUgbGlt aXRlciBpbXBsZW1lbnRhdGlvbnMuCj4+ICsKPj4gKyMhW2NmZ19hdHRyKGRvY3NycywgZmVhdHVy ZShkb2NfY2ZnLCBkb2NfYXV0b19jZmcpKV0KPj4gKwo+PiArI1tjZmcoZmVhdHVyZSA9ICJyYXRl LWxpbWl0ZXIiKV0KPj4gK21vZCByYXRlX2xpbWl0ZXI7Cj4+ICsjW2NmZyhmZWF0dXJlID0gInJh dGUtbGltaXRlciIpXQo+PiArcHViIHVzZSByYXRlX2xpbWl0ZXI6OntSYXRlTGltaXQsIFJhdGVM aW1pdGVyLCBSYXRlTGltaXRlclZlYywgCj4+IFNoYXJlYWJsZVJhdGVMaW1pdH07Cj4+ICsKPj4g KyNbY2ZnKGZlYXR1cmUgPSAic2hhcmVkLXJhdGUtbGltaXRlciIpXQo+PiArbW9kIHNoYXJlZF9y YXRlX2xpbWl0ZXI7Cj4+ICsjW2NmZyhmZWF0dXJlID0gInNoYXJlZC1yYXRlLWxpbWl0ZXIiKV0K Pj4gK3B1YiB1c2Ugc2hhcmVkX3JhdGVfbGltaXRlcjo6U2hhcmVkUmF0ZUxpbWl0ZXI7Cj4+IGRp ZmYgLS1naXQgYS9wcm94bW94LXJhdGUtbGltaXRlci9zcmMvcmF0ZV9saW1pdGVyLnJzIGIvcHJv eG1veC1yYXRlLSAKPj4gbGltaXRlci9zcmMvcmF0ZV9saW1pdGVyLnJzCj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi45NDVjNzdhNgo+PiAtLS0gL2Rldi9udWxsCj4+ ICsrKyBiL3Byb3htb3gtcmF0ZS1saW1pdGVyL3NyYy9yYXRlX2xpbWl0ZXIucnMKPj4gQEAgLTAs MCArMSwyMTQgQEAKPj4gK3VzZSBzdGQ6OmNvbnZlcnQ6OlRyeUludG87Cj4+ICt1c2Ugc3RkOjp0 aW1lOjp7RHVyYXRpb24sIEluc3RhbnR9Owo+PiArCj4+ICt1c2UgYW55aG93Ojp7YmFpbCwgRXJy b3J9Owo+PiArCj4+ICsvLy8gUmF0ZSBsaW1pdGVyIGludGVyZmFjZS4KPj4gK3B1YiB0cmFpdCBS YXRlTGltaXQgewo+PiArwqDCoMKgIC8vLyBVcGRhdGUgcmF0ZSBhbmQgYnVja2V0IHNpemUKPj4g K8KgwqDCoCBmbiB1cGRhdGVfcmF0ZSgmbXV0IHNlbGYsIHJhdGU6IHU2NCwgYnVja2V0X3NpemU6 IHU2NCk7Cj4+ICsKPj4gK8KgwqDCoCAvLy8gUmV0dXJucyB0aGUgb3ZlcmFsbCB0cmFmZmljIChz aW5jZSBzdGFydGVkKQo+PiArwqDCoMKgIGZuIHRyYWZmaWMoJnNlbGYpIC0+IHU2NDsKPj4gKwo+ PiArwqDCoMKgIC8vLyBSZWdpc3RlciB0cmFmZmljLCByZXR1cm5pbmcgYSBwcm9wb3NlZCBkZWxh eSB0byByZWFjaCB0aGUKPj4gK8KgwqDCoCAvLy8gZXhwZWN0ZWQgcmF0ZS4KPj4gK8KgwqDCoCBm biByZWdpc3Rlcl90cmFmZmljKCZtdXQgc2VsZiwgY3VycmVudF90aW1lOiBJbnN0YW50LCBkYXRh X2xlbjogCj4+IHU2NCkgLT4gRHVyYXRpb247Cj4+ICt9Cj4+ICsKPj4gKy8vLyBMaWtlIFtgUmF0 ZUxpbWl0YF0sIGJ1dCBkb2VzIG5vdCByZXF1aXJlIHNlbGYgdG8gYmUgbXV0YWJsZS4KPj4gKy8v Lwo+PiArLy8vIFRoaXMgaXMgdXNlZnVsIGZvciB0eXBlcyBwcm92aWRpbmcgaW50ZXJuYWwgbXV0 YWJpbGl0eSAoTXV0ZXgpLgo+PiArcHViIHRyYWl0IFNoYXJlYWJsZVJhdGVMaW1pdDogU2VuZCAr IFN5bmMgewo+PiArwqDCoMKgIGZuIHVwZGF0ZV9yYXRlKCZzZWxmLCByYXRlOiB1NjQsIGJ1Y2tl dF9zaXplOiB1NjQpOwo+PiArwqDCoMKgIGZuIHRyYWZmaWMoJnNlbGYpIC0+IHU2NDsKPj4gK8Kg wqDCoCBmbiByZWdpc3Rlcl90cmFmZmljKCZzZWxmLCBjdXJyZW50X3RpbWU6IEluc3RhbnQsIGRh dGFfbGVuOiB1NjQpIAo+PiAtPiBEdXJhdGlvbjsKPj4gK30KPj4gKwo+PiArLy8vIElNUE9SVEFO VDogV2UgdXNlIHRoaXMgc3RydWN0IGluIHNoYXJlZCBtZW1vcnksIHNvIHBsZWFzZSBkbyBub3QK Pj4gKy8vLyBjaGFuZ2UvbW9kaWZ5IHRoZSBsYXlvdXQgKGRvIG5vdCBhZGQgZmllbGRzKQo+PiAr I1tkZXJpdmUoQ2xvbmUpXQo+PiArI1tyZXByKEMpXQo+PiArc3RydWN0IFRiZlN0YXRlIHsKPj4g K8KgwqDCoCB0cmFmZmljOiB1NjQsIC8vIG92ZXJhbGwgdHJhZmZpYwo+PiArwqDCoMKgIGxhc3Rf dXBkYXRlOiBJbnN0YW50LAo+PiArwqDCoMKgIGNvbnN1bWVkX3Rva2VuczogdTY0LAo+PiArfQo+ PiArCj4+ICtpbXBsIFRiZlN0YXRlIHsKPj4gK8KgwqDCoCBjb25zdCBOT19ERUxBWTogRHVyYXRp b24gPSBEdXJhdGlvbjo6ZnJvbV9taWxsaXMoMCk7Cj4+ICsKPj4gK8KgwqDCoCBmbiByZWZpbGxf YnVja2V0KCZtdXQgc2VsZiwgcmF0ZTogdTY0LCBjdXJyZW50X3RpbWU6IEluc3RhbnQpIHsKPj4g K8KgwqDCoMKgwqDCoMKgIGxldCB0aW1lX2RpZmYgPSBtYXRjaCAKPj4gY3VycmVudF90aW1lLmNo ZWNrZWRfZHVyYXRpb25fc2luY2Uoc2VsZi5sYXN0X3VwZGF0ZSkgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBTb21lKGR1cmF0aW9uKSA9PiBkdXJhdGlvbi5hc19uYW5vcygpLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBOb25lID0+IHJldHVybiwKPj4gK8KgwqDCoMKgwqDCoMKgIH07 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIHRpbWVfZGlmZiA9PSAwIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoCBzZWxmLmxhc3RfdXBkYXRlID0gY3VycmVudF90aW1lOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoCBsZXQgYWxsb3dlZF90cmFmZmljID0gKCh0aW1lX2RpZmYuc2F0dXJhdGluZ19t dWwocmF0ZSBhcyAKPj4gdTEyOCkpIC8gMV8wMDBfMDAwXzAwMCkKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLnRyeV9pbnRvKCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnVud3JhcF9v cih1NjQ6Ok1BWCk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYuY29uc3VtZWRfdG9rZW5z ID0gCj4+IHNlbGYuY29uc3VtZWRfdG9rZW5zLnNhdHVyYXRpbmdfc3ViKGFsbG93ZWRfdHJhZmZp Yyk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgZm4gcmVnaXN0ZXJfdHJhZmZpYygKPj4g K8KgwqDCoMKgwqDCoMKgICZtdXQgc2VsZiwKPj4gK8KgwqDCoMKgwqDCoMKgIHJhdGU6IHU2NCwK Pj4gK8KgwqDCoMKgwqDCoMKgIGJ1Y2tldF9zaXplOiB1NjQsCj4+ICvCoMKgwqDCoMKgwqDCoCBj dXJyZW50X3RpbWU6IEluc3RhbnQsCj4+ICvCoMKgwqDCoMKgwqDCoCBkYXRhX2xlbjogdTY0LAo+ PiArwqDCoMKgICkgLT4gRHVyYXRpb24gewo+PiArwqDCoMKgwqDCoMKgwqAgc2VsZi5yZWZpbGxf YnVja2V0KHJhdGUsIGN1cnJlbnRfdGltZSk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYu dHJhZmZpYyArPSBkYXRhX2xlbjsKPj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYuY29uc3VtZWRfdG9r ZW5zICs9IGRhdGFfbGVuOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiBzZWxmLmNvbnN1bWVk X3Rva2VucyA8PSBidWNrZXRfc2l6ZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBTZWxmOjpOT19ERUxBWTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKg IER1cmF0aW9uOjpmcm9tX25hbm9zKAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc2VsZi5j b25zdW1lZF90b2tlbnMgLSAKPj4gYnVja2V0X3NpemUpLnNhdHVyYXRpbmdfbXVsKDFfMDAwXzAw MF8wMDApIC8gcmF0ZSwKPiAKPiB0aGUgVUkgZG9lc24ndCBsZXQgeW91IHNldCAwLCBidXQgaWYg b25lIGVkaXRzIHRoZSBjb25maWcgZGlyZWN0bHkgdGhlCj4gYC4uLiAvIHJhdGVgIGlzIGEgcHJv YmxlbS4gVGhlIHNjZW5hcmlvIGlzIGEgbGl0dGxlIGZhciBmZXRjaGVkLCBidXQgCj4gc29tZW9u ZSBtaWdodCBxdWlja2x5IHdhbnQgdG8gdGVzdCBzb21ldGhpbmcgYW5kIGp1c3QgYXNzdW1lIDAg bWVhbnMKPiB1bmxpbWl0ZWQgYW5kIGp1c3Qgc2V0IGl0IHRvIHRoYXQgaW5zdGVhZCBvZiByZW1v dmluZyB0aGUgbGluZS4KCk5pY2UgY2F0Y2ghIFRoaXMgaXMgd3JvbmcgaW5kZWVkIChhbHNvIGlu IHRoZSBwcmUtZXhpc3RpbmcgY29kZSkuIFNpbmNlIAp0aGlzIGlzIGhvd2V2ZXIgYSBwcml2YXRl IG1ldGhvZCBvZiB0aGUgVGJmU3RhdGUsIEknZCByYXRoZXIgZml4IGl0IG9uIAp0aGUgY2FsbCBz aWRlcy4KPiBHaXZlbiB0aGF0IGl0IGlzIG5vdCBzdXBlciBlYXN5IHRvIHJ1biBpbnRvIHRoaXMg YC5taW4oMSlgIGlzIHByb2JhYmx5Cj4gZW5vdWdoIGhlcmUuIE5vdCBzdXJlIGlmIGNoZWNraW5n IGZvciAwIGluIHRoZSBlbmRwb2ludCB3aGVuIHNldHRpbmcgdGhlCj4gbGltaXQgbWFrZXMgc2Vu c2UuCgpZZXMsIHdpbGwgY2hlY2sgdGhhdCBhcyB3ZWxsIGZvciB2ZXJzaW9uIDIgb2YgdGhlIHBh dGNoZXMsIHRoYW5rcyEKCj4+ICvCoMKgwqDCoMKgwqDCoCApCj4+ICvCoMKgwqAgfQo+PiArfQo+ PiArCj4+ICsvLy8gVG9rZW4gYnVja2V0IGJhc2VkIHJhdGUgbGltaXRlcgo+PiArLy8vCj4+ICsv Ly8gSU1QT1JUQU5UOiBXZSB1c2UgdGhpcyBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeSwgc28gcGxl YXNlIGRvIG5vdAo+PiArLy8vIGNoYW5nZS9tb2RpZnkgdGhlIGxheW91dCAoZG8gbm90IGFkZCBm aWVsZHMpCj4+ICsjW3JlcHIoQyldCj4+ICtwdWIgc3RydWN0IFJhdGVMaW1pdGVyIHsKPj4gK8Kg wqDCoCByYXRlOiB1NjQswqDCoMKgwqDCoMKgwqAgLy8gdG9rZW5zL3NlY29uZAo+PiArwqDCoMKg IGJ1Y2tldF9zaXplOiB1NjQsIC8vIFRCRiBidWNrZXQgc2l6ZQo+PiArwqDCoMKgIHN0YXRlOiBU YmZTdGF0ZSwKPj4gK30KPj4gKwo+PiAraW1wbCBSYXRlTGltaXRlciB7Cj4+ICvCoMKgwqAgLy8v IENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UsIHVzaW5nIFtJbnN0YW50Ojpub3ddIGFzIHN0YXJ0IHRp bWUuCj4+ICvCoMKgwqAgcHViIGZuIG5ldyhyYXRlOiB1NjQsIGJ1Y2tldF9zaXplOiB1NjQpIC0+ IFNlbGYgewo+PiArwqDCoMKgwqDCoMKgwqAgbGV0IHN0YXJ0X3RpbWUgPSBJbnN0YW50Ojpub3co KTsKPj4gK8KgwqDCoMKgwqDCoMKgIFNlbGY6OndpdGhfc3RhcnRfdGltZShyYXRlLCBidWNrZXRf c2l6ZSwgc3RhcnRfdGltZSkKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCAvLy8gQ3JlYXRl cyBhIG5ldyBpbnN0YW5jZSB3aXRoIHNwZWNpZmllZCBgcmF0ZWAsIGBidWNrZXRfc2l6ZWAgCj4+ IGFuZCBgc3RhcnRfdGltZWAuCj4+ICvCoMKgwqAgcHViIGZuIHdpdGhfc3RhcnRfdGltZShyYXRl OiB1NjQsIGJ1Y2tldF9zaXplOiB1NjQsIHN0YXJ0X3RpbWU6IAo+PiBJbnN0YW50KSAtPiBTZWxm IHsKPj4gK8KgwqDCoMKgwqDCoMKgIFNlbGYgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy YXRlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidWNrZXRfc2l6ZSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RhdGU6IFRiZlN0YXRlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB0cmFmZmljOiAwLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGxhc3RfdXBkYXRlOiBzdGFydF90aW1lLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC8vIHN0YXJ0IHdpdGggZW1wdHkgYnVja2V0IChhbGwgdG9rZW5zIGNvbnN1bWVkKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN1bWVkX3Rva2VuczogYnVja2V0X3Np emUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0sCj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ ICvCoMKgwqAgfQo+PiArfQo+PiArCj4+ICtpbXBsIFJhdGVMaW1pdCBmb3IgUmF0ZUxpbWl0ZXIg ewo+PiArwqDCoMKgIGZuIHVwZGF0ZV9yYXRlKCZtdXQgc2VsZiwgcmF0ZTogdTY0LCBidWNrZXRf c2l6ZTogdTY0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLnJhdGUgPSByYXRlOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiBidWNrZXRfc2l6ZSA8IHNlbGYuYnVja2V0X3NpemUgJiYgCj4+ IHNlbGYuc3RhdGUuY29uc3VtZWRfdG9rZW5zID4gYnVja2V0X3NpemUgewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzZWxmLnN0YXRlLmNvbnN1bWVkX3Rva2VucyA9IGJ1Y2tldF9zaXplOyAv LyBzdGFydCBhZ2Fpbgo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDC oCBzZWxmLmJ1Y2tldF9zaXplID0gYnVja2V0X3NpemU7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqAgZm4gdHJhZmZpYygmc2VsZikgLT4gdTY0IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHNlbGYu c3RhdGUudHJhZmZpYwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGZuIHJlZ2lzdGVyX3Ry YWZmaWMoJm11dCBzZWxmLCBjdXJyZW50X3RpbWU6IEluc3RhbnQsIGRhdGFfbGVuOiAKPj4gdTY0 KSAtPiBEdXJhdGlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLnN0YXRlCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5yZWdpc3Rlcl90cmFmZmljKHNlbGYucmF0ZSwgc2VsZi5idWNrZXRf c2l6ZSwgCj4+IGN1cnJlbnRfdGltZSwgZGF0YV9sZW4pCj4+ICvCoMKgwqAgfQo+PiArfQo+PiAr Cj4+ICtpbXBsPFI6IFJhdGVMaW1pdCArIFNlbmQ+IFNoYXJlYWJsZVJhdGVMaW1pdCBmb3Igc3Rk OjpzeW5jOjpNdXRleDxSPiB7Cj4+ICvCoMKgwqAgZm4gdXBkYXRlX3JhdGUoJnNlbGYsIHJhdGU6 IHU2NCwgYnVja2V0X3NpemU6IHU2NCkgewo+PiArwqDCoMKgwqDCoMKgwqAgc2VsZi5sb2NrKCku dW53cmFwKCkudXBkYXRlX3JhdGUocmF0ZSwgYnVja2V0X3NpemUpOwo+PiArwqDCoMKgIH0KPj4g Kwo+PiArwqDCoMKgIGZuIHRyYWZmaWMoJnNlbGYpIC0+IHU2NCB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBzZWxmLmxvY2soKS51bndyYXAoKS50cmFmZmljKCkKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8Kg wqDCoCBmbiByZWdpc3Rlcl90cmFmZmljKCZzZWxmLCBjdXJyZW50X3RpbWU6IEluc3RhbnQsIGRh dGFfbGVuOiB1NjQpIAo+PiAtPiBEdXJhdGlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLmxv Y2soKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAudW53cmFwKCkKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLnJlZ2lzdGVyX3RyYWZmaWMoY3VycmVudF90aW1lLCBkYXRhX2xlbikKPj4g K8KgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gKy8vLyBBcnJheSBvZiByYXRlIGxpbWl0ZXJzLgo+PiAr Ly8vCj4+ICsvLy8gQSBncm91cCBvZiByYXRlIGxpbWl0ZXJzIHdpdGggc2FtZSBjb25maWd1cmF0 aW9uLgo+PiArcHViIHN0cnVjdCBSYXRlTGltaXRlclZlYyB7Cj4+ICvCoMKgwqAgcmF0ZTogdTY0 LMKgwqDCoMKgwqDCoMKgIC8vIHRva2Vucy9zZWNvbmQKPj4gK8KgwqDCoCBidWNrZXRfc2l6ZTog dTY0LCAvLyBUQkYgYnVja2V0IHNpemUKPj4gK8KgwqDCoCBzdGF0ZTogVmVjPFRiZlN0YXRlPiwK Pj4gK30KPj4gKwo+PiAraW1wbCBSYXRlTGltaXRlclZlYyB7Cj4+ICvCoMKgwqAgLy8vIENyZWF0 ZXMgYSBuZXcgaW5zdGFuY2UsIHVzaW5nIFtJbnN0YW50Ojpub3ddIGFzIHN0YXJ0IHRpbWUuCj4+ ICvCoMKgwqAgcHViIGZuIG5ldyhncm91cF9zaXplOiB1c2l6ZSwgcmF0ZTogdTY0LCBidWNrZXRf c2l6ZTogdTY0KSAtPiBTZWxmIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGxldCBzdGFydF90aW1lID0g SW5zdGFudDo6bm93KCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBTZWxmOjp3aXRoX3N0YXJ0X3RpbWUo Z3JvdXBfc2l6ZSwgcmF0ZSwgYnVja2V0X3NpemUsIHN0YXJ0X3RpbWUpCj4+ICvCoMKgwqAgfQo+ PiArCj4+ICvCoMKgwqAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugd2l0aCBzcGVjaWZpZWQg YHJhdGVgLCBgYnVja2V0X3NpemVgIAo+PiBhbmQgYHN0YXJ0X3RpbWVgLgo+PiArwqDCoMKgIHB1 YiBmbiB3aXRoX3N0YXJ0X3RpbWUoCj4+ICvCoMKgwqDCoMKgwqDCoCBncm91cF9zaXplOiB1c2l6 ZSwKPj4gK8KgwqDCoMKgwqDCoMKgIHJhdGU6IHU2NCwKPj4gK8KgwqDCoMKgwqDCoMKgIGJ1Y2tl dF9zaXplOiB1NjQsCj4+ICvCoMKgwqDCoMKgwqDCoCBzdGFydF90aW1lOiBJbnN0YW50LAo+PiAr wqDCoMKgICkgLT4gU2VsZiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBsZXQgc3RhdGUgPSBUYmZTdGF0 ZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRyYWZmaWM6IDAsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGxhc3RfdXBkYXRlOiBzdGFydF90aW1lLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvLyBzdGFydCB3aXRoIGVtcHR5IGJ1Y2tldCAoYWxsIHRva2VucyBjb25zdW1lZCkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3VtZWRfdG9rZW5zOiBidWNrZXRfc2l6ZSwK Pj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoCBTZWxmIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmF0ZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVja2V0 X3NpemUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0YXRlOiB2ZWMhW3N0YXRlOyBncm91 cF9zaXplXSwKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC oCAjW2FsbG93KGNsaXBweTo6bGVuX3dpdGhvdXRfaXNfZW1wdHkpXQo+PiArwqDCoMKgIC8vLyBS ZXR1cm4gdGhlIG51bWJlciBvZiBUQkYgZW50cmllcyAoZ3JvdXBfc2l6ZSkKPj4gK8KgwqDCoCBw dWIgZm4gbGVuKCZzZWxmKSAtPiB1c2l6ZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzZWxmLnN0YXRl LmxlbigpCj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgLy8vIFRyYWZmaWMgZm9yIHRoZSBz cGVjaWZpZWQgaW5kZXgKPj4gK8KgwqDCoCBwdWIgZm4gdHJhZmZpYygmc2VsZiwgaW5kZXg6IHVz aXplKSAtPiBSZXN1bHQ8dTY0LCBFcnJvcj4gewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgaW5kZXgg Pj0gc2VsZi5zdGF0ZS5sZW4oKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhaWwhKCJS YXRlTGltaXRlclZlYzo6dHJhZmZpYyAtIGluZGV4IG91dCBvZiByYW5nZSIpOwo+PiArwqDCoMKg wqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgT2soc2VsZi5zdGF0ZVtpbmRleF0udHJhZmZp YykKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCAvLy8gUmVnaXN0ZXIgdHJhZmZpYyBhdCB0 aGUgc3BlY2lmaWVkIGluZGV4Cj4+ICvCoMKgwqAgcHViIGZuIHJlZ2lzdGVyX3RyYWZmaWMoCj4+ ICvCoMKgwqDCoMKgwqDCoCAmbXV0IHNlbGYsCj4+ICvCoMKgwqDCoMKgwqDCoCBpbmRleDogdXNp emUsCj4+ICvCoMKgwqDCoMKgwqDCoCBjdXJyZW50X3RpbWU6IEluc3RhbnQsCj4+ICvCoMKgwqDC oMKgwqDCoCBkYXRhX2xlbjogdTY0LAo+PiArwqDCoMKgICkgLT4gUmVzdWx0PER1cmF0aW9uLCBF cnJvcj4gewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgaW5kZXggPj0gc2VsZi5zdGF0ZS5sZW4oKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhaWwhKCJSYXRlTGltaXRlclZlYzo6cmVnaXN0 ZXJfdHJhZmZpYyAtIGluZGV4IG91dCBvZiAKPj4gcmFuZ2UiKTsKPj4gK8KgwqDCoMKgwqDCoMKg IH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgT2soc2VsZi5zdGF0ZVtpbmRleF0ucmVnaXN0ZXJf dHJhZmZpYyhzZWxmLnJhdGUsIAo+PiBzZWxmLmJ1Y2tldF9zaXplLCBjdXJyZW50X3RpbWUsIGRh dGFfbGVuKSkKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9wcm94bW94LXJhdGUt bGltaXRlci9zcmMvc2hhcmVkX3JhdGVfbGltaXRlci5ycyBiLyAKPj4gcHJveG1veC1yYXRlLWxp bWl0ZXIvc3JjL3NoYXJlZF9yYXRlX2xpbWl0ZXIucnMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK Pj4gaW5kZXggMDAwMDAwMDAuLjI4MjJlN2VhCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvcHJv eG1veC1yYXRlLWxpbWl0ZXIvc3JjL3NoYXJlZF9yYXRlX2xpbWl0ZXIucnMKPj4gQEAgLTAsMCAr MSwxMzAgQEAKPj4gKy8vISBSYXRlIGxpbWl0ZXIgZGVzaWduZWQgZm9yIHNoYXJlZCBtZW1vcnkK Pj4gKwo+PiArdXNlIHN0ZDo6bWVtOjpNYXliZVVuaW5pdDsKPj4gK3VzZSBzdGQ6OnBhdGg6OlBh dGg7Cj4+ICt1c2Ugc3RkOjp0aW1lOjp7RHVyYXRpb24sIEluc3RhbnR9Owo+PiArCj4+ICt1c2Ug YW55aG93Ojp7YmFpbCwgRXJyb3J9Owo+PiArdXNlIG5peDo6c3lzOjpzdGF0OjpNb2RlOwo+PiAr dXNlIG5peDo6dW5pc3RkOjpVc2VyOwo+PiArCj4+ICt1c2UgcHJveG1veF9zaGFyZWRfbWVtb3J5 Ojp7Y2hlY2tfc3VidHlwZSwgaW5pdGlhbGl6ZV9zdWJ0eXBlfTsKPj4gK3VzZSBwcm94bW94X3No YXJlZF9tZW1vcnk6OntJbml0LCBTaGFyZWRNZW1vcnksIFNoYXJlZE11dGV4fTsKPj4gK3VzZSBw cm94bW94X3N5czo6ZnM6OntjcmVhdGVfcGF0aCwgQ3JlYXRlT3B0aW9uc307Cj4+ICsKPj4gK3Vz ZSBjcmF0ZTo6e1JhdGVMaW1pdCwgUmF0ZUxpbWl0ZXIsIFNoYXJlYWJsZVJhdGVMaW1pdH07Cj4+ ICsKPj4gKy8vLyBNYWdpYyBudW1iZXIgZm9yIHNoYXJlZCByYXRlIGxpbWl0ZXIgZXhwb3NlZCBm aWxlIG1hcHBpbmdzCj4+ICsvLy8KPj4gKy8vLyBHZW5lcmF0ZWQgYnkgYG9wZW5zc2w6OnNoYTo6 c2hhMjU2KGIiUHJveG1veCBCYWNrdXAgCj4+IFNoYXJlZFJhdGVMaW1pdGVyIHYxLjAiKVswLi44 XTtgCj4+ICsvLy8gT3JpZ2luYWwgbWFnaWMgbnVtYmVyIGtlcHQgd2hlbiBmYWN0b3JlZCBvdXQg ZnJvbSB0aGUgaW5pdGlhbAo+PiArLy8vIFBCUyBpbXBsZW1lbnRhdGlvbiBmb3IgZnVsbCBiYWNr d2FyZHMgY29tcGF0aWJpbGl0eS4KPj4gK3B1YiBjb25zdCBQUk9YTU9YX1NIQVJFRF9SQVRFX0xJ TUlURVJfTUFHSUNfMV8wOiBbdTg7IDhdID0gWzYsIDU4LCAKPj4gMjEzLCA5NiwgMTYxLCAxMjIs IDEzMCwgMTE3XTsKPj4gKwo+PiArLy8gV3JhcCBSYXRlTGltaXRlciwgc28gdGhhdCB3ZSBjYW4g cHJvdmlkZSBhbiBJbml0IGltcGwKPj4gKyNbcmVwcihDKV0KPj4gK3N0cnVjdCBXcmFwTGltaXRl cihSYXRlTGltaXRlcik7Cj4+ICsKPj4gK2ltcGwgSW5pdCBmb3IgV3JhcExpbWl0ZXIgewo+PiAr wqDCoMKgIGZuIGluaXRpYWxpemUodGhpczogJm11dCBNYXliZVVuaW5pdDxTZWxmPikgewo+PiAr wqDCoMKgwqDCoMKgwqAgLy8gZGVmYXVsdCBkb2VzIG5vdCBtYXR0ZXIgaGVyZSwgYmVjYXVzZSB3 ZSBvdmVycmlkZSBsYXRlcgo+PiArwqDCoMKgwqDCoMKgwqAgdGhpcy53cml0ZShXcmFwTGltaXRl cihSYXRlTGltaXRlcjo6bmV3KDFfMDAwXzAwMCwgMV8wMDBfMDAwKSkpOwo+PiArwqDCoMKgIH0K Pj4gK30KPj4gKwo+PiArI1tyZXByKEMpXQo+PiArc3RydWN0IFNoYXJlZFJhdGVMaW1pdGVyRGF0 YSB7Cj4+ICvCoMKgwqAgbWFnaWM6IFt1ODsgOF0sCj4+ICvCoMKgwqAgdGJmOiBTaGFyZWRNdXRl eDxXcmFwTGltaXRlcj4sCj4+ICvCoMKgwqAgcGFkZGluZzogW3U4OyA0MDk2IC0gMTA0XSwKPj4g K30KPj4gKwo+PiAraW1wbCBJbml0IGZvciBTaGFyZWRSYXRlTGltaXRlckRhdGEgewo+PiArwqDC oMKgIGZuIGluaXRpYWxpemUodGhpczogJm11dCBNYXliZVVuaW5pdDxTZWxmPikgewo+PiArwqDC oMKgwqDCoMKgwqAgdW5zYWZlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0IG1lID0g Jm11dCAqdGhpcy5hc19tdXRfcHRyKCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lLm1h Z2ljID0gUFJPWE1PWF9TSEFSRURfUkFURV9MSU1JVEVSX01BR0lDXzFfMDsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW5pdGlhbGl6ZV9zdWJ0eXBlKCZtdXQgbWUudGJmKTsKPj4gK8KgwqDC oMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBmbiBjaGVja190eXBlX21h Z2ljKHRoaXM6ICZNYXliZVVuaW5pdDxTZWxmPikgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+PiAr wqDCoMKgwqDCoMKgwqAgdW5zYWZlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0IG1l ID0gJip0aGlzLmFzX3B0cigpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiBtZS5tYWdp YyAhPSBQUk9YTU9YX1NIQVJFRF9SQVRFX0xJTUlURVJfTUFHSUNfMV8wIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYWlsISgiU2hhcmVkUmF0ZUxpbWl0ZXJEYXRhOiB3cm9u ZyBtYWdpYyBudW1iZXIiKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjaGVja19zdWJ0eXBlKCZtZS50YmYpPzsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgT2soKCkpCj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiAr fQo+PiArCj4+ICsvLy8gUmF0ZSBsaW1pdGVyIGRlc2lnbmVkIGZvciBzaGFyZWQgbWVtb3J5IChb U2hhcmVkTWVtb3J5XSkKPj4gKy8vLwo+PiArLy8vIFRoZSBhY3R1YWwgW1JhdGVMaW1pdGVyXSBp cyBwcm90ZWN0ZWQgYnkgYSBbU2hhcmVkTXV0ZXhdIGFuZAo+PiArLy8vIGltcGxlbWVudHMgW0lu aXRdLiBUaGlzIHdheSB3ZSBjYW4gc2hhcmUgdGhlIGxpbWl0ZXIgYmV0d2Vlbgo+PiArLy8vIGRp ZmZlcmVudCBwcm9jZXNzZXMuCj4+ICtwdWIgc3RydWN0IFNoYXJlZFJhdGVMaW1pdGVyIHsKPj4g K8KgwqDCoCBzaG1lbTogU2hhcmVkTWVtb3J5PFNoYXJlZFJhdGVMaW1pdGVyRGF0YT4sCj4+ICt9 Cj4+ICsKPj4gK2ltcGwgU2hhcmVkUmF0ZUxpbWl0ZXIgewo+PiArwqDCoMKgIC8vLyBDcmVhdGVz IGEgbmV3IG1tYXAnZWQgaW5zdGFuY2UuCj4+ICvCoMKgwqAgLy8vCj4+ICvCoMKgwqAgLy8vIERh dGEgaXMgbWFwcGVkIGluIGA8YmFzZV9wYXRoPi88bmFtZT5gIHVzaW5nCj4+ICvCoMKgwqAgLy8v IGBUTVBGU2AuCj4+ICvCoMKgwqAgcHViIGZuIG1tYXBfc2htZW08UDogQXNSZWY8UGF0aD4+KAo+ PiArwqDCoMKgwqDCoMKgwqAgbmFtZTogJnN0ciwKPj4gK8KgwqDCoMKgwqDCoMKgIHJhdGU6IHU2 NCwKPj4gK8KgwqDCoMKgwqDCoMKgIGJ1cnN0OiB1NjQsCj4+ICvCoMKgwqDCoMKgwqDCoCB1c2Vy OiBVc2VyLAo+PiArwqDCoMKgwqDCoMKgwqAgYmFzZV9wYXRoOiBQLAo+PiArwqDCoMKgICkgLT4g UmVzdWx0PFNlbGYsIEVycm9yPiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBsZXQgbXV0IHBhdGggPSBi YXNlX3BhdGguYXNfcmVmKCkudG9fcGF0aF9idWYoKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAg bGV0IGRpcl9vcHRzID0gQ3JlYXRlT3B0aW9uczo6bmV3KCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLnBlcm0oTW9kZTo6ZnJvbV9iaXRzX3RydW5jYXRlKDBvNzcwKSkKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLm93bmVyKHVzZXIudWlkKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAuZ3JvdXAodXNlci5naWQpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBjcmVhdGVfcGF0aCgm cGF0aCwgU29tZShkaXJfb3B0cyksIFNvbWUoZGlyX29wdHMpKT87Cj4+ICsKPj4gK8KgwqDCoMKg wqDCoMKgIHBhdGgucHVzaChuYW1lKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgbGV0IGZpbGVf b3B0cyA9IENyZWF0ZU9wdGlvbnM6Om5ldygpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5w ZXJtKE1vZGU6OmZyb21fYml0c190cnVuY2F0ZSgwbzY2MCkpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5vd25lcih1c2VyLnVpZCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmdyb3Vw KHVzZXIuZ2lkKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgbGV0IHNobWVtOiBTaGFyZWRNZW1v cnk8U2hhcmVkUmF0ZUxpbWl0ZXJEYXRhPiA9IAo+PiBTaGFyZWRNZW1vcnk6Om9wZW4oJnBhdGgs IGZpbGVfb3B0cyk/Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBzaG1lbS5kYXRhKCkudGJmLmxv Y2soKS4wLnVwZGF0ZV9yYXRlKHJhdGUsIGJ1cnN0KTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAg T2soU2VsZiB7IHNobWVtIH0pCj4+ICvCoMKgwqAgfQo+PiArfQo+PiArCj4+ICtpbXBsIFNoYXJl YWJsZVJhdGVMaW1pdCBmb3IgU2hhcmVkUmF0ZUxpbWl0ZXIgewo+PiArwqDCoMKgIGZuIHVwZGF0 ZV9yYXRlKCZzZWxmLCByYXRlOiB1NjQsIGJ1Y2tldF9zaXplOiB1NjQpIHsKPj4gK8KgwqDCoMKg wqDCoMKgIHNlbGYuc2htZW0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRhdGEoKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAudGJmCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5s b2NrKCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLjAKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLnVwZGF0ZV9yYXRlKHJhdGUsIGJ1Y2tldF9zaXplKTsKPj4gK8KgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoCBmbiB0cmFmZmljKCZzZWxmKSAtPiB1NjQgewo+PiArwqDCoMKgwqDCoMKgwqAg c2VsZi5zaG1lbS5kYXRhKCkudGJmLmxvY2soKS4wLnRyYWZmaWMoKQo+PiArwqDCoMKgIH0KPj4g Kwo+PiArwqDCoMKgIGZuIHJlZ2lzdGVyX3RyYWZmaWMoJnNlbGYsIGN1cnJlbnRfdGltZTogSW5z dGFudCwgZGF0YV9sZW46IHU2NCkgCj4+IC0+IER1cmF0aW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKg IHNlbGYuc2htZW0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRhdGEoKQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAudGJmCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5sb2NrKCkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLjAKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LnJlZ2lzdGVyX3RyYWZmaWMoY3VycmVudF90aW1lLCBkYXRhX2xlbikKPj4gK8KgwqDCoCB9Cj4+ ICt9Cj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBz Oi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=