From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id B39711FF17A for ; Tue, 9 Dec 2025 17:50:52 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 732C094DE; Tue, 9 Dec 2025 17:51:32 +0100 (CET) Date: Tue, 09 Dec 2025 17:50:56 +0100 Message-Id: To: "Proxmox Backup Server development discussion" From: "Max R. Carrara" Mime-Version: 1.0 X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20251203102217.59923-1-s.rufinatscha@proxmox.com> <20251203102217.59923-4-s.rufinatscha@proxmox.com> In-Reply-To: <20251203102217.59923-4-s.rufinatscha@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1765299049984 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.086 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup v4 3/4] acme: change API impls to use proxmox-acme-api handlers 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gV2VkIERlYyAzLCAyMDI1IGF0IDExOjIyIEFNIENFVCwgU2FtdWVsIFJ1ZmluYXRzY2hhIHdy b3RlOgo+IFBCUyBjdXJyZW50bHkgdXNlcyBpdHMgb3duIEFDTUUgY2xpZW50IGFuZCBBUEkgbG9n aWMsIHdoaWxlIFBETSB1c2VzIHRoZQo+IGZhY3RvcmVkIG91dCBwcm94bW94LWFjbWUgYW5kIHBy b3htb3gtYWNtZS1hcGkgY3JhdGVzLiBUaGlzIGR1cGxpY2F0aW9uCj4gcmlza3MgZGlmZmVyZW5j ZXMgaW4gYmVoYXZpb3VyIGFuZCByZXF1aXJlcyBBQ01FIG1haW50ZW5hbmNlIGluIHR3bwo+IHBs YWNlcy4gVGhpcyBwYXRjaCBpcyBwYXJ0IG9mIGEgc2VyaWVzIHRvIG1vdmUgUEJTIG92ZXIgdG8g dGhlIHNoYXJlZAo+IEFDTUUgc3RhY2suCj4KPiBDaGFuZ2VzOgo+IC0gUmVwbGFjZSBhcGkyL2Nv bmZpZy9hY21lLnJzIEFQSSBsb2dpYyB3aXRoIHByb3htb3gtYWNtZS1hcGkgaGFuZGxlcnMuCj4g LSBEcm9wIGxvY2FsIGNhY2hpbmcgYW5kIGhlbHBlciB0eXBlcyB0aGF0IGR1cGxpY2F0ZSBwcm94 bW94LWFjbWUtYXBpLgo+Cj4gU2lnbmVkLW9mZi1ieTogU2FtdWVsIFJ1ZmluYXRzY2hhIDxzLnJ1 ZmluYXRzY2hhQHByb3htb3guY29tPgo+IC0tLQo+ICBzcmMvYXBpMi9jb25maWcvYWNtZS5ycyAg ICAgICAgICAgICAgICB8IDM4NSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHNyYy9hcGky L3R5cGVzL2FjbWUucnMgICAgICAgICAgICAgICAgIHwgIDE2IC0KPiAgc3JjL2Jpbi9wcm94bW94 X2JhY2t1cF9tYW5hZ2VyL2FjbWUucnMgfCAgIDYgKy0KPiAgc3JjL2NvbmZpZy9hY21lL21vZC5y cyAgICAgICAgICAgICAgICAgfCAgNDQgKy0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0 aW9ucygrKSwgNDE2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2NvbmZp Zy9hY21lLnJzIGIvc3JjL2FwaTIvY29uZmlnL2FjbWUucnMKPiBpbmRleCAwMmY4OGUyZS4uYTEx MmM4ZWUgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FwaTIvY29uZmlnL2FjbWUucnMKPiArKysgYi9zcmMv YXBpMi9jb25maWcvYWNtZS5ycwo+IEBAIC0xLDMxICsxLDE3IEBACj4gLXVzZSBzdGQ6OmZzOwo+ IC11c2Ugc3RkOjpvcHM6OkNvbnRyb2xGbG93Owo+IC11c2Ugc3RkOjpwYXRoOjpQYXRoOwo+IC11 c2Ugc3RkOjpzeW5jOjp7QXJjLCBMYXp5TG9jaywgTXV0ZXh9Owo+IC11c2Ugc3RkOjp0aW1lOjpT eXN0ZW1UaW1lOwo+IC0KPiAtdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVycm9yfTsK PiAtdXNlIGhleDo6RnJvbUhleDsKPiAtdXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNlcmlhbGl6 ZX07Cj4gLXVzZSBzZXJkZV9qc29uOjp7anNvbiwgVmFsdWV9Owo+IC11c2UgdHJhY2luZzo6e2lu Zm8sIHdhcm59Owo+IC0KPiAtdXNlIHByb3htb3hfcm91dGVyOjp7Cj4gLSAgICBodHRwX2JhaWws IGxpc3Rfc3ViZGlyc19hcGlfbWV0aG9kLCBQZXJtaXNzaW9uLCBSb3V0ZXIsIFJwY0Vudmlyb25t ZW50LCBTdWJkaXJNYXAsCj4gLX07Cj4gLXVzZSBwcm94bW94X3NjaGVtYTo6e2FwaSwgcGFyYW1f YmFpbH07Cj4gLQo+IC11c2UgcHJveG1veF9hY21lOjp0eXBlczo6QWNjb3VudERhdGEgYXMgQWNt ZUFjY291bnREYXRhOwo+IC0KPiArdXNlIGFueWhvdzo6RXJyb3I7Cj4gIHVzZSBwYnNfYXBpX3R5 cGVzOjp7QXV0aGlkLCBQUklWX1NZU19NT0RJRll9Owo+IC0KPiAtdXNlIGNyYXRlOjphcGkyOjp0 eXBlczo6e0FjbWVDaGFsbGVuZ2VTY2hlbWEsIEtub3duQWNtZURpcmVjdG9yeX07Cj4gLXVzZSBj cmF0ZTo6Y29uZmlnOjphY21lOjpwbHVnaW46OnsKPiAtICAgIHNlbGYsIERuc1BsdWdpbiwgRG5z UGx1Z2luQ29yZSwgRG5zUGx1Z2luQ29yZVVwZGF0ZXIsIFBMVUdJTl9JRF9TQ0hFTUEsCj4gK3Vz ZSBwcm94bW94X2FjbWVfYXBpOjp7Cj4gKyAgICBBY2NvdW50RW50cnksIEFjY291bnRJbmZvLCBB Y21lQWNjb3VudE5hbWUsIEFjbWVDaGFsbGVuZ2VTY2hlbWEsIENoYWxsZW5nZVNjaGVtYVdyYXBw ZXIsCj4gKyAgICBEZWxldGFibGVQbHVnaW5Qcm9wZXJ0eSwgRG5zUGx1Z2luQ29yZSwgRG5zUGx1 Z2luQ29yZVVwZGF0ZXIsIEtub3duQWNtZURpcmVjdG9yeSwgUGx1Z2luQ29uZmlnLAo+ICsgICAg REVGQVVMVF9BQ01FX0RJUkVDVE9SWV9FTlRSWSwgUExVR0lOX0lEX1NDSEVNQSwKPiAgfTsKPiAt dXNlIHByb3htb3hfYWNtZTo6YXN5bmNfY2xpZW50OjpBY21lQ2xpZW50Owo+IC11c2UgcHJveG1v eF9hY21lX2FwaTo6QWNtZUFjY291bnROYW1lOwo+ICt1c2UgcHJveG1veF9jb25maWdfZGlnZXN0 OjpDb25maWdEaWdlc3Q7Cj4gIHVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjpXb3JrZXJUYXNrOwo+ ICt1c2UgcHJveG1veF9yb3V0ZXI6OnsKPiArICAgIGh0dHBfYmFpbCwgbGlzdF9zdWJkaXJzX2Fw aV9tZXRob2QsIFBlcm1pc3Npb24sIFJvdXRlciwgUnBjRW52aXJvbm1lbnQsIFN1YmRpck1hcCwK PiArfTsKPiArdXNlIHByb3htb3hfc2NoZW1hOjphcGk7Cj4gK3VzZSB0cmFjaW5nOjppbmZvOwoK KFNlZSBteSBjb21tZW50IHRvIHBhdGNoIDIvNCBmb3IgYW4gZXhwbGFuYXRpb24pCgp1c2UgYW55 aG93OjpFcnJvcjsKdXNlIHRyYWNpbmc6OmluZm87Cgp1c2UgcGJzX2FwaV90eXBlczo6e0F1dGhp ZCwgUFJJVl9TWVNfTU9ESUZZfTsKdXNlIHByb3htb3hfYWNtZV9hcGk6OnsKICAgIEFjY291bnRF bnRyeSwgQWNjb3VudEluZm8sIEFjbWVBY2NvdW50TmFtZSwgQWNtZUNoYWxsZW5nZVNjaGVtYSwg Q2hhbGxlbmdlU2NoZW1hV3JhcHBlciwKICAgIERlbGV0YWJsZVBsdWdpblByb3BlcnR5LCBEbnNQ bHVnaW5Db3JlLCBEbnNQbHVnaW5Db3JlVXBkYXRlciwgS25vd25BY21lRGlyZWN0b3J5LCBQbHVn aW5Db25maWcsCiAgICBERUZBVUxUX0FDTUVfRElSRUNUT1JZX0VOVFJZLCBQTFVHSU5fSURfU0NI RU1BLAp9Owp1c2UgcHJveG1veF9jb25maWdfZGlnZXN0OjpDb25maWdEaWdlc3Q7CnVzZSBwcm94 bW94X3Jlc3Rfc2VydmVyOjpXb3JrZXJUYXNrOwp1c2UgcHJveG1veF9yb3V0ZXI6OnsKICAgIGh0 dHBfYmFpbCwgbGlzdF9zdWJkaXJzX2FwaV9tZXRob2QsIFBlcm1pc3Npb24sIFJvdXRlciwgUnBj RW52aXJvbm1lbnQsIFN1YmRpck1hcCwKfTsKdXNlIHByb3htb3hfc2NoZW1hOjphcGk7CgoKPiAg Cj4gIHB1YihjcmF0ZSkgY29uc3QgUk9VVEVSOiBSb3V0ZXIgPSBSb3V0ZXI6Om5ldygpCj4gICAg ICAuZ2V0KCZsaXN0X3N1YmRpcnNfYXBpX21ldGhvZCEoU1VCRElSUykpCj4gQEAgLTY3LDE5ICs1 Myw2IEBAIGNvbnN0IFBMVUdJTl9JVEVNX1JPVVRFUjogUm91dGVyID0gUm91dGVyOjpuZXcoKQo+ ICAgICAgLnB1dCgmQVBJX01FVEhPRF9VUERBVEVfUExVR0lOKQo+ICAgICAgLmRlbGV0ZSgmQVBJ X01FVEhPRF9ERUxFVEVfUExVR0lOKTsKPiAgCj4gLSNbYXBpKAo+IC0gICAgcHJvcGVydGllczog ewo+IC0gICAgICAgIG5hbWU6IHsgdHlwZTogQWNtZUFjY291bnROYW1lIH0sCj4gLSAgICB9LAo+ IC0pXQo+IC0vLy8gQW4gQUNNRSBBY2NvdW50IGVudHJ5Lgo+IC0vLy8KPiAtLy8vIEN1cnJlbnRs eSBvbmx5IGNvbnRhaW5zIGEgJ25hbWUnIHByb3BlcnR5Lgo+IC0jW2Rlcml2ZShTZXJpYWxpemUp XQo+IC1wdWIgc3RydWN0IEFjY291bnRFbnRyeSB7Cj4gLSAgICBuYW1lOiBBY21lQWNjb3VudE5h bWUsCj4gLX0KPiAtCj4gICNbYXBpKAo+ICAgICAgYWNjZXNzOiB7Cj4gICAgICAgICAgcGVybWlz c2lvbjogJlBlcm1pc3Npb246OlByaXZpbGVnZSgmWyJzeXN0ZW0iLCAiY2VydGlmaWNhdGVzIl0s IFBSSVZfU1lTX01PRElGWSwgZmFsc2UpLAo+IEBAIC05Myw0MCArNjYsNyBAQCBwdWIgc3RydWN0 IEFjY291bnRFbnRyeSB7Cj4gICldCj4gIC8vLyBMaXN0IEFDTUUgYWNjb3VudHMuCj4gIHB1YiBm biBsaXN0X2FjY291bnRzKCkgLT4gUmVzdWx0PFZlYzxBY2NvdW50RW50cnk+LCBFcnJvcj4gewo+ IC0gICAgbGV0IG11dCBlbnRyaWVzID0gVmVjOjpuZXcoKTsKPiAtICAgIGNyYXRlOjpjb25maWc6 OmFjbWU6OmZvcmVhY2hfYWNtZV9hY2NvdW50KHxuYW1lfCB7Cj4gLSAgICAgICAgZW50cmllcy5w dXNoKEFjY291bnRFbnRyeSB7IG5hbWUgfSk7Cj4gLSAgICAgICAgQ29udHJvbEZsb3c6OkNvbnRp bnVlKCgpKQo+IC0gICAgfSk/Owo+IC0gICAgT2soZW50cmllcykKPiAtfQo+IC0KPiAtI1thcGko Cj4gLSAgICBwcm9wZXJ0aWVzOiB7Cj4gLSAgICAgICAgYWNjb3VudDogeyB0eXBlOiBPYmplY3Qs IHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsX3Byb3BlcnRpZXM6IHRydWUgfSwKPiAtICAgICAg ICB0b3M6IHsKPiAtICAgICAgICAgICAgdHlwZTogU3RyaW5nLAo+IC0gICAgICAgICAgICBvcHRp b25hbDogdHJ1ZSwKPiAtICAgICAgICB9LAo+IC0gICAgfSwKPiAtKV0KPiAtLy8vIEFDTUUgQWNj b3VudCBpbmZvcm1hdGlvbi4KPiAtLy8vCj4gLS8vLyBUaGlzIGlzIHdoYXQgd2UgcmV0dXJuIHZp YSB0aGUgQVBJLgo+IC0jW2Rlcml2ZShTZXJpYWxpemUpXQo+IC1wdWIgc3RydWN0IEFjY291bnRJ bmZvIHsKPiAtICAgIC8vLyBSYXcgYWNjb3VudCBkYXRhLgo+IC0gICAgYWNjb3VudDogQWNtZUFj Y291bnREYXRhLAo+IC0KPiAtICAgIC8vLyBUaGUgQUNNRSBkaXJlY3RvcnkgVVJMIHRoZSBhY2Nv dW50IHdhcyBjcmVhdGVkIGF0Lgo+IC0gICAgZGlyZWN0b3J5OiBTdHJpbmcsCj4gLQo+IC0gICAg Ly8vIFRoZSBhY2NvdW50J3Mgb3duIFVSTCB3aXRoaW4gdGhlIEFDTUUgZGlyZWN0b3J5Lgo+IC0g ICAgbG9jYXRpb246IFN0cmluZywKPiAtCj4gLSAgICAvLy8gVGhlIFRvUyBVUkwsIGlmIHRoZSB1 c2VyIGFncmVlZCB0byBvbmUuCj4gLSAgICAjW3NlcmRlKHNraXBfc2VyaWFsaXppbmdfaWYgPSAi T3B0aW9uOjppc19ub25lIildCj4gLSAgICB0b3M6IE9wdGlvbjxTdHJpbmc+LAo+ICsgICAgcHJv eG1veF9hY21lX2FwaTo6bGlzdF9hY2NvdW50cygpCj4gIH0KPiAgCj4gICNbYXBpKAo+IEBAIC0x NDMsMjMgKzgzLDcgQEAgcHViIHN0cnVjdCBBY2NvdW50SW5mbyB7Cj4gICldCj4gIC8vLyBSZXR1 cm4gZXhpc3RpbmcgQUNNRSBhY2NvdW50IGluZm9ybWF0aW9uLgo+ICBwdWIgYXN5bmMgZm4gZ2V0 X2FjY291bnQobmFtZTogQWNtZUFjY291bnROYW1lKSAtPiBSZXN1bHQ8QWNjb3VudEluZm8sIEVy cm9yPiB7Cj4gLSAgICBsZXQgYWNjb3VudF9pbmZvID0gcHJveG1veF9hY21lX2FwaTo6Z2V0X2Fj Y291bnQobmFtZSkuYXdhaXQ/Owo+IC0KPiAtICAgIE9rKEFjY291bnRJbmZvIHsKPiAtICAgICAg ICBsb2NhdGlvbjogYWNjb3VudF9pbmZvLmxvY2F0aW9uLAo+IC0gICAgICAgIHRvczogYWNjb3Vu dF9pbmZvLnRvcywKPiAtICAgICAgICBkaXJlY3Rvcnk6IGFjY291bnRfaW5mby5kaXJlY3Rvcnks Cj4gLSAgICAgICAgYWNjb3VudDogQWNtZUFjY291bnREYXRhIHsKPiAtICAgICAgICAgICAgb25s eV9yZXR1cm5fZXhpc3Rpbmc6IGZhbHNlLCAvLyBkb24ndCBhY3R1YWxseSB3cml0ZSB0aGlzIG91 dCBpbiBjYXNlIGl0J3Mgc2V0Cj4gLSAgICAgICAgICAgIC4uYWNjb3VudF9pbmZvLmFjY291bnQK PiAtICAgICAgICB9LAo+IC0gICAgfSkKPiAtfQo+IC0KPiAtZm4gYWNjb3VudF9jb250YWN0X2Zy b21fc3RyaW5nKHM6ICZzdHIpIC0+IFZlYzxTdHJpbmc+IHsKPiAtICAgIHMuc3BsaXQoJlsnICcs ICc7JywgJywnLCAnXDAnXVsuLl0pCj4gLSAgICAgICAgLm1hcCh8c3wgZm9ybWF0ISgibWFpbHRv OntzfSIpKQo+IC0gICAgICAgIC5jb2xsZWN0KCkKPiArICAgIHByb3htb3hfYWNtZV9hcGk6Omdl dF9hY2NvdW50KG5hbWUpLmF3YWl0Cj4gIH0KPiAgCj4gICNbYXBpKAo+IEBAIC0yMjQsMTUgKzE0 OCwxMSBAQCBmbiByZWdpc3Rlcl9hY2NvdW50KAo+ICAgICAgICAgICk7Cj4gICAgICB9Cj4gIAo+ IC0gICAgaWYgUGF0aDo6bmV3KCZjcmF0ZTo6Y29uZmlnOjphY21lOjphY2NvdW50X3BhdGgoJm5h bWUpKS5leGlzdHMoKSB7Cj4gKyAgICBpZiBzdGQ6OnBhdGg6OlBhdGg6Om5ldygmcHJveG1veF9h Y21lX2FwaTo6YWNjb3VudF9jb25maWdfZmlsZW5hbWUoJm5hbWUpKS5leGlzdHMoKSB7Cj4gICAg ICAgICAgaHR0cF9iYWlsIShCQURfUkVRVUVTVCwgImFjY291bnQge30gYWxyZWFkeSBleGlzdHMi LCBuYW1lKTsKPiAgICAgIH0KPiAgCj4gLSAgICBsZXQgZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnVu d3JhcF9vcl9lbHNlKHx8IHsKPiAtICAgICAgICBjcmF0ZTo6Y29uZmlnOjphY21lOjpERUZBVUxU X0FDTUVfRElSRUNUT1JZX0VOVFJZCj4gLSAgICAgICAgICAgIC51cmwKPiAtICAgICAgICAgICAg LnRvX293bmVkKCkKPiAtICAgIH0pOwo+ICsgICAgbGV0IGRpcmVjdG9yeSA9IGRpcmVjdG9yeS51 bndyYXBfb3JfZWxzZSh8fCBERUZBVUxUX0FDTUVfRElSRUNUT1JZX0VOVFJZLnVybC50b19zdHJp bmcoKSk7Cj4gIAo+ICAgICAgV29ya2VyVGFzazo6c3Bhd24oCj4gICAgICAgICAgImFjbWUtcmVn aXN0ZXIiLAo+IEBAIC0yODgsMTcgKzIwOCw3IEBAIHB1YiBmbiB1cGRhdGVfYWNjb3VudCgKPiAg ICAgICAgICBhdXRoX2lkLnRvX3N0cmluZygpLAo+ICAgICAgICAgIHRydWUsCj4gICAgICAgICAg bW92ZSB8X3dvcmtlcnwgYXN5bmMgbW92ZSB7Cj4gLSAgICAgICAgICAgIGxldCBkYXRhID0gbWF0 Y2ggY29udGFjdCB7Cj4gLSAgICAgICAgICAgICAgICBTb21lKGRhdGEpID0+IGpzb24hKHsKPiAt ICAgICAgICAgICAgICAgICAgICAiY29udGFjdCI6IGFjY291bnRfY29udGFjdF9mcm9tX3N0cmlu ZygmZGF0YSksCj4gLSAgICAgICAgICAgICAgICB9KSwKPiAtICAgICAgICAgICAgICAgIE5vbmUg PT4ganNvbiEoe30pLAo+IC0gICAgICAgICAgICB9Owo+IC0KPiAtICAgICAgICAgICAgcHJveG1v eF9hY21lX2FwaTo6bG9hZF9jbGllbnRfd2l0aF9hY2NvdW50KCZuYW1lKQo+IC0gICAgICAgICAg ICAgICAgLmF3YWl0Pwo+IC0gICAgICAgICAgICAgICAgLnVwZGF0ZV9hY2NvdW50KCZkYXRhKQo+ IC0gICAgICAgICAgICAgICAgLmF3YWl0PzsKPiArICAgICAgICAgICAgcHJveG1veF9hY21lX2Fw aTo6dXBkYXRlX2FjY291bnQoJm5hbWUsIGNvbnRhY3QpLmF3YWl0PzsKPiAgCj4gICAgICAgICAg ICAgIE9rKCgpKQo+ICAgICAgICAgIH0sCj4gQEAgLTMzNiwxOCArMjQ2LDggQEAgcHViIGZuIGRl YWN0aXZhdGVfYWNjb3VudCgKPiAgICAgICAgICBhdXRoX2lkLnRvX3N0cmluZygpLAo+ICAgICAg ICAgIHRydWUsCj4gICAgICAgICAgbW92ZSB8X3dvcmtlcnwgYXN5bmMgbW92ZSB7Cj4gLSAgICAg ICAgICAgIG1hdGNoIHByb3htb3hfYWNtZV9hcGk6OmxvYWRfY2xpZW50X3dpdGhfYWNjb3VudCgm bmFtZSkKPiAtICAgICAgICAgICAgICAgIC5hd2FpdD8KPiAtICAgICAgICAgICAgICAgIC51cGRh dGVfYWNjb3VudCgmanNvbiEoeyJzdGF0dXMiOiAiZGVhY3RpdmF0ZWQifSkpCj4gLSAgICAgICAg ICAgICAgICAuYXdhaXQKPiAtICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgT2soX2Fj Y291bnQpID0+ICgpLAo+IC0gICAgICAgICAgICAgICAgRXJyKGVycikgaWYgIWZvcmNlID0+IHJl dHVybiBFcnIoZXJyKSwKPiAtICAgICAgICAgICAgICAgIEVycihlcnIpID0+IHsKPiAtICAgICAg ICAgICAgICAgICAgICB3YXJuISgiZXJyb3IgZGVhY3RpdmF0aW5nIGFjY291bnQge25hbWV9LCBw cm9jZWVkaW5nIGFueXdheSAtIHtlcnJ9Iik7Cj4gLSAgICAgICAgICAgICAgICB9Cj4gLSAgICAg ICAgICAgIH0KPiAtICAgICAgICAgICAgY3JhdGU6OmNvbmZpZzo6YWNtZTo6bWFya19hY2NvdW50 X2RlYWN0aXZhdGVkKCZuYW1lKT87Cj4gKyAgICAgICAgICAgIHByb3htb3hfYWNtZV9hcGk6OmRl YWN0aXZhdGVfYWNjb3VudCgmbmFtZSwgZm9yY2UpLmF3YWl0PzsKPiArCj4gICAgICAgICAgICAg IE9rKCgpKQo+ICAgICAgICAgIH0sCj4gICAgICApCj4gQEAgLTM3NCwxNSArMjc0LDcgQEAgcHVi IGZuIGRlYWN0aXZhdGVfYWNjb3VudCgKPiAgKV0KPiAgLy8vIEdldCB0aGUgVGVybXMgb2YgU2Vy dmljZSBVUkwgZm9yIGFuIEFDTUUgZGlyZWN0b3J5Lgo+ICBhc3luYyBmbiBnZXRfdG9zKGRpcmVj dG9yeTogT3B0aW9uPFN0cmluZz4pIC0+IFJlc3VsdDxPcHRpb248U3RyaW5nPiwgRXJyb3I+IHsK PiAtICAgIGxldCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkudW53cmFwX29yX2Vsc2UofHwgewo+IC0g ICAgICAgIGNyYXRlOjpjb25maWc6OmFjbWU6OkRFRkFVTFRfQUNNRV9ESVJFQ1RPUllfRU5UUlkK PiAtICAgICAgICAgICAgLnVybAo+IC0gICAgICAgICAgICAudG9fb3duZWQoKQo+IC0gICAgfSk7 Cj4gLSAgICBPayhBY21lQ2xpZW50OjpuZXcoZGlyZWN0b3J5KQo+IC0gICAgICAgIC50ZXJtc19v Zl9zZXJ2aWNlX3VybCgpCj4gLSAgICAgICAgLmF3YWl0Pwo+IC0gICAgICAgIC5tYXAoc3RyOjp0 b19vd25lZCkpCj4gKyAgICBwcm94bW94X2FjbWVfYXBpOjpnZXRfdG9zKGRpcmVjdG9yeSkuYXdh aXQKPiAgfQo+ICAKPiAgI1thcGkoCj4gQEAgLTM5Nyw1MiArMjg5LDcgQEAgYXN5bmMgZm4gZ2V0 X3RvcyhkaXJlY3Rvcnk6IE9wdGlvbjxTdHJpbmc+KSAtPiBSZXN1bHQ8T3B0aW9uPFN0cmluZz4s IEVycm9yPiB7Cj4gICldCj4gIC8vLyBHZXQgbmFtZWQga25vd24gQUNNRSBkaXJlY3RvcnkgZW5k cG9pbnRzLgo+ICBmbiBnZXRfZGlyZWN0b3JpZXMoKSAtPiBSZXN1bHQ8JidzdGF0aWMgW0tub3du QWNtZURpcmVjdG9yeV0sIEVycm9yPiB7Cj4gLSAgICBPayhjcmF0ZTo6Y29uZmlnOjphY21lOjpL Tk9XTl9BQ01FX0RJUkVDVE9SSUVTKQo+IC19Cj4gLQo+IC0vLy8gV3JhcHBlciBmb3IgZWZmaWNp ZW50IEFyYyB1c2Ugd2hlbiByZXR1cm5pbmcgdGhlIEFDTUUgY2hhbGxlbmdlLXBsdWdpbiBzY2hl bWEgZm9yIHNlcmlhbGl6aW5nCj4gLXN0cnVjdCBDaGFsbGVuZ2VTY2hlbWFXcmFwcGVyIHsKPiAt ICAgIGlubmVyOiBBcmM8VmVjPEFjbWVDaGFsbGVuZ2VTY2hlbWE+PiwKPiAtfQo+IC0KPiAtaW1w bCBTZXJpYWxpemUgZm9yIENoYWxsZW5nZVNjaGVtYVdyYXBwZXIgewo+IC0gICAgZm4gc2VyaWFs aXplPFM+KCZzZWxmLCBzZXJpYWxpemVyOiBTKSAtPiBSZXN1bHQ8Uzo6T2ssIFM6OkVycm9yPgo+ IC0gICAgd2hlcmUKPiAtICAgICAgICBTOiBzZXJkZTo6U2VyaWFsaXplciwKPiAtICAgIHsKPiAt ICAgICAgICBzZWxmLmlubmVyLnNlcmlhbGl6ZShzZXJpYWxpemVyKQo+IC0gICAgfQo+IC19Cj4g LQo+IC1zdHJ1Y3QgQ2FjaGVkU2NoZW1hIHsKPiAtICAgIHNjaGVtYTogQXJjPFZlYzxBY21lQ2hh bGxlbmdlU2NoZW1hPj4sCj4gLSAgICBjYWNoZWRfbXRpbWU6IFN5c3RlbVRpbWUsCj4gLX0KPiAt Cj4gLWZuIGdldF9jYWNoZWRfY2hhbGxlbmdlX3NjaGVtYXMoKSAtPiBSZXN1bHQ8Q2hhbGxlbmdl U2NoZW1hV3JhcHBlciwgRXJyb3I+IHsKPiAtICAgIHN0YXRpYyBDQUNIRTogTGF6eUxvY2s8TXV0 ZXg8T3B0aW9uPENhY2hlZFNjaGVtYT4+PiA9IExhenlMb2NrOjpuZXcofHwgTXV0ZXg6Om5ldyhO b25lKSk7Cj4gLQo+IC0gICAgLy8gdGhlIGFjdHVhbCBsb2FkaW5nIGNvZGUKPiAtICAgIGxldCBt dXQgbGFzdCA9IENBQ0hFLmxvY2soKS51bndyYXAoKTsKPiAtCj4gLSAgICBsZXQgYWN0dWFsX210 aW1lID0gZnM6Om1ldGFkYXRhKGNyYXRlOjpjb25maWc6OmFjbWU6OkFDTUVfRE5TX1NDSEVNQV9G Tik/Lm1vZGlmaWVkKCk/Owo+IC0KPiAtICAgIGxldCBzY2hlbWEgPSBtYXRjaCAmKmxhc3Qgewo+ IC0gICAgICAgIFNvbWUoQ2FjaGVkU2NoZW1hIHsKPiAtICAgICAgICAgICAgc2NoZW1hLAo+IC0g ICAgICAgICAgICBjYWNoZWRfbXRpbWUsCj4gLSAgICAgICAgfSkgaWYgKmNhY2hlZF9tdGltZSA+ PSBhY3R1YWxfbXRpbWUgPT4gc2NoZW1hLmNsb25lKCksCj4gLSAgICAgICAgXyA9PiB7Cj4gLSAg ICAgICAgICAgIGxldCBuZXdfc2NoZW1hID0gQXJjOjpuZXcoY3JhdGU6OmNvbmZpZzo6YWNtZTo6 bG9hZF9kbnNfY2hhbGxlbmdlX3NjaGVtYSgpPyk7Cj4gLSAgICAgICAgICAgICpsYXN0ID0gU29t ZShDYWNoZWRTY2hlbWEgewo+IC0gICAgICAgICAgICAgICAgc2NoZW1hOiBBcmM6OmNsb25lKCZu ZXdfc2NoZW1hKSwKPiAtICAgICAgICAgICAgICAgIGNhY2hlZF9tdGltZTogYWN0dWFsX210aW1l LAo+IC0gICAgICAgICAgICB9KTsKPiAtICAgICAgICAgICAgbmV3X3NjaGVtYQo+IC0gICAgICAg IH0KPiAtICAgIH07Cj4gLQo+IC0gICAgT2soQ2hhbGxlbmdlU2NoZW1hV3JhcHBlciB7IGlubmVy OiBzY2hlbWEgfSkKPiArICAgIE9rKHByb3htb3hfYWNtZV9hcGk6OktOT1dOX0FDTUVfRElSRUNU T1JJRVMpCj4gIH0KPiAgCj4gICNbYXBpKAo+IEBAIC00NTcsNjkgKzMwNCw3IEBAIGZuIGdldF9j YWNoZWRfY2hhbGxlbmdlX3NjaGVtYXMoKSAtPiBSZXN1bHQ8Q2hhbGxlbmdlU2NoZW1hV3JhcHBl ciwgRXJyb3I+IHsKPiAgKV0KPiAgLy8vIEdldCBuYW1lZCBrbm93biBBQ01FIGRpcmVjdG9yeSBl bmRwb2ludHMuCj4gIGZuIGdldF9jaGFsbGVuZ2Vfc2NoZW1hKCkgLT4gUmVzdWx0PENoYWxsZW5n ZVNjaGVtYVdyYXBwZXIsIEVycm9yPiB7Cj4gLSAgICBnZXRfY2FjaGVkX2NoYWxsZW5nZV9zY2hl bWFzKCkKPiAtfQo+IC0KPiAtI1thcGldCj4gLSNbZGVyaXZlKERlZmF1bHQsIERlc2VyaWFsaXpl LCBTZXJpYWxpemUpXQo+IC0jW3NlcmRlKHJlbmFtZV9hbGwgPSAia2ViYWItY2FzZSIpXQo+IC0v Ly8gVGhlIEFQSSdzIGZvcm1hdCBpcyBpbmhlcml0ZWQgZnJvbSBQVkUvUE1HOgo+IC1wdWIgc3Ry dWN0IFBsdWdpbkNvbmZpZyB7Cj4gLSAgICAvLy8gUGx1Z2luIElELgo+IC0gICAgcGx1Z2luOiBT dHJpbmcsCj4gLQo+IC0gICAgLy8vIFBsdWdpbiB0eXBlLgo+IC0gICAgI1tzZXJkZShyZW5hbWUg PSAidHlwZSIpXQo+IC0gICAgdHk6IFN0cmluZywKPiAtCj4gLSAgICAvLy8gRE5TIEFwaSBuYW1l Lgo+IC0gICAgI1tzZXJkZShza2lwX3NlcmlhbGl6aW5nX2lmID0gIk9wdGlvbjo6aXNfbm9uZSIs IGRlZmF1bHQpXQo+IC0gICAgYXBpOiBPcHRpb248U3RyaW5nPiwKPiAtCj4gLSAgICAvLy8gUGx1 Z2luIGNvbmZpZ3VyYXRpb24gZGF0YS4KPiAtICAgICNbc2VyZGUoc2tpcF9zZXJpYWxpemluZ19p ZiA9ICJPcHRpb246OmlzX25vbmUiLCBkZWZhdWx0KV0KPiAtICAgIGRhdGE6IE9wdGlvbjxTdHJp bmc+LAo+IC0KPiAtICAgIC8vLyBFeHRyYSBkZWxheSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3Jl IHJlcXVlc3RpbmcgdmFsaWRhdGlvbi4KPiAtICAgIC8vLwo+IC0gICAgLy8vIEFsbG93cyB0byBj b3BlIHdpdGggbG9uZyBUVEwgb2YgRE5TIHJlY29yZHMuCj4gLSAgICAjW3NlcmRlKHNraXBfc2Vy aWFsaXppbmdfaWYgPSAiT3B0aW9uOjppc19ub25lIiwgZGVmYXVsdCldCj4gLSAgICB2YWxpZGF0 aW9uX2RlbGF5OiBPcHRpb248dTMyPiwKPiAtCj4gLSAgICAvLy8gRmxhZyB0byBkaXNhYmxlIHRo ZSBjb25maWcuCj4gLSAgICAjW3NlcmRlKHNraXBfc2VyaWFsaXppbmdfaWYgPSAiT3B0aW9uOjpp c19ub25lIiwgZGVmYXVsdCldCj4gLSAgICBkaXNhYmxlOiBPcHRpb248Ym9vbD4sCj4gLX0KPiAt Cj4gLS8vIFNlZSBQTUcvUFZFJ3MgJG1vZGlmeV9jZmdfZm9yX2FwaSBzdWIKPiAtZm4gbW9kaWZ5 X2NmZ19mb3JfYXBpKGlkOiAmc3RyLCB0eTogJnN0ciwgZGF0YTogJlZhbHVlKSAtPiBQbHVnaW5D b25maWcgewo+IC0gICAgbGV0IG11dCBlbnRyeSA9IGRhdGEuY2xvbmUoKTsKPiAtCj4gLSAgICBs ZXQgb2JqID0gZW50cnkuYXNfb2JqZWN0X211dCgpLnVud3JhcCgpOwo+IC0gICAgb2JqLnJlbW92 ZSgiaWQiKTsKPiAtICAgIG9iai5pbnNlcnQoInBsdWdpbiIudG9fc3RyaW5nKCksIFZhbHVlOjpT dHJpbmcoaWQudG9fb3duZWQoKSkpOwo+IC0gICAgb2JqLmluc2VydCgidHlwZSIudG9fc3RyaW5n KCksIFZhbHVlOjpTdHJpbmcodHkudG9fb3duZWQoKSkpOwo+IC0KPiAtICAgIC8vIEZJWE1FOiBU aGlzIG5lZWRzIHRvIGdvIG9uY2UgdGhlIGBVcGRhdGVyYCBpcyBmaXhlZC4KPiAtICAgIC8vIE5v bmUgb2YgdGhlc2Ugc2hvdWxkIGJlIGFibGUgdG8gZmFpbCB1bmxlc3MgdGhlIHVzZXIgY2hhbmdl ZCB0aGUgZmlsZXMgYnkgaGFuZCwgaW4gd2hpY2gKPiAtICAgIC8vIGNhc2Ugd2UgbGVhdmUgdGhl IHVubW9kaWZpZWQgc3RyaW5nIGluIHRoZSBWYWx1ZSBmb3Igbm93LiBUaGlzIHdpbGwgYmUgaGFu ZGxlZCB3aXRoIGFuIGVycm9yCj4gLSAgICAvLyBsYXRlci4KPiAtICAgIGlmIGxldCBTb21lKFZh bHVlOjpTdHJpbmcocmVmIG11dCBkYXRhKSkgPSBvYmouZ2V0X211dCgiZGF0YSIpIHsKPiAtICAg ICAgICBpZiBsZXQgT2sobmV3KSA9IHByb3htb3hfYmFzZTY0Ojp1cmw6OmRlY29kZV9ub19wYWQo JmRhdGEpIHsKPiAtICAgICAgICAgICAgaWYgbGV0IE9rKHV0ZjgpID0gU3RyaW5nOjpmcm9tX3V0 ZjgobmV3KSB7Cj4gLSAgICAgICAgICAgICAgICAqZGF0YSA9IHV0Zjg7Cj4gLSAgICAgICAgICAg IH0KPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAgLy8gUFZFL1BNRyBkbyB0aGlzIGV4 cGxpY2l0bHkgZm9yIEFDTUUgcGx1Z2lucy4uLgo+IC0gICAgLy8gb2JqLmluc2VydCgiZGlnZXN0 Ii50b19zdHJpbmcoKSwgVmFsdWU6OlN0cmluZyhkaWdlc3QuY2xvbmUoKSkpOwo+IC0KPiAtICAg IHNlcmRlX2pzb246OmZyb21fdmFsdWUoZW50cnkpLnVud3JhcF9vcl9lbHNlKHxffCBQbHVnaW5D b25maWcgewo+IC0gICAgICAgIHBsdWdpbjogIipFcnJvcioiLnRvX3N0cmluZygpLAo+IC0gICAg ICAgIHR5OiAiKkVycm9yKiIudG9fc3RyaW5nKCksCj4gLSAgICAgICAgLi5EZWZhdWx0OjpkZWZh dWx0KCkKPiAtICAgIH0pCj4gKyAgICBwcm94bW94X2FjbWVfYXBpOjpnZXRfY2FjaGVkX2NoYWxs ZW5nZV9zY2hlbWFzKCkKPiAgfQo+ICAKPiAgI1thcGkoCj4gQEAgLTUzNSwxMiArMzIwLDcgQEAg Zm4gbW9kaWZ5X2NmZ19mb3JfYXBpKGlkOiAmc3RyLCB0eTogJnN0ciwgZGF0YTogJlZhbHVlKSAt PiBQbHVnaW5Db25maWcgewo+ICApXQo+ICAvLy8gTGlzdCBBQ01FIGNoYWxsZW5nZSBwbHVnaW5z Lgo+ICBwdWIgZm4gbGlzdF9wbHVnaW5zKHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQp IC0+IFJlc3VsdDxWZWM8UGx1Z2luQ29uZmlnPiwgRXJyb3I+IHsKPiAtICAgIGxldCAocGx1Z2lu cywgZGlnZXN0KSA9IHBsdWdpbjo6Y29uZmlnKCk/Owo+IC0gICAgcnBjZW52WyJkaWdlc3QiXSA9 IGhleDo6ZW5jb2RlKGRpZ2VzdCkuaW50bygpOwo+IC0gICAgT2socGx1Z2lucwo+IC0gICAgICAg IC5pdGVyKCkKPiAtICAgICAgICAubWFwKHwoaWQsICh0eSwgZGF0YSkpfCBtb2RpZnlfY2ZnX2Zv cl9hcGkoaWQsIHR5LCBkYXRhKSkKPiAtICAgICAgICAuY29sbGVjdCgpKQo+ICsgICAgcHJveG1v eF9hY21lX2FwaTo6bGlzdF9wbHVnaW5zKHJwY2VudikKPiAgfQo+ICAKPiAgI1thcGkoCj4gQEAg LTU1NywxMyArMzM3LDcgQEAgcHViIGZuIGxpc3RfcGx1Z2lucyhycGNlbnY6ICZtdXQgZHluIFJw Y0Vudmlyb25tZW50KSAtPiBSZXN1bHQ8VmVjPFBsdWdpbkNvbmZpZz4KPiAgKV0KPiAgLy8vIExp c3QgQUNNRSBjaGFsbGVuZ2UgcGx1Z2lucy4KPiAgcHViIGZuIGdldF9wbHVnaW4oaWQ6IFN0cmlu ZywgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCkgLT4gUmVzdWx0PFBsdWdpbkNvbmZp ZywgRXJyb3I+IHsKPiAtICAgIGxldCAocGx1Z2lucywgZGlnZXN0KSA9IHBsdWdpbjo6Y29uZmln KCk/Owo+IC0gICAgcnBjZW52WyJkaWdlc3QiXSA9IGhleDo6ZW5jb2RlKGRpZ2VzdCkuaW50bygp Owo+IC0KPiAtICAgIG1hdGNoIHBsdWdpbnMuZ2V0KCZpZCkgewo+IC0gICAgICAgIFNvbWUoKHR5 LCBkYXRhKSkgPT4gT2sobW9kaWZ5X2NmZ19mb3JfYXBpKCZpZCwgdHksIGRhdGEpKSwKPiAtICAg ICAgICBOb25lID0+IGh0dHBfYmFpbCEoTk9UX0ZPVU5ELCAibm8gc3VjaCBwbHVnaW4iKSwKPiAt ICAgIH0KPiArICAgIHByb3htb3hfYWNtZV9hcGk6OmdldF9wbHVnaW4oaWQsIHJwY2VudikKPiAg fQo+ICAKPiAgLy8gQ3VycmVudGx5IHdlIG9ubHkgaGF2ZSAidGhlIiBzdGFuZGFsb25lIHBsdWdp biBhbmQgRE5TIHBsdWdpbnMgc28gd2UgY2FuIGp1c3QgZmxhdHRlbiBhCj4gQEAgLTU5NSwzMCAr MzY5LDcgQEAgcHViIGZuIGdldF9wbHVnaW4oaWQ6IFN0cmluZywgcnBjZW52OiAmbXV0IGR5biBS cGNFbnZpcm9ubWVudCkgLT4gUmVzdWx0PFBsdWdpbkMKPiAgKV0KPiAgLy8vIEFkZCBBQ01FIHBs dWdpbiBjb25maWd1cmF0aW9uLgo+ICBwdWIgZm4gYWRkX3BsdWdpbihyI3R5cGU6IFN0cmluZywg Y29yZTogRG5zUGx1Z2luQ29yZSwgZGF0YTogU3RyaW5nKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7 Cj4gLSAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IEROUyBwbHVnaW5zIGFuZCB0aGUg c3RhbmRhbG9uZSBwbHVnaW4gaXMgImZpeGVkIjoKPiAtICAgIGlmIHIjdHlwZSAhPSAiZG5zIiB7 Cj4gLSAgICAgICAgcGFyYW1fYmFpbCEoInR5cGUiLCAiaW52YWxpZCBBQ01FIHBsdWdpbiB0eXBl OiB7Oj99IiwgciN0eXBlKTsKPiAtICAgIH0KPiAtCj4gLSAgICBsZXQgZGF0YSA9IFN0cmluZzo6 ZnJvbV91dGY4KHByb3htb3hfYmFzZTY0OjpkZWNvZGUoZGF0YSk/KQo+IC0gICAgICAgIC5tYXBf ZXJyKHxffCBmb3JtYXRfZXJyISgiZGF0YSBtdXN0IGJlIHZhbGlkIFVURi04IikpPzsKPiAtCj4g LSAgICBsZXQgaWQgPSBjb3JlLmlkLmNsb25lKCk7Cj4gLQo+IC0gICAgbGV0IF9sb2NrID0gcGx1 Z2luOjpsb2NrKCk/Owo+IC0KPiAtICAgIGxldCAobXV0IHBsdWdpbnMsIF9kaWdlc3QpID0gcGx1 Z2luOjpjb25maWcoKT87Cj4gLSAgICBpZiBwbHVnaW5zLmNvbnRhaW5zX2tleSgmaWQpIHsKPiAt ICAgICAgICBwYXJhbV9iYWlsISgiaWQiLCAiQUNNRSBwbHVnaW4gSUQgezo/fSBhbHJlYWR5IGV4 aXN0cyIsIGlkKTsKPiAtICAgIH0KPiAtCj4gLSAgICBsZXQgcGx1Z2luID0gc2VyZGVfanNvbjo6 dG9fdmFsdWUoRG5zUGx1Z2luIHsgY29yZSwgZGF0YSB9KT87Cj4gLQo+IC0gICAgcGx1Z2lucy5p bnNlcnQoaWQsIHIjdHlwZSwgcGx1Z2luKTsKPiAtCj4gLSAgICBwbHVnaW46OnNhdmVfY29uZmln KCZwbHVnaW5zKT87Cj4gLQo+IC0gICAgT2soKCkpCj4gKyAgICBwcm94bW94X2FjbWVfYXBpOjph ZGRfcGx1Z2luKHIjdHlwZSwgY29yZSwgZGF0YSkKPiAgfQo+ICAKPiAgI1thcGkoCj4gQEAgLTYz NCwyNiArMzg1LDcgQEAgcHViIGZuIGFkZF9wbHVnaW4ociN0eXBlOiBTdHJpbmcsIGNvcmU6IERu c1BsdWdpbkNvcmUsIGRhdGE6IFN0cmluZykgLT4gUmVzdWx0PCgKPiAgKV0KPiAgLy8vIERlbGV0 ZSBhbiBBQ01FIHBsdWdpbiBjb25maWd1cmF0aW9uLgo+ICBwdWIgZm4gZGVsZXRlX3BsdWdpbihp ZDogU3RyaW5nKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gLSAgICBsZXQgX2xvY2sgPSBwbHVn aW46OmxvY2soKT87Cj4gLQo+IC0gICAgbGV0IChtdXQgcGx1Z2lucywgX2RpZ2VzdCkgPSBwbHVn aW46OmNvbmZpZygpPzsKPiAtICAgIGlmIHBsdWdpbnMucmVtb3ZlKCZpZCkuaXNfbm9uZSgpIHsK PiAtICAgICAgICBodHRwX2JhaWwhKE5PVF9GT1VORCwgIm5vIHN1Y2ggcGx1Z2luIik7Cj4gLSAg ICB9Cj4gLSAgICBwbHVnaW46OnNhdmVfY29uZmlnKCZwbHVnaW5zKT87Cj4gLQo+IC0gICAgT2so KCkpCj4gLX0KPiAtCj4gLSNbYXBpKCldCj4gLSNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxp emUpXQo+IC0jW3NlcmRlKHJlbmFtZV9hbGwgPSAia2ViYWItY2FzZSIpXQo+IC0vLy8gRGVsZXRh YmxlIHByb3BlcnR5IG5hbWUKPiAtcHViIGVudW0gRGVsZXRhYmxlUHJvcGVydHkgewo+IC0gICAg Ly8vIERlbGV0ZSB0aGUgZGlzYWJsZSBwcm9wZXJ0eQo+IC0gICAgRGlzYWJsZSwKPiAtICAgIC8v LyBEZWxldGUgdGhlIHZhbGlkYXRpb24tZGVsYXkgcHJvcGVydHkKPiAtICAgIFZhbGlkYXRpb25E ZWxheSwKPiArICAgIHByb3htb3hfYWNtZV9hcGk6OmRlbGV0ZV9wbHVnaW4oaWQpCj4gIH0KPiAg Cj4gICNbYXBpKAo+IEBAIC02NzUsMTIgKzQwNywxMiBAQCBwdWIgZW51bSBEZWxldGFibGVQcm9w ZXJ0eSB7Cj4gICAgICAgICAgICAgICAgICB0eXBlOiBBcnJheSwKPiAgICAgICAgICAgICAgICAg IG9wdGlvbmFsOiB0cnVlLAo+ICAgICAgICAgICAgICAgICAgaXRlbXM6IHsKPiAtICAgICAgICAg ICAgICAgICAgICB0eXBlOiBEZWxldGFibGVQcm9wZXJ0eSwKPiArICAgICAgICAgICAgICAgICAg ICB0eXBlOiBEZWxldGFibGVQbHVnaW5Qcm9wZXJ0eSwKPiAgICAgICAgICAgICAgICAgIH0KPiAg ICAgICAgICAgICAgfSwKPiAgICAgICAgICAgICAgZGlnZXN0OiB7Cj4gLSAgICAgICAgICAgICAg ICBkZXNjcmlwdGlvbjogIkRpZ2VzdCB0byBwcm90ZWN0IGFnYWluc3QgY29uY3VycmVudCB1cGRh dGVzIiwKPiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+ICsgICAgICAgICAgICAg ICAgdHlwZTogQ29uZmlnRGlnZXN0LAo+ICAgICAgICAgICAgICB9LAo+ICAgICAgICAgIH0sCj4g ICAgICB9LAo+IEBAIC02OTQsNjUgKzQyNiw4IEBAIHB1YiBmbiB1cGRhdGVfcGx1Z2luKAo+ICAg ICAgaWQ6IFN0cmluZywKPiAgICAgIHVwZGF0ZTogRG5zUGx1Z2luQ29yZVVwZGF0ZXIsCj4gICAg ICBkYXRhOiBPcHRpb248U3RyaW5nPiwKPiAtICAgIGRlbGV0ZTogT3B0aW9uPFZlYzxEZWxldGFi bGVQcm9wZXJ0eT4+LAo+IC0gICAgZGlnZXN0OiBPcHRpb248U3RyaW5nPiwKPiArICAgIGRlbGV0 ZTogT3B0aW9uPFZlYzxEZWxldGFibGVQbHVnaW5Qcm9wZXJ0eT4+LAo+ICsgICAgZGlnZXN0OiBP cHRpb248Q29uZmlnRGlnZXN0PiwKPiAgKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gLSAgICBs ZXQgZGF0YSA9IGRhdGEKPiAtICAgICAgICAuYXNfZGVyZWYoKQo+IC0gICAgICAgIC5tYXAocHJv eG1veF9iYXNlNjQ6OmRlY29kZSkKPiAtICAgICAgICAudHJhbnNwb3NlKCk/Cj4gLSAgICAgICAg Lm1hcChTdHJpbmc6OmZyb21fdXRmOCkKPiAtICAgICAgICAudHJhbnNwb3NlKCkKPiAtICAgICAg ICAubWFwX2Vycih8X3wgZm9ybWF0X2VyciEoImRhdGEgbXVzdCBiZSB2YWxpZCBVVEYtOCIpKT87 Cj4gLQo+IC0gICAgbGV0IF9sb2NrID0gcGx1Z2luOjpsb2NrKCk/Owo+IC0KPiAtICAgIGxldCAo bXV0IHBsdWdpbnMsIGV4cGVjdGVkX2RpZ2VzdCkgPSBwbHVnaW46OmNvbmZpZygpPzsKPiAtCj4g LSAgICBpZiBsZXQgU29tZShkaWdlc3QpID0gZGlnZXN0IHsKPiAtICAgICAgICBsZXQgZGlnZXN0 ID0gPFt1ODsgMzJdPjo6ZnJvbV9oZXgoZGlnZXN0KT87Cj4gLSAgICAgICAgY3JhdGU6OnRvb2xz OjpkZXRlY3RfbW9kaWZpZWRfY29uZmlndXJhdGlvbl9maWxlKCZkaWdlc3QsICZleHBlY3RlZF9k aWdlc3QpPzsKPiAtICAgIH0KPiAtCj4gLSAgICBtYXRjaCBwbHVnaW5zLmdldF9tdXQoJmlkKSB7 Cj4gLSAgICAgICAgU29tZSgodHksIHJlZiBtdXQgZW50cnkpKSA9PiB7Cj4gLSAgICAgICAgICAg IGlmIHR5ICE9ICJkbnMiIHsKPiAtICAgICAgICAgICAgICAgIGJhaWwhKCJjYW5ub3QgdXBkYXRl IHBsdWdpbiBvZiB0eXBlIHs6P30iLCB0eSk7Cj4gLSAgICAgICAgICAgIH0KPiAtCj4gLSAgICAg ICAgICAgIGxldCBtdXQgcGx1Z2luID0gRG5zUGx1Z2luOjpkZXNlcmlhbGl6ZSgmKmVudHJ5KT87 Cj4gLQo+IC0gICAgICAgICAgICBpZiBsZXQgU29tZShkZWxldGUpID0gZGVsZXRlIHsKPiAtICAg ICAgICAgICAgICAgIGZvciBkZWxldGVfcHJvcCBpbiBkZWxldGUgewo+IC0gICAgICAgICAgICAg ICAgICAgIG1hdGNoIGRlbGV0ZV9wcm9wIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgRGVs ZXRhYmxlUHJvcGVydHk6OlZhbGlkYXRpb25EZWxheSA9PiB7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwbHVnaW4uY29yZS52YWxpZGF0aW9uX2RlbGF5ID0gTm9uZTsKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGFibGVQ cm9wZXJ0eTo6RGlzYWJsZSA9PiB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVn aW4uY29yZS5kaXNhYmxlID0gTm9uZTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgfQo+IC0g ICAgICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAg fQo+IC0gICAgICAgICAgICBpZiBsZXQgU29tZShkYXRhKSA9IGRhdGEgewo+IC0gICAgICAgICAg ICAgICAgcGx1Z2luLmRhdGEgPSBkYXRhOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAg IGlmIGxldCBTb21lKGFwaSkgPSB1cGRhdGUuYXBpIHsKPiAtICAgICAgICAgICAgICAgIHBsdWdp bi5jb3JlLmFwaSA9IGFwaTsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBpZiB1cGRh dGUudmFsaWRhdGlvbl9kZWxheS5pc19zb21lKCkgewo+IC0gICAgICAgICAgICAgICAgcGx1Z2lu LmNvcmUudmFsaWRhdGlvbl9kZWxheSA9IHVwZGF0ZS52YWxpZGF0aW9uX2RlbGF5Owo+IC0gICAg ICAgICAgICB9Cj4gLSAgICAgICAgICAgIGlmIHVwZGF0ZS5kaXNhYmxlLmlzX3NvbWUoKSB7Cj4g LSAgICAgICAgICAgICAgICBwbHVnaW4uY29yZS5kaXNhYmxlID0gdXBkYXRlLmRpc2FibGU7Cj4g LSAgICAgICAgICAgIH0KPiAtCj4gLSAgICAgICAgICAgICplbnRyeSA9IHNlcmRlX2pzb246OnRv X3ZhbHVlKHBsdWdpbik/Owo+IC0gICAgICAgIH0KPiAtICAgICAgICBOb25lID0+IGh0dHBfYmFp bCEoTk9UX0ZPVU5ELCAibm8gc3VjaCBwbHVnaW4iKSwKPiAtICAgIH0KPiAtCj4gLSAgICBwbHVn aW46OnNhdmVfY29uZmlnKCZwbHVnaW5zKT87Cj4gLQo+IC0gICAgT2soKCkpCj4gKyAgICBwcm94 bW94X2FjbWVfYXBpOjp1cGRhdGVfcGx1Z2luKGlkLCB1cGRhdGUsIGRhdGEsIGRlbGV0ZSwgZGln ZXN0KQo+ICB9Cj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL3R5cGVzL2FjbWUucnMgYi9zcmMvYXBp Mi90eXBlcy9hY21lLnJzCj4gaW5kZXggN2M5MDYzYzAuLjI5MDViNDFiIDEwMDY0NAo+IC0tLSBh L3NyYy9hcGkyL3R5cGVzL2FjbWUucnMKPiArKysgYi9zcmMvYXBpMi90eXBlcy9hY21lLnJzCj4g QEAgLTQ0LDIyICs0NCw2IEBAIHB1YiBjb25zdCBBQ01FX0RPTUFJTl9QUk9QRVJUWV9TQ0hFTUE6 IFNjaGVtYSA9Cj4gICAgICAgICAgLmZvcm1hdCgmQXBpU3RyaW5nRm9ybWF0OjpQcm9wZXJ0eVN0 cmluZygmQWNtZURvbWFpbjo6QVBJX1NDSEVNQSkpCj4gICAgICAgICAgLnNjaGVtYSgpOwo+ICAK PiAtI1thcGkoCj4gLSAgICBwcm9wZXJ0aWVzOiB7Cj4gLSAgICAgICAgbmFtZTogeyB0eXBlOiBT dHJpbmcgfSwKPiAtICAgICAgICB1cmw6IHsgdHlwZTogU3RyaW5nIH0sCj4gLSAgICB9LAo+IC0p XQo+IC0vLy8gQW4gQUNNRSBkaXJlY3RvcnkgZW5kcG9pbnQgd2l0aCBhIG5hbWUgYW5kIFVSTC4K PiAtI1tkZXJpdmUoU2VyaWFsaXplKV0KPiAtcHViIHN0cnVjdCBLbm93bkFjbWVEaXJlY3Rvcnkg ewo+IC0gICAgLy8vIFRoZSBBQ01FIGRpcmVjdG9yeSdzIG5hbWUuCj4gLSAgICBwdWIgbmFtZTog JidzdGF0aWMgc3RyLAo+IC0KPiAtICAgIC8vLyBUaGUgQUNNRSBkaXJlY3RvcnkncyBlbmRwb2lu dCBVUkwuCj4gLSAgICBwdWIgdXJsOiAmJ3N0YXRpYyBzdHIsCj4gLX0KPiAtCj4gICNbYXBpKAo+ ICAgICAgcHJvcGVydGllczogewo+ICAgICAgICAgIHNjaGVtYTogewo+IGRpZmYgLS1naXQgYS9z cmMvYmluL3Byb3htb3hfYmFja3VwX21hbmFnZXIvYWNtZS5ycyBiL3NyYy9iaW4vcHJveG1veF9i YWNrdXBfbWFuYWdlci9hY21lLnJzCj4gaW5kZXggYmI5ODdiMjYuLmU3YmQ2N2FmIDEwMDY0NAo+ IC0tLSBhL3NyYy9iaW4vcHJveG1veF9iYWNrdXBfbWFuYWdlci9hY21lLnJzCj4gKysrIGIvc3Jj L2Jpbi9wcm94bW94X2JhY2t1cF9tYW5hZ2VyL2FjbWUucnMKPiBAQCAtOCwxMCArOCw4IEBAIHVz ZSBwcm94bW94X3NjaGVtYTo6YXBpOwo+ICB1c2UgcHJveG1veF9zeXM6OmZzOjpmaWxlX2dldF9j b250ZW50czsKPiAgCj4gIHVzZSBwcm94bW94X2FjbWU6OmFzeW5jX2NsaWVudDo6QWNtZUNsaWVu dDsKPiAtdXNlIHByb3htb3hfYWNtZV9hcGk6OkFjbWVBY2NvdW50TmFtZTsKPiArdXNlIHByb3ht b3hfYWNtZV9hcGk6OntBY21lQWNjb3VudE5hbWUsIERuc1BsdWdpbkNvcmUsIEtOT1dOX0FDTUVf RElSRUNUT1JJRVN9Owo+ICB1c2UgcHJveG1veF9iYWNrdXA6OmFwaTI7Cj4gLXVzZSBwcm94bW94 X2JhY2t1cDo6Y29uZmlnOjphY21lOjpwbHVnaW46OkRuc1BsdWdpbkNvcmU7Cj4gLXVzZSBwcm94 bW94X2JhY2t1cDo6Y29uZmlnOjphY21lOjpLTk9XTl9BQ01FX0RJUkVDVE9SSUVTOwoKdXNlIHBy b3htb3hfYWNtZTo6YXN5bmNfY2xpZW50OjpBY21lQ2xpZW50Owp1c2UgcHJveG1veF9hY21lX2Fw aTo6e0FjbWVBY2NvdW50TmFtZSwgRG5zUGx1Z2luQ29yZSwgS05PV05fQUNNRV9ESVJFQ1RPUklF U307ClsuLi5dCnVzZSBwcm94bW94X3N5czo6ZnM6OmZpbGVfZ2V0X2NvbnRlbnRzOwoKdXNlIHBy b3htb3hfYmFja3VwOjphcGkyOwoKCj4gIAo+ICBwdWIgZm4gYWNtZV9tZ210X2NsaSgpIC0+IENv bW1hbmRMaW5lSW50ZXJmYWNlIHsKPiAgICAgIGxldCBjbWRfZGVmID0gQ2xpQ29tbWFuZE1hcDo6 bmV3KCkKPiBAQCAtMTIyLDcgKzEyMCw3IEBAIGFzeW5jIGZuIHJlZ2lzdGVyX2FjY291bnQoCj4g IAo+ICAgICAgICAgICAgICAgICAgbWF0Y2ggaW5wdXQudHJpbSgpLnBhcnNlOjo8dXNpemU+KCkg ewo+ICAgICAgICAgICAgICAgICAgICAgIE9rKG4pIGlmIG4gPCBLTk9XTl9BQ01FX0RJUkVDVE9S SUVTLmxlbigpID0+IHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgKEtOT1dOX0FD TUVfRElSRUNUT1JJRVNbbl0udXJsLnRvX293bmVkKCksIGZhbHNlKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWsgKEtOT1dOX0FDTUVfRElSRUNUT1JJRVNbbl0udXJsLnRvX3N0cmlu ZygpLCBmYWxzZSk7Cj4gICAgICAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICAgICAg ICAgIE9rKG4pIGlmIG4gPT0gS05PV05fQUNNRV9ESVJFQ1RPUklFUy5sZW4oKSA9PiB7Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmNsZWFyKCk7Cj4gZGlmZiAtLWdpdCBhL3NyYy9j b25maWcvYWNtZS9tb2QucnMgYi9zcmMvY29uZmlnL2FjbWUvbW9kLnJzCj4gaW5kZXggZDMxYjJi YzkuLjM1Y2RhNTBiIDEwMDY0NAo+IC0tLSBhL3NyYy9jb25maWcvYWNtZS9tb2QucnMKPiArKysg Yi9zcmMvY29uZmlnL2FjbWUvbW9kLnJzCj4gQEAgLTEsOCArMSw3IEBACj4gIHVzZSBzdGQ6OmNv bGxlY3Rpb25zOjpIYXNoTWFwOwo+ICB1c2Ugc3RkOjpvcHM6OkNvbnRyb2xGbG93Owo+IC11c2Ug c3RkOjpwYXRoOjpQYXRoOwo+ICAKPiAtdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVy cm9yfTsKPiArdXNlIGFueWhvdzo6RXJyb3I7Cj4gIHVzZSBzZXJkZV9qc29uOjpWYWx1ZTsKPiAg Cj4gIHVzZSBwcm94bW94X3N5czo6ZXJyb3I6OlN5c0Vycm9yOwoKVGhpcyBoZXJlIGlzIGFscmln aHQg8J+OiQoKPiBAQCAtMTAsOCArOSw4IEBAIHVzZSBwcm94bW94X3N5czo6ZnM6OntmaWxlX3Jl YWRfc3RyaW5nLCBDcmVhdGVPcHRpb25zfTsKPiAgCj4gIHVzZSBwYnNfYXBpX3R5cGVzOjpQUk9Y TU9YX1NBRkVfSURfUkVHRVg7Cj4gIAo+IC11c2UgY3JhdGU6OmFwaTI6OnR5cGVzOjp7QWNtZUNo YWxsZW5nZVNjaGVtYSwgS25vd25BY21lRGlyZWN0b3J5fTsKPiAtdXNlIHByb3htb3hfYWNtZV9h cGk6OkFjbWVBY2NvdW50TmFtZTsKPiArdXNlIGNyYXRlOjphcGkyOjp0eXBlczo6QWNtZUNoYWxs ZW5nZVNjaGVtYTsKPiArdXNlIHByb3htb3hfYWNtZV9hcGk6OntBY21lQWNjb3VudE5hbWUsIEtu b3duQWNtZURpcmVjdG9yeSwgS05PV05fQUNNRV9ESVJFQ1RPUklFU307Cgp1c2UgcGJzX2FwaV90 eXBlczo6UFJPWE1PWF9TQUZFX0lEX1JFR0VYOwp1c2UgcHJveG1veF9hY21lX2FwaTo6e0FjbWVB Y2NvdW50TmFtZSwgS25vd25BY21lRGlyZWN0b3J5LCBLTk9XTl9BQ01FX0RJUkVDVE9SSUVTfTsK CnVzZSBjcmF0ZTo6YXBpMjo6dHlwZXM6OkFjbWVDaGFsbGVuZ2VTY2hlbWE7Cgo+ICAKPiAgcHVi KGNyYXRlKSBjb25zdCBBQ01FX0RJUjogJnN0ciA9IHBic19idWlsZGNmZzo6Y29uZmlnZGlyISgi L2FjbWUiKTsKPiAgcHViKGNyYXRlKSBjb25zdCBBQ01FX0FDQ09VTlRfRElSOiAmc3RyID0gcGJz X2J1aWxkY2ZnOjpjb25maWdkaXIhKCIvYWNtZS9hY2NvdW50cyIpOwo+IEBAIC0zNiwyMyArMzUs OCBAQCBwdWIoY3JhdGUpIGZuIG1ha2VfYWNtZV9kaXIoKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7 Cj4gICAgICBjcmVhdGVfYWNtZV9zdWJkaXIoQUNNRV9ESVIpCj4gIH0KPiAgCj4gLXB1YiBjb25z dCBLTk9XTl9BQ01FX0RJUkVDVE9SSUVTOiAmW0tub3duQWNtZURpcmVjdG9yeV0gPSAmWwo+IC0g ICAgS25vd25BY21lRGlyZWN0b3J5IHsKPiAtICAgICAgICBuYW1lOiAiTGV0J3MgRW5jcnlwdCBW MiIsCj4gLSAgICAgICAgdXJsOiAiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3Jn L2RpcmVjdG9yeSIsCj4gLSAgICB9LAo+IC0gICAgS25vd25BY21lRGlyZWN0b3J5IHsKPiAtICAg ICAgICBuYW1lOiAiTGV0J3MgRW5jcnlwdCBWMiBTdGFnaW5nIiwKPiAtICAgICAgICB1cmw6ICJo dHRwczovL2FjbWUtc3RhZ2luZy12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9kaXJlY3RvcnkiLAo+ IC0gICAgfSwKPiAtXTsKPiAtCj4gIHB1YiBjb25zdCBERUZBVUxUX0FDTUVfRElSRUNUT1JZX0VO VFJZOiAmS25vd25BY21lRGlyZWN0b3J5ID0gJktOT1dOX0FDTUVfRElSRUNUT1JJRVNbMF07Cj4g IAo+IC1wdWIgZm4gYWNjb3VudF9wYXRoKG5hbWU6ICZzdHIpIC0+IFN0cmluZyB7Cj4gLSAgICBm b3JtYXQhKCJ7QUNNRV9BQ0NPVU5UX0RJUn0ve25hbWV9IikKPiAtfQo+IC0KPiAgcHViIGZuIGZv cmVhY2hfYWNtZV9hY2NvdW50PEY+KG11dCBmdW5jOiBGKSAtPiBSZXN1bHQ8KCksIEVycm9yPgo+ ICB3aGVyZQo+ICAgICAgRjogRm5NdXQoQWNtZUFjY291bnROYW1lKSAtPiBDb250cm9sRmxvdzxS ZXN1bHQ8KCksIEVycm9yPj4sCj4gQEAgLTgzLDI4ICs2Nyw2IEBAIHdoZXJlCj4gICAgICB9Cj4g IH0KPiAgCj4gLXB1YiBmbiBtYXJrX2FjY291bnRfZGVhY3RpdmF0ZWQobmFtZTogJnN0cikgLT4g UmVzdWx0PCgpLCBFcnJvcj4gewo+IC0gICAgbGV0IGZyb20gPSBhY2NvdW50X3BhdGgobmFtZSk7 Cj4gLSAgICBmb3IgaSBpbiAwLi4xMDAgewo+IC0gICAgICAgIGxldCB0byA9IGFjY291bnRfcGF0 aCgmZm9ybWF0ISgiX2RlYWN0aXZhdGVkX3tuYW1lfV97aX0iKSk7Cj4gLSAgICAgICAgaWYgIVBh dGg6Om5ldygmdG8pLmV4aXN0cygpIHsKPiAtICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZnM6OnJl bmFtZSgmZnJvbSwgJnRvKS5tYXBfZXJyKHxlcnJ8IHsKPiAtICAgICAgICAgICAgICAgIGZvcm1h dF9lcnIhKAo+IC0gICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gbW92ZSBhY2NvdW50IHBh dGggezo/fSB0byB7Oj99IC0ge30iLAo+IC0gICAgICAgICAgICAgICAgICAgIGZyb20sCj4gLSAg ICAgICAgICAgICAgICAgICAgdG8sCj4gLSAgICAgICAgICAgICAgICAgICAgZXJyCj4gLSAgICAg ICAgICAgICAgICApCj4gLSAgICAgICAgICAgIH0pOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAt ICAgIGJhaWwhKAo+IC0gICAgICAgICJObyBmcmVlIHNsb3QgdG8gcmVuYW1lIGRlYWN0aXZhdGVk IGFjY291bnQgezo/fSwgcGxlYXNlIGNsZWFudXAgezo/fSIsCj4gLSAgICAgICAgZnJvbSwKPiAt ICAgICAgICBBQ01FX0FDQ09VTlRfRElSCj4gLSAgICApOwo+IC19Cj4gLQo+ICBwdWIgZm4gbG9h ZF9kbnNfY2hhbGxlbmdlX3NjaGVtYSgpIC0+IFJlc3VsdDxWZWM8QWNtZUNoYWxsZW5nZVNjaGVt YT4sIEVycm9yPiB7Cj4gICAgICBsZXQgcmF3ID0gZmlsZV9yZWFkX3N0cmluZyhBQ01FX0ROU19T Q0hFTUFfRk4pPzsKPiAgICAgIGxldCBzY2hlbWFzOiBzZXJkZV9qc29uOjpNYXA8U3RyaW5nLCBW YWx1ZT4gPSBzZXJkZV9qc29uOjpmcm9tX3N0cigmcmF3KT87CgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJz LWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJp bi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=