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 6B33C1FF15F for ; Mon, 2 Dec 2024 15:18:41 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5562919FC3; Mon, 2 Dec 2024 15:18:47 +0100 (CET) Mime-Version: 1.0 Date: Mon, 02 Dec 2024 15:18:39 +0100 Message-Id: From: "Shannon Sterz" To: "Shannon Sterz" , X-Mailer: aerc 0.18.2-0-ge037c095a049-dirty References: <20241202125859.191455-1-s.sterz@proxmox.com> In-Reply-To: <20241202125859.191455-1-s.sterz@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.037 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 v2 1/4] sendmail: add sendmail crate 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" U3VwZXJzZWVkZWQtYnk6IGh0dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wYnMtZGV2ZWwvMjAyNDEy MDIxNDE2NTUuMjU0NDcyLTEtcy5zdGVyekBwcm94bW94LmNvbS8KCk9uIE1vbiBEZWMgMiwgMjAy NCBhdCAxOjU4IFBNIENFVCwgU2hhbm5vbiBTdGVyeiB3cm90ZToKPiBhZGQgdGhlIGBwcm94bW94 LXNlbmRtYWlsYCBjcmF0ZSB0aGF0IG1ha2VzIGl0IGVhc2llciB0byBzZW5kIG1haWxzIHZpYQo+ IHRoZSBgc2VuZG1haWxgIHV0aWxpdHkuIGZlYXR1cmVzIGluY2x1ZGU6Cj4KPiAtIG11bHRpcGFy dC9hbHRlcm5hdGl2ZSBzdXBwb3J0IGZvciBodG1sK3BsYWluIHRleHQgbWFpbHMKPiAtIG11bHRp cGFydC9taXhlZCBzdXBwb3J0IGZvciBtYWlscyB3aXRoIGF0dGFjaG1lbnRzCj4gLSBhdXRvbWF0 aWMgbmVzdGluZyBvZiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUgYW5kIG11bHRpcGFydC9taXhlZCBw YXJ0cwo+IC0gbWFza3MgbXVsdGlwbGUgcmVjZWl2ZXJzIGJ5IGRlZmF1bHQsIGNhbiBiZSBkaXNh YmxlZAo+IC0gZW5jb2RpbmcgU3ViamVjdCwgVG8sIEZyb20sIGFuZCBhdHRhY2htZW50IGZpbGUg bmFtZXMgY29ycmVjdGx5Cj4gLSBhZGRpbmcgYW4gYEF1dG8tU3VibWl0dGVkYCBoZWFkZXIgdG8g YXZvaWQgdHJpZ2dlcmluZyBhdXRvbWF0ZWQgbWFpbHMKPgo+IGFsc28gaW5jbHVkZXMgc2V2ZXJh bCB0ZXN0cyB0byBlbnN1cmUgdGhhdCBtYWlscyBhcmUgZm9ybWF0dGVkCj4gY29ycmVjdGx5Lgo+ Cj4gU2lnbmVkLW9mZi1ieTogU2hhbm5vbiBTdGVyeiA8cy5zdGVyekBwcm94bW94LmNvbT4KPiAt LS0KPgo+IGNoYW5nZXMgc2luY2UgdjEgKHRoYW5rcyBAIEx1a2FzIFdhZ25lciA8bC53YWduZXJA cHJveG1veC5jb20+KToKPiAgICAgLSBtYWtlIGl0IHBvc3NpYmxlIHRvIGRpc2FibGUgcmVjZWl2 ZXIgcmVkYWN0aW9uCj4gICAgIC0gcmUtc3RydWN0dXJlIHRoZSBtYWwgZm9ybWF0dGluZyBjb2Rl OyBtYWlubHkgc3BsaXQgaXQgaW50bwo+ICAgICAgIG11bHRpcGxlIGZ1bmN0aW9ucyAoYGZvcm1h dF9oZWFkZXJgLCBgZm9ybWF0X2JvZHlgLAo+ICAgICAgIGBmb3JtYXRfYXR0YWNobWVudGAgZXRj LikKPiAgICAgLSBmaXggbXVsdGlwbGUgdHlwb3MKPgo+ICBDYXJnby50b21sICAgICAgICAgICAg ICAgICAgfCAgIDIgKwo+ICBwcm94bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwgfCAgMTYgKwo+ICBw cm94bW94LXNlbmRtYWlsL3NyYy9saWIucnMgfCA3NjkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzg3IGluc2VydGlvbnMoKykKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2VuZG1haWwvQ2FyZ28udG9tbAo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgcHJveG1veC1zZW5kbWFpbC9zcmMvbGliLnJzCj4KPiBkaWZmIC0tZ2l0IGEvQ2Fy Z28udG9tbCBiL0NhcmdvLnRvbWwKPiBpbmRleCA4NGZiZTk3OS4uYjYyZmNkNTAgMTAwNjQ0Cj4g LS0tIGEvQ2FyZ28udG9tbAo+ICsrKyBiL0NhcmdvLnRvbWwKPiBAQCAtMzMsNiArMzMsNyBAQCBt ZW1iZXJzID0gWwo+ICAgICAgInByb3htb3gtcnJkLWFwaS10eXBlcyIsCj4gICAgICAicHJveG1v eC1zY2hlbWEiLAo+ICAgICAgInByb3htb3gtc2VjdGlvbi1jb25maWciLAo+ICsgICAgInByb3ht b3gtc2VuZG1haWwiLAo+ICAgICAgInByb3htb3gtc2VyZGUiLAo+ICAgICAgInByb3htb3gtc2hh cmVkLWNhY2hlIiwKPiAgICAgICJwcm94bW94LXNoYXJlZC1tZW1vcnkiLAo+IEBAIC0xMzgsNiAr MTM5LDcgQEAgcHJveG1veC1yZXN0LXNlcnZlciA9IHsgdmVyc2lvbiA9ICIwLjguMCIsIHBhdGgg PSAicHJveG1veC1yZXN0LXNlcnZlciIgfQo+ICBwcm94bW94LXJvdXRlciA9IHsgdmVyc2lvbiA9 ICIzLjAuMCIsIHBhdGggPSAicHJveG1veC1yb3V0ZXIiIH0KPiAgcHJveG1veC1zY2hlbWEgPSB7 IHZlcnNpb24gPSAiMy4xLjIiLCBwYXRoID0gInByb3htb3gtc2NoZW1hIiB9Cj4gIHByb3htb3gt c2VjdGlvbi1jb25maWcgPSB7IHZlcnNpb24gPSAiMi4xLjAiLCBwYXRoID0gInByb3htb3gtc2Vj dGlvbi1jb25maWciIH0KPiArcHJveG1veC1zZW5kbWFpbCA9IHsgdmVyc2lvbiA9ICIwLjEuMCIs IHBhdGggPSAicHJveG1veC1zZW5kbWFpbCIgfQo+ICBwcm94bW94LXNlcmRlID0geyB2ZXJzaW9u ID0gIjAuMS4xIiwgcGF0aCA9ICJwcm94bW94LXNlcmRlIiwgZmVhdHVyZXMgPSBbICJzZXJkZV9q c29uIiBdIH0KPiAgcHJveG1veC1zaGFyZWQtbWVtb3J5ID0geyB2ZXJzaW9uID0gIjAuMy4wIiwg cGF0aCA9ICJwcm94bW94LXNoYXJlZC1tZW1vcnkiIH0KPiAgcHJveG1veC1zb3J0YWJsZS1tYWNy byA9IHsgdmVyc2lvbiA9ICIwLjEuMyIsIHBhdGggPSAicHJveG1veC1zb3J0YWJsZS1tYWNybyIg fQo+IGRpZmYgLS1naXQgYS9wcm94bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwgYi9wcm94bW94LXNl bmRtYWlsL0NhcmdvLnRvbWwKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw Li43OTBiMzI0Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wcm94bW94LXNlbmRtYWlsL0Nhcmdv LnRvbWwKPiBAQCAtMCwwICsxLDE2IEBACj4gK1twYWNrYWdlXQo+ICtuYW1lID0gInByb3htb3gt c2VuZG1haWwiCj4gK3ZlcnNpb24gPSAiMC4xLjAiCj4gK2F1dGhvcnMud29ya3NwYWNlID0gdHJ1 ZQo+ICtlZGl0aW9uLndvcmtzcGFjZSA9IHRydWUKPiArbGljZW5zZS53b3Jrc3BhY2UgPSB0cnVl Cj4gK3JlcG9zaXRvcnkud29ya3NwYWNlID0gdHJ1ZQo+ICtob21lcGFnZS53b3Jrc3BhY2UgPSB0 cnVlCj4gK2V4Y2x1ZGUud29ya3NwYWNlID0gdHJ1ZQo+ICtydXN0LXZlcnNpb24ud29ya3NwYWNl ID0gdHJ1ZQo+ICsKPiArW2RlcGVuZGVuY2llc10KPiArYW55aG93ID0geyB3b3Jrc3BhY2UgPSB0 cnVlIH0KPiArYmFzZTY0ID0geyB3b3Jrc3BhY2UgPSB0cnVlIH0KPiArcGVyY2VudC1lbmNvZGlu ZyA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9Cj4gK3Byb3htb3gtdGltZSA9IHsgd29ya3NwYWNlID0g dHJ1ZSB9Cj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtc2VuZG1haWwvc3JjL2xpYi5ycyBiL3Byb3ht b3gtc2VuZG1haWwvc3JjL2xpYi5ycwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAuLmE0MmJiMGNkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Byb3htb3gtc2VuZG1haWwv c3JjL2xpYi5ycwo+IEBAIC0wLDAgKzEsNzY5IEBACj4gKy8vIQo+ICsvLyEgVGhpcyBsaWJyYXJ5 IGltcGxlbWVudHMgdGhlIFtgTWFpbGBdIHRyYWl0IHdoaWNoIG1ha2VzIGl0IGVhc3kgdG8gc2Vu ZCBlbWFpbHMgd2l0aCBhdHRhY2htZW50cwo+ICsvLyEgYW5kIGFsdGVybmF0aXZlIGh0bWwgcGFy dHMgdG8gb25lIG9yIG11bHRpcGxlIHJlY2VpdmVycyB2aWEgYGBzZW5kbWFpbGBgLgo+ICsvLyEK PiArCj4gK3VzZSBzdGQ6OmlvOjpXcml0ZTsKPiArdXNlIHN0ZDo6cHJvY2Vzczo6e0NvbW1hbmQs IFN0ZGlvfTsKPiArCj4gK3VzZSBhbnlob3c6OntiYWlsLCBDb250ZXh0LCBFcnJvcn07Cj4gK3Vz ZSBwZXJjZW50X2VuY29kaW5nOjp7dXRmOF9wZXJjZW50X2VuY29kZSwgQXNjaWlTZXQsIENPTlRS T0xTfTsKPiArCj4gKy8vIENoYXJhY3RlcnMgaW4gdGhpcyBzZXQgd2lsbCBiZSBlbmNvZGVkLCBz byByZXByb2R1Y2UgdGhlIGludmVyc2Ugb2YgdGhlIHNldCBkZXNjcmliZWQgYnkgUkZDNTk4Nwo+ ICsvLyBTZWN0aW9uIDMuMi4xIGBhdHRyLWNoYXJgLCBhcyB0aGF0IGRlc2NyaWJlcyBhbGwgY2hh cmFjdGVycyB0aGF0ICoqZG9uJ3QqKiBuZWVkIGVuY29kaW5nOgo+ICsvLwo+ICsvLyBodHRwczov L2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzU5ODcjc2VjdGlvbi0zLjIuMQo+ICsv Lwo+ICsvLyBgQ09OVFJPTFNgIGNvbnRhaW5zIGFsbCBjb250cm9sIGNoYXJhY3RlcnMgMHgwMCAt IDB4MWYgYW5kIDB4N2YgYXMgd2VsbCBhcyBhbGwgbm9uLWFzY2lpCj4gKy8vIGNoYXJhY3RlcnMs IHNvIHdlIG5lZWQgdG8gYWRkIGFsbCBjaGFyYWN0ZXJzIGhlcmUgdGhhdCBhcmVuJ3QgZGVzY3Jp YmVkIGluIGBhdHRyLWNoYXJgIHRoYXQgYXJlCj4gKy8vIGluIHRoZSByYW5nZSAweDIwLTB4N2UK PiArY29uc3QgUkZDNTk4N1NFVDogJkFzY2lpU2V0ID0gJkNPTlRST0xTCj4gKyAgICAuYWRkKGIn ICcpCj4gKyAgICAuYWRkKGInIicpCj4gKyAgICAuYWRkKGInJScpCj4gKyAgICAuYWRkKGInJicp Cj4gKyAgICAuYWRkKGInXCcnKQo+ICsgICAgLmFkZChiJygnKQo+ICsgICAgLmFkZChiJyknKQo+ ICsgICAgLmFkZChiJyonKQo+ICsgICAgLmFkZChiJywnKQo+ICsgICAgLmFkZChiJy8nKQo+ICsg ICAgLmFkZChiJzonKQo+ICsgICAgLmFkZChiJzsnKQo+ICsgICAgLmFkZChiJzwnKQo+ICsgICAg LmFkZChiJz0nKQo+ICsgICAgLmFkZChiJz4nKQo+ICsgICAgLmFkZChiJz8nKQo+ICsgICAgLmFk ZChiJ0AnKQo+ICsgICAgLmFkZChiJ1snKQo+ICsgICAgLmFkZChiJ1xcJykKPiArICAgIC5hZGQo YiddJykKPiArICAgIC5hZGQoYid7JykKPiArICAgIC5hZGQoYid9Jyk7Cj4gKwo+ICtzdHJ1Y3Qg UmVjaXBpZW50IHsKPiArICAgIG5hbWU6IE9wdGlvbjxTdHJpbmc+LAo+ICsgICAgZW1haWw6IFN0 cmluZywKPiArfQo+ICsKPiAraW1wbCBSZWNpcGllbnQgewo+ICsgICAgLy8gUmV0dXJucyB0cnVl IGlmIHRoZSBuYW1lIG9mIHRoZSByZWNpcGllbnQgaXMgdW5kZWZpbmVkIG9yIGNvbnRhaW5zIG9u bHkgYXNjaWkgY2hhcmFjdGVycwo+ICsgICAgZm4gaXNfYXNjaWkoJnNlbGYpIC0+IGJvb2wgewo+ ICsgICAgICAgIHNlbGYubmFtZS5hc19yZWYoKS5tYXAofG58IG4uaXNfYXNjaWkoKSkudW53cmFw X29yKHRydWUpCj4gKyAgICB9Cj4gKwo+ICsgICAgZm4gZm9ybWF0X3JlY2lwaWVudCgmc2VsZikg LT4gU3RyaW5nIHsKPiArICAgICAgICBpZiBsZXQgU29tZShuYW1lKSA9ICZzZWxmLm5hbWUgewo+ ICsgICAgICAgICAgICBpZiAhbmFtZS5pc19hc2NpaSgpIHsKPiArICAgICAgICAgICAgICAgIGZv cm1hdCEoIj0/dXRmLTg/Qj97fT89IDx7fT4iLCBiYXNlNjQ6OmVuY29kZShuYW1lKSwgc2VsZi5l bWFpbCkKPiArICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgIGZvcm1hdCEo Int9IDx7fT4iLCBuYW1lLCBzZWxmLmVtYWlsKQo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAg fSBlbHNlIHsKPiArICAgICAgICAgICAgc2VsZi5lbWFpbC50b19zdHJpbmcoKQo+ICsgICAgICAg IH0KPiArICAgIH0KPiArfQo+ICsKPiArc3RydWN0IEF0dGFjaG1lbnQ8J2E+IHsKPiArICAgIGZp bGVuYW1lOiBTdHJpbmcsCj4gKyAgICBtaW1lOiBTdHJpbmcsCj4gKyAgICBjb250ZW50OiAmJ2Eg W3U4XSwKPiArfQo+ICsKPiAraW1wbDwnYT4gQXR0YWNobWVudDwnYT4gewo+ICsgICAgZm4gZm9y bWF0X2F0dGFjaG1lbnQoJnNlbGYsIGZpbGVfYm91bmRhcnk6ICZzdHIpIC0+IFN0cmluZyB7Cj4g KyAgICAgICAgbGV0IG11dCBhdHRhY2htZW50ID0gU3RyaW5nOjpuZXcoKTsKPiArCj4gKyAgICAg ICAgYXR0YWNobWVudC5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtmaWxlX2JvdW5kYXJ5fVxuIikp Owo+ICsgICAgICAgIGF0dGFjaG1lbnQucHVzaF9zdHIoJmZvcm1hdCEoCj4gKyAgICAgICAgICAg ICJDb250ZW50LVR5cGU6IHt9OyBuYW1lPVwie31cIlxuIiwKPiArICAgICAgICAgICAgc2VsZi5t aW1lLCBzZWxmLmZpbGVuYW1lCj4gKyAgICAgICAgKSk7Cj4gKwo+ICsgICAgICAgIC8vIGJvdGgg YGZpbGVuYW1lYCBhbmQgYGZpbGVuYW1lKmAgYXJlIGluY2x1ZGVkIGZvciBhZGRpdGlvbmFsIGNv bXBhdGFiaWxpdHkKPiArICAgICAgICBhdHRhY2htZW50LnB1c2hfc3RyKCZmb3JtYXQhKAo+ICsg ICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJ7 fVwiOyBmaWxlbmFtZSo9VVRGLTgnJ3t9XG4iLAo+ICsgICAgICAgICAgICBzZWxmLmZpbGVuYW1l LAo+ICsgICAgICAgICAgICB1dGY4X3BlcmNlbnRfZW5jb2RlKCZzZWxmLmZpbGVuYW1lLCBSRkM1 OTg3U0VUKQo+ICsgICAgICAgICkpOwo+ICsgICAgICAgIGF0dGFjaG1lbnQucHVzaF9zdHIoIkNv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxuXG4iKTsKPiArCj4gKyAgICAgICAgLy8g YmFzZTY0IGVuY29kZSB0aGUgYXR0YWNobWVudCBhbmQgaGFyZC13cmFwIHRoZSBiYXNlNjQgZW5j b2RlZCBzdHJpbmcgZXZlcnkgNzIKPiArICAgICAgICAvLyBjaGFyYWN0ZXJzLiB0aGlzIGltcHJv dmVzIGNvbXBhdGFiaWxpdHkuCj4gKyAgICAgICAgYXR0YWNobWVudC5wdXNoX3N0cigKPiArICAg ICAgICAgICAgJmJhc2U2NDo6ZW5jb2RlKHNlbGYuY29udGVudCkKPiArICAgICAgICAgICAgICAg IC5jaGFycygpCj4gKyAgICAgICAgICAgICAgICAuZW51bWVyYXRlKCkKPiArICAgICAgICAgICAg ICAgIC5mbGF0X21hcCh8KGksIGMpfCB7Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgaSAhPSAw ICYmIGkgJSA3MiA9PSAwIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgU29tZSgnXG4nKQo+ ICsgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg IE5vbmUKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgLmlu dG9faXRlcigpCj4gKyAgICAgICAgICAgICAgICAgICAgLmNoYWluKHN0ZDo6aXRlcjo6b25jZShj KSkKPiArICAgICAgICAgICAgICAgIH0pCj4gKyAgICAgICAgICAgICAgICAuY29sbGVjdDo6PFN0 cmluZz4oKSwKPiArICAgICAgICApOwo+ICsKPiArICAgICAgICBhdHRhY2htZW50Cj4gKyAgICB9 Cj4gK30KPiArCj4gKy8vLyBUaGlzIHN0cnVjdCBpcyB1c2VkIHRvIGRlZmluZSBtYWlscyB0aGF0 IGFyZSB0byBiZSBzZW50IHZpYSB0aGUgYHNlbmRtYWlsYCBjb21tYW5kLgo+ICtwdWIgc3RydWN0 IE1haWw8J2E+IHsKPiArICAgIG1haWxfYXV0aG9yOiBTdHJpbmcsCj4gKyAgICBtYWlsX2Zyb206 IFN0cmluZywKPiArICAgIHN1YmplY3Q6IFN0cmluZywKPiArICAgIHRvOiBWZWM8UmVjaXBpZW50 PiwKPiArICAgIGJvZHlfdHh0OiBTdHJpbmcsCj4gKyAgICBib2R5X2h0bWw6IE9wdGlvbjxTdHJp bmc+LAo+ICsgICAgYXR0YWNobWVudHM6IFZlYzxBdHRhY2htZW50PCdhPj4sCj4gKyAgICBtYXNr X3BhcnRpY2lwYW50czogYm9vbCwKPiArfQo+ICsKPiAraW1wbDwnYT4gTWFpbDwnYT4gewo+ICsg ICAgLy8vIENyZWF0ZXMgYSBuZXcgbWFpbCB3aXRoIGEgbWFpbCBhdXRob3IsIGZyb20gYWRkcmVz cywgc3ViamVjdCBsaW5lIGFuZCBhIHBsYWluIHRleHQgYm9keS4KPiArICAgIC8vLwo+ICsgICAg Ly8vIE5vdGU6IElmIHRoZSBhdXRob3IncyBuYW1lIG9yIHRoZSBzdWJqZWN0IGxpbmUgY29udGFp bnMgVVRGLTggY2hhcmFjdGVycyB0aGV5IHdpbGwgYmUKPiArICAgIC8vLyBhcHByb3ByaWF0ZWx5 IGVuY29kZWQuCj4gKyAgICBwdWIgZm4gbmV3KG1haWxfYXV0aG9yOiAmc3RyLCBtYWlsX2Zyb206 ICZzdHIsIHN1YmplY3Q6ICZzdHIsIGJvZHlfdHh0OiAmc3RyKSAtPiBTZWxmIHsKPiArICAgICAg ICBTZWxmIHsKPiArICAgICAgICAgICAgbWFpbF9hdXRob3I6IG1haWxfYXV0aG9yLnRvX3N0cmlu ZygpLAo+ICsgICAgICAgICAgICBtYWlsX2Zyb206IG1haWxfZnJvbS50b19zdHJpbmcoKSwKPiAr ICAgICAgICAgICAgc3ViamVjdDogc3ViamVjdC50b19zdHJpbmcoKSwKPiArICAgICAgICAgICAg dG86IFZlYzo6bmV3KCksCj4gKyAgICAgICAgICAgIGJvZHlfdHh0OiBib2R5X3R4dC50b19zdHJp bmcoKSwKPiArICAgICAgICAgICAgYm9keV9odG1sOiBOb25lLAo+ICsgICAgICAgICAgICBhdHRh Y2htZW50czogVmVjOjpuZXcoKSwKPiArICAgICAgICAgICAgbWFza19wYXJ0aWNpcGFudHM6IHRy dWUsCj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBBZGRzIGEgcmVjaXBpZW50 IHRvIHRoZSBtYWlsIHdpdGhvdXQgc3BlY2lmeWluZyBhIG5hbWUgc2VwYXJhdGVseS4KPiArICAg IC8vLwo+ICsgICAgLy8vIE5vdGU6IE5vIGZvcm1hdHRpbmcgb3IgZW5jb2Rpbmcgd2lsbCBiZSBk b25lIGhlcmUsIHRoZSB2YWx1ZSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYFRvOmAKPiArICAgIC8v LyBoZWFkZXIgZGlyZWN0bHkuCj4gKyAgICBwdWIgZm4gYWRkX3JlY2lwaWVudCgmbXV0IHNlbGYs IGVtYWlsOiAmc3RyKSB7Cj4gKyAgICAgICAgc2VsZi50by5wdXNoKFJlY2lwaWVudCB7Cj4gKyAg ICAgICAgICAgIG5hbWU6IE5vbmUsCj4gKyAgICAgICAgICAgIGVtYWlsOiBlbWFpbC50b19zdHJp bmcoKSwKPiArICAgICAgICB9KTsKPiArICAgIH0KPiArCj4gKyAgICAvLy8gQnVpbGRlci1wYXR0 ZXJuIG1ldGhvZCB0byBjb252ZW5pZW50bHkgYWRkIGEgcmVjaXBpZW50IHRvIGFuIGVtYWlsIHdp dGhvdXQgc3BlY2lmeWluZyBhCj4gKyAgICAvLy8gbmFtZSBzZXBhcmF0ZWx5Lgo+ICsgICAgLy8v Cj4gKyAgICAvLy8gTm90ZTogTm8gZm9ybWF0dGluZyBvciBlbmNvZGluZyB3aWxsIGJlIGRvbmUg aGVyZSwgdGhlIHZhbHVlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgVG86YAo+ICsgICAgLy8vIGhl YWRlciBkaXJlY3RseS4KPiArICAgIHB1YiBmbiB3aXRoX3JlY2lwaWVudChtdXQgc2VsZiwgZW1h aWw6ICZzdHIpIC0+IFNlbGYgewo+ICsgICAgICAgIHNlbGYuYWRkX3JlY2lwaWVudChlbWFpbCk7 Cj4gKyAgICAgICAgc2VsZgo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBBZGRzIGEgcmVjaXBpZW50 IHRvIHRoZSBtYWlsIHdpdGggYSBuYW1lLgo+ICsgICAgLy8vCj4gKyAgICAvLy8gTm90ZXM6Cj4g KyAgICAvLy8KPiArICAgIC8vLyAtIElmIHRoZSBuYW1lIGNvbnRhaW5zIFVURi04IGNoYXJhY3Rl cnMgaXQgd2lsbCBiZSBlbmNvZGVkLiBUaGVuIHRoZSBwb3NzaWJseSBlbmNvZGVkIG5hbWUKPiAr ICAgIC8vLyAgIGFuZCBub24tZW5jb2RlZCBlbWFpbCBhZGRyZXNzIHdpbGwgYmUgcGFzc2VkIHRv IHRoZSBgVG86YCBoZWFkZXIgaW4gdGhpcyBmb3JtYXQ6Cj4gKyAgICAvLy8gICBge2VuY29kZWRf bmFtZX0gPHtlbWFpbH0+YAo+ICsgICAgLy8vIC0gSWYgbXVsdGlwbGUgcmVjZWl2ZXJzIGFyZSBz cGVjaWZpZWQsIHRoZXkgd2lsbCBiZSBtYXNrZWQgc28gYXMgbm90IHRvIGRpc2Nsb3NlIHRoZW0g dG8KPiArICAgIC8vLyAgIG90aGVyIHJlY2VpdmVycy4gVGhpcyBjYW4gYmUgZGlzYWJsZWQgdmlh IFtgTWFpbDo6dW5tYXNrX3JlY2lwaWVudHNgXSBvcgo+ICsgICAgLy8vICAgW2BNYWlsOjp3aXRo X3VubWFza2VkX3JlY2lwaWVudHNgXS4KPiArICAgIHB1YiBmbiBhZGRfcmVjaXBpZW50X2FuZF9u YW1lKCZtdXQgc2VsZiwgbmFtZTogJnN0ciwgZW1haWw6ICZzdHIpIHsKPiArICAgICAgICBzZWxm LnRvLnB1c2goUmVjaXBpZW50IHsKPiArICAgICAgICAgICAgbmFtZTogU29tZShuYW1lLnRvX3N0 cmluZygpKSwKPiArICAgICAgICAgICAgZW1haWw6IGVtYWlsLnRvX3N0cmluZygpLAo+ICsgICAg ICAgIH0pOwo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBCdWlsZGVyLXN0eWxlIG1ldGhvZCB0byBj b252ZW5pZW50bHkgYWRkIGEgcmVjaXBpZW50IHdpdGggYSBuYW1lIHRvIGFuIGVtYWlsLgo+ICsg ICAgLy8vCj4gKyAgICAvLy8gTm90ZXM6Cj4gKyAgICAvLy8KPiArICAgIC8vLyAtIElmIHRoZSBu YW1lIGNvbnRhaW5zIFVURi04IGNoYXJhY3RlcnMgaXQgd2lsbCBiZSBlbmNvZGVkLiBUaGVuIHRo ZSBwb3NzaWJseSBlbmNvZGVkIG5hbWUKPiArICAgIC8vLyAgIGFuZCBub24tZW5jb2RlZCBlbWFp bCBhZGRyZXNzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgVG86YCBoZWFkZXIgaW4gdGhpcyBmb3Jt YXQ6Cj4gKyAgICAvLy8gICBge2VuY29kZWRfbmFtZX0gPHtlbWFpbH0+YAo+ICsgICAgLy8vIC0g SWYgbXVsdGlwbGUgcmVjZWl2ZXJzIGFyZSBzcGVjaWZpZWQsIHRoZXkgd2lsbCBiZSBtYXNrZWQg c28gYXMgbm90IHRvIGRpc2Nsb3NlIHRoZW0gdG8KPiArICAgIC8vLyAgIG90aGVyIHJlY2VpdmVy cy4gVGhpcyBjYW4gYmUgZGlzYWJsZWQgdmlhIFtgTWFpbDo6dW5tYXNrX3JlY2lwaWVudHNgXSBv cgo+ICsgICAgLy8vICAgW2BNYWlsOjp3aXRoX3VubWFza2VkX3JlY2lwaWVudHNgXS4KPiArICAg IHB1YiBmbiB3aXRoX3JlY2lwaWVudF9hbmRfbmFtZShtdXQgc2VsZiwgbmFtZTogJnN0ciwgZW1h aWw6ICZzdHIpIC0+IFNlbGYgewo+ICsgICAgICAgIHNlbGYuYWRkX3JlY2lwaWVudF9hbmRfbmFt ZShuYW1lLCBlbWFpbCk7Cj4gKyAgICAgICAgc2VsZgo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBB ZGRzIGFuIGF0dGFjaG1lbnQgd2l0aCBhIHNwZWNpZmllZCBmaWxlIG5hbWUgYW5kIG1pbWUtdHlw ZSB0byBhbiBlbWFpbC4KPiArICAgIC8vLwo+ICsgICAgLy8vIE5vdGU6IEFkZGluZyBhdHRhY2ht ZW50cyB0cmlnZ2VycyBgbXVsdGlwYXJ0L21peGVkYCBtb2RlLgo+ICsgICAgcHViIGZuIGFkZF9h dHRhY2htZW50KCZtdXQgc2VsZiwgZmlsZW5hbWU6ICZzdHIsIG1pbWVfdHlwZTogJnN0ciwgY29u dGVudDogJidhIFt1OF0pIHsKPiArICAgICAgICBzZWxmLmF0dGFjaG1lbnRzLnB1c2goQXR0YWNo bWVudCB7Cj4gKyAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlbmFtZS50b19zdHJpbmcoKSwKPiAr ICAgICAgICAgICAgbWltZTogbWltZV90eXBlLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICBj b250ZW50LAo+ICsgICAgICAgIH0pOwo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBCdWlsZGVyLXN0 eWxlIG1ldGhvZCB0byBjb252ZW5pZW50bHkgYWRkIGFuIGF0dGFjaG1lbnQgd2l0aCBhIHNwZWNp ZmljIGZpbGVuYW1lIGFuZAo+ICsgICAgLy8vIG1pbWUtdHlwZSB0byBhbiBlbWFpbC4KPiArICAg IC8vLwo+ICsgICAgLy8vIE5vdGU6IEFkZGluZyBhdHRhY2hlbWVudHMgdHJpZ2dlcnMgYG11bHRp cGFydC9taXhlZGAgbW9kZS4KPiArICAgIHB1YiBmbiB3aXRoX2F0dGFjaG1lbnQobXV0IHNlbGYs IGZpbGVuYW1lOiAmc3RyLCBtaW1lX3R5cGU6ICZzdHIsIGNvbnRlbnQ6ICYnYSBbdThdKSAtPiBT ZWxmIHsKPiArICAgICAgICBzZWxmLmFkZF9hdHRhY2htZW50KGZpbGVuYW1lLCBtaW1lX3R5cGUs IGNvbnRlbnQpOwo+ICsgICAgICAgIHNlbGYKPiArICAgIH0KPiArCj4gKyAgICAvLy8gU2V0IGFu IGFsdGVybmF0aXZlIEhUTUwgcGFydC4KPiArICAgIC8vLwo+ICsgICAgLy8vIE5vdGU6IFRoaXMg dHJpZ2dlcnMgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWAgbW9kZS4gSWYgYm90aCBhbiBIVE1MIHBh cnQgYW5kIGF0IGxlYXN0IG9uZQo+ICsgICAgLy8vIGF0dGFjaG1lbnQgYXJlIHNwZWNpZmllZCwg dGhlIGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgIHBhcnQgd2lsbCBiZSBuZXN0ZWQgd2l0aGluIHRo ZSBmaXJzdAo+ICsgICAgLy8vIGBtdWx0aXBhcnQvbWl4ZWRgIHBhcnQuIFRoaXMgc2hvdWxkIGVu c3VyZSB0aGF0IHRoZSBIVE1MIGlzIGRpc3BsYXllZCBwcm9wZXJseSBieSBjbGllbnQncwo+ICsg ICAgLy8vIHRoYXQgcHJpb3JpdGl6ZSBpdCBvdmVyIHRoZSBwbGFpbiB0ZXh0IHBhcnQgKHNob3Vs ZCBiZSB0aGUgZGVmYXVsdCBmb3IgbW9zdCBjbGllbnRzKSB3aGlsZQo+ICsgICAgLy8vIGFsc28g cHJvcGVybHkgZGlzcGxheWluZyB0aGUgYXR0YWNobWVudHMuCj4gKyAgICBwdWIgZm4gc2V0X2h0 bWxfYWx0KCZtdXQgc2VsZiwgYm9keV9odG1sOiAmc3RyKSB7Cj4gKyAgICAgICAgc2VsZi5ib2R5 X2h0bWwucmVwbGFjZShib2R5X2h0bWwudG9fc3RyaW5nKCkpOwo+ICsgICAgfQo+ICsKPiArICAg IC8vLyBCdWlsZGVyLXN0eWxlIG1ldGhvZCB0byBhZGQgYW4gYWx0ZXJuYXRpdmUgSFRNTCBwYXJ0 Lgo+ICsgICAgLy8vCj4gKyAgICAvLy8gTm90ZTogVGhpcyB0cmlnZ2VycyBgbXVsdGlwYXJ0L2Fs dGVybmF0aXZlYCBtb2RlLiBJZiBib3RoIGFuIEhUTUwgcGFydCBhbmQgYXQgbGVhc3Qgb25lCj4g KyAgICAvLy8gYXR0YWNobWVudCBhcmUgc3BlY2lmaWVkLCB0aGUgYG11bHRpcGFydC9hbHRlcm5h dGl2ZWAgcGFydCB3aWxsIGJlIG5lc3RlZCB3aXRoaW4gdGhlIGZpcnN0Cj4gKyAgICAvLy8gYG11 bHRpcGFydC9taXhlZGAgcGFydC4gVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIEhUTUwgaXMg ZGlzcGxheWVkIHByb3Blcmx5IGJ5IGNsaWVudCdzCj4gKyAgICAvLy8gdGhhdCBwcmlvcml0aXpl IGl0IG92ZXIgdGhlIHBsYWluIHRleHQgcGFydCAoc2hvdWxkIGJlIHRoZSBkZWZhdWx0IGZvciBt b3N0IGNsaWVudHMpIHdoaWxlCj4gKyAgICAvLy8gYWxzbyBwcm9wZXJseSBkaXNwbGF5aW5nIHRo ZSBhdHRhY2htZW50cy4KPiArICAgIHB1YiBmbiB3aXRoX2h0bWxfYWx0KG11dCBzZWxmLCBib2R5 X2h0bWw6ICZzdHIpIC0+IFNlbGYgewo+ICsgICAgICAgIHNlbGYuc2V0X2h0bWxfYWx0KGJvZHlf aHRtbCk7Cj4gKyAgICAgICAgc2VsZgo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBUaGlzIGZ1bmN0 aW9uIGVuc3VyZXMgdGhhdCByZWNpcGllbnRzIG9mIHRoZSBtYWlsIGFyZSBub3QgbWFza2VkLiBC ZWluZyBhYmxlIHRvIHNlZSBhbGwKPiArICAgIC8vLyByZWNpcGllbnRzIG9mIGEgbWFpbCBjYW4g YmUgaGVscGZ1bCBpbiwgZm9yIGV4YW1wbGUsIG5vdGlmaWNhdGlvbiBzY2VuYXJpb3MuCj4gKyAg ICBwdWIgZm4gdW5tYXNrX3JlY2lwaWVudHMoJm11dCBzZWxmKSB7Cj4gKyAgICAgICAgc2VsZi5t YXNrX3BhcnRpY2lwYW50cyA9IGZhbHNlOwo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBCdWlsZGVy LXN0eWxlIGZ1bmN0aW9uIHRoYXQgZW5zdXJlcyB0aGF0IHJlY2lwaWVudHMgb2YgdGhlIG1haWwg YXJlIG5vdCBtYXNrZWQuIEJlaW5nIGFibGUKPiArICAgIC8vLyB0byBzZWUgYWxsIHJlY2lwaWVu dHMgb2YgYSBtYWlsIGNhbiBiZSBoZWxwZnVsIGluLCBmb3IgZXhhbXBsZSwgbm90aWZpY2F0aW9u IHNjZW5hcmlvcy4KPiArICAgIHB1YiBmbiB3aXRoX3VubWFza2VkX3JlY2lwaWVudHMobXV0IHNl bGYpIC0+IFNlbGYgewo+ICsgICAgICAgIHNlbGYudW5tYXNrX3JlY2lwaWVudHMoKTsKPiArICAg ICAgICBzZWxmCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIFNlbmRzIHRoZSBlbWFpbC4gVGhpcyB3 aWxsIGZhaWwgaWYgbm8gcmVjaXBpZW50cyBoYXZlIGJlZW4gYWRkZWQuCj4gKyAgICAvLy8KPiAr ICAgIC8vLyBOb3RlOiBBbiBgQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkYCBoZWFkZXIg aXMgYWRkZWQgdG8gYXZvaWQgdHJpZ2dlcmluZyBPT08gYW5kCj4gKyAgICAvLy8gc2ltaWxhciBt YWlscy4KPiArICAgIHB1YiBmbiBzZW5kKCZzZWxmKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4g KyAgICAgICAgaWYgc2VsZi50by5pc19lbXB0eSgpIHsKPiArICAgICAgICAgICAgYmFpbCEoIm5v IHJlY2lwaWVudHMgcHJvdmlkZWQgZm9yIHRoZSBtYWlsLCBjYW5ub3Qgc2VuZCBpdC4iKTsKPiAr ICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGxldCBub3cgPSBwcm94bW94X3RpbWU6OmVwb2NoX2k2 NCgpOwo+ICsgICAgICAgIGxldCBib2R5ID0gc2VsZi5mb3JtYXRfbWFpbChub3cpPzsKPiArCj4g KyAgICAgICAgbGV0IG11dCBzZW5kbWFpbF9wcm9jZXNzID0gQ29tbWFuZDo6bmV3KCIvdXNyL3Ni aW4vc2VuZG1haWwiKQo+ICsgICAgICAgICAgICAuYXJnKCItQiIpCj4gKyAgICAgICAgICAgIC5h cmcoIjhCSVRNSU1FIikKPiArICAgICAgICAgICAgLmFyZygiLWYiKQo+ICsgICAgICAgICAgICAu YXJnKCZzZWxmLm1haWxfZnJvbSkKPiArICAgICAgICAgICAgLmFyZygiLS0iKQo+ICsgICAgICAg ICAgICAuYXJncyhzZWxmLnRvLml0ZXIoKS5tYXAofHB8ICZwLmVtYWlsKS5jb2xsZWN0Ojo8VmVj PCZTdHJpbmc+PigpKQo+ICsgICAgICAgICAgICAuc3RkaW4oU3RkaW86OnBpcGVkKCkpCj4gKyAg ICAgICAgICAgIC5zcGF3bigpCj4gKyAgICAgICAgICAgIC53aXRoX2NvbnRleHQofHwgImNvdWxk IG5vdCBzcGF3biBzZW5kbWFpbCBwcm9jZXNzIik/Owo+ICsKPiArICAgICAgICBzZW5kbWFpbF9w cm9jZXNzCj4gKyAgICAgICAgICAgIC5zdGRpbgo+ICsgICAgICAgICAgICAuYXNfcmVmKCkKPiAr ICAgICAgICAgICAgLnVud3JhcCgpCj4gKyAgICAgICAgICAgIC53cml0ZV9hbGwoYm9keS5hc19i eXRlcygpKQo+ICsgICAgICAgICAgICAud2l0aF9jb250ZXh0KHx8ICJjb3VsZG4ndCB3cml0ZSB0 byBzZW5kbWFpbCBzdGRpbiIpPzsKPiArCj4gKyAgICAgICAgc2VuZG1haWxfcHJvY2Vzcwo+ICsg ICAgICAgICAgICAud2FpdCgpCj4gKyAgICAgICAgICAgIC53aXRoX2NvbnRleHQofHwgInNlbmRt YWlsIGRpZCBub3QgZXhpdCBzdWNjZXNzZnVsbHkiKT87Cj4gKwo+ICsgICAgICAgIE9rKCgpKQo+ ICsgICAgfQo+ICsKPiArICAgIGZuIGZvcm1hdF9tYWlsKCZzZWxmLCBub3c6IGk2NCkgLT4gUmVz dWx0PFN0cmluZywgRXJyb3I+IHsKPiArICAgICAgICBsZXQgZmlsZV9ib3VuZGFyeSA9IGZvcm1h dCEoIi0tLS1fPV9OZXh0UGFydF8wMDFfe30iLCBub3cpOwo+ICsgICAgICAgIGxldCBodG1sX2Jv dW5kYXJ5ID0gZm9ybWF0ISgiLS0tLV89X05leHRQYXJ0XzAwMl97fSIsIG5vdyk7Cj4gKwo+ICsg ICAgICAgIGxldCBtdXQgbWFpbCA9IHNlbGYuZm9ybWF0X2hlYWRlcihub3csICZmaWxlX2JvdW5k YXJ5LCAmaHRtbF9ib3VuZGFyeSk/Owo+ICsKPiArICAgICAgICBtYWlsLnB1c2hfc3RyKCZzZWxm LmZvcm1hdF9ib2R5KCZmaWxlX2JvdW5kYXJ5LCAmaHRtbF9ib3VuZGFyeSk/KTsKPiArCj4gKyAg ICAgICAgaWYgIXNlbGYuYXR0YWNobWVudHMuaXNfZW1wdHkoKSB7Cj4gKyAgICAgICAgICAgIG1h aWwucHVzaF9zdHIoCj4gKyAgICAgICAgICAgICAgICAmc2VsZgo+ICsgICAgICAgICAgICAgICAg ICAgIC5hdHRhY2htZW50cwo+ICsgICAgICAgICAgICAgICAgICAgIC5pdGVyKCkKPiArICAgICAg ICAgICAgICAgICAgICAubWFwKHxhfCBhLmZvcm1hdF9hdHRhY2htZW50KCZmaWxlX2JvdW5kYXJ5 KSkKPiArICAgICAgICAgICAgICAgICAgICAuY29sbGVjdDo6PFN0cmluZz4oKSwKPiArICAgICAg ICAgICAgKTsKPiArICAgICAgICAgICAgbWFpbC5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtmaWxl X2JvdW5kYXJ5fS0tIikpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgT2sobWFpbCkKPiAr ICAgIH0KPiArCj4gKyAgICBmbiBmb3JtYXRfaGVhZGVyKAo+ICsgICAgICAgICZzZWxmLAo+ICsg ICAgICAgIG5vdzogaTY0LAo+ICsgICAgICAgIGZpbGVfYm91bmRhcnk6ICZzdHIsCj4gKyAgICAg ICAgaHRtbF9ib3VuZGFyeTogJnN0ciwKPiArICAgICkgLT4gUmVzdWx0PFN0cmluZywgRXJyb3I+ IHsKPiArICAgICAgICBsZXQgbXV0IGhlYWRlciA9IFN0cmluZzo6bmV3KCk7Cj4gKwo+ICsgICAg ICAgIGxldCBlbmNvZGVkX3RvID0gaWYgc2VsZi50by5sZW4oKSA+IDEgJiYgc2VsZi5tYXNrX3Bh cnRpY2lwYW50cyB7Cj4gKyAgICAgICAgICAgIC8vIGlmIHRoZSByZWNlaXZlcnMgYXJlIG1hc2tl ZCwgd2Uga25vdyB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBiZSBlbmNvZGVkCj4gKyAgICAgICAg ICAgIGZhbHNlCj4gKyAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgLy8gY2hlY2sgaWYg dGhlcmUgaXMgYSByZWNpcGllbnQgdGhhdCBuZWVkcyBlbmNvZGluZwo+ICsgICAgICAgICAgICBz ZWxmLnRvLml0ZXIoKS5hbnkofHJ8ICFyLmlzX2FzY2lpKCkpCj4gKyAgICAgICAgfTsKPiArCj4g KyAgICAgICAgaWYgIXNlbGYuYXR0YWNobWVudHMuaXNfZW1wdHkoKSB7Cj4gKyAgICAgICAgICAg IGhlYWRlci5wdXNoX3N0cigiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7XG4iKTsKPiAr ICAgICAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCZmb3JtYXQhKCJcdGJvdW5kYXJ5PVwie2ZpbGVf Ym91bmRhcnl9XCJcbiIpKTsKPiArICAgICAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCJNSU1FLVZl cnNpb246IDEuMFxuIik7Cj4gKyAgICAgICAgfSBlbHNlIGlmIHNlbGYuYm9keV9odG1sLmlzX3Nv bWUoKSB7Cj4gKyAgICAgICAgICAgIGhlYWRlci5wdXNoX3N0cigiQ29udGVudC1UeXBlOiBtdWx0 aXBhcnQvYWx0ZXJuYXRpdmU7XG4iKTsKPiArICAgICAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCZm b3JtYXQhKCJcdGJvdW5kYXJ5PVwie2h0bWxfYm91bmRhcnl9XCJcbiIpKTsKPiArICAgICAgICAg ICAgaGVhZGVyLnB1c2hfc3RyKCJNSU1FLVZlcnNpb246IDEuMFxuIik7Cj4gKyAgICAgICAgfSBl bHNlIGlmICFzZWxmLnN1YmplY3QuaXNfYXNjaWkoKSB8fCAhc2VsZi5tYWlsX2F1dGhvci5pc19h c2NpaSgpIHx8IGVuY29kZWRfdG8gewo+ICsgICAgICAgICAgICBoZWFkZXIucHVzaF9zdHIoIk1J TUUtVmVyc2lvbjogMS4wXG4iKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGxldCBzdWJq ZWN0ID0gaWYgIXNlbGYuc3ViamVjdC5pc19hc2NpaSgpIHsKPiArICAgICAgICAgICAgZm9ybWF0 ISgiU3ViamVjdDogPT91dGYtOD9CP3t9Pz1cbiIsIGJhc2U2NDo6ZW5jb2RlKCZzZWxmLnN1Ympl Y3QpKQo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIGZvcm1hdCEoIlN1YmplY3Q6 IHt9XG4iLCBzZWxmLnN1YmplY3QpCj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAgaGVhZGVy LnB1c2hfc3RyKCZzdWJqZWN0KTsKPiArCj4gKyAgICAgICAgbGV0IGZyb20gPSBpZiAhc2VsZi5t YWlsX2F1dGhvci5pc19hc2NpaSgpIHsKPiArICAgICAgICAgICAgZm9ybWF0ISgKPiArICAgICAg ICAgICAgICAgICJGcm9tOiA9P3V0Zi04P0I/e30/PSA8e30+XG4iLAo+ICsgICAgICAgICAgICAg ICAgYmFzZTY0OjplbmNvZGUoJnNlbGYubWFpbF9hdXRob3IpLAo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYWlsX2Zyb20KPiArICAgICAgICAgICAgKQo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAg ICAgICAgICAgIGZvcm1hdCEoIkZyb206IHt9IDx7fT5cbiIsIHNlbGYubWFpbF9hdXRob3IsIHNl bGYubWFpbF9mcm9tKQo+ICsgICAgICAgIH07Cj4gKwo+ICsgICAgICAgIGhlYWRlci5wdXNoX3N0 cigmZnJvbSk7Cj4gKwo+ICsgICAgICAgIGxldCB0byA9IGlmIHNlbGYudG8ubGVuKCkgPiAxICYm IHNlbGYubWFza19wYXJ0aWNpcGFudHMgewo+ICsgICAgICAgICAgICAvLyBkb24ndCBkaXNjbG9z ZSBhbGwgcmVjaXBpZW50cyBpZiB0aGUgbWFpbCBnb2VzIG91dCB0byBtdWx0aXBsZQo+ICsgICAg ICAgICAgICBsZXQgcmVjaXBpZW50ID0gUmVjaXBpZW50IHsKPiArICAgICAgICAgICAgICAgIG5h bWU6IFNvbWUoIlVuZGlzY2xvc2VkIi50b19zdHJpbmcoKSksCj4gKyAgICAgICAgICAgICAgICBl bWFpbDogIm5vcmVwbHkiLnRvX3N0cmluZygpLAo+ICsgICAgICAgICAgICB9Owo+ICsKPiArICAg ICAgICAgICAgcmVjaXBpZW50LmZvcm1hdF9yZWNpcGllbnQoKQo+ICsgICAgICAgIH0gZWxzZSB7 Cj4gKyAgICAgICAgICAgIHNlbGYudG8KPiArICAgICAgICAgICAgICAgIC5pdGVyKCkKPiArICAg ICAgICAgICAgICAgIC5tYXAoUmVjaXBpZW50Ojpmb3JtYXRfcmVjaXBpZW50KQo+ICsgICAgICAg ICAgICAgICAgLmNvbGxlY3Q6OjxWZWM8U3RyaW5nPj4oKQo+ICsgICAgICAgICAgICAgICAgLmpv aW4oIiwgIikKPiArICAgICAgICB9Owo+ICsKPiArICAgICAgICBoZWFkZXIucHVzaF9zdHIoIlRv OiAiKTsKPiArICAgICAgICBoZWFkZXIucHVzaF9zdHIoJnRvKTsKPiArICAgICAgICBoZWFkZXIu cHVzaCgnXG4nKTsKPiArCj4gKyAgICAgICAgbGV0IHJmYzI4MjJfZGF0ZSA9IHByb3htb3hfdGlt ZTo6ZXBvY2hfdG9fcmZjMjgyMihub3cpCj4gKyAgICAgICAgICAgIC53aXRoX2NvbnRleHQofHwg ImNvdWxkIG5vdCBjb252ZXJ0IGVwb2NoIHRvIHJmYzI4MjIgZGF0ZSIpPzsKPiArICAgICAgICBo ZWFkZXIucHVzaF9zdHIoJmZvcm1hdCEoIkRhdGU6IHtyZmMyODIyX2RhdGV9XG4iKSk7Cj4gKyAg ICAgICAgaGVhZGVyLnB1c2hfc3RyKCJBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7XG4i KTsKPiArCj4gKyAgICAgICAgT2soaGVhZGVyKQo+ICsgICAgfQo+ICsKPiArICAgIGZuIGZvcm1h dF9ib2R5KCZzZWxmLCBmaWxlX2JvdW5kYXJ5OiAmc3RyLCBodG1sX2JvdW5kYXJ5OiAmc3RyKSAt PiBSZXN1bHQ8U3RyaW5nLCBFcnJvcj4gewo+ICsgICAgICAgIGxldCBtdXQgYm9keSA9IFN0cmlu Zzo6bmV3KCk7Cj4gKwo+ICsgICAgICAgIGlmIHNlbGYuYm9keV9odG1sLmlzX3NvbWUoKSAmJiAh c2VsZi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0 cigiXG5UaGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LlxuIik7Cj4g KyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17ZmlsZV9ib3VuZGFyeX1c biIpKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgKPiArICAgICAgICAg ICAgICAgICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9XCJ7 aHRtbF9ib3VuZGFyeX1cIlxuIgo+ICsgICAgICAgICAgICApKTsKPiArICAgICAgICAgICAgYm9k eS5wdXNoX3N0cigiTUlNRS1WZXJzaW9uOiAxLjBcbiIpOwo+ICsgICAgICAgICAgICBib2R5LnB1 c2hfc3RyKCZmb3JtYXQhKCJcbi0te2h0bWxfYm91bmRhcnl9XG4iKSk7Cj4gKyAgICAgICAgfSBl bHNlIGlmIHNlbGYuYm9keV9odG1sLmlzX3NvbWUoKSB7Cj4gKyAgICAgICAgICAgIGJvZHkucHVz aF9zdHIoIlxuVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC5cbiIp Owo+ICsgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCZmb3JtYXQhKCJcbi0te2h0bWxfYm91bmRh cnl9XG4iKSk7Cj4gKyAgICAgICAgfSBlbHNlIGlmIHNlbGYuYm9keV9odG1sLmlzX25vbmUoKSAm JiAhc2VsZi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKPiArICAgICAgICAgICAgYm9keS5wdXNo X3N0cigiXG5UaGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LlxuIik7 Cj4gKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17ZmlsZV9ib3VuZGFy eX1cbiIpKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGJvZHkucHVzaF9zdHIoIkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjtcbiIpOwo+ICsgICAgICAgIGJvZHkucHVzaF9zdHIoIlx0Y2hh cnNldD1cIlVURi04XCJcbiIpOwo+ICsgICAgICAgIGJvZHkucHVzaF9zdHIoIkNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDhiaXRcblxuIik7Cj4gKyAgICAgICAgYm9keS5wdXNoX3N0cigmc2Vs Zi5ib2R5X3R4dCk7Cj4gKwo+ICsgICAgICAgIGlmIGxldCBTb21lKGh0bWwpID0gJnNlbGYuYm9k eV9odG1sIHsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtodG1s X2JvdW5kYXJ5fVxuIikpOwo+ICsgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJDb250ZW50LVR5 cGU6IHRleHQvaHRtbDtcbiIpOwo+ICsgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJcdGNoYXJz ZXQ9XCJVVEYtOFwiXG4iKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiQ29udGVudC1U cmFuc2Zlci1FbmNvZGluZzogOGJpdFxuXG4iKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0 cihodG1sKTsKPiArICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtodG1s X2JvdW5kYXJ5fS0tIikpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgT2soYm9keSkKPiAr ICAgIH0KPiArfQo+ICsKPiArI1tjZmcodGVzdCldCj4gK21vZCB0ZXN0IHsKPiArICAgIHVzZSBz dXBlcjo6KjsKPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiBlbWFpbF93aXRob3V0X3JlY2lw aWVudHNfZmFpbHMoKSB7Cj4gKyAgICAgICAgbGV0IHJlc3VsdCA9IE1haWw6Om5ldygiU2VuZGVy IiwgIm1haWxAZXhhbXBsZS5jb20iLCAiaGkiLCAiYm9keSIpLnNlbmQoKTsKPiArICAgICAgICBh c3NlcnQhKHJlc3VsdC5pc19lcnIoKSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsg ICAgZm4gc2ltcGxlX2FzY2lpX3RleHRfbWFpbCgpIHsKPiArICAgICAgICBsZXQgbWFpbCA9IE1h aWw6Om5ldygKPiArICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKPiArICAgICAgICAgICAgIm1h aWxmcm9tQGV4YW1wbGUuY29tIiwKPiArICAgICAgICAgICAgIlN1YmplY3QgTGluZSIsCj4gKyAg ICAgICAgICAgICJUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC5cbk5vdGhpbmcgdG9vIHNwZWNpYWwu IiwKPiArICAgICAgICApCj4gKyAgICAgICAgLndpdGhfcmVjaXBpZW50X2FuZF9uYW1lKCJSZWNl aXZlciBOYW1lIiwgInJlY2VpdmVyQGV4YW1wbGUuY29tIik7Cj4gKwo+ICsgICAgICAgIGxldCBi b2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgwKS5leHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIp Owo+ICsKPiArICAgICAgICBhc3NlcnRfZXEhKAo+ICsgICAgICAgICAgICBib2R5LAo+ICsgICAg ICAgICAgICByIyJTdWJqZWN0OiBTdWJqZWN0IExpbmUKPiArRnJvbTogU2VuZGVyIE5hbWUgPG1h aWxmcm9tQGV4YW1wbGUuY29tPgo+ICtUbzogUmVjZWl2ZXIgTmFtZSA8cmVjZWl2ZXJAZXhhbXBs ZS5jb20+Cj4gK0RhdGU6IFRodSwgMDEgSmFuIDE5NzAgMDE6MDA6MDAgKzAxMDAKPiArQXV0by1T dWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOwo+ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4g KwljaGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsK PiArVGhpcyBpcyBqdXN0IGFzY2lpIHRleHQuCj4gK05vdGhpbmcgdG9vIHNwZWNpYWwuIiMKPiAr ICAgICAgICApCj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gbXVsdGlwbGVf cmVjZWl2ZXJfbWFza2VkKCkgewo+ICsgICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAo+ICsg ICAgICAgICAgICAiU2VuZGVyIE5hbWUiLAo+ICsgICAgICAgICAgICAibWFpbGZyb21AZXhhbXBs ZS5jb20iLAo+ICsgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKPiArICAgICAgICAgICAgIlRo aXMgaXMganVzdCBhc2NpaSB0ZXh0LlxuTm90aGluZyB0b28gc3BlY2lhbC4iLAo+ICsgICAgICAg ICkKPiArICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAi cmVjZWl2ZXJAZXhhbXBsZS5jb20iKQo+ICsgICAgICAgIC53aXRoX3JlY2lwaWVudCgidHdvQGV4 YW1wbGUuY29tIikKPiArICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIm3DpHggbcO8 c3Rlcm3DpG5uIiwgIm1tQGV4YW1wbGUuY29tIik7Cj4gKwo+ICsgICAgICAgIGxldCBib2R5ID0g bWFpbC5mb3JtYXRfbWFpbCgwKS5leHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOwo+ICsK PiArICAgICAgICBhc3NlcnRfZXEhKAo+ICsgICAgICAgICAgICBib2R5LAo+ICsgICAgICAgICAg ICByIyJTdWJqZWN0OiBTdWJqZWN0IExpbmUKPiArRnJvbTogU2VuZGVyIE5hbWUgPG1haWxmcm9t QGV4YW1wbGUuY29tPgo+ICtUbzogVW5kaXNjbG9zZWQgPG5vcmVwbHk+Cj4gK0RhdGU6IFRodSwg MDEgSmFuIDE5NzAgMDE6MDA6MDAgKzAxMDAKPiArQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJh dGVkOwo+ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4gKwljaGFyc2V0PSJVVEYtOCIKPiAr Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArVGhpcyBpcyBqdXN0IGFzY2lp IHRleHQuCj4gK05vdGhpbmcgdG9vIHNwZWNpYWwuIiMKPiArICAgICAgICApCj4gKyAgICB9Cj4g Kwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gbXVsdGlwbGVfcmVjZWl2ZXJfdW5tYXNrZWQoKSB7 Cj4gKyAgICAgICAgbGV0IG1haWwgPSBNYWlsOjpuZXcoCj4gKyAgICAgICAgICAgICJTZW5kZXIg TmFtZSIsCj4gKyAgICAgICAgICAgICJtYWlsZnJvbUBleGFtcGxlLmNvbSIsCj4gKyAgICAgICAg ICAgICJTdWJqZWN0IExpbmUiLAo+ICsgICAgICAgICAgICAiVGhpcyBpcyBqdXN0IGFzY2lpIHRl eHQuXG5Ob3RoaW5nIHRvbyBzcGVjaWFsLiIsCj4gKyAgICAgICAgKQo+ICsgICAgICAgIC53aXRo X3JlY2lwaWVudF9hbmRfbmFtZSgiUmVjZWl2ZXIgTmFtZSIsICJyZWNlaXZlckBleGFtcGxlLmNv bSIpCj4gKyAgICAgICAgLndpdGhfcmVjaXBpZW50KCJ0d29AZXhhbXBsZS5jb20iKQo+ICsgICAg ICAgIC53aXRoX3JlY2lwaWVudF9hbmRfbmFtZSgibcOkeCBtw7xzdGVybcOkbm4iLCAibW1AZXhh bXBsZS5jb20iKQo+ICsgICAgICAgIC53aXRoX3VubWFza2VkX3JlY2lwaWVudHMoKTsKPiArCj4g KyAgICAgICAgbGV0IGJvZHkgPSBtYWlsLmZvcm1hdF9tYWlsKDApLmV4cGVjdCgiY291bGQgbm90 IGZvcm1hdCBtYWlsIik7Cj4gKwo+ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAg IGJvZHksCj4gKyAgICAgICAgICAgIHIjIk1JTUUtVmVyc2lvbjogMS4wCj4gK1N1YmplY3Q6IFN1 YmplY3QgTGluZQo+ICtGcm9tOiBTZW5kZXIgTmFtZSA8bWFpbGZyb21AZXhhbXBsZS5jb20+Cj4g K1RvOiBSZWNlaXZlciBOYW1lIDxyZWNlaXZlckBleGFtcGxlLmNvbT4sIHR3b0BleGFtcGxlLmNv bSwgPT91dGYtOD9CP2JjT2tlQ0J0dzd4emRHVnliY09rYm00PT89IDxtbUBleGFtcGxlLmNvbT4K PiArRGF0ZTogVGh1LCAwMSBKYW4gMTk3MCAwMTowMDowMCArMDEwMAo+ICtBdXRvLVN1Ym1pdHRl ZDogYXV0by1nZW5lcmF0ZWQ7Cj4gK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsKPiArCWNoYXJz ZXQ9IlVURi04Igo+ICtDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cj4gKwo+ICtUaGlz IGlzIGp1c3QgYXNjaWkgdGV4dC4KPiArTm90aGluZyB0b28gc3BlY2lhbC4iIwo+ICsgICAgICAg ICkKPiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiBzaW1wbGVfdXRmOF90ZXh0 X21haWwoKSB7Cj4gKyAgICAgICAgbGV0IG1haWwgPSBNYWlsOjpuZXcoCj4gKyAgICAgICAgICAg ICJVVEYtOCBTZW5kZXIgTmFtZSDwn5OnIiwKPiArICAgICAgICAgICAgImRpZmZlcmVudGZyb21A ZXhhbXBsZS5jb20iLAo+ICsgICAgICAgICAgICAiU3ViamVjdCBMaW5lIPCfp5EiLAo+ICsgICAg ICAgICAgICAiVGhpcyB1dGYtOCBlbWFpbCBzaG91bGQgaGFuZGxlIGVtb2ppc1xu8J+nkfCfk6dc bmFuZCB3ZWlyZCBnZXJtYW4gY2hhcmFjdGVyczogw7bDpMO8w59cbmFuZCBtb3JlLiIsCj4gKyAg ICAgICAgKQo+ICsgICAgICAgIC53aXRoX3JlY2lwaWVudF9hbmRfbmFtZSgiUmVjZWl2ZXIgTmFt ZfCfk6kiLCAicmVjZWl2ZXJAZXhhbXBsZS5jb20iKTsKPiArCj4gKyAgICAgICAgbGV0IGJvZHkg PSBtYWlsLmZvcm1hdF9tYWlsKDE3MzI4MDYyNTEpLmV4cGVjdCgiY291bGQgbm90IGZvcm1hdCBt YWlsIik7Cj4gKwo+ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgIGJvZHksCj4g KyAgICAgICAgICAgIHIjIk1JTUUtVmVyc2lvbjogMS4wCj4gK1N1YmplY3Q6ID0/dXRmLTg/Qj9V M1ZpYW1WamRDQk1hVzVsSVBDZnA1RT0/PQo+ICtGcm9tOiA9P3V0Zi04P0I/VlZSR0xUZ2dVMlZ1 WkdWeUlFNWhiV1VnOEorVHB3PT0/PSA8ZGlmZmVyZW50ZnJvbUBleGFtcGxlLmNvbT4KPiArVG86 ID0/dXRmLTg/Qj9VbVZqWldsMlpYSWdUbUZ0WmZDZms2az0/PSA8cmVjZWl2ZXJAZXhhbXBsZS5j b20+Cj4gK0RhdGU6IFRodSwgMjggTm92IDIwMjQgMTY6MDQ6MTEgKzAxMDAKPiArQXV0by1TdWJt aXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOwo+ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4gKwlj aGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiAr VGhpcyB1dGYtOCBlbWFpbCBzaG91bGQgaGFuZGxlIGVtb2ppcwo+ICvwn6eR8J+Tpwo+ICthbmQg d2VpcmQgZ2VybWFuIGNoYXJhY3RlcnM6IMO2w6TDvMOfCj4gK2FuZCBtb3JlLiIjCj4gKyAgICAg ICAgKQo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIG11bHRpcGFydF9odG1s X2FsdGVybmF0aXZlKCkgewo+ICsgICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAo+ICsgICAg ICAgICAgICAiU2VuZGVyIE5hbWUiLAo+ICsgICAgICAgICAgICAiZnJvbUBleGFtcGxlLmNvbSIs Cj4gKyAgICAgICAgICAgICJTdWJqZWN0IExpbmUiLAo+ICsgICAgICAgICAgICAiTG9yZW0gSXBz dW0gRG9sb3IgU2l0XG5BbWV0IiwKPiArICAgICAgICApCj4gKyAgICAgICAgLndpdGhfcmVjaXBp ZW50KCJyZWNlaXZlckBleGFtcGxlLmNvbSIpCj4gKyAgICAgICAgLndpdGhfaHRtbF9hbHQoIjxo dG1sIGxhbmc9XCJkZS1hdFwiPjxoZWFkPjwvaGVhZD48Ym9keT5cblx0PHByZT5cblx0XHRMb3Jl bSBJcHN1bSBEb2xvciBTaXQgQW1ldFxuXHQ8L3ByZT5cbjwvYm9keT48L2h0bWw+Iik7Cj4gKyAg ICAgICAgbGV0IGJvZHkgPSBtYWlsLmZvcm1hdF9tYWlsKDE3MzI4MDYyNTEpLmV4cGVjdCgiY291 bGQgbm90IGZvcm1hdCBtYWlsIik7Cj4gKyAgICAgICAgYXNzZXJ0X2VxISgKPiArICAgICAgICAg ICAgYm9keSwKPiArICAgICAgICAgICAgciMiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJu YXRpdmU7Cj4gKwlib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMl8xNzMyODA2MjUxIgo+ICtN SU1FLVZlcnNpb246IDEuMAo+ICtTdWJqZWN0OiBTdWJqZWN0IExpbmUKPiArRnJvbTogU2VuZGVy IE5hbWUgPGZyb21AZXhhbXBsZS5jb20+Cj4gK1RvOiByZWNlaXZlckBleGFtcGxlLmNvbQo+ICtE YXRlOiBUaHUsIDI4IE5vdiAyMDI0IDE2OjA0OjExICswMTAwCj4gK0F1dG8tU3VibWl0dGVkOiBh dXRvLWdlbmVyYXRlZDsKPiArCj4gK1RoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlN RSBmb3JtYXQuCj4gKwo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MQo+ICtDb250 ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4gKwljaGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArTG9yZW0gSXBzdW0gRG9sb3IgU2l0Cj4gK0FtZXQK PiArLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEKPiArQ29udGVudC1UeXBlOiB0ZXh0 L2h0bWw7Cj4gKwljaGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog OGJpdAo+ICsKPiArPGh0bWwgbGFuZz0iZGUtYXQiPjxoZWFkPjwvaGVhZD48Ym9keT4KPiArCTxw cmU+Cj4gKwkJTG9yZW0gSXBzdW0gRG9sb3IgU2l0IEFtZXQKPiArCTwvcHJlPgo+ICs8L2JvZHk+ PC9odG1sPgo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MS0tIiMKPiArICAgICAg ICApCj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gbXVsdGlwYXJ0X3BsYWlu X3RleHRfYXR0YWNobWVudHNfbWl4ZWQoKSB7Cj4gKyAgICAgICAgbGV0IGJpbjogW3U4OyA2Ml0g PSBbCj4gKyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4 YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsCj4gKyAgICAgICAg ICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUs IDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsCj4gKyAgICAgICAgICAgIDB4ZGUsIDB4YWQs IDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4 ZWYsIDB4ZGUsIDB4YWQsCj4gKyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4 ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQs Cj4gKyAgICAgICAgICAgIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsCj4gKyAg ICAgICAgXTsKPiArCj4gKyAgICAgICAgbGV0IG1haWwgPSBNYWlsOjpuZXcoCj4gKyAgICAgICAg ICAgICJTZW5kZXIgTmFtZSIsCj4gKyAgICAgICAgICAgICJmcm9tQGV4YW1wbGUuY29tIiwKPiAr ICAgICAgICAgICAgIlN1YmplY3QgTGluZSIsCj4gKyAgICAgICAgICAgICJMb3JlbSBJcHN1bSBE b2xvciBTaXRcbkFtZXQiLAo+ICsgICAgICAgICkKPiArICAgICAgICAud2l0aF9yZWNpcGllbnRf YW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAicmVjZWl2ZXJAZXhhbXBsZS5jb20iKQo+ICsgICAg ICAgIC53aXRoX2F0dGFjaG1lbnQoImRlYWRiZWVmLmJpbiIsICJhcHBsaWNhdGlvbi9vY3RldC1z dHJlYW0iLCAmYmluKTsKPiArCj4gKyAgICAgICAgbGV0IGJvZHkgPSBtYWlsLmZvcm1hdF9tYWls KDE3MzI4MDYyNTEpLmV4cGVjdCgiY291bGQgbm90IGZvcm1hdCBtYWlsIik7Cj4gKyAgICAgICAg YXNzZXJ0X2VxISgKPiArICAgICAgICAgICAgYm9keSwKPiArICAgICAgICAgICAgciMiQ29udGVu dC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7Cj4gKwlib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAw MV8xNzMyODA2MjUxIgo+ICtNSU1FLVZlcnNpb246IDEuMAo+ICtTdWJqZWN0OiBTdWJqZWN0IExp bmUKPiArRnJvbTogU2VuZGVyIE5hbWUgPGZyb21AZXhhbXBsZS5jb20+Cj4gK1RvOiBSZWNlaXZl ciBOYW1lIDxyZWNlaXZlckBleGFtcGxlLmNvbT4KPiArRGF0ZTogVGh1LCAyOCBOb3YgMjAyNCAx NjowNDoxMSArMDEwMAo+ICtBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7Cj4gKwo+ICtU aGlzIGlzIGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0Lgo+ICsKPiArLS0tLS0t Xz1fTmV4dFBhcnRfMDAxXzE3MzI4MDYyNTEKPiArQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOwo+ ICsJY2hhcnNldD0iVVRGLTgiCj4gK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiAr Cj4gK0xvcmVtIElwc3VtIERvbG9yIFNpdAo+ICtBbWV0Cj4gKy0tLS0tLV89X05leHRQYXJ0XzAw MV8xNzMyODA2MjUxCj4gK0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOyBu YW1lPSJkZWFkYmVlZi5iaW4iCj4gK0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp bGVuYW1lPSJkZWFkYmVlZi5iaW4iOyBmaWxlbmFtZSo9VVRGLTgnJ2RlYWRiZWVmLmJpbgo+ICtD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKPiArCj4gKzNxMis3OTZ0dnUvZXJiN3Yz cTNlcmI3djNxMis3OTZ0dnUvZXJkNnR2dS9lcmI3djNxMis3OTZ0M3EyKzc5NnR2dS9lcmI3dgo+ ICszcTIrNzk2dHZ1OD0KPiArLS0tLS0tXz1fTmV4dFBhcnRfMDAxXzE3MzI4MDYyNTEtLSIjCj4g KyAgICAgICAgKQo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIG11bHRpcGFy dF9wbGFpbl90ZXh0X2h0bWxfYWx0ZXJuYXRpdmVfYXR0YWNobWVudHMoKSB7Cj4gKyAgICAgICAg bGV0IGJpbjogW3U4OyA2Ml0gPSBbCj4gKyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4 ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUs IDB4YWQsCj4gKyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQs IDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsCj4gKyAgICAg ICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4 ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsCj4gKyAgICAgICAgICAgIDB4ZGUsIDB4 YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUs IDB4ZWYsIDB4ZGUsIDB4YWQsCj4gKyAgICAgICAgICAgIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQs IDB4YmUsIDB4ZWYsCj4gKyAgICAgICAgXTsKPiArCj4gKyAgICAgICAgbGV0IG1haWwgPSBNYWls OjpuZXcoCj4gKyAgICAgICAgICAgICJTZW5kZXIgTmFtZSIsCj4gKyAgICAgICAgICAgICJmcm9t QGV4YW1wbGUuY29tIiwKPiArICAgICAgICAgICAgIlN1YmplY3QgTGluZSIsCj4gKyAgICAgICAg ICAgICJMb3JlbSBJcHN1bSBEb2xvciBTaXRcbkFtZXQiLAo+ICsgICAgICAgICkKPiArICAgICAg ICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAicmVjZWl2ZXJAZXhh bXBsZS5jb20iKQo+ICsgICAgICAgIC53aXRoX2F0dGFjaG1lbnQoImRlYWRiZWVmLmJpbiIsICJh cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCAmYmluKQo+ICsgICAgICAgIC53aXRoX2F0dGFjaG1l bnQoIvCfkITwn5KALmJpbiIsICJpbWFnZS9ibXAiLCAmYmluKQo+ICsgICAgICAgIC53aXRoX2h0 bWxfYWx0KCI8aHRtbCBsYW5nPVwiZGUtYXRcIj48aGVhZD48L2hlYWQ+PGJvZHk+XG5cdDxwcmU+ XG5cdFx0TG9yZW0gSXBzdW0gRG9sb3IgU2l0IEFtZXRcblx0PC9wcmU+XG48L2JvZHk+PC9odG1s PiIpOwo+ICsKPiArICAgICAgICBsZXQgYm9keSA9IG1haWwuZm9ybWF0X21haWwoMTczMjgwNjI1 MSkuZXhwZWN0KCJjb3VsZCBub3QgZm9ybWF0IG1haWwiKTsKPiArCj4gKyAgICAgICAgYXNzZXJ0 X2VxISgKPiArICAgICAgICAgICAgYm9keSwKPiArICAgICAgICAgICAgciMiQ29udGVudC1UeXBl OiBtdWx0aXBhcnQvbWl4ZWQ7Cj4gKwlib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMV8xNzMy ODA2MjUxIgo+ICtNSU1FLVZlcnNpb246IDEuMAo+ICtTdWJqZWN0OiBTdWJqZWN0IExpbmUKPiAr RnJvbTogU2VuZGVyIE5hbWUgPGZyb21AZXhhbXBsZS5jb20+Cj4gK1RvOiBSZWNlaXZlciBOYW1l IDxyZWNlaXZlckBleGFtcGxlLmNvbT4KPiArRGF0ZTogVGh1LCAyOCBOb3YgMjAyNCAxNjowNDox MSArMDEwMAo+ICtBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7Cj4gKwo+ICtUaGlzIGlz IGEgbXVsdGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0Lgo+ICsKPiArLS0tLS0tXz1fTmV4 dFBhcnRfMDAxXzE3MzI4MDYyNTEKPiArQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRp dmU7IGJvdW5kYXJ5PSItLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEiCj4gK01JTUUtVmVy c2lvbjogMS4wCj4gKwo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MQo+ICtDb250 ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4gKwljaGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArTG9yZW0gSXBzdW0gRG9sb3IgU2l0Cj4gK0FtZXQK PiArLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEKPiArQ29udGVudC1UeXBlOiB0ZXh0 L2h0bWw7Cj4gKwljaGFyc2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog OGJpdAo+ICsKPiArPGh0bWwgbGFuZz0iZGUtYXQiPjxoZWFkPjwvaGVhZD48Ym9keT4KPiArCTxw cmU+Cj4gKwkJTG9yZW0gSXBzdW0gRG9sb3IgU2l0IEFtZXQKPiArCTwvcHJlPgo+ICs8L2JvZHk+ PC9odG1sPgo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MS0tCj4gKy0tLS0tLV89 X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCj4gK0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0 ZXQtc3RyZWFtOyBuYW1lPSJkZWFkYmVlZi5iaW4iCj4gK0NvbnRlbnQtRGlzcG9zaXRpb246IGF0 dGFjaG1lbnQ7IGZpbGVuYW1lPSJkZWFkYmVlZi5iaW4iOyBmaWxlbmFtZSo9VVRGLTgnJ2RlYWRi ZWVmLmJpbgo+ICtDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKPiArCj4gKzNxMis3 OTZ0dnUvZXJiN3YzcTNlcmI3djNxMis3OTZ0dnUvZXJkNnR2dS9lcmI3djNxMis3OTZ0M3EyKzc5 NnR2dS9lcmI3dgo+ICszcTIrNzk2dHZ1OD0KPiArLS0tLS0tXz1fTmV4dFBhcnRfMDAxXzE3MzI4 MDYyNTEKPiArQ29udGVudC1UeXBlOiBpbWFnZS9ibXA7IG5hbWU9IvCfkITwn5KALmJpbiIKPiAr Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IvCfkITwn5KALmJpbiI7 IGZpbGVuYW1lKj1VVEYtOCcnJUYwJTlGJTkwJTg0JUYwJTlGJTkyJTgwLmJpbgo+ICtDb250ZW50 LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKPiArCj4gKzNxMis3OTZ0dnUvZXJiN3YzcTNlcmI3 djNxMis3OTZ0dnUvZXJkNnR2dS9lcmI3djNxMis3OTZ0M3EyKzc5NnR2dS9lcmI3dgo+ICszcTIr Nzk2dHZ1OD0KPiArLS0tLS0tXz1fTmV4dFBhcnRfMDAxXzE3MzI4MDYyNTEtLSIjCj4gKyAgICAg ICAgKQo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIHRlc3RfZm9ybWF0X21h aWxfbXVsdGlwYXJ0KCkgewo+ICsgICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAo+ICsgICAg ICAgICAgICAiRnJlZCBPb2JhciIsCj4gKyAgICAgICAgICAgICJmb29iYXJAZXhhbXBsZS5jb20i LAo+ICsgICAgICAgICAgICAiVGhpcyBpcyB0aGUgc3ViamVjdCIsCj4gKyAgICAgICAgICAgICJU aGlzIGlzIHRoZSBwbGFpbiBib2R5IiwKPiArICAgICAgICApCj4gKyAgICAgICAgLndpdGhfcmVj aXBpZW50X2FuZF9uYW1lKCJUb255IEVzdCIsICJ0ZXN0QGV4YW1wbGUuY29tIikKPiArICAgICAg ICAud2l0aF9odG1sX2FsdCgiPGJvZHk+VGhpcyBpcyB0aGUgSFRNTCBib2R5PC9ib2R5PiIpOwo+ ICsKPiArICAgICAgICBsZXQgYm9keSA9IG1haWwuZm9ybWF0X21haWwoMTcxODk3Nzg1MCkuZXhw ZWN0KCJjb3VsZCBub3QgZm9ybWF0IG1haWwiKTsKPiArCj4gKyAgICAgICAgYXNzZXJ0X2VxISgK PiArICAgICAgICAgICAgYm9keSwKPiArICAgICAgICAgICAgciMiQ29udGVudC1UeXBlOiBtdWx0 aXBhcnQvYWx0ZXJuYXRpdmU7Cj4gKwlib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMl8xNzE4 OTc3ODUwIgo+ICtNSU1FLVZlcnNpb246IDEuMAo+ICtTdWJqZWN0OiBUaGlzIGlzIHRoZSBzdWJq ZWN0Cj4gK0Zyb206IEZyZWQgT29iYXIgPGZvb2JhckBleGFtcGxlLmNvbT4KPiArVG86IFRvbnkg RXN0IDx0ZXN0QGV4YW1wbGUuY29tPgo+ICtEYXRlOiBGcmksIDIxIEp1biAyMDI0IDE1OjUwOjUw ICswMjAwCj4gK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZDsKPiArCj4gK1RoaXMgaXMg YSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCj4gKwo+ICstLS0tLS1fPV9OZXh0 UGFydF8wMDJfMTcxODk3Nzg1MAo+ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47Cj4gKwljaGFy c2V0PSJVVEYtOCIKPiArQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArVGhp cyBpcyB0aGUgcGxhaW4gYm9keQo+ICstLS0tLS1fPV9OZXh0UGFydF8wMDJfMTcxODk3Nzg1MAo+ ICtDb250ZW50LVR5cGU6IHRleHQvaHRtbDsKPiArCWNoYXJzZXQ9IlVURi04Igo+ICtDb250ZW50 LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cj4gKwo+ICs8Ym9keT5UaGlzIGlzIHRoZSBIVE1MIGJv ZHk8L2JvZHk+Cj4gKy0tLS0tLV89X05leHRQYXJ0XzAwMl8xNzE4OTc3ODUwLS0iIwo+ICsgICAg ICAgICk7Cj4gKyAgICB9Cj4gK30KPiAtLQo+IDIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1k ZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4v bWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK