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 4976F1FF163 for ; Thu, 7 Nov 2024 10:10:39 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 83A881C57D; Thu, 7 Nov 2024 10:10:50 +0100 (CET) Message-ID: Date: Thu, 7 Nov 2024 10:10:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= , pbs-devel@lists.proxmox.com References: <20241031121519.434337-1-c.ebner@proxmox.com> <20241031121519.434337-20-c.ebner@proxmox.com> <173090643519.79072.2923413753129715762@yuna.proxmox.com> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: <173090643519.79072.2923413753129715762@yuna.proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.029 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 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 v6 proxmox-backup 19/29] api: sync jobs: expose optional `sync-direction` parameter 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" T24gMTEvNi8yNCAxNjoyMCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBRdW90aW5nIENo cmlzdGlhbiBFYm5lciAoMjAyNC0xMC0zMSAxMzoxNTowOSkKPj4gRXhwb3NlcyBhbmQgc3dpdGNo IHRoZSBjb25maWcgdHlwZSBmb3Igc3luYyBqb2Igb3BlcmF0aW9ucyBiYXNlZAo+PiBvbiB0aGUg YHN5bmMtZGlyZWN0aW9uYCBwYXJhbWV0ZXIsIGV4cG9zZWQgb24gcmVxdWlyZWQgYXBpIGVuZHBv aW50cy4KPj4KPj4gSWYgbm90IHNldCwgdGhlIGRlZmF1bHQgY29uZmlnIHR5cGUgaXMgYHN5bmNg IGFuZCB0aGUgZGVmYXVsdCBzeW5jCj4+IGRpcmVjdGlvbiBpcyBgcHVsbGAgZm9yIGZ1bGwgYmFj a3dhcmRzIGNvbXBhdGliaWxpdHkuIFdoZW5ldmVyCj4+IHBvc3NpYmxlLCBkZXRlcmltbmUgdGhl IHN5bmMgZGlyZWN0aW9uIGFuZCBjb25maWcgdHlwZSBmcm9tIHRoZSBzeW5jCj4gCj4gdHlwbyAi ZGV0ZXJtaW5lIgoKQWNrZWQhCgo+IAo+PiBqb2IgY29uZmlnIGRpcmVjdGx5IHJhdGhlciB0aGFu IHJlcXVpcmluZyBpdCBhcyBvcHRpb25hbCBhcGkKPj4gcGFyYW1ldGVyLgo+Pgo+PiBGdXJ0aGVy LCBleHRlbmQgcmVhZCBhbmQgbW9kaWZ5IGFjY2VzcyBjaGVja3MgYnkgc3luYyBkaXJlY3Rpb24g dG8KPj4gY29uZGl0aW9uYWxseSBjaGVjayBmb3IgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIGlu IHB1bGwgYW5kIHB1c2gKPj4gZGlyZWN0aW9uLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rp YW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4+IC0tLQo+PiBjaGFuZ2VzIHNpbmNlIHZl cnNpb24gNToKPj4gLSBTcXVhc2hlZCBwZXJtaXNzaW9uIGNoZWNrIHBhdGNoZXMgaW50byB0aGlz IG9uZSwgYXMgdGhleSBtYWtlIG5vdCBtdWNoCj4+ICAgIHNlbnNlIHdpdGhvdXQgdGhpcwo+PiAt IE9ubHkgZXhwb3NlIG9wdGlvbmFsIHN5bmMtZGlyZWN0aW9uIHBhcmFtZXRlciBmb3IgYXBpIGVu ZHBvaW50cyB3aGljaAo+PiAgICByZXF1aXJlIHRoZW0sIHVzZSB0aGUgam9iIGNvbmZpZyB0byBk ZXRlcm1pbmUgc3luYy1kaXJlY3Rpb24gYW5kL29yCj4+ICAgIGNvbmZpZy10eXBlIG90aGVyd2lz ZS4KPj4KPj4gICBzcmMvYXBpMi9hZG1pbi9zeW5jLnJzICAgICAgICAgICAgICAgfCAgMzQgKyst LQo+PiAgIHNyYy9hcGkyL2NvbmZpZy9kYXRhc3RvcmUucnMgICAgICAgICB8ICAxMSArLQo+PiAg IHNyYy9hcGkyL2NvbmZpZy9ub3RpZmljYXRpb25zL21vZC5ycyB8ICAxOSArLQo+PiAgIHNyYy9h cGkyL2NvbmZpZy9zeW5jLnJzICAgICAgICAgICAgICB8IDI4MCArKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0KPj4gICBzcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzICAgICAgfCAgMTEg Ky0KPj4gICA1IGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMo LSkKPj4KPj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2FkbWluL3N5bmMucnMgYi9zcmMvYXBpMi9h ZG1pbi9zeW5jLnJzCj4+IGluZGV4IGJlMzI0NTY0Yy4uOGEyNDJiMWMzIDEwMDY0NAo+PiAtLS0g YS9zcmMvYXBpMi9hZG1pbi9zeW5jLnJzCj4+ICsrKyBiL3NyYy9hcGkyL2FkbWluL3N5bmMucnMK Pj4gQEAgLTEsNiArMSw3IEBACj4+ICAgLy8hIERhdGFzdG9yZSBTeW5jaHJvbml6YXRpb24gSm9i IE1hbmFnZW1lbnQKPj4gICAKPj4gICB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJy b3J9Owo+PiArdXNlIHNlcmRlOjpEZXNlcmlhbGl6ZTsKPj4gICB1c2Ugc2VyZGVfanNvbjo6VmFs dWU7Cj4+ICAgCj4+ICAgdXNlIHByb3htb3hfcm91dGVyOjp7Cj4+IEBAIC0yOSw2ICszMCwxMCBA QCB1c2UgY3JhdGU6OnsKPj4gICAgICAgICAgICAgICAgICAgc2NoZW1hOiBEQVRBU1RPUkVfU0NI RU1BLAo+PiAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPj4gICAgICAgICAgICAg ICB9LAo+PiArICAgICAgICAgICAgInN5bmMtZGlyZWN0aW9uIjogewo+PiArICAgICAgICAgICAg ICAgIHR5cGU6IFN5bmNEaXJlY3Rpb24sCj4+ICsgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRy dWUsCj4+ICsgICAgICAgICAgICB9LAo+PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICAg ICAgcmV0dXJuczogewo+PiBAQCAtNDQsNiArNDksNyBAQCB1c2UgY3JhdGU6OnsKPj4gICAvLy8g TGlzdCBhbGwgc3luYyBqb2JzCj4+ICAgcHViIGZuIGxpc3Rfc3luY19qb2JzKAo+PiAgICAgICBz dG9yZTogT3B0aW9uPFN0cmluZz4sCj4+ICsgICAgc3luY19kaXJlY3Rpb246IE9wdGlvbjxTeW5j RGlyZWN0aW9uPiwKPj4gICAgICAgX3BhcmFtOiBWYWx1ZSwKPj4gICAgICAgcnBjZW52OiAmbXV0 IGR5biBScGNFbnZpcm9ubWVudCwKPj4gICApIC0+IFJlc3VsdDxWZWM8U3luY0pvYlN0YXR1cz4s IEVycm9yPiB7Cj4+IEBAIC01Miw4ICs1OCw5IEBAIHB1YiBmbiBsaXN0X3N5bmNfam9icygKPj4g ICAKPj4gICAgICAgbGV0IChjb25maWcsIGRpZ2VzdCkgPSBzeW5jOjpjb25maWcoKT87Cj4+ICAg Cj4+ICsgICAgbGV0IHN5bmNfZGlyZWN0aW9uID0gc3luY19kaXJlY3Rpb24udW53cmFwX29yX2Rl ZmF1bHQoKTsKPj4gICAgICAgbGV0IGpvYl9jb25maWdfaXRlciA9IGNvbmZpZwo+PiAtICAgICAg ICAuY29udmVydF90b190eXBlZF9hcnJheSgic3luYyIpPwo+PiArICAgICAgICAuY29udmVydF90 b190eXBlZF9hcnJheShzeW5jX2RpcmVjdGlvbi5hc19jb25maWdfdHlwZV9zdHIoKSk/Cj4+ICAg ICAgICAgICAuaW50b19pdGVyKCkKPj4gICAgICAgICAgIC5maWx0ZXIofGpvYjogJlN5bmNKb2JD b25maWd8IHsKPj4gICAgICAgICAgICAgICBpZiBsZXQgU29tZShzdG9yZSkgPSAmc3RvcmUgewo+ PiBAQCAtNjIsNyArNjksOSBAQCBwdWIgZm4gbGlzdF9zeW5jX2pvYnMoCj4+ICAgICAgICAgICAg ICAgICAgIHRydWUKPj4gICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgICB9KQo+PiAtICAgICAg ICAuZmlsdGVyKHxqb2I6ICZTeW5jSm9iQ29uZmlnfCBjaGVja19zeW5jX2pvYl9yZWFkX2FjY2Vz cygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgam9iKSk7Cj4+ICsgICAgICAgIC5maWx0ZXIofGpvYjog JlN5bmNKb2JDb25maWd8IHsKPj4gKyAgICAgICAgICAgIGNoZWNrX3N5bmNfam9iX3JlYWRfYWNj ZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCBqb2IsIHN5bmNfZGlyZWN0aW9uKQo+PiArICAgICAg ICB9KTsKPj4gICAKPj4gICAgICAgbGV0IG11dCBsaXN0ID0gVmVjOjpuZXcoKTsKPj4gICAKPj4g QEAgLTEwNiwyNCArMTE1LDIzIEBAIHB1YiBmbiBydW5fc3luY19qb2IoCj4+ICAgICAgIGxldCB1 c2VyX2luZm8gPSBDYWNoZWRVc2VySW5mbzo6bmV3KCk/Owo+PiAgIAo+PiAgICAgICBsZXQgKGNv bmZpZywgX2RpZ2VzdCkgPSBzeW5jOjpjb25maWcoKT87Cj4+IC0gICAgbGV0IHN5bmNfam9iOiBT eW5jSm9iQ29uZmlnID0gY29uZmlnLmxvb2t1cCgic3luYyIsICZpZCk/Owo+PiArICAgIGxldCAo Y29uZmlnX3R5cGUsIGNvbmZpZ19zZWN0aW9uKSA9IGNvbmZpZwo+PiArICAgICAgICAuc2VjdGlv bnMKPj4gKyAgICAgICAgLmdldCgmaWQpCj4+ICsgICAgICAgIC5va19vcl9lbHNlKHx8IGZvcm1h dF9lcnIhKCJObyBzeW5jIGpvYiB3aXRoIGlkICd7aWR9JyBmb3VuZCBpbiBjb25maWciKSk/Owo+ PiArCj4+ICsgICAgbGV0IHN5bmNfZGlyZWN0aW9uID0gU3luY0RpcmVjdGlvbjo6ZnJvbV9jb25m aWdfdHlwZV9zdHIoY29uZmlnX3R5cGUpPzsKPj4gKyAgICBsZXQgc3luY19qb2IgPSBTeW5jSm9i Q29uZmlnOjpkZXNlcmlhbGl6ZShjb25maWdfc2VjdGlvbik/Owo+PiAgIAo+PiAtICAgIGlmICFj aGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmc3luY19q b2IpIHsKPj4gLSAgICAgICAgYmFpbCEoInBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIik7Cj4+ICsg ICAgaWYgIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoJnVzZXJfaW5mbywgJmF1dGhfaWQs ICZzeW5jX2pvYiwgc3luY19kaXJlY3Rpb24pIHsKPj4gKyAgICAgICAgYmFpbCEoInBlcm1pc3Np b24gY2hlY2sgZmFpbGVkLCAne2F1dGhfaWR9JyBpcyBtaXNzaW5nIGFjY2VzcyIpOwo+PiAgICAg ICB9Cj4+ICAgCj4+ICAgICAgIGxldCBqb2IgPSBKb2I6Om5ldygic3luY2pvYiIsICZpZCk/Owo+ PiAgIAo+PiAgICAgICBsZXQgdG9fc3Rkb3V0ID0gcnBjZW52LmVudl90eXBlKCkgPT0gUnBjRW52 aXJvbm1lbnRUeXBlOjpDTEk7Cj4+ICAgCj4+IC0gICAgbGV0IHVwaWRfc3RyID0gZG9fc3luY19q b2IoCj4+IC0gICAgICAgIGpvYiwKPj4gLSAgICAgICAgc3luY19qb2IsCj4+IC0gICAgICAgICZh dXRoX2lkLAo+PiAtICAgICAgICBOb25lLAo+PiAtICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxs LAo+PiAtICAgICAgICB0b19zdGRvdXQsCj4+IC0gICAgKT87Cj4+ICsgICAgbGV0IHVwaWRfc3Ry ID0gZG9fc3luY19qb2Ioam9iLCBzeW5jX2pvYiwgJmF1dGhfaWQsIE5vbmUsIHN5bmNfZGlyZWN0 aW9uLCB0b19zdGRvdXQpPzsKPj4gICAKPj4gICAgICAgT2sodXBpZF9zdHIpCj4+ICAgfQo+PiBk aWZmIC0tZ2l0IGEvc3JjL2FwaTIvY29uZmlnL2RhdGFzdG9yZS5ycyBiL3NyYy9hcGkyL2NvbmZp Zy9kYXRhc3RvcmUucnMKPj4gaW5kZXggY2E2ZWRmMDVhLi5jMTUxZWRhMTAgMTAwNjQ0Cj4+IC0t LSBhL3NyYy9hcGkyL2NvbmZpZy9kYXRhc3RvcmUucnMKPj4gKysrIGIvc3JjL2FwaTIvY29uZmln L2RhdGFzdG9yZS5ycwo+PiBAQCAtMTMsOCArMTMsOSBAQCB1c2UgcHJveG1veF91dWlkOjpVdWlk Owo+PiAgIAo+PiAgIHVzZSBwYnNfYXBpX3R5cGVzOjp7Cj4+ICAgICAgIEF1dGhpZCwgRGF0YVN0 b3JlQ29uZmlnLCBEYXRhU3RvcmVDb25maWdVcGRhdGVyLCBEYXRhc3RvcmVOb3RpZnksIERhdGFz dG9yZVR1bmluZywgS2VlcE9wdGlvbnMsCj4+IC0gICAgTWFpbnRlbmFuY2VNb2RlLCBQcnVuZUpv YkNvbmZpZywgUHJ1bmVKb2JPcHRpb25zLCBEQVRBU1RPUkVfU0NIRU1BLCBQUklWX0RBVEFTVE9S RV9BTExPQ0FURSwKPj4gLSAgICBQUklWX0RBVEFTVE9SRV9BVURJVCwgUFJJVl9EQVRBU1RPUkVf TU9ESUZZLCBQUk9YTU9YX0NPTkZJR19ESUdFU1RfU0NIRU1BLCBVUElEX1NDSEVNQSwKPj4gKyAg ICBNYWludGVuYW5jZU1vZGUsIFBydW5lSm9iQ29uZmlnLCBQcnVuZUpvYk9wdGlvbnMsIFN5bmNE aXJlY3Rpb24sIERBVEFTVE9SRV9TQ0hFTUEsCj4+ICsgICAgUFJJVl9EQVRBU1RPUkVfQUxMT0NB VEUsIFBSSVZfREFUQVNUT1JFX0FVRElULCBQUklWX0RBVEFTVE9SRV9NT0RJRlksCj4+ICsgICAg UFJPWE1PWF9DT05GSUdfRElHRVNUX1NDSEVNQSwgVVBJRF9TQ0hFTUEsCj4+ICAgfTsKPj4gICB1 c2UgcGJzX2NvbmZpZzo6QmFja3VwTG9ja0d1YXJkOwo+PiAgIHVzZSBwYnNfZGF0YXN0b3JlOjpj aHVua19zdG9yZTo6Q2h1bmtTdG9yZTsKPj4gQEAgLTQ5OCw4ICs0OTksMTAgQEAgcHViIGFzeW5j IGZuIGRlbGV0ZV9kYXRhc3RvcmUoCj4+ICAgICAgICAgICBmb3Igam9iIGluIGxpc3RfdmVyaWZp Y2F0aW9uX2pvYnMoU29tZShuYW1lLmNsb25lKCkpLCBWYWx1ZTo6TnVsbCwgcnBjZW52KT8gewo+ PiAgICAgICAgICAgICAgIGRlbGV0ZV92ZXJpZmljYXRpb25fam9iKGpvYi5jb25maWcuaWQsIE5v bmUsIHJwY2Vudik/Cj4+ICAgICAgICAgICB9Cj4+IC0gICAgICAgIGZvciBqb2IgaW4gbGlzdF9z eW5jX2pvYnMoU29tZShuYW1lLmNsb25lKCkpLCBWYWx1ZTo6TnVsbCwgcnBjZW52KT8gewo+PiAt ICAgICAgICAgICAgZGVsZXRlX3N5bmNfam9iKGpvYi5jb25maWcuaWQsIE5vbmUsIHJwY2Vudik/ Cj4+ICsgICAgICAgIGZvciBkaXJlY3Rpb24gaW4gW1N5bmNEaXJlY3Rpb246OlB1bGwsIFN5bmNE aXJlY3Rpb246OlB1c2hdIHsKPj4gKyAgICAgICAgICAgIGZvciBqb2IgaW4gbGlzdF9zeW5jX2pv YnMoU29tZShuYW1lLmNsb25lKCkpLCBTb21lKGRpcmVjdGlvbiksIFZhbHVlOjpOdWxsLCBycGNl bnYpPyB7Cj4+ICsgICAgICAgICAgICAgICAgZGVsZXRlX3N5bmNfam9iKGpvYi5jb25maWcuaWQs IE5vbmUsIHJwY2Vudik/Cj4+ICsgICAgICAgICAgICB9Cj4+ICAgICAgICAgICB9Cj4+ICAgICAg ICAgICBmb3Igam9iIGluIGxpc3RfcHJ1bmVfam9icyhTb21lKG5hbWUuY2xvbmUoKSksIFZhbHVl OjpOdWxsLCBycGNlbnYpPyB7Cj4+ICAgICAgICAgICAgICAgZGVsZXRlX3BydW5lX2pvYihqb2Iu Y29uZmlnLmlkLCBOb25lLCBycGNlbnYpPwo+PiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvY29uZmln L25vdGlmaWNhdGlvbnMvbW9kLnJzIGIvc3JjL2FwaTIvY29uZmlnL25vdGlmaWNhdGlvbnMvbW9k LnJzCj4+IGluZGV4IGRmZTgyZWQwMy4uMzFjNDg1MWMxIDEwMDY0NAo+PiAtLS0gYS9zcmMvYXBp Mi9jb25maWcvbm90aWZpY2F0aW9ucy9tb2QucnMKPj4gKysrIGIvc3JjL2FwaTIvY29uZmlnL25v dGlmaWNhdGlvbnMvbW9kLnJzCj4+IEBAIC05LDcgKzksNyBAQCB1c2UgcHJveG1veF9zY2hlbWE6 OmFwaTsKPj4gICB1c2UgcHJveG1veF9zb3J0YWJsZV9tYWNybzo6c29ydGFibGU7Cj4+ICAgCj4+ ICAgdXNlIGNyYXRlOjphcGkyOjphZG1pbjo6ZGF0YXN0b3JlOjpnZXRfZGF0YXN0b3JlX2xpc3Q7 Cj4+IC11c2UgcGJzX2FwaV90eXBlczo6UFJJVl9TWVNfQVVESVQ7Cj4+ICt1c2UgcGJzX2FwaV90 eXBlczo6e1N5bmNEaXJlY3Rpb24sIFBSSVZfU1lTX0FVRElUfTsKPj4gICAKPj4gICB1c2UgY3Jh dGU6OmFwaTI6OmFkbWluOjpwcnVuZTo6bGlzdF9wcnVuZV9qb2JzOwo+PiAgIHVzZSBjcmF0ZTo6 YXBpMjo6YWRtaW46OnN5bmM6Omxpc3Rfc3luY19qb2JzOwo+PiBAQCAtMTU0LDEzICsxNTQsMTUg QEAgcHViIGZuIGdldF92YWx1ZXMoCj4+ICAgICAgICAgICB9KTsKPj4gICAgICAgfQo+PiAgIAo+ PiAtICAgIGxldCBzeW5jX2pvYnMgPSBsaXN0X3N5bmNfam9icyhOb25lLCBwYXJhbS5jbG9uZSgp LCBycGNlbnYpPzsKPj4gLSAgICBmb3Igam9iIGluIHN5bmNfam9icyB7Cj4+IC0gICAgICAgIHZh bHVlcy5wdXNoKE1hdGNoYWJsZVZhbHVlIHsKPj4gLSAgICAgICAgICAgIGZpZWxkOiAiam9iLWlk Ii5pbnRvKCksCj4+IC0gICAgICAgICAgICB2YWx1ZTogam9iLmNvbmZpZy5pZCwKPj4gLSAgICAg ICAgICAgIGNvbW1lbnQ6IGpvYi5jb25maWcuY29tbWVudCwKPj4gLSAgICAgICAgfSk7Cj4+ICsg ICAgZm9yIGRpcmVjdGlvbiBpbiBbU3luY0RpcmVjdGlvbjo6UHVsbCwgU3luY0RpcmVjdGlvbjo6 UHVzaF0gewo+PiArICAgICAgICBsZXQgc3luY19qb2JzID0gbGlzdF9zeW5jX2pvYnMoTm9uZSwg U29tZShkaXJlY3Rpb24pLCBwYXJhbS5jbG9uZSgpLCBycGNlbnYpPzsKPj4gKyAgICAgICAgZm9y IGpvYiBpbiBzeW5jX2pvYnMgewo+PiArICAgICAgICAgICAgdmFsdWVzLnB1c2goTWF0Y2hhYmxl VmFsdWUgewo+PiArICAgICAgICAgICAgICAgIGZpZWxkOiAiam9iLWlkIi5pbnRvKCksCj4+ICsg ICAgICAgICAgICAgICAgdmFsdWU6IGpvYi5jb25maWcuaWQsCj4+ICsgICAgICAgICAgICAgICAg Y29tbWVudDogam9iLmNvbmZpZy5jb21tZW50LAo+PiArICAgICAgICAgICAgfSk7Cj4+ICsgICAg ICAgIH0KPj4gICAgICAgfQo+PiAgIAo+PiAgICAgICBsZXQgdmVyaWZ5X2pvYnMgPSBsaXN0X3Zl cmlmaWNhdGlvbl9qb2JzKE5vbmUsIHBhcmFtLmNsb25lKCksIHJwY2Vudik/Owo+PiBAQCAtMTg0 LDYgKzE4Niw3IEBAIHB1YiBmbiBnZXRfdmFsdWVzKAo+PiAgICAgICAgICAgInBhY2thZ2UtdXBk YXRlcyIsCj4+ICAgICAgICAgICAicHJ1bmUiLAo+PiAgICAgICAgICAgInN5bmMiLAo+PiArICAg ICAgICAic3luYy1wdXNoIiwKPj4gICAgICAgICAgICJzeXN0ZW0tbWFpbCIsCj4+ICAgICAgICAg ICAidGFwZS1iYWNrdXAiLAo+PiAgICAgICAgICAgInRhcGUtbG9hZCIsCj4+IGRpZmYgLS1naXQg YS9zcmMvYXBpMi9jb25maWcvc3luYy5ycyBiL3NyYy9hcGkyL2NvbmZpZy9zeW5jLnJzCj4+IGlu ZGV4IDM5NjMwNDllOS4uMmYzMmFhY2NiIDEwMDY0NAo+PiAtLS0gYS9zcmMvYXBpMi9jb25maWcv c3luYy5ycwo+PiArKysgYi9zcmMvYXBpMi9jb25maWcvc3luYy5ycwo+PiBAQCAtMSw2ICsxLDcg QEAKPj4gICB1c2UgOjpzZXJkZTo6e0Rlc2VyaWFsaXplLCBTZXJpYWxpemV9Owo+PiAgIHVzZSBh bnlob3c6OntiYWlsLCBFcnJvcn07Cj4+ICAgdXNlIGhleDo6RnJvbUhleDsKPj4gK3VzZSBwYnNf YXBpX3R5cGVzOjpTeW5jRGlyZWN0aW9uOwo+PiAgIHVzZSBzZXJkZV9qc29uOjpWYWx1ZTsKPj4g ICAKPj4gICB1c2UgcHJveG1veF9yb3V0ZXI6OntodHRwX2JhaWwsIFBlcm1pc3Npb24sIFJvdXRl ciwgUnBjRW52aXJvbm1lbnR9Owo+PiBAQCAtOCw4ICs5LDkgQEAgdXNlIHByb3htb3hfc2NoZW1h Ojp7YXBpLCBwYXJhbV9iYWlsfTsKPj4gICAKPj4gICB1c2UgcGJzX2FwaV90eXBlczo6ewo+PiAg ICAgICBBdXRoaWQsIFN5bmNKb2JDb25maWcsIFN5bmNKb2JDb25maWdVcGRhdGVyLCBKT0JfSURf U0NIRU1BLCBQUklWX0RBVEFTVE9SRV9BVURJVCwKPj4gLSAgICBQUklWX0RBVEFTVE9SRV9CQUNL VVAsIFBSSVZfREFUQVNUT1JFX01PRElGWSwgUFJJVl9EQVRBU1RPUkVfUFJVTkUsIFBSSVZfUkVN T1RFX0FVRElULAo+PiAtICAgIFBSSVZfUkVNT1RFX1JFQUQsIFBST1hNT1hfQ09ORklHX0RJR0VT VF9TQ0hFTUEsCj4+ICsgICAgUFJJVl9EQVRBU1RPUkVfQkFDS1VQLCBQUklWX0RBVEFTVE9SRV9N T0RJRlksIFBSSVZfREFUQVNUT1JFX1BSVU5FLCBQUklWX0RBVEFTVE9SRV9SRUFELAo+PiArICAg IFBSSVZfUkVNT1RFX0FVRElULCBQUklWX1JFTU9URV9EQVRBU1RPUkVfQkFDS1VQLCBQUklWX1JF TU9URV9EQVRBU1RPUkVfTU9ESUZZLAo+PiArICAgIFBSSVZfUkVNT1RFX0RBVEFTVE9SRV9QUlVO RSwgUFJJVl9SRU1PVEVfUkVBRCwgUFJPWE1PWF9DT05GSUdfRElHRVNUX1NDSEVNQSwKPj4gICB9 Owo+PiAgIHVzZSBwYnNfY29uZmlnOjpzeW5jOwo+PiAgIAo+PiBAQCAtMjAsMTggKzIyLDM1IEBA IHB1YiBmbiBjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygKPj4gICAgICAgdXNlcl9pbmZvOiAm Q2FjaGVkVXNlckluZm8sCj4+ICAgICAgIGF1dGhfaWQ6ICZBdXRoaWQsCj4+ICAgICAgIGpvYjog JlN5bmNKb2JDb25maWcsCj4+ICsgICAgc3luY19kaXJlY3Rpb246IFN5bmNEaXJlY3Rpb24sCj4+ ICAgKSAtPiBib29sIHsKPj4gKyAgICAvLyBjaGVjayBmb3IgYXVkaXQgYWNjZXNzIG9uIGRhdGFz dG9yZS9uYW1lc3BhY2UsIGFwcGxpZXMgZm9yIHB1bGwgYW5kIHB1c2ggZGlyZWN0aW9uCj4+ICAg ICAgIGxldCBuc19hbmNob3JfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQs ICZqb2IuYWNsX3BhdGgoKSk7Cj4+ICAgICAgIGlmIG5zX2FuY2hvcl9wcml2cyAmIFBSSVZfREFU QVNUT1JFX0FVRElUID09IDAgewo+PiAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+PiAgICAgICB9 Cj4+ICAgCj4+IC0gICAgaWYgbGV0IFNvbWUocmVtb3RlKSA9ICZqb2IucmVtb3RlIHsKPj4gLSAg ICAgICAgbGV0IHJlbW90ZV9wcml2cyA9IHVzZXJfaW5mby5sb29rdXBfcHJpdnMoYXV0aF9pZCwg JlsicmVtb3RlIiwgcmVtb3RlXSk7Cj4+IC0gICAgICAgIHJlbW90ZV9wcml2cyAmIFBSSVZfUkVN T1RFX0FVRElUICE9IDAKPj4gLSAgICB9IGVsc2Ugewo+PiAtICAgICAgICBsZXQgc291cmNlX2Rz X3ByaXZzID0gdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmWyJkYXRhc3RvcmUiLCAm am9iLnJlbW90ZV9zdG9yZV0pOwo+PiAtICAgICAgICBzb3VyY2VfZHNfcHJpdnMgJiBQUklWX0RB VEFTVE9SRV9BVURJVCAhPSAwCj4+ICsgICAgbWF0Y2ggc3luY19kaXJlY3Rpb24gewo+PiArICAg ICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsID0+IHsKPj4gKyAgICAgICAgICAgIGlmIGxldCBTb21l KHJlbW90ZSkgPSAmam9iLnJlbW90ZSB7Cj4+ICsgICAgICAgICAgICAgICAgbGV0IHJlbW90ZV9w cml2cyA9IHVzZXJfaW5mby5sb29rdXBfcHJpdnMoYXV0aF9pZCwgJlsicmVtb3RlIiwgcmVtb3Rl XSk7Cj4+ICsgICAgICAgICAgICAgICAgcmVtb3RlX3ByaXZzICYgUFJJVl9SRU1PVEVfQVVESVQg IT0gMAo+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgICBsZXQgc291 cmNlX2RzX3ByaXZzID0KPj4gKyAgICAgICAgICAgICAgICAgICAgdXNlcl9pbmZvLmxvb2t1cF9w cml2cyhhdXRoX2lkLCAmWyJkYXRhc3RvcmUiLCAmam9iLnJlbW90ZV9zdG9yZV0pOwo+PiArICAg ICAgICAgICAgICAgIHNvdXJjZV9kc19wcml2cyAmIFBSSVZfREFUQVNUT1JFX0FVRElUICE9IDAK Pj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgfQo+PiArICAgICAgICBTeW5jRGlyZWN0aW9u OjpQdXNoID0+IHsKPj4gKyAgICAgICAgICAgIC8vIGNoZWNrIGZvciBhdWRpdCBhY2Nlc3Mgb24g cmVtb3RlL2RhdGFzdG9yZS9uYW1lc3BhY2UKPj4gKyAgICAgICAgICAgIGlmIGxldCBTb21lKHRh cmdldF9hY2xfcGF0aCkgPSBqb2IucmVtb3RlX2FjbF9wYXRoKCkgewo+PiArICAgICAgICAgICAg ICAgIGxldCByZW1vdGVfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZzKGF1dGhfaWQsICZ0 YXJnZXRfYWNsX3BhdGgpOwo+PiArICAgICAgICAgICAgICAgIHJlbW90ZV9wcml2cyAmIFBSSVZf UkVNT1RFX0FVRElUICE9IDAKPiAKPiB0aGUgb3RoZXIgdHdvIGNoZWNrcyBhYm92ZSBjaGVjayB0 aGUgc291cmNlIHNpZGUsIHRoaXMgY2hlY2tzIHRoZSB0aGUgdGFyZ2V0Cj4gc2lkZS4uIHNob3Vs ZCB3ZSBjaGVjayBib3RoIGhlcmU/CgpXZWxsLCBBVURJVCBhY2Nlc3Mgb24gdGhlIHNvdXJjZSBm b3IgcHVzaCBpcyBhbHJlYWR5IGNoZWNrZWQgYnkgdGhlIApjb21tb24gY2hlY2sgb3V0c2lkZSB0 aGUgbWF0Y2ggc3RhdGVtZW50LCBzbyBub3Qgc3VyZSB3aGF0IGZ1cnRoZXIgdG8gCmNoZWNrIGhl cmU/CgpUaGUgY29tbW9uIHBhcnQgY2hlY2sgZm9yIChzbyBzb3J1Y2UgaW4gY2FzZSBvZiBwdXNo LCB0YXJnZXQgaW5jYXNlIG9mIApwdWxsKSBhbmQgdGhlIG1hdGNoIGFybXMgY2hlY2sgdGFyZ2V0 IGluIGNhc2Ugb2YgcHVzaCBhbmQgc291cmNlIGluIGNhc2UgCm9mIHB1bGwuCgo+IAo+PiArICAg ICAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgICAvLyBSZW1vdGUgbXVzdCBhbHdh eXMgYmUgcHJlc2VudCBmb3Igc3luYyBpbiBwdXNoIGRpcmVjdGlvbiwgZmFpbCBvdGhlcndpc2UK Pj4gKyAgICAgICAgICAgICAgICBmYWxzZQo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICB9 Cj4+ICAgICAgIH0KPj4gICB9Cj4+ICAgCj4+IEBAIC00Myw0MSArNjIsOTMgQEAgZm4gaXNfY29y cmVjdF9vd25lcihhdXRoX2lkOiAmQXV0aGlkLCBqb2I6ICZTeW5jSm9iQ29uZmlnKSAtPiBib29s IHsKPj4gICAgICAgfQo+PiAgIH0KPj4gICAKPj4gLS8vLyBjaGVja3Mgd2hldGhlciB1c2VyIGNh biBydW4gdGhlIGNvcnJlc3BvbmRpbmcgcHVsbCBqb2IKPj4gKy8vLyBjaGVja3Mgd2hldGhlciB1 c2VyIGNhbiBydW4gdGhlIGNvcnJlc3BvbmRpbmcgc3luYyBqb2IsIGRlcGVuZGluZyBvbiBzeW5j IGRpcmVjdGlvbgo+PiAgIC8vLwo+PiAtLy8vIG5hbWVzcGFjZSBjcmVhdGlvbi9kZWxldGlvbiBB Q0wgYW5kIGJhY2t1cCBncm91cCBvd25lcnNoaXAgY2hlY2tzIGhhcHBlbiBpbiB0aGUgcHVsbCBj b2RlIGRpcmVjdGx5Lgo+PiArLy8vIG5hbWVzcGFjZSBjcmVhdGlvbi9kZWxldGlvbiBBQ0wgYW5k IGJhY2t1cCBncm91cCBvd25lcnNoaXAgY2hlY2tzIGhhcHBlbiBpbiB0aGUgcHVsbC9wdXNoIGNv ZGUKPj4gKy8vLyBkaXJlY3RseS4KPj4gICAvLy8gcmVtb3RlIHNpZGUgY2hlY2tzL2ZpbHRlcnMg cmVtb3RlIGRhdGFzdG9yZS9uYW1lc3BhY2UvZ3JvdXAgYWNjZXNzLgo+PiAgIHB1YiBmbiBjaGVj a19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICB1c2VyX2luZm86ICZDYWNoZWRVc2Vy SW5mbywKPj4gICAgICAgYXV0aF9pZDogJkF1dGhpZCwKPj4gICAgICAgam9iOiAmU3luY0pvYkNv bmZpZywKPj4gKyAgICBzeW5jX2RpcmVjdGlvbjogU3luY0RpcmVjdGlvbiwKPj4gICApIC0+IGJv b2wgewo+PiAtICAgIGxldCBuc19hbmNob3JfcHJpdnMgPSB1c2VyX2luZm8ubG9va3VwX3ByaXZz KGF1dGhfaWQsICZqb2IuYWNsX3BhdGgoKSk7Cj4+IC0gICAgaWYgbnNfYW5jaG9yX3ByaXZzICYg UFJJVl9EQVRBU1RPUkVfQkFDS1VQID09IDAgfHwgbnNfYW5jaG9yX3ByaXZzICYgUFJJVl9EQVRB U1RPUkVfQVVESVQgPT0gMCB7Cj4+IC0gICAgICAgIHJldHVybiBmYWxzZTsKPj4gLSAgICB9Cj4+ ICsgICAgbWF0Y2ggc3luY19kaXJlY3Rpb24gewo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQ dWxsID0+IHsKPj4gKyAgICAgICAgICAgIGxldCBuc19hbmNob3JfcHJpdnMgPSB1c2VyX2luZm8u bG9va3VwX3ByaXZzKGF1dGhfaWQsICZqb2IuYWNsX3BhdGgoKSk7Cj4+ICsgICAgICAgICAgICBp ZiBuc19hbmNob3JfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9CQUNLVVAgPT0gMAo+PiArICAgICAg ICAgICAgICAgIHx8IG5zX2FuY2hvcl9wcml2cyAmIFBSSVZfREFUQVNUT1JFX0FVRElUID09IDAK Pj4gKyAgICAgICAgICAgIHsKPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsg ICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgIGlmIGxldCBTb21lKHRydWUpID0gam9i LnJlbW92ZV92YW5pc2hlZCB7Cj4+ICsgICAgICAgICAgICAgICAgaWYgbnNfYW5jaG9yX3ByaXZz ICYgUFJJVl9EQVRBU1RPUkVfUFJVTkUgPT0gMCB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICB9Cj4+ICAg Cj4+IC0gICAgaWYgbGV0IFNvbWUodHJ1ZSkgPSBqb2IucmVtb3ZlX3ZhbmlzaGVkIHsKPj4gLSAg ICAgICAgaWYgbnNfYW5jaG9yX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfUFJVTkUgPT0gMCB7Cj4+ IC0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAgICAgICAvLyBzYW1lIHBlcm1p c3Npb24gYXMgY2hhbmdpbmcgb3duZXJzaGlwIGFmdGVyIHN5bmNpbmcKPj4gKyAgICAgICAgICAg IGlmICFpc19jb3JyZWN0X293bmVyKGF1dGhfaWQsIGpvYikgJiYgbnNfYW5jaG9yX3ByaXZzICYg UFJJVl9EQVRBU1RPUkVfTU9ESUZZID09IDAgewo+PiArICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKPj4gKyAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAgaWYgbGV0IFNvbWUo cmVtb3RlKSA9ICZqb2IucmVtb3RlIHsKPj4gKyAgICAgICAgICAgICAgICBsZXQgcmVtb3RlX3By aXZzID0KPj4gKyAgICAgICAgICAgICAgICAgICAgdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRo X2lkLCAmWyJyZW1vdGUiLCByZW1vdGUsICZqb2IucmVtb3RlX3N0b3JlXSk7Cj4+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHJlbW90ZV9wcml2cyAmIFBSSVZfUkVNT1RFX1JFQUQgIT0gMDsKPj4g KyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIHRydWUKPj4gICAgICAgICAgIH0KPj4gLSAg ICB9Cj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1c2ggPT4gewo+PiArICAgICAgICAgICAg Ly8gUmVtb3RlIG11c3QgYWx3YXlzIGJlIHByZXNlbnQgZm9yIHN5bmMgaW4gcHVzaCBkaXJlY3Rp b24sIGZhaWwgb3RoZXJ3aXNlCj4+ICsgICAgICAgICAgICBsZXQgdGFyZ2V0X3ByaXZzID0gaWYg bGV0IFNvbWUodGFyZ2V0X2FjbF9wYXRoKSA9IGpvYi5yZW1vdGVfYWNsX3BhdGgoKSB7Cj4+ICsg ICAgICAgICAgICAgICAgdXNlcl9pbmZvLmxvb2t1cF9wcml2cyhhdXRoX2lkLCAmdGFyZ2V0X2Fj bF9wYXRoKQo+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Cj4+ICsgICAgICAgICAgICB9Owo+PiArCj4+ICsgICAgICAgICAgICAvLyBjaGVj ayB1c2VyIGlzIGFsbG93ZWQgdG8gY3JlYXRlIGJhY2t1cHMgb24gcmVtb3RlIGRhdGFzdG9yZQo+ PiArICAgICAgICAgICAgaWYgdGFyZ2V0X3ByaXZzICYgUFJJVl9SRU1PVEVfREFUQVNUT1JFX0JB Q0tVUCA9PSAwIHsKPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAg ICAgICB9Cj4+ICAgCj4+IC0gICAgLy8gc2FtZSBwZXJtaXNzaW9uIGFzIGNoYW5naW5nIG93bmVy c2hpcCBhZnRlciBzeW5jaW5nCj4+IC0gICAgaWYgIWlzX2NvcnJlY3Rfb3duZXIoYXV0aF9pZCwg am9iKSAmJiBuc19hbmNob3JfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9NT0RJRlkgPT0gMCB7Cj4+ IC0gICAgICAgIHJldHVybiBmYWxzZTsKPj4gLSAgICB9Cj4+ICsgICAgICAgICAgICBpZiBsZXQg U29tZSh0cnVlKSA9IGpvYi5yZW1vdmVfdmFuaXNoZWQgewo+PiArICAgICAgICAgICAgICAgIC8v IGNoZWNrIHVzZXIgaXMgYWxsb3dlZCB0byBwcnVuZSBiYWNrdXAgc25hcHNob3RzIG9uIHJlbW90 ZSBkYXRhc3RvcmUKPj4gKyAgICAgICAgICAgICAgICBpZiB0YXJnZXRfcHJpdnMgJiBQUklWX1JF TU9URV9EQVRBU1RPUkVfUFJVTkUgPT0gMCB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICB9Cj4+ICsKPj4g KyAgICAgICAgICAgIC8vIGNoZWNrIHVzZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGUgc3luYyBq b2IsIGJ1dCBoYXMgcmVtb3RlIGRhdGFzdG9yZSBtb2RpZnkgcGVybWlzc2lvbnMKPj4gKyAgICAg ICAgICAgIGlmICFpc19jb3JyZWN0X293bmVyKGF1dGhfaWQsIGpvYikgJiYgdGFyZ2V0X3ByaXZz ICYgUFJJVl9SRU1PVEVfREFUQVNUT1JFX01PRElGWSA9PSAwIHsKPj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAgICAgICB9Cj4gCj4gaXNuJ3QgdGhpcyB3cm9uZz8g aWYgSSBhbSBtb2RpZnlpbmcvcnVubmluZyBhIHN5bmMgam9iICJvd25lZCIgYnkgc29tZWJvZHkK PiBlbHNlLCB0aGVuIEkgbmVlZCB0byBoYXZlIERhdGFzdG9yZS5SZWFkIG9yIERhdGFzdG9yZS5N b2RpZnkgb24gdGhlICpsb2NhbCoKPiBzb3VyY2UgZGF0YXN0b3JlK25hbWVzcGFjZS4uIGVsc2Ug SSBjb3VsZCB1c2Ugc3VjaCBhIHN5bmMgam9iIHRvIGV4ZmlsdHJhdGUKPiBiYWNrdXBzIEkgd291 bGRuJ3Qgb3RoZXJ3aXNlIGhhdmUgYWNjZXNzIHRvLi4KCkJ1dCB0aGF0IGlzIGNoZWNrZWQgcmln aHQgYmVsb3c/IFRoZSBSZW1vdGUgZGF0YXN0b3JlIG1vZGlmeSBjaGVjayBoZXJlIApqdXN0IGFs bG93cyB0byBleGVjdXRlIHRoZSBqb2IgaWYgZWl0aGVyIHRoZSB1c2VyIG93bnMgdGhlIGpvYiwg b3IgaXQgCmhhcyB0aGUgcHJpdnMgdG8gZG8gc28uIEF0IGxlYXN0IHRoYXQgd2FzIG15IGludGVu dGlvbi4KCj4gCj4+ICsKPj4gKyAgICAgICAgICAgIC8vIGNoZWNrIHVzZXIgaXMgYWxsb3dlZCB0 byByZWFkIGZyb20gKGxvY2FsKSBzb3VyY2UgZGF0YXN0b3JlL25hbWVzcGFjZQo+PiArICAgICAg ICAgICAgbGV0IHNvdXJjZV9wcml2cyA9IHVzZXJfaW5mby5sb29rdXBfcHJpdnMoYXV0aF9pZCwg JmpvYi5hY2xfcGF0aCgpKTsKPj4gKyAgICAgICAgICAgIGlmIHNvdXJjZV9wcml2cyAmIFBSSVZf REFUQVNUT1JFX0FVRElUID09IDAgewo+PiArICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK Pj4gKyAgICAgICAgICAgIH0KPj4gICAKPj4gLSAgICBpZiBsZXQgU29tZShyZW1vdGUpID0gJmpv Yi5yZW1vdGUgewo+PiAtICAgICAgICBsZXQgcmVtb3RlX3ByaXZzID0gdXNlcl9pbmZvLmxvb2t1 cF9wcml2cyhhdXRoX2lkLCAmWyJyZW1vdGUiLCByZW1vdGUsICZqb2IucmVtb3RlX3N0b3JlXSk7 Cj4+IC0gICAgICAgIHJldHVybiByZW1vdGVfcHJpdnMgJiBQUklWX1JFTU9URV9SRUFEICE9IDA7 Cj4+ICsgICAgICAgICAgICAvLyBjaGVjayBmb3IgZWl0aGVyIGRhdGFzdG9yZSByZWFkIG9yIGRh dGFzdG9yZSBiYWNrdXAgYWNjZXNzCj4+ICsgICAgICAgICAgICAvLyAodGhlIGxhdGVyIGltcGx5 aW5nIHJlYWQgYWNjZXNzIGZvciBvd25lZCBzbmFwc2hvdCBncm91cHMpCj4+ICsgICAgICAgICAg ICBpZiBzb3VyY2VfcHJpdnMgJiBQUklWX0RBVEFTVE9SRV9SRUFEICE9IDAgewo+PiArICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAg c291cmNlX3ByaXZzICYgUFJJVl9EQVRBU1RPUkVfQkFDS1VQICE9IDAKPj4gKyAgICAgICAgfQo+ PiAgICAgICB9Cj4+IC0gICAgdHJ1ZQo+PiAgIH0KPj4gICAKPj4gICAjW2FwaSgKPj4gICAgICAg aW5wdXQ6IHsKPj4gLSAgICAgICAgcHJvcGVydGllczoge30sCj4+ICsgICAgICAgIHByb3BlcnRp ZXM6IHsKPj4gKyAgICAgICAgICAgICJzeW5jLWRpcmVjdGlvbiI6IHsKPj4gKyAgICAgICAgICAg ICAgICB0eXBlOiBTeW5jRGlyZWN0aW9uLAo+PiArICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0 cnVlLAo+PiArICAgICAgICAgICAgfSwKPj4gKyAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICAg ICAgcmV0dXJuczogewo+PiAgICAgICAgICAgZGVzY3JpcHRpb246ICJMaXN0IGNvbmZpZ3VyZWQg am9icy4iLAo+PiBAQCAtOTIsNiArMTYzLDcgQEAgcHViIGZuIGNoZWNrX3N5bmNfam9iX21vZGlm eV9hY2Nlc3MoCj4+ICAgLy8vIExpc3QgYWxsIHN5bmMgam9icwo+PiAgIHB1YiBmbiBsaXN0X3N5 bmNfam9icygKPj4gICAgICAgX3BhcmFtOiBWYWx1ZSwKPj4gKyAgICBzeW5jX2RpcmVjdGlvbjog T3B0aW9uPFN5bmNEaXJlY3Rpb24+LAo+PiAgICAgICBycGNlbnY6ICZtdXQgZHluIFJwY0Vudmly b25tZW50LAo+PiAgICkgLT4gUmVzdWx0PFZlYzxTeW5jSm9iQ29uZmlnPiwgRXJyb3I+IHsKPj4g ICAgICAgbGV0IGF1dGhfaWQ6IEF1dGhpZCA9IHJwY2Vudi5nZXRfYXV0aF9pZCgpLnVud3JhcCgp LnBhcnNlKCk/Owo+PiBAQCAtOTksMTMgKzE3MSwxNiBAQCBwdWIgZm4gbGlzdF9zeW5jX2pvYnMo Cj4+ICAgCj4+ICAgICAgIGxldCAoY29uZmlnLCBkaWdlc3QpID0gc3luYzo6Y29uZmlnKCk/Owo+ PiAgIAo+PiAtICAgIGxldCBsaXN0ID0gY29uZmlnLmNvbnZlcnRfdG9fdHlwZWRfYXJyYXkoInN5 bmMiKT87Cj4+ICsgICAgbGV0IHN5bmNfZGlyZWN0aW9uID0gc3luY19kaXJlY3Rpb24udW53cmFw X29yX2RlZmF1bHQoKTsKPj4gKyAgICBsZXQgbGlzdCA9IGNvbmZpZy5jb252ZXJ0X3RvX3R5cGVk X2FycmF5KHN5bmNfZGlyZWN0aW9uLmFzX2NvbmZpZ190eXBlX3N0cigpKT87Cj4+ICAgCj4+ICAg ICAgIHJwY2VudlsiZGlnZXN0Il0gPSBoZXg6OmVuY29kZShkaWdlc3QpLmludG8oKTsKPj4gICAK Pj4gICAgICAgbGV0IGxpc3QgPSBsaXN0Cj4+ICAgICAgICAgICAuaW50b19pdGVyKCkKPj4gLSAg ICAgICAgLmZpbHRlcih8c3luY19qb2J8IGNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2Vy X2luZm8sICZhdXRoX2lkLCBzeW5jX2pvYikpCj4+ICsgICAgICAgIC5maWx0ZXIofHN5bmNfam9i fCB7Cj4+ICsgICAgICAgICAgICBjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZv LCAmYXV0aF9pZCwgc3luY19qb2IsIHN5bmNfZGlyZWN0aW9uKQo+PiArICAgICAgICB9KQo+PiAg ICAgICAgICAgLmNvbGxlY3QoKTsKPj4gICAgICAgT2sobGlzdCkKPj4gICB9Cj4+IEBAIC0xMTgs NiArMTkzLDEwIEBAIHB1YiBmbiBsaXN0X3N5bmNfam9icygKPj4gICAgICAgICAgICAgICAgICAg dHlwZTogU3luY0pvYkNvbmZpZywKPj4gICAgICAgICAgICAgICAgICAgZmxhdHRlbjogdHJ1ZSwK Pj4gICAgICAgICAgICAgICB9LAo+PiArICAgICAgICAgICAgInN5bmMtZGlyZWN0aW9uIjogewo+ PiArICAgICAgICAgICAgICAgIHR5cGU6IFN5bmNEaXJlY3Rpb24sCj4+ICsgICAgICAgICAgICAg ICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICB9LAo+PiAgICAgICAgICAgfSwKPj4g ICAgICAgfSwKPj4gICAgICAgYWNjZXNzOiB7Cj4+IEBAIC0xMjgsMTQgKzIwNywxNiBAQCBwdWIg Zm4gbGlzdF9zeW5jX2pvYnMoCj4+ICAgLy8vIENyZWF0ZSBhIG5ldyBzeW5jIGpvYi4KPj4gICBw dWIgZm4gY3JlYXRlX3N5bmNfam9iKAo+PiAgICAgICBjb25maWc6IFN5bmNKb2JDb25maWcsCj4+ ICsgICAgc3luY19kaXJlY3Rpb246IE9wdGlvbjxTeW5jRGlyZWN0aW9uPiwKPj4gICAgICAgcnBj ZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPj4gICApIC0+IFJlc3VsdDwoKSwgRXJyb3I+ IHsKPj4gICAgICAgbGV0IGF1dGhfaWQ6IEF1dGhpZCA9IHJwY2Vudi5nZXRfYXV0aF9pZCgpLnVu d3JhcCgpLnBhcnNlKCk/Owo+PiAgICAgICBsZXQgdXNlcl9pbmZvID0gQ2FjaGVkVXNlckluZm86 Om5ldygpPzsKPj4gKyAgICBsZXQgc3luY19kaXJlY3Rpb24gPSBzeW5jX2RpcmVjdGlvbi51bndy YXBfb3JfZGVmYXVsdCgpOwo+PiAgIAo+PiAgICAgICBsZXQgX2xvY2sgPSBzeW5jOjpsb2NrX2Nv bmZpZygpPzsKPj4gICAKPj4gLSAgICBpZiAhY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2Vzcygm dXNlcl9pbmZvLCAmYXV0aF9pZCwgJmNvbmZpZykgewo+PiArICAgIGlmICFjaGVja19zeW5jX2pv Yl9tb2RpZnlfYWNjZXNzKCZ1c2VyX2luZm8sICZhdXRoX2lkLCAmY29uZmlnLCBzeW5jX2RpcmVj dGlvbikgewo+PiAgICAgICAgICAgYmFpbCEoInBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIik7Cj4+ ICAgICAgIH0KPj4gICAKPj4gQEAgLTE1OCw3ICsyMzksNyBAQCBwdWIgZm4gY3JlYXRlX3N5bmNf am9iKAo+PiAgICAgICAgICAgcGFyYW1fYmFpbCEoImlkIiwgImpvYiAne30nIGFscmVhZHkgZXhp c3RzLiIsIGNvbmZpZy5pZCk7Cj4+ICAgICAgIH0KPj4gICAKPj4gLSAgICBzZWN0aW9uX2NvbmZp Zy5zZXRfZGF0YSgmY29uZmlnLmlkLCAic3luYyIsICZjb25maWcpPzsKPj4gKyAgICBzZWN0aW9u X2NvbmZpZy5zZXRfZGF0YSgmY29uZmlnLmlkLCBzeW5jX2RpcmVjdGlvbi5hc19jb25maWdfdHlw ZV9zdHIoKSwgJmNvbmZpZyk/Owo+PiAgIAo+PiAgICAgICBzeW5jOjpzYXZlX2NvbmZpZygmc2Vj dGlvbl9jb25maWcpPzsKPj4gICAKPj4gQEAgLTE4OCw4ICsyNjksMTcgQEAgcHViIGZuIHJlYWRf c3luY19qb2IoaWQ6IFN0cmluZywgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCkgLT4g UmVzdWx0PFN5bmMKPj4gICAKPj4gICAgICAgbGV0IChjb25maWcsIGRpZ2VzdCkgPSBzeW5jOjpj b25maWcoKT87Cj4+ICAgCj4+IC0gICAgbGV0IHN5bmNfam9iID0gY29uZmlnLmxvb2t1cCgic3lu YyIsICZpZCk/Owo+PiAtICAgIGlmICFjaGVja19zeW5jX2pvYl9yZWFkX2FjY2VzcygmdXNlcl9p bmZvLCAmYXV0aF9pZCwgJnN5bmNfam9iKSB7Cj4+ICsgICAgbGV0IChzeW5jX2pvYiwgc3luY19k aXJlY3Rpb24pID0KPj4gKyAgICAgICAgaWYgbGV0IFNvbWUoKGNvbmZpZ190eXBlLCBjb25maWdf c2VjdGlvbikpID0gY29uZmlnLnNlY3Rpb25zLmdldCgmaWQpIHsKPj4gKyAgICAgICAgICAgICgK Pj4gKyAgICAgICAgICAgICAgICBTeW5jSm9iQ29uZmlnOjpkZXNlcmlhbGl6ZShjb25maWdfc2Vj dGlvbik/LAo+PiArICAgICAgICAgICAgICAgIFN5bmNEaXJlY3Rpb246OmZyb21fY29uZmlnX3R5 cGVfc3RyKGNvbmZpZ190eXBlKT8sCj4+ICsgICAgICAgICAgICApCj4+ICsgICAgICAgIH0gZWxz ZSB7Cj4+ICsgICAgICAgICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgImpvYiAne2lkfScgZG9l cyBub3QgZXhpc3QuIikKPj4gKyAgICAgICAgfTsKPj4gKwo+PiArICAgIGlmICFjaGVja19zeW5j X2pvYl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJnN5bmNfam9iLCBzeW5jX2Rp cmVjdGlvbikgewo+PiAgICAgICAgICAgYmFpbCEoInBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIik7 Cj4+ICAgICAgIH0KPj4gICAKPj4gQEAgLTI4NCw3ICszNzQsMTUgQEAgcHViIGZuIHVwZGF0ZV9z eW5jX2pvYigKPj4gICAgICAgICAgIGNyYXRlOjp0b29sczo6ZGV0ZWN0X21vZGlmaWVkX2NvbmZp Z3VyYXRpb25fZmlsZSgmZGlnZXN0LCAmZXhwZWN0ZWRfZGlnZXN0KT87Cj4+ICAgICAgIH0KPj4g ICAKPj4gLSAgICBsZXQgbXV0IGRhdGE6IFN5bmNKb2JDb25maWcgPSBjb25maWcubG9va3VwKCJz eW5jIiwgJmlkKT87Cj4+ICsgICAgbGV0IChtdXQgZGF0YSwgc3luY19kaXJlY3Rpb24pID0KPj4g KyAgICAgICAgaWYgbGV0IFNvbWUoKGNvbmZpZ190eXBlLCBjb25maWdfc2VjdGlvbikpID0gY29u ZmlnLnNlY3Rpb25zLmdldCgmaWQpIHsKPj4gKyAgICAgICAgICAgICgKPj4gKyAgICAgICAgICAg ICAgICBTeW5jSm9iQ29uZmlnOjpkZXNlcmlhbGl6ZShjb25maWdfc2VjdGlvbik/LAo+PiArICAg ICAgICAgICAgICAgIFN5bmNEaXJlY3Rpb246OmZyb21fY29uZmlnX3R5cGVfc3RyKGNvbmZpZ190 eXBlKT8sCj4+ICsgICAgICAgICAgICApCj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAg ICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgImpvYiAne2lkfScgZG9lcyBub3QgZXhpc3QuIikK Pj4gKyAgICAgICAgfTsKPj4gICAKPj4gICAgICAgaWYgbGV0IFNvbWUoZGVsZXRlKSA9IGRlbGV0 ZSB7Cj4+ICAgICAgICAgICBmb3IgZGVsZXRlX3Byb3AgaW4gZGVsZXRlIHsKPj4gQEAgLTQwNSwx MSArNTAzLDExIEBAIHB1YiBmbiB1cGRhdGVfc3luY19qb2IoCj4+ICAgICAgICAgICB9Cj4+ICAg ICAgIH0KPj4gICAKPj4gLSAgICBpZiAhY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygmdXNl cl9pbmZvLCAmYXV0aF9pZCwgJmRhdGEpIHsKPj4gKyAgICBpZiAhY2hlY2tfc3luY19qb2JfbW9k aWZ5X2FjY2VzcygmdXNlcl9pbmZvLCAmYXV0aF9pZCwgJmRhdGEsIHN5bmNfZGlyZWN0aW9uKSB7 Cj4+ICAgICAgICAgICBiYWlsISgicGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKPj4gICAgICAg fQo+PiAgIAo+PiAtICAgIGNvbmZpZy5zZXRfZGF0YSgmaWQsICJzeW5jIiwgJmRhdGEpPzsKPj4g KyAgICBjb25maWcuc2V0X2RhdGEoJmlkLCBzeW5jX2RpcmVjdGlvbi5hc19jb25maWdfdHlwZV9z dHIoKSwgJmRhdGEpPzsKPj4gICAKPj4gICAgICAgc3luYzo6c2F2ZV9jb25maWcoJmNvbmZpZyk/ Owo+PiAgIAo+PiBAQCAtNDU2LDE3ICs1NTQsMTYgQEAgcHViIGZuIGRlbGV0ZV9zeW5jX2pvYigK Pj4gICAgICAgICAgIGNyYXRlOjp0b29sczo6ZGV0ZWN0X21vZGlmaWVkX2NvbmZpZ3VyYXRpb25f ZmlsZSgmZGlnZXN0LCAmZXhwZWN0ZWRfZGlnZXN0KT87Cj4+ICAgICAgIH0KPj4gICAKPj4gLSAg ICBtYXRjaCBjb25maWcubG9va3VwKCJzeW5jIiwgJmlkKSB7Cj4+IC0gICAgICAgIE9rKGpvYikg PT4gewo+PiAtICAgICAgICAgICAgaWYgIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nlc3MoJnVz ZXJfaW5mbywgJmF1dGhfaWQsICZqb2IpIHsKPj4gLSAgICAgICAgICAgICAgICBiYWlsISgicGVy bWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKPj4gLSAgICAgICAgICAgIH0KPj4gLSAgICAgICAgICAg IGNvbmZpZy5zZWN0aW9ucy5yZW1vdmUoJmlkKTsKPj4gLSAgICAgICAgfQo+PiAtICAgICAgICBF cnIoXykgPT4gewo+PiAtICAgICAgICAgICAgaHR0cF9iYWlsIShOT1RfRk9VTkQsICJqb2IgJ3t9 JyBkb2VzIG5vdCBleGlzdC4iLCBpZCkKPj4gKyAgICBpZiBsZXQgU29tZSgoY29uZmlnX3R5cGUs IGNvbmZpZ19zZWN0aW9uKSkgPSBjb25maWcuc2VjdGlvbnMuZ2V0KCZpZCkgewo+PiArICAgICAg ICBsZXQgc3luY19kaXJlY3Rpb24gPSBTeW5jRGlyZWN0aW9uOjpmcm9tX2NvbmZpZ190eXBlX3N0 cihjb25maWdfdHlwZSk/Owo+PiArICAgICAgICBsZXQgam9iID0gU3luY0pvYkNvbmZpZzo6ZGVz ZXJpYWxpemUoY29uZmlnX3NlY3Rpb24pPzsKPj4gKyAgICAgICAgaWYgIWNoZWNrX3N5bmNfam9i X21vZGlmeV9hY2Nlc3MoJnVzZXJfaW5mbywgJmF1dGhfaWQsICZqb2IsIHN5bmNfZGlyZWN0aW9u KSB7Cj4+ICsgICAgICAgICAgICBiYWlsISgicGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKPj4g ICAgICAgICAgIH0KPj4gLSAgICB9Owo+PiArICAgICAgICBjb25maWcuc2VjdGlvbnMucmVtb3Zl KCZpZCk7Cj4+ICsgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgaHR0cF9iYWlsIShOT1RfRk9VTkQs ICJqb2IgJ3t9JyBkb2VzIG5vdCBleGlzdC4iLCBpZCkKPj4gKyAgICB9Cj4+ICAgCj4+ICAgICAg IHN5bmM6OnNhdmVfY29uZmlnKCZjb25maWcpPzsKPj4gICAKPj4gQEAgLTUzNiwzOSArNjMzLDY3 IEBAIGFjbDoxOi9yZW1vdGUvcmVtb3RlMS9yZW1vdGVzdG9yZTE6d3JpdGVAcGJzOlJlbW90ZVN5 bmNPcGVyYXRvcgo+PiAgICAgICB9Owo+PiAgIAo+PiAgICAgICAvLyBzaG91bGQgd29yayB3aXRo b3V0IEFDTHMKPj4gLSAgICBhc3NlcnQhKGNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKCZ1c2Vy X2luZm8sIHJvb3RfYXV0aF9pZCwgJmpvYikpOwo+PiAtICAgIGFzc2VydCEoY2hlY2tfc3luY19q b2JfbW9kaWZ5X2FjY2VzcygmdXNlcl9pbmZvLCByb290X2F1dGhfaWQsICZqb2IpKTsKPj4gKyAg ICBhc3NlcnQhKGNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKAo+PiArICAgICAgICAmdXNlcl9p bmZvLAo+PiArICAgICAgICByb290X2F1dGhfaWQsCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAg ICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICsgICAgKSk7Cj4+ICsgICAgYXNzZXJ0IShjaGVj a19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiArICAgICAgICAmdXNlcl9pbmZvLAo+PiArICAg ICAgICByb290X2F1dGhfaWQsCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJl Y3Rpb246OlB1bGwsCj4+ICsgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIHVzZXIgd2l0aG91dCBw ZXJtaXNzaW9ucyBtdXN0IGZhaWwKPj4gICAgICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfcmVh ZF9hY2Nlc3MoCj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAgICAgICAgJm5vX3Blcm1f YXV0aF9pZCwKPj4gLSAgICAgICAgJmpvYgo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBT eW5jRGlyZWN0aW9uOjpQdWxsLAo+PiAgICAgICApKTsKPj4gICAgICAgYXNzZXJ0ISghY2hlY2tf c3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4gICAgICAgICAgICZ1c2VyX2luZm8sCj4+ICAgICAg ICAgICAmbm9fcGVybV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsgICAgICAgICZqb2Is Cj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkpOwo+PiAgIAo+PiAg ICAgICAvLyByZWFkaW5nIHdpdGhvdXQgcHJvcGVyIHJlYWQgcGVybWlzc2lvbnMgb24gZWl0aGVy IHJlbW90ZSBvciBsb2NhbCBtdXN0IGZhaWwKPj4gLSAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pv Yl9yZWFkX2FjY2VzcygmdXNlcl9pbmZvLCAmcmVhZF9hdXRoX2lkLCAmam9iKSk7Cj4+ICsgICAg YXNzZXJ0ISghY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+ICsgICAgICAgICZ1c2VyX2lu Zm8sCj4+ICsgICAgICAgICZyZWFkX2F1dGhfaWQsCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAg ICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICsgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIHJl YWRpbmcgd2l0aG91dCBwcm9wZXIgcmVhZCBwZXJtaXNzaW9ucyBvbiBsb2NhbCBlbmQgbXVzdCBm YWlsCj4+ICAgICAgIGpvYi5yZW1vdGUgPSBTb21lKCJyZW1vdGUxIi50b19zdHJpbmcoKSk7Cj4+ IC0gICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgJnJl YWRfYXV0aF9pZCwgJmpvYikpOwo+PiArICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX3JlYWRf YWNjZXNzKAo+PiArICAgICAgICAmdXNlcl9pbmZvLAo+PiArICAgICAgICAmcmVhZF9hdXRoX2lk LAo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+PiAr ICAgICkpOwo+PiAgIAo+PiAgICAgICAvLyByZWFkaW5nIHdpdGhvdXQgcHJvcGVyIHJlYWQgcGVy bWlzc2lvbnMgb24gcmVtb3RlIGVuZCBtdXN0IGZhaWwKPj4gICAgICAgam9iLnJlbW90ZSA9IFNv bWUoInJlbW90ZTAiLnRvX3N0cmluZygpKTsKPj4gICAgICAgam9iLnN0b3JlID0gImxvY2Fsc3Rv cmUxIi50b19zdHJpbmcoKTsKPj4gLSAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9yZWFkX2Fj Y2VzcygmdXNlcl9pbmZvLCAmcmVhZF9hdXRoX2lkLCAmam9iKSk7Cj4+ICsgICAgYXNzZXJ0ISgh Y2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+ICsgICAgICAgICZ1c2VyX2luZm8sCj4+ICsg ICAgICAgICZyZWFkX2F1dGhfaWQsCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNE aXJlY3Rpb246OlB1bGwsCj4+ICsgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIHdyaXRpbmcgd2l0 aG91dCBwcm9wZXIgd3JpdGUgcGVybWlzc2lvbnMgb24gZWl0aGVyIGVuZCBtdXN0IGZhaWwKPj4g ICAgICAgam9iLnN0b3JlID0gImxvY2Fsc3RvcmUwIi50b19zdHJpbmcoKTsKPj4gICAgICAgYXNz ZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4gICAgICAgICAgICZ1c2VyX2lu Zm8sCj4+ICAgICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4gLSAgICAgICAgJmpvYgo+PiArICAg ICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+PiAgICAgICApKTsK Pj4gICAKPj4gICAgICAgLy8gd3JpdGluZyB3aXRob3V0IHByb3BlciB3cml0ZSBwZXJtaXNzaW9u cyBvbiBsb2NhbCBlbmQgbXVzdCBmYWlsCj4+IEBAIC01ODAsMzkgKzcwNSw1NCBAQCBhY2w6MTov cmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1vdGVTeW5jT3BlcmF0b3IK Pj4gICAgICAgYXNzZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4gICAgICAg ICAgICZ1c2VyX2luZm8sCj4+ICAgICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4gLSAgICAgICAg JmpvYgo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+ PiAgICAgICApKTsKPj4gICAKPj4gICAgICAgLy8gcmVzZXQgcmVtb3RlIHRvIG9uZSB3aGVyZSB1 c2VycyBoYXZlIGFjY2Vzcwo+PiAgICAgICBqb2IucmVtb3RlID0gU29tZSgicmVtb3RlMSIudG9f c3RyaW5nKCkpOwo+PiAgIAo+PiAgICAgICAvLyB1c2VyIHdpdGggcmVhZCBwZXJtaXNzaW9uIGNh biBvbmx5IHJlYWQsIGJ1dCBub3QgbW9kaWZ5L3J1bgo+PiAtICAgIGFzc2VydCEoY2hlY2tfc3lu Y19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgJnJlYWRfYXV0aF9pZCwgJmpvYikpOwo+PiAr ICAgIGFzc2VydCEoY2hlY2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoCj4+ICsgICAgICAgICZ1c2Vy X2luZm8sCj4+ICsgICAgICAgICZyZWFkX2F1dGhfaWQsCj4+ICsgICAgICAgICZqb2IsCj4+ICsg ICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICsgICAgKSk7Cj4+ICAgICAgIGpvYi5vd25l ciA9IFNvbWUocmVhZF9hdXRoX2lkLmNsb25lKCkpOwo+PiAgICAgICBhc3NlcnQhKCFjaGVja19z eW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAg ICAgICZyZWFkX2F1dGhfaWQsCj4+IC0gICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwKPj4g KyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgICAgIGpvYi5v d25lciA9IE5vbmU7Cj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNfam9iX21vZGlmeV9hY2Nl c3MoCj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAgICAgICAgJnJlYWRfYXV0aF9pZCwK Pj4gLSAgICAgICAgJmpvYgo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0 aW9uOjpQdWxsLAo+PiAgICAgICApKTsKPj4gICAgICAgam9iLm93bmVyID0gU29tZSh3cml0ZV9h dXRoX2lkLmNsb25lKCkpOwo+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5jX2pvYl9tb2RpZnlf YWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAgICZyZWFkX2F1dGhf aWQsCj4+IC0gICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAgICAgICAgU3luY0Rp cmVjdGlvbjo6UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8vIHVzZXIgd2l0aCBz aW1wbGUgd3JpdGUgcGVybWlzc2lvbiBjYW4gbW9kaWZ5L3J1bgo+PiAtICAgIGFzc2VydCEoY2hl Y2tfc3luY19qb2JfcmVhZF9hY2Nlc3MoJnVzZXJfaW5mbywgJndyaXRlX2F1dGhfaWQsICZqb2Ip KTsKPj4gKyAgICBhc3NlcnQhKGNoZWNrX3N5bmNfam9iX3JlYWRfYWNjZXNzKAo+PiArICAgICAg ICAmdXNlcl9pbmZvLAo+PiArICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4gKyAgICAgICAgJmpv YiwKPj4gKyAgICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gKyAgICApKTsKPj4gICAgICAg YXNzZXJ0IShjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJf aW5mbywKPj4gICAgICAgICAgICZ3cml0ZV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsg ICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkp Owo+PiAgIAo+PiAgICAgICAvLyBidXQgY2FuJ3QgbW9kaWZ5L3J1biB3aXRoIGRlbGV0aW9uCj4+ IEBAIC02MjAsNyArNzYwLDggQEAgYWNsOjE6L3JlbW90ZS9yZW1vdGUxL3JlbW90ZXN0b3JlMTp3 cml0ZUBwYnM6UmVtb3RlU3luY09wZXJhdG9yCj4+ICAgICAgIGFzc2VydCEoIWNoZWNrX3N5bmNf am9iX21vZGlmeV9hY2Nlc3MoCj4+ICAgICAgICAgICAmdXNlcl9pbmZvLAo+PiAgICAgICAgICAg JndyaXRlX2F1dGhfaWQsCj4+IC0gICAgICAgICZqb2IKPj4gKyAgICAgICAgJmpvYiwKPj4gKyAg ICAgICAgU3luY0RpcmVjdGlvbjo6UHVsbCwKPj4gICAgICAgKSk7Cj4+ICAgCj4+ICAgICAgIC8v IHVubGVzcyB0aGV5IGhhdmUgRGF0YXN0b3JlLlBydW5lIGFzIHdlbGwKPj4gQEAgLTYyOCw3ICs3 NjksOCBAQCBhY2w6MTovcmVtb3RlL3JlbW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1v dGVTeW5jT3BlcmF0b3IKPj4gICAgICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNj ZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAgICZ3cml0ZV9hdXRoX2lk LAo+PiAtICAgICAgICAmam9iCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJl Y3Rpb246OlB1bGwsCj4+ICAgICAgICkpOwo+PiAgIAo+PiAgICAgICAvLyBjaGFuZ2luZyBvd25l ciBpcyBub3QgcG9zc2libGUKPj4gQEAgLTYzNiw3ICs3NzgsOCBAQCBhY2w6MTovcmVtb3RlL3Jl bW90ZTEvcmVtb3Rlc3RvcmUxOndyaXRlQHBiczpSZW1vdGVTeW5jT3BlcmF0b3IKPj4gICAgICAg YXNzZXJ0ISghY2hlY2tfc3luY19qb2JfbW9kaWZ5X2FjY2VzcygKPj4gICAgICAgICAgICZ1c2Vy X2luZm8sCj4+ICAgICAgICAgICAmd3JpdGVfYXV0aF9pZCwKPj4gLSAgICAgICAgJmpvYgo+PiAr ICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5jRGlyZWN0aW9uOjpQdWxsLAo+PiAgICAgICAp KTsKPj4gICAKPj4gICAgICAgLy8gYWxzbyBub3QgdG8gdGhlIGRlZmF1bHQgJ3Jvb3RAcGFtJwo+ PiBAQCAtNjQ0LDcgKzc4Nyw4IEBAIGFjbDoxOi9yZW1vdGUvcmVtb3RlMS9yZW1vdGVzdG9yZTE6 d3JpdGVAcGJzOlJlbW90ZVN5bmNPcGVyYXRvcgo+PiAgICAgICBhc3NlcnQhKCFjaGVja19zeW5j X2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAgICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAg ICZ3cml0ZV9hdXRoX2lkLAo+PiAtICAgICAgICAmam9iCj4+ICsgICAgICAgICZqb2IsCj4+ICsg ICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ICAgICAgICkpOwo+PiAgIAo+PiAgICAgICAv LyB1bmxlc3MgdGhleSBoYXZlIERhdGFzdG9yZS5Nb2RpZnkgYXMgd2VsbAo+PiBAQCAtNjUzLDEz ICs3OTcsMTUgQEAgYWNsOjE6L3JlbW90ZS9yZW1vdGUxL3JlbW90ZXN0b3JlMTp3cml0ZUBwYnM6 UmVtb3RlU3luY09wZXJhdG9yCj4+ICAgICAgIGFzc2VydCEoY2hlY2tfc3luY19qb2JfbW9kaWZ5 X2FjY2VzcygKPj4gICAgICAgICAgICZ1c2VyX2luZm8sCj4+ICAgICAgICAgICAmd3JpdGVfYXV0 aF9pZCwKPj4gLSAgICAgICAgJmpvYgo+PiArICAgICAgICAmam9iLAo+PiArICAgICAgICBTeW5j RGlyZWN0aW9uOjpQdWxsLAo+PiAgICAgICApKTsKPj4gICAgICAgam9iLm93bmVyID0gTm9uZTsK Pj4gICAgICAgYXNzZXJ0IShjaGVja19zeW5jX2pvYl9tb2RpZnlfYWNjZXNzKAo+PiAgICAgICAg ICAgJnVzZXJfaW5mbywKPj4gICAgICAgICAgICZ3cml0ZV9hdXRoX2lkLAo+PiAtICAgICAgICAm am9iCj4+ICsgICAgICAgICZqb2IsCj4+ICsgICAgICAgIFN5bmNEaXJlY3Rpb246OlB1bGwsCj4+ ICAgICAgICkpOwo+PiAgIAo+PiAgICAgICBPaygoKSkKPj4gZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHJveG1veC1iYWNrdXAtcHJveHkucnMgYi9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJz Cj4+IGluZGV4IDZmMTlhM2ZiZC4uNzAyODM1MTBkIDEwMDY0NAo+PiAtLS0gYS9zcmMvYmluL3By b3htb3gtYmFja3VwLXByb3h5LnJzCj4+ICsrKyBiL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJv eHkucnMKPj4gQEAgLTU4OSw3ICs1ODksMTQgQEAgYXN5bmMgZm4gc2NoZWR1bGVfZGF0YXN0b3Jl X3N5bmNfam9icygpIHsKPj4gICAgICAgICAgIE9rKChjb25maWcsIF9kaWdlc3QpKSA9PiBjb25m aWcsCj4+ICAgICAgIH07Cj4+ICAgCj4+IC0gICAgZm9yIChqb2JfaWQsIChfLCBqb2JfY29uZmln KSkgaW4gY29uZmlnLnNlY3Rpb25zIHsKPj4gKyAgICBmb3IgKGpvYl9pZCwgKGpvYl90eXBlLCBq b2JfY29uZmlnKSkgaW4gY29uZmlnLnNlY3Rpb25zIHsKPj4gKyAgICAgICAgbGV0IHN5bmNfZGly ZWN0aW9uID0gbWF0Y2ggU3luY0RpcmVjdGlvbjo6ZnJvbV9jb25maWdfdHlwZV9zdHIoJmpvYl90 eXBlKSB7Cj4+ICsgICAgICAgICAgICBPayhkaXJlY3Rpb24pID0+IGRpcmVjdGlvbiwKPj4gKyAg ICAgICAgICAgIEVycihlcnIpID0+IHsKPj4gKyAgICAgICAgICAgICAgICBlcHJpbnRsbiEoInVu ZXhwZWN0ZWQgY29uZmlnIHR5cGUgaW4gc3luYyBqb2IgY29uZmlnIC0ge2Vycn0iKTsKPj4gKyAg ICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgfTsK Pj4gICAgICAgICAgIGxldCBqb2JfY29uZmlnOiBTeW5jSm9iQ29uZmlnID0gbWF0Y2ggc2VyZGVf anNvbjo6ZnJvbV92YWx1ZShqb2JfY29uZmlnKSB7Cj4+ICAgICAgICAgICAgICAgT2soYykgPT4g YywKPj4gICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7Cj4+IEBAIC02MTYsNyArNjIzLDcgQEAg YXN5bmMgZm4gc2NoZWR1bGVfZGF0YXN0b3JlX3N5bmNfam9icygpIHsKPj4gICAgICAgICAgICAg ICAgICAgam9iX2NvbmZpZywKPj4gICAgICAgICAgICAgICAgICAgJmF1dGhfaWQsCj4+ICAgICAg ICAgICAgICAgICAgIFNvbWUoZXZlbnRfc3RyKSwKPj4gLSAgICAgICAgICAgICAgICBTeW5jRGly ZWN0aW9uOjpQdWxsLAo+PiArICAgICAgICAgICAgICAgIHN5bmNfZGlyZWN0aW9uLAo+PiAgICAg ICAgICAgICAgICAgICBmYWxzZSwKPj4gICAgICAgICAgICAgICApIHsKPj4gICAgICAgICAgICAg ICAgICAgZXByaW50bG4hKCJ1bmFibGUgdG8gc3RhcnQgZGF0YXN0b3JlIHN5bmMgam9iIHtqb2Jf aWR9IC0ge2Vycn0iKTsKPj4gLS0gCj4+IDIuMzkuNQo+Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBwYnMtZGV2ZWwgbWFpbGluZyBs aXN0Cj4+IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+PiBodHRwczovL2xpc3RzLnByb3ht b3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4KPj4KCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxp bmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94 LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCg==